summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCyrill von Wattenwyl <cvw@adfinis.com>2014-09-02 11:20:52 +0200
committerCyrill von Wattenwyl <cvw@adfinis.com>2014-09-02 11:20:52 +0200
commit11a40dd1fef6c5b78b054617caba4325f95ee386 (patch)
treede2e1d7efd6423ef4d1256dd5c90a972ad172719
parent187fd666aa2f32dedfe544d69b7cb213698197f2 (diff)
parentba084313bfc9c7a5a83e0611fe4376543cc1653d (diff)
Merge branch 'master' of https://github.com/roundcube/roundcubemail
Conflicts: plugins/password/config.inc.php.dist
-rw-r--r--CHANGELOG72
-rw-r--r--INSTALL4
-rw-r--r--README.md4
-rwxr-xr-xbin/update.sh2
-rwxr-xr-xbin/updatedb.sh4
-rw-r--r--composer.json-dist39
-rw-r--r--config/defaults.inc.php75
-rw-r--r--index.php24
-rw-r--r--installer/check.php15
-rw-r--r--installer/index.php9
-rw-r--r--installer/test.php7
-rw-r--r--plugins/acl/acl.js58
-rw-r--r--plugins/acl/acl.php59
-rw-r--r--plugins/acl/composer.json2
-rw-r--r--plugins/acl/config.inc.php.dist9
-rw-r--r--plugins/acl/localization/ast.inc80
-rw-r--r--plugins/acl/localization/bs_BA.inc10
-rw-r--r--plugins/acl/localization/en_CA.inc5
-rw-r--r--plugins/acl/localization/en_US.inc5
-rw-r--r--plugins/acl/localization/et_EE.inc20
-rw-r--r--plugins/acl/localization/fi_FI.inc12
-rw-r--r--plugins/acl/localization/it_IT.inc4
-rw-r--r--plugins/acl/localization/pt_PT.inc4
-rw-r--r--plugins/acl/package.xml4
-rw-r--r--plugins/acl/skins/larry/acl.css17
-rw-r--r--plugins/acl/skins/larry/templates/table.html19
-rw-r--r--plugins/additional_message_headers/config.inc.php.dist2
-rw-r--r--plugins/archive/localization/ast.inc6
-rw-r--r--plugins/archive/localization/be_BE.inc8
-rw-r--r--plugins/archive/localization/br.inc1
-rw-r--r--plugins/archive/localization/es_419.inc8
-rw-r--r--plugins/archive/localization/ko_KR.inc8
-rw-r--r--plugins/attachment_reminder/localization/ast.inc20
-rw-r--r--plugins/attachment_reminder/localization/br.inc20
-rw-r--r--plugins/attachment_reminder/localization/es_AR.inc6
-rw-r--r--plugins/attachment_reminder/localization/id_ID.inc4
-rw-r--r--plugins/attachment_reminder/localization/ko_KR.inc2
-rw-r--r--plugins/attachment_reminder/localization/ml_IN.inc4
-rw-r--r--plugins/emoticons/emoticons.php4
-rw-r--r--plugins/help/localization/hu_HU.inc4
-rw-r--r--plugins/help/localization/ml_IN.inc21
-rw-r--r--plugins/help/skins/classic/help.css2
-rw-r--r--plugins/help/skins/classic/templates/help.html4
-rw-r--r--plugins/hide_blockquote/hide_blockquote.js2
-rw-r--r--plugins/hide_blockquote/localization/ast.inc21
-rw-r--r--plugins/hide_blockquote/localization/br.inc (renamed from plugins/password/localization/ku.inc)9
-rw-r--r--plugins/hide_blockquote/localization/ko_KR.inc4
-rw-r--r--plugins/hide_blockquote/localization/ml_IN.inc21
-rw-r--r--plugins/jqueryui/composer.json2
-rw-r--r--plugins/jqueryui/jqueryui.php15
-rwxr-xr-xplugins/jqueryui/js/jquery-ui-1.10.4.custom.min.js229
-rwxr-xr-xplugins/jqueryui/js/jquery-ui-1.9.2.custom.min.js37
-rw-r--r--plugins/jqueryui/js/jquery-ui-accessible-datepicker.js214
-rw-r--r--plugins/jqueryui/package.xml176
-rwxr-xr-xplugins/jqueryui/themes/classic/images/animated-overlay.gifbin0 -> 1738 bytes
-rwxr-xr-xplugins/jqueryui/themes/classic/jquery-ui-1.10.4.custom.css1223
-rwxr-xr-xplugins/jqueryui/themes/classic/jquery-ui-1.9.2.custom.css581
-rw-r--r--plugins/jqueryui/themes/classic/roundcube-custom.diff274
-rwxr-xr-xplugins/jqueryui/themes/larry/images/animated-overlay.gifbin0 -> 1738 bytes
-rwxr-xr-xplugins/jqueryui/themes/larry/images/ui-bg_highlight-hard_55_b0ccd7_1x100.pngbin117 -> 0 bytes
-rwxr-xr-xplugins/jqueryui/themes/larry/images/ui-bg_highlight-hard_65_ffffff_1x100.pngbin93 -> 0 bytes
-rwxr-xr-xplugins/jqueryui/themes/larry/images/ui-bg_highlight-hard_75_eaeaea_1x100.pngbin136 -> 0 bytes
-rwxr-xr-xplugins/jqueryui/themes/larry/images/ui-bg_highlight-hard_75_f8f8f8_1x100.pngbin88 -> 0 bytes
-rwxr-xr-xplugins/jqueryui/themes/larry/images/ui-bg_highlight-soft_75_fafafa_1x100.pngbin117 -> 0 bytes
-rwxr-xr-xplugins/jqueryui/themes/larry/images/ui-bg_highlight-soft_90_e4e4e4_1x100.pngbin111 -> 0 bytes
-rwxr-xr-xplugins/jqueryui/themes/larry/jquery-ui-1.10.4.custom.css1515
-rwxr-xr-xplugins/jqueryui/themes/larry/jquery-ui-1.9.2.custom.css740
-rw-r--r--plugins/jqueryui/themes/larry/jquery-ui-css.diff600
-rwxr-xr-xplugins/jqueryui/themes/redmond/images/animated-overlay.gifbin0 -> 1738 bytes
-rwxr-xr-xplugins/jqueryui/themes/redmond/jquery-ui-1.10.4.custom.css1178
-rwxr-xr-xplugins/jqueryui/themes/redmond/jquery-ui-1.9.2.custom.css461
-rw-r--r--plugins/legacy_browser/js/iehacks.js10
-rw-r--r--plugins/legacy_browser/legacy_browser.php44
-rw-r--r--plugins/legacy_browser/package.xml8
-rw-r--r--plugins/legacy_browser/skins/larry/ie7hacks.css1
-rw-r--r--plugins/legacy_browser/skins/larry/iehacks.css29
-rw-r--r--plugins/managesieve/Changelog11
-rw-r--r--plugins/managesieve/config.inc.php.dist12
-rw-r--r--plugins/managesieve/lib/Roundcube/rcube_sieve.php81
-rw-r--r--plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php212
-rw-r--r--plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php519
-rw-r--r--plugins/managesieve/localization/ast.inc50
-rw-r--r--plugins/managesieve/localization/br.inc30
-rw-r--r--plugins/managesieve/localization/bs_BA.inc45
-rw-r--r--plugins/managesieve/localization/en_US.inc18
-rw-r--r--plugins/managesieve/localization/es_419.inc100
-rw-r--r--plugins/managesieve/localization/es_AR.inc144
-rw-r--r--plugins/managesieve/localization/fi_FI.inc47
-rw-r--r--plugins/managesieve/localization/id_ID.inc75
-rw-r--r--plugins/managesieve/localization/ml_IN.inc10
-rw-r--r--plugins/managesieve/localization/nn_NO.inc4
-rw-r--r--plugins/managesieve/localization/ru_RU.inc45
-rw-r--r--plugins/managesieve/localization/zh_TW.inc4
-rw-r--r--plugins/managesieve/managesieve.js179
-rw-r--r--plugins/managesieve/managesieve.php17
-rw-r--r--plugins/managesieve/skins/classic/templates/vacation.html2
-rw-r--r--plugins/managesieve/skins/larry/managesieve.css15
-rw-r--r--plugins/managesieve/skins/larry/templates/managesieve.html47
-rw-r--r--plugins/managesieve/skins/larry/templates/vacation.html6
-rw-r--r--plugins/managesieve/tests/Vacation.php66
-rw-r--r--plugins/markasjunk/localization/ar_SA.inc21
-rw-r--r--plugins/markasjunk/localization/ast.inc21
-rw-r--r--plugins/markasjunk/localization/ko_KR.inc6
-rw-r--r--plugins/markasjunk/localization/ml_IN.inc5
-rw-r--r--plugins/new_user_dialog/localization/ast.inc4
-rw-r--r--plugins/newmail_notifier/localization/ast.inc12
-rw-r--r--plugins/newmail_notifier/localization/es_419.inc28
-rw-r--r--plugins/newmail_notifier/localization/es_AR.inc1
-rw-r--r--plugins/newmail_notifier/localization/et_EE.inc1
-rw-r--r--plugins/newmail_notifier/localization/hu_HU.inc16
-rw-r--r--plugins/newmail_notifier/localization/id_ID.inc1
-rw-r--r--plugins/newmail_notifier/localization/ml_IN.inc1
-rw-r--r--plugins/newmail_notifier/newmail_notifier.php4
-rw-r--r--plugins/password/README3
-rw-r--r--plugins/password/config.inc.php.dist11
-rw-r--r--plugins/password/drivers/gearman.php55
-rw-r--r--plugins/password/drivers/ldap.php11
-rw-r--r--plugins/password/drivers/ldap_simple.php15
-rw-r--r--plugins/password/drivers/vpopmaild.php2
-rw-r--r--plugins/password/localization/ar.inc1
-rw-r--r--plugins/password/localization/ast.inc4
-rw-r--r--plugins/password/localization/az_AZ.inc1
-rw-r--r--plugins/password/localization/be_BE.inc1
-rw-r--r--plugins/password/localization/bg_BG.inc1
-rw-r--r--plugins/password/localization/br.inc1
-rw-r--r--plugins/password/localization/bs_BA.inc1
-rw-r--r--plugins/password/localization/ca_ES.inc1
-rw-r--r--plugins/password/localization/cs_CZ.inc1
-rw-r--r--plugins/password/localization/cy_GB.inc1
-rw-r--r--plugins/password/localization/da_DK.inc1
-rw-r--r--plugins/password/localization/de_CH.inc1
-rw-r--r--plugins/password/localization/de_DE.inc3
-rw-r--r--plugins/password/localization/el_GR.inc1
-rw-r--r--plugins/password/localization/en_CA.inc1
-rw-r--r--plugins/password/localization/en_GB.inc1
-rw-r--r--plugins/password/localization/en_US.inc3
-rw-r--r--plugins/password/localization/eo.inc1
-rw-r--r--plugins/password/localization/es_419.inc1
-rw-r--r--plugins/password/localization/es_AR.inc3
-rw-r--r--plugins/password/localization/es_ES.inc3
-rw-r--r--plugins/password/localization/et_EE.inc1
-rw-r--r--plugins/password/localization/eu_ES.inc1
-rw-r--r--plugins/password/localization/fa_AF.inc1
-rw-r--r--plugins/password/localization/fi_FI.inc1
-rw-r--r--plugins/password/localization/fo_FO.inc1
-rw-r--r--plugins/password/localization/gl_ES.inc1
-rw-r--r--plugins/password/localization/he_IL.inc3
-rw-r--r--plugins/password/localization/hr_HR.inc1
-rw-r--r--plugins/password/localization/hu_HU.inc2
-rw-r--r--plugins/password/localization/hy_AM.inc1
-rw-r--r--plugins/password/localization/id_ID.inc1
-rw-r--r--plugins/password/localization/it_IT.inc1
-rw-r--r--plugins/password/localization/ja_JP.inc1
-rw-r--r--plugins/password/localization/km_KH.inc1
-rw-r--r--plugins/password/localization/ko_KR.inc23
-rw-r--r--plugins/password/localization/lb_LU.inc1
-rw-r--r--plugins/password/localization/lt_LT.inc3
-rw-r--r--plugins/password/localization/lv_LV.inc1
-rw-r--r--plugins/password/localization/ml_IN.inc33
-rw-r--r--plugins/password/localization/nb_NO.inc1
-rw-r--r--plugins/password/localization/nl_NL.inc3
-rw-r--r--plugins/password/localization/nn_NO.inc1
-rw-r--r--plugins/password/localization/pl_PL.inc1
-rw-r--r--plugins/password/localization/pt_BR.inc3
-rw-r--r--plugins/password/localization/pt_PT.inc23
-rw-r--r--plugins/password/localization/ro_RO.inc3
-rw-r--r--plugins/password/localization/ru_RU.inc1
-rw-r--r--plugins/password/localization/sk_SK.inc1
-rw-r--r--plugins/password/localization/sl_SI.inc1
-rw-r--r--plugins/password/localization/sr_CS.inc1
-rw-r--r--plugins/password/localization/sv_SE.inc1
-rw-r--r--plugins/password/localization/ti.inc1
-rw-r--r--plugins/password/localization/tr_TR.inc3
-rw-r--r--plugins/password/localization/uk_UA.inc1
-rw-r--r--plugins/password/localization/vi_VN.inc1
-rw-r--r--plugins/password/localization/zh_CN.inc1
-rw-r--r--plugins/password/localization/zh_TW.inc1
-rw-r--r--plugins/password/package.xml271
-rw-r--r--plugins/password/password.js29
-rw-r--r--plugins/password/password.php135
-rw-r--r--plugins/subscriptions_option/localization/ar_SA.inc19
-rw-r--r--plugins/subscriptions_option/localization/ast.inc19
-rw-r--r--plugins/subscriptions_option/localization/ml_IN.inc19
-rw-r--r--plugins/subscriptions_option/subscriptions_option.php4
-rw-r--r--plugins/userinfo/localization/ast.inc4
-rw-r--r--plugins/userinfo/localization/ko_KR.inc4
-rw-r--r--plugins/vcard_attachments/localization/ast.inc20
-rw-r--r--plugins/vcard_attachments/localization/ko_KR.inc4
-rw-r--r--plugins/vcard_attachments/skins/larry/style.css5
-rw-r--r--plugins/zipdownload/localization/ar.inc4
-rw-r--r--plugins/zipdownload/localization/ar_SA.inc4
-rw-r--r--plugins/zipdownload/localization/ast.inc22
-rw-r--r--plugins/zipdownload/localization/az_AZ.inc4
-rw-r--r--plugins/zipdownload/localization/be_BE.inc8
-rw-r--r--plugins/zipdownload/localization/bg_BG.inc8
-rw-r--r--plugins/zipdownload/localization/br.inc4
-rw-r--r--plugins/zipdownload/localization/bs_BA.inc8
-rw-r--r--plugins/zipdownload/localization/ca_ES.inc8
-rw-r--r--plugins/zipdownload/localization/cs_CZ.inc8
-rw-r--r--plugins/zipdownload/localization/cy_GB.inc8
-rw-r--r--plugins/zipdownload/localization/da_DK.inc8
-rw-r--r--plugins/zipdownload/localization/de_CH.inc8
-rw-r--r--plugins/zipdownload/localization/de_DE.inc8
-rw-r--r--plugins/zipdownload/localization/en_CA.inc8
-rw-r--r--plugins/zipdownload/localization/en_GB.inc8
-rw-r--r--plugins/zipdownload/localization/eo.inc4
-rw-r--r--plugins/zipdownload/localization/es_419.inc8
-rw-r--r--plugins/zipdownload/localization/es_AR.inc8
-rw-r--r--plugins/zipdownload/localization/es_ES.inc8
-rw-r--r--plugins/zipdownload/localization/et_EE.inc4
-rw-r--r--plugins/zipdownload/localization/eu_ES.inc8
-rw-r--r--plugins/zipdownload/localization/fa_AF.inc4
-rw-r--r--plugins/zipdownload/localization/fa_IR.inc4
-rw-r--r--plugins/zipdownload/localization/fi_FI.inc8
-rw-r--r--plugins/zipdownload/localization/gl_ES.inc8
-rw-r--r--plugins/zipdownload/localization/he_IL.inc8
-rw-r--r--plugins/zipdownload/localization/hu_HU.inc8
-rw-r--r--plugins/zipdownload/localization/id_ID.inc4
-rw-r--r--plugins/zipdownload/localization/it_IT.inc8
-rw-r--r--plugins/zipdownload/localization/ja_JP.inc8
-rw-r--r--plugins/zipdownload/localization/ko_KR.inc8
-rw-r--r--plugins/zipdownload/localization/lb_LU.inc8
-rw-r--r--plugins/zipdownload/localization/lt_LT.inc8
-rw-r--r--plugins/zipdownload/localization/lv_LV.inc4
-rw-r--r--plugins/zipdownload/localization/ml_IN.inc22
-rw-r--r--plugins/zipdownload/localization/nb_NO.inc8
-rw-r--r--plugins/zipdownload/localization/nl_NL.inc8
-rw-r--r--plugins/zipdownload/localization/nn_NO.inc4
-rw-r--r--plugins/zipdownload/localization/pl_PL.inc8
-rw-r--r--plugins/zipdownload/localization/pt_BR.inc8
-rw-r--r--plugins/zipdownload/localization/pt_PT.inc8
-rw-r--r--plugins/zipdownload/localization/ro_RO.inc4
-rw-r--r--plugins/zipdownload/localization/ru_RU.inc8
-rw-r--r--plugins/zipdownload/localization/sk_SK.inc8
-rw-r--r--plugins/zipdownload/localization/sl_SI.inc4
-rw-r--r--plugins/zipdownload/localization/sr_CS.inc4
-rw-r--r--plugins/zipdownload/localization/sv_SE.inc10
-rw-r--r--plugins/zipdownload/localization/tr_TR.inc8
-rw-r--r--plugins/zipdownload/localization/uk_UA.inc4
-rw-r--r--plugins/zipdownload/localization/zh_CN.inc4
-rw-r--r--plugins/zipdownload/localization/zh_TW.inc8
-rw-r--r--plugins/zipdownload/zipdownload.js25
-rw-r--r--plugins/zipdownload/zipdownload.php8
-rw-r--r--program/include/iniset.php15
-rw-r--r--program/include/rcmail.php275
-rw-r--r--program/include/rcmail_install.php4
-rw-r--r--program/include/rcmail_output_html.php205
-rw-r--r--program/js/app.js2370
-rw-r--r--program/js/common.js28
-rw-r--r--program/js/editor.js810
-rw-r--r--program/js/list.js191
-rw-r--r--program/js/tiny_mce/langs/ar.js1
-rw-r--r--program/js/tiny_mce/langs/az.js1
-rw-r--r--program/js/tiny_mce/langs/bg.js1
-rw-r--r--program/js/tiny_mce/langs/bn.js1
-rw-r--r--program/js/tiny_mce/langs/br.js1
-rw-r--r--program/js/tiny_mce/langs/bs.js1
-rw-r--r--program/js/tiny_mce/langs/ca.js1
-rw-r--r--program/js/tiny_mce/langs/cs.js1
-rw-r--r--program/js/tiny_mce/langs/cy.js1
-rw-r--r--program/js/tiny_mce/langs/da.js1
-rw-r--r--program/js/tiny_mce/langs/de.js1
-rw-r--r--program/js/tiny_mce/langs/el.js1
-rw-r--r--program/js/tiny_mce/langs/en.js1
-rw-r--r--program/js/tiny_mce/langs/eo.js1
-rw-r--r--program/js/tiny_mce/langs/es.js1
-rw-r--r--program/js/tiny_mce/langs/et.js1
-rw-r--r--program/js/tiny_mce/langs/eu.js1
-rw-r--r--program/js/tiny_mce/langs/fa.js1
-rw-r--r--program/js/tiny_mce/langs/fi.js1
-rw-r--r--program/js/tiny_mce/langs/fr.js1
-rw-r--r--program/js/tiny_mce/langs/gl.js1
-rw-r--r--program/js/tiny_mce/langs/he.js1
-rw-r--r--program/js/tiny_mce/langs/hi.js1
-rw-r--r--program/js/tiny_mce/langs/hr.js1
-rw-r--r--program/js/tiny_mce/langs/hu.js1
-rw-r--r--program/js/tiny_mce/langs/hy.js1
-rw-r--r--program/js/tiny_mce/langs/id.js1
-rw-r--r--program/js/tiny_mce/langs/is.js1
-rw-r--r--program/js/tiny_mce/langs/it.js1
-rw-r--r--program/js/tiny_mce/langs/ja.js1
-rw-r--r--program/js/tiny_mce/langs/ka.js1
-rw-r--r--program/js/tiny_mce/langs/ko.js1
-rw-r--r--program/js/tiny_mce/langs/lt.js1
-rw-r--r--program/js/tiny_mce/langs/lv.js1
-rw-r--r--program/js/tiny_mce/langs/mk.js1
-rw-r--r--program/js/tiny_mce/langs/ms.js1
-rw-r--r--program/js/tiny_mce/langs/nb.js1
-rw-r--r--program/js/tiny_mce/langs/nl.js1
-rw-r--r--program/js/tiny_mce/langs/nn.js1
-rw-r--r--program/js/tiny_mce/langs/pl.js1
-rw-r--r--program/js/tiny_mce/langs/ps.js1
-rw-r--r--program/js/tiny_mce/langs/pt.js1
-rw-r--r--program/js/tiny_mce/langs/ro.js1
-rw-r--r--program/js/tiny_mce/langs/ru.js1
-rw-r--r--program/js/tiny_mce/langs/si.js1
-rw-r--r--program/js/tiny_mce/langs/sk.js1
-rw-r--r--program/js/tiny_mce/langs/sl.js1
-rw-r--r--program/js/tiny_mce/langs/sq.js1
-rw-r--r--program/js/tiny_mce/langs/sr.js1
-rw-r--r--program/js/tiny_mce/langs/sv.js1
-rw-r--r--program/js/tiny_mce/langs/ta.js1
-rw-r--r--program/js/tiny_mce/langs/th.js1
-rw-r--r--program/js/tiny_mce/langs/tr.js1
-rw-r--r--program/js/tiny_mce/langs/uk.js1
-rw-r--r--program/js/tiny_mce/langs/vi.js1
-rw-r--r--program/js/tiny_mce/langs/zh-cn.js1
-rw-r--r--program/js/tiny_mce/langs/zh-tw.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/css/advhr.css5
-rw-r--r--program/js/tiny_mce/plugins/advhr/editor_plugin.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/editor_plugin_src.js57
-rw-r--r--program/js/tiny_mce/plugins/advhr/js/rule.js43
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/ar_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/az_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/bg_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/bn_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/br_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/bs_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/ca_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/cs_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/cy_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/da_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/de_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/el_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/en_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/eo_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/es_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/et_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/eu_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/fa_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/fi_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/fr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/gl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/he_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/hi_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/hr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/hu_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/hy_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/id_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/is_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/it_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/ja_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/ka_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/ko_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/lt_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/lv_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/mk_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/ms_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/nb_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/nl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/nn_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/pl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/ps_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/pt_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/ro_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/ru_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/si_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/sk_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/sl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/sq_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/sr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/sv_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/ta_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/th_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/tr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/uk_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/vi_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/zh-cn_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/langs/zh-tw_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advhr/rule.htm58
-rw-r--r--program/js/tiny_mce/plugins/advimage/css/advimage.css13
-rw-r--r--program/js/tiny_mce/plugins/advimage/editor_plugin.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/editor_plugin_src.js50
-rw-r--r--program/js/tiny_mce/plugins/advimage/image.htm235
-rw-r--r--program/js/tiny_mce/plugins/advimage/img/sample.gifbin1624 -> 0 bytes
-rw-r--r--program/js/tiny_mce/plugins/advimage/js/image.js464
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/ar_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/az_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/bg_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/bn_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/br_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/bs_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/ca_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/cs_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/cy_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/da_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/de_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/el_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/en_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/eo_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/es_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/et_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/eu_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/fa_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/fi_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/fr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/gl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/he_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/hi_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/hr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/hu_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/hy_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/id_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/is_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/it_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/ja_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/ka_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/ko_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/lt_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/lv_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/mk_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/ms_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/nb_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/nl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/nn_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/pl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/ps_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/pt_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/ro_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/ru_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/si_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/sk_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/sl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/sq_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/sr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/sv_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/ta_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/th_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/tr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/uk_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/vi_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/zh-cn_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advimage/langs/zh-tw_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/css/advlink.css8
-rw-r--r--program/js/tiny_mce/plugins/advlink/editor_plugin.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/editor_plugin_src.js61
-rw-r--r--program/js/tiny_mce/plugins/advlink/js/advlink.js543
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/ar_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/az_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/bg_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/bn_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/br_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/bs_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/ca_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/cs_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/cy_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/da_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/de_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/el_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/en_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/eo_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/es_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/et_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/eu_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/fa_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/fi_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/fr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/gl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/he_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/hi_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/hr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/hu_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/hy_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/id_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/is_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/it_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/ja_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/ka_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/ko_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/lt_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/lv_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/mk_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/ms_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/nb_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/nl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/nn_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/pl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/ps_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/pt_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/ro_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/ru_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/si_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/sk_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/sl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/sq_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/sr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/sv_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/ta_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/th_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/tr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/uk_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/vi_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/zh-cn_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/langs/zh-tw_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/advlink/link.htm338
-rw-r--r--program/js/tiny_mce/plugins/advlist/editor_plugin.js1
-rw-r--r--program/js/tiny_mce/plugins/advlist/editor_plugin_src.js176
-rw-r--r--program/js/tiny_mce/plugins/autolink/editor_plugin.js1
-rw-r--r--program/js/tiny_mce/plugins/autolink/editor_plugin_src.js184
-rw-r--r--program/js/tiny_mce/plugins/autoresize/editor_plugin.js1
-rw-r--r--program/js/tiny_mce/plugins/autoresize/editor_plugin_src.js119
-rw-r--r--program/js/tiny_mce/plugins/autosave/editor_plugin.js1
-rw-r--r--program/js/tiny_mce/plugins/autosave/editor_plugin_src.js433
-rw-r--r--program/js/tiny_mce/plugins/autosave/langs/en.js4
-rw-r--r--program/js/tiny_mce/plugins/bbcode/editor_plugin.js1
-rw-r--r--program/js/tiny_mce/plugins/bbcode/editor_plugin_src.js120
-rw-r--r--program/js/tiny_mce/plugins/contextmenu/editor_plugin.js1
-rw-r--r--program/js/tiny_mce/plugins/contextmenu/editor_plugin_src.js163
-rw-r--r--program/js/tiny_mce/plugins/directionality/editor_plugin.js1
-rw-r--r--program/js/tiny_mce/plugins/directionality/editor_plugin_src.js85
-rw-r--r--program/js/tiny_mce/plugins/emotions/editor_plugin.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/editor_plugin_src.js43
-rw-r--r--program/js/tiny_mce/plugins/emotions/emotions.htm42
-rw-r--r--program/js/tiny_mce/plugins/emotions/js/emotions.js43
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/ar_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/az_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/bg_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/bn_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/br_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/bs_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/ca_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/cs_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/cy_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/da_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/de_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/el_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/en_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/eo_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/es_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/et_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/eu_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/fa_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/fi_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/fr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/gl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/he_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/hi_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/hr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/hu_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/hy_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/id_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/is_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/it_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/ja_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/ka_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/ko_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/lt_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/lv_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/mk_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/ms_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/nb_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/nl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/nn_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/pl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/ps_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/pt_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/ro_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/ru_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/si_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/sk_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/sl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/sq_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/sr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/sv_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/ta_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/th_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/tr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/uk_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/vi_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/zh-cn_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/zh-tw_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/example/dialog.htm22
-rw-r--r--program/js/tiny_mce/plugins/example/editor_plugin.js1
-rw-r--r--program/js/tiny_mce/plugins/example/editor_plugin_src.js84
-rw-r--r--program/js/tiny_mce/plugins/example/img/example.gifbin87 -> 0 bytes
-rw-r--r--program/js/tiny_mce/plugins/example/js/dialog.js19
-rw-r--r--program/js/tiny_mce/plugins/example/langs/en.js3
-rw-r--r--program/js/tiny_mce/plugins/example/langs/en_dlg.js3
-rw-r--r--program/js/tiny_mce/plugins/example_dependency/editor_plugin.js1
-rw-r--r--program/js/tiny_mce/plugins/example_dependency/editor_plugin_src.js50
-rw-r--r--program/js/tiny_mce/plugins/fullpage/css/fullpage.css143
-rw-r--r--program/js/tiny_mce/plugins/fullpage/editor_plugin.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/editor_plugin_src.js405
-rw-r--r--program/js/tiny_mce/plugins/fullpage/fullpage.htm259
-rw-r--r--program/js/tiny_mce/plugins/fullpage/js/fullpage.js232
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/ar_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/az_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/bg_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/bn_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/br_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/bs_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/ca_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/cs_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/cy_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/da_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/de_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/el_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/en_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/eo_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/es_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/et_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/eu_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/fa_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/fi_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/fr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/gl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/he_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/hi_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/hr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/hu_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/hy_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/id_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/is_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/it_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/ja_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/ka_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/ko_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/lt_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/lv_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/mk_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/ms_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/nb_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/nl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/nn_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/pl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/ps_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/pt_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/ro_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/ru_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/si_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/sk_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/sl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/sq_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/sr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/sv_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/ta_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/th_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/tr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/uk_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/vi_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/zh-cn_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullpage/langs/zh-tw_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/fullscreen/editor_plugin.js1
-rw-r--r--program/js/tiny_mce/plugins/fullscreen/editor_plugin_src.js234
-rw-r--r--program/js/tiny_mce/plugins/fullscreen/fullscreen.htm117
-rw-r--r--program/js/tiny_mce/plugins/iespell/editor_plugin.js1
-rw-r--r--program/js/tiny_mce/plugins/iespell/editor_plugin_src.js54
-rw-r--r--program/js/tiny_mce/plugins/inlinepopups/editor_plugin.js1
-rw-r--r--program/js/tiny_mce/plugins/inlinepopups/editor_plugin_src.js699
-rw-r--r--program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gifbin810 -> 0 bytes
-rw-r--r--program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gifbin272 -> 0 bytes
-rw-r--r--program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gifbin1195 -> 0 bytes
-rw-r--r--program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gifbin907 -> 0 bytes
-rw-r--r--program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gifbin909 -> 0 bytes
-rw-r--r--program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gifbin769 -> 0 bytes
-rw-r--r--program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gifbin84 -> 0 bytes
-rw-r--r--program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css90
-rw-r--r--program/js/tiny_mce/plugins/inlinepopups/template.htm387
-rw-r--r--program/js/tiny_mce/plugins/insertdatetime/editor_plugin.js1
-rw-r--r--program/js/tiny_mce/plugins/insertdatetime/editor_plugin_src.js83
-rw-r--r--program/js/tiny_mce/plugins/layer/editor_plugin.js1
-rw-r--r--program/js/tiny_mce/plugins/layer/editor_plugin_src.js262
-rw-r--r--program/js/tiny_mce/plugins/legacyoutput/editor_plugin.js1
-rw-r--r--program/js/tiny_mce/plugins/legacyoutput/editor_plugin_src.js139
-rw-r--r--program/js/tiny_mce/plugins/lists/editor_plugin.js1
-rw-r--r--program/js/tiny_mce/plugins/lists/editor_plugin_src.js955
-rw-r--r--program/js/tiny_mce/plugins/media/css/media.css17
-rw-r--r--program/js/tiny_mce/plugins/media/editor_plugin.js1
-rw-r--r--program/js/tiny_mce/plugins/media/editor_plugin_src.js898
-rw-r--r--program/js/tiny_mce/plugins/media/js/embed.js73
-rw-r--r--program/js/tiny_mce/plugins/media/js/media.js513
-rw-r--r--program/js/tiny_mce/plugins/media/langs/ar_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/az_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/bg_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/bn_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/br_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/bs_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/ca_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/cs_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/cy_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/da_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/de_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/el_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/en_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/eo_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/es_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/et_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/eu_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/fa_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/fi_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/fr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/gl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/he_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/hi_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/hr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/hu_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/hy_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/id_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/is_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/it_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/ja_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/ka_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/ko_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/lt_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/lv_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/mk_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/ms_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/nb_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/nl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/nn_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/pl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/ps_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/pt_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/ro_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/ru_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/si_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/sk_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/sl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/sq_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/sr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/sv_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/ta_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/th_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/tr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/uk_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/vi_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/zh-cn_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/langs/zh-tw_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/media/media.htm922
-rw-r--r--program/js/tiny_mce/plugins/media/moxieplayer.swfbin19980 -> 0 bytes
-rw-r--r--program/js/tiny_mce/plugins/nonbreaking/editor_plugin.js1
-rw-r--r--program/js/tiny_mce/plugins/nonbreaking/editor_plugin_src.js54
-rw-r--r--program/js/tiny_mce/plugins/noneditable/editor_plugin.js1
-rw-r--r--program/js/tiny_mce/plugins/noneditable/editor_plugin_src.js537
-rw-r--r--program/js/tiny_mce/plugins/pagebreak/editor_plugin.js1
-rw-r--r--program/js/tiny_mce/plugins/pagebreak/editor_plugin_src.js74
-rw-r--r--program/js/tiny_mce/plugins/paste/editor_plugin.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/editor_plugin_src.js887
-rw-r--r--program/js/tiny_mce/plugins/paste/js/pastetext.js36
-rw-r--r--program/js/tiny_mce/plugins/paste/js/pasteword.js51
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/ar_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/az_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/bg_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/bn_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/br_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/bs_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/ca_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/cs_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/cy_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/da_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/de_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/el_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/en_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/eo_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/es_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/et_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/eu_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/fa_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/fi_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/fr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/gl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/he_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/hi_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/hr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/hu_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/hy_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/id_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/is_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/it_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/ja_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/ka_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/ko_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/lt_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/lv_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/mk_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/ms_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/nb_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/nl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/nn_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/pl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/ps_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/pt_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/ro_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/ru_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/si_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/sk_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/sl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/sq_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/sr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/sv_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/ta_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/th_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/tr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/uk_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/vi_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/zh-cn_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/langs/zh-tw_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/paste/pastetext.htm27
-rw-r--r--program/js/tiny_mce/plugins/paste/pasteword.htm21
-rw-r--r--program/js/tiny_mce/plugins/preview/editor_plugin.js1
-rw-r--r--program/js/tiny_mce/plugins/preview/editor_plugin_src.js53
-rw-r--r--program/js/tiny_mce/plugins/preview/example.html28
-rw-r--r--program/js/tiny_mce/plugins/preview/jscripts/embed.js73
-rw-r--r--program/js/tiny_mce/plugins/preview/preview.html17
-rw-r--r--program/js/tiny_mce/plugins/print/editor_plugin.js1
-rw-r--r--program/js/tiny_mce/plugins/print/editor_plugin_src.js34
-rw-r--r--program/js/tiny_mce/plugins/save/editor_plugin.js1
-rw-r--r--program/js/tiny_mce/plugins/save/editor_plugin_src.js101
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/css/searchreplace.css6
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/editor_plugin.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/editor_plugin_src.js61
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/js/searchreplace.js148
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/ar_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/az_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/bg_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/bn_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/br_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/bs_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/ca_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/cs_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/cy_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/da_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/de_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/el_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/en_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/eo_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/es_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/et_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/eu_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/fa_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/fi_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/fr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/gl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/he_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/hi_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/hr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/hu_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/hy_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/id_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/is_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/it_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/ja_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/ka_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/ko_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/lt_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/lv_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/mk_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/ms_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/nb_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/nl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/nn_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/pl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/ps_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/pt_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/ro_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/ru_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/si_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/sk_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/sl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/sq_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/sr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/sv_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/ta_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/th_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/tr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/uk_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/vi_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/zh-cn_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/langs/zh-tw_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/searchreplace.htm100
-rw-r--r--program/js/tiny_mce/plugins/spellchecker/css/content.css1
-rw-r--r--program/js/tiny_mce/plugins/spellchecker/editor_plugin.js1
-rw-r--r--program/js/tiny_mce/plugins/spellchecker/editor_plugin_src.js471
-rw-r--r--program/js/tiny_mce/plugins/spellchecker/img/wline.gifbin46 -> 0 bytes
-rw-r--r--program/js/tiny_mce/plugins/style/css/props.css14
-rw-r--r--program/js/tiny_mce/plugins/style/editor_plugin.js1
-rw-r--r--program/js/tiny_mce/plugins/style/editor_plugin_src.js71
-rw-r--r--program/js/tiny_mce/plugins/style/js/props.js709
-rw-r--r--program/js/tiny_mce/plugins/style/langs/ar_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/az_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/bg_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/bn_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/br_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/bs_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/ca_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/cs_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/cy_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/da_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/de_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/el_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/en_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/eo_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/es_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/et_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/eu_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/fa_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/fi_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/fr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/gl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/he_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/hi_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/hr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/hu_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/hy_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/id_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/is_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/it_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/ja_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/ka_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/ko_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/lt_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/lv_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/mk_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/ms_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/nb_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/nl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/nn_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/pl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/ps_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/pt_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/ro_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/ru_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/si_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/sk_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/sl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/sq_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/sr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/sv_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/ta_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/th_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/tr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/uk_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/vi_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/zh-cn_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/langs/zh-tw_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/style/props.htm845
-rw-r--r--program/js/tiny_mce/plugins/style/readme.txt19
-rw-r--r--program/js/tiny_mce/plugins/tabfocus/editor_plugin.js1
-rw-r--r--program/js/tiny_mce/plugins/tabfocus/editor_plugin_src.js122
-rw-r--r--program/js/tiny_mce/plugins/table/cell.htm180
-rw-r--r--program/js/tiny_mce/plugins/table/css/cell.css17
-rw-r--r--program/js/tiny_mce/plugins/table/css/row.css25
-rw-r--r--program/js/tiny_mce/plugins/table/css/table.css13
-rw-r--r--program/js/tiny_mce/plugins/table/editor_plugin.js1
-rw-r--r--program/js/tiny_mce/plugins/table/editor_plugin_src.js1456
-rw-r--r--program/js/tiny_mce/plugins/table/js/cell.js319
-rw-r--r--program/js/tiny_mce/plugins/table/js/merge_cells.js27
-rw-r--r--program/js/tiny_mce/plugins/table/js/row.js254
-rw-r--r--program/js/tiny_mce/plugins/table/js/table.js501
-rw-r--r--program/js/tiny_mce/plugins/table/langs/ar_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/az_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/bg_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/bn_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/br_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/bs_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/ca_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/cs_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/cy_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/da_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/de_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/el_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/en_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/eo_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/es_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/et_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/eu_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/fa_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/fi_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/fr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/gl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/he_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/hi_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/hr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/hu_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/hy_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/id_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/is_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/it_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/ja_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/ka_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/ko_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/lt_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/lv_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/mk_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/ms_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/nb_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/nl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/nn_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/pl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/ps_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/pt_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/ro_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/ru_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/si_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/sk_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/sl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/sq_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/sr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/sv_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/ta_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/th_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/tr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/uk_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/vi_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/zh-cn_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/langs/zh-tw_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/table/merge_cells.htm32
-rw-r--r--program/js/tiny_mce/plugins/table/row.htm158
-rw-r--r--program/js/tiny_mce/plugins/table/table.htm188
-rw-r--r--program/js/tiny_mce/plugins/template/blank.htm12
-rw-r--r--program/js/tiny_mce/plugins/template/css/template.css23
-rw-r--r--program/js/tiny_mce/plugins/template/editor_plugin.js1
-rw-r--r--program/js/tiny_mce/plugins/template/editor_plugin_src.js159
-rw-r--r--program/js/tiny_mce/plugins/template/js/template.js106
-rw-r--r--program/js/tiny_mce/plugins/template/langs/ar_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/az_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/bg_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/bn_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/br_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/bs_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/ca_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/cs_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/cy_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/da_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/de_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/el_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/en_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/eo_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/es_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/et_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/eu_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/fa_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/fi_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/fr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/gl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/he_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/hi_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/hr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/hu_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/hy_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/id_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/is_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/it_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/ja_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/ka_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/ko_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/lt_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/lv_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/mk_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/ms_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/nb_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/nl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/nn_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/pl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/ps_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/pt_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/ro_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/ru_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/si_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/sk_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/sl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/sq_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/sr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/sv_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/ta_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/th_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/tr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/uk_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/vi_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/zh-cn_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/langs/zh-tw_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/template/template.htm31
-rw-r--r--program/js/tiny_mce/plugins/visualblocks/css/visualblocks.css21
-rw-r--r--program/js/tiny_mce/plugins/visualblocks/editor_plugin.js1
-rw-r--r--program/js/tiny_mce/plugins/visualblocks/editor_plugin_src.js63
-rw-r--r--program/js/tiny_mce/plugins/visualchars/editor_plugin.js1
-rw-r--r--program/js/tiny_mce/plugins/visualchars/editor_plugin_src.js83
-rw-r--r--program/js/tiny_mce/plugins/wordcount/editor_plugin.js1
-rw-r--r--program/js/tiny_mce/plugins/wordcount/editor_plugin_src.js122
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/abbr.htm142
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/acronym.htm142
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/attributes.htm149
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/cite.htm142
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/css/attributes.css11
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/css/popup.css9
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/del.htm162
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/editor_plugin.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js132
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/ins.htm162
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/js/abbr.js28
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/js/acronym.js28
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/js/attributes.js111
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/js/cite.js28
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/js/del.js53
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/js/element_common.js229
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/js/ins.js53
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/ar_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/az_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/bg_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/bn_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/br_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/bs_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/ca_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/cs_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/cy_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/da_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/de_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/el_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/en_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/eo_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/es_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/et_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/eu_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/fa_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/fi_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/fr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/gl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/he_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/hi_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/hr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/hu_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/hy_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/id_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/is_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/it_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/ja_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/ka_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/ko_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/lt_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/lv_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/mk_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/ms_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/nb_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/nl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/nn_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/pl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/ps_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/pt_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/ro_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/ru_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/si_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/sk_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/sl_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/sq_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/sr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/sv_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/ta_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/th_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/tr_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/uk_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/vi_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/zh-cn_dlg.js1
-rw-r--r--program/js/tiny_mce/plugins/xhtmlxtras/langs/zh-tw_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/about.htm52
-rw-r--r--program/js/tiny_mce/themes/advanced/anchor.htm26
-rw-r--r--program/js/tiny_mce/themes/advanced/charmap.htm55
-rw-r--r--program/js/tiny_mce/themes/advanced/color_picker.htm70
-rw-r--r--program/js/tiny_mce/themes/advanced/editor_template.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/editor_template_src.js1490
-rw-r--r--program/js/tiny_mce/themes/advanced/image.htm80
-rw-r--r--program/js/tiny_mce/themes/advanced/img/colorpicker.jpgbin2584 -> 0 bytes
-rw-r--r--program/js/tiny_mce/themes/advanced/img/flash.gifbin239 -> 0 bytes
-rw-r--r--program/js/tiny_mce/themes/advanced/img/icons.gifbin11982 -> 0 bytes
-rw-r--r--program/js/tiny_mce/themes/advanced/img/iframe.gifbin600 -> 0 bytes
-rw-r--r--program/js/tiny_mce/themes/advanced/img/pagebreak.gifbin325 -> 0 bytes
-rw-r--r--program/js/tiny_mce/themes/advanced/img/quicktime.gifbin301 -> 0 bytes
-rw-r--r--program/js/tiny_mce/themes/advanced/img/realmedia.gifbin439 -> 0 bytes
-rw-r--r--program/js/tiny_mce/themes/advanced/img/shockwave.gifbin384 -> 0 bytes
-rw-r--r--program/js/tiny_mce/themes/advanced/img/video.gifbin597 -> 0 bytes
-rw-r--r--program/js/tiny_mce/themes/advanced/img/windowsmedia.gifbin415 -> 0 bytes
-rw-r--r--program/js/tiny_mce/themes/advanced/js/about.js73
-rw-r--r--program/js/tiny_mce/themes/advanced/js/anchor.js56
-rw-r--r--program/js/tiny_mce/themes/advanced/js/charmap.js363
-rw-r--r--program/js/tiny_mce/themes/advanced/js/color_picker.js345
-rw-r--r--program/js/tiny_mce/themes/advanced/js/image.js253
-rw-r--r--program/js/tiny_mce/themes/advanced/js/link.js159
-rw-r--r--program/js/tiny_mce/themes/advanced/js/source_editor.js78
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/ar.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/ar_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/az.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/az_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/bg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/bg_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/bn.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/bn_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/br.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/br_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/bs.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/bs_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/ca.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/ca_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/cs.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/cs_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/cy.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/cy_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/da.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/da_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/de.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/de_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/el.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/el_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/en.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/en_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/eo.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/eo_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/es.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/es_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/et.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/et_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/eu.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/eu_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/fa.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/fa_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/fi.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/fi_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/fr.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/fr_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/gl.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/gl_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/he.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/he_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/hi.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/hi_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/hr.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/hr_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/hu.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/hu_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/hy.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/hy_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/id.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/id_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/is.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/is_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/it.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/it_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/ja.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/ja_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/ka.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/ka_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/ko.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/ko_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/lt.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/lt_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/lv.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/lv_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/mk.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/mk_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/ms.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/ms_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/nb.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/nb_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/nl.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/nl_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/nn.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/nn_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/pl.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/pl_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/ps.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/ps_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/pt.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/pt_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/ro.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/ro_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/ru.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/ru_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/si.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/si_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/sk.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/sk_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/sl.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/sl_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/sq.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/sq_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/sr.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/sr_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/sv.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/sv_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/ta.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/ta_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/th.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/th_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/tr.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/tr_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/uk.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/uk_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/vi.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/vi_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/zh-cn.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/zh-cn_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/zh-tw.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/zh-tw_dlg.js1
-rw-r--r--program/js/tiny_mce/themes/advanced/link.htm57
-rw-r--r--program/js/tiny_mce/themes/advanced/shortcuts.htm47
-rw-r--r--program/js/tiny_mce/themes/advanced/skins/default/content.css50
-rw-r--r--program/js/tiny_mce/themes/advanced/skins/default/dialog.css118
-rw-r--r--program/js/tiny_mce/themes/advanced/skins/default/img/buttons.pngbin3133 -> 0 bytes
-rw-r--r--program/js/tiny_mce/themes/advanced/skins/default/img/items.gifbin64 -> 0 bytes
-rw-r--r--program/js/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gifbin68 -> 0 bytes
-rw-r--r--program/js/tiny_mce/themes/advanced/skins/default/img/menu_check.gifbin70 -> 0 bytes
-rw-r--r--program/js/tiny_mce/themes/advanced/skins/default/img/progress.gifbin1787 -> 0 bytes
-rw-r--r--program/js/tiny_mce/themes/advanced/skins/default/img/tabs.gifbin1322 -> 0 bytes
-rw-r--r--program/js/tiny_mce/themes/advanced/skins/default/ui.css219
-rw-r--r--program/js/tiny_mce/themes/advanced/skins/highcontrast/content.css24
-rw-r--r--program/js/tiny_mce/themes/advanced/skins/highcontrast/dialog.css106
-rw-r--r--program/js/tiny_mce/themes/advanced/skins/highcontrast/ui.css106
-rw-r--r--program/js/tiny_mce/themes/advanced/skins/o2k7/content.css48
-rw-r--r--program/js/tiny_mce/themes/advanced/skins/o2k7/dialog.css118
-rw-r--r--program/js/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.pngbin2766 -> 0 bytes
-rw-r--r--program/js/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.pngbin651 -> 0 bytes
-rw-r--r--program/js/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.pngbin2084 -> 0 bytes
-rw-r--r--program/js/tiny_mce/themes/advanced/skins/o2k7/ui.css222
-rw-r--r--program/js/tiny_mce/themes/advanced/skins/o2k7/ui_black.css8
-rw-r--r--program/js/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css5
-rw-r--r--program/js/tiny_mce/themes/advanced/source_editor.htm25
-rw-r--r--program/js/tiny_mce/themes/simple/editor_template.js1
-rw-r--r--program/js/tiny_mce/themes/simple/editor_template_src.js84
-rw-r--r--program/js/tiny_mce/themes/simple/img/icons.gifbin806 -> 0 bytes
-rw-r--r--program/js/tiny_mce/themes/simple/langs/ar.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/az.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/bg.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/bn.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/br.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/bs.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/ca.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/cs.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/cy.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/da.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/de.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/el.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/en.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/eo.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/es.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/et.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/eu.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/fa.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/fi.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/fr.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/gl.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/he.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/hi.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/hr.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/hu.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/hy.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/id.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/is.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/it.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/ja.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/ka.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/ko.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/lt.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/lv.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/mk.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/ms.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/nb.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/nl.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/nn.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/pl.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/ps.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/pt.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/ro.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/ru.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/si.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/sk.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/sl.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/sq.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/sr.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/sv.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/ta.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/th.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/tr.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/uk.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/vi.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/zh-cn.js1
-rw-r--r--program/js/tiny_mce/themes/simple/langs/zh-tw.js1
-rw-r--r--program/js/tiny_mce/themes/simple/skins/default/content.css25
-rw-r--r--program/js/tiny_mce/themes/simple/skins/default/ui.css32
-rw-r--r--program/js/tiny_mce/themes/simple/skins/o2k7/content.css17
-rw-r--r--program/js/tiny_mce/themes/simple/skins/o2k7/img/button_bg.pngbin5102 -> 0 bytes
-rw-r--r--program/js/tiny_mce/themes/simple/skins/o2k7/ui.css35
-rw-r--r--program/js/tiny_mce/tiny_mce.js15
-rw-r--r--program/js/tiny_mce/tiny_mce_popup.js5
-rw-r--r--program/js/tiny_mce/tiny_mce_src.js19127
-rw-r--r--program/js/tiny_mce/utils/editable_selects.js70
-rw-r--r--program/js/tiny_mce/utils/form_utils.js210
-rw-r--r--program/js/tiny_mce/utils/mctabs.js162
-rw-r--r--program/js/tiny_mce/utils/validate.js252
-rw-r--r--program/js/tinymce/langs/ar.js180
-rw-r--r--program/js/tinymce/langs/ar_SA.js180
-rw-r--r--program/js/tinymce/langs/az.js194
-rw-r--r--program/js/tinymce/langs/be.js197
-rw-r--r--program/js/tinymce/langs/bg_BG.js179
-rw-r--r--program/js/tinymce/langs/bn_BD.js179
-rw-r--r--program/js/tinymce/langs/bs.js186
-rw-r--r--program/js/tinymce/langs/ca.js197
-rw-r--r--program/js/tinymce/langs/cs.js196
-rw-r--r--program/js/tinymce/langs/cy.js179
-rw-r--r--program/js/tinymce/langs/da.js197
-rw-r--r--program/js/tinymce/langs/de.js197
-rw-r--r--program/js/tinymce/langs/de_AT.js197
-rw-r--r--program/js/tinymce/langs/dv.js192
-rw-r--r--program/js/tinymce/langs/el.js197
-rw-r--r--program/js/tinymce/langs/en_CA.js191
-rw-r--r--program/js/tinymce/langs/en_GB.js179
-rw-r--r--program/js/tinymce/langs/es.js197
-rw-r--r--program/js/tinymce/langs/et.js179
-rw-r--r--program/js/tinymce/langs/eu.js191
-rw-r--r--program/js/tinymce/langs/fa.js180
-rw-r--r--program/js/tinymce/langs/fi.js194
-rw-r--r--program/js/tinymce/langs/fo.js179
-rw-r--r--program/js/tinymce/langs/fr_FR.js184
-rw-r--r--program/js/tinymce/langs/gd.js179
-rw-r--r--program/js/tinymce/langs/gl.js191
-rw-r--r--program/js/tinymce/langs/he_IL.js180
-rw-r--r--program/js/tinymce/langs/hr.js179
-rw-r--r--program/js/tinymce/langs/hu_HU.js197
-rw-r--r--program/js/tinymce/langs/hy.js179
-rw-r--r--program/js/tinymce/langs/id.js186
-rw-r--r--program/js/tinymce/langs/is_IS.js179
-rw-r--r--program/js/tinymce/langs/it.js179
-rw-r--r--program/js/tinymce/langs/ja.js197
-rw-r--r--program/js/tinymce/langs/ka_GE.js179
-rw-r--r--program/js/tinymce/langs/kk.js179
-rw-r--r--program/js/tinymce/langs/km_KH.js197
-rw-r--r--program/js/tinymce/langs/ko_KR.js186
-rw-r--r--program/js/tinymce/langs/lb.js180
-rw-r--r--program/js/tinymce/langs/lt.js186
-rw-r--r--program/js/tinymce/langs/lv.js197
-rw-r--r--program/js/tinymce/langs/ml.js179
-rw-r--r--program/js/tinymce/langs/ml_IN.js179
-rw-r--r--program/js/tinymce/langs/mn_MN.js179
-rw-r--r--program/js/tinymce/langs/nb_NO.js197
-rw-r--r--program/js/tinymce/langs/nl.js191
-rw-r--r--program/js/tinymce/langs/pl.js191
-rw-r--r--program/js/tinymce/langs/pt_BR.js191
-rw-r--r--program/js/tinymce/langs/pt_PT.js197
-rw-r--r--program/js/tinymce/langs/ro.js197
-rw-r--r--program/js/tinymce/langs/ru.js196
-rw-r--r--program/js/tinymce/langs/si_LK.js179
-rw-r--r--program/js/tinymce/langs/sk.js197
-rw-r--r--program/js/tinymce/langs/sl_SI.js179
-rw-r--r--program/js/tinymce/langs/sr.js179
-rw-r--r--program/js/tinymce/langs/sv_SE.js197
-rw-r--r--program/js/tinymce/langs/ta.js197
-rw-r--r--program/js/tinymce/langs/ta_IN.js197
-rw-r--r--program/js/tinymce/langs/tg.js191
-rw-r--r--program/js/tinymce/langs/th_TH.js179
-rw-r--r--program/js/tinymce/langs/tr_TR.js192
-rw-r--r--program/js/tinymce/langs/tt.js197
-rw-r--r--program/js/tinymce/langs/ug.js189
-rw-r--r--program/js/tinymce/langs/uk.js197
-rw-r--r--program/js/tinymce/langs/uk_UA.js191
-rw-r--r--program/js/tinymce/langs/vi.js179
-rw-r--r--program/js/tinymce/langs/vi_VN.js197
-rw-r--r--program/js/tinymce/langs/zh_CN.js197
-rw-r--r--program/js/tinymce/langs/zh_TW.js186
-rw-r--r--program/js/tinymce/license.txt (renamed from program/js/tiny_mce/license.txt)1008
-rw-r--r--program/js/tinymce/plugins/advlist/plugin.min.js1
-rw-r--r--program/js/tinymce/plugins/anchor/plugin.min.js1
-rw-r--r--program/js/tinymce/plugins/autolink/plugin.min.js1
-rw-r--r--program/js/tinymce/plugins/autoresize/plugin.min.js1
-rw-r--r--program/js/tinymce/plugins/autosave/plugin.min.js1
-rw-r--r--program/js/tinymce/plugins/bbcode/plugin.min.js1
-rw-r--r--program/js/tinymce/plugins/charmap/plugin.min.js1
-rw-r--r--program/js/tinymce/plugins/code/plugin.min.js1
-rw-r--r--program/js/tinymce/plugins/colorpicker/plugin.min.js1
-rw-r--r--program/js/tinymce/plugins/contextmenu/plugin.min.js1
-rw-r--r--program/js/tinymce/plugins/directionality/plugin.min.js1
-rw-r--r--program/js/tinymce/plugins/emoticons/img/smiley-cool.gif (renamed from program/js/tiny_mce/plugins/emotions/img/smiley-cool.gif)bin354 -> 354 bytes
-rw-r--r--program/js/tinymce/plugins/emoticons/img/smiley-cry.gif (renamed from program/js/tiny_mce/plugins/emotions/img/smiley-cry.gif)bin329 -> 329 bytes
-rw-r--r--program/js/tinymce/plugins/emoticons/img/smiley-embarassed.gif (renamed from program/js/tiny_mce/plugins/emotions/img/smiley-embarassed.gif)bin331 -> 331 bytes
-rw-r--r--program/js/tinymce/plugins/emoticons/img/smiley-foot-in-mouth.gif (renamed from program/js/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif)bin342 -> 342 bytes
-rw-r--r--program/js/tinymce/plugins/emoticons/img/smiley-frown.gif (renamed from program/js/tiny_mce/plugins/emotions/img/smiley-frown.gif)bin340 -> 340 bytes
-rw-r--r--program/js/tinymce/plugins/emoticons/img/smiley-innocent.gif (renamed from program/js/tiny_mce/plugins/emotions/img/smiley-innocent.gif)bin336 -> 336 bytes
-rw-r--r--program/js/tinymce/plugins/emoticons/img/smiley-kiss.gif (renamed from program/js/tiny_mce/plugins/emotions/img/smiley-kiss.gif)bin338 -> 338 bytes
-rw-r--r--program/js/tinymce/plugins/emoticons/img/smiley-laughing.gif (renamed from program/js/tiny_mce/plugins/emotions/img/smiley-laughing.gif)bin343 -> 343 bytes
-rw-r--r--program/js/tinymce/plugins/emoticons/img/smiley-money-mouth.gif (renamed from program/js/tiny_mce/plugins/emotions/img/smiley-money-mouth.gif)bin321 -> 321 bytes
-rw-r--r--program/js/tinymce/plugins/emoticons/img/smiley-sealed.gif (renamed from program/js/tiny_mce/plugins/emotions/img/smiley-sealed.gif)bin323 -> 323 bytes
-rw-r--r--program/js/tinymce/plugins/emoticons/img/smiley-smile.gif (renamed from program/js/tiny_mce/plugins/emotions/img/smiley-smile.gif)bin344 -> 344 bytes
-rw-r--r--program/js/tinymce/plugins/emoticons/img/smiley-surprised.gif (renamed from program/js/tiny_mce/plugins/emotions/img/smiley-surprised.gif)bin338 -> 338 bytes
-rw-r--r--program/js/tinymce/plugins/emoticons/img/smiley-tongue-out.gif (renamed from program/js/tiny_mce/plugins/emotions/img/smiley-tongue-out.gif)bin328 -> 328 bytes
-rw-r--r--program/js/tinymce/plugins/emoticons/img/smiley-undecided.gif (renamed from program/js/tiny_mce/plugins/emotions/img/smiley-undecided.gif)bin337 -> 337 bytes
-rw-r--r--program/js/tinymce/plugins/emoticons/img/smiley-wink.gif (renamed from program/js/tiny_mce/plugins/emotions/img/smiley-wink.gif)bin350 -> 350 bytes
-rw-r--r--program/js/tinymce/plugins/emoticons/img/smiley-yell.gif (renamed from program/js/tiny_mce/plugins/emotions/img/smiley-yell.gif)bin336 -> 336 bytes
-rw-r--r--program/js/tinymce/plugins/emoticons/plugin.min.js1
-rw-r--r--program/js/tinymce/plugins/fullpage/plugin.min.js1
-rw-r--r--program/js/tinymce/plugins/fullscreen/plugin.min.js1
-rw-r--r--program/js/tinymce/plugins/hr/plugin.min.js1
-rw-r--r--program/js/tinymce/plugins/image/plugin.min.js1
-rw-r--r--program/js/tinymce/plugins/importcss/plugin.min.js1
-rw-r--r--program/js/tinymce/plugins/insertdatetime/plugin.min.js1
-rw-r--r--program/js/tinymce/plugins/layer/plugin.min.js1
-rw-r--r--program/js/tinymce/plugins/legacyoutput/plugin.min.js1
-rw-r--r--program/js/tinymce/plugins/link/plugin.min.js1
-rw-r--r--program/js/tinymce/plugins/lists/plugin.min.js1
-rw-r--r--program/js/tinymce/plugins/media/moxieplayer.swfbin0 -> 20017 bytes
-rw-r--r--program/js/tinymce/plugins/media/plugin.min.js1
-rw-r--r--program/js/tinymce/plugins/nonbreaking/plugin.min.js1
-rw-r--r--program/js/tinymce/plugins/noneditable/plugin.min.js1
-rw-r--r--program/js/tinymce/plugins/pagebreak/plugin.min.js1
-rw-r--r--program/js/tinymce/plugins/paste/plugin.min.js1
-rw-r--r--program/js/tinymce/plugins/preview/plugin.min.js1
-rw-r--r--program/js/tinymce/plugins/print/plugin.min.js1
-rw-r--r--program/js/tinymce/plugins/save/plugin.min.js1
-rw-r--r--program/js/tinymce/plugins/searchreplace/plugin.min.js1
-rw-r--r--program/js/tinymce/plugins/spellchecker/plugin.min.js1
-rw-r--r--program/js/tinymce/plugins/tabfocus/plugin.min.js1
-rw-r--r--program/js/tinymce/plugins/table/plugin.min.js1
-rw-r--r--program/js/tinymce/plugins/template/plugin.min.js1
-rw-r--r--program/js/tinymce/plugins/textcolor/plugin.min.js1
-rw-r--r--program/js/tinymce/plugins/visualblocks/css/visualblocks.css135
-rw-r--r--program/js/tinymce/plugins/visualblocks/plugin.min.js1
-rw-r--r--program/js/tinymce/plugins/visualchars/plugin.min.js1
-rw-r--r--program/js/tinymce/plugins/wordcount/plugin.min.js1
-rw-r--r--program/js/tinymce/roundcube/browser.css90
-rw-r--r--program/js/tinymce/roundcube/content.css (renamed from skins/classic/editor_content.css)13
-rw-r--r--program/js/tinymce/roundcube/video.pngbin0 -> 999 bytes
-rw-r--r--program/js/tinymce/skins/lightgray/content.inline.min.css1
-rw-r--r--program/js/tinymce/skins/lightgray/content.min.css1
-rw-r--r--program/js/tinymce/skins/lightgray/fonts/readme.md1
-rw-r--r--program/js/tinymce/skins/lightgray/fonts/tinymce-small.dev.svg175
-rw-r--r--program/js/tinymce/skins/lightgray/fonts/tinymce-small.eotbin0 -> 10316 bytes
-rw-r--r--program/js/tinymce/skins/lightgray/fonts/tinymce-small.svg62
-rw-r--r--program/js/tinymce/skins/lightgray/fonts/tinymce-small.ttfbin0 -> 10128 bytes
-rw-r--r--program/js/tinymce/skins/lightgray/fonts/tinymce-small.woffbin0 -> 7848 bytes
-rw-r--r--program/js/tinymce/skins/lightgray/fonts/tinymce.dev.svg153
-rw-r--r--program/js/tinymce/skins/lightgray/fonts/tinymce.eotbin0 -> 10024 bytes
-rw-r--r--program/js/tinymce/skins/lightgray/fonts/tinymce.svg63
-rw-r--r--program/js/tinymce/skins/lightgray/fonts/tinymce.ttfbin0 -> 9860 bytes
-rw-r--r--program/js/tinymce/skins/lightgray/fonts/tinymce.woffbin0 -> 7664 bytes
-rw-r--r--program/js/tinymce/skins/lightgray/img/anchor.gifbin0 -> 53 bytes
-rw-r--r--program/js/tinymce/skins/lightgray/img/loader.gifbin0 -> 2608 bytes
-rw-r--r--program/js/tinymce/skins/lightgray/img/object.gifbin0 -> 152 bytes
-rw-r--r--program/js/tinymce/skins/lightgray/img/trans.gif (renamed from program/js/tiny_mce/themes/advanced/img/trans.gif)bin43 -> 43 bytes
-rw-r--r--program/js/tinymce/skins/lightgray/skin.ie7.min.css1
-rw-r--r--program/js/tinymce/skins/lightgray/skin.min.css1
-rw-r--r--program/js/tinymce/themes/modern/theme.min.js1
-rw-r--r--program/js/tinymce/tinymce.min.js11
-rw-r--r--program/js/treelist.js588
-rw-r--r--program/lib/Auth/SASL.php125
-rw-r--r--program/lib/Auth/SASL/Anonymous.php71
-rw-r--r--program/lib/Auth/SASL/Common.php105
-rw-r--r--program/lib/Auth/SASL/CramMD5.php68
-rw-r--r--program/lib/Auth/SASL/DigestMD5.php197
-rw-r--r--program/lib/Auth/SASL/External.php63
-rw-r--r--program/lib/Auth/SASL/Login.php65
-rw-r--r--program/lib/Auth/SASL/Plain.php63
-rw-r--r--program/lib/Auth/SASL/SCRAM.php306
-rw-r--r--program/lib/Crypt/GPG.php2386
-rw-r--r--program/lib/Crypt/GPG/ByteUtils.php105
-rw-r--r--program/lib/Crypt/GPG/DecryptStatusHandler.php344
-rw-r--r--program/lib/Crypt/GPG/Engine.php2006
-rw-r--r--program/lib/Crypt/GPG/Exceptions.php598
-rw-r--r--program/lib/Crypt/GPG/Key.php223
-rw-r--r--program/lib/Crypt/GPG/KeyGenerator.php790
-rw-r--r--program/lib/Crypt/GPG/KeyGeneratorErrorHandler.php121
-rw-r--r--program/lib/Crypt/GPG/KeyGeneratorStatusHandler.php173
-rw-r--r--program/lib/Crypt/GPG/PinEntry.php875
-rw-r--r--program/lib/Crypt/GPG/ProcessControl.php150
-rw-r--r--program/lib/Crypt/GPG/Signature.php427
-rw-r--r--program/lib/Crypt/GPG/SubKey.php672
-rw-r--r--program/lib/Crypt/GPG/UserId.php373
-rw-r--r--program/lib/Crypt/GPG/VerifyStatusHandler.php216
-rw-r--r--program/lib/Crypt/GPGAbstract.php508
-rw-r--r--program/lib/Mail/mime.php1495
-rw-r--r--program/lib/Mail/mimeDecode.php1003
-rw-r--r--program/lib/Mail/mimePart.php1261
-rw-r--r--program/lib/Net/IDNA2.php3402
-rw-r--r--program/lib/Net/IDNA2/Exception.php4
-rw-r--r--program/lib/Net/IDNA2/Exception/Nameprep.php6
-rw-r--r--program/lib/Net/SMTP.php1338
-rw-r--r--program/lib/Net/Sieve.php1274
-rw-r--r--program/lib/Net/Socket.php686
-rw-r--r--program/lib/PEAR.php1137
-rw-r--r--program/lib/PEAR5.php33
-rw-r--r--program/lib/Roundcube/bootstrap.php8
-rw-r--r--program/lib/Roundcube/html.php27
-rw-r--r--program/lib/Roundcube/rcube.php84
-rw-r--r--program/lib/Roundcube/rcube_addressbook.php56
-rw-r--r--program/lib/Roundcube/rcube_cache.php35
-rw-r--r--program/lib/Roundcube/rcube_charset.php26
-rw-r--r--program/lib/Roundcube/rcube_contacts.php2
-rw-r--r--program/lib/Roundcube/rcube_csv2vcard.php175
-rw-r--r--program/lib/Roundcube/rcube_html2text.php2
-rw-r--r--program/lib/Roundcube/rcube_image.php20
-rw-r--r--program/lib/Roundcube/rcube_imap.php216
-rw-r--r--program/lib/Roundcube/rcube_imap_generic.php419
-rw-r--r--program/lib/Roundcube/rcube_imap_search.php25
-rw-r--r--program/lib/Roundcube/rcube_ldap.php102
-rw-r--r--program/lib/Roundcube/rcube_ldap_generic.php873
-rw-r--r--program/lib/Roundcube/rcube_ldap_result.php130
-rw-r--r--program/lib/Roundcube/rcube_message_header.php12
-rw-r--r--program/lib/Roundcube/rcube_mime.php39
-rw-r--r--program/lib/Roundcube/rcube_output.php36
-rw-r--r--program/lib/Roundcube/rcube_plugin.php21
-rw-r--r--program/lib/Roundcube/rcube_plugin_api.php59
-rw-r--r--program/lib/Roundcube/rcube_result_multifolder.php27
-rw-r--r--program/lib/Roundcube/rcube_session.php12
-rw-r--r--program/lib/Roundcube/rcube_spellchecker.php13
-rw-r--r--program/lib/Roundcube/rcube_storage.php17
-rw-r--r--program/lib/Roundcube/rcube_string_replacer.php2
-rw-r--r--program/lib/Roundcube/rcube_text2html.php309
-rw-r--r--program/lib/Roundcube/rcube_utils.php81
-rw-r--r--program/lib/Roundcube/rcube_vcard.php61
-rw-r--r--program/lib/Roundcube/rcube_washtml.php12
-rw-r--r--program/lib/encoding/CP1250.map274
-rw-r--r--program/lib/encoding/CP1251.map274
-rw-r--r--program/lib/encoding/CP1252.map274
-rw-r--r--program/lib/encoding/CP1253.map274
-rw-r--r--program/lib/encoding/CP1254.map274
-rw-r--r--program/lib/encoding/CP1255.map274
-rw-r--r--program/lib/encoding/CP1256.map274
-rw-r--r--program/lib/encoding/CP1257.map274
-rw-r--r--program/lib/encoding/CP1258.map274
-rw-r--r--program/lib/encoding/ISO-8859-1.map303
-rw-r--r--program/lib/encoding/ISO-8859-10.map303
-rw-r--r--program/lib/encoding/ISO-8859-11.map297
-rw-r--r--program/lib/encoding/ISO-8859-13.map299
-rw-r--r--program/lib/encoding/ISO-8859-14.map301
-rw-r--r--program/lib/encoding/ISO-8859-15.map303
-rw-r--r--program/lib/encoding/ISO-8859-16.map299
-rw-r--r--program/lib/encoding/ISO-8859-2.map303
-rw-r--r--program/lib/encoding/ISO-8859-3.map296
-rw-r--r--program/lib/encoding/ISO-8859-4.map303
-rw-r--r--program/lib/encoding/ISO-8859-5.map303
-rw-r--r--program/lib/encoding/ISO-8859-6.map260
-rw-r--r--program/lib/encoding/ISO-8859-7.map308
-rw-r--r--program/lib/encoding/ISO-8859-8.map270
-rw-r--r--program/lib/encoding/ISO-8859-9.map307
-rw-r--r--program/lib/encoding/KOI8R.map302
-rw-r--r--program/lib/encoding/KSC5601.map17078
-rw-r--r--program/lib/utf8.class.php171
-rw-r--r--program/localization/ar/labels.inc4
-rw-r--r--program/localization/ar_SA/labels.inc39
-rw-r--r--program/localization/ar_SA/messages.inc2
-rw-r--r--program/localization/ast/labels.inc336
-rw-r--r--program/localization/ast/messages.inc17
-rw-r--r--program/localization/az_AZ/labels.inc34
-rw-r--r--program/localization/az_AZ/messages.inc1
-rw-r--r--program/localization/be_BE/labels.inc60
-rw-r--r--program/localization/be_BE/messages.inc11
-rw-r--r--program/localization/bg_BG/labels.inc82
-rw-r--r--program/localization/bg_BG/messages.inc5
-rw-r--r--program/localization/bn_BD/labels.inc24
-rw-r--r--program/localization/bn_BD/messages.inc1
-rw-r--r--program/localization/br/labels.inc81
-rw-r--r--program/localization/br/messages.inc11
-rw-r--r--program/localization/bs_BA/labels.inc120
-rw-r--r--program/localization/bs_BA/messages.inc5
-rw-r--r--program/localization/ca_ES/labels.inc111
-rw-r--r--program/localization/ca_ES/messages.inc5
-rw-r--r--program/localization/cs_CZ/labels.inc65
-rw-r--r--program/localization/cs_CZ/messages.inc5
-rw-r--r--program/localization/cy_GB/labels.inc39
-rw-r--r--program/localization/cy_GB/messages.inc3
-rw-r--r--program/localization/da_DK/labels.inc60
-rw-r--r--program/localization/da_DK/messages.inc5
-rw-r--r--program/localization/de_CH/csv2vcard.inc99
-rw-r--r--program/localization/de_CH/labels.inc41
-rw-r--r--program/localization/de_CH/messages.inc4
-rw-r--r--program/localization/de_DE/csv2vcard.inc99
-rw-r--r--program/localization/de_DE/labels.inc102
-rw-r--r--program/localization/de_DE/messages.inc9
-rw-r--r--program/localization/el_GR/labels.inc42
-rw-r--r--program/localization/el_GR/messages.inc4
-rw-r--r--program/localization/en_CA/labels.inc40
-rw-r--r--program/localization/en_CA/messages.inc5
-rw-r--r--program/localization/en_GB/labels.inc39
-rw-r--r--program/localization/en_GB/messages.inc3
-rw-r--r--program/localization/en_US/labels.inc120
-rw-r--r--program/localization/en_US/messages.inc3
-rw-r--r--program/localization/eo/labels.inc24
-rw-r--r--program/localization/es_419/labels.inc354
-rw-r--r--program/localization/es_419/messages.inc160
-rw-r--r--program/localization/es_AR/labels.inc190
-rw-r--r--program/localization/es_AR/messages.inc22
-rw-r--r--program/localization/es_ES/labels.inc120
-rw-r--r--program/localization/es_ES/messages.inc5
-rw-r--r--program/localization/et_EE/labels.inc131
-rw-r--r--program/localization/et_EE/messages.inc1
-rw-r--r--program/localization/eu_ES/labels.inc114
-rw-r--r--program/localization/eu_ES/messages.inc35
-rw-r--r--program/localization/fa_AF/labels.inc24
-rw-r--r--program/localization/fa_AF/messages.inc1
-rw-r--r--program/localization/fa_IR/labels.inc51
-rw-r--r--program/localization/fa_IR/messages.inc2
-rw-r--r--program/localization/fi_FI/labels.inc79
-rw-r--r--program/localization/fi_FI/messages.inc6
-rw-r--r--program/localization/fo_FO/labels.inc34
-rw-r--r--program/localization/fo_FO/messages.inc1
-rw-r--r--program/localization/fr_FR/labels.inc129
-rw-r--r--program/localization/fr_FR/messages.inc59
-rw-r--r--program/localization/fy_NL/labels.inc6
-rw-r--r--program/localization/ga_IE/labels.inc24
-rw-r--r--program/localization/gl_ES/labels.inc100
-rw-r--r--program/localization/gl_ES/messages.inc7
-rw-r--r--program/localization/he_IL/labels.inc134
-rw-r--r--program/localization/he_IL/messages.inc5
-rw-r--r--program/localization/hi_IN/labels.inc24
-rw-r--r--program/localization/hr_HR/labels.inc39
-rw-r--r--program/localization/hr_HR/messages.inc4
-rw-r--r--program/localization/hu_HU/labels.inc93
-rw-r--r--program/localization/hu_HU/messages.inc27
-rw-r--r--program/localization/hy_AM/labels.inc31
-rw-r--r--program/localization/hy_AM/messages.inc1
-rw-r--r--program/localization/ia/labels.inc28
-rw-r--r--program/localization/id_ID/labels.inc53
-rw-r--r--program/localization/id_ID/messages.inc11
-rw-r--r--program/localization/is_IS/labels.inc31
-rw-r--r--program/localization/it_IT/csv2vcard.inc11
-rw-r--r--program/localization/it_IT/labels.inc120
-rw-r--r--program/localization/it_IT/messages.inc5
-rw-r--r--program/localization/ja_JP/labels.inc71
-rw-r--r--program/localization/ja_JP/messages.inc5
-rw-r--r--program/localization/ka_GE/labels.inc29
-rw-r--r--program/localization/ka_GE/messages.inc1
-rw-r--r--program/localization/km_KH/labels.inc52
-rw-r--r--program/localization/kn_IN/labels.inc7
-rw-r--r--program/localization/ko_KR/labels.inc286
-rw-r--r--program/localization/ko_KR/messages.inc241
-rw-r--r--program/localization/ku/labels.inc24
-rw-r--r--program/localization/lb_LU/labels.inc51
-rw-r--r--program/localization/lb_LU/messages.inc5
-rw-r--r--program/localization/lt_LT/labels.inc121
-rw-r--r--program/localization/lt_LT/messages.inc8
-rw-r--r--program/localization/lv_LV/labels.inc64
-rw-r--r--program/localization/lv_LV/messages.inc7
-rw-r--r--program/localization/mk_MK/labels.inc24
-rw-r--r--program/localization/mk_MK/messages.inc1
-rw-r--r--program/localization/ml_IN/labels.inc10
-rw-r--r--program/localization/ml_IN/messages.inc22
-rw-r--r--program/localization/mr_IN/labels.inc25
-rw-r--r--program/localization/mr_IN/messages.inc1
-rw-r--r--program/localization/ms_MY/labels.inc24
-rw-r--r--program/localization/nb_NO/labels.inc39
-rw-r--r--program/localization/nb_NO/messages.inc1
-rw-r--r--program/localization/ne_NP/labels.inc24
-rw-r--r--program/localization/nl_BE/labels.inc25
-rw-r--r--program/localization/nl_BE/messages.inc1
-rw-r--r--program/localization/nl_NL/labels.inc120
-rw-r--r--program/localization/nl_NL/messages.inc5
-rw-r--r--program/localization/nn_NO/labels.inc31
-rw-r--r--program/localization/nn_NO/messages.inc1
-rw-r--r--program/localization/pl_PL/labels.inc118
-rw-r--r--program/localization/pl_PL/messages.inc5
-rw-r--r--program/localization/ps/labels.inc24
-rw-r--r--program/localization/ps/messages.inc1
-rw-r--r--program/localization/pt_BR/labels.inc46
-rw-r--r--program/localization/pt_BR/messages.inc7
-rw-r--r--program/localization/pt_PT/labels.inc118
-rw-r--r--program/localization/pt_PT/messages.inc5
-rw-r--r--program/localization/ro_RO/labels.inc34
-rw-r--r--program/localization/ro_RO/messages.inc3
-rw-r--r--program/localization/ru_RU/labels.inc70
-rw-r--r--program/localization/ru_RU/messages.inc5
-rw-r--r--program/localization/si_LK/labels.inc30
-rw-r--r--program/localization/sk_SK/labels.inc118
-rw-r--r--program/localization/sk_SK/messages.inc5
-rw-r--r--program/localization/sl_SI/labels.inc34
-rw-r--r--program/localization/sl_SI/messages.inc1
-rw-r--r--program/localization/sq_AL/labels.inc24
-rw-r--r--program/localization/sr_CS/labels.inc31
-rw-r--r--program/localization/sr_CS/messages.inc1
-rw-r--r--program/localization/sv_SE/labels.inc116
-rw-r--r--program/localization/sv_SE/messages.inc7
-rw-r--r--program/localization/ta_IN/labels.inc24
-rw-r--r--program/localization/ta_IN/messages.inc4
-rw-r--r--program/localization/th_TH/labels.inc28
-rw-r--r--program/localization/ti/labels.inc4
-rw-r--r--program/localization/tr_TR/labels.inc114
-rw-r--r--program/localization/tr_TR/messages.inc5
-rw-r--r--program/localization/uk_UA/labels.inc31
-rw-r--r--program/localization/uk_UA/messages.inc1
-rw-r--r--program/localization/ur_PK/labels.inc4
-rw-r--r--program/localization/vi_VN/labels.inc39
-rw-r--r--program/localization/vi_VN/messages.inc23
-rw-r--r--program/localization/zh_CN/labels.inc107
-rw-r--r--program/localization/zh_CN/messages.inc1
-rw-r--r--program/localization/zh_TW/labels.inc44
-rw-r--r--program/localization/zh_TW/messages.inc4
-rw-r--r--program/steps/addressbook/delete.inc40
-rw-r--r--program/steps/addressbook/edit.inc6
-rw-r--r--program/steps/addressbook/export.inc4
-rw-r--r--program/steps/addressbook/func.inc68
-rw-r--r--program/steps/addressbook/move.inc24
-rw-r--r--program/steps/addressbook/photo.inc8
-rw-r--r--program/steps/addressbook/save.inc39
-rw-r--r--program/steps/addressbook/show.inc7
-rw-r--r--program/steps/addressbook/undo.inc3
-rw-r--r--program/steps/mail/attachments.inc25
-rw-r--r--program/steps/mail/autocomplete.inc18
-rw-r--r--program/steps/mail/check_recent.inc9
-rw-r--r--program/steps/mail/compose.inc59
-rw-r--r--program/steps/mail/copy.inc16
-rw-r--r--program/steps/mail/folders.inc4
-rw-r--r--program/steps/mail/func.inc238
-rw-r--r--program/steps/mail/get.inc2
-rw-r--r--program/steps/mail/list.inc106
-rw-r--r--program/steps/mail/list_contacts.inc2
-rw-r--r--program/steps/mail/move_del.inc17
-rw-r--r--program/steps/mail/search.inc26
-rw-r--r--program/steps/mail/search_contacts.inc2
-rw-r--r--program/steps/mail/sendmail.inc62
-rw-r--r--program/steps/mail/show.inc22
-rw-r--r--program/steps/settings/about.inc6
-rw-r--r--program/steps/settings/delete_identity.inc55
-rw-r--r--program/steps/settings/edit_folder.inc49
-rw-r--r--program/steps/settings/edit_identity.inc16
-rw-r--r--program/steps/settings/edit_response.inc2
-rw-r--r--program/steps/settings/folders.inc198
-rw-r--r--program/steps/settings/func.inc35
-rw-r--r--program/steps/settings/identities.inc22
-rw-r--r--program/steps/settings/responses.inc10
-rw-r--r--program/steps/settings/save_folder.inc25
-rw-r--r--program/steps/settings/save_identity.inc34
-rw-r--r--program/steps/settings/save_prefs.inc1
-rw-r--r--program/steps/settings/upload.inc144
-rw-r--r--program/steps/utils/html2text.inc5
-rw-r--r--program/steps/utils/spell_html.inc36
-rw-r--r--program/steps/utils/text2html.inc33
-rw-r--r--skins/classic/addressbook.css47
-rw-r--r--skins/classic/common.css320
-rw-r--r--skins/classic/functions.js234
-rw-r--r--skins/classic/images/filedrop.pngbin0 -> 605 bytes
-rw-r--r--skins/classic/includes/links.html1
-rw-r--r--skins/classic/includes/messagetoolbar.html30
-rw-r--r--skins/classic/mail.css358
-rw-r--r--skins/classic/print.css12
-rw-r--r--skins/classic/settings.css68
-rw-r--r--skins/classic/templates/about.html2
-rw-r--r--skins/classic/templates/addressbook.html3
-rw-r--r--skins/classic/templates/compose.html6
-rw-r--r--skins/classic/templates/folders.html17
-rw-r--r--skins/classic/templates/mail.html8
-rw-r--r--skins/classic/templates/message.html2
-rw-r--r--skins/classic/templates/messagepreview.html4
-rw-r--r--skins/larry/addressbook.css108
-rw-r--r--skins/larry/editor_content.css31
-rw-r--r--skins/larry/images/buttons.pngbin39455 -> 16644 bytes
-rw-r--r--skins/larry/images/listicons.pngbin29530 -> 29198 bytes
-rw-r--r--skins/larry/includes/footer.html1
-rw-r--r--skins/larry/includes/header.html18
-rw-r--r--skins/larry/includes/links.html1
-rw-r--r--skins/larry/includes/mailtoolbar.html58
-rw-r--r--skins/larry/includes/settingstabs.html8
-rw-r--r--skins/larry/mail.css469
-rw-r--r--skins/larry/print.css11
-rw-r--r--skins/larry/settings.css149
-rw-r--r--skins/larry/styles.css679
-rw-r--r--skins/larry/templates/about.html2
-rw-r--r--skins/larry/templates/addressbook.html122
-rw-r--r--skins/larry/templates/compose.html132
-rw-r--r--skins/larry/templates/contactedit.html10
-rw-r--r--skins/larry/templates/folders.html44
-rw-r--r--skins/larry/templates/identities.html15
-rw-r--r--skins/larry/templates/importcontacts.html25
-rw-r--r--skins/larry/templates/login.html10
-rw-r--r--skins/larry/templates/mail.html150
-rw-r--r--skins/larry/templates/message.html48
-rw-r--r--skins/larry/templates/messageerror.html14
-rw-r--r--skins/larry/templates/messagepart.html18
-rw-r--r--skins/larry/templates/messagepreview.html68
-rw-r--r--skins/larry/templates/responses.html14
-rw-r--r--skins/larry/templates/settings.html13
-rw-r--r--skins/larry/ui.js440
-rw-r--r--tests/Framework/Csv2vcard.php18
-rw-r--r--tests/Framework/Html.php9
-rw-r--r--tests/Framework/Html2text.php5
-rw-r--r--tests/Framework/Mime.php3
-rw-r--r--tests/Framework/StringReplacer.php4
-rw-r--r--tests/Framework/Text2Html.php94
-rw-r--r--tests/Framework/Utils.php8
-rw-r--r--tests/Framework/VCard.php35
-rw-r--r--tests/Framework/Washtml.php24
-rw-r--r--tests/MailFunc.php2
-rw-r--r--tests/RcmailFunc.php85
-rw-r--r--tests/phpunit.xml3
-rw-r--r--tests/src/Csv2vcard/gmail.csvbin0 -> 3760 bytes
-rw-r--r--tests/src/Csv2vcard/gmail.vcf25
1878 files changed, 34887 insertions, 102806 deletions
diff --git a/CHANGELOG b/CHANGELOG
index b265b1053..f2dcaded7 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,11 +1,39 @@
CHANGELOG Roundcube Webmail
===========================
+- Support contacts import in GMail CSV format
+- Added namespace filter in Folder Manager
+- Added folder searching in Folder Manager
+- Added config option/user preference to disable saving messages in localStorage (#1489979)
+- Added config option 'imap_log_session' to enable Roundcube <-> IMAP session ID logging
+- Added config option 'log_session_id' to control the lengh of the session identifer in logs
+- Implemented 'storage_connected' API hook after successful IMAP login (#1490025)
+- Intergrate Net_LDAP3 and rcube_ldap_generic classes
+- Add option (disabled_actions) to disable UI elements/actions (#1489638)
+- Support password encryption using openssl extension (#1489989)
+- Create/rename groups in UI dialogs (#1489951)
+- Added 'contact_search_name' option to define autocompletion entry format
+- Display quota information for current folder not INBOX only (#1487993)
+- Support images in HTML signatures (#1488676)
+- Display full quota information in popup (#1485769, #1486604)
+- Mail compose: Selecting contact inserts recipient to previously focused input - to/cc/bcc accordingly (#1489684)
+- Add option to set default message list mode - default_list_mode (#1487312)
+- Close "no subject" prompt with Enter key (#1489580)
+- Add config option to specify IMAP connection socket parameters - imap_conn_options (#1489948)
+- Password: Add option to force new users to change their password (#1486884)
+- Improve support for screen readers and assistive technology using WCAG 2.0 and WAI ARIA standards
+- Enable basic keyboard navigation throughout the UI (#1487845)
+- Select/scroll to previously selected message when returning from message page (#1489023)
+- Display a warning if popup window was blocked (#1489618)
+- Remove (was: ...) from message subject on reply (#1489375)
+- Update to TinyMCE 4.1 (#1489057)
+- Enable autolink plugin in TinyMCE (#1488845)
- Support image operations with Imagick extension (#1489734)
- Support upload progress with session.upload_progress and PECL uploadprogress module (#1488702)
- Make identity name field optional (#1489510)
- Utility script to remove user records from the local database
- Plugin API: Added message_saved hook (#1489752)
+- Plugin API: Added imap_search_before hook
- Support messages import from zip archives
- Zipdownload: Added mbox format support (#1486069)
- Drop support for IE6, move IE7/IE8 support to legacy_browser plugin
@@ -16,9 +44,51 @@ CHANGELOG Roundcube Webmail
- Set In-Reply-To and References for forwarded messages (#1489593)
- Removed redundant default_folders config option (#1489737)
- Implemented IMAP SPECIAL-USE extension support [RFC6154] (#1487830)
+- Optimize some framed pages content for better performance (#1489792)
+- Improve text messages display and conversion to HTML (#1488937)
+- Don't remove links when html signature is converted to text (#1489621)
+- Fix mbox files import
+- Fix some mime-type to extension mapping checks in Installer (#1489983)
+- Fix errors when using localStorage in Safari's private browsing mode (#1489996)
+- Fix bug where $Forwarded flag was being set even if server didn't support it (#1490000)
+- Fix various iCloud vCard issues, added fallback for external photos (#1489993)
+- Fix invalid Content-Type header when send_format_flowed=false (#1489992)
+- Fix errors when adding/updating contacts in active search (#1490015)
+- Fix incorrect thumbnail rotation with GD and exif orientation data (#1490029)
+- Fix contacts list update after adding/deleting/moving a contact (#1490028, #1490033)
+- Fix handling of email addresses with quoted domain part (#1490040)
+- Fix comm_path update on task switch (#1490041)
+
+RELEASE 1.0.2
+-------------
+- Fix storing unsaved drafts in localStorage (#1489818)
+- Add configurable LDAP_OPT_DEREF option (#1489864)
+- Fix so when switching editor mode original version of signature is used (#1488849)
+- Fix unintentional draft autosave request if autosave is disabled (#1489882)
+- Fix malformed References: header in send/saved mail (#1489891)
+- Fix handling unicode characters in links (#1489898)
+- Fix incorrect handling of HTML comments in messages sanitization code (#1489904)
+- Fix so current page is reset on list-mode change (#1489907)
+- Fix so responses menu hides on click in classic skin (#1489915)
+- Fix unintentional line-height style modification in HTML messages (#1489917)
+- Fix broken normalize_string(), add support for ISO-8859-2 (#1489918)
+- Support csv contacts import in German localization (#1489920)
+- Fix so message list and counters are updated when a message is opened in new window (#1489919)
+- Fix malformed recipient name when composing a message by clicking on mailto link (#1489942)
+- Fix list reload after sending message in another window (#1489931)
+- Fix so address format errors are ignored when saving a draft (#1489954)
+- Fix incorrect label translation in return receipt (#1489963)
+- Fix security issue in delete-response action - allow only ajax request
+- Fix Delete button state after deleting identity/response (#1489972)
+- Fix bug where contacts with no email address were listed on compose addressbook (#1489970)
+- Fix images import from various vCard formats (#1489977)
+- Fix sorting messages by size on servers without SORT capability (#1489981)
+
+RELEASE 1.0.1
+-------------
- Support 'error' and 'body_file' return attribs in 'message_before_send' hook (#1489595)
- Apply user-specific replacements to group's base_dn property (#1489779)
-- Fix mbox files import
+- Fix missing email address when importing contacts from outlook csv (#1489830)
- Fix bug where "With attachment" option in search filter wasn't selected after return from mail view (#1489774)
- Fix "washing" of unicoded style attributes (#1489777)
- Fix unintentional redirect from compose page in Webkit browsers (#1489789)
diff --git a/INSTALL b/INSTALL
index abb6bbd7d..9ab791112 100644
--- a/INSTALL
+++ b/INSTALL
@@ -15,7 +15,7 @@ REQUIREMENTS
- PCRE, DOM, JSON, XML, Session, Sockets (required)
- PHP Data Objects (PDO) with driver for either MySQL, PostgreSQL or SQLite (required)
- Libiconv, Zip (recommended)
- - Fileinfo, Mcrypt, mbstring (optional)
+ - OpenSSL, Fileinfo, Mcrypt, mbstring (optional)
* PEAR packages distributed with Roundcube or external:
- Mail_Mime 1.8.1 or newer
- Mail_mimeDecode 1.5.5 or newer
@@ -35,7 +35,7 @@ REQUIREMENTS
- magic_quotes_runtime disabled
- magic_quotes_sybase disabled
- register_globals disabled (PHP < 5.4)
-* PHP compiled with OpenSSL to connect to IMAPS and to use the spell checker
+* PHP compiled with OpenSSL to use secure (tls/ssl) connections and to use the spell checker
* A MySQL (4.0.8 or newer), PostgreSQL, MS SQL Server (2005 or newer) database engine
or SQLite support in PHP
* One of the above databases with permission to create tables
diff --git a/README.md b/README.md
index 04b4d8fd9..00ee0457d 100644
--- a/README.md
+++ b/README.md
@@ -27,8 +27,8 @@ an IMAP library derived from [IlohaMail][iloha] the [TinyMCE][tinymce] rich
text editor, [Googiespell][googiespell] library for spell checking or
the [WASHTML][washtml] sanitizer by Frederic Motte.
-The current default skin uses icons designed by Stephen Horlander and [Kevin
-Gerich][kmgerich] for Mozilla.org.
+The current default skin 'Larry' was kindly created by FLINT / Büro für
+Gestaltung, Berne, Switzerland.
INSTALLATION
diff --git a/bin/update.sh b/bin/update.sh
index 91af6413d..f0c6d2f6c 100755
--- a/bin/update.sh
+++ b/bin/update.sh
@@ -157,7 +157,7 @@ if ($RCI->configured) {
if ($RCI->config['db_dsnw']) {
echo "Executing database schema update.\n";
system("php " . INSTALL_PATH . "bin/updatedb.sh --package=roundcube --version=" . $opts['version']
- . " --dir=" . INSTALL_PATH . DIRECTORY_SEPARATOR . "SQL", $res);
+ . " --dir=" . INSTALL_PATH . "SQL", $res);
$success = !$res;
}
diff --git a/bin/updatedb.sh b/bin/updatedb.sh
index daee6e835..964bc184c 100755
--- a/bin/updatedb.sh
+++ b/bin/updatedb.sh
@@ -116,7 +116,7 @@ if (empty($version)) {
$version = 2012080700;
}
-$dir = $opts['dir'] . DIRECTORY_SEPARATOR . $DB->db_provider;
+$dir = $opts['dir'] . '/' . $DB->db_provider;
if (!file_exists($dir)) {
rcube::raise_error("DDL Upgrade files for " . $DB->db_provider . " driver not found.", false, true);
}
@@ -133,7 +133,7 @@ sort($result, SORT_NUMERIC);
foreach ($result as $v) {
echo "Updating database schema ($v)... ";
- $error = update_db_schema($opts['package'], $v, $dir . DIRECTORY_SEPARATOR . "$v.sql");
+ $error = update_db_schema($opts['package'], $v, "$dir/$v.sql");
if ($error) {
echo "[FAILED]\n";
diff --git a/composer.json-dist b/composer.json-dist
index e7462038d..7791ca907 100644
--- a/composer.json-dist
+++ b/composer.json-dist
@@ -4,13 +4,50 @@
"license": "GPL-3.0+",
"repositories": [
{
+ "type": "pear",
+ "url": "http://pear.php.net/"
+ },
+ {
"type": "composer",
"url": "http://plugins.roundcube.net/"
+ },
+ {
+ "type": "vcs",
+ "url": "git@github.com:roundcube/sample-plugin.git"
+ },
+ {
+ "type": "vcs",
+ "url": "git://git.kolab.org/git/pear/Net_LDAP3"
+ },
+ {
+ "type": "package",
+ "package": {
+ "name": "Net_SMTP",
+ "version": "dev-master",
+ "source": {
+ "url": "http://github.com/pear/Net_SMTP",
+ "type": "git",
+ "reference": "master"
+ }
+ }
}
],
"require": {
"php": ">=5.3.0",
- "roundcube/plugin-installer": ">=0.1.3"
+ "roundcube/plugin-installer": ">=0.1.3",
+ "pear/mail_mime": ">=1.8.9",
+ "pear/mail_mime-decode": ">=1.5.5",
+ "pear/net_smtp": "dev-master",
+ "pear-pear.php.net/auth_sasl": ">=1.0.6",
+ "pear-pear.php.net/net_idna2": ">=0.1.1",
+ "pear-pear.php.net/net_sieve": ">=1.3.2",
+ "pear-pear.php.net/net_ldap2": ">=2.0.12",
+ "kolab/Net_LDAP3": "dev-master",
+ "patchwork/utf8": "1.2.x"
+ },
+ "require-dev": {
+ "pear-pear.php.net/crypt_gpg": "*",
+ "phpunit/phpunit": "*"
},
"minimum-stability": "dev"
}
diff --git a/config/defaults.inc.php b/config/defaults.inc.php
index a76eec6dc..5e9a2bbdd 100644
--- a/config/defaults.inc.php
+++ b/config/defaults.inc.php
@@ -66,6 +66,10 @@ $config['log_driver'] = 'file';
// (read http://php.net/manual/en/function.date.php for all format characters)
$config['log_date_format'] = 'd-M-Y H:i:s O';
+// length of the session ID to prepend each log line with
+// set to 0 to avoid session IDs being logged.
+$config['log_session_id'] = 8;
+
// Syslog ident string to use, if using the 'syslog' log driver.
$config['syslog_id'] = 'roundcube';
@@ -123,6 +127,27 @@ $config['default_port'] = 143;
// best server supported one)
$config['imap_auth_type'] = null;
+// IMAP socket context options
+// See http://php.net/manual/en/context.ssl.php
+// The example below enables server certificate validation
+//$config['imap_conn_options'] = array(
+// 'ssl' => array(
+// 'verify_peer' => true,
+// 'verify_depth' => 3,
+// 'cafile' => '/etc/openssl/certs/ca.crt',
+// ),
+// );
+$config['imap_conn_options'] = null;
+
+// IMAP connection timeout, in seconds. Default: 0 (use default_socket_timeout)
+$config['imap_timeout'] = 0;
+
+// Optional IMAP authentication identifier to be used as authorization proxy
+$config['imap_auth_cid'] = null;
+
+// Optional IMAP authentication password to be used for imap_auth_cid
+$config['imap_auth_pw'] = null;
+
// If you know your imap's folder delimiter, you can specify it here.
// Otherwise it will be determined automatically
$config['imap_delimiter'] = null;
@@ -160,19 +185,17 @@ $config['imap_force_ns'] = false;
// Note: Because the list is cached, re-login is required after change.
$config['imap_disabled_caps'] = array();
-// IMAP connection timeout, in seconds. Default: 0 (use default_socket_timeout)
-$config['imap_timeout'] = 0;
-
-// Optional IMAP authentication identifier to be used as authorization proxy
-$config['imap_auth_cid'] = null;
-
-// Optional IMAP authentication password to be used for imap_auth_cid
-$config['imap_auth_pw'] = null;
+// Log IMAP session identifers after each IMAP login.
+// This is used to relate IMAP session with Roundcube user sessions
+$config['imap_log_session'] = false;
// Type of IMAP indexes cache. Supported values: 'db', 'apc' and 'memcache'.
$config['imap_cache'] = null;
// Enables messages cache. Only 'db' cache is supported.
+// This requires an IMAP server that supports QRESYNC and CONDSTORE
+// extensions (RFC7162). See synchronize() in program/lib/Roundcube/rcube_imap_cache.php
+// for further info, or if you experience syncing problems.
$config['messages_cache'] = false;
// Lifetime of IMAP indexes cache. Possible units: s, m, h, d, w
@@ -241,13 +264,14 @@ $config['smtp_timeout'] = 0;
// requires 'smtp_timeout' to be non zero.
// $config['smtp_conn_options'] = array(
// 'ssl' => array(
-// 'verify_peer' => true,
-// 'verify_depth => 3,
-// 'cafile' => '/etc/openssl/certs/ca.crt',
+// 'verify_peer' => true,
+// 'verify_depth' => 3,
+// 'cafile' => '/etc/openssl/certs/ca.crt',
// ),
// );
$config['smtp_conn_options'] = null;
+
// ----------------------------------
// LDAP
// ----------------------------------
@@ -269,6 +293,9 @@ $config['enable_installer'] = false;
// don't allow these settings to be overriden by the user
$config['dont_override'] = array();
+// List of disabled UI elements/actions
+$config['disabled_actions'] = array();
+
// define which settings should be listed under the 'advanced' block
// which is hidden by default
$config['advanced_prefs'] = array();
@@ -465,6 +492,10 @@ $config['mdn_use_from'] = false;
// 4 - one identity with possibility to edit only signature
$config['identities_level'] = 0;
+// Maximum size of uploaded image in kilobytes
+// Images (in html signatures) are stored in database as data URIs
+$config['identity_image_size'] = 64;
+
// Mimetypes supported by the browser.
// attachments of these types will open in a preview window
// either a comma-separated list or an array: 'text/plain,text/html,text/xml,image/jpeg,image/gif,image/png,application/pdf'
@@ -784,6 +815,8 @@ $config['ldap_public']['Verisign'] = array(
'sizelimit' => '0', // Enables you to limit the count of entries fetched. Setting this to 0 means no limit.
'timelimit' => '0', // Sets the number of seconds how long is spend on the search. Setting this to 0 means no limit.
'referrals' => false, // Sets the LDAP_OPT_REFERRALS option. Mostly used in multi-domain Active Directory setups
+ 'dereference' => 0, // Sets the LDAP_OPT_DEREF option. One of: LDAP_DEREF_NEVER, LDAP_DEREF_SEARCHING, LDAP_DEREF_FINDING, LDAP_DEREF_ALWAYS
+ // Used where addressbook contains aliases to objects elsewhere in the LDAP tree.
// definition for contact groups (uncomment if no groups are supported)
// for the groups base_dn, the user replacements %fu, %u, $d and %dc work as for base_dn (see above)
@@ -855,6 +888,11 @@ $config['address_template'] = '{street}<br/>{locality} {zipcode}<br/>{country} {
// Note: For LDAP sources fuzzy_search must be enabled to use 'partial' or 'prefix' mode
$config['addressbook_search_mode'] = 0;
+// Template of contact entry on the autocompletion list.
+// You can use contact fields as: name, email, organization, department, etc.
+// See program/steps/addressbook/func.inc for a list
+$config['contact_search_name'] = '{name} <{email}>';
+
// ----------------------------------
// USER PREFERENCES
// ----------------------------------
@@ -909,6 +947,10 @@ $config['compose_extwin'] = false;
// 0 - never, 1 - always, 2 - on reply to HTML message, 3 - on forward or reply to HTML message
$config['htmleditor'] = 0;
+// save copies of compose messages in the browser's local storage
+// for recovery in case of browser crashes and session timeout.
+$config['compose_save_localstorage'] = true;
+
// show pretty dates as standard
$config['prettydate'] = true;
@@ -960,9 +1002,12 @@ $config['check_all_folders'] = false;
// If true, after message delete/move, the next message will be displayed
$config['display_next'] = true;
-// 0 - Do not expand threads
-// 1 - Expand all threads automatically
-// 2 - Expand only threads with unread messages
+// Default messages listing mode. One of 'threads' or 'list'.
+$config['default_list_mode'] = 'list';
+
+// 0 - Do not expand threads
+// 1 - Expand all threads automatically
+// 2 - Expand only threads with unread messages
$config['autoexpand_threads'] = 0;
// When replying:
@@ -987,7 +1032,7 @@ $config['force_7bit'] = false;
// Defaults of the search field configuration.
// The array can contain a per-folder list of header fields which should be considered when searching
// The entry with key '*' stands for all folders which do not have a specific list set.
-// Please note that folder names should to be in sync with $config['default_folders']
+// Please note that folder names should to be in sync with $config['*_mbox'] options
$config['search_mods'] = null; // Example: array('*' => array('subject'=>1, 'from'=>1), 'Sent' => array('subject'=>1, 'to'=>1));
// Defaults of the addressbook search field configuration.
diff --git a/index.php b/index.php
index 239dc004f..9c87f9a40 100644
--- a/index.php
+++ b/index.php
@@ -44,6 +44,7 @@ $RCMAIL = rcmail::get_instance($GLOBALS['env']);
// Make the whole PHP output non-cacheable (#1487797)
$RCMAIL->output->nocacheing_headers();
+$RCMAIL->output->common_headers();
// turn on output buffering
ob_start();
@@ -188,7 +189,7 @@ else if ($RCMAIL->task == 'logout' && isset($_SESSION['user_id'])
}
// check session and auth cookie
-else if ($RCMAIL->task != 'login' && $_SESSION['user_id'] && $RCMAIL->action != 'send') {
+else if ($RCMAIL->task != 'login' && $_SESSION['user_id']) {
if (!$RCMAIL->session->check_auth()) {
$RCMAIL->kill_session();
$session_error = true;
@@ -211,7 +212,7 @@ if (empty($RCMAIL->user->ID)) {
$OUTPUT->show_message('sessionerror', 'error', null, true, -1);
}
- if ($OUTPUT->ajax_call || !empty($_REQUEST['_framed'])) {
+ if ($OUTPUT->ajax_call || $OUTPUT->get_env('framed')) {
$OUTPUT->command('session_error', $RCMAIL->url(array('_err' => 'session')));
$OUTPUT->send('iframe');
}
@@ -259,6 +260,14 @@ else {
'message' => "Referer check failed"), true, true);
}
}
+
+ // check access to disabled actions
+ $disabled_actions = (array) $RCMAIL->config->get('disabled_actions');
+ if (in_array($RCMAIL->task . '.' . ($RCMAIL->action ?: 'index'), $disabled_actions)) {
+ rcube::raise_error(array(
+ 'code' => 403, 'type' => 'php',
+ 'message' => "Action disabled"), true, true);
+ }
}
// we're ready, user is authenticated and the request is safe
@@ -286,13 +295,14 @@ if (is_file($incfile = INSTALL_PATH . 'program/steps/'.$RCMAIL->task.'/func.inc'
$redirects = 0; $incstep = null;
while ($redirects < 5) {
// execute a plugin action
- if ($RCMAIL->plugins->is_plugin_task($RCMAIL->task)) {
- if (!$RCMAIL->action) $RCMAIL->action = 'index';
- $RCMAIL->plugins->exec_action($RCMAIL->task.'.'.$RCMAIL->action);
+ if (preg_match('/^plugin\./', $RCMAIL->action)) {
+ $RCMAIL->plugins->exec_action($RCMAIL->action);
break;
}
- else if (preg_match('/^plugin\./', $RCMAIL->action)) {
- $RCMAIL->plugins->exec_action($RCMAIL->action);
+ // execute action registered to a plugin task
+ else if ($RCMAIL->plugins->is_plugin_task($RCMAIL->task)) {
+ if (!$RCMAIL->action) $RCMAIL->action = 'index';
+ $RCMAIL->plugins->exec_action($RCMAIL->task.'.'.$RCMAIL->action);
break;
}
// try to include the step file
diff --git a/installer/check.php b/installer/check.php
index 31b4c2955..6974d3720 100644
--- a/installer/check.php
+++ b/installer/check.php
@@ -28,10 +28,13 @@ $optional_php_exts = array(
);
$required_libs = array(
- 'PEAR' => 'PEAR.php',
- 'Net_SMTP' => 'Net/SMTP.php',
- 'Net_IDNA2' => 'Net/IDNA2.php',
- 'Mail_mime' => 'Mail/mime.php',
+ 'PEAR' => 'pear.php.net',
+ 'Auth_SASL' => 'pear.php.net',
+ 'Net_SMTP' => 'pear.php.net',
+ 'Net_IDNA2' => 'pear.php.net',
+ 'Net_LDAP3' => 'git.kolab.org',
+ 'Mail_mime' => 'pear.php.net',
+ 'Mail_mimeDecode' => 'pear.php.net',
);
$ini_checks = array(
@@ -160,13 +163,13 @@ if (empty($found_db_driver)) {
<?php
-foreach ($required_libs as $classname => $file) {
+foreach ($required_libs as $classname => $vendor) {
@include_once $file;
if (class_exists($classname)) {
$RCI->pass($classname);
}
else {
- $RCI->fail($classname, "Failed to load $file", $source_urls[$classname]);
+ $RCI->fail($classname, "Failed to load class $classname from $vendor", $source_urls[$classname]);
}
echo "<br />";
}
diff --git a/installer/index.php b/installer/index.php
index 044eb3f57..b93ad2f94 100644
--- a/installer/index.php
+++ b/installer/index.php
@@ -3,9 +3,9 @@
/*
+-------------------------------------------------------------------------+
| Roundcube Webmail setup tool |
- | Version 0.9-git |
+ | Version 1.1-git |
| |
- | Copyright (C) 2009-2013, The Roundcube Dev Team |
+ | Copyright (C) 2009-2014, The Roundcube Dev Team |
| |
| This program is free software: you can redistribute it and/or modify |
| it under the terms of the GNU General Public License (with exceptions |
@@ -49,6 +49,11 @@ $include_path .= ini_get('include_path');
set_include_path($include_path);
+// include composer autoloader (if available)
+if (@file_exists(INSTALL_PATH . 'vendor/autoload.php')) {
+ require INSTALL_PATH . 'vendor/autoload.php';
+}
+
require_once 'Roundcube/bootstrap.php';
// deprecated aliases (to be removed)
require_once 'bc.php';
diff --git a/installer/test.php b/installer/test.php
index b1b67e57d..72c7a1f76 100644
--- a/installer/test.php
+++ b/installer/test.php
@@ -210,7 +210,6 @@ if ($db_working) {
<h3>Test filetype detection</h3>
-<p>
<?php
if ($errors = $RCI->check_mime_detection()) {
@@ -225,12 +224,9 @@ if ($errors = $RCI->check_mime_detection()) {
}
else {
$RCI->pass('Fileinfo/mime_content_type configuration');
+ echo "<br/>";
}
-?>
-</p>
-<p>
-<?php
if ($errors = $RCI->check_mime_extensions()) {
$RCI->fail('Mimetype to file extension mapping');
@@ -239,6 +235,7 @@ if ($errors = $RCI->check_mime_extensions()) {
}
else {
$RCI->pass('Mimetype to file extension mapping');
+ echo "<br/>";
}
?>
diff --git a/plugins/acl/acl.js b/plugins/acl/acl.js
index acea60a4c..e59ac72a2 100644
--- a/plugins/acl/acl.js
+++ b/plugins/acl/acl.js
@@ -24,11 +24,7 @@ if (window.rcmail) {
if (e.field.id != 'acluser')
return;
- var value = e.insert;
- // get UID from the entry value
- if (value.match(/\s*\(([^)]+)\)[, ]*$/))
- value = RegExp.$1;
- e.field.value = value;
+ e.field.value = e.insert.replace(/[ ,;]+$/, '');
});
}
}
@@ -140,15 +136,16 @@ rcube_webmail.prototype.acl_mode_switch = function(elem)
rcube_webmail.prototype.acl_list_init = function()
{
var method = this.env.acl_advanced ? 'addClass' : 'removeClass';
+
$('#acl-switch')[method]('selected');
$(this.gui_objects.acltable)[method]('advanced');
this.acl_list = new rcube_list_widget(this.gui_objects.acltable,
- {multiselect:true, draggable:false, keyboard:true, toggleselect:true});
- this.acl_list.addEventListener('select', function(o) { rcmail.acl_list_select(o); });
- this.acl_list.addEventListener('dblclick', function(o) { rcmail.acl_list_dblclick(o); });
- this.acl_list.addEventListener('keypress', function(o) { rcmail.acl_list_keypress(o); });
- this.acl_list.init();
+ {multiselect: true, draggable: false, keyboard: true});
+ this.acl_list.addEventListener('select', function(o) { rcmail.acl_list_select(o); })
+ .addEventListener('dblclick', function(o) { rcmail.acl_list_dblclick(o); })
+ .addEventListener('keypress', function(o) { rcmail.acl_list_keypress(o); })
+ .init();
}
// ACL table row selection handler
@@ -228,16 +225,23 @@ rcube_webmail.prototype.acl_add_row = function(o, sel)
row = $('thead > tr', table).clone();
// Update new row
- $('td', row).map(function() {
- var r, cl = this.className.replace(/^acl/, '');
+ $('th', row).map(function() {
+ var td = $('<td>'),
+ title = $(this).attr('title'),
+ cl = this.className.replace(/^acl/, '');
+
+ if (title)
+ td.attr('title', title);
if (items && items[cl])
cl = items[cl];
if (cl == 'user')
- $(this).text(o.username);
+ td.addClass(cl).append($('<a>').text(o.username));
else
- $(this).addClass(rcmail.acl_class(o.acl, cl)).text('');
+ td.addClass(this.className + ' ' + rcmail.acl_class(o.acl, cl)).text('');
+
+ $(this).replaceWith(td);
});
row.attr('id', 'rcmrow'+id);
@@ -281,10 +285,10 @@ rcube_webmail.prototype.acl_init_form = function(id)
{
var ul, row, td, val = '', type = 'user', li_elements, body = $('body'),
adv_ul = $('#advancedrights'), sim_ul = $('#simplerights'),
- name_input = $('#acluser');
+ name_input = $('#acluser'), type_list = $('#usertype');
if (!this.acl_form) {
- var fn = function () { $('input[value=user]').prop('checked', true); };
+ var fn = function () { $('input[value="user"]').prop('checked', true); };
name_input.click(fn).keypress(fn);
}
@@ -329,23 +333,24 @@ rcube_webmail.prototype.acl_init_form = function(id)
this.acl_id = id;
- var me = this, inst = window.rcmail, body = document.body;
- var buttons = {};
- buttons[rcmail.gettext('save')] = function(e) { inst.command('acl-save'); };
- buttons[rcmail.gettext('cancel')] = function(e) { inst.command('acl-cancel'); };
+ var buttons = {}, me = this, body = document.body;
+
+ buttons[this.gettext('save')] = function(e) { me.command('acl-save'); };
+ buttons[this.gettext('cancel')] = function(e) { me.command('acl-cancel'); };
// display it as popup
- this.acl_popup = rcmail.show_popup_dialog(
+ this.acl_popup = this.show_popup_dialog(
'<div style="width:480px;height:280px">&nbsp;</div>',
- id ? rcmail.gettext('acl.editperms') : rcmail.gettext('acl.newuser'),
+ id ? this.gettext('acl.editperms') : this.gettext('acl.newuser'),
buttons,
{
modal: true,
- closeOnEscape: false,
+ closeOnEscape: true,
close: function(e, ui) {
- (rcmail.is_framed() ? parent.rcmail : rcmail).ksearch_hide();
+ (me.is_framed() ? parent.rcmail : me).ksearch_hide();
me.acl_form.appendTo(body).hide();
$(this).remove();
+ window.focus(); // focus iframe
}
}
);
@@ -354,9 +359,8 @@ rcube_webmail.prototype.acl_init_form = function(id)
if (type == 'user')
name_input.focus();
-
- // unfocus the list, make backspace key in name input field working
- this.acl_list.blur();
+ else
+ $('input:checked', type_list).focus();
}
// Returns class name according to ACL comparision result
diff --git a/plugins/acl/acl.php b/plugins/acl/acl.php
index d7e50f978..33bd91e22 100644
--- a/plugins/acl/acl.php
+++ b/plugins/acl/acl.php
@@ -88,6 +88,7 @@ class acl extends rcube_plugin
$search = rcube_utils::get_input_value('_search', rcube_utils::INPUT_GPC, true);
$reqid = rcube_utils::get_input_value('_reqid', rcube_utils::INPUT_GPC);
$users = array();
+ $keys = array();
if ($this->init_ldap()) {
$max = (int) $this->rc->config->get('autocomplete_max', 15);
@@ -105,15 +106,37 @@ class acl extends rcube_plugin
}
if ($user) {
- if ($record['name'])
- $user = $record['name'] . ' (' . $user . ')';
-
+ $display = rcube_addressbook::compose_search_name($record);
+ $user = array('name' => $user, 'display' => $display);
$users[] = $user;
+ $keys[] = $display ?: $user['name'];
+ }
+ }
+
+ if ($this->rc->config->get('acl_groups')) {
+ $prefix = $this->rc->config->get('acl_group_prefix');
+ $result = $this->ldap->list_groups($search, $mode);
+
+ foreach ($result as $record) {
+ $group = $record['name'];
+
+ if ($group) {
+ $users[] = array('name' => ($prefix ? $prefix : '') . $group, 'display' => $group);
+ $keys[] = $group;
+ }
}
}
}
- sort($users, SORT_LOCALE_STRING);
+ if (count($users)) {
+ // sort users index
+ asort($keys, SORT_LOCALE_STRING);
+ // re-sort users according to index
+ foreach ($keys as $idx => $val) {
+ $keys[$idx] = $users[$idx];
+ }
+ $users = array_values($keys);
+ }
$this->rc->output->command('ksearch_query_results', $users, $search, $reqid);
$this->rc->output->send();
@@ -286,7 +309,7 @@ class acl extends rcube_plugin
$textfield = new html_inputfield($attrib);
- $fields['user'] = html::label(array('for' => 'iduser'), $this->gettext('username'))
+ $fields['user'] = html::label(array('for' => $attrib['id']), $this->gettext('username'))
. ' ' . $textfield->show();
// Add special entries
@@ -401,7 +424,7 @@ class acl extends rcube_plugin
}
$table->add_row(array('id' => 'rcmrow'.$userid));
- $table->add('user', rcube::Q($user));
+ $table->add('user', html::a(array('id' => 'rcmlinkrow'.$userid), rcube::Q($user)));
foreach ($items as $key => $right) {
$in = $this->acl_compare($userrights, $right);
@@ -439,9 +462,13 @@ class acl extends rcube_plugin
$result = 0;
foreach ($users as $user) {
- $user = trim($user);
+ $user = trim($user);
+ $prefix = $this->rc->config->get('acl_groups') ? $this->rc->config->get('acl_group_prefix') : '';
- if (!empty($this->specials) && in_array($user, $this->specials)) {
+ if ($prefix && strpos($user, $prefix) === 0) {
+ $username = $user;
+ }
+ else if (!empty($this->specials) && in_array($user, $this->specials)) {
$username = $this->gettext($user);
}
else if (!empty($user)) {
@@ -653,8 +680,9 @@ class acl extends rcube_plugin
*/
private function init_ldap()
{
- if ($this->ldap)
+ if ($this->ldap) {
return $this->ldap->ready;
+ }
// get LDAP config
$config = $this->rc->config->get('acl_users_source');
@@ -666,7 +694,7 @@ class acl extends rcube_plugin
// not an array, use configured ldap_public source
if (!is_array($config)) {
$ldap_config = (array) $this->rc->config->get('ldap_public');
- $config = $ldap_config[$config];
+ $config = $ldap_config[$config];
}
$uid_field = $this->rc->config->get('acl_users_field', 'mail');
@@ -686,18 +714,17 @@ class acl extends rcube_plugin
}
// add UID field to fieldmap, so it will be returned in a record with name
- $config['fieldmap'] = array(
- 'name' => $name_field,
- 'uid' => $uid_field,
- );
+ $config['fieldmap']['name'] = $name_field;
+ $config['fieldmap']['uid'] = $uid_field;
// search in UID and name fields
- $config['search_fields'] = array_values($config['fieldmap']);
+ $config['search_fields'] = array_values($config['fieldmap']);
$config['required_fields'] = array($uid_field);
// set search filter
- if ($filter)
+ if ($filter) {
$config['filter'] = $filter;
+ }
// disable vlv
$config['vlv'] = false;
diff --git a/plugins/acl/composer.json b/plugins/acl/composer.json
index 923b0ae7e..20859eabf 100644
--- a/plugins/acl/composer.json
+++ b/plugins/acl/composer.json
@@ -3,7 +3,7 @@
"type": "roundcube-plugin",
"description": "IMAP Folders Access Control Lists Management (RFC4314, RFC2086).",
"license": "GNU GPLv3+",
- "version": "1.3",
+ "version": "1.5",
"authors": [
{
"name": "Aleksander Machniak",
diff --git a/plugins/acl/config.inc.php.dist b/plugins/acl/config.inc.php.dist
index 3f0b1efb6..de1f8b5d2 100644
--- a/plugins/acl/config.inc.php.dist
+++ b/plugins/acl/config.inc.php.dist
@@ -16,10 +16,15 @@ $config['acl_users_field'] = 'mail';
// The LDAP search filter will be &'d with search queries
$config['acl_users_filter'] = '';
+// Enable LDAP groups in user autocompletion.
+// Note: LDAP addressbook defined in acl_users_source must include groups config
+$config['acl_groups'] = false;
+
+// Prefix added to the group name to build IMAP ACL identifier
+$config['acl_group_prefix'] = 'group:';
+
// Include the following 'special' access control subjects in the ACL dialog;
// Defaults to array('anyone', 'anonymous') (not when set to an empty array)
// Example: array('anyone') to exclude 'anonymous'.
// Set to an empty array to exclude all special aci subjects.
$config['acl_specials'] = array('anyone', 'anonymous');
-
-?>
diff --git a/plugins/acl/localization/ast.inc b/plugins/acl/localization/ast.inc
new file mode 100644
index 000000000..2932d3bd4
--- /dev/null
+++ b/plugins/acl/localization/ast.inc
@@ -0,0 +1,80 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | plugins/acl/localization/<lang>.inc |
+ | |
+ | Localization file of the Roundcube Webmail ACL plugin |
+ | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | |
+ | Licensed under the GNU General Public License version 3 or |
+ | any later version with exceptions for skins & plugins. |
+ | See the README file for a full license statement. |
+ | |
+ +-----------------------------------------------------------------------+
+
+ For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-acl/
+*/
+$labels['sharing'] = 'Compartición';
+$labels['myrights'] = 'Drechos d\'accesu';
+$labels['username'] = 'Usuariu:';
+$labels['advanced'] = 'Mou avanzáu';
+$labels['newuser'] = 'Amestar entrada';
+$labels['editperms'] = 'Editar permisos';
+$labels['actions'] = 'Aición de drechos d\'accesu...';
+$labels['anyone'] = 'Tolos usuarios (toos)';
+$labels['anonymous'] = 'Convidaos (anónimos)';
+$labels['identifier'] = 'Identificador';
+$labels['acll'] = 'Guetar';
+$labels['aclr'] = 'Lleer mensaxes';
+$labels['acls'] = 'Estáu Caltener Vistu';
+$labels['aclw'] = 'Escribir banderes';
+$labels['acli'] = 'Inxertar (copiar a)';
+$labels['aclc'] = 'Crear subcarpetes';
+$labels['aclk'] = 'Crear subcarpetes';
+$labels['acld'] = 'Desaniciar mensaxes';
+$labels['aclt'] = 'Desaniciar mensaxes';
+$labels['acle'] = 'Desanciar';
+$labels['aclx'] = 'Desaniciar carpeta';
+$labels['acla'] = 'Alministrar';
+$labels['aclfull'] = 'Control total';
+$labels['aclother'] = 'Otru';
+$labels['aclread'] = 'Lleer';
+$labels['aclwrite'] = 'Escribir';
+$labels['acldelete'] = 'Desaniciar';
+$labels['shortacll'] = 'Guetar';
+$labels['shortaclr'] = 'Lleer';
+$labels['shortacls'] = 'Caltener';
+$labels['shortaclw'] = 'Escribir';
+$labels['shortacli'] = 'Inxertar';
+$labels['shortaclc'] = 'Crear';
+$labels['shortaclk'] = 'Crear';
+$labels['shortacld'] = 'Desaniciar';
+$labels['shortaclt'] = 'Desaniciar';
+$labels['shortacle'] = 'Desaniciar';
+$labels['shortaclx'] = 'Desaniciu de carpeta';
+$labels['shortacla'] = 'Alministrar';
+$labels['shortaclother'] = 'Otru';
+$labels['shortaclread'] = 'Lleer';
+$labels['shortaclwrite'] = 'Escribir';
+$labels['shortacldelete'] = 'Desaniciar';
+$labels['longacll'] = 'La carpeta ye visible nes llistes y pue soscribise a';
+$labels['longaclr'] = 'La carpeta nun pue abrise pa leer';
+$labels['longaclx'] = 'La carpeta pue desaniciase o renomase';
+$labels['longacla'] = 'Puen camudase los drechos d\'accesu de la carpeta';
+$labels['longaclfull'] = 'Control completu incluyendo l\'alminitración de carpeta';
+$labels['longaclread'] = 'La carpeta pue abrise pa llectura';
+$labels['longaclwrite'] = 'Los mensaxes puen conseñase, escribise o copiase a la carpeta';
+$labels['longacldelete'] = 'Los mensaxes puen desaniciase';
+$labels['longaclother'] = 'Otros drechos d\'accesu';
+$labels['ariasummaryacltable'] = 'Llista de drechos d\'accesu';
+$messages['deleting'] = 'Desaniciando los drechos d\'accesu...';
+$messages['saving'] = 'Guardando los drechos d\'accesu...';
+$messages['updatesuccess'] = 'Camudaos con ésitu los drechos d\'accesu';
+$messages['deletesuccess'] = 'Desaniciaos con ésitu los drechos d\'accesu';
+$messages['createsuccess'] = 'Amestaos con ésitu los drechos d\'accesu';
+$messages['updateerror'] = 'Nun puen anovase los drechos d\'accesu';
+$messages['deleteerror'] = 'Nun puen desaniciase los drechos d\'accesu';
+$messages['createerror'] = 'Nun puen amestase los drechos d\'accesu';
+$messages['deleteconfirm'] = '¿De xuru quies desaniciar los drechos d\'accesu al(a los) usuariu(os) esbilláu(os)?';
+?>
diff --git a/plugins/acl/localization/bs_BA.inc b/plugins/acl/localization/bs_BA.inc
index 7cedc8c5c..371dd17af 100644
--- a/plugins/acl/localization/bs_BA.inc
+++ b/plugins/acl/localization/bs_BA.inc
@@ -18,8 +18,9 @@
$labels['sharing'] = 'Razmjena';
$labels['myrights'] = 'Prava pristupa';
$labels['username'] = 'Korisnik:';
-$labels['advanced'] = 'napredni mod';
+$labels['advanced'] = 'Napredni mod';
$labels['newuser'] = 'Dodaj unos';
+$labels['editperms'] = 'Uredi dozvole';
$labels['actions'] = 'Akcije za prava pristupa...';
$labels['anyone'] = 'Svi korisnici (bilo ko)';
$labels['anonymous'] = 'Gosti (anonimno)';
@@ -37,6 +38,7 @@ $labels['aclt'] = 'Obriši poruke';
$labels['acle'] = 'Izbriši';
$labels['aclx'] = 'Obriši folder';
$labels['acla'] = 'Administracija';
+$labels['acln'] = 'Obilježi poruke';
$labels['aclfull'] = 'Puna kontrola';
$labels['aclother'] = 'Ostalo';
$labels['aclread'] = 'Pročitano';
@@ -55,6 +57,7 @@ $labels['shortaclt'] = 'Obriši';
$labels['shortacle'] = 'Izbriši';
$labels['shortaclx'] = 'Brisanje foldera';
$labels['shortacla'] = 'Administracija';
+$labels['shortacln'] = 'Obilježli';
$labels['shortaclother'] = 'Ostalo';
$labels['shortaclread'] = 'Pročitano';
$labels['shortaclwrite'] = 'Piši';
@@ -72,10 +75,15 @@ $labels['longaclt'] = 'Oznaka za obrisane poruke se može mijenjati';
$labels['longacle'] = 'Poruke je moguće obrisati';
$labels['longaclx'] = 'Folder je moguće obrisati ili preimenovati';
$labels['longacla'] = 'Pristupna prava foldera je moguće promijeniti';
+$labels['longacln'] = 'Dijeljeni podaci (obilježavanja) poruka mogu se mijenjati';
$labels['longaclfull'] = 'Puna kontrola uključujući i administraciju foldera';
$labels['longaclread'] = 'Folder je moguće otvoriti radi čitanja';
$labels['longaclwrite'] = 'Moguće je označavati, zapisivati i kopirati poruke u folder';
$labels['longacldelete'] = 'Moguće je obrisati poruke';
+$labels['longaclother'] = 'Ostala prava pristupa';
+$labels['ariasummaryacltable'] = 'Lista prava pristupa';
+$labels['arialabelaclactions'] = 'Lista akcija';
+$labels['arialabelaclform'] = 'Obrazac za prava pristupa';
$messages['deleting'] = 'Brišem prava pristupa...';
$messages['saving'] = 'Snimam prava pristupa...';
$messages['updatesuccess'] = 'Prava pristupa su uspješno promijenjena';
diff --git a/plugins/acl/localization/en_CA.inc b/plugins/acl/localization/en_CA.inc
index 53d14ff9a..ae9cb8bbe 100644
--- a/plugins/acl/localization/en_CA.inc
+++ b/plugins/acl/localization/en_CA.inc
@@ -18,7 +18,9 @@
$labels['sharing'] = 'Sharing';
$labels['myrights'] = 'Access Rights';
$labels['username'] = 'User:';
+$labels['advanced'] = 'Advanced mode';
$labels['newuser'] = 'Add entry';
+$labels['editperms'] = 'Edit permissions';
$labels['actions'] = 'Access right actions...';
$labels['anyone'] = 'All users (anyone)';
$labels['anonymous'] = 'Guests (anonymous)';
@@ -36,6 +38,7 @@ $labels['aclt'] = 'Delete messages';
$labels['acle'] = 'Expunge';
$labels['aclx'] = 'Delete folder';
$labels['acla'] = 'Administer';
+$labels['acln'] = 'Annotate messages';
$labels['aclfull'] = 'Full control';
$labels['aclother'] = 'Other';
$labels['aclread'] = 'Read';
@@ -54,6 +57,7 @@ $labels['shortaclt'] = 'Delete';
$labels['shortacle'] = 'Expunge';
$labels['shortaclx'] = 'Folder delete';
$labels['shortacla'] = 'Administer';
+$labels['shortacln'] = 'Annotate';
$labels['shortaclother'] = 'Other';
$labels['shortaclread'] = 'Read';
$labels['shortaclwrite'] = 'Write';
@@ -71,6 +75,7 @@ $labels['longaclt'] = 'Messages Delete flag can be changed';
$labels['longacle'] = 'Messages can be expunged';
$labels['longaclx'] = 'The folder can be deleted or renamed';
$labels['longacla'] = 'The folder access rights can be changed';
+$labels['longacln'] = 'Messages shared metadata (annotations) can be changed';
$labels['longaclfull'] = 'Full control including folder administration';
$labels['longaclread'] = 'The folder can be opened for reading';
$labels['longaclwrite'] = 'Messages can be marked, written or copied to the folder';
diff --git a/plugins/acl/localization/en_US.inc b/plugins/acl/localization/en_US.inc
index 23501dafe..ff8dde76c 100644
--- a/plugins/acl/localization/en_US.inc
+++ b/plugins/acl/localization/en_US.inc
@@ -87,6 +87,11 @@ $labels['longaclfull'] = 'Full control including folder administration';
$labels['longaclread'] = 'The folder can be opened for reading';
$labels['longaclwrite'] = 'Messages can be marked, written or copied to the folder';
$labels['longacldelete'] = 'Messages can be deleted';
+$labels['longaclother'] = 'Other access rights';
+
+$labels['ariasummaryacltable'] = 'List of access rights';
+$labels['arialabelaclactions'] = 'List actions';
+$labels['arialabelaclform'] = 'Access rights form';
$messages['deleting'] = 'Deleting access rights...';
$messages['saving'] = 'Saving access rights...';
diff --git a/plugins/acl/localization/et_EE.inc b/plugins/acl/localization/et_EE.inc
index 4b6f437aa..ecd5f7e8f 100644
--- a/plugins/acl/localization/et_EE.inc
+++ b/plugins/acl/localization/et_EE.inc
@@ -18,12 +18,17 @@
$labels['sharing'] = 'Jagamine';
$labels['myrights'] = 'Ligipääsuõigused';
$labels['username'] = 'Kasutaja:';
+$labels['advanced'] = 'laiendatud režiim';
$labels['newuser'] = 'Lisa sissekanne';
+$labels['editperms'] = 'Muuda õigusi';
$labels['actions'] = 'Ligipääsuõiguste toimingud...';
$labels['anyone'] = 'Kõik kasutajad';
$labels['anonymous'] = 'Külalised (anonüümsed)';
$labels['identifier'] = 'Tuvastaja';
+$labels['acll'] = 'Ülevaade';
$labels['aclr'] = 'Lugeda kirju';
+$labels['acls'] = 'Hoia nähtud olekut';
+$labels['aclw'] = 'Salvesta lipud';
$labels['acli'] = 'Sisesta (kopeeri)';
$labels['aclp'] = 'Postita';
$labels['aclc'] = 'Luua alamkaustu';
@@ -33,11 +38,13 @@ $labels['aclt'] = 'Kustutada kirju';
$labels['acle'] = 'Eemalda';
$labels['aclx'] = 'Kustutada kausta';
$labels['acla'] = 'Administreerida';
+$labels['acln'] = 'Annoteeri kirja';
$labels['aclfull'] = 'Täis kontroll';
$labels['aclother'] = 'Muu';
$labels['aclread'] = 'Loe';
$labels['aclwrite'] = 'Kirjuta';
$labels['acldelete'] = 'Kustuta';
+$labels['shortacll'] = 'Ülevaade';
$labels['shortaclr'] = 'Loe';
$labels['shortacls'] = 'Säilita';
$labels['shortaclw'] = 'Kirjuta';
@@ -50,20 +57,33 @@ $labels['shortaclt'] = 'Kustuta';
$labels['shortacle'] = 'Eemalda';
$labels['shortaclx'] = 'Kausta kustutamine';
$labels['shortacla'] = 'Administreerida';
+$labels['shortacln'] = 'Annoteeri';
$labels['shortaclother'] = 'Muu';
$labels['shortaclread'] = 'Loe';
$labels['shortaclwrite'] = 'Kirjuta';
$labels['shortacldelete'] = 'Kustuta';
$labels['longacll'] = 'See kaust on nimekirjas nähtav ja seda saab tellida';
$labels['longaclr'] = 'Kausta saab lugemiseks avada';
+$labels['longacls'] = 'Kirja loetuse lippu saab muuta';
+$labels['longaclw'] = 'Kirja lippe ja otsingusõnu saab muuta, väljaarvatud loetud ja kustutatud';
+$labels['longacli'] = 'Kirju saab salvestada ja kopeerida antud kausta';
+$labels['longaclp'] = 'Kirju saab postitada antud kausta';
+$labels['longaclc'] = 'Kaustasi saab luua (või ümber nimetada) otse siia kausta alla.';
+$labels['longaclk'] = 'Kaustu saab luua (või ümber nimetada) otse siia kausta alla';
$labels['longacld'] = 'Kirja kustutamis lippu saab muuta';
$labels['longaclt'] = 'Kirja kustutamis lippu saab muuta';
$labels['longacle'] = 'Kirju saab eemaldada';
$labels['longaclx'] = 'Seda kausta ei saa kustutada ega ümber nimetada';
$labels['longacla'] = 'Selle kausta ligipääsuõigusi saab muuta';
+$labels['longacln'] = 'Kirja jagatud metainfot (annotatsioonid) saab muuta';
$labels['longaclfull'] = 'Täielik kontroll koos kaustade haldamisega';
$labels['longaclread'] = 'Kausta saab lugemiseks avada';
+$labels['longaclwrite'] = 'Kirju saab märgistada, salvestada või kopeerida kausta';
$labels['longacldelete'] = 'Kirju saab kustutada';
+$labels['longaclother'] = 'Muud ligipääsu õigused';
+$labels['ariasummaryacltable'] = 'Nimekir ligipääsu õigustest';
+$labels['arialabelaclactions'] = 'Näita tegevusi';
+$labels['arialabelaclform'] = 'Ligipääsu õiguste vorm';
$messages['deleting'] = 'Ligipääsuõiguste kustutamine...';
$messages['saving'] = 'Ligipääsuõiguste salvestamine...';
$messages['updatesuccess'] = 'Ligipääsuõigused on muudetud';
diff --git a/plugins/acl/localization/fi_FI.inc b/plugins/acl/localization/fi_FI.inc
index eb69eda3a..27510e849 100644
--- a/plugins/acl/localization/fi_FI.inc
+++ b/plugins/acl/localization/fi_FI.inc
@@ -21,12 +21,24 @@ $labels['username'] = 'Käyttäjä:';
$labels['editperms'] = 'Muokkaa oikeuksia';
$labels['anyone'] = 'Kaikki käyttäjät (kuka tahansa)';
$labels['anonymous'] = 'Vieraat (anonyymit)';
+$labels['aclc'] = 'Luo alikansioita';
+$labels['aclk'] = 'Luo alikansioita';
+$labels['acld'] = 'Poista viestejä';
+$labels['aclt'] = 'Poista viestejä';
+$labels['aclx'] = 'Poista kansio';
+$labels['aclfull'] = 'Täydet käyttöoikeudet';
$labels['aclother'] = 'Muu';
+$labels['aclread'] = 'Luku';
+$labels['aclwrite'] = 'Kirjoitus';
+$labels['acldelete'] = 'Poisto';
$labels['shortaclc'] = 'Luo';
$labels['shortaclk'] = 'Luo';
$labels['shortacld'] = 'Poista';
$labels['shortaclt'] = 'Poista';
$labels['shortaclother'] = 'Muu';
+$labels['shortaclread'] = 'Luku';
+$labels['shortaclwrite'] = 'Kirjoitus';
+$labels['shortacldelete'] = 'Poisto';
$labels['longaclr'] = 'Kansion voi avata lukua varten';
$labels['longaclx'] = 'Kansio voidaan poistaa tai nimetä uudelleen';
$labels['longacla'] = 'Kansion käyttöoikeuksia voi muuttaa';
diff --git a/plugins/acl/localization/it_IT.inc b/plugins/acl/localization/it_IT.inc
index 36c66cda5..1201c7ea1 100644
--- a/plugins/acl/localization/it_IT.inc
+++ b/plugins/acl/localization/it_IT.inc
@@ -80,6 +80,10 @@ $labels['longaclfull'] = 'Controllo completo incluso cartella di amministrazione
$labels['longaclread'] = 'Questa cartella può essere aperta in lettura';
$labels['longaclwrite'] = 'I messaggi possono essere marcati, scritti o copiati nella cartella';
$labels['longacldelete'] = 'I messaggi possono essere eliminati';
+$labels['longaclother'] = 'Altri diritti di accesso';
+$labels['ariasummaryacltable'] = 'Elenco dei diritti di accesso';
+$labels['arialabelaclactions'] = 'Lista azioni';
+$labels['arialabelaclform'] = 'Modulo di accesso';
$messages['deleting'] = 'Sto eliminando i diritti di accesso...';
$messages['saving'] = 'Sto salvando i diritti di accesso...';
$messages['updatesuccess'] = 'I diritti d\'accesso sono stati cambiati';
diff --git a/plugins/acl/localization/pt_PT.inc b/plugins/acl/localization/pt_PT.inc
index 77f831375..75735dd56 100644
--- a/plugins/acl/localization/pt_PT.inc
+++ b/plugins/acl/localization/pt_PT.inc
@@ -80,6 +80,10 @@ $labels['longaclfull'] = 'Controlo total incluindo administração de pastas';
$labels['longaclread'] = 'A pasta pode ser aberta para leitura';
$labels['longaclwrite'] = 'As mensagens podem ser marcadas, guardadas ou copiadas para a pasta';
$labels['longacldelete'] = 'As mensagens podem ser eliminadas';
+$labels['longaclother'] = 'Outros direitos de acesso';
+$labels['ariasummaryacltable'] = 'Lista de direitos de acesso';
+$labels['arialabelaclactions'] = 'Lista de acções';
+$labels['arialabelaclform'] = 'Formulário de direitos de acesso';
$messages['deleting'] = 'A eliminar permissões de acesso...';
$messages['saving'] = 'A guardar permissões de acesso...';
$messages['updatesuccess'] = 'Permissões de acesso alteradas com sucesso';
diff --git a/plugins/acl/package.xml b/plugins/acl/package.xml
index a99ad4ffa..feec9cebe 100644
--- a/plugins/acl/package.xml
+++ b/plugins/acl/package.xml
@@ -13,9 +13,9 @@
<email>alec@alec.pl</email>
<active>yes</active>
</lead>
- <date>2014-02-04</date>
+ <date>2014-08-11</date>
<version>
- <release>1.3</release>
+ <release>1.5</release>
<api>1.0</api>
</version>
<stability>
diff --git a/plugins/acl/skins/larry/acl.css b/plugins/acl/skins/larry/acl.css
index 96c1092a0..bd72b3c85 100644
--- a/plugins/acl/skins/larry/acl.css
+++ b/plugins/acl/skins/larry/acl.css
@@ -26,44 +26,39 @@
border: none;
}
+#acltable th,
#acltable td
{
white-space: nowrap;
text-align: center;
}
-#acltable thead tr td
+#acltable thead tr th
{
- border-left: #BBD3DA dotted 1px;
font-size: 11px;
font-weight: bold;
- width: auto;
}
#acltable tbody td
{
- border-bottom: #DDDDDD 1px solid;
text-align: center;
height: 16px;
cursor: default;
}
-#acltable thead td.user
+#acltable thead tr > .user
{
width: 30%;
+ border-left: none;
}
-#acltable.advanced thead td.user {
- width: 25%;
+#acltable.advanced thead tr > .user {
+ width: 25%;
}
#acltable tbody td.user
{
text-align: left;
- overflow: hidden;
- text-overflow: ellipsis;
- -o-text-overflow: ellipsis;
- border-left: none;
}
#acltable tbody td.partial
diff --git a/plugins/acl/skins/larry/templates/table.html b/plugins/acl/skins/larry/templates/table.html
index c0b8329c6..16a97dfcb 100644
--- a/plugins/acl/skins/larry/templates/table.html
+++ b/plugins/acl/skins/larry/templates/table.html
@@ -1,23 +1,26 @@
<div id="aclcontainer" class="uibox listbox">
<div id="acllist-content" class="scroller withfooter">
- <roundcube:object name="acltable" id="acltable" class="records-table" />
+ <h2 class="voice" id="aria-label-acltable"><roundcube:label name="acl.ariasummaryacltable" /></h2>
+ <roundcube:object name="acltable" id="acltable" class="records-table" aria-labelledby="aria-label-acltable" role="listbox" />
</div>
<div id="acllist-footer" class="boxfooter">
- <roundcube:button command="acl-create" id="aclcreatelink" type="link" title="acl.newuser" class="listbutton add disabled" classAct="listbutton add" innerClass="inner" content="+" /><roundcube:button name="aclmenulink" id="aclmenulink" type="link" title="acl.actions" class="listbutton groupactions"onclick="UI.show_popup('aclmenu', undefined, {above:1});return false" innerClass="inner" content="&#9881;" />
+ <roundcube:button command="acl-create" id="aclcreatelink" type="link" title="acl.newuser" class="listbutton add disabled" classAct="listbutton add" innerClass="inner" content="+" /><roundcube:button name="aclmenulink" id="aclmenulink" type="link" title="acl.actions" class="listbutton groupactions" onclick="return UI.toggle_popup('aclmenu', event)" innerClass="inner" content="&#9881;" aria-haspopup="true" aria-expanded="false" aria-owns="aclmenu-menu" />
</div>
</div>
-<div id="aclmenu" class="popupmenu">
- <ul class="toolbarmenu selectable iconized">
- <li><roundcube:button command="acl-edit" label="edit" class="icon" classAct="icon active" innerclass="icon edit" /></li>
- <li><roundcube:button command="acl-delete" label="delete" class="icon" classAct="icon active" innerclass="icon delete" /></li>
+<div id="aclmenu" class="popupmenu" aria-hidden="true" data-align="bottom">
+ <h3 id="aria-label-aclactions" class="voice"><roundcube:label name="acl.arialabelaclactions" /></h3>
+ <ul id="aclmenu-menu" class="toolbarmenu selectable iconized" role="menu" aria-labelledby="aria-label-aclactions">
+ <li role="menuitem"><roundcube:button command="acl-edit" label="edit" class="icon" classAct="icon active" innerclass="icon edit" /></li>
+ <li role="menuitem"><roundcube:button command="acl-delete" label="delete" class="icon" classAct="icon active" innerclass="icon delete" /></li>
<roundcube:if condition="!in_array('acl_advanced_mode', (array)config:dont_override)" />
- <li><roundcube:button name="acl-switch" id="acl-switch" label="acl.advanced" onclick="rcmail.command('acl-mode-switch');return false" class="active" /></li>
+ <li role="menuitem"><roundcube:button name="acl-switch" id="acl-switch" label="acl.advanced" onclick="rcmail.command('acl-mode-switch');return false" class="active" /></li>
<roundcube:endif />
</ul>
</div>
-<div id="aclform" class="propform" style="position:absolute; width:480px; top:0; left:0; padding:8px">
+<div id="aclform" class="propform" style="position:absolute; width:480px; top:0; left:0; padding:8px" aria-labelledby="aria-label-aclform" aria-hidden="true" role="dialog">
+ <h3 id="aria-label-aclform" class="voice"><roundcube:label name="acl.arialabelaclform" /></h3>
<fieldset class="thinbordered"><legend><roundcube:label name="acl.identifier" /></legend>
<roundcube:object name="acluser" id="acluser" size="35" class="proplist" />
</fieldset>
diff --git a/plugins/additional_message_headers/config.inc.php.dist b/plugins/additional_message_headers/config.inc.php.dist
index 72a4f1cee..904681349 100644
--- a/plugins/additional_message_headers/config.inc.php.dist
+++ b/plugins/additional_message_headers/config.inc.php.dist
@@ -1,7 +1,7 @@
<?php
// $config['additional_message_headers']['X-Remote-Browser'] = $_SERVER['HTTP_USER_AGENT'];
-// $config['additional_message_headers']['X-Originating-IP'] = $_SERVER['REMOTE_ADDR'];
+// $config['additional_message_headers']['X-Originating-IP'] = '[' . $_SERVER['REMOTE_ADDR'] .']';
// $config['additional_message_headers']['X-RoundCube-Server'] = $_SERVER['SERVER_ADDR'];
// if( isset( $_SERVER['MACHINE_NAME'] )) {
diff --git a/plugins/archive/localization/ast.inc b/plugins/archive/localization/ast.inc
index 546c33538..0ae647fe7 100644
--- a/plugins/archive/localization/ast.inc
+++ b/plugins/archive/localization/ast.inc
@@ -17,15 +17,15 @@
*/
$labels['buttontext'] = 'Archivu';
$labels['buttontitle'] = 'Archivar esti mensaxe';
-$labels['archived'] = 'Mensaxe archiváu';
-$labels['archivedreload'] = 'Archiváu correchamente. Recarga la páxina pa ver les nueves carpetes d\'archivu.';
+$labels['archived'] = 'Archiváu con ésitu';
+$labels['archivedreload'] = 'Archiváu con ésitu. Recarga la páxina pa ver les nueves carpetes d\'archivos.';
$labels['archiveerror'] = 'Nun pudieron archivase dalgunos mensaxes';
$labels['archivefolder'] = 'Archivu';
$labels['settingstitle'] = 'Archivu';
$labels['archivetype'] = 'Dividir l\'archivu por';
$labels['archivetypeyear'] = 'Añu (p.ex. Archivu/2012)';
$labels['archivetypemonth'] = 'Mes (p.ex. Archivu/2012/06)';
-$labels['archivetypefolder'] = 'Bandexa orixinal';
+$labels['archivetypefolder'] = 'Carpeta orixinal';
$labels['archivetypesender'] = 'Corréu-e del remitente';
$labels['unkownsender'] = 'desconocíu';
?>
diff --git a/plugins/archive/localization/be_BE.inc b/plugins/archive/localization/be_BE.inc
index 90e4417d7..80850dba1 100644
--- a/plugins/archive/localization/be_BE.inc
+++ b/plugins/archive/localization/be_BE.inc
@@ -16,16 +16,16 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-archive/
*/
$labels['buttontext'] = 'Архіў';
-$labels['buttontitle'] = 'Перанесці ў Архіў';
-$labels['archived'] = 'Перанесена ў Архіў';
-$labels['archivedreload'] = 'Перанесена ў Архіў. Перазагрузіце старонку, каб пабачыць новыя архіўныя папкі.';
+$labels['buttontitle'] = 'Перанесці ў архіў';
+$labels['archived'] = 'Перанесена ў архіў';
+$labels['archivedreload'] = 'Перанесена ў архіў. Перагрузіце старонку, каб пабачыць новыя архіўныя папкі.';
$labels['archiveerror'] = 'Некаторыя паведамленні не могуць быць перанесены ў архіў';
$labels['archivefolder'] = 'Архіў';
$labels['settingstitle'] = 'Архіў';
$labels['archivetype'] = 'Раздзяліць архіў паводле';
$labels['archivetypeyear'] = 'года (прыкладам, Архіў/2012)';
$labels['archivetypemonth'] = 'месяца (прыкладам, Архіў/2012/06)';
-$labels['archivetypefolder'] = 'Арыгінальная папка';
+$labels['archivetypefolder'] = 'Выточная папка';
$labels['archivetypesender'] = 'Эл. пошта адпраўніка';
$labels['unkownsender'] = 'невядомы';
?>
diff --git a/plugins/archive/localization/br.inc b/plugins/archive/localization/br.inc
index b3a322903..cc8959c43 100644
--- a/plugins/archive/localization/br.inc
+++ b/plugins/archive/localization/br.inc
@@ -19,4 +19,5 @@ $labels['buttontext'] = 'Diell';
$labels['buttontitle'] = 'Dielliñ ar gemenadenn-mañ';
$labels['archived'] = 'Diellet gant berzh';
$labels['archivefolder'] = 'Diell';
+$labels['unkownsender'] = 'dianav';
?>
diff --git a/plugins/archive/localization/es_419.inc b/plugins/archive/localization/es_419.inc
index 3f26a018e..9bde4b1f7 100644
--- a/plugins/archive/localization/es_419.inc
+++ b/plugins/archive/localization/es_419.inc
@@ -15,15 +15,17 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-archive/
*/
-$labels['buttontext'] = 'Archivo';
+$labels['buttontext'] = 'Archivar';
$labels['buttontitle'] = 'Archivar este mensaje';
$labels['archived'] = 'Archivado exitosamente';
-$labels['archivedreload'] = 'Achivado exitosamente. ';
+$labels['archivedreload'] = 'Archivado exitosamente. Recarga esta página para ver las nuevas carpetas';
$labels['archiveerror'] = 'Algunos mensajes no pudieron ser archivados';
-$labels['archivefolder'] = 'Archivo';
+$labels['archivefolder'] = 'Archivar';
+$labels['settingstitle'] = 'Archivar';
$labels['archivetype'] = 'Dividir archivo por';
$labels['archivetypeyear'] = 'Año (ej. Archivo/2012)';
$labels['archivetypemonth'] = 'Mes (ej. Archivo/2012/06)';
$labels['archivetypefolder'] = 'Carpeta original';
+$labels['archivetypesender'] = 'Remitente de correo electrónico';
$labels['unkownsender'] = 'desconocido';
?>
diff --git a/plugins/archive/localization/ko_KR.inc b/plugins/archive/localization/ko_KR.inc
index bf23f3a41..650e38f0f 100644
--- a/plugins/archive/localization/ko_KR.inc
+++ b/plugins/archive/localization/ko_KR.inc
@@ -16,9 +16,9 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-archive/
*/
$labels['buttontext'] = '보관';
-$labels['buttontitle'] = '이 메시지를 보관';
-$labels['archived'] = '성공적으로 보관됨';
-$labels['archivedreload'] = '성공적으로 보관됨. 페이지를 다시 불러와서 새 보관 폴더를 확인하세요.';
+$labels['buttontitle'] = '이 메시지를 보관함에 저장';
+$labels['archived'] = '성공적으로 보관함';
+$labels['archivedreload'] = '성공적으로 보관됨. 페이지를 다시 불러와서 새로운 보관함 폴더를 확인하세요.';
$labels['archiveerror'] = '일부 메시지가 보관되지 않음';
$labels['archivefolder'] = '보관';
$labels['settingstitle'] = '보관';
@@ -26,6 +26,6 @@ $labels['archivetype'] = '보관된 메시지 정리 기준';
$labels['archivetypeyear'] = '연도 (예: 보관 편지함/2012)';
$labels['archivetypemonth'] = '월 (예: 보관 편지함/2012/06)';
$labels['archivetypefolder'] = '원본 폴더';
-$labels['archivetypesender'] = '발신인 이메일';
+$labels['archivetypesender'] = '발송자 이메일';
$labels['unkownsender'] = '알 수 없음';
?>
diff --git a/plugins/attachment_reminder/localization/ast.inc b/plugins/attachment_reminder/localization/ast.inc
new file mode 100644
index 000000000..910f3fe90
--- /dev/null
+++ b/plugins/attachment_reminder/localization/ast.inc
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | plugins/attachment_reminder/localization/<lang>.inc |
+ | |
+ | Localization file of the Roundcube Webmail Archive plugin |
+ | Copyright (C) 2013, The Roundcube Dev Team |
+ | |
+ | Licensed under the GNU General Public License version 3 or |
+ | any later version with exceptions for skins & plugins. |
+ | See the README file for a full license statement. |
+ | |
+ +-----------------------------------------------------------------------+
+
+ For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-attachment_reminder/
+*/
+$messages['forgotattachment'] = "¿Escaecisti axuntar un ficheru?";
+$messages['reminderoption'] = "Recordar alrodiu d'axuntos escaecíos";
+$messages['keywords'] = "axuntu,ficheru,axuntar,axuntáu,axuntando,axuntao,axuntada,CV,carta de presentación";
diff --git a/plugins/attachment_reminder/localization/br.inc b/plugins/attachment_reminder/localization/br.inc
new file mode 100644
index 000000000..93eaace5e
--- /dev/null
+++ b/plugins/attachment_reminder/localization/br.inc
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | plugins/attachment_reminder/localization/<lang>.inc |
+ | |
+ | Localization file of the Roundcube Webmail Archive plugin |
+ | Copyright (C) 2013, The Roundcube Dev Team |
+ | |
+ | Licensed under the GNU General Public License version 3 or |
+ | any later version with exceptions for skins & plugins. |
+ | See the README file for a full license statement. |
+ | |
+ +-----------------------------------------------------------------------+
+
+ For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-attachment_reminder/
+*/
+$messages['forgotattachment'] = "Disonjet ho peus stagan er restr ?";
+$messages['reminderoption'] = "Adgalv war ar pezhiou stag disonjet";
+$messages['keywords'] = "pezh stag, restr, stagan, aman staget, stagit, ouzhpenan, CV, lizher youl";
diff --git a/plugins/attachment_reminder/localization/es_AR.inc b/plugins/attachment_reminder/localization/es_AR.inc
index c3b4aaa02..2a7418348 100644
--- a/plugins/attachment_reminder/localization/es_AR.inc
+++ b/plugins/attachment_reminder/localization/es_AR.inc
@@ -15,6 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-attachment_reminder/
*/
-$messages['forgotattachment'] = "";
-$messages['reminderoption'] = "";
-$messages['keywords'] = "";
+$messages['forgotattachment'] = "Has olvidado adjuntar un archivo?";
+$messages['reminderoption'] = "Recordar sobre archivos adjuntos olvidados";
+$messages['keywords'] = "adjunto,archivo,adjuntar,adjuntado,adjuntando,";
diff --git a/plugins/attachment_reminder/localization/id_ID.inc b/plugins/attachment_reminder/localization/id_ID.inc
index 1f0b0bb7a..e2a606aa2 100644
--- a/plugins/attachment_reminder/localization/id_ID.inc
+++ b/plugins/attachment_reminder/localization/id_ID.inc
@@ -15,6 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-attachment_reminder/
*/
-$messages['forgotattachment'] = "Apakah anda lupa menambahkan attachment?";
-$messages['reminderoption'] = "Pengingat attachment yang terlupakan";
+$messages['forgotattachment'] = "Apakah anda lupa melampirkan sebuah file?";
+$messages['reminderoption'] = "Ingatkan tentang lampiran yang terlupakan";
$messages['keywords'] = "attachment,file,attach,attached,attaching,enclosed,CV,cover letter";
diff --git a/plugins/attachment_reminder/localization/ko_KR.inc b/plugins/attachment_reminder/localization/ko_KR.inc
index c80dcc4c8..58391a886 100644
--- a/plugins/attachment_reminder/localization/ko_KR.inc
+++ b/plugins/attachment_reminder/localization/ko_KR.inc
@@ -16,5 +16,5 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-attachment_reminder/
*/
$messages['forgotattachment'] = "파일을 첨부하는 것을 잊으셨습니까?";
-$messages['reminderoption'] = "잊었던 첨부파일에 대해 알리기";
+$messages['reminderoption'] = "잊었던 첨부파일 추가에 대해 알림";
$messages['keywords'] = "attachment,file,attach,attached,attaching,enclosed,CV,cover letter";
diff --git a/plugins/attachment_reminder/localization/ml_IN.inc b/plugins/attachment_reminder/localization/ml_IN.inc
index c3b4aaa02..3fcae2dc5 100644
--- a/plugins/attachment_reminder/localization/ml_IN.inc
+++ b/plugins/attachment_reminder/localization/ml_IN.inc
@@ -15,6 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-attachment_reminder/
*/
-$messages['forgotattachment'] = "";
-$messages['reminderoption'] = "";
+$messages['forgotattachment'] = "താങ്കൾ ഒരു ഫയൽ ചേർക്കാൻ മറന്നുപോയി";
+$messages['reminderoption'] = "ചേർക്കാൻ മറന്നുപോയ ഫയലുകളെ പറ്റി ഓർമ്മപ്പെടുത്തുക";
$messages['keywords'] = "";
diff --git a/plugins/emoticons/emoticons.php b/plugins/emoticons/emoticons.php
index c986686e3..187e83827 100644
--- a/plugins/emoticons/emoticons.php
+++ b/plugins/emoticons/emoticons.php
@@ -71,8 +71,8 @@ class emoticons extends rcube_plugin
}
private function img_tag($ico, $title)
- {
- $path = './program/js/tiny_mce/plugins/emotions/img/';
+ {
+ $path = './program/js/tinymce/plugins/emoticons/img/';
return html::img(array('src' => $path.$ico, 'title' => $title));
}
}
diff --git a/plugins/help/localization/hu_HU.inc b/plugins/help/localization/hu_HU.inc
index d285e670b..b41456db6 100644
--- a/plugins/help/localization/hu_HU.inc
+++ b/plugins/help/localization/hu_HU.inc
@@ -15,7 +15,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-help/
*/
-$labels['help'] = 'Segítség';
+$labels['help'] = 'Súgó';
$labels['about'] = 'Névjegy';
-$labels['license'] = 'Licenc';
+$labels['license'] = 'Licensz';
?>
diff --git a/plugins/help/localization/ml_IN.inc b/plugins/help/localization/ml_IN.inc
new file mode 100644
index 000000000..30ae66f68
--- /dev/null
+++ b/plugins/help/localization/ml_IN.inc
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | plugins/help/localization/<lang>.inc |
+ | |
+ | Localization file of the Roundcube Webmail Help plugin |
+ | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | |
+ | Licensed under the GNU General Public License version 3 or |
+ | any later version with exceptions for skins & plugins. |
+ | See the README file for a full license statement. |
+ | |
+ +-----------------------------------------------------------------------+
+
+ For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-help/
+*/
+$labels['help'] = 'സഹായം';
+$labels['about'] = 'വിവരം';
+$labels['license'] = 'അനുമതി';
+?>
diff --git a/plugins/help/skins/classic/help.css b/plugins/help/skins/classic/help.css
index c45b8f0b0..0c296b128 100644
--- a/plugins/help/skins/classic/help.css
+++ b/plugins/help/skins/classic/help.css
@@ -13,7 +13,7 @@
border-bottom: 0;
}
-.closelink {
+.helpwin .closelink {
position: absolute;
top: 20px;
right: 20px;
diff --git a/plugins/help/skins/classic/templates/help.html b/plugins/help/skins/classic/templates/help.html
index 3d5b22869..bb20c51e3 100644
--- a/plugins/help/skins/classic/templates/help.html
+++ b/plugins/help/skins/classic/templates/help.html
@@ -16,11 +16,11 @@ function help_init_settings_tabs()
</script>
</head>
<roundcube:if condition="env:extwin" />
-<body class="extwin">
+<body class="extwin helpwin">
<roundcube:object name="message" id="message" />
<roundcube:button name="close" type="link" label="close" class="closelink" onclick="self.close()" />
<roundcube:else />
-<body>
+<body class="helpwin">
<roundcube:include file="/includes/taskbar.html" />
<roundcube:include file="/includes/header.html" />
<roundcube:endif />
diff --git a/plugins/hide_blockquote/hide_blockquote.js b/plugins/hide_blockquote/hide_blockquote.js
index 2d28076a1..964cc07a3 100644
--- a/plugins/hide_blockquote/hide_blockquote.js
+++ b/plugins/hide_blockquote/hide_blockquote.js
@@ -25,7 +25,7 @@ function hide_blockquote()
if (limit <= 0)
return;
- $('pre > blockquote', $('#messagebody')).each(function() {
+ $('div.message-part div.pre > blockquote', $('#messagebody')).each(function() {
var div, link, q = $(this),
text = $.trim(q.text()),
res = text.split(/\n/);
diff --git a/plugins/hide_blockquote/localization/ast.inc b/plugins/hide_blockquote/localization/ast.inc
new file mode 100644
index 000000000..f2f17c492
--- /dev/null
+++ b/plugins/hide_blockquote/localization/ast.inc
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | plugins/hide_blockquote/localization/<lang>.inc |
+ | |
+ | Localization file of the Roundcube Webmail Hide-Blockquote plugin |
+ | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | |
+ | Licensed under the GNU General Public License version 3 or |
+ | any later version with exceptions for skins & plugins. |
+ | See the README file for a full license statement. |
+ | |
+ +-----------------------------------------------------------------------+
+
+ For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-hide_blockquote/
+*/
+$labels['hide'] = 'Anubrir';
+$labels['show'] = 'Amosar';
+$labels['quotelimit'] = 'Anubrir la citación cuando la cuenta de llinies seya mayor de';
+?>
diff --git a/plugins/password/localization/ku.inc b/plugins/hide_blockquote/localization/br.inc
index 544626846..8a729c240 100644
--- a/plugins/password/localization/ku.inc
+++ b/plugins/hide_blockquote/localization/br.inc
@@ -2,9 +2,9 @@
/*
+-----------------------------------------------------------------------+
- | plugins/password/localization/<lang>.inc |
+ | plugins/hide_blockquote/localization/<lang>.inc |
| |
- | Localization file of the Roundcube Webmail Password plugin |
+ | Localization file of the Roundcube Webmail Hide-Blockquote plugin |
| Copyright (C) 2012-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
@@ -13,7 +13,8 @@
| |
+-----------------------------------------------------------------------+
- For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
+ For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-hide_blockquote/
*/
-$labels['changepasswd'] = 'گۆڕینی ووشەی نهێنی';
+$labels['hide'] = 'Kuzhat';
+$labels['show'] = 'Diskouez';
?>
diff --git a/plugins/hide_blockquote/localization/ko_KR.inc b/plugins/hide_blockquote/localization/ko_KR.inc
index e26d06f7f..f1e5b1b10 100644
--- a/plugins/hide_blockquote/localization/ko_KR.inc
+++ b/plugins/hide_blockquote/localization/ko_KR.inc
@@ -16,6 +16,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-hide_blockquote/
*/
$labels['hide'] = '숨기기';
-$labels['show'] = '보이기';
-$labels['quotelimit'] = '라인 개수가 정해진 개수보다 클 때 인용구 감추기';
+$labels['show'] = '표시';
+$labels['quotelimit'] = '행 개수가 다음보다 많을 때 인용구를 숨김:';
?>
diff --git a/plugins/hide_blockquote/localization/ml_IN.inc b/plugins/hide_blockquote/localization/ml_IN.inc
new file mode 100644
index 000000000..5e2b55288
--- /dev/null
+++ b/plugins/hide_blockquote/localization/ml_IN.inc
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | plugins/hide_blockquote/localization/<lang>.inc |
+ | |
+ | Localization file of the Roundcube Webmail Hide-Blockquote plugin |
+ | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | |
+ | Licensed under the GNU General Public License version 3 or |
+ | any later version with exceptions for skins & plugins. |
+ | See the README file for a full license statement. |
+ | |
+ +-----------------------------------------------------------------------+
+
+ For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-hide_blockquote/
+*/
+$labels['hide'] = 'മറയ്ക്കുക';
+$labels['show'] = 'പ്രദർശിപ്പിക്കുക';
+$labels['quotelimit'] = 'ഇതിലും കൂടുതലാണ് വരികളുടെ എണ്ണമെങ്കിൽ അവലംബം മറയ്ക്കുക';
+?>
diff --git a/plugins/jqueryui/composer.json b/plugins/jqueryui/composer.json
index ba8c46b8c..d52e57c67 100644
--- a/plugins/jqueryui/composer.json
+++ b/plugins/jqueryui/composer.json
@@ -3,7 +3,7 @@
"type": "roundcube-plugin",
"description": "Plugin adds the complete jQuery-UI library including the smoothness theme to Roundcube. This allows other plugins to use jQuery-UI without having to load their own version. The benefit of using one central jQuery-UI is that we wont run into problems of conflicting jQuery libraries being loaded. All plugins that want to use jQuery-UI should use this plugin as a requirement.",
"license": "GNU GPLv3+",
- "version": "1.9.1",
+ "version": "1.10.4",
"authors": [
{
"name": "Thomas Bruederli",
diff --git a/plugins/jqueryui/jqueryui.php b/plugins/jqueryui/jqueryui.php
index 601e16196..2dfa8add1 100644
--- a/plugins/jqueryui/jqueryui.php
+++ b/plugins/jqueryui/jqueryui.php
@@ -5,7 +5,7 @@
*
* Provide the jQuery UI library with according themes.
*
- * @version 1.9.2
+ * @version 1.10.4
* @author Cor Bosman <roundcube@wa.ter.net>
* @author Thomas Bruederli <roundcube@gmail.com>
* @license GNU GPLv3+
@@ -13,32 +13,31 @@
class jqueryui extends rcube_plugin
{
public $noajax = true;
+ public $version = '1.10.4';
private static $features = array();
private static $ui_theme;
public function init()
{
- $version = '1.9.2';
-
$rcmail = rcmail::get_instance();
$this->load_config();
// include UI scripts
- $this->include_script("js/jquery-ui-$version.custom.min.js");
+ $this->include_script("js/jquery-ui-$this->version.custom.min.js");
// include UI stylesheet
$skin = $rcmail->config->get('skin');
$ui_map = $rcmail->config->get('jquery_ui_skin_map', array());
- $ui_theme = $ui_map[$skin] ? $ui_map[$skin] : $skin;
+ $ui_theme = $ui_map[$skin] ?: $skin;
self::$ui_theme = $ui_theme;
- if (file_exists($this->home . "/themes/$ui_theme/jquery-ui-$version.custom.css")) {
- $this->include_stylesheet("themes/$ui_theme/jquery-ui-$version.custom.css");
+ if (file_exists($this->home . "/themes/$ui_theme/jquery-ui-$this->version.custom.css")) {
+ $this->include_stylesheet("themes/$ui_theme/jquery-ui-$this->version.custom.css");
}
else {
- $this->include_stylesheet("themes/larry/jquery-ui-$version.custom.css");
+ $this->include_stylesheet("themes/larry/jquery-ui-$this->version.custom.css");
}
if ($ui_theme == 'larry') {
diff --git a/plugins/jqueryui/js/jquery-ui-1.10.4.custom.min.js b/plugins/jqueryui/js/jquery-ui-1.10.4.custom.min.js
new file mode 100755
index 000000000..ea4edecb3
--- /dev/null
+++ b/plugins/jqueryui/js/jquery-ui-1.10.4.custom.min.js
@@ -0,0 +1,229 @@
+/*! jQuery UI - v1.10.4 - 2014-06-15
+* http://jqueryui.com
+*
+* @licstart The following is the entire license notice for the
+* JavaScript code in this page.
+*
+* Copyright 2014 jQuery Foundation and other contributors
+*
+* Licensed under the MIT licenses
+*
+* Permission is hereby granted, free of charge, to any person obtaining
+* a copy of this software and associated documentation files (the
+* "Software"), to deal in the Software without restriction, including
+* without limitation the rights to use, copy, modify, merge, publish,
+* distribute, sublicense, and/or sell copies of the Software, and to
+* permit persons to whom the Software is furnished to do so, subject to
+* the following conditions:
+*
+* The above copyright notice and this permission notice shall be
+* included in all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*
+* @licend The above is the entire license notice
+* for the JavaScript code in this page.
+*
+* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.position.js, jquery.ui.draggable.js, jquery.ui.droppable.js, jquery.ui.resizable.js, jquery.ui.selectable.js, jquery.ui.sortable.js, jquery.ui.accordion.js, jquery.ui.autocomplete.js, jquery.ui.button.js, jquery.ui.datepicker.js, jquery.ui.dialog.js, jquery.ui.menu.js, jquery.ui.progressbar.js, jquery.ui.slider.js, jquery.ui.spinner.js, jquery.ui.tabs.js, jquery.ui.tooltip.js, jquery.ui.effect.js, jquery.ui.effect-blind.js, jquery.ui.effect-bounce.js, jquery.ui.effect-clip.js, jquery.ui.effect-drop.js, jquery.ui.effect-explode.js, jquery.ui.effect-fade.js, jquery.ui.effect-fold.js, jquery.ui.effect-highlight.js, jquery.ui.effect-pulsate.js, jquery.ui.effect-scale.js, jquery.ui.effect-shake.js, jquery.ui.effect-slide.js, jquery.ui.effect-transfer.js
+*/
+
+(function(e,t){function i(t,i){var s,a,o,r=t.nodeName.toLowerCase();return"area"===r?(s=t.parentNode,a=s.name,t.href&&a&&"map"===s.nodeName.toLowerCase()?(o=e("img[usemap=#"+a+"]")[0],!!o&&n(o)):!1):(/input|select|textarea|button|object/.test(r)?!t.disabled:"a"===r?t.href||i:i)&&n(t)}function n(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return"hidden"===e.css(this,"visibility")}).length}var s=0,a=/^ui-id-\d+$/;e.ui=e.ui||{},e.extend(e.ui,{version:"1.10.4",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({focus:function(t){return function(i,n){return"number"==typeof i?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),n&&n.call(t)},i)}):t.apply(this,arguments)}}(e.fn.focus),scrollParent:function(){var t;return t=e.ui.ie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(e.css(this,"position"))&&/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0),/fixed/.test(this.css("position"))||!t.length?e(document):t},zIndex:function(i){if(i!==t)return this.css("zIndex",i);if(this.length)for(var n,s,a=e(this[0]);a.length&&a[0]!==document;){if(n=a.css("position"),("absolute"===n||"relative"===n||"fixed"===n)&&(s=parseInt(a.css("zIndex"),10),!isNaN(s)&&0!==s))return s;a=a.parent()}return 0},uniqueId:function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++s)})},removeUniqueId:function(){return this.each(function(){a.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(i){return!!e.data(i,t)}}):function(t,i,n){return!!e.data(t,n[3])},focusable:function(t){return i(t,!isNaN(e.attr(t,"tabindex")))},tabbable:function(t){var n=e.attr(t,"tabindex"),s=isNaN(n);return(s||n>=0)&&i(t,!s)}}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(i,n){function s(t,i,n,s){return e.each(a,function(){i-=parseFloat(e.css(t,"padding"+this))||0,n&&(i-=parseFloat(e.css(t,"border"+this+"Width"))||0),s&&(i-=parseFloat(e.css(t,"margin"+this))||0)}),i}var a="Width"===n?["Left","Right"]:["Top","Bottom"],o=n.toLowerCase(),r={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+n]=function(i){return i===t?r["inner"+n].call(this):this.each(function(){e(this).css(o,s(this,i)+"px")})},e.fn["outer"+n]=function(t,i){return"number"!=typeof t?r["outer"+n].call(this,t):this.each(function(){e(this).css(o,s(this,t,!0,i)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.support.selectstart="onselectstart"in document.createElement("div"),e.fn.extend({disableSelection:function(){return this.bind((e.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),e.extend(e.ui,{plugin:{add:function(t,i,n){var s,a=e.ui[t].prototype;for(s in n)a.plugins[s]=a.plugins[s]||[],a.plugins[s].push([i,n[s]])},call:function(e,t,i){var n,s=e.plugins[t];if(s&&e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType)for(n=0;s.length>n;n++)e.options[s[n][0]]&&s[n][1].apply(e.element,i)}},hasScroll:function(t,i){if("hidden"===e(t).css("overflow"))return!1;var n=i&&"left"===i?"scrollLeft":"scrollTop",s=!1;return t[n]>0?!0:(t[n]=1,s=t[n]>0,t[n]=0,s)}})})(jQuery);(function(t,e){var i=0,s=Array.prototype.slice,n=t.cleanData;t.cleanData=function(e){for(var i,s=0;null!=(i=e[s]);s++)try{t(i).triggerHandler("remove")}catch(a){}n(e)},t.widget=function(i,s,n){var a,o,r,h,l={},u=i.split(".")[0];i=i.split(".")[1],a=u+"-"+i,n||(n=s,s=t.Widget),t.expr[":"][a.toLowerCase()]=function(e){return!!t.data(e,a)},t[u]=t[u]||{},o=t[u][i],r=t[u][i]=function(t,i){return this._createWidget?(arguments.length&&this._createWidget(t,i),e):new r(t,i)},t.extend(r,o,{version:n.version,_proto:t.extend({},n),_childConstructors:[]}),h=new s,h.options=t.widget.extend({},h.options),t.each(n,function(i,n){return t.isFunction(n)?(l[i]=function(){var t=function(){return s.prototype[i].apply(this,arguments)},e=function(t){return s.prototype[i].apply(this,t)};return function(){var i,s=this._super,a=this._superApply;return this._super=t,this._superApply=e,i=n.apply(this,arguments),this._super=s,this._superApply=a,i}}(),e):(l[i]=n,e)}),r.prototype=t.widget.extend(h,{widgetEventPrefix:o?h.widgetEventPrefix||i:i},l,{constructor:r,namespace:u,widgetName:i,widgetFullName:a}),o?(t.each(o._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,r,i._proto)}),delete o._childConstructors):s._childConstructors.push(r),t.widget.bridge(i,r)},t.widget.extend=function(i){for(var n,a,o=s.call(arguments,1),r=0,h=o.length;h>r;r++)for(n in o[r])a=o[r][n],o[r].hasOwnProperty(n)&&a!==e&&(i[n]=t.isPlainObject(a)?t.isPlainObject(i[n])?t.widget.extend({},i[n],a):t.widget.extend({},a):a);return i},t.widget.bridge=function(i,n){var a=n.prototype.widgetFullName||i;t.fn[i]=function(o){var r="string"==typeof o,h=s.call(arguments,1),l=this;return o=!r&&h.length?t.widget.extend.apply(null,[o].concat(h)):o,r?this.each(function(){var s,n=t.data(this,a);return n?t.isFunction(n[o])&&"_"!==o.charAt(0)?(s=n[o].apply(n,h),s!==n&&s!==e?(l=s&&s.jquery?l.pushStack(s.get()):s,!1):e):t.error("no such method '"+o+"' for "+i+" widget instance"):t.error("cannot call methods on "+i+" prior to initialization; "+"attempted to call method '"+o+"'")}):this.each(function(){var e=t.data(this,a);e?e.option(o||{})._init():t.data(this,a,new n(o,this))}),l}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this.bindings=t(),this.hoverable=t(),this.focusable=t(),s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:t.noop,_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(t.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:t.noop,widget:function(){return this.element},option:function(i,s){var n,a,o,r=i;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof i)if(r={},n=i.split("."),i=n.shift(),n.length){for(a=r[i]=t.widget.extend({},this.options[i]),o=0;n.length-1>o;o++)a[n[o]]=a[n[o]]||{},a=a[n[o]];if(i=n.pop(),1===arguments.length)return a[i]===e?null:a[i];a[i]=s}else{if(1===arguments.length)return this.options[i]===e?null:this.options[i];r[i]=s}return this._setOptions(r),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return this.options[t]=e,"disabled"===t&&(this.widget().toggleClass(this.widgetFullName+"-disabled ui-state-disabled",!!e).attr("aria-disabled",e),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_on:function(i,s,n){var a,o=this;"boolean"!=typeof i&&(n=s,s=i,i=!1),n?(s=a=t(s),this.bindings=this.bindings.add(s)):(n=s,s=this.element,a=this.widget()),t.each(n,function(n,r){function h(){return i||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof r?o[r]:r).apply(o,arguments):e}"string"!=typeof r&&(h.guid=r.guid=r.guid||h.guid||t.guid++);var l=n.match(/^(\w+)\s*(.*)$/),u=l[1]+o.eventNamespace,c=l[2];c?a.delegate(c,u,h):s.bind(u,h)})},_off:function(t,e){e=(e||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.unbind(e).undelegate(e)},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){t(e.currentTarget).addClass("ui-state-hover")},mouseleave:function(e){t(e.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){t(e.currentTarget).addClass("ui-state-focus")},focusout:function(e){t(e.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(e,i,s){var n,a,o=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],a=i.originalEvent)for(n in a)n in i||(i[n]=a[n]);return this.element.trigger(i,s),!(t.isFunction(o)&&o.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,a){"string"==typeof n&&(n={effect:n});var o,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),o=!t.isEmptyObject(n),n.complete=a,n.delay&&s.delay(n.delay),o&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,a):s.queue(function(i){t(this)[e](),a&&a.call(s[0]),i()})}})})(jQuery);(function(t){var e=!1;t(document).mouseup(function(){e=!1}),t.widget("ui.mouse",{version:"1.10.4",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.bind("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).bind("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):undefined}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&t(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(i){if(!e){this._mouseStarted&&this._mouseUp(i),this._mouseDownEvent=i;var s=this,n=1===i.which,a="string"==typeof this.options.cancel&&i.target.nodeName?t(i.target).closest(this.options.cancel).length:!1;return n&&!a&&this._mouseCapture(i)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){s.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(i)&&this._mouseDelayMet(i)&&(this._mouseStarted=this._mouseStart(i)!==!1,!this._mouseStarted)?(i.preventDefault(),!0):(!0===t.data(i.target,this.widgetName+".preventClickEvent")&&t.removeData(i.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return s._mouseMove(t)},this._mouseUpDelegate=function(t){return s._mouseUp(t)},t(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),i.preventDefault(),e=!0,!0)):!0}},_mouseMove:function(e){return t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button?this._mouseUp(e):this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){return t(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),!1},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}})})(jQuery);(function(t,e){function i(t,e,i){return[parseFloat(t[0])*(p.test(t[0])?e/100:1),parseFloat(t[1])*(p.test(t[1])?i/100:1)]}function s(e,i){return parseInt(t.css(e,i),10)||0}function n(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}t.ui=t.ui||{};var a,o=Math.max,r=Math.abs,l=Math.round,h=/left|center|right/,c=/top|center|bottom/,u=/[\+\-]\d+(\.[\d]+)?%?/,d=/^\w+/,p=/%$/,f=t.fn.position;t.position={scrollbarWidth:function(){if(a!==e)return a;var i,s,n=t("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),o=n.children()[0];return t("body").append(n),i=o.offsetWidth,n.css("overflow","scroll"),s=o.offsetWidth,i===s&&(s=n[0].clientWidth),n.remove(),a=i-s},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.width<e.element[0].scrollWidth,a="scroll"===s||"auto"===s&&e.height<e.element[0].scrollHeight;return{width:a?t.position.scrollbarWidth():0,height:n?t.position.scrollbarWidth():0}},getWithinInfo:function(e){var i=t(e||window),s=t.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType;return{element:i,isWindow:s,isDocument:n,offset:i.offset()||{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:s?i.width():i.outerWidth(),height:s?i.height():i.outerHeight()}}},t.fn.position=function(e){if(!e||!e.of)return f.apply(this,arguments);e=t.extend({},e);var a,p,g,m,v,_,b=t(e.of),y=t.position.getWithinInfo(e.within),k=t.position.getScrollInfo(y),D=(e.collision||"flip").split(" "),w={};return _=n(b),b[0].preventDefault&&(e.at="left top"),p=_.width,g=_.height,m=_.offset,v=t.extend({},m),t.each(["my","at"],function(){var t,i,s=(e[this]||"").split(" ");1===s.length&&(s=h.test(s[0])?s.concat(["center"]):c.test(s[0])?["center"].concat(s):["center","center"]),s[0]=h.test(s[0])?s[0]:"center",s[1]=c.test(s[1])?s[1]:"center",t=u.exec(s[0]),i=u.exec(s[1]),w[this]=[t?t[0]:0,i?i[0]:0],e[this]=[d.exec(s[0])[0],d.exec(s[1])[0]]}),1===D.length&&(D[1]=D[0]),"right"===e.at[0]?v.left+=p:"center"===e.at[0]&&(v.left+=p/2),"bottom"===e.at[1]?v.top+=g:"center"===e.at[1]&&(v.top+=g/2),a=i(w.at,p,g),v.left+=a[0],v.top+=a[1],this.each(function(){var n,h,c=t(this),u=c.outerWidth(),d=c.outerHeight(),f=s(this,"marginLeft"),_=s(this,"marginTop"),x=u+f+s(this,"marginRight")+k.width,C=d+_+s(this,"marginBottom")+k.height,M=t.extend({},v),T=i(w.my,c.outerWidth(),c.outerHeight());"right"===e.my[0]?M.left-=u:"center"===e.my[0]&&(M.left-=u/2),"bottom"===e.my[1]?M.top-=d:"center"===e.my[1]&&(M.top-=d/2),M.left+=T[0],M.top+=T[1],t.support.offsetFractions||(M.left=l(M.left),M.top=l(M.top)),n={marginLeft:f,marginTop:_},t.each(["left","top"],function(i,s){t.ui.position[D[i]]&&t.ui.position[D[i]][s](M,{targetWidth:p,targetHeight:g,elemWidth:u,elemHeight:d,collisionPosition:n,collisionWidth:x,collisionHeight:C,offset:[a[0]+T[0],a[1]+T[1]],my:e.my,at:e.at,within:y,elem:c})}),e.using&&(h=function(t){var i=m.left-M.left,s=i+p-u,n=m.top-M.top,a=n+g-d,l={target:{element:b,left:m.left,top:m.top,width:p,height:g},element:{element:c,left:M.left,top:M.top,width:u,height:d},horizontal:0>s?"left":i>0?"right":"center",vertical:0>a?"top":n>0?"bottom":"middle"};u>p&&p>r(i+s)&&(l.horizontal="center"),d>g&&g>r(n+a)&&(l.vertical="middle"),l.important=o(r(i),r(s))>o(r(n),r(a))?"horizontal":"vertical",e.using.call(this,t,l)}),c.offset(t.extend(M,{using:h}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,l=n-r,h=r+e.collisionWidth-a-n;e.collisionWidth>a?l>0&&0>=h?(i=t.left+l+e.collisionWidth-a-n,t.left+=l-i):t.left=h>0&&0>=l?n:l>h?n+a-e.collisionWidth:n:l>0?t.left+=l:h>0?t.left-=h:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,l=n-r,h=r+e.collisionHeight-a-n;e.collisionHeight>a?l>0&&0>=h?(i=t.top+l+e.collisionHeight-a-n,t.top+=l-i):t.top=h>0&&0>=l?n:l>h?n+a-e.collisionHeight:n:l>0?t.top+=l:h>0?t.top-=h:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,a=n.offset.left+n.scrollLeft,o=n.width,l=n.isWindow?n.scrollLeft:n.offset.left,h=t.left-e.collisionPosition.marginLeft,c=h-l,u=h+e.collisionWidth-o-l,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-o-a,(0>i||r(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-l,(s>0||u>r(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,a=n.offset.top+n.scrollTop,o=n.height,l=n.isWindow?n.scrollTop:n.offset.top,h=t.top-e.collisionPosition.marginTop,c=h-l,u=h+e.collisionHeight-o-l,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,g=-2*e.offset[1];0>c?(s=t.top+p+f+g+e.collisionHeight-o-a,t.top+p+f+g>c&&(0>s||r(c)>s)&&(t.top+=p+f+g)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-l,t.top+p+f+g>u&&(i>0||u>r(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}},function(){var e,i,s,n,a,o=document.getElementsByTagName("body")[0],r=document.createElement("div");e=document.createElement(o?"div":"body"),s={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},o&&t.extend(s,{position:"absolute",left:"-1000px",top:"-1000px"});for(a in s)e.style[a]=s[a];e.appendChild(r),i=o||document.documentElement,i.insertBefore(e,i.firstChild),r.style.cssText="position: absolute; left: 10.7432222px;",n=t(r).offset().left,t.support.offsetFractions=n>10&&11>n,e.innerHTML="",i.removeChild(e)}()})(jQuery);(function(t){t.widget("ui.draggable",t.ui.mouse,{version:"1.10.4",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"!==this.options.helper||/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative"),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._mouseInit()},_destroy:function(){this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._mouseDestroy()},_mouseCapture:function(e){var i=this.options;return this.helper||i.disabled||t(e.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(e),this.handle?(t(i.iframeFix===!0?"iframe":i.iframeFix).each(function(){t("<div class='ui-draggable-iframeFix' style='background: #fff;'></div>").css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css(t(this).offset()).appendTo("body")}),!0):!1)},_mouseStart:function(e){var i=this.options;return this.helper=this._createHelper(e),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),t.ui.ddmanager&&(t.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(),this.offsetParent=this.helper.offsetParent(),this.offsetParentCssPosition=this.offsetParent.css("position"),this.offset=this.positionAbs=this.element.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},this.offset.scroll=!1,t.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(e),this.originalPageX=e.pageX,this.originalPageY=e.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",e)===!1?(this._clear(),!1):(this._cacheHelperProportions(),t.ui.ddmanager&&!i.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this._mouseDrag(e,!0),t.ui.ddmanager&&t.ui.ddmanager.dragStart(this,e),!0)},_mouseDrag:function(e,i){if("fixed"===this.offsetParentCssPosition&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(e),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",e,s)===!1)return this._mouseUp({}),!1;this.position=s.position}return this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),!1},_mouseStop:function(e){var i=this,s=!1;return t.ui.ddmanager&&!this.options.dropBehaviour&&(s=t.ui.ddmanager.drop(this,e)),this.dropped&&(s=this.dropped,this.dropped=!1),"original"!==this.options.helper||t.contains(this.element[0].ownerDocument,this.element[0])?("invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||t.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?t(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",e)!==!1&&i._clear()}):this._trigger("stop",e)!==!1&&this._clear(),!1):!1},_mouseUp:function(e){return t("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),t.ui.ddmanager&&t.ui.ddmanager.dragStop(this,e),t.ui.mouse.prototype._mouseUp.call(this,e)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(e){return this.options.handle?!!t(e.target).closest(this.element.find(this.options.handle)).length:!0},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper)?t(i.helper.apply(this.element[0],[e])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return s.parents("body").length||s.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s[0]===this.element[0]||/(fixed|absolute)/.test(s.css("position"))||s.css("position","absolute"),s},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_getParentOffset:function(){var e=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===document.body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&t.ui.ie)&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var t=this.element.position();return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options;return n.containment?"window"===n.containment?(this.containment=[t(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,t(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,t(window).scrollLeft()+t(window).width()-this.helperProportions.width-this.margins.left,t(window).scrollTop()+(t(window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],undefined):"document"===n.containment?(this.containment=[0,0,t(document).width()-this.helperProportions.width-this.margins.left,(t(document).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],undefined):n.containment.constructor===Array?(this.containment=n.containment,undefined):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=t(n.containment),s=i[0],s&&(e="hidden"!==i.css("overflow"),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(e?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(e?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relative_container=i),undefined):(this.containment=null,undefined)},_convertPositionTo:function(e,i){i||(i=this.position);var s="absolute"===e?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent;return this.offset.scroll||(this.offset.scroll={top:n.scrollTop(),left:n.scrollLeft()}),{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():this.offset.scroll.top)*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():this.offset.scroll.left)*s}},_generatePosition:function(e){var i,s,n,a,o=this.options,r="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,l=e.pageX,h=e.pageY;return this.offset.scroll||(this.offset.scroll={top:r.scrollTop(),left:r.scrollLeft()}),this.originalPosition&&(this.containment&&(this.relative_container?(s=this.relative_container.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,e.pageX-this.offset.click.left<i[0]&&(l=i[0]+this.offset.click.left),e.pageY-this.offset.click.top<i[1]&&(h=i[1]+this.offset.click.top),e.pageX-this.offset.click.left>i[2]&&(l=i[2]+this.offset.click.left),e.pageY-this.offset.click.top>i[3]&&(h=i[3]+this.offset.click.top)),o.grid&&(n=o.grid[1]?this.originalPageY+Math.round((h-this.originalPageY)/o.grid[1])*o.grid[1]:this.originalPageY,h=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-o.grid[1]:n+o.grid[1]:n,a=o.grid[0]?this.originalPageX+Math.round((l-this.originalPageX)/o.grid[0])*o.grid[0]:this.originalPageX,l=i?a-this.offset.click.left>=i[0]||a-this.offset.click.left>i[2]?a:a-this.offset.click.left>=i[0]?a-o.grid[0]:a+o.grid[0]:a)),{top:h-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():this.offset.scroll.top),left:l-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():this.offset.scroll.left)}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1},_trigger:function(e,i,s){return s=s||this._uiHash(),t.ui.plugin.call(this,e,[i,s]),"drag"===e&&(this.positionAbs=this._convertPositionTo("absolute")),t.Widget.prototype._trigger.call(this,e,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),t.ui.plugin.add("draggable","connectToSortable",{start:function(e,i){var s=t(this).data("ui-draggable"),n=s.options,a=t.extend({},i,{item:s.element});s.sortables=[],t(n.connectToSortable).each(function(){var i=t.data(this,"ui-sortable");i&&!i.options.disabled&&(s.sortables.push({instance:i,shouldRevert:i.options.revert}),i.refreshPositions(),i._trigger("activate",e,a))})},stop:function(e,i){var s=t(this).data("ui-draggable"),n=t.extend({},i,{item:s.element});t.each(s.sortables,function(){this.instance.isOver?(this.instance.isOver=0,s.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=this.shouldRevert),this.instance._mouseStop(e),this.instance.options.helper=this.instance.options._helper,"original"===s.options.helper&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",e,n))})},drag:function(e,i){var s=t(this).data("ui-draggable"),n=this;t.each(s.sortables,function(){var a=!1,o=this;this.instance.positionAbs=s.positionAbs,this.instance.helperProportions=s.helperProportions,this.instance.offset.click=s.offset.click,this.instance._intersectsWith(this.instance.containerCache)&&(a=!0,t.each(s.sortables,function(){return this.instance.positionAbs=s.positionAbs,this.instance.helperProportions=s.helperProportions,this.instance.offset.click=s.offset.click,this!==o&&this.instance._intersectsWith(this.instance.containerCache)&&t.contains(o.instance.element[0],this.instance.element[0])&&(a=!1),a})),a?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=t(n).clone().removeAttr("id").appendTo(this.instance.element).data("ui-sortable-item",!0),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return i.helper[0]},e.target=this.instance.currentItem[0],this.instance._mouseCapture(e,!0),this.instance._mouseStart(e,!0,!0),this.instance.offset.click.top=s.offset.click.top,this.instance.offset.click.left=s.offset.click.left,this.instance.offset.parent.left-=s.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=s.offset.parent.top-this.instance.offset.parent.top,s._trigger("toSortable",e),s.dropped=this.instance.element,s.currentItem=s.element,this.instance.fromOutside=s),this.instance.currentItem&&this.instance._mouseDrag(e)):this.instance.isOver&&(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger("out",e,this.instance._uiHash(this.instance)),this.instance._mouseStop(e,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),s._trigger("fromSortable",e),s.dropped=!1)})}}),t.ui.plugin.add("draggable","cursor",{start:function(){var e=t("body"),i=t(this).data("ui-draggable").options;e.css("cursor")&&(i._cursor=e.css("cursor")),e.css("cursor",i.cursor)},stop:function(){var e=t(this).data("ui-draggable").options;e._cursor&&t("body").css("cursor",e._cursor)}}),t.ui.plugin.add("draggable","opacity",{start:function(e,i){var s=t(i.helper),n=t(this).data("ui-draggable").options;s.css("opacity")&&(n._opacity=s.css("opacity")),s.css("opacity",n.opacity)},stop:function(e,i){var s=t(this).data("ui-draggable").options;s._opacity&&t(i.helper).css("opacity",s._opacity)}}),t.ui.plugin.add("draggable","scroll",{start:function(){var e=t(this).data("ui-draggable");e.scrollParent[0]!==document&&"HTML"!==e.scrollParent[0].tagName&&(e.overflowOffset=e.scrollParent.offset())},drag:function(e){var i=t(this).data("ui-draggable"),s=i.options,n=!1;i.scrollParent[0]!==document&&"HTML"!==i.scrollParent[0].tagName?(s.axis&&"x"===s.axis||(i.overflowOffset.top+i.scrollParent[0].offsetHeight-e.pageY<s.scrollSensitivity?i.scrollParent[0].scrollTop=n=i.scrollParent[0].scrollTop+s.scrollSpeed:e.pageY-i.overflowOffset.top<s.scrollSensitivity&&(i.scrollParent[0].scrollTop=n=i.scrollParent[0].scrollTop-s.scrollSpeed)),s.axis&&"y"===s.axis||(i.overflowOffset.left+i.scrollParent[0].offsetWidth-e.pageX<s.scrollSensitivity?i.scrollParent[0].scrollLeft=n=i.scrollParent[0].scrollLeft+s.scrollSpeed:e.pageX-i.overflowOffset.left<s.scrollSensitivity&&(i.scrollParent[0].scrollLeft=n=i.scrollParent[0].scrollLeft-s.scrollSpeed))):(s.axis&&"x"===s.axis||(e.pageY-t(document).scrollTop()<s.scrollSensitivity?n=t(document).scrollTop(t(document).scrollTop()-s.scrollSpeed):t(window).height()-(e.pageY-t(document).scrollTop())<s.scrollSensitivity&&(n=t(document).scrollTop(t(document).scrollTop()+s.scrollSpeed))),s.axis&&"y"===s.axis||(e.pageX-t(document).scrollLeft()<s.scrollSensitivity?n=t(document).scrollLeft(t(document).scrollLeft()-s.scrollSpeed):t(window).width()-(e.pageX-t(document).scrollLeft())<s.scrollSensitivity&&(n=t(document).scrollLeft(t(document).scrollLeft()+s.scrollSpeed)))),n!==!1&&t.ui.ddmanager&&!s.dropBehaviour&&t.ui.ddmanager.prepareOffsets(i,e)}}),t.ui.plugin.add("draggable","snap",{start:function(){var e=t(this).data("ui-draggable"),i=e.options;e.snapElements=[],t(i.snap.constructor!==String?i.snap.items||":data(ui-draggable)":i.snap).each(function(){var i=t(this),s=i.offset();this!==e.element[0]&&e.snapElements.push({item:this,width:i.outerWidth(),height:i.outerHeight(),top:s.top,left:s.left})})},drag:function(e,i){var s,n,a,o,r,l,h,c,u,d,p=t(this).data("ui-draggable"),g=p.options,f=g.snapTolerance,m=i.offset.left,_=m+p.helperProportions.width,v=i.offset.top,b=v+p.helperProportions.height;for(u=p.snapElements.length-1;u>=0;u--)r=p.snapElements[u].left,l=r+p.snapElements[u].width,h=p.snapElements[u].top,c=h+p.snapElements[u].height,r-f>_||m>l+f||h-f>b||v>c+f||!t.contains(p.snapElements[u].item.ownerDocument,p.snapElements[u].item)?(p.snapElements[u].snapping&&p.options.snap.release&&p.options.snap.release.call(p.element,e,t.extend(p._uiHash(),{snapItem:p.snapElements[u].item})),p.snapElements[u].snapping=!1):("inner"!==g.snapMode&&(s=f>=Math.abs(h-b),n=f>=Math.abs(c-v),a=f>=Math.abs(r-_),o=f>=Math.abs(l-m),s&&(i.position.top=p._convertPositionTo("relative",{top:h-p.helperProportions.height,left:0}).top-p.margins.top),n&&(i.position.top=p._convertPositionTo("relative",{top:c,left:0}).top-p.margins.top),a&&(i.position.left=p._convertPositionTo("relative",{top:0,left:r-p.helperProportions.width}).left-p.margins.left),o&&(i.position.left=p._convertPositionTo("relative",{top:0,left:l}).left-p.margins.left)),d=s||n||a||o,"outer"!==g.snapMode&&(s=f>=Math.abs(h-v),n=f>=Math.abs(c-b),a=f>=Math.abs(r-m),o=f>=Math.abs(l-_),s&&(i.position.top=p._convertPositionTo("relative",{top:h,left:0}).top-p.margins.top),n&&(i.position.top=p._convertPositionTo("relative",{top:c-p.helperProportions.height,left:0}).top-p.margins.top),a&&(i.position.left=p._convertPositionTo("relative",{top:0,left:r}).left-p.margins.left),o&&(i.position.left=p._convertPositionTo("relative",{top:0,left:l-p.helperProportions.width}).left-p.margins.left)),!p.snapElements[u].snapping&&(s||n||a||o||d)&&p.options.snap.snap&&p.options.snap.snap.call(p.element,e,t.extend(p._uiHash(),{snapItem:p.snapElements[u].item})),p.snapElements[u].snapping=s||n||a||o||d)}}),t.ui.plugin.add("draggable","stack",{start:function(){var e,i=this.data("ui-draggable").options,s=t.makeArray(t(i.stack)).sort(function(e,i){return(parseInt(t(e).css("zIndex"),10)||0)-(parseInt(t(i).css("zIndex"),10)||0)});s.length&&(e=parseInt(t(s[0]).css("zIndex"),10)||0,t(s).each(function(i){t(this).css("zIndex",e+i)}),this.css("zIndex",e+s.length))}}),t.ui.plugin.add("draggable","zIndex",{start:function(e,i){var s=t(i.helper),n=t(this).data("ui-draggable").options;s.css("zIndex")&&(n._zIndex=s.css("zIndex")),s.css("zIndex",n.zIndex)},stop:function(e,i){var s=t(this).data("ui-draggable").options;s._zIndex&&t(i.helper).css("zIndex",s._zIndex)}})})(jQuery);(function(t){function e(t,e,i){return t>e&&e+i>t}t.widget("ui.droppable",{version:"1.10.4",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var e,i=this.options,s=i.accept;this.isover=!1,this.isout=!0,this.accept=t.isFunction(s)?s:function(t){return t.is(s)},this.proportions=function(){return arguments.length?(e=arguments[0],undefined):e?e:e={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},t.ui.ddmanager.droppables[i.scope]=t.ui.ddmanager.droppables[i.scope]||[],t.ui.ddmanager.droppables[i.scope].push(this),i.addClasses&&this.element.addClass("ui-droppable")},_destroy:function(){for(var e=0,i=t.ui.ddmanager.droppables[this.options.scope];i.length>e;e++)i[e]===this&&i.splice(e,1);this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(e,i){"accept"===e&&(this.accept=t.isFunction(i)?i:function(t){return t.is(i)}),t.Widget.prototype._setOption.apply(this,arguments)},_activate:function(e){var i=t.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),i&&this._trigger("activate",e,this.ui(i))},_deactivate:function(e){var i=t.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),i&&this._trigger("deactivate",e,this.ui(i))},_over:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",e,this.ui(i)))},_out:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",e,this.ui(i)))},_drop:function(e,i){var s=i||t.ui.ddmanager.current,n=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var e=t.data(this,"ui-droppable");return e.options.greedy&&!e.options.disabled&&e.options.scope===s.options.scope&&e.accept.call(e.element[0],s.currentItem||s.element)&&t.ui.intersect(s,t.extend(e,{offset:e.element.offset()}),e.options.tolerance)?(n=!0,!1):undefined}),n?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",e,this.ui(s)),this.element):!1):!1},ui:function(t){return{draggable:t.currentItem||t.element,helper:t.helper,position:t.position,offset:t.positionAbs}}}),t.ui.intersect=function(t,i,s){if(!i.offset)return!1;var n,a,o=(t.positionAbs||t.position.absolute).left,r=(t.positionAbs||t.position.absolute).top,l=o+t.helperProportions.width,h=r+t.helperProportions.height,c=i.offset.left,u=i.offset.top,d=c+i.proportions().width,p=u+i.proportions().height;switch(s){case"fit":return o>=c&&d>=l&&r>=u&&p>=h;case"intersect":return o+t.helperProportions.width/2>c&&d>l-t.helperProportions.width/2&&r+t.helperProportions.height/2>u&&p>h-t.helperProportions.height/2;case"pointer":return n=(t.positionAbs||t.position.absolute).left+(t.clickOffset||t.offset.click).left,a=(t.positionAbs||t.position.absolute).top+(t.clickOffset||t.offset.click).top,e(a,u,i.proportions().height)&&e(n,c,i.proportions().width);case"touch":return(r>=u&&p>=r||h>=u&&p>=h||u>r&&h>p)&&(o>=c&&d>=o||l>=c&&d>=l||c>o&&l>d);default:return!1}},t.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(e,i){var s,n,a=t.ui.ddmanager.droppables[e.options.scope]||[],o=i?i.type:null,r=(e.currentItem||e.element).find(":data(ui-droppable)").addBack();t:for(s=0;a.length>s;s++)if(!(a[s].options.disabled||e&&!a[s].accept.call(a[s].element[0],e.currentItem||e.element))){for(n=0;r.length>n;n++)if(r[n]===a[s].element[0]){a[s].proportions().height=0;continue t}a[s].visible="none"!==a[s].element.css("display"),a[s].visible&&("mousedown"===o&&a[s]._activate.call(a[s],i),a[s].offset=a[s].element.offset(),a[s].proportions({width:a[s].element[0].offsetWidth,height:a[s].element[0].offsetHeight}))}},drop:function(e,i){var s=!1;return t.each((t.ui.ddmanager.droppables[e.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&t.ui.intersect(e,this,this.options.tolerance)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(e,i){e.element.parentsUntil("body").bind("scroll.droppable",function(){e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)})},drag:function(e,i){e.options.refreshPositions&&t.ui.ddmanager.prepareOffsets(e,i),t.each(t.ui.ddmanager.droppables[e.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,a,o=t.ui.intersect(e,this,this.options.tolerance),r=!o&&this.isover?"isout":o&&!this.isover?"isover":null;r&&(this.options.greedy&&(n=this.options.scope,a=this.element.parents(":data(ui-droppable)").filter(function(){return t.data(this,"ui-droppable").options.scope===n}),a.length&&(s=t.data(a[0],"ui-droppable"),s.greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(e,i){e.element.parentsUntil("body").unbind("scroll.droppable"),e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)}}})(jQuery);(function(t){function e(t){return parseInt(t,10)||0}function i(t){return!isNaN(parseInt(t,10))}t.widget("ui.resizable",t.ui.mouse,{version:"1.10.4",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_create:function(){var e,i,s,n,a,o=this,r=this.options;if(this.element.addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!r.aspectRatio,aspectRatio:r.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:r.helper||r.ghost||r.animate?r.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(this.element.wrap(t("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.data("ui-resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=r.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),e=this.handles.split(","),this.handles={},i=0;e.length>i;i++)s=t.trim(e[i]),a="ui-resizable-"+s,n=t("<div class='ui-resizable-handle "+a+"'></div>"),n.css({zIndex:r.zIndex}),"se"===s&&n.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[s]=".ui-resizable-"+s,this.element.append(n);this._renderAxis=function(e){var i,s,n,a;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String&&(this.handles[i]=t(this.handles[i],this.element).show()),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)&&(s=t(this.handles[i],this.element),a=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,a),this._proportionallyResize()),t(this.handles[i]).length},this._renderAxis(this.element),this._handles=t(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){o.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),o.axis=n&&n[1]?n[1]:"se")}),r.autoHide&&(this._handles.hide(),t(this.element).addClass("ui-resizable-autohide").mouseenter(function(){r.disabled||(t(this).removeClass("ui-resizable-autohide"),o._handles.show())}).mouseleave(function(){r.disabled||o.resizing||(t(this).addClass("ui-resizable-autohide"),o._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(i){var s,n,a,o=this.options,r=this.element.position(),l=this.element;return this.resizing=!0,/absolute/.test(l.css("position"))?l.css({position:"absolute",top:l.css("top"),left:l.css("left")}):l.is(".ui-draggable")&&l.css({position:"absolute",top:r.top,left:r.left}),this._renderProxy(),s=e(this.helper.css("left")),n=e(this.helper.css("top")),o.containment&&(s+=t(o.containment).scrollLeft()||0,n+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:s,top:n},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:l.width(),height:l.height()},this.originalSize=this._helper?{width:l.outerWidth(),height:l.outerHeight()}:{width:l.width(),height:l.height()},this.originalPosition={left:s,top:n},this.sizeDiff={width:l.outerWidth()-l.width(),height:l.outerHeight()-l.height()},this.originalMousePosition={left:i.pageX,top:i.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,a=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===a?this.axis+"-resize":a),l.addClass("ui-resizable-resizing"),this._propagate("start",i),!0},_mouseDrag:function(e){var i,s=this.helper,n={},a=this.originalMousePosition,o=this.axis,r=this.position.top,l=this.position.left,h=this.size.width,u=this.size.height,c=e.pageX-a.left||0,d=e.pageY-a.top||0,p=this._change[o];return p?(i=p.apply(this,[e,c,d]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),this.position.top!==r&&(n.top=this.position.top+"px"),this.position.left!==l&&(n.left=this.position.left+"px"),this.size.width!==h&&(n.width=this.size.width+"px"),this.size.height!==u&&(n.height=this.size.height+"px"),s.css(n),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(n)||this._trigger("resize",e,this.ui()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,a,o,r,l,h=this.options,u=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&t.ui.hasScroll(i[0],"left")?0:u.sizeDiff.height,a=s?0:u.sizeDiff.width,o={width:u.helper.width()-a,height:u.helper.height()-n},r=parseInt(u.element.css("left"),10)+(u.position.left-u.originalPosition.left)||null,l=parseInt(u.element.css("top"),10)+(u.position.top-u.originalPosition.top)||null,h.animate||this.element.css(t.extend(o,{top:l,left:r})),u.helper.height(u.size.height),u.helper.width(u.size.width),this._helper&&!h.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updateVirtualBoundaries:function(t){var e,s,n,a,o,r=this.options;o={minWidth:i(r.minWidth)?r.minWidth:0,maxWidth:i(r.maxWidth)?r.maxWidth:1/0,minHeight:i(r.minHeight)?r.minHeight:0,maxHeight:i(r.maxHeight)?r.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,n=o.minWidth/this.aspectRatio,s=o.maxHeight*this.aspectRatio,a=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),n>o.minHeight&&(o.minHeight=n),o.maxWidth>s&&(o.maxWidth=s),o.maxHeight>a&&(o.maxHeight=a)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),i(t.left)&&(this.position.left=t.left),i(t.top)&&(this.position.top=t.top),i(t.height)&&(this.size.height=t.height),i(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,s=this.size,n=this.axis;return i(t.height)?t.width=t.height*this.aspectRatio:i(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===n&&(t.left=e.left+(s.width-t.width),t.top=null),"nw"===n&&(t.top=e.top+(s.height-t.height),t.left=e.left+(s.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,s=this.axis,n=i(t.width)&&e.maxWidth&&e.maxWidth<t.width,a=i(t.height)&&e.maxHeight&&e.maxHeight<t.height,o=i(t.width)&&e.minWidth&&e.minWidth>t.width,r=i(t.height)&&e.minHeight&&e.minHeight>t.height,l=this.originalPosition.left+this.originalSize.width,h=this.position.top+this.size.height,u=/sw|nw|w/.test(s),c=/nw|ne|n/.test(s);return o&&(t.width=e.minWidth),r&&(t.height=e.minHeight),n&&(t.width=e.maxWidth),a&&(t.height=e.maxHeight),o&&u&&(t.left=l-e.minWidth),n&&u&&(t.left=l-e.maxWidth),r&&c&&(t.top=h-e.minHeight),a&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_proportionallyResize:function(){if(this._proportionallyResizeElements.length){var t,e,i,s,n,a=this.helper||this.element;for(t=0;this._proportionallyResizeElements.length>t;t++){if(n=this._proportionallyResizeElements[t],!this.borderDif)for(this.borderDif=[],i=[n.css("borderTopWidth"),n.css("borderRightWidth"),n.css("borderBottomWidth"),n.css("borderLeftWidth")],s=[n.css("paddingTop"),n.css("paddingRight"),n.css("paddingBottom"),n.css("paddingLeft")],e=0;i.length>e;e++)this.borderDif[e]=(parseInt(i[e],10)||0)+(parseInt(s[e],10)||0);n.css({height:a.height()-this.borderDif[0]-this.borderDif[2]||0,width:a.width()-this.borderDif[1]-this.borderDif[3]||0})}}},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("<div style='overflow:hidden;'></div>"),this.helper.addClass(this._helper).css({width:this.element.outerWidth()-1,height:this.element.outerHeight()-1,position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).data("ui-resizable"),s=i.options,n=i._proportionallyResizeElements,a=n.length&&/textarea/i.test(n[0].nodeName),o=a&&t.ui.hasScroll(n[0],"left")?0:i.sizeDiff.height,r=a?0:i.sizeDiff.width,l={width:i.size.width-r,height:i.size.height-o},h=parseInt(i.element.css("left"),10)+(i.position.left-i.originalPosition.left)||null,u=parseInt(i.element.css("top"),10)+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(l,u&&h?{top:u,left:h}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseInt(i.element.css("width"),10),height:parseInt(i.element.css("height"),10),top:parseInt(i.element.css("top"),10),left:parseInt(i.element.css("left"),10)};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var i,s,n,a,o,r,l,h=t(this).data("ui-resizable"),u=h.options,c=h.element,d=u.containment,p=d instanceof t?d.get(0):/parent/.test(d)?c.parent().get(0):d;p&&(h.containerElement=t(p),/document/.test(d)||d===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(i=t(p),s=[],t(["Top","Right","Left","Bottom"]).each(function(t,n){s[t]=e(i.css("padding"+n))}),h.containerOffset=i.offset(),h.containerPosition=i.position(),h.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},n=h.containerOffset,a=h.containerSize.height,o=h.containerSize.width,r=t.ui.hasScroll(p,"left")?p.scrollWidth:o,l=t.ui.hasScroll(p)?p.scrollHeight:a,h.parentData={element:p,left:n.left,top:n.top,width:r,height:l}))},resize:function(e){var i,s,n,a,o=t(this).data("ui-resizable"),r=o.options,l=o.containerOffset,h=o.position,u=o._aspectRatio||e.shiftKey,c={top:0,left:0},d=o.containerElement;d[0]!==document&&/static/.test(d.css("position"))&&(c=l),h.left<(o._helper?l.left:0)&&(o.size.width=o.size.width+(o._helper?o.position.left-l.left:o.position.left-c.left),u&&(o.size.height=o.size.width/o.aspectRatio),o.position.left=r.helper?l.left:0),h.top<(o._helper?l.top:0)&&(o.size.height=o.size.height+(o._helper?o.position.top-l.top:o.position.top),u&&(o.size.width=o.size.height*o.aspectRatio),o.position.top=o._helper?l.top:0),o.offset.left=o.parentData.left+o.position.left,o.offset.top=o.parentData.top+o.position.top,i=Math.abs((o._helper?o.offset.left-c.left:o.offset.left-c.left)+o.sizeDiff.width),s=Math.abs((o._helper?o.offset.top-c.top:o.offset.top-l.top)+o.sizeDiff.height),n=o.containerElement.get(0)===o.element.parent().get(0),a=/relative|absolute/.test(o.containerElement.css("position")),n&&a&&(i-=Math.abs(o.parentData.left)),i+o.size.width>=o.parentData.width&&(o.size.width=o.parentData.width-i,u&&(o.size.height=o.size.width/o.aspectRatio)),s+o.size.height>=o.parentData.height&&(o.size.height=o.parentData.height-s,u&&(o.size.width=o.size.height*o.aspectRatio))},stop:function(){var e=t(this).data("ui-resizable"),i=e.options,s=e.containerOffset,n=e.containerPosition,a=e.containerElement,o=t(e.helper),r=o.offset(),l=o.outerWidth()-e.sizeDiff.width,h=o.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(a.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:l,height:h}),e._helper&&!i.animate&&/static/.test(a.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:l,height:h})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).data("ui-resizable"),i=e.options,s=function(e){t(e).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseInt(e.width(),10),height:parseInt(e.height(),10),left:parseInt(e.css("left"),10),top:parseInt(e.css("top"),10)})})};"object"!=typeof i.alsoResize||i.alsoResize.parentNode?s(i.alsoResize):i.alsoResize.length?(i.alsoResize=i.alsoResize[0],s(i.alsoResize)):t.each(i.alsoResize,function(t){s(t)})},resize:function(e,i){var s=t(this).data("ui-resizable"),n=s.options,a=s.originalSize,o=s.originalPosition,r={height:s.size.height-a.height||0,width:s.size.width-a.width||0,top:s.position.top-o.top||0,left:s.position.left-o.left||0},l=function(e,s){t(e).each(function(){var e=t(this),n=t(this).data("ui-resizable-alsoresize"),a={},o=s&&s.length?s:e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(n[e]||0)+(r[e]||0);i&&i>=0&&(a[e]=i||null)}),e.css(a)})};"object"!=typeof n.alsoResize||n.alsoResize.nodeType?l(n.alsoResize):t.each(n.alsoResize,function(t,e){l(t,e)})},stop:function(){t(this).removeData("resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).data("ui-resizable"),i=e.options,s=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:s.height,width:s.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof i.ghost?i.ghost:""),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).data("ui-resizable");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).data("ui-resizable");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e=t(this).data("ui-resizable"),i=e.options,s=e.size,n=e.originalSize,a=e.originalPosition,o=e.axis,r="number"==typeof i.grid?[i.grid,i.grid]:i.grid,l=r[0]||1,h=r[1]||1,u=Math.round((s.width-n.width)/l)*l,c=Math.round((s.height-n.height)/h)*h,d=n.width+u,p=n.height+c,f=i.maxWidth&&d>i.maxWidth,g=i.maxHeight&&p>i.maxHeight,m=i.minWidth&&i.minWidth>d,v=i.minHeight&&i.minHeight>p;i.grid=r,m&&(d+=l),v&&(p+=h),f&&(d-=l),g&&(p-=h),/^(se|s|e)$/.test(o)?(e.size.width=d,e.size.height=p):/^(ne)$/.test(o)?(e.size.width=d,e.size.height=p,e.position.top=a.top-c):/^(sw)$/.test(o)?(e.size.width=d,e.size.height=p,e.position.left=a.left-u):(p-h>0?(e.size.height=p,e.position.top=a.top-c):(e.size.height=h,e.position.top=a.top+n.height-h),d-l>0?(e.size.width=d,e.position.left=a.left-u):(e.size.width=l,e.position.left=a.left+n.width-l))}})})(jQuery);(function(t){t.widget("ui.selectable",t.ui.mouse,{version:"1.10.4",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var e,i=this;this.element.addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){e=t(i.options.filter,i.element[0]),e.addClass("ui-selectee"),e.each(function(){var e=t(this),i=e.offset();t.data(this,"selectable-item",{element:this,$element:e,left:i.left,top:i.top,right:i.left+e.outerWidth(),bottom:i.top+e.outerHeight(),startselected:!1,selected:e.hasClass("ui-selected"),selecting:e.hasClass("ui-selecting"),unselecting:e.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=e.addClass("ui-selectee"),this._mouseInit(),this.helper=t("<div class='ui-selectable-helper'></div>")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(e){var i=this,s=this.options;this.opos=[e.pageX,e.pageY],this.options.disabled||(this.selectees=t(s.filter,this.element[0]),this._trigger("start",e),t(s.appendTo).append(this.helper),this.helper.css({left:e.pageX,top:e.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=t.data(this,"selectable-item");s.startselected=!0,e.metaKey||e.ctrlKey||(s.$element.removeClass("ui-selected"),s.selected=!1,s.$element.addClass("ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",e,{unselecting:s.element}))}),t(e.target).parents().addBack().each(function(){var s,n=t.data(this,"selectable-item");return n?(s=!e.metaKey&&!e.ctrlKey||!n.$element.hasClass("ui-selected"),n.$element.removeClass(s?"ui-unselecting":"ui-selected").addClass(s?"ui-selecting":"ui-unselecting"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger("selecting",e,{selecting:n.element}):i._trigger("unselecting",e,{unselecting:n.element}),!1):undefined}))},_mouseDrag:function(e){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,a=this.opos[0],o=this.opos[1],r=e.pageX,l=e.pageY;return a>r&&(i=r,r=a,a=i),o>l&&(i=l,l=o,o=i),this.helper.css({left:a,top:o,width:r-a,height:l-o}),this.selectees.each(function(){var i=t.data(this,"selectable-item"),h=!1;i&&i.element!==s.element[0]&&("touch"===n.tolerance?h=!(i.left>r||a>i.right||i.top>l||o>i.bottom):"fit"===n.tolerance&&(h=i.left>a&&r>i.right&&i.top>o&&l>i.bottom),h?(i.selected&&(i.$element.removeClass("ui-selected"),i.selected=!1),i.unselecting&&(i.$element.removeClass("ui-unselecting"),i.unselecting=!1),i.selecting||(i.$element.addClass("ui-selecting"),i.selecting=!0,s._trigger("selecting",e,{selecting:i.element}))):(i.selecting&&((e.metaKey||e.ctrlKey)&&i.startselected?(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.$element.addClass("ui-selected"),i.selected=!0):(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.startselected&&(i.$element.addClass("ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",e,{unselecting:i.element}))),i.selected&&(e.metaKey||e.ctrlKey||i.startselected||(i.$element.removeClass("ui-selected"),i.selected=!1,i.$element.addClass("ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",e,{unselecting:i.element})))))}),!1}},_mouseStop:function(e){var i=this;return this.dragged=!1,t(".ui-unselecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");s.$element.removeClass("ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",e,{unselected:s.element})}),t(".ui-selecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");s.$element.removeClass("ui-selecting").addClass("ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",e,{selected:s.element})}),this._trigger("stop",e),this.helper.remove(),!1}})})(jQuery);(function(t){function e(t,e,i){return t>e&&e+i>t}function i(t){return/left|right/.test(t.css("float"))||/inline|table-cell/.test(t.css("display"))}t.widget("ui.sortable",t.ui.mouse,{version:"1.10.4",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_create:function(){var t=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?"x"===t.axis||i(this.items[0].item):!1,this.offset=this.element.offset(),this._mouseInit(),this.ready=!0},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled"),this._mouseDestroy();for(var t=this.items.length-1;t>=0;t--)this.items[t].item.removeData(this.widgetName+"-item");return this},_setOption:function(e,i){"disabled"===e?(this.options[e]=i,this.widget().toggleClass("ui-sortable-disabled",!!i)):t.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(e,i){var s=null,n=!1,a=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(e),t(e.target).parents().each(function(){return t.data(this,a.widgetName+"-item")===a?(s=t(this),!1):undefined}),t.data(e.target,a.widgetName+"-item")===a&&(s=t(e.target)),s?!this.options.handle||i||(t(this.options.handle,s).find("*").addBack().each(function(){this===e.target&&(n=!0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(e,i,s){var n,a,o=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(e),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},t.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(e),this.originalPageX=e.pageX,this.originalPageY=e.pageY,o.cursorAt&&this._adjustOffsetFromHelper(o.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),o.containment&&this._setContainment(),o.cursor&&"auto"!==o.cursor&&(a=this.document.find("body"),this.storedCursor=a.css("cursor"),a.css("cursor",o.cursor),this.storedStylesheet=t("<style>*{ cursor: "+o.cursor+" !important; }</style>").appendTo(a)),o.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",o.opacity)),o.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",o.zIndex)),this.scrollParent[0]!==document&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",e,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",e,this._uiHash(this));return t.ui.ddmanager&&(t.ui.ddmanager.current=this),t.ui.ddmanager&&!o.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(e),!0},_mouseDrag:function(e){var i,s,n,a,o=this.options,r=!1;for(this.position=this._generatePosition(e),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==document&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-e.pageY<o.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+o.scrollSpeed:e.pageY-this.overflowOffset.top<o.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-o.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-e.pageX<o.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+o.scrollSpeed:e.pageX-this.overflowOffset.left<o.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-o.scrollSpeed)):(e.pageY-t(document).scrollTop()<o.scrollSensitivity?r=t(document).scrollTop(t(document).scrollTop()-o.scrollSpeed):t(window).height()-(e.pageY-t(document).scrollTop())<o.scrollSensitivity&&(r=t(document).scrollTop(t(document).scrollTop()+o.scrollSpeed)),e.pageX-t(document).scrollLeft()<o.scrollSensitivity?r=t(document).scrollLeft(t(document).scrollLeft()-o.scrollSpeed):t(window).width()-(e.pageX-t(document).scrollLeft())<o.scrollSensitivity&&(r=t(document).scrollLeft(t(document).scrollLeft()+o.scrollSpeed))),r!==!1&&t.ui.ddmanager&&!o.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),i=this.items.length-1;i>=0;i--)if(s=this.items[i],n=s.item[0],a=this._intersectsWithPointer(s),a&&s.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===a?"next":"prev"]()[0]!==n&&!t.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!t.contains(this.element[0],n):!0)){if(this.direction=1===a?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(e,s),this._trigger("change",e,this._uiHash());break}return this._contactContainers(e),t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),this._trigger("sort",e,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(e,i){if(e){if(t.ui.ddmanager&&!this.options.dropBehaviour&&t.ui.ddmanager.drop(this,e),this.options.revert){var s=this,n=this.placeholder.offset(),a=this.options.axis,o={};a&&"x"!==a||(o.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollLeft)),a&&"y"!==a||(o.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,t(this.helper).animate(o,parseInt(this.options.revert,10)||500,function(){s._clear(e)})}else this._clear(e,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp({target:null}),"original"===this.options.helper?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var e=this.containers.length-1;e>=0;e--)this.containers[e]._trigger("deactivate",null,this._uiHash(this)),this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",null,this._uiHash(this)),this.containers[e].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),t.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?t(this.domPosition.prev).after(this.currentItem):t(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},t(i).each(function(){var i=(t(e.item||this).attr(e.attribute||"id")||"").match(e.expression||/(.+)[\-=_](.+)/);i&&s.push((e.key||i[1]+"[]")+"="+(e.key&&e.expression?i[1]:i[2]))}),!s.length&&e.key&&s.push(e.key+"="),s.join("&")},toArray:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},i.each(function(){s.push(t(e.item||this).attr(e.attribute||"id")||"")}),s},_intersectsWith:function(t){var e=this.positionAbs.left,i=e+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,a=t.left,o=a+t.width,r=t.top,h=r+t.height,l=this.offset.click.top,c=this.offset.click.left,u="x"===this.options.axis||s+l>r&&h>s+l,d="y"===this.options.axis||e+c>a&&o>e+c,p=u&&d;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>t[this.floating?"width":"height"]?p:e+this.helperProportions.width/2>a&&o>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&h>n-this.helperProportions.height/2},_intersectsWithPointer:function(t){var i="x"===this.options.axis||e(this.positionAbs.top+this.offset.click.top,t.top,t.height),s="y"===this.options.axis||e(this.positionAbs.left+this.offset.click.left,t.left,t.width),n=i&&s,a=this._getDragVerticalDirection(),o=this._getDragHorizontalDirection();return n?this.floating?o&&"right"===o||"down"===a?2:1:a&&("down"===a?2:1):!1},_intersectsWithSides:function(t){var i=e(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),s=e(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),n=this._getDragVerticalDirection(),a=this._getDragHorizontalDirection();return this.floating&&a?"right"===a&&s||"left"===a&&!s:n&&("down"===n&&i||"up"===n&&!i)},_getDragVerticalDirection:function(){var t=this.positionAbs.top-this.lastPositionAbs.top;return 0!==t&&(t>0?"down":"up")},_getDragHorizontalDirection:function(){var t=this.positionAbs.left-this.lastPositionAbs.left;return 0!==t&&(t>0?"right":"left")},refresh:function(t){return this._refreshItems(t),this.refreshPositions(),this},_connectWith:function(){var t=this.options;return t.connectWith.constructor===String?[t.connectWith]:t.connectWith},_getItemsAsjQuery:function(e){function i(){r.push(this)}var s,n,a,o,r=[],h=[],l=this._connectWith();if(l&&e)for(s=l.length-1;s>=0;s--)for(a=t(l[s]),n=a.length-1;n>=0;n--)o=t.data(a[n],this.widgetFullName),o&&o!==this&&!o.options.disabled&&h.push([t.isFunction(o.options.items)?o.options.items.call(o.element):t(o.options.items,o.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),o]);for(h.push([t.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):t(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),s=h.length-1;s>=0;s--)h[s][0].each(i);return t(r)},_removeCurrentsFromItems:function(){var e=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=t.grep(this.items,function(t){for(var i=0;e.length>i;i++)if(e[i]===t.item[0])return!1;return!0})},_refreshItems:function(e){this.items=[],this.containers=[this];var i,s,n,a,o,r,h,l,c=this.items,u=[[t.isFunction(this.options.items)?this.options.items.call(this.element[0],e,{item:this.currentItem}):t(this.options.items,this.element),this]],d=this._connectWith();if(d&&this.ready)for(i=d.length-1;i>=0;i--)for(n=t(d[i]),s=n.length-1;s>=0;s--)a=t.data(n[s],this.widgetFullName),a&&a!==this&&!a.options.disabled&&(u.push([t.isFunction(a.options.items)?a.options.items.call(a.element[0],e,{item:this.currentItem}):t(a.options.items,a.element),a]),this.containers.push(a));for(i=u.length-1;i>=0;i--)for(o=u[i][1],r=u[i][0],s=0,l=r.length;l>s;s++)h=t(r[s]),h.data(this.widgetName+"-item",o),c.push({item:h,instance:o,width:0,height:0,left:0,top:0})},refreshPositions:function(e){this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,n,a;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?t(this.options.toleranceElement,s.item):s.item,e||(s.width=n.outerWidth(),s.height=n.outerHeight()),a=n.offset(),s.left=a.left,s.top=a.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)a=this.containers[i].element.offset(),this.containers[i].containerCache.left=a.left,this.containers[i].containerCache.top=a.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(e){e=e||this;var i,s=e.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=e.currentItem[0].nodeName.toLowerCase(),n=t("<"+s+">",e.document[0]).addClass(i||e.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper");return"tr"===s?e.currentItem.children().each(function(){t("<td>&#160;</td>",e.document[0]).attr("colspan",t(this).attr("colspan")||1).appendTo(n)}):"img"===s&&n.attr("src",e.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(t,n){(!i||s.forcePlaceholderSize)&&(n.height()||n.height(e.currentItem.innerHeight()-parseInt(e.currentItem.css("paddingTop")||0,10)-parseInt(e.currentItem.css("paddingBottom")||0,10)),n.width()||n.width(e.currentItem.innerWidth()-parseInt(e.currentItem.css("paddingLeft")||0,10)-parseInt(e.currentItem.css("paddingRight")||0,10)))}}),e.placeholder=t(s.placeholder.element.call(e.element,e.currentItem)),e.currentItem.after(e.placeholder),s.placeholder.update(e,e.placeholder)},_contactContainers:function(s){var n,a,o,r,h,l,c,u,d,p,f=null,g=null;for(n=this.containers.length-1;n>=0;n--)if(!t.contains(this.currentItem[0],this.containers[n].element[0]))if(this._intersectsWith(this.containers[n].containerCache)){if(f&&t.contains(this.containers[n].element[0],f.element[0]))continue;f=this.containers[n],g=n}else this.containers[n].containerCache.over&&(this.containers[n]._trigger("out",s,this._uiHash(this)),this.containers[n].containerCache.over=0);if(f)if(1===this.containers.length)this.containers[g].containerCache.over||(this.containers[g]._trigger("over",s,this._uiHash(this)),this.containers[g].containerCache.over=1);else{for(o=1e4,r=null,p=f.floating||i(this.currentItem),h=p?"left":"top",l=p?"width":"height",c=this.positionAbs[h]+this.offset.click[h],a=this.items.length-1;a>=0;a--)t.contains(this.containers[g].element[0],this.items[a].item[0])&&this.items[a].item[0]!==this.currentItem[0]&&(!p||e(this.positionAbs.top+this.offset.click.top,this.items[a].top,this.items[a].height))&&(u=this.items[a].item.offset()[h],d=!1,Math.abs(u-c)>Math.abs(u+this.items[a][l]-c)&&(d=!0,u+=this.items[a][l]),o>Math.abs(u-c)&&(o=Math.abs(u-c),r=this.items[a],this.direction=d?"up":"down"));if(!r&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[g])return;r?this._rearrange(s,r,null,!0):this._rearrange(s,null,this.containers[g].element,!0),this._trigger("change",s,this._uiHash()),this.containers[g]._trigger("change",s,this._uiHash(this)),this.currentContainer=this.containers[g],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[g]._trigger("over",s,this._uiHash(this)),this.containers[g].containerCache.over=1}},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper)?t(i.helper.apply(this.element[0],[e,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||t("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var e=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===document.body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&t.ui.ie)&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var t=this.currentItem.position();return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options;"parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,t("document"===n.containment?document:window).width()-this.helperProportions.width-this.margins.left,(t("document"===n.containment?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(e=t(n.containment)[0],i=t(n.containment).offset(),s="hidden"!==t(e).css("overflow"),this.containment=[i.left+(parseInt(t(e).css("borderLeftWidth"),10)||0)+(parseInt(t(e).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(t(e).css("borderTopWidth"),10)||0)+(parseInt(t(e).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(e.scrollWidth,e.offsetWidth):e.offsetWidth)-(parseInt(t(e).css("borderLeftWidth"),10)||0)-(parseInt(t(e).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(e.scrollHeight,e.offsetHeight):e.offsetHeight)-(parseInt(t(e).css("borderTopWidth"),10)||0)-(parseInt(t(e).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(e,i){i||(i=this.position);var s="absolute"===e?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,a=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():a?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():a?0:n.scrollLeft())*s}},_generatePosition:function(e){var i,s,n=this.options,a=e.pageX,o=e.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(r[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==document&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(e.pageX-this.offset.click.left<this.containment[0]&&(a=this.containment[0]+this.offset.click.left),e.pageY-this.offset.click.top<this.containment[1]&&(o=this.containment[1]+this.offset.click.top),e.pageX-this.offset.click.left>this.containment[2]&&(a=this.containment[2]+this.offset.click.left),e.pageY-this.offset.click.top>this.containment[3]&&(o=this.containment[3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((o-this.originalPageY)/n.grid[1])*n.grid[1],o=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-n.grid[1]:i+n.grid[1]:i,s=this.originalPageX+Math.round((a-this.originalPageX)/n.grid[0])*n.grid[0],a=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-n.grid[0]:s+n.grid[0]:s)),{top:o-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:r.scrollTop()),left:a-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:r.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){function i(t,e,i){return function(s){i._trigger(t,s,e._uiHash(e))}}this.reverting=!1;var s,n=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(s in this._storedCSS)("auto"===this._storedCSS[s]||"static"===this._storedCSS[s])&&(this._storedCSS[s]="");this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!e&&n.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||n.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(n.push(function(t){this._trigger("remove",t,this._uiHash())}),n.push(function(t){return function(e){t._trigger("receive",e,this._uiHash(this))}}.call(this,this.currentContainer)),n.push(function(t){return function(e){t._trigger("update",e,this._uiHash(this))}}.call(this,this.currentContainer)))),s=this.containers.length-1;s>=0;s--)e||n.push(i("deactivate",this,this.containers[s])),this.containers[s].containerCache.over&&(n.push(i("out",this,this.containers[s])),this.containers[s].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,this.cancelHelperRemoval){if(!e){for(this._trigger("beforeStop",t,this._uiHash()),s=0;n.length>s;s++)n[s].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!1}if(e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null,!e){for(s=0;n.length>s;s++)n[s].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!0},_trigger:function(){t.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(e){var i=e||this;return{helper:i.helper,placeholder:i.placeholder||t([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:e?e.element:null}}})})(jQuery);(function(e){var t=0,i={},a={};i.height=i.paddingTop=i.paddingBottom=i.borderTopWidth=i.borderBottomWidth="hide",a.height=a.paddingTop=a.paddingBottom=a.borderTopWidth=a.borderBottomWidth="show",e.widget("ui.accordion",{version:"1.10.4",options:{active:0,animate:{},collapsible:!1,event:"click",header:"> li > :first-child,> :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},_create:function(){var t=this.options;this.prevShow=this.prevHide=e(),this.element.addClass("ui-accordion ui-widget ui-helper-reset").attr("role","tablist"),t.collapsible||t.active!==!1&&null!=t.active||(t.active=0),this._processPanels(),0>t.active&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():e(),content:this.active.length?this.active.next():e()}},_createIcons:function(){var t=this.options.icons;t&&(e("<span>").addClass("ui-accordion-header-icon ui-icon "+t.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(t.header).addClass(t.activeHeader),this.headers.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()},_destroy:function(){var e;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),this._destroyIcons(),e=this.headers.next().css("display","").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),"content"!==this.options.heightStyle&&e.css("height","")},_setOption:function(e,t){return"active"===e?(this._activate(t),undefined):("event"===e&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(t)),this._super(e,t),"collapsible"!==e||t||this.options.active!==!1||this._activate(0),"icons"===e&&(this._destroyIcons(),t&&this._createIcons()),"disabled"===e&&this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!t),undefined)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var i=e.ui.keyCode,a=this.headers.length,s=this.headers.index(t.target),n=!1;switch(t.keyCode){case i.RIGHT:case i.DOWN:n=this.headers[(s+1)%a];break;case i.LEFT:case i.UP:n=this.headers[(s-1+a)%a];break;case i.SPACE:case i.ENTER:this._eventHandler(t);break;case i.HOME:n=this.headers[0];break;case i.END:n=this.headers[a-1]}n&&(e(t.target).attr("tabIndex",-1),e(n).attr("tabIndex",0),n.focus(),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===e.ui.keyCode.UP&&t.ctrlKey&&e(t.currentTarget).prev().focus()},refresh:function(){var t=this.options;this._processPanels(),t.active===!1&&t.collapsible===!0||!this.headers.length?(t.active=!1,this.active=e()):t.active===!1?this._activate(0):this.active.length&&!e.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=e()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){this.headers=this.element.find(this.options.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all"),this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").filter(":not(.ui-accordion-content-active)").hide()},_refresh:function(){var i,a=this.options,s=a.heightStyle,n=this.element.parent(),r=this.accordionId="ui-accordion-"+(this.element.attr("id")||++t);this.active=this._findActive(a.active).addClass("ui-accordion-header-active ui-state-active ui-corner-top").removeClass("ui-corner-all"),this.active.next().addClass("ui-accordion-content-active").show(),this.headers.attr("role","tab").each(function(t){var i=e(this),a=i.attr("id"),s=i.next(),n=s.attr("id");a||(a=r+"-header-"+t,i.attr("id",a)),n||(n=r+"-panel-"+t,s.attr("id",n)),i.attr("aria-controls",n),s.attr("aria-labelledby",a)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(a.event),"fill"===s?(i=n.height(),this.element.siblings(":visible").each(function(){var t=e(this),a=t.css("position");"absolute"!==a&&"fixed"!==a&&(i-=t.outerHeight(!0))}),this.headers.each(function(){i-=e(this).outerHeight(!0)}),this.headers.next().each(function(){e(this).height(Math.max(0,i-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===s&&(i=0,this.headers.next().each(function(){i=Math.max(i,e(this).css("height","").height())}).height(i))},_activate:function(t){var i=this._findActive(t)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:e.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):e()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&e.each(t.split(" "),function(e,t){i[t]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var i=this.options,a=this.active,s=e(t.currentTarget),n=s[0]===a[0],r=n&&i.collapsible,o=r?e():s.next(),h=a.next(),d={oldHeader:a,oldPanel:h,newHeader:r?e():s,newPanel:o};t.preventDefault(),n&&!i.collapsible||this._trigger("beforeActivate",t,d)===!1||(i.active=r?!1:this.headers.index(s),this.active=n?e():s,this._toggle(d),a.removeClass("ui-accordion-header-active ui-state-active"),i.icons&&a.children(".ui-accordion-header-icon").removeClass(i.icons.activeHeader).addClass(i.icons.header),n||(s.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"),i.icons&&s.children(".ui-accordion-header-icon").removeClass(i.icons.header).addClass(i.icons.activeHeader),s.next().addClass("ui-accordion-content-active")))},_toggle:function(t){var i=t.newPanel,a=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=a,this.options.animate?this._animate(i,a,t):(a.hide(),i.show(),this._toggleComplete(t)),a.attr({"aria-hidden":"true"}),a.prev().attr("aria-selected","false"),i.length&&a.length?a.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===e(this).attr("tabIndex")}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true",tabIndex:0,"aria-expanded":"true"})},_animate:function(e,t,s){var n,r,o,h=this,d=0,c=e.length&&(!t.length||e.index()<t.index()),l=this.options.animate||{},u=c&&l.down||l,v=function(){h._toggleComplete(s)};return"number"==typeof u&&(o=u),"string"==typeof u&&(r=u),r=r||u.easing||l.easing,o=o||u.duration||l.duration,t.length?e.length?(n=e.show().outerHeight(),t.animate(i,{duration:o,easing:r,step:function(e,t){t.now=Math.round(e)}}),e.hide().animate(a,{duration:o,easing:r,complete:v,step:function(e,i){i.now=Math.round(e),"height"!==i.prop?d+=i.now:"content"!==h.options.heightStyle&&(i.now=Math.round(n-t.outerHeight()-d),d=0)}}),undefined):t.animate(i,o,r,v):e.animate(a,o,r,v)},_toggleComplete:function(e){var t=e.oldPanel;t.removeClass("ui-accordion-content-active").prev().removeClass("ui-corner-top").addClass("ui-corner-all"),t.length&&(t.parent()[0].className=t.parent()[0].className),this._trigger("activate",null,e)}})})(jQuery);(function(e){e.widget("ui.autocomplete",{version:"1.10.4",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var t,i,s,n=this.element[0].nodeName.toLowerCase(),a="textarea"===n,o="input"===n;this.isMultiLine=a?!0:o?!1:this.element.prop("isContentEditable"),this.valueMethod=this.element[a||o?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return t=!0,s=!0,i=!0,undefined;t=!1,s=!1,i=!1;var a=e.ui.keyCode;switch(n.keyCode){case a.PAGE_UP:t=!0,this._move("previousPage",n);break;case a.PAGE_DOWN:t=!0,this._move("nextPage",n);break;case a.UP:t=!0,this._keyEvent("previous",n);break;case a.DOWN:t=!0,this._keyEvent("next",n);break;case a.ENTER:case a.NUMPAD_ENTER:this.menu.active&&(t=!0,n.preventDefault(),this.menu.select(n));break;case a.TAB:this.menu.active&&this.menu.select(n);break;case a.ESCAPE:this.menu.element.is(":visible")&&(this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(t)return t=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),undefined;if(!i){var n=e.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(e){return s?(s=!1,e.preventDefault(),undefined):(this._searchTimeout(e),undefined)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,undefined):(clearTimeout(this.searching),this.close(e),this._change(e),undefined)}}),this._initSource(),this.menu=e("<ul>").addClass("ui-autocomplete ui-front").appendTo(this._appendTo()).menu({role:null}).hide().data("ui-menu"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var i=this.menu.element[0];e(t.target).closest(".ui-menu-item").length||this._delay(function(){var t=this;this.document.one("mousedown",function(s){s.target===t.element[0]||s.target===i||e.contains(i,s.target)||t.close()})})},menufocus:function(t,i){if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),this.document.one("mousemove",function(){e(t.target).trigger(t.originalEvent)}),undefined;var s=i.item.data("ui-autocomplete-item");!1!==this._trigger("focus",t,{item:s})?t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value):this.liveRegion.text(s.value)},menuselect:function(e,t){var i=t.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",e,{item:i})&&this._value(i.value),this.term=this._value(),this.close(e),this.selectedItem=i}}),this.liveRegion=e("<span>",{role:"status","aria-live":"polite"}).addClass("ui-helper-hidden-accessible").insertBefore(this.element),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),"source"===e&&this._initSource(),"appendTo"===e&&this.menu.element.appendTo(this._appendTo()),"disabled"===e&&t&&this.xhr&&this.xhr.abort()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_initSource:function(){var t,i,s=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(i,s){s(e.ui.autocomplete.filter(t,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(t,n){s.xhr&&s.xhr.abort(),s.xhr=e.ajax({url:i,data:t,dataType:"json",success:function(e){n(e)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(e){clearTimeout(this.searching),this.searching=this._delay(function(){this.term!==this._value()&&(this.selectedItem=null,this.search(null,e))},this.options.delay)},search:function(e,t){return e=null!=e?e:this._value(),this.term=this._value(),e.length<this.options.minLength?this.close(t):this._trigger("search",t)!==!1?this._search(e):undefined},_search:function(e){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:e},this._response())},_response:function(){var t=++this.requestIndex;return e.proxy(function(e){t===this.requestIndex&&this.__response(e),this.pending--,this.pending||this.element.removeClass("ui-autocomplete-loading")},this)},__response:function(e){e&&(e=this._normalize(e)),this._trigger("response",null,{content:e}),!this.options.disabled&&e&&e.length&&!this.cancelSearch?(this._suggest(e),this._trigger("open")):this._close()},close:function(e){this.cancelSearch=!0,this._close(e)},_close:function(e){this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",e))},_change:function(e){this.previous!==this._value()&&this._trigger("change",e,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:e.map(t,function(t){return"string"==typeof t?{label:t,value:t}:e.extend({label:t.label||t.value,value:t.value||t.label},t)})},_suggest:function(t){var i=this.menu.element.empty();this._renderMenu(i,t),this.isNewMenu=!0,this.menu.refresh(),i.show(),this._resizeMenu(),i.position(e.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var e=this.menu.element;e.outerWidth(Math.max(e.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(t,i){var s=this;e.each(i,function(e,i){s._renderItemData(t,i)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-autocomplete-item",t)},_renderItem:function(t,i){return e("<li>").append(e("<a>").text(i.label)).appendTo(t)},_move:function(e,t){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.isLastItem()&&/^next/.test(e)?(this._value(this.term),this.menu.blur(),undefined):(this.menu[e](t),undefined):(this.search(null,t),undefined)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(e,t),t.preventDefault())}}),e.extend(e.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,i){var s=RegExp(e.ui.autocomplete.escapeRegex(i),"i");return e.grep(t,function(e){return s.test(e.label||e.value||e)})}}),e.widget("ui.autocomplete",e.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(e){return e+(e>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var t;this._superApply(arguments),this.options.disabled||this.cancelSearch||(t=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.text(t))}})})(jQuery);(function(e){var t,i="ui-button ui-widget ui-state-default ui-corner-all",n="ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",s=function(){var t=e(this);setTimeout(function(){t.find(":ui-button").button("refresh")},1)},a=function(t){var i=t.name,n=t.form,s=e([]);return i&&(i=i.replace(/'/g,"\\'"),s=n?e(n).find("[name='"+i+"']"):e("[name='"+i+"']",t.ownerDocument).filter(function(){return!this.form})),s};e.widget("ui.button",{version:"1.10.4",defaultElement:"<button>",options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset"+this.eventNamespace).bind("reset"+this.eventNamespace,s),"boolean"!=typeof this.options.disabled?this.options.disabled=!!this.element.prop("disabled"):this.element.prop("disabled",this.options.disabled),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr("title");var n=this,o=this.options,r="checkbox"===this.type||"radio"===this.type,h=r?"":"ui-state-active";null===o.label&&(o.label="input"===this.type?this.buttonElement.val():this.buttonElement.html()),this._hoverable(this.buttonElement),this.buttonElement.addClass(i).attr("role","button").bind("mouseenter"+this.eventNamespace,function(){o.disabled||this===t&&e(this).addClass("ui-state-active")}).bind("mouseleave"+this.eventNamespace,function(){o.disabled||e(this).removeClass(h)}).bind("click"+this.eventNamespace,function(e){o.disabled&&(e.preventDefault(),e.stopImmediatePropagation())}),this._on({focus:function(){this.buttonElement.addClass("ui-state-focus")},blur:function(){this.buttonElement.removeClass("ui-state-focus")}}),r&&this.element.bind("change"+this.eventNamespace,function(){n.refresh()}),"checkbox"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){return o.disabled?!1:undefined}):"radio"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){if(o.disabled)return!1;e(this).addClass("ui-state-active"),n.buttonElement.attr("aria-pressed","true");var t=n.element[0];a(t).not(t).map(function(){return e(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown"+this.eventNamespace,function(){return o.disabled?!1:(e(this).addClass("ui-state-active"),t=this,n.document.one("mouseup",function(){t=null}),undefined)}).bind("mouseup"+this.eventNamespace,function(){return o.disabled?!1:(e(this).removeClass("ui-state-active"),undefined)}).bind("keydown"+this.eventNamespace,function(t){return o.disabled?!1:((t.keyCode===e.ui.keyCode.SPACE||t.keyCode===e.ui.keyCode.ENTER)&&e(this).addClass("ui-state-active"),undefined)}).bind("keyup"+this.eventNamespace+" blur"+this.eventNamespace,function(){e(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(t){t.keyCode===e.ui.keyCode.SPACE&&e(this).click()})),this._setOption("disabled",o.disabled),this._resetButton()},_determineButtonType:function(){var e,t,i;this.type=this.element.is("[type=checkbox]")?"checkbox":this.element.is("[type=radio]")?"radio":this.element.is("input")?"input":"button","checkbox"===this.type||"radio"===this.type?(e=this.element.parents().last(),t="label[for='"+this.element.attr("id")+"']",this.buttonElement=e.find(t),this.buttonElement.length||(e=e.length?e.siblings():this.element.siblings(),this.buttonElement=e.filter(t),this.buttonElement.length||(this.buttonElement=e.find(t))),this.element.addClass("ui-helper-hidden-accessible"),i=this.element.is(":checked"),i&&this.buttonElement.addClass("ui-state-active"),this.buttonElement.prop("aria-pressed",i)):this.buttonElement=this.element},widget:function(){return this.buttonElement},_destroy:function(){this.element.removeClass("ui-helper-hidden-accessible"),this.buttonElement.removeClass(i+" ui-state-active "+n).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()),this.hasTitle||this.buttonElement.removeAttr("title")},_setOption:function(e,t){return this._super(e,t),"disabled"===e?(this.element.prop("disabled",!!t),t&&this.buttonElement.removeClass("ui-state-focus"),undefined):(this._resetButton(),undefined)},refresh:function(){var t=this.element.is("input, button")?this.element.is(":disabled"):this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOption("disabled",t),"radio"===this.type?a(this.element[0]).each(function(){e(this).is(":checked")?e(this).button("widget").addClass("ui-state-active").attr("aria-pressed","true"):e(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")}):"checkbox"===this.type&&(this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false"))},_resetButton:function(){if("input"===this.type)return this.options.label&&this.element.val(this.options.label),undefined;var t=this.buttonElement.removeClass(n),i=e("<span></span>",this.document[0]).addClass("ui-button-text").html(this.options.label).appendTo(t.empty()).text(),s=this.options.icons,a=s.primary&&s.secondary,o=[];s.primary||s.secondary?(this.options.text&&o.push("ui-button-text-icon"+(a?"s":s.primary?"-primary":"-secondary")),s.primary&&t.prepend("<span class='ui-button-icon-primary ui-icon "+s.primary+"'></span>"),s.secondary&&t.append("<span class='ui-button-icon-secondary ui-icon "+s.secondary+"'></span>"),this.options.text||(o.push(a?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||t.attr("title",e.trim(i)))):o.push("ui-button-text-only"),t.addClass(o.join(" "))}}),e.widget("ui.buttonset",{version:"1.10.4",options:{items:"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(e,t){"disabled"===e&&this.buttons.button("option",e,t),this._super(e,t)},refresh:function(){var t="rtl"===this.element.css("direction");this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(t?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(t?"ui-corner-left":"ui-corner-right").end().end()},_destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy")}})})(jQuery);(function(e,t){function i(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},e.extend(this._defaults,this.regional[""]),this.dpDiv=a(e("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function a(t){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return t.delegate(i,"mouseout",function(){e(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).removeClass("ui-datepicker-next-hover")}).delegate(i,"mouseover",function(){e.datepicker._isDisabledDatepicker(n.inline?t.parent()[0]:n.input[0])||(e(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),e(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&e(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&e(this).addClass("ui-datepicker-next-hover"))})}function s(t,i){e.extend(t,i);for(var a in i)null==i[a]&&(t[a]=i[a]);return t}e.extend(e.ui,{datepicker:{version:"1.10.4"}});var n,r="datepicker";e.extend(i.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(e){return s(this._defaults,e||{}),this},_attachDatepicker:function(t,i){var a,s,n;a=t.nodeName.toLowerCase(),s="div"===a||"span"===a,t.id||(this.uuid+=1,t.id="dp"+this.uuid),n=this._newInst(e(t),s),n.settings=e.extend({},i||{}),"input"===a?this._connectDatepicker(t,n):s&&this._inlineDatepicker(t,n)},_newInst:function(t,i){var s=t[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1");return{id:s,input:t,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:i,dpDiv:i?a(e("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(t,i){var a=e(t);i.append=e([]),i.trigger=e([]),a.hasClass(this.markerClassName)||(this._attachments(a,i),a.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp),this._autoSize(i),e.data(t,r,i),i.settings.disabled&&this._disableDatepicker(t))},_attachments:function(t,i){var a,s,n,r=this._get(i,"appendText"),o=this._get(i,"isRTL");i.append&&i.append.remove(),r&&(i.append=e("<span class='"+this._appendClass+"'>"+r+"</span>"),t[o?"before":"after"](i.append)),t.unbind("focus",this._showDatepicker),i.trigger&&i.trigger.remove(),a=this._get(i,"showOn"),("focus"===a||"both"===a)&&t.focus(this._showDatepicker),("button"===a||"both"===a)&&(s=this._get(i,"buttonText"),n=this._get(i,"buttonImage"),i.trigger=e(this._get(i,"buttonImageOnly")?e("<img/>").addClass(this._triggerClass).attr({src:n,alt:s,title:s}):e("<button type='button'></button>").addClass(this._triggerClass).html(n?e("<img/>").attr({src:n,alt:s,title:s}):s)),t[o?"before":"after"](i.trigger),i.trigger.click(function(){return e.datepicker._datepickerShowing&&e.datepicker._lastInput===t[0]?e.datepicker._hideDatepicker():e.datepicker._datepickerShowing&&e.datepicker._lastInput!==t[0]?(e.datepicker._hideDatepicker(),e.datepicker._showDatepicker(t[0])):e.datepicker._showDatepicker(t[0]),!1}))},_autoSize:function(e){if(this._get(e,"autoSize")&&!e.inline){var t,i,a,s,n=new Date(2009,11,20),r=this._get(e,"dateFormat");r.match(/[DM]/)&&(t=function(e){for(i=0,a=0,s=0;e.length>s;s++)e[s].length>i&&(i=e[s].length,a=s);return a},n.setMonth(t(this._get(e,r.match(/MM/)?"monthNames":"monthNamesShort"))),n.setDate(t(this._get(e,r.match(/DD/)?"dayNames":"dayNamesShort"))+20-n.getDay())),e.input.attr("size",this._formatDate(e,n).length)}},_inlineDatepicker:function(t,i){var a=e(t);a.hasClass(this.markerClassName)||(a.addClass(this.markerClassName).append(i.dpDiv),e.data(t,r,i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(t),i.dpDiv.css("display","block"))},_dialogDatepicker:function(t,i,a,n,o){var u,c,h,l,d,p=this._dialogInst;return p||(this.uuid+=1,u="dp"+this.uuid,this._dialogInput=e("<input type='text' id='"+u+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.keydown(this._doKeyDown),e("body").append(this._dialogInput),p=this._dialogInst=this._newInst(this._dialogInput,!1),p.settings={},e.data(this._dialogInput[0],r,p)),s(p.settings,n||{}),i=i&&i.constructor===Date?this._formatDate(p,i):i,this._dialogInput.val(i),this._pos=o?o.length?o:[o.pageX,o.pageY]:null,this._pos||(c=document.documentElement.clientWidth,h=document.documentElement.clientHeight,l=document.documentElement.scrollLeft||document.body.scrollLeft,d=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[c/2-100+l,h/2-150+d]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),p.settings.onSelect=a,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),e.blockUI&&e.blockUI(this.dpDiv),e.data(this._dialogInput[0],r,p),this},_destroyDatepicker:function(t){var i,a=e(t),s=e.data(t,r);a.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),e.removeData(t,r),"input"===i?(s.append.remove(),s.trigger.remove(),a.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):("div"===i||"span"===i)&&a.removeClass(this.markerClassName).empty())},_enableDatepicker:function(t){var i,a,s=e(t),n=e.data(t,r);s.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),"input"===i?(t.disabled=!1,n.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===i||"span"===i)&&(a=s.children("."+this._inlineClass),a.children().removeClass("ui-state-disabled"),a.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}))},_disableDatepicker:function(t){var i,a,s=e(t),n=e.data(t,r);s.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),"input"===i?(t.disabled=!0,n.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===i||"span"===i)&&(a=s.children("."+this._inlineClass),a.children().addClass("ui-state-disabled"),a.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}),this._disabledInputs[this._disabledInputs.length]=t)},_isDisabledDatepicker:function(e){if(!e)return!1;for(var t=0;this._disabledInputs.length>t;t++)if(this._disabledInputs[t]===e)return!0;return!1},_getInst:function(t){try{return e.data(t,r)}catch(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(i,a,n){var r,o,u,c,h=this._getInst(i);return 2===arguments.length&&"string"==typeof a?"defaults"===a?e.extend({},e.datepicker._defaults):h?"all"===a?e.extend({},h.settings):this._get(h,a):null:(r=a||{},"string"==typeof a&&(r={},r[a]=n),h&&(this._curInst===h&&this._hideDatepicker(),o=this._getDateDatepicker(i,!0),u=this._getMinMaxDate(h,"min"),c=this._getMinMaxDate(h,"max"),s(h.settings,r),null!==u&&r.dateFormat!==t&&r.minDate===t&&(h.settings.minDate=this._formatDate(h,u)),null!==c&&r.dateFormat!==t&&r.maxDate===t&&(h.settings.maxDate=this._formatDate(h,c)),"disabled"in r&&(r.disabled?this._disableDatepicker(i):this._enableDatepicker(i)),this._attachments(e(i),h),this._autoSize(h),this._setDate(h,o),this._updateAlternate(h),this._updateDatepicker(h)),t)},_changeDatepicker:function(e,t,i){this._optionDatepicker(e,t,i)},_refreshDatepicker:function(e){var t=this._getInst(e);t&&this._updateDatepicker(t)},_setDateDatepicker:function(e,t){var i=this._getInst(e);i&&(this._setDate(i,t),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(e,t){var i=this._getInst(e);return i&&!i.inline&&this._setDateFromField(i,t),i?this._getDate(i):null},_doKeyDown:function(t){var i,a,s,n=e.datepicker._getInst(t.target),r=!0,o=n.dpDiv.is(".ui-datepicker-rtl");if(n._keyEvent=!0,e.datepicker._datepickerShowing)switch(t.keyCode){case 9:e.datepicker._hideDatepicker(),r=!1;break;case 13:return s=e("td."+e.datepicker._dayOverClass+":not(."+e.datepicker._currentClass+")",n.dpDiv),s[0]&&e.datepicker._selectDay(t.target,n.selectedMonth,n.selectedYear,s[0]),i=e.datepicker._get(n,"onSelect"),i?(a=e.datepicker._formatDate(n),i.apply(n.input?n.input[0]:null,[a,n])):e.datepicker._hideDatepicker(),!1;case 27:e.datepicker._hideDatepicker();break;case 33:e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(n,"stepBigMonths"):-e.datepicker._get(n,"stepMonths"),"M");break;case 34:e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(n,"stepBigMonths"):+e.datepicker._get(n,"stepMonths"),"M");break;case 35:(t.ctrlKey||t.metaKey)&&e.datepicker._clearDate(t.target),r=t.ctrlKey||t.metaKey;break;case 36:(t.ctrlKey||t.metaKey)&&e.datepicker._gotoToday(t.target),r=t.ctrlKey||t.metaKey;break;case 37:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,o?1:-1,"D"),r=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(n,"stepBigMonths"):-e.datepicker._get(n,"stepMonths"),"M");break;case 38:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,-7,"D"),r=t.ctrlKey||t.metaKey;break;case 39:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,o?-1:1,"D"),r=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(n,"stepBigMonths"):+e.datepicker._get(n,"stepMonths"),"M");break;case 40:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,7,"D"),r=t.ctrlKey||t.metaKey;break;default:r=!1}else 36===t.keyCode&&t.ctrlKey?e.datepicker._showDatepicker(this):r=!1;r&&(t.preventDefault(),t.stopPropagation())},_doKeyPress:function(i){var a,s,n=e.datepicker._getInst(i.target);return e.datepicker._get(n,"constrainInput")?(a=e.datepicker._possibleChars(e.datepicker._get(n,"dateFormat")),s=String.fromCharCode(null==i.charCode?i.keyCode:i.charCode),i.ctrlKey||i.metaKey||" ">s||!a||a.indexOf(s)>-1):t},_doKeyUp:function(t){var i,a=e.datepicker._getInst(t.target);if(a.input.val()!==a.lastVal)try{i=e.datepicker.parseDate(e.datepicker._get(a,"dateFormat"),a.input?a.input.val():null,e.datepicker._getFormatConfig(a)),i&&(e.datepicker._setDateFromField(a),e.datepicker._updateAlternate(a),e.datepicker._updateDatepicker(a))}catch(s){}return!0},_showDatepicker:function(t){if(t=t.target||t,"input"!==t.nodeName.toLowerCase()&&(t=e("input",t.parentNode)[0]),!e.datepicker._isDisabledDatepicker(t)&&e.datepicker._lastInput!==t){var i,a,n,r,o,u,c;i=e.datepicker._getInst(t),e.datepicker._curInst&&e.datepicker._curInst!==i&&(e.datepicker._curInst.dpDiv.stop(!0,!0),i&&e.datepicker._datepickerShowing&&e.datepicker._hideDatepicker(e.datepicker._curInst.input[0])),a=e.datepicker._get(i,"beforeShow"),n=a?a.apply(t,[t,i]):{},n!==!1&&(s(i.settings,n),i.lastVal=null,e.datepicker._lastInput=t,e.datepicker._setDateFromField(i),e.datepicker._inDialog&&(t.value=""),e.datepicker._pos||(e.datepicker._pos=e.datepicker._findPos(t),e.datepicker._pos[1]+=t.offsetHeight),r=!1,e(t).parents().each(function(){return r|="fixed"===e(this).css("position"),!r}),o={left:e.datepicker._pos[0],top:e.datepicker._pos[1]},e.datepicker._pos=null,i.dpDiv.empty(),i.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),e.datepicker._updateDatepicker(i),o=e.datepicker._checkOffset(i,o,r),i.dpDiv.css({position:e.datepicker._inDialog&&e.blockUI?"static":r?"fixed":"absolute",display:"none",left:o.left+"px",top:o.top+"px"}),i.inline||(u=e.datepicker._get(i,"showAnim"),c=e.datepicker._get(i,"duration"),i.dpDiv.zIndex(e(t).zIndex()+1),e.datepicker._datepickerShowing=!0,e.effects&&e.effects.effect[u]?i.dpDiv.show(u,e.datepicker._get(i,"showOptions"),c):i.dpDiv[u||"show"](u?c:null),e.datepicker._shouldFocusInput(i)&&i.input.focus(),e.datepicker._curInst=i))}},_updateDatepicker:function(t){this.maxRows=4,n=t,t.dpDiv.empty().append(this._generateHTML(t)),this._attachHandlers(t),t.dpDiv.find("."+this._dayOverClass+" a").mouseover();var i,a=this._getNumberOfMonths(t),s=a[1],r=17;t.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),s>1&&t.dpDiv.addClass("ui-datepicker-multi-"+s).css("width",r*s+"em"),t.dpDiv[(1!==a[0]||1!==a[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),t.dpDiv[(this._get(t,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),t===e.datepicker._curInst&&e.datepicker._datepickerShowing&&e.datepicker._shouldFocusInput(t)&&t.input.focus(),t.yearshtml&&(i=t.yearshtml,setTimeout(function(){i===t.yearshtml&&t.yearshtml&&t.dpDiv.find("select.ui-datepicker-year:first").replaceWith(t.yearshtml),i=t.yearshtml=null},0))},_shouldFocusInput:function(e){return e.input&&e.input.is(":visible")&&!e.input.is(":disabled")&&!e.input.is(":focus")},_checkOffset:function(t,i,a){var s=t.dpDiv.outerWidth(),n=t.dpDiv.outerHeight(),r=t.input?t.input.outerWidth():0,o=t.input?t.input.outerHeight():0,u=document.documentElement.clientWidth+(a?0:e(document).scrollLeft()),c=document.documentElement.clientHeight+(a?0:e(document).scrollTop());return i.left-=this._get(t,"isRTL")?s-r:0,i.left-=a&&i.left===t.input.offset().left?e(document).scrollLeft():0,i.top-=a&&i.top===t.input.offset().top+o?e(document).scrollTop():0,i.left-=Math.min(i.left,i.left+s>u&&u>s?Math.abs(i.left+s-u):0),i.top-=Math.min(i.top,i.top+n>c&&c>n?Math.abs(n+o):0),i},_findPos:function(t){for(var i,a=this._getInst(t),s=this._get(a,"isRTL");t&&("hidden"===t.type||1!==t.nodeType||e.expr.filters.hidden(t));)t=t[s?"previousSibling":"nextSibling"];return i=e(t).offset(),[i.left,i.top]},_hideDatepicker:function(t){var i,a,s,n,o=this._curInst;!o||t&&o!==e.data(t,r)||this._datepickerShowing&&(i=this._get(o,"showAnim"),a=this._get(o,"duration"),s=function(){e.datepicker._tidyDialog(o)},e.effects&&(e.effects.effect[i]||e.effects[i])?o.dpDiv.hide(i,e.datepicker._get(o,"showOptions"),a,s):o.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?a:null,s),i||s(),this._datepickerShowing=!1,n=this._get(o,"onClose"),n&&n.apply(o.input?o.input[0]:null,[o.input?o.input.val():"",o]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),e.blockUI&&(e.unblockUI(),e("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(e){e.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(t){if(e.datepicker._curInst){var i=e(t.target),a=e.datepicker._getInst(i[0]);(i[0].id!==e.datepicker._mainDivId&&0===i.parents("#"+e.datepicker._mainDivId).length&&!i.hasClass(e.datepicker.markerClassName)&&!i.closest("."+e.datepicker._triggerClass).length&&e.datepicker._datepickerShowing&&(!e.datepicker._inDialog||!e.blockUI)||i.hasClass(e.datepicker.markerClassName)&&e.datepicker._curInst!==a)&&e.datepicker._hideDatepicker()}},_adjustDate:function(t,i,a){var s=e(t),n=this._getInst(s[0]);this._isDisabledDatepicker(s[0])||(this._adjustInstDate(n,i+("M"===a?this._get(n,"showCurrentAtPos"):0),a),this._updateDatepicker(n))},_gotoToday:function(t){var i,a=e(t),s=this._getInst(a[0]);this._get(s,"gotoCurrent")&&s.currentDay?(s.selectedDay=s.currentDay,s.drawMonth=s.selectedMonth=s.currentMonth,s.drawYear=s.selectedYear=s.currentYear):(i=new Date,s.selectedDay=i.getDate(),s.drawMonth=s.selectedMonth=i.getMonth(),s.drawYear=s.selectedYear=i.getFullYear()),this._notifyChange(s),this._adjustDate(a)},_selectMonthYear:function(t,i,a){var s=e(t),n=this._getInst(s[0]);n["selected"+("M"===a?"Month":"Year")]=n["draw"+("M"===a?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(n),this._adjustDate(s)},_selectDay:function(t,i,a,s){var n,r=e(t);e(s).hasClass(this._unselectableClass)||this._isDisabledDatepicker(r[0])||(n=this._getInst(r[0]),n.selectedDay=n.currentDay=e("a",s).html(),n.selectedMonth=n.currentMonth=i,n.selectedYear=n.currentYear=a,this._selectDate(t,this._formatDate(n,n.currentDay,n.currentMonth,n.currentYear)))},_clearDate:function(t){var i=e(t);this._selectDate(i,"")},_selectDate:function(t,i){var a,s=e(t),n=this._getInst(s[0]);i=null!=i?i:this._formatDate(n),n.input&&n.input.val(i),this._updateAlternate(n),a=this._get(n,"onSelect"),a?a.apply(n.input?n.input[0]:null,[i,n]):n.input&&n.input.trigger("change"),n.inline?this._updateDatepicker(n):(this._hideDatepicker(),this._lastInput=n.input[0],"object"!=typeof n.input[0]&&n.input.focus(),this._lastInput=null)},_updateAlternate:function(t){var i,a,s,n=this._get(t,"altField");n&&(i=this._get(t,"altFormat")||this._get(t,"dateFormat"),a=this._getDate(t),s=this.formatDate(i,a,this._getFormatConfig(t)),e(n).each(function(){e(this).val(s)}))},noWeekends:function(e){var t=e.getDay();return[t>0&&6>t,""]},iso8601Week:function(e){var t,i=new Date(e.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),t=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((t-i)/864e5)/7)+1},parseDate:function(i,a,s){if(null==i||null==a)throw"Invalid arguments";if(a="object"==typeof a?""+a:a+"",""===a)return null;var n,r,o,u,c=0,h=(s?s.shortYearCutoff:null)||this._defaults.shortYearCutoff,l="string"!=typeof h?h:(new Date).getFullYear()%100+parseInt(h,10),d=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,p=(s?s.dayNames:null)||this._defaults.dayNames,g=(s?s.monthNamesShort:null)||this._defaults.monthNamesShort,m=(s?s.monthNames:null)||this._defaults.monthNames,f=-1,_=-1,v=-1,k=-1,y=!1,b=function(e){var t=i.length>n+1&&i.charAt(n+1)===e;return t&&n++,t},D=function(e){var t=b(e),i="@"===e?14:"!"===e?20:"y"===e&&t?4:"o"===e?3:2,s=RegExp("^\\d{1,"+i+"}"),n=a.substring(c).match(s);if(!n)throw"Missing number at position "+c;return c+=n[0].length,parseInt(n[0],10)},w=function(i,s,n){var r=-1,o=e.map(b(i)?n:s,function(e,t){return[[t,e]]}).sort(function(e,t){return-(e[1].length-t[1].length)});if(e.each(o,function(e,i){var s=i[1];return a.substr(c,s.length).toLowerCase()===s.toLowerCase()?(r=i[0],c+=s.length,!1):t}),-1!==r)return r+1;throw"Unknown name at position "+c},M=function(){if(a.charAt(c)!==i.charAt(n))throw"Unexpected literal at position "+c;c++};for(n=0;i.length>n;n++)if(y)"'"!==i.charAt(n)||b("'")?M():y=!1;else switch(i.charAt(n)){case"d":v=D("d");break;case"D":w("D",d,p);break;case"o":k=D("o");break;case"m":_=D("m");break;case"M":_=w("M",g,m);break;case"y":f=D("y");break;case"@":u=new Date(D("@")),f=u.getFullYear(),_=u.getMonth()+1,v=u.getDate();break;case"!":u=new Date((D("!")-this._ticksTo1970)/1e4),f=u.getFullYear(),_=u.getMonth()+1,v=u.getDate();break;case"'":b("'")?M():y=!0;break;default:M()}if(a.length>c&&(o=a.substr(c),!/^\s+/.test(o)))throw"Extra/unparsed characters found in date: "+o;if(-1===f?f=(new Date).getFullYear():100>f&&(f+=(new Date).getFullYear()-(new Date).getFullYear()%100+(l>=f?0:-100)),k>-1)for(_=1,v=k;;){if(r=this._getDaysInMonth(f,_-1),r>=v)break;_++,v-=r}if(u=this._daylightSavingAdjust(new Date(f,_-1,v)),u.getFullYear()!==f||u.getMonth()+1!==_||u.getDate()!==v)throw"Invalid date";return u},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(e,t,i){if(!t)return"";var a,s=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,n=(i?i.dayNames:null)||this._defaults.dayNames,r=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,o=(i?i.monthNames:null)||this._defaults.monthNames,u=function(t){var i=e.length>a+1&&e.charAt(a+1)===t;return i&&a++,i},c=function(e,t,i){var a=""+t;if(u(e))for(;i>a.length;)a="0"+a;return a},h=function(e,t,i,a){return u(e)?a[t]:i[t]},l="",d=!1;if(t)for(a=0;e.length>a;a++)if(d)"'"!==e.charAt(a)||u("'")?l+=e.charAt(a):d=!1;else switch(e.charAt(a)){case"d":l+=c("d",t.getDate(),2);break;case"D":l+=h("D",t.getDay(),s,n);break;case"o":l+=c("o",Math.round((new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()-new Date(t.getFullYear(),0,0).getTime())/864e5),3);break;case"m":l+=c("m",t.getMonth()+1,2);break;case"M":l+=h("M",t.getMonth(),r,o);break;case"y":l+=u("y")?t.getFullYear():(10>t.getYear()%100?"0":"")+t.getYear()%100;break;case"@":l+=t.getTime();break;case"!":l+=1e4*t.getTime()+this._ticksTo1970;break;case"'":u("'")?l+="'":d=!0;break;default:l+=e.charAt(a)}return l},_possibleChars:function(e){var t,i="",a=!1,s=function(i){var a=e.length>t+1&&e.charAt(t+1)===i;return a&&t++,a};for(t=0;e.length>t;t++)if(a)"'"!==e.charAt(t)||s("'")?i+=e.charAt(t):a=!1;else switch(e.charAt(t)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":s("'")?i+="'":a=!0;break;default:i+=e.charAt(t)}return i},_get:function(e,i){return e.settings[i]!==t?e.settings[i]:this._defaults[i]},_setDateFromField:function(e,t){if(e.input.val()!==e.lastVal){var i=this._get(e,"dateFormat"),a=e.lastVal=e.input?e.input.val():null,s=this._getDefaultDate(e),n=s,r=this._getFormatConfig(e);try{n=this.parseDate(i,a,r)||s}catch(o){a=t?"":a}e.selectedDay=n.getDate(),e.drawMonth=e.selectedMonth=n.getMonth(),e.drawYear=e.selectedYear=n.getFullYear(),e.currentDay=a?n.getDate():0,e.currentMonth=a?n.getMonth():0,e.currentYear=a?n.getFullYear():0,this._adjustInstDate(e)}},_getDefaultDate:function(e){return this._restrictMinMax(e,this._determineDate(e,this._get(e,"defaultDate"),new Date))},_determineDate:function(t,i,a){var s=function(e){var t=new Date;return t.setDate(t.getDate()+e),t},n=function(i){try{return e.datepicker.parseDate(e.datepicker._get(t,"dateFormat"),i,e.datepicker._getFormatConfig(t))}catch(a){}for(var s=(i.toLowerCase().match(/^c/)?e.datepicker._getDate(t):null)||new Date,n=s.getFullYear(),r=s.getMonth(),o=s.getDate(),u=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,c=u.exec(i);c;){switch(c[2]||"d"){case"d":case"D":o+=parseInt(c[1],10);break;case"w":case"W":o+=7*parseInt(c[1],10);break;case"m":case"M":r+=parseInt(c[1],10),o=Math.min(o,e.datepicker._getDaysInMonth(n,r));break;case"y":case"Y":n+=parseInt(c[1],10),o=Math.min(o,e.datepicker._getDaysInMonth(n,r))}c=u.exec(i)}return new Date(n,r,o)},r=null==i||""===i?a:"string"==typeof i?n(i):"number"==typeof i?isNaN(i)?a:s(i):new Date(i.getTime());return r=r&&"Invalid Date"==""+r?a:r,r&&(r.setHours(0),r.setMinutes(0),r.setSeconds(0),r.setMilliseconds(0)),this._daylightSavingAdjust(r)},_daylightSavingAdjust:function(e){return e?(e.setHours(e.getHours()>12?e.getHours()+2:0),e):null},_setDate:function(e,t,i){var a=!t,s=e.selectedMonth,n=e.selectedYear,r=this._restrictMinMax(e,this._determineDate(e,t,new Date));e.selectedDay=e.currentDay=r.getDate(),e.drawMonth=e.selectedMonth=e.currentMonth=r.getMonth(),e.drawYear=e.selectedYear=e.currentYear=r.getFullYear(),s===e.selectedMonth&&n===e.selectedYear||i||this._notifyChange(e),this._adjustInstDate(e),e.input&&e.input.val(a?"":this._formatDate(e))},_getDate:function(e){var t=!e.currentYear||e.input&&""===e.input.val()?null:this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return t},_attachHandlers:function(t){var i=this._get(t,"stepMonths"),a="#"+t.id.replace(/\\\\/g,"\\");t.dpDiv.find("[data-handler]").map(function(){var t={prev:function(){e.datepicker._adjustDate(a,-i,"M")},next:function(){e.datepicker._adjustDate(a,+i,"M")},hide:function(){e.datepicker._hideDatepicker()},today:function(){e.datepicker._gotoToday(a)},selectDay:function(){return e.datepicker._selectDay(a,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return e.datepicker._selectMonthYear(a,this,"M"),!1},selectYear:function(){return e.datepicker._selectMonthYear(a,this,"Y"),!1}};e(this).bind(this.getAttribute("data-event"),t[this.getAttribute("data-handler")])})},_generateHTML:function(e){var t,i,a,s,n,r,o,u,c,h,l,d,p,g,m,f,_,v,k,y,b,D,w,M,C,x,I,N,T,A,E,S,Y,F,P,O,j,K,R,H=new Date,W=this._daylightSavingAdjust(new Date(H.getFullYear(),H.getMonth(),H.getDate())),L=this._get(e,"isRTL"),U=this._get(e,"showButtonPanel"),B=this._get(e,"hideIfNoPrevNext"),z=this._get(e,"navigationAsDateFormat"),q=this._getNumberOfMonths(e),G=this._get(e,"showCurrentAtPos"),J=this._get(e,"stepMonths"),Q=1!==q[0]||1!==q[1],V=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),$=this._getMinMaxDate(e,"min"),X=this._getMinMaxDate(e,"max"),Z=e.drawMonth-G,et=e.drawYear;if(0>Z&&(Z+=12,et--),X)for(t=this._daylightSavingAdjust(new Date(X.getFullYear(),X.getMonth()-q[0]*q[1]+1,X.getDate())),t=$&&$>t?$:t;this._daylightSavingAdjust(new Date(et,Z,1))>t;)Z--,0>Z&&(Z=11,et--);for(e.drawMonth=Z,e.drawYear=et,i=this._get(e,"prevText"),i=z?this.formatDate(i,this._daylightSavingAdjust(new Date(et,Z-J,1)),this._getFormatConfig(e)):i,a=this._canAdjustMonth(e,-1,et,Z)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(L?"e":"w")+"'>"+i+"</span></a>":B?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(L?"e":"w")+"'>"+i+"</span></a>",s=this._get(e,"nextText"),s=z?this.formatDate(s,this._daylightSavingAdjust(new Date(et,Z+J,1)),this._getFormatConfig(e)):s,n=this._canAdjustMonth(e,1,et,Z)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+s+"'><span class='ui-icon ui-icon-circle-triangle-"+(L?"w":"e")+"'>"+s+"</span></a>":B?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+s+"'><span class='ui-icon ui-icon-circle-triangle-"+(L?"w":"e")+"'>"+s+"</span></a>",r=this._get(e,"currentText"),o=this._get(e,"gotoCurrent")&&e.currentDay?V:W,r=z?this.formatDate(r,o,this._getFormatConfig(e)):r,u=e.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(e,"closeText")+"</button>",c=U?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(L?u:"")+(this._isInRange(e,o)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+r+"</button>":"")+(L?"":u)+"</div>":"",h=parseInt(this._get(e,"firstDay"),10),h=isNaN(h)?0:h,l=this._get(e,"showWeek"),d=this._get(e,"dayNames"),p=this._get(e,"dayNamesMin"),g=this._get(e,"monthNames"),m=this._get(e,"monthNamesShort"),f=this._get(e,"beforeShowDay"),_=this._get(e,"showOtherMonths"),v=this._get(e,"selectOtherMonths"),k=this._getDefaultDate(e),y="",D=0;q[0]>D;D++){for(w="",this.maxRows=4,M=0;q[1]>M;M++){if(C=this._daylightSavingAdjust(new Date(et,Z,e.selectedDay)),x=" ui-corner-all",I="",Q){if(I+="<div class='ui-datepicker-group",q[1]>1)switch(M){case 0:I+=" ui-datepicker-group-first",x=" ui-corner-"+(L?"right":"left");break;case q[1]-1:I+=" ui-datepicker-group-last",x=" ui-corner-"+(L?"left":"right");break;default:I+=" ui-datepicker-group-middle",x=""}I+="'>"}for(I+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+x+"'>"+(/all|left/.test(x)&&0===D?L?n:a:"")+(/all|right/.test(x)&&0===D?L?a:n:"")+this._generateMonthYearHeader(e,Z,et,$,X,D>0||M>0,g,m)+"</div><table class='ui-datepicker-calendar'><thead>"+"<tr>",N=l?"<th class='ui-datepicker-week-col'>"+this._get(e,"weekHeader")+"</th>":"",b=0;7>b;b++)T=(b+h)%7,N+="<th"+((b+h+6)%7>=5?" class='ui-datepicker-week-end'":"")+">"+"<span title='"+d[T]+"'>"+p[T]+"</span></th>";for(I+=N+"</tr></thead><tbody>",A=this._getDaysInMonth(et,Z),et===e.selectedYear&&Z===e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,A)),E=(this._getFirstDayOfMonth(et,Z)-h+7)%7,S=Math.ceil((E+A)/7),Y=Q?this.maxRows>S?this.maxRows:S:S,this.maxRows=Y,F=this._daylightSavingAdjust(new Date(et,Z,1-E)),P=0;Y>P;P++){for(I+="<tr>",O=l?"<td class='ui-datepicker-week-col'>"+this._get(e,"calculateWeek")(F)+"</td>":"",b=0;7>b;b++)j=f?f.apply(e.input?e.input[0]:null,[F]):[!0,""],K=F.getMonth()!==Z,R=K&&!v||!j[0]||$&&$>F||X&&F>X,O+="<td class='"+((b+h+6)%7>=5?" ui-datepicker-week-end":"")+(K?" ui-datepicker-other-month":"")+(F.getTime()===C.getTime()&&Z===e.selectedMonth&&e._keyEvent||k.getTime()===F.getTime()&&k.getTime()===C.getTime()?" "+this._dayOverClass:"")+(R?" "+this._unselectableClass+" ui-state-disabled":"")+(K&&!_?"":" "+j[1]+(F.getTime()===V.getTime()?" "+this._currentClass:"")+(F.getTime()===W.getTime()?" ui-datepicker-today":""))+"'"+(K&&!_||!j[2]?"":" title='"+j[2].replace(/'/g,"&#39;")+"'")+(R?"":" data-handler='selectDay' data-event='click' data-month='"+F.getMonth()+"' data-year='"+F.getFullYear()+"'")+">"+(K&&!_?"&#xa0;":R?"<span class='ui-state-default'>"+F.getDate()+"</span>":"<a class='ui-state-default"+(F.getTime()===W.getTime()?" ui-state-highlight":"")+(F.getTime()===V.getTime()?" ui-state-active":"")+(K?" ui-priority-secondary":"")+"' href='#'>"+F.getDate()+"</a>")+"</td>",F.setDate(F.getDate()+1),F=this._daylightSavingAdjust(F);I+=O+"</tr>"}Z++,Z>11&&(Z=0,et++),I+="</tbody></table>"+(Q?"</div>"+(q[0]>0&&M===q[1]-1?"<div class='ui-datepicker-row-break'></div>":""):""),w+=I}y+=w}return y+=c,e._keyEvent=!1,y},_generateMonthYearHeader:function(e,t,i,a,s,n,r,o){var u,c,h,l,d,p,g,m,f=this._get(e,"changeMonth"),_=this._get(e,"changeYear"),v=this._get(e,"showMonthAfterYear"),k="<div class='ui-datepicker-title'>",y="";if(n||!f)y+="<span class='ui-datepicker-month'>"+r[t]+"</span>";else{for(u=a&&a.getFullYear()===i,c=s&&s.getFullYear()===i,y+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",h=0;12>h;h++)(!u||h>=a.getMonth())&&(!c||s.getMonth()>=h)&&(y+="<option value='"+h+"'"+(h===t?" selected='selected'":"")+">"+o[h]+"</option>");y+="</select>"}if(v||(k+=y+(!n&&f&&_?"":"&#xa0;")),!e.yearshtml)if(e.yearshtml="",n||!_)k+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(l=this._get(e,"yearRange").split(":"),d=(new Date).getFullYear(),p=function(e){var t=e.match(/c[+\-].*/)?i+parseInt(e.substring(1),10):e.match(/[+\-].*/)?d+parseInt(e,10):parseInt(e,10);
+return isNaN(t)?d:t},g=p(l[0]),m=Math.max(g,p(l[1]||"")),g=a?Math.max(g,a.getFullYear()):g,m=s?Math.min(m,s.getFullYear()):m,e.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";m>=g;g++)e.yearshtml+="<option value='"+g+"'"+(g===i?" selected='selected'":"")+">"+g+"</option>";e.yearshtml+="</select>",k+=e.yearshtml,e.yearshtml=null}return k+=this._get(e,"yearSuffix"),v&&(k+=(!n&&f&&_?"":"&#xa0;")+y),k+="</div>"},_adjustInstDate:function(e,t,i){var a=e.drawYear+("Y"===i?t:0),s=e.drawMonth+("M"===i?t:0),n=Math.min(e.selectedDay,this._getDaysInMonth(a,s))+("D"===i?t:0),r=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(a,s,n)));e.selectedDay=r.getDate(),e.drawMonth=e.selectedMonth=r.getMonth(),e.drawYear=e.selectedYear=r.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(e)},_restrictMinMax:function(e,t){var i=this._getMinMaxDate(e,"min"),a=this._getMinMaxDate(e,"max"),s=i&&i>t?i:t;return a&&s>a?a:s},_notifyChange:function(e){var t=this._get(e,"onChangeMonthYear");t&&t.apply(e.input?e.input[0]:null,[e.selectedYear,e.selectedMonth+1,e])},_getNumberOfMonths:function(e){var t=this._get(e,"numberOfMonths");return null==t?[1,1]:"number"==typeof t?[1,t]:t},_getMinMaxDate:function(e,t){return this._determineDate(e,this._get(e,t+"Date"),null)},_getDaysInMonth:function(e,t){return 32-this._daylightSavingAdjust(new Date(e,t,32)).getDate()},_getFirstDayOfMonth:function(e,t){return new Date(e,t,1).getDay()},_canAdjustMonth:function(e,t,i,a){var s=this._getNumberOfMonths(e),n=this._daylightSavingAdjust(new Date(i,a+(0>t?t:s[0]*s[1]),1));return 0>t&&n.setDate(this._getDaysInMonth(n.getFullYear(),n.getMonth())),this._isInRange(e,n)},_isInRange:function(e,t){var i,a,s=this._getMinMaxDate(e,"min"),n=this._getMinMaxDate(e,"max"),r=null,o=null,u=this._get(e,"yearRange");return u&&(i=u.split(":"),a=(new Date).getFullYear(),r=parseInt(i[0],10),o=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(r+=a),i[1].match(/[+\-].*/)&&(o+=a)),(!s||t.getTime()>=s.getTime())&&(!n||t.getTime()<=n.getTime())&&(!r||t.getFullYear()>=r)&&(!o||o>=t.getFullYear())},_getFormatConfig:function(e){var t=this._get(e,"shortYearCutoff");return t="string"!=typeof t?t:(new Date).getFullYear()%100+parseInt(t,10),{shortYearCutoff:t,dayNamesShort:this._get(e,"dayNamesShort"),dayNames:this._get(e,"dayNames"),monthNamesShort:this._get(e,"monthNamesShort"),monthNames:this._get(e,"monthNames")}},_formatDate:function(e,t,i,a){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);var s=t?"object"==typeof t?t:this._daylightSavingAdjust(new Date(a,i,t)):this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return this.formatDate(this._get(e,"dateFormat"),s,this._getFormatConfig(e))}}),e.fn.datepicker=function(t){if(!this.length)return this;e.datepicker.initialized||(e(document).mousedown(e.datepicker._checkExternalClick),e.datepicker.initialized=!0),0===e("#"+e.datepicker._mainDivId).length&&e("body").append(e.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"!=typeof t||"isDisabled"!==t&&"getDate"!==t&&"widget"!==t?"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof t?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this].concat(i)):e.datepicker._attachDatepicker(this,t)}):e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(i))},e.datepicker=new i,e.datepicker.initialized=!1,e.datepicker.uuid=(new Date).getTime(),e.datepicker.version="1.10.4"})(jQuery);(function(e){var t={buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},i={maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0};e.widget("ui.dialog",{version:"1.10.4",options:{appendTo:"body",autoOpen:!0,buttons:[],closeOnEscape:!0,closeText:"close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(t){var i=e(this).css(t).offset().top;0>i&&e(this).css("top",t.top-i)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),this.options.title=this.options.title||this.originalTitle,this._createWrapper(),this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(this.uiDialog),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&e.fn.draggable&&this._makeDraggable(),this.options.resizable&&e.fn.resizable&&this._makeResizable(),this._isOpen=!1},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var t=this.options.appendTo;return t&&(t.jquery||t.nodeType)?e(t):this.document.find(t||"body").eq(0)},_destroy:function(){var e,t=this.originalPosition;this._destroyOverlay(),this.element.removeUniqueId().removeClass("ui-dialog-content ui-widget-content").css(this.originalCss).detach(),this.uiDialog.stop(!0,!0).remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),e=t.parent.children().eq(t.index),e.length&&e[0]!==this.element[0]?e.before(this.element):t.parent.append(this.element)},widget:function(){return this.uiDialog},disable:e.noop,enable:e.noop,close:function(t){var i,a=this;if(this._isOpen&&this._trigger("beforeClose",t)!==!1){if(this._isOpen=!1,this._destroyOverlay(),!this.opener.filter(":focusable").focus().length)try{i=this.document[0].activeElement,i&&"body"!==i.nodeName.toLowerCase()&&e(i).blur()}catch(s){}this._hide(this.uiDialog,this.options.hide,function(){a._trigger("close",t)})}},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(e,t){var i=!!this.uiDialog.nextAll(":visible").insertBefore(this.uiDialog).length;return i&&!t&&this._trigger("focus",e),i},open:function(){var t=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),undefined):(this._isOpen=!0,this.opener=e(this.document[0].activeElement),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this._show(this.uiDialog,this.options.show,function(){t._focusTabbable(),t._trigger("focus")}),this._trigger("open"),undefined)},_focusTabbable:function(){var e=this.element.find("[autofocus]");e.length||(e=this.element.find(":tabbable")),e.length||(e=this.uiDialogButtonPane.find(":tabbable")),e.length||(e=this.uiDialogTitlebarClose.filter(":tabbable")),e.length||(e=this.uiDialog),e.eq(0).focus()},_keepFocus:function(t){function i(){var t=this.document[0].activeElement,i=this.uiDialog[0]===t||e.contains(this.uiDialog[0],t);i||this._focusTabbable()}t.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=e("<div>").addClass("ui-dialog ui-widget ui-widget-content ui-corner-all ui-front "+this.options.dialogClass).hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._on(this.uiDialog,{keydown:function(t){if(this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===e.ui.keyCode.ESCAPE)return t.preventDefault(),this.close(t),undefined;if(t.keyCode===e.ui.keyCode.TAB){var i=this.uiDialog.find(":tabbable"),a=i.filter(":first"),s=i.filter(":last");t.target!==s[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==a[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(s.focus(1),t.preventDefault()):(a.focus(1),t.preventDefault())}},mousedown:function(e){this._moveToTop(e)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var t;this.uiDialogTitlebar=e("<div>").addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(this.uiDialog),this._on(this.uiDialogTitlebar,{mousedown:function(t){e(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.focus()}}),this.uiDialogTitlebarClose=e("<button type='button'></button>").button({label:this.options.closeText,icons:{primary:"ui-icon-closethick"},text:!1}).addClass("ui-dialog-titlebar-close").appendTo(this.uiDialogTitlebar),this._on(this.uiDialogTitlebarClose,{click:function(e){e.preventDefault(),this.close(e)}}),t=e("<span>").uniqueId().addClass("ui-dialog-title").prependTo(this.uiDialogTitlebar),this._title(t),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(e){this.options.title||e.html("&#160;"),e.text(this.options.title)},_createButtonPane:function(){this.uiDialogButtonPane=e("<div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),this.uiButtonSet=e("<div>").addClass("ui-dialog-buttonset").appendTo(this.uiDialogButtonPane),this._createButtons()},_createButtons:function(){var t=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),e.isEmptyObject(i)||e.isArray(i)&&!i.length?(this.uiDialog.removeClass("ui-dialog-buttons"),undefined):(e.each(i,function(i,a){var s,n;a=e.isFunction(a)?{click:a,text:i}:a,a=e.extend({type:"button"},a),s=a.click,a.click=function(){s.apply(t.element[0],arguments)},n={icons:a.icons,text:a.showText},delete a.icons,delete a.showText,e("<button></button>",a).button(n).appendTo(t.uiButtonSet)}),this.uiDialog.addClass("ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),undefined)},_makeDraggable:function(){function t(e){return{position:e.position,offset:e.offset}}var i=this,a=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(a,s){e(this).addClass("ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",a,t(s))},drag:function(e,a){i._trigger("drag",e,t(a))},stop:function(s,n){a.position=[n.position.left-i.document.scrollLeft(),n.position.top-i.document.scrollTop()],e(this).removeClass("ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",s,t(n))}})},_makeResizable:function(){function t(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}var i=this,a=this.options,s=a.resizable,n=this.uiDialog.css("position"),r="string"==typeof s?s:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:a.maxWidth,maxHeight:a.maxHeight,minWidth:a.minWidth,minHeight:this._minHeight(),handles:r,start:function(a,s){e(this).addClass("ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",a,t(s))},resize:function(e,a){i._trigger("resize",e,t(a))},stop:function(s,n){a.height=e(this).height(),a.width=e(this).width(),e(this).removeClass("ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",s,t(n))}}).css("position",n)},_minHeight:function(){var e=this.options;return"auto"===e.height?e.minHeight:Math.min(e.minHeight,e.height)},_position:function(){var e=this.uiDialog.is(":visible");e||this.uiDialog.show(),this.uiDialog.position(this.options.position),e||this.uiDialog.hide()},_setOptions:function(a){var s=this,n=!1,r={};e.each(a,function(e,a){s._setOption(e,a),e in t&&(n=!0),e in i&&(r[e]=a)}),n&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",r)},_setOption:function(e,t){var i,a,s=this.uiDialog;"dialogClass"===e&&s.removeClass(this.options.dialogClass).addClass(t),"disabled"!==e&&(this._super(e,t),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:""+t}),"draggable"===e&&(i=s.is(":data(ui-draggable)"),i&&!t&&s.draggable("destroy"),!i&&t&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&(a=s.is(":data(ui-resizable)"),a&&!t&&s.resizable("destroy"),a&&"string"==typeof t&&s.resizable("option","handles",t),a||t===!1||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var e,t,i,a=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),a.minWidth>a.width&&(a.width=a.minWidth),e=this.uiDialog.css({height:"auto",width:a.width}).outerHeight(),t=Math.max(0,a.minHeight-e),i="number"==typeof a.maxHeight?Math.max(0,a.maxHeight-e):"none","auto"===a.height?this.element.css({minHeight:t,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,a.height-e)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var t=e(this);return e("<div>").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(t){return e(t.target).closest(".ui-dialog").length?!0:!!e(t.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var t=this,i=this.widgetFullName;e.ui.dialog.overlayInstances||this._delay(function(){e.ui.dialog.overlayInstances&&this.document.bind("focusin.dialog",function(a){t._allowInteraction(a)||(a.preventDefault(),e(".ui-dialog:visible:last .ui-dialog-content").data(i)._focusTabbable())})}),this.overlay=e("<div>").addClass("ui-widget-overlay ui-front").appendTo(this._appendTo()),this._on(this.overlay,{mousedown:"_keepFocus"}),e.ui.dialog.overlayInstances++}},_destroyOverlay:function(){this.options.modal&&this.overlay&&(e.ui.dialog.overlayInstances--,e.ui.dialog.overlayInstances||this.document.unbind("focusin.dialog"),this.overlay.remove(),this.overlay=null)}}),e.ui.dialog.overlayInstances=0,e.uiBackCompat!==!1&&e.widget("ui.dialog",e.ui.dialog,{_position:function(){var t,i=this.options.position,a=[],s=[0,0];i?(("string"==typeof i||"object"==typeof i&&"0"in i)&&(a=i.split?i.split(" "):[i[0],i[1]],1===a.length&&(a[1]=a[0]),e.each(["left","top"],function(e,t){+a[e]===a[e]&&(s[e]=a[e],a[e]=t)}),i={my:a[0]+(0>s[0]?s[0]:"+"+s[0])+" "+a[1]+(0>s[1]?s[1]:"+"+s[1]),at:a.join(" ")}),i=e.extend({},e.ui.dialog.prototype.options.position,i)):i=e.ui.dialog.prototype.options.position,t=this.uiDialog.is(":visible"),t||this.uiDialog.show(),this.uiDialog.position(i),t||this.uiDialog.hide()}})})(jQuery);(function(t){t.widget("ui.menu",{version:"1.10.4",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content ui-corner-all").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}).bind("click"+this.eventNamespace,t.proxy(function(t){this.options.disabled&&t.preventDefault()},this)),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item > a":function(t){t.preventDefault()},"click .ui-state-disabled > a":function(t){t.preventDefault()},"click .ui-menu-item:has(a)":function(e){var i=t(e.target).closest(".ui-menu-item");!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&t(this.document[0].activeElement).closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){var i=t(e.currentTarget);i.siblings().children(".ui-state-active").removeClass("ui-state-active"),this.focus(e,i)},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.children(".ui-menu-item").eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){t.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(e){t(e.target).closest(".ui-menu").length||this.collapseAll(e),this.mouseHandled=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeClass("ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").children("a").removeUniqueId().removeClass("ui-corner-all ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var e=t(this);e.data("ui-menu-submenu-carat")&&e.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(e){function i(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}var s,n,a,o,r,l=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:l=!1,n=this.previousFilter||"",a=String.fromCharCode(e.keyCode),o=!1,clearTimeout(this.filterTimer),a===n?o=!0:a=n+a,r=RegExp("^"+i(a),"i"),s=this.activeMenu.children(".ui-menu-item").filter(function(){return r.test(t(this).children("a").text())}),s=o&&-1!==s.index(this.active.next())?this.active.nextAll(".ui-menu-item"):s,s.length||(a=String.fromCharCode(e.keyCode),r=RegExp("^"+i(a),"i"),s=this.activeMenu.children(".ui-menu-item").filter(function(){return r.test(t(this).children("a").text())})),s.length?(this.focus(e,s),s.length>1?(this.previousFilter=a,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter):delete this.previousFilter}l&&e.preventDefault()},_activate:function(t){this.active.is(".ui-state-disabled")||(this.active.children("a[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i=this.options.icons.submenu,s=this.element.find(this.options.menus);this.element.toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length),s.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-corner-all").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),s=e.prev("a"),n=t("<span>").addClass("ui-menu-icon ui-icon "+i).data("ui-menu-submenu-carat",!0);s.attr("aria-haspopup","true").prepend(n),e.attr("aria-labelledby",s.attr("id"))}),e=s.add(this.element),e.children(":not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","presentation").children("a").uniqueId().addClass("ui-corner-all").attr({tabIndex:-1,role:this._itemRole()}),e.children(":not(.ui-menu-item)").each(function(){var e=t(this);/[^\-\u2014\u2013\s]/.test(e.text())||e.addClass("ui-widget-content ui-menu-divider")}),e.children(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){"icons"===t&&this.element.find(".ui-menu-icon").removeClass(this.options.icons.submenu).addClass(e.submenu),this._super(t,e)},focus:function(t,e){var i,s;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children("a").addClass("ui-state-focus"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),this.active.parent().closest(".ui-menu-item").children("a:first").addClass("ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(".ui-menu"),i.length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n,a,o,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,a=this.activeMenu.scrollTop(),o=this.activeMenu.height(),r=e.height(),0>n?this.activeMenu.scrollTop(a+n):n+r>o&&this.activeMenu.scrollTop(a+n-o+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this.active.children("a").removeClass("ui-state-focus"),this.active=null,this._trigger("blur",t,{item:this.active}))},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find("a.ui-state-active").removeClass("ui-state-active")},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").children(".ui-menu-item").first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.children(".ui-menu-item")[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=t(this),0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.children(".ui-menu-item")[this.active?"last":"first"]())),undefined):(this.next(e),undefined)},previousPage:function(e){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=t(this),i.offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.children(".ui-menu-item").first())),undefined):(this.next(e),undefined)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(e){this.active=this.active||t(e.target).closest(".ui-menu-item");var i={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(e,!0),this._trigger("select",e,i)}})})(jQuery);(function(t,e){t.widget("ui.progressbar",{version:"1.10.4",options:{max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min}),this.valueDiv=t("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element),this._refreshValue()},_destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove()},value:function(t){return t===e?this.options.value:(this.options.value=this._constrainedValue(t),this._refreshValue(),e)},_constrainedValue:function(t){return t===e&&(t=this.options.value),this.indeterminate=t===!1,"number"!=typeof t&&(t=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var e=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||e>this.min).toggleClass("ui-corner-right",e===this.options.max).width(i.toFixed(0)+"%"),this.element.toggleClass("ui-progressbar-indeterminate",this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=t("<div class='ui-progressbar-overlay'></div>").appendTo(this.valueDiv))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":e}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==e&&(this.oldValue=e,this._trigger("change")),e===this.options.max&&this._trigger("complete")}})})(jQuery);(function(t){var e=5;t.widget("ui.slider",t.ui.mouse,{version:"1.10.4",widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"),this._refresh(),this._setOption("disabled",this.options.disabled),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var e,i,s=this.options,n=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),a="<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>",o=[];for(i=s.values&&s.values.length||1,n.length>i&&(n.slice(i).remove(),n=n.slice(0,i)),e=n.length;i>e;e++)o.push(a);this.handles=n.add(t(o.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.each(function(e){t(this).data("ui-slider-handle-index",e)})},_createRange:function(){var e=this.options,i="";e.range?(e.range===!0&&(e.values?e.values.length&&2!==e.values.length?e.values=[e.values[0],e.values[0]]:t.isArray(e.values)&&(e.values=e.values.slice(0)):e.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?this.range.removeClass("ui-slider-range-min ui-slider-range-max").css({left:"",bottom:""}):(this.range=t("<div></div>").appendTo(this.element),i="ui-slider-range ui-widget-header ui-corner-all"),this.range.addClass(i+("min"===e.range||"max"===e.range?" ui-slider-range-"+e.range:""))):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){var t=this.handles.add(this.range).filter("a");this._off(t),this._on(t,this._handleEvents),this._hoverable(t),this._focusable(t)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(e){var i,s,n,a,o,r,l,h,u=this,c=this.options;return c.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:e.pageX,y:e.pageY},s=this._normValueFromMouse(i),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(e){var i=Math.abs(s-u.values(e));(n>i||n===i&&(e===u._lastChangedValue||u.values(e)===c.min))&&(n=i,a=t(this),o=e)}),r=this._start(e,o),r===!1?!1:(this._mouseSliding=!0,this._handleIndex=o,a.addClass("ui-state-active").focus(),l=a.offset(),h=!t(e.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=h?{left:0,top:0}:{left:e.pageX-l.left-a.width()/2,top:e.pageY-l.top-a.height()/2-(parseInt(a.css("borderTopWidth"),10)||0)-(parseInt(a.css("borderBottomWidth"),10)||0)+(parseInt(a.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(e,o,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(t){var e={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(e);return this._slide(t,this._handleIndex,i),!1},_mouseStop:function(t){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(t){var e,i,s,n,a;return"horizontal"===this.orientation?(e=this.elementSize.width,i=t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(e=this.elementSize.height,i=t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/e,s>1&&(s=1),0>s&&(s=0),"vertical"===this.orientation&&(s=1-s),n=this._valueMax()-this._valueMin(),a=this._valueMin()+s*n,this._trimAlignValue(a)},_start:function(t,e){var i={handle:this.handles[e],value:this.value()};return this.options.values&&this.options.values.length&&(i.value=this.values(e),i.values=this.values()),this._trigger("start",t,i)},_slide:function(t,e,i){var s,n,a;this.options.values&&this.options.values.length?(s=this.values(e?0:1),2===this.options.values.length&&this.options.range===!0&&(0===e&&i>s||1===e&&s>i)&&(i=s),i!==this.values(e)&&(n=this.values(),n[e]=i,a=this._trigger("slide",t,{handle:this.handles[e],value:i,values:n}),s=this.values(e?0:1),a!==!1&&this.values(e,i))):i!==this.value()&&(a=this._trigger("slide",t,{handle:this.handles[e],value:i}),a!==!1&&this.value(i))},_stop:function(t,e){var i={handle:this.handles[e],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(e),i.values=this.values()),this._trigger("stop",t,i)},_change:function(t,e){if(!this._keySliding&&!this._mouseSliding){var i={handle:this.handles[e],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(e),i.values=this.values()),this._lastChangedValue=e,this._trigger("change",t,i)}},value:function(t){return arguments.length?(this.options.value=this._trimAlignValue(t),this._refreshValue(),this._change(null,0),undefined):this._value()},values:function(e,i){var s,n,a;if(arguments.length>1)return this.options.values[e]=this._trimAlignValue(i),this._refreshValue(),this._change(null,e),undefined;if(!arguments.length)return this._values();if(!t.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(e):this.value();for(s=this.options.values,n=arguments[0],a=0;s.length>a;a+=1)s[a]=this._trimAlignValue(n[a]),this._change(null,a);this._refreshValue()},_setOption:function(e,i){var s,n=0;switch("range"===e&&this.options.range===!0&&("min"===i?(this.options.value=this._values(0),this.options.values=null):"max"===i&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),t.isArray(this.options.values)&&(n=this.options.values.length),t.Widget.prototype._setOption.apply(this,arguments),e){case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue();break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),s=0;n>s;s+=1)this._change(null,s);this._animateOff=!1;break;case"min":case"max":this._animateOff=!0,this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_value:function(){var t=this.options.value;return t=this._trimAlignValue(t)},_values:function(t){var e,i,s;if(arguments.length)return e=this.options.values[t],e=this._trimAlignValue(e);if(this.options.values&&this.options.values.length){for(i=this.options.values.slice(),s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(i[s]);return i}return[]},_trimAlignValue:function(t){if(this._valueMin()>=t)return this._valueMin();if(t>=this._valueMax())return this._valueMax();var e=this.options.step>0?this.options.step:1,i=(t-this._valueMin())%e,s=t-i;return 2*Math.abs(i)>=e&&(s+=i>0?e:-e),parseFloat(s.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var e,i,s,n,a,o=this.options.range,r=this.options,l=this,h=this._animateOff?!1:r.animate,u={};this.options.values&&this.options.values.length?this.handles.each(function(s){i=100*((l.values(s)-l._valueMin())/(l._valueMax()-l._valueMin())),u["horizontal"===l.orientation?"left":"bottom"]=i+"%",t(this).stop(1,1)[h?"animate":"css"](u,r.animate),l.options.range===!0&&("horizontal"===l.orientation?(0===s&&l.range.stop(1,1)[h?"animate":"css"]({left:i+"%"},r.animate),1===s&&l.range[h?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:r.animate})):(0===s&&l.range.stop(1,1)[h?"animate":"css"]({bottom:i+"%"},r.animate),1===s&&l.range[h?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:r.animate}))),e=i}):(s=this.value(),n=this._valueMin(),a=this._valueMax(),i=a!==n?100*((s-n)/(a-n)):0,u["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[h?"animate":"css"](u,r.animate),"min"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[h?"animate":"css"]({width:i+"%"},r.animate),"max"===o&&"horizontal"===this.orientation&&this.range[h?"animate":"css"]({width:100-i+"%"},{queue:!1,duration:r.animate}),"min"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[h?"animate":"css"]({height:i+"%"},r.animate),"max"===o&&"vertical"===this.orientation&&this.range[h?"animate":"css"]({height:100-i+"%"},{queue:!1,duration:r.animate}))},_handleEvents:{keydown:function(i){var s,n,a,o,r=t(i.target).data("ui-slider-handle-index");switch(i.keyCode){case t.ui.keyCode.HOME:case t.ui.keyCode.END:case t.ui.keyCode.PAGE_UP:case t.ui.keyCode.PAGE_DOWN:case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(i.preventDefault(),!this._keySliding&&(this._keySliding=!0,t(i.target).addClass("ui-state-active"),s=this._start(i,r),s===!1))return}switch(o=this.options.step,n=a=this.options.values&&this.options.values.length?this.values(r):this.value(),i.keyCode){case t.ui.keyCode.HOME:a=this._valueMin();break;case t.ui.keyCode.END:a=this._valueMax();break;case t.ui.keyCode.PAGE_UP:a=this._trimAlignValue(n+(this._valueMax()-this._valueMin())/e);break;case t.ui.keyCode.PAGE_DOWN:a=this._trimAlignValue(n-(this._valueMax()-this._valueMin())/e);break;case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:if(n===this._valueMax())return;a=this._trimAlignValue(n+o);break;case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(n===this._valueMin())return;a=this._trimAlignValue(n-o)}this._slide(i,r,a)},click:function(t){t.preventDefault()},keyup:function(e){var i=t(e.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(e,i),this._change(e,i),t(e.target).removeClass("ui-state-active"))}}})})(jQuery);(function(t){function e(t){return function(){var e=this.element.val();t.apply(this,arguments),this._refresh(),e!==this.element.val()&&this._trigger("change")}}t.widget("ui.spinner",{version:"1.10.4",defaultElement:"<input>",widgetEventPrefix:"spin",options:{culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var e={},i=this.element;return t.each(["min","max","step"],function(t,s){var n=i.attr(s);void 0!==n&&n.length&&(e[s]=n)}),e},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t),void 0)},mousewheel:function(t,e){if(e){if(!this.spinning&&!this._start(t))return!1;this._spin((e>0?1:-1)*this.options.step,t),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(t)},100),t.preventDefault()}},"mousedown .ui-spinner-button":function(e){function i(){var t=this.element[0]===this.document[0].activeElement;t||(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===this.document[0].activeElement?this.previous:this.element.val(),e.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(e)!==!1&&this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(e){return t(e.currentTarget).hasClass("ui-state-active")?this._start(e)===!1?!1:(this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_draw:function(){var t=this.uiSpinner=this.element.addClass("ui-spinner-input").attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());this.element.attr("role","spinbutton"),this.buttons=t.find(".ui-spinner-button").attr("tabIndex",-1).button().removeClass("ui-corner-all"),this.buttons.height()>Math.ceil(.5*t.height())&&t.height()>0&&t.height(t.height()),this.options.disabled&&this.disable()},_keydown:function(e){var i=this.options,s=t.ui.keyCode;switch(e.keyCode){case s.UP:return this._repeat(null,1,e),!0;case s.DOWN:return this._repeat(null,-1,e),!0;case s.PAGE_UP:return this._repeat(null,i.page,e),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,e),!0}return!1},_uiSpinnerHtml:function(){return"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>"},_buttonHtml:function(){return"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'><span class='ui-icon "+this.options.icons.up+"'>&#9650;</span>"+"</a>"+"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>"+"<span class='ui-icon "+this.options.icons.down+"'>&#9660;</span>"+"</a>"},_start:function(t){return this.spinning||this._trigger("start",t)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(t,e,i){t=t||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,e,i)},t),this._spin(e*this.options.step,i)},_spin:function(t,e){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+t*this._increment(this.counter)),this.spinning&&this._trigger("spin",e,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(e){var i=this.options.incremental;return i?t.isFunction(i)?i(e):Math.floor(e*e*e/5e4-e*e/500+17*e/200+1):1},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=""+t,i=e.indexOf(".");return-1===i?0:e.length-i-1},_adjustValue:function(t){var e,i,s=this.options;return e=null!==s.min?s.min:0,i=t-e,i=Math.round(i/s.step)*s.step,t=e+i,t=parseFloat(t.toFixed(this._precision())),null!==s.max&&t>s.max?s.max:null!==s.min&&s.min>t?s.min:t},_stop:function(t){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",t))},_setOption:function(t,e){if("culture"===t||"numberFormat"===t){var i=this._parse(this.element.val());return this.options[t]=e,this.element.val(this._format(i)),void 0}("max"===t||"min"===t||"step"===t)&&"string"==typeof e&&(e=this._parse(e)),"icons"===t&&(this.buttons.first().find(".ui-icon").removeClass(this.options.icons.up).addClass(e.up),this.buttons.last().find(".ui-icon").removeClass(this.options.icons.down).addClass(e.down)),this._super(t,e),"disabled"===t&&(e?(this.element.prop("disabled",!0),this.buttons.button("disable")):(this.element.prop("disabled",!1),this.buttons.button("enable")))},_setOptions:e(function(t){this._super(t),this._value(this.element.val())}),_parse:function(t){return"string"==typeof t&&""!==t&&(t=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(t,10,this.options.culture):+t),""===t||isNaN(t)?null:t},_format:function(t){return""===t?"":window.Globalize&&this.options.numberFormat?Globalize.format(t,this.options.numberFormat,this.options.culture):t},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},_value:function(t,e){var i;""!==t&&(i=this._parse(t),null!==i&&(e||(i=this._adjustValue(i)),t=this._format(i))),this.element.val(t),this._refresh()},_destroy:function(){this.element.removeClass("ui-spinner-input").prop("disabled",!1).removeAttr("autocomplete").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:e(function(t){this._stepUp(t)}),_stepUp:function(t){this._start()&&(this._spin((t||1)*this.options.step),this._stop())},stepDown:e(function(t){this._stepDown(t)}),_stepDown:function(t){this._start()&&(this._spin((t||1)*-this.options.step),this._stop())},pageUp:e(function(t){this._stepUp((t||1)*this.options.page)}),pageDown:e(function(t){this._stepDown((t||1)*this.options.page)}),value:function(t){return arguments.length?(e(this._value).call(this,t),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}})})(jQuery);(function(t,e){function i(){return++n}function s(t){return t=t.cloneNode(!1),t.hash.length>1&&decodeURIComponent(t.href.replace(a,""))===decodeURIComponent(location.href.replace(a,""))}var n=0,a=/#.*$/;t.widget("ui.tabs",{version:"1.10.4",delay:300,options:{active:null,collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_create:function(){var e=this,i=this.options;this.running=!1,this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible",i.collapsible).delegate(".ui-tabs-nav > li","mousedown"+this.eventNamespace,function(e){t(this).is(".ui-state-disabled")&&e.preventDefault()}).delegate(".ui-tabs-anchor","focus"+this.eventNamespace,function(){t(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this._processTabs(),i.active=this._initialActive(),t.isArray(i.disabled)&&(i.disabled=t.unique(i.disabled.concat(t.map(this.tabs.filter(".ui-state-disabled"),function(t){return e.tabs.index(t)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(i.active):t(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var i=this.options.active,s=this.options.collapsible,n=location.hash.substring(1);return null===i&&(n&&this.tabs.each(function(s,a){return t(a).attr("aria-controls")===n?(i=s,!1):e}),null===i&&(i=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===i||-1===i)&&(i=this.tabs.length?0:!1)),i!==!1&&(i=this.tabs.index(this.tabs.eq(i)),-1===i&&(i=s?!1:0)),!s&&i===!1&&this.anchors.length&&(i=0),i},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):t()}},_tabKeydown:function(i){var s=t(this.document[0].activeElement).closest("li"),n=this.tabs.index(s),a=!0;if(!this._handlePageNav(i)){switch(i.keyCode){case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:n++;break;case t.ui.keyCode.UP:case t.ui.keyCode.LEFT:a=!1,n--;break;case t.ui.keyCode.END:n=this.anchors.length-1;break;case t.ui.keyCode.HOME:n=0;break;case t.ui.keyCode.SPACE:return i.preventDefault(),clearTimeout(this.activating),this._activate(n),e;case t.ui.keyCode.ENTER:return i.preventDefault(),clearTimeout(this.activating),this._activate(n===this.options.active?!1:n),e;default:return}i.preventDefault(),clearTimeout(this.activating),n=this._focusNextTab(n,a),i.ctrlKey||(s.attr("aria-selected","false"),this.tabs.eq(n).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",n)},this.delay))}},_panelKeydown:function(e){this._handlePageNav(e)||e.ctrlKey&&e.keyCode===t.ui.keyCode.UP&&(e.preventDefault(),this.active.focus())},_handlePageNav:function(i){return i.altKey&&i.keyCode===t.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):i.altKey&&i.keyCode===t.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):e},_findNextTab:function(e,i){function s(){return e>n&&(e=0),0>e&&(e=n),e}for(var n=this.tabs.length-1;-1!==t.inArray(s(),this.options.disabled);)e=i?e+1:e-1;return e},_focusNextTab:function(t,e){return t=this._findNextTab(t,e),this.tabs.eq(t).focus(),t},_setOption:function(t,i){return"active"===t?(this._activate(i),e):"disabled"===t?(this._setupDisabled(i),e):(this._super(t,i),"collapsible"===t&&(this.element.toggleClass("ui-tabs-collapsible",i),i||this.options.active!==!1||this._activate(0)),"event"===t&&this._setupEvents(i),"heightStyle"===t&&this._setupHeightStyle(i),e)},_tabId:function(t){return t.attr("aria-controls")||"ui-tabs-"+i()},_sanitizeSelector:function(t){return t?t.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var e=this.options,i=this.tablist.children(":has(a[href])");e.disabled=t.map(i.filter(".ui-state-disabled"),function(t){return i.index(t)}),this._processTabs(),e.active!==!1&&this.anchors.length?this.active.length&&!t.contains(this.tablist[0],this.active[0])?this.tabs.length===e.disabled.length?(e.active=!1,this.active=t()):this._activate(this._findNextTab(Math.max(0,e.active-1),!1)):e.active=this.tabs.index(this.active):(e.active=!1,this.active=t()),this._refresh()},_refresh:function(){this._setupDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-expanded":"false","aria-hidden":"true"}),this.active.length?(this.active.addClass("ui-tabs-active ui-state-active").attr({"aria-selected":"true",tabIndex:0}),this._getPanelForTab(this.active).show().attr({"aria-expanded":"true","aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var e=this;this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist"),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return t("a",this)[0]}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=t(),this.anchors.each(function(i,n){var a,o,r,h=t(n).uniqueId().attr("id"),l=t(n).closest("li"),c=l.attr("aria-controls");s(n)?(a=n.hash,o=e.element.find(e._sanitizeSelector(a))):(r=e._tabId(l),a="#"+r,o=e.element.find(a),o.length||(o=e._createPanel(r),o.insertAfter(e.panels[i-1]||e.tablist)),o.attr("aria-live","polite")),o.length&&(e.panels=e.panels.add(o)),c&&l.data("ui-tabs-aria-controls",c),l.attr({"aria-controls":a.substring(1),"aria-labelledby":h}),o.attr("aria-labelledby",h)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel")},_getList:function(){return this.tablist||this.element.find("ol,ul").eq(0)},_createPanel:function(e){return t("<div>").attr("id",e).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)},_setupDisabled:function(e){t.isArray(e)&&(e.length?e.length===this.anchors.length&&(e=!0):e=!1);for(var i,s=0;i=this.tabs[s];s++)e===!0||-1!==t.inArray(s,e)?t(i).addClass("ui-state-disabled").attr("aria-disabled","true"):t(i).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=e},_setupEvents:function(e){var i={click:function(t){t.preventDefault()}};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(e){var i,s=this.element.parent();"fill"===e?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var e=t(this),s=e.css("position");"absolute"!==s&&"fixed"!==s&&(i-=e.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=t(this).outerHeight(!0)}),this.panels.each(function(){t(this).height(Math.max(0,i-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.panels.each(function(){i=Math.max(i,t(this).height("").height())}).height(i))},_eventHandler:function(e){var i=this.options,s=this.active,n=t(e.currentTarget),a=n.closest("li"),o=a[0]===s[0],r=o&&i.collapsible,h=r?t():this._getPanelForTab(a),l=s.length?this._getPanelForTab(s):t(),c={oldTab:s,oldPanel:l,newTab:r?t():a,newPanel:h};e.preventDefault(),a.hasClass("ui-state-disabled")||a.hasClass("ui-tabs-loading")||this.running||o&&!i.collapsible||this._trigger("beforeActivate",e,c)===!1||(i.active=r?!1:this.tabs.index(a),this.active=o?t():a,this.xhr&&this.xhr.abort(),l.length||h.length||t.error("jQuery UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(a),e),this._toggle(e,c))},_toggle:function(e,i){function s(){a.running=!1,a._trigger("activate",e,i)}function n(){i.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),o.length&&a.options.show?a._show(o,a.options.show,s):(o.show(),s())}var a=this,o=i.newPanel,r=i.oldPanel;this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,function(){i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),n()}):(i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),r.hide(),n()),r.attr({"aria-expanded":"false","aria-hidden":"true"}),i.oldTab.attr("aria-selected","false"),o.length&&r.length?i.oldTab.attr("tabIndex",-1):o.length&&this.tabs.filter(function(){return 0===t(this).attr("tabIndex")}).attr("tabIndex",-1),o.attr({"aria-expanded":"true","aria-hidden":"false"}),i.newTab.attr({"aria-selected":"true",tabIndex:0})},_activate:function(e){var i,s=this._findActive(e);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return e===!1?t():this.tabs.eq(e)},_getIndex:function(t){return"string"==typeof t&&(t=this.anchors.index(this.anchors.filter("[href$='"+t+"']"))),t},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"),this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"),this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){t.data(this,"ui-tabs-destroy")?t(this).remove():t(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")}),this.tabs.each(function(){var e=t(this),i=e.data("ui-tabs-aria-controls");i?e.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):e.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(i){var s=this.options.disabled;s!==!1&&(i===e?s=!1:(i=this._getIndex(i),s=t.isArray(s)?t.map(s,function(t){return t!==i?t:null}):t.map(this.tabs,function(t,e){return e!==i?e:null})),this._setupDisabled(s))},disable:function(i){var s=this.options.disabled;if(s!==!0){if(i===e)s=!0;else{if(i=this._getIndex(i),-1!==t.inArray(i,s))return;s=t.isArray(s)?t.merge([i],s).sort():[i]}this._setupDisabled(s)}},load:function(e,i){e=this._getIndex(e);var n=this,a=this.tabs.eq(e),o=a.find(".ui-tabs-anchor"),r=this._getPanelForTab(a),h={tab:a,panel:r};s(o[0])||(this.xhr=t.ajax(this._ajaxSettings(o,i,h)),this.xhr&&"canceled"!==this.xhr.statusText&&(a.addClass("ui-tabs-loading"),r.attr("aria-busy","true"),this.xhr.success(function(t){setTimeout(function(){r.html(t),n._trigger("load",i,h)},1)}).complete(function(t,e){setTimeout(function(){"abort"===e&&n.panels.stop(!1,!0),a.removeClass("ui-tabs-loading"),r.removeAttr("aria-busy"),t===n.xhr&&delete n.xhr},1)})))},_ajaxSettings:function(e,i,s){var n=this;return{url:e.attr("href"),beforeSend:function(e,a){return n._trigger("beforeLoad",i,t.extend({jqXHR:e,ajaxSettings:a},s))}}},_getPanelForTab:function(e){var i=t(e).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}})})(jQuery);(function(t){function e(e,i){var s=(e.attr("aria-describedby")||"").split(/\s+/);s.push(i),e.data("ui-tooltip-id",i).attr("aria-describedby",t.trim(s.join(" ")))}function i(e){var i=e.data("ui-tooltip-id"),s=(e.attr("aria-describedby")||"").split(/\s+/),n=t.inArray(i,s);-1!==n&&s.splice(n,1),e.removeData("ui-tooltip-id"),s=t.trim(s.join(" ")),s?e.attr("aria-describedby",s):e.removeAttr("aria-describedby")}var s=0;t.widget("ui.tooltip",{version:"1.10.4",options:{content:function(){var e=t(this).attr("title")||"";return t("<a>").text(e).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,tooltipClass:null,track:!1,close:null,open:null},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.options.disabled&&this._disable()},_setOption:function(e,i){var s=this;return"disabled"===e?(this[i?"_disable":"_enable"](),this.options[e]=i,void 0):(this._super(e,i),"content"===e&&t.each(this.tooltips,function(t,e){s._updateContent(e)}),void 0)},_disable:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur");n.target=n.currentTarget=s[0],e.close(n,!0)}),this.element.find(this.options.items).addBack().each(function(){var e=t(this);e.is("[title]")&&e.data("ui-tooltip-title",e.attr("title")).attr("title","")})},_enable:function(){this.element.find(this.options.items).addBack().each(function(){var e=t(this);e.data("ui-tooltip-title")&&e.attr("title",e.data("ui-tooltip-title"))})},open:function(e){var i=this,s=t(e?e.target:this.element).closest(this.options.items);s.length&&!s.data("ui-tooltip-id")&&(s.attr("title")&&s.data("ui-tooltip-title",s.attr("title")),s.data("ui-tooltip-open",!0),e&&"mouseover"===e.type&&s.parents().each(function(){var e,s=t(this);s.data("ui-tooltip-open")&&(e=t.Event("blur"),e.target=e.currentTarget=this,i.close(e,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._updateContent(s,e))},_updateContent:function(t,e){var i,s=this.options.content,n=this,a=e?e.type:null;return"string"==typeof s?this._open(e,t,s):(i=s.call(t[0],function(i){t.data("ui-tooltip-open")&&n._delay(function(){e&&(e.type=a),this._open(e,t,i)})}),i&&this._open(e,t,i),void 0)},_open:function(i,s,n){function a(t){l.of=t,o.is(":hidden")||o.position(l)}var o,r,h,l=t.extend({},this.options.position);if(n){if(o=this._find(s),o.length)return o.find(".ui-tooltip-content").html(n),void 0;s.is("[title]")&&(i&&"mouseover"===i.type?s.attr("title",""):s.removeAttr("title")),o=this._tooltip(s),e(s,o.attr("id")),o.find(".ui-tooltip-content").html(n),this.options.track&&i&&/^mouse/.test(i.type)?(this._on(this.document,{mousemove:a}),a(i)):o.position(t.extend({of:s},this.options.position)),o.hide(),this._show(o,this.options.show),this.options.show&&this.options.show.delay&&(h=this.delayedShow=setInterval(function(){o.is(":visible")&&(a(l.of),clearInterval(h))},t.fx.interval)),this._trigger("open",i,{tooltip:o}),r={keyup:function(e){if(e.keyCode===t.ui.keyCode.ESCAPE){var i=t.Event(e);i.currentTarget=s[0],this.close(i,!0)}},remove:function(){this._removeTooltip(o)}},i&&"mouseover"!==i.type||(r.mouseleave="close"),i&&"focusin"!==i.type||(r.focusout="close"),this._on(!0,s,r)}},close:function(e){var s=this,n=t(e?e.currentTarget:this.element),a=this._find(n);this.closing||(clearInterval(this.delayedShow),n.data("ui-tooltip-title")&&n.attr("title",n.data("ui-tooltip-title")),i(n),a.stop(!0),this._hide(a,this.options.hide,function(){s._removeTooltip(t(this))}),n.removeData("ui-tooltip-open"),this._off(n,"mouseleave focusout keyup"),n[0]!==this.element[0]&&this._off(n,"remove"),this._off(this.document,"mousemove"),e&&"mouseleave"===e.type&&t.each(this.parents,function(e,i){t(i.element).attr("title",i.title),delete s.parents[e]}),this.closing=!0,this._trigger("close",e,{tooltip:a}),this.closing=!1)},_tooltip:function(e){var i="ui-tooltip-"+s++,n=t("<div>").attr({id:i,role:"tooltip"}).addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||""));return t("<div>").addClass("ui-tooltip-content").appendTo(n),n.appendTo(this.document[0].body),this.tooltips[i]=e,n},_find:function(e){var i=e.data("ui-tooltip-id");return i?t("#"+i):t()},_removeTooltip:function(t){t.remove(),delete this.tooltips[t.attr("id")]},_destroy:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur");n.target=n.currentTarget=s[0],e.close(n,!0),t("#"+i).remove(),s.data("ui-tooltip-title")&&(s.attr("title",s.data("ui-tooltip-title")),s.removeData("ui-tooltip-title"))})}})})(jQuery);(function(e,t){var i="ui-effects-";e.effects={effect:{}},function(e,t){function i(e,t,i){var a=d[t.type]||{};return null==e?i||!t.def?null:t.def:(e=a.floor?~~e:parseFloat(e),isNaN(e)?t.def:a.mod?(e+a.mod)%a.mod:0>e?0:e>a.max?a.max:e)}function a(i){var a=l(),s=a._rgba=[];return i=i.toLowerCase(),m(h,function(e,n){var r,o=n.re.exec(i),h=o&&n.parse(o),l=n.space||"rgba";return h?(r=a[l](h),a[u[l].cache]=r[u[l].cache],s=a._rgba=r._rgba,!1):t}),s.length?("0,0,0,0"===s.join()&&e.extend(s,n.transparent),a):n[i]}function s(e,t,i){return i=(i+1)%1,1>6*i?e+6*(t-e)*i:1>2*i?t:2>3*i?e+6*(t-e)*(2/3-i):e}var n,r="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",o=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1],e[2],e[3],e[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[2.55*e[1],2.55*e[2],2.55*e[3],e[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(e){return[e[1],e[2]/100,e[3]/100,e[4]]}}],l=e.Color=function(t,i,a,s){return new e.Color.fn.parse(t,i,a,s)},u={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},d={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},c=l.support={},p=e("<p>")[0],m=e.each;p.style.cssText="background-color:rgba(1,1,1,.5)",c.rgba=p.style.backgroundColor.indexOf("rgba")>-1,m(u,function(e,t){t.cache="_"+e,t.props.alpha={idx:3,type:"percent",def:1}}),l.fn=e.extend(l.prototype,{parse:function(s,r,o,h){if(s===t)return this._rgba=[null,null,null,null],this;(s.jquery||s.nodeType)&&(s=e(s).css(r),r=t);var d=this,c=e.type(s),p=this._rgba=[];return r!==t&&(s=[s,r,o,h],c="array"),"string"===c?this.parse(a(s)||n._default):"array"===c?(m(u.rgba.props,function(e,t){p[t.idx]=i(s[t.idx],t)}),this):"object"===c?(s instanceof l?m(u,function(e,t){s[t.cache]&&(d[t.cache]=s[t.cache].slice())}):m(u,function(t,a){var n=a.cache;m(a.props,function(e,t){if(!d[n]&&a.to){if("alpha"===e||null==s[e])return;d[n]=a.to(d._rgba)}d[n][t.idx]=i(s[e],t,!0)}),d[n]&&0>e.inArray(null,d[n].slice(0,3))&&(d[n][3]=1,a.from&&(d._rgba=a.from(d[n])))}),this):t},is:function(e){var i=l(e),a=!0,s=this;return m(u,function(e,n){var r,o=i[n.cache];return o&&(r=s[n.cache]||n.to&&n.to(s._rgba)||[],m(n.props,function(e,i){return null!=o[i.idx]?a=o[i.idx]===r[i.idx]:t})),a}),a},_space:function(){var e=[],t=this;return m(u,function(i,a){t[a.cache]&&e.push(i)}),e.pop()},transition:function(e,t){var a=l(e),s=a._space(),n=u[s],r=0===this.alpha()?l("transparent"):this,o=r[n.cache]||n.to(r._rgba),h=o.slice();return a=a[n.cache],m(n.props,function(e,s){var n=s.idx,r=o[n],l=a[n],u=d[s.type]||{};null!==l&&(null===r?h[n]=l:(u.mod&&(l-r>u.mod/2?r+=u.mod:r-l>u.mod/2&&(r-=u.mod)),h[n]=i((l-r)*t+r,s)))}),this[s](h)},blend:function(t){if(1===this._rgba[3])return this;var i=this._rgba.slice(),a=i.pop(),s=l(t)._rgba;return l(e.map(i,function(e,t){return(1-a)*s[t]+a*e}))},toRgbaString:function(){var t="rgba(",i=e.map(this._rgba,function(e,t){return null==e?t>2?1:0:e});return 1===i[3]&&(i.pop(),t="rgb("),t+i.join()+")"},toHslaString:function(){var t="hsla(",i=e.map(this.hsla(),function(e,t){return null==e&&(e=t>2?1:0),t&&3>t&&(e=Math.round(100*e)+"%"),e});return 1===i[3]&&(i.pop(),t="hsl("),t+i.join()+")"},toHexString:function(t){var i=this._rgba.slice(),a=i.pop();return t&&i.push(~~(255*a)),"#"+e.map(i,function(e){return e=(e||0).toString(16),1===e.length?"0"+e:e}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,u.hsla.to=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t,i,a=e[0]/255,s=e[1]/255,n=e[2]/255,r=e[3],o=Math.max(a,s,n),h=Math.min(a,s,n),l=o-h,u=o+h,d=.5*u;return t=h===o?0:a===o?60*(s-n)/l+360:s===o?60*(n-a)/l+120:60*(a-s)/l+240,i=0===l?0:.5>=d?l/u:l/(2-u),[Math.round(t)%360,i,d,null==r?1:r]},u.hsla.from=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t=e[0]/360,i=e[1],a=e[2],n=e[3],r=.5>=a?a*(1+i):a+i-a*i,o=2*a-r;return[Math.round(255*s(o,r,t+1/3)),Math.round(255*s(o,r,t)),Math.round(255*s(o,r,t-1/3)),n]},m(u,function(a,s){var n=s.props,r=s.cache,h=s.to,u=s.from;l.fn[a]=function(a){if(h&&!this[r]&&(this[r]=h(this._rgba)),a===t)return this[r].slice();var s,o=e.type(a),d="array"===o||"object"===o?a:arguments,c=this[r].slice();return m(n,function(e,t){var a=d["object"===o?e:t.idx];null==a&&(a=c[t.idx]),c[t.idx]=i(a,t)}),u?(s=l(u(c)),s[r]=c,s):l(c)},m(n,function(t,i){l.fn[t]||(l.fn[t]=function(s){var n,r=e.type(s),h="alpha"===t?this._hsla?"hsla":"rgba":a,l=this[h](),u=l[i.idx];return"undefined"===r?u:("function"===r&&(s=s.call(this,u),r=e.type(s)),null==s&&i.empty?this:("string"===r&&(n=o.exec(s),n&&(s=u+parseFloat(n[2])*("+"===n[1]?1:-1))),l[i.idx]=s,this[h](l)))})})}),l.hook=function(t){var i=t.split(" ");m(i,function(t,i){e.cssHooks[i]={set:function(t,s){var n,r,o="";if("transparent"!==s&&("string"!==e.type(s)||(n=a(s)))){if(s=l(n||s),!c.rgba&&1!==s._rgba[3]){for(r="backgroundColor"===i?t.parentNode:t;(""===o||"transparent"===o)&&r&&r.style;)try{o=e.css(r,"backgroundColor"),r=r.parentNode}catch(h){}s=s.blend(o&&"transparent"!==o?o:"_default")}s=s.toRgbaString()}try{t.style[i]=s}catch(h){}}},e.fx.step[i]=function(t){t.colorInit||(t.start=l(t.elem,i),t.end=l(t.end),t.colorInit=!0),e.cssHooks[i].set(t.elem,t.start.transition(t.end,t.pos))}})},l.hook(r),e.cssHooks.borderColor={expand:function(e){var t={};return m(["Top","Right","Bottom","Left"],function(i,a){t["border"+a+"Color"]=e}),t}},n=e.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(jQuery),function(){function i(t){var i,a,s=t.ownerDocument.defaultView?t.ownerDocument.defaultView.getComputedStyle(t,null):t.currentStyle,n={};if(s&&s.length&&s[0]&&s[s[0]])for(a=s.length;a--;)i=s[a],"string"==typeof s[i]&&(n[e.camelCase(i)]=s[i]);else for(i in s)"string"==typeof s[i]&&(n[i]=s[i]);return n}function a(t,i){var a,s,r={};for(a in i)s=i[a],t[a]!==s&&(n[a]||(e.fx.step[a]||!isNaN(parseFloat(s)))&&(r[a]=s));return r}var s=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};e.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,i){e.fx.step[i]=function(e){("none"!==e.end&&!e.setAttr||1===e.pos&&!e.setAttr)&&(jQuery.style(e.elem,i,e.end),e.setAttr=!0)}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e.effects.animateClass=function(t,n,r,o){var h=e.speed(n,r,o);return this.queue(function(){var n,r=e(this),o=r.attr("class")||"",l=h.children?r.find("*").addBack():r;l=l.map(function(){var t=e(this);return{el:t,start:i(this)}}),n=function(){e.each(s,function(e,i){t[i]&&r[i+"Class"](t[i])})},n(),l=l.map(function(){return this.end=i(this.el[0]),this.diff=a(this.start,this.end),this}),r.attr("class",o),l=l.map(function(){var t=this,i=e.Deferred(),a=e.extend({},h,{queue:!1,complete:function(){i.resolve(t)}});return this.el.animate(this.diff,a),i.promise()}),e.when.apply(e,l.get()).done(function(){n(),e.each(arguments,function(){var t=this.el;e.each(this.diff,function(e){t.css(e,"")})}),h.complete.call(r[0])})})},e.fn.extend({addClass:function(t){return function(i,a,s,n){return a?e.effects.animateClass.call(this,{add:i},a,s,n):t.apply(this,arguments)}}(e.fn.addClass),removeClass:function(t){return function(i,a,s,n){return arguments.length>1?e.effects.animateClass.call(this,{remove:i},a,s,n):t.apply(this,arguments)}}(e.fn.removeClass),toggleClass:function(i){return function(a,s,n,r,o){return"boolean"==typeof s||s===t?n?e.effects.animateClass.call(this,s?{add:a}:{remove:a},n,r,o):i.apply(this,arguments):e.effects.animateClass.call(this,{toggle:a},s,n,r)}}(e.fn.toggleClass),switchClass:function(t,i,a,s,n){return e.effects.animateClass.call(this,{add:i,remove:t},a,s,n)}})}(),function(){function a(t,i,a,s){return e.isPlainObject(t)&&(i=t,t=t.effect),t={effect:t},null==i&&(i={}),e.isFunction(i)&&(s=i,a=null,i={}),("number"==typeof i||e.fx.speeds[i])&&(s=a,a=i,i={}),e.isFunction(a)&&(s=a,a=null),i&&e.extend(t,i),a=a||i.duration,t.duration=e.fx.off?0:"number"==typeof a?a:a in e.fx.speeds?e.fx.speeds[a]:e.fx.speeds._default,t.complete=s||i.complete,t}function s(t){return!t||"number"==typeof t||e.fx.speeds[t]?!0:"string"!=typeof t||e.effects.effect[t]?e.isFunction(t)?!0:"object"!=typeof t||t.effect?!1:!0:!0}e.extend(e.effects,{version:"1.10.4",save:function(e,t){for(var a=0;t.length>a;a++)null!==t[a]&&e.data(i+t[a],e[0].style[t[a]])},restore:function(e,a){var s,n;for(n=0;a.length>n;n++)null!==a[n]&&(s=e.data(i+a[n]),s===t&&(s=""),e.css(a[n],s))},setMode:function(e,t){return"toggle"===t&&(t=e.is(":hidden")?"show":"hide"),t},getBaseline:function(e,t){var i,a;switch(e[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=e[0]/t.height}switch(e[1]){case"left":a=0;break;case"center":a=.5;break;case"right":a=1;break;default:a=e[1]/t.width}return{x:a,y:i}},createWrapper:function(t){if(t.parent().is(".ui-effects-wrapper"))return t.parent();var i={width:t.outerWidth(!0),height:t.outerHeight(!0),"float":t.css("float")},a=e("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),s={width:t.width(),height:t.height()},n=document.activeElement;try{n.id}catch(r){n=document.body}return t.wrap(a),(t[0]===n||e.contains(t[0],n))&&e(n).focus(),a=t.parent(),"static"===t.css("position")?(a.css({position:"relative"}),t.css({position:"relative"})):(e.extend(i,{position:t.css("position"),zIndex:t.css("z-index")}),e.each(["top","left","bottom","right"],function(e,a){i[a]=t.css(a),isNaN(parseInt(i[a],10))&&(i[a]="auto")}),t.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),t.css(s),a.css(i).show()},removeWrapper:function(t){var i=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),(t[0]===i||e.contains(t[0],i))&&e(i).focus()),t},setTransition:function(t,i,a,s){return s=s||{},e.each(i,function(e,i){var n=t.cssUnit(i);n[0]>0&&(s[i]=n[0]*a+n[1])}),s}}),e.fn.extend({effect:function(){function t(t){function a(){e.isFunction(n)&&n.call(s[0]),e.isFunction(t)&&t()}var s=e(this),n=i.complete,o=i.mode;(s.is(":hidden")?"hide"===o:"show"===o)?(s[o](),a()):r.call(s[0],i,a)}var i=a.apply(this,arguments),s=i.mode,n=i.queue,r=e.effects.effect[i.effect];return e.fx.off||!r?s?this[s](i.duration,i.complete):this.each(function(){i.complete&&i.complete.call(this)}):n===!1?this.each(t):this.queue(n||"fx",t)},show:function(e){return function(t){if(s(t))return e.apply(this,arguments);var i=a.apply(this,arguments);return i.mode="show",this.effect.call(this,i)}}(e.fn.show),hide:function(e){return function(t){if(s(t))return e.apply(this,arguments);var i=a.apply(this,arguments);return i.mode="hide",this.effect.call(this,i)}}(e.fn.hide),toggle:function(e){return function(t){if(s(t)||"boolean"==typeof t)return e.apply(this,arguments);var i=a.apply(this,arguments);return i.mode="toggle",this.effect.call(this,i)}}(e.fn.toggle),cssUnit:function(t){var i=this.css(t),a=[];return e.each(["em","px","%","pt"],function(e,t){i.indexOf(t)>0&&(a=[parseFloat(i),t])}),a}})}(),function(){var t={};e.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,i){t[i]=function(t){return Math.pow(t,e+2)}}),e.extend(t,{Sine:function(e){return 1-Math.cos(e*Math.PI/2)},Circ:function(e){return 1-Math.sqrt(1-e*e)},Elastic:function(e){return 0===e||1===e?e:-Math.pow(2,8*(e-1))*Math.sin((80*(e-1)-7.5)*Math.PI/15)},Back:function(e){return e*e*(3*e-2)},Bounce:function(e){for(var t,i=4;((t=Math.pow(2,--i))-1)/11>e;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*t-2)/22-e,2)}}),e.each(t,function(t,i){e.easing["easeIn"+t]=i,e.easing["easeOut"+t]=function(e){return 1-i(1-e)},e.easing["easeInOut"+t]=function(e){return.5>e?i(2*e)/2:1-i(-2*e+2)/2}})}()})(jQuery);(function(e){var t=/up|down|vertical/,i=/up|left|vertical|horizontal/;e.effects.effect.blind=function(a,s){var n,r,o,h=e(this),l=["position","top","bottom","left","right","height","width"],u=e.effects.setMode(h,a.mode||"hide"),d=a.direction||"up",c=t.test(d),p=c?"height":"width",m=c?"top":"left",f=i.test(d),g={},y="show"===u;h.parent().is(".ui-effects-wrapper")?e.effects.save(h.parent(),l):e.effects.save(h,l),h.show(),n=e.effects.createWrapper(h).css({overflow:"hidden"}),r=n[p](),o=parseFloat(n.css(m))||0,g[p]=y?r:0,f||(h.css(c?"bottom":"right",0).css(c?"top":"left","auto").css({position:"absolute"}),g[m]=y?o:r+o),y&&(n.css(p,0),f||n.css(m,o+r)),n.animate(g,{duration:a.duration,easing:a.easing,queue:!1,complete:function(){"hide"===u&&h.hide(),e.effects.restore(h,l),e.effects.removeWrapper(h),s()}})}})(jQuery);(function(e){e.effects.effect.bounce=function(t,i){var a,s,n,r=e(this),o=["position","top","bottom","left","right","height","width"],h=e.effects.setMode(r,t.mode||"effect"),l="hide"===h,u="show"===h,d=t.direction||"up",c=t.distance,p=t.times||5,m=2*p+(u||l?1:0),f=t.duration/m,g=t.easing,y="up"===d||"down"===d?"top":"left",v="up"===d||"left"===d,b=r.queue(),x=b.length;for((u||l)&&o.push("opacity"),e.effects.save(r,o),r.show(),e.effects.createWrapper(r),c||(c=r["top"===y?"outerHeight":"outerWidth"]()/3),u&&(n={opacity:1},n[y]=0,r.css("opacity",0).css(y,v?2*-c:2*c).animate(n,f,g)),l&&(c/=Math.pow(2,p-1)),n={},n[y]=0,a=0;p>a;a++)s={},s[y]=(v?"-=":"+=")+c,r.animate(s,f,g).animate(n,f,g),c=l?2*c:c/2;l&&(s={opacity:0},s[y]=(v?"-=":"+=")+c,r.animate(s,f,g)),r.queue(function(){l&&r.hide(),e.effects.restore(r,o),e.effects.removeWrapper(r),i()}),x>1&&b.splice.apply(b,[1,0].concat(b.splice(x,m+1))),r.dequeue()}})(jQuery);(function(e){e.effects.effect.clip=function(t,i){var a,s,n,r=e(this),o=["position","top","bottom","left","right","height","width"],h=e.effects.setMode(r,t.mode||"hide"),l="show"===h,u=t.direction||"vertical",d="vertical"===u,c=d?"height":"width",p=d?"top":"left",m={};e.effects.save(r,o),r.show(),a=e.effects.createWrapper(r).css({overflow:"hidden"}),s="IMG"===r[0].tagName?a:r,n=s[c](),l&&(s.css(c,0),s.css(p,n/2)),m[c]=l?n:0,m[p]=l?0:n/2,s.animate(m,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){l||r.hide(),e.effects.restore(r,o),e.effects.removeWrapper(r),i()}})}})(jQuery);(function(e){e.effects.effect.drop=function(t,i){var a,s=e(this),n=["position","top","bottom","left","right","opacity","height","width"],r=e.effects.setMode(s,t.mode||"hide"),o="show"===r,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h?"pos":"neg",d={opacity:o?1:0};e.effects.save(s,n),s.show(),e.effects.createWrapper(s),a=t.distance||s["top"===l?"outerHeight":"outerWidth"](!0)/2,o&&s.css("opacity",0).css(l,"pos"===u?-a:a),d[l]=(o?"pos"===u?"+=":"-=":"pos"===u?"-=":"+=")+a,s.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===r&&s.hide(),e.effects.restore(s,n),e.effects.removeWrapper(s),i()}})}})(jQuery);(function(e){e.effects.effect.explode=function(t,i){function a(){b.push(this),b.length===d*c&&s()}function s(){p.css({visibility:"visible"}),e(b).remove(),f||p.hide(),i()}var n,r,o,h,l,u,d=t.pieces?Math.round(Math.sqrt(t.pieces)):3,c=d,p=e(this),m=e.effects.setMode(p,t.mode||"hide"),f="show"===m,g=p.show().css("visibility","hidden").offset(),y=Math.ceil(p.outerWidth()/c),v=Math.ceil(p.outerHeight()/d),b=[];for(n=0;d>n;n++)for(h=g.top+n*v,u=n-(d-1)/2,r=0;c>r;r++)o=g.left+r*y,l=r-(c-1)/2,p.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-r*y,top:-n*v}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:y,height:v,left:o+(f?l*y:0),top:h+(f?u*v:0),opacity:f?0:1}).animate({left:o+(f?0:l*y),top:h+(f?0:u*v),opacity:f?1:0},t.duration||500,t.easing,a)}})(jQuery);(function(e){e.effects.effect.fade=function(t,i){var a=e(this),s=e.effects.setMode(a,t.mode||"toggle");a.animate({opacity:s},{queue:!1,duration:t.duration,easing:t.easing,complete:i})}})(jQuery);(function(e){e.effects.effect.fold=function(t,i){var a,s,n=e(this),r=["position","top","bottom","left","right","height","width"],o=e.effects.setMode(n,t.mode||"hide"),h="show"===o,l="hide"===o,u=t.size||15,d=/([0-9]+)%/.exec(u),c=!!t.horizFirst,p=h!==c,m=p?["width","height"]:["height","width"],f=t.duration/2,g={},v={};e.effects.save(n,r),n.show(),a=e.effects.createWrapper(n).css({overflow:"hidden"}),s=p?[a.width(),a.height()]:[a.height(),a.width()],d&&(u=parseInt(d[1],10)/100*s[l?0:1]),h&&a.css(c?{height:0,width:u}:{height:u,width:0}),g[m[0]]=h?s[0]:u,v[m[1]]=h?s[1]:0,a.animate(g,f,t.easing).animate(v,f,t.easing,function(){l&&n.hide(),e.effects.restore(n,r),e.effects.removeWrapper(n),i()})}})(jQuery);(function(e){e.effects.effect.highlight=function(t,i){var a=e(this),s=["backgroundImage","backgroundColor","opacity"],n=e.effects.setMode(a,t.mode||"show"),r={backgroundColor:a.css("backgroundColor")};"hide"===n&&(r.opacity=0),e.effects.save(a,s),a.show().css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(r,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===n&&a.hide(),e.effects.restore(a,s),i()}})}})(jQuery);(function(e){e.effects.effect.pulsate=function(t,i){var a,s=e(this),n=e.effects.setMode(s,t.mode||"show"),r="show"===n,o="hide"===n,h=r||"hide"===n,l=2*(t.times||5)+(h?1:0),u=t.duration/l,d=0,c=s.queue(),p=c.length;for((r||!s.is(":visible"))&&(s.css("opacity",0).show(),d=1),a=1;l>a;a++)s.animate({opacity:d},u,t.easing),d=1-d;s.animate({opacity:d},u,t.easing),s.queue(function(){o&&s.hide(),i()}),p>1&&c.splice.apply(c,[1,0].concat(c.splice(p,l+1))),s.dequeue()}})(jQuery);(function(e){e.effects.effect.puff=function(t,i){var a=e(this),s=e.effects.setMode(a,t.mode||"hide"),r="hide"===s,n=parseInt(t.percent,10)||150,o=n/100,h={height:a.height(),width:a.width(),outerHeight:a.outerHeight(),outerWidth:a.outerWidth()};e.extend(t,{effect:"scale",queue:!1,fade:!0,mode:s,complete:i,percent:r?n:100,from:r?h:{height:h.height*o,width:h.width*o,outerHeight:h.outerHeight*o,outerWidth:h.outerWidth*o}}),a.effect(t)},e.effects.effect.scale=function(t,i){var a=e(this),s=e.extend(!0,{},t),r=e.effects.setMode(a,t.mode||"effect"),n=parseInt(t.percent,10)||(0===parseInt(t.percent,10)?0:"hide"===r?0:100),o=t.direction||"both",h=t.origin,l={height:a.height(),width:a.width(),outerHeight:a.outerHeight(),outerWidth:a.outerWidth()},u={y:"horizontal"!==o?n/100:1,x:"vertical"!==o?n/100:1};s.effect="size",s.queue=!1,s.complete=i,"effect"!==r&&(s.origin=h||["middle","center"],s.restore=!0),s.from=t.from||("show"===r?{height:0,width:0,outerHeight:0,outerWidth:0}:l),s.to={height:l.height*u.y,width:l.width*u.x,outerHeight:l.outerHeight*u.y,outerWidth:l.outerWidth*u.x},s.fade&&("show"===r&&(s.from.opacity=0,s.to.opacity=1),"hide"===r&&(s.from.opacity=1,s.to.opacity=0)),a.effect(s)},e.effects.effect.size=function(t,i){var a,s,r,n=e(this),o=["position","top","bottom","left","right","width","height","overflow","opacity"],h=["position","top","bottom","left","right","overflow","opacity"],l=["width","height","overflow"],u=["fontSize"],d=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],c=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],p=e.effects.setMode(n,t.mode||"effect"),m=t.restore||"effect"!==p,f=t.scale||"both",g=t.origin||["middle","center"],y=n.css("position"),v=m?o:h,b={height:0,width:0,outerHeight:0,outerWidth:0};"show"===p&&n.show(),a={height:n.height(),width:n.width(),outerHeight:n.outerHeight(),outerWidth:n.outerWidth()},"toggle"===t.mode&&"show"===p?(n.from=t.to||b,n.to=t.from||a):(n.from=t.from||("show"===p?b:a),n.to=t.to||("hide"===p?b:a)),r={from:{y:n.from.height/a.height,x:n.from.width/a.width},to:{y:n.to.height/a.height,x:n.to.width/a.width}},("box"===f||"both"===f)&&(r.from.y!==r.to.y&&(v=v.concat(d),n.from=e.effects.setTransition(n,d,r.from.y,n.from),n.to=e.effects.setTransition(n,d,r.to.y,n.to)),r.from.x!==r.to.x&&(v=v.concat(c),n.from=e.effects.setTransition(n,c,r.from.x,n.from),n.to=e.effects.setTransition(n,c,r.to.x,n.to))),("content"===f||"both"===f)&&r.from.y!==r.to.y&&(v=v.concat(u).concat(l),n.from=e.effects.setTransition(n,u,r.from.y,n.from),n.to=e.effects.setTransition(n,u,r.to.y,n.to)),e.effects.save(n,v),n.show(),e.effects.createWrapper(n),n.css("overflow","hidden").css(n.from),g&&(s=e.effects.getBaseline(g,a),n.from.top=(a.outerHeight-n.outerHeight())*s.y,n.from.left=(a.outerWidth-n.outerWidth())*s.x,n.to.top=(a.outerHeight-n.to.outerHeight)*s.y,n.to.left=(a.outerWidth-n.to.outerWidth)*s.x),n.css(n.from),("content"===f||"both"===f)&&(d=d.concat(["marginTop","marginBottom"]).concat(u),c=c.concat(["marginLeft","marginRight"]),l=o.concat(d).concat(c),n.find("*[width]").each(function(){var i=e(this),a={height:i.height(),width:i.width(),outerHeight:i.outerHeight(),outerWidth:i.outerWidth()};m&&e.effects.save(i,l),i.from={height:a.height*r.from.y,width:a.width*r.from.x,outerHeight:a.outerHeight*r.from.y,outerWidth:a.outerWidth*r.from.x},i.to={height:a.height*r.to.y,width:a.width*r.to.x,outerHeight:a.height*r.to.y,outerWidth:a.width*r.to.x},r.from.y!==r.to.y&&(i.from=e.effects.setTransition(i,d,r.from.y,i.from),i.to=e.effects.setTransition(i,d,r.to.y,i.to)),r.from.x!==r.to.x&&(i.from=e.effects.setTransition(i,c,r.from.x,i.from),i.to=e.effects.setTransition(i,c,r.to.x,i.to)),i.css(i.from),i.animate(i.to,t.duration,t.easing,function(){m&&e.effects.restore(i,l)})})),n.animate(n.to,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){0===n.to.opacity&&n.css("opacity",n.from.opacity),"hide"===p&&n.hide(),e.effects.restore(n,v),m||("static"===y?n.css({position:"relative",top:n.to.top,left:n.to.left}):e.each(["top","left"],function(e,t){n.css(t,function(t,i){var a=parseInt(i,10),s=e?n.to.left:n.to.top;return"auto"===i?s+"px":a+s+"px"})})),e.effects.removeWrapper(n),i()}})}})(jQuery);(function(e){e.effects.effect.shake=function(t,i){var a,s=e(this),r=["position","top","bottom","left","right","height","width"],n=e.effects.setMode(s,t.mode||"effect"),o=t.direction||"left",h=t.distance||20,l=t.times||3,u=2*l+1,d=Math.round(t.duration/u),c="up"===o||"down"===o?"top":"left",p="up"===o||"left"===o,m={},f={},g={},y=s.queue(),v=y.length;for(e.effects.save(s,r),s.show(),e.effects.createWrapper(s),m[c]=(p?"-=":"+=")+h,f[c]=(p?"+=":"-=")+2*h,g[c]=(p?"-=":"+=")+2*h,s.animate(m,d,t.easing),a=1;l>a;a++)s.animate(f,d,t.easing).animate(g,d,t.easing);s.animate(f,d,t.easing).animate(m,d/2,t.easing).queue(function(){"hide"===n&&s.hide(),e.effects.restore(s,r),e.effects.removeWrapper(s),i()}),v>1&&y.splice.apply(y,[1,0].concat(y.splice(v,u+1))),s.dequeue()}})(jQuery);(function(e){e.effects.effect.slide=function(t,i){var a,s=e(this),r=["position","top","bottom","left","right","width","height"],n=e.effects.setMode(s,t.mode||"show"),o="show"===n,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h,d={};e.effects.save(s,r),s.show(),a=t.distance||s["top"===l?"outerHeight":"outerWidth"](!0),e.effects.createWrapper(s).css({overflow:"hidden"}),o&&s.css(l,u?isNaN(a)?"-"+a:-a:a),d[l]=(o?u?"+=":"-=":u?"-=":"+=")+a,s.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===n&&s.hide(),e.effects.restore(s,r),e.effects.removeWrapper(s),i()}})}})(jQuery);(function(e){e.effects.effect.transfer=function(t,i){var a=e(this),s=e(t.to),r="fixed"===s.css("position"),n=e("body"),o=r?n.scrollTop():0,h=r?n.scrollLeft():0,l=s.offset(),u={top:l.top-o,left:l.left-h,height:s.innerHeight(),width:s.innerWidth()},d=a.offset(),c=e("<div class='ui-effects-transfer'></div>").appendTo(document.body).addClass(t.className).css({top:d.top-o,left:d.left-h,height:a.innerHeight(),width:a.innerWidth(),position:r?"fixed":"absolute"}).animate(u,t.duration,t.easing,function(){c.remove(),i()})}})(jQuery);
+
+/*! jQuery UI Accessible Datepicker extension
+* Copyright 2014 Kolab Systems AG
+*/
+(function($, undefined) {
+
+// references to super class methods
+var __newInst = $.datepicker._newInst;
+var __updateDatepicker = $.datepicker._updateDatepicker;
+var __connectDatepicker = $.datepicker._connectDatepicker;
+var __showDatepicker = $.datepicker._showDatepicker;
+var __hideDatepicker = $.datepicker._hideDatepicker;
+
+// "extend" singleton instance methods
+$.extend($.datepicker, {
+
+ /* Create a new instance object */
+ _newInst: function(target, inline) {
+ var that = this, inst = __newInst.call(this, target, inline);
+
+ if (inst.inline) {
+ // attach keyboard event handler
+ inst.dpDiv.on('keydown.datepicker', '.ui-datepicker-calendar', function(event) {
+ // we're only interested navigation keys
+ if ($.inArray(event.keyCode, [ 13, 33, 34, 35, 36, 37, 38, 39, 40]) == -1) {
+ return;
+ }
+ event.stopPropagation();
+ event.preventDefault();
+ inst._hasfocus = true;
+
+ var activeCell;
+ switch (event.keyCode) {
+ case $.ui.keyCode.ENTER:
+ if ((activeCell = $('.' + that._dayOverClass, inst.dpDiv).get(0) || $('.' + that._currentClass, inst.dpDiv).get(0))) {
+ that._selectDay(inst.input, inst.selectedMonth, inst.selectedYear, activeCell);
+ }
+ break;
+
+ case $.ui.keyCode.PAGE_UP:
+ that._adjustDate(inst.input, -that._get(inst, 'stepMonths'), 'M');
+ break;
+ case $.ui.keyCode.PAGE_DOWN:
+ that._adjustDate(inst.input, that._get(inst, 'stepMonths'), 'M');
+ break;
+
+ default:
+ return that._cursorKeydown(event, inst);
+ }
+ })
+ .attr('role', 'region')
+ .attr('aria-labelledby', inst.id + '-dp-title');
+ }
+ else {
+ var widgetId = inst.dpDiv.attr('id') || inst.id + '-dp-widget';
+ inst.dpDiv.attr('id', widgetId)
+ .attr('aria-hidden', 'true')
+ .attr('aria-labelledby', inst.id + '-dp-title');
+
+ $(inst.input).attr('aria-haspopup', 'true')
+ .attr('aria-expanded', 'false')
+ .attr('aria-owns', widgetId);
+ }
+
+ return inst;
+ },
+
+ /* Attach the date picker to an input field */
+ _connectDatepicker: function(target, inst) {
+ __connectDatepicker.call(this, target, inst);
+
+ var that = this;
+
+ // register additional keyboard events to control date selection with cursor keys
+ $(target).unbind('keyup.datepicker-extended').bind('keyup.datepicker-extended', function(event) {
+ var inc = 1;
+ switch (event.keyCode) {
+ case 109:
+ case 189: // "minus"
+ inc = -1;
+ case 107:
+ case 187: // "plus"
+ that._adjustInstDate(inst, inc, 'D');
+ that._selectDate(target, that._formatDate(inst, inst.selectedDay, inst.selectedMonth, inst.selectedYear));
+ break;
+
+ case $.ui.keyCode.UP:
+ case $.ui.keyCode.DOWN:
+ // unfold datepicker if not visible
+ if ($.datepicker._lastInput !== target && !$.datepicker._isDisabledDatepicker(target)) {
+ that._showDatepicker(event);
+ event.stopPropagation();
+ event.preventDefault();
+ return false;
+ }
+
+ default:
+ if (!$.datepicker._isDisabledDatepicker(target) && !event.ctrlKey && !event.metaKey) {
+ return that._cursorKeydown(event, inst);
+ }
+ }
+ })
+ .attr('autocomplete', 'off');
+ },
+
+ /* Handle keyboard event on datepicker widget */
+ _cursorKeydown: function(event, inst) {
+ inst._keyEvent = true;
+
+ var isRTL = inst.dpDiv.hasClass('ui-datepicker-rtl');
+
+ switch (event.keyCode) {
+ case $.ui.keyCode.LEFT:
+ this._adjustDate(inst.input, (isRTL ? +1 : -1), 'D');
+ break;
+ case $.ui.keyCode.RIGHT:
+ this._adjustDate(inst.input, (isRTL ? -1 : +1), 'D');
+ break;
+ case $.ui.keyCode.UP:
+ this._adjustDate(inst.input, -7, 'D');
+ break;
+ case $.ui.keyCode.DOWN:
+ this._adjustDate(inst.input, +7, 'D');
+ break;
+ case $.ui.keyCode.HOME:
+ // TODO: jump to first of month
+ break;
+ case $.ui.keyCode.END:
+ // TODO: jump to end of month
+ break;
+ }
+
+ return true;
+ },
+
+ /* Pop-up the date picker for a given input field */
+ _showDatepicker: function(input) {
+ input = input.target || input;
+ __showDatepicker.call(this, input);
+
+ var inst = $.datepicker._getInst(input);
+ if (inst && $.datepicker._datepickerShowing) {
+ inst.dpDiv.attr('aria-hidden', 'false');
+ $(input).attr('aria-expanded', 'true');
+ }
+ },
+
+ /* Hide the date picker from view */
+ _hideDatepicker: function(input) {
+ __hideDatepicker.call(this, input);
+
+ var inst = this._curInst;;
+ if (inst && !$.datepicker._datepickerShowing) {
+ inst.dpDiv.attr('aria-hidden', 'true');
+ $(inst.input).attr('aria-expanded', 'false');
+ }
+ },
+
+ /* Render the date picker content */
+ _updateDatepicker: function(inst) {
+ __updateDatepicker.call(this, inst);
+
+ var activeCell = $('.' + this._dayOverClass, inst.dpDiv).get(0) || $('.' + this._currentClass, inst.dpDiv).get(0);
+ if (activeCell) {
+ activeCell = $(activeCell);
+ activeCell.attr('id', inst.id + '-day-' + activeCell.text());
+ }
+
+ // allow focus on main container only
+ inst.dpDiv.find('.ui-datepicker-calendar')
+ .attr('tabindex', inst.inline ? '0' : '-1')
+ .attr('role', 'grid')
+ .attr('aria-readonly', 'true')
+ .attr('aria-activedescendant', activeCell ? activeCell.attr('id') : '')
+ .find('td').attr('role', 'gridcell').attr('aria-selected', 'false')
+ .find('a').attr('tabindex', '-1');
+
+ $('.ui-datepicker-current-day', inst.dpDiv).attr('aria-selected', 'true');
+
+ inst.dpDiv.find('.ui-datepicker-title')
+ .attr('id', inst.id + '-dp-title')
+
+ // set focus again after update
+ if (inst._hasfocus) {
+ inst.dpDiv.find('.ui-datepicker-calendar').focus();
+ inst._hasfocus = false;
+ }
+ }
+
+});
+
+}(jQuery)); \ No newline at end of file
diff --git a/plugins/jqueryui/js/jquery-ui-1.9.2.custom.min.js b/plugins/jqueryui/js/jquery-ui-1.9.2.custom.min.js
deleted file mode 100755
index 76e63f06b..000000000
--- a/plugins/jqueryui/js/jquery-ui-1.9.2.custom.min.js
+++ /dev/null
@@ -1,37 +0,0 @@
-/*!
- * jQuery UI - v1.9.2 - 2014-01-19
- * http://jqueryui.com
- *
- * @licstart The following is the entire license notice for the
- * JavaScript code in this page.
- *
- * Copyright 2014 jQuery Foundation and other contributors
- *
- * Licensed under the MIT licenses
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * @licend The above is the entire license notice
- * for the JavaScript code in this page.
- *
- * Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.position.js, jquery.ui.draggable.js, jquery.ui.droppable.js, jquery.ui.resizable.js, jquery.ui.selectable.js, jquery.ui.sortable.js, jquery.ui.accordion.js, jquery.ui.autocomplete.js, jquery.ui.button.js, jquery.ui.datepicker.js, jquery.ui.dialog.js, jquery.ui.menu.js, jquery.ui.progressbar.js, jquery.ui.slider.js, jquery.ui.spinner.js, jquery.ui.tabs.js, jquery.ui.tooltip.js, jquery.ui.effect.js, jquery.ui.effect-blind.js, jquery.ui.effect-bounce.js, jquery.ui.effect-clip.js, jquery.ui.effect-drop.js, jquery.ui.effect-explode.js, jquery.ui.effect-fade.js, jquery.ui.effect-fold.js, jquery.ui.effect-highlight.js, jquery.ui.effect-pulsate.js, jquery.ui.effect-scale.js, jquery.ui.effect-shake.js, jquery.ui.effect-slide.js, jquery.ui.effect-transfer.js
- */
-(function(e,t){function i(t,i){var s,n,r,o=t.nodeName.toLowerCase();return"area"===o?(s=t.parentNode,n=s.name,t.href&&n&&"map"===s.nodeName.toLowerCase()?(r=e("img[usemap=#"+n+"]")[0],!!r&&a(r)):!1):(/input|select|textarea|button|object/.test(o)?!t.disabled:"a"===o?t.href||i:i)&&a(t)}function a(t){return e.expr.filters.visible(t)&&!e(t).parents().andSelf().filter(function(){return"hidden"===e.css(this,"visibility")}).length}var s=0,n=/^ui-id-\d+$/;e.ui=e.ui||{},e.ui.version||(e.extend(e.ui,{version:"1.9.2",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({_focus:e.fn.focus,focus:function(t,i){return"number"==typeof t?this.each(function(){var a=this;setTimeout(function(){e(a).focus(),i&&i.call(a)},t)}):this._focus.apply(this,arguments)},scrollParent:function(){var t;return t=e.ui.ie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(e.css(this,"position"))&&/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0),/fixed/.test(this.css("position"))||!t.length?e(document):t},zIndex:function(i){if(i!==t)return this.css("zIndex",i);if(this.length)for(var a,s,n=e(this[0]);n.length&&n[0]!==document;){if(a=n.css("position"),("absolute"===a||"relative"===a||"fixed"===a)&&(s=parseInt(n.css("zIndex"),10),!isNaN(s)&&0!==s))return s;n=n.parent()}return 0},uniqueId:function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++s)})},removeUniqueId:function(){return this.each(function(){n.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(i){return!!e.data(i,t)}}):function(t,i,a){return!!e.data(t,a[3])},focusable:function(t){return i(t,!isNaN(e.attr(t,"tabindex")))},tabbable:function(t){var a=e.attr(t,"tabindex"),s=isNaN(a);return(s||a>=0)&&i(t,!s)}}),e(function(){var t=document.body,i=t.appendChild(i=document.createElement("div"));i.offsetHeight,e.extend(i.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0}),e.support.minHeight=100===i.offsetHeight,e.support.selectstart="onselectstart"in i,t.removeChild(i).style.display="none"}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(i,a){function s(t,i,a,s){return e.each(n,function(){i-=parseFloat(e.css(t,"padding"+this))||0,a&&(i-=parseFloat(e.css(t,"border"+this+"Width"))||0),s&&(i-=parseFloat(e.css(t,"margin"+this))||0)}),i}var n="Width"===a?["Left","Right"]:["Top","Bottom"],r=a.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+a]=function(i){return i===t?o["inner"+a].call(this):this.each(function(){e(this).css(r,s(this,i)+"px")})},e.fn["outer"+a]=function(t,i){return"number"!=typeof t?o["outer"+a].call(this,t):this.each(function(){e(this).css(r,s(this,t,!0,i)+"px")})}}),e("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),function(){var t=/msie ([\w.]+)/.exec(navigator.userAgent.toLowerCase())||[];e.ui.ie=t.length?!0:!1,e.ui.ie6=6===parseFloat(t[1],10)}(),e.fn.extend({disableSelection:function(){return this.bind((e.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),e.extend(e.ui,{plugin:{add:function(t,i,a){var s,n=e.ui[t].prototype;for(s in a)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([i,a[s]])},call:function(e,t,i){var a,s=e.plugins[t];if(s&&e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType)for(a=0;s.length>a;a++)e.options[s[a][0]]&&s[a][1].apply(e.element,i)}},contains:e.contains,hasScroll:function(t,i){if("hidden"===e(t).css("overflow"))return!1;var a=i&&"left"===i?"scrollLeft":"scrollTop",s=!1;return t[a]>0?!0:(t[a]=1,s=t[a]>0,t[a]=0,s)},isOverAxis:function(e,t,i){return e>t&&t+i>e},isOver:function(t,i,a,s,n,r){return e.ui.isOverAxis(t,a,n)&&e.ui.isOverAxis(i,s,r)}}))})(jQuery);(function(e,t){var i=0,s=Array.prototype.slice,a=e.cleanData;e.cleanData=function(t){for(var i,s=0;null!=(i=t[s]);s++)try{e(i).triggerHandler("remove")}catch(n){}a(t)},e.widget=function(i,s,a){var n,r,o,h,l=i.split(".")[0];i=i.split(".")[1],n=l+"-"+i,a||(a=s,s=e.Widget),e.expr[":"][n.toLowerCase()]=function(t){return!!e.data(t,n)},e[l]=e[l]||{},r=e[l][i],o=e[l][i]=function(e,i){return this._createWidget?(arguments.length&&this._createWidget(e,i),t):new o(e,i)},e.extend(o,r,{version:a.version,_proto:e.extend({},a),_childConstructors:[]}),h=new s,h.options=e.widget.extend({},h.options),e.each(a,function(t,i){e.isFunction(i)&&(a[t]=function(){var e=function(){return s.prototype[t].apply(this,arguments)},a=function(e){return s.prototype[t].apply(this,e)};return function(){var t,s=this._super,n=this._superApply;return this._super=e,this._superApply=a,t=i.apply(this,arguments),this._super=s,this._superApply=n,t}}())}),o.prototype=e.widget.extend(h,{widgetEventPrefix:r?h.widgetEventPrefix:i},a,{constructor:o,namespace:l,widgetName:i,widgetBaseClass:n,widgetFullName:n}),r?(e.each(r._childConstructors,function(t,i){var s=i.prototype;e.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete r._childConstructors):s._childConstructors.push(o),e.widget.bridge(i,o)},e.widget.extend=function(i){for(var a,n,r=s.call(arguments,1),o=0,h=r.length;h>o;o++)for(a in r[o])n=r[o][a],r[o].hasOwnProperty(a)&&n!==t&&(i[a]=e.isPlainObject(n)?e.isPlainObject(i[a])?e.widget.extend({},i[a],n):e.widget.extend({},n):n);return i},e.widget.bridge=function(i,a){var n=a.prototype.widgetFullName||i;e.fn[i]=function(r){var o="string"==typeof r,h=s.call(arguments,1),l=this;return r=!o&&h.length?e.widget.extend.apply(null,[r].concat(h)):r,o?this.each(function(){var s,a=e.data(this,n);return a?e.isFunction(a[r])&&"_"!==r.charAt(0)?(s=a[r].apply(a,h),s!==a&&s!==t?(l=s&&s.jquery?l.pushStack(s.get()):s,!1):t):e.error("no such method '"+r+"' for "+i+" widget instance"):e.error("cannot call methods on "+i+" prior to initialization; "+"attempted to call method '"+r+"'")}):this.each(function(){var t=e.data(this,n);t?t.option(r||{})._init():e.data(this,n,new a(r,this))}),l}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(t,s){s=e(s||this.defaultElement||this)[0],this.element=e(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this.bindings=e(),this.hoverable=e(),this.focusable=e(),s!==this&&(e.data(s,this.widgetName,this),e.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===s&&this.destroy()}}),this.document=e(s.style?s.ownerDocument:s.document||s),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(i,s){var a,n,r,o=i;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof i)if(o={},a=i.split("."),i=a.shift(),a.length){for(n=o[i]=e.widget.extend({},this.options[i]),r=0;a.length-1>r;r++)n[a[r]]=n[a[r]]||{},n=n[a[r]];if(i=a.pop(),s===t)return n[i]===t?null:n[i];n[i]=s}else{if(s===t)return this.options[i]===t?null:this.options[i];o[i]=s}return this._setOptions(o),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&(this.widget().toggleClass(this.widgetFullName+"-disabled ui-state-disabled",!!t).attr("aria-disabled",t),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_on:function(i,s,a){var n,r=this;"boolean"!=typeof i&&(a=s,s=i,i=!1),a?(s=n=e(s),this.bindings=this.bindings.add(s)):(a=s,s=this.element,n=this.widget()),e.each(a,function(a,o){function h(){return i||r.options.disabled!==!0&&!e(this).hasClass("ui-state-disabled")?("string"==typeof o?r[o]:o).apply(r,arguments):t}"string"!=typeof o&&(h.guid=o.guid=o.guid||h.guid||e.guid++);var l=a.match(/^(\w+)\s*(.*)$/),u=l[1]+r.eventNamespace,c=l[2];c?n.delegate(c,u,h):s.bind(u,h)})},_off:function(e,t){t=(t||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.unbind(t).undelegate(t)},_delay:function(e,t){function i(){return("string"==typeof e?s[e]:e).apply(s,arguments)}var s=this;return setTimeout(i,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,i,s){var a,n,r=this.options[t];if(s=s||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),i.target=this.element[0],n=i.originalEvent)for(a in n)a in i||(i[a]=n[a]);return this.element.trigger(i,s),!(e.isFunction(r)&&r.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,i){e.Widget.prototype["_"+t]=function(s,a,n){"string"==typeof a&&(a={effect:a});var r,o=a?a===!0||"number"==typeof a?i:a.effect||i:t;a=a||{},"number"==typeof a&&(a={duration:a}),r=!e.isEmptyObject(a),a.complete=n,a.delay&&s.delay(a.delay),r&&e.effects&&(e.effects.effect[o]||e.uiBackCompat!==!1&&e.effects[o])?s[t](a):o!==t&&s[o]?s[o](a.duration,a.easing,n):s.queue(function(i){e(this)[t](),n&&n.call(s[0]),i()})}}),e.uiBackCompat!==!1&&(e.Widget.prototype._getCreateOptions=function(){return e.metadata&&e.metadata.get(this.element[0])[this.widgetName]})})(jQuery);(function(e){var t=!1;e(document).mouseup(function(){t=!1}),e.widget("ui.mouse",{version:"1.9.2",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(i){return!0===e.data(i.target,t.widgetName+".preventClickEvent")?(e.removeData(i.target,t.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):undefined}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(i){if(!t){this._mouseStarted&&this._mouseUp(i),this._mouseDownEvent=i;var s=this,a=1===i.which,n="string"==typeof this.options.cancel&&i.target.nodeName?e(i.target).closest(this.options.cancel).length:!1;return a&&!n&&this._mouseCapture(i)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){s.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(i)&&this._mouseDelayMet(i)&&(this._mouseStarted=this._mouseStart(i)!==!1,!this._mouseStarted)?(i.preventDefault(),!0):(!0===e.data(i.target,this.widgetName+".preventClickEvent")&&e.removeData(i.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return s._mouseMove(e)},this._mouseUpDelegate=function(e){return s._mouseUp(e)},e(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),i.preventDefault(),t=!0,!0)):!0}},_mouseMove:function(t){return!e.ui.ie||document.documentMode>=9||t.button?this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted):this._mouseUp(t)},_mouseUp:function(t){return e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}})})(jQuery);(function(e,t){function i(e,t,i){return[parseInt(e[0],10)*(d.test(e[0])?t/100:1),parseInt(e[1],10)*(d.test(e[1])?i/100:1)]}function s(t,i){return parseInt(e.css(t,i),10)||0}e.ui=e.ui||{};var a,n=Math.max,r=Math.abs,o=Math.round,l=/left|center|right/,h=/top|center|bottom/,u=/[\+\-]\d+%?/,c=/^\w+/,d=/%$/,p=e.fn.position;e.position={scrollbarWidth:function(){if(a!==t)return a;var i,s,n=e("<div style='display:block;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),r=n.children()[0];return e("body").append(n),i=r.offsetWidth,n.css("overflow","scroll"),s=r.offsetWidth,i===s&&(s=n[0].clientWidth),n.remove(),a=i-s},getScrollInfo:function(t){var i=t.isWindow?"":t.element.css("overflow-x"),s=t.isWindow?"":t.element.css("overflow-y"),a="scroll"===i||"auto"===i&&t.width<t.element[0].scrollWidth,n="scroll"===s||"auto"===s&&t.height<t.element[0].scrollHeight;return{width:a?e.position.scrollbarWidth():0,height:n?e.position.scrollbarWidth():0}},getWithinInfo:function(t){var i=e(t||window),s=e.isWindow(i[0]);return{element:i,isWindow:s,offset:i.offset()||{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:s?i.width():i.outerWidth(),height:s?i.height():i.outerHeight()}}},e.fn.position=function(t){if(!t||!t.of)return p.apply(this,arguments);t=e.extend({},t);var a,d,f,m,g,v=e(t.of),y=e.position.getWithinInfo(t.within),b=e.position.getScrollInfo(y),_=v[0],x=(t.collision||"flip").split(" "),k={};return 9===_.nodeType?(d=v.width(),f=v.height(),m={top:0,left:0}):e.isWindow(_)?(d=v.width(),f=v.height(),m={top:v.scrollTop(),left:v.scrollLeft()}):_.preventDefault?(t.at="left top",d=f=0,m={top:_.pageY,left:_.pageX}):(d=v.outerWidth(),f=v.outerHeight(),m=v.offset()),g=e.extend({},m),e.each(["my","at"],function(){var e,i,s=(t[this]||"").split(" ");1===s.length&&(s=l.test(s[0])?s.concat(["center"]):h.test(s[0])?["center"].concat(s):["center","center"]),s[0]=l.test(s[0])?s[0]:"center",s[1]=h.test(s[1])?s[1]:"center",e=u.exec(s[0]),i=u.exec(s[1]),k[this]=[e?e[0]:0,i?i[0]:0],t[this]=[c.exec(s[0])[0],c.exec(s[1])[0]]}),1===x.length&&(x[1]=x[0]),"right"===t.at[0]?g.left+=d:"center"===t.at[0]&&(g.left+=d/2),"bottom"===t.at[1]?g.top+=f:"center"===t.at[1]&&(g.top+=f/2),a=i(k.at,d,f),g.left+=a[0],g.top+=a[1],this.each(function(){var l,h,u=e(this),c=u.outerWidth(),p=u.outerHeight(),_=s(this,"marginLeft"),w=s(this,"marginTop"),D=c+_+s(this,"marginRight")+b.width,T=p+w+s(this,"marginBottom")+b.height,S=e.extend({},g),M=i(k.my,u.outerWidth(),u.outerHeight());"right"===t.my[0]?S.left-=c:"center"===t.my[0]&&(S.left-=c/2),"bottom"===t.my[1]?S.top-=p:"center"===t.my[1]&&(S.top-=p/2),S.left+=M[0],S.top+=M[1],e.support.offsetFractions||(S.left=o(S.left),S.top=o(S.top)),l={marginLeft:_,marginTop:w},e.each(["left","top"],function(i,s){e.ui.position[x[i]]&&e.ui.position[x[i]][s](S,{targetWidth:d,targetHeight:f,elemWidth:c,elemHeight:p,collisionPosition:l,collisionWidth:D,collisionHeight:T,offset:[a[0]+M[0],a[1]+M[1]],my:t.my,at:t.at,within:y,elem:u})}),e.fn.bgiframe&&u.bgiframe(),t.using&&(h=function(e){var i=m.left-S.left,s=i+d-c,a=m.top-S.top,o=a+f-p,l={target:{element:v,left:m.left,top:m.top,width:d,height:f},element:{element:u,left:S.left,top:S.top,width:c,height:p},horizontal:0>s?"left":i>0?"right":"center",vertical:0>o?"top":a>0?"bottom":"middle"};c>d&&d>r(i+s)&&(l.horizontal="center"),p>f&&f>r(a+o)&&(l.vertical="middle"),l.important=n(r(i),r(s))>n(r(a),r(o))?"horizontal":"vertical",t.using.call(this,e,l)}),u.offset(e.extend(S,{using:h}))})},e.ui.position={fit:{left:function(e,t){var i,s=t.within,a=s.isWindow?s.scrollLeft:s.offset.left,r=s.width,o=e.left-t.collisionPosition.marginLeft,l=a-o,h=o+t.collisionWidth-r-a;t.collisionWidth>r?l>0&&0>=h?(i=e.left+l+t.collisionWidth-r-a,e.left+=l-i):e.left=h>0&&0>=l?a:l>h?a+r-t.collisionWidth:a:l>0?e.left+=l:h>0?e.left-=h:e.left=n(e.left-o,e.left)},top:function(e,t){var i,s=t.within,a=s.isWindow?s.scrollTop:s.offset.top,r=t.within.height,o=e.top-t.collisionPosition.marginTop,l=a-o,h=o+t.collisionHeight-r-a;t.collisionHeight>r?l>0&&0>=h?(i=e.top+l+t.collisionHeight-r-a,e.top+=l-i):e.top=h>0&&0>=l?a:l>h?a+r-t.collisionHeight:a:l>0?e.top+=l:h>0?e.top-=h:e.top=n(e.top-o,e.top)}},flip:{left:function(e,t){var i,s,a=t.within,n=a.offset.left+a.scrollLeft,o=a.width,l=a.isWindow?a.scrollLeft:a.offset.left,h=e.left-t.collisionPosition.marginLeft,u=h-l,c=h+t.collisionWidth-o-l,d="left"===t.my[0]?-t.elemWidth:"right"===t.my[0]?t.elemWidth:0,p="left"===t.at[0]?t.targetWidth:"right"===t.at[0]?-t.targetWidth:0,f=-2*t.offset[0];0>u?(i=e.left+d+p+f+t.collisionWidth-o-n,(0>i||r(u)>i)&&(e.left+=d+p+f)):c>0&&(s=e.left-t.collisionPosition.marginLeft+d+p+f-l,(s>0||c>r(s))&&(e.left+=d+p+f))},top:function(e,t){var i,s,a=t.within,n=a.offset.top+a.scrollTop,o=a.height,l=a.isWindow?a.scrollTop:a.offset.top,h=e.top-t.collisionPosition.marginTop,u=h-l,c=h+t.collisionHeight-o-l,d="top"===t.my[1],p=d?-t.elemHeight:"bottom"===t.my[1]?t.elemHeight:0,f="top"===t.at[1]?t.targetHeight:"bottom"===t.at[1]?-t.targetHeight:0,m=-2*t.offset[1];0>u?(s=e.top+p+f+m+t.collisionHeight-o-n,e.top+p+f+m>u&&(0>s||r(u)>s)&&(e.top+=p+f+m)):c>0&&(i=e.top-t.collisionPosition.marginTop+p+f+m-l,e.top+p+f+m>c&&(i>0||c>r(i))&&(e.top+=p+f+m))}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}},function(){var t,i,s,a,n,r=document.getElementsByTagName("body")[0],o=document.createElement("div");t=document.createElement(r?"div":"body"),s={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},r&&e.extend(s,{position:"absolute",left:"-1000px",top:"-1000px"});for(n in s)t.style[n]=s[n];t.appendChild(o),i=r||document.documentElement,i.insertBefore(t,i.firstChild),o.style.cssText="position: absolute; left: 10.7432222px;",a=e(o).offset().left,e.support.offsetFractions=a>10&&11>a,t.innerHTML="",i.removeChild(t)}(),e.uiBackCompat!==!1&&function(e){var i=e.fn.position;e.fn.position=function(s){if(!s||!s.offset)return i.call(this,s);var a=s.offset.split(" "),n=s.at.split(" ");return 1===a.length&&(a[1]=a[0]),/^\d/.test(a[0])&&(a[0]="+"+a[0]),/^\d/.test(a[1])&&(a[1]="+"+a[1]),1===n.length&&(/left|center|right/.test(n[0])?n[1]="center":(n[1]=n[0],n[0]="center")),i.call(this,e.extend(s,{at:n[0]+a[0]+" "+n[1]+a[1],offset:t}))}}(jQuery)})(jQuery);(function(e){e.widget("ui.draggable",e.ui.mouse,{version:"1.9.2",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1},_create:function(){"original"!=this.options.helper||/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative"),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._mouseInit()},_destroy:function(){this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._mouseDestroy()},_mouseCapture:function(t){var i=this.options;return this.helper||i.disabled||e(t.target).is(".ui-resizable-handle")?!1:(this.handle=this._getHandle(t),this.handle?(e(i.iframeFix===!0?"iframe":i.iframeFix).each(function(){e('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css(e(this).offset()).appendTo("body")}),!0):!1)},_mouseStart:function(t){var i=this.options;return this.helper=this._createHelper(t),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),e.ui.ddmanager&&(e.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(),this.offset=this.positionAbs=this.element.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),i.containment&&this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this._mouseDrag(t,!0),e.ui.ddmanager&&e.ui.ddmanager.dragStart(this,t),!0)},_mouseDrag:function(t,i){if(this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),!i){var a=this._uiHash();if(this._trigger("drag",t,a)===!1)return this._mouseUp({}),!1;this.position=a.position}return this.options.axis&&"y"==this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"==this.options.axis||(this.helper[0].style.top=this.position.top+"px"),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var i=!1;e.ui.ddmanager&&!this.options.dropBehaviour&&(i=e.ui.ddmanager.drop(this,t)),this.dropped&&(i=this.dropped,this.dropped=!1);for(var a=this.element[0],s=!1;a&&(a=a.parentNode);)a==document&&(s=!0);if(!s&&"original"===this.options.helper)return!1;if("invalid"==this.options.revert&&!i||"valid"==this.options.revert&&i||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,i)){var n=this;e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){n._trigger("stop",t)!==!1&&n._clear()})}else this._trigger("stop",t)!==!1&&this._clear();return!1},_mouseUp:function(t){return e("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),e.ui.ddmanager&&e.ui.ddmanager.dragStop(this,t),e.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(t){var i=this.options.handle&&e(this.options.handle,this.element).length?!1:!0;return e(this.options.handle,this.element).find("*").andSelf().each(function(){this==t.target&&(i=!0)}),i},_createHelper:function(t){var i=this.options,a=e.isFunction(i.helper)?e(i.helper.apply(this.element[0],[t])):"clone"==i.helper?this.element.clone().removeAttr("id"):this.element;return a.parents("body").length||a.appendTo("parent"==i.appendTo?this.element[0].parentNode:i.appendTo),a[0]==this.element[0]||/(fixed|absolute)/.test(a.css("position"))||a.css("position","absolute"),a},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();return"absolute"==this.cssPosition&&this.scrollParent[0]!=document&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&"html"==this.offsetParent[0].tagName.toLowerCase()&&e.ui.ie)&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"==this.cssPosition){var e=this.element.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t=this.options;if("parent"==t.containment&&(t.containment=this.helper[0].parentNode),("document"==t.containment||"window"==t.containment)&&(this.containment=["document"==t.containment?0:e(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,"document"==t.containment?0:e(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,("document"==t.containment?0:e(window).scrollLeft())+e("document"==t.containment?document:window).width()-this.helperProportions.width-this.margins.left,("document"==t.containment?0:e(window).scrollTop())+(e("document"==t.containment?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(t.containment)||t.containment.constructor==Array)t.containment.constructor==Array&&(this.containment=t.containment);else{var i=e(t.containment),a=i[0];if(!a)return;i.offset();var s="hidden"!=e(a).css("overflow");this.containment=[(parseInt(e(a).css("borderLeftWidth"),10)||0)+(parseInt(e(a).css("paddingLeft"),10)||0),(parseInt(e(a).css("borderTopWidth"),10)||0)+(parseInt(e(a).css("paddingTop"),10)||0),(s?Math.max(a.scrollWidth,a.offsetWidth):a.offsetWidth)-(parseInt(e(a).css("borderLeftWidth"),10)||0)-(parseInt(e(a).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(s?Math.max(a.scrollHeight,a.offsetHeight):a.offsetHeight)-(parseInt(e(a).css("borderTopWidth"),10)||0)-(parseInt(e(a).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relative_container=i}},_convertPositionTo:function(t,i){i||(i=this.position);var a="absolute"==t?1:-1,s=(this.options,"absolute"!=this.cssPosition||this.scrollParent[0]!=document&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent),n=/(html|body)/i.test(s[0].tagName);return{top:i.top+this.offset.relative.top*a+this.offset.parent.top*a-("fixed"==this.cssPosition?-this.scrollParent.scrollTop():n?0:s.scrollTop())*a,left:i.left+this.offset.relative.left*a+this.offset.parent.left*a-("fixed"==this.cssPosition?-this.scrollParent.scrollLeft():n?0:s.scrollLeft())*a}},_generatePosition:function(t){var i=this.options,a="absolute"!=this.cssPosition||this.scrollParent[0]!=document&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,s=/(html|body)/i.test(a[0].tagName),n=t.pageX,r=t.pageY;if(this.originalPosition){var o;if(this.containment){if(this.relative_container){var l=this.relative_container.offset();o=[this.containment[0]+l.left,this.containment[1]+l.top,this.containment[2]+l.left,this.containment[3]+l.top]}else o=this.containment;t.pageX-this.offset.click.left<o[0]&&(n=o[0]+this.offset.click.left),t.pageY-this.offset.click.top<o[1]&&(r=o[1]+this.offset.click.top),t.pageX-this.offset.click.left>o[2]&&(n=o[2]+this.offset.click.left),t.pageY-this.offset.click.top>o[3]&&(r=o[3]+this.offset.click.top)}if(i.grid){var h=i.grid[1]?this.originalPageY+Math.round((r-this.originalPageY)/i.grid[1])*i.grid[1]:this.originalPageY;r=o?h-this.offset.click.top<o[1]||h-this.offset.click.top>o[3]?h-this.offset.click.top<o[1]?h+i.grid[1]:h-i.grid[1]:h:h;var u=i.grid[0]?this.originalPageX+Math.round((n-this.originalPageX)/i.grid[0])*i.grid[0]:this.originalPageX;n=o?u-this.offset.click.left<o[0]||u-this.offset.click.left>o[2]?u-this.offset.click.left<o[0]?u+i.grid[0]:u-i.grid[0]:u:u}}return{top:r-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"==this.cssPosition?-this.scrollParent.scrollTop():s?0:a.scrollTop()),left:n-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"==this.cssPosition?-this.scrollParent.scrollLeft():s?0:a.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]==this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1},_trigger:function(t,i,a){return a=a||this._uiHash(),e.ui.plugin.call(this,t,[i,a]),"drag"==t&&(this.positionAbs=this._convertPositionTo("absolute")),e.Widget.prototype._trigger.call(this,t,i,a)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),e.ui.plugin.add("draggable","connectToSortable",{start:function(t,i){var a=e(this).data("draggable"),s=a.options,n=e.extend({},i,{item:a.element});a.sortables=[],e(s.connectToSortable).each(function(){var i=e.data(this,"sortable");i&&!i.options.disabled&&(a.sortables.push({instance:i,shouldRevert:i.options.revert}),i.refreshPositions(),i._trigger("activate",t,n))})},stop:function(t,i){var a=e(this).data("draggable"),s=e.extend({},i,{item:a.element});e.each(a.sortables,function(){this.instance.isOver?(this.instance.isOver=0,a.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=!0),this.instance._mouseStop(t),this.instance.options.helper=this.instance.options._helper,"original"==a.options.helper&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",t,s))})},drag:function(t,i){var a=e(this).data("draggable"),s=this;e.each(a.sortables,function(){var n=!1,r=this;this.instance.positionAbs=a.positionAbs,this.instance.helperProportions=a.helperProportions,this.instance.offset.click=a.offset.click,this.instance._intersectsWith(this.instance.containerCache)&&(n=!0,e.each(a.sortables,function(){return this.instance.positionAbs=a.positionAbs,this.instance.helperProportions=a.helperProportions,this.instance.offset.click=a.offset.click,this!=r&&this.instance._intersectsWith(this.instance.containerCache)&&e.ui.contains(r.instance.element[0],this.instance.element[0])&&(n=!1),n})),n?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=e(s).clone().removeAttr("id").appendTo(this.instance.element).data("sortable-item",!0),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return i.helper[0]},t.target=this.instance.currentItem[0],this.instance._mouseCapture(t,!0),this.instance._mouseStart(t,!0,!0),this.instance.offset.click.top=a.offset.click.top,this.instance.offset.click.left=a.offset.click.left,this.instance.offset.parent.left-=a.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=a.offset.parent.top-this.instance.offset.parent.top,a._trigger("toSortable",t),a.dropped=this.instance.element,a.currentItem=a.element,this.instance.fromOutside=a),this.instance.currentItem&&this.instance._mouseDrag(t)):this.instance.isOver&&(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger("out",t,this.instance._uiHash(this.instance)),this.instance._mouseStop(t,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),a._trigger("fromSortable",t),a.dropped=!1)})}}),e.ui.plugin.add("draggable","cursor",{start:function(){var t=e("body"),i=e(this).data("draggable").options;t.css("cursor")&&(i._cursor=t.css("cursor")),t.css("cursor",i.cursor)},stop:function(){var t=e(this).data("draggable").options;t._cursor&&e("body").css("cursor",t._cursor)}}),e.ui.plugin.add("draggable","opacity",{start:function(t,i){var a=e(i.helper),s=e(this).data("draggable").options;a.css("opacity")&&(s._opacity=a.css("opacity")),a.css("opacity",s.opacity)},stop:function(t,i){var a=e(this).data("draggable").options;a._opacity&&e(i.helper).css("opacity",a._opacity)}}),e.ui.plugin.add("draggable","scroll",{start:function(){var t=e(this).data("draggable");t.scrollParent[0]!=document&&"HTML"!=t.scrollParent[0].tagName&&(t.overflowOffset=t.scrollParent.offset())},drag:function(t){var i=e(this).data("draggable"),a=i.options,s=!1;i.scrollParent[0]!=document&&"HTML"!=i.scrollParent[0].tagName?(a.axis&&"x"==a.axis||(i.overflowOffset.top+i.scrollParent[0].offsetHeight-t.pageY<a.scrollSensitivity?i.scrollParent[0].scrollTop=s=i.scrollParent[0].scrollTop+a.scrollSpeed:t.pageY-i.overflowOffset.top<a.scrollSensitivity&&(i.scrollParent[0].scrollTop=s=i.scrollParent[0].scrollTop-a.scrollSpeed)),a.axis&&"y"==a.axis||(i.overflowOffset.left+i.scrollParent[0].offsetWidth-t.pageX<a.scrollSensitivity?i.scrollParent[0].scrollLeft=s=i.scrollParent[0].scrollLeft+a.scrollSpeed:t.pageX-i.overflowOffset.left<a.scrollSensitivity&&(i.scrollParent[0].scrollLeft=s=i.scrollParent[0].scrollLeft-a.scrollSpeed))):(a.axis&&"x"==a.axis||(t.pageY-e(document).scrollTop()<a.scrollSensitivity?s=e(document).scrollTop(e(document).scrollTop()-a.scrollSpeed):e(window).height()-(t.pageY-e(document).scrollTop())<a.scrollSensitivity&&(s=e(document).scrollTop(e(document).scrollTop()+a.scrollSpeed))),a.axis&&"y"==a.axis||(t.pageX-e(document).scrollLeft()<a.scrollSensitivity?s=e(document).scrollLeft(e(document).scrollLeft()-a.scrollSpeed):e(window).width()-(t.pageX-e(document).scrollLeft())<a.scrollSensitivity&&(s=e(document).scrollLeft(e(document).scrollLeft()+a.scrollSpeed)))),s!==!1&&e.ui.ddmanager&&!a.dropBehaviour&&e.ui.ddmanager.prepareOffsets(i,t)}}),e.ui.plugin.add("draggable","snap",{start:function(){var t=e(this).data("draggable"),i=t.options;t.snapElements=[],e(i.snap.constructor!=String?i.snap.items||":data(draggable)":i.snap).each(function(){var i=e(this),a=i.offset();this!=t.element[0]&&t.snapElements.push({item:this,width:i.outerWidth(),height:i.outerHeight(),top:a.top,left:a.left})})},drag:function(t,i){for(var a=e(this).data("draggable"),s=a.options,n=s.snapTolerance,r=i.offset.left,o=r+a.helperProportions.width,l=i.offset.top,h=l+a.helperProportions.height,u=a.snapElements.length-1;u>=0;u--){var d=a.snapElements[u].left,c=d+a.snapElements[u].width,p=a.snapElements[u].top,m=p+a.snapElements[u].height;if(r>d-n&&c+n>r&&l>p-n&&m+n>l||r>d-n&&c+n>r&&h>p-n&&m+n>h||o>d-n&&c+n>o&&l>p-n&&m+n>l||o>d-n&&c+n>o&&h>p-n&&m+n>h){if("inner"!=s.snapMode){var f=n>=Math.abs(p-h),g=n>=Math.abs(m-l),v=n>=Math.abs(d-o),y=n>=Math.abs(c-r);f&&(i.position.top=a._convertPositionTo("relative",{top:p-a.helperProportions.height,left:0}).top-a.margins.top),g&&(i.position.top=a._convertPositionTo("relative",{top:m,left:0}).top-a.margins.top),v&&(i.position.left=a._convertPositionTo("relative",{top:0,left:d-a.helperProportions.width}).left-a.margins.left),y&&(i.position.left=a._convertPositionTo("relative",{top:0,left:c}).left-a.margins.left)}var b=f||g||v||y;if("outer"!=s.snapMode){var f=n>=Math.abs(p-l),g=n>=Math.abs(m-h),v=n>=Math.abs(d-r),y=n>=Math.abs(c-o);f&&(i.position.top=a._convertPositionTo("relative",{top:p,left:0}).top-a.margins.top),g&&(i.position.top=a._convertPositionTo("relative",{top:m-a.helperProportions.height,left:0}).top-a.margins.top),v&&(i.position.left=a._convertPositionTo("relative",{top:0,left:d}).left-a.margins.left),y&&(i.position.left=a._convertPositionTo("relative",{top:0,left:c-a.helperProportions.width}).left-a.margins.left)}!a.snapElements[u].snapping&&(f||g||v||y||b)&&a.options.snap.snap&&a.options.snap.snap.call(a.element,t,e.extend(a._uiHash(),{snapItem:a.snapElements[u].item})),a.snapElements[u].snapping=f||g||v||y||b}else a.snapElements[u].snapping&&a.options.snap.release&&a.options.snap.release.call(a.element,t,e.extend(a._uiHash(),{snapItem:a.snapElements[u].item})),a.snapElements[u].snapping=!1}}}),e.ui.plugin.add("draggable","stack",{start:function(){var t=e(this).data("draggable").options,i=e.makeArray(e(t.stack)).sort(function(t,i){return(parseInt(e(t).css("zIndex"),10)||0)-(parseInt(e(i).css("zIndex"),10)||0)});if(i.length){var a=parseInt(i[0].style.zIndex)||0;e(i).each(function(e){this.style.zIndex=a+e}),this[0].style.zIndex=a+i.length}}}),e.ui.plugin.add("draggable","zIndex",{start:function(t,i){var a=e(i.helper),s=e(this).data("draggable").options;a.css("zIndex")&&(s._zIndex=a.css("zIndex")),a.css("zIndex",s.zIndex)},stop:function(t,i){var a=e(this).data("draggable").options;a._zIndex&&e(i.helper).css("zIndex",a._zIndex)}})})(jQuery);(function(e){e.widget("ui.droppable",{version:"1.9.2",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect"},_create:function(){var t=this.options,i=t.accept;this.isover=0,this.isout=1,this.accept=e.isFunction(i)?i:function(e){return e.is(i)},this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight},e.ui.ddmanager.droppables[t.scope]=e.ui.ddmanager.droppables[t.scope]||[],e.ui.ddmanager.droppables[t.scope].push(this),t.addClasses&&this.element.addClass("ui-droppable")},_destroy:function(){for(var t=e.ui.ddmanager.droppables[this.options.scope],i=0;t.length>i;i++)t[i]==this&&t.splice(i,1);this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(t,i){"accept"==t&&(this.accept=e.isFunction(i)?i:function(e){return e.is(i)}),e.Widget.prototype._setOption.apply(this,arguments)},_activate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),i&&this._trigger("activate",t,this.ui(i))},_deactivate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),i&&this._trigger("deactivate",t,this.ui(i))},_over:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!=this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",t,this.ui(i)))},_out:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!=this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",t,this.ui(i)))},_drop:function(t,i){var a=i||e.ui.ddmanager.current;if(!a||(a.currentItem||a.element)[0]==this.element[0])return!1;var s=!1;return this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function(){var t=e.data(this,"droppable");return t.options.greedy&&!t.options.disabled&&t.options.scope==a.options.scope&&t.accept.call(t.element[0],a.currentItem||a.element)&&e.ui.intersect(a,e.extend(t,{offset:t.element.offset()}),t.options.tolerance)?(s=!0,!1):undefined}),s?!1:this.accept.call(this.element[0],a.currentItem||a.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",t,this.ui(a)),this.element):!1},ui:function(e){return{draggable:e.currentItem||e.element,helper:e.helper,position:e.position,offset:e.positionAbs}}}),e.ui.intersect=function(t,i,a){if(!i.offset)return!1;var s=(t.positionAbs||t.position.absolute).left,n=s+t.helperProportions.width,r=(t.positionAbs||t.position.absolute).top,o=r+t.helperProportions.height,l=i.offset.left,h=l+i.proportions.width,u=i.offset.top,d=u+i.proportions.height;switch(a){case"fit":return s>=l&&h>=n&&r>=u&&d>=o;case"intersect":return s+t.helperProportions.width/2>l&&h>n-t.helperProportions.width/2&&r+t.helperProportions.height/2>u&&d>o-t.helperProportions.height/2;case"pointer":var c=(t.positionAbs||t.position.absolute).left+(t.clickOffset||t.offset.click).left,p=(t.positionAbs||t.position.absolute).top+(t.clickOffset||t.offset.click).top,m=e.ui.isOver(p,c,u,l,i.proportions.height,i.proportions.width);return m;case"touch":return(r>=u&&d>=r||o>=u&&d>=o||u>r&&o>d)&&(s>=l&&h>=s||n>=l&&h>=n||l>s&&n>h);default:return!1}},e.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(t,i){var a=e.ui.ddmanager.droppables[t.options.scope]||[],s=i?i.type:null,n=(t.currentItem||t.element).find(":data(droppable)").andSelf();e:for(var r=0;a.length>r;r++)if(!(a[r].options.disabled||t&&!a[r].accept.call(a[r].element[0],t.currentItem||t.element))){for(var o=0;n.length>o;o++)if(n[o]==a[r].element[0]){a[r].proportions.height=0;continue e}a[r].visible="none"!=a[r].element.css("display"),a[r].visible&&("mousedown"==s&&a[r]._activate.call(a[r],i),a[r].offset=a[r].element.offset(),a[r].proportions={width:a[r].element[0].offsetWidth,height:a[r].element[0].offsetHeight})}},drop:function(t,i){var a=!1;return e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){this.options&&(!this.options.disabled&&this.visible&&e.ui.intersect(t,this,this.options.tolerance)&&(a=this._drop.call(this,i)||a),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=1,this.isover=0,this._deactivate.call(this,i)))}),a},dragStart:function(t,i){t.element.parentsUntil("body").bind("scroll.droppable",function(){t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)})},drag:function(t,i){t.options.refreshPositions&&e.ui.ddmanager.prepareOffsets(t,i),e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var a=e.ui.intersect(t,this,this.options.tolerance),s=a||1!=this.isover?a&&0==this.isover?"isover":null:"isout";if(s){var n;if(this.options.greedy){var r=this.options.scope,o=this.element.parents(":data(droppable)").filter(function(){return e.data(this,"droppable").options.scope===r});o.length&&(n=e.data(o[0],"droppable"),n.greedyChild="isover"==s?1:0)}n&&"isover"==s&&(n.isover=0,n.isout=1,n._out.call(n,i)),this[s]=1,this["isout"==s?"isover":"isout"]=0,this["isover"==s?"_over":"_out"].call(this,i),n&&"isout"==s&&(n.isout=0,n.isover=1,n._over.call(n,i))}}})},dragStop:function(t,i){t.element.parentsUntil("body").unbind("scroll.droppable"),t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)}}})(jQuery);(function(e){e.widget("ui.resizable",e.ui.mouse,{version:"1.9.2",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1e3},_create:function(){var t=this,i=this.options;if(this.element.addClass("ui-resizable"),e.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(this.element.wrap(e('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("resizable",this.element.data("resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=i.handles||(e(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this.handles.constructor==String){"all"==this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw");var s=this.handles.split(",");this.handles={};for(var a=0;s.length>a;a++){var n=e.trim(s[a]),r="ui-resizable-"+n,o=e('<div class="ui-resizable-handle '+r+'"></div>');o.css({zIndex:i.zIndex}),"se"==n&&o.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[n]=".ui-resizable-"+n,this.element.append(o)}}this._renderAxis=function(t){t=t||this.element;for(var i in this.handles){if(this.handles[i].constructor==String&&(this.handles[i]=e(this.handles[i],this.element).show()),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var s=e(this.handles[i],this.element),a=0;a=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth();var n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join("");t.css(n,a),this._proportionallyResize()}e(this.handles[i]).length}},this._renderAxis(this.element),this._handles=e(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){if(!t.resizing){if(this.className)var e=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);t.axis=e&&e[1]?e[1]:"se"}}),i.autoHide&&(this._handles.hide(),e(this.element).addClass("ui-resizable-autohide").mouseenter(function(){i.disabled||(e(this).removeClass("ui-resizable-autohide"),t._handles.show())}).mouseleave(function(){i.disabled||t.resizing||(e(this).addClass("ui-resizable-autohide"),t._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t=function(t){e(t).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){t(this.element);var i=this.element;this.originalElement.css({position:i.css("position"),width:i.outerWidth(),height:i.outerHeight(),top:i.css("top"),left:i.css("left")}).insertAfter(i),i.remove()}return this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_mouseCapture:function(t){var i=!1;for(var s in this.handles)e(this.handles[s])[0]==t.target&&(i=!0);return!this.options.disabled&&i},_mouseStart:function(i){var s=this.options,a=this.element.position(),n=this.element;this.resizing=!0,this.documentScroll={top:e(document).scrollTop(),left:e(document).scrollLeft()},(n.is(".ui-draggable")||/absolute/.test(n.css("position")))&&n.css({position:"absolute",top:a.top,left:a.left}),this._renderProxy();var r=t(this.helper.css("left")),o=t(this.helper.css("top"));s.containment&&(r+=e(s.containment).scrollLeft()||0,o+=e(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:r,top:o},this.size=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.originalPosition={left:r,top:o},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalMousePosition={left:i.pageX,top:i.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1;var h=e(".ui-resizable-"+this.axis).css("cursor");return e("body").css("cursor","auto"==h?this.axis+"-resize":h),n.addClass("ui-resizable-resizing"),this._propagate("start",i),!0},_mouseDrag:function(e){var t=this.helper,i=(this.options,this.originalMousePosition),s=this.axis,a=e.pageX-i.left||0,n=e.pageY-i.top||0,r=this._change[s];if(!r)return!1;var o=r.apply(this,[e,a,n]);return this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(o=this._updateRatio(o,e)),o=this._respectSize(o,e),this._propagate("resize",e),t.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"}),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),this._updateCache(o),this._trigger("resize",e,this.ui()),!1},_mouseStop:function(t){this.resizing=!1;var i=this.options,s=this;if(this._helper){var a=this._proportionallyResizeElements,n=a.length&&/textarea/i.test(a[0].nodeName),r=n&&e.ui.hasScroll(a[0],"left")?0:s.sizeDiff.height,o=n?0:s.sizeDiff.width,h={width:s.helper.width()-o,height:s.helper.height()-r},l=parseInt(s.element.css("left"),10)+(s.position.left-s.originalPosition.left)||null,u=parseInt(s.element.css("top"),10)+(s.position.top-s.originalPosition.top)||null;i.animate||this.element.css(e.extend(h,{top:u,left:l})),s.helper.height(s.size.height),s.helper.width(s.size.width),this._helper&&!i.animate&&this._proportionallyResize()}return e("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updateVirtualBoundaries:function(e){var t,s,a,n,r,o=this.options;r={minWidth:i(o.minWidth)?o.minWidth:0,maxWidth:i(o.maxWidth)?o.maxWidth:1/0,minHeight:i(o.minHeight)?o.minHeight:0,maxHeight:i(o.maxHeight)?o.maxHeight:1/0},(this._aspectRatio||e)&&(t=r.minHeight*this.aspectRatio,a=r.minWidth/this.aspectRatio,s=r.maxHeight*this.aspectRatio,n=r.maxWidth/this.aspectRatio,t>r.minWidth&&(r.minWidth=t),a>r.minHeight&&(r.minHeight=a),r.maxWidth>s&&(r.maxWidth=s),r.maxHeight>n&&(r.maxHeight=n)),this._vBoundaries=r},_updateCache:function(e){this.options,this.offset=this.helper.offset(),i(e.left)&&(this.position.left=e.left),i(e.top)&&(this.position.top=e.top),i(e.height)&&(this.size.height=e.height),i(e.width)&&(this.size.width=e.width)},_updateRatio:function(e){var t=(this.options,this.position),s=this.size,a=this.axis;return i(e.height)?e.width=e.height*this.aspectRatio:i(e.width)&&(e.height=e.width/this.aspectRatio),"sw"==a&&(e.left=t.left+(s.width-e.width),e.top=null),"nw"==a&&(e.top=t.top+(s.height-e.height),e.left=t.left+(s.width-e.width)),e},_respectSize:function(e,t){var s=(this.helper,this._vBoundaries),a=(this._aspectRatio||t.shiftKey,this.axis),n=i(e.width)&&s.maxWidth&&s.maxWidth<e.width,r=i(e.height)&&s.maxHeight&&s.maxHeight<e.height,o=i(e.width)&&s.minWidth&&s.minWidth>e.width,h=i(e.height)&&s.minHeight&&s.minHeight>e.height;o&&(e.width=s.minWidth),h&&(e.height=s.minHeight),n&&(e.width=s.maxWidth),r&&(e.height=s.maxHeight);var l=this.originalPosition.left+this.originalSize.width,u=this.position.top+this.size.height,d=/sw|nw|w/.test(a),c=/nw|ne|n/.test(a);o&&d&&(e.left=l-s.minWidth),n&&d&&(e.left=l-s.maxWidth),h&&c&&(e.top=u-s.minHeight),r&&c&&(e.top=u-s.maxHeight);var p=!e.width&&!e.height;return p&&!e.left&&e.top?e.top=null:p&&!e.top&&e.left&&(e.left=null),e},_proportionallyResize:function(){if(this.options,this._proportionallyResizeElements.length)for(var t=this.helper||this.element,i=0;this._proportionallyResizeElements.length>i;i++){var s=this._proportionallyResizeElements[i];if(!this.borderDif){var a=[s.css("borderTopWidth"),s.css("borderRightWidth"),s.css("borderBottomWidth"),s.css("borderLeftWidth")],n=[s.css("paddingTop"),s.css("paddingRight"),s.css("paddingBottom"),s.css("paddingLeft")];this.borderDif=e.map(a,function(e,t){var i=parseInt(e,10)||0,s=parseInt(n[t],10)||0;return i+s})}s.css({height:t.height()-this.borderDif[0]-this.borderDif[2]||0,width:t.width()-this.borderDif[1]-this.borderDif[3]||0})}},_renderProxy:function(){var t=this.element,i=this.options;if(this.elementOffset=t.offset(),this._helper){this.helper=this.helper||e('<div style="overflow:hidden;"></div>');var s=e.ui.ie6?1:0,a=e.ui.ie6?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-s+"px",top:this.elementOffset.top-s+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(e,t){return{width:this.originalSize.width+t}},w:function(e,t){var i=(this.options,this.originalSize),s=this.originalPosition;return{left:s.left+t,width:i.width-t}},n:function(e,t,i){var s=(this.options,this.originalSize),a=this.originalPosition;return{top:a.top+i,height:s.height-i}},s:function(e,t,i){return{height:this.originalSize.height+i}},se:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},sw:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,i,s]))},ne:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},nw:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,i,s]))}},_propagate:function(t,i){e.ui.plugin.call(this,t,[i,this.ui()]),"resize"!=t&&this._trigger(t,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),e.ui.plugin.add("resizable","alsoResize",{start:function(){var t=e(this).data("resizable"),i=t.options,s=function(t){e(t).each(function(){var t=e(this);t.data("resizable-alsoresize",{width:parseInt(t.width(),10),height:parseInt(t.height(),10),left:parseInt(t.css("left"),10),top:parseInt(t.css("top"),10)})})};"object"!=typeof i.alsoResize||i.alsoResize.parentNode?s(i.alsoResize):i.alsoResize.length?(i.alsoResize=i.alsoResize[0],s(i.alsoResize)):e.each(i.alsoResize,function(e){s(e)})},resize:function(t,i){var s=e(this).data("resizable"),a=s.options,n=s.originalSize,r=s.originalPosition,o={height:s.size.height-n.height||0,width:s.size.width-n.width||0,top:s.position.top-r.top||0,left:s.position.left-r.left||0},h=function(t,s){e(t).each(function(){var t=e(this),a=e(this).data("resizable-alsoresize"),n={},r=s&&s.length?s:t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(r,function(e,t){var i=(a[t]||0)+(o[t]||0);i&&i>=0&&(n[t]=i||null)}),t.css(n)})};"object"!=typeof a.alsoResize||a.alsoResize.nodeType?h(a.alsoResize):e.each(a.alsoResize,function(e,t){h(e,t)})},stop:function(){e(this).removeData("resizable-alsoresize")}}),e.ui.plugin.add("resizable","animate",{stop:function(t){var i=e(this).data("resizable"),s=i.options,a=i._proportionallyResizeElements,n=a.length&&/textarea/i.test(a[0].nodeName),r=n&&e.ui.hasScroll(a[0],"left")?0:i.sizeDiff.height,o=n?0:i.sizeDiff.width,h={width:i.size.width-o,height:i.size.height-r},l=parseInt(i.element.css("left"),10)+(i.position.left-i.originalPosition.left)||null,u=parseInt(i.element.css("top"),10)+(i.position.top-i.originalPosition.top)||null;i.element.animate(e.extend(h,u&&l?{top:u,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseInt(i.element.css("width"),10),height:parseInt(i.element.css("height"),10),top:parseInt(i.element.css("top"),10),left:parseInt(i.element.css("left"),10)};a&&a.length&&e(a[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",t)}})}}),e.ui.plugin.add("resizable","containment",{start:function(){var i=e(this).data("resizable"),s=i.options,a=i.element,n=s.containment,r=n instanceof e?n.get(0):/parent/.test(n)?a.parent().get(0):n;if(r)if(i.containerElement=e(r),/document/.test(n)||n==document)i.containerOffset={left:0,top:0},i.containerPosition={left:0,top:0},i.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight};else{var o=e(r),h=[];e(["Top","Right","Left","Bottom"]).each(function(e,i){h[e]=t(o.css("padding"+i))}),i.containerOffset=o.offset(),i.containerPosition=o.position(),i.containerSize={height:o.innerHeight()-h[3],width:o.innerWidth()-h[1]};var l=i.containerOffset,u=i.containerSize.height,d=i.containerSize.width,c=e.ui.hasScroll(r,"left")?r.scrollWidth:d,p=e.ui.hasScroll(r)?r.scrollHeight:u;i.parentData={element:r,left:l.left,top:l.top,width:c,height:p}}},resize:function(t){var i=e(this).data("resizable"),s=i.options,a=(i.containerSize,i.containerOffset),n=(i.size,i.position),r=i._aspectRatio||t.shiftKey,o={top:0,left:0},h=i.containerElement;h[0]!=document&&/static/.test(h.css("position"))&&(o=a),n.left<(i._helper?a.left:0)&&(i.size.width=i.size.width+(i._helper?i.position.left-a.left:i.position.left-o.left),r&&(i.size.height=i.size.width/i.aspectRatio),i.position.left=s.helper?a.left:0),n.top<(i._helper?a.top:0)&&(i.size.height=i.size.height+(i._helper?i.position.top-a.top:i.position.top),r&&(i.size.width=i.size.height*i.aspectRatio),i.position.top=i._helper?a.top:0),i.offset.left=i.parentData.left+i.position.left,i.offset.top=i.parentData.top+i.position.top;var l=Math.abs((i._helper?i.offset.left-o.left:i.offset.left-o.left)+i.sizeDiff.width),u=Math.abs((i._helper?i.offset.top-o.top:i.offset.top-a.top)+i.sizeDiff.height),d=i.containerElement.get(0)==i.element.parent().get(0),c=/relative|absolute/.test(i.containerElement.css("position"));d&&c&&(l-=i.parentData.left),l+i.size.width>=i.parentData.width&&(i.size.width=i.parentData.width-l,r&&(i.size.height=i.size.width/i.aspectRatio)),u+i.size.height>=i.parentData.height&&(i.size.height=i.parentData.height-u,r&&(i.size.width=i.size.height*i.aspectRatio))},stop:function(){var t=e(this).data("resizable"),i=t.options,s=(t.position,t.containerOffset),a=t.containerPosition,n=t.containerElement,r=e(t.helper),o=r.offset(),h=r.outerWidth()-t.sizeDiff.width,l=r.outerHeight()-t.sizeDiff.height;t._helper&&!i.animate&&/relative/.test(n.css("position"))&&e(this).css({left:o.left-a.left-s.left,width:h,height:l}),t._helper&&!i.animate&&/static/.test(n.css("position"))&&e(this).css({left:o.left-a.left-s.left,width:h,height:l})}}),e.ui.plugin.add("resizable","ghost",{start:function(){var t=e(this).data("resizable"),i=t.options,s=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:s.height,width:s.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof i.ghost?i.ghost:""),t.ghost.appendTo(t.helper)},resize:function(){var t=e(this).data("resizable");t.options,t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=e(this).data("resizable");t.options,t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),e.ui.plugin.add("resizable","grid",{resize:function(t){var i=e(this).data("resizable"),s=i.options,a=i.size,n=i.originalSize,r=i.originalPosition,o=i.axis;s._aspectRatio||t.shiftKey,s.grid="number"==typeof s.grid?[s.grid,s.grid]:s.grid;var h=Math.round((a.width-n.width)/(s.grid[0]||1))*(s.grid[0]||1),l=Math.round((a.height-n.height)/(s.grid[1]||1))*(s.grid[1]||1);/^(se|s|e)$/.test(o)?(i.size.width=n.width+h,i.size.height=n.height+l):/^(ne)$/.test(o)?(i.size.width=n.width+h,i.size.height=n.height+l,i.position.top=r.top-l):/^(sw)$/.test(o)?(i.size.width=n.width+h,i.size.height=n.height+l,i.position.left=r.left-h):(i.size.width=n.width+h,i.size.height=n.height+l,i.position.top=r.top-l,i.position.left=r.left-h)}});var t=function(e){return parseInt(e,10)||0},i=function(e){return!isNaN(parseInt(e,10))}})(jQuery);(function(e){e.widget("ui.selectable",e.ui.mouse,{version:"1.9.2",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch"},_create:function(){var t=this;this.element.addClass("ui-selectable"),this.dragged=!1;var i;this.refresh=function(){i=e(t.options.filter,t.element[0]),i.addClass("ui-selectee"),i.each(function(){var t=e(this),i=t.offset();e.data(this,"selectable-item",{element:this,$element:t,left:i.left,top:i.top,right:i.left+t.outerWidth(),bottom:i.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=i.addClass("ui-selectee"),this._mouseInit(),this.helper=e("<div class='ui-selectable-helper'></div>")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(t){var i=this;if(this.opos=[t.pageX,t.pageY],!this.options.disabled){var s=this.options;this.selectees=e(s.filter,this.element[0]),this._trigger("start",t),e(s.appendTo).append(this.helper),this.helper.css({left:t.clientX,top:t.clientY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=e.data(this,"selectable-item");s.startselected=!0,t.metaKey||t.ctrlKey||(s.$element.removeClass("ui-selected"),s.selected=!1,s.$element.addClass("ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",t,{unselecting:s.element}))}),e(t.target).parents().andSelf().each(function(){var s=e.data(this,"selectable-item");if(s){var a=!t.metaKey&&!t.ctrlKey||!s.$element.hasClass("ui-selected");return s.$element.removeClass(a?"ui-unselecting":"ui-selected").addClass(a?"ui-selecting":"ui-unselecting"),s.unselecting=!a,s.selecting=a,s.selected=a,a?i._trigger("selecting",t,{selecting:s.element}):i._trigger("unselecting",t,{unselecting:s.element}),!1}})}},_mouseDrag:function(t){var i=this;if(this.dragged=!0,!this.options.disabled){var s=this.options,a=this.opos[0],n=this.opos[1],r=t.pageX,o=t.pageY;if(a>r){var h=r;r=a,a=h}if(n>o){var h=o;o=n,n=h}return this.helper.css({left:a,top:n,width:r-a,height:o-n}),this.selectees.each(function(){var h=e.data(this,"selectable-item");if(h&&h.element!=i.element[0]){var l=!1;"touch"==s.tolerance?l=!(h.left>r||a>h.right||h.top>o||n>h.bottom):"fit"==s.tolerance&&(l=h.left>a&&r>h.right&&h.top>n&&o>h.bottom),l?(h.selected&&(h.$element.removeClass("ui-selected"),h.selected=!1),h.unselecting&&(h.$element.removeClass("ui-unselecting"),h.unselecting=!1),h.selecting||(h.$element.addClass("ui-selecting"),h.selecting=!0,i._trigger("selecting",t,{selecting:h.element}))):(h.selecting&&((t.metaKey||t.ctrlKey)&&h.startselected?(h.$element.removeClass("ui-selecting"),h.selecting=!1,h.$element.addClass("ui-selected"),h.selected=!0):(h.$element.removeClass("ui-selecting"),h.selecting=!1,h.startselected&&(h.$element.addClass("ui-unselecting"),h.unselecting=!0),i._trigger("unselecting",t,{unselecting:h.element}))),h.selected&&(t.metaKey||t.ctrlKey||h.startselected||(h.$element.removeClass("ui-selected"),h.selected=!1,h.$element.addClass("ui-unselecting"),h.unselecting=!0,i._trigger("unselecting",t,{unselecting:h.element}))))}}),!1}},_mouseStop:function(t){var i=this;return this.dragged=!1,this.options,e(".ui-unselecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",t,{unselected:s.element})}),e(".ui-selecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-selecting").addClass("ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",t,{selected:s.element})}),this._trigger("stop",t),this.helper.remove(),!1}})})(jQuery);(function(e){e.widget("ui.sortable",e.ui.mouse,{version:"1.9.2",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3},_create:function(){var e=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?"x"===e.axis||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):!1,this.offset=this.element.offset(),this._mouseInit(),this.ready=!0},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled"),this._mouseDestroy();for(var e=this.items.length-1;e>=0;e--)this.items[e].item.removeData(this.widgetName+"-item");return this},_setOption:function(t,i){"disabled"===t?(this.options[t]=i,this.widget().toggleClass("ui-sortable-disabled",!!i)):e.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(t,i){var s=this;if(this.reverting)return!1;if(this.options.disabled||"static"==this.options.type)return!1;this._refreshItems(t);var a=null;if(e(t.target).parents().each(function(){return e.data(this,s.widgetName+"-item")==s?(a=e(this),!1):undefined}),e.data(t.target,s.widgetName+"-item")==s&&(a=e(t.target)),!a)return!1;if(this.options.handle&&!i){var n=!1;if(e(this.options.handle,a).find("*").andSelf().each(function(){this==t.target&&(n=!0)}),!n)return!1}return this.currentItem=a,this._removeCurrentsFromItems(),!0},_mouseStart:function(t,i,s){var a=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,a.cursorAt&&this._adjustOffsetFromHelper(a.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!=this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),a.containment&&this._setContainment(),a.cursor&&(e("body").css("cursor")&&(this._storedCursor=e("body").css("cursor")),e("body").css("cursor",a.cursor)),a.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",a.opacity)),a.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",a.zIndex)),this.scrollParent[0]!=document&&"HTML"!=this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(var n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",t,this._uiHash(this));return e.ui.ddmanager&&(e.ui.ddmanager.current=this),e.ui.ddmanager&&!a.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){if(this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll){var i=this.options,s=!1;this.scrollParent[0]!=document&&"HTML"!=this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<i.scrollSensitivity?this.scrollParent[0].scrollTop=s=this.scrollParent[0].scrollTop+i.scrollSpeed:t.pageY-this.overflowOffset.top<i.scrollSensitivity&&(this.scrollParent[0].scrollTop=s=this.scrollParent[0].scrollTop-i.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<i.scrollSensitivity?this.scrollParent[0].scrollLeft=s=this.scrollParent[0].scrollLeft+i.scrollSpeed:t.pageX-this.overflowOffset.left<i.scrollSensitivity&&(this.scrollParent[0].scrollLeft=s=this.scrollParent[0].scrollLeft-i.scrollSpeed)):(t.pageY-e(document).scrollTop()<i.scrollSensitivity?s=e(document).scrollTop(e(document).scrollTop()-i.scrollSpeed):e(window).height()-(t.pageY-e(document).scrollTop())<i.scrollSensitivity&&(s=e(document).scrollTop(e(document).scrollTop()+i.scrollSpeed)),t.pageX-e(document).scrollLeft()<i.scrollSensitivity?s=e(document).scrollLeft(e(document).scrollLeft()-i.scrollSpeed):e(window).width()-(t.pageX-e(document).scrollLeft())<i.scrollSensitivity&&(s=e(document).scrollLeft(e(document).scrollLeft()+i.scrollSpeed))),s!==!1&&e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t)}this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"==this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"==this.options.axis||(this.helper[0].style.top=this.position.top+"px");for(var a=this.items.length-1;a>=0;a--){var n=this.items[a],r=n.item[0],o=this._intersectsWithPointer(n);if(o&&n.instance===this.currentContainer&&r!=this.currentItem[0]&&this.placeholder[1==o?"next":"prev"]()[0]!=r&&!e.contains(this.placeholder[0],r)&&("semi-dynamic"==this.options.type?!e.contains(this.element[0],r):!0)){if(this.direction=1==o?"down":"up","pointer"!=this.options.tolerance&&!this._intersectsWithSides(n))break;this._rearrange(t,n),this._trigger("change",t,this._uiHash());break}}return this._contactContainers(t),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,i){if(t){if(e.ui.ddmanager&&!this.options.dropBehaviour&&e.ui.ddmanager.drop(this,t),this.options.revert){var s=this,a=this.placeholder.offset();this.reverting=!0,e(this.helper).animate({left:a.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:a.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){s._clear(t)})}else this._clear(t,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp({target:null}),"original"==this.options.helper?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var t=this.containers.length-1;t>=0;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!=this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),e.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?e(this.domPosition.prev).after(this.currentItem):e(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},e(i).each(function(){var i=(e(t.item||this).attr(t.attribute||"id")||"").match(t.expression||/(.+)[-=_](.+)/);i&&s.push((t.key||i[1]+"[]")+"="+(t.key&&t.expression?i[1]:i[2]))}),!s.length&&t.key&&s.push(t.key+"="),s.join("&")},toArray:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},i.each(function(){s.push(e(t.item||this).attr(t.attribute||"id")||"")}),s},_intersectsWith:function(e){var t=this.positionAbs.left,i=t+this.helperProportions.width,s=this.positionAbs.top,a=s+this.helperProportions.height,n=e.left,r=n+e.width,o=e.top,h=o+e.height,l=this.offset.click.top,u=this.offset.click.left,c=s+l>o&&h>s+l&&t+u>n&&r>t+u;return"pointer"==this.options.tolerance||this.options.forcePointerForContainers||"pointer"!=this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>e[this.floating?"width":"height"]?c:t+this.helperProportions.width/2>n&&r>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>o&&h>a-this.helperProportions.height/2},_intersectsWithPointer:function(t){var i="x"===this.options.axis||e.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,t.top,t.height),s="y"===this.options.axis||e.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,t.left,t.width),a=i&&s,n=this._getDragVerticalDirection(),r=this._getDragHorizontalDirection();return a?this.floating?r&&"right"==r||"down"==n?2:1:n&&("down"==n?2:1):!1},_intersectsWithSides:function(t){var i=e.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),s=e.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),a=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return this.floating&&n?"right"==n&&s||"left"==n&&!s:a&&("down"==a&&i||"up"==a&&!i)},_getDragVerticalDirection:function(){var e=this.positionAbs.top-this.lastPositionAbs.top;return 0!=e&&(e>0?"down":"up")},_getDragHorizontalDirection:function(){var e=this.positionAbs.left-this.lastPositionAbs.left;return 0!=e&&(e>0?"right":"left")},refresh:function(e){return this._refreshItems(e),this.refreshPositions(),this},_connectWith:function(){var e=this.options;return e.connectWith.constructor==String?[e.connectWith]:e.connectWith},_getItemsAsjQuery:function(t){var i=[],s=[],a=this._connectWith();if(a&&t)for(var n=a.length-1;n>=0;n--)for(var r=e(a[n]),o=r.length-1;o>=0;o--){var h=e.data(r[o],this.widgetName);h&&h!=this&&!h.options.disabled&&s.push([e.isFunction(h.options.items)?h.options.items.call(h.element):e(h.options.items,h.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),h])}s.push([e.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):e(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(var n=s.length-1;n>=0;n--)s[n][0].each(function(){i.push(this)});return e(i)},_removeCurrentsFromItems:function(){var t=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=e.grep(this.items,function(e){for(var i=0;t.length>i;i++)if(t[i]==e.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var i=this.items,s=[[e.isFunction(this.options.items)?this.options.items.call(this.element[0],t,{item:this.currentItem}):e(this.options.items,this.element),this]],a=this._connectWith();if(a&&this.ready)for(var n=a.length-1;n>=0;n--)for(var r=e(a[n]),o=r.length-1;o>=0;o--){var h=e.data(r[o],this.widgetName);h&&h!=this&&!h.options.disabled&&(s.push([e.isFunction(h.options.items)?h.options.items.call(h.element[0],t,{item:this.currentItem}):e(h.options.items,h.element),h]),this.containers.push(h))}for(var n=s.length-1;n>=0;n--)for(var l=s[n][1],u=s[n][0],o=0,c=u.length;c>o;o++){var d=e(u[o]);d.data(this.widgetName+"-item",l),i.push({item:d,instance:l,width:0,height:0,left:0,top:0})}},refreshPositions:function(t){this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());for(var i=this.items.length-1;i>=0;i--){var s=this.items[i];if(s.instance==this.currentContainer||!this.currentContainer||s.item[0]==this.currentItem[0]){var a=this.options.toleranceElement?e(this.options.toleranceElement,s.item):s.item;t||(s.width=a.outerWidth(),s.height=a.outerHeight());var n=a.offset();s.left=n.left,s.top=n.top}}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(var i=this.containers.length-1;i>=0;i--){var n=this.containers[i].element.offset();this.containers[i].containerCache.left=n.left,this.containers[i].containerCache.top=n.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight()}return this},_createPlaceholder:function(t){t=t||this;var i=t.options;if(!i.placeholder||i.placeholder.constructor==String){var s=i.placeholder;i.placeholder={element:function(){var i=e(document.createElement(t.currentItem[0].nodeName)).addClass(s||t.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];return s||(i.style.visibility="hidden"),i},update:function(e,a){(!s||i.forcePlaceholderSize)&&(a.height()||a.height(t.currentItem.innerHeight()-parseInt(t.currentItem.css("paddingTop")||0,10)-parseInt(t.currentItem.css("paddingBottom")||0,10)),a.width()||a.width(t.currentItem.innerWidth()-parseInt(t.currentItem.css("paddingLeft")||0,10)-parseInt(t.currentItem.css("paddingRight")||0,10)))}}}t.placeholder=e(i.placeholder.element.call(t.element,t.currentItem)),t.currentItem.after(t.placeholder),i.placeholder.update(t,t.placeholder)},_contactContainers:function(t){for(var i=null,s=null,a=this.containers.length-1;a>=0;a--)if(!e.contains(this.currentItem[0],this.containers[a].element[0]))if(this._intersectsWith(this.containers[a].containerCache)){if(i&&e.contains(this.containers[a].element[0],i.element[0]))continue;i=this.containers[a],s=a}else this.containers[a].containerCache.over&&(this.containers[a]._trigger("out",t,this._uiHash(this)),this.containers[a].containerCache.over=0);if(i)if(1===this.containers.length)this.containers[s]._trigger("over",t,this._uiHash(this)),this.containers[s].containerCache.over=1;else{for(var n=1e4,r=null,o=this.containers[s].floating?"left":"top",h=this.containers[s].floating?"width":"height",l=this.positionAbs[o]+this.offset.click[o],u=this.items.length-1;u>=0;u--)if(e.contains(this.containers[s].element[0],this.items[u].item[0])&&this.items[u].item[0]!=this.currentItem[0]){var c=this.items[u].item.offset()[o],d=!1;Math.abs(c-l)>Math.abs(c+this.items[u][h]-l)&&(d=!0,c+=this.items[u][h]),n>Math.abs(c-l)&&(n=Math.abs(c-l),r=this.items[u],this.direction=d?"up":"down")}if(!r&&!this.options.dropOnEmpty)return;this.currentContainer=this.containers[s],r?this._rearrange(t,r,null,!0):this._rearrange(t,null,this.containers[s].element,!0),this._trigger("change",t,this._uiHash()),this.containers[s]._trigger("change",t,this._uiHash(this)),this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[s]._trigger("over",t,this._uiHash(this)),this.containers[s].containerCache.over=1}},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper)?e(i.helper.apply(this.element[0],[t,this.currentItem])):"clone"==i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||e("parent"!=i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]==this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(""==s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(""==s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();return"absolute"==this.cssPosition&&this.scrollParent[0]!=document&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&"html"==this.offsetParent[0].tagName.toLowerCase()&&e.ui.ie)&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"==this.cssPosition){var e=this.currentItem.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t=this.options;if("parent"==t.containment&&(t.containment=this.helper[0].parentNode),("document"==t.containment||"window"==t.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,e("document"==t.containment?document:window).width()-this.helperProportions.width-this.margins.left,(e("document"==t.containment?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),!/^(document|window|parent)$/.test(t.containment)){var i=e(t.containment)[0],s=e(t.containment).offset(),a="hidden"!=e(i).css("overflow");this.containment=[s.left+(parseInt(e(i).css("borderLeftWidth"),10)||0)+(parseInt(e(i).css("paddingLeft"),10)||0)-this.margins.left,s.top+(parseInt(e(i).css("borderTopWidth"),10)||0)+(parseInt(e(i).css("paddingTop"),10)||0)-this.margins.top,s.left+(a?Math.max(i.scrollWidth,i.offsetWidth):i.offsetWidth)-(parseInt(e(i).css("borderLeftWidth"),10)||0)-(parseInt(e(i).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,s.top+(a?Math.max(i.scrollHeight,i.offsetHeight):i.offsetHeight)-(parseInt(e(i).css("borderTopWidth"),10)||0)-(parseInt(e(i).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}},_convertPositionTo:function(t,i){i||(i=this.position);var s="absolute"==t?1:-1,a=(this.options,"absolute"!=this.cssPosition||this.scrollParent[0]!=document&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent),n=/(html|body)/i.test(a[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"==this.cssPosition?-this.scrollParent.scrollTop():n?0:a.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"==this.cssPosition?-this.scrollParent.scrollLeft():n?0:a.scrollLeft())*s}},_generatePosition:function(t){var i=this.options,s="absolute"!=this.cssPosition||this.scrollParent[0]!=document&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,a=/(html|body)/i.test(s[0].tagName);"relative"!=this.cssPosition||this.scrollParent[0]!=document&&this.scrollParent[0]!=this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset());var n=t.pageX,r=t.pageY;if(this.originalPosition&&(this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(n=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(r=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(n=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(r=this.containment[3]+this.offset.click.top)),i.grid)){var o=this.originalPageY+Math.round((r-this.originalPageY)/i.grid[1])*i.grid[1];r=this.containment?o-this.offset.click.top<this.containment[1]||o-this.offset.click.top>this.containment[3]?o-this.offset.click.top<this.containment[1]?o+i.grid[1]:o-i.grid[1]:o:o;var h=this.originalPageX+Math.round((n-this.originalPageX)/i.grid[0])*i.grid[0];n=this.containment?h-this.offset.click.left<this.containment[0]||h-this.offset.click.left>this.containment[2]?h-this.offset.click.left<this.containment[0]?h+i.grid[0]:h-i.grid[0]:h:h}return{top:r-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"==this.cssPosition?-this.scrollParent.scrollTop():a?0:s.scrollTop()),left:n-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"==this.cssPosition?-this.scrollParent.scrollLeft():a?0:s.scrollLeft())}},_rearrange:function(e,t,i,s){i?i[0].appendChild(this.placeholder[0]):t.item[0].parentNode.insertBefore(this.placeholder[0],"down"==this.direction?t.item[0]:t.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var a=this.counter;this._delay(function(){a==this.counter&&this.refreshPositions(!s)})},_clear:function(t,i){this.reverting=!1;var s=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]==this.currentItem[0]){for(var a in this._storedCSS)("auto"==this._storedCSS[a]||"static"==this._storedCSS[a])&&(this._storedCSS[a]="");this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();this.fromOutside&&!i&&s.push(function(e){this._trigger("receive",e,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev==this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent==this.currentItem.parent()[0]||i||s.push(function(e){this._trigger("update",e,this._uiHash())}),this!==this.currentContainer&&(i||(s.push(function(e){this._trigger("remove",e,this._uiHash())}),s.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),s.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer))));for(var a=this.containers.length-1;a>=0;a--)i||s.push(function(e){return function(t){e._trigger("deactivate",t,this._uiHash(this))}}.call(this,this.containers[a])),this.containers[a].containerCache.over&&(s.push(function(e){return function(t){e._trigger("out",t,this._uiHash(this))}}.call(this,this.containers[a])),this.containers[a].containerCache.over=0);if(this._storedCursor&&e("body").css("cursor",this._storedCursor),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"==this._storedZIndex?"":this._storedZIndex),this.dragging=!1,this.cancelHelperRemoval){if(!i){this._trigger("beforeStop",t,this._uiHash());for(var a=0;s.length>a;a++)s[a].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!1}if(i||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.helper[0]!=this.currentItem[0]&&this.helper.remove(),this.helper=null,!i){for(var a=0;s.length>a;a++)s[a].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!0},_trigger:function(){e.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(t){var i=t||this;return{helper:i.helper,placeholder:i.placeholder||e([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:t?t.element:null}}})})(jQuery);(function(e){var t=0,i={},a={};i.height=i.paddingTop=i.paddingBottom=i.borderTopWidth=i.borderBottomWidth="hide",a.height=a.paddingTop=a.paddingBottom=a.borderTopWidth=a.borderBottomWidth="show",e.widget("ui.accordion",{version:"1.9.2",options:{active:0,animate:{},collapsible:!1,event:"click",header:"> li > :first-child,> :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},_create:function(){var i=this.accordionId="ui-accordion-"+(this.element.attr("id")||++t),a=this.options;this.prevShow=this.prevHide=e(),this.element.addClass("ui-accordion ui-widget ui-helper-reset"),this.headers=this.element.find(a.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all"),this._hoverable(this.headers),this._focusable(this.headers),this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").hide(),a.collapsible||a.active!==!1&&null!=a.active||(a.active=0),0>a.active&&(a.active+=this.headers.length),this.active=this._findActive(a.active).addClass("ui-accordion-header-active ui-state-active").toggleClass("ui-corner-all ui-corner-top"),this.active.next().addClass("ui-accordion-content-active").show(),this._createIcons(),this.refresh(),this.element.attr("role","tablist"),this.headers.attr("role","tab").each(function(t){var a=e(this),s=a.attr("id"),n=a.next(),r=n.attr("id");s||(s=i+"-header-"+t,a.attr("id",s)),r||(r=i+"-panel-"+t,n.attr("id",r)),a.attr("aria-controls",r),n.attr("aria-labelledby",s)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false",tabIndex:-1}).next().attr({"aria-expanded":"false","aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true",tabIndex:0}).next().attr({"aria-expanded":"true","aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._on(this.headers,{keydown:"_keydown"}),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._setupEvents(a.event)},_getCreateEventData:function(){return{header:this.active,content:this.active.length?this.active.next():e()}},_createIcons:function(){var t=this.options.icons;t&&(e("<span>").addClass("ui-accordion-header-icon ui-icon "+t.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(t.header).addClass(t.activeHeader),this.headers.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()},_destroy:function(){var e;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),this._destroyIcons(),e=this.headers.next().css("display","").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),"content"!==this.options.heightStyle&&e.css("height","")},_setOption:function(e,t){return"active"===e?(this._activate(t),undefined):("event"===e&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(t)),this._super(e,t),"collapsible"!==e||t||this.options.active!==!1||this._activate(0),"icons"===e&&(this._destroyIcons(),t&&this._createIcons()),"disabled"===e&&this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!t),undefined)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var i=e.ui.keyCode,a=this.headers.length,s=this.headers.index(t.target),n=!1;switch(t.keyCode){case i.RIGHT:case i.DOWN:n=this.headers[(s+1)%a];break;case i.LEFT:case i.UP:n=this.headers[(s-1+a)%a];break;case i.SPACE:case i.ENTER:this._eventHandler(t);break;case i.HOME:n=this.headers[0];break;case i.END:n=this.headers[a-1]}n&&(e(t.target).attr("tabIndex",-1),e(n).attr("tabIndex",0),n.focus(),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===e.ui.keyCode.UP&&t.ctrlKey&&e(t.currentTarget).prev().focus()},refresh:function(){var t,i,a=this.options.heightStyle,s=this.element.parent();"fill"===a?(e.support.minHeight||(i=s.css("overflow"),s.css("overflow","hidden")),t=s.height(),this.element.siblings(":visible").each(function(){var i=e(this),a=i.css("position");"absolute"!==a&&"fixed"!==a&&(t-=i.outerHeight(!0))}),i&&s.css("overflow",i),this.headers.each(function(){t-=e(this).outerHeight(!0)}),this.headers.next().each(function(){e(this).height(Math.max(0,t-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===a&&(t=0,this.headers.next().each(function(){t=Math.max(t,e(this).css("height","").height())}).height(t))},_activate:function(t){var i=this._findActive(t)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:e.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):e()},_setupEvents:function(t){var i={};t&&(e.each(t.split(" "),function(e,t){i[t]="_eventHandler"}),this._on(this.headers,i))},_eventHandler:function(t){var i=this.options,a=this.active,s=e(t.currentTarget),n=s[0]===a[0],r=n&&i.collapsible,o=r?e():s.next(),h=a.next(),l={oldHeader:a,oldPanel:h,newHeader:r?e():s,newPanel:o};t.preventDefault(),n&&!i.collapsible||this._trigger("beforeActivate",t,l)===!1||(i.active=r?!1:this.headers.index(s),this.active=n?e():s,this._toggle(l),a.removeClass("ui-accordion-header-active ui-state-active"),i.icons&&a.children(".ui-accordion-header-icon").removeClass(i.icons.activeHeader).addClass(i.icons.header),n||(s.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"),i.icons&&s.children(".ui-accordion-header-icon").removeClass(i.icons.header).addClass(i.icons.activeHeader),s.next().addClass("ui-accordion-content-active")))},_toggle:function(t){var i=t.newPanel,a=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=a,this.options.animate?this._animate(i,a,t):(a.hide(),i.show(),this._toggleComplete(t)),a.attr({"aria-expanded":"false","aria-hidden":"true"}),a.prev().attr("aria-selected","false"),i.length&&a.length?a.prev().attr("tabIndex",-1):i.length&&this.headers.filter(function(){return 0===e(this).attr("tabIndex")}).attr("tabIndex",-1),i.attr({"aria-expanded":"true","aria-hidden":"false"}).prev().attr({"aria-selected":"true",tabIndex:0})},_animate:function(e,t,s){var n,r,o,h=this,l=0,u=e.length&&(!t.length||e.index()<t.index()),d=this.options.animate||{},c=u&&d.down||d,p=function(){h._toggleComplete(s)};return"number"==typeof c&&(o=c),"string"==typeof c&&(r=c),r=r||c.easing||d.easing,o=o||c.duration||d.duration,t.length?e.length?(n=e.show().outerHeight(),t.animate(i,{duration:o,easing:r,step:function(e,t){t.now=Math.round(e)}}),e.hide().animate(a,{duration:o,easing:r,complete:p,step:function(e,i){i.now=Math.round(e),"height"!==i.prop?l+=i.now:"content"!==h.options.heightStyle&&(i.now=Math.round(n-t.outerHeight()-l),l=0)}}),undefined):t.animate(i,o,r,p):e.animate(a,o,r,p)},_toggleComplete:function(e){var t=e.oldPanel;t.removeClass("ui-accordion-content-active").prev().removeClass("ui-corner-top").addClass("ui-corner-all"),t.length&&(t.parent()[0].className=t.parent()[0].className),this._trigger("activate",null,e)}}),e.uiBackCompat!==!1&&(function(e,t){e.extend(t.options,{navigation:!1,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}});var i=t._create;t._create=function(){if(this.options.navigation){var t=this,a=this.element.find(this.options.header),s=a.next(),n=a.add(s).find("a").filter(this.options.navigationFilter)[0];n&&a.add(s).each(function(i){return e.contains(this,n)?(t.options.active=Math.floor(i/2),!1):undefined})}i.call(this)}}(jQuery,jQuery.ui.accordion.prototype),function(e,t){e.extend(t.options,{heightStyle:null,autoHeight:!0,clearStyle:!1,fillSpace:!1});var i=t._create,a=t._setOption;e.extend(t,{_create:function(){this.options.heightStyle=this.options.heightStyle||this._mergeHeightStyle(),i.call(this)},_setOption:function(e){("autoHeight"===e||"clearStyle"===e||"fillSpace"===e)&&(this.options.heightStyle=this._mergeHeightStyle()),a.apply(this,arguments)},_mergeHeightStyle:function(){var e=this.options;return e.fillSpace?"fill":e.clearStyle?"content":e.autoHeight?"auto":undefined}})}(jQuery,jQuery.ui.accordion.prototype),function(e,t){e.extend(t.options.icons,{activeHeader:null,headerSelected:"ui-icon-triangle-1-s"});var i=t._createIcons;t._createIcons=function(){this.options.icons&&(this.options.icons.activeHeader=this.options.icons.activeHeader||this.options.icons.headerSelected),i.call(this)}}(jQuery,jQuery.ui.accordion.prototype),function(e,t){t.activate=t._activate;var i=t._findActive;t._findActive=function(e){return-1===e&&(e=!1),e&&"number"!=typeof e&&(e=this.headers.index(this.headers.filter(e)),-1===e&&(e=!1)),i.call(this,e)}}(jQuery,jQuery.ui.accordion.prototype),jQuery.ui.accordion.prototype.resize=jQuery.ui.accordion.prototype.refresh,function(e,t){e.extend(t.options,{change:null,changestart:null});var i=t._trigger;t._trigger=function(e,t,a){var s=i.apply(this,arguments);return s?("beforeActivate"===e?s=i.call(this,"changestart",t,{oldHeader:a.oldHeader,oldContent:a.oldPanel,newHeader:a.newHeader,newContent:a.newPanel}):"activate"===e&&(s=i.call(this,"change",t,{oldHeader:a.oldHeader,oldContent:a.oldPanel,newHeader:a.newHeader,newContent:a.newPanel})),s):!1}}(jQuery,jQuery.ui.accordion.prototype),function(e,t){e.extend(t.options,{animate:null,animated:"slide"});var i=t._create;t._create=function(){var e=this.options;null===e.animate&&(e.animate=e.animated?"slide"===e.animated?300:"bounceslide"===e.animated?{duration:200,down:{easing:"easeOutBounce",duration:1e3}}:e.animated:!1),i.call(this)}}(jQuery,jQuery.ui.accordion.prototype))})(jQuery);(function(e){var t=0;e.widget("ui.autocomplete",{version:"1.9.2",defaultElement:"<input>",options:{appendTo:"body",autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},pending:0,_create:function(){var t,i,a;this.isMultiLine=this._isMultiLine(),this.valueMethod=this.element[this.element.is("input,textarea")?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(s){if(this.element.prop("readOnly"))return t=!0,a=!0,i=!0,undefined;t=!1,a=!1,i=!1;var n=e.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:t=!0,this._move("previousPage",s);break;case n.PAGE_DOWN:t=!0,this._move("nextPage",s);break;case n.UP:t=!0,this._keyEvent("previous",s);break;case n.DOWN:t=!0,this._keyEvent("next",s);break;case n.ENTER:case n.NUMPAD_ENTER:this.menu.active&&(t=!0,s.preventDefault(),this.menu.select(s));break;case n.TAB:this.menu.active&&this.menu.select(s);break;case n.ESCAPE:this.menu.element.is(":visible")&&(this._value(this.term),this.close(s),s.preventDefault());break;default:i=!0,this._searchTimeout(s)}},keypress:function(a){if(t)return t=!1,a.preventDefault(),undefined;if(!i){var s=e.ui.keyCode;switch(a.keyCode){case s.PAGE_UP:this._move("previousPage",a);break;case s.PAGE_DOWN:this._move("nextPage",a);break;case s.UP:this._keyEvent("previous",a);break;case s.DOWN:this._keyEvent("next",a)}}},input:function(e){return a?(a=!1,e.preventDefault(),undefined):(this._searchTimeout(e),undefined)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,undefined):(clearTimeout(this.searching),this.close(e),this._change(e),undefined)}}),this._initSource(),this.menu=e("<ul>").addClass("ui-autocomplete").appendTo(this.document.find(this.options.appendTo||"body")[0]).menu({input:e(),role:null}).zIndex(this.element.zIndex()+1).hide().data("menu"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var i=this.menu.element[0];e(t.target).closest(".ui-menu-item").length||this._delay(function(){var t=this;this.document.one("mousedown",function(a){a.target===t.element[0]||a.target===i||e.contains(i,a.target)||t.close()})})},menufocus:function(t,i){if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),this.document.one("mousemove",function(){e(t.target).trigger(t.originalEvent)}),undefined;var a=i.item.data("ui-autocomplete-item")||i.item.data("item.autocomplete");!1!==this._trigger("focus",t,{item:a})?t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(a.value):this.liveRegion.text(a.value)},menuselect:function(e,t){var i=t.item.data("ui-autocomplete-item")||t.item.data("item.autocomplete"),a=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=a,this._delay(function(){this.previous=a,this.selectedItem=i})),!1!==this._trigger("select",e,{item:i})&&this._value(i.value),this.term=this._value(),this.close(e),this.selectedItem=i}}),this.liveRegion=e("<span>",{role:"status","aria-live":"polite"}).addClass("ui-helper-hidden-accessible").insertAfter(this.element),e.fn.bgiframe&&this.menu.element.bgiframe(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),"source"===e&&this._initSource(),"appendTo"===e&&this.menu.element.appendTo(this.document.find(t||"body")[0]),"disabled"===e&&t&&this.xhr&&this.xhr.abort()},_isMultiLine:function(){return this.element.is("textarea")?!0:this.element.is("input")?!1:this.element.prop("isContentEditable")},_initSource:function(){var t,i,a=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(i,a){a(e.ui.autocomplete.filter(t,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(t,s){a.xhr&&a.xhr.abort(),a.xhr=e.ajax({url:i,data:t,dataType:"json",success:function(e){s(e)},error:function(){s([])}})}):this.source=this.options.source},_searchTimeout:function(e){clearTimeout(this.searching),this.searching=this._delay(function(){this.term!==this._value()&&(this.selectedItem=null,this.search(null,e))},this.options.delay)},search:function(e,t){return e=null!=e?e:this._value(),this.term=this._value(),e.length<this.options.minLength?this.close(t):this._trigger("search",t)!==!1?this._search(e):undefined},_search:function(e){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:e},this._response())},_response:function(){var e=this,i=++t;return function(a){i===t&&e.__response(a),e.pending--,e.pending||e.element.removeClass("ui-autocomplete-loading")}},__response:function(e){e&&(e=this._normalize(e)),this._trigger("response",null,{content:e}),!this.options.disabled&&e&&e.length&&!this.cancelSearch?(this._suggest(e),this._trigger("open")):this._close()},close:function(e){this.cancelSearch=!0,this._close(e)},_close:function(e){this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",e))},_change:function(e){this.previous!==this._value()&&this._trigger("change",e,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:e.map(t,function(t){return"string"==typeof t?{label:t,value:t}:e.extend({label:t.label||t.value,value:t.value||t.label},t)})},_suggest:function(t){var i=this.menu.element.empty().zIndex(this.element.zIndex()+1);this._renderMenu(i,t),this.menu.refresh(),i.show(),this._resizeMenu(),i.position(e.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var e=this.menu.element;e.outerWidth(Math.max(e.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(t,i){var a=this;e.each(i,function(e,i){a._renderItemData(t,i)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-autocomplete-item",t)},_renderItem:function(t,i){return e("<li>").append(e("<a>").text(i.label)).appendTo(t)},_move:function(e,t){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.isLastItem()&&/^next/.test(e)?(this._value(this.term),this.menu.blur(),undefined):(this.menu[e](t),undefined):(this.search(null,t),undefined)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(e,t),t.preventDefault())}}),e.extend(e.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,i){var a=RegExp(e.ui.autocomplete.escapeRegex(i),"i");return e.grep(t,function(e){return a.test(e.label||e.value||e)})}}),e.widget("ui.autocomplete",e.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(e){return e+(e>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var t;this._superApply(arguments),this.options.disabled||this.cancelSearch||(t=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.text(t))}})})(jQuery);(function(e){var t,i,a,s,n="ui-button ui-widget ui-state-default ui-corner-all",r="ui-state-hover ui-state-active ",o="ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",h=function(){var t=e(this).find(":ui-button");setTimeout(function(){t.button("refresh")},1)},l=function(t){var i=t.name,a=t.form,s=e([]);return i&&(s=a?e(a).find("[name='"+i+"']"):e("[name='"+i+"']",t.ownerDocument).filter(function(){return!this.form})),s};e.widget("ui.button",{version:"1.9.2",defaultElement:"<button>",options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset"+this.eventNamespace).bind("reset"+this.eventNamespace,h),"boolean"!=typeof this.options.disabled?this.options.disabled=!!this.element.prop("disabled"):this.element.prop("disabled",this.options.disabled),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr("title");var r=this,o=this.options,u="checkbox"===this.type||"radio"===this.type,d=u?"":"ui-state-active",c="ui-state-focus";null===o.label&&(o.label="input"===this.type?this.buttonElement.val():this.buttonElement.html()),this._hoverable(this.buttonElement),this.buttonElement.addClass(n).attr("role","button").bind("mouseenter"+this.eventNamespace,function(){o.disabled||this===t&&e(this).addClass("ui-state-active")}).bind("mouseleave"+this.eventNamespace,function(){o.disabled||e(this).removeClass(d)}).bind("click"+this.eventNamespace,function(e){o.disabled&&(e.preventDefault(),e.stopImmediatePropagation())}),this.element.bind("focus"+this.eventNamespace,function(){r.buttonElement.addClass(c)}).bind("blur"+this.eventNamespace,function(){r.buttonElement.removeClass(c)}),u&&(this.element.bind("change"+this.eventNamespace,function(){s||r.refresh()}),this.buttonElement.bind("mousedown"+this.eventNamespace,function(e){o.disabled||(s=!1,i=e.pageX,a=e.pageY)}).bind("mouseup"+this.eventNamespace,function(e){o.disabled||(i!==e.pageX||a!==e.pageY)&&(s=!0)})),"checkbox"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){return o.disabled||s?!1:(e(this).toggleClass("ui-state-active"),r.buttonElement.attr("aria-pressed",r.element[0].checked),undefined)}):"radio"===this.type?this.buttonElement.bind("click"+this.eventNamespace,function(){if(o.disabled||s)return!1;e(this).addClass("ui-state-active"),r.buttonElement.attr("aria-pressed","true");var t=r.element[0];l(t).not(t).map(function(){return e(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown"+this.eventNamespace,function(){return o.disabled?!1:(e(this).addClass("ui-state-active"),t=this,r.document.one("mouseup",function(){t=null}),undefined)}).bind("mouseup"+this.eventNamespace,function(){return o.disabled?!1:(e(this).removeClass("ui-state-active"),undefined)}).bind("keydown"+this.eventNamespace,function(t){return o.disabled?!1:((t.keyCode===e.ui.keyCode.SPACE||t.keyCode===e.ui.keyCode.ENTER)&&e(this).addClass("ui-state-active"),undefined)}).bind("keyup"+this.eventNamespace,function(){e(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(t){t.keyCode===e.ui.keyCode.SPACE&&e(this).click()})),this._setOption("disabled",o.disabled),this._resetButton()},_determineButtonType:function(){var e,t,i;this.type=this.element.is("[type=checkbox]")?"checkbox":this.element.is("[type=radio]")?"radio":this.element.is("input")?"input":"button","checkbox"===this.type||"radio"===this.type?(e=this.element.parents().last(),t="label[for='"+this.element.attr("id")+"']",this.buttonElement=e.find(t),this.buttonElement.length||(e=e.length?e.siblings():this.element.siblings(),this.buttonElement=e.filter(t),this.buttonElement.length||(this.buttonElement=e.find(t))),this.element.addClass("ui-helper-hidden-accessible"),i=this.element.is(":checked"),i&&this.buttonElement.addClass("ui-state-active"),this.buttonElement.prop("aria-pressed",i)):this.buttonElement=this.element},widget:function(){return this.buttonElement},_destroy:function(){this.element.removeClass("ui-helper-hidden-accessible"),this.buttonElement.removeClass(n+" "+r+" "+o).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()),this.hasTitle||this.buttonElement.removeAttr("title")},_setOption:function(e,t){return this._super(e,t),"disabled"===e?(t?this.element.prop("disabled",!0):this.element.prop("disabled",!1),undefined):(this._resetButton(),undefined)},refresh:function(){var t=this.element.is("input, button")?this.element.is(":disabled"):this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOption("disabled",t),"radio"===this.type?l(this.element[0]).each(function(){e(this).is(":checked")?e(this).button("widget").addClass("ui-state-active").attr("aria-pressed","true"):e(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")}):"checkbox"===this.type&&(this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false"))},_resetButton:function(){if("input"===this.type)return this.options.label&&this.element.val(this.options.label),undefined;var t=this.buttonElement.removeClass(o),i=e("<span></span>",this.document[0]).addClass("ui-button-text").html(this.options.label).appendTo(t.empty()).text(),a=this.options.icons,s=a.primary&&a.secondary,n=[];a.primary||a.secondary?(this.options.text&&n.push("ui-button-text-icon"+(s?"s":a.primary?"-primary":"-secondary")),a.primary&&t.prepend("<span class='ui-button-icon-primary ui-icon "+a.primary+"'></span>"),a.secondary&&t.append("<span class='ui-button-icon-secondary ui-icon "+a.secondary+"'></span>"),this.options.text||(n.push(s?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||t.attr("title",e.trim(i)))):n.push("ui-button-text-only"),t.addClass(n.join(" "))}}),e.widget("ui.buttonset",{version:"1.9.2",options:{items:"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(e,t){"disabled"===e&&this.buttons.button("option",e,t),this._super(e,t)},refresh:function(){var t="rtl"===this.element.css("direction");this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(t?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(t?"ui-corner-left":"ui-corner-right").end().end()},_destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy")}})})(jQuery);(function($,undefined){function Datepicker(){this.debug=!1,this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},$.extend(this._defaults,this.regional[""]),this.dpDiv=bindHover($('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}function bindHover(e){var t="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return e.delegate(t,"mouseout",function(){$(this).removeClass("ui-state-hover"),-1!=this.className.indexOf("ui-datepicker-prev")&&$(this).removeClass("ui-datepicker-prev-hover"),-1!=this.className.indexOf("ui-datepicker-next")&&$(this).removeClass("ui-datepicker-next-hover")}).delegate(t,"mouseover",function(){$.datepicker._isDisabledDatepicker(instActive.inline?e.parent()[0]:instActive.input[0])||($(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),$(this).addClass("ui-state-hover"),-1!=this.className.indexOf("ui-datepicker-prev")&&$(this).addClass("ui-datepicker-prev-hover"),-1!=this.className.indexOf("ui-datepicker-next")&&$(this).addClass("ui-datepicker-next-hover"))})}function extendRemove(e,t){$.extend(e,t);for(var i in t)(null==t[i]||t[i]==undefined)&&(e[i]=t[i]);return e}$.extend($.ui,{datepicker:{version:"1.9.2"}});var PROP_NAME="datepicker",dpuuid=(new Date).getTime(),instActive;$.extend(Datepicker.prototype,{markerClassName:"hasDatepicker",maxRows:4,log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(e){return extendRemove(this._defaults,e||{}),this},_attachDatepicker:function(target,settings){var inlineSettings=null;for(var attrName in this._defaults){var attrValue=target.getAttribute("date:"+attrName);if(attrValue){inlineSettings=inlineSettings||{};try{inlineSettings[attrName]=eval(attrValue)}catch(err){inlineSettings[attrName]=attrValue}}}var nodeName=target.nodeName.toLowerCase(),inline="div"==nodeName||"span"==nodeName;target.id||(this.uuid+=1,target.id="dp"+this.uuid);var inst=this._newInst($(target),inline);inst.settings=$.extend({},settings||{},inlineSettings||{}),"input"==nodeName?this._connectDatepicker(target,inst):inline&&this._inlineDatepicker(target,inst)},_newInst:function(e,t){var i=e[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1");return{id:i,input:e,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:t,dpDiv:t?bindHover($('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>')):this.dpDiv}},_connectDatepicker:function(e,t){var i=$(e);t.append=$([]),t.trigger=$([]),i.hasClass(this.markerClassName)||(this._attachments(i,t),i.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(e,i,a){t.settings[i]=a}).bind("getData.datepicker",function(e,i){return this._get(t,i)}),this._autoSize(t),$.data(e,PROP_NAME,t),t.settings.disabled&&this._disableDatepicker(e))},_attachments:function(e,t){var i=this._get(t,"appendText"),a=this._get(t,"isRTL");t.append&&t.append.remove(),i&&(t.append=$('<span class="'+this._appendClass+'">'+i+"</span>"),e[a?"before":"after"](t.append)),e.unbind("focus",this._showDatepicker),t.trigger&&t.trigger.remove();var s=this._get(t,"showOn");if(("focus"==s||"both"==s)&&e.focus(this._showDatepicker),"button"==s||"both"==s){var n=this._get(t,"buttonText"),r=this._get(t,"buttonImage");t.trigger=$(this._get(t,"buttonImageOnly")?$("<img/>").addClass(this._triggerClass).attr({src:r,alt:n,title:n}):$('<button type="button"></button>').addClass(this._triggerClass).html(""==r?n:$("<img/>").attr({src:r,alt:n,title:n}))),e[a?"before":"after"](t.trigger),t.trigger.click(function(){return $.datepicker._datepickerShowing&&$.datepicker._lastInput==e[0]?$.datepicker._hideDatepicker():$.datepicker._datepickerShowing&&$.datepicker._lastInput!=e[0]?($.datepicker._hideDatepicker(),$.datepicker._showDatepicker(e[0])):$.datepicker._showDatepicker(e[0]),!1})}},_autoSize:function(e){if(this._get(e,"autoSize")&&!e.inline){var t=new Date(2009,11,20),i=this._get(e,"dateFormat");if(i.match(/[DM]/)){var a=function(e){for(var t=0,i=0,a=0;e.length>a;a++)e[a].length>t&&(t=e[a].length,i=a);return i};t.setMonth(a(this._get(e,i.match(/MM/)?"monthNames":"monthNamesShort"))),t.setDate(a(this._get(e,i.match(/DD/)?"dayNames":"dayNamesShort"))+20-t.getDay())}e.input.attr("size",this._formatDate(e,t).length)}},_inlineDatepicker:function(e,t){var i=$(e);i.hasClass(this.markerClassName)||(i.addClass(this.markerClassName).append(t.dpDiv).bind("setData.datepicker",function(e,i,a){t.settings[i]=a}).bind("getData.datepicker",function(e,i){return this._get(t,i)}),$.data(e,PROP_NAME,t),this._setDate(t,this._getDefaultDate(t),!0),this._updateDatepicker(t),this._updateAlternate(t),t.settings.disabled&&this._disableDatepicker(e),t.dpDiv.css("display","block"))},_dialogDatepicker:function(e,t,i,a,s){var n=this._dialogInst;if(!n){this.uuid+=1;var r="dp"+this.uuid;this._dialogInput=$('<input type="text" id="'+r+'" style="position: absolute; top: -100px; width: 0px;"/>'),this._dialogInput.keydown(this._doKeyDown),$("body").append(this._dialogInput),n=this._dialogInst=this._newInst(this._dialogInput,!1),n.settings={},$.data(this._dialogInput[0],PROP_NAME,n)}if(extendRemove(n.settings,a||{}),t=t&&t.constructor==Date?this._formatDate(n,t):t,this._dialogInput.val(t),this._pos=s?s.length?s:[s.pageX,s.pageY]:null,!this._pos){var o=document.documentElement.clientWidth,h=document.documentElement.clientHeight,l=document.documentElement.scrollLeft||document.body.scrollLeft,u=document.documentElement.scrollTop||document.body.scrollTop;this._pos=[o/2-100+l,h/2-150+u]}return this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),n.settings.onSelect=i,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),$.blockUI&&$.blockUI(this.dpDiv),$.data(this._dialogInput[0],PROP_NAME,n),this},_destroyDatepicker:function(e){var t=$(e),i=$.data(e,PROP_NAME);if(t.hasClass(this.markerClassName)){var a=e.nodeName.toLowerCase();$.removeData(e,PROP_NAME),"input"==a?(i.append.remove(),i.trigger.remove(),t.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):("div"==a||"span"==a)&&t.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(e){var t=$(e),i=$.data(e,PROP_NAME);if(t.hasClass(this.markerClassName)){var a=e.nodeName.toLowerCase();if("input"==a)e.disabled=!1,i.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""});else if("div"==a||"span"==a){var s=t.children("."+this._inlineClass);s.children().removeClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)}this._disabledInputs=$.map(this._disabledInputs,function(t){return t==e?null:t})}},_disableDatepicker:function(e){var t=$(e),i=$.data(e,PROP_NAME);if(t.hasClass(this.markerClassName)){var a=e.nodeName.toLowerCase();if("input"==a)e.disabled=!0,i.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"});else if("div"==a||"span"==a){var s=t.children("."+this._inlineClass);s.children().addClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)}this._disabledInputs=$.map(this._disabledInputs,function(t){return t==e?null:t}),this._disabledInputs[this._disabledInputs.length]=e}},_isDisabledDatepicker:function(e){if(!e)return!1;for(var t=0;this._disabledInputs.length>t;t++)if(this._disabledInputs[t]==e)return!0;return!1},_getInst:function(e){try{return $.data(e,PROP_NAME)}catch(t){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(e,t,i){var a=this._getInst(e);if(2==arguments.length&&"string"==typeof t)return"defaults"==t?$.extend({},$.datepicker._defaults):a?"all"==t?$.extend({},a.settings):this._get(a,t):null;var s=t||{};if("string"==typeof t&&(s={},s[t]=i),a){this._curInst==a&&this._hideDatepicker();var n=this._getDateDatepicker(e,!0),r=this._getMinMaxDate(a,"min"),o=this._getMinMaxDate(a,"max");extendRemove(a.settings,s),null!==r&&s.dateFormat!==undefined&&s.minDate===undefined&&(a.settings.minDate=this._formatDate(a,r)),null!==o&&s.dateFormat!==undefined&&s.maxDate===undefined&&(a.settings.maxDate=this._formatDate(a,o)),this._attachments($(e),a),this._autoSize(a),this._setDate(a,n),this._updateAlternate(a),this._updateDatepicker(a)}},_changeDatepicker:function(e,t,i){this._optionDatepicker(e,t,i)},_refreshDatepicker:function(e){var t=this._getInst(e);t&&this._updateDatepicker(t)},_setDateDatepicker:function(e,t){var i=this._getInst(e);i&&(this._setDate(i,t),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(e,t){var i=this._getInst(e);return i&&!i.inline&&this._setDateFromField(i,t),i?this._getDate(i):null},_doKeyDown:function(e){var t=$.datepicker._getInst(e.target),i=!0,a=t.dpDiv.is(".ui-datepicker-rtl");if(t._keyEvent=!0,$.datepicker._datepickerShowing)switch(e.keyCode){case 9:$.datepicker._hideDatepicker(),i=!1;break;case 13:var s=$("td."+$.datepicker._dayOverClass+":not(."+$.datepicker._currentClass+")",t.dpDiv);s[0]&&$.datepicker._selectDay(e.target,t.selectedMonth,t.selectedYear,s[0]);var n=$.datepicker._get(t,"onSelect");if(n){var r=$.datepicker._formatDate(t);n.apply(t.input?t.input[0]:null,[r,t])}else $.datepicker._hideDatepicker();return!1;case 27:$.datepicker._hideDatepicker();break;case 33:$.datepicker._adjustDate(e.target,e.ctrlKey?-$.datepicker._get(t,"stepBigMonths"):-$.datepicker._get(t,"stepMonths"),"M");break;case 34:$.datepicker._adjustDate(e.target,e.ctrlKey?+$.datepicker._get(t,"stepBigMonths"):+$.datepicker._get(t,"stepMonths"),"M");break;case 35:(e.ctrlKey||e.metaKey)&&$.datepicker._clearDate(e.target),i=e.ctrlKey||e.metaKey;break;case 36:(e.ctrlKey||e.metaKey)&&$.datepicker._gotoToday(e.target),i=e.ctrlKey||e.metaKey;break;case 37:(e.ctrlKey||e.metaKey)&&$.datepicker._adjustDate(e.target,a?1:-1,"D"),i=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&$.datepicker._adjustDate(e.target,e.ctrlKey?-$.datepicker._get(t,"stepBigMonths"):-$.datepicker._get(t,"stepMonths"),"M");break;case 38:(e.ctrlKey||e.metaKey)&&$.datepicker._adjustDate(e.target,-7,"D"),i=e.ctrlKey||e.metaKey;break;case 39:(e.ctrlKey||e.metaKey)&&$.datepicker._adjustDate(e.target,a?-1:1,"D"),i=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&$.datepicker._adjustDate(e.target,e.ctrlKey?+$.datepicker._get(t,"stepBigMonths"):+$.datepicker._get(t,"stepMonths"),"M");break;case 40:(e.ctrlKey||e.metaKey)&&$.datepicker._adjustDate(e.target,7,"D"),i=e.ctrlKey||e.metaKey;break;default:i=!1}else 36==e.keyCode&&e.ctrlKey?$.datepicker._showDatepicker(this):i=!1;i&&(e.preventDefault(),e.stopPropagation())},_doKeyPress:function(e){var t=$.datepicker._getInst(e.target);if($.datepicker._get(t,"constrainInput")){var i=$.datepicker._possibleChars($.datepicker._get(t,"dateFormat")),a=String.fromCharCode(e.charCode==undefined?e.keyCode:e.charCode);return e.ctrlKey||e.metaKey||" ">a||!i||i.indexOf(a)>-1}},_doKeyUp:function(e){var t=$.datepicker._getInst(e.target);if(t.input.val()!=t.lastVal)try{var i=$.datepicker.parseDate($.datepicker._get(t,"dateFormat"),t.input?t.input.val():null,$.datepicker._getFormatConfig(t));i&&($.datepicker._setDateFromField(t),$.datepicker._updateAlternate(t),$.datepicker._updateDatepicker(t))}catch(a){$.datepicker.log(a)}return!0},_showDatepicker:function(e){if(e=e.target||e,"input"!=e.nodeName.toLowerCase()&&(e=$("input",e.parentNode)[0]),!$.datepicker._isDisabledDatepicker(e)&&$.datepicker._lastInput!=e){var t=$.datepicker._getInst(e);$.datepicker._curInst&&$.datepicker._curInst!=t&&($.datepicker._curInst.dpDiv.stop(!0,!0),t&&$.datepicker._datepickerShowing&&$.datepicker._hideDatepicker($.datepicker._curInst.input[0]));var i=$.datepicker._get(t,"beforeShow"),a=i?i.apply(e,[e,t]):{};if(a!==!1){extendRemove(t.settings,a),t.lastVal=null,$.datepicker._lastInput=e,$.datepicker._setDateFromField(t),$.datepicker._inDialog&&(e.value=""),$.datepicker._pos||($.datepicker._pos=$.datepicker._findPos(e),$.datepicker._pos[1]+=e.offsetHeight);var s=!1;$(e).parents().each(function(){return s|="fixed"==$(this).css("position"),!s});var n={left:$.datepicker._pos[0],top:$.datepicker._pos[1]};if($.datepicker._pos=null,t.dpDiv.empty(),t.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),$.datepicker._updateDatepicker(t),n=$.datepicker._checkOffset(t,n,s),t.dpDiv.css({position:$.datepicker._inDialog&&$.blockUI?"static":s?"fixed":"absolute",display:"none",left:n.left+"px",top:n.top+"px"}),!t.inline){var r=$.datepicker._get(t,"showAnim"),o=$.datepicker._get(t,"duration"),h=function(){var e=t.dpDiv.find("iframe.ui-datepicker-cover");if(e.length){var i=$.datepicker._getBorders(t.dpDiv);e.css({left:-i[0],top:-i[1],width:t.dpDiv.outerWidth(),height:t.dpDiv.outerHeight()})}};t.dpDiv.zIndex($(e).zIndex()+1),$.datepicker._datepickerShowing=!0,$.effects&&($.effects.effect[r]||$.effects[r])?t.dpDiv.show(r,$.datepicker._get(t,"showOptions"),o,h):t.dpDiv[r||"show"](r?o:null,h),r&&o||h(),t.input.is(":visible")&&!t.input.is(":disabled")&&t.input.focus(),$.datepicker._curInst=t}}}},_updateDatepicker:function(e){this.maxRows=4;var t=$.datepicker._getBorders(e.dpDiv);instActive=e,e.dpDiv.empty().append(this._generateHTML(e)),this._attachHandlers(e);var i=e.dpDiv.find("iframe.ui-datepicker-cover");i.length&&i.css({left:-t[0],top:-t[1],width:e.dpDiv.outerWidth(),height:e.dpDiv.outerHeight()}),e.dpDiv.find("."+this._dayOverClass+" a").mouseover();var a=this._getNumberOfMonths(e),s=a[1],n=17;if(e.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),s>1&&e.dpDiv.addClass("ui-datepicker-multi-"+s).css("width",n*s+"em"),e.dpDiv[(1!=a[0]||1!=a[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),e.dpDiv[(this._get(e,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),e==$.datepicker._curInst&&$.datepicker._datepickerShowing&&e.input&&e.input.is(":visible")&&!e.input.is(":disabled")&&e.input[0]!=document.activeElement&&e.input.focus(),e.yearshtml){var r=e.yearshtml;setTimeout(function(){r===e.yearshtml&&e.yearshtml&&e.dpDiv.find("select.ui-datepicker-year:first").replaceWith(e.yearshtml),r=e.yearshtml=null},0)}},_getBorders:function(e){var t=function(e){return{thin:1,medium:2,thick:3}[e]||e};return[parseFloat(t(e.css("border-left-width"))),parseFloat(t(e.css("border-top-width")))]},_checkOffset:function(e,t,i){var a=e.dpDiv.outerWidth(),s=e.dpDiv.outerHeight(),n=e.input?e.input.outerWidth():0,r=e.input?e.input.outerHeight():0,o=document.documentElement.clientWidth+(i?0:$(document).scrollLeft()),h=document.documentElement.clientHeight+(i?0:$(document).scrollTop());return t.left-=this._get(e,"isRTL")?a-n:0,t.left-=i&&t.left==e.input.offset().left?$(document).scrollLeft():0,t.top-=i&&t.top==e.input.offset().top+r?$(document).scrollTop():0,t.left-=Math.min(t.left,t.left+a>o&&o>a?Math.abs(t.left+a-o):0),t.top-=Math.min(t.top,t.top+s>h&&h>s?Math.abs(s+r):0),t},_findPos:function(e){for(var t=this._getInst(e),i=this._get(t,"isRTL");e&&("hidden"==e.type||1!=e.nodeType||$.expr.filters.hidden(e));)e=e[i?"previousSibling":"nextSibling"];var a=$(e).offset();return[a.left,a.top]},_hideDatepicker:function(e){var t=this._curInst;if(t&&(!e||t==$.data(e,PROP_NAME))&&this._datepickerShowing){var i=this._get(t,"showAnim"),a=this._get(t,"duration"),s=function(){$.datepicker._tidyDialog(t)};$.effects&&($.effects.effect[i]||$.effects[i])?t.dpDiv.hide(i,$.datepicker._get(t,"showOptions"),a,s):t.dpDiv["slideDown"==i?"slideUp":"fadeIn"==i?"fadeOut":"hide"](i?a:null,s),i||s(),this._datepickerShowing=!1;var n=this._get(t,"onClose");n&&n.apply(t.input?t.input[0]:null,[t.input?t.input.val():"",t]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),$.blockUI&&($.unblockUI(),$("body").append(this.dpDiv))),this._inDialog=!1}},_tidyDialog:function(e){e.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(e){if($.datepicker._curInst){var t=$(e.target),i=$.datepicker._getInst(t[0]);(t[0].id!=$.datepicker._mainDivId&&0==t.parents("#"+$.datepicker._mainDivId).length&&!t.hasClass($.datepicker.markerClassName)&&!t.closest("."+$.datepicker._triggerClass).length&&$.datepicker._datepickerShowing&&(!$.datepicker._inDialog||!$.blockUI)||t.hasClass($.datepicker.markerClassName)&&$.datepicker._curInst!=i)&&$.datepicker._hideDatepicker()}},_adjustDate:function(e,t,i){var a=$(e),s=this._getInst(a[0]);this._isDisabledDatepicker(a[0])||(this._adjustInstDate(s,t+("M"==i?this._get(s,"showCurrentAtPos"):0),i),this._updateDatepicker(s))},_gotoToday:function(e){var t=$(e),i=this._getInst(t[0]);if(this._get(i,"gotoCurrent")&&i.currentDay)i.selectedDay=i.currentDay,i.drawMonth=i.selectedMonth=i.currentMonth,i.drawYear=i.selectedYear=i.currentYear;else{var a=new Date;i.selectedDay=a.getDate(),i.drawMonth=i.selectedMonth=a.getMonth(),i.drawYear=i.selectedYear=a.getFullYear()}this._notifyChange(i),this._adjustDate(t)},_selectMonthYear:function(e,t,i){var a=$(e),s=this._getInst(a[0]);s["selected"+("M"==i?"Month":"Year")]=s["draw"+("M"==i?"Month":"Year")]=parseInt(t.options[t.selectedIndex].value,10),this._notifyChange(s),this._adjustDate(a)},_selectDay:function(e,t,i,a){var s=$(e);if(!$(a).hasClass(this._unselectableClass)&&!this._isDisabledDatepicker(s[0])){var n=this._getInst(s[0]);n.selectedDay=n.currentDay=$("a",a).html(),n.selectedMonth=n.currentMonth=t,n.selectedYear=n.currentYear=i,this._selectDate(e,this._formatDate(n,n.currentDay,n.currentMonth,n.currentYear))}},_clearDate:function(e){var t=$(e);this._getInst(t[0]),this._selectDate(t,"")},_selectDate:function(e,t){var i=$(e),a=this._getInst(i[0]);t=null!=t?t:this._formatDate(a),a.input&&a.input.val(t),this._updateAlternate(a);var s=this._get(a,"onSelect");s?s.apply(a.input?a.input[0]:null,[t,a]):a.input&&a.input.trigger("change"),a.inline?this._updateDatepicker(a):(this._hideDatepicker(),this._lastInput=a.input[0],"object"!=typeof a.input[0]&&a.input.focus(),this._lastInput=null)},_updateAlternate:function(e){var t=this._get(e,"altField");if(t){var i=this._get(e,"altFormat")||this._get(e,"dateFormat"),a=this._getDate(e),s=this.formatDate(i,a,this._getFormatConfig(e));$(t).each(function(){$(this).val(s)})}},noWeekends:function(e){var t=e.getDay();return[t>0&&6>t,""]},iso8601Week:function(e){var t=new Date(e.getTime());t.setDate(t.getDate()+4-(t.getDay()||7));var i=t.getTime();return t.setMonth(0),t.setDate(1),Math.floor(Math.round((i-t)/864e5)/7)+1},parseDate:function(e,t,i){if(null==e||null==t)throw"Invalid arguments";if(t="object"==typeof t?""+t:t+"",""==t)return null;var a=(i?i.shortYearCutoff:null)||this._defaults.shortYearCutoff;a="string"!=typeof a?a:(new Date).getFullYear()%100+parseInt(a,10);for(var s=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,n=(i?i.dayNames:null)||this._defaults.dayNames,r=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,o=(i?i.monthNames:null)||this._defaults.monthNames,h=-1,l=-1,u=-1,d=-1,c=!1,p=function(t){var i=e.length>y+1&&e.charAt(y+1)==t;return i&&y++,i},m=function(e){var i=p(e),a="@"==e?14:"!"==e?20:"y"==e&&i?4:"o"==e?3:2,s=RegExp("^\\d{1,"+a+"}"),n=t.substring(v).match(s);if(!n)throw"Missing number at position "+v;return v+=n[0].length,parseInt(n[0],10)},f=function(e,i,a){var s=$.map(p(e)?a:i,function(e,t){return[[t,e]]}).sort(function(e,t){return-(e[1].length-t[1].length)}),n=-1;if($.each(s,function(e,i){var a=i[1];return t.substr(v,a.length).toLowerCase()==a.toLowerCase()?(n=i[0],v+=a.length,!1):undefined}),-1!=n)return n+1;throw"Unknown name at position "+v},g=function(){if(t.charAt(v)!=e.charAt(y))throw"Unexpected literal at position "+v;v++},v=0,y=0;e.length>y;y++)if(c)"'"!=e.charAt(y)||p("'")?g():c=!1;else switch(e.charAt(y)){case"d":u=m("d");break;case"D":f("D",s,n);break;case"o":d=m("o");break;case"m":l=m("m");break;case"M":l=f("M",r,o);break;case"y":h=m("y");break;case"@":var b=new Date(m("@"));h=b.getFullYear(),l=b.getMonth()+1,u=b.getDate();break;case"!":var b=new Date((m("!")-this._ticksTo1970)/1e4);h=b.getFullYear(),l=b.getMonth()+1,u=b.getDate();break;case"'":p("'")?g():c=!0;break;default:g()}if(t.length>v){var _=t.substr(v);if(!/^\s+/.test(_))throw"Extra/unparsed characters found in date: "+_}if(-1==h?h=(new Date).getFullYear():100>h&&(h+=(new Date).getFullYear()-(new Date).getFullYear()%100+(a>=h?0:-100)),d>-1)for(l=1,u=d;;){var k=this._getDaysInMonth(h,l-1);if(k>=u)break;l++,u-=k}var b=this._daylightSavingAdjust(new Date(h,l-1,u));if(b.getFullYear()!=h||b.getMonth()+1!=l||b.getDate()!=u)throw"Invalid date";return b},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(e,t,i){if(!t)return"";var a=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,s=(i?i.dayNames:null)||this._defaults.dayNames,n=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,r=(i?i.monthNames:null)||this._defaults.monthNames,o=function(t){var i=e.length>c+1&&e.charAt(c+1)==t;return i&&c++,i},h=function(e,t,i){var a=""+t;if(o(e))for(;i>a.length;)a="0"+a;return a},l=function(e,t,i,a){return o(e)?a[t]:i[t]},u="",d=!1;if(t)for(var c=0;e.length>c;c++)if(d)"'"!=e.charAt(c)||o("'")?u+=e.charAt(c):d=!1;else switch(e.charAt(c)){case"d":u+=h("d",t.getDate(),2);break;case"D":u+=l("D",t.getDay(),a,s);break;case"o":u+=h("o",Math.round((new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()-new Date(t.getFullYear(),0,0).getTime())/864e5),3);break;case"m":u+=h("m",t.getMonth()+1,2);break;case"M":u+=l("M",t.getMonth(),n,r);break;case"y":u+=o("y")?t.getFullYear():(10>t.getYear()%100?"0":"")+t.getYear()%100;break;case"@":u+=t.getTime();break;case"!":u+=1e4*t.getTime()+this._ticksTo1970;break;case"'":o("'")?u+="'":d=!0;break;default:u+=e.charAt(c)}return u},_possibleChars:function(e){for(var t="",i=!1,a=function(t){var i=e.length>s+1&&e.charAt(s+1)==t;return i&&s++,i},s=0;e.length>s;s++)if(i)"'"!=e.charAt(s)||a("'")?t+=e.charAt(s):i=!1;else switch(e.charAt(s)){case"d":case"m":case"y":case"@":t+="0123456789";break;case"D":case"M":return null;case"'":a("'")?t+="'":i=!0;break;default:t+=e.charAt(s)}return t},_get:function(e,t){return e.settings[t]!==undefined?e.settings[t]:this._defaults[t]},_setDateFromField:function(e,t){if(e.input.val()!=e.lastVal){var i,a,s=this._get(e,"dateFormat"),n=e.lastVal=e.input?e.input.val():null;i=a=this._getDefaultDate(e);var r=this._getFormatConfig(e);try{i=this.parseDate(s,n,r)||a}catch(o){this.log(o),n=t?"":n}e.selectedDay=i.getDate(),e.drawMonth=e.selectedMonth=i.getMonth(),e.drawYear=e.selectedYear=i.getFullYear(),e.currentDay=n?i.getDate():0,e.currentMonth=n?i.getMonth():0,e.currentYear=n?i.getFullYear():0,this._adjustInstDate(e)}},_getDefaultDate:function(e){return this._restrictMinMax(e,this._determineDate(e,this._get(e,"defaultDate"),new Date))},_determineDate:function(e,t,i){var a=function(e){var t=new Date;return t.setDate(t.getDate()+e),t},s=function(t){try{return $.datepicker.parseDate($.datepicker._get(e,"dateFormat"),t,$.datepicker._getFormatConfig(e))}catch(i){}for(var a=(t.toLowerCase().match(/^c/)?$.datepicker._getDate(e):null)||new Date,s=a.getFullYear(),n=a.getMonth(),r=a.getDate(),o=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,h=o.exec(t);h;){switch(h[2]||"d"){case"d":case"D":r+=parseInt(h[1],10);break;case"w":case"W":r+=7*parseInt(h[1],10);break;case"m":case"M":n+=parseInt(h[1],10),r=Math.min(r,$.datepicker._getDaysInMonth(s,n));break;case"y":case"Y":s+=parseInt(h[1],10),r=Math.min(r,$.datepicker._getDaysInMonth(s,n))}h=o.exec(t)}return new Date(s,n,r)},n=null==t||""===t?i:"string"==typeof t?s(t):"number"==typeof t?isNaN(t)?i:a(t):new Date(t.getTime());return n=n&&"Invalid Date"==""+n?i:n,n&&(n.setHours(0),n.setMinutes(0),n.setSeconds(0),n.setMilliseconds(0)),this._daylightSavingAdjust(n)},_daylightSavingAdjust:function(e){return e?(e.setHours(e.getHours()>12?e.getHours()+2:0),e):null},_setDate:function(e,t,i){var a=!t,s=e.selectedMonth,n=e.selectedYear,r=this._restrictMinMax(e,this._determineDate(e,t,new Date));e.selectedDay=e.currentDay=r.getDate(),e.drawMonth=e.selectedMonth=e.currentMonth=r.getMonth(),e.drawYear=e.selectedYear=e.currentYear=r.getFullYear(),s==e.selectedMonth&&n==e.selectedYear||i||this._notifyChange(e),this._adjustInstDate(e),e.input&&e.input.val(a?"":this._formatDate(e))},_getDate:function(e){var t=!e.currentYear||e.input&&""==e.input.val()?null:this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return t},_attachHandlers:function(e){var t=this._get(e,"stepMonths"),i="#"+e.id.replace(/\\\\/g,"\\");e.dpDiv.find("[data-handler]").map(function(){var e={prev:function(){window["DP_jQuery_"+dpuuid].datepicker._adjustDate(i,-t,"M")},next:function(){window["DP_jQuery_"+dpuuid].datepicker._adjustDate(i,+t,"M")},hide:function(){window["DP_jQuery_"+dpuuid].datepicker._hideDatepicker()},today:function(){window["DP_jQuery_"+dpuuid].datepicker._gotoToday(i)},selectDay:function(){return window["DP_jQuery_"+dpuuid].datepicker._selectDay(i,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return window["DP_jQuery_"+dpuuid].datepicker._selectMonthYear(i,this,"M"),!1},selectYear:function(){return window["DP_jQuery_"+dpuuid].datepicker._selectMonthYear(i,this,"Y"),!1}};$(this).bind(this.getAttribute("data-event"),e[this.getAttribute("data-handler")])})},_generateHTML:function(e){var t=new Date;t=this._daylightSavingAdjust(new Date(t.getFullYear(),t.getMonth(),t.getDate()));var i=this._get(e,"isRTL"),a=this._get(e,"showButtonPanel"),s=this._get(e,"hideIfNoPrevNext"),n=this._get(e,"navigationAsDateFormat"),r=this._getNumberOfMonths(e),o=this._get(e,"showCurrentAtPos"),h=this._get(e,"stepMonths"),l=1!=r[0]||1!=r[1],u=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),d=this._getMinMaxDate(e,"min"),c=this._getMinMaxDate(e,"max"),p=e.drawMonth-o,m=e.drawYear;if(0>p&&(p+=12,m--),c){var f=this._daylightSavingAdjust(new Date(c.getFullYear(),c.getMonth()-r[0]*r[1]+1,c.getDate()));for(f=d&&d>f?d:f;this._daylightSavingAdjust(new Date(m,p,1))>f;)p--,0>p&&(p=11,m--)}e.drawMonth=p,e.drawYear=m;var g=this._get(e,"prevText");g=n?this.formatDate(g,this._daylightSavingAdjust(new Date(m,p-h,1)),this._getFormatConfig(e)):g;var v=this._canAdjustMonth(e,-1,m,p)?'<a class="ui-datepicker-prev ui-corner-all" data-handler="prev" data-event="click" title="'+g+'"><span class="ui-icon ui-icon-circle-triangle-'+(i?"e":"w")+'">'+g+"</span></a>":s?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+g+'"><span class="ui-icon ui-icon-circle-triangle-'+(i?"e":"w")+'">'+g+"</span></a>",y=this._get(e,"nextText");y=n?this.formatDate(y,this._daylightSavingAdjust(new Date(m,p+h,1)),this._getFormatConfig(e)):y;var b=this._canAdjustMonth(e,1,m,p)?'<a class="ui-datepicker-next ui-corner-all" data-handler="next" data-event="click" title="'+y+'"><span class="ui-icon ui-icon-circle-triangle-'+(i?"w":"e")+'">'+y+"</span></a>":s?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+y+'"><span class="ui-icon ui-icon-circle-triangle-'+(i?"w":"e")+'">'+y+"</span></a>",_=this._get(e,"currentText"),k=this._get(e,"gotoCurrent")&&e.currentDay?u:t;_=n?this.formatDate(_,k,this._getFormatConfig(e)):_;var x=e.inline?"":'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" data-handler="hide" data-event="click">'+this._get(e,"closeText")+"</button>",D=a?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(i?x:"")+(this._isInRange(e,k)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" data-handler="today" data-event="click">'+_+"</button>":"")+(i?"":x)+"</div>":"",w=parseInt(this._get(e,"firstDay"),10);w=isNaN(w)?0:w;var T=this._get(e,"showWeek"),S=this._get(e,"dayNames");this._get(e,"dayNamesShort");var M=this._get(e,"dayNamesMin"),N=this._get(e,"monthNames"),C=this._get(e,"monthNamesShort"),A=this._get(e,"beforeShowDay"),P=this._get(e,"showOtherMonths"),j=this._get(e,"selectOtherMonths");this._get(e,"calculateWeek")||this.iso8601Week;for(var I=this._getDefaultDate(e),F="",H=0;r[0]>H;H++){var E="";this.maxRows=4;for(var z=0;r[1]>z;z++){var L=this._daylightSavingAdjust(new Date(m,p,e.selectedDay)),O=" ui-corner-all",R="";if(l){if(R+='<div class="ui-datepicker-group',r[1]>1)switch(z){case 0:R+=" ui-datepicker-group-first",O=" ui-corner-"+(i?"right":"left");break;case r[1]-1:R+=" ui-datepicker-group-last",O=" ui-corner-"+(i?"left":"right");break;default:R+=" ui-datepicker-group-middle",O=""}R+='">'}R+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+O+'">'+(/all|left/.test(O)&&0==H?i?b:v:"")+(/all|right/.test(O)&&0==H?i?v:b:"")+this._generateMonthYearHeader(e,p,m,d,c,H>0||z>0,N,C)+'</div><table class="ui-datepicker-calendar"><thead>'+"<tr>";for(var W=T?'<th class="ui-datepicker-week-col">'+this._get(e,"weekHeader")+"</th>":"",Y=0;7>Y;Y++){var J=(Y+w)%7;W+="<th"+((Y+w+6)%7>=5?' class="ui-datepicker-week-end"':"")+">"+'<span title="'+S[J]+'">'+M[J]+"</span></th>"}R+=W+"</tr></thead><tbody>";var Q=this._getDaysInMonth(m,p);m==e.selectedYear&&p==e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,Q));var B=(this._getFirstDayOfMonth(m,p)-w+7)%7,K=Math.ceil((B+Q)/7),V=l?this.maxRows>K?this.maxRows:K:K;this.maxRows=V;for(var U=this._daylightSavingAdjust(new Date(m,p,1-B)),G=0;V>G;G++){R+="<tr>";for(var q=T?'<td class="ui-datepicker-week-col">'+this._get(e,"calculateWeek")(U)+"</td>":"",Y=0;7>Y;Y++){var X=A?A.apply(e.input?e.input[0]:null,[U]):[!0,""],Z=U.getMonth()!=p,et=Z&&!j||!X[0]||d&&d>U||c&&U>c;q+='<td class="'+((Y+w+6)%7>=5?" ui-datepicker-week-end":"")+(Z?" ui-datepicker-other-month":"")+(U.getTime()==L.getTime()&&p==e.selectedMonth&&e._keyEvent||I.getTime()==U.getTime()&&I.getTime()==L.getTime()?" "+this._dayOverClass:"")+(et?" "+this._unselectableClass+" ui-state-disabled":"")+(Z&&!P?"":" "+X[1]+(U.getTime()==u.getTime()?" "+this._currentClass:"")+(U.getTime()==t.getTime()?" ui-datepicker-today":""))+'"'+(Z&&!P||!X[2]?"":' title="'+X[2]+'"')+(et?"":' data-handler="selectDay" data-event="click" data-month="'+U.getMonth()+'" data-year="'+U.getFullYear()+'"')+">"+(Z&&!P?"&#xa0;":et?'<span class="ui-state-default">'+U.getDate()+"</span>":'<a class="ui-state-default'+(U.getTime()==t.getTime()?" ui-state-highlight":"")+(U.getTime()==u.getTime()?" ui-state-active":"")+(Z?" ui-priority-secondary":"")+'" href="#">'+U.getDate()+"</a>")+"</td>",U.setDate(U.getDate()+1),U=this._daylightSavingAdjust(U)
-}R+=q+"</tr>"}p++,p>11&&(p=0,m++),R+="</tbody></table>"+(l?"</div>"+(r[0]>0&&z==r[1]-1?'<div class="ui-datepicker-row-break"></div>':""):""),E+=R}F+=E}return F+=D+($.ui.ie6&&!e.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':""),e._keyEvent=!1,F},_generateMonthYearHeader:function(e,t,i,a,s,n,r,o){var h=this._get(e,"changeMonth"),l=this._get(e,"changeYear"),u=this._get(e,"showMonthAfterYear"),d='<div class="ui-datepicker-title">',c="";if(n||!h)c+='<span class="ui-datepicker-month">'+r[t]+"</span>";else{var p=a&&a.getFullYear()==i,m=s&&s.getFullYear()==i;c+='<select class="ui-datepicker-month" data-handler="selectMonth" data-event="change">';for(var f=0;12>f;f++)(!p||f>=a.getMonth())&&(!m||s.getMonth()>=f)&&(c+='<option value="'+f+'"'+(f==t?' selected="selected"':"")+">"+o[f]+"</option>");c+="</select>"}if(u||(d+=c+(!n&&h&&l?"":"&#xa0;")),!e.yearshtml)if(e.yearshtml="",n||!l)d+='<span class="ui-datepicker-year">'+i+"</span>";else{var g=this._get(e,"yearRange").split(":"),v=(new Date).getFullYear(),y=function(e){var t=e.match(/c[+-].*/)?i+parseInt(e.substring(1),10):e.match(/[+-].*/)?v+parseInt(e,10):parseInt(e,10);return isNaN(t)?v:t},b=y(g[0]),_=Math.max(b,y(g[1]||""));for(b=a?Math.max(b,a.getFullYear()):b,_=s?Math.min(_,s.getFullYear()):_,e.yearshtml+='<select class="ui-datepicker-year" data-handler="selectYear" data-event="change">';_>=b;b++)e.yearshtml+='<option value="'+b+'"'+(b==i?' selected="selected"':"")+">"+b+"</option>";e.yearshtml+="</select>",d+=e.yearshtml,e.yearshtml=null}return d+=this._get(e,"yearSuffix"),u&&(d+=(!n&&h&&l?"":"&#xa0;")+c),d+="</div>"},_adjustInstDate:function(e,t,i){var a=e.drawYear+("Y"==i?t:0),s=e.drawMonth+("M"==i?t:0),n=Math.min(e.selectedDay,this._getDaysInMonth(a,s))+("D"==i?t:0),r=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(a,s,n)));e.selectedDay=r.getDate(),e.drawMonth=e.selectedMonth=r.getMonth(),e.drawYear=e.selectedYear=r.getFullYear(),("M"==i||"Y"==i)&&this._notifyChange(e)},_restrictMinMax:function(e,t){var i=this._getMinMaxDate(e,"min"),a=this._getMinMaxDate(e,"max"),s=i&&i>t?i:t;return s=a&&s>a?a:s},_notifyChange:function(e){var t=this._get(e,"onChangeMonthYear");t&&t.apply(e.input?e.input[0]:null,[e.selectedYear,e.selectedMonth+1,e])},_getNumberOfMonths:function(e){var t=this._get(e,"numberOfMonths");return null==t?[1,1]:"number"==typeof t?[1,t]:t},_getMinMaxDate:function(e,t){return this._determineDate(e,this._get(e,t+"Date"),null)},_getDaysInMonth:function(e,t){return 32-this._daylightSavingAdjust(new Date(e,t,32)).getDate()},_getFirstDayOfMonth:function(e,t){return new Date(e,t,1).getDay()},_canAdjustMonth:function(e,t,i,a){var s=this._getNumberOfMonths(e),n=this._daylightSavingAdjust(new Date(i,a+(0>t?t:s[0]*s[1]),1));return 0>t&&n.setDate(this._getDaysInMonth(n.getFullYear(),n.getMonth())),this._isInRange(e,n)},_isInRange:function(e,t){var i=this._getMinMaxDate(e,"min"),a=this._getMinMaxDate(e,"max");return(!i||t.getTime()>=i.getTime())&&(!a||t.getTime()<=a.getTime())},_getFormatConfig:function(e){var t=this._get(e,"shortYearCutoff");return t="string"!=typeof t?t:(new Date).getFullYear()%100+parseInt(t,10),{shortYearCutoff:t,dayNamesShort:this._get(e,"dayNamesShort"),dayNames:this._get(e,"dayNames"),monthNamesShort:this._get(e,"monthNamesShort"),monthNames:this._get(e,"monthNames")}},_formatDate:function(e,t,i,a){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);var s=t?"object"==typeof t?t:this._daylightSavingAdjust(new Date(a,i,t)):this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return this.formatDate(this._get(e,"dateFormat"),s,this._getFormatConfig(e))}}),$.fn.datepicker=function(e){if(!this.length)return this;$.datepicker.initialized||($(document).mousedown($.datepicker._checkExternalClick).find(document.body).append($.datepicker.dpDiv),$.datepicker.initialized=!0);var t=Array.prototype.slice.call(arguments,1);return"string"!=typeof e||"isDisabled"!=e&&"getDate"!=e&&"widget"!=e?"option"==e&&2==arguments.length&&"string"==typeof arguments[1]?$.datepicker["_"+e+"Datepicker"].apply($.datepicker,[this[0]].concat(t)):this.each(function(){"string"==typeof e?$.datepicker["_"+e+"Datepicker"].apply($.datepicker,[this].concat(t)):$.datepicker._attachDatepicker(this,e)}):$.datepicker["_"+e+"Datepicker"].apply($.datepicker,[this[0]].concat(t))},$.datepicker=new Datepicker,$.datepicker.initialized=!1,$.datepicker.uuid=(new Date).getTime(),$.datepicker.version="1.9.2",window["DP_jQuery_"+dpuuid]=$})(jQuery);(function(e,t){var i="ui-dialog ui-widget ui-widget-content ui-corner-all ",a={buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},s={maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0};e.widget("ui.dialog",{version:"1.9.2",options:{autoOpen:!0,buttons:{},closeOnEscape:!0,closeText:"close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:!1,maxWidth:!1,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(t){var i=e(this).css(t).offset().top;0>i&&e(this).css("top",t.top-i)}},resizable:!0,show:null,stack:!0,title:"",width:300,zIndex:1e3},_create:function(){this.originalTitle=this.element.attr("title"),"string"!=typeof this.originalTitle&&(this.originalTitle=""),this.oldPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.options.title=this.options.title||this.originalTitle;var a,s,n,r,o,h=this,l=this.options,u=l.title||"&#160;";a=(this.uiDialog=e("<div>")).addClass(i+l.dialogClass).css({display:"none",outline:0,zIndex:l.zIndex}).attr("tabIndex",-1).keydown(function(t){l.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===e.ui.keyCode.ESCAPE&&(h.close(t),t.preventDefault())}).mousedown(function(e){h.moveToTop(!1,e)}).appendTo("body"),this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(a),s=(this.uiDialogTitlebar=e("<div>")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").bind("mousedown",function(){a.focus()}).prependTo(a),n=e("<a href='#'></a>").addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").click(function(e){e.preventDefault(),h.close(e)}).appendTo(s),(this.uiDialogTitlebarCloseText=e("<span>")).addClass("ui-icon ui-icon-closethick").text(l.closeText).appendTo(n),r=e("<span>").uniqueId().addClass("ui-dialog-title").html(u).prependTo(s),o=(this.uiDialogButtonPane=e("<div>")).addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),(this.uiButtonSet=e("<div>")).addClass("ui-dialog-buttonset").appendTo(o),a.attr({role:"dialog","aria-labelledby":r.attr("id")}),s.find("*").add(s).disableSelection(),this._hoverable(n),this._focusable(n),l.draggable&&e.fn.draggable&&this._makeDraggable(),l.resizable&&e.fn.resizable&&this._makeResizable(),this._createButtons(l.buttons),this._isOpen=!1,e.fn.bgiframe&&a.bgiframe(),this._on(a,{keydown:function(i){if(l.modal&&i.keyCode===e.ui.keyCode.TAB){var s=e(":tabbable",a),n=s.filter(":first"),r=s.filter(":last");return i.target!==r[0]||i.shiftKey?i.target===n[0]&&i.shiftKey?(r.focus(1),!1):t:(n.focus(1),!1)}}})},_init:function(){this.options.autoOpen&&this.open()},_destroy:function(){var e,t=this.oldPosition;this.overlay&&this.overlay.destroy(),this.uiDialog.hide(),this.element.removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),e=t.parent.children().eq(t.index),e.length&&e[0]!==this.element[0]?e.before(this.element):t.parent.append(this.element)},widget:function(){return this.uiDialog},close:function(t){var i,a,s=this;if(this._isOpen&&!1!==this._trigger("beforeClose",t))return this._isOpen=!1,this.overlay&&this.overlay.destroy(),this.options.hide?this._hide(this.uiDialog,this.options.hide,function(){s._trigger("close",t)}):(this.uiDialog.hide(),this._trigger("close",t)),e.ui.dialog.overlay.resize(),this.options.modal&&(i=0,e(".ui-dialog").each(function(){this!==s.uiDialog[0]&&(a=e(this).css("z-index"),isNaN(a)||(i=Math.max(i,a)))}),e.ui.dialog.maxZ=i),this},isOpen:function(){return this._isOpen},moveToTop:function(t,i){var a,s=this.options;return s.modal&&!t||!s.stack&&!s.modal?this._trigger("focus",i):(s.zIndex>e.ui.dialog.maxZ&&(e.ui.dialog.maxZ=s.zIndex),this.overlay&&(e.ui.dialog.maxZ+=1,e.ui.dialog.overlay.maxZ=e.ui.dialog.maxZ,this.overlay.$el.css("z-index",e.ui.dialog.overlay.maxZ)),a={scrollTop:this.element.scrollTop(),scrollLeft:this.element.scrollLeft()},e.ui.dialog.maxZ+=1,this.uiDialog.css("z-index",e.ui.dialog.maxZ),this.element.attr(a),this._trigger("focus",i),this)},open:function(){if(!this._isOpen){var t,i=this.options,a=this.uiDialog;return this._size(),this._position(i.position),a.show(i.show),this.overlay=i.modal?new e.ui.dialog.overlay(this):null,this.moveToTop(!0),t=this.element.find(":tabbable"),t.length||(t=this.uiDialogButtonPane.find(":tabbable"),t.length||(t=a)),t.eq(0).focus(),this._isOpen=!0,this._trigger("open"),this}},_createButtons:function(t){var i=this,a=!1;this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),"object"==typeof t&&null!==t&&e.each(t,function(){return!(a=!0)}),a?(e.each(t,function(t,a){var s,n;a=e.isFunction(a)?{click:a,text:t}:a,a=e.extend({type:"button"},a),n=a.click,a.click=function(){n.apply(i.element[0],arguments)},s=e("<button></button>",a).appendTo(i.uiButtonSet),e.fn.button&&s.button()}),this.uiDialog.addClass("ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog)):this.uiDialog.removeClass("ui-dialog-buttons")},_makeDraggable:function(){function t(e){return{position:e.position,offset:e.offset}}var i=this,a=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(a,s){e(this).addClass("ui-dialog-dragging"),i._trigger("dragStart",a,t(s))},drag:function(e,a){i._trigger("drag",e,t(a))},stop:function(s,n){a.position=[n.position.left-i.document.scrollLeft(),n.position.top-i.document.scrollTop()],e(this).removeClass("ui-dialog-dragging"),i._trigger("dragStop",s,t(n)),e.ui.dialog.overlay.resize()}})},_makeResizable:function(i){function a(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}i=i===t?this.options.resizable:i;var s=this,n=this.options,r=this.uiDialog.css("position"),o="string"==typeof i?i:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:n.maxWidth,maxHeight:n.maxHeight,minWidth:n.minWidth,minHeight:this._minHeight(),handles:o,start:function(t,i){e(this).addClass("ui-dialog-resizing"),s._trigger("resizeStart",t,a(i))},resize:function(e,t){s._trigger("resize",e,a(t))},stop:function(t,i){e(this).removeClass("ui-dialog-resizing"),n.height=e(this).height(),n.width=e(this).width(),s._trigger("resizeStop",t,a(i)),e.ui.dialog.overlay.resize()}}).css("position",r).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var e=this.options;return"auto"===e.height?e.minHeight:Math.min(e.minHeight,e.height)},_position:function(t){var i,a=[],s=[0,0];t?(("string"==typeof t||"object"==typeof t&&"0"in t)&&(a=t.split?t.split(" "):[t[0],t[1]],1===a.length&&(a[1]=a[0]),e.each(["left","top"],function(e,t){+a[e]===a[e]&&(s[e]=a[e],a[e]=t)}),t={my:a[0]+(0>s[0]?s[0]:"+"+s[0])+" "+a[1]+(0>s[1]?s[1]:"+"+s[1]),at:a.join(" ")}),t=e.extend({},e.ui.dialog.prototype.options.position,t)):t=e.ui.dialog.prototype.options.position,i=this.uiDialog.is(":visible"),i||this.uiDialog.show(),this.uiDialog.position(t),i||this.uiDialog.hide()},_setOptions:function(t){var i=this,n={},r=!1;e.each(t,function(e,t){i._setOption(e,t),e in a&&(r=!0),e in s&&(n[e]=t)}),r&&this._size(),this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(t,a){var s,n,r=this.uiDialog;switch(t){case"buttons":this._createButtons(a);break;case"closeText":this.uiDialogTitlebarCloseText.text(""+a);break;case"dialogClass":r.removeClass(this.options.dialogClass).addClass(i+a);break;case"disabled":a?r.addClass("ui-dialog-disabled"):r.removeClass("ui-dialog-disabled");break;case"draggable":s=r.is(":data(draggable)"),s&&!a&&r.draggable("destroy"),!s&&a&&this._makeDraggable();break;case"position":this._position(a);break;case"resizable":n=r.is(":data(resizable)"),n&&!a&&r.resizable("destroy"),n&&"string"==typeof a&&r.resizable("option","handles",a),n||a===!1||this._makeResizable(a);break;case"title":e(".ui-dialog-title",this.uiDialogTitlebar).html(""+(a||"&#160;"))}this._super(t,a)},_size:function(){var t,i,a,s=this.options,n=this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),i=Math.max(0,s.minHeight-t),"auto"===s.height?e.support.minHeight?this.element.css({minHeight:i,height:"auto"}):(this.uiDialog.show(),a=this.element.css("height","auto").height(),n||this.uiDialog.hide(),this.element.height(Math.max(a,i))):this.element.height(Math.max(s.height-t,0)),this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}}),e.extend(e.ui.dialog,{uuid:0,maxZ:0,getTitleId:function(e){var t=e.attr("id");return t||(this.uuid+=1,t=this.uuid),"ui-dialog-title-"+t},overlay:function(t){this.$el=e.ui.dialog.overlay.create(t)}}),e.extend(e.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:e.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(e){return e+".dialog-overlay"}).join(" "),create:function(i){0===this.instances.length&&(setTimeout(function(){e.ui.dialog.overlay.instances.length&&e(document).bind(e.ui.dialog.overlay.events,function(i){return e(i.target).zIndex()<e.ui.dialog.overlay.maxZ?!1:t})},1),e(window).bind("resize.dialog-overlay",e.ui.dialog.overlay.resize));var a=this.oldInstances.pop()||e("<div>").addClass("ui-widget-overlay");return e(document).bind("keydown.dialog-overlay",function(t){var s=e.ui.dialog.overlay.instances;0!==s.length&&s[s.length-1]===a&&i.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===e.ui.keyCode.ESCAPE&&(i.close(t),t.preventDefault())}),a.appendTo(document.body).css({width:this.width(),height:this.height()}),e.fn.bgiframe&&a.bgiframe(),this.instances.push(a),a},destroy:function(t){var i=e.inArray(t,this.instances),a=0;-1!==i&&this.oldInstances.push(this.instances.splice(i,1)[0]),0===this.instances.length&&e([document,window]).unbind(".dialog-overlay"),t.height(0).width(0).remove(),e.each(this.instances,function(){a=Math.max(a,this.css("z-index"))}),this.maxZ=a},height:function(){var t,i;return e.ui.ie?(t=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),i=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight),i>t?e(window).height()+"px":t+"px"):e(document).height()+"px"},width:function(){var t,i;return e.ui.ie?(t=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth),i=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth),i>t?e(window).width()+"px":t+"px"):e(document).width()+"px"},resize:function(){var t=e([]);e.each(e.ui.dialog.overlay.instances,function(){t=t.add(this)}),t.css({width:0,height:0}).css({width:e.ui.dialog.overlay.width(),height:e.ui.dialog.overlay.height()})}}),e.extend(e.ui.dialog.overlay.prototype,{destroy:function(){e.ui.dialog.overlay.destroy(this.$el)}})})(jQuery);(function(e){var t=!1;e.widget("ui.menu",{version:"1.9.2",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content ui-corner-all").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}).bind("click"+this.eventNamespace,e.proxy(function(e){this.options.disabled&&e.preventDefault()},this)),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item > a":function(e){e.preventDefault()},"click .ui-state-disabled > a":function(e){e.preventDefault()},"click .ui-menu-item:has(a)":function(i){var s=e(i.target).closest(".ui-menu-item");!t&&s.not(".ui-state-disabled").length&&(t=!0,this.select(i),s.has(".ui-menu").length?this.expand(i):this.element.is(":focus")||(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(t){var i=e(t.currentTarget);i.siblings().children(".ui-state-active").removeClass("ui-state-active"),this.focus(t,i)},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var i=this.active||this.element.children(".ui-menu-item").eq(0);t||this.focus(e,i)},blur:function(t){this._delay(function(){e.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(i){e(i.target).closest(".ui-menu").length||this.collapseAll(i),t=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").andSelf().removeClass("ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").children("a").removeUniqueId().removeClass("ui-corner-all ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var t=e(this);t.data("ui-menu-submenu-carat")&&t.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(t){function i(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}var s,a,n,r,o,h=!0;switch(t.keyCode){case e.ui.keyCode.PAGE_UP:this.previousPage(t);break;case e.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case e.ui.keyCode.HOME:this._move("first","first",t);break;case e.ui.keyCode.END:this._move("last","last",t);break;case e.ui.keyCode.UP:this.previous(t);break;case e.ui.keyCode.DOWN:this.next(t);break;case e.ui.keyCode.LEFT:this.collapse(t);break;case e.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case e.ui.keyCode.ENTER:case e.ui.keyCode.SPACE:this._activate(t);break;case e.ui.keyCode.ESCAPE:this.collapse(t);break;default:h=!1,a=this.previousFilter||"",n=String.fromCharCode(t.keyCode),r=!1,clearTimeout(this.filterTimer),n===a?r=!0:n=a+n,o=RegExp("^"+i(n),"i"),s=this.activeMenu.children(".ui-menu-item").filter(function(){return o.test(e(this).children("a").text())}),s=r&&-1!==s.index(this.active.next())?this.active.nextAll(".ui-menu-item"):s,s.length||(n=String.fromCharCode(t.keyCode),o=RegExp("^"+i(n),"i"),s=this.activeMenu.children(".ui-menu-item").filter(function(){return o.test(e(this).children("a").text())})),s.length?(this.focus(t,s),s.length>1?(this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter):delete this.previousFilter}h&&t.preventDefault()},_activate:function(e){this.active.is(".ui-state-disabled")||(this.active.children("a[aria-haspopup='true']").length?this.expand(e):this.select(e))},refresh:function(){var t,i=this.options.icons.submenu,s=this.element.find(this.options.menus);s.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-corner-all").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=e(this),s=t.prev("a"),a=e("<span>").addClass("ui-menu-icon ui-icon "+i).data("ui-menu-submenu-carat",!0);s.attr("aria-haspopup","true").prepend(a),t.attr("aria-labelledby",s.attr("id"))}),t=s.add(this.element),t.children(":not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","presentation").children("a").uniqueId().addClass("ui-corner-all").attr({tabIndex:-1,role:this._itemRole()}),t.children(":not(.ui-menu-item)").each(function(){var t=e(this);/[^\-—–\s]/.test(t.text())||t.addClass("ui-widget-content ui-menu-divider")}),t.children(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!e.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},focus:function(e,t){var i,s;this.blur(e,e&&"focus"===e.type),this._scrollIntoView(t),this.active=t.first(),s=this.active.children("a").addClass("ui-state-focus"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),this.active.parent().closest(".ui-menu-item").children("a:first").addClass("ui-state-active"),e&&"keydown"===e.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=t.children(".ui-menu"),i.length&&/^mouse/.test(e.type)&&this._startOpening(i),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(t){var i,s,a,n,r,o;this._hasScroll()&&(i=parseFloat(e.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(e.css(this.activeMenu[0],"paddingTop"))||0,a=t.offset().top-this.activeMenu.offset().top-i-s,n=this.activeMenu.scrollTop(),r=this.activeMenu.height(),o=t.height(),0>a?this.activeMenu.scrollTop(n+a):a+o>r&&this.activeMenu.scrollTop(n+a-r+o))},blur:function(e,t){t||clearTimeout(this.timer),this.active&&(this.active.children("a").removeClass("ui-state-focus"),this.active=null,this._trigger("blur",e,{item:this.active}))},_startOpening:function(e){clearTimeout(this.timer),"true"===e.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(e)},this.delay))},_open:function(t){var i=e.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(t,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:e(t&&t.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(t),this.activeMenu=s},this.delay)},_close:function(e){e||(e=this.active?this.active.parent():this.element),e.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find("a.ui-state-active").removeClass("ui-state-active")},collapse:function(e){var t=this.active&&this.active.parent().closest(".ui-menu-item",this.element);t&&t.length&&(this._close(),this.focus(e,t))},expand:function(e){var t=this.active&&this.active.children(".ui-menu ").children(".ui-menu-item").first();t&&t.length&&(this._open(t.parent()),this._delay(function(){this.focus(e,t)}))},next:function(e){this._move("next","first",e)},previous:function(e){this._move("prev","last",e)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(e,t,i){var s;this.active&&(s="first"===e||"last"===e?this.active["first"===e?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[e+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.children(".ui-menu-item")[t]()),this.focus(i,s)},nextPage:function(t){var i,s,a;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,a=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=e(this),0>i.offset().top-s-a}),this.focus(t,i)):this.focus(t,this.activeMenu.children(".ui-menu-item")[this.active?"last":"first"]())),undefined):(this.next(t),undefined)},previousPage:function(t){var i,s,a;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,a=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=e(this),i.offset().top-s+a>0}),this.focus(t,i)):this.focus(t,this.activeMenu.children(".ui-menu-item").first())),undefined):(this.next(t),undefined)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||e(t.target).closest(".ui-menu-item");var i={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,i)}})})(jQuery);(function(e,t){e.widget("ui.progressbar",{version:"1.9.2",options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()}),this.valueDiv=e("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element),this.oldValue=this._value(),this._refreshValue()},_destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove()},value:function(e){return e===t?this._value():(this._setOption("value",e),this)},_setOption:function(e,t){"value"===e&&(this.options.value=t,this._refreshValue(),this._value()===this.options.max&&this._trigger("complete")),this._super(e,t)},_value:function(){var e=this.options.value;return"number"!=typeof e&&(e=0),Math.min(this.options.max,Math.max(this.min,e))},_percentage:function(){return 100*this._value()/this.options.max},_refreshValue:function(){var e=this.value(),t=this._percentage();this.oldValue!==e&&(this.oldValue=e,this._trigger("change")),this.valueDiv.toggle(e>this.min).toggleClass("ui-corner-right",e===this.options.max).width(t.toFixed(0)+"%"),this.element.attr("aria-valuenow",e)}})})(jQuery);(function(e){var t=5;e.widget("ui.slider",e.ui.mouse,{version:"1.9.2",widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null},_create:function(){var i,s,a=this.options,n=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),r="<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>",o=[];for(this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"+(a.disabled?" ui-slider-disabled ui-disabled":"")),this.range=e([]),a.range&&(a.range===!0&&(a.values||(a.values=[this._valueMin(),this._valueMin()]),a.values.length&&2!==a.values.length&&(a.values=[a.values[0],a.values[0]])),this.range=e("<div></div>").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+("min"===a.range||"max"===a.range?" ui-slider-range-"+a.range:""))),s=a.values&&a.values.length||1,i=n.length;s>i;i++)o.push(r);this.handles=n.add(e(o.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.add(this.range).filter("a").click(function(e){e.preventDefault()}).mouseenter(function(){a.disabled||e(this).addClass("ui-state-hover")}).mouseleave(function(){e(this).removeClass("ui-state-hover")}).focus(function(){a.disabled?e(this).blur():(e(".ui-slider .ui-state-focus").removeClass("ui-state-focus"),e(this).addClass("ui-state-focus"))}).blur(function(){e(this).removeClass("ui-state-focus")}),this.handles.each(function(t){e(this).data("ui-slider-handle-index",t)}),this._on(this.handles,{keydown:function(i){var s,a,n,r,o=e(i.target).data("ui-slider-handle-index");switch(i.keyCode){case e.ui.keyCode.HOME:case e.ui.keyCode.END:case e.ui.keyCode.PAGE_UP:case e.ui.keyCode.PAGE_DOWN:case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(i.preventDefault(),!this._keySliding&&(this._keySliding=!0,e(i.target).addClass("ui-state-active"),s=this._start(i,o),s===!1))return}switch(r=this.options.step,a=n=this.options.values&&this.options.values.length?this.values(o):this.value(),i.keyCode){case e.ui.keyCode.HOME:n=this._valueMin();break;case e.ui.keyCode.END:n=this._valueMax();break;case e.ui.keyCode.PAGE_UP:n=this._trimAlignValue(a+(this._valueMax()-this._valueMin())/t);break;case e.ui.keyCode.PAGE_DOWN:n=this._trimAlignValue(a-(this._valueMax()-this._valueMin())/t);break;case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:if(a===this._valueMax())return;n=this._trimAlignValue(a+r);break;case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(a===this._valueMin())return;n=this._trimAlignValue(a-r)}this._slide(i,o,n)},keyup:function(t){var i=e(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,i),this._change(t,i),e(t.target).removeClass("ui-state-active"))}}),this._refreshValue(),this._animateOff=!1},_destroy:function(){this.handles.remove(),this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(t){var i,s,a,n,r,o,h,l,u=this,d=this.options;return d.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:t.pageX,y:t.pageY},s=this._normValueFromMouse(i),a=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var i=Math.abs(s-u.values(t));a>i&&(a=i,n=e(this),r=t)}),d.range===!0&&this.values(1)===d.min&&(r+=1,n=e(this.handles[r])),o=this._start(t,r),o===!1?!1:(this._mouseSliding=!0,this._handleIndex=r,n.addClass("ui-state-active").focus(),h=n.offset(),l=!e(t.target).parents().andSelf().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:t.pageX-h.left-n.width()/2,top:t.pageY-h.top-n.height()/2-(parseInt(n.css("borderTopWidth"),10)||0)-(parseInt(n.css("borderBottomWidth"),10)||0)+(parseInt(n.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,r,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(e){var t={x:e.pageX,y:e.pageY},i=this._normValueFromMouse(t);return this._slide(e,this._handleIndex,i),!1},_mouseStop:function(e){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(e,this._handleIndex),this._change(e,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(e){var t,i,s,a,n;return"horizontal"===this.orientation?(t=this.elementSize.width,i=e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(t=this.elementSize.height,i=e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/t,s>1&&(s=1),0>s&&(s=0),"vertical"===this.orientation&&(s=1-s),a=this._valueMax()-this._valueMin(),n=this._valueMin()+s*a,this._trimAlignValue(n)},_start:function(e,t){var i={handle:this.handles[t],value:this.value()};return this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._trigger("start",e,i)},_slide:function(e,t,i){var s,a,n;this.options.values&&this.options.values.length?(s=this.values(t?0:1),2===this.options.values.length&&this.options.range===!0&&(0===t&&i>s||1===t&&s>i)&&(i=s),i!==this.values(t)&&(a=this.values(),a[t]=i,n=this._trigger("slide",e,{handle:this.handles[t],value:i,values:a}),s=this.values(t?0:1),n!==!1&&this.values(t,i,!0))):i!==this.value()&&(n=this._trigger("slide",e,{handle:this.handles[t],value:i}),n!==!1&&this.value(i))},_stop:function(e,t){var i={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._trigger("stop",e,i)},_change:function(e,t){if(!this._keySliding&&!this._mouseSliding){var i={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._trigger("change",e,i)}},value:function(e){return arguments.length?(this.options.value=this._trimAlignValue(e),this._refreshValue(),this._change(null,0),undefined):this._value()},values:function(t,i){var s,a,n;if(arguments.length>1)return this.options.values[t]=this._trimAlignValue(i),this._refreshValue(),this._change(null,t),undefined;if(!arguments.length)return this._values();if(!e.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(t):this.value();for(s=this.options.values,a=arguments[0],n=0;s.length>n;n+=1)s[n]=this._trimAlignValue(a[n]),this._change(null,n);this._refreshValue()},_setOption:function(t,i){var s,a=0;switch(e.isArray(this.options.values)&&(a=this.options.values.length),e.Widget.prototype._setOption.apply(this,arguments),t){case"disabled":i?(this.handles.filter(".ui-state-focus").blur(),this.handles.removeClass("ui-state-hover"),this.handles.prop("disabled",!0),this.element.addClass("ui-disabled")):(this.handles.prop("disabled",!1),this.element.removeClass("ui-disabled"));break;case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue();break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),s=0;a>s;s+=1)this._change(null,s);this._animateOff=!1;break;case"min":case"max":this._animateOff=!0,this._refreshValue(),this._animateOff=!1}},_value:function(){var e=this.options.value;return e=this._trimAlignValue(e)},_values:function(e){var t,i,s;if(arguments.length)return t=this.options.values[e],t=this._trimAlignValue(t);for(i=this.options.values.slice(),s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(i[s]);return i},_trimAlignValue:function(e){if(this._valueMin()>=e)return this._valueMin();if(e>=this._valueMax())return this._valueMax();var t=this.options.step>0?this.options.step:1,i=(e-this._valueMin())%t,s=e-i;return 2*Math.abs(i)>=t&&(s+=i>0?t:-t),parseFloat(s.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var t,i,s,a,n,r=this.options.range,o=this.options,h=this,l=this._animateOff?!1:o.animate,u={};this.options.values&&this.options.values.length?this.handles.each(function(s){i=100*((h.values(s)-h._valueMin())/(h._valueMax()-h._valueMin())),u["horizontal"===h.orientation?"left":"bottom"]=i+"%",e(this).stop(1,1)[l?"animate":"css"](u,o.animate),h.options.range===!0&&("horizontal"===h.orientation?(0===s&&h.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},o.animate),1===s&&h.range[l?"animate":"css"]({width:i-t+"%"},{queue:!1,duration:o.animate})):(0===s&&h.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},o.animate),1===s&&h.range[l?"animate":"css"]({height:i-t+"%"},{queue:!1,duration:o.animate}))),t=i}):(s=this.value(),a=this._valueMin(),n=this._valueMax(),i=n!==a?100*((s-a)/(n-a)):0,u["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](u,o.animate),"min"===r&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},o.animate),"max"===r&&"horizontal"===this.orientation&&this.range[l?"animate":"css"]({width:100-i+"%"},{queue:!1,duration:o.animate}),"min"===r&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},o.animate),"max"===r&&"vertical"===this.orientation&&this.range[l?"animate":"css"]({height:100-i+"%"},{queue:!1,duration:o.animate}))}})})(jQuery);(function(e){function t(e){return function(){var t=this.element.val();e.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger("change")}}e.widget("ui.spinner",{version:"1.9.2",defaultElement:"<input>",widgetEventPrefix:"spin",options:{culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var t={},i=this.element;return e.each(["min","max","step"],function(e,s){var a=i.attr(s);void 0!==a&&a.length&&(t[s]=a)}),t},_events:{keydown:function(e){this._start(e)&&this._keydown(e)&&e.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(e){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._refresh(),this.previous!==this.element.val()&&this._trigger("change",e),void 0)},mousewheel:function(e,t){if(t){if(!this.spinning&&!this._start(e))return!1;this._spin((t>0?1:-1)*this.options.step,e),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(e)},100),e.preventDefault()}},"mousedown .ui-spinner-button":function(t){function i(){var e=this.element[0]===this.document[0].activeElement;e||(this.element.focus(),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===this.document[0].activeElement?this.previous:this.element.val(),t.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(t)!==!1&&this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(t){return e(t.currentTarget).hasClass("ui-state-active")?this._start(t)===!1?!1:(this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_draw:function(){var e=this.uiSpinner=this.element.addClass("ui-spinner-input").attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());this.element.attr("role","spinbutton"),this.buttons=e.find(".ui-spinner-button").attr("tabIndex",-1).button().removeClass("ui-corner-all"),this.buttons.height()>Math.ceil(.5*e.height())&&e.height()>0&&e.height(e.height()),this.options.disabled&&this.disable()},_keydown:function(t){var i=this.options,s=e.ui.keyCode;switch(t.keyCode){case s.UP:return this._repeat(null,1,t),!0;case s.DOWN:return this._repeat(null,-1,t),!0;case s.PAGE_UP:return this._repeat(null,i.page,t),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,t),!0}return!1},_uiSpinnerHtml:function(){return"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>"},_buttonHtml:function(){return"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'><span class='ui-icon "+this.options.icons.up+"'>&#9650;</span>"+"</a>"+"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>"+"<span class='ui-icon "+this.options.icons.down+"'>&#9660;</span>"+"</a>"},_start:function(e){return this.spinning||this._trigger("start",e)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(e,t,i){e=e||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,t,i)},e),this._spin(t*this.options.step,i)},_spin:function(e,t){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+e*this._increment(this.counter)),this.spinning&&this._trigger("spin",t,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(t){var i=this.options.incremental;return i?e.isFunction(i)?i(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var e=this._precisionOf(this.options.step);return null!==this.options.min&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=""+e,i=t.indexOf(".");return-1===i?0:t.length-i-1},_adjustValue:function(e){var t,i,s=this.options;return t=null!==s.min?s.min:0,i=e-t,i=Math.round(i/s.step)*s.step,e=t+i,e=parseFloat(e.toFixed(this._precision())),null!==s.max&&e>s.max?s.max:null!==s.min&&s.min>e?s.min:e},_stop:function(e){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",e))},_setOption:function(e,t){if("culture"===e||"numberFormat"===e){var i=this._parse(this.element.val());return this.options[e]=t,this.element.val(this._format(i)),void 0}("max"===e||"min"===e||"step"===e)&&"string"==typeof t&&(t=this._parse(t)),this._super(e,t),"disabled"===e&&(t?(this.element.prop("disabled",!0),this.buttons.button("disable")):(this.element.prop("disabled",!1),this.buttons.button("enable")))},_setOptions:t(function(e){this._super(e),this._value(this.element.val())}),_parse:function(e){return"string"==typeof e&&""!==e&&(e=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(e,10,this.options.culture):+e),""===e||isNaN(e)?null:e},_format:function(e){return""===e?"":window.Globalize&&this.options.numberFormat?Globalize.format(e,this.options.numberFormat,this.options.culture):e},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},_value:function(e,t){var i;""!==e&&(i=this._parse(e),null!==i&&(t||(i=this._adjustValue(i)),e=this._format(i))),this.element.val(e),this._refresh()},_destroy:function(){this.element.removeClass("ui-spinner-input").prop("disabled",!1).removeAttr("autocomplete").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:t(function(e){this._stepUp(e)}),_stepUp:function(e){this._spin((e||1)*this.options.step)},stepDown:t(function(e){this._stepDown(e)}),_stepDown:function(e){this._spin((e||1)*-this.options.step)},pageUp:t(function(e){this._stepUp((e||1)*this.options.page)}),pageDown:t(function(e){this._stepDown((e||1)*this.options.page)}),value:function(e){return arguments.length?(t(this._value).call(this,e),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}})})(jQuery);(function(e,t){function i(){return++a}function s(e){return e.hash.length>1&&e.href.replace(n,"")===location.href.replace(n,"").replace(/\s/g,"%20")}var a=0,n=/#.*$/;e.widget("ui.tabs",{version:"1.9.2",delay:300,options:{active:null,collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_create:function(){var i=this,s=this.options,a=s.active,n=location.hash.substring(1);this.running=!1,this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible",s.collapsible).delegate(".ui-tabs-nav > li","mousedown"+this.eventNamespace,function(t){e(this).is(".ui-state-disabled")&&t.preventDefault()}).delegate(".ui-tabs-anchor","focus"+this.eventNamespace,function(){e(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this._processTabs(),null===a&&(n&&this.tabs.each(function(i,s){return e(s).attr("aria-controls")===n?(a=i,!1):t}),null===a&&(a=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===a||-1===a)&&(a=this.tabs.length?0:!1)),a!==!1&&(a=this.tabs.index(this.tabs.eq(a)),-1===a&&(a=s.collapsible?!1:0)),s.active=a,!s.collapsible&&s.active===!1&&this.anchors.length&&(s.active=0),e.isArray(s.disabled)&&(s.disabled=e.unique(s.disabled.concat(e.map(this.tabs.filter(".ui-state-disabled"),function(e){return i.tabs.index(e)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(this.options.active):e(),this._refresh(),this.active.length&&this.load(s.active)},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):e()}},_tabKeydown:function(i){var s=e(this.document[0].activeElement).closest("li"),a=this.tabs.index(s),n=!0;if(!this._handlePageNav(i)){switch(i.keyCode){case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:a++;break;case e.ui.keyCode.UP:case e.ui.keyCode.LEFT:n=!1,a--;break;case e.ui.keyCode.END:a=this.anchors.length-1;break;case e.ui.keyCode.HOME:a=0;break;case e.ui.keyCode.SPACE:return i.preventDefault(),clearTimeout(this.activating),this._activate(a),t;case e.ui.keyCode.ENTER:return i.preventDefault(),clearTimeout(this.activating),this._activate(a===this.options.active?!1:a),t;default:return}i.preventDefault(),clearTimeout(this.activating),a=this._focusNextTab(a,n),i.ctrlKey||(s.attr("aria-selected","false"),this.tabs.eq(a).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",a)},this.delay))}},_panelKeydown:function(t){this._handlePageNav(t)||t.ctrlKey&&t.keyCode===e.ui.keyCode.UP&&(t.preventDefault(),this.active.focus())},_handlePageNav:function(i){return i.altKey&&i.keyCode===e.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):i.altKey&&i.keyCode===e.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):t},_findNextTab:function(t,i){function s(){return t>a&&(t=0),0>t&&(t=a),t}for(var a=this.tabs.length-1;-1!==e.inArray(s(),this.options.disabled);)t=i?t+1:t-1;return t},_focusNextTab:function(e,t){return e=this._findNextTab(e,t),this.tabs.eq(e).focus(),e},_setOption:function(e,i){return"active"===e?(this._activate(i),t):"disabled"===e?(this._setupDisabled(i),t):(this._super(e,i),"collapsible"===e&&(this.element.toggleClass("ui-tabs-collapsible",i),i||this.options.active!==!1||this._activate(0)),"event"===e&&this._setupEvents(i),"heightStyle"===e&&this._setupHeightStyle(i),t)},_tabId:function(e){return e.attr("aria-controls")||"ui-tabs-"+i()},_sanitizeSelector:function(e){return e?e.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,i=this.tablist.children(":has(a[href])");t.disabled=e.map(i.filter(".ui-state-disabled"),function(e){return i.index(e)}),this._processTabs(),t.active!==!1&&this.anchors.length?this.active.length&&!e.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=e()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active):(t.active=!1,this.active=e()),this._refresh()},_refresh:function(){this._setupDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-expanded":"false","aria-hidden":"true"}),this.active.length?(this.active.addClass("ui-tabs-active ui-state-active").attr({"aria-selected":"true",tabIndex:0}),this._getPanelForTab(this.active).show().attr({"aria-expanded":"true","aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var t=this;this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist"),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return e("a",this)[0]}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=e(),this.anchors.each(function(i,a){var n,r,o,h=e(a).uniqueId().attr("id"),l=e(a).closest("li"),u=l.attr("aria-controls");s(a)?(n=a.hash,r=t.element.find(t._sanitizeSelector(n))):(o=t._tabId(l),n="#"+o,r=t.element.find(n),r.length||(r=t._createPanel(o),r.insertAfter(t.panels[i-1]||t.tablist)),r.attr("aria-live","polite")),r.length&&(t.panels=t.panels.add(r)),u&&l.data("ui-tabs-aria-controls",u),l.attr({"aria-controls":n.substring(1),"aria-labelledby":h}),r.attr("aria-labelledby",h)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel")},_getList:function(){return this.element.find("ol,ul").eq(0)},_createPanel:function(t){return e("<div>").attr("id",t).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)},_setupDisabled:function(t){e.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1);for(var i,s=0;i=this.tabs[s];s++)t===!0||-1!==e.inArray(s,t)?e(i).addClass("ui-state-disabled").attr("aria-disabled","true"):e(i).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=t},_setupEvents:function(t){var i={click:function(e){e.preventDefault()}};t&&e.each(t.split(" "),function(e,t){i[t]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var i,s,a=this.element.parent();"fill"===t?(e.support.minHeight||(s=a.css("overflow"),a.css("overflow","hidden")),i=a.height(),this.element.siblings(":visible").each(function(){var t=e(this),s=t.css("position");"absolute"!==s&&"fixed"!==s&&(i-=t.outerHeight(!0))}),s&&a.css("overflow",s),this.element.children().not(this.panels).each(function(){i-=e(this).outerHeight(!0)}),this.panels.each(function(){e(this).height(Math.max(0,i-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):"auto"===t&&(i=0,this.panels.each(function(){i=Math.max(i,e(this).height("").height())}).height(i))},_eventHandler:function(t){var i=this.options,s=this.active,a=e(t.currentTarget),n=a.closest("li"),r=n[0]===s[0],o=r&&i.collapsible,h=o?e():this._getPanelForTab(n),l=s.length?this._getPanelForTab(s):e(),u={oldTab:s,oldPanel:l,newTab:o?e():n,newPanel:h};t.preventDefault(),n.hasClass("ui-state-disabled")||n.hasClass("ui-tabs-loading")||this.running||r&&!i.collapsible||this._trigger("beforeActivate",t,u)===!1||(i.active=o?!1:this.tabs.index(n),this.active=r?e():n,this.xhr&&this.xhr.abort(),l.length||h.length||e.error("jQuery UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(n),t),this._toggle(t,u))},_toggle:function(t,i){function s(){n.running=!1,n._trigger("activate",t,i)}function a(){i.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),r.length&&n.options.show?n._show(r,n.options.show,s):(r.show(),s())}var n=this,r=i.newPanel,o=i.oldPanel;this.running=!0,o.length&&this.options.hide?this._hide(o,this.options.hide,function(){i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),a()}):(i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),o.hide(),a()),o.attr({"aria-expanded":"false","aria-hidden":"true"}),i.oldTab.attr("aria-selected","false"),r.length&&o.length?i.oldTab.attr("tabIndex",-1):r.length&&this.tabs.filter(function(){return 0===e(this).attr("tabIndex")}).attr("tabIndex",-1),r.attr({"aria-expanded":"true","aria-hidden":"false"}),i.newTab.attr({"aria-selected":"true",tabIndex:0})},_activate:function(t){var i,s=this._findActive(t);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:e.noop}))},_findActive:function(t){return t===!1?e():this.tabs.eq(t)},_getIndex:function(e){return"string"==typeof e&&(e=this.anchors.index(this.anchors.filter("[href$='"+e+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"),this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"),this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeData("href.tabs").removeData("load.tabs").removeUniqueId(),this.tabs.add(this.panels).each(function(){e.data(this,"ui-tabs-destroy")?e(this).remove():e(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")}),this.tabs.each(function(){var t=e(this),i=t.data("ui-tabs-aria-controls");i?t.attr("aria-controls",i):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(i){var s=this.options.disabled;s!==!1&&(i===t?s=!1:(i=this._getIndex(i),s=e.isArray(s)?e.map(s,function(e){return e!==i?e:null}):e.map(this.tabs,function(e,t){return t!==i?t:null})),this._setupDisabled(s))},disable:function(i){var s=this.options.disabled;if(s!==!0){if(i===t)s=!0;else{if(i=this._getIndex(i),-1!==e.inArray(i,s))return;s=e.isArray(s)?e.merge([i],s).sort():[i]}this._setupDisabled(s)}},load:function(t,i){t=this._getIndex(t);var a=this,n=this.tabs.eq(t),r=n.find(".ui-tabs-anchor"),o=this._getPanelForTab(n),h={tab:n,panel:o};s(r[0])||(this.xhr=e.ajax(this._ajaxSettings(r,i,h)),this.xhr&&"canceled"!==this.xhr.statusText&&(n.addClass("ui-tabs-loading"),o.attr("aria-busy","true"),this.xhr.success(function(e){setTimeout(function(){o.html(e),a._trigger("load",i,h)},1)}).complete(function(e,t){setTimeout(function(){"abort"===t&&a.panels.stop(!1,!0),n.removeClass("ui-tabs-loading"),o.removeAttr("aria-busy"),e===a.xhr&&delete a.xhr},1)})))},_ajaxSettings:function(t,i,s){var a=this;return{url:t.attr("href"),beforeSend:function(t,n){return a._trigger("beforeLoad",i,e.extend({jqXHR:t,ajaxSettings:n},s))}}},_getPanelForTab:function(t){var i=e(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}}),e.uiBackCompat!==!1&&(e.ui.tabs.prototype._ui=function(e,t){return{tab:e,panel:t,index:this.anchors.index(e)}},e.widget("ui.tabs",e.ui.tabs,{url:function(e,t){this.anchors.eq(e).attr("href",t)}}),e.widget("ui.tabs",e.ui.tabs,{options:{ajaxOptions:null,cache:!1},_create:function(){this._super();var i=this;this._on({tabsbeforeload:function(s,a){return e.data(a.tab[0],"cache.tabs")?(s.preventDefault(),t):(a.jqXHR.success(function(){i.options.cache&&e.data(a.tab[0],"cache.tabs",!0)}),t)}})},_ajaxSettings:function(t,i,s){var a=this.options.ajaxOptions;return e.extend({},a,{error:function(e,t){try{a.error(e,t,s.tab.closest("li").index(),s.tab[0])}catch(i){}}},this._superApply(arguments))},_setOption:function(e,t){"cache"===e&&t===!1&&this.anchors.removeData("cache.tabs"),this._super(e,t)},_destroy:function(){this.anchors.removeData("cache.tabs"),this._super()},url:function(e){this.anchors.eq(e).removeData("cache.tabs"),this._superApply(arguments)}}),e.widget("ui.tabs",e.ui.tabs,{abort:function(){this.xhr&&this.xhr.abort()}}),e.widget("ui.tabs",e.ui.tabs,{options:{spinner:"<em>Loading&#8230;</em>"},_create:function(){this._super(),this._on({tabsbeforeload:function(e,t){if(e.target===this.element[0]&&this.options.spinner){var i=t.tab.find("span"),s=i.html();i.html(this.options.spinner),t.jqXHR.complete(function(){i.html(s)})}}})}}),e.widget("ui.tabs",e.ui.tabs,{options:{enable:null,disable:null},enable:function(t){var i,s=this.options;(t&&s.disabled===!0||e.isArray(s.disabled)&&-1!==e.inArray(t,s.disabled))&&(i=!0),this._superApply(arguments),i&&this._trigger("enable",null,this._ui(this.anchors[t],this.panels[t]))},disable:function(t){var i,s=this.options;(t&&s.disabled===!1||e.isArray(s.disabled)&&-1===e.inArray(t,s.disabled))&&(i=!0),this._superApply(arguments),i&&this._trigger("disable",null,this._ui(this.anchors[t],this.panels[t]))}}),e.widget("ui.tabs",e.ui.tabs,{options:{add:null,remove:null,tabTemplate:"<li><a href='#{href}'><span>#{label}</span></a></li>"},add:function(i,s,a){a===t&&(a=this.anchors.length);var n,r,o=this.options,h=e(o.tabTemplate.replace(/#\{href\}/g,i).replace(/#\{label\}/g,s)),l=i.indexOf("#")?this._tabId(h):i.replace("#","");return h.addClass("ui-state-default ui-corner-top").data("ui-tabs-destroy",!0),h.attr("aria-controls",l),n=a>=this.tabs.length,r=this.element.find("#"+l),r.length||(r=this._createPanel(l),n?a>0?r.insertAfter(this.panels.eq(-1)):r.appendTo(this.element):r.insertBefore(this.panels[a])),r.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").hide(),n?h.appendTo(this.tablist):h.insertBefore(this.tabs[a]),o.disabled=e.map(o.disabled,function(e){return e>=a?++e:e}),this.refresh(),1===this.tabs.length&&o.active===!1&&this.option("active",0),this._trigger("add",null,this._ui(this.anchors[a],this.panels[a])),this},remove:function(t){t=this._getIndex(t);var i=this.options,s=this.tabs.eq(t).remove(),a=this._getPanelForTab(s).remove();return s.hasClass("ui-tabs-active")&&this.anchors.length>2&&this._activate(t+(this.anchors.length>t+1?1:-1)),i.disabled=e.map(e.grep(i.disabled,function(e){return e!==t}),function(e){return e>=t?--e:e}),this.refresh(),this._trigger("remove",null,this._ui(s.find("a")[0],a[0])),this}}),e.widget("ui.tabs",e.ui.tabs,{length:function(){return this.anchors.length}}),e.widget("ui.tabs",e.ui.tabs,{options:{idPrefix:"ui-tabs-"},_tabId:function(t){var s=t.is("li")?t.find("a[href]"):t;return s=s[0],e(s).closest("li").attr("aria-controls")||s.title&&s.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF\-]/g,"")||this.options.idPrefix+i()}}),e.widget("ui.tabs",e.ui.tabs,{options:{panelTemplate:"<div></div>"},_createPanel:function(t){return e(this.options.panelTemplate).attr("id",t).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)}}),e.widget("ui.tabs",e.ui.tabs,{_create:function(){var e=this.options;null===e.active&&e.selected!==t&&(e.active=-1===e.selected?!1:e.selected),this._super(),e.selected=e.active,e.selected===!1&&(e.selected=-1)},_setOption:function(e,t){if("selected"!==e)return this._super(e,t);var i=this.options;this._super("active",-1===t?!1:t),i.selected=i.active,i.selected===!1&&(i.selected=-1)},_eventHandler:function(){this._superApply(arguments),this.options.selected=this.options.active,this.options.selected===!1&&(this.options.selected=-1)}}),e.widget("ui.tabs",e.ui.tabs,{options:{show:null,select:null},_create:function(){this._super(),this.options.active!==!1&&this._trigger("show",null,this._ui(this.active.find(".ui-tabs-anchor")[0],this._getPanelForTab(this.active)[0]))},_trigger:function(e,t,i){var s,a,n=this._superApply(arguments);return n?("beforeActivate"===e?(s=i.newTab.length?i.newTab:i.oldTab,a=i.newPanel.length?i.newPanel:i.oldPanel,n=this._super("select",t,{tab:s.find(".ui-tabs-anchor")[0],panel:a[0],index:s.closest("li").index()})):"activate"===e&&i.newTab.length&&(n=this._super("show",t,{tab:i.newTab.find(".ui-tabs-anchor")[0],panel:i.newPanel[0],index:i.newTab.closest("li").index()})),n):!1}}),e.widget("ui.tabs",e.ui.tabs,{select:function(e){if(e=this._getIndex(e),-1===e){if(!this.options.collapsible||-1===this.options.selected)return;e=this.options.selected}this.anchors.eq(e).trigger(this.options.event+this.eventNamespace)}}),function(){var t=0;e.widget("ui.tabs",e.ui.tabs,{options:{cookie:null},_create:function(){var e,t=this.options;null==t.active&&t.cookie&&(e=parseInt(this._cookie(),10),-1===e&&(e=!1),t.active=e),this._super()},_cookie:function(i){var s=[this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+ ++t)];return arguments.length&&(s.push(i===!1?-1:i),s.push(this.options.cookie)),e.cookie.apply(null,s)},_refresh:function(){this._super(),this.options.cookie&&this._cookie(this.options.active,this.options.cookie)},_eventHandler:function(){this._superApply(arguments),this.options.cookie&&this._cookie(this.options.active,this.options.cookie)},_destroy:function(){this._super(),this.options.cookie&&this._cookie(null,this.options.cookie)}})}(),e.widget("ui.tabs",e.ui.tabs,{_trigger:function(t,i,s){var a=e.extend({},s);return"load"===t&&(a.panel=a.panel[0],a.tab=a.tab.find(".ui-tabs-anchor")[0]),this._super(t,i,a)}}),e.widget("ui.tabs",e.ui.tabs,{options:{fx:null},_getFx:function(){var t,i,s=this.options.fx;return s&&(e.isArray(s)?(t=s[0],i=s[1]):t=i=s),s?{show:i,hide:t}:null},_toggle:function(e,i){function s(){n.running=!1,n._trigger("activate",e,i)}function a(){i.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),r.length&&h.show?r.animate(h.show,h.show.duration,function(){s()}):(r.show(),s())}var n=this,r=i.newPanel,o=i.oldPanel,h=this._getFx();return h?(n.running=!0,o.length&&h.hide?o.animate(h.hide,h.hide.duration,function(){i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),a()}):(i.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),o.hide(),a()),t):this._super(e,i)}}))})(jQuery);(function(e){function t(t,i){var s=(t.attr("aria-describedby")||"").split(/\s+/);s.push(i),t.data("ui-tooltip-id",i).attr("aria-describedby",e.trim(s.join(" ")))}function i(t){var i=t.data("ui-tooltip-id"),s=(t.attr("aria-describedby")||"").split(/\s+/),a=e.inArray(i,s);-1!==a&&s.splice(a,1),t.removeData("ui-tooltip-id"),s=e.trim(s.join(" ")),s?t.attr("aria-describedby",s):t.removeAttr("aria-describedby")}var s=0;e.widget("ui.tooltip",{version:"1.9.2",options:{content:function(){return e(this).attr("title")},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,tooltipClass:null,track:!1,close:null,open:null},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.options.disabled&&this._disable()},_setOption:function(t,i){var s=this;return"disabled"===t?(this[i?"_disable":"_enable"](),this.options[t]=i,void 0):(this._super(t,i),"content"===t&&e.each(this.tooltips,function(e,t){s._updateContent(t)}),void 0)},_disable:function(){var t=this;e.each(this.tooltips,function(i,s){var a=e.Event("blur");a.target=a.currentTarget=s[0],t.close(a,!0)}),this.element.find(this.options.items).andSelf().each(function(){var t=e(this);t.is("[title]")&&t.data("ui-tooltip-title",t.attr("title")).attr("title","")})},_enable:function(){this.element.find(this.options.items).andSelf().each(function(){var t=e(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))})},open:function(t){var i=this,s=e(t?t.target:this.element).closest(this.options.items);s.length&&!s.data("ui-tooltip-id")&&(s.attr("title")&&s.data("ui-tooltip-title",s.attr("title")),s.data("ui-tooltip-open",!0),t&&"mouseover"===t.type&&s.parents().each(function(){var t,s=e(this);s.data("ui-tooltip-open")&&(t=e.Event("blur"),t.target=t.currentTarget=this,i.close(t,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._updateContent(s,t))},_updateContent:function(e,t){var i,s=this.options.content,a=this,n=t?t.type:null;return"string"==typeof s?this._open(t,e,s):(i=s.call(e[0],function(i){e.data("ui-tooltip-open")&&a._delay(function(){t&&(t.type=n),this._open(t,e,i)})}),i&&this._open(t,e,i),void 0)},_open:function(i,s,a){function n(e){l.of=e,r.is(":hidden")||r.position(l)}var r,o,h,l=e.extend({},this.options.position);if(a){if(r=this._find(s),r.length)return r.find(".ui-tooltip-content").html(a),void 0;s.is("[title]")&&(i&&"mouseover"===i.type?s.attr("title",""):s.removeAttr("title")),r=this._tooltip(s),t(s,r.attr("id")),r.find(".ui-tooltip-content").html(a),this.options.track&&i&&/^mouse/.test(i.type)?(this._on(this.document,{mousemove:n}),n(i)):r.position(e.extend({of:s},this.options.position)),r.hide(),this._show(r,this.options.show),this.options.show&&this.options.show.delay&&(h=setInterval(function(){r.is(":visible")&&(n(l.of),clearInterval(h))},e.fx.interval)),this._trigger("open",i,{tooltip:r}),o={keyup:function(t){if(t.keyCode===e.ui.keyCode.ESCAPE){var i=e.Event(t);i.currentTarget=s[0],this.close(i,!0)}},remove:function(){this._removeTooltip(r)}},i&&"mouseover"!==i.type||(o.mouseleave="close"),i&&"focusin"!==i.type||(o.focusout="close"),this._on(!0,s,o)}},close:function(t){var s=this,a=e(t?t.currentTarget:this.element),n=this._find(a);this.closing||(a.data("ui-tooltip-title")&&a.attr("title",a.data("ui-tooltip-title")),i(a),n.stop(!0),this._hide(n,this.options.hide,function(){s._removeTooltip(e(this))}),a.removeData("ui-tooltip-open"),this._off(a,"mouseleave focusout keyup"),a[0]!==this.element[0]&&this._off(a,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&e.each(this.parents,function(t,i){e(i.element).attr("title",i.title),delete s.parents[t]}),this.closing=!0,this._trigger("close",t,{tooltip:n}),this.closing=!1)},_tooltip:function(t){var i="ui-tooltip-"+s++,a=e("<div>").attr({id:i,role:"tooltip"}).addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||""));return e("<div>").addClass("ui-tooltip-content").appendTo(a),a.appendTo(this.document[0].body),e.fn.bgiframe&&a.bgiframe(),this.tooltips[i]=t,a},_find:function(t){var i=t.data("ui-tooltip-id");return i?e("#"+i):e()},_removeTooltip:function(e){e.remove(),delete this.tooltips[e.attr("id")]},_destroy:function(){var t=this;e.each(this.tooltips,function(i,s){var a=e.Event("blur");a.target=a.currentTarget=s[0],t.close(a,!0),e("#"+i).remove(),s.data("ui-tooltip-title")&&(s.attr("title",s.data("ui-tooltip-title")),s.removeData("ui-tooltip-title"))})}})})(jQuery);jQuery.effects||function(e,t){var i=e.uiBackCompat!==!1,a="ui-effects-";e.effects={effect:{}},function(t,i){function a(e,t,i){var a=c[t.type]||{};return null==e?i||!t.def?null:t.def:(e=a.floor?~~e:parseFloat(e),isNaN(e)?t.def:a.mod?(e+a.mod)%a.mod:0>e?0:e>a.max?a.max:e)}function s(e){var a=u(),s=a._rgba=[];return e=e.toLowerCase(),m(l,function(t,n){var r,o=n.re.exec(e),h=o&&n.parse(o),l=n.space||"rgba";return h?(r=a[l](h),a[d[l].cache]=r[d[l].cache],s=a._rgba=r._rgba,!1):i}),s.length?("0,0,0,0"===s.join()&&t.extend(s,r.transparent),a):r[e]}function n(e,t,i){return i=(i+1)%1,1>6*i?e+6*(t-e)*i:1>2*i?t:2>3*i?e+6*(t-e)*(2/3-i):e}var r,o="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor".split(" "),h=/^([\-+])=\s*(\d+\.?\d*)/,l=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1],e[2],e[3],e[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,parse:function(e){return[2.55*e[1],2.55*e[2],2.55*e[3],e[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(e){return[e[1],e[2]/100,e[3]/100,e[4]]}}],u=t.Color=function(e,i,a,s){return new t.Color.fn.parse(e,i,a,s)},d={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},c={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},p=u.support={},f=t("<p>")[0],m=t.each;f.style.cssText="background-color:rgba(1,1,1,.5)",p.rgba=f.style.backgroundColor.indexOf("rgba")>-1,m(d,function(e,t){t.cache="_"+e,t.props.alpha={idx:3,type:"percent",def:1}}),u.fn=t.extend(u.prototype,{parse:function(n,o,h,l){if(n===i)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=t(n).css(o),o=i);var c=this,p=t.type(n),f=this._rgba=[];return o!==i&&(n=[n,o,h,l],p="array"),"string"===p?this.parse(s(n)||r._default):"array"===p?(m(d.rgba.props,function(e,t){f[t.idx]=a(n[t.idx],t)}),this):"object"===p?(n instanceof u?m(d,function(e,t){n[t.cache]&&(c[t.cache]=n[t.cache].slice())}):m(d,function(t,i){var s=i.cache;m(i.props,function(e,t){if(!c[s]&&i.to){if("alpha"===e||null==n[e])return;c[s]=i.to(c._rgba)}c[s][t.idx]=a(n[e],t,!0)}),c[s]&&0>e.inArray(null,c[s].slice(0,3))&&(c[s][3]=1,i.from&&(c._rgba=i.from(c[s])))}),this):i},is:function(e){var t=u(e),a=!0,s=this;return m(d,function(e,n){var r,o=t[n.cache];return o&&(r=s[n.cache]||n.to&&n.to(s._rgba)||[],m(n.props,function(e,t){return null!=o[t.idx]?a=o[t.idx]===r[t.idx]:i})),a}),a},_space:function(){var e=[],t=this;return m(d,function(i,a){t[a.cache]&&e.push(i)}),e.pop()},transition:function(e,t){var i=u(e),s=i._space(),n=d[s],r=0===this.alpha()?u("transparent"):this,o=r[n.cache]||n.to(r._rgba),h=o.slice();return i=i[n.cache],m(n.props,function(e,s){var n=s.idx,r=o[n],l=i[n],u=c[s.type]||{};null!==l&&(null===r?h[n]=l:(u.mod&&(l-r>u.mod/2?r+=u.mod:r-l>u.mod/2&&(r-=u.mod)),h[n]=a((l-r)*t+r,s)))}),this[s](h)},blend:function(e){if(1===this._rgba[3])return this;var i=this._rgba.slice(),a=i.pop(),s=u(e)._rgba;return u(t.map(i,function(e,t){return(1-a)*s[t]+a*e}))},toRgbaString:function(){var e="rgba(",i=t.map(this._rgba,function(e,t){return null==e?t>2?1:0:e});return 1===i[3]&&(i.pop(),e="rgb("),e+i.join()+")"},toHslaString:function(){var e="hsla(",i=t.map(this.hsla(),function(e,t){return null==e&&(e=t>2?1:0),t&&3>t&&(e=Math.round(100*e)+"%"),e});return 1===i[3]&&(i.pop(),e="hsl("),e+i.join()+")"},toHexString:function(e){var i=this._rgba.slice(),a=i.pop();return e&&i.push(~~(255*a)),"#"+t.map(i,function(e){return e=(e||0).toString(16),1===e.length?"0"+e:e}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),u.fn.parse.prototype=u.fn,d.hsla.to=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t,i,a=e[0]/255,s=e[1]/255,n=e[2]/255,r=e[3],o=Math.max(a,s,n),h=Math.min(a,s,n),l=o-h,u=o+h,d=.5*u;return t=h===o?0:a===o?60*(s-n)/l+360:s===o?60*(n-a)/l+120:60*(a-s)/l+240,i=0===d||1===d?d:.5>=d?l/u:l/(2-u),[Math.round(t)%360,i,d,null==r?1:r]},d.hsla.from=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t=e[0]/360,i=e[1],a=e[2],s=e[3],r=.5>=a?a*(1+i):a+i-a*i,o=2*a-r;return[Math.round(255*n(o,r,t+1/3)),Math.round(255*n(o,r,t)),Math.round(255*n(o,r,t-1/3)),s]},m(d,function(e,s){var n=s.props,r=s.cache,o=s.to,l=s.from;u.fn[e]=function(e){if(o&&!this[r]&&(this[r]=o(this._rgba)),e===i)return this[r].slice();var s,h=t.type(e),d="array"===h||"object"===h?e:arguments,c=this[r].slice();return m(n,function(e,t){var i=d["object"===h?e:t.idx];null==i&&(i=c[t.idx]),c[t.idx]=a(i,t)}),l?(s=u(l(c)),s[r]=c,s):u(c)},m(n,function(i,a){u.fn[i]||(u.fn[i]=function(s){var n,r=t.type(s),o="alpha"===i?this._hsla?"hsla":"rgba":e,l=this[o](),u=l[a.idx];return"undefined"===r?u:("function"===r&&(s=s.call(this,u),r=t.type(s)),null==s&&a.empty?this:("string"===r&&(n=h.exec(s),n&&(s=u+parseFloat(n[2])*("+"===n[1]?1:-1))),l[a.idx]=s,this[o](l)))})})}),m(o,function(e,i){t.cssHooks[i]={set:function(e,a){var n,r,o="";if("string"!==t.type(a)||(n=s(a))){if(a=u(n||a),!p.rgba&&1!==a._rgba[3]){for(r="backgroundColor"===i?e.parentNode:e;(""===o||"transparent"===o)&&r&&r.style;)try{o=t.css(r,"backgroundColor"),r=r.parentNode}catch(h){}a=a.blend(o&&"transparent"!==o?o:"_default")}a=a.toRgbaString()}try{e.style[i]=a}catch(l){}}},t.fx.step[i]=function(e){e.colorInit||(e.start=u(e.elem,i),e.end=u(e.end),e.colorInit=!0),t.cssHooks[i].set(e.elem,e.start.transition(e.end,e.pos))}}),t.cssHooks.borderColor={expand:function(e){var t={};return m(["Top","Right","Bottom","Left"],function(i,a){t["border"+a+"Color"]=e}),t}},r=t.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(jQuery),function(){function i(){var t,i,a=this.ownerDocument.defaultView?this.ownerDocument.defaultView.getComputedStyle(this,null):this.currentStyle,s={};if(a&&a.length&&a[0]&&a[a[0]])for(i=a.length;i--;)t=a[i],"string"==typeof a[t]&&(s[e.camelCase(t)]=a[t]);else for(t in a)"string"==typeof a[t]&&(s[t]=a[t]);return s}function a(t,i){var a,s,r={};for(a in i)s=i[a],t[a]!==s&&(n[a]||(e.fx.step[a]||!isNaN(parseFloat(s)))&&(r[a]=s));return r}var s=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};e.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,i){e.fx.step[i]=function(e){("none"!==e.end&&!e.setAttr||1===e.pos&&!e.setAttr)&&(jQuery.style(e.elem,i,e.end),e.setAttr=!0)}}),e.effects.animateClass=function(t,n,r,o){var h=e.speed(n,r,o);return this.queue(function(){var n,r=e(this),o=r.attr("class")||"",l=h.children?r.find("*").andSelf():r;l=l.map(function(){var t=e(this);return{el:t,start:i.call(this)}}),n=function(){e.each(s,function(e,i){t[i]&&r[i+"Class"](t[i])})},n(),l=l.map(function(){return this.end=i.call(this.el[0]),this.diff=a(this.start,this.end),this}),r.attr("class",o),l=l.map(function(){var t=this,i=e.Deferred(),a=jQuery.extend({},h,{queue:!1,complete:function(){i.resolve(t)}});return this.el.animate(this.diff,a),i.promise()}),e.when.apply(e,l.get()).done(function(){n(),e.each(arguments,function(){var t=this.el;e.each(this.diff,function(e){t.css(e,"")})}),h.complete.call(r[0])})})},e.fn.extend({_addClass:e.fn.addClass,addClass:function(t,i,a,s){return i?e.effects.animateClass.call(this,{add:t},i,a,s):this._addClass(t)},_removeClass:e.fn.removeClass,removeClass:function(t,i,a,s){return i?e.effects.animateClass.call(this,{remove:t},i,a,s):this._removeClass(t)},_toggleClass:e.fn.toggleClass,toggleClass:function(i,a,s,n,r){return"boolean"==typeof a||a===t?s?e.effects.animateClass.call(this,a?{add:i}:{remove:i},s,n,r):this._toggleClass(i,a):e.effects.animateClass.call(this,{toggle:i},a,s,n)},switchClass:function(t,i,a,s,n){return e.effects.animateClass.call(this,{add:i,remove:t},a,s,n)}})}(),function(){function s(t,i,a,s){return e.isPlainObject(t)&&(i=t,t=t.effect),t={effect:t},null==i&&(i={}),e.isFunction(i)&&(s=i,a=null,i={}),("number"==typeof i||e.fx.speeds[i])&&(s=a,a=i,i={}),e.isFunction(a)&&(s=a,a=null),i&&e.extend(t,i),a=a||i.duration,t.duration=e.fx.off?0:"number"==typeof a?a:a in e.fx.speeds?e.fx.speeds[a]:e.fx.speeds._default,t.complete=s||i.complete,t}function n(t){return!t||"number"==typeof t||e.fx.speeds[t]?!0:"string"!=typeof t||e.effects.effect[t]?!1:i&&e.effects[t]?!1:!0}e.extend(e.effects,{version:"1.9.2",save:function(e,t){for(var i=0;t.length>i;i++)null!==t[i]&&e.data(a+t[i],e[0].style[t[i]])},restore:function(e,i){var s,n;for(n=0;i.length>n;n++)null!==i[n]&&(s=e.data(a+i[n]),s===t&&(s=""),e.css(i[n],s))},setMode:function(e,t){return"toggle"===t&&(t=e.is(":hidden")?"show":"hide"),t},getBaseline:function(e,t){var i,a;switch(e[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=e[0]/t.height}switch(e[1]){case"left":a=0;break;case"center":a=.5;break;case"right":a=1;break;default:a=e[1]/t.width}return{x:a,y:i}},createWrapper:function(t){if(t.parent().is(".ui-effects-wrapper"))return t.parent();var i={width:t.outerWidth(!0),height:t.outerHeight(!0),"float":t.css("float")},a=e("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),s={width:t.width(),height:t.height()},n=document.activeElement;try{n.id}catch(r){n=document.body}return t.wrap(a),(t[0]===n||e.contains(t[0],n))&&e(n).focus(),a=t.parent(),"static"===t.css("position")?(a.css({position:"relative"}),t.css({position:"relative"})):(e.extend(i,{position:t.css("position"),zIndex:t.css("z-index")}),e.each(["top","left","bottom","right"],function(e,a){i[a]=t.css(a),isNaN(parseInt(i[a],10))&&(i[a]="auto")}),t.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),t.css(s),a.css(i).show()},removeWrapper:function(t){var i=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),(t[0]===i||e.contains(t[0],i))&&e(i).focus()),t},setTransition:function(t,i,a,s){return s=s||{},e.each(i,function(e,i){var n=t.cssUnit(i);n[0]>0&&(s[i]=n[0]*a+n[1])}),s}}),e.fn.extend({effect:function(){function t(t){function i(){e.isFunction(n)&&n.call(s[0]),e.isFunction(t)&&t()}var s=e(this),n=a.complete,r=a.mode;(s.is(":hidden")?"hide"===r:"show"===r)?i():o.call(s[0],a,i)}var a=s.apply(this,arguments),n=a.mode,r=a.queue,o=e.effects.effect[a.effect],h=!o&&i&&e.effects[a.effect];return e.fx.off||!o&&!h?n?this[n](a.duration,a.complete):this.each(function(){a.complete&&a.complete.call(this)}):o?r===!1?this.each(t):this.queue(r||"fx",t):h.call(this,{options:a,duration:a.duration,callback:a.complete,mode:a.mode})},_show:e.fn.show,show:function(e){if(n(e))return this._show.apply(this,arguments);var t=s.apply(this,arguments);return t.mode="show",this.effect.call(this,t)},_hide:e.fn.hide,hide:function(e){if(n(e))return this._hide.apply(this,arguments);var t=s.apply(this,arguments);return t.mode="hide",this.effect.call(this,t)},__toggle:e.fn.toggle,toggle:function(t){if(n(t)||"boolean"==typeof t||e.isFunction(t))return this.__toggle.apply(this,arguments);var i=s.apply(this,arguments);return i.mode="toggle",this.effect.call(this,i)},cssUnit:function(t){var i=this.css(t),a=[];return e.each(["em","px","%","pt"],function(e,t){i.indexOf(t)>0&&(a=[parseFloat(i),t])}),a}})}(),function(){var t={};e.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,i){t[i]=function(t){return Math.pow(t,e+2)}}),e.extend(t,{Sine:function(e){return 1-Math.cos(e*Math.PI/2)},Circ:function(e){return 1-Math.sqrt(1-e*e)},Elastic:function(e){return 0===e||1===e?e:-Math.pow(2,8*(e-1))*Math.sin((80*(e-1)-7.5)*Math.PI/15)},Back:function(e){return e*e*(3*e-2)},Bounce:function(e){for(var t,i=4;((t=Math.pow(2,--i))-1)/11>e;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*t-2)/22-e,2)}}),e.each(t,function(t,i){e.easing["easeIn"+t]=i,e.easing["easeOut"+t]=function(e){return 1-i(1-e)},e.easing["easeInOut"+t]=function(e){return.5>e?i(2*e)/2:1-i(-2*e+2)/2}})}()}(jQuery);(function(e){var t=/up|down|vertical/,i=/up|left|vertical|horizontal/;e.effects.effect.blind=function(a,s){var n,r,o,l=e(this),h=["position","top","bottom","left","right","height","width"],u=e.effects.setMode(l,a.mode||"hide"),d=a.direction||"up",c=t.test(d),p=c?"height":"width",m=c?"top":"left",f=i.test(d),g={},v="show"===u;l.parent().is(".ui-effects-wrapper")?e.effects.save(l.parent(),h):e.effects.save(l,h),l.show(),n=e.effects.createWrapper(l).css({overflow:"hidden"}),r=n[p](),o=parseFloat(n.css(m))||0,g[p]=v?r:0,f||(l.css(c?"bottom":"right",0).css(c?"top":"left","auto").css({position:"absolute"}),g[m]=v?o:r+o),v&&(n.css(p,0),f||n.css(m,o+r)),n.animate(g,{duration:a.duration,easing:a.easing,queue:!1,complete:function(){"hide"===u&&l.hide(),e.effects.restore(l,h),e.effects.removeWrapper(l),s()}})}})(jQuery);(function(e){e.effects.effect.bounce=function(t,i){var a,s,n,r=e(this),o=["position","top","bottom","left","right","height","width"],l=e.effects.setMode(r,t.mode||"effect"),h="hide"===l,u="show"===l,d=t.direction||"up",c=t.distance,p=t.times||5,m=2*p+(u||h?1:0),f=t.duration/m,g=t.easing,v="up"===d||"down"===d?"top":"left",y="up"===d||"left"===d,b=r.queue(),_=b.length;for((u||h)&&o.push("opacity"),e.effects.save(r,o),r.show(),e.effects.createWrapper(r),c||(c=r["top"===v?"outerHeight":"outerWidth"]()/3),u&&(n={opacity:1},n[v]=0,r.css("opacity",0).css(v,y?2*-c:2*c).animate(n,f,g)),h&&(c/=Math.pow(2,p-1)),n={},n[v]=0,a=0;p>a;a++)s={},s[v]=(y?"-=":"+=")+c,r.animate(s,f,g).animate(n,f,g),c=h?2*c:c/2;h&&(s={opacity:0},s[v]=(y?"-=":"+=")+c,r.animate(s,f,g)),r.queue(function(){h&&r.hide(),e.effects.restore(r,o),e.effects.removeWrapper(r),i()}),_>1&&b.splice.apply(b,[1,0].concat(b.splice(_,m+1))),r.dequeue()}})(jQuery);(function(e){e.effects.effect.clip=function(t,i){var a,s,n,r=e(this),o=["position","top","bottom","left","right","height","width"],l=e.effects.setMode(r,t.mode||"hide"),h="show"===l,u=t.direction||"vertical",d="vertical"===u,c=d?"height":"width",p=d?"top":"left",m={};e.effects.save(r,o),r.show(),a=e.effects.createWrapper(r).css({overflow:"hidden"}),s="IMG"===r[0].tagName?a:r,n=s[c](),h&&(s.css(c,0),s.css(p,n/2)),m[c]=h?n:0,m[p]=h?0:n/2,s.animate(m,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){h||r.hide(),e.effects.restore(r,o),e.effects.removeWrapper(r),i()}})}})(jQuery);(function(e){e.effects.effect.drop=function(t,i){var a,s=e(this),n=["position","top","bottom","left","right","opacity","height","width"],r=e.effects.setMode(s,t.mode||"hide"),o="show"===r,l=t.direction||"left",h="up"===l||"down"===l?"top":"left",u="up"===l||"left"===l?"pos":"neg",d={opacity:o?1:0};e.effects.save(s,n),s.show(),e.effects.createWrapper(s),a=t.distance||s["top"===h?"outerHeight":"outerWidth"](!0)/2,o&&s.css("opacity",0).css(h,"pos"===u?-a:a),d[h]=(o?"pos"===u?"+=":"-=":"pos"===u?"-=":"+=")+a,s.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===r&&s.hide(),e.effects.restore(s,n),e.effects.removeWrapper(s),i()}})}})(jQuery);(function(e){e.effects.effect.explode=function(t,i){function a(){b.push(this),b.length===d*c&&s()}function s(){p.css({visibility:"visible"}),e(b).remove(),f||p.hide(),i()}var n,r,o,l,h,u,d=t.pieces?Math.round(Math.sqrt(t.pieces)):3,c=d,p=e(this),m=e.effects.setMode(p,t.mode||"hide"),f="show"===m,g=p.show().css("visibility","hidden").offset(),v=Math.ceil(p.outerWidth()/c),y=Math.ceil(p.outerHeight()/d),b=[];for(n=0;d>n;n++)for(l=g.top+n*y,u=n-(d-1)/2,r=0;c>r;r++)o=g.left+r*v,h=r-(c-1)/2,p.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-r*v,top:-n*y}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:v,height:y,left:o+(f?h*v:0),top:l+(f?u*y:0),opacity:f?0:1}).animate({left:o+(f?0:h*v),top:l+(f?0:u*y),opacity:f?1:0},t.duration||500,t.easing,a)}})(jQuery);(function(e){e.effects.effect.fade=function(t,i){var a=e(this),s=e.effects.setMode(a,t.mode||"toggle");a.animate({opacity:s},{queue:!1,duration:t.duration,easing:t.easing,complete:i})}})(jQuery);(function(e){e.effects.effect.fold=function(t,i){var a,s,n=e(this),r=["position","top","bottom","left","right","height","width"],o=e.effects.setMode(n,t.mode||"hide"),l="show"===o,h="hide"===o,u=t.size||15,d=/([0-9]+)%/.exec(u),c=!!t.horizFirst,p=l!==c,m=p?["width","height"]:["height","width"],f=t.duration/2,g={},v={};e.effects.save(n,r),n.show(),a=e.effects.createWrapper(n).css({overflow:"hidden"}),s=p?[a.width(),a.height()]:[a.height(),a.width()],d&&(u=parseInt(d[1],10)/100*s[h?0:1]),l&&a.css(c?{height:0,width:u}:{height:u,width:0}),g[m[0]]=l?s[0]:u,v[m[1]]=l?s[1]:0,a.animate(g,f,t.easing).animate(v,f,t.easing,function(){h&&n.hide(),e.effects.restore(n,r),e.effects.removeWrapper(n),i()})}})(jQuery);(function(e){e.effects.effect.highlight=function(t,i){var a=e(this),s=["backgroundImage","backgroundColor","opacity"],n=e.effects.setMode(a,t.mode||"show"),r={backgroundColor:a.css("backgroundColor")};"hide"===n&&(r.opacity=0),e.effects.save(a,s),a.show().css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(r,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===n&&a.hide(),e.effects.restore(a,s),i()}})}})(jQuery);(function(e){e.effects.effect.pulsate=function(t,i){var a,s=e(this),n=e.effects.setMode(s,t.mode||"show"),r="show"===n,o="hide"===n,l=r||"hide"===n,h=2*(t.times||5)+(l?1:0),u=t.duration/h,d=0,c=s.queue(),p=c.length;for((r||!s.is(":visible"))&&(s.css("opacity",0).show(),d=1),a=1;h>a;a++)s.animate({opacity:d},u,t.easing),d=1-d;s.animate({opacity:d},u,t.easing),s.queue(function(){o&&s.hide(),i()}),p>1&&c.splice.apply(c,[1,0].concat(c.splice(p,h+1))),s.dequeue()}})(jQuery);(function(e){e.effects.effect.puff=function(t,i){var a=e(this),s=e.effects.setMode(a,t.mode||"hide"),n="hide"===s,r=parseInt(t.percent,10)||150,o=r/100,h={height:a.height(),width:a.width(),outerHeight:a.outerHeight(),outerWidth:a.outerWidth()};e.extend(t,{effect:"scale",queue:!1,fade:!0,mode:s,complete:i,percent:n?r:100,from:n?h:{height:h.height*o,width:h.width*o,outerHeight:h.outerHeight*o,outerWidth:h.outerWidth*o}}),a.effect(t)},e.effects.effect.scale=function(t,i){var a=e(this),s=e.extend(!0,{},t),n=e.effects.setMode(a,t.mode||"effect"),r=parseInt(t.percent,10)||(0===parseInt(t.percent,10)?0:"hide"===n?0:100),o=t.direction||"both",h=t.origin,l={height:a.height(),width:a.width(),outerHeight:a.outerHeight(),outerWidth:a.outerWidth()},u={y:"horizontal"!==o?r/100:1,x:"vertical"!==o?r/100:1};s.effect="size",s.queue=!1,s.complete=i,"effect"!==n&&(s.origin=h||["middle","center"],s.restore=!0),s.from=t.from||("show"===n?{height:0,width:0,outerHeight:0,outerWidth:0}:l),s.to={height:l.height*u.y,width:l.width*u.x,outerHeight:l.outerHeight*u.y,outerWidth:l.outerWidth*u.x},s.fade&&("show"===n&&(s.from.opacity=0,s.to.opacity=1),"hide"===n&&(s.from.opacity=1,s.to.opacity=0)),a.effect(s)},e.effects.effect.size=function(t,i){var a,s,n,r=e(this),o=["position","top","bottom","left","right","width","height","overflow","opacity"],h=["position","top","bottom","left","right","overflow","opacity"],l=["width","height","overflow"],u=["fontSize"],d=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],c=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],p=e.effects.setMode(r,t.mode||"effect"),f=t.restore||"effect"!==p,m=t.scale||"both",g=t.origin||["middle","center"],v=r.css("position"),y=f?o:h,b={height:0,width:0,outerHeight:0,outerWidth:0};"show"===p&&r.show(),a={height:r.height(),width:r.width(),outerHeight:r.outerHeight(),outerWidth:r.outerWidth()},"toggle"===t.mode&&"show"===p?(r.from=t.to||b,r.to=t.from||a):(r.from=t.from||("show"===p?b:a),r.to=t.to||("hide"===p?b:a)),n={from:{y:r.from.height/a.height,x:r.from.width/a.width},to:{y:r.to.height/a.height,x:r.to.width/a.width}},("box"===m||"both"===m)&&(n.from.y!==n.to.y&&(y=y.concat(d),r.from=e.effects.setTransition(r,d,n.from.y,r.from),r.to=e.effects.setTransition(r,d,n.to.y,r.to)),n.from.x!==n.to.x&&(y=y.concat(c),r.from=e.effects.setTransition(r,c,n.from.x,r.from),r.to=e.effects.setTransition(r,c,n.to.x,r.to))),("content"===m||"both"===m)&&n.from.y!==n.to.y&&(y=y.concat(u).concat(l),r.from=e.effects.setTransition(r,u,n.from.y,r.from),r.to=e.effects.setTransition(r,u,n.to.y,r.to)),e.effects.save(r,y),r.show(),e.effects.createWrapper(r),r.css("overflow","hidden").css(r.from),g&&(s=e.effects.getBaseline(g,a),r.from.top=(a.outerHeight-r.outerHeight())*s.y,r.from.left=(a.outerWidth-r.outerWidth())*s.x,r.to.top=(a.outerHeight-r.to.outerHeight)*s.y,r.to.left=(a.outerWidth-r.to.outerWidth)*s.x),r.css(r.from),("content"===m||"both"===m)&&(d=d.concat(["marginTop","marginBottom"]).concat(u),c=c.concat(["marginLeft","marginRight"]),l=o.concat(d).concat(c),r.find("*[width]").each(function(){var i=e(this),a={height:i.height(),width:i.width(),outerHeight:i.outerHeight(),outerWidth:i.outerWidth()};f&&e.effects.save(i,l),i.from={height:a.height*n.from.y,width:a.width*n.from.x,outerHeight:a.outerHeight*n.from.y,outerWidth:a.outerWidth*n.from.x},i.to={height:a.height*n.to.y,width:a.width*n.to.x,outerHeight:a.height*n.to.y,outerWidth:a.width*n.to.x},n.from.y!==n.to.y&&(i.from=e.effects.setTransition(i,d,n.from.y,i.from),i.to=e.effects.setTransition(i,d,n.to.y,i.to)),n.from.x!==n.to.x&&(i.from=e.effects.setTransition(i,c,n.from.x,i.from),i.to=e.effects.setTransition(i,c,n.to.x,i.to)),i.css(i.from),i.animate(i.to,t.duration,t.easing,function(){f&&e.effects.restore(i,l)})})),r.animate(r.to,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){0===r.to.opacity&&r.css("opacity",r.from.opacity),"hide"===p&&r.hide(),e.effects.restore(r,y),f||("static"===v?r.css({position:"relative",top:r.to.top,left:r.to.left}):e.each(["top","left"],function(e,t){r.css(t,function(t,i){var a=parseInt(i,10),s=e?r.to.left:r.to.top;return"auto"===i?s+"px":a+s+"px"})})),e.effects.removeWrapper(r),i()}})}})(jQuery);(function(e){e.effects.effect.shake=function(t,i){var a,s=e(this),n=["position","top","bottom","left","right","height","width"],r=e.effects.setMode(s,t.mode||"effect"),o=t.direction||"left",h=t.distance||20,l=t.times||3,u=2*l+1,d=Math.round(t.duration/u),c="up"===o||"down"===o?"top":"left",p="up"===o||"left"===o,f={},m={},g={},v=s.queue(),y=v.length;for(e.effects.save(s,n),s.show(),e.effects.createWrapper(s),f[c]=(p?"-=":"+=")+h,m[c]=(p?"+=":"-=")+2*h,g[c]=(p?"-=":"+=")+2*h,s.animate(f,d,t.easing),a=1;l>a;a++)s.animate(m,d,t.easing).animate(g,d,t.easing);s.animate(m,d,t.easing).animate(f,d/2,t.easing).queue(function(){"hide"===r&&s.hide(),e.effects.restore(s,n),e.effects.removeWrapper(s),i()}),y>1&&v.splice.apply(v,[1,0].concat(v.splice(y,u+1))),s.dequeue()}})(jQuery);(function(e){e.effects.effect.slide=function(t,i){var a,s=e(this),n=["position","top","bottom","left","right","width","height"],r=e.effects.setMode(s,t.mode||"show"),o="show"===r,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h,d={};e.effects.save(s,n),s.show(),a=t.distance||s["top"===l?"outerHeight":"outerWidth"](!0),e.effects.createWrapper(s).css({overflow:"hidden"}),o&&s.css(l,u?isNaN(a)?"-"+a:-a:a),d[l]=(o?u?"+=":"-=":u?"-=":"+=")+a,s.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===r&&s.hide(),e.effects.restore(s,n),e.effects.removeWrapper(s),i()}})}})(jQuery);(function(e){e.effects.effect.transfer=function(t,i){var a=e(this),s=e(t.to),n="fixed"===s.css("position"),r=e("body"),o=n?r.scrollTop():0,h=n?r.scrollLeft():0,l=s.offset(),u={top:l.top-o,left:l.left-h,height:s.innerHeight(),width:s.innerWidth()},d=a.offset(),c=e('<div class="ui-effects-transfer"></div>').appendTo(document.body).addClass(t.className).css({top:d.top-o,left:d.left-h,height:a.innerHeight(),width:a.innerWidth(),position:n?"fixed":"absolute"}).animate(u,t.duration,t.easing,function(){c.remove(),i()})}})(jQuery); \ No newline at end of file
diff --git a/plugins/jqueryui/js/jquery-ui-accessible-datepicker.js b/plugins/jqueryui/js/jquery-ui-accessible-datepicker.js
new file mode 100644
index 000000000..1c79e13bd
--- /dev/null
+++ b/plugins/jqueryui/js/jquery-ui-accessible-datepicker.js
@@ -0,0 +1,214 @@
+/*! jQuery UI Accessible Datepicker extension
+* (to be appended to jquery-ui-*.custom.min.js)
+*
+* @licstart The following is the entire license notice for the
+* JavaScript code in this page.
+*
+* Copyright 2014 Kolab Systems AG
+*
+* The JavaScript code in this page is free software: you can
+* redistribute it and/or modify it under the terms of the GNU
+* General Public License (GNU GPL) as published by the Free Software
+* Foundation, either version 3 of the License, or (at your option)
+* any later version. The code is distributed WITHOUT ANY WARRANTY;
+* without even the implied warranty of MERCHANTABILITY or FITNESS
+* FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
+*
+* As additional permission under GNU GPL version 3 section 7, you
+* may distribute non-source (e.g., minimized or compacted) forms of
+* that code without the copy of the GNU GPL normally required by
+* section 4, provided you include this license notice and a URL
+* through which recipients can access the Corresponding Source.
+*
+* @licend The above is the entire license notice
+* for the JavaScript code in this page.
+*/
+
+(function($, undefined) {
+
+// references to super class methods
+var __newInst = $.datepicker._newInst;
+var __updateDatepicker = $.datepicker._updateDatepicker;
+var __connectDatepicker = $.datepicker._connectDatepicker;
+var __showDatepicker = $.datepicker._showDatepicker;
+var __hideDatepicker = $.datepicker._hideDatepicker;
+
+// "extend" singleton instance methods
+$.extend($.datepicker, {
+
+ /* Create a new instance object */
+ _newInst: function(target, inline) {
+ var that = this, inst = __newInst.call(this, target, inline);
+
+ if (inst.inline) {
+ // attach keyboard event handler
+ inst.dpDiv.on('keydown.datepicker', '.ui-datepicker-calendar', function(event) {
+ // we're only interested navigation keys
+ if ($.inArray(event.keyCode, [ 13, 33, 34, 35, 36, 37, 38, 39, 40]) == -1) {
+ return;
+ }
+ event.stopPropagation();
+ event.preventDefault();
+ inst._hasfocus = true;
+
+ var activeCell;
+ switch (event.keyCode) {
+ case $.ui.keyCode.ENTER:
+ if ((activeCell = $('.' + that._dayOverClass, inst.dpDiv).get(0) || $('.' + that._currentClass, inst.dpDiv).get(0))) {
+ that._selectDay(inst.input, inst.selectedMonth, inst.selectedYear, activeCell);
+ }
+ break;
+
+ case $.ui.keyCode.PAGE_UP:
+ that._adjustDate(inst.input, -that._get(inst, 'stepMonths'), 'M');
+ break;
+ case $.ui.keyCode.PAGE_DOWN:
+ that._adjustDate(inst.input, that._get(inst, 'stepMonths'), 'M');
+ break;
+
+ default:
+ return that._cursorKeydown(event, inst);
+ }
+ })
+ .attr('role', 'region')
+ .attr('aria-labelledby', inst.id + '-dp-title');
+ }
+ else {
+ var widgetId = inst.dpDiv.attr('id') || inst.id + '-dp-widget';
+ inst.dpDiv.attr('id', widgetId)
+ .attr('aria-hidden', 'true')
+ .attr('aria-labelledby', inst.id + '-dp-title');
+
+ $(inst.input).attr('aria-haspopup', 'true')
+ .attr('aria-expanded', 'false')
+ .attr('aria-owns', widgetId);
+ }
+
+ return inst;
+ },
+
+ /* Attach the date picker to an input field */
+ _connectDatepicker: function(target, inst) {
+ __connectDatepicker.call(this, target, inst);
+
+ var that = this;
+
+ // register additional keyboard events to control date selection with cursor keys
+ $(target).unbind('keyup.datepicker-extended').bind('keyup.datepicker-extended', function(event) {
+ var inc = 1;
+ switch (event.keyCode) {
+ case 109:
+ case 189: // "minus"
+ inc = -1;
+ case 107:
+ case 187: // "plus"
+ that._adjustInstDate(inst, inc, 'D');
+ that._selectDate(target, that._formatDate(inst, inst.selectedDay, inst.selectedMonth, inst.selectedYear));
+ break;
+
+ case $.ui.keyCode.UP:
+ case $.ui.keyCode.DOWN:
+ // unfold datepicker if not visible
+ if ($.datepicker._lastInput !== target && !$.datepicker._isDisabledDatepicker(target)) {
+ that._showDatepicker(event);
+ event.stopPropagation();
+ event.preventDefault();
+ return false;
+ }
+
+ default:
+ if (!$.datepicker._isDisabledDatepicker(target) && !event.ctrlKey && !event.metaKey) {
+ return that._cursorKeydown(event, inst);
+ }
+ }
+ })
+ .attr('autocomplete', 'off');
+ },
+
+ /* Handle keyboard event on datepicker widget */
+ _cursorKeydown: function(event, inst) {
+ inst._keyEvent = true;
+
+ var isRTL = inst.dpDiv.hasClass('ui-datepicker-rtl');
+
+ switch (event.keyCode) {
+ case $.ui.keyCode.LEFT:
+ this._adjustDate(inst.input, (isRTL ? +1 : -1), 'D');
+ break;
+ case $.ui.keyCode.RIGHT:
+ this._adjustDate(inst.input, (isRTL ? -1 : +1), 'D');
+ break;
+ case $.ui.keyCode.UP:
+ this._adjustDate(inst.input, -7, 'D');
+ break;
+ case $.ui.keyCode.DOWN:
+ this._adjustDate(inst.input, +7, 'D');
+ break;
+ case $.ui.keyCode.HOME:
+ // TODO: jump to first of month
+ break;
+ case $.ui.keyCode.END:
+ // TODO: jump to end of month
+ break;
+ }
+
+ return true;
+ },
+
+ /* Pop-up the date picker for a given input field */
+ _showDatepicker: function(input) {
+ input = input.target || input;
+ __showDatepicker.call(this, input);
+
+ var inst = $.datepicker._getInst(input);
+ if (inst && $.datepicker._datepickerShowing) {
+ inst.dpDiv.attr('aria-hidden', 'false');
+ $(input).attr('aria-expanded', 'true');
+ }
+ },
+
+ /* Hide the date picker from view */
+ _hideDatepicker: function(input) {
+ __hideDatepicker.call(this, input);
+
+ var inst = this._curInst;;
+ if (inst && !$.datepicker._datepickerShowing) {
+ inst.dpDiv.attr('aria-hidden', 'true');
+ $(inst.input).attr('aria-expanded', 'false');
+ }
+ },
+
+ /* Render the date picker content */
+ _updateDatepicker: function(inst) {
+ __updateDatepicker.call(this, inst);
+
+ var activeCell = $('.' + this._dayOverClass, inst.dpDiv).get(0) || $('.' + this._currentClass, inst.dpDiv).get(0);
+ if (activeCell) {
+ activeCell = $(activeCell);
+ activeCell.attr('id', inst.id + '-day-' + activeCell.text());
+ }
+
+ // allow focus on main container only
+ inst.dpDiv.find('.ui-datepicker-calendar')
+ .attr('tabindex', inst.inline ? '0' : '-1')
+ .attr('role', 'grid')
+ .attr('aria-readonly', 'true')
+ .attr('aria-activedescendant', activeCell ? activeCell.attr('id') : '')
+ .find('td').attr('role', 'gridcell').attr('aria-selected', 'false')
+ .find('a').attr('tabindex', '-1');
+
+ $('.ui-datepicker-current-day', inst.dpDiv).attr('aria-selected', 'true');
+
+ inst.dpDiv.find('.ui-datepicker-title')
+ .attr('id', inst.id + '-dp-title')
+
+ // set focus again after update
+ if (inst._hasfocus) {
+ inst.dpDiv.find('.ui-datepicker-calendar').focus();
+ inst._hasfocus = false;
+ }
+ }
+
+});
+
+}(jQuery)); \ No newline at end of file
diff --git a/plugins/jqueryui/package.xml b/plugins/jqueryui/package.xml
deleted file mode 100644
index 10903e8c5..000000000
--- a/plugins/jqueryui/package.xml
+++ /dev/null
@@ -1,176 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<package xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" packagerversion="1.9.0" version="2.0" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0
- http://pear.php.net/dtd/tasks-1.0.xsd
- http://pear.php.net/dtd/package-2.0
- http://pear.php.net/dtd/package-2.0.xsd">
- <name>jqueryui</name>
- <channel>pear.roundcube.net</channel>
- <summary>jQuery-UI library</summary>
- <description>
- Plugin adds the complete jQuery-UI library including the smoothness
- theme to Roundcube. This allows other plugins to use jQuery-UI without
- having to load their own version. The benefit of using one central jQuery-UI
- is that we wont run into problems of conflicting jQuery libraries being
- loaded. All plugins that want to use jQuery-UI should use this plugin as
- a requirement.
- </description>
- <lead>
- <name>Thomas Bruederli</name>
- <user>thomascube</user>
- <email>roundcube@gmail.com</email>
- <active>yes</active>
- </lead>
- <date>2014-04-07</date>
- <version>
- <release>1.9.2</release>
- <api>1.9</api>
- </version>
- <stability>
- <release>stable</release>
- <api>stable</api>
- </stability>
- <license uri="http://www.gnu.org/licenses/gpl.html">GNU GPLv3+</license>
- <notes>-</notes>
- <contents>
- <dir baseinstalldir="/" name="/">
- <file name="jqueryui.php" role="php">
- <tasks:replace from="@name@" to="name" type="package-info"/>
- <tasks:replace from="@package_version@" to="version" type="package-info"/>
- </file>
- <file name="README" role="data"></file>
- <file name="config.inc.php.dist" role="data"></file>
-
- <file name="js/jquery-ui-1.9.1.custom.min.js" role="data"></file>
- <file name="js/jquery.miniColors.min.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-af.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-ar-DZ.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-ar.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-az.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-bg.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-bz.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-ca.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-cs.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-cy-GB.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-da.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-de-CH.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-de.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-el.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-en-AU.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-en-GB.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-en-NZ.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-eo.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-es.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-et.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-eu.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-fa.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-fi.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-fo.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-fr-CH.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-fr.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-gl.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-he.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-hi.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-hr.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-hu.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-hy.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-id.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-is.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-it.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-ja.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-ka.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-kk.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-km.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-ko.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-kz.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-lt.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-lv.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-mk.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-ml.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-ms.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-nl-BE.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-nl.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-no.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-pl.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-pt-BR.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-pt.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-rm.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-ro.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-ru.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-sk.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-sl.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-sq.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-sr.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-sr-SR.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-sv.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-ta.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-th.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-tj.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-tr.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-uk.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-vi.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-zh-CN.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-zh-HK.js" role="data"></file>
- <file name="js/i18n/jquery.ui.datepicker-zh-TW.js" role="data"></file>
-
- <file name="themes/classic/jquery-ui-1.9.1.custom.css" role="data"></file>
- <file name="themes/classic/roundcube-custom.diff" role="data"></file>
- <file name="themes/classic/images/buttongradient.png" role="data"></file>
- <file name="themes/classic/images/ui-bg_flat_90_cc3333_40x100.png" role="data"></file>
- <file name="themes/classic/images/ui-bg_highlight-hard_90_f4f4f4_1x100.png" role="data"></file>
- <file name="themes/classic/images/ui-icons_cc3333_256x240.png" role="data"></file>
- <file name="themes/classic/images/listheader.png" role="data"></file>
- <file name="themes/classic/images/ui-bg_glass_95_fef1ec_1x400.png" role="data"></file>
- <file name="themes/classic/images/ui-icons_000000_256x240.png" role="data"></file>
- <file name="themes/classic/images/ui-icons_dddddd_256x240.png" role="data"></file>
- <file name="themes/classic/images/ui-bg_flat_0_aaaaaa_40x100.png" role="data"></file>
- <file name="themes/classic/images/ui-bg_highlight-hard_90_a3a3a3_1x100.png" role="data"></file>
- <file name="themes/classic/images/ui-icons_333333_256x240.png" role="data"></file>
- <file name="themes/classic/images/ui-bg_flat_75_ffffff_40x100.png" role="data"></file>
- <file name="themes/classic/images/ui-bg_highlight-hard_90_e6e6e7_1x100.png" role="data"></file>
- <file name="themes/classic/images/ui-icons_666666_256x240.png" role="data"></file>
-
- <file name="themes/larry/jquery.miniColors.css" role="data"></file>
- <file name="themes/larry/images/minicolors-all.png" role="data"></file>
- <file name="themes/larry/images/minicolors-handles.gif" role="data"></file>
- <file name="themes/larry/images/ui-bg_highlight-hard_55_b0ccd7_1x100.png" role="data"></file>
- <file name="themes/larry/images/ui-bg_highlight-hard_65_ffffff_1x100.png" role="data"></file>
- <file name="themes/larry/images/ui-bg_highlight-hard_75_eaeaea_1x100.png" role="data"></file>
- <file name="themes/larry/images/ui-bg_highlight-hard_75_f8f8f8_1x100.png" role="data"></file>
- <file name="themes/larry/images/ui-bg_highlight-soft_75_fafafa_1x100.png" role="data"></file>
- <file name="themes/larry/images/ui-bg_highlight-soft_90_e4e4e4_1x100.png" role="data"></file>
- <file name="themes/larry/images/ui-dialog-close.png" role="data"></file>
- <file name="themes/larry/images/ui-icons_004458_256x240.png" role="data"></file>
- <file name="themes/larry/images/ui-icons_d7211e_256x240.png" role="data"></file>
- <file name="themes/larry/images/ui-icons-datepicker.png" role="data"></file>
-
- <file name="themes/redmond/jquery-ui-1.9.1.custom.css" role="data"></file>
- <file name="themes/redmond/images/ui-bg_flat_0_aaaaaa_40x100.png" role="data"></file>
- <file name="themes/redmond/images/ui-bg_glass_95_fef1ec_1x400.png" role="data"></file>
- <file name="themes/redmond/images/ui-icons_217bc0_256x240.png" role="data"></file>
- <file name="themes/redmond/images/ui-icons_cd0a0a_256x240.png" role="data"></file>
- <file name="themes/redmond/images/ui-bg_flat_55_fbec88_40x100.png" role="data"></file>
- <file name="themes/redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png" role="data"></file>
- <file name="themes/redmond/images/ui-icons_2e83ff_256x240.png" role="data"></file>
- <file name="themes/redmond/images/ui-icons_d8e7f3_256x240.png" role="data"></file>
- <file name="themes/redmond/images/ui-bg_glass_75_d0e5f5_1x400.png" role="data"></file>
- <file name="themes/redmond/images/ui-bg_inset-hard_100_f5f8f9_1x100.png" role="data"></file>
- <file name="themes/redmond/images/ui-icons_469bdd_256x240.png" role="data"></file>
- <file name="themes/redmond/images/ui-icons_f9bd01_256x240.png" role="data"></file>
- <file name="themes/redmond/images/ui-bg_glass_85_dfeffc_1x400.png" role="data"></file>
- <file name="themes/redmond/images/ui-bg_inset-hard_100_fcfdfd_1x100.png" role="data"></file>
- <file name="themes/redmond/images/ui-icons_6da8d5_256x240.png" role="data"></file>
- </dir>
- <!-- / -->
- </contents>
- <dependencies>
- <required>
- <php>
- <min>5.2.1</min>
- </php>
- <pearinstaller>
- <min>1.7.0</min>
- </pearinstaller>
- </required>
- </dependencies>
- <phprelease/>
-</package>
diff --git a/plugins/jqueryui/themes/classic/images/animated-overlay.gif b/plugins/jqueryui/themes/classic/images/animated-overlay.gif
new file mode 100755
index 000000000..d441f75eb
--- /dev/null
+++ b/plugins/jqueryui/themes/classic/images/animated-overlay.gif
Binary files differ
diff --git a/plugins/jqueryui/themes/classic/jquery-ui-1.10.4.custom.css b/plugins/jqueryui/themes/classic/jquery-ui-1.10.4.custom.css
new file mode 100755
index 000000000..4ead5aaf2
--- /dev/null
+++ b/plugins/jqueryui/themes/classic/jquery-ui-1.10.4.custom.css
@@ -0,0 +1,1223 @@
+/*! jQuery UI - v1.10.4 - 2014-06-17
+* http://jqueryui.com
+* Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css, jquery.ui.theme.css
+* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande%2C%20Verdana%2C%20Arial%2C%20Helvetica%2C%20sans-serif&fwDefault=normal&fsDefault=1em&cornerRadius=0&bgColorHeader=f4f4f4&bgTextureHeader=highlight_hard&bgImgOpacityHeader=90&borderColorHeader=999999&fcHeader=333333&iconColorHeader=333333&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=000000&iconColorContent=000000&bgColorDefault=e6e6e7&bgTextureDefault=highlight_hard&bgImgOpacityDefault=90&borderColorDefault=aaaaaa&fcDefault=000000&iconColorDefault=666666&bgColorHover=e6e6e7&bgTextureHover=highlight_hard&bgImgOpacityHover=90&borderColorHover=999999&fcHover=000000&iconColorHover=333333&bgColorActive=a3a3a3&bgTextureActive=highlight_hard&bgImgOpacityActive=90&borderColorActive=a4a4a4&fcActive=000000&iconColorActive=333333&bgColorHighlight=cc3333&bgTextureHighlight=flat&bgImgOpacityHighlight=90&borderColorHighlight=cc3333&fcHighlight=ffffff&iconColorHighlight=dddddd&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cc3333&fcError=cc3333&iconColorError=cc3333&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=35&thicknessShadow=6px&offsetTopShadow=-6px&offsetLeftShadow=-6px&cornerRadiusShadow=6px&ctl=themeroller
+* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden {
+ display: none;
+}
+.ui-helper-hidden-accessible {
+ border: 0;
+ clip: rect(0 0 0 0);
+ height: 1px;
+ margin: -1px;
+ overflow: hidden;
+ padding: 0;
+ position: absolute;
+ width: 1px;
+}
+.ui-helper-reset {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ outline: 0;
+ line-height: 1.3;
+ text-decoration: none;
+ font-size: 100%;
+ list-style: none;
+}
+.ui-helper-clearfix:before,
+.ui-helper-clearfix:after {
+ content: "";
+ display: table;
+ border-collapse: collapse;
+}
+.ui-helper-clearfix:after {
+ clear: both;
+}
+.ui-helper-clearfix {
+ min-height: 0; /* support: IE7 */
+}
+.ui-helper-zfix {
+ width: 100%;
+ height: 100%;
+ top: 0;
+ left: 0;
+ position: absolute;
+ opacity: 0;
+ filter:Alpha(Opacity=0);
+}
+
+.ui-front {
+ z-index: 100;
+}
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled {
+ cursor: default !important;
+}
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon {
+ display: block;
+ text-indent: -99999px;
+ overflow: hidden;
+ background-repeat: no-repeat;
+}
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay {
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+}
+.ui-resizable {
+ position: relative;
+}
+.ui-resizable-handle {
+ position: absolute;
+ font-size: 0.1px;
+ display: block;
+}
+.ui-resizable-disabled .ui-resizable-handle,
+.ui-resizable-autohide .ui-resizable-handle {
+ display: none;
+}
+.ui-resizable-n {
+ cursor: n-resize;
+ height: 7px;
+ width: 100%;
+ top: -5px;
+ left: 0;
+}
+.ui-resizable-s {
+ cursor: s-resize;
+ height: 7px;
+ width: 100%;
+ bottom: -5px;
+ left: 0;
+}
+.ui-resizable-e {
+ cursor: e-resize;
+ width: 7px;
+ right: -5px;
+ top: 0;
+ height: 100%;
+}
+.ui-resizable-w {
+ cursor: w-resize;
+ width: 7px;
+ left: -5px;
+ top: 0;
+ height: 100%;
+}
+.ui-resizable-se {
+ cursor: se-resize;
+ width: 12px;
+ height: 12px;
+ right: 1px;
+ bottom: 1px;
+}
+.ui-resizable-sw {
+ cursor: sw-resize;
+ width: 9px;
+ height: 9px;
+ left: -5px;
+ bottom: -5px;
+}
+.ui-resizable-nw {
+ cursor: nw-resize;
+ width: 9px;
+ height: 9px;
+ left: -5px;
+ top: -5px;
+}
+.ui-resizable-ne {
+ cursor: ne-resize;
+ width: 9px;
+ height: 9px;
+ right: -5px;
+ top: -5px;
+}
+.ui-selectable-helper {
+ position: absolute;
+ z-index: 100;
+ border: 1px dotted black;
+}
+.ui-accordion .ui-accordion-header {
+ display: block;
+ cursor: pointer;
+ position: relative;
+ margin-top: 2px;
+ padding: .5em .5em .5em .7em;
+ min-height: 0; /* support: IE7 */
+}
+.ui-accordion .ui-accordion-icons {
+ padding-left: 2.2em;
+}
+.ui-accordion .ui-accordion-noicons {
+ padding-left: .7em;
+}
+.ui-accordion .ui-accordion-icons .ui-accordion-icons {
+ padding-left: 2.2em;
+}
+.ui-accordion .ui-accordion-header .ui-accordion-header-icon {
+ position: absolute;
+ left: .5em;
+ top: 50%;
+ margin-top: -8px;
+}
+.ui-accordion .ui-accordion-content {
+ padding: 1em 2.2em;
+ border-top: 0;
+ overflow: auto;
+}
+.ui-autocomplete {
+ position: absolute;
+ top: 0;
+ left: 0;
+ cursor: default;
+}
+.ui-button {
+ display: inline-block;
+ position: relative;
+ padding: 0;
+ line-height: normal;
+ margin-right: .1em;
+ cursor: pointer;
+ vertical-align: middle;
+ text-align: center;
+ overflow: visible; /* removes extra width in IE */
+}
+.ui-button,
+.ui-button:link,
+.ui-button:visited,
+.ui-button:hover,
+.ui-button:active {
+ text-decoration: none;
+}
+/* to make room for the icon, a width needs to be set here */
+.ui-button-icon-only {
+ width: 2.2em;
+}
+/* button elements seem to need a little more width */
+button.ui-button-icon-only {
+ width: 2.4em;
+}
+.ui-button-icons-only {
+ width: 3.4em;
+}
+button.ui-button-icons-only {
+ width: 3.7em;
+}
+
+button.ui-button-text-only,
+a.ui-button-text-only {
+ background-image: url("images/buttongradient.png") !important;
+}
+
+/* button text element */
+.ui-button .ui-button-text {
+ display: block;
+ line-height: normal;
+}
+.ui-button-text-only .ui-button-text {
+ padding: .3em 1em;
+}
+.ui-button-icon-only .ui-button-text,
+.ui-button-icons-only .ui-button-text {
+ padding: .4em;
+ text-indent: -9999999px;
+}
+.ui-button-text-icon-primary .ui-button-text,
+.ui-button-text-icons .ui-button-text {
+ padding: .4em 1em .4em 2.1em;
+}
+.ui-button-text-icon-secondary .ui-button-text,
+.ui-button-text-icons .ui-button-text {
+ padding: .4em 2.1em .4em 1em;
+}
+.ui-button-text-icons .ui-button-text {
+ padding-left: 2.1em;
+ padding-right: 2.1em;
+}
+/* no icon support for input elements, provide padding by default */
+input.ui-button {
+ padding: .4em 1em;
+}
+
+/* button icon element(s) */
+.ui-button-icon-only .ui-icon,
+.ui-button-text-icon-primary .ui-icon,
+.ui-button-text-icon-secondary .ui-icon,
+.ui-button-text-icons .ui-icon,
+.ui-button-icons-only .ui-icon {
+ position: absolute;
+ top: 50%;
+ margin-top: -8px;
+}
+.ui-button-icon-only .ui-icon {
+ left: 50%;
+ margin-left: -8px;
+}
+.ui-button-text-icon-primary .ui-button-icon-primary,
+.ui-button-text-icons .ui-button-icon-primary,
+.ui-button-icons-only .ui-button-icon-primary {
+ left: .5em;
+}
+.ui-button-text-icon-secondary .ui-button-icon-secondary,
+.ui-button-text-icons .ui-button-icon-secondary,
+.ui-button-icons-only .ui-button-icon-secondary {
+ right: .5em;
+}
+
+/* button sets */
+.ui-buttonset {
+ margin-right: 7px;
+}
+.ui-buttonset .ui-button {
+ margin-left: 0;
+ margin-right: -.3em;
+}
+
+/* workarounds */
+/* reset extra padding in Firefox, see h5bp.com/l */
+input.ui-button::-moz-focus-inner,
+button.ui-button::-moz-focus-inner {
+ border: 0;
+ padding: 0;
+}
+.ui-datepicker {
+ width: 17em;
+ padding: .2em .2em 0;
+ display: none;
+ box-shadow: 1px 1px 18px #999;
+ -moz-box-shadow: 1px 1px 12px #999;
+ -webkit-box-shadow: #999 1px 1px 12px;
+}
+.ui-datepicker .ui-datepicker-header {
+ position: relative;
+ padding: .2em 0;
+}
+.ui-datepicker .ui-datepicker-prev,
+.ui-datepicker .ui-datepicker-next {
+ position: absolute;
+ top: 2px;
+ width: 1.8em;
+ height: 1.8em;
+}
+.ui-datepicker .ui-datepicker-prev-hover,
+.ui-datepicker .ui-datepicker-next-hover {
+ top: 1px;
+}
+.ui-datepicker .ui-datepicker-prev {
+ left: 2px;
+}
+.ui-datepicker .ui-datepicker-next {
+ right: 2px;
+}
+.ui-datepicker .ui-datepicker-prev-hover {
+ left: 1px;
+}
+.ui-datepicker .ui-datepicker-next-hover {
+ right: 1px;
+}
+.ui-datepicker .ui-datepicker-prev span,
+.ui-datepicker .ui-datepicker-next span {
+ display: block;
+ position: absolute;
+ left: 50%;
+ margin-left: -8px;
+ top: 50%;
+ margin-top: -8px;
+}
+.ui-datepicker .ui-datepicker-title {
+ margin: 0 2.3em;
+ line-height: 1.8em;
+ text-align: center;
+}
+.ui-datepicker .ui-datepicker-title select {
+ font-size: 1em;
+ margin: 1px 0;
+}
+.ui-datepicker select.ui-datepicker-month,
+.ui-datepicker select.ui-datepicker-year {
+ width: 49%;
+}
+.ui-datepicker table {
+ width: 100%;
+ font-size: .9em;
+ border-collapse: collapse;
+ margin: 0 0 .4em;
+}
+.ui-datepicker th {
+ padding: .7em .3em;
+ text-align: center;
+ font-weight: bold;
+ border: 0;
+}
+.ui-datepicker td {
+ border: 0;
+ padding: 1px;
+}
+.ui-datepicker td span,
+.ui-datepicker td a {
+ display: block;
+ padding: .2em;
+ text-align: right;
+ text-decoration: none;
+}
+.ui-datepicker td.ui-datepicker-current-day .ui-state-active {
+ background:#c33;
+ border-color:#a22;
+ color:#fff;
+}
+.ui-datepicker .ui-datepicker-buttonpane {
+ background-image: none;
+ margin: .7em 0 0 0;
+ padding: 0 .2em;
+ border-left: 0;
+ border-right: 0;
+ border-bottom: 0;
+}
+.ui-datepicker .ui-datepicker-buttonpane button {
+ float: right;
+ margin: .5em .2em .4em;
+ cursor: default;
+ padding: .2em .6em .3em .6em;
+ width: auto;
+ overflow: visible;
+}
+.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
+ float: left;
+}
+
+/* with multiple calendars */
+.ui-datepicker.ui-datepicker-multi {
+ width: auto;
+}
+.ui-datepicker-multi .ui-datepicker-group {
+ float: left;
+}
+.ui-datepicker-multi .ui-datepicker-group table {
+ width: 95%;
+ margin: 0 auto .4em;
+}
+.ui-datepicker-multi-2 .ui-datepicker-group {
+ width: 50%;
+}
+.ui-datepicker-multi-3 .ui-datepicker-group {
+ width: 33.3%;
+}
+.ui-datepicker-multi-4 .ui-datepicker-group {
+ width: 25%;
+}
+.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
+.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
+ border-left-width: 0;
+}
+.ui-datepicker-multi .ui-datepicker-buttonpane {
+ clear: left;
+}
+.ui-datepicker-row-break {
+ clear: both;
+ width: 100%;
+ font-size: 0;
+}
+
+/* RTL support */
+.ui-datepicker-rtl {
+ direction: rtl;
+}
+.ui-datepicker-rtl .ui-datepicker-prev {
+ right: 2px;
+ left: auto;
+}
+.ui-datepicker-rtl .ui-datepicker-next {
+ left: 2px;
+ right: auto;
+}
+.ui-datepicker-rtl .ui-datepicker-prev:hover {
+ right: 1px;
+ left: auto;
+}
+.ui-datepicker-rtl .ui-datepicker-next:hover {
+ left: 1px;
+ right: auto;
+}
+.ui-datepicker-rtl .ui-datepicker-buttonpane {
+ clear: right;
+}
+.ui-datepicker-rtl .ui-datepicker-buttonpane button {
+ float: left;
+}
+.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
+.ui-datepicker-rtl .ui-datepicker-group {
+ float: right;
+}
+.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
+.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
+ border-right-width: 0;
+ border-left-width: 1px;
+}
+.ui-dialog {
+ overflow: hidden;
+ position: absolute;
+ top: 0;
+ left: 0;
+ padding: .2em;
+ outline: 0;
+ -webkit-box-shadow: #999 1px 1px 12px;
+ -moz-box-shadow: 1px 1px 12px #999;
+ box-shadow: 1px 1px 18px #999;
+}
+.ui-dialog .ui-dialog-titlebar {
+ padding: .4em 1em;
+ position: relative;
+}
+.ui-dialog .ui-dialog-title {
+ float: left;
+ margin: .1em 0;
+ white-space: nowrap;
+ width: 90%;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+.ui-dialog .ui-dialog-titlebar-close {
+ position: absolute;
+ right: .3em;
+ top: 50%;
+ width: 20px;
+ margin: -10px 0 0 0;
+ padding: 1px;
+ height: 20px;
+}
+.no-close .ui-dialog-titlebar-close {
+ display: none !important;
+}
+.ui-dialog .ui-dialog-content {
+ position: relative;
+ border: 0;
+ padding: .5em 1em;
+ background: none;
+ overflow: auto;
+}
+.ui-dialog .ui-dialog-buttonpane {
+ text-align: left;
+ border-width: 1px 0 0 0;
+ background-image: none;
+ margin-top: .5em;
+ padding: .3em 1em .5em .4em;
+}
+.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
+ float: right;
+}
+.ui-dialog .ui-dialog-buttonpane button {
+ margin: .5em .4em .5em 0;
+ cursor: default;
+}
+.ui-dialog .ui-resizable-se {
+ width: 12px;
+ height: 12px;
+ right: -5px;
+ bottom: -5px;
+ background-position: 16px 16px;
+}
+.ui-draggable .ui-dialog-titlebar {
+ cursor: move;
+}
+.ui-menu {
+ list-style: none;
+ padding: 2px;
+ margin: 0;
+ display: block;
+ outline: none;
+ -webkit-box-shadow: #999 1px 1px 12px;
+ -moz-box-shadow: 1px 1px 12px #999;
+ box-shadow: 1px 1px 18px #999;
+}
+.ui-menu .ui-menu {
+ margin-top: -3px;
+ position: absolute;
+}
+.ui-menu .ui-menu-item {
+ margin: 0;
+ padding: 0;
+ width: 100%;
+ /* support: IE10, see #8844 */
+ list-style-image: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
+}
+.ui-menu .ui-menu-divider {
+ margin: 5px -2px 5px -2px;
+ height: 0;
+ font-size: 0;
+ line-height: 0;
+ border-width: 1px 0 0 0;
+}
+.ui-menu .ui-menu-item a {
+ text-decoration: none;
+ display: block;
+ padding: 2px .4em;
+ line-height: 1.5;
+ min-height: 0; /* support: IE7 */
+ font-weight: normal;
+}
+.ui-menu .ui-menu-item a.ui-state-focus,
+.ui-menu .ui-menu-item a.ui-state-active {
+ font-weight: normal;
+ margin: -1px;
+ background: #c33;
+ border-color: #a22;
+ color: #fff;
+}
+
+.ui-menu .ui-state-disabled {
+ font-weight: normal;
+ margin: .4em 0 .2em;
+ line-height: 1.5;
+}
+.ui-menu .ui-state-disabled a {
+ cursor: default;
+}
+
+/* icon support */
+.ui-menu-icons {
+ position: relative;
+}
+.ui-menu-icons .ui-menu-item a {
+ position: relative;
+ padding-left: 2em;
+}
+
+/* left-aligned */
+.ui-menu .ui-icon {
+ position: absolute;
+ top: .2em;
+ left: .2em;
+}
+
+/* right-aligned */
+.ui-menu .ui-menu-icon {
+ position: static;
+ float: right;
+}
+.ui-progressbar {
+ height: 2em;
+ text-align: left;
+ overflow: hidden;
+}
+.ui-progressbar .ui-progressbar-value {
+ margin: -1px;
+ height: 100%;
+}
+.ui-progressbar .ui-progressbar-overlay {
+ background: url("images/animated-overlay.gif");
+ height: 100%;
+ filter: alpha(opacity=25);
+ opacity: 0.25;
+}
+.ui-progressbar-indeterminate .ui-progressbar-value {
+ background-image: none;
+}
+.ui-slider {
+ position: relative;
+ text-align: left;
+}
+.ui-slider .ui-slider-handle {
+ position: absolute;
+ z-index: 2;
+ width: 1.2em;
+ height: 1.2em;
+ cursor: default;
+}
+.ui-slider .ui-slider-range {
+ position: absolute;
+ z-index: 1;
+ font-size: .7em;
+ display: block;
+ border: 0;
+ background-position: 0 0;
+}
+
+/* For IE8 - See #6727 */
+.ui-slider.ui-state-disabled .ui-slider-handle,
+.ui-slider.ui-state-disabled .ui-slider-range {
+ filter: inherit;
+}
+
+.ui-slider-horizontal {
+ height: .8em;
+}
+.ui-slider-horizontal .ui-slider-handle {
+ top: -.3em;
+ margin-left: -.6em;
+}
+.ui-slider-horizontal .ui-slider-range {
+ top: 0;
+ height: 100%;
+}
+.ui-slider-horizontal .ui-slider-range-min {
+ left: 0;
+}
+.ui-slider-horizontal .ui-slider-range-max {
+ right: 0;
+}
+
+.ui-slider-vertical {
+ width: .8em;
+ height: 100px;
+}
+.ui-slider-vertical .ui-slider-handle {
+ left: -.3em;
+ margin-left: 0;
+ margin-bottom: -.6em;
+}
+.ui-slider-vertical .ui-slider-range {
+ left: 0;
+ width: 100%;
+}
+.ui-slider-vertical .ui-slider-range-min {
+ bottom: 0;
+}
+.ui-slider-vertical .ui-slider-range-max {
+ top: 0;
+}
+.ui-spinner {
+ position: relative;
+ display: inline-block;
+ overflow: hidden;
+ padding: 0;
+ vertical-align: middle;
+}
+.ui-spinner-input {
+ border: none;
+ background: none;
+ color: inherit;
+ padding: 0;
+ margin: .2em 0;
+ vertical-align: middle;
+ margin-left: .4em;
+ margin-right: 22px;
+}
+.ui-spinner-button {
+ width: 16px;
+ height: 50%;
+ font-size: .5em;
+ padding: 0;
+ margin: 0;
+ text-align: center;
+ position: absolute;
+ cursor: default;
+ display: block;
+ overflow: hidden;
+ right: 0;
+}
+/* more specificity required here to override default borders */
+.ui-spinner a.ui-spinner-button {
+ border-top: none;
+ border-bottom: none;
+ border-right: none;
+}
+/* vertically center icon */
+.ui-spinner .ui-icon {
+ position: absolute;
+ margin-top: -8px;
+ top: 50%;
+ left: 0;
+}
+.ui-spinner-up {
+ top: 0;
+}
+.ui-spinner-down {
+ bottom: 0;
+}
+
+/* TR overrides */
+.ui-spinner .ui-icon-triangle-1-s {
+ /* need to fix icons sprite */
+ background-position: -65px -16px;
+}
+.ui-tabs {
+ position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+ padding: .2em;
+}
+.ui-tabs .ui-tabs-nav {
+ margin: 0;
+ padding: .2em .2em 0;
+}
+.ui-tabs .ui-tabs-nav li {
+ list-style: none;
+ float: left;
+ position: relative;
+ top: 0;
+ margin: 0;
+ border-bottom-width: 0;
+ padding: 0;
+ white-space: nowrap;
+ -webkit-border-top-left-radius: 2px;
+ -moz-border-radius-topleft: 2px;
+ border-top-left-radius: 2px;
+ -webkit-border-top-right-radius: 2px;
+ -moz-border-radius-topright: 2px;
+ border-top-right-radius: 2px;
+}
+.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
+ float: left;
+ padding: .3em 1em;
+ text-decoration: none;
+}
+.ui-tabs .ui-tabs-nav li.ui-tabs-active {
+ margin-bottom: -1px;
+ padding-bottom: 1px;
+}
+.ui-dialog .ui-tabs-nav li.ui-tabs-active {
+ background: #fff;
+}
+.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
+.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
+.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
+ cursor: text;
+}
+.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
+ cursor: pointer;
+}
+.ui-tabs .ui-tabs-panel {
+ display: block;
+ border-width: 0;
+ padding: 1em 1.4em;
+ background: none;
+}
+.ui-tooltip {
+ padding: 8px;
+ position: absolute;
+ z-index: 9999;
+ max-width: 300px;
+ -webkit-box-shadow: 0 0 5px #aaa;
+ box-shadow: 0 0 5px #aaa;
+}
+body .ui-tooltip {
+ border-width: 2px;
+}
+
+/* Component containers
+----------------------------------*/
+.ui-widget {
+ font-family: Lucida Grande, Verdana, Arial, Helvetica, sans-serif;
+ font-size: 1em;
+}
+.ui-widget .ui-widget {
+ font-size: 1em;
+}
+.ui-widget input,
+.ui-widget select,
+.ui-widget textarea,
+.ui-widget button {
+ font-family: Lucida Grande, Verdana, Arial, Helvetica, sans-serif;
+ font-size: 1em;
+}
+.ui-widget-content {
+ border: 1px solid #aaaaaa;
+ background: #ffffff url("images/ui-bg_flat_75_ffffff_40x100.png") 50% 50% repeat-x;
+ color: #000000;
+}
+.ui-widget-content a {
+ color: #000000;
+}
+.ui-widget-header {
+ border: 1px solid #999999;
+ border-width: 0 0 1px 0;
+ background: #f4f4f4 url("images/listheader.png") 50% 50% repeat;
+ color: #333333;
+ font-weight: bold;
+ margin: -0.2em -0.2em 0 -0.2em;
+}
+.ui-widget-header a {
+ color: #333333;
+}
+
+/* Interaction states
+----------------------------------*/
+.ui-state-default,
+.ui-widget-content .ui-state-default,
+.ui-widget-header .ui-state-default {
+ border: 1px solid #aaaaaa;
+ background: #e6e6e7 url("images/ui-bg_highlight-hard_90_e6e6e7_1x100.png") 50% 50% repeat-x;
+ font-weight: normal;
+ color: #000000;
+}
+.ui-state-default a,
+.ui-state-default a:link,
+.ui-state-default a:visited {
+ color: #000000;
+ text-decoration: none;
+}
+.ui-state-hover,
+.ui-widget-content .ui-state-hover,
+.ui-widget-header .ui-state-hover,
+.ui-state-focus,
+.ui-widget-content .ui-state-focus,
+.ui-widget-header .ui-state-focus {
+ border: 1px solid #999999;
+ background: #e6e6e7 url("images/ui-bg_highlight-hard_90_e6e6e7_1x100.png") 50% 50% repeat-x;
+ font-weight: normal;
+ color: #000000;
+}
+.ui-state-focus,
+.ui-widget-content .ui-state-focus {
+ border: 1px solid #c33;
+ color: #a00;
+}
+.ui-tabs-nav .ui-state-focus {
+ border: 1px solid #a4a4a4;
+ color: #000;
+}
+.ui-state-hover a,
+.ui-state-hover a:hover,
+.ui-state-hover a:link,
+.ui-state-hover a:visited,
+.ui-state-focus a,
+.ui-state-focus a:hover,
+.ui-state-focus a:link,
+.ui-state-focus a:visited {
+ color: #000000;
+ text-decoration: none;
+}
+.ui-state-active,
+.ui-widget-content .ui-state-active,
+.ui-widget-header .ui-state-active {
+ border: 1px solid #a4a4a4;
+ background: #a3a3a3 url("images/ui-bg_highlight-hard_90_a3a3a3_1x100.png") 50% 50% repeat-x;
+ font-weight: normal;
+ color: #000000;
+}
+.ui-state-active a,
+.ui-state-active a:link,
+.ui-state-active a:visited {
+ color: #000000;
+ text-decoration: none;
+}
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight,
+.ui-widget-content .ui-state-highlight,
+.ui-widget-header .ui-state-highlight {
+ border: 1px solid #cc3333;
+ background: #cc3333 url("images/ui-bg_flat_90_cc3333_40x100.png") 50% 50% repeat-x;
+ color: #ffffff;
+}
+.ui-state-highlight a,
+.ui-widget-content .ui-state-highlight a,
+.ui-widget-header .ui-state-highlight a {
+ color: #ffffff;
+}
+.ui-state-error,
+.ui-widget-content .ui-state-error,
+.ui-widget-header .ui-state-error {
+ border: 1px solid #cc3333;
+ background: #fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x;
+ color: #cc3333;
+}
+.ui-state-error a,
+.ui-widget-content .ui-state-error a,
+.ui-widget-header .ui-state-error a {
+ color: #cc3333;
+}
+.ui-state-error-text,
+.ui-widget-content .ui-state-error-text,
+.ui-widget-header .ui-state-error-text {
+ color: #cc3333;
+}
+.ui-priority-primary,
+.ui-widget-content .ui-priority-primary,
+.ui-widget-header .ui-priority-primary {
+ font-weight: bold;
+}
+.ui-priority-secondary,
+.ui-widget-content .ui-priority-secondary,
+.ui-widget-header .ui-priority-secondary {
+ opacity: .6;
+ filter:Alpha(Opacity=60);
+ font-weight: normal;
+}
+.ui-state-disabled,
+.ui-widget-content .ui-state-disabled,
+.ui-widget-header .ui-state-disabled {
+ opacity: .35;
+ filter:Alpha(Opacity=35);
+ background-image: none;
+}
+.ui-state-disabled .ui-icon {
+ filter:Alpha(Opacity=35); /* For IE8 - See #6059 */
+}
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon {
+ width: 16px;
+ height: 16px;
+}
+.ui-icon,
+.ui-widget-content .ui-icon {
+ background-image: url("images/ui-icons_000000_256x240.png");
+}
+.ui-widget-header .ui-icon {
+ background-image: url("images/ui-icons_333333_256x240.png");
+}
+.ui-state-default .ui-icon {
+ background-image: url("images/ui-icons_666666_256x240.png");
+}
+.ui-state-hover .ui-icon,
+.ui-state-focus .ui-icon {
+ background-image: url("images/ui-icons_333333_256x240.png");
+}
+.ui-state-active .ui-icon {
+ background-image: url("images/ui-icons_333333_256x240.png");
+}
+.ui-state-highlight .ui-icon {
+ background-image: url("images/ui-icons_dddddd_256x240.png");
+}
+.ui-state-error .ui-icon,
+.ui-state-error-text .ui-icon {
+ background-image: url("images/ui-icons_cc3333_256x240.png");
+}
+
+/* positioning */
+.ui-icon-blank { background-position: 16px 16px; }
+.ui-icon-carat-1-n { background-position: 0 0; }
+.ui-icon-carat-1-ne { background-position: -16px 0; }
+.ui-icon-carat-1-e { background-position: -32px 0; }
+.ui-icon-carat-1-se { background-position: -48px 0; }
+.ui-icon-carat-1-s { background-position: -64px 0; }
+.ui-icon-carat-1-sw { background-position: -80px 0; }
+.ui-icon-carat-1-w { background-position: -96px 0; }
+.ui-icon-carat-1-nw { background-position: -112px 0; }
+.ui-icon-carat-2-n-s { background-position: -128px 0; }
+.ui-icon-carat-2-e-w { background-position: -144px 0; }
+.ui-icon-triangle-1-n { background-position: 0 -16px; }
+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.ui-icon-triangle-1-e { background-position: -32px -16px; }
+.ui-icon-triangle-1-se { background-position: -48px -16px; }
+.ui-icon-triangle-1-s { background-position: -64px -16px; }
+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.ui-icon-triangle-1-w { background-position: -96px -16px; }
+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.ui-icon-arrow-1-n { background-position: 0 -32px; }
+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.ui-icon-arrow-1-e { background-position: -32px -32px; }
+.ui-icon-arrow-1-se { background-position: -48px -32px; }
+.ui-icon-arrow-1-s { background-position: -64px -32px; }
+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.ui-icon-arrow-1-w { background-position: -96px -32px; }
+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.ui-icon-arrow-4 { background-position: 0 -80px; }
+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.ui-icon-extlink { background-position: -32px -80px; }
+.ui-icon-newwin { background-position: -48px -80px; }
+.ui-icon-refresh { background-position: -64px -80px; }
+.ui-icon-shuffle { background-position: -80px -80px; }
+.ui-icon-transfer-e-w { background-position: -96px -80px; }
+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.ui-icon-folder-collapsed { background-position: 0 -96px; }
+.ui-icon-folder-open { background-position: -16px -96px; }
+.ui-icon-document { background-position: -32px -96px; }
+.ui-icon-document-b { background-position: -48px -96px; }
+.ui-icon-note { background-position: -64px -96px; }
+.ui-icon-mail-closed { background-position: -80px -96px; }
+.ui-icon-mail-open { background-position: -96px -96px; }
+.ui-icon-suitcase { background-position: -112px -96px; }
+.ui-icon-comment { background-position: -128px -96px; }
+.ui-icon-person { background-position: -144px -96px; }
+.ui-icon-print { background-position: -160px -96px; }
+.ui-icon-trash { background-position: -176px -96px; }
+.ui-icon-locked { background-position: -192px -96px; }
+.ui-icon-unlocked { background-position: -208px -96px; }
+.ui-icon-bookmark { background-position: -224px -96px; }
+.ui-icon-tag { background-position: -240px -96px; }
+.ui-icon-home { background-position: 0 -112px; }
+.ui-icon-flag { background-position: -16px -112px; }
+.ui-icon-calendar { background-position: -32px -112px; }
+.ui-icon-cart { background-position: -48px -112px; }
+.ui-icon-pencil { background-position: -64px -112px; }
+.ui-icon-clock { background-position: -80px -112px; }
+.ui-icon-disk { background-position: -96px -112px; }
+.ui-icon-calculator { background-position: -112px -112px; }
+.ui-icon-zoomin { background-position: -128px -112px; }
+.ui-icon-zoomout { background-position: -144px -112px; }
+.ui-icon-search { background-position: -160px -112px; }
+.ui-icon-wrench { background-position: -176px -112px; }
+.ui-icon-gear { background-position: -192px -112px; }
+.ui-icon-heart { background-position: -208px -112px; }
+.ui-icon-star { background-position: -224px -112px; }
+.ui-icon-link { background-position: -240px -112px; }
+.ui-icon-cancel { background-position: 0 -128px; }
+.ui-icon-plus { background-position: -16px -128px; }
+.ui-icon-plusthick { background-position: -32px -128px; }
+.ui-icon-minus { background-position: -48px -128px; }
+.ui-icon-minusthick { background-position: -64px -128px; }
+.ui-icon-close { background-position: -80px -128px; }
+.ui-icon-closethick { background-position: -96px -128px; }
+.ui-icon-key { background-position: -112px -128px; }
+.ui-icon-lightbulb { background-position: -128px -128px; }
+.ui-icon-scissors { background-position: -144px -128px; }
+.ui-icon-clipboard { background-position: -160px -128px; }
+.ui-icon-copy { background-position: -176px -128px; }
+.ui-icon-contact { background-position: -192px -128px; }
+.ui-icon-image { background-position: -208px -128px; }
+.ui-icon-video { background-position: -224px -128px; }
+.ui-icon-script { background-position: -240px -128px; }
+.ui-icon-alert { background-position: 0 -144px; }
+.ui-icon-info { background-position: -16px -144px; }
+.ui-icon-notice { background-position: -32px -144px; }
+.ui-icon-help { background-position: -48px -144px; }
+.ui-icon-check { background-position: -64px -144px; }
+.ui-icon-bullet { background-position: -80px -144px; }
+.ui-icon-radio-on { background-position: -96px -144px; }
+.ui-icon-radio-off { background-position: -112px -144px; }
+.ui-icon-pin-w { background-position: -128px -144px; }
+.ui-icon-pin-s { background-position: -144px -144px; }
+.ui-icon-play { background-position: 0 -160px; }
+.ui-icon-pause { background-position: -16px -160px; }
+.ui-icon-seek-next { background-position: -32px -160px; }
+.ui-icon-seek-prev { background-position: -48px -160px; }
+.ui-icon-seek-end { background-position: -64px -160px; }
+.ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.ui-icon-seek-first { background-position: -80px -160px; }
+.ui-icon-stop { background-position: -96px -160px; }
+.ui-icon-eject { background-position: -112px -160px; }
+.ui-icon-volume-off { background-position: -128px -160px; }
+.ui-icon-volume-on { background-position: -144px -160px; }
+.ui-icon-power { background-position: 0 -176px; }
+.ui-icon-signal-diag { background-position: -16px -176px; }
+.ui-icon-signal { background-position: -32px -176px; }
+.ui-icon-battery-0 { background-position: -48px -176px; }
+.ui-icon-battery-1 { background-position: -64px -176px; }
+.ui-icon-battery-2 { background-position: -80px -176px; }
+.ui-icon-battery-3 { background-position: -96px -176px; }
+.ui-icon-circle-plus { background-position: 0 -192px; }
+.ui-icon-circle-minus { background-position: -16px -192px; }
+.ui-icon-circle-close { background-position: -32px -192px; }
+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.ui-icon-circle-zoomin { background-position: -176px -192px; }
+.ui-icon-circle-zoomout { background-position: -192px -192px; }
+.ui-icon-circle-check { background-position: -208px -192px; }
+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.ui-icon-circlesmall-close { background-position: -32px -208px; }
+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.ui-icon-squaresmall-close { background-position: -80px -208px; }
+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.ui-corner-all,
+.ui-corner-top,
+.ui-corner-left,
+.ui-corner-tl {
+ border-top-left-radius: 0;
+}
+.ui-corner-all,
+.ui-corner-top,
+.ui-corner-right,
+.ui-corner-tr {
+ border-top-right-radius: 0;
+}
+.ui-corner-all,
+.ui-corner-bottom,
+.ui-corner-left,
+.ui-corner-bl {
+ border-bottom-left-radius: 0;
+}
+.ui-corner-all,
+.ui-corner-bottom,
+.ui-corner-right,
+.ui-corner-br {
+ border-bottom-right-radius: 0;
+}
+
+/* Overlays */
+.ui-widget-overlay {
+ background: #aaaaaa url("images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;
+ opacity: .3;
+ filter: Alpha(Opacity=30);
+}
+.ui-widget-shadow {
+ margin: -6px 0 0 -6px;
+ padding: 6px;
+ background: #aaaaaa url("images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;
+ opacity: .35;
+ filter: Alpha(Opacity=35);
+ border-radius: 6px;
+}
diff --git a/plugins/jqueryui/themes/classic/jquery-ui-1.9.2.custom.css b/plugins/jqueryui/themes/classic/jquery-ui-1.9.2.custom.css
deleted file mode 100755
index 617d3e16a..000000000
--- a/plugins/jqueryui/themes/classic/jquery-ui-1.9.2.custom.css
+++ /dev/null
@@ -1,581 +0,0 @@
-/*
- * jQuery UI CSS Framework 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Theming/API
- */
-
-/* Layout helpers
-----------------------------------*/
-.ui-helper-hidden { display: none; }
-.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
-.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
-.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; }
-.ui-helper-clearfix:after { clear: both; }
-.ui-helper-clearfix { zoom: 1; }
-.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
-
-
-/* Interaction Cues
-----------------------------------*/
-.ui-state-disabled { cursor: default !important; }
-
-
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
-
-
-/* Misc visuals
-----------------------------------*/
-
-/* Overlays */
-.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
-
-
-/*
- * jQuery UI CSS Framework 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Theming/API
- *
- * To view and modify this theme, visit http://jqueryui.com/themeroller/?ctl=themeroller&ctl=themeroller&ffDefault=Lucida%20Grande,%20Verdana,%20Arial,%20Helvetica,%20sans-serif&fwDefault=normal&fsDefault=1em&cornerRadius=0&bgColorHeader=f4f4f4&bgTextureHeader=04_highlight_hard.png&bgImgOpacityHeader=90&borderColorHeader=999999&fcHeader=333333&iconColorHeader=333333&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=000000&iconColorContent=000000&bgColorDefault=e6e6e7&bgTextureDefault=04_highlight_hard.png&bgImgOpacityDefault=90&borderColorDefault=aaaaaa&fcDefault=000000&iconColorDefault=666666&bgColorHover=e6e6e7&bgTextureHover=04_highlight_hard.png&bgImgOpacityHover=90&borderColorHover=999999&fcHover=000000&iconColorHover=333333&bgColorActive=a3a3a3&bgTextureActive=04_highlight_hard.png&bgImgOpacityActive=90&borderColorActive=a4a4a4&fcActive=000000&iconColorActive=333333&bgColorHighlight=cc3333&bgTextureHighlight=01_flat.png&bgImgOpacityHighlight=90&borderColorHighlight=cc3333&fcHighlight=ffffff&iconColorHighlight=dddddd&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cc3333&fcError=cc3333&iconColorError=cc3333&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=35&thicknessShadow=6px&offsetTopShadow=-6px&offsetLeftShadow=-6px&cornerRadiusShadow=6px
- */
-
-
-/* Component containers
-----------------------------------*/
-.ui-widget { font-family: Lucida Grande, Verdana, Arial, Helvetica, sans-serif; font-size: 1em; }
-.ui-widget .ui-widget { font-size: 1em; }
-.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Lucida Grande, Verdana, Arial, Helvetica, sans-serif; font-size: 1em; }
-.ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #000000; }
-.ui-widget-content a { color: #000000; }
-.ui-widget-header { border: 1px solid #999999; border-width: 0 0 1px 0; background: #f4f4f4 url(images/listheader.png) 50% 50% repeat; color: #333333; font-weight: bold; margin: -0.2em -0.2em 0 -0.2em; }
-.ui-widget-header a { color: #333333; }
-
-/* Interaction states
-----------------------------------*/
-.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #aaaaaa; background: #e6e6e7 url(images/ui-bg_highlight-hard_90_e6e6e7_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #000000; }
-.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #000000; text-decoration: none; }
-.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #e6e6e7 url(images/ui-bg_highlight-hard_90_e6e6e7_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #000000; }
-.ui-state-hover a, .ui-state-hover a:hover { color: #000000; text-decoration: none; }
-.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #a4a4a4; background: #a3a3a3 url(images/ui-bg_highlight-hard_90_a3a3a3_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #000000; }
-.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #000000; text-decoration: none; }
-.ui-state-focus, .ui-widget-content .ui-state-focus { border: 1px solid #c33; color: #a00; }
-.ui-tabs-nav .ui-state-focus { border: 1px solid #a4a4a4; color: #000000; }
-.ui-widget :active { outline: none; }
-
-/* Interaction Cues
-----------------------------------*/
-.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #cc3333; background: #cc3333 url(images/ui-bg_flat_90_cc3333_40x100.png) 50% 50% repeat-x; color: #ffffff; }
-.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #ffffff; }
-.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cc3333; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cc3333; }
-.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cc3333; }
-.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cc3333; }
-.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
-.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .6; filter:Alpha(Opacity=60); font-weight: normal; }
-.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
-
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_000000_256x240.png); }
-.ui-widget-content .ui-icon {background-image: url(images/ui-icons_000000_256x240.png); }
-.ui-widget-header .ui-icon {background-image: url(images/ui-icons_333333_256x240.png); }
-.ui-state-default .ui-icon { background-image: url(images/ui-icons_666666_256x240.png); }
-.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_333333_256x240.png); }
-.ui-state-active .ui-icon {background-image: url(images/ui-icons_333333_256x240.png); }
-.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_dddddd_256x240.png); }
-.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cc3333_256x240.png); }
-
-/* positioning */
-.ui-icon-carat-1-n { background-position: 0 0; }
-.ui-icon-carat-1-ne { background-position: -16px 0; }
-.ui-icon-carat-1-e { background-position: -32px 0; }
-.ui-icon-carat-1-se { background-position: -48px 0; }
-.ui-icon-carat-1-s { background-position: -64px 0; }
-.ui-icon-carat-1-sw { background-position: -80px 0; }
-.ui-icon-carat-1-w { background-position: -96px 0; }
-.ui-icon-carat-1-nw { background-position: -112px 0; }
-.ui-icon-carat-2-n-s { background-position: -128px 0; }
-.ui-icon-carat-2-e-w { background-position: -144px 0; }
-.ui-icon-triangle-1-n { background-position: 0 -16px; }
-.ui-icon-triangle-1-ne { background-position: -16px -16px; }
-.ui-icon-triangle-1-e { background-position: -32px -16px; }
-.ui-icon-triangle-1-se { background-position: -48px -16px; }
-.ui-icon-triangle-1-s { background-position: -64px -16px; }
-.ui-icon-triangle-1-sw { background-position: -80px -16px; }
-.ui-icon-triangle-1-w { background-position: -96px -16px; }
-.ui-icon-triangle-1-nw { background-position: -112px -16px; }
-.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
-.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
-.ui-icon-arrow-1-n { background-position: 0 -32px; }
-.ui-icon-arrow-1-ne { background-position: -16px -32px; }
-.ui-icon-arrow-1-e { background-position: -32px -32px; }
-.ui-icon-arrow-1-se { background-position: -48px -32px; }
-.ui-icon-arrow-1-s { background-position: -64px -32px; }
-.ui-icon-arrow-1-sw { background-position: -80px -32px; }
-.ui-icon-arrow-1-w { background-position: -96px -32px; }
-.ui-icon-arrow-1-nw { background-position: -112px -32px; }
-.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
-.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
-.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
-.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
-.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
-.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
-.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
-.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
-.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
-.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
-.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
-.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
-.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
-.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
-.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
-.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
-.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
-.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
-.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
-.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
-.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
-.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
-.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
-.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
-.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
-.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
-.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
-.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
-.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
-.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
-.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
-.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
-.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
-.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
-.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
-.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
-.ui-icon-arrow-4 { background-position: 0 -80px; }
-.ui-icon-arrow-4-diag { background-position: -16px -80px; }
-.ui-icon-extlink { background-position: -32px -80px; }
-.ui-icon-newwin { background-position: -48px -80px; }
-.ui-icon-refresh { background-position: -64px -80px; }
-.ui-icon-shuffle { background-position: -80px -80px; }
-.ui-icon-transfer-e-w { background-position: -96px -80px; }
-.ui-icon-transferthick-e-w { background-position: -112px -80px; }
-.ui-icon-folder-collapsed { background-position: 0 -96px; }
-.ui-icon-folder-open { background-position: -16px -96px; }
-.ui-icon-document { background-position: -32px -96px; }
-.ui-icon-document-b { background-position: -48px -96px; }
-.ui-icon-note { background-position: -64px -96px; }
-.ui-icon-mail-closed { background-position: -80px -96px; }
-.ui-icon-mail-open { background-position: -96px -96px; }
-.ui-icon-suitcase { background-position: -112px -96px; }
-.ui-icon-comment { background-position: -128px -96px; }
-.ui-icon-person { background-position: -144px -96px; }
-.ui-icon-print { background-position: -160px -96px; }
-.ui-icon-trash { background-position: -176px -96px; }
-.ui-icon-locked { background-position: -192px -96px; }
-.ui-icon-unlocked { background-position: -208px -96px; }
-.ui-icon-bookmark { background-position: -224px -96px; }
-.ui-icon-tag { background-position: -240px -96px; }
-.ui-icon-home { background-position: 0 -112px; }
-.ui-icon-flag { background-position: -16px -112px; }
-.ui-icon-calendar { background-position: -32px -112px; }
-.ui-icon-cart { background-position: -48px -112px; }
-.ui-icon-pencil { background-position: -64px -112px; }
-.ui-icon-clock { background-position: -80px -112px; }
-.ui-icon-disk { background-position: -96px -112px; }
-.ui-icon-calculator { background-position: -112px -112px; }
-.ui-icon-zoomin { background-position: -128px -112px; }
-.ui-icon-zoomout { background-position: -144px -112px; }
-.ui-icon-search { background-position: -160px -112px; }
-.ui-icon-wrench { background-position: -176px -112px; }
-.ui-icon-gear { background-position: -192px -112px; }
-.ui-icon-heart { background-position: -208px -112px; }
-.ui-icon-star { background-position: -224px -112px; }
-.ui-icon-link { background-position: -240px -112px; }
-.ui-icon-cancel { background-position: 0 -128px; }
-.ui-icon-plus { background-position: -16px -128px; }
-.ui-icon-plusthick { background-position: -32px -128px; }
-.ui-icon-minus { background-position: -48px -128px; }
-.ui-icon-minusthick { background-position: -64px -128px; }
-.ui-icon-close { background-position: -80px -128px; }
-.ui-icon-closethick { background-position: -96px -128px; }
-.ui-icon-key { background-position: -112px -128px; }
-.ui-icon-lightbulb { background-position: -128px -128px; }
-.ui-icon-scissors { background-position: -144px -128px; }
-.ui-icon-clipboard { background-position: -160px -128px; }
-.ui-icon-copy { background-position: -176px -128px; }
-.ui-icon-contact { background-position: -192px -128px; }
-.ui-icon-image { background-position: -208px -128px; }
-.ui-icon-video { background-position: -224px -128px; }
-.ui-icon-script { background-position: -240px -128px; }
-.ui-icon-alert { background-position: 0 -144px; }
-.ui-icon-info { background-position: -16px -144px; }
-.ui-icon-notice { background-position: -32px -144px; }
-.ui-icon-help { background-position: -48px -144px; }
-.ui-icon-check { background-position: -64px -144px; }
-.ui-icon-bullet { background-position: -80px -144px; }
-.ui-icon-radio-off { background-position: -96px -144px; }
-.ui-icon-radio-on { background-position: -112px -144px; }
-.ui-icon-pin-w { background-position: -128px -144px; }
-.ui-icon-pin-s { background-position: -144px -144px; }
-.ui-icon-play { background-position: 0 -160px; }
-.ui-icon-pause { background-position: -16px -160px; }
-.ui-icon-seek-next { background-position: -32px -160px; }
-.ui-icon-seek-prev { background-position: -48px -160px; }
-.ui-icon-seek-end { background-position: -64px -160px; }
-.ui-icon-seek-start { background-position: -80px -160px; }
-/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
-.ui-icon-seek-first { background-position: -80px -160px; }
-.ui-icon-stop { background-position: -96px -160px; }
-.ui-icon-eject { background-position: -112px -160px; }
-.ui-icon-volume-off { background-position: -128px -160px; }
-.ui-icon-volume-on { background-position: -144px -160px; }
-.ui-icon-power { background-position: 0 -176px; }
-.ui-icon-signal-diag { background-position: -16px -176px; }
-.ui-icon-signal { background-position: -32px -176px; }
-.ui-icon-battery-0 { background-position: -48px -176px; }
-.ui-icon-battery-1 { background-position: -64px -176px; }
-.ui-icon-battery-2 { background-position: -80px -176px; }
-.ui-icon-battery-3 { background-position: -96px -176px; }
-.ui-icon-circle-plus { background-position: 0 -192px; }
-.ui-icon-circle-minus { background-position: -16px -192px; }
-.ui-icon-circle-close { background-position: -32px -192px; }
-.ui-icon-circle-triangle-e { background-position: -48px -192px; }
-.ui-icon-circle-triangle-s { background-position: -64px -192px; }
-.ui-icon-circle-triangle-w { background-position: -80px -192px; }
-.ui-icon-circle-triangle-n { background-position: -96px -192px; }
-.ui-icon-circle-arrow-e { background-position: -112px -192px; }
-.ui-icon-circle-arrow-s { background-position: -128px -192px; }
-.ui-icon-circle-arrow-w { background-position: -144px -192px; }
-.ui-icon-circle-arrow-n { background-position: -160px -192px; }
-.ui-icon-circle-zoomin { background-position: -176px -192px; }
-.ui-icon-circle-zoomout { background-position: -192px -192px; }
-.ui-icon-circle-check { background-position: -208px -192px; }
-.ui-icon-circlesmall-plus { background-position: 0 -208px; }
-.ui-icon-circlesmall-minus { background-position: -16px -208px; }
-.ui-icon-circlesmall-close { background-position: -32px -208px; }
-.ui-icon-squaresmall-plus { background-position: -48px -208px; }
-.ui-icon-squaresmall-minus { background-position: -64px -208px; }
-.ui-icon-squaresmall-close { background-position: -80px -208px; }
-.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
-.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
-.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
-.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
-.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
-.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
-
-
-/* Misc visuals
-----------------------------------*/
-
-/* Corner radius */
-.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 0; -webkit-border-top-left-radius: 0; -khtml-border-top-left-radius: 0; border-top-left-radius: 0; }
-.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 0; -webkit-border-top-right-radius: 0; -khtml-border-top-right-radius: 0; border-top-right-radius: 0; }
-.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 0; -webkit-border-bottom-left-radius: 0; -khtml-border-bottom-left-radius: 0; border-bottom-left-radius: 0; }
-.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 0; -webkit-border-bottom-right-radius: 0; -khtml-border-bottom-right-radius: 0; border-bottom-right-radius: 0; }
-
-/* Overlays */
-.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
-.ui-widget-shadow { margin: -6px 0 0 -6px; padding: 6px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .35;filter:Alpha(Opacity=35); -moz-border-radius: 6px; -khtml-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px; }/*
- * jQuery UI Resizable 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Resizable#theming
- */
-.ui-resizable { position: relative;}
-.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; }
-.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
-.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
-.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
-.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
-.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
-.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
-.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
-.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
-.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
- * jQuery UI Selectable 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Selectable#theming
- */
-.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
-/*
- * jQuery UI Accordion 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Accordion#theming
- */
-/* IE/Win - Fix animation bug - #4615 */
-.ui-accordion { width: 100%; }
-.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
-.ui-accordion .ui-accordion-li-fix { display: inline; }
-.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
-.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
-.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
-.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
-.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
-.ui-accordion .ui-accordion-content-active { display: block; }
-/*
- * jQuery UI Autocomplete 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Autocomplete#theming
- */
-.ui-autocomplete { position: absolute; cursor: default; }
-
-/* workarounds */
-* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
-
-#ui-active-menuitem { background:#c33; border-color:#a22; color:#fff; }
-
-/*
- * jQuery UI Menu 1.8.18
- *
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Menu#theming
- */
-.ui-menu {
- list-style:none;
- padding: 2px;
- margin: 0;
- display:block;
- float: left;
- box-shadow: 1px 1px 18px #999;
- -moz-box-shadow: 1px 1px 12px #999;
- -webkit-box-shadow: #999 1px 1px 12px;
-}
-.ui-menu .ui-menu {
- margin-top: -3px;
-}
-.ui-menu .ui-menu-item {
- margin:0;
- padding: 0;
- zoom: 1;
- float: left;
- clear: left;
- width: 100%;
-}
-.ui-menu .ui-menu-item a {
- text-decoration:none;
- display:block;
- padding:.2em .4em;
- line-height:1.5;
- zoom:1;
-}
-.ui-menu .ui-menu-item a.ui-state-focus,
-.ui-menu .ui-menu-item a.ui-state-active {
- font-weight: normal;
- margin: -1px;
-}
-/*
- * jQuery UI Button 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Button#theming
- */
-.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: hidden; *overflow: visible; } /* the overflow property removes extra width in IE */
-.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
-button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
-.ui-button-icons-only { width: 3.4em; }
-button.ui-button-icons-only { width: 3.7em; }
-button.ui-button-text-only, a.ui-button-text-only { background-image: url(images/buttongradient.png) !important; }
-
-/*button text element */
-.ui-button .ui-button-text { display: block; line-height: 1.4; }
-.ui-button-text-only .ui-button-text { padding: .3em 1em; }
-.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
-.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
-.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
-.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
-/* no icon support for input elements, provide padding by default */
-input.ui-button { padding: .4em 1em; }
-
-/*button icon element(s) */
-.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
-.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
-.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
-.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
-.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
-
-/*button sets*/
-.ui-buttonset { margin-right: 7px; }
-.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
-
-/* workarounds */
-button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
-
-.ui-button.mainaction { font-weight: bold; border: 1px solid #999; }
-
-
-/*
- * jQuery UI Dialog 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Dialog#theming
- */
-.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; box-shadow: 1px 1px 18px #999; -moz-box-shadow: 1px 1px 12px #999; -webkit-box-shadow: #999 1px 1px 12px; }
-.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; }
-.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; }
-.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
-.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
-.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
-.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
-.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
-.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
-.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: default; }
-.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
-.ui-draggable .ui-dialog-titlebar { cursor: move; }
-/*
- * jQuery UI Slider 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Slider#theming
- */
-.ui-slider { position: relative; text-align: left; }
-.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
-.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
-
-.ui-slider-horizontal { height: .8em; }
-.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
-.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
-.ui-slider-horizontal .ui-slider-range-min { left: 0; }
-.ui-slider-horizontal .ui-slider-range-max { right: 0; }
-
-.ui-slider-vertical { width: .8em; height: 100px; }
-.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
-.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
-.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
-.ui-slider-vertical .ui-slider-range-max { top: 0; }/*
- * jQuery UI Tabs 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Tabs#theming
- */
-.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
-.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
-.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 0 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; -moz-border-radius-topleft: 2px; -webkit-border-top-left-radius: 2px; border-top-left-radius: 2px; -moz-border-radius-topright: 2px; -webkit-border-top-right-radius: 2px; border-top-right-radius: 2px; }
-.ui-tabs .ui-tabs-nav li a { float: left; padding: .3em 1em; text-decoration: none; }
-.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
-.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
-.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
-.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
-.ui-tabs .ui-tabs-hide { display: none !important; }
-
-.ui-dialog .ui-tabs .ui-tabs-nav li.ui-tabs-selected { background:#fff; }
-
-/*
- * jQuery UI Datepicker 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Datepicker#theming
- */
-.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; box-shadow: 1px 1px 18px #999; -moz-box-shadow: 1px 1px 12px #999; -webkit-box-shadow: #999 1px 1px 12px; }
-.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
-.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
-.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
-.ui-datepicker .ui-datepicker-prev { left:2px; }
-.ui-datepicker .ui-datepicker-next { right:2px; }
-.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
-.ui-datepicker .ui-datepicker-next-hover { right:1px; }
-.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
-.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
-.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
-.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
-.ui-datepicker select.ui-datepicker-month,
-.ui-datepicker select.ui-datepicker-year { width: 49%;}
-.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
-.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
-.ui-datepicker td { border: 0; padding: 1px; }
-.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
-.ui-datepicker td.ui-datepicker-current-day .ui-state-active { background:#c33; border-color:#a22; color:#fff; }
-.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
-.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: default; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
-.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
-
-/* with multiple calendars */
-.ui-datepicker.ui-datepicker-multi { width:auto; }
-.ui-datepicker-multi .ui-datepicker-group { float:left; }
-.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
-.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
-.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
-.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
-.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
-.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
-.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
-.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
-
-/* RTL support */
-.ui-datepicker-rtl { direction: rtl; }
-.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
-.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
-.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
-.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
-.ui-datepicker-rtl .ui-datepicker-group { float:right; }
-.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
-.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
-
-/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
-.ui-datepicker-cover {
- display: none; /*sorry for IE5*/
- display/**/: block; /*sorry for IE5*/
- position: absolute; /*must have*/
- z-index: -1; /*must have*/
- filter: mask(); /*must have*/
- top: -4px; /*must have*/
- left: -4px; /*must have*/
- width: 200px; /*must have*/
- height: 200px; /*must have*/
-}/*
- * jQuery UI Progressbar 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Progressbar#theming
- */
-.ui-progressbar { height:2em; text-align: left; overflow: hidden; }
-.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; } \ No newline at end of file
diff --git a/plugins/jqueryui/themes/classic/roundcube-custom.diff b/plugins/jqueryui/themes/classic/roundcube-custom.diff
index f5be87956..8e99e1879 100644
--- a/plugins/jqueryui/themes/classic/roundcube-custom.diff
+++ b/plugins/jqueryui/themes/classic/roundcube-custom.diff
@@ -1,118 +1,174 @@
---- jquery-ui-1.8.18.custom.css.orig 2012-03-02 08:13:36.000000000 +0100
-+++ jquery-ui-1.8.18.custom.css 2012-03-02 17:22:10.000000000 +0100
-@@ -58,7 +58,7 @@
- .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Lucida Grande, Verdana, Arial, Helvetica, sans-serif; font-size: 1em; }
- .ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #000000; }
- .ui-widget-content a { color: #000000; }
--.ui-widget-header { border: 1px solid #999999; background: #f4f4f4 url(images/ui-bg_highlight-hard_90_f4f4f4_1x100.png) 50% 50% repeat-x; color: #333333; font-weight: bold; }
-+.ui-widget-header { border: 1px solid #999999; border-width: 0 0 1px 0; background: #f4f4f4 url(images/listheader.png) 50% 50% repeat; color: #333333; font-weight: bold; margin: -0.2em -0.2em 0 -0.2em; }
- .ui-widget-header a { color: #333333; }
-
- /* Interaction states
-@@ -69,6 +69,8 @@
- .ui-state-hover a, .ui-state-hover a:hover { color: #000000; text-decoration: none; }
- .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #a4a4a4; background: #a3a3a3 url(images/ui-bg_highlight-hard_90_a3a3a3_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #000000; }
- .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #000000; text-decoration: none; }
-+.ui-state-focus, .ui-widget-content .ui-state-focus { border: 1px solid #c33; color: #a00; }
-+.ui-tabs-nav .ui-state-focus { border: 1px solid #a4a4a4; color: #000000; }
- .ui-widget :active { outline: none; }
-
- /* Interaction Cues
-@@ -79,7 +81,7 @@
- .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cc3333; }
- .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cc3333; }
- .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
--.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
-+.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .6; filter:Alpha(Opacity=60); font-weight: normal; }
- .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
-
- /* Icons
-@@ -346,6 +348,8 @@
- /* workarounds */
- * html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
+--- jquery-ui-1.10.4.custom.orig.css 2014-06-17 00:44:04.000000000 +0200
++++ jquery-ui-1.10.4.custom.css 2014-07-31 08:55:11.000000000 +0200
+@@ -226,13 +226,18 @@
+ width: 3.7em;
+ }
-+#ui-active-menuitem { background:#c33; border-color:#a22; color:#fff; }
++button.ui-button-text-only,
++a.ui-button-text-only {
++ background-image: url("images/buttongradient.png") !important;
++}
+
- /*
- * jQuery UI Menu 1.8.18
- *
-@@ -361,6 +365,9 @@
- margin: 0;
- display:block;
- float: left;
+ /* button text element */
+ .ui-button .ui-button-text {
+ display: block;
+ line-height: normal;
+ }
+ .ui-button-text-only .ui-button-text {
+- padding: .4em 1em;
++ padding: .3em 1em;
+ }
+ .ui-button-icon-only .ui-button-text,
+ .ui-button-icons-only .ui-button-text {
+@@ -301,6 +306,9 @@
+ width: 17em;
+ padding: .2em .2em 0;
+ display: none;
+ box-shadow: 1px 1px 18px #999;
+ -moz-box-shadow: 1px 1px 12px #999;
+ -webkit-box-shadow: #999 1px 1px 12px;
}
+ .ui-datepicker .ui-datepicker-header {
+ position: relative;
+@@ -374,6 +382,11 @@
+ text-align: right;
+ text-decoration: none;
+ }
++.ui-datepicker td.ui-datepicker-current-day .ui-state-active {
++ background:#c33;
++ border-color:#a22;
++ color:#fff;
++}
+ .ui-datepicker .ui-datepicker-buttonpane {
+ background-image: none;
+ margin: .7em 0 0 0;
+@@ -385,7 +398,7 @@
+ .ui-datepicker .ui-datepicker-buttonpane button {
+ float: right;
+ margin: .5em .2em .4em;
+- cursor: pointer;
++ cursor: default;
+ padding: .2em .6em .3em .6em;
+ width: auto;
+ overflow: visible;
+@@ -469,6 +482,9 @@
+ left: 0;
+ padding: .2em;
+ outline: 0;
++ -webkit-box-shadow: #999 1px 1px 12px;
++ -moz-box-shadow: 1px 1px 12px #999;
++ box-shadow: 1px 1px 18px #999;
+ }
+ .ui-dialog .ui-dialog-titlebar {
+ padding: .4em 1em;
+@@ -491,6 +507,9 @@
+ padding: 1px;
+ height: 20px;
+ }
++.no-close .ui-dialog-titlebar-close {
++ display: none !important;
++}
+ .ui-dialog .ui-dialog-content {
+ position: relative;
+ border: 0;
+@@ -510,7 +529,7 @@
+ }
+ .ui-dialog .ui-dialog-buttonpane button {
+ margin: .5em .4em .5em 0;
+- cursor: pointer;
++ cursor: default;
+ }
+ .ui-dialog .ui-resizable-se {
+ width: 12px;
+@@ -528,6 +547,9 @@
+ margin: 0;
+ display: block;
+ outline: none;
++ -webkit-box-shadow: #999 1px 1px 12px;
++ -moz-box-shadow: 1px 1px 12px #999;
++ box-shadow: 1px 1px 18px #999;
+ }
.ui-menu .ui-menu {
margin-top: -3px;
-@@ -399,10 +406,11 @@
- button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
- .ui-button-icons-only { width: 3.4em; }
- button.ui-button-icons-only { width: 3.7em; }
-+button.ui-button-text-only, a.ui-button-text-only { background-image: url(images/buttongradient.png) !important; }
-
- /*button text element */
- .ui-button .ui-button-text { display: block; line-height: 1.4; }
--.ui-button-text-only .ui-button-text { padding: .4em 1em; }
-+.ui-button-text-only .ui-button-text { padding: .3em 1em; }
- .ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
- .ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
- .ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
-@@ -432,7 +440,7 @@
- *
- * http://docs.jquery.com/UI/Dialog#theming
- */
--.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
-+.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; box-shadow: 1px 1px 18px #999; -moz-box-shadow: 1px 1px 12px #999; -webkit-box-shadow: #999 1px 1px 12px; }
- .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; }
- .ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; }
- .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
-@@ -441,7 +449,7 @@
- .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
- .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
- .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
--.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
-+.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: default; }
- .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
- .ui-draggable .ui-dialog-titlebar { cursor: move; }
- /*
-@@ -478,13 +486,16 @@
- */
- .ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
- .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
--.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
--.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
-+.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 0 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; -moz-border-radius-topleft: 2px; -webkit-border-top-left-radius: 2px; border-top-left-radius: 2px; -moz-border-radius-topright: 2px; -webkit-border-top-right-radius: 2px; border-top-right-radius: 2px; }
-+.ui-tabs .ui-tabs-nav li a { float: left; padding: .3em 1em; text-decoration: none; }
- .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
- .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
- .ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
- .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
- .ui-tabs .ui-tabs-hide { display: none !important; }
-+
-+.ui-dialog .ui-tabs .ui-tabs-nav li.ui-tabs-selected { background:#fff; }
-+
- /*
- * jQuery UI Datepicker 1.8.18
- *
-@@ -494,7 +505,7 @@
- *
- * http://docs.jquery.com/UI/Datepicker#theming
- */
--.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
-+.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; box-shadow: 1px 1px 18px #999; -moz-box-shadow: 1px 1px 12px #999; -webkit-box-shadow: #999 1px 1px 12px; }
- .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
- .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
- .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
-@@ -512,8 +523,9 @@
- .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
- .ui-datepicker td { border: 0; padding: 1px; }
- .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
-+.ui-datepicker td.ui-datepicker-current-day .ui-state-active { background:#c33; border-color:#a22; color:#fff; }
- .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
--.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
-+.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: default; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
- .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
+@@ -559,6 +581,9 @@
+ .ui-menu .ui-menu-item a.ui-state-active {
+ font-weight: normal;
+ margin: -1px;
++ background: #c33;
++ border-color: #a22;
++ color: #fff;
+ }
- /* with multiple calendars */
+ .ui-menu .ui-state-disabled {
+@@ -740,20 +765,29 @@
+ float: left;
+ position: relative;
+ top: 0;
+- margin: 1px .2em 0 0;
++ margin: 0;
+ border-bottom-width: 0;
+ padding: 0;
+ white-space: nowrap;
++ -webkit-border-top-left-radius: 2px;
++ -moz-border-radius-topleft: 2px;
++ border-top-left-radius: 2px;
++ -webkit-border-top-right-radius: 2px;
++ -moz-border-radius-topright: 2px;
++ border-top-right-radius: 2px;
+ }
+ .ui-tabs .ui-tabs-nav .ui-tabs-anchor {
+ float: left;
+- padding: .5em 1em;
++ padding: .3em 1em;
+ text-decoration: none;
+ }
+ .ui-tabs .ui-tabs-nav li.ui-tabs-active {
+ margin-bottom: -1px;
+ padding-bottom: 1px;
+ }
++.ui-dialog .ui-tabs-nav li.ui-tabs-active {
++ background: #fff;
++}
+ .ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
+ .ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
+ .ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
+@@ -806,9 +840,11 @@
+ }
+ .ui-widget-header {
+ border: 1px solid #999999;
+- background: #f4f4f4 url("images/ui-bg_highlight-hard_90_f4f4f4_1x100.png") 50% 50% repeat-x;
++ border-width: 0 0 1px 0;
++ background: #f4f4f4 url("images/listheader.png") 50% 50% repeat;
+ color: #333333;
+ font-weight: bold;
++ margin: -0.2em -0.2em 0 -0.2em;
+ }
+ .ui-widget-header a {
+ color: #333333;
+@@ -841,6 +877,15 @@
+ font-weight: normal;
+ color: #000000;
+ }
++.ui-state-focus,
++.ui-widget-content .ui-state-focus {
++ border: 1px solid #c33;
++ color: #a00;
++}
++.ui-tabs-nav .ui-state-focus {
++ border: 1px solid #a4a4a4;
++ color: #000;
++}
+ .ui-state-hover a,
+ .ui-state-hover a:hover,
+ .ui-state-hover a:link,
+@@ -906,8 +951,8 @@
+ .ui-priority-secondary,
+ .ui-widget-content .ui-priority-secondary,
+ .ui-widget-header .ui-priority-secondary {
+- opacity: .7;
+- filter:Alpha(Opacity=70);
++ opacity: .6;
++ filter:Alpha(Opacity=60);
+ font-weight: normal;
+ }
+ .ui-state-disabled,
diff --git a/plugins/jqueryui/themes/larry/images/animated-overlay.gif b/plugins/jqueryui/themes/larry/images/animated-overlay.gif
new file mode 100755
index 000000000..d441f75eb
--- /dev/null
+++ b/plugins/jqueryui/themes/larry/images/animated-overlay.gif
Binary files differ
diff --git a/plugins/jqueryui/themes/larry/images/ui-bg_highlight-hard_55_b0ccd7_1x100.png b/plugins/jqueryui/themes/larry/images/ui-bg_highlight-hard_55_b0ccd7_1x100.png
deleted file mode 100755
index 04f19af52..000000000
--- a/plugins/jqueryui/themes/larry/images/ui-bg_highlight-hard_55_b0ccd7_1x100.png
+++ /dev/null
Binary files differ
diff --git a/plugins/jqueryui/themes/larry/images/ui-bg_highlight-hard_65_ffffff_1x100.png b/plugins/jqueryui/themes/larry/images/ui-bg_highlight-hard_65_ffffff_1x100.png
deleted file mode 100755
index eaa8cfa3c..000000000
--- a/plugins/jqueryui/themes/larry/images/ui-bg_highlight-hard_65_ffffff_1x100.png
+++ /dev/null
Binary files differ
diff --git a/plugins/jqueryui/themes/larry/images/ui-bg_highlight-hard_75_eaeaea_1x100.png b/plugins/jqueryui/themes/larry/images/ui-bg_highlight-hard_75_eaeaea_1x100.png
deleted file mode 100755
index 3231591bd..000000000
--- a/plugins/jqueryui/themes/larry/images/ui-bg_highlight-hard_75_eaeaea_1x100.png
+++ /dev/null
Binary files differ
diff --git a/plugins/jqueryui/themes/larry/images/ui-bg_highlight-hard_75_f8f8f8_1x100.png b/plugins/jqueryui/themes/larry/images/ui-bg_highlight-hard_75_f8f8f8_1x100.png
deleted file mode 100755
index e2286450a..000000000
--- a/plugins/jqueryui/themes/larry/images/ui-bg_highlight-hard_75_f8f8f8_1x100.png
+++ /dev/null
Binary files differ
diff --git a/plugins/jqueryui/themes/larry/images/ui-bg_highlight-soft_75_fafafa_1x100.png b/plugins/jqueryui/themes/larry/images/ui-bg_highlight-soft_75_fafafa_1x100.png
deleted file mode 100755
index a13a9720f..000000000
--- a/plugins/jqueryui/themes/larry/images/ui-bg_highlight-soft_75_fafafa_1x100.png
+++ /dev/null
Binary files differ
diff --git a/plugins/jqueryui/themes/larry/images/ui-bg_highlight-soft_90_e4e4e4_1x100.png b/plugins/jqueryui/themes/larry/images/ui-bg_highlight-soft_90_e4e4e4_1x100.png
deleted file mode 100755
index 675c05118..000000000
--- a/plugins/jqueryui/themes/larry/images/ui-bg_highlight-soft_90_e4e4e4_1x100.png
+++ /dev/null
Binary files differ
diff --git a/plugins/jqueryui/themes/larry/jquery-ui-1.10.4.custom.css b/plugins/jqueryui/themes/larry/jquery-ui-1.10.4.custom.css
new file mode 100755
index 000000000..737f4771a
--- /dev/null
+++ b/plugins/jqueryui/themes/larry/jquery-ui-1.10.4.custom.css
@@ -0,0 +1,1515 @@
+/*! jQuery UI - v1.10.4 - 2014-06-17
+* http://jqueryui.com
+* Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css, jquery.ui.theme.css
+* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande%2CVerdana%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.0em&cornerRadius=5px&bgColorHeader=e4e4e4&bgTextureHeader=highlight_soft&bgImgOpacityHeader=90&borderColorHeader=fafafa&fcHeader=666666&iconColorHeader=004458&bgColorContent=fafafa&bgTextureContent=highlight_soft&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=33333&iconColorContent=004458&bgColorDefault=f8f8f8&bgTextureDefault=highlight_hard&bgImgOpacityDefault=75&borderColorDefault=cccccc&fcDefault=666666&iconColorDefault=004458&bgColorHover=eaeaea&bgTextureHover=highlight_hard&bgImgOpacityHover=75&borderColorHover=aaaaaa&fcHover=333333&iconColorHover=004458&bgColorActive=ffffff&bgTextureActive=highlight_hard&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=333333&iconColorActive=004458&bgColorHighlight=b0ccd7&bgTextureHighlight=highlight_hard&bgImgOpacityHighlight=55&borderColorHighlight=a3a3a3&fcHighlight=004458&iconColorHighlight=004458&bgColorError=fef1ec&bgTextureError=flat&bgImgOpacityError=95&borderColorError=d7211e&fcError=d64040&iconColorError=d7211e&bgColorOverlay=333333&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=50&bgColorShadow=666666&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=20&thicknessShadow=6px&offsetTopShadow=-6px&offsetLeftShadow=-6px&cornerRadiusShadow=8px
+* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden {
+ display: none;
+}
+.ui-helper-hidden-accessible {
+ border: 0;
+ clip: rect(0 0 0 0);
+ height: 1px;
+ margin: -1px;
+ overflow: hidden;
+ padding: 0;
+ position: absolute;
+ width: 1px;
+}
+.ui-helper-reset {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ outline: 0;
+ line-height: 1.3;
+ text-decoration: none;
+ font-size: 100%;
+ list-style: none;
+}
+.ui-helper-clearfix:before,
+.ui-helper-clearfix:after {
+ content: "";
+ display: table;
+ border-collapse: collapse;
+}
+.ui-helper-clearfix:after {
+ clear: both;
+}
+.ui-helper-clearfix {
+ min-height: 0; /* support: IE7 */
+}
+.ui-helper-zfix {
+ width: 100%;
+ height: 100%;
+ top: 0;
+ left: 0;
+ position: absolute;
+ opacity: 0;
+ filter:Alpha(Opacity=0);
+}
+
+.ui-front {
+ z-index: 100;
+}
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled {
+ cursor: default !important;
+}
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon {
+ display: block;
+ text-indent: -99999px;
+ overflow: hidden;
+ background-repeat: no-repeat;
+}
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay {
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+}
+.ui-resizable {
+ position: relative;
+}
+.ui-resizable-handle {
+ position: absolute;
+ font-size: 0.1px;
+ display: block;
+}
+.ui-resizable-disabled .ui-resizable-handle,
+.ui-resizable-autohide .ui-resizable-handle {
+ display: none;
+}
+.ui-resizable-n {
+ cursor: n-resize;
+ height: 7px;
+ width: 100%;
+ top: -5px;
+ left: 0;
+}
+.ui-resizable-s {
+ cursor: s-resize;
+ height: 7px;
+ width: 100%;
+ bottom: -5px;
+ left: 0;
+}
+.ui-resizable-e {
+ cursor: e-resize;
+ width: 7px;
+ right: -5px;
+ top: 0;
+ height: 100%;
+}
+.ui-resizable-w {
+ cursor: w-resize;
+ width: 7px;
+ left: -5px;
+ top: 0;
+ height: 100%;
+}
+.ui-resizable-se {
+ cursor: se-resize;
+ width: 12px;
+ height: 12px;
+ right: 1px;
+ bottom: 1px;
+}
+.ui-resizable-sw {
+ cursor: sw-resize;
+ width: 9px;
+ height: 9px;
+ left: -5px;
+ bottom: -5px;
+}
+.ui-resizable-nw {
+ cursor: nw-resize;
+ width: 9px;
+ height: 9px;
+ left: -5px;
+ top: -5px;
+}
+.ui-resizable-ne {
+ cursor: ne-resize;
+ width: 9px;
+ height: 9px;
+ right: -5px;
+ top: -5px;
+}
+.ui-selectable-helper {
+ position: absolute;
+ z-index: 100;
+ border: 1px dotted black;
+}
+.ui-accordion .ui-accordion-header {
+ display: block;
+ cursor: pointer;
+ position: relative;
+ margin-top: 2px;
+ padding: .5em .5em .5em .7em;
+ min-height: 0; /* support: IE7 */
+}
+.ui-accordion .ui-accordion-icons {
+ padding-left: 2.2em;
+}
+.ui-accordion .ui-accordion-noicons {
+ padding-left: .7em;
+}
+.ui-accordion .ui-accordion-icons .ui-accordion-icons {
+ padding-left: 2.2em;
+}
+.ui-accordion .ui-accordion-header .ui-accordion-header-icon {
+ position: absolute;
+ left: .5em;
+ top: 50%;
+ margin-top: -8px;
+}
+.ui-accordion .ui-accordion-content {
+ padding: 1em 2.2em;
+ border-top: 0;
+ overflow: auto;
+}
+.ui-autocomplete {
+ position: absolute;
+ top: 0;
+ left: 0;
+ cursor: default;
+}
+.ui-button {
+ display: inline-block;
+ position: relative;
+ padding: 0;
+ line-height: normal;
+ margin-right: .1em;
+ cursor: pointer;
+ vertical-align: middle;
+ text-align: center;
+ overflow: visible; /* removes extra width in IE */
+}
+.ui-button,
+.ui-button:link,
+.ui-button:visited,
+.ui-button:hover,
+.ui-button:active {
+ text-decoration: none;
+}
+/* to make room for the icon, a width needs to be set here */
+.ui-button-icon-only {
+ width: 2.2em;
+}
+/* button elements seem to need a little more width */
+button.ui-button-icon-only {
+ width: 2.4em;
+}
+.ui-button-icons-only {
+ width: 3.4em;
+}
+button.ui-button-icons-only {
+ width: 3.7em;
+}
+
+/* button text element */
+.ui-button .ui-button-text {
+ display: block;
+ line-height: normal;
+}
+.ui-button-text-only .ui-button-text {
+ padding: .4em 1em;
+}
+.ui-button-icon-only .ui-button-text,
+.ui-button-icons-only .ui-button-text {
+ padding: .4em;
+ text-indent: -9999999px;
+ width: 1px;
+ overflow: hidden;
+}
+.ui-button-text-icon-primary .ui-button-text,
+.ui-button-text-icons .ui-button-text {
+ padding: .4em 1em .4em 2.1em;
+}
+.ui-button-text-icon-secondary .ui-button-text,
+.ui-button-text-icons .ui-button-text {
+ padding: .4em 2.1em .4em 1em;
+}
+.ui-button-text-icons .ui-button-text {
+ padding-left: 2.1em;
+ padding-right: 2.1em;
+}
+/* no icon support for input elements, provide padding by default */
+input.ui-button {
+ padding: .4em 1em;
+}
+
+/* button icon element(s) */
+.ui-button-icon-only .ui-icon,
+.ui-button-text-icon-primary .ui-icon,
+.ui-button-text-icon-secondary .ui-icon,
+.ui-button-text-icons .ui-icon,
+.ui-button-icons-only .ui-icon {
+ position: absolute;
+ top: 50%;
+ margin-top: -8px;
+}
+.ui-button-icon-only .ui-icon {
+ left: 50%;
+ margin-left: -8px;
+}
+.ui-button-text-icon-primary .ui-button-icon-primary,
+.ui-button-text-icons .ui-button-icon-primary,
+.ui-button-icons-only .ui-button-icon-primary {
+ left: .5em;
+}
+.ui-button-text-icon-secondary .ui-button-icon-secondary,
+.ui-button-text-icons .ui-button-icon-secondary,
+.ui-button-icons-only .ui-button-icon-secondary {
+ right: .5em;
+}
+
+/* button sets */
+.ui-buttonset {
+ margin-right: 7px;
+}
+.ui-buttonset .ui-button {
+ margin-left: 0;
+ margin-right: -.3em;
+}
+
+/* workarounds */
+/* reset extra padding in Firefox, see h5bp.com/l */
+input.ui-button::-moz-focus-inner,
+button.ui-button::-moz-focus-inner {
+ border: 0;
+ padding: 0;
+}
+.ui-datepicker {
+ width: 17em;
+ padding: .2em .2em 0;
+ display: none;
+}
+.ui-datepicker .ui-datepicker-header {
+ position: relative;
+ padding: .2em 0;
+}
+.ui-datepicker .ui-datepicker-prev,
+.ui-datepicker .ui-datepicker-next {
+ position: absolute;
+ top: 2px;
+ width: 1.8em;
+ height: 1.8em;
+}
+.ui-datepicker .ui-datepicker-prev-hover,
+.ui-datepicker .ui-datepicker-next-hover {
+ top: 1px;
+}
+.ui-datepicker .ui-datepicker-prev {
+ left: 2px;
+}
+.ui-datepicker .ui-datepicker-next {
+ right: 2px;
+}
+.ui-datepicker .ui-datepicker-prev-hover {
+ left: 1px;
+}
+.ui-datepicker .ui-datepicker-next-hover {
+ right: 1px;
+}
+.ui-datepicker .ui-datepicker-prev span,
+.ui-datepicker .ui-datepicker-next span {
+ display: block;
+ position: absolute;
+ left: 50%;
+ margin-left: -8px;
+ top: 50%;
+ margin-top: -8px;
+}
+.ui-datepicker .ui-datepicker-title {
+ margin: 0 2.3em;
+ line-height: 1.8em;
+ text-align: center;
+}
+.ui-datepicker .ui-datepicker-title select {
+ font-size: 1em;
+ margin: 1px 0;
+}
+.ui-datepicker select.ui-datepicker-month,
+.ui-datepicker select.ui-datepicker-year {
+ width: 49%;
+}
+.ui-datepicker table {
+ width: 100%;
+ font-size: .9em;
+ border-collapse: collapse;
+ margin: 0 0 .4em;
+}
+.ui-datepicker th {
+ padding: .7em .3em;
+ text-align: center;
+ font-weight: bold;
+ border: 0;
+}
+.ui-datepicker td {
+ border: 0;
+ padding: 1px;
+}
+.ui-datepicker td span,
+.ui-datepicker td a {
+ display: block;
+ padding: .2em;
+ text-align: right;
+ text-decoration: none;
+}
+.ui-datepicker .ui-datepicker-buttonpane {
+ background-image: none;
+ margin: .7em 0 0 0;
+ padding: 0 .2em;
+ border-left: 0;
+ border-right: 0;
+ border-bottom: 0;
+}
+.ui-datepicker .ui-datepicker-buttonpane button {
+ float: right;
+ margin: .5em .2em .4em;
+ cursor: pointer;
+ padding: .2em .6em .3em .6em;
+ width: auto;
+ overflow: visible;
+}
+.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
+ float: left;
+}
+
+/* with multiple calendars */
+.ui-datepicker.ui-datepicker-multi {
+ width: auto;
+}
+.ui-datepicker-multi .ui-datepicker-group {
+ float: left;
+}
+.ui-datepicker-multi .ui-datepicker-group table {
+ width: 95%;
+ margin: 0 auto .4em;
+}
+.ui-datepicker-multi-2 .ui-datepicker-group {
+ width: 50%;
+}
+.ui-datepicker-multi-3 .ui-datepicker-group {
+ width: 33.3%;
+}
+.ui-datepicker-multi-4 .ui-datepicker-group {
+ width: 25%;
+}
+.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
+.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
+ border-left-width: 0;
+}
+.ui-datepicker-multi .ui-datepicker-buttonpane {
+ clear: left;
+}
+.ui-datepicker-row-break {
+ clear: both;
+ width: 100%;
+ font-size: 0;
+}
+
+/* RTL support */
+.ui-datepicker-rtl {
+ direction: rtl;
+}
+.ui-datepicker-rtl .ui-datepicker-prev {
+ right: 2px;
+ left: auto;
+}
+.ui-datepicker-rtl .ui-datepicker-next {
+ left: 2px;
+ right: auto;
+}
+.ui-datepicker-rtl .ui-datepicker-prev:hover {
+ right: 1px;
+ left: auto;
+}
+.ui-datepicker-rtl .ui-datepicker-next:hover {
+ left: 1px;
+ right: auto;
+}
+.ui-datepicker-rtl .ui-datepicker-buttonpane {
+ clear: right;
+}
+.ui-datepicker-rtl .ui-datepicker-buttonpane button {
+ float: left;
+}
+.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
+.ui-datepicker-rtl .ui-datepicker-group {
+ float: right;
+}
+.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
+.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
+ border-right-width: 0;
+ border-left-width: 1px;
+}
+.ui-dialog {
+ position: absolute;
+ top: 0;
+ left: 0;
+ padding: 3px;
+ background: #fff;
+ border-radius: 6px !important;
+ border: 0 !important;
+ outline: 0;
+ -webkit-box-shadow: #666 1px 1px 12px;
+ -moz-box-shadow: 1px 1px 12px #666;
+ box-shadow: 1px 1px 18px #666;
+}
+.ui-dialog .ui-dialog-titlebar {
+ padding: 15px 1em 8px 1em;
+ position: relative;
+ border: 0;
+ border-radius: 5px 5px 0 0;
+}
+.ui-dialog .ui-dialog-title {
+ float: left;
+ margin: .1em 16px .1em 0;
+ font-size: 1.3em;
+ text-shadow: 1px 1px 1px #fff;
+ white-space: nowrap;
+ width: 90%;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+.ui-dialog .ui-button.ui-dialog-titlebar-close {
+ position: absolute;
+ right: -15px;
+ top: -15px;
+ width: 29px;
+ height: 29px;
+ margin: 0;
+ padding: 0;
+ z-index: 99999;
+ border-radius: 50%;
+ border-width: 0 !important;
+ background: none !important;
+ filter: none !important;
+ -webkit-box-shadow: none !important;
+ -moz-box-shadow: none !important;
+ -o-box-shadow: none !important;
+ box-shadow: none !important;
+}
+.ui-dialog .ui-dialog-titlebar-close.ui-button:focus,
+.ui-dialog .ui-dialog-titlebar-close.ui-button.ui-state-focus {
+ box-shadow: 0 0 2px 2px rgba(71,135,177, 0.9) !important;
+ -webkit-box-shadow: 0 0 2px 2px rgba(71,135,177, 0.9) !important;
+}
+.ui-dialog .ui-dialog-titlebar-close .ui-icon-closethick {
+ top: 0;
+ left: -1px;
+ margin: 0;
+ width: 29px;
+ height: 29px;
+ border-radius: 50%;
+ background: url("images/ui-dialog-close.png") 0 0 no-repeat;
+}
+.no-close .ui-dialog-titlebar-close {
+ display: none !important;
+}
+.ui-dialog .ui-dialog-content {
+ position: relative;
+ border: 0;
+ padding: 1.5em 1em 0.5em 1em;
+ background: none;
+ overflow: auto;
+}
+.ui-dialog .ui-widget-content {
+ border: 0;
+}
+.ui-dialog .ui-dialog-buttonpane {
+ text-align: left;
+ border-width: 1px 0 0 0;
+ background-image: none;
+ border-color: #ddd;
+ border-style: solid;
+ margin: 0;
+ padding: .3em 1em .5em .8em;
+}
+.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
+ float: left;
+}
+.ui-dialog .ui-dialog-buttonpane button {
+ margin: .5em .4em .5em 0;
+ cursor: pointer;
+}
+.ui-dialog .ui-resizable-se {
+ width: 14px;
+ height: 14px;
+ right: 3px;
+ bottom: 3px;
+ background-position: -80px -224px;
+}
+.ui-draggable .ui-dialog-titlebar {
+ cursor: move;
+}
+.ui-menu {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+ display: block;
+ outline: none;
+ background: #444;
+ border: 1px solid #999;
+ border-radius: 4px !important;
+ -webkit-box-shadow: 0 2px 6px 0 #333;
+ -moz-box-shadow: 0 2px 6px 0 #333;
+ -o-box-shadow: 0 2px 6px 0 #333;
+ box-shadow: 0 2px 6px 0 #333;
+}
+.ui-menu .ui-menu {
+ margin-top: -3px;
+ position: absolute;
+}
+.ui-menu .ui-menu-item {
+ margin: 0;
+ padding: 0;
+ width: 100%;
+ /* support: IE10, see #8844 */
+ list-style-image: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
+ color: #fff;
+ white-space: nowrap;
+ border-top: 1px solid #5a5a5a;
+ border-bottom: 1px solid #333;
+}
+.ui-menu .ui-menu-item:first-child {
+ border-top: 0;
+}
+.ui-menu .ui-menu-item:last-child {
+ border-bottom: 0;
+}
+.ui-menu .ui-menu-divider {
+ margin: 5px -2px 5px -2px;
+ height: 0;
+ font-size: 0;
+ line-height: 0;
+ border-width: 1px 0 0 0;
+}
+.ui-menu .ui-menu-item a {
+ text-decoration: none;
+ display: block;
+ padding: 6px 10px 4px 10px;
+ line-height: 1.5;
+ min-height: 0; /* support: IE7 */
+ font-weight: normal;
+ border: 0;
+ margin: 0;
+ border-radius: 0;
+ color: #fff;
+ background: #444;
+ text-shadow: 0px 1px 1px #333;
+}
+.ui-menu .ui-menu-item a.ui-state-focus,
+.ui-menu .ui-menu-item a.ui-state-active {
+ font-weight: normal;
+ background: #00aad6;
+ background: -moz-linear-gradient(top, #00aad6 0%, #008fc9 100%);
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#00aad6), color-stop(100%,#008fc9));
+ background: -o-linear-gradient(top, #00aad6 0%, #008fc9 100%);
+ background: -ms-linear-gradient(top, #00aad6 0%, #008fc9 100%);
+ background: linear-gradient(top, #00aad6 0%, #008fc9 100%);
+}
+
+.ui-menu .ui-state-disabled {
+ font-weight: normal;
+ margin: .4em 0 .2em;
+ line-height: 1.5;
+}
+.ui-menu .ui-state-disabled a {
+ cursor: default;
+}
+
+/* icon support */
+.ui-menu-icons {
+ position: relative;
+}
+.ui-menu-icons .ui-menu-item a {
+ position: relative;
+ padding-left: 2em;
+}
+
+/* left-aligned */
+.ui-menu .ui-icon {
+ position: absolute;
+ top: .2em;
+ left: .2em;
+}
+
+/* right-aligned */
+.ui-menu .ui-menu-icon {
+ position: static;
+ float: right;
+}
+.ui-progressbar {
+ height: 2em;
+ text-align: left;
+ overflow: hidden;
+}
+.ui-progressbar .ui-progressbar-value {
+ margin: -1px;
+ height: 100%;
+}
+.ui-progressbar .ui-progressbar-overlay {
+ background: url("images/animated-overlay.gif");
+ height: 100%;
+ filter: alpha(opacity=25);
+ opacity: 0.25;
+}
+.ui-progressbar-indeterminate .ui-progressbar-value {
+ background-image: none;
+}
+.ui-slider {
+ position: relative;
+ text-align: left;
+}
+.ui-slider .ui-slider-handle {
+ position: absolute;
+ z-index: 2;
+ width: 1.2em;
+ height: 1.2em;
+ cursor: default;
+}
+.ui-slider .ui-slider-range {
+ position: absolute;
+ z-index: 1;
+ font-size: .7em;
+ display: block;
+ border: 0;
+ background: #019bc6;
+ background: -moz-linear-gradient(top, #019bc6 0%, #017cb4 100%);
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#019bc6), color-stop(100%,#017cb4));
+ background: -o-linear-gradient(top, #019bc6 0%, #017cb4 100%);
+ background: -ms-linear-gradient(top, #019bc6 0%, #017cb4 100%);
+ background: linear-gradient(top, #019bc6 0%, #017cb4 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#019bc6', endColorstr='#017cb4', GradientType=0);
+}
+
+/* For IE8 - See #6727 */
+.ui-slider.ui-state-disabled .ui-slider-handle,
+.ui-slider.ui-state-disabled .ui-slider-range {
+ filter: inherit;
+}
+
+.ui-slider-horizontal {
+ height: .8em;
+}
+.ui-slider-horizontal .ui-slider-handle {
+ top: -.3em;
+ margin-left: -.6em;
+}
+.ui-slider-horizontal .ui-slider-range {
+ top: 0;
+ height: 100%;
+}
+.ui-slider-horizontal .ui-slider-range-min {
+ left: 0;
+}
+.ui-slider-horizontal .ui-slider-range-max {
+ right: 0;
+}
+
+.ui-slider-vertical {
+ width: .8em;
+ height: 100px;
+}
+.ui-slider-vertical .ui-slider-handle {
+ left: -.3em;
+ margin-left: 0;
+ margin-bottom: -.6em;
+}
+.ui-slider-vertical .ui-slider-range {
+ left: 0;
+ width: 100%;
+}
+.ui-slider-vertical .ui-slider-range-min {
+ bottom: 0;
+}
+.ui-slider-vertical .ui-slider-range-max {
+ top: 0;
+}
+.ui-spinner {
+ position: relative;
+ display: inline-block;
+ overflow: hidden;
+ padding: 0;
+ vertical-align: middle;
+}
+.ui-spinner-input {
+ border: none;
+ background: none;
+ color: inherit;
+ padding: 0;
+ margin: .2em 0;
+ vertical-align: middle;
+ margin-left: .4em;
+ margin-right: 22px;
+}
+.ui-spinner-button {
+ width: 16px;
+ height: 50%;
+ font-size: .5em;
+ padding: 0;
+ margin: 0;
+ text-align: center;
+ position: absolute;
+ cursor: default;
+ display: block;
+ overflow: hidden;
+ right: 0;
+}
+/* more specificity required here to override default borders */
+.ui-spinner a.ui-spinner-button {
+ border-top: none;
+ border-bottom: none;
+ border-right: none;
+}
+/* vertically center icon */
+.ui-spinner .ui-icon {
+ position: absolute;
+ margin-top: -8px;
+ top: 50%;
+ left: 0;
+}
+.ui-spinner-up {
+ top: 0;
+}
+.ui-spinner-down {
+ bottom: 0;
+}
+
+/* TR overrides */
+.ui-spinner .ui-icon-triangle-1-s {
+ /* need to fix icons sprite */
+ background-position: -65px -16px;
+}
+.ui-tabs {
+ position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+ padding: .2em;
+}
+.ui-tabs .ui-tabs-nav {
+ margin: 0; padding: 0;
+ border: 0;
+ background: transparent;
+ filter: none;
+ height: 44px;
+}
+.ui-tabs .ui-tabs-nav li {
+ list-style: none;
+ position: relative;
+ display: inline-block;
+ top: 0;
+ margin: 0;
+ border: 0 !important;
+ padding: 0 1px 0 0;
+ white-space: nowrap;
+ background: #f8f8f8;
+ background: -moz-linear-gradient(top, #f8f8f8 0%, #d3d3d3 50%, #f8f8f8 100%);
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f8f8f8), color-stop(50%,#d3d3d3), color-stop(100%,#f8f8f8));
+ background: -webkit-linear-gradient(top, #f8f8f8 0%, #d3d3d3 50%, #f8f8f8 100%);
+ background: -o-linear-gradient(top, #f8f8f8 0%, #d3d3d3 50%, #f8f8f8 100%);
+ background: -ms-linear-gradient(top, #f8f8f8 0%, #d3d3d3 50%, #f8f8f8 100%);
+ background: linear-gradient(top, #f8f8f8 0%, #d3d3d3 50%, #f8f8f8 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f8f8f8', endColorstr='#d3d3d3', GradientType=0);
+}
+.ui-tabs .ui-tabs-nav li:last-child {
+ background: none;
+}
+.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
+ display: inline-block;
+ padding: 15px;
+ text-decoration: none;
+ font-size: 12px;
+ color: #999;
+ background: #fafafa;
+ border-right: 1px solid #fafafa;
+}
+.ui-tabs .ui-tabs-nav li.ui-tabs-active {
+ margin-bottom: -1px;
+ padding-bottom: 1px;
+}
+.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
+.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
+.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
+ cursor: text;
+}
+.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
+ outline: none;
+ color: #004458;
+ background: #efefef;
+ background: -moz-linear-gradient(top, #fafafa 40%, #e4e4e4 100%);
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(40%,#fff), color-stop(100%,#e4e4e4));
+ background: -o-linear-gradient(top, #fafafa 40%, #e4e4e4 100%);
+ background: -ms-linear-gradient(top, #fafafa 40%, #e4e4e4 100%);
+ background: linear-gradient(top, #fafafa 40%, #e4e4e4 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fafafa', endColorstr='#e4e4e4', GradientType=0);
+}
+.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
+ cursor: pointer;
+}
+.ui-tabs .ui-tabs-panel {
+ display: block;
+ border-width: 0;
+ padding: 0.5em 1em;
+ margin-top: 0.2em;
+ background: #efefef;
+}
+.ui-tooltip {
+ padding: 8px;
+ position: absolute;
+ z-index: 9999;
+ max-width: 300px;
+ -webkit-box-shadow: 0 0 5px #aaa;
+ box-shadow: 0 0 5px #aaa;
+}
+body .ui-tooltip {
+ border-width: 2px;
+}
+
+/* Component containers
+----------------------------------*/
+.ui-widget {
+ font-family: Lucida Grande,Verdana,Arial,sans-serif;
+ font-size: 1.0em;
+}
+.ui-widget .ui-widget {
+ font-size: 1em;
+}
+.ui-widget input,
+.ui-widget select,
+.ui-widget textarea,
+.ui-widget button {
+ font-family: Lucida Grande,Verdana,Arial,sans-serif;
+ font-size: 1em;
+}
+.ui-widget-content {
+ border: 1px solid #aaaaaa;
+ background: #fafafa;
+ color: #333333;
+}
+.ui-widget-content a {
+ color: #0186ba;
+}
+.ui-widget-header {
+ border: 1px solid #fafafa;
+ background: #e4e4e4;
+ background: -moz-linear-gradient(top, #f2f2f2 0%, #e4e4e4 100%);
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f2f2f2), color-stop(100%,#e4e4e4));
+ background: -o-linear-gradient(top, #f2f2f2 0%, #e4e4e4 100%);
+ background: -ms-linear-gradient(top, #f2f2f2 0%, #e4e4e4 100%);
+ background: linear-gradient(top, #f2f2f2 0%, #e4e4e4 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f2f2f2', endColorstr='#e4e4e4', GradientType=0);
+ color: #666666;
+ font-weight: bold;
+}
+.ui-widget-header a {
+ color: #666666;
+}
+
+/* Interaction states
+----------------------------------*/
+.ui-state-default,
+.ui-widget-content .ui-state-default,
+.ui-widget-header .ui-state-default {
+ border: 1px solid #cccccc;
+ background: #f8f8f8;
+ font-weight: bold;
+ color: #666666;
+}
+.ui-state-default a,
+.ui-state-default a:link,
+.ui-state-default a:visited {
+ color: #666666;
+ text-decoration: none;
+}
+.ui-state-hover,
+.ui-widget-content .ui-state-hover,
+.ui-widget-header .ui-state-hover,
+.ui-state-focus,
+.ui-widget-content .ui-state-focus,
+.ui-widget-header .ui-state-focus {
+ border: 1px solid #aaaaaa;
+ background: #eaeaea;
+ font-weight: bold;
+ color: #333333;
+}
+.ui-state-hover a,
+.ui-state-hover a:hover,
+.ui-state-hover a:link,
+.ui-state-hover a:visited,
+.ui-state-focus a,
+.ui-state-focus a:hover,
+.ui-state-focus a:link,
+.ui-state-focus a:visited {
+ color: #333333;
+ text-decoration: none;
+}
+.ui-state-active,
+.ui-widget-content .ui-state-active,
+.ui-widget-header .ui-state-active {
+ border: 1px solid #aaaaaa;
+ background: #ffffff;
+ font-weight: bold;
+ color: #333333;
+}
+.ui-state-active a,
+.ui-state-active a:link,
+.ui-state-active a:visited {
+ color: #333333;
+ text-decoration: none;
+}
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight,
+.ui-widget-content .ui-state-highlight,
+.ui-widget-header .ui-state-highlight {
+ border: 1px solid #a3a3a3;
+ background: #b0ccd7;
+ color: #004458;
+}
+.ui-state-highlight a,
+.ui-widget-content .ui-state-highlight a,
+.ui-widget-header .ui-state-highlight a {
+ color: #004458;
+}
+.ui-state-error,
+.ui-widget-content .ui-state-error,
+.ui-widget-header .ui-state-error {
+ border: 1px solid #d7211e;
+ background: #fef1ec;
+ color: #d64040;
+}
+.ui-state-error a,
+.ui-widget-content .ui-state-error a,
+.ui-widget-header .ui-state-error a {
+ color: #d64040;
+}
+.ui-state-error-text,
+.ui-widget-content .ui-state-error-text,
+.ui-widget-header .ui-state-error-text {
+ color: #d64040;
+}
+.ui-priority-primary,
+.ui-widget-content .ui-priority-primary,
+.ui-widget-header .ui-priority-primary {
+ font-weight: bold;
+}
+.ui-priority-secondary,
+.ui-widget-content .ui-priority-secondary,
+.ui-widget-header .ui-priority-secondary {
+ opacity: .7;
+ filter:Alpha(Opacity=70);
+ font-weight: normal;
+}
+.ui-state-disabled,
+.ui-widget-content .ui-state-disabled,
+.ui-widget-header .ui-state-disabled {
+ opacity: .35;
+ filter:Alpha(Opacity=35);
+ background-image: none;
+}
+.ui-state-disabled .ui-icon {
+ filter:Alpha(Opacity=35); /* For IE8 - See #6059 */
+}
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon {
+ width: 16px;
+ height: 16px;
+}
+.ui-icon,
+.ui-widget-content .ui-icon {
+ background-image: url("images/ui-icons_004458_256x240.png");
+}
+.ui-widget-header .ui-icon {
+ background-image: url("images/ui-icons_004458_256x240.png");
+}
+.ui-state-default .ui-icon {
+ background-image: url("images/ui-icons_004458_256x240.png");
+}
+.ui-state-hover .ui-icon,
+.ui-state-focus .ui-icon {
+ background-image: url("images/ui-icons_004458_256x240.png");
+}
+.ui-state-active .ui-icon {
+ background-image: url("images/ui-icons_004458_256x240.png");
+}
+.ui-state-highlight .ui-icon {
+ background-image: url("images/ui-icons_004458_256x240.png");
+}
+.ui-state-error .ui-icon,
+.ui-state-error-text .ui-icon {
+ background-image: url("images/ui-icons_d7211e_256x240.png");
+}
+
+/* positioning */
+.ui-icon-blank { background-position: 16px 16px; }
+.ui-icon-carat-1-n { background-position: 0 0; }
+.ui-icon-carat-1-ne { background-position: -16px 0; }
+.ui-icon-carat-1-e { background-position: -32px 0; }
+.ui-icon-carat-1-se { background-position: -48px 0; }
+.ui-icon-carat-1-s { background-position: -64px 0; }
+.ui-icon-carat-1-sw { background-position: -80px 0; }
+.ui-icon-carat-1-w { background-position: -96px 0; }
+.ui-icon-carat-1-nw { background-position: -112px 0; }
+.ui-icon-carat-2-n-s { background-position: -128px 0; }
+.ui-icon-carat-2-e-w { background-position: -144px 0; }
+.ui-icon-triangle-1-n { background-position: 0 -16px; }
+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.ui-icon-triangle-1-e { background-position: -32px -16px; }
+.ui-icon-triangle-1-se { background-position: -48px -16px; }
+.ui-icon-triangle-1-s { background-position: -64px -16px; }
+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.ui-icon-triangle-1-w { background-position: -96px -16px; }
+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.ui-icon-arrow-1-n { background-position: 0 -32px; }
+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.ui-icon-arrow-1-e { background-position: -32px -32px; }
+.ui-icon-arrow-1-se { background-position: -48px -32px; }
+.ui-icon-arrow-1-s { background-position: -64px -32px; }
+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.ui-icon-arrow-1-w { background-position: -96px -32px; }
+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.ui-icon-arrow-4 { background-position: 0 -80px; }
+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.ui-icon-extlink { background-position: -32px -80px; }
+.ui-icon-newwin { background-position: -48px -80px; }
+.ui-icon-refresh { background-position: -64px -80px; }
+.ui-icon-shuffle { background-position: -80px -80px; }
+.ui-icon-transfer-e-w { background-position: -96px -80px; }
+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.ui-icon-folder-collapsed { background-position: 0 -96px; }
+.ui-icon-folder-open { background-position: -16px -96px; }
+.ui-icon-document { background-position: -32px -96px; }
+.ui-icon-document-b { background-position: -48px -96px; }
+.ui-icon-note { background-position: -64px -96px; }
+.ui-icon-mail-closed { background-position: -80px -96px; }
+.ui-icon-mail-open { background-position: -96px -96px; }
+.ui-icon-suitcase { background-position: -112px -96px; }
+.ui-icon-comment { background-position: -128px -96px; }
+.ui-icon-person { background-position: -144px -96px; }
+.ui-icon-print { background-position: -160px -96px; }
+.ui-icon-trash { background-position: -176px -96px; }
+.ui-icon-locked { background-position: -192px -96px; }
+.ui-icon-unlocked { background-position: -208px -96px; }
+.ui-icon-bookmark { background-position: -224px -96px; }
+.ui-icon-tag { background-position: -240px -96px; }
+.ui-icon-home { background-position: 0 -112px; }
+.ui-icon-flag { background-position: -16px -112px; }
+.ui-icon-calendar { background-position: -32px -112px; }
+.ui-icon-cart { background-position: -48px -112px; }
+.ui-icon-pencil { background-position: -64px -112px; }
+.ui-icon-clock { background-position: -80px -112px; }
+.ui-icon-disk { background-position: -96px -112px; }
+.ui-icon-calculator { background-position: -112px -112px; }
+.ui-icon-zoomin { background-position: -128px -112px; }
+.ui-icon-zoomout { background-position: -144px -112px; }
+.ui-icon-search { background-position: -160px -112px; }
+.ui-icon-wrench { background-position: -176px -112px; }
+.ui-icon-gear { background-position: -192px -112px; }
+.ui-icon-heart { background-position: -208px -112px; }
+.ui-icon-star { background-position: -224px -112px; }
+.ui-icon-link { background-position: -240px -112px; }
+.ui-icon-cancel { background-position: 0 -128px; }
+.ui-icon-plus { background-position: -16px -128px; }
+.ui-icon-plusthick { background-position: -32px -128px; }
+.ui-icon-minus { background-position: -48px -128px; }
+.ui-icon-minusthick { background-position: -64px -128px; }
+.ui-icon-close { background-position: -80px -128px; }
+.ui-icon-closethick { background-position: -96px -128px; }
+.ui-icon-key { background-position: -112px -128px; }
+.ui-icon-lightbulb { background-position: -128px -128px; }
+.ui-icon-scissors { background-position: -144px -128px; }
+.ui-icon-clipboard { background-position: -160px -128px; }
+.ui-icon-copy { background-position: -176px -128px; }
+.ui-icon-contact { background-position: -192px -128px; }
+.ui-icon-image { background-position: -208px -128px; }
+.ui-icon-video { background-position: -224px -128px; }
+.ui-icon-script { background-position: -240px -128px; }
+.ui-icon-alert { background-position: 0 -144px; }
+.ui-icon-info { background-position: -16px -144px; }
+.ui-icon-notice { background-position: -32px -144px; }
+.ui-icon-help { background-position: -48px -144px; }
+.ui-icon-check { background-position: -64px -144px; }
+.ui-icon-bullet { background-position: -80px -144px; }
+.ui-icon-radio-on { background-position: -96px -144px; }
+.ui-icon-radio-off { background-position: -112px -144px; }
+.ui-icon-pin-w { background-position: -128px -144px; }
+.ui-icon-pin-s { background-position: -144px -144px; }
+.ui-icon-play { background-position: 0 -160px; }
+.ui-icon-pause { background-position: -16px -160px; }
+.ui-icon-seek-next { background-position: -32px -160px; }
+.ui-icon-seek-prev { background-position: -48px -160px; }
+.ui-icon-seek-end { background-position: -64px -160px; }
+.ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.ui-icon-seek-first { background-position: -80px -160px; }
+.ui-icon-stop { background-position: -96px -160px; }
+.ui-icon-eject { background-position: -112px -160px; }
+.ui-icon-volume-off { background-position: -128px -160px; }
+.ui-icon-volume-on { background-position: -144px -160px; }
+.ui-icon-power { background-position: 0 -176px; }
+.ui-icon-signal-diag { background-position: -16px -176px; }
+.ui-icon-signal { background-position: -32px -176px; }
+.ui-icon-battery-0 { background-position: -48px -176px; }
+.ui-icon-battery-1 { background-position: -64px -176px; }
+.ui-icon-battery-2 { background-position: -80px -176px; }
+.ui-icon-battery-3 { background-position: -96px -176px; }
+.ui-icon-circle-plus { background-position: 0 -192px; }
+.ui-icon-circle-minus { background-position: -16px -192px; }
+.ui-icon-circle-close { background-position: -32px -192px; }
+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.ui-icon-circle-zoomin { background-position: -176px -192px; }
+.ui-icon-circle-zoomout { background-position: -192px -192px; }
+.ui-icon-circle-check { background-position: -208px -192px; }
+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.ui-icon-circlesmall-close { background-position: -32px -208px; }
+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.ui-icon-squaresmall-close { background-position: -80px -208px; }
+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.ui-corner-all,
+.ui-corner-top,
+.ui-corner-left,
+.ui-corner-tl {
+ border-top-left-radius: 5px;
+}
+.ui-corner-all,
+.ui-corner-top,
+.ui-corner-right,
+.ui-corner-tr {
+ border-top-right-radius: 5px;
+}
+.ui-corner-all,
+.ui-corner-bottom,
+.ui-corner-left,
+.ui-corner-bl {
+ border-bottom-left-radius: 5px;
+}
+.ui-corner-all,
+.ui-corner-bottom,
+.ui-corner-right,
+.ui-corner-br {
+ border-bottom-right-radius: 5px;
+}
+
+/* Overlays */
+.ui-widget-overlay {
+ background: #333333;
+ opacity: .5;
+ filter: Alpha(Opacity=50);
+}
+.ui-widget-shadow {
+ margin: -6px 0 0 -6px;
+ padding: 6px;
+ background: #666666;
+ opacity: .2;
+ filter: Alpha(Opacity=20);
+ border-radius: 8px;
+}
+
+/* Roundcube button styling */
+.ui-button.ui-state-default {
+ display: inline-block;
+ margin: 0 2px;
+ padding: 1px 2px;
+ text-shadow: 0px 1px 1px #fff;
+ border: 1px solid #c6c6c6;
+ border-radius: 4px;
+ background: #f7f7f7;
+ background: -moz-linear-gradient(top, #f9f9f9 0%, #e6e6e6 100%);
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f9f9f9), color-stop(100%,#e6e6e6));
+ background: -o-linear-gradient(top, #f9f9f9 0%, #e6e6e6 100%);
+ background: -ms-linear-gradient(top, #f9f9f9 0%, #e6e6e6 100%);
+ background: linear-gradient(top, #f9f9f9 0%, #e6e6e6 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f9f9f9', endColorstr='#e6e6e6', GradientType=0);
+ -webkit-box-shadow: 0 1px 1px 0 rgba(140, 140, 140, 0.3);
+ -moz-box-shadow: 0 1px 1px 0 rgba(140, 140, 140, 0.3);
+ -o-box-shadow: 0 1px 1px 0 rgba(140, 140, 140, 0.3);
+ box-shadow: 0 1px 1px 0 rgba(140, 140, 140, 0.3);
+ text-decoration: none;
+ outline: none;
+}
+
+.ui-button.mainaction {
+ color: #ededed;
+ text-shadow: 0px 1px 1px #333;
+ border-color: #1f262c;
+ background: #505050;
+ background: -moz-linear-gradient(top, #505050 0%, #2a2e31 100%);
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#505050), color-stop(100%,#2a2e31));
+ background: -o-linear-gradient(top, #505050 0%, #2a2e31 100%);
+ background: -ms-linear-gradient(top, #505050 0%, #2a2e31 100%);
+ background: linear-gradient(top, #505050 0%, #2a2e31 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#505050', endColorstr='#2a2e31', GradientType=0);
+ -moz-box-shadow: inset 0 1px 0 0 #777;
+ -webkit-box-shadow: inset 0 1px 0 0 #777;
+ -o-box-shadow: inset 0 1px 0 0 #777;
+ box-shadow: inset 0 1px 0 0 #777;
+}
+
+.ui-button.ui-state-focus {
+ color: #525252;
+ border-color: #4fadd5;
+ -moz-box-shadow: 0 0 2px 1px rgba(71,135,177, 0.6);
+ -webkit-box-shadow: 0 0 2px 1px rgba(71,135,177, 0.6);
+ -o-box-shadow: 0 0 2px 1px rgba(71,135,177, 0.6);
+ box-shadow: 0 0 2px 1px rgba(71,135,177, 0.6);
+}
+
+.ui-button.ui-state-active {
+ color: #525252;
+ border-color: #aaa;
+ background: #e6e6e6;
+ background: -moz-linear-gradient(top, #e6e6e6 0%, #f9f9f9 100%);
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#e6e6e6), color-stop(100%,#f9f9f9));
+ background: -o-linear-gradient(top, #e6e6e6 0%, #f9f9f9 100%);
+ background: -ms-linear-gradient(top, #e6e6e6 0%, #f9f9f9 100%);
+ background: linear-gradient(top, #e6e6e6 0%, #f9f9f9 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e6e6e6', endColorstr='#f9f9f9', GradientType=0);
+}
+
+.ui-button.ui-state-focus.mainaction,
+.ui-button.ui-state-hover.mainaction {
+ color: #fff;
+}
+
+.ui-button.ui-state-focus.mainaction {
+ border-color: #1f262c;
+ -moz-box-shadow: 0 0 2px 1px rgba(71,135,177, 0.6), inset 0 1px 0 0 #777;
+ -webkit-box-shadow: 0 0 2px 1px rgba(71,135,177, 0.6), inset 0 1px 0 0 #777;
+ -o-box-shadow: 0 0 2px 1px rgba(71,135,177, 0.6), inset 0 1px 0 0 #777;
+ box-shadow: 0 0 2px 1px rgba(71,135,177, 0.6), inset 0 1px 0 0 #777;
+}
+
+.ui-button.ui-state-active.mainaction {
+ color: #fff;
+ background: #515151;
+ background: -moz-linear-gradient(top, #2a2e31 0%, #505050 100%);
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#2a2e31), color-stop(100%,#505050));
+ background: -o-linear-gradient(top, #2a2e31 0%, #505050 100%);
+ background: -ms-linear-gradient(top, #2a2e31 0%, #505050 100%);
+ background: linear-gradient(top, #2a2e31 0%, #505050 100%);
+}
+
+.ui-button[disabled],
+.ui-button[disabled]:hover,
+.ui-button.mainaction[disabled] {
+ color: #aaa !important;
+}
+
+/* Roundcube's specific Datepicker style override */
+.ui-datepicker {
+ min-width: 20em;
+ padding: 0;
+ display: none;
+ border: 0;
+ border-radius: 3px;
+ -webkit-box-shadow: #666 1px 1px 10px;
+ -moz-box-shadow: 1px 1px 10px #666;
+ box-shadow: 1px 1px 16px #666;
+}
+.ui-datepicker .ui-datepicker-header {
+ padding: .3em 0;
+ border-radius: 3px 3px 0 0;
+ border: 0;
+ background: #3a3a3a;
+ filter: none;
+ color: #fff;
+ text-shadow: 0px 1px 1px #000;
+}
+.ui-datepicker .ui-datepicker-prev,
+.ui-datepicker .ui-datepicker-next {
+ border: 0;
+ background: none;
+}
+.ui-datepicker .ui-datepicker-header .ui-icon {
+ background: url("images/ui-icons-datepicker.png") 0 0 no-repeat;
+}
+.ui-datepicker .ui-datepicker-header .ui-icon-circle-triangle-w {
+ background-position: 0 2px;
+}
+.ui-datepicker .ui-datepicker-header .ui-icon-circle-triangle-e {
+ background-position: -14px 2px;
+}
+.ui-datepicker .ui-datepicker-prev-hover,
+.ui-datepicker .ui-datepicker-next-hover {
+ top: 2px;
+ border: 0;
+ background: none;
+}
+.ui-datepicker .ui-datepicker-prev,
+.ui-datepicker .ui-datepicker-prev-hover {
+ left: 2px;
+}
+.ui-datepicker .ui-datepicker-next,
+.ui-datepicker .ui-datepicker-next-hover {
+ right: 2px;
+}
+.ui-datepicker select.ui-datepicker-month,
+.ui-datepicker select.ui-datepicker-year {
+ border: 0;
+ background: #3a3a3a;
+ outline: none;
+ color: #fff;
+ font-weight: bold;
+ width: auto;
+ margin-right: 4px;
+ padding-right: 4px;
+}
+.ui-datepicker .ui-datepicker-title select::-ms-expand {
+ display: none;
+}
+.ie10 .ui-datepicker .ui-datepicker-title select,
+.webkit .ui-datepicker .ui-datepicker-title select,
+.mozilla .ui-datepicker .ui-datepicker-title select {
+ background-image: url("images/ui-icons-datepicker.png");
+ background-position: right -18px;
+ background-repeat: no-repeat;
+ padding-right: 14px;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+}
+.mozilla .ui-datepicker .ui-datepicker-title select {
+ background-position: right -17px;
+ text-indent: 0.01px;
+ text-overflow: '';
+ padding-right: 0;
+}
+.ui-datepicker .ui-datepicker-month:focus,
+.ui-datepicker .ui-datepicker-year:focus {
+ outline: 1px solid #4fadd5;
+}
+.ui-datepicker table {
+ margin: 0;
+ border-spacing: 0;
+}
+.ui-datepicker table:focus {
+ outline: 2px solid #4fadd5;
+ outline-offset: -2px;
+}
+.ui-datepicker td {
+ border: 1px solid #bbb;
+ padding: 0;
+}
+.ui-datepicker td span, .ui-datepicker td a {
+ border: 0;
+ padding: .3em;
+ text-shadow: 0px 1px 1px #fff;
+}
+.ui-datepicker td a.ui-state-default {
+ border: 0px solid #fff;
+ border-top-width: 1px;
+ border-left-width: 1px;
+ background: #e6e6e6;
+ background: -moz-linear-gradient(top, #e6e6e6 0%, #d6d6d6 100%);
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#e6e6e6), color-stop(100%,#d6d6d6));
+ background: -o-linear-gradient(top, #e6e6e6 0%, #d6d6d6 100%);
+ background: -ms-linear-gradient(top, #e6e6e6 0%, #d6d6d6 100%);
+ background: linear-gradient(top, #e6e6e6 0%, #d6d6d6 100%);
+}
+.ui-datepicker td a.ui-priority-secondary {
+ background: #eee;
+}
+.ui-datepicker td a.ui-state-active {
+ color: #fff;
+ border-color: #0286ac !important;
+ text-shadow: 0px 1px 1px #00516e !important;
+ background: #00acd4 !important;
+ background: -moz-linear-gradient(top, #00acd4 0%, #008fc7 100%);
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#00acd4), color-stop(100%,#008fc7));
+ background: -o-linear-gradient(top, #00acd4 0%, #008fc7 100%);
+ background: -ms-linear-gradient(top, #00acd4 0%, #008fc7 100%);
+ background: linear-gradient(top, #00acd4 0%, #008fc7 100%);
+}
+.ui-datepicker .ui-state-highlight {
+ color: #0081c2;
+}
+.ui-datepicker td.ui-datepicker-days-cell-over a.ui-state-default {
+ color: #fff;
+ border-color: rgba(73,180,210,0.7);
+ background: rgba(73,180,210,0.7);
+ text-shadow: 0px 1px 1px #666;
+}
diff --git a/plugins/jqueryui/themes/larry/jquery-ui-1.9.2.custom.css b/plugins/jqueryui/themes/larry/jquery-ui-1.9.2.custom.css
deleted file mode 100755
index 383586091..000000000
--- a/plugins/jqueryui/themes/larry/jquery-ui-1.9.2.custom.css
+++ /dev/null
@@ -1,740 +0,0 @@
-/*
- * jQuery UI CSS Framework 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Theming/API
- */
-
-/* Layout helpers
-----------------------------------*/
-.ui-helper-hidden { display: none; }
-.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
-.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
-.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; }
-.ui-helper-clearfix:after { clear: both; }
-.ui-helper-clearfix { zoom: 1; }
-.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
-
-
-/* Interaction Cues
-----------------------------------*/
-.ui-state-disabled { cursor: default !important; }
-
-
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
-
-
-/* Misc visuals
-----------------------------------*/
-
-/* Overlays */
-.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
-
-
-/*
- * jQuery UI CSS Framework 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Theming/API
- *
- * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande,Verdana,Arial,sans-serif&fwDefault=bold&fsDefault=1.0em&cornerRadius=5px&bgColorHeader=e4e4e4&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=90&borderColorHeader=fafafa&fcHeader=666666&iconColorHeader=004458&bgColorContent=fafafa&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=33333&iconColorContent=004458&bgColorDefault=f8f8f8&bgTextureDefault=04_highlight_hard.png&bgImgOpacityDefault=75&borderColorDefault=cccccc&fcDefault=666666&iconColorDefault=004458&bgColorHover=eaeaea&bgTextureHover=04_highlight_hard.png&bgImgOpacityHover=75&borderColorHover=aaaaaa&fcHover=333333&iconColorHover=004458&bgColorActive=ffffff&bgTextureActive=04_highlight_hard.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=333333&iconColorActive=004458&bgColorHighlight=b0ccd7&bgTextureHighlight=04_highlight_hard.png&bgImgOpacityHighlight=55&borderColorHighlight=a3a3a3&fcHighlight=004458&iconColorHighlight=004458&bgColorError=fef1ec&bgTextureError=01_flat.png&bgImgOpacityError=95&borderColorError=d7211e&fcError=d64040&iconColorError=d7211e&bgColorOverlay=333333&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=50&bgColorShadow=666666&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=20&thicknessShadow=6px&offsetTopShadow=-6px&offsetLeftShadow=-6px&cornerRadiusShadow=8px
- */
-
-
-/* Component containers
-----------------------------------*/
-.ui-widget { font-family: Lucida Grande,Verdana,Arial,sans-serif; font-size: 1.0em; }
-.ui-widget .ui-widget { font-size: 1em; }
-.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Lucida Grande,Verdana,Arial,sans-serif; font-size: 1em; }
-.ui-widget-content { border: 1px solid #aaa; background: #fafafa url(images/ui-bg_highlight-soft_75_fafafa_1x100.png) 50% top repeat-x; color: #333; }
-/*.ui-widget-content a { color: #333; }*/
-.ui-widget-header { border: 2px solid #fafafa; background: #e4e4e4 url(images/ui-bg_highlight-soft_90_e4e4e4_1x100.png) 50% 50% repeat-x; color: #666666; font-weight: bold; }
-.ui-widget-header a { color: #aaaaaa; }
-
-/* Interaction states
-----------------------------------*/
-.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #cccccc; background: #f8f8f8 url(images/ui-bg_highlight-hard_75_f8f8f8_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #666666; }
-.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #666666; text-decoration: none; }
-.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #aaaaaa; background: #eaeaea url(images/ui-bg_highlight-hard_75_eaeaea_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #333333; }
-.ui-state-hover a, .ui-state-hover a:hover { color: #333333; text-decoration: none; }
-.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_highlight-hard_65_ffffff_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #333333; }
-.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #333333; text-decoration: none; }
-.ui-widget :active { outline: none; }
-
-/* Interaction Cues
-----------------------------------*/
-.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #a3a3a3; background: #b0ccd7 url(images/ui-bg_highlight-hard_55_b0ccd7_1x100.png) 50% top repeat-x; color: #004458; }
-.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #004458; }
-.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #d7211e; background: #fef1ec; color: #d64040; }
-.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #d64040; }
-.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #d64040; }
-.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
-.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
-.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
-
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_004458_256x240.png); }
-.ui-widget-content .ui-icon {background-image: url(images/ui-icons_004458_256x240.png); }
-.ui-widget-header .ui-icon {background-image: url(images/ui-icons_004458_256x240.png); }
-.ui-state-default .ui-icon { background-image: url(images/ui-icons_004458_256x240.png); }
-.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_004458_256x240.png); }
-.ui-state-active .ui-icon {background-image: url(images/ui-icons_004458_256x240.png); }
-.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_004458_256x240.png); }
-.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_d7211e_256x240.png); }
-
-/* positioning */
-.ui-icon-carat-1-n { background-position: 0 0; }
-.ui-icon-carat-1-ne { background-position: -16px 0; }
-.ui-icon-carat-1-e { background-position: -32px 0; }
-.ui-icon-carat-1-se { background-position: -48px 0; }
-.ui-icon-carat-1-s { background-position: -64px 0; }
-.ui-icon-carat-1-sw { background-position: -80px 0; }
-.ui-icon-carat-1-w { background-position: -96px 0; }
-.ui-icon-carat-1-nw { background-position: -112px 0; }
-.ui-icon-carat-2-n-s { background-position: -128px 0; }
-.ui-icon-carat-2-e-w { background-position: -144px 0; }
-.ui-icon-triangle-1-n { background-position: 0 -16px; }
-.ui-icon-triangle-1-ne { background-position: -16px -16px; }
-.ui-icon-triangle-1-e { background-position: -32px -16px; }
-.ui-icon-triangle-1-se { background-position: -48px -16px; }
-.ui-icon-triangle-1-s { background-position: -64px -16px; }
-.ui-icon-triangle-1-sw { background-position: -80px -16px; }
-.ui-icon-triangle-1-w { background-position: -96px -16px; }
-.ui-icon-triangle-1-nw { background-position: -112px -16px; }
-.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
-.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
-.ui-icon-arrow-1-n { background-position: 0 -32px; }
-.ui-icon-arrow-1-ne { background-position: -16px -32px; }
-.ui-icon-arrow-1-e { background-position: -32px -32px; }
-.ui-icon-arrow-1-se { background-position: -48px -32px; }
-.ui-icon-arrow-1-s { background-position: -64px -32px; }
-.ui-icon-arrow-1-sw { background-position: -80px -32px; }
-.ui-icon-arrow-1-w { background-position: -96px -32px; }
-.ui-icon-arrow-1-nw { background-position: -112px -32px; }
-.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
-.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
-.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
-.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
-.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
-.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
-.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
-.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
-.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
-.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
-.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
-.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
-.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
-.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
-.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
-.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
-.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
-.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
-.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
-.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
-.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
-.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
-.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
-.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
-.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
-.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
-.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
-.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
-.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
-.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
-.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
-.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
-.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
-.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
-.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
-.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
-.ui-icon-arrow-4 { background-position: 0 -80px; }
-.ui-icon-arrow-4-diag { background-position: -16px -80px; }
-.ui-icon-extlink { background-position: -32px -80px; }
-.ui-icon-newwin { background-position: -48px -80px; }
-.ui-icon-refresh { background-position: -64px -80px; }
-.ui-icon-shuffle { background-position: -80px -80px; }
-.ui-icon-transfer-e-w { background-position: -96px -80px; }
-.ui-icon-transferthick-e-w { background-position: -112px -80px; }
-.ui-icon-folder-collapsed { background-position: 0 -96px; }
-.ui-icon-folder-open { background-position: -16px -96px; }
-.ui-icon-document { background-position: -32px -96px; }
-.ui-icon-document-b { background-position: -48px -96px; }
-.ui-icon-note { background-position: -64px -96px; }
-.ui-icon-mail-closed { background-position: -80px -96px; }
-.ui-icon-mail-open { background-position: -96px -96px; }
-.ui-icon-suitcase { background-position: -112px -96px; }
-.ui-icon-comment { background-position: -128px -96px; }
-.ui-icon-person { background-position: -144px -96px; }
-.ui-icon-print { background-position: -160px -96px; }
-.ui-icon-trash { background-position: -176px -96px; }
-.ui-icon-locked { background-position: -192px -96px; }
-.ui-icon-unlocked { background-position: -208px -96px; }
-.ui-icon-bookmark { background-position: -224px -96px; }
-.ui-icon-tag { background-position: -240px -96px; }
-.ui-icon-home { background-position: 0 -112px; }
-.ui-icon-flag { background-position: -16px -112px; }
-.ui-icon-calendar { background-position: -32px -112px; }
-.ui-icon-cart { background-position: -48px -112px; }
-.ui-icon-pencil { background-position: -64px -112px; }
-.ui-icon-clock { background-position: -80px -112px; }
-.ui-icon-disk { background-position: -96px -112px; }
-.ui-icon-calculator { background-position: -112px -112px; }
-.ui-icon-zoomin { background-position: -128px -112px; }
-.ui-icon-zoomout { background-position: -144px -112px; }
-.ui-icon-search { background-position: -160px -112px; }
-.ui-icon-wrench { background-position: -176px -112px; }
-.ui-icon-gear { background-position: -192px -112px; }
-.ui-icon-heart { background-position: -208px -112px; }
-.ui-icon-star { background-position: -224px -112px; }
-.ui-icon-link { background-position: -240px -112px; }
-.ui-icon-cancel { background-position: 0 -128px; }
-.ui-icon-plus { background-position: -16px -128px; }
-.ui-icon-plusthick { background-position: -32px -128px; }
-.ui-icon-minus { background-position: -48px -128px; }
-.ui-icon-minusthick { background-position: -64px -128px; }
-.ui-icon-close { background-position: -80px -128px; }
-.ui-icon-closethick { background-position: -96px -128px; }
-.ui-icon-key { background-position: -112px -128px; }
-.ui-icon-lightbulb { background-position: -128px -128px; }
-.ui-icon-scissors { background-position: -144px -128px; }
-.ui-icon-clipboard { background-position: -160px -128px; }
-.ui-icon-copy { background-position: -176px -128px; }
-.ui-icon-contact { background-position: -192px -128px; }
-.ui-icon-image { background-position: -208px -128px; }
-.ui-icon-video { background-position: -224px -128px; }
-.ui-icon-script { background-position: -240px -128px; }
-.ui-icon-alert { background-position: 0 -144px; }
-.ui-icon-info { background-position: -16px -144px; }
-.ui-icon-notice { background-position: -32px -144px; }
-.ui-icon-help { background-position: -48px -144px; }
-.ui-icon-check { background-position: -64px -144px; }
-.ui-icon-bullet { background-position: -80px -144px; }
-.ui-icon-radio-off { background-position: -96px -144px; }
-.ui-icon-radio-on { background-position: -112px -144px; }
-.ui-icon-pin-w { background-position: -128px -144px; }
-.ui-icon-pin-s { background-position: -144px -144px; }
-.ui-icon-play { background-position: 0 -160px; }
-.ui-icon-pause { background-position: -16px -160px; }
-.ui-icon-seek-next { background-position: -32px -160px; }
-.ui-icon-seek-prev { background-position: -48px -160px; }
-.ui-icon-seek-end { background-position: -64px -160px; }
-.ui-icon-seek-start { background-position: -80px -160px; }
-/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
-.ui-icon-seek-first { background-position: -80px -160px; }
-.ui-icon-stop { background-position: -96px -160px; }
-.ui-icon-eject { background-position: -112px -160px; }
-.ui-icon-volume-off { background-position: -128px -160px; }
-.ui-icon-volume-on { background-position: -144px -160px; }
-.ui-icon-power { background-position: 0 -176px; }
-.ui-icon-signal-diag { background-position: -16px -176px; }
-.ui-icon-signal { background-position: -32px -176px; }
-.ui-icon-battery-0 { background-position: -48px -176px; }
-.ui-icon-battery-1 { background-position: -64px -176px; }
-.ui-icon-battery-2 { background-position: -80px -176px; }
-.ui-icon-battery-3 { background-position: -96px -176px; }
-.ui-icon-circle-plus { background-position: 0 -192px; }
-.ui-icon-circle-minus { background-position: -16px -192px; }
-.ui-icon-circle-close { background-position: -32px -192px; }
-.ui-icon-circle-triangle-e { background-position: -48px -192px; }
-.ui-icon-circle-triangle-s { background-position: -64px -192px; }
-.ui-icon-circle-triangle-w { background-position: -80px -192px; }
-.ui-icon-circle-triangle-n { background-position: -96px -192px; }
-.ui-icon-circle-arrow-e { background-position: -112px -192px; }
-.ui-icon-circle-arrow-s { background-position: -128px -192px; }
-.ui-icon-circle-arrow-w { background-position: -144px -192px; }
-.ui-icon-circle-arrow-n { background-position: -160px -192px; }
-.ui-icon-circle-zoomin { background-position: -176px -192px; }
-.ui-icon-circle-zoomout { background-position: -192px -192px; }
-.ui-icon-circle-check { background-position: -208px -192px; }
-.ui-icon-circlesmall-plus { background-position: 0 -208px; }
-.ui-icon-circlesmall-minus { background-position: -16px -208px; }
-.ui-icon-circlesmall-close { background-position: -32px -208px; }
-.ui-icon-squaresmall-plus { background-position: -48px -208px; }
-.ui-icon-squaresmall-minus { background-position: -64px -208px; }
-.ui-icon-squaresmall-close { background-position: -80px -208px; }
-.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
-.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
-.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
-.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
-.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
-.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
-
-
-/* Misc visuals
-----------------------------------*/
-
-/* Corner radius */
-.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; -khtml-border-top-left-radius: 5px; border-top-left-radius: 5px; }
-.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; -khtml-border-top-right-radius: 5px; border-top-right-radius: 5px; }
-.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; -khtml-border-bottom-left-radius: 5px; border-bottom-left-radius: 5px; }
-.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; -khtml-border-bottom-right-radius: 5px; border-bottom-right-radius: 5px; }
-
-/* Overlays */
-.ui-widget-overlay { background: #333333; opacity: .50;filter:Alpha(Opacity=50); }
-.ui-widget-shadow { visibility: hidden; }/*
- * jQuery UI Resizable 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Resizable#theming
- */
-.ui-resizable { position: relative;}
-.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99998; display: block; }
-.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
-.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
-.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
-.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
-.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
-.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
-.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
-.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
-.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
- * jQuery UI Selectable 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Selectable#theming
- */
-.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
-/*
- * jQuery UI Accordion 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Accordion#theming
- */
-/* IE/Win - Fix animation bug - #4615 */
-.ui-accordion { width: 100%; }
-.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
-.ui-accordion .ui-accordion-li-fix { display: inline; }
-.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
-.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
-.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
-.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
-.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
-.ui-accordion .ui-accordion-content-active { display: block; }
-/*
- * jQuery UI Autocomplete 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Autocomplete#theming
- */
-.ui-autocomplete { position: absolute; cursor: default; }
-
-/* workarounds */
-* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
-
-/*
- * jQuery UI Menu 1.8.18
- *
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Menu#theming
- */
-.ui-menu {
- list-style:none;
- padding: 0;
- margin: 0;
- display:block;
- float: left;
- background: #444;
- border: 1px solid #999;
- border-radius: 4px;
- box-shadow: 0 2px 6px 0 #333;
- -moz-box-shadow: 0 2px 6px 0 #333;
- -webkit-box-shadow: 0 2px 6px 0 #333;
- -o-box-shadow: 0 2px 6px 0 #333;
-}
-.ui-menu .ui-menu {
- margin-top: -3px;
-}
-.ui-menu .ui-menu-item {
- margin:0;
- padding: 0;
- zoom: 1;
- float: left;
- clear: left;
- width: 100%;
- color: #fff;
- white-space: nowrap;
- border-top: 1px solid #5a5a5a;
- border-bottom: 1px solid #333;
-}
-.ui-menu .ui-menu-item:first-child {
- border-top: 0;
-}
-.ui-menu .ui-menu-item:last-child {
- border-bottom: 0;
-}
-.ui-menu .ui-menu-item a {
- text-decoration:none;
- display:block;
- padding:.2em .4em;
- line-height:1.5;
- zoom:1;
- border:0;
- margin:0;
- border-radius:0;
- color: #fff;
- text-shadow: 0px 1px 1px #333;
- padding: 6px 10px 4px 10px;
-}
-.ui-menu .ui-menu-item a.ui-state-focus,
-.ui-menu .ui-menu-item a.ui-state-active {
- font-weight: normal;
- background: #00aad6;
- background: -moz-linear-gradient(top, #00aad6 0%, #008fc9 100%);
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#00aad6), color-stop(100%,#008fc9));
- background: -o-linear-gradient(top, #00aad6 0%, #008fc9 100%);
- background: -ms-linear-gradient(top, #00aad6 0%, #008fc9 100%);
- background: linear-gradient(top, #00aad6 0%, #008fc9 100%);
-}
-/*
- * jQuery UI Button 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Button#theming
- */
-.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; *overflow: visible; } /* the overflow property removes extra width in IE */
-.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
-button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
-.ui-button-icons-only { width: 3.4em; }
-button.ui-button-icons-only { width: 3.7em; }
-
-/*button text element */
-.ui-button .ui-button-text { display: block; line-height: 1.4; }
-.ui-button-text-only .ui-button-text { padding: .4em 1em; }
-.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
-.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
-.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
-.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
-/* no icon support for input elements, provide padding by default */
-input.ui-button { padding: .4em 1em; }
-
-/*button icon element(s) */
-.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
-.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
-.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
-.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
-.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
-
-/*button sets*/
-.ui-buttonset { margin-right: 7px; }
-.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
-
-/* workarounds */
-button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
-
-/* Roundcube button styling */
-.ui-button.ui-state-default {
- display: inline-block;
- margin: 0 2px;
- padding: 1px 2px;
- text-shadow: 0px 1px 1px #fff;
- border: 1px solid #c6c6c6;
- border-radius: 4px;
- background: #f7f7f7;
- background: -moz-linear-gradient(top, #f9f9f9 0%, #e6e6e6 100%);
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f9f9f9), color-stop(100%,#e6e6e6));
- background: -o-linear-gradient(top, #f9f9f9 0%, #e6e6e6 100%);
- background: -ms-linear-gradient(top, #f9f9f9 0%, #e6e6e6 100%);
- background: linear-gradient(top, #f9f9f9 0%, #e6e6e6 100%);
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f9f9f9', endColorstr='#e6e6e6', GradientType=0);
- box-shadow: 0 1px 1px 0 rgba(140, 140, 140, 0.3);
- -o-box-shadow: 0 1px 1px 0 rgba(140, 140, 140, 0.3);
- -webkit-box-shadow: 0 1px 1px 0 rgba(140, 140, 140, 0.3);
- -moz-box-shadow: 0 1px 1px 0 rgba(140, 140, 140, 0.3);
- text-decoration: none;
- outline: none;
-}
-
-.ui-button.mainaction {
- color: #ededed;
- text-shadow: 0px 1px 1px #333;
- border-color: #1f262c;
- background: #505050;
- background: -moz-linear-gradient(top, #505050 0%, #2a2e31 100%);
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#505050), color-stop(100%,#2a2e31));
- background: -o-linear-gradient(top, #505050 0%, #2a2e31 100%);
- background: -ms-linear-gradient(top, #505050 0%, #2a2e31 100%);
- background: linear-gradient(top, #505050 0%, #2a2e31 100%);
- -moz-box-shadow: inset 0 1px 0 0 #777;
- -webkit-box-shadow: inset 0 1px 0 0 #777;
- -o-box-shadow: inset 0 1px 0 0 #777;
- box-shadow: inset 0 1px 0 0 #777;
-}
-
-.ui-button.ui-state-focus {
- color: #525252;
- border-color: #4fadd5;
- -moz-box-shadow: 0 0 2px 1px rgba(71,135,177, 0.6);
- -webkit-box-shadow: 0 0 2px 1px rgba(71,135,177, 0.6);
- -o-box-shadow: 0 0 2px 1px rgba(71,135,177, 0.6);
- box-shadow: 0 0 2px 1px rgba(71,135,177, 0.6);
-}
-
-.ui-button.ui-state-active {
- color: #525252;
- border-color: #aaa;
- background: #e6e6e6;
- background: -moz-linear-gradient(top, #e6e6e6 0%, #f9f9f9 100%);
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#e6e6e6), color-stop(100%,#f9f9f9));
- background: -o-linear-gradient(top, #e6e6e6 0%, #f9f9f9 100%);
- background: -ms-linear-gradient(top, #e6e6e6 0%, #f9f9f9 100%);
- background: linear-gradient(top, #e6e6e6 0%, #f9f9f9 100%);
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e6e6e6', endColorstr='#f9f9f9', GradientType=0);
-}
-
-.ui-button.ui-state-focus.mainaction,
-.ui-button.ui-state-hover.mainaction {
- color: #fff;
-}
-
-.ui-button.ui-state-focus.mainaction {
- border-color: #1f262c;
- -moz-box-shadow: 0 0 2px 1px rgba(71,135,177, 0.6), inset 0 1px 0 0 #777;
- -webkit-box-shadow: 0 0 2px 1px rgba(71,135,177, 0.6), inset 0 1px 0 0 #777;
- -o-box-shadow: 0 0 2px 1px rgba(71,135,177, 0.6), inset 0 1px 0 0 #777;
- box-shadow: 0 0 2px 1px rgba(71,135,177, 0.6), inset 0 1px 0 0 #777;
-}
-
-.ui-button.ui-state-active.mainaction {
- color: #fff;
- background: #515151;
- background: -moz-linear-gradient(top, #2a2e31 0%, #505050 100%);
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#2a2e31), color-stop(100%,#505050));
- background: -o-linear-gradient(top, #2a2e31 0%, #505050 100%);
- background: -ms-linear-gradient(top, #2a2e31 0%, #505050 100%);
- background: linear-gradient(top, #2a2e31 0%, #505050 100%);
-}
-
-.ui-button[disabled],
-.ui-button[disabled]:hover,
-.ui-button.mainaction[disabled] {
- color: #aaa !important;
-}
-
-/*
- * jQuery UI Dialog 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Dialog#theming
- */
-.ui-dialog { position: absolute; padding: 3px; width: 300px; background: #fff; border-radius:6px; box-shadow: 1px 1px 18px #666; -moz-box-shadow: 1px 1px 12px #666; -webkit-box-shadow: #666 1px 1px 12px; }
-.ui-dialog .ui-widget-content { border: 0 }
-.ui-dialog .ui-dialog-titlebar { padding: 15px 1em 8px 1em; position: relative; border: 0; border-radius: 5px 5px 0 0; }
-.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; font-size: 1.3em; text-shadow: 1px 1px 1px #fff; }
-.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: -15px; top: -15px; margin:0; width: 30px; height: 30px; z-index:99999; }
-.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 0; background: url(images/ui-dialog-close.png) 0 0 no-repeat; width: 30px; height: 30px; }
-.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { border: 0; background: none; padding: 0; }
-.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: 1.5em 1em 0.5em 1em; overflow: auto; zoom: 1; }
-.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; border-color: #ddd; border-style: solid; background-image: none; margin: 0; padding: .4em 1em .5em 1em; box-shadow: inset 0 1px 0 0 #fff; -o-box-shadow: inset 0 1px 0 0 #fff; -webkit-box-shadow: inset 0 1px 0 0 #fff; -moz-box-shadow: inset 0 1px 0 0 #fff; }
-.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: left; }
-.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
-.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
-.ui-draggable .ui-dialog-titlebar { cursor: move; }
-
-.ui-dialog .uibox { background-color: #fbfbfb; -moz-box-shadow: 0 0 1px #aaa; -webkit-box-shadow: 0 0 1px #aaa; box-shadow: 0 0 1px #aaa; }
-.ui-dialog .uibox ul.proplist li, .ui-dialog .uibox table.propform td { border-bottom-color: #fbfbfb; }
-.ui-dialog .listbox { background: #d9ecf4; }
-
-/*
- * jQuery UI Slider 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Slider#theming
- */
-.ui-slider { position: relative; text-align: left; }
-.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; outline:none }
-.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0;
- border-radius: 5px;
- background: #019bc6;
- background: -moz-linear-gradient(top, #019bc6 0%, #017cb4 100%);
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#019bc6), color-stop(100%,#017cb4));
- background: -o-linear-gradient(top, #019bc6 0%, #017cb4 100%);
- background: -ms-linear-gradient(top, #019bc6 0%, #017cb4 100%);
- background: linear-gradient(top, #019bc6 0%, #017cb4 100%);
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#019bc6', endColorstr='#017cb4', GradientType=0);
-};
-
-.ui-slider-horizontal { height: .8em; }
-.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
-.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
-.ui-slider-horizontal .ui-slider-range-min { left: 0; }
-.ui-slider-horizontal .ui-slider-range-max { right: 0; }
-
-.ui-slider-vertical { width: .8em; height: 100px; }
-.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
-.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
-.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
-.ui-slider-vertical .ui-slider-range-max { top: 0; }
-/*
- * jQuery UI Tabs 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Tabs#theming
- */
-.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
-.ui-tabs .ui-tabs-nav { margin: 0; padding: 0; border: 0; background: transparent; height: 44px; }
-.ui-tabs .ui-tabs-nav li { list-style: none; display: inline; border: 0; border-radius: 0; margin: 0; border-bottom: 0 !important; padding: 15px 1px 15px 0; white-space: nowrap; background: #f8f8f8; background: -moz-linear-gradient(top, #f8f8f8 0%, #d3d3d3 50%, #f8f8f8 100%); background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f8f8f8), color-stop(50%,#d3d3d3), color-stop(100%,#f8f8f8)); background: -webkit-linear-gradient(top, #f8f8f8 0%, #d3d3d3 50%, #f8f8f8 100%); background: -o-linear-gradient(top, #f8f8f8 0%, #d3d3d3 50%, #f8f8f8 100%); background: -ms-linear-gradient(top, #f8f8f8 0%, #d3d3d3 50%, #f8f8f8 100%); background: linear-gradient(top, #f8f8f8 0%, #d3d3d3 50%, #f8f8f8 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f8f8f8', endColorstr='#d3d3d3', GradientType=0); }
-.ui-tabs .ui-tabs-nav li a { display: inline-block; padding: 15px; text-decoration: none; font-size: 12px; color: #999; background: #fafafa; border-right: 1px solid #fafafa; }
-.ui-dialog-content .tabsbar .tablink a { background: #fafafa; }
-.ui-tabs .ui-tabs-nav li.ui-tabs-active { }
-.ui-tabs .ui-tabs-nav li.ui-tabs-active a, .ui-dialog-content .tabsbar .tablink.selected a { outline:none; color: #004458; background: #efefef; background: -moz-linear-gradient(top, #fafafa 40%, #e4e4e4 100%); background: -webkit-gradient(linear, left top, left bottom, color-stop(40%,#fff), color-stop(100%,#e4e4e4)); background: -o-linear-gradient(top, #fafafa 40%, #e4e4e4 100%); background: -ms-linear-gradient(top, #fafafa 40%, #e4e4e4 100%); background: linear-gradient(top, #fafafa 40%, #e4e4e4 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fafafa', endColorstr='#e4e4e4', GradientType=0); }
-.ui-tabs .ui-tabs-nav li.ui-tabs-active a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
-.ui-tabs .ui-tabs-nav li:last-child { /* background: none; */ }
-.ui-tabs .ui-tabs-nav li:last-child a { border: 0; }
-.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
-.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 0.5em 1em; margin-top: 0.2em; background: #efefef; }
-.ui-tabs .ui-tabs-hide { display: none !important; }
-/*
- * jQuery UI Datepicker 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Datepicker#theming
- */
-.ui-datepicker { min-width: 18em; padding: 0; display: none; border: 0; border-radius: 3px; box-shadow: 1px 1px 16px #666; -moz-box-shadow: 1px 1px 10px #666; -webkit-box-shadow: #666 1px 1px 10px; }
-.ui-datepicker .ui-datepicker-header { position:relative; padding: .3em 0; border-radius: 3px 3px 0 0; border: 0; background: #3a3a3a; color: #fff; text-shadow: text-shadow: 0px 1px 1px #000; }
-.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; border: 0; background: none; }
-.ui-datepicker .ui-datepicker-header .ui-icon { background: url(images/ui-icons-datepicker.png) 0 0 no-repeat; }
-.ui-datepicker .ui-datepicker-header .ui-icon-circle-triangle-w { background-position: 0 2px; }
-.ui-datepicker .ui-datepicker-header .ui-icon-circle-triangle-e { background-position: -14px 2px; }
-.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 2px; border: 0; background: 0; }
-.ui-datepicker .ui-datepicker-prev { left:2px; }
-.ui-datepicker .ui-datepicker-next { right:2px; }
-.ui-datepicker .ui-datepicker-prev-hover { left:2px; }
-.ui-datepicker .ui-datepicker-next-hover { right:2px; }
-.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
-.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
-.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
-.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
-.ui-datepicker select.ui-datepicker-month,
-.ui-datepicker select.ui-datepicker-year {
- border: 0;
- background: #3a3a3a;
- outline: none;
- color: #fff;
- font-weight: bold;
- width: auto;
- margin-right: 4px;
- padding-right: 4px;
-}
-.ui-datepicker .ui-datepicker-title select::-ms-expand { display: none; }
-.ie10 .ui-datepicker .ui-datepicker-title select,
-.webkit .ui-datepicker .ui-datepicker-title select,
-.mozilla .ui-datepicker .ui-datepicker-title select {
- background-image: url(images/ui-icons-datepicker.png);
- background-position: right -18px;
- background-repeat: no-repeat;
- padding-right: 14px;
- -webkit-appearance: none;
- -moz-appearance: none;
- appearance: none;
-}
-.mozilla .ui-datepicker .ui-datepicker-title select {
- background-position: right -17px;
- text-indent: 0.01px;
- text-overflow: '';
- padding-right: 0;
-}
-.ui-datepicker table { width: 100%; border-collapse: collapse; margin:0; border-spacing: 0; }
-.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; color: #666; }
-.ui-datepicker td { border: 1px solid #bbb; padding: 0; }
-.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .3em; text-align: right; text-decoration: none; border: 0; text-shadow: 0px 1px 1px #fff; }
-.ui-datepicker td a.ui-state-default { border: 0px solid #fff; border-top-width: 1px; border-left-width: 1px; background: #e6e6e6; background: -moz-linear-gradient(top, #e6e6e6 0%, #d6d6d6 100%); background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#e6e6e6), color-stop(100%,#d6d6d6)); background: -o-linear-gradient(top, #e6e6e6 0%, #d6d6d6 100%); background: -ms-linear-gradient(top, #e6e6e6 0%, #d6d6d6 100%); background: linear-gradient(top, #e6e6e6 0%, #d6d6d6 100%); }
-.ui-datepicker td a.ui-priority-secondary { background: #eee; }
-.ui-datepicker td a.ui-state-active { color: #fff; border-color: #0286ac; text-shadow: 0px 1px 1px #00516e; background: #00acd4; background: -moz-linear-gradient(top, #00acd4 0%, #008fc7 100%); background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#00acd4), color-stop(100%,#008fc7)); background: -o-linear-gradient(top, #00acd4 0%, #008fc7 100%); background: -ms-linear-gradient(top, #00acd4 0%, #008fc7 100%); background: linear-gradient(top, #00acd4 0%, #008fc7 100%); }
-.ui-datepicker .ui-state-highlight { color: #0081c2; }
-.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
-.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
-.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
-
-
-
-/* with multiple calendars */
-.ui-datepicker.ui-datepicker-multi { width:auto; }
-.ui-datepicker-multi .ui-datepicker-group { float:left; }
-.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
-.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
-.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
-.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
-.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
-.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
-.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
-.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
-
-/* RTL support */
-.ui-datepicker-rtl { direction: rtl; }
-.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
-.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
-.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
-.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
-.ui-datepicker-rtl .ui-datepicker-group { float:right; }
-.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
-.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
-
-/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
-.ui-datepicker-cover {
- display: none; /*sorry for IE5*/
- display/**/: block; /*sorry for IE5*/
- position: absolute; /*must have*/
- z-index: -1; /*must have*/
- filter: mask(); /*must have*/
- top: -4px; /*must have*/
- left: -4px; /*must have*/
- width: 200px; /*must have*/
- height: 200px; /*must have*/
-}
-/*
- * jQuery UI Progressbar 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Progressbar#theming
- */
-.ui-progressbar { height:2em; text-align: left; overflow: hidden; }
-.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; } \ No newline at end of file
diff --git a/plugins/jqueryui/themes/larry/jquery-ui-css.diff b/plugins/jqueryui/themes/larry/jquery-ui-css.diff
new file mode 100644
index 000000000..cce990679
--- /dev/null
+++ b/plugins/jqueryui/themes/larry/jquery-ui-css.diff
@@ -0,0 +1,600 @@
+--- jquery-ui-1.10.4.custom.orig.css 2014-06-17 00:47:00.000000000 +0200
++++ jquery-ui-1.10.4.custom.css 2014-07-31 08:54:40.000000000 +0200
+@@ -238,6 +238,8 @@
+ .ui-button-icons-only .ui-button-text {
+ padding: .4em;
+ text-indent: -9999999px;
++ width: 1px;
++ overflow: hidden;
+ }
+ .ui-button-text-icon-primary .ui-button-text,
+ .ui-button-text-icons .ui-button-text {
+@@ -463,20 +465,29 @@
+ border-left-width: 1px;
+ }
+ .ui-dialog {
+- overflow: hidden;
+ position: absolute;
+ top: 0;
+ left: 0;
+- padding: .2em;
++ padding: 3px;
++ background: #fff;
++ border-radius: 6px !important;
++ border: 0 !important;
+ outline: 0;
++ -webkit-box-shadow: #666 1px 1px 12px;
++ -moz-box-shadow: 1px 1px 12px #666;
++ box-shadow: 1px 1px 18px #666;
+ }
+ .ui-dialog .ui-dialog-titlebar {
+- padding: .4em 1em;
++ padding: 15px 1em 8px 1em;
+ position: relative;
++ border: 0;
++ border-radius: 5px 5px 0 0;
+ }
+ .ui-dialog .ui-dialog-title {
+ float: left;
+- margin: .1em 0;
++ margin: .1em 16px .1em 0;
++ font-size: 1.3em;
++ text-shadow: 1px 1px 1px #fff;
+ white-space: nowrap;
+ width: 90%;
+ overflow: hidden;
+@@ -484,50 +495,84 @@
+ }
+ .ui-dialog .ui-dialog-titlebar-close {
+ position: absolute;
+- right: .3em;
+- top: 50%;
+- width: 20px;
+- margin: -10px 0 0 0;
+- padding: 1px;
+- height: 20px;
++ right: -15px;
++ top: -15px;
++ width: 30px;
++ margin: 0;
++ padding: 0;
++ height: 30px;
++ z-index: 99999;
++ border-width: 0 !important;
++ background: none !important;
++ filter: none !important;
++ -webkit-box-shadow: none !important;
++ -moz-box-shadow: none !important;
++ -o-box-shadow: none !important;
++ box-shadow: none !important;
++}
++.ui-dialog .ui-dialog-titlebar-close.ui-state-focus {
++ outline: 2px solid #4fadd5;
++}
++.ui-dialog .ui-dialog-titlebar-close .ui-icon-closethick {
++ top: 0;
++ left: 0;
++ margin: 0;
++ width: 30px;
++ height: 30px;
++ background: url("images/ui-dialog-close.png") 0 0 no-repeat;
++}
++.no-close .ui-dialog-titlebar-close {
++ display: none !important;
+ }
+ .ui-dialog .ui-dialog-content {
+ position: relative;
+ border: 0;
+- padding: .5em 1em;
++ padding: 1.5em 1em 0.5em 1em;
+ background: none;
+ overflow: auto;
+ }
++.ui-dialog .ui-widget-content {
++ border: 0;
++}
+ .ui-dialog .ui-dialog-buttonpane {
+ text-align: left;
+ border-width: 1px 0 0 0;
+ background-image: none;
+- margin-top: .5em;
+- padding: .3em 1em .5em .4em;
++ border-color: #ddd;
++ border-style: solid;
++ margin: 0;
++ padding: .3em 1em .5em .8em;
+ }
+ .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
+- float: right;
++ float: left;
+ }
+ .ui-dialog .ui-dialog-buttonpane button {
+ margin: .5em .4em .5em 0;
+ cursor: pointer;
+ }
+ .ui-dialog .ui-resizable-se {
+- width: 12px;
+- height: 12px;
+- right: -5px;
+- bottom: -5px;
+- background-position: 16px 16px;
++ width: 14px;
++ height: 14px;
++ right: 3px;
++ bottom: 3px;
++ background-position: -80px -224px;
+ }
+ .ui-draggable .ui-dialog-titlebar {
+ cursor: move;
+ }
+ .ui-menu {
+ list-style: none;
+- padding: 2px;
++ padding: 0;
+ margin: 0;
+ display: block;
+ outline: none;
++ background: #444;
++ border: 1px solid #999;
++ border-radius: 4px !important;
++ -webkit-box-shadow: 0 2px 6px 0 #333;
++ -moz-box-shadow: 0 2px 6px 0 #333;
++ -o-box-shadow: 0 2px 6px 0 #333;
++ box-shadow: 0 2px 6px 0 #333;
+ }
+ .ui-menu .ui-menu {
+ margin-top: -3px;
+@@ -539,6 +584,16 @@
+ width: 100%;
+ /* support: IE10, see #8844 */
+ list-style-image: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
++ color: #fff;
++ white-space: nowrap;
++ border-top: 1px solid #5a5a5a;
++ border-bottom: 1px solid #333;
++}
++.ui-menu .ui-menu-item:first-child {
++ border-top: 0;
++}
++.ui-menu .ui-menu-item:last-child {
++ border-bottom: 0;
+ }
+ .ui-menu .ui-menu-divider {
+ margin: 5px -2px 5px -2px;
+@@ -550,15 +605,26 @@
+ .ui-menu .ui-menu-item a {
+ text-decoration: none;
+ display: block;
+- padding: 2px .4em;
++ padding: 6px 10px 4px 10px;
+ line-height: 1.5;
+ min-height: 0; /* support: IE7 */
+ font-weight: normal;
++ border: 0;
++ margin: 0;
++ border-radius: 0;
++ color: #fff;
++ background: #444;
++ text-shadow: 0px 1px 1px #333;
+ }
+ .ui-menu .ui-menu-item a.ui-state-focus,
+ .ui-menu .ui-menu-item a.ui-state-active {
+ font-weight: normal;
+- margin: -1px;
++ background: #00aad6;
++ background: -moz-linear-gradient(top, #00aad6 0%, #008fc9 100%);
++ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#00aad6), color-stop(100%,#008fc9));
++ background: -o-linear-gradient(top, #00aad6 0%, #008fc9 100%);
++ background: -ms-linear-gradient(top, #00aad6 0%, #008fc9 100%);
++ background: linear-gradient(top, #00aad6 0%, #008fc9 100%);
+ }
+
+ .ui-menu .ui-state-disabled {
+@@ -626,7 +692,13 @@
+ font-size: .7em;
+ display: block;
+ border: 0;
+- background-position: 0 0;
++ background: #019bc6;
++ background: -moz-linear-gradient(top, #019bc6 0%, #017cb4 100%);
++ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#019bc6), color-stop(100%,#017cb4));
++ background: -o-linear-gradient(top, #019bc6 0%, #017cb4 100%);
++ background: -ms-linear-gradient(top, #019bc6 0%, #017cb4 100%);
++ background: linear-gradient(top, #019bc6 0%, #017cb4 100%);
++ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#019bc6', endColorstr='#017cb4', GradientType=0);
+ }
+
+ /* For IE8 - See #6727 */
+@@ -732,23 +804,41 @@
+ padding: .2em;
+ }
+ .ui-tabs .ui-tabs-nav {
+- margin: 0;
+- padding: .2em .2em 0;
++ margin: 0; padding: 0;
++ border: 0;
++ background: transparent;
++ filter: none;
++ height: 44px;
+ }
+ .ui-tabs .ui-tabs-nav li {
+ list-style: none;
+- float: left;
+ position: relative;
++ display: inline-block;
+ top: 0;
+- margin: 1px .2em 0 0;
+- border-bottom-width: 0;
+- padding: 0;
++ margin: 0;
++ border: 0 !important;
++ padding: 0 1px 0 0;
+ white-space: nowrap;
++ background: #f8f8f8;
++ background: -moz-linear-gradient(top, #f8f8f8 0%, #d3d3d3 50%, #f8f8f8 100%);
++ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f8f8f8), color-stop(50%,#d3d3d3), color-stop(100%,#f8f8f8));
++ background: -webkit-linear-gradient(top, #f8f8f8 0%, #d3d3d3 50%, #f8f8f8 100%);
++ background: -o-linear-gradient(top, #f8f8f8 0%, #d3d3d3 50%, #f8f8f8 100%);
++ background: -ms-linear-gradient(top, #f8f8f8 0%, #d3d3d3 50%, #f8f8f8 100%);
++ background: linear-gradient(top, #f8f8f8 0%, #d3d3d3 50%, #f8f8f8 100%);
++ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f8f8f8', endColorstr='#d3d3d3', GradientType=0);
++}
++.ui-tabs .ui-tabs-nav li:last-child {
++ background: none;
+ }
+ .ui-tabs .ui-tabs-nav .ui-tabs-anchor {
+- float: left;
+- padding: .5em 1em;
++ display: inline-block;
++ padding: 15px;
+ text-decoration: none;
++ font-size: 12px;
++ color: #999;
++ background: #fafafa;
++ border-right: 1px solid #fafafa;
+ }
+ .ui-tabs .ui-tabs-nav li.ui-tabs-active {
+ margin-bottom: -1px;
+@@ -759,14 +849,26 @@
+ .ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
+ cursor: text;
+ }
++.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
++ outline: none;
++ color: #004458;
++ background: #efefef;
++ background: -moz-linear-gradient(top, #fafafa 40%, #e4e4e4 100%);
++ background: -webkit-gradient(linear, left top, left bottom, color-stop(40%,#fff), color-stop(100%,#e4e4e4));
++ background: -o-linear-gradient(top, #fafafa 40%, #e4e4e4 100%);
++ background: -ms-linear-gradient(top, #fafafa 40%, #e4e4e4 100%);
++ background: linear-gradient(top, #fafafa 40%, #e4e4e4 100%);
++ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fafafa', endColorstr='#e4e4e4', GradientType=0);
++}
+ .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
+ cursor: pointer;
+ }
+ .ui-tabs .ui-tabs-panel {
+ display: block;
+ border-width: 0;
+- padding: 1em 1.4em;
+- background: none;
++ padding: 0.5em 1em;
++ margin-top: 0.2em;
++ background: #efefef;
+ }
+ .ui-tooltip {
+ padding: 8px;
+@@ -798,15 +900,21 @@
+ }
+ .ui-widget-content {
+ border: 1px solid #aaaaaa;
+- background: #fafafa url("images/ui-bg_highlight-soft_75_fafafa_1x100.png") 50% top repeat-x;
+- color: 33333;
++ background: #fafafa;
++ color: #333333;
+ }
+ .ui-widget-content a {
+- color: 33333;
++ color: #0186ba;
+ }
+ .ui-widget-header {
+ border: 1px solid #fafafa;
+- background: #e4e4e4 url("images/ui-bg_highlight-soft_90_e4e4e4_1x100.png") 50% 50% repeat-x;
++ background: #e4e4e4;
++ background: -moz-linear-gradient(top, #f2f2f2 0%, #e4e4e4 100%);
++ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f2f2f2), color-stop(100%,#e4e4e4));
++ background: -o-linear-gradient(top, #f2f2f2 0%, #e4e4e4 100%);
++ background: -ms-linear-gradient(top, #f2f2f2 0%, #e4e4e4 100%);
++ background: linear-gradient(top, #f2f2f2 0%, #e4e4e4 100%);
++ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f2f2f2', endColorstr='#e4e4e4', GradientType=0);
+ color: #666666;
+ font-weight: bold;
+ }
+@@ -820,7 +928,7 @@
+ .ui-widget-content .ui-state-default,
+ .ui-widget-header .ui-state-default {
+ border: 1px solid #cccccc;
+- background: #f8f8f8 url("images/ui-bg_highlight-hard_75_f8f8f8_1x100.png") 50% 50% repeat-x;
++ background: #f8f8f8;
+ font-weight: bold;
+ color: #666666;
+ }
+@@ -837,7 +945,7 @@
+ .ui-widget-content .ui-state-focus,
+ .ui-widget-header .ui-state-focus {
+ border: 1px solid #aaaaaa;
+- background: #eaeaea url("images/ui-bg_highlight-hard_75_eaeaea_1x100.png") 50% 50% repeat-x;
++ background: #eaeaea;
+ font-weight: bold;
+ color: #333333;
+ }
+@@ -856,7 +964,7 @@
+ .ui-widget-content .ui-state-active,
+ .ui-widget-header .ui-state-active {
+ border: 1px solid #aaaaaa;
+- background: #ffffff url("images/ui-bg_highlight-hard_65_ffffff_1x100.png") 50% 50% repeat-x;
++ background: #ffffff;
+ font-weight: bold;
+ color: #333333;
+ }
+@@ -873,7 +981,7 @@
+ .ui-widget-content .ui-state-highlight,
+ .ui-widget-header .ui-state-highlight {
+ border: 1px solid #a3a3a3;
+- background: #b0ccd7 url("images/ui-bg_highlight-hard_55_b0ccd7_1x100.png") 50% top repeat-x;
++ background: #b0ccd7;
+ color: #004458;
+ }
+ .ui-state-highlight a,
+@@ -885,7 +993,7 @@
+ .ui-widget-content .ui-state-error,
+ .ui-widget-header .ui-state-error {
+ border: 1px solid #d7211e;
+- background: #fef1ec url("images/ui-bg_flat_95_fef1ec_40x100.png") 50% 50% repeat-x;
++ background: #fef1ec;
+ color: #d64040;
+ }
+ .ui-state-error a,
+@@ -1164,15 +1272,240 @@
+
+ /* Overlays */
+ .ui-widget-overlay {
+- background: #333333 url("images/ui-bg_flat_0_333333_40x100.png") 50% 50% repeat-x;
++ background: #333333;
+ opacity: .5;
+ filter: Alpha(Opacity=50);
+ }
+ .ui-widget-shadow {
+ margin: -6px 0 0 -6px;
+ padding: 6px;
+- background: #666666 url("images/ui-bg_flat_0_666666_40x100.png") 50% 50% repeat-x;
++ background: #666666;
+ opacity: .2;
+ filter: Alpha(Opacity=20);
+ border-radius: 8px;
+ }
++
++/* Roundcube button styling */
++.ui-button.ui-state-default {
++ display: inline-block;
++ margin: 0 2px;
++ padding: 1px 2px;
++ text-shadow: 0px 1px 1px #fff;
++ border: 1px solid #c6c6c6;
++ border-radius: 4px;
++ background: #f7f7f7;
++ background: -moz-linear-gradient(top, #f9f9f9 0%, #e6e6e6 100%);
++ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f9f9f9), color-stop(100%,#e6e6e6));
++ background: -o-linear-gradient(top, #f9f9f9 0%, #e6e6e6 100%);
++ background: -ms-linear-gradient(top, #f9f9f9 0%, #e6e6e6 100%);
++ background: linear-gradient(top, #f9f9f9 0%, #e6e6e6 100%);
++ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f9f9f9', endColorstr='#e6e6e6', GradientType=0);
++ -webkit-box-shadow: 0 1px 1px 0 rgba(140, 140, 140, 0.3);
++ -moz-box-shadow: 0 1px 1px 0 rgba(140, 140, 140, 0.3);
++ -o-box-shadow: 0 1px 1px 0 rgba(140, 140, 140, 0.3);
++ box-shadow: 0 1px 1px 0 rgba(140, 140, 140, 0.3);
++ text-decoration: none;
++ outline: none;
++}
++
++.ui-button.mainaction {
++ color: #ededed;
++ text-shadow: 0px 1px 1px #333;
++ border-color: #1f262c;
++ background: #505050;
++ background: -moz-linear-gradient(top, #505050 0%, #2a2e31 100%);
++ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#505050), color-stop(100%,#2a2e31));
++ background: -o-linear-gradient(top, #505050 0%, #2a2e31 100%);
++ background: -ms-linear-gradient(top, #505050 0%, #2a2e31 100%);
++ background: linear-gradient(top, #505050 0%, #2a2e31 100%);
++ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#505050', endColorstr='#2a2e31', GradientType=0);
++ -moz-box-shadow: inset 0 1px 0 0 #777;
++ -webkit-box-shadow: inset 0 1px 0 0 #777;
++ -o-box-shadow: inset 0 1px 0 0 #777;
++ box-shadow: inset 0 1px 0 0 #777;
++}
++
++.ui-button.ui-state-focus {
++ color: #525252;
++ border-color: #4fadd5;
++ -moz-box-shadow: 0 0 2px 1px rgba(71,135,177, 0.6);
++ -webkit-box-shadow: 0 0 2px 1px rgba(71,135,177, 0.6);
++ -o-box-shadow: 0 0 2px 1px rgba(71,135,177, 0.6);
++ box-shadow: 0 0 2px 1px rgba(71,135,177, 0.6);
++}
++
++.ui-button.ui-state-active {
++ color: #525252;
++ border-color: #aaa;
++ background: #e6e6e6;
++ background: -moz-linear-gradient(top, #e6e6e6 0%, #f9f9f9 100%);
++ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#e6e6e6), color-stop(100%,#f9f9f9));
++ background: -o-linear-gradient(top, #e6e6e6 0%, #f9f9f9 100%);
++ background: -ms-linear-gradient(top, #e6e6e6 0%, #f9f9f9 100%);
++ background: linear-gradient(top, #e6e6e6 0%, #f9f9f9 100%);
++ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e6e6e6', endColorstr='#f9f9f9', GradientType=0);
++}
++
++.ui-button.ui-state-focus.mainaction,
++.ui-button.ui-state-hover.mainaction {
++ color: #fff;
++}
++
++.ui-button.ui-state-focus.mainaction {
++ border-color: #1f262c;
++ -moz-box-shadow: 0 0 2px 1px rgba(71,135,177, 0.6), inset 0 1px 0 0 #777;
++ -webkit-box-shadow: 0 0 2px 1px rgba(71,135,177, 0.6), inset 0 1px 0 0 #777;
++ -o-box-shadow: 0 0 2px 1px rgba(71,135,177, 0.6), inset 0 1px 0 0 #777;
++ box-shadow: 0 0 2px 1px rgba(71,135,177, 0.6), inset 0 1px 0 0 #777;
++}
++
++.ui-button.ui-state-active.mainaction {
++ color: #fff;
++ background: #515151;
++ background: -moz-linear-gradient(top, #2a2e31 0%, #505050 100%);
++ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#2a2e31), color-stop(100%,#505050));
++ background: -o-linear-gradient(top, #2a2e31 0%, #505050 100%);
++ background: -ms-linear-gradient(top, #2a2e31 0%, #505050 100%);
++ background: linear-gradient(top, #2a2e31 0%, #505050 100%);
++}
++
++.ui-button[disabled],
++.ui-button[disabled]:hover,
++.ui-button.mainaction[disabled] {
++ color: #aaa !important;
++}
++
++/* Roundcube's specific Datepicker style override */
++.ui-datepicker {
++ min-width: 20em;
++ padding: 0;
++ display: none;
++ border: 0;
++ border-radius: 3px;
++ -webkit-box-shadow: #666 1px 1px 10px;
++ -moz-box-shadow: 1px 1px 10px #666;
++ box-shadow: 1px 1px 16px #666;
++}
++.ui-datepicker .ui-datepicker-header {
++ padding: .3em 0;
++ border-radius: 3px 3px 0 0;
++ border: 0;
++ background: #3a3a3a;
++ filter: none;
++ color: #fff;
++ text-shadow: 0px 1px 1px #000;
++}
++.ui-datepicker .ui-datepicker-prev,
++.ui-datepicker .ui-datepicker-next {
++ border: 0;
++ background: none;
++}
++.ui-datepicker .ui-datepicker-header .ui-icon {
++ background: url("images/ui-icons-datepicker.png") 0 0 no-repeat;
++}
++.ui-datepicker .ui-datepicker-header .ui-icon-circle-triangle-w {
++ background-position: 0 2px;
++}
++.ui-datepicker .ui-datepicker-header .ui-icon-circle-triangle-e {
++ background-position: -14px 2px;
++}
++.ui-datepicker .ui-datepicker-prev-hover,
++.ui-datepicker .ui-datepicker-next-hover {
++ top: 2px;
++ border: 0;
++ background: none;
++}
++.ui-datepicker .ui-datepicker-prev,
++.ui-datepicker .ui-datepicker-prev-hover {
++ left: 2px;
++}
++.ui-datepicker .ui-datepicker-next,
++.ui-datepicker .ui-datepicker-next-hover {
++ right: 2px;
++}
++.ui-datepicker select.ui-datepicker-month,
++.ui-datepicker select.ui-datepicker-year {
++ border: 0;
++ background: #3a3a3a;
++ outline: none;
++ color: #fff;
++ font-weight: bold;
++ width: auto;
++ margin-right: 4px;
++ padding-right: 4px;
++}
++.ui-datepicker .ui-datepicker-title select::-ms-expand {
++ display: none;
++}
++.ie10 .ui-datepicker .ui-datepicker-title select,
++.webkit .ui-datepicker .ui-datepicker-title select,
++.mozilla .ui-datepicker .ui-datepicker-title select {
++ background-image: url("images/ui-icons-datepicker.png");
++ background-position: right -18px;
++ background-repeat: no-repeat;
++ padding-right: 14px;
++ -webkit-appearance: none;
++ -moz-appearance: none;
++ appearance: none;
++}
++.mozilla .ui-datepicker .ui-datepicker-title select {
++ background-position: right -17px;
++ text-indent: 0.01px;
++ text-overflow: '';
++ padding-right: 0;
++}
++.ui-datepicker .ui-datepicker-month:focus,
++.ui-datepicker .ui-datepicker-year:focus {
++ outline: 1px solid #4fadd5;
++}
++.ui-datepicker table {
++ margin: 0;
++ border-spacing: 0;
++}
++.ui-datepicker table:focus {
++ outline: 2px solid #4fadd5;
++ outline-offset: -2px;
++}
++.ui-datepicker td {
++ border: 1px solid #bbb;
++ padding: 0;
++}
++.ui-datepicker td span, .ui-datepicker td a {
++ border: 0;
++ padding: .3em;
++ text-shadow: 0px 1px 1px #fff;
++}
++.ui-datepicker td a.ui-state-default {
++ border: 0px solid #fff;
++ border-top-width: 1px;
++ border-left-width: 1px;
++ background: #e6e6e6;
++ background: -moz-linear-gradient(top, #e6e6e6 0%, #d6d6d6 100%);
++ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#e6e6e6), color-stop(100%,#d6d6d6));
++ background: -o-linear-gradient(top, #e6e6e6 0%, #d6d6d6 100%);
++ background: -ms-linear-gradient(top, #e6e6e6 0%, #d6d6d6 100%);
++ background: linear-gradient(top, #e6e6e6 0%, #d6d6d6 100%);
++}
++.ui-datepicker td a.ui-priority-secondary {
++ background: #eee;
++}
++.ui-datepicker td a.ui-state-active {
++ color: #fff;
++ border-color: #0286ac !important;
++ text-shadow: 0px 1px 1px #00516e !important;
++ background: #00acd4 !important;
++ background: -moz-linear-gradient(top, #00acd4 0%, #008fc7 100%);
++ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#00acd4), color-stop(100%,#008fc7));
++ background: -o-linear-gradient(top, #00acd4 0%, #008fc7 100%);
++ background: -ms-linear-gradient(top, #00acd4 0%, #008fc7 100%);
++ background: linear-gradient(top, #00acd4 0%, #008fc7 100%);
++}
++.ui-datepicker .ui-state-highlight {
++ color: #0081c2;
++}
++.ui-datepicker td.ui-datepicker-days-cell-over a.ui-state-default {
++ color: #fff;
++ border-color: rgba(73,180,210,0.7);
++ background: rgba(73,180,210,0.7);
++ text-shadow: 0px 1px 1px #666;
++}
diff --git a/plugins/jqueryui/themes/redmond/images/animated-overlay.gif b/plugins/jqueryui/themes/redmond/images/animated-overlay.gif
new file mode 100755
index 000000000..d441f75eb
--- /dev/null
+++ b/plugins/jqueryui/themes/redmond/images/animated-overlay.gif
Binary files differ
diff --git a/plugins/jqueryui/themes/redmond/jquery-ui-1.10.4.custom.css b/plugins/jqueryui/themes/redmond/jquery-ui-1.10.4.custom.css
new file mode 100755
index 000000000..934953b90
--- /dev/null
+++ b/plugins/jqueryui/themes/redmond/jquery-ui-1.10.4.custom.css
@@ -0,0 +1,1178 @@
+/*! jQuery UI - v1.10.4 - 2014-06-17
+* http://jqueryui.com
+* Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css, jquery.ui.theme.css
+* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande%2CLucida%20Sans%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=5px&bgColorHeader=5c9ccc&bgTextureHeader=gloss_wave&bgImgOpacityHeader=55&borderColorHeader=4297d7&fcHeader=ffffff&iconColorHeader=d8e7f3&bgColorContent=fcfdfd&bgTextureContent=inset_hard&bgImgOpacityContent=100&borderColorContent=a6c9e2&fcContent=222222&iconColorContent=469bdd&bgColorDefault=dfeffc&bgTextureDefault=glass&bgImgOpacityDefault=85&borderColorDefault=c5dbec&fcDefault=2e6e9e&iconColorDefault=6da8d5&bgColorHover=d0e5f5&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=79b7e7&fcHover=1d5987&iconColorHover=217bc0&bgColorActive=f5f8f9&bgTextureActive=inset_hard&bgImgOpacityActive=100&borderColorActive=79b7e7&fcActive=e17009&iconColorActive=f9bd01&bgColorHighlight=fbec88&bgTextureHighlight=flat&bgImgOpacityHighlight=55&borderColorHighlight=fad42e&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
+* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden {
+ display: none;
+}
+.ui-helper-hidden-accessible {
+ border: 0;
+ clip: rect(0 0 0 0);
+ height: 1px;
+ margin: -1px;
+ overflow: hidden;
+ padding: 0;
+ position: absolute;
+ width: 1px;
+}
+.ui-helper-reset {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ outline: 0;
+ line-height: 1.3;
+ text-decoration: none;
+ font-size: 100%;
+ list-style: none;
+}
+.ui-helper-clearfix:before,
+.ui-helper-clearfix:after {
+ content: "";
+ display: table;
+ border-collapse: collapse;
+}
+.ui-helper-clearfix:after {
+ clear: both;
+}
+.ui-helper-clearfix {
+ min-height: 0; /* support: IE7 */
+}
+.ui-helper-zfix {
+ width: 100%;
+ height: 100%;
+ top: 0;
+ left: 0;
+ position: absolute;
+ opacity: 0;
+ filter:Alpha(Opacity=0);
+}
+
+.ui-front {
+ z-index: 100;
+}
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled {
+ cursor: default !important;
+}
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon {
+ display: block;
+ text-indent: -99999px;
+ overflow: hidden;
+ background-repeat: no-repeat;
+}
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay {
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+}
+.ui-resizable {
+ position: relative;
+}
+.ui-resizable-handle {
+ position: absolute;
+ font-size: 0.1px;
+ display: block;
+}
+.ui-resizable-disabled .ui-resizable-handle,
+.ui-resizable-autohide .ui-resizable-handle {
+ display: none;
+}
+.ui-resizable-n {
+ cursor: n-resize;
+ height: 7px;
+ width: 100%;
+ top: -5px;
+ left: 0;
+}
+.ui-resizable-s {
+ cursor: s-resize;
+ height: 7px;
+ width: 100%;
+ bottom: -5px;
+ left: 0;
+}
+.ui-resizable-e {
+ cursor: e-resize;
+ width: 7px;
+ right: -5px;
+ top: 0;
+ height: 100%;
+}
+.ui-resizable-w {
+ cursor: w-resize;
+ width: 7px;
+ left: -5px;
+ top: 0;
+ height: 100%;
+}
+.ui-resizable-se {
+ cursor: se-resize;
+ width: 12px;
+ height: 12px;
+ right: 1px;
+ bottom: 1px;
+}
+.ui-resizable-sw {
+ cursor: sw-resize;
+ width: 9px;
+ height: 9px;
+ left: -5px;
+ bottom: -5px;
+}
+.ui-resizable-nw {
+ cursor: nw-resize;
+ width: 9px;
+ height: 9px;
+ left: -5px;
+ top: -5px;
+}
+.ui-resizable-ne {
+ cursor: ne-resize;
+ width: 9px;
+ height: 9px;
+ right: -5px;
+ top: -5px;
+}
+.ui-selectable-helper {
+ position: absolute;
+ z-index: 100;
+ border: 1px dotted black;
+}
+.ui-accordion .ui-accordion-header {
+ display: block;
+ cursor: pointer;
+ position: relative;
+ margin-top: 2px;
+ padding: .5em .5em .5em .7em;
+ min-height: 0; /* support: IE7 */
+}
+.ui-accordion .ui-accordion-icons {
+ padding-left: 2.2em;
+}
+.ui-accordion .ui-accordion-noicons {
+ padding-left: .7em;
+}
+.ui-accordion .ui-accordion-icons .ui-accordion-icons {
+ padding-left: 2.2em;
+}
+.ui-accordion .ui-accordion-header .ui-accordion-header-icon {
+ position: absolute;
+ left: .5em;
+ top: 50%;
+ margin-top: -8px;
+}
+.ui-accordion .ui-accordion-content {
+ padding: 1em 2.2em;
+ border-top: 0;
+ overflow: auto;
+}
+.ui-autocomplete {
+ position: absolute;
+ top: 0;
+ left: 0;
+ cursor: default;
+}
+.ui-button {
+ display: inline-block;
+ position: relative;
+ padding: 0;
+ line-height: normal;
+ margin-right: .1em;
+ cursor: pointer;
+ vertical-align: middle;
+ text-align: center;
+ overflow: visible; /* removes extra width in IE */
+}
+.ui-button,
+.ui-button:link,
+.ui-button:visited,
+.ui-button:hover,
+.ui-button:active {
+ text-decoration: none;
+}
+/* to make room for the icon, a width needs to be set here */
+.ui-button-icon-only {
+ width: 2.2em;
+}
+/* button elements seem to need a little more width */
+button.ui-button-icon-only {
+ width: 2.4em;
+}
+.ui-button-icons-only {
+ width: 3.4em;
+}
+button.ui-button-icons-only {
+ width: 3.7em;
+}
+
+/* button text element */
+.ui-button .ui-button-text {
+ display: block;
+ line-height: normal;
+}
+.ui-button-text-only .ui-button-text {
+ padding: .4em 1em;
+}
+.ui-button-icon-only .ui-button-text,
+.ui-button-icons-only .ui-button-text {
+ padding: .4em;
+ text-indent: -9999999px;
+}
+.ui-button-text-icon-primary .ui-button-text,
+.ui-button-text-icons .ui-button-text {
+ padding: .4em 1em .4em 2.1em;
+}
+.ui-button-text-icon-secondary .ui-button-text,
+.ui-button-text-icons .ui-button-text {
+ padding: .4em 2.1em .4em 1em;
+}
+.ui-button-text-icons .ui-button-text {
+ padding-left: 2.1em;
+ padding-right: 2.1em;
+}
+/* no icon support for input elements, provide padding by default */
+input.ui-button {
+ padding: .4em 1em;
+}
+
+/* button icon element(s) */
+.ui-button-icon-only .ui-icon,
+.ui-button-text-icon-primary .ui-icon,
+.ui-button-text-icon-secondary .ui-icon,
+.ui-button-text-icons .ui-icon,
+.ui-button-icons-only .ui-icon {
+ position: absolute;
+ top: 50%;
+ margin-top: -8px;
+}
+.ui-button-icon-only .ui-icon {
+ left: 50%;
+ margin-left: -8px;
+}
+.ui-button-text-icon-primary .ui-button-icon-primary,
+.ui-button-text-icons .ui-button-icon-primary,
+.ui-button-icons-only .ui-button-icon-primary {
+ left: .5em;
+}
+.ui-button-text-icon-secondary .ui-button-icon-secondary,
+.ui-button-text-icons .ui-button-icon-secondary,
+.ui-button-icons-only .ui-button-icon-secondary {
+ right: .5em;
+}
+
+/* button sets */
+.ui-buttonset {
+ margin-right: 7px;
+}
+.ui-buttonset .ui-button {
+ margin-left: 0;
+ margin-right: -.3em;
+}
+
+/* workarounds */
+/* reset extra padding in Firefox, see h5bp.com/l */
+input.ui-button::-moz-focus-inner,
+button.ui-button::-moz-focus-inner {
+ border: 0;
+ padding: 0;
+}
+.ui-datepicker {
+ width: 17em;
+ padding: .2em .2em 0;
+ display: none;
+}
+.ui-datepicker .ui-datepicker-header {
+ position: relative;
+ padding: .2em 0;
+}
+.ui-datepicker .ui-datepicker-prev,
+.ui-datepicker .ui-datepicker-next {
+ position: absolute;
+ top: 2px;
+ width: 1.8em;
+ height: 1.8em;
+}
+.ui-datepicker .ui-datepicker-prev-hover,
+.ui-datepicker .ui-datepicker-next-hover {
+ top: 1px;
+}
+.ui-datepicker .ui-datepicker-prev {
+ left: 2px;
+}
+.ui-datepicker .ui-datepicker-next {
+ right: 2px;
+}
+.ui-datepicker .ui-datepicker-prev-hover {
+ left: 1px;
+}
+.ui-datepicker .ui-datepicker-next-hover {
+ right: 1px;
+}
+.ui-datepicker .ui-datepicker-prev span,
+.ui-datepicker .ui-datepicker-next span {
+ display: block;
+ position: absolute;
+ left: 50%;
+ margin-left: -8px;
+ top: 50%;
+ margin-top: -8px;
+}
+.ui-datepicker .ui-datepicker-title {
+ margin: 0 2.3em;
+ line-height: 1.8em;
+ text-align: center;
+}
+.ui-datepicker .ui-datepicker-title select {
+ font-size: 1em;
+ margin: 1px 0;
+}
+.ui-datepicker select.ui-datepicker-month,
+.ui-datepicker select.ui-datepicker-year {
+ width: 49%;
+}
+.ui-datepicker table {
+ width: 100%;
+ font-size: .9em;
+ border-collapse: collapse;
+ margin: 0 0 .4em;
+}
+.ui-datepicker th {
+ padding: .7em .3em;
+ text-align: center;
+ font-weight: bold;
+ border: 0;
+}
+.ui-datepicker td {
+ border: 0;
+ padding: 1px;
+}
+.ui-datepicker td span,
+.ui-datepicker td a {
+ display: block;
+ padding: .2em;
+ text-align: right;
+ text-decoration: none;
+}
+.ui-datepicker .ui-datepicker-buttonpane {
+ background-image: none;
+ margin: .7em 0 0 0;
+ padding: 0 .2em;
+ border-left: 0;
+ border-right: 0;
+ border-bottom: 0;
+}
+.ui-datepicker .ui-datepicker-buttonpane button {
+ float: right;
+ margin: .5em .2em .4em;
+ cursor: pointer;
+ padding: .2em .6em .3em .6em;
+ width: auto;
+ overflow: visible;
+}
+.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
+ float: left;
+}
+
+/* with multiple calendars */
+.ui-datepicker.ui-datepicker-multi {
+ width: auto;
+}
+.ui-datepicker-multi .ui-datepicker-group {
+ float: left;
+}
+.ui-datepicker-multi .ui-datepicker-group table {
+ width: 95%;
+ margin: 0 auto .4em;
+}
+.ui-datepicker-multi-2 .ui-datepicker-group {
+ width: 50%;
+}
+.ui-datepicker-multi-3 .ui-datepicker-group {
+ width: 33.3%;
+}
+.ui-datepicker-multi-4 .ui-datepicker-group {
+ width: 25%;
+}
+.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
+.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
+ border-left-width: 0;
+}
+.ui-datepicker-multi .ui-datepicker-buttonpane {
+ clear: left;
+}
+.ui-datepicker-row-break {
+ clear: both;
+ width: 100%;
+ font-size: 0;
+}
+
+/* RTL support */
+.ui-datepicker-rtl {
+ direction: rtl;
+}
+.ui-datepicker-rtl .ui-datepicker-prev {
+ right: 2px;
+ left: auto;
+}
+.ui-datepicker-rtl .ui-datepicker-next {
+ left: 2px;
+ right: auto;
+}
+.ui-datepicker-rtl .ui-datepicker-prev:hover {
+ right: 1px;
+ left: auto;
+}
+.ui-datepicker-rtl .ui-datepicker-next:hover {
+ left: 1px;
+ right: auto;
+}
+.ui-datepicker-rtl .ui-datepicker-buttonpane {
+ clear: right;
+}
+.ui-datepicker-rtl .ui-datepicker-buttonpane button {
+ float: left;
+}
+.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
+.ui-datepicker-rtl .ui-datepicker-group {
+ float: right;
+}
+.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
+.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
+ border-right-width: 0;
+ border-left-width: 1px;
+}
+.ui-dialog {
+ overflow: hidden;
+ position: absolute;
+ top: 0;
+ left: 0;
+ padding: .2em;
+ outline: 0;
+}
+.ui-dialog .ui-dialog-titlebar {
+ padding: .4em 1em;
+ position: relative;
+}
+.ui-dialog .ui-dialog-title {
+ float: left;
+ margin: .1em 0;
+ white-space: nowrap;
+ width: 90%;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+.ui-dialog .ui-dialog-titlebar-close {
+ position: absolute;
+ right: .3em;
+ top: 50%;
+ width: 20px;
+ margin: -10px 0 0 0;
+ padding: 1px;
+ height: 20px;
+}
+.ui-dialog .ui-dialog-content {
+ position: relative;
+ border: 0;
+ padding: .5em 1em;
+ background: none;
+ overflow: auto;
+}
+.ui-dialog .ui-dialog-buttonpane {
+ text-align: left;
+ border-width: 1px 0 0 0;
+ background-image: none;
+ margin-top: .5em;
+ padding: .3em 1em .5em .4em;
+}
+.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
+ float: right;
+}
+.ui-dialog .ui-dialog-buttonpane button {
+ margin: .5em .4em .5em 0;
+ cursor: pointer;
+}
+.ui-dialog .ui-resizable-se {
+ width: 12px;
+ height: 12px;
+ right: -5px;
+ bottom: -5px;
+ background-position: 16px 16px;
+}
+.ui-draggable .ui-dialog-titlebar {
+ cursor: move;
+}
+.ui-menu {
+ list-style: none;
+ padding: 2px;
+ margin: 0;
+ display: block;
+ outline: none;
+}
+.ui-menu .ui-menu {
+ margin-top: -3px;
+ position: absolute;
+}
+.ui-menu .ui-menu-item {
+ margin: 0;
+ padding: 0;
+ width: 100%;
+ /* support: IE10, see #8844 */
+ list-style-image: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
+}
+.ui-menu .ui-menu-divider {
+ margin: 5px -2px 5px -2px;
+ height: 0;
+ font-size: 0;
+ line-height: 0;
+ border-width: 1px 0 0 0;
+}
+.ui-menu .ui-menu-item a {
+ text-decoration: none;
+ display: block;
+ padding: 2px .4em;
+ line-height: 1.5;
+ min-height: 0; /* support: IE7 */
+ font-weight: normal;
+}
+.ui-menu .ui-menu-item a.ui-state-focus,
+.ui-menu .ui-menu-item a.ui-state-active {
+ font-weight: normal;
+ margin: -1px;
+}
+
+.ui-menu .ui-state-disabled {
+ font-weight: normal;
+ margin: .4em 0 .2em;
+ line-height: 1.5;
+}
+.ui-menu .ui-state-disabled a {
+ cursor: default;
+}
+
+/* icon support */
+.ui-menu-icons {
+ position: relative;
+}
+.ui-menu-icons .ui-menu-item a {
+ position: relative;
+ padding-left: 2em;
+}
+
+/* left-aligned */
+.ui-menu .ui-icon {
+ position: absolute;
+ top: .2em;
+ left: .2em;
+}
+
+/* right-aligned */
+.ui-menu .ui-menu-icon {
+ position: static;
+ float: right;
+}
+.ui-progressbar {
+ height: 2em;
+ text-align: left;
+ overflow: hidden;
+}
+.ui-progressbar .ui-progressbar-value {
+ margin: -1px;
+ height: 100%;
+}
+.ui-progressbar .ui-progressbar-overlay {
+ background: url("images/animated-overlay.gif");
+ height: 100%;
+ filter: alpha(opacity=25);
+ opacity: 0.25;
+}
+.ui-progressbar-indeterminate .ui-progressbar-value {
+ background-image: none;
+}
+.ui-slider {
+ position: relative;
+ text-align: left;
+}
+.ui-slider .ui-slider-handle {
+ position: absolute;
+ z-index: 2;
+ width: 1.2em;
+ height: 1.2em;
+ cursor: default;
+}
+.ui-slider .ui-slider-range {
+ position: absolute;
+ z-index: 1;
+ font-size: .7em;
+ display: block;
+ border: 0;
+ background-position: 0 0;
+}
+
+/* For IE8 - See #6727 */
+.ui-slider.ui-state-disabled .ui-slider-handle,
+.ui-slider.ui-state-disabled .ui-slider-range {
+ filter: inherit;
+}
+
+.ui-slider-horizontal {
+ height: .8em;
+}
+.ui-slider-horizontal .ui-slider-handle {
+ top: -.3em;
+ margin-left: -.6em;
+}
+.ui-slider-horizontal .ui-slider-range {
+ top: 0;
+ height: 100%;
+}
+.ui-slider-horizontal .ui-slider-range-min {
+ left: 0;
+}
+.ui-slider-horizontal .ui-slider-range-max {
+ right: 0;
+}
+
+.ui-slider-vertical {
+ width: .8em;
+ height: 100px;
+}
+.ui-slider-vertical .ui-slider-handle {
+ left: -.3em;
+ margin-left: 0;
+ margin-bottom: -.6em;
+}
+.ui-slider-vertical .ui-slider-range {
+ left: 0;
+ width: 100%;
+}
+.ui-slider-vertical .ui-slider-range-min {
+ bottom: 0;
+}
+.ui-slider-vertical .ui-slider-range-max {
+ top: 0;
+}
+.ui-spinner {
+ position: relative;
+ display: inline-block;
+ overflow: hidden;
+ padding: 0;
+ vertical-align: middle;
+}
+.ui-spinner-input {
+ border: none;
+ background: none;
+ color: inherit;
+ padding: 0;
+ margin: .2em 0;
+ vertical-align: middle;
+ margin-left: .4em;
+ margin-right: 22px;
+}
+.ui-spinner-button {
+ width: 16px;
+ height: 50%;
+ font-size: .5em;
+ padding: 0;
+ margin: 0;
+ text-align: center;
+ position: absolute;
+ cursor: default;
+ display: block;
+ overflow: hidden;
+ right: 0;
+}
+/* more specificity required here to override default borders */
+.ui-spinner a.ui-spinner-button {
+ border-top: none;
+ border-bottom: none;
+ border-right: none;
+}
+/* vertically center icon */
+.ui-spinner .ui-icon {
+ position: absolute;
+ margin-top: -8px;
+ top: 50%;
+ left: 0;
+}
+.ui-spinner-up {
+ top: 0;
+}
+.ui-spinner-down {
+ bottom: 0;
+}
+
+/* TR overrides */
+.ui-spinner .ui-icon-triangle-1-s {
+ /* need to fix icons sprite */
+ background-position: -65px -16px;
+}
+.ui-tabs {
+ position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+ padding: .2em;
+}
+.ui-tabs .ui-tabs-nav {
+ margin: 0;
+ padding: .2em .2em 0;
+}
+.ui-tabs .ui-tabs-nav li {
+ list-style: none;
+ float: left;
+ position: relative;
+ top: 0;
+ margin: 1px .2em 0 0;
+ border-bottom-width: 0;
+ padding: 0;
+ white-space: nowrap;
+}
+.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
+ float: left;
+ padding: .5em 1em;
+ text-decoration: none;
+}
+.ui-tabs .ui-tabs-nav li.ui-tabs-active {
+ margin-bottom: -1px;
+ padding-bottom: 1px;
+}
+.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
+.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
+.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
+ cursor: text;
+}
+.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
+ cursor: pointer;
+}
+.ui-tabs .ui-tabs-panel {
+ display: block;
+ border-width: 0;
+ padding: 1em 1.4em;
+ background: none;
+}
+.ui-tooltip {
+ padding: 8px;
+ position: absolute;
+ z-index: 9999;
+ max-width: 300px;
+ -webkit-box-shadow: 0 0 5px #aaa;
+ box-shadow: 0 0 5px #aaa;
+}
+body .ui-tooltip {
+ border-width: 2px;
+}
+
+/* Component containers
+----------------------------------*/
+.ui-widget {
+ font-family: Lucida Grande,Lucida Sans,Arial,sans-serif;
+ font-size: 1.1em;
+}
+.ui-widget .ui-widget {
+ font-size: 1em;
+}
+.ui-widget input,
+.ui-widget select,
+.ui-widget textarea,
+.ui-widget button {
+ font-family: Lucida Grande,Lucida Sans,Arial,sans-serif;
+ font-size: 1em;
+}
+.ui-widget-content {
+ border: 1px solid #a6c9e2;
+ background: #fcfdfd url("images/ui-bg_inset-hard_100_fcfdfd_1x100.png") 50% bottom repeat-x;
+ color: #222222;
+}
+.ui-widget-content a {
+ color: #222222;
+}
+.ui-widget-header {
+ border: 1px solid #4297d7;
+ background: #5c9ccc url("images/ui-bg_gloss-wave_55_5c9ccc_500x100.png") 50% 50% repeat-x;
+ color: #ffffff;
+ font-weight: bold;
+}
+.ui-widget-header a {
+ color: #ffffff;
+}
+
+/* Interaction states
+----------------------------------*/
+.ui-state-default,
+.ui-widget-content .ui-state-default,
+.ui-widget-header .ui-state-default {
+ border: 1px solid #c5dbec;
+ background: #dfeffc url("images/ui-bg_glass_85_dfeffc_1x400.png") 50% 50% repeat-x;
+ font-weight: bold;
+ color: #2e6e9e;
+}
+.ui-state-default a,
+.ui-state-default a:link,
+.ui-state-default a:visited {
+ color: #2e6e9e;
+ text-decoration: none;
+}
+.ui-state-hover,
+.ui-widget-content .ui-state-hover,
+.ui-widget-header .ui-state-hover,
+.ui-state-focus,
+.ui-widget-content .ui-state-focus,
+.ui-widget-header .ui-state-focus {
+ border: 1px solid #79b7e7;
+ background: #d0e5f5 url("images/ui-bg_glass_75_d0e5f5_1x400.png") 50% 50% repeat-x;
+ font-weight: bold;
+ color: #1d5987;
+}
+.ui-state-hover a,
+.ui-state-hover a:hover,
+.ui-state-hover a:link,
+.ui-state-hover a:visited,
+.ui-state-focus a,
+.ui-state-focus a:hover,
+.ui-state-focus a:link,
+.ui-state-focus a:visited {
+ color: #1d5987;
+ text-decoration: none;
+}
+.ui-state-active,
+.ui-widget-content .ui-state-active,
+.ui-widget-header .ui-state-active {
+ border: 1px solid #79b7e7;
+ background: #f5f8f9 url("images/ui-bg_inset-hard_100_f5f8f9_1x100.png") 50% 50% repeat-x;
+ font-weight: bold;
+ color: #e17009;
+}
+.ui-state-active a,
+.ui-state-active a:link,
+.ui-state-active a:visited {
+ color: #e17009;
+ text-decoration: none;
+}
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight,
+.ui-widget-content .ui-state-highlight,
+.ui-widget-header .ui-state-highlight {
+ border: 1px solid #fad42e;
+ background: #fbec88 url("images/ui-bg_flat_55_fbec88_40x100.png") 50% 50% repeat-x;
+ color: #363636;
+}
+.ui-state-highlight a,
+.ui-widget-content .ui-state-highlight a,
+.ui-widget-header .ui-state-highlight a {
+ color: #363636;
+}
+.ui-state-error,
+.ui-widget-content .ui-state-error,
+.ui-widget-header .ui-state-error {
+ border: 1px solid #cd0a0a;
+ background: #fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x;
+ color: #cd0a0a;
+}
+.ui-state-error a,
+.ui-widget-content .ui-state-error a,
+.ui-widget-header .ui-state-error a {
+ color: #cd0a0a;
+}
+.ui-state-error-text,
+.ui-widget-content .ui-state-error-text,
+.ui-widget-header .ui-state-error-text {
+ color: #cd0a0a;
+}
+.ui-priority-primary,
+.ui-widget-content .ui-priority-primary,
+.ui-widget-header .ui-priority-primary {
+ font-weight: bold;
+}
+.ui-priority-secondary,
+.ui-widget-content .ui-priority-secondary,
+.ui-widget-header .ui-priority-secondary {
+ opacity: .7;
+ filter:Alpha(Opacity=70);
+ font-weight: normal;
+}
+.ui-state-disabled,
+.ui-widget-content .ui-state-disabled,
+.ui-widget-header .ui-state-disabled {
+ opacity: .35;
+ filter:Alpha(Opacity=35);
+ background-image: none;
+}
+.ui-state-disabled .ui-icon {
+ filter:Alpha(Opacity=35); /* For IE8 - See #6059 */
+}
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon {
+ width: 16px;
+ height: 16px;
+}
+.ui-icon,
+.ui-widget-content .ui-icon {
+ background-image: url("images/ui-icons_469bdd_256x240.png");
+}
+.ui-widget-header .ui-icon {
+ background-image: url("images/ui-icons_d8e7f3_256x240.png");
+}
+.ui-state-default .ui-icon {
+ background-image: url("images/ui-icons_6da8d5_256x240.png");
+}
+.ui-state-hover .ui-icon,
+.ui-state-focus .ui-icon {
+ background-image: url("images/ui-icons_217bc0_256x240.png");
+}
+.ui-state-active .ui-icon {
+ background-image: url("images/ui-icons_f9bd01_256x240.png");
+}
+.ui-state-highlight .ui-icon {
+ background-image: url("images/ui-icons_2e83ff_256x240.png");
+}
+.ui-state-error .ui-icon,
+.ui-state-error-text .ui-icon {
+ background-image: url("images/ui-icons_cd0a0a_256x240.png");
+}
+
+/* positioning */
+.ui-icon-blank { background-position: 16px 16px; }
+.ui-icon-carat-1-n { background-position: 0 0; }
+.ui-icon-carat-1-ne { background-position: -16px 0; }
+.ui-icon-carat-1-e { background-position: -32px 0; }
+.ui-icon-carat-1-se { background-position: -48px 0; }
+.ui-icon-carat-1-s { background-position: -64px 0; }
+.ui-icon-carat-1-sw { background-position: -80px 0; }
+.ui-icon-carat-1-w { background-position: -96px 0; }
+.ui-icon-carat-1-nw { background-position: -112px 0; }
+.ui-icon-carat-2-n-s { background-position: -128px 0; }
+.ui-icon-carat-2-e-w { background-position: -144px 0; }
+.ui-icon-triangle-1-n { background-position: 0 -16px; }
+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.ui-icon-triangle-1-e { background-position: -32px -16px; }
+.ui-icon-triangle-1-se { background-position: -48px -16px; }
+.ui-icon-triangle-1-s { background-position: -64px -16px; }
+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.ui-icon-triangle-1-w { background-position: -96px -16px; }
+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.ui-icon-arrow-1-n { background-position: 0 -32px; }
+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.ui-icon-arrow-1-e { background-position: -32px -32px; }
+.ui-icon-arrow-1-se { background-position: -48px -32px; }
+.ui-icon-arrow-1-s { background-position: -64px -32px; }
+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.ui-icon-arrow-1-w { background-position: -96px -32px; }
+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.ui-icon-arrow-4 { background-position: 0 -80px; }
+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.ui-icon-extlink { background-position: -32px -80px; }
+.ui-icon-newwin { background-position: -48px -80px; }
+.ui-icon-refresh { background-position: -64px -80px; }
+.ui-icon-shuffle { background-position: -80px -80px; }
+.ui-icon-transfer-e-w { background-position: -96px -80px; }
+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.ui-icon-folder-collapsed { background-position: 0 -96px; }
+.ui-icon-folder-open { background-position: -16px -96px; }
+.ui-icon-document { background-position: -32px -96px; }
+.ui-icon-document-b { background-position: -48px -96px; }
+.ui-icon-note { background-position: -64px -96px; }
+.ui-icon-mail-closed { background-position: -80px -96px; }
+.ui-icon-mail-open { background-position: -96px -96px; }
+.ui-icon-suitcase { background-position: -112px -96px; }
+.ui-icon-comment { background-position: -128px -96px; }
+.ui-icon-person { background-position: -144px -96px; }
+.ui-icon-print { background-position: -160px -96px; }
+.ui-icon-trash { background-position: -176px -96px; }
+.ui-icon-locked { background-position: -192px -96px; }
+.ui-icon-unlocked { background-position: -208px -96px; }
+.ui-icon-bookmark { background-position: -224px -96px; }
+.ui-icon-tag { background-position: -240px -96px; }
+.ui-icon-home { background-position: 0 -112px; }
+.ui-icon-flag { background-position: -16px -112px; }
+.ui-icon-calendar { background-position: -32px -112px; }
+.ui-icon-cart { background-position: -48px -112px; }
+.ui-icon-pencil { background-position: -64px -112px; }
+.ui-icon-clock { background-position: -80px -112px; }
+.ui-icon-disk { background-position: -96px -112px; }
+.ui-icon-calculator { background-position: -112px -112px; }
+.ui-icon-zoomin { background-position: -128px -112px; }
+.ui-icon-zoomout { background-position: -144px -112px; }
+.ui-icon-search { background-position: -160px -112px; }
+.ui-icon-wrench { background-position: -176px -112px; }
+.ui-icon-gear { background-position: -192px -112px; }
+.ui-icon-heart { background-position: -208px -112px; }
+.ui-icon-star { background-position: -224px -112px; }
+.ui-icon-link { background-position: -240px -112px; }
+.ui-icon-cancel { background-position: 0 -128px; }
+.ui-icon-plus { background-position: -16px -128px; }
+.ui-icon-plusthick { background-position: -32px -128px; }
+.ui-icon-minus { background-position: -48px -128px; }
+.ui-icon-minusthick { background-position: -64px -128px; }
+.ui-icon-close { background-position: -80px -128px; }
+.ui-icon-closethick { background-position: -96px -128px; }
+.ui-icon-key { background-position: -112px -128px; }
+.ui-icon-lightbulb { background-position: -128px -128px; }
+.ui-icon-scissors { background-position: -144px -128px; }
+.ui-icon-clipboard { background-position: -160px -128px; }
+.ui-icon-copy { background-position: -176px -128px; }
+.ui-icon-contact { background-position: -192px -128px; }
+.ui-icon-image { background-position: -208px -128px; }
+.ui-icon-video { background-position: -224px -128px; }
+.ui-icon-script { background-position: -240px -128px; }
+.ui-icon-alert { background-position: 0 -144px; }
+.ui-icon-info { background-position: -16px -144px; }
+.ui-icon-notice { background-position: -32px -144px; }
+.ui-icon-help { background-position: -48px -144px; }
+.ui-icon-check { background-position: -64px -144px; }
+.ui-icon-bullet { background-position: -80px -144px; }
+.ui-icon-radio-on { background-position: -96px -144px; }
+.ui-icon-radio-off { background-position: -112px -144px; }
+.ui-icon-pin-w { background-position: -128px -144px; }
+.ui-icon-pin-s { background-position: -144px -144px; }
+.ui-icon-play { background-position: 0 -160px; }
+.ui-icon-pause { background-position: -16px -160px; }
+.ui-icon-seek-next { background-position: -32px -160px; }
+.ui-icon-seek-prev { background-position: -48px -160px; }
+.ui-icon-seek-end { background-position: -64px -160px; }
+.ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.ui-icon-seek-first { background-position: -80px -160px; }
+.ui-icon-stop { background-position: -96px -160px; }
+.ui-icon-eject { background-position: -112px -160px; }
+.ui-icon-volume-off { background-position: -128px -160px; }
+.ui-icon-volume-on { background-position: -144px -160px; }
+.ui-icon-power { background-position: 0 -176px; }
+.ui-icon-signal-diag { background-position: -16px -176px; }
+.ui-icon-signal { background-position: -32px -176px; }
+.ui-icon-battery-0 { background-position: -48px -176px; }
+.ui-icon-battery-1 { background-position: -64px -176px; }
+.ui-icon-battery-2 { background-position: -80px -176px; }
+.ui-icon-battery-3 { background-position: -96px -176px; }
+.ui-icon-circle-plus { background-position: 0 -192px; }
+.ui-icon-circle-minus { background-position: -16px -192px; }
+.ui-icon-circle-close { background-position: -32px -192px; }
+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.ui-icon-circle-zoomin { background-position: -176px -192px; }
+.ui-icon-circle-zoomout { background-position: -192px -192px; }
+.ui-icon-circle-check { background-position: -208px -192px; }
+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.ui-icon-circlesmall-close { background-position: -32px -208px; }
+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.ui-icon-squaresmall-close { background-position: -80px -208px; }
+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.ui-corner-all,
+.ui-corner-top,
+.ui-corner-left,
+.ui-corner-tl {
+ border-top-left-radius: 5px;
+}
+.ui-corner-all,
+.ui-corner-top,
+.ui-corner-right,
+.ui-corner-tr {
+ border-top-right-radius: 5px;
+}
+.ui-corner-all,
+.ui-corner-bottom,
+.ui-corner-left,
+.ui-corner-bl {
+ border-bottom-left-radius: 5px;
+}
+.ui-corner-all,
+.ui-corner-bottom,
+.ui-corner-right,
+.ui-corner-br {
+ border-bottom-right-radius: 5px;
+}
+
+/* Overlays */
+.ui-widget-overlay {
+ background: #aaaaaa url("images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;
+ opacity: .3;
+ filter: Alpha(Opacity=30);
+}
+.ui-widget-shadow {
+ margin: -8px 0 0 -8px;
+ padding: 8px;
+ background: #aaaaaa url("images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;
+ opacity: .3;
+ filter: Alpha(Opacity=30);
+ border-radius: 8px;
+}
diff --git a/plugins/jqueryui/themes/redmond/jquery-ui-1.9.2.custom.css b/plugins/jqueryui/themes/redmond/jquery-ui-1.9.2.custom.css
deleted file mode 100755
index 614420add..000000000
--- a/plugins/jqueryui/themes/redmond/jquery-ui-1.9.2.custom.css
+++ /dev/null
@@ -1,461 +0,0 @@
-/*! jQuery UI - v1.9.1 - 2012-11-07
-* http://jqueryui.com
-* Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css
-* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande%2CLucida%20Sans%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=5px&bgColorHeader=5c9ccc&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=55&borderColorHeader=4297d7&fcHeader=ffffff&iconColorHeader=d8e7f3&bgColorContent=fcfdfd&bgTextureContent=06_inset_hard.png&bgImgOpacityContent=100&borderColorContent=a6c9e2&fcContent=222222&iconColorContent=469bdd&bgColorDefault=dfeffc&bgTextureDefault=02_glass.png&bgImgOpacityDefault=85&borderColorDefault=c5dbec&fcDefault=2e6e9e&iconColorDefault=6da8d5&bgColorHover=d0e5f5&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=79b7e7&fcHover=1d5987&iconColorHover=217bc0&bgColorActive=f5f8f9&bgTextureActive=06_inset_hard.png&bgImgOpacityActive=100&borderColorActive=79b7e7&fcActive=e17009&iconColorActive=f9bd01&bgColorHighlight=fbec88&bgTextureHighlight=01_flat.png&bgImgOpacityHighlight=55&borderColorHighlight=fad42e&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
-* Copyright (c) 2012 jQuery Foundation and other contributors Licensed MIT */
-
-/* Layout helpers
-----------------------------------*/
-.ui-helper-hidden { display: none; }
-.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
-.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
-.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; }
-.ui-helper-clearfix:after { clear: both; }
-.ui-helper-clearfix { zoom: 1; }
-.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
-
-
-/* Interaction Cues
-----------------------------------*/
-.ui-state-disabled { cursor: default !important; }
-
-
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
-
-
-/* Misc visuals
-----------------------------------*/
-
-/* Overlays */
-.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
-.ui-resizable { position: relative;}
-.ui-resizable-handle { position: absolute;font-size: 0.1px; display: block; }
-.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
-.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
-.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
-.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
-.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
-.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
-.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
-.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
-.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
-.ui-accordion .ui-accordion-header { display: block; cursor: pointer; position: relative; margin-top: 2px; padding: .5em .5em .5em .7em; zoom: 1; }
-.ui-accordion .ui-accordion-icons { padding-left: 2.2em; }
-.ui-accordion .ui-accordion-noicons { padding-left: .7em; }
-.ui-accordion .ui-accordion-icons .ui-accordion-icons { padding-left: 2.2em; }
-.ui-accordion .ui-accordion-header .ui-accordion-header-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
-.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; zoom: 1; }
-.ui-autocomplete {
- position: absolute;
- top: 0; /* #8656 */
- cursor: default;
-}
-
-/* workarounds */
-* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
-.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
-.ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; }
-.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
-button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
-.ui-button-icons-only { width: 3.4em; }
-button.ui-button-icons-only { width: 3.7em; }
-
-/*button text element */
-.ui-button .ui-button-text { display: block; line-height: 1.4; }
-.ui-button-text-only .ui-button-text { padding: .4em 1em; }
-.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
-.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
-.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
-.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
-/* no icon support for input elements, provide padding by default */
-input.ui-button { padding: .4em 1em; }
-
-/*button icon element(s) */
-.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
-.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
-.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
-.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
-.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
-
-/*button sets*/
-.ui-buttonset { margin-right: 7px; }
-.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
-
-/* workarounds */
-button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
-.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
-.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
-.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
-.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
-.ui-datepicker .ui-datepicker-prev { left:2px; }
-.ui-datepicker .ui-datepicker-next { right:2px; }
-.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
-.ui-datepicker .ui-datepicker-next-hover { right:1px; }
-.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
-.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
-.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
-.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
-.ui-datepicker select.ui-datepicker-month,
-.ui-datepicker select.ui-datepicker-year { width: 49%;}
-.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
-.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
-.ui-datepicker td { border: 0; padding: 1px; }
-.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
-.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
-.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
-.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
-
-/* with multiple calendars */
-.ui-datepicker.ui-datepicker-multi { width:auto; }
-.ui-datepicker-multi .ui-datepicker-group { float:left; }
-.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
-.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
-.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
-.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
-.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
-.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
-.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
-.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
-
-/* RTL support */
-.ui-datepicker-rtl { direction: rtl; }
-.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
-.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
-.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
-.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
-.ui-datepicker-rtl .ui-datepicker-group { float:right; }
-.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
-.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
-
-/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
-.ui-datepicker-cover {
- position: absolute; /*must have*/
- z-index: -1; /*must have*/
- filter: mask(); /*must have*/
- top: -4px; /*must have*/
- left: -4px; /*must have*/
- width: 200px; /*must have*/
- height: 200px; /*must have*/
-}.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
-.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; }
-.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; }
-.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
-.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
-.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
-.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
-.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
-.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
-.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
-.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
-.ui-draggable .ui-dialog-titlebar { cursor: move; }
-.ui-menu { list-style:none; padding: 2px; margin: 0; display:block; outline: none; }
-.ui-menu .ui-menu { margin-top: -3px; position: absolute; }
-.ui-menu .ui-menu-item { margin: 0; padding: 0; zoom: 1; width: 100%; }
-.ui-menu .ui-menu-divider { margin: 5px -2px 5px -2px; height: 0; font-size: 0; line-height: 0; border-width: 1px 0 0 0; }
-.ui-menu .ui-menu-item a { text-decoration: none; display: block; padding: 2px .4em; line-height: 1.5; zoom: 1; font-weight: normal; }
-.ui-menu .ui-menu-item a.ui-state-focus,
-.ui-menu .ui-menu-item a.ui-state-active { font-weight: normal; margin: -1px; }
-
-.ui-menu .ui-state-disabled { font-weight: normal; margin: .4em 0 .2em; line-height: 1.5; }
-.ui-menu .ui-state-disabled a { cursor: default; }
-
-/* icon support */
-.ui-menu-icons { position: relative; }
-.ui-menu-icons .ui-menu-item a { position: relative; padding-left: 2em; }
-
-/* left-aligned */
-.ui-menu .ui-icon { position: absolute; top: .2em; left: .2em; }
-
-/* right-aligned */
-.ui-menu .ui-menu-icon { position: static; float: right; }
-.ui-progressbar { height:2em; text-align: left; overflow: hidden; }
-.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }.ui-slider { position: relative; text-align: left; }
-.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
-.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
-
-.ui-slider-horizontal { height: .8em; }
-.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
-.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
-.ui-slider-horizontal .ui-slider-range-min { left: 0; }
-.ui-slider-horizontal .ui-slider-range-max { right: 0; }
-
-.ui-slider-vertical { width: .8em; height: 100px; }
-.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
-.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
-.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
-.ui-slider-vertical .ui-slider-range-max { top: 0; }.ui-spinner { position:relative; display: inline-block; overflow: hidden; padding: 0; vertical-align: middle; }
-.ui-spinner-input { border: none; background: none; padding: 0; margin: .2em 0; vertical-align: middle; margin-left: .4em; margin-right: 22px; }
-.ui-spinner-button { width: 16px; height: 50%; font-size: .5em; padding: 0; margin: 0; text-align: center; position: absolute; cursor: default; display: block; overflow: hidden; right: 0; }
-.ui-spinner a.ui-spinner-button { border-top: none; border-bottom: none; border-right: none; } /* more specificity required here to overide default borders */
-.ui-spinner .ui-icon { position: absolute; margin-top: -8px; top: 50%; left: 0; } /* vertical centre icon */
-.ui-spinner-up { top: 0; }
-.ui-spinner-down { bottom: 0; }
-
-/* TR overrides */
-.ui-spinner .ui-icon-triangle-1-s {
- /* need to fix icons sprite */
- background-position:-65px -16px;
-}
-.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
-.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
-.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 0; margin: 1px .2em 0 0; border-bottom: 0; padding: 0; white-space: nowrap; }
-.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
-.ui-tabs .ui-tabs-nav li.ui-tabs-active { margin-bottom: -1px; padding-bottom: 1px; }
-.ui-tabs .ui-tabs-nav li.ui-tabs-active a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-tabs-loading a { cursor: text; }
-.ui-tabs .ui-tabs-nav li a, .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
-.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
-.ui-tooltip {
- padding: 8px;
- position: absolute;
- z-index: 9999;
- max-width: 300px;
- -webkit-box-shadow: 0 0 5px #aaa;
- box-shadow: 0 0 5px #aaa;
-}
-/* Fades and background-images don't work well together in IE6, drop the image */
-* html .ui-tooltip {
- background-image: none;
-}
-body .ui-tooltip { border-width: 2px; }
-
-/* Component containers
-----------------------------------*/
-.ui-widget { font-family: Lucida Grande,Lucida Sans,Arial,sans-serif; font-size: 1.1em; }
-.ui-widget .ui-widget { font-size: 1em; }
-.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Lucida Grande,Lucida Sans,Arial,sans-serif; font-size: 1em; }
-.ui-widget-content { border: 1px solid #a6c9e2; background: #fcfdfd url(images/ui-bg_inset-hard_100_fcfdfd_1x100.png) 50% bottom repeat-x; color: #222222; }
-.ui-widget-content a { color: #222222; }
-.ui-widget-header { border: 1px solid #4297d7; background: #5c9ccc url(images/ui-bg_gloss-wave_55_5c9ccc_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
-.ui-widget-header a { color: #ffffff; }
-
-/* Interaction states
-----------------------------------*/
-.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #c5dbec; background: #dfeffc url(images/ui-bg_glass_85_dfeffc_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #2e6e9e; }
-.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #2e6e9e; text-decoration: none; }
-.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #79b7e7; background: #d0e5f5 url(images/ui-bg_glass_75_d0e5f5_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1d5987; }
-.ui-state-hover a, .ui-state-hover a:hover, .ui-state-hover a:link, .ui-state-hover a:visited { color: #1d5987; text-decoration: none; }
-.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #79b7e7; background: #f5f8f9 url(images/ui-bg_inset-hard_100_f5f8f9_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #e17009; }
-.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #e17009; text-decoration: none; }
-
-/* Interaction Cues
-----------------------------------*/
-.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fad42e; background: #fbec88 url(images/ui-bg_flat_55_fbec88_40x100.png) 50% 50% repeat-x; color: #363636; }
-.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
-.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
-.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
-.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
-.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
-.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
-.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
-.ui-state-disabled .ui-icon { filter:Alpha(Opacity=35); } /* For IE8 - See #6059 */
-
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_469bdd_256x240.png); }
-.ui-widget-content .ui-icon {background-image: url(images/ui-icons_469bdd_256x240.png); }
-.ui-widget-header .ui-icon {background-image: url(images/ui-icons_d8e7f3_256x240.png); }
-.ui-state-default .ui-icon { background-image: url(images/ui-icons_6da8d5_256x240.png); }
-.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_217bc0_256x240.png); }
-.ui-state-active .ui-icon {background-image: url(images/ui-icons_f9bd01_256x240.png); }
-.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
-.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
-
-/* positioning */
-.ui-icon-carat-1-n { background-position: 0 0; }
-.ui-icon-carat-1-ne { background-position: -16px 0; }
-.ui-icon-carat-1-e { background-position: -32px 0; }
-.ui-icon-carat-1-se { background-position: -48px 0; }
-.ui-icon-carat-1-s { background-position: -64px 0; }
-.ui-icon-carat-1-sw { background-position: -80px 0; }
-.ui-icon-carat-1-w { background-position: -96px 0; }
-.ui-icon-carat-1-nw { background-position: -112px 0; }
-.ui-icon-carat-2-n-s { background-position: -128px 0; }
-.ui-icon-carat-2-e-w { background-position: -144px 0; }
-.ui-icon-triangle-1-n { background-position: 0 -16px; }
-.ui-icon-triangle-1-ne { background-position: -16px -16px; }
-.ui-icon-triangle-1-e { background-position: -32px -16px; }
-.ui-icon-triangle-1-se { background-position: -48px -16px; }
-.ui-icon-triangle-1-s { background-position: -64px -16px; }
-.ui-icon-triangle-1-sw { background-position: -80px -16px; }
-.ui-icon-triangle-1-w { background-position: -96px -16px; }
-.ui-icon-triangle-1-nw { background-position: -112px -16px; }
-.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
-.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
-.ui-icon-arrow-1-n { background-position: 0 -32px; }
-.ui-icon-arrow-1-ne { background-position: -16px -32px; }
-.ui-icon-arrow-1-e { background-position: -32px -32px; }
-.ui-icon-arrow-1-se { background-position: -48px -32px; }
-.ui-icon-arrow-1-s { background-position: -64px -32px; }
-.ui-icon-arrow-1-sw { background-position: -80px -32px; }
-.ui-icon-arrow-1-w { background-position: -96px -32px; }
-.ui-icon-arrow-1-nw { background-position: -112px -32px; }
-.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
-.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
-.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
-.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
-.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
-.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
-.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
-.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
-.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
-.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
-.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
-.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
-.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
-.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
-.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
-.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
-.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
-.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
-.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
-.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
-.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
-.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
-.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
-.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
-.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
-.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
-.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
-.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
-.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
-.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
-.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
-.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
-.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
-.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
-.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
-.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
-.ui-icon-arrow-4 { background-position: 0 -80px; }
-.ui-icon-arrow-4-diag { background-position: -16px -80px; }
-.ui-icon-extlink { background-position: -32px -80px; }
-.ui-icon-newwin { background-position: -48px -80px; }
-.ui-icon-refresh { background-position: -64px -80px; }
-.ui-icon-shuffle { background-position: -80px -80px; }
-.ui-icon-transfer-e-w { background-position: -96px -80px; }
-.ui-icon-transferthick-e-w { background-position: -112px -80px; }
-.ui-icon-folder-collapsed { background-position: 0 -96px; }
-.ui-icon-folder-open { background-position: -16px -96px; }
-.ui-icon-document { background-position: -32px -96px; }
-.ui-icon-document-b { background-position: -48px -96px; }
-.ui-icon-note { background-position: -64px -96px; }
-.ui-icon-mail-closed { background-position: -80px -96px; }
-.ui-icon-mail-open { background-position: -96px -96px; }
-.ui-icon-suitcase { background-position: -112px -96px; }
-.ui-icon-comment { background-position: -128px -96px; }
-.ui-icon-person { background-position: -144px -96px; }
-.ui-icon-print { background-position: -160px -96px; }
-.ui-icon-trash { background-position: -176px -96px; }
-.ui-icon-locked { background-position: -192px -96px; }
-.ui-icon-unlocked { background-position: -208px -96px; }
-.ui-icon-bookmark { background-position: -224px -96px; }
-.ui-icon-tag { background-position: -240px -96px; }
-.ui-icon-home { background-position: 0 -112px; }
-.ui-icon-flag { background-position: -16px -112px; }
-.ui-icon-calendar { background-position: -32px -112px; }
-.ui-icon-cart { background-position: -48px -112px; }
-.ui-icon-pencil { background-position: -64px -112px; }
-.ui-icon-clock { background-position: -80px -112px; }
-.ui-icon-disk { background-position: -96px -112px; }
-.ui-icon-calculator { background-position: -112px -112px; }
-.ui-icon-zoomin { background-position: -128px -112px; }
-.ui-icon-zoomout { background-position: -144px -112px; }
-.ui-icon-search { background-position: -160px -112px; }
-.ui-icon-wrench { background-position: -176px -112px; }
-.ui-icon-gear { background-position: -192px -112px; }
-.ui-icon-heart { background-position: -208px -112px; }
-.ui-icon-star { background-position: -224px -112px; }
-.ui-icon-link { background-position: -240px -112px; }
-.ui-icon-cancel { background-position: 0 -128px; }
-.ui-icon-plus { background-position: -16px -128px; }
-.ui-icon-plusthick { background-position: -32px -128px; }
-.ui-icon-minus { background-position: -48px -128px; }
-.ui-icon-minusthick { background-position: -64px -128px; }
-.ui-icon-close { background-position: -80px -128px; }
-.ui-icon-closethick { background-position: -96px -128px; }
-.ui-icon-key { background-position: -112px -128px; }
-.ui-icon-lightbulb { background-position: -128px -128px; }
-.ui-icon-scissors { background-position: -144px -128px; }
-.ui-icon-clipboard { background-position: -160px -128px; }
-.ui-icon-copy { background-position: -176px -128px; }
-.ui-icon-contact { background-position: -192px -128px; }
-.ui-icon-image { background-position: -208px -128px; }
-.ui-icon-video { background-position: -224px -128px; }
-.ui-icon-script { background-position: -240px -128px; }
-.ui-icon-alert { background-position: 0 -144px; }
-.ui-icon-info { background-position: -16px -144px; }
-.ui-icon-notice { background-position: -32px -144px; }
-.ui-icon-help { background-position: -48px -144px; }
-.ui-icon-check { background-position: -64px -144px; }
-.ui-icon-bullet { background-position: -80px -144px; }
-.ui-icon-radio-on { background-position: -96px -144px; }
-.ui-icon-radio-off { background-position: -112px -144px; }
-.ui-icon-pin-w { background-position: -128px -144px; }
-.ui-icon-pin-s { background-position: -144px -144px; }
-.ui-icon-play { background-position: 0 -160px; }
-.ui-icon-pause { background-position: -16px -160px; }
-.ui-icon-seek-next { background-position: -32px -160px; }
-.ui-icon-seek-prev { background-position: -48px -160px; }
-.ui-icon-seek-end { background-position: -64px -160px; }
-.ui-icon-seek-start { background-position: -80px -160px; }
-/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
-.ui-icon-seek-first { background-position: -80px -160px; }
-.ui-icon-stop { background-position: -96px -160px; }
-.ui-icon-eject { background-position: -112px -160px; }
-.ui-icon-volume-off { background-position: -128px -160px; }
-.ui-icon-volume-on { background-position: -144px -160px; }
-.ui-icon-power { background-position: 0 -176px; }
-.ui-icon-signal-diag { background-position: -16px -176px; }
-.ui-icon-signal { background-position: -32px -176px; }
-.ui-icon-battery-0 { background-position: -48px -176px; }
-.ui-icon-battery-1 { background-position: -64px -176px; }
-.ui-icon-battery-2 { background-position: -80px -176px; }
-.ui-icon-battery-3 { background-position: -96px -176px; }
-.ui-icon-circle-plus { background-position: 0 -192px; }
-.ui-icon-circle-minus { background-position: -16px -192px; }
-.ui-icon-circle-close { background-position: -32px -192px; }
-.ui-icon-circle-triangle-e { background-position: -48px -192px; }
-.ui-icon-circle-triangle-s { background-position: -64px -192px; }
-.ui-icon-circle-triangle-w { background-position: -80px -192px; }
-.ui-icon-circle-triangle-n { background-position: -96px -192px; }
-.ui-icon-circle-arrow-e { background-position: -112px -192px; }
-.ui-icon-circle-arrow-s { background-position: -128px -192px; }
-.ui-icon-circle-arrow-w { background-position: -144px -192px; }
-.ui-icon-circle-arrow-n { background-position: -160px -192px; }
-.ui-icon-circle-zoomin { background-position: -176px -192px; }
-.ui-icon-circle-zoomout { background-position: -192px -192px; }
-.ui-icon-circle-check { background-position: -208px -192px; }
-.ui-icon-circlesmall-plus { background-position: 0 -208px; }
-.ui-icon-circlesmall-minus { background-position: -16px -208px; }
-.ui-icon-circlesmall-close { background-position: -32px -208px; }
-.ui-icon-squaresmall-plus { background-position: -48px -208px; }
-.ui-icon-squaresmall-minus { background-position: -64px -208px; }
-.ui-icon-squaresmall-close { background-position: -80px -208px; }
-.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
-.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
-.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
-.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
-.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
-.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
-
-
-/* Misc visuals
-----------------------------------*/
-
-/* Corner radius */
-.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; -khtml-border-top-left-radius: 5px; border-top-left-radius: 5px; }
-.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; -khtml-border-top-right-radius: 5px; border-top-right-radius: 5px; }
-.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 5px; -webkit-border-bottom-left-radius: 5px; -khtml-border-bottom-left-radius: 5px; border-bottom-left-radius: 5px; }
-.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 5px; -webkit-border-bottom-right-radius: 5px; -khtml-border-bottom-right-radius: 5px; border-bottom-right-radius: 5px; }
-
-/* Overlays */
-.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .3;filter:Alpha(Opacity=30); }
-.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .3;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; } \ No newline at end of file
diff --git a/plugins/legacy_browser/js/iehacks.js b/plugins/legacy_browser/js/iehacks.js
index 91dc6d63a..8f88e6f57 100644
--- a/plugins/legacy_browser/js/iehacks.js
+++ b/plugins/legacy_browser/js/iehacks.js
@@ -96,3 +96,13 @@ rcube_webmail.prototype.get_input_selection = function(obj)
return {start: start, end: end, text: normalizedValue.substr(start, end-start)};
};
+
+// For IE<9 we have to do it this way
+// otherwise the form will be posted to a new window
+rcube_webmail.prototype.async_upload_form_frame = function(name)
+{
+ document.body.insertAdjacentHTML('BeforeEnd', '<iframe name="' + name + '"'
+ + ' src="program/resources/blank.gif" style="width:0; height:0; visibility:hidden"></iframe>');
+
+ return $('iframe[name="' + name + '"]');
+};
diff --git a/plugins/legacy_browser/legacy_browser.php b/plugins/legacy_browser/legacy_browser.php
index 9378cdc3e..a26167710 100644
--- a/plugins/legacy_browser/legacy_browser.php
+++ b/plugins/legacy_browser/legacy_browser.php
@@ -1,7 +1,7 @@
<?php
/**
- * Plugin which adds support for legacy browsers (IE 7/8)
+ * Plugin which adds support for legacy browsers (IE 7/8, Firefox < 4)
*
* @author Aleksander Machniak <alec@alec.pl>
* @license GNU GPLv3+
@@ -9,12 +9,18 @@
class legacy_browser extends rcube_plugin
{
public $noajax = true;
+ private $rc;
public function init()
{
- $rcube = rcube::get_instance();
+ $this->rc = $rcube = rcube::get_instance();
- if ($rcube->output->browser->ie && $rcube->output->browser->ver < 9) {
+ if (
+ // IE < 9
+ ($rcube->output->browser->ie && $rcube->output->browser->ver < 9)
+ // Firefox < 4 (Firefox 4 is recognized as 2.0)
+ || ($rcube->output->browser->mz && $rcube->output->browser->ver < 2)
+ ) {
$this->add_hook('send_page', array($this, 'send_page'));
$this->add_hook('render_page', array($this, 'render_page'));
}
@@ -22,19 +28,25 @@ class legacy_browser extends rcube_plugin
function send_page($args)
{
- // replace jQuery 2.x with 1.x
$ts1 = filemtime($this->home . '/js/jquery.min.js');
$ts2 = filemtime($this->home . '/js/iehacks.js');
// put iehacks.js after app.js
- $args['content'] = preg_replace(
- '|(<script src="program/js/app(\.min)?\.js\?s=[0-9]+" type="text/javascript"></script>)|',
- '\\1<script src="plugins/legacy_browser/js/iehacks.js?s=' . $ts2 . '" type="text/javascript"></script>',
- $args['content'], 1, $count);
+ if ($this->rc->output->browser->ie) {
+ $args['content'] = preg_replace(
+ '|(<script src="program/js/app(\.min)?\.js\?s=[0-9]+" type="text/javascript"></script>)|',
+ '\\1<script src="plugins/legacy_browser/js/iehacks.js?s=' . $ts2 . '" type="text/javascript"></script>',
+ $args['content'], 1, $count);
+ }
+ else {
+ $count = 1;
+ }
+ // replace jQuery 2.x with 1.x
$args['content'] = preg_replace(
'|<script src="program/js/jquery\.min\.js\?s=[0-9]+" type="text/javascript"></script>|',
'<script src="plugins/legacy_browser/js/jquery.min.js?s=' . $ts1 . '" type="text/javascript"></script>'
+ // add iehacks.js if it is IE and it wasn't added yet
. ($count ? '' : "\n".'<script src="plugins/legacy_browser/js/iehacks.js?s=' . $ts2 . '" type="text/javascript"></script>'),
$args['content'], 1);
@@ -43,23 +55,26 @@ class legacy_browser extends rcube_plugin
function render_page($args)
{
- $rcube = rcube::get_instance();
+ if (!$this->rc->output->browser->ie) {
+ return $args;
+ }
+
$skin = $this->skin();
if ($skin == 'classic') {
$minified = file_exists(INSTALL_PATH . '/plugins/legacy_browser/skins/classic/iehacks.min.css') ? '.min' : '';
- $rcube->output->add_header(
+ $this->rc->output->add_header(
'<link rel="stylesheet" type="text/css" href="plugins/legacy_browser/skins/classic/iehacks' . $minified . '.css" />'
);
}
else if ($skin == 'larry') {
$minified = file_exists(INSTALL_PATH . '/plugins/legacy_browser/skins/larry/iehacks.min.css') ? '.min' : '';
- $rcube->output->add_header(
+ $this->rc->output->add_header(
'<link rel="stylesheet" type="text/css" href="plugins/legacy_browser/skins/larry/iehacks' . $minified . '.css" />'
);
- if ($rcube->output->browser->ver < 8) {
- $rcube->output->add_header(
+ if ($this->rc->output->browser->ver < 8) {
+ $this->rc->output->add_header(
'<link rel="stylesheet" type="text/css" href="plugins/legacy_browser/skins/larry/ie7hacks' . $minified . '.css" />'
);
}
@@ -68,8 +83,7 @@ class legacy_browser extends rcube_plugin
private function skin()
{
- $rcube = rcube::get_instance();
- $skin = $rcube->config->get('skin');
+ $skin = $this->rc->config->get('skin');
// external skin, find if it inherits from other skin
if ($skin != 'larry' && $skin != 'classic') {
diff --git a/plugins/legacy_browser/package.xml b/plugins/legacy_browser/package.xml
index 71a76ef79..06e5fa2ba 100644
--- a/plugins/legacy_browser/package.xml
+++ b/plugins/legacy_browser/package.xml
@@ -5,17 +5,17 @@
http://pear.php.net/dtd/package-2.0.xsd">
<name>legacy_browser</name>
<channel>pear.roundcube.net</channel>
- <summary>Legacy browser (IE 7/8) support</summary>
- <description>This adds support for legacy browsers (IE 7/8).</description>
+ <summary>Legacy browser (IE 7/8, Firefox &lt; 4) support</summary>
+ <description>This adds support for legacy browsers (IE 7/8, Firefox &lt; 4).</description>
<lead>
<name>Aleksander Machniak</name>
<user>alec</user>
<email>alec@alec.pl</email>
<active>yes</active>
</lead>
- <date>2014-04-12</date>
+ <date>2014-06-19</date>
<version>
- <release>1.0</release>
+ <release>1.1</release>
<api>1.0</api>
</version>
<stability>
diff --git a/plugins/legacy_browser/skins/larry/ie7hacks.css b/plugins/legacy_browser/skins/larry/ie7hacks.css
index 2a174001e..85ebaf239 100644
--- a/plugins/legacy_browser/skins/larry/ie7hacks.css
+++ b/plugins/legacy_browser/skins/larry/ie7hacks.css
@@ -37,6 +37,7 @@ input.button {
a.iconbutton,
a.deletebutton,
.boxpagenav a.icon,
+a.button span.icon,
.pagenav a.button span.inner,
.boxfooter .listbutton .inner,
.attachmentslist li a.delete,
diff --git a/plugins/legacy_browser/skins/larry/iehacks.css b/plugins/legacy_browser/skins/larry/iehacks.css
index 917374a26..18755ea1a 100644
--- a/plugins/legacy_browser/skins/larry/iehacks.css
+++ b/plugins/legacy_browser/skins/larry/iehacks.css
@@ -169,3 +169,32 @@ ul.toolbarmenu li a.active:hover,
float: left;
height: 18px;
}
+
+a.button.disabled span.inner,
+a.iconbutton.disabled,
+.boxfooter .listbutton.disabled .inner,
+.boxpagenav a.icon.disabled,
+.toolbar a.button.disabled {
+ filter: alpha(opacity=40);
+}
+
+.dropbutton a.button.disabled + .dropbuttontip {
+ filter: alpha(opacity=50);
+}
+
+select.decorated {
+ filter: alpha(opacity=0);
+}
+
+ul.toolbarmenu li span.icon {
+ filter: alpha(opacity=20);
+}
+
+ul.toolbarmenu li a.active span.icon {
+ filter: alpha(opacity=100);
+}
+
+.minimal #topline:hover,
+#rcmdraglayer {
+ filter: alpha(opacity=93);
+}
diff --git a/plugins/managesieve/Changelog b/plugins/managesieve/Changelog
index 29b359d7f..88526168e 100644
--- a/plugins/managesieve/Changelog
+++ b/plugins/managesieve/Changelog
@@ -1,6 +1,17 @@
+- Added simple API to manage vacation rule
+- Fix missing css/js scripts in filter form in mail task
+- Fix default vacation status (#1490019)
+- Make possible to set vacation start/end date and time
+
+* version 8.0 [2014-07-16]
+-----------------------------------------------------------
+- Fix bug where non-existing (or unsubscribed) folder wasn't listed in folder selector (#1489956)
- Added optional separate interface for out-of-office management (#1488266)
- Fix disabled "create filter" action
- Fix enotify/notify extension handling
+- Improved UI accessibility
+- Added option to specify connection socket parameters - managesieve_conn_options
+- Support vacation date rules without date extension (#1489978)
* version 7.2 [2014-02-14]
-----------------------------------------------------------
diff --git a/plugins/managesieve/config.inc.php.dist b/plugins/managesieve/config.inc.php.dist
index 14123c110..1f20b5ae4 100644
--- a/plugins/managesieve/config.inc.php.dist
+++ b/plugins/managesieve/config.inc.php.dist
@@ -28,6 +28,18 @@ $config['managesieve_auth_pw'] = null;
// Note: tls:// prefix in managesieve_host is also supported
$config['managesieve_usetls'] = false;
+// Connection scket context options
+// See http://php.net/manual/en/context.ssl.php
+// The example below enables server certificate validation
+//$config['imap_conn_options'] = array(
+// 'ssl' => array(
+// 'verify_peer' => true,
+// 'verify_depth' => 3,
+// 'cafile' => '/etc/openssl/certs/ca.crt',
+// ),
+// );
+$config['managesieve_conn_options'] = null;
+
// default contents of filters script (eg. default spam filter)
$config['managesieve_default'] = '/etc/dovecot/sieve/global';
diff --git a/plugins/managesieve/lib/Roundcube/rcube_sieve.php b/plugins/managesieve/lib/Roundcube/rcube_sieve.php
index 3bd2978da..389c85012 100644
--- a/plugins/managesieve/lib/Roundcube/rcube_sieve.php
+++ b/plugins/managesieve/lib/Roundcube/rcube_sieve.php
@@ -22,17 +22,6 @@
// Managesieve Protocol: RFC5804
-define('SIEVE_ERROR_CONNECTION', 1);
-define('SIEVE_ERROR_LOGIN', 2);
-define('SIEVE_ERROR_NOT_EXISTS', 3); // script not exists
-define('SIEVE_ERROR_INSTALL', 4); // script installation
-define('SIEVE_ERROR_ACTIVATE', 5); // script activation
-define('SIEVE_ERROR_DELETE', 6); // script deletion
-define('SIEVE_ERROR_INTERNAL', 7); // internal error
-define('SIEVE_ERROR_DEACTIVATE', 8); // script activation
-define('SIEVE_ERROR_OTHER', 255); // other/unknown error
-
-
class rcube_sieve
{
private $sieve; // Net_Sieve object
@@ -43,6 +32,16 @@ class rcube_sieve
public $current; // name of currently loaded script
private $exts; // array of supported extensions
+ const ERROR_CONNECTION = 1;
+ const ERROR_LOGIN = 2;
+ const ERROR_NOT_EXISTS = 3; // script not exists
+ const ERROR_INSTALL = 4; // script installation
+ const ERROR_ACTIVATE = 5; // script activation
+ const ERROR_DELETE = 6; // script deletion
+ const ERROR_INTERNAL = 7; // internal error
+ const ERROR_DEACTIVATE = 8; // script activation
+ const ERROR_OTHER = 255; // other/unknown error
+
/**
* Object constructor
@@ -57,10 +56,11 @@ class rcube_sieve
* @param boolean Enable/disable debugging
* @param string Proxy authentication identifier
* @param string Proxy authentication password
+ * @param array List of options to pass to stream_context_create().
*/
public function __construct($username, $password='', $host='localhost', $port=2000,
$auth_type=null, $usetls=true, $disabled=array(), $debug=false,
- $auth_cid=null, $auth_pw=null)
+ $auth_cid=null, $auth_pw=null, $options=array())
{
$this->sieve = new Net_Sieve();
@@ -68,8 +68,8 @@ class rcube_sieve
$this->sieve->setDebug(true, array($this, 'debug_handler'));
}
- if (PEAR::isError($this->sieve->connect($host, $port, null, $usetls))) {
- return $this->_set_error(SIEVE_ERROR_CONNECTION);
+ if (PEAR::isError($this->sieve->connect($host, $port, $options, $usetls))) {
+ return $this->_set_error(self::ERROR_CONNECTION);
}
if (!empty($auth_cid)) {
@@ -81,7 +81,7 @@ class rcube_sieve
if (PEAR::isError($this->sieve->login($username, $password,
$auth_type ? strtoupper($auth_type) : null, $authz))
) {
- return $this->_set_error(SIEVE_ERROR_LOGIN);
+ return $this->_set_error(self::ERROR_LOGIN);
}
$this->exts = $this->get_extensions();
@@ -116,10 +116,10 @@ class rcube_sieve
public function save($name = null)
{
if (!$this->sieve)
- return $this->_set_error(SIEVE_ERROR_INTERNAL);
+ return $this->_set_error(self::ERROR_INTERNAL);
if (!$this->script)
- return $this->_set_error(SIEVE_ERROR_INTERNAL);
+ return $this->_set_error(self::ERROR_INTERNAL);
if (!$name)
$name = $this->current;
@@ -130,7 +130,7 @@ class rcube_sieve
$script = '/* empty script */';
if (PEAR::isError($this->sieve->installScript($name, $script)))
- return $this->_set_error(SIEVE_ERROR_INSTALL);
+ return $this->_set_error(self::ERROR_INSTALL);
return true;
}
@@ -141,13 +141,13 @@ class rcube_sieve
public function save_script($name, $content = null)
{
if (!$this->sieve)
- return $this->_set_error(SIEVE_ERROR_INTERNAL);
+ return $this->_set_error(self::ERROR_INTERNAL);
if (!$content)
$content = '/* empty script */';
if (PEAR::isError($this->sieve->installScript($name, $content)))
- return $this->_set_error(SIEVE_ERROR_INSTALL);
+ return $this->_set_error(self::ERROR_INSTALL);
return true;
}
@@ -158,13 +158,13 @@ class rcube_sieve
public function activate($name = null)
{
if (!$this->sieve)
- return $this->_set_error(SIEVE_ERROR_INTERNAL);
+ return $this->_set_error(self::ERROR_INTERNAL);
if (!$name)
$name = $this->current;
if (PEAR::isError($this->sieve->setActive($name)))
- return $this->_set_error(SIEVE_ERROR_ACTIVATE);
+ return $this->_set_error(self::ERROR_ACTIVATE);
return true;
}
@@ -175,10 +175,10 @@ class rcube_sieve
public function deactivate()
{
if (!$this->sieve)
- return $this->_set_error(SIEVE_ERROR_INTERNAL);
+ return $this->_set_error(self::ERROR_INTERNAL);
if (PEAR::isError($this->sieve->setActive('')))
- return $this->_set_error(SIEVE_ERROR_DEACTIVATE);
+ return $this->_set_error(self::ERROR_DEACTIVATE);
return true;
}
@@ -189,7 +189,7 @@ class rcube_sieve
public function remove($name = null)
{
if (!$this->sieve)
- return $this->_set_error(SIEVE_ERROR_INTERNAL);
+ return $this->_set_error(self::ERROR_INTERNAL);
if (!$name)
$name = $this->current;
@@ -197,10 +197,10 @@ class rcube_sieve
// script must be deactivated first
if ($name == $this->sieve->getActive())
if (PEAR::isError($this->sieve->setActive('')))
- return $this->_set_error(SIEVE_ERROR_DELETE);
+ return $this->_set_error(self::ERROR_DELETE);
if (PEAR::isError($this->sieve->removeScript($name)))
- return $this->_set_error(SIEVE_ERROR_DELETE);
+ return $this->_set_error(self::ERROR_DELETE);
if ($name == $this->current)
$this->current = null;
@@ -217,9 +217,14 @@ class rcube_sieve
return $this->exts;
if (!$this->sieve)
- return $this->_set_error(SIEVE_ERROR_INTERNAL);
+ return $this->_set_error(self::ERROR_INTERNAL);
$ext = $this->sieve->getExtensions();
+
+ if (PEAR::isError($ext)) {
+ return array();
+ }
+
// we're working on lower-cased names
$ext = array_map('strtolower', (array) $ext);
@@ -241,12 +246,12 @@ class rcube_sieve
if (!$this->list) {
if (!$this->sieve)
- return $this->_set_error(SIEVE_ERROR_INTERNAL);
+ return $this->_set_error(self::ERROR_INTERNAL);
$list = $this->sieve->listScripts();
if (PEAR::isError($list))
- return $this->_set_error(SIEVE_ERROR_OTHER);
+ return $this->_set_error(self::ERROR_OTHER);
$this->list = $list;
}
@@ -260,7 +265,7 @@ class rcube_sieve
public function get_active()
{
if (!$this->sieve)
- return $this->_set_error(SIEVE_ERROR_INTERNAL);
+ return $this->_set_error(self::ERROR_INTERNAL);
return $this->sieve->getActive();
}
@@ -271,7 +276,7 @@ class rcube_sieve
public function load($name)
{
if (!$this->sieve)
- return $this->_set_error(SIEVE_ERROR_INTERNAL);
+ return $this->_set_error(self::ERROR_INTERNAL);
if ($this->current == $name)
return true;
@@ -279,7 +284,7 @@ class rcube_sieve
$script = $this->sieve->getScript($name);
if (PEAR::isError($script))
- return $this->_set_error(SIEVE_ERROR_OTHER);
+ return $this->_set_error(self::ERROR_OTHER);
// try to parse from Roundcube format
$this->script = $this->_parse($script);
@@ -295,7 +300,7 @@ class rcube_sieve
public function load_script($script)
{
if (!$this->sieve)
- return $this->_set_error(SIEVE_ERROR_INTERNAL);
+ return $this->_set_error(self::ERROR_INTERNAL);
// try to parse from Roundcube format
$this->script = $this->_parse($script);
@@ -340,12 +345,12 @@ class rcube_sieve
public function get_script($name)
{
if (!$this->sieve)
- return $this->_set_error(SIEVE_ERROR_INTERNAL);
+ return $this->_set_error(self::ERROR_INTERNAL);
$content = $this->sieve->getScript($name);
if (PEAR::isError($content))
- return $this->_set_error(SIEVE_ERROR_OTHER);
+ return $this->_set_error(self::ERROR_OTHER);
return $content;
}
@@ -356,13 +361,13 @@ class rcube_sieve
public function copy($name, $copy)
{
if (!$this->sieve)
- return $this->_set_error(SIEVE_ERROR_INTERNAL);
+ return $this->_set_error(self::ERROR_INTERNAL);
if ($copy) {
$content = $this->sieve->getScript($copy);
if (PEAR::isError($content))
- return $this->_set_error(SIEVE_ERROR_OTHER);
+ return $this->_set_error(self::ERROR_OTHER);
}
return $this->save_script($name, $content);
diff --git a/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php b/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php
index 9900f16b5..302c7c7a1 100644
--- a/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php
+++ b/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php
@@ -73,7 +73,7 @@ class rcube_sieve_engine
*/
function __construct($plugin)
{
- $this->rc = rcmail::get_instance();
+ $this->rc = rcube::get_instance();
$this->plugin = $plugin;
}
@@ -91,6 +91,76 @@ class rcube_sieve_engine
'filtersetform' => array($this, 'filterset_form'),
));
+ // connect to managesieve server
+ $error = $this->connect($_SESSION['username'], $this->rc->decrypt($_SESSION['password']));
+
+ // load current/active script
+ if (!$error) {
+ // Get list of scripts
+ $list = $this->list_scripts();
+
+ // reset current script when entering filters UI (#1489412)
+ if ($this->rc->action == 'plugin.managesieve') {
+ $this->rc->session->remove('managesieve_current');
+ }
+
+ if ($mode != 'vacation') {
+ if (!empty($_GET['_set']) || !empty($_POST['_set'])) {
+ $script_name = rcube_utils::get_input_value('_set', rcube_utils::INPUT_GPC, true);
+ }
+ else if (!empty($_SESSION['managesieve_current'])) {
+ $script_name = $_SESSION['managesieve_current'];
+ }
+ }
+
+ $error = $this->load_script($script_name);
+ }
+
+ // finally set script objects
+ if ($error) {
+ switch ($error) {
+ case rcube_sieve::ERROR_CONNECTION:
+ case rcube_sieve::ERROR_LOGIN:
+ $this->rc->output->show_message('managesieve.filterconnerror', 'error');
+ rcube::raise_error(array('code' => 403, 'type' => 'php',
+ 'file' => __FILE__, 'line' => __LINE__,
+ 'message' => "Unable to connect to managesieve on $host:$port"), true, false);
+ break;
+
+ default:
+ $this->rc->output->show_message('managesieve.filterunknownerror', 'error');
+ break;
+ }
+
+ // reload interface in case of possible error when specified script wasn't found (#1489412)
+ if ($script_name !== null && !empty($list) && !in_array($script_name, $list)) {
+ $this->rc->output->command('reload', 500);
+ }
+
+ // to disable 'Add filter' button set env variable
+ $this->rc->output->set_env('filterconnerror', true);
+ $this->script = array();
+ }
+ else {
+ $this->exts = $this->sieve->get_extensions();
+ $this->init_script();
+ $this->rc->output->set_env('currentset', $this->sieve->current);
+ $_SESSION['managesieve_current'] = $this->sieve->current;
+ }
+
+ return $error;
+ }
+
+ /**
+ * Connect to configured managesieve server
+ *
+ * @param string $username User login
+ * @param string $password User password
+ *
+ * @return int Connection status: 0 on success, >0 on failure
+ */
+ public function connect($username, $password)
+ {
// Get connection parameters
$host = $this->rc->config->get('managesieve_host', 'localhost');
$port = $this->rc->config->get('managesieve_port');
@@ -112,8 +182,8 @@ class rcube_sieve_engine
}
$plugin = $this->rc->plugins->exec_hook('managesieve_connect', array(
- 'user' => $_SESSION['username'],
- 'password' => $this->rc->decrypt($_SESSION['password']),
+ 'user' => $username,
+ 'password' => $password,
'host' => $host,
'port' => $port,
'usetls' => $tls,
@@ -122,6 +192,7 @@ class rcube_sieve_engine
'debug' => $this->rc->config->get('managesieve_debug', false),
'auth_cid' => $this->rc->config->get('managesieve_auth_cid'),
'auth_pw' => $this->rc->config->get('managesieve_auth_pw'),
+ 'socket_options' => $this->rc->config->get('managesieve_conn_options'),
));
// try to connect to managesieve server and to fetch the script
@@ -135,97 +206,65 @@ class rcube_sieve_engine
$plugin['disabled'],
$plugin['debug'],
$plugin['auth_cid'],
- $plugin['auth_pw']
+ $plugin['auth_pw'],
+ $plugin['socket_options']
);
- if (!($error = $this->sieve->error())) {
- // Get list of scripts
- $list = $this->list_scripts();
+ return $this->sieve->error();
+ }
- // reset current script when entering filters UI (#1489412)
- if ($this->rc->action == 'plugin.managesieve') {
- $this->rc->session->remove('managesieve_current');
- }
+ /**
+ * Load specified (or active) script
+ *
+ * @param string $script_name Optional script name
+ *
+ * @return int Connection status: 0 on success, >0 on failure
+ */
+ public function load_script($script_name = null)
+ {
+ // Get list of scripts
+ $list = $this->list_scripts();
- if ($mode != 'vacation') {
- if (!empty($_GET['_set']) || !empty($_POST['_set'])) {
- $script_name = rcube_utils::get_input_value('_set', rcube_utils::INPUT_GPC, true);
- }
- else if (!empty($_SESSION['managesieve_current'])) {
- $script_name = $_SESSION['managesieve_current'];
- }
+ if ($script_name === null || $script_name === '') {
+ // get (first) active script
+ if (!empty($this->active[0])) {
+ $script_name = $this->active[0];
}
+ else if ($list) {
+ $script_name = $list[0];
+ }
+ // create a new (initial) script
+ else {
+ // if script not exists build default script contents
+ $script_file = $this->rc->config->get('managesieve_default');
+ $script_name = $this->rc->config->get('managesieve_script_name');
- if ($script_name === null || $script_name === '') {
- // get (first) active script
- if (!empty($this->active[0])) {
- $script_name = $this->active[0];
+ if (empty($script_name)) {
+ $script_name = 'roundcube';
}
- else if ($list) {
- $script_name = $list[0];
- }
- // create a new (initial) script
- else {
- // if script not exists build default script contents
- $script_file = $this->rc->config->get('managesieve_default');
- $script_name = $this->rc->config->get('managesieve_script_name');
- if (empty($script_name))
- $script_name = 'roundcube';
-
- if ($script_file && is_readable($script_file))
- $content = file_get_contents($script_file);
-
- // add script and set it active
- if ($this->sieve->save_script($script_name, $content)) {
- $this->activate_script($script_name);
- $this->list[] = $script_name;
- }
+ if ($script_file && is_readable($script_file)) {
+ $content = file_get_contents($script_file);
}
- }
- if ($script_name) {
- $this->sieve->load($script_name);
+ // add script and set it active
+ if ($this->sieve->save_script($script_name, $content)) {
+ $this->activate_script($script_name);
+ $this->list[] = $script_name;
+ }
}
-
- $error = $this->sieve->error();
}
- // finally set script objects
- if ($error) {
- switch ($error) {
- case SIEVE_ERROR_CONNECTION:
- case SIEVE_ERROR_LOGIN:
- $this->rc->output->show_message('managesieve.filterconnerror', 'error');
- rcube::raise_error(array('code' => 403, 'type' => 'php',
- 'file' => __FILE__, 'line' => __LINE__,
- 'message' => "Unable to connect to managesieve on $host:$port"), true, false);
- break;
-
- default:
- $this->rc->output->show_message('managesieve.filterunknownerror', 'error');
- break;
- }
-
- // reload interface in case of possible error when specified script wasn't found (#1489412)
- if ($script_name !== null && !empty($list) && !in_array($script_name, $list)) {
- $this->rc->output->command('reload', 500);
- }
-
- // to disable 'Add filter' button set env variable
- $this->rc->output->set_env('filterconnerror', true);
- $this->script = array();
- }
- else {
- $this->exts = $this->sieve->get_extensions();
- $this->init_script();
- $this->rc->output->set_env('currentset', $this->sieve->current);
- $_SESSION['managesieve_current'] = $this->sieve->current;
+ if ($script_name) {
+ $this->sieve->load($script_name);
}
- return $error;
+ return $this->sieve->error();
}
+ /**
+ * User interface actions handler
+ */
function actions()
{
$error = $this->start();
@@ -1826,17 +1865,22 @@ class rcube_sieve_engine
$out .= '</div>';
// mailbox select
- if ($action['type'] == 'fileinto')
+ if ($action['type'] == 'fileinto') {
$mailbox = $this->mod_mailbox($action['target'], 'out');
- else
+ // make sure non-existing (or unsubscribed) mailbox is listed (#1489956)
+ $additional = array($mailbox);
+ }
+ else {
$mailbox = '';
+ }
$select = $this->rc->folder_selector(array(
- 'realnames' => false,
- 'maxlength' => 100,
- 'id' => 'action_mailbox' . $id,
- 'name' => "_action_mailbox[$id]",
- 'style' => 'display:'.(empty($action['type']) || $action['type'] == 'fileinto' ? 'inline' : 'none')
+ 'realnames' => false,
+ 'maxlength' => 100,
+ 'id' => 'action_mailbox' . $id,
+ 'name' => "_action_mailbox[$id]",
+ 'style' => 'display:'.(empty($action['type']) || $action['type'] == 'fileinto' ? 'inline' : 'none'),
+ 'additional' => $additional,
));
$out .= $select->show($mailbox);
$out .= '</td>';
diff --git a/plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php b/plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php
index 636b5fcc1..10aaea0e9 100644
--- a/plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php
+++ b/plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php
@@ -23,6 +23,8 @@
class rcube_sieve_vacation extends rcube_sieve_engine
{
+ protected $error;
+
function actions()
{
$error = $this->start('vacation');
@@ -32,7 +34,6 @@ class rcube_sieve_vacation extends rcube_sieve_engine
$this->vacation_rule();
$this->vacation_post();
}
-
$this->plugin->add_label('vacation.saving');
$this->rc->output->add_handlers(array(
'vacationform' => array($this, 'vacation_form'),
@@ -55,11 +56,23 @@ class rcube_sieve_vacation extends rcube_sieve_engine
// find (first) vacation rule
foreach ($this->script as $idx => $rule) {
if (empty($this->vacation) && !empty($rule['actions']) && $rule['actions'][0]['type'] == 'vacation') {
+ foreach ($rule['actions'] as $act) {
+ if ($act['type'] == 'discard' || $act['type'] == 'keep') {
+ $action = $act['type'];
+ }
+ else if ($act['type'] == 'redirect') {
+ $action = $act['copy'] ? 'copy' : 'redirect';
+ $target = $act['target'];
+ }
+ }
+
$this->vacation = array_merge($rule['actions'][0], array(
'idx' => $idx,
'disabled' => $rule['disabled'],
'name' => $rule['name'],
'tests' => $rule['tests'],
+ 'action' => $action ?: 'keep',
+ 'target' => $target,
));
}
else {
@@ -76,6 +89,17 @@ class rcube_sieve_vacation extends rcube_sieve_engine
return;
}
+ $date_extension = in_array('date', $this->exts);
+ $regex_extension = in_array('regex', $this->exts);
+
+ // set user's timezone
+ try {
+ $timezone = new DateTimeZone($this->rc->config->get('timezone', 'GMT'));
+ }
+ catch (Exception $e) {
+ $timezone = new DateTimeZone('GMT');
+ }
+
$status = rcube_utils::get_input_value('vacation_status', rcube_utils::INPUT_POST);
$subject = rcube_utils::get_input_value('vacation_subject', rcube_utils::INPUT_POST, true);
$reason = rcube_utils::get_input_value('vacation_reason', rcube_utils::INPUT_POST, true);
@@ -84,7 +108,12 @@ class rcube_sieve_vacation extends rcube_sieve_engine
$interval_type = rcube_utils::get_input_value('vacation_interval_type', rcube_utils::INPUT_POST);
$date_from = rcube_utils::get_input_value('vacation_datefrom', rcube_utils::INPUT_POST);
$date_to = rcube_utils::get_input_value('vacation_dateto', rcube_utils::INPUT_POST);
+ $time_from = rcube_utils::get_input_value('vacation_timefrom', rcube_utils::INPUT_POST);
+ $time_to = rcube_utils::get_input_value('vacation_timeto', rcube_utils::INPUT_POST);
$after = rcube_utils::get_input_value('vacation_after', rcube_utils::INPUT_POST);
+ $action = rcube_utils::get_input_value('vacation_action', rcube_utils::INPUT_POST);
+ $target = rcube_utils::get_input_value('action_target', rcube_utils::INPUT_POST, true);
+ $target_domain = rcube_utils::get_input_value('action_domain', rcube_utils::INPUT_POST);
$interval_type = $interval_type == 'seconds' ? 'seconds' : 'days';
$vacation_action['type'] = 'vacation';
@@ -107,33 +136,65 @@ class rcube_sieve_vacation extends rcube_sieve_engine
}
if ($vacation_action['reason'] == '') {
- $error = 'managesieve.cannotbeempty';
+ $error = 'managesieve.emptyvacationbody';
}
+
if ($vacation_action[$interval_type] && !preg_match('/^[0-9]+$/', $vacation_action[$interval_type])) {
$error = 'managesieve.forbiddenchars';
}
- foreach (array('date_from', 'date_to') as $var) {
- $date = $$var;
-
- if ($date && ($dt = rcube_utils::anytodatetime($date))) {
- $type = 'value-' . ($var == 'date_from' ? 'ge' : 'le');
- $test = array(
- 'test' => 'currentdate',
- 'part' => 'date',
- 'type' => $type,
- 'arg' => $dt->format('Y-m-d'),
- );
+ // find and remove existing date/regex/true rules
+ foreach ((array) $vacation_tests as $idx => $t) {
+ if ($t['test'] == 'currentdate' || $t['test'] == 'true'
+ || ($t['test'] == 'header' && $t['type'] == 'regex' && $t['arg1'] == 'received')
+ ) {
+ unset($vacation_tests[$idx]);
+ }
+ }
- // find existing date rule
- foreach ((array) $vacation_tests as $idx => $t) {
- if ($t['test'] == 'currentdate' && $t['part'] == 'date' && $t['type'] == $type) {
- $vacation_tests[$idx] = $test;
- continue 2;
+ if ($date_extension) {
+ foreach (array('date_from', 'date_to') as $var) {
+ $time = ${str_replace('date', 'time', $var)};
+ $date = trim($$var . ' ' . $time);
+
+ if ($date && ($dt = rcube_utils::anytodatetime($date, $timezone))) {
+ if ($time) {
+ $vacation_tests[] = array(
+ 'test' => 'currentdate',
+ 'part' => 'iso8601',
+ 'type' => 'value-' . ($var == 'date_from' ? 'ge' : 'le'),
+ 'zone' => $dt->format('O'),
+ 'arg' => str_replace('+00:00', 'Z', strtoupper($dt->format('c'))),
+ );
+ }
+ else {
+ $vacation_tests[] = array(
+ 'test' => 'currentdate',
+ 'part' => 'date',
+ 'type' => 'value-' . ($var == 'date_from' ? 'ge' : 'le'),
+ 'zone' => $dt->format('O'),
+ 'arg' => $dt->format('Y-m-d'),
+ );
}
}
+ }
+ }
+ else if ($regex_extension) {
+ // Add date range rules if range specified
+ if ($date_from && $date_to) {
+ if ($tests = self::build_regexp_tests($date_from, $date_to, $error)) {
+ $vacation_tests = array_merge($vacation_tests, $tests);
+ }
+ }
+ }
- $vacation_tests[] = $test;
+ if ($action == 'redirect' || $action == 'copy') {
+ if ($target_domain) {
+ $target .= '@' . $target_domain;
+ }
+
+ if (empty($target) || !rcube_utils::check_email($target)) {
+ $error = 'noemailwarning';
}
}
@@ -148,9 +209,17 @@ class rcube_sieve_vacation extends rcube_sieve_engine
$rule['type'] = 'if';
$rule['name'] = $rule['name'] ?: $this->plugin->gettext('vacation');
$rule['disabled'] = $status == 'off';
- $rule['actions'][0] = $vacation_action;
$rule['tests'] = $vacation_tests;
- $rule['join'] = count($vacation_tests) > 1;
+ $rule['join'] = $date_extension ? count($vacation_tests) > 1 : false;
+ $rule['actions'] = array($vacation_action);
+
+ if ($action && $action != 'keep') {
+ $rule['actions'][] = array(
+ 'type' => $action == 'discard' ? 'discard' : 'redirect',
+ 'copy' => $action == 'copy',
+ 'target' => $action != 'discard' ? $target : '',
+ );
+ }
// reset original vacation rule
if (isset($this->vacation['idx'])) {
@@ -202,6 +271,7 @@ class rcube_sieve_vacation extends rcube_sieve_engine
{
// check supported extensions
$date_extension = in_array('date', $this->exts);
+ $regex_extension = in_array('regex', $this->exts);
$seconds_extension = in_array('vacation-seconds', $this->exts);
// build FORM tag
@@ -216,18 +286,26 @@ class rcube_sieve_vacation extends rcube_sieve_engine
) + $attrib);
// form elements
- $subject = new html_inputfield(array('name' => 'vacation_subject', 'size' => 50));
- $reason = new html_textarea(array('name' => 'vacation_reason', 'cols' => 60, 'rows' => 8));
- $interval = new html_inputfield(array('name' => 'vacation_interval', 'size' => 5));
- $addresses = '<textarea name="vacation_addresses" data-type="list" data-size="30" style="display: none">'
+ $subject = new html_inputfield(array('name' => 'vacation_subject', 'id' => 'vacation_subject', 'size' => 50));
+ $reason = new html_textarea(array('name' => 'vacation_reason', 'id' => 'vacation_reason', 'cols' => 60, 'rows' => 8));
+ $interval = new html_inputfield(array('name' => 'vacation_interval', 'id' => 'vacation_interval', 'size' => 5));
+ $addresses = '<textarea name="vacation_addresses" id="vacation_addresses" data-type="list" data-size="30" style="display: none">'
. rcube::Q(implode("\n", (array) $this->vacation['addresses']), 'strict', false) . '</textarea>';
- $status = new html_select(array('name' => 'vacation_status'));
+ $status = new html_select(array('name' => 'vacation_status', 'id' => 'vacation_status'));
+ $action = new html_select(array('name' => 'vacation_action', 'id' => 'vacation_action', 'onchange' => 'vacation_action_select()'));
$status->add($this->plugin->gettext('vacation.on'), 'on');
$status->add($this->plugin->gettext('vacation.off'), 'off');
+ $action->add($this->plugin->gettext('vacation.keep'), 'keep');
+ $action->add($this->plugin->gettext('vacation.discard'), 'discard');
+ $action->add($this->plugin->gettext('vacation.redirect'), 'redirect');
+ if (in_array('copy', $this->exts)) {
+ $action->add($this->plugin->gettext('vacation.copy'), 'copy');
+ }
+
if ($this->rc->config->get('managesieve_vacation') != 2 && count($this->vacation['list'])) {
- $after = new html_select(array('name' => 'vacation_after'));
+ $after = new html_select(array('name' => 'vacation_after', 'id' => 'vacation_after'));
$after->add('', '');
foreach ($this->vacation['list'] as $idx => $rule) {
@@ -246,18 +324,74 @@ class rcube_sieve_vacation extends rcube_sieve_engine
$interval_txt .= '&nbsp;' . $this->plugin->gettext('days');
}
- if ($date_extension) {
- $date_from = new html_inputfield(array('name' => 'vacation_datefrom', 'class' => 'datepicker', 'size' => 12));
- $date_to = new html_inputfield(array('name' => 'vacation_dateto', 'class' => 'datepicker', 'size' => 12));
+ if ($date_extension || $regex_extension) {
+ $date_from = new html_inputfield(array('name' => 'vacation_datefrom', 'id' => 'vacation_datefrom', 'class' => 'datepicker', 'size' => 12));
+ $date_to = new html_inputfield(array('name' => 'vacation_dateto', 'id' => 'vacation_dateto', 'class' => 'datepicker', 'size' => 12));
$date_format = $this->rc->config->get('date_format', 'Y-m-d');
+ }
+
+ if ($date_extension) {
+ $time_from = new html_inputfield(array('name' => 'vacation_timefrom', 'id' => 'vacation_timefrom', 'size' => 6));
+ $time_to = new html_inputfield(array('name' => 'vacation_timeto', 'id' => 'vacation_timeto', 'size' => 6));
+ $time_format = $this->rc->config->get('time_format', 'H:i');
+ $date_value = array();
foreach ((array) $this->vacation['tests'] as $test) {
- if ($test['test'] == 'currentdate' && $test['part'] == 'date') {
- $date = $this->rc->format_date($test['arg'], $date_format, false);
- $date_value[$test['type'] == 'value-ge' ? 'from' : 'to'] = $date;
+ if ($test['test'] == 'currentdate') {
+ $idx = $test['type'] == 'value-ge' ? 'from' : 'to';
+
+ if ($test['part'] == 'date') {
+ $date_value[$idx]['date'] = $test['arg'];
+ }
+ else if ($test['part'] == 'iso8601') {
+ $date_value[$idx]['datetime'] = $test['arg'];
+ }
+ }
+ }
+
+ foreach ($date_value as $idx => $value) {
+ $date = $value['datetime'] ?: $value['date'];
+ $date_value[$idx] = $this->rc->format_date($date, $date_format, false);
+
+ if (!empty($value['datetime'])) {
+ $date_value['time_' . $idx] = $this->rc->format_date($date, $time_format, true);
}
}
}
+ else if ($regex_extension) {
+ // Sieve 'date' extension not available, read start/end from RegEx based rules instead
+ if ($date_tests = self::parse_regexp_tests($this->vacation['tests'])) {
+ $date_value['from'] = $this->rc->format_date($date_tests['from'], $date_format, false);
+ $date_value['to'] = $this->rc->format_date($date_tests['to'], $date_format, false);
+ }
+ }
+
+ // force domain selection in redirect email input
+ $domains = (array) $this->rc->config->get('managesieve_domains');
+ $redirect = $this->vacation['action'] == 'redirect' || $this->vacation['action'] == 'copy';
+
+ if (!empty($domains)) {
+ sort($domains);
+
+ $domain_select = new html_select(array('name' => 'action_domain', 'id' => 'action_domain'));
+ $domain_select->add(array_combine($domains, $domains));
+
+ if ($redirect && $this->vacation['target']) {
+ $parts = explode('@', $this->vacation['target']);
+ if (!empty($parts)) {
+ $this->vacation['domain'] = array_pop($parts);
+ $this->vacation['target'] = implode('@', $parts);
+ }
+ }
+ }
+
+ // redirect target
+ $action_target = ' <span id="action_target_span" style="display:' . ($redirect ? 'inline' : 'none') . '">'
+ . '<input type="text" name="action_target" id="action_target"'
+ . ' value="' .($redirect ? rcube::Q($this->vacation['target'], 'strict', false) : '') . '"'
+ . (!empty($domains) ? ' size="20"' : ' size="35"') . '/>'
+ . (!empty($domains) ? ' @ ' . $domain_select->show($this->vacation['domain']) : '')
+ . '</span>';
// Message tab
$table = new html_table(array('cols' => 2));
@@ -267,37 +401,336 @@ class rcube_sieve_vacation extends rcube_sieve_engine
$table->add('title', html::label('vacation_reason', $this->plugin->gettext('vacation.body')));
$table->add(null, $reason->show($this->vacation['reason']));
- if ($date_extension) {
- $table->add('title', html::label('vacation_datefrom', $this->plugin->gettext('vacation.dates')));
- $table->add(null,
- $this->plugin->gettext('vacation.from'). ' ' . $date_from->show($date_value['from'])
- . ' ' . $this->plugin->gettext('vacation.to'). ' ' . $date_to->show($date_value['to'])
- );
+ if ($date_extension || $regex_extension) {
+ $table->add('title', html::label('vacation_datefrom', $this->plugin->gettext('vacation.start')));
+ $table->add(null, $date_from->show($date_value['from']) . ($time_from ? ' ' . $time_from->show($date_value['time_from']) : ''));
+ $table->add('title', html::label('vacation_dateto', $this->plugin->gettext('vacation.end')));
+ $table->add(null, $date_to->show($date_value['to']) . ($time_to ? ' ' . $time_to->show($date_value['time_to']) : ''));
}
$table->add('title', html::label('vacation_status', $this->plugin->gettext('vacation.status')));
- $table->add(null, $status->show($this->vacation['disabled'] ? 'off' : 'on'));
+ $table->add(null, $status->show(!isset($this->vacation['disabled']) || $this->vacation['disabled'] ? 'off' : 'on'));
$out .= html::tag('fieldset', $class, html::tag('legend', null, $this->plugin->gettext('vacation.reply')) . $table->show($attrib));
// Advanced tab
$table = new html_table(array('cols' => 2));
- $table->add('title', $this->plugin->gettext('vacation.addresses'));
+ $table->add('title', html::label('vacation_addresses', $this->plugin->gettext('vacation.addresses')));
$table->add(null, $addresses);
- $table->add('title', $this->plugin->gettext('vacation.interval'));
+ $table->add('title', html::label('vacation_interval', $this->plugin->gettext('vacation.interval')));
$table->add(null, $interval_txt);
+
if ($after) {
- $table->add('title', $this->plugin->gettext('vacation.after'));
+ $table->add('title', html::label('vacation_after', $this->plugin->gettext('vacation.after')));
$table->add(null, $after->show($this->vacation['idx'] - 1));
}
+ $table->add('title', html::label('vacation_action', $this->plugin->gettext('vacation.action')));
+ $table->add('vacation', $action->show($this->vacation['action']) . $action_target);
+
$out .= html::tag('fieldset', $class, html::tag('legend', null, $this->plugin->gettext('vacation.advanced')) . $table->show($attrib));
$out .= '</form>';
$this->rc->output->add_gui_object('sieveform', $form_id);
+ if ($time_format) {
+ $this->rc->output->set_env('time_format', $time_format);
+ }
+
return $out;
}
+
+ public static function build_regexp_tests($date_from, $date_to, &$error)
+ {
+ $tests = array();
+ $dt_from = rcube_utils::anytodatetime($date_from);
+ $dt_to = rcube_utils::anytodatetime($date_to);
+ $interval = $dt_from->diff($dt_to);
+
+ if ($interval->invert || $interval->days > 365) {
+ $error = 'managesieve.invaliddateformat';
+ return;
+ }
+
+ $dt_i = $dt_from;
+ $interval = new DateInterval('P1D');
+ $matchexp = '';
+
+ while (!$dt_i->diff($dt_to)->invert) {
+ $days = (int) $dt_i->format('d');
+ $matchexp .= $days < 10 ? "[ 0]$days" : $days;
+
+ if ($days == $dt_i->format('t') || $dt_i->diff($dt_to)->days == 0) {
+ $test = array(
+ 'test' => 'header',
+ 'type' => 'regex',
+ 'arg1' => 'received',
+ 'arg2' => '('.$matchexp.') '.$dt_i->format('M Y')
+ );
+
+ $tests[] = $test;
+ $matchexp = '';
+ }
+ else {
+ $matchexp .= '|';
+ }
+
+ $dt_i->add($interval);
+ }
+
+ return $tests;
+ }
+
+ public static function parse_regexp_tests($tests)
+ {
+ $rx_from = '/^\(([0-9]{2}).*\)\s([A-Za-z]+)\s([0-9]{4})/';
+ $rx_to = '/^\(.*([0-9]{2})\)\s([A-Za-z]+)\s([0-9]{4})/';
+ $result = array();
+
+ foreach ((array) $tests as $test) {
+ if ($test['test'] == 'header' && $test['type'] == 'regex' && $test['arg1'] == 'received') {
+ $textexp = preg_replace('/\[ ([^\]]*)\]/', '0', $test['arg2']);
+
+ if (!$result['from'] && preg_match($rx_from, $textexp, $matches)) {
+ $result['from'] = $matches[1]." ".$matches[2]." ".$matches[3];
+ }
+
+ if (preg_match($rx_to, $textexp, $matches)) {
+ $result['to'] = $matches[1]." ".$matches[2]." ".$matches[3];
+ }
+ }
+ }
+
+ return $result;
+ }
+
+ /**
+ * API: get vacation rule
+ *
+ * @return array Vacation rule information
+ */
+ public function get_vacation()
+ {
+ $this->exts = $this->sieve->get_extensions();
+ $this->init_script();
+ $this->vacation_rule();
+
+ // check supported extensions
+ $date_extension = in_array('date', $this->exts);
+ $regex_extension = in_array('regex', $this->exts);
+ $seconds_extension = in_array('vacation-seconds', $this->exts);
+
+ // set user's timezone
+ try {
+ $timezone = new DateTimeZone($this->rc->config->get('timezone', 'GMT'));
+ }
+ catch (Exception $e) {
+ $timezone = new DateTimeZone('GMT');
+ }
+
+ if ($date_extension) {
+ $date_value = array();
+ foreach ((array) $this->vacation['tests'] as $test) {
+ if ($test['test'] == 'currentdate') {
+ $idx = $test['type'] == 'value-ge' ? 'start' : 'end';
+
+ if ($test['part'] == 'date') {
+ $date_value[$idx]['date'] = $test['arg'];
+ }
+ else if ($test['part'] == 'iso8601') {
+ $date_value[$idx]['datetime'] = $test['arg'];
+ }
+ }
+ }
+
+ foreach ($date_value as $idx => $value) {
+ $$idx = new DateTime($value['datetime'] ?: $value['date'], $timezone);
+ }
+ }
+ else if ($regex_extension) {
+ // Sieve 'date' extension not available, read start/end from RegEx based rules instead
+ if ($date_tests = self::parse_regexp_tests($this->vacation['tests'])) {
+ $from = new DateTime($date_tests['from'] . ' ' . '00:00:00', $timezone);
+ $to = new DateTime($date_tests['to'] . ' ' . '23:59:59', $timezone);
+ }
+ }
+
+ if (isset($this->vacation['seconds'])) {
+ $interval = $this->vacation['seconds'] . 's';
+ }
+ else if (isset($this->vacation['days'])) {
+ $interval = $this->vacation['days'] . 'd';
+ }
+
+ $vacation = array(
+ 'supported' => $this->exts,
+ 'interval' => $interval,
+ 'start' => $start,
+ 'end' => $end,
+ 'enabled' => $this->vacation['reason'] && empty($this->vacation['disabled']),
+ 'message' => $this->vacation['reason'],
+ 'subject' => $this->vacation['subject'],
+ 'action' => $this->vacation['action'],
+ 'target' => $this->vacation['target'],
+ 'addresses' => $this->vacation['addresses'],
+ );
+
+ return $vacation;
+ }
+
+ /**
+ * API: set vacation rule
+ *
+ * @param array $vacation Vacation rule information (see self::get_vacation())
+ *
+ * @return bool True on success, False on failure
+ */
+ public function set_vacation($data)
+ {
+ $this->exts = $this->sieve->get_extensions();
+ $this->error = false;
+
+ $this->init_script();
+ $this->vacation_rule();
+
+ // check supported extensions
+ $date_extension = in_array('date', $this->exts);
+ $regex_extension = in_array('regex', $this->exts);
+ $seconds_extension = in_array('vacation-seconds', $this->exts);
+
+ $vacation['type'] = 'vacation';
+ $vacation['reason'] = $this->strip_value(str_replace("\r\n", "\n", $data['message']));
+ $vacation['addresses'] = $data['addresses'];
+ $vacation['subject'] = $data['subject'];
+ $vacation_tests = (array) $this->vacation['tests'];
+
+ foreach ((array) $vacation['addresses'] as $aidx => $address) {
+ $vacation['addresses'][$aidx] = $address = trim($address);
+
+ if (empty($address)) {
+ unset($vacation['addresses'][$aidx]);
+ }
+ else if (!rcube_utils::check_email($address)) {
+ $this->error = "Invalid address in vacation addresses: $address";
+ return false;
+ }
+ }
+
+ if ($vacation['reason'] == '') {
+ $this->error = "No vacation message specified";
+ return false;
+ }
+
+ if ($data['interval']) {
+ if (!preg_match('/^([0-9]+)\s*([sd])$/', $data['interval'], $m)) {
+ $this->error = "Invalid vacation interval value: " . $data['interval'];
+ return false;
+ }
+ else if ($m[1]) {
+ $vacation[strtolower($m[2]) == 's' ? 'seconds' : 'days'] = $m[1];
+ }
+ }
+
+ // find and remove existing date/regex/true rules
+ foreach ((array) $vacation_tests as $idx => $t) {
+ if ($t['test'] == 'currentdate' || $t['test'] == 'true'
+ || ($t['test'] == 'header' && $t['type'] == 'regex' && $t['arg1'] == 'received')
+ ) {
+ unset($vacation_tests[$idx]);
+ }
+ }
+
+ if ($date_extension) {
+ foreach (array('start', 'end') as $var) {
+ if ($dt = $data[$var]) {
+ $vacation_tests[] = array(
+ 'test' => 'currentdate',
+ 'part' => 'iso8601',
+ 'type' => 'value-' . ($var == 'start' ? 'ge' : 'le'),
+ 'zone' => $dt->format('O'),
+ 'arg' => str_replace('+00:00', 'Z', strtoupper($dt->format('c'))),
+ );
+ }
+ }
+ }
+ else if ($regex_extension) {
+ // Add date range rules if range specified
+ if ($data['start'] && $data['end']) {
+ if ($tests = self::build_regexp_tests($data['start'], $data['end'], $error)) {
+ $vacation_tests = array_merge($vacation_tests, $tests);
+ }
+
+ if ($error) {
+ $this->error = "Invalid dates specified or unsupported period length";
+ return false;
+ }
+ }
+ }
+
+ if ($data['action'] == 'redirect' || $data['action'] == 'copy') {
+ if (empty($data['target']) || !rcube_utils::check_email($data['target'])) {
+ $this->error = "Invalid address in action taget: " . $data['target'];
+ return false;
+ }
+ }
+ else if ($data['action'] && $data['action'] != 'keep' && $data['action'] != 'discard') {
+ $this->error = "Unsupported vacation action: " . $data['action'];
+ return false;
+ }
+
+ if (empty($vacation_tests)) {
+ $vacation_tests = $this->rc->config->get('managesieve_vacation_test', array(array('test' => 'true')));
+ }
+
+ // @TODO: handle situation when there's no active script
+
+ $rule = $this->vacation;
+ $rule['type'] = 'if';
+ $rule['name'] = $rule['name'] ?: 'Out-of-Office';
+ $rule['disabled'] = isset($data['enabled']) && !$data['enabled'];
+ $rule['tests'] = $vacation_tests;
+ $rule['join'] = $date_extension ? count($vacation_tests) > 1 : false;
+ $rule['actions'] = array($vacation);
+
+ if ($data['action'] && $data['action'] != 'keep') {
+ $rule['actions'][] = array(
+ 'type' => $data['action'] == 'discard' ? 'discard' : 'redirect',
+ 'copy' => $data['action'] == 'copy',
+ 'target' => $data['action'] != 'discard' ? $data['target'] : '',
+ );
+ }
+
+ // reset original vacation rule
+ if (isset($this->vacation['idx'])) {
+ $this->script[$this->vacation['idx']] = null;
+ }
+
+ array_unshift($this->script, $rule);
+
+ $this->sieve->script->content = array_values(array_filter($this->script));
+
+ return $this->save_script();
+ }
+
+ /**
+ * API: connect to managesieve server
+ */
+ public function connect($username, $password)
+ {
+ if (!parent::connect($username, $password)) {
+ return $this->load_script();
+ }
+ }
+
+ /**
+ * API: Returns last error
+ *
+ * @return string Error message
+ */
+ public function get_error()
+ {
+ return $this->error;
+ }
}
diff --git a/plugins/managesieve/localization/ast.inc b/plugins/managesieve/localization/ast.inc
new file mode 100644
index 000000000..e1c469b80
--- /dev/null
+++ b/plugins/managesieve/localization/ast.inc
@@ -0,0 +1,50 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | plugins/managesieve/localization/<lang>.inc |
+ | |
+ | Localization file of the Roundcube Webmail Managesieve plugin |
+ | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | |
+ | Licensed under the GNU General Public License version 3 or |
+ | any later version with exceptions for skins & plugins. |
+ | See the README file for a full license statement. |
+ | |
+ +-----------------------------------------------------------------------+
+
+ For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-managesieve/
+*/
+$labels['filters'] = 'Filtros';
+$labels['managefilters'] = 'Alministrar filtros de corréu entrante';
+$labels['filtername'] = 'Nome del filtru';
+$labels['newfilter'] = 'Filtru nuevu';
+$labels['filteradd'] = 'Amestar filtru';
+$labels['filterdel'] = 'Desaniciar filtru';
+$labels['moveup'] = 'Mover arriba';
+$labels['movedown'] = 'Mover abaxo';
+$labels['filterany'] = 'tolos mensaxes';
+$labels['filtercontains'] = 'contien';
+$labels['filternotcontains'] = 'nun contien';
+$labels['filteris'] = 'ye igual a';
+$labels['filterisnot'] = 'nun ye igual a';
+$labels['filterexists'] = 'esiste';
+$labels['filternotexists'] = 'nun esiste';
+$labels['filtermatches'] = 'espresiones que concasen';
+$labels['filternotmatches'] = 'espresiones que nun concasen';
+$labels['addrule'] = 'Amestar regla';
+$labels['delrule'] = 'Desaniciar regla';
+$labels['messagemoveto'] = 'Mover mensaxe a';
+$labels['messageredirect'] = 'Redireicionar mensaxe a';
+$labels['messagecopyto'] = 'Copiar mensaxe a';
+$labels['messagedelete'] = 'Desaniciar mensaxe';
+$labels['messagesrules'] = 'Pa corréu entrante:';
+$labels['messagesactions'] = '...executar les aiciones siguientes:';
+$labels['add'] = 'Amestar';
+$labels['del'] = 'Desaniciar';
+$labels['sender'] = 'Remitente';
+$labels['enable'] = 'Habilitar/Deshabilitar';
+$labels['flagread'] = 'Lleer';
+$labels['flagdeleted'] = 'Desaniciáu';
+$labels['flaganswered'] = 'Respondíu';
+?>
diff --git a/plugins/managesieve/localization/br.inc b/plugins/managesieve/localization/br.inc
new file mode 100644
index 000000000..c7d89f575
--- /dev/null
+++ b/plugins/managesieve/localization/br.inc
@@ -0,0 +1,30 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | plugins/managesieve/localization/<lang>.inc |
+ | |
+ | Localization file of the Roundcube Webmail Managesieve plugin |
+ | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | |
+ | Licensed under the GNU General Public License version 3 or |
+ | any later version with exceptions for skins & plugins. |
+ | See the README file for a full license statement. |
+ | |
+ +-----------------------------------------------------------------------+
+
+ For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-managesieve/
+*/
+$labels['filters'] = 'sil';
+$labels['newfilter'] = 'Sil nevez';
+$labels['filteradd'] = 'Ouzhpenan ur sil';
+$labels['filterdel'] = 'Dilemel ar sil';
+$labels['filterany'] = 'An holl postel';
+$labels['messagecopyto'] = 'eilan ar postel e';
+$labels['messagedelete'] = 'Dilemel ar postel';
+$labels['add'] = 'Ouzhpenan';
+$labels['del'] = 'Dilemel';
+$labels['sender'] = 'Kaser';
+$labels['recipient'] = 'Resever';
+$labels['vacationsubject'] = 'Sujed';
+?>
diff --git a/plugins/managesieve/localization/bs_BA.inc b/plugins/managesieve/localization/bs_BA.inc
index 0667db33c..bee1aba3c 100644
--- a/plugins/managesieve/localization/bs_BA.inc
+++ b/plugins/managesieve/localization/bs_BA.inc
@@ -57,10 +57,10 @@ $labels['recipient'] = 'Primaoc';
$labels['vacationaddr'] = 'Moje dodatne email adrese:';
$labels['vacationdays'] = 'Frekvencija slanja poruka (u danima):';
$labels['vacationinterval'] = 'Frekvencija slanja poruka:';
-$labels['days'] = 'dana';
-$labels['seconds'] = 'sekundi';
$labels['vacationreason'] = 'Tijelo poruke (razlog za odmor):';
$labels['vacationsubject'] = 'Naslov poruke:';
+$labels['days'] = 'dana';
+$labels['seconds'] = 'sekundi';
$labels['rulestop'] = 'Prestani procjenjivati pravila';
$labels['enable'] = 'Omogući/Onemogući';
$labels['filterset'] = 'Set filtera';
@@ -108,14 +108,17 @@ $labels['varupperfirst'] = 'prvi znak velikim slovom';
$labels['varquotewildcard'] = 'citiraj specijalne znakove';
$labels['varlength'] = 'dužina';
$labels['notify'] = 'Pošalji napomenu';
-$labels['notifyaddress'] = 'Na email adresu:';
-$labels['notifybody'] = 'Sadržaj napomene:';
-$labels['notifysubject'] = 'Naslov napomene:';
-$labels['notifyfrom'] = 'Pošiljalac napomene:';
+$labels['notifytarget'] = 'Odredište napomene:';
+$labels['notifymessage'] = 'Poruka napomene (neobavezno):';
+$labels['notifyoptions'] = 'Opcije napomene (neobavezno):';
+$labels['notifyfrom'] = 'Pošiljalac napomene (neobavezno):';
$labels['notifyimportance'] = 'Prioritet:';
$labels['notifyimportancelow'] = 'mali';
$labels['notifyimportancenormal'] = 'obični';
$labels['notifyimportancehigh'] = 'veliki';
+$labels['notifymethodmailto'] = 'Email';
+$labels['notifymethodtel'] = 'Telefon';
+$labels['notifymethodsms'] = 'SMS';
$labels['filtercreate'] = 'Kreiraj filter';
$labels['usedata'] = 'Koristite sljedeće podatke u filteru:';
$labels['nextstep'] = 'Sljedeći korak';
@@ -157,6 +160,33 @@ $labels['asciicasemap'] = 'osjetljivo na velika/mala slova (ascii-casemap)';
$labels['asciinumeric'] = 'numerički (ascii-numeric)';
$labels['index'] = 'indeks:';
$labels['indexlast'] = 'unazad';
+$labels['vacation'] = 'Odmor';
+$labels['vacation.reply'] = 'Poruka sa odgovorom';
+$labels['vacation.advanced'] = 'Napredmen postavke';
+$labels['vacation.subject'] = 'Naslov';
+$labels['vacation.body'] = 'Tijelo';
+$labels['vacation.dates'] = 'Vrijeme odmora';
+$labels['vacation.from'] = 'Od:';
+$labels['vacation.to'] = 'Do:';
+$labels['vacation.status'] = 'Status';
+$labels['vacation.on'] = 'Uključeno';
+$labels['vacation.off'] = 'Isključeno';
+$labels['vacation.addresses'] = 'Moje dodatne adrese';
+$labels['vacation.interval'] = 'Interval odgovora';
+$labels['vacation.after'] = 'Pravilo za odmor stavi nakon';
+$labels['vacation.saving'] = 'Snimam podatke...';
+$labels['vacation.action'] = 'Akcija za dolazne poruke';
+$labels['vacation.keep'] = 'Zadrži';
+$labels['vacation.discard'] = 'Odbaci';
+$labels['vacation.redirect'] = 'Preusmeri ka';
+$labels['vacation.copy'] = 'Pošalji kopiju na';
+$labels['arialabelfiltersetactions'] = 'Akcije za filterske setove';
+$labels['arialabelfilteractions'] = 'Filterske akcije';
+$labels['arialabelfilterform'] = 'Svojstva filtera';
+$labels['ariasummaryfilterslist'] = 'Lista filtera';
+$labels['ariasummaryfiltersetslist'] = 'Lista filterskih setova';
+$labels['filterstitle'] = 'Uredi filtere za dolazni email';
+$labels['vacationtitle'] = 'Uredi pravila kada nisam na poslu';
$messages['filterunknownerror'] = 'Nepoznata serverska greška.';
$messages['filterconnerror'] = 'Nije se moguće povezati na server.';
$messages['filterdeleteerror'] = 'Nije moguće obrisati filter. Desila se serverska greška.';
@@ -189,4 +219,7 @@ $messages['namereserved'] = 'Ime je rezervisano.';
$messages['setexist'] = 'Set već postoji.';
$messages['nodata'] = 'Morate označiti barem jednu poziciju!';
$messages['invaliddateformat'] = 'Netačan datum ili dio formata datuma';
+$messages['saveerror'] = 'Nije moguće snimiti podatke. Desila se serverska greška.';
+$messages['vacationsaved'] = 'Podaci o odmoru su uspješno snimljeni.';
+$messages['emptyvacationbody'] = 'Tijelo poruke za odmor je neophodno!';
?>
diff --git a/plugins/managesieve/localization/en_US.inc b/plugins/managesieve/localization/en_US.inc
index 1ea7d969e..f455d55f6 100644
--- a/plugins/managesieve/localization/en_US.inc
+++ b/plugins/managesieve/localization/en_US.inc
@@ -167,9 +167,8 @@ $labels['vacation.reply'] = 'Reply message';
$labels['vacation.advanced'] = 'Advanced settings';
$labels['vacation.subject'] = 'Subject';
$labels['vacation.body'] = 'Body';
-$labels['vacation.dates'] = 'Vacation time';
-$labels['vacation.from'] = 'From:';
-$labels['vacation.to'] = 'To:';
+$labels['vacation.start'] = 'Vacation start';
+$labels['vacation.end'] = 'Vacation end';
$labels['vacation.status'] = 'Status';
$labels['vacation.on'] = 'On';
$labels['vacation.off'] = 'Off';
@@ -177,6 +176,18 @@ $labels['vacation.addresses'] = 'My additional addresses';
$labels['vacation.interval'] = 'Reply interval';
$labels['vacation.after'] = 'Put vacation rule after';
$labels['vacation.saving'] = 'Saving data...';
+$labels['vacation.action'] = 'Incoming message action';
+$labels['vacation.keep'] = 'Keep';
+$labels['vacation.discard'] = 'Discard';
+$labels['vacation.redirect'] = 'Redirect to';
+$labels['vacation.copy'] = 'Send copy to';
+$labels['arialabelfiltersetactions'] = 'Filter set actions';
+$labels['arialabelfilteractions'] = 'Filter actions';
+$labels['arialabelfilterform'] = 'Filter properties';
+$labels['ariasummaryfilterslist'] = 'List of filters';
+$labels['ariasummaryfiltersetslist'] = 'List of filter sets';
+$labels['filterstitle'] = 'Edit incoming mail filters';
+$labels['vacationtitle'] = 'Edit out-of-office rule';
$messages = array();
$messages['filterunknownerror'] = 'Unknown server error.';
@@ -213,5 +224,6 @@ $messages['nodata'] = 'At least one position must be selected!';
$messages['invaliddateformat'] = 'Invalid date or date part format';
$messages['saveerror'] = 'Unable to save data. Server error occurred.';
$messages['vacationsaved'] = 'Vacation data saved successfully.';
+$messages['emptyvacationbody'] = 'Body of vacation message is required!';
?>
diff --git a/plugins/managesieve/localization/es_419.inc b/plugins/managesieve/localization/es_419.inc
index f459bdb67..45b5dfb2e 100644
--- a/plugins/managesieve/localization/es_419.inc
+++ b/plugins/managesieve/localization/es_419.inc
@@ -54,17 +54,27 @@ $labels['add'] = 'Agregar';
$labels['del'] = 'Eliminar';
$labels['sender'] = 'Remitente';
$labels['recipient'] = 'Destinatario';
-$labels['vacationdays'] = '¿Cada cuánto enviar mensajes (en días)?';
-$labels['vacationinterval'] = '¿Con que frecuencia enviar mensajes?';
+$labels['vacationaddr'] = 'Mis direccion(es) adiconal(es):';
+$labels['vacationdays'] = 'Cuan a menudo enviar mensajes (en días):';
+$labels['vacationinterval'] = '¿Con qué frecuencia enviar mensajes?:';
+$labels['vacationreason'] = 'Cuerpo del mensaje (motivo de las vacaciones):';
+$labels['vacationsubject'] = 'Asunto del mensaje:';
$labels['days'] = 'días';
$labels['seconds'] = 'segundos';
-$labels['vacationreason'] = 'Cuerpo del mensaje (motivo de las vacaciones):';
-$labels['vacationsubject'] = 'Título del mensaje:';
$labels['rulestop'] = 'Detener la evaluación de reglas';
$labels['enable'] = 'Habilitar/Deshabilitar';
+$labels['filterset'] = 'Set de filtros';
+$labels['filtersets'] = 'Filtro acciona';
+$labels['filtersetadd'] = 'Agregar set de filtros';
+$labels['filtersetdel'] = 'Eliminar set de filtros actual';
+$labels['filtersetact'] = 'Activar set de filtros actual';
+$labels['filtersetdeact'] = 'Desactivar set de filtros actual';
$labels['filterdef'] = 'Definición del filtro';
+$labels['filtersetname'] = 'Nombre del set de filtros';
+$labels['newfilterset'] = 'Nuevo set de filtros';
$labels['active'] = 'activo';
$labels['none'] = 'ninguno';
+$labels['fromset'] = 'desde set';
$labels['fromfile'] = 'desde archivo';
$labels['filterdisabled'] = 'filtro deshabilitado';
$labels['countisgreaterthan'] = 'la cuenta es mayor a';
@@ -72,15 +82,22 @@ $labels['countisgreaterthanequal'] = 'la cuenta es mayor o igual a ';
$labels['countislessthan'] = 'la cuenta es menor que';
$labels['countislessthanequal'] = 'la cuenta es menor o igual que';
$labels['countequals'] = 'la cuenta es igual a ';
+$labels['countnotequals'] = 'la cuenta no es menor a';
$labels['valueisgreaterthan'] = 'el valor es mayor que';
$labels['valueisgreaterthanequal'] = 'el balor es mayor o igual que ';
$labels['valueislessthan'] = 'el valor es menor que ';
$labels['valueislessthanequal'] = 'el valor es menor o igual que ';
$labels['valueequals'] = 'el valor es igual a ';
+$labels['valuenotequals'] = 'el valor no es igual a';
+$labels['setflags'] = 'Colocar etiquetas al mensaje';
+$labels['addflags'] = 'Agrega etiquetas al mensaje';
+$labels['removeflags'] = 'Eliminar etiquetas al mensaje';
$labels['flagread'] = 'Leido';
$labels['flagdeleted'] = 'Eliminado';
$labels['flaganswered'] = 'Respondido';
+$labels['flagflagged'] = 'Etiquetado';
$labels['flagdraft'] = 'Borrador';
+$labels['setvariable'] = 'Establecer variable';
$labels['setvarname'] = 'Nombre de la variable:';
$labels['setvarvalue'] = 'Valor de la variable:';
$labels['setvarmodifiers'] = 'Modificadores:';
@@ -91,30 +108,36 @@ $labels['varupperfirst'] = 'primer carácter en mayúscula';
$labels['varquotewildcard'] = 'citar carácteres especiales';
$labels['varlength'] = 'largo';
$labels['notify'] = 'Enviar notificación';
-$labels['notifyaddress'] = 'A la direccion de correo:';
-$labels['notifybody'] = 'Cuerpo de la notificación:';
-$labels['notifysubject'] = 'Tema de la notificación:';
-$labels['notifyfrom'] = 'Remitente de la notificación: ';
-$labels['notifyimportance'] = 'Importantcia:';
+$labels['notifytarget'] = 'Destinatario de la notificación:';
+$labels['notifymessage'] = 'Mensaje de notificación (opcional):';
+$labels['notifyoptions'] = 'Opciones de notificación (opcional):';
+$labels['notifyfrom'] = 'Remitente de la notificación (opcional):';
+$labels['notifyimportance'] = 'Importancia:';
$labels['notifyimportancelow'] = 'baja';
$labels['notifyimportancenormal'] = 'normal';
$labels['notifyimportancehigh'] = 'alta';
+$labels['notifymethodmailto'] = 'Correo electrónico';
+$labels['notifymethodtel'] = 'Teléfono';
+$labels['notifymethodsms'] = 'Mensaje de texto';
$labels['filtercreate'] = 'Crear filtro';
$labels['usedata'] = 'Usar los datos siguientes en el filtro:';
$labels['nextstep'] = 'Paso siguiente';
$labels['...'] = '...';
$labels['currdate'] = 'Fecha actual';
$labels['datetest'] = 'Fecha';
-$labels['year'] = 'Año';
+$labels['dateheader'] = 'encabezado:';
+$labels['year'] = 'año';
$labels['month'] = 'mes';
$labels['day'] = 'día';
$labels['date'] = 'fecha(aaaa-mm-dd)';
+$labels['julian'] = 'fecha (julian)';
$labels['hour'] = 'hora';
$labels['minute'] = 'minuto';
$labels['second'] = 'segundo';
$labels['time'] = 'hora (hh:mm:ss)';
$labels['iso8601'] = 'fecha (ISO8601)';
$labels['std11'] = 'fecha (RFC2822)';
+$labels['zone'] = 'zona horaria';
$labels['weekday'] = 'día de la semana (0-6)';
$labels['advancedopts'] = 'Opciones avanzadas';
$labels['body'] = 'Cuerpo';
@@ -132,22 +155,71 @@ $labels['user'] = 'usuario';
$labels['detail'] = 'detalle';
$labels['comparator'] = 'comparador:';
$labels['default'] = 'predeterminado';
-$labels['octet'] = 'estricto';
-$labels['asciinumeric'] = 'numérico (ascii-numeric)';
-$messages['filterunknownerror'] = 'Error del servidor desconocido.';
-$messages['filterconnerror'] = 'Incapaz de conectarse al servidor.';
+$labels['octet'] = 'estricto (octeto)';
+$labels['asciicasemap'] = 'no sensible a mayúsculas y minúsculas (mapero-ascii)';
+$labels['asciinumeric'] = 'numérico (ascii-numérico)';
+$labels['index'] = 'índice:';
+$labels['indexlast'] = 'hacia atrás';
+$labels['vacation'] = 'Vacaciones';
+$labels['vacation.reply'] = 'Responder mensaje';
+$labels['vacation.advanced'] = 'Opciones avanzadas';
+$labels['vacation.subject'] = 'Asunto';
+$labels['vacation.body'] = 'Cuerpo';
+$labels['vacation.dates'] = 'Horario de vacaciones';
+$labels['vacation.from'] = 'De:';
+$labels['vacation.to'] = 'Para:';
+$labels['vacation.status'] = 'Estado';
+$labels['vacation.on'] = 'Encendido';
+$labels['vacation.off'] = 'Apagado';
+$labels['vacation.addresses'] = 'Mis direcciones adicionales';
+$labels['vacation.interval'] = 'Intervalo de respuesta';
+$labels['vacation.after'] = 'Colocar regla de vacaciones luego';
+$labels['vacation.saving'] = 'Guardando información...';
+$labels['vacation.action'] = 'Acción para mensaje entrante';
+$labels['vacation.keep'] = 'Mantener';
+$labels['vacation.discard'] = 'Descartar';
+$labels['vacation.redirect'] = 'Redireccionar a';
+$labels['vacation.copy'] = 'Enviar una copia a';
+$labels['arialabelfiltersetactions'] = 'Acciones del set de filtros';
+$labels['arialabelfilteractions'] = 'Acciones de filtros';
+$labels['arialabelfilterform'] = 'Propiedades de filtros';
+$labels['ariasummaryfilterslist'] = 'Lista de filtros';
+$labels['ariasummaryfiltersetslist'] = 'Lista de set de filtros';
+$labels['filterstitle'] = 'Administrar filtros de correos entrantes';
+$labels['vacationtitle'] = 'Editar regla de fuera de oficina';
+$messages['filterunknownerror'] = 'Error de servidor desconocido.';
+$messages['filterconnerror'] = 'No se puede conectar al servidor.';
+$messages['filterdeleteerror'] = 'No se puede eliminar el filtro. Ocurrió un error de servidor.';
$messages['filterdeleted'] = 'Filtro eliminado exitosamente.';
$messages['filtersaved'] = 'Filtro guardado exitosamente.';
+$messages['filtersaveerror'] = 'No es posible guardar el filtro. Ha ocurrido un error de servidor.';
$messages['filterdeleteconfirm'] = '¿Estás seguro que quieres eliminar el filtro seleccionado?';
$messages['ruledeleteconfirm'] = '¿Estás seguro que quieres eliminar la regla seleccionada?';
$messages['actiondeleteconfirm'] = '¿Estás seguro que queires eliminar la acción seleccionada?';
$messages['forbiddenchars'] = 'Carácteres ilegales en el campo.';
$messages['cannotbeempty'] = 'El campo no puede estar vacio.';
$messages['ruleexist'] = 'Ya existe un filtro con el nombre especificado.';
+$messages['setactivateerror'] = 'No es posible activar el set de filtros seleccionado. Ha ocurrido un error de servidor.';
+$messages['setdeactivateerror'] = 'No es posible desactivar el set de filtros selecciona. Ha ocurrido un error de servidor.';
+$messages['setdeleteerror'] = 'No es posible eliminar el set de filtros seleccionado. Ha ocurrido un error de servidor.';
+$messages['setactivated'] = 'Set de filtros activado exitosamente.';
+$messages['setdeactivated'] = 'Set de filtros desactivado exitosamente.';
+$messages['setdeleted'] = 'Set de filtroseliminado exitosamente.';
+$messages['setdeleteconfirm'] = '¿Estas seguro que deseas eliminar el set de filtros seleccionado?';
+$messages['setcreateerror'] = 'No es posible crear el set de filtros. Ha ocurrido un error de servidor.';
+$messages['setcreated'] = 'Set de filtros creado exitosamente.';
+$messages['activateerror'] = 'No es posible habilitar los filtros seleccionados. Ha ocurrido un error de servidor.';
+$messages['deactivateerror'] = 'No es posible deshabilitar los filtros seleccionados. Ha ocurrido un error de servidor.';
$messages['deactivated'] = 'Filtro(s) deshabilitado(s) exitosamente.';
$messages['activated'] = 'Filtro(s) habilitado(s) exitosamente.';
$messages['moved'] = 'Filtro movido exitosamente.';
+$messages['moveerror'] = 'No es posible mover los filtros seleccionados. Ha ocurrido un error de servidor.';
$messages['nametoolong'] = 'Nombre demasiado largo.';
$messages['namereserved'] = 'Nombre reservado.';
+$messages['setexist'] = 'Set ya existe.';
$messages['nodata'] = 'Debes seleccionar al menos una posición.';
+$messages['invaliddateformat'] = 'Fecha o parte del formato no válido';
+$messages['saveerror'] = 'No es posible guardar la información. Ha ocurrido un error de servidor.';
+$messages['vacationsaved'] = 'Información de vacaciones guardada exitosamente.';
+$messages['emptyvacationbody'] = 'Cuerpo del mensaje de vacaciones es requerido!';
?>
diff --git a/plugins/managesieve/localization/es_AR.inc b/plugins/managesieve/localization/es_AR.inc
index 7707a2b57..6b3749da6 100644
--- a/plugins/managesieve/localization/es_AR.inc
+++ b/plugins/managesieve/localization/es_AR.inc
@@ -32,6 +32,10 @@ $labels['filteris'] = 'es igual a';
$labels['filterisnot'] = 'no es igual a';
$labels['filterexists'] = 'existe';
$labels['filternotexists'] = 'no existe';
+$labels['filtermatches'] = 'coincide con la expresión';
+$labels['filternotmatches'] = 'no coindice con la expresión';
+$labels['filterregex'] = 'coincide con la expresión regular';
+$labels['filternotregex'] = 'no coincide con la expresión regular';
$labels['filterunder'] = 'bajo';
$labels['filterover'] = 'sobre';
$labels['addrule'] = 'Agregar regla';
@@ -43,16 +47,24 @@ $labels['messagesendcopy'] = 'Enviar copia del mensaje a';
$labels['messagereply'] = 'Responder con un mensaje';
$labels['messagedelete'] = 'Eliminar mensaje';
$labels['messagediscard'] = 'Descartar con un mensaje';
+$labels['messagekeep'] = 'Mantener mensajes en bandeja de entrada';
$labels['messagesrules'] = 'Para el correo entrante:';
$labels['messagesactions'] = '... ejecutar las siguientes acciones:';
$labels['add'] = 'Agregar';
$labels['del'] = 'Eliminar';
$labels['sender'] = 'Remitente';
$labels['recipient'] = 'Destinatario';
+$labels['vacationaddr'] = 'Mi(s) direccion(es) de e-mail adicional(es):';
$labels['vacationdays'] = 'Cada cuanto enviar mensajes (en días):';
+$labels['vacationinterval'] = 'Enviar mensajes cada:';
$labels['vacationreason'] = 'Cuerpo del mensaje (razón de vacaciones):';
+$labels['vacationsubject'] = 'Asunto del mensaje:';
+$labels['days'] = 'dias';
+$labels['seconds'] = 'segundos';
$labels['rulestop'] = 'Parar de evaluar reglas';
+$labels['enable'] = 'Habilitar/Deshabilitar';
$labels['filterset'] = 'Conjunto de filtros';
+$labels['filtersets'] = 'Filtro activa';
$labels['filtersetadd'] = 'Agregar conjunto de filtros';
$labels['filtersetdel'] = 'Eliminar conjunto de filtros';
$labels['filtersetact'] = 'Activar conjunto de filtros';
@@ -65,19 +77,149 @@ $labels['none'] = 'none';
$labels['fromset'] = 'desde conjunto';
$labels['fromfile'] = 'desde archivo';
$labels['filterdisabled'] = 'Filtro deshabilitado';
+$labels['countisgreaterthan'] = 'la cuenta es mayor a';
+$labels['countisgreaterthanequal'] = 'la cuenta es mayor o igual a';
+$labels['countislessthan'] = 'la cuenta es menor a';
+$labels['countislessthanequal'] = 'la cuenta es menor o igual a';
+$labels['countequals'] = 'la cuenta es igual a';
+$labels['countnotequals'] = 'la cuenta no es igual a';
+$labels['valueisgreaterthan'] = 'el valor es mayor a';
+$labels['valueisgreaterthanequal'] = 'el valor es mayor o igual a';
+$labels['valueislessthan'] = 'el valor es menor a';
+$labels['valueislessthanequal'] = 'el valor es menor o igual a';
+$labels['valueequals'] = 'el valor es igual a';
+$labels['valuenotequals'] = 'el valor no es igual a';
+$labels['setflags'] = 'Configurar marcas del mensaje';
+$labels['addflags'] = 'Agregar marcas al mensaje';
+$labels['removeflags'] = 'Eliminar marcas del mensaje';
+$labels['flagread'] = 'Leer';
+$labels['flagdeleted'] = 'Eliminado';
+$labels['flaganswered'] = 'Respondido';
+$labels['flagflagged'] = 'Marcado';
+$labels['flagdraft'] = 'Borrador';
+$labels['setvariable'] = 'Setear variable';
+$labels['setvarname'] = 'Nombre de variable:';
+$labels['setvarvalue'] = 'Valor de variable:';
+$labels['setvarmodifiers'] = 'Modificadores:';
+$labels['varlower'] = 'minúscula';
+$labels['varupper'] = 'mayúscula';
+$labels['varlowerfirst'] = 'primer caracter en minúscula';
+$labels['varupperfirst'] = 'primer caracter en mayúscula';
+$labels['varquotewildcard'] = 'citar caracteres especiales';
+$labels['varlength'] = 'longitud';
+$labels['notify'] = 'Enviar notificación';
+$labels['notifytarget'] = 'Objetivo de la notificación:';
+$labels['notifymessage'] = 'Mensaje de notificación (opcional):';
+$labels['notifyoptions'] = 'Opciones de notificación (opcional):';
+$labels['notifyfrom'] = 'Remitente de la notificación (opcional):';
+$labels['notifyimportance'] = 'Importancia:';
+$labels['notifyimportancelow'] = 'baja';
+$labels['notifyimportancenormal'] = 'normal';
+$labels['notifyimportancehigh'] = 'alta';
+$labels['notifymethodmailto'] = 'Email';
+$labels['notifymethodtel'] = 'Teléfono';
+$labels['notifymethodsms'] = 'SMS';
+$labels['filtercreate'] = 'Crear filtro';
+$labels['usedata'] = 'Usar la siguiente información en el filtro:';
+$labels['nextstep'] = 'Siguiente paso';
+$labels['...'] = '...';
+$labels['currdate'] = 'Fecha actual';
+$labels['datetest'] = 'Fecha';
+$labels['dateheader'] = 'encabezado:';
+$labels['year'] = 'año';
+$labels['month'] = 'mes';
+$labels['day'] = 'dia';
+$labels['date'] = 'fecha (yyyy-mm-dd)';
+$labels['julian'] = 'fecha (juliano)';
+$labels['hour'] = 'hora';
+$labels['minute'] = 'minuto';
+$labels['second'] = 'segundo';
+$labels['time'] = 'hora (hh:mm:ss)';
+$labels['iso8601'] = 'fecha (ISO8601)';
+$labels['std11'] = 'fecha (RFC2822)';
+$labels['zone'] = 'zona horaria';
+$labels['weekday'] = 'día de la semana (0-6)';
+$labels['advancedopts'] = 'Opciones avanzadas';
+$labels['body'] = 'Cuerpo';
+$labels['address'] = 'dirección';
+$labels['envelope'] = 'envoltura';
+$labels['modifier'] = 'modificador:';
+$labels['text'] = 'texto';
+$labels['undecoded'] = 'sin decodificar (crudo)';
+$labels['contenttype'] = 'tipo de contenido';
+$labels['modtype'] = 'tipo:';
+$labels['allparts'] = 'todo';
+$labels['domain'] = 'dominio';
+$labels['localpart'] = 'parte local';
+$labels['user'] = 'usuario';
+$labels['detail'] = 'detalle';
+$labels['comparator'] = 'comparador:';
+$labels['default'] = 'por defecto';
+$labels['octet'] = 'estricto (octeto)';
+$labels['asciicasemap'] = 'no sensible a minúsculas o mayúsculas (ascii-casemap)';
+$labels['asciinumeric'] = 'numérico (ascii-numeric)';
+$labels['index'] = 'índice:';
+$labels['indexlast'] = 'hacia atrás';
+$labels['vacation'] = 'Vacaciones';
+$labels['vacation.reply'] = 'Responder mensaje';
+$labels['vacation.advanced'] = 'Opciones avanzdas';
+$labels['vacation.subject'] = 'Asunto';
+$labels['vacation.body'] = 'Cuerpo';
+$labels['vacation.dates'] = 'Período de vacaciones';
+$labels['vacation.from'] = 'De:';
+$labels['vacation.to'] = 'Para:';
+$labels['vacation.status'] = 'Estado';
+$labels['vacation.on'] = 'On';
+$labels['vacation.off'] = 'Off';
+$labels['vacation.addresses'] = 'Mis direcciones adicionales';
+$labels['vacation.interval'] = 'Intervalo de respuesta';
+$labels['vacation.after'] = 'Colocar luego regla de vacaciones ';
+$labels['vacation.saving'] = 'Guardando información...';
+$labels['vacation.action'] = 'Acción para mensaje entrante';
+$labels['vacation.keep'] = 'Mantener';
+$labels['vacation.discard'] = 'Descartar';
+$labels['vacation.redirect'] = 'Reenviar a';
+$labels['vacation.copy'] = 'Enviar copia a';
+$labels['arialabelfiltersetactions'] = 'Acciones de conjunto de filtros';
+$labels['arialabelfilteractions'] = 'Filtrar acciones';
+$labels['arialabelfilterform'] = 'Filtrar propiedades';
+$labels['ariasummaryfilterslist'] = 'Listado de filtros';
+$labels['ariasummaryfiltersetslist'] = 'Listado de conjunto de filtros';
+$labels['filterstitle'] = 'Editar filtros para mensajes entrantes';
+$labels['vacationtitle'] = 'Editar reglas "fuera de la oficina"';
$messages['filterunknownerror'] = 'Error desconocido de servidor';
$messages['filterconnerror'] = 'Imposible conectar con el servidor managesieve';
+$messages['filterdeleteerror'] = 'Imposible borrar filtro. Ha ocurrido un error en el servidor';
$messages['filterdeleted'] = 'Filtro borrado satisfactoriamente';
$messages['filtersaved'] = 'Filtro guardado satisfactoriamente';
+$messages['filtersaveerror'] = 'Imposible guardar ell filtro. Ha ocurrido un error en el servidor';
$messages['filterdeleteconfirm'] = '¿Realmente desea borrar el filtro seleccionado?';
$messages['ruledeleteconfirm'] = '¿Está seguro de que desea borrar la regla seleccionada?';
$messages['actiondeleteconfirm'] = '¿Está seguro de que desea borrar la acción seleccionada?';
$messages['forbiddenchars'] = 'Caracteres prohibidos en el campo';
$messages['cannotbeempty'] = 'El campo no puede estar vacío';
+$messages['ruleexist'] = 'El filtro con el nombre especificado ya existe.';
+$messages['setactivateerror'] = 'Imposible activar el conjunto de filtros. Error en el servidor.';
+$messages['setdeactivateerror'] = 'Imposible desactivar el conjunto de filtros. Error en el servidor.';
+$messages['setdeleteerror'] = 'Imposible eliminar el conjunto de filtros. Error en el servidor.';
$messages['setactivated'] = 'Conjunto de filtros activados correctamente';
$messages['setdeactivated'] = 'Conjunto de filtros desactivados correctamente';
$messages['setdeleted'] = 'Conjunto de filtros eliminados correctamente';
$messages['setdeleteconfirm'] = '¿Esta seguro, que quiere eliminar el conjunto de filtros seleccionado?';
+$messages['setcreateerror'] = 'Imposible crear el conjunto de filtros. Error en el servidor.';
$messages['setcreated'] = 'Conjunto de filtros creados correctamente';
-$messages['nametoolong'] = 'Imposible crear el conjunto de filtros. Nombre del conjunto de filtros muy largo';
+$messages['activateerror'] = 'Imposible activar el conjunto de filtros. Error en el servidor.';
+$messages['deactivateerror'] = 'Imposible desactivar el conjunto de filtros. Error en el servidor.';
+$messages['deactivated'] = 'Filtro deshabilitado satisfactoriamente';
+$messages['activated'] = 'Filtro habilitado satisfactoriamente';
+$messages['moved'] = 'Filtro movido satisfactoriamente';
+$messages['moveerror'] = 'Imposible mover el filtro seleccionado. Ha ocurrido un error en el servidor.';
+$messages['nametoolong'] = 'El nombre es demasiado largo.';
+$messages['namereserved'] = 'Nombre reservado.';
+$messages['setexist'] = 'Conjunto ya existe.';
+$messages['nodata'] = 'Al menos una posición debe ser seleccionada!';
+$messages['invaliddateformat'] = 'Fecha o formato de fecha inválido';
+$messages['saveerror'] = 'Imposible guardar la información. Ha ocurrido un error con el servidor.';
+$messages['vacationsaved'] = 'Información de vacaciones guardada satisfactoriamente.';
+$messages['emptyvacationbody'] = '¡Se requiere un cuerpo para el mensaje por vacaciones!';
?>
diff --git a/plugins/managesieve/localization/fi_FI.inc b/plugins/managesieve/localization/fi_FI.inc
index afdca3d3e..1bec7a3df 100644
--- a/plugins/managesieve/localization/fi_FI.inc
+++ b/plugins/managesieve/localization/fi_FI.inc
@@ -32,13 +32,30 @@ $labels['filteris'] = 'on samanlainen kuin';
$labels['filterisnot'] = 'ei ole samanlainen kuin';
$labels['filterexists'] = 'on olemassa';
$labels['filternotexists'] = 'ei ole olemassa';
+$labels['filtermatches'] = 'vastaa lauseketta';
+$labels['filternotmatches'] = 'ei vastaa lauseketta';
+$labels['filterregex'] = 'vastaa säännöllistä lauseketta';
+$labels['filternotregex'] = 'ei vastaa säännöllistä lauseketta';
+$labels['filterunder'] = 'alle';
+$labels['filterover'] = 'yli';
$labels['addrule'] = 'Lisää sääntö';
$labels['delrule'] = 'Poista sääntö';
+$labels['messagemoveto'] = 'Siirrä viesti';
+$labels['messageredirect'] = 'Lähetä viesti edelleen';
+$labels['messagecopyto'] = 'Kopioi viesti';
+$labels['messagesendcopy'] = 'Lähetä kopio viestistä';
+$labels['messagereply'] = 'Vastaa viestillä';
+$labels['messagedelete'] = 'Poista viesti';
+$labels['messagediscard'] = 'Hylkää viestillä';
+$labels['messagekeep'] = 'Säilytä viesti saapuneissa';
+$labels['messagesactions'] = '...suorita seuraavat toiminnot:';
$labels['add'] = 'Lisää';
$labels['del'] = 'Poista';
$labels['sender'] = 'Lähettäjä';
$labels['recipient'] = 'Vastaanottaja';
$labels['vacationsubject'] = 'Viestin aihe:';
+$labels['days'] = 'päivää';
+$labels['seconds'] = 'sekuntia';
$labels['setflags'] = 'Aseta liput viestiin';
$labels['addflags'] = 'Lisää liput viestiin';
$labels['removeflags'] = 'Poista liput viestistä';
@@ -50,14 +67,44 @@ $labels['setvariable'] = 'Aseta muuttuja';
$labels['setvarname'] = 'Muuttujan nimi:';
$labels['setvarvalue'] = 'Muuttujan arvo:';
$labels['notifyimportance'] = 'Tärkeysaste:';
+$labels['notifymethodmailto'] = 'Sähköposti';
+$labels['notifymethodtel'] = 'Puhelin';
+$labels['notifymethodsms'] = 'Tekstiviesti';
$labels['filtercreate'] = 'Luo suodatin';
$labels['...'] = '...';
+$labels['year'] = 'vuosi';
+$labels['month'] = 'kuukausi';
+$labels['day'] = 'päivä';
+$labels['hour'] = 'tunti';
+$labels['minute'] = 'minuutti';
+$labels['second'] = 'sekunti';
+$labels['time'] = 'aika (hh:mm:ss)';
+$labels['zone'] = 'aikavyöhyke';
$labels['advancedopts'] = 'Lisävalinnat';
+$labels['address'] = 'osoite';
+$labels['allparts'] = 'kaikki';
+$labels['user'] = 'käyttäjä';
$labels['default'] = 'oletus';
+$labels['vacation'] = 'Loma';
+$labels['vacation.reply'] = 'Vastausviesti';
+$labels['vacation.advanced'] = 'Lisäasetukset';
+$labels['vacation.subject'] = 'Aihe';
+$labels['vacation.body'] = 'Sisältö';
+$labels['vacation.dates'] = 'Loma-aika';
+$labels['vacation.from'] = 'Lähettäjä:';
+$labels['vacation.to'] = 'Vastaanottaja:';
+$labels['vacation.status'] = 'Tila';
+$labels['vacation.on'] = 'Päällä';
+$labels['vacation.off'] = 'Pois';
+$labels['vacation.saving'] = 'Tallennetaan tietoja...';
$messages['filterunknownerror'] = 'Tuntematon palvelinvirhe.';
$messages['filterconnerror'] = 'Yhteys palvelimeen epäonnistui.';
$messages['filterdeleted'] = 'Suodatin poistettu onnistuneesti.';
+$messages['filterdeleteconfirm'] = 'Haluatko varmasti poistaa valitun suodattimen?';
$messages['cannotbeempty'] = 'Kenttä ei voi olla tyhjä.';
$messages['moved'] = 'Suodatin siirretty onnistuneesti.';
$messages['nametoolong'] = 'Nimi on liian pitkä.';
+$messages['saveerror'] = 'Tietojen tallennus epäonnistui palvelinvirheen vuoksi.';
+$messages['vacationsaved'] = 'Lomatiedot tallennettu onnistuneesti.';
+$messages['emptyvacationbody'] = 'Lomaviestin sisältö vaaditaan!';
?>
diff --git a/plugins/managesieve/localization/id_ID.inc b/plugins/managesieve/localization/id_ID.inc
index d4024491f..59dadc74d 100644
--- a/plugins/managesieve/localization/id_ID.inc
+++ b/plugins/managesieve/localization/id_ID.inc
@@ -47,15 +47,20 @@ $labels['messagesendcopy'] = 'Kirim salinan pesan ke';
$labels['messagereply'] = 'balas dengan pesan';
$labels['messagedelete'] = 'Hapus pesan';
$labels['messagediscard'] = 'Buang dengan pesan';
+$labels['messagekeep'] = 'Biarkan pesan tetap didalam kotak surat';
$labels['messagesrules'] = 'Untuk email masuk:';
$labels['messagesactions'] = '...lakukan tindakan berikut';
$labels['add'] = 'Tambah';
$labels['del'] = 'Hapus';
$labels['sender'] = 'Pengirim';
$labels['recipient'] = 'Penerima';
+$labels['vacationaddr'] = 'Alamat email tambahan saya:';
$labels['vacationdays'] = 'Seberapa sering mengirim pesan (dalam hari):';
+$labels['vacationinterval'] = 'Seberapa sering untuk pengiriman pesan:';
$labels['vacationreason'] = 'Isi pesan (alasan liburan):';
$labels['vacationsubject'] = 'Judul pesan:';
+$labels['days'] = 'hari';
+$labels['seconds'] = 'detik';
$labels['rulestop'] = 'Berhenti mengevaluasi aturan';
$labels['enable'] = 'Aktifkan/Non-Aktifkan';
$labels['filterset'] = 'Himpunan filter';
@@ -77,11 +82,13 @@ $labels['countisgreaterthanequal'] = 'penghitungan lebih besa dari atau sama den
$labels['countislessthan'] = 'penghitungan lebih kecil dari';
$labels['countislessthanequal'] = 'penghitungan lebih kecil dari atau sama dengan';
$labels['countequals'] = 'penghitungan sama dengan';
+$labels['countnotequals'] = 'penghitungan tidak sama dengan';
$labels['valueisgreaterthan'] = 'nilai lebih besar dari';
$labels['valueisgreaterthanequal'] = 'nilai lebih besar dari atau sama dengan';
$labels['valueislessthan'] = 'nilai lebih kecil dari';
$labels['valueislessthanequal'] = 'nilai lebih kecil dari atau sama dengan';
$labels['valueequals'] = 'nilai sama dengan';
+$labels['valuenotequals'] = 'nilai tidak sadengan';
$labels['setflags'] = 'Atur tanda pada pesan';
$labels['addflags'] = 'Berikan tanda pada pesan';
$labels['removeflags'] = 'Cabut tanda dari pesan';
@@ -101,18 +108,37 @@ $labels['varupperfirst'] = 'karakter pertama huruf besar';
$labels['varquotewildcard'] = 'kutip karakter khusus';
$labels['varlength'] = 'panjang';
$labels['notify'] = 'Kirim pemberitahuan';
-$labels['notifyaddress'] = 'Ke alamat email:';
-$labels['notifybody'] = 'Isi pemberitahuan:';
-$labels['notifysubject'] = 'Judul pemberitahuan';
-$labels['notifyfrom'] = 'Pengirim pemberitahuan.';
+$labels['notifytarget'] = 'Pemberitahuan yang dituju:';
+$labels['notifymessage'] = 'Pemberitahuan pesan (pilihan):';
+$labels['notifyoptions'] = 'Pemberitahuan untuk beberapa pilihan (pilihan):';
+$labels['notifyfrom'] = 'Pemberitahuan ke pengirim (tidak harus):';
$labels['notifyimportance'] = 'Tingkat kepentingan:';
$labels['notifyimportancelow'] = 'rendah';
$labels['notifyimportancenormal'] = 'normal';
$labels['notifyimportancehigh'] = 'tinggi';
+$labels['notifymethodmailto'] = 'Surat Elektronik / Email';
+$labels['notifymethodtel'] = 'Telepon';
+$labels['notifymethodsms'] = 'SMS';
$labels['filtercreate'] = 'Buat filter';
$labels['usedata'] = 'Gunakan data berikut dalam filter:';
$labels['nextstep'] = 'Langkah Selanjutnya';
$labels['...'] = '...';
+$labels['currdate'] = 'Tanggal sekarang';
+$labels['datetest'] = 'Tanggal';
+$labels['dateheader'] = 'header / tajuk:';
+$labels['year'] = 'tahun';
+$labels['month'] = 'bulan';
+$labels['day'] = 'hari';
+$labels['date'] = 'tanggal (yyyy-mm-dd)';
+$labels['julian'] = 'tanggal (kalender julian)';
+$labels['hour'] = 'jam';
+$labels['minute'] = 'menit';
+$labels['second'] = 'detik';
+$labels['time'] = 'waktu :(hh:mm:ss)';
+$labels['iso8601'] = 'tanggal (ISO8601)';
+$labels['std11'] = 'tanggal (RFC2822)';
+$labels['zone'] = 'zona-waktu';
+$labels['weekday'] = 'hari kerja (0-6)';
$labels['advancedopts'] = 'Pilihan lanjutan';
$labels['body'] = 'Isi';
$labels['address'] = 'alamat';
@@ -132,26 +158,67 @@ $labels['default'] = 'standar';
$labels['octet'] = 'ketat (oktet)';
$labels['asciicasemap'] = 'case insensitive (ascii-casemap)';
$labels['asciinumeric'] = 'numeric (ascii-numeric)';
+$labels['index'] = 'indeks:';
+$labels['indexlast'] = 'mundur:';
+$labels['vacation'] = 'Liburan';
+$labels['vacation.reply'] = 'Balas pesan';
+$labels['vacation.advanced'] = 'Pengaturan Lanjutan';
+$labels['vacation.subject'] = 'Judul';
+$labels['vacation.body'] = 'Isi';
+$labels['vacation.dates'] = 'Waktu Liburan';
+$labels['vacation.from'] = 'Pengirim:';
+$labels['vacation.to'] = 'Kepada:';
+$labels['vacation.status'] = 'Status';
+$labels['vacation.on'] = 'Nyala';
+$labels['vacation.off'] = 'Mati';
+$labels['vacation.addresses'] = 'Alamat email tambahan saya';
+$labels['vacation.interval'] = 'Balas secara interval';
+$labels['vacation.after'] = 'Atur untuk pengaturan cuti setelah';
+$labels['vacation.saving'] = 'Menyimpan data...';
+$labels['vacation.action'] = 'Tindakan untuk pesan masuk';
+$labels['vacation.keep'] = 'Simpan';
+$labels['vacation.discard'] = 'Buang';
+$labels['vacation.redirect'] = 'Alihkan ke';
+$labels['vacation.copy'] = 'Kirim salinan ke';
+$labels['arialabelfiltersetactions'] = 'Tindakan untuk penyaringan';
+$labels['arialabelfilteractions'] = 'Tindakan penyaringan';
+$labels['arialabelfilterform'] = 'Properti untuk penyaringan';
+$labels['ariasummaryfilterslist'] = 'Daftar penyaringan';
+$labels['ariasummaryfiltersetslist'] = 'Daftar penyaringan yang telah di set';
+$labels['filterstitle'] = 'Ubah penyaringan untuk email masuk';
+$labels['vacationtitle'] = 'Ubah aturan untuk sedang-diluar-kantor';
$messages['filterunknownerror'] = 'Error pada server tak dikenali.';
$messages['filterconnerror'] = 'Tidak dapat menyambung ke server.';
+$messages['filterdeleteerror'] = 'Tidak dapat menghapus penyaringan. Terjadi kesalahan pada server.';
$messages['filterdeleted'] = 'Penyaringan berhasil dihapus.';
$messages['filtersaved'] = 'Penyaringan berhasil disimpan.';
+$messages['filtersaveerror'] = 'Tidak dapat menyimpan penyaringan. Terjadi kesalahan pada server.';
$messages['filterdeleteconfirm'] = 'Yakin untuk menghapus penyaringan terpilih?';
$messages['ruledeleteconfirm'] = 'Yakin untuk menghapus aturan terpilih?';
$messages['actiondeleteconfirm'] = 'Yakin untuk menghapus tindakan terpilih?';
$messages['forbiddenchars'] = 'Karakter terlarang pada isian.';
$messages['cannotbeempty'] = 'Isian tidak bisa kosong.';
$messages['ruleexist'] = 'Penyaringan dengan nama tersebut sudah ada.';
+$messages['setactivateerror'] = 'Tidak dapat mengaktivkan kumpulan penyaringan terpilih. Terjadi kesalahan pada server.';
+$messages['setdeactivateerror'] = 'Tidak bisa mematikan kumpulan penyaringan terpilih. Terjadi kesalahan pada server.';
+$messages['setdeleteerror'] = 'Tidak dapat menghapus kumpulan penyaringan terpilih. Terjadi kesalahan pada server.';
$messages['setactivated'] = 'Kumpulan penyaringan berhasil dihidupkan.';
$messages['setdeactivated'] = 'Kumpulan penyaringan berhasil dimatikan.';
$messages['setdeleted'] = 'Kumpulan penyaringan berhasil dihapus.';
$messages['setdeleteconfirm'] = 'Yakin ingin menghapus kumpulan penyaringan terpilih?';
+$messages['setcreateerror'] = 'Tidak bisa membuat kumpulan penyaringan. Terjadi kesalahan pada server';
$messages['setcreated'] = 'Kumpulan penyaringan berhasul dibuat.';
+$messages['activateerror'] = 'Tidak dapat mengaktifkan penyaringan terpilih. Terjadi kesalahan pada server';
+$messages['deactivateerror'] = 'Tidak dapat mematikan penyaringan terpilih. Terjadi kesalahan pada server';
$messages['deactivated'] = 'Berhasil menghidupkan penyaringan.';
$messages['activated'] = 'Berhasil mematikan penyaringan.';
$messages['moved'] = 'Berhasil memindahkan penyaringan.';
+$messages['moveerror'] = 'Tidak bisa memindahkan penyaringan terpilih. Ada kesalahan di server.';
$messages['nametoolong'] = 'Nama terlalu panjang.';
$messages['namereserved'] = 'Nama sudah terpesan.';
$messages['setexist'] = 'Kumpulan sudah ada.';
$messages['nodata'] = 'Setidaknya satu posisi harus dipilih!';
+$messages['invaliddateformat'] = 'Format tanggal atau bagian dari tanggal salah';
+$messages['saveerror'] = 'Tidak dapat menyimpan data. Terjadi kesalahan pada server.';
+$messages['vacationsaved'] = 'Data untuk cuti berhasil disimpan.';
?>
diff --git a/plugins/managesieve/localization/ml_IN.inc b/plugins/managesieve/localization/ml_IN.inc
index 4dac39417..613695c0b 100644
--- a/plugins/managesieve/localization/ml_IN.inc
+++ b/plugins/managesieve/localization/ml_IN.inc
@@ -47,15 +47,20 @@ $labels['messagesendcopy'] = 'സന്ദേശത്തിന്റെ പക
$labels['messagereply'] = 'സന്ദേശം വെച്ച് മറുപടി അയക്കു';
$labels['messagedelete'] = 'സന്ദേശം മായ്ക്കു';
$labels['messagediscard'] = 'സന്ദേശത്തോടെ നിരാകരിക്കുക';
+$labels['messagekeep'] = 'സന്ദേശം ഇൻബോക്സിൽ സൂക്ഷിക്കുക';
$labels['messagesrules'] = 'ആഗമന സന്ദേശങ്ങള്‍ക്ക്:';
$labels['messagesactions'] = '...ഈ പ്രവര്‍ത്തനങ്ങള്‍ ചെയ്യുക:';
$labels['add'] = 'ചേര്‍ക്കു';
$labels['del'] = 'നീക്കം ചെയ്യുക';
$labels['sender'] = 'അയചയാള്‍';
$labels['recipient'] = 'സ്വീകര്‍ത്താവ്';
+$labels['vacationaddr'] = 'എന്റെ മറ്റ് ഈമെയിൽ വിലാസങ്ങൾ:';
$labels['vacationdays'] = 'എത്ര ഭിവസം കൂടുമ്പോള്‍ സന്ദേശം അയക്കണം:';
+$labels['vacationinterval'] = 'എത്ര സമയം കൂടുമ്പോൾ സന്ദേശങ്ങൾ അയയ്ക്കണം:';
$labels['vacationreason'] = 'സന്ദേശത്തിന്റെ ഉള്ളടക്കം (അവധിയുടെ കാരണം):';
$labels['vacationsubject'] = 'സന്ദേശത്തിന്റെ വിഷയം:';
+$labels['days'] = 'ദിവസങ്ങൾ';
+$labels['seconds'] = 'സെക്കന്റുകൾ';
$labels['rulestop'] = 'നിയമങ്ങള്‍ വിലയിരുത്തുന്നത് നിര്‍ത്തുക';
$labels['enable'] = 'പ്രവര്‍ത്തനസജ്ജം/രഹിതം';
$labels['filterset'] = 'അരിപ്പകളുടെ കൂട്ടം';
@@ -77,11 +82,13 @@ $labels['countisgreaterthanequal'] = 'എണ്ണം ഇതിനെക്ക
$labels['countislessthan'] = 'എണ്ണം ഇതിനെക്കാള്‍ കുറവ്';
$labels['countislessthanequal'] = 'എണ്ണം ഇതിനെക്കാള്‍ കൂറവ് ഇല്ലെങ്കില്‍ സമം';
$labels['countequals'] = 'എണ്ണം ഇതിനോട് സമം';
+$labels['countnotequals'] = 'എണ്ണം ഇതിനോട് തുല്യമല്ല';
$labels['valueisgreaterthan'] = 'മൂല്യം ഇതിനെക്കാള്‍ കുടുതല്‍';
$labels['valueisgreaterthanequal'] = 'മുല്യം ഇതിനെക്കാള്‍ കൂടുതല്‍ ഇല്ലെങ്കില്‍ സമം';
$labels['valueislessthan'] = 'മൂല്യം ഇതിനെക്കാള്‍ കുറവ്';
$labels['valueislessthanequal'] = 'മൂല്യം ഇതിനെക്കാള്‍ കൂറവ് ഇല്ലെങ്കില്‍ തുല്യം';
$labels['valueequals'] = 'മൂല്യം ഇതിനോട് സമം';
+$labels['valuenotequals'] = 'മൂല്യം ഇതിനോട് തുല്യമല്ല';
$labels['setflags'] = 'സന്ദേശത്തില്‍ അടയാളമിടുക';
$labels['addflags'] = 'സന്ദേശത്തില്‍ അടയാളം ചേര്‍ക്കുക';
$labels['removeflags'] = 'സന്ദേശത്തില്‍ നിന്നും അടയാളം മാറ്റുക';
@@ -90,6 +97,9 @@ $labels['flagdeleted'] = 'നീക്കം ചെയ്തവ';
$labels['flaganswered'] = 'മറുപടി നല്‍കിയവ';
$labels['flagflagged'] = 'അടയാളപ്പെടുത്തിയവ';
$labels['flagdraft'] = 'കരട്';
+$labels['setvariable'] = 'വേരിയബിൾ സ്ഥിരപ്പെടുത്തുക';
+$labels['setvarname'] = 'വേരിയബിളിന്റെ പേര്';
+$labels['setvarvalue'] = 'വേരിയബിളിന്റെ മൂല്യം';
$labels['filtercreate'] = 'അരിപ്പ ഉണ്ടാക്കുക';
$labels['usedata'] = 'ഈ വിവരങ്ങള്‍ അരിപ്പയില്‍ ഉപയോഗിക്കുക:';
$labels['nextstep'] = 'അടുത്ത പടി';
diff --git a/plugins/managesieve/localization/nn_NO.inc b/plugins/managesieve/localization/nn_NO.inc
index 4ef35dbb4..2dc68e6c9 100644
--- a/plugins/managesieve/localization/nn_NO.inc
+++ b/plugins/managesieve/localization/nn_NO.inc
@@ -100,10 +100,6 @@ $labels['varlowerfirst'] = 'med liten forbokstav';
$labels['varupperfirst'] = 'med stor forbokstav';
$labels['varlength'] = 'lengde';
$labels['notify'] = 'Send varsel';
-$labels['notifyaddress'] = 'Til e-postadresse:';
-$labels['notifybody'] = 'Varseltekst:';
-$labels['notifysubject'] = 'Varselemne:';
-$labels['notifyfrom'] = 'Varselavsendar:';
$labels['notifyimportance'] = 'Betyding:';
$labels['notifyimportancelow'] = 'låg';
$labels['notifyimportancenormal'] = 'normal';
diff --git a/plugins/managesieve/localization/ru_RU.inc b/plugins/managesieve/localization/ru_RU.inc
index eccce9470..ea0ebd263 100644
--- a/plugins/managesieve/localization/ru_RU.inc
+++ b/plugins/managesieve/localization/ru_RU.inc
@@ -57,10 +57,10 @@ $labels['recipient'] = 'Получатель';
$labels['vacationaddr'] = 'Мой дополнительный адрес(а):';
$labels['vacationdays'] = 'Как часто отправлять сообщения (в днях):';
$labels['vacationinterval'] = 'Как часто отправлять сообщения:';
-$labels['days'] = 'дней';
-$labels['seconds'] = 'секунд';
$labels['vacationreason'] = 'Текст сообщения (причина отсутствия):';
$labels['vacationsubject'] = 'Тема сообщения:';
+$labels['days'] = 'дней';
+$labels['seconds'] = 'секунд';
$labels['rulestop'] = 'Закончить выполнение';
$labels['enable'] = 'Включить/Выключить';
$labels['filterset'] = 'Набор фильтров';
@@ -108,14 +108,17 @@ $labels['varupperfirst'] = 'первый символ в верхнем реги
$labels['varquotewildcard'] = 'символ кавычек';
$labels['varlength'] = 'длина';
$labels['notify'] = 'Отправить уведомление';
-$labels['notifyaddress'] = 'На адрес электронной почты:';
-$labels['notifybody'] = 'Текст уведомления:';
-$labels['notifysubject'] = 'Тема уведомления:';
-$labels['notifyfrom'] = 'Отправитель уведомления:';
+$labels['notifytarget'] = 'Объект уведомления:';
+$labels['notifymessage'] = 'Сообщение уведомления (не обязательно):';
+$labels['notifyoptions'] = 'Параметры уведомления (не обязательно):';
+$labels['notifyfrom'] = 'Отправитель уведомления (не обязательно):';
$labels['notifyimportance'] = 'Важность:';
$labels['notifyimportancelow'] = 'низкая';
$labels['notifyimportancenormal'] = 'нормальная';
$labels['notifyimportancehigh'] = 'высокая';
+$labels['notifymethodmailto'] = 'Email';
+$labels['notifymethodtel'] = 'Телефон';
+$labels['notifymethodsms'] = 'SMS';
$labels['filtercreate'] = 'Создать фильтр';
$labels['usedata'] = 'Использовать следующие данные в фильтре:';
$labels['nextstep'] = 'Далее';
@@ -157,6 +160,33 @@ $labels['asciicasemap'] = 'Регистронезависимый (ascii-casemap
$labels['asciinumeric'] = 'Числовой (ascii-numeric)';
$labels['index'] = 'индекс:';
$labels['indexlast'] = 'наоборот';
+$labels['vacation'] = 'Отпуск';
+$labels['vacation.reply'] = 'Ответное сообщение';
+$labels['vacation.advanced'] = 'Дополнительные настройки';
+$labels['vacation.subject'] = 'Тема';
+$labels['vacation.body'] = 'Тело письма';
+$labels['vacation.dates'] = 'Время отпуска';
+$labels['vacation.from'] = 'От:';
+$labels['vacation.to'] = 'Кому:';
+$labels['vacation.status'] = 'Состояние';
+$labels['vacation.on'] = 'Вкл.';
+$labels['vacation.off'] = 'Выкл.';
+$labels['vacation.addresses'] = 'Мои дополнительные адреса';
+$labels['vacation.interval'] = 'Интервал ответа';
+$labels['vacation.after'] = 'Поместить правило отпуска после';
+$labels['vacation.saving'] = 'Сохранение данных...';
+$labels['vacation.action'] = 'Действия с входящим сообщением';
+$labels['vacation.keep'] = 'Оставить';
+$labels['vacation.discard'] = 'Отменить';
+$labels['vacation.redirect'] = 'Перенаправить на';
+$labels['vacation.copy'] = 'Отправить копию на';
+$labels['arialabelfiltersetactions'] = 'Действия набора фильтров';
+$labels['arialabelfilteractions'] = 'Действия фильтра';
+$labels['arialabelfilterform'] = 'Свойства фильтра';
+$labels['ariasummaryfilterslist'] = 'Список фильтров';
+$labels['ariasummaryfiltersetslist'] = 'Список набора фильтров';
+$labels['filterstitle'] = 'Редактировать фильтры для входящей почты';
+$labels['vacationtitle'] = 'Изменить правило "Не в офисе"';
$messages['filterunknownerror'] = 'Неизвестная ошибка сервера.';
$messages['filterconnerror'] = 'Невозможно подключиться к серверу.';
$messages['filterdeleteerror'] = 'Невозможно удалить фильтр. Ошибка сервера.';
@@ -189,4 +219,7 @@ $messages['namereserved'] = 'Зарезервированное имя.';
$messages['setexist'] = 'Набор уже существует.';
$messages['nodata'] = 'Нужно выбрать хотя бы одну позицию!';
$messages['invaliddateformat'] = 'Неверная дата или формат части даты';
+$messages['saveerror'] = 'Невозможно сохранить данные. Ошибка сервера.';
+$messages['vacationsaved'] = 'Данные об отпуске успешно сохранены.';
+$messages['emptyvacationbody'] = 'Сообщение о причине отсутствия не может быть пустым!';
?>
diff --git a/plugins/managesieve/localization/zh_TW.inc b/plugins/managesieve/localization/zh_TW.inc
index 72eb3393b..b21310cea 100644
--- a/plugins/managesieve/localization/zh_TW.inc
+++ b/plugins/managesieve/localization/zh_TW.inc
@@ -102,10 +102,6 @@ $labels['varupperfirst'] = '第一個字高於';
$labels['varquotewildcard'] = '跳脫字元';
$labels['varlength'] = '長度';
$labels['notify'] = '寄送通知';
-$labels['notifyaddress'] = '寄到電子郵件位址:';
-$labels['notifybody'] = '通知內容:';
-$labels['notifysubject'] = '通知主旨:';
-$labels['notifyfrom'] = '通知寄件者:';
$labels['notifyimportance'] = '重要性:';
$labels['notifyimportancelow'] = '低';
$labels['notifyimportancenormal'] = '一般';
diff --git a/plugins/managesieve/managesieve.js b/plugins/managesieve/managesieve.js
index 27ab38a77..cd0d5f3ca 100644
--- a/plugins/managesieve/managesieve.js
+++ b/plugins/managesieve/managesieve.js
@@ -48,80 +48,53 @@ if (window.rcmail) {
if (rcmail.env.action.startsWith('plugin.managesieve')) {
if (rcmail.gui_objects.sieveform) {
rcmail.enable_command('plugin.managesieve-save', true);
-
- // small resize for header element
- $('select[name="_header[]"]', rcmail.gui_objects.sieveform).each(function() {
- if (this.value == '...') this.style.width = '40px';
- });
-
- // resize dialog window
- if (rcmail.env.action == 'plugin.managesieve' && rcmail.env.task == 'mail') {
- parent.rcmail.managesieve_dialog_resize(rcmail.gui_objects.sieveform);
- }
-
- $('input[type="text"]:first', rcmail.gui_objects.sieveform).focus();
-
- // initialize smart list inputs
- $('textarea[data-type="list"]', rcmail.gui_objects.sieveform).each(function() {
- smart_field_init(this);
- });
-
- // enable date pickers on date fields
- if ($.datepicker && rcmail.env.date_format) {
- $.datepicker.setDefaults({
- dateFormat: rcmail.env.date_format,
- changeMonth: true,
- showOtherMonths: true,
- selectOtherMonths: true,
- onSelect: function(dateText) { $(this).focus().val(dateText) }
- });
- $('input.datepicker').datepicker();
- }
+ sieve_form_init();
}
else {
rcmail.enable_command('plugin.managesieve-add', 'plugin.managesieve-setadd', !rcmail.env.sieveconnerror);
}
- var i, p = rcmail, setcnt, set = rcmail.env.currentset;
+ var setcnt, set = rcmail.env.currentset;
if (rcmail.gui_objects.filterslist) {
rcmail.filters_list = new rcube_list_widget(rcmail.gui_objects.filterslist,
- {multiselect:false, draggable:true, keyboard:false});
+ {multiselect:false, draggable:true, keyboard:true});
rcmail.filters_list
- .addEventListener('select', function(e) { p.managesieve_select(e); })
- .addEventListener('dragstart', function(e) { p.managesieve_dragstart(e); })
- .addEventListener('dragend', function(e) { p.managesieve_dragend(e); })
+ .addEventListener('select', function(e) { rcmail.managesieve_select(e); })
+ .addEventListener('dragstart', function(e) { rcmail.managesieve_dragstart(e); })
+ .addEventListener('dragend', function(e) { rcmail.managesieve_dragend(e); })
.addEventListener('initrow', function(row) {
- row.obj.onmouseover = function() { p.managesieve_focus_filter(row); };
- row.obj.onmouseout = function() { p.managesieve_unfocus_filter(row); };
+ row.obj.onmouseover = function() { rcmail.managesieve_focus_filter(row); };
+ row.obj.onmouseout = function() { rcmail.managesieve_unfocus_filter(row); };
})
- .init().focus();
+ .init();
}
if (rcmail.gui_objects.filtersetslist) {
rcmail.filtersets_list = new rcube_list_widget(rcmail.gui_objects.filtersetslist,
- {multiselect:false, draggable:false, keyboard:false});
+ {multiselect:false, draggable:false, keyboard:true});
- rcmail.filtersets_list
- .addEventListener('select', function(e) { p.managesieve_setselect(e); })
- .init().focus();
+ rcmail.filtersets_list.init().focus();
if (set != null) {
set = rcmail.managesieve_setid(set);
- rcmail.filtersets_list.shift_start = set;
- rcmail.filtersets_list.highlight_row(set, false);
+ rcmail.filtersets_list.select(set);
}
+ // attach select event after initial record was selected
+ rcmail.filtersets_list.addEventListener('select', function(e) { rcmail.managesieve_setselect(e); });
+
setcnt = rcmail.filtersets_list.rowcount;
rcmail.enable_command('plugin.managesieve-set', true);
rcmail.enable_command('plugin.managesieve-setact', 'plugin.managesieve-setget', setcnt);
rcmail.enable_command('plugin.managesieve-setdel', setcnt > 1);
// Fix dragging filters over sets list
- $('tr', rcmail.gui_objects.filtersetslist).each(function (i, e) { p.managesieve_fixdragend(e); });
+ $('tr', rcmail.gui_objects.filtersetslist).each(function (i, e) { rcmail.managesieve_fixdragend(e); });
}
}
+
if (rcmail.gui_objects.sieveform && rcmail.env.rule_disabled)
$('#disabled').attr('checked', true);
});
@@ -736,6 +709,13 @@ function action_type_select(id)
}
};
+function vacation_action_select()
+{
+ var selected = $('#vacation_action').val();
+
+ $('#action_target_span')[selected == 'discard' || selected == 'keep' ? 'hide' : 'show']();
+};
+
// Inititalizes smart list input
function smart_field_init(field)
{
@@ -778,6 +758,7 @@ function smart_field_row(value, name, idx, size)
input = $('input', elem).attr(attrs).keydown(function(e) {
var input = $(this);
+
// element creation event (on Enter)
if (e.which == 13) {
var name = input.attr('name').replace(/\[\]$/, ''),
@@ -787,6 +768,21 @@ function smart_field_row(value, name, idx, size)
input.parent().after(elem);
$('input', elem).focus();
}
+ // backspace or delete: remove input, focus previous one
+ else if ((e.which == 8 || e.which == 46) && input.val() == '') {
+
+ var parent = input.parent(), siblings = parent.parent().children();
+
+ if (siblings.length > 1) {
+ if (parent.prev().length)
+ parent.prev().children('input').focus();
+ else
+ parent.next().children('input').focus();
+
+ parent.remove();
+ return false;
+ }
+ }
});
// element deletion event
@@ -833,6 +829,101 @@ rcube_webmail.prototype.managesieve_tip_register = function(tips)
}
};
+// format time string
+function sieve_formattime(hour, minutes)
+{
+ var i, c, h, time = '', format = rcmail.env.time_format || 'H:i';
+
+ for (i=0; i<format.length; i++) {
+ c = format.charAt(i);
+ switch (c) {
+ case 'a': time += hour > 12 ? 'am' : 'pm'; break;
+ case 'A': time += hour > 12 ? 'AM' : 'PM'; break;
+ case 'g':
+ case 'h':
+ h = hour == 0 ? 12 : hour > 12 ? hour - 12 : hour;
+ time += (c == 'h' && hour < 10 ? '0' : '') + hour;
+ break;
+ case 'G': time += hour; break;
+ case 'H': time += (hour < 10 ? '0' : '') + hour; break;
+ case 'i': time += (minutes < 10 ? '0' : '') + minutes; break;
+ case 's': time += '00';
+ default: time += c;
+ }
+ }
+
+ return time;
+}
+
+function sieve_form_init()
+{
+ // small resize for header element
+ $('select[name="_header[]"]', rcmail.gui_objects.sieveform).each(function() {
+ if (this.value == '...') this.style.width = '40px';
+ });
+
+ // resize dialog window
+ if (rcmail.env.action == 'plugin.managesieve' && rcmail.env.task == 'mail') {
+ parent.rcmail.managesieve_dialog_resize(rcmail.gui_objects.sieveform);
+ }
+
+ $('input[type="text"]:first', rcmail.gui_objects.sieveform).focus();
+
+ // initialize smart list inputs
+ $('textarea[data-type="list"]', rcmail.gui_objects.sieveform).each(function() {
+ smart_field_init(this);
+ });
+
+ // enable date pickers on date fields
+ if ($.datepicker && rcmail.env.date_format) {
+ $.datepicker.setDefaults({
+ dateFormat: rcmail.env.date_format,
+ changeMonth: true,
+ showOtherMonths: true,
+ selectOtherMonths: true,
+ onSelect: function(dateText) { $(this).focus().val(dateText); }
+ });
+ $('input.datepicker').datepicker();
+ }
+
+ // configure drop-down menu on time input fields based on jquery UI autocomplete
+ $('#vacation_timefrom, #vacation_timeto')
+ .attr('autocomplete', "off")
+ .autocomplete({
+ delay: 100,
+ minLength: 1,
+ source: function(p, callback) {
+ var h, result = [];
+ for (h = 0; h < 24; h++)
+ result.push(sieve_formattime(h, 0));
+ result.push(sieve_formattime(23, 59));
+
+ return callback(result);
+ },
+ open: function(event, ui) {
+ // scroll to current time
+ var $this = $(this), val = $this.val(),
+ widget = $this.autocomplete('widget').css('width', '10em'),
+ menu = $this.data('ui-autocomplete').menu;
+
+ if (val && val.length)
+ widget.children().each(function() {
+ var li = $(this);
+ if (li.text().indexOf(val) == 0)
+ menu._scrollIntoView(li);
+ });
+ },
+ select: function(event, ui) {
+ $(this).val(ui.item.value);
+ return false;
+ }
+ })
+ .click(function() { // show drop-down upon clicks
+ $(this).autocomplete('search', $(this).val() || ' ');
+ })
+}
+
+
/*********************************************************/
/********* Mail UI methods *********/
/*********************************************************/
diff --git a/plugins/managesieve/managesieve.php b/plugins/managesieve/managesieve.php
index 6adba4e2d..478f26b00 100644
--- a/plugins/managesieve/managesieve.php
+++ b/plugins/managesieve/managesieve.php
@@ -37,7 +37,7 @@ class managesieve extends rcube_plugin
function init()
{
- $this->rc = rcmail::get_instance();
+ $this->rc = rcube::get_instance();
// register actions
$this->register_action('plugin.managesieve', array($this, 'managesieve_actions'));
@@ -54,7 +54,9 @@ class managesieve extends rcube_plugin
$this->add_hook('message_headers_output', array($this, 'mail_headers'));
// inject Create Filter popup stuff
- if (empty($this->rc->action) || $this->rc->action == 'show') {
+ if (empty($this->rc->action) || $this->rc->action == 'show'
+ || strpos($this->rc->action, 'plugin.managesieve') === 0
+ ) {
$this->mail_task_handler();
}
}
@@ -72,13 +74,15 @@ class managesieve extends rcube_plugin
// load localization
$this->add_texts('localization/');
- if ($this->rc->task == 'mail' || strpos($this->rc->action, 'plugin.managesieve') === 0) {
+ $sieve_action = strpos($this->rc->action, 'plugin.managesieve') === 0;
+
+ if ($this->rc->task == 'mail' || $sieve_action) {
$this->include_script('managesieve.js');
}
// include styles
$skin_path = $this->local_skin_path();
- if ($this->rc->task == 'settings') {
+ if ($this->rc->task == 'settings' || $sieve_action) {
if (is_file($this->home . "/$skin_path/managesieve.css")) {
$this->include_stylesheet("$skin_path/managesieve.css");
}
@@ -89,7 +93,6 @@ class managesieve extends rcube_plugin
}
}
-
$this->ui_initialized = true;
}
@@ -109,6 +112,7 @@ class managesieve extends rcube_plugin
'class' => 'filter',
'label' => 'filters',
'domain' => 'managesieve',
+ 'title' => 'filterstitle',
);
}
@@ -119,6 +123,7 @@ class managesieve extends rcube_plugin
'class' => 'vacation',
'label' => 'vacation',
'domain' => 'managesieve',
+ 'title' => 'vacationtitle',
);
}
@@ -225,7 +230,7 @@ class managesieve extends rcube_plugin
/**
* Initializes engine object
*/
- private function get_engine($type = null)
+ public function get_engine($type = null)
{
if (!$this->engine) {
$this->load_config();
diff --git a/plugins/managesieve/skins/classic/templates/vacation.html b/plugins/managesieve/skins/classic/templates/vacation.html
index bf94edb20..26e408eef 100644
--- a/plugins/managesieve/skins/classic/templates/vacation.html
+++ b/plugins/managesieve/skins/classic/templates/vacation.html
@@ -17,7 +17,7 @@
<roundcube:object name="vacationform" id="vacationform" style="margin: 10px 10px 0 10px" />
<div id="formfooter" style="padding: 0 10px">
<div class="footerleft">
- <roundcube:button command="save" type="input" class="button mainaction" label="save" />
+ <roundcube:button command="plugin.managesieve-save" type="input" class="button mainaction" label="save" />
</div>
</div>
</div>
diff --git a/plugins/managesieve/skins/larry/managesieve.css b/plugins/managesieve/skins/larry/managesieve.css
index 1f954caf2..61d1c89a8 100644
--- a/plugins/managesieve/skins/larry/managesieve.css
+++ b/plugins/managesieve/skins/larry/managesieve.css
@@ -306,6 +306,7 @@ a.button.disabled
font-size: 11px;
padding: 1px;
vertical-align: middle;
+ max-width: 280px;
}
html.mozilla #filter-form select
@@ -334,9 +335,7 @@ fieldset
border: 1px solid #B2B2B2;
border-radius: 4px;
box-shadow: inset 0 0 2px 1px rgba(0,0,0, 0.1);
- -moz-box-shadow: inset 0 0 2px 1px rgba(0,0,0, 0.1);
-webkit-box-shadow: inset 0 0 2px 1px rgba(0,0,0, 0.1);
- -o-box-shadow: inset 0 0 2px 1px rgba(0,0,0, 0.1);
margin: 0;
padding: 2px;
display: inline-block;
@@ -417,11 +416,13 @@ body.iframe.mail #filter-form
/* vacation form */
-#settings-sections span.vacation a {
- background: url(images/vacation_icons.png) no-repeat 7px 1px;
+#settings-sections .vacation a {
+ background-image: url(images/vacation_icons.png);
+ background-repeat: no-repeat;
+ background-position: 7px 1px;
}
-#settings-sections span.vacation.selected a {
+#settings-sections .vacation.selected a {
background-position: 7px -23px;
}
@@ -452,3 +453,7 @@ body.iframe.mail #filter-form
border: 0;
box-shadow: none;
}
+
+#vacationform td.vacation {
+ white-space: nowrap;
+}
diff --git a/plugins/managesieve/skins/larry/templates/managesieve.html b/plugins/managesieve/skins/larry/templates/managesieve.html
index 471bbf4d2..494af6ae2 100644
--- a/plugins/managesieve/skins/larry/templates/managesieve.html
+++ b/plugins/managesieve/skins/larry/templates/managesieve.html
@@ -4,39 +4,42 @@
<title><roundcube:object name="pagetitle" /></title>
<roundcube:include file="/includes/links.html" />
</head>
-<body class="noscroll">
+<roundcube:if condition="env:extwin" /><body class="noscroll extwin"><roundcube:else /><body class="noscroll"><roundcube:endif />
<roundcube:include file="/includes/header.html" />
+<h1 class="voice"><roundcube:label name="settings" /> : <roundcube:label name="managesieve.filters" /></h1>
+
<div id="mainscreen" class="offset">
<roundcube:include file="/includes/settingstabs.html" />
-<div id="settings-right">
-<div id="filtersetslistbox" class="uibox listbox">
-<h2 class="boxtitle"><roundcube:label name="managesieve.filtersets" /></h2>
+<div id="settings-right" role="main">
+<div id="filtersetslistbox" class="uibox listbox" aria-labelledby="aria-label-filtersets">
+<h2 class="boxtitle" id="aria-label-filtersets"><roundcube:label name="managesieve.filtersets" /></h2>
<div class="scroller withfooter">
- <roundcube:object name="filtersetslist" id="filtersetslist" class="listing" cellspacing="0" summary="Filters list" type="list" noheader="true" />
+ <roundcube:object name="filtersetslist" id="filtersetslist" class="listing" summary="managesieve.ariasummaryfiltersetslist" type="list" noheader="true" role="listbox" />
</div>
<div class="boxfooter">
- <roundcube:button command="plugin.managesieve-setadd" type="link" title="managesieve.filtersetadd" class="listbutton add disabled" classAct="listbutton add" innerClass="inner" content="+" /><roundcube:button name="filtersetmenulink" id="filtersetmenulink" type="link" title="moreactions" class="listbutton groupactions" onclick="UI.show_popup('filtersetmenu');return false" innerClass="inner" content="&#9881;" />
+ <roundcube:button command="plugin.managesieve-setadd" type="link" title="managesieve.filtersetadd" class="listbutton add disabled" classAct="listbutton add" innerClass="inner" content="+" /><roundcube:button name="filtersetmenulink" id="filtersetmenulink" type="link" title="moreactions" class="listbutton groupactions" onclick="return UI.toggle_popup('filtersetmenu', event)" innerClass="inner" content="&#9881;" aria-haspopup="true" aria-expanded="false" aria-owns="filtersetmenu-menu" />
</div>
</div>
<div id="filtersscreen">
-<div id="filterslistbox" class="uibox listbox">
-<h2 class="boxtitle"><roundcube:label name="managesieve.filters" /></h2>
+<div id="filterslistbox" class="uibox listbox" aria-labelledby="aria-label-filters">
+<h2 class="boxtitle" id="aria-label-filters"><roundcube:label name="managesieve.filters" /></h2>
<div class="scroller withfooter">
- <roundcube:object name="filterslist" id="filterslist" class="listing" cellspacing="0" summary="Filters list" noheader="true" />
+ <roundcube:object name="filterslist" id="filterslist" class="listing" summary="managesieve.ariasummaryfilterslist" noheader="true" role="listbox" />
</div>
<div class="boxfooter">
- <roundcube:button command="plugin.managesieve-add" type="link" title="managesieve.filteradd" class="listbutton add disabled" classAct="listbutton add" innerClass="inner" content="+" /><roundcube:button name="filtermenulink" id="filtermenulink" type="link" title="moreactions" class="listbutton groupactions" onclick="UI.show_popup('filtermenu');return false" innerClass="inner" content="&#9881;" />
+ <roundcube:button command="plugin.managesieve-add" type="link" title="managesieve.filteradd" class="listbutton add disabled" classAct="listbutton add" innerClass="inner" content="+" /><roundcube:button name="filtermenulink" id="filtermenulink" type="link" title="moreactions" class="listbutton groupactions" onclick="return UI.toggle_popup('filtermenu', event)" innerClass="inner" content="&#9881;" aria-haspopup="true" aria-expanded="false" aria-owns="filtermenu-menu" />
</div>
</div>
<div id="filter-box" class="uibox contentbox">
- <div class="iframebox">
- <roundcube:object name="filterframe" id="filter-frame" style="width:100%; height:100%" frameborder="0" src="/watermark.html" />
+ <div class="iframebox" role="complementary" aria-labelledby="aria-label-filterform">
+ <h2 id="aria-label-filterframe" class="voice"><roundcube:label name="managesieve.arialabelfilterform" /></h2>
+ <roundcube:object name="filterframe" id="filter-frame" style="width:100%; height:100%" frameborder="0" src="/watermark.html" title="managesieve.arialabelfilterform" />
</div>
</div>
@@ -44,19 +47,21 @@
</div>
</div>
-<div id="filtersetmenu" class="popupmenu">
- <ul class="toolbarmenu">
- <li><roundcube:button command="plugin.managesieve-setact" label="managesieve.enable" classAct="active" /></li>
- <li><roundcube:button command="plugin.managesieve-setdel" label="delete" classAct="active" /></li>
- <li class="separator_above"><roundcube:button command="plugin.managesieve-setget" label="download" classAct="active" /></li>
+<div id="filtersetmenu" class="popupmenu" aria-hidden="true">
+ <h3 id="aria-label-setactions" class="voice"><roundcube:label name="managesieve.arialabelfiltersetactions" /></h3>
+ <ul class="toolbarmenu" id="filtersetmenu-menu" role="menu" aria-labelledby="aria-label-setactions">
+ <li role="menuitem"><roundcube:button command="plugin.managesieve-setact" label="managesieve.enable" classAct="active" /></li>
+ <li role="menuitem"><roundcube:button command="plugin.managesieve-setdel" label="delete" classAct="active" /></li>
+ <li role="menuitem" class="separator_above"><roundcube:button command="plugin.managesieve-setget" label="download" classAct="active" /></li>
<roundcube:container name="filtersetoptions" id="filtersetmenu" />
</ul>
</div>
-<div id="filtermenu" class="popupmenu">
- <ul class="toolbarmenu">
- <li><roundcube:button command="plugin.managesieve-act" label="managesieve.enable" classAct="active" /></li>
- <li><roundcube:button command="plugin.managesieve-del" label="delete" classAct="active" /></li>
+<div id="filtermenu" class="popupmenu" aria-hidden="true">
+ <h3 id="aria-label-filteractions" class="voice"><roundcube:label name="managesieve.arialabelfilteractions" /></h3>
+ <ul class="toolbarmenu" id="filtermenu-menu" role="menu" aria-labelledby="aria-label-filteractions">
+ <li role="menuitem"><roundcube:button command="plugin.managesieve-act" label="managesieve.enable" classAct="active" /></li>
+ <li role="menuitem"><roundcube:button command="plugin.managesieve-del" label="delete" classAct="active" /></li>
<roundcube:container name="filteroptions" id="filtermenu" />
</ul>
</div>
diff --git a/plugins/managesieve/skins/larry/templates/vacation.html b/plugins/managesieve/skins/larry/templates/vacation.html
index c91eb87c8..26dd2027b 100644
--- a/plugins/managesieve/skins/larry/templates/vacation.html
+++ b/plugins/managesieve/skins/larry/templates/vacation.html
@@ -10,11 +10,13 @@
<div id="mainscreen" class="offset">
+<h1 class="voice"><roundcube:label name="settings" /> : <roundcube:label name="managesieve.vacation" /></h1>
+
<roundcube:include file="/includes/settingstabs.html" />
-<div id="managesieve-vacation" class="uibox contentbox">
+<div id="managesieve-vacation" class="uibox contentbox" role="main" aria-labelledby="aria-label-vacationform">
<div>
- <h2 class="boxtitle"><roundcube:label name="managesieve.vacation" /></h2>
+ <h2 class="boxtitle" id="aria-label-vacationform"><roundcube:label name="managesieve.vacation" /></h2>
<roundcube:object name="vacationform" id="vacationform" class="propform boxcontent tabbed" />
</div>
<div class="footerleft formbuttons">
diff --git a/plugins/managesieve/tests/Vacation.php b/plugins/managesieve/tests/Vacation.php
new file mode 100644
index 000000000..e34eb7aa2
--- /dev/null
+++ b/plugins/managesieve/tests/Vacation.php
@@ -0,0 +1,66 @@
+<?php
+
+class Managesieve_Vacation extends PHPUnit_Framework_TestCase
+{
+
+ function setUp()
+ {
+ include_once dirname(__FILE__) . '/../lib/Roundcube/rcube_sieve_engine.php';
+ include_once dirname(__FILE__) . '/../lib/Roundcube/rcube_sieve_vacation.php';
+ }
+
+ /**
+ * Plugin object construction test
+ */
+ function test_constructor()
+ {
+ $vacation = new rcube_sieve_vacation(true);
+
+ $this->assertInstanceOf('rcube_sieve_vacation', $vacation);
+ }
+
+ function test_build_regexp_tests()
+ {
+ $tests = rcube_sieve_vacation::build_regexp_tests('2014-02-20', '2014-03-05', $error);
+
+ $this->assertCount(2, $tests);
+ $this->assertSame('header', $tests[0]['test']);
+ $this->assertSame('regex', $tests[0]['type']);
+ $this->assertSame('received', $tests[0]['arg1']);
+ $this->assertSame('(20|21|22|23|24|25|26|27|28) Feb 2014', $tests[0]['arg2']);
+ $this->assertSame('header', $tests[1]['test']);
+ $this->assertSame('regex', $tests[1]['type']);
+ $this->assertSame('received', $tests[1]['arg1']);
+ $this->assertSame('([ 0]1|[ 0]2|[ 0]3|[ 0]4|[ 0]5) Mar 2014', $tests[1]['arg2']);
+
+ $tests = rcube_sieve_vacation::build_regexp_tests('2014-02-20', '2014-01-05', $error);
+
+ $this->assertSame(null, $tests);
+ $this->assertSame('managesieve.invaliddateformat', $error);
+ }
+
+ function test_parse_regexp_tests()
+ {
+ $tests = array(
+ array(
+ 'test' => 'header',
+ 'type' => 'regex',
+ 'arg1' => 'received',
+ 'arg2' => '(20|21|22|23|24|25|26|27|28) Feb 2014',
+ ),
+ array(
+ 'test' => 'header',
+ 'type' => 'regex',
+ 'arg1' => 'received',
+ 'arg2' => '([ 0]1|[ 0]2|[ 0]3|[ 0]4|[ 0]5) Mar 2014',
+ )
+ );
+
+ $result = rcube_sieve_vacation::parse_regexp_tests($tests);
+
+ $this->assertCount(2, $result);
+ $this->assertSame('20 Feb 2014', $result['from']);
+ $this->assertSame('05 Mar 2014', $result['to']);
+ }
+}
+
diff --git a/plugins/markasjunk/localization/ar_SA.inc b/plugins/markasjunk/localization/ar_SA.inc
new file mode 100644
index 000000000..f6c405ea2
--- /dev/null
+++ b/plugins/markasjunk/localization/ar_SA.inc
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | plugins/markasjunk/localization/<lang>.inc |
+ | |
+ | Localization file of the Roundcube Webmail Mark-As-Junk plugin |
+ | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | |
+ | Licensed under the GNU General Public License version 3 or |
+ | any later version with exceptions for skins & plugins. |
+ | See the README file for a full license statement. |
+ | |
+ +-----------------------------------------------------------------------+
+
+ For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-markasjunk/
+*/
+$labels['buttontext'] = 'غير المرغوب';
+$labels['buttontitle'] = 'وضع علامة كـ غير المرغوب فيه';
+$labels['reportedasjunk'] = 'تمت الافادة كـ غير مرغوب فية بنجاح';
+?> \ No newline at end of file
diff --git a/plugins/markasjunk/localization/ast.inc b/plugins/markasjunk/localization/ast.inc
new file mode 100644
index 000000000..b55fa363a
--- /dev/null
+++ b/plugins/markasjunk/localization/ast.inc
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | plugins/markasjunk/localization/<lang>.inc |
+ | |
+ | Localization file of the Roundcube Webmail Mark-As-Junk plugin |
+ | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | |
+ | Licensed under the GNU General Public License version 3 or |
+ | any later version with exceptions for skins & plugins. |
+ | See the README file for a full license statement. |
+ | |
+ +-----------------------------------------------------------------------+
+
+ For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-markasjunk/
+*/
+$labels['buttontext'] = 'Puxarra';
+$labels['buttontitle'] = 'Conseñar como puxarra';
+$labels['reportedasjunk'] = 'Reportáu con ésitu como Puxarra';
+?> \ No newline at end of file
diff --git a/plugins/markasjunk/localization/ko_KR.inc b/plugins/markasjunk/localization/ko_KR.inc
index 209f530a1..485af3187 100644
--- a/plugins/markasjunk/localization/ko_KR.inc
+++ b/plugins/markasjunk/localization/ko_KR.inc
@@ -15,7 +15,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-markasjunk/
*/
-$labels['buttontext'] = '정크메일';
-$labels['buttontitle'] = '정크메일로 표시';
-$labels['reportedasjunk'] = '성공적으로, 정크메일이라 보고 됨';
+$labels['buttontext'] = '스팸';
+$labels['buttontitle'] = '스팸으로 표시';
+$labels['reportedasjunk'] = '스팸으로 성공적으로 보고함';
?> \ No newline at end of file
diff --git a/plugins/markasjunk/localization/ml_IN.inc b/plugins/markasjunk/localization/ml_IN.inc
index aaa736b98..d08a04363 100644
--- a/plugins/markasjunk/localization/ml_IN.inc
+++ b/plugins/markasjunk/localization/ml_IN.inc
@@ -15,6 +15,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-markasjunk/
*/
-$labels['buttontitle'] = 'സ്പാം ആയി അടയാളപ്പെടുത്തുക';
-$labels['reportedasjunk'] = 'സ്പാം ആയി അടയാളപ്പെടുത്തി';
+$labels['buttontext'] = 'ചവർ';
+$labels['buttontitle'] = 'ചവർ ആയി അടയാളപ്പെടുത്തുക';
+$labels['reportedasjunk'] = 'ചവർ ആയി അടയാളപ്പെടുത്തി';
?> \ No newline at end of file
diff --git a/plugins/new_user_dialog/localization/ast.inc b/plugins/new_user_dialog/localization/ast.inc
index 0ec826dee..11868bcbb 100644
--- a/plugins/new_user_dialog/localization/ast.inc
+++ b/plugins/new_user_dialog/localization/ast.inc
@@ -15,6 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-new_user_dialog/
*/
-$labels['identitydialogtitle'] = 'Por favor, completa los tos datos personales';
-$labels['identitydialoghint'] = 'Esti diálogu namái va apaecer la primer vegada que te coneutes al corréu.';
+$labels['identitydialogtitle'] = 'Por favor, completa la to identidá de remitente';
+$labels['identitydialoghint'] = 'Esta caxa namái apaecerá una vegada nel primer aniciu de sesión.';
?> \ No newline at end of file
diff --git a/plugins/newmail_notifier/localization/ast.inc b/plugins/newmail_notifier/localization/ast.inc
index 3c5c192e0..5121d2821 100644
--- a/plugins/newmail_notifier/localization/ast.inc
+++ b/plugins/newmail_notifier/localization/ast.inc
@@ -15,14 +15,14 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-newmail_notifier/
*/
-$labels['basic'] = 'Amosar notificaciones del navegador cuando aporte un mensaxe nuevu';
-$labels['desktop'] = 'Amosar notificaciones del escritoriu cuando aporte un mensaxe nuevu';
-$labels['sound'] = 'Reproducir soníu cuando aporte un mensaxe nuevu';
+$labels['basic'] = 'Amosar notificaciones del restolador nun mensaxe nuevu';
+$labels['desktop'] = 'Amosar notificaciones d\'escritoriu nun mensaxe nuevu';
+$labels['sound'] = 'Reproducir el soníu nun mensaxe nuevu';
$labels['test'] = 'Prueba';
$labels['title'] = '¡Mensaxe nuevu!';
$labels['body'] = 'Recibisti un mensaxe nuevu';
-$labels['testbody'] = 'Esta ye una notificación de pruebes';
-$labels['desktopdisabled'] = 'Les notificaciones d\'escritoriu tán deshabilitaes nel to navegador.';
-$labels['desktopunsupported'] = 'El to navegador nun sofita notificaciones d\'escritoriu.';
+$labels['testbody'] = 'Esta ye una notificación de prueba';
+$labels['desktopdisabled'] = 'Les notificaciones d\'escritoriu tán deshabilitaes nel to restolador.';
+$labels['desktopunsupported'] = 'El to restolador nun sofita notificaciones d\'escritoriu.';
$labels['desktoptimeout'] = 'Zarrar notificación d\'escritoriu';
?>
diff --git a/plugins/newmail_notifier/localization/es_419.inc b/plugins/newmail_notifier/localization/es_419.inc
new file mode 100644
index 000000000..b08387a0d
--- /dev/null
+++ b/plugins/newmail_notifier/localization/es_419.inc
@@ -0,0 +1,28 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | plugins/newmail_notifier/localization/<lang>.inc |
+ | |
+ | Localization file of the Roundcube Webmail New Mail Notifier plugin |
+ | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | |
+ | Licensed under the GNU General Public License version 3 or |
+ | any later version with exceptions for skins & plugins. |
+ | See the README file for a full license statement. |
+ | |
+ +-----------------------------------------------------------------------+
+
+ For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-newmail_notifier/
+*/
+$labels['basic'] = 'Mostrar notificaciones del navegador en nuevos mensajes';
+$labels['desktop'] = 'Mostrar notificaciones de escritorio en nuevos mensajes';
+$labels['sound'] = 'Ejecutar sonido en nuevos mensajes';
+$labels['test'] = 'Probar';
+$labels['title'] = '¡Nuevo correo electrónico!';
+$labels['body'] = 'Has recibido un nuevo correo electrónico.';
+$labels['testbody'] = 'Esta es una notificación de prueba.';
+$labels['desktopdisabled'] = 'Notificaciones de escritorio está deshabilitado en tu navegador.';
+$labels['desktopunsupported'] = 'Tu navegador no soporta notificaciones de escritorio.';
+$labels['desktoptimeout'] = 'Cerrar notificaciones de escritorio';
+?>
diff --git a/plugins/newmail_notifier/localization/es_AR.inc b/plugins/newmail_notifier/localization/es_AR.inc
index 682d79ef4..a095c01d8 100644
--- a/plugins/newmail_notifier/localization/es_AR.inc
+++ b/plugins/newmail_notifier/localization/es_AR.inc
@@ -24,4 +24,5 @@ $labels['body'] = 'Has recibido correo nuevo';
$labels['testbody'] = 'Esta es una notificación de prueba';
$labels['desktopdisabled'] = 'Las notificaciones en escritorio están deshabilitadas en tu navegador';
$labels['desktopunsupported'] = 'Tu navegador no soporta notificaciones en escritorio';
+$labels['desktoptimeout'] = 'Cerrar notificación de escritorio';
?>
diff --git a/plugins/newmail_notifier/localization/et_EE.inc b/plugins/newmail_notifier/localization/et_EE.inc
index 22bdde908..6f6f1b0c7 100644
--- a/plugins/newmail_notifier/localization/et_EE.inc
+++ b/plugins/newmail_notifier/localization/et_EE.inc
@@ -24,4 +24,5 @@ $labels['body'] = 'Saabus uus kiri.';
$labels['testbody'] = 'See on teavituse proov.';
$labels['desktopdisabled'] = 'Töölaua märguanded on su veebilehitsejas keelatud.';
$labels['desktopunsupported'] = 'Sinu veebilehitseja ei toeta töölaua märguandeid.';
+$labels['desktoptimeout'] = 'Sulge töölaua teavitus';
?>
diff --git a/plugins/newmail_notifier/localization/hu_HU.inc b/plugins/newmail_notifier/localization/hu_HU.inc
index 59464f27c..6477de9b9 100644
--- a/plugins/newmail_notifier/localization/hu_HU.inc
+++ b/plugins/newmail_notifier/localization/hu_HU.inc
@@ -16,13 +16,13 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-newmail_notifier/
*/
$labels['basic'] = 'Értesítés megjelenítése böngészőben amikor új üzenet érkezik';
-$labels['desktop'] = 'Asztali értesítés megjelenítése új üzenet érkezésekor';
+$labels['desktop'] = 'Értesítés megjelenítése az asztalon amikor új üzenet érkezik';
$labels['sound'] = 'Hang lejátszása új üzenet érkezésekor';
-$labels['test'] = 'Hang lejátszása';
-$labels['title'] = 'Ú email!';
-$labels['body'] = 'Új üzeneted érkezett.';
-$labels['testbody'] = 'Ez egy teszt értesítés.';
-$labels['desktopdisabled'] = 'Az asztali értesítés ki van kapcsolva a böngésződben.';
-$labels['desktopunsupported'] = 'A böngésződ nem támogatja az asztali értesítéseket.';
-$labels['desktoptimeout'] = 'Az asztali értesítés bezárása';
+$labels['test'] = 'Próba';
+$labels['title'] = 'Új üzenet!';
+$labels['body'] = 'Új üzenet érkezett.';
+$labels['testbody'] = 'Ez egy értesítési próba.';
+$labels['desktopdisabled'] = 'A böngészőben tiltva van az asztali értesítések megjelenítése.';
+$labels['desktopunsupported'] = 'A böngésző nem támogatja az asztali értesítések megjelenítését.';
+$labels['desktoptimeout'] = 'Az értesítés bezárása';
?>
diff --git a/plugins/newmail_notifier/localization/id_ID.inc b/plugins/newmail_notifier/localization/id_ID.inc
index 1f32afa7c..34c71e3e6 100644
--- a/plugins/newmail_notifier/localization/id_ID.inc
+++ b/plugins/newmail_notifier/localization/id_ID.inc
@@ -24,4 +24,5 @@ $labels['body'] = 'Anda telah menerima sebuah pesan baru.';
$labels['testbody'] = 'Ini adalah percobaan pemberitahuan.';
$labels['desktopdisabled'] = 'Pemberitahuan di desktop dimatikan pada peramban Anda.';
$labels['desktopunsupported'] = 'Peramban Anda tidak mendukung pemberitahuan pada desktop';
+$labels['desktoptimeout'] = 'Tutup pemberitahuan pada desktop';
?>
diff --git a/plugins/newmail_notifier/localization/ml_IN.inc b/plugins/newmail_notifier/localization/ml_IN.inc
index 44ec26e69..c4986d3ad 100644
--- a/plugins/newmail_notifier/localization/ml_IN.inc
+++ b/plugins/newmail_notifier/localization/ml_IN.inc
@@ -24,4 +24,5 @@ $labels['body'] = 'താങ്കള്‍ക്ക് ഒരു പുതി
$labels['testbody'] = 'ഇത് ഒരു പരീക്ഷണ അറിയിപ്പാണ്.';
$labels['desktopdisabled'] = 'താങ്കളുടെ ബ്രൌസറില്‍ ഡെസ്ക്ക്ടോപ്പ് നോട്ടിഫിക്കേഷന്‍ പ്രവര്‍ത്തനരഹിതമാണ്.';
$labels['desktopunsupported'] = 'താങ്കളുടെ ബ്രൌസ്സര്‍ ഡെസ്ക്ടോപ്പ് അറിയിപ്പുകള്‍ പിന്‍തുണയ്ക്കുന്നില്ല.';
+$labels['desktoptimeout'] = 'ഡെസ്ക്ടോപ്പ് അറിയിപ്പുകൾ അടയ്ക്കുക';
?>
diff --git a/plugins/newmail_notifier/newmail_notifier.php b/plugins/newmail_notifier/newmail_notifier.php
index 20c542f58..efac69116 100644
--- a/plugins/newmail_notifier/newmail_notifier.php
+++ b/plugins/newmail_notifier/newmail_notifier.php
@@ -52,8 +52,8 @@ class newmail_notifier extends rcube_plugin
$this->add_hook('preferences_save', array($this, 'prefs_save'));
}
else { // if ($this->rc->task == 'mail') {
- // add script when not in ajax and not in frame
- if ($this->rc->output->type == 'html' && empty($_REQUEST['_framed'])) {
+ // add script when not in ajax and not in frame and only in main window
+ if ($this->rc->output->type == 'html' && empty($_REQUEST['_framed']) && $this->rc->action == '') {
$this->add_texts('localization/');
$this->rc->output->add_label('newmail_notifier.title', 'newmail_notifier.body');
$this->include_script('newmail_notifier.js');
diff --git a/plugins/password/README b/plugins/password/README
index 89ffeb320..936aa53cc 100644
--- a/plugins/password/README
+++ b/plugins/password/README
@@ -311,6 +311,9 @@
Set $config['password_vpopmaild_port'] to the port of vpopmaild.
+ Set $config['password_vpopmaild_timeout'] to the timeout used for the TCP
+ connection to vpopmaild (You may want to set it higher on busy servers).
+
2.20. Plesk (Plesk RPC-API)
---------------------------
diff --git a/plugins/password/config.inc.php.dist b/plugins/password/config.inc.php.dist
index 427d064a8..6610b4dae 100644
--- a/plugins/password/config.inc.php.dist
+++ b/plugins/password/config.inc.php.dist
@@ -35,6 +35,9 @@ $config['password_hosts'] = null;
// for upgrading the stored passwords after the encryption scheme has changed.
$config['password_force_save'] = false;
+// Enables forcing new users to change their password at their first login.
+$config['password_force_new_user'] = false;
+
// SQL Driver options
// ------------------
@@ -256,6 +259,9 @@ $config['password_vpopmaild_host'] = 'localhost';
// TCP port used for vpopmaild connections
$config['password_vpopmaild_port'] = 89;
+// Timout used for the connection to vpopmaild (in seconds)
+$config['password_vpopmaild_timeout'] = 10;
+
// cPanel Driver options
// --------------------------
@@ -362,6 +368,11 @@ $config['password_smb_host'] = 'localhost';
// Location of smbpasswd binary
$config['password_smb_cmd'] = '/usr/bin/smbpasswd';
+// gearman driver options
+// ---------------------
+// Gearman host (default: localhost)
+$config['password_gearman_host'] = 'localhost';
+
// Plesk/PPA Driver options
diff --git a/plugins/password/drivers/gearman.php b/plugins/password/drivers/gearman.php
new file mode 100644
index 000000000..36571a98f
--- /dev/null
+++ b/plugins/password/drivers/gearman.php
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * Gearman Password Driver
+ *
+ * Payload is json string containing username, oldPassword and newPassword
+ * Return value is a json string saying result: true if success.
+ *
+ * @version 1.0
+ * @author Mohammad Anwari <mdamt@mdamt.net>
+ */
+
+class rcube_gearman_password
+{
+ function save($currpass, $newpass)
+ {
+ if (extension_loaded('gearman')) {
+ $rcmail = rcmail::get_instance();
+ $user = $_SESSION['username'];
+ $payload = array(
+ 'username' => $user,
+ 'oldPassword' => $currpass,
+ 'newPassword' => $newpass,
+ );
+
+ $gmc = new GearmanClient();
+ $gmc->addServer($rcmail->config->get('password_gearman_host'));
+
+ $result = $gmc->doNormal('setPassword', json_encode($payload));
+ $success = json_decode($result);
+
+ if ($success && $success->result == 1) {
+ return PASSWORD_SUCCESS;
+ }
+ else {
+ rcube::raise_error(array(
+ 'code' => 600,
+ 'type' => 'php',
+ 'file' => __FILE__, 'line' => __LINE__,
+ 'message' => "Password plugin: Gearman authentication failed for user $user: $error"
+ ), true, false);
+ }
+ }
+ else {
+ rcube::raise_error(array(
+ 'code' => 600,
+ 'type' => 'php',
+ 'file' => __FILE__, 'line' => __LINE__,
+ 'message' => "Password plugin: PECL Gearman module not loaded"
+ ), true, false);
+ }
+
+ return PASSWORD_ERROR;
+ }
+}
diff --git a/plugins/password/drivers/ldap.php b/plugins/password/drivers/ldap.php
index 739958ad7..cc62595b5 100644
--- a/plugins/password/drivers/ldap.php
+++ b/plugins/password/drivers/ldap.php
@@ -130,9 +130,10 @@ class rcube_ldap_password
*/
function search_userdn($rcmail)
{
+ $binddn = $rcmail->config->get('password_ldap_searchDN');
+ $bindpw = $rcmail->config->get('password_ldap_searchPW');
+
$ldapConfig = array (
- 'binddn' => $rcmail->config->get('password_ldap_searchDN'),
- 'bindpw' => $rcmail->config->get('password_ldap_searchPW'),
'basedn' => $rcmail->config->get('password_ldap_basedn'),
'host' => $rcmail->config->get('password_ldap_host'),
'port' => $rcmail->config->get('password_ldap_port'),
@@ -140,6 +141,12 @@ class rcube_ldap_password
'version' => $rcmail->config->get('password_ldap_version'),
);
+ // allow anonymous searches
+ if (!empty($binddn)) {
+ $ldapConfig['binddn'] = $binddn;
+ $ldapConfig['bindpw'] = $bindpw;
+ }
+
$ldap = Net_LDAP2::connect($ldapConfig);
if (PEAR::isError($ldap)) {
diff --git a/plugins/password/drivers/ldap_simple.php b/plugins/password/drivers/ldap_simple.php
index 3e167ea5b..3c19ccde5 100644
--- a/plugins/password/drivers/ldap_simple.php
+++ b/plugins/password/drivers/ldap_simple.php
@@ -168,14 +168,16 @@ class rcube_ldap_simple_password
*/
function search_userdn($rcmail, $ds)
{
- $search_user = $rcmail->config->get('password_ldap_searchDN');
- $search_pass = $rcmail->config->get('password_ldap_searchPW');
+ $search_user = $rcmail->config->get('password_ldap_searchDN');
+ $search_pass = $rcmail->config->get('password_ldap_searchPW');
+ $search_base = $rcmail->config->get('password_ldap_search_base');
+ $search_filter = $rcmail->config->get('password_ldap_search_filter');
- if (empty($search_user)) {
- return null;
+ if (empty($search_filter)) {
+ return false;
}
- $this->_debug("C: Bind $search_user, pass: **** [" . strlen($search_pass) . "]");
+ $this->_debug("C: Bind " . ($search_user ? $search_user : '[anonymous]'));
// Bind
if (!ldap_bind($ds, $search_user, $search_pass)) {
@@ -185,9 +187,6 @@ class rcube_ldap_simple_password
$this->_debug("S: OK");
- $search_base = $rcmail->config->get('password_ldap_search_base');
- $search_filter = $rcmail->config->get('password_ldap_search_filter');
-
$search_base = rcube_ldap_password::substitute_vars($search_base);
$search_filter = rcube_ldap_password::substitute_vars($search_filter);
diff --git a/plugins/password/drivers/vpopmaild.php b/plugins/password/drivers/vpopmaild.php
index 6c1a9ee9d..40731206a 100644
--- a/plugins/password/drivers/vpopmaild.php
+++ b/plugins/password/drivers/vpopmaild.php
@@ -22,6 +22,8 @@ class rcube_vpopmaild_password
$rcmail->config->get('password_vpopmaild_port'), null))) {
return PASSWORD_CONNECT_ERROR;
}
+
+ $vpopmaild->setTimeout($rcmail->config->get('password_vpopmaild_timeout'),0);
$result = $vpopmaild->readLine();
if(!preg_match('/^\+OK/', $result)) {
diff --git a/plugins/password/localization/ar.inc b/plugins/password/localization/ar.inc
index 521127a8f..db7c424cd 100644
--- a/plugins/password/localization/ar.inc
+++ b/plugins/password/localization/ar.inc
@@ -15,7 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
*/
-$labels['changepasswd'] = 'تغيير كلمة المرور';
$labels['curpasswd'] = 'كلمة المرور الحالية:';
$labels['newpasswd'] = 'كلمة المرور الجديدة:';
$labels['confpasswd'] = 'تأكيد كلمة المرور الجديدة:';
diff --git a/plugins/password/localization/ast.inc b/plugins/password/localization/ast.inc
index 99b283ec5..aae336854 100644
--- a/plugins/password/localization/ast.inc
+++ b/plugins/password/localization/ast.inc
@@ -15,7 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
*/
-$labels['changepasswd'] = 'Camudar contraseña';
$labels['curpasswd'] = 'Contraseña actual:';
$labels['newpasswd'] = 'Contraseña nueva:';
$labels['confpasswd'] = 'Confirmar contraseña:';
@@ -28,5 +27,6 @@ $messages['connecterror'] = 'Nun pudo guardase la contraseña nueva. Fallu de co
$messages['internalerror'] = 'Nun pudo guardase la contraseña nueva. ';
$messages['passwordshort'] = 'La contraseña tien de tener polo menos $length caráuteres.';
$messages['passwordweak'] = 'La contraseña tien de tener polo menos un númberu y un signu de puntuación.';
-$messages['passwordforbidden'] = 'La contraseña que s\'introduxo contién caráuteres non permitíos.';
+$messages['passwordforbidden'] = 'La contraseña contien caráuteres prohibíos.';
+$messages['firstloginchange'] = 'Esti ye\'l to primer aniciu sesión. Por favor, camuda la to contraseña.';
?>
diff --git a/plugins/password/localization/az_AZ.inc b/plugins/password/localization/az_AZ.inc
index 18fa758f4..01bb7a91e 100644
--- a/plugins/password/localization/az_AZ.inc
+++ b/plugins/password/localization/az_AZ.inc
@@ -15,7 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
*/
-$labels['changepasswd'] = 'Şifrəni dəyiş';
$labels['curpasswd'] = 'Hal-hazırki şifrə:';
$labels['newpasswd'] = 'Yeni şifrə:';
$labels['confpasswd'] = 'Yeni şifrə: (təkrar)';
diff --git a/plugins/password/localization/be_BE.inc b/plugins/password/localization/be_BE.inc
index 457e67e9e..4ac446134 100644
--- a/plugins/password/localization/be_BE.inc
+++ b/plugins/password/localization/be_BE.inc
@@ -29,4 +29,5 @@ $messages['internalerror'] = 'Не ўдалося захаваць новы па
$messages['passwordshort'] = 'Пароль мусіць быць мінімум $length знакаў.';
$messages['passwordweak'] = 'Пароль мусіць утрымліваць мінімум адну лічбу і адзін знак пунктуацыі.';
$messages['passwordforbidden'] = 'Пароль утрымлівае забароненыя знакі.';
+$messages['firstloginchange'] = 'Гэта ваш першы ўваход. Трэба змяніць пароль.';
?>
diff --git a/plugins/password/localization/bg_BG.inc b/plugins/password/localization/bg_BG.inc
index c1c8b9b7a..d543b5548 100644
--- a/plugins/password/localization/bg_BG.inc
+++ b/plugins/password/localization/bg_BG.inc
@@ -15,7 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
*/
-$labels['changepasswd'] = 'Промяна на парола';
$labels['curpasswd'] = 'Текуща парола:';
$labels['newpasswd'] = 'Нова парола:';
$labels['confpasswd'] = 'Повторно нова парола:';
diff --git a/plugins/password/localization/br.inc b/plugins/password/localization/br.inc
index a43b0b715..ff8869713 100644
--- a/plugins/password/localization/br.inc
+++ b/plugins/password/localization/br.inc
@@ -15,7 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
*/
-$labels['changepasswd'] = 'Kemmañ ar ger-tremen';
$labels['curpasswd'] = 'Ger-tremen bremañ :';
$labels['newpasswd'] = 'Ger-tremen nevez :';
$labels['confpasswd'] = 'Kadarnaat ar ger-tremen :';
diff --git a/plugins/password/localization/bs_BA.inc b/plugins/password/localization/bs_BA.inc
index f030fef87..6ca96aa1b 100644
--- a/plugins/password/localization/bs_BA.inc
+++ b/plugins/password/localization/bs_BA.inc
@@ -29,4 +29,5 @@ $messages['internalerror'] = 'Nije moguće sačuvati novu šifru.';
$messages['passwordshort'] = 'Šifra mora sadržavati barem $length znakova.';
$messages['passwordweak'] = 'Šifra mora imati barem jedan broj i jedan interpunkcijski znak.';
$messages['passwordforbidden'] = 'Šifra sadrži nedozvoljene znakove.';
+$messages['firstloginchange'] = 'Ovo je vaša prva prijava. Molimo vas da promijenite vašu šifru.';
?>
diff --git a/plugins/password/localization/ca_ES.inc b/plugins/password/localization/ca_ES.inc
index 8e367155f..d74a4dc50 100644
--- a/plugins/password/localization/ca_ES.inc
+++ b/plugins/password/localization/ca_ES.inc
@@ -29,4 +29,5 @@ $messages['internalerror'] = 'No s\'ha pogut desar la nova contrasenya.';
$messages['passwordshort'] = 'La nova contrasenya ha de tenir com a mínim $length caràcters.';
$messages['passwordweak'] = 'La nova contrasenya ha d\'incloure com a mínim un nombre i un caràcter de puntuació.';
$messages['passwordforbidden'] = 'La contrasenya conté caràcters no permesos.';
+$messages['firstloginchange'] = 'Aquest és el vostre primer accés. Si us plau, canvieu-vos la contrasenya.';
?>
diff --git a/plugins/password/localization/cs_CZ.inc b/plugins/password/localization/cs_CZ.inc
index 46076b0a0..45870a35c 100644
--- a/plugins/password/localization/cs_CZ.inc
+++ b/plugins/password/localization/cs_CZ.inc
@@ -29,4 +29,5 @@ $messages['internalerror'] = 'Heslo se nepodařilo uložit.';
$messages['passwordshort'] = 'Heslo musí mít alespoň $length znaků.';
$messages['passwordweak'] = 'Heslo musí obsahovat alespoň jedno číslo a jedno interpuknční znaménko.';
$messages['passwordforbidden'] = 'Heslo obsahuje nepovolené znaky.';
+$messages['firstloginchange'] = 'Vaše první přihlášení, změňte si prosím heslo.';
?>
diff --git a/plugins/password/localization/cy_GB.inc b/plugins/password/localization/cy_GB.inc
index 16fc65447..3de8189f9 100644
--- a/plugins/password/localization/cy_GB.inc
+++ b/plugins/password/localization/cy_GB.inc
@@ -15,7 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
*/
-$labels['changepasswd'] = 'Newid Cyfrinair';
$labels['curpasswd'] = 'Cyfrinair Presennol:';
$labels['newpasswd'] = 'Cyfrinair Newydd:';
$labels['confpasswd'] = 'Cadarnhau Cyfrinair Newydd:';
diff --git a/plugins/password/localization/da_DK.inc b/plugins/password/localization/da_DK.inc
index 76e161db4..c0bc3831d 100644
--- a/plugins/password/localization/da_DK.inc
+++ b/plugins/password/localization/da_DK.inc
@@ -15,7 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
*/
-$labels['changepasswd'] = 'Skift adgangskode';
$labels['curpasswd'] = 'Nuværende adgangskode:';
$labels['newpasswd'] = 'Ny adgangskode:';
$labels['confpasswd'] = 'Bekræft ny adgangskode:';
diff --git a/plugins/password/localization/de_CH.inc b/plugins/password/localization/de_CH.inc
index a446e1b52..8d137d561 100644
--- a/plugins/password/localization/de_CH.inc
+++ b/plugins/password/localization/de_CH.inc
@@ -15,7 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
*/
-$labels['changepasswd'] = 'Passwort ändern';
$labels['curpasswd'] = 'Aktuelles Passwort';
$labels['newpasswd'] = 'Neues Passwort';
$labels['confpasswd'] = 'Passwort Wiederholung';
diff --git a/plugins/password/localization/de_DE.inc b/plugins/password/localization/de_DE.inc
index fab78fce9..edf60a7ca 100644
--- a/plugins/password/localization/de_DE.inc
+++ b/plugins/password/localization/de_DE.inc
@@ -15,7 +15,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
*/
-$labels['changepasswd'] = 'Kennwort ändern';
+$labels['changepasswd'] = 'Passwort ändern';
$labels['curpasswd'] = 'Aktuelles Kennwort:';
$labels['newpasswd'] = 'Neues Kennwort:';
$labels['confpasswd'] = 'Neues Kennwort bestätigen:';
@@ -29,4 +29,5 @@ $messages['internalerror'] = 'Neues Passwort nicht gespeichert';
$messages['passwordshort'] = 'Passwort muss mindestens $length Zeichen lang sein.';
$messages['passwordweak'] = 'Passwort muss mindestens eine Zahl und ein Sonderzeichen enthalten.';
$messages['passwordforbidden'] = 'Passwort enthält unzulässige Zeichen.';
+$messages['firstloginchange'] = 'Dies ist Ihr erster Login. Bitte ändern Sie ihr Passwort.';
?>
diff --git a/plugins/password/localization/el_GR.inc b/plugins/password/localization/el_GR.inc
index b1c72ab69..5f7801635 100644
--- a/plugins/password/localization/el_GR.inc
+++ b/plugins/password/localization/el_GR.inc
@@ -15,7 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
*/
-$labels['changepasswd'] = 'Αλλαγη κωδικου προσβασης';
$labels['curpasswd'] = 'Τρεχων κωδικος προσβασης:';
$labels['newpasswd'] = 'Νεος κωδικος προσβασης:';
$labels['confpasswd'] = 'Επιβεβαιωση κωδικου προσβασης:';
diff --git a/plugins/password/localization/en_CA.inc b/plugins/password/localization/en_CA.inc
index 6206b5923..e67ee7bfe 100644
--- a/plugins/password/localization/en_CA.inc
+++ b/plugins/password/localization/en_CA.inc
@@ -15,7 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
*/
-$labels['changepasswd'] = 'Change Password';
$labels['curpasswd'] = 'Current Password:';
$labels['newpasswd'] = 'New Password:';
$labels['confpasswd'] = 'Confirm New Password:';
diff --git a/plugins/password/localization/en_GB.inc b/plugins/password/localization/en_GB.inc
index 1f1b4e286..533bcd0bc 100644
--- a/plugins/password/localization/en_GB.inc
+++ b/plugins/password/localization/en_GB.inc
@@ -15,7 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
*/
-$labels['changepasswd'] = 'Change Password';
$labels['curpasswd'] = 'Current Password:';
$labels['newpasswd'] = 'New Password:';
$labels['confpasswd'] = 'Confirm New Password:';
diff --git a/plugins/password/localization/en_US.inc b/plugins/password/localization/en_US.inc
index a4c077fe5..278a20374 100644
--- a/plugins/password/localization/en_US.inc
+++ b/plugins/password/localization/en_US.inc
@@ -17,7 +17,7 @@
*/
$labels = array();
-$labels['changepasswd'] = 'Change Password';
+$labels['changepasswd'] = 'Change password';
$labels['curpasswd'] = 'Current Password:';
$labels['newpasswd'] = 'New Password:';
$labels['confpasswd'] = 'Confirm New Password:';
@@ -33,5 +33,6 @@ $messages['internalerror'] = 'Could not save new password.';
$messages['passwordshort'] = 'Password must be at least $length characters long.';
$messages['passwordweak'] = 'Password must include at least one number and one punctuation character.';
$messages['passwordforbidden'] = 'Password contains forbidden characters.';
+$messages['firstloginchange'] = 'This is your first login. Please change your password.';
?>
diff --git a/plugins/password/localization/eo.inc b/plugins/password/localization/eo.inc
index d985c18e6..214a68dac 100644
--- a/plugins/password/localization/eo.inc
+++ b/plugins/password/localization/eo.inc
@@ -15,7 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
*/
-$labels['changepasswd'] = 'Ŝanĝi pasvorton';
$labels['curpasswd'] = 'Nuna pasvorto:';
$labels['newpasswd'] = 'Nova pasvorto:';
$labels['confpasswd'] = 'Konfirmi novan pasvorton:';
diff --git a/plugins/password/localization/es_419.inc b/plugins/password/localization/es_419.inc
index 3d99b561c..4c2a2cd38 100644
--- a/plugins/password/localization/es_419.inc
+++ b/plugins/password/localization/es_419.inc
@@ -29,4 +29,5 @@ $messages['internalerror'] = 'No se puedo guardar la nueva contraseña.';
$messages['passwordshort'] = 'La contraseña debe tener al menos $length carácteres.';
$messages['passwordweak'] = 'La contraseña debe incluir por lo menos un número y un signo de puntuación.';
$messages['passwordforbidden'] = 'La contraseña contiene carácteres ilegales.';
+$messages['firstloginchange'] = 'Esta es la primera vez que ingresas. Por favor cambia tu contraseña.';
?>
diff --git a/plugins/password/localization/es_AR.inc b/plugins/password/localization/es_AR.inc
index 47589cfc7..ea043625f 100644
--- a/plugins/password/localization/es_AR.inc
+++ b/plugins/password/localization/es_AR.inc
@@ -15,7 +15,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
*/
-$labels['changepasswd'] = 'Cambiar Contraseña';
+$labels['changepasswd'] = 'Cambiar contraseña';
$labels['curpasswd'] = 'Contraseña Actual:';
$labels['newpasswd'] = 'Contraseña Nueva:';
$labels['confpasswd'] = 'Confirmar Contraseña:';
@@ -29,4 +29,5 @@ $messages['internalerror'] = 'No se pudo guardar la contraseña nueva.';
$messages['passwordshort'] = 'Tu contraseña debe tener una longitud mínima de $length.';
$messages['passwordweak'] = 'Tu nueva contraseña debe incluir al menos un número y un signo de puntuación.';
$messages['passwordforbidden'] = 'La contraseña contiene caracteres inválidos.';
+$messages['firstloginchange'] = 'Este es tu primer inicio de sesión. Por favor, cambia tu contraseña.';
?>
diff --git a/plugins/password/localization/es_ES.inc b/plugins/password/localization/es_ES.inc
index 80ee2e9a1..cededcd8b 100644
--- a/plugins/password/localization/es_ES.inc
+++ b/plugins/password/localization/es_ES.inc
@@ -15,7 +15,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
*/
-$labels['changepasswd'] = 'Cambiar contraseña';
+$labels['changepasswd'] = 'Cambiar la contraseña';
$labels['curpasswd'] = 'Contraseña actual:';
$labels['newpasswd'] = 'Contraseña nueva:';
$labels['confpasswd'] = 'Confirmar contraseña:';
@@ -29,4 +29,5 @@ $messages['internalerror'] = 'No se pudo guardar la contraseña nueva.';
$messages['passwordshort'] = 'La contraseña debe tener por lo menos $length caracteres.';
$messages['passwordweak'] = 'La contraseña debe incluir al menos un número y un signo de puntuación.';
$messages['passwordforbidden'] = 'La contraseña introducida contiene caracteres no permitidos.';
+$messages['firstloginchange'] = 'Este es su primer inicio de sesión. Por favor, cambie su contraseña.';
?>
diff --git a/plugins/password/localization/et_EE.inc b/plugins/password/localization/et_EE.inc
index e1c524dcf..a2c0319b2 100644
--- a/plugins/password/localization/et_EE.inc
+++ b/plugins/password/localization/et_EE.inc
@@ -15,7 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
*/
-$labels['changepasswd'] = 'Muuda parooli';
$labels['curpasswd'] = 'Vana parool:';
$labels['newpasswd'] = 'Uus parool:';
$labels['confpasswd'] = 'Uus parool uuesti:';
diff --git a/plugins/password/localization/eu_ES.inc b/plugins/password/localization/eu_ES.inc
index b814d2983..7f93d0110 100644
--- a/plugins/password/localization/eu_ES.inc
+++ b/plugins/password/localization/eu_ES.inc
@@ -29,4 +29,5 @@ $messages['internalerror'] = 'Ezin izan da pasahitz berria gorde.';
$messages['passwordshort'] = 'Gutxienez $length karakteretakoa izan behar du pasahitzak.';
$messages['passwordweak'] = 'Gutxienez zenbaki bat eta puntuazio karaktere bat izan behar du pasahitzak.';
$messages['passwordforbidden'] = 'Galarazitako karaktereak daude pasahitzean.';
+$messages['firstloginchange'] = 'Zure lehenengo sarrera da. Pasahitza aldatu mesedez.';
?>
diff --git a/plugins/password/localization/fa_AF.inc b/plugins/password/localization/fa_AF.inc
index 5bf7c3a8f..3df6a3057 100644
--- a/plugins/password/localization/fa_AF.inc
+++ b/plugins/password/localization/fa_AF.inc
@@ -15,7 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
*/
-$labels['changepasswd'] = 'تغییر رمز عبور';
$labels['curpasswd'] = 'رمز عبور کنونی';
$labels['newpasswd'] = 'رمز عبور جدید';
$labels['confpasswd'] = 'تایید رمز عبور جدید';
diff --git a/plugins/password/localization/fi_FI.inc b/plugins/password/localization/fi_FI.inc
index 3b6735bec..5cf0db192 100644
--- a/plugins/password/localization/fi_FI.inc
+++ b/plugins/password/localization/fi_FI.inc
@@ -29,4 +29,5 @@ $messages['internalerror'] = 'Uuden salasanan tallennus epäonnistui.';
$messages['passwordshort'] = 'Salasanassa täytyy olla vähintään $length merkkiä.';
$messages['passwordweak'] = 'Salasanan täytyy sisältää vähintään yksi numero ja yksi välimerkki.';
$messages['passwordforbidden'] = 'Salasana sisältää virheellisiä merkkejä.';
+$messages['firstloginchange'] = 'Tämä on ensimmäinen kirjautumiskertasi. Vaihda salasanasi.';
?>
diff --git a/plugins/password/localization/fo_FO.inc b/plugins/password/localization/fo_FO.inc
index 7c9ba55bc..875f79b69 100644
--- a/plugins/password/localization/fo_FO.inc
+++ b/plugins/password/localization/fo_FO.inc
@@ -15,7 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
*/
-$labels['changepasswd'] = 'Broyt loyniorð';
$labels['curpasswd'] = 'Nú verandi loyniorð:';
$labels['newpasswd'] = 'Nýtt loyniorð:';
$labels['confpasswd'] = 'Endurtak nýggja loyniorð:';
diff --git a/plugins/password/localization/gl_ES.inc b/plugins/password/localization/gl_ES.inc
index 1415366a3..b0f5e39b2 100644
--- a/plugins/password/localization/gl_ES.inc
+++ b/plugins/password/localization/gl_ES.inc
@@ -29,4 +29,5 @@ $messages['internalerror'] = 'Non foi posíbel gardar o contrasinal novo.';
$messages['passwordshort'] = 'O contrasinal debe ter polo menos $length caracteres.';
$messages['passwordweak'] = 'O contrasinal debe incluir polo menos un número e un signo de puntuación.';
$messages['passwordforbidden'] = 'O contrasinal contén caracteres non permitidos.';
+$messages['firstloginchange'] = 'É a primeira vez que se conecta. Por favor, troque o seu contrasinal.';
?>
diff --git a/plugins/password/localization/he_IL.inc b/plugins/password/localization/he_IL.inc
index ce05ea59c..c60acd7c1 100644
--- a/plugins/password/localization/he_IL.inc
+++ b/plugins/password/localization/he_IL.inc
@@ -15,7 +15,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
*/
-$labels['changepasswd'] = 'שינוי סיסמה';
+$labels['changepasswd'] = 'שנה סיסמה';
$labels['curpasswd'] = 'סיסמה נוכחית:';
$labels['newpasswd'] = 'סיסמה חדשה:';
$labels['confpasswd'] = 'אימות הסיסמה החדשה:';
@@ -29,4 +29,5 @@ $messages['internalerror'] = 'לא ניתן לשמור על הסיסמה החד
$messages['passwordshort'] = 'הסיסמה צריכה להיות לפחות בעלת $length תווים';
$messages['passwordweak'] = 'הסיסמה חייבת לכלול לפחות סיפרה אחת ולפחות סימן פיסוק אחד.';
$messages['passwordforbidden'] = 'הסיסמה מכילה תווים אסורים.';
+$messages['firstloginchange'] = 'זוהי כניסתך הראשונה. אנא שנה את סיסמתך.';
?>
diff --git a/plugins/password/localization/hr_HR.inc b/plugins/password/localization/hr_HR.inc
index 44b62b2af..9815bf504 100644
--- a/plugins/password/localization/hr_HR.inc
+++ b/plugins/password/localization/hr_HR.inc
@@ -15,7 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
*/
-$labels['changepasswd'] = 'Promijeni zaporku';
$labels['curpasswd'] = 'Važeća zaporka:';
$labels['newpasswd'] = 'Nova zaporka:';
$labels['confpasswd'] = 'Potvrda nove zaporke:';
diff --git a/plugins/password/localization/hu_HU.inc b/plugins/password/localization/hu_HU.inc
index e9167b0c9..beb9703a3 100644
--- a/plugins/password/localization/hu_HU.inc
+++ b/plugins/password/localization/hu_HU.inc
@@ -15,7 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
*/
-$labels['changepasswd'] = 'Jelszó módosítás';
$labels['curpasswd'] = 'Jelenlegi jelszó:';
$labels['newpasswd'] = 'Új jelszó:';
$labels['confpasswd'] = 'Új jelszó mégegyszer:';
@@ -29,4 +28,5 @@ $messages['internalerror'] = 'Hiba történt a kérés feldolgozása során.';
$messages['passwordshort'] = 'A jelszónak legalább $length karakter hosszunak kell lennie.';
$messages['passwordweak'] = 'A jelszónak mindenképpen kell tartalmaznia egy számot és egy írásjelet.';
$messages['passwordforbidden'] = 'A jelszó tiltott karaktert is tartalmaz.';
+$messages['firstloginchange'] = 'Ez az első belépésed. Változtass jelszót.';
?>
diff --git a/plugins/password/localization/hy_AM.inc b/plugins/password/localization/hy_AM.inc
index ebca6cd85..9e40b49f5 100644
--- a/plugins/password/localization/hy_AM.inc
+++ b/plugins/password/localization/hy_AM.inc
@@ -15,7 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
*/
-$labels['changepasswd'] = 'Գաղտնաբառի փոփոխում';
$labels['curpasswd'] = 'Առկա գաղտնաբառը`';
$labels['newpasswd'] = 'Նոր գաղտնաբառը`';
$labels['confpasswd'] = 'Կրկնեք նոր գաղտնաբառը`';
diff --git a/plugins/password/localization/id_ID.inc b/plugins/password/localization/id_ID.inc
index b7b0cde8c..3a42abdf3 100644
--- a/plugins/password/localization/id_ID.inc
+++ b/plugins/password/localization/id_ID.inc
@@ -15,7 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
*/
-$labels['changepasswd'] = 'Ubah Sandi';
$labels['curpasswd'] = 'Sandi saat ini:';
$labels['newpasswd'] = 'Sandi Baru:';
$labels['confpasswd'] = 'Konfirmasi Sandi Baru:';
diff --git a/plugins/password/localization/it_IT.inc b/plugins/password/localization/it_IT.inc
index ddb83ca82..d9bdb4fd5 100644
--- a/plugins/password/localization/it_IT.inc
+++ b/plugins/password/localization/it_IT.inc
@@ -29,4 +29,5 @@ $messages['internalerror'] = 'Impossibile salvare la nuova password.';
$messages['passwordshort'] = 'La password deve essere lunga almeno $length caratteri.';
$messages['passwordweak'] = 'La password deve includere almeno una cifra decimale e un simbolo di punteggiatura.';
$messages['passwordforbidden'] = 'La password contiene caratteri proibiti.';
+$messages['firstloginchange'] = 'Questo è il tuo primo accesso. Si prega di cambiare la propria password.';
?>
diff --git a/plugins/password/localization/ja_JP.inc b/plugins/password/localization/ja_JP.inc
index cc5a1173d..7c97215c3 100644
--- a/plugins/password/localization/ja_JP.inc
+++ b/plugins/password/localization/ja_JP.inc
@@ -29,4 +29,5 @@ $messages['internalerror'] = '新しいパスワードを保存できません
$messages['passwordshort'] = 'パスワードは少なくとも $length 文字の長さが必要です。';
$messages['passwordweak'] = 'パスワードは少なくとも数字の 1 文字と記号の 1 文字を含んでいなければなりません。';
$messages['passwordforbidden'] = 'パスワードに禁止された文字が含まれています。';
+$messages['firstloginchange'] = 'これは初めてのログインです。パスワードを変更してください。';
?>
diff --git a/plugins/password/localization/km_KH.inc b/plugins/password/localization/km_KH.inc
index f223dc653..5e92faf41 100644
--- a/plugins/password/localization/km_KH.inc
+++ b/plugins/password/localization/km_KH.inc
@@ -15,7 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
*/
-$labels['changepasswd'] = 'ប្ដូរ​ពាក្យ​សម្ងាត់';
$labels['curpasswd'] = 'ពាក្យ​សម្ងាត់​បច្ចុប្បន្ន៖';
$labels['newpasswd'] = 'ពាក្យ​សម្ងាត់​ថ្មី៖';
$labels['confpasswd'] = 'បញ្ជាក់​ពាក្យ​សម្ងាត់​ថ្មី៖';
diff --git a/plugins/password/localization/ko_KR.inc b/plugins/password/localization/ko_KR.inc
index 21e2dbbf8..1d6374295 100644
--- a/plugins/password/localization/ko_KR.inc
+++ b/plugins/password/localization/ko_KR.inc
@@ -17,16 +17,17 @@
*/
$labels['changepasswd'] = '암호 변경';
$labels['curpasswd'] = '현재 암호:';
-$labels['newpasswd'] = '새 암호:';
-$labels['confpasswd'] = '새로운 비밀번호 확인 :';
-$messages['nopassword'] = '새 암호를 입력하시오.';
-$messages['nocurpassword'] = '현재 사용중인 암호를 입력하세요.';
-$messages['passwordincorrect'] = '현재 사용중인 암호가 올바르지 않습니다.';
-$messages['passwordinconsistency'] = '암호가 일치하지 않습니다. 다시 시도하기 바랍니다.';
-$messages['crypterror'] = '새로운 암호를 저장할 수 없습니다. 암호화 실패.';
-$messages['connecterror'] = '새로운 암호를 저장할 수 없습니다. 연결 오류.';
+$labels['newpasswd'] = '새로운 암호:';
+$labels['confpasswd'] = '새로운 암호 확인:';
+$messages['nopassword'] = '새로운 암호를 입력하세요.';
+$messages['nocurpassword'] = '현재 사용 중인 암호를 입력하세요.';
+$messages['passwordincorrect'] = '현재 사용 중인 암호가 올바르지 않습니다.';
+$messages['passwordinconsistency'] = '암호가 일치하지 않습니다. 다시 시도해주세요.';
+$messages['crypterror'] = '새로운 암호를 저장할 수 없습니다. 암호화 기능이 누락되었습니다.';
+$messages['connecterror'] = '새로운 암호를 저장할 수 없습니다. 연결 오류입니다.';
$messages['internalerror'] = '새로운 암호를 저장할 수 없습니다.';
-$messages['passwordshort'] = '암호는 적어도 $length 글자 이상이어야 합니다.';
-$messages['passwordweak'] = '암호는 적어도 숫자 하나와 특수 문자 하나를 포함하여야 합니다.';
-$messages['passwordforbidden'] = '암호가 허락되지 않은 문자들을 포함하고 있습니다.';
+$messages['passwordshort'] = '암호는 문자가 $length개 이상이어야 합니다.';
+$messages['passwordweak'] = '암호는 숫자 및 특수문자를 각각 한 개 이상 포함해야 합니다.';
+$messages['passwordforbidden'] = '암호가 금지된 문자을 포함하고 있습니다.';
+$messages['firstloginchange'] = '처음 로그인하셨습니다. 암호를 변경해주세요.';
?>
diff --git a/plugins/password/localization/lb_LU.inc b/plugins/password/localization/lb_LU.inc
index 08026f242..2093b82ab 100644
--- a/plugins/password/localization/lb_LU.inc
+++ b/plugins/password/localization/lb_LU.inc
@@ -15,7 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
*/
-$labels['changepasswd'] = 'Passwuert änneren';
$labels['curpasswd'] = 'Aktuellt Passwuert:';
$labels['newpasswd'] = 'Neit Passwuert:';
$labels['confpasswd'] = 'Neit Passwuert bestätegen:';
diff --git a/plugins/password/localization/lt_LT.inc b/plugins/password/localization/lt_LT.inc
index 4425d63e0..3351c305e 100644
--- a/plugins/password/localization/lt_LT.inc
+++ b/plugins/password/localization/lt_LT.inc
@@ -15,7 +15,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
*/
-$labels['changepasswd'] = 'Slaptažodžio keitimas';
+$labels['changepasswd'] = 'Keisti slaptažodį';
$labels['curpasswd'] = 'Dabartinis slaptažodis:';
$labels['newpasswd'] = 'Naujasis slaptažodis:';
$labels['confpasswd'] = 'Pakartokite naująjį slaptažodį:';
@@ -29,4 +29,5 @@ $messages['internalerror'] = 'Nepavyko įrašyti naujojo slaptažodžio.';
$messages['passwordshort'] = 'Slaptažodis turi būti sudarytas bent iš $length simbolių.';
$messages['passwordweak'] = 'Slaptažodyje turi būti bent vienas skaitmuo ir vienas skyrybos ženklas.';
$messages['passwordforbidden'] = 'Slaptažodyje rasta neleistinų simbolių.';
+$messages['firstloginchange'] = 'Tai yra pirmasis jūsų prisijungimas. Prašau, pasikeiskite savo slaptažodį.';
?>
diff --git a/plugins/password/localization/lv_LV.inc b/plugins/password/localization/lv_LV.inc
index c45bc8314..9e0e0e740 100644
--- a/plugins/password/localization/lv_LV.inc
+++ b/plugins/password/localization/lv_LV.inc
@@ -15,7 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
*/
-$labels['changepasswd'] = 'Nomainīt paroli';
$labels['curpasswd'] = 'Pašreizējā parole:';
$labels['newpasswd'] = 'Jaunā parole:';
$labels['confpasswd'] = 'Apstiprināt jauno paroli:';
diff --git a/plugins/password/localization/ml_IN.inc b/plugins/password/localization/ml_IN.inc
new file mode 100644
index 000000000..6b8ac9e32
--- /dev/null
+++ b/plugins/password/localization/ml_IN.inc
@@ -0,0 +1,33 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | plugins/password/localization/<lang>.inc |
+ | |
+ | Localization file of the Roundcube Webmail Password plugin |
+ | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | |
+ | Licensed under the GNU General Public License version 3 or |
+ | any later version with exceptions for skins & plugins. |
+ | See the README file for a full license statement. |
+ | |
+ +-----------------------------------------------------------------------+
+
+ For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
+*/
+$labels['changepasswd'] = 'രഹസ്യവാക്ക് മാറ്റുക';
+$labels['curpasswd'] = 'ഇപ്പോഴത്തെ രഹസ്യവാക്ക്';
+$labels['newpasswd'] = 'പുതിയ രഹസ്യവാക്ക്';
+$labels['confpasswd'] = 'പുതിയ രഹസ്യവാക്ക് സ്ഥിരീകരിക്കുക';
+$messages['nopassword'] = 'ദയവായി പുതിയ രഹസ്യവാക്ക് നൽകുക';
+$messages['nocurpassword'] = 'ദയവായി ഇപ്പോഴത്തെ രഹസ്യവാക്ക് നൽകുക';
+$messages['passwordincorrect'] = 'ഇപ്പോഴത്തെ രഹസ്യവാക്ക് തെറ്റാണ്.';
+$messages['passwordinconsistency'] = 'രഹസ്യവാക്കുകൾ ചേരുന്നില്ല, ദയവായി വീണ്ടും ശ്രമിക്കുക';
+$messages['crypterror'] = 'പുതിയ രഹസ്യവാക്ക് സൂക്ഷിക്കാൻ സാധിച്ചില്ല. എൻക്രിപ്ഷൻ ഫങ്ങ്ഷൻ ലഭ്യമല്ല.';
+$messages['connecterror'] = 'പുതിയ രഹസ്യവാക്ക് സൂക്ഷിക്കാൻ സാധിച്ചില്ല. ബന്ധം സ്ഥാപിക്കുന്നതിൽ പിഴവ്.';
+$messages['internalerror'] = 'പുതിയ രഹസ്യവാക്ക് സൂക്ഷിക്കാൻ സാധിച്ചില്ല.';
+$messages['passwordshort'] = 'രഹസ്യവാക്കിനു് കുറഞ്ഞത് $length അക്ഷരങ്ങൾ നീളം വേണം';
+$messages['passwordweak'] = 'രഹസ്യവാക്കിൽ കുറഞ്ഞത് ഒരു സംഖ്യയും, ഒരു പ്രത്യേക അക്ഷരവും വേണം';
+$messages['passwordforbidden'] = 'രഹസ്യവാക്കിൽ അനുവദനീയമല്ലാത്ത അക്ഷരങ്ങൾ ഉണ്ട്';
+$messages['firstloginchange'] = 'ഇത് താങ്കളുടെ ആദ്യത്തെ പ്രവേശനമാണ്. ദയവായി താങ്കളുടെ രഹസ്യവാക്ക് മാറ്റുക.';
+?>
diff --git a/plugins/password/localization/nb_NO.inc b/plugins/password/localization/nb_NO.inc
index 9901303d2..5d69740f0 100644
--- a/plugins/password/localization/nb_NO.inc
+++ b/plugins/password/localization/nb_NO.inc
@@ -15,7 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
*/
-$labels['changepasswd'] = 'Bytt passord';
$labels['curpasswd'] = 'Nåværende passord:';
$labels['newpasswd'] = 'Nytt passord:';
$labels['confpasswd'] = 'Bekreft nytt passord';
diff --git a/plugins/password/localization/nl_NL.inc b/plugins/password/localization/nl_NL.inc
index 1b5f0b15b..41ca116cc 100644
--- a/plugins/password/localization/nl_NL.inc
+++ b/plugins/password/localization/nl_NL.inc
@@ -15,7 +15,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
*/
-$labels['changepasswd'] = 'Wachtwoord wijzigen';
+$labels['changepasswd'] = 'Wijzig wachtwoord';
$labels['curpasswd'] = 'Huidig wachtwoord:';
$labels['newpasswd'] = 'Nieuw wachtwoord:';
$labels['confpasswd'] = 'Bevestig nieuw wachtwoord:';
@@ -29,4 +29,5 @@ $messages['internalerror'] = 'Uw nieuwe wachtwoord kan niet worden opgeslagen.';
$messages['passwordshort'] = 'Het wachtwoord moet minimaal $length tekens lang zijn.';
$messages['passwordweak'] = 'Het wachtwoord moet minimaal één cijfer en één leesteken bevatten.';
$messages['passwordforbidden'] = 'Het wachtwoord bevat tekens die niet toegestaan zijn.';
+$messages['firstloginchange'] = 'Dit is uw eerste aanmelding. Verander uw wachtwoord alstublieft.';
?>
diff --git a/plugins/password/localization/nn_NO.inc b/plugins/password/localization/nn_NO.inc
index 89d0ad1c1..9a8fd78aa 100644
--- a/plugins/password/localization/nn_NO.inc
+++ b/plugins/password/localization/nn_NO.inc
@@ -15,7 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
*/
-$labels['changepasswd'] = 'Bytt passord';
$labels['curpasswd'] = 'Noverande passord:';
$labels['newpasswd'] = 'Nytt passord:';
$labels['confpasswd'] = 'Bekreft nytt passord';
diff --git a/plugins/password/localization/pl_PL.inc b/plugins/password/localization/pl_PL.inc
index b3ce3726f..00a7aa7e3 100644
--- a/plugins/password/localization/pl_PL.inc
+++ b/plugins/password/localization/pl_PL.inc
@@ -29,4 +29,5 @@ $messages['internalerror'] = 'Nie udało się zapisać nowego hasła.';
$messages['passwordshort'] = 'Hasło musi posiadać co najmniej $length znaków.';
$messages['passwordweak'] = 'Hasło musi zawierać co najmniej jedną cyfrę i znak interpunkcyjny.';
$messages['passwordforbidden'] = 'Hasło zawiera niedozwolone znaki.';
+$messages['firstloginchange'] = 'To jest twoje pierwsze logowanie. Proszę zmień hasło.';
?>
diff --git a/plugins/password/localization/pt_BR.inc b/plugins/password/localization/pt_BR.inc
index ac714764f..1eeccb0b2 100644
--- a/plugins/password/localization/pt_BR.inc
+++ b/plugins/password/localization/pt_BR.inc
@@ -15,7 +15,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
*/
-$labels['changepasswd'] = 'Alterar senha';
+$labels['changepasswd'] = 'Alterar a senha';
$labels['curpasswd'] = 'Senha atual:';
$labels['newpasswd'] = 'Nova senha:';
$labels['confpasswd'] = 'Confirmar nova senha:';
@@ -29,4 +29,5 @@ $messages['internalerror'] = 'Não foi possível gravar a nova senha.';
$messages['passwordshort'] = 'A senha precisa ter ao menos $length caracteres.';
$messages['passwordweak'] = 'A senha precisa conter ao menos um número e um caractere de pontuação.';
$messages['passwordforbidden'] = 'A senha contém caracteres proibidos.';
+$messages['firstloginchange'] = 'Este é o seu primeiro acesso. Por favor altere sua senha.';
?>
diff --git a/plugins/password/localization/pt_PT.inc b/plugins/password/localization/pt_PT.inc
index fc5b28899..6317ede9c 100644
--- a/plugins/password/localization/pt_PT.inc
+++ b/plugins/password/localization/pt_PT.inc
@@ -15,18 +15,19 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
*/
-$labels['changepasswd'] = 'Alterar password';
-$labels['curpasswd'] = 'Password atual:';
-$labels['newpasswd'] = 'Nova password:';
-$labels['confpasswd'] = 'Confirmar password:';
-$messages['nopassword'] = 'Introduza a nova password.';
-$messages['nocurpassword'] = 'Introduza a password actual.';
-$messages['passwordincorrect'] = 'Password actual errada.';
-$messages['passwordinconsistency'] = 'Password\'s não combinam, tente novamente..';
-$messages['crypterror'] = 'Não foi possível gravar a nova password. Função de criptografica inexistente.';
-$messages['connecterror'] = 'Não foi possível gravar a nova password. Erro de ligação.';
-$messages['internalerror'] = 'Não foi possível gravar a nova password.';
+$labels['changepasswd'] = 'Alterar palavra-passe';
+$labels['curpasswd'] = 'Palavra-passe actual:';
+$labels['newpasswd'] = 'Nova palavra-passe:';
+$labels['confpasswd'] = 'Confirmar palavra-passe:';
+$messages['nopassword'] = 'Introduza a nova palavra-passe.';
+$messages['nocurpassword'] = 'Introduza a palavra-passe actual.';
+$messages['passwordincorrect'] = 'Palavra-passe actual incorrecta.';
+$messages['passwordinconsistency'] = 'As palavras-passe não combinam, tente novamente.';
+$messages['crypterror'] = 'Não foi possível gravar a nova palavra-passe. Função de criptografia inexistente.';
+$messages['connecterror'] = 'Não foi possível gravar a nova palavra-passe. Erro de ligação.';
+$messages['internalerror'] = 'Não foi possível gravar a nova palavra-passe.';
$messages['passwordshort'] = 'A palavra-passe deve ter pelo menos $length caracteres';
$messages['passwordweak'] = 'A palavra-passe deve incluir pelo menos um numero e um sinal de pontuação.';
$messages['passwordforbidden'] = 'A palavra-passe contém caracteres não suportados.';
+$messages['firstloginchange'] = 'Este é o seu primeiro acesso. Por favor, altere a sua palavra-passe.';
?>
diff --git a/plugins/password/localization/ro_RO.inc b/plugins/password/localization/ro_RO.inc
index 004254382..74fd80765 100644
--- a/plugins/password/localization/ro_RO.inc
+++ b/plugins/password/localization/ro_RO.inc
@@ -15,7 +15,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
*/
-$labels['changepasswd'] = 'Schimbați parola';
+$labels['changepasswd'] = 'Schimbă parola';
$labels['curpasswd'] = 'Parola curentă:';
$labels['newpasswd'] = 'Parola nouă:';
$labels['confpasswd'] = 'Confirmare parola nouă:';
@@ -29,4 +29,5 @@ $messages['internalerror'] = 'Nu am reușit să salvez noua parolă.';
$messages['passwordshort'] = 'Parola trebuie să aibă minim $length caractere.';
$messages['passwordweak'] = 'Parola trebuie să conțina cel puțin un număr si un semn de punctuație.';
$messages['passwordforbidden'] = 'Parola conține caractere nepermise.';
+$messages['firstloginchange'] = 'Aceasta este prima autentificare. Te rugăm să schimbi parola.';
?>
diff --git a/plugins/password/localization/ru_RU.inc b/plugins/password/localization/ru_RU.inc
index 85b7bf2c4..d7c03477a 100644
--- a/plugins/password/localization/ru_RU.inc
+++ b/plugins/password/localization/ru_RU.inc
@@ -29,4 +29,5 @@ $messages['internalerror'] = 'Не могу сохранить новый пар
$messages['passwordshort'] = 'Длина пароля должна быть как минимум $length символов.';
$messages['passwordweak'] = 'Пароль должен включать в себя как минимум одну цифру и один знак пунктуации.';
$messages['passwordforbidden'] = 'Пароль содержит недопустимые символы.';
+$messages['firstloginchange'] = 'Вы выполнили вход впервые. Измените ваш пароль.';
?>
diff --git a/plugins/password/localization/sk_SK.inc b/plugins/password/localization/sk_SK.inc
index 51339bb7b..4cf8cb91f 100644
--- a/plugins/password/localization/sk_SK.inc
+++ b/plugins/password/localization/sk_SK.inc
@@ -29,4 +29,5 @@ $messages['internalerror'] = 'Nové heslo nemožno uložiť.';
$messages['passwordshort'] = 'Heslo musí mať najmenej $length znakov.';
$messages['passwordweak'] = 'Heslo musí obsahovať aspoň jedno číslo a jedno interpunkčné znamienko.';
$messages['passwordforbidden'] = 'Heslo obsahuje nepovolené znaky.';
+$messages['firstloginchange'] = 'Prihlásili ste sa po prvýkrát. Prosím zmeňte si prístupové heslo.';
?>
diff --git a/plugins/password/localization/sl_SI.inc b/plugins/password/localization/sl_SI.inc
index 99af3c9f5..ec9010c77 100644
--- a/plugins/password/localization/sl_SI.inc
+++ b/plugins/password/localization/sl_SI.inc
@@ -15,7 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
*/
-$labels['changepasswd'] = 'Spremeni geslo';
$labels['curpasswd'] = 'Obstoječe geslo:';
$labels['newpasswd'] = 'Novo geslo:';
$labels['confpasswd'] = 'Potrdi novo geslo:';
diff --git a/plugins/password/localization/sr_CS.inc b/plugins/password/localization/sr_CS.inc
index 0900b3112..77e2d1251 100644
--- a/plugins/password/localization/sr_CS.inc
+++ b/plugins/password/localization/sr_CS.inc
@@ -15,7 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
*/
-$labels['changepasswd'] = 'Промијени лозинку';
$labels['curpasswd'] = 'Тренутна лозинка:';
$labels['newpasswd'] = 'Нова лозинка:';
$labels['confpasswd'] = 'Поновите лозинку:';
diff --git a/plugins/password/localization/sv_SE.inc b/plugins/password/localization/sv_SE.inc
index 0aee9da81..26ee37d06 100644
--- a/plugins/password/localization/sv_SE.inc
+++ b/plugins/password/localization/sv_SE.inc
@@ -29,4 +29,5 @@ $messages['internalerror'] = 'Lösenordet kunde inte ändras.';
$messages['passwordshort'] = 'Lösenordet måste vara minst $length tecken långt.';
$messages['passwordweak'] = 'Lösenordet måste innehålla minst en siffra och ett specialtecken.';
$messages['passwordforbidden'] = 'Lösenordet innehåller otillåtna tecken.';
+$messages['firstloginchange'] = 'Du loggar in för första gången. Vänligen ändra ditt lösenord.';
?>
diff --git a/plugins/password/localization/ti.inc b/plugins/password/localization/ti.inc
index 9453318f0..fd334a957 100644
--- a/plugins/password/localization/ti.inc
+++ b/plugins/password/localization/ti.inc
@@ -15,7 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
*/
-$labels['changepasswd'] = 'መሕለፊ ቃል ይለወጥ';
$labels['curpasswd'] = 'ህልው መሕለፊ ቃል:';
$labels['newpasswd'] = 'ሓዱሽ መሕለፊ ቃል:';
$labels['confpasswd'] = 'መረጋገፂ ሓዱሽ መሕለፊ ቃል :';
diff --git a/plugins/password/localization/tr_TR.inc b/plugins/password/localization/tr_TR.inc
index 75ee30f6d..37c25c608 100644
--- a/plugins/password/localization/tr_TR.inc
+++ b/plugins/password/localization/tr_TR.inc
@@ -15,7 +15,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
*/
-$labels['changepasswd'] = 'Parolayı Değiştir';
+$labels['changepasswd'] = 'Parolayı değiştir';
$labels['curpasswd'] = 'Şimdiki Parola:';
$labels['newpasswd'] = 'Yeni Parola:';
$labels['confpasswd'] = 'Yeni Parolayı Onaylayın:';
@@ -29,4 +29,5 @@ $messages['internalerror'] = 'Yeni parola kaydedilemedi.';
$messages['passwordshort'] = 'Parola en az $length karakterden oluşmalı.';
$messages['passwordweak'] = 'Parola en az bir sayı ve bir noktalama işareti içermeli.';
$messages['passwordforbidden'] = 'Parola uygunsuz karakter(ler) içeriyor.';
+$messages['firstloginchange'] = 'Bu ilk girişiniz. Lütfen parolanızı değiştirin.';
?>
diff --git a/plugins/password/localization/uk_UA.inc b/plugins/password/localization/uk_UA.inc
index 0d102e528..d9e96d15e 100644
--- a/plugins/password/localization/uk_UA.inc
+++ b/plugins/password/localization/uk_UA.inc
@@ -15,7 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
*/
-$labels['changepasswd'] = 'Змінити пароль';
$labels['curpasswd'] = 'Поточний пароль:';
$labels['newpasswd'] = 'Новий пароль:';
$labels['confpasswd'] = 'Підтвердіть новий пароль:';
diff --git a/plugins/password/localization/vi_VN.inc b/plugins/password/localization/vi_VN.inc
index 3e5745f4d..8dcf706d8 100644
--- a/plugins/password/localization/vi_VN.inc
+++ b/plugins/password/localization/vi_VN.inc
@@ -15,7 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
*/
-$labels['changepasswd'] = 'Thay đổi mật khẩu';
$labels['curpasswd'] = 'Mật khẩu hiện tại';
$labels['newpasswd'] = 'Mật khẩu mới:';
$labels['confpasswd'] = 'Xác nhận mật khẩu mới';
diff --git a/plugins/password/localization/zh_CN.inc b/plugins/password/localization/zh_CN.inc
index 02db6e83e..681e5c7e2 100644
--- a/plugins/password/localization/zh_CN.inc
+++ b/plugins/password/localization/zh_CN.inc
@@ -15,7 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-password/
*/
-$labels['changepasswd'] = '修改密码';
$labels['curpasswd'] = '当前密码:';
$labels['newpasswd'] = '新密码:';
$labels['confpasswd'] = '确认新密码:';
diff --git a/plugins/password/localization/zh_TW.inc b/plugins/password/localization/zh_TW.inc
index e5e2414f2..22d88f042 100644
--- a/plugins/password/localization/zh_TW.inc
+++ b/plugins/password/localization/zh_TW.inc
@@ -29,4 +29,5 @@ $messages['internalerror'] = '無法更新密碼';
$messages['passwordshort'] = '您的密碼至少需 $length 個字元長';
$messages['passwordweak'] = '您的新密碼至少需含有一個數字與一個標點符號';
$messages['passwordforbidden'] = '您的密碼含有禁用字元';
+$messages['firstloginchange'] = '這是你第一次登入。請更改你的密碼。';
?>
diff --git a/plugins/password/package.xml b/plugins/password/package.xml
index 16eda1ad0..4fa023c77 100644
--- a/plugins/password/package.xml
+++ b/plugins/password/package.xml
@@ -15,9 +15,9 @@
<email>alec@alec.pl</email>
<active>yes</active>
</lead>
- <date>2013-04-28</date>
+ <date>2014-06-10</date>
<version>
- <release>3.4</release>
+ <release>3.5</release>
<api>2.0</api>
</version>
<stability>
@@ -25,9 +25,6 @@
<api>stable</api>
</stability>
<license uri="http://www.gnu.org/licenses/gpl.html">GNU GPLv3+</license>
- <notes>
-Added password_force_save option
- </notes>
<contents>
<dir baseinstalldir="/" name="/">
<file name="password.php" role="php">
@@ -114,268 +111,4 @@ Added password_force_save option
</required>
</dependencies>
<phprelease/>
- <changelog>
- <release>
- <date>2010-04-29</date>
- <time>12:00:00</time>
- <version>
- <release>1.4</release>
- <api>1.4</api>
- </version>
- <stability>
- <release>stable</release>
- <api>stable</api>
- </stability>
- <license uri="http://www.gnu.org/licenses/gpl-2.0.html">GNU GPLv2</license>
- <notes>
-- Use mail_domain value for domain variables when there is no domain in username:
- sql and ldap drivers (#1486694)
-- Created package.xml
- </notes>
- </release>
- <release>
- <date>2010-06-20</date>
- <time>12:00:00</time>
- <version>
- <release>1.5</release>
- <api>1.5</api>
- </version>
- <stability>
- <release>stable</release>
- <api>stable</api>
- </stability>
- <license uri="http://www.gnu.org/licenses/gpl-2.0.html">GNU GPLv2</license>
- <notes>
-- Removed user_login/username_local/username_domain methods,
- use rcube_user::get_username instead (#1486707)
- </notes>
- </release>
- <release>
- <date>2010-08-01</date>
- <time>09:00:00</time>
- <version>
- <release>1.6</release>
- <api>1.5</api>
- </version>
- <stability>
- <release>stable</release>
- <api>stable</api>
- </stability>
- <license uri="http://www.gnu.org/licenses/gpl-2.0.html">GNU GPLv2</license>
- <notes>
-- Added ldap_simple driver
- </notes>
- </release>
- <release>
- <date>2010-09-10</date>
- <time>09:00:00</time>
- <version>
- <release>1.7</release>
- <api>1.5</api>
- </version>
- <stability>
- <release>stable</release>
- <api>stable</api>
- </stability>
- <license uri="http://www.gnu.org/licenses/gpl-2.0.html">GNU GPLv2</license>
- <notes>
-- Added XMail driver
-- Improve security of chpasswd driver using popen instead of exec+echo (#1486987)
-- Added chpass-wrapper.py script to improve security (#1486987)
- </notes>
- </release>
- <release>
- <date>2010-09-29</date>
- <time>19:00:00</time>
- <version>
- <release>1.8</release>
- <api>1.6</api>
- </version>
- <stability>
- <release>stable</release>
- <api>stable</api>
- </stability>
- <license uri="http://www.gnu.org/licenses/gpl-2.0.html">GNU GPLv2</license>
- <notes>
-- Added possibility to display extended error messages (#1486704)
-- Added extended error messages in Poppassd driver (#1486704)
- </notes>
- </release>
- <release>
- <version>
- <release>1.9</release>
- <api>1.6</api>
- </version>
- <stability>
- <release>stable</release>
- <api>stable</api>
- </stability>
- <license uri="http://www.gnu.org/licenses/gpl-2.0.html">GNU GPLv2</license>
- <notes>
-- Added password_ldap_lchattr option (#1486927)
- </notes>
- </release>
- <release>
- <date>2010-10-07</date>
- <time>09:00:00</time>
- <version>
- <release>2.0</release>
- <api>1.6</api>
- </version>
- <stability>
- <release>stable</release>
- <api>stable</api>
- </stability>
- <license uri="http://www.gnu.org/licenses/gpl-2.0.html">GNU GPLv2</license>
- <notes>
-- Fixed SQL Injection in SQL driver when using %p or %o variables in query (#1487034)
- </notes>
- </release>
- <release>
- <date>2010-11-02</date>
- <time>09:00:00</time>
- <version>
- <release>2.1</release>
- <api>1.6</api>
- </version>
- <stability>
- <release>stable</release>
- <api>stable</api>
- </stability>
- <license uri="http://www.gnu.org/licenses/gpl-2.0.html">GNU GPLv2</license>
- <notes>
-- hMail driver: Add possibility to connect to remote host
- </notes>
- </release>
- <release>
- <date>2011-02-15</date>
- <time>12:00</time>
- <version>
- <release>2.2</release>
- <api>1.6</api>
- </version>
- <stability>
- <release>stable</release>
- <api>stable</api>
- </stability>
- <license uri="http://www.gnu.org/licenses/gpl-2.0.html">GNU GPLv2</license>
- <notes>
-- hMail driver: add username_domain detection (#1487100)
-- hMail driver: HTML tags in logged messages should be stripped off (#1487099)
-- Chpasswd driver: add newline at end of input to chpasswd binary (#1487141)
-- Fix usage of configured temp_dir instead of /tmp (#1487447)
-- ldap_simple driver: fix parse error
-- ldap/ldap_simple drivers: support %dc variable in config
-- ldap/ldap_simple drivers: support Samba password change
-- Fix extended error messages handling (#1487676)
-- Fix double request when clicking on Password tab in Firefox
-- Fix deprecated split() usage in xmail and directadmin drivers (#1487769)
-- Added option (password_log) for logging password changes
-- Virtualmin driver: Add option for setting username format (#1487781)
- </notes>
- </release>
- <release>
- <date>2011-10-26</date>
- <time>12:00</time>
- <version>
- <release>2.3</release>
- <api>1.6</api>
- </version>
- <stability>
- <release>stable</release>
- <api>stable</api>
- </stability>
- <license uri="http://www.gnu.org/licenses/gpl-2.0.html">GNU GPLv2</license>
- <notes>
-- When old and new passwords are the same, do nothing, return success (#1487823)
-- Fixed Samba password hashing in 'ldap' driver
-- Added 'password_change' hook for plugin actions after successful password change
-- Fixed bug where 'doveadm pw' command was used as dovecotpw utility
-- Improve generated crypt() passwords (#1488136)
- </notes>
- </release>
- <release>
- <date>2011-11-23</date>
- <version>
- <release>2.4</release>
- <api>1.6</api>
- </version>
- <stability>
- <release>stable</release>
- <api>stable</api>
- </stability>
- <license uri="http://www.gnu.org/licenses/gpl-2.0.html">GNU GPLv2</license>
- <notes>
-- Added option to use punycode or unicode for domain names (#1488103)
-- Save Samba password hashes in capital letters (#1488197)
- </notes>
- </release>
- <release>
- <date>2011-11-23</date>
- <version>
- <release>3.0</release>
- <api>2.0</api>
- </version>
- <stability>
- <release>stable</release>
- <api>stable</api>
- </stability>
- <license uri="http://www.gnu.org/licenses/gpl-2.0.html">GNU GPLv2</license>
- <notes>
-- Fixed drivers namespace issues
- </notes>
- </release>
- <release>
- <date>2012-03-07</date>
- <version>
- <release>3.1</release>
- <api>2.0</api>
- </version>
- <stability>
- <release>stable</release>
- <api>stable</api>
- </stability>
- <license uri="http://www.gnu.org/licenses/gpl-2.0.html">GNU GPLv2</license>
- <notes>
-- Added pw_usermod driver (#1487826)
-- Added option password_login_exceptions (#1487826)
-- Added domainfactory driver (#1487882)
-- Added DBMail driver (#1488281)
-- Helper files moved to helpers/ directory from drivers/
-- Added Expect driver (#1488363)
-- Added Samba password (#1488364)
- </notes>
- </release>
- <release>
- <date>2012-11-15</date>
- <version>
- <release>3.2</release>
- <api>2.0</api>
- </version>
- <stability>
- <release>stable</release>
- <api>stable</api>
- </stability>
- <license uri="http://www.gnu.org/licenses/gpl-2.0.html">GNU GPLv2</license>
- <notes>
-- Fix wrong (non-specific) error message on crypt or connection error (#1488808)
-- Added option to define IMAP hosts that support password changes - password_hosts
- </notes>
- </release>
- <release>
- <date>2013-03-30</date>
- <version>
- <release>3.3</release>
- <api>2.0</api>
- </version>
- <stability>
- <release>stable</release>
- <api>stable</api>
- </stability>
- <license uri="http://www.gnu.org/licenses/gpl-2.0.html">GNU GPLv2</license>
- <notes>
-Added new cPanel driver - fixes localization related issues (#1487015)
- </notes>
- </release>
- </changelog>
</package>
diff --git a/plugins/password/password.js b/plugins/password/password.js
index ae494558c..d0fd75a11 100644
--- a/plugins/password/password.js
+++ b/plugins/password/password.js
@@ -15,30 +15,33 @@
* for the JavaScript code in this file.
*/
-if (window.rcmail) {
- rcmail.addEventListener('init', function(evt) {
-
+window.rcmail && rcmail.addEventListener('init', function(evt) {
// register command handler
- rcmail.register_command('plugin.password-save', function() {
- var input_curpasswd = rcube_find_object('_curpasswd'),
- input_newpasswd = rcube_find_object('_newpasswd'),
- input_confpasswd = rcube_find_object('_confpasswd');
+ rcmail.register_command('plugin.password-save', function() {
+ var input_curpasswd = rcube_find_object('_curpasswd'),
+ input_newpasswd = rcube_find_object('_newpasswd'),
+ input_confpasswd = rcube_find_object('_confpasswd');
if (input_curpasswd && input_curpasswd.value == '') {
alert(rcmail.gettext('nocurpassword', 'password'));
input_curpasswd.focus();
- } else if (input_newpasswd && input_newpasswd.value == '') {
+ }
+ else if (input_newpasswd && input_newpasswd.value == '') {
alert(rcmail.gettext('nopassword', 'password'));
input_newpasswd.focus();
- } else if (input_confpasswd && input_confpasswd.value == '') {
+ }
+ else if (input_confpasswd && input_confpasswd.value == '') {
alert(rcmail.gettext('nopassword', 'password'));
input_confpasswd.focus();
- } else if (input_newpasswd && input_confpasswd && input_newpasswd.value != input_confpasswd.value) {
+ }
+ else if (input_newpasswd && input_confpasswd && input_newpasswd.value != input_confpasswd.value) {
alert(rcmail.gettext('passwordinconsistency', 'password'));
input_newpasswd.focus();
- } else {
+ }
+ else {
rcmail.gui_objects.passform.submit();
}
}, true);
- })
-}
+
+ $('input:not(:hidden):first').focus();
+});
diff --git a/plugins/password/password.php b/plugins/password/password.php
index 83f951b98..0db57afc6 100644
--- a/plugins/password/password.php
+++ b/plugins/password/password.php
@@ -40,74 +40,78 @@ define('PASSWORD_SUCCESS', 0);
*/
class password extends rcube_plugin
{
- public $task = 'settings';
+ public $task = 'settings|login';
public $noframe = true;
public $noajax = true;
+ private $newuser = false;
+
function init()
{
$rcmail = rcmail::get_instance();
$this->load_config();
- // Host exceptions
- $hosts = $rcmail->config->get('password_hosts');
- if (!empty($hosts) && !in_array($_SESSION['storage_host'], $hosts)) {
- return;
- }
-
- // Login exceptions
- if ($exceptions = $rcmail->config->get('password_login_exceptions')) {
- $exceptions = array_map('trim', (array) $exceptions);
- $exceptions = array_filter($exceptions);
- $username = $_SESSION['username'];
-
- foreach ($exceptions as $ec) {
- if ($username === $ec) {
- return;
- }
+ if ($rcmail->task == 'settings') {
+ if (!$this->check_host_login_exceptions()) {
+ return;
}
- }
- $this->add_hook('settings_actions', array($this, 'settings_actions'));
+ $this->add_texts('localization/');
- $this->register_action('plugin.password', array($this, 'password_init'));
- $this->register_action('plugin.password-save', array($this, 'password_save'));
+ $this->add_hook('settings_actions', array($this, 'settings_actions'));
+ $this->register_action('plugin.password', array($this, 'password_init'));
+ $this->register_action('plugin.password-save', array($this, 'password_save'));
- if (strpos($rcmail->action, 'plugin.password') === 0) {
- $this->include_script('password.js');
+ if (strpos($rcmail->action, 'plugin.password') === 0) {
+ $this->include_script('password.js');
+ }
+ }
+ else if ($rcmail->config->get('password_force_new_user')) {
+ $this->add_hook('user_create', array($this, 'user_create'));
+ $this->add_hook('login_after', array($this, 'login_after'));
}
}
function settings_actions($args)
{
// register as settings action
- $args['actions'][] = array('action' => 'plugin.password', 'class' => 'password', 'label' => 'password', 'domain' => 'password');
+ $args['actions'][] = array(
+ 'action' => 'plugin.password',
+ 'class' => 'password',
+ 'label' => 'password',
+ 'title' => 'changepasswd',
+ 'domain' => 'password',
+ );
+
return $args;
}
function password_init()
{
- $this->add_texts('localization/');
$this->register_handler('plugin.body', array($this, 'password_form'));
$rcmail = rcmail::get_instance();
$rcmail->output->set_pagetitle($this->gettext('changepasswd'));
+
+ if (rcube_utils::get_input_value('_first', rcube_utils::INPUT_GET)) {
+ $rcmail->output->command('display_message', $this->gettext('firstloginchange'), 'notice');
+ }
+
$rcmail->output->send('plugin');
}
function password_save()
{
- $rcmail = rcmail::get_instance();
-
- $this->add_texts('localization/');
$this->register_handler('plugin.body', array($this, 'password_form'));
+
+ $rcmail = rcmail::get_instance();
$rcmail->output->set_pagetitle($this->gettext('changepasswd'));
$confirm = $rcmail->config->get('password_confirm_current');
$required_length = intval($rcmail->config->get('password_minimum_length'));
- $check_strength = $rcmail->config->get('password_require_nonalpha');
+ $check_strength = $rcmail->config->get('password_require_nonalpha');
if (($confirm && !isset($_POST['_curpasswd'])) || !isset($_POST['_newpasswd'])) {
$rcmail->output->command('display_message', $this->gettext('nopassword'), 'error');
@@ -222,22 +226,41 @@ class password extends rcube_plugin
$table->add('title', html::label($field_id, rcube::Q($this->gettext('confpasswd'))));
$table->add(null, $input_confpasswd->show());
+ $rules = '';
+
+ $required_length = intval($rcmail->config->get('password_minimum_length'));
+ if ($required_length > 0) {
+ $rules .= html::tag('li', array('id' => 'required-length'), $this->gettext(array(
+ 'name' => 'passwordshort',
+ 'vars' => array('length' => $required_length)
+ )));
+ }
+
+ if ($rcmail->config->get('password_require_nonalpha')) {
+ $rules .= html::tag('li', array('id' => 'require-nonalpha'), $this->gettext('passwordweak'));
+ }
+
+ if (!empty($rules)) {
+ $rules = html::tag('ul', array('id' => 'ruleslist'), $rules);
+ }
+
$out = html::div(array('class' => 'box'),
html::div(array('id' => 'prefs-title', 'class' => 'boxtitle'), $this->gettext('changepasswd')) .
html::div(array('class' => 'boxcontent'), $table->show() .
+ $rules .
html::p(null,
$rcmail->output->button(array(
'command' => 'plugin.password-save',
- 'type' => 'input',
- 'class' => 'button mainaction',
- 'label' => 'save'
+ 'type' => 'input',
+ 'class' => 'button mainaction',
+ 'label' => 'save'
)))));
$rcmail->output->add_gui_object('passform', 'password-form');
return $rcmail->output->form_tag(array(
- 'id' => 'password-form',
- 'name' => 'password-form',
+ 'id' => 'password-form',
+ 'name' => 'password-form',
'method' => 'post',
'action' => './?_task=settings&_action=plugin.password-save',
), $out);
@@ -300,4 +323,48 @@ class password extends rcube_plugin
return $reason;
}
+
+ function user_create($args)
+ {
+ $this->newuser = true;
+ return $args;
+ }
+
+ function login_after($args)
+ {
+ if ($this->newuser && $this->check_host_login_exceptions()) {
+ $args['_task'] = 'settings';
+ $args['_action'] = 'plugin.password';
+ $args['_first'] = 'true';
+ }
+
+ return $args;
+ }
+
+ // Check if host and login is allowed to change the password, false = not allowed, true = not allowed
+ private function check_host_login_exceptions()
+ {
+ $rcmail = rcmail::get_instance();
+
+ // Host exceptions
+ $hosts = $rcmail->config->get('password_hosts');
+ if (!empty($hosts) && !in_array($_SESSION['storage_host'], $hosts)) {
+ return false;
+ }
+
+ // Login exceptions
+ if ($exceptions = $rcmail->config->get('password_login_exceptions')) {
+ $exceptions = array_map('trim', (array) $exceptions);
+ $exceptions = array_filter($exceptions);
+ $username = $_SESSION['username'];
+
+ foreach ($exceptions as $ec) {
+ if ($username === $ec) {
+ return false;
+ }
+ }
+ }
+
+ return true;
+ }
}
diff --git a/plugins/subscriptions_option/localization/ar_SA.inc b/plugins/subscriptions_option/localization/ar_SA.inc
new file mode 100644
index 000000000..b27a13d95
--- /dev/null
+++ b/plugins/subscriptions_option/localization/ar_SA.inc
@@ -0,0 +1,19 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | plugins/subscriptions_option/localization/<lang>.inc |
+ | |
+ | Localization file of the Roundcube Webmail Subscriptions plugin |
+ | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | |
+ | Licensed under the GNU General Public License version 3 or |
+ | any later version with exceptions for skins & plugins. |
+ | See the README file for a full license statement. |
+ | |
+ +-----------------------------------------------------------------------+
+
+ For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-subscriptions_option/
+*/
+$labels['useimapsubscriptions'] = 'استخدم اشتراكات IMAP';
+?>
diff --git a/plugins/subscriptions_option/localization/ast.inc b/plugins/subscriptions_option/localization/ast.inc
new file mode 100644
index 000000000..47a8e142c
--- /dev/null
+++ b/plugins/subscriptions_option/localization/ast.inc
@@ -0,0 +1,19 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | plugins/subscriptions_option/localization/<lang>.inc |
+ | |
+ | Localization file of the Roundcube Webmail Subscriptions plugin |
+ | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | |
+ | Licensed under the GNU General Public License version 3 or |
+ | any later version with exceptions for skins & plugins. |
+ | See the README file for a full license statement. |
+ | |
+ +-----------------------------------------------------------------------+
+
+ For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-subscriptions_option/
+*/
+$labels['useimapsubscriptions'] = 'Usar soscripciones IMAP';
+?>
diff --git a/plugins/subscriptions_option/localization/ml_IN.inc b/plugins/subscriptions_option/localization/ml_IN.inc
new file mode 100644
index 000000000..84f518a85
--- /dev/null
+++ b/plugins/subscriptions_option/localization/ml_IN.inc
@@ -0,0 +1,19 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | plugins/subscriptions_option/localization/<lang>.inc |
+ | |
+ | Localization file of the Roundcube Webmail Subscriptions plugin |
+ | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | |
+ | Licensed under the GNU General Public License version 3 or |
+ | any later version with exceptions for skins & plugins. |
+ | See the README file for a full license statement. |
+ | |
+ +-----------------------------------------------------------------------+
+
+ For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-subscriptions_option/
+*/
+$labels['useimapsubscriptions'] = 'IMAP വരിസംഖ്യകൾ ഉപയോഗിക്കുക';
+?>
diff --git a/plugins/subscriptions_option/subscriptions_option.php b/plugins/subscriptions_option/subscriptions_option.php
index 130f16a8b..5b926f2af 100644
--- a/plugins/subscriptions_option/subscriptions_option.php
+++ b/plugins/subscriptions_option/subscriptions_option.php
@@ -86,7 +86,9 @@ class subscriptions_option extends rcube_plugin
{
$rcmail = rcmail::get_instance();
if (!$rcmail->config->get('use_subscriptions', true)) {
- $args['table']->remove_column('subscribed');
+ foreach ($args['list'] as $idx => $data) {
+ $args['list'][$idx]['content'] = preg_replace('/<input [^>]+>/', '', $data['content']);
+ }
}
return $args;
}
diff --git a/plugins/userinfo/localization/ast.inc b/plugins/userinfo/localization/ast.inc
index 179c5ba29..e70d0a6d7 100644
--- a/plugins/userinfo/localization/ast.inc
+++ b/plugins/userinfo/localization/ast.inc
@@ -17,6 +17,6 @@
*/
$labels['userinfo'] = 'Información d\'usuariu';
$labels['created'] = 'Creáu';
-$labels['lastlogin'] = 'Cabera conexón';
-$labels['defaultidentity'] = 'Identidá predeterminada';
+$labels['lastlogin'] = 'Aniciu de sesión caberu';
+$labels['defaultidentity'] = 'Identidá por defeutu';
?> \ No newline at end of file
diff --git a/plugins/userinfo/localization/ko_KR.inc b/plugins/userinfo/localization/ko_KR.inc
index 5a95d2e77..98d4fc2e3 100644
--- a/plugins/userinfo/localization/ko_KR.inc
+++ b/plugins/userinfo/localization/ko_KR.inc
@@ -16,7 +16,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-userinfo/
*/
$labels['userinfo'] = '사용자 정보';
-$labels['created'] = '생성됨';
+$labels['created'] = '생성함';
$labels['lastlogin'] = '마지막 로그인';
-$labels['defaultidentity'] = '기본 신분증';
+$labels['defaultidentity'] = '기본 신원';
?> \ No newline at end of file
diff --git a/plugins/vcard_attachments/localization/ast.inc b/plugins/vcard_attachments/localization/ast.inc
new file mode 100644
index 000000000..899e8a2d0
--- /dev/null
+++ b/plugins/vcard_attachments/localization/ast.inc
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | plugins/vcard_attachments/localization/<lang>.inc |
+ | |
+ | Localization file of the Roundcube Webmail Vcard Attachments plugin |
+ | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | |
+ | Licensed under the GNU General Public License version 3 or |
+ | any later version with exceptions for skins & plugins. |
+ | See the README file for a full license statement. |
+ | |
+ +-----------------------------------------------------------------------+
+
+ For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-vcard_attachments/
+*/
+$labels['addvcardmsg'] = 'Amestar vCard a la llibreta de direiciones';
+$labels['vcardsavefailed'] = 'Nun pue guardase la vCard';
+?> \ No newline at end of file
diff --git a/plugins/vcard_attachments/localization/ko_KR.inc b/plugins/vcard_attachments/localization/ko_KR.inc
index b9b6906d2..fbbb73921 100644
--- a/plugins/vcard_attachments/localization/ko_KR.inc
+++ b/plugins/vcard_attachments/localization/ko_KR.inc
@@ -15,6 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-vcard_attachments/
*/
-$labels['addvcardmsg'] = '주소록에 vCard를 추가';
-$labels['vcardsavefailed'] = 'vCard 저장이 불가능함';
+$labels['addvcardmsg'] = '주소록에 vCard 추가';
+$labels['vcardsavefailed'] = 'vCard를 저장할 수 없음';
?> \ No newline at end of file
diff --git a/plugins/vcard_attachments/skins/larry/style.css b/plugins/vcard_attachments/skins/larry/style.css
index eb70082ee..4f9f61b81 100644
--- a/plugins/vcard_attachments/skins/larry/style.css
+++ b/plugins/vcard_attachments/skins/larry/style.css
@@ -4,14 +4,9 @@ p.vcardattachment {
width: auto;
background: #f9f9f9;
border: 1px solid #d3d3d3;
- border-radius:4px;
- -moz-border-radius: 4px;
- -webkit-border-radius: 4px;
border-radius: 4px;
box-shadow: 0 0 2px #ccc;
- -o-box-shadow: 0 0 2px #ccc;
-webkit-box-shadow: 0 0 2px #ccc;
- -moz-box-shadow: 0 0 2px #ccc;
}
p.vcardattachment a {
diff --git a/plugins/zipdownload/localization/ar.inc b/plugins/zipdownload/localization/ar.inc
index c5857c96c..ac8585000 100644
--- a/plugins/zipdownload/localization/ar.inc
+++ b/plugins/zipdownload/localization/ar.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,3 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'تنزيل كل المرفقات';
-$labels['downloadfolder'] = 'تنزيل المجلد';
-?> \ No newline at end of file
diff --git a/plugins/zipdownload/localization/ar_SA.inc b/plugins/zipdownload/localization/ar_SA.inc
index dd5f5f349..e8652a182 100644
--- a/plugins/zipdownload/localization/ar_SA.inc
+++ b/plugins/zipdownload/localization/ar_SA.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,3 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'تحميل جميع المرفقات';
-$labels['downloadfolder'] = 'تحميل المجلد';
-?> \ No newline at end of file
diff --git a/plugins/zipdownload/localization/ast.inc b/plugins/zipdownload/localization/ast.inc
new file mode 100644
index 000000000..74bb0ff52
--- /dev/null
+++ b/plugins/zipdownload/localization/ast.inc
@@ -0,0 +1,22 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | plugins/zipdownload/localization/<lang>.inc |
+ | |
+ | Localization file of the Roundcube Webmail Zipdownload plugin |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
+ | |
+ | Licensed under the GNU General Public License version 3 or |
+ | any later version with exceptions for skins & plugins. |
+ | See the README file for a full license statement. |
+ | |
+ +-----------------------------------------------------------------------+
+
+ For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
+*/
+$labels['downloadall'] = 'Descargar tolos axuntos';
+$labels['download'] = 'Descargar...';
+$labels['downloadmbox'] = 'Formatu Mbox (.zip)';
+$labels['downloadmaildir'] = 'Formatu Maildir (.zip)';
+$labels['downloademl'] = 'Fonte (.eml)';
diff --git a/plugins/zipdownload/localization/az_AZ.inc b/plugins/zipdownload/localization/az_AZ.inc
index af785b48d..cc93b8aa8 100644
--- a/plugins/zipdownload/localization/az_AZ.inc
+++ b/plugins/zipdownload/localization/az_AZ.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,3 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'Bütün qoşmaları endir';
-$labels['downloadfolder'] = 'Qovluğu endir';
-?> \ No newline at end of file
diff --git a/plugins/zipdownload/localization/be_BE.inc b/plugins/zipdownload/localization/be_BE.inc
index 7c6fb3876..80d2bdbc2 100644
--- a/plugins/zipdownload/localization/be_BE.inc
+++ b/plugins/zipdownload/localization/be_BE.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'Спампаваць усе далучэнні';
-$labels['downloadfolder'] = 'Спампаваць папку';
-?> \ No newline at end of file
+$labels['download'] = 'Сцягнуць...';
+$labels['downloadmbox'] = 'Фармат mbox (.zip)';
+$labels['downloadmaildir'] = 'Фармат maildir (.zip)';
+$labels['downloademl'] = 'Выточны файл (.eml)';
diff --git a/plugins/zipdownload/localization/bg_BG.inc b/plugins/zipdownload/localization/bg_BG.inc
index 69f91f6f2..36bf5389c 100644
--- a/plugins/zipdownload/localization/bg_BG.inc
+++ b/plugins/zipdownload/localization/bg_BG.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'Изтегляне на всички прикачени файлове';
-$labels['downloadfolder'] = 'Изтегляне на папка';
-?> \ No newline at end of file
+$labels['download'] = 'Изтегляне...';
+$labels['downloadmbox'] = 'Mbox формат (.zip)';
+$labels['downloadmaildir'] = 'Maildir формат (.zip)';
+$labels['downloademl'] = 'Outlook формат (.eml)';
diff --git a/plugins/zipdownload/localization/br.inc b/plugins/zipdownload/localization/br.inc
index 0d7da382b..158b6f0ea 100644
--- a/plugins/zipdownload/localization/br.inc
+++ b/plugins/zipdownload/localization/br.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,3 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'Pellgargañ an holl stagadennoù';
-$labels['downloadfolder'] = 'Pellgargañ an teuliad';
-?> \ No newline at end of file
diff --git a/plugins/zipdownload/localization/bs_BA.inc b/plugins/zipdownload/localization/bs_BA.inc
index ea72831af..d6389f995 100644
--- a/plugins/zipdownload/localization/bs_BA.inc
+++ b/plugins/zipdownload/localization/bs_BA.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'Preuzmi sve priloge';
-$labels['downloadfolder'] = 'Preuzmi folder';
-?> \ No newline at end of file
+$labels['download'] = 'Preuzmi...';
+$labels['downloadmbox'] = 'Mbox format (.zip)';
+$labels['downloadmaildir'] = 'Maildir format (.zip)';
+$labels['downloademl'] = 'Izvorno (.eml)';
diff --git a/plugins/zipdownload/localization/ca_ES.inc b/plugins/zipdownload/localization/ca_ES.inc
index bf5640ec6..c8dd680ef 100644
--- a/plugins/zipdownload/localization/ca_ES.inc
+++ b/plugins/zipdownload/localization/ca_ES.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'Descarrega tots els adjunts';
-$labels['downloadfolder'] = 'Descarrega la carpeta';
-?> \ No newline at end of file
+$labels['download'] = 'Descarrega...';
+$labels['downloadmbox'] = 'Format mbox (.zip)';
+$labels['downloadmaildir'] = 'Format maildir (.zip)';
+$labels['downloademl'] = 'Codi font (.eml)';
diff --git a/plugins/zipdownload/localization/cs_CZ.inc b/plugins/zipdownload/localization/cs_CZ.inc
index d96b1f570..9c4d45fd3 100644
--- a/plugins/zipdownload/localization/cs_CZ.inc
+++ b/plugins/zipdownload/localization/cs_CZ.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'Stáhnout všechny přílohy';
-$labels['downloadfolder'] = 'Stáhnout složku';
-?> \ No newline at end of file
+$labels['download'] = 'Stáhnout...';
+$labels['downloadmbox'] = 'Formát mbox (.zip)';
+$labels['downloadmaildir'] = 'Formát maildir (.zip)';
+$labels['downloademl'] = 'Zdroj (.eml)';
diff --git a/plugins/zipdownload/localization/cy_GB.inc b/plugins/zipdownload/localization/cy_GB.inc
index 3c9fc7580..d0a60f0d6 100644
--- a/plugins/zipdownload/localization/cy_GB.inc
+++ b/plugins/zipdownload/localization/cy_GB.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'Llwytho lawr holl atodiadau';
-$labels['downloadfolder'] = 'Ffolder llwytho lawr';
-?> \ No newline at end of file
+$labels['download'] = 'Llwytho lawr...';
+$labels['downloadmbox'] = 'Fformat mbox (.zip)';
+$labels['downloadmaildir'] = 'Fformat maildir (.zip)';
+$labels['downloademl'] = 'Ffynhonnell (.eml)';
diff --git a/plugins/zipdownload/localization/da_DK.inc b/plugins/zipdownload/localization/da_DK.inc
index 9e29018d5..7cf98144c 100644
--- a/plugins/zipdownload/localization/da_DK.inc
+++ b/plugins/zipdownload/localization/da_DK.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'Download alle som .zip-fil';
-$labels['downloadfolder'] = 'Download folder som .zip-fil';
-?> \ No newline at end of file
+$labels['download'] = 'Download...';
+$labels['downloadmbox'] = 'Mbox format (.zip)';
+$labels['downloadmaildir'] = 'Maildir format (.zip)';
+$labels['downloademl'] = 'Kilde (.eml)';
diff --git a/plugins/zipdownload/localization/de_CH.inc b/plugins/zipdownload/localization/de_CH.inc
index 978c221b0..f1a180e8b 100644
--- a/plugins/zipdownload/localization/de_CH.inc
+++ b/plugins/zipdownload/localization/de_CH.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'Alle Anhänge herunterladen';
-$labels['downloadfolder'] = 'Ordner herunterladen';
-?> \ No newline at end of file
+$labels['download'] = 'Download...';
+$labels['downloadmbox'] = 'Mbox Format (.zip)';
+$labels['downloadmaildir'] = 'Maildir Format (.zip)';
+$labels['downloademl'] = 'Source (.eml)';
diff --git a/plugins/zipdownload/localization/de_DE.inc b/plugins/zipdownload/localization/de_DE.inc
index 978c221b0..d3dadc025 100644
--- a/plugins/zipdownload/localization/de_DE.inc
+++ b/plugins/zipdownload/localization/de_DE.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'Alle Anhänge herunterladen';
-$labels['downloadfolder'] = 'Ordner herunterladen';
-?> \ No newline at end of file
+$labels['download'] = 'Herunterladen...';
+$labels['downloadmbox'] = 'Mbox-Format (.zip)';
+$labels['downloadmaildir'] = 'Maildir-Format (.zip)';
+$labels['downloademl'] = 'Quelltext (.eml)';
diff --git a/plugins/zipdownload/localization/en_CA.inc b/plugins/zipdownload/localization/en_CA.inc
index 48a8d9bcb..c3400d971 100644
--- a/plugins/zipdownload/localization/en_CA.inc
+++ b/plugins/zipdownload/localization/en_CA.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'Download all attachments';
-$labels['downloadfolder'] = 'Download folder';
-?> \ No newline at end of file
+$labels['download'] = 'Download...';
+$labels['downloadmbox'] = 'Mbox format (.zip)';
+$labels['downloadmaildir'] = 'Maildir format (.zip)';
+$labels['downloademl'] = 'Source (.eml)';
diff --git a/plugins/zipdownload/localization/en_GB.inc b/plugins/zipdownload/localization/en_GB.inc
index 48a8d9bcb..c3400d971 100644
--- a/plugins/zipdownload/localization/en_GB.inc
+++ b/plugins/zipdownload/localization/en_GB.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'Download all attachments';
-$labels['downloadfolder'] = 'Download folder';
-?> \ No newline at end of file
+$labels['download'] = 'Download...';
+$labels['downloadmbox'] = 'Mbox format (.zip)';
+$labels['downloadmaildir'] = 'Maildir format (.zip)';
+$labels['downloademl'] = 'Source (.eml)';
diff --git a/plugins/zipdownload/localization/eo.inc b/plugins/zipdownload/localization/eo.inc
index bc6ef9d69..729052489 100644
--- a/plugins/zipdownload/localization/eo.inc
+++ b/plugins/zipdownload/localization/eo.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,3 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'Elŝuti ĉiujn kunsendaĵojn';
-$labels['downloadfolder'] = 'Elŝuti dosierujon';
-?> \ No newline at end of file
diff --git a/plugins/zipdownload/localization/es_419.inc b/plugins/zipdownload/localization/es_419.inc
index a25e34266..095926cb0 100644
--- a/plugins/zipdownload/localization/es_419.inc
+++ b/plugins/zipdownload/localization/es_419.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'Descargar todos los archivos adjuntos';
-$labels['downloadfolder'] = 'Descargar carpeta';
-?> \ No newline at end of file
+$labels['download'] = 'Descargando...';
+$labels['downloadmbox'] = 'Formato mbox (.zip)';
+$labels['downloadmaildir'] = 'Formato maildir (.zip)';
+$labels['downloademl'] = 'Fuente (.eml)';
diff --git a/plugins/zipdownload/localization/es_AR.inc b/plugins/zipdownload/localization/es_AR.inc
index 9f20f5561..5a4d24ad5 100644
--- a/plugins/zipdownload/localization/es_AR.inc
+++ b/plugins/zipdownload/localization/es_AR.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'Descargar Todo';
-$labels['downloadfolder'] = 'Descargar carpeta';
-?> \ No newline at end of file
+$labels['download'] = 'Descargar...';
+$labels['downloadmbox'] = 'Formato Mbox (.zip)';
+$labels['downloadmaildir'] = 'Formato Maildir (.zip)';
+$labels['downloademl'] = 'Original (.eml)';
diff --git a/plugins/zipdownload/localization/es_ES.inc b/plugins/zipdownload/localization/es_ES.inc
index 22db2cda9..1c95b7f3e 100644
--- a/plugins/zipdownload/localization/es_ES.inc
+++ b/plugins/zipdownload/localization/es_ES.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'Descargar todos los adjuntos';
-$labels['downloadfolder'] = 'Descargar carpeta';
-?> \ No newline at end of file
+$labels['download'] = 'Descargar...';
+$labels['downloadmbox'] = 'Formato mbox (.zip)';
+$labels['downloadmaildir'] = 'Formato maildir (.zip)';
+$labels['downloademl'] = 'Fuente (.eml)';
diff --git a/plugins/zipdownload/localization/et_EE.inc b/plugins/zipdownload/localization/et_EE.inc
index 969658bc2..8b671b655 100644
--- a/plugins/zipdownload/localization/et_EE.inc
+++ b/plugins/zipdownload/localization/et_EE.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,3 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'Laadi alla kõik manused';
-$labels['downloadfolder'] = 'Allalaadimiste kaust';
-?> \ No newline at end of file
diff --git a/plugins/zipdownload/localization/eu_ES.inc b/plugins/zipdownload/localization/eu_ES.inc
index 0be09c8b2..3d923f11d 100644
--- a/plugins/zipdownload/localization/eu_ES.inc
+++ b/plugins/zipdownload/localization/eu_ES.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'Deskargatu eranskin guztiak';
-$labels['downloadfolder'] = 'Deskargatu karpeta';
-?> \ No newline at end of file
+$labels['download'] = 'Deskargatu...';
+$labels['downloadmbox'] = 'Mbox formatua (.zip)';
+$labels['downloadmaildir'] = 'Maildir formatua (.zip)';
+$labels['downloademl'] = 'Iturburua (.eml)';
diff --git a/plugins/zipdownload/localization/fa_AF.inc b/plugins/zipdownload/localization/fa_AF.inc
index 57bb55ea4..89e898fc9 100644
--- a/plugins/zipdownload/localization/fa_AF.inc
+++ b/plugins/zipdownload/localization/fa_AF.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,3 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'بارگزاری همه ضمیمه ها';
-$labels['downloadfolder'] = 'بارگزاری پوشه';
-?> \ No newline at end of file
diff --git a/plugins/zipdownload/localization/fa_IR.inc b/plugins/zipdownload/localization/fa_IR.inc
index 46007a0fb..433478777 100644
--- a/plugins/zipdownload/localization/fa_IR.inc
+++ b/plugins/zipdownload/localization/fa_IR.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,3 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'بارگیری همه پیوست‌ها';
-$labels['downloadfolder'] = 'بارگیری پوشه';
-?> \ No newline at end of file
diff --git a/plugins/zipdownload/localization/fi_FI.inc b/plugins/zipdownload/localization/fi_FI.inc
index 7e2c3137d..fed2d9cf3 100644
--- a/plugins/zipdownload/localization/fi_FI.inc
+++ b/plugins/zipdownload/localization/fi_FI.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'Lataa kaikki liitteet';
-$labels['downloadfolder'] = 'Lataa kansio';
-?> \ No newline at end of file
+$labels['download'] = 'Lataa...';
+$labels['downloadmbox'] = 'Mbox-muoto (.zip)';
+$labels['downloadmaildir'] = 'Maildir-muoto (.zip)';
+$labels['downloademl'] = 'Lähde (.eml)';
diff --git a/plugins/zipdownload/localization/gl_ES.inc b/plugins/zipdownload/localization/gl_ES.inc
index 91fc14651..04912f4fb 100644
--- a/plugins/zipdownload/localization/gl_ES.inc
+++ b/plugins/zipdownload/localization/gl_ES.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'Descargar todos os adxuntos';
-$labels['downloadfolder'] = 'Descargar o cartafol';
-?> \ No newline at end of file
+$labels['download'] = 'Descargar';
+$labels['downloadmbox'] = 'En formato mbox (.zip)';
+$labels['downloadmaildir'] = 'En formato maildir (.zip)';
+$labels['downloademl'] = 'Código fonte (.eml)';
diff --git a/plugins/zipdownload/localization/he_IL.inc b/plugins/zipdownload/localization/he_IL.inc
index 0df6191fa..50521fc6c 100644
--- a/plugins/zipdownload/localization/he_IL.inc
+++ b/plugins/zipdownload/localization/he_IL.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'להוריד את כל הצרופות';
-$labels['downloadfolder'] = 'תיקיית צרופות';
-?> \ No newline at end of file
+$labels['download'] = 'מוריד כעת...';
+$labels['downloadmbox'] = 'פורמט Mbox &rlm;(zip.)';
+$labels['downloadmaildir'] = 'פורמט Maildir &rlm;(zip.)';
+$labels['downloademl'] = 'מקור (eml.)';
diff --git a/plugins/zipdownload/localization/hu_HU.inc b/plugins/zipdownload/localization/hu_HU.inc
index 85179e5a6..557d14ceb 100644
--- a/plugins/zipdownload/localization/hu_HU.inc
+++ b/plugins/zipdownload/localization/hu_HU.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'Összes csatolmány letöltése';
-$labels['downloadfolder'] = 'Könyvtár letöltése';
-?> \ No newline at end of file
+$labels['download'] = 'Letöltés...';
+$labels['downloadmbox'] = 'Mbox formátum (.zip)';
+$labels['downloadmaildir'] = 'Maildir formátum (.zip)';
+$labels['downloademl'] = 'Forrás (.eml)';
diff --git a/plugins/zipdownload/localization/id_ID.inc b/plugins/zipdownload/localization/id_ID.inc
index 2ff3c87df..ca1abc85e 100644
--- a/plugins/zipdownload/localization/id_ID.inc
+++ b/plugins/zipdownload/localization/id_ID.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,3 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'Unduh semua lampiran';
-$labels['downloadfolder'] = 'Folder download';
-?> \ No newline at end of file
diff --git a/plugins/zipdownload/localization/it_IT.inc b/plugins/zipdownload/localization/it_IT.inc
index 882e354d9..96cd8898d 100644
--- a/plugins/zipdownload/localization/it_IT.inc
+++ b/plugins/zipdownload/localization/it_IT.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'Scarica tutti gli allegati';
-$labels['downloadfolder'] = 'Scarica cartella';
-?> \ No newline at end of file
+$labels['download'] = 'Scaricare...';
+$labels['downloadmbox'] = 'Formato mbox (.zip)';
+$labels['downloadmaildir'] = 'Formato maildir (.zip)';
+$labels['downloademl'] = 'Sorgente (.eml)';
diff --git a/plugins/zipdownload/localization/ja_JP.inc b/plugins/zipdownload/localization/ja_JP.inc
index a0388808d..71a8143a4 100644
--- a/plugins/zipdownload/localization/ja_JP.inc
+++ b/plugins/zipdownload/localization/ja_JP.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'すべての添付ファイルをダウンロード';
-$labels['downloadfolder'] = 'ダウンロード先のフォルダー';
-?> \ No newline at end of file
+$labels['download'] = 'ダウンロード...';
+$labels['downloadmbox'] = 'mbox形式(.zip)';
+$labels['downloadmaildir'] = 'Maildir形式(.zip)';
+$labels['downloademl'] = 'ソース(.eml)';
diff --git a/plugins/zipdownload/localization/ko_KR.inc b/plugins/zipdownload/localization/ko_KR.inc
index cae831353..2cc610ae7 100644
--- a/plugins/zipdownload/localization/ko_KR.inc
+++ b/plugins/zipdownload/localization/ko_KR.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = '모든 첨부파일을 다운로드';
-$labels['downloadfolder'] = '다운로드 폴더';
-?> \ No newline at end of file
+$labels['download'] = '다운로드...';
+$labels['downloadmbox'] = 'Mbox 형식(.zip)';
+$labels['downloadmaildir'] = 'Maildir 형식(.zip)';
+$labels['downloademl'] = '소스(.eml)';
diff --git a/plugins/zipdownload/localization/lb_LU.inc b/plugins/zipdownload/localization/lb_LU.inc
index 434b064dd..70e60595c 100644
--- a/plugins/zipdownload/localization/lb_LU.inc
+++ b/plugins/zipdownload/localization/lb_LU.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'All d\'Unhäng eroflueden';
-$labels['downloadfolder'] = 'Dossier eroflueden';
-?> \ No newline at end of file
+$labels['download'] = 'Eroflueden...';
+$labels['downloadmbox'] = 'Mbox-Format (.zip)';
+$labels['downloadmaildir'] = 'Maildir-Format (.zip)';
+$labels['downloademl'] = 'Source (.eml)';
diff --git a/plugins/zipdownload/localization/lt_LT.inc b/plugins/zipdownload/localization/lt_LT.inc
index 9b4a13310..85ecb9b09 100644
--- a/plugins/zipdownload/localization/lt_LT.inc
+++ b/plugins/zipdownload/localization/lt_LT.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'Atsisiųsti visus priedus';
-$labels['downloadfolder'] = 'Atsisiųsti aplanką';
-?> \ No newline at end of file
+$labels['download'] = 'Parsisiųsti...';
+$labels['downloadmbox'] = 'Mbox formatas (.zip)';
+$labels['downloadmaildir'] = 'Maildir formatas (.zip)';
+$labels['downloademl'] = 'Kodas (.eml)';
diff --git a/plugins/zipdownload/localization/lv_LV.inc b/plugins/zipdownload/localization/lv_LV.inc
index b23417abc..9dcf4cd81 100644
--- a/plugins/zipdownload/localization/lv_LV.inc
+++ b/plugins/zipdownload/localization/lv_LV.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,3 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'Lejupielādēt visus pielikumus';
-$labels['downloadfolder'] = 'Lejupielādēt mapi';
-?> \ No newline at end of file
diff --git a/plugins/zipdownload/localization/ml_IN.inc b/plugins/zipdownload/localization/ml_IN.inc
new file mode 100644
index 000000000..3dcaffa1f
--- /dev/null
+++ b/plugins/zipdownload/localization/ml_IN.inc
@@ -0,0 +1,22 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | plugins/zipdownload/localization/<lang>.inc |
+ | |
+ | Localization file of the Roundcube Webmail Zipdownload plugin |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
+ | |
+ | Licensed under the GNU General Public License version 3 or |
+ | any later version with exceptions for skins & plugins. |
+ | See the README file for a full license statement. |
+ | |
+ +-----------------------------------------------------------------------+
+
+ For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
+*/
+$labels['downloadall'] = 'എല്ലാ അറ്റാച്ച്മെന്റുകളും ഡൗൺലോഡ് ചെയ്യുക';
+$labels['download'] = 'ഡൗൺലോഡ്...';
+$labels['downloadmbox'] = 'എംബോക്സ് രീതി (.zip)';
+$labels['downloadmaildir'] = 'മെയിൽഡിർ രീതി (.zip)';
+$labels['downloademl'] = 'സ്രോതസ്സ് (.eml)';
diff --git a/plugins/zipdownload/localization/nb_NO.inc b/plugins/zipdownload/localization/nb_NO.inc
index a0b076bf4..196a723be 100644
--- a/plugins/zipdownload/localization/nb_NO.inc
+++ b/plugins/zipdownload/localization/nb_NO.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'Last ned alle vedlegg';
-$labels['downloadfolder'] = 'Nedlastningsmappe';
-?> \ No newline at end of file
+$labels['download'] = 'Nedlaste...';
+$labels['downloadmbox'] = 'Mbox format (.zip)';
+$labels['downloadmaildir'] = 'Maildir format (.zip)';
+$labels['downloademl'] = 'Kildekode (.eml)';
diff --git a/plugins/zipdownload/localization/nl_NL.inc b/plugins/zipdownload/localization/nl_NL.inc
index 43aa442f3..ef8276970 100644
--- a/plugins/zipdownload/localization/nl_NL.inc
+++ b/plugins/zipdownload/localization/nl_NL.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'Alle bijlagen downloaden';
-$labels['downloadfolder'] = 'Map downloaden';
-?> \ No newline at end of file
+$labels['download'] = 'Download...';
+$labels['downloadmbox'] = 'Mbox-formaat (.zip)';
+$labels['downloadmaildir'] = 'Maildir-formaat (.zip)';
+$labels['downloademl'] = 'Bron (.eml)';
diff --git a/plugins/zipdownload/localization/nn_NO.inc b/plugins/zipdownload/localization/nn_NO.inc
index a0b076bf4..2440a2ea9 100644
--- a/plugins/zipdownload/localization/nn_NO.inc
+++ b/plugins/zipdownload/localization/nn_NO.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,3 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'Last ned alle vedlegg';
-$labels['downloadfolder'] = 'Nedlastningsmappe';
-?> \ No newline at end of file
diff --git a/plugins/zipdownload/localization/pl_PL.inc b/plugins/zipdownload/localization/pl_PL.inc
index 7cf192e1d..eefbd7485 100644
--- a/plugins/zipdownload/localization/pl_PL.inc
+++ b/plugins/zipdownload/localization/pl_PL.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'Pobierz wszystkie jako ZIP';
-$labels['downloadfolder'] = 'Pobierz folder';
-?> \ No newline at end of file
+$labels['download'] = 'Pobierz...';
+$labels['downloadmbox'] = 'Format mbox (.zip)';
+$labels['downloadmaildir'] = 'Format maildir (.zip)';
+$labels['downloademl'] = 'Źródło wiadomości (.eml)';
diff --git a/plugins/zipdownload/localization/pt_BR.inc b/plugins/zipdownload/localization/pt_BR.inc
index 86dee11f2..daac3ae2d 100644
--- a/plugins/zipdownload/localization/pt_BR.inc
+++ b/plugins/zipdownload/localization/pt_BR.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'Baixar todos os anexos';
-$labels['downloadfolder'] = 'Pasta de baixar arquivos';
-?> \ No newline at end of file
+$labels['download'] = 'Baixar...';
+$labels['downloadmbox'] = 'Formato mbox (.zip)';
+$labels['downloadmaildir'] = 'Formato maildir (.zip)';
+$labels['downloademl'] = 'Original (.eml)';
diff --git a/plugins/zipdownload/localization/pt_PT.inc b/plugins/zipdownload/localization/pt_PT.inc
index 4b7441927..4574bc4bd 100644
--- a/plugins/zipdownload/localization/pt_PT.inc
+++ b/plugins/zipdownload/localization/pt_PT.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'Guardar todos os anexos';
-$labels['downloadfolder'] = 'Guardar pasta';
-?> \ No newline at end of file
+$labels['download'] = 'Descarregar...';
+$labels['downloadmbox'] = 'Formato Mbox (.zip)';
+$labels['downloadmaildir'] = 'Formato Maildir (.zip)';
+$labels['downloademl'] = 'Original (.eml)';
diff --git a/plugins/zipdownload/localization/ro_RO.inc b/plugins/zipdownload/localization/ro_RO.inc
index a676799d5..5c872d033 100644
--- a/plugins/zipdownload/localization/ro_RO.inc
+++ b/plugins/zipdownload/localization/ro_RO.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,3 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'Descarcă toate atașamentele';
-$labels['downloadfolder'] = 'Descarcă dosar';
-?> \ No newline at end of file
diff --git a/plugins/zipdownload/localization/ru_RU.inc b/plugins/zipdownload/localization/ru_RU.inc
index b6286a177..93725e355 100644
--- a/plugins/zipdownload/localization/ru_RU.inc
+++ b/plugins/zipdownload/localization/ru_RU.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'Загрузить все вложения';
-$labels['downloadfolder'] = 'Загрузить папку';
-?> \ No newline at end of file
+$labels['download'] = 'Загрузка...';
+$labels['downloadmbox'] = 'Формат Mbox (.zip)';
+$labels['downloadmaildir'] = 'Формат Maildir (.zip)';
+$labels['downloademl'] = 'Исходный формат (.eml)';
diff --git a/plugins/zipdownload/localization/sk_SK.inc b/plugins/zipdownload/localization/sk_SK.inc
index 4c918528f..a7ab21c2d 100644
--- a/plugins/zipdownload/localization/sk_SK.inc
+++ b/plugins/zipdownload/localization/sk_SK.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'Stiahnuť všetky prílohy';
-$labels['downloadfolder'] = 'Priečinok pre stiahnuté súbory';
-?> \ No newline at end of file
+$labels['download'] = 'Stiahnuť...';
+$labels['downloadmbox'] = 'Formát Mbox (.zip)';
+$labels['downloadmaildir'] = 'Formát Maildir (.zip)';
+$labels['downloademl'] = 'Zdroj (.eml)';
diff --git a/plugins/zipdownload/localization/sl_SI.inc b/plugins/zipdownload/localization/sl_SI.inc
index 07caeacbc..4fa4ca3ea 100644
--- a/plugins/zipdownload/localization/sl_SI.inc
+++ b/plugins/zipdownload/localization/sl_SI.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,3 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'Prenesi vse priponke';
-$labels['downloadfolder'] = 'Prenesi mapo';
-?> \ No newline at end of file
diff --git a/plugins/zipdownload/localization/sr_CS.inc b/plugins/zipdownload/localization/sr_CS.inc
index 55d64b91f..0fc8edda4 100644
--- a/plugins/zipdownload/localization/sr_CS.inc
+++ b/plugins/zipdownload/localization/sr_CS.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,3 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'Преузми све прилоге';
-$labels['downloadfolder'] = 'Фасцикла за преузимање';
-?> \ No newline at end of file
diff --git a/plugins/zipdownload/localization/sv_SE.inc b/plugins/zipdownload/localization/sv_SE.inc
index d9c4f5da6..4a3d5ded3 100644
--- a/plugins/zipdownload/localization/sv_SE.inc
+++ b/plugins/zipdownload/localization/sv_SE.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -15,6 +15,8 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
-$labels['downloadall'] = 'Hämta alla bifogade filer';
-$labels['downloadfolder'] = 'Hämta katalog';
-?> \ No newline at end of file
+$labels['downloadall'] = 'Ladda ner alla bifogade filer';
+$labels['download'] = 'Hämta...';
+$labels['downloadmbox'] = 'Format Mbox (.zip)';
+$labels['downloadmaildir'] = 'Format Maildir (.zip)';
+$labels['downloademl'] = 'Källkod (.eml)';
diff --git a/plugins/zipdownload/localization/tr_TR.inc b/plugins/zipdownload/localization/tr_TR.inc
index a4dbec57b..21a44eb7d 100644
--- a/plugins/zipdownload/localization/tr_TR.inc
+++ b/plugins/zipdownload/localization/tr_TR.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'Tüm ek dosyaları indir';
-$labels['downloadfolder'] = 'klasörü indir';
-?> \ No newline at end of file
+$labels['download'] = 'İndir...';
+$labels['downloadmbox'] = 'Mbox biçimi(.zip)';
+$labels['downloadmaildir'] = 'Maildir biçimi (.zip)';
+$labels['downloademl'] = 'Kaynak (.eml)';
diff --git a/plugins/zipdownload/localization/uk_UA.inc b/plugins/zipdownload/localization/uk_UA.inc
index 6232e9a2c..e7f6646c1 100644
--- a/plugins/zipdownload/localization/uk_UA.inc
+++ b/plugins/zipdownload/localization/uk_UA.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,3 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = 'Завантажити всі вкладення';
-$labels['downloadfolder'] = 'Завантажити теку';
-?> \ No newline at end of file
diff --git a/plugins/zipdownload/localization/zh_CN.inc b/plugins/zipdownload/localization/zh_CN.inc
index dfa8db34a..5e0fd4ea6 100644
--- a/plugins/zipdownload/localization/zh_CN.inc
+++ b/plugins/zipdownload/localization/zh_CN.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,3 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = '下载全部附件';
-$labels['downloadfolder'] = '下载文件夹';
-?> \ No newline at end of file
diff --git a/plugins/zipdownload/localization/zh_TW.inc b/plugins/zipdownload/localization/zh_TW.inc
index 44107c634..4fb9efec1 100644
--- a/plugins/zipdownload/localization/zh_TW.inc
+++ b/plugins/zipdownload/localization/zh_TW.inc
@@ -5,7 +5,7 @@
| plugins/zipdownload/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Zipdownload plugin |
- | Copyright (C) 2012-2013, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,5 +16,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-zipdownload/
*/
$labels['downloadall'] = '下載所有附件';
-$labels['downloadfolder'] = '下載資料夾';
-?> \ No newline at end of file
+$labels['download'] = '下載...';
+$labels['downloadmbox'] = 'Mbox 格式 (.zip)';
+$labels['downloadmaildir'] = 'Maildir 格式 (.zip)';
+$labels['downloademl'] = '原始格式 (.eml)';
diff --git a/plugins/zipdownload/zipdownload.js b/plugins/zipdownload/zipdownload.js
index 644c1e030..af9136c1d 100644
--- a/plugins/zipdownload/zipdownload.js
+++ b/plugins/zipdownload/zipdownload.js
@@ -43,21 +43,10 @@ window.rcmail && rcmail.addEventListener('init', function(evt) {
link.html('').append(span);
}
- span.addClass('folder-selector-link').text(rcmail.gettext('zipdownload.download'));
-
+ span.text(rcmail.gettext('zipdownload.download'));
rcmail.env.download_link = link;
});
-
- // hide menu on click out of menu element
- var fn = function(e) {
- var menu = $('#zipdownload-menu');
- if (e.target != menu.get(0))
- menu.hide();
- };
- $(document.body).on('mouseup', fn);
- $('iframe').contents().on('mouseup', fn)
- .load(function(e) { try { $(this).contents().on('mouseup', fn); } catch(e) {}; });
-});
+ });
function rcmail_zipdownload(mode)
@@ -100,14 +89,10 @@ function rcmail_zipdownload(mode)
}
// display download options menu
-function rcmail_zipdownload_menu()
+function rcmail_zipdownload_menu(e)
{
- // fix menu style and display menu
- var z_index = rcmail.env.download_link.parents('.popupmenu').css('z-index'),
- menu = $('#zipdownload-menu').css({'max-height': 'none', 'z-index': z_index + 1}).show();
-
- // position menu on the screen
- rcmail.element_position(menu, rcmail.env.download_link);
+ // show (sub)menu for download selection
+ rcmail.command('menu-open', 'zipdownload-menu', e && e.target ? e.target : rcmail.env.download_link, e);
// abort default download action
return false;
diff --git a/plugins/zipdownload/zipdownload.php b/plugins/zipdownload/zipdownload.php
index 90a314437..edb8188cc 100644
--- a/plugins/zipdownload/zipdownload.php
+++ b/plugins/zipdownload/zipdownload.php
@@ -96,7 +96,10 @@ class zipdownload extends rcube_plugin
$rcmail = rcmail::get_instance();
$menu = array();
- $ul_attr = $rcmail->config->get('skin') == 'classic' ? null : array('class' => 'toolbarmenu');
+ $ul_attr = array('role' => 'menu', 'aria-labelledby' => 'aria-label-zipdownloadmenu');
+ if ($rcmail->config->get('skin') != 'classic') {
+ $ul_attr['class'] = 'toolbarmenu';
+ }
foreach (array('eml', 'mbox', 'maildir') as $type) {
$menu[] = html::tag('li', null, $rcmail->output->button(array(
@@ -106,7 +109,8 @@ class zipdownload extends rcube_plugin
)));
}
- $rcmail->output->add_footer(html::div(array('id' => 'zipdownload-menu', 'class' => 'popupmenu'),
+ $rcmail->output->add_footer(html::div(array('id' => 'zipdownload-menu', 'class' => 'popupmenu', 'aria-hidden' => 'true'),
+ html::tag('h2', array('class' => 'voice', 'id' => 'aria-label-zipdownloadmenu'), "Message Download Options Menu") .
html::tag('ul', $ul_attr, implode('', $menu))));
}
diff --git a/program/include/iniset.php b/program/include/iniset.php
index cb72ae15b..11a29034c 100644
--- a/program/include/iniset.php
+++ b/program/include/iniset.php
@@ -54,20 +54,25 @@ if (set_include_path($include_path) === false) {
// (does not work in safe mode)
@set_time_limit(120);
+// include composer autoloader (if available)
+if (@file_exists(INSTALL_PATH . 'vendor/autoload.php')) {
+ require INSTALL_PATH . 'vendor/autoload.php';
+}
+
// include Roundcube Framework
require_once 'Roundcube/bootstrap.php';
// register autoloader for rcmail app classes
spl_autoload_register('rcmail_autoload');
-// include composer autoloader (if available)
-if (file_exists('vendor/autoload.php')) {
- require 'vendor/autoload.php';
-}
-
// backward compatybility (to be removed)
require_once INSTALL_PATH . 'program/include/bc.php';
+// load the UTF-8 portablity layer from Patchwor
+if (!function_exists('iconv') || !function_exists('utf8_encode') || !extension_loaded('mbstring')) {
+ \Patchwork\Utf8\Bootup::initAll();
+}
+
/**
* PHP5 autoloader routine for dynamic class loading
diff --git a/program/include/rcmail.php b/program/include/rcmail.php
index d4305b505..ece0606ae 100644
--- a/program/include/rcmail.php
+++ b/program/include/rcmail.php
@@ -147,8 +147,13 @@ class rcmail extends rcube
$this->task = $task;
$this->comm_path = $this->url(array('task' => $this->task));
+ if (!empty($_REQUEST['_framed'])) {
+ $this->comm_path .= '&_framed=1';
+ }
+
if ($this->output) {
$this->output->set_env('task', $this->task);
+ $this->output->set_env('comm_path', $this->comm_path);
}
}
@@ -168,7 +173,7 @@ class rcmail extends rcube
setlocale(LC_ALL, $lang . '.utf8', $lang . '.UTF-8', 'en_US.utf8', 'en_US.UTF-8');
// workaround for http://bugs.php.net/bug.php?id=18556
- if (version_compare(PHP_VERSION, '5.5.0', '<') && in_array($lang, array('tr_TR', 'ku', 'az_AZ'))) {
+ if (PHP_VERSION_ID < 50500 && in_array($lang, array('tr_TR', 'ku', 'az_AZ'))) {
setlocale(LC_CTYPE, 'en_US.utf8', 'en_US.UTF-8');
}
}
@@ -427,8 +432,12 @@ class rcmail extends rcube
$this->output->set_env('user_id', $this->user->get_hash());
}
+ // set compose mode for all tasks (message compose step can be triggered from everywhere)
+ $this->output->set_env('compose_extwin', $this->config->get('compose_extwin',false));
+
// add some basic labels to client
- $this->output->add_label('loading', 'servererror', 'connerror', 'requesttimedout', 'refreshing');
+ $this->output->add_label('loading', 'servererror', 'connerror', 'requesttimedout',
+ 'refreshing', 'windowopenerror');
return $this->output;
}
@@ -729,14 +738,16 @@ class rcmail extends rcube
*/
public function logout_actions()
{
- $config = $this->config->all();
- $storage = $this->get_storage();
+ $storage = $this->get_storage();
+ $logout_expunge = $this->config->get('logout_expunge');
+ $logout_purge = $this->config->get('logout_purge');
+ $trash_mbox = $this->config->get('trash_mbox');
- if ($config['logout_purge'] && !empty($config['trash_mbox'])) {
- $storage->clear_folder($config['trash_mbox']);
+ if ($logout_purge && !empty($trash_mbox)) {
+ $storage->clear_folder($trash_mbox);
}
- if ($config['logout_expunge']) {
+ if ($logout_expunge) {
$storage->expunge_folder('INBOX');
}
@@ -783,11 +794,13 @@ class rcmail extends rcube
/**
* Build a valid URL to this instance of Roundcube
*
- * @param mixed Either a string with the action or url parameters as key-value pairs
+ * @param mixed Either a string with the action or url parameters as key-value pairs
+ * @param boolean Build an URL absolute to document root
+ * @param boolean Create fully qualified URL including http(s):// and hostname
*
* @return string Valid application URL
*/
- public function url($p)
+ public function url($p, $absolute = false, $full = false)
{
if (!is_array($p)) {
if (strpos($p, 'http') === 0) {
@@ -797,14 +810,15 @@ class rcmail extends rcube
$p = array('_action' => @func_get_arg(0));
}
- $task = $p['_task'] ? $p['_task'] : ($p['task'] ? $p['task'] : $this->task);
- $p['_task'] = $task;
- unset($p['task']);
+ $pre = array();
+ $task = $p['_task'] ?: ($p['task'] ?: $this->task);
+ $pre['_task'] = $task;
+ unset($p['task'], $p['_task']);
- $url = './' . $this->filename;
+ $url = $this->filename;
$delm = '?';
- foreach (array_reverse($p) as $key => $val) {
+ foreach (array_merge($pre, $p) as $key => $val) {
if ($val !== '' && $val !== null) {
$par = $key[0] == '_' ? $key : '_'.$key;
$url .= $delm.urlencode($par).'='.urlencode($val);
@@ -812,7 +826,24 @@ class rcmail extends rcube
}
}
- return $url;
+ if ($absolute || $full) {
+ // add base path to this Roundcube installation
+ $base_path = preg_replace('![^/]+$!', '', strval($_SERVER['SCRIPT_NAME']));
+ if ($base_path == '') $base_path = '/';
+ $prefix = $base_path;
+
+ // prepend protocol://hostname:port
+ if ($full) {
+ $prefix = rcube_utils::resolve_url($prefix);
+ }
+
+ $prefix = rtrim($prefix, '/') . '/';
+ }
+ else {
+ $prefix = './';
+ }
+
+ return $prefix . $url;
}
/**
@@ -886,12 +917,15 @@ class rcmail extends rcube
$prefix = $this->storage->get_namespace('prefix');
$prefix_len = strlen($prefix);
- if (!$prefix_len)
+ if (!$prefix_len) {
return;
+ }
- $prefs = $this->config->all();
- if (!empty($prefs['namespace_fixed']))
+ if ($this->config->get('namespace_fixed')) {
return;
+ }
+
+ $prefs = array();
// Build namespace prefix regexp
$ns = $this->storage->get_namespace();
@@ -911,16 +945,16 @@ class rcmail extends rcube
// Fix preferences
$opts = array('drafts_mbox', 'junk_mbox', 'sent_mbox', 'trash_mbox', 'archive_mbox');
foreach ($opts as $opt) {
- if ($value = $prefs[$opt]) {
+ if ($value = $this->config->get($opt)) {
if ($value != 'INBOX' && !preg_match($regexp, $value)) {
$prefs[$opt] = $prefix.$value;
}
}
}
- if (!empty($prefs['search_mods'])) {
+ if (($search_mods = $this->config->get('search_mods')) && !empty($search_mods)) {
$folders = array();
- foreach ($prefs['search_mods'] as $idx => $value) {
+ foreach ($search_mods as $idx => $value) {
if ($idx != 'INBOX' && $idx != '*' && !preg_match($regexp, $idx)) {
$idx = $prefix.$idx;
}
@@ -930,9 +964,9 @@ class rcmail extends rcube
$prefs['search_mods'] = $folders;
}
- if (!empty($prefs['message_threading'])) {
+ if (($threading = $this->config->get('message_threading')) && !empty($threading)) {
$folders = array();
- foreach ($prefs['message_threading'] as $idx => $value) {
+ foreach ($threading as $idx => $value) {
if ($idx != 'INBOX' && !preg_match($regexp, $idx)) {
$idx = $prefix.$idx;
}
@@ -942,8 +976,8 @@ class rcmail extends rcube
$prefs['message_threading'] = $folders;
}
- if (!empty($prefs['collapsed_folders'])) {
- $folders = explode('&&', $prefs['collapsed_folders']);
+ if ($collapsed = $this->config->get('collapsed_folders')) {
+ $folders = explode('&&', $collapsed);
$count = count($folders);
$folders_str = '';
@@ -1076,14 +1110,17 @@ class rcmail extends rcube
}
else {
foreach ($table_data as $row_data) {
- $class = !empty($row_data['class']) ? $row_data['class'] : '';
+ $class = !empty($row_data['class']) ? $row_data['class'] : null;
+ if (!empty($attrib['rowclass']))
+ $class = trim($class . ' ' . $attrib['rowclass']);
$rowid = 'rcmrow' . rcube_utils::html_identifier($row_data[$id_col]);
$table->add_row(array('id' => $rowid, 'class' => $class));
// format each col
foreach ($a_show_cols as $col) {
- $table->add($col, $this->Q(is_array($row_data[$col]) ? $row_data[$col][0] : $row_data[$col]));
+ $val = is_array($row_data[$col]) ? $row_data[$col][0] : $row_data[$col];
+ $table->add($col, empty($attrib['ishtml']) ? $this->Q($val) : $val);
}
}
}
@@ -1321,7 +1358,8 @@ class rcmail extends rcube
*/
public function folder_selector($p = array())
{
- $p += array('maxlength' => 100, 'realnames' => false, 'is_escaped' => true);
+ $realnames = $this->config->get('show_real_foldernames');
+ $p += array('maxlength' => 100, 'realnames' => $realnames, 'is_escaped' => true);
$a_mailboxes = array();
$storage = $this->get_storage();
@@ -1489,7 +1527,7 @@ class rcmail extends rcube
$html_name = $this->Q($foldername) . ($unread ? html::span('unreadcount', sprintf($attrib['unreadwrap'], $unread)) : '');
$link_attrib = $folder['virtual'] ? array() : array(
'href' => $this->url(array('_mbox' => $folder['id'])),
- 'onclick' => sprintf("return %s.command('list','%s',this)", rcmail_output::JS_OBJECT_NAME, $js_name),
+ 'onclick' => sprintf("return %s.command('list','%s',this,event)", rcmail_output::JS_OBJECT_NAME, $js_name),
'rel' => $folder['id'],
'title' => $title,
);
@@ -1668,13 +1706,14 @@ class rcmail extends rcube
}
- public function quota_content($attrib = null)
+ public function quota_content($attrib = null, $folder = null)
{
- $quota = $this->storage->get_quota();
+ $quota = $this->storage->get_quota($folder);
$quota = $this->plugins->exec_hook('quota', $quota);
$quota_result = (array) $quota;
- $quota_result['type'] = isset($_SESSION['quota_display']) ? $_SESSION['quota_display'] : '';
+ $quota_result['type'] = isset($_SESSION['quota_display']) ? $_SESSION['quota_display'] : '';
+ $quota_result['folder'] = $folder !== null && $folder !== '' ? $folder : 'INBOX';
if ($quota['total'] > 0) {
if (!isset($quota['percent'])) {
@@ -1691,7 +1730,39 @@ class rcmail extends rcube
$quota_result['width'] = $attrib['width'];
}
if ($attrib['height']) {
- $quota_result['height'] = $attrib['height'];
+ $quota_result['height'] = $attrib['height'];
+ }
+
+ // build a table of quota types/roots info
+ if (($root_cnt = count($quota_result['all'])) > 1 || count($quota_result['all'][key($quota_result['all'])]) > 1) {
+ $table = new html_table(array('cols' => 3, 'class' => 'quota-info'));
+
+ $table->add_header(null, self::Q($this->gettext('quotatype')));
+ $table->add_header(null, self::Q($this->gettext('quotatotal')));
+ $table->add_header(null, self::Q($this->gettext('quotaused')));
+
+ foreach ($quota_result['all'] as $root => $data) {
+ if ($root_cnt > 1 && $root) {
+ $table->add(array('colspan' => 3, 'class' => 'root'), self::Q($root));
+ }
+
+ if ($storage = $data['storage']) {
+ $percent = min(100, round(($storage['used']/max(1,$storage['total']))*100));
+
+ $table->add('name', self::Q($this->gettext('quotastorage')));
+ $table->add(null, $this->show_bytes($storage['total'] * 1024));
+ $table->add(null, sprintf('%s (%.0f%%)', $this->show_bytes($storage['used'] * 1024), $percent));
+ }
+ if ($message = $data['message']) {
+ $percent = min(100, round(($message['used']/max(1,$message['total']))*100));
+
+ $table->add('name', self::Q($this->gettext('quotamessage')));
+ $table->add(null, intval($message['total']));
+ $table->add(null, sprintf('%d (%.0f%%)', $message['used'], $percent));
+ }
+ }
+
+ $quota_result['table'] = $table->show();
}
}
else {
@@ -1700,6 +1771,12 @@ class rcmail extends rcube
$quota_result['percent'] = 0;
}
+ // cleanup
+ unset($quota_result['abort']);
+ if (empty($quota_result['table'])) {
+ unset($quota_result['all']);
+ }
+
return $quota_result;
}
@@ -1769,31 +1846,36 @@ class rcmail extends rcube
return;
}
- $lang = strtolower($_SESSION['language']);
+ $lang_codes = array($_SESSION['language']);
- // TinyMCE uses two-letter lang codes, with exception of Chinese
- if (strpos($lang, 'zh_') === 0) {
- $lang = str_replace('_', '-', $lang);
+ if ($pos = strpos($_SESSION['language'], '_')) {
+ $lang_codes[] = substr($_SESSION['language'], 0, $pos);
}
- else {
- $lang = substr($lang, 0, 2);
+
+ foreach ($lang_codes as $code) {
+ if (file_exists(INSTALL_PATH . 'program/js/tinymce/langs/'.$code.'.js')) {
+ $lang = $code;
+ break;
+ }
}
- if (!file_exists(INSTALL_PATH . 'program/js/tiny_mce/langs/'.$lang.'.js')) {
+ if (empty($lang)) {
$lang = 'en';
}
- $script = json_encode(array(
+ $config = array(
'mode' => $mode,
'lang' => $lang,
'skin_path' => $this->output->get_skin_path(),
'spellcheck' => intval($this->config->get('enable_spellcheck')),
'spelldict' => intval($this->config->get('spellcheck_dictionary'))
- ));
+ );
- $this->output->include_script('tiny_mce/tiny_mce.js');
+ $this->output->add_label('selectimage', 'addimage', 'selectmedia', 'addmedia');
+ $this->output->set_env('editor_config', $config);
+ $this->output->include_css('program/js/tinymce/roundcube/browser.css');
+ $this->output->include_script('tinymce/tinymce.min.js');
$this->output->include_script('editor.js');
- $this->output->add_script("rcmail_editor_init($script)", 'docready');
}
/**
@@ -1825,8 +1907,8 @@ class rcmail extends rcube
);
foreach ($emoticons as $idx => $file) {
- // <img title="Cry" src="http://.../program/js/tiny_mce/plugins/emotions/img/smiley-cry.gif" border="0" alt="Cry" />
- $search[] = '/<img title="[a-z ]+" src="https?:\/\/[a-z0-9_.\/-]+\/tiny_mce\/plugins\/emotions\/img\/'.$file.'.gif"[^>]+\/>/i';
+ // <img title="Cry" src="http://.../program/js/tinymce/plugins/emoticons/img/smiley-cry.gif" border="0" alt="Cry" />
+ $search[] = '/<img title="[a-z ]+" src="https?:\/\/[a-z0-9_.\/-]+\/tinymce\/plugins\/emoticons\/img\/'.$file.'.gif"[^>]+\/>/i';
$replace[] = $idx;
}
@@ -1891,8 +1973,10 @@ class rcmail extends rcube
/**
* Initializes file uploading interface.
+ *
+ * @param $int Optional maximum file size in bytes
*/
- public function upload_init()
+ public function upload_init($max_size = null)
{
// Enable upload progress bar
if ($seconds = $this->config->get('upload_progress')) {
@@ -1920,6 +2004,10 @@ class rcmail extends rcube
$max_filesize = $max_postsize;
}
+ if ($max_size && $max_size < $max_filesize) {
+ $max_filesize = $max_size;
+ }
+
$this->output->set_env('max_filesize', $max_filesize);
$max_filesize = $this->show_bytes($max_filesize);
$this->output->set_env('filesizeerror', $this->gettext(array(
@@ -1929,6 +2017,77 @@ class rcmail extends rcube
}
/**
+ * Outputs uploaded file content (with image thumbnails support
+ *
+ * @param array $file Upload file data
+ */
+ public function display_uploaded_file($file)
+ {
+ if (empty($file)) {
+ return;
+ }
+
+ $file = $this->plugins->exec_hook('attachment_display', $file);
+
+ if ($file['status']) {
+ if (empty($file['size'])) {
+ $file['size'] = $file['data'] ? strlen($file['data']) : @filesize($file['path']);
+ }
+
+ // generate image thumbnail for file browser in HTML editor
+ if (!empty($_GET['_thumbnail'])) {
+ $temp_dir = $this->config->get('temp_dir');
+ $thumbnail_size = 80;
+ list(,$ext) = explode('/', $file['mimetype']);
+ $mimetype = $file['mimetype'];
+ $file_ident = $file['id'] . ':' . $file['mimetype'] . ':' . $file['size'];
+ $cache_basename = $temp_dir . '/' . md5($file_ident . ':' . $this->user->ID . ':' . $thumbnail_size);
+ $cache_file = $cache_basename . '.' . $ext;
+
+ // render thumbnail image if not done yet
+ if (!is_file($cache_file)) {
+ if (!$file['path']) {
+ $orig_name = $filename = $cache_basename . '.orig.' . $ext;
+ file_put_contents($orig_name, $file['data']);
+ }
+ else {
+ $filename = $file['path'];
+ }
+
+ $image = new rcube_image($filename);
+ if ($imgtype = $image->resize($thumbnail_size, $cache_file, true)) {
+ $mimetype = 'image/' . $imgtype;
+
+ if ($orig_name) {
+ unlink($orig_name);
+ }
+ }
+ }
+
+ if (is_file($cache_file)) {
+ // cache for 1h
+ $this->output->future_expire_header(3600);
+ header('Content-Type: ' . $mimetype);
+ header('Content-Length: ' . filesize($cache_file));
+
+ readfile($cache_file);
+ exit;
+ }
+ }
+
+ header('Content-Type: ' . $file['mimetype']);
+ header('Content-Length: ' . $file['size']);
+
+ if ($file['data']) {
+ echo $file['data'];
+ }
+ else if ($file['path']) {
+ readfile($file['path']);
+ }
+ }
+ }
+
+ /**
* Initializes client-side autocompletion.
*/
public function autocomplete_init()
@@ -2040,11 +2199,13 @@ class rcmail extends rcube
/**
* Returns message UID(s) and IMAP folder(s) from GET/POST data
*
- * @param string UID value to decode
- * @param string Default mailbox value (if not encoded in UIDs)
+ * @param string UID value to decode
+ * @param string Default mailbox value (if not encoded in UIDs)
+ * @param bool Will be set to True if multi-folder request
+ *
* @return array List of message UIDs per folder
*/
- public static function get_uids($uids = null, $mbox = null)
+ public static function get_uids($uids = null, $mbox = null, &$is_multifolder = false)
{
// message UID (or comma-separated list of IDs) is provided in
// the form of <ID>-<MBOX>[,<ID>-<MBOX>]*
@@ -2061,6 +2222,7 @@ class rcmail extends rcube
// special case: *
if ($_uid == '*' && is_object($_SESSION['search'][1]) && $_SESSION['search'][1]->multi) {
+ $is_multifolder = true;
// extract the full list of UIDs per folder from the search set
foreach ($_SESSION['search'][1]->sets as $subset) {
$mbox = $subset->get_parameters('MAILBOX');
@@ -2074,12 +2236,19 @@ class rcmail extends rcube
// create a per-folder UIDs array
foreach ((array)$_uid as $uid) {
list($uid, $mbox) = explode('-', $uid, 2);
- if (!strlen($mbox))
+ if (!strlen($mbox)) {
$mbox = $_mbox;
- if ($uid == '*')
+ }
+ else {
+ $is_multifolder = true;
+ }
+
+ if ($uid == '*') {
$result[$mbox] = $uid;
- else
+ }
+ else {
$result[$mbox][] = $uid;
+ }
}
}
diff --git a/program/include/rcmail_install.php b/program/include/rcmail_install.php
index eec21ec7e..9945f1d81 100644
--- a/program/include/rcmail_install.php
+++ b/program/include/rcmail_install.php
@@ -476,7 +476,7 @@ class rcmail_install
$types = array(
'application/zip' => 'zip',
'application/x-tar' => 'tar',
- 'application/java-archive' => 'jar',
+ 'application/pdf' => 'pdf',
'image/gif' => 'gif',
'image/svg+xml' => 'svg',
);
@@ -484,7 +484,7 @@ class rcmail_install
$errors = array();
foreach ($types as $mimetype => $expected) {
$ext = rcube_mime::get_mime_extensions($mimetype);
- if ($ext[0] != $expected) {
+ if (!in_array($expected, (array) $ext)) {
$errors[] = array($mimetype, $ext, $expected);
}
}
diff --git a/program/include/rcmail_output_html.php b/program/include/rcmail_output_html.php
index 42b208e89..a84824648 100644
--- a/program/include/rcmail_output_html.php
+++ b/program/include/rcmail_output_html.php
@@ -30,16 +30,16 @@ class rcmail_output_html extends rcmail_output
{
public $type = 'html';
- protected $message = null;
- protected $js_env = array();
- protected $js_labels = array();
- protected $js_commands = array();
- protected $skin_paths = array();
+ protected $message;
protected $template_name;
+ protected $js_env = array();
+ protected $js_labels = array();
+ protected $js_commands = array();
+ protected $skin_paths = array();
protected $scripts_path = '';
protected $script_files = array();
- protected $css_files = array();
- protected $scripts = array();
+ protected $css_files = array();
+ protected $scripts = array();
protected $default_template = "<html>\n<head><title></title></head>\n<body></body>\n</html>";
protected $header = '';
protected $footer = '';
@@ -58,8 +58,6 @@ class rcmail_output_html extends rcmail_output
/**
* Constructor
- *
- * @todo Replace $this->config with the real rcube_config object
*/
public function __construct($task = null, $framed = false)
{
@@ -67,10 +65,10 @@ class rcmail_output_html extends rcmail_output
$this->devel_mode = $this->config->get('devel_mode');
- //$this->framed = $framed;
$this->set_env('task', $task);
$this->set_env('x_frame_options', $this->config->get('x_frame_options', 'sameorigin'));
$this->set_env('standard_windows', (bool) $this->config->get('standard_windows'));
+ $this->set_env('locale', $_SESSION['language']);
// add cookie info
$this->set_env('cookie_domain', ini_get('session.cookie_domain'));
@@ -84,7 +82,7 @@ class rcmail_output_html extends rcmail_output
if (!empty($_REQUEST['_extwin']))
$this->set_env('extwin', 1);
- if ($this->framed || !empty($_REQUEST['_framed']))
+ if ($this->framed || $framed)
$this->set_env('framed', 1);
$lic = <<<EOF
@@ -256,8 +254,9 @@ EOF;
public function get_skin_file($file, &$skin_path = null, $add_path = null)
{
$skin_paths = $this->skin_paths;
- if ($add_path)
+ if ($add_path) {
array_unshift($skin_paths, $add_path);
+ }
foreach ($skin_paths as $skin_path) {
$path = realpath($skin_path . $file);
@@ -291,9 +290,9 @@ EOF;
{
$cmd = func_get_args();
if (strpos($cmd[0], 'plugin.') !== false)
- $this->js_commands[] = array('triggerEvent', $cmd[0], $cmd[1]);
+ $this->js_commands[] = array('triggerEvent', $cmd[0], $cmd[1]);
else
- $this->js_commands[] = $cmd;
+ $this->js_commands[] = $cmd;
}
/**
@@ -303,7 +302,7 @@ EOF;
{
$args = func_get_args();
if (count($args) == 1 && is_array($args[0]))
- $args = $args[0];
+ $args = $args[0];
foreach ($args as $name) {
$this->js_labels[$name] = $this->app->gettext($name);
@@ -344,13 +343,13 @@ EOF;
public function reset($all = false)
{
$framed = $this->framed;
- $env = $all ? null : array_intersect_key($this->env, array('extwin'=>1, 'framed'=>1));
+ $env = $all ? null : array_intersect_key($this->env, array('extwin'=>1, 'framed'=>1));
parent::reset();
// let some env variables survive
- $this->env = $this->js_env = $env;
- $this->framed = $framed || $this->env['framed'];
+ $this->env = $this->js_env = $env;
+ $this->framed = $framed || $this->env['framed'];
$this->js_labels = array();
$this->js_commands = array();
$this->script_files = array();
@@ -420,29 +419,29 @@ EOF;
*/
public function write($template = '')
{
- // unlock interface after iframe load
- $unlock = preg_replace('/[^a-z0-9]/i', '', $_REQUEST['_unlock']);
- if ($this->framed) {
- array_unshift($this->js_commands, array('iframe_loaded', $unlock));
- }
- else if ($unlock) {
- array_unshift($this->js_commands, array('hide_message', $unlock));
+ if (!empty($this->script_files)) {
+ $this->set_env('request_token', $this->app->get_request_token());
}
- if (!empty($this->script_files))
- $this->set_env('request_token', $this->app->get_request_token());
+ $commands = $this->get_js_commands($framed);
- // write all env variables to client
- if ($commands = $this->get_js_commands()) {
- $js = $this->framed ? "if (window.parent) {\n" : '';
- $js .= $commands . ($this->framed ? ' }' : '');
- $this->add_script($js, 'head_top');
+ // if all js commands go to parent window we can ignore all
+ // script files and skip rcube_webmail initialization (#1489792)
+ if ($framed) {
+ $this->scripts = array();
+ $this->script_files = array();
+ $this->header = '';
+ $this->footer = '';
}
+ // write all javascript commands
+ $this->add_script($commands, 'head_top');
+
// send clickjacking protection headers
- $iframe = $this->framed || !empty($_REQUEST['_framed']);
- if (!headers_sent() && ($xframe = $this->app->config->get('x_frame_options', 'sameorigin')))
+ $iframe = $this->framed || $this->env['framed'];
+ if (!headers_sent() && ($xframe = $this->app->config->get('x_frame_options', 'sameorigin'))) {
header('X-Frame-Options: ' . ($iframe && $xframe == 'deny' ? 'sameorigin' : $xframe));
+ }
// call super method
$this->_write($template, $this->config->get('skin_path'));
@@ -459,15 +458,15 @@ EOF;
*/
function parse($name = 'main', $exit = true, $write = true)
{
- $plugin = false;
- $realname = $name;
+ $plugin = false;
+ $realname = $name;
$this->template_name = $realname;
$temp = explode('.', $name, 2);
if (count($temp) > 1) {
- $plugin = $temp[0];
- $name = $temp[1];
- $skin_dir = $plugin . '/skins/' . $this->config->get('skin');
+ $plugin = $temp[0];
+ $name = $temp[1];
+ $skin_dir = $plugin . '/skins/' . $this->config->get('skin');
// apply skin search escalation list to plugin directory
$plugin_skin_paths = array();
@@ -564,27 +563,60 @@ EOF;
*
* @return string $out
*/
- protected function get_js_commands()
+ protected function get_js_commands(&$framed = null)
{
- $out = '';
+ $out = '';
+ $parent_commands = 0;
+ $top_commands = array();
+
+ // these should be always on top,
+ // e.g. hide_message() below depends on env.framed
if (!$this->framed && !empty($this->js_env)) {
- $out .= self::JS_OBJECT_NAME . '.set_env('.self::json_serialize($this->js_env).");\n";
+ $top_commands[] = array('set_env', $this->js_env);
}
if (!empty($this->js_labels)) {
- $this->command('add_label', $this->js_labels);
+ $top_commands[] = array('add_label', $this->js_labels);
}
- foreach ($this->js_commands as $i => $args) {
+
+ // unlock interface after iframe load
+ $unlock = preg_replace('/[^a-z0-9]/i', '', $_REQUEST['_unlock']);
+ if ($this->framed) {
+ $top_commands[] = array('iframe_loaded', $unlock);
+ }
+ else if ($unlock) {
+ $top_commands[] = array('hide_message', $unlock);
+ }
+
+ $commands = array_merge($top_commands, $this->js_commands);
+
+ foreach ($commands as $i => $args) {
$method = array_shift($args);
+ $parent = $this->framed || preg_match('/^parent\./', $method);
+
foreach ($args as $i => $arg) {
$args[$i] = self::json_serialize($arg);
}
- $parent = $this->framed || preg_match('/^parent\./', $method);
- $out .= sprintf(
- "%s.%s(%s);\n",
- ($parent ? 'if(window.parent && parent.'.self::JS_OBJECT_NAME.') parent.' : '') . self::JS_OBJECT_NAME,
- preg_replace('/^parent\./', '', $method),
- implode(',', $args)
- );
+
+ if ($parent) {
+ $parent_commands++;
+ $method = preg_replace('/^parent\./', '', $method);
+ $parent_prefix = 'if (window.parent && parent.' . self::JS_OBJECT_NAME . ') parent.';
+ $method = $parent_prefix . self::JS_OBJECT_NAME . '.' . $method;
+ }
+ else {
+ $method = self::JS_OBJECT_NAME . '.' . $method;
+ }
+
+ $out .= sprintf("%s(%s);\n", $method, implode(',', $args));
+ }
+
+ $framed = $parent_prefix && $parent_commands == count($commands);
+
+ // make the output more compact if all commands go to parent window
+ if ($framed) {
+ $out = "if (window.parent && parent." . self::JS_OBJECT_NAME . ") {\n"
+ . str_replace($parent_prefix, "\tparent.", $out)
+ . "}\n";
}
return $out;
@@ -600,13 +632,14 @@ EOF;
public function abs_url($str, $search_path = false)
{
if ($str[0] == '/') {
- if ($search_path && ($file_url = $this->get_skin_file($str, $skin_path)))
+ if ($search_path && ($file_url = $this->get_skin_file($str, $skin_path))) {
return $file_url;
+ }
return $this->base_path . $str;
}
- else
- return $str;
+
+ return $str;
}
/**
@@ -866,6 +899,14 @@ EOF;
return '';
}
+ // localize title and summary attributes
+ if ($command != 'button' && !empty($attrib['title']) && $this->app->text_exists($attrib['title'])) {
+ $attrib['title'] = $this->app->gettext($attrib['title']);
+ }
+ if ($command != 'button' && !empty($attrib['summary']) && $this->app->text_exists($attrib['summary'])) {
+ $attrib['summary'] = $this->app->gettext($attrib['summary']);
+ }
+
// execute command
switch ($command) {
// return a button
@@ -1098,7 +1139,8 @@ EOF;
*/
public function button($attrib)
{
- static $s_button_count = 100;
+ static $s_button_count = 100;
+ static $disabled_actions = null;
// these commands can be called directly via url
$a_static_commands = array('compose', 'list', 'preferences', 'folders', 'identities');
@@ -1107,9 +1149,14 @@ EOF;
return '';
}
+
// try to find out the button type
if ($attrib['type']) {
$attrib['type'] = strtolower($attrib['type']);
+ if ($pos = strpos($attrib['type'], '-menuitem')) {
+ $attrib['type'] = substr($attrib['type'], 0, -9);
+ $menuitem = true;
+ }
}
else {
$attrib['type'] = ($attrib['image'] || $attrib['imagepas'] || $attrib['imageact']) ? 'image' : 'link';
@@ -1117,8 +1164,21 @@ EOF;
$command = $attrib['command'];
- if ($attrib['task'])
- $command = $attrib['task'] . '.' . $command;
+ if ($attrib['task']) {
+ $element = $command = $attrib['task'] . '.' . $command;
+ }
+ else {
+ $element = ($this->env['task'] ? $this->env['task'] . '.' : '') . $command;
+ }
+
+ if ($disabled_actions === null) {
+ $disabled_actions = (array) $this->config->get('disabled_actions');
+ }
+
+ // remove buttons for disabled actions
+ if (in_array($element, $disabled_actions)) {
+ return '';
+ }
if (!$attrib['image']) {
$attrib['image'] = $attrib['imagepas'] ? $attrib['imagepas'] : $attrib['imageact'];
@@ -1138,6 +1198,17 @@ EOF;
$attrib['alt'] = html::quote($this->app->gettext($attrib['alt'], $attrib['domain']));
}
+ // set accessibility attributes
+ if (!$attrib['role']) {
+ $attrib['role'] = 'button';
+ }
+ if (!empty($attrib['class']) && !empty($attrib['classact']) || !empty($attrib['imagepas']) && !empty($attrib['imageact'])) {
+ if (array_key_exists('tabindex', $attrib))
+ $attrib['data-tabindex'] = $attrib['tabindex'];
+ $attrib['tabindex'] = '-1'; // disable button by default
+ $attrib['aria-disabled'] = 'true';
+ }
+
// set title to alt attribute for IE browsers
if ($this->browser->ie && !$attrib['title'] && $attrib['alt']) {
$attrib['title'] = $attrib['alt'];
@@ -1240,6 +1311,11 @@ EOF;
$out = html::tag($attrib['wrapper'], null, $out);
}
+ if ($menuitem) {
+ $class = $attrib['menuitem-class'] ? ' class="' . $attrib['menuitem-class'] . '"' : '';
+ $out = '<li role="menuitem"' . $class . '>' . $out . '</li>';
+ }
+
return $out;
}
@@ -1322,7 +1398,7 @@ EOF;
$output = trim($templ);
if (empty($output)) {
- $output = $this->default_template;
+ $output = html::doctype('html5') . "\n" . $this->default_template;
$is_empty = true;
}
@@ -1331,6 +1407,15 @@ EOF;
$this->pagetitle = 'Roundcube Mail';
}
+ // declare page language
+ if (!empty($_SESSION['language'])) {
+ $lang = substr($_SESSION['language'], 0, 2);
+ $output = preg_replace('/<html/', '<html lang="' . html::quote($lang) . '"', $output, 1);
+ if (!headers_sent()) {
+ header('Content-Language: ' . $lang);
+ }
+ }
+
// replace specialchars in content
$page_title = html::quote($this->pagetitle);
$page_header = '';
@@ -1478,7 +1563,7 @@ EOF;
*/
public function form_tag($attrib, $content = null)
{
- if ($this->framed || !empty($_REQUEST['_framed'])) {
+ if ($this->framed || $this->env['framed']) {
$hiddenfield = new html_hiddenfield(array('name' => '_framed', 'value' => '1'));
$hidden = $hiddenfield->show();
}
@@ -1518,7 +1603,7 @@ EOF;
// we already have a <form> tag
if ($attrib['form']) {
- if ($this->framed || !empty($_REQUEST['_framed']))
+ if ($this->framed || $this->env['framed'])
$hidden->add(array('name' => '_framed', 'value' => '1'));
return $hidden->show() . $content;
}
diff --git a/program/js/app.js b/program/js/app.js
index f6acdf87e..e5a70c9f1 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -46,11 +46,12 @@ function rcube_webmail()
this.messages = {};
this.group2expand = {};
this.http_request_jobs = {};
+ this.menu_stack = [];
// webmail client settings
this.dblclick_time = 500;
this.message_time = 5000;
- this.identifier_expr = new RegExp('[^0-9a-z\-_]', 'gi');
+ this.identifier_expr = /[^0-9a-z_-]/gi;
// environment defaults
this.env = {
@@ -77,7 +78,7 @@ function rcube_webmail()
});
// unload fix
- $(window).bind('beforeunload', function() { rcmail.unload = true; });
+ $(window).bind('beforeunload', function() { ref.unload = true; });
// set environment variable(s)
this.set_env = function(p, value)
@@ -197,7 +198,10 @@ function rcube_webmail()
// enable general commands
this.enable_command('close', 'logout', 'mail', 'addressbook', 'settings', 'save-pref',
- 'compose', 'undo', 'about', 'switch-task', 'menu-open', 'menu-save', true);
+ 'compose', 'undo', 'about', 'switch-task', 'menu-open', 'menu-close', 'menu-save', true);
+
+ // set active task button
+ this.set_button(this.task, 'sel');
if (this.env.permaurl)
this.enable_command('permaurl', 'extwin', true);
@@ -232,16 +236,13 @@ function rcube_webmail()
return ref.command('sort', $(this).attr('rel'), this);
});
- document.onmouseup = function(e){ return ref.doc_mouse_up(e); };
- this.gui_objects.messagelist.parentNode.onmousedown = function(e){ return ref.click_on_list(e); };
-
this.enable_command('toggle_status', 'toggle_flag', 'sort', true);
this.enable_command('set-listmode', this.env.threads && !this.is_multifolder_listing());
// load messages
this.command('list');
- $(this.gui_objects.qsearchbox).val(this.env.search_text).focusin(function() { rcmail.message_list.blur(); });
+ $(this.gui_objects.qsearchbox).val(this.env.search_text).focusin(function() { ref.message_list.blur(); });
}
this.set_button_titles();
@@ -276,7 +277,7 @@ function rcube_webmail()
this.env.address_group_stack = [];
this.env.compose_commands = ['send-attachment', 'remove-attachment', 'send', 'cancel',
'toggle-editor', 'list-adresses', 'pushgroup', 'search', 'reset-search', 'extwin',
- 'insert-response', 'save-response'];
+ 'insert-response', 'save-response', 'menu-open', 'menu-close'];
if (this.env.drafts_mailbox)
this.env.compose_commands.push('savedraft')
@@ -286,31 +287,36 @@ function rcube_webmail()
// add more commands (not enabled)
$.merge(this.env.compose_commands, ['add-recipient', 'firstpage', 'previouspage', 'nextpage', 'lastpage']);
- if (this.env.spellcheck) {
- this.env.spellcheck.spelling_state_observer = function(s) { ref.spellcheck_state(); };
+ if (window.googie) {
+ this.env.editor_config.spellchecker = googie;
+ this.env.editor_config.spellcheck_observer = function(s) { ref.spellcheck_state(); };
+
this.env.compose_commands.push('spellcheck')
this.enable_command('spellcheck', true);
}
+ // initialize HTML editor
+ this.editor_init(this.env.editor_config, this.env.composebody);
+
// init canned response functions
if (this.gui_objects.responseslist) {
$('a.insertresponse', this.gui_objects.responseslist)
.attr('unselectable', 'on')
.mousedown(function(e){ return rcube_event.cancel(e); })
- .mouseup(function(e){
- ref.command('insert-response', $(this).attr('rel'));
- $(document.body).trigger('mouseup'); // hides the menu
- return rcube_event.cancel(e);
+ .bind('mouseup keypress', function(e){
+ if (e.type == 'mouseup' || rcube_event.get_keycode(e) == 13) {
+ ref.command('insert-response', $(this).attr('rel'));
+ $(document.body).trigger('mouseup'); // hides the menu
+ return rcube_event.cancel(e);
+ }
});
// avoid textarea loosing focus when hitting the save-response button/link
- for (var i=0; this.buttons['save-response'] && i < this.buttons['save-response'].length; i++) {
- $('#'+this.buttons['save-response'][i].id).mousedown(function(e){ return rcube_event.cancel(e); })
- }
+ $.each(this.buttons['save-response'] || [], function (i, v) {
+ $('#' + v.id).mousedown(function(e){ return rcube_event.cancel(e); })
+ });
}
- document.onmouseup = function(e){ return ref.doc_mouse_up(e); };
-
// init message compose form
this.init_messageform();
}
@@ -334,12 +340,25 @@ function rcube_webmail()
// init address book widget
if (this.gui_objects.contactslist) {
this.contact_list = new rcube_list_widget(this.gui_objects.contactslist,
- { multiselect:true, draggable:false, keyboard:false });
+ { multiselect:true, draggable:false, keyboard:true });
this.contact_list
.addEventListener('initrow', function(o) { ref.triggerEvent('insertrow', { cid:o.uid, row:o }); })
.addEventListener('select', function(o) { ref.compose_recipient_select(o); })
- .addEventListener('dblclick', function(o) { ref.compose_add_recipient('to'); })
+ .addEventListener('dblclick', function(o) { ref.compose_add_recipient(); })
+ .addEventListener('keypress', function(o) {
+ if (o.key_pressed == o.ENTER_KEY) {
+ if (!ref.compose_add_recipient()) {
+ // execute link action on <enter> if not a recipient entry
+ if (o.last_selected && String(o.last_selected).charAt(0) == 'G') {
+ $(o.rows[o.last_selected].obj).find('a').first().click();
+ }
+ }
+ }
+ })
.init();
+
+ // remember last focused address field
+ $('#_to,#_cc,#_bcc').focus(function() { ref.env.focused_field = this; });
}
if (this.gui_objects.addressbookslist) {
@@ -385,18 +404,23 @@ function rcube_webmail()
.addEventListener('dragend', function(e) { ref.drag_end(e); })
.init();
- if (this.env.cid)
- this.contact_list.highlight_row(this.env.cid);
-
- this.gui_objects.contactslist.parentNode.onmousedown = function(e){ return ref.click_on_list(e); };
- document.onmouseup = function(e){ return ref.doc_mouse_up(e); };
-
$(this.gui_objects.qsearchbox).focusin(function() { ref.contact_list.blur(); });
this.update_group_commands();
this.command('list');
}
+ if (this.gui_objects.savedsearchlist) {
+ this.savedsearchlist = new rcube_treelist_widget(this.gui_objects.savedsearchlist, {
+ id_prefix: 'rcmli',
+ id_encode: this.html_identifier_encode,
+ id_decode: this.html_identifier_decode
+ });
+
+ this.savedsearchlist.addEventListener('select', function(node) {
+ ref.triggerEvent('selectfolder', { folder:node.id, prefix:'rcmli' }); });
+ }
+
this.set_page_buttons();
if (this.env.cid) {
@@ -426,6 +450,9 @@ function rcube_webmail()
else if (this.env.action == 'edit-identity' || this.env.action == 'add-identity') {
this.enable_command('save', 'edit', 'toggle-editor', true);
this.enable_command('delete', this.env.identities_level < 2);
+
+ // initialize HTML editor
+ this.editor_init(this.env.editor_config, 'rcmfd_signature');
}
else if (this.env.action == 'folders') {
this.enable_command('subscribe', 'unsubscribe', 'create-folder', 'rename-folder', true);
@@ -441,19 +468,22 @@ function rcube_webmail()
if (this.gui_objects.identitieslist) {
this.identity_list = new rcube_list_widget(this.gui_objects.identitieslist,
- {multiselect:false, draggable:false, keyboard:false});
+ {multiselect:false, draggable:false, keyboard:true});
this.identity_list
.addEventListener('select', function(o) { ref.identity_select(o); })
+ .addEventListener('keypress', function(o) {
+ if (o.key_pressed == o.ENTER_KEY) {
+ ref.identity_select(o);
+ }
+ })
.init()
.focus();
-
- if (this.env.iid)
- this.identity_list.highlight_row(this.env.iid);
}
else if (this.gui_objects.sectionslist) {
- this.sections_list = new rcube_list_widget(this.gui_objects.sectionslist, {multiselect:false, draggable:false, keyboard:false});
+ this.sections_list = new rcube_list_widget(this.gui_objects.sectionslist, {multiselect:false, draggable:false, keyboard:true});
this.sections_list
.addEventListener('select', function(o) { ref.section_select(o); })
+ .addEventListener('keypress', function(o) { if (o.key_pressed == o.ENTER_KEY) ref.section_select(o); })
.init()
.focus();
}
@@ -461,7 +491,7 @@ function rcube_webmail()
this.init_subscription_list();
}
else if (this.gui_objects.responseslist) {
- this.responses_list = new rcube_list_widget(this.gui_objects.responseslist, {multiselect:false, draggable:false, keyboard:false});
+ this.responses_list = new rcube_list_widget(this.gui_objects.responseslist, {multiselect:false, draggable:false, keyboard:true});
this.responses_list
.addEventListener('select', function(list) {
var win, id = list.get_single_selection();
@@ -479,7 +509,7 @@ function rcube_webmail()
case 'login':
var input_user = $('#rcmloginuser');
- input_user.bind('keyup', function(e){ return rcmail.login_user_keyup(e); });
+ input_user.bind('keyup', function(e){ return ref.login_user_keyup(e); });
if (input_user.val() == '')
input_user.focus();
@@ -499,8 +529,8 @@ function rcube_webmail()
// display 'loading' message on form submit, lock submit button
$('form').submit(function () {
$('input[type=submit]', this).prop('disabled', true);
- rcmail.clear_messages();
- rcmail.display_message('', 'loading');
+ ref.clear_messages();
+ ref.display_message('', 'loading');
});
this.enable_command('login', true);
@@ -510,7 +540,7 @@ function rcube_webmail()
// select first input field in an edit form
if (this.gui_objects.editform)
$("input,select,textarea", this.gui_objects.editform)
- .not(':hidden').not(':disabled').first().select();
+ .not(':hidden').not(':disabled').first().select().focus();
// unset contentframe variable if preview_pane is enabled
if (this.env.contentframe && !$('#' + this.env.contentframe).is(':visible'))
@@ -531,7 +561,9 @@ function rcube_webmail()
// init treelist widget
if (this.gui_objects.folderlist && window.rcube_treelist_widget) {
this.treelist = new rcube_treelist_widget(this.gui_objects.folderlist, {
+ selectable: true,
id_prefix: 'rcmli',
+ parent_focus: true,
id_encode: this.html_identifier_encode,
id_decode: this.html_identifier_decode,
check_droptarget: function(node) { return !node.virtual && ref.check_droptarget(node.id) }
@@ -551,17 +583,29 @@ function rcube_webmail()
.get(0).addEventListener('drop', function(e){ return ref.file_dropped(e); }, false);
}
+ // catch document (and iframe) mouse clicks
+ var body_mouseup = function(e){ return ref.doc_mouse_up(e); };
+ $(document.body)
+ .bind('mouseup', body_mouseup)
+ .bind('keydown', function(e){ return ref.doc_keypress(e); });
+
+ $('iframe').load(function(e) {
+ try { $(this.contentDocument || this.contentWindow).on('mouseup', body_mouseup); }
+ catch (e) {/* catch possible "Permission denied" error in IE */ }
+ })
+ .contents().on('mouseup', body_mouseup);
+
// trigger init event hook
this.triggerEvent('init', { task:this.task, action:this.env.action });
// execute all foreign onload scripts
// @deprecated
- for (var i in this.onloads) {
- if (typeof this.onloads[i] === 'string')
- eval(this.onloads[i]);
- else if (typeof this.onloads[i] === 'function')
- this.onloads[i]();
- }
+ for (n in this.onloads) {
+ if (typeof this.onloads[n] === 'string')
+ eval(this.onloads[n]);
+ else if (typeof this.onloads[n] === 'function')
+ this.onloads[n]();
+ }
// start keep-alive and refresh intervals
this.start_refresh();
@@ -583,7 +627,7 @@ function rcube_webmail()
{
var ret, uid, cid, url, flag, aborted = false;
- if (obj && obj.blur)
+ if (obj && obj.blur && !(event && rcube_event.is_keyboard(event)))
obj.blur();
// do nothing if interface is locked by other command (with exception for searching reset)
@@ -611,23 +655,24 @@ function rcube_webmail()
// remove copy from local storage if compose screen is left intentionally
this.remove_compose_data(this.env.compose_id);
+ this.compose_skip_unsavedcheck = true;
}
this.last_command = command;
// process external commands
if (typeof this.command_handlers[command] === 'function') {
- ret = this.command_handlers[command](props, obj);
+ ret = this.command_handlers[command](props, obj, event);
return ret !== undefined ? ret : (obj ? false : true);
}
else if (typeof this.command_handlers[command] === 'string') {
- ret = window[this.command_handlers[command]](props, obj);
+ ret = window[this.command_handlers[command]](props, obj, event);
return ret !== undefined ? ret : (obj ? false : true);
}
// trigger plugin hooks
- this.triggerEvent('actionbefore', {props:props, action:command});
- ret = this.triggerEvent('before'+command, props);
+ this.triggerEvent('actionbefore', {props:props, action:command, originalEvent:event});
+ ret = this.triggerEvent('before'+command, props || event);
if (ret !== undefined) {
// abort if one of the handlers returned false
if (ret === false)
@@ -672,14 +717,12 @@ function rcube_webmail()
if (win) {
this.save_compose_form_local();
+ this.compose_skip_unsavedcheck = true;
$("input[name='_action']", form).val('compose');
form.action = this.url('mail/compose', { _id: this.env.compose_id, _extwin: 1 });
form.target = win.name;
form.submit();
}
- else {
- // this.display_message(this.get_label('windowopenerror'), 'error');
- }
}
else {
this.open_window(this.env.permaurl, true);
@@ -702,9 +745,15 @@ function rcube_webmail()
var mimetype = this.env.attachments[props.id];
this.enable_command('open-attachment', mimetype && this.env.mimetypes && $.inArray(mimetype, this.env.mimetypes) >= 0);
}
+ this.show_menu(props, props.show || undefined, event);
+ break;
+
+ case 'menu-close':
+ this.hide_menu(props, event);
+ break;
case 'menu-save':
- this.triggerEvent(command, {props:props});
+ this.triggerEvent(command, {props:props, originalEvent:event});
return false;
case 'open':
@@ -882,14 +931,14 @@ function rcube_webmail()
case 'move':
case 'moveto': // deprecated
if (this.task == 'mail')
- this.move_messages(props, obj);
+ this.move_messages(props, event);
else if (this.task == 'addressbook')
this.move_contacts(props);
break;
case 'copy':
if (this.task == 'mail')
- this.copy_messages(props, obj);
+ this.copy_messages(props, event);
else if (this.task == 'addressbook')
this.copy_contacts(props);
break;
@@ -1004,7 +1053,7 @@ function rcube_webmail()
if (this.task == 'mail') {
url._mbox = this.env.mailbox;
if (props)
- url._to = props;
+ url._to = props;
// also send search request so we can go back to search result after message is sent
if (this.env.search_request)
url._search = this.env.search_request;
@@ -1032,25 +1081,23 @@ function rcube_webmail()
break;
}
}
- else if (props)
+ else if (props && typeof props == 'string') {
url._to = props;
+ }
+ else if (props && typeof props == 'object') {
+ $.extend(url, props);
+ }
this.open_compose_step(url);
break;
case 'spellcheck':
if (this.spellcheck_state()) {
- this.stop_spellchecking();
+ this.editor.spellcheck_stop();
}
else {
- if (window.tinyMCE && tinyMCE.get(this.env.composebody)) {
- tinyMCE.execCommand('mceSpellCheck', true);
- }
- else if (this.env.spellcheck && this.env.spellcheck.spellCheck) {
- this.env.spellcheck.spellCheck();
- }
+ this.editor.spellcheck_start();
}
- this.spellcheck_state();
break;
case 'savedraft':
@@ -1132,8 +1179,8 @@ function rcube_webmail()
this.gui_objects.messagepartframe.contentWindow.print();
}
else if (uid = this.get_single_uid()) {
- ref.printwin = this.open_window(this.env.comm_path+'&_action=print&_uid='+uid+'&_mbox='+urlencode(this.get_message_mailbox(uid))+(this.env.safemode ? '&_safe=1' : ''), true, true);
- if (this.printwin) {
+ url = '&_action=print&_uid='+uid+'&_mbox='+urlencode(this.get_message_mailbox(uid))+(this.env.safemode ? '&_safe=1' : '');
+ if (this.open_window(this.env.comm_path + url, true, true)) {
if (this.env.action != 'show')
this.mark_message('read', uid);
}
@@ -1272,7 +1319,7 @@ function rcube_webmail()
default:
var func = command.replace(/-/g, '_');
if (this[func] && typeof this[func] === 'function') {
- ret = this[func](props, obj);
+ ret = this[func](props, obj, event);
}
break;
}
@@ -1309,7 +1356,7 @@ function rcube_webmail()
this.command_enabled = function(cmd)
{
return this.commands[cmd];
- }
+ };
// lock/unlock interface
this.set_busy = function(a, message, id)
@@ -1351,13 +1398,14 @@ function rcube_webmail()
// switch to another application task
this.switch_task = function(task)
{
- if (this.task===task && task!='mail')
+ if (this.task === task && task != 'mail')
return;
var url = this.get_task_url(task);
+
if (task == 'mail')
url += '&_mbox=INBOX';
- else if (task == 'logout')
+ else if (task == 'logout' && !this.env.server_error)
this.clear_compose_data();
this.redirect(url);
@@ -1376,7 +1424,7 @@ function rcube_webmail()
if (this.is_framed())
parent.rcmail.reload(delay);
else if (delay)
- setTimeout(function(){ rcmail.reload(); }, delay);
+ setTimeout(function() { ref.reload(); }, delay);
else if (window.location)
location.href = this.env.comm_path + (this.env.action ? '&_action='+this.env.action : '');
};
@@ -1404,15 +1452,15 @@ function rcube_webmail()
this.is_framed = function()
{
- return (this.env.framed && parent.rcmail && parent.rcmail != this && parent.rcmail.command);
+ return this.env.framed && parent.rcmail && parent.rcmail != this && typeof parent.rcmail.command == 'function';
};
this.save_pref = function(prop)
{
- var request = {'_name': prop.name, '_value': prop.value};
+ var request = {_name: prop.name, _value: prop.value};
if (prop.session)
- request['_session'] = prop.session;
+ request._session = prop.session;
if (prop.env)
this.env[prop.env] = prop.value;
@@ -1451,7 +1499,8 @@ function rcube_webmail()
if (menu && modkey == SHIFT_KEY && this.commands['copy']) {
var pos = rcube_event.get_mouse_pos(e);
this.env.drag_target = target;
- $(menu).css({top: (pos.y-10)+'px', left: (pos.x-10)+'px'}).show();
+ this.show_menu(this.gui_objects.dragmenu.id, true, e);
+ $(menu).css({top: (pos.y-10)+'px', left: (pos.x-10)+'px'});
return true;
}
@@ -1551,7 +1600,7 @@ function rcube_webmail()
// select the folder if one of its childs is currently selected
// don't select if it's virtual (#1488346)
- if (this.env.mailbox && this.env.mailbox.startsWith(name + this.env.delimiter) && !node.virtual)
+ if (!node.virtual && this.env.mailbox && this.env.mailbox.startsWith(name + this.env.delimiter))
this.command('list', name);
}
else {
@@ -1567,17 +1616,22 @@ function rcube_webmail()
}
};
+ // global mouse-click handler to cleanup some UI elements
this.doc_mouse_up = function(e)
{
- var list, id;
+ var list, id, target = rcube_event.get_target(e);
// ignore event if jquery UI dialog is open
- if ($(rcube_event.get_target(e)).closest('.ui-dialog, .ui-widget-overlay').length)
+ if ($(target).closest('.ui-dialog, .ui-widget-overlay').length)
return;
- list = this.message_list || this.contact_list;
- if (list && !rcube_mouse_is_over(e, list.list.parentNode))
- list.blur();
+ // remove focus from list widgets
+ if (window.rcube_list_widget && rcube_list_widget._instances.length) {
+ $.each(rcube_list_widget._instances, function(i,list){
+ if (list && !rcube_mouse_is_over(e, list.list.parentNode))
+ list.blur();
+ });
+ }
// reset 'pressed' buttons
if (this.buttons_sel) {
@@ -1586,20 +1640,80 @@ function rcube_webmail()
this.button_out(this.buttons_sel[id], id);
this.buttons_sel = {};
}
+
+ // reset popup menus; delayed to have updated menu_stack data
+ setTimeout(function(e){
+ var obj, skip, config, id, i, parents = $(target).parents();
+ for (i = ref.menu_stack.length - 1; i >= 0; i--) {
+ id = ref.menu_stack[i];
+ obj = $('#' + id);
+
+ if (obj.is(':visible')
+ && target != obj.data('opener')
+ && target != obj.get(0) // check if scroll bar was clicked (#1489832)
+ && !parents.is(obj.data('opener'))
+ && id != skip
+ && (obj.attr('data-editable') != 'true' || !$(target).parents('#' + id).length)
+ && (obj.attr('data-sticky') != 'true' || !rcube_mouse_is_over(e, obj.get(0)))
+ ) {
+ ref.hide_menu(id, e);
+ }
+ skip = obj.data('parent');
+ }
+ }, 10);
};
- this.click_on_list = function(e)
+ // global keypress event handler
+ this.doc_keypress = function(e)
{
- if (this.gui_objects.qsearchbox)
- this.gui_objects.qsearchbox.blur();
+ // Helper method to move focus to the next/prev active menu item
+ var focus_menu_item = function(dir) {
+ var obj, item, mod = dir < 0 ? 'prevAll' : 'nextAll', limit = dir < 0 ? 'last' : 'first';
+ if (ref.focused_menu && (obj = $('#'+ref.focused_menu))) {
+ item = obj.find(':focus').closest('li')[mod](':has(:not([aria-disabled=true]))').find('a,input')[limit]();
+ if (!item.length)
+ item = obj.find(':focus').closest('ul')[mod](':has(:not([aria-disabled=true]))').find('a,input')[limit]();
+ return item.focus().length;
+ }
- if (this.message_list)
- this.message_list.focus();
- else if (this.contact_list)
- this.contact_list.focus();
+ return 0;
+ };
+
+ var target = e.target || {},
+ keyCode = rcube_event.get_keycode(e);
+
+ // save global reference for keyboard detection on click events in IE
+ rcube_event._last_keyboard_event = e;
+
+ if (e.keyCode != 27 && (!this.menu_keyboard_active || target.nodeName == 'TEXTAREA' || target.nodeName == 'SELECT')) {
+ return true;
+ }
+
+ switch (keyCode) {
+ case 38:
+ case 40:
+ case 63232: // "up", in safari keypress
+ case 63233: // "down", in safari keypress
+ focus_menu_item(keyCode == 38 || keyCode == 63232 ? -1 : 1);
+ return rcube_event.cancel(e);
+
+ case 9: // tab
+ if (this.focused_menu) {
+ var mod = rcube_event.get_modifier(e);
+ if (!focus_menu_item(mod == SHIFT_KEY ? -1 : 1)) {
+ this.hide_menu(this.focused_menu, e);
+ }
+ }
+ return rcube_event.cancel(e);
+
+ case 27: // esc
+ if (this.menu_stack.length)
+ this.hide_menu(this.menu_stack[this.menu_stack.length-1], e);
+ break;
+ }
return true;
- };
+ }
this.msglist_select = function(list)
{
@@ -1732,9 +1846,6 @@ function rcube_webmail()
&& !this.env.mailboxes[id].virtual
&& (this.env.mailboxes[id].id != this.env.mailbox || this.is_multifolder_listing())) ? 1 : 0;
- case 'settings':
- return id != this.env.mailbox ? 1 : 0;
-
case 'addressbook':
var target;
if (id != this.env.source && (target = this.env.contactfolders[id])) {
@@ -1778,6 +1889,13 @@ function rcube_webmail()
+(toolbar ? ',toolbar=yes,menubar=yes,status=yes' : ',toolbar=no,menubar=no,status=no'));
}
+ // detect popup blocker (#1489618)
+ // don't care this might not work with all browsers
+ if (!extwin || extwin.closed) {
+ this.display_message(this.get_label('windowopenerror'), 'warning');
+ return;
+ }
+
// write loading... message to empty windows
if (!url && extwin.document) {
extwin.document.write('<html><body>' + this.get_label('loading') + '</body></html>');
@@ -1787,7 +1905,7 @@ function rcube_webmail()
this.triggerEvent('openwindow', { url:url, handle:extwin });
// focus window, delayed to bring to front
- window.setTimeout(function() { extwin && extwin.focus(); }, 10);
+ setTimeout(function() { extwin && extwin.focus(); }, 10);
return extwin;
};
@@ -1874,7 +1992,7 @@ function rcube_webmail()
flags: flags.extra_flags
});
- var c, n, col, html, css_class,
+ var c, n, col, html, css_class, label, status_class = '', status_label = '',
tree = '', expando = '',
list = this.message_list,
rows = list.rows,
@@ -1891,17 +2009,26 @@ function rcube_webmail()
css_class = 'msgicon';
if (this.env.status_col === null) {
css_class += ' status';
- if (flags.deleted)
- css_class += ' deleted';
- else if (!flags.seen)
- css_class += ' unread';
- else if (flags.unread_children > 0)
- css_class += ' unreadchildren';
+ if (flags.deleted) {
+ status_class += ' deleted';
+ status_label += this.get_label('deleted') + ' ';
+ }
+ else if (!flags.seen) {
+ status_class += ' unread';
+ status_label += this.get_label('unread') + ' ';
+ }
+ else if (flags.unread_children > 0) {
+ status_class += ' unreadchildren';
+ }
+ }
+ if (flags.answered) {
+ status_class += ' replied';
+ status_label += this.get_label('replied') + ' ';
+ }
+ if (flags.forwarded) {
+ status_class += ' forwarded';
+ status_label += this.get_label('replied') + ' ';
}
- if (flags.answered)
- css_class += ' replied';
- if (flags.forwarded)
- css_class += ' forwarded';
// update selection
if (message.selected && !list.in_selection(uid))
@@ -1938,15 +2065,17 @@ function rcube_webmail()
row_class += ' unroot';
}
- tree += '<span id="msgicn'+row.id+'" class="'+css_class+'">&nbsp;</span>';
+ tree += '<span id="msgicn'+row.id+'" class="'+css_class+status_class+'" title="'+status_label+'"></span>';
row.className = row_class;
// build subject link
if (cols.subject) {
- var action = flags.mbox == this.env.drafts_mailbox ? 'compose' : 'show';
- var uid_param = flags.mbox == this.env.drafts_mailbox ? '_draft_uid' : '_uid';
- cols.subject = '<a href="./?_task=mail&_action='+action+'&_mbox='+urlencode(flags.mbox)+'&'+uid_param+'='+urlencode(uid)+'"'+
- ' onclick="return rcube_event.cancel(event)" onmouseover="rcube_webmail.long_subject_title(this,'+(message.depth+1)+')"><span>'+cols.subject+'</span></a>';
+ var action = flags.mbox == this.env.drafts_mailbox ? 'compose' : 'show',
+ uid_param = flags.mbox == this.env.drafts_mailbox ? '_draft_uid' : '_uid',
+ query = { _mbox: flags.mbox };
+ query[uid_param] = uid;
+ cols.subject = '<a href="' + this.url(action, query) + '" onclick="return rcube_event.keyboard_only(event)"' +
+ ' onmouseover="rcube_webmail.long_subject_title(this,'+(message.depth+1)+')" tabindex="-1"><span>'+cols.subject+'</span></a>';
}
// add each submitted col
@@ -1960,28 +2089,36 @@ function rcube_webmail()
if (c == 'flag') {
css_class = (flags.flagged ? 'flagged' : 'unflagged');
- html = '<span id="flagicn'+row.id+'" class="'+css_class+'">&nbsp;</span>';
+ label = this.get_label(css_class);
+ html = '<span id="flagicn'+row.id+'" class="'+css_class+'" title="'+label+'"></span>';
}
else if (c == 'attachment') {
+ label = this.get_label('withattachment');
if (flags.attachmentClass)
- html = '<span class="'+flags.attachmentClass+'">&nbsp;</span>';
+ html = '<span class="'+flags.attachmentClass+'" title="'+label+'"></span>';
else if (/application\/|multipart\/(m|signed)/.test(flags.ctype))
- html = '<span class="attachment">&nbsp;</span>';
+ html = '<span class="attachment" title="'+label+'"></span>';
else if (/multipart\/report/.test(flags.ctype))
- html = '<span class="report">&nbsp;</span>';
- else
+ html = '<span class="report"></span>';
+ else
html = '&nbsp;';
}
else if (c == 'status') {
- if (flags.deleted)
+ label = '';
+ if (flags.deleted) {
css_class = 'deleted';
- else if (!flags.seen)
+ label = this.get_label('deleted');
+ }
+ else if (!flags.seen) {
css_class = 'unread';
- else if (flags.unread_children > 0)
+ label = this.get_label('unread');
+ }
+ else if (flags.unread_children > 0) {
css_class = 'unreadchildren';
+ }
else
css_class = 'msgicon';
- html = '<span id="statusicn'+row.id+'" class="'+css_class+'">&nbsp;</span>';
+ html = '<span id="statusicn'+row.id+'" class="'+css_class+status_class+'" title="'+label+'"></span>';
}
else if (c == 'threads')
html = expando;
@@ -1991,8 +2128,10 @@ function rcube_webmail()
html = tree + cols[c];
}
else if (c == 'priority') {
- if (flags.prio > 0 && flags.prio < 6)
- html = '<span class="prio'+flags.prio+'">&nbsp;</span>';
+ if (flags.prio > 0 && flags.prio < 6) {
+ label = this.get_label('priority') + ' ' + flags.prio;
+ html = '<span class="prio'+flags.prio+'" title="'+label+'"></span>';
+ }
else
html = '&nbsp;';
}
@@ -2109,20 +2248,40 @@ function rcube_webmail()
this.location_href(this.env.comm_path+url, target, true);
// mark as read and change mbox unread counter
- if (preview && this.message_list && this.message_list.rows[id] && this.message_list.rows[id].unread && this.env.preview_pane_mark_read >= 0) {
+ if (preview && this.message_list && this.message_list.rows[id] && this.message_list.rows[id].unread && this.env.preview_pane_mark_read > 0) {
this.preview_read_timer = setTimeout(function() {
- ref.set_message(id, 'unread', false);
- if (ref.env.unread_counts[ref.env.mailbox]) {
- ref.env.unread_counts[ref.env.mailbox] -= 1;
- ref.set_unread_count(ref.env.mailbox, ref.env.unread_counts[ref.env.mailbox], ref.env.mailbox == 'INBOX');
- }
- if (ref.env.preview_pane_mark_read > 0)
- ref.http_post('mark', {_uid: id, _flag: 'read', _quiet: 1});
+ ref.set_unread_message(id, ref.env.mailbox);
+ ref.http_post('mark', {_uid: id, _flag: 'read', _quiet: 1});
}, this.env.preview_pane_mark_read * 1000);
}
}
};
+ // update message status and unread counter after marking a message as read
+ this.set_unread_message = function(id, folder)
+ {
+ var self = this;
+
+ // find window with messages list
+ if (!self.message_list)
+ self = self.opener();
+
+ if (!self && window.parent)
+ self = parent.rcmail;
+
+ if (!self || !self.message_list)
+ return;
+
+ // this may fail in multifolder mode
+ if (self.set_message(id, 'unread', false) === false)
+ self.set_message(id + '-' + folder, 'unread', false);
+
+ if (self.env.unread_counts[folder] > 0) {
+ self.env.unread_counts[folder] -= 1;
+ self.set_unread_count(folder, self.env.unread_counts[folder], folder == 'INBOX' && !self.is_multifolder_listing());
+ }
+ };
+
this.show_contentframe = function(show)
{
var frame, win, name = this.env.contentframe;
@@ -2269,6 +2428,9 @@ function rcube_webmail()
url._framed = 1;
}
+ if (this.env.uid)
+ url._uid = this.env.uid;
+
// load message list to target frame/window
if (mbox) {
this.set_busy(true, 'loading');
@@ -2282,7 +2444,6 @@ function rcube_webmail()
this.clear_message_list = function()
{
this.env.messages = {};
- this.last_selected = 0;
this.show_contentframe(false);
if (this.message_list)
@@ -2301,6 +2462,7 @@ function rcube_webmail()
url._page = page;
this.http_request('list', url, lock);
+ this.update_state({ _mbox: mbox, _page: (page && page > 1 ? page : null) });
};
// removes messages that doesn't exists from list selection array
@@ -2315,7 +2477,7 @@ function rcube_webmail()
selection.push(selected[i]);
this.message_list.selection = selection;
- }
+ };
// expand all threads with unread children
this.expand_unread = function()
@@ -2328,8 +2490,10 @@ function rcube_webmail()
this.message_list.expand_all(r);
this.set_unread_children(r.uid);
}
+
new_row = new_row.nextSibling;
}
+
return false;
};
@@ -2525,8 +2689,8 @@ function rcube_webmail()
$('#'+r.id+' .leaf:first')
.attr('id', 'rcmexpando' + r.id)
.attr('class', (r.obj.style.display != 'none' ? 'expanded' : 'collapsed'))
- .bind('mousedown', {uid:r.uid, p:this},
- function(e) { return e.data.p.expand_message_row(e, e.data.uid); });
+ .bind('mousedown', {uid: r.uid},
+ function(e) { return ref.expand_message_row(e, e.data.uid); });
r.unread_children = 0;
roots.push(r);
@@ -2546,8 +2710,8 @@ function rcube_webmail()
}
// update unread_children for roots
- for (var i=0; i<roots.length; i++)
- this.set_unread_children(roots[i].uid);
+ for (r=0; r<roots.length; r++)
+ this.set_unread_children(roots[r].uid);
return count;
};
@@ -2574,7 +2738,7 @@ function rcube_webmail()
// set message icon
this.set_message_icon = function(uid)
{
- var css_class,
+ var css_class, label = '',
row = this.message_list.rows[uid];
if (!row)
@@ -2582,38 +2746,55 @@ function rcube_webmail()
if (row.icon) {
css_class = 'msgicon';
- if (row.deleted)
+ if (row.deleted) {
css_class += ' deleted';
- else if (row.unread)
+ label += this.get_label('deleted') + ' ';
+ }
+ else if (row.unread) {
css_class += ' unread';
+ label += this.get_label('unread') + ' ';
+ }
else if (row.unread_children)
css_class += ' unreadchildren';
if (row.msgicon == row.icon) {
- if (row.replied)
+ if (row.replied) {
css_class += ' replied';
- if (row.forwarded)
+ label += this.get_label('replied') + ' ';
+ }
+ if (row.forwarded) {
css_class += ' forwarded';
+ label += this.get_label('forwarded') + ' ';
+ }
css_class += ' status';
}
- row.icon.className = css_class;
+ $(row.icon).attr('class', css_class).attr('title', label);
}
if (row.msgicon && row.msgicon != row.icon) {
+ label = '';
css_class = 'msgicon';
- if (!row.unread && row.unread_children)
+ if (!row.unread && row.unread_children) {
css_class += ' unreadchildren';
- if (row.replied)
+ }
+ if (row.replied) {
css_class += ' replied';
- if (row.forwarded)
+ label += this.get_label('replied') + ' ';
+ }
+ if (row.forwarded) {
css_class += ' forwarded';
+ label += this.get_label('forwarded') + ' ';
+ }
- row.msgicon.className = css_class;
+ $(row.msgicon).attr('class', css_class).attr('title', label);
}
if (row.flagicon) {
css_class = (row.flagged ? 'flagged' : 'unflagged');
- row.flagicon.className = css_class;
+ label = this.get_label(css_class);
+ $(row.flagicon).attr('class', css_class)
+ .attr('aria-label', label)
+ .attr('title', label);
}
};
@@ -2628,16 +2809,10 @@ function rcube_webmail()
if (flag == 'unread') {
if (row.unread != status)
this.update_thread_root(uid, status ? 'unread' : 'read');
- row.unread = status;
}
- else if(flag == 'deleted')
- row.deleted = status;
- else if (flag == 'replied')
- row.replied = status;
- else if (flag == 'forwarded')
- row.forwarded = status;
- else if (flag == 'flagged')
- row.flagged = status;
+
+ if ($.inArray(flag, ['unread', 'deleted', 'replied', 'forwarded', 'flagged']) > -1)
+ row[flag] = status;
};
// set message row status, class and icon
@@ -2651,22 +2826,8 @@ function rcube_webmail()
if (flag)
this.set_message_status(uid, flag, status);
- var rowobj = $(row.obj);
-
- if (row.unread && !rowobj.hasClass('unread'))
- rowobj.addClass('unread');
- else if (!row.unread && rowobj.hasClass('unread'))
- rowobj.removeClass('unread');
-
- if (row.deleted && !rowobj.hasClass('deleted'))
- rowobj.addClass('deleted');
- else if (!row.deleted && rowobj.hasClass('deleted'))
- rowobj.removeClass('deleted');
-
- if (row.flagged && !rowobj.hasClass('flagged'))
- rowobj.addClass('flagged');
- else if (!row.flagged && rowobj.hasClass('flagged'))
- rowobj.removeClass('flagged');
+ if ($.inArray(flag, ['unread', 'deleted', 'flagged']) > -1)
+ $(row.obj)[row[flag] ? 'addClass' : 'removeClass'](flag);
this.set_unread_children(uid);
this.set_message_icon(uid);
@@ -2687,12 +2848,12 @@ function rcube_webmail()
};
// copy selected messages to the specified mailbox
- this.copy_messages = function(mbox, obj)
+ this.copy_messages = function(mbox, event)
{
if (mbox && typeof mbox === 'object')
mbox = mbox.id;
else if (!mbox)
- return this.folder_selector(obj, function(folder) { ref.command('copy', folder); });
+ return this.folder_selector(event, function(folder) { ref.command('copy', folder); });
// exit if current or no mailbox specified
if (!mbox || mbox == this.env.mailbox)
@@ -2709,12 +2870,12 @@ function rcube_webmail()
};
// move selected messages to the specified mailbox
- this.move_messages = function(mbox, obj)
+ this.move_messages = function(mbox, event)
{
if (mbox && typeof mbox === 'object')
mbox = mbox.id;
else if (!mbox)
- return this.folder_selector(obj, function(folder) { ref.command('move', folder); });
+ return this.folder_selector(event, function(folder) { ref.command('move', folder); });
// exit if current or no mailbox specified
if (!mbox || (mbox == this.env.mailbox && !this.is_multifolder_listing()))
@@ -3011,12 +3172,12 @@ function rcube_webmail()
this.message_list.clear_selection();
if (count < 0)
post_data._count = (count*-1);
- else if (count > 0)
+ else if (count > 0)
// remove threads from the end of the list
this.delete_excessive_thread_rows();
}
- // ??
+ // set of messages to mark as seen
if (r_uids.length)
post_data._ruid = this.uids_to_list(r_uids);
@@ -3030,7 +3191,7 @@ function rcube_webmail()
// argument should be a coma-separated list of uids
this.flag_deleted_as_read = function(uids)
{
- var icn_src, uid, i, len,
+ var uid, i, len,
rows = this.message_list ? this.message_list.rows : {};
if (typeof uids == 'string')
@@ -3158,7 +3319,7 @@ function rcube_webmail()
if (!this.gui_objects.messageform)
return false;
- var input_from = $("[name='_from']"),
+ var i, input_from = $("[name='_from']"),
input_to = $("[name='_to']"),
input_subject = $("input[name='_subject']"),
input_message = $("[name='_message']").get(0),
@@ -3187,7 +3348,7 @@ function rcube_webmail()
// init live search events
this.init_address_input_events(input_to, ac_props);
- for (var i in ac_fields) {
+ for (i in ac_fields) {
this.init_address_input_events($("[name='_"+ac_fields[i]+"']"), ac_props);
}
@@ -3201,62 +3362,8 @@ function rcube_webmail()
}
// check for locally stored compose data
- if (window.localStorage) {
- var index = this.local_storage_get_item('compose.index', []);
-
- for (var key, i = 0; i < index.length; i++) {
- key = index[i], formdata = this.local_storage_get_item('compose.' + key, null, true);
- if (!formdata) {
- continue;
- }
- // restore saved copy of current compose_id
- if (formdata.changed && key == this.env.compose_id) {
- this.restore_compose_form(key, html_mode);
- break;
- }
- // skip records from 'other' drafts
- if (this.env.draft_id && formdata.draft_id && formdata.draft_id != this.env.draft_id) {
- continue;
- }
- // skip records on reply
- if (this.env.reply_msgid && formdata.reply_msgid != this.env.reply_msgid) {
- continue;
- }
- // show dialog asking to restore the message
- if (formdata.changed && formdata.session != this.env.session_id) {
- this.show_popup_dialog(
- this.get_label('restoresavedcomposedata')
- .replace('$date', new Date(formdata.changed).toLocaleString())
- .replace('$subject', formdata._subject)
- .replace(/\n/g, '<br/>'),
- this.get_label('restoremessage'),
- [{
- text: this.get_label('restore'),
- click: function(){
- ref.restore_compose_form(key, html_mode);
- ref.remove_compose_data(key); // remove old copy
- ref.save_compose_form_local(); // save under current compose_id
- $(this).dialog('close');
- }
- },
- {
- text: this.get_label('delete'),
- click: function(){
- ref.remove_compose_data(key);
- $(this).dialog('close');
- }
- },
- {
- text: this.get_label('ignore'),
- click: function(){
- $(this).dialog('close');
- }
- }]
- );
- break;
- }
- }
- }
+ if (this.env.save_localstorage)
+ this.compose_restore_dialog(0, html_mode)
if (input_to.val() == '')
input_to.focus();
@@ -3274,12 +3381,78 @@ function rcube_webmail()
this.auto_save_start();
};
+ this.compose_restore_dialog = function(j, html_mode)
+ {
+ var i, key, formdata, index = this.local_storage_get_item('compose.index', []);
+
+ var show_next = function(i) {
+ if (++i < index.length)
+ ref.compose_restore_dialog(i, html_mode)
+ }
+
+ for (i = j || 0; i < index.length; i++) {
+ key = index[i];
+ formdata = this.local_storage_get_item('compose.' + key, null, true);
+ if (!formdata) {
+ continue;
+ }
+ // restore saved copy of current compose_id
+ if (formdata.changed && key == this.env.compose_id) {
+ this.restore_compose_form(key, html_mode);
+ break;
+ }
+ // skip records from 'other' drafts
+ if (this.env.draft_id && formdata.draft_id && formdata.draft_id != this.env.draft_id) {
+ continue;
+ }
+ // skip records on reply
+ if (this.env.reply_msgid && formdata.reply_msgid != this.env.reply_msgid) {
+ continue;
+ }
+ // show dialog asking to restore the message
+ if (formdata.changed && formdata.session != this.env.session_id) {
+ this.show_popup_dialog(
+ this.get_label('restoresavedcomposedata')
+ .replace('$date', new Date(formdata.changed).toLocaleString())
+ .replace('$subject', formdata._subject)
+ .replace(/\n/g, '<br/>'),
+ this.get_label('restoremessage'),
+ [{
+ text: this.get_label('restore'),
+ click: function(){
+ ref.restore_compose_form(key, html_mode);
+ ref.remove_compose_data(key); // remove old copy
+ ref.save_compose_form_local(); // save under current compose_id
+ $(this).dialog('close');
+ }
+ },
+ {
+ text: this.get_label('delete'),
+ click: function(){
+ ref.remove_compose_data(key);
+ $(this).dialog('close');
+ show_next(i);
+ }
+ },
+ {
+ text: this.get_label('ignore'),
+ click: function(){
+ $(this).dialog('close');
+ show_next(i);
+ }
+ }]
+ );
+ break;
+ }
+ }
+ }
+
this.init_address_input_events = function(obj, props)
{
this.env.recipients_delimiter = this.env.recipients_separator + ' ';
obj.keydown(function(e) { return ref.ksearch_keydown(e, this, props); })
- .attr('autocomplete', 'off');
+ .attr({ 'autocomplete': 'off', 'aria-autocomplete': 'list', 'aria-expanded': 'false', 'role': 'combobox' });
};
this.submit_messageform = function(draft)
@@ -3302,6 +3475,7 @@ function rcube_webmail()
form._draft.value = draft ? '1' : '';
form.action = this.add_url(form.action, '_unlock', msgid);
form.action = this.add_url(form.action, '_lang', lang);
+ form.action = this.add_url(form.action, '_framed', 1);
// register timer to notify about connection timeout
this.submit_timer = setTimeout(function(){
@@ -3325,6 +3499,12 @@ function rcube_webmail()
this.compose_add_recipient = function(field)
{
+ // find last focused field name
+ if (!field) {
+ field = $(this.env.focused_field).filter(':visible');
+ field = field.length ? field.attr('id').replace('_', '') : 'to';
+ }
+
var recipients = [], input = $('#_'+field), delim = this.env.recipients_delimiter;
if (this.contact_list && this.contact_list.selection.length) {
@@ -3350,18 +3530,19 @@ function rcube_webmail()
input.val(oldval + recipients.join(delim + ' ') + delim + ' ');
this.triggerEvent('add-recipient', { field:field, recipients:recipients });
}
+
+ return recipients.length;
};
// checks the input fields before sending a message
this.check_compose_input = function(cmd)
{
// check input fields
- var ed, input_to = $("[name='_to']"),
+ var input_to = $("[name='_to']"),
input_cc = $("[name='_cc']"),
input_bcc = $("[name='_bcc']"),
input_from = $("[name='_from']"),
- input_subject = $("[name='_subject']"),
- input_message = $("[name='_message']");
+ input_subject = $("[name='_subject']");
// check sender (if have no identities)
if (input_from.prop('type') == 'text' && !rcube_check_email(input_from.val(), true)) {
@@ -3388,99 +3569,77 @@ function rcube_webmail()
// display localized warning for missing subject
if (input_subject.val() == '') {
- var myprompt = $('<div class="prompt">').html('<div class="message">' + this.get_label('nosubjectwarning') + '</div>').appendTo(document.body);
- var prompt_value = $('<input>').attr('type', 'text').attr('size', 30).appendTo(myprompt).val(this.get_label('nosubject'));
-
- var buttons = {};
- buttons[this.get_label('cancel')] = function(){
- input_subject.focus();
- $(this).dialog('close');
+ var buttons = {},
+ myprompt = $('<div class="prompt">').html('<div class="message">' + this.get_label('nosubjectwarning') + '</div>')
+ .appendTo(document.body),
+ prompt_value = $('<input>').attr({type: 'text', size: 30}).val(this.get_label('nosubject'))
+ .appendTo(myprompt),
+ save_func = function() {
+ input_subject.val(prompt_value.val());
+ myprompt.dialog('close');
+ ref.command(cmd, { nocheck:true }); // repeat command which triggered this
+ };
+
+ buttons[this.get_label('sendmessage')] = function() {
+ save_func($(this));
};
- buttons[this.get_label('sendmessage')] = function(){
- input_subject.val(prompt_value.val());
+ buttons[this.get_label('cancel')] = function() {
+ input_subject.focus();
$(this).dialog('close');
- ref.command(cmd, { nocheck:true }); // repeat command which triggered this
};
myprompt.dialog({
modal: true,
resizable: false,
buttons: buttons,
- close: function(event, ui) { $(this).remove() }
+ close: function(event, ui) { $(this).remove(); }
});
- prompt_value.select();
- return false;
- }
- // Apply spellcheck changes if spell checker is active
- this.stop_spellchecking();
+ prompt_value.select().keydown(function(e) {
+ if (e.which == 13) save_func();
+ });
- if (window.tinyMCE)
- ed = tinyMCE.get(this.env.composebody);
+ return false;
+ }
// check for empty body
- if (!ed && input_message.val() == '' && !confirm(this.get_label('nobodywarning'))) {
- input_message.focus();
+ if (!this.editor.get_content() && !confirm(this.get_label('nobodywarning'))) {
+ this.editor.focus();
return false;
}
- else if (ed) {
- if (!ed.getContent() && !confirm(this.get_label('nobodywarning'))) {
- ed.focus();
- return false;
- }
- // move body from html editor to textarea (just to be sure, #1485860)
- tinyMCE.triggerSave();
- }
+
+ // move body from html editor to textarea (just to be sure, #1485860)
+ this.editor.save();
return true;
};
- this.toggle_editor = function(props)
+ this.toggle_editor = function(props, obj, e)
{
- this.stop_spellchecking();
+ // @todo: this should work also with many editors on page
+ var result = this.editor.toggle(props.html);
- if (props.mode == 'html') {
- this.plain2html($('#'+props.id).val(), props.id);
- tinyMCE.execCommand('mceAddControl', false, props.id);
+ if (!result && e) {
+ // fix selector value if operation failed
+ $(e.target).filter('select').val(props.html ? 'plain' : 'html');
+ }
- if (this.env.default_font)
- setTimeout(function() {
- $(tinyMCE.get(props.id).getBody()).css('font-family', rcmail.env.default_font);
- }, 500);
+ if (result) {
+ // update internal format flag
+ $("input[name='_is_html']").val(props.html ? 1 : 0);
}
- else if (this.html2plain(tinyMCE.get(props.id).getContent(), props.id))
- tinyMCE.execCommand('mceRemoveControl', false, props.id);
- return true;
+ return result;
};
this.insert_response = function(key)
{
var insert = this.env.textresponses[key] ? this.env.textresponses[key].text : null;
+
if (!insert)
return false;
- // insert into tinyMCE editor
- if ($("input[name='_is_html']").val() == '1') {
- var editor = tinyMCE.get(this.env.composebody);
- editor.getWin().focus(); // correct focus in IE & Chrome
- editor.selection.setContent(this.quote_html(insert).replace(/\r?\n/g, '<br/>'), { format:'text' });
- }
- // replace selection in compose textarea
- else {
- var textarea = rcube_find_object(this.env.composebody),
- selection = $(textarea).is(':focus') ? this.get_input_selection(textarea) : { start:0, end:0 },
- inp_value = textarea.value;
- pre = inp_value.substring(0, selection.start),
- end = inp_value.substring(selection.end, inp_value.length);
-
- // insert response text
- textarea.value = pre + insert + end;
-
- // set caret after inserted text
- this.set_caret_pos(textarea, selection.start + insert.length);
- textarea.focus();
- }
+ this.editor.replace(insert);
};
/**
@@ -3488,42 +3647,8 @@ function rcube_webmail()
*/
this.save_response = function()
{
- var sigstart, text = '', strip = false;
-
- // get selected text from tinyMCE editor
- if ($("input[name='_is_html']").val() == '1') {
- var editor = tinyMCE.get(this.env.composebody);
- editor.getWin().focus(); // correct focus in IE & Chrome
- text = editor.selection.getContent({ format:'text' });
-
- if (!text) {
- text = editor.getContent({ format:'text' });
- strip = true;
- }
- }
- // get selected text from compose textarea
- else {
- var textarea = rcube_find_object(this.env.composebody), sigstart;
- if (textarea && $(textarea).is(':focus')) {
- text = this.get_input_selection(textarea).text;
- }
-
- if (!text && textarea) {
- text = textarea.value;
- strip = true;
- }
- }
-
- // strip off signature
- if (strip) {
- sigstart = text.indexOf('-- \n');
- if (sigstart > 0) {
- text = text.substring(0, sigstart);
- }
- }
-
// show dialog to enter a name and to modify the text to be saved
- var buttons = {},
+ var buttons = {}, text = this.editor.get_content(true, true),
html = '<form class="propform">' +
'<div class="prop block"><label>' + this.get_label('responsename') + '</label>' +
'<input type="text" name="name" id="ffresponsename" size="40" /></div>' +
@@ -3551,7 +3676,7 @@ function rcube_webmail()
$(this).dialog('close');
};
- this.show_popup_dialog(html, this.gettext('savenewresponse'), buttons);
+ this.show_popup_dialog(html, this.gettext('newresponse'), buttons);
$('#ffresponsetext').val(text);
$('#ffresponsename').select();
@@ -3568,15 +3693,18 @@ function rcube_webmail()
$('<a>').addClass('insertresponse active')
.attr('href', '#')
.attr('rel', key)
+ .attr('tabindex', '0')
.html(this.quote_html(response.name))
.appendTo(li)
.mousedown(function(e){
return rcube_event.cancel(e);
})
- .mouseup(function(e){
- ref.command('insert-response', key);
- $(document.body).trigger('mouseup'); // hides the menu
- return rcube_event.cancel(e);
+ .bind('mouseup keypress', function(e){
+ if (e.type == 'mouseup' || rcube_event.get_keycode(e) == 13) {
+ ref.command('insert-response', $(this).attr('rel'));
+ $(document.body).trigger('mouseup'); // hides the menu
+ return rcube_event.cancel(e);
+ }
});
}
};
@@ -3596,39 +3724,17 @@ function rcube_webmail()
// submit delete request
if (key && confirm(this.get_label('deleteresponseconfirm'))) {
this.http_post('settings/delete-response', { _key: key }, false);
- return true;
}
-
- return false;
- };
-
- this.stop_spellchecking = function()
- {
- var ed;
-
- if (window.tinyMCE && (ed = tinyMCE.get(this.env.composebody))) {
- if (ed.plugins && ed.plugins.spellchecker && ed.plugins.spellchecker.active)
- ed.execCommand('mceSpellCheck');
- }
- else if (ed = this.env.spellcheck) {
- if (ed.state && ed.state != 'ready' && ed.state != 'no_error_found')
- $(ed.spell_span).trigger('click');
- }
-
- this.spellcheck_state();
};
+ // updates spellchecker buttons on state change
this.spellcheck_state = function()
{
- var ed, active;
+ var active = this.editor.spellcheck_state();
- if (window.tinyMCE && (ed = tinyMCE.get(this.env.composebody)) && ed.plugins && ed.plugins.spellchecker)
- active = ed.plugins.spellchecker.active;
- else if ((ed = this.env.spellcheck) && ed.state)
- active = ed.state != 'ready' && ed.state != 'no_error_found';
-
- if (rcmail.buttons.spellcheck)
- $('#'+rcmail.buttons.spellcheck[0].id)[active ? 'addClass' : 'removeClass']('selected');
+ $.each(this.buttons.spellcheck || [], function(i, v) {
+ $('#' + v.id)[active ? 'addClass' : 'removeClass']('selected');
+ });
return active;
};
@@ -3636,43 +3742,19 @@ function rcube_webmail()
// get selected language
this.spellcheck_lang = function()
{
- var ed;
-
- if (window.tinyMCE && (ed = tinyMCE.get(this.env.composebody)) && ed.plugins && ed.plugins.spellchecker)
- return ed.plugins.spellchecker.selectedLang;
- else if (this.env.spellcheck)
- return GOOGIE_CUR_LANG;
+ return this.editor.get_language();
};
this.spellcheck_lang_set = function(lang)
{
- var ed;
-
- if (window.tinyMCE && (ed = tinyMCE.get(this.env.composebody)) && ed.plugins)
- ed.plugins.spellchecker.selectedLang = lang;
- else if (this.env.spellcheck)
- this.env.spellcheck.setCurrentLanguage(lang);
+ this.editor.set_language(lang);
};
// resume spellchecking, highlight provided mispellings without new ajax request
- this.spellcheck_resume = function(ishtml, data)
+ this.spellcheck_resume = function(data)
{
- if (ishtml) {
- var ed = tinyMCE.get(this.env.composebody);
- sp = ed.plugins.spellchecker;
-
- sp.active = 1;
- sp._markWords(data);
- ed.nodeChanged();
- }
- else {
- var sp = this.env.spellcheck;
- sp.prepare(false, true);
- sp.processData(data);
- }
-
- this.spellcheck_state();
- }
+ this.editor.spellcheck_resume(data);
+ };
this.set_draft_id = function(id)
{
@@ -3699,19 +3781,21 @@ function rcube_webmail()
// always remove local copy upon saving as draft
this.remove_compose_data(this.env.compose_id);
+ this.compose_skip_unsavedcheck = false;
};
this.auto_save_start = function()
{
- if (this.env.draft_autosave)
+ if (this.env.draft_autosave) {
this.draft_autosave_submit = false;
this.save_timer = setTimeout(function(){
ref.draft_autosave_submit = true; // set auto-saved flag (#1489789)
ref.command("savedraft");
}, this.env.draft_autosave * 1000);
+ }
// save compose form content to local storage every 5 seconds
- if (!this.local_save_timer && window.localStorage) {
+ if (!this.local_save_timer && window.localStorage && this.env.save_localstorage) {
// track typing activity and only save on changes
this.compose_type_activity = this.compose_type_activity_last = 0;
$(document).bind('keypress', function(e){ ref.compose_type_activity++; });
@@ -3722,6 +3806,21 @@ function rcube_webmail()
ref.compose_type_activity_last = ref.compose_type_activity;
}
}, 5000);
+
+ $(window).unload(function() {
+ // remove copy from local storage if compose screen is left after warning
+ if (!ref.env.server_error)
+ ref.remove_compose_data(ref.env.compose_id);
+ });
+ }
+
+ // check for unsaved changes before leaving the compose page
+ if (!window.onbeforeunload) {
+ window.onbeforeunload = function() {
+ if (!ref.compose_skip_unsavedcheck && ref.cmp_hash != ref.compose_field_hash()) {
+ return ref.get_label('notsentwarning');
+ }
+ };
}
// Unlock interface now that saving is complete
@@ -3731,20 +3830,17 @@ function rcube_webmail()
this.compose_field_hash = function(save)
{
// check input fields
- var ed, i, val, str = '', hash_fields = ['to', 'cc', 'bcc', 'subject'];
+ var i, id, val, str = '', hash_fields = ['to', 'cc', 'bcc', 'subject'];
for (i=0; i<hash_fields.length; i++)
if (val = $('[name="_' + hash_fields[i] + '"]').val())
str += val + ':';
- if (window.tinyMCE && (ed = tinyMCE.get(this.env.composebody)))
- str += ed.getContent();
- else
- str += $("[name='_message']").val();
+ str += this.editor.get_content();
if (this.env.attachments)
- for (var upload_id in this.env.attachments)
- str += upload_id;
+ for (id in this.env.attachments)
+ str += id;
if (save)
this.cmp_hash = str;
@@ -3755,13 +3851,15 @@ function rcube_webmail()
// store the contents of the compose form to localstorage
this.save_compose_form_local = function()
{
+ // feature is disabled
+ if (!this.env.save_localstorage)
+ return;
+
var formdata = { session:this.env.session_id, changed:new Date().getTime() },
ed, empty = true;
// get fresh content from editor
- if (window.tinyMCE && (ed = tinyMCE.get(this.env.composebody))) {
- tinyMCE.triggerSave();
- }
+ this.editor.save();
if (this.env.draft_id) {
formdata.draft_id = this.env.draft_id;
@@ -3793,15 +3891,16 @@ function rcube_webmail()
}
});
- if (window.localStorage && !empty) {
+ if (!empty) {
var index = this.local_storage_get_item('compose.index', []),
key = this.env.compose_id;
- if ($.inArray(key, index) < 0) {
- index.push(key);
- }
- this.local_storage_set_item('compose.' + key, formdata, true);
- this.local_storage_set_item('compose.index', index);
+ if ($.inArray(key, index) < 0) {
+ index.push(key);
+ }
+
+ this.local_storage_set_item('compose.' + key, formdata, true);
+ this.local_storage_set_item('compose.index', index);
}
};
@@ -3824,15 +3923,8 @@ function rcube_webmail()
});
// initialize HTML editor
- if (formdata._is_html == '1') {
- if (!html_mode) {
- tinyMCE.execCommand('mceAddControl', false, this.env.composebody);
- this.triggerEvent('aftertoggle-editor', { mode:'html' });
- }
- }
- else if (html_mode) {
- tinyMCE.execCommand('mceRemoveControl', false, this.env.composebody);
- this.triggerEvent('aftertoggle-editor', { mode:'plain' });
+ if ((formdata._is_html == '1' && !html_mode) || (formdata._is_html != '1' && html_mode)) {
+ this.command('toggle-editor', {id: this.env.composebody, html: !html_mode});
}
}
};
@@ -3840,28 +3932,25 @@ function rcube_webmail()
// remove stored compose data from localStorage
this.remove_compose_data = function(key)
{
- if (window.localStorage) {
- var index = this.local_storage_get_item('compose.index', []);
+ var index = this.local_storage_get_item('compose.index', []);
- if ($.inArray(key, index) >= 0) {
- this.local_storage_remove_item('compose.' + key);
- this.local_storage_set_item('compose.index', $.grep(index, function(val,i) { return val != key; }));
- }
+ if ($.inArray(key, index) >= 0) {
+ this.local_storage_remove_item('compose.' + key);
+ this.local_storage_set_item('compose.index', $.grep(index, function(val,i) { return val != key; }));
}
};
// clear all stored compose data of this user
this.clear_compose_data = function()
{
- if (window.localStorage) {
- var i, index = this.local_storage_get_item('compose.index', []);
+ var i, index = this.local_storage_get_item('compose.index', []);
- for (i=0; i < index.length; i++) {
- this.local_storage_remove_item('compose.' + index[i]);
- }
- this.local_storage_remove_item('compose.index');
+ for (i=0; i < index.length; i++) {
+ this.local_storage_remove_item('compose.' + index[i]);
}
- }
+
+ this.local_storage_remove_item('compose.index');
+ };
this.change_identity = function(obj, show_sig)
@@ -3881,21 +3970,16 @@ function rcube_webmail()
return;
}
- var i, rx, cursor_pos, p = -1,
- id = obj.options[obj.selectedIndex].value,
- input_message = $("[name='_message']"),
- message = input_message.val(),
- is_html = ($("input[name='_is_html']").val() == '1'),
+ var id = obj.options[obj.selectedIndex].value,
sig = this.env.identity,
delim = this.env.recipients_separator,
- rx_delim = RegExp.escape(delim),
- headers = ['replyto', 'bcc'];
+ rx_delim = RegExp.escape(delim);
// update reply-to/bcc fields with addresses defined in identities
- for (i in headers) {
- var key = headers[i],
- old_val = sig && this.env.identities[sig] ? this.env.identities[sig][key] : '',
- new_val = id && this.env.identities[id] ? this.env.identities[id][key] : '',
+ $.each(['replyto', 'bcc'], function() {
+ var rx, key = this,
+ old_val = sig && ref.env.identities[sig] ? ref.env.identities[sig][key] : '',
+ new_val = id && ref.env.identities[id] ? ref.env.identities[id][key] : '',
input = $('[name="_'+key+'"]'), input_val = input.val();
// remove old address(es)
@@ -3906,7 +3990,7 @@ function rcube_webmail()
// cleanup
rx = new RegExp(rx_delim + '\\s*' + rx_delim, 'g');
- input_val = input_val.replace(rx, delim);
+ input_val = String(input_val).replace(rx, delim);
rx = new RegExp('^[\\s' + rx_delim + ']+');
input_val = input_val.replace(rx, '');
@@ -3922,7 +4006,7 @@ function rcube_webmail()
if (old_val || new_val)
input.val(input_val).change();
- }
+ });
// enable manual signature insert
if (this.env.signatures && this.env.signatures[id]) {
@@ -3932,92 +4016,7 @@ function rcube_webmail()
else
this.enable_command('insert-sig', false);
- if (!is_html) {
- // remove the 'old' signature
- if (show_sig && sig && this.env.signatures && this.env.signatures[sig]) {
- sig = this.env.signatures[sig].text;
- sig = sig.replace(/\r\n/g, '\n');
-
- p = this.env.top_posting ? message.indexOf(sig) : message.lastIndexOf(sig);
- if (p >= 0)
- message = message.substring(0, p) + message.substring(p+sig.length, message.length);
- }
- // add the new signature string
- if (show_sig && this.env.signatures && this.env.signatures[id]) {
- sig = this.env.signatures[id].text;
- sig = sig.replace(/\r\n/g, '\n');
-
- if (this.env.top_posting) {
- if (p >= 0) { // in place of removed signature
- message = message.substring(0, p) + sig + message.substring(p, message.length);
- cursor_pos = p - 1;
- }
- else if (!message) { // empty message
- cursor_pos = 0;
- message = '\n\n' + sig;
- }
- else if (pos = this.get_caret_pos(input_message.get(0))) { // at cursor position
- message = message.substring(0, pos) + '\n' + sig + '\n\n' + message.substring(pos, message.length);
- cursor_pos = pos;
- }
- else { // on top
- cursor_pos = 0;
- message = '\n\n' + sig + '\n\n' + message.replace(/^[\r\n]+/, '');
- }
- }
- else {
- message = message.replace(/[\r\n]+$/, '');
- cursor_pos = !this.env.top_posting && message.length ? message.length+1 : 0;
- message += '\n\n' + sig;
- }
- }
- else
- cursor_pos = this.env.top_posting ? 0 : message.length;
-
- input_message.val(message);
-
- // move cursor before the signature
- this.set_caret_pos(input_message.get(0), cursor_pos);
- }
- else if (show_sig && this.env.signatures) { // html
- var editor = tinyMCE.get(this.env.composebody),
- sigElem = editor.dom.get('_rc_sig');
-
- // Append the signature as a div within the body
- if (!sigElem) {
- var body = editor.getBody(),
- doc = editor.getDoc();
-
- sigElem = doc.createElement('div');
- sigElem.setAttribute('id', '_rc_sig');
-
- if (this.env.top_posting) {
- // if no existing sig and top posting then insert at caret pos
- editor.getWin().focus(); // correct focus in IE & Chrome
-
- var node = editor.selection.getNode();
- if (node.nodeName == 'BODY') {
- // no real focus, insert at start
- body.insertBefore(sigElem, body.firstChild);
- body.insertBefore(doc.createElement('br'), body.firstChild);
- }
- else {
- body.insertBefore(sigElem, node.nextSibling);
- body.insertBefore(doc.createElement('br'), node.nextSibling);
- }
- }
- else {
- if (bw.ie) // add empty line before signature on IE
- body.appendChild(doc.createElement('br'));
-
- body.appendChild(sigElem);
- }
- }
-
- if (this.env.signatures[id])
- sigElem.innerHTML = this.env.signatures[id].html;
- }
-
+ this.editor.change_signature(id, show_sig);
this.env.identity = id;
this.triggerEvent('change_identity');
return true;
@@ -4059,17 +4058,17 @@ function rcube_webmail()
} else if (this.contentWindow) {
d = this.contentWindow.document;
}
- content = d.childNodes[0].innerHTML;
+ content = d.childNodes[1].innerHTML;
} catch (err) {}
- if (!content.match(/add2attachment/) && (!bw.opera || (rcmail.env.uploadframe && rcmail.env.uploadframe == e.data.ts))) {
+ if (!content.match(/add2attachment/) && (!bw.opera || (ref.env.uploadframe && ref.env.uploadframe == e.data.ts))) {
if (!content.match(/display_message/))
- rcmail.display_message(rcmail.get_label('fileuploaderror'), 'error');
- rcmail.remove_from_attachment_list(e.data.ts);
+ ref.display_message(ref.get_label('fileuploaderror'), 'error');
+ ref.remove_from_attachment_list(e.data.ts);
}
// Opera hack: handle double onload
if (bw.opera)
- rcmail.env.uploadframe = e.data.ts;
+ ref.env.uploadframe = e.data.ts;
});
// display upload indicator and cancel button
@@ -4093,15 +4092,26 @@ function rcube_webmail()
// called from upload page
this.add2attachment_list = function(name, att, upload_id)
{
+ if (upload_id)
+ this.triggerEvent('fileuploaded', {name: name, attachment: att, id: upload_id});
+
+ if (!this.env.attachments)
+ this.env.attachments = {};
+
+ if (upload_id && this.env.attachments[upload_id])
+ delete this.env.attachments[upload_id];
+
+ this.env.attachments[name] = att;
+
if (!this.gui_objects.attachmentlist)
return false;
- if (!att.complete && ref.env.loadingicon)
- att.html = '<img src="'+ref.env.loadingicon+'" alt="" class="uploading" />' + att.html;
+ if (!att.complete && this.env.loadingicon)
+ att.html = '<img src="'+this.env.loadingicon+'" alt="" class="uploading" />' + att.html;
if (!att.complete && att.frame)
att.html = '<a title="'+this.get_label('cancel')+'" onclick="return rcmail.cancel_attachment_upload(\''+name+'\', \''+att.frame+'\');" href="#cancelupload" class="cancelupload">'
- + (this.env.cancelicon ? '<img src="'+this.env.cancelicon+'" alt="" />' : this.get_label('cancel')) + '</a>' + att.html;
+ + (this.env.cancelicon ? '<img src="'+this.env.cancelicon+'" alt="'+this.get_label('cancel')+'" />' : this.get_label('cancel')) + '</a>' + att.html;
var indicator, li = $('<li>');
@@ -4118,10 +4128,9 @@ function rcube_webmail()
li.appendTo(this.gui_objects.attachmentlist);
}
- if (upload_id && this.env.attachments[upload_id])
- delete this.env.attachments[upload_id];
-
- this.env.attachments[name] = att;
+ // set tabindex attribute
+ var tabindex = $(this.gui_objects.attachmentlist).attr('data-tabindex') || '0';
+ li.find('a').attr('tabindex', tabindex);
return true;
};
@@ -4154,13 +4163,13 @@ function rcube_webmail()
this.upload_progress_start = function(action, name)
{
- setTimeout(function() { rcmail.http_request(action, {_progress: name}); },
+ setTimeout(function() { ref.http_request(action, {_progress: name}); },
this.env.upload_progress_time * 1000);
};
this.upload_progress_update = function(param)
{
- var elem = $('#'+param.name + '> span');
+ var elem = $('#'+param.name + ' > span');
if (!elem.length || !param.text)
return;
@@ -4185,7 +4194,8 @@ function rcube_webmail()
{
if (value != '') {
var r, lock = this.set_busy(true, 'searching'),
- url = this.search_params(value);
+ url = this.search_params(value),
+ action = this.env.action == 'compose' && this.contact_list ? 'search-contacts' : 'search';
if (this.message_list)
this.clear_message_list();
@@ -4200,7 +4210,6 @@ function rcube_webmail()
// reset vars
this.env.current_page = 1;
- var action = this.env.action == 'compose' && this.contact_list ? 'search-contacts' : 'search';
r = this.http_request(action, url, lock);
this.env.qsearch = {lock: lock, request: r};
@@ -4214,9 +4223,9 @@ function rcube_webmail()
this.continue_search = function(request_id)
{
- var lock = ref.set_busy(true, 'stillsearching');
+ var lock = this.set_busy(true, 'stillsearching');
- setTimeout(function(){
+ setTimeout(function() {
var url = ref.search_params();
url._continue = request_id;
ref.env.qsearch = { lock: lock, request: ref.http_request('search', url, lock) };
@@ -4224,7 +4233,7 @@ function rcube_webmail()
};
// build URL params for search
- this.search_params = function(search, filter, smods)
+ this.search_params = function(search, filter)
{
var n, url = {}, mods_arr = [],
mods = this.env.search_mods,
@@ -4243,11 +4252,11 @@ function rcube_webmail()
if (search) {
url._q = search;
- if (!smods && mods && this.message_list)
- smods = mods[mbox] || mods['*'];
+ if (mods && this.message_list)
+ mods = mods[mbox] || mods['*'];
- if (smods) {
- for (n in smods)
+ if (mods) {
+ for (n in mods)
mods_arr.push(n);
url._headers = mods_arr.join(',');
}
@@ -4293,7 +4302,7 @@ function rcube_webmail()
this.set_searchmods = function(mods)
{
- var mbox = rcmail.env.mailbox,
+ var mbox = this.env.mailbox,
scope = this.env.search_scope || 'base';
if (scope == 'all')
@@ -4302,35 +4311,38 @@ function rcube_webmail()
if (!this.env.search_mods)
this.env.search_mods = {};
- this.env.search_mods[mbox] = mods;
+ if (mbox)
+ this.env.search_mods[mbox] = mods;
};
this.is_multifolder_listing = function()
{
- return typeof this.env.multifolder_listing != 'undefined' ? this.env.multifolder_listing :
+ return this.env.multifolder_listing !== undefined ? this.env.multifolder_listing :
(this.env.search_request && (this.env.search_scope || 'base') != 'base');
- }
+ };
this.sent_successfully = function(type, msg, folders)
{
this.display_message(msg, type);
+ this.compose_skip_unsavedcheck = true;
if (this.env.extwin) {
- var rc = this.opener();
this.lock_form(this.gui_objects.messageform);
+
+ var rc = this.opener();
if (rc) {
rc.display_message(msg, type);
// refresh the folder where sent message was saved or replied message comes from
if (folders && rc.env.task == 'mail' && rc.env.action == '' && $.inArray(rc.env.mailbox, folders) >= 0) {
- // @TODO: try with 'checkmail' here when #1485186 is fixed. See also #1489249.
- rc.command('list');
+ rc.command('checkmail');
}
}
- setTimeout(function(){ window.close() }, 1000);
+
+ setTimeout(function() { window.close(); }, 1000);
}
else {
// before redirect we need to wait some time for Chrome (#1486177)
- setTimeout(function(){ ref.list_mailbox(); }, 500);
+ setTimeout(function() { ref.list_mailbox(); }, 500);
}
};
@@ -4345,8 +4357,7 @@ function rcube_webmail()
if (this.ksearch_timer)
clearTimeout(this.ksearch_timer);
- var highlight,
- key = rcube_event.get_keycode(e),
+ var key = rcube_event.get_keycode(e),
mod = rcube_event.get_modifier(e);
switch (key) {
@@ -4355,9 +4366,9 @@ function rcube_webmail()
if (!this.ksearch_visible())
return;
- var dir = key==38 ? 1 : 0;
+ var dir = key == 38 ? 1 : 0,
+ highlight = document.getElementById('rcmkSearchItem' + this.ksearch_selected);
- highlight = document.getElementById('rcmksearchSelected');
if (!highlight)
highlight = this.ksearch_pane.__ul.firstChild;
@@ -4400,19 +4411,19 @@ function rcube_webmail()
this.ksearch_visible = function()
{
- return (this.ksearch_selected !== null && this.ksearch_selected !== undefined && this.ksearch_value);
+ return this.ksearch_selected !== null && this.ksearch_selected !== undefined && this.ksearch_value;
};
this.ksearch_select = function(node)
{
- var current = $('#rcmksearchSelected');
- if (current[0] && node) {
- current.removeAttr('id').removeClass('selected');
+ if (this.ksearch_pane && node) {
+ this.ksearch_pane.find('li.selected').removeClass('selected').removeAttr('aria-selected');
}
if (node) {
- $(node).attr('id', 'rcmksearchSelected').addClass('selected');
+ $(node).addClass('selected').attr('aria-selected', 'true');
this.ksearch_selected = node._rcm_id;
+ $(this.ksearch_input).attr('aria-activedescendant', 'rcmkSearchItem' + this.ksearch_selected);
}
};
@@ -4434,7 +4445,7 @@ function rcube_webmail()
this.ksearch_destroy();
// insert all members of a group
- if (typeof this.env.contacts[id] === 'object' && this.env.contacts[id].type == 'group') {
+ if (typeof this.env.contacts[id] === 'object' && this.env.contacts[id].type == 'group' && !this.env.contacts[id].email) {
insert += this.env.contacts[id].name + this.env.recipients_delimiter;
this.group2expand[this.env.contacts[id].id] = $.extend({ input: this.ksearch_input }, this.env.contacts[id]);
this.http_request('mail/group-expand', {_source: this.env.contacts[id].source, _gid: this.env.contacts[id].id}, false);
@@ -4541,14 +4552,14 @@ function rcube_webmail()
return;
// display search results
- var i, len, ul, li, text, type, init,
+ var i, id, len, ul, text, type, init,
value = this.ksearch_value,
maxlen = this.env.autocomplete_max ? this.env.autocomplete_max : 15;
// create results pane if not present
if (!this.ksearch_pane) {
ul = $('<ul>');
- this.ksearch_pane = $('<div>').attr('id', 'rcmKSearchpane')
+ this.ksearch_pane = $('<div>').attr('id', 'rcmKSearchpane').attr('role', 'listbox')
.css({ position:'absolute', 'z-index':30000 }).append(ul).appendTo(document.body);
this.ksearch_pane.__ul = ul[0];
}
@@ -4573,25 +4584,33 @@ function rcube_webmail()
// add each result line to list
if (results && (len = results.length)) {
for (i=0; i < len && maxlen > 0; i++) {
- text = typeof results[i] === 'object' ? results[i].name : results[i];
+ text = typeof results[i] === 'object' ? (results[i].display || results[i].name) : results[i];
type = typeof results[i] === 'object' ? results[i].type : '';
- li = document.createElement('LI');
- li.innerHTML = text.replace(new RegExp('('+RegExp.escape(value)+')', 'ig'), '##$1%%').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/##([^%]+)%%/g, '<b>$1</b>');
- li.onmouseover = function(){ ref.ksearch_select(this); };
- li.onmouseup = function(){ ref.ksearch_click(this) };
- li._rcm_id = this.env.contacts.length + i;
- if (type) li.className = type;
- ul.appendChild(li);
+ id = i + this.env.contacts.length;
+ $('<li>').attr('id', 'rcmkSearchItem' + id)
+ .attr('role', 'option')
+ .html('<i class="icon"></i>' + this.quote_html(text.replace(new RegExp('('+RegExp.escape(value)+')', 'ig'), '##$1%%')).replace(/##([^%]+)%%/g, '<b>$1</b>'))
+ .addClass(type || '')
+ .appendTo(ul)
+ .mouseover(function() { ref.ksearch_select(this); })
+ .mouseup(function() { ref.ksearch_click(this); })
+ .get(0)._rcm_id = id;
maxlen -= 1;
}
}
if (ul.childNodes.length) {
+ // set the right aria-* attributes to the input field
+ $(this.ksearch_input)
+ .attr('aria-haspopup', 'true')
+ .attr('aria-expanded', 'true')
+ .attr('aria-owns', 'rcmKSearchpane');
+
this.ksearch_pane.show();
+
// select the first
if (!this.env.contacts.length) {
- $('li:first', ul).attr('id', 'rcmksearchSelected').addClass('selected');
- this.ksearch_selected = 0;
+ this.ksearch_select($('li:first', ul).get(0));
}
}
@@ -4628,6 +4647,12 @@ function rcube_webmail()
if (this.ksearch_pane)
this.ksearch_pane.hide();
+ $(this.ksearch_input)
+ .attr('aria-haspopup', 'false')
+ .attr('aria-expanded', 'false')
+ .removeAttr('aria-activedescendant')
+ .removeAttr('aria-owns');
+
this.ksearch_destroy();
};
@@ -4720,6 +4745,7 @@ function rcube_webmail()
this.list_contacts = function(src, group, page)
{
var win, folder, url = {},
+ refresh = src === undefined && group === undefined && page === undefined,
target = window;
if (!src)
@@ -4732,7 +4758,7 @@ function rcube_webmail()
page = this.env.current_page = 1;
this.reset_qsearch();
}
- else if (group != this.env.group)
+ else if (!refresh && group != this.env.group)
page = this.env.current_page = 1;
if (this.env.search_id)
@@ -4761,7 +4787,8 @@ function rcube_webmail()
$(this.gui_objects.addresslist_title).html(this.get_label('contacts'));
}
- this.select_folder(folder, '', true);
+ if (!this.env.search_id)
+ this.select_folder(folder, '', true);
// load contacts remotely
if (this.gui_objects.contactslist) {
@@ -4832,6 +4859,7 @@ function rcube_webmail()
// add link to pop back to parent group
if (this.env.address_group_stack.length > 1) {
$('<a href="#list">...</a>')
+ .attr('title', this.gettext('uponelevel'))
.addClass('poplink')
.appendTo(boxtitle)
.click(function(e){ return ref.command('popgroup','',this); });
@@ -4865,10 +4893,13 @@ function rcube_webmail()
else if (framed)
return false;
- if (action && (cid || action=='add') && !this.drag_active) {
+ if (action && (cid || action == 'add') && !this.drag_active) {
if (this.env.group)
url._gid = this.env.group;
+ if (this.env.search_request)
+ url._search = this.env.search_request;
+
url._action = action;
url._source = this.env.source;
url._cid = cid;
@@ -4882,7 +4913,9 @@ function rcube_webmail()
// add/delete member to/from the group
this.group_member_change = function(what, cid, source, gid)
{
- what = what == 'add' ? 'add' : 'del';
+ if (what != 'add')
+ what = 'del';
+
var label = this.get_label(what == 'add' ? 'addingmember' : 'removingmember'),
lock = this.display_message(label, 'loading'),
post_data = {_cid: cid, _source: source, _gid: gid};
@@ -4919,7 +4952,7 @@ function rcube_webmail()
// copy contact(s) to the specified target (group or directory)
this.copy_contacts = function(to)
{
- var n, dest = to.type == 'group' ? to.source : to.id,
+ var dest = to.type == 'group' ? to.source : to.id,
source = this.env.source,
group = this.env.group ? this.env.group : '',
cid = this.contact_list.get_selection().join(',');
@@ -4990,13 +5023,14 @@ function rcube_webmail()
{
var selection = this.contact_list ? this.contact_list.get_selection() : [];
- // exit if no mailbox specified or if selection is empty
+ // exit if no contact specified or if selection is empty
if (!selection.length && !this.env.cid)
return;
var n, a_cids = [],
label = action == 'delete' ? 'contactdeleting' : 'movingcontact',
lock = this.display_message(this.get_label(label), 'loading');
+
if (this.env.cid)
a_cids.push(this.env.cid);
else {
@@ -5034,15 +5068,15 @@ function rcube_webmail()
// update a contact record in the list
this.update_contact_row = function(cid, cols_arr, newcid, source, data)
{
- var c, row, list = this.contact_list;
+ var list = this.contact_list;
cid = this.html_identifier(cid);
// when in searching mode, concat cid with the source name
if (!list.rows[cid]) {
- cid = cid+'-'+source;
+ cid = cid + '-' + source;
if (newcid)
- newcid = newcid+'-'+source;
+ newcid = newcid + '-' + source;
}
list.update_row(cid, cols_arr, newcid, true);
@@ -5058,7 +5092,7 @@ function rcube_webmail()
var c, col, list = this.contact_list,
row = { cols:[] };
- row.id = 'rcmrow'+this.html_identifier(cid);
+ row.id = 'rcmrow' + this.html_identifier(cid);
row.className = 'contact ' + (classes || '');
if (list.in_selection(cid))
@@ -5094,7 +5128,7 @@ function rcube_webmail()
return false;
});
- $('select.addfieldmenu').change(function(e) {
+ $('select.addfieldmenu').change(function() {
ref.insert_edit_field($(this).val(), $(this).attr('rel'), this);
this.selectedIndex = 0;
});
@@ -5119,29 +5153,55 @@ function rcube_webmail()
.submit(function() { $('input.mainaction').click(); return false; });
};
+ // group creation dialog
this.group_create = function()
{
- this.add_input_row('contactgroup');
+ var input = $('<input>').attr('type', 'text'),
+ content = $('<label>').text(this.get_label('namex')).append(input);
+
+ this.show_popup_dialog(content, this.get_label('newgroup'),
+ [{
+ text: this.get_label('save'),
+ click: function() {
+ var name;
+
+ if (name = input.val()) {
+ ref.http_post('group-create', {_source: ref.env.source, _name: name},
+ ref.set_busy(true, 'loading'));
+ }
+
+ $(this).dialog('close');
+ }
+ }]
+ );
};
+ // group rename dialog
this.group_rename = function()
{
- if (!this.env.group || !this.gui_objects.folderlist)
+ if (!this.env.group)
return;
- if (!this.name_input) {
- this.enable_command('list', 'listgroup', false);
- this.name_input = $('<input>').attr('type', 'text').val(this.env.contactgroups['G'+this.env.source+this.env.group].name);
- this.name_input.bind('keydown', function(e){ return rcmail.add_input_keydown(e); });
- this.env.group_renaming = true;
+ var group_name = this.env.contactgroups['G' + this.env.source + this.env.group].name,
+ input = $('<input>').attr('type', 'text').val(group_name),
+ content = $('<label>').text(this.get_label('namex')).append(input);
- var link, li = this.get_folder_li('G'+this.env.source+this.env.group,'',true);
- if (li && (link = li.firstChild)) {
- $(link).hide().before(this.name_input);
- }
- }
+ this.show_popup_dialog(content, this.get_label('grouprename'),
+ [{
+ text: this.get_label('save'),
+ click: function() {
+ var name;
+
+ if ((name = input.val()) && name != group_name) {
+ ref.http_post('group-rename', {_source: ref.env.source, _gid: ref.env.group, _name: name},
+ ref.set_busy(true, 'loading'));
+ }
- this.name_input.select().focus();
+ $(this).dialog('close');
+ }
+ }],
+ {open: function() { input.select(); }}
+ );
};
this.group_delete = function()
@@ -5156,6 +5216,7 @@ function rcube_webmail()
this.remove_group_item = function(prop)
{
var key = 'G'+prop.source+prop.id;
+
if (this.treelist.remove(key)) {
this.triggerEvent('group_delete', { source:prop.source, id:prop.id });
delete this.env.contactfolders[key];
@@ -5165,122 +5226,38 @@ function rcube_webmail()
this.list_contacts(prop.source, 0);
};
- // @TODO: maybe it would be better to use popup instead of inserting input to the list?
- this.add_input_row = function(type)
- {
- if (!this.gui_objects.folderlist)
- return;
-
- if (!this.name_input) {
- this.name_input = $('<input>').attr('type', 'text').data('tt', type);
- this.name_input.bind('keydown', function(e){ return rcmail.add_input_keydown(e); });
- this.name_input_li = $('<li>').addClass(type).append(this.name_input);
-
- var ul, li;
-
- // find list (UL) element
- if (type == 'contactsearch')
- ul = this.gui_objects.folderlist;
- else
- ul = $('ul.groups', this.get_folder_li(this.env.source,'',true));
-
- // append to the list
- li = $('li:last', ul);
- if (li.length)
- this.name_input_li.insertAfter(li);
- else {
- this.name_input_li.appendTo(ul);
- ul.show(); // make sure the list is visible
- }
- }
-
- this.name_input.select().focus();
- };
-
//remove selected contacts from current active group
this.group_remove_selected = function()
{
- ref.http_post('group-delmembers', {_cid: this.contact_list.selection,
+ this.http_post('group-delmembers', {_cid: this.contact_list.selection,
_source: this.env.source, _gid: this.env.group});
};
//callback after deleting contact(s) from current group
this.remove_group_contacts = function(props)
{
- if('undefined' != typeof this.env.group && (this.env.group === props.gid)){
+ if (this.env.group !== undefined && (this.env.group === props.gid)) {
var n, selection = this.contact_list.get_selection();
for (n=0; n<selection.length; n++) {
id = selection[n];
this.contact_list.remove_row(id, (n == selection.length-1));
}
}
- }
-
- // handler for keyboard events on the input field
- this.add_input_keydown = function(e)
- {
- var key = rcube_event.get_keycode(e),
- input = $(e.target), itype = input.data('tt');
-
- // enter
- if (key == 13) {
- var newname = input.val();
-
- if (newname) {
- var lock = this.set_busy(true, 'loading');
-
- if (itype == 'contactsearch')
- this.http_post('search-create', {_search: this.env.search_request, _name: newname}, lock);
- else if (this.env.group_renaming)
- this.http_post('group-rename', {_source: this.env.source, _gid: this.env.group, _name: newname}, lock);
- else
- this.http_post('group-create', {_source: this.env.source, _name: newname}, lock);
- }
- return false;
- }
- // escape
- else if (key == 27)
- this.reset_add_input();
-
- return true;
- };
-
- this.reset_add_input = function()
- {
- if (this.name_input) {
- var li = this.name_input.parent();
- if (this.env.group_renaming) {
- li.children().last().show();
- this.env.group_renaming = false;
- }
- else if ($('li', li.parent()).length == 1)
- li.parent().hide();
-
- this.name_input.remove();
-
- if (this.name_input_li)
- this.name_input_li.remove();
-
- this.name_input = this.name_input_li = null;
- }
-
- this.enable_command('list', 'listgroup', true);
};
// callback for creating a new contact group
this.insert_contact_group = function(prop)
{
- this.reset_add_input();
-
prop.type = 'group';
+
var key = 'G'+prop.source+prop.id,
link = $('<a>').attr('href', '#')
.attr('rel', prop.source+':'+prop.id)
- .click(function() { return rcmail.command('listgroup', prop, this); })
+ .click(function() { return ref.command('listgroup', prop, this); })
.html(prop.name);
this.env.contactfolders[key] = this.env.contactgroups[key] = prop;
- this.treelist.insert({ id:key, html:link, classes:['contactgroup'] }, prop.source, true);
+ this.treelist.insert({ id:key, html:link, classes:['contactgroup'] }, prop.source, 'contactgroup');
this.triggerEvent('group_insert', { id:prop.id, source:prop.source, name:prop.name, li:this.treelist.get_item(key) });
};
@@ -5288,8 +5265,6 @@ function rcube_webmail()
// callback for renaming a contact group
this.update_contact_group = function(prop)
{
- this.reset_add_input();
-
var key = 'G'+prop.source+prop.id,
newnode = {};
@@ -5311,7 +5286,7 @@ function rcube_webmail()
newnode.id = newkey;
newnode.html = $('<a>').attr('href', '#')
.attr('rel', prop.source+':'+prop.newid)
- .click(function() { return rcmail.command('listgroup', newprop, this); })
+ .click(function() { return ref.command('listgroup', newprop, this); })
.html(prop.name);
}
// update displayed group name
@@ -5328,9 +5303,11 @@ function rcube_webmail()
this.update_group_commands = function()
{
- var source = this.env.source != '' ? this.env.address_sources[this.env.source] : null;
- this.enable_command('group-create', (source && source.groups && !source.readonly));
- this.enable_command('group-rename', 'group-delete', (source && source.groups && this.env.group && !source.readonly));
+ var source = this.env.source != '' ? this.env.address_sources[this.env.source] : null,
+ supported = source && source.groups && !source.readonly;
+
+ this.enable_command('group-create', supported);
+ this.enable_command('group-rename', 'group-delete', supported && this.env.group);
};
this.init_edit_field = function(col, elem)
@@ -5368,6 +5345,7 @@ function rcube_webmail()
if (appendcontainer.length && appendcontainer.get(0).nodeName == 'FIELDSET') {
var input, colprop = this.env.coltypes[col],
+ input_id = 'ff_' + col + (colprop.count || 0),
row = $('<div>').addClass('row'),
cell = $('<div>').addClass('contactfieldcontent data'),
label = $('<div>').addClass('contactfieldlabel label');
@@ -5375,13 +5353,14 @@ function rcube_webmail()
if (colprop.subtypes_select)
label.html(colprop.subtypes_select);
else
- label.html(colprop.label);
+ label.html('<label for="' + input_id + '">' + colprop.label + '</label>');
var name_suffix = colprop.limit != 1 ? '[]' : '';
+
if (colprop.type == 'text' || colprop.type == 'date') {
input = $('<input>')
.addClass('ff_'+col)
- .attr({type: 'text', name: '_'+col+name_suffix, size: colprop.size})
+ .attr({type: 'text', name: '_'+col+name_suffix, size: colprop.size, id: input_id})
.appendTo(cell);
this.init_edit_field(col, input);
@@ -5392,18 +5371,19 @@ function rcube_webmail()
else if (colprop.type == 'textarea') {
input = $('<textarea>')
.addClass('ff_'+col)
- .attr({ name: '_'+col+name_suffix, cols:colprop.size, rows:colprop.rows })
+ .attr({ name: '_'+col+name_suffix, cols:colprop.size, rows:colprop.rows, id: input_id })
.appendTo(cell);
this.init_edit_field(col, input);
}
else if (colprop.type == 'composite') {
- var childcol, cp, first, templ, cols = [], suffices = [];
+ var i, childcol, cp, first, templ, cols = [], suffices = [];
+
// read template for composite field order
if ((templ = this.env[col+'_template'])) {
- for (var j=0; j < templ.length; j++) {
- cols.push(templ[j][1]);
- suffices.push(templ[j][2]);
+ for (i=0; i < templ.length; i++) {
+ cols.push(templ[i][1]);
+ suffices.push(templ[i][2]);
}
}
else { // list fields according to appearance in colprop
@@ -5411,7 +5391,7 @@ function rcube_webmail()
cols.push(childcol);
}
- for (var i=0; i < cols.length; i++) {
+ for (i=0; i < cols.length; i++) {
childcol = cols[i];
cp = colprop.childs[childcol];
input = $('<input>')
@@ -5427,7 +5407,7 @@ function rcube_webmail()
else if (colprop.type == 'select') {
input = $('<select>')
.addClass('ff_'+col)
- .attr('name', '_'+col+name_suffix)
+ .attr({ 'name': '_'+col+name_suffix, id: input_id })
.appendTo(cell);
var options = input.attr('options');
@@ -5488,7 +5468,7 @@ function rcube_webmail()
{
if (form && form.elements._photo.value) {
this.async_upload_form(form, 'upload-photo', function(e) {
- rcmail.set_busy(false, null, rcmail.file_upload_id);
+ ref.set_busy(false, null, ref.file_upload_id);
});
// display upload indicator
@@ -5548,16 +5528,14 @@ function rcube_webmail()
// callback for creating a new saved search record
this.insert_saved_search = function(name, id)
{
- this.reset_add_input();
-
var key = 'S'+id,
link = $('<a>').attr('href', '#')
.attr('rel', id)
- .click(function() { return rcmail.command('listsearch', id, this); })
+ .click(function() { return ref.command('listsearch', id, this); })
.html(name),
prop = { name:name, id:id };
- this.treelist.insert({ id:key, html:link, classes:['contactsearch'] }, null, 'contactsearch');
+ this.savedsearchlist.insert({ id:key, html:link, classes:['contactsearch'] }, null, 'contactsearch');
this.select_folder(key,'',true);
this.enable_command('search-delete', true);
this.env.search_id = id;
@@ -5565,10 +5543,27 @@ function rcube_webmail()
this.triggerEvent('abook_search_insert', prop);
};
- // creates an input for saved search name
+ // creates a dialog for saved search
this.search_create = function()
{
- this.add_input_row('contactsearch');
+ var input = $('<input>').attr('type', 'text'),
+ content = $('<label>').text(this.get_label('namex')).append(input);
+
+ this.show_popup_dialog(content, this.get_label('searchsave'),
+ [{
+ text: this.get_label('save'),
+ click: function() {
+ var name;
+
+ if (name = input.val()) {
+ ref.http_post('search-create', {_search: ref.env.search_request, _name: name},
+ ref.set_busy(true, 'loading'));
+ }
+
+ $(this).dialog('close');
+ }
+ }]
+ );
};
this.search_delete = function()
@@ -5583,7 +5578,7 @@ function rcube_webmail()
this.remove_search_item = function(id)
{
var li, key = 'S'+id;
- if (this.treelist.remove(key)) {
+ if (this.savedsearchlist.remove(key)) {
this.triggerEvent('search_delete', { id:id, li:li });
}
@@ -5596,14 +5591,20 @@ function rcube_webmail()
this.listsearch = function(id)
{
- var folder, lock = this.set_busy(true, 'searching');
+ var lock = this.set_busy(true, 'searching');
if (this.contact_list) {
this.list_contacts_clear();
}
this.reset_qsearch();
- this.select_folder('S'+id, '', true);
+
+ if (this.savedsearchlist) {
+ this.treelist.select('');
+ this.savedsearchlist.select('S'+id);
+ }
+ else
+ this.select_folder('S'+id, '', true);
// reset vars
this.env.current_page = 1;
@@ -5673,10 +5674,8 @@ function rcube_webmail()
id = this.env.iid ? this.env.iid : selection[0];
// submit request with appended token
- if (confirm(this.get_label('deleteidentityconfirm')))
- this.goto_url('delete-identity', { _iid: id, _token: this.env.request_token }, true);
-
- return true;
+ if (id && confirm(this.get_label('deleteidentityconfirm')))
+ this.http_post('settings/delete-identity', { _iid: id }, true);
};
this.update_identity_row = function(id, name, add)
@@ -5720,6 +5719,23 @@ function rcube_webmail()
frame.location.href = this.env.blankpage;
}
}
+
+ this.enable_command('delete', false);
+ };
+
+ this.remove_identity = function(id)
+ {
+ var frame, list = this.identity_list,
+ rid = this.html_identifier(id);
+
+ if (list && id) {
+ list.remove_row(rid);
+ if (this.env.contentframe && (frame = this.get_frame_window(this.env.contentframe))) {
+ frame.location.href = this.env.blankpage;
+ }
+ }
+
+ this.enable_command('delete', false);
};
@@ -5733,63 +5749,57 @@ function rcube_webmail()
this.last_sub_rx = RegExp('['+delim+']?[^'+delim+']+$');
- this.subscription_list = new rcube_list_widget(this.gui_objects.subscriptionlist,
- {multiselect:false, draggable:true, keyboard:false, toggleselect:true});
- this.subscription_list
- .addEventListener('select', function(o){ ref.subscription_select(o); })
- .addEventListener('dragstart', function(o){ ref.drag_active = true; })
- .addEventListener('dragend', function(o){ ref.subscription_move_folder(o); })
- .addEventListener('initrow', function (row) {
- row.obj.onmouseover = function() { ref.focus_subscription(row.id); };
- row.obj.onmouseout = function() { ref.unfocus_subscription(row.id); };
- })
- .init();
-
- $('#mailboxroot')
- .mouseover(function(){ ref.focus_subscription(this.id); })
- .mouseout(function(){ ref.unfocus_subscription(this.id); })
- };
-
- this.focus_subscription = function(id)
- {
- var row, folder;
+ this.subscription_list = new rcube_treelist_widget(this.gui_objects.subscriptionlist, {
+ selectable: true,
+ tabexit: false,
+ parent_focus: true,
+ id_prefix: 'rcmli',
+ id_encode: this.html_identifier_encode,
+ id_decode: this.html_identifier_decode,
+ searchbox: '#foldersearch'
+ });
- if (this.drag_active && this.env.mailbox && (row = document.getElementById(id)))
- if (this.env.subscriptionrows[id] &&
- (folder = this.env.subscriptionrows[id][0]) !== null
- ) {
- if (this.check_droptarget(folder) &&
- !this.env.subscriptionrows[this.get_folder_row_id(this.env.mailbox)][2] &&
- folder != this.env.mailbox.replace(this.last_sub_rx, '') &&
- !folder.startsWith(this.env.mailbox + this.env.delimiter)
- ) {
- this.env.dstfolder = folder;
- $(row).addClass('droptarget');
+ this.subscription_list
+ .addEventListener('select', function(node) { ref.subscription_select(node.id); })
+ .addEventListener('collapse', function(node) { ref.folder_collapsed(node) })
+ .addEventListener('expand', function(node) { ref.folder_collapsed(node) })
+ .addEventListener('search', function(p) { if (p.query) ref.subscription_select(); })
+ .draggable({cancel: 'li.mailbox.root'})
+ .droppable({
+ // @todo: find better way, accept callback is executed for every folder
+ // on the list when dragging starts (and stops), this is slow, but
+ // I didn't find a method to check droptarget on over event
+ accept: function(node) {
+ var source_folder = ref.folder_id2name($(node).attr('id')),
+ dest_folder = ref.folder_id2name(this.id),
+ source = ref.env.subscriptionrows[source_folder],
+ dest = ref.env.subscriptionrows[dest_folder];
+
+ return source && !source[2]
+ && dest_folder != source_folder.replace(ref.last_sub_rx, '')
+ && !dest_folder.startsWith(source_folder + ref.env.delimiter);
+ },
+ drop: function(e, ui) {
+ var source = ref.folder_id2name(ui.draggable.attr('id')),
+ dest = ref.folder_id2name(this.id);
+
+ ref.subscription_move_folder(source, dest);
}
- }
+ });
};
- this.unfocus_subscription = function(id)
+ this.folder_id2name = function(id)
{
- var row = $('#'+id);
-
- this.env.dstfolder = null;
-
- if (this.env.subscriptionrows[id] && row.length)
- row.removeClass('droptarget');
- else
- $(this.subscription_list.frame).removeClass('droptarget');
+ return ref.html_identifier_decode(id.replace(/^rcmli/, ''));
};
- this.subscription_select = function(list)
+ this.subscription_select = function(id)
{
- var id, folder;
+ var folder;
- if (list && (id = list.get_single_selection()) &&
- (folder = this.env.subscriptionrows['rcmrow'+id])
- ) {
- this.env.mailbox = folder[0];
- this.show_folder(folder[0]);
+ if (id && id != '*' && (folder = this.env.subscriptionrows[id])) {
+ this.env.mailbox = id;
+ this.show_folder(id);
this.enable_command('delete-folder', !folder[2]);
}
else {
@@ -5799,24 +5809,18 @@ function rcube_webmail()
}
};
- this.subscription_move_folder = function(list)
+ this.subscription_move_folder = function(from, to)
{
- if (this.env.mailbox && this.env.dstfolder !== null &&
- this.env.dstfolder != this.env.mailbox &&
- this.env.dstfolder != this.env.mailbox.replace(this.last_sub_rx, '')
- ) {
- var path = this.env.mailbox.split(this.env.delimiter),
+ if (from && to !== null && from != to && to != from.replace(this.last_sub_rx, '')) {
+ var path = from.split(this.env.delimiter),
basename = path.pop(),
- newname = this.env.dstfolder === '' ? basename : this.env.dstfolder + this.env.delimiter + basename;
+ newname = to === '' || to === '*' ? basename : to + this.env.delimiter + basename;
- if (newname != this.env.mailbox) {
- this.http_post('rename-folder', {_folder_oldname: this.env.mailbox, _folder_newname: newname}, this.set_busy(true, 'foldermoving'));
- this.subscription_list.draglayer.hide();
+ if (newname != from) {
+ this.http_post('rename-folder', {_folder_oldname: from, _folder_newname: newname},
+ this.set_busy(true, 'foldermoving'));
}
}
-
- this.drag_active = false;
- this.unfocus_subscription(this.get_folder_row_id(this.env.dstfolder));
};
// tell server to create and subscribe a new mailbox
@@ -5828,112 +5832,174 @@ function rcube_webmail()
// delete a specific mailbox with all its messages
this.delete_folder = function(name)
{
- var id = this.get_folder_row_id(name ? name : this.env.mailbox),
- folder = this.env.subscriptionrows[id][0];
+ if (!name)
+ name = this.env.mailbox;
- if (folder && confirm(this.get_label('deletefolderconfirm'))) {
- var lock = this.set_busy(true, 'folderdeleting');
- this.http_post('delete-folder', {_mbox: folder}, lock);
+ if (name && confirm(this.get_label('deletefolderconfirm'))) {
+ this.http_post('delete-folder', {_mbox: name}, this.set_busy(true, 'folderdeleting'));
}
};
// Add folder row to the table and initialize it
- this.add_folder_row = function (name, display_name, is_protected, subscribed, skip_init, class_name)
+ this.add_folder_row = function (id, name, display_name, is_protected, subscribed, class_name, refrow, subfolders)
{
if (!this.gui_objects.subscriptionlist)
return false;
- var row, n, i, tmp, tmp_name, rowid, folders = [], list = [], slist = [],
- tbody = this.gui_objects.subscriptionlist.tBodies[0],
- refrow = $('tr', tbody).get(1),
- id = 'rcmrow'+((new Date).getTime());
+ // reset searching
+ if (this.subscription_list.is_search()) {
+ this.subscription_select();
+ this.subscription_list.reset_search();
+ }
+
+ // disable drag-n-drop temporarily
+ this.subscription_list.draggable('destroy').droppable('destroy');
- if (!refrow) {
+ var row, n, tmp, tmp_name, rowid, collator, pos, p, parent = '',
+ folders = [], list = [], slist = [],
+ list_element = $(this.gui_objects.subscriptionlist);
+ row = refrow ? refrow : $($('li', list_element).get(1)).clone(true);
+
+ if (!row.length) {
// Refresh page if we don't have a table row to clone
this.goto_url('folders');
return false;
}
- // clone a table row if there are existing rows
- row = $(refrow).clone(true);
-
// set ID, reset css class
- row.attr({id: id, 'class': class_name});
+ row.attr({id: 'rcmli' + this.html_identifier_encode(id), 'class': class_name});
+
+ if (!refrow || !refrow.length) {
+ // remove old data, subfolders and toggle
+ $('ul,div.treetoggle', row).remove();
+ row.removeData('filtered');
+ }
// set folder name
- row.find('td:first').html(display_name);
+ $('a:first', row).text(display_name);
// update subscription checkbox
- $('input[name="_subscribed[]"]', row).val(name)
+ $('input[name="_subscribed[]"]:first', row).val(id)
.prop({checked: subscribed ? true : false, disabled: is_protected ? true : false});
// add to folder/row-ID map
this.env.subscriptionrows[id] = [name, display_name, false];
- // sort folders (to find a place where to insert the row)
- // replace delimiter with \0 character to fix sorting
- // issue where 'Abc Abc' would be placed before 'Abc/def'
- var replace_from = RegExp(RegExp.escape(this.env.delimiter), 'g'),
- replace_to = String.fromCharCode(0);
+ // copy folders data to an array for sorting
+ $.each(this.env.subscriptionrows, function(k, v) { v[3] = k; folders.push(v); });
- $.each(this.env.subscriptionrows, function(k,v) {
- if (v.length < 4) {
- var n = v[0];
- n = n.replace(replace_from, replace_to);
- v.push(n);
- }
- folders.push(v);
- });
+ try {
+ // use collator if supported (FF29, IE11, Opera15, Chrome24)
+ collator = new Intl.Collator(this.env.locale.replace('_', '-'));
+ }
+ catch (e) {};
+ // sort folders
folders.sort(function(a, b) {
- var len = a.length - 1; n1 = a[len], n2 = b[len];
- return n1 < n2 ? -1 : 1;
+ var i, f1, f2,
+ path1 = a[0].split(ref.env.delimiter),
+ path2 = b[0].split(ref.env.delimiter),
+ len = path1.length;
+
+ for (i=0; i<len; i++) {
+ f1 = path1[i];
+ f2 = path2[i];
+
+ if (f1 !== f2) {
+ if (f2 === undefined)
+ return 1;
+ if (collator)
+ return collator.compare(f1, f2);
+ else
+ return f1 < f2 ? -1 : 1;
+ }
+ else if (i == len-1) {
+ return -1
+ }
+ }
});
for (n in folders) {
+ p = folders[n][3];
// protected folder
if (folders[n][2]) {
- tmp_name = folders[n][0] + this.env.delimiter;
+ tmp_name = p + this.env.delimiter;
// prefix namespace cannot have subfolders (#1488349)
if (tmp_name == this.env.prefix_ns)
continue;
- slist.push(folders[n][0]);
+ slist.push(p);
tmp = tmp_name;
}
// protected folder's child
- else if (tmp && folders[n][0].startsWith(tmp))
- slist.push(folders[n][0]);
+ else if (tmp && p.startsWith(tmp))
+ slist.push(p);
// other
else {
- list.push(folders[n][0]);
+ list.push(p);
tmp = null;
}
}
// check if subfolder of a protected folder
for (n=0; n<slist.length; n++) {
- if (name.startsWith(slist[n] + this.env.delimiter))
- rowid = this.get_folder_row_id(slist[n]);
+ if (id.startsWith(slist[n] + this.env.delimiter))
+ rowid = slist[n];
}
// find folder position after sorting
for (n=0; !rowid && n<list.length; n++) {
- if (n && list[n] == name)
- rowid = this.get_folder_row_id(list[n-1]);
+ if (n && list[n] == id)
+ rowid = list[n-1];
}
// add row to the table
- if (rowid)
- $('#'+rowid).after(row);
- else
- row.appendTo(tbody);
+ if (rowid && (n = this.subscription_list.get_item(rowid, true))) {
+ // find parent folder
+ if (pos = id.lastIndexOf(this.env.delimiter)) {
+ parent = id.substring(0, pos);
+ parent = this.subscription_list.get_item(parent, true);
+
+ // add required tree elements to the parent if not already there
+ if (!$('div.treetoggle', parent).length) {
+ $('<div>&nbsp;</div>').addClass('treetoggle collapsed').appendTo(parent);
+ }
+ if (!$('ul', parent).length) {
+ $('<ul>').css('display', 'none').appendTo(parent);
+ }
+ }
+
+ if (parent && n == parent) {
+ $('ul:first', parent).append(row);
+ }
+ else {
+ while (p = $(n).parent().parent().get(0)) {
+ if (parent && p == parent)
+ break;
+ if (!$(p).is('li.mailbox'))
+ break;
+ n = p;
+ }
+
+ $(n).after(row);
+ }
+ }
+ else {
+ list_element.append(row);
+ }
+
+ // add subfolders
+ $.extend(this.env.subscriptionrows, subfolders || {});
// update list widget
- this.subscription_list.clear_selection();
- if (!skip_init)
- this.init_subscription_list();
+ this.subscription_list.reset(true);
+ this.subscription_select();
- row = row.get(0);
+ // expand parent
+ if (parent) {
+ this.subscription_list.expand(this.folder_id2name(parent.id));
+ }
+
+ row = row.show().get(0);
if (row.scrollIntoView)
row.scrollIntoView();
@@ -5941,116 +6007,87 @@ function rcube_webmail()
};
// replace an existing table row with a new folder line (with subfolders)
- this.replace_folder_row = function(oldfolder, newfolder, display_name, is_protected, class_name)
+ this.replace_folder_row = function(oldid, id, name, display_name, is_protected, class_name)
{
if (!this.gui_objects.subscriptionlist) {
- if (this.is_framed)
- return parent.rcmail.replace_folder_row(oldfolder, newfolder, display_name, is_protected, class_name);
+ if (this.is_framed()) {
+ // @FIXME: for some reason this 'parent' variable need to be prefixed with 'window.'
+ return window.parent.rcmail.replace_folder_row(oldid, id, name, display_name, is_protected, class_name);
+ }
+
return false;
}
- var i, n, len, name, dispname, oldrow, tmprow, row, level,
- tbody = this.gui_objects.subscriptionlist.tBodies[0],
- folders = this.env.subscriptionrows,
- id = this.get_folder_row_id(oldfolder),
- prefix_len = oldfolder.length,
- subscribed = $('input[name="_subscribed[]"]', $('#'+id)).prop('checked'),
- // find subfolders of renamed folder
- list = this.get_subfolders(oldfolder);
+ // reset searching
+ if (this.subscription_list.is_search()) {
+ this.subscription_select();
+ this.subscription_list.reset_search();
+ }
+
+ var subfolders = {},
+ row = this.subscription_list.get_item(oldid, true),
+ parent = $(row).parent(),
+ old_folder = this.env.subscriptionrows[oldid],
+ prefix_len_id = oldid.length,
+ prefix_len_name = old_folder[0].length,
+ subscribed = $('input[name="_subscribed[]"]:first', row).prop('checked');
// no renaming, only update class_name
- if (oldfolder == newfolder) {
- $('#'+id).attr('class', class_name || '');
- this.subscription_list.focus();
+ if (oldid == id) {
+ $(row).attr('class', class_name || '');
return;
}
- // replace an existing table row
- this._remove_folder_row(id);
- row = $(this.add_folder_row(newfolder, display_name, is_protected, subscribed, true, class_name));
+ // update subfolders
+ $('li', row).each(function() {
+ var fname = ref.folder_id2name(this.id),
+ folder = ref.env.subscriptionrows[fname],
+ newid = id + fname.slice(prefix_len_id);
- // detect tree depth change
- if (len = list.length) {
- level = (oldfolder.split(this.env.delimiter)).length - (newfolder.split(this.env.delimiter)).length;
- }
+ this.id = 'rcmli' + ref.html_identifier_encode(newid);
+ $('input[name="_subscribed[]"]:first', this).val(newid);
+ folder[0] = name + folder[0].slice(prefix_len_name);
- // move subfolders to the new branch
- for (n=0; n<len; n++) {
- id = list[n];
- name = this.env.subscriptionrows[id][0];
- dispname = this.env.subscriptionrows[id][1];
- oldrow = $('#'+id);
- tmprow = oldrow.clone(true);
- oldrow.remove();
- row.after(tmprow);
- row = tmprow;
- // update folder index
- name = newfolder + name.slice(prefix_len);
- $('input[name="_subscribed[]"]', row).val(name);
- this.env.subscriptionrows[id][0] = name;
- // update the name if level is changed
- if (level != 0) {
- if (level > 0) {
- for (i=level; i>0; i--)
- dispname = dispname.replace(/^&nbsp;&nbsp;&nbsp;&nbsp;/, '');
- }
- else {
- for (i=level; i<0; i++)
- dispname = '&nbsp;&nbsp;&nbsp;&nbsp;' + dispname;
- }
- row.find('td:first').html(dispname);
- this.env.subscriptionrows[id][1] = dispname;
- }
+ subfolders[newid] = folder;
+ delete ref.env.subscriptionrows[fname];
+ });
+
+ // get row off the list
+ row = $(row).detach();
+
+ delete this.env.subscriptionrows[oldid];
+
+ // remove parent list/toggle elements if not needed
+ if (parent.get(0) != this.gui_objects.subscriptionlist && !$('li', parent).length) {
+ $('ul,div.treetoggle', parent.parent()).remove();
}
- // update list widget
- this.init_subscription_list();
+ // move the existing table row
+ this.add_folder_row(id, name, display_name, is_protected, subscribed, class_name, row, subfolders);
};
// remove the table row of a specific mailbox from the table
- this.remove_folder_row = function(folder, subs)
+ this.remove_folder_row = function(folder)
{
- var n, len, list = [], id = this.get_folder_row_id(folder);
+ // reset searching
+ if (this.subscription_list.is_search()) {
+ this.subscription_select();
+ this.subscription_list.reset_search();
+ }
+
+ var list = [], row = this.subscription_list.get_item(folder, true);
// get subfolders if any
- if (subs)
- list = this.get_subfolders(folder);
+ $('li', row).each(function() { list.push(ref.folder_id2name(this.id)); });
- // remove old row
- this._remove_folder_row(id);
+ // remove folder row (and subfolders)
+ this.subscription_list.remove(folder);
- // remove subfolders
- for (n=0, len=list.length; n<len; n++)
- this._remove_folder_row(list[n]);
+ // update local list variable
+ list.push(folder);
+ $.each(list, function(i, v) { delete ref.env.subscriptionrows[v]; });
};
- this._remove_folder_row = function(id)
- {
- this.subscription_list.remove_row(id.replace(/^rcmrow/, ''));
- $('#'+id).remove();
- delete this.env.subscriptionrows[id];
- }
-
- this.get_subfolders = function(folder)
- {
- var name, list = [],
- prefix = folder + this.env.delimiter,
- row = $('#'+this.get_folder_row_id(folder)).get(0);
-
- while (row = row.nextSibling) {
- if (row.id) {
- name = this.env.subscriptionrows[row.id][0];
- if (name && name.startsWith(prefix)) {
- list.push(row.id);
- }
- else
- break;
- }
- }
-
- return list;
- }
-
this.subscribe = function(folder)
{
if (folder) {
@@ -6067,17 +6104,6 @@ function rcube_webmail()
}
};
- // helper method to find a specific mailbox row ID
- this.get_folder_row_id = function(folder)
- {
- var id, folders = this.env.subscriptionrows;
- for (id in folders)
- if (folders[id] && folders[id][0] == folder)
- break;
-
- return id;
- };
-
// when user select a folder in manager
this.show_folder = function(folder, path, force)
{
@@ -6101,9 +6127,9 @@ function rcube_webmail()
// disables subscription checkbox (for protected folder)
this.disable_subscription = function(folder)
{
- var id = this.get_folder_row_id(folder);
- if (id)
- $('input[name="_subscribed[]"]', $('#'+id)).prop('disabled', true);
+ var row = this.subscription_list.get_item(folder, true);
+ if (row)
+ $('input[name="_subscribed[]"]:first', row).prop('disabled', true);
};
this.folder_size = function(folder)
@@ -6117,6 +6143,37 @@ function rcube_webmail()
$('#folder-size').replaceWith(size);
};
+ // filter folders by namespace
+ this.folder_filter = function(prefix)
+ {
+ this.subscription_list.reset_search();
+
+ this.subscription_list.container.children('li').each(function() {
+ var i, folder = ref.folder_id2name(this.id);
+ // show all folders
+ if (prefix == '---') {
+ }
+ // got namespace prefix
+ else if (prefix) {
+ if (folder !== prefix) {
+ $(this).data('filtered', true).hide();
+ return
+ }
+ }
+ // no namespace prefix, filter out all other namespaces
+ else {
+ // first get all namespace roots
+ for (i in ref.env.ns_roots) {
+ if (folder === ref.env.ns_roots[i]) {
+ $(this).data('filtered', true).hide();
+ return;
+ }
+ }
+ }
+
+ $(this).removeData('filtered').show();
+ });
+ };
/*********************************************************/
/********* GUI functionality *********/
@@ -6137,14 +6194,14 @@ function rcube_webmail()
elm._command = cmd;
elm._id = prop.id;
if (prop.sel) {
- elm.onmousedown = function(e){ return rcmail.button_sel(this._command, this._id); };
- elm.onmouseup = function(e){ return rcmail.button_out(this._command, this._id); };
+ elm.onmousedown = function(e) { return ref.button_sel(this._command, this._id); };
+ elm.onmouseup = function(e) { return ref.button_out(this._command, this._id); };
if (preload)
new Image().src = prop.sel;
}
if (prop.over) {
- elm.onmouseover = function(e){ return rcmail.button_over(this._command, this._id); };
- elm.onmouseout = function(e){ return rcmail.button_out(this._command, this._id); };
+ elm.onmouseover = function(e) { return ref.button_over(this._command, this._id); };
+ elm.onmouseout = function(e) { return ref.button_out(this._command, this._id); };
if (preload)
new Image().src = prop.over;
}
@@ -6161,22 +6218,19 @@ function rcube_webmail()
init_button(cmd, this.buttons[cmd][i]);
}
}
-
- // set active task button
- this.set_button(this.task, 'sel');
};
// set button to a specific state
this.set_button = function(command, state)
{
- var n, button, obj, a_buttons = this.buttons[command],
+ var n, button, obj, $obj, a_buttons = this.buttons[command],
len = a_buttons ? a_buttons.length : 0;
for (n=0; n<len; n++) {
button = a_buttons[n];
obj = document.getElementById(button.id);
- if (!obj)
+ if (!obj || button.status === state)
continue;
// get default/passive setting of the button
@@ -6189,24 +6243,30 @@ function rcube_webmail()
else if (!button.status)
button.pas = String(obj.className);
+ button.status = state;
+
// set image according to button state
if (button.type == 'image' && button[state]) {
- button.status = state;
obj.src = button[state];
}
// set class name according to button state
else if (button[state] !== undefined) {
- button.status = state;
obj.className = button[state];
}
// disable/enable input buttons
if (button.type == 'input') {
- button.status = state;
obj.disabled = state == 'pas';
}
else if (button.type == 'uibutton') {
+ button.status = state;
$(obj).button('option', 'disabled', state == 'pas');
}
+ else {
+ $obj = $(obj);
+ $obj
+ .attr('tabindex', state == 'pas' || state == 'sel' ? '-1' : ($obj.attr('data-tabindex') || '0'))
+ .attr('aria-disabled', state == 'pas' || state == 'sel' ? 'true' : 'false');
+ }
}
};
@@ -6330,7 +6390,8 @@ function rcube_webmail()
this.messages[key].labels = [{'id': id, 'msg': msg}];
}
else {
- obj.click(function() { return ref.hide_message(obj); });
+ obj.click(function() { return ref.hide_message(obj); })
+ .attr('role', 'alert');
}
this.triggerEvent('message', { message:msg, type:type, timeout:timeout, object:obj });
@@ -6416,22 +6477,27 @@ function rcube_webmail()
};
// open a jquery UI dialog with the given content
- this.show_popup_dialog = function(html, title, buttons, options)
+ this.show_popup_dialog = function(content, title, buttons, options)
{
// forward call to parent window
if (this.is_framed()) {
- return parent.rcmail.show_popup_dialog(html, title, buttons, options);
+ return parent.rcmail.show_popup_dialog(content, title, buttons, options);
}
- var popup = $('<div class="popup">')
- .html(html)
- .dialog($.extend({
+ var popup = $('<div class="popup">');
+
+ if (typeof content == 'object')
+ popup.append(content);
+ else
+ popup.html(content);
+
+ popup.dialog($.extend({
title: title,
buttons: buttons,
modal: true,
resizable: true,
width: 500,
- close: function(event, ui) { $(this).remove() }
+ close: function(event, ui) { $(this).remove(); }
}, options || {}));
// resize and center popup
@@ -6456,14 +6522,16 @@ function rcube_webmail()
// mark a mailbox as selected and set environment variable
this.select_folder = function(name, prefix, encode)
{
+ if (this.savedsearchlist) {
+ this.savedsearchlist.select('');
+ }
+
if (this.treelist) {
this.treelist.select(name);
}
else if (this.gui_objects.folderlist) {
- $('li.selected', this.gui_objects.folderlist)
- .removeClass('selected').addClass('unfocused');
- $(this.get_folder_li(name, prefix, encode))
- .removeClass('unfocused').addClass('selected');
+ $('li.selected', this.gui_objects.folderlist).removeClass('selected');
+ $(this.get_folder_li(name, prefix, encode)).addClass('selected');
// trigger event hook
this.triggerEvent('selectfolder', { folder:name, prefix:prefix });
@@ -6513,7 +6581,7 @@ function rcube_webmail()
tr = document.createElement('tr');
for (c=0, len=repl.length; c < len; c++) {
- cell = document.createElement('td');
+ cell = document.createElement('th');
cell.innerHTML = repl[c].html || '';
if (repl[c].id) cell.id = repl[c].id;
if (repl[c].className) cell.className = repl[c].className;
@@ -6675,7 +6743,7 @@ function rcube_webmail()
$(elem).removeClass('show-headers').addClass('hide-headers');
$(this.gui_objects.all_headers_row).show();
- elem.onclick = function() { rcmail.command('hide-headers', '', elem); };
+ elem.onclick = function() { ref.command('hide-headers', '', elem); };
// fetch headers only once
if (!this.gui_objects.all_headers_box.innerHTML) {
@@ -6693,21 +6761,19 @@ function rcube_webmail()
$(elem).removeClass('hide-headers').addClass('show-headers');
$(this.gui_objects.all_headers_row).hide();
- elem.onclick = function() { rcmail.command('show-headers', '', elem); };
+ elem.onclick = function() { ref.command('show-headers', '', elem); };
};
// create folder selector popup, position and display it
- this.folder_selector = function(obj, callback)
+ this.folder_selector = function(event, callback)
{
var container = this.folder_selector_element;
if (!container) {
var rows = [],
delim = this.env.delimiter,
- ul = $('<ul class="toolbarmenu iconized">'),
- li = document.createElement('li'),
- link = document.createElement('a'),
- span = document.createElement('span');
+ ul = $('<ul class="toolbarmenu">'),
+ link = document.createElement('a');
container = $('<div id="folder-selector" class="popupmenu"></div>');
link.href = '#';
@@ -6715,33 +6781,30 @@ function rcube_webmail()
// loop over sorted folders list
$.each(this.env.mailboxes_list, function() {
- var tmp, n = 0, s = 0,
+ var n = 0, s = 0,
folder = ref.env.mailboxes[this],
id = folder.id,
- a = link.cloneNode(false), row = li.cloneNode(false);
+ a = $(link.cloneNode(false)),
+ row = $('<li>');
if (folder.virtual)
- a.className += ' virtual';
- else {
- a.className += ' active';
- a.onclick = function() { container.hide().data('callback')(folder.id); };
- }
+ a.addClass('virtual').attr('aria-disabled', 'true').attr('tabindex', '-1');
+ else
+ a.addClass('active').data('id', folder.id);
if (folder['class'])
- a.className += ' ' + folder['class'];
+ a.addClass(folder['class']);
// calculate/set indentation level
while ((s = id.indexOf(delim, s)) >= 0) {
n++; s++;
}
- a.style.paddingLeft = n ? (n * 16) + 'px' : 0;
+ a.css('padding-left', n ? (n * 16) + 'px' : 0);
// add folder name element
- tmp = span.cloneNode(false);
- $(tmp).text(folder.name);
- a.appendChild(tmp);
+ a.append($('<span>').text(folder.name));
- row.appendChild(a);
+ row.append(a);
rows.push(row);
});
@@ -6753,23 +6816,157 @@ function rcube_webmail()
// set max-height if the list is long
if (rows.length > 10)
- container.css('max-height', $('li', container)[0].offsetHeight * 10 + 9)
+ container.css('max-height', $('li', container)[0].offsetHeight * 10 + 9);
- // hide selector on click out of selector element
- var fn = function(e) { if (e.target != container.get(0)) container.hide(); };
- $(document.body).on('mouseup', fn);
- $('iframe').contents().on('mouseup', fn)
- .load(function(e) { try { $(this).contents().on('mouseup', fn); } catch(e) {}; });
+ // register delegate event handler for folder item clicks
+ container.on('click', 'a.active', function(e){
+ container.data('callback')($(this).data('id'));
+ return false;
+ });
this.folder_selector_element = container;
}
+ container.data('callback', callback);
+
// position menu on the screen
- this.element_position(container, obj);
+ this.show_menu('folder-selector', true, event);
+ };
+
+
+ /***********************************************/
+ /********* popup menu functions *********/
+ /***********************************************/
+
+ // Show/hide a specific popup menu
+ this.show_menu = function(prop, show, event)
+ {
+ var name = typeof prop == 'object' ? prop.menu : prop,
+ obj = $('#'+name),
+ ref = event && event.target ? $(event.target) : $(obj.attr('rel') || '#'+name+'link'),
+ keyboard = rcube_event.is_keyboard(event),
+ align = obj.attr('data-align') || '',
+ stack = false;
+
+ // find "real" button element
+ if (ref.get(0).tagName != 'A' && ref.closest('a').length)
+ ref = ref.closest('a');
+
+ if (typeof prop == 'string')
+ prop = { menu:name };
+
+ // let plugins or skins provide the menu element
+ if (!obj.length) {
+ obj = this.triggerEvent('menu-get', { name:name, props:prop, originalEvent:event });
+ }
+
+ if (!obj || !obj.length) {
+ // just delegate the action to subscribers
+ return this.triggerEvent(show === false ? 'menu-close' : 'menu-open', { name:name, props:prop, originalEvent:event });
+ }
+
+ // move element to top for proper absolute positioning
+ obj.appendTo(document.body);
+
+ if (typeof show == 'undefined')
+ show = obj.is(':visible') ? false : true;
+
+ if (show && ref.length) {
+ var win = $(window),
+ pos = ref.offset(),
+ above = align.indexOf('bottom') >= 0;
+
+ stack = ref.attr('role') == 'menuitem' || ref.closest('[role=menuitem]').length > 0;
+
+ ref.offsetWidth = ref.outerWidth();
+ ref.offsetHeight = ref.outerHeight();
+ if (!above && pos.top + ref.offsetHeight + obj.height() > win.height()) {
+ above = true;
+ }
+ if (align.indexOf('right') >= 0) {
+ pos.left = pos.left + ref.outerWidth() - obj.width();
+ }
+ else if (stack) {
+ pos.left = pos.left + ref.offsetWidth - 5;
+ pos.top -= ref.offsetHeight;
+ }
+ if (pos.left + obj.width() > win.width()) {
+ pos.left = win.width() - obj.width() - 12;
+ }
+ pos.top = Math.max(0, pos.top + (above ? -obj.height() : ref.offsetHeight));
+ obj.css({ left:pos.left+'px', top:pos.top+'px' });
+ }
+
+ // add menu to stack
+ if (show) {
+ // truncate stack down to the one containing the ref link
+ for (var i = this.menu_stack.length - 1; stack && i >= 0; i--) {
+ if (!$(ref).parents('#'+this.menu_stack[i]).length)
+ this.hide_menu(this.menu_stack[i]);
+ }
+ if (stack && this.menu_stack.length) {
+ obj.data('parent', $.last(this.menu_stack));
+ obj.css('z-index', ($('#'+$.last(this.menu_stack)).css('z-index') || 0) + 1);
+ }
+ else if (!stack && this.menu_stack.length) {
+ this.hide_menu(this.menu_stack[0], event);
+ }
+
+ obj.show().attr('aria-hidden', 'false').data('opener', ref.attr('aria-expanded', 'true').get(0));
+ this.triggerEvent('menu-open', { name:name, obj:obj, props:prop, originalEvent:event });
+ this.menu_stack.push(name);
+
+ this.menu_keyboard_active = show && keyboard;
+ if (this.menu_keyboard_active) {
+ this.focused_menu = name;
+ obj.find('a,input:not(:disabled)').not('[aria-disabled=true]').first().focus();
+ }
+ }
+ else { // close menu
+ this.hide_menu(name, event);
+ }
- container.show().data('callback', callback);
+ return show;
};
+ // hide the given popup menu (and it's childs)
+ this.hide_menu = function(name, event)
+ {
+ if (!this.menu_stack.length) {
+ // delegate to subscribers
+ this.triggerEvent('menu-close', { name:name, props:{ menu:name }, originalEvent:event });
+ return;
+ }
+
+ var obj, keyboard = rcube_event.is_keyboard(event);
+ for (var j=this.menu_stack.length-1; j >= 0; j--) {
+ obj = $('#' + this.menu_stack[j]).hide().attr('aria-hidden', 'true').data('parent', false);
+ this.triggerEvent('menu-close', { name:this.menu_stack[j], obj:obj, props:{ menu:this.menu_stack[j] }, originalEvent:event });
+ if (this.menu_stack[j] == name) {
+ j = -1; // stop loop
+ if (obj.data('opener')) {
+ $(obj.data('opener')).attr('aria-expanded', 'false');
+ if (keyboard)
+ obj.data('opener').focus();
+ }
+ }
+ this.menu_stack.pop();
+ }
+
+ // focus previous menu in stack
+ if (this.menu_stack.length && keyboard) {
+ this.menu_keyboard_active = true;
+ this.focused_menu = $.last(this.menu_stack);
+ if (!obj || !obj.data('opener'))
+ $('#'+this.focused_menu).find('a,input:not(:disabled)').not('[aria-disabled=true]').first().focus();
+ }
+ else {
+ this.focused_menu = null;
+ this.menu_keyboard_active = false;
+ }
+ }
+
+
// position a menu element on the screen in relation to other object
this.element_position = function(element, obj)
{
@@ -6803,46 +7000,63 @@ function rcube_webmail()
element.css({left: left + 'px', top: top + 'px'});
};
+ // initialize HTML editor
+ this.editor_init = function(config, id)
+ {
+ this.editor = new rcube_text_editor(config, id);
+ };
+
/********************************************************/
/********* html to text conversion functions *********/
/********************************************************/
- this.html2plain = function(htmlText, id)
+ this.html2plain = function(html, func)
+ {
+ return this.format_converter(html, 'html', func);
+ };
+
+ this.plain2html = function(plain, func)
+ {
+ return this.format_converter(plain, 'plain', func);
+ };
+
+ this.format_converter = function(text, format, func)
{
// warn the user (if converted content is not empty)
- if (!htmlText || !(htmlText.replace(/<[^>]+>|&nbsp;|\s/g, '')).length) {
+ if (!text
+ || (format == 'html' && !(text.replace(/<[^>]+>|&nbsp;|\xC2\xA0|\s/g, '')).length)
+ || (format != 'html' && !(text.replace(/\xC2\xA0|\s/g, '')).length)
+ ) {
// without setTimeout() here, textarea is filled with initial (onload) content
- setTimeout(function() { $('#'+id).val(''); }, 50);
+ if (func)
+ setTimeout(function() { func(''); }, 50);
return true;
}
- if (!confirm(this.get_label('editorwarning')))
+ var confirmed = this.env.editor_warned || confirm(this.get_label('editorwarning'));
+
+ this.env.editor_warned = true;
+
+ if (!confirmed)
return false;
- var url = '?_task=utils&_action=html2text',
+ var url = '?_task=utils&_action=' + (format == 'html' ? 'html2text' : 'text2html'),
lock = this.set_busy(true, 'converting');
this.log('HTTP POST: ' + url);
- $.ajax({ type: 'POST', url: url, data: htmlText, contentType: 'application/octet-stream',
+ $.ajax({ type: 'POST', url: url, data: text, contentType: 'application/octet-stream',
error: function(o, status, err) { ref.http_error(o, status, err, lock); },
- success: function(data) { ref.set_busy(false, null, lock); $('#'+id).val(data); ref.log(data); }
+ success: function(data) {
+ ref.set_busy(false, null, lock);
+ if (func) func(data);
+ }
});
return true;
};
- this.plain2html = function(plain, id)
- {
- var lock = this.set_busy(true, 'converting');
-
- plain = plain.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
- $('#'+id).val(plain ? '<pre>'+plain+'</pre>' : '');
-
- this.set_busy(false, null, lock);
- };
-
/********************************************************/
/********* remote request methods *********/
@@ -6922,6 +7136,13 @@ function rcube_webmail()
this.start_keepalive();
};
+ // update browser location to remember current view
+ this.update_state = function(query)
+ {
+ if (window.history.replaceState)
+ window.history.replaceState({}, document.title, rcmail.url('', query));
+ };
+
// send a http request to the server
this.http_request = function(action, query, lock)
{
@@ -7104,11 +7325,26 @@ function rcube_webmail()
this.enable_command('purge', this.purge_mailbox_test() && !is_multifolder);
this.enable_command('import-messages', !is_multifolder);
this.enable_command('expand-all', 'expand-unread', 'collapse-all', this.env.threading && this.env.messagecount && !is_multifolder);
- this.enable_command('set-listmode', this.env.threads && !is_multifolder);
if ((response.action == 'list' || response.action == 'search') && this.message_list) {
- this.msglist_select(this.message_list);
- this.triggerEvent('listupdate', { folder:this.env.mailbox, rowcount:this.message_list.rowcount });
+ var list = this.message_list, uid = this.env.list_uid;
+
+ // highlight message row when we're back from message page
+ if (uid) {
+ if (!list.rows[uid])
+ uid += '-' + this.env.mailbox;
+ if (list.rows[uid]) {
+ list.select(uid);
+ }
+ delete this.env.list_uid;
+ }
+
+ this.enable_command('set-listmode', this.env.threads && !is_multifolder);
+ if (list.rowcount > 0)
+ list.focus();
+ this.msglist_select(list);
+ this.triggerEvent('listupdate', { folder:this.env.mailbox, rowcount:list.rowcount });
+
}
}
else if (this.task == 'addressbook') {
@@ -7118,10 +7354,18 @@ function rcube_webmail()
this.enable_command('search-create', this.env.source == '');
this.enable_command('search-delete', this.env.search_id);
this.update_group_commands();
+ if (this.contact_list.rowcount > 0)
+ this.contact_list.focus();
this.triggerEvent('listupdate', { folder:this.env.source, rowcount:this.contact_list.rowcount });
}
}
break;
+
+ case 'list-contacts':
+ case 'search-contacts':
+ if (this.contact_list && this.contact_list.rowcount > 0)
+ this.contact_list.focus();
+ break;
}
if (response.unlock)
@@ -7179,9 +7423,10 @@ function rcube_webmail()
// save message in local storage and do not redirect
if (this.env.action == 'compose') {
this.save_compose_form_local();
+ this.compose_skip_unsavedcheck = true;
}
else if (redirect_url) {
- window.setTimeout(function(){ ref.redirect(redirect_url, true); }, 2000);
+ setTimeout(function(){ ref.redirect(redirect_url, true); }, 2000);
}
};
@@ -7321,8 +7566,10 @@ function rcube_webmail()
// post the given form to a hidden iframe
this.async_upload_form = function(form, action, onload)
{
- var frame, ts = new Date().getTime(),
- frame_name = 'rcmupload'+ts;
+ // create hidden iframe
+ var ts = new Date().getTime(),
+ frame_name = 'rcmupload' + ts,
+ frame = this.async_upload_form_frame(frame_name);
// upload progress support
if (this.env.upload_progress_name) {
@@ -7337,26 +7584,12 @@ function rcube_webmail()
field.val(ts);
}
- // have to do it this way for IE
- // otherwise the form will be posted to a new window
- if (document.all) {
- document.body.insertAdjacentHTML('BeforeEnd', '<iframe name="'+frame_name+'"'
- + ' src="program/resources/blank.gif" style="width:0;height:0;visibility:hidden;"></iframe>');
- frame = $('iframe[name="'+frame_name+'"]');
- }
- // for standards-compliant browsers
- else {
- frame = $('<iframe>').attr('name', frame_name)
- .css({border: 'none', width: 0, height: 0, visibility: 'hidden'})
- .appendTo(document.body);
- }
-
- // handle upload errors, parsing iframe content in onload
+ // handle upload errors by parsing iframe content in onload
frame.bind('load', {ts:ts}, onload);
$(form).attr({
target: frame_name,
- action: this.url(action, { _id:this.env.compose_id||'', _uploadid:ts }),
+ action: this.url(action, {_id: this.env.compose_id || '', _uploadid: ts, _from: this.env.action}),
method: 'POST'})
.attr(form.encoding ? 'encoding' : 'enctype', 'multipart/form-data')
.submit();
@@ -7364,18 +7597,25 @@ function rcube_webmail()
return frame_name;
};
+ // create iframe element for files upload
+ this.async_upload_form_frame = function(name)
+ {
+ return $('<iframe>').attr({name: name, style: 'border: none; width: 0; height: 0; visibility: hidden'})
+ .appendTo(document.body);
+ };
+
// html5 file-drop API
this.document_drag_hover = function(e, over)
{
e.preventDefault();
- $(ref.gui_objects.filedrop)[(over?'addClass':'removeClass')]('active');
+ $(this.gui_objects.filedrop)[(over?'addClass':'removeClass')]('active');
};
this.file_drag_hover = function(e, over)
{
e.preventDefault();
e.stopPropagation();
- $(ref.gui_objects.filedrop)[(over?'addClass':'removeClass')]('hover');
+ $(this.gui_objects.filedrop)[(over?'addClass':'removeClass')]('hover');
};
// handler when files are dropped to a designated area.
@@ -7412,7 +7652,7 @@ function rcube_webmail()
$.ajax({
type: 'POST',
dataType: 'json',
- url: ref.url(ref.env.filedrop.action||'upload', { _id:ref.env.compose_id||ref.env.cid||'', _uploadid:ts, _remote:1 }),
+ url: ref.url(ref.env.filedrop.action || 'upload', {_id: ref.env.compose_id||ref.env.cid||'', _uploadid: ts, _remote: 1, _from: ref.env.action}),
contentType: formdata ? false : 'multipart/form-data; boundary=' + boundary,
processData: false,
timeout: 0, // disable default timeout set in ajaxSetup()
@@ -7618,7 +7858,7 @@ function rcube_webmail()
if (obj.setSelectionRange)
obj.setSelectionRange(pos, pos);
}
- catch(e) {}; // catch Firefox exception if obj is hidden
+ catch(e) {} // catch Firefox exception if obj is hidden
};
// get selected text from an input field
@@ -7671,25 +7911,23 @@ function rcube_webmail()
}
catch(e) {
this.display_message(String(e), 'error');
- };
+ }
};
this.check_protocol_handler = function(name, elem)
{
var nav = window.navigator;
+
if (!nav || (typeof nav.registerProtocolHandler != 'function')) {
$(elem).addClass('disabled').click(function(){ return false; });
}
+ else if (typeof nav.isProtocolHandlerRegistered == 'function') {
+ var status = nav.isProtocolHandlerRegistered('mailto', this.mailto_handler_uri());
+ if (status)
+ $(elem).parent().find('.mailtoprotohandler-status').html(status);
+ }
else {
- var status = null;
- if (typeof nav.isProtocolHandlerRegistered == 'function') {
- status = nav.isProtocolHandlerRegistered('mailto', this.mailto_handler_uri());
- if (status)
- $(elem).parent().find('.mailtoprotohandler-status').html(status);
- }
- else {
- $(elem).click(function() { rcmail.register_protocol_handler(name); return false; });
- }
+ $(elem).click(function() { ref.register_protocol_handler(name); return false; });
}
};
@@ -7727,8 +7965,8 @@ function rcube_webmail()
{
var img = new Image();
- img.onload = function() { rcmail.env.browser_capabilities.tif = 1; };
- img.onerror = function() { rcmail.env.browser_capabilities.tif = 0; };
+ img.onload = function() { ref.env.browser_capabilities.tif = 1; };
+ img.onerror = function() { ref.env.browser_capabilities.tif = 0; };
img.src = 'program/resources/blank.tif';
};
@@ -7744,12 +7982,12 @@ function rcube_webmail()
if (window.ActiveXObject) {
try {
- if (axObj = new ActiveXObject("AcroPDF.PDF"))
+ if (plugin = new ActiveXObject("AcroPDF.PDF"))
return 1;
}
catch (e) {}
try {
- if (axObj = new ActiveXObject("PDF.PdfCtrl"))
+ if (plugin = new ActiveXObject("PDF.PdfCtrl"))
return 1;
}
catch (e) {}
@@ -7777,7 +8015,7 @@ function rcube_webmail()
if (window.ActiveXObject) {
try {
- if (axObj = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"))
+ if (plugin = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"))
return 1;
}
catch (e) {}
@@ -7803,24 +8041,44 @@ function rcube_webmail()
// wrapper for localStorage.getItem(key)
this.local_storage_get_item = function(key, deflt, encrypted)
{
+ var item;
+
// TODO: add encryption
- var item = localStorage.getItem(this.get_local_storage_prefix() + key);
+ try {
+ item = localStorage.getItem(this.get_local_storage_prefix() + key);
+ }
+ catch (e) { }
+
return item !== null ? JSON.parse(item) : (deflt || null);
};
// wrapper for localStorage.setItem(key, data)
this.local_storage_set_item = function(key, data, encrypted)
{
- // TODO: add encryption
- return localStorage.setItem(this.get_local_storage_prefix() + key, JSON.stringify(data));
+ // try/catch to handle no localStorage support, but also error
+ // in Safari-in-private-browsing-mode where localStorage exists
+ // but can't be used (#1489996)
+ try {
+ // TODO: add encryption
+ localStorage.setItem(this.get_local_storage_prefix() + key, JSON.stringify(data));
+ return true;
+ }
+ catch (e) {
+ return false;
+ }
};
// wrapper for localStorage.removeItem(key)
this.local_storage_remove_item = function(key)
{
- return localStorage.removeItem(this.get_local_storage_prefix() + key);
+ try {
+ localStorage.removeItem(this.get_local_storage_prefix() + key);
+ return true;
+ }
+ catch (e) {
+ return false;
+ }
};
-
} // end object rcube_webmail
diff --git a/program/js/common.js b/program/js/common.js
index 48e85558f..76643068d 100644
--- a/program/js/common.js
+++ b/program/js/common.js
@@ -31,7 +31,6 @@ var CONTROL_KEY = 1;
var SHIFT_KEY = 2;
var CONTROL_SHIFT_KEY = 3;
-
/**
* Default browser check class
* @constructor
@@ -281,6 +280,28 @@ cancel: function(evt)
return false;
},
+/**
+ * Determine whether the given event was trigered from keyboard
+ */
+is_keyboard: function(e)
+{
+ return e && (
+ (e.pointerType !== undefined && e.pointerType !== 'mouse') || // IE 11+
+ (e.mozInputSource && e.mozInputSource == e.MOZ_SOURCE_KEYBOARD) || // Firefox
+ (e.offsetX === 0 && e.offsetY === 0) || // Opera
+ (!e.pageX && (e.pageY || 0) <= 0 && !e.clientX && (e.clientY || 0) <= 0) || // others
+ (bw.ie && rcube_event._last_keyboard_event && rcube_event._last_keyboard_event.target == e.target) // hack for IE <= 10
+ );
+},
+
+/**
+ * Accept event if triggered from keyboard action (e.g. <Enter>)
+ */
+keyboard_only: function(e)
+{
+ return rcube_event.is_keyboard(e) ? true : rcube_event.cancel(e);
+},
+
touchevent: function(e)
{
return { pageX:e.pageX, pageY:e.pageY, offsetX:e.pageX - e.target.offsetLeft, offsetY:e.pageY - e.target.offsetTop, target:e.target, istouch:true };
@@ -593,6 +614,11 @@ if (!String.prototype.startsWith) {
};
}
+// array utility function
+jQuery.last = function(arr) {
+ return arr && arr.length ? arr[arr.length-1] : undefined;
+}
+
// jQuery plugin to emulate HTML5 placeholder attributes on input elements
jQuery.fn.placeholder = function(text) {
return this.each(function() {
diff --git a/program/js/editor.js b/program/js/editor.js
index af877d7b5..b2e96d180 100644
--- a/program/js/editor.js
+++ b/program/js/editor.js
@@ -26,162 +26,738 @@
* for the JavaScript code in this file.
*
* @author Eric Stadtherr <estadtherr@gmail.com>
+ * @author Aleksander Machniak <alec@alec.pl>
*/
-// Initialize HTML editor
-function rcmail_editor_init(config)
+/**
+ * Roundcube Text Editor Widget class
+ * @constructor
+ */
+function rcube_text_editor(config, id)
{
- var ret, conf = {
- mode: 'textareas',
- editor_selector: 'mce_editor',
- apply_source_formatting: true,
- theme: 'advanced',
+ var ref = this,
+ conf = {
+ selector: '#' + ($('#' + id).is('.mce_editor') ? id : 'fake-editor-id'),
+ theme: 'modern',
language: config.lang,
- content_css: config.skin_path + '/editor_content.css',
- theme_advanced_toolbar_location: 'top',
- theme_advanced_toolbar_align: 'left',
- theme_advanced_buttons3: '',
- theme_advanced_statusbar_location: 'none',
+ content_css: 'program/js/tinymce/roundcube/content.css?v1',
+ menubar: false,
+ statusbar: false,
+ toolbar_items_size: 'small',
extended_valid_elements: 'font[face|size|color|style],span[id|class|align|style]',
relative_urls: false,
remove_script_host: false,
- gecko_spellcheck: true,
convert_urls: false, // #1486944
- external_image_list: window.rcmail_editor_images,
- rc_client: rcmail
+ image_description: false,
+ paste_webkit_style: "color font-size font-family",
+ paste_data_images: true,
+ browser_spellcheck: true
};
- if (config.mode == 'identity')
+ // register spellchecker for plain text editor
+ this.spellcheck_observer = function() {};
+ if (config.spellchecker) {
+ this.spellchecker = config.spellchecker;
+ if (config.spellcheck_observer) {
+ this.spellchecker.spelling_state_observer = this.spellcheck_observer = config.spellcheck_observer;
+ }
+ }
+
+ // minimal editor
+ if (config.mode == 'identity') {
$.extend(conf, {
- plugins: 'paste,tabfocus',
- theme_advanced_buttons1: 'bold,italic,underline,strikethrough,justifyleft,justifycenter,justifyright,justifyfull,separator,outdent,indent,charmap,hr,link,unlink,code,forecolor',
- theme_advanced_buttons2: 'fontselect,fontsizeselect'
+ plugins: 'autolink charmap code colorpicker hr image link paste tabfocus textcolor',
+ toolbar: 'bold italic underline alignleft aligncenter alignright alignjustify'
+ + ' | outdent indent charmap hr link unlink image code forecolor'
+ + ' | fontselect fontsizeselect',
+ file_browser_callback: function(name, url, type, win) { ref.file_browser_callback(name, url, type); },
+ file_browser_callback_types: 'image'
});
- else { // mail compose
+ }
+ // full-featured editor
+ else {
$.extend(conf, {
- plugins: 'paste,emotions,media,nonbreaking,table,searchreplace,visualchars,directionality,inlinepopups,tabfocus' + (config.spellcheck ? ',spellchecker' : ''),
- theme_advanced_buttons1: 'bold,italic,underline,|,justifyleft,justifycenter,justifyright,justifyfull,|,bullist,numlist,outdent,indent,ltr,rtl,blockquote,|,forecolor,backcolor,fontselect,fontsizeselect',
- theme_advanced_buttons2: 'link,unlink,table,|,emotions,charmap,image,media,|,code,search,undo,redo',
- spellchecker_languages: (rcmail.env.spellcheck_langs ? rcmail.env.spellcheck_langs : 'Dansk=da,Deutsch=de,+English=en,Espanol=es,Francais=fr,Italiano=it,Nederlands=nl,Polski=pl,Portugues=pt,Suomi=fi,Svenska=sv'),
- spellchecker_rpc_url: '?_task=utils&_action=spell_html&_remote=1',
- spellchecker_enable_learn_rpc: config.spelldict,
+ plugins: 'autolink charmap code colorpicker directionality emoticons link image media nonbreaking'
+ + ' paste table tabfocus textcolor searchreplace' + (config.spellcheck ? ' spellchecker' : ''),
+ toolbar: 'bold italic underline | alignleft aligncenter alignright alignjustify'
+ + ' | bullist numlist outdent indent ltr rtl blockquote | forecolor backcolor | fontselect fontsizeselect'
+ + ' | link unlink table | emoticons charmap image media | code searchreplace undo redo',
+ spellchecker_rpc_url: '../../../../../?_task=utils&_action=spell_html&_remote=1',
+ spellchecker_language: rcmail.env.spell_lang,
accessibility_focus: false,
- oninit: 'rcmail_editor_callback'
+ file_browser_callback: function(name, url, type, win) { ref.file_browser_callback(name, url, type); },
+ // @todo: support more than image (types: file, image, media)
+ file_browser_callback_types: 'image media'
});
-
- // add handler for spellcheck button state update
- conf.setup = function(ed) {
- ed.onSetProgressState.add(function(ed, active) {
- if (!active)
- rcmail.spellcheck_state();
- });
- ed.onKeyPress.add(function(ed, e) {
- rcmail.compose_type_activity++;
- });
- }
}
// support external configuration settings e.g. from skin
if (window.rcmail_editor_settings)
$.extend(conf, window.rcmail_editor_settings);
- tinyMCE.init(conf);
-}
+ conf.setup = function(ed) {
+ ed.on('init', function(ed) { ref.init_callback(ed); });
+ // add handler for spellcheck button state update
+ ed.on('SpellcheckStart SpellcheckEnd', function(args) {
+ ref.spellcheck_active = args.type == 'spellcheckstart';
+ ref.spellcheck_observer();
+ });
+ ed.on('keypress', function() {
+ rcmail.compose_type_activity++;
+ });
+ // secure spellchecker requests with Roundcube token
+ tinymce.util.XHR.on('beforeSend', function(e) {
+ e.xhr.setRequestHeader('X-Roundcube-Request', rcmail.env.request_token);
+ });
+ };
-// react to real individual tinyMCE editor init
-function rcmail_editor_callback()
-{
- var css = {},
- elem = rcube_find_object('_from'),
- fe = rcmail.env.compose_focus_elem;
+ // textarea identifier
+ this.id = id;
+ // reference to active editor (if in HTML mode)
+ this.editor = null;
- if (rcmail.env.default_font)
- css['font-family'] = rcmail.env.default_font;
+ tinymce.init(conf);
- if (rcmail.env.default_font_size)
- css['font-size'] = rcmail.env.default_font_size;
+ // react to real individual tinyMCE editor init
+ this.init_callback = function(event)
+ {
+ this.editor = event.target;
+
+ if (rcmail.env.action != 'compose') {
+ return;
+ }
- if (css['font-family'] || css['font-size'])
- $(tinyMCE.get(rcmail.env.composebody).getBody()).css(css);
+ var css = {},
+ elem = rcube_find_object('_from'),
+ fe = rcmail.env.compose_focus_elem;
- if (elem && elem.type == 'select-one') {
- rcmail.change_identity(elem);
- // Focus previously focused element
- if (fe && fe.id != rcmail.env.composebody) {
- // use setTimeout() for IE9 (#1488541)
- window.setTimeout(function() {
- window.focus(); // for WebKit (#1486674)
- fe.focus();
- }, 10);
+ if (rcmail.env.default_font)
+ css['font-family'] = rcmail.env.default_font;
+
+ if (rcmail.env.default_font_size)
+ css['font-size'] = rcmail.env.default_font_size;
+
+ if (css['font-family'] || css['font-size'])
+ $(this.editor.getBody()).css(css);
+
+ if (elem && elem.type == 'select-one') {
+ // insert signature (only for the first time)
+ if (!rcmail.env.identities_initialized)
+ rcmail.change_identity(elem);
+
+ // Focus previously focused element
+ if (fe && fe.id != this.id) {
+ // use setTimeout() for IE9 (#1488541)
+ window.setTimeout(function() {
+ window.focus(); // for WebKit (#1486674)
+ fe.focus();
+ }, 10);
+ }
}
- }
- // set tabIndex and set focus to element that was focused before
- rcmail_editor_tabindex(fe && fe.id == rcmail.env.composebody);
- // Trigger resize (needed for proper editor resizing in some browsers using default skin)
- $(window).resize();
-}
+ // set tabIndex and set focus to element that was focused before
+ this.tabindex(fe && fe.id == this.id);
+ // Trigger resize (needed for proper editor resizing in some browsers)
+ window.setTimeout(function() { $(window).resize(); }, 100);
+ };
+
+ // set tabIndex on tinymce editor
+ this.tabindex = function(focus)
+ {
+ if (rcmail.env.task == 'mail' && this.editor) {
+ var textarea = this.editor.getElement(),
+ node = this.editor.getContentAreaContainer().childNodes[0];
-// set tabIndex on tinyMCE editor
-function rcmail_editor_tabindex(focus)
-{
- if (rcmail.env.task == 'mail') {
- var editor = tinyMCE.get(rcmail.env.composebody);
- if (editor) {
- var textarea = editor.getElement();
- var node = editor.getContentAreaContainer().childNodes[0];
if (textarea && node)
node.tabIndex = textarea.tabIndex;
if (focus)
- editor.getBody().focus();
+ this.editor.getBody().focus();
+
+ // find :prev and :next elements to get focus when tabbing away
+ if (textarea.tabIndex > 0) {
+ var x = null,
+ editor = this.editor,
+ tabfocus_elements = [':prev',':next'],
+ el = tinymce.DOM.select('*[tabindex='+textarea.tabIndex+']:not(iframe)');
+ tinymce.each(el, function(e, i) { if (e.id == editor.id) { x = i; return false; } });
+ if (x !== null) {
+ if (el[x-1] && el[x-1].id) {
+ tabfocus_elements[0] = el[x-1].id;
+ }
+ if (el[x+1] && el[x+1].id) {
+ tabfocus_elements[1] = el[x+1].id;
+ }
+ editor.settings.tabfocus_elements = tabfocus_elements.join(',');
+ }
+ }
}
- }
-}
+ };
-// switch html/plain mode
-function rcmail_toggle_editor(select, textAreaId, flagElement)
-{
- var flag, ishtml;
+ // switch html/plain mode
+ this.toggle = function(ishtml)
+ {
+ var curr, content, result,
+ // these non-printable chars are not removed on text2html and html2text
+ // we can use them as temp signature replacement
+ sig_mark = "\u0002\u0003",
+ input = $('#' + this.id),
+ signature = rcmail.env.identity ? rcmail.env.signatures[rcmail.env.identity] : null,
+ is_sig = signature && signature.text && signature.text.length > 1;
- if (select.tagName != 'SELECT')
- ishtml = select.checked;
- else
- ishtml = select.value == 'html';
+ // apply spellcheck changes if spell checker is active
+ this.spellcheck_stop();
- var res = rcmail.command('toggle-editor', {id:textAreaId, mode:ishtml?'html':'plain'});
+ if (ishtml) {
+ content = input.val();
- if (ishtml) {
- // #1486593
- setTimeout("rcmail_editor_tabindex(true);", 500);
- if (flagElement && (flag = rcube_find_object(flagElement)))
- flag.value = '1';
- }
- else if (res) {
- if (flagElement && (flag = rcube_find_object(flagElement)))
- flag.value = '0';
+ // replace current text signature with temp mark
+ if (is_sig)
+ content = content.replace(signature.text, sig_mark);
- if (rcmail.env.composebody)
- rcube_find_object(rcmail.env.composebody).focus();
- }
- else { // !res
- if (select.tagName == 'SELECT')
- select.value = 'html';
- else if (select.tagName == 'INPUT')
- select.checked = true;
- }
-}
+ // convert to html
+ result = rcmail.plain2html(content, function(data) {
+ // replace signature mark with html version of the signature
+ if (is_sig)
+ data = data.replace(sig_mark, '<div id="_rc_sig">' + signature.html + '</div>');
-// editor callbeck for images listing
-function rcmail_editor_images()
-{
- var i, files = rcmail.env.attachments, list = [];
+ input.val(data);
+ tinymce.execCommand('mceAddEditor', false, ref.id);
+
+ setTimeout(function() {
+ if (ref.editor) {
+ if (rcmail.env.default_font)
+ $(ref.editor.getBody()).css('font-family', rcmail.env.default_font);
+ // #1486593
+ ref.tabindex(true);
+ }
+ }, 500);
+ });
+ }
+ else if (this.editor) {
+ if (is_sig) {
+ // get current version of signature, we'll need it in
+ // case of html2text conversion abort
+ if (curr = this.editor.dom.get('_rc_sig'))
+ curr = curr.innerHTML;
+
+ // replace current signature with some non-printable characters
+ // we use non-printable characters, because this replacement
+ // is visible to the user
+ // doing this after getContent() would be hard
+ this.editor.dom.setHTML('_rc_sig', sig_mark);
+ }
+
+ // get html content
+ content = this.editor.getContent();
+
+ // convert html to text
+ result = rcmail.html2plain(content, function(data) {
+ tinymce.execCommand('mceRemoveEditor', false, ref.id);
+ ref.editor = null;
- for (i in files) {
- att = files[i];
- if (att.complete && att.mimetype.startsWith('image/')) {
- list.push([att.name, rcmail.env.comm_path+'&_id='+rcmail.env.compose_id+'&_action=display-attachment&_file='+i]);
+ // replace signture mark with text version of the signature
+ if (is_sig)
+ data = data.replace(sig_mark, "\n" + signature.text);
+
+ input.val(data).focus();
+ });
+
+ // bring back current signature
+ if (!result && curr)
+ this.editor.dom.setHTML('_rc_sig', curr);
}
- }
- return list;
-};
+ return result;
+ };
+
+ // start spellchecker
+ this.spellcheck_start = function()
+ {
+ if (this.editor) {
+ tinymce.execCommand('mceSpellCheck', true);
+ this.spellcheck_observer();
+ }
+ else if (this.spellchecker && this.spellchecker.spellCheck) {
+ this.spellchecker.spellCheck();
+ }
+ };
+
+ // stop spellchecker
+ this.spellcheck_stop = function()
+ {
+ var ed = this.editor;
+
+ if (ed) {
+ if (ed.plugins && ed.plugins.spellchecker && this.spellcheck_active) {
+ ed.execCommand('mceSpellCheck', false);
+ this.spellcheck_observer();
+ }
+ }
+ else if (ed = this.spellchecker) {
+ if (ed.state && ed.state != 'ready' && ed.state != 'no_error_found')
+ $(ed.spell_span).trigger('click');
+ }
+ };
+
+ // spellchecker state
+ this.spellcheck_state = function()
+ {
+ var ed;
+
+ if (this.editor)
+ return this.spellcheck_active;
+ else if ((ed = this.spellchecker) && ed.state)
+ return ed.state != 'ready' && ed.state != 'no_error_found';
+ };
+
+ // resume spellchecking, highlight provided mispellings without a new ajax request
+ this.spellcheck_resume = function(data)
+ {
+ var ed = this.editor;
+
+ if (ed) {
+ ed.plugins.spellchecker.markErrors(data);
+ }
+ else if (ed = this.spellchecker) {
+ ed.prepare(false, true);
+ ed.processData(data);
+ }
+ };
+
+ // get selected (spellcheker) language
+ this.get_language = function()
+ {
+ if (this.editor) {
+ return this.editor.settings.spellchecker_language || rcmail.env.spell_lang;
+ }
+ else if (this.spellchecker) {
+ return GOOGIE_CUR_LANG;
+ }
+ };
+
+ // set language for spellchecking
+ this.set_language = function(lang)
+ {
+ var ed = this.editor;
+
+ if (ed) {
+ ed.settings.spellchecker_language = lang;
+ }
+ if (ed = this.spellchecker) {
+ ed.setCurrentLanguage(lang);
+ }
+ };
+
+ // replace selection with text snippet
+ this.replace = function(text)
+ {
+ var ed = this.editor;
+
+ // insert into tinymce editor
+ if (ed) {
+ ed.getWin().focus(); // correct focus in IE & Chrome
+ ed.selection.setContent(rcmail.quote_html(text).replace(/\r?\n/g, '<br/>'), { format:'text' });
+ }
+ // replace selection in compose textarea
+ else if (ed = rcube_find_object(this.id)) {
+ var selection = $(ed).is(':focus') ? rcmail.get_input_selection(ed) : { start:0, end:0 },
+ inp_value = ed.value;
+ pre = inp_value.substring(0, selection.start),
+ end = inp_value.substring(selection.end, inp_value.length);
+
+ // insert response text
+ ed.value = pre + text + end;
+
+ // set caret after inserted text
+ rcmail.set_caret_pos(ed, selection.start + text.length);
+ ed.focus();
+ }
+ };
+
+ // get selected text (if no selection returns all text) from the editor
+ this.get_content = function(selected, plain)
+ {
+ // apply spellcheck changes if spell checker is active
+ this.spellcheck_stop();
+
+ var sigstart, ed = this.editor,
+ format = plain ? 'text' : 'html',
+ text = '', strip = false;
+
+ // get selected text from tinymce editor
+ if (ed) {
+ ed.getWin().focus(); // correct focus in IE & Chrome
+ if (selected)
+ text = ed.selection.getContent({format: format});
+
+ if (!text) {
+ text = ed.getContent({format: format});
+ strip = true;
+ }
+ }
+ // get selected text from compose textarea
+ else if (ed = rcube_find_object(this.id)) {
+ if (selected && $(ed).is(':focus')) {
+ text = rcmail.get_input_selection(ed).text;
+ }
+
+ if (!text) {
+ text = ed.value;
+ strip = true;
+ }
+ }
+
+ // strip off signature
+ if (strip) {
+ sigstart = text.indexOf('-- \n');
+ if (sigstart > 0) {
+ text = text.substring(0, sigstart);
+ }
+ }
+
+ return text;
+ };
+
+ // change user signature text
+ this.change_signature = function(id, show_sig)
+ {
+ var cursor_pos, p = -1,
+ input_message = $('#' + this.id),
+ message = input_message.val(),
+ sig = rcmail.env.identity;
+
+ if (!this.editor) { // plain text mode
+ // remove the 'old' signature
+ if (show_sig && sig && rcmail.env.signatures && rcmail.env.signatures[sig]) {
+ sig = rcmail.env.signatures[sig].text;
+ sig = sig.replace(/\r\n/g, '\n');
+
+ p = rcmail.env.top_posting ? message.indexOf(sig) : message.lastIndexOf(sig);
+ if (p >= 0)
+ message = message.substring(0, p) + message.substring(p+sig.length, message.length);
+ }
+ // add the new signature string
+ if (show_sig && rcmail.env.signatures && rcmail.env.signatures[id]) {
+ sig = rcmail.env.signatures[id].text;
+ sig = sig.replace(/\r\n/g, '\n');
+
+ if (rcmail.env.top_posting) {
+ if (p >= 0) { // in place of removed signature
+ message = message.substring(0, p) + sig + message.substring(p, message.length);
+ cursor_pos = p - 1;
+ }
+ else if (!message) { // empty message
+ cursor_pos = 0;
+ message = '\n\n' + sig;
+ }
+ else if (pos = rcmail.get_caret_pos(input_message.get(0))) { // at cursor position
+ message = message.substring(0, pos) + '\n' + sig + '\n\n' + message.substring(pos, message.length);
+ cursor_pos = pos;
+ }
+ else { // on top
+ cursor_pos = 0;
+ message = '\n\n' + sig + '\n\n' + message.replace(/^[\r\n]+/, '');
+ }
+ }
+ else {
+ message = message.replace(/[\r\n]+$/, '');
+ cursor_pos = !rcmail.env.top_posting && message.length ? message.length+1 : 0;
+ message += '\n\n' + sig;
+ }
+ }
+ else
+ cursor_pos = rcmail.env.top_posting ? 0 : message.length;
+
+ input_message.val(message);
+
+ // move cursor before the signature
+ rcmail.set_caret_pos(input_message.get(0), cursor_pos);
+ }
+ else if (show_sig && rcmail.env.signatures) { // html
+ var sigElem = this.editor.dom.get('_rc_sig');
+
+ // Append the signature as a div within the body
+ if (!sigElem) {
+ var body = this.editor.getBody(),
+ doc = this.editor.getDoc();
+
+ sigElem = doc.createElement('div');
+ sigElem.setAttribute('id', '_rc_sig');
+
+ if (rcmail.env.top_posting) {
+ // if no existing sig and top posting then insert at caret pos
+ this.editor.getWin().focus(); // correct focus in IE & Chrome
+
+ var node = this.editor.selection.getNode();
+ if (node.nodeName == 'BODY') {
+ // no real focus, insert at start
+ body.insertBefore(sigElem, body.firstChild);
+ body.insertBefore(doc.createElement('br'), body.firstChild);
+ }
+ else {
+ body.insertBefore(sigElem, node.nextSibling);
+ body.insertBefore(doc.createElement('br'), node.nextSibling);
+ }
+ }
+ else {
+ body.appendChild(sigElem);
+ }
+ }
+
+ if (rcmail.env.signatures[id]) {
+ sigElem.innerHTML = rcmail.env.signatures[id].html;
+ }
+ }
+ };
+
+ // trigger content save
+ this.save = function()
+ {
+ if (this.editor) {
+ this.editor.save();
+ }
+ };
+
+ // focus the editing area
+ this.focus = function()
+ {
+ (this.editor || rcube_find_object(this.id)).focus();
+ };
+
+ // image selector
+ this.file_browser_callback = function(field_name, url, type)
+ {
+ var i, elem, cancel, dialog, fn, list = [];
+
+ // open image selector dialog
+ dialog = this.editor.windowManager.open({
+ title: rcmail.gettext('select' + type),
+ width: 500,
+ height: 300,
+ html: '<div id="image-selector-list"><ul></ul></div>'
+ + '<div id="image-selector-form"><div id="image-upload-button" class="mce-widget mce-btn" role="button" tabindex="0"></div></div>',
+ buttons: [{text: 'Cancel', onclick: function() { ref.file_browser_close(); }}]
+ });
+
+ rcmail.env.file_browser_field = field_name;
+ rcmail.env.file_browser_type = type;
+
+ // fill images list with available images
+ for (i in rcmail.env.attachments) {
+ if (elem = ref.file_browser_entry(i, rcmail.env.attachments[i])) {
+ list.push(elem);
+ }
+ }
+
+ if (list.length) {
+ $('#image-selector-list > ul').append(list).find('li:first').focus();
+ }
+
+ // add hint about max file size (in dialog footer)
+ $('div.mce-abs-end', dialog.getEl()).append($('<div class="hint">')
+ .text($('div.hint', rcmail.gui_objects.uploadform).text()));
+
+ // init upload button
+ elem = $('#image-upload-button').append($('<span>').text(rcmail.gettext('add' + type)));
+ cancel = elem.parents('.mce-panel').find('button:last').parent();
+
+ // we need custom Tab key handlers, until we find out why
+ // tabindex do not work here as expected
+ elem.keydown(function(e) {
+ if (e.which == 9) {
+ // on Tab + Shift focus first file
+ if (rcube_event.get_modifier(e) == SHIFT_KEY)
+ $('#image-selector-list li:last').focus();
+ // on Tab focus Cancel button
+ else
+ cancel.focus();
+
+ return false;
+ }
+ });
+ cancel.keydown(function(e) {
+ if (e.which == 9) {
+ // on Tab + Shift focus upload button
+ if (rcube_event.get_modifier(e) == SHIFT_KEY)
+ elem.focus();
+ else
+ $('#image-selector-list li:first').focus();
+
+ return false;
+ }
+ });
+
+ // enable (smart) upload button
+ this.hack_file_input(elem, rcmail.gui_objects.uploadform);
+
+ // enable drag-n-drop area
+ if ((window.XMLHttpRequest && XMLHttpRequest.prototype && XMLHttpRequest.prototype.sendAsBinary) || window.FormData) {
+ if (!rcmail.env.filedrop) {
+ rcmail.env.filedrop = {};
+ }
+ if (rcmail.gui_objects.filedrop) {
+ rcmail.env.old_file_drop = rcmail.gui_objects.filedrop;
+ }
+
+ rcmail.gui_objects.filedrop = $('#image-selector-form');
+ rcmail.gui_objects.filedrop.addClass('droptarget')
+ .bind('dragover dragleave', function(e) {
+ e.preventDefault();
+ e.stopPropagation();
+ $(this)[(e.type == 'dragover' ? 'addClass' : 'removeClass')]('hover');
+ })
+ .get(0).addEventListener('drop', function(e) { return rcmail.file_dropped(e); }, false);
+ }
+
+ // register handler for successful file upload
+ if (!rcmail.env.file_dialog_event) {
+ rcmail.env.file_dialog_event = true;
+ rcmail.addEventListener('fileuploaded', function(attr) {
+ var elem;
+ if (elem = ref.file_browser_entry(attr.name, attr.attachment)) {
+ $('#image-selector-list > ul').prepend(elem);
+ elem.focus();
+ }
+ });
+ }
+
+ // @todo: upload progress indicator
+ };
+
+ // close file browser window
+ this.file_browser_close = function(url)
+ {
+ var input = $('#' + rcmail.env.file_browser_field);
+
+ if (url)
+ input.val(url);
+
+ this.editor.windowManager.close();
+
+ input.focus();
+
+ if (rcmail.env.old_file_drop)
+ rcmail.gui_objects.filedrop = rcmail.env.old_file_drop;
+ };
+
+ // creates file browser entry
+ this.file_browser_entry = function(file_id, file)
+ {
+ if (!file.complete || !file.mimetype) {
+ return;
+ }
+
+ if (rcmail.file_upload_id) {
+ rcmail.set_busy(false, null, rcmail.file_upload_id);
+ }
+
+ var rx, img_src;
+
+ switch (rcmail.env.file_browser_type) {
+ case 'image':
+ rx = /^image\//i;
+ break;
+
+ case 'media':
+ rx = /^video\//i;
+ img_src = 'program/js/tinymce/roundcube/video.png';
+ break;
+
+ default:
+ return;
+ }
+
+ if (rx.test(file.mimetype)) {
+ var path = rcmail.env.comm_path + '&_from=' + rcmail.env.action,
+ action = rcmail.env.compose_id ? '&_id=' + rcmail.env.compose_id + '&_action=display-attachment' : '&_action=upload-display',
+ href = path + action + '&_file=' + file_id,
+ img = $('<img>').attr({title: file.name, src: img_src ? img_src : href + '&_thumbnail=1'});
+
+ return $('<li>').attr({tabindex: 0})
+ .data('url', href)
+ .append($('<span class="img">').append(img))
+ .append($('<span class="name">').text(file.name))
+ .click(function() { ref.file_browser_close($(this).data('url')); })
+ .keydown(function(e) {
+ if (e.which == 13) {
+ ref.file_browser_close($(this).data('url'));
+ }
+ // we need custom Tab key handlers, until we find out why
+ // tabindex do not work here as expected
+ else if (e.which == 9) {
+ if (rcube_event.get_modifier(e) == SHIFT_KEY) {
+ if (!$(this).prev().focus().length)
+ $('#image-upload-button').parents('.mce-panel').find('button:last').parent().focus();
+ }
+ else {
+ if (!$(this).next().focus().length)
+ $('#image-upload-button').focus();
+ }
+
+ return false;
+ }
+ });
+ }
+ };
+
+ // create smart files upload button
+ this.hack_file_input = function(elem, clone_form)
+ {
+ var link = $(elem),
+ file = $('<input>').attr('name', '_file[]'),
+ form = $('<form>').attr({method: 'post', enctype: 'multipart/form-data'}),
+ offset = link.offset();
+
+ // clone existing upload form
+ if (clone_form) {
+ file.attr('name', $('input[type="file"]', clone_form).attr('name'));
+ form.attr('action', $(clone_form).attr('action'))
+ .append($('<input>').attr({type: 'hidden', name: '_token', value: rcmail.env.request_token}));
+ }
+
+ function move_file_input(e) {
+ file.css({top: (e.pageY - offset.top - 10) + 'px', left: (e.pageX - offset.left - 10) + 'px'});
+ }
+
+ file.attr({type: 'file', multiple: 'multiple', size: 5, title: '', tabindex: -1})
+ .change(function() { rcmail.upload_file(form, 'upload'); })
+ .click(function() { setTimeout(function() { link.mouseleave(); }, 20); })
+ // opacity:0 does the trick, display/visibility doesn't work
+ .css({opacity: 0, cursor: 'pointer', position: 'relative', outline: 'none'})
+ .appendTo(form);
+
+ // In FF and IE we need to move the browser file-input's button under the cursor
+ // Thanks to the size attribute above we know the length of the input field
+ if (navigator.userAgent.match(/Firefox|MSIE/))
+ file.css({marginLeft: '-80px'});
+
+ // Note: now, I observe problem with cursor style on FF < 4 only
+ link.css({overflow: 'hidden', cursor: 'pointer'})
+ .mouseenter(function() { this.__active = true; })
+ // place button under the cursor
+ .mousemove(function(e) {
+ if (this.__active)
+ move_file_input(e);
+ // move the input away if button is disabled
+ else
+ $(this).mouseleave();
+ })
+ .mouseleave(function() {
+ file.css({top: '-10000px', left: '-10000px'});
+ this.__active = false;
+ })
+ .click(function(e) {
+ // forward click if mouse-enter event was missed
+ if (!this.__active) {
+ this.__active = true;
+ move_file_input(e);
+ file.trigger(e);
+ }
+ })
+ .keydown(function(e) {
+ if (e.which == 13) file.trigger('click');
+ })
+ .mouseleave()
+ .append(form);
+ };
+}
diff --git a/program/js/list.js b/program/js/list.js
index 560ee0d9b..d1dbbcb6c 100644
--- a/program/js/list.js
+++ b/program/js/list.js
@@ -51,7 +51,7 @@ function rcube_list_widget(list, p)
this.rowcount = 0;
this.colcount = 0;
- this.subject_col = -1;
+ this.subject_col = 0;
this.modkey = 0;
this.multiselect = false;
this.multiexpand = false;
@@ -60,12 +60,14 @@ function rcube_list_widget(list, p)
this.column_movable = false;
this.keyboard = false;
this.toggleselect = false;
+ this.aria_listbox = false;
+ this.parent_focus = true;
this.drag_active = false;
this.col_drag_active = false;
this.column_fixed = null;
- this.last_selected = 0;
- this.shift_start = 0;
+ this.last_selected = null;
+ this.shift_start = null;
this.focused = false;
this.drag_mouse_start = null;
this.dblclick_time = 500; // default value on MS Windows is 500
@@ -75,6 +77,9 @@ function rcube_list_widget(list, p)
if (p && typeof p === 'object')
for (var n in p)
this[n] = p[n];
+
+ // register this instance
+ rcube_list_widget._instances.push(this);
};
@@ -94,6 +99,14 @@ init: function()
this.tbody = this.list;
}
+ if ($(this.list).attr('role') == 'listbox') {
+ this.aria_listbox = true;
+ if (this.multiselect)
+ $(this.list).attr('aria-multiselectable', 'true');
+ }
+
+ var me = this;
+
if (this.tbody) {
this.rows = {};
this.rowcount = 0;
@@ -108,8 +121,17 @@ init: function()
this.frame = this.list.parentNode;
// set body events
- if (this.keyboard)
+ if (this.keyboard) {
rcube_event.add_listener({event:'keydown', object:this, method:'key_press'});
+
+ // allow the table element to receive focus.
+ $(this.list).attr('tabindex', '0')
+ .on('focus', function(e){ me.focus(e); });
+ }
+ }
+
+ if (this.parent_focus) {
+ this.list.parentNode.onclick = function(e) { me.focus(); };
}
return this;
@@ -154,6 +176,15 @@ init_row: function(row)
}, false);
}
+ // label the list row with the subject col as descriptive label
+ if (this.aria_listbox) {
+ var lbl_id = 'l:' + row.id;
+ $(row)
+ .attr('role', 'option')
+ .attr('aria-labelledby', lbl_id)
+ .find(this.col_tagname()).eq(this.subject_col).attr('id', lbl_id);
+ }
+
if (document.all)
row.onselectstart = function() { return false; };
@@ -175,7 +206,7 @@ init_header: function()
if (this.fixed_header) { // copy (modified) fixed header back to the actual table
$(this.list.tHead).replaceWith($(this.fixed_header).find('thead').clone());
- $(this.list.tHead).find('tr td').attr('style', ''); // remove fixed widths
+ $(this.list.tHead).find('th,td').attr('style', '').find('a').attr('tabindex', '-1'); // remove fixed widths
}
else if (!bw.touch && this.list.className.indexOf('fixedheader') >= 0) {
this.init_fixed_header();
@@ -202,6 +233,7 @@ init_fixed_header: function()
if (!this.fixed_header) {
this.fixed_header = $('<table>')
.attr('class', this.list.className + ' fixedcopy')
+ .attr('role', 'presentation')
.css({ position:'fixed' })
.append(clone)
.append('<tbody></tbody>');
@@ -220,6 +252,12 @@ init_fixed_header: function()
$(this.fixed_header).find('thead').replaceWith(clone);
}
+ // avoid scrolling header links being focused
+ $(this.list.tHead).find('a.sortcol').attr('tabindex', '-1');
+
+ // set tabindex to fixed header sort links
+ clone.find('a.sortcol').attr('tabindex', '0');
+
this.thead = clone.get(0);
this.resize();
},
@@ -262,6 +300,7 @@ clear: function(sel)
this.rows = {};
this.rowcount = 0;
+ this.last_selected = null;
if (sel)
this.clear_selection();
@@ -313,7 +352,7 @@ insert_row: function(row, before)
if (row.id) domrow.id = row.id;
if (row.className) domrow.className = row.className;
if (row.style) $.extend(domrow.style, row.style);
- if (row.uid) $(domrow).data('uid', row.uid);
+ if (row.uid) $(domrow).data('uid', String(row.uid)); // #1489906
for (var e, domcell, col, i=0; row.cols && i < row.cols.length; i++) {
col = row.cols[i];
@@ -370,41 +409,68 @@ update_row: function(id, cols, newid, select)
*/
focus: function(e)
{
- var n, id;
+ if (this.focused)
+ return;
+
this.focused = true;
- for (n in this.selection) {
- id = this.selection[n];
- if (this.rows[id] && this.rows[id].obj) {
- $(this.rows[id].obj).addClass('selected').removeClass('unfocused');
- }
+ if (e)
+ rcube_event.cancel(e);
+
+ var focus_elem = null;
+
+ if (this.last_selected && this.rows[this.last_selected]) {
+ focus_elem = $(this.rows[this.last_selected].obj).find(this.col_tagname()).eq(this.subject_col).attr('tabindex', '0');
}
// Un-focus already focused elements (#1487123, #1487316, #1488600, #1488620)
- // It looks that window.focus() does the job for all browsers, but not Firefox (#1489058)
- $('iframe,:focus:not(body)').blur();
- window.focus();
+ if (focus_elem && focus_elem.length) {
+ // We now fix this by explicitly assigning focus to a dedicated link element
+ this.focus_noscroll(focus_elem);
+ }
+ else {
+ // It looks that window.focus() does the job for all browsers, but not Firefox (#1489058)
+ $('iframe,:focus:not(body)').blur();
+ window.focus();
+ }
- if (e || (e = window.event))
- rcube_event.cancel(e);
+ $(this.list).addClass('focus').removeAttr('tabindex');
+
+ // set internal focus pointer to first row
+ if (!this.last_selected)
+ this.select_first(CONTROL_KEY);
},
/**
* remove focus from the list
*/
-blur: function()
+blur: function(e)
{
- var n, id;
this.focused = false;
- for (n in this.selection) {
- id = this.selection[n];
- if (this.rows[id] && this.rows[id].obj) {
- $(this.rows[id].obj).removeClass('selected focused').addClass('unfocused');
- }
+
+ // avoid the table getting focus right again
+ var me = this;
+ setTimeout(function(){
+ $(me.list).removeClass('focus').attr('tabindex', '0');
+ }, 20);
+
+ if (this.last_selected && this.rows[this.last_selected]) {
+ $(this.rows[this.last_selected].obj)
+ .find(this.col_tagname()).eq(this.subject_col).removeAttr('tabindex');
}
},
+/**
+ * Focus the given element without scrolling the list container
+ */
+focus_noscroll: function(elem)
+{
+ var y = this.frame.scrollTop || this.frame.scrollY;
+ elem.focus();
+ this.frame.scrollTop = y;
+},
+
/**
* Set/unset the given column as hidden
@@ -522,6 +588,8 @@ click_row: function(e, id)
}
this.rows[id].clicked = now;
+ this.focus();
+
return false;
},
@@ -794,9 +862,9 @@ get_prev_row: function()
get_first_row: function()
{
if (this.rowcount) {
- var i, len, uid, rows = this.tbody.childNodes;
+ var i, uid, rows = this.tbody.childNodes;
- for (i=0, len=rows.length-1; i<len; i++)
+ for (i=0; i<rows.length; i++)
if (rows[i].id && (uid = this.get_row_uid(rows[i])))
return uid;
}
@@ -839,9 +907,10 @@ get_cell: function(row, index)
*/
select_row: function(id, mod_key, with_mouse)
{
- var select_before = this.selection.join(',');
+ var select_before = this.selection.join(','),
+ in_selection_before = this.in_selection(id);
- if (!this.multiselect)
+ if (!this.multiselect && with_mouse)
mod_key = 0;
if (!this.shift_start)
@@ -877,20 +946,26 @@ select_row: function(id, mod_key, with_mouse)
this.multi_selecting = true;
}
- // trigger event if selection changed
- if (this.selection.join(',') != select_before)
- this.triggerEvent('select');
-
- if (this.last_selected != 0 && this.rows[this.last_selected])
- $(this.rows[this.last_selected].obj).removeClass('focused');
+ if (this.last_selected && this.rows[this.last_selected]) {
+ $(this.rows[this.last_selected].obj).removeClass('focused')
+ .find(this.col_tagname()).eq(this.subject_col).removeAttr('tabindex');
+ }
// unselect if toggleselect is active and the same row was clicked again
- if (this.toggleselect && this.last_selected == id) {
+ if (this.toggleselect && in_selection_before && !mod_key) {
this.clear_selection();
- id = null;
}
- else
+ // trigger event if selection changed
+ else if (this.selection.join(',') != select_before) {
+ this.triggerEvent('select');
+ }
+
+ if (this.rows[id]) {
$(this.rows[id].obj).addClass('focused');
+ // set cursor focus to link inside selected row
+ if (this.focused)
+ this.focus_noscroll($(this.rows[id].obj).find(this.col_tagname()).eq(this.subject_col).attr('tabindex', '0'));
+ }
if (!this.selection.length)
this.shift_start = null;
@@ -1038,7 +1113,7 @@ select_all: function(filter)
this.highlight_row(n, true, true);
}
else {
- $(this.rows[n].obj).removeClass('selected').removeClass('unfocused');
+ $(this.rows[n].obj).removeClass('selected').removeAttr('aria-selected');
}
}
@@ -1095,14 +1170,16 @@ clear_selection: function(id, no_event)
else {
for (n in this.selection)
if (this.rows[this.selection[n]]) {
- $(this.rows[this.selection[n]].obj).removeClass('selected').removeClass('unfocused');
+ $(this.rows[this.selection[n]].obj).removeClass('selected').removeAttr('aria-selected');
}
this.selection = [];
}
- if (num_select && !this.selection.length && !no_event)
+ if (num_select && !this.selection.length && !no_event) {
this.triggerEvent('select');
+ this.last_selected = null;
+ }
},
@@ -1156,13 +1233,13 @@ highlight_row: function(id, multiple, norecur)
if (this.selection.length > 1 || !this.in_selection(id)) {
this.clear_selection(null, true);
this.selection[0] = id;
- $(this.rows[id].obj).addClass('selected');
+ $(this.rows[id].obj).addClass('selected').attr('aria-selected', 'true');
}
}
else {
if (!this.in_selection(id)) { // select row
this.selection.push(id);
- $(this.rows[id].obj).addClass('selected');
+ $(this.rows[id].obj).addClass('selected').attr('aria-selected', 'true');
if (!norecur && !this.rows[id].expanded)
this.highlight_children(id, true);
}
@@ -1172,7 +1249,7 @@ highlight_row: function(id, multiple, norecur)
a_post = this.selection.slice(p+1, this.selection.length);
this.selection = a_pre.concat(a_post);
- $(this.rows[id].obj).removeClass('selected').removeClass('unfocused');
+ $(this.rows[id].obj).removeClass('selected').removeAttr('aria-selected');
if (!norecur && !this.rows[id].expanded)
this.highlight_children(id, false);
}
@@ -1252,6 +1329,14 @@ key_press: function(e)
return rcube_event.cancel(e);
+ case 9: // Tab
+ this.blur();
+ break;
+
+ case 13: // Enter
+ if (!this.selection.length)
+ this.select_row(this.last_selected, mod_key, false);
+
default:
this.key_pressed = keyCode;
this.modkey = mod_key;
@@ -1311,9 +1396,17 @@ use_arrow_key: function(keyCode, mod_key)
}
if (new_row) {
+ // simulate ctr-key if no rows are selected
+ if (!mod_key && !this.selection.length)
+ mod_key = CONTROL_KEY;
+
this.select_row(new_row.uid, mod_key, false);
this.scrollto(new_row.uid);
}
+ else if (!new_row && !selected_row) {
+ // select the first row if none selected yet
+ this.select_first(CONTROL_KEY);
+ }
return false;
},
@@ -1324,7 +1417,8 @@ use_arrow_key: function(keyCode, mod_key)
*/
scrollto: function(id)
{
- var row = this.rows[id].obj;
+ var row = this.rows[id] ? this.rows[id].obj : null;
+
if (row && this.frame) {
var scroll_to = Number(row.offsetTop),
head_offset = 0;
@@ -1413,7 +1507,11 @@ drag_mouse_move: function(e)
$('> ' + self.col_tagname(), self.rows[uid].obj).each(function(n, cell) {
if (self.subject_col < 0 || (self.subject_col >= 0 && self.subject_col == n)) {
- var subject = $(cell).text();
+ // remove elements marked with "skip-on-drag" class
+ cell = $(cell).clone();
+ $(cell).find('.skip-on-drag').remove();
+
+ var subject = cell.text();
if (subject) {
// remove leading spaces
@@ -1708,3 +1806,6 @@ column_replace: function(from, to)
rcube_list_widget.prototype.addEventListener = rcube_event_engine.prototype.addEventListener;
rcube_list_widget.prototype.removeEventListener = rcube_event_engine.prototype.removeEventListener;
rcube_list_widget.prototype.triggerEvent = rcube_event_engine.prototype.triggerEvent;
+
+// static
+rcube_list_widget._instances = [];
diff --git a/program/js/tiny_mce/langs/ar.js b/program/js/tiny_mce/langs/ar.js
deleted file mode 100644
index 0efcb51bc..000000000
--- a/program/js/tiny_mce/langs/ar.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({ar:{common:{"more_colors":"\u0627\u0644\u0645\u0632\u064a\u062f \u0645\u0646 \u0627\u0644\u0623\u0644\u0648\u0627\u0646","invalid_data":"\u062e\u0637\u0623.: \u062a\u0645 \u0625\u062f\u062e\u0627\u0644 \u0642\u064a\u0645 \u063a\u064a\u0631 \u0635\u062d\u064a\u062d\u0647 \u060c \u0647\u0630\u0647 \u0627\u0644\u0642\u064a\u0645 \u0628\u0627\u0644\u0644\u0648\u0646 \u0627\u0644\u0627\u062d\u0645\u0631","popup_blocked":"\u0639\u0630\u0631\u0627 \u060c\u0625\u062f\u0627\u0631\u0629 \u0639\u0631\u0636 \u0627\u0644\u0646\u0648\u0641\u0630 \u0627\u0644\u0645\u0646\u0628\u062b\u0642\u0647 \u0627\u0648\u0642\u0641\u062a \u0646\u0627\u0641\u0630\u0647 \u062a\u0648\u0641\u0631 \u062e\u062f\u0645\u0647 \u0645\u0646 \u062e\u062f\u0645\u0627\u062a \u0627\u0644\u0628\u0631\u0646\u0627\u0645\u062c . \u064a\u062c\u0628 \u0627\u0644\u0633\u0645\u0627\u062d \u0644\u0644\u0646\u0648\u0627\u0641\u0630 \u0627\u0644\u0645\u0646\u0628\u062b\u0642\u0647 \u0644\u0643\u0649 \u064a\u0639\u0645\u0644 \u0627\u0644\u0628\u0631\u0646\u0627\u0645\u062c \u0628\u0643\u0641\u0627\u0626\u0647.","clipboard_no_support":"\u062d\u0627\u0644\u064a\u0627 \u063a\u064a\u0631 \u0645\u0639\u062a\u0645\u062f\u0629 \u0645\u0646 \u0642\u0628\u0644 \u0627\u0644\u0645\u062a\u0635\u0641\u062d \u0627\u0644\u062e\u0627\u0635 \u0628\u0643 \u060c \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0627\u062e\u062a\u0635\u0627\u0631\u0627\u062a \u0644\u0648\u062d\u0629 \u0627\u0644\u0645\u0641\u0627\u062a\u064a\u062d \u0628\u062f\u0644\u0627 \u0645\u0646 \u0630\u0644\u0643.","clipboard_msg":"\u0646\u0633\u062e / \u0642\u0635 / \u0644\u0635\u0642 \u063a\u064a\u0631 \u0645\u062a\u0648\u0641\u0631 \u0641\u064a \u0645\u0648\u0632\u064a\u0644\u0627 \u0648\u0641\u0627\u064a\u0631\u0641\u0648\u0643\u0633.\n\u062a\u0631\u064a\u062f \u0627\u0644\u0645\u0632\u064a\u062f \u0645\u0646 \u0627\u0644\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u062d\u0648\u0644 \u0647\u0630\u0647 \u0627\u0644\u0645\u0634\u0643\u0644\u0629\u061f","not_set":"-- Not set --","class_name":"\u0627\u0644\u062f\u0631\u062c\u0629",browse:"\u062a\u0635\u0641\u062d",close:"\u0625\u063a\u0644\u0627\u0642",cancel:"\u0625\u0644\u063a\u0627\u0621",update:"\u062a\u062d\u062f\u064a\u062b",insert:"\u0625\u062f\u0631\u0627\u062c",apply:"\u062a\u0637\u0628\u064a\u0642","edit_confirm":"\u0647\u0644 \u062a\u0631\u063a\u0628 \u0641\u0649 \u0625\u0633\u062a\u062e\u062f\u0627\u0645 \u0647\u0630\u0647 \u0627\u0644\u0645\u0633\u0627\u062d\u0647 \u0643\u0640\u0640 WYSIWYG\u061f","invalid_data_number":"{#field} \u064a\u062c\u0628 \u0627\u0646 \u064a\u0643\u0648\u0646 \u0631\u0642\u0645","invalid_data_min":"{#field} \u064a\u062c\u0628 \u0627\u0646 \u062a\u0643\u0648\u0646 \u0631\u0642\u0645 \u0627\u0643\u0628\u0631 \u0645\u0646 {#min}","invalid_data_size":"{#field} \u064a\u062c\u0628 \u0627\u0646 \u062a\u0643\u0648\u0646 \u0631\u0642\u0645 \u0627\u0648 \u0646\u0633\u0628\u0647 \u0645\u0626\u0648\u064a\u0647",value:"(\u0627\u0644\u0642\u064a\u0645\u0629)"},contextmenu:{full:"\u0643\u0627\u0645\u0644",right:"\u0627\u0644\u062d\u0642",center:"\u0645\u0631\u0643\u0632",left:"\u0628\u0642\u064a",align:"\u0645\u062d\u0627\u0630\u0627\u0629"},insertdatetime:{"day_short":"\u0627\u0644\u0623\u062d\u062f,\u0627\u0644\u0627\u062b\u0646\u064a\u0646,\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621,\u0627\u0644\u0627\u0631\u0628\u0639\u0627\u0621,\u0627\u0644\u062e\u0645\u064a\u0633,\u0627\u0644\u062c\u0645\u0639\u0629,\u0627\u0644\u0633\u0628\u062a,\u0627\u0644\u0623\u062d\u062f","day_long":"\u0627\u0644\u0623\u062d\u062f \u060c \u0627\u0644\u0627\u062b\u0646\u064a\u0646 \u060c \u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 \u060c \u0627\u0644\u0627\u0631\u0628\u0639\u0627\u0621 \u060c \u0627\u0644\u062e\u0645\u064a\u0633 \u060c \u0627\u0644\u062c\u0645\u0639\u0629 \u060c \u0627\u0644\u0633\u0628\u062a \u060c \u0627\u0644\u0623\u062d\u062f","months_short":"\u064a\u0646\u0627\u064a\u0631,\u0641\u0628\u0631\u0627\u064a\u0631,\u0645\u0627\u0631\u0633,\u0623\u0628\u0631\u064a\u0644,\u0645\u0627\u064a\u0648,\u064a\u0648\u0646\u064a\u0648,\u064a\u0648\u0644\u064a\u0648,\u0623\u063a\u0633\u0637\u0633,\u0633\u0628\u062a\u0645\u0628\u0631,\u0623\u0643\u062a\u0648\u0628\u0631,\u0646\u0648\u0641\u0645\u0628\u0631,\u062f\u064a\u0633\u0645\u0628\u0631","months_long":"\u064a\u0646\u0627\u064a\u0631,\u0641\u0628\u0631\u0627\u064a\u0631,\u0622\u0630\u0627\u0631/\u0645\u0627\u0631\u0633,\u0646\u064a\u0633\u0627\u0646/\u0627\u0628\u0631\u064a\u0644,\u0623\u064a\u0627\u0631/\u0645\u0627\u064a\u0648,\u062d\u0632\u064a\u0631\u0627\u0646/\u064a\u0648\u0646\u064a\u0648,\u062a\u0645\u0648\u0632/\u064a\u0648\u0644\u064a\u0648,\u0622\u0628/\u0627\u063a\u0633\u0637\u0633,\u0623\u064a\u0644\u0648\u0644/\u0633\u0628\u062a\u0645\u0628\u0631,\u0623\u0643\u062a\u0648\u0628\u0631,\u0646\u0648\u0641\u0645\u0628\u0631,\u062f\u064a\u0633\u0645\u0628\u0631","inserttime_desc":"\u0627\u062f\u0631\u0627\u062c \u0627\u0644\u0648\u0642\u062a","insertdate_desc":"\u0627\u062f\u0631\u0627\u062c \u0627\u0644\u062a\u0627\u0631\u064a\u062e","time_fmt":"%H:%M:%S","date_fmt":"%Y-%m-%d"},print:{"print_desc":"\u0637\u0628\u0627\u0639\u0629"},preview:{"preview_desc":"\u0645\u0639\u0627\u064a\u0646\u0629"},directionality:{"rtl_desc":"\u0627\u0644\u0627\u062a\u062c\u0627\u0647 \u0645\u0646 \u0627\u0644\u064a\u0645\u064a\u0646 \u0644\u0644\u064a\u0633\u0627\u0631","ltr_desc":"\u0627\u0644\u0627\u062a\u062c\u0627\u0647 \u0645\u0646 \u0627\u0644\u064a\u0633\u0627\u0631 \u0627\u0644\u0649 \u0627\u0644\u064a\u0645\u064a\u0646"},layer:{content:"\u0637\u0628\u0642\u0647 \u062c\u062f\u064a\u062f\u0647 ...","absolute_desc":"\u062c\u0639\u0644 \u0627\u0644\u0637\u0628\u0642\u0647 \u062d\u0631\u0647","backward_desc":"\u0646\u0642\u0644 \u0644\u0644\u062e\u0644\u0641","forward_desc":"\u0646\u0642\u0644 \u0644\u0644\u0627\u0645\u0627\u0645","insertlayer_desc":"\u0625\u062f\u0631\u0627\u062c \u0637\u0628\u0642\u0629 \u062c\u062f\u064a\u062f\u0629"},save:{"save_desc":"\u062d\u0641\u0638","cancel_desc":"\u0625\u0644\u063a\u0627\u0621 \u0643\u0627\u0641\u0629 \u0627\u0644\u062a\u063a\u064a\u064a\u0631\u0627\u062a"},nonbreaking:{"nonbreaking_desc":"\u0625\u062f\u0631\u0627\u062c \u062d\u0631\u0641 \u0645\u0633\u0627\u0641\u0629 \u063a\u064a\u0631 \u0645\u0646\u0642\u0633\u0645\u0629"},iespell:{download:"\u0627\u0644\u0645\u062f\u0642\u0642 \u0627\u0644\u0627\u0645\u0644\u0627\u0626\u0649 \u063a\u064a\u0631 \u0645\u0631\u0643\u0628 \u0647\u0644 \u062a\u0631\u064a\u062f \u062a\u0631\u0643\u064a\u0628\u0647 \u0627\u0644\u0627\u0646","iespell_desc":"\u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u0645\u062f\u0642\u0642 \u0627\u0644\u0627\u0645\u0644\u0627\u0626\u0649"},advhr:{"advhr_desc":"\u0645\u0633\u0637\u0631\u0647 \u0627\u0641\u0642\u064a\u0647","delta_height":"","delta_width":""},emotions:{"delta_height":"","delta_width":"","emotions_desc":"\u0627\u0644\u0631\u0633\u0648\u0645 \u0627\u0644\u062a\u0639\u0628\u064a\u0631\u064a\u0647"},searchreplace:{"replace_desc":"\u0628\u062d\u062b/\u0627\u0633\u062a\u0628\u062f\u0627\u0644","delta_width":"\u0627\u0644\u062a\u063a\u064a\u0631 \u0641\u0649 \u0627\u0644\u0639\u0631\u0636","delta_height":"\u0627\u0644\u062a\u063a\u064a\u0631 \u0641\u0649 \u0627\u0644\u0625\u0631\u062a\u0641\u0627\u0639","search_desc":"\u0628\u062d\u062b"},advimage:{"image_desc":"\u0627\u0636\u0641/\u0639\u062f\u0644 \u0635\u0648\u0631\u0647","delta_width":"","delta_height":""},advlink:{"link_desc":"\u0627\u0636\u0641/\u0639\u062f\u0644 \u0631\u0627\u0628\u0637","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"\u0627\u0636\u0641/\u0639\u062f\u0644 \u062e\u0627\u0635\u064a\u0647","ins_desc":"\u0627\u0644\u0625\u0636\u0627\u0641\u0647","del_desc":"\u0627\u0644\u062d\u0630\u0641","acronym_desc":"Acronym","abbr_desc":"Abbreviation","cite_desc":"Citation","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{"delta_height":"","delta_width":"",desc:"Edit CSS Style"},paste:{"plaintext_mode":"\u0644\u0635\u0642 \u0627\u0644\u0622\u0646 \u0641\u064a \u0648\u0636\u0639 \u0627\u0644\u0646\u0635 \u0627\u0644\u0639\u0627\u062f\u064a. \u0627\u0646\u0642\u0631 \u0645\u0631\u0629 \u0623\u062e\u0631\u0649 \u0644\u0644\u062a\u0628\u062f\u064a\u0644 \u0625\u0644\u0649 \u0627\u0644\u0648\u0636\u0639 \u0644\u0635\u0642 \u0627\u0644\u0639\u0627\u062f\u064a\u0629.","plaintext_mode_sticky":"\u0644\u0635\u0642 \u0627\u0644\u0622\u0646 \u0641\u064a \u0648\u0636\u0639 \u0627\u0644\u0646\u0635 \u0627\u0644\u0639\u0627\u062f\u064a. \u0627\u0646\u0642\u0631 \u0645\u0631\u0629 \u0623\u062e\u0631\u0649 \u0644\u0644\u062a\u0628\u062f\u064a\u0644 \u0625\u0644\u0649 \u0627\u0644\u0648\u0636\u0639 \u0644\u0635\u0642 \u0627\u0644\u0639\u0627\u062f\u064a\u0629. \u0648\u0628\u0639\u062f \u0644\u0635\u0642 \u0634\u064a\u0621 \u064a\u062a\u0645 \u0625\u0631\u062c\u0627\u0639 \u0625\u0644\u0649 \u0648\u0636\u0639 \u0644\u0635\u0642 \u0627\u0644\u0639\u0627\u062f\u064a\u0629","selectall_desc":"\u062d\u062f\u062f \u0643\u0627\u0641\u0629","paste_word_desc":"\u0644\u0635\u0642 \u0645\u0646 \u0648\u0648\u0631\u062f","paste_text_desc":"\u0644\u0635\u0642 \u0643\u0646\u0635 \u0639\u0627\u062f\u064a"},"paste_dlg":{"word_title":"\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0639\u0644\u0649 \u0644\u0648\u062d\u0629 \u0627\u0644\u0645\u0641\u0627\u062a\u064a\u062d \u0644\u0644\u0635\u0642 \u0627\u0644\u0646\u0635 \u0641\u064a \u0627\u0644\u0625\u0637\u0627\u0631.( CTRL+V )","text_linebreaks":"\u0627\u062d\u062a\u0641\u0638 \u0628\u0641\u0648\u0627\u0635\u0644 \u0627\u0644\u0623\u0633\u0637\u0631","text_title":"\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0639\u0644\u0649 \u0644\u0648\u062d\u0629 \u0627\u0644\u0645\u0641\u0627\u062a\u064a\u062d \u0644\u0644\u0635\u0642 \u0627\u0644\u0646\u0635 \u0641\u064a \u0627\u0644\u0625\u0637\u0627\u0631.( CTRL+V )"},table:{"merge_cells_delta_height":"0","merge_cells_delta_width":"0","table_delta_height":"0","table_delta_width":"0","cellprops_delta_height":"0","cellprops_delta_width":"0","rowprops_delta_height":"0","rowprops_delta_width":"0",cell:"\u062e\u0644\u064a\u0629",col:"\u0639\u0627\u0645\u0648\u062f",row:"\u0635\u0641",del:"\u062d\u0630\u0641 \u062c\u062f\u0648\u0644","copy_row_desc":"\u0646\u0633\u062e \u0635\u0641 \u0645\u0646 \u062c\u062f\u0648\u0644","cut_row_desc":"\u0642\u0635 \u0635\u0641 \u0645\u0646 \u062c\u062f\u0648\u0644","paste_row_after_desc":"\u0644\u0635\u0642 \u0635\u0641 \u0627\u0644\u062c\u062f\u0648\u0644 \u0628\u0639\u062f","paste_row_before_desc":"\u0644\u0635\u0642 \u0635\u0641 \u0627\u0644\u062c\u062f\u0648\u0644 \u0642\u0628\u0644","props_desc":"\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u062c\u062f\u0648\u0644","cell_desc":"\u062e\u0635\u0627\u0626\u0635 \u062e\u0644\u064a\u0629 \u0645\u0646 \u0627\u0644\u062c\u062f\u0648\u0644","row_desc":"\u062e\u0635\u0627\u0626\u0635 \u0635\u0641 \u0645\u0646 \u0627\u0644\u062c\u062f\u0648\u0644","merge_cells_desc":"\u062f\u0645\u062c \u062e\u0644\u0627\u064a\u0627 \u062c\u062f\u0648\u0644","split_cells_desc":"\u0627\u0646\u0642\u0633\u0627\u0645 \u062e\u0644\u0627\u064a\u0627 \u0627\u0644\u062c\u062f\u0648\u0644 \u0627\u0644\u0645\u062f\u0645\u062c\u0629","delete_col_desc":"\u0625\u0632\u0627\u0644\u0629 \u0639\u0645\u0648\u062f","col_after_desc":"\u0625\u062f\u0631\u0627\u062c \u0639\u0645\u0648\u062f \u0628\u0639\u062f","col_before_desc":"\u0625\u062f\u0631\u0627\u062c \u0639\u0645\u0648\u062f \u0642\u0628\u0644","delete_row_desc":"\u062d\u0630\u0641 \u0635\u0641","row_after_desc":"\u0625\u062f\u0631\u0627\u062c \u0635\u0641 \u0628\u0639\u062f","row_before_desc":"\u0625\u062f\u0631\u0627\u062c \u0635\u0641 \u0642\u0628\u0644",desc:"\u0625\u062f\u0631\u0627\u062c \u062c\u062f\u0648\u0644 \u062c\u062f\u064a\u062f"},autosave:{"warning_message":"\u0633\u062a\u0641\u0642\u062f \u0627\u0644\u0645\u062d\u062a\u0648\u064a\u0627\u062a \u0641\u0649 \u062d\u0627\u0644\u0629 \u0627\u0644\u0625\u0633\u062a\u0639\u0627\u062f\u0647 \u0645\u0646 \u0627\u0644\u062d\u0641\u0638 \u0627\u0644\u062a\u0644\u0642\u0627\u0626\u0649.\n\n\u0647\u0644 \u0627\u0646\u062a \u0645\u062a\u0623\u0643\u062f \u0627\u0646\u0643 \u062a\u0631\u064a\u062f \u0627\u0644\u0625\u0633\u062a\u0639\u0627\u062f\u0647 \u0645\u0646 \u0627\u0644\u062d\u0641\u0638 \u0627\u0644\u062a\u0644\u0642\u0627\u0626\u0649\u061f.","restore_content":"\u0627\u0633\u062a\u0639\u0627\u062f\u0629 \u0627\u0644\u0645\u062d\u062a\u0648\u064a\u0627\u062a \u0645\u0646 \u0627\u0644\u062d\u0641\u0638 \u0627\u0644\u062a\u0644\u0642\u0627\u0626\u0649.","unload_msg":"\u0633\u064a\u062a\u0645 \u0641\u0642\u062f \u0627\u0644\u062a\u063a\u064a\u064a\u0631\u0627\u062a \u0625\u0630\u0627 \u062a\u0631\u0643\u062a \u0627\u0644\u0635\u0641\u062d\u0647"},fullscreen:{desc:"\u062a\u0628\u062f\u064a\u0644 \u0648\u0636\u0639 \u0645\u0644\u0621 \u0627\u0644\u0634\u0627\u0634\u0629"},media:{"delta_height":"0","delta_width":"0",edit:"\u0639\u062f\u0644 \u0645\u064a\u062f\u064a\u0627",desc:"\u0627\u0636\u0641/\u0639\u062f\u0644 \u0645\u064a\u062f\u064a\u0627"},fullpage:{desc:"Document properties","delta_width":"","delta_height":""},template:{desc:"\u0627\u0636\u0641 \u0627\u0644\u0645\u062d\u062a\u0648\u064a\u0627\u062a \u0627\u0644\u062c\u0627\u0647\u0632\u0647"},visualchars:{desc:"Visual control characters on/off."},spellchecker:{desc:"\u0627\u0644\u0645\u062f\u0642\u0642 \u0627\u0644\u0625\u0645\u0644\u0627\u0626\u064a Toggle",menu:"\u0625\u0639\u062f\u0627\u062f\u0627\u062a \u0627\u0644\u0645\u062f\u0642\u0642 \u0627\u0644\u0625\u0645\u0644\u0627\u0626\u064a","ignore_word":"\u062a\u062c\u0627\u0647\u0644 \u0627\u0644\u0643\u0644\u0645\u0629","ignore_words":"\u062a\u062c\u0627\u0647\u0644 \u0627\u0644\u0643\u0644",langs:"\u0627\u0644\u0644\u063a\u0627\u062a",wait:"\u0627\u0644\u0631\u062c\u0627\u0621 \u0627\u0644\u0627\u0646\u062a\u0638\u0627\u0631",sug:"\u0627\u0644\u0625\u0642\u062a\u0631\u0627\u062d\u0627\u062a","no_sug":"\u0644\u0627 \u064a\u0648\u062c\u062f \u0625\u0642\u062a\u0631\u0627\u062d\u0627\u062a","no_mpell":"\u0644\u0645 \u064a\u062a\u0645 \u0627\u0644\u0639\u062b\u0648\u0631 \u0639\u0644\u0649 \u0623\u062e\u0637\u0627\u0621 \u0641\u064a \u0627\u0644\u062a\u0647\u062c\u0626\u0629","learn_word":"Learn word"},pagebreak:{desc:"\u0627\u0636\u0641 \u0641\u0627\u0635\u0644 \u0635\u0641\u062d\u0647"},advlist:{types:"Types",def:"Default","lower_alpha":"Lower alpha","lower_greek":"Lower greek","lower_roman":"Lower roman","upper_alpha":"Upper alpha","upper_roman":"Upper roman",circle:"Circle",disc:"Disc",square:"Square"},colors:{"333300":"\u0632\u064a\u062a\u064a \u062f\u0627\u0643\u0646","993300":"\u0628\u0631\u062a\u0642\u0627\u0644 \u0645\u062d\u0631\u0648\u0642","000000":"\u0623\u0633\u0648\u062f","003300":"\u0623\u062e\u0636\u0631 \u062f\u0627\u0643\u0646","003366":"\u0623\u0632\u0631\u0642 \u062f\u0627\u0643\u0646","000080":"\u0628\u062d\u0631\u064a","333399":"\u0646\u064a\u0644\u064a","333333":"\u0631\u0645\u0627\u062f\u064a \u062f\u0627\u0643\u0646 \u062c\u062f\u0627","800000":"\u0643\u0633\u062a\u0646\u0627\u0626\u064a",FF6600:"\u0628\u0631\u062a\u0642\u0627\u0644\u064a","808000":"\u0632\u064a\u062a\u064a","008000":"\u0623\u062e\u0636\u0631","008080":"\u0623\u0632\u0631\u0642 \u0623\u062e\u0636\u0631","0000FF":"\u0623\u0632\u0631\u0642","666699":"\u0631\u0645\u0627\u062f\u064a \u0623\u0632\u0631\u0642","808080":"\u0631\u0645\u0627\u062f\u064a",FF0000:"\u0623\u062d\u0645\u0631",FF9900:"\u0643\u0647\u0631\u0645\u0627\u0646\u064a","99CC00":"\u0623\u0635\u0641\u0631 \u0623\u062e\u0636\u0631","339966":"\u0627\u062e\u0636\u0631 \u0628\u062d\u0631\u064a","33CCCC":"\u0641\u064a\u0631\u0648\u0632\u064a","3366FF":"\u0627\u0644\u0623\u0632\u0631\u0642 \u0627\u0644\u0645\u0644\u0643\u064a","800080":"\u0623\u0631\u062c\u0648\u0627\u0646\u064a","999999":"\u0631\u0645\u0627\u062f\u064a \u0645\u062a\u0648\u0633\u0637",FF00FF:"\u0641\u0648\u0634\u064a",FFCC00:"\u0630\u0647\u0628\u064a",FFFF00:"\u0623\u0635\u0641\u0631","00FF00":"\u0644\u064a\u0645\u0648\u0646\u064a","00FFFF":"\u0645\u0627\u0626\u064a","00CCFF":"\u0633\u0645\u0627\u0648\u064a","993366":"\u0628\u0646\u064a",C0C0C0:"\u0641\u0636\u064a",FF99CC:"\u0632\u0647\u0631\u064a",FFCC99:"\u062e\u0648\u062e\u064a",FFFF99:"\u0623\u0635\u0641\u0631 \u0645\u0636\u064a\u0621",CCFFCC:"\u0623\u062e\u0636\u0631 \u0634\u0627\u062d\u0628",CCFFFF:"\u0633\u0645\u0627\u0648\u064a \u0634\u0627\u062d\u0628","99CCFF":"\u0633\u0645\u0627\u0648\u064a \u0645\u0636\u064a\u0621",CC99FF:"\u0628\u0646\u0641\u0633\u062c\u064a",FFFFFF:"\u0623\u0628\u064a\u0636"},aria:{"rich_text_area":"\u0645\u0633\u0627\u062d\u0629 \u0627\u0644\u062a\u0639\u062f\u064a\u0644"},wordcount:{words:"\u0639\u062f\u062f \u0627\u0644\u0643\u0644\u0645\u0627\u062a :"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/az.js b/program/js/tiny_mce/langs/az.js
deleted file mode 100644
index 2de458701..000000000
--- a/program/js/tiny_mce/langs/az.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({az:{common:{"more_colors":"Daha \u00e7ox r\u0259ng","invalid_data":"X\u0259ta: Q\u0131rm\u0131z\u0131 il\u0259 qeyd edilmi\u015fl\u0259r s\u0259hv daxil edilib.","popup_blocked":"Ba\u011f\u0131\u015flay\u0131n, lakin sizin \u00fcz\u0259 \u00e7\u0131xan p\u0259nc\u0259r\u0259l\u0259riniz funksiya p\u0259nc\u0259r\u0259sinin qar\u015f\u0131s\u0131n\u0131 ald\u0131. G\u0259r\u0259k \u00fcz\u0259 \u00e7\u0131xan p\u0259nc\u0259r\u0259l\u0259rin bloklama nizamlamas\u0131n\u0131 l\u0259\u011fv ed\u0259siniz ki, al\u0259td\u0259n tam istifad\u0259 ed\u0259 bil\u0259siniz.","clipboard_no_support":"Hal-haz\u0131rda b\u0259l\u0259d\u00e7iniz t\u0259r\u0259find\u0259n d\u0259st\u0259kl\u0259nmir. Klaviatura q\u0131saldmas\u0131ndan istifad\u0259 edin.","clipboard_msg":"Kopyalama/\u018flav\u0259 et Mozilla v\u0259 Firefox-da i\u015fl\u0259mir.\nN\u0259 ba\u015f verdiyi haqda daha \u0259trafl\u0131 \u00f6yr\u0259nm\u0259k ist\u0259yirsiniz?","not_set":"-- M\u00fc\u0259yy\u0259n edilm\u0259yib --","class_name":"Sinif",browse:"G\u00f6zd\u0259n ke\u00e7ir",close:"Ba\u011fla",cancel:"L\u0259\u011fv et",update:"Yenil\u0259",insert:"\u018flav\u0259 et",apply:"T\u0259tbiq et","edit_confirm":"Siz haz\u0131rki m\u0259tn sah\u0259si \u00fc\u00e7\u00fcn WYSIWYG rejimi istifad\u0259 etm\u0259k ist\u0259yirsiniz?","invalid_data_number":"{#field} must be a number","invalid_data_min":"{#field} must be a number greater than {#min}","invalid_data_size":"{#field} must be a number or percentage",value:"(value)"},contextmenu:{full:"Tam",right:"Sa\u011fa",center:"M\u0259rk\u0259z il\u0259",left:"Sola",align:"Tarazla\u015fd\u0131r"},insertdatetime:{"day_short":"B,Be,\u00c7a,\u00c7,Ca,C,\u015e,B","day_long":"Bazar,Bazar ert\u0259si,\u00c7\u0259r\u015f\u0259nb\u0259 ax\u015fam\u0131,\u00c7\u0259r\u015f\u0259nb\u0259,C\u00fcm\u0259 ax\u015fam\u0131,C\u00fcm\u0259,\u015e\u0259nb\u0259,Bazar","months_short":"Yan,Fev,Mar,Apr,May,\u0130yu,\u0130yl,Avq,Sen,Okt,Noy,Dek","months_long":"Yanvar,Fevral,Mart,Aprel,May,\u0130yun,\u0130yul,Avqust,Sentyabr,Oktyabr,Noyabr,Dekabr","inserttime_desc":"Vaxt \u0259lav\u0259 et","insertdate_desc":"Tarix \u0259lav\u0259 et","time_fmt":"%H:%M:%S","date_fmt":"%d-%m-%Y"},print:{"print_desc":"\u00c7ap et"},preview:{"preview_desc":"\u0130lkin bax\u0131\u015f"},directionality:{"rtl_desc":"\u0130stiqam\u0259t sa\u011fdan-sola","ltr_desc":"\u0130stiqam\u0259t soldan-sa\u011fa"},layer:{content:"Yeni qat...","absolute_desc":"M\u00fctl\u0259q m\u00f6vqeni yand\u0131r/s\u00f6nd\u00fcr","backward_desc":"Geri k\u00f6\u00e7\u00fcr","forward_desc":"\u0130r\u0259li k\u00f6\u00e7\u00fcr","insertlayer_desc":"Yeni qat \u0259lav\u0259 et"},save:{"save_desc":"Yadda saxla","cancel_desc":"B\u00fct\u00fcn d\u0259yi\u015fiklikl\u0259ri l\u0259\u011fv et"},nonbreaking:{"nonbreaking_desc":"Q\u0131r\u0131lmaz bo\u015fluq \u0259lav\u0259 et"},iespell:{download:"ieSpell a\u015fkar edilm\u0259yib. Y\u00fckl\u0259nilsin?","iespell_desc":"Orfoqrafiyan\u0131 yoxla"},advhr:{"advhr_desc":"\u00dcf\u00fcqi x\u0259tt","delta_height":"","delta_width":""},emotions:{"emotions_desc":"Smayllar","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"Axtar/D\u0259yi\u015f","search_desc":"Axtar","delta_width":"","delta_height":""},advimage:{"image_desc":"\u015e\u0259kli \u0259lav\u0259/redakt\u0259 et","delta_width":"","delta_height":""},advlink:{"link_desc":"Ke\u00e7idi \u0259lav\u0259/redakt\u0259 et","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"Atribut \u0259lav\u0259/redakt\u0259 et","ins_desc":"\u018flav\u0259 edilmi\u015f m\u0259tn","del_desc":"Silinmi\u015f m\u0259tn","acronym_desc":"Akronim","abbr_desc":"Abbreviatura","cite_desc":"Sitat","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{"delta_width":"35",desc:"CSS stili redakt\u0259 et","delta_height":""},paste:{"selectall_desc":"Ham\u0131s\u0131n\u0131 se\u00e7","paste_word_desc":"Word-d\u0259n \u0259lav\u0259 et","paste_text_desc":"Sad\u0259 m\u0259tn kimi \u0259lav\u0259 et","plaintext_mode":"Paste is now in plain text mode. Click again to toggle back to regular paste mode.","plaintext_mode_sticky":"Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode."},"paste_dlg":{"word_title":"P\u0259nc\u0259r\u0259y\u0259 s\u00f6z \u0259lav\u0259 etm\u0259k \u00fc\u00e7\u00fcn CTRL+V klavi\u015f birl\u0259\u015fm\u0259sini istifad\u0259 edin.","text_linebreaks":"S\u0259tr s\u0131nmalar\u0131n\u0131 saxla","text_title":"P\u0259nc\u0259r\u0259y\u0259 m\u0259tn \u0259lav\u0259 etm\u0259k \u00fc\u00e7\u00fcn CTRL+V klavi\u015f birl\u0259\u015fm\u0259sini istifad\u0259 edin."},table:{cell:"\u00d6z\u0259k",col:"S\u00fctun",row:"S\u0259tr",del:"C\u0259dv\u0259li sil","copy_row_desc":"S\u0259tri kopyala","cut_row_desc":"S\u0259tri k\u0259s","paste_row_after_desc":"S\u0259tr c\u0259dv\u0259lini sonra \u0259lav\u0259 et:","paste_row_before_desc":"S\u0259tr c\u0259dv\u0259lini \u0259vv\u0259l \u0259lav\u0259 et:","props_desc":"C\u0259dv\u0259l x\u00fcsusiyy\u0259tl\u0259ri","cell_desc":"\u00d6z\u0259k x\u00fcsusiyy\u0259tl\u0259ri","row_desc":"S\u0259tr x\u00fcsusiyy\u0259tl\u0259ri","merge_cells_desc":"\u00d6z\u0259kl\u0259ri s\u00fcz","split_cells_desc":"S\u00fcz\u00fclm\u00fc\u015f \u00f6z\u0259kl\u0259ri ay\u0131r","delete_col_desc":"S\u00fctunu sil","col_after_desc":"S\u00fctunu sonra \u0259lav\u0259 et:","col_before_desc":"S\u00fctunu \u0259vv\u0259l \u0259lav\u0259 et:","delete_row_desc":"S\u0259tri sil","row_after_desc":"S\u0259tri sonra \u0259vv\u0259l et:","row_before_desc":"S\u0259tri \u0259vv\u0259l \u0259lav\u0259 et:",desc:"Yeni c\u0259dv\u0259l \u0259lav\u0259 et","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"unload_msg":"\u018fg\u0259r s\u0259hif\u0259d\u0259n gets\u0259niz b\u00fct\u00fcn d\u0259yi\u015fiklikl\u0259r itiril\u0259c\u0259k.","warning_message":"If you restore the saved content, you will lose all the content that is currently in the editor.\n\nAre you sure you want to restore the saved content?","restore_content":"Restore auto-saved content."},fullscreen:{desc:"Tamekran rejimini yand\u0131r/s\u00f6nd\u00fcr"},media:{edit:"Mediya-obyekti redakt\u0259 et",desc:"mediya-obyekti \u0259lav\u0259/redakt\u0259 et","delta_height":"","delta_width":""},fullpage:{desc:"S\u0259n\u0259d nizamlamalar\u0131","delta_width":"","delta_height":""},template:{desc:"\u018fvv\u0259ld\u0259n m\u00fc\u0259yy\u0259n edil\u0259n \u015fablon daxil et"},visualchars:{desc:"Vizual idar\u0259 xarakterl\u0259rini yand\u0131r/s\u00f6nd\u00fcr."},spellchecker:{desc:"Orfoqraf\u0131 yoxla",menu:"Orfoqrafiya nizamlamas\u0131n\u0131","ignore_word":"S\u00f6zl\u00fc iqnor et","ignore_words":"H\u0259r \u015feyi iqnor et",langs:"Dill\u0259r",wait:"Z\u0259hm\u0259t olmasa, g\u00f6zl\u0259yin...",sug:"Variantlar","no_sug":"Variantlar yoxdur","no_mpell":"X\u0259ta a\u015fkar edilm\u0259di.","learn_word":"Learn word"},pagebreak:{desc:"S\u0259hif\u0259 b\u00f6l\u0259nini \u0259lav\u0259 et."},advlist:{types:"Types",def:"Default","lower_alpha":"Lower Alpha","lower_greek":"Lower Greek","lower_roman":"Lower Roman","upper_alpha":"Upper Alpha","upper_roman":"Upper Roman",circle:"Circle",disc:"Disc",square:"Square"},colors:{"333300":"Dark olive","993300":"Burnt orange","000000":"Black","003300":"Dark green","003366":"Dark azure","000080":"Navy Blue","333399":"Indigo","333333":"Very dark gray","800000":"Maroon",FF6600:"Orange","808000":"Olive","008000":"Green","008080":"Teal","0000FF":"Blue","666699":"Grayish blue","808080":"Gray",FF0000:"Red",FF9900:"Amber","99CC00":"Yellow green","339966":"Sea green","33CCCC":"Turquoise","3366FF":"Royal blue","800080":"Purple","999999":"Medium gray",FF00FF:"Magenta",FFCC00:"Gold",FFFF00:"Yellow","00FF00":"Lime","00FFFF":"Aqua","00CCFF":"Sky blue","993366":"Brown",C0C0C0:"Silver",FF99CC:"Pink",FFCC99:"Peach",FFFF99:"Light yellow",CCFFCC:"Pale green",CCFFFF:"Pale cyan","99CCFF":"Light sky blue",CC99FF:"Plum",FFFFFF:"White"},aria:{"rich_text_area":"Rich Text Area"},wordcount:{words:"Words"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/bg.js b/program/js/tiny_mce/langs/bg.js
deleted file mode 100644
index d1882693a..000000000
--- a/program/js/tiny_mce/langs/bg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({bg:{common:{"more_colors":"\u041e\u0449\u0435 \u0446\u0432\u0435\u0442\u043e\u0432\u0435","invalid_data":"\u0413\u0440\u0435\u0448\u043a\u0430: \u0412\u044a\u0432\u0435\u0434\u0435\u043d\u0438 \u0441\u0430 \u043d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u0438 \u0441\u0442\u043e\u0439\u043d\u043e\u0441\u0442\u0438, \u0442\u0435 \u0441\u0430 \u043c\u0430\u0440\u043a\u0438\u0440\u0430\u043d\u0438 \u0432 \u0447\u0435\u0440\u0432\u0435\u043d\u043e.","popup_blocked":"\u0421\u044a\u0436\u0430\u043b\u044f\u0432\u0430\u043c\u0435, \u043d\u043e \u0437\u0430\u0431\u0435\u043b\u044f\u0437\u0430\u0445\u043c\u0435, \u0447\u0435 \u0432\u0430\u0448\u0438\u044f\u0442 popup-blocker \u0435 \u0441\u043f\u0440\u044f\u043b \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446 \u043a\u043e\u0439\u0442\u043e \u0441\u0435 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430 \u043e\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u0430\u0442\u0430. \u0429\u0435 \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u0438\u0437\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u043f\u043e\u043f\u044a\u043f\u0438 \u0437\u0430 \u0442\u043e\u0437\u0438 \u0441\u0430\u0439\u0442 \u0437\u0430 \u0434\u0430 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0442\u0435 \u043f\u044a\u043b\u043d\u0430\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u043d\u043e\u0441\u0442.","clipboard_no_support":"\u041d\u0435 \u0441\u0435 \u043f\u043e\u0434\u0434\u044a\u0440\u0436\u0430 \u043e\u0442 \u0432\u0430\u0448\u0438\u044f\u0442 \u0431\u0440\u0430\u0443\u0437\u044a\u0440, \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0439\u0442\u0435 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u043d\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0438.","clipboard_msg":"\u041a\u043e\u043f\u0438\u0440\u0430\u043d\u0435/\u041e\u0442\u0440\u044f\u0437\u0432\u0430\u043d\u0435/\u041f\u043e\u0441\u0442\u0430\u0432\u044f\u043d\u0435 \u043d\u0435 \u0435 \u0434\u043e\u0441\u0442\u044a\u043f\u043d\u043e \u043f\u043e\u0434 Mozilla \u0438 Firefox.\n\u0416\u0435\u043b\u0430\u0435\u0442\u0435 \u043b\u0438 \u043f\u043e\u0432\u0435\u0447\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0437\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430?","not_set":"-- \u041d\u0435\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0435\u043d\u043e --","class_name":"\u041a\u043b\u0430\u0441",browse:"Browse",close:"\u0417\u0430\u0442\u0432\u043e\u0440\u0438",cancel:"\u041e\u0442\u043a\u0430\u0436\u0438",update:"\u041e\u0431\u043d\u043e\u0432\u0438",insert:"\u0412\u043c\u044a\u043a\u043d\u0438",apply:"\u041f\u043e\u0442\u0432\u044a\u0440\u0434\u0438","edit_confirm":"\u0418\u0441\u043a\u0430\u0442\u0435 \u043b\u0438 \u0434\u0430 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0442\u0435 WYSIWYG \u0440\u0435\u0436\u0438\u043c \u0437\u0430 \u0442\u043e\u0432\u0430 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e \u043f\u043e\u043b\u0435?","invalid_data_number":"{#field} \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u0435 \u0447\u0438\u0441\u043b\u043e","invalid_data_min":"{#field} \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u0435 \u0447\u0438\u0441\u043b\u043e \u043f\u043e-\u0433\u043e\u043b\u044f\u043c\u043e \u043e\u0442 {#min}","invalid_data_size":"{#field} \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u0435 \u0447\u0438\u0441\u043b\u043e \u0438\u043b\u0438 \u043f\u0440\u043e\u0446\u0435\u043d\u0442",value:"(\u0441\u0442\u043e\u0439\u043d\u043e\u0441\u0442)"},contextmenu:{full:"\u0414\u0432\u0443\u0441\u0442\u0440\u0430\u043d\u043d\u043e",right:"\u0414\u044f\u0441\u043d\u043e",center:"\u0426\u0435\u043d\u0442\u044a\u0440",left:"\u041b\u044f\u0432\u043e",align:"\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435"},insertdatetime:{"day_short":"\u041d\u0434,\u041f\u043d,\u0412\u0442,\u0421\u0440,\u0427\u0442,\u041f\u0442,\u0421\u0431,\u041d\u0434","day_long":"\u041d\u0435\u0434\u0435\u043b\u044f,\u041f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a,\u0412\u0442\u043e\u0440\u043d\u0438\u043a,\u0421\u0440\u044f\u0434\u0430,\u0427\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a,\u041f\u0435\u0442\u044a\u043a,\u0421\u044a\u0431\u043e\u0442\u0430,\u041d\u0435\u0434\u0435\u043b\u044f","months_short":"\u042f\u043d\u0443,\u0424\u0435\u0432,\u041c\u0430\u0440,\u0410\u043f\u0440,\u041c\u0430\u0439,\u042e\u043d\u0438,\u042e\u043b\u0438,\u0410\u0432\u0433,\u0421\u0435\u043f,\u041e\u043a\u0442,\u041d\u043e\u0435,\u0414\u0435\u043a","months_long":"\u042f\u043d\u0443\u0430\u0440\u0438,\u0424\u0435\u0432\u0440\u0443\u0430\u0440\u0438,\u041c\u0430\u0440\u0442,\u0410\u043f\u0440\u0438\u043b,\u041c\u0430\u0439,\u042e\u043d\u0438,\u042e\u043b\u0438,\u0410\u0432\u0433\u0443\u0441\u0442,\u0421\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438,\u041e\u043a\u0442\u043e\u043c\u0432\u0440\u0438,\u041d\u043e\u0435\u043c\u0432\u0440\u0438,\u0414\u0435\u043a\u0435\u043c\u0432\u0440\u0438","inserttime_desc":"\u0412\u043c\u044a\u043a\u043d\u0438 \u0432\u0440\u0435\u043c\u0435","insertdate_desc":"\u0412\u043c\u044a\u043a\u043d\u0438 \u0434\u0430\u0442\u0430","time_fmt":"%H:%M:%S","date_fmt":"%Y-%m-%d"},print:{"print_desc":"\u041e\u0442\u043f\u0435\u0447\u0430\u0442\u0430\u0439"},preview:{"preview_desc":"\u041f\u0440\u0435\u0433\u043b\u0435\u0434"},directionality:{"rtl_desc":"\u041f\u043e\u0441\u043e\u043a\u0430 \u043e\u0442\u0434\u044f\u0441\u043d\u043e \u043d\u0430 \u043b\u044f\u0432\u043e","ltr_desc":"\u041f\u043e\u0441\u043e\u043a\u0430 \u043e\u0442\u043b\u044f\u0432\u043e \u043d\u0430 \u0434\u044f\u0441\u043d\u043e"},layer:{content:"\u041d\u043e\u0432 \u0441\u043b\u043e\u0439...","absolute_desc":"\u0412\u043a\u043b\u044e\u0447\u0438 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u0430\u043d\u0435","backward_desc":"\u041f\u043e\u043a\u0430\u0436\u0438 \u043e\u0442\u0437\u0430\u0434","forward_desc":"\u041f\u043e\u043a\u0430\u0436\u0438 \u043e\u0442\u043f\u0440\u0435\u0434","insertlayer_desc":"\u0412\u043c\u044a\u043a\u043d\u0438 \u043d\u043e\u0432 \u0441\u043b\u043e\u0439"},save:{"save_desc":"\u0417\u0430\u043f\u0438\u0448\u0438","cancel_desc":"\u041e\u0442\u043a\u0430\u0436\u0438 \u0432\u0441\u0438\u0447\u043a\u0438 \u043f\u0440\u043e\u043c\u0435\u043d\u0438"},nonbreaking:{"nonbreaking_desc":"\u0412\u043c\u044a\u043a\u043d\u0438 \u043d\u0435\u043f\u0440\u0435\u043a\u044a\u0441\u0432\u0430\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b"},iespell:{download:"ieSpell \u043d\u0435 \u0435 \u043e\u0442\u043a\u0440\u0438\u0442. \u0416\u0435\u043b\u0430\u0435\u0442\u0435 \u043b\u0438 \u0434\u0430 \u0433\u043e \u0438\u043d\u0441\u0442\u0430\u043b\u0438\u0440\u0430\u0442\u0435 \u0441\u0435\u0433\u0430?","iespell_desc":"\u041f\u0440\u043e\u0432\u0435\u0440\u0438 \u043f\u0440\u0430\u0432\u043e\u043f\u0438\u0441\u0430"},advhr:{"advhr_desc":"\u0425\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u043d\u0430 \u043b\u0438\u043d\u0438\u044f","delta_height":"","delta_width":""},emotions:{"emotions_desc":"\u0415\u043c\u043e\u0442\u0438\u043a\u043e\u043d\u0438","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"\u0422\u044a\u0440\u0441\u0438/\u0417\u0430\u043c\u0435\u0441\u0442\u0438","search_desc":"\u0422\u044a\u0440\u0441\u0438","delta_width":"","delta_height":""},advimage:{"image_desc":"\u0412\u043c\u044a\u043a\u043d\u0438/\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430","delta_width":"","delta_height":""},advlink:{"link_desc":"\u0412\u043c\u044a\u043a\u043d\u0438/\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"\u0412\u043c\u044a\u043a\u043d\u0438/\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0438","ins_desc":"\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435","del_desc":"\u0418\u0437\u0442\u0440\u0438\u0432\u0430\u043d\u0435","acronym_desc":"\u0410\u043a\u0440\u043e\u043d\u0438\u043c","abbr_desc":"\u0421\u044a\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0435","cite_desc":"\u0426\u0438\u0442\u0430\u0442","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 CSS \u0441\u0442\u0438\u043b","delta_height":"","delta_width":""},paste:{"plaintext_mode":"\u041f\u043e\u0441\u0442\u0430\u0432\u0435\u043d\u043e\u0442\u043e \u0435 \u0432 \u0438\u0437\u0447\u0438\u0441\u0442\u0435\u043d \u0442\u0435\u043a\u0441\u0442\u043e\u0432 \u0440\u0435\u0436\u0438\u043c. \u0429\u0440\u0430\u043a\u043d\u0435\u0442\u0435 \u043e\u0442\u043d\u043e\u0432\u043e, \u0437\u0430 \u0434\u0430 \u043f\u0440\u0435\u043c\u0438\u043d\u0435\u0442\u0435 \u0432 \u043e\u0431\u0438\u043a\u043d\u043e\u0432\u0435\u043d \u0440\u0435\u0436\u0438\u043c \u043d\u0430 \u043f\u043e\u0441\u0442\u0430\u0432\u044f\u043d\u0435.","plaintext_mode_sticky":"\u041f\u043e\u0441\u0442\u0430\u0432\u0435\u043d\u043e\u0442\u043e \u0435 \u0432 \u0438\u0437\u0447\u0438\u0441\u0442\u0435\u043d \u0442\u0435\u043a\u0441\u0442\u043e\u0432 \u0440\u0435\u0436\u0438\u043c. \u0429\u0440\u0430\u043a\u043d\u0435\u0442\u0435 \u043e\u0442\u043d\u043e\u0432\u043e, \u0437\u0430 \u0434\u0430 \u043f\u0440\u0435\u043c\u0438\u043d\u0435\u0442\u0435 \u0432 \u043e\u0431\u0438\u043a\u043d\u043e\u0432\u0435\u043d \u0440\u0435\u0436\u0438\u043c \u043d\u0430 \u043f\u043e\u0441\u0442\u0430\u0432\u044f\u043d\u0435. \u0421\u043b\u0435\u0434 \u043a\u0430\u0442\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u0435 \u0435\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0449\u0435 \u0441\u0435 \u0432\u044a\u0440\u043d\u0435\u0442\u0435 \u0432 \u043d\u043e\u0440\u043c\u0430\u043b\u0435\u043d \u0440\u0435\u0436\u0438\u043c.","selectall_desc":"\u0418\u0437\u0431\u0435\u0440\u0438 \u0432\u0441\u0438\u0447\u043a\u0438","paste_word_desc":"\u041f\u043e\u0441\u0442\u0430\u0432\u0438 \u043e\u0442 Word","paste_text_desc":"\u041f\u043e\u0441\u0442\u0430\u0432\u0438 \u043a\u0430\u0442\u043e \u0442\u0435\u043a\u0441\u0442"},"paste_dlg":{"word_title":"\u0418\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0439\u0442\u0435 CTRL V \u043e\u0442 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430\u0442\u0430, \u0437\u0430 \u0434\u0430 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446\u0430.","text_linebreaks":"\u0417\u0430\u043f\u0430\u0437\u0438 \u0437\u043d\u0430\u0446\u0438\u0442\u0435 \u0437\u0430 \u043d\u043e\u0432\u0438 \u0440\u0435\u0434\u043e\u0432\u0435","text_title":"\u0418\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0439\u0442\u0435 CTRL V \u043d\u0430 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430\u0442\u0430, \u0437\u0430 \u0434\u0430 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446\u0430."},table:{cell:"\u041a\u043b\u0435\u0442\u043a\u0430",col:"\u041a\u043e\u043b\u043e\u043d\u0430",row:"\u0420\u0435\u0434",del:"\u0418\u0437\u0442\u0440\u0438\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0430","copy_row_desc":"\u041a\u043e\u043f\u0438\u0440\u0430\u0439 \u0440\u0435\u0434","cut_row_desc":"\u041e\u0442\u0440\u0435\u0436\u0438 \u0440\u0435\u0434","paste_row_after_desc":"\u041f\u043e\u0441\u0442\u0430\u0432\u0438 \u0440\u0435\u0434 \u0441\u043b\u0435\u0434","paste_row_before_desc":"\u041f\u043e\u0441\u0442\u0430\u0432\u0438 \u0440\u0435\u0434 \u043f\u0440\u0435\u0434\u0438","props_desc":"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430","cell_desc":"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0430\u0442\u0430","row_desc":"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430 \u0440\u0435\u0434\u0430","merge_cells_desc":"\u0421\u043b\u0435\u0439 \u043a\u043b\u0435\u0442\u043a\u0438","split_cells_desc":"\u0420\u0430\u0437\u0434\u0435\u043b\u0438 \u0441\u043b\u0435\u0442\u0438 \u043a\u043b\u0435\u0442\u043a\u0438","delete_col_desc":"\u0418\u0437\u0442\u0440\u0438\u0439 \u043a\u043e\u043b\u043e\u043d\u0430","col_after_desc":"\u0412\u043c\u044a\u043a\u043d\u0438 \u043a\u043e\u043b\u043e\u043d\u0430 \u0441\u043b\u0435\u0434","col_before_desc":"\u0412\u043c\u044a\u043a\u043d\u0438 \u043a\u043e\u043b\u043e\u043d\u0430 \u043f\u0440\u0435\u0434\u0438","delete_row_desc":"\u0418\u0437\u0442\u0440\u0438\u0439 \u0440\u0435\u0434","row_after_desc":"\u0412\u043c\u044a\u043a\u043d\u0438 \u0440\u0435\u0434 \u0441\u043b\u0435\u0434","row_before_desc":"\u0412\u043c\u044a\u043a\u043d\u0438 \u0440\u0435\u0434 \u043f\u0440\u0435\u0434\u0438",desc:"\u0412\u043c\u044a\u043a\u043d\u0438 \u043d\u043e\u0432\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"\u0412\u0441\u0438\u0447\u043a\u0438 \u043d\u0430\u043f\u0440\u0430\u0432\u0435\u043d\u0438 \u043f\u0440\u043e\u043c\u0435\u043d\u0438 \u0449\u0435 \u0431\u044a\u0434\u0430\u0442 \u0437\u0430\u0433\u0443\u0431\u0435\u043d\u0438.\n\n\u0421\u0438\u0433\u0443\u0440\u043d\u0438 \u043b\u0438 \u0441\u0442\u0435, \u0447\u0435 \u0438\u0441\u043a\u0430\u0442\u0435 \u0434\u0430 \u0432\u044a\u0437\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0437\u0430\u043f\u0430\u0437\u0435\u043d\u043e\u0442\u043e \u0441\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435?.","restore_content":"\u0412\u044a\u0437\u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0432\u0430\u043d\u0435 \u043d\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u043e \u0437\u0430\u043f\u0430\u0437\u0435\u043d\u043e\u0442\u043e.","unload_msg":"\u041f\u0440\u043e\u043c\u0435\u043d\u0438\u0442\u0435 \u043a\u043e\u0438\u0442\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u0438\u0445\u0442\u0435 \u0449\u0435 \u0441\u0435 \u0437\u0430\u0433\u0443\u0431\u044f\u0442 \u0430\u043a\u043e \u043e\u0442\u0438\u0434\u0435\u0442\u0435 \u043d\u0430 \u0434\u0440\u0443\u0433\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430."},fullscreen:{desc:"\u0412\u043a\u043b./\u0418\u0437\u043a\u043b. \u0446\u044f\u043b \u0435\u043a\u0440\u0430\u043d"},media:{"delta_height":"\u0428\u0438\u0440\u0438\u043d\u0430","delta_width":"\u0412\u0438\u0441\u043e\u0447\u0438\u043d\u0430",edit:"\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 \u043c\u0435\u0434\u0438\u0430",desc:"\u0412\u043c\u044a\u043a\u043d\u0438/\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 \u043c\u0435\u0434\u0438\u0430\u0442\u0430"},fullpage:{desc:"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430","delta_width":"","delta_height":""},template:{desc:"\u0412\u043c\u044a\u043a\u043d\u0438 \u0441\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435\u0442\u043e \u043d\u0430 \u0442\u0435\u043c\u043f\u043b\u0435\u0439\u0442"},visualchars:{desc:"\u0412\u043a\u043b./\u0418\u0437\u043a\u043b. \u043d\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043d\u0438\u0442\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u0438."},spellchecker:{desc:"\u0412\u043a\u043b./\u0418\u0437\u043a\u043b. \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u043f\u0440\u0430\u0432\u043e\u043f\u0438\u0441\u0430",menu:"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430\u0442\u0430 \u043d\u0430 \u043f\u0440\u0430\u0432\u043e\u043f\u0438\u0441","ignore_word":"\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u0430\u0439 \u0434\u0443\u043c\u0430","ignore_words":"\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u0430\u0439 \u0432\u0441\u0438\u0447\u043a\u0438",langs:"\u0415\u0437\u0438\u0446\u0438",wait:"\u041c\u043e\u043b\u044f \u0438\u0437\u0447\u0430\u043a\u0430\u0439\u0442\u0435...",sug:"\u041f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f","no_sug":"\u041d\u044f\u043c\u0430 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f","no_mpell":"\u041d\u044f\u043c\u0430 \u0433\u0440\u0435\u0448\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438 \u0434\u0443\u043c\u0438.","learn_word":"\u041d\u0430\u0443\u0447\u0438 \u0434\u0443\u043c\u0430\u0442\u0430"},pagebreak:{desc:"\u0412\u043c\u044a\u043a\u043d\u0438 \u043d\u043e\u0432\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430."},advlist:{types:"\u0421\u0438\u043c\u0432\u043e\u043b\u0438",def:"\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0438","lower_alpha":"\u041c\u0430\u043b\u043a\u0438 \u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0438 \u0431\u0443\u043a\u0432\u0438","lower_greek":"\u041c\u0430\u043b\u043a\u0438 \u0433\u0440\u044a\u0446\u043a\u0438 \u0431\u0443\u043a\u0432\u0438","lower_roman":"\u041c\u0430\u043b\u043a\u0438 \u0440\u0438\u043c\u0441\u043a\u0438 \u0446\u0438\u0444\u0440\u0438","upper_alpha":"\u0417\u0430\u0433\u043b\u0430\u0432\u043d\u0438 \u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0438 \u0431\u0443\u043a\u0432\u0438","upper_roman":"\u0417\u0430\u0433\u043b\u0430\u0432\u043d\u0438 \u0440\u0438\u043c\u0441\u043a\u0438 \u0446\u0438\u0444\u0440\u0438",circle:"\u041a\u0440\u044a\u0433",disc:"\u041e\u043a\u0440\u044a\u0436\u043d\u043e\u0441\u0442",square:"\u041a\u0432\u0430\u0434\u0440\u0430\u0442"},colors:{"333300":"\u0422\u044a\u043c\u043d\u043e \u043c\u0430\u0441\u043b\u0438\u043d\u0435\u043d","993300":"\u0422\u044a\u043c\u043d\u043e \u043e\u0440\u0430\u043d\u0436\u0435\u0432","000000":"\u0427\u0435\u0440\u0435\u043d","003300":"\u0422\u044a\u043c\u043d\u043e\u0437\u0435\u043b\u0435\u043d","003366":"\u0422\u044a\u043c\u043d\u043e\u043b\u0430\u0437\u0443\u0440\u0435\u043d","000080":"\u0422\u044a\u043c\u043d\u043e\u0441\u0438\u043d","333399":"\u0418\u043d\u0434\u0438\u0433\u043e","333333":"\u041c\u043d\u043e\u0433\u043e \u0442\u044a\u043c\u043d\u043e \u0441\u0438\u0432","800000":"\u041a\u0435\u0441\u0442\u0435\u043d\u044f\u0432",FF6600:"\u041e\u0440\u0430\u043d\u0436\u0435\u0432","808000":"\u041c\u0430\u0441\u043b\u0438\u043d\u0435\u043d\u043e\u0437\u0435\u043b\u0435\u043d","008000":"\u0417\u0435\u043b\u0435\u043d","008080":"\u0421\u0432\u0435\u0442\u043b\u043e\u0441\u0438\u043d","0000FF":"\u0421\u0438\u043d","666699":"\u0421\u0438\u0432\u043e \u0441\u0438\u043d","808080":"\u0421\u0438\u0432",FF0000:"\u0427\u0435\u0440\u0432\u0435\u043d",FF9900:"\u041a\u0435\u0445\u043b\u0438\u0431\u0430\u0440","99CC00":"\u0416\u044a\u043b\u0442\u043e\u0437\u0435\u043b\u0435\u043d","339966":"\u0421\u0438\u043d\u044c\u043e\u0437\u0435\u043b\u0435\u043d","33CCCC":"\u0422\u044e\u0440\u043a\u043e\u0430\u0437","3366FF":"\u041a\u0440\u0430\u043b\u0441\u043a\u043e \u0441\u0438\u043d\u044c\u043e","800080":"\u041f\u0443\u0440\u043f\u0443\u0440\u0435\u043d","999999":"\u0421\u0440\u0435\u0434\u043d\u043e \u0441\u0438\u0432",FF00FF:"\u041c\u0430\u0433\u0435\u043d\u0442\u0430",FFCC00:"\u0417\u043b\u0430\u0442\u0435\u043d",FFFF00:"\u0416\u044a\u043b\u0442","00FF00":"\u041b\u0430\u0439\u043c","00FFFF":"\u0410\u043a\u0432\u0430","00CCFF":"\u041d\u0435\u0431\u0435\u0441\u043d\u043e \u0441\u0438\u043d","993366":"\u041a\u0430\u0444\u044f\u0432",C0C0C0:"\u0421\u0440\u0435\u0431\u0440\u0438\u0441\u0442",FF99CC:"\u0420\u043e\u0437\u043e\u0432",FFCC99:"\u0422\u044a\u043c\u043d\u043e\u043e\u0440\u0430\u043d\u0436\u0435\u0432",FFFF99:"\u0421\u0432\u0435\u0442\u043b\u043e\u0436\u044a\u043b\u0442",CCFFCC:"\u0411\u043b\u0435\u0434\u043e \u0437\u0435\u043b\u0435\u043d\u043e",CCFFFF:"\u0411\u043b\u0435\u0434 \u0446\u0438\u0430\u043d","99CCFF":"\u0421\u0432\u0435\u0442\u043b\u043e\u043d\u0435\u0431\u0435\u0441\u043d\u043e \u0441\u0438\u043d",CC99FF:"\u041b\u0438\u043b\u0430\u0432",FFFFFF:"\u0411\u044f\u043b"},aria:{"rich_text_area":"\u041f\u043e\u043b\u0435 \u0437\u0430 \u0447\u0438\u0441\u0442 \u0442\u0435\u043a\u0441\u0442"},wordcount:{words:"\u0414\u0443\u043c\u0438:"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/bn.js b/program/js/tiny_mce/langs/bn.js
deleted file mode 100644
index 32d703e71..000000000
--- a/program/js/tiny_mce/langs/bn.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({bn:{common:{"more_colors":"\u0986\u09b0\u0993 \u09ac\u09c7\u09b6\u09bf \u09b0\u0982","invalid_data":"\u09a4\u09cd\u09b0\u09c1\u099f\u09bf: \u09ac\u09c7\u09a0\u09bf\u0995 \u09ae\u09be\u09a8 \u09a2\u09c1\u0995\u09be\u09a8\u09cb \u09b9\u09df\u09c7\u099b\u09c7, \u098f\u0987\u0997\u09c1\u09b2\u09bf \u09b2\u09be\u09b2 \u099a\u09bf\u09b9\u09cd\u09a8\u09bf\u09a4 \u0995\u09b0\u09be \u09b9\u09b2\u0964","popup_blocked":"\u09a6\u09c1\u0983\u0996\u09bf\u09a4, \u0995\u09bf\u09a8\u09cd\u09a4\u09c1 \u0986\u09ae\u09b0\u09be \u09b2\u0995\u09cd\u09b7\u09cd\u09af \u0995\u09b0\u09c7\u099b\u09bf \u09af\u09c7 \u0986\u09aa\u09a8\u09be\u09b0 \u09aa\u09aa-\u0986\u09aa \u09ac\u09cd\u09b2\u0995\u09be\u09b0 \u098f\u0995\u099f\u09bf \u0989\u0987\u09a8\u09cd\u09a1\u09cb \u09a8\u09bf\u09b7\u09cd\u0995\u09cd\u09b0\u09bf\u09df \u0995\u09b0\u09c7\u099b\u09c7 \u09af\u09be \u0985\u09cd\u09af\u09be\u09aa\u09b2\u09bf\u0995\u09c7\u09b6\u09a8 \u098f\u09b0 \u09ab\u09be\u0982\u09b6\u09a8\u09be\u09b2\u09bf\u099f\u09bf\u09b0 \u099c\u09a8\u09cd\u09af \u09aa\u09cd\u09b0\u09df\u09cb\u099c\u09a8\u09c0\u09df\u0964\u0986\u09aa\u09a8\u09bf \u098f\u0987 \u099f\u09c1\u09b2\u099f\u09bf \u09b8\u09ae\u09cd\u09aa\u09c2\u09b0\u09cd\u09a3\u09ad\u09be\u09ac\u09c7 \u09ac\u09cd\u09af\u09be\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09a4\u09c7 \u099a\u09be\u0987\u09b2\u09c7 \u098f\u0987 \u09b8\u09be\u0987\u099f\u099f\u09bf \u09a5\u09c7\u0995\u09c7 \u09aa\u09aa-\u0986\u09aa \u09ac\u09cd\u09b2\u0995\u09bf\u0982 \u09a8\u09bf\u09b7\u09cd\u0995\u09cd\u09b0\u09bf\u09df \u0995\u09b0\u09a4\u09c7 \u09b9\u09ac\u09c7\u0964","clipboard_no_support":"\u0986\u09aa\u09a8\u09be\u09b0 \u09ac\u09cd\u09b0\u09be\u0989\u099c\u09be\u09b0\u09c7\u09b0 \u09a6\u09cd\u09ac\u09be\u09b0\u09be \u09ac\u09b0\u09cd\u09a4\u09ae\u09be\u09a8\u09c7 \u09b8\u09ae\u09b0\u09cd\u09a5\u09bf\u09a4 \u09a8\u09be, \u09aa\u09b0\u09bf\u09ac\u09b0\u09cd\u09a4\u09c7 \u0995\u09c0\u09ac\u09cb\u09b0\u09cd\u09a1 \u09b6\u09b0\u09cd\u099f\u0995\u09be\u099f \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09c1\u09a8\u0964","clipboard_msg":"\u0995\u09aa\u09bf/\u0995\u09be\u099f/\u09aa\u09c7\u09b7\u09cd\u099f \u09ae\u099c\u09bf\u09b2\u09be \u098f\u09ac\u0982 \u09ab\u09be\u09df\u09be\u09b0\u09ab\u0995\u09cd\u09b8 \u098f \u09b8\u09ae\u09cd\u09ad\u09ac \u09a8\u09df\n\u0986\u09aa\u09a8\u09bf \u0995\u09bf \u098f\u0987 \u09ac\u09bf\u09b7\u09df\u099f\u09bf\u09b0 \u09b8\u09ae\u09cd\u09ac\u09a8\u09cd\u09a7\u09c7 \u0986\u09b0\u0993 \u09ac\u09c7\u09b6\u09bf \u09a4\u09a5\u09cd\u09af \u099a\u09be\u09a8","not_set":"-- \u09b8\u09c7\u099f \u09a8\u09df --","class_name":"\u0995\u09cd\u09b2\u09be\u09b8",browse:"\u09ac\u09cd\u09b0\u09be\u0989\u099c",close:"\u09ac\u09a8\u09cd\u09a7",cancel:"\u0995\u09cd\u09af\u09be\u09a8\u09b8\u09c7\u09b2",update:"\u0986\u09aa\u09a1\u09c7\u099f",insert:"\u0987\u09a8\u09b8\u09be\u09b0\u09cd\u099f",apply:"\u098f\u09aa\u09cd\u09b2\u09cd\u09af\u09be\u0987","edit_confirm":"\u0986\u09aa\u09a8\u09bf \u0995\u09bf \u098f\u0987 textarea\u099f\u09bf\u09b0 \u099c\u09a8\u09cd\u09af WYSIWYG \u09ae\u09cb\u09a1 \u09ac\u09cd\u09af\u09ac\u09b9\u09be\u09b0 \u0995\u09b0\u09a4\u09c7 \u099a\u09be\u09a8?","invalid_data_number":"{#field} must be a number","invalid_data_min":"{#field} must be a number greater than {#min}","invalid_data_size":"{#field} must be a number or percentage",value:"(value)"},contextmenu:{full:"Full",right:"Right",center:"Center",left:"Left",align:"Alignment"},insertdatetime:{"day_short":"Sun,Mon,Tue,Wed,Thu,Fri,Sat,Sun","day_long":"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday","months_short":"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec","months_long":"January,February,March,April,May,June,July,August,September,October,November,December","inserttime_desc":"Insert time","insertdate_desc":"Insert date","time_fmt":"%H:%M:%S","date_fmt":"%Y-%m-%d"},print:{"print_desc":"Print"},preview:{"preview_desc":"Preview"},directionality:{"rtl_desc":"Direction right to left","ltr_desc":"Direction left to right"},layer:{content:"New layer...","absolute_desc":"Toggle absolute positioning","backward_desc":"Move backward","forward_desc":"Move forward","insertlayer_desc":"Insert new layer"},save:{"save_desc":"Save","cancel_desc":"Cancel all changes"},nonbreaking:{"nonbreaking_desc":"Insert non-breaking space character"},iespell:{download:"ieSpell not detected. Do you want to install it now?","iespell_desc":"Run spell checking"},advhr:{"advhr_desc":"Horizontal rule","delta_height":"","delta_width":""},emotions:{"emotions_desc":"Emotions","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"Find/Replace","search_desc":"Find","delta_width":"","delta_height":""},advimage:{"image_desc":"Insert/edit image","delta_width":"","delta_height":""},advlink:{"link_desc":"Insert/edit link","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"Insert/Edit Attributes","ins_desc":"Insertion","del_desc":"Deletion","acronym_desc":"Acronym","abbr_desc":"Abbreviation","cite_desc":"Citation","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"Edit CSS Style","delta_height":"","delta_width":""},paste:{"selectall_desc":"Select All","paste_word_desc":"Paste from Word","paste_text_desc":"Paste as Plain Text","plaintext_mode":"Paste is now in plain text mode. Click again to toggle back to regular paste mode.","plaintext_mode_sticky":"Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode."},"paste_dlg":{"word_title":"Use CTRL+V on your keyboard to paste the text into the window.","text_linebreaks":"Keep linebreaks","text_title":"Use CTRL+V on your keyboard to paste the text into the window."},table:{cell:"Cell",col:"Column",row:"Row",del:"Delete table","copy_row_desc":"Copy table row","cut_row_desc":"Cut table row","paste_row_after_desc":"Paste table row after","paste_row_before_desc":"Paste table row before","props_desc":"Table properties","cell_desc":"Table cell properties","row_desc":"Table row properties","merge_cells_desc":"Merge table cells","split_cells_desc":"Split merged table cells","delete_col_desc":"Remove column","col_after_desc":"Insert column after","col_before_desc":"Insert column before","delete_row_desc":"Delete row","row_after_desc":"Insert row after","row_before_desc":"Insert row before",desc:"Inserts a new table","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"unload_msg":"The changes you made will be lost if you navigate away from this page.","warning_message":"If you restore the saved content, you will lose all the content that is currently in the editor.\n\nAre you sure you want to restore the saved content?","restore_content":"Restore auto-saved content."},fullscreen:{desc:"Toggle fullscreen mode"},media:{edit:"Edit embedded media",desc:"Insert / edit embedded media","delta_height":"","delta_width":""},fullpage:{desc:"Document properties","delta_width":"","delta_height":""},template:{desc:"Insert predefined template content"},visualchars:{desc:"Visual control characters on/off."},spellchecker:{desc:"Toggle spellchecker",menu:"Spellchecker settings","ignore_word":"Ignore word","ignore_words":"Ignore all",langs:"Languages",wait:"Please wait...",sug:"Suggestions","no_sug":"No suggestions","no_mpell":"No misspellings found.","learn_word":"Learn word"},pagebreak:{desc:"Insert page break."},advlist:{types:"Types",def:"Default","lower_alpha":"Lower Alpha","lower_greek":"Lower Greek","lower_roman":"Lower Roman","upper_alpha":"Upper Alpha","upper_roman":"Upper Roman",circle:"Circle",disc:"Disc",square:"Square"},colors:{"333300":"Dark olive","993300":"Burnt orange","000000":"Black","003300":"Dark green","003366":"Dark azure","000080":"Navy Blue","333399":"Indigo","333333":"Very dark gray","800000":"Maroon",FF6600:"Orange","808000":"Olive","008000":"Green","008080":"Teal","0000FF":"Blue","666699":"Grayish blue","808080":"Gray",FF0000:"Red",FF9900:"Amber","99CC00":"Yellow green","339966":"Sea green","33CCCC":"Turquoise","3366FF":"Royal blue","800080":"Purple","999999":"Medium gray",FF00FF:"Magenta",FFCC00:"Gold",FFFF00:"Yellow","00FF00":"Lime","00FFFF":"Aqua","00CCFF":"Sky blue","993366":"Brown",C0C0C0:"Silver",FF99CC:"Pink",FFCC99:"Peach",FFFF99:"Light yellow",CCFFCC:"Pale green",CCFFFF:"Pale cyan","99CCFF":"Light sky blue",CC99FF:"Plum",FFFFFF:"White"},aria:{"rich_text_area":"Rich Text Area"},wordcount:{words:"Words"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/br.js b/program/js/tiny_mce/langs/br.js
deleted file mode 100644
index 0209224b2..000000000
--- a/program/js/tiny_mce/langs/br.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({br:{common:{"more_colors":"Mais Cores","invalid_data":"Erro: Valores inv\u00e1lidos est\u00e3o marcados em vermelho.","popup_blocked":"Detectamos que o seu bloqueador de popups bloqueou uma janela que \u00e9 essencial para o aplicativo. Voc\u00ea precisa desativar o bloqueador de popups para utilizar esta ferramenta.","clipboard_no_support":"O seu navegador n\u00e3o tem suporte para esta fun\u00e7\u00e3o, use os atalhos do teclado.","clipboard_msg":"Copiar/cortar/colar n\u00e3o est\u00e1 dispon\u00edvel no Mozilla/Firefox.\nDeseja mais informa\u00e7\u00f5es sobre este problema?","not_set":"-- N\u00e3o especificado --","class_name":"Classe",browse:"Procurar",close:"Fechar",cancel:"Cancelar",update:"Atualizar",insert:"Inserir",apply:"Aplicar","edit_confirm":"Deseja usar o modo de edi\u00e7\u00e3o avan\u00e7ado neste campo de texto?","invalid_data_number":"{#field} must be a number","invalid_data_min":"{#field} must be a number greater than {#min}","invalid_data_size":"{#field} must be a number or percentage",value:"(value)"},contextmenu:{full:"Justificar",right:"Direita",center:"Centro",left:"Esquerda",align:"Alinhamento"},insertdatetime:{"day_short":"Dom,Seg,Ter,Qua,Qui,Sex,Sab,Dom","day_long":"Domingo,Segunda-Feira,Ter\u00e7a-Feira,Quarta-Feira,Quinta-Feira,Sexta-Feira,S\u00e1bado,Domingo","months_short":"Jan,Fev,Mar,Abr,Mai,Jun,Jul,Ago,Set,Out,Nov,Dez","months_long":"Janeiro,Fevereiro,Mar\u00e7o,Abril,Maio,Junho,Julho,Agosto,Setembro,Outubro,Novembro,Dezembro","inserttime_desc":"Inserir hora","insertdate_desc":"Inserir data","time_fmt":"%H:%M:%S","date_fmt":"%d-%m-%Y"},print:{"print_desc":"Imprimir"},preview:{"preview_desc":"Pr\u00e9-Visualizar"},directionality:{"rtl_desc":"Da direita para esquerda","ltr_desc":"Da esquerda para direita"},layer:{content:"Nova camada...","absolute_desc":"Alternar posicionamento absoluto","backward_desc":"Mover para tr\u00e1s","forward_desc":"Mover para frente","insertlayer_desc":"Inserir nova camada"},save:{"save_desc":"Salvar","cancel_desc":"Cancelar todas as altera\u00e7\u00f5es"},nonbreaking:{"nonbreaking_desc":"Inserir um espa\u00e7o"},iespell:{download:"Aplicativo de ortografia n\u00e3o-detectado. Deseja instal\u00e1-lo agora?","iespell_desc":"Verificar ortografia"},advhr:{"advhr_desc":"Separador horizontal","delta_height":"","delta_width":""},emotions:{"emotions_desc":"Emoticons","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"Localizar/substituir","search_desc":"Localizar","delta_width":"","delta_height":""},advimage:{"image_desc":"Inserir/editar imagem","delta_width":"","delta_height":""},advlink:{"link_desc":"Inserir/editar hyperlink","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"Inserir/Editar atributos","ins_desc":"Inserir","del_desc":"Apagar","acronym_desc":"Acr\u00f4nimo","abbr_desc":"Abrevia\u00e7\u00e3o","cite_desc":"Cita\u00e7\u00e3o","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"Editar CSS","delta_height":"","delta_width":""},paste:{"selectall_desc":"Selecionar tudo","paste_word_desc":"Colar (copiado do WORD)","paste_text_desc":"Colar como texto simples","plaintext_mode":"Paste is now in plain text mode. Click again to toggle back to regular paste mode.","plaintext_mode_sticky":"Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode."},"paste_dlg":{"word_title":"Use CTRL+V para colar o texto na janela.","text_linebreaks":"Manter quebras de linha","text_title":"Use CTRL+V para colar o texto na janela."},table:{cell:"C\u00e9lula",col:"Coluna",row:"Linha",del:"Apagar tabela","copy_row_desc":"Copiar linha","cut_row_desc":"Cortar linha","paste_row_after_desc":"Colar linha depois","paste_row_before_desc":"Colar linha antes","props_desc":"Propriedades da tabela","cell_desc":"Propriedades das c\u00e9lulas","row_desc":"Propriedades das linhas","merge_cells_desc":"Unir c\u00e9lulas","split_cells_desc":"Dividir c\u00e9lulas","delete_col_desc":"Remover coluna","col_after_desc":"Inserir coluna depois","col_before_desc":"Inserir coluna antes","delete_row_desc":"Apagar linha","row_after_desc":"Inserir linha depois","row_before_desc":"Inserir linha antes",desc:"Inserir nova tabela","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"unload_msg":"As mudan\u00e7as efetuadas ser\u00e3o perdidas se sair desta p\u00e1gina.","warning_message":"If you restore the saved content, you will lose all the content that is currently in the editor.\n\nAre you sure you want to restore the saved content?","restore_content":"Restore auto-saved content."},fullscreen:{desc:"Tela Inteira"},media:{edit:"Editar m\u00eddia incorporada",desc:"Inserir/Editar m\u00eddia incorporada","delta_height":"","delta_width":""},fullpage:{desc:"Propriedades do Documento","delta_width":"","delta_height":""},template:{desc:"Inserir template"},visualchars:{desc:"Caracteres de controle visual ligado/desligado"},spellchecker:{desc:"Alternar verifica\u00e7\u00e3o ortogr\u00e1fica",menu:"Configura\u00e7\u00f5es de ortografia","ignore_word":"Ignorar palavra","ignore_words":"Ignorar tudo",langs:"Linguagens",wait:"Aguarde...",sug:"Sugest\u00f5es","no_sug":"Sem sugest\u00f5es","no_mpell":"N\u00e3o foram detectados erros de ortografia.","learn_word":"Learn word"},pagebreak:{desc:"Inserir quebra de p\u00e1gina."},advlist:{types:"Types",def:"Default","lower_alpha":"Lower Alpha","lower_greek":"Lower Greek","lower_roman":"Lower Roman","upper_alpha":"Upper Alpha","upper_roman":"Upper Roman",circle:"Circle",disc:"Disc",square:"Square"},colors:{"333300":"Dark olive","993300":"Burnt orange","000000":"Black","003300":"Dark green","003366":"Dark azure","000080":"Navy Blue","333399":"Indigo","333333":"Very dark gray","800000":"Maroon",FF6600:"Orange","808000":"Olive","008000":"Green","008080":"Teal","0000FF":"Blue","666699":"Grayish blue","808080":"Gray",FF0000:"Red",FF9900:"Amber","99CC00":"Yellow green","339966":"Sea green","33CCCC":"Turquoise","3366FF":"Royal blue","800080":"Purple","999999":"Medium gray",FF00FF:"Magenta",FFCC00:"Gold",FFFF00:"Yellow","00FF00":"Lime","00FFFF":"Aqua","00CCFF":"Sky blue","993366":"Brown",C0C0C0:"Silver",FF99CC:"Pink",FFCC99:"Peach",FFFF99:"Light yellow",CCFFCC:"Pale green",CCFFFF:"Pale cyan","99CCFF":"Light sky blue",CC99FF:"Plum",FFFFFF:"White"},aria:{"rich_text_area":"Rich Text Area"},wordcount:{words:"Words"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/bs.js b/program/js/tiny_mce/langs/bs.js
deleted file mode 100644
index 794702df1..000000000
--- a/program/js/tiny_mce/langs/bs.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({bs:{common:{"more_colors":"Vi\u0161e boja","invalid_data":"Gre\u0161ka: Une\u0161ene su nevaljane vrijednosti, ozna\u010dene su crvenom bojom.","popup_blocked":"Oprostite, izgleda da je va\u0161 popup-blocker onemogu\u0107io prozor u sklopu ovog programa. Morate onemogu\u0107iti blokiranje popup prozora da bi u potpunosti iskoristili ovaj alat.","clipboard_no_support":"Trenuta\u010dno va\u0161 preglednik ne podr\u017eava ovu opciju, poku\u0161ajte koristiti tipkovni\u010dku kraticu.","clipboard_msg":"Kopiraj/Izre\u017ei/Zalijepi nije dostupno Mozilla i Firefox preglednicima.\nVi\u0161e informacija?","not_set":"-- Nije postavljeno --","class_name":"Klasa",browse:"Pregled",close:"Zatvori",cancel:"Odustani",update:"Obnovi",insert:"Umetni",apply:"Primjeni","edit_confirm":"\u017delite li koristiti WYSIWYG na\u010din rada za ovo tekstualno polje?","invalid_data_number":"{#field} must be a number","invalid_data_min":"{#field} must be a number greater than {#min}","invalid_data_size":"{#field} must be a number or percentage",value:"(value)"},contextmenu:{full:"Puno",right:"Desno",center:"Sredina",left:"Lijevo",align:"Poravnavanje"},insertdatetime:{"day_short":"ned,pon,uto,sri,\u010det,pet,sub,ned","day_long":"nedjelja,ponedjeljak,utorak,srijeda,\u010detvrtak,petak,subota,nedjelja","months_short":"sij,velj,o\u017eu,tra,svi,lip,srp,kol,ruj,lis,stu,pro","months_long":"sije\u010danj,velja\u010da,o\u017eujak,travanj,svibanj,lipanj,srpanj,kolovoz,rujan,listopad,studeni,prosinac","inserttime_desc":"Umetni vrijeme","insertdate_desc":"Umetni datum","time_fmt":"%H:%M:%S","date_fmt":"%d.%m.%Y."},print:{"print_desc":"Ispis"},preview:{"preview_desc":"Prikaz"},directionality:{"rtl_desc":"S desna na lijevo","ltr_desc":"S lijeva na desno"},layer:{content:"Novi sloj...","absolute_desc":"Uklju\u010di/isklju\u010di apsolutno pozicioniranje","backward_desc":"Pomakni natrag","forward_desc":"Pomakni naprijed","insertlayer_desc":"Umetni novi sloj"},save:{"save_desc":"Spremi","cancel_desc":"Odustani od svih promjena"},nonbreaking:{"nonbreaking_desc":"Umetni razmak"},iespell:{download:"Provjera pravopisa nije postaljena. Postaviti sada?","iespell_desc":"Pokreni provjeru pravopisa"},advhr:{"advhr_desc":"Vodoravna crta","delta_height":"","delta_width":""},emotions:{"emotions_desc":"Emocije","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"Prona\u0111i/Zamijeni","search_desc":"Prona\u0111i","delta_width":"","delta_height":""},advimage:{"image_desc":"Umetni/uredi sliku","delta_width":"","delta_height":""},advlink:{"link_desc":"Insert/edit link","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"Umetni/uredi atribute","ins_desc":"Unos","del_desc":"Brisanje","acronym_desc":"Akronim","abbr_desc":"Kratica","cite_desc":"Citat","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"Uredi CSS","delta_height":"","delta_width":""},paste:{"selectall_desc":"Odaberi sve","paste_word_desc":"Zalijepi iz Worda","paste_text_desc":"Zalijepi kao obi\u010dni tekst","plaintext_mode":"Paste is now in plain text mode. Click again to toggle back to regular paste mode.","plaintext_mode_sticky":"Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode."},"paste_dlg":{"word_title":"Koristite CTRL+V na tipkovnici da zalijepite tekst u prozor.","text_linebreaks":"Zadr\u017ei prijelome","text_title":"Koristite CTRL+V na tipkovnici da zalijepite tekst u prozor."},table:{cell:"\u0106elija",col:"Stupac",row:"Redak",del:"Izbri\u0161i tablicu","copy_row_desc":"Kopiraj redak","cut_row_desc":"Izre\u017ei redak","paste_row_after_desc":"Zalijepi redak ispod","paste_row_before_desc":"Zalijepi redak iznad","props_desc":"Svojstva tablice","cell_desc":"Svojstva \u0107elije","row_desc":"Svojstva retka","merge_cells_desc":"Spoji \u0107elije","split_cells_desc":"Razdvoji spojene \u0107elije","delete_col_desc":"Ukloni stupac","col_after_desc":"Umetni stupac desno","col_before_desc":"Umetni stupac lijevo","delete_row_desc":"Izbri\u0161i redak","row_after_desc":"Umetni redak ispod","row_before_desc":"Umetni redak iznad",desc:"Nova tablica","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"unload_msg":"Promjene u dokumentu \u0107e biti izgubljene ako iza\u0111ete s ove stranice.","warning_message":"If you restore the saved content, you will lose all the content that is currently in the editor.\n\nAre you sure you want to restore the saved content?","restore_content":"Restore auto-saved content."},fullscreen:{desc:"Uklju\u010di/isklju\u010di prikaz preko cijelog ekrana"},media:{edit:"Edit embedded media",desc:"Insert / edit embedded media","delta_height":"","delta_width":""},fullpage:{desc:"Svojstva dokumenta","delta_width":"","delta_height":""},template:{desc:"Umetni sadr\u017eaj iz predlo\u017eak"},visualchars:{desc:"Vizualni kontrolni znakovi uklju\u010deni/isklju\u010deni."},spellchecker:{desc:"Uklju\u010di/isklju\u010di provjeru pravopisa",menu:"Postavke provjere pravopisa","ignore_word":"Zanemari rije\u010d","ignore_words":"Zanemari sver",langs:"Jezici",wait:"Pri\u010dekajte...",sug:"Prijedlozi","no_sug":"Nema prijedloga","no_mpell":"Nije prona\u0111ena nijedna pravopisna gre\u0161ke.","learn_word":"Learn word"},pagebreak:{desc:"Umetni prijelom."},advlist:{types:"Types",def:"Default","lower_alpha":"Lower Alpha","lower_greek":"Lower Greek","lower_roman":"Lower Roman","upper_alpha":"Upper Alpha","upper_roman":"Upper Roman",circle:"Circle",disc:"Disc",square:"Square"},colors:{"333300":"Dark olive","993300":"Burnt orange","000000":"Black","003300":"Dark green","003366":"Dark azure","000080":"Navy Blue","333399":"Indigo","333333":"Very dark gray","800000":"Maroon",FF6600:"Orange","808000":"Olive","008000":"Green","008080":"Teal","0000FF":"Blue","666699":"Grayish blue","808080":"Gray",FF0000:"Red",FF9900:"Amber","99CC00":"Yellow green","339966":"Sea green","33CCCC":"Turquoise","3366FF":"Royal blue","800080":"Purple","999999":"Medium gray",FF00FF:"Magenta",FFCC00:"Gold",FFFF00:"Yellow","00FF00":"Lime","00FFFF":"Aqua","00CCFF":"Sky blue","993366":"Brown",C0C0C0:"Silver",FF99CC:"Pink",FFCC99:"Peach",FFFF99:"Light yellow",CCFFCC:"Pale green",CCFFFF:"Pale cyan","99CCFF":"Light sky blue",CC99FF:"Plum",FFFFFF:"White"},aria:{"rich_text_area":"Rich Text Area"},wordcount:{words:"Words"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/ca.js b/program/js/tiny_mce/langs/ca.js
deleted file mode 100644
index f944c2cb1..000000000
--- a/program/js/tiny_mce/langs/ca.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({ca:{common:{"more_colors":"M\u00e9s colors","invalid_data":"Error: heu introdu\u00eft valors no v\u00e0lids, els marcats en vermell.","popup_blocked":"El bloqueig de finestres emergents ha inhabilitat una finestra que proporciona funcionalitat a l\'aplicaci\u00f3. Cal que desactiveu el bloqueig de finestres emergents en aquest lloc per tal de poder utilitzar de forma completa aquesta eina.","clipboard_no_support":"El vostre navegador actualment no ho admet, utilitzeu les dreceres de teclat.","clipboard_msg":"Copia/Retalla/Enganxa no es troba disponible al Mozilla ni al Firefox.\nVoleu m\u00e9s informaci\u00f3 sobre aquesta q\u00fcesti\u00f3?","not_set":"-- No definit --","class_name":"Classe",browse:"Explora",close:"Tanca",cancel:"Cancel\u00b7la",update:"Actualitza",insert:"Insereix",apply:"Aplica","edit_confirm":"Voleu utilitzar el mode WYSIWYG?","invalid_data_number":"{#field} ha de ser un n\u00famero","invalid_data_min":"{#field} ha de ser un n\u00famero major que {#min}","invalid_data_size":"{#field} ha de ser un n\u00famero o un tant per cent",value:"(valor)"},contextmenu:{full:"Justificat",right:"Dreta",center:"Centre",left:"Esquerra",align:"Alineaci\u00f3"},insertdatetime:{"day_short":"dg.,dl.,dt.,dc.,dj.,dv.,ds.,dg.","day_long":"diumenge,dilluns,dimarts,dimecres,dijous,divendres,dissabte,diumenge","months_short":"gen.,febr.,mar\u00e7,abr.,maig,juny,jul.,ag.,set.,oct.,nov.,des.","months_long":"Jgener,febrer,mar\u00e7,abril,maig,juny,juliol,agost,setembre,octubre,novembre,desembre","inserttime_desc":"Insereix l\'hora","insertdate_desc":"Insereix la data","time_fmt":"%H:%M:%S","date_fmt":"%d-%m-%Y"},print:{"print_desc":"Imprimeix"},preview:{"preview_desc":"Previsualitzaci\u00f3"},directionality:{"rtl_desc":"Direcci\u00f3 dreta a esquerra","ltr_desc":"Direcci\u00f3 esquerra a dreta"},layer:{content:"Nova Capa...","absolute_desc":"Conmuta el posicionament absolut","backward_desc":"Mou endarrera","forward_desc":"Mou endavant","insertlayer_desc":"Insereix una nova capa"},save:{"save_desc":"Desa","cancel_desc":"Cancel\u00b7la tots els canvis"},nonbreaking:{"nonbreaking_desc":"Insereix un car\u00e0cter espai en blanc"},iespell:{download:"no he detectat l\'ieSpell. Voleu instal\u00b7lar-ho?","iespell_desc":"Executa la correcci\u00f3 ortogr\u00e0fica"},advhr:{"advhr_desc":"Filet horitzontal","delta_height":"","delta_width":""},emotions:{"emotions_desc":"Emoticones","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"Cerca/Reempla\u00e7a","search_desc":"Cerca","delta_width":"","delta_height":""},advimage:{"image_desc":"Insereix/edita imatge","delta_width":"","delta_height":""},advlink:{"link_desc":"Insert/edit link","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"Insereix/edita atributs","ins_desc":"Inserci\u00f3","del_desc":"Eliminaci\u00f3","acronym_desc":"Acr\u00f2nim","abbr_desc":"Abreviaci\u00f3","cite_desc":"Citaci\u00f3","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"Edita l\'estil CSS","delta_height":"","delta_width":""},paste:{"plaintext_mode":"Enganxa est\u00e0 ara configurat en mode text pla. Clica de nou per tornar al mode normal d\'enganxar.","plaintext_mode_sticky":"Enganxa est\u00e0 ara configurat en mode text pla. Clica de nou per tornar al mode normal d\'enganxar. Despr\u00e9s d\'enganxar quelcom ser\u00e0s retornat al mode normal d\'enganxar.","selectall_desc":"Selecciona-ho tot","paste_word_desc":"Enganxa des del Word","paste_text_desc":"Enganxa com a text pla"},"paste_dlg":{"word_title":"Amb el teclat utilitzeu CTRL+V per a enganxar el text dins la finestra.","text_linebreaks":"Conserva els salts de l\u00ednia","text_title":"Amb el teclat utilitzeu CTRL+V per a enganxar el text dins la finestra."},table:{cell:"Cel\u00b7la",col:"Columna",row:"Fila",del:"Elimina la taula","copy_row_desc":"Copia la fila","cut_row_desc":"Retalla la fila","paste_row_after_desc":"Enganxa la fila despr\u00e9s","paste_row_before_desc":"Enganxa la fila abans","props_desc":"Propietats de la taula","cell_desc":"Propietats de la cel\u00b7la","row_desc":"Propietats de la fila","merge_cells_desc":"Fusiona les cel\u00b7les","split_cells_desc":"Divideix les cel\u00b7les fusionades","delete_col_desc":"Elimina la columna","col_after_desc":"Insereix una columna despr\u00e9s","col_before_desc":"Insereix una columna abans","delete_row_desc":"Elimina la fila","row_after_desc":"Insereix una fila despr\u00e9s","row_before_desc":"Insereix una fila abans",desc:"Insereix una nova taula","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"Si restaures el contingut guardat, perdr\u00e0s tot el contingut actual de l\'editor.\n\n Est\u00e0s segur de voler continuar?","restore_content":"Restaura el contingut guardat autom\u00e0ticament.","unload_msg":"Els canvis que heu fet es perdran si navegueu a fora d\'aquesta p\u00e0gina."},fullscreen:{desc:"Commuta a mode de pantalla completa"},media:{edit:"Edita multim\u00e8dia incrustat",desc:"Insereix / edita multim\u00e8dia incrustat","delta_height":"","delta_width":""},fullpage:{desc:"Propietats del document","delta_width":"","delta_height":""},template:{desc:"Insereix un contingut predefinit"},visualchars:{desc:"Activa/desactiva els car\u00e0cters de control visual."},spellchecker:{desc:"Corrector ortogr\u00e0fic",menu:"Configuraci\u00f3 del corrector","ignore_word":"Ignora el mot","ignore_words":"Ignora\'ls tots",langs:"Idiomes",wait:"Espereu...",sug:"Suggeriments","no_sug":"Cap suggeriment","no_mpell":"No s\'ha trobat cap falta d\'ortografia.","learn_word":"Aprendre el mot"},pagebreak:{desc:"Insereix un salt de p\u00e0gina."},advlist:{types:"Tipus",def:"Per defecte","lower_alpha":"Lletres","lower_greek":"Lletres gregues (min\u00fascules)","lower_roman":"Nombres romans (min\u00fascules)","upper_alpha":"Lletres (maj\u00fascules)","upper_roman":"Nombres romans (maj\u00fascules)",circle:"Cercle",disc:"Disc",square:"Quadrat"},colors:{"333300":"Verd oliva fosc","993300":"Taronja torrat","000000":"Negre","003300":"Verd fosc","003366":"Blau fosc","000080":"Blau mar\u00ed","333399":"Indi","333333":"Gris molt fosc","800000":"Granat",FF6600:"Taronja","808000":"Verd oliva","008000":"Verd","008080":"Blau xarxet","0000FF":"Blau","666699":"Blau grisenc","808080":"Gris",FF0000:"Roig",FF9900:"Ambre","99CC00":"Verd groguenc","339966":"Verd mar\u00ed","33CCCC":"Turquesa","3366FF":"Blau real","800080":"Porpra","999999":"Gris mig",FF00FF:"Magenta",FFCC00:"Or",FFFF00:"Groc","00FF00":"Llima","00FFFF":"Cian","00CCFF":"Blau cel","993366":"Marr\u00f3",C0C0C0:"Plata",FF99CC:"Rosa",FFCC99:"Pr\u00e9ssec",FFFF99:"Groc clar",CCFFCC:"Verd p\u00e0lid",CCFFFF:"Cian p\u00e0lid","99CCFF":"Blau mar\u00ed clar",CC99FF:"Pruna",FFFFFF:"Blanc"},aria:{"rich_text_area":"\u00c0rea de Text Enriquit"},wordcount:{words:"Mots:"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/cs.js b/program/js/tiny_mce/langs/cs.js
deleted file mode 100644
index 463dda8a6..000000000
--- a/program/js/tiny_mce/langs/cs.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({cs:{common:{"more_colors":"Dal\u0161\u00ed barvy","invalid_data":"Chyba: Byly zad\u00e1ny neplatn\u00e9 hodnoty a tyto byly ozna\u010deny \u010derven\u011b.","popup_blocked":"Omlouv\u00e1me se, ale blokov\u00e1n\u00ed vyskakovac\u00edch oken neumo\u017enilo otev\u0159\u00edt okno, kter\u00e9 poskytuje funk\u010dnost aplikace. Pro pln\u00e9 vyu\u017eit\u00ed mo\u017enost\u00ed aplikace mus\u00edte vypnout blokov\u00e1n\u00ed vyskakovac\u00edch oken pro tento web.","clipboard_no_support":"Tato funkce nen\u00ed va\u0161\u00edm prohl\u00ed\u017ee\u010dem podporov\u00e1na. Pou\u017eijte m\u00edsto toho kl\u00e1vesov\u00e9 zkratky.","clipboard_msg":"Funkce kop\u00edrovat/vyjmout/vlo\u017eit nejsou podporovan\u00e9 v prohl\u00ed\u017ee\u010d\u00edch Mozilla a Firefox.\nChcete v\u00edce informac\u00ed o tomto probl\u00e9mu?","not_set":"- Nenastaveno -","class_name":"T\u0159\u00edda",browse:"Proch\u00e1zet",close:"Zav\u0159\u00edt",cancel:"Storno",update:"Aktualizovat",insert:"Vlo\u017eit",apply:"Pou\u017e\u00edt","edit_confirm":"Chcete pou\u017e\u00edt WYSIWYG re\u017eim pro tento text?","invalid_data_number":"{#field} mus\u00ed b\u00fdt \u010d\u00edslo","invalid_data_min":"{#field} mus\u00ed b\u00fdt \u010d\u00edslo v\u011bt\u0161\u00ed ne\u017e {#min}","invalid_data_size":"{#field} mus\u00ed b\u00fdt \u010d\u00edslo nebo v procentech",value:"(hodnota)"},contextmenu:{full:"Do bloku",right:"Doprava",center:"Na st\u0159ed",left:"Doleva",align:"Zarovn\u00e1n\u00ed"},insertdatetime:{"day_short":"Ne,Po,\u00dat,St,\u010ct,P\u00e1,So,Ne","day_long":"Ned\u011ble,Pond\u011bl\u00ed,\u00dater\u00fd,St\u0159eda,\u010ctvrtek,P\u00e1tek,Sobota,Ned\u011ble","months_short":"Led,\u00dano,B\u0159e,Dub,Kv\u011b,\u010cer,\u010cvc,Srp,Z\u00e1\u0159,\u0158\u00edj,Lis,Pro","months_long":"Leden,\u00danor,B\u0159ezen,Duben,Kv\u011bten,\u010cerven,\u010cervenec,Srpen,Z\u00e1\u0159\u00ed,\u0158\u00edjen,Listopad,Prosinec","inserttime_desc":"Vlo\u017eit \u010das","insertdate_desc":"Vlo\u017eit datum","time_fmt":"%H:%M:%S","date_fmt":"%d.%m.%Y"},print:{"print_desc":"Tisk"},preview:{"preview_desc":"N\u00e1hled"},directionality:{"rtl_desc":"Sm\u011br zprava doleva","ltr_desc":"Sm\u011br zleva doprava"},layer:{content:"Nov\u00e1 vrstva...","absolute_desc":"P\u0159epnout na absolutn\u00ed pozicov\u00e1n\u00ed","backward_desc":"P\u0159esunout dozadu","forward_desc":"P\u0159esunout dop\u0159edu","insertlayer_desc":"Vlo\u017eit novou vrstvu"},save:{"save_desc":"Ulo\u017eit","cancel_desc":"Zru\u0161it v\u0161echny zm\u011bny"},nonbreaking:{"nonbreaking_desc":"Vlo\u017eit ned\u011blitelnou mezeru"},iespell:{download:"Slovn\u00edk ieSpell nebyl detekov\u00e1n. Chcete ho nainstalovat?","iespell_desc":"Spustit kontrolu pravopisu"},advhr:{"advhr_desc":"Vodorovn\u00fd odd\u011blova\u010d","delta_height":"","delta_width":""},emotions:{"emotions_desc":"Emotikony","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"Naj\u00edt/nahradit","search_desc":"Naj\u00edt","delta_width":"","delta_height":""},advimage:{"delta_width":"20","image_desc":"Vlo\u017eit/upravit obr\u00e1zek","delta_height":""},advlink:{"link_desc":"Vlo\u017eit/upravit odkaz","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"Vlo\u017eit/upravit atributy","ins_desc":"P\u0159idan\u00fd text","del_desc":"Odstran\u011bn\u00fd text","acronym_desc":"Akronym","abbr_desc":"Zkratka","cite_desc":"Citace","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{"delta_width":"25",desc:"Upravit CSS styl","delta_height":""},paste:{"plaintext_mode":"Funkce vlo\u017eit je nyn\u00ed v re\u017eimu prost\u00fd text. Op\u011btovn\u00e9 kliknut\u00ed p\u0159epne tuto funkci zp\u011bt do norm\u00e1ln\u00edho re\u017eimu.","plaintext_mode_sticky":"Funkce vlo\u017eit je nyn\u00ed v re\u017eimu prost\u00fd text. Op\u011btovn\u00e9 kliknut\u00ed p\u0159epne tuto funkci zp\u011bt do norm\u00e1ln\u00edho re\u017eimu. Po vlo\u017een\u00ed \u010dehokoli bude tato funkce vr\u00e1cena zp\u011bt do norm\u00e1ln\u00edho re\u017eimu.","selectall_desc":"Vybrat v\u0161e","paste_word_desc":"Vlo\u017eit z Wordu","paste_text_desc":"Vlo\u017eit jako prost\u00fd text"},"paste_dlg":{"word_title":"Pou\u017eijte CTRL+V pro vlo\u017een\u00ed textu do okna.","text_linebreaks":"Zachovat zalamov\u00e1n\u00ed \u0159\u00e1dk\u016f","text_title":"Pou\u017eijte CTRL+V pro vlo\u017een\u00ed textu do okna."},table:{"table_delta_width":"50","cellprops_delta_width":"100",cell:"Bu\u0148ka",col:"Sloupec",row:"\u0158\u00e1dek",del:"Odstranit tabulku","copy_row_desc":"Kop\u00edrovat \u0159\u00e1dek tabulky","cut_row_desc":"Vyjmout \u0159\u00e1dek tabulky","paste_row_after_desc":"Vlo\u017eit \u0159\u00e1dek za","paste_row_before_desc":"Vlo\u017eit \u0159\u00e1dek p\u0159ed","props_desc":"Vlastnosti tabulky","cell_desc":"Vlastnosti bu\u0148ky","row_desc":"Vlastnosti \u0159\u00e1dku tabulky","merge_cells_desc":"Slou\u010dit bu\u0148ky","split_cells_desc":"Rozd\u011blit bu\u0148ky","delete_col_desc":"Odstranit sloupec tabulky","col_after_desc":"Vlo\u017eit sloupec za","col_before_desc":"Vlo\u017eit sloupec p\u0159ed","delete_row_desc":"Odstranit \u0159\u00e1dek tabulky","row_after_desc":"Vlo\u017eit \u0159\u00e1dek za","row_before_desc":"Vlo\u017eit \u0159\u00e1dek p\u0159ed",desc:"Vlo\u017eit novou tabulku","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","cellprops_delta_height":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"Pokud obnov\u00edte ulo\u017een\u00fd obsah, ztrat\u00edte t\u00edm ve\u0161ker\u00fd obsah, kter\u00fd je pr\u00e1v\u011b v okn\u011b editoru.\n\nOpravdu chcete obnovit ulo\u017een\u00fd obsah?","restore_content":"Obnovit automaticky ulo\u017een\u00fd obsah.","unload_msg":"Proveden\u00e9 zm\u011bny mohou b\u00fdt ztraceny, jestli\u017ee opust\u00edte tuto str\u00e1nku."},fullscreen:{desc:"P\u0159epnout na celostr\u00e1nkov\u00e9 zobrazen\u00ed"},media:{"delta_width":"130",edit:"Upravit m\u00e9dia",desc:"Vlo\u017eit/upravit m\u00e9dia","delta_height":""},fullpage:{desc:"Vlastnosti dokumentu","delta_width":"110","delta_height":""},template:{desc:"Vlo\u017eit p\u0159eddefinovan\u00fd obsah ze \u0161ablony"},visualchars:{desc:"Zobrazen\u00ed skryt\u00fdch znak\u016f zap/vyp"},spellchecker:{desc:"P\u0159epnout kontrolu pravopisu",menu:"Nastaven\u00ed kontroly pravopisu","ignore_word":"Ignorovat slovo","ignore_words":"Ignorovat v\u0161e",langs:"Jazyky",wait:"\u010cekejte pros\u00edm...",sug:"N\u00e1pov\u011bda","no_sug":"\u017d\u00e1dn\u00e1 n\u00e1pov\u011bda","no_mpell":"Nebyly nalezeny \u017e\u00e1dn\u00e9 chyby.","learn_word":"Nau\u010dit slovo"},pagebreak:{desc:"Vlo\u017eit konec str\u00e1nky"},advlist:{types:"Typ",def:"V\u00fdchoz\u00ed","lower_alpha":"Mal\u00e1 p\u00edsmena","lower_greek":"Mal\u00e1 \u0159eck\u00e1 p\u00edsmena","lower_roman":"Mal\u00e9 \u0159\u00edmsk\u00e9 \u010d\u00edslice","upper_alpha":"Velk\u00e1 p\u00edsmena","upper_roman":"Velk\u00e9 \u0159\u00edmsk\u00e9 \u010d\u00edslice",circle:"Kole\u010dko",disc:"Punt\u00edk",square:"\u010ctvere\u010dek"},colors:{"333300":"Tmav\u011b olivov\u00e1","993300":"Tmav\u011b oran\u017eov\u00e1","000000":"\u010cern\u00e1","003300":"Tmav\u011b zelen\u00e1","003366":"Tmav\u011b azurov\u00e1","000080":"N\u00e1mo\u0159nick\u00e1 modr\u00e1","333399":"Indigo modr\u00e1","333333":"Tmav\u011b \u0161ed\u00e1","800000":"Tmav\u011b \u010derven\u00e1",FF6600:"Oran\u017eov\u00e1","808000":"Olivov\u00e1","008000":"Zelen\u00e1","008080":"Modrozelen\u00e1","0000FF":"Modr\u00e1","666699":"\u0160edomodr\u00e1","808080":"\u0160ed\u00e1",FF0000:"\u010cerven\u00e1",FF9900:"Jantarov\u00e1","99CC00":"\u017dlutozelen\u00e1","339966":"Mo\u0159sk\u00e1 zelen\u00e1","33CCCC":"Tyrkysov\u00e1","3366FF":"Kr\u00e1lovsk\u00e1 modr\u00e1","800080":"Nachov\u00e1","999999":"Sv\u011btle \u0161ed\u00e1",FF00FF:"Purpurov\u00e1",FFCC00:"Zlat\u00e1",FFFF00:"\u017dlut\u00e1","00FF00":"Limetkov\u00e1","00FFFF":"Vodn\u00ed","00CCFF":"Nebesk\u00e1 modr\u00e1","993366":"Hn\u011bd\u00e1",C0C0C0:"St\u0159\u00edbrn\u00e1",FF99CC:"R\u016f\u017eov\u00e1",FFCC99:"Broskvov\u00e1",FFFF99:"Sv\u011btle \u017elut\u00e1",CCFFCC:"Sv\u011btle zelen\u00e1",CCFFFF:"Sv\u011btle azurov\u00e1","99CCFF":"Sv\u011btl\u00e1 nebesk\u00e1 modr\u00e1",CC99FF:"\u0160vestkov\u00e1",FFFFFF:"B\u00edl\u00e1"},aria:{"rich_text_area":"Oblast s form\u00e1tovan\u00fdm textem"},wordcount:{words:"Po\u010det slov: "}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/cy.js b/program/js/tiny_mce/langs/cy.js
deleted file mode 100644
index 51a6c0ea9..000000000
--- a/program/js/tiny_mce/langs/cy.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({cy:{common:{"more_colors":"Mwy o liwiau","invalid_data":"Gwall: Gwerthau allilys wedi mewnbynnu, mae\'r gwerthau yma wedi eu marcio mewn coch.","popup_blocked":"Rydym wedi sylwi fod eich popup-blocker wedi analluogi ffenest sy\'n darparu swyddogaeth cymhwysiad. Bydd rhaid i chi analluogi blocio popups ar gyfer y safle yma i ddefnyddio\'r offeryn yma.","clipboard_no_support":"Dim wedi\'i gynnal gan eich porwr, defnyddiwch Currently not supported by your browser, use keyboard shortcuts instead.","clipboard_msg":"Nid yw Cop\u00efo/Torri/Gludo ar gael mewn Mozilla a Firefox.\nYdych chi eisiau mwy o wybodaeth am y mater yma?","not_set":"-- Nid wedi osod --","class_name":"Dosbarth",browse:"Pori",close:"Cau",cancel:"Diddymu",update:"Diweddaru",insert:"Mewnosod",apply:"Gosod","edit_confirm":"Ydych chi eisiau defnyddio\'r modd WYSIWYG ar gyfer y textarea yma?","invalid_data_number":"Rhaid {#field} fod yn rhif","invalid_data_min":"Rhaid {#field} fod yn rhif fwy na {#min}","invalid_data_size":"Rhaid {#field} fod yn rhif neu ganran",value:"(gwerth)"},contextmenu:{full:"Llawn",right:"De",center:"Canol",left:"Chwith",align:"Aliniad"},insertdatetime:{"day_short":"Sul,Llu,Maw,Mer,Iau,Gwe,Sad,Sul","day_long":"Sul,Llun,Mawrth,Mercher,Iau,Gwener,Sadwrn,Sul","months_short":"Ion,Chw,Maw,Ebr,Mai,Meh,Gor,Aws,Med,Hyd,Tac,Rha","months_long":"Ionawr,Chwefror,Mawrth,Ebrill,Mai,Mehefin,Goffennaf,Awst,Medi,Hydref,Tachwedd,Rhagfyr","inserttime_desc":"Mewnosod amser","insertdate_desc":"Mewnosod dyddiad","time_fmt":"%H:%M:%S","date_fmt":"%Y-%m-%d"},print:{"print_desc":"Argraffu"},preview:{"preview_desc":"Rhagolygu"},directionality:{"rtl_desc":"Cyfeiriad de i\'r chwith","ltr_desc":"Cyfeiriad chwith i\'r dde"},layer:{content:"Haen newydd...","absolute_desc":"Toglu lleoli absoliwt","backward_desc":"Symud n\u00f4l","forward_desc":"Symud ymlaen","insertlayer_desc":"Mewnosod haen newydd"},save:{"save_desc":"Cadw","cancel_desc":"Cadw pob newidiad"},nonbreaking:{"nonbreaking_desc":"Mewnosod n\u00f4d bwlch do-doriad"},iespell:{download:"ieSpell dim wedi\'i canfod. A ydych eisiau ei gosod rwan?","iespell_desc":"Rhedeg gwirio sillafu"},advhr:{"advhr_desc":"Mesurydd llorweddol","delta_height":"","delta_width":""},emotions:{"emotions_desc":"Emosiynau","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"Canfod/Amnewid","search_desc":"Canfod","delta_width":"","delta_height":""},advimage:{"image_desc":"Mewnosod/golygu delwedd","delta_width":"","delta_height":""},advlink:{"link_desc":"Mewnosod/Golygu cyswllt","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"Mewnosod/Golygu Priodoleddau","ins_desc":"Mewnosodiad","del_desc":"Dilead","acronym_desc":"Acronym","abbr_desc":"Talfyriad","cite_desc":"Dyfyniad","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"Golygu Arddull CSS","delta_height":"","delta_width":""},paste:{"plaintext_mode":"Gludo rwan mewn modd testun plaen. Cliciwch eto i doglu n\u00f4l i fodd gludo normal.","plaintext_mode_sticky":"Gludo rwan mewn modd testun plaen. Cliciwch eto i doglu n\u00f4l i fodd gludo normal. Byddwch yn cael eich dychwelyd i fodd gludo normal ar \u00f4l gludo rhywbeth.","selectall_desc":"Dewis Pobpeth","paste_word_desc":"Gludo o Word","paste_text_desc":"Gludo fel Testun Plaen"},"paste_dlg":{"word_title":"Defnyddiwch CTRL+V ar eich bysellfwrdd i ludo\'r testun i fewn i\'r ffenest.","text_linebreaks":"Cadw toriadau llinell","text_title":"Defnyddiwch CTRL+V ar eich bysellfwrdd i ludo\'r testun i fewn i\'r ffenest."},table:{cell:"Cell",col:"Colofn",row:"Rhes",del:"Dileu tabl","copy_row_desc":"Cop\u00efo rhes tabl","cut_row_desc":"Torri rhes tabl","paste_row_after_desc":"Gludo rhes tabl ar \u00f4l","paste_row_before_desc":"Gludo rhes tabl cyn","props_desc":"Priodweddau tabl","cell_desc":"Priodweddau cell tabl","row_desc":"Priodweddau rhes tabl","merge_cells_desc":"Cyfuno celloedd tabl","split_cells_desc":"Hollti celloedd tabl cyfuniedig","delete_col_desc":"Tynnu colofn","col_after_desc":"Mewnosod colofn ar \u00f4l","col_before_desc":"Mewnosod colofn cyn","delete_row_desc":"Dileu rhes","row_after_desc":"Mewnosod rhes ar \u00f4l","row_before_desc":"Mewnosod rhes cyn",desc:"Mewnosod tabl newydd","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"Os adferwch chi\'r cynnwys cadwedig, byddwch yn colli\'r holl cynnwys sydd yn bresennol yn y golygydd.\n\nA ydych chi\'n si\u0175r eich bod eisiau adfer y cynnwys cadwedig?.","restore_content":"Adfer cynnwys awto-cadwedig.","unload_msg":"Bydd eich newidiadau yn cael eu colli os byddwch yn llywio i ffwrdd o\'r tudalen yma."},fullscreen:{desc:"Togl Modd Sgrin Llawn"},media:{edit:"Golygu Cyfrwng a Fewnosodwyd",desc:"Mewnosod/Golygu Cyfrwng a Fewnosodwyd","delta_height":"","delta_width":""},fullpage:{desc:"Priodweddau dogfen","delta_width":"","delta_height":""},template:{desc:"Mewnosod cynnwys templed rhagosodol"},visualchars:{desc:"Nodau rheolaeth ymlaen/i ffwrdd."},spellchecker:{desc:"Toglu cywiriadau",menu:"Gosodiadau cywiriadau","ignore_word":"Anwybyddu gair","ignore_words":"Anwybyddu pob un",langs:"Ieithoedd",wait:"Aroswch, os gwelwch yn dda...",sug:"Awgrymiadau","no_sug":"Dim awgrymiadau","no_mpell":"Dim camsillafiadau wedi\'i canfod.","learn_word":"Dysgu gair"},pagebreak:{desc:"Mewnosod toriad tudalen."},advlist:{types:"Mathau",def:"Rhagosodedig","lower_alpha":"Alffa is","lower_greek":"Groegaiddd is","lower_roman":"Rhufeinig is","upper_alpha":"Alffa uwch","upper_roman":"Rhufeinig uwch",circle:"Cylch",disc:"Disg",square:"Sgw\u00e2r"},colors:{"333300":"Olif tywyll","993300":"Oren llosgedig","000000":"Du","003300":"Gwyrdd tywyll","003366":"Asur tywyll","000080":"Glas Nefi","333399":"Indigo","333333":"Llwyd tywyll iawn","800000":"Mar\u0175n",FF6600:"Oren","808000":"Olif","008000":"Gwyrdd","008080":"Teal","0000FF":"Glas","666699":"Glas llwydaidd","808080":"Llwyd",FF0000:"Coch",FF9900:"Melyngoch","99CC00":"Melyn gwyrdd","339966":"Gwyrdd y m\u00f4r","33CCCC":"Gwyrddlas","3366FF":"Glas brenhinol","800080":"Porffor","999999":"Llwyd canolig",FF00FF:"Magenta",FFCC00:"Aur",FFFF00:"Melyn","00FF00":"Leim","00FFFF":"Acwa","00CCFF":"Glas yr awyr","993366":"Brown",C0C0C0:"Arian",FF99CC:"Pinc",FFCC99:"Eirinen wlanog",FFFF99:"Melyn golau",CCFFCC:"Gwyrdd ysgafn",CCFFFF:"Cyan ysgafn","99CCFF":"Glas yr awyr golau",CC99FF:"Plwm",FFFFFF:"Gwyn"},aria:{"rich_text_area":"Ardal Testun Cyfoethog"},wordcount:{words:"Geiriau:"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/da.js b/program/js/tiny_mce/langs/da.js
deleted file mode 100644
index 36c75407d..000000000
--- a/program/js/tiny_mce/langs/da.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({da:{common:{"more_colors":"Flere farver","invalid_data":"Fejl: Forkerte v\u00e6rdier indtastet i felter markeret med r\u00f8d.","popup_blocked":"Undskyld, men vi har noteret os, at din popup-blocker har forhindret et vindue, der giver programmet funktionalitet, at \u00e5bne op. Hvis du vil have den fulde funktionalitet, m\u00e5 du sl\u00e5 popup-blockeren fra for dette websted.","clipboard_no_support":"P\u00e5 nuv\u00e6rende tidspunkt ikke supporteret af din browser. Anvend i stedet genvejene p\u00e5 tastaturet.","clipboard_msg":"Kopier/Klip/inds\u00e6t er ikke muligt i Mozilla eller Firefox.\nVil du have mere information om dette emne?","not_set":"-- Ikke sat --","class_name":"Klasse",browse:"Gennemse",close:"Luk",cancel:"Annuller",update:"Opdater",insert:"Inds\u00e6t",apply:"Anvend","edit_confirm":"Vil du bruge den avancerede tekstredigering?","invalid_data_number":"{#field} skal v\u00e6re et tal","invalid_data_min":"{#field} skal v\u00e6re et tal {#min}","invalid_data_size":"{#field} skal v\u00e6re et tal eller en procentsats",value:"(v\u00e6rdi)"},contextmenu:{full:"Lige marginer",right:"H\u00f8jre",center:"Centreret",left:"Venstre",align:"Justering"},insertdatetime:{"day_short":"S\u00f8n,Man,Tir,Ons,Tors,Fre,L\u00f8r,S\u00f8n","day_long":"S\u00f8ndag,Mandag,Tirsdag,Onsdag,Torsdag,Fredag,L\u00f8rdag,S\u00f8ndag","months_short":"Jan,Feb,Mar,Apr,Maj,Jun,Jul,Aug,Sep,Okt,Nov,Dec","months_long":"Januar,Februar,Marts,April,Maj,Juni,Juli,August,September,Oktober,November,December","inserttime_desc":"Inds\u00e6t klokkeslet","insertdate_desc":"Inds\u00e6t dato","time_fmt":"%H:%M:%S","date_fmt":"%Y-%m-%d"},print:{"print_desc":"Udskriv"},preview:{"preview_desc":"Vis udskrift"},directionality:{"rtl_desc":"Retning h\u00f8jre mod venstre","ltr_desc":"Retning venstre mod h\u00f8jre"},layer:{content:"Nyt lag...","absolute_desc":"Sl\u00e5 absolut positionering til/fra","backward_desc":"Flyt bagud","forward_desc":"Flyt fremad","insertlayer_desc":"Inds\u00e6t nyt lag"},save:{"save_desc":"Gem","cancel_desc":"Annuller alle \u00e6ndringer"},nonbreaking:{"nonbreaking_desc":"Inds\u00e6t et blanktegn"},iespell:{download:"ieSpell blev ikke fundet. Vil du installere det nu?","iespell_desc":"Udf\u00f8r stavekontrol"},advhr:{"advhr_desc":"Horisontal linie","delta_height":"","delta_width":""},emotions:{"emotions_desc":"Hum\u00f8rikoner","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"S\u00f8g/erstat","search_desc":"S\u00f8g","delta_width":"","delta_height":""},advimage:{"image_desc":"Inds\u00e6t/rediger billede","delta_width":"","delta_height":""},advlink:{"delta_width":"40","link_desc":"Inds\u00e6t/rediger link","delta_height":""},xhtmlxtras:{"attribs_desc":"Inds\u00e6t/rediger attributter","ins_desc":"Inds\u00e6ttelse","del_desc":"Sletning","acronym_desc":"Akronym","abbr_desc":"Forkortelse","cite_desc":"Citat","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"Rediger CSS stil","delta_height":"","delta_width":""},paste:{"plaintext_mode":"Inds\u00e6t er nu i ikke-formateret modus. Klik igen for at skfite tilbage til almindelig inds\u00e6t modus.","plaintext_mode_sticky":"Inds\u00e6t er nu i ikke-formateret modus. Klik igen for at skfite tilbage til almindelig inds\u00e6t modus. Efter du har indsat noget s\u00e6ttes du automatisk tilbaeg til alminde inds\u00e6t modus.","selectall_desc":"V\u00e6lg alle","paste_word_desc":"Inds\u00e6t fra Word","paste_text_desc":"Inds\u00e6t ikke-formatteret tekst"},"paste_dlg":{"word_title":"Anvend CTRL+V p\u00e5 tastaturet for at inds\u00e6tte teksten.","text_linebreaks":"Bevar linieskift","text_title":"Anvend CTRL+V p\u00e5 tastaturet for at inds\u00e6tte teksten."},table:{cell:"Celle",col:"Kolonne",row:"R\u00e6kke",del:"Slet tabel","copy_row_desc":"Kopier r\u00e6kke","cut_row_desc":"Klip r\u00e6kke","paste_row_after_desc":"Inds\u00e6t r\u00e6kke efter","paste_row_before_desc":"Inds\u00e6t r\u00e6kke f\u00f8r","props_desc":"Tabelegenskaber","cell_desc":"Celleegenskaber","row_desc":"R\u00e6kkeegenskaber","merge_cells_desc":"Flet celler","split_cells_desc":"Opdel flettede celler","delete_col_desc":"Slet kolonne","col_after_desc":"Inds\u00e6t kolonne efter","col_before_desc":"Inds\u00e6t kolonne f\u00f8r","delete_row_desc":"Slet r\u00e6kke","row_after_desc":"Inds\u00e6t r\u00e6kke efter","row_before_desc":"Inds\u00e6t r\u00e6kke f\u00f8r",desc:"Inds\u00e6t tabel","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"Hvis du genskaber det gemte indhold vil du miste al det indhold der lige nu er i editoren.nnEr du sikker p\u00e5 du vil genskabe det gemte indhold?","restore_content":"Genskab det gemte indhold.","unload_msg":"Har du foretaget nogle \u00e6ndringer, vil de g\u00e5 tabt, hvis du navigerer v\u00e6k fra denne side."},fullscreen:{desc:"Vis/skjul fuldsk\u00e6rmstilstand"},media:{edit:"Rediger indlejret mediefil",desc:"Inds\u00e6t/rediger indlejret mediefil","delta_height":"","delta_width":""},fullpage:{desc:"Dokumentegenskaber","delta_width":"","delta_height":""},template:{desc:"Inds\u00e6t pr\u00e6defineret skabelonindhold"},visualchars:{desc:"Vis/Skjul visuelle kontroltegn."},spellchecker:{desc:"Vis/skjul stavekontrol",menu:"Indstillinger for stavekontrol","ignore_word":"Ignorer ord","ignore_words":"Ignorer alle",langs:"Sprog",wait:"Vent venligst...",sug:"Forslag","no_sug":"Ingen forslag","no_mpell":"Ingen stavefejl fundet.","learn_word":"L\u00e6r ordet"},pagebreak:{desc:"Inds\u00e6t sideskift."},advlist:{types:"Typer",def:"Standard","lower_alpha":"Sm\u00e5 alfa","lower_greek":"Sm\u00e5 gr\u00e6ske","lower_roman":"Sm\u00e5 romertal","upper_alpha":"Store alfa","upper_roman":"Store romertal",circle:"Cirkel",disc:"Prik",square:"Firkant"},colors:{"333300":"M\u00f8rk oliven","993300":"Br\u00e6ndt orange","000000":"Sort","003300":"M\u00f8rkegr\u00f8n","003366":"Bl\u00e5 azur","000080":"Navy bl\u00e5","333399":"Indigo","333333":"Meget m\u00f8rk gr\u00e5","800000":"Maroon",FF6600:"Orange","808000":"Oliven","008000":"Gr\u00f8n","008080":"Teal","0000FF":"Bl\u00e5","666699":"Gr\u00e5bl\u00e5","808080":"Gr\u00e5",FF0000:"R\u00f8d",FF9900:"Amber","99CC00":"Gulgr\u00f8n","339966":"S\u00f8gr\u00f8n","33CCCC":"Turkis","3366FF":"Royal bl\u00e5","800080":"Violet","999999":"Medium gr\u00e5",FF00FF:"Magenta",FFCC00:"Guld",FFFF00:"Gul","00FF00":"Lime","00FFFF":"Aqua","00CCFF":"Himmelbl\u00e5","993366":"Brun",C0C0C0:"S\u00f8lv",FF99CC:"Pink",FFCC99:"Fersken",FFFF99:"Lysgul",CCFFCC:"Bleggr\u00f8n",CCFFFF:"Pale cyan","99CCFF":"Lys himmelb\u00e6\u00e5",CC99FF:"Plum",FFFFFF:"Hvis"},aria:{"rich_text_area":"Tekstomr\u00e5de med formatering"},wordcount:{words:"Ord:"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/de.js b/program/js/tiny_mce/langs/de.js
deleted file mode 100644
index 149440626..000000000
--- a/program/js/tiny_mce/langs/de.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({de:{common:{"more_colors":"Weitere Farben","invalid_data":"Fehler: Sie haben ung\u00fcltige Werte eingegeben (rot markiert).","popup_blocked":"Leider hat Ihr Popup-Blocker ein Fenster unterbunden, das f\u00fcr den Betrieb dieses Programms n\u00f6tig ist. Bitte deaktivieren Sie den Popup-Blocker f\u00fcr diese Seite.","clipboard_no_support":"Wird derzeit in Ihrem Browser nicht unterst\u00fctzt. Bitte benutzen Sie stattdessen die Tastenk\u00fcrzel.","clipboard_msg":"Kopieren, Ausschneiden und Einf\u00fcgen sind im Mozilla Firefox nicht m\u00f6glich.\nM\u00f6chten Sie mehr \u00fcber dieses Problem erfahren?","not_set":"- unbestimmt -","class_name":"CSS-Klasse",browse:"Durchsuchen",close:"Schlie\u00dfen",cancel:"Abbrechen",update:"Aktualisieren",insert:"Einf\u00fcgen",apply:"\u00dcbernehmen","edit_confirm":"M\u00f6chten Sie diesen Text jetzt bearbeiten?","invalid_data_number":"{#field} muss eine Zahl sein","invalid_data_min":"{#field} muss eine Zahl gr\u00f6\u00dfer als {#min} sein","invalid_data_size":"{#field} muss eine Zahl oder ein Prozentwert sein",value:"(Wert)"},contextmenu:{full:"Blocksatz",right:"Rechtsb\u00fcndig",center:"Zentriert",left:"Linksb\u00fcndig",align:"Ausrichtung"},insertdatetime:{"day_short":"So,Mo,Di,Mi,Do,Fr,Sa,So","day_long":"Sonntag,Montag,Dienstag,Mittwoch,Donnerstag,Freitag,Samstag,Sonntag","months_short":"Jan,Feb,M\u00e4r,Apr,Mai,Juni,Juli,Aug,Sept,Okt,Nov,Dez","months_long":"Januar,Februar,M\u00e4rz,April,Mai,Juni,Juli,August,September,Oktober,November,Dezember","inserttime_desc":"Zeit einf\u00fcgen","insertdate_desc":"Datum einf\u00fcgen","time_fmt":"%H:%M:%S","date_fmt":"%d.%m.%Y"},print:{"print_desc":"Drucken"},preview:{"preview_desc":"Vorschau"},directionality:{"rtl_desc":"Schrift von rechts nach links","ltr_desc":"Schrift von links nach rechts"},layer:{content:"Neue Ebene...","absolute_desc":"Absolute Positionierung","backward_desc":"Nach hinten legen","forward_desc":"Nach vorne holen","insertlayer_desc":"Neue Ebene einf\u00fcgen"},save:{"save_desc":"Speichern","cancel_desc":"Alle \u00c4nderungen verwerfen"},nonbreaking:{"nonbreaking_desc":"Gesch\u00fctztes Leerzeichen einf\u00fcgen"},iespell:{download:"ieSpell konnte nicht gefunden werden. Wollen Sie es installieren?","iespell_desc":"Rechtschreibpr\u00fcfung"},advhr:{"advhr_desc":"Trennlinie","delta_height":"","delta_width":""},emotions:{"emotions_desc":"Smilies","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"Suchen/Ersetzen","search_desc":"Suchen","delta_width":"","delta_height":""},advimage:{"image_desc":"Bild einf\u00fcgen/ver\u00e4ndern","delta_width":"","delta_height":""},advlink:{"link_desc":"Link einf\u00fcgen/ver\u00e4ndern","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"Attribute einf\u00fcgen/bearbeiten","ins_desc":"Eingef\u00fcgter Text","del_desc":"Entfernter Text","acronym_desc":"Akronym","abbr_desc":"Abk\u00fcrzung","cite_desc":"Quellenangabe","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"CSS-Styles bearbeiten","delta_height":"","delta_width":""},paste:{"plaintext_mode":"Einf\u00fcgemodus ist nun \"Nur Text\". Erneut klicken stellt den Normalmodus wieder her.","plaintext_mode_sticky":"Einf\u00fcgemodus ist nun \"Nur Text\". Erneut klicken (oder das Einf\u00fcgen aus der Zwischenablage) stellt den Normalmodus wieder her.","selectall_desc":"Alles ausw\u00e4hlen","paste_word_desc":"Mit Formatierungen (aus Word) einf\u00fcgen","paste_text_desc":"Als einfachen Text einf\u00fcgen"},"paste_dlg":{"word_title":"Dr\u00fccken Sie auf Ihrer Tastatur Strg+V, um den Text einzuf\u00fcgen.","text_linebreaks":"Zeilenumbr\u00fcche beibehalten","text_title":"Dr\u00fccken Sie auf Ihrer Tastatur Strg+V, um den Text einzuf\u00fcgen."},table:{"cellprops_delta_width":"150",cell:"Zelle",col:"Spalte",row:"Zeile",del:"Tabelle l\u00f6schen","copy_row_desc":"Zeile kopieren","cut_row_desc":"Zeile ausschneiden","paste_row_after_desc":"Zeile unterhalb aus der Zwischenablage einf\u00fcgen","paste_row_before_desc":"Zeile oberhalb aus der Zwischenablage einf\u00fcgen","props_desc":"Eigenschaften der Tabelle","cell_desc":"Eigenschaften der Zelle","row_desc":"Eigenschaften der Zeile","merge_cells_desc":"Zellen verbinden","split_cells_desc":"Verbundene Zellen trennen","delete_col_desc":"Spalte l\u00f6schen","col_after_desc":"Spalte rechts einf\u00fcgen","col_before_desc":"Spalte links einf\u00fcgen","delete_row_desc":"Zeile l\u00f6schen","row_after_desc":"Zeile unterhalb einf\u00fcgen","row_before_desc":"Zeile oberhalb einf\u00fcgen",desc:"Tabelle erstellen/bearbeiten","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"Wenn Sie den Inhalt wiederherstellen, gehen die aktuellen Daten im Editor verloren.\n\nSind sie sicher, dass Sie den Inhalt wiederherstellen m\u00f6chten?","restore_content":"Automatisch gespeicherten Inhalt wiederherstellen.","unload_msg":"Ihre \u00c4nderungen werden verloren gehen, wenn Sie die Seite verlassen."},fullscreen:{desc:"Vollbildschirm"},media:{edit:"Multimediaeinbettung bearbeiten",desc:"Multimedia einbetten/bearbeiten","delta_height":"","delta_width":""},fullpage:{desc:"Dokument-Eigenschaften","delta_width":"","delta_height":""},template:{desc:"Inhalt aus Vorlage einf\u00fcgen"},visualchars:{desc:"Sichtbarkeit der Steuerzeichen an/aus"},spellchecker:{desc:"Rechtschreibpr\u00fcfung an/aus",menu:"Einstellungen der Rechtschreibpr\u00fcfung","ignore_word":"Wort ignorieren","ignore_words":"Alle ignorieren",langs:"Sprachen",wait:"Bitte warten...",sug:"Vorschl\u00e4ge","no_sug":"Keine Vorschl\u00e4ge","no_mpell":"Keine Rechtschreibfehler gefunden.","learn_word":"Zum W\u00f6rterbuch hinzuf\u00fcgen"},pagebreak:{desc:"Seitenumbruch einf\u00fcgen"},advlist:{types:"Typen",def:"Standard","lower_alpha":"a. b. c.","lower_greek":"1. 2. 3.","lower_roman":"i. ii. iii.","upper_alpha":"A. B. C.","upper_roman":"I. II. III.",circle:"Kreis",disc:"Punkt",square:"Quadrat"},colors:{"333300":"Dunkeloliv","993300":"Orange","000000":"Schwarz","003300":"Dunkelgr\u00fcn","003366":"Dunkles himmelblau","000080":"Marineblau","333399":"Indigoblau","333333":"Sehr dunkelgrau","800000":"Kastanienbraun",FF6600:"Orange","808000":"Oliv","008000":"Gr\u00fcn","008080":"Blaugr\u00fcn","0000FF":"Blau","666699":"Graublau","808080":"Grau",FF0000:"Rot",FF9900:"Bernsteinfarben","99CC00":"Gelbgr\u00fcn","339966":"Meergr\u00fcn","33CCCC":"T\u00fcrkis","3366FF":"K\u00f6nigsblau","800080":"Violett","999999":"Mittelgrau",FF00FF:"Magenta",FFCC00:"Gold",FFFF00:"Gelb","00FF00":"Hellgr\u00fcn","00FFFF":"Aquamarinblau","00CCFF":"Himmelblau","993366":"Braun",C0C0C0:"Silber",FF99CC:"Rosa",FFCC99:"Pfirsichfarben",FFFF99:"Hellgelb",CCFFCC:"Blassgr\u00fcn",CCFFFF:"Blasst\u00fcrkis","99CCFF":"Helles himmelblau",CC99FF:"Pflaumenblau",FFFFFF:"Wei\u00df"},aria:{"rich_text_area":"Rich Text Bereich"},wordcount:{words:"W\u00f6rter: "}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/el.js b/program/js/tiny_mce/langs/el.js
deleted file mode 100644
index 084193b85..000000000
--- a/program/js/tiny_mce/langs/el.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({el:{common:{"more_colors":"\u03a0\u03b5\u03c1\u03b9\u03c3\u03c3\u03cc\u03c4\u03b5\u03c1\u03b1 \u03c7\u03c1\u03ce\u03bc\u03b1\u03c4\u03b1","invalid_data":"Error: Invalid values entered, these are marked in red.","popup_blocked":"\u0388\u03bd\u03b1 popup-blocker \u03c0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1 \u03ad\u03c7\u03b5\u03b9 \u03b1\u03c0\u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03b9 \u03ad\u03bd\u03b1 \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf \u03b1\u03c0\u03b1\u03c1\u03b1\u03af\u03c4\u03b7\u03c4\u03bf \u03b3\u03b9\u03b1 \u03c4\u03b7\u03bd \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae. \u03a0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03c4\u03bf \u03b1\u03c0\u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03c4\u03b5 \u03b3\u03b9\u03b1 \u03c4\u03b7\u03bd \u03b9\u03c3\u03c4\u03bf\u03c3\u03b5\u03bb\u03af\u03b4\u03b1 \u03b1\u03c5\u03c4\u03ae \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03c4\u03b5 \u03c0\u03bb\u03ae\u03c1\u03c9\u03c2 \u03c4\u03b7\u03bd \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae.","clipboard_no_support":"\u0394\u03b5\u03bd \u03c5\u03c0\u03bf\u03c3\u03c4\u03b7\u03c1\u03af\u03b6\u03b5\u03c4\u03b1\u03b9 \u03b1\u03c0\u03cc \u03c4\u03bf\u03bd \u03c6\u03c5\u03bb\u03bb\u03bf\u03bc\u03b5\u03c4\u03c1\u03b7\u03c4\u03ae \u03c3\u03b1\u03c2, \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03c4\u03b5 \u03c4\u03b9\u03c2 \u03c3\u03c5\u03bd\u03c4\u03bf\u03bc\u03b5\u03cd\u03c3\u03b5\u03b9\u03c2 \u03c0\u03bb\u03b7\u03ba\u03c4\u03c1\u03bf\u03bb\u03bf\u03b3\u03af\u03bf\u03c5.","clipboard_msg":"\u039f\u03b9 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b5\u03c2 \u0391\u03bd\u03c4\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae/\u0391\u03c0\u03bf\u03ba\u03bf\u03c0\u03ae/\u0395\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7 \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03b9\u03b1\u03b8\u03ad\u03c3\u03b9\u03bc\u03b5\u03c2 \u03c3\u03b5 Mozilla \u03ba\u03b1\u03b9 Firefox.\n\u0398\u03ad\u03bb\u03b5\u03c4\u03b5 \u03c0\u03b5\u03c1\u03b9\u03c3\u03c3\u03cc\u03c4\u03b5\u03c1\u03b5\u03c2 \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 ;","not_set":"-- \u039c\u03b7 \u03bf\u03c1\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf --","class_name":"\u039a\u03bb\u03ac\u03c3\u03b7",browse:"\u0395\u03cd\u03c1\u03b5\u03c3\u03b7",close:"\u039a\u03bb\u03b5\u03af\u03c3\u03b9\u03bc\u03bf",cancel:"\u0386\u03ba\u03c5\u03c1\u03bf",update:"\u0395\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7",insert:"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae",apply:"\u0395\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae","edit_confirm":"\u0398\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03c4\u03b5 \u03c4\u03b7\u03bd \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 WYSIWYG ;","invalid_data_number":"{#field} \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b1\u03c1\u03b9\u03b8\u03bc\u03cc\u03c2","invalid_data_min":"{#field} \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b1\u03c1\u03b9\u03b8\u03bc\u03cc\u03c2 \u03bc\u03b5\u03b3\u03b1\u03bb\u03cd\u03c4\u03b5\u03c1\u03bf\u03c2 \u03c4\u03bf\u03c5 {#min}","invalid_data_size":"{#field} \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b1\u03c1\u03b9\u03b8\u03bc\u03cc\u03c2 \u03ae \u03c0\u03bf\u03c3\u03bf\u03c3\u03c4\u03cc",value:"(value)"},contextmenu:{full:"\u03a0\u03bb\u03ae\u03c1\u03b7\u03c2",right:"\u0394\u03b5\u03be\u03b9\u03ac",center:"\u039a\u03ad\u03bd\u03c4\u03c1\u03bf",left:"\u0391\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac",align:"\u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7"},insertdatetime:{"day_short":"\u039a\u03c5,\u0394\u03b5,\u03a4\u03c1,\u03a4\u03b5\u03c4,\u03a0\u03ad\u03bc,\u03a0\u03b1\u03c1,\u03a3\u03b1\u03b2","day_long":"\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae,\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1,\u03a4\u03c1\u03af\u03c4\u03b7,\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7,\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7,\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae,\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf","months_short":"\u0399\u03b1\u03bd,\u03a6\u03b5\u03b2,\u039c\u03ac\u03c1,\u0391\u03c0\u03c1,\u039c\u03ac\u03b9,\u0399\u03bf\u03cd\u03bd,\u0399\u03bf\u03cd\u03bb,\u0391\u03cd\u03b3,\u03a3\u03b5\u03c0,\u039f\u03ba\u03c4,\u039d\u03bf\u03ad,\u0394\u03b5\u03ba","months_long":"\u0399\u03b1\u03bd\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2,\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2,\u039c\u03ac\u03c1\u03c4\u03b9\u03bf\u03c2,\u0391\u03c0\u03c1\u03af\u03bb\u03b9\u03bf\u03c2,\u039c\u03ac\u03b9\u03bf\u03c2,\u0399\u03bf\u03cd\u03bd\u03b9\u03bf\u03c2,\u0399\u03bf\u03cd\u03bb\u03b9\u03bf\u03c2,\u0391\u03cd\u03b3\u03bf\u03c5\u03c3\u03c4\u03bf\u03c2,\u03a3\u03b5\u03c0\u03c4\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2,\u039f\u03ba\u03c4\u03ce\u03b2\u03c1\u03b9\u03bf\u03c2,\u039d\u03bf\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2,\u0394\u03b5\u03ba\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2","inserttime_desc":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03ce\u03c1\u03b1\u03c2","insertdate_desc":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03b7\u03bc\u03ad\u03c1\u03b1\u03c2","time_fmt":"%H:%M:%S","date_fmt":"%Y-%m-%d"},print:{"print_desc":"\u0395\u03ba\u03c4\u03cd\u03c0\u03c9\u03c3\u03b7"},preview:{"preview_desc":"\u03a0\u03c1\u03bf\u03b5\u03c0\u03b9\u03c3\u03ba\u03cc\u03c0\u03b7\u03c3\u03b7"},directionality:{"rtl_desc":"\u039a\u03b1\u03c4\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 \u03b4\u03b5\u03be\u03b9\u03ac \u03c0\u03c1\u03bf\u03c2 \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac","ltr_desc":"\u039a\u03b1\u03c4\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac \u03c0\u03c1\u03bf\u03c2 \u03b4\u03b5\u03be\u03b9\u03ac"},layer:{content:"\u039d\u03ad\u03bf layer...","absolute_desc":"\u0391\u03c0\u03cc\u03bb\u03c5\u03c4\u03b7/\u03a3\u03c7\u03b5\u03c4\u03b9\u03ba\u03ae \u03c4\u03bf\u03c0\u03bf\u03b8\u03ad\u03c4\u03b7\u03c3\u03b7","backward_desc":"\u039c\u03b5\u03c4\u03b1\u03ba\u03af\u03bd\u03b7\u03c3\u03b7 \u03c3\u03c4\u03bf \u03c0\u03b1\u03c1\u03b1\u03c3\u03ba\u03ae\u03bd\u03b9\u03bf","forward_desc":"\u039c\u03b5\u03c4\u03b1\u03ba\u03af\u03bd\u03b7\u03c3\u03b7 \u03c3\u03c4\u03bf \u03c0\u03c1\u03bf\u03c3\u03ba\u03ae\u03bd\u03b9\u03bf","insertlayer_desc":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03bd\u03ad\u03bf\u03c5 layer"},save:{"save_desc":"\u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7","cancel_desc":"\u0391\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7 \u03cc\u03bb\u03c9\u03bd \u03c4\u03c9\u03bd \u03b1\u03bb\u03bb\u03b1\u03b3\u03ce\u03bd"},nonbreaking:{"nonbreaking_desc":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae non-breaking \u03ba\u03b5\u03bd\u03bf\u03cd \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03ae\u03c1\u03b1"},iespell:{download:"\u03a4\u03bf ieSpell \u03b4\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5. \u039d\u03b1 \u03ba\u03b1\u03c4\u03ad\u03b2\u03b5\u03b9 \u03c4\u03ce\u03c1\u03b1 ;","iespell_desc":"\u0395\u03ba\u03c4\u03ad\u03bb\u03b5\u03c3\u03b7 \u03b5\u03bb\u03ad\u03b3\u03c7\u03bf\u03c5 \u03bf\u03c1\u03b8\u03bf\u03b3\u03c1\u03b1\u03c6\u03af\u03b1\u03c2"},advhr:{"advhr_desc":"\u039f\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03b1 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae","delta_height":"","delta_width":""},emotions:{"emotions_desc":"\u03a3\u03c5\u03bd\u03b1\u03b9\u03c3\u03b8\u03ae\u03bc\u03b1\u03c4\u03b1","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"\u0395\u03cd\u03c1\u03b5\u03c3\u03b7/\u0391\u03bd\u03c4\u03b9\u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7","search_desc":"\u0395\u03cd\u03c1\u03b5\u03c3\u03b7","delta_width":"","delta_height":""},advimage:{"image_desc":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2","delta_width":"","delta_height":""},advlink:{"delta_width":"50","link_desc":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5","delta_height":""},xhtmlxtras:{"attribs_desc":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03b9\u03b4\u03b9\u03bf\u03c4\u03ae\u03c4\u03c9\u03bd","ins_desc":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae","del_desc":"\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae","acronym_desc":"\u0391\u03ba\u03c1\u03bf\u03bd\u03cd\u03bc\u03b9\u03bf","abbr_desc":"\u03a3\u03c5\u03bd\u03c4\u03bf\u03bc\u03bf\u03b3\u03c1\u03b1\u03c6\u03af\u03b1","cite_desc":"Citation","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"\u0395\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03a3\u03c4\u03c5\u03bb CSS","delta_height":"","delta_width":""},paste:{"plaintext_mode":"\u0397 \u0395\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7 \u03b5\u03af\u03bd\u03b1\u03b9 \u03c4\u03ce\u03c1\u03b1 \u03c3\u03b5 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03b1\u03c0\u03bb\u03bf\u03cd \u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5. \u039a\u03ac\u03bd\u03c4\u03b5 \u03ba\u03bb\u03b9\u03ba \u03be\u03b1\u03bd\u03ac \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b5\u03c0\u03b1\u03bd\u03ad\u03bb\u03b8\u03b5\u03c4\u03b5 \u03c3\u03c4\u03b7\u03bd \u03ba\u03b1\u03bd\u03bf\u03bd\u03b9\u03ba\u03ae \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03b5\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7\u03c2.","plaintext_mode_sticky":"\u0397 \u0395\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7 \u03b5\u03af\u03bd\u03b1\u03b9 \u03c4\u03ce\u03c1\u03b1 \u03c3\u03b5 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03b1\u03c0\u03bb\u03bf\u03cd \u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5. \u039a\u03ac\u03bd\u03c4\u03b5 \u03ba\u03bb\u03b9\u03ba \u03be\u03b1\u03bd\u03ac \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b5\u03c0\u03b1\u03bd\u03ad\u03bb\u03b8\u03b5\u03c4\u03b5 \u03c3\u03c4\u03b7\u03bd \u03ba\u03b1\u03bd\u03bf\u03bd\u03b9\u03ba\u03ae \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03b5\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7\u03c2. \u0391\u03c6\u03bf\u03cd \u03b5\u03c0\u03b9\u03ba\u03bf\u03bb\u03bb\u03ae\u03c3\u03b5\u03c4\u03b5 \u03ba\u03ac\u03c4\u03b9 \u03b8\u03b1 \u03b5\u03c0\u03b9\u03c3\u03c4\u03c1\u03ad\u03c8\u03b5\u03c4\u03b5 \u03c3\u03b5 \u03ba\u03b1\u03bd\u03bf\u03bd\u03b9\u03ba\u03ae \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03b5\u03c0\u03b9\u03ba\u03cc\u03bb\u03b7\u03c3\u03b7\u03c2.","selectall_desc":"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03cc\u03bb\u03c9\u03bd","paste_word_desc":"\u0395\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7 \u03b1\u03c0\u03cc \u03c4\u03bf Word","paste_text_desc":"\u0395\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7 \u03c9\u03c2 \u03b1\u03c0\u03bb\u03cc \u03ba\u03b5\u03af\u03bc\u03b5\u03bd\u03bf"},"paste_dlg":{"word_title":"\u03a7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03c4\u03b5 CTRL+V \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03ba\u03ac\u03bd\u03b5\u03c4\u03b5 \u03b5\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7 \u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5 \u03c3\u03c4\u03bf \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf.","text_linebreaks":"\u039d\u03b1 \u03ba\u03c1\u03b1\u03c4\u03b7\u03b8\u03bf\u03cd\u03bd \u03c4\u03b1 linebreaks","text_title":"\u03a7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03c4\u03b5 CTRL+V \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03ba\u03ac\u03bd\u03b5\u03c4\u03b5 \u03b5\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7 \u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5 \u03c3\u03c4\u03bf \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf."},table:{"cellprops_delta_width":"60",cell:"\u039a\u03b5\u03bb\u03af",col:"\u03a3\u03c4\u03ae\u03bb\u03b7",row:"\u0393\u03c1\u03b1\u03bc\u03bc\u03ae",del:"\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae \u03c0\u03af\u03bd\u03b1\u03ba\u03b1","copy_row_desc":"\u0391\u03bd\u03c4\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1","cut_row_desc":"\u0391\u03c0\u03bf\u03ba\u03bf\u03c0\u03ae \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1","paste_row_after_desc":"\u0395\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1 \u03bc\u03b5\u03c4\u03ac","paste_row_before_desc":"\u0395\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1 \u03c0\u03c1\u03b9\u03bd","props_desc":"\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1","cell_desc":"\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 \u03ba\u03b5\u03bb\u03b9\u03bf\u03cd \u03c0\u03af\u03bd\u03b1\u03ba\u03b1","row_desc":"\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1","merge_cells_desc":"\u03a3\u03c5\u03b3\u03c7\u03ce\u03bd\u03b5\u03c5\u03c3\u03b7 \u03ba\u03b5\u03bb\u03b9\u03ce\u03bd \u03c0\u03af\u03bd\u03b1\u03ba\u03b1","split_cells_desc":"\u0394\u03b9\u03b1\u03c7\u03c9\u03c1\u03b9\u03c3\u03bc\u03cc\u03c2 \u03c3\u03c5\u03b3\u03c7\u03c9\u03bd\u03b5\u03c5\u03bc\u03ad\u03bd\u03c9\u03bd \u03ba\u03b5\u03bb\u03b9\u03ce\u03bd \u03c0\u03af\u03bd\u03b1\u03ba\u03b1","delete_col_desc":"\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae \u03c3\u03c4\u03ae\u03bb\u03b7\u03c2","col_after_desc":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03c3\u03c4\u03ae\u03bb\u03b7\u03c2 \u03bc\u03b5\u03c4\u03ac","col_before_desc":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03c3\u03c4\u03ae\u03bb\u03b7\u03c2 \u03c0\u03c1\u03b9\u03bd","delete_row_desc":"\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2","row_after_desc":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2 \u03bc\u03b5\u03c4\u03ac","row_before_desc":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2 \u03c0\u03c1\u03b9\u03bd",desc:"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03bd\u03ad\u03bf\u03c5 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"\u0395\u03ac\u03bd \u03b5\u03c0\u03b1\u03bd\u03b1\u03c6\u03ad\u03c1\u03b5\u03c4\u03b5 \u03c4\u03bf \u03b1\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03c5\u03bc\u03ad\u03bd\u03bf \u03c0\u03b5\u03c1\u03b9\u03b5\u03c7\u03cc\u03bc\u03b5\u03bd\u03bf, \u03b8\u03b1 \u03c7\u03ac\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf \u03c0\u03b5\u03c1\u03b9\u03b5\u03c7\u03cc\u03bc\u03b5\u03bd\u03bf \u03c0\u03bf\u03c5 \u03b2\u03c1\u03af\u03c3\u03ba\u03b5\u03c4\u03b1\u03b9 \u03b1\u03c5\u03c4\u03ae \u03c4\u03b7 \u03c3\u03c4\u03b9\u03b3\u03bc\u03ae \u03c3\u03c4\u03bf\u03bd editor.nn\u03a3\u03af\u03b3\u03bf\u03c5\u03c1\u03b1 \u03bd\u03b1 \u03b3\u03af\u03bd\u03b5\u03b9 \u03b5\u03c0\u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac \u03c4\u03bf\u03c5 \u03b1\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03c5\u03bc\u03ad\u03bd\u03bf\u03c5 \u03c0\u03b5\u03c1\u03b9\u03b5\u03c7\u03bf\u03bc\u03ad\u03bd\u03bf\u03c5;.","restore_content":"\u0395\u03c0\u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac \u03c0\u03b5\u03c1\u03b9\u03b5\u03c7\u03bf\u03bc\u03ad\u03bd\u03bf\u03c5 \u03c0\u03bf\u03c5 \u03b1\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03cd\u03b8\u03b7\u03ba\u03b5 \u03b1\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b1.","unload_msg":"\u039f\u03b9 \u03b1\u03bb\u03bb\u03b1\u03b3\u03ad\u03c2 \u03c0\u03bf\u03c5 \u03ba\u03ac\u03bd\u03b1\u03c4\u03b5 \u03b8\u03b1 \u03c7\u03b1\u03b8\u03bf\u03cd\u03bd \u03b1\u03bd \u03c6\u03cd\u03b3\u03b5\u03c4\u03b5 \u03c3\u03b5 \u03ac\u03bb\u03bb\u03b7 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1."},fullscreen:{desc:"\u0395\u03bd\u03b1\u03bb\u03bb\u03b1\u03b3\u03ae \u03c0\u03bb\u03ae\u03c1\u03bf\u03c5\u03c2 \u03bf\u03b8\u03cc\u03bd\u03b7\u03c2"},media:{"delta_width":"50",edit:"\u0395\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03b5\u03bd\u03c3\u03c9\u03bc\u03b1\u03c4\u03c9\u03bc\u03ad\u03bd\u03c9\u03bd media",desc:"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03b5\u03bd\u03c3\u03c9\u03bc\u03b1\u03c4\u03c9\u03bc\u03ad\u03bd\u03c9\u03bd media","delta_height":""},fullpage:{desc:"\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 \u03b5\u03b3\u03b3\u03c1\u03ac\u03c6\u03bf\u03c5","delta_width":"140","delta_height":""},template:{desc:"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03c0\u03b5\u03c1\u03b9\u03b5\u03c7\u03bf\u03bc\u03ad\u03bd\u03bf\u03c5 \u03b3\u03b9\u03b1 \u03c0\u03c1\u03bf\u03ba\u03b1\u03b8\u03bf\u03c1\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf \u03c0\u03c1\u03cc\u03c4\u03c5\u03c0\u03bf"},visualchars:{desc:"\u039f\u03c0\u03c4\u03b9\u03ba\u03bf\u03af \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03ae\u03c1\u03b5\u03c2 \u03b5\u03bb\u03ad\u03b3\u03c7\u03bf\u03c5 \u03bd\u03b1\u03b9/\u03cc\u03c7\u03b9."},spellchecker:{desc:"\u0395\u03bd\u03b1\u03bb\u03bb\u03b1\u03b3\u03ae \u03bf\u03c1\u03b8\u03bf\u03b3\u03c1\u03b1\u03c6\u03b9\u03ba\u03bf\u03cd \u03b5\u03bb\u03ad\u03b3\u03c7\u03bf\u03c5",menu:"\u03a1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2 \u03bf\u03c1\u03b8\u03bf\u03b3\u03c1\u03b1\u03c6\u03b9\u03ba\u03bf\u03cd \u03b5\u03bb\u03ad\u03b3\u03c7\u03bf\u03c5","ignore_word":"\u03a0\u03b1\u03c1\u03ac\u03b2\u03bb\u03b5\u03c8\u03b7 \u03bb\u03ad\u03be\u03b7\u03c2","ignore_words":"\u03a0\u03b1\u03c1\u03ac\u03b2\u03bb\u03b5\u03c8\u03b7 \u03cc\u03bb\u03c9\u03bd",langs:"\u0393\u03bb\u03ce\u03c3\u03c3\u03b5\u03c2",wait:"\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03c0\u03b5\u03c1\u03b9\u03bc\u03ad\u03bd\u03b5\u03c4\u03b5...",sug:"\u03a0\u03c1\u03bf\u03c4\u03ac\u03c3\u03b5\u03b9\u03c2","no_sug":"\u03a7\u03c9\u03c1\u03af\u03c2 \u03c0\u03c1\u03bf\u03c4\u03ac\u03c3\u03b5\u03b9\u03c2","no_mpell":"\u0394\u03b5 \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b1\u03bd \u03bf\u03c1\u03b8\u03bf\u03b3\u03c1\u03b1\u03c6\u03b9\u03ba\u03ac \u03bb\u03ac\u03b8\u03b7.","learn_word":"\u0395\u03ba\u03bc\u03ac\u03b8\u03b7\u03c3\u03b7 \u03bb\u03ad\u03be\u03b7\u03c2"},pagebreak:{desc:"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03b1\u03bb\u03bb\u03b1\u03b3\u03ae\u03c2 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1\u03c2."},advlist:{def:"\u03a0\u03c1\u03bf\u03ba\u03b1\u03b8\u03bf\u03c1\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf",circle:"\u039a\u03cd\u03ba\u03bb\u03bf\u03c2",disc:"\u0394\u03af\u03c3\u03ba\u03bf\u03c2",square:"\u03a4\u03b5\u03c4\u03c1\u03ac\u03b3\u03c9\u03bd\u03bf",types:"Types","lower_alpha":"Lower Alpha","lower_greek":"Lower Greek","lower_roman":"Lower Roman","upper_alpha":"Upper Alpha","upper_roman":"Upper Roman"},colors:{"000000":"\u039c\u03b1\u03cd\u03c1\u03bf",FF6600:"\u03a0\u03bf\u03c1\u03c4\u03bf\u03ba\u03b1\u03bb\u03af","008000":"\u03a0\u03c1\u03ac\u03c3\u03b9\u03bd\u03bf","0000FF":"\u039c\u03c0\u03bb\u03ad","808080":"\u0393\u03ba\u03c1\u03af",FF0000:"\u039a\u03cc\u03ba\u03ba\u03b9\u03bd\u03bf","800080":"\u039c\u03ce\u03b2",FFCC00:"\u03a7\u03c1\u03c5\u03c3\u03cc",FFFF00:"\u039a\u03af\u03c4\u03c1\u03b9\u03bd\u03bf","993366":"\u039a\u03b1\u03c6\u03ad",C0C0C0:"\u0391\u03c3\u03b9\u03bc\u03ad\u03bd\u03b9\u03bf",FF99CC:"\u03a1\u03cc\u03b6",FFFFFF:"\u0386\u03c3\u03c0\u03c1\u03bf","333300":"Dark olive","993300":"Burnt orange","003300":"Dark green","003366":"Dark azure","000080":"Navy Blue","333399":"Indigo","333333":"Very dark gray","800000":"Maroon","808000":"Olive","008080":"Teal","666699":"Grayish blue",FF9900:"Amber","99CC00":"Yellow green","339966":"Sea green","33CCCC":"Turquoise","3366FF":"Royal blue","999999":"Medium gray",FF00FF:"Magenta","00FF00":"Lime","00FFFF":"Aqua","00CCFF":"Sky blue",FFCC99:"Peach",FFFF99:"Light yellow",CCFFCC:"Pale green",CCFFFF:"Pale cyan","99CCFF":"Light sky blue",CC99FF:"Plum"},aria:{"rich_text_area":"Rich Text Area"},wordcount:{words:"\u039b\u03ad\u03be\u03b5\u03b9\u03c2:"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/en.js b/program/js/tiny_mce/langs/en.js
deleted file mode 100644
index 19324f74c..000000000
--- a/program/js/tiny_mce/langs/en.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({en:{common:{"more_colors":"More Colors...","invalid_data":"Error: Invalid values entered, these are marked in red.","popup_blocked":"Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.","clipboard_no_support":"Currently not supported by your browser, use keyboard shortcuts instead.","clipboard_msg":"Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?","not_set":"-- Not Set --","class_name":"Class",browse:"Browse",close:"Close",cancel:"Cancel",update:"Update",insert:"Insert",apply:"Apply","edit_confirm":"Do you want to use the WYSIWYG mode for this textarea?","invalid_data_number":"{#field} must be a number","invalid_data_min":"{#field} must be a number greater than {#min}","invalid_data_size":"{#field} must be a number or percentage",value:"(value)"},contextmenu:{full:"Full",right:"Right",center:"Center",left:"Left",align:"Alignment"},insertdatetime:{"day_short":"Sun,Mon,Tue,Wed,Thu,Fri,Sat,Sun","day_long":"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday","months_short":"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec","months_long":"January,February,March,April,May,June,July,August,September,October,November,December","inserttime_desc":"Insert Time","insertdate_desc":"Insert Date","time_fmt":"%H:%M:%S","date_fmt":"%Y-%m-%d"},print:{"print_desc":"Print"},preview:{"preview_desc":"Preview"},directionality:{"rtl_desc":"Direction Right to Left","ltr_desc":"Direction Left to Right"},layer:{content:"New layer...","absolute_desc":"Toggle Absolute Positioning","backward_desc":"Move Backward","forward_desc":"Move Forward","insertlayer_desc":"Insert New Layer"},save:{"save_desc":"Save","cancel_desc":"Cancel All Changes"},nonbreaking:{"nonbreaking_desc":"Insert Non-Breaking Space Character"},iespell:{download:"ieSpell not detected. Do you want to install it now?","iespell_desc":"Check Spelling"},advhr:{"delta_height":"","delta_width":"","advhr_desc":"Insert Horizontal Line"},emotions:{"delta_height":"","delta_width":"","emotions_desc":"Emotions"},searchreplace:{"replace_desc":"Find/Replace","delta_width":"","delta_height":"","search_desc":"Find"},advimage:{"delta_width":"","image_desc":"Insert/Edit Image","delta_height":""},advlink:{"delta_height":"","delta_width":"","link_desc":"Insert/Edit Link"},xhtmlxtras:{"attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":"","attribs_desc":"Insert/Edit Attributes","ins_desc":"Insertion","del_desc":"Deletion","acronym_desc":"Acronym","abbr_desc":"Abbreviation","cite_desc":"Citation"},style:{"delta_height":"","delta_width":"",desc:"Edit CSS Style"},paste:{"plaintext_mode_stick":"Paste is now in plain text mode. Click again to toggle back to regular paste mode.","plaintext_mode":"Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode.","selectall_desc":"Select All","paste_word_desc":"Paste from Word","paste_text_desc":"Paste as Plain Text"},"paste_dlg":{"word_title":"Use Ctrl+V on your keyboard to paste the text into the window.","text_linebreaks":"Keep Linebreaks","text_title":"Use Ctrl+V on your keyboard to paste the text into the window."},table:{"merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":"",cell:"Cell",col:"Column",row:"Row",del:"Delete Table","copy_row_desc":"Copy Table Row","cut_row_desc":"Cut Table Row","paste_row_after_desc":"Paste Table Row After","paste_row_before_desc":"Paste Table Row Before","props_desc":"Table Properties","cell_desc":"Table Cell Properties","row_desc":"Table Row Properties","merge_cells_desc":"Merge Table Cells","split_cells_desc":"Split Merged Table Cells","delete_col_desc":"Delete Column","col_after_desc":"Insert Column After","col_before_desc":"Insert Column Before","delete_row_desc":"Delete Row","row_after_desc":"Insert Row After","row_before_desc":"Insert Row Before",desc:"Insert/Edit Table"},autosave:{"warning_message":"If you restore the saved content, you will lose all the content that is currently in the editor.\n\nAre you sure you want to restore the saved content?","restore_content":"Restore auto-saved content.","unload_msg":"The changes you made will be lost if you navigate away from this page."},fullscreen:{desc:"Toggle Full Screen Mode"},media:{"delta_height":"","delta_width":"",edit:"Edit Embedded Media",desc:"Insert/Edit Embedded Media"},fullpage:{desc:"Document Properties","delta_width":"","delta_height":""},template:{desc:"Insert Predefined Template Content"},visualchars:{desc:"Show/Hide Visual Control Characters"},spellchecker:{desc:"Toggle Spell Checker",menu:"Spell Checker Settings","ignore_word":"Ignore Word","ignore_words":"Ignore All",langs:"Languages",wait:"Please wait...",sug:"Suggestions","no_sug":"No Suggestions","no_mpell":"No misspellings found.","learn_word":"Learn word"},pagebreak:{desc:"Insert Page Break for Printing"},advlist:{types:"Types",def:"Default","lower_alpha":"Lower Alpha","lower_greek":"Lower Greek","lower_roman":"Lower Roman","upper_alpha":"Upper Alpha","upper_roman":"Upper Roman",circle:"Circle",disc:"Disc",square:"Square"},colors:{"333300":"Dark olive","993300":"Burnt orange","000000":"Black","003300":"Dark green","003366":"Dark azure","000080":"Navy Blue","333399":"Indigo","333333":"Very dark gray","800000":"Maroon",FF6600:"Orange","808000":"Olive","008000":"Green","008080":"Teal","0000FF":"Blue","666699":"Grayish blue","808080":"Gray",FF0000:"Red",FF9900:"Amber","99CC00":"Yellow green","339966":"Sea green","33CCCC":"Turquoise","3366FF":"Royal blue","800080":"Purple","999999":"Medium gray",FF00FF:"Magenta",FFCC00:"Gold",FFFF00:"Yellow","00FF00":"Lime","00FFFF":"Aqua","00CCFF":"Sky blue","993366":"Brown",C0C0C0:"Silver",FF99CC:"Pink",FFCC99:"Peach",FFFF99:"Light yellow",CCFFCC:"Pale green",CCFFFF:"Pale cyan","99CCFF":"Light sky blue",CC99FF:"Plum",FFFFFF:"White"},aria:{"rich_text_area":"Rich Text Area"},wordcount:{words:"Words:"},visualblocks:{desc:'Show/hide block elements'}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/eo.js b/program/js/tiny_mce/langs/eo.js
deleted file mode 100644
index 8a5b4554f..000000000
--- a/program/js/tiny_mce/langs/eo.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({eo:{common:{"more_colors":"Pliaj koloroj","invalid_data":"Eraro: Nevalidaj valoroj estas ru\u011dmarkitaj.","popup_blocked":"Oni detektis ke via retumilo baris fenestron kiu estas esenca por la programo. Vi bezonas malaktivigi la \u015dprucfenestroblokilo por uzi \u0109i tiun ilon.","clipboard_no_support":"Via retumilo ne subtenas \u0109i tiun eblon. Uzu la klavkombinojn.","clipboard_msg":"Kopii/eltondi/alglui ne estas disponeblaj en Mozilla nek Firefox.\n\u0108u vi volas pliajn informojn pri \u0109i tiu problemo?","not_set":"-- N/A --","class_name":"Klaso",browse:"Ser\u0109i",close:"Fermi",cancel:"Rezigni",update:"\u011cisdatigi",insert:"Enmeti",apply:"Apliki","edit_confirm":"\u0108u vi volas uzi la spertan redaktre\u011dimon en \u0109i tiu tekstokampo?","invalid_data_number":"{#field} must be a number","invalid_data_min":"{#field} must be a number greater than {#min}","invalid_data_size":"{#field} must be a number or percentage",value:"(value)"},contextmenu:{full:"\u011cisrandigite",right:"Dekstre",center:"Centre",left:"Maldekstre",align:"Liniigo"},insertdatetime:{"day_short":"Dim,Lun,Mar,Mer,\u0134a\u016d,Ven,Sab,Dim","day_long":"Diman\u0109o,Lundo,Mardo,Merkredo,\u0134a\u016ddo,Vendredo,Sabato,Diman\u0109o","months_short":"Jan,Feb,Mar,Apr,Maj,Jun,Jul,A\u016dg,Sep,Okt,Nov,Dec","months_long":"Januaro,Februaro,Marto,Aprilo,Majo,Junio,Julio,A\u016dgusto,Septembro,Oktobro,Novembro,Decembro","inserttime_desc":"Enmeti horon","insertdate_desc":"Enmeti daton","time_fmt":"%H:%M:%S","date_fmt":"%Y-%m-%d"},print:{"print_desc":"Presi"},preview:{"preview_desc":"Anta\u016dvidi"},directionality:{"rtl_desc":"Dekstre-Maldekstren","ltr_desc":"Maldekstre-Dekstren"},layer:{content:"Nova tavolo...","absolute_desc":"\u015can\u011di al absoluta pozicio","backward_desc":"Movi malanta\u016den","forward_desc":"Movi anta\u016den","insertlayer_desc":"Enmeti novan tavolon"},save:{"save_desc":"Konservi","cancel_desc":"Nuligi \u0109iujn \u015dan\u011dojn"},nonbreaking:{"nonbreaking_desc":"Enmeti nerompeblan spaceton"},iespell:{download:"Kromprogramo por literumado ne detektita. \u0108u vi volas instali \u011din nun?","iespell_desc":"Kontroli literumadon"},advhr:{"advhr_desc":"Horizontala disigilo","delta_height":"","delta_width":""},emotions:{"emotions_desc":"Viza\u011detoj","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"Ser\u0109i/anstata\u016digi","search_desc":"Ser\u0109i","delta_width":"","delta_height":""},advimage:{"image_desc":"Enmeti/redakti","delta_width":"","delta_height":""},advlink:{"link_desc":"Enmeti/redakti","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"Enmeti/Redakti atributojn","ins_desc":"Enmeti","del_desc":"Forvi\u015di","acronym_desc":"Akronimo","abbr_desc":"Mallongigo","cite_desc":"Cita\u0135o","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"Redakti CSS","delta_height":"","delta_width":""},paste:{"plaintext_mode":"La alglukomando estas en re\u011dimo de plata teksto. Klaku denove por reveni al la normala re\u011dimo.","plaintext_mode_sticky":"La alglukomando estas en re\u011dimo de plata teksto. Klaku denove por reveni al la normala re\u011dimo. Post algluo \u011di revenos al la normala re\u011dimo.","selectall_desc":"Elekti \u0109ion","paste_word_desc":"Alglui (kopiita el WORD)","paste_text_desc":"Alglui kiel platan tekston"},"paste_dlg":{"word_title":"Uzu CTRL V por alglui tekston en la fenestron.","text_linebreaks":"Konservi linisaltojn","text_title":"Uzu CTRL V por alglui tekston en la fenestron."},table:{cell:"\u0108elo",col:"Kolumno",row:"Linio",del:"Forvi\u015di tabelon","copy_row_desc":"Kopii linion","cut_row_desc":"Eltondi linion","paste_row_after_desc":"Alglui linion poste","paste_row_before_desc":"Alglui linion anta\u016de","props_desc":"Atributoj de tabelo","cell_desc":"Atributoj de \u0109eloj","row_desc":"Atributoj de liniioj","merge_cells_desc":"Unuigi \u0109elojn","split_cells_desc":"Dividi \u0109elojn","delete_col_desc":"Forigi kolumnon","col_after_desc":"Enmeti kolumnon poste","col_before_desc":"Enmeti kolumnon anta\u016de","delete_row_desc":"Forvi\u015di linion","row_after_desc":"Enmeti linion poste","row_before_desc":"Enmeti linion anta\u016de",desc:"Enmeti novan tabelon","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"Se vi resta\u016dros la enhavon, vi perdos \u0109ion kio estas aktuale en la redaktilo.\n\n\u0108u vi certas ke vi volas resta\u016dri la konservitan enhavon?","restore_content":"Resta\u016dras la enhavon a\u016dtomate konservitan.","unload_msg":"Vi perdos la faritajn \u015dan\u011dojn se vi eliros \u0109i tiun pa\u011don."},fullscreen:{desc:"Plenekrane"},media:{edit:"Redakti enhavon enkonstruitan",desc:"Enmeti/Redakti enhavon enkonstruitan","delta_height":"","delta_width":""},fullpage:{desc:"Atributoj de la dokumento","delta_width":"","delta_height":""},template:{desc:"Enmeti \u015dablonon"},visualchars:{desc:"Vidkontrolkodoj \u015daltitaj/mal\u015daltitaj"},spellchecker:{desc:"(Mal)\u015calti literumadon",menu:"Agordoj pri ortografio","ignore_word":"Ignori vorton","ignore_words":"Ignori \u0109ion",langs:"Lingvoj",wait:"Atendu...",sug:"Sugestoj","no_sug":"Sen sugestoj","no_mpell":"Neniu ortografieraro trovita.","learn_word":"Learn word"},pagebreak:{desc:"Enmeti pa\u011dosalton."},advlist:{types:"Tipoj",def:"Defa\u016dlta","lower_alpha":"Minuskla alfabeto","lower_greek":"Greka alfabeto","lower_roman":"Minusklaj romanaj ciferoj","upper_alpha":"Majuskla alfabeto","upper_roman":"Majusklaj romanaj ciferoj",circle:"Cirklo",disc:"Disko",square:"Kvadrato"},colors:{"333300":"Dark olive","993300":"Burnt orange","000000":"Black","003300":"Dark green","003366":"Dark azure","000080":"Navy Blue","333399":"Indigo","333333":"Very dark gray","800000":"Maroon",FF6600:"Orange","808000":"Olive","008000":"Green","008080":"Teal","0000FF":"Blue","666699":"Grayish blue","808080":"Gray",FF0000:"Red",FF9900:"Amber","99CC00":"Yellow green","339966":"Sea green","33CCCC":"Turquoise","3366FF":"Royal blue","800080":"Purple","999999":"Medium gray",FF00FF:"Magenta",FFCC00:"Gold",FFFF00:"Yellow","00FF00":"Lime","00FFFF":"Aqua","00CCFF":"Sky blue","993366":"Brown",C0C0C0:"Silver",FF99CC:"Pink",FFCC99:"Peach",FFFF99:"Light yellow",CCFFCC:"Pale green",CCFFFF:"Pale cyan","99CCFF":"Light sky blue",CC99FF:"Plum",FFFFFF:"White"},aria:{"rich_text_area":"Rich Text Area"},wordcount:{words:"Words"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/es.js b/program/js/tiny_mce/langs/es.js
deleted file mode 100644
index 9dc3063f9..000000000
--- a/program/js/tiny_mce/langs/es.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({es:{common:{"more_colors":"M\u00e1s colores","invalid_data":"Error: Introdujo un valor no v\u00e1lido, est\u00e1n marcados en rojo.","popup_blocked":"Lo sentimos, su bloqueo de ventanas emergentes ha deshabilitado una ventana que provee funcionalidades a la aplicaci\u00f3n. Necesita deshabilitar este bloqueo en este sitio para poder utilizar todas las funciones.","clipboard_no_support":"Su navegador no soporta las funciones de cortapapeles, use los accesos por teclado.","clipboard_msg":"Copiar/Cortar/Pegar no se encuentra disponible en Mozilla y Firefox.\n \u00bfDesea obtener m\u00e1s informaci\u00f3n acerca de este tema?","not_set":"-- Ninguno --","class_name":"Clase",browse:"Examinar",close:"Cerrar",cancel:"Cancelar",update:"Actualizar",insert:"Insertar",apply:"Aplicar","edit_confirm":" \u00bfDesea utilizar el modo WYSIWYG para esta caja de texto?","invalid_data_number":"{#field} debe ser un n\u00famero","invalid_data_min":"{#field} debe ser un n\u00famero mayor que {#min}","invalid_data_size":"{#field} debe ser un n\u00famero o tanto por ciento",value:"(valor)"},contextmenu:{full:"Justificado",right:"Derecha",center:"Centrado",left:"Izquierda",align:"Alineaci\u00f3n"},insertdatetime:{"day_short":"Dom,Lun,Mar,Mie,Jue,Vie,Sab,Dom","day_long":"Domingo,Lunes,Martes,Mi\u00e9rcoles,Jueves,Viernes,S\u00e1bado,Domingo","months_short":"Ene,Feb,Mar,Abr,May,Jun,Jul,Ago,Sep,Oct,Nov,Dic","months_long":"Enero,Febrero,Marzo,Abril,Mayo,Junio,Julio,Agosto,Septiembre,Octubre,Noviembre,Diciembre","inserttime_desc":"Insertar hora","insertdate_desc":"Insertar fecha","time_fmt":"%H:%M:%S","date_fmt":"%d-%m-%Y"},print:{"print_desc":"Imprimir"},preview:{"preview_desc":"Vista previa"},directionality:{"rtl_desc":"Direcci\u00f3n derecha a izquierda","ltr_desc":"Direcci\u00f3n izquierda a derecha"},layer:{content:"Nueva capa...","absolute_desc":"Cambiar a posici\u00f3n absoluta","backward_desc":"Retroceder","forward_desc":"Avanzar","insertlayer_desc":"Insertar nueva capa"},save:{"save_desc":"Guardar","cancel_desc":"Cancelar todos los cambios"},nonbreaking:{"nonbreaking_desc":"Insertar caracter de espacio \'non-breaking\'"},iespell:{download:"No se detect\u00f3 \'ieSpell\'. \u00bfDesea instalarlo ahora?","iespell_desc":"Corrector ortogr\u00e1fico"},advhr:{"advhr_desc":"Regla horizontal","delta_height":"","delta_width":""},emotions:{"emotions_desc":"Emoticones","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"Buscar/Reemplazar","search_desc":"Buscar","delta_width":"","delta_height":""},advimage:{"delta_width":"30","image_desc":"Insertar/editar imagen","delta_height":""},advlink:{"link_desc":"Insertar/editar hiperv\u00ednculo","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"Insertar/Editar atributos","ins_desc":"Inserci\u00f3n","del_desc":"Borrado","acronym_desc":"Acr\u00f3nimo","abbr_desc":"Abreviatura","cite_desc":"Cita","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"Editar Estilo CSS","delta_height":"","delta_width":""},paste:{"plaintext_mode":"Pegar ahora est\u00e1 en modo de texto plano. Pulse otra vez para volver al modo de pegado normal.","plaintext_mode_sticky":"Pegar ahora est\u00e1 en modo de texto plano. Pulse otra vez para volver al modo de pegado normal. Despu\u00e9s de pegar algo se volver\u00e1 al modo normal de forma autom\u00e1tica.","selectall_desc":"Elegir todo","paste_word_desc":"Pegar desde Word","paste_text_desc":"Pegar como texto plano"},"paste_dlg":{"word_title":"Use CTRL+V en su teclado para pegar el texto en la ventana.","text_linebreaks":"Mantener saltos de l\u00ednea","text_title":"Use CTRL+V en su teclado para pegar el texto en la ventana."},table:{cell:"Celda",col:"Columna",row:"Fila",del:"Eliminar tabla","copy_row_desc":"Copiar fila","cut_row_desc":"Cortar fila","paste_row_after_desc":"Pegar filas (despu\u00e9s)","paste_row_before_desc":"Pegar filas (antes)","props_desc":"Propiedades de la tabla","cell_desc":"Propiedades de la celda","row_desc":"Propiedades de la fila","merge_cells_desc":"Vincular celdas","split_cells_desc":"Dividir celdas","delete_col_desc":"Suprimir columna","col_after_desc":"Insertar columna (despu\u00e9s)","col_before_desc":"Insertar columna (antes)","delete_row_desc":"Suprimir fila","row_after_desc":"Insertar fila (despu\u00e9s)","row_before_desc":"Insertar fila (antes)",desc:"Inserta una nueva tabla","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"Se reestablece en contenido guardado, perder\u00e1 todo el contenido que est\u00e1 actualmente en el editor.\n\nEst\u00e1 seguro de que quiere reestablecer el contenido guardado.","restore_content":"Reestablecer contenido guardado autom\u00e1ticamente","unload_msg":"Los cambios realizados se perder\u00e1n si sale de esta p\u00e1gina."},fullscreen:{desc:"Cambiar a modo Pantalla Completa"},media:{edit:"Editar medio embebido",desc:"Insertar/editar medio embebido","delta_height":"","delta_width":""},fullpage:{desc:"Propiedades del documento","delta_width":"Ancho","delta_height":"Alto"},template:{desc:"Insertar contenido de plantilla predefinida"},visualchars:{desc:"Caracteres de control ON/OFF."},spellchecker:{desc:"Cambiar a corrector ortogr\u00e1fico",menu:"Configuraci\u00f3n de corrector ortogr\u00e1fico","ignore_word":"Ignorar","ignore_words":"Ignorar todo",langs:"Idiomas",wait:"Espere...",sug:"Sugerencias","no_sug":"Sin sugerencias","no_mpell":"No se encontraron errores.","learn_word":"Aprender palabra"},pagebreak:{desc:"Insertar fin de p\u00e1gina"},advlist:{types:"Tipo",def:"Preestablecido","lower_alpha":"Menos opaco","lower_greek":"Menos greek","lower_roman":"Menos roman","upper_alpha":"M\u00e1s opaco","upper_roman":"M\u00e1s roman",circle:"Circulo",disc:"Disc",square:"Cuadro"},colors:{"333300":"Verde Oliva","993300":"Naranja Oscuro","000000":"Negro","003300":"Verde Oscuro","003366":"Azul Celeste Oscuro","000080":"Azul Navy","333399":"Indigo","333333":"Verde Muy Oscuro","800000":"Marr\u00f3n",FF6600:"Naranja","808000":"Aceituna","008000":"Verde","008080":"Verde Azulado","0000FF":"Azul","666699":"Azul gris\u00e1ceo","808080":"Gris",FF0000:"Rojo",FF9900:"\u00c1mbar","99CC00":"Verde Amarillento","339966":"Verde Oc\u00e9ano","33CCCC":"Turquesa","3366FF":"Azul Royale","800080":"P\u00farpura","999999":"Gris Medio",FF00FF:"Magenta",FFCC00:"Dorado",FFFF00:"Amarillo","00FF00":"Lima","00FFFF":"Agua","00CCFF":"Azul Cielo","993366":"Marr\u00f3n",C0C0C0:"Plateado",FF99CC:"Rosa",FFCC99:"Melocot\u00f3n",FFFF99:"Amarillo claro",CCFFCC:"Verde p\u00e1lido",CCFFFF:"Cian p\u00e1lido","99CCFF":"Verde Cielo Claro",CC99FF:"Pomelo",FFFFFF:"Blanco"},aria:{"rich_text_area":"\u00c1rea de Texto Enriquecido"},wordcount:{words:"Palabras:"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/et.js b/program/js/tiny_mce/langs/et.js
deleted file mode 100644
index 637551bfb..000000000
--- a/program/js/tiny_mce/langs/et.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({et:{common:{"more_colors":"Rohkem v\u00e4rve","invalid_data":"Viga: Kehtetud v\u00e4\u00e4rtused sisestatud, need on m\u00e4rgitud punasega.","popup_blocked":"Vabandust, aga Teie h\u00fcpikakna t\u00f5kestaja on blokeerinud akna, mis varustab rakenduse funktsionaalsust. Palun lubage h\u00fcpikaknad sellel kodulehel, et t\u00e4ielikult kasutada seda vahendit.","clipboard_no_support":"Hetkel ei ole toetatud Teie lehitseja poolt, kasutage klaviatuuri otseteid selle asemel.","clipboard_msg":"Kopeeri/L\u00f5ika/Kleebi ei ole saadaval Mozillas ja Firefoxis.\nKas soovite rohkem infot selle probleemi kohta?","not_set":"-- Seadmata --","class_name":"Klass",browse:"Sirvi",close:"Sule",cancel:"T\u00fchista",update:"Uuenda",insert:"Sisesta",apply:"Rakenda","edit_confirm":"Kas soovite kasutada WYSIWYG re\u017eiimi sellel tekstialal?","invalid_data_number":"{#field} peab olema number","invalid_data_min":"{#field} peab olema number,mis suurem kui {#min}","invalid_data_size":"{#field} peab olema number v\u00f5i protsent",value:"(v\u00e4\u00e4rtus)"},contextmenu:{full:"T\u00e4is",right:"Parem",center:"Kesk",left:"Vasak",align:"Joondus"},insertdatetime:{"day_short":"P,E,T,K,N,R,L,P","day_long":"P\u00fchap\u00e4ev,Esmasp\u00e4ev,Teisip\u00e4ev,Kolmap\u00e4ev,Neljap\u00e4ev,Reede,Laup\u00e4ev,P\u00fchap\u00e4ev","months_short":"Jaan,Veeb,M\u00e4rts,Apr,Mai,Juuni,Juuli,Aug,Sept,Okt,Nov,Dets","months_long":"Jaanuar,Veebruar,M\u00e4rts,Aprill,Mai,Juuni,Juuli,August,September,Oktoober,November,Detsember","inserttime_desc":"Sisesta aeg","insertdate_desc":"Sisesta kuup\u00e4ev","time_fmt":"%T:%M:%S","date_fmt":"%A-%k-%p"},print:{"print_desc":"Print"},preview:{"preview_desc":"Eelvaade"},directionality:{"rtl_desc":"Suund paremalt vasakule","ltr_desc":"Suund vasakult paremale"},layer:{content:"Uus kiht...","absolute_desc":"L\u00fclita \u00fcmber absoluutne positsioneerimine","backward_desc":"Liiguta tagasi","forward_desc":"Liiguta edasi","insertlayer_desc":"Sisesta uus kiht"},save:{"save_desc":"Salvesta","cancel_desc":"T\u00fchista k\u00f5ik muudatused"},nonbreaking:{"nonbreaking_desc":"Sisesta mittekatkestav t\u00fchik"},iespell:{download:"ie\u00d5igekiri tuvastamata. Kas soovite paigaldada n\u00fc\u00fcd?","iespell_desc":"\u00d5igekirja kontroll"},advhr:{"advhr_desc":"Horisontaalne joonlaud","delta_height":"","delta_width":""},emotions:{"emotions_desc":"Emotsioonid","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"Otsi/Asenda","search_desc":"Otsi","delta_width":"","delta_height":""},advimage:{"image_desc":"Sisesta/redigeeri pilt","delta_width":"","delta_height":""},advlink:{"link_desc":"Sisesta/redigeeri link","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"Sisesta muuda atribuute","ins_desc":"Lisandus","del_desc":"Kustutus","acronym_desc":"Akron\u00fc\u00fcm","abbr_desc":"L\u00fchend","cite_desc":"Tsitaat","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"Redigeeri CSS stiili","delta_height":"","delta_width":""},paste:{"plaintext_mode":"Kleepimine (Paste) on n\u00fc\u00fcd lihtteksti laadis (kleebitav tekst lisatakse lihttekstina). Kliki uuesti minemaks tagasi tavalisse kleepimise laadi.","plaintext_mode_sticky":"Kleepimine (Paste) on n\u00fc\u00fcd lihtteksti laadis (kleebitav tekst lisatakse lihttekstina). Kliki uuesti minemaks tagasi tavalisse kleepimise laadi. Peale millegi kleepimist sa tuled tagasi tavalisse kleepimise laadi.","selectall_desc":"Vali k\u00f5ik","paste_word_desc":"Kleebi Wordist","paste_text_desc":"Kleebi tavalise tekstina"},"paste_dlg":{"word_title":"Vajuta CTRL+V oma klaviatuuril teksti aknasse kleepimiseks.","text_linebreaks":"J\u00e4ta reavahetused","text_title":"Vajuta CTRL+V oma klaviatuuril teksti aknasse kleepimiseks."},table:{cell:"Lahter",col:"Veerg",row:"Rida",del:"Kustuta tabel","copy_row_desc":"Kopeeri tabeli rida","cut_row_desc":"L\u00f5ika tabeli rida","paste_row_after_desc":"Kleebi tabeli rida j\u00e4rgi","paste_row_before_desc":"Kleebi tabeli rida ette","props_desc":"Tabeli omadused","cell_desc":"Tabeli lahtri omadused","row_desc":"Tabeli rea omadused","merge_cells_desc":"\u00dchenda tabeli lahtrid","split_cells_desc":"Eralda \u00fchendatud tabeli lahtrid","delete_col_desc":"Kustuta veerg","col_after_desc":"Sisesta veerg j\u00e4rgi","col_before_desc":"Sisesta veerg ette","delete_row_desc":"Kustuta rida","row_after_desc":"Sisesta rida j\u00e4rgi","row_before_desc":"Sisesta rida ette",desc:"Sisestab uue tabeli","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"Kui sa taastad salvestatud sisu, siis sa kaotad kogu redaktoris oleva sisu.\n\nKas sa soovid taastada salvestatud sisu?If you restore the saved content, you will lose all the content that is currently in the editor.\n\nAre you sure you want to restore the saved content?","restore_content":"Taasta automaatsalvestatud sisu.","unload_msg":"Tehtud muudatused kaovad, kui lahkute siit lehelt."},fullscreen:{desc:"L\u00fclita \u00fcmber t\u00e4isekraani re\u017eiim"},media:{edit:"Redigeeri manustatud meedia",desc:"Sisesta / redigeeri manustatud meedia","delta_height":"","delta_width":""},fullpage:{desc:"Dokumendi omadused","delta_width":"","delta_height":""},template:{desc:"Sisesta eeldefineeritud \u0161ablooni sisu"},visualchars:{desc:"Visuaalsed kontrollt\u00e4hem\u00e4rgid sisse/v\u00e4lja"},spellchecker:{desc:"L\u00fclita \u00fcmber \u00f5igekirja kontroll",menu:"\u00d5igekirja kontrolli seaded","ignore_word":"J\u00e4ta s\u00f5na vahele","ignore_words":"J\u00e4ra k\u00f5ik vahele",langs:"Keeled",wait:"Palun oota...",sug:"Soovitused","no_sug":"Soovitusi pole","no_mpell":"Valesti kirjutamisi ei leitud.","learn_word":"\u00d5pi s\u00f5na"},pagebreak:{desc:"Sisesta lehevahetus."},advlist:{types:"T\u00fc\u00fcbid",def:"Vaikimisi",circle:"Ring",disc:"Ketas",square:"Ruut","lower_alpha":"Lower Alpha","lower_greek":"Lower Greek","lower_roman":"Lower Roman","upper_alpha":"Upper Alpha","upper_roman":"Upper Roman"},colors:{"000000":"Must","003300":"Tume roheline","000080":"Meresinine","333399":"S\u00fcgavsinine","333333":"V\u00e4ga tumehall","800000":"Punakaspruun",FF6600:"Oran\u017e","008000":"Roheline","008080":"Sinakasroheline","0000FF":"Sinine","666699":"Hallikas sinine","808080":"Hall",FF0000:"Punane",FF9900:"Oran\u017ekollane","99CC00":"Kollakasroheline","339966":"Sinakasroheline","33CCCC":"T\u00fcrkiissinine","800080":"Violetne","999999":"Keskmine hall",FF00FF:"Fuksiinpunane",FFCC00:"Kuldne",FFFF00:"Kollane","00FF00":"Rohekaskollane","00FFFF":"Rohekassinine","00CCFF":"Taevasinine","993366":"Pruun",C0C0C0:"H\u00f5bedane",FF99CC:"Roosa",FFCC99:"Virsikuv\u00e4rvi",FFFF99:"Helekollane",CCFFCC:"Kahvatu roheline",CCFFFF:"Kahvatu helesinine","99CCFF":"Hele taevasinine",FFFFFF:"Valge","333300":"Dark olive","993300":"Burnt orange","003366":"Dark azure","808000":"Olive","3366FF":"Royal blue",CC99FF:"Plum"},aria:{"rich_text_area":"Vormindatud tekstiala"},wordcount:{words:"S\u00f5nu:"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/eu.js b/program/js/tiny_mce/langs/eu.js
deleted file mode 100644
index c386478c7..000000000
--- a/program/js/tiny_mce/langs/eu.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({eu:{common:{"more_colors":"Kolore gehiago","invalid_data":"Errorea: baliogabeak diren aukerak sartu dituzu, gorriz agertzen dira.","popup_blocked":"Ups, zure popup blokeatzaileak funtzionalitate bat eskaintzen duen leihoa blokeatu du. Blokeatzailea desgaitu beharko duzu tresna hau erabiltzeko.","clipboard_no_support":"Zure nabigatzailean ez dabil, erabili teklatuko laster-teklak honetarako..","clipboard_msg":"Kopiatu/Ebaki/Itsatsi ez dago Mozilla eta Firefoxen.\nHonen inguruko informazioa nahi duzu??","not_set":"-- Bat ere ez --","class_name":"Klasea",browse:"Arakatu",close:"Itxi",cancel:"Utzi",update:"Eguneratu",insert:"Txertatu",apply:"Aplikatu","edit_confirm":"Testu-kutxa hau WYSIWYG editorea izatea nahi duzu?","invalid_data_number":"{#field} must be a number","invalid_data_min":"{#field} must be a number greater than {#min}","invalid_data_size":"{#field} must be a number or percentage",value:"(value)"},contextmenu:{full:"Justifikatuta",right:"Eskuinean",center:"Zentratuta",left:"Ezkerrean",align:"Alineazioa"},insertdatetime:{"day_short":"Ig,Al,As,Az,Og,Or,Lr,Ig","day_long":"Igandea,Astelehena,Asteartea,Asteazkena,Osteguna,Ostirala,Larunbata,Igandea","months_short":"Urt,Ots,Mar,Api,Mai,Eka,Uzt,Abu,Ira,Urr,Aza,Abe","months_long":"Urtarrila,Otsaila,Martxoa,Apirila,Maiatza,Ekaina,Uztaila,Abuztua,Iraila,Urria,Azaroa,Abendua","inserttime_desc":"Ordua txertatu","insertdate_desc":"Data txertatu","time_fmt":"%H:%M:%S","date_fmt":"%Y-%m-%d"},print:{"print_desc":"Inprimatu"},preview:{"preview_desc":"Aurreikusi"},directionality:{"rtl_desc":"Eskuinatik ezkerrera","ltr_desc":"Ezkerretik eskumara"},layer:{content:"Kapa berria...","absolute_desc":"Posizionatze-absolutua aktibatu/desaktibatu","backward_desc":"Atzera joan","forward_desc":"Aurrera joan","insertlayer_desc":"Kapa berria txertatu"},save:{"save_desc":"Gorde","cancel_desc":"Aldaketak bertan behera utzi"},nonbreaking:{"nonbreaking_desc":"Espazioa txertatu"},iespell:{download:"ieSpell ez da aurkitu. Instalatu egin nahi duzu?","iespell_desc":"Hizkuntza zuzendu"},advhr:{"delta_height":"Altuera","delta_width":"Zabalera","advhr_desc":"Marra horizontala"},emotions:{"delta_height":"Altuera","delta_width":"Zabalera","emotions_desc":"Ikonotxoak"},searchreplace:{"replace_desc":"Bilatu/Ordeztu","delta_width":"Zabalera","delta_height":"Altuera","search_desc":"Bilatu"},advimage:{"delta_width":"Zabalera","image_desc":"Irudia txertatu/editatu","delta_height":"Altuera"},advlink:{"delta_height":"Altuera","delta_width":"Zabalera","link_desc":"Lotura txertatu/editatu"},xhtmlxtras:{"attribs_delta_height":"Atributuen altuera","attribs_delta_width":"Atributuen zabalera","ins_delta_height":"Txertaketaren altuera","ins_delta_width":"Txertaketaren zabalera","del_delta_height":"Ezabaketaren altuera","del_delta_width":"Ezabaketaren zabalera","acronym_delta_height":"Akronimoen altuera","acronym_delta_width":"Akronimoen zabalera","abbr_delta_height":"Laburduren altuera","abbr_delta_width":"Laburduren zabalera","cite_delta_height":"Ziten altuera","cite_delta_width":"Ziten zabalera","attribs_desc":"Atributuak txertatu/editatu","ins_desc":"Txertaketa","del_desc":"Ezabaketa","acronym_desc":"Akronimoa","abbr_desc":"Laburdura","cite_desc":"Zita"},style:{"delta_height":"Altuera","delta_width":"Zabalera",desc:"Aldatu CSS estiloa"},paste:{"plaintext_mode":"Itsasketa testu moduan dago orain. Egin klik itsasketa arruntera itzultzeko.","plaintext_mode_sticky":"Itsasketa testu moduan dago orain. Egin klik itsasketa arruntera itzultzeko. Zerbait itsatsi ostean, modu arruntera pasatuko zara automatikoki.","selectall_desc":"Aukeratu guztia","paste_word_desc":"Word-etik itsatsi","paste_text_desc":"Testu gisa itsatsi"},"paste_dlg":{"word_title":"Erabili CTRL+V testua lehioan itsasteko.","text_linebreaks":"Mantendu lerro-jauziak","text_title":"Erabili CTRL+V testua lehioan itsasteko."},table:{"merge_cells_delta_height":"Gelaxkak batzearen altuera","merge_cells_delta_width":"Gelaxkak batzearen zabalera","table_delta_height":"Taularen altuera","table_delta_width":"Taularen zabalera","cellprops_delta_height":"Gelaxken propietateen altuera","cellprops_delta_width":"Gelaxken propietateen zabalera","rowprops_delta_height":"Lerroen propietateen altuera","rowprops_delta_width":"Lerroen propietateen zabalera",cell:"Gelaxka",col:"Zutabea",row:"Lerroa",del:"Ezabatu taula","copy_row_desc":"Kopiatu lerroa","cut_row_desc":"Moztu lerroa","paste_row_after_desc":"Itsatsi lerroa ondoren","paste_row_before_desc":"Itsatsi lerroa aurretik","props_desc":"Taula ezaugarriak","cell_desc":"Gelaxka ezaugarriak","row_desc":"Lerro ezaugarriak","merge_cells_desc":"Bateratu gelaxkak","split_cells_desc":"Banatu bateratutako gelaxkak","delete_col_desc":"Ezabatu zutabea","col_after_desc":"Txertatu zutabea ondoren","col_before_desc":"Txertatu zutabea aurretik","delete_row_desc":"Ezabatu lerroa","row_after_desc":"Txertatu lerroa ondoren","row_before_desc":"Txertatu lerroa aurretik",desc:"Taula berri bat txertatu"},autosave:{"warning_message":"Gordetako edukia errekuperatzen baduzu, orain editorean dagoena galdu egingo duzu.\n\nZiur zaude gordetakoa errekuperatzea nahi duzula?","restore_content":"Automatikoki gordetako edukia errekuperatu.","unload_msg":"Egindako aldaketak galdu egingo dira orri honetatik kanpona nabigatzen baldin baduzu."},fullscreen:{desc:"Aldatu pantaila osoko modura"},media:{"delta_height":"Altuera","delta_width":"Zabalera",edit:"Editatu ahokatutako euskarria",desc:"Sartu / editatu ahokatutako euskarria"},fullpage:{desc:"Dokumentuaren ezaugarriak","delta_width":"Zabalera","delta_height":"Altuera"},template:{desc:"Txertatu aurredefinitutako txantiloiaren edukia"},visualchars:{desc:"Begi kontrol karaktereak gaitu/ezgaitu."},spellchecker:{desc:"Ortografia zuzentzaile modura aldatu",menu:"Ortografia zuzentzailearen doikuntza","ignore_word":"Ezikusi hitza","ignore_words":"Ezikusi guztiak",langs:"Hizkuntzak",wait:"Itxaron mesedez...",sug:"Gomendioa","no_sug":"Gomendiorik ez","no_mpell":"Ez da akatsik aurkitu","learn_word":"Learn word"},pagebreak:{desc:"Txertatu orri jauzia."},advlist:{types:"Motak",def:"Lehenetsiak","lower_alpha":"Hizki xeheak","lower_greek":"Hizki greko xeheak","lower_roman":"Zenbaki erromatar xeheak","upper_alpha":"Hizki larriak","upper_roman":"Zenbaki erromatar larriak",circle:"Borobila",disc:"Diskoa",square:"Karratua"},colors:{"333300":"Dark olive","993300":"Burnt orange","000000":"Black","003300":"Dark green","003366":"Dark azure","000080":"Navy Blue","333399":"Indigo","333333":"Very dark gray","800000":"Maroon",FF6600:"Orange","808000":"Olive","008000":"Green","008080":"Teal","0000FF":"Blue","666699":"Grayish blue","808080":"Gray",FF0000:"Red",FF9900:"Amber","99CC00":"Yellow green","339966":"Sea green","33CCCC":"Turquoise","3366FF":"Royal blue","800080":"Purple","999999":"Medium gray",FF00FF:"Magenta",FFCC00:"Gold",FFFF00:"Yellow","00FF00":"Lime","00FFFF":"Aqua","00CCFF":"Sky blue","993366":"Brown",C0C0C0:"Silver",FF99CC:"Pink",FFCC99:"Peach",FFFF99:"Light yellow",CCFFCC:"Pale green",CCFFFF:"Pale cyan","99CCFF":"Light sky blue",CC99FF:"Plum",FFFFFF:"White"},aria:{"rich_text_area":"Rich Text Area"},wordcount:{words:"Words"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/fa.js b/program/js/tiny_mce/langs/fa.js
deleted file mode 100644
index cd0bffbb8..000000000
--- a/program/js/tiny_mce/langs/fa.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({fa:{common:{"more_colors":"\u0631\u0646\u06af \u0647\u0627\u06cc \u0628\u06cc\u0634\u062a\u0631","invalid_data":"\u062e\u0637\u0627: \u0645\u0642\u0627\u062f\u06cc\u0631 \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0648\u0627\u0631\u062f \u0634\u062f \u060c \u0622\u0646\u0647\u0627 \u0628\u0647 \u0631\u0646\u06af \u0642\u0631\u0645\u0632 \u0639\u0644\u0627\u0645\u062a \u062e\u0648\u0631\u062f\u0647 \u0627\u0646\u062f.","popup_blocked":"\u0628\u0627 \u0639\u0631\u0636 \u067e\u0648\u0632\u0634 \u060c \u0645\u0627 \u0627\u0637\u0644\u0627\u0639 \u062f\u0627\u062f\u0647 \u0628\u0648\u062f\u06cc\u0645 \u06a9\u0647 \u0645\u062f\u0627\u0641\u0639 \u067e\u0646\u062c\u0631\u0647 \u0628\u0627\u0632 \u0634\u0648\u06cc (Popup) \u0634\u0645\u0627 \u060c \u067e\u0646\u062c\u0631\u0647 \u0627\u06cc \u0631\u0627 \u06a9\u0647 \u0642\u0627\u0628\u0644\u06cc\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u06a9\u0631\u062f \u060c \u063a\u06cc\u0631 \u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u0647 \u0627\u0633\u062a. \u0634\u0645\u0627 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u063a\u06cc\u0631 \u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u0646 \u0645\u062f\u0627\u0641\u0639 \u067e\u0646\u062c\u0631\u0647 \u0628\u0627\u0632 \u0634\u0648 (Popup) \u062f\u0631 \u0627\u06cc\u0646 \u0633\u0627\u06cc\u062a \u0631\u0627 \u062f\u0627\u0631\u06cc\u062f \u062a\u0627 \u0627\u0632 \u0627\u06cc\u0646 \u0627\u0628\u0632\u0627\u0631 \u0628\u0647 \u0635\u0648\u0631\u062a \u06a9\u0627\u0645\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0645\u0627\u0626\u06cc\u062f.","clipboard_no_support":"\u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631 \u062a\u0648\u0633\u0637 \u0645\u0631\u0648\u0631\u06af\u0631 \u0634\u0645\u0627 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0646\u0645\u06cc \u0634\u0648\u062f \u060c \u0628\u0647 \u062c\u0627\u06cc \u0622\u0646 \u0627\u0632 \u0645\u06cc\u0627\u0646\u0628\u0631\u0647\u0627\u06cc (Shortcut) \u0635\u0641\u062d\u0647 \u06a9\u0644\u06cc\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0645\u0627\u0626\u06cc\u062f.","clipboard_msg":"\u0628\u0631\u0634/\u06a9\u067e\u06cc/\u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u0628\u0631\u0627\u06cc \u0645\u0631\u0648\u0631\u06af\u0631 \u0641\u0627\u06cc\u0631\u0641\u0627\u06a9\u0633 \u0641\u0639\u0627\u0644 \u0646\u0645\u06cc \u0628\u0627\u0634\u062f. \n\u0622\u06cc\u0627 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u06cc\u0634\u062a\u0631\u06cc \u0631\u0627\u062c\u0639 \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f\u061f","not_set":"-- \u062a\u0646\u0638\u06cc\u0645 \u0646\u0634\u062f\u0647 --","class_name":"\u06a9\u0644\u0627\u0633",browse:"\u0627\u0646\u062a\u062e\u0627\u0628 \u0627\u0632 \u0633\u0631\u0648\u0631",close:"\u0628\u0633\u062a\u0646",cancel:"\u0627\u0646\u0635\u0631\u0627\u0641",update:"\u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc",insert:"\u062f\u0631\u062c",apply:"\u0628\u06a9\u0627\u0631\u06af\u06cc\u0631\u06cc","edit_confirm":"\u0622\u06cc\u0627 \u0634\u0645\u0627 \u0645\u0627\u06cc\u0644\u06cc\u062f \u062a\u0627 \u0627\u0632 \u062d\u0627\u0644\u062a \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0646\u0627\u062d\u06cc\u0647 \u0645\u062a\u0646\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0645\u0627\u0626\u06cc\u062f\u061f","invalid_data_number":"\u0645\u0642\u062f\u0627\u0631 {#field} \u0628\u0627\u06cc\u062f \u0639\u062f\u062f \u0628\u0627\u0634\u062f","invalid_data_min":"\u0645\u0642\u062f\u0627\u0631 {#field} \u0628\u0627\u06cc\u062f \u0639\u062f\u062f \u0628\u0632\u0631\u06af \u062a\u0631 \u0627\u0632 {#min} \u0628\u0627\u0634\u062f","invalid_data_size":"\u0645\u0642\u062f\u0627\u0631 {#field} \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u0639\u062f\u062f \u06cc\u0627 \u062f\u0631\u0635\u062f \u0628\u0627\u0634\u062f",value:"(\u0645\u0642\u062f\u0627\u0631)"},contextmenu:{full:"\u06a9\u0627\u0645\u0644",right:"\u0631\u0627\u0633\u062a",center:"\u0648\u0633\u0637",left:"\u0686\u067e",align:"\u062a\u0631\u0627\u0632"},insertdatetime:{"day_short":"\u06cc\u06a9\u0634\u0646\u0628\u0647,\u062f\u0648\u0634\u0646\u0628\u0647,\u0633\u0647 \u0634\u0646\u0628\u0647,\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647,\u067e\u0646\u062c \u0634\u0646\u0628\u0647,\u062c\u0645\u0639\u0647,\u0634\u0646\u0628\u0647,\u06cc\u06a9\u0634\u0646\u0628\u0647","day_long":"\u06cc\u06a9\u0634\u0646\u0628\u0647,\u062f\u0648\u0634\u0646\u0628\u0647,\u0633\u0647 \u0634\u0646\u0628\u0647,\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647,\u067e\u0646\u062c \u0634\u0646\u0628\u0647,\u062c\u0645\u0639\u0647,\u0634\u0646\u0628\u0647,\u06cc\u06a9\u0634\u0646\u0628\u0647","months_short":"\u0698\u0627\u0646\u0648\u06cc\u0647,\u0641\u0648\u0631\u06cc\u0647,\u0645\u0627\u0631\u0633,\u0622\u0648\u0631\u06cc\u0644,\u0645\u06cc,\u0698\u0648\u0626\u0646,\u0698\u0648\u0644\u0627\u06cc,\u0627\u0648\u062a,\u0633\u067e\u062a\u0627\u0645\u0628\u0631,\u0627\u06a9\u062a\u0628\u0631,\u0646\u0648\u0627\u0645\u0628\u0631,\u062f\u0633\u0627\u0645\u0628\u0631","months_long":"\u0698\u0627\u0646\u0648\u06cc\u0647,\u0641\u0648\u0631\u06cc\u0647,\u0645\u0627\u0631\u0633,\u0622\u0648\u0631\u06cc\u0644,\u0645\u06cc,\u0698\u0648\u0626\u0646,\u0698\u0648\u0644\u0627\u06cc,\u0627\u0648\u062a,\u0633\u067e\u062a\u0627\u0645\u0628\u0631,\u0627\u06a9\u062a\u0628\u0631,\u0646\u0648\u0627\u0645\u0628\u0631,\u062f\u0633\u0627\u0645\u0628\u0631","inserttime_desc":"\u062f\u0631\u062c \u0632\u0645\u0627\u0646","insertdate_desc":"\u062f\u0631\u062c \u062a\u0627\u0631\u06cc\u062e","time_fmt":"%H:%M:%S","date_fmt":"%Y-%m-%d"},print:{"print_desc":"\u0686\u0627\u067e"},preview:{"preview_desc":"\u067e\u06cc\u0634 \u0646\u0645\u0627\u06cc\u0634"},directionality:{"rtl_desc":"\u062c\u0647\u062a \u0631\u0627\u0633\u062a \u0628\u0647 \u0686\u067e","ltr_desc":"\u062c\u0647\u062a \u0686\u067e \u0628\u0647 \u0631\u0627\u0633\u062a"},layer:{content:"\u0644\u0627\u06cc\u0647 \u062c\u062f\u06cc\u062f...","absolute_desc":"\u062a\u0639\u0648\u06cc\u0636 \u0645\u0648\u0642\u0639\u06cc\u062a \u0645\u0637\u0644\u0642","backward_desc":"\u0627\u0646\u062a\u0642\u0627\u0644 \u0628\u0647 \u067e\u0634\u062a","forward_desc":"\u0627\u0646\u062a\u0642\u0627\u0644 \u0628\u0647 \u062c\u0644\u0648","insertlayer_desc":"\u062f\u0631\u062c \u0644\u0627\u06cc\u0647 \u062c\u062f\u06cc\u062f"},save:{"save_desc":"\u0630\u062e\u06cc\u0631\u0647","cancel_desc":"\u0644\u063a\u0648 \u062a\u0645\u0627\u0645\u06cc \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a"},nonbreaking:{"nonbreaking_desc":"\u062f\u0631\u062c \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u0641\u0627\u0635\u0644\u0647 \u0628\u062f\u0648\u0646 \u0642\u0637\u0639 \u0634\u062f\u06af\u06cc"},iespell:{download:"ieSpell \u062a\u0634\u062e\u06cc\u0635 \u062f\u0627\u062f\u0647 \u0646\u0634\u062f. \u0622\u06cc\u0627 \u0634\u0645\u0627 \u0645\u0627\u06cc\u0644 \u0628\u0647 \u0646\u0635\u0628 \u0622\u0646 \u0647\u0633\u062a\u06cc\u062f\u061f","iespell_desc":"\u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0631\u0633\u06cc \u0627\u0645\u0644\u0627\u0621"},advhr:{"delta_height":"","delta_width":"","advhr_desc":"\u062e\u0637 \u0627\u0641\u0642\u06cc"},emotions:{"delta_height":"","delta_width":"","emotions_desc":"\u0634\u06a9\u0644\u06a9 \u0647\u0627"},searchreplace:{"replace_desc":"\u062c\u0633\u062a\u062c\u0648/\u062a\u0639\u0648\u06cc\u0636","delta_width":"","delta_height":"","search_desc":"\u062c\u0633\u062a\u062c\u0648"},advimage:{"delta_width":"","image_desc":"\u062f\u0631\u062c/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u062a\u0635\u0648\u06cc\u0631","delta_height":""},advlink:{"delta_height":"","delta_width":"","link_desc":"\u062f\u0631\u062c/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0644\u06cc\u0646\u06a9"},xhtmlxtras:{"attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":"","attribs_desc":"\u062f\u0631\u062c/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627","ins_desc":"\u062f\u0631\u062c","del_desc":"\u062d\u0630\u0641","acronym_desc":"\u0645\u062e\u0641\u0641","abbr_desc":"\u0627\u062e\u062a\u0635\u0627\u0631","cite_desc":"\u0646\u0642\u0644 \u0642\u0648\u0644"},style:{"delta_height":"","delta_width":"",desc:"\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0627\u0633\u062a\u0627\u06cc\u0644 CSS"},paste:{"plaintext_mode":"\u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u0645\u062a\u0646 \u062f\u0631 \u062d\u0627\u0644\u062a \u0633\u0627\u062f\u0647 \u0627\u0633\u062a. \u0628\u0631\u0627\u06cc \u0628\u0631\u06af\u0634\u062a \u0628\u0647 \u062d\u0627\u0644\u062a \u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u0628\u0627\u0642\u0627\u0639\u062f\u0647 \u062f\u0648\u0628\u0627\u0631\u0647 \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f.","plaintext_mode_sticky":"\u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u0645\u062a\u0646 \u062f\u0631 \u062d\u0627\u0644\u062a \u0633\u0627\u062f\u0647 \u0627\u0633\u062a. \u0628\u0631\u0627\u06cc \u0628\u0631\u06af\u0634\u062a \u0628\u0647 \u062d\u0627\u0644\u062a \u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u0628\u0627\u0642\u0627\u0639\u062f\u0647 \u062f\u0648\u0628\u0627\u0631\u0647 \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f. \u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0627\u062f\u06cc\u062f \u0628\u0647 \u062d\u0627\u0644\u062a \u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u0628\u0627\u0642\u0627\u0639\u062f\u0647 \u0628\u0627\u0632 \u0645\u06cc \u06af\u0631\u062f\u06cc\u062f.","selectall_desc":"\u0627\u0646\u062a\u062e\u0627\u0628 \u0647\u0645\u0647","paste_word_desc":"\u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u0627\u0632 \u0648\u064f\u0631\u062f","paste_text_desc":"\u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062a\u0646 \u0633\u0627\u062f\u0647"},"paste_dlg":{"word_title":"\u062c\u0647\u062a \u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u0645\u062a\u0646 \u062f\u0631 \u067e\u0646\u062c\u0631\u0647 \u0627\u0632 CTRL+V \u0628\u0631 \u0631\u0648\u06cc \u0635\u0641\u062d\u0647 \u06a9\u0644\u06cc\u062f \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0645\u0627\u0626\u06cc\u062f.","text_linebreaks":"\u062d\u0641\u0638 \u0642\u0637\u0639 \u062e\u0637\u0648\u0637","text_title":"\u062c\u0647\u062a \u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u0645\u062a\u0646 \u062f\u0631 \u067e\u0646\u062c\u0631\u0647 \u0627\u0632 CTRL+V \u0628\u0631 \u0631\u0648\u06cc \u0635\u0641\u062d\u0647 \u06a9\u0644\u06cc\u062f \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0645\u0627\u0626\u06cc\u062f."},table:{"merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":"",cell:"\u0633\u0644\u0648\u0644",col:"\u0633\u062a\u0648\u0646",row:"\u0633\u0637\u0631",del:"\u062d\u0630\u0641 \u062c\u062f\u0648\u0644","copy_row_desc":"\u06a9\u067e\u06cc \u0633\u0637\u0631 \u062c\u062f\u0648\u0644","cut_row_desc":"\u0628\u0631\u0634 (Cut) \u0633\u0637\u0631 \u062c\u062f\u0648\u0644","paste_row_after_desc":"\u0686\u0633\u0628\u0627\u0646\u062f\u0646 (Paste) \u0633\u0637\u0631 \u062c\u062f\u0648\u0644 \u062f\u0631 \u0628\u0639\u062f","paste_row_before_desc":"\u0686\u0633\u0628\u0627\u0646\u062f\u0646 (Paste) \u0633\u0637\u0631 \u062c\u062f\u0648\u0644 \u062f\u0631 \u0642\u0628\u0644","props_desc":"\u0645\u0634\u062e\u0635\u0627\u062a \u062c\u062f\u0648\u0644","cell_desc":"\u0645\u0634\u062e\u0635\u0627\u062a \u0633\u0644\u0648\u0644 \u062c\u062f\u0648\u0644","row_desc":"\u0645\u0634\u062e\u0635\u0627\u062a \u0633\u0637\u0631 \u062c\u062f\u0648\u0644","merge_cells_desc":"\u0627\u062f\u063a\u0627\u0645 \u0633\u0644\u0648\u0644 \u0647\u0627\u06cc \u062c\u062f\u0648\u0644","split_cells_desc":"\u062a\u0642\u0633\u06cc\u0645 \u0633\u0644\u0648\u0644 \u0647\u0627\u06cc \u062c\u062f\u0648\u0644 \u0627\u062f\u063a\u0627\u0645 \u0634\u062f\u0647","delete_col_desc":"\u062d\u0630\u0641 \u0633\u062a\u0648\u0646","col_after_desc":"\u062f\u0631\u062c \u0633\u062a\u0648\u0646 \u062f\u0631 \u0628\u0639\u062f","col_before_desc":"\u062f\u0631\u062c \u0633\u062a\u0648\u0646 \u062f\u0631 \u0642\u0628\u0644","delete_row_desc":"\u062d\u0630\u0641 \u0633\u0637\u0631","row_after_desc":"\u062f\u0631\u062c \u0633\u0637\u0631 \u062f\u0631 \u0628\u0639\u062f","row_before_desc":"\u062f\u0631\u062c \u0633\u0637\u0631 \u062f\u0631 \u0642\u0628\u0644",desc:"\u062f\u0631\u062c/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u062c\u062f\u0648\u0644"},autosave:{"warning_message":"\u0627\u06af\u0631 \u0645\u062d\u062a\u0648\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0634\u062f\u0647 \u0631\u0627 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0645\u062d\u062a\u0648\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631 \u0627\u0632 \u0628\u06cc\u0646 \u0645\u06cc\u200c\u0631\u0648\u062f. \u0628\u0631\u0627\u06cc \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0645\u062d\u062a\u0648\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062f\u0627\u0631\u06cc\u062f\u061f.","restore_content":"\u0628\u0627\u0632\u06af\u0631\u062f\u0627\u0646\u06cc \u0645\u062d\u062a\u0648\u0627 \u0627\u0632 \u0630\u062e\u06cc\u0631\u0647\u200c\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631","unload_msg":"\u0627\u06af\u0631 \u0627\u0632 \u0627\u06cc\u0646 \u0635\u0641\u062d\u0647 \u0628\u0647 \u062c\u0627\u06cc \u062f\u06cc\u06af\u0631\u06cc \u0628\u0631\u0648\u06cc\u062f \u060c \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u062f\u0631 \u0645\u062d\u062a\u0648\u0627 \u0627\u0632 \u062f\u0633\u062a \u062e\u0648\u0627\u0647\u062f \u0631\u0641\u062a."},fullscreen:{desc:"\u062a\u0639\u0648\u06cc\u0636 \u0628\u0647 \u062d\u0627\u0644\u062a \u0635\u0641\u062d\u0647 \u06a9\u0627\u0645\u0644"},media:{"delta_height":"","delta_width":"",edit:"\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0631\u0633\u0627\u0646\u0647 \u062c\u0627\u0633\u0627\u0632\u06cc \u0634\u062f\u0647 (Embeded Media)",desc:"\u062f\u0631\u062c / \u0648\u06cc\u0631\u0627\u06cc\u0634 \u0631\u0633\u0627\u0646\u0647 \u062c\u0627\u0633\u0627\u0632\u06cc \u0634\u062f\u0647 (Embeded Media)"},fullpage:{desc:"\u0645\u0634\u062e\u0635\u0627\u062a \u0633\u0646\u062f","delta_width":"","delta_height":""},template:{desc:"\u062f\u0631\u062c \u0645\u062d\u062a\u0648\u0627\u06cc \u0642\u0627\u0644\u0628 \u0627\u0632 \u067e\u06cc\u0634 \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647"},visualchars:{desc:"\u0631\u0648\u0634\u0646/\u062e\u0627\u0645\u0648\u0634 \u06a9\u0631\u062f\u0646 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u0647\u0627\u06cc \u06a9\u0646\u062a\u0631\u0644 \u0628\u0635\u0631\u06cc (Visual)."},spellchecker:{desc:"\u062a\u0639\u0648\u06cc\u0636 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u0646\u062f\u0647 \u0627\u0645\u0644\u0627\u0621",menu:"\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u0646\u062f\u0647 \u0627\u0645\u0644\u0627\u0621","ignore_word":"\u0686\u0634\u0645 \u067e\u0648\u0634\u06cc \u0627\u0632 \u06a9\u0644\u0645\u0647","ignore_words":"\u0686\u0634\u0645 \u067e\u0648\u0634\u06cc \u0627\u0632 \u0647\u0645\u0647",langs:"\u0632\u0628\u0627\u0646 \u0647\u0627",wait:"\u0644\u0637\u0641\u0627 \u0645\u0646\u062a\u0638\u0631 \u0628\u0645\u0627\u0646\u06cc\u062f...",sug:"\u067e\u06cc\u0634\u0646\u0647\u0627\u062f\u0627\u062a","no_sug":"\u0628\u062f\u0648\u0646 \u067e\u06cc\u0634\u0646\u0647\u0627\u062f","no_mpell":"\u0647\u06cc\u0686 \u062e\u0637\u0627\u06cc \u0627\u0645\u0644\u0627\u0626\u06cc \u06cc\u0627\u0641\u062a\u0647 \u0646\u0634\u062f.","learn_word":"\u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u06a9\u0644\u0645\u0647"},pagebreak:{desc:"\u062f\u0631\u062c \u0642\u0637\u0639 \u0635\u0641\u062d\u0647 \u0628\u0631\u0627\u06cc \u0686\u0627\u067e"},advlist:{types:"\u0627\u0646\u0648\u0627\u0639",def:"\u067e\u06cc\u0634\u200c\u0641\u0631\u0636","lower_alpha":"\u0627\u0644\u0641\u0628\u0627\u06cc \u0627\u0646\u06af\u0644\u06cc\u0633\u06cc \u06a9\u0648\u0686\u06a9","lower_greek":"\u06cc\u0648\u0646\u0627\u0646\u06cc \u06a9\u0648\u0686\u06a9","lower_roman":"\u0631\u0648\u0645\u06cc \u06a9\u0648\u0686\u06a9","upper_alpha":"\u0627\u0644\u0641\u0628\u0627\u06cc \u0627\u0646\u06af\u0644\u06cc\u0633\u06cc \u0628\u0632\u0631\u06af","upper_roman":"\u0631\u0648\u0645\u06cc \u0628\u0632\u0631\u06af",circle:"\u062f\u0627\u06cc\u0631\u0647",disc:"\u0642\u0631\u0635 \u0645\u0627\u0646\u0646\u062f",square:"\u0645\u0631\u0628\u0639"},colors:{"333300":"\u0632\u06cc\u062a\u0648\u0646\u06cc \u062a\u06cc\u0631\u0647","993300":"\u0646\u0627\u0631\u0646\u062c\u06cc \u0633\u0648\u062e\u062a\u0647","000000":"\u0645\u0634\u06a9\u06cc","003300":"\u0633\u0628\u0632 \u062a\u06cc\u0631\u0647","003366":"\u0644\u0627\u062c\u0648\u0631\u062f\u06cc \u062a\u06cc\u0631\u0647","000080":"\u06a9\u0628\u0648\u062f","333399":"\u0646\u06cc\u0644\u06cc","333333":"\u0637\u0648\u0633\u06cc \u062e\u06cc\u0644\u06cc \u062a\u06cc\u0631\u0647","800000":"\u0628\u0644\u0648\u0637\u06cc",FF6600:"\u0646\u0627\u0631\u0646\u062c\u06cc","808000":"\u0632\u06cc\u062a\u0648\u0646\u06cc","008000":"\u0633\u0628\u0632","008080":"\u0627\u0637\u0644\u0633\u06cc","0000FF":"\u0622\u0628\u06cc","666699":"\u0622\u0628\u06cc \u062e\u0627\u06a9\u0633\u062a\u0631\u06cc","808080":"\u0637\u0648\u0633\u06cc",FF0000:"\u0633\u0631\u062e",FF9900:"\u06a9\u0647\u0631\u0628\u0627\u06cc\u06cc","99CC00":"\u0632\u0631\u062f \u0645\u0627\u06cc\u0644 \u0628\u0647 \u0633\u0628\u0632","339966":"\u0633\u0628\u0632 \u0645\u0627\u06cc\u0644 \u0628\u0647 \u0622\u0628\u06cc","33CCCC":"\u0641\u06cc\u0631\u0648\u0632\u0647\u200c\u0627\u06cc","3366FF":"\u0622\u0628\u06cc \u0633\u0644\u0637\u0646\u062a\u06cc","800080":"\u0628\u0646\u0641\u0634","999999":"\u0637\u0648\u0633\u06cc \u0645\u062a\u0648\u0633\u0637",FF00FF:"\u0633\u0631\u062e\u0627\u0628\u06cc",FFCC00:"\u0637\u0644\u0627\u06cc\u06cc",FFFF00:"\u0632\u0631\u062f","00FF00":"\u0644\u06cc\u0645\u0648\u06cc\u06cc","00FFFF":"\u0622\u0628\u06cc \u0646\u0642\u0631\u0647\u200c\u0627\u06cc","00CCFF":"\u0622\u0628\u06cc \u0622\u0633\u0645\u0627\u0646\u06cc","993366":"\u0642\u0647\u0648\u0647\u200c\u0627\u06cc",C0C0C0:"\u0646\u0642\u0631\u0647\u200c\u0627\u06cc",FF99CC:"\u0635\u0648\u0631\u062a\u06cc",FFCC99:"\u0647\u0644\u0648\u06cc\u06cc",FFFF99:"\u0632\u0631\u062f \u0631\u0648\u0634\u0646",CCFFCC:"\u0633\u0628\u0632 \u0631\u0648\u0634\u0646",CCFFFF:"\u0641\u06cc\u0631\u0648\u0632\u0647\u200c\u0627\u06cc \u0631\u0648\u0634\u0646","99CCFF":"\u0622\u0628\u06cc \u0622\u0633\u0645\u0627\u0646\u06cc \u0631\u0648\u0634\u0646",CC99FF:"\u06af\u0648\u062c\u0647\u200c\u0627\u06cc",FFFFFF:"\u0633\u0641\u06cc\u062f"},aria:{"rich_text_area":"\u0645\u062a\u0646 \u063a\u0646\u06cc"},wordcount:{words:"\u06a9\u0644\u0645\u0627\u062a:"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/fi.js b/program/js/tiny_mce/langs/fi.js
deleted file mode 100644
index 08eea143c..000000000
--- a/program/js/tiny_mce/langs/fi.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({fi:{common:{"more_colors":"Enemm\u00e4n v\u00e4rej\u00e4","invalid_data":"Virhe: Sy\u00f6tit virheellisi\u00e4 arvoja, ne n\u00e4kyv\u00e4t punaisina.","popup_blocked":"Sinulla on k\u00e4yt\u00f6ss\u00e4si ohjelma, joka est\u00e4\u00e4 ponnahdusikkunoiden n\u00e4yt\u00f6n. Sinun t\u00e4ytyy kytke\u00e4 ponnahdusikkunoiden esto pois p\u00e4\u00e4lt\u00e4 voidaksesi hy\u00f6dynt\u00e4\u00e4 t\u00e4ysin t\u00e4t\u00e4 ty\u00f6kalua.","clipboard_no_support":"Selaimesi ei ole tuettu, k\u00e4yt\u00e4 sen sijaan n\u00e4pp\u00e4inoikoteit\u00e4.","clipboard_msg":"Kopioi/Leikkaa/Liit\u00e4 ei ole k\u00e4ytett\u00e4viss\u00e4 Mozilla ja Firefox -selaimilla.\nHaluatko lis\u00e4tietoa t\u00e4st\u00e4 ongelmasta?","not_set":"-- Ei m\u00e4\u00e4ritetty --","class_name":"Luokka",browse:"Selaa",close:"Sulje",cancel:"Peru",update:"P\u00e4ivit\u00e4",insert:"Lis\u00e4\u00e4",apply:"K\u00e4yt\u00e4","edit_confirm":"Haluatko k\u00e4ytt\u00e4\u00e4 WYSIWYG-tilaa t\u00e4ss\u00e4 tekstikent\u00e4ss\u00e4?","invalid_data_number":"{#field} t\u00e4ytyy olla numero","invalid_data_min":"{#field} t\u00e4ytyy olla suurempi numero kuin {#min}","invalid_data_size":"{#field} t\u00e4ytyy olla numero tai prosentti",value:"(arvo)"},contextmenu:{full:"Molemmille puolille",right:"Oikealle",center:"Keskelle",left:"Vasemmalle",align:"Tasaus"},insertdatetime:{"day_short":"su,ma,ti,ke,to,pe,la,su","day_long":"sunnuntai,maanantai,tiistai,keskiviikko,torstai,perjantai,lauantai,sunnuntai","months_short":"tammi,helmi,maalis,huhti,touko,kes\u00e4,hein\u00e4,elo,syys,loka,marras,joulu","months_long":"tammikuu,helmikuu,maaliskuu,huhtikuu,toukokuu,kes\u00e4kuu,hein\u00e4kuu,elokuu,syyskuu,lokakuu,marraskuu,joulukuu","inserttime_desc":"Lis\u00e4\u00e4 kellonaika","insertdate_desc":"Lis\u00e4\u00e4 p\u00e4iv\u00e4m\u00e4\u00e4r\u00e4","time_fmt":"%H:%M:%S","date_fmt":"%d.%m.%Y"},print:{"print_desc":"Tulosta"},preview:{"preview_desc":"Esikatselu"},directionality:{"rtl_desc":"Suunta oikealta vasemmalle","ltr_desc":"Suunta vasemmalta oikealle"},layer:{content:"Uusi taso...","absolute_desc":"Absoluuttinen sijainti","backward_desc":"Siirr\u00e4 taaksep\u00e4in","forward_desc":"Siirr\u00e4 eteenp\u00e4in","insertlayer_desc":"Lis\u00e4\u00e4 uusi taso"},save:{"save_desc":"Tallenna","cancel_desc":"Peru kaikki muutokset"},nonbreaking:{"nonbreaking_desc":"Lis\u00e4\u00e4 tyhj\u00e4 merkki (nbsp)"},iespell:{download:"ieSpell-ohjelmaa ei havaittu. Haluatko asentaa sen nyt?","iespell_desc":"Oikeinkirjoituksen tarkistus"},advhr:{"advhr_desc":"Vaakatasoviivain","delta_height":"","delta_width":""},emotions:{"emotions_desc":"Hymi\u00f6t","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"Etsi ja korvaa","search_desc":"Etsi","delta_width":"","delta_height":""},advimage:{"image_desc":"Lis\u00e4\u00e4/muokkaa kuvaa","delta_width":"","delta_height":""},advlink:{"link_desc":"Lis\u00e4\u00e4/muokkaa linkki\u00e4","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"Lis\u00e4\u00e4/muokkaa attribuutteja","ins_desc":"Lis\u00e4ys","del_desc":"Poisto","acronym_desc":"Kirjainlyhenne","abbr_desc":"Lyhenne","cite_desc":"Sitaatti","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"Muokkaa CSS-tyylej\u00e4","delta_height":"","delta_width":""},paste:{"plaintext_mode":"Liitt\u00e4minen on nyt pelkk\u00e4n\u00e4 tekstin\u00e4. Klikkaa uudelleen vaihtaaksesi takaisin tavalliseen tilaan.","plaintext_mode_sticky":"Liitt\u00e4minen on nyt pelkk\u00e4n\u00e4 tekstin\u00e4. Klikkaa uudelleen vaihtaaksesi takaisin tavalliseen tilaan. Palaat takaisin tavalliseen tilaan liitetty\u00e4si jotakin.","selectall_desc":"Valitse kaikki","paste_word_desc":"Liit\u00e4 Wordist\u00e4","paste_text_desc":"Liit\u00e4 pelkk\u00e4n\u00e4 tekstin\u00e4"},"paste_dlg":{"word_title":"Paina Ctrl+V liitt\u00e4\u00e4ksesi sis\u00e4ll\u00f6n ikkunaan.","text_linebreaks":"S\u00e4ilyt\u00e4 rivinvaihdot","text_title":"Paina Ctrl+V liitt\u00e4\u00e4ksesi sis\u00e4ll\u00f6n ikkunaan."},table:{"cellprops_delta_width":"80",cell:"Solu",col:"Sarake",row:"Rivi",del:"Poista taulukko","copy_row_desc":"Kopioi taulukon rivi","cut_row_desc":"Leikkaa taulukon rivi","paste_row_after_desc":"Liit\u00e4 taulukon rivi j\u00e4lkeen","paste_row_before_desc":"Liit\u00e4 taulukon rivi ennen","props_desc":"Taulukon asetukset","cell_desc":"Taulukon solun asetukset","row_desc":"Taulukon rivin asetukset","merge_cells_desc":"Yhdist\u00e4 taulukon solut","split_cells_desc":"Jaa yhdistetyt taulukon solut","delete_col_desc":"Poista sarake","col_after_desc":"Lis\u00e4\u00e4 sarake j\u00e4lkeen","col_before_desc":"Lis\u00e4\u00e4 sarake ennen","delete_row_desc":"Poista rivi","row_after_desc":"Lis\u00e4\u00e4 rivi j\u00e4lkeen","row_before_desc":"Lis\u00e4\u00e4 rivi ennen",desc:"Lis\u00e4\u00e4 uusi taulukko","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"Jos palautat automaattisesti tallennetun sis\u00e4ll\u00f6n, menet\u00e4t t\u00e4ll\u00e4 hetkell\u00e4 editorissa olevan sis\u00e4ll\u00f6n.\n\nHaluatko varmasti palauttaa tallennetun sis\u00e4ll\u00f6n?","restore_content":"Palauta automaattisesti tallennettu sis\u00e4lt\u00f6.","unload_msg":"Tekem\u00e4si muutokset menetet\u00e4\u00e4n jos poistut t\u00e4lt\u00e4 sivulta."},fullscreen:{desc:"Kokoruututila"},media:{edit:"Muokkaa upotettua mediaa",desc:"Lis\u00e4\u00e4/muokkaa upotettua mediaa","delta_height":"","delta_width":""},fullpage:{desc:"Tiedoston asetukset","delta_width":"","delta_height":""},template:{desc:"Lis\u00e4\u00e4 esim\u00e4\u00e4ritetty\u00e4 sivupohjasis\u00e4lt\u00f6\u00e4"},visualchars:{desc:"N\u00e4yt\u00e4/piilota muotoilumerkit."},spellchecker:{desc:"Oikeinkirjoituksen tarkistus",menu:"Oikeinkirjoituksen asetukset","ignore_word":"Ohita sana","ignore_words":"Ohita kaikki",langs:"Kielet",wait:"Odota ole hyv\u00e4...",sug:"Ehdotukset","no_sug":"Ei ehdotuksia","no_mpell":"Virheit\u00e4 ei l\u00f6ytynyt.","learn_word":"Opettele sana"},pagebreak:{desc:"Lis\u00e4\u00e4 sivunvaihto."},advlist:{types:"Tyypit",def:"Oletus","lower_alpha":"pienet kirjaimet: a, b, c","lower_greek":"pienet kirjaimet: \u03b1, \u03b2, \u03b3","lower_roman":"pienet kirjaimet: i, ii, iii","upper_alpha":"isot kirjaimet: A, B, C","upper_roman":"isot kirjaimet: I, II, III",circle:"Pallo",disc:"Ympyr\u00e4",square:"Neli\u00f6"},colors:{"333300":"Tummanoliivi","993300":"Tummanoranssi","000000":"Musta","003300":"Tummanvihre\u00e4","003366":"Tummantaivaansininen","000080":"Laivaston sininen","333399":"Indigonsininen","333333":"Hyvin tummanharmaa","800000":"Punaruskea",FF6600:"Oranssi","808000":"Oliivi","008000":"Vihre\u00e4","008080":"Sinivihre\u00e4","0000FF":"Sininen","666699":"Harmaansininen","808080":"Harmaa",FF0000:"Punainen",FF9900:"Kullanruskea","99CC00":"Keltaisenvihre\u00e4","339966":"Merenvihre\u00e4","33CCCC":"Turkoosi","3366FF":"Syv\u00e4n sininen","800080":"Violetti","999999":"Keskiharmaa",FF00FF:"Magenta",FFCC00:"Kulta",FFFF00:"Keltainen","00FF00":"Lime","00FFFF":"Sinivihre\u00e4","00CCFF":"Taivaansininen","993366":"Ruskea",C0C0C0:"Hopea",FF99CC:"Vaaleanpunainen",FFCC99:"Persikka",FFFF99:"Vaaleankeltainen",CCFFCC:"Haalistuneen vihre\u00e4",CCFFFF:"Haalistuneen syaani","99CCFF":"Vaaleantaivaansininen",CC99FF:"Luumunpunainen",FFFFFF:"Valkoinen"},aria:{"rich_text_area":"Rikastettu tekstialue"},wordcount:{words:"Sanaa:"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/fr.js b/program/js/tiny_mce/langs/fr.js
deleted file mode 100644
index b9cfd8b51..000000000
--- a/program/js/tiny_mce/langs/fr.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({fr:{common:{"more_colors":"Plus de couleurs","invalid_data":"Erreur : saisie de valeurs incorrectes. Elles sont mises en \u00e9vidence en rouge.","popup_blocked":"D\u00e9sol\u00e9, nous avons d\u00e9tect\u00e9 que votre bloqueur de popup a bloqu\u00e9 une fen\u00eatre dont l\'application a besoin. Vous devez d\u00e9sactiver votre bloqueur de popup pour pouvoir utiliser cet outil.","clipboard_no_support":"Actuellement non support\u00e9 par votre navigateur.\n Veuillez utiliser les raccourcis clavier \u00e0 la place.","clipboard_msg":"Les fonctions Copier/Couper/Coller ne sont pas valables sur Mozilla et Firefox.\nSouhaitez-vous avoir plus d\'informations sur ce sujet ?","not_set":"-- non d\u00e9fini --","class_name":"Classe",browse:"parcourir",close:"Fermer",cancel:"Annuler",update:"Mettre \u00e0 jour",insert:"Ins\u00e9rer",apply:"Appliquer","edit_confirm":"Souhaitez-vous utiliser le mode WYSIWYG pour cette zone de texte ?","invalid_data_number":"{#field} doit \u00eatre un nombre","invalid_data_min":"{#field} doit \u00eatre un nombre plus grand que {#min}","invalid_data_size":"{#field} doit \u00eatre un nombre ou un pourcentage",value:"(valeur)"},contextmenu:{full:"Justifi\u00e9",right:"Droite",center:"Centr\u00e9",left:"Gauche",align:"Alignement"},insertdatetime:{"day_short":"Dim,Lun,Mar,Mer,Jeu,Ven,Sam,Dim","day_long":"Dimanche,Lundi,Mardi,Mercredi,Jeudi,Vendredi,Samedi,Dimanche","months_short":"Jan,F\u00e9v,Mar,Avr,Mai,Juin,Juil,Ao\u00fbt,Sep,Oct,Nov,D\u00e9c","months_long":"Janvier,F\u00e9vrier,Mars,Avril,Mai,Juin,Juillet,Ao\u00fbt,Septembre,Octobre,Novembre,D\u00e9cembre","inserttime_desc":"Ins\u00e9rer l\'heure","insertdate_desc":"Ins\u00e9rer la date","time_fmt":"%H:%M:%S","date_fmt":"%d-%m-%Y"},print:{"print_desc":"Imprimer"},preview:{"preview_desc":"Pr\u00e9visualiser"},directionality:{"rtl_desc":"\u00c9criture de droite \u00e0 gauche","ltr_desc":"\u00c9criture de gauche \u00e0 droite"},layer:{content:"Nouvelle couche\u2026","absolute_desc":"Activer le positionnement absolu","backward_desc":"D\u00e9placer vers l\'arri\u00e8re","forward_desc":"D\u00e9placer vers l\'avant","insertlayer_desc":"Ins\u00e9rer une nouvelle couche"},save:{"save_desc":"Enregistrer","cancel_desc":"Annuler toutes les modifications"},nonbreaking:{"nonbreaking_desc":"Ins\u00e9rer une espace ins\u00e9cable"},iespell:{download:"ieSpell n\'est pas install\u00e9. Souhaitez-vous l\'installer maintenant ?","iespell_desc":"Lancer le v\u00e9rificateur d\'orthographe"},advhr:{"delta_height":"Ecart de hauteur","delta_width":"Ecart de largeur","advhr_desc":"Ins\u00e9rer un trait horizontal"},emotions:{"delta_height":"delta_height","delta_width":"delta_width","emotions_desc":"\u00c9motic\u00f4nes"},searchreplace:{"replace_desc":"Rechercher / remplacer","search_desc":"Rechercher","delta_width":"","delta_height":""},advimage:{"image_desc":"Ins\u00e9rer / \u00e9diter une image","delta_width":"","delta_height":""},advlink:{"link_desc":"Ins\u00e9rer / \u00e9diter un lien","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"Ins\u00e9rer / \u00e9diter les attributs","ins_desc":"Ins\u00e9r\u00e9","del_desc":"Barr\u00e9","acronym_desc":"Acronyme","abbr_desc":"Abr\u00e9viation","cite_desc":"Citation","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"\u00c9diter la feuille de style (CSS)","delta_height":"","delta_width":""},paste:{"plaintext_mode":"Le collage est actuellement en mode texte non format\u00e9. Cliquez \u00e0 nouveau pour revenir en mode de collage ordinaire.","plaintext_mode_sticky":"Le collage est actuellement en mode texte non format\u00e9. Cliquez \u00e0 nouveau pour revenir en mode de collage ordinaire. Apr\u00e8s avoir coll\u00e9 quelque chose, vous retournerez en mode de collage ordinaire.","selectall_desc":"Tout s\u00e9lectionner","paste_word_desc":"Coller un texte cr\u00e9\u00e9 sous Word","paste_text_desc":"Coller comme texte brut"},"paste_dlg":{"word_title":"Utilisez CTRL+V sur votre clavier pour coller le texte dans la fen\u00eatre.","text_linebreaks":"Conserver les retours \u00e0 la ligne","text_title":"Utilisez CTRL+V sur votre clavier pour coller le texte dans la fen\u00eatre."},table:{cell:"Cellule",col:"Colonne",row:"Ligne",del:"Effacer le tableau","copy_row_desc":"Copier la ligne","cut_row_desc":"Couper la ligne","paste_row_after_desc":"Coller la ligne apr\u00e8s","paste_row_before_desc":"Coller la ligne avant","props_desc":"Propri\u00e9t\u00e9s du tableau","cell_desc":"Propri\u00e9t\u00e9s de la cellule","row_desc":"Propri\u00e9t\u00e9s de la ligne","merge_cells_desc":"Fusionner les cellules","split_cells_desc":"Scinder les cellules fusionn\u00e9es","delete_col_desc":"Effacer la colonne","col_after_desc":"Ins\u00e9rer une colonne apr\u00e8s","col_before_desc":"Ins\u00e9rer une colonne avant","delete_row_desc":"Effacer la ligne","row_after_desc":"Ins\u00e9rer une ligne apr\u00e8s","row_before_desc":"Ins\u00e9rer une ligne avant",desc:"Ins\u00e9rer un nouveau tableau","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"Si vous restaurez le contenu sauv\u00e9, vous perdrez le contenu qui est actuellement dans l\'\u00e9diteur.\n\n\u00cates-vous s\u00fbr de vouloir restaurer le contenu sauv\u00e9 ?","restore_content":"Restaurer le contenu auto-sauvegard\u00e9.","unload_msg":"Les modifications apport\u00e9es seront perdues si vous quittez cette page."},fullscreen:{desc:"Passer en mode plein \u00e9cran"},media:{edit:"\u00c9diter un m\u00e9dia incorpor\u00e9",desc:"Ins\u00e9rer / \u00e9diter un m\u00e9dia incorpor\u00e9","delta_height":"","delta_width":""},fullpage:{desc:"Propri\u00e9t\u00e9s du document","delta_width":"","delta_height":""},template:{desc:"Ins\u00e9rer un mod\u00e8le pr\u00e9d\u00e9fini."},visualchars:{desc:"Activer les caract\u00e8res de mise en page."},spellchecker:{desc:"Activer le v\u00e9rificateur d\'orthographe",menu:"Param\u00e8tres du v\u00e9rificateur d\'orthographe","ignore_word":"Ignorer le mot","ignore_words":"Tout ignorer",langs:"Langues",wait:"Veuillez patienter\u2026",sug:"Suggestions","no_sug":"Aucune suggestion","no_mpell":"Aucune erreur trouv\u00e9e.","learn_word":"Apprendre le mot"},pagebreak:{desc:"Ins\u00e9rer un saut de page."},advlist:{types:"Types",def:"D\u00e9faut","lower_alpha":"Alpha minuscule","lower_greek":"Grec minuscule","lower_roman":"Romain minuscule","upper_alpha":"Alpha majuscule","upper_roman":"Romain majuscule",circle:"Cercle",disc:"Disque",square:"Carr\u00e9"},colors:{"333300":"Olive fonc\u00e9","993300":"Orange br\u00fbl\u00e9","000000":"Noir","003300":"Vert fonc\u00e9","003366":"Azur fonc\u00e9","000080":"Bleu marine","333399":"Indigo","333333":"Gris tr\u00e8s fonc\u00e9","800000":"Bordeaux",FF6600:"Orange","808000":"Olive","008000":"Vert","008080":"Sarcelle","0000FF":"Bleu","666699":"Bleu gris\u00e2tre","808080":"Gris",FF0000:"Rouge",FF9900:"Ambre","99CC00":"Jaune vert","339966":"Mer verte","33CCCC":"Turquoise","3366FF":"Bleu royal","800080":"Violet","999999":"Gris moyen",FF00FF:"Magenta",FFCC00:"Or",FFFF00:"Jaune","00FF00":"Lime","00FFFF":"Bleu vert","00CCFF":"Bleu ciel","993366":"Brun",C0C0C0:"Argent",FF99CC:"Rose",FFCC99:"P\u00eache",FFFF99:"Jaune clair",CCFFCC:"Vert p\u00e2le",CCFFFF:"Cyan p\u00e2le","99CCFF":"Bleu ciel clair",CC99FF:"Prune",FFFFFF:"Blanc"},aria:{"rich_text_area":"Texte riche"},wordcount:{words:"Mots:"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/gl.js b/program/js/tiny_mce/langs/gl.js
deleted file mode 100644
index 08aff0856..000000000
--- a/program/js/tiny_mce/langs/gl.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({gl:{common:{"more_colors":"Mais cores","invalid_data":"Error: Introducidos valores non v\u00e1lidos, est\u00e1n marcados en vermello.","popup_blocked":"O seu bloqueador de vent\u00e1s emerxentes deshabilitou unha vent\u00e1 que precisa pra o funcionamento da aplicaci\u00f3n. Precisa deshabilita-lo bloqueo de `popups` neste sitio pra utilizar \u00f3 m\u00e1ximo esta ferramenta.","clipboard_no_support":"O seu navegador non soporta estas funci\u00f3ns, use os atallos de teclado.","clipboard_msg":"Copiar/Cortar/Pegar non est\u00e1 disponible en Mozilla e Firefox.\n\u00bfDesexa obter mais informaci\u00f3n sobre de este asunto?","not_set":"-- Ning\u00fan --","class_name":"Clase",browse:"Examinar",close:"Cerrar",cancel:"Cancelar",update:"Actualizar",insert:"Insertar",apply:"Apricar","edit_confirm":"\u00bfDesexa utiliza-lo modo WYSIWYG pra esta caixa de texto?","invalid_data_number":"{#field} must be a number","invalid_data_min":"{#field} must be a number greater than {#min}","invalid_data_size":"{#field} must be a number or percentage",value:"(value)"},contextmenu:{full:"Xustificado",right:"Dereita",center:"Centrado",left:"Esquerda",align:"Ali\u00f1amento"},insertdatetime:{"day_short":"Dom,Lun,Mar,M\u00e9r,Xov,Ver,S\u00e1b,Dom","day_long":"Domingo,Luns,Martes,M\u00e9rcores,Xoves,Venres,S\u00e1bado,Domingo","months_short":"Xan,Feb,Mar,Abr,Mai,Xu\u00f1,Xul,Ago,Set,Out,Nov,Dec","months_long":"Xaneito,Febreiro,Marzo,Abril,Maio,Xu\u00f1o,Xullo,Agosto,Setembro,Outubro,Novembro,Decembro","inserttime_desc":"Insertar hora","insertdate_desc":"Insertar data","time_fmt":"%H:%M:%S","date_fmt":"%d-%m-%Y"},print:{"print_desc":"Imprimir"},preview:{"preview_desc":"Vista previa"},directionality:{"rtl_desc":"Direcci\u00f3n dereita a esquerda","ltr_desc":"Direcci\u00f3n esquerda a dereita"},layer:{content:"Nova capa...","absolute_desc":"Posici\u00f3n absoluta","backward_desc":"Recuar","forward_desc":"Avanzar","insertlayer_desc":"Insertar nova capa"},save:{"save_desc":"Gardar","cancel_desc":"Cancelar todo-los cambios"},nonbreaking:{"nonbreaking_desc":"Insertar espacio non colapsable"},iespell:{download:"Non se detectou \'ieSpell\'. \u00bfDesexa instala-lo agora?","iespell_desc":"Corrector ortogr\u00e1fico"},advhr:{"advhr_desc":"Regra horizontal","delta_height":"","delta_width":""},emotions:{"emotions_desc":"Emoticones","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"Buscar/Reemplazar","search_desc":"Buscar","delta_width":"","delta_height":""},advimage:{"image_desc":"Insertar/editar imaxe","delta_width":"","delta_height":""},advlink:{"link_desc":"Insertar/editar hiperv\u00ednculo","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"Insertar/Editar atributos","ins_desc":"Inserci\u00f3n","del_desc":"Borrado","acronym_desc":"Acr\u00f3nimo","abbr_desc":"Abreviatura","cite_desc":"Cita","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"Editar Estilo CSS","delta_height":"","delta_width":""},paste:{"selectall_desc":"Seleccionar todo","paste_word_desc":"Pegar desde Word","paste_text_desc":"Pegar como texto simple","plaintext_mode":"Paste is now in plain text mode. Click again to toggle back to regular paste mode.","plaintext_mode_sticky":"Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode."},"paste_dlg":{"word_title":"Use CTRL+V no teclado pra pega-lo texto na vent\u00e1.","text_linebreaks":"Manter salto de li\u00f1as","text_title":"Use CTRL+V no teclado pra pega-lo texto na vent\u00e1."},table:{cell:"Celda",col:"Columna",row:"Fila",del:"Eliminar t\u00e1boa","copy_row_desc":"Copiar fila","cut_row_desc":"Cortar fila","paste_row_after_desc":"Pegar filas (desp\u00f3is)","paste_row_before_desc":"Pegar filas (antes)","props_desc":"Propiedades da t\u00e1boa","cell_desc":"Propiedades da celda","row_desc":"Propiedades da fila","merge_cells_desc":"Vincular celdas","split_cells_desc":"Dividir celdas","delete_col_desc":"Suprimir columna","col_after_desc":"Insertar columna (desp\u00f3is)","col_before_desc":"Insertar columna (antes)","delete_row_desc":"Suprimir fila","row_after_desc":"Insertar fila (desp\u00f3is)","row_before_desc":"Insertar fila (antes)",desc:"Inserta unha nova t\u00e1boa","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"unload_msg":"Os cambios realizados perderanse se sae desta p\u00e1xina.","warning_message":"If you restore the saved content, you will lose all the content that is currently in the editor.\n\nAre you sure you want to restore the saved content?","restore_content":"Restore auto-saved content."},fullscreen:{desc:"Cambiar a modo Pantalla Completa"},media:{edit:"Editar medio embebido",desc:"Insertar/editar medio embebido","delta_height":"","delta_width":""},fullpage:{desc:"Propiedades do documento","delta_width":"","delta_height":""},template:{desc:"Insertar contido de plantilla predefinida"},visualchars:{desc:"Caracteres de control ON/OFF."},spellchecker:{desc:"Conmutar corrector ortogr\u00e1fico",menu:"Configuraci\u00f3n de corrector ortogr\u00e1fico","ignore_word":"Ignorar verba","ignore_words":"Ignorar todo",langs:"Idiomas",wait:"Agarde...",sug:"Suxerencias","no_sug":"Sen suxerencias","no_mpell":"Non se atoparon erros.","learn_word":"Learn word"},pagebreak:{desc:"Insertar fin de p\u00e1xina"},advlist:{types:"Types",def:"Default","lower_alpha":"Lower Alpha","lower_greek":"Lower Greek","lower_roman":"Lower Roman","upper_alpha":"Upper Alpha","upper_roman":"Upper Roman",circle:"Circle",disc:"Disc",square:"Square"},colors:{"333300":"Dark olive","993300":"Burnt orange","000000":"Black","003300":"Dark green","003366":"Dark azure","000080":"Navy Blue","333399":"Indigo","333333":"Very dark gray","800000":"Maroon",FF6600:"Orange","808000":"Olive","008000":"Green","008080":"Teal","0000FF":"Blue","666699":"Grayish blue","808080":"Gray",FF0000:"Red",FF9900:"Amber","99CC00":"Yellow green","339966":"Sea green","33CCCC":"Turquoise","3366FF":"Royal blue","800080":"Purple","999999":"Medium gray",FF00FF:"Magenta",FFCC00:"Gold",FFFF00:"Yellow","00FF00":"Lime","00FFFF":"Aqua","00CCFF":"Sky blue","993366":"Brown",C0C0C0:"Silver",FF99CC:"Pink",FFCC99:"Peach",FFFF99:"Light yellow",CCFFCC:"Pale green",CCFFFF:"Pale cyan","99CCFF":"Light sky blue",CC99FF:"Plum",FFFFFF:"White"},aria:{"rich_text_area":"Rich Text Area"},wordcount:{words:"Words"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/he.js b/program/js/tiny_mce/langs/he.js
deleted file mode 100644
index 0f4e12d7b..000000000
--- a/program/js/tiny_mce/langs/he.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({he:{common:{"more_colors":"\u05e2\u05d5\u05d3 \u05e6\u05d1\u05e2\u05d9\u05dd","invalid_data":"\u05e9\u05d2\u05d9\u05d0\u05d4: \u05d4\u05d5\u05e7\u05dc\u05d3 \u05de\u05d9\u05d3\u05e2 \u05dc\u05d0 \u05ea\u05e7\u05e0\u05d9. \u05d4\u05de\u05d9\u05d3\u05e2 \u05e1\u05d5\u05de\u05df \u05d1\u05d0\u05d3\u05d5\u05dd.","popup_blocked":"\u05d7\u05d5\u05e1\u05dd \u05e4\u05e8\u05d9\u05d8\u05d9\u05dd \u05de\u05d5\u05e7\u05e4\u05e6\u05d9\u05dd \u05de\u05e0\u05e2 \u05de\u05d7\u05dc\u05d5\u05df \u05d7\u05e9\u05d5\u05d1 \u05de\u05dc\u05d4\u05e4\u05ea\u05d7,\u05d0\u05dd \u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05d4\u05e9\u05ea\u05de\u05e9 \u05d1\u05db\u05dc\u05d9 \u05d6\u05d4 \u05e2\u05dc\u05d9\u05da \u05dc\u05d1\u05d8\u05dc \u05d0\u05ea \u05d7\u05d5\u05e1\u05dd \u05d4\u05e4\u05e8\u05d9\u05d8\u05d9\u05dd","clipboard_no_support":"\u05db\u05e8\u05d2\u05e2 \u05dc\u05d0 \u05e0\u05ea\u05de\u05da \u05e2\u05dc \u05d9\u05d3\u05d9 \u05d4\u05d3\u05e4\u05d3\u05e4\u05df \u05e9\u05dc\u05da. \u05d4\u05e9\u05ea\u05de\u05e9 \u05d1\u05e7\u05d9\u05e6\u05d5\u05e8\u05d9 \u05d4\u05de\u05e7\u05dc\u05d3\u05ea.","clipboard_msg":"\n \u05d4\u05e2\u05ea\u05e7\u05d4/\u05d2\u05d6\u05d9\u05e8\u05d4 \u05d5\u05d4\u05d3\u05d1\u05e7\u05d4 \u05d0\u05d9\u05e0\u05dd \u05d6\u05de\u05d9\u05e0\u05d9\u05dd \u05d1 Mozilla \u05d5\u05d1-Firefox.\n \u05d4\u05d0\u05dd \u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05e7\u05d1\u05dc \u05de\u05d9\u05d3\u05e2 \u05e0\u05d5\u05e1\u05e3 \u05e2\u05dc \u05d4\u05e0\u05d5\u05e9\u05d0?\n ","not_set":"-- \u05dc\u05d0 \u05d4\u05d5\u05d2\u05d3\u05e8 --","class_name":"\u05de\u05d7\u05dc\u05e7\u05d4",browse:"\u05e2\u05d9\u05d5\u05df",close:"\u05e1\u05d2\u05d9\u05e8\u05d4",cancel:"\u05d1\u05d9\u05d8\u05d5\u05dc",update:"\u05e2\u05d3\u05db\u05d5\u05df",insert:"\u05d4\u05d5\u05e1\u05e4\u05d4",apply:"\u05d0\u05d9\u05e9\u05d5\u05e8","edit_confirm":"\u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05d4\u05e9\u05ea\u05de\u05e9 \u05d1\u05e2\u05d5\u05e8\u05da \u05d4\u05de\u05ea\u05e7\u05d3\u05dd?","invalid_data_number":"{#field} \u05d7\u05d9\u05d9\u05d1 \u05dc\u05d4\u05d9\u05d5\u05ea \u05de\u05e1\u05e4\u05e8","invalid_data_min":"{#field} \u05d4\u05de\u05e1\u05e4\u05e8 \u05d7\u05d9\u05d9\u05d1 \u05dc\u05d4\u05d9\u05d5\u05ea \u05d2\u05d3\u05d5\u05dc \u05de-{#min}","invalid_data_size":"{#field} \u05d4\u05e2\u05e8\u05da \u05d7\u05d9\u05d9\u05d1 \u05dc\u05d4\u05d9\u05d5\u05ea \u05de\u05e1\u05e4\u05e8 \u05d0\u05d5 \u05d0\u05d7\u05d5\u05d6",value:"(\u05e2\u05e8\u05da)"},contextmenu:{full:"\u05e9\u05e0\u05d9 \u05d4\u05e6\u05d3\u05d3\u05d9\u05dd",right:"\u05d9\u05de\u05d9\u05df",center:"\u05d0\u05de\u05e6\u05e2",left:"\u05e9\u05de\u05d0\u05dc",align:"\u05d9\u05d9\u05e9\u05d5\u05e8"},insertdatetime:{"day_short":"\u05d9\u05d5\u05dd \u05d0\',\u05d9\u05d5\u05dd \u05d1\',\u05d9\u05d5\u05dd \u05d2\',\u05d9\u05d5\u05dd \u05d3\',\u05d9\u05d5\u05dd \u05d4\',\u05d9\u05d5\u05dd \u05d5\',\u05e9\u05d1\u05ea,\u05d9\u05d5\u05dd \u05d0\'","day_long":"\u05d9\u05d5\u05dd \u05e8\u05d0\u05e9\u05d5\u05df,\u05d9\u05d5\u05dd \u05e9\u05e0\u05d9,\u05d9\u05d5\u05dd \u05e9\u05dc\u05d9\u05e9\u05d9,\u05d9\u05d5\u05dd \u05e8\u05d1\u05d9\u05e2\u05d9,\u05d9\u05d5\u05dd \u05d7\u05de\u05d9\u05e9\u05d9,\u05d9\u05d5\u05dd \u05e9\u05d9\u05e9,\u05d9\u05d5\u05dd \u05e9\u05d1\u05ea,\u05d9\u05d5\u05dd \u05e8\u05d0\u05e9\u05d5\u05df","months_short":"\u05d9\u05e0\u05d5\u05d0\u05e8,\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8,\u05de\u05e8\u05e5,\u05d0\u05e4\u05e8\u05d9\u05dc,\u05de\u05d0\u05d9,\u05d9\u05d5\u05e0\u05e2,\u05d9\u05d5\u05dc\u05d9,\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8,\u05e1\u05e4\u05d8\u05de\u05d1\u05e8,\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8,\u05e0\u05d5\u05d1\u05de\u05d1\u05e8,\u05d3\u05e6\u05de\u05d1\u05e8","months_long":"\u05d9\u05e0\u05d5\u05d0\u05e8,\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8,\u05de\u05e8\u05e5,\u05d0\u05e4\u05e8\u05d9\u05dc,\u05de\u05d0\u05d9,\u05d9\u05d5\u05e0\u05e2,\u05d9\u05d5\u05dc\u05d9,\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8,\u05e1\u05e4\u05d8\u05de\u05d1\u05e8,\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8,\u05e0\u05d5\u05d1\u05de\u05d1\u05e8,\u05d3\u05e6\u05de\u05d1\u05e8","inserttime_desc":"\u05d4\u05d5\u05e1\u05e4\u05ea \u05d6\u05de\u05df","insertdate_desc":"\u05d4\u05d5\u05e1\u05e4\u05ea \u05ea\u05d0\u05e8\u05d9\u05da","time_fmt":"%H:%M:%S","date_fmt":"%d-%m-%Y"},print:{"print_desc":"\u05d4\u05d3\u05e4\u05e1\u05d4"},preview:{"preview_desc":"\u05ea\u05e6\u05d5\u05d2\u05d4 \u05de\u05e7\u05d3\u05d9\u05de\u05d4"},directionality:{"rtl_desc":"\u05db\u05d9\u05d5\u05d5\u05df \u05d8\u05e7\u05e1\u05d8 \u05de\u05d9\u05de\u05d9\u05df \u05dc\u05e9\u05de\u05d0\u05dc","ltr_desc":"\u05db\u05d9\u05d5\u05d5\u05df \u05d8\u05e7\u05e1\u05d8 \u05de\u05e9\u05de\u05d0\u05dc \u05dc\u05d9\u05de\u05d9\u05df"},layer:{content:"\u05e9\u05db\u05d1\u05d4 \u05d7\u05d3\u05e9\u05d4...","absolute_desc":"\u05d1\u05d7\u05d9\u05e8\u05ea \u05de\u05d9\u05e7\u05d5\u05dd \u05de\u05d5\u05d7\u05dc\u05d8","backward_desc":"\u05d4\u05e2\u05d1\u05e8\u05d4 \u05d0\u05d7\u05d5\u05e8\u05d4","forward_desc":"\u05d4\u05e2\u05d1\u05e8\u05d4 \u05e7\u05d3\u05d9\u05de\u05d4","insertlayer_desc":"\u05d4\u05d5\u05e1\u05e4\u05ea \u05e9\u05db\u05d1\u05d4 \u05d7\u05d3\u05e9\u05d4"},save:{"save_desc":"\u05e9\u05de\u05d9\u05e8\u05d4","cancel_desc":"\u05d1\u05d9\u05d8\u05d5\u05dc \u05db\u05dc \u05d4\u05e9\u05d9\u05e0\u05d5\u05d9\u05dd"},nonbreaking:{"nonbreaking_desc":"\u05d4\u05d5\u05e1\u05e4\u05ea \u05e8\u05d5\u05d5\u05d7"},iespell:{download:" \u05dc\u05d0 \u05e0\u05de\u05e6\u05d0 ieSpell. \u05d4\u05d0\u05dd \u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05d4\u05ea\u05e7\u05d9\u05df?","iespell_desc":"\u05d1\u05d3\u05d9\u05e7\u05ea \u05d0\u05d9\u05d5\u05ea \u05d1\u05d0\u05e0\u05d2\u05dc\u05d9\u05ea"},advhr:{"advhr_desc":"\u05e7\u05d5 \u05d0\u05d5\u05e4\u05e7\u05d9","delta_height":"","delta_width":""},emotions:{"emotions_desc":"\u05e1\u05de\u05d9\u05d9\u05dc\u05d9\u05dd","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"\u05d4\u05d7\u05dc\u05e4\u05d4","search_desc":"\u05d7\u05d9\u05e4\u05d5\u05e9","delta_width":"","delta_height":""},advimage:{"image_desc":"\u05d4\u05d5\u05e1\u05e4\u05d4/\u05e2\u05e8\u05d9\u05db\u05ea \u05ea\u05de\u05d5\u05e0\u05d4","delta_width":"","delta_height":""},advlink:{"link_desc":"\u05d4\u05d5\u05e1\u05e4\u05ea/\u05e2\u05e8\u05d9\u05db\u05ea \u05e7\u05d9\u05e9\u05d5\u05e8","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"\u05d4\u05db\u05e0\u05e1/\u05e2\u05e8\u05d5\u05da \u05ea\u05db\u05d5\u05e0\u05d5\u05ea","ins_desc":"\u05d4\u05db\u05e0\u05e1\u05d4","del_desc":"\u05de\u05d7\u05d9\u05e7\u05d4","acronym_desc":"\u05e8\u05d0\u05e9\u05d9 \u05ea\u05d9\u05d1\u05d5\u05ea","abbr_desc":"\u05e7\u05d9\u05e6\u05d5\u05e8","cite_desc":"\u05e6\u05d9\u05d8\u05d5\u05d8","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"\u05e2\u05d3\u05db\u05d5\u05df \u05d4\u05d2\u05d3\u05e8\u05d5\u05ea CSS","delta_height":"","delta_width":""},paste:{"plaintext_mode":"Paste is now in plain text mode. Click again to toggle back to regular paste mode.","plaintext_mode_sticky":"Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode.","selectall_desc":"\u05d1\u05d7\u05e8 \u05d4\u05db\u05dc","paste_word_desc":"\u05d4\u05d3\u05d1\u05e7\u05d4 \u05de-WORD","paste_text_desc":"\u05d4\u05d3\u05d1\u05e7\u05d4 \u05db\u05d8\u05e7\u05e1\u05d8 \u05d1\u05dc\u05d1\u05d3"},"paste_dlg":{"word_title":"\u05d4\u05d3\u05d1\u05d9\u05e7\u05d5 \u05d1\u05d7\u05dc\u05d5\u05df \u05d6\u05d4 \u05d0\u05ea \u05d4\u05d8\u05e7\u05e1\u05d8 \u05d1\u05d0\u05de\u05e6\u05e2\u05d5\u05ea \u05d4\u05de\u05e7\u05e9\u05d9\u05dd CTRL+V.","text_linebreaks":"\u05d4\u05e9\u05d0\u05e8 \u05d0\u05ea \u05e9\u05d5\u05e8\u05d5\u05ea \u05d4\u05e8\u05d5\u05d5\u05d7","text_title":"\u05d4\u05d3\u05d1\u05d9\u05e7\u05d5 \u05d1\u05d7\u05dc\u05d5\u05df \u05d6\u05d4 \u05d0\u05ea \u05d4\u05d8\u05e7\u05e1\u05d8 \u05d1\u05d0\u05de\u05e6\u05e2\u05d5\u05ea \u05d4\u05de\u05e7\u05e9\u05d9\u05dd CTRL+V."},table:{cell:"\u05ea\u05d0",col:"\u05e2\u05de\u05d5\u05d3\u05d4",row:"\u05e9\u05d5\u05e8\u05d4",del:"\u05de\u05d7\u05d9\u05e7\u05ea \u05d8\u05d1\u05dc\u05d4","copy_row_desc":"\u05d4\u05e2\u05ea\u05e7\u05ea \u05e9\u05d5\u05e8\u05d4 \u05d1\u05d8\u05d1\u05dc\u05d4","cut_row_desc":"\u05d2\u05d6\u05d9\u05e8\u05ea \u05e9\u05d5\u05e8\u05d4 \u05d1\u05d8\u05d1\u05dc\u05d4","paste_row_after_desc":"\u05d4\u05d3\u05d1\u05e7\u05ea \u05e9\u05d5\u05e8\u05d4 \u05d1\u05d8\u05d1\u05dc\u05d4 \u05d0\u05d7\u05e8\u05d9","paste_row_before_desc":"\u05d4\u05d3\u05d1\u05e7\u05ea \u05e9\u05d5\u05e8\u05d4 \u05d1\u05d8\u05d1\u05dc\u05d4 \u05dc\u05e4\u05e0\u05d9","props_desc":"\u05ea\u05db\u05d5\u05e0\u05d5\u05ea \u05d4\u05d8\u05d1\u05dc\u05d4","cell_desc":"\u05ea\u05db\u05d5\u05e0\u05d5\u05ea \u05ea\u05d0 \u05d1\u05d8\u05d1\u05dc\u05d4","row_desc":"\u05ea\u05db\u05d5\u05e0\u05d5\u05ea \u05e9\u05d5\u05e8\u05d4 \u05d1\u05d8\u05d1\u05dc\u05d4","merge_cells_desc":"\u05d0\u05d9\u05d7\u05d5\u05d3 \u05ea\u05d0\u05d9\u05dd \u05d1\u05d8\u05d1\u05dc\u05d4","split_cells_desc":"\u05e4\u05d9\u05e6\u05d5\u05dc \u05ea\u05d0\u05d9\u05dd \u05d1\u05d8\u05d1\u05dc\u05d4","delete_col_desc":"\u05d4\u05e1\u05e8\u05ea \u05e2\u05de\u05d5\u05d3\u05d4","col_after_desc":"\u05d4\u05db\u05e0\u05e1\u05ea \u05e2\u05de\u05d5\u05d3\u05d4 \u05de\u05e9\u05de\u05d0\u05dc","col_before_desc":"\u05d4\u05db\u05e0\u05e1\u05ea \u05e2\u05de\u05d5\u05d3\u05d4 \u05de\u05d9\u05de\u05d9\u05df","delete_row_desc":"\u05de\u05d7\u05d9\u05e7\u05ea \u05e9\u05d5\u05e8\u05d4","row_after_desc":"\u05d4\u05db\u05e0\u05e1\u05ea \u05e9\u05d5\u05e8\u05d4 \u05de\u05ea\u05d7\u05ea","row_before_desc":"\u05d4\u05db\u05e0\u05e1\u05ea \u05e9\u05d5\u05e8\u05d4 \u05de\u05e2\u05dc",desc:"\u05d4\u05db\u05e0\u05e1\u05ea \u05d0\u05d5 \u05e2\u05e8\u05d9\u05db\u05ea \u05d8\u05d1\u05dc\u05d4","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"\u05d0\u05dd \u05ea\u05e9\u05d7\u05d6\u05e8 \u05d0\u05ea \u05d4\u05ea\u05d5\u05db\u05df \u05dc\u05d2\u05e8\u05d9\u05e1\u05d0 \u05d4\u05e9\u05de\u05d5\u05e8\u05d4, \u05ea\u05d0\u05d1\u05d3 \u05d0\u05ea \u05db\u05dc \u05d4\u05ea\u05d5\u05db\u05df \u05e9\u05e0\u05de\u05e6\u05d0 \u05db\u05e2\u05ea \u05d1\u05e2\u05d5\u05e8\u05da. \u05d4\u05d0\u05dd \u05d0\u05ea\u05d4 \u05d1\u05d8\u05d5\u05d7 \u05e9\u05d0\u05ea\u05d4 \u05e8\u05d5\u05e6\u05d4 \u05dc\u05e9\u05d7\u05d6\u05e8 \u05d0\u05ea \u05d4\u05ea\u05d5\u05db\u05df \u05dc\u05d2\u05d9\u05e8\u05e1\u05d0 \u05d4\u05e9\u05de\u05d5\u05e8\u05d4?.","restore_content":"\u05e9\u05d7\u05d6\u05d5\u05e8 \u05dc\u05d2\u05d9\u05e8\u05e1\u05d0 \u05e9\u05de\u05d5\u05e8\u05d4 \u05d0\u05d5\u05d8\u05d5\u05de\u05d8\u05d9\u05ea","unload_msg":"\u05d4\u05e9\u05d9\u05e0\u05d5\u05d9\u05d9\u05dd \u05e9\u05d1\u05d9\u05e6\u05e2\u05ea \u05dc\u05d0 \u05d9\u05e9\u05de\u05e8\u05d5 \u05d0\u05dd \u05ea\u05e2\u05d1\u05d5\u05e8 \u05de\u05d3\u05e3 \u05d6\u05d4"},fullscreen:{desc:"\u05de\u05e2\u05d1\u05e8 \u05dc\u05de\u05e1\u05da \u05de\u05dc\u05d0/\u05d7\u05dc\u05e7\u05d9"},media:{edit:"\u05e2\u05e8\u05d9\u05db\u05ea \u05e1\u05e8\u05d8\u05d5\u05df",desc:"\u05d4\u05d5\u05e1\u05e4\u05ea/\u05e2\u05e8\u05d9\u05db\u05ea \u05e1\u05e8\u05d8\u05d5\u05df","delta_height":"","delta_width":""},fullpage:{desc:"\u05de\u05d0\u05e4\u05d9\u05d9\u05e0\u05d9 \u05e2\u05de\u05d5\u05d3","delta_width":"","delta_height":""},template:{desc:"Insert predefined template content"},visualchars:{desc:"\u05d4\u05e6\u05d2/\u05d4\u05e1\u05ea\u05e8 \u05ea\u05d5\u05d5\u05d9 \u05d1\u05e7\u05e8\u05d4"},spellchecker:{desc:"\u05d4\u05e4\u05e2\u05dc\u05ea \u05d1\u05d5\u05d3\u05e7 \u05d0\u05d9\u05d5\u05ea",menu:"\u05d4\u05d2\u05d3\u05e8\u05d5\u05ea \u05d1\u05d5\u05d3\u05e7 \u05d0\u05d9\u05d5\u05ea","ignore_word":"\u05dc\u05d4\u05ea\u05e2\u05dc\u05dd \u05de\u05d4\u05de\u05d9\u05dc\u05d4","ignore_words":"\u05dc\u05d4\u05ea\u05e2\u05dc\u05dd \u05de\u05d4\u05db\u05dc",langs:"\u05e9\u05e4\u05d5\u05ea",wait:"\u05e0\u05d0 \u05dc\u05d4\u05de\u05ea\u05d9\u05df..",sug:"\u05d4\u05e6\u05e2\u05d5\u05ea","no_sug":"\u05d0\u05d9\u05df \u05d4\u05e6\u05e2\u05d5\u05ea","no_mpell":"\u05dc\u05d0 \u05e0\u05de\u05e6\u05d0\u05d5 \u05e9\u05d2\u05d9\u05d0\u05d5\u05ea \u05d0\u05d9\u05d5\u05ea","learn_word":"\u05dc\u05de\u05d3 \u05de\u05d9\u05dc\u05d9\u05dd"},pagebreak:{desc:"\u05d4\u05d5\u05e1\u05e4\u05ea \u05de\u05e2\u05d1\u05e8 \u05d3\u05e3"},advlist:{types:"\u05e1\u05d5\u05d2\u05d9\u05dd",def:"\u05d1\u05e8\u05d9\u05e8\u05ea \u05de\u05d7\u05d3\u05dc","lower_alpha":"Lower alpha","lower_greek":"Lower greek","lower_roman":"Lower roman","upper_alpha":"Upper alpha","upper_roman":"Upper roman",circle:"\u05e2\u05d2\u05d5\u05dc",disc:"\u05d3\u05d9\u05e1\u05e7",square:"\u05de\u05e8\u05d5\u05d1\u05e2"},colors:{"333300":"\u05d6\u05d9\u05ea \u05db\u05d4\u05d4","993300":"\u05db\u05ea\u05d5\u05dd \u05db\u05d4\u05d4","000000":"\u05e9\u05d7\u05d5\u05e8","003300":"\u05d9\u05e8\u05d5\u05e7 \u05db\u05d4\u05d4","003366":"\u05d8\u05d5\u05e8\u05e7\u05d9\u05d6 \u05db\u05d4\u05d4","000080":"\u05db\u05d7\u05d5\u05dc \u05e6\u05d9","333399":"\u05d0\u05d9\u05e0\u05d3\u05d9\u05d2\u05d5","333333":"\u05d0\u05e4\u05d5\u05e8 \u05db\u05d4\u05d4 \u05de\u05d0\u05d5\u05d3","800000":"\u05e2\u05e8\u05de\u05d5\u05e0\u05d9",FF6600:"\u05db\u05ea\u05d5\u05dd","808000":"\u05d6\u05d9\u05ea","008000":"\u05d9\u05e8\u05d5\u05e7","008080":"\u05d9\u05e8\u05d5\u05e7-\u05db\u05d7\u05d5\u05dc \u05e2\u05de\u05d5\u05e7","0000FF":"\u05db\u05d7\u05d5\u05dc","666699":"\u05db\u05d7\u05d5\u05dc \u05d0\u05e4\u05e8\u05e4\u05e8","808080":"\u05d0\u05e4\u05d5\u05e8",FF0000:"\u05d0\u05d3\u05d5\u05dd",FF9900:"\u05e2\u05e0\u05d1\u05e8","99CC00":"\u05d9\u05e8\u05d5\u05e7 \u05e6\u05d4\u05d1\u05d4\u05d1","339966":"\u05d9\u05e8\u05d5\u05e7 \u05d9\u05dd","33CCCC":"\u05d8\u05d5\u05e8\u05e7\u05d9\u05d6","3366FF":"\u05db\u05d7\u05d5\u05dc \u05e8\u05d5\u05d9\u05d0\u05dc","800080":"\u05e1\u05d2\u05d5\u05dc","999999":"\u05d0\u05e4\u05d5\u05e8 \u05d1\u05d9\u05e0\u05d9\u05d9\u05dd",FF00FF:"\u05e1\u05d2\u05d5\u05dc-\u05d5\u05e8\u05d5\u05d3 (\u05de\u05d2\u05f3\u05e0\u05d8\u05d4)",FFCC00:"\u05d6\u05d4\u05d1",FFFF00:"\u05e6\u05d4\u05d5\u05d1","00FF00":"\u05dc\u05d9\u05d9\u05dd","00FFFF":"\u05d8\u05d5\u05e8\u05e7\u05d9\u05d6 \u05de\u05d9\u05dd","00CCFF":"\u05ea\u05db\u05dc\u05ea","993366":"\u05d7\u05d5\u05dd",C0C0C0:"\u05db\u05e1\u05e3",FF99CC:"\u05d5\u05e8\u05d5\u05d3",FFCC99:"\u05d0\u05e4\u05e8\u05e1\u05e7",FFFF99:"\u05e6\u05d4\u05d5\u05d1 \u05d1\u05d4\u05d9\u05e8",CCFFCC:"\u05d9\u05e8\u05d5\u05e7 \u05d7\u05d9\u05d5\u05d5\u05e8",CCFFFF:"\u05d8\u05d5\u05e8\u05e7\u05d9\u05d6 \u05d1\u05d4\u05d9\u05e8","99CCFF":"\u05ea\u05db\u05dc\u05ea \u05d1\u05d4\u05d9\u05e8",CC99FF:"\u05d5\u05e8\u05d5\u05d3 \u05e2\u05de\u05d5\u05e7",FFFFFF:"\u05dc\u05d1\u05df"},aria:{"rich_text_area":"\u05d0\u05d6\u05d5\u05e8 \u05e2\u05d5\u05e8\u05da \u05d8\u05e7\u05e1\u05d8 \u05e2\u05e9\u05d9\u05e8"},wordcount:{words:"\u05de\u05d9\u05dc\u05d9\u05dd:"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/hi.js b/program/js/tiny_mce/langs/hi.js
deleted file mode 100644
index 50305a813..000000000
--- a/program/js/tiny_mce/langs/hi.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({hi:{common:{"more_colors":"More colors","invalid_data":"Error: Invalid values entered, these are marked in red.","popup_blocked":"Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.","clipboard_no_support":"Currently not supported by your browser, use keyboard shortcuts instead.","clipboard_msg":"Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?","not_set":"-- Not set --","class_name":"Class",browse:"Browse",close:"Close",cancel:"Cancel",update:"Update",insert:"Insert",apply:"Apply","edit_confirm":"Do you want to use the WYSIWYG mode for this textarea?","invalid_data_number":"{#field} must be a number","invalid_data_min":"{#field} must be a number greater than {#min}","invalid_data_size":"{#field} must be a number or percentage",value:"(value)"},contextmenu:{full:"Full",right:"Right",center:"Center",left:"Left",align:"Alignment"},insertdatetime:{"day_short":"Sun,Mon,Tue,Wed,Thu,Fri,Sat,Sun","day_long":"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday","months_short":"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec","months_long":"January,February,March,April,May,June,July,August,September,October,November,December","inserttime_desc":"Insert time","insertdate_desc":"Insert date","time_fmt":"%H:%M:%S","date_fmt":"%Y-%m-%d"},print:{"print_desc":"Print"},preview:{"preview_desc":"Preview"},directionality:{"rtl_desc":"Direction right to left","ltr_desc":"Direction left to right"},layer:{content:"New layer...","absolute_desc":"Toggle absolute positioning","backward_desc":"Move backward","forward_desc":"Move forward","insertlayer_desc":"Insert new layer"},save:{"save_desc":"Save","cancel_desc":"Cancel all changes"},nonbreaking:{"nonbreaking_desc":"Insert non-breaking space character"},iespell:{download:"ieSpell not detected. Do you want to install it now?","iespell_desc":"Run spell checking"},advhr:{"advhr_desc":"Horizontal rule","delta_height":"","delta_width":""},emotions:{"emotions_desc":"Emotions","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"Find/Replace","search_desc":"Find","delta_width":"","delta_height":""},advimage:{"image_desc":"Insert/edit image","delta_width":"","delta_height":""},advlink:{"link_desc":"Insert/edit link","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"Insert/Edit Attributes","ins_desc":"Insertion","del_desc":"Deletion","acronym_desc":"Acronym","abbr_desc":"Abbreviation","cite_desc":"Citation","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"Edit CSS Style","delta_height":"","delta_width":""},paste:{"plaintext_mode":"Paste is now in plain text mode. Click again to toggle back to regular paste mode.","plaintext_mode_sticky":"Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode.","selectall_desc":"Select All","paste_word_desc":"Paste from Word","paste_text_desc":"Paste as Plain Text"},"paste_dlg":{"word_title":"Use CTRL+V on your keyboard to paste the text into the window.","text_linebreaks":"Keep linebreaks","text_title":"Use CTRL+V on your keyboard to paste the text into the window."},table:{cell:"Cell",col:"Column",row:"Row",del:"Delete table","copy_row_desc":"Copy table row","cut_row_desc":"Cut table row","paste_row_after_desc":"Paste table row after","paste_row_before_desc":"Paste table row before","props_desc":"Table properties","cell_desc":"Table cell properties","row_desc":"Table row properties","merge_cells_desc":"Merge table cells","split_cells_desc":"Split merged table cells","delete_col_desc":"Remove column","col_after_desc":"Insert column after","col_before_desc":"Insert column before","delete_row_desc":"Delete row","row_after_desc":"Insert row after","row_before_desc":"Insert row before",desc:"Inserts a new table","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"If you restore the saved content, you will lose all the content that is currently in the editor.\n\nAre you sure you want to restore the saved content?.","restore_content":"Restore auto-saved content.","unload_msg":"The changes you made will be lost if you navigate away from this page."},fullscreen:{desc:"Toggle fullscreen mode"},media:{edit:"Edit embedded media",desc:"Insert / edit embedded media","delta_height":"","delta_width":""},fullpage:{desc:"Document properties","delta_width":"","delta_height":""},template:{desc:"Insert predefined template content"},visualchars:{desc:"Visual control characters on/off."},spellchecker:{desc:"Toggle spellchecker",menu:"Spellchecker settings","ignore_word":"Ignore word","ignore_words":"Ignore all",langs:"Languages",wait:"Please wait...",sug:"Suggestions","no_sug":"No suggestions","no_mpell":"No misspellings found.","learn_word":"Learn word"},pagebreak:{desc:"Insert page break."},advlist:{types:"Types",def:"Default","lower_alpha":"Lower alpha","lower_greek":"Lower greek","lower_roman":"Lower roman","upper_alpha":"Upper alpha","upper_roman":"Upper roman",circle:"Circle",disc:"Disc",square:"Square"},colors:{"333300":"Dark olive","993300":"Burnt orange","000000":"Black","003300":"Dark green","003366":"Dark azure","000080":"Navy Blue","333399":"Indigo","333333":"Very dark gray","800000":"Maroon",FF6600:"Orange","808000":"Olive","008000":"Green","008080":"Teal","0000FF":"Blue","666699":"Grayish blue","808080":"Gray",FF0000:"Red",FF9900:"Amber","99CC00":"Yellow green","339966":"Sea green","33CCCC":"Turquoise","3366FF":"Royal blue","800080":"Purple","999999":"Medium gray",FF00FF:"Magenta",FFCC00:"Gold",FFFF00:"Yellow","00FF00":"Lime","00FFFF":"Aqua","00CCFF":"Sky blue","993366":"Brown",C0C0C0:"Silver",FF99CC:"Pink",FFCC99:"Peach",FFFF99:"Light yellow",CCFFCC:"Pale green",CCFFFF:"Pale cyan","99CCFF":"Light sky blue",CC99FF:"Plum",FFFFFF:"White"},aria:{"rich_text_area":"Rich Text Area"},wordcount:{words:"Words"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/hr.js b/program/js/tiny_mce/langs/hr.js
deleted file mode 100644
index 4bcc2cd06..000000000
--- a/program/js/tiny_mce/langs/hr.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({hr:{common:{"more_colors":"Vi\u0161e boja","invalid_data":"Gre\u0161ka: Une\u0161ene su nevaljane vrijednosti, ozna\u010dene su crvenom bojom.","popup_blocked":"Oprostite, izgleda da je va\u0161 popup-blocker onemogu\u0107io prozor u sklopu ovog programa. Morate onemogu\u0107iti blokiranje popup prozora da bi u potpunosti iskoristili ovaj alat.","clipboard_no_support":"Trenuta\u010dno va\u0161 preglednik ne podr\u017eava ovu opciju, poku\u0161ajte koristiti tipkovni\u010dku kraticu.","clipboard_msg":"Kopiraj/Izre\u017ei/Zalijepi nije dostupno Mozilla i Firefox preglednicima.\nVi\u0161e informacija?","not_set":"-- Nije postavljeno --","class_name":"Klasa",browse:"Pregled",close:"Zatvori",cancel:"Odustani",update:"Obnovi",insert:"Umetni",apply:"Primjeni","edit_confirm":"\u017delite li koristiti WYSIWYG na\u010din rada za ovo tekstualno polje?","invalid_data_number":"{#field} mora biti broj","invalid_data_min":"{#field} mora biti ve\u0107i broj od {#min}","invalid_data_size":"{#field} mora biti broj ili postotak",value:"(value)"},contextmenu:{full:"Obostrano",right:"Desno",center:"Sredina",left:"Lijevo",align:"Poravnavanje"},insertdatetime:{"day_short":"ned,pon,uto,sri,\u010det,pet,sub,ned","day_long":"nedjelja,ponedjeljak,utorak,srijeda,\u010detvrtak,petak,subota,nedjelja","months_short":"sij,velj,o\u017eu,tra,svi,lip,srp,kol,ruj,lis,stu,pro","months_long":"sije\u010danj,velja\u010da,o\u017eujak,travanj,svibanj,lipanj,srpanj,kolovoz,rujan,listopad,studeni,prosinac","inserttime_desc":"Umetni vrijeme","insertdate_desc":"Umetni datum","time_fmt":"%H:%M:%S","date_fmt":"%d.%m.%Y."},print:{"print_desc":"Ispis"},preview:{"preview_desc":"Predprikaz"},directionality:{"rtl_desc":"S desna na lijevo","ltr_desc":"S lijeva na desno"},layer:{content:"Novi sloj...","absolute_desc":"Uklju\u010di/isklju\u010di apsolutno pozicioniranje","backward_desc":"Pomakni natrag","forward_desc":"Pomakni naprijed","insertlayer_desc":"Umetni novi sloj"},save:{"save_desc":"Spremi","cancel_desc":"Odustani od svih promjena"},nonbreaking:{"nonbreaking_desc":"Umetni razmak"},iespell:{download:"ieSpell nije prona\u0111en. \u017delite ga instalirati sada?","iespell_desc":"Pokreni provjeru pravopisa"},advhr:{"advhr_desc":"Vodoravna crta","delta_height":"","delta_width":""},emotions:{"emotions_desc":"Emotikoni","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"Prona\u0111i/Zamijeni","search_desc":"Prona\u0111i","delta_width":"","delta_height":""},advimage:{"image_desc":"Umetni/uredi sliku","delta_width":"","delta_height":""},advlink:{"delta_width":"","link_desc":"Umetni/uredi link","delta_height":""},xhtmlxtras:{"attribs_desc":"Umetni/uredi atribute","ins_desc":"Unos","del_desc":"Brisanje","acronym_desc":"Akronim","abbr_desc":"Kratica","cite_desc":"Citat","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"Uredi CSS","delta_height":"","delta_width":""},paste:{"plaintext_mode":"Zalijepi (paste) je sada u na\u010dinu obi\u010dnog teksta. Kliknite ponovo da se vrati u uobi\u010dajeni na\u010din.","plaintext_mode_sticky":"Paste is now in plain text mode. Kliknite ponovo da se vrati u uobi\u010dajeni na\u010din. Nakon \u0161to zalijepite ne\u0161to biti \u0107ete vra\u0107eni u uobi\u010dajeni na\u010din.","selectall_desc":"Odaberi sve","paste_word_desc":"Zalijepi iz Worda","paste_text_desc":"Zalijepi kao obi\u010dni tekst"},"paste_dlg":{"word_title":"Koristite CTRL+V na tipkovnici da zalijepite tekst u prozor.","text_linebreaks":"Zadr\u017ei prijelome","text_title":"Koristite CTRL+V na tipkovnici da zalijepite tekst u prozor."},table:{cell:"\u0106elija",col:"Stupac",row:"Redak",del:"Izbri\u0161i tablicu","copy_row_desc":"Kopiraj redak","cut_row_desc":"Izre\u017ei redak","paste_row_after_desc":"Zalijepi redak ispod","paste_row_before_desc":"Zalijepi redak iznad","props_desc":"Svojstva tablice","cell_desc":"Svojstva \u0107elije","row_desc":"Svojstva retka","merge_cells_desc":"Spoji \u0107elije","split_cells_desc":"Razdvoji spojene \u0107elije","delete_col_desc":"Ukloni stupac","col_after_desc":"Umetni stupac desno","col_before_desc":"Umetni stupac lijevo","delete_row_desc":"Izbri\u0161i redak","row_after_desc":"Umetni redak ispod","row_before_desc":"Umetni redak iznad",desc:"Nova tablica","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"Ako povratite spremljeni sadr\u017eaj, izgubiti \u0107ete sav sadr\u017eaj koji se trenutno nalazi u editoru.\n\nJeste li sigurni da \u017eelite povratiti spremljeni sadr\u017eaj?","restore_content":"Povrati sadr\u017eaj koji je automatski spremljen.","unload_msg":"Promjene u dokumentu biti \u0107e izgubljene ako iza\u0111ete s ove stranice."},fullscreen:{desc:"Uklju\u010di/isklju\u010di prikaz preko cijelog ekrana"},media:{edit:"Uredi ugra\u0111enu multimediju",desc:"Dodaj / uredi ugra\u0111enu multimediju","delta_height":"","delta_width":""},fullpage:{desc:"Svojstva dokumenta","delta_width":"","delta_height":""},template:{desc:"Umetni predefinirani sadr\u017eaj predlo\u0161ka"},visualchars:{desc:"Vizualni kontrolni znakovi uklju\u010deni/isklju\u010deni."},spellchecker:{desc:"Uklju\u010di/isklju\u010di provjeru pravopisa",menu:"Postavke provjere pravopisa","ignore_word":"Zanemari rije\u010d","ignore_words":"Zanemari sve",langs:"Jezici",wait:"Molimo pri\u010dekajte...",sug:"Prijedlozi","no_sug":"Nema prijedloga","no_mpell":"Nije prona\u0111ena nijedna pravopisna gre\u0161ka.","learn_word":"Zapamti rije\u010d"},pagebreak:{desc:"Umetni prijelom."},advlist:{types:"Tipovi",def:"Osnovno","lower_alpha":"Mala slova","lower_greek":"Mala gr\u010dka slova","lower_roman":"Mali rimski brojevi","upper_alpha":"Velika slova","upper_roman":"Veliki rimski brojevi",circle:"Kru\u017enica",disc:"Disk",square:"Kvadrat"},colors:{"333300":"Dark olive","993300":"Burnt orange","000000":"Black","003300":"Dark green","003366":"Dark azure","000080":"Navy Blue","333399":"Indigo","333333":"Very dark gray","800000":"Maroon",FF6600:"Orange","808000":"Olive","008000":"Green","008080":"Teal","0000FF":"Blue","666699":"Grayish blue","808080":"Gray",FF0000:"Red",FF9900:"Amber","99CC00":"Yellow green","339966":"Sea green","33CCCC":"Turquoise","3366FF":"Royal blue","800080":"Purple","999999":"Medium gray",FF00FF:"Magenta",FFCC00:"Gold",FFFF00:"Yellow","00FF00":"Lime","00FFFF":"Aqua","00CCFF":"Sky blue","993366":"Brown",C0C0C0:"Silver",FF99CC:"Pink",FFCC99:"Peach",FFFF99:"Light yellow",CCFFCC:"Pale green",CCFFFF:"Pale cyan","99CCFF":"Light sky blue",CC99FF:"Plum",FFFFFF:"White"},aria:{"rich_text_area":"Dio za formatirani tekst"},wordcount:{words:"Rije\u010di:"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/hu.js b/program/js/tiny_mce/langs/hu.js
deleted file mode 100644
index 864af04ba..000000000
--- a/program/js/tiny_mce/langs/hu.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({hu:{common:{"more_colors":"Tov\u00e1bbi sz\u00ednek","invalid_data":"Hiba: \u00c9rv\u00e9nytelen adatok, pirossal jel\u00f6lve.","popup_blocked":"A felugr\u00f3 ablakok tilt\u00e1sa miatt nem siker\u00fclt megjelen\u00edteni egy, az alkalmaz\u00e1shoz sz\u00fcks\u00e9ges ablakot. Enged\u00e9lyezze a b\u00f6ng\u00e9sz\u0151j\u00e9ben a felugr\u00f3 ablakokat, hogy minden funkci\u00f3t haszn\u00e1lhasson.","clipboard_no_support":"Jelenleg nem t\u00e1mogatja a b\u00f6ng\u00e9sz\u0151je, haszn\u00e1lja a billenty\u0171kombin\u00e1ci\u00f3kat helyette.","clipboard_msg":"A M\u00e1sol\u00e1s/Kiv\u00e1g\u00e1s/Besz\u00far\u00e1s funkci\u00f3k nem \u00e9rhet\u0151ek el Mozilla \u00e9s Firefox alatt.\nK\u00edv\u00e1n t\u00f6bbet tudni err\u0151l a t\u00e9m\u00e1r\u00f3l?","not_set":"-- Nincs megadva --","class_name":"Oszt\u00e1ly",browse:"Tall\u00f3z\u00e1s",close:"Bez\u00e1r\u00e1s",cancel:"M\u00e9gsem",update:"Friss\u00edt\u00e9s",insert:"Besz\u00far\u00e1s",apply:"Alkalmaz\u00e1s","edit_confirm":"Haszn\u00e1lni k\u00edv\u00e1nja a sz\u00f6vegszerkeszt\u0151 m\u00f3dot ebben a sz\u00f6vegdobozban?","invalid_data_number":"{#field} sz\u00e1m kell legyen","invalid_data_min":"{#field} egy nagyobb sz\u00e1m kell legyen, mint {#min}","invalid_data_size":"{#field} egy sz\u00e1m vagy sz\u00e1zal\u00e9k kell legyen",value:"(\u00e9rt\u00e9k)"},contextmenu:{full:"Sorkiz\u00e1rt",right:"Jobbra",center:"K\u00f6z\u00e9pre",left:"Balra",align:"Igaz\u00edt\u00e1s"},insertdatetime:{"day_short":"V,H,K,Sze,Cs,P,Szo,V","day_long":"vas\u00e1rnap,h\u00e9tf\u0151,kedd,szerda,cs\u00fct\u00f6rt\u00f6k,p\u00e9ntek,szombat,vas\u00e1rnap","months_short":"jan,feb,m\u00e1r,\u00e1pr,m\u00e1j,j\u00fan,j\u00fal,aug,szept,okt,nov,dec","months_long":"janu\u00e1r,febru\u00e1r,m\u00e1rcius,\u00e1prilis,m\u00e1jus,j\u00fanius,j\u00falius,augusztus,szeptember,okt\u00f3ber,november,december","inserttime_desc":"Id\u0151 besz\u00far\u00e1sa","insertdate_desc":"D\u00e1tum besz\u00far\u00e1sa","time_fmt":"%H:%M:%S","date_fmt":"%Y. %m. %d."},print:{"print_desc":"Nyomtat\u00e1s"},preview:{"preview_desc":"El\u0151n\u00e9zet"},directionality:{"rtl_desc":"Jobbr\u00f3l balra","ltr_desc":"Balr\u00f3l jobbra"},layer:{content:"\u00daj r\u00e9teg...","absolute_desc":"Abszol\u00fat poz\u00edci\u00f3 ki-/bekapcsol\u00e1sa","backward_desc":"Mozgat\u00e1s h\u00e1tra","forward_desc":"Mozgat\u00e1s el\u0151re","insertlayer_desc":"\u00daj r\u00e9teg besz\u00far\u00e1sa"},save:{"save_desc":"Ment\u00e9s","cancel_desc":"Minden m\u00f3dos\u00edt\u00e1s visszavon\u00e1sa"},nonbreaking:{"nonbreaking_desc":"Nemsort\u00f6r\u0151 sz\u00f3k\u00f6z besz\u00far\u00e1sa"},iespell:{download:"ieSpell nem tal\u00e1lhat\u00f3. Telep\u00edti most?","iespell_desc":"Helyes\u00edr\u00e1s-ellen\u0151rz\u00e9s futtat\u00e1sa"},advhr:{"advhr_desc":"V\u00edzszintes vonal","delta_height":"","delta_width":""},emotions:{"emotions_desc":"Hangulatjelek","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"Keres\u00e9s/Csere","search_desc":"Keres\u00e9s","delta_width":"","delta_height":""},advimage:{"image_desc":"K\u00e9p besz\u00far\u00e1sa/szerkeszt\u00e9se","delta_width":"","delta_height":""},advlink:{"link_desc":"Link besz\u00far\u00e1sa/szerkeszt\u00e9se","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"Tulajdons\u00e1gok besz\u00far\u00e1sa/szerkeszt\u00e9se","ins_desc":"Besz\u00fart","del_desc":"T\u00f6r\u00f6lt","acronym_desc":"Bet\u0171sz\u00f3","abbr_desc":"R\u00f6vid\u00edt\u00e9s","cite_desc":"Id\u00e9zet","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"CSS st\u00edlus szerkeszt\u00e9se","delta_height":"","delta_width":""},paste:{"plaintext_mode":"A besz\u00far\u00e1s mostant\u00f3l egyszer\u0171 sz\u00f6veg m\u00f3dban van. Kattintson ide \u00fajra ezen m\u00f3d ki/be kapcsol\u00e1s\u00e1hoz.","plaintext_mode_sticky":"A besz\u00far\u00e1s mostant\u00f3l egyszer\u0171 sz\u00f6veg m\u00f3dban van. Kattintson ide \u00fajra ezen m\u00f3d ki/be kapcsol\u00e1s\u00e1hoz. Miut\u00e1n besz\u00far valamit, visszaker\u00fcl norm\u00e1l m\u00f3dba.","selectall_desc":"Mindent kijel\u00f6l","paste_word_desc":"Besz\u00far\u00e1s Wordb\u0151l","paste_text_desc":"Besz\u00far\u00e1s sz\u00f6vegk\u00e9nt"},"paste_dlg":{"word_title":"Haszn\u00e1lja a Ctrl+V-t a billenty\u0171zet\u00e9n a beilleszt\u00e9shez.","text_linebreaks":"Sort\u00f6r\u00e9sek megtart\u00e1sa","text_title":"Haszn\u00e1lja a Ctrl+V-t a billenty\u0171zet\u00e9n a beilleszt\u00e9shez."},table:{cell:"Cella",col:"Oszlop",row:"Sor",del:"T\u00e1bl\u00e1zat t\u00f6rl\u00e9se","copy_row_desc":"Sor m\u00e1sol\u00e1sa","cut_row_desc":"Sor kiv\u00e1g\u00e1sa","paste_row_after_desc":"Sor bem\u00e1sol\u00e1sa ut\u00e1na","paste_row_before_desc":"Sor bem\u00e1sol\u00e1sa el\u00e9","props_desc":"T\u00e1bl\u00e1zat tulajdons\u00e1gai","cell_desc":"Cella tulajdons\u00e1gai","row_desc":"Sor tulajdons\u00e1gai","merge_cells_desc":"Cell\u00e1k \u00f6sszevon\u00e1sa","split_cells_desc":"Cell\u00e1k feloszt\u00e1sa","delete_col_desc":"Oszlop t\u00f6rl\u00e9se","col_after_desc":"Oszlop besz\u00far\u00e1sa ut\u00e1na","col_before_desc":"Oszlop besz\u00far\u00e1sa el\u00e9","delete_row_desc":"Sor t\u00f6rl\u00e9se","row_after_desc":"Sor besz\u00far\u00e1sa ut\u00e1na","row_before_desc":"Sor besz\u00far\u00e1sa el\u00e9",desc:"T\u00e1bl\u00e1zat besz\u00far\u00e1sa/szerkeszt\u00e9se","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"Ha visszat\u00f6lti a mentett be\u00e1ll\u00edt\u00e1sokat, a jelenlegi \u00e1llapot elv\u00e9sz.\n\nBiztosan visszat\u00f6lti a mentett \u00e1llapotot?.","restore_content":"Automatikus ment\u00e9s bet\u00f6lt\u00e9se.","unload_msg":"A m\u00f3dos\u00edt\u00e1sok nem lesznek mentve, ha elhagyja az oldalt."},fullscreen:{desc:"Teljesk\u00e9perny\u0151s m\u00f3d ki-/bekapcsol\u00e1sa"},media:{edit:"Be\u00e1gyazott m\u00e9dia szerkeszt\u00e9se",desc:"Be\u00e1gyazott m\u00e9dia besz\u00far\u00e1sa/szerkeszt\u00e9se","delta_height":"","delta_width":""},fullpage:{desc:"Dokumentum tulajdons\u00e1gai","delta_width":"","delta_height":""},template:{desc:"Sablon beilleszt\u00e9se"},visualchars:{desc:"Vizu\u00e1lis vez\u00e9rl\u0151karakterek be/ki."},spellchecker:{desc:"Helyes\u00edr\u00e1s-ellen\u0151rz\u0151 ki-/bekapcsol\u00e1sa",menu:"Helyes\u00edr\u00e1s-ellen\u0151rz\u0151 tulajdons\u00e1gai","ignore_word":"Sz\u00f3 kihagy\u00e1sa","ignore_words":"Mindet kihagy",langs:"Nyelvek",wait:"K\u00e9rem, v\u00e1rjon...",sug:"Aj\u00e1nl\u00e1sok","no_sug":"Nincs aj\u00e1nl\u00e1s","no_mpell":"Nem tal\u00e1ltam helyes\u00edr\u00e1si hib\u00e1t.","learn_word":"Sz\u00f3 megjegyz\u00e9se"},pagebreak:{desc:"Oldalt\u00f6r\u00e9s besz\u00far\u00e1sa"},advlist:{types:"T\u00edpusok",def:"Alap\u00e9rtelmezett","lower_alpha":"Kisbet\u0171s abc","lower_greek":"Kisbet\u0171s g\u00f6r\u00f6g","lower_roman":"Kisbet\u0171s r\u00f3mai","upper_alpha":"Nagybet\u0171s ABC","upper_roman":"Nagybet\u0171s r\u00f3mai",circle:"Karika",disc:"P\u00f6tty",square:"N\u00e9gyzet"},colors:{"333300":"S\u00f6t\u00e9t ol\u00edv","993300":"\u00c9g\u0151 narancs","000000":"Fekete","003300":"S\u00f6t\u00e9t z\u00f6ld","003366":"S\u00f6t\u00e9t az\u00far","000080":"Tenger k\u00e9k","333399":"Indig\u00f3","333333":"Nagyon s\u00f6t\u00e9tsz\u00fcrke","800000":"Gesztenyebarna",FF6600:"Narancs","808000":"Ol\u00edv","008000":"Z\u00f6ld","008080":"P\u00e1vak\u00e9k","0000FF":"K\u00e9k","666699":"Sz\u00fcrk\u00e9s k\u00e9k","808080":"Sz\u00fcrke",FF0000:"V\u00f6r\u00f6s",FF9900:"Borosty\u00e1ns\u00e1rga","99CC00":"S\u00e1rg\u00e1s z\u00f6ld","339966":"Tengerz\u00f6ld","33CCCC":"T\u00fcrk\u00edz","3366FF":"Kir\u00e1lyk\u00e9k","800080":"B\u00edbor","999999":"K\u00f6z\u00e9psz\u00fcrke",FF00FF:"B\u00edborv\u00f6r\u00f6s",FFCC00:"Arany",FFFF00:"S\u00e1rga","00FF00":"Vil\u00e1gos borosty\u00e1n","00FFFF":"V\u00edz","00CCFF":"\u00c9gk\u00e9k","993366":"Barna",C0C0C0:"Ez\u00fcst",FF99CC:"R\u00f3zsasz\u00edn",FFCC99:"Barack",FFFF99:"Vil\u00e1gos s\u00e1rga",CCFFCC:"Halv\u00e1ny z\u00f6ld",CCFFFF:"Halv\u00e1ny ci\u00e1n","99CCFF":"Vil\u00e1gos \u00e9gk\u00e9k",CC99FF:"Szilvak\u00e9k",FFFFFF:"Feh\u00e9r"},aria:{"rich_text_area":"Rich Text mez\u0151"},wordcount:{words:"Szavak sz\u00e1ma: "}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/hy.js b/program/js/tiny_mce/langs/hy.js
deleted file mode 100644
index 04a24f6f4..000000000
--- a/program/js/tiny_mce/langs/hy.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({hy:{common:{"more_colors":"\u0547\u0561\u057f \u0563\u0578\u0582\u0575\u0576\u0565\u0580","invalid_data":"\u054d\u056d\u0561\u056c: \u0546\u0565\u0580\u0561\u056e\u057e\u0561\u056e \u0567 \u057d\u056d\u0561\u056c \u0561\u0580\u056a\u0565\u0584, \u0563\u0578\u0582\u0576\u0561\u0576\u0577\u057e\u0561\u056e \u0567 \u056f\u0561\u0580\u0574\u056b\u0580\u0578\u057e","popup_blocked":"Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool","clipboard_no_support":"\u054f\u057e\u0575\u0561\u056c \u057a\u0561\u0570\u056b\u0576 \u0579\u056b \u0568\u0576\u0564\u0578\u0582\u0576\u057e\u0578\u0582\u0574 \u0541\u0565\u0580 \u0562\u0580\u0561\u0578\u0582\u0566\u0565\u0580\u056b \u056f\u0578\u0572\u0574\u056b\u0581, \u0585\u0563\u057f\u0561\u0563\u0578\u0580\u056e\u0565\u0584 \u0570\u0561\u057a\u0561\u057e\u0578\u0582\u0574\u0576\u0565\u0580","clipboard_msg":"\u054a\u0561\u057f\u0573\u0565\u0576\u0565\u056c / \u053f\u057f\u0580\u0565\u056c / \u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c (\u0574\u0561\u057f\u0579\u0565\u056c\u056b \u0579\u0567 Mozilla \u0587 Firefox \u0562\u0580\u0561\u0578\u0582\u0566\u0565\u0580\u0576\u0565\u0580\u0578\u0582\u0574) \\ n \u0541\u0565\u0566 \u0570\u0565\u057f\u0561\u0584\u0580\u0584\u056b\u055e\u0580 \u0567 \u0561\u0575\u0564 \u056b\u0576\u0586\u0578\u0580\u0574\u0561\u0581\u056b\u0561\u0576","not_set":"- \u0568\u0576\u057f\u0580\u0565\u056c -","class_name":"\u0534\u0561\u057d",browse:"\u0534\u056b\u057f\u0565\u056c",close:"\u0553\u0561\u056f\u0565\u056c",cancel:"\u0549\u0565\u0572\u0575\u0561\u056c",update:"\u0539\u0561\u0580\u0574\u0561\u0581\u0576\u0565\u056c",insert:"\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c",apply:"\u0540\u0561\u057d\u057f\u0561\u057f\u0565\u056c","edit_confirm":"\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c WYSIWYG \u0440\u0435\u0436\u0438\u043c \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044f?","invalid_data_number":"{#field} must be a number","invalid_data_min":"{#field} must be a number greater than {#min}","invalid_data_size":"{#field} must be a number or percentage",value:"(value)"},contextmenu:{full:"\u0538\u057d\u057f \u056c\u0561\u0575\u0576\u0578\u0582\u0569\u0575\u0561\u0576",right:"\u0538\u057d\u057f \u0561\u057b \u0565\u0566\u0580\u056b",center:"\u053f\u0565\u0576\u057f\u0580\u0578\u0576\u0561\u0581\u0576\u0565\u056c",left:"\u0538\u057d\u057f \u0571\u0561\u056d \u0565\u0566\u0580\u056b",align:"\u0540\u0561\u057e\u0561\u057d\u0561\u0580\u0565\u0581\u0578\u0582\u0574"},insertdatetime:{"day_short":"\u053f\u056b\u0580, \u0535\u0580\u056f, \u0535\u0580\u0584, \u0549\u0580\u0584, \u0540\u0576\u0563, \u0548\u0582\u0580\u0562, \u0547\u0562\u0569, \u053f\u056b\u0580","day_long":"\u056f\u056b\u0580\u0561\u056f\u056b, \u0565\u0580\u056f\u0578\u0582\u0577\u0561\u0562\u0569\u056b, \u0565\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b, \u0579\u0578\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b, \u0570\u056b\u0576\u0563\u0577\u0561\u0562\u0569\u056b, \u0578\u0582\u0580\u0562\u0561\u0569, \u0577\u0561\u0562\u0561\u0569, \u056f\u056b\u0580\u0561\u056f\u056b","months_short":"\u0570\u0578\u0582\u0576, \u0583\u0565\u057f, \u0574\u0561\u0580\u057f, \u0561\u057a\u0580, \u0574\u0561\u0575\u056b\u057d, \u0570\u0578\u0582\u0576, \u0570\u0578\u0582\u056c, \u0585\u0563\u057d\u057f, \u057d\u0565\u057a\u057f, \u0570\u0578\u056f\u057f, \u0576\u0578\u0575, \u0564\u0565\u056f","months_long":"\u0570\u0578\u0582\u0576\u057e\u0561\u0580, \u0583\u0565\u057f\u0580\u057e\u0561\u0580, \u0574\u0561\u0580\u057f, \u0561\u057a\u0580\u056b\u056c, \u0574\u0561\u0575\u056b\u057d, \u0570\u0578\u0582\u0576\u056b\u057d, \u0570\u0578\u0582\u056c\u056b\u057d, \u0585\u0563\u0578\u057d\u057f\u0578\u057d, \u057d\u0565\u057a\u057f\u0565\u0574\u0562\u0565\u0580, \u0570\u0578\u056f\u057f\u0565\u0574\u0562\u0565\u0580, \u0576\u0578\u0575\u0565\u0574\u0562\u0565\u0580, \u0564\u0565\u056f\u057f\u0565\u0574\u0562\u0565\u0580","inserttime_desc":"\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c \u056a\u0561\u0574\u0561\u0576\u0561\u056f","insertdate_desc":"\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c \u0561\u0574\u057d\u0561\u0569\u056b\u057e","time_fmt":"% H:% M:% S","date_fmt":"% d.% m.% Y"},print:{"print_desc":"\u054f\u057a\u0565\u056c"},preview:{"preview_desc":"\u0534\u056b\u057f\u0565\u056c"},directionality:{"rtl_desc":"\u0548\u0582\u0572\u0572\u0578\u0582\u0569\u0575\u0578\u0582\u0576\u0568\u055d \u0561\u057b\u056b\u0581 \u0571\u0561\u056d","ltr_desc":"\u0548\u0582\u0572\u0572\u0578\u0582\u0569\u0575\u0578\u0582\u0576\u0568\u055d \u0571\u0561\u056d\u056b\u0581 \u0561\u057b"},layer:{content:"\u0546\u0578\u0580 \u0577\u0565\u0580\u057f ...","absolute_desc":"\u053f\u056b\u0580\u0561\u057c\u0565\u056c \u0562\u0561\u0581\u0561\u0580\u0571\u0561\u056f \u057f\u0565\u0572\u0561\u056f\u0561\u0575\u0578\u0582\u0574","backward_desc":"\u054f\u0565\u0572\u0561\u0583\u0578\u056d\u0565\u056c \u0565\u057f","forward_desc":"\u054e\u0565\u0580\u0587","insertlayer_desc":"\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c \u0576\u0578\u0580 \u0577\u0565\u0580\u057f"},save:{"save_desc":"\u054a\u0561\u0570\u057a\u0561\u0576\u0565\u056c","cancel_desc":"\u0549\u0565\u0572\u0561\u0580\u056f\u0565\u056c \u0562\u0561\u056c\u0561\u0580 \u0583\u0578\u0583\u0578\u056d\u0578\u0582\u0569\u0575\u0578\u0582\u0576\u0576\u0565\u0580\u0568"},nonbreaking:{"nonbreaking_desc":"\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c \u0562\u0561\u0581\u0561\u0580\u056f"},iespell:{download:"ieSpell \u057a\u056c\u0561\u0563\u056b\u0576\u0568 \u0579\u056b \u0563\u057f\u0576\u057e\u0565\u056c\u0589 \u0551\u0561\u0576\u056f\u0561\u0576\u0578\u0582\u055e\u0574 \u0565\u0584 \u057f\u0565\u0572\u0561\u0564\u0580\u0565\u056c","iespell_desc":"\u054f\u0561\u057c\u0561\u057d\u056d\u0561\u056c\u0576\u0565\u0580\u056b \u057d\u057f\u0578\u0582\u0563\u0578\u0582\u0574"},advhr:{"advhr_desc":"\u0540\u0561\u0580\u056b\u0566\u0578\u0576\u0561\u056f\u0561\u0576 \u0562\u0561\u056a\u0561\u0576\u056b\u0579","delta_height":"","delta_width":""},emotions:{"emotions_desc":"\u054d\u0574\u0561\u0575\u056c\u056b\u056f\u0576\u0565\u0580","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"\u0548\u0580\u0578\u0576\u0565\u056c / \u0553\u0578\u0583\u0578\u056d\u0565\u056c","search_desc":"\u0548\u0580\u0578\u0576\u0565\u056c","delta_width":"","delta_height":""},advimage:{"delta_width":"200","image_desc":"\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c / \u0583\u0578\u0583\u0578\u056d\u0565\u056c \u0576\u056f\u0561\u0580","delta_height":""},advlink:{"delta_width":"200","link_desc":"\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c / \u0583\u0578\u0583\u0578\u056d\u0565\u056c \u0570\u0572\u0578\u0582\u0574","delta_height":""},xhtmlxtras:{"attribs_desc":"\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c / \u0583\u0578\u0583\u0578\u056d\u0565\u056c \u0561\u057f\u0580\u056b\u0562\u0578\u0582\u057f\u0576\u0565\u0580\u0568","ins_desc":"Insertion","del_desc":"Deletion","acronym_desc":"Acronym","abbr_desc":"Abbreviation","cite_desc":"Citation","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"\u053d\u0574\u0562\u0561\u0563\u0580\u0565\u056c CSS \u0578\u0573\u0565\u0580\u0568","delta_height":"","delta_width":""},paste:{"selectall_desc":"\u0538\u0576\u057f\u0580\u0565\u056c \u0562\u0578\u056c\u0578\u0580\u0568","paste_word_desc":"\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c Word \u056e\u0580\u0561\u0563\u0580\u056b\u0581","paste_text_desc":"\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c \u0578\u0580\u057a\u0565\u057d \u057f\u0565\u0584\u057d\u057f","plaintext_mode":"Paste is now in plain text mode. Click again to toggle back to regular paste mode.","plaintext_mode_sticky":"Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode."},"paste_dlg":{"word_title":"\u0555\u0563\u057f\u0561\u0563\u0578\u0580\u056e\u0565\u0584 CTRL + V \u057a\u0561\u057f\u0573\u0565\u0576\u057e\u0561\u056e \u057f\u0565\u0584\u057d\u057f\u056b \u057f\u0565\u0572\u0561\u0564\u0580\u0574\u0561\u0576 \u0570\u0561\u0574\u0561\u0580","text_linebreaks":"\u054a\u0561\u0570\u057a\u0561\u0576\u0565\u056c \u057f\u0578\u0572\u0561\u0564\u0561\u0580\u0571\u0565\u0580\u0568","text_title":"\u0555\u0563\u057f\u0561\u0563\u0578\u0580\u056e\u0565\u0584 CTRL + V \u057a\u0561\u057f\u0573\u0565\u0576\u057e\u0561\u056e \u057f\u0565\u0584\u057d\u057f\u056b \u057f\u0565\u0572\u0561\u0564\u0580\u0574\u0561\u0576 \u0570\u0561\u0574\u0561\u0580"},table:{"cellprops_delta_width":"30",cell:"\u042f\u0447\u0435\u0439\u043a\u0430",col:"\u041f\u043e\u043b\u0435",row:"\u0421\u0442\u0440\u043e\u043a\u0430",del:"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443","copy_row_desc":"\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0442\u0430\u0431\u043b\u0438\u0446\u044b","cut_row_desc":"\u0412\u044b\u0440\u0435\u0437\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0442\u0430\u0431\u043b\u0438\u0446\u044b","paste_row_after_desc":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u043f\u043e\u0441\u043b\u0435","paste_row_before_desc":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0434\u043e","props_desc":"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u044b","cell_desc":"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u044f\u0447\u0435\u0439\u043a\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044b","row_desc":"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0441\u0442\u0440\u043e\u043a\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b","merge_cells_desc":"\u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u044f\u0447\u0435\u0439\u043a\u0438","split_cells_desc":"\u0420\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u044f\u0447\u0435\u0439\u043a\u0438","delete_col_desc":"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0435\u0446","col_after_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u043f\u043e\u0441\u043b\u0435","col_before_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0434\u043e","delete_row_desc":"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443","row_after_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u043f\u043e\u0441\u043b\u0435","row_before_desc":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0434\u043e",desc:"\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c \u0576\u0578\u0580 \u0561\u0572\u0575\u0578\u0582\u057d\u0561\u056f","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"unload_msg":"\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0441\u0434\u0435\u043b\u0430\u043b\u0438, \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u0442\u0435\u0440\u044f\u043d\u044b, \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u0442\u0435 \u0441 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.","warning_message":"If you restore the saved content, you will lose all the content that is currently in the editor.\n\nAre you sure you want to restore the saved content?","restore_content":"Restore auto-saved content."},fullscreen:{desc:"\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u0432\u0435\u0441\u044c \u044d\u043a\u0440\u0430\u043d"},media:{edit:"\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c embedded media",desc:"\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c / \u0583\u0578\u0583\u0578\u056d\u0565\u056c \u0574\u0565\u0564\u056b\u0561","delta_height":"","delta_width":""},fullpage:{desc:"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430","delta_width":"","delta_height":""},template:{desc:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442"},visualchars:{desc:"Visual control characters on / off"},spellchecker:{desc:"\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443",menu:"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438","ignore_word":"\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u043e\u0432\u043e","ignore_words":"\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435",langs:"\u042f\u0437\u044b\u043a\u0438",wait:"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u043e\u0434\u043e\u0436\u0434\u0438\u0442\u0435 ...",sug:"\u0412\u0430\u0440\u0438\u0430\u043d\u0442\u044b","no_sug":"\u041d\u0435\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432","no_mpell":"\u041e\u0448\u0438\u0431\u043e\u043a \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e","learn_word":"Learn word"},pagebreak:{desc:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b"},advlist:{types:"Types",def:"Default","lower_alpha":"Lower Alpha","lower_greek":"Lower Greek","lower_roman":"Lower Roman","upper_alpha":"Upper Alpha","upper_roman":"Upper Roman",circle:"Circle",disc:"Disc",square:"Square"},colors:{"333300":"Dark olive","993300":"Burnt orange","000000":"Black","003300":"Dark green","003366":"Dark azure","000080":"Navy Blue","333399":"Indigo","333333":"Very dark gray","800000":"Maroon",FF6600:"Orange","808000":"Olive","008000":"Green","008080":"Teal","0000FF":"Blue","666699":"Grayish blue","808080":"Gray",FF0000:"Red",FF9900:"Amber","99CC00":"Yellow green","339966":"Sea green","33CCCC":"Turquoise","3366FF":"Royal blue","800080":"Purple","999999":"Medium gray",FF00FF:"Magenta",FFCC00:"Gold",FFFF00:"Yellow","00FF00":"Lime","00FFFF":"Aqua","00CCFF":"Sky blue","993366":"Brown",C0C0C0:"Silver",FF99CC:"Pink",FFCC99:"Peach",FFFF99:"Light yellow",CCFFCC:"Pale green",CCFFFF:"Pale cyan","99CCFF":"Light sky blue",CC99FF:"Plum",FFFFFF:"White"},aria:{"rich_text_area":"Rich Text Area"},wordcount:{words:"Words"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/id.js b/program/js/tiny_mce/langs/id.js
deleted file mode 100644
index 1577926ad..000000000
--- a/program/js/tiny_mce/langs/id.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({id:{common:{"more_colors":"More colors","invalid_data":"Error: nilai invalid, ditandai dengan dengan warna merah","popup_blocked":"Maaf, popup-blocker anda telah menonaktifkan jendela aplikasi yang menyediakan fungsionalitas. Nonaktifkan popup-blocker untuk sepenuhnya memanfaatkan alat ini.","clipboard_no_support":"Tidak didukung Browser, gunakan shortcut dari keyboard.","clipboard_msg":"Copy/Cut/Paste tidak tersedia pada Mozilla dan Firefox.\nButuh info selengkapnya?","not_set":"-- Not set --","class_name":"Class",browse:"Browse",close:"Close",cancel:"Cancel",update:"Update",insert:"Insert",apply:"Apply","edit_confirm":"Gunakan mode WYSIWYG untuk textarea ini?","invalid_data_number":"{#field} must be a number","invalid_data_min":"{#field} must be a number greater than {#min}","invalid_data_size":"{#field} must be a number or percentage",value:"(value)"},contextmenu:{full:"Penuh",right:"Kanan",center:"Tengah",left:"Kiri",align:"Alignment"},insertdatetime:{"day_short":"Min,Sen,Sel,Rab,Kam,Jum,Sab,Min","day_long":"Minggu,Senin,Selasa,Rabu,Kamis,Jumat,Sabtu,Minggu","months_short":"Jan,Feb,Mar,Apr,Mei,Jun,Jul,Ags,Sep,Okt,Nov,Des","months_long":"Januari,Februari,Maren,April,Mei,Juni,Juli,Agustus,September,Oktober,November,Desember","inserttime_desc":"sisipkan waktu","insertdate_desc":"sisipkan tanggal","time_fmt":"%H:%M:%S","date_fmt":"%Y-%m-%d"},print:{"print_desc":"Cetak"},preview:{"preview_desc":"Preview"},directionality:{"rtl_desc":"Arah kanan ke kiri","ltr_desc":"Arah kiri ke kanan"},layer:{content:"Layer baru...","absolute_desc":"Beralih posisi absolut","backward_desc":"Pindah ke belakang","forward_desc":"Pindah ke depan","insertlayer_desc":"sisipkan layer Baru"},save:{"save_desc":"Simpan","cancel_desc":"Batalkan semua perubahan"},nonbreaking:{"nonbreaking_desc":"sisipkan karakter non-breaking space"},iespell:{download:"ieSpell tidak terdeteksi. Instal sekarang?","iespell_desc":"Jalankan spell checking"},advhr:{"advhr_desc":"Horizontal rule","delta_height":"","delta_width":""},emotions:{"emotions_desc":"Emotions","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"Cari/Ganti","search_desc":"Cari","delta_width":"","delta_height":""},advimage:{"image_desc":"sisipkan/Ubah Gambar","delta_width":"","delta_height":""},advlink:{"link_desc":"Sisipkan/Ubah link","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"Sisip/Ubah Atribut","ins_desc":"Penyisipan","del_desc":"Penghapusan","acronym_desc":"Akronim","abbr_desc":"Singkatan/Kependekan Kata","cite_desc":"Kutipan","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"Ubah CSS Style","delta_height":"","delta_width":""},paste:{"selectall_desc":"Select All","paste_word_desc":"Paste from Word","paste_text_desc":"Paste as Plain Text","plaintext_mode":"Paste is now in plain text mode. Click again to toggle back to regular paste mode.","plaintext_mode_sticky":"Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode."},"paste_dlg":{"word_title":"Gunakan CTRL+V pada keyboard untuk paste.","text_linebreaks":"Keep linebreaks","text_title":"Gunakan CTRL+V pada keyboard untuk paste."},table:{cell:"Cell",col:"Column",row:"Row",del:"Hapus Tabel","copy_row_desc":"Copy row tabel","cut_row_desc":"Cut row tabel","paste_row_after_desc":"Paste row tabel sesudah","paste_row_before_desc":"Paste row tabel sebelum","props_desc":"Properti tabel","cell_desc":"Properti cell tabel","row_desc":"Properti row tabel","merge_cells_desc":"Merge cell tabel","split_cells_desc":"Pisahkan cell tabel yang di-merge","delete_col_desc":"Hapus column","col_after_desc":"Sisipkan column setelah","col_before_desc":"Sisipkan column sebelum","delete_row_desc":"Hapus row","row_after_desc":"Sisipkan row sesudah","row_before_desc":"Sisipkan row sebelum",desc:"Sisipkan tabel baru","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"unload_msg":"Perubahan yang dilakukan akan hilang jika Anda pindah dari halaman ini.","warning_message":"If you restore the saved content, you will lose all the content that is currently in the editor.\n\nAre you sure you want to restore the saved content?","restore_content":"Restore auto-saved content."},fullscreen:{desc:"Toggle fullscreen mode"},media:{edit:"Edit embedded media",desc:"Insert / edit embedded media","delta_height":"","delta_width":""},fullpage:{desc:"Properti Dokumen","delta_width":"","delta_height":""},template:{desc:"Menyisipkan template standar isi"},visualchars:{desc:"Pengendalian visual karakter on/off"},spellchecker:{desc:"Toggle spellchecker",menu:"Pengaturan Spellchecker ","ignore_word":"Abaikan kata","ignore_words":"Abaikan semua",langs:"Bahasa",wait:"Harap tunggu...",sug:"Saran","no_sug":"Tidak ada saran","no_mpell":"Tidak ada misspellings ditemukan.","learn_word":"Learn word"},pagebreak:{desc:"Sisipkan page break."},advlist:{types:"Types",def:"Default","lower_alpha":"Lower Alpha","lower_greek":"Lower Greek","lower_roman":"Lower Roman","upper_alpha":"Upper Alpha","upper_roman":"Upper Roman",circle:"Circle",disc:"Disc",square:"Square"},colors:{"333300":"Dark olive","993300":"Burnt orange","000000":"Black","003300":"Dark green","003366":"Dark azure","000080":"Navy Blue","333399":"Indigo","333333":"Very dark gray","800000":"Maroon",FF6600:"Orange","808000":"Olive","008000":"Green","008080":"Teal","0000FF":"Blue","666699":"Grayish blue","808080":"Gray",FF0000:"Red",FF9900:"Amber","99CC00":"Yellow green","339966":"Sea green","33CCCC":"Turquoise","3366FF":"Royal blue","800080":"Purple","999999":"Medium gray",FF00FF:"Magenta",FFCC00:"Gold",FFFF00:"Yellow","00FF00":"Lime","00FFFF":"Aqua","00CCFF":"Sky blue","993366":"Brown",C0C0C0:"Silver",FF99CC:"Pink",FFCC99:"Peach",FFFF99:"Light yellow",CCFFCC:"Pale green",CCFFFF:"Pale cyan","99CCFF":"Light sky blue",CC99FF:"Plum",FFFFFF:"White"},aria:{"rich_text_area":"Rich Text Area"},wordcount:{words:"Words"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/is.js b/program/js/tiny_mce/langs/is.js
deleted file mode 100644
index ae20e20b0..000000000
--- a/program/js/tiny_mce/langs/is.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({is:{common:{"more_colors":"Fleiri litir","invalid_data":"Villa: Vitlaus gildi slegin inn, \u00feau eru merkt me\u00f0 rau\u00f0u.","popup_blocked":"Afsaki\u00f0, uppsprettuv\u00f6rnin \u00fe\u00edn (popup blocker) hefur loka\u00f0 \u00e1 glugga sem er hluti af ritlinum. \u00de\u00fa ver\u00f0ur a\u00f0 sl\u00f6kkva \u00e1 uppsprettuv\u00f6rn til a\u00f0 geta nota\u00f0 \u00feennan ritil.","clipboard_no_support":"Ekki stutt \u00ed \u00fe\u00ednum vefsko\u00f0ara, nota\u00f0ur fl\u00fdtilykla \u00ed sta\u00f0inn.","clipboard_msg":"Afrita/Klippa/L\u00edma er ekki a\u00f0gengilegt \u00ed Mozilla og Firefox eins og er.\nViltu f\u00e1 n\u00e1nari uppl\u00fdsingar?","not_set":"-- Ekki skilgreint --","class_name":"Klasi",browse:"Gramsa",close:"Loka",cancel:"H\u00e6tta vi\u00f0",update:"Uppf\u00e6ra",insert:"Setja inn",apply:"Sta\u00f0festa","edit_confirm":"Viltu nota WYSIWYG ritil fyrir \u00feetta textasv\u00e6\u00f0i?","invalid_data_number":"{#field} must be a number","invalid_data_min":"{#field} must be a number greater than {#min}","invalid_data_size":"{#field} must be a number or percentage",value:"(value)"},contextmenu:{full:"Full",right:"H\u00e6gri",center:"Mi\u00f0ja",left:"Vinstri",align:"J\u00f6fnun"},insertdatetime:{"day_short":"Sun,M\u00e1n,\u00deri,Mi\u00f0,Fim,F\u00f6s,Lau,Sun","day_long":"Sunnudagur,M\u00e1nudagur,\u00deri\u00f0judagur,Mi\u00f0vikudagur,Fimmtudagur,F\u00f6studagur,Laugardagur,Sunnudagur","months_short":"Jan,Feb,Mar,Apr,Ma\u00ed,J\u00fan,J\u00fal,\u00c1gs,Sep,Okt,N\u00f3v,Des","months_long":"Jan\u00faar,Febr\u00faar,Mars,Apr\u00edl,Ma\u00ed,J\u00fan\u00ed,J\u00fal\u00ed,\u00c1g\u00fast,September,Okt\u00f3ber,N\u00f3vember,Desember","inserttime_desc":"Setja inn t\u00edmasetningu","insertdate_desc":"Setja inn dagsetningu","time_fmt":"%H:%M:%S","date_fmt":"%Y-%m-%d"},print:{"print_desc":"Prenta"},preview:{"preview_desc":"Forsko\u00f0a"},directionality:{"rtl_desc":"Fr\u00e1 h\u00e6gri til vinstri","ltr_desc":"Fr\u00e1 vinstri til h\u00e6gri"},layer:{content:"N\u00fdtt lag...","absolute_desc":"Taka af/setja \u00e1 algj\u00f6ra j\u00f6fnun","backward_desc":"F\u00e6ra afturfyrir","forward_desc":"F\u00e6ra framfyrir","insertlayer_desc":"Setja inn n\u00fdtt lag"},save:{"save_desc":"Vista","cancel_desc":"H\u00e6tta vi\u00f0 allar breytingar"},nonbreaking:{"nonbreaking_desc":"Setja inn bil staf"},iespell:{download:"ieSpell fannst ekki. Viltu setja \u00fea\u00f0 inn n\u00fana?","iespell_desc":"Lesa yfir"},advhr:{"delta_height":"H\u00e6\u00f0","delta_width":"Breidd","advhr_desc":"L\u00e1r\u00e9tt l\u00edna"},emotions:{"delta_height":"H\u00e6\u00f0","delta_width":"Breidd","emotions_desc":"Broskarlar"},searchreplace:{"replace_desc":"Finna/Skipta \u00fat","delta_width":"Breidd","delta_height":"H\u00e6\u00f0","search_desc":"Finna"},advimage:{"delta_width":"Breidd","image_desc":"Setja inn/breyta mynd","delta_height":"H\u00e6\u00f0"},advlink:{"delta_height":"H\u00e6\u00f0","delta_width":"Breidd","link_desc":"Setja inn/breyta hlekk"},xhtmlxtras:{"attribs_desc":"Skr\u00e1/breyta gildum","ins_desc":"Vi\u00f0b\u00f3t","del_desc":"Ey\u00f0a","acronym_desc":"Acronym","abbr_desc":"Skammst\u00f6fun","cite_desc":"Citation","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{"delta_height":"H\u00e6\u00f0","delta_width":"Breidd",desc:"Breyta st\u00edlsni\u00f0i"},paste:{"plaintext_mode":"L\u00edma er n\u00fa \u00ed venjulegum textaham. Smelltu aftur til a\u00f0 skipta aftur \u00ed venjulegan ham","plaintext_mode_sticky":"L\u00edma er n\u00fa \u00ed venjulegum textaham. Smelltu aftur til a\u00f0 skipta yfir \u00ed venjulegan l\u00edma ham. Eftir a\u00f0 \u00fe\u00fa l\u00edmir eitthva\u00f0 f\u00e6rist \u00fe\u00fa sj\u00e1lfvirkt aftur \u00ed venjulegan ham.","selectall_desc":"Velja allt","paste_word_desc":"L\u00edma \u00far Word","paste_text_desc":"L\u00edma sem hreinn texti"},"paste_dlg":{"word_title":"Nota\u00f0u CTRL+V \u00e1 lyklabo\u00f0rinu til a\u00f0 l\u00edma textanum \u00ed ritilinn.","text_linebreaks":"Halda endingu l\u00edna","text_title":"Nota\u00f0u CTRL+V \u00e1 lyklabor\u00f0inu til a\u00f0 l\u00edma textanum \u00ed ritilinn."},table:{cell:"Reitur",col:"D\u00e1lkur",row:"R\u00f6\u00f0",del:"Ey\u00f0a t\u00f6flu","copy_row_desc":"Afrita r\u00f6\u00f0ina","cut_row_desc":"Klippa r\u00f6\u00f0ina","paste_row_after_desc":"L\u00edma t\u00f6flur\u00f6\u00f0 fyrir ne\u00f0an","paste_row_before_desc":"L\u00edma t\u00f6flur\u00f6\u00f0 fyrir ofan","props_desc":"Eiginleikar t\u00f6flu","cell_desc":"Eiginleikar d\u00e1lka","row_desc":"Eiginleikar ra\u00f0ar","merge_cells_desc":"Sameina t\u00f6flureiti","split_cells_desc":"Sundra sameinu\u00f0um t\u00f6flureitum","delete_col_desc":"Ey\u00f0a d\u00e1lk","col_after_desc":"Setja inn n\u00fdjan d\u00e1lk fyrir aftan","col_before_desc":"Setja inn n\u00fdjan d\u00e1lk fyrir framan","delete_row_desc":"Ey\u00f0a r\u00f6\u00f0","row_after_desc":"Setja inn n\u00fdja r\u00f6\u00f0 fyrir ne\u00f0an","row_before_desc":"Setja inn n\u00fdja r\u00f6\u00f0 fyrir ofan",desc:"Setja inn n\u00fdja t\u00f6flu","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"Ef \u00fe\u00fa n\u00e6r\u00f0 \u00ed vistu\u00f0u g\u00f6gnin \u00fe\u00e1 missir \u00fe\u00fa allt innihald sem er n\u00fa \u00feegar \u00ed ritlinum.\n\nErtu viss um a\u00f0 \u00fe\u00fa viljir keyra vistu\u00f0u g\u00f6gnin yfir?","restore_content":"N\u00e1 \u00ed vistu\u00f0 g\u00f6gn","unload_msg":"Breytingar sem \u00fe\u00fa ger\u00f0ir hafa ekki veri\u00f0 vista\u00f0ar"},fullscreen:{desc:"Skipta \u00e1 milli heilskj\u00e1s"},media:{edit:"Breyta birtanlegri margmi\u00f0lun",desc:"Setja inn / Breyta birtingu margmi\u00f0lunar","delta_height":"","delta_width":""},fullpage:{desc:"Document properties","delta_width":"","delta_height":""},template:{desc:"Setja inn tilb\u00fai\u00f0 sni\u00f0"},visualchars:{desc:"Visual control characters on/off."},spellchecker:{desc:"Virka/\u00f3virkja villup\u00faka",menu:"Stillingar villup\u00faka","ignore_word":"Sleppa or\u00f0i","ignore_words":"Sleppa \u00f6llu",langs:"Tungum\u00e1l",wait:"Augnablik...",sug:"Till\u00f6gur","no_sug":"Engar till\u00f6gur","no_mpell":"Fann engar stafsetningavillur.","learn_word":"Learn word"},pagebreak:{desc:"Insert page break."},advlist:{types:"Types",def:"Default","lower_alpha":"Lower alpha","lower_greek":"Lower greek","lower_roman":"Lower roman","upper_alpha":"Upper alpha","upper_roman":"Upper roman",circle:"Circle",disc:"Disc",square:"Square"},colors:{"333300":"Dark olive","993300":"Burnt orange","000000":"Black","003300":"Dark green","003366":"Dark azure","000080":"Navy Blue","333399":"Indigo","333333":"Very dark gray","800000":"Maroon",FF6600:"Orange","808000":"Olive","008000":"Green","008080":"Teal","0000FF":"Blue","666699":"Grayish blue","808080":"Gray",FF0000:"Red",FF9900:"Amber","99CC00":"Yellow green","339966":"Sea green","33CCCC":"Turquoise","3366FF":"Royal blue","800080":"Purple","999999":"Medium gray",FF00FF:"Magenta",FFCC00:"Gold",FFFF00:"Yellow","00FF00":"Lime","00FFFF":"Aqua","00CCFF":"Sky blue","993366":"Brown",C0C0C0:"Silver",FF99CC:"Pink",FFCC99:"Peach",FFFF99:"Light yellow",CCFFCC:"Pale green",CCFFFF:"Pale cyan","99CCFF":"Light sky blue",CC99FF:"Plum",FFFFFF:"White"},aria:{"rich_text_area":"Rich Text Area"},wordcount:{words:"Words"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/it.js b/program/js/tiny_mce/langs/it.js
deleted file mode 100644
index af57d8559..000000000
--- a/program/js/tiny_mce/langs/it.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({it:{common:{"more_colors":"Colori aggiuntivi...","invalid_data":"Errore: valori inseriti non validi, sono marcati in rosso.","popup_blocked":"Spiacente, ma il blocco popup ha disabilitato una finestra che fornisce funzionalit\u00e0 dell\'applicazione. Si deve disabilitare il blocco popup per questo sito per poter utlizzare appieno questo strumento.","clipboard_no_support":"Attualmente non supportato dal browser in uso, usare le scorciatoie da tastiera.","clipboard_msg":"Copia/Taglia/Incolla non \u00e8 disponibile in Mozilla e Firefox.\nSi desidera avere maggiori informazioni su questo problema?","not_set":"-- Non impostato --","class_name":"Classe",browse:"Sfoglia",close:"Chiudi",cancel:"Annulla",update:"Aggiorna",insert:"Inserisci",apply:"Applica","edit_confirm":"Usare la modalit\u00e0 WYSIWYG per questa textarea?","invalid_data_number":"{#field} deve essere un numero","invalid_data_min":"{#field} deve essere un numero maggiore di {#min}","invalid_data_size":"{#field} deve essere un numero o una percentuale",value:"(valore)"},contextmenu:{full:"Giustifica",right:"Allinea a destra",center:"Centra",left:"Allinea a sinistra",align:"Allineamento"},insertdatetime:{"day_short":"Dom,Lun,Mar,Mer,Gio,Ven,Sab,Dom","day_long":"Domenica,Luned\u00ec,Marted\u00ec,Mercoled\u00ec,Gioved\u00ec,Venerd\u00ec,Sabato,Domenica","months_short":"Gen,Feb,Mar,Apr,Mag,Giu,Lug,Ago,Set,Ott,Nov,Dic","months_long":"Gennaio,Febbraio,Marzo,Aprile,Maggio,Giugno,Luglio,Agosto,Settembre,Ottobre,Novembre,Dicembre","inserttime_desc":"Inserisci ora","insertdate_desc":"Inserisci data","time_fmt":"%H:%M:%S","date_fmt":"%Y-%m-%d"},print:{"print_desc":"Stampa"},preview:{"preview_desc":"Anteprima"},directionality:{"rtl_desc":"Direzione da destra a sinistra","ltr_desc":"Direzione da sinistra a destra"},layer:{content:"Nuovo layer...","absolute_desc":"Attiva/Disattiva posizionamento assoluto","backward_desc":"Porta in sfondo","forward_desc":"Porta in rilievo","insertlayer_desc":"Inserisci nuovo layer"},save:{"save_desc":"Salva","cancel_desc":"Cancella tutte le modifiche"},nonbreaking:{"nonbreaking_desc":"Inserisci uno spazio"},iespell:{download:"ieSpell non rilevato. Installarlo ora?","iespell_desc":"Esegui controllo ortografico"},advhr:{"advhr_desc":"Riga orizzontale","delta_height":"","delta_width":""},emotions:{"emotions_desc":"Faccine","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"Trova/Sostituisci","search_desc":"Trova","delta_width":"","delta_height":""},advimage:{"image_desc":"Inserisci/modifica immagine","delta_width":"","delta_height":""},advlink:{"link_desc":"Inserisci/modifica collegamento","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"Inserisci/modifica attributi","ins_desc":"Inserimento","del_desc":"Cancellamento","acronym_desc":"Acronimo","abbr_desc":"Abbreviazione","cite_desc":"Citazione","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"Modifica stile CSS","delta_height":"","delta_width":""},paste:{"plaintext_mode":"Incolla adesso e in modalit\u00e0 testo. Clicca nuovamente per tornare alla modalit\u00e0 normale.","plaintext_mode_sticky":"Incolla adesso e in modalit\u00e0 testo. Clicca nuovamente per tornare alla modalit\u00e0 normale. Dopo che avrai incollato qualcosa tornerai alla modalit\u00e0 normale","selectall_desc":"Seleziona tutto","paste_word_desc":"Incolla da Word","paste_text_desc":"Incolla come testo semplice"},"paste_dlg":{"word_title":"Premere CTRL+V sulla tastiera per incollare il testo nella finestra.","text_linebreaks":"Mantieni interruzioni di riga","text_title":"Premere CTRL+V sulla tastiera per incollare il testo nella finestra."},table:{cell:"Cella",col:"Colonna",row:"Riga",del:"Elimina tabella","copy_row_desc":"Copia riga","cut_row_desc":"Taglia riga","paste_row_after_desc":"Incolla riga dopo","paste_row_before_desc":"Incolla riga prima","props_desc":"Propriet\u00e0 tabella","cell_desc":"Propriet\u00e0 cella","row_desc":"Propriet\u00e0 riga","merge_cells_desc":"Unisci celle","split_cells_desc":"Separa celle","delete_col_desc":"Elimina colonna","col_after_desc":"Inserisci colonna dopo","col_before_desc":"Inserisci colonna prima","delete_row_desc":"Elimina riga","row_after_desc":"Inserisci riga dopo","row_before_desc":"Inserisci riga prima",desc:"Inserisci una nuova tabella","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"Se ripristini i dati salvati automaticamente perderai i dati attuali dell\'editor\n\nSei sicuro di voler ripristinare i dati?.","restore_content":"Ripristina i dati salvati automaticamente","unload_msg":"I cambiamenti effettuati saranno persi se si abbandona la pagina corrente."},fullscreen:{desc:"Attiva/disattiva modalit\u00e0 a tutto schermo"},media:{edit:"Modifica file multimediale",desc:"Inserisci/modifica file multimediale","delta_height":"","delta_width":""},fullpage:{desc:"Propriet\u00e0 Documento","delta_width":"","delta_height":""},template:{desc:"Inserisci contenuto da modello predefinito"},visualchars:{desc:"Attiva/disattiva caratteri di controllo visuale."},spellchecker:{desc:"Attiva/disattiva controllo ortografico",menu:"Impostazioni controllo ortografico","ignore_word":"Ignora parola","ignore_words":"Ignora tutto",langs:"Lingue",wait:"Attendere prego...",sug:"Suggerimenti","no_sug":"Nessun suggerimento","no_mpell":"Nessun errore rilevato.","learn_word":"Learn word"},pagebreak:{desc:"Inserisci intterruzione di pagina."},advlist:{types:"Tipi",def:"Default","lower_alpha":"Minuscolo alfanumerico","lower_greek":"Minuscolo lettera greca","lower_roman":"Minuscolo lettere romane","upper_alpha":"Maiuscolo alfanumerico","upper_roman":"Maiuscolo lettere romane",circle:"Cerchio",disc:"Punto",square:"Quadrato"},colors:{"333300":"Verde oliva scuro","993300":"Arancio bruciato","000000":"Nero","003300":"Verde scuro","003366":"Azzurro scuro","000080":"Blu navy","333399":"Indaco","333333":"Grigio molto scuro","800000":"Marrone",FF6600:"Arancione","808000":"Verde oliva","008000":"Verde","008080":"Verde azzurro","0000FF":"Blu","666699":"Grigio blu","808080":"Grigio",FF0000:"Rosso",FF9900:"Ambra","99CC00":"Giallo verde","339966":"Verde acqua","33CCCC":"Turchese","3366FF":"Blu royal","800080":"Porpora","999999":"Grigio topo",FF00FF:"Magenta",FFCC00:"Oro",FFFF00:"Giallo","00FF00":"Lime","00FFFF":"Acqua","00CCFF":"Blu cielo","993366":"Vinaccia",C0C0C0:"Argento",FF99CC:"Rosa",FFCC99:"Pesca",FFFF99:"Giallo chiaro",CCFFCC:"Verde chiaro",CCFFFF:"Ciano chiaro","99CCFF":"Blu cielo chiaro",CC99FF:"Prugna",FFFFFF:"Bianco"},aria:{"rich_text_area":"Area testo formattato"},wordcount:{words:"Parole:"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/ja.js b/program/js/tiny_mce/langs/ja.js
deleted file mode 100644
index cdd5399a6..000000000
--- a/program/js/tiny_mce/langs/ja.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({ja:{common:{"more_colors":"\u3055\u3089\u306b\u8272\u3092\u4f7f\u7528...","invalid_data":"\u30a8\u30e9\u30fc: \u5165\u529b\u306b\u8aa4\u308a\u304c\u3042\u308a\u307e\u3059\u3002\uff08\u8d64\u5b57\u306e\u9805\u76ee\uff09","popup_blocked":"\u7533\u3057\u8a33\u3042\u308a\u307e\u305b\u3093\u304c\u3001\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u8868\u793a\u3092\u8a31\u53ef\u3057\u3066\u3044\u306a\u3044\u305f\u3081\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u6a5f\u80fd\u3092\u63d0\u4f9b\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u3053\u306e\u30c4\u30fc\u30eb\u306e\u6a5f\u80fd\u3092\u5b8c\u5168\u306b\u6d3b\u7528\u3059\u308b\u306b\u306f\u3001\u3053\u306e\u30b5\u30a4\u30c8\u3067\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u3092\u8a31\u53ef\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002","clipboard_no_support":"\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u64cd\u4f5c\u306f\u5229\u7528\u3055\u308c\u3066\u3044\u308b\u30d6\u30e9\u30a6\u30b6\u306b\u5bfe\u5fdc\u3057\u3066\u3044\u307e\u305b\u3093\u3002\u30ad\u30fc\u30dc\u30fc\u30c9\u306e\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8\u3092\u4ee3\u308f\u308a\u306b\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3044\u3002","clipboard_msg":"\u30b3\u30d4\u30fc/\u5207\u308a\u53d6\u308a/\u8cbc\u308a\u4ed8\u3051\u306fMozilla\u3068Firefox\u3067\u306f\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002\n\u3053\u306e\u554f\u984c\u306e\u8a73\u7d30\u3092\u5f97\u305f\u3044\u3067\u3059\u304b?","not_set":"-- \u672a\u8a2d\u5b9a --","class_name":"\u30af\u30e9\u30b9",browse:"\u95b2\u89a7",close:"\u9589\u3058\u308b",cancel:"\u53d6\u308a\u6d88\u3057",update:"\u66f4\u65b0",insert:"\u633f\u5165",apply:"\u9069\u7528","edit_confirm":"\u3053\u306e\u30c6\u30ad\u30b9\u30c8\u30a8\u30ea\u30a2\u3092WYSIWYG\u30e2\u30fc\u30c9\u306b\u5207\u308a\u66ff\u3048\u307e\u3059\u304b\uff1f","invalid_data_number":"{#field} \u306f\u6570\u5024\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002","invalid_data_min":"{#field} \u306f{#min}\u3088\u308a\u3082\u5927\u304d\u306a\u6570\u5024\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002","invalid_data_size":"{#field}\u306f\u6570\u5024\u307e\u305f\u306f\u30d1\u30fc\u30bb\u30f3\u30c6\u30fc\u30b8\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002",value:"(\u5024)"},contextmenu:{full:"\u5747\u7b49\u5272\u4ed8",right:"\u53f3\u63c3\u3048",center:"\u4e2d\u592e\u63c3\u3048",left:"\u5de6\u63c3\u3048",align:"\u914d\u7f6e"},insertdatetime:{"day_short":"(\u65e5),(\u6708),(\u706b),(\u6c34),(\u6728),(\u91d1),(\u571f),(\u65e5)","day_long":"\u65e5\u66dc\u65e5,\u6708\u66dc\u65e5,\u706b\u66dc\u65e5,\u6c34\u66dc\u65e5,\u6728\u66dc\u65e5,\u91d1\u66dc\u65e5,\u571f\u66dc\u65e5,\u65e5\u66dc\u65e5","months_short":"1\u6708,2\u6708,3\u6708,4\u6708,5\u6708,6\u6708,7\u6708,8\u6708,9\u6708,10\u6708,11\u6708,12\u6708","months_long":"1,2,3,4,5,6,7,8,9,10,11,12","inserttime_desc":"\u6642\u523b\u3092\u633f\u5165","insertdate_desc":"\u65e5\u4ed8\u3092\u633f\u5165","time_fmt":"%H:%M:%S","date_fmt":"%Y-%m-%d"},print:{"print_desc":"\u5370\u5237"},preview:{"preview_desc":"\u30d7\u30ec\u30d3\u30e5\u30fc"},directionality:{"rtl_desc":"\u53f3\u304b\u3089\u5de6","ltr_desc":"\u5de6\u304b\u3089\u53f3"},layer:{content:"\u65b0\u3057\u3044\u30ec\u30a4\u30e4\u30fc...","absolute_desc":"\u7d76\u5bfe\u4f4d\u7f6e\u306e\u6307\u5b9a\u3092\u5207\u66ff","backward_desc":"\u80cc\u9762\u3078\u79fb\u52d5","forward_desc":"\u524d\u9762\u3078\u79fb\u52d5","insertlayer_desc":"\u65b0\u3057\u3044\u30ec\u30a4\u30e4\u30fc\u3092\u633f\u5165"},save:{"save_desc":"\u4fdd\u5b58","cancel_desc":"\u3059\u3079\u3066\u306e\u5909\u66f4\u3092\u53d6\u308a\u6d88\u3057"},nonbreaking:{"nonbreaking_desc":"\u6539\u884c\u3057\u306a\u3044\u30b9\u30da\u30fc\u30b9\u6587\u5b57(NBSP)\u3092\u633f\u5165"},iespell:{download:"ieSpell\u304c\u306a\u3044\u3088\u3046\u3067\u3059\u3002\u4eca\u3059\u3050\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u304b\uff1f","iespell_desc":"\u30b9\u30da\u30eb\u30c1\u30a7\u30c3\u30af"},advhr:{"advhr_desc":"\u6c34\u5e73\u7dda\u3092\u633f\u5165","delta_height":"","delta_width":""},emotions:{"emotions_desc":"\u8868\u60c5\u30a2\u30a4\u30b3\u30f3","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"\u691c\u7d22\u3068\u7f6e\u63db","search_desc":"\u691c\u7d22","delta_width":"","delta_height":""},advimage:{"image_desc":"\u753b\u50cf\u306e\u633f\u5165\u3084\u7de8\u96c6","delta_width":"","delta_height":""},advlink:{"link_desc":"\u30ea\u30f3\u30af\u306e\u633f\u5165\u3084\u7de8\u96c6","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"\u5c5e\u6027\u306e\u633f\u5165\u3084\u7de8\u96c6","ins_desc":"\u633f\u5165","del_desc":"\u524a\u9664","acronym_desc":"\u982d\u5b57\u8a9e","abbr_desc":"\u7565\u8a9e","cite_desc":"\u5f15\u7528","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"CSS\u306e\u7de8\u96c6","delta_height":"","delta_width":""},paste:{"plaintext_mode":"\u30c6\u30ad\u30b9\u30c8\u5f62\u5f0f\u306e\u30e2\u30fc\u30c9\u3067\u8cbc\u308a\u4ed8\u3051\u307e\u3059\u3002\u3082\u3046\u4e00\u5ea6\u30af\u30ea\u30c3\u30af\u3059\u308b\u3068\u3001\u901a\u5e38\u306e\u8cbc\u308a\u4ed8\u3051\u306e\u30e2\u30fc\u30c9\u306b\u623b\u3057\u307e\u3059\u3002","plaintext_mode_sticky":"\u30c6\u30ad\u30b9\u30c8\u5f62\u5f0f\u306e\u30e2\u30fc\u30c9\u3067\u8cbc\u308a\u4ed8\u3051\u307e\u3059\u3002\u3082\u3046\u4e00\u5ea6\u30af\u30ea\u30c3\u30af\u3059\u308b\u3068\u3001\u901a\u5e38\u306e\u8cbc\u308a\u4ed8\u3051\u306e\u30e2\u30fc\u30c9\u306b\u623b\u3057\u307e\u3059\u3002\u4f55\u304b\u8cbc\u308a\u4ed8\u3051\u308b\u3068\u3001\u305d\u306e\u5f8c\u306f\u901a\u5e38\u306e\u8cbc\u308a\u4ed8\u3051\u30e2\u30fc\u30c9\u306b\u623b\u308a\u307e\u3059\u3002","selectall_desc":"\u3059\u3079\u3066\u9078\u629e","paste_word_desc":"Word\u304b\u3089\u8cbc\u308a\u4ed8\u3051","paste_text_desc":"\u30c6\u30ad\u30b9\u30c8\u5f62\u5f0f\u3067\u8cbc\u308a\u4ed8\u3051"},"paste_dlg":{"word_title":"Ctrl V(\u30ad\u30fc\u30dc\u30fc\u30c9)\u3092\u4f7f\u7528\u3057\u3066\u3001\u30c6\u30ad\u30b9\u30c8\u3092\u30a6\u30a3\u30f3\u30c9\u30a6\u306b\u8cbc\u308a\u4ed8\u3051\u3066\u304f\u3060\u3055\u3044\u3002","text_linebreaks":"\u6539\u884c\u3092\u4fdd\u6301","text_title":"Ctrl V(\u30ad\u30fc\u30dc\u30fc\u30c9)\u3092\u4f7f\u7528\u3057\u3066\u3001\u30c6\u30ad\u30b9\u30c8\u3092\u30a6\u30a3\u30f3\u30c9\u30a6\u306b\u8cbc\u308a\u4ed8\u3051\u3066\u304f\u3060\u3055\u3044\u3002"},table:{cell:"\u30bb\u30eb",col:"\u5217",row:"\u884c",del:"\u8868\u3092\u524a\u9664","copy_row_desc":"\u884c\u3092\u30b3\u30d4\u30fc","cut_row_desc":"\u884c\u3092\u5207\u308a\u53d6\u308a","paste_row_after_desc":"\u4e0b\u306b\u884c\u3092\u8cbc\u308a\u4ed8\u3051","paste_row_before_desc":"\u4e0a\u306b\u884c\u3092\u8cbc\u308a\u4ed8\u3051","props_desc":"\u8868\u306e\u5c5e\u6027","cell_desc":"\u30bb\u30eb\u306e\u5c5e\u6027","row_desc":"\u884c\u306e\u5c5e\u6027","merge_cells_desc":"\u30bb\u30eb\u3092\u7d50\u5408","split_cells_desc":"\u30bb\u30eb\u306e\u7d50\u5408\u3092\u89e3\u9664","delete_col_desc":"\u5217\u3092\u524a\u9664","col_after_desc":"\u53f3\u306b\u5217\u3092\u633f\u5165","col_before_desc":"\u5de6\u306b\u5217\u3092\u633f\u5165","delete_row_desc":"\u884c\u3092\u524a\u9664","row_after_desc":"\u4e0b\u306b\u884c\u3092\u633f\u5165","row_before_desc":"\u4e0a\u306b\u884c\u3092\u633f\u5165",desc:"\u8868\u306e\u633f\u5165","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"\u4fdd\u5b58\u3057\u305f\u30c7\u30fc\u30bf\u3092\u5fa9\u5143\u3059\u308b\u3068\u3001\u73fe\u5728\u306e\u7de8\u96c6\u5185\u5bb9\u3092\u3059\u3079\u3066\u5931\u3044\u307e\u3059\u3002\n\n\u672c\u5f53\u306b\u4fdd\u5b58\u3057\u305f\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u8fbc\u307f\u307e\u3059\u304b?","restore_content":"\u81ea\u52d5\u4fdd\u5b58\u30c7\u30fc\u30bf\u3092\u5fa9\u5143","unload_msg":"\u4ed6\u306e\u30da\u30fc\u30b8\u306b\u79fb\u52d5\u3059\u308b\u3068\u3001\u5909\u66f4\u3092\u3059\u3079\u3066\u5931\u3044\u307e\u3059\u3002"},fullscreen:{desc:"\u5168\u753b\u9762"},media:{"delta_height":"",edit:"\u57cb\u3081\u8fbc\u307f\u30e1\u30c7\u30a3\u30a2\u306e\u7de8\u96c6",desc:"\u57cb\u3081\u8fbc\u307f\u30e1\u30c7\u30a3\u30a2\u306e\u633f\u5165\u3084\u7de8\u96c6","delta_width":""},fullpage:{desc:"\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u5c5e\u6027","delta_width":"","delta_height":""},template:{desc:"\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u633f\u5165"},visualchars:{desc:"\u5236\u5fa1\u6587\u5b57\u306e\u8868\u793a\u3092\u5207\u308a\u66ff\u3048"},spellchecker:{desc:"\u30b9\u30da\u30eb\u30c1\u30a7\u30c3\u30af\u306e\u4f7f\u7528\u3092\u5207\u308a\u66ff\u3048",menu:"\u30b9\u30da\u30eb\u30c1\u30a7\u30c3\u30af\u306e\u8a2d\u5b9a","ignore_word":"\u3053\u306e\u5358\u8a9e\u3092\u7121\u8996","ignore_words":"\u3059\u3079\u3066\u7121\u8996",langs:"\u8a00\u8a9e",wait:"\u3057\u3070\u3089\u304f\u304a\u5f85\u3061\u304f\u3060\u3055\u3044...",sug:"\u5019\u88dc","no_sug":"\u5019\u88dc\u306a\u3057","no_mpell":"\u30b9\u30da\u30eb\u306e\u8aa4\u308a\u306f\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002","learn_word":"\u3053\u306e\u5358\u8a9e\u3092\u5b66\u7fd2"},pagebreak:{desc:"\u5370\u5237\u7528\u306e\u6539\u30da\u30fc\u30b8\u3092\u633f\u5165"},advlist:{types:"\u7a2e\u985e",def:"\u30c7\u30d5\u30a9\u30eb\u30c8","lower_alpha":"a b c ...","lower_greek":"\u03b1 \u03b2 \u03b3 \u2026","lower_roman":"i ii iii ...","upper_alpha":"A B C ...","upper_roman":"I II III ...",circle:"\u767d\u4e38\uff08circle\uff09",disc:"\u9ed2\u4e38\uff08disc\uff09",square:"\u56db\u89d2\uff08square\uff09"},colors:{"333300":"\u6fc3\u3044\u30aa\u30ea\u30fc\u30d6\u8272","993300":"\u6fc3\u3044\u30aa\u30ec\u30f3\u30b8\u8272","000000":"\u9ed2\u8272","003300":"\u6fc3\u3044\u7dd1\u8272","003366":"\u6fc3\u3044\u7fa4\u9752\u8272","000080":"\u6fc3\u7d3a\u8272","333399":"\u85cd\u8272","333333":"\u3068\u3066\u3082\u6fc3\u3044\u7070\u8272","800000":"\u6817\u8272",FF6600:"\u6a59\u8272","808000":"\u30aa\u30ea\u30fc\u30d6\u8272","008000":"\u7dd1\u8272","008080":"\u7dd1\u304c\u304b\u304b\u3063\u305f\u9752\u8272","0000FF":"\u9752\u8272","666699":"\u7d0d\u6238\u8272","808080":"\u7070\u8272",FF0000:"\u8d64",FF9900:"\u7425\u73c0\u8272","99CC00":"\u9ec4\u7dd1\u8272","339966":"\u6d77\u7dd1\u8272","33CCCC":"\u9752\u7dd1\u8272","3366FF":"\u85e4\u7d2b\u8272","800080":"\u7d2b\u8272","999999":"\u4e2d\u304f\u3089\u3044\u306e\u7070\u8272",FF00FF:"\u8d64\u7d2b\u8272",FFCC00:"\u91d1\u8272",FFFF00:"\u9ec4\u8272","00FF00":"\u30e9\u30a4\u30e0\u8272","00FFFF":"\u6c34\u8272","00CCFF":"\u7a7a\u8272","993366":"\u8336\u8272",C0C0C0:"\u9280\u8272",FF99CC:"\u30d4\u30f3\u30af\u8272",FFCC99:"\u6843\u8272",FFFF99:"\u8584\u3044\u9ec4\u8272",CCFFCC:"\u6de1\u7dd1\u8272",CCFFFF:"\u6de1\u9752\u7dd1\u8272","99CCFF":"\u8584\u3044\u6c34\u8272",CC99FF:"\u6fc3\u3044\u8d64\u7d2b\u8272",FFFFFF:"\u767d\u8272"},aria:{"rich_text_area":"\u30ea\u30c3\u30c1\u30c6\u30ad\u30b9\u30c8\u30a8\u30ea\u30a2"},wordcount:{words:"\u5358\u8a9e\u306e\u6570"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/ka.js b/program/js/tiny_mce/langs/ka.js
deleted file mode 100644
index e7b73a354..000000000
--- a/program/js/tiny_mce/langs/ka.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({ka:{common:{"more_colors":"\u10e1\u10ee\u10d5\u10d0 \u10e4\u10d4\u10e0\u10d4\u10d1\u10d8...","invalid_data":"\u10e8\u10d4\u10ea\u10d3\u10dd\u10db\u10d0: \u10e8\u10d4\u10e7\u10d5\u10d0\u10dc\u10d8\u10da\u10d8\u10d0 \u10d0\u10e0\u10d0 \u10e1\u10ec\u10dd\u10e0\u10d8 \u10db\u10dc\u10d8\u10e8\u10d5\u10dc\u10da\u10d4\u10dd\u10d1\u10d0, \u10d8\u10e1 \u10db\u10dd\u10dc\u10d8\u10e1\u10dc\u10e3\u10da\u10d8\u10d0 \u10ec\u10d8\u10d7\u10da\u10d0\u10d3.","popup_blocked":"\u0411\u043b\u043e\u043a\u0438\u0440\u0430\u0442\u043e\u0440 \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0438\u0445 \u043e\u043a\u043e\u043d \u0437\u0430\u043a\u0440\u044b\u043b \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435 \u043e\u043a\u043d\u043e. \u0414\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b, \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0443 \u043d\u0430 \u044d\u0442\u043e\u043c \u0441\u0430\u0439\u0442\u0435.","clipboard_no_support":"\u10d0\u10e0 \u10d0\u10e5\u10d5\u10e1 \u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 \u10d1\u10e0\u10d0\u10e3\u10d6\u10d4\u10e0\u10d8\u10e1 \u10db\u10ee\u10d0\u10e0\u10d3\u10d0\u10ed\u10d4\u10e0\u10d0. \u10d2\u10d0\u10db\u10dd\u10d8\u10e7\u10d4\u10dc\u10d4\u10d7 \u10d9\u10da\u10d0\u10d5\u10d8\u10d0\u10e2\u10e3\u10e0\u10e3\u10da\u10d8 \u10e8\u10d4\u10db\u10dd\u10d9\u10da\u10d4\u10d1\u10d4\u10d1\u10d8.","clipboard_msg":"\u10d9\u10dd\u10de\u10d8\u10e0\u10d4\u10d1\u10d0, \u10d0\u10db\u10dd\u10ed\u10e0\u10d0 \u10d3\u10d0 \u10e9\u10d0\u10e1\u10db\u10d0 Firefox-\u10e8\u10d8 \u10d0\u10e0 \u10db\u10e3\u10e8\u10d0\u10dd\u10d1\u10e1.\\r\n\u10d2\u10e1\u10e3\u10e0\u10d7 \u10db\u10d8\u10d8\u10e6\u10dd\u10d7 \u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d8\u10d7\u10d8 \u10d8\u10dc\u10e4\u10dd\u10e0\u10db\u10d0\u10ea\u10d8\u10d0?","not_set":"- \u10d0\u10e0 \u10d0\u10e0\u10d8\u10e1 \u10d3\u10d0\u10e7\u10d4\u10dc\u10d4\u10d1\u10e3\u10da\u10d8 -","class_name":"\u10d9\u10da\u10d0\u10e1\u10d8",browse:"\u10d3\u10d0\u10d7\u10d5\u10d0\u10da\u10d8\u10d4\u10e0\u10d4\u10d1\u10d0",close:"\u10d3\u10d0\u10ee\u10e3\u10e0\u10d5\u10d0",cancel:"\u10d2\u10d0\u10e3\u10e5\u10db\u10d4\u10d1\u10d0",update:"\u10d2\u10d0\u10dc\u10d0\u10ee\u10da\u10d4\u10d1\u10d0",insert:"\u10e9\u10d0\u10e1\u10db\u10d0",apply:"\u10d2\u10d0\u10db\u10dd\u10e7\u10d4\u10dc\u10d4\u10d1\u10d0","edit_confirm":"\u10d2\u10d0\u10db\u10dd\u10d5\u10d8\u10e7\u10d4\u10dc\u10dd\u10d7 \u10d0\u10db \u10d5\u10d4\u10da\u10d8\u10e1\u10d7\u10d5\u10d8\u10e1 WYSIWYG \u10e0\u10d4\u10df\u10d8\u10db\u10d8?","invalid_data_number":"{#field} must be a number","invalid_data_min":"{#field} must be a number greater than {#min}","invalid_data_size":"{#field} must be a number or percentage",value:"(value)"},contextmenu:{full:"\u10e1\u10d8\u10d2\u10d0\u10dc\u10d4\u10d6\u10d4",right:"\u10db\u10d0\u10e0\u10ef\u10d5\u10d4\u10dc\u10d0 \u10d9\u10d8\u10d3\u10d4\u10d6\u10d4",center:"\u10ea\u10d4\u10dc\u10e2\u10e0\u10d6\u10d4",left:"\u10db\u10d0\u10e0\u10ea\u10ee\u10d4\u10dc\u10d0 \u10d9\u10d8\u10d3\u10d4\u10d6\u10d4",align:"\u10d2\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d0"},insertdatetime:{"day_short":"\u10d9\u10d5,\u10dd\u10e0\u10e8,\u10e1\u10d0\u10db\u10e8,\u10dd\u10d7\u10ee\u10e8,\u10ee\u10e3\u10d7,\u10de\u10d0\u10e0,\u10e8\u10d0\u10d1,\u10d9\u10d5","day_long":"\u10d9\u10d5\u10d8\u10e0\u10d0,\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8,\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8,\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8,\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8,\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10d8,\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8,\u10d9\u10d5\u10d8\u10e0\u10d0","months_short":"\u10d8\u10d0\u10dc,\u10d7\u10d4\u10d1,\u10db\u10d0\u10e0\u10e2,\u10d0\u10de\u10e0,\u10db\u10d0\u10d8\u10e1\u10d8,\u10d8\u10d5\u10dc,\u10d8\u10d5\u10da,\u10d0\u10d2\u10d5,\u10e1\u10d4\u10e5,\u10dd\u10e5\u10e2,\u10dc\u10dd\u10d4\u10db,\u10d3\u10d4\u10d9","months_long":"\u10d8\u10d0\u10dc\u10d5\u10d0\u10e0\u10d8,\u10d7\u10d4\u10d1\u10d4\u10e0\u10d5\u10d0\u10da\u10d8,\u10db\u10d0\u10e0\u10e2\u10d8,\u10d0\u10de\u10e0\u10d8\u10da\u10d8,\u10db\u10d0\u10d8\u10e1\u10d8,\u10d8\u10d5\u10dc\u10d8\u10e1\u10d8,\u10d8\u10d5\u10da\u10d8\u10e1\u10d8,\u10d0\u10d2\u10d5\u10d8\u10e1\u10e2\u10dd,\u10e1\u10d4\u10e5\u10e2\u10d4\u10db\u10d1\u10d4\u10e0\u10d8,\u10dd\u10e5\u10e2\u10dd\u10db\u10d1\u10d4\u10e0\u10d8,\u10dc\u10dd\u10d4\u10db\u10d1\u10d4\u10e0\u10d8,\u10d3\u10d4\u10d9\u10d4\u10db\u10d1\u10d4\u10e0\u10d8","inserttime_desc":"\u10d3\u10e0\u10dd\u10d8\u10e1 \u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0","insertdate_desc":"\u10d7\u10d0\u10e0\u10d8\u10e6\u10d8\u10e1 \u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0","time_fmt":"%H:%M:%S","date_fmt":"%d.%m.%Y"},print:{"print_desc":"\u10d1\u10d4\u10ed\u10d3\u10d5\u10d0"},preview:{"preview_desc":"\u10ec\u10d8\u10dc\u10d0\u10e1\u10ec\u10d0\u10e0\u10d8 \u10d3\u10d0\u10d7\u10d5\u10d0\u10da\u10d8\u10d4\u10e0\u10d4\u10d1\u10d0"},directionality:{"rtl_desc":"\u10db\u10d8\u10db\u10d0\u10e0\u10d7\u10e3\u10da\u10d4\u10d1\u10d0 \u10db\u10d0\u10e0\u10ef\u10d5\u10dc\u10d8\u10d3\u10d0\u10dc \u10db\u10d0\u10e0\u10ea\u10ee\u10dc\u10d8\u10d5","ltr_desc":"\u10db\u10d8\u10db\u10d0\u10e0\u10d7\u10e3\u10da\u10d4\u10d1\u10d0 \u10db\u10d0\u10e0\u10ea\u10ee\u10dc\u10d8\u10d3\u10d0\u10dc \u10db\u10d0\u10e0\u10ef\u10d5\u10dc\u10d8\u10d5"},layer:{content:"\u10d0\u10ee\u10d0\u10da\u10d8 \u10e8\u10e0\u10d4","absolute_desc":"\u10d0\u10d1\u10e1\u10dd\u10da\u10e3\u10e2\u10e3\u10e0\u10d8 \u10de\u10dd\u10d6\u10d8\u10ea\u10d8\u10e0\u10d4\u10d1\u10d0","backward_desc":"\u10e3\u10d9\u10d0\u10dc\u10d0 \u10de\u10da\u10d0\u10dc\u10d6\u10d4","forward_desc":"\u10ec\u10d8\u10dc\u10d0 \u10de\u10da\u10d0\u10dc\u10d6\u10d4","insertlayer_desc":"\u10e8\u10e0\u10d8\u10e1 \u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0"},save:{"save_desc":"\u10e8\u10d4\u10dc\u10d0\u10ee\u10d5\u10d0","cancel_desc":"\u10e7\u10d5\u10d4\u10da\u10d0 \u10ea\u10d5\u10da\u10d8\u10da\u10d4\u10d1\u10d8\u10e1 \u10d2\u10d0\u10e3\u10e5\u10db\u10d4\u10d1\u10d0"},nonbreaking:{"nonbreaking_desc":"\u10e3\u10ec\u10e7\u10d5\u10d4\u10e2\u10d8 \u10d3\u10d0\u10e8\u10dd\u10e0\u10d4\u10d1\u10d8\u10e1 \u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0"},iespell:{download:"ieSpell \u10d0\u10e0 \u10d0\u10e0\u10d8\u10e1 \u10dc\u10d0\u10de\u10dd\u10d5\u10dc\u10d8. \u10d2\u10e1\u10e3\u10e0\u10d7 \u10d3\u10d0\u10e7\u10d4\u10dc\u10d4\u10d1\u10d0?","iespell_desc":"\u10dd\u10e0\u10d7\u10dd\u10d2\u10e0\u10d0\u10e4\u10d8\u10d8\u10e1 \u10e8\u10d4\u10db\u10dd\u10ec\u10db\u10d4\u10d1\u10d0"},advhr:{"advhr_desc":"\u10d2\u10d0\u10db\u10e7\u10dd\u10e4\u10d8\u10e1 \u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0","delta_height":"","delta_width":""},emotions:{"emotions_desc":"\u10e1\u10db\u10d0\u10d8\u10da\u10d8\u10e1 \u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"\u10e8\u10d4\u10ea\u10d5\u10da\u10d0","search_desc":"\u10de\u10dd\u10d5\u10dc\u10d0","delta_width":"","delta_height":""},advimage:{"delta_width":"200","image_desc":"\u10d2\u10d0\u10db\u10dd\u10e1\u10d0\u10ee\u10e3\u10da\u10d4\u10d1\u10d8\u10e1 \u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0/\u10e0\u10d4\u10d3\u10d0\u10e5\u10e2\u10d8\u10e0\u10d4\u10d1\u10d0","delta_height":""},advlink:{"delta_width":"200","link_desc":"\u10d1\u10db\u10e3\u10da\u10d8\u10e1 \u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0/\u10e0\u10d4\u10d3\u10d0\u10e5\u10e2\u10d8\u10e0\u10d4\u10d1\u10d0","delta_height":""},xhtmlxtras:{"attribs_desc":"\u10d4\u10da\u10d4\u10db\u10d4\u10dc\u10e2\u10d8\u10e1 \u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0/\u10e8\u10d4\u10ea\u10d5\u10da\u10d0","ins_desc":"\u10e8\u10d4\u10ea\u10d5\u10da\u10d0","del_desc":"\u10ec\u10d0\u10e8\u10da\u10d0","acronym_desc":"\u10d0\u10d1\u10e0\u10d4\u10d5\u10d8\u10d0\u10ea\u10d8\u10d0","abbr_desc":"\u10e8\u10d4\u10db\u10dd\u10d9\u10da\u10d4\u10d1\u10d0","cite_desc":"\u10ea\u10d8\u10e2\u10d8\u10e0\u10d4\u10d1\u10d0","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"CSS \u10e1\u10e2\u10d8\u10da\u10d8\u10e1 \u10e0\u10d4\u10d3\u10d0\u10e5\u10e2\u10d8\u10e0\u10d4\u10d1\u10d0","delta_height":"","delta_width":""},paste:{"plaintext_mode":"Paste is now in plain text mode. Click again to toggle back to regular paste mode.","plaintext_mode_sticky":"Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode.","selectall_desc":"\u10e2\u10d5\u10d4\u10da\u10d0\u10e4\u10e0\u10d8\u10e1 \u10db\u10dd\u10dc\u10d8\u10e8\u10d5\u10dc\u10d0","paste_word_desc":"Word-\u10d8\u10d3\u10dc \u10e9\u10d0\u10e1\u10db\u10d0","paste_text_desc":"\u10e9\u10d0\u10e1\u10d5\u10d8 \u10e0\u10dd\u10d2\u10dd\u10e0\u10ea \u10e2\u10d4\u10e5\u10e1\u10e2\u10d8"},"paste_dlg":{"word_title":"\u0418\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1 \u10e9\u10d0\u10e1\u10d0\u10e1\u10db\u10d4\u10da\u10d0\u10d3 \u10d2\u10d0\u10db\u10dd\u10d8\u10e7\u10d4\u10dc\u10d4\u10d7 \u10d9\u10da\u10d0\u10d5\u10d8\u10d0\u10e2\u10e3\u10e0\u10e3\u10da\u10d8 \u10d9\u10dd\u10db\u10d1\u10d8\u10dc\u10d0\u10ea\u10d8\u10d0 CTRL+V.","text_linebreaks":"\u10d2\u10d0\u10d3\u10d0\u10e2\u10d0\u10dc\u10d8\u10da\u10d8 \u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d4\u10d1\u10d8\u10e1 \u10e8\u10d4\u10dc\u10d0\u10ee\u10d5\u10d0","text_title":"\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1 \u10e9\u10d0\u10e1\u10d0\u10e1\u10db\u10d4\u10da\u10d0\u10d3 \u10d2\u10d0\u10db\u10dd\u10d8\u10e7\u10d4\u10dc\u10d4\u10d7 \u10d9\u10da\u10d0\u10d5\u10d8\u10d0\u10e2\u10e3\u10e0\u10e3\u10da\u10d8 \u10d9\u10dd\u10db\u10d1\u10d8\u10dc\u10d0\u10ea\u10d8\u10d0 CTRL+V."},table:{"cellprops_delta_width":"30",cell:"\u10e3\u10ef\u10e0\u10d0",col:"\u10e1\u10d5\u10d4\u10e2\u10d8",row:"\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8",del:"\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10ec\u10d0\u10e8\u10da\u10d0","copy_row_desc":"\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10d9\u10dd\u10de\u10d8\u10e0\u10d4\u10d1\u10d0","cut_row_desc":"\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10d0\u10db\u10dd\u10ed\u10e0\u10d0","paste_row_after_desc":"\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10e5\u10d5\u10d4\u10db\u10dd\u10d7 \u10d3\u10d0\u10db\u10d4\u10e2\u10d4\u10d1\u10d0","paste_row_before_desc":"\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10d6\u10d4\u10db\u10dd\u10d7 \u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0","props_desc":"\u10ea\u10ee\u10e0\u10d8\u10da\u10d8\u10e1 \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d8\u10d4\u10d1\u10d8","cell_desc":"\u10e3\u10ef\u10e0\u10d8\u10e1 \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8","row_desc":"\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8","merge_cells_desc":"\u10e3\u10ef\u10e0\u10d4\u10d1\u10d8\u10e1 \u10d2\u10d0\u10d4\u10e0\u10d7\u10d8\u10d0\u10dc\u10d4\u10d1\u10d0","split_cells_desc":"\u10e3\u10ef\u10e0\u10d8\u10e1 \u10d2\u10d0\u10e7\u10dd\u10e4\u10d0","delete_col_desc":"\u10e1\u10d5\u10d4\u10e2\u10d8\u10e1 \u10ec\u10d0\u10e8\u10da\u10d0","col_after_desc":"\u10e1\u10d5\u10d4\u10e2\u10d8\u10e1 \u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0 \u10db\u10d0\u10e0\u10ef\u10d5\u10dc\u10d8\u10d5","col_before_desc":"\u10e1\u10d5\u10d4\u10e2\u10d8\u10e1 \u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0 \u10db\u10d0\u10e0\u10ea\u10ee\u10dc\u10d8\u10d5","delete_row_desc":"\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10ec\u10d0\u10e8\u10da\u10d0","row_after_desc":"\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0 \u10e5\u10d5\u10d4\u10db\u10dd\u10d7","row_before_desc":"\u10e1\u10e2\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0 \u10d6\u10d4\u10db\u10dd\u10d7",desc:"\u10ea\u10ee\u10e0\u10d8\u10da\u10d8\u10e1 \u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0/\u10e0\u10d4\u10d3\u10d0\u10e5\u10e2\u10d8\u10e0\u10d4\u10d1\u10d0","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"\u10e7\u10d5\u10d4\u10da\u10d0 \u10ea\u10d5\u10da\u10d8\u10da\u10d4\u10d1\u10d0 \u10d8\u10e5\u10dc\u10d4\u10d1\u10d0 \u10d3\u10d0\u10d9\u10d0\u10e0\u10d2\u10e3\u10da\u10d8.\n\n\u10d2\u10d0\u10dc\u10d5\u10d0\u10d2\u10e0\u10eb\u10dd\u10d7 \u10d0\u10d5\u10e0\u10dd\u10db\u10d0\u10e2\u10e3\u10e0\u10d0\u10d3 \u10d3\u10d0\u10db\u10d0\u10ee\u10e1\u10dd\u10d5\u10e0\u10d4\u10d1\u10e3\u10da\u10d8\u10e1 \u10d0\u10e6\u10d3\u10d2\u10d4\u10dc\u10d0?","restore_content":"\u10d0\u10d5\u10e2\u10dd\u10db\u10d0\u10e2\u10e3\u10e0\u10d0\u10d3 \u10d3\u10d0\u10db\u10d0\u10ee\u10e1\u10dd\u10d5\u10e0\u10d4\u10d1\u10e3\u10da\u10d8\u10e1 \u10d0\u10e6\u10d3\u10d2\u10d4\u10dc\u10d0","unload_msg":"\u10d7\u10e3 \u10d7\u10e5\u10d5\u10d4\u10dc \u10d3\u10d0\u10e2\u10dd\u10d5\u10d4\u10d1\u10d7 \u10db\u10dd\u10ea\u10d4\u10db\u10e3\u10da \u10d2\u10d5\u10d4\u10e0\u10d3\u10e1, \u10e7\u10d5\u10d4\u10da\u10d0 \u10ea\u10d5\u10da\u10d8\u10da\u10d4\u10d1\u10d0 \u10d8\u10e5\u10dc\u10d4\u10d1\u10d0 \u10d3\u10d0\u10d9\u10d0\u10e0\u10d2\u10e3\u10da\u10d8."},fullscreen:{desc:"\u10e1\u10e0\u10e3\u10da\u10d4\u10d9\u10e0\u10d0\u10dc\u10d8\u10d0\u10dc\u10d8 \u10e0\u10d4\u10df\u10d8\u10db\u10d8"},media:{edit:"\u10d9\u10da\u10d8\u10d9\u10d8\u10e1 \u10db\u10d0\u10ee\u10d0\u10e1\u10d8\u10d0\u10d7\u10d4\u10d1\u10da\u10d4\u10d1\u10d8",desc:"\u10d9\u10da\u10d8\u10de\u10d8\u10e1 \u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0/\u10e0\u10d4\u10d3\u10d0\u10e5\u10e2\u10d8\u10e0\u10d4\u10d1\u10d0","delta_height":"","delta_width":""},fullpage:{desc:"\u10d3\u10dd\u10d9\u10e3\u10db\u10d4\u10dc\u10e2\u10d8\u10e1 \u10db\u10d0\u10ee\u10d0\u10e1\u10d8\u10d0\u10d7\u10d4\u10d1\u10da\u10d4\u10d1\u10d8","delta_width":"","delta_height":""},template:{desc:"\u10e8\u10d0\u10d1\u10da\u10dd\u10dc\u10d8\u10e1 \u10d2\u10d0\u10db\u10dd\u10e7\u10d4\u10dc\u10d4\u10d1\u10d0"},visualchars:{desc:"\u10e7\u10d5\u10d4\u10da\u10d0 \u10dc\u10d8\u10e8\u10d0\u10dc\u10d8"},spellchecker:{desc:"\u10db\u10d0\u10e0\u10d7\u10da\u10ec\u10d4\u10e0\u10d0",menu:"\u10db\u10d0\u10e0\u10d7\u10da\u10ec\u10d4\u10e0\u10d8\u10e1 \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8","ignore_word":"\u10d2\u10d0\u10db\u10dd\u10d5\u10e2\u10dd\u10d5\u10dd\u10d7","ignore_words":"\u10d2\u10d0\u10db\u10dd\u10d5\u10e2\u10dd\u10d5\u10dd\u10d7 \u10e7\u10d5\u10d4\u10da\u10d0",langs:"\u10d4\u10dc\u10d4\u10d1\u10d8",wait:"\u10d2\u10d7\u10ee\u10dd\u10d5\u10d7, \u10d3\u10d0\u10d8\u10ea\u10d0\u10d3\u10dd\u10d7...",sug:"\u10d5\u10d0\u10e0\u10d8\u10d0\u10dc\u10e2\u10d4\u10d1\u10d8","no_sug":"\u10e3\u10d5\u10d0\u10e0\u10d8\u10d0\u10dc\u10e2\u10dd\u10d7","no_mpell":"\u10e8\u10d4\u10ea\u10d3\u10dd\u10db\u10d4\u10d1\u10d8 \u10d0\u10e6\u10db\u10dd\u10e9\u10d4\u10dc\u10d8\u10da\u10d8 \u10d0\u10e0 \u10d8\u10e7\u10dd.","learn_word":"Learn word"},pagebreak:{desc:"\u10d2\u10d5\u10d4\u10e0\u10d3\u10d8\u10e1 \u10d2\u10d0\u10db\u10e7\u10dd\u10e4\u10d8\u10e1 \u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0"},advlist:{types:"\u10e1\u10d8\u10db\u10d1\u10dd\u10da\u10dd\u10d4\u10d1\u10d8",def:"\u10e1\u10e2\u10d0\u10dc\u10d3\u10d0\u10e0\u10e2\u10e3\u10da\u10d8","lower_alpha":"\u10dc\u10e3\u10e1\u10ee\u10e3\u10e0\u10d8 \u10d0\u10e1\u10dd\u10d4\u10d1\u10d8","lower_greek":"\u10dc\u10e3\u10e1\u10ee\u10e3\u10e0\u10d8 \u10d1\u10d4\u10e0\u10eb\u10dc\u10e3\u10da\u10d8 \u10d0\u10e1\u10dd\u10d4\u10d1\u10d8","lower_roman":"\u10dc\u10e3\u10e1\u10ee\u10e3\u10e0\u10d8 \u10da\u10d0\u10d7\u10d8\u10dc\u10e3\u10e0\u10d8 \u10d0\u10e1\u10dd\u10d4\u10d1\u10d8","upper_alpha":"\u10d0\u10e1\u10dd\u10db\u10d7\u10d0\u10d5\u10e0\u10e3\u10da\u10d8 \u10d0\u10e1\u10dd\u10d4\u10d1\u10d8","upper_roman":"\u10d0\u10e1\u10dd\u10db\u10d7\u10d0\u10d5\u10e0\u10e3\u10da\u10d8 \u10da\u10d0\u10d7\u10d8\u10dc\u10e3\u10e0\u10d8 \u10d0\u10e1\u10dd\u10d4\u10d1\u10d8",circle:"\u10ec\u10e0\u10d4\u10d4\u10d1\u10d8",disc:"\u10d3\u10d8\u10e1\u10d9\u10d4\u10d1\u10d8",square:"\u10d9\u10d5\u10d0\u10d3\u10e0\u10d0\u10e2\u10d4\u10d1\u10d8"},colors:{"333300":"Dark olive","993300":"Burnt orange","000000":"Black","003300":"Dark green","003366":"Dark azure","000080":"Navy Blue","333399":"Indigo","333333":"Very dark gray","800000":"Maroon",FF6600:"Orange","808000":"Olive","008000":"Green","008080":"Teal","0000FF":"Blue","666699":"Grayish blue","808080":"Gray",FF0000:"Red",FF9900:"Amber","99CC00":"Yellow green","339966":"Sea green","33CCCC":"Turquoise","3366FF":"Royal blue","800080":"Purple","999999":"Medium gray",FF00FF:"Magenta",FFCC00:"Gold",FFFF00:"Yellow","00FF00":"Lime","00FFFF":"Aqua","00CCFF":"Sky blue","993366":"Brown",C0C0C0:"Silver",FF99CC:"Pink",FFCC99:"Peach",FFFF99:"Light yellow",CCFFCC:"Pale green",CCFFFF:"Pale cyan","99CCFF":"Light sky blue",CC99FF:"Plum",FFFFFF:"White"},aria:{"rich_text_area":"Rich Text Area"},wordcount:{words:"Words"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/ko.js b/program/js/tiny_mce/langs/ko.js
deleted file mode 100644
index e9b2cc9ee..000000000
--- a/program/js/tiny_mce/langs/ko.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({ko:{common:{"more_colors":"\uadf8 \uc678\uc758 \uc0c9","invalid_data":"\uc624\ub958: \ubd80\uc801\ud569\ud55c \uac12\uc774 \uc785\ub825\ub418\uc5b4 \ube68\uac04\uc0c9\uc73c\ub85c \ud45c\uc2dc\ub418\uc5c8\uc2b5\ub2c8\ub2e4.","popup_blocked":"\ud504\ub85c\uadf8\ub7a8 \uae30\ub2a5\uc744 \uc704\ud55c \ucc3d\uc744 \uc5f4\ub824\uace0 \ud588\uc73c\ub098 \ud31d\uc5c5 \ucc28\ub2e8 \uae30\ub2a5\uc73c\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uac8c\ub41c \uac83 \uac19\uc2b5\ub2c8\ub2e4. \ubaa8\ub4e0 \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud558\uc2dc\ub824\uba74 \uc774 \uc2f8\uc774\ud2b8\uc758 \ud31d\uc5c5 \ucc28\ub2e8\uc744 \ud574\uc81c\ud558\uc154\uc57c \ud569\ub2c8\ub2e4.","clipboard_no_support":"\ube0c\ub77c\uc6b0\uc800\uc5d0\uc11c \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc73c\ubbc0\ub85c \ub300\uc2e0 \ub2e8\ucd95\ud0a4\ub97c \uc0ac\uc6a9\ud574\uc8fc\uc138\uc694.","clipboard_msg":"Mozilla \ubc0fFirefox\uc5d0\uc11c\ub294 \ubcf5\uc0ac/\uc798\ub77c\ub0b4\uae30/\ubd99\uc774\uae30\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.\n\uc774 \ubb38\uc81c\uc5d0 \ub300\ud574 \ub354 \uc790\uc138\ud55c \uc0ac\ud56d\uc744 \ubcf4\uc2dc\uaca0\uc2b5\ub2c8\uae4c?","not_set":"-- \ubbf8\uc124\uc815 --","class_name":"\ud074\ub798\uc2a4",browse:"\ucc3e\uc544\ubcf4\uae30",close:"\ub2eb\uae30",cancel:"\ucde8\uc18c",update:"\uac31\uc2e0",insert:"\uc0bd\uc785",apply:"\uc801\uc6a9","edit_confirm":"\uc774 \ud14d\uc2a4\ud2b8 \uc601\uc5ed\uc5d0 WYSIWYG \ubaa8\ub4dc\ub97c \uc0ac\uc6a9\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?","invalid_data_number":"{#field}\ub294 \uc22b\uc790\uc5ec\uc57c \ud569\ub2c8\ub2e4","invalid_data_min":"{#field}\ub294 {#min}\ubcf4\ub2e4 \ud070 \uc218\uc5ec\uc57c \ud569\ub2c8\ub2e4","invalid_data_size":"{#field}\ub294 \uc22b\uc790\ub098 \ubc31\ubd84\uc728\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4",value:"(\uac12)"},contextmenu:{full:"\uc591\ucabd \ub9de\ucda4",right:"\uc624\ub978\ucabd \ub9de\ucda4",center:"\uac00\uc6b4\ub370 \ub9de\ucda4",left:"\uc67c\ucabd \ub9de\ucda4",align:"\uc904 \ub9de\ucda4"},insertdatetime:{"day_short":"\uc77c,\uc6d4,\ud654,\uc218,\ubaa9,\uae08,\ud1a0,\uc77c","day_long":"\uc77c\uc694\uc77c,\uc6d4\uc694\uc77c,\ud654\uc694\uc77c,\uc218\uc694\uc77c,\ubaa9\uc694\uc77c,\uae08\uc694\uc77c,\ud1a0\uc694\uc77c,\uc77c\uc694\uc77c","months_short":"1,2,3,4,5,6,7,8,9,10,11,12","months_long":"1\uc6d4,2\uc6d4,3\uc6d4,4\uc6d4,5\uc6d4,6\uc6d4,7\uc6d4,8\uc6d4,9\uc6d4,10\uc6d4,11\uc6d4,12\uc6d4","inserttime_desc":"\uc2dc\uac04 \uc0bd\uc785","insertdate_desc":"\ub0a0\uc9dc \uc0bd\uc785","time_fmt":"%H:%M:%S","date_fmt":"%Y-%m-%d"},print:{"print_desc":"\uc778\uc1c4"},preview:{"preview_desc":"\ubbf8\ub9ac \ubcf4\uae30"},directionality:{"rtl_desc":"\ubb38\uc790\ubc29\ud5a5\uc744 \uc624\ub978\ucabd\uc5d0\uc11c \uc67c\ucabd\uc73c\ub85c","ltr_desc":"\ubb38\uc790\ubc29\ud5a5\uc744 \uc67c\ucabd\uc5d0\uc11c \uc624\ub978\ucabd\uc73c\ub85c"},layer:{content:"\uc0c8 \ub808\uc774\uc5b4...","absolute_desc":"\uc808\ub300 \uc704\uce58 \ubc29\uc2dd\uc73c\ub85c \uc804\ud658","backward_desc":"\ub4a4\ub85c \uc774\ub3d9","forward_desc":"\uc55e\uc73c\ub85c \uc774\ub3d9","insertlayer_desc":"\uc0c8 \ub808\uc774\uc5b4 \uc0bd\uc785"},save:{"save_desc":"\uc800\uc7a5","cancel_desc":"\ubcc0\uacbd \ub0b4\uc6a9 \uc804\ubd80 \ucde8\uc18c"},nonbreaking:{"nonbreaking_desc":"\uc904\ubc14\uafc8\ub418\uc9c0 \uc54a\ub294 \ube48\uce78 \uc0bd\uc785"},iespell:{download:"ieSpell\uc774 \ubc1c\uacac\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.\n\uc778\uc2a4\ud1a8 \ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?","iespell_desc":"\ucca0\uc790 \uac80\uc0ac"},advhr:{"advhr_desc":"\uad6c\ubd84\uc120 \uc0bd\uc785","delta_height":"","delta_width":""},emotions:{"emotions_desc":"\uc774\ubaa8\ud2f0\ucf58","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"\ucc3e\uae30/\ubc14\uafb8\uae30","search_desc":"\ucc3e\uae30","delta_width":"","delta_height":""},advimage:{"image_desc":"\uc774\ubbf8\uc9c0 \uc0bd\uc785/\ud3b8\uc9d1","delta_width":"","delta_height":""},advlink:{"link_desc":"\ub9c1\ud06c \uc0bd\uc785/\ud3b8\uc9d1","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_delta_height":"","attribs_desc":"\uc18d\uc131 \uc0bd\uc785/\ud3b8\uc9d1","ins_desc":"\uc0bd\uc785","del_desc":"\uc0ad\uc81c","acronym_desc":"\uba38\ub9bf\uae00\uc790","abbr_desc":"\uc57d\uc5b4","cite_desc":"\uc778\uc6a9","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"CSS \uc11c\uc2dd \ud3b8\uc9d1","delta_height":"","delta_width":""},paste:{"plaintext_mode":"\ubd99\uc5ec\ub123\uae30\uac00 \uc774\uc81c \ud3c9\ubb38 \ud14d\uc2a4\ud2b8 \ubaa8\ub4dc\uac00 \ub410\uc2b5\ub2c8\ub2e4. \ub2e4\uc2dc \ud074\ub9ad\ud558\uba74 \uc815\uc0c1 \ubd99\uc5ec\ub123\uae30 \ubaa8\ub4dc\ub85c \ub3cc\uc544\uac11\ub2c8\ub2e4.","plaintext_mode_sticky":"\ubd99\uc5ec\ub123\uae30\uac00 \uc774\uc81c \ud3c9\ubb38 \ud14d\uc2a4\ud2b8 \ubaa8\ub4dc\uac00 \ub410\uc2b5\ub2c8\ub2e4. \ub2e4\uc2dc \ud074\ub9ad\ud558\uba74 \uc815\uc0c1 \ubd99\uc5ec\ub123\uae30 \ubaa8\ub4dc\ub85c \ub3cc\uc544\uac11\ub2c8\ub2e4. \ubd99\uc5ec\ub123\uae30\ub97c \ud558\uc2dc\uba74 \uc815\uc0c1 \ubd99\uc5ec\ub123\uae30 \ubaa8\ub4dc\ub85c \ub3cc\uc544\uac11\ub2c8\ub2e4.","selectall_desc":"\ubaa8\ub450 \uc120\ud0dd","paste_word_desc":"Word\ub85c\ubd80\ud130 \ubd99\uc5ec\ub123\uae30","paste_text_desc":"\ud3c9\ubb38 \ud14d\uc2a4\ud2b8\ub85c \ubd99\uc5ec\ub123\uae30"},"paste_dlg":{"word_title":"\ud0a4\ubcf4\ub4dc\uc5d0\uc11c Ctrl-V\ub97c \uc0ac\uc6a9\ud558\uba74 \ud14d\uc2a4\ud2b8\ub97c \ucc3d\uc5d0 \ubd99\uc5ec\ub123\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.","text_linebreaks":"\uc904\ubc14\uafc8 \uc720\uc9c0","text_title":"\ud0a4\ubcf4\ub4dc\uc5d0\uc11c Ctrl-V\ub97c \uc0ac\uc6a9\ud558\uba74 \ud14d\uc2a4\ud2b8\ub97c \ucc3d\uc5d0 \ubd99\uc5ec\ub123\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4."},table:{cell:"\uc140",col:"\uc5f4",row:"\ud589",del:"\ud45c \uc0ad\uc81c","copy_row_desc":"\ud589 \ubcf5\uc0ac","cut_row_desc":"\ud589 \uc798\ub77c\ub0b4\uae30","paste_row_after_desc":"\uc544\ub798\uc5d0 \ud589 \ubd99\uc5ec\ub123\uae30","paste_row_before_desc":"\uc704\uc5d0 \ud589 \ubd99\uc5ec\ub123\uae30","props_desc":"\ud45c \uc18d\uc131","cell_desc":"\uc140 \uc18d\uc131","row_desc":"\ud589 \uc18d\uc131","merge_cells_desc":"\uc140 \ubcd1\ud569","split_cells_desc":"\ubcd1\ud569\ub41c \uc140 \ubd84\ub9ac","delete_col_desc":"\uc5f4 \uc0ad\uc81c","col_after_desc":"\ub4a4\uc5d0 \uc5f4 \uc0bd\uc785","col_before_desc":"\uc55e\uc5d0 \uc5f4 \uc0bd\uc785","delete_row_desc":"\ud589 \uc0ad\uc81c","row_after_desc":"\uc544\ub798\uc5d0 \ud589 \uc0bd\uc785","row_before_desc":"\uc704\uc5d0 \ud589 \uc0bd\uc785",desc:"\ud45c \uc0bd\uc785/\ud3b8\uc9d1","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"\uc800\uc7a5\ub41c \ub0b4\uc6a9\uc744 \ubcf5\uad6c\ud558\uba74 \ud604\uc7ac\uc758 \ub0b4\uc6a9\uc740 \uc0ad\uc81c\ub429\ub2c8\ub2e4.\n\n\uc815\ub9d0 \uc800\uc7a5\ub41c \ub0b4\uc6a9\uc744 \ubcf5\uad6c\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?","restore_content":"\uc790\ub3d9 \uc800\uc7a5\ub41c \ub0b4\uc6a9 \ubcf5\uad6c","unload_msg":"\ub2e4\ub978 \ud398\uc774\uc9c0\ub85c \uc774\ub3d9\ud558\uba74 \ud3b8\uc9d1\ud55c \ub0b4\uc6a9\uc774 \ucde8\uc18c\ub429\ub2c8\ub2e4."},fullscreen:{desc:"\uc804\uccb4 \ud654\uba74 \ubaa8\ub4dc \uc804\ud658"},media:{edit:"\ubbf8\ub514\uc5b4 \ud3b8\uc9d1",desc:"\ubbf8\ub514\uc5b4 \uc0bd\uc785/\ud3b8\uc9d1","delta_height":"","delta_width":""},fullpage:{desc:"\ubb38\uc11c \uc18d\uc131","delta_width":"","delta_height":""},template:{desc:"\ubbf8\ub9ac \uc815\uc758\ub41c \ud15c\ud50c\ub9bf \uc0bd\uc785"},visualchars:{desc:"\uc81c\uc5b4 \ubb38\uc790 \ud45c\uc2dc \uc804\ud658"},spellchecker:{desc:"\uc2a4\ud3a0\ub9c1 \uac80\uc0ac \uc791\ub3d9 \uc804\ud658",menu:"\uc2a4\ud3a0\ub9c1 \uac80\uc0ac \uc124\uc815","ignore_word":"\ub2e8\uc5b4 \ubb34\uc2dc","ignore_words":"\ubaa8\ub450 \ubb34\uc2dc",langs:"\uc5b8\uc5b4",wait:"\uae30\ub2e4\ub824 \uc8fc\uc138\uc694...",sug:"\ud6c4\ubcf4","no_sug":"\ud6c4\ubcf4 \uc5c6\uc74c","no_mpell":"\uc624\ud0c8\uc790\uac00 \ubc1c\uacac\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.","learn_word":"\ub2e8\uc5b4 \uae30\uc5b5"},pagebreak:{desc:"\uc778\uc1c4\uc6a9\uc73c\ub85c \ud398\uc774\uc9c0 \ub098\ub214"},advlist:{types:"\uc885\ub958",def:"\uae30\ubcf8","lower_alpha":"\uc601\ubb38 \uc18c\ubb38\uc790","lower_greek":"\uadf8\ub9ac\uc2a4\uc5b4 \uc18c\ubb38\uc790","lower_roman":"\ub85c\ub9c8\uc790 \uc18c\ubb38\uc790","upper_alpha":"\uc601\ubb38 \ub300\ubb38\uc790","upper_roman":"\ub85c\ub9c8\uc790 \ub300\ubb38\uc790",circle:"\uc18d\uc774 \ube48 \uc6d0",disc:"\uc18d\uc774 \ucc2c \uc6d0",square:"\uc0ac\uac01\ud615"},colors:{"333300":"Dark olive","993300":"Burnt orange","000000":"Black","003300":"Dark green","003366":"Dark azure","000080":"Navy Blue","333399":"Indigo","333333":"Very dark gray","800000":"Maroon",FF6600:"Orange","808000":"Olive","008000":"Green","008080":"Teal","0000FF":"Blue","666699":"Grayish blue","808080":"Gray",FF0000:"Red",FF9900:"Amber","99CC00":"Yellow green","339966":"Sea green","33CCCC":"Turquoise","3366FF":"Royal blue","800080":"Purple","999999":"Medium gray",FF00FF:"Magenta",FFCC00:"Gold",FFFF00:"Yellow","00FF00":"Lime","00FFFF":"Aqua","00CCFF":"Sky blue","993366":"Brown",C0C0C0:"Silver",FF99CC:"Pink",FFCC99:"Peach",FFFF99:"Light yellow",CCFFCC:"Pale green",CCFFFF:"Pale cyan","99CCFF":"Light sky blue",CC99FF:"Plum",FFFFFF:"White"},aria:{"rich_text_area":"Rich Text Area"},wordcount:{words:"\ub2e8\uc5b4:"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/lt.js b/program/js/tiny_mce/langs/lt.js
deleted file mode 100644
index e11867190..000000000
--- a/program/js/tiny_mce/langs/lt.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({lt:{common:{"more_colors":"Daugiau spalv\u0173","invalid_data":"Klaida: Blogai \u012fvestos reik\u0161m\u0117s, kurios pa\u017eym\u0117tos raudonai.","popup_blocked":"Atsipra\u0161ome, ta\u010diau pasteb\u0117jome, kad j\u016bs\u0173 i\u0161kylan\u010di\u0173 lang\u0173 blokavimo programa i\u0161jung\u0117 lang\u0105, kuris teikia aplikacijai funkcionalum\u0105. Tur\u0117tum\u0117te atjungti i\u0161kylan\u010di\u0173 lang\u0173 blokavim\u0105 \u0161iam tinklalapiui, kad i\u0161naudotum\u0117te visas galimybes.","clipboard_no_support":"\u0160i nar\u0161ykl\u0117 nepalaiko \u0161io veikimo, tod\u0117l naudokite klaviat\u016bros spar\u010diuosius klavi\u0161us.","clipboard_msg":"Kopijavimas/i\u0161kirpimas/\u012fd\u0117jimas paspaudus \u0161\u012f mygtuk\u0105 negalimas Mozilla ir Firefox nar\u0161ykl\u0117se.\nNukopijuoti galima paspaudus: Ctrl + C, i\u0161kirpti: Ctrl + X, \u012fd\u0117ti: Ctrl + V.\nAr norite daugiau informacijos apie \u0161i\u0105 problem\u0105?","not_set":"-- Nenurodyta --","class_name":"Klas\u0117",browse:"Nar\u0161yti",close:"U\u017everti",cancel:"Atsisakyti",update:"Atnaujinti",insert:"\u012eterpti",apply:"Taikyti","edit_confirm":"Ar norite naudoti tekst\u0173 redaktoriaus re\u017eim\u0105 \u0161iam teksto redagavimo langui?","invalid_data_number":"{#field} turi b\u016bti skai\u010dius","invalid_data_min":"{#field} turi b\u016bti skai\u010dius didesnis nei {#min}","invalid_data_size":"{#field} turi b\u016bti skai\u010dius arba procentai",value:"(value)"},contextmenu:{full:"I\u0161 abiej\u0173 pusi\u0173",right:"De\u0161in\u0117je",center:"Centre",left:"Kair\u0117je",align:"Lygiavimas"},insertdatetime:{"day_short":"Sekm,Pirm,Antr,Tre\u010d,Ketv,Penk,\u0160e\u0161t,Sekm","day_long":"Sekmadienis,Pirmadienis,Antradienis,Tre\u010diadienis,Ketvirtadienis,Penktadienis,\u0160e\u0161tadienis,Sekmadienis","months_short":"Sau,Vas,Kov,Bal,Geg,Bir,Lie,Rugpj,Rugs,Spa,Lapkr,Gruo","months_long":"Sausis,Vasaris,Kovas,Balandis,Gegu\u017e\u0117,Bir\u017eelis,Liepa,Rugpj\u016btis,Rugs\u0117jis,Spalis,Lapkritis,Gruodis","inserttime_desc":"\u012eterpti laik\u0105","insertdate_desc":"\u012eterpti dat\u0105","time_fmt":"%H:%M:%S","date_fmt":"%Y-%m-%d"},print:{"print_desc":"Spausdinti"},preview:{"preview_desc":"Per\u017ei\u016bra"},directionality:{"rtl_desc":"Kryptis i\u0161 de\u0161in\u0117s \u012f kair\u0119","ltr_desc":"Kryptis i\u0161 kair\u0117s \u012f de\u0161in\u0119"},layer:{content:"Naujas sluoksnis...","absolute_desc":"Perjungti absoliut\u0173 pozicionavim\u0105","backward_desc":"Perkelti atgal","forward_desc":"Perkelti \u012f priek\u012f","insertlayer_desc":"\u012eterpti nauj\u0105 sluoksn\u012f"},save:{"save_desc":"I\u0161saugoti","cancel_desc":"Atsisakyti vis\u0173 pakeitim\u0173"},nonbreaking:{"nonbreaking_desc":"\u012eterpti jungiamojo tarpo simbol\u012f"},iespell:{download:"ieSpell neaptiktas. Ar norite dabar j\u012f \u012fdiegti?","iespell_desc":"Paleisti ra\u0161ybos tikrintuv\u0119"},advhr:{"delta_width":"10","advhr_desc":"Horizontali linija","delta_height":""},emotions:{"emotions_desc":"Jaustukai","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"Ie\u0161koti/Pakeisti","delta_width":"10","delta_height":"20","search_desc":"Ie\u0161koti"},advimage:{"delta_width":"10","image_desc":"\u012eterpti/Redaguoti paveiksl\u0117l\u012f","delta_height":""},advlink:{"delta_width":"10","link_desc":"\u012eterpti/Redaguoti nuorod\u0105","delta_height":""},xhtmlxtras:{"attribs_delta_width":"10","ins_delta_width":"10","del_delta_width":"10","acronym_delta_width":"10","abbr_delta_width":"10","cite_delta_width":"10","attribs_desc":"\u012eterpti/Redaguoti atributus","ins_desc":"\u012eterpimas","del_desc":"Panaikinimas","acronym_desc":"Akronimas","abbr_desc":"Santrumpa","cite_desc":"Citavimas","attribs_delta_height":"","ins_delta_height":"","del_delta_height":"","acronym_delta_height":"","abbr_delta_height":"","cite_delta_height":""},style:{"delta_width":"40",desc:"Redaguoti CSS stili\u0173","delta_height":""},paste:{"plaintext_mode":"Paste is now in plain text mode. Click again to toggle back to regular paste mode.","plaintext_mode_sticky":"Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode.","selectall_desc":"Visk\u0105 pa\u017eym\u0117ti","paste_word_desc":"\u012ed\u0117ti i\u0161 Word","paste_text_desc":"\u012ed\u0117ti kaip paprast\u0105 tekst\u0105"},"paste_dlg":{"word_title":"Naudokite CTRL+V tekstui \u012fd\u0117ti \u012f \u0161\u012f lang\u0105.","text_linebreaks":"Palikti eilu\u010di\u0173 l\u016b\u017eius","text_title":"Naudokite CTRL+V tekstui \u012fd\u0117ti \u012f \u0161\u012f lang\u0105."},table:{"merge_cells_delta_width":"10","table_delta_width":"10","cellprops_delta_width":"10","rowprops_delta_width":"10",cell:"Langelis",col:"Stulpelis",row:"Eilut\u0117",del:"\u0160alinti lentel\u0119","copy_row_desc":"Kopijuoti lentel\u0117s eilut\u0119","cut_row_desc":"I\u0161kirpti lentel\u0117s eilut\u0119","paste_row_after_desc":"\u012ed\u0117ti lentel\u0117s eilut\u0119 po","paste_row_before_desc":"\u012ed\u0117ti lentel\u0117s eilut\u0119 prie\u0161","props_desc":"Lentel\u0117s nustatymai","cell_desc":"Lentel\u0117s langelio nustatymai","row_desc":"Lentel\u0117s eilut\u0117s nustatymai","merge_cells_desc":"Sujungti lentel\u0117s langelius","split_cells_desc":"Skaidyti sulietus lentel\u0117s langelius","delete_col_desc":"\u0160alinti stulpel\u012f","col_after_desc":"\u012eterpti stulpel\u012f po","col_before_desc":"\u012eterpti stulpel\u012f prie\u0161","delete_row_desc":"\u0160alinti eilut\u0119","row_after_desc":"\u012eterpti eilut\u0119 po","row_before_desc":"\u012eterpti eilut\u0119 prie\u0161",desc:"\u012eterpti/Redaguoti lentel\u0119","merge_cells_delta_height":"","table_delta_height":"","cellprops_delta_height":"","rowprops_delta_height":""},autosave:{"warning_message":"Jei atstatysite i\u0161saugot\u0105 turin\u012f, prarasite esam\u0105 turin\u012f redaktoriaus lange.\n\nAr tikrai norite atstatyti i\u0161saugot\u0105 turin\u012f?","restore_content":"Atstatyti automati\u0161kai i\u0161saugot\u0105 turin\u012f.","unload_msg":"Visi pakeitimai bus prarasti, jei i\u0161eisite i\u0161 \u0161io puslapio."},fullscreen:{desc:"Perjungti viso ekrano re\u017eim\u0105"},media:{"delta_height":"","delta_width":"10",edit:"Redaguoti integruot\u0105 daugialyp\u0119 terp\u0119",desc:"\u012eterpti/redaguoti integruot\u0105 daugialyp\u0119 terp\u0119"},fullpage:{desc:"Dokumento nustatymai","delta_width":"10","delta_height":""},template:{desc:"\u012eterpti numatyt\u0105 \u0161ablono turin\u012f"},visualchars:{desc:"Vizualiniai valdymo simboliai \u012fjungti/i\u0161jungti."},spellchecker:{desc:"Perjungti ra\u0161ybos tikrintuv\u0119",menu:"Ra\u0161ybos tikrintuv\u0117s nustatymai","ignore_word":"Ignoruoti \u017eod\u012f","ignore_words":"Ignoruoti visk\u0105",langs:"Kalbos",wait:"Pra\u0161ome palaukti...",sug:"Pasi\u016blymai","no_sug":"Pasi\u016blym\u0173 nerasta","no_mpell":"Klaid\u0173 nerasta.","learn_word":"I\u0161mokti \u017eod\u012f"},pagebreak:{desc:"\u012eterpti puslapio pabaigos \u017eym\u0119."},advlist:{types:"Tipai",def:"Numatytasis","lower_alpha":"Ma\u017eosiomis raid\u0117mis","lower_greek":"Ma\u017eaisiais graik\u0173","lower_roman":"Ma\u017eaisiais rom\u0117n\u0173","upper_alpha":"Did\u017eiosiomis raid\u0117mis","upper_roman":"Did\u017eiaisiais rom\u0117n\u0173",circle:"Apskritimas",disc:"Diskas",square:"Kvadratas"},colors:{"333300":"Tamsi alyvuogi\u0173","993300":"Tamsi oran\u017ein\u0117","000000":"Juoda","003300":"Tamsi \u017ealia","003366":"Tamsi \u017eydra","000080":"Tamsiai m\u0117lyna","333399":"Indigo","333333":"Tamsiai pilka","800000":"Ka\u0161tonin\u0117",FF6600:"Oran\u017ein\u0117","808000":"Alyvuogi\u0173","008000":"\u017dalia","008080":"\u017dalsvai m\u0117lyna","0000FF":"M\u0117lyna","666699":"Pilk\u0161vai m\u0117lyna","808080":"Pilka",FF0000:"Raudona",FF9900:"Gintarin\u0117","99CC00":"Geltonai \u017ealia","339966":"\u017dalia","33CCCC":"\u017dalsvai m\u0117lyna","3366FF":"M\u0117lyna","800080":"Purpurin\u0117","999999":"Vidutini\u0161kai pilka",FF00FF:"Rausvai raudona",FFCC00:"Auksin\u0117",FFFF00:"Geltona","00FF00":"\u0160viesiai \u017ealia","00FFFF":"Vandenin\u0117","00CCFF":"\u017dydra","993366":"Ruda",C0C0C0:"Sidabrin\u0117",FF99CC:"Ro\u017ein\u0117",FFCC99:"Persiko spalva",FFFF99:"\u0160viesiai geltona",CCFFCC:"\u0160viesiai \u017ealia",CCFFFF:"\u017dalsvai m\u0117lyna","99CCFF":"\u0160viesi m\u0117lyna",CC99FF:"Slyv\u0173 spalvos",FFFFFF:"Balta"},aria:{"rich_text_area":"Formatuoto teksto zona"},wordcount:{words:"\u017dod\u017ei\u0173:"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/lv.js b/program/js/tiny_mce/langs/lv.js
deleted file mode 100644
index 953451a1b..000000000
--- a/program/js/tiny_mce/langs/lv.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({lv:{common:{"more_colors":"Vair\u0101k kr\u0101su","invalid_data":"K\u013c\u016bda: Ievad\u012btas neder\u012bgas v\u0113rt\u012bbas. T\u0101s ir atz\u012bm\u0113tas sarkan\u0101 kr\u0101s\u0101.","popup_blocked":"Atvainojiet, bet m\u0113s esam konstat\u0113ju\u0161i, ka J\u016bsu uzleco\u0161o logu blo\u0137\u0113t\u0101js ir atsp\u0113jojis logu, kas nodro\u0161ina programmas funkcionalit\u0101ti. Lai piln\u012bb\u0101 izmantotu \u0161o r\u012bku, Jums ir j\u0101atsl\u0113dz uzleco\u0161o logu blo\u0137\u0113tajs \u0161ai vietnei. ","clipboard_no_support":"\u0160obr\u012bd J\u016bsu p\u0101rl\u016bks neatbalsta \u0161o iesp\u0113ju, t\u0101 viet\u0101 l\u016bdzu izmantotjiet tastat\u016bras sa\u012bsin\u0101jumtausti\u0146us.","clipboard_msg":"Iesp\u0113ja Kop\u0113t/Izgriezt/Iekop\u0113t nav pieejama p\u0101rl\u016bkiem Mozilla and Firefox.\nVai J\u016bs v\u0113laties uzzin\u0101t vair\u0101k par \u0161o probl\u0113mu?","not_set":"-- Nav nor\u0101d\u012bts --","class_name":"Klase",browse:"P\u0101rl\u016bkot",close:"Aizv\u0113rt",cancel:"Atcelt",update:"Atjaunin\u0101t",insert:"Ievietot",apply:"Apstiprin\u0101t","edit_confirm":"Vai tu v\u0113lies izmantot WYSIWYG \u0161im teksta laukam?","invalid_data_number":"{#field} j\u0101b\u016bt skaitlim","invalid_data_min":"{#field} ir j\u0101b\u016bt skaitlim, kas nav liel\u0101ks k\u0101 {#min}","invalid_data_size":"{#field} ir j\u0101b\u016bt skaitlim vai procentiem",value:"(value)"},contextmenu:{full:"Pilns",right:"Pa labi",center:"Centr\u0113ts",left:"Pa kreisi",align:"Novietojums"},insertdatetime:{"day_short":"Sv\u0113,Pir,Otr,Tre,Cet,Pie,Ses,Sv\u0113","day_long":"Sv\u0113tdiena,Pirmdiena,Otrdiena,Tre\u0161diena,Ceturtdiena,Piektdiena,Sestdiena,Sv\u0113tdiena","months_short":"Jan,Feb,Mar,Apr,Mai,J\u016bn,J\u016bl,Aug,Sep,Okt,Nov,Dec","months_long":"Janv\u0101ris,Febru\u0101ris,Marts,Apr\u012blis,Maijs,J\u016bnijs,J\u016blijs,Augusts,Seprembris,Oktobris,Novembris,Decembris","inserttime_desc":"Ievietot laiku","insertdate_desc":"Ievietot datumu","time_fmt":"%H:%M:%S","date_fmt":"%Y-%m-%d"},print:{"print_desc":"Druk\u0101t"},preview:{"preview_desc":"Priek\u0161skat\u012bt"},directionality:{"rtl_desc":"Virziens no lab\u0101s uz kreiso","ltr_desc":"Virziens no kreis\u0101s uz labo"},layer:{content:"Jauns sl\u0101nis...","absolute_desc":"Iestat\u012bt/Nov\u0101kt absol\u016bto novietojumu ","backward_desc":"Atpaka\u013c","forward_desc":"Uz priek\u0161u","insertlayer_desc":"Ievietot jaunu sl\u0101ni"},save:{"save_desc":"Saglab\u0101t","cancel_desc":"Atcelt visas izmai\u0146as"},nonbreaking:{"nonbreaking_desc":"Ievietot tuk\u0161uma simbolu"},iespell:{download:"ieSpell netika atrasts. Vai J\u016bs v\u0113laties to uzst\u0101d\u012bt?","iespell_desc":"Uzs\u0101kt pareizrakst\u012bbas p\u0101rbaudi"},advhr:{"advhr_desc":"Horizont\u0101la sv\u012btra","delta_height":"","delta_width":""},emotions:{"emotions_desc":"Smaidi\u0146i","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"Mekl\u0113t/Aizvietot","search_desc":"Mekl\u0113t","delta_width":"","delta_height":""},advimage:{"image_desc":"Ievietot/Redi\u0123\u0113t att\u0113lu","delta_width":"","delta_height":""},advlink:{"link_desc":"Ievietot/Redi\u0123\u0113t saiti","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"Pielikt/redi\u0123\u0113t \u012bpa\u0161\u012bbas","ins_desc":"Insertion","del_desc":"Deletion","acronym_desc":"Acronym","abbr_desc":"Sa\u012bsin\u0101jums","cite_desc":"Cit\u0101ts","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"Edit CSS Style","delta_height":"","delta_width":""},paste:{"selectall_desc":"Iez\u012bm\u0113t visu","paste_word_desc":"Iekop\u0113t no Word","paste_text_desc":"Iekop\u0113t ka parasto tekstu","plaintext_mode":"Paste is now in plain text mode. Click again to toggle back to regular paste mode.","plaintext_mode_sticky":"Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode."},"paste_dlg":{"word_title":"Izmantojiet CTRL+V uz j\u016bsu tastat\u016bras lai iekop\u0113t tekstu log\u0101.","text_linebreaks":"Sagl\u0101b\u0101t l\u012bniju sadal\u012bt\u0101jus","text_title":"Izmantojiet CTRL+V uz j\u016bsu tastat\u016bras lai iekop\u0113t tekstu log\u0101."},table:{cell:"Aile",col:"St\u0101bs",row:"Rinda",del:"Izdz\u0113st tabulu","copy_row_desc":"Kop\u0113t tabulas rindu","cut_row_desc":"Izgriezt tabulas rindu","paste_row_after_desc":"Ielikt tabulas rindu aiz","paste_row_before_desc":"Ielikt tabulas rindu priek\u0161\u0101","props_desc":"Tabulas \u012bpa\u0161\u012bbas","cell_desc":"Tabulas ailes \u012bpa\u0161\u012bbas","row_desc":"Tabulas rindas \u012bpa\u0161\u012bbas","merge_cells_desc":"Apvienot tabulas ailes","split_cells_desc":"Sadal\u012bt apvienotas tabules ailes","delete_col_desc":"Izdz\u0113st stabu","col_after_desc":"Ielikt jaunu stabu aiz","col_before_desc":"Ielikt jaunu stabu priek\u0161\u0101","delete_row_desc":"Izdz\u0113st rindu","row_after_desc":"Ielikt jaunu rindu aiz","row_before_desc":"Ielikt jaunu rindu priek\u0161\u0101",desc:"Ielikt jaunu tabulu","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"Ja atjaunosiet saglab\u0101to saturu, zaud\u0113siet eso\u0161o saturu redaktora log\u0101.\n\nVai tie\u0161\u0101m v\u0113laties atjaunot saglab\u0101tu saturu?","restore_content":"Atjaunot autom\u0101tiski saglab\u0101tu saturu.","unload_msg":"The changes you made will be lost if you navigate away from this page."},fullscreen:{desc:"Toggle fullscreen mode"},media:{edit:"Edit embedded media",desc:"Insert / edit embedded media","delta_height":"","delta_width":""},fullpage:{desc:"Document properties","delta_width":"","delta_height":""},template:{desc:"Insert predefined template content"},visualchars:{desc:"Visual control characters on/off."},spellchecker:{desc:"Toggle spellchecker",menu:"Spellchecker settings","ignore_word":"Ignore word","ignore_words":"Ignore all",langs:"Languages",wait:"Please wait...",sug:"Suggestions","no_sug":"No suggestions","no_mpell":"No misspellings found.","learn_word":"Iem\u0101c\u012bties v\u0101rdu"},pagebreak:{desc:"Insert page break."},advlist:{types:"Tipi",def:"Noklus\u0113tais","lower_alpha":"Ar mazajiem burtiem","lower_greek":"Ar mazajiem grie\u0137u","lower_roman":"Ar mazajiem romie\u0161u","upper_alpha":"Ar lielajiem burtiem","upper_roman":"Ar lielajiem romie\u0161u",circle:"Aplis",disc:"Disks",square:"Kvadr\u0101ts"},colors:{"333300":"Tum\u0161a ol\u012bvkr\u0101sa","993300":"Tum\u0161i oran\u017ea","000000":"Melna","003300":"Tum\u0161i za\u013ca","003366":"Tum\u0161i gai\u0161zila","000080":"Tum\u0161i zila","333399":"Indigo","333333":"Tum\u0161i pel\u0113ka","800000":"Kasta\u0146u kr\u0101sa",FF6600:"Oran\u017ea","808000":"Ol\u012bvkr\u0101sa","008000":"Za\u013ca","008080":"Za\u013cganzila","0000FF":"Zila","666699":"Pel\u0113ki zila","808080":"Pel\u0113ka",FF0000:"Sarkana",FF9900:"Dzintarkr\u0101sa","99CC00":"Dzelteni za\u013ca","339966":"Oke\u0101na kr\u0101sa","3366FF":"Zila","800080":"Purpurkr\u0101sa","999999":"Vid\u0113ji pel\u0113ka",FF00FF:"Sarkan\u012bga",FFCC00:"Zelta",FFFF00:"Dzeltena","00FF00":"Gai\u0161i za\u013ca","00FFFF":"Oke\u0101na kr\u0101sa","00CCFF":"Gai\u0161zila","993366":"Br\u016bna",C0C0C0:"Sudraba",FF99CC:"Ro\u017ekr\u0101sa",FFCC99:"Persika kr\u0101sa",FFFF99:"Gai\u0161i dzeltena",CCFFCC:"Gai\u0161i za\u013ca",CCFFFF:"Za\u013cganzila","99CCFF":"Gai\u0161i zila",CC99FF:"Pl\u016bmju kr\u0101s\u0101",FFFFFF:"Balta","33CCCC":"Turquoise"},aria:{"rich_text_area":"Rich Text Area"},wordcount:{words:"v\u0101rdu:"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/mk.js b/program/js/tiny_mce/langs/mk.js
deleted file mode 100644
index 699b6f749..000000000
--- a/program/js/tiny_mce/langs/mk.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({mk:{common:{"more_colors":"\u041f\u043e\u0432\u0435\u045c\u0435 \u0431\u043e\u0438 ...","invalid_data":"\u0413\u0440\u0435\u0448\u043a\u0430: \u0412\u043d\u0435\u0441\u0435\u043d\u0438 \u0441\u0435 \u043d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u0438 \u0432\u0440\u0435\u0434\u043d\u043e\u0441\u0442\u0438, \u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438 \u0441\u043e \u0446\u0440\u0432\u0435\u043d\u043e.","popup_blocked":"\u0418\u0437\u0432\u0438\u043d\u0435\u0442\u0435, \u0438\u0437\u0433\u043b\u0435\u0434\u0430 \u0432\u0430\u0448\u0438\u043e\u0442 popup-blocker \u0433\u043e \u043e\u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u0438\u043b \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446 \u043a\u043e\u0458 \u043e\u0431\u0435\u0437\u0431\u0435\u0434\u0443\u0432\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u043d\u043e\u0441\u0442 \u043d\u0430 \u0430\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0458\u0430\u0442\u0430. \u040c\u0435 \u0442\u0440\u0435\u0431\u0430 \u0434\u0430 \u0433\u043e \u0438\u0441\u043a\u043b\u0443\u0447\u0438\u0442\u0435 popup-blocker-\u043e\u0442 \u0437\u0430 \u043e\u0432\u043e\u0458 \u0441\u0430\u0458\u0442, \u0441\u043e \u0446\u0435\u043b \u0446\u0435\u043b\u043e\u0441\u043d\u043e \u0434\u0430 \u0458\u0430 \u043a\u043e\u0440\u0438\u0441\u0442\u0438\u0442\u0435 \u043e\u0432\u0430\u0430 \u0430\u043b\u0430\u0442\u043a\u0430.","clipboard_no_support":"\u041e\u0432\u0430\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0458\u0430 \u043c\u043e\u043c\u0435\u043d\u0442\u0430\u043b\u043d\u043e \u043d\u0435 \u0435 \u043f\u043e\u0434\u0434\u0440\u0436\u0430\u043d\u0430 \u043e\u0434 \u0432\u0430\u0448\u0438\u043e\u0442 \u043f\u0440\u0435\u043b\u0438\u0441\u0442\u0443\u0432\u0430\u0447, \u043e\u0431\u0438\u0434\u0435\u0442\u0435 \u0441\u0435 \u0441\u043e \u0442\u0430\u0441\u0442\u0430\u0442\u0443\u0440\u0430\u0442\u0430.","clipboard_msg":"\u041a\u043e\u043f\u0438\u0440\u0430\u0458/\u0418\u0441\u0435\u0447\u0438/\u0412\u043c\u0435\u0442\u043d\u0438 \u043d\u0435 \u0435 \u0434\u043e\u0437\u0432\u043e\u043b\u0435\u043d\u043e \u043d\u0430 Mozilla \u0438 Firefox \u043f\u0440\u0435\u0431\u0430\u0440\u0443\u0432\u0430\u0447\u0438.\n\u0414\u0430\u043b\u0438 \u0441\u0430\u043a\u0430\u0442\u0435 \u043f\u043e\u0432\u0435\u045c\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438?","not_set":"-- \u041d\u0435 \u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u0435\u043d\u043e --","class_name":"\u041a\u043b\u0430\u0441\u0430",browse:"\u041f\u0440\u0435\u043b\u0438\u0441\u0442\u0430\u0458",close:"\u0417\u0430\u0442\u0432\u043e\u0440\u0438",cancel:"\u041e\u0442\u043a\u0430\u0436\u0438",update:"\u0410\u0436\u0443\u0440\u0438\u0440\u0430\u0458",insert:"\u0412\u043d\u0435\u0441\u0438",apply:"\u041f\u0440\u0438\u043c\u0435\u043d\u0438","edit_confirm":"\u0414\u0430\u043b\u0438 \u0441\u0430\u043a\u0430\u0442\u0435 \u0434\u0430 \u0433\u043e \u043a\u043e\u0440\u0438\u0441\u0442\u0438\u0442\u0435 WYSIWYG \u0437\u0430 \u043e\u0432\u0430 \u0442\u0435\u043a\u0441\u0442\u0443\u0430\u043b\u043d\u043e \u043f\u043e\u043b\u0435 ?","invalid_data_number":"{#field} \u043c\u043e\u0440\u0430 \u0434\u0430 \u0435 \u0431\u0440\u043e\u0458","invalid_data_min":"{#field} \u043c\u043e\u0440\u0430 \u0434\u0430 \u0435 \u0431\u0440\u043e\u0458 \u043f\u043e\u0433\u043e\u043b\u0435\u043c \u043e\u0434 {#min}","invalid_data_size":"{#field} \u043c\u043e\u0440\u0430 \u0434\u0430 \u0435 \u0431\u0440\u043e\u0458 \u0438\u043b\u0438 \u043f\u0440\u043e\u0446\u0435\u043d\u0442",value:"(\u0432\u0440\u0435\u0434\u043d\u043e\u0441\u0442)"},contextmenu:{full:"\u0426\u0435\u043b\u043e\u0441\u043d\u043e",right:"\u0414\u0435\u0441\u043d\u043e",center:"\u0421\u0440\u0435\u0434\u0438\u043d\u0430",left:"\u041b\u0435\u0432\u043e",align:"\u0418\u0437\u0440\u0430\u043c\u043d\u0443\u0432\u0430\u045a\u0435"},insertdatetime:{"day_short":"\u041d\u0435\u0434,\u041f\u043e\u043d,\u0412\u0442\u043e,\u0421\u0440\u0435,\u0427\u0435\u0442,\u041f\u0435\u0442,\u0421\u0430\u0431,\u041d\u0435\u0434","day_long":"\u041d\u0435\u0434\u0435\u043b\u0430,\u041f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a,\u0412\u0442\u043e\u0440\u043d\u0438\u043a,\u0421\u0440\u0435\u0434\u0430,\u0427\u0435\u0442\u0432\u0440\u0442\u043e\u043a,\u041f\u0435\u0442\u043e\u043a,\u0421\u0430\u0431\u043e\u0442\u0430,\u041d\u0435\u0434\u0435\u043b\u0430","months_short":"\u0408\u0430\u043d,\u0424\u0435\u0432,\u041c\u0430\u0440,\u0410\u043f\u0440,\u041c\u0430\u0458,\u0408\u0443\u043d,\u0408\u0443\u043b,\u0410\u0432\u0433,\u0421\u0435\u043f,\u041e\u043a\u0442,\u041d\u043e\u0435,\u0414\u0435\u043a","months_long":"\u0408\u0430\u043d\u0443\u0430\u0440\u0438,\u0424\u0435\u0432\u0440\u0443\u0430\u0440\u0438,\u041c\u0430\u0440\u0442,\u0410\u043f\u0440\u0438\u043b,\u041c\u0430\u0458,\u0408\u0443\u043d\u0438,\u0408\u0443\u043b\u0438,\u0410\u0432\u0433\u0443\u0441\u0442,\u0421\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438,\u041e\u043a\u0442\u043e\u043c\u0432\u0440\u0438,\u041d\u043e\u0435\u043c\u0432\u0440\u0438,\u0414\u0435\u043a\u0435\u043c\u0432\u0440\u0438","inserttime_desc":"\u0412\u043d\u0435\u0441\u0438 \u0432\u0440\u0435\u043c\u0435","insertdate_desc":"\u0412\u043d\u0435\u0441\u0438 \u0434\u0430\u0442\u0443\u043c","time_fmt":"%H:%M:%S","date_fmt":"%d.%m.%Y."},print:{"print_desc":"\u041f\u0435\u0447\u0430\u0442\u0438"},preview:{"preview_desc":"\u041f\u0440\u0435\u0433\u043b\u0435\u0434"},directionality:{"rtl_desc":"\u041e\u0434 \u0434\u0435\u0441\u043d\u043e \u043d\u0430 \u043b\u0435\u0432\u043e","ltr_desc":"\u041e\u0434 \u043b\u0435\u0432\u043e \u043d\u0430 \u0434\u0435\u0441\u043d\u043e"},layer:{content:"\u041d\u043e\u0432 \u0441\u043b\u043e\u0458 (\u043d\u0438\u0432\u043e) ...","absolute_desc":"\u0412\u043a\u043b\u0443\u0447\u0438/\u0438\u0441\u043a\u043b\u0443\u0447\u0438 \u0430\u043f\u0441\u043e\u043b\u0443\u0442\u043d\u043e \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u0430\u045a\u0435","backward_desc":"\u041f\u043e\u043c\u0435\u0441\u0442\u0438 \u043d\u0430\u0437\u0430\u0434","forward_desc":"\u041f\u043e\u043c\u0435\u0441\u0442\u0438 \u043d\u0430\u043f\u0440\u0435\u0434","insertlayer_desc":"\u0412\u043c\u0435\u0442\u043d\u0438 \u043d\u043e\u0432 \u0441\u043b\u043e\u0458"},save:{"save_desc":"\u0417\u0430\u0447\u0443\u0432\u0430\u0458","cancel_desc":"\u041e\u0442\u043a\u0430\u0436\u0438 \u0433\u0438 \u0441\u0438\u0442\u0435 \u043f\u0440\u043e\u043c\u0435\u043d\u0438"},nonbreaking:{"nonbreaking_desc":"\u0412\u043d\u0435\u0441\u0438 \u043f\u0440\u0430\u0437\u043d\u043e \u043c\u0435\u0441\u0442\u043e"},iespell:{download:"\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u043f\u0440\u0430\u0432\u043e\u043f\u0438\u0441\u043e\u0442 \u043d\u0435 \u0435 \u0434\u0435\u0442\u0435\u043a\u0442\u0438\u0440\u0430\u043d\u0430. \u0414\u0430\u043b\u0438 \u0441\u0430\u043a\u0430\u0442\u0430 \u0434\u0430 \u0458\u0430 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u0435 \u0441\u0435\u0433\u0430 ?","iespell_desc":"\u041f\u043e\u0447\u043d\u0438 \u0441\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u043f\u0440\u0430\u0432\u043e\u043f\u0438\u0441"},advhr:{"advhr_desc":"\u0412\u043d\u0435\u0441\u0438 \u0445\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u043d\u0430 \u043b\u0438\u043d\u0438\u0458\u0430","delta_height":"","delta_width":""},emotions:{"emotions_desc":"\u0415\u043c\u043e\u0446\u0438\u0438","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"\u041d\u0430\u0458\u0434\u0438/\u0417\u0430\u043c\u0435\u043d\u0438","delta_width":"\u0440\u0430\u0437\u043b\u0438\u043a\u0430 \u0432\u043e \u0448\u0438\u0440\u0438\u043d\u0430","delta_height":"\u0440\u0430\u0437\u043b\u0438\u043a\u0430 \u0432\u043e \u0434\u043e\u043b\u0436\u0438\u043d\u0430","search_desc":"\u041d\u0430\u0458\u0434\u0438"},advimage:{"image_desc":"\u0412\u043d\u0435\u0441\u0438/\u0443\u0440\u0435\u0434\u0438 \u0441\u043b\u0438\u043a\u0430","delta_width":"","delta_height":""},advlink:{"link_desc":"\u0412\u043d\u0435\u0441\u0438/\u0443\u0440\u0435\u0434\u0438 \u043b\u0438\u043d\u043a","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"\u0412\u043d\u0435\u0441\u0438/\u0443\u0440\u0435\u0434\u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0438","ins_desc":"\u0412\u043d\u0435\u0441","del_desc":"\u0411\u0440\u0438\u0448\u0435\u045a\u0435","acronym_desc":"\u0410\u043a\u0440\u043e\u043d\u0438\u043c\u0438","abbr_desc":"\u041a\u0440\u0430\u0442\u0435\u043d\u043a\u0430","cite_desc":"\u0426\u0438\u0442\u0430\u0442","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{"delta_height":"\u0440\u0430\u0437\u043b\u0438\u043a\u0430 \u0432\u043e \u0448\u0438\u0440\u0438\u043d\u0430","delta_width":"\u0440\u0430\u0437\u043b\u0438\u043a\u0430 \u0432\u043e \u0434\u043e\u043b\u0436\u0438\u043d\u0430",desc:"\u0423\u0440\u0435\u0434\u0438 \u0433\u043e CSS \u0441\u0442\u0438\u043b\u043e\u0442"},paste:{"plaintext_mode":"\u0417\u0430\u043b\u0435\u043f\u0443\u0432\u0430\u045a\u0435\u0442\u043e \u0435 \u0432\u043e \u0447\u0438\u0441\u0442 \u0442\u0435\u043a\u0441\u0442\u0443\u0430\u043b\u0435\u043d \u043c\u043e\u0434. \u041a\u043b\u0438\u043a\u043d\u0438 \u0437\u0430 \u043f\u043e\u0432\u0442\u043e\u0440\u043c\u043e \u0434\u0430 \u0441\u043c\u0435\u043d\u0438\u0448 \u0432\u043e \u043e\u0431\u0438\u0447\u0435\u043d \u043c\u043e\u0434.","plaintext_mode_sticky":"\u0417\u0430\u043b\u0435\u043f\u0443\u0432\u0430\u045a\u0435\u0442\u043e \u0435 \u0432\u043e \u0447\u0438\u0441\u0442 \u0442\u0435\u043a\u0441\u0442\u0443\u0430\u043b\u0435\u043d \u043c\u043e\u0434. \u041a\u043b\u0438\u043a\u043d\u0438 \u0437\u0430 \u043f\u043e\u0432\u0442\u043e\u0440\u043c\u043e \u0434\u0430 \u0441\u043c\u0435\u043d\u0438\u0448 \u0432\u043e \u043e\u0431\u0438\u0447\u0435\u043d \u043c\u043e\u0434. \u041e\u0434 \u043a\u043e\u0433\u0430 \u045c\u0435 \u0437\u0430\u043b\u0435\u043f\u0438\u0442\u0435 \u045c\u0435 \u0431\u0438\u0434\u0435\u0442\u0435 \u0432\u0440\u0430\u0442\u0435\u043d\u0438\u0438 \u0432\u043e \u043e\u0431\u0438\u0447\u0435\u043d \u0437\u0430\u043b\u0435\u043f\u0443\u0432\u0430\u0447\u043a\u0438 \u043c\u043e\u0434.","selectall_desc":"\u041e\u0437\u043d\u0430\u0447\u0438 \u0441\u0435","paste_word_desc":"\u0417\u0430\u043b\u0435\u043f\u0438 \u043e\u0434 Word","paste_text_desc":"\u0417\u0430\u043b\u0435\u043f\u0438 \u043a\u0430\u043a\u043e \u043e\u0431\u0438\u0447\u0435\u043d \u0442\u0435\u043a\u0441\u0442"},"paste_dlg":{"word_title":"\u041a\u043e\u0440\u0438\u0441\u0442\u0435\u0442\u0435 CTRL V \u043e\u0434 \u0442\u0430\u0441\u0442\u0430\u0442\u0443\u0440\u0430\u0442\u0430 \u0437\u0430 \u0434\u0430 \u0433\u043e \u0437\u0430\u043b\u0435\u043f\u0438\u0442\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0442 \u0432\u043e \u043f\u0440\u043e\u0437\u043e\u0440\u043e\u0442.","text_linebreaks":"\u0417\u0430\u0434\u0440\u0436\u0438 \u0433\u0438 \u043f\u0430\u0443\u0437\u0438\u0442\u0435 \u043f\u043e\u043c\u0435\u0453\u0443 \u043b\u0438\u043d\u0438\u0438\u0442\u0435","text_title":"\u041a\u043e\u0440\u0438\u0441\u0442\u0435\u0442\u0435 CTRL V \u043e\u0434 \u0442\u0430\u0441\u0442\u0430\u0442\u0443\u0440\u0430\u0442\u0430 \u0437\u0430 \u0434\u0430 \u0433\u043e \u0437\u0430\u043b\u0435\u043f\u0438\u0442\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0442 \u0432\u043e \u043f\u0440\u043e\u0437\u043e\u0440\u043e\u0442."},table:{cell:"\u041a\u043b\u0435\u0442\u043a\u0430",col:"\u041a\u043e\u043b\u043e\u043d\u0430",row:"\u0420\u0435\u0434",del:"\u0418\u0437\u0431\u0440\u0438\u0448\u0438 \u0442\u0430\u0431\u0435\u043b\u0430","copy_row_desc":"\u041a\u043e\u043f\u0438\u0440\u0430\u0458 \u0433\u043e \u0440\u0435\u0434\u043e\u0442","cut_row_desc":"\u041e\u0434\u0441\u0435\u0447\u0438 \u0433\u043e \u0440\u0435\u0434\u043e\u0442","paste_row_after_desc":"\u0417\u0430\u043b\u0435\u043f\u0438 \u0433\u043e \u0440\u0435\u0434\u043e\u0442 \u043f\u043e\u0434","paste_row_before_desc":"\u0417\u0430\u043b\u0435\u043f\u0438 \u0433\u043e \u0440\u0435\u0434\u043e\u0442 \u043d\u0430\u0434","props_desc":"\u0421\u0432\u043e\u0458\u0441\u0442\u0432\u0430 \u043d\u0430 \u0442\u0430\u0431\u0435\u043b\u0430\u0442\u0430","cell_desc":"\u0421\u0432\u043e\u0458\u0441\u0442\u0432\u0430 \u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0430\u0442\u0430","row_desc":"\u0421\u0432\u043e\u0458\u0441\u0442\u0432\u0430 \u043d\u0430 \u0440\u0435\u0434\u043e\u0442","merge_cells_desc":"\u0421\u043f\u043e\u0458 \u0433\u0438 \u043a\u043b\u0435\u0442\u043a\u0438\u0442\u0435","split_cells_desc":"\u0420\u0430\u0437\u0434\u0432\u043e\u0458 \u0433\u0438 \u043a\u043b\u0435\u0442\u043a\u0438\u0442\u0435","delete_col_desc":"\u0418\u0437\u0431\u0440\u0438\u0448\u0438 \u043a\u043e\u043b\u043e\u043d\u0430","col_after_desc":"\u0412\u043c\u0435\u0442\u043d\u0438 \u043a\u043e\u043b\u043e\u043d\u0430 \u0434\u0435\u0441\u043d\u043e","col_before_desc":"\u0412\u043c\u0435\u0442\u043d\u0438 \u043a\u043e\u043b\u043e\u043d\u0430 \u043b\u0435\u0432\u043e","delete_row_desc":"\u0418\u0437\u0431\u0440\u0438\u0448\u0438 \u0440\u0435\u0434","row_after_desc":"\u0412\u043c\u0435\u0442\u043d\u0438 \u0440\u0435\u0434 \u043f\u043e\u0434","row_before_desc":"\u0412\u043c\u0435\u0442\u043d\u0438 \u0440\u0435\u0434 \u043d\u0430\u0434",desc:"\u041d\u043e\u0432\u0430 \u0442\u0430\u0431\u0435\u043b\u0430","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"\u0414\u043e\u043a\u043e\u043b\u043a\u0443 \u043d\u0430\u043f\u0440\u0430\u0432\u0438\u0442\u0435 \u0432\u0440\u0430\u045c\u0430\u045a\u0435 \u043d\u0430 \u043f\u0440\u0435\u0442\u0445\u043e\u0434\u043d\u0430\u0442\u0430 \u0441\u043e\u0441\u0442\u043e\u0458\u0431\u0430, \u045c\u0435 \u0458\u0430 \u0438\u0437\u0433\u0443\u0431\u0438\u0442\u0435 \u0446\u0435\u043b\u0430\u0442\u0430 \u0441\u043e\u0434\u0440\u0436\u0438\u043d\u0430 \u043a\u043e\u0458\u0430 \u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u0430\u043b\u043d\u043e \u0432\u043e \u0435\u0434\u0438\u0442\u043e\u0440\u043e\u0442.\n\n\u0414\u0430\u043b\u0438 \u0441\u0442\u0435 \u0441\u0438\u0433\u0443\u0440\u043d\u0438 \u0434\u0435\u043a\u0430 \u0441\u0430\u043a\u0430\u0442\u0435 \u0434\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u0438\u0442\u0435 \u0432\u0440\u0430\u045c\u0430\u045a\u0435 \u043d\u0430 \u043f\u0440\u0435\u0442\u0445\u043e\u0434\u043d\u0430\u0442\u0430 \u0441\u043e\u0441\u0442\u043e\u0458\u0431\u0430 ?","restore_content":"\u0412\u0440\u0430\u0442\u0438 \u0458\u0430 \u0441\u043e\u0434\u0440\u0436\u0438\u043d\u0430\u0442\u0430 \u043a\u043e\u0458\u0430 \u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u0435\u043d\u0430 \u0441\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0441\u043a\u043e\u0442\u043e \u0441\u043d\u0438\u043c\u0430\u045a\u0435.","unload_msg":"\u041f\u0440\u043e\u043c\u0435\u043d\u0438\u0442\u0435 \u0432\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0442 \u045c\u0435 \u0431\u0438\u0434\u0430\u0442 \u0438\u0437\u0433\u0443\u0431\u0435\u043d\u0438 \u0430\u043a\u043e \u0438\u0437\u043b\u0435\u0437\u0435\u0442\u0435 \u043e\u0434 \u043e\u0432\u0430\u0430 \u0441\u0442\u0440\u0430\u043d\u0430."},fullscreen:{desc:"\u0412\u043a\u043b\u0443\u0447\u0438/\u0438\u0441\u043a\u043b\u0443\u0447\u0438 \u043f\u0440\u0438\u043a\u0430\u0436\u0443\u0432\u0430\u045a\u0435 \u043d\u0430 \u0446\u0435\u043b\u0438\u043e\u0442 \u0435\u043a\u0440\u0430\u043d"},media:{edit:"\u0423\u0440\u0435\u0434\u0438 \u0432\u0433\u0440\u0430\u0434\u0435\u043d\u0438 \u043c\u0435\u0434\u0438\u0443\u043c\u0438",desc:"\u0412\u043d\u0435\u0441\u0438 / \u0443\u0440\u0435\u0434\u0438 \u0432\u0433\u0440\u0430\u0434\u0435\u043d\u0438 \u043c\u0435\u0434\u0438\u0443\u043c\u0438","delta_height":"","delta_width":""},fullpage:{desc:"\u0421\u0432\u043e\u0458\u0441\u0442\u0432\u0430 \u043d\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0442","delta_width":"","delta_height":""},template:{desc:"\u0412\u043d\u0435\u0441\u0438 \u0441\u043e\u0434\u0440\u0436\u0438\u043d\u0430 \u043e\u0434 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0442"},visualchars:{desc:"\u0412\u043a\u043b\u0443\u0447\u0438/\u0438\u0441\u043a\u043b\u0443\u0447\u0438 \u0432\u0438\u0437\u0443\u0435\u043b\u043d\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0430 \u043d\u0430 \u0437\u043d\u0430\u0446\u0438"},spellchecker:{desc:"\u0412\u043a\u043b\u0443\u0447\u0438/\u0438\u0441\u043a\u043b\u0443\u0447\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u043f\u0440\u0430\u0432\u043e\u043f\u0438\u0441",menu:"\u041f\u043e\u0434\u0435\u0441\u0443\u0432\u0430\u045a\u0430 \u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438\u0442\u0435 \u0437\u0430 \u043f\u0440\u0430\u0432\u043e\u043f\u0438\u0441","ignore_word":"\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u0430\u0458 \u0433\u043e \u0437\u0431\u043e\u0440\u043e\u0442","ignore_words":"\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u0430\u0458 \u0441\u0435",langs:"\u0408\u0430\u0437\u0438\u0446\u0438",wait:"\u0412\u0435 \u043c\u043e\u043b\u0438\u043c\u0435 \u043f\u043e\u0447\u0435\u043a\u0430\u0458\u0442\u0435...",sug:"\u041f\u0440\u0435\u0434\u043b\u043e\u0437\u0438","no_sug":"\u041d\u0435\u043c\u0430 \u043f\u0440\u0435\u0434\u043b\u043e\u0433","no_mpell":"\u041d\u0435 \u0435 \u043d\u0430\u0458\u0434\u0435\u043d\u0430 \u043f\u0440\u0430\u0432\u043e\u043f\u0438\u0441\u043d\u0430 \u0433\u0440\u0435\u0448\u043a\u0430.","learn_word":"\u041d\u0430\u0443\u0447\u0438 \u0437\u0431\u043e\u0440"},pagebreak:{desc:"\u0412\u043d\u0435\u0441\u0438 \u043f\u0430\u0443\u0437\u0430 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0438\u0442\u0435 \u0437\u0430 \u043f\u0440\u0438\u043d\u0442\u0430\u045a\u0435."},advlist:{types:"\u0422\u0438\u043f\u043e\u0432\u0438",def:"\u041f\u0440\u0435\u0432\u0437\u0435\u043c\u0435\u043d\u043e","lower_alpha":"\u041c\u0430\u043b\u0438 \u043d\u0443\u043c\u0435\u0440\u0438\u0447\u043a\u0438","lower_greek":"\u041c\u0430\u043b\u0438 \u0433\u0440\u0447\u043a\u0438","lower_roman":"\u041c\u0430\u043b\u0438 \u0440\u0438\u043c\u0441\u043a\u0438","upper_alpha":"\u0413\u043e\u043b\u0435\u043c\u0438 \u043d\u0443\u043c\u0435\u0440\u0438\u0447\u043a\u0438","upper_roman":"\u0413\u043e\u043b\u0435\u043c\u0438 \u0440\u0438\u043c\u0441\u043a\u0438",circle:"\u041a\u0440\u0443\u0433",disc:"\u0414\u0438\u0441\u043a",square:"\u041a\u0432\u0430\u0434\u0440\u0430\u0442"},colors:{"333300":"\u0422\u0435\u043c\u043d\u043e \u043c\u0430\u0441\u043b\u0438\u043d\u0435\u0441\u0442\u0430","993300":"\u0418\u0437\u0433\u043e\u0440\u0435\u043d\u043e \u043f\u043e\u0440\u0442\u043e\u043a\u0430\u043b\u043e\u0432\u0430","000000":"\u0426\u0440\u043d\u0430","003300":"\u0422\u0435\u043c\u043d\u043e \u0437\u0435\u043b\u0435\u043d\u0430","003366":"\u0422\u0435\u043c\u043d\u043e \u0441\u0438\u043d\u0430","000080":"\u041c\u043e\u0440\u043d\u0430\u0440\u0441\u043a\u043e \u0441\u0438\u043d\u0430","333399":"\u0418\u043d\u0434\u0438\u0433\u043e","333333":"\u0422\u0435\u043c\u043d\u043e \u0441\u0438\u0432\u0430","800000":"\u0426\u0440\u0432\u0435\u043d\u043e-\u043a\u0430\u0444\u0435\u043d\u0430",FF6600:"\u041f\u043e\u0440\u0442\u043e\u043a\u0430\u043b\u043e\u0432\u0430","808000":"\u041c\u0430\u0441\u043b\u0438\u043d\u0430\u0441\u0442\u0430","008000":"\u0417\u0435\u043b\u0435\u043d\u0430","008080":"\u0421\u0430\u0444\u0438\u0440\u043d\u043e \u0441\u0438\u043d\u0430","0000FF":"\u0421\u0438\u043d\u0430","666699":"\u0421\u0438\u0432\u043e \u0441\u0438\u043d\u0430","808080":"\u0421\u0438\u0432\u0430",FF0000:"\u0426\u0440\u0432\u0435\u043d\u0430",FF9900:"\u0411\u0430\u043a\u0430\u0440\u043d\u043e-\u0436\u043e\u043b\u0442\u0430 (\u0430\u043c\u0431\u0435\u0440)","99CC00":"\u0416\u043e\u043b\u0442\u043e-\u0437\u0435\u043b\u0435\u043d\u0430","339966":"\u041c\u043e\u0440\u0441\u043a\u043e \u0437\u0435\u043b\u0435\u043d\u0430","33CCCC":"\u0422\u0438\u0440\u043a\u0438\u0437\u043d\u0430","3366FF":"\u041a\u0440\u0430\u043b\u0441\u043a\u043e \u0441\u0438\u043d\u0430","800080":"\u041f\u0443\u0440\u043f\u0443\u0440\u043d\u0430","999999":"\u0421\u0440\u0435\u0434\u043d\u043e \u0441\u0438\u0432\u0430",FF00FF:"\u041c\u0430\u0433\u0435\u043d\u0442\u0430 (\u0440\u043e\u0437\u0435\u0432\u0430)",FFCC00:"\u0417\u043b\u0430\u0442\u043d\u0430",FFFF00:"\u0416\u043e\u043b\u0442\u0430","00FF00":"\u0417\u0435\u043b\u0435\u043d\u0430 (\u043b\u0430\u0458\u043c)","00FFFF":"\u0412\u043e\u0434\u0435\u043d\u043e \u0441\u0438\u043d\u0430","00CCFF":"\u041d\u0435\u0431\u0435\u0441\u043a\u043e \u0441\u0438\u043d\u0430","993366":"\u041a\u0430\u0444\u0435\u043d\u0430",C0C0C0:"\u0421\u0440\u0435\u0431\u0440\u0435\u043d\u0430",FF99CC:"\u0420\u043e\u0437\u0435\u0432\u0430",FFCC99:"\u041a\u0430\u0458\u0441\u0438\u0458\u0430",FFFF99:"\u0421\u0432\u0435\u0442\u043b\u043e \u0436\u043e\u043b\u0442\u0430",CCFFCC:"\u0411\u043b\u0435\u0434\u043e \u0437\u0435\u043b\u0435\u043d\u0430",CCFFFF:"\u0411\u043b\u0435\u0434\u0430 \u0446\u0438\u0458\u0430\u043d","99CCFF":"\u0421\u0432\u0435\u0442\u043b\u043e \u043d\u0435\u0431\u0435\u0441\u043a\u043e \u0441\u0438\u043d\u0430",CC99FF:"\u0421\u043b\u0438\u0432\u0430",FFFFFF:"\u0411\u0435\u043b\u0430"},aria:{"rich_text_area":"\u0417\u0431\u043e\u0433\u0430\u0442\u0435\u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0443\u0430\u043b\u043d\u0430 \u043f\u043e\u0432\u0440\u0448\u0438\u043d\u0430"},wordcount:{words:"\u0417\u0431\u043e\u0440\u043e\u0432\u0438:"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/ms.js b/program/js/tiny_mce/langs/ms.js
deleted file mode 100644
index 667c2056a..000000000
--- a/program/js/tiny_mce/langs/ms.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({ms:{common:{"more_colors":"Warna lain-lain","invalid_data":"Ralat: Nilai dimasukkan tidak sah, lihat tanda merah.","popup_blocked":"Maaf, kami dapati \"popup-blocker\" telah melumpuhkan tetingkap yang memberikan fungsi kepada perisian anda. Anda perlu mematikan \"popup-blocker\" untuk laman web ini bagi menggunakan semua alatan.","clipboard_no_support":"Perisian browser anda tidak disokong pada masa ini, sila guna papan kekunci.","clipboard_msg":"Salin/Potong/Tempel tidak disediakan untuk Mozilla dan Firefox.\nAdakah anda mahu informasi lanjut tentang isu ini?","not_set":"-- Tidak set --","class_name":"Kelas",browse:"Semak seimbas",close:"Tutup",cancel:"Batal",update:"Kemaskini",insert:"Sisip",apply:"Guna","edit_confirm":"Guna WYSIWYG mod untuk \"textarea\" ini?","invalid_data_number":"{#field} must be a number","invalid_data_min":"{#field} must be a number greater than {#min}","invalid_data_size":"{#field} must be a number or percentage",value:"(value)"},contextmenu:{full:"Penuh",right:"Kanan",center:"Tengah",left:"Kiri",align:"Penyelarian"},insertdatetime:{"day_short":"Aha,Isn,Sel,Rab,Kha,Jum,Sab,Aha","day_long":"Ahad,Isnin,Selasa,Rabu,Khamis,Jumaat,Sabtu,Ahad","months_short":"Jan,Feb,Mac,Apr,Mei,Jun,Jul,Ogo,Sep,Okt,Nov,Dis","months_long":"Januari,Febuari,Mac,April,Mei,Jun,Julai,Ogos,September,Oktober,November,Disember","inserttime_desc":"Sisip masa","insertdate_desc":"Sisip tarikh","time_fmt":"%H:%M:%S","date_fmt":"%Y-%m-%d"},print:{"print_desc":"Cetak"},preview:{"preview_desc":"Pratonton"},directionality:{"rtl_desc":"Arah kanan ke kiri","ltr_desc":"Arah kiri ke kanan"},layer:{content:"Lapisan baru...","absolute_desc":"Alih posisi mutlak","backward_desc":"Gerak kebelakang","forward_desc":"Gerak kehadapan","insertlayer_desc":"Sisip lapisan baru"},save:{"save_desc":"Simpan","cancel_desc":"Batal semua pertukaran"},nonbreaking:{"nonbreaking_desc":"Masukkan aksara ruang [nbsp]"},iespell:{download:"ieSpell tiada. Pasang sekarang?","iespell_desc":"Larikan pembetulan ejaan"},advhr:{"advhr_desc":"Garis mengufuk","delta_height":"","delta_width":""},emotions:{"emotions_desc":"Simbol Emosi","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"Cari/Ganti","search_desc":"Cari","delta_width":"","delta_height":""},advimage:{"image_desc":"Sisip/sunting imej","delta_width":"","delta_height":""},advlink:{"link_desc":"Sisip/sunting pautan","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"Masukkan/Sunting Ciri-ciri","ins_desc":"Kemasukan","del_desc":"Pemadaman","acronym_desc":"Akronim","abbr_desc":"Singkatan","cite_desc":"Kutipan","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"Sunting Gaya CSS","delta_height":"","delta_width":""},paste:{"selectall_desc":"Pilih semua","paste_word_desc":"Tempel dari Word","paste_text_desc":"Tempel sebagai teks","plaintext_mode":"Paste is now in plain text mode. Click again to toggle back to regular paste mode.","plaintext_mode_sticky":"Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode."},"paste_dlg":{"word_title":"Guna CTRL+V pada papan kekunci anda untuk teks ke dalam tetingkap.","text_linebreaks":"Biarkan garisan pemisah","text_title":"Guna CTRL+V pada papan kekunci anda untuk Tempel teks ke dalam tetingkap."},table:{cell:"Sel",col:"Kolum",row:"Row",del:"Padam jadual","copy_row_desc":"Salin jadual row","cut_row_desc":"Potong jadual row","paste_row_after_desc":"Tempel jadual row selepasnya","paste_row_before_desc":"Tempel jadual row sebelumnya","props_desc":"Alatan jadual","cell_desc":"Alatan jadual sel","row_desc":"Alatan jadual row","merge_cells_desc":"Gabung sel jadual","split_cells_desc":"Bahagi sel jadual","delete_col_desc":"Alih kolum","col_after_desc":"Masukkan kolum selepasnya","col_before_desc":"Masukkan kolum sebelumnya","delete_row_desc":"Padam row","row_after_desc":"Masukkan row selepasnya","row_before_desc":"Masukkan row sebelumnya",desc:"Masukkan jadual baru","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"unload_msg":"Pertukaran akan terbatal sekiranya anda meninggalkan halaman ini.","warning_message":"If you restore the saved content, you will lose all the content that is currently in the editor.\n\nAre you sure you want to restore the saved content?","restore_content":"Restore auto-saved content."},fullscreen:{desc:"Alih mod skrin penuh"},media:{edit:"Sunting media",desc:"Masukkan / sunting media","delta_height":"","delta_width":""},fullpage:{desc:"Alatan dokumen","delta_width":"","delta_height":""},template:{desc:"Masukkan pra takrifan kandungan templet"},visualchars:{desc:"Pengendali grafik huruf Buka/Tutup."},spellchecker:{desc:"Alih pembetul perkataan",menu:"Alatan pembetul perkataan","ignore_word":"Endahkan perkataan","ignore_words":"Endahkan kesemuanya",langs:"Bahasa-bahasa",wait:"Sila tunggu...",sug:"Cadangan","no_sug":"Tiada cadangan","no_mpell":"Tiada kesalahan ejaan.","learn_word":"Learn word"},pagebreak:{desc:"Masukkan penghenti-halaman."},advlist:{types:"Types",def:"Default","lower_alpha":"Lower Alpha","lower_greek":"Lower Greek","lower_roman":"Lower Roman","upper_alpha":"Upper Alpha","upper_roman":"Upper Roman",circle:"Circle",disc:"Disc",square:"Square"},colors:{"333300":"Dark olive","993300":"Burnt orange","000000":"Black","003300":"Dark green","003366":"Dark azure","000080":"Navy Blue","333399":"Indigo","333333":"Very dark gray","800000":"Maroon",FF6600:"Orange","808000":"Olive","008000":"Green","008080":"Teal","0000FF":"Blue","666699":"Grayish blue","808080":"Gray",FF0000:"Red",FF9900:"Amber","99CC00":"Yellow green","339966":"Sea green","33CCCC":"Turquoise","3366FF":"Royal blue","800080":"Purple","999999":"Medium gray",FF00FF:"Magenta",FFCC00:"Gold",FFFF00:"Yellow","00FF00":"Lime","00FFFF":"Aqua","00CCFF":"Sky blue","993366":"Brown",C0C0C0:"Silver",FF99CC:"Pink",FFCC99:"Peach",FFFF99:"Light yellow",CCFFCC:"Pale green",CCFFFF:"Pale cyan","99CCFF":"Light sky blue",CC99FF:"Plum",FFFFFF:"White"},aria:{"rich_text_area":"Rich Text Area"},wordcount:{words:"Words"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/nb.js b/program/js/tiny_mce/langs/nb.js
deleted file mode 100644
index 38e5a71ce..000000000
--- a/program/js/tiny_mce/langs/nb.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({nb:{common:{"more_colors":"Flere farger","invalid_data":"Feil: Ugyldige verdier er skrevet inn, disse er merket med r\u00f8dt.","popup_blocked":"Beklager, det er registrert at du har en popup-sperre aktivert i nettleseren. Du m\u00e5 oppheve popup-sperren for nettstedet for \u00e5 f\u00e5 tilgang til dette verkt\u00f8yet","clipboard_no_support":"For tiden ikke st\u00f8ttet av din nettleser, benytt tastatursnarveier i stedet.","clipboard_msg":"Klipp ut / Kopier /Lim inn fungerer ikke i Mozilla og Firefox. Vil du vite mer om dette?","not_set":"--ikke satt--","class_name":"Klasse",browse:"Bla gjennom",close:"Lukk",cancel:"Avbryt",update:"Oppdater",insert:"Sett inn",apply:"Legg til","edit_confirm":"Vil du benytte WYSIWYG-editoren for dette tekstfeltet?","invalid_data_number":"{#field} m\u00e5 v\u00e6re et nummer","invalid_data_min":"{#field} m\u00e5 v\u00e6re en nummer st\u00f8rre en {#min}","invalid_data_size":"{#field} m\u00e5 v\u00e6re et nummer eller prosent",value:"(verdi)"},contextmenu:{full:"Full",right:"H\u00f8yre",center:"Midtstill",left:"Venstre",align:"Justering"},insertdatetime:{"day_short":"s\u00f8n,man,tir,ons,tor,fre,l\u00f8r,s\u00f8n","day_long":"s\u00f8ndag,mandag,tirsdag,onsdag,torsdag,fredag,l\u00f8rdag,s\u00f8ndag","months_short":"jan,feb,mar,apr,mai,jun,jul,aug,sep,oct,nov,des","months_long":"januar,februar,mars,april,mai,juni,juli,august,september,oktober,november,desember","inserttime_desc":"Sett inn tidspunkt","insertdate_desc":"Sett inn dato","time_fmt":"%H:%M:%S","date_fmt":"%Y-%m-%d"},print:{"print_desc":"Skriv u"},preview:{"preview_desc":"Forh\u00e5ndsvisning"},directionality:{"rtl_desc":"Retning h\u00f8yre mot venstre","ltr_desc":"Retning venstre mot h\u00f8yre"},layer:{content:"Nytt lag...","absolute_desc":"Sl\u00e5 p\u00e5/av absolutt plassering","backward_desc":"Flytt bakover","forward_desc":"Flytt framover","insertlayer_desc":"Sett inn nytt lag"},save:{"save_desc":"Lagre","cancel_desc":"Kanseller alle endringer"},nonbreaking:{"nonbreaking_desc":"Sett inn hardt mellomrom"},iespell:{download:"ieSpell ikke funnet. \u00d8nsker du \u00e5 installere ieSpell n\u00e5?","iespell_desc":"Kj\u00f8rer rettskrivningskontroll"},advhr:{"advhr_desc":"Horisontal linje","delta_height":"","delta_width":""},emotions:{"delta_height":"","emotions_desc":"Hum\u00f8rfjes","delta_width":""},searchreplace:{"replace_desc":"S\u00f8k/Erstatt","search_desc":"S\u00f8k","delta_width":"","delta_height":""},advimage:{"image_desc":"Sett inn / endre bilde","delta_width":"","delta_height":""},advlink:{"link_desc":"Sett inn / endre lenke","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"Sett inn / endre Egenskaper","ins_desc":"Innsetting","del_desc":"Sletting","acronym_desc":"Akronym","abbr_desc":"Forkortelse","cite_desc":"Sitat","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"Rediger CSS-stil","delta_height":"","delta_width":""},paste:{"plaintext_mode":"\'Lim inn\' er n\u00e5 i \'ren tekst\'-modus. Klikk en gang til for \u00e5 g\u00e5 tilbake til normal modus.","plaintext_mode_sticky":"\'Lim inn\' er n\u00e5 i \'ren tekst\'-modus. Klikk en gang til for \u00e5 g\u00e5 tilbake til normal modus. Etter at du har limt inn noe vil du bli tatt tilbake til normal modus.","selectall_desc":"Merk alt","paste_word_desc":"Lim inn fra Word","paste_text_desc":"Lim inn som ren tekst"},"paste_dlg":{"word_title":"Bruk CTRL+V p\u00e5 tastaturet for \u00e5 lime inn i dette vinduet.","text_linebreaks":"Behold tekstbryting","text_title":"Bruk CTRL+V p\u00e5 tastaturet for \u00e5 lime inn i dette vinduet."},table:{cell:"Celle",col:"Kolonne",row:"Rad",del:"Slett tabell","copy_row_desc":"Kopier rad","cut_row_desc":"Fjern rad","paste_row_after_desc":"Lim inn rad etter","paste_row_before_desc":"Lim inn rad foran","props_desc":"Tabellegenskaper","cell_desc":"Celleegenskaper","row_desc":"Radegenskaper","merge_cells_desc":"Sl\u00e5 sammen celler","split_cells_desc":"Del celler","delete_col_desc":"Fjern kolonne","col_after_desc":"Sett inn kolonne etter","col_before_desc":"Sett inn kolonne foran","delete_row_desc":"Fjern rad","row_after_desc":"Sett inn rad etter","row_before_desc":"Sett inn rad foran",desc:"Sett inn ny tabell","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"Om du gjenoppretter lagret innhold vil du miste alt innhold som n\u00e5 er i tekstbehandleren.\n\nEr du sikker p\u00e5 at du \u00f8nsker \u00e5 gjenopprette lagret innhold?","restore_content":"Gjenopprett autolagret innhold.","unload_msg":"Endringene du gjorde g\u00e5r tapt dersom du velger \u00e5 forlate denne siden!"},fullscreen:{desc:"Skift til/fra fullskjermmodus"},media:{edit:"Endre inkludert objekt",desc:"Sett inn / rediger inkludert objekt","delta_height":"","delta_width":""},fullpage:{desc:"Dokumentegenskaper","delta_width":"","delta_height":""},template:{desc:"Sett inn forh\u00e5ndsdefinert malinnhold"},visualchars:{desc:"Visuelle kontrolltegn p\u00e5/av"},spellchecker:{desc:"Stavekontroll p\u00e5/av",menu:"Vis meny","ignore_word":"Ignorer ord","ignore_words":"Ignorer alt",langs:"Spr\u00e5k",wait:"Vennligst vent...",sug:"Forslag","no_sug":"Ingen forslag","no_mpell":"Ingen stavefeil funnet","learn_word":"L\u00e6r ord"},pagebreak:{desc:"Sett inn sideskift"},advlist:{types:"Typer",def:"Standard","lower_alpha":"Liten alfa","lower_greek":"Liten gresk","lower_roman":"Liten romersk","upper_alpha":"Stor alfa","upper_roman":"Stor romersk",circle:"Sirkel",disc:"Disk",square:"Firkant"},colors:{"333300":"M\u00f8rk oliven","993300":"Brent oransje","000000":"Sort","003300":"M\u00f8rk gr\u00f8nn","003366":"M\u00f8rk asurbl\u00e5","000080":"Marinebl\u00e5","333399":"Indigo","333333":"Veldig m\u00f8rk gr\u00e5","800000":"R\u00f8dbrun",FF6600:"Oransje","808000":"Oliven","008000":"Gr\u00f8nn","008080":"Bl\u00e5gr\u00f8nn","0000FF":"Bl\u00e5","666699":"Gr\u00e5bl\u00e5","808080":"Gr\u00e5",FF0000:"R\u00f8d",FF9900:"Rav","99CC00":"Gulgr\u00f8nn","339966":"Sj\u00f8gr\u00f8nn","33CCCC":"Turkis","3366FF":"Kongebl\u00e5","800080":"Lilla","999999":"Mellomgr\u00e5",FF00FF:"Magenta",FFCC00:"Gull",FFFF00:"Gul","00FF00":"Lime","00FFFF":"Turkis","00CCFF":"Himmelbl\u00e5","993366":"Brun",C0C0C0:"S\u00f8lv",FF99CC:"Rosa",FFCC99:"Fersken",FFFF99:"Lysegul",CCFFCC:"Blekgr\u00f8nn",CCFFFF:"Blekbl\u00e5","99CCFF":"Lys himmelbl\u00e5",CC99FF:"Plomme",FFFFFF:"Hvit"},aria:{"rich_text_area":"Rikt tekstfelt"},wordcount:{words:"Ord"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/nl.js b/program/js/tiny_mce/langs/nl.js
deleted file mode 100644
index a8cdad2e5..000000000
--- a/program/js/tiny_mce/langs/nl.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({nl:{common:{"more_colors":"Meer kleuren","invalid_data":"Fout: Er zijn ongeldige waardes ingevoerd, deze zijn rood gemarkeerd.","popup_blocked":"U zult uw popup-blocker tijdelijk moeten uitschakelen voor deze website om gebruik te kunnen maken van alle functies van deze teksteditor.","clipboard_no_support":"Kopi\u00ebren/knippen/plakken wordt niet ondersteund door uw browser, gebruik hiervoor de sneltoetsen.","clipboard_msg":"Kopi\u00ebren/knippen/plakken is niet beschikbaar in Mozilla en Firefox.\nWilt u meer informatie over deze beperking?","not_set":"- Standaard -","class_name":"Klasse",browse:"Bladeren",close:"Sluiten",cancel:"Annuleren",update:"Bijwerken",insert:"Invoegen",apply:"Toepassen","edit_confirm":"Weet u zeker dat u tekst in WYSIWYG mode wilt bewerken in dit tekstveld?","invalid_data_number":"{#field} moet een nummer zijn","invalid_data_min":"{#field} moet groter zijn dan {#min}","invalid_data_size":"{#field} moet een nummer of percentage zijn",value:"(waarde aanpassen)"},contextmenu:{full:"Uitvullen",right:"Rechts",center:"Centreren",left:"Links",align:"Uitlijning"},insertdatetime:{"day_short":"zo,ma,di,wo,do,vr,za,zo","day_long":"Zondag,Maandag,Dinsdag,Woensdag,Donderdag,Vrijdag,Zaterdag,Zondag","months_short":"Jan,Feb,Mar,Apr,Mei,Jun,Jul,Aug,Sep,Okt,Nov,Dec","months_long":"Januari,Februari,Maart,April,Mei,Juni,Juli,Augustus,September,Oktober,November,December","inserttime_desc":"Tijd invoegen","insertdate_desc":"Datum invoegen","time_fmt":"%H:%M:%S","date_fmt":"%d-%m-%Y"},print:{"print_desc":"Afdrukken"},preview:{"preview_desc":"Voorbeeld"},directionality:{"rtl_desc":"Van rechts naar links","ltr_desc":"Van links naar rechts"},layer:{content:"Nieuwe laag...","absolute_desc":"Absoluut positioneren inschakelen","backward_desc":"Vorige laag","forward_desc":"Volgende laag","insertlayer_desc":"Nieuwe laag invoegen"},save:{"save_desc":"Opslaan","cancel_desc":"Alle wijzigingen annuleren"},nonbreaking:{"nonbreaking_desc":"Harde spatie invoegen"},iespell:{download:"ieSpell niet gevonden. Wilt u deze nu installeren?","iespell_desc":"Spellingcontrole"},advhr:{"advhr_desc":"Scheidingslijn","delta_height":"","delta_width":""},emotions:{"emotions_desc":"Emoties","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"Zoeken/Vervangen","search_desc":"Zoeken","delta_width":"","delta_height":""},advimage:{"image_desc":"Afbeelding invoegen/bewerken","delta_width":"","delta_height":""},advlink:{"link_desc":"Link invoegen/bewerken","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"Attributen invoegen/bewerken","ins_desc":"Ingevoegd","del_desc":"Verwijderd","acronym_desc":"Synoniem","abbr_desc":"Afkorting","cite_desc":"Citaat","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"CSS Stijl bewerken","delta_height":"","delta_width":""},paste:{"plaintext_mode":"Plakken is nu in plattetekstmodus. Klik nog een keer om terug te gaan naar normaal plakken.","plaintext_mode_sticky":"Plakken is nu in plattetekstmodus. Klik nog een keer om terug te gaan naar normaal plakken. Nadat u iets plakt, keert u terug naar normaal plakken.","selectall_desc":"Alles selecteren","paste_word_desc":"Vanuit Word plakken","paste_text_desc":"Als platte tekst plakken"},"paste_dlg":{"word_title":"Gebruik Ctrl+V om tekst in het venster te plakken.","text_linebreaks":"Regelafbreking bewaren","text_title":"Gebruik Ctrl+V om tekst in het venster te plakken."},table:{cell:"Cel",col:"Kolom",row:"Rij",del:"Tabel verwijderen","copy_row_desc":"Rij kopi\u00ebren","cut_row_desc":"Rij knippen","paste_row_after_desc":"Rij onder plakken","paste_row_before_desc":"Rij boven plakken","props_desc":"Tabeleigenschappen","cell_desc":"Cel-eigenschappen","row_desc":"Rij-eigenschappen","merge_cells_desc":"Cellen samenvoegen","split_cells_desc":"Cellen splitsen","delete_col_desc":"Kolom verwijderen","col_after_desc":"Kolom rechts invoegen","col_before_desc":"Kolom links invoegen","delete_row_desc":"Rij verwijderen","row_after_desc":"Rij onder invoegen","row_before_desc":"Rij boven invoegen",desc:"Tabel invoegen/bewerken","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"Als u de opgeslagen inhoud laadt, verliest u de inhoud die zich momenteel in de editor bevindt.\n\nWeet u zeker dat u de opgeslagen inhoud wilt laden?","restore_content":"Automatisch opgeslagen inhoud laden.","unload_msg":"De wijzigingen zullen verloren gaan als u nu deze pagina verlaat."},fullscreen:{desc:"Volledig scherm"},media:{edit:"Media bewerken",desc:"Media invoegen/bewerken","delta_height":"","delta_width":""},fullpage:{desc:"Documenteigenschappen","delta_width":"","delta_height":""},template:{desc:"Voorgedefinieerd sjabloon invoegen"},visualchars:{desc:"Zichtbare symbolen"},spellchecker:{desc:"Spellingcontrole",menu:"Instellingen spellingcontrole","ignore_word":"Woord negeren","ignore_words":"Alles negeren",langs:"Talen",wait:"Een ogenblik geduld\u2026",sug:"Suggesties","no_sug":"Geen suggesties","no_mpell":"Geen spelfouten gevonden.","learn_word":"Woord toevoegen aan spellingscontrole"},pagebreak:{desc:"Pagina-einde invoegen"},advlist:{types:"Types",def:"Standaard","lower_alpha":"Alfa (klein)","lower_greek":"Griekse letters (klein)","lower_roman":"Romeinse letters (klein)","upper_alpha":"Alfa (groot)","upper_roman":"Romeinse letters (groot)",circle:"Cirkel",disc:"Schijf",square:"Vierkant"},colors:{"333300":"Donkerolijf","993300":"Gebrand oranje","000000":"Zwart","003300":"Donkergroen","003366":"Donkerazuur","000080":"Marineblauw","333399":"Indigo","333333":"Heel donkergrijs","800000":"Kastanjebruin",FF6600:"Oranje","808000":"Olijf","008000":"Groen","008080":"Teal","0000FF":"Blauw","666699":"Grijsblauw","808080":"Grijs",FF0000:"Rood",FF9900:"Amber","99CC00":"Geelgroen","339966":"Zeegroen","33CCCC":"Turkoois","3366FF":"Koningsblauw","800080":"Paars","999999":"Middengrijs",FF00FF:"Magenta",FFCC00:"Goud",FFFF00:"Geel","00FF00":"Limoen","00FFFF":"Aqua","00CCFF":"Hemelsblauw","993366":"Bruin",C0C0C0:"Zilver",FF99CC:"Roze",FFCC99:"Perzik",FFFF99:"Lichtgeel",CCFFCC:"Bleekgroen",CCFFFF:"Bleekcyaan","99CCFF":"Licht hemelsblauw",CC99FF:"Pruim",FFFFFF:"Wit"},aria:{"rich_text_area":"Tekst met opmaak"},wordcount:{words:"Aantal woorden:"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/nn.js b/program/js/tiny_mce/langs/nn.js
deleted file mode 100644
index 2924d251f..000000000
--- a/program/js/tiny_mce/langs/nn.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({nn:{common:{"more_colors":"Fleire fargar","invalid_data":"Feil: Ugyldige verdiar er skrivne inn, desse er merka med raudt","popup_blocked":"Orsak, det er registrert at du har popup-sperre aktivert i nettlesaren. Du m\u00e5 oppheve popup-sperra for nettstaden for \u00e5 f\u00e5 tilgang til dette verktyet","clipboard_no_support":"For tida ikkje st\u00f8tta av nettlesaren din, bruk tastatursnarveger i staden.","clipboard_msg":"Klipp ut / Kopier /Lim inn fungerer ikkje i Mozilla og Firefox. Vil du vite meir om dette?","not_set":"--ikkje sett--","class_name":"Klasse",browse:"Bla gjennom",close:"Stopp",cancel:"Avbryt",update:"Oppdater",insert:"Set inn",apply:"Legg til","edit_confirm":"Vil du bruke WYSIWYG-editoren for dette tekstfeltet?","invalid_data_number":"{#field} m\u00e5 vere eit nummer","invalid_data_min":"{#field} m\u00e5 vere eit nummer h\u00f8gare enn {#min}","invalid_data_size":"{#field} m\u00e5 vere eit nummer eller ein prosent",value:"(verdi)"},contextmenu:{full:"Full",right:"H\u00f8gre",center:"Midtstill",left:"Venstre",align:"Justering"},insertdatetime:{"day_short":"sun,man,tir,ons,tor,fre,lau,sun","day_long":"sundag,mandag,tirsdag,onsdag,torsdag,fredag,laurdag,sundag","months_short":"jan,feb,mar,apr,mai,jun,jul,aug,sep,oct,nov,des","months_long":"januar,februar,mars,april,mai,juni,juli,august,september,oktober,november,desember","inserttime_desc":"Lim inn tid","insertdate_desc":"Lim inn dato","time_fmt":"%H:%M:%S","date_fmt":"%Y-%m-%d"},print:{"print_desc":"Skriv u"},preview:{"preview_desc":"F\u00f8rehandsvisni"},directionality:{"rtl_desc":"Retning h\u00f8gre mot venstre","ltr_desc":"Retning venstre mot h\u00f8gre"},layer:{content:"Nytt lag...","absolute_desc":"Sl\u00e5 p\u00e5/av absolutt plassering","backward_desc":"Flytt bakover","forward_desc":"Flytt framover","insertlayer_desc":"Set inn nytt lag"},save:{"save_desc":"Lagre","cancel_desc":"Kanseller alle endringar"},nonbreaking:{"nonbreaking_desc":"Set inn hardt mellomrom"},iespell:{download:"ieSpell ikkje funnen. \u00d8nskjer du \u00e5 installere ieSpell no?","iespell_desc":"K\u00f8yrer kontroll av rettskriving"},advhr:{"advhr_desc":"Horisontal linje","delta_height":"","delta_width":""},emotions:{"emotions_desc":"Hum\u00f8rfjes","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"S\u00f8k/Erstatt","search_desc":"S\u00f8k","delta_width":"","delta_height":""},advimage:{"image_desc":"Set inn / endre bilete","delta_width":"","delta_height":""},advlink:{"link_desc":"Set inn / endre lenkje","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"Set inn / Endre eigenskapar","ins_desc":"Innsetjing","del_desc":"Sletting","acronym_desc":"Akronym","abbr_desc":"Forkorting","cite_desc":"Sitat","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"Rediger CSS-stil","delta_height":"","delta_width":""},paste:{"selectall_desc":"Marker al","paste_word_desc":"Lim inn fr\u00e5 Word","paste_text_desc":"Lim inn som vanleg tekst","plaintext_mode":"Paste is now in plain text mode. Click again to toggle back to regular paste mode.","plaintext_mode_sticky":"Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode."},"paste_dlg":{"word_title":"Bruk CTRL+V p\u00e5 tastaturet for \u00e5 lime inn i dette vindauget.","text_linebreaks":"Behald tekstbryting","text_title":"Bruk CTRL+V p\u00e5 tastaturet for \u00e5 lime inn i dette vindauget."},table:{cell:"Celle",col:"Kolonne",row:"Rad",del:"Slett tabell","copy_row_desc":"Kopier rad","cut_row_desc":"Fjern rad","paste_row_after_desc":"Lim inn rad etter","paste_row_before_desc":"Lim inn rad framfor","props_desc":"Tabelleigenskapar","cell_desc":"Celleegenskapar","row_desc":"Radeigenskapar","merge_cells_desc":"Sl\u00e5 saman celler","split_cells_desc":"Del celler","delete_col_desc":"Fjern kolonne","col_after_desc":"Set inn kolonne etter","col_before_desc":"Set inn kolonne framfor","delete_row_desc":"Fjern rad","row_after_desc":"Set inn rad etter","row_before_desc":"Set inn rad framfor",desc:"Set inn ein ny tabell","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"Om du gjenopprettar lagra innhald vil du miste alt innhald som finst i tekstbehandler no.\n\nEr du sikker p\u00e5 at du ynskjer \u00e5 gjenopprette lagra innhald?","restore_content":"Gjenopprett autolagra innhald","unload_msg":"Endringane du gjorde g\u00e5r tapt om du forl\u00e8t denne sida!"},fullscreen:{desc:"Skift til/fr\u00e5 fullskjermmodus"},media:{edit:"Endre innsett objekt",desc:"Set inn / rediger inkludert objekt","delta_height":"","delta_width":""},fullpage:{desc:"Dokumenteigenskapar","delta_width":"","delta_height":""},template:{desc:"Set inn f\u00f8rehandsdefinert malinnhald"},visualchars:{desc:"Visuelle konktrollteikn p\u00e5/av"},spellchecker:{desc:"Stavekontroll p\u00e5/av",menu:"Vis meny","ignore_word":"Ignorer ord","ignore_words":"Ignorer alt",langs:"Spr\u00e5k",wait:"Ver venleg og vent...",sug:"Framlegg","no_sug":"Inga framlegg","no_mpell":"Inga stavefeil funne.","learn_word":"L\u00e6r ord"},pagebreak:{desc:"Set inn sideskift"},advlist:{types:"Types",def:"Default","lower_alpha":"Lower Alpha","lower_greek":"Lower Greek","lower_roman":"Lower Roman","upper_alpha":"Upper Alpha","upper_roman":"Upper Roman",circle:"Circle",disc:"Disc",square:"Square"},colors:{"333300":"Dark olive","993300":"Burnt orange","000000":"Black","003300":"Dark green","003366":"Dark azure","000080":"Navy Blue","333399":"Indigo","333333":"Very dark gray","800000":"Maroon",FF6600:"Orange","808000":"Olive","008000":"Green","008080":"Teal","0000FF":"Blue","666699":"Grayish blue","808080":"Gray",FF0000:"Red",FF9900:"Amber","99CC00":"Yellow green","339966":"Sea green","33CCCC":"Turquoise","3366FF":"Royal blue","800080":"Purple","999999":"Medium gray",FF00FF:"Magenta",FFCC00:"Gold",FFFF00:"Yellow","00FF00":"Lime","00FFFF":"Aqua","00CCFF":"Sky blue","993366":"Brown",C0C0C0:"Silver",FF99CC:"Pink",FFCC99:"Peach",FFFF99:"Light yellow",CCFFCC:"Pale green",CCFFFF:"Pale cyan","99CCFF":"Light sky blue",CC99FF:"Plum",FFFFFF:"White"},aria:{"rich_text_area":"Omr\u00e5de for rik tekst"},wordcount:{words:"Ord:"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/pl.js b/program/js/tiny_mce/langs/pl.js
deleted file mode 100644
index 475b45da1..000000000
--- a/program/js/tiny_mce/langs/pl.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({pl:{common:{"more_colors":"Wi\u0119cej kolor\u00f3w","invalid_data":"B\u0142\u0105d: Zosta\u0142y wprowadzone b\u0142\u0119dne dane, s\u0105 zaznaczone na czerwono.","popup_blocked":"Zauwa\u017cyli\u015bmy, \u017ce opcja blokowania wyskakuj\u0105cych okienek wy\u0142\u0105czy\u0142a okno, kt\u00f3re dostarcza funkcjonalno\u015b\u0107 aplikacji. Aby w pe\u0142ni wykorzysta\u0107 to narz\u0119dzie musisz wy\u0142\u0105czy\u0107 blokowanie wyskakuj\u0105cych okienek na tej stronie.","clipboard_no_support":"Aktualnie nie jest obs\u0142ugiwany przez Twoj\u0105 przegl\u0105dark\u0119, u\u017cyj skr\u00f3t\u00f3w klawiaturowych w zamian.","clipboard_msg":"Akcje Kopiuj/Wytnij/Wklej nie s\u0105 dost\u0119pne w Mozilli i Firefox.\nCzy chcesz wi\u0119cej informacji o tym problemie?","not_set":"-- Brak --","class_name":"Klasa",browse:"Przegl\u0105daj",close:"Zamknij",cancel:"Anuluj",update:"Aktualizuj",insert:"Wstaw",apply:"Zastosuj","edit_confirm":"Czy chcesz u\u017cy\u0107 trybu WYSIWYG dla tego pola formularza?","invalid_data_number":"{#field} musi by\u0107 liczb\u0105","invalid_data_min":"{#field} musi by\u0107 liczb\u0105 wi\u0119ksz\u0105 od {#min}","invalid_data_size":"{#field} musi by\u0107 liczb\u0105 lub warto\u015bci\u0105 procentow\u0105",value:"(warto\u015b\u0107)"},contextmenu:{full:"Wyjustuj",right:"Do prawej",center:"Do \u015brodka",left:"Do lewej",align:"Wyr\u00f3wnanie"},insertdatetime:{"day_short":"N,Pn,Wt,\u015ar,Cz,Pt,So,N","day_long":"Niedziela,Poniedzia\u0142ek,Wtorek,\u015aroda,Czwartek,Pi\u0105tek,Sobota,Niedziela","months_short":"Sty,Lut,Mar,Kwi,Maj,Cze,Lip,Sie,Wrz,Pa\u017a,Lis,Gru","months_long":"Stycze\u0144,Luty,Marzec,Kwiecie\u0144,Maj,Czerwiec,Lipiec,Sierpie\u0144,Wrzesie\u0144,Pa\u017adziernik,Listopad,Grudzie\u0144","inserttime_desc":"Wstaw czas","insertdate_desc":"Wstaw dat\u0119","time_fmt":"%H:%M:%S","date_fmt":"%Y-%m-%d"},print:{"print_desc":"Drukuj"},preview:{"preview_desc":"Podgl\u0105d"},directionality:{"rtl_desc":"Kierunek od prawej do lewej","ltr_desc":"Kierunek od lewej do prawej"},layer:{content:"Nowa warstwa...","absolute_desc":"Prze\u0142\u0105cz pozycjonowanie absolutne","backward_desc":"Przesu\u0144 pod sp\u00f3d","forward_desc":"Przesu\u0144 na wierzch","insertlayer_desc":"Wstaw now\u0105 warstw\u0119"},save:{"save_desc":"Zachowaj","cancel_desc":"Anuluj wszystkie zmiany"},nonbreaking:{"nonbreaking_desc":"Wstaw tward\u0105 spacj\u0119"},iespell:{download:"ieSpell nie wykryte. Czy przeprowadzi\u0107 instalacj\u0119 tego komponentu?","iespell_desc":"Sprawd\u017a pisowni\u0119"},advhr:{"advhr_desc":"Pozioma linia","delta_height":"","delta_width":""},emotions:{"emotions_desc":"Emotikony","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"Znajd\u017a/zamie\u0144","search_desc":"Znajd\u017a","delta_width":"","delta_height":""},advimage:{"image_desc":"Wstaw/edytuj obraz","delta_width":"","delta_height":""},advlink:{"link_desc":"Wstaw/edytuj link","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"Wstaw / Edytuj atrybuty","ins_desc":"Wstawienie","del_desc":"Usuni\u0119cie","acronym_desc":"Akronim","abbr_desc":"Skr\u00f3t","cite_desc":"Cytat","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"Edytuj Style CSS","delta_height":"","delta_width":""},paste:{"plaintext_mode":"Wklejanie jest teraz dost\u0119pne w trybie tekstowym. Kliknij ponownie, aby prze\u0142\u0105czy\u0107 si\u0119 z powrotem do trybu wklejania sformatowanego tekstu.","plaintext_mode_sticky":"Wklejanie jest teraz dost\u0119pne w trybie tekstowym. Kliknij ponownie, aby prze\u0142\u0105czy\u0107 si\u0119 z powrotem do trybu wklejania sformatowanego tekstu. Po wklejeniu tekstu nast\u0105pi powr\u00f3t do trybu wklejania sformatowanego tekstu.","selectall_desc":"Zaznacz wszystko","paste_word_desc":"Wklej z Worda","paste_text_desc":"Wklej jako zwyk\u0142y tekst"},"paste_dlg":{"word_title":"U\u017cyj CTRL+V na swojej klawiaturze \u017ceby wklei\u0107 tekst do okna.","text_linebreaks":"Zachowaj ko\u0144ce linii.","text_title":"U\u017cyj CTRL+V na swojej klawiaturze \u017ceby wklei\u0107 tekst do okna."},table:{cell:"Kom\u00f3rka",col:"Kolumna",row:"Wiersz",del:"Usu\u0144 tabel\u0119","copy_row_desc":"Kopiuj wiersz...","cut_row_desc":"Wytnij wiersz...","paste_row_after_desc":"Wklej wiersz po...","paste_row_before_desc":"Wklej wiersz przed...","props_desc":"W\u0142a\u015bciwo\u015bci tabeli","cell_desc":"W\u0142a\u015bciwo\u015bci kom\u00f3rki","row_desc":"W\u0142a\u015bciwo\u015bci wiersza","merge_cells_desc":"Po\u0142\u0105cz kom\u00f3rki","split_cells_desc":"Podziel po\u0142\u0105czone kom\u00f3rki","delete_col_desc":"Usu\u0144 kolumn\u0119","col_after_desc":"Wstaw kolumn\u0119 po...","col_before_desc":"Wstaw kolumn\u0119 przed...","delete_row_desc":"Usu\u0144 wiersz","row_after_desc":"Wstaw nowy wiersz po...","row_before_desc":"Wstaw nowy wiersz przed...",desc:"Wstaw now\u0105 tabel\u0119","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"Je\u015bli przywr\u00f3cisz zapisan\u0105 tre\u015b\u0107, stracisz ca\u0142\u0105 tre\u015b\u0107, kt\u00f3ra teraz si\u0119 znajduje w edytorze.\n\nJeste\u015b pewien, \u017ce chcesz przywr\u00f3ci\u0107 zapisan\u0105 tre\u015b\u0107?","restore_content":"Przywr\u00f3\u0107 tre\u015b\u0107 zapisan\u0105 automatycznie.","unload_msg":"Zmiany, kt\u00f3rych dokona\u0142e\u015b zostan\u0105 utracone je\u015bli opu\u015bcisz t\u0119 stron\u0119."},fullscreen:{desc:"Prze\u0142\u0105cz tryb pe\u0142noekranowy"},media:{"delta_height":"",edit:"Edytuj wbudowane media",desc:"Wstaw/edytuj wbudowane media","delta_width":""},fullpage:{desc:"W\u0142a\u015bciwo\u015bci dokumentu","delta_width":"","delta_height":""},template:{desc:"Wstaw tre\u015b\u0107 szablonu"},visualchars:{desc:"W\u0142\u0105cz/wy\u0142\u0105cz znaki kontrolne."},spellchecker:{desc:"Sprawdzanie pisowni",menu:"Ustawienia sprawdzania pisowni","ignore_word":"Ignoruj s\u0142owo","ignore_words":"Ignoruj wszystkie",langs:"J\u0119zyki",wait:"Prosz\u0119 czeka\u0107...",sug:"Sugestie","no_sug":"Brak sugestii","no_mpell":"Nie znaleziono b\u0142\u0119d\u00f3w.","learn_word":"Dowiedz si\u0119 s\u0142owa"},pagebreak:{desc:"Wstaw znak nowej strony."},advlist:{types:"Rodzaje",def:"Domy\u015blny","lower_alpha":"Ma\u0142e alfabetu","lower_greek":"Ma\u0142e greckie","lower_roman":"Ma\u0142e rzymskie","upper_alpha":"Du\u017ce alfabetu","upper_roman":"Du\u017ce rzymskie",circle:"Ko\u0142o",disc:"Elipsa",square:"Kwadrat"},colors:{"333300":"Ciemnooliwkowy","993300":"Ochra","000000":"Czarny","003300":"Ciemnozielony","003366":"Ciemnolazurowy","000080":"Granatowy","333399":"Indygo","333333":"Bardzo ciemnoszary","800000":"Rdzawy",FF6600:"Pomara\u0144czowy","808000":"Oliwkowy","008000":"Zielony","008080":"Morski","0000FF":"Niebieski","666699":"Siny","808080":"Szary",FF0000:"Czerwony",FF9900:"Bursztynowy","99CC00":"\u017b\u00f3\u0142tozielony","339966":"Akwamaryna","33CCCC":"Turkusowy","3366FF":"B\u0142\u0119kit kr\u00f3lewski","800080":"Purpurowy","999999":"\u015arednioszary",FF00FF:"Fuksja",FFCC00:"Z\u0142oty",FFFF00:"\u017b\u00f3\u0142ty","00FF00":"Limonkowy","00FFFF":"Cyjan","00CCFF":"B\u0142\u0119kitny","993366":"Br\u0105zowy",C0C0C0:"Srebrny",FF99CC:"R\u00f3\u017cowy",FFCC99:"Brzoskwiniowy",FFFF99:"Jasno\u017c\u00f3\u0142ty",CCFFCC:"Bladozielony",CCFFFF:"Bladoturkusowy","99CCFF":"Jasnob\u0142\u0119kitny",CC99FF:"\u015aliwkowy",FFFFFF:"Bia\u0142y"},aria:{"rich_text_area":"Pole tekstowe"},wordcount:{words:"S\u0142owa:"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/ps.js b/program/js/tiny_mce/langs/ps.js
deleted file mode 100644
index fa24f83ca..000000000
--- a/program/js/tiny_mce/langs/ps.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({ps:{common:{"more_colors":"More colors","invalid_data":"Error: Invalid values entered, these are marked in red.","popup_blocked":"Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.","clipboard_no_support":"Currently not supported by your browser, use keyboard shortcuts instead.","clipboard_msg":"Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?","not_set":"-- Not set --","class_name":"Class",browse:"Browse",close:"Close",cancel:"Cancel",update:"Update",insert:"Insert",apply:"Apply","edit_confirm":"Do you want to use the WYSIWYG mode for this textarea?","invalid_data_number":"{#field} must be a number","invalid_data_min":"{#field} must be a number greater than {#min}","invalid_data_size":"{#field} must be a number or percentage",value:"(value)"},contextmenu:{full:"Full",right:"Right",center:"Center",left:"Left",align:"Alignment"},insertdatetime:{"day_short":"Sun,Mon,Tue,Wed,Thu,Fri,Sat,Sun","day_long":"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday","months_short":"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec","months_long":"January,February,March,April,May,June,July,August,September,October,November,December","inserttime_desc":"Insert time","insertdate_desc":"Insert date","time_fmt":"%H:%M:%S","date_fmt":"%Y-%m-%d"},print:{"print_desc":"Print"},preview:{"preview_desc":"Preview"},directionality:{"rtl_desc":"Direction right to left","ltr_desc":"Direction left to right"},layer:{content:"New layer...","absolute_desc":"Toggle absolute positioning","backward_desc":"Move backward","forward_desc":"Move forward","insertlayer_desc":"Insert new layer"},save:{"save_desc":"Save","cancel_desc":"Cancel all changes"},nonbreaking:{"nonbreaking_desc":"Insert non-breaking space character"},iespell:{download:"ieSpell not detected. Do you want to install it now?","iespell_desc":"Run spell checking"},advhr:{"advhr_desc":"Horizontal rule","delta_height":"","delta_width":""},emotions:{"emotions_desc":"Emotions","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"Find/Replace","search_desc":"Find","delta_width":"","delta_height":""},advimage:{"image_desc":"Insert/edit image","delta_width":"","delta_height":""},advlink:{"link_desc":"Insert/edit link","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"Insert/Edit Attributes","ins_desc":"Insertion","del_desc":"Deletion","acronym_desc":"Acronym","abbr_desc":"Abbreviation","cite_desc":"Citation","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"Edit CSS Style","delta_height":"","delta_width":""},paste:{"selectall_desc":"Select All","paste_word_desc":"Paste from Word","paste_text_desc":"Paste as Plain Text","plaintext_mode":"Paste is now in plain text mode. Click again to toggle back to regular paste mode.","plaintext_mode_sticky":"Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode."},"paste_dlg":{"word_title":"Use CTRL+V on your keyboard to paste the text into the window.","text_linebreaks":"Keep linebreaks","text_title":"Use CTRL+V on your keyboard to paste the text into the window."},table:{cell:"Cell",col:"Column",row:"Row",del:"Delete table","copy_row_desc":"Copy table row","cut_row_desc":"Cut table row","paste_row_after_desc":"Paste table row after","paste_row_before_desc":"Paste table row before","props_desc":"Table properties","cell_desc":"Table cell properties","row_desc":"Table row properties","merge_cells_desc":"Merge table cells","split_cells_desc":"Split merged table cells","delete_col_desc":"Remove column","col_after_desc":"Insert column after","col_before_desc":"Insert column before","delete_row_desc":"Delete row","row_after_desc":"Insert row after","row_before_desc":"Insert row before",desc:"Inserts a new table","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"unload_msg":"The changes you made will be lost if you navigate away from this page.","warning_message":"If you restore the saved content, you will lose all the content that is currently in the editor.\n\nAre you sure you want to restore the saved content?","restore_content":"Restore auto-saved content."},fullscreen:{desc:"Toggle fullscreen mode"},media:{edit:"Edit embedded media",desc:"Insert / edit embedded media","delta_height":"","delta_width":""},fullpage:{desc:"Document properties","delta_width":"","delta_height":""},template:{desc:"Insert predefined template content"},visualchars:{desc:"Visual control characters on/off."},spellchecker:{desc:"Toggle spellchecker",menu:"Spellchecker settings","ignore_word":"Ignore word","ignore_words":"Ignore all",langs:"Languages",wait:"Please wait...",sug:"Suggestions","no_sug":"No suggestions","no_mpell":"No misspellings found.","learn_word":"Learn word"},pagebreak:{desc:"Insert page break."},advlist:{types:"Types",def:"Default","lower_alpha":"Lower Alpha","lower_greek":"Lower Greek","lower_roman":"Lower Roman","upper_alpha":"Upper Alpha","upper_roman":"Upper Roman",circle:"Circle",disc:"Disc",square:"Square"},colors:{"333300":"Dark olive","993300":"Burnt orange","000000":"Black","003300":"Dark green","003366":"Dark azure","000080":"Navy Blue","333399":"Indigo","333333":"Very dark gray","800000":"Maroon",FF6600:"Orange","808000":"Olive","008000":"Green","008080":"Teal","0000FF":"Blue","666699":"Grayish blue","808080":"Gray",FF0000:"Red",FF9900:"Amber","99CC00":"Yellow green","339966":"Sea green","33CCCC":"Turquoise","3366FF":"Royal blue","800080":"Purple","999999":"Medium gray",FF00FF:"Magenta",FFCC00:"Gold",FFFF00:"Yellow","00FF00":"Lime","00FFFF":"Aqua","00CCFF":"Sky blue","993366":"Brown",C0C0C0:"Silver",FF99CC:"Pink",FFCC99:"Peach",FFFF99:"Light yellow",CCFFCC:"Pale green",CCFFFF:"Pale cyan","99CCFF":"Light sky blue",CC99FF:"Plum",FFFFFF:"White"},aria:{"rich_text_area":"Rich Text Area"},wordcount:{words:"Words"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/pt.js b/program/js/tiny_mce/langs/pt.js
deleted file mode 100644
index 809f1c2d9..000000000
--- a/program/js/tiny_mce/langs/pt.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({pt:{common:{"more_colors":"Mais Cores","invalid_data":"Erro: Valores inv\u00e1lidos marcados em vermelho.","popup_blocked":"Detectamos que o seu bloqueador de popups bloqueou uma janela que \u00e9 essencial para a aplica\u00e7\u00e3o. Voc\u00ea precisa desativar o bloqueador de janelas de popups para utilizar esta ferramenta.","clipboard_no_support":"O seu browser n\u00e3o suporta esta fun\u00e7\u00e3o, use os atalhos do teclado.","clipboard_msg":"Copiar/recortar/colar n\u00e3o est\u00e1 dispon\u00edvel no Mozilla e Firefox. Deseja mais informa\u00e7\u00f5es sobre este problema?","not_set":"-- N/A --","class_name":"Classe",browse:"Procurar",close:"Fechar",cancel:"Cancelar",update:"Atualizar",insert:"Inserir",apply:"Aplicar","edit_confirm":"Deseja usar o modo de edi\u00e7\u00e3o avan\u00e7ado neste campo de texto?","invalid_data_number":"{#field} deve ser um n\u00famero","invalid_data_min":"{#field} deve ser um n\u00famero maior que {#min}","invalid_data_size":"{#field} deve ser um n\u00famero ou uma percentagem",value:"(valor)"},contextmenu:{full:"Justificado",right:"Direita",center:"Centro",left:"Esquerda",align:"Alinhamento"},insertdatetime:{"day_short":"Dom,Seg,Ter,Qua,Qui,Sex,Sab,Dom","day_long":"Domingo,Segunda-feira,Ter\u00e7a-feira,Quarta-feira,Quinta-feira,Sexta-feira,S\u00e1bado,Domingo","months_short":"Jan,Fev,Mar,Abr,Mai,Jun,Jul,Ago,Set,Out,Nov,Dez","months_long":"Janeiro,Fevereiro,Mar\u00e7o,Abril,Maio,Junho,Julho,Agosto,Setembro,Outubro,Novembro,Dezembro","inserttime_desc":"Inserir hora","insertdate_desc":"Inserir data","time_fmt":"%H:%M:%S","date_fmt":"%d-%m-%Y"},print:{"print_desc":"Imprimir"},preview:{"preview_desc":"Pr\u00e9-visualizar"},directionality:{"rtl_desc":"Da direita para esquerda","ltr_desc":"Da esquerda para direita"},layer:{content:"Nova camada...","absolute_desc":"Alternar o posicionamento absoluto","backward_desc":"Mover para tr\u00e1s","forward_desc":"Mover para frente","insertlayer_desc":"Inserir nova camada"},save:{"save_desc":"Salvar","cancel_desc":"Cancelar todas as altera\u00e7\u00f5es"},nonbreaking:{"nonbreaking_desc":"Inserir um espa\u00e7o \"sem quebra\""},iespell:{download:"Plugin de ortografia n\u00e3o-detectado. Deseja instalar agora?","iespell_desc":"Verificar ortografia"},advhr:{"advhr_desc":"Separador horizontal","delta_height":"","delta_width":""},emotions:{"emotions_desc":"Emoticons","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"Localizar/substituir","search_desc":"Localizar","delta_width":"","delta_height":""},advimage:{"image_desc":"Inserir/editar imagem","delta_width":"","delta_height":""},advlink:{"delta_width":"50","link_desc":"Inserir/editar hyperlink","delta_height":""},xhtmlxtras:{"attribs_desc":"Inserir/Editar atributos","ins_desc":"Inserir","del_desc":"Apagar","acronym_desc":"Acr\u00f4nimo","abbr_desc":"Abrevia\u00e7\u00e3o","cite_desc":"Cita\u00e7\u00e3o","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"Editar CSS","delta_height":"","delta_width":""},paste:{"plaintext_mode":"Comando colar est\u00e1 em modo texto simples. Clique novamente para voltar para o modo normal.","plaintext_mode_sticky":"Comando colar est\u00e1 em modo texto simples. Clique novamente para voltar para o modo normal. Depois de colar alguma coisa retornar\u00e1 para o modo normal.","selectall_desc":"Selecionar tudo","paste_word_desc":"Colar (copiado do WORD)","paste_text_desc":"Colar como texto simples"},"paste_dlg":{"word_title":"Use CTRL+V para colar o texto na janela.","text_linebreaks":"Manter quebras de linha","text_title":"Use CTRL+V para colar o texto na janela."},table:{cell:"C\u00e9lula",col:"Coluna",row:"Linha",del:"Apagar tabela","copy_row_desc":"Copiar linha","cut_row_desc":"Recortar linha","paste_row_after_desc":"Colar linha depois","paste_row_before_desc":"Colar linha antes","props_desc":"Propriedades da tabela","cell_desc":"Propriedades das c\u00e9lulas","row_desc":"Propriedades das linhas","merge_cells_desc":"Unir c\u00e9lulas","split_cells_desc":"Dividir c\u00e9lulas","delete_col_desc":"Remover coluna","col_after_desc":"Inserir coluna depois","col_before_desc":"Inserir coluna antes","delete_row_desc":"Apagar linha","row_after_desc":"Inserir linha depois","row_before_desc":"Inserir linha antes",desc:"Inserir nova tabela","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"Se restaurar o conte\u00fado, voc\u00ea ir\u00e1 perder tudo que est\u00e1 atualmente no editor.\n\nTem certeza que quer restaurar o conte\u00fado salvo?","restore_content":"Restaura conte\u00fado salvo automaticamente.","unload_msg":"As mudan\u00e7as efetuadas ser\u00e3o perdidas se sair desta p\u00e1gina."},fullscreen:{desc:"Tela Inteira"},media:{edit:"Editar m\u00eddia embutida",desc:"Inserir/Editar m\u00eddia embutida","delta_height":"","delta_width":""},fullpage:{desc:"Propriedades do Documento","delta_width":"","delta_height":""},template:{desc:"Inserir template"},visualchars:{desc:"Caracteres de controle visual ligado/desligado"},spellchecker:{desc:"Alternar verifica\u00e7\u00e3o ortogr\u00e1fica",menu:"Configura\u00e7\u00f5es de ortografia","ignore_word":"Ignorar palavra","ignore_words":"Ignorar tudo",langs:"Linguagens",wait:"Aguarde...",sug:"Sugest\u00f5es","no_sug":"Sem sugest\u00f5es","no_mpell":"N\u00e3o foram detectados erros de ortografia.","learn_word":"Aprender palavra"},pagebreak:{desc:"Inserir quebra de p\u00e1gina."},advlist:{types:"Tipos",def:"Padr\u00e3o","lower_alpha":"Alfabeto min\u00fasculo","lower_greek":"Alfabeto grego","lower_roman":"Num. romanos min\u00fasculos","upper_alpha":"Alfabeto mai\u00fasculos","upper_roman":"Num. romanos mai\u00fasculos",circle:"C\u00edrculo",disc:"Disco",square:"Quadrado"},colors:{"333300":"Oliva escuro","993300":"Laranja queimado","000000":"Preto","003300":"Verde escuro","003366":"Azul escuro","000080":"Azul marinho","333399":"\u00cdndigo","333333":"Cinza muito escuro","800000":"Marrom 1",FF6600:"Laranja","808000":"Oliva","008000":"Verde","008080":"Verde azulado","0000FF":"Azul","666699":"Azul acinzentado","808080":"Cinza",FF0000:"Vermelho",FF9900:"\u00c2mbar","99CC00":"Amarelo esverdeado","339966":"Verde mar","33CCCC":"Turquesa","3366FF":"Azul real","800080":"Roxo","999999":"Cinza m\u00e9dio",FF00FF:"Magenta",FFCC00:"Ouro",FFFF00:"Amarelo","00FF00":"Lima","00FFFF":"\u00c1gua","00CCFF":"Azul celeste","993366":"Marrom 2",C0C0C0:"Prata",FF99CC:"Rosa",FFCC99:"P\u00eassego",FFFF99:"Amarelo claro",CCFFCC:"Verde p\u00e1lido",CCFFFF:"Ciano p\u00e1lido","99CCFF":"Azul celeste claro",CC99FF:"Ameixa",FFFFFF:"Branco"},aria:{"rich_text_area":"\u00c1rea de texto rico"},wordcount:{words:"Palavras:"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/ro.js b/program/js/tiny_mce/langs/ro.js
deleted file mode 100644
index ffa1ebbc3..000000000
--- a/program/js/tiny_mce/langs/ro.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({ro:{common:{"more_colors":"Mai multe culori","invalid_data":"Eroare: Datele gre\u015fite sunt marcate cu ro\u015fu.","popup_blocked":"Ne pare r\u0103u, dar un popup-blocker a dezactivat o fereastr\u0103 de func\u021bii a aplica\u021biei. Trebuie s\u0103 dezactivezi popup-blocker-ul pentru acest site pentru a folosi aplica\u021bia la capacitate maxim\u0103.","clipboard_no_support":"Deocamdat\u0103 nu este suportat\u0103 de browser. Te rug\u0103m s\u0103 folose\u0219ti combina\u0163iile de taste.","clipboard_msg":"Copiere/T\u0103iere/Lipire nu sunt disponibile \u00een Mozilla \u015fi Firefox.\nDori\u0163i mai multe informa\u0163ii despre aceast\u0103 problem\u0103?","not_set":"-- Nesetat\u0103 --","class_name":"Clas\u0103",browse:"R\u0103sfoie\u015fte",close:"\u00cenchide",cancel:"Anulare",update:"Actualizeaz\u0103",insert:"Insereaz\u0103",apply:"Aplic\u0103","edit_confirm":"Vrei s\u0103 folose\u0219ti un editor avansat pentru aceast\u0103 zon\u0103 de text?","invalid_data_number":"{#field} trebuie s\u0103 fie un num\u0103r","invalid_data_min":"{#field} trebuie s\u0103 fie un num\u0103r mai mare dec\u00e2t {#min}","invalid_data_size":"{#field} trebuie s\u0103 fie un num\u0103r sau un procent",value:"(value)"},contextmenu:{full:"Pe toat\u0103 l\u0103\u021bimea",right:"Dreapta",center:"Centru",left:"St\u00e2nga",align:"Aliniere"},insertdatetime:{"day_short":"Dum,Lun,Mar,Mie,Joi,Vin,S\u00e2m,Dum","day_long":"Duminic\u0103,Luni,Mar\u021bi,Miercuri,Joi,Vineri,S\u00e2mb\u0103t\u0103,Duminic\u0103","months_short":"Ian,Feb,Mar,Apr,Mai,Iun,Iul,Aug,Sep,Oct,Noi,Dec","months_long":"Ianuarie,Februarie,Martie,Aprilie,Mai,Iunie,Iulie,August,Septembrie,Octombrie,Noiembrie,Decembrie ","inserttime_desc":"Insereaz\u0103 ora","insertdate_desc":"Insereaz\u0103 data","time_fmt":"%H:%M:%S","date_fmt":"%Y-%m-%d"},print:{"print_desc":"Tip\u0103re\u0219te"},preview:{"preview_desc":"Previzualizare"},directionality:{"rtl_desc":"Direc\u021bia de la dreapta la st\u00e2nga","ltr_desc":"Direc\u021bia de la st\u00e2nga la dreapta"},layer:{content:"Strat nou ...","absolute_desc":"Pozi\u021bionare absolut\u0103","backward_desc":"Mut\u0103 \u00een spate","forward_desc":"Mut\u0103 \u00een fa\u021b\u0103","insertlayer_desc":"Insereaz\u0103 un strat"},save:{"save_desc":"Salveaz\u0103","cancel_desc":"Anuleaz\u0103 toate schimb\u0103rile"},nonbreaking:{"nonbreaking_desc":"Insereaz\u0103 un spa\u021biu"},iespell:{download:"ieSpell nu a fost detectat. Vrei s\u0103-l instalezi?","iespell_desc":"Verific\u0103 ortografia"},advhr:{"advhr_desc":"Linie orizontal\u0103","delta_height":"","delta_width":""},emotions:{"emotions_desc":"Figurine","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"Caut\u0103/\u00eenlocuie\u0219te","search_desc":"Caut\u0103","delta_width":"","delta_height":""},advimage:{"image_desc":"Inserare/editare imagine","delta_width":"","delta_height":""},advlink:{"link_desc":"Inserare/editare leg\u0103tur\u0103","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"Insereaz\u0103/editeaz\u0103 atribute","ins_desc":"Inserare","del_desc":"\u0218tergere","acronym_desc":"Acronim","abbr_desc":"Abreviere","cite_desc":"Citat","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"Editare CSS","delta_height":"","delta_width":""},paste:{"plaintext_mode":"Lipirea este acum \u00een modul text simplu. Apas\u0103 din nou pentru comutarea la modul normal de lipire.","plaintext_mode_sticky":"Lipirea este acum \u00een modul text simplu. Apas\u0103 aici pentru comutarea la modul normal de lipire. Dup\u0103 ce vei lipi ceva vei reveni la modul normal de lipire.","selectall_desc":"Selecteaz\u0103 tot","paste_word_desc":"Lipire din Word","paste_text_desc":"Lipire ca text simplu"},"paste_dlg":{"word_title":"Folose\u0219te CTRL V pentru a lipi \u00een aceast\u0103 zon\u0103.","text_linebreaks":"P\u0103streaz\u0103 separatoarele de linii.","text_title":"Folose\u0219te CTRL V pentru a lipi \u00een aceast\u0103 zon\u0103."},table:{cell:"Celul\u0103",col:"Coloan\u0103",row:"R\u00e2nd",del:"\u0218terge tabelul","copy_row_desc":"Copiaz\u0103 r\u00e2ndul","cut_row_desc":"Taie r\u00e2ndul","paste_row_after_desc":"Lipe\u015fte r\u00e2ndul dup\u0103","paste_row_before_desc":"Lipe\u015fte r\u00e2ndul \u00eenainte","props_desc":"Propriet\u0103\u021bi tabel","cell_desc":"Propriet\u0103\u021bi celul\u0103","row_desc":"Propriet\u0103\u021bi r\u00e2nd","merge_cells_desc":"Une\u0219te celulele","split_cells_desc":"Separ\u0103 celulele unite","delete_col_desc":"\u0218terge coloana","col_after_desc":"Inserare coloan\u0103 dup\u0103","col_before_desc":"Inserare coloan\u0103 \u00eenainte","delete_row_desc":"\u0218terge r\u00e2ndul","row_after_desc":"Insereaz\u0103 un r\u00e2nd dup\u0103","row_before_desc":"Insereaz\u0103 un r\u00e2nd \u00eenainte",desc:"Inserare/editare tabel","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"Daca restaurezi continutul salvat vei pierde tot continutul existent din editor.\n\nSigur vrei sa restaurezi continutul salvat?","restore_content":"Restaureaz\u0103 con\u021binutul salvat automat.","unload_msg":"Modific\u0103rile nu vor fi salvate."},fullscreen:{desc:"Mod ecran complet"},media:{edit:"Editeaz\u0103 media",desc:"Insereaz\u0103 / editeaz\u0103 media","delta_height":"","delta_width":""},fullpage:{desc:"Propriet\u0103\u021bi document","delta_width":"","delta_height":""},template:{desc:"Insereaz\u0103 un \u0219ablon predefinit"},visualchars:{desc:"Comut\u0103 caracterele de control vizual"},spellchecker:{desc:"Comut\u0103 corectorul ortografic",menu:"Set\u0103ri corector ortografic","ignore_word":"Ignor\u0103 cuv\u00e2ntul","ignore_words":"Ignor\u0103 toate",langs:"Limbi",wait:"Te rog a\u0219teapt\u0103...",sug:"Sugestii","no_sug":"Nu sunt sugestii.","no_mpell":"Nu sunt gre\u0219eli.","learn_word":"\u00cenva\u021b\u0103 cuv\u00e2ntul"},pagebreak:{desc:"Insereaz\u0103 un separator de pagin\u0103 pentru tip\u0103rire"},advlist:{types:"Tipuri",def:"Implicit","lower_alpha":"Minuscule alfabetice","lower_greek":"Minuscule grece\u0219ti","lower_roman":"Minuscule romane","upper_alpha":"Majuscule alfabetice","upper_roman":"Majuscule romane",circle:"Cerc",disc:"Disc",square:"P\u0103trat"},colors:{"333300":"Oliv \u00eenchis","993300":"Portocaliu ars","000000":"Negru","003300":"Verde \u00eenchis","003366":"Azuriu \u00eenchis","000080":"Bleumarin","333399":"Indigo","333333":"Gri foarte \u00eenchis","800000":"Cafeniu",FF6600:"Portocaliu","808000":"Oliv","008000":"Verde","008080":"Albastru-verzui","0000FF":"Albastru","666699":"Albastru-gri","808080":"Gri",FF0000:"Ro\u0219u",FF9900:"Chihlimbar","99CC00":"Ocru","339966":"Verde marin","33CCCC":"Turcoaz","3366FF":"Albastur regal","800080":"Violet","999999":"Gri mediu",FF00FF:"Magenta",FFCC00:"Auriu",FFFF00:"Galben","00FF00":"Lime","00FFFF":"Ap\u0103","00CCFF":"Albastru cer","993366":"Maro",C0C0C0:"Argintiu",FF99CC:"Roz",FFCC99:"Piersic\u0103",FFFF99:"Galben deschis",CCFFCC:"Verde pal",CCFFFF:"Cyan pal","99CCFF":"Albastru-cer deschis",CC99FF:"Prun\u0103",FFFFFF:"Alb"},aria:{"rich_text_area":"Zon\u0103 de text formatat"},wordcount:{words:"Cuvinte:"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/ru.js b/program/js/tiny_mce/langs/ru.js
deleted file mode 100644
index 290aee239..000000000
--- a/program/js/tiny_mce/langs/ru.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({ru:{common:{"more_colors":"\u0414\u0440\u0443\u0433\u0438\u0435 \u0446\u0432\u0435\u0442\u0430...","invalid_data":"\u041e\u0448\u0438\u0431\u043a\u0430: \u0412\u0432\u0435\u0434\u0435\u043d\u043e \u043d\u0435\u0432\u0435\u0440\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043e\u043d\u043e \u043e\u0442\u043c\u0435\u0447\u0435\u043d\u043e \u043a\u0440\u0430\u0441\u043d\u044b\u043c.","popup_blocked":"\u0411\u043b\u043e\u043a\u0438\u0440\u0430\u0442\u043e\u0440 \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0438\u0445 \u043e\u043a\u043e\u043d \u0437\u0430\u043a\u0440\u044b\u043b \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435 \u043e\u043a\u043d\u043e. \u0414\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b, \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0443 \u043d\u0430 \u044d\u0442\u043e\u043c \u0441\u0430\u0439\u0442\u0435.","clipboard_no_support":"\u041d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0412\u0430\u0448\u0438\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u043c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0433\u043e\u0440\u044f\u0447\u0438\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0438.","clipboard_msg":"\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0432\u044b\u0440\u0435\u0437\u043a\u0430 \u0438 \u0432\u0441\u0442\u0430\u0432\u043a\u0430 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0432 Firefox. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0438: Ctrl C \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c, Ctrl V \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c. \u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e?","not_set":"- \u041d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e -","class_name":"\u041a\u043b\u0430\u0441\u0441",browse:"\u041e\u0431\u0437\u043e\u0440",close:"\u0417\u0430\u043a\u0440\u044b\u0442\u044c",cancel:"\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c",update:"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c",insert:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c",apply:"\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c","edit_confirm":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c WYSIWYG \u0440\u0435\u0436\u0438\u043c \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044f?","invalid_data_number":"{#field} - \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u0447\u0438\u0441\u043b\u043e","invalid_data_min":"{#field} - \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u0447\u0438\u0441\u043b\u043e \u0431\u043e\u043b\u044c\u0448\u0435 {#min}","invalid_data_size":"{#field} - \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u0447\u0438\u0441\u043b\u043e \u0438\u043b\u0438 \u043f\u0440\u043e\u0446\u0435\u043d\u0442",value:"(\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435)"},contextmenu:{full:"\u041f\u043e \u0448\u0438\u0440\u0438\u043d\u0435",right:"\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",center:"\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443",left:"\u041f\u043e \u043b\u0435\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",align:"\u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435"},insertdatetime:{"day_short":"\u0432\u0441,\u043f\u043d,\u0432\u0442,\u0441\u0440,\u0447\u0442,\u043f\u0442,\u0441\u0431,\u0432\u0441","day_long":"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435,\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a,\u0432\u0442\u043e\u0440\u043d\u0438\u043a,\u0441\u0440\u0435\u0434\u0430,\u0447\u0435\u0442\u0432\u0435\u0440\u0433,\u043f\u044f\u0442\u043d\u0438\u0446\u0430,\u0441\u0443\u0431\u0431\u043e\u0442\u0430,\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435","months_short":"\u044f\u043d\u0432,\u0444\u0435\u0432,\u043c\u0430\u0440\u0442,\u0430\u043f\u0440,\u043c\u0430\u0439,\u0438\u044e\u043d\u044c,\u0438\u044e\u043b\u044c,\u0430\u0432\u0433,\u0441\u0435\u043d,\u043e\u043a\u0442,\u043d\u043e\u044f,\u0434\u0435\u043a","months_long":"\u044f\u043d\u0432\u0430\u0440\u044c,\u0444\u0435\u0432\u0440\u0430\u043b\u044c,\u043c\u0430\u0440\u0442,\u0430\u043f\u0440\u0435\u043b\u044c,\u043c\u0430\u0439,\u0438\u044e\u043d\u044c,\u0438\u044e\u043b\u044c,\u0430\u0432\u0433\u0443\u0441\u0442,\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c,\u043e\u043a\u0442\u044f\u0431\u0440\u044c,\u043d\u043e\u044f\u0431\u0440\u044c,\u0434\u0435\u043a\u0430\u0431\u0440\u044c","inserttime_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f","insertdate_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0434\u0430\u0442\u0443","time_fmt":"%H:%M:%S","date_fmt":"%d.%m.%Y"},print:{"print_desc":"\u041f\u0435\u0447\u0430\u0442\u044c"},preview:{"preview_desc":"\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440"},directionality:{"rtl_desc":"\u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0435\u0432\u043e","ltr_desc":"\u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e"},layer:{content:"\u041d\u043e\u0432\u044b\u0439 \u0441\u043b\u043e\u0439","absolute_desc":"\u0410\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435","backward_desc":"\u041d\u0430 \u0437\u0430\u0434\u043d\u0438\u0439 \u043f\u043b\u0430\u043d","forward_desc":"\u041d\u0430 \u043f\u0435\u0440\u0435\u0434\u043d\u0438\u0439 \u043f\u043b\u0430\u043d","insertlayer_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043b\u043e\u0439"},save:{"save_desc":"\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c","cancel_desc":"\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u0441\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f"},nonbreaking:{"nonbreaking_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0435\u0440\u0430\u0437\u0440\u044b\u0432\u043d\u044b\u0439 \u043f\u0440\u043e\u0431\u0435\u043b"},iespell:{download:"ieSpell \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d. \u0416\u0435\u043b\u0430\u0435\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c?","iespell_desc":"\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043e\u0440\u0444\u043e\u0433\u0440\u0430\u0444\u0438\u044e"},advhr:{"advhr_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c","delta_height":"","delta_width":""},emotions:{"emotions_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043c\u0430\u0439\u043b","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c","search_desc":"\u041d\u0430\u0439\u0442\u0438","delta_width":"","delta_height":""},advimage:{"delta_width":"200","image_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c/\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435","delta_height":""},advlink:{"delta_width":"200","link_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c/\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443","delta_height":""},xhtmlxtras:{"attribs_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c/\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442","ins_desc":"\u0417\u0430\u043c\u0435\u043d\u0430","del_desc":"\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435","acronym_desc":"\u0410\u0431\u0431\u0440\u0435\u0432\u0438\u0430\u0446\u0438\u044f","abbr_desc":"\u0421\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0435","cite_desc":"\u0426\u0438\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c CSS \u0441\u0442\u0438\u043b\u044c","delta_height":"","delta_width":""},paste:{"plaintext_mode":"Paste is now in plain text mode. Click again to toggle back to regular paste mode.","plaintext_mode_sticky":"Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode.","selectall_desc":"\u0412\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0432\u0441\u0435","paste_word_desc":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438\u0437 Word","paste_text_desc":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u0430\u043a \u0442\u0435\u043a\u0441\u0442"},"paste_dlg":{"word_title":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 CTRL+V \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u043e\u043a\u043d\u043e.","text_linebreaks":"\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u044b \u0441\u0442\u0440\u043e\u043a","text_title":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 CTRL+V \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u043e\u043a\u043d\u043e."},table:{"cellprops_delta_width":"30",cell:"\u042f\u0447\u0435\u0439\u043a\u0430",col:"\u0421\u0442\u043e\u043b\u0431\u0435\u0446",row:"\u0421\u0442\u0440\u043e\u043a\u0430",del:"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443","copy_row_desc":"\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443","cut_row_desc":"\u0412\u044b\u0440\u0435\u0437\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443","paste_row_after_desc":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u043d\u0438\u0437\u0443","paste_row_before_desc":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u0432\u0435\u0440\u0445\u0443","props_desc":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0442\u0430\u0431\u043b\u0438\u0446\u044b","cell_desc":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u044f\u0447\u0435\u0439\u043a\u0438","row_desc":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u0442\u0440\u043e\u043a\u0438","merge_cells_desc":"\u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u044f\u0447\u0435\u0439\u043a\u0438","split_cells_desc":"\u0420\u0430\u0437\u0431\u0438\u0442\u044c \u044f\u0447\u0435\u0439\u043a\u0443","delete_col_desc":"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0435\u0446","col_after_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0441\u043f\u0440\u0430\u0432\u0430","col_before_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0441\u043b\u0435\u0432\u0430","delete_row_desc":"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443","row_after_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u043d\u0438\u0437\u0443","row_before_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u0432\u0435\u0440\u0445\u0443",desc:"\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435/\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"\u0412\u0441\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u0443\u0442\u0435\u0440\u044f\u043d\u044b.\n\n\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f?","restore_content":"\u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435","unload_msg":"\u041f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u0443\u0442\u0435\u0440\u044f\u043d\u044b, \u0435\u0441\u043b\u0438 \u0412\u044b \u0443\u0439\u0434\u0435\u0442\u0435 \u0441 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b."},fullscreen:{desc:"\u041f\u043e\u043b\u043d\u043e\u044d\u043a\u0440\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c"},media:{"delta_height":"",edit:"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043a\u043b\u0438\u043f\u0430",desc:"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c/\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043a\u043b\u0438\u043f","delta_width":""},fullpage:{desc:"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430","delta_width":"","delta_height":""},template:{desc:"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d"},visualchars:{desc:"\u0412\u0441\u0435 \u0437\u043d\u0430\u043a\u0438"},spellchecker:{desc:"\u041f\u0440\u0430\u0432\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435",menu:"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u0440\u0430\u0432\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f","ignore_word":"\u041f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c","ignore_words":"\u041f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432\u0441\u0435",langs:"\u042f\u0437\u044b\u043a\u0438",wait:"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u043e\u0434\u043e\u0436\u0434\u0438\u0442\u0435...",sug:"\u0412\u0430\u0440\u0438\u0430\u043d\u0442\u044b","no_sug":"\u041d\u0435\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432","no_mpell":"\u041e\u0448\u0438\u0431\u043e\u043a \u043d\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043e.","learn_word":"\u0417\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u0441\u043b\u043e\u0432\u043e"},pagebreak:{desc:"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u044b\u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b"},advlist:{types:"\u0421\u0438\u043c\u0432\u043e\u043b\u044b",def:"\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435","lower_alpha":"\u0421\u0442\u0440\u043e\u0447\u043d\u044b\u0435 \u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0438\u0435 \u0431\u0443\u043a\u0432\u044b","lower_greek":"\u0421\u0442\u0440\u043e\u0447\u043d\u044b\u0435 \u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0438\u0435 \u0431\u0443\u043a\u0432\u044b","lower_roman":"\u0421\u0442\u0440\u043e\u0447\u043d\u044b\u0435 \u0440\u0438\u043c\u0441\u043a\u0438\u0435 \u0446\u0438\u0444\u0440\u044b","upper_alpha":"\u0417\u0430\u0433\u043b\u0430\u0432\u043d\u044b\u0435 \u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0438\u0435 \u0431\u0443\u043a\u0432\u044b","upper_roman":"\u0417\u0430\u0433\u043b\u0430\u0432\u043d\u044b\u0435 \u0440\u0438\u043c\u0441\u043a\u0438\u0435 \u0446\u0438\u0444\u0440\u044b",circle:"\u041e\u043a\u0440\u0443\u0436\u043d\u043e\u0441\u0442\u0438",disc:"\u041a\u0440\u0443\u0433\u0438",square:"\u041a\u0432\u0430\u0434\u0440\u0430\u0442\u044b"},colors:{"333300":"\u0422\u0451\u043c\u043d\u043e-\u043e\u043b\u0438\u0432\u043a\u043e\u0432\u044b\u0439","993300":"\u0411\u0438\u0441\u043c\u0430\u0440\u043a-\u0444\u0443\u0440\u0438\u043e\u0437\u043e","000000":"\u0427\u0435\u0440\u043d\u044b\u0439","003300":"\u0422\u0435\u043c\u043d\u043e-\u0437\u0435\u043b\u0435\u043d\u044b\u0439","003366":"\u0422\u0451\u043c\u043d\u0430\u044f \u043b\u0430\u0437\u0443\u0440\u044c","000080":"\u0422\u0451\u043c\u043d\u043e-\u0441\u0438\u043d\u0438\u0439","333399":"\u0418\u043d\u0434\u0438\u0433\u043e","333333":"\u041e\u0447\u0435\u043d\u044c \u0442\u0451\u043c\u043d\u043e-\u0441\u0435\u0440\u044b\u0439","800000":"\u0422\u0451\u043c\u043d\u043e-\u0431\u043e\u0440\u0434\u043e\u0432\u044b\u0439",FF6600:"\u041e\u0440\u0430\u043d\u0436\u0435\u0432\u044b\u0439","808000":"\u041e\u043b\u0438\u0432\u043a\u043e\u0432\u044b\u0439","008000":"\u0412\u043b\u044e\u0431\u043b\u0435\u043d\u043d\u043e\u0439 \u0436\u0430\u0431\u044b","008080":"C\u0438\u043d\u0435-\u0437\u0435\u043b\u0435\u043d\u044b\u0439","0000FF":"\u0421\u0438\u043d\u0438\u0439","666699":"\u0421\u0435\u0440\u043e-\u0433\u043e\u043b\u0443\u0431\u043e\u0439","808080":"\u0421\u0435\u0440\u044b\u0439",FF0000:"\u041a\u0440\u0430\u0441\u043d\u044b\u0439",FF9900:"\u042f\u043d\u0442\u0430\u0440\u043d\u044b\u0439","99CC00":"\u0416\u0451\u043b\u0442\u043e-\u0437\u0435\u043b\u0451\u043d\u044b\u0439","339966":"\u0411\u0438\u0440\u044e\u0437\u043e\u0432\u044b\u0439","33CCCC":"\u042f\u0439\u0446\u0430 \u0434\u0440\u043e\u0437\u0434\u0430","3366FF":"\u041a\u043e\u0440\u043e\u043b\u0435\u0432\u0441\u043a\u0438\u0439 \u0441\u0438\u043d\u0438\u0439","800080":"\u0424\u0438\u043e\u043b\u0435\u0442\u043e\u0432\u043e-\u0431\u0430\u043a\u043b\u0430\u0436\u0430\u043d\u043d\u044b\u0439","999999":"\u041a\u0432\u0430\u0440\u0446\u0435\u0432\u044b\u0439",FF00FF:"\u041f\u0443\u0440\u043f\u0443\u0440\u043d\u044b\u0439",FFCC00:"\u0417\u043e\u043b\u043e\u0442\u043e\u0439",FFFF00:"\u0416\u0435\u043b\u0442\u044b\u0439","00FF00":"\u0417\u0435\u043b\u0435\u043d\u044b\u0439","00FFFF":"\u0426\u0438\u0430\u043d","00CCFF":"\u041d\u0435\u0431\u0435\u0441\u043d\u044b\u0439","993366":"\u0420\u043e\u0437\u043e\u0432\u0430\u0442\u043e-\u043b\u0438\u043b\u043e\u0432\u044b\u0439",C0C0C0:"\u0421\u0435\u0440\u0435\u0431\u0440\u0438\u0441\u0442\u044b\u0439",FF99CC:"\u0420\u043e\u0437\u043e\u0432\u044b\u0439",FFCC99:"\u041e\u0440\u0430\u043d\u0436\u0435\u0432\u043e-\u043f\u0435\u0440\u0441\u0438\u043a\u043e\u0432\u044b\u0439",FFFF99:"\u0412\u0435\u0440\u0434\u0435\u043f\u0435\u0448\u0435\u0432\u044b\u0439",CCFFCC:"\u0417\u0435\u043b\u0435\u043d\u043e\u0433\u043e \u0447\u0430\u044f",CCFFFF:"\u0411\u043b\u0435\u0434\u043d\u043e-\u0441\u0438\u043d\u0438\u0439","99CCFF":"\u0421\u0432\u0435\u0442\u043b\u043e-\u043d\u0435\u0431\u0435\u0441\u043d\u044b\u0439",CC99FF:"\u0424\u0438\u0430\u043b\u043a\u043e\u0432\u044b\u0439",FFFFFF:"\u0411\u0435\u043b\u044b\u0439"},aria:{"rich_text_area":"\u0412\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440"},wordcount:{words:"\u0421\u043b\u043e\u0432:"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/si.js b/program/js/tiny_mce/langs/si.js
deleted file mode 100644
index cbc9e8919..000000000
--- a/program/js/tiny_mce/langs/si.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({si:{common:{"more_colors":"\u0dad\u0dc0\u0dad\u0dca \u0dc0\u0dbb\u0dca\u0dab","invalid_data":"\u0dc0\u0dbb\u0daf: \u0dc0\u0dbd\u0d82\u0d9c\u0dd4 \u0db1\u0ddc\u0db8\u0dd0\u0dad\u0dd2 \u0d85\u0d9c\u0dba\u0db1\u0dca \u0d87\u0dad\u0dd4\u0dc5\u0dad\u0dca \u0d9a\u0dbb \u0d87\u0dad,\u0d91\u0db8 \u0d85\u0d9c\u0dba\u0db1\u0dca \u0dbb\u0dad\u0dd4 \u0db4\u0dcf\u0da7\u0dd2\u0db1\u0dca \u0dc3\u0dc5\u0d9a\u0dd4\u0dab\u0dd4 \u0d9a\u0dbb \u0d87\u0dad.","popup_blocked":"\u0d94\u0db6\u0d9c\u0dda popup-blocker \u0db8\u0d9f\u0dd2\u0db1\u0dca \u0d8b\u0db4\u0dba\u0ddd\u0d9c\u0dd2 \u0dc3\u0dda\u0dc0\u0dcf\u0dc0\u0db1\u0dca \u0dc3\u0db4\u0dba\u0db1 \u0d9a\u0dc0\u0dd4\u0dbd\u0dd4\u0dc0\u0d9a\u0dca \u0d85\u0db6\u0dbd \u0d9a\u0dbb \u0d87\u0dad.\u0d91\u0db6\u0dd0\u0dc0\u0dd2\u0db1\u0dca \u0d94\u0db6\u0da7 popup-blocker \u0dba \u0d85\u0d9a\u0dca\u200d\u0dbb\u0dd3\u0dba \u0d9a\u0dd2\u0dbb\u0dd3\u0db8\u0da7 \u0dc3\u0dd2\u0daf\u0dd4\u0dc0\u0dda. ","clipboard_no_support":"\u0daf\u0dd0\u0db1\u0da7 \u0db4\u0dca\u200d\u0dbb\u0daf\u0dbb\u0dca\u0dc1\u0d9a\u0dba \u0db8\u0d9f\u0dd2\u0db1\u0dca \u0db8\u0dd9\u0db8 \u0dc3\u0dda\u0dc0\u0dba \u0dc3\u0db4\u0dba\u0dcf \u0db1\u0dd0\u0dad,\u0d91\u0db6\u0dd0\u0dc0\u0dd2\u0db1\u0dca \u0dba\u0dad\u0dd4\u0dbb\u0dd4\u0db4\u0dd4\u0dc0\u0dbb\u0dd4\u0dc0 \u0db7\u0dcf\u0dc0\u0dd2\u0dad\u0dcf \u0d9a\u0dbb\u0db1\u0dca\u0db1.","clipboard_msg":"\u0db4\u0dd2\u0da7\u0db4\u0dad\u0dca \u0d9a\u0dd2\u0dbb\u0dd3\u0db8/\u0d89\u0dc0\u0dad\u0dca \u0d9a\u0dd2\u0dbb\u0dd3\u0db8/\u0d87\u0dbd\u0dc0\u0dd3\u0db8 \u0db8\u0ddc\u0dc3\u0dd2\u0dbd\u0dca\u0dbd\u0dcf \u0dc4\u0dcf \u0dc6\u0dba\u0dbb\u0dca \u0dc6\u0ddc\u0d9a\u0dca\u0dc3\u0dca \u0dc4\u0dd2 \u0d87\u0dad\u0dd4\u0dc5\u0dad\u0dca \u0db1\u0ddc\u0dc0\u0dda.\n\u0d94\u0db6\u0da7 \u0db8\u0dda \u0db4\u0dd2\u0dc5\u0dd2\u0db6\u0db3\u0dc0 \u0dad\u0da0\u0daf\u0dd4\u0dbb\u0da7\u0dad\u0dca \u0dad\u0ddc\u0dbb\u0dad\u0dd4\u0dbb\u0dd4 \u0d85\u0dc0\u0dc1\u0dca\u200d\u0dba \u0dc0\u0dda\u0daf?","not_set":"-- Not set --","class_name":"\u0dc3\u0db8\u0dd6\u0dc4\u0dba",browse:"Browse",close:"\u0d89\u0dc0\u0dad\u0dca\u0dc0\u0db1\u0dca\u0db1",cancel:"\u0d85\u0dc0\u0dbd\u0d82\u0d9c\u0dd4 \u0d9a\u0dbb\u0db1\u0dca\u0db1",update:"\u0d85\u0dbd\u0dd4\u0dad\u0dca \u0d9a\u0dbb\u0db1\u0dca\u0db1",insert:"\u0d87\u0dad\u0dd4\u0dc5\u0dad\u0dca \u0d9a\u0dbb\u0db1\u0dca\u0db1",apply:"\u0dba\u0ddc\u0daf\u0db1\u0dca\u0db1","edit_confirm":"\u0d94\u0db6\u0da7 \u0db8\u0dd9\u0db8 \u0db4\u0dcf\u0da8\u0dba\u0db1\u0dca \u0dc3\u0db3\u0dc4\u0dcf WYSIWYG \u0d86\u0d9a\u0dcf\u0dbb\u0dba?","invalid_data_number":"{#field} must be a number","invalid_data_min":"{#field} must be a number greater than {#min}","invalid_data_size":"{#field} must be a number or percentage",value:"(value)"},contextmenu:{full:"\u0db4\u0dd6\u0dbb\u0dca\u0dab\u0dc0",right:"\u0daf\u0d9a\u0dd4\u0dab\u0da7",center:"\u0db8\u0dd0\u0daf\u0da7",left:"\u0dc0\u0db8\u0da7",align:"\u0db4\u0dd9\u0dc5 \u0d9c\u0dd0\u0db1\u0dca\u0dc0\u0dd4\u0db8"},insertdatetime:{"day_short":"\u0d89\u0dbb\u0dd2\u0daf\u0dcf,\u0dc3\u0db3\u0dd4\u0daf\u0dcf,\u0d85\u0d9f.,\u0db6\u0daf\u0dcf\u0daf\u0dcf,\u0db6\u0dca\u200d\u0dbb\u0dc4\u0dc3\u0dca.,\u0dc3\u0dd2\u0d9a\u0dd4.,\u0dc3\u0dd9\u0db1.","day_long":"\u0d89\u0dbb\u0dd2\u0daf\u0dcf,\u0dc3\u0db3\u0dd4\u0daf\u0dcf,\u0d85\u0d9f\u0dc4\u0dbb\u0dd0\u0dc0\u0dcf\u0daf\u0dcf,\u0db6\u0daf\u0dcf\u0daf\u0dcf,\u0db6\u0dca\u200d\u0dbb\u0dc4\u0dc3\u0dca\u0db4\u0dad\u0dd2\u0db1\u0dca\u0daf\u0dcf,\u0dc3\u0dd2\u0d9a\u0dd4\u0dbb\u0dcf\u0daf\u0dcf,\u0dc3\u0dd9\u0db1\u0dc3\u0dd4\u0dbb\u0dcf\u0daf\u0dcf","months_short":"\u0da2\u0db1.,\u0db4\u0dd9\u0db6.,\u0db8\u0dcf\u0dbb\u0dca\u0dad\u0dd4,\u0d85\u0db4\u0dca\u200d\u0dbb\u0dda\u0dbd\u0dca,\u0db8\u0dd0\u0dba\u0dd2,\u0da2\u0dd6\u0db1\u0dd2,\u0da2\u0dd6\u0dbd\u0dd2,\u0d85\u0d9c\u0ddd.,\u0dc3\u0dd0\u0dca.,\u0d94\u0d9a\u0dca.,\u200d\u0db1\u0ddc\u0dc0\u0dd0.,\u0daf\u0dd9\u0dc3\u0dd0.","months_long":"\u0da2\u0db1\u0dc0\u0dcf\u0dbb\u0dd2,\u0db4\u0dd9\u0db6\u0dbb\u0dc0\u0dcf\u0dbb\u0dd2,\u0db8\u0dcf\u0dbb\u0dca\u0dad\u0dd4,\u0d85\u0db4\u0dca\u200d\u0dbb\u0dda\u0dbd\u0dca,\u0db8\u0dd0\u0dba\u0dd2,\u0da2\u0dd6\u0db1\u0dd2,\u0da2\u0dd6\u0dbd\u0dd2,\u0d85\u0d9c\u0ddd\u0dc3\u0dca\u0dad\u0dd4,\u0dc3\u0dd0\u0dca\u0dad\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca,\u0d94\u0d9a\u0dca\u0dad\u0ddd\u0db6\u0dbb\u0dca,\u200d\u0db1\u0ddc\u0dc0\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca,\u0daf\u0dd9\u0dc3\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca","inserttime_desc":"\u0dc0\u0dda\u0dbd\u0dcf\u0dc0 \u0d87\u0dad\u0dd4\u0dc5\u0dad\u0dca \u0d9a\u0dbb\u0db1\u0dca\u0db1","insertdate_desc":"\u0daf\u0dd2\u0db1\u0dba \u0d87\u0dad\u0dd4\u0dc5\u0dad\u0dca \u0d9a\u0dbb\u0db1\u0dca\u0db1","time_fmt":"%\u0db4\u0dd0\u0dba:%\u0db8\u0dd2\u0dc3:%\u0dad\u0dad\u0dca","date_fmt":"%\u0d85\u0dc0\u0dd4-%\u0db8\u0dcf\u0dc3-%\u0daf\u0dd2\u0db1"},print:{"print_desc":"\u0db8\u0dd4\u0daf\u0dca\u200d\u0dbb\u0dab\u0dba \u0d9a\u0dbb\u0db1\u0dc0\u0dcf"},preview:{"preview_desc":"\u0db4\u0dd6\u0dbb\u0dca\u0dc0 \u0daf\u0dbb\u0dca\u0dc1\u0db1\u0dba"},directionality:{"rtl_desc":"\u0daf\u0d9a\u0dd4\u0dab\u0dda \u0dc3\u0dd2\u0da7 \u0dc0\u0db8\u0da7 \u0daf\u0dd2\u0dc1\u0dcf\u0dc0","ltr_desc":"\u0dc0\u0db8\u0dda \u0dc3\u0dd2\u0da7 \u0daf\u0d9a\u0dd4\u0dab\u0da7 \u0daf\u0dd2\u0dc1\u0dcf\u0dc0"},layer:{content:"\u0d85\u0dbd\u0dd4\u0dad\u0dca \u0dc3\u0dca\u0dae\u0dbb\u0dba\u0d9a\u0dca...","absolute_desc":"Toggle absolute positioning","backward_desc":"\u0db4\u0dc3\u0dd4\u0db4\u0dc3\u0da7 \u0d9c\u0dd9\u0db1\u0dba\u0db1\u0dca\u0db1","forward_desc":"\u0d89\u0daf\u0dd2\u0dbb\u0dd2\u0dba\u0da7 \u0d9c\u0dd9\u0db1\u0dba\u0db1\u0dca\u0db1","insertlayer_desc":"\u0d85\u0db5\u0dad\u0dca \u0dc3\u0dca\u0dae\u0dbb\u0dba\u0d9a\u0dca \u0d87\u0dad\u0dd4\u0dc5\u0dad\u0dca \u0d9a\u0dbb\u0db1\u0dca\u0db1"},save:{"save_desc":"\u0dc3\u0dd4\u0dbb\u0d9a\u0dd2\u0db1\u0dca\u0db1","cancel_desc":"\u0d85\u0dc0\u0dbd\u0d82\u0d9c\u0dd4 \u0d9a\u0dbb\u0db1\u0dca\u0db1"},nonbreaking:{"nonbreaking_desc":"Insert non-breaking space character"},iespell:{download:"ieSpell \u0d85\u0db1\u0dcf\u0dc0\u0dbb\u0db1\u0dba \u0dc0\u0dd6\u0dba\u0dda \u0db1\u0dd0\u0dad. \u0d94\u0db6\u0da7 \u0d91\u0dba \u0db4\u0dd2\u0dc4\u0dd2\u0da7\u0dd4\u0dc0\u0dd3\u0db8\u0da7 \u0d85\u0dc0\u0dc1\u0dca\u200d\u0dba \u0daf?","iespell_desc":"\u0d85\u0d9a\u0dca\u0dc2\u0dbb \u0dc0\u0dd2\u0db1\u0dca\u200d\u0dba\u0dcf\u0dc3\u0dba \u0db4\u0dbb\u0dd3\u0d9a\u0dc2\u0dcf \u0d9a\u0dbb\u0db1\u0dca\u0db1"},advhr:{"advhr_desc":"Horizontale rule","delta_height":"","delta_width":""},emotions:{"emotions_desc":"Emotions","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"Find/Replace","search_desc":"Find","delta_width":"","delta_height":""},advimage:{"image_desc":"Insert/edit image","delta_width":"","delta_height":""},advlink:{"link_desc":"Insert/edit link","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"Insert/Edit Attributes","ins_desc":"Insertion","del_desc":"Deletion","acronym_desc":"Acronym","abbr_desc":"Abbreviation","cite_desc":"Citation","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"Edit CSS Style","delta_height":"","delta_width":""},paste:{"selectall_desc":"Select All","paste_word_desc":"Paste from Word","paste_text_desc":"Paste as Plain Text","plaintext_mode":"Paste is now in plain text mode. Click again to toggle back to regular paste mode.","plaintext_mode_sticky":"Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode."},"paste_dlg":{"word_title":"Use CTRL+V on your keyboard to paste the text into the window.","text_linebreaks":"Keep linebreaks","text_title":"Use CTRL+V on your keyboard to paste the text into the window."},table:{cell:"Cell",col:"Column",row:"Row",del:"Delete table","copy_row_desc":"Copy table row","cut_row_desc":"Cut table row","paste_row_after_desc":"Paste table row after","paste_row_before_desc":"Paste table row before","props_desc":"Table properties","cell_desc":"Table cell properties","row_desc":"Table row properties","merge_cells_desc":"Merge table cells","split_cells_desc":"Split merged table cells","delete_col_desc":"Remove column","col_after_desc":"Insert column after","col_before_desc":"Insert column before","delete_row_desc":"Delete row","row_after_desc":"Insert row after","row_before_desc":"Insert row before",desc:"Inserts a new table","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"unload_msg":"The changes you made will be lost if you navigate away from this page.","warning_message":"If you restore the saved content, you will lose all the content that is currently in the editor.\n\nAre you sure you want to restore the saved content?","restore_content":"Restore auto-saved content."},fullscreen:{desc:"Toggle fullscreen mode"},media:{edit:"Edit embedded media",desc:"Insert / edit embedded media","delta_height":"","delta_width":""},fullpage:{desc:"Document properties","delta_width":"","delta_height":""},template:{desc:"Insert predefined template content"},visualchars:{desc:"Visual control characters on/off."},spellchecker:{desc:"Toggle spellchecker",menu:"Spellchecker settings","ignore_word":"Ignore word","ignore_words":"Ignore all",langs:"Languages",wait:"Please wait...",sug:"Suggestions","no_sug":"No suggestions","no_mpell":"No misspellings found.","learn_word":"Learn word"},pagebreak:{desc:"Insert page break."},advlist:{types:"Types",def:"Default","lower_alpha":"Lower Alpha","lower_greek":"Lower Greek","lower_roman":"Lower Roman","upper_alpha":"Upper Alpha","upper_roman":"Upper Roman",circle:"Circle",disc:"Disc",square:"Square"},colors:{"333300":"Dark olive","993300":"Burnt orange","000000":"Black","003300":"Dark green","003366":"Dark azure","000080":"Navy Blue","333399":"Indigo","333333":"Very dark gray","800000":"Maroon",FF6600:"Orange","808000":"Olive","008000":"Green","008080":"Teal","0000FF":"Blue","666699":"Grayish blue","808080":"Gray",FF0000:"Red",FF9900:"Amber","99CC00":"Yellow green","339966":"Sea green","33CCCC":"Turquoise","3366FF":"Royal blue","800080":"Purple","999999":"Medium gray",FF00FF:"Magenta",FFCC00:"Gold",FFFF00:"Yellow","00FF00":"Lime","00FFFF":"Aqua","00CCFF":"Sky blue","993366":"Brown",C0C0C0:"Silver",FF99CC:"Pink",FFCC99:"Peach",FFFF99:"Light yellow",CCFFCC:"Pale green",CCFFFF:"Pale cyan","99CCFF":"Light sky blue",CC99FF:"Plum",FFFFFF:"White"},aria:{"rich_text_area":"Rich Text Area"},wordcount:{words:"Words"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/sk.js b/program/js/tiny_mce/langs/sk.js
deleted file mode 100644
index f25f268ac..000000000
--- a/program/js/tiny_mce/langs/sk.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({sk:{common:{"more_colors":"Viac farieb...","invalid_data":"Chyba: Boli zadan\u00e9 neplatn\u00e9 hodnoty a tieto boli ozna\u010den\u00e9 \u010dervenou farbou.","popup_blocked":"Blokovanie vyskakovac\u00edch okien neumo\u017enilo otvori\u0165 okno, ktor\u00e9 poskytuje funk\u010dnos\u0165 aplik\u00e1cie. Pre pln\u00e9 vyu\u017eitie mo\u017enost\u00ed aplik\u00e1cie mus\u00edte vypn\u00fa\u0165 blokovanie vyskakovac\u00edch okien pre tento web.","clipboard_no_support":"T\u00e1to funkcia nie je va\u0161\u00edm prehliada\u010dom podporovan\u00e1. Pou\u017eite namiesto toho kl\u00e1vesov\u00fa skratku.","clipboard_msg":"Funkcie kop\u00edrova\u0165/vystrihn\u00fa\u0165/vlo\u017ei\u0165 nie s\u00fa prehliada\u010dom Mozilla Firefox podporovan\u00e9.\nChcete viac inform\u00e1ci\u00ed o tomto probl\u00e9me?","not_set":"-- Nezadan\u00e9 --","class_name":"Trieda",browse:"Prech\u00e1dza\u0165",close:"Zavrie\u0165",cancel:"Storno",update:"Aktualizova\u0165",insert:"Vlo\u017ei\u0165",apply:"Pou\u017ei\u0165","edit_confirm":"Chcete pou\u017ei\u0165 WYSIWYG re\u017eim pre tento text?","invalid_data_number":"{#field} mus\u00ed by\u0165 \u010d\u00edslo","invalid_data_min":"{#field} mus\u00ed by\u0165 \u010d\u00edslo v\u00e4\u010d\u0161ie ako {#min}","invalid_data_size":"{#field} mus\u00ed by\u0165 \u010d\u00edslo lebo percento",value:"(hodnota)"},contextmenu:{full:"Do bloku",right:"Doprava",center:"Na stred",left:"Do\u013eava",align:"Zarovnanie"},insertdatetime:{"day_short":"Ne,Po,Ut,St,\u0160t,Pi,So,Ne","day_long":"Nede\u013ea,Pondelok,Utorok,Streda,\u0160tvrtok,Piatok,Sobota,Nede\u013ea","months_short":"Jan,Feb,Mar,Apr,M\u00e1j,J\u00fan,J\u00fal,Aug,Sep,Okt,Nov,Dec","months_long":"Janu\u00e1r,Febru\u00e1r,Marec,Apr\u00edl,M\u00e1j,J\u00fan,J\u00fal,August,September,Okt\u00f3ber,November,December","inserttime_desc":"Vlo\u017ei\u0165 \u010das","insertdate_desc":"Vlo\u017ei\u0165 d\u00e1tum","time_fmt":"%H:%M:%S","date_fmt":"%d.%m.%Y"},print:{"print_desc":"Tla\u010d"},preview:{"preview_desc":"N\u00e1h\u013ead"},directionality:{"rtl_desc":"Smer sprava do\u013eava","ltr_desc":"Smer z\u013eava doprava"},layer:{content:"Nov\u00e1 vrstva...","absolute_desc":"Prepn\u00fa\u0165 na absol\u00fatne poz\u00edciovanie","backward_desc":"Presun\u00fa\u0165 dozadu","forward_desc":"Presun\u00fa\u0165 dopredu","insertlayer_desc":"Vlo\u017ei\u0165 nov\u00fa vrstvu"},save:{"save_desc":"Ulo\u017ei\u0165","cancel_desc":"Zru\u0161i\u0165 v\u0161etky zmeny"},nonbreaking:{"nonbreaking_desc":"Vlo\u017ei\u0165 nerozdelite\u013en\u00fa medzeru"},iespell:{download:"Pr\u00edtomnos\u0165 slovn\u00edkaieSpell nebola zisten\u00e1. Chcete slovn\u00edk nain\u0161talova\u0165?","iespell_desc":"Spusti\u0165 kontrolu pravopisu"},advhr:{"advhr_desc":"Vodorovn\u00fd odde\u013eova\u010d","delta_height":"","delta_width":""},emotions:{"emotions_desc":"Emotikony","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"H\u013eada\u0165 a nahradi\u0165","search_desc":"H\u013eada\u0165","delta_width":"","delta_height":""},advimage:{"delta_width":"40","image_desc":"Vlo\u017ei\u0165/upravi\u0165 obr\u00e1zok","delta_height":""},advlink:{"link_desc":"Vlo\u017ei\u0165/upravi\u0165 odkaz","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"Vlo\u017ei\u0165/upravi\u0165 atrib\u00faty","ins_desc":"Pridan\u00fd text","del_desc":"Odstr\u00e1nen\u00fd text","acronym_desc":"Akronym","abbr_desc":"Skratka","cite_desc":"Cit\u00e1cia","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{"delta_width":"35",desc:"Upravi\u0165 CSS \u0161t\u00fdl","delta_height":""},paste:{"plaintext_mode":"Funkcia vlo\u017ei\u0165 je teraz v re\u017eime prost\u00fd text. Op\u00e4tovn\u00e9 kliknutie prepne t\u00fato funkciu nasp\u00e4\u0165 do norm\u00e1lneho re\u017eimu.","plaintext_mode_sticky":"Funkcia vlo\u017ei\u0165 je teraz v re\u017eime prost\u00fd text. Op\u00e4tovn\u00e9 kliknutie prepne t\u00fato funkciu nasp\u00e4\u0165 do norm\u00e1lneho re\u017eimu. Po vlo\u017een\u00ed \u010dohoko\u013evek bude t\u00e1to funkcia navr\u00e1ten\u00e1 sp\u00e4\u0165 do norm\u00e1lneho re\u017eimu.","selectall_desc":"Ozna\u010di\u0165 v\u0161etko","paste_word_desc":"Vlo\u017ei\u0165 z MS Word","paste_text_desc":"Vlo\u017ei\u0165 ako prost\u00fd text"},"paste_dlg":{"word_title":"Pou\u017eite CTRL+V pre vlo\u017eenie textu do okna.","text_linebreaks":"Zachova\u0165 zalamovanie riadkov","text_title":"Pou\u017eite CTRL+V pre vlo\u017eenie textu do okna."},table:{"table_delta_width":"50","cellprops_delta_width":"105",cell:"Bunka",col:"St\u013apec",row:"Riadok",del:"Odstr\u00e1ni\u0165 tabu\u013eku","copy_row_desc":"Kop\u00edrova\u0165 riadok tabu\u013eky","cut_row_desc":"Vystrihn\u00fa\u0165 riadok tabu\u013eky","paste_row_after_desc":"Vlo\u017ei\u0165 riadok za","paste_row_before_desc":"Vlo\u017ei\u0165 riadok pred","props_desc":"Vlastnosti tabu\u013eky","cell_desc":"Vlastnosti bunky","row_desc":"Vlastnosti riadky tabu\u013eky","merge_cells_desc":"Zl\u00fa\u010di\u0165 bunky","split_cells_desc":"Rozdeli\u0165 bunky","delete_col_desc":"Odstr\u00e1ni\u0165 st\u013apec tabu\u013eky","col_after_desc":"Vlo\u017ei\u0165 st\u013apec za","col_before_desc":"Vlo\u017ei\u0165 st\u013apec pred","delete_row_desc":"Odstr\u00e1ni\u0165 riadok tabu\u013eky","row_after_desc":"Vlo\u017ei\u0165 riadok za","row_before_desc":"Vlo\u017ei\u0165 riadok pred",desc:"Vlo\u017ei\u0165 nov\u00fa tabu\u013eku","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","cellprops_delta_height":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"Pokia\u013e obnov\u00edte ulo\u017een\u00fd obsah, strat\u00edte t\u00fdm v\u0161etok obsah, ktor\u00fd je pr\u00e1ve v okne editora.\n\nSkuto\u010dne chcete obnovi\u0165 ulo\u017een\u00fd obsah?","restore_content":"Obnovi\u0165 automaticky ulo\u017een\u00fd obsah.","unload_msg":"Preveden\u00e9 zmeny m\u00f4\u017eu by\u0165 straten\u00e9, ak opust\u00edte t\u00fato str\u00e1nku."},fullscreen:{desc:"Prepn\u00fa\u0165 na celostr\u00e1nkov\u00e9 zobrazenie"},media:{"delta_width":"180",edit:"Upravi\u0165 pripojen\u00e9 m\u00e9di\u00e1",desc:"Vlo\u017ei\u0165/upravi\u0165 m\u00e9di\u00e1","delta_height":""},fullpage:{desc:"Vlastnosti dokumentu","delta_width":"","delta_height":""},template:{desc:"Vlo\u017ei\u0165 preddefinovan\u00fd obsah zo \u0161abl\u00f3ny"},visualchars:{desc:"Zobrazenie skryt\u00fdch znakov zap/vyp"},spellchecker:{desc:"Prepn\u00fa\u0165 kontrolu pravopisu",menu:"Nastavenie kontroly pravopisu","ignore_word":"Vynecha\u0165 slovo","ignore_words":"Vynecha\u0165 v\u0161etky",langs:"Jazyky",wait:"\u010cakajte pros\u00edm...",sug:"Ponuky","no_sug":"\u017diadne ponuky","no_mpell":"Bez pravopisn\u00fdch ch\u00fdb.","learn_word":"Nau\u010di\u0165 slovo"},pagebreak:{desc:"Vlo\u017ei\u0165 zalomenie str\u00e1nky."},advlist:{types:"Typ",def:"Predvolen\u00fd","lower_alpha":"Mal\u00e9 p\u00edsmen\u00e1","lower_greek":"Mal\u00e9 gr\u00e9cke p\u00edsmen\u00e1","lower_roman":"Mal\u00e9 r\u00edmske \u010d\u00edslice","upper_alpha":"Ve\u013ek\u00e9 p\u00edsmen\u00e1","upper_roman":"Ve\u013ek\u00e9 r\u00edmske \u010d\u00edslice",circle:"Kr\u00fa\u017eok",disc:"Pln\u00e9 koliesko",square:"\u0160tvor\u010dek"},colors:{"333300":"Tmavo olivov\u00e1","993300":"Tmavo oran\u017eov\u00e1","000000":"\u010cierna","003300":"Tmavo zelen\u00e1","003366":"Tmavo az\u00farov\u00e1","000080":"N\u00e1morn\u00edcka modr\u00e1","333399":"Indigo modr\u00e1","333333":"Tmavo siv\u00e1","800000":"Tmavo \u010derven\u00e1",FF6600:"Oran\u017eov\u00e1","808000":"Olivov\u00e1","008000":"Zelen\u00e1","008080":"Modrozelen\u00e1","0000FF":"Modr\u00e1","666699":"\u0160edomodr\u00e1","808080":"Siv\u00e1",FF0000:"\u010cerven\u00e1",FF9900:"Jant\u00e1rov\u00e1","99CC00":"\u017dltozelen\u00e1","339966":"Morsky zelen\u00e1","33CCCC":"Tyrkysov\u00e1","3366FF":"Kr\u00e1\u013eovsk\u00e1 modr\u00e1","800080":"Nachov\u00e1","999999":"Svetlo siv\u00e1",FF00FF:"Purpurov\u00e1",FFCC00:"Zlat\u00e1",FFFF00:"\u017dlt\u00e1","00FF00":"Limetkov\u00e1","00FFFF":"Vodov\u00e1","00CCFF":"Nebesk\u00e1 modr\u00e1","993366":"Hned\u00e1",C0C0C0:"Strieborn\u00e1",FF99CC:"Ru\u017eov\u00e1",FFCC99:"Brosky\u0148ov\u00e1",FFFF99:"Svetlo\u017elt\u00e1",CCFFCC:"Svetlo zelen\u00e1",CCFFFF:"Svetlo az\u00farov\u00e1","99CCFF":"Svetl\u00e1 nebesk\u00e1 modr\u00e1",CC99FF:"Slivkov\u00e1",FFFFFF:"Biela"},aria:{"rich_text_area":"Oblas\u0165 s form\u00e1tovan\u00fdm textom"},wordcount:{words:"Po\u010det slov: "}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/sl.js b/program/js/tiny_mce/langs/sl.js
deleted file mode 100644
index 26d858ed5..000000000
--- a/program/js/tiny_mce/langs/sl.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({sl:{common:{"more_colors":"Ve\u010d barv","invalid_data":"Napaka: vne\u0161ene so bile nepravilne vrednosti, ozna\u010dene so z rde\u010do.","popup_blocked":"\u017dal va\u0161e orodje za prepre\u010devanje odpiranja neza\u017eelenih oken (popup-blocker) ne omogo\u010da prikaza pomo\u017enega okna izbranega orodja. Prepre\u010devanje odpiranja oken morate onemogo\u010diti.","clipboard_no_support":"Trenutno ni podporto v va\u0161em brskalniku. Uporabite bli\u017enjice tipkovnice.","clipboard_msg":"Delo z odlo\u017ei\u0161\u010dem ni mogo\u010de v tem brskalniku. Lahko uporabljate kombinacije tipk Ctrl+X, Ctrl+C, Ctrl+V.\n\u017delite ve\u010d informacij o tem?","not_set":"-- ni nastavljeno --","class_name":"Razred",browse:"Prebrskaj",close:"Zapri",cancel:"Prekli\u010di",update:"Posodobi",insert:"Vstavi",apply:"Uporabi","edit_confirm":"\u017delite uporabiti na\u010din \\\'videz ne vara\\\' (WYSIWYG) za to vnosno polje?","invalid_data_number":"{#field} mora biti veljavno \u0161tevilo","invalid_data_min":"{#field} mora biti ve\u010dje od {#min}","invalid_data_size":"{#field} mora biti \u0161tevilo ali odstotek",value:"(vrednost)"},contextmenu:{full:"Polno",right:"Desno",center:"Sredina",left:"Levo",align:"Poravnava"},insertdatetime:{"day_short":"ned,pon,tor,sre,\u010det,pet,sob,ned","day_long":"nedelja,ponedeljek,torek,sreda,\u010detrtek,petek,sobota,nedelja","months_short":"jan,feb,mar,apr,maj,jun,jul,avg,sep,okt,nov,dec","months_long":"januar,februar,marec,april,maj,junij,julij,avgust,september,oktober,november,december","inserttime_desc":"Vstavi \u010das","insertdate_desc":"Vstavi datum","time_fmt":"%H:%M:%S","date_fmt":"%d.%m.%Y"},print:{"print_desc":"Natisni"},preview:{"preview_desc":"Predogled"},directionality:{"rtl_desc":"Smer od desne proti levi","ltr_desc":"Smer od leve proti desni"},layer:{content:"Nov sloj...","absolute_desc":"Preklop absolutnega polo\u017eaja","backward_desc":"Premakni v ozadje","forward_desc":"Premakni v ospredje","insertlayer_desc":"Vstavi nov sloj"},save:{"save_desc":"Shrani","cancel_desc":"Prekli\u010di vse spremembe"},nonbreaking:{"nonbreaking_desc":"Vstavi nedeljivi presledek"},iespell:{download:"ieSpell ni zaznan. \u017delite, da ga namestim?","iespell_desc":"Za\u017eeni preverjanje \u010drkovanja"},advhr:{"delta_height":"spremeba_vi\u0161ine","delta_width":"sprememba_\u0161irine","advhr_desc":"Vodoravna \u010drta"},emotions:{"delta_height":"delta_vi\u0161ina","delta_width":"delta_\u0161irina","emotions_desc":"Sme\u0161ki"},searchreplace:{"replace_desc":"Najdi/zamenjaj","search_desc":"Najdi","delta_width":"","delta_height":""},advimage:{"image_desc":"Vstavi/uredi sliko","delta_width":"","delta_height":""},advlink:{"link_desc":"Vstavi/uredi povezavo","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"Vstavi/uredi atribute","ins_desc":"Vstavljeno","del_desc":"Izbrisano","acronym_desc":"Kratica","abbr_desc":"Okraj\u0161ava","cite_desc":"Citat","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"Uredi sloge CSS","delta_height":"","delta_width":""},paste:{"plaintext_mode":"Operacija prilepi je sedaj v na\u010dinu \"golo besedilo\". \u010ce jo \u017eelite vrniti v obi\u010dajen na\u010din, kliknite \u0161e enkrat.","plaintext_mode_sticky":"Operacija prilepi je sedaj v na\u010dinu \"golo besedilo\". \u010ce jo \u017eelite vrniti v obi\u010dajen na\u010din, kliknite \u0161e enkrat. Po izvedbi lepljenja se bo nastavitev povrnila v obi\u010dajen na\u010din.","selectall_desc":"Izberi vse","paste_word_desc":"Prilepi iz Word-a","paste_text_desc":"Prilepi kot golo besedilo"},"paste_dlg":{"word_title":"Uporabite kombinacijo tipk CTRL+V, da prilepite vsebino v okno.","text_linebreaks":"Obdr\u017ei prelome vrstic","text_title":"Uporabite kombinacijo tipk CTRL+V, da prilepite vsebino v okno."},table:{"cellprops_delta_width":"100",cell:"Celica",col:"Stolpec",row:"Vrstica",del:"Odstrani tabelo","copy_row_desc":"Kopiraj vrstico","cut_row_desc":"Izre\u017ei vrstico","paste_row_after_desc":"Prilepi vrstico po","paste_row_before_desc":"Prilepi vrstico pred","props_desc":"Lastnosti tabele","cell_desc":"Lastnosti celice","row_desc":"Lastnosti vrstice","merge_cells_desc":"Spoji celice","split_cells_desc":"Razcepi celico","delete_col_desc":"Odstrani stolpec","col_after_desc":"Vstavi stolpec po","col_before_desc":"Vstavi stolpec pred","delete_row_desc":"Odstrani vrstico","row_after_desc":"Vstavi vrstico pod","row_before_desc":"Vstavi vrstico nad",desc:"Vstavi/posodobi tabelo","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"\u010ce povrnete shranjeno vsebino, boste prepisali trenutno vsebino urejevalnika.nnSte prepri\u010dani, da \u017eelite nadaljevati?","restore_content":"Povrni na zadnje shranjeno vsebino.","unload_msg":"\u010ce nadaljujete, bodo spremembe izgubljene."},fullscreen:{desc:"Preklopi celozaslonski na\u010din"},media:{"delta_height":"delta_\u0161irina","delta_width":"delta_\u0161irina",edit:"Uredi multimedijsko vsebino",desc:"Vstavi / uredi multimedijsko vsebino"},fullpage:{desc:"Lastnosti dokumenta","delta_width":"sprememba_\u0161irine","delta_height":"sprememba_vi\u0161ine"},template:{desc:"Vstavi pripravljeno vsebino predloge"},visualchars:{desc:"Preklopi prikaz nadzornih znakov."},spellchecker:{desc:"Preklopi \u010drkovalnik",menu:"Nastavitve \u010drkovalnika","ignore_word":"Prezri besedo","ignore_words":"Prezri vse",langs:"Jeziki",wait:"Prosim po\u010dakaj...",sug:"Predlogi","no_sug":"Ni predlogov","no_mpell":"Napa\u010dnega \u010drkovanja nisem na\u0161el.","learn_word":"Zapomni si besedo"},pagebreak:{desc:"Vstavi lom strani."},advlist:{types:"Tipi",def:"Privzeto","lower_alpha":"Mali znaki","lower_greek":"Male gr\u0161ke \u010drke","lower_roman":"Male latinske \u010drke","upper_alpha":"Veliki znaki","upper_roman":"Velike latinske \u010drke",circle:"Krog",disc:"Disk",square:"Kvadrat"},colors:{"333300":"Temno olivna","993300":"Za\u017egano oran\u017ena","000000":"\u010crna","003300":"Temno zelena","003366":"Sinje temna","000080":"Mornarsko modra","333399":"Indigo","333333":"Zelo temno siva","800000":"Kostanjevo rde\u010da",FF6600:"Oran\u017ena","808000":"Olivna","008000":"Zelena","008080":"Temno sinje modra","0000FF":"Modra","666699":"Sivo modra","808080":"Siva",FF0000:"Rde\u010da",FF9900:"Jantarna","99CC00":"Rumeno zelena","339966":"Morsko zelena","33CCCC":"Turkizna","3366FF":"Kraljevsko modra","800080":"Vijoli\u010dna","999999":"Srednje siva",FF00FF:"Svetlo vijoli\u010dna",FFCC00:"Zlata",FFFF00:"Rumena","00FF00":"Citronsko zelena","00FFFF":"Akvarijsko modra","00CCFF":"Nebe\u0161ko modra","993366":"Rjava",C0C0C0:"Srebrna",FF99CC:"Roza",FFCC99:"Mareli\u010dna",FFFF99:"Svetlo rumena",CCFFCC:"Bledo zelena",CCFFFF:"Bledo turkizna","99CCFF":"Svetlo nebe\u0161ko modra",CC99FF:"Slivova",FFFFFF:"Bela"},aria:{"rich_text_area":"Polje z obogatenim besedilom"},wordcount:{words:"Besed:"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/sq.js b/program/js/tiny_mce/langs/sq.js
deleted file mode 100644
index c3fa4687c..000000000
--- a/program/js/tiny_mce/langs/sq.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({sq:{common:{"more_colors":"M\u00eb shum\u00eb ngjyra","invalid_data":"Gabim: Keni futur vlera t\u00eb pavlefshme, t\u00eb cilat jan\u00eb sh\u00ebnuar me t\u00eb kuqe.","popup_blocked":"Ju k\u00ebrkojm\u00eb ndjes\u00eb, por bllokuesi i popup-eve ka bllokuar nj\u00eb dritare q\u00eb ofron funksjonalitet p\u00ebr programin. Duhet t\'a \u00e7aktivizoni bllokuesin e popup-eve n\u00eb m\u00ebnyr\u00eb q\u00eb t\'i p\u00ebrdorni opsionet.","clipboard_no_support":"Aktualisht nuk suportohet nga Shfletuesi juaj, p\u00ebrdorni tastjer\u00ebn.","clipboard_msg":"Kopja/Prerja/Ngjitja nuk suportohen n\u00eb Mozilla dhe Firefox.\nD\u00ebshironi m\u00eb shum\u00eb informacione p\u00ebr k\u00ebt\u00eb \u00e7\u00ebshtje?","not_set":"-- pa v\u00ebn\u00eb --","class_name":"Klasa",browse:"Shfleto",close:"Mbyll",cancel:"Anulo",update:"Rifresko",insert:"Fut",apply:"Zbato","edit_confirm":"Doni t\u00eb p\u00ebrdorni m\u00ebnyr\u00ebn WYSIWYG p\u00ebr k\u00ebt\u00eb tekst?","invalid_data_number":"{#field} duhet t\u00eb jet\u00eb num\u00ebr","invalid_data_min":"{#field} duhet t\u00eb jet\u00eb num\u00ebr m\u00eb i madh se {#min}","invalid_data_size":"{#field} duhet t\u00eb jet\u00eb num\u00ebr ose p\u00ebrqindje",value:"(vler\u00eb)"},contextmenu:{full:"I Plot\u00eb",right:"Djathtas",center:"Qend\u00ebr",left:"Majtas",align:"Drejtimi"},insertdatetime:{"day_short":"Dje,H\u00ebn,Mar,M\u00ebr,Enj,Pre,Sht,Dje","day_long":"E Djel\u00eb,E H\u00ebn\u00eb,E Mart\u00eb,E M\u00ebrkur\u00eb,E Enjte,E Premte,E Shtun\u00eb,E Djel\u00eb","months_short":"Jan,Shk,Mar,Pri,Maj,Qer,Kor,Gus,Sht,Tet,N\u00ebn,Dhj","months_long":"Janar,Shkurt,Mars,Prill,Maj,Qershor,Korrik,Gusht,Shtator,Tetor,N\u00ebntor,Dhjetor","inserttime_desc":"Fut or\u00ebn","insertdate_desc":"Fut dat\u00ebn","time_fmt":"%H:%M:%S","date_fmt":"%d-%m-%y"},print:{"print_desc":"Printo"},preview:{"preview_desc":"Paraqitje"},directionality:{"rtl_desc":"Drejtimi djathtas-majtas","ltr_desc":"Drejtimi majtas-djathtas"},layer:{content:"Shtres\u00eb e re...","absolute_desc":"Aktivizo/\u00e7aktivizo pozicionimin absolut","backward_desc":"L\u00ebviz prapa","forward_desc":"L\u00ebviz para","insertlayer_desc":"Fut shtres\u00eb t\u00eb re"},save:{"save_desc":"Ruaj","cancel_desc":"Anuloji t\u00eb gjitha ndryshimet"},nonbreaking:{"nonbreaking_desc":"Fut hap\u00ebsir\u00eb"},iespell:{download:"ieSpell nuk u detektua. D\u00ebshironi ta instaloni?","iespell_desc":"Kontrollo p\u00ebr gabime drejt\u00ebshkrimore"},advhr:{"advhr_desc":"Linj\u00eb horizontale","delta_height":"","delta_width":""},emotions:{"emotions_desc":"Emocionet","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"K\u00ebrko/Z\u00ebvend\u00ebso","search_desc":"K\u00ebrko","delta_width":"","delta_height":""},advimage:{"image_desc":"Fut/edito foto","delta_width":"","delta_height":""},advlink:{"link_desc":"Fut/edito lidhje","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"Fut/Edito Tipare","ins_desc":"Futje","del_desc":"Fshirje","acronym_desc":"Akronim","abbr_desc":"Shkurtim","cite_desc":"Citat","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"Edito Stilet CSS","delta_height":"","delta_width":""},paste:{"plaintext_mode":"Ngjitja tani \u00ebsht\u00eb e thjesht\u00eb. Kliko p\u00ebrs\u00ebri p\u00ebr tu kthyer n\u00eb m\u00ebnyr\u00ebn standarte.","plaintext_mode_sticky":"Ngjitja tani \u00ebsht\u00eb e thjesht\u00eb. Kliko p\u00ebrs\u00ebri p\u00ebr tu kthyer n\u00eb m\u00ebnyr\u00ebn standarte. Pasi ngjisni di\u00e7ka, do t\u00eb ktheheni p\u00ebrs\u00ebri n\u00eb m\u00ebnyr\u00ebn standarte.","selectall_desc":"Zgjidhi t\u00eb gjitha","paste_word_desc":"Ngjit nga Word","paste_text_desc":"Ngjit si Tekst"},"paste_dlg":{"word_title":"P\u00ebrdor CTRL+V p\u00ebr t\u00eb ngjitur tekstin.","text_linebreaks":"Ruaj linjat e reja","text_title":"P\u00ebrdor CTRL+V p\u00ebr t\u00eb ngjitur tekstin."},table:{cell:"Qeliz\u00eb",col:"Kolon\u00eb",row:"Rresht",del:"Fshi tabel\u00ebn","copy_row_desc":"Kopjo rreshtin","cut_row_desc":"Prit rreshtin","paste_row_after_desc":"Ngjite rreshtin pas","paste_row_before_desc":"Ngjite rreshtin p\u00ebrpara","props_desc":"Tiparet e tabel\u00ebs","cell_desc":"Tiparet e qeliz\u00ebs","row_desc":"Tiparet e rreshtit","merge_cells_desc":"Bashkoji qelizat","split_cells_desc":"Ndaji qelizat e bashkuara","delete_col_desc":"Fshi kolon\u00ebn","col_after_desc":"Fut kolon\u00eb pas","col_before_desc":"Fut kolon\u00eb p\u00ebrpara","delete_row_desc":"Fshi rreshtin","row_after_desc":"Fut rresht pas","row_before_desc":"Fut rresht p\u00ebrpara",desc:"Fut nj\u00eb tabel\u00eb t\u00eb re","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"N\u00ebse riktheni versionin e ruajtur, do t\u00eb humbisni p\u00ebrmbajtjen q\u00eb ndodhet aktualisht n\u00eb editor.\n\nJeni t\u00eb sigurt q\u00eb doni ta riktheni?","restore_content":"Riktheni p\u00ebrmbajtjen e ruajtur.","unload_msg":"Ndryshimet q\u00eb keni b\u00ebr\u00eb do t\u00eb humbasin n\u00ebse largoheni nga kjo faqe."},fullscreen:{desc:"Aktivizo/\u00e7aktivizo pamjen e plot\u00eb"},media:{edit:"Edito media",desc:"Fut / edito media","delta_height":"","delta_width":""},fullpage:{desc:"Tiparet e dokumentit","delta_width":"","delta_height":""},template:{desc:"Fut p\u00ebrmbajtje shabllon"},visualchars:{desc:"Karakteret e kontrollit vizual: on/off."},spellchecker:{desc:"Aktivizo/\u00e7aktivizo kontrolluesin e gabimeve",menu:"Tiparet e kontrolluesit t\u00eb gabimeve","ignore_word":"Injoro fjal\u00ebn","ignore_words":"Injoroji t\u00eb gjitha",langs:"Gjuh\u00ebt",wait:"Ju lutem prisni...",sug:"Sygjerimet","no_sug":"Asnj\u00eb sygjerim","no_mpell":"Nuk u gjet asnj\u00eb gabim.","learn_word":"M\u00ebso fjal\u00ebn"},pagebreak:{desc:"Fut thyerje faqeje."},advlist:{types:"Tipet",def:"Paracaktuar","lower_alpha":"Alf. i Vog\u00ebl","lower_greek":"Grek i Vog\u00ebl","lower_roman":"Roman i Vog\u00ebl","upper_alpha":"Alf. i Madh","upper_roman":"Roman i Madh",circle:"Qark",disc:"Disk",square:"Katror"},colors:{"333300":"Ulli i err\u00ebt","993300":"Portokalli e djegur","000000":"I zi","003300":"E gjelb\u00ebr e err\u00ebt","003366":"Boj\u00ebqielli e err\u00ebt","000080":"Blu marine","333399":"Indigo","333333":"Gri shum\u00eb e err\u00ebt","800000":"G\u00ebshtenj\u00eb",FF6600:"Portokalli","808000":"Ulli","008000":"E gjelb\u00ebr","008080":"Blu e gjelb\u00ebr","0000FF":"Blu","666699":"Blue gri","808080":"Gri",FF0000:"E kuqe",FF9900:"Qelibar","99CC00":"E gjelb\u00ebr e verdh\u00eb","339966":"E gjelb\u00ebr deti","33CCCC":"Gurkali","3366FF":"Blu mbret\u00ebrore","800080":"Vjollc\u00eb","999999":"Gri e mesme",FF00FF:"Magenta",FFCC00:"Flori",FFFF00:"E verdh\u00eb","00FF00":"Lime","00FFFF":"Aqua","00CCFF":"Blu qielli","993366":"Boj\u00ebkafe",C0C0C0:"Argjend",FF99CC:"Roz\u00eb",FFCC99:"Pjeshk\u00eb",FFFF99:"E verdh\u00eb e hapur",CCFFCC:"E gjelb\u00ebr e zbeht\u00eb",CCFFFF:"Cyan e zbeht\u00eb","99CCFF":"Blu qielli e hapur",CC99FF:"Kumbull",FFFFFF:"E bardh\u00eb"},aria:{"rich_text_area":"Zon\u00eb e Pasur"},wordcount:{words:"Fjal\u00eb:"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/sr.js b/program/js/tiny_mce/langs/sr.js
deleted file mode 100644
index 18166540e..000000000
--- a/program/js/tiny_mce/langs/sr.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({sr:{common:{"more_colors":"Jo\u0161 boja","invalid_data":"Gre\u0161ka: Une\u0161ene su nedozvoljene vrednosti, i ozna\u010dene su crvenom bojom.","popup_blocked":"\u017dao nam je, izgleda da je va\u0161 popup-bloker onemogu\u0107io popup prozor u sklopu ovog programa. Morate isklju\u010diti blokiranje popup prozora da bi u potpunosti iskoristili ovu alatku.","clipboard_no_support":"Va\u0161 web \u010dita\u0161 trenutno ne podr\u017eava ovo, upotrebite pre\u010dice na tastaturi.","clipboard_msg":"Kopiraj/Iseci/Zalepi nije omogu\u0107eno u Mozilla i Firefox web \u010dita\u010dima.\n\u017delite li vi\u0161e informacija o ovom problemu?","not_set":"---","class_name":"Klasa",browse:"Potra\u017ei",close:"Zatvori",cancel:"Odustani",update:"A\u017euriraj",insert:"Umetni",apply:"Primeni","edit_confirm":"Da li \u017eelite da koristite WYSIWYG re\u017eim rada za ovo tekstualno polje?","invalid_data_number":"{#field} mora biti broj","invalid_data_min":"{#field} mora biti broj ve\u0107i od {#min}","invalid_data_size":"{#field} mora biti broj ili procenat",value:"(value)"},contextmenu:{full:"Obostrano",right:"Desno",center:"Po sredini",left:"Levo",align:"Ravnanje"},insertdatetime:{"day_short":"ned,pon,uto,sre,\u010det,pet,sub,ned","day_long":"nedelja,ponedjeljak,utorak,sreda,\u010detvrtak,petak,subota,nedelja","months_short":"jan,feb,mar,apr,maj,jun,jul,avg,sep,okt,nov,dec","months_long":"januar,februar,mart,april,maj,juni,juli,avgust,septembar,oktobar,novembar,decembar","inserttime_desc":"Umetni vreme","insertdate_desc":"Umetni datum","time_fmt":"%H:%M:%S","date_fmt":"%d.%m.%Y."},print:{"print_desc":"\u0160tampaj"},preview:{"preview_desc":"Preliminarni prikaz"},directionality:{"rtl_desc":"Zdesna nalevo","ltr_desc":"Sleva nadesno"},layer:{content:"Novi sloj...","absolute_desc":"Uklju\u010di/Isklju\u010di apsolutno pozicioniranje","backward_desc":"Pomeri unazad","forward_desc":"Pomeri unapred","insertlayer_desc":"Umetni novi sloj"},save:{"save_desc":"Sa\u010duvaj","cancel_desc":"Odustani od svih promena"},nonbreaking:{"nonbreaking_desc":"Ubaci neprelomivi razmak"},iespell:{download:"ieSpell (za proveru pravopisa) nije instaliran. \u017delite li da ga instalirate sada?","iespell_desc":"Pokreni proveru pravopisa"},advhr:{"delta_height":"","delta_width":"","advhr_desc":"Horizontalna linija"},emotions:{"delta_height":"","delta_width":"","emotions_desc":"Smajli"},searchreplace:{"replace_desc":"Prona\u0111i/Zameni","delta_width":"","delta_height":"","search_desc":"Prona\u0111i"},advimage:{"delta_width":"50","image_desc":"Umetni/Uredi sliku","delta_height":""},advlink:{"delta_height":"","delta_width":"","link_desc":"Umetni/Uredi link"},xhtmlxtras:{"attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":"","attribs_desc":"Umetni/Uredi atribute","ins_desc":"Umetanje","del_desc":"Brisanje","acronym_desc":"Akronim","abbr_desc":"Skra\u0107enica","cite_desc":"Citat"},style:{"delta_height":"","delta_width":"50",desc:"Uredi CSS stil"},paste:{"plaintext_mode":"\'Zalepi\' je sada u re\u017eimu rada sa obi\u010dnim tekstom. Kliknite ponovo za povratak u standardni re\u017eim.","plaintext_mode_sticky":"\'Zalepi\' je sada u re\u017eimu rada sa obi\u010dnim tekstom. Kliknite ponovo za povratak u standardni re\u017eim. Nakon \u0161to zalepite ne\u0161to bi\u0107ete automatski vra\u0107eni u standardni re\u017eim.","selectall_desc":"Odaberi sve","paste_word_desc":"Zalepi iz Worda","paste_text_desc":"Zalepi kao obi\u010dan tekst"},"paste_dlg":{"word_title":"Koristite CTRL V na tastaturi da zalepite tekst u prozor.","text_linebreaks":"Zadr\u017ei prelome linija","text_title":"Koristite CTRL+V na tastaturi da zalepite tekst u prozor."},table:{"merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":"",cell:"\u0106elija",col:"Kolona",row:"Red",del:"Obri\u0161i tabelu","copy_row_desc":"Kopiraj red","cut_row_desc":"Iseci red","paste_row_after_desc":"Zalepi red iza","paste_row_before_desc":"Zalepi red ispred","props_desc":"Osobine tabele","cell_desc":"Osobine \u0107elije","row_desc":"Osobine reda","merge_cells_desc":"Spoj \u0107elije","split_cells_desc":"Razdvoj spojene \u0107elije","delete_col_desc":"Ukloni kolonu","col_after_desc":"Ubaci kolonu iza","col_before_desc":"Ubaci kolonu ispred","delete_row_desc":"Obri\u0161i red","row_after_desc":"Ubaci red iza","row_before_desc":"Ubaci red ispred",desc:"Umetni novu tabelu"},autosave:{"warning_message":"Ako povratite sa\u010duvani sadr\u017eaj, izgubi\u0107ete sav sadr\u017eaj koji je trenutno u editoru.\n\nDa li ste sigurni da \u017eelite da povratite sa\u010duvani sadr\u017eaj?","restore_content":"Povrati automatski-sa\u010duvan sadr\u017eaj","unload_msg":"Promene koje ste napravili bi\u0107e poni\u0161tene ako napustite ovu stranicu."},fullscreen:{desc:"Uklju\u010di/Isklju\u010di prikaz preko celog ekrana"},media:{"delta_height":"","delta_width":"",edit:"Uredi integrisani multimedijalni sadr\u017eaj",desc:"Umetni/Uredi integrisani multimedijalni sadr\u017eaj"},fullpage:{desc:"Osobine dokumenta","delta_width":"","delta_height":""},template:{desc:"Umetni predefinisani sadr\u017eaj \u0161ablona"},visualchars:{desc:"Vizuelni kontrolni simboli uklju\u010deni/isklju\u010deni."},spellchecker:{desc:"Uklju\u010di/Isklju\u010di proveru pravopisa",menu:"Pode\u0161avanja za proveru pravopisa","ignore_word":"Zanemari re\u010d","ignore_words":"Zanemari sve",langs:"Jezici",wait:"Sa\u010dekajte...",sug:"Predlozi","no_sug":"Nema predloga","no_mpell":"Nije prona\u0111ena nijedna pravopisna gre\u0161ka.","learn_word":"Nau\u010di re\u010d"},pagebreak:{desc:"Umetni prelom strane"},advlist:{types:"Vrste",def:"Podrazumevano","lower_alpha":"Mala slova abecede","lower_greek":"Mala gr\u010dka slova","lower_roman":"Rimski br. malim slovima","upper_alpha":"Velika slova abecede","upper_roman":"Rimski br. velikim slovima",circle:"Prazan kru\u017ei\u0107",disc:"Pun kru\u017ei\u0107",square:"Kvadrati\u0107"},colors:{"333300":"Dark olive","993300":"Burnt orange","000000":"Black","003300":"Dark green","003366":"Dark azure","000080":"Navy Blue","333399":"Indigo","333333":"Very dark gray","800000":"Maroon",FF6600:"Orange","808000":"Olive","008000":"Green","008080":"Teal","0000FF":"Blue","666699":"Grayish blue","808080":"Gray",FF0000:"Red",FF9900:"Amber","99CC00":"Yellow green","339966":"Sea green","33CCCC":"Turquoise","3366FF":"Royal blue","800080":"Purple","999999":"Medium gray",FF00FF:"Magenta",FFCC00:"Gold",FFFF00:"Yellow","00FF00":"Lime","00FFFF":"Aqua","00CCFF":"Sky blue","993366":"Brown",C0C0C0:"Silver",FF99CC:"Pink",FFCC99:"Peach",FFFF99:"Light yellow",CCFFCC:"Pale green",CCFFFF:"Pale cyan","99CCFF":"Light sky blue",CC99FF:"Plum",FFFFFF:"White"},aria:{"rich_text_area":"Rich Text Area"},wordcount:{words:"Re\u010di:"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/sv.js b/program/js/tiny_mce/langs/sv.js
deleted file mode 100644
index a2a3d77ff..000000000
--- a/program/js/tiny_mce/langs/sv.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({sv:{common:{"more_colors":"Fler f\u00e4rger","invalid_data":"Fel: Inkorrekta v\u00e4rden har matats in, dessa \u00e4r markerade i r\u00f6tt.","popup_blocked":"Popup blockerare detekterad. St\u00e4ng av den s\u00e5 att dialogerna kan \u00f6ppnas.","clipboard_no_support":"Funktionen \u00e4r inte tillg\u00e4nglig i din webbl\u00e4sare, anv\u00e4nd tangentbordsgenv\u00e4garna i st\u00e4llet.","clipboard_msg":"Kopiera/klipp ut/klistra in \u00e4r inte tillg\u00e4ngligt i din webbl\u00e4sare.\nVill du veta mer?","not_set":"-- Inte satt --","class_name":"Klass",browse:"Bl\u00e4ddra",close:"St\u00e4ng",cancel:"Avbryt",update:"Uppdatera",insert:"Infoga",apply:"Applicera","edit_confirm":"Vill du anv\u00e4nda WYSIWYG f\u00f6r denna textarea?","invalid_data_number":"{#field} m\u00e5ste vara ett nummer","invalid_data_min":"{#field} m\u00e5ste vara ett nummer st\u00f6rren \u00e4n {#min}","invalid_data_size":"{#field} m\u00e5ste vara ett nummer eller i procent",value:"(V\u00e4rde)"},contextmenu:{full:"Utfyllnad",right:"H\u00f6ger",center:"Centrerad",left:"V\u00e4nster",align:"Justering"},insertdatetime:{"day_short":"S\u00f6n,M\u00e5n,Tis,Ons,Tors,Fre,L\u00f6r,S\u00f6n","day_long":"S\u00f6ndag,M\u00e5ndag,Tisdag,Onsdag,Torsdag,Fredag,L\u00f6rdag,S\u00f6ndag","months_short":"Jan,Feb,Mar,Apr,Maj,Jun,Jul,Aug,Sep,Okt,Nov,Dec","months_long":"Januari,Februari,Mars,April,Maj,Juni,Juli,Augusti,September,Oktober,November,December","inserttime_desc":"Infoga tid","insertdate_desc":"Infoga datum","time_fmt":"%H:%M:%S","date_fmt":"%Y-%m-%d "},print:{"print_desc":"Skriv ut"},preview:{"preview_desc":"F\u00f6rhandsgranska"},directionality:{"rtl_desc":"Skriftl\u00e4ge - h\u00f6ger till v\u00e4nster","ltr_desc":"Skriftl\u00e4ge - v\u00e4nster till h\u00f6ger"},layer:{content:"Nytt lager...","absolute_desc":"Sl\u00e5 av/p\u00e5 absolut positionering","backward_desc":"Flytta bak\u00e5t","forward_desc":"Flytta fram\u00e5t","insertlayer_desc":"Infoga nytt lager"},save:{"save_desc":"Spara","cancel_desc":"Hoppa \u00f6ver alla f\u00f6r\u00e4ndringar"},nonbreaking:{"nonbreaking_desc":"Infoga icke radbrytande mellanslag"},iespell:{download:"ieSpell kunde inte hittas, vill du installera denna nu?","iespell_desc":"R\u00e4ttstava"},advhr:{"advhr_desc":"Horisontell skiljelinje","delta_height":"","delta_width":""},emotions:{"emotions_desc":"Smileys","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"S\u00f6k/ers\u00e4tt","search_desc":"S\u00f6k","delta_width":"","delta_height":""},advimage:{"image_desc":"Infoga/redigera bild","delta_width":"","delta_height":""},advlink:{"link_desc":"Infoga/redigera l\u00e4nk","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"Redigera attribut","ins_desc":"Markera som tillagt","del_desc":"Markera som struket","acronym_desc":"Akronym","abbr_desc":"F\u00f6rkortning","cite_desc":"citat","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"Redigera inline CSS","delta_height":"","delta_width":""},paste:{"plaintext_mode":"Inklistring \u00e4r nu i textl\u00e4ge.","plaintext_mode_sticky":"Inklistring \u00e4r nu i textl\u00e4ge. Efter att du klistrat in kommer den att \u00e5terg\u00e5 till normall\u00e4ge.","selectall_desc":"Markera allt","paste_word_desc":"Klistra in fr\u00e5n Word","paste_text_desc":"Klistra in som text"},"paste_dlg":{"word_title":"Anv\u00e4nd ctrl-v p\u00e5 ditt tangentbord f\u00f6r att klistra in i detta f\u00f6nster.","text_linebreaks":"Spara radbrytningar","text_title":"Anv\u00e4nd ctrl-v p\u00e5 ditt tangentbord f\u00f6r att klistra in i detta f\u00f6nster."},table:{cell:"Cell",col:"Kolumn",row:"Rad",del:"Radera tabell","copy_row_desc":"Klistra in rad","cut_row_desc":"Klipp ut rad","paste_row_after_desc":"Klistra in rad efter","paste_row_before_desc":"Klistra in rad ovanf\u00f6r","props_desc":"Tabellinst\u00e4llningar","cell_desc":"Tabellcellsinst\u00e4llningar","row_desc":"Tabellradsinst\u00e4llningar","merge_cells_desc":"Sammanfoga celler","split_cells_desc":"Separera sammansatta celler","delete_col_desc":"Radera kolumn","col_after_desc":"Infoga kolumn efter","col_before_desc":"Infoga kolumn f\u00f6re","delete_row_desc":"Radera rad","row_after_desc":"Infoga ny rad efter","row_before_desc":"Infoga ny rad f\u00f6re",desc:"Infoga/redigera ny tabell","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"Om du \u00e5terskapar inneh\u00e5ll s\u00e5 kommer det nuvarande inneh\u00e5llet i f\u00e4ltet att raderas.\n\n\u00c4r du s\u00e4ker p\u00e5 att du vill g\u00f6ra detta?","restore_content":"\u00c5terskapa automatiskt sparat inneh\u00e5ll.","unload_msg":"De f\u00f6r\u00e4ndringar som du gjort kommer att g\u00e5 f\u00f6rlorade om du l\u00e4mnar sidan."},fullscreen:{desc:"Sl\u00e5 av/p\u00e5 fullsk\u00e4rmsl\u00e4ge"},media:{edit:"Redigera inb\u00e4ddad media",desc:"Infoga/redigera inb\u00e4ddad media","delta_height":"","delta_width":""},fullpage:{desc:"Dokumentinst\u00e4llningar","delta_width":"","delta_height":""},template:{desc:"Infoga en f\u00e4rdig mall"},visualchars:{desc:"Visa osynliga tecken"},spellchecker:{desc:"Sl\u00e5 av/p\u00e5 r\u00e4ttstavningskontroll",menu:"R\u00e4ttstavningsinst\u00e4llningar","ignore_word":"Ignorera ord","ignore_words":"Ignorera alla",langs:"Spr\u00e5k",wait:"Var god v\u00e4nta...",sug:"F\u00f6rslag","no_sug":"Inga f\u00f6rslag","no_mpell":"Inga felstavningar funna.","learn_word":"L\u00e4r ord"},pagebreak:{desc:"Infoga sidbrytning"},advlist:{types:"Typer",def:"Standard","lower_alpha":"Lower alpha","lower_greek":"Lower greek","lower_roman":"Lower roman","upper_alpha":"Upper alpha","upper_roman":"Upper roman",circle:"Cirkel",disc:"Disc",square:"Fyrkant"},colors:{"333300":"M\u00f6rkoliv","993300":"Br\u00e4ndorange","000000":"Svart","003300":"M\u00f6rkgr\u00f6n","003366":"M\u00f6rkazur","000080":"Marinbl\u00e5","333399":"Indigo","333333":"Mycket m\u00f6rkgr\u00e5","800000":"R\u00f6dbrun",FF6600:"Orange","808000":"Oliv","008000":"Gr\u00f6n","008080":"Kricka","0000FF":"Bl\u00e5","666699":"Gr\u00e5bl\u00e5","808080":"Gr\u00e5",FF0000:"R\u00f6d",FF9900:"B\u00e4rnsten","99CC00":"Gulgr\u00f6n","339966":"Havsbl\u00e5","33CCCC":"Turkos","3366FF":"Kungligtbl\u00e5tt","800080":"Lila","999999":"Medelgr\u00e5",FF00FF:"Magenta",FFCC00:"Guld",FFFF00:"Gul","00FF00":"Lime","00FFFF":"Vatten","00CCFF":"Himmelsbl\u00e5","993366":"Brun",C0C0C0:"Silver",FF99CC:"Rosa",FFCC99:"Periska",FFFF99:"Ljusgul",CCFFCC:"Blekgr\u00f6n",CCFFFF:"Blekcyan","99CCFF":"Ljus himmel",CC99FF:"Plommon",FFFFFF:"Vitt"},aria:{"rich_text_area":"Redigeringsarea"},wordcount:{words:"Ord:"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/ta.js b/program/js/tiny_mce/langs/ta.js
deleted file mode 100644
index bd4f3e9d4..000000000
--- a/program/js/tiny_mce/langs/ta.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({ta:{common:{"more_colors":"More colors","invalid_data":"Error: Invalid values entered, these are marked in red.","popup_blocked":"Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.","clipboard_no_support":"Currently not supported by your browser, use keyboard shortcuts instead.","clipboard_msg":"Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?","not_set":"-- Not set --","class_name":"Class",browse:"Browse",close:"Close",cancel:"Cancel",update:"Update",insert:"Insert",apply:"Apply","edit_confirm":"Do you want to use the WYSIWYG mode for this textarea?","invalid_data_number":"{#field} must be a number","invalid_data_min":"{#field} must be a number greater than {#min}","invalid_data_size":"{#field} must be a number or percentage",value:"(value)"},contextmenu:{full:"Full",right:"Right",center:"Center",left:"Left",align:"Alignment"},insertdatetime:{"day_short":"\u0b9e\u0bbe,\u0ba4\u0bbf,\u0b9a\u0bc6,\u0baa\u0bc1,\u0bb5\u0bbf,\u0bb5\u0bc6,\u0b9a","day_long":"\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bcd\u0bb1\u0bc1\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8,\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0b9f\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8,\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8,\u0baa\u0bc1\u0ba4\u0ba9\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8,\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8,\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8,\u0b9a\u0ba9\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8","months_short":"\u0b9c\u0ba9,\u0baa\u0bbf\u0baa\u0bcd,\u0bae\u0bbe\u0bb0\u0bcd,\u0b8f\u0baa\u0bcd,\u0bae\u0bc7,\u0b9c\u0bc2\u0ba9\u0bcd,\u0b9c\u0bc2\u0bb2\u0bc8,\u0b86\u0b95,\u0b9a\u0bc6\u0baa\u0bcd,\u0b85\u0b95\u0bcd,\u0ba8\u0bb5,\u0b9f\u0bbf\u0b9a","months_long":"\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf,\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf,\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd,\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd,\u0bae\u0bc7,\u0b9c\u0bc2\u0ba9\u0bcd,\u0b9c\u0bc2\u0bb2\u0bc8,\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd,\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bae\u0bcd\u0baa\u0bb0\u0bcd,\u0b85\u0b95\u0bcd\u0b9f\u0bcb\u0baa\u0bb0\u0bcd,\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd,\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd","inserttime_desc":"\u0ba8\u0bc7\u0bb0\u0bae\u0bcd \u0b9a\u0bca\u0bb0\u0bc1\u0b95\u0bc1\u0b95","insertdate_desc":"\u0ba4\u0bc7\u0ba4\u0bbf \u0b9a\u0bca\u0bb0\u0bc1\u0b95\u0bc1\u0b95","time_fmt":"%H:%M:%S","date_fmt":"%Y-%m-%d"},print:{"print_desc":"\u0b85\u0b9a\u0bcd\u0b9a\u0bbf\u0b9f\u0bc1\u0b95"},preview:{"preview_desc":"\u0bae\u0bc1\u0ba9\u0bcd-\u0ba8\u0bcb\u0b95\u0bcd\u0b95\u0bc1"},directionality:{"rtl_desc":"Direction right to left","ltr_desc":"Direction left to right"},layer:{content:"New layer...","absolute_desc":"Toggle absolute positioning","backward_desc":"Move backward","forward_desc":"Move forward","insertlayer_desc":"Insert new layer"},save:{"save_desc":"Save","cancel_desc":"Cancel all changes"},nonbreaking:{"nonbreaking_desc":"Insert non-breaking space character"},iespell:{download:"ieSpell not detected. Do you want to install it now?","iespell_desc":"Run spell checking"},advhr:{"advhr_desc":"Horizontal rule","delta_height":"","delta_width":""},emotions:{"emotions_desc":"Emotions","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"Find/Replace","search_desc":"Find","delta_width":"","delta_height":""},advimage:{"image_desc":"Insert/edit image","delta_width":"","delta_height":""},advlink:{"link_desc":"Insert/edit link","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"Insert/Edit Attributes","ins_desc":"Insertion","del_desc":"Deletion","acronym_desc":"Acronym","abbr_desc":"Abbreviation","cite_desc":"Citation","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"Edit CSS Style","delta_height":"","delta_width":""},paste:{"plaintext_mode":"Paste is now in plain text mode. Click again to toggle back to regular paste mode.","plaintext_mode_sticky":"Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode.","selectall_desc":"Select All","paste_word_desc":"Paste from Word","paste_text_desc":"Paste as Plain Text"},"paste_dlg":{"word_title":"Use CTRL+V on your keyboard to paste the text into the window.","text_linebreaks":"Keep linebreaks","text_title":"Use CTRL+V on your keyboard to paste the text into the window."},table:{cell:"Cell",col:"Column",row:"Row",del:"Delete table","copy_row_desc":"Copy table row","cut_row_desc":"Cut table row","paste_row_after_desc":"Paste table row after","paste_row_before_desc":"Paste table row before","props_desc":"Table properties","cell_desc":"Table cell properties","row_desc":"Table row properties","merge_cells_desc":"Merge table cells","split_cells_desc":"Split merged table cells","delete_col_desc":"Remove column","col_after_desc":"Insert column after","col_before_desc":"Insert column before","delete_row_desc":"Delete row","row_after_desc":"Insert row after","row_before_desc":"Insert row before",desc:"Inserts a new table","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"If you restore the saved content, you will lose all the content that is currently in the editor.\n\nAre you sure you want to restore the saved content?.","restore_content":"Restore auto-saved content.","unload_msg":"The changes you made will be lost if you navigate away from this page."},fullscreen:{desc:"Toggle fullscreen mode"},media:{edit:"Edit embedded media",desc:"Insert / edit embedded media","delta_height":"","delta_width":""},fullpage:{desc:"Document properties","delta_width":"","delta_height":""},template:{desc:"Insert predefined template content"},visualchars:{desc:"Visual control characters on/off."},spellchecker:{desc:"Toggle spellchecker",menu:"Spellchecker settings","ignore_word":"\u0b9a\u0bca\u0bb2\u0bcd\u0bb2\u0bc8 \u0baa\u0bc1\u0bb1\u0b95\u0bcd\u0b95\u0ba3\u0bbf\u0b95\u0bcd\u0b95","ignore_words":"\u0b85\u0ba9\u0bc8\u0ba4\u0bcd\u0ba4\u0bc8\u0baf\u0bc1\u0bae\u0bcd \u0baa\u0bc1\u0bb1\u0b95\u0bcd\u0b95\u0ba3\u0bbf\u0b95\u0bcd\u0b95",langs:"\u0bae\u0bca\u0bb4\u0bbf\u0b95\u0bb3\u0bcd",wait:"\u0ba4\u0baf\u0bb5\u0bc1\u0b9a\u0bc6\u0baf\u0bcd\u0ba4\u0bc1 \u0b95\u0bbe\u0ba4\u0bcd\u0ba4\u0bbf\u0bb0\u0bc1\u0b95\u0bcd\u0b95...",sug:"Suggestions","no_sug":"No suggestions","no_mpell":"No misspellings found.","learn_word":"Learn word"},pagebreak:{desc:"\u0baa\u0b95\u0bcd\u0b95\u0baa\u0bcd \u0baa\u0bbf\u0bb0\u0bbf\u0baa\u0bcd\u0baa\u0bc8\u0b9a\u0bcd \u0b9a\u0bca\u0bb0\u0bc1\u0b95\u0bc1\u0b95."},advlist:{types:"\u0bb5\u0b95\u0bc8\u0b95\u0bb3\u0bcd",def:"\u0b89\u0bb3\u0bcd\u0bb3\u0bbf\u0bb0\u0bc1\u0baa\u0bcd\u0baa\u0bc1","lower_alpha":"Lower alpha","lower_greek":"Lower greek","lower_roman":"Lower roman","upper_alpha":"Upper alpha","upper_roman":"Upper roman",circle:"\u0bb5\u0b9f\u0bcd\u0b9f\u0bae\u0bcd",disc:"Disc",square:"\u0b9a\u0ba4\u0bc1\u0bb0\u0bae\u0bcd"},colors:{"333300":"Dark olive","993300":"Burnt orange","000000":"Black","003300":"Dark green","003366":"Dark azure","000080":"Navy Blue","333399":"Indigo","333333":"Very dark gray","800000":"Maroon",FF6600:"Orange","808000":"Olive","008000":"Green","008080":"Teal","0000FF":"Blue","666699":"Grayish blue","808080":"Gray",FF0000:"Red",FF9900:"Amber","99CC00":"Yellow green","339966":"Sea green","33CCCC":"Turquoise","3366FF":"Royal blue","800080":"Purple","999999":"Medium gray",FF00FF:"Magenta",FFCC00:"Gold",FFFF00:"Yellow","00FF00":"Lime","00FFFF":"Aqua","00CCFF":"Sky blue","993366":"Brown",C0C0C0:"Silver",FF99CC:"Pink",FFCC99:"Peach",FFFF99:"Light yellow",CCFFCC:"Pale green",CCFFFF:"Pale cyan","99CCFF":"Light sky blue",CC99FF:"Plum",FFFFFF:"White"},aria:{"rich_text_area":"Rich Text \u0baa\u0b95\u0bc1\u0ba4\u0bbf"},wordcount:{words:"\u0b9a\u0bca\u0bb1\u0bcd\u0b95\u0bb3\u0bcd:"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/th.js b/program/js/tiny_mce/langs/th.js
deleted file mode 100644
index 73b113ac6..000000000
--- a/program/js/tiny_mce/langs/th.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({th:{common:{"more_colors":"\u0e2a\u0e35\u0e2d\u0e37\u0e48\u0e19\u0e46","invalid_data":"\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14: \u0e1b\u0e49\u0e2d\u0e19\u0e04\u0e48\u0e32\u0e43\u0e19\u0e0a\u0e49\u0e2d\u0e07\u0e2a\u0e35\u0e41\u0e14\u0e07\u0e43\u0e2b\u0e49\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07","popup_blocked":"\u0e02\u0e2d\u0e2d\u0e20\u0e31\u0e22\u0e41\u0e15\u0e48\u0e40\u0e23\u0e32\u0e1e\u0e1a\u0e27\u0e48\u0e32\u0e04\u0e38\u0e13\u0e21\u0e35\u0e23\u0e30\u0e1a\u0e1a\u0e1b\u0e49\u0e2d\u0e07\u0e01\u0e31\u0e19\u0e1b\u0e4a\u0e2d\u0e1b\u0e2d\u0e31\u0e1b \u0e04\u0e38\u0e13\u0e08\u0e30\u0e15\u0e49\u0e2d\u0e07\u0e1b\u0e34\u0e14\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e01\u0e32\u0e23\u0e1a\u0e25\u0e47\u0e2d\u0e04\u0e1b\u0e4a\u0e2d\u0e1b\u0e2d\u0e31\u0e1b","clipboard_no_support":"\u0e02\u0e13\u0e30\u0e19\u0e35\u0e49\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e2a\u0e19\u0e31\u0e1a\u0e2a\u0e19\u0e38\u0e19\u0e40\u0e1a\u0e23\u0e32\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13 \u0e43\u0e2b\u0e49\u0e43\u0e0a\u0e49\u0e41\u0e1b\u0e49\u0e19\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e25\u0e31\u0e14\u0e41\u0e17\u0e19","clipboard_msg":"\u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01 / \u0e15\u0e31\u0e14 / \u0e27\u0e32\u0e07\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e21\u0e35\u0e43\u0e2b\u0e49\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e43\u0e19 Mozilla \u0e41\u0e25\u0e30 Firefox.\nDo \u0e04\u0e38\u0e13\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e15\u0e34\u0e21\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e1b\u0e31\u0e0d\u0e2b\u0e32\u0e19\u0e35\u0e49\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48?","not_set":"-- \u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32 --","class_name":"css \u0e04\u0e25\u0e32\u0e2a",browse:"\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e44\u0e1f\u0e25\u0e4c",close:"\u0e1b\u0e34\u0e14",cancel:"\u0e22\u0e01\u0e40\u0e25\u0e34\u0e01",update:"\u0e2d\u0e31\u0e1e\u0e40\u0e14\u0e15",insert:"\u0e40\u0e1e\u0e34\u0e48\u0e21",apply:"\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19","edit_confirm":"\u0e04\u0e38\u0e13\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e42\u0e2b\u0e21\u0e14 WYSIWYG \u0e43\u0e19\u0e01\u0e32\u0e23\u0e40\u0e02\u0e35\u0e22\u0e19\u0e1a\u0e17\u0e04\u0e27\u0e32\u0e21\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48 ?","invalid_data_number":"{#field} must be a number","invalid_data_min":"{#field} must be a number greater than {#min}","invalid_data_size":"{#field} must be a number or percentage",value:"(value)"},contextmenu:{full:"\u0e40\u0e15\u0e47\u0e21",right:"\u0e02\u0e27\u0e32",center:"\u0e01\u0e25\u0e32\u0e07",left:"\u0e0b\u0e49\u0e32\u0e22",align:"\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07\u0e08\u0e31\u0e14\u0e27\u0e32\u0e07"},insertdatetime:{"day_short":"\u0e2d\u0e32,\u0e08,\u0e2d\u0e31\u0e07,\u0e1e,\u0e1e\u0e24,\u0e28,\u0e2a,\u0e2d","day_long":"\u0e27\u0e31\u0e19\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c,\u0e27\u0e31\u0e19\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c,\u0e27\u0e31\u0e19\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23,\u0e27\u0e31\u0e19\u0e1e\u0e38\u0e18,\u0e27\u0e31\u0e19\u0e1e\u0e24\u0e2b\u0e31\u0e2a\u0e1a\u0e14\u0e35,\u0e27\u0e31\u0e19\u0e28\u0e38\u0e01\u0e23\u0e4c,\u0e27\u0e31\u0e19\u0e40\u0e2a\u0e32\u0e23\u0e4c,\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c","months_short":"\u0e21.\u0e04.,\u0e01.\u0e1e.,\u0e21\u0e35.\u0e04.,\u0e40\u0e21.\u0e22.,\u0e1e.\u0e04.,\u0e21\u0e34.\u0e22.,\u0e01.\u0e04.,\u0e2a.\u0e04.,\u0e01.\u0e22.,\u0e15.\u0e04.,\u0e1e.\u0e22.,\u0e18.\u0e04.","months_long":"\u0e21\u0e01\u0e23\u0e32\u0e04\u0e21,\u0e01\u0e38\u0e21\u0e20\u0e32\u0e1e\u0e31\u0e19\u0e18\u0e4c,\u0e21\u0e35\u0e19\u0e32\u0e04\u0e21,\u0e40\u0e21\u0e29\u0e32\u0e22\u0e19,\u0e1e\u0e24\u0e29\u0e20\u0e32\u0e04\u0e21,\u0e21\u0e34\u0e16\u0e38\u0e19\u0e32\u0e22\u0e19,\u0e01\u0e23\u0e01\u0e0e\u0e32\u0e04\u0e21,\u0e2a\u0e34\u0e07\u0e2b\u0e32\u0e04\u0e21,\u0e01\u0e31\u0e19\u0e22\u0e32\u0e22\u0e19,\u0e15\u0e38\u0e25\u0e32\u0e04\u0e21,\u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32\u0e22\u0e19,\u0e18\u0e31\u0e19\u0e27\u0e32\u0e04\u0e21","inserttime_desc":"\u0e41\u0e17\u0e23\u0e01\u0e40\u0e27\u0e25\u0e32","insertdate_desc":"\u0e41\u0e17\u0e23\u0e01\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48","time_fmt":"%H:%M:%S","date_fmt":"%Y-%m-%d"},print:{"print_desc":"\u0e1e\u0e34\u0e21\u0e1e\u0e4c"},preview:{"preview_desc":"\u0e14\u0e39\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07"},directionality:{"rtl_desc":"\u0e2d\u0e48\u0e32\u0e19\u0e08\u0e32\u0e01\u0e02\u0e27\u0e32\u0e44\u0e1b\u0e0b\u0e49\u0e32\u0e22","ltr_desc":"\u0e2d\u0e48\u0e32\u0e19\u0e08\u0e32\u0e01\u0e0b\u0e49\u0e32\u0e22\u0e44\u0e1b\u0e02\u0e27\u0e32"},layer:{content:"\u0e40\u0e25\u0e40\u0e22\u0e2d\u0e23\u0e4c\u0e43\u0e2b\u0e21\u0e48...","absolute_desc":"\u0e2a\u0e25\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e27\u0e32\u0e07","backward_desc":"\u0e22\u0e49\u0e32\u0e22\u0e44\u0e1b\u0e02\u0e49\u0e32\u0e07\u0e2b\u0e25\u0e31\u0e07","forward_desc":"\u0e22\u0e49\u0e32\u0e22\u0e44\u0e1b\u0e02\u0e49\u0e32\u0e07\u0e2b\u0e19\u0e49\u0e32","insertlayer_desc":"\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e25\u0e40\u0e22\u0e2d\u0e23\u0e4c\u0e43\u0e2b\u0e21\u0e48"},save:{"save_desc":"\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01","cancel_desc":"\u0e22\u0e01\u0e40\u0e25\u0e34\u0e01\u0e17\u0e38\u0e01\u0e2d\u0e22\u0e48\u0e32\u0e07"},nonbreaking:{"nonbreaking_desc":"\u0e41\u0e17\u0e23\u0e01\u0e2d\u0e31\u0e01\u0e02\u0e23\u0e30\u0e27\u0e48\u0e32\u0e07"},iespell:{download:"\u0e2b\u0e32\u0e01\u0e23\u0e30\u0e1a\u0e1a\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e04\u0e33\u0e1c\u0e34\u0e14\u0e44\u0e21\u0e48\u0e1e\u0e1a \u0e04\u0e38\u0e13\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07\u0e40\u0e14\u0e35\u0e4b\u0e22\u0e27\u0e19\u0e35\u0e49 ?","iespell_desc":"\u0e40\u0e23\u0e35\u0e22\u0e01\u0e43\u0e0a\u0e49\u0e15\u0e23\u0e27\u0e08\u0e01\u0e32\u0e23\u0e2a\u0e30\u0e01\u0e14"},advhr:{"advhr_desc":"\u0e40\u0e2a\u0e49\u0e19\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14","delta_height":"","delta_width":""},emotions:{"emotions_desc":"\u0e44\u0e2d\u0e04\u0e2d\u0e19\u0e41\u0e2a\u0e14\u0e07\u0e2d\u0e32\u0e23\u0e21\u0e13\u0e4c","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"\u0e04\u0e49\u0e19\u0e2b\u0e32/\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48","search_desc":"\u0e04\u0e49\u0e19\u0e2b\u0e32","delta_width":"","delta_height":""},advimage:{"image_desc":"\u0e40\u0e1e\u0e34\u0e48\u0e21/\u0e41\u0e01\u0e49\u0e44\u0e02 \u0e23\u0e39\u0e1b","delta_width":"","delta_height":""},advlink:{"link_desc":"\u0e40\u0e1e\u0e34\u0e48\u0e21/\u0e41\u0e01\u0e49\u0e44\u0e02 \u0e25\u0e34\u0e49\u0e07\u0e04\u0e4c","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"\u0e40\u0e1e\u0e34\u0e48\u0e21/\u0e41\u0e01\u0e49\u0e44\u0e02 \u0e41\u0e2d\u0e17\u0e17\u0e23\u0e34\u0e1a\u0e34\u0e27","ins_desc":"\u0e40\u0e1e\u0e34\u0e48\u0e21","del_desc":"\u0e25\u0e1a","acronym_desc":"\u0e2d\u0e31\u0e01\u0e29\u0e23\u0e22\u0e48\u0e2d","abbr_desc":"\u0e15\u0e31\u0e27\u0e22\u0e48\u0e2d","cite_desc":"\u0e01\u0e32\u0e23\u0e2d\u0e49\u0e32\u0e07\u0e2d\u0e34\u0e07","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"\u0e41\u0e01\u0e49\u0e44\u0e02 CSS","delta_height":"","delta_width":""},paste:{"plaintext_mode":"Paste is now in plain text mode. Click again to toggle back to regular paste mode.","plaintext_mode_sticky":"Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode.","selectall_desc":"\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14","paste_word_desc":"\u0e27\u0e32\u0e07\u0e08\u0e32\u0e01\u0e42\u0e1b\u0e23\u0e41\u0e01\u0e23\u0e21 Word","paste_text_desc":"\u0e27\u0e32\u0e07\u0e42\u0e14\u0e22\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e18\u0e23\u0e23\u0e21\u0e14\u0e32"},"paste_dlg":{"word_title":"Use CTRL+V on your keyboard to paste the text into the window.","text_linebreaks":"Keep linebreaks","text_title":"Use CTRL+V on your keyboard to paste the text into the window."},table:{cell:"\u0e40\u0e0b\u0e25\u0e25\u0e4c",col:"\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c",row:"\u0e41\u0e16\u0e27",del:"\u0e25\u0e1a\u0e15\u0e32\u0e23\u0e32\u0e07","copy_row_desc":"Copy table row","cut_row_desc":"Cut table row","paste_row_after_desc":"Paste table row after","paste_row_before_desc":"Paste table row before","props_desc":"Table properties","cell_desc":"Table cell properties","row_desc":"Table row properties","merge_cells_desc":"Merge table cells","split_cells_desc":"Split merged table cells","delete_col_desc":"\u0e25\u0e1a\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c","col_after_desc":"\u0e41\u0e17\u0e23\u0e01\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c\u0e08\u0e32\u0e01\u0e02\u0e49\u0e32\u0e07\u0e2b\u0e25\u0e31\u0e07","col_before_desc":"\u0e41\u0e17\u0e23\u0e01\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c\u0e08\u0e32\u0e01\u0e02\u0e49\u0e32\u0e07\u0e2b\u0e19\u0e49\u0e32","delete_row_desc":"\u0e25\u0e1a\u0e41\u0e16\u0e27","row_after_desc":"\u0e41\u0e17\u0e23\u0e01\u0e41\u0e16\u0e27\u0e08\u0e32\u0e01\u0e02\u0e49\u0e32\u0e07\u0e2b\u0e25\u0e31\u0e07","row_before_desc":"\u0e41\u0e17\u0e23\u0e01\u0e41\u0e16\u0e27\u0e08\u0e32\u0e01\u0e02\u0e49\u0e32\u0e07\u0e2b\u0e19\u0e49\u0e32",desc:"Inserts a new table","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"If you restore the saved content, you will lose all the content that is currently in the editor.\n\nAre you sure you want to restore the saved content?.","restore_content":"Restore auto-saved content.","unload_msg":"\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e17\u0e35\u0e48\u0e04\u0e38\u0e13\u0e17\u0e33\u0e08\u0e30\u0e2b\u0e32\u0e22\u0e44\u0e1b\u0e2b\u0e32\u0e01\u0e04\u0e38\u0e13\u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e2b\u0e19\u0e49\u0e32\u0e19\u0e35\u0e49"},fullscreen:{desc:"\u0e2a\u0e25\u0e31\u0e1a\u0e44\u0e1b\u0e41\u0e2a\u0e14\u0e07\u0e41\u0e1a\u0e1a\u0e40\u0e15\u0e47\u0e21\u0e2b\u0e19\u0e49\u0e32"},media:{edit:"\u0e41\u0e01\u0e49\u0e44\u0e02\u0e21\u0e35\u0e40\u0e14\u0e35\u0e22",desc:"\u0e40\u0e1e\u0e34\u0e48\u0e21 / \u0e41\u0e01\u0e49\u0e44\u0e02 \u0e21\u0e35\u0e40\u0e14\u0e35\u0e22","delta_height":"","delta_width":""},fullpage:{desc:"\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23","delta_width":"","delta_height":""},template:{desc:"\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e41\u0e21\u0e48\u0e41\u0e1a\u0e1a\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23"},visualchars:{desc:"\u0e01\u0e32\u0e23\u0e04\u0e27\u0e1a\u0e04\u0e38\u0e21\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23 \u0e40\u0e1b\u0e34\u0e14/\u0e1b\u0e34\u0e14"},spellchecker:{desc:"\u0e1b\u0e34\u0e14\u0e01\u0e32\u0e23\u0e2a\u0e30\u0e01\u0e14\u0e04\u0e33",menu:"\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e01\u0e32\u0e23\u0e2a\u0e30\u0e01\u0e14\u0e04\u0e33","ignore_word":"\u0e25\u0e30\u0e40\u0e27\u0e49\u0e19\u0e1a\u0e32\u0e07\u0e04\u0e33","ignore_words":"\u0e25\u0e30\u0e40\u0e27\u0e49\u0e19\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14",langs:"\u0e20\u0e32\u0e29\u0e32",wait:"\u0e42\u0e1b\u0e23\u0e14\u0e23\u0e2d...",sug:"\u0e04\u0e33\u0e41\u0e19\u0e30\u0e19\u0e33","no_sug":"\u0e44\u0e21\u0e48\u0e21\u0e35\u0e04\u0e33\u0e41\u0e19\u0e30\u0e19\u0e33","no_mpell":"\u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e23\u0e30\u0e1a\u0e1a\u0e2a\u0e30\u0e01\u0e14\u0e04\u0e33\u0e1c\u0e34\u0e14","learn_word":"Learn word"},pagebreak:{desc:"\u0e43\u0e2a\u0e48\u0e40\u0e2a\u0e49\u0e19\u0e41\u0e1a\u0e48\u0e07\u0e2b\u0e19\u0e49\u0e32"},advlist:{types:"Types",def:"Default","lower_alpha":"Lower alpha","lower_greek":"Lower greek","lower_roman":"Lower roman","upper_alpha":"Upper alpha","upper_roman":"Upper roman",circle:"Circle",disc:"Disc",square:"Square"},colors:{"333300":"Dark olive","993300":"Burnt orange","000000":"Black","003300":"Dark green","003366":"Dark azure","000080":"Navy Blue","333399":"Indigo","333333":"Very dark gray","800000":"Maroon",FF6600:"Orange","808000":"Olive","008000":"Green","008080":"Teal","0000FF":"Blue","666699":"Grayish blue","808080":"Gray",FF0000:"Red",FF9900:"Amber","99CC00":"Yellow green","339966":"Sea green","33CCCC":"Turquoise","3366FF":"Royal blue","800080":"Purple","999999":"Medium gray",FF00FF:"Magenta",FFCC00:"Gold",FFFF00:"Yellow","00FF00":"Lime","00FFFF":"Aqua","00CCFF":"Sky blue","993366":"Brown",C0C0C0:"Silver",FF99CC:"Pink",FFCC99:"Peach",FFFF99:"Light yellow",CCFFCC:"Pale green",CCFFFF:"Pale cyan","99CCFF":"Light sky blue",CC99FF:"Plum",FFFFFF:"White"},aria:{"rich_text_area":"Rich Text Area"},wordcount:{words:"Words:"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/tr.js b/program/js/tiny_mce/langs/tr.js
deleted file mode 100644
index 40b3d5af4..000000000
--- a/program/js/tiny_mce/langs/tr.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({tr:{common:{"more_colors":"Daha fazla renk","invalid_data":"Hata: Ge\u00e7ersiz de\u011fer girildi, bunlar k\u0131rm\u0131z\u0131yla i\u015faretlenmi\u015ftir.","popup_blocked":"\u00dczg\u00fcn\u00fcz, a\u00e7\u0131l\u0131r pencere engelleyiciniz uygulama i\u00e7in gerekli bir pencereyi engelledi. Bu arac\u0131 tam olarak kullanabilmek i\u00e7in a\u00e7\u0131l\u0131r pencere engelleyicisini kapat\u0131n\u0131z.","clipboard_no_support":"\u015eu an kulland\u0131\u011f\u0131n\u0131z taray\u0131c\u0131n\u0131z klavye k\u0131sayollar\u0131n\u0131 desteklememektedir.","clipboard_msg":"Mozilla Firefox da Kes/Kopyala/Yap\u0131\u015ft\u0131r \u00f6zelli\u011fi kullan\u0131lmamaktad\u0131r. \nBu konu hakk\u0131nda bilgi almak ister misiniz?","not_set":"-- Ayarlanmad\u0131 --","class_name":"S\u0131n\u0131f",browse:"G\u00f6zat",close:"Kapat",cancel:"\u0130ptal",update:"G\u00fcncelle",insert:"Ekle",apply:"Uygula","edit_confirm":"Metin giri\u015fi i\u00e7in WYSIWYG modunu kullanmak ister misiniz?","invalid_data_number":"{#field} rakam olmal\u0131","invalid_data_min":"{#field}, {#min} de\u011ferinden b\u00fcy\u00fck ve rakam olmal\u0131","invalid_data_size":"{#field} rakam veya y\u00fczde olmal\u0131",value:"(de\u011fer)"},contextmenu:{full:"Tam",right:"Sa\u011f",center:"Orta",left:"Sol",align:"Hizalama"},insertdatetime:{"day_short":"Paz,Pzt,Sal,\u00c7r\u015f,Per,Cum,Cts","day_long":"Pazar,Pazartesi,Sal\u0131,\u00c7ar\u015famba,Per\u015fembe,Cuma,Cumartesi","months_short":"Oca,\u015eub,Mar,Nis,May,Haz,Tem,A\u011fu,Eyl,Eki,Kas,Ara","months_long":"Ocak,\u015eubat,Mart,Nisan,May\u0131s,Haziran,Temmuz,A\u011fustos,Eyl\u00fcl,Ekim,Kas\u0131m,Aral\u0131k","inserttime_desc":"Saat ekle","insertdate_desc":"Tarih ekle","time_fmt":"%H:%M:%S","date_fmt":"%d-%m-%Y"},print:{"print_desc":"Yazd\u0131r"},preview:{"preview_desc":"\u00d6nizleme"},directionality:{"rtl_desc":"Soldan sa\u011fa y\u00f6nlendir","ltr_desc":"Sa\u011fdan sola y\u00f6nlendir"},layer:{content:"Yeni katman...","absolute_desc":"Mutlaka konumu de\u011fi\u015ftir","backward_desc":"Arkaya al","forward_desc":"\u00d6ne getir","insertlayer_desc":"Yeni katman ekle"},save:{"save_desc":"Kaydet","cancel_desc":"T\u00fcm de\u011fi\u015fiklikleri iptal et"},nonbreaking:{"nonbreaking_desc":"B\u00f6l\u00fcnemez bo\u015fluk karakteri ekle"},iespell:{download:"ieSpell bulunamad\u0131. \u015eimdi kurmak ister misiniz?","iespell_desc":"\u0130mla kontrol\u00fcn\u00fc ba\u015flat"},advhr:{"advhr_desc":"Yatay \u00e7izgi","delta_height":"","delta_width":""},emotions:{"emotions_desc":"\u0130fadeler","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"Bul/De\u011fi\u015ftir","search_desc":"Bul","delta_width":"","delta_height":""},advimage:{"delta_width":"Geni\u015flik_fark\u0131","image_desc":"Resim ekle/d\u00fczenle","delta_height":"Y\u00fckseklik_fark\u0131"},advlink:{"link_desc":"Ba\u011flant\u0131 ekle/d\u00fczenle","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"Nitelik ekle/d\u00fczenle","ins_desc":"Ekleme","del_desc":"Silme","acronym_desc":"K\u0131sa ad","abbr_desc":"K\u0131saltma","cite_desc":"Al\u0131nt\u0131","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"CSS Stilini D\u00fczenle","delta_height":"","delta_width":""},paste:{"plaintext_mode":"D\u00fcz metin modunda yap\u0131\u015ft\u0131r. Normal yap\u0131\u015ft\u0131rma moduna ge\u00e7mek i\u00e7in tekrar t\u0131klay\u0131n.","plaintext_mode_sticky":"D\u00fcz metin modunda yap\u0131\u015ft\u0131r. Normal yap\u0131\u015ft\u0131rma moduna ge\u00e7mek i\u00e7in tekrar t\u0131klay\u0131n. Yap\u0131\u015ft\u0131rma i\u015fleminden sonra normal yap\u0131\u015ft\u0131rma moduna ge\u00e7ilecektir.","selectall_desc":"T\u00fcm\u00fcn\u00fc se\u00e7","paste_word_desc":"Word\'den yap\u0131\u015ft\u0131r","paste_text_desc":"D\u00fcz metin olarak yap\u0131\u015ft\u0131r"},"paste_dlg":{"word_title":"Pencereye metin yap\u0131\u015ft\u0131rmak i\u00e7in klavyeden CTRL+V i kullan\u0131n.","text_linebreaks":"Sat\u0131r kesmelerini tut","text_title":"Pencereye metin yap\u0131\u015ft\u0131rmak i\u00e7in klavyeden CTRL+V i kullan\u0131n."},table:{cell:"H\u00fccre",col:"S\u00fctun",row:"Sat\u0131r",del:"Tablo sil","copy_row_desc":"Tablo sat\u0131r\u0131n\u0131 kopyala","cut_row_desc":"Tablo sat\u0131r\u0131n\u0131 kes","paste_row_after_desc":"Alt\u0131na tablo sat\u0131r\u0131 yap\u0131\u015ft\u0131r","paste_row_before_desc":"\u00dcst\u00fcne tablo sat\u0131r\u0131 yap\u0131\u015ft\u0131r","props_desc":"Tablo \u00f6zellikleri","cell_desc":"Tablo h\u00fccre \u00f6zellikleri","row_desc":"Tablo sat\u0131r \u00f6zellikleri","merge_cells_desc":"Tablo h\u00fccrelerini birle\u015ftir","split_cells_desc":"Birle\u015ftirilmi\u015f tablo h\u00fccrelerini b\u00f6l","delete_col_desc":"S\u00fctun sil","col_after_desc":"Sa\u011f\u0131na s\u00fctun ekle","col_before_desc":"Soluna s\u00fctun ekle","delete_row_desc":"Sat\u0131r sil","row_after_desc":"Alt\u0131na sat\u0131r ekle","row_before_desc":"\u00dcst\u00fcne sat\u0131r ekle",desc:"Yeni tablo ekle","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"E\u011fer geri y\u00fckleme i\u00e7eri\u011fe otomatik kay\u0131t edilirse, edit\u00f6rde varolan t\u00fcm i\u00e7eri\u011fi kaybedebilirsiniz.\n\nGeri y\u00fcklemenin i\u00e7eri\u011fe kaydedilmesini istedi\u011finizden emin misiniz?","restore_content":"Geri y\u00fckleme i\u00e7eri\u011fe otomatik kaydedildi.","unload_msg":"Bu sayfadan \u00e7\u0131karsan\u0131z yapt\u0131\u011f\u0131n\u0131z de\u011fi\u015fiklikler kaybolabilir."},fullscreen:{desc:"Tam ekran modunu a\u00e7/kapat"},media:{edit:"T\u00fcmle\u015fik medya d\u00fczenle",desc:"T\u00fcmle\u015fik medya ekle / d\u00fczenle","delta_height":"","delta_width":""},fullpage:{desc:"Belge \u00f6zellikleri","delta_width":"","delta_height":""},template:{desc:"\u00d6ntan\u0131ml\u0131 i\u00e7erik \u015fablonu kullan"},visualchars:{desc:"G\u00f6rsel karakter kontrol\u00fc a\u00e7\u0131k/kapal\u0131."},spellchecker:{desc:"\u0130mla kontrol\u00fcn\u00fc a\u00e7/kapat",menu:"\u0130mla kontrol\u00fc ayarlar\u0131","ignore_word":"S\u00f6zc\u00fc\u011f\u00fc yoksay","ignore_words":"T\u00fcm\u00fcn\u00fc yoksay",langs:"Diller",wait:"L\u00fctfen bekleyin...",sug:"\u00d6neriler","no_sug":"\u00d6neri yok","no_mpell":"\u0130mla hatas\u0131 bulunamad\u0131.","learn_word":"S\u00f6zc\u00fc\u011f\u00fc \u00f6\u011fren"},pagebreak:{desc:"Sayfa sonu ekle."},advlist:{types:"Tipler",def:"Varsay\u0131lan","lower_alpha":"K\u00fc\u00e7\u00fck harf alfa","lower_greek":"K\u00fc\u00e7\u00fck harf grek","lower_roman":"K\u00fc\u00e7\u00fck harf roman","upper_alpha":"B\u00fcy\u00fck harf alfa","upper_roman":"B\u00fcy\u00fck harf roman",circle:"\u00c7ember",disc:"Daire",square:"Kare"},colors:{"333300":"Dark olive","993300":"Burnt orange","000000":"Black","003300":"Dark green","003366":"Dark azure","000080":"Navy Blue","333399":"Indigo","333333":"Very dark gray","800000":"Maroon",FF6600:"Orange","808000":"Olive","008000":"Green","008080":"Teal","0000FF":"Blue","666699":"Grayish blue","808080":"Gray",FF0000:"Red",FF9900:"Amber","99CC00":"Yellow green","339966":"Sea green","33CCCC":"Turquoise","3366FF":"Royal blue","800080":"Purple","999999":"Medium gray",FF00FF:"Magenta",FFCC00:"Gold",FFFF00:"Yellow","00FF00":"Lime","00FFFF":"Aqua","00CCFF":"Sky blue","993366":"Brown",C0C0C0:"Silver",FF99CC:"Pink",FFCC99:"Peach",FFFF99:"Light yellow",CCFFCC:"Pale green",CCFFFF:"Pale cyan","99CCFF":"Light sky blue",CC99FF:"Plum",FFFFFF:"White"},aria:{"rich_text_area":"Zengin Metin Alan\u0131"},wordcount:{words:"Kelimeler:"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/uk.js b/program/js/tiny_mce/langs/uk.js
deleted file mode 100644
index 514b66be9..000000000
--- a/program/js/tiny_mce/langs/uk.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({uk:{common:{"more_colors":"\u0411\u0456\u043b\u044c\u0448\u0435 \u043a\u043e\u043b\u044c\u043e\u0440\u0456\u0432","invalid_data":"\u041f\u043e\u043c\u0438\u043b\u043a\u0430: \u0412\u0432\u0435\u0434\u0435\u043d\u043e \u043f\u043e\u043c\u0438\u043b\u043a\u043e\u0432\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f, \u0432\u0456\u0434\u043c\u0456\u0447\u0435\u043d\u0435 \u0447\u0435\u0440\u0432\u043e\u043d\u0438\u043c.","popup_blocked":"\u0414\u0443\u0436\u0435 \u043f\u0440\u0438\u043a\u0440\u043e, \u0430\u043b\u0435 \u0432\u0430\u0448 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0437\u0430\u0431\u043b\u043e\u043a\u0443\u0432\u0430\u0432 \u0432\u0438\u0440\u0438\u043d\u0430\u044e\u0447\u0435 \u0432\u0456\u043a\u043d\u043e. \u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u043d\u0430\u043b\u0430\u0448\u0442\u0443\u0439\u0442\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0442\u0430\u043a, \u0449\u043e\u0431 \u0432\u0456\u043d \u0434\u043e\u0437\u0432\u043e\u043b\u044f\u0432 \u0432\u0438\u0440\u0438\u043d\u0430\u044e\u0447\u0456 \u0432\u0456\u043a\u043d\u0430 \u0437 \u0446\u044c\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0443.","clipboard_no_support":"\u041d\u0430\u0440\u0430\u0437\u0456 \u0446\u044f \u0444\u0443\u043d\u043a\u0446\u0456\u044f \u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0432 \u0432\u0430\u0448\u043e\u043c\u0443 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0456, \u0430\u043b\u0435 \u0432\u0438 \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0432\u0430\u0442\u0438 \u043a\u043b\u0430\u0432\u0456\u0430\u0442\u0443\u0440\u0443 \u0437\u0430\u043c\u0456\u0441\u0442\u044c \u0446\u044c\u043e\u0433\u043e.","clipboard_msg":"\u041a\u043e\u043f\u0456\u044e\u0432\u0430\u0442\u0438/\u0412\u0438\u0440\u0456\u0437\u0430\u0442\u0438/\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0432 Mozilla \u0442\u0430 Firefox.\n\u0412\u0430\u043c \u0446\u0456\u043a\u0430\u0432\u0430 \u0456\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0456\u044f \u043f\u0440\u043e \u0446\u0435?","not_set":"-- \u043d\u0435 \u0432\u0438\u0431\u0440\u0430\u043d\u043e --","class_name":"\u041a\u043b\u0430\u0441",browse:"\u041f\u0435\u0440\u0435\u0433\u043b\u044f\u0434",close:"\u0417\u0430\u043a\u0440\u0438\u0442\u0438",cancel:"\u0412\u0456\u0434\u043c\u0456\u043d\u0438\u0442\u0438",update:"\u041e\u043d\u043e\u0432\u0438\u0442\u0438",insert:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438",apply:"\u0417\u0430\u0441\u0442\u043e\u0441\u0443\u0432\u0430\u0442\u0438","edit_confirm":"\u0412\u0438 \u0431\u0430\u0436\u0430\u0454\u0442\u0435 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0432\u0430\u0442\u0438 WYSIWYG \u0440\u0435\u0436\u0438\u043c \u0434\u043b\u044f \u0446\u044c\u043e\u0433\u043e \u043f\u043e\u043b\u044f?","invalid_data_number":"{#field} \u043f\u043e\u0432\u0438\u043d\u043d\u0435 \u0431\u0443\u0442\u0438 \u0447\u0438\u0441\u043b\u043e\u043c","invalid_data_min":"{#field} \u0447\u0438\u0441\u043b\u043e \u043f\u043e\u0432\u0438\u043d\u043d\u0435 \u0431\u0443\u0442\u0438 \u0431\u0456\u043b\u044c\u0448\u0435 \u043d\u0456\u0436 {#min}","invalid_data_size":"{#field} \u043f\u043e\u0432\u0438\u043d\u043d\u0435 \u0431\u0443\u0442\u0438 \u0447\u0438\u0441\u043b\u043e\u043c \u0430\u0431\u043e \u0432\u0456\u0434\u0441\u043e\u0442\u043a\u043e\u043c",value:"(\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f)"},contextmenu:{full:"\u041f\u043e \u0448\u0438\u0440\u0438\u043d\u0456",right:"\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",center:"\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443",left:"\u041f\u043e \u043b\u0456\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",align:"\u0412\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f"},insertdatetime:{"day_short":"\u041d\u0434,\u041f\u043d,\u0412\u0442,\u0421\u0440,\u0427\u0442,\u041f\u0442,\u0421\u0431,\u041d\u0434","day_long":"\u041d\u0435\u0434\u0456\u043b\u044f,\u041f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a,\u0412\u0456\u0432\u0442\u043e\u0440\u043e\u043a,\u0421\u0435\u0440\u0435\u0434\u0430,\u0427\u0435\u0442\u0432\u0435\u0440,\u041f\'\u044f\u0442\u043d\u0438\u0446\u044f,\u0421\u0443\u0431\u043e\u0442\u0430,\u041d\u0435\u0434\u0456\u043b\u044f","months_short":"\u0421\u0456\u0447,\u041b\u044e\u0442,\u0411\u0435\u0440,\u041a\u0432\u0456,\u0422\u0440\u0430,\u0427\u0435\u0440,\u041b\u0438\u043f,\u0421\u0435\u0440,\u0412\u0435\u0440,\u0416\u043e\u0432,\u041b\u0438\u0441,\u0413\u0440\u0443","months_long":"\u0421\u0456\u0447\u0435\u043d\u044c,\u041b\u044e\u0442\u0438\u0439,\u0411\u0435\u0440\u0435\u0437\u0435\u043d\u044c,\u041a\u0432\u0456\u0442\u0435\u043d\u044c,\u0422\u0440\u0430\u0432\u0435\u043d\u044c,\u0427\u0435\u0440\u0432\u0435\u043d\u044c,\u041b\u0438\u043f\u0435\u043d\u044c,\u0421\u0435\u0440\u043f\u0435\u043d\u044c,\u0412\u0435\u0440\u0435\u0441\u0435\u043d\u044c,\u0416\u043e\u0432\u0442\u0435\u043d\u044c,\u041b\u0438\u0441\u0442\u043e\u043f\u0430\u0434,\u0413\u0440\u0443\u0434\u0435\u043d\u044c","inserttime_desc":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0447\u0430\u0441","insertdate_desc":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0434\u0430\u0442\u0443","time_fmt":"%H:%M:%S","date_fmt":"%d.%m.%Y"},print:{"print_desc":"\u0414\u0440\u0443\u043a\u0443\u0432\u0430\u0442\u0438"},preview:{"preview_desc":"\u041f\u0435\u0440\u0435\u0433\u043b\u044f\u0434"},directionality:{"rtl_desc":"\u041d\u0430\u043f\u0440\u044f\u043c \u0441\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0456\u0432\u043e","ltr_desc":"\u041d\u0430\u043f\u0440\u044f\u043c \u0437\u043b\u0456\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e"},layer:{content:"\u041d\u043e\u0432\u0438\u0439 \u043f\u0440\u043e\u0448\u0430\u0440\u043e\u043a...","absolute_desc":"\u041f\u0435\u0440\u0435\u043c\u0438\u043a\u043d\u0443\u0442\u0438 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u0435 \u043f\u043e\u0437\u0438\u0446\u0456\u044e\u0432\u0430\u043d\u043d\u044f","backward_desc":"\u041f\u0435\u0440\u0435\u043c\u0456\u0441\u0442\u0438\u0442\u0438 \u043d\u0430\u0437\u0430\u0434","forward_desc":"\u041f\u0435\u0440\u0435\u043c\u0456\u0441\u0442\u0438\u0442\u0438 \u0432\u043f\u0435\u0440\u0435\u0434","insertlayer_desc":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u043d\u043e\u0432\u0438\u0439 \u043f\u0440\u043e\u0448\u0430\u0440\u043e\u043a"},save:{"save_desc":"\u0417\u0431\u0435\u0440\u0435\u0433\u0442\u0438","cancel_desc":"\u0412\u0456\u0434\u043c\u0456\u043d\u0438\u0442\u0438 \u0432\u0441\u0456 \u0437\u043c\u0456\u043d\u0438"},nonbreaking:{"nonbreaking_desc":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u043d\u0435\u0440\u043e\u0437\u0440\u0438\u0432\u043d\u0438\u0439 \u043f\u0440\u043e\u043c\u0456\u0436\u043e\u043a"},iespell:{download:"\u0414\u043e\u0434\u0430\u0442\u043e\u043a ieSpell \u043d\u0435 \u0437\u043d\u0430\u0439\u0434\u0435\u043d\u043e. \u0411\u0430\u0436\u0430\u0454\u0442\u0435 \u0432\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0438?","iespell_desc":"\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0438 \u043f\u0435\u0440\u0435\u0432\u0456\u0440\u043a\u0443 \u043e\u0440\u0444\u043e\u0433\u0440\u0430\u0444\u0456\u0457"},advhr:{"advhr_desc":"\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0438\u0439 \u0440\u043e\u0437\u0434\u0456\u043b\u044c\u043d\u0438\u043a","delta_height":"","delta_width":""},emotions:{"emotions_desc":"\u0421\u043c\u0430\u0439\u043b\u0438","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"\u0428\u0443\u043a\u0430\u0442\u0438/\u0417\u0430\u043c\u0456\u043d\u0438\u0442\u0438","search_desc":"\u0428\u0443\u043a\u0430\u0442\u0438","delta_width":"","delta_height":""},advimage:{"delta_width":"200","image_desc":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438/\u0437\u043c\u0456\u043d\u0438\u0442\u0438 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f","delta_height":""},advlink:{"delta_width":"200","link_desc":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438/\u0437\u043c\u0456\u043d\u0438\u0442\u0438 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f","delta_height":""},xhtmlxtras:{"attribs_desc":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438/\u0437\u043c\u0456\u043d\u0438\u0442\u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0438","ins_desc":"\u0412\u0441\u0442\u0430\u0432\u043a\u0430","del_desc":"\u0412\u0438\u0434\u0430\u043b\u0435\u043d\u043d\u044f","acronym_desc":"\u0410\u043a\u0440\u043e\u043d\u0456\u043c","abbr_desc":"\u0410\u0431\u0440\u0435\u0432\u0456\u0430\u0442\u0443\u0440\u0430","cite_desc":"\u0426\u0438\u0442\u0430\u0442\u0430","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 CSS \u0441\u0442\u0438\u043b\u044c","delta_height":"","delta_width":""},paste:{"plaintext_mode":"\u0412 \u0434\u0430\u043d\u0438\u0439 \u0447\u0430\u0441 \u0412\u0441\u0442\u0430\u0432\u043a\u0430 \u0432 \u0440\u0435\u0436\u0438\u043c\u0456 \u0437\u0432\u0438\u0447\u0430\u0439\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0443. \u041d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c \u0437\u043d\u043e\u0432\u0443 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043c\u0438\u043a\u0430\u043d\u043d\u044f \u043d\u0430\u0437\u0430\u0434 \u0432 \u0437\u0432\u0438\u0447\u0430\u0439\u043d\u0438\u0439 \u0440\u0435\u0436\u0438\u043c \u0412\u0441\u0442\u0430\u0432\u043a\u0438.","plaintext_mode_sticky":"\u0412 \u0434\u0430\u043d\u0438\u0439 \u0447\u0430\u0441 \u0412\u0441\u0442\u0430\u0432\u043a\u0430 \u0432 \u0440\u0435\u0436\u0438\u043c\u0456 \u0437\u0432\u0438\u0447\u0430\u0439\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0443. \u041d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c \u0437\u043d\u043e\u0432\u0443 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043c\u0438\u043a\u0430\u043d\u043d\u044f \u043d\u0430\u0437\u0430\u0434 \u0432 \u0437\u0432\u0438\u0447\u0430\u0439\u043d\u0438\u0439 \u0440\u0435\u0436\u0438\u043c \u0412\u0441\u0442\u0430\u0432\u043a\u0438.. \u041f\u0456\u0441\u043b\u044f \u0442\u043e\u0433\u043e, \u044f\u043a \u0412\u0438 \u0449\u043e-\u043d\u0435\u0431\u0443\u0434\u044c \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u0435, \u0412\u0438 \u043f\u043e\u0432\u0435\u0440\u043d\u0435\u0442\u0435\u0441\u044c \u0432 \u0437\u0432\u0438\u0447\u0430\u0439\u043d\u043c\u0439 \u0440\u0435\u0436\u0438\u043c \u0412\u0441\u0442\u0430\u0432\u043a\u0438.","selectall_desc":"\u0412\u0438\u0434\u0456\u043b\u0438\u0442\u0438 \u0432\u0441\u0435","paste_word_desc":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0437 Word","paste_text_desc":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u044f\u043a \u0442\u0435\u043a\u0441\u0442"},"paste_dlg":{"word_title":"\u0412\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0439\u0442\u0435 CTRL+V \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0443 \u0443 \u0432\u0456\u043a\u043d\u043e.","text_linebreaks":"\u0417\u0431\u0435\u0440\u0456\u0433\u0430\u0442\u0438 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438 \u0440\u044f\u0434\u043a\u0456\u0432","text_title":"\u0412\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0439\u0442\u0435 CTRL+V \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0443 \u0443 \u0432\u0456\u043a\u043d\u043e."},table:{"cellprops_delta_width":"30",cell:"\u041a\u043e\u043c\u0456\u0440\u043a\u0430",col:"\u0421\u0442\u043e\u0432\u043f\u0435\u0446\u044c",row:"\u0420\u044f\u0434\u043e\u043a",del:"\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044e","copy_row_desc":"\u041a\u043e\u043f\u0456\u044e\u0432\u0430\u0442\u0438 \u0440\u044f\u0434\u043e\u043a \u0442\u0430\u0431\u043b\u0438\u0446\u0456","cut_row_desc":"\u0412\u0438\u0440\u0456\u0437\u0430\u0442\u0438 \u0440\u044f\u0434\u043e\u043a \u0442\u0430\u0431\u043b\u0438\u0446\u0456","paste_row_after_desc":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0440\u044f\u0434\u043e\u043a \u043f\u0456\u0441\u043b\u044f","paste_row_before_desc":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0440\u044f\u0434\u043e\u043a \u0434\u043e","props_desc":"\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u0442\u0430\u0431\u043b\u0438\u0446\u0456","cell_desc":"\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u043a\u043e\u043c\u0456\u0440\u043a\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u0456","row_desc":"\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u0440\u044f\u0434\u043a\u0443 \u0442\u0430\u0431\u043b\u0438\u0446\u0456","merge_cells_desc":"\u041e\u0431\'\u0454\u0434\u043d\u0430\u0442\u0438 \u043a\u043e\u043c\u0456\u0440\u043a\u0438","split_cells_desc":"\u0420\u043e\u0437\u0434\u0456\u043b\u0438\u0442\u0438 \u043a\u043e\u043c\u0456\u0440\u043a\u0438","delete_col_desc":"\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u0441\u0442\u043e\u0432\u043f\u0435\u0446\u044c","col_after_desc":"\u0414\u043e\u0434\u0430\u0442\u0438 \u0441\u0442\u043e\u0432\u043f\u0435\u0446\u044c \u043f\u0456\u0441\u043b\u044f","col_before_desc":"\u0414\u043e\u0434\u0430\u0442\u0438 \u0441\u0442\u043e\u0432\u043f\u0435\u0446\u044c \u0434\u043e","delete_row_desc":"\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u0440\u044f\u0434\u043e\u043a","row_after_desc":"\u0414\u043e\u0434\u0430\u0442\u0438 \u0440\u044f\u0434\u043e\u043a \u043f\u0456\u0441\u043b\u044f","row_before_desc":"\u0414\u043e\u0434\u0430\u0442\u0438 \u0440\u044f\u0434\u043e\u043a \u0434\u043e",desc:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u043d\u043e\u0432\u0443 \u0442\u0430\u0431\u043b\u0438\u0446\u044e","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"\u042f\u043a\u0449\u043e \u0432\u0456\u0434\u043d\u043e\u0432\u0438\u0442\u0438 \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u0438\u0439 \u0432\u043c\u0456\u0441\u0442, \u0442\u043e \u0432\u0438 \u0432\u0442\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u0435\u0441\u044c \u0432\u043c\u0456\u0441\u0442, \u044f\u043a\u0438\u0439 \u0432 \u0434\u0430\u043d\u0438\u0439 \u0447\u0430\u0441 \u0437\u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0456. \n\n\u0412\u0438 \u0432\u043f\u0435\u0432\u043d\u0435\u043d\u0456, \u0449\u043e \u0445\u043e\u0447\u0435\u0442\u0435 \u0432\u0456\u0434\u043d\u043e\u0432\u0438\u0442\u0438 \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u0438\u0439 \u0437\u043c\u0456\u0441\u0442?.","restore_content":"\u0412\u0456\u0434\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u043e \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u043e\u0433\u043e \u0432\u043c\u0456\u0441\u0442\u0443.","unload_msg":"\u0417\u043c\u0456\u043d\u0438, \u044f\u043a\u0456 \u0432\u0438 \u0437\u0440\u043e\u0431\u0438\u043b\u0438, \u0431\u0443\u0434\u0443\u0442\u044c \u0432\u0442\u0440\u0430\u0447\u0435\u043d\u0456, \u044f\u043a\u0449\u043e \u0432\u0438 \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u0442\u0435 \u0437 \u0446\u0456\u0454\u0457 \u0441\u0442\u043e\u0440\u0456\u043d\u043a\u0438."},fullscreen:{desc:"\u041f\u0435\u0440\u0435\u043c\u043a\u043d\u0443\u0442\u0438 \u043d\u0430 \u0432\u0435\u0441\u044c \u0435\u043a\u0440\u0430\u043d"},media:{edit:"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0432\u0431\u0443\u0434\u043e\u0432\u0430\u043d\u0456 \u043c\u0435\u0434\u0456\u0430",desc:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 / \u0440\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0432\u0431\u0443\u0434\u043e\u0432\u0430\u043d\u0456 \u043c\u0435\u0434\u0456\u0430","delta_height":"","delta_width":""},fullpage:{desc:"\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430","delta_width":"","delta_height":""},template:{desc:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u043d\u0438\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442"},visualchars:{desc:"\u0412\u0456\u0437\u0443\u0430\u043b\u044c\u043d\u0438\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0441\u0438\u043c\u0432\u043e\u043b\u0456\u0432 \u0432\u0432\u0456\u043c\u043a\u043d\u0435\u043d\u043d\u044f / \u0432\u0438\u043c\u043a\u043d\u0435\u043d\u043d\u044f."},spellchecker:{desc:"\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u0438 \u043f\u0435\u0440\u0435\u0432\u0456\u0440\u043a\u0443",menu:"\u041d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f \u043f\u0435\u0440\u0435\u0432\u0456\u0440\u043a\u0438","ignore_word":"\u0406\u0433\u043d\u043e\u0440\u0443\u0432\u0430\u0442\u0438 \u0441\u043b\u043e\u0432\u043e","ignore_words":"\u0406\u0433\u043d\u043e\u0440\u0443\u0432\u0430\u0442\u0438 \u0432\u0441\u0435",langs:"\u041c\u043e\u0432\u0438",wait:"\u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u0437\u0430\u0447\u0435\u043a\u0430\u0439\u0442\u0435...",sug:"\u0412\u0430\u0440\u0456\u0430\u043d\u0442\u0438","no_sug":"\u041d\u0435\u043c\u0430\u0454 \u0432\u0430\u0440\u0456\u0430\u043d\u0442\u0456\u0432","no_mpell":"\u041f\u043e\u043c\u0438\u043b\u043e\u043a \u043d\u0435 \u0437\u043d\u0430\u0439\u0434\u0435\u043d\u043e.","learn_word":"\u0417\u0430\u043f\u0430\u043c\'\u044f\u0442\u0430\u0442\u0438 \u0441\u043b\u043e\u0432\u043e"},pagebreak:{desc:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0440\u043e\u0437\u0434\u0456\u043b\u044c\u043d\u0438\u043a \u0441\u0442\u043e\u0440\u0456\u043d\u043a\u0438."},advlist:{types:"\u0422\u0438\u043f\u0438",def:"\u0417\u0430 \u0437\u0430\u043c\u043e\u0432\u0447\u0430\u043d\u043d\u044f\u043c","lower_alpha":"Lower alpha","lower_greek":"Lower greek","lower_roman":"Lower roman","upper_alpha":"Upper alpha","upper_roman":"Upper roman",circle:"\u041a\u043e\u043b\u043e",disc:"\u0414\u0438\u0441\u043a",square:"\u041a\u0432\u0430\u0434\u0440\u0430\u0442"},colors:{"333300":"\u0422\u0435\u043c\u043d\u043e-\u043e\u043b\u0438\u0432\u043a\u043e\u0432\u0438\u0439","993300":"\u041f\u043e\u043c\u0430\u0440\u0430\u043d\u0447\u0435\u0432\u0438\u0439","000000":"\u0427\u043e\u0440\u043d\u0438\u0439","003300":"\u0422\u0435\u043c\u043d\u043e-\u0437\u0435\u043b\u0435\u043d\u0438\u0439",FF6600:"\u041e\u0440\u0430\u043d\u0436\u0435\u0432\u0438\u0439","808000":"\u041e\u043b\u0438\u0432\u043a\u043e\u0432\u0438\u0439","008000":"\u0417\u0435\u043b\u0435\u043d\u0438\u0439","0000FF":"\u0421\u0438\u043d\u0456\u0439","666699":"\u0421\u0456\u0440\u043e-\u0433\u043e\u043b\u0443\u0431\u0438\u0439","808080":"\u0421\u0456\u0440\u0438\u0439",FF0000:"\u0427\u0435\u0440\u0432\u043e\u043d\u0438\u0439","99CC00":"\u0416\u043e\u0432\u0442\u043e-\u0437\u0435\u043b\u0435\u043d\u0438\u0439","339966":"Sea green ",FFCC00:"\u0417\u043e\u043b\u043e\u0442\u0438\u0439",FFFF00:"\u0416\u043e\u0432\u0442\u0438\u0439","993366":"\u041a\u043e\u0440\u0438\u0447\u043d\u0435\u0432\u0438\u0439",C0C0C0:"\u0421\u0440\u0456\u0431\u043b\u044f\u0441\u0442\u0438\u0439",FF99CC:"\u0420\u043e\u0436\u0435\u0432\u0438\u0439",FFFF99:"\u0421\u0432\u0456\u0442\u043b\u043e \u0436\u043e\u0432\u0442\u0438\u0439",CC99FF:"\u0421\u043b\u0438\u0432\u043e\u0432\u0438\u0439",FFFFFF:"\u0411\u0456\u043b\u0438\u0439","003366":"Dark azure","000080":"Navy Blue","333399":"Indigo","333333":"Very dark gray","800000":"Maroon","008080":"Teal",FF9900:"Amber","33CCCC":"Turquoise","3366FF":"Royal blue","800080":"Purple","999999":"Medium gray",FF00FF:"Magenta","00FF00":"Lime","00FFFF":"Aqua","00CCFF":"Sky blue",FFCC99:"Peach",CCFFCC:"Pale green",CCFFFF:"Pale cyan","99CCFF":"Light sky blue"},aria:{"rich_text_area":"\u0412\u0456\u0437\u0443\u0430\u043b\u044c\u043d\u0438\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440"},wordcount:{words:"\u0421\u043b\u0456\u0432:"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/vi.js b/program/js/tiny_mce/langs/vi.js
deleted file mode 100644
index 966a38ac1..000000000
--- a/program/js/tiny_mce/langs/vi.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({vi:{common:{"more_colors":"M\u00e0u kh\u00e1c","invalid_data":"L\u1ed7i: Gi\u00e1 tr\u1ecb nh\u1eadp v\u00e0o kh\u00f4ng h\u1ee3p l\u1ec7. (\u0110\u01b0\u1ee3c \u0111\u00e1nh d\u1ea5u \u0111\u1ecf)","popup_blocked":"Xin l\u1ed7i, Nh\u01b0ng ch\u1ebf \u0111\u1ed9 c\u1eeda s\u1ed5 popup \u0111\u00e3 b\u1ecb v\u00f4 hi\u1ec7u ho\u00e1. B\u1ea1n s\u1ebd c\u1ea7n ph\u1ea3i t\u1eaft ch\u1ee9c n\u0103ng ch\u1eb7n popup tr\u00ean trang web n\u00e0y \u0111\u1ec3 s\u1eed d\u1ee5ng c\u00f4ng c\u1ee5 n\u00e0y ho\u00e0n to\u00e0n.","clipboard_no_support":"S\u1eed d\u1ee5ng ph\u00edm t\u1eaft kh\u00f4ng \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng trong tr\u00ecnh duy\u1ec7t hi\u1ec7n t\u1ea1i.","clipboard_msg":"Copy/Cut/Paste kh\u00f4ng \u0111\u01b0\u1ee3c h\u1ed7 tr\u1ee3 trong tr\u00ecnh duy\u1ec7t web n\u00e0y.\nB\u1ea1n c\u00f3 mu\u1ed1n bi\u1ebft th\u00eam th\u00f4ng tin v\u1ec1 v\u1ea5n \u0111\u1ec1 n\u00e0y kh\u00f4ng??","not_set":"-- Ch\u01b0a \u0111\u1eb7t --","class_name":"L\u1edbp",browse:"T\u00ecm",close:"Tho\u00e1t",cancel:"H\u1ee7y b\u1ecf",update:"C\u1eadp nh\u1eadt",insert:"Th\u00eam",apply:"Thay \u0111\u1ed5i","edit_confirm":"B\u1ea1n c\u00f3 mu\u1ed1n s\u1eed d\u1ee5ng ch\u1ebf \u0111\u1ed9 WYSIWYG cho textarea n\u00e0y?","invalid_data_number":"{#field} must be a number","invalid_data_min":"{#field} must be a number greater than {#min}","invalid_data_size":"{#field} must be a number or percentage",value:"(value)"},contextmenu:{full:"\u0110\u1ea7y",right:"Ph\u1ea3i",center:"Gi\u1eefa",left:"Tr\u00e1i",align:"Canh l\u1ec1"},insertdatetime:{"day_short":"CN,T2,T3,T4,T5,T6,T7,CN","day_long":"Ch\u1ee7 Nh\u1eadt,Th\u1ee9 Hai,Th\u1ee9 Ba,Th\u1ee9 T\u01b0,Th\u1ee9 N\u0103m,Th\u1ee9 S\u00e1u,Th\u1ee9 B\u1ea3y,Ch\u1ee7 Nh\u1eadt","months_short":"Thg1,Thg2,Thg3,Thg4,Thg5,Thg6,Thg7,Thg8,Thg9,Th10,Th11,Th12","months_long":"Th\u00e1ng M\u1ed9t,Th\u00e1ng Hai,Th\u00e1ng Ba,Th\u00e1ng T\u01b0,Th\u00e1ng N\u0103m,Th\u00e1ng S\u00e1u,Th\u00e1ng B\u1ea3y,Th\u00e1ng T\u00e1m,Th\u00e1ng Ch\u00edn,Th\u00e1ng M\u01b0\u1eddi,Th\u00e1ng M\u01b0\u1eddi M\u1ed9t,Th\u00e1ng M\u01b0\u1eddi Hai","inserttime_desc":"Ch\u00e8n gi\u1edd","insertdate_desc":"Ch\u00e8n ng\u00e0y","time_fmt":"%H:%M:%S","date_fmt":"%Y-%m-%d"},print:{"print_desc":"In"},preview:{"preview_desc":"Xem tr\u01b0\u1edbc"},directionality:{"rtl_desc":"H\u01b0\u1edbng ph\u1ea3i qua tr\u00e1i","ltr_desc":"H\u01b0\u1edbng tr\u00e1i qua ph\u1ea3i"},layer:{content:"L\u1edbp m\u1edbi...","absolute_desc":"\u0110\u1ea3o v\u1ecb tr\u00ed c\u1ed1 \u0111\u1ecbnh","backward_desc":"Di chuy\u1ec3n v\u1ec1 sau","forward_desc":"Di chuy\u1ec3n v\u1ec1 tr\u01b0\u1edbc","insertlayer_desc":"Ch\u00e8n l\u1edbp m\u1edbi"},save:{"save_desc":"L\u01b0u","cancel_desc":"H\u1ee7y b\u1ecf t\u1ea5t c\u1ea3 thay \u0111\u1ed5i"},nonbreaking:{"nonbreaking_desc":"Ch\u00e8n k\u00fd t\u1ef1 kho\u1ea3ng c\u00e1ch kh\u00f4ng b\u1ecb ng\u1eaft"},iespell:{download:"ieSpell kh\u00f4ng \u0111\u01b0\u1ee3c ph\u00e1t hi\u1ec7n. B\u1ea1n c\u00f3 mu\u1ed1n c\u00e0i \u0111\u1eb7t n\u00f3 b\u00e2y gi\u1edd?","iespell_desc":"Ch\u1ea1y tr\u00ecnh ki\u1ec3m tra ch\u00ednh t\u1ea3"},advhr:{"advhr_desc":"Th\u01b0\u1edbc ngang","delta_height":"","delta_width":""},emotions:{"emotions_desc":"Bi\u1ec3u T\u01b0\u1ee3ng C\u1ea3m X\u00fac","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"T\u00ecm/Thay th\u1ebf","search_desc":"T\u00ecm","delta_width":"","delta_height":""},advimage:{"image_desc":"Ch\u00e8n/s\u1eeda \u1ea3nh","delta_width":"","delta_height":""},advlink:{"link_desc":"Th\u00eam/S\u1eeda Link","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"Ch\u00e8n/S\u1eeda c\u00e1c thu\u1ed9c t\u00ednh","ins_desc":"Ch\u00e8n","del_desc":"X\u00f3a","acronym_desc":"T\u1eeb vi\u1ebft t\u1eaft","abbr_desc":"T\u00ean vi\u1ebft t\u1eaft","cite_desc":"Bi\u00ea\u0309u ch\u01b0\u01a1ng","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"S\u1eeda ki\u1ec3u d\u00e1ng CSS","delta_height":"","delta_width":""},paste:{"plaintext_mode":"Paste is now in plain text mode. Click again to toggle back to regular paste mode.","plaintext_mode_sticky":"Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode.","selectall_desc":"Ch\u1ecdn t\u1ea5t","paste_word_desc":"D\u00e1n t\u1eeb Word","paste_text_desc":"D\u00e1nh nh\u01b0 Plain Text"},"paste_dlg":{"word_title":"S\u1eed d\u1ee5ng CTRL+V tr\u00ean b\u00e0n ph\u00edm \u0111\u1ec3 d\u00e1n v\u0103n b\u1ea3n v\u00e0o c\u1eeda s\u1ed5.","text_linebreaks":"Gi\u1eef ng\u1eaft d\u00f2ng","text_title":"S\u1eed d\u1ee5ng CTRL+V tr\u00ean b\u00e0n ph\u00edm \u0111\u1ec3 d\u00e1n v\u0103n b\u1ea3n v\u00e0o c\u1eeda s\u1ed5."},table:{cell:"\u00d4",col:"C\u1ed9t",row:"H\u00e0ng",del:"X\u00f3a b\u1ea3ng","copy_row_desc":"Sao ch\u00e9p h\u00e0ng","cut_row_desc":"C\u1eaft h\u00e0ng","paste_row_after_desc":"D\u00e1n hang v\u00e0o sau","paste_row_before_desc":"D\u00e1n hang v\u00e0o tr\u01b0\u1edbc","props_desc":"Thu\u1ed9c t\u00ednh b\u1ea3ng","cell_desc":"Thu\u1ed9c t\u00ednh \u00f4","row_desc":"Thu\u1ed9c t\u00ednh h\u00e0ng","merge_cells_desc":"K\u1ebft h\u1ee3p c\u00e1c \u00f4 c\u1ee7a b\u1ea3ng","split_cells_desc":"T\u00e1ch c\u00e1c \u00f4 \u0111\u00e3 k\u1ebft h\u1ee3p c\u1ee7a b\u1ea3ng","delete_col_desc":"Lo\u1ea1i b\u1ecf c\u1ed9t","col_after_desc":"Ch\u00e8n c\u1ed9t v\u00e0o sau","col_before_desc":"Ch\u00e8n c\u1ed9t v\u00e0o tr\u01b0\u1edbc","delete_row_desc":"X\u00f3a d\u00f2ng","row_after_desc":"Ch\u00e8n h\u00e0ng v\u00e0o sau","row_before_desc":"Ch\u00e8n h\u00e0ng v\u00e0o tr\u01b0\u1edbc",desc:"Ch\u00e8n m\u1ed9t b\u1ea3ng m\u1edbi","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"N\u1ebfu b\u1ea1n kh\u00f4i ph\u1ee5c l\u1ea1i n\u1ed9i dung \u0111\u00e3 l\u01b0u, b\u1ea1n s\u1ebd m\u1ea5t t\u1ea5t c\u1ea3 c\u00e1c n\u1ed9i dung m\u00e0 hi\u1ec7n \u0111ang trong tr\u00ecnh so\u1ea1n th\u1ea3o.\n\nB\u1ea1n c\u00f3 ch\u1eafc l\u00e0 b\u1ea1n mu\u1ed1n kh\u00f4i ph\u1ee5c l\u1ea1i n\u1ed9i dung \u0111\u00e3 l\u01b0u?.","restore_content":"Kh\u00f4i ph\u1ee5c n\u1ed9i dung t\u1ef1 \u0111\u1ed9ng l\u01b0u l\u1ea1i.","unload_msg":"Nh\u1eefng thay \u0111\u1ed5i b\u1ea1n \u0111\u00e3 th\u1ef1c hi\u1ec7n s\u1ebd b\u1ecb m\u1ea5t n\u1ebfu b\u1ea1n \u0111i\u1ec1u h\u01b0\u1edbng \u0111i t\u1eeb trang n\u00e0y."},fullscreen:{desc:"B\u1eadt/t\u1eaft ch\u1ebf \u0111\u1ed9 to\u00e0n m\u00e0n h\u00ecnh"},media:{edit:"S\u1eeda ph\u01b0\u01a1ng ti\u1ec7n truy\u1ec1n th\u00f4ng nh\u00fang",desc:"Ch\u00e8n / s\u1eeda ph\u01b0\u01a1ng ti\u1ec7n truy\u1ec1n th\u00f4ng nh\u00fang","delta_height":"","delta_width":""},fullpage:{desc:"Thu\u1ed9c t\u00ednh v\u0103n b\u1ea3n","delta_width":"","delta_height":""},template:{desc:"Ch\u00e8n m\u1ed9t n\u1ed9i dung m\u1eabu \u0111\u1ecbnh ngh\u0129a tr\u01b0\u1edbc"},visualchars:{desc:"B\u1eb7t/T\u1eaft c\u00e1c k\u00fd t\u1ef1 \u0111i\u1ec1u khi\u1ec3n tr\u1ef1c quan."},spellchecker:{desc:"B\u1eadt/T\u1eaft ki\u1ec3m tra ch\u00ednh t\u1ea3",menu:"Thi\u1ebft l\u1eadp ki\u1ec3m tra ch\u00ednh t\u1ea3","ignore_word":"B\u1ecf qua t\u1eeb ng\u1eef","ignore_words":"B\u1ecf qua t\u1ea5t c\u1ea3",langs:"Ng\u00f4n ng\u1eef",wait:"Vui l\u00f2ng ch\u1edd...",sug:"G\u1ee3i \u00fd","no_sug":"Kh\u00f4ng c\u00f3 g\u1ee3i \u00fd","no_mpell":"Kh\u00f4ng c\u00f3 l\u1ed7i ch\u00ednh t\u1ea3 \u0111\u01b0\u1ee3c t\u00ecm th\u1ea5y.","learn_word":"Learn word"},pagebreak:{desc:"Ch\u00e8n ng\u1eaft trang."},advlist:{types:"Ki\u1ec3u",def:"M\u1eb7c \u0111\u1ecbnh","lower_alpha":"K\u00fd hi\u1ec7u alpha th\u01b0\u1eddng","lower_greek":"K\u00fd hi\u1ec7u Hy-l\u1ea1p th\u01b0\u1eddng","lower_roman":"K\u00fd hi\u1ec7u La m\u00e3 th\u01b0\u1eddng","upper_alpha":"K\u00fd hi\u1ec7u alpha cao","upper_roman":"K\u00fd hi\u1ec7u La m\u00e3 hoa",circle:"Tr\u00f2ng",disc:"\u0110\u0129a",square:"Vu\u00f4ng"},colors:{"333300":"Dark olive","993300":"Burnt orange","000000":"Black","003300":"Dark green","003366":"Dark azure","000080":"Navy Blue","333399":"Indigo","333333":"Very dark gray","800000":"Maroon",FF6600:"Orange","808000":"Olive","008000":"Green","008080":"Teal","0000FF":"Blue","666699":"Grayish blue","808080":"Gray",FF0000:"Red",FF9900:"Amber","99CC00":"Yellow green","339966":"Sea green","33CCCC":"Turquoise","3366FF":"Royal blue","800080":"Purple","999999":"Medium gray",FF00FF:"Magenta",FFCC00:"Gold",FFFF00:"Yellow","00FF00":"Lime","00FFFF":"Aqua","00CCFF":"Sky blue","993366":"Brown",C0C0C0:"Silver",FF99CC:"Pink",FFCC99:"Peach",FFFF99:"Light yellow",CCFFCC:"Pale green",CCFFFF:"Pale cyan","99CCFF":"Light sky blue",CC99FF:"Plum",FFFFFF:"White"},aria:{"rich_text_area":"Rich Text Area"},wordcount:{words:"Words"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/zh-cn.js b/program/js/tiny_mce/langs/zh-cn.js
deleted file mode 100644
index 42f7abbc9..000000000
--- a/program/js/tiny_mce/langs/zh-cn.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({"zh-cn":{common:{"more_colors":"\u66f4\u591a\u989c\u8272","invalid_data":"\u9519\u8bef\uff1a\u6807\u8bb0\u4e3a\u7ea2\u8272\u7684\u90e8\u5206\u6709\u8bef\u3002","popup_blocked":"\u62b1\u6b49\uff0c\u60a8\u7981\u7528\u4e86\u5f39\u51fa\u7a97\u53e3\u529f\u80fd\u3002\u4e3a\u4e86\u4f7f\u7528\u8be5\u5de5\u5177\u7684\u5168\u90e8\u529f\u80fd\uff0c\u60a8\u9700\u8981\u5141\u8bb8\u5f39\u51fa\u7a97\u53e3\u3002","clipboard_no_support":"\u60a8\u7684\u6d4f\u89c8\u5668\u4e0d\u652f\u6301\uff0c\u4f7f\u7528\u5feb\u6377\u952e\u4ee3\u66ff\u3002","clipboard_msg":"\u5728Mozilla\u548cFirefox\u4e2d\u4e0d\u80fd\u4f7f\u7528\u590d\u5236/\u7c98\u8d34/\u526a\u5207\u3002\u60a8\u8981\u67e5\u770b\u8be5\u95ee\u9898\u66f4\u591a\u7684\u4fe1\u606f\u5417\uff1f","not_set":"-- \u672a\u8bbe\u7f6e --","class_name":"\u7c7b\u522b",browse:"\u6d4f\u89c8",close:"\u5173\u95ed",cancel:"\u53d6\u6d88",update:"\u66f4\u65b0",insert:"\u63d2\u5165",apply:"\u5e94\u7528","edit_confirm":"\u8be5\u6587\u672c\u57df\u662f\u5426\u9700\u8981\u4f7f\u7528\u6240\u89c1\u5373\u6240\u5f97\u6a21\u5f0f\uff1f","invalid_data_number":"{#field} \u5fc5\u987b\u4e3a\u6570\u5b57","invalid_data_min":"{#field} \u5fc5\u987b\u4e3a\u5927\u4e8e {#min} \u7684\u6570\u5b57","invalid_data_size":"{#field} \u5fc5\u987b\u4e3a\u6570\u5b57\u6216\u767e\u5206\u6570",value:"(value)"},contextmenu:{full:"\u4e24\u7aef\u5bf9\u9f50",right:"\u53f3\u5bf9\u9f50",center:"\u5c45\u4e2d",left:"\u5de6\u5bf9\u9f50",align:"\u5bf9\u9f50"},insertdatetime:{"day_short":"\u5468\u65e5,\u5468\u4e00,\u5468\u4e8c,\u5468\u4e09,\u5468\u56db,\u5468\u4e94,\u5468\u516d,\u5468\u65e5","day_long":"\u661f\u671f\u65e5,\u661f\u671f\u4e00,\u661f\u671f\u4e8c,\u661f\u671f\u4e09,\u661f\u671f\u56db,\u661f\u671f\u4e94,\u661f\u671f\u516d,\u661f\u671f\u65e5","months_short":"1\u6708,2\u6708,3\u6708,4\u6708,5\u6708,6\u6708,7\u6708,8\u6708,9\u6708,10\u6708,11\u6708,12\u6708","months_long":"\u4e00\u6708,\u4e8c\u6708,\u4e09\u6708,\u56db\u6708,\u4e94\u6708,\u516d\u6708,\u4e03\u6708,\u516b\u6708,\u4e5d\u6708,\u5341\u6708,\u5341\u4e00\u6708,\u5341\u4e8c\u6708","inserttime_desc":"\u63d2\u5165\u65f6\u95f4","insertdate_desc":"\u63d2\u5165\u65e5\u671f","time_fmt":"%H:%M:%S","date_fmt":"%Y-%m-%d"},print:{"print_desc":"\u6253\u5370"},preview:{"preview_desc":"\u9884\u89c8"},directionality:{"rtl_desc":"\u6587\u5b57\u65b9\u5411\u4e3a\u4ece\u53f3\u5230\u5de6","ltr_desc":"\u6587\u5b57\u65b9\u5411\u4e3a\u4ece\u5de6\u5230\u53f3"},layer:{content:"\u65b0\u5efa\u5c42...","absolute_desc":"\u5207\u6362\u5230\u7edd\u5bf9\u4f4d\u7f6e","backward_desc":"\u7f6e\u540e","forward_desc":"\u7f6e\u524d","insertlayer_desc":"\u63d2\u5165\u65b0\u5c42"},save:{"save_desc":"\u4fdd\u5b58","cancel_desc":"\u53d6\u6d88\u66f4\u6539"},nonbreaking:{"nonbreaking_desc":"\u63d2\u5165\u4e0d\u95f4\u65ad\u7a7a\u683c\u7b26"},iespell:{download:"\u62fc\u5199\u68c0\u67e5\u672a\u5b89\u88c5\uff0c\u662f\u5426\u9a6c\u4e0a\u5b89\u88c5\uff1f","iespell_desc":"\u62fc\u5199\u68c0\u67e5"},advhr:{"delta_height":"\u9ad8\u5ea6","delta_width":"\u5bbd\u5ea6","advhr_desc":"\u6c34\u5e73\u7ebf"},emotions:{"emotions_desc":"\u8868\u60c5","delta_height":"","delta_width":""},searchreplace:{"replace_desc":"\u67e5\u627e/\u66ff\u6362","search_desc":"\u67e5\u627e","delta_width":"","delta_height":""},advimage:{"image_desc":"\u63d2\u5165/\u7f16\u8f91 \u56fe\u7247","delta_width":"","delta_height":""},advlink:{"link_desc":"\u63d2\u5165/\u7f16\u8f91 \u8d85\u94fe\u63a5","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"\u63d2\u5165/\u7f16\u8f91\u5c5e\u6027","ins_desc":"\u63d2\u5165","del_desc":"\u5220\u9664","acronym_desc":"\u9996\u5b57\u6bcd\u7f29\u5199","abbr_desc":"\u7f29\u5199","cite_desc":"\u5f15\u7528","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"\u7f16\u8f91CSS\u6837\u5f0f","delta_height":"","delta_width":""},paste:{"plaintext_mode":"\u5f53\u524d\u4e3a\u7eaf\u6587\u672c\u6a21\u5f0f\u7c98\u8d34\uff0c\u518d\u6b21\u70b9\u51fb\u8fd4\u56de\u666e\u901a\u7c98\u8d34\u6a21\u5f0f\u3002","plaintext_mode_sticky":"\u5f53\u524d\u4e3a\u7eaf\u6587\u672c\u6a21\u5f0f\u7c98\u8d34\u3002\u518d\u6b21\u70b9\u51fb\u8fd4\u56de\u666e\u901a\u7c98\u8d34\u6a21\u5f0f\uff0c\u5728\u60a8\u7c98\u8d34\u5185\u5bb9\u540e\u5c06\u8fd4\u56de\u666e\u901a\u7c98\u8d34\u6a21\u5f0f\u3002","selectall_desc":"\u5168\u9009","paste_word_desc":"\u4eceWord\u7c98\u8d34","paste_text_desc":"\u4ee5\u7eaf\u6587\u672c\u7c98\u8d34"},"paste_dlg":{"word_title":"\u4f7f\u7528CTRL V\u7c98\u8d34\u6587\u672c\u5230\u7a97\u53e3\u4e2d\u3002","text_linebreaks":"\u4fdd\u7559\u65ad\u884c","text_title":"\u4f7f\u7528CTRL V\u7c98\u8d34\u6587\u672c\u5230\u7a97\u53e3\u4e2d\u3002"},table:{cell:"\u5355\u5143\u683c",col:"\u5217",row:"\u884c",del:"\u5220\u9664\u8868\u683c","copy_row_desc":"\u590d\u5236\u884c","cut_row_desc":"\u526a\u5207\u884c","paste_row_after_desc":"\u5728\u4e0b\u65b9\u7c98\u8d34\u884c","paste_row_before_desc":"\u5728\u4e0a\u65b9\u7c98\u8d34\u884c","props_desc":"\u8868\u683c\u5c5e\u6027","cell_desc":"\u5355\u5143\u683c\u5c5e\u6027","row_desc":"\u884c\u5c5e\u6027","merge_cells_desc":"\u5408\u5e76\u5355\u5143\u683c","split_cells_desc":"\u5206\u5272\u5355\u5143\u683c","delete_col_desc":"\u5220\u9664\u5217","col_after_desc":"\u5728\u53f3\u4fa7\u63d2\u5165\u5217","col_before_desc":"\u5728\u5de6\u4fa7\u63d2\u5165\u5217","delete_row_desc":"\u5220\u9664\u884c","row_after_desc":"\u5728\u4e0b\u65b9\u63d2\u5165\u884c","row_before_desc":"\u5728\u4e0a\u65b9\u63d2\u5165\u884c",desc:"\u63d2\u5165\u65b0\u8868\u683c","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"\u5982\u679c\u6062\u590d\u4fdd\u5b58\u7684\u5185\u5bb9\uff0c\u60a8\u5f53\u524d\u7f16\u8f91\u7684\u6240\u6709\u7684\u5185\u5bb9\u5c06\u4e22\u5931\u3002nn\u60a8\u786e\u5b9a\u8981\u6062\u590d\u4fdd\u5b58\u7684\u5185\u5bb9\u5417\uff1f","restore_content":"\u6062\u590d\u81ea\u52a8\u4fdd\u5b58\u7684\u5185\u5bb9\u3002","unload_msg":"\u5982\u679c\u9000\u51fa\u8be5\u9875\uff0c\u60a8\u6240\u505a\u7684\u66f4\u6539\u5c06\u4e22\u5931\u3002"},fullscreen:{desc:"\u5207\u6362\u5168\u5c4f\u6a21\u5f0f"},media:{edit:"\u7f16\u8f91\u5d4c\u5165\u5f0f\u5a92\u4f53",desc:"\u63d2\u5165/\u7f16\u8f91 \u5d4c\u5165\u5f0f\u5a92\u4f53","delta_height":"","delta_width":""},fullpage:{desc:"\u6587\u4ef6\u5c5e\u6027","delta_width":"\u5bbd\u5ea6","delta_height":"\u9ad8\u5ea6"},template:{desc:"\u63d2\u5165\u9884\u8bbe\u7684\u6a21\u677f\u5185\u5bb9"},visualchars:{desc:"\u663e\u793a/\u9690\u85cf \u975e\u53ef\u89c1\u5b57\u7b26"},spellchecker:{desc:"\u62fc\u5199\u68c0\u67e5",menu:"\u62fc\u5199\u68c0\u67e5\u8bbe\u7f6e","ignore_word":"\u5ffd\u7565","ignore_words":"\u5168\u90e8\u5ffd\u7565",langs:"\u8bed\u8a00",wait:"\u8bf7\u7a0d\u5019...",sug:"\u5efa\u8bae","no_sug":"\u65e0\u5efa\u8bae","no_mpell":"\u65e0\u62fc\u5199\u9519\u8bef","learn_word":"\u5b66\u4e60\u8bcd\u7ec4"},pagebreak:{desc:"\u63d2\u5165\u5206\u9875\u7b26"},advlist:{types:"\u6837\u5f0f",def:"\u9ed8\u8ba4","lower_alpha":"\u5c0f\u5199\u5b57\u6bcd","lower_greek":"\u5c0f\u5199\u5e0c\u814a\u5b57\u6bcd","lower_roman":"\u5c0f\u5199\u7f57\u9a6c\u6570\u5b57","upper_alpha":"\u5927\u5199\u5b57\u6bcd","upper_roman":"\u5927\u5199\u7f57\u9a6c\u6570\u5b57",circle:"\u5706\u5708",disc:"\u5706\u70b9",square:"\u65b9\u5757"},colors:{"333300":"Dark olive","993300":"Burnt orange","000000":"Black","003300":"Dark green","003366":"Dark azure","000080":"Navy Blue","333399":"Indigo","333333":"Very dark gray","800000":"Maroon",FF6600:"Orange","808000":"Olive","008000":"Green","008080":"Teal","0000FF":"Blue","666699":"Grayish blue","808080":"Gray",FF0000:"Red",FF9900:"Amber","99CC00":"Yellow green","339966":"Sea green","33CCCC":"Turquoise","3366FF":"Royal blue","800080":"Purple","999999":"Medium gray",FF00FF:"Magenta",FFCC00:"Gold",FFFF00:"Yellow","00FF00":"Lime","00FFFF":"Aqua","00CCFF":"Sky blue","993366":"Brown",C0C0C0:"Silver",FF99CC:"Pink",FFCC99:"Peach",FFFF99:"Light yellow",CCFFCC:"Pale green",CCFFFF:"Pale cyan","99CCFF":"Light sky blue",CC99FF:"Plum",FFFFFF:"White"},aria:{"rich_text_area":"\u5bcc\u6587\u672c\u57df"},wordcount:{words:"\u5b57\u6570:"}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/langs/zh-tw.js b/program/js/tiny_mce/langs/zh-tw.js
deleted file mode 100644
index 9352b2649..000000000
--- a/program/js/tiny_mce/langs/zh-tw.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n({"zh-tw":{common:{"more_colors":"\u5176\u4ed6\u984f\u8272","invalid_data":"\u7d05\u8272\u6a19\u793a\u8d77\u4f86\u7684\u5730\u65b9\u6709\u932f\u8aa4","popup_blocked":"\u4f60\u770b\u7db2\u9801\u7684\u8edf\u9ad4\u4e0d\u652f\u63f4\u9019\u500b\u529f\u80fd\uff0c\u8acb\u6539\u8b8a\u8edf\u9ad4\u6709\u95dc\u5f48\u8df3\u8996\u7a97\u8a2d\u5b9a\uff0c\u8acb\u5141\u8a31\u4ed6\uff0c\u7a0b\u5f0f\u624d\u80fd\u6b63\u5e38\u904b\u4f5c","clipboard_no_support":"\u4f60\u770b\u7db2\u9801\u7684\u8edf\u9ad4\u4e0d\u652f\u63f4\u9019\u500b\u529f\u80fd\uff0c\u8acb\u4f7f\u7528\u9375\u76e4\u4e0a\u7684\u5feb\u901f\u9375\u8a66\u8a66\u770b\uff0c\u656c\u8acb\u898b\u8ad2","clipboard_msg":"\u4f60\u770b\u7db2\u9801\u7684\u8edf\u9ad4\u4e0d\u652f\u63f4\u529f\u80fd\u5594\uff01\u5efa\u8b70\u4f7f\u7528\u9375\u76e4\u4e0a\u7684 Ctrl X (\u526a\u4e0b) \u6216 Ctrl V (\u8cbc\u4e0a) \u4ee3\u66ff","not_set":"- \u672a\u8a2d\u5b9a -","class_name":"Class \u985e\u5225",browse:"\u700f\u89bd",close:"\u95dc\u9589\u756b\u9762",cancel:"\u53d6\u6d88",update:"\u66f4\u65b0",insert:"\u52a0\u5165",apply:"\u9810\u89bd","edit_confirm":"\u4f60\u8981\u4f7f\u7528\u300c\u6587\u5b57\u7de8\u8f2f\u5668\u300d\u4f86\u7de8\u8f2f\u4f60\u7684\u6587\u7ae0\u55ce\uff1f","invalid_data_number":"{#field} \u61c9\u8a72\u8981\u586b\u6578\u5b57","invalid_data_min":"{#field} \u4f60\u586b\u5beb\u7684\u6578\u5b57\uff0c\u5fc5\u9808\u5927\u65bc {#min}","invalid_data_size":"{#field} \u61c9\u8a72\u8981\u586b\u5beb\u6578\u5b57 \u6216 \u767e\u5206\u6bd4 (%)",value:"(value)"},contextmenu:{full:"\u5206\u6563\u5c0d\u9f4a",right:"\u5411\u53f3\u908a",center:"\u7f6e\u4e2d",left:"\u5411\u5de6\u908a",align:"\u5c0d\u9f4a\u65b9\u5f0f"},insertdatetime:{"day_short":"\u9031\u4e00,\u9031\u4e8c,\u9031\u4e09,\u9031\u56db,\u9031\u4e94,\u9031\u516d,\u9031\u65e5","day_long":"\u661f\u671f\u4e00,\u661f\u671f\u4e8c,\u661f\u671f\u4e09,\u661f\u671f\u56db,\u661f\u671f\u4e94,\u661f\u671f\u516d,\u661f\u671f\u65e5","months_short":"\u4e00\u6708,\u4e8c\u6708,\u4e09\u6708,\u56db\u6708,\u4e94\u6708,\u516d\u6708,\u4e03\u6708,\u516b\u6708,\u4e5d\u6708,\u5341\u6708,\u5341\u4e00\u6708,\u5341\u4e8c\u6708","months_long":"\u4e00\u6708,\u4e8c\u6708,\u4e09\u6708,\u56db\u6708,\u4e94\u6708,\u516d\u6708,\u4e03\u6708,\u516b\u6708,\u4e5d\u6708,\u5341\u6708,\u5341\u4e00\u6708,\u5341\u4e8c\u6708","inserttime_desc":"\u6642\u9593","insertdate_desc":"\u65e5\u671f","time_fmt":"%H:%M:%S","date_fmt":"%Y-%m-%d"},print:{"print_desc":"\u5217\u5370"},preview:{"preview_desc":"\u9810\u89bd"},directionality:{"rtl_desc":"\u5f9e\u53f3\u908a\u5230\u5de6\u908a","ltr_desc":"\u5f9e\u5de6\u908a\u5230\u53f3\u908a"},layer:{content:"\u65b0\u589e\u7db2\u9801\u5716\u5c64","absolute_desc":"\u5b9a\u4f4d","backward_desc":"\u653e\u5230\u5f8c\u9762","forward_desc":"\u6392\u5728\u524d\u9762","insertlayer_desc":"\u65b0\u589e\u7db2\u9801\u5716\u5c64"},save:{"save_desc":"\u5b58\u6a94","cancel_desc":"\u5168\u90e8\u53d6\u6d88"},nonbreaking:{"nonbreaking_desc":"\u52a0\u5165\u4e0d\u65b7\u884c\u7684\u7b26\u865f"},iespell:{download:"\u7a0b\u5f0f\u627e\u4e0d\u5230 ieSpell \uff0c\u4f60\u8981\u5b89\u88dd\u5b83\u55ce\uff1f","iespell_desc":"\u6aa2\u67e5\u82f1\u6587\u8a9e\u6cd5"},advhr:{"delta_height":"\u9ad8","delta_width":"\u5bec","advhr_desc":"\u6c34\u5e73\u7dda"},emotions:{"delta_height":"","emotions_desc":"\u8868\u60c5\u7b26\u865f","delta_width":""},searchreplace:{"replace_desc":"\u641c\u5c0b\u53d6\u4ee3","search_desc":"\u641c\u5c0b","delta_width":"","delta_height":""},advimage:{"image_desc":"\u52a0\u5165 / \u7de8\u8f2f\u5716\u7247","delta_width":"","delta_height":""},advlink:{"link_desc":"\u52a0\u5165 / \u7de8\u8f2f\u7db2\u5740","delta_height":"","delta_width":""},xhtmlxtras:{"attribs_desc":"\u65b0\u589e / \u7de8\u8f2f\u5c6c\u6027","ins_desc":"\u65b0\u589e","del_desc":"\u522a\u9664","acronym_desc":"\u982d\u5b57\u8a9e (\u975e\u4e00\u822c\u82f1\u6587\u7e2e\u5beb)","abbr_desc":"\u82f1\u6587\u7e2e\u5beb","cite_desc":"\u5f15\u7528","attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":""},style:{desc:"\u7de8\u8f2f CSS \u6a23\u5f0f","delta_height":"","delta_width":""},paste:{"plaintext_mode":"\u73fe\u5728\u662f\u7d14\u6587\u5b57\u8cbc\u4e0a\u6a21\u5f0f\uff0c\u4f60\u73fe\u5728\u8cbc\u4e0a\u7684\u8cc7\u6599\u53ea\u6703\u51fa\u73fe\u6587\u5b57","plaintext_mode_sticky":"\u73fe\u5728\u662f\u7d14\u6587\u5b57\u8cbc\u4e0a\u6a21\u5f0f\uff0c\u4f60\u73fe\u5728\u8cbc\u4e0a\u7684\u8cc7\u6599\u53ea\u6703\u51fa\u73fe\u6587\u5b57\uff0c\u4f46\u4f60\u8cbc\u4e0a\u8cc7\u6599\u5f8c\u5c07\u56de\u5230\u4e00\u822c\u6a21\u5f0f\u53ef\u4ee5\u8cbc\u4e0a\u5716\u7247\u3001\u5f71\u7247\u7b49\u7b49","selectall_desc":"\u5168\u9078","paste_word_desc":"\u5f9e Word \u8cbc\u4e0a","paste_text_desc":"\u53ea\u8cbc\u4e0a\u6587\u5b57"},"paste_dlg":{"word_title":"\u8acb\u6309\u9375\u76e4\u4e0a\u7684 Ctrl C (\u8907\u88fd) \u8cc7\u6599\u5230\u756b\u9762\u4e0a","text_linebreaks":"\u4fdd\u7559\u6587\u7ae0\u4e2d\u7684\u63db\u884c","text_title":"\u8acb\u6309\u9375\u76e4\u4e0a\u7684 Ctrl C (\u8cbc\u4e0a) \u8cc7\u6599\u5230\u756b\u9762\u4e0a"},table:{cell:"\u5132\u5b58\u683c",col:"\u6b04",row:"\u5217",del:"\u522a\u9664\u8868\u683c","copy_row_desc":"\u8907\u88fd\u8868\u683c\u4e0a\u7684\u5217","cut_row_desc":"\u526a\u4e0b\u8868\u683c\u7684\u5217","paste_row_after_desc":"\u8cbc\u5728\u9019\u689d\u5217\u7684\u5f8c\u9762","paste_row_before_desc":"\u8cbc\u5728\u9019\u689d\u5217\u7684\u524d\u9762","props_desc":"\u8868\u683c\u8a2d\u5b9a","cell_desc":"\u5132\u5b58\u683c\u7684\u8a2d\u5b9a","row_desc":"\u5217\u7684\u8a2d\u5b9a","merge_cells_desc":"\u5408\u4f75\u8868\u683c","split_cells_desc":"\u5206\u5272\u5132\u5b58\u683c","delete_col_desc":"\u79fb\u9664\u8868\u683c\u6b04\u4f4d","col_after_desc":"\u5728\u53f3\u908a\u52a0\u5165\u4e00\u500b\u6b04\u4f4d","col_before_desc":"\u5728\u5de6\u908a\u52a0\u5165\u4e00\u500b\u6b04\u4f4d","delete_row_desc":"\u522a\u9664\u9019\u6574\u5217","row_after_desc":"\u5728\u4e0b\u65b9\u52a0\u5165\u4e00\u5217","row_before_desc":"\u5728\u4e0a\u65b9\u52a0\u5165\u4e00\u5217",desc:"\u65b0\u589e\u4e00\u500b\u8868\u683c","merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":""},autosave:{"warning_message":"\u5982\u679c\u4f60\u8981\u9084\u539f\u8cc7\u6599\u7684\u8a71\uff0c\u4f60\u73fe\u5728\u7684\u6587\u7ae0\u5c07\u88ab\u522a\u9664\uff0c\u78ba\u5b9a\u8981\u9084\u539f\u55ce\uff1f","restore_content":"\u9084\u539f","unload_msg":"\u4f60\u5982\u679c\u96e2\u958b\u9019\u500b\u756b\u9762\uff0c\u7a0b\u5f0f\u6703\u79fb\u9664\u6587\u7ae0\u5099\u4efd (\u4f46\u4e0d\u5f71\u97ff\u5230\u7db2\u7ad9\u904b\u4f5c)"},fullscreen:{desc:"\u653e\u5927\u5230\u6574\u500b\u87a2\u5e55"},media:{"delta_height":"",edit:"\u6539\u8b8a\u8a2d\u5b9a",desc:"\u52a0\u5165\u5d4c\u5165\u8a9e\u6cd5","delta_width":""},fullpage:{desc:"\u9801\u9762\u5c6c\u6027","delta_width":"","delta_height":""},template:{desc:"\u4f7f\u7528\u7248\u578b"},visualchars:{desc:"\u986f\u793a\u96b1\u85cf\u7684\u5b57"},spellchecker:{desc:"\u4f7f\u7528\u82f1\u6587\u8a9e\u6cd5\u6aa2\u67e5",menu:"\u8a2d\u5b9a","ignore_word":"\u5ffd\u7565","ignore_words":"\u5168\u90e8\u5ffd\u7565",langs:"\u8a9e\u8a00",wait:"\u7a0d\u7b49",sug:"\u62fc\u5b57\u5efa\u8b70","no_sug":"\u7121","no_mpell":"\u6c92\u6709\u8a9e\u6cd5\u4e0a\u7684\u554f\u984c","learn_word":"\u81ea\u52d5\u5b78\u7fd2\u529f\u80fd"},pagebreak:{desc:"\u52a0\u4e0a\u5206\u9801\u7b26\u865f"},advlist:{types:"\u5f62\u5f0f",def:"\u9810\u8a2d","lower_alpha":"\u5c0f\u5beb\u7684\u82f1\u6587","lower_greek":"\u5e0c\u81d8\u6587","lower_roman":"\u5c0f\u5beb\u7684\u7f85\u99ac\u6578\u5b57","upper_alpha":"\u5927\u5beb\u7684\u82f1\u6587","upper_roman":"\u5927\u5beb\u7684\u7f85\u99ac\u6578\u5b57",circle:"\u7a7a\u5fc3\u7684\u5713\u5708\u5708",disc:"\u5713\u5708\u5708",square:"\u6b63\u65b9\u5f62"},colors:{"333300":"Dark olive","993300":"Burnt orange","000000":"Black","003300":"Dark green","003366":"Dark azure","000080":"Navy Blue","333399":"Indigo","333333":"Very dark gray","800000":"Maroon",FF6600:"Orange","808000":"Olive","008000":"Green","008080":"Teal","0000FF":"Blue","666699":"Grayish blue","808080":"Gray",FF0000:"Red",FF9900:"Amber","99CC00":"Yellow green","339966":"Sea green","33CCCC":"Turquoise","3366FF":"Royal blue","800080":"Purple","999999":"Medium gray",FF00FF:"Magenta",FFCC00:"Gold",FFFF00:"Yellow","00FF00":"Lime","00FFFF":"Aqua","00CCFF":"Sky blue","993366":"Brown",C0C0C0:"Silver",FF99CC:"Pink",FFCC99:"Peach",FFFF99:"Light yellow",CCFFCC:"Pale green",CCFFFF:"Pale cyan","99CCFF":"Light sky blue",CC99FF:"Plum",FFFFFF:"White"},aria:{"rich_text_area":"\u6587\u5b57\u7de8\u8f2f\u5340"},wordcount:{words:"\u6587\u7ae0\u5167\u7684\u5b57\u6578: "}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/css/advhr.css b/program/js/tiny_mce/plugins/advhr/css/advhr.css
deleted file mode 100644
index 0e2283498..000000000
--- a/program/js/tiny_mce/plugins/advhr/css/advhr.css
+++ /dev/null
@@ -1,5 +0,0 @@
-input.radio {border:1px none #000; background:transparent; vertical-align:middle;}
-.panel_wrapper div.current {height:80px;}
-#width {width:50px; vertical-align:middle;}
-#width2 {width:50px; vertical-align:middle;}
-#size {width:100px;}
diff --git a/program/js/tiny_mce/plugins/advhr/editor_plugin.js b/program/js/tiny_mce/plugins/advhr/editor_plugin.js
deleted file mode 100644
index 4d3b062de..000000000
--- a/program/js/tiny_mce/plugins/advhr/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.AdvancedHRPlugin",{init:function(a,b){a.addCommand("mceAdvancedHr",function(){a.windowManager.open({file:b+"/rule.htm",width:250+parseInt(a.getLang("advhr.delta_width",0)),height:160+parseInt(a.getLang("advhr.delta_height",0)),inline:1},{plugin_url:b})});a.addButton("advhr",{title:"advhr.advhr_desc",cmd:"mceAdvancedHr"});a.onNodeChange.add(function(d,c,e){c.setActive("advhr",e.nodeName=="HR")});a.onClick.add(function(c,d){d=d.target;if(d.nodeName==="HR"){c.selection.select(d)}})},getInfo:function(){return{longname:"Advanced HR",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advhr",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("advhr",tinymce.plugins.AdvancedHRPlugin)})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/editor_plugin_src.js b/program/js/tiny_mce/plugins/advhr/editor_plugin_src.js
deleted file mode 100644
index 0c652d330..000000000
--- a/program/js/tiny_mce/plugins/advhr/editor_plugin_src.js
+++ /dev/null
@@ -1,57 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- tinymce.create('tinymce.plugins.AdvancedHRPlugin', {
- init : function(ed, url) {
- // Register commands
- ed.addCommand('mceAdvancedHr', function() {
- ed.windowManager.open({
- file : url + '/rule.htm',
- width : 250 + parseInt(ed.getLang('advhr.delta_width', 0)),
- height : 160 + parseInt(ed.getLang('advhr.delta_height', 0)),
- inline : 1
- }, {
- plugin_url : url
- });
- });
-
- // Register buttons
- ed.addButton('advhr', {
- title : 'advhr.advhr_desc',
- cmd : 'mceAdvancedHr'
- });
-
- ed.onNodeChange.add(function(ed, cm, n) {
- cm.setActive('advhr', n.nodeName == 'HR');
- });
-
- ed.onClick.add(function(ed, e) {
- e = e.target;
-
- if (e.nodeName === 'HR')
- ed.selection.select(e);
- });
- },
-
- getInfo : function() {
- return {
- longname : 'Advanced HR',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advhr',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('advhr', tinymce.plugins.AdvancedHRPlugin);
-})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/js/rule.js b/program/js/tiny_mce/plugins/advhr/js/rule.js
deleted file mode 100644
index b6cbd66c7..000000000
--- a/program/js/tiny_mce/plugins/advhr/js/rule.js
+++ /dev/null
@@ -1,43 +0,0 @@
-var AdvHRDialog = {
- init : function(ed) {
- var dom = ed.dom, f = document.forms[0], n = ed.selection.getNode(), w;
-
- w = dom.getAttrib(n, 'width');
- f.width.value = w ? parseInt(w) : (dom.getStyle('width') || '');
- f.size.value = dom.getAttrib(n, 'size') || parseInt(dom.getStyle('height')) || '';
- f.noshade.checked = !!dom.getAttrib(n, 'noshade') || !!dom.getStyle('border-width');
- selectByValue(f, 'width2', w.indexOf('%') != -1 ? '%' : 'px');
- },
-
- update : function() {
- var ed = tinyMCEPopup.editor, h, f = document.forms[0], st = '';
-
- h = '<hr';
-
- if (f.size.value) {
- h += ' size="' + f.size.value + '"';
- st += ' height:' + f.size.value + 'px;';
- }
-
- if (f.width.value) {
- h += ' width="' + f.width.value + (f.width2.value == '%' ? '%' : '') + '"';
- st += ' width:' + f.width.value + (f.width2.value == '%' ? '%' : 'px') + ';';
- }
-
- if (f.noshade.checked) {
- h += ' noshade="noshade"';
- st += ' border-width: 1px; border-style: solid; border-color: #CCCCCC; color: #ffffff;';
- }
-
- if (ed.settings.inline_styles)
- h += ' style="' + tinymce.trim(st) + '"';
-
- h += ' />';
-
- ed.execCommand("mceInsertContent", false, h);
- tinyMCEPopup.close();
- }
-};
-
-tinyMCEPopup.requireLangPack();
-tinyMCEPopup.onInit.add(AdvHRDialog.init, AdvHRDialog);
diff --git a/program/js/tiny_mce/plugins/advhr/langs/ar_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/ar_dlg.js
deleted file mode 100644
index 9ee0c398f..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/ar_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ar.advhr_dlg',{size:"\u0627\u0644\u0627\u0631\u062a\u0641\u0627\u0639",noshade:"\u0644\u0627 \u0638\u0644",width:"\u0627\u0644\u0639\u0631\u0636",normal:"\u0627\u0644\u0637\u0628\u064a\u0639\u064a",widthunits:"\u0627\u0644\u0648\u062d\u062f\u0627\u062a"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/az_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/az_dlg.js
deleted file mode 100644
index a1d0ecc81..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/az_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('az.advhr_dlg',{size:"H\u00fcnd\u00fcrl\u00fcy\u00fc",noshade:"K\u00f6lg\u0259 yoxdur",width:"Eni",normal:"Normal",widthunits:"Units"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/bg_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/bg_dlg.js
deleted file mode 100644
index 50d9d37f6..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/bg_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bg.advhr_dlg',{size:"\u0412\u0438\u0441\u043e\u0447\u0438\u043d\u0430",noshade:"\u0411\u0435\u0437 \u0441\u044f\u043d\u043a\u0430",width:"\u0428\u0438\u0440\u0438\u043d\u0430",normal:"\u041d\u043e\u0440\u043c\u0430\u043b\u043d\u0430",widthunits:"\u0415\u0434\u0438\u043d\u0438\u0446\u0438"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/bn_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/bn_dlg.js
deleted file mode 100644
index 2077a114c..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/bn_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bn.advhr_dlg',{size:"Height",noshade:"No shadow",width:"Width",normal:"Normal",widthunits:"Units"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/br_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/br_dlg.js
deleted file mode 100644
index e38132066..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/br_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('br.advhr_dlg',{size:"Altura",noshade:"Sem sombra",width:"Largura",normal:"Normal",widthunits:"Units"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/bs_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/bs_dlg.js
deleted file mode 100644
index 430597420..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/bs_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bs.advhr_dlg',{size:"Visina",noshade:"Bez sjene",width:"\u0160irina",normal:"Normal",widthunits:"Units"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/ca_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/ca_dlg.js
deleted file mode 100644
index 4ef722285..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/ca_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ca.advhr_dlg',{size:"Al\u00e7ada",noshade:"Sense sombra",width:"Amplada",normal:"Normal",widthunits:"Unitats"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/cs_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/cs_dlg.js
deleted file mode 100644
index a74dd2072..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/cs_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('cs.advhr_dlg',{size:"V\u00fd\u0161ka",noshade:"Bez st\u00ednu",width:"\u0160\u00ed\u0159ka",normal:"Norm\u00e1ln\u00ed",widthunits:"Jednotky"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/cy_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/cy_dlg.js
deleted file mode 100644
index d98b73597..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/cy_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('cy.advhr_dlg',{size:"Uchder",noshade:"Dim cysgod",width:"Lled",normal:"Normal",widthunits:"Unedau"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/da_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/da_dlg.js
deleted file mode 100644
index 3f9657c9e..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/da_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('da.advhr_dlg',{size:"H\u00f8jde",noshade:"Ingen skygge",width:"Bredde",normal:"Normal",widthunits:"Enheder"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/de_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/de_dlg.js
deleted file mode 100644
index 7c5143e57..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/de_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('de.advhr_dlg',{size:"H\u00f6he",noshade:"Kein Schatten",width:"Breite",normal:"Normal",widthunits:"Einheiten"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/el_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/el_dlg.js
deleted file mode 100644
index 3ca3adfd5..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/el_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('el.advhr_dlg',{size:"\u038e\u03c8\u03bf\u03c2",noshade:"\u03a7\u03c9\u03c1\u03af\u03c2 \u03c3\u03ba\u03b9\u03ac",width:"\u03a0\u03bb\u03ac\u03c4\u03bf\u03c2",normal:"Normal",widthunits:"Units"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/en_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/en_dlg.js
deleted file mode 100644
index 0c3bf15e6..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/en_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('en.advhr_dlg',{size:"Height",noshade:"No Shadow",width:"Width",normal:"Normal",widthunits:"Units"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/eo_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/eo_dlg.js
deleted file mode 100644
index e5eddda44..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/eo_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('eo.advhr_dlg',{size:"Alteco",noshade:"Sen ombro",width:"Lar\u011deco",normal:"Normal",widthunits:"Units"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/es_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/es_dlg.js
deleted file mode 100644
index dacd6385f..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/es_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('es.advhr_dlg',{size:"Alto",noshade:"Sin sombra",width:"Ancho",normal:"Normal",widthunits:"Unidades"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/et_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/et_dlg.js
deleted file mode 100644
index 5b0b2ba42..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/et_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('et.advhr_dlg',{size:"K\u00f5rgus",noshade:"Ilma varjuta",width:"Laius",normal:"Normaalne",widthunits:"\u00dchikud"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/eu_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/eu_dlg.js
deleted file mode 100644
index aaed07db6..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/eu_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('eu.advhr_dlg',{size:"Altuera",noshade:"Itzalik gabe",width:"Zabalera",normal:"Normal",widthunits:"Units"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/fa_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/fa_dlg.js
deleted file mode 100644
index 9b1760557..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/fa_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fa.advhr_dlg',{size:"\u0627\u0631\u062a\u0641\u0627\u0639",noshade:"\u0628\u062f\u0648\u0646 \u0633\u0627\u06cc\u0647",width:"\u067e\u0647\u0646\u0627",normal:"\u0645\u0639\u0645\u0648\u0644\u06cc",widthunits:"\u0648\u0627\u062d\u062f"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/fi_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/fi_dlg.js
deleted file mode 100644
index 3318d1f69..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/fi_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fi.advhr_dlg',{size:"Korkeus",noshade:"Ei varjoa",width:"Leveys",normal:"Normaali",widthunits:"Yksik\u00f6t"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/fr_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/fr_dlg.js
deleted file mode 100644
index 4b6995cf6..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/fr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fr.advhr_dlg',{size:"Hauteur",noshade:"Pas d\'ombre",width:"Largeur",normal:"Normal",widthunits:"Unit\u00e9s"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/gl_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/gl_dlg.js
deleted file mode 100644
index 71adc8e91..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/gl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('gl.advhr_dlg',{size:"Alto",noshade:"Sen sombra",width:"Ancho",normal:"Normal",widthunits:"Units"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/he_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/he_dlg.js
deleted file mode 100644
index fd491ea4a..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/he_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('he.advhr_dlg',{size:"\u05d2\u05d5\u05d1\u05d4",noshade:"\u05dc\u05dc\u05d0 \u05e6\u05dc",width:"\u05e8\u05d5\u05d7\u05d1",normal:"\u05e8\u05d2\u05d9\u05dc",widthunits:"\u05d9\u05d7\u05d9\u05d3\u05d5\u05ea"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/hi_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/hi_dlg.js
deleted file mode 100644
index 1ac67b0f4..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/hi_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hi.advhr_dlg',{size:"Height",noshade:"No shadow",width:"Width",normal:"Normal",widthunits:"Units"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/hr_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/hr_dlg.js
deleted file mode 100644
index 626838dbc..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/hr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hr.advhr_dlg',{size:"Visina",noshade:"Bez sjene",width:"\u0160irina",normal:"Normal",widthunits:"Units"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/hu_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/hu_dlg.js
deleted file mode 100644
index f9ed72887..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/hu_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hu.advhr_dlg',{size:"Magass\u00e1g",noshade:"\u00c1rny\u00e9k n\u00e9lk\u00fcl",width:"Sz\u00e9less\u00e9g",normal:"Norm\u00e1l",widthunits:"M\u00e9rt\u00e9kegys\u00e9gek"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/hy_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/hy_dlg.js
deleted file mode 100644
index 6638262cb..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/hy_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hy.advhr_dlg',{size:"\u0532\u0561\u0580\u0571\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576",noshade:"\u0531\u057c\u0561\u0576\u0581 \u057d\u057f\u057e\u0565\u0580\u056b",width:"\u053c\u0561\u0575\u0576\u0578\u0582\u0569\u0575\u0578\u0582\u0576",normal:"Normal",widthunits:"Units"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/id_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/id_dlg.js
deleted file mode 100644
index 88f4f060e..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/id_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('id.advhr_dlg',{size:"Tinggi",noshade:"Tanpa bayangan",width:"Lebar",normal:"Normal",widthunits:"Units"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/is_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/is_dlg.js
deleted file mode 100644
index 72b210dfd..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/is_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('is.advhr_dlg',{size:"H\u00e6\u00f0",noshade:"Enginn skuggi",width:"Breidd",normal:"Normal",widthunits:"Units"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/it_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/it_dlg.js
deleted file mode 100644
index db513340d..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/it_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('it.advhr_dlg',{size:"Altezza",noshade:"Senza ombreggiatura",width:"Larghezza",normal:"Normale",widthunits:"Unit\u00e0"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/ja_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/ja_dlg.js
deleted file mode 100644
index 70adc8b5d..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/ja_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ja.advhr_dlg',{size:"\u9ad8\u3055",noshade:"\u5f71\u306a\u3057",width:"\u5e45",normal:"\u901a\u5e38",widthunits:"\u5358\u4f4d"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/ka_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/ka_dlg.js
deleted file mode 100644
index ddd77a683..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/ka_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ka.advhr_dlg',{size:"\u10e1\u10d8\u10db\u10d0\u10e6\u10da\u10d4",noshade:"\u10e9\u10e0\u10d3\u10d8\u10da\u10d8\u10e1 \u10d2\u10d0\u10e0\u10d4\u10e8\u10d4",width:"\u10e1\u10d8\u10d2\u10d0\u10dc\u10d4",normal:"Normal",widthunits:"Units"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/ko_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/ko_dlg.js
deleted file mode 100644
index bde22ebd9..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/ko_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ko.advhr_dlg',{size:"\ub192\uc774",noshade:"\uadf8\ub9bc\uc790 \uc5c6\uc74c",width:"\ud3ed",normal:"\ubcf4\ud1b5",widthunits:"\ub2e8\uc704"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/lt_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/lt_dlg.js
deleted file mode 100644
index 07294cba4..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/lt_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('lt.advhr_dlg',{size:"Auk\u0161tis",noshade:"Be \u0161e\u0161\u0117lio",width:"Ilgis",normal:"Normalus",widthunits:"Vienetai"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/lv_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/lv_dlg.js
deleted file mode 100644
index 6f6a9032d..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/lv_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('lv.advhr_dlg',{size:"Augstums",noshade:"Bez \u0113nas",width:"Platums",normal:"Norm\u0101ls",widthunits:"Vien\u012bbas"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/mk_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/mk_dlg.js
deleted file mode 100644
index 06ac8785b..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/mk_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('mk.advhr_dlg',{size:"\u0412\u0438\u0441\u0438\u043d\u0430",noshade:"\u0411\u0435\u0437 \u0441\u0435\u043d\u043a\u0430",width:"\u0428\u0438\u0440\u0438\u043d\u0430",normal:"\u041d\u043e\u0440\u043c\u0430\u043b\u043d\u043e",widthunits:"\u0415\u0434\u0438\u043d\u0438\u0446\u0438"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/ms_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/ms_dlg.js
deleted file mode 100644
index f448e086e..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/ms_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ms.advhr_dlg',{size:"Tinggi",noshade:"Tanpa bayang",width:"Lebar",normal:"Normal",widthunits:"Units"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/nb_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/nb_dlg.js
deleted file mode 100644
index e41c2f477..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/nb_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nb.advhr_dlg',{size:"St\u00f8rrelse",noshade:"Ingen skygge",width:"Bredde",normal:"Normal",widthunits:"Enheter"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/nl_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/nl_dlg.js
deleted file mode 100644
index d3ab5acb5..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/nl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nl.advhr_dlg',{size:"Hoogte",noshade:"Geen schaduw",width:"Breedte",normal:"Normaal",widthunits:"Eenheden"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/nn_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/nn_dlg.js
deleted file mode 100644
index 535505af1..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/nn_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nn.advhr_dlg',{size:"Storleik",noshade:"Inga skugge",width:"Breidd",normal:"Normal",widthunits:"Einingar"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/pl_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/pl_dlg.js
deleted file mode 100644
index f4e513887..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/pl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('pl.advhr_dlg',{size:"Wysoko\u015b\u0107",noshade:"Bez cienia",width:"Szeroko\u015b\u0107",normal:"Normalny",widthunits:"Jednostki"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/ps_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/ps_dlg.js
deleted file mode 100644
index a13f8706b..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/ps_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ps.advhr_dlg',{size:"Height",noshade:"No shadow",width:"Width",normal:"Normal",widthunits:"Units"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/pt_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/pt_dlg.js
deleted file mode 100644
index 531022082..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/pt_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('pt.advhr_dlg',{size:"Altura",noshade:"Sem sombra",width:"Largura",normal:"Normal",widthunits:"Unids"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/ro_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/ro_dlg.js
deleted file mode 100644
index d501da3a5..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/ro_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ro.advhr_dlg',{size:"\u00cen\u0103l\u021bime",noshade:"F\u0103r\u0103 umbre",width:"L\u0103\u021bime",normal:"Normal",widthunits:"Unit\u0103\u021bi"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/ru_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/ru_dlg.js
deleted file mode 100644
index 553f03f4d..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/ru_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ru.advhr_dlg',{size:"\u0412\u044b\u0441\u043e\u0442\u0430",noshade:"\u0411\u0435\u0437 \u0442\u0435\u043d\u0438",width:"\u0428\u0438\u0440\u0438\u043d\u0430",normal:"\u041e\u0431\u044b\u0447\u043d\u0430\u044f",widthunits:"\u0415\u0434\u0438\u043d\u0438\u0446\u044b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/si_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/si_dlg.js
deleted file mode 100644
index 3e2c500de..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/si_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('si.advhr_dlg',{size:"Height",noshade:"No shadow",width:"Width",normal:"Normal",widthunits:"Units"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/sk_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/sk_dlg.js
deleted file mode 100644
index 60ae5bcf2..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/sk_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sk.advhr_dlg',{size:"V\u00fd\u0161ka",noshade:"Bez tie\u0148a",width:"\u0160\u00edrka",normal:"Norm\u00e1lne",widthunits:"Jednotky"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/sl_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/sl_dlg.js
deleted file mode 100644
index 23ca296d1..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/sl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sl.advhr_dlg',{size:"Vi\u0161ina",noshade:"Brez sen\u010denja",width:"\u0160irina",normal:"Obi\u010dajno",widthunits:"Enote"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/sq_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/sq_dlg.js
deleted file mode 100644
index a6ee979b5..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/sq_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sq.advhr_dlg',{size:"Gjat\u00ebsia",noshade:"Pa hije",width:"Gjer\u00ebsia",normal:"Normal",widthunits:"Nj\u00ebsi"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/sr_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/sr_dlg.js
deleted file mode 100644
index 603e50c17..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/sr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sr.advhr_dlg',{size:"Visina",noshade:"Bez senke",width:"\u0160irina",normal:"Normal",widthunits:"Units"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/sv_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/sv_dlg.js
deleted file mode 100644
index f2601e34e..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/sv_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sv.advhr_dlg',{size:"H\u00f6jd",noshade:"Ingen skugga",width:"Bredd",normal:"Normal",widthunits:"Enheter"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/ta_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/ta_dlg.js
deleted file mode 100644
index c05c36585..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/ta_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ta.advhr_dlg',{size:"Height",noshade:"No shadow",width:"Width",normal:"Normal",widthunits:"Units"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/th_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/th_dlg.js
deleted file mode 100644
index 93e932cb2..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/th_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('th.advhr_dlg',{size:"\u0e2a\u0e39\u0e07",noshade:"\u0e44\u0e21\u0e48\u0e21\u0e35\u0e40\u0e07\u0e32",width:"\u0e01\u0e27\u0e49\u0e32\u0e07",normal:"Normal",widthunits:"Units"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/tr_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/tr_dlg.js
deleted file mode 100644
index fb999ebb4..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/tr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('tr.advhr_dlg',{size:"Y\u00fckseklik",noshade:"G\u00f6lge yok",width:"Geni\u015flik",normal:"Normal",widthunits:"Birimler"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/uk_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/uk_dlg.js
deleted file mode 100644
index 296ccb661..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/uk_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('uk.advhr_dlg',{size:"\u0412\u0438\u0441\u043e\u0442\u0430",noshade:"\u0411\u0435\u0437 \u0442\u0456\u043d\u0456",width:"\u0428\u0438\u0440\u0438\u043d\u0430",normal:"\u041d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u0438\u0439",widthunits:"\u041e\u0434\u0438\u043d\u0438\u0446\u0456 \u0432\u0438\u043c\u0456\u0440\u0443"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/vi_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/vi_dlg.js
deleted file mode 100644
index b1d552513..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/vi_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('vi.advhr_dlg',{size:"Chi\u1ec1u r\u1ed9ng",noshade:"Kh\u00f4ng c\u00f3 b\u00f3ng",width:"Chi\u1ec1u d\u00e0i",normal:"Normal",widthunits:"Units"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/zh-cn_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/zh-cn_dlg.js
deleted file mode 100644
index c8912162a..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/zh-cn_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('zh-cn.advhr_dlg',{size:"\u9ad8\u5ea6",noshade:"\u65e0\u9634\u5f71",width:"\u5bbd\u5ea6",normal:"Normal",widthunits:"Units"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/langs/zh-tw_dlg.js b/program/js/tiny_mce/plugins/advhr/langs/zh-tw_dlg.js
deleted file mode 100644
index 33bfb609a..000000000
--- a/program/js/tiny_mce/plugins/advhr/langs/zh-tw_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('zh-tw.advhr_dlg',{size:"\u9ad8",noshade:"\u7121\u9670\u5f71\u6548\u679c",width:"\u5bec",normal:"Normal",widthunits:"Units"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advhr/rule.htm b/program/js/tiny_mce/plugins/advhr/rule.htm
deleted file mode 100644
index 843e1f8f0..000000000
--- a/program/js/tiny_mce/plugins/advhr/rule.htm
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#advhr.advhr_desc}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="js/rule.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="../../utils/form_utils.js"></script>
- <link href="css/advhr.css" rel="stylesheet" type="text/css" />
-</head>
-<body role="application">
-<form onsubmit="AdvHRDialog.update();return false;" action="#">
- <div class="tabs">
- <ul>
- <li id="general_tab" class="current" aria-controls="general_panel"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advhr.advhr_desc}</a></span></li>
- </ul>
- </div>
-
- <div class="panel_wrapper">
- <div id="general_panel" class="panel current">
- <table role="presentation" border="0" cellpadding="4" cellspacing="0">
- <tr role="group" aria-labelledby="width_label">
- <td><label id="width_label" for="width">{#advhr_dlg.width}</label></td>
- <td class="nowrap">
- <input id="width" name="width" type="text" value="" class="mceFocus" />
- <span style="display:none;" id="width_unit_label">{#advhr_dlg.widthunits}</span>
- <select name="width2" id="width2" aria-labelledby="width_unit_label">
- <option value="">px</option>
- <option value="%">%</option>
- </select>
- </td>
- </tr>
- <tr>
- <td><label for="size">{#advhr_dlg.size}</label></td>
- <td><select id="size" name="size">
- <option value="">{#advhr_dlg.normal}</option>
- <option value="1">1</option>
- <option value="2">2</option>
- <option value="3">3</option>
- <option value="4">4</option>
- <option value="5">5</option>
- </select></td>
- </tr>
- <tr>
- <td><label for="noshade">{#advhr_dlg.noshade}</label></td>
- <td><input type="checkbox" name="noshade" id="noshade" class="radio" /></td>
- </tr>
- </table>
- </div>
- </div>
-
- <div class="mceActionPanel">
- <input type="submit" id="insert" name="insert" value="{#insert}" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
-</form>
-</body>
-</html>
diff --git a/program/js/tiny_mce/plugins/advimage/css/advimage.css b/program/js/tiny_mce/plugins/advimage/css/advimage.css
deleted file mode 100644
index 0a6251a69..000000000
--- a/program/js/tiny_mce/plugins/advimage/css/advimage.css
+++ /dev/null
@@ -1,13 +0,0 @@
-#src_list, #over_list, #out_list {width:280px;}
-.mceActionPanel {margin-top:7px;}
-.alignPreview {border:1px solid #000; width:140px; height:140px; overflow:hidden; padding:5px;}
-.checkbox {border:0;}
-.panel_wrapper div.current {height:305px;}
-#prev {margin:0; border:1px solid #000; width:428px; height:150px; overflow:auto;}
-#align, #classlist {width:150px;}
-#width, #height {vertical-align:middle; width:50px; text-align:center;}
-#vspace, #hspace, #border {vertical-align:middle; width:30px; text-align:center;}
-#class_list {width:180px;}
-input {width: 280px;}
-#constrain, #onmousemovecheck {width:auto;}
-#id, #dir, #lang, #usemap, #longdesc {width:200px;}
diff --git a/program/js/tiny_mce/plugins/advimage/editor_plugin.js b/program/js/tiny_mce/plugins/advimage/editor_plugin.js
deleted file mode 100644
index d613a6139..000000000
--- a/program/js/tiny_mce/plugins/advimage/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.AdvancedImagePlugin",{init:function(a,b){a.addCommand("mceAdvImage",function(){if(a.dom.getAttrib(a.selection.getNode(),"class","").indexOf("mceItem")!=-1){return}a.windowManager.open({file:b+"/image.htm",width:480+parseInt(a.getLang("advimage.delta_width",0)),height:385+parseInt(a.getLang("advimage.delta_height",0)),inline:1},{plugin_url:b})});a.addButton("image",{title:"advimage.image_desc",cmd:"mceAdvImage"})},getInfo:function(){return{longname:"Advanced image",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advimage",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("advimage",tinymce.plugins.AdvancedImagePlugin)})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/editor_plugin_src.js b/program/js/tiny_mce/plugins/advimage/editor_plugin_src.js
deleted file mode 100644
index d2678cbcf..000000000
--- a/program/js/tiny_mce/plugins/advimage/editor_plugin_src.js
+++ /dev/null
@@ -1,50 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- tinymce.create('tinymce.plugins.AdvancedImagePlugin', {
- init : function(ed, url) {
- // Register commands
- ed.addCommand('mceAdvImage', function() {
- // Internal image object like a flash placeholder
- if (ed.dom.getAttrib(ed.selection.getNode(), 'class', '').indexOf('mceItem') != -1)
- return;
-
- ed.windowManager.open({
- file : url + '/image.htm',
- width : 480 + parseInt(ed.getLang('advimage.delta_width', 0)),
- height : 385 + parseInt(ed.getLang('advimage.delta_height', 0)),
- inline : 1
- }, {
- plugin_url : url
- });
- });
-
- // Register buttons
- ed.addButton('image', {
- title : 'advimage.image_desc',
- cmd : 'mceAdvImage'
- });
- },
-
- getInfo : function() {
- return {
- longname : 'Advanced image',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advimage',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('advimage', tinymce.plugins.AdvancedImagePlugin);
-})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/image.htm b/program/js/tiny_mce/plugins/advimage/image.htm
deleted file mode 100644
index ed16b3d4a..000000000
--- a/program/js/tiny_mce/plugins/advimage/image.htm
+++ /dev/null
@@ -1,235 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#advimage_dlg.dialog_title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="../../utils/form_utils.js"></script>
- <script type="text/javascript" src="../../utils/validate.js"></script>
- <script type="text/javascript" src="../../utils/editable_selects.js"></script>
- <script type="text/javascript" src="js/image.js"></script>
- <link href="css/advimage.css" rel="stylesheet" type="text/css" />
-</head>
-<body id="advimage" style="display: none" role="application" aria-labelledby="app_title">
- <span id="app_title" style="display:none">{#advimage_dlg.dialog_title}</span>
- <form onsubmit="ImageDialog.insert();return false;" action="#">
- <div class="tabs">
- <ul>
- <li id="general_tab" class="current" aria-controls="general_panel"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advimage_dlg.tab_general}</a></span></li>
- <li id="appearance_tab" aria-controls="appearance_panel"><span><a href="javascript:mcTabs.displayTab('appearance_tab','appearance_panel');" onmousedown="return false;">{#advimage_dlg.tab_appearance}</a></span></li>
- <li id="advanced_tab" aria-controls="advanced_panel"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#advimage_dlg.tab_advanced}</a></span></li>
- </ul>
- </div>
-
- <div class="panel_wrapper">
- <div id="general_panel" class="panel current">
- <fieldset>
- <legend>{#advimage_dlg.general}</legend>
-
- <table role="presentation" class="properties">
- <tr>
- <td class="column1"><label id="srclabel" for="src">{#advimage_dlg.src}</label></td>
- <td colspan="2"><table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input name="src" type="text" id="src" value="" class="mceFocus" onchange="ImageDialog.showPreviewImage(this.value);" aria-required="true" /></td>
- <td id="srcbrowsercontainer">&nbsp;</td>
- </tr>
- </table></td>
- </tr>
- <tr>
- <td><label for="src_list">{#advimage_dlg.image_list}</label></td>
- <td><select id="src_list" name="src_list" onchange="document.getElementById('src').value=this.options[this.selectedIndex].value;document.getElementById('alt').value=this.options[this.selectedIndex].text;document.getElementById('title').value=this.options[this.selectedIndex].text;ImageDialog.showPreviewImage(this.options[this.selectedIndex].value);"><option value=""></option></select></td>
- </tr>
- <tr>
- <td class="column1"><label id="altlabel" for="alt">{#advimage_dlg.alt}</label></td>
- <td colspan="2"><input id="alt" name="alt" type="text" value="" /></td>
- </tr>
- <tr>
- <td class="column1"><label id="titlelabel" for="title">{#advimage_dlg.title}</label></td>
- <td colspan="2"><input id="title" name="title" type="text" value="" /></td>
- </tr>
- </table>
- </fieldset>
-
- <fieldset>
- <legend>{#advimage_dlg.preview}</legend>
- <div id="prev"></div>
- </fieldset>
- </div>
-
- <div id="appearance_panel" class="panel">
- <fieldset>
- <legend>{#advimage_dlg.tab_appearance}</legend>
-
- <table role="presentation" border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td class="column1"><label id="alignlabel" for="align">{#advimage_dlg.align}</label></td>
- <td><select id="align" name="align" onchange="ImageDialog.updateStyle('align');ImageDialog.changeAppearance();">
- <option value="">{#not_set}</option>
- <option value="baseline">{#advimage_dlg.align_baseline}</option>
- <option value="top">{#advimage_dlg.align_top}</option>
- <option value="middle">{#advimage_dlg.align_middle}</option>
- <option value="bottom">{#advimage_dlg.align_bottom}</option>
- <option value="text-top">{#advimage_dlg.align_texttop}</option>
- <option value="text-bottom">{#advimage_dlg.align_textbottom}</option>
- <option value="left">{#advimage_dlg.align_left}</option>
- <option value="right">{#advimage_dlg.align_right}</option>
- </select>
- </td>
- <td rowspan="6" valign="top">
- <div class="alignPreview">
- <img id="alignSampleImg" src="img/sample.gif" alt="{#advimage_dlg.example_img}" />
- Lorem ipsum, Dolor sit amet, consectetuer adipiscing loreum ipsum edipiscing elit, sed diam
- nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.Loreum ipsum
- edipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam
- erat volutpat.
- </div>
- </td>
- </tr>
-
- <tr role="group" aria-labelledby="widthlabel">
- <td class="column1"><label id="widthlabel" for="width">{#advimage_dlg.dimensions}</label></td>
- <td class="nowrap">
- <span style="display:none" id="width_voiceLabel">{#advimage_dlg.width}</span>
- <input name="width" type="text" id="width" value="" size="5" maxlength="5" class="size" onchange="ImageDialog.changeHeight();" aria-labelledby="width_voiceLabel" /> x
- <span style="display:none" id="height_voiceLabel">{#advimage_dlg.height}</span>
- <input name="height" type="text" id="height" value="" size="5" maxlength="5" class="size" onchange="ImageDialog.changeWidth();" aria-labelledby="height_voiceLabel" /> px
- </td>
- </tr>
-
- <tr>
- <td>&nbsp;</td>
- <td><table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="constrain" type="checkbox" name="constrain" class="checkbox" /></td>
- <td><label id="constrainlabel" for="constrain">{#advimage_dlg.constrain_proportions}</label></td>
- </tr>
- </table></td>
- </tr>
-
- <tr>
- <td class="column1"><label id="vspacelabel" for="vspace">{#advimage_dlg.vspace}</label></td>
- <td><input name="vspace" type="text" id="vspace" value="" size="3" maxlength="3" class="number" onchange="ImageDialog.updateStyle('vspace');ImageDialog.changeAppearance();" onblur="ImageDialog.updateStyle('vspace');ImageDialog.changeAppearance();" />
- </td>
- </tr>
-
- <tr>
- <td class="column1"><label id="hspacelabel" for="hspace">{#advimage_dlg.hspace}</label></td>
- <td><input name="hspace" type="text" id="hspace" value="" size="3" maxlength="3" class="number" onchange="ImageDialog.updateStyle('hspace');ImageDialog.changeAppearance();" onblur="ImageDialog.updateStyle('hspace');ImageDialog.changeAppearance();" /></td>
- </tr>
-
- <tr>
- <td class="column1"><label id="borderlabel" for="border">{#advimage_dlg.border}</label></td>
- <td><input id="border" name="border" type="text" value="" size="3" maxlength="3" class="number" onchange="ImageDialog.updateStyle('border');ImageDialog.changeAppearance();" onblur="ImageDialog.updateStyle('border');ImageDialog.changeAppearance();" /></td>
- </tr>
-
- <tr>
- <td><label for="class_list">{#class_name}</label></td>
- <td colspan="2"><select id="class_list" name="class_list" class="mceEditableSelect"><option value=""></option></select></td>
- </tr>
-
- <tr>
- <td class="column1"><label id="stylelabel" for="style">{#advimage_dlg.style}</label></td>
- <td colspan="2"><input id="style" name="style" type="text" value="" onchange="ImageDialog.changeAppearance();" /></td>
- </tr>
-
- <!-- <tr>
- <td class="column1"><label id="classeslabel" for="classes">{#advimage_dlg.classes}</label></td>
- <td colspan="2"><input id="classes" name="classes" type="text" value="" onchange="selectByValue(this.form,'classlist',this.value,true);" /></td>
- </tr> -->
- </table>
- </fieldset>
- </div>
-
- <div id="advanced_panel" class="panel">
- <fieldset>
- <legend>{#advimage_dlg.swap_image}</legend>
-
- <input type="checkbox" id="onmousemovecheck" name="onmousemovecheck" class="checkbox" onclick="ImageDialog.setSwapImage(this.checked);" aria-controls="onmouseoversrc onmouseoutsrc" />
- <label id="onmousemovechecklabel" for="onmousemovecheck">{#advimage_dlg.alt_image}</label>
-
- <table role="presentation" border="0" cellpadding="4" cellspacing="0" width="100%">
- <tr>
- <td class="column1"><label id="onmouseoversrclabel" for="onmouseoversrc">{#advimage_dlg.mouseover}</label></td>
- <td><table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input id="onmouseoversrc" name="onmouseoversrc" type="text" value="" /></td>
- <td id="onmouseoversrccontainer">&nbsp;</td>
- </tr>
- </table></td>
- </tr>
- <tr>
- <td><label for="over_list">{#advimage_dlg.image_list}</label></td>
- <td><select id="over_list" name="over_list" onchange="document.getElementById('onmouseoversrc').value=this.options[this.selectedIndex].value;"><option value=""></option></select></td>
- </tr>
- <tr>
- <td class="column1"><label id="onmouseoutsrclabel" for="onmouseoutsrc">{#advimage_dlg.mouseout}</label></td>
- <td class="column2"><table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input id="onmouseoutsrc" name="onmouseoutsrc" type="text" value="" /></td>
- <td id="onmouseoutsrccontainer">&nbsp;</td>
- </tr>
- </table></td>
- </tr>
- <tr>
- <td><label for="out_list">{#advimage_dlg.image_list}</label></td>
- <td><select id="out_list" name="out_list" onchange="document.getElementById('onmouseoutsrc').value=this.options[this.selectedIndex].value;"><option value=""></option></select></td>
- </tr>
- </table>
- </fieldset>
-
- <fieldset>
- <legend>{#advimage_dlg.misc}</legend>
-
- <table role="presentation" border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td class="column1"><label id="idlabel" for="id">{#advimage_dlg.id}</label></td>
- <td><input id="id" name="id" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="column1"><label id="dirlabel" for="dir">{#advimage_dlg.langdir}</label></td>
- <td>
- <select id="dir" name="dir" onchange="ImageDialog.changeAppearance();">
- <option value="">{#not_set}</option>
- <option value="ltr">{#advimage_dlg.ltr}</option>
- <option value="rtl">{#advimage_dlg.rtl}</option>
- </select>
- </td>
- </tr>
-
- <tr>
- <td class="column1"><label id="langlabel" for="lang">{#advimage_dlg.langcode}</label></td>
- <td>
- <input id="lang" name="lang" type="text" value="" />
- </td>
- </tr>
-
- <tr>
- <td class="column1"><label id="usemaplabel" for="usemap">{#advimage_dlg.map}</label></td>
- <td>
- <input id="usemap" name="usemap" type="text" value="" />
- </td>
- </tr>
-
- <tr>
- <td class="column1"><label id="longdesclabel" for="longdesc">{#advimage_dlg.long_desc}</label></td>
- <td><table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input id="longdesc" name="longdesc" type="text" value="" /></td>
- <td id="longdesccontainer">&nbsp;</td>
- </tr>
- </table></td>
- </tr>
- </table>
- </fieldset>
- </div>
- </div>
-
- <div class="mceActionPanel">
- <input type="submit" id="insert" name="insert" value="{#insert}" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
- </form>
-</body>
-</html>
diff --git a/program/js/tiny_mce/plugins/advimage/img/sample.gif b/program/js/tiny_mce/plugins/advimage/img/sample.gif
deleted file mode 100644
index 53bf6890b..000000000
--- a/program/js/tiny_mce/plugins/advimage/img/sample.gif
+++ /dev/null
Binary files differ
diff --git a/program/js/tiny_mce/plugins/advimage/js/image.js b/program/js/tiny_mce/plugins/advimage/js/image.js
deleted file mode 100644
index f0b7c6eef..000000000
--- a/program/js/tiny_mce/plugins/advimage/js/image.js
+++ /dev/null
@@ -1,464 +0,0 @@
-var ImageDialog = {
- preInit : function() {
- var url;
-
- tinyMCEPopup.requireLangPack();
-
- if (url = tinyMCEPopup.getParam("external_image_list_url"))
- document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');
- },
-
- init : function(ed) {
- var f = document.forms[0], nl = f.elements, ed = tinyMCEPopup.editor, dom = ed.dom, n = ed.selection.getNode(), fl = tinyMCEPopup.getParam('external_image_list', 'tinyMCEImageList');
-
- tinyMCEPopup.resizeToInnerSize();
- this.fillClassList('class_list');
- this.fillFileList('src_list', fl);
- this.fillFileList('over_list', fl);
- this.fillFileList('out_list', fl);
- TinyMCE_EditableSelects.init();
-
- if (n.nodeName == 'IMG') {
- nl.src.value = dom.getAttrib(n, 'src');
- nl.width.value = dom.getAttrib(n, 'width');
- nl.height.value = dom.getAttrib(n, 'height');
- nl.alt.value = dom.getAttrib(n, 'alt');
- nl.title.value = dom.getAttrib(n, 'title');
- nl.vspace.value = this.getAttrib(n, 'vspace');
- nl.hspace.value = this.getAttrib(n, 'hspace');
- nl.border.value = this.getAttrib(n, 'border');
- selectByValue(f, 'align', this.getAttrib(n, 'align'));
- selectByValue(f, 'class_list', dom.getAttrib(n, 'class'), true, true);
- nl.style.value = dom.getAttrib(n, 'style');
- nl.id.value = dom.getAttrib(n, 'id');
- nl.dir.value = dom.getAttrib(n, 'dir');
- nl.lang.value = dom.getAttrib(n, 'lang');
- nl.usemap.value = dom.getAttrib(n, 'usemap');
- nl.longdesc.value = dom.getAttrib(n, 'longdesc');
- nl.insert.value = ed.getLang('update');
-
- if (/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/.test(dom.getAttrib(n, 'onmouseover')))
- nl.onmouseoversrc.value = dom.getAttrib(n, 'onmouseover').replace(/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/, '$1');
-
- if (/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/.test(dom.getAttrib(n, 'onmouseout')))
- nl.onmouseoutsrc.value = dom.getAttrib(n, 'onmouseout').replace(/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/, '$1');
-
- if (ed.settings.inline_styles) {
- // Move attribs to styles
- if (dom.getAttrib(n, 'align'))
- this.updateStyle('align');
-
- if (dom.getAttrib(n, 'hspace'))
- this.updateStyle('hspace');
-
- if (dom.getAttrib(n, 'border'))
- this.updateStyle('border');
-
- if (dom.getAttrib(n, 'vspace'))
- this.updateStyle('vspace');
- }
- }
-
- // Setup browse button
- document.getElementById('srcbrowsercontainer').innerHTML = getBrowserHTML('srcbrowser','src','image','theme_advanced_image');
- if (isVisible('srcbrowser'))
- document.getElementById('src').style.width = '260px';
-
- // Setup browse button
- document.getElementById('onmouseoversrccontainer').innerHTML = getBrowserHTML('overbrowser','onmouseoversrc','image','theme_advanced_image');
- if (isVisible('overbrowser'))
- document.getElementById('onmouseoversrc').style.width = '260px';
-
- // Setup browse button
- document.getElementById('onmouseoutsrccontainer').innerHTML = getBrowserHTML('outbrowser','onmouseoutsrc','image','theme_advanced_image');
- if (isVisible('outbrowser'))
- document.getElementById('onmouseoutsrc').style.width = '260px';
-
- // If option enabled default contrain proportions to checked
- if (ed.getParam("advimage_constrain_proportions", true))
- f.constrain.checked = true;
-
- // Check swap image if valid data
- if (nl.onmouseoversrc.value || nl.onmouseoutsrc.value)
- this.setSwapImage(true);
- else
- this.setSwapImage(false);
-
- this.changeAppearance();
- this.showPreviewImage(nl.src.value, 1);
- },
-
- insert : function(file, title) {
- var ed = tinyMCEPopup.editor, t = this, f = document.forms[0];
-
- if (f.src.value === '') {
- if (ed.selection.getNode().nodeName == 'IMG') {
- ed.dom.remove(ed.selection.getNode());
- ed.execCommand('mceRepaint');
- }
-
- tinyMCEPopup.close();
- return;
- }
-
- if (tinyMCEPopup.getParam("accessibility_warnings", 1)) {
- if (!f.alt.value) {
- tinyMCEPopup.confirm(tinyMCEPopup.getLang('advimage_dlg.missing_alt'), function(s) {
- if (s)
- t.insertAndClose();
- });
-
- return;
- }
- }
-
- t.insertAndClose();
- },
-
- insertAndClose : function() {
- var ed = tinyMCEPopup.editor, f = document.forms[0], nl = f.elements, v, args = {}, el;
-
- tinyMCEPopup.restoreSelection();
-
- // Fixes crash in Safari
- if (tinymce.isWebKit)
- ed.getWin().focus();
-
- if (!ed.settings.inline_styles) {
- args = {
- vspace : nl.vspace.value,
- hspace : nl.hspace.value,
- border : nl.border.value,
- align : getSelectValue(f, 'align')
- };
- } else {
- // Remove deprecated values
- args = {
- vspace : '',
- hspace : '',
- border : '',
- align : ''
- };
- }
-
- tinymce.extend(args, {
- src : nl.src.value.replace(/ /g, '%20'),
- width : nl.width.value,
- height : nl.height.value,
- alt : nl.alt.value,
- title : nl.title.value,
- 'class' : getSelectValue(f, 'class_list'),
- style : nl.style.value,
- id : nl.id.value,
- dir : nl.dir.value,
- lang : nl.lang.value,
- usemap : nl.usemap.value,
- longdesc : nl.longdesc.value
- });
-
- args.onmouseover = args.onmouseout = '';
-
- if (f.onmousemovecheck.checked) {
- if (nl.onmouseoversrc.value)
- args.onmouseover = "this.src='" + nl.onmouseoversrc.value + "';";
-
- if (nl.onmouseoutsrc.value)
- args.onmouseout = "this.src='" + nl.onmouseoutsrc.value + "';";
- }
-
- el = ed.selection.getNode();
-
- if (el && el.nodeName == 'IMG') {
- ed.dom.setAttribs(el, args);
- } else {
- tinymce.each(args, function(value, name) {
- if (value === "") {
- delete args[name];
- }
- });
-
- ed.execCommand('mceInsertContent', false, tinyMCEPopup.editor.dom.createHTML('img', args), {skip_undo : 1});
- ed.undoManager.add();
- }
-
- tinyMCEPopup.editor.execCommand('mceRepaint');
- tinyMCEPopup.editor.focus();
- tinyMCEPopup.close();
- },
-
- getAttrib : function(e, at) {
- var ed = tinyMCEPopup.editor, dom = ed.dom, v, v2;
-
- if (ed.settings.inline_styles) {
- switch (at) {
- case 'align':
- if (v = dom.getStyle(e, 'float'))
- return v;
-
- if (v = dom.getStyle(e, 'vertical-align'))
- return v;
-
- break;
-
- case 'hspace':
- v = dom.getStyle(e, 'margin-left')
- v2 = dom.getStyle(e, 'margin-right');
-
- if (v && v == v2)
- return parseInt(v.replace(/[^0-9]/g, ''));
-
- break;
-
- case 'vspace':
- v = dom.getStyle(e, 'margin-top')
- v2 = dom.getStyle(e, 'margin-bottom');
- if (v && v == v2)
- return parseInt(v.replace(/[^0-9]/g, ''));
-
- break;
-
- case 'border':
- v = 0;
-
- tinymce.each(['top', 'right', 'bottom', 'left'], function(sv) {
- sv = dom.getStyle(e, 'border-' + sv + '-width');
-
- // False or not the same as prev
- if (!sv || (sv != v && v !== 0)) {
- v = 0;
- return false;
- }
-
- if (sv)
- v = sv;
- });
-
- if (v)
- return parseInt(v.replace(/[^0-9]/g, ''));
-
- break;
- }
- }
-
- if (v = dom.getAttrib(e, at))
- return v;
-
- return '';
- },
-
- setSwapImage : function(st) {
- var f = document.forms[0];
-
- f.onmousemovecheck.checked = st;
- setBrowserDisabled('overbrowser', !st);
- setBrowserDisabled('outbrowser', !st);
-
- if (f.over_list)
- f.over_list.disabled = !st;
-
- if (f.out_list)
- f.out_list.disabled = !st;
-
- f.onmouseoversrc.disabled = !st;
- f.onmouseoutsrc.disabled = !st;
- },
-
- fillClassList : function(id) {
- var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;
-
- if (v = tinyMCEPopup.getParam('theme_advanced_styles')) {
- cl = [];
-
- tinymce.each(v.split(';'), function(v) {
- var p = v.split('=');
-
- cl.push({'title' : p[0], 'class' : p[1]});
- });
- } else
- cl = tinyMCEPopup.editor.dom.getClasses();
-
- if (cl.length > 0) {
- lst.options.length = 0;
- lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), '');
-
- tinymce.each(cl, function(o) {
- lst.options[lst.options.length] = new Option(o.title || o['class'], o['class']);
- });
- } else
- dom.remove(dom.getParent(id, 'tr'));
- },
-
- fillFileList : function(id, l) {
- var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;
-
- l = typeof(l) === 'function' ? l() : window[l];
- lst.options.length = 0;
-
- if (l && l.length > 0) {
- lst.options[lst.options.length] = new Option('', '');
-
- tinymce.each(l, function(o) {
- lst.options[lst.options.length] = new Option(o[0], o[1]);
- });
- } else
- dom.remove(dom.getParent(id, 'tr'));
- },
-
- resetImageData : function() {
- var f = document.forms[0];
-
- f.elements.width.value = f.elements.height.value = '';
- },
-
- updateImageData : function(img, st) {
- var f = document.forms[0];
-
- if (!st) {
- f.elements.width.value = img.width;
- f.elements.height.value = img.height;
- }
-
- this.preloadImg = img;
- },
-
- changeAppearance : function() {
- var ed = tinyMCEPopup.editor, f = document.forms[0], img = document.getElementById('alignSampleImg');
-
- if (img) {
- if (ed.getParam('inline_styles')) {
- ed.dom.setAttrib(img, 'style', f.style.value);
- } else {
- img.align = f.align.value;
- img.border = f.border.value;
- img.hspace = f.hspace.value;
- img.vspace = f.vspace.value;
- }
- }
- },
-
- changeHeight : function() {
- var f = document.forms[0], tp, t = this;
-
- if (!f.constrain.checked || !t.preloadImg) {
- return;
- }
-
- if (f.width.value == "" || f.height.value == "")
- return;
-
- tp = (parseInt(f.width.value) / parseInt(t.preloadImg.width)) * t.preloadImg.height;
- f.height.value = tp.toFixed(0);
- },
-
- changeWidth : function() {
- var f = document.forms[0], tp, t = this;
-
- if (!f.constrain.checked || !t.preloadImg) {
- return;
- }
-
- if (f.width.value == "" || f.height.value == "")
- return;
-
- tp = (parseInt(f.height.value) / parseInt(t.preloadImg.height)) * t.preloadImg.width;
- f.width.value = tp.toFixed(0);
- },
-
- updateStyle : function(ty) {
- var dom = tinyMCEPopup.dom, b, bStyle, bColor, v, isIE = tinymce.isIE, f = document.forms[0], img = dom.create('img', {style : dom.get('style').value});
-
- if (tinyMCEPopup.editor.settings.inline_styles) {
- // Handle align
- if (ty == 'align') {
- dom.setStyle(img, 'float', '');
- dom.setStyle(img, 'vertical-align', '');
-
- v = getSelectValue(f, 'align');
- if (v) {
- if (v == 'left' || v == 'right')
- dom.setStyle(img, 'float', v);
- else
- img.style.verticalAlign = v;
- }
- }
-
- // Handle border
- if (ty == 'border') {
- b = img.style.border ? img.style.border.split(' ') : [];
- bStyle = dom.getStyle(img, 'border-style');
- bColor = dom.getStyle(img, 'border-color');
-
- dom.setStyle(img, 'border', '');
-
- v = f.border.value;
- if (v || v == '0') {
- if (v == '0')
- img.style.border = isIE ? '0' : '0 none none';
- else {
- var isOldIE = tinymce.isIE && (!document.documentMode || document.documentMode < 9);
-
- if (b.length == 3 && b[isOldIE ? 2 : 1])
- bStyle = b[isOldIE ? 2 : 1];
- else if (!bStyle || bStyle == 'none')
- bStyle = 'solid';
- if (b.length == 3 && b[isIE ? 0 : 2])
- bColor = b[isOldIE ? 0 : 2];
- else if (!bColor || bColor == 'none')
- bColor = 'black';
- img.style.border = v + 'px ' + bStyle + ' ' + bColor;
- }
- }
- }
-
- // Handle hspace
- if (ty == 'hspace') {
- dom.setStyle(img, 'marginLeft', '');
- dom.setStyle(img, 'marginRight', '');
-
- v = f.hspace.value;
- if (v) {
- img.style.marginLeft = v + 'px';
- img.style.marginRight = v + 'px';
- }
- }
-
- // Handle vspace
- if (ty == 'vspace') {
- dom.setStyle(img, 'marginTop', '');
- dom.setStyle(img, 'marginBottom', '');
-
- v = f.vspace.value;
- if (v) {
- img.style.marginTop = v + 'px';
- img.style.marginBottom = v + 'px';
- }
- }
-
- // Merge
- dom.get('style').value = dom.serializeStyle(dom.parseStyle(img.style.cssText), 'img');
- }
- },
-
- changeMouseMove : function() {
- },
-
- showPreviewImage : function(u, st) {
- if (!u) {
- tinyMCEPopup.dom.setHTML('prev', '');
- return;
- }
-
- if (!st && tinyMCEPopup.getParam("advimage_update_dimensions_onchange", true))
- this.resetImageData();
-
- u = tinyMCEPopup.editor.documentBaseURI.toAbsolute(u);
-
- if (!st)
- tinyMCEPopup.dom.setHTML('prev', '<img id="previewImg" src="' + u + '" border="0" onload="ImageDialog.updateImageData(this);" onerror="ImageDialog.resetImageData();" />');
- else
- tinyMCEPopup.dom.setHTML('prev', '<img id="previewImg" src="' + u + '" border="0" onload="ImageDialog.updateImageData(this, 1);" />');
- }
-};
-
-ImageDialog.preInit();
-tinyMCEPopup.onInit.add(ImageDialog.init, ImageDialog);
diff --git a/program/js/tiny_mce/plugins/advimage/langs/ar_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/ar_dlg.js
deleted file mode 100644
index e6a5eb8cb..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/ar_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ar.advimage_dlg',{"image_list":"Image list","align_right":"\u064a\u0645\u064a\u0646","align_left":"\u064a\u0633\u0627\u0631","align_textbottom":"\u0627\u0633\u0641\u0644 \u0627\u0644\u0646\u0635","align_texttop":"\u0627\u0639\u0644\u0649 \u0627\u0644\u0646\u0635","align_bottom":"\u0627\u0633\u0641\u0644","align_middle":"\u0648\u0633\u0637","align_top":"\u0627\u0644\u0627\u0639\u0644\u0649","align_baseline":"Baseline",align:"\u0645\u062d\u0627\u0632\u0627\u0647",hspace:"\u0627\u0644\u0645\u0633\u0627\u0641\u0647 \u0627\u0644\u0627\u0641\u0642\u064a\u0647",vspace:"\u0627\u0644\u0645\u0633\u0627\u0641\u0647 \u0627\u0644\u0631\u0623\u0633\u064a\u0647",dimensions:"\u0627\u0644\u0623\u0628\u0639\u0627\u062f",border:"\u0627\u0644\u0625\u0637\u0627\u0631",list:"\u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0635\u0648\u0631",alt:"\u0648\u0635\u0641 \u0627\u0644\u0635\u0648\u0631\u0647",src:"\u0639\u0646\u0648\u0627\u0646 URL \u0644\u0644\u0635\u0648\u0631\u0647","dialog_title":"Insert/edit image","missing_alt":"Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.","example_img":"Appearance preview image",misc:"Miscellaneous",mouseout:"for mouse out",mouseover:"for mouse over","alt_image":"Alternative image","swap_image":"Swap image",map:"Image map",id:"Id",rtl:"Right to left",ltr:"Left to right",classes:"Classes",style:"Style","long_desc":"Long description link",langcode:"Language code",langdir:"Language direction","constrain_proportions":"Constrain proportions",preview:"\u0645\u0634\u0627\u0647\u062f\u0647",title:"\u0627\u0644\u0639\u0646\u0648\u0627\u0646",general:"\u0639\u0627\u0645","tab_advanced":"\u062e\u064a\u0627\u0631\u0627\u062a \u0645\u062a\u0642\u062f\u0645\u0647","tab_appearance":"\u0627\u0644\u0645\u0638\u0647\u0631","tab_general":"\u0639\u0627\u0645",width:"\u0627\u0644\u0639\u0631\u0636",height:"\u0627\u0644\u0627\u0631\u062a\u0641\u0627\u0639"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/az_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/az_dlg.js
deleted file mode 100644
index beebea126..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/az_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('az.advimage_dlg',{"image_list":"\u015e\u0259kil siyah\u0131s\u0131","align_right":"Sa\u011fa","align_left":"Sola","align_textbottom":"M\u0259tn a\u015fa\u011f\u0131s\u0131 il\u0259","align_texttop":"M\u0259tn yuxar\u0131 il\u0259","align_bottom":"A\u015fa\u011f\u0131 il\u0259","align_middle":"M\u0259rk\u0259z il\u0259","align_top":"Yuxar\u0131 il\u0259","align_baseline":"Bin\u00f6vr\u0259 il\u0259",align:"Tarazla\u015fd\u0131rma",hspace:"\u00dcf\u00fcqi f\u0259za",vspace:"\u015eaquli f\u0259za",dimensions:"\u00d6l\u00e7\u00fcl\u0259r",border:"S\u0259rh\u0259d",list:"\u015e\u0259kil siyah\u0131s\u0131",alt:"\u015e\u0259kil t\u0259sviri",src:"\u015e\u0259kil \u00fcnvan\u0131","dialog_title":"\u015e\u0259kil \u0259lav\u0259/redakt\u0259 et","missing_alt":"\u018fminsiniz ki, \u015f\u0259kl\u0259 t\u0259svir yazmadan davam etm\u0259k ist\u0259yirsiniz? T\u0259svirsiz \u015f\u0259kil i\u015f qabiliyy\u0259ti a\u015fa\u011f\u0131 olan v\u0259 ya \u015f\u0259klin s\u00f6nd\u00fcr\u00fclm\u00fc\u015f funksiyas\u0131 il\u0259 m\u0259tn b\u0259l\u0259d\u00e7isind\u0259n istifad\u0259 ed\u0259n istifad\u0259\u00e7il\u0259r\u0259 \u0259l\u00e7atmaz ola bil\u0259r.","example_img":"Xarici g\u00f6r\u00fcn\u00fc\u015f\u0259 ilkin bax\u0131\u015f",misc:"M\u00fcxt\u0259lif",mouseout:"si\u00e7an\u0131 uzaqla\u015fd\u0131rd\u0131qda",mouseover:"si\u00e7an\u0131 g\u0259tirdikd\u0259","alt_image":"Alternativ \u015f\u0259kil","swap_image":"\u015e\u0259kli d\u0259yi\u015f",map:"X\u0259rit\u0259-\u015f\u0259kil",id:"\u0130dentifikator",rtl:"Sa\u011fda-sola",ltr:"Solda-sa\u011fa",classes:"Sinifl\u0259r",style:"Stil","long_desc":"\u018ftrafl\u0131 t\u0259svir\u0259 ke\u00e7id",langcode:"Dil kodu",langdir:"Dilin istiqam\u0259tl\u0259ndirilm\u0259si","constrain_proportions":"Proporsiyalar\u0131 saxla",preview:"\u0130lkin bax\u0131\u015f",title:"Ad\u0131",general:"\u00dcmumi","tab_advanced":"\u018flav\u0259","tab_appearance":"G\u00f6r\u00fcn\u00fc\u015f","tab_general":"\u00dcmumi",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/bg_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/bg_dlg.js
deleted file mode 100644
index 762154144..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/bg_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bg.advimage_dlg',{"image_list":"\u0421\u043f\u0438\u0441\u044a\u043a \u0441 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438","align_right":"\u0414\u044f\u0441\u043d\u043e","align_left":"\u041b\u044f\u0432\u043e","align_textbottom":"\u0422\u0435\u043a\u0441\u0442 \u0434\u043e\u043b\u0443","align_texttop":"\u0422\u0435\u043a\u0441\u0442 \u0433\u043e\u0440\u0435","align_bottom":"\u0414\u043e\u043b\u0443","align_middle":"\u0426\u0435\u043d\u0442\u044a\u0440","align_top":"\u0413\u043e\u0440\u0435","align_baseline":"\u0411\u0430\u0437\u043e\u0432\u0430 \u043b\u0438\u043d\u0438\u044f",align:"\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435",hspace:"\u0425\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u043d\u043e \u0440\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435",vspace:"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u043d\u043e \u0440\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435",dimensions:"\u0420\u0430\u0437\u043c\u0435\u0440\u0438",border:"\u0420\u0430\u043c\u043a\u0430",list:"\u0421\u043f\u0438\u0441\u044a\u043a \u0441 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438",alt:"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430",src:"URL \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430","dialog_title":"\u0412\u043c\u044a\u043a\u043d\u0438/\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430","missing_alt":"\u0421\u0438\u0433\u0443\u0440\u0435\u043d \u043b\u0438 \u0441\u0442\u0435 \u0447\u0435 \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u0434\u0430 \u043f\u0440\u043e\u0434\u044a\u043b\u0436\u0438\u0442\u0435 \u0431\u0435\u0437 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u0442\u0430? \u0411\u0435\u0437 \u043d\u0435\u0433\u043e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u0442\u0430 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0435 \u043d\u0435\u0434\u043e\u0441\u0442\u044a\u043f\u043d\u0430 \u0437\u0430 \u043d\u044f\u043a\u043e\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0438 \u0441 \u043d\u0435\u0434\u044a\u0437\u0438, \u0438\u043b\u0438 \u0437\u0430 \u0442\u0435\u0437\u0438 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0449\u0438 \u0442\u0435\u043a\u0441\u0442\u043e\u0432 \u0431\u0440\u0430\u0443\u0437\u044a\u0440, \u0438\u043b\u0438 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0449\u0438 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0441 \u0438\u0437\u043a\u043b\u044e\u0447\u0435\u043d\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438.","example_img":"\u041f\u0440\u0435\u0433\u043b\u0435\u0434 \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u0442\u0430",misc:"\u0420\u0430\u0437\u043d\u0438",mouseout:"\u0437\u0430 mouse out",mouseover:"\u0437\u0430 mouse over","alt_image":"\u0420\u0435\u0437\u0435\u0440\u0432\u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430","swap_image":"\u0421\u043c\u0435\u043d\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430",map:"\u041a\u0430\u0440\u0442\u0438\u043d\u0430 \u043a\u0430\u0440\u0442\u0430",id:"Id",rtl:"\u041e\u0442\u0434\u044f\u0441\u043d\u043e \u043d\u0430 \u043b\u044f\u0432\u043e",ltr:"\u041e\u0442\u043b\u044f\u0432\u043e \u043d\u0430 \u0434\u044f\u0441\u043d\u043e",classes:"\u041a\u043b\u0430\u0441\u043e\u0432\u0435",style:"\u0421\u0442\u0438\u043b","long_desc":"\u0425\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430 \u043a\u044a\u043c \u0434\u044a\u043b\u0433\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435",langcode:"\u041a\u043e\u0434 \u043d\u0430 \u0435\u0437\u0438\u043a\u0430",langdir:"\u041f\u043e\u0441\u043e\u043a\u0430 \u043d\u0430 \u0435\u0437\u0438\u043a\u0430","constrain_proportions":"\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0438 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u0438\u0442\u0435",preview:"\u041f\u0440\u0435\u0433\u043b\u0435\u0434",title:"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435",general:"\u041e\u0431\u0449\u0438","tab_advanced":"\u0417\u0430 \u043d\u0430\u043f\u0440\u0435\u0434\u043d\u0430\u043b\u0438","tab_appearance":"\u0412\u044a\u043d\u0448\u0435\u043d \u0432\u0438\u0434","tab_general":"\u041e\u0431\u0449\u0438",width:"\u0428\u0438\u0440\u0438\u043d\u0430",height:"\u0412\u0438\u0441\u043e\u0447\u0438\u043d\u0430"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/bn_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/bn_dlg.js
deleted file mode 100644
index d105bc52d..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/bn_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bn.advimage_dlg',{"image_list":"Image list","align_right":"Right","align_left":"Left","align_textbottom":"Text bottom","align_texttop":"Text top","align_bottom":"Bottom","align_middle":"Middle","align_top":"Top","align_baseline":"Baseline",align:"Alignment",hspace:"Horizontal space",vspace:"Vertical space",dimensions:"Dimensions",border:"Border",list:"Image list",alt:"Image description",src:"Image URL","dialog_title":"Insert/edit image","missing_alt":"Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.","example_img":"Appearance preview image",misc:"Miscellaneous",mouseout:"for mouse out",mouseover:"for mouse over","alt_image":"Alternative image","swap_image":"Swap image",map:"Image map",id:"Id",rtl:"Right to left",ltr:"Left to right",classes:"Classes",style:"Style","long_desc":"Long description link",langcode:"Language code",langdir:"Language direction","constrain_proportions":"Constrain proportions",preview:"Preview",title:"Title",general:"General","tab_advanced":"Advanced","tab_appearance":"Appearance","tab_general":"General",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/br_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/br_dlg.js
deleted file mode 100644
index 13a5a0a4c..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/br_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('br.advimage_dlg',{"image_list":"Lista de imagens","align_right":"Direita","align_left":"Esquerda","align_textbottom":"Base do texto","align_texttop":"Topo do texto","align_bottom":"Abaixo","align_middle":"Meio","align_top":"Topo","align_baseline":"Sobre a linha de texto",align:"Alinhamento",hspace:"Espa\u00e7o horizontal",vspace:"Espa\u00e7o vertical",dimensions:"Dimens\u00f5es",border:"Limite",list:"Lista de imagens",alt:"Descri\u00e7\u00e3o da imagem",src:"Endere\u00e7o da imagem","dialog_title":"Inserir/editar imagem","missing_alt":"Tem certeza que deseja continuar sem acrescentar uma descri\u00e7\u00e3o \u00e0\u00a0imagem? (Isto pode gerar problemas de acessibilidade em alguns navegadores)","example_img":"Pr\u00e9-visualiza\u00e7\u00e3o",misc:"Misto",mouseout:"mouseout",mouseover:"mouseover","alt_image":"Imagem alternativa","swap_image":"Trocar imagem",map:"Mapa de imagem",id:"Id",rtl:"Da direita para a esquerda",ltr:"Da esquerda para a direita",classes:"Classes",style:"Estilo","long_desc":"Descri\u00e7\u00e3o extensa",langcode:"C\u00f3digo de idioma",langdir:"Dire\u00e7\u00e3o do texto","constrain_proportions":"Manter propor\u00e7\u00f5es",preview:"Pr\u00e9-Visualiza\u00e7\u00e3o",title:"T\u00edtulo",general:"Geral","tab_advanced":"Avan\u00e7ado","tab_appearance":"Apar\u00eancia","tab_general":"Geral",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/bs_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/bs_dlg.js
deleted file mode 100644
index 0cde4aed8..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/bs_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bs.advimage_dlg',{"image_list":"Lista slika","align_right":"Desno","align_left":"Lijevo","align_textbottom":"Dno teksta","align_texttop":"Vrh teksta","align_bottom":"Dno","align_middle":"Sredina","align_top":"Vrh","align_baseline":"Osnovna linija",align:"Poravnavanje",hspace:"Vodoravni razmak",vspace:"Okomiti razmak",dimensions:"Dimenzije",border:"Obrub",list:"Lista slika",alt:"Opis slike",src:"URL slike","dialog_title":"Umetni/uredi sliku","missing_alt":"Jeste li sigurni da \u017eelite izostaviti opis slike? Slika mo\u017ee biti nedostupna ljudima s pote\u0161ko\u0107ama ili onima koji koriste preglednike bez prikaza slika.","example_img":"Prikaz slike",misc:"Razno",mouseout:"za izlazak mi\u0161a van slike",mouseover:"za prelazak mi\u0161a preko slike","alt_image":"Alternativna slika","swap_image":"Izmjenjiva slika",map:"Karta slike",id:"Id",rtl:"S desna na lijevo",ltr:"S lijeva na desno",classes:"Klase",style:"Stil","long_desc":"Poveznica dugog opisa",langcode:"Kod jezika",langdir:"Smjer jezika","constrain_proportions":"Zadr\u017ei proporcije",preview:"Prikaz",title:"Naslov",general:"Osnovno","tab_advanced":"Napredno","tab_appearance":"Izgled","tab_general":"Osnovno",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/ca_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/ca_dlg.js
deleted file mode 100644
index 14250bdfb..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/ca_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ca.advimage_dlg',{"image_list":"Llista d\'imatges","align_right":"A la dreta","align_left":"A l\'esquerra","align_textbottom":"Baix del text","align_texttop":"Dalt del text","align_bottom":"Inferior","align_middle":"Mitjan lloc","align_top":"Superior","align_baseline":"L\u00ednia de base",align:"Alineaci\u00f3",hspace:"Espai horitzontal",vspace:"Espai vertical",dimensions:"Dimensions",border:"Vora",list:"Llista de la imatge",alt:"Descripci\u00f3 de la imatge",src:"URL de la imatge","dialog_title":"Insereix/edita imatge","missing_alt":"Esteu segur que voleu continuar sense incloure una descripci\u00f3 de la imatge? La imatge pot no ser accessible a usuaris amb discapacitats, o a aquells que utilitzin navegadors de text o que naveguin amb les imatges desactivades.","example_img":"Aparen\u00e7a imatge previsualitzada",misc:"Miscel\u00b7l\u00e0nia",mouseout:"quan el ratol\u00ed marxa",mouseover:"quan el ratol\u00ed arriba","alt_image":"Imatge alternativa","swap_image":"Canvia imatge",map:"Mapa de la imatge",id:"Id",rtl:"De dreta a esquerra",ltr:"D\'esquerra a dreta",classes:"Classes",style:"Estil","long_desc":"Enlla\u00e7 a la descripci\u00f3 llarga",langcode:"Codi de l\'idioma",langdir:"Direcci\u00f3 de l\'idioma","constrain_proportions":"Mant\u00e9 la proporci\u00f3",preview:"Previsualitzaci\u00f3",title:"T\u00edtol",general:"General","tab_advanced":"Avan\u00e7at","tab_appearance":"Aparen\u00e7a","tab_general":"General",width:"Amplada",height:"Al\u00e7ada"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/cs_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/cs_dlg.js
deleted file mode 100644
index cb9cb5878..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/cs_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('cs.advimage_dlg',{"image_list":"Seznam obr\u00e1zk\u016f","align_right":"Vpravo","align_left":"Vlevo","align_textbottom":"Se spodkem \u0159\u00e1dku","align_texttop":"S vrchem \u0159\u00e1dku","align_bottom":"Dol\u016f","align_middle":"Na st\u0159ed \u0159\u00e1dku","align_top":"Nahoru","align_baseline":"Na z\u00e1kladnu",align:"Zarovn\u00e1n\u00ed",hspace:"Horizont\u00e1ln\u00ed odsazen\u00ed",vspace:"Vertik\u00e1ln\u00ed odsazen\u00ed",dimensions:"Rozm\u011bry",border:"R\u00e1me\u010dek",list:"Seznam obr\u00e1zk\u016f",alt:"Popis obr\u00e1zku",src:"URL obr\u00e1zku","dialog_title":"Vlo\u017eit/upravit obr\u00e1zek","missing_alt":"Skute\u010dn\u011b chcete pokra\u010dovat bez vlo\u017een\u00e9ho popisu obr\u00e1zku? Bez popisu m\u016f\u017ee b\u00fdt obr\u00e1zek nep\u0159\u00edstupn\u00fd u\u017eivatel\u016fm se zrakov\u00fdm posti\u017een\u00edm, u\u017eivatel\u016fm textov\u00fdch prohl\u00ed\u017ee\u010d\u016f nebo u\u017eivatel\u016fm, kte\u0159\u00ed maj\u00ed vypnuto zobrazov\u00e1n\u00ed obr\u00e1zk\u016f.","example_img":"P\u0159\u00edklad obr\u00e1zku",misc:"R\u016fzn\u00e9",mouseout:"Po odjet\u00ed my\u0161i...",mouseover:"P\u0159i najet\u00ed my\u0161i...","alt_image":"Alternativn\u00ed obr\u00e1zek","swap_image":"P\u0159epnout obr\u00e1zek",map:"Obr\u00e1zkov\u00e1 mapa",id:"ID",rtl:"Zprava doleva",ltr:"Zleva doprava",classes:"T\u0159\u00eddy",style:"Styl","long_desc":"Dlouh\u00fd popis",langcode:"K\u00f3d jazyka",langdir:"Sm\u011br textu","constrain_proportions":"Zachovat proporce",preview:"N\u00e1hled",title:"Titulek",general:"Obecn\u00e9 parametry","tab_advanced":"Roz\u0161\u00ed\u0159en\u00e9","tab_appearance":"Vzhled","tab_general":"Obecn\u00e9",width:"\u0160\u00ed\u0159ka",height:"V\u00fd\u0161ka"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/cy_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/cy_dlg.js
deleted file mode 100644
index 5a1ad955a..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/cy_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('cy.advimage_dlg',{"image_list":"Rhestr delweddau","align_right":"De","align_left":"Chwith","align_textbottom":"Gwaelod testun","align_texttop":"Pen testun","align_bottom":"Gwaelod","align_middle":"Canol","align_top":"Pen","align_baseline":"Gwaelodlin",align:"Aliniad",hspace:"Gofod llorweddol",vspace:"Gofod fertigol",dimensions:"Dimensiynau",border:"Border",list:"Rhestr delweddau",alt:"Disgrifiad delwedd",src:"URL delwedd","dialog_title":"Mewnosod/golygu delwedd","missing_alt":"A ydych chi\'n si\u0175r eich bod eisiau parhau heb cynnwys Disgrifiad Delwedd? Hebddo fo ni fydd y delwedd yn hygyrchol i ddefnyddwyr gyda anableddau, neu sy\'n defnyddio porwr testun, neu sy\'n pori\'r we gyda delweddau wedi\'u diffodd.","example_img":"Delwedd rhagolygiad ymddangosiad",misc:"Amrywiol",mouseout:"ar gyfer llygoden allan",mouseover:"ar gyfer llygoden drosti","alt_image":"Delwedd arall","swap_image":"Cyfnewid delwedd",map:"Map delweddau",id:"Id",rtl:"De i\'r chwith",ltr:"Chwith i\'r dde",classes:"Dosbarthiadau",style:"Arddull","long_desc":"Cyswllt disgrifiad hir",langcode:"Cod iaith",langdir:"Cyfeiriad iaith","constrain_proportions":"Cynfyngu cyfraneddau",preview:"Rhagolwg",title:"Teitl",general:"Cyffredinol","tab_advanced":"Uwch","tab_appearance":"Ymddangosiad","tab_general":"Cyffredinol",width:"Lled",height:"Uchder"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/da_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/da_dlg.js
deleted file mode 100644
index 66aa88be9..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/da_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('da.advimage_dlg',{"image_list":"Billedliste","align_right":"H\u00f8jre","align_left":"Venstre","align_textbottom":"Tekstbund","align_texttop":"Teksttop","align_bottom":"Bund","align_middle":"Midte","align_top":"Top","align_baseline":"Grundlinje",align:"Justering",hspace:"Horisontal afstand",vspace:"Vertikal afstand",dimensions:"Dimensioner",border:"Kant",list:"Billedliste",alt:"Billedbeskrivelse",src:"Billed-URL","dialog_title":"Inds\u00e6t/rediger billede","missing_alt":"Er du sikker p\u00e5, at du vil forts\u00e6tte uden at inkludere en billedebeskrivelse? Uden denne er billedet m\u00e5ske ikke tilg\u00e6ngeligt for nogle brugere med handicaps, eller for dem der bruger en tekstbrowser, eller som browser internettet med billeder sl\u00e5et fra.","example_img":"Forh\u00e5ndsvisning af billede",misc:"Diverse",mouseout:"for mus-ud",mouseover:"for mus-over","alt_image":"Alternativt billede","swap_image":"Byt billede",map:"Billede map",id:"Id",rtl:"H\u00f8jre til venstre",ltr:"Venstre til h\u00f8jre",classes:"Klasser",style:"Stil","long_desc":"Lang beskrivelseslink",langcode:"Sprogkode",langdir:"Sprogretning","constrain_proportions":"Bibehold proportioner",preview:"Vis",title:"Titel",general:"Generelt","tab_advanced":"Avanceret","tab_appearance":"Udseende","tab_general":"Generelt",width:"Bredde",height:"H\u00f8jde"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/de_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/de_dlg.js
deleted file mode 100644
index fc0f6d1e5..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/de_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('de.advimage_dlg',{"image_list":"Bilderliste","align_right":"Rechts","align_left":"Links","align_textbottom":"Unten im Text","align_texttop":"Oben im Text","align_bottom":"Unten","align_middle":"Mittig","align_top":"Oben","align_baseline":"Zeile",align:"Ausrichtung",hspace:"Horizontaler Abstand",vspace:"Vertikaler Abstand",dimensions:"Ausma\u00dfe",border:"Rahmen",list:"Bilderliste",alt:"Beschreibung",src:"Adresse","dialog_title":"Bild einf\u00fcgen/ver\u00e4ndern","missing_alt":"Wollen Sie wirklich keine Beschreibung eingeben? Bestimmte Benutzer mit k\u00f6rperlichen Einschr\u00e4nkungen k\u00f6nnen so nicht darauf zugreifen, ebenso solche, die einen Textbrowser benutzen oder die Anzeige von Bildern deaktiviert haben.","example_img":"Vorschau auf das Aussehen",misc:"Verschiedenes",mouseout:"bei keinem Mauskontakt",mouseover:"bei Mauskontakt","alt_image":"Alternatives Bild","swap_image":"Bild austauschen",map:"Image-Map",id:"ID",rtl:"Rechts nach links",ltr:"Links nach rechts",classes:"Klassen",style:"Format","long_desc":"Ausf\u00fchrliche Beschreibung",langcode:"Sprachcode",langdir:"Schriftrichtung","constrain_proportions":"Seitenverh\u00e4ltnis beibehalten",preview:"Vorschau",title:"Titel",general:"Allgemein","tab_advanced":"Erweitert","tab_appearance":"Aussehen","tab_general":"Allgemein",width:"Breite",height:"H\u00f6he"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/el_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/el_dlg.js
deleted file mode 100644
index 4caf910d3..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/el_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('el.advimage_dlg',{"image_list":"\u039b\u03af\u03c3\u03c4\u03b1 \u03b5\u03b9\u03ba\u03cc\u03bd\u03c9\u03bd","align_right":"\u0394\u03b5\u03be\u03b9\u03ac","align_left":"\u0391\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac","align_textbottom":"\u039a\u03b5\u03af\u03bc\u03b5\u03bd\u03bf \u03ba\u03ac\u03c4\u03c9","align_texttop":"\u039a\u03b5\u03af\u03bc\u03b5\u03bd\u03bf \u03c0\u03ac\u03bd\u03c9","align_bottom":"\u039a\u03ac\u03c4\u03c9","align_middle":"\u039c\u03ad\u03c3\u03b7","align_top":"\u03a0\u03ac\u03bd\u03c9","align_baseline":"\u0393\u03c1\u03b1\u03bc\u03bc\u03ae \u03c3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7\u03c2 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ac\u03c4\u03c9\u03bd",align:"\u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7",hspace:"\u0391\u03c0\u03cc\u03c3\u03c4\u03b1\u03c3\u03b7 \u03bf\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03b1",vspace:"\u0391\u03c0\u03cc\u03c3\u03c4\u03b1\u03c3\u03b7 \u03ba\u03ac\u03b8\u03b5\u03c4\u03b7",dimensions:"\u0394\u03b9\u03b1\u03c3\u03c4\u03ac\u03c3\u03b5\u03b9\u03c2",border:"\u03a0\u03bb\u03b1\u03af\u03c3\u03b9\u03bf",list:"\u039b\u03af\u03c3\u03c4\u03b1 \u03b5\u03b9\u03ba\u03cc\u03bd\u03c9\u03bd",alt:"\u03a0\u03b5\u03c1\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2",src:"\u0394\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae URL \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2","dialog_title":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2","missing_alt":"\u03a3\u03af\u03b3\u03bf\u03c5\u03c1\u03b1 \u03b8\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b5\u03c7\u03af\u03c3\u03b5\u03c4\u03b5 \u03c7\u03c9\u03c1\u03af\u03c2 \u03c0\u03b5\u03c1\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2; \u03a7\u03c9\u03c1\u03af\u03c2 \u03b1\u03c5\u03c4\u03ae\u03bd\u03b7 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1 \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03bc\u03b7\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03c0\u03c1\u03bf\u03c3\u03b2\u03ac\u03c3\u03b9\u03bc\u03b7 \u03c3\u03b5 \u03ba\u03ac\u03c0\u03bf\u03b9\u03bf\u03c5\u03c2 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b5\u03c2 \u03bc\u03b5 \u03c0\u03c1\u03bf\u03b2\u03bb\u03ae\u03bc\u03b1\u03c4\u03b1, \u03ae \u03c3\'\u03b1\u03c5\u03c4\u03bf\u03cd\u03c2 \u03c0\u03bf\u03c5 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03bf\u03cd\u03bd \u03c6\u03c5\u03bb\u03bb\u03bf\u03bc\u03b5\u03c4\u03c1\u03b7\u03c4\u03ae \u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5, \u03ae \u03b2\u03bb\u03ad\u03c0\u03bf\u03c5\u03bd \u03c4\u03bf \u0399\u03bd\u03c4\u03b5\u03c1\u03bd\u03b5\u03c4 \u03c7\u03c9\u03c1\u03af\u03c2 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b5\u03c2.","example_img":"\u0394\u03bf\u03ba\u03b9\u03bc\u03b1\u03c3\u03c4\u03b9\u03ba\u03ae \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1",misc:"\u0394\u03b9\u03ac\u03c6\u03bf\u03c1\u03b1",mouseout:"\u03b3\u03b9\u03b1 mouse out",mouseover:"\u03b3\u03b9\u03b1 mouse over","alt_image":"\u0395\u03bd\u03b1\u03bb\u03bb\u03b1\u03ba\u03c4\u03b9\u03ba\u03ae \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1","swap_image":"\u0391\u03bd\u03c4\u03b1\u03bb\u03bb\u03b1\u03b3\u03ae \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2",map:"\u03a7\u03ac\u03c1\u03c4\u03b7\u03c2 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2",id:"Id",rtl:"\u0394\u03b5\u03be\u03b9\u03ac \u03c0\u03c1\u03bf\u03c2 \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac",ltr:"\u0391\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac \u03c0\u03c1\u03bf\u03c2 \u03b4\u03b5\u03be\u03b9\u03ac",classes:"\u039a\u03bb\u03ac\u03c3\u03b5\u03b9\u03c2",style:"\u03a3\u03c4\u03c5\u03bb","long_desc":"\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf\u03c2 \u03c0\u03bb\u03ae\u03c1\u03bf\u03c5\u03c2 \u03c0\u03b5\u03c1\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2",langcode:"\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03b3\u03bb\u03ce\u03c3\u03c3\u03b1\u03c2",langdir:"\u039a\u03b1\u03c4\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 \u03b3\u03bb\u03ce\u03c3\u03c3\u03b1\u03c2","constrain_proportions":"\u0394\u03b9\u03b1\u03c4\u03ae\u03c1\u03b7\u03c3\u03b7 \u03b1\u03bd\u03b1\u03bb\u03bf\u03b3\u03af\u03b1\u03c2 \u03c0\u03bb. - \u03cd\u03c8\u03bf\u03c5\u03c2",preview:"\u03a0\u03c1\u03bf\u03b5\u03c0\u03b9\u03c3\u03ba\u03cc\u03c0\u03b7\u03c3\u03b7",title:"\u03a4\u03af\u03c4\u03bb\u03bf\u03c2",general:"\u0393\u03b5\u03bd\u03b9\u03ba\u03ac","tab_advanced":"\u0393\u03b9\u03b1 \u03c0\u03c1\u03bf\u03c7\u03c9\u03c1\u03b7\u03bc\u03ad\u03bd\u03bf\u03c5\u03c2","tab_appearance":"\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7","tab_general":"\u0393\u03b5\u03bd\u03b9\u03ba\u03ac",width:"\u03a0\u03bb\u03ac\u03c4\u03bf\u03c2",height:"\u038e\u03c8\u03bf\u03c2"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/en_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/en_dlg.js
deleted file mode 100644
index 5f122e2cd..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/en_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('en.advimage_dlg',{"image_list":"Image List","align_right":"Right","align_left":"Left","align_textbottom":"Text Bottom","align_texttop":"Text Top","align_bottom":"Bottom","align_middle":"Middle","align_top":"Top","align_baseline":"Baseline",align:"Alignment",hspace:"Horizontal Space",vspace:"Vertical Space",dimensions:"Dimensions",border:"Border",list:"Image List",alt:"Image Description",src:"Image URL","dialog_title":"Insert/Edit Image","missing_alt":"Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.","example_img":"Appearance Preview Image",misc:"Miscellaneous",mouseout:"For Mouse Out",mouseover:"For Mouse Over","alt_image":"Alternative Image","swap_image":"Swap Image",map:"Image Map",id:"ID",rtl:"Right to Left",ltr:"Left to Right",classes:"Classes",style:"Style","long_desc":"Long Description Link",langcode:"Language Code",langdir:"Language Direction","constrain_proportions":"Constrain Proportions",preview:"Preview",title:"Title",general:"General","tab_advanced":"Advanced","tab_appearance":"Appearance","tab_general":"General",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/eo_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/eo_dlg.js
deleted file mode 100644
index b3ea0b2a4..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/eo_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('eo.advimage_dlg',{"image_list":"Listo de bildoj","align_right":"Dekstre","align_left":"Maldekstre","align_textbottom":"Tekstosubo","align_texttop":"Tekstosupro","align_bottom":"Sube","align_middle":"Meze","align_top":"Supre","align_baseline":"Sur tekstlinio",align:"Liniigo",hspace:"Horizontala spaco",vspace:"Vertikala spaco",dimensions:"Dimensioj",border:"Bordero",list:"Listo de bildoj",alt:"Priskribo de bildo",src:"Adreso de bildo","dialog_title":"Enmeti/redakti bildon","missing_alt":"\u0108u vi certas ke vi volas da\u016drigi sen aldoni priskribon al la bildo? (Tio povas ka\u016dzi problemojn pri alireblo en iuj retumiloj)","example_img":"Anta\u016dvido",misc:"Cetera",mouseout:"Muso for",mouseover:"Muso \u015dvebado","alt_image":"Bildalternativo","swap_image":"\u015can\u011di bildon",map:"Bildomapo",id:"Id",rtl:"Dekstre-Maldekstren",ltr:"Maldekstre-Dekstren",classes:"Klasoj",style:"Stilo","long_desc":"Longa priskribo",langcode:"Lingvokodo",langdir:"Tekstodirekto","constrain_proportions":"Konservi proporcion",preview:"Anta\u016dvido",title:"Titolo",general:"\u011ceneralaj","tab_advanced":"Spertaj","tab_appearance":"Aspekto","tab_general":"\u011ceneralaj",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/es_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/es_dlg.js
deleted file mode 100644
index 6b6a5130c..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/es_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('es.advimage_dlg',{"image_list":"Lista de imagen","align_right":"Derecha","align_left":"Izquierda","align_textbottom":"Texto abajo","align_texttop":"Texto arriba","align_bottom":"Debajo","align_middle":"Medio","align_top":"Arriba","align_baseline":"L\u00ednea base",align:"Alineaci\u00f3n",hspace:"Espacio horizontal",vspace:"Espacio vertical",dimensions:"Dimensiones",border:"Bordes",list:"Lista de imagen",alt:"Descripci\u00f3n de la imagen",src:"URL de la imagen","dialog_title":"Insertar/editar imagen","missing_alt":" \u00bfEsta seguro de continuar sin introducir una descripci\u00f3n a la imagen? Sin ella puede no ser accesible para usuarios con discapacidades, o para aquellos que usen navegadores de modo texto, o tengan deshabilitadas las im\u00e1genes de la p\u00e1gina.","example_img":"Vista previa de la imagen",misc:"Miscel\u00e1neo",mouseout:"para mouseout",mouseover:"para mouseover","alt_image":"Imagen alternativa","swap_image":"Intercambiar imagen",map:"Mapa de imagen",id:"Id",rtl:"Derecha a izquierda",ltr:"Izquierda a derecha",classes:"Clases",style:"Estilos","long_desc":"V\u00ednculo para descripci\u00f3n larga",langcode:"C\u00f3digo del lenguaje",langdir:"Direcci\u00f3n del lenguaje","constrain_proportions":"Bloquear relaci\u00f3n de aspecto",preview:"Vista previa",title:"T\u00edtulo",general:"General","tab_advanced":"Avanzado","tab_appearance":"Apariencia","tab_general":"General",width:"Ancho",height:"Alto"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/et_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/et_dlg.js
deleted file mode 100644
index 0b2e77492..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/et_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('et.advimage_dlg',{"image_list":"Piltide nimekiri","align_right":"Paremal","align_left":"Vasakul","align_textbottom":"Tekst all","align_texttop":"Tekst \u00fcleval","align_bottom":"All","align_middle":"Keskel","align_top":"\u00dcleval","align_baseline":"Baas",align:"Joondus",hspace:"Horisontaalne vahe",vspace:"Vertikaalne vahe",dimensions:"M\u00f5\u00f5tmed",border:"Raam",list:"Piltide nimekiri",alt:"Pildi kirjeldus",src:"Pildi URL","dialog_title":"Sisesta/muuda pilti","missing_alt":"Oled kindel, et soovid j\u00e4tkata pildile kirjeldust lisamata?","example_img":"Eelvaate pildi v\u00e4limus",misc:"Mitmesugune",mouseout:"\u201eKursor maas\u201c",mouseover:"\u201eKursor peal\u201c","alt_image":"Alternatiivne pilt","swap_image":"Vaheta pilti",map:"Pildi kaart",id:"ID",rtl:"Paremalt vasakule",ltr:"Vasakult paremale",classes:"Klassid",style:"Stiil","long_desc":"Pikk kirjelduse link",langcode:"Keele kood",langdir:"Keele suund","constrain_proportions":"Piira proportioone",preview:"Eelvaade",title:"Pealkiri",general:"\u00dcldine","tab_advanced":"P\u00f5hjalikum","tab_appearance":"V\u00e4limus","tab_general":"\u00dcldine",width:"Laius",height:"K\u00f5rgus"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/eu_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/eu_dlg.js
deleted file mode 100644
index ea4132041..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/eu_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('eu.advimage_dlg',{"image_list":"Irudi-zerrenda","align_right":"Eskuinean","align_left":"Ezkerrean","align_textbottom":"Testua behean","align_texttop":"Testua goian","align_bottom":"Behean","align_middle":"Tartean","align_top":"Goian","align_baseline":"Oinarri-marra",align:"Alineazioa",hspace:"Tarte horizontala",vspace:"Tarte bertikala",dimensions:"Tamaina",border:"Inguruko marra",list:"Irudi-zerrenda",alt:"Irudiaren deskribapena",src:"Irudiaren URL helbidea","dialog_title":"Irudia txertatu/editatu","missing_alt":"Irudiaren deskribapena gehitu gabe jarraitu nahi duzu? Hau horrela, ezgaitasunak dituztenentzat edo testu nabigatzaile bat darabiltenentzat ez da irisgarria izango.","example_img":"Nola ikusiko den",misc:"Bestelakoak",mouseout:"xagua kentzen denean",mouseover:"xagua gainean dagoenean","alt_image":"Ordezko irudia","swap_image":"Irudia ordezkatu",map:"Irudi-mapa",id:"Id",rtl:"Eskuinetik ezkerrera",ltr:"Ezkerretik eskuinera",classes:"Klaseak",style:"Estiloa","long_desc":"Deskribapen luzearen lotura",langcode:"Hizkuntza-kodea",langdir:"Hizkuntzaren norabidea","constrain_proportions":"Proportzioak mantendu",preview:"Aurrebista",title:"Izenburua",general:"Orokorra","tab_advanced":"Aurreratua","tab_appearance":"Itxura","tab_general":"Orokorra",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/fa_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/fa_dlg.js
deleted file mode 100644
index a52e737d5..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/fa_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fa.advimage_dlg',{"image_list":"\u0644\u06cc\u0633\u062a \u062a\u0635\u0648\u06cc\u0631","align_right":"\u0631\u0627\u0633\u062a","align_left":"\u0686\u067e","align_textbottom":"\u0645\u062a\u0646 \u067e\u0627\u06cc\u06cc\u0646","align_texttop":"\u0645\u062a\u0646 \u0628\u0627\u0644\u0627","align_bottom":"\u067e\u0627\u06cc\u06cc\u0646","align_middle":"\u0648\u0633\u0637","align_top":"\u0628\u0627\u0644\u0627","align_baseline":"\u062e\u0637 \u067e\u0627\u06cc\u0647",align:"\u062a\u0631\u0627\u0632",hspace:"\u0641\u0627\u0635\u0644\u0647 \u0627\u0641\u0642\u06cc",vspace:"\u0641\u0627\u0635\u0644\u0647 \u0639\u0645\u0648\u062f\u06cc",dimensions:"\u0627\u0628\u0639\u0627\u062f",border:"\u062d\u0627\u0634\u06cc\u0647",list:"\u0644\u06cc\u0633\u062a \u062a\u0635\u0648\u06cc\u0631",alt:"\u062a\u0648\u0636\u06cc\u062d \u062a\u0635\u0648\u06cc\u0631",src:"\u0622\u062f\u0631\u0633 \u062a\u0635\u0648\u06cc\u0631","dialog_title":"\u062f\u0631\u062c/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u062a\u0635\u0648\u06cc\u0631","missing_alt":"\u0622\u06cc\u0627 \u0634\u0645\u0627 \u0627\u0632 \u0627\u062f\u0627\u0645\u0647 \u0628\u062f\u0648\u0646 \u0634\u0627\u0645\u0644 \u06a9\u0631\u062f\u0646 \u06cc\u06a9 \u062a\u0648\u0636\u06cc\u062d \u0628\u0631\u0627\u06cc \u062a\u0635\u0648\u06cc\u0631 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062f\u0627\u0631\u06cc\u062f\u061f \u0628\u062f\u0648\u0646 \u0622\u0646 \u0645\u0645\u06a9\u0646 \u0646\u06cc\u0633\u062a \u062a\u0635\u0627\u0648\u06cc\u0631 \u0628\u0631\u0627\u06cc \u0628\u0631\u062e\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646\u06cc \u06a9\u0647 \u0642\u0627\u0628\u0644\u06cc\u062a \u062f\u06cc\u062f\u0646 \u062a\u0635\u0627\u0648\u06cc\u0631 \u0631\u0627 \u0646\u062f\u0627\u0631\u0646\u062f \u060c \u06cc\u0627 \u0622\u0646\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0627\u0632 \u06cc\u06a9 \u0645\u0631\u0648\u0631\u06af\u0631 \u0645\u062a\u0646\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u0646\u062f \u060c \u06cc\u0627 \u062f\u0631 \u062d\u0627\u0644 \u062f\u06cc\u062f\u0646 \u0648\u0628 \u0628\u062f\u0648\u0646 \u062a\u0635\u0648\u06cc\u0631 \u0645\u06cc \u0628\u0627\u0634\u0646\u062f \u060c \u0642\u0627\u0628\u0644 \u062f\u0633\u062a\u06cc\u0627\u0628\u06cc \u0628\u0627\u0634\u062f.","example_img":"\u062a\u0635\u0648\u06cc\u0631 \u067e\u06cc\u0634 \u0646\u0645\u0627\u06cc\u0634 \u0638\u0627\u0647\u0631",misc:"\u0645\u062a\u0641\u0631\u0642\u0647",mouseout:"\u0628\u0631\u0627\u06cc \u0631\u0641\u062a\u0646 \u0645\u0648\u0633",mouseover:"\u0628\u0631\u0627\u06cc \u0622\u0645\u062f\u0646 \u0645\u0648\u0633","alt_image":"\u062a\u0635\u0648\u06cc\u0631 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646","swap_image":"\u062a\u0639\u0648\u06cc\u0636 \u062a\u0635\u0648\u06cc\u0631",map:"\u0646\u0642\u0634\u0647 \u062a\u0635\u0648\u06cc\u0631",id:"\u0634\u0646\u0627\u0633\u0647",rtl:"\u0631\u0627\u0633\u062a \u0628\u0647 \u0686\u067e",ltr:"\u0686\u067e \u0628\u0647 \u0631\u0627\u0633\u062a",classes:"\u06a9\u0644\u0627\u0633 \u0647\u0627",style:"\u0627\u0633\u062a\u0627\u06cc\u0644","long_desc":"\u0644\u06cc\u0646\u06a9 \u062a\u0648\u0636\u06cc\u062d \u0637\u0648\u0644\u0627\u0646\u06cc",langcode:"\u06a9\u062f \u0632\u0628\u0627\u0646",langdir:"\u062c\u0647\u062a \u0632\u0628\u0627\u0646","constrain_proportions":"\u062d\u0641\u0638 \u062a\u0646\u0627\u0633\u0628",preview:"\u067e\u06cc\u0634 \u0646\u0645\u0627\u06cc\u0634",title:"\u0639\u0646\u0648\u0627\u0646",general:"\u0639\u0645\u0648\u0645\u06cc","tab_advanced":"\u067e\u06cc\u0634\u0631\u0641\u062a\u0647","tab_appearance":"\u0638\u0627\u0647\u0631","tab_general":"\u0639\u0645\u0648\u0645\u06cc",width:"\u067e\u0647\u0646\u0627",height:"\u0627\u0631\u062a\u0641\u0627\u0639"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/fi_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/fi_dlg.js
deleted file mode 100644
index f85c1ec31..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/fi_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fi.advimage_dlg',{"image_list":"Kuvalista","align_right":"Oikealla","align_left":"Vasemmalla","align_textbottom":"Teksti alhaalla","align_texttop":"Teksti ylh\u00e4\u00e4ll\u00e4","align_bottom":"Alhaalla","align_middle":"Keskell\u00e4","align_top":"Ylh\u00e4\u00e4ll\u00e4","align_baseline":"Rivill\u00e4",align:"Tasaus",hspace:"vaakasuora tila",vspace:"pystysuora tila",dimensions:"Mitat",border:"Kehys",list:"Kuvalista",alt:"Kuvan kuvaus",src:"Kuvan URL","dialog_title":"Lis\u00e4\u00e4/muokkaa kuvaa","missing_alt":"Haluatko varmasti jatkaa lis\u00e4\u00e4m\u00e4tt\u00e4 kuvausta? Kuvauksen puuttuminen saattaa h\u00e4irit\u00e4 sellaisia, jotka k\u00e4ytt\u00e4v\u00e4t tekstipohjaista selainta tai ovat kytkeneet kuvien n\u00e4kymisen pois p\u00e4\u00e4lt\u00e4.","example_img":"Ulkoasun esikatselukuva",misc:"Sekalaiset",mouseout:"mouseoutille",mouseover:"mouseoverille","alt_image":"Vaihtoehtoinen kuva","swap_image":"Vaihda kuva",map:"Kuvakartta",id:"Id",rtl:"Oikealta vasemmalle",ltr:"Vasemmalta oikealle",classes:"Luokat",style:"Tyyli","long_desc":"Pitk\u00e4n kuvauksen linkki",langcode:"Kielen koodi",langdir:"Kielen suunta","constrain_proportions":"S\u00e4ilyt\u00e4 mittasuhteet",preview:"Esikatselu",title:"Otsikko",general:"Yleiset","tab_advanced":"Edistynyt","tab_appearance":"N\u00e4kyminen","tab_general":"Yleiset",width:"Leveys",height:"Korkeus"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/fr_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/fr_dlg.js
deleted file mode 100644
index 1479bf194..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/fr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fr.advimage_dlg',{"image_list":"Liste d\'images","align_right":"Droite (flottant)","align_left":"Gauche (flottant)","align_textbottom":"Texte en bas","align_texttop":"Texte en haut","align_bottom":"En bas","align_middle":"Au milieu","align_top":"En haut","align_baseline":"Normal",align:"Alignement",hspace:"Espacement horizontal",vspace:"Espacement vertical",dimensions:"Dimensions",border:"Bordure",list:"Liste d\'images",alt:"Description de l\'image",src:"URL de l\'image","dialog_title":"Ins\u00e9rer / \u00e9diter une image","missing_alt":"\u00cates-vous s\u00fbr de vouloir continuer sans d\u00e9finir de description pour l\'image ? Sans elle, l\'image peut ne pas \u00eatre accessible \u00e0 certains utilisateurs handicap\u00e9s, ceux utilisant un navigateur texte ou ceux qui naviguent sans affichage des images.","example_img":"Apparence de l\'image",misc:"Divers",mouseout:"\u00e0 la sortie de la souris",mouseover:"au survol de la souris","alt_image":"Image alternative","swap_image":"Image de remplacement",map:"Image cliquable",id:"Id",rtl:"De droite \u00e0 gauche",ltr:"De gauche \u00e0 droite",classes:"Classes",style:"Style","long_desc":"Description longue du lien",langcode:"Code de la langue",langdir:"Sens de lecture","constrain_proportions":"Conserver les proportions",preview:"Pr\u00e9visualisation",title:"Titre",general:"G\u00e9n\u00e9ral","tab_advanced":"Avanc\u00e9","tab_appearance":"Apparence","tab_general":"G\u00e9n\u00e9ral",width:"Largeur",height:"Hauteur"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/gl_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/gl_dlg.js
deleted file mode 100644
index aeac4bd6e..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/gl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('gl.advimage_dlg',{"image_list":"Lista de imaxes","align_right":"Dereita","align_left":"Esquerda","align_textbottom":"Texto abaixo","align_texttop":"Texto arriba","align_bottom":"Abaixo","align_middle":"Medio","align_top":"Arriba","align_baseline":"Li\u00f1a base",align:"Ali\u00f1amento",hspace:"Espacio horizontal",vspace:"Espacio vertical",dimensions:"Dimensi\u00f3ns",border:"Bordes",list:"Lista de imaxes",alt:"Descripci\u00f3n da imaxe",src:"URL da imaxe","dialog_title":"Insertar/editar imaxe","missing_alt":"\u00bfEsta seguro de continuar sen introducir unha descripci\u00f3n \u00e1 imaxe? Sen ela pode non ser accesible pra usuarios con discapacidades, ou pra aqueles que usen navegadores de modo texto, ou te\u00f1an deshabilitadas as imaxes da p\u00e1xina.","example_img":"Vista previa da imaxe",misc:"Miscel\u00e1neo",mouseout:"pra mouseout",mouseover:"pra mouseover","alt_image":"Imaxe alternativa","swap_image":"Intercambiar imaxe",map:"Mapa de imaxe",id:"Id",rtl:"Dereita a esquerda",ltr:"Esquerda a dereita",classes:"Clases",style:"Estilos","long_desc":"V\u00ednculo pra descripci\u00f3n larga",langcode:"C\u00f3digo do idioma",langdir:"Direcci\u00f3n do idioma","constrain_proportions":"Bloquear proporci\u00f3ns",preview:"Vista previa",title:"T\u00edtulo",general:"Xeral","tab_advanced":"Avanzado","tab_appearance":"Apariencia","tab_general":"Xeral",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/he_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/he_dlg.js
deleted file mode 100644
index fb3ea2ac6..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/he_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('he.advimage_dlg',{"image_list":"\u05e8\u05e9\u05d9\u05de\u05ea \u05ea\u05de\u05d5\u05e0\u05d5\u05ea","align_right":"\u05dc\u05d9\u05de\u05d9\u05df","align_left":"\u05dc\u05e9\u05de\u05d0\u05dc","align_textbottom":"\u05d8\u05e7\u05e1\u05d8 \u05ea\u05d7\u05ea\u05d5\u05df","align_texttop":"\u05d8\u05e7\u05e1\u05d8 \u05e2\u05dc\u05d9\u05d5\u05df","align_bottom":"\u05ea\u05d7\u05ea\u05d9\u05ea","align_middle":"\u05d0\u05de\u05e6\u05e2","align_top":"\u05e2\u05dc\u05d9\u05d5\u05df","align_baseline":"\u05e7\u05d5 \u05d1\u05e1\u05d9\u05e1\u05d9",align:"\u05d9\u05e9\u05d5\u05e8",hspace:"\u05e7\u05d5 \u05d0\u05d5\u05e4\u05e7\u05d9",vspace:"\u05e7\u05d5 \u05d0\u05e0\u05db\u05d9",dimensions:"\u05de\u05d9\u05de\u05d3\u05d9\u05dd",border:"\u05d2\u05d1\u05d5\u05dc",list:"\u05e8\u05e9\u05d9\u05de\u05ea \u05ea\u05de\u05d5\u05e0\u05d5\u05ea",alt:"\u05ea\u05d9\u05d0\u05d5\u05e8 \u05d4\u05ea\u05de\u05d5\u05e0\u05d4",src:"URL \u05e9\u05dc \u05d4\u05ea\u05de\u05d5\u05e0\u05d4","dialog_title":"\u05d4\u05d5\u05e1\u05e4\u05d4/\u05e2\u05e8\u05d9\u05db\u05ea \u05ea\u05de\u05d5\u05e0\u05d4","missing_alt":"\u05dc\u05d4\u05de\u05e9\u05d9\u05da \u05de\u05d1\u05dc\u05d9 \u05dc\u05d4\u05d5\u05e1\u05d9\u05e3 \u05ea\u05d9\u05d0\u05d5\u05e8 \u05dc\u05ea\u05de\u05d5\u05e0\u05d4?","example_img":"\u05ea\u05e6\u05d5\u05d2\u05d4 \u05de\u05e7\u05d3\u05d9\u05de\u05d4 \u05e9\u05dc \u05d4\u05ea\u05de\u05d5\u05e0\u05d4",misc:"\u05e9\u05d5\u05e0\u05d5\u05ea",mouseout:"\u05d4\u05e1\u05de\u05df \u05e2\u05d1\u05e8 \u05d0\u05ea \u05d4\u05ea\u05de\u05d5\u05e0\u05d4",mouseover:"\u05d1\u05e2\u05ea \u05de\u05e2\u05d1\u05e8 \u05d4\u05e1\u05de\u05df \u05e2\u05dc \u05d4\u05ea\u05de\u05d5\u05e0\u05d4","alt_image":"\u05ea\u05de\u05d5\u05e0\u05d4 \u05d7\u05dc\u05d9\u05e4\u05d9\u05ea","swap_image":"\u05d4\u05d7\u05dc\u05e4\u05ea \u05ea\u05de\u05d5\u05e0\u05d4",map:"Image map",id:"Id",rtl:"\u05de\u05d9\u05de\u05d9\u05df \u05dc\u05e9\u05de\u05d0\u05dc",ltr:"\u05de\u05e9\u05de\u05d0\u05dc \u05dc\u05d9\u05de\u05d9\u05df",classes:"Classes",style:"\u05e1\u05d2\u05e0\u05d5\u05df","long_desc":"\u05ea\u05d9\u05d0\u05d5\u05e8 \u05e7\u05d9\u05e9\u05d5\u05e8 \u05d0\u05e8\u05d5\u05da",langcode:"\u05e7\u05d5\u05d3 \u05d4\u05e9\u05e4\u05d4",langdir:"\u05db\u05d9\u05d5\u05d5\u05df \u05d4\u05e9\u05e4\u05d4","constrain_proportions":"\u05e9\u05de\u05d9\u05e8\u05d4 \u05e2\u05dc \u05e4\u05e8\u05d5\u05e4\u05d5\u05e8\u05e6\u05d9\u05d5\u05ea",preview:"\u05ea\u05e6\u05d5\u05d2\u05d4 \u05de\u05e7\u05d3\u05d9\u05de\u05d4",title:"\u05db\u05d5\u05ea\u05e8\u05ea",general:"\u05db\u05dc\u05dc\u05d9","tab_advanced":"\u05de\u05ea\u05e7\u05d3\u05dd","tab_appearance":"\u05de\u05e8\u05d0\u05d4","tab_general":"\u05db\u05dc\u05dc\u05d9",width:"\u05e8\u05d5\u05d7\u05d1",height:"\u05d2\u05d5\u05d1\u05d4"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/hi_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/hi_dlg.js
deleted file mode 100644
index f7b2361d1..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/hi_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hi.advimage_dlg',{"image_list":"Image list","align_right":"Right","align_left":"Left","align_textbottom":"Text bottom","align_texttop":"Text top","align_bottom":"Bottom","align_middle":"Middle","align_top":"Top","align_baseline":"Baseline",align:"Alignment",hspace:"Horizontal space",vspace:"Vertical space",dimensions:"Dimensions",border:"Border",list:"Image list",alt:"Image description",src:"Image URL","dialog_title":"Insert/edit image","missing_alt":"Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.","example_img":"Appearance preview image",misc:"Miscellaneous",mouseout:"for mouse out",mouseover:"for mouse over","alt_image":"Alternative image","swap_image":"Swap image",map:"Image map",id:"Id",rtl:"Right to left",ltr:"Left to right",classes:"Classes",style:"Style","long_desc":"Long description link",langcode:"Language code",langdir:"Language direction","constrain_proportions":"Constrain proportions",preview:"Preview",title:"Title",general:"General","tab_advanced":"Advanced","tab_appearance":"Appearance","tab_general":"General",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/hr_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/hr_dlg.js
deleted file mode 100644
index 441370071..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/hr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hr.advimage_dlg',{"image_list":"Lista slika","align_right":"Na desno","align_left":"Na lijevo","align_textbottom":"Na dno teksta","align_texttop":"Na vrh teksta","align_bottom":"Na dno","align_middle":"Na sredinu","align_top":"Na vrh","align_baseline":"Osnovna linija",align:"Poravnavanje",hspace:"Vodoravni razmak",vspace:"Okomiti razmak",dimensions:"Dimenzije",border:"Obrub",list:"Lista slika",alt:"Opis slike",src:"URL slike","dialog_title":"Umetni/uredi sliku","missing_alt":"Jeste li sigurni da \u017eelite izostaviti opis slike? Slika mo\u017ee biti nedostupna ljudima s pote\u0161ko\u0107ama ili onima koji koriste preglednike bez prikaza slika.","example_img":"Predprikaz slike",misc:"Razno",mouseout:"za izlazak mi\u0161a van slike",mouseover:"za prelazak mi\u0161a preko slike","alt_image":"Alternativna slika","swap_image":"Izmjenjiva slika",map:"Karta slike",id:"Id",rtl:"S desna na lijevo",ltr:"S lijeva na desno",classes:"Klase",style:"Stil","long_desc":"Poveznica dugog opisa",langcode:"Kod jezika",langdir:"Smjer jezika","constrain_proportions":"Zadr\u017ei proporcije",preview:"Predprikaz",title:"Naslov",general:"Op\u0107e","tab_advanced":"Napredno","tab_appearance":"Izgled","tab_general":"Op\u0107e",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/hu_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/hu_dlg.js
deleted file mode 100644
index d692d27a8..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/hu_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hu.advimage_dlg',{"image_list":"K\u00e9plista","align_right":"Jobbra","align_left":"Balra","align_textbottom":"Sz\u00f6veg alj\u00e1hoz","align_texttop":"Sz\u00f6veg tetej\u00e9hez","align_bottom":"Lentre","align_middle":"K\u00f6z\u00e9pre","align_top":"Fentre","align_baseline":"Alapvonalhoz",align:"Igaz\u00edt\u00e1s",hspace:"V\u00edzszintes t\u00e1vols\u00e1g",vspace:"F\u00fcgg\u0151leges t\u00e1vols\u00e1g",dimensions:"M\u00e9retek",border:"Keret",list:"K\u00e9plista",alt:"K\u00e9p helyettes\u00edt\u0151 sz\u00f6vege",src:"K\u00e9p internet c\u00edme","dialog_title":"K\u00e9p besz\u00far\u00e1sa/szerkeszt\u00e9se","missing_alt":"Biztosan folytatja helyettes\u00edt\u0151 sz\u00f6veg n\u00e9lk\u00fcl? En\u00e9lk\u00fcl a korl\u00e1toz\u00e1ssal \u00e9l\u0151k, sz\u00f6veges b\u00f6ng\u00e9sz\u0151t haszn\u00e1l\u00f3k \u00e9s a k\u00e9pek megjelen\u00edt\u00e9s\u00e9t letilt\u00f3 felhaszn\u00e1l\u00f3k h\u00e1tr\u00e1nyban lesznek.","example_img":"El\u0151n\u00e9zeti k\u00e9p",misc:"Vegyes",mouseout:"K\u00e9p az eg\u00e9rkurzor lev\u00e9telekor",mouseover:"K\u00e9p az eg\u00e9rkurzor f\u00f6l\u00e9vitelekor","alt_image":"Alternat\u00edv k\u00e9p","swap_image":"K\u00e9pcsere",map:"K\u00e9p t\u00e9rk\u00e9p",id:"Id",rtl:"Jobbr\u00f3l balra",ltr:"Balr\u00f3l jobbra",classes:"Oszt\u00e1lyok",style:"CSS St\u00edlus","long_desc":"B\u0151vebb le\u00edr\u00e1s link",langcode:"Nyelv k\u00f3d",langdir:"Nyelv \u00edr\u00e1s ir\u00e1ny","constrain_proportions":"Ar\u00e1nytart\u00e1s",preview:"El\u0151n\u00e9zet",title:"C\u00edm",general:"\u00c1ltal\u00e1nos","tab_advanced":"Halad\u00f3","tab_appearance":"Megjelen\u00e9s","tab_general":"\u00c1ltal\u00e1nos",width:"Sz\u00e9less\u00e9g",height:"Magass\u00e1g"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/hy_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/hy_dlg.js
deleted file mode 100644
index 581d4f606..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/hy_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hy.advimage_dlg',{"image_list":"\u0546\u056f\u0561\u0580\u0576\u0565\u0580\u056b \u0581\u0561\u0576\u056f","align_right":"\u0538\u057d\u057f \u0561\u057b \u0565\u0566\u0580\u056b","align_left":"\u0538\u057d\u057f \u0571\u0561\u056d \u0565\u0566\u0580\u056b","align_textbottom":"\u0538\u057d\u057f \u057f\u0565\u0584\u057d\u057f\u056b \u057d\u057f\u0578\u0580\u056b\u0576 \u0565\u0566\u0580\u056b","align_texttop":"\u0538\u057d\u057f \u057f\u0565\u0584\u057d\u057f\u056b \u057e\u0565\u0580\u056b\u0576 \u0565\u0566\u0580\u056b","align_bottom":"\u0538\u057d\u057f \u057d\u057f\u0578\u0580\u056b\u0576 \u0565\u0566\u0580\u056b","align_middle":"\u053f\u0565\u0576\u057f\u0580\u0578\u0576\u0561\u0581\u0576\u0565\u056c","align_top":"\u0538\u057d\u057f \u057e\u0565\u0580\u056b \u0565\u0566\u0580\u056b","align_baseline":"\u0538\u057d\u057f \u0562\u0561\u0566\u0561\u0575\u056b\u0576 \u0563\u056e\u056b",align:"\u0540\u0561\u057e\u0561\u057d\u0561\u0580\u0565\u0581\u0578\u0582\u0574",hspace:"\u0540\u0578\u0580\u056b\u0566. \u0570\u0565\u057c\u0561\u0581\u0578\u0582\u0574",vspace:"\u0548\u0582\u0572\u0572. \u0570\u0565\u057c\u0561\u0581\u0578\u0582\u0574",dimensions:"\u0549\u0561\u0583\u057d\u0565\u0580",border:"\u0535\u0566\u0580",list:"\u0546\u056f\u0561\u0580\u0576\u0565\u0580\u056b \u0581\u0561\u0576\u056f",alt:"\u0546\u056f\u0561\u0580\u0561\u0563\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576",src:"\u0546\u056f\u0561\u0580\u056b \u0570\u0561\u057d\u0581\u0565","dialog_title":"\u0531\u057e\u0565\u056c\u0561\u0581\u0576\u0565\u056c / \u0583\u0578\u0583\u0578\u056d\u0565\u056c \u0576\u056f\u0561\u0580","missing_alt":"\u0534\u0578\u0582\u0584 \u056b\u0580\u0578\u055e\u0584 \u0579\u0565\u0584 \u0581\u0561\u0576\u056f\u0561\u0576\u0578\u0582\u0574 \u0576\u056f\u0561\u0580\u0561\u0563\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576 \u0576\u0565\u0580\u0561\u057c\u0565\u056c\u0589","example_img":"\u0546\u056f\u0561\u0580\u056b \u0564\u056b\u057f\u0574\u0561\u0576 \u057f\u0565\u057d\u0584",misc:"\u0531\u0575\u056c",mouseout:"\u0570\u0565\u057c\u0561\u0581\u0574\u0561\u0576 \u057a\u0561\u0570\u056b\u0576",mouseover:"\u0544\u0578\u057f\u0565\u0581\u0574\u0561\u0576 \u057a\u0561\u0570\u056b\u0576","alt_image":"\u0531\u056c\u057f\u0565\u0580\u0576\u0561\u057f\u056b\u057e \u0576\u056f\u0561\u0580","swap_image":"Swap",map:"\u0546\u056f\u0561\u0580\u056b map",id:"Id",rtl:"\u0531\u057b\u056b\u0581 \u0571\u0561\u056d",ltr:"\u0541\u0561\u056d\u056b\u0581 \u0561\u057b",classes:"\u0534\u0561\u057d\u0565\u0580",style:"\u0548\u0573","long_desc":"\u0544\u0561\u0576\u0580\u0561\u0574\u0561\u057d\u0576 \u0562\u0561\u0581\u0561\u057f\u0580\u0578\u0582\u0569\u0575\u0561\u0576 \u0570\u0572\u0578\u0582\u0574",langcode:"\u053c\u0565\u0566\u057e\u056b \u056f\u0578\u0564",langdir:"\u053c\u0565\u0566\u057e\u056b \u0578\u0582\u0572\u0572\u057e\u0561\u056e\u0578\u0582\u0569\u0575\u0578\u0582\u0576\u0568","constrain_proportions":"\u054a\u0561\u0570\u057a\u0561\u0576\u0565\u056c \u0579\u0561\u0583\u0565\u0580\u056b \u0570\u0561\u0580\u0561\u0562\u0565\u0580\u0561\u056f\u0581\u0578\u0582\u0569\u0575\u0578\u0582\u0576\u0568",preview:"\u0546\u0561\u056d\u0561\u0564\u056b\u057f\u0578\u0582\u0574",title:"\u054e\u0565\u0580\u0576\u0561\u0563\u056b\u0580",general:"\u0540\u056b\u0574\u0576\u0561\u056f\u0561\u0576","tab_advanced":"\u053c\u0580\u0561\u0581\u0578\u0582\u0581\u056b\u0579","tab_appearance":"\u054f\u0565\u057d\u0584","tab_general":"\u0540\u056b\u0574\u0576\u0561\u056f\u0561\u0576",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/id_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/id_dlg.js
deleted file mode 100644
index e7bc7c631..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/id_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('id.advimage_dlg',{"image_list":"Daftar Gambar","align_right":"Right","align_left":"Left","align_textbottom":"Text bottom","align_texttop":"Text top","align_bottom":"Bottom","align_middle":"Middle","align_top":"Top","align_baseline":"Baseline",align:"Alignment",hspace:"Horizontal space",vspace:"Vertical space",dimensions:"Dimensi",border:"Border",list:"Daftar Gambar",alt:"Deskripsi Gambar",src:"URL Gambar","dialog_title":"sisipkan/Ubah Gambar","missing_alt":"Yakin ingin melanjutkan tanpa menyertakan deskripsi gambar? Gambar mungkin tidak dapat diakses oleh beberapa pengguna yang yang memiliki keterbatasan, atau mereka yang menggunakan modus teks browser, atau berselancar di Web dengan gambar dimatikan.","example_img":"Gambar pra-tampil",misc:"Rupa-rupa",mouseout:"untuk mouse out",mouseover:"untuk mouse over","alt_image":"Alternatif gambar","swap_image":"Swap image",map:"Image map",id:"Id",rtl:"Kanan ke kiri",ltr:"Kiri ke kanan",classes:"Classes",style:"Style","long_desc":"Deskripsi panjang link",langcode:"Kode bahasa",langdir:"Bahasa","constrain_proportions":"Proporsi dibatasi",preview:"Preview",title:"Judul",general:"Umun","tab_advanced":"Advanced","tab_appearance":"Tampilan","tab_general":"Umum",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/is_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/is_dlg.js
deleted file mode 100644
index f127dac73..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/is_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('is.advimage_dlg',{"image_list":"Image list","align_right":"Right","align_left":"Left","align_textbottom":"Text bottom","align_texttop":"Text top","align_bottom":"Bottom","align_middle":"Middle","align_top":"Top","align_baseline":"Baseline",align:"J\u00f6fnun",hspace:"L\u00e1r\u00e9tt loftun",vspace:"L\u00f3\u00f0r\u00e9tt loftun",dimensions:"St\u00e6r\u00f0ir",border:"Rammi",list:"Myndalisti",alt:"L\u00fdsing",src:"Sl\u00f3\u00f0 \u00e1 mynd","dialog_title":"Setja inn/breyta mynd","missing_alt":"Ertu viss um a\u00f0 halda \u00e1fram \u00e1n l\u00fdsingu myndar? \u00c1n hennar er myndin \u00f3a\u00f0genginleg fyrir suma notendur me\u00f0 skj\u00e1lesara, texta vafra e\u00f0a me\u00f0 sl\u00f6kkt \u00e1 birtingu mynda \u00ed vafranum s\u00ednum.","example_img":"Birting prufumyndar",misc:"\u00ddmislegt",mouseout:"\u00feegar m\u00fas fer af",mouseover:"\u00feegar m\u00fas er yfir","alt_image":"\u00d6nnur mynd","swap_image":"Skipta mynd \u00fat",map:"Image map",id:"Id",rtl:"H\u00e6gri til vinstri",ltr:"Vinstri til h\u00e6gri",classes:"Klasar",style:"St\u00edll","long_desc":"L\u00f6ng l\u00fdsing \u00e1 hlekki",langcode:"K\u00f3\u00f0i tungum\u00e1ls",langdir:"\u00c1tt tungum\u00e1ls","constrain_proportions":"Halda hlutf\u00f6llum",preview:"Forsko\u00f0un",title:"Titill",general:"Almennt","tab_advanced":"N\u00e1nar","tab_appearance":"\u00datlit","tab_general":"Almennt",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/it_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/it_dlg.js
deleted file mode 100644
index 9195c9623..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/it_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('it.advimage_dlg',{"image_list":"Lista immagini","align_right":"A destra","align_left":"A sinistra","align_textbottom":"In basso al testo","align_texttop":"In alto al testo","align_bottom":"In basso","align_middle":"In mezzo","align_top":"In alto","align_baseline":"Alla base",align:"Allineamento",hspace:"Spaziatura orizzontale",vspace:"Spaziatura verticale",dimensions:"Dimensioni",border:"Bordo",list:"Lista immagini",alt:"Descrizione immagine",src:"URL immagine","dialog_title":"Inserisci/modifica immagine","missing_alt":"Sicuro di continuare senza includere una descrizione dell\'immagine? Senza di essa l\'immagine pu\u00f2 non essere accessibile ad alcuni utenti con disabilit\u00e0, o per coloro che usano un browser testuale oppure che hanno disabilitato la visualizzazione delle immagini nel loro browser.","example_img":"Anteprima aspetto immagine",misc:"Impostazioni varie",mouseout:"quando mouse fuori",mouseover:"quando mouse sopra","alt_image":"Immagine alternativa","swap_image":"Sostituisci immagine",map:"Immagine come mappa",id:"Id",rtl:"Destra verso sinistraa",ltr:"Sinistra verso destra",classes:"Classe",style:"Stile","long_desc":"Descrizione del collegamento",langcode:"codice lingua",langdir:"Direzione testo","constrain_proportions":"Mantieni proporzioni",preview:"Anteprima",title:"Titolo",general:"Generale","tab_advanced":"Avanzate","tab_appearance":"Aspetto","tab_general":"Generale",width:"Larghezza",height:"Altezza"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/ja_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/ja_dlg.js
deleted file mode 100644
index f8449c423..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/ja_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ja.advimage_dlg',{"image_list":"\u753b\u50cf\u306e\u4e00\u89a7","align_right":"\u53f3\u5bc4\u305b","align_left":"\u5de6\u5bc4\u305b","align_textbottom":"\u30c6\u30ad\u30b9\u30c8\u3092\u4e0b\u7aef\u63c3\u3048","align_texttop":"\u30c6\u30ad\u30b9\u30c8\u3092\u4e0a\u7aef\u63c3\u3048","align_bottom":"\u4e0b\u63c3\u3048","align_middle":"\u4e2d\u592e\u63c3\u3048","align_top":"\u4e0a\u63c3\u3048","align_baseline":"\u30d9\u30fc\u30b9\u30e9\u30a4\u30f3\u63c3\u3048",align:"\u914d\u7f6e",hspace:"\u5de6\u53f3\u306e\u4f59\u767d",vspace:"\u4e0a\u4e0b\u306e\u4f59\u767d",dimensions:"\u5bf8\u6cd5",border:"\u67a0\u7dda",list:"\u753b\u50cf\u306e\u4e00\u89a7",alt:"\u753b\u50cf\u306e\u8aac\u660e",src:"\u753b\u50cf\u306eURL","dialog_title":"\u753b\u50cf\u3092\u633f\u5165/\u7de8\u96c6","missing_alt":"\u753b\u50cf\u306e\u8aac\u660e\u3092\u542b\u3081\u305a\u306b\u7d9a\u3051\u307e\u3059\u304b? \u753b\u50cf\u306e\u8aac\u660e\u304c\u306a\u3044\u3068\u76ee\u306e\u4e0d\u81ea\u7531\u306a\u65b9\u3001\u30c6\u30ad\u30b9\u30c8\u8868\u793a\u3060\u3051\u306e\u30d6\u30e9\u30a6\u30b6\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u65b9\u3001\u753b\u50cf\u306e\u8868\u793a\u3092\u6b62\u3081\u3066\u308b\u65b9\u304c\u30a2\u30af\u30bb\u30b9\u3067\u304d\u306a\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002","example_img":"\u753b\u50cf\u306e\u30d7\u30ec\u30d3\u30e5\u30fc\u306e\u69d8\u5b50",misc:"\u305d\u306e\u4ed6",mouseout:"\u30de\u30a6\u30b9\u30ab\u30fc\u30bd\u30eb\u304c\u5916\u308c\u308b\u6642",mouseover:"\u30de\u30a6\u30b9\u30ab\u30fc\u30bd\u30eb\u304c\u304b\u304b\u308b\u6642","alt_image":"\u5225\u306e\u753b\u50cf","swap_image":"\u753b\u50cf\u306e\u5165\u308c\u66ff\u3048",map:"\u30a4\u30e1\u30fc\u30b8\u30de\u30c3\u30d7",id:"ID",rtl:"\u53f3\u304b\u3089\u5de6",ltr:"\u5de6\u304b\u3089\u53f3",classes:"\u30af\u30e9\u30b9",style:"\u30b9\u30bf\u30a4\u30eb","long_desc":"\u8a73\u7d30\u306a\u8aac\u660e\u306e\u30ea\u30f3\u30af",langcode:"\u8a00\u8a9e\u30b3\u30fc\u30c9",langdir:"\u6587\u7ae0\u306e\u65b9\u5411","constrain_proportions":"\u7e26\u6a2a\u6bd4\u306e\u7dad\u6301",preview:"\u30d7\u30ec\u30d3\u30e5\u30fc",title:"\u30bf\u30a4\u30c8\u30eb",general:"\u4e00\u822c","tab_advanced":"\u9ad8\u5ea6\u306a\u8a2d\u5b9a","tab_appearance":"\u8868\u793a","tab_general":"\u4e00\u822c",width:"\u5e45",height:"\u9ad8\u3055"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/ka_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/ka_dlg.js
deleted file mode 100644
index 6ab7d35d3..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/ka_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ka.advimage_dlg',{"image_list":"\u10d2\u10d0\u10db\u10dd\u10e1\u10d0\u10ee\u10e3\u10da\u10d4\u10d1\u10d4\u10d1\u10d8\u10e1 \u10e1\u10d8\u10d0","align_right":"\u10db\u10d0\u10e0\u10ef\u10d5\u10d4\u10dc\u10d0 \u10d9\u10d8\u10d3\u10d4\u10d6\u10d4","align_left":"\u10db\u10d0\u10e0\u10ea\u10ee\u10d4\u10dc\u10d0 \u10d9\u10d8\u10d3\u10d4\u10d6\u10d4","align_textbottom":"\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1 \u10e5\u10d5\u10d4\u10d3\u10d0 \u10d9\u10d8\u10d3\u10d4\u10d6\u10d4","align_texttop":"\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1 \u10d6\u10d4\u10d3\u10d0 \u10d9\u10d8\u10d3\u10d4\u10d6\u10d4","align_bottom":"\u10e5\u10d5\u10d4\u10d3\u10d0 \u10d9\u10d8\u10d3\u10d4\u10d6\u10d4","align_middle":"\u10ea\u10d4\u10dc\u10e2\u10e0\u10d6\u10d4","align_top":"\u10d6\u10d4\u10d3\u10d0 \u10d9\u10d8\u10d3\u10d4\u10d6\u10d4","align_baseline":"\u10e1\u10d0\u10d1\u10d0\u10d6\u10d8\u10e1\u10dd \u10ee\u10d0\u10d6\u10d6\u10d4",align:"\u10db\u10dd\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d0",hspace:"\u10f0\u10dd\u10e0\u10d8\u10d6\u10dd\u10dc\u10e2. \u10d3\u10d0\u10e8\u10dd\u10e0\u10d4\u10d1\u10d0",vspace:"\u10d5\u10d4\u10e0\u10e2. \u10d3\u10d0\u10e8\u10dd\u10e0\u10d4\u10d1\u10d0",dimensions:"\u10d6\u10dd\u10db\u10d4\u10d1\u10d8",border:"\u10e9\u10d0\u10e0\u10e9\u10dd",list:"\u10e1\u10d8\u10d0",alt:"\u10d0\u10e6\u10ec\u10d4\u10e0\u10d0",src:"\u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d8","dialog_title":"\u10d2\u10d0\u10db\u10dd\u10e1\u10d0\u10ee\u10e3\u10da\u10d4\u10d1\u10d8\u10e1 \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8","missing_alt":"\u10d0\u10e0 \u10d2\u10e1\u10e3\u10e0\u10d7 \u10d0\u10e6\u10ec\u10d4\u10e0\u10d8\u10e1 \u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0? \u10d0\u10e6\u10ec\u10d4\u10e0\u10d8\u10e1 \u10d2\u10d0\u10e0\u10d4\u10e8\u10d4 \u10e1\u10e3\u10e0\u10d0\u10d7\u10d8 \u10e8\u10d4\u10d8\u10eb\u10da\u10d4\u10d1\u10d0 \u10d6\u10dd\u10d2\u10d8 \u10db\u10dc\u10d0\u10ee\u10d5\u10d4\u10da\u10d8\u10e1\u10d7\u10d5\u10d8\u10e1 \u10d8\u10e7\u10dd\u10e1 \u10db\u10d8\u10e3\u10ec\u10d5\u10d3\u10dd\u10db\u10d4\u10da\u10d8.","example_img":"\u10d2\u10d0\u10db\u10dd\u10e1\u10d0\u10ee\u10e3\u10da\u10d4\u10d1\u10d8\u10e1 \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8",misc:"\u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d8\u10d7\u10d8 \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8",mouseout:"\u10e1\u10d8\u10db\u10e8\u10d5\u10d8\u10d3\u10d4\u10e8\u10d8",mouseover:"\u10d9\u10e3\u10e0\u10e1\u10dd\u10e0\u10d8\u10e1 \u10db\u10d8\u10e7\u10d5\u10d0\u10dc\u10d8\u10e1\u10d0\u10e1","alt_image":"\u10d0\u10da\u10e2\u10d4\u10e0\u10dc\u10d0\u10e2\u10d8\u10e3\u10da\u10d8 \u10d2\u10d0\u10db\u10dd\u10e1\u10d0\u10ee\u10e3\u10da\u10d4\u10d1\u10d0","swap_image":"\u10d3\u10d8\u10dc\u10d0\u10db\u10d8\u10e3\u10e0\u10d8 \u10d2\u10d0\u10db\u10dd\u10e1\u10d0\u10ee\u10e3\u10da\u10d4\u10d1\u10d0",map:"\u10d1\u10db\u10e3\u10da\u10d4\u10d1\u10d8\u10e1 \u10e0\u10e3\u10e5\u10d0",id:"\u10d4\u10da\u10d4\u10db\u10d4\u10dc\u10e2\u10d8\u10e1 \u10e1\u10d0\u10ee\u10d4\u10da\u10ec\u10dd\u10d3\u10d4\u10d1\u10d0",rtl:"\u10db\u10d0\u10e0\u10ef\u10d5\u10dc\u10d8\u10d3\u10d0\u10dc \u10db\u10d0\u10e0\u10ea\u10e1\u10dc\u10d8\u10d5",ltr:"\u10db\u10d0\u10e0\u10ea\u10ee\u10dc\u10d8\u10d3\u10d0\u10dc \u10db\u10d0\u10e0\u10ef\u10d5\u10dc\u10d8\u10d5",classes:"\u10d9\u10da\u10d0\u10e1\u10d4\u10d1\u10d8",style:"\u10e1\u10e2\u10d8\u10da\u10d8","long_desc":"\u10d1\u10db\u10e3\u10da\u10d8 \u10e1\u10e0\u10e3\u10da \u10d0\u10e6\u10ec\u10d4\u10e0\u10d0\u10d6\u10d4",langcode:"\u10d4\u10dc\u10d8\u10e1 \u10d9\u10dd\u10d3\u10d8",langdir:"\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1 \u10db\u10d8\u10db\u10d0\u10e0\u10d7\u10e3\u10da\u10d4\u10d1\u10d0","constrain_proportions":"\u10de\u10e0\u10dd\u10de\u10dd\u10e0\u10ea\u10d8\u10d4\u10d1\u10d8\u10e1 \u10e8\u10d4\u10dc\u10d0\u10ee\u10d5\u10d0",preview:"\u10ec\u10d8\u10dc\u10d0\u10e1\u10ec\u10d0\u10e0 \u10d3\u10d0\u10d7\u10d5\u10d0\u10da\u10d8\u10d4\u10e0\u10d4\u10d1\u10d0",title:"\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8",general:"\u10e1\u10d0\u10d4\u10e0\u10d7\u10dd \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8","tab_advanced":"\u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d8\u10d7","tab_appearance":"\u10db\u10d3\u10d2\u10dd\u10db\u10d0\u10e0\u10d4\u10dd\u10d1\u10d0","tab_general":"\u10e1\u10d0\u10d4\u10e0\u10d7\u10dd",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/ko_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/ko_dlg.js
deleted file mode 100644
index f2fcb3ba6..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/ko_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ko.advimage_dlg',{"image_list":"\uc774\ubbf8\uc9c0 \ubaa9\ub85d","align_right":"\uc624\ub978\ucabd","align_left":"\uc67c\ucabd","align_textbottom":"\ubb38\uc790 \ud558\ub2e8","align_texttop":"\ubb38\uc790 \uc0c1\ub2e8","align_bottom":"\ud558\ub2e8","align_middle":"\uc911\uc559","align_top":"\uc0c1\ub2e8","align_baseline":"\uae30\uc900\uc120",align:"\uc904\ub9de\ucda4",hspace:"\uc88c\uc6b0 \uc5ec\ubc31",vspace:"\uc0c1\ud558 \uc5ec\ubc31",dimensions:"\ud06c\uae30",border:"\ud14c\ub450\ub9ac \uc120",list:"\uc774\ubbf8\uc9c0 \ubaa9\ub85d",alt:"\uc774\ubbf8\uc9c0 \uc124\uba85",src:"\uc774\ubbf8\uc9c0 URL","dialog_title":"\uc774\ubbf8\uc9c0 \uc0bd\uc785/\ud3b8\uc9d1","missing_alt":"\uc774\ubbf8\uc9c0 \uc124\uba85\uc744 \ub123\uc9c0 \uc54a\uace0 \uc9c4\ud589\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c? \uc774\ubbf8\uc9c0 \uc124\uba85\uc774 \uc5c6\uc73c\uba74 \uc7a5\uc560\uac00 \uc788\ub294 \uc77c\ubd80 \uc0ac\uc6a9\uc790\ub098 \ud14d\uc2a4\ud2b8 \ube0c\ub77c\uc6b0\uc800 \uc0ac\uc6a9\uc790, \uc774\ubbf8\uc9c0 \ud45c\uc2dc\ub97c \ub048 \uc0c1\ud0dc\uc5d0\uc11c \uc6f9\uc744 \ubcf4\ub294 \uc0ac\uc6a9\uc790\ub294 \uc774\ubbf8\uc9c0\ub97c \uc561\uc138\uc2a4\ud558\uc9c0 \ubabb\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.","example_img":"\ubbf8\ub9ac \ubcf4\uae30 \uc774\ubbf8\uc9c0",misc:"\uae30\ud0c0",mouseout:"\ub9c8\uc6b0\uc2a4 \ube7c\ub0c8\uc744 \ub54c",mouseover:"\ub9c8\uc6b0\uc2a4 \uc62c\ub838\uc744 \ub54c","alt_image":"\ub300\uccb4 \uc774\ubbf8\uc9c0","swap_image":"\ub864 \uc624\ubc84 \ud6a8\uacfc",map:"\uc774\ubbf8\uc9c0 \ub9f5",id:"ID",rtl:"\uc624\ub978\ucabd\uc5d0\uc11c \uc67c\ucabd\uc73c\ub85c",ltr:"\uc67c\ucabd\uc5d0\uc11c \uc624\ub978\ucabd\uc73c\ub85c",classes:"\ud074\ub798\uc2a4",style:"\uc11c\uc2dd","long_desc":"\uae34 \uc124\uba85 \ub9c1\ud06c",langcode:"\uc5b8\uc5b4 \ucf54\ub4dc",langdir:"\ubb38\uc790 \ubc29\ud5a5","constrain_proportions":"\uc885\ud6a1\ube44 \ubcf4\uc874",preview:"\ubbf8\ub9ac \ubcf4\uae30",title:"\uc81c\ubaa9",general:"\uc77c\ubc18","tab_advanced":"\uc138\ubd80 \uc0ac\ud56d","tab_appearance":"\ud45c\uc2dc","tab_general":"\uc77c\ubc18",width:"\ud3ed",height:"\ub192\uc774"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/lt_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/lt_dlg.js
deleted file mode 100644
index 8f85e7aa4..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/lt_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('lt.advimage_dlg',{"image_list":"Paveiksl\u0117li\u0173 s\u0105ra\u0161as","align_right":"De\u0161in\u0117je","align_left":"Kair\u0117je","align_textbottom":"Teksto apa\u010dioje","align_texttop":"Teksto vir\u0161uje","align_bottom":"Apa\u010dioje","align_middle":"Viduryje","align_top":"Vir\u0161uje","align_baseline":"Pradiniame ta\u0161ke",align:"Lygiavimas",hspace:"Horizontalus tarpas",vspace:"Vertikalus tarpas",dimensions:"I\u0161matavimai",border:"R\u0117melis",list:"Paveiksl\u0117li\u0173 s\u0105ra\u0161as",alt:"Paveiksl\u0117lio apra\u0161as",src:"Paveiksl\u0117lio URL adresas","dialog_title":"\u012eterpti/redaguoti paveiksl\u0117l\u012f","missing_alt":"Ar norite t\u0119sti ne\u012fved\u0119 paveiksl\u0117lio apra\u0161o? Be apra\u0161o jo neatpa\u017eins \u017emon\u0117s su negalia, tie kurie naudoja tekstines nar\u0161ykles, arba tie, kurie nar\u0161o internet\u0105 i\u0161jung\u0119 paveiksl\u0117li\u0173 rodym\u0105.","example_img":"I\u0161vaizdos per\u017ei\u016bros paveiksl\u0117lis",misc:"\u012evair\u016bs",mouseout:"nuvedant pel\u0119",mouseover:"u\u017evedant pele","alt_image":"Alternatyvus paveiksl\u0117lis","swap_image":"Sukeisti paveiksl\u0117l\u012f",map:"Paveiksl\u0117lio planas",id:"Id",rtl:"I\u0161 de\u0161in\u0117s \u012f kair\u0119",ltr:"I\u0161 kair\u0117s \u012f de\u0161in\u0119",classes:"Klas\u0117s",style:"Stilius","long_desc":"Ilgo apra\u0161o nuoroda",langcode:"Kalbos kodas",langdir:"Kalbos teksto kryptis","constrain_proportions":"Priverstin\u0117s proporcijos",preview:"Per\u017ei\u016bra",title:"Pavadinimas",general:"Bendra","tab_advanced":"I\u0161pl\u0117sta","tab_appearance":"I\u0161vaizda","tab_general":"Bendra",width:"Plotis",height:"Auk\u0161tis"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/lv_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/lv_dlg.js
deleted file mode 100644
index 836aec61d..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/lv_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('lv.advimage_dlg',{"image_list":"Att\u0113lu saraksts","align_right":"Pa labi","align_left":"Pa kreisi","align_textbottom":"Teksta apak\u0161a","align_texttop":"Teksta aug\u0161a","align_bottom":"Apak\u0161a","align_middle":"Vidus","align_top":"Aug\u0161a","align_baseline":"Pati apak\u0161a",align:"Novietojums",hspace:"Horizont\u0101l\u0101 atstarpe",vspace:"Vertik\u0101l\u0101 atstarpe",dimensions:"Izm\u0113ri",border:"Apmale",list:"Att\u0113lu saraksts",alt:"Att\u0113la apraksts",src:"Att\u0113la URL","dialog_title":"Ievietot/Redi\u0123\u0113t att\u0113lu","missing_alt":"Vai esat p\u0101rliecin\u0101ti, ka v\u0113laties turpin\u0101t, neiek\u013caujot bildes aprakstu? Bez apraksta bilde neb\u016bs saprotama lietot\u0101jiem ar nesp\u0113ju redz\u0113t, vai lietotajiem, kas lieto teksta p\u0101rl\u016bkus, vai izsl\u0113gu\u0161i bil\u017eu r\u0101d\u012b\u0161anu.","example_img":"Att\u0113la izskata priek\u0161skats",misc:"Da\u017e\u0101di",mouseout:"kad pele \u0101rpus",mouseover:"kad pele virs","alt_image":"Otra bilde","swap_image":"Main\u012bt bildi",map:"Att\u0113lkarte",id:"Id",rtl:"No lab\u0101s uz kreiso",ltr:"No kreis\u0101s uz labo",classes:"Klases",style:"Stils","long_desc":"Saite uz garo aprakstu",langcode:"Valodas kods",langdir:"Valodas virziens","constrain_proportions":"Saglab\u0101t proporcijas",preview:"Priek\u0161skats",title:"Nosaukums",general:"Iestat\u012bjumi","tab_advanced":"Papildiestat\u012bjumi","tab_appearance":"Izskats","tab_general":"Iestat\u012bjumi",width:"Platums",height:"Augstums"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/mk_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/mk_dlg.js
deleted file mode 100644
index c866cb42d..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/mk_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('mk.advimage_dlg',{"image_list":"\u041b\u0438\u0441\u0442\u0430 \u043d\u0430 \u0441\u043b\u0438\u043a\u0438","align_right":"\u0414\u0435\u0441\u043d\u043e","align_left":"\u041b\u0435\u0432\u043e","align_textbottom":"\u041a\u0440\u0430\u0458 \u043d\u0430 \u0442\u0435\u043a\u0441\u0442","align_texttop":"\u041f\u043e\u0447\u0435\u0442\u043e\u043a \u043d\u0430 \u0442\u0435\u043a\u0441\u0442","align_bottom":"\u041d\u0430\u0458\u0434\u043e\u043b\u0435","align_middle":"\u0421\u0440\u0435\u0434\u0438\u043d\u0430","align_top":"\u041d\u0430\u0458\u0433\u043e\u0440\u0435","align_baseline":"\u041e\u0441\u043d\u043e\u0432\u043d\u0430 \u043b\u0438\u043d\u0438\u0458\u0430",align:"\u041f\u043e\u0440\u0430\u043c\u043d\u0443\u0432\u0430\u045a\u0435",hspace:"\u0425\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u043d\u043e \u043f\u0440\u0430\u0437\u043d\u043e \u043c\u0435\u0441\u0442\u043e",vspace:"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u043d\u043e \u043f\u0440\u0430\u0437\u043d\u043e \u043c\u0435\u0441\u0442\u043e",dimensions:"\u0414\u0438\u043c\u0435\u043d\u0437\u0438\u0438",border:"\u0413\u0440\u0430\u043d\u0438\u0446\u0430/\u0440\u0430\u0431\u043e\u0432\u0438",list:"\u041b\u0438\u0441\u0442\u0430 \u043d\u0430 \u0441\u043b\u0438\u043a\u0438",alt:"\u041e\u043f\u0438\u0441 \u043d\u0430 \u0441\u043b\u0438\u043a\u0430\u0442\u0430",src:"\u0423\u0420\u041b \u043d\u0430 \u0441\u043b\u0438\u043a\u0430\u0442\u0430","dialog_title":"\u0412\u043d\u0435\u0441\u0438/\u0443\u0440\u0435\u0434\u0438 \u0441\u043b\u0438\u043a\u0430","missing_alt":"\u0414\u0430\u043b\u0438 \u0441\u0442\u0435 \u0441\u0438\u0433\u0443\u0440\u043d\u0438 \u0434\u0435\u043a\u0430 \u0441\u0430\u043a\u0430\u0442\u0435 \u0434\u0430 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435 \u0431\u0435\u0437 \u0432\u043a\u043b\u0443\u0447\u0435\u043d \u043e\u043f\u0438\u0441 \u043d\u0430 \u0441\u043b\u0438\u043a\u0430\u0442\u0430 ? \u0411\u0435\u0437 \u043d\u0435\u0433\u043e, \u0441\u043b\u0438\u043a\u0430\u0442\u0430 \u043c\u043e\u0436\u0435 \u0434\u0430 \u043d\u0435 \u0431\u0438\u0434\u0435 \u0434\u043e\u0441\u0442\u0430\u043f\u043d\u0438 \u0437\u0430 \u043d\u0435\u043a\u043e\u0438 \u043a\u043e\u0440\u0438\u0441\u043d\u0438\u0446\u0438 \u0441\u043e \u043f\u043e\u0441\u0435\u0431\u043d\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438, \u0438\u043b\u0438 \u0437\u0430 \u043e\u043d\u0438\u0435 \u043a\u043e\u0438 \u043a\u043e\u0440\u0438\u0441\u0442\u0430\u0442 \u0442\u0435\u043a\u0441\u0442\u0443\u0430\u043b\u0435\u043d \u043f\u0440\u0435\u043b\u0438\u0441\u0442\u0443\u0432\u0430\u0447, \u0438\u043b\u0438 \u043f\u0440\u0435\u043b\u0438\u0441\u0442\u0443\u0432\u0430\u0430\u0442 \u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0441\u043e \u0438\u0441\u043a\u043b\u0443\u0447\u0435\u043d\u0438 \u0441\u043b\u0438\u043a\u0438.","example_img":"\u041f\u0440\u0435\u0433\u043b\u0435\u0434 \u043d\u0430 \u0438\u0437\u0433\u043b\u0435\u0434\u043e\u0442 \u043d\u0430 \u0441\u043b\u0438\u043a\u0430\u0442\u0430",misc:"\u0420\u0430\u0437\u043d\u043e",mouseout:"\u0417\u0430 \u0438\u0437\u043b\u0435\u0437 \u043d\u0430 \u0433\u043b\u0443\u0432\u0447\u0435\u0442\u043e \u043e\u0434 \u0441\u043b\u0438\u043a\u0430\u0442\u0430",mouseover:"\u0417\u0430 \u043f\u0440\u0435\u043c\u0438\u043d\u0443\u0432\u0430\u045a\u0435 \u043d\u0430 \u0433\u043b\u0443\u0432\u0447\u0435\u0442\u043e \u043f\u0440\u0435\u043a\u0443 \u0441\u043b\u0438\u043a\u0430\u0442\u0430","alt_image":"\u0410\u043b\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u0430 \u0441\u043b\u0438\u043a\u0430","swap_image":"\u0417\u0430\u043c\u0435\u043d\u0438\u0458\u0430 \u0441\u043b\u0438\u043a\u0430\u0442\u0430",map:"\u041a\u0430\u0440\u0442\u0430 \u043d\u0430 \u0441\u043b\u0438\u043a\u0438\u0442\u0435",id:"\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u0433\u0430\u0446\u0438\u0458\u0430 (Id)",rtl:"\u041e\u0434 \u0434\u0435\u0441\u043d\u043e \u043d\u0430 \u043b\u0435\u0432\u043e",ltr:"\u041e\u0434 \u043b\u0435\u0432\u043e \u043d\u0430 \u0434\u0435\u0441\u043d\u043e",classes:"\u041a\u043b\u0430\u0441\u0438",style:"\u0421\u0442\u0438\u043b","long_desc":"\u0414\u043e\u043b\u0433 \u043e\u043f\u0438\u0441 \u043d\u0430 \u043b\u0438\u043d\u043a\u043e\u0442",langcode:"\u041a\u043e\u0434 \u043d\u0430 \u0458\u0430\u0437\u0438\u043a\u043e\u0442",langdir:"\u041d\u0430\u0441\u043e\u043a\u0430 \u043d\u0430 \u0458\u0430\u0437\u0438\u043a\u043e\u0442","constrain_proportions":"\u0417\u0430\u0434\u0440\u0436\u0438 \u0433\u0438 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u0438\u0442\u0435",preview:"\u041f\u0440\u0435\u0433\u043b\u0435\u0434",title:"\u041d\u0430\u0441\u043b\u043e\u0432",general:"\u041e\u0441\u043d\u043e\u0432\u043d\u043e","tab_advanced":"\u041d\u0430\u043f\u0440\u0435\u0434\u043d\u043e","tab_appearance":"\u0418\u0437\u0433\u043b\u0435\u0434","tab_general":"\u041e\u0441\u043d\u043e\u0432\u043d\u043e",width:"\u0428\u0438\u0440\u0438\u043d\u0430",height:"\u0412\u0438\u0441\u0438\u043d\u0430"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/ms_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/ms_dlg.js
deleted file mode 100644
index 07e85382c..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/ms_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ms.advimage_dlg',{"image_list":"Senarai imej","align_right":"Kanan","align_left":"Kiri","align_textbottom":"Teks bawah","align_texttop":"Teks atas","align_bottom":"Bawah","align_middle":"Tengah","align_top":"Atas","align_baseline":"Garis pangkal",align:"Penyelarian",hspace:"Ruangan ufuk",vspace:"Ruangan tegak",dimensions:"Dimensi",border:"Sempadan",list:"Senarai imej",alt:"Huraian imej",src:"URL imej","dialog_title":"Sisip/sunting imej","missing_alt":"Adakah anda pasti untuk teruskan tanpa masukkan huraian imej? Tanpa huraian, imej mungkin tidak dapat difahami oleh orang yang kurang upaya, orang yang menggunakan pelayaran teks.","example_img":"Penglihatan pratonton imej",misc:"Pelbagai",mouseout:"untuk tetikus di luar",mouseover:"untuk tetikus di atas","alt_image":"Imej alternatif","swap_image":"Tukar imej",map:"Imej map",id:"Id",rtl:"Kanan ke kiri",ltr:"Kiri ke kanan",classes:"Kelas-kelas",style:"Gaya","long_desc":"Pautan huraian panjang",langcode:"Kod bahasa",langdir:"Arah bahasa","constrain_proportions":"Kadar tahanan",preview:"Pratonton",title:"Tajuk",general:"Am","tab_advanced":"Lanjutan","tab_appearance":"Penglihatan","tab_general":"Am",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/nb_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/nb_dlg.js
deleted file mode 100644
index c8f843797..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/nb_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nb.advimage_dlg',{"image_list":"Bildeliste","align_right":"H\u00f8yre","align_left":"Venstre","align_textbottom":"Tekst bunn","align_texttop":"Tekst topp","align_bottom":"Bunn","align_middle":"Midtstilt","align_top":"Topp","align_baseline":"Grunnlinje",align:"Justering",hspace:"Horisontal avstand",vspace:"Vertikal avstand",dimensions:"Dimensjoner",border:"Ramme",list:"Bildeliste",alt:"Bildebeskrivelse",src:"Bildets URL","dialog_title":"Sett inn / endre bilde","missing_alt":"Er du sikker p\u00e5 at du vil fortsette uten \u00e5 sette inn en beskrivelse av bildet? Uten beskrivelse vil bildet ikke gi mening for enkelte funksjonshemmede eller for personer som bruker en nettleser med bildevisning avsl\u00e5tt.","example_img":"Utseende Forh\u00e5ndsvisning bilde",misc:"Annet",mouseout:"for musepeker utenfor",mouseover:"for musepeker p\u00e5","alt_image":"Alternativt bilde","swap_image":"Bytt bilde",map:"Bildekart",id:"Id",rtl:"H\u00f8yre mot venstre",ltr:"Venstre mot h\u00f8yre",classes:"Klasser",style:"Stil","long_desc":"Lang beskrivelse",langcode:"Spr\u00e5kkode",langdir:"Skriftretning","constrain_proportions":"Behold st\u00f8rrelsesforhold",preview:"Forh\u00e5ndsvisning",title:"Tittel",general:"Generelt","tab_advanced":"Avansert","tab_appearance":"Utseende","tab_general":"Generelt",width:"Bredde",height:"H\u00f8yde"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/nl_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/nl_dlg.js
deleted file mode 100644
index ea7272812..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/nl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nl.advimage_dlg',{"image_list":"Lijst","align_right":"Rechts","align_left":"Links","align_textbottom":"Onderkant tekst","align_texttop":"Bovenkant tekst","align_bottom":"Onder","align_middle":"Midden","align_top":"Boven","align_baseline":"Basislijn",align:"Uitlijning",hspace:"Horizontale ruimte",vspace:"Verticale ruimte",dimensions:"Afmetingen",border:"Rand",list:"Lijst",alt:"Beschrijving",src:"Bestand/URL","dialog_title":"Afbeelding invoegen/bewerken","missing_alt":"Wilt u de afbeelding zonder beschrijving invoegen? De afbeelding wordt dan mogelijk niet opgemerkt door mensen met een visuele handicap, of mensen die zonder afbeeldingen browsen.","example_img":"Voorbeeldweergave",misc:"Diversen",mouseout:"Bij muis uit",mouseover:"Bij muis over","alt_image":"Alternatieve afbeeldingen","swap_image":"Afbeelding wisselen",map:"Afbeeldingsplattegrond",id:"Id",rtl:"Van rechts naar links",ltr:"Van links naar rechts",classes:"Klasses",style:"Stijl","long_desc":"Uitgebreide beschrijving",langcode:"Taalcode",langdir:"Taalrichting","constrain_proportions":"Verhouding behouden",preview:"Voorbeeld",title:"Titel",general:"Algemeen","tab_advanced":"Geavanceerd","tab_appearance":"Weergave","tab_general":"Algemeen",width:"Breedte",height:"Hoogte"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/nn_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/nn_dlg.js
deleted file mode 100644
index 2c0b2caad..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/nn_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nn.advimage_dlg',{"image_list":"Liste med bilete","align_right":"H\u00f8gre","align_left":"Venstre","align_textbottom":"Tekst botn","align_texttop":"Tekst topp","align_bottom":"Botn","align_middle":"Midtstilt","align_top":"Topp","align_baseline":"Basislinje",align:"Justering",hspace:"Horisontal avstand",vspace:"Vertikal avstand",dimensions:"Dimensjonar",border:"Ramme",list:"Bileteliste",alt:"Bileteomtale",src:"Bilete-URL","dialog_title":"Set inn / endre bilete","missing_alt":"Er du sikker p\u00e5 at du vil fortsetje utan \u00e5 setje inn ei omtale av biletet? Utan omtale vil biletet ikkje gje meining for enkelte funksjonshemma eller for personar som bruker ein nettlesar med biletvisinga avsl\u00e5tt.","example_img":"Sj\u00e5 f\u00f8rebels utkast av bilete",misc:"Anna",mouseout:"for musepeikar utanfor",mouseover:"for musepeikar over","alt_image":"Alternativt bilete","swap_image":"Byt bilete",map:"Biletekart",id:"Id",rtl:"H\u00f8gre mot venstre",ltr:"Venstre mot h\u00f8gre",classes:"Klasser",style:"Stil","long_desc":"Lang omtale",langcode:"Spr\u00e5kkode",langdir:"Skriftretning","constrain_proportions":"Behald proporsjonar",preview:"Sj\u00e5 f\u00f8rebels utkast",title:"Tittel",general:"Generelt","tab_advanced":"Avansert","tab_appearance":"Utsj\u00e5nad","tab_general":"Generelt",width:"Breidde",height:"H\u00f8gde"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/pl_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/pl_dlg.js
deleted file mode 100644
index c32f718ac..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/pl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('pl.advimage_dlg',{"image_list":"Lista obrazk\u00f3w","align_right":"Prawy","align_left":"Lewy","align_textbottom":"Tekst dolny","align_texttop":"Tekst g\u00f3rny","align_bottom":"Dolny","align_middle":"\u015arodkowy","align_top":"G\u00f3rny","align_baseline":"G\u0142\u00f3wna linia",align:"Wyr\u00f3wnanie",hspace:"Odst\u0119p poziomy",vspace:"Odst\u0119p pionowy",dimensions:"Rozmiary",border:"Obramowanie",list:"Lista obrazk\u00f3w",alt:"Opis obrazka",src:"URL obrazka","dialog_title":"Wklej/edytuj obraz","missing_alt":"Czy jeste\u015b pewien, \u017ce chcesz kontynuowa\u0107 bez opisu obrazka? Obrazek bez opisu mo\u017ce nie by\u0107 dost\u0119pny dla u\u017cytkownik\u00f3w u\u017cywaj\u0105cych tekstowe przegl\u0105darki lub przegl\u0105daj\u0105cych stron\u0119 z wy\u0142\u0105czonymi obrazkami.","example_img":"Podgl\u0105d wygl\u0105du obrazka",misc:"R\u00f3\u017cne",mouseout:"dla mouseout",mouseover:"dla mouseover","alt_image":"alternatywny obrazek","swap_image":"Zamiana obrazka",map:"Mapa obrazu",id:"Id",rtl:"Z prawej do lewej",ltr:"Z lewej do prawej",classes:"Klasy",style:"Styl","long_desc":"D\u0142ugi opis linku",langcode:"Kod j\u0119zyka",langdir:"Kierunek j\u0119zyka","constrain_proportions":"Zachowaj proporcje",preview:"Podgl\u0105d",title:"Tytu\u0142",general:"Og\u00f3lne","tab_advanced":"Zaawansowane","tab_appearance":"Wygl\u0105d","tab_general":"Og\u00f3lne",width:"Szeroko\u015b\u0107",height:"Wysoko\u015b\u0107"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/ps_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/ps_dlg.js
deleted file mode 100644
index 58852bc19..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/ps_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ps.advimage_dlg',{"image_list":"Image list","align_right":"Right","align_left":"Left","align_textbottom":"Text bottom","align_texttop":"Text top","align_bottom":"Bottom","align_middle":"Middle","align_top":"Top","align_baseline":"Baseline",align:"Alignment",hspace:"Horizontal space",vspace:"Vertical space",dimensions:"Dimensions",border:"Border",list:"Image list",alt:"Image description",src:"Image URL","dialog_title":"Insert/edit image","missing_alt":"Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.","example_img":"Appearance preview image",misc:"Miscellaneous",mouseout:"for mouse out",mouseover:"for mouse over","alt_image":"Alternative image","swap_image":"Swap image",map:"Image map",id:"Id",rtl:"Right to left",ltr:"Left to right",classes:"Classes",style:"Style","long_desc":"Long description link",langcode:"Language code",langdir:"Language direction","constrain_proportions":"Constrain proportions",preview:"Preview",title:"Title",general:"General","tab_advanced":"Advanced","tab_appearance":"Appearance","tab_general":"General",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/pt_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/pt_dlg.js
deleted file mode 100644
index 513319ffc..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/pt_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('pt.advimage_dlg',{"image_list":"Lista de imagens","align_right":"Direita","align_left":"Esquerda","align_textbottom":"Base do texto","align_texttop":"Topo do texto","align_bottom":"Abaixo","align_middle":"Meio","align_top":"Topo","align_baseline":"Sobre a linha de texto",align:"Alinhamento",hspace:"Espa\u00e7o horizontal",vspace:"Espa\u00e7o vertical",dimensions:"Dimens\u00f5es",border:"Limite",list:"Lista de imagens",alt:"Descri\u00e7\u00e3o da imagem",src:"Endere\u00e7o da imagem","dialog_title":"Inserir/editar imagem","missing_alt":"Tem certeza que deseja continuar sem acrescentar uma descri\u00e7\u00e3o \u00e0 imagem? (Isto pode gerar problemas de acessibilidade em alguns navegadores)","example_img":"Pr\u00e9-Visualiza\u00e7\u00e3o",misc:"Misto",mouseout:"mouseout",mouseover:"mouseover","alt_image":"Imagem alternativa","swap_image":"Trocar imagem",map:"Mapa de imagem",id:"Id",rtl:"Da direita para a esquerda",ltr:"Da esquerda para a direita",classes:"Classes",style:"Estilo","long_desc":"Descri\u00e7\u00e3o extensa",langcode:"C\u00f3digo do idioma",langdir:"Dire\u00e7\u00e3o do texto","constrain_proportions":"Manter propor\u00e7\u00f5es",preview:"Pr\u00e9-Visualiza\u00e7\u00e3o",title:"T\u00edtulo",general:"Geral","tab_advanced":"Avan\u00e7ado","tab_appearance":"Apar\u00eancia","tab_general":"Geral",width:"Largura",height:"Altura"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/ro_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/ro_dlg.js
deleted file mode 100644
index d8d4ef956..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/ro_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ro.advimage_dlg',{"image_list":"List\u0103 de imagini","align_right":"Dreapta","align_left":"St\u00e2nga","align_textbottom":"Textul jos","align_texttop":"Textul sus","align_bottom":"Jos","align_middle":"La mijloc","align_top":"Sus","align_baseline":"Baseline",align:"Aliniere",hspace:"Spa\u021biu orizontal",vspace:"Spa\u021biu vertical",dimensions:"Dimensiuni",border:"Bordur\u0103",list:"List\u0103 imagini",alt:"Descriere imagine",src:"URL imagine","dialog_title":"Inserare/editare imagine","missing_alt":"Sigur vrei s\u0103 continui f\u0103r\u0103 s\u0103 introduci o descriere a imaginii? F\u0103r\u0103 aceasta, imaginea ar putea fi inaccesibil\u0103 anumitor utilizatori cu dizabilit\u0103\u021bi sau acelora care folosesc un navigator text sau cu imaginile dezactivate.","example_img":"Imagine mic\u0103",misc:"Diverse",mouseout:"Pentru maus \u00een afar\u0103",mouseover:"Pentru maus deasupra","alt_image":"Imagine alternativ\u0103","swap_image":"Schimb\u0103 imaginea",map:"Hart\u0103 imagine",id:"Id",rtl:"De la dreapta la st\u00e2nga",ltr:"De la st\u00e2nga la dreapta",classes:"Clase",style:"Stil","long_desc":"Descriere leg\u0103tur\u0103",langcode:"Cod limb\u0103",langdir:"Direc\u021bie limb\u0103","constrain_proportions":"Men\u021bine propor\u021biile",preview:"Previzualizare",title:"Titlu",general:"General","tab_advanced":"Avansat","tab_appearance":"Afi\u0219are","tab_general":"General",width:"L\u0103\u021bime",height:"\u00cen\u0103l\u021bime"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/ru_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/ru_dlg.js
deleted file mode 100644
index 3e341d1f7..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/ru_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ru.advimage_dlg',{"image_list":"\u0421\u043f\u0438\u0441\u043e\u043a \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a","align_right":"\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","align_left":"\u041f\u043e \u043b\u0435\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","align_textbottom":"\u041f\u043e \u043d\u0438\u0436\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e \u0442\u0435\u043a\u0441\u0442\u0430","align_texttop":"\u041f\u043e \u0432\u0435\u0440\u0445\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e \u0442\u0435\u043a\u0441\u0442\u0430","align_bottom":"\u041f\u043e \u043d\u0438\u0436\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e","align_middle":"\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443","align_top":"\u041f\u043e \u0432\u0435\u0440\u0445\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e","align_baseline":"\u041f\u043e \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u043b\u0438\u043d\u0438\u0438",align:"\u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435",hspace:"\u0413\u043e\u0440\u0438\u0437. \u043e\u0442\u0441\u0442\u0443\u043f",vspace:"\u0412\u0435\u0440\u0442. \u043e\u0442\u0441\u0442\u0443\u043f",dimensions:"\u0420\u0430\u0437\u043c\u0435\u0440",border:"\u0413\u0440\u0430\u043d\u0438\u0446\u0430",list:"\u0421\u043f\u0438\u0441\u043e\u043a",alt:"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435",src:"\u0410\u0434\u0440\u0435\u0441","dialog_title":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f","missing_alt":"\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0431\u0435\u0437 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f? \u0411\u0435\u0437 \u044d\u0442\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u0441 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u043c\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u0438\u043b\u0438 \u0442\u0435\u043c, \u043a\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u044b \u0438\u043b\u0438 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0441\u0430\u0439\u0442\u044b \u0441 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438.","example_img":"\u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f",misc:"\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b",mouseout:"\u0412 \u043f\u043e\u043a\u043e\u0435",mouseover:"\u041f\u0440\u0438 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u0438","alt_image":"\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435","swap_image":"\u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",map:"\u041a\u0430\u0440\u0442\u0430 \u0441\u0441\u044b\u043b\u043e\u043a",id:"\u0418\u043c\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430",rtl:"\u0421\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0435\u0432\u043e",ltr:"\u0421\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e",classes:"\u041a\u043b\u0430\u0441\u0441\u044b",style:"\u0421\u0442\u0438\u043b\u044c","long_desc":"\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043f\u043e\u043b\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435",langcode:"\u041a\u043e\u0434 \u044f\u0437\u044b\u043a\u0430",langdir:"\u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430","constrain_proportions":"\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u0438",preview:"\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440",title:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",general:"\u041e\u0431\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b","tab_advanced":"\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e","tab_appearance":"\u041f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435","tab_general":"\u041e\u0431\u0449\u0435\u0435",width:"\u0428\u0438\u0440\u0438\u043d\u0430",height:"\u0412\u044b\u0441\u043e\u0442\u0430"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/si_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/si_dlg.js
deleted file mode 100644
index 7eac6ba49..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/si_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('si.advimage_dlg',{"image_list":"Image list","align_right":"Right","align_left":"Left","align_textbottom":"Text bottom","align_texttop":"Text top","align_bottom":"Bottom","align_middle":"Middle","align_top":"Top","align_baseline":"Baseline",align:"Alignment",hspace:"Horizontal space",vspace:"Vertical space",dimensions:"Dimensions",border:"Border",list:"Image list",alt:"Image description",src:"Image URL","dialog_title":"Insert/edit image","missing_alt":"Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.","example_img":"Appearance preview image",misc:"Miscellaneous",mouseout:"for mouse out",mouseover:"for mouse over","alt_image":"Alternative image","swap_image":"Swap image",map:"Image map",id:"Id",rtl:"Right to left",ltr:"Left to right",classes:"Classes",style:"Style","long_desc":"Long description link",langcode:"Language code",langdir:"Language direction","constrain_proportions":"Constrain proportions",preview:"Preview",title:"Title",general:"General","tab_advanced":"Advanced","tab_appearance":"Appearance","tab_general":"General",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/sk_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/sk_dlg.js
deleted file mode 100644
index 2be48c336..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/sk_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sk.advimage_dlg',{"image_list":"Zoznam obr\u00e1zkov","align_right":"Vpravo","align_left":"V\u013eavo","align_textbottom":"So spodkom riadku","align_texttop":"S vrcholom riadku","align_bottom":"Dole","align_middle":"Na stred riadku","align_top":"Hore","align_baseline":"Na z\u00e1klad\u0148u",align:"Zarovnanie",hspace:"Horizont\u00e1lne odsadenie",vspace:"Vertik\u00e1lne odsadenie",dimensions:"Rozmery",border:"Or\u00e1movanie",list:"Zoznam obr\u00e1zkov",alt:"Popis obr\u00e1zku",src:"URL obr\u00e1zka","dialog_title":"Vlo\u017ei\u0165/upravi\u0165 obr\u00e1zok","missing_alt":"Naozaj chcete pokra\u010dova\u0165 bez vlo\u017een\u00e9ho popisu obr\u00e1zka? Bez popisu m\u00f4\u017ee by\u0165 obr\u00e1zok nepr\u00edstupn\u00fd u\u017e\u00edvate\u013eom so zrakov\u00fdm postihnut\u00edm, u\u017e\u00edvate\u013eom textov\u00fdch prehliada\u010dov alebo u\u017e\u00edvate\u013eom, ktor\u00ed maj\u00fa vypnut\u00e9 zobrazovanie obr\u00e1zkov.","example_img":"Pr\u00edklad obr\u00e1zka",misc:"R\u00f4zne",mouseout:"Po odjazden\u00ed my\u0161i",mouseover:"Pri nabehnut\u00ed my\u0161i","alt_image":"Alternat\u00edvny obr\u00e1zok","swap_image":"Prepnutie obr\u00e1zka",map:"Obr\u00e1zkov\u00e1 mapa",id:"ID",rtl:"Sprava do\u013eava",ltr:"Z\u013eava doprava",classes:"Triedy",style:"\u0160t\u00fdl","long_desc":"Dlh\u00fd popis",langcode:"K\u00f3d jazyka",langdir:"Smer textu","constrain_proportions":"Zachova\u0165 pomer str\u00e1n",preview:"N\u00e1h\u013ead",title:"Titulok",general:"Obecn\u00e9 parametre","tab_advanced":"Roz\u0161\u00edren\u00e9","tab_appearance":"Vzh\u013ead","tab_general":"Obecn\u00e9",width:"\u0160\u00edrka",height:"V\u00fd\u0161ka"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/sl_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/sl_dlg.js
deleted file mode 100644
index b2e990d11..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/sl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sl.advimage_dlg',{"image_list":"Seznam slik","align_right":"desno, plavajo\u010de","align_left":"levo, plavajo\u010de","align_textbottom":"dno besedila","align_texttop":"vrh besedila","align_bottom":"dno","align_middle":"sredina","align_top":"vrh","align_baseline":"osnovna \u010drta",align:"Poravnava",hspace:"Prostor le/de",vspace:"Prostor zg/sp",dimensions:"Dimenzije",border:"Obroba",list:"Seznam slik",alt:"Opis slike",src:"Naslov URL slike","dialog_title":"Vstavi/uredi sliko","missing_alt":"Zares \u017eelite nadaljevati, brez da bi dolo\u010dili opis slike? Brez njega slika nekaterim uporabnikom ne bo na voljo (izklopljen prikaz slik, tekstni brskalnik ali ljudje s slab\u0161im vidom).","example_img":"Predogled izgleda",misc:"Razno",mouseout:"pri mi\u0161ki izven",mouseover:"pri mi\u0161ki nad","alt_image":"Nadomestna slika","swap_image":"Zamenjava slike",map:"Karta slike",id:"Id",rtl:"Od desne proti levi",ltr:"Od leve proti desni",classes:"Razredi",style:"Slog","long_desc":"Povezava do opisa",langcode:"Koda jezika",langdir:"Smer jezika","constrain_proportions":"Zakleni razmerje",preview:"Predogled",title:"Naslov",general:"Splo\u0161no","tab_advanced":"Napredno","tab_appearance":"Izgled","tab_general":"Splo\u0161no",width:"\u0160irina",height:"Vi\u0161ina"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/sq_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/sq_dlg.js
deleted file mode 100644
index 780605269..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/sq_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sq.advimage_dlg',{"image_list":"Lista e fotove","align_right":"Djathtas","align_left":"Majtas","align_textbottom":"Posht\u00eb tekstit","align_texttop":"Sip\u00ebr tekstit","align_bottom":"Fund","align_middle":"Mes","align_top":"Krye","align_baseline":"Vij\u00eb fundore",align:"Drejtimi",hspace:"Hap\u00ebsira horizontale",vspace:"Hap\u00ebsira vertikale",dimensions:"P\u00ebrmasat",border:"Korniza",list:"Lista e fotove",alt:"P\u00ebrshkrimi i fotos",src:"URL e fotos","dialog_title":"Fut/edito foto","missing_alt":"Jeni t\u00eb sigurt q\u00eb doni t\u00eb vazhdoni pa p\u00ebrfshir\u00eb nj\u00eb p\u00ebrshkrim alternativ? Pa t\u00eb, foto mund t\u00eb jet\u00eb e pa aksesueshme nga njer\u00ebz me shikim t\u00eb kufizuar, q\u00eb p\u00ebrdorin shfletues q\u00eb nuk i shfaqin fotot apo i kan\u00eb \u00e7aktivizuar ato.","example_img":"Paraqitje e fotos",misc:"T\u00eb Ndryshme",mouseout:"n\u00eb mouse-in jasht\u00eb",mouseover:"n\u00eb mouse-in sip\u00ebr","alt_image":"P\u00ebrshkrimi alternativ","swap_image":"Nd\u00ebrro foto",map:"Harta e fotos",id:"Id",rtl:"Djathtas-Majtas",ltr:"Majtas-Djathtas",classes:"Klasat",style:"Stili","long_desc":"Lidhja e p\u00ebrshkrimit t\u00eb gjat\u00eb",langcode:"Kodi i gjuh\u00ebs",langdir:"Drejtimi i gjuh\u00ebs","constrain_proportions":"Ruaj raportet",preview:"Paraqitje",title:"Titulli",general:"T\u00eb P\u00ebrgjithshme","tab_advanced":"T\u00eb Avancuara","tab_appearance":"Pamja","tab_general":"T\u00eb P\u00ebrgjithshme",width:"Gjer\u00ebsia",height:"Gjat\u00ebsia"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/sr_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/sr_dlg.js
deleted file mode 100644
index 49c197aba..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/sr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sr.advimage_dlg',{"image_list":"Slika (sa liste)","align_right":"Desno","align_left":"Levo","align_textbottom":"Dno teksta","align_texttop":"Vrh teksta","align_bottom":"Dole","align_middle":"Sredina","align_top":"Gore","align_baseline":"Osnovna linija",align:"Poravnavanje",hspace:"Horizontalni razmak",vspace:"Vertikalni razmak",dimensions:"Dimenzije",border:"Ivice",list:"Slika (sa liste)",alt:"Opis slike",src:"URL slike","dialog_title":"Umetni/Uredi sliku","missing_alt":"Da li ste sigurni da \u017eelite da izostavite opis slike? Slika mo\u017ee biti nedostupna ljudima sa pote\u0161ko\u0107ama ili onima koji koriste web \u010dita\u010de bez prikaza slika.","example_img":"Izgled preliminarnog prikaza slike",misc:"Razno",mouseout:"Za odlazak mi\u0161a sa slike",mouseover:"Za dolazak mi\u0161a na sliku","alt_image":"Alternativna slika","swap_image":"Interaktivna slika",map:"Mapa slike",id:"Id",rtl:"Zdesna nalevo",ltr:"Sleva nadesno",classes:"Klase",style:"Stil","long_desc":"Link ka du\u017eem opisu",langcode:"Kod jezika",langdir:"Smer jezika","constrain_proportions":"Zadr\u017ei proporcije",preview:"Preliminarni prikaz",title:"Naslov",general:"Osnovno","tab_advanced":"Napredno","tab_appearance":"Izgled","tab_general":"Osnovno",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/sv_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/sv_dlg.js
deleted file mode 100644
index af1e61c55..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/sv_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sv.advimage_dlg',{"image_list":"Bildlista","align_right":"H\u00f6ger","align_left":"V\u00e4nster","align_textbottom":"Botten av texten","align_texttop":"Toppen av texten","align_bottom":"Botten","align_middle":"Mitten","align_top":"Toppen","align_baseline":"Baslinje",align:"Justering",hspace:"Horisontalrymd",vspace:"Vertikalrymd",dimensions:"Dimensioner",border:"Ram",list:"Bildlista",alt:"Bildens beskrivning",src:"Bildens URL","dialog_title":"Infoga/redigera bild","missing_alt":"Vill du forts\u00e4tta utan bildbeskrivning?\nIcke grafiska webbl\u00e4sare kommer inte att kunna tolka bilden f\u00f6r anv\u00e4ndaren.","example_img":"Exempelbild",misc:"\u00d6vrigt",mouseout:"vid musen utanf\u00f6r",mouseover:"vid musen ovanf\u00f6r","alt_image":"Alternativbild","swap_image":"Utbytningsbild",map:"L\u00e4nkkarta",id:"Id",rtl:"H\u00f6ger till v\u00e4nster",ltr:"V\u00e4nster till h\u00f6ger",classes:"Klasser",style:"Stil","long_desc":"L\u00e5ng beskrivning",langcode:"Spr\u00e5kkod",langdir:"Skriftriktning","constrain_proportions":"Bibeh\u00e5ll proportionerna",preview:"F\u00f6rhandsvisning",title:"Titel",general:"Generellt","tab_advanced":"Avancerat","tab_appearance":"Utseende","tab_general":"Generellt",width:"Bredd",height:"H\u00f6jd"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/ta_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/ta_dlg.js
deleted file mode 100644
index efb4f91f0..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/ta_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ta.advimage_dlg',{"image_list":"Image list","align_right":"Right","align_left":"Left","align_textbottom":"Text bottom","align_texttop":"Text top","align_bottom":"Bottom","align_middle":"Middle","align_top":"Top","align_baseline":"Baseline",align:"Alignment",hspace:"Horizontal space",vspace:"Vertical space",dimensions:"Dimensions",border:"Border",list:"Image list",alt:"Image description",src:"Image URL","dialog_title":"Insert/edit image","missing_alt":"Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.","example_img":"Appearance preview image",misc:"Miscellaneous",mouseout:"for mouse out",mouseover:"for mouse over","alt_image":"Alternative image","swap_image":"Swap image",map:"Image map",id:"Id",rtl:"Right to left",ltr:"Left to right",classes:"Classes",style:"Style","long_desc":"Long description link",langcode:"Language code",langdir:"Language direction","constrain_proportions":"Constrain proportions",preview:"Preview",title:"Title",general:"General","tab_advanced":"Advanced","tab_appearance":"Appearance","tab_general":"General",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/th_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/th_dlg.js
deleted file mode 100644
index f8dff4fab..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/th_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('th.advimage_dlg',{"image_list":"\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e23\u0e39\u0e1b","align_right":"\u0e02\u0e27\u0e32","align_left":"\u0e0b\u0e49\u0e32\u0e22","align_textbottom":"\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23\u0e2d\u0e22\u0e39\u0e48\u0e25\u0e48\u0e32\u0e07","align_texttop":"\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23\u0e2d\u0e22\u0e39\u0e48\u0e1a\u0e19","align_bottom":"\u0e25\u0e48\u0e32\u0e07","align_middle":"\u0e01\u0e25\u0e32\u0e07","align_top":"\u0e1a\u0e19","align_baseline":"\u0e40\u0e2a\u0e49\u0e19\u0e1e\u0e37\u0e49\u0e19",align:"\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07\u0e08\u0e31\u0e14\u0e27\u0e32\u0e07",hspace:"\u0e23\u0e30\u0e22\u0e30\u0e2b\u0e48\u0e32\u0e07\u0e41\u0e19\u0e27\u0e19\u0e2d\u0e19",vspace:"\u0e23\u0e30\u0e22\u0e30\u0e2b\u0e48\u0e32\u0e07\u0e41\u0e19\u0e27\u0e15\u0e31\u0e49\u0e07",dimensions:"\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07",border:"\u0e01\u0e23\u0e2d\u0e1a",list:"\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e23\u0e39\u0e1b",alt:"\u0e23\u0e32\u0e22\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14\u0e23\u0e39\u0e1b",src:"\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e23\u0e39\u0e1b","dialog_title":"\u0e40\u0e1e\u0e34\u0e48\u0e21/\u0e41\u0e01\u0e49\u0e44\u0e02 image","missing_alt":"\u0e04\u0e38\u0e13\u0e41\u0e19\u0e48\u0e43\u0e08\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e15\u0e48\u0e2d\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e43\u0e2a\u0e48\u0e04\u0e33\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22\u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e ? \u0e01\u0e32\u0e23\u0e43\u0e2a\u0e48\u0e04\u0e33\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22\u0e23\u0e39\u0e1b\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e1c\u0e39\u0e49\u0e1e\u0e34\u0e01\u0e32\u0e23\u0e17\u0e32\u0e07\u0e2a\u0e32\u0e22\u0e15\u0e32\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e23\u0e39\u0e49\u0e44\u0e14\u0e49\u0e27\u0e48\u0e32\u0e23\u0e39\u0e1b\u0e04\u0e38\u0e13\u0e04\u0e37\u0e2d\u0e23\u0e39\u0e1b\u0e2d\u0e30\u0e44\u0e23","example_img":"\u0e14\u0e39\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e25\u0e31\u0e01\u0e29\u0e13\u0e30\u0e02\u0e2d\u0e07\u0e23\u0e39\u0e1b",misc:"\u0e40\u0e1a\u0e47\u0e14\u0e40\u0e15\u0e25\u0e47\u0e14",mouseout:"\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e40\u0e2d\u0e32\u0e40\u0e21\u0e49\u0e32\u0e2a\u0e4c\u0e2d\u0e2d\u0e01",mouseover:"\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e40\u0e2d\u0e32\u0e40\u0e21\u0e49\u0e32\u0e2a\u0e4c\u0e0a\u0e35\u0e49","alt_image":"\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e23\u0e39\u0e1b","swap_image":"Swap image",map:"Image map",id:"Id",rtl:"\u0e02\u0e27\u0e32\u0e44\u0e1b\u0e0b\u0e49\u0e32\u0e22",ltr:"\u0e0b\u0e49\u0e32\u0e22\u0e44\u0e1b\u0e02\u0e27\u0e32",classes:"\u0e04\u0e25\u0e32\u0e2a",style:"\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a","long_desc":"\u0e23\u0e32\u0e22\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14\u0e25\u0e34\u0e49\u0e07\u0e04\u0e4c",langcode:"\u0e42\u0e04\u0e49\u0e14\u0e20\u0e32\u0e29\u0e32",langdir:"\u0e17\u0e34\u0e28\u0e17\u0e32\u0e07\u0e01\u0e32\u0e23\u0e2d\u0e48\u0e32\u0e19","constrain_proportions":"\u0e04\u0e07\u0e2a\u0e31\u0e14\u0e2a\u0e48\u0e27\u0e19",preview:"\u0e14\u0e39\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07",title:"\u0e0a\u0e37\u0e48\u0e2d",general:"\u0e17\u0e31\u0e48\u0e27\u0e44\u0e1b","tab_advanced":"\u0e02\u0e31\u0e49\u0e19\u0e2a\u0e39\u0e07","tab_appearance":"\u0e25\u0e31\u0e01\u0e29\u0e13\u0e30","tab_general":"\u0e17\u0e31\u0e48\u0e27\u0e44\u0e1b",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/tr_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/tr_dlg.js
deleted file mode 100644
index 0a1868d1e..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/tr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('tr.advimage_dlg',{"image_list":"Resim listesi","align_right":"Sa\u011f","align_left":"Sol","align_textbottom":"Metin altta","align_texttop":"Metin \u00fcstte","align_bottom":"Alt","align_middle":"Orta","align_top":"\u00dcst","align_baseline":"Taban hizas\u0131",align:"Hizalama",hspace:"Yatay bo\u015fluk",vspace:"Dikey bo\u015fluk",dimensions:"Boyutlar",border:"Kenarl\u0131k",list:"Resim listesi",alt:"Resim a\u00e7\u0131klamas\u0131",src:"Resmin URL\'si","dialog_title":"Resim ekle/d\u00fczenle","missing_alt":"Resim a\u00e7\u0131klamas\u0131 girmeden devam etmek istedi\u011finize emini misiniz? Bu olmadan taray\u0131c\u0131da resimleri kapatanlar, metin bazl\u0131 taray\u0131c\u0131lar veya resim baz\u0131 engelli kullan\u0131c\u0131lar g\u00f6remeyeceklerdir.","example_img":"Resim \u00f6nizleme g\u00f6r\u00fcn\u00fcm\u00fc",misc:"\u00c7e\u015fitli",mouseout:"Fare d\u0131\u015f\u0131ndayken",mouseover:"Fare \u00fczerindeyken","alt_image":"Alternatif resim","swap_image":"Resmi takas et",map:"Resim haritas\u0131",id:"Id",rtl:"Soldan sa\u011fa",ltr:"Sa\u011fdan sola",classes:"S\u0131n\u0131fla",style:"Stil","long_desc":"Uzun a\u00e7\u0131klamal\u0131 ba\u011flant\u0131",langcode:"Dil kodu",langdir:"Dil y\u00f6n\u00fc","constrain_proportions":"Oran\u0131 s\u0131n\u0131rla",preview:"\u00d6nizleme",title:"Ba\u015fl\u0131k",general:"Genel","tab_advanced":"Geli\u015fmi\u015f","tab_appearance":"G\u00f6r\u00fcn\u00fcm","tab_general":"Genel",width:"Geni\u015flik",height:"Y\u00fckseklik"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/uk_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/uk_dlg.js
deleted file mode 100644
index d083a13bb..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/uk_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('uk.advimage_dlg',{"image_list":"\u0421\u043f\u0438\u0441\u043e\u043a \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u044c","align_right":"\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","align_left":"\u041f\u043e \u043b\u0456\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","align_textbottom":"\u041f\u043e \u043d\u0438\u0436\u043d\u044c\u043e\u043c\u0443 \u043a\u0440\u0430\u044e \u0442\u0435\u043a\u0441\u0442\u0443","align_texttop":"\u041f\u043e \u0432\u0435\u0440\u0445\u043d\u044c\u043e\u043c\u0443 \u043a\u0440\u0430\u044e \u0442\u0435\u043a\u0441\u0442\u0443","align_bottom":"\u041f\u043e \u043d\u0438\u0436\u043d\u044c\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","align_middle":"\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443","align_top":"\u041f\u043e \u0432\u0435\u0440\u0445\u043d\u044c\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","align_baseline":"\u041f\u043e \u0431\u0430\u0437\u043e\u0432\u0456\u0439 \u043b\u0456\u043d\u0456\u0457",align:"\u0412\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f",hspace:"\u0413\u043e\u0440\u0438\u0437. \u0432\u0456\u0434\u0441\u0442\u0443\u043f",vspace:"\u0412\u0435\u0440\u0442. \u0432\u0456\u0434\u0441\u0442\u0443\u043f",dimensions:"\u0420\u043e\u0437\u043c\u0456\u0440\u0438",border:"\u0420\u0430\u043c\u043a\u0430",list:"\u0421\u043f\u0438\u0441\u043e\u043a \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u044c",alt:"\u041e\u043f\u0438\u0441",src:"\u041f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u043d\u0430 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f","dialog_title":"\u0414\u043e\u0434\u0430\u0442\u0438/\u0437\u043c\u0456\u043d\u0438\u0442\u0438 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f","missing_alt":"\u0412\u0438 \u0432\u043f\u0435\u0432\u043d\u0435\u043d\u043d\u0456, \u0449\u043e \u0431\u0430\u0436\u0430\u0454\u0442\u0435 \u043f\u0440\u043e\u0434\u043e\u0432\u0436\u0438\u0442\u0438 \u0431\u0435\u0437 \u043e\u043f\u0438\u0441\u0443 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f? \u0411\u0435\u0437 \u0446\u044c\u043e\u0433\u043e, \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f \u043d\u0435 \u0431\u0443\u0434\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0438\u043c \u0434\u0435\u044f\u043a\u0438\u043c \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430\u043c \u0437 \u0432\u0430\u0434\u0430\u043c\u0438, \u0430\u0431\u043e \u0442\u0438\u043c, \u0445\u0442\u043e \u043a\u043e\u0440\u0438\u0442\u0443\u0454\u0442\u044c\u0441\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u0438\u043c\u0438 \u043f\u0435\u0440\u0435\u0433\u043b\u044f\u0434\u0430\u0447\u0430\u043c\u0438, \u0430\u0431\u043e \u043f\u0440\u043e\u0433\u043b\u044f\u0434\u0430\u0454 \u0456\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0441\u0442\u043e\u0440\u0456\u043d\u043a\u0438 \u0437 \u0432\u0438\u043c\u043a\u043d\u0435\u043d\u0438\u043c\u0438 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f\u043c\u0438.","example_img":"\u0412\u0438\u0433\u043b\u044f\u0434 \u043f\u0435\u0440\u0435\u0433\u043b\u044f\u0434\u0443 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",misc:"\u0406\u043d\u0448\u0435",mouseout:"\u043f\u0440\u0438 \u0432\u0456\u0434\u0432\u0435\u0434\u0435\u043d\u043d\u0456",mouseover:"\u043f\u0440\u0438 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u043d\u0456","alt_image":"\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u0435 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f","swap_image":"\u0417\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f \u0437\u0430\u043c\u0456\u043d\u043d\u0438\u043a",map:"\u041c\u0430\u043f\u0430 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",id:"\u0406\u0434\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0442\u043e\u0440",rtl:"\u0421\u043f\u0440\u0430\u0432\u0430 \u043b\u0456\u0432\u043e\u0440\u0443\u0447",ltr:"\u0417\u043b\u0456\u0432\u0430 \u043f\u0440\u0430\u0432\u043e\u0440\u0443\u0447",classes:"\u041a\u043b\u0430\u0441\u0438",style:"\u0421\u0442\u0438\u043b\u044c","long_desc":"\u041f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u043d\u0430 \u043f\u043e\u0432\u043d\u0438\u0439 \u043e\u043f\u0438\u0441",langcode:"\u041a\u043e\u0434 \u043c\u043e\u0432\u0438",langdir:"\u041d\u0430\u043f\u0440\u044f\u043c\u043e\u043a \u043c\u043e\u0432\u0438","constrain_proportions":"\u0417\u0431\u0435\u0440\u0456\u0433\u0430\u0442\u0438 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0456\u0457",preview:"\u041f\u0435\u0440\u0435\u0433\u043b\u044f\u0434",title:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",general:"\u0417\u0430\u0433\u0430\u043b\u044c\u043d\u0435","tab_advanced":"\u0414\u043e\u0434\u0430\u0442\u043a\u043e\u0432\u043e","tab_appearance":"\u0412\u0438\u0433\u043b\u044f\u0434","tab_general":"\u0417\u0430\u0433\u0430\u043b\u044c\u043d\u0435",width:"\u0428\u0438\u0440\u0438\u043d\u0430",height:"\u0412\u0438\u0441\u043e\u0442\u0430"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/vi_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/vi_dlg.js
deleted file mode 100644
index 361b0b883..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/vi_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('vi.advimage_dlg',{"image_list":"Danh s\u00e1ch \u1ea3nh","align_right":"Ph\u1ea3i","align_left":"Tr\u00e1i","align_textbottom":"V\u0103n b\u1ea3n d\u01b0\u1edbi c\u00f9ng","align_texttop":"V\u0103n b\u1ea3n tr\u00ean c\u00f9ng","align_bottom":"D\u01b0\u1edbi c\u00f9ng","align_middle":"Gi\u1eefa","align_top":"Tr\u00ean c\u00f9ng","align_baseline":"D\u00f2ng c\u01a1 s\u1edf",align:"Canh l\u1ec1",hspace:"Kho\u1ea3ng c\u00e1ch ngang",vspace:"Kho\u1ea3ng c\u00e1ch d\u1ecdc",dimensions:"K\u00edch th\u01b0\u1edbc",border:"Vi\u1ec1n",list:"Danh s\u00e1ch \u1ea3nh",alt:"M\u00f4 t\u1ea3 \u1ea3nh",src:"URL \u1ea3nh","dialog_title":"Ch\u00e8n/s\u1eeda \u1ea3nh","missing_alt":"Ti\u1ebfp t\u1ee5c v\u1edbi \u0111\u01b0\u1eddng d\u1eabn kh\u00f4ng t\u1ed3n t\u1ea1i ?.","example_img":"Hi\u1ec3n th\u1ecb h\u00ecnh \u1ea3nh xem tr\u01b0\u1edbc",misc:"Linh tinh",mouseout:"cho chu\u1ed9t ra",mouseover:"cho chu\u1ed9t l\u00ean","alt_image":"\u1ea2nh thay th\u1ebf","swap_image":"Trao \u0111\u1ed5i \u1ea3nh",map:"S\u01a1 \u0111\u1ed3 \u1ea3nh",id:"Id",rtl:"Ph\u1ea3i qua tr\u00e1i",ltr:"Tr\u00e1i qua ph\u1ea3i",classes:"L\u1edbp",style:"Ki\u1ec3u d\u00e1ng","long_desc":"Li\u00ean k\u1ebft m\u00f4 t\u1ea3 d\u00e0i",langcode:"M\u00e3 ng\u00f4n ng\u1eef",langdir:"H\u01b0\u1edbng ng\u00f4n ng\u1eef","constrain_proportions":"R\u00e0ng bu\u1ed9c t\u1ec9 l\u1ec7",preview:"Xem tr\u01b0\u1edbc",title:"Ti\u00eau \u0111\u1ec1",general:"Chung","tab_advanced":"N\u00e2ng cao","tab_appearance":"Xu\u1ea5t hi\u1ec7n","tab_general":"Chung",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/zh-cn_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/zh-cn_dlg.js
deleted file mode 100644
index 5cf6bf5c9..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/zh-cn_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('zh-cn.advimage_dlg',{"image_list":"\u56fe\u7247\u5217\u8868","align_right":"\u53f3\u5bf9\u9f50","align_left":"\u5de6\u5bf9\u9f50","align_textbottom":"\u6587\u5b57\u4e0b\u65b9","align_texttop":"\u6587\u5b57\u4e0a\u65b9","align_bottom":"\u5e95\u7aef\u5bf9\u9f50","align_middle":"\u5c45\u4e2d\u5bf9\u9f50","align_top":"\u9876\u7aef\u5bf9\u9f50","align_baseline":"\u5e95\u7ebf",align:"\u5bf9\u9f50",hspace:"\u6c34\u5e73\u8ddd\u79bb",vspace:"\u5782\u76f4\u8ddd\u79bb",dimensions:"\u5c3a\u5bf8",border:"\u8fb9\u6846",list:"\u56fe\u7247\u5217\u8868",alt:"\u56fe\u7247\u63cf\u8ff0",src:"\u56fe\u7247\u94fe\u63a5","dialog_title":"\u63d2\u5165/\u7f16\u8f91 \u56fe\u7247","missing_alt":"\u56fe\u7247\u6ca1\u6709\u8bf4\u660e\u6587\u5b57\uff0c\u60a8\u662f\u5426\u8981\u7ee7\u7eed\uff1f\u6ca1\u6709\u8bf4\u660e\u6587\u5b57\u7684\u56fe\u7247\uff0c\u53ef\u80fd\u7ed9\u6b8b\u75be\u4eba\u58eb\u3001\u6587\u672c\u6d4f\u89c8\u5668\u6216\u5173\u95ed\u56fe\u7247\u529f\u80fd\u7684\u6d4f\u89c8\u5668\u8bbf\u95ee\u9020\u6210\u56f0\u96be\u3002","example_img":"\u5916\u89c2\u9884\u89c8\u56fe",misc:"\u5176\u4ed6",mouseout:"\u9f20\u6807\u6ed1\u51fa",mouseover:"\u9f20\u6807\u6ed1\u5165","alt_image":"\u66ff\u6362\u56fe\u7247","swap_image":"\u56fe\u7247\u5207\u6362",map:"\u56fe\u7247map",id:"ID",rtl:"\u4ece\u53f3\u5230\u5de6",ltr:"\u4ece\u5de6\u5230\u53f3",classes:"\u7c7b\u522b",style:"\u6837\u5f0f","long_desc":"\u957f\u63cf\u8ff0\u94fe\u63a5",langcode:"\u8bed\u8a00\u7f16\u7801",langdir:"\u8bed\u8a00\u6587\u5b57\u65b9\u5411","constrain_proportions":"\u4fdd\u6301\u6bd4\u4f8b",preview:"\u9884\u89c8",title:"\u6807\u9898",general:"\u666e\u901a","tab_advanced":"\u9ad8\u7ea7","tab_appearance":"\u5916\u89c2","tab_general":"\u666e\u901a",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advimage/langs/zh-tw_dlg.js b/program/js/tiny_mce/plugins/advimage/langs/zh-tw_dlg.js
deleted file mode 100644
index 9f51ade2f..000000000
--- a/program/js/tiny_mce/plugins/advimage/langs/zh-tw_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('zh-tw.advimage_dlg',{"image_list":"\u5716\u7247\u6e05\u55ae","align_right":"\u5411\u53f3\u5c0d\u9f4a","align_left":"\u5411\u5de6\u5c0d\u9f4a","align_textbottom":"\u6587\u5b57\u4e0b\u65b9","align_texttop":"\u6587\u81ea\u4e0a\u65b9","align_bottom":"\u4e0b\u65b9","align_middle":"\u4e2d\u9593","align_top":"\u4e0a\u65b9","align_baseline":"\u57fa\u6e96\u7dda",align:"\u5c0d\u9f4a\u65b9\u5f0f",hspace:"\u6c34\u5e73\u8ddd\u96e2",vspace:"\u5782\u76f4\u8ddd\u96e2",dimensions:"\u5c3a\u5bf8",border:"\u6846\u67b6",list:"\u5716\u7247\u6e05\u55ae",alt:"\u5716\u7247\u8aaa\u660e",src:"\u5716\u7247 URL","dialog_title":"\u52a0\u5165 / \u8a2d\u5b9a\u5716\u7247","missing_alt":"\u60a8\u7684\u5716\u7247\u6c92\u6709\u8aaa\u660e\uff0c\u9019\u53ef\u80fd\u6703\u8b93\u4e00\u4e9b\u7db2\u53cb\u700f\u89bd\u6642\u6709\u4e9b\u9ebb\u7169\uff0c\u60a8\u78ba\u5b9a\u8981\u5ffd\u7565\u5b83\u55ce\uff1f","example_img":"\u9810\u89bd\u5716\u7247",misc:"\u5176\u4ed6\u8a2d\u5b9a",mouseout:"\u6ed1\u9f20\u79fb\u958b\u7684\u6642\u5019",mouseover:"\u6ed1\u9f20\u79fb\u5230\u5716\u7247\u4e0a\u7684\u6642\u5019","alt_image":"\u66ff\u63db\u5716\u7247","swap_image":"\u66f4\u63db\u5716\u7247\u6548\u679c",map:"\u5f71\u50cf\u5730\u5716",id:"\u5716\u7247\u7684 ID",rtl:"\u5411\u53f3\u908a\u5230\u5de6\u908a",ltr:"\u5411\u5de6\u908a\u5230\u53f3\u908a",classes:"\u985e\u5225 (Class)",style:"\u6a23\u5f0f","long_desc":"\u66ff\u4ee3\u5716\u7247",langcode:"\u8a9e\u7cfb\u4ee3\u865f",langdir:"\u66f8\u5beb\u65b9\u5411","constrain_proportions":"\u7dad\u6301\u5716\u7247\u6bd4\u4f8b",preview:"\u9810\u89bd",title:"\u6a19\u984c",general:"\u4e00\u822c","tab_advanced":"\u5176\u4ed6\u8a2d\u5b9a","tab_appearance":"\u5916\u89c0\u6a23\u5f0f","tab_general":"\u4e00\u822c",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/css/advlink.css b/program/js/tiny_mce/plugins/advlink/css/advlink.css
deleted file mode 100644
index 14364316a..000000000
--- a/program/js/tiny_mce/plugins/advlink/css/advlink.css
+++ /dev/null
@@ -1,8 +0,0 @@
-.mceLinkList, .mceAnchorList, #targetlist {width:280px;}
-.mceActionPanel {margin-top:7px;}
-.panel_wrapper div.current {height:320px;}
-#classlist, #title, #href {width:280px;}
-#popupurl, #popupname {width:200px;}
-#popupwidth, #popupheight, #popupleft, #popuptop {width:30px;vertical-align:middle;text-align:center;}
-#id, #style, #classes, #target, #dir, #hreflang, #lang, #charset, #type, #rel, #rev, #tabindex, #accesskey {width:200px;}
-#events_panel input {width:200px;}
diff --git a/program/js/tiny_mce/plugins/advlink/editor_plugin.js b/program/js/tiny_mce/plugins/advlink/editor_plugin.js
deleted file mode 100644
index 983fe5a9c..000000000
--- a/program/js/tiny_mce/plugins/advlink/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.AdvancedLinkPlugin",{init:function(a,b){this.editor=a;a.addCommand("mceAdvLink",function(){var c=a.selection;if(c.isCollapsed()&&!a.dom.getParent(c.getNode(),"A")){return}a.windowManager.open({file:b+"/link.htm",width:480+parseInt(a.getLang("advlink.delta_width",0)),height:400+parseInt(a.getLang("advlink.delta_height",0)),inline:1},{plugin_url:b})});a.addButton("link",{title:"advlink.link_desc",cmd:"mceAdvLink"});a.addShortcut("ctrl+k","advlink.advlink_desc","mceAdvLink");a.onNodeChange.add(function(d,c,f,e){c.setDisabled("link",e&&f.nodeName!="A");c.setActive("link",f.nodeName=="A"&&!f.name)})},getInfo:function(){return{longname:"Advanced link",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("advlink",tinymce.plugins.AdvancedLinkPlugin)})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/editor_plugin_src.js b/program/js/tiny_mce/plugins/advlink/editor_plugin_src.js
deleted file mode 100644
index 14e46a762..000000000
--- a/program/js/tiny_mce/plugins/advlink/editor_plugin_src.js
+++ /dev/null
@@ -1,61 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- tinymce.create('tinymce.plugins.AdvancedLinkPlugin', {
- init : function(ed, url) {
- this.editor = ed;
-
- // Register commands
- ed.addCommand('mceAdvLink', function() {
- var se = ed.selection;
-
- // No selection and not in link
- if (se.isCollapsed() && !ed.dom.getParent(se.getNode(), 'A'))
- return;
-
- ed.windowManager.open({
- file : url + '/link.htm',
- width : 480 + parseInt(ed.getLang('advlink.delta_width', 0)),
- height : 400 + parseInt(ed.getLang('advlink.delta_height', 0)),
- inline : 1
- }, {
- plugin_url : url
- });
- });
-
- // Register buttons
- ed.addButton('link', {
- title : 'advlink.link_desc',
- cmd : 'mceAdvLink'
- });
-
- ed.addShortcut('ctrl+k', 'advlink.advlink_desc', 'mceAdvLink');
-
- ed.onNodeChange.add(function(ed, cm, n, co) {
- cm.setDisabled('link', co && n.nodeName != 'A');
- cm.setActive('link', n.nodeName == 'A' && !n.name);
- });
- },
-
- getInfo : function() {
- return {
- longname : 'Advanced link',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('advlink', tinymce.plugins.AdvancedLinkPlugin);
-})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/js/advlink.js b/program/js/tiny_mce/plugins/advlink/js/advlink.js
deleted file mode 100644
index f013aac1e..000000000
--- a/program/js/tiny_mce/plugins/advlink/js/advlink.js
+++ /dev/null
@@ -1,543 +0,0 @@
-/* Functions for the advlink plugin popup */
-
-tinyMCEPopup.requireLangPack();
-
-var templates = {
- "window.open" : "window.open('${url}','${target}','${options}')"
-};
-
-function preinit() {
- var url;
-
- if (url = tinyMCEPopup.getParam("external_link_list_url"))
- document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');
-}
-
-function changeClass() {
- var f = document.forms[0];
-
- f.classes.value = getSelectValue(f, 'classlist');
-}
-
-function init() {
- tinyMCEPopup.resizeToInnerSize();
-
- var formObj = document.forms[0];
- var inst = tinyMCEPopup.editor;
- var elm = inst.selection.getNode();
- var action = "insert";
- var html;
-
- document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser','href','file','advlink');
- document.getElementById('popupurlbrowsercontainer').innerHTML = getBrowserHTML('popupurlbrowser','popupurl','file','advlink');
- document.getElementById('targetlistcontainer').innerHTML = getTargetListHTML('targetlist','target');
-
- // Link list
- html = getLinkListHTML('linklisthref','href');
- if (html == "")
- document.getElementById("linklisthrefrow").style.display = 'none';
- else
- document.getElementById("linklisthrefcontainer").innerHTML = html;
-
- // Anchor list
- html = getAnchorListHTML('anchorlist','href');
- if (html == "")
- document.getElementById("anchorlistrow").style.display = 'none';
- else
- document.getElementById("anchorlistcontainer").innerHTML = html;
-
- // Resize some elements
- if (isVisible('hrefbrowser'))
- document.getElementById('href').style.width = '260px';
-
- if (isVisible('popupurlbrowser'))
- document.getElementById('popupurl').style.width = '180px';
-
- elm = inst.dom.getParent(elm, "A");
- if (elm == null) {
- var prospect = inst.dom.create("p", null, inst.selection.getContent());
- if (prospect.childNodes.length === 1) {
- elm = prospect.firstChild;
- }
- }
-
- if (elm != null && elm.nodeName == "A")
- action = "update";
-
- formObj.insert.value = tinyMCEPopup.getLang(action, 'Insert', true);
-
- setPopupControlsDisabled(true);
-
- if (action == "update") {
- var href = inst.dom.getAttrib(elm, 'href');
- var onclick = inst.dom.getAttrib(elm, 'onclick');
- var linkTarget = inst.dom.getAttrib(elm, 'target') ? inst.dom.getAttrib(elm, 'target') : "_self";
-
- // Setup form data
- setFormValue('href', href);
- setFormValue('title', inst.dom.getAttrib(elm, 'title'));
- setFormValue('id', inst.dom.getAttrib(elm, 'id'));
- setFormValue('style', inst.dom.getAttrib(elm, "style"));
- setFormValue('rel', inst.dom.getAttrib(elm, 'rel'));
- setFormValue('rev', inst.dom.getAttrib(elm, 'rev'));
- setFormValue('charset', inst.dom.getAttrib(elm, 'charset'));
- setFormValue('hreflang', inst.dom.getAttrib(elm, 'hreflang'));
- setFormValue('dir', inst.dom.getAttrib(elm, 'dir'));
- setFormValue('lang', inst.dom.getAttrib(elm, 'lang'));
- setFormValue('tabindex', inst.dom.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : ""));
- setFormValue('accesskey', inst.dom.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : ""));
- setFormValue('type', inst.dom.getAttrib(elm, 'type'));
- setFormValue('onfocus', inst.dom.getAttrib(elm, 'onfocus'));
- setFormValue('onblur', inst.dom.getAttrib(elm, 'onblur'));
- setFormValue('onclick', onclick);
- setFormValue('ondblclick', inst.dom.getAttrib(elm, 'ondblclick'));
- setFormValue('onmousedown', inst.dom.getAttrib(elm, 'onmousedown'));
- setFormValue('onmouseup', inst.dom.getAttrib(elm, 'onmouseup'));
- setFormValue('onmouseover', inst.dom.getAttrib(elm, 'onmouseover'));
- setFormValue('onmousemove', inst.dom.getAttrib(elm, 'onmousemove'));
- setFormValue('onmouseout', inst.dom.getAttrib(elm, 'onmouseout'));
- setFormValue('onkeypress', inst.dom.getAttrib(elm, 'onkeypress'));
- setFormValue('onkeydown', inst.dom.getAttrib(elm, 'onkeydown'));
- setFormValue('onkeyup', inst.dom.getAttrib(elm, 'onkeyup'));
- setFormValue('target', linkTarget);
- setFormValue('classes', inst.dom.getAttrib(elm, 'class'));
-
- // Parse onclick data
- if (onclick != null && onclick.indexOf('window.open') != -1)
- parseWindowOpen(onclick);
- else
- parseFunction(onclick);
-
- // Select by the values
- selectByValue(formObj, 'dir', inst.dom.getAttrib(elm, 'dir'));
- selectByValue(formObj, 'rel', inst.dom.getAttrib(elm, 'rel'));
- selectByValue(formObj, 'rev', inst.dom.getAttrib(elm, 'rev'));
- selectByValue(formObj, 'linklisthref', href);
-
- if (href.charAt(0) == '#')
- selectByValue(formObj, 'anchorlist', href);
-
- addClassesToList('classlist', 'advlink_styles');
-
- selectByValue(formObj, 'classlist', inst.dom.getAttrib(elm, 'class'), true);
- selectByValue(formObj, 'targetlist', linkTarget, true);
- } else
- addClassesToList('classlist', 'advlink_styles');
-}
-
-function checkPrefix(n) {
- if (n.value && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCEPopup.getLang('advlink_dlg.is_email')))
- n.value = 'mailto:' + n.value;
-
- if (/^\s*www\./i.test(n.value) && confirm(tinyMCEPopup.getLang('advlink_dlg.is_external')))
- n.value = 'http://' + n.value;
-}
-
-function setFormValue(name, value) {
- document.forms[0].elements[name].value = value;
-}
-
-function parseWindowOpen(onclick) {
- var formObj = document.forms[0];
-
- // Preprocess center code
- if (onclick.indexOf('return false;') != -1) {
- formObj.popupreturn.checked = true;
- onclick = onclick.replace('return false;', '');
- } else
- formObj.popupreturn.checked = false;
-
- var onClickData = parseLink(onclick);
-
- if (onClickData != null) {
- formObj.ispopup.checked = true;
- setPopupControlsDisabled(false);
-
- var onClickWindowOptions = parseOptions(onClickData['options']);
- var url = onClickData['url'];
-
- formObj.popupname.value = onClickData['target'];
- formObj.popupurl.value = url;
- formObj.popupwidth.value = getOption(onClickWindowOptions, 'width');
- formObj.popupheight.value = getOption(onClickWindowOptions, 'height');
-
- formObj.popupleft.value = getOption(onClickWindowOptions, 'left');
- formObj.popuptop.value = getOption(onClickWindowOptions, 'top');
-
- if (formObj.popupleft.value.indexOf('screen') != -1)
- formObj.popupleft.value = "c";
-
- if (formObj.popuptop.value.indexOf('screen') != -1)
- formObj.popuptop.value = "c";
-
- formObj.popuplocation.checked = getOption(onClickWindowOptions, 'location') == "yes";
- formObj.popupscrollbars.checked = getOption(onClickWindowOptions, 'scrollbars') == "yes";
- formObj.popupmenubar.checked = getOption(onClickWindowOptions, 'menubar') == "yes";
- formObj.popupresizable.checked = getOption(onClickWindowOptions, 'resizable') == "yes";
- formObj.popuptoolbar.checked = getOption(onClickWindowOptions, 'toolbar') == "yes";
- formObj.popupstatus.checked = getOption(onClickWindowOptions, 'status') == "yes";
- formObj.popupdependent.checked = getOption(onClickWindowOptions, 'dependent') == "yes";
-
- buildOnClick();
- }
-}
-
-function parseFunction(onclick) {
- var formObj = document.forms[0];
- var onClickData = parseLink(onclick);
-
- // TODO: Add stuff here
-}
-
-function getOption(opts, name) {
- return typeof(opts[name]) == "undefined" ? "" : opts[name];
-}
-
-function setPopupControlsDisabled(state) {
- var formObj = document.forms[0];
-
- formObj.popupname.disabled = state;
- formObj.popupurl.disabled = state;
- formObj.popupwidth.disabled = state;
- formObj.popupheight.disabled = state;
- formObj.popupleft.disabled = state;
- formObj.popuptop.disabled = state;
- formObj.popuplocation.disabled = state;
- formObj.popupscrollbars.disabled = state;
- formObj.popupmenubar.disabled = state;
- formObj.popupresizable.disabled = state;
- formObj.popuptoolbar.disabled = state;
- formObj.popupstatus.disabled = state;
- formObj.popupreturn.disabled = state;
- formObj.popupdependent.disabled = state;
-
- setBrowserDisabled('popupurlbrowser', state);
-}
-
-function parseLink(link) {
- link = link.replace(new RegExp('&#39;', 'g'), "'");
-
- var fnName = link.replace(new RegExp("\\s*([A-Za-z0-9\.]*)\\s*\\(.*", "gi"), "$1");
-
- // Is function name a template function
- var template = templates[fnName];
- if (template) {
- // Build regexp
- var variableNames = template.match(new RegExp("'?\\$\\{[A-Za-z0-9\.]*\\}'?", "gi"));
- var regExp = "\\s*[A-Za-z0-9\.]*\\s*\\(";
- var replaceStr = "";
- for (var i=0; i<variableNames.length; i++) {
- // Is string value
- if (variableNames[i].indexOf("'${") != -1)
- regExp += "'(.*)'";
- else // Number value
- regExp += "([0-9]*)";
-
- replaceStr += "$" + (i+1);
-
- // Cleanup variable name
- variableNames[i] = variableNames[i].replace(new RegExp("[^A-Za-z0-9]", "gi"), "");
-
- if (i != variableNames.length-1) {
- regExp += "\\s*,\\s*";
- replaceStr += "<delim>";
- } else
- regExp += ".*";
- }
-
- regExp += "\\);?";
-
- // Build variable array
- var variables = [];
- variables["_function"] = fnName;
- var variableValues = link.replace(new RegExp(regExp, "gi"), replaceStr).split('<delim>');
- for (var i=0; i<variableNames.length; i++)
- variables[variableNames[i]] = variableValues[i];
-
- return variables;
- }
-
- return null;
-}
-
-function parseOptions(opts) {
- if (opts == null || opts == "")
- return [];
-
- // Cleanup the options
- opts = opts.toLowerCase();
- opts = opts.replace(/;/g, ",");
- opts = opts.replace(/[^0-9a-z=,]/g, "");
-
- var optionChunks = opts.split(',');
- var options = [];
-
- for (var i=0; i<optionChunks.length; i++) {
- var parts = optionChunks[i].split('=');
-
- if (parts.length == 2)
- options[parts[0]] = parts[1];
- }
-
- return options;
-}
-
-function buildOnClick() {
- var formObj = document.forms[0];
-
- if (!formObj.ispopup.checked) {
- formObj.onclick.value = "";
- return;
- }
-
- var onclick = "window.open('";
- var url = formObj.popupurl.value;
-
- onclick += url + "','";
- onclick += formObj.popupname.value + "','";
-
- if (formObj.popuplocation.checked)
- onclick += "location=yes,";
-
- if (formObj.popupscrollbars.checked)
- onclick += "scrollbars=yes,";
-
- if (formObj.popupmenubar.checked)
- onclick += "menubar=yes,";
-
- if (formObj.popupresizable.checked)
- onclick += "resizable=yes,";
-
- if (formObj.popuptoolbar.checked)
- onclick += "toolbar=yes,";
-
- if (formObj.popupstatus.checked)
- onclick += "status=yes,";
-
- if (formObj.popupdependent.checked)
- onclick += "dependent=yes,";
-
- if (formObj.popupwidth.value != "")
- onclick += "width=" + formObj.popupwidth.value + ",";
-
- if (formObj.popupheight.value != "")
- onclick += "height=" + formObj.popupheight.value + ",";
-
- if (formObj.popupleft.value != "") {
- if (formObj.popupleft.value != "c")
- onclick += "left=" + formObj.popupleft.value + ",";
- else
- onclick += "left='+(screen.availWidth/2-" + (formObj.popupwidth.value/2) + ")+',";
- }
-
- if (formObj.popuptop.value != "") {
- if (formObj.popuptop.value != "c")
- onclick += "top=" + formObj.popuptop.value + ",";
- else
- onclick += "top='+(screen.availHeight/2-" + (formObj.popupheight.value/2) + ")+',";
- }
-
- if (onclick.charAt(onclick.length-1) == ',')
- onclick = onclick.substring(0, onclick.length-1);
-
- onclick += "');";
-
- if (formObj.popupreturn.checked)
- onclick += "return false;";
-
- // tinyMCE.debug(onclick);
-
- formObj.onclick.value = onclick;
-
- if (formObj.href.value == "")
- formObj.href.value = url;
-}
-
-function setAttrib(elm, attrib, value) {
- var formObj = document.forms[0];
- var valueElm = formObj.elements[attrib.toLowerCase()];
- var dom = tinyMCEPopup.editor.dom;
-
- if (typeof(value) == "undefined" || value == null) {
- value = "";
-
- if (valueElm)
- value = valueElm.value;
- }
-
- // Clean up the style
- if (attrib == 'style')
- value = dom.serializeStyle(dom.parseStyle(value), 'a');
-
- dom.setAttrib(elm, attrib, value);
-}
-
-function getAnchorListHTML(id, target) {
- var ed = tinyMCEPopup.editor, nodes = ed.dom.select('a'), name, i, len, html = "";
-
- for (i=0, len=nodes.length; i<len; i++) {
- if ((name = ed.dom.getAttrib(nodes[i], "name")) != "")
- html += '<option value="#' + name + '">' + name + '</option>';
-
- if ((name = nodes[i].id) != "" && !nodes[i].href)
- html += '<option value="#' + name + '">' + name + '</option>';
- }
-
- if (html == "")
- return "";
-
- html = '<select id="' + id + '" name="' + id + '" class="mceAnchorList"'
- + ' onchange="this.form.' + target + '.value=this.options[this.selectedIndex].value"'
- + '>'
- + '<option value="">---</option>'
- + html
- + '</select>';
-
- return html;
-}
-
-function insertAction() {
- var inst = tinyMCEPopup.editor;
- var elm, elementArray, i;
-
- elm = inst.selection.getNode();
- checkPrefix(document.forms[0].href);
-
- elm = inst.dom.getParent(elm, "A");
-
- // Remove element if there is no href
- if (!document.forms[0].href.value) {
- i = inst.selection.getBookmark();
- inst.dom.remove(elm, 1);
- inst.selection.moveToBookmark(i);
- tinyMCEPopup.execCommand("mceEndUndoLevel");
- tinyMCEPopup.close();
- return;
- }
-
- // Create new anchor elements
- if (elm == null) {
- inst.getDoc().execCommand("unlink", false, null);
- tinyMCEPopup.execCommand("mceInsertLink", false, "#mce_temp_url#", {skip_undo : 1});
-
- elementArray = tinymce.grep(inst.dom.select("a"), function(n) {return inst.dom.getAttrib(n, 'href') == '#mce_temp_url#';});
- for (i=0; i<elementArray.length; i++)
- setAllAttribs(elm = elementArray[i]);
- } else
- setAllAttribs(elm);
-
- // Don't move caret if selection was image
- if (elm.childNodes.length != 1 || elm.firstChild.nodeName != 'IMG') {
- inst.focus();
- inst.selection.select(elm);
- inst.selection.collapse(0);
- tinyMCEPopup.storeSelection();
- }
-
- tinyMCEPopup.execCommand("mceEndUndoLevel");
- tinyMCEPopup.close();
-}
-
-function setAllAttribs(elm) {
- var formObj = document.forms[0];
- var href = formObj.href.value.replace(/ /g, '%20');
- var target = getSelectValue(formObj, 'targetlist');
-
- setAttrib(elm, 'href', href);
- setAttrib(elm, 'title');
- setAttrib(elm, 'target', target == '_self' ? '' : target);
- setAttrib(elm, 'id');
- setAttrib(elm, 'style');
- setAttrib(elm, 'class', getSelectValue(formObj, 'classlist'));
- setAttrib(elm, 'rel');
- setAttrib(elm, 'rev');
- setAttrib(elm, 'charset');
- setAttrib(elm, 'hreflang');
- setAttrib(elm, 'dir');
- setAttrib(elm, 'lang');
- setAttrib(elm, 'tabindex');
- setAttrib(elm, 'accesskey');
- setAttrib(elm, 'type');
- setAttrib(elm, 'onfocus');
- setAttrib(elm, 'onblur');
- setAttrib(elm, 'onclick');
- setAttrib(elm, 'ondblclick');
- setAttrib(elm, 'onmousedown');
- setAttrib(elm, 'onmouseup');
- setAttrib(elm, 'onmouseover');
- setAttrib(elm, 'onmousemove');
- setAttrib(elm, 'onmouseout');
- setAttrib(elm, 'onkeypress');
- setAttrib(elm, 'onkeydown');
- setAttrib(elm, 'onkeyup');
-
- // Refresh in old MSIE
- if (tinyMCE.isMSIE5)
- elm.outerHTML = elm.outerHTML;
-}
-
-function getSelectValue(form_obj, field_name) {
- var elm = form_obj.elements[field_name];
-
- if (!elm || elm.options == null || elm.selectedIndex == -1)
- return "";
-
- return elm.options[elm.selectedIndex].value;
-}
-
-function getLinkListHTML(elm_id, target_form_element, onchange_func) {
- if (typeof(tinyMCELinkList) == "undefined" || tinyMCELinkList.length == 0)
- return "";
-
- var html = "";
-
- html += '<select id="' + elm_id + '" name="' + elm_id + '"';
- html += ' class="mceLinkList" onchange="this.form.' + target_form_element + '.value=';
- html += 'this.options[this.selectedIndex].value;';
-
- if (typeof(onchange_func) != "undefined")
- html += onchange_func + '(\'' + target_form_element + '\',this.options[this.selectedIndex].text,this.options[this.selectedIndex].value);';
-
- html += '"><option value="">---</option>';
-
- for (var i=0; i<tinyMCELinkList.length; i++)
- html += '<option value="' + tinyMCELinkList[i][1] + '">' + tinyMCELinkList[i][0] + '</option>';
-
- html += '</select>';
-
- return html;
-
- // tinyMCE.debug('-- image list start --', html, '-- image list end --');
-}
-
-function getTargetListHTML(elm_id, target_form_element) {
- var targets = tinyMCEPopup.getParam('theme_advanced_link_targets', '').split(';');
- var html = '';
-
- html += '<select id="' + elm_id + '" name="' + elm_id + '" onchange="this.form.' + target_form_element + '.value=';
- html += 'this.options[this.selectedIndex].value;">';
- html += '<option value="_self">' + tinyMCEPopup.getLang('advlink_dlg.target_same') + '</option>';
- html += '<option value="_blank">' + tinyMCEPopup.getLang('advlink_dlg.target_blank') + ' (_blank)</option>';
- html += '<option value="_parent">' + tinyMCEPopup.getLang('advlink_dlg.target_parent') + ' (_parent)</option>';
- html += '<option value="_top">' + tinyMCEPopup.getLang('advlink_dlg.target_top') + ' (_top)</option>';
-
- for (var i=0; i<targets.length; i++) {
- var key, value;
-
- if (targets[i] == "")
- continue;
-
- key = targets[i].split('=')[0];
- value = targets[i].split('=')[1];
-
- html += '<option value="' + key + '">' + value + ' (' + key + ')</option>';
- }
-
- html += '</select>';
-
- return html;
-}
-
-// While loading
-preinit();
-tinyMCEPopup.onInit.add(init);
diff --git a/program/js/tiny_mce/plugins/advlink/langs/ar_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/ar_dlg.js
deleted file mode 100644
index 8a2bc7de9..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/ar_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ar.advlink_dlg',{"target_name":"\u0627\u0633\u0645 \u0627\u0644\u0647\u062f\u0641",classes:"\u0635\u0646\u0641",style:"\u0634\u0643\u0644",id:"Id","popup_position":"\u0645\u0648\u0642\u0639 (X/Y)",langdir:"\u0627\u062a\u062c\u0627\u0647 \u0627\u0644\u0644\u063a\u0629","popup_size":"\u062d\u062c\u0645","popup_dependent":"\u062e\u0627\u0636\u0639 (Mozilla/Firefox only)","popup_resizable":"\u062a\u063a\u064a\u064a\u0631 \u062d\u062c\u0645 \u0646\u0627\u0641\u0630\u0629","popup_location":"\u0639\u0631\u0636 \u0634\u0631\u064a\u0637 \u0627\u0644\u0645\u0648\u0642\u0639","popup_menubar":"\u0639\u0631\u0636 \u0634\u0631\u064a\u0637 \u0627\u0644\u0642\u0648\u0627\u0626\u0645","popup_toolbar":"\u0625\u0638\u0647\u0627\u0631 \u0634\u0631\u064a\u0637 \u0627\u0644\u0623\u062f\u0648\u0627\u062a","popup_statusbar":"\u0639\u0631\u0636 \u0634\u0631\u064a\u0637 \u0627\u0644\u062d\u0627\u0644\u0629","popup_scrollbars":"\u0639\u0631\u0636 \u0623\u0634\u0631\u0637\u0629 \u0627\u0644\u062a\u0645\u0631\u064a\u0631","popup_return":"\u0625\u062f\u0631\u0627\u062c \'\u0639\u0648\u062f\u0629 \u0643\u0627\u0630\u0628\u0629\' \'return false\'","popup_name":"\u0627\u0633\u0645 \u0627\u0644\u0646\u0627\u0641\u0630\u0629","popup_url":"\u0631\u0627\u0628\u0637 \u0637\u0641\u0648 \u0639\u0644\u0649 \u0627\u0644\u0633\u0637\u062d",popup:"\u062c\u0627\u0641\u0627 \u0633\u0643\u0631\u064a\u0628\u062a","target_blank":"\u0641\u064a \u0641\u062a\u062d \u0646\u0627\u0641\u0630\u0629 \u062c\u062f\u064a\u062f\u0629","target_top":"\u0641\u062a\u062d \u0641\u064a \u0627\u0644\u0625\u0637\u0627\u0631 \u0627\u0644\u0639\u0644\u0648\u064a (\u064a\u062d\u0644 \u0645\u062d\u0644 \u0643\u0627\u0641\u0629 \u0627\u0644\u0625\u0637\u0627\u0631\u0627\u062a)","target_parent":"\u0641\u062a\u062d \u0641\u064a \u0627\u0644\u0625\u0637\u0627\u0631 \u0627\u0644\u0623\u0635\u0644","target_same":"\u0641\u062a\u062d \u0641\u064a \u0647\u0630\u0627 \u0627\u0644\u0625\u0637\u0627\u0631","anchor_names":"\u0645\u0631\u062a\u0643\u0632\u0627\u062a","popup_opts":"\u062e\u064a\u0627\u0631\u0627\u062a","advanced_props":"\u062e\u0635\u0627\u0626\u0635 \u0645\u062a\u0642\u062f\u0645\u0629","event_props":"\u0623\u062d\u062f\u0627\u062b","popup_props":"\u062e\u0635\u0627\u0626\u0635 \u0645\u0631\u0628\u0639 \u0637\u0641\u0648 \u0639\u0644\u0649 \u0627\u0644\u0633\u0637\u062d ","general_props":"\u0627\u0644\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u0639\u0627\u0645\u0629","advanced_tab":"\u0645\u062a\u0642\u062f\u0645","events_tab":"\u0623\u062d\u062f\u0627\u062b","popup_tab":"\u064a\u0645\u0631\u0628\u0639 \u0637\u0641\u0648 \u0639\u0644\u0649 \u0627\u0644\u0633\u0637\u062d","general_tab":"\u0639\u0627\u0645",list:"\u0642\u0627\u0626\u0645\u0647 \u0627\u0644\u0645\u0648\u0627\u0642\u0639","is_external":"\u0627\u0644\u0631\u0627\u0628\u0637 \u064a\u0628\u062f\u0648 \u0627\u0646\u0647 \u0644\u0645\u0648\u0642\u0639 \u062e\u0627\u0631\u062c\u0649 \u0647\u0644 \u062a\u0631\u064a\u062f \u0627\u0646 \u0646\u0636\u0639 http://","is_email":"\u0627\u0644\u0631\u0627\u0628\u0637 \u064a\u0628\u062f\u0648 \u0628\u0631\u064a\u062f \u0627\u0644\u0627\u0643\u062a\u0631\u0648\u0646\u0649 \u0647\u0644 \u062a\u0631\u064a\u062f \u0627\u0646 \u0646\u0636\u0639 \u0648\u0633\u0645 \u0631\u0627\u0628\u0637 \u0627\u0644\u0628\u0631\u064a\u062f",titlefield:"\u0627\u0633\u0645 \u0627\u0644\u0631\u0627\u0628\u0637",target:"\u0627\u0644\u0647\u062f\u0641",url:"\u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u0631\u0627\u0628\u0637",title:"\u0627\u062f\u062e\u0627\u0644 -\u062a\u0639\u062f\u064a\u0644 \u0631\u0627\u0628\u0637","link_list":"\u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0631\u0648\u0627\u0628\u0637",rtl:"\u0645\u0646 \u0627\u0644\u064a\u0645\u064a\u0646 \u0625\u0644\u0649 \u0627\u0644\u064a\u0633\u0627\u0631",ltr:"\u0645\u0646 \u0627\u0644\u064a\u0633\u0627\u0631 \u0625\u0644\u0649 \u0627\u0644\u064a\u0645\u064a\u0646",accesskey:"\u0645\u0641\u062a\u0627\u062d \u0627\u0644\u0648\u0635\u0648\u0644",tabindex:" Tab \u0641\u0647\u0631\u0633",rev:"\u0639\u0644\u0627\u0642\u0629 \u0627\u0644\u0647\u062f\u0641 \u0628\u0627\u0644\u0635\u0641\u062d\u0629",rel:"\u0639\u0644\u0627\u0642\u0629 \u0627\u0644\u0635\u0641\u062d\u0629 \u0628\u0627\u0644\u0647\u062f\u0641",mime:"\u0646\u0648\u0639 \u0645\u0644\u0641 \u0627\u0644\u0647\u062f\u0641",encoding:"\u0631\u0645\u0632 \u0627\u0644\u0644\u063a\u0629",langcode:"\u0643\u0648\u062f \u0627\u0644\u0644\u063a\u0647","target_langcode":"\u0644\u063a\u0629 \u0627\u0644\u0647\u062f\u0641",width:"\u0627\u0644\u0639\u0631\u0636",height:"\u0627\u0644\u0627\u0631\u062a\u0641\u0627\u0639"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/az_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/az_dlg.js
deleted file mode 100644
index fe0eee299..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/az_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('az.advlink_dlg',{"target_name":"H\u0259d\u0259f ad\u0131",classes:"Sinifl\u0259r",style:"Sil",id:"\u0130dentifikator","popup_position":"M\u00f6vqe (X/Y)",langdir:"Dil istiqam\u0259ti","popup_size":"\u00f6l\u00e7\u00fc","popup_dependent":"As\u0131l\u0131 olan (yaln\u0131z Mozilla/Firefox)","popup_resizable":"P\u0259nc\u0259r\u0259 \u00f6l\u00e7\u00fcs\u00fcn\u00fc d\u0259yi\u015fil\u0259n et","popup_location":"\u00dcnvan s\u0259trini g\u00f6st\u0259r","popup_menubar":"Menyu s\u0259trini g\u00f6st\u0259r","popup_toolbar":"Al\u0259tl\u0259r panelini g\u00f6st\u0259r","popup_statusbar":"M\u0259tn v\u0259ziyy\u0259tini g\u00f6st\u0259r","popup_scrollbars":"F\u0131rlanan\u0131n zolaqlar\u0131n\u0131 g\u00f6st\u0259r","popup_return":"\'return false\' \u0259lav\u0259 et","popup_name":"P\u0259nc\u0259r\u0259nin ad\u0131","popup_url":"\u00dcz\u0259 \u00e7\u0131xan p\u0259nc\u0259r\u0259nin \u00fcnvan\u0131",popup:"\u00dcz\u0259 \u00e7\u0131xan Javascript-p\u0259nc\u0259r\u0259","target_blank":"Yeni p\u0259nc\u0259r\u0259d\u0259 a\u00e7","target_top":"Yuxar\u0131 \u00e7\u0259r\u00e7iv\u0259d\u0259 a\u00e7 (dig\u0259rl\u0259rini d\u0259 doldurur)","target_parent":"Ana p\u0259nc\u0259r\u0259d\u0259 a\u00e7 / \u00e7\u0259r\u00e7iv\u0259","target_same":"Bu p\u0259nc\u0259r\u0259d\u0259 a\u00e7 / \u00e7\u0259r\u00e7iv\u0259","anchor_names":"L\u00f6vb\u0259r","popup_opts":"Parametrl\u0259r","advanced_props":"\u018flav\u0259 x\u00fcsusiyy\u0259tl\u0259r","event_props":"Hadis\u0259l\u0259r","popup_props":"\u00dcz\u0259 \u00e7\u0131xan p\u0259nc\u0259r\u0259l\u0259rin x\u00fcsusiyy\u0259tl\u0259ti","general_props":"\u00dcmumi x\u00fcsusiyy\u0259tl\u0259ri","advanced_tab":"\u018flav\u0259l\u0259r","events_tab":"Hadis\u0259l\u0259r","popup_tab":"\u00dcz\u0259 \u00e7\u0131xan p\u0259nc\u0259r\u0259","general_tab":"\u00dcmumi",list:"Ke\u00e7id siyah\u0131s\u0131","is_external":"Daxil edil\u0259n \u00fcnvan xarici ke\u00e7id\u0259 b\u0259nz\u0259yir. http:// prefiksini \u0259lav\u0259 etm\u0259k ist\u0259yirsiniz?","is_email":"Daxil edil\u0259n \u00fcnvan e-po\u00e7ta b\u0259nz\u0259yir. mailto: prefiksini \u0259lav\u0259 etm\u0259k ist\u0259yirsiniz?",titlefield:"Ad\u0131",target:"H\u0259d\u0259f",url:"Ke\u00e7id \u00fcnvan\u0131",title:"Ke\u00e7idi \u0259lav\u0259/redakt\u0259 et","link_list":"Ke\u00e7id siyah\u0131s\u0131",rtl:"Sa\u011fda-sola",ltr:"Solda-sa\u011fa",accesskey:"Giri\u015f klavi\u015fi",tabindex:"Hesab indeksi",rev:"H\u0259d\u0259fin p\u0259nc\u0259r\u0259y\u0259 m\u00fcnasib\u0259ti",rel:"P\u0259nc\u0259r\u0259nin h\u0259d\u0259f\u0259 m\u00fcnasib\u0259ti",mime:"H\u0259d\u0259fli MIME-n\u00f6v",encoding:"H\u0259d\u0259fli kodla\u015fd\u0131rma",langcode:"Dil kodu","target_langcode":"H\u0259d\u0259fli dil",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/bg_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/bg_dlg.js
deleted file mode 100644
index 3b83fe4e4..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/bg_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bg.advlink_dlg',{"target_name":"\u0418\u043c\u0435 \u043d\u0430 \u0446\u0435\u043b",classes:"\u041a\u043b\u0430\u0441\u043e\u0432\u0435",style:"\u0421\u0442\u0438\u043b",id:"Id","popup_position":"\u041f\u043e\u0437\u0438\u0446\u0438\u044f (X/Y)",langdir:"\u041f\u043e\u0441\u043e\u043a\u0430 \u043d\u0430 \u0435\u0437\u0438\u043a\u0430","popup_size":"\u0420\u0430\u0437\u043c\u0435\u0440","popup_dependent":"\u0417\u0430\u0432\u0438\u0441\u0438\u043c\u0438 (Mozilla/Firefox only)","popup_resizable":"\u0420\u0430\u0437\u0440\u0435\u0448\u0438 \u043f\u0440\u0435\u043e\u0440\u0430\u0437\u043c\u0435\u0440\u044f\u0432\u0430\u043d\u0435 \u043d\u0430 \u043f\u0440\u043e\u0437\u043e\u0440\u0446\u0438\u0442\u0435","popup_location":"\u041f\u043e\u043a\u0430\u0436\u0438 location bar","popup_menubar":"\u041f\u043e\u043a\u0430\u0436\u0438 \u043b\u0435\u043d\u0442\u0430\u0442\u0430 \u0441 \u043c\u0435\u043d\u044e\u0442\u0430","popup_toolbar":"\u041f\u043e\u043a\u0430\u0436\u0438 \u043b\u0435\u043d\u0442\u0438\u0442\u0435 \u0441 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0438","popup_statusbar":"\u041f\u043e\u043a\u0430\u0436\u0438 status bar","popup_scrollbars":"\u041f\u043e\u043a\u0430\u0436\u0438 \u0441\u043a\u0440\u043e\u043b\u0435\u0440\u0438","popup_return":"\u0412\u043c\u044a\u043a\u043d\u0438 \'return false\'","popup_name":"\u0418\u043c\u0435 \u043d\u0430 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446\u0430","popup_url":"URL \u043d\u0430 popup-\u0430",popup:"Javascript popup","target_blank":"\u041e\u0442\u0432\u043e\u0440\u0438 \u0432 \u043d\u043e\u0432 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446","target_top":"\u041e\u0442\u0432\u043e\u0440\u0438 \u0432 \u043d\u0430\u0439-\u0433\u043e\u0440\u043d\u0438\u044f \u0444\u0440\u0435\u0439\u043c (\u0437\u0430\u043c\u0435\u0441\u0442\u0432\u0430 \u0432\u0441\u0438\u0447\u043a\u0438 \u0444\u0440\u0435\u0439\u043c\u043e\u0432\u0435)","target_parent":"\u041e\u0442\u0432\u043e\u0440\u0438 \u0432 \u0433\u043e\u0440\u043d\u0438\u044f \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446 / \u0444\u0440\u0435\u0439\u043c","target_same":"\u041e\u0442\u0432\u043e\u0440\u0438 \u0432 \u0442\u043e\u0437\u0438 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446 / \u0444\u0440\u0435\u0439\u043c","anchor_names":"\u041a\u043e\u0442\u0432\u0438","popup_opts":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438","advanced_props":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0437\u0430 \u043d\u0430\u043f\u0440\u0435\u0434\u043d\u0430\u043b\u0438","event_props":"\u0421\u044a\u0431\u0438\u0442\u0438\u044f","popup_props":"Popup \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438","general_props":"\u041e\u0431\u0449\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438","advanced_tab":"\u0417\u0430 \u043d\u0430\u043f\u0440\u0435\u0434\u043d\u0430\u043b\u0438","events_tab":"\u0421\u044a\u0431\u0438\u0442\u0438\u044f","popup_tab":"Popup","general_tab":"\u041e\u0431\u0449\u0438",list:"\u0421\u043f\u0438\u0441\u044a\u043a \u0441 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0438","is_external":"URL-\u0442\u043e, \u043a\u043e\u0435\u0442\u043e \u0432\u044a\u0432\u0435\u0434\u043e\u0445\u0442\u0435 \u0435 \u0432\u044a\u043d\u0448\u043d\u0430 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430, \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u043b\u0438 \u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u0435 \u043d\u0443\u0436\u043d\u0438\u044f\u0442 http:// \u043f\u0440\u0435\u0444\u0438\u043a\u0441?","is_email":"URL-\u0442\u043e, \u043a\u043e\u0435\u0442\u043e \u0432\u044a\u0432\u0435\u0434\u043e\u0445\u0442\u0435 \u0435 email \u0430\u0434\u0440\u0435\u0441, \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u043b\u0438 \u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u0435 \u043d\u0443\u0436\u043d\u0438\u044f\u0442 mailto: \u043f\u0440\u0435\u0444\u0438\u043a\u0441?",titlefield:"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435",target:"\u0426\u0435\u043b",url:"URL \u043d\u0430 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430",title:"\u0412\u043c\u044a\u043a\u043d\u0438/\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430","link_list":"\u0421\u043f\u0438\u0441\u044a\u043a \u0441 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0438",rtl:"\u041e\u0442\u0434\u044f\u0441\u043d\u043e \u043d\u0430 \u043b\u044f\u0432\u043e",ltr:"\u041e\u0442\u043b\u044f\u0432\u043e \u043d\u0430 \u0434\u044f\u0441\u043d\u043e",accesskey:"\u041a\u043b\u0430\u0432\u0438\u0448",tabindex:"\u041f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u043d\u043e\u0441\u0442",rev:"\u0412\u0437\u0430\u0438\u043c\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0446\u0435\u043b - \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430",rel:"\u0412\u0437\u0430\u0438\u043c\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 - \u0446\u0435\u043b",mime:"MIME \u0442\u0438\u043f",encoding:"\u041a\u043e\u0434\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0442\u0435",langcode:"\u041a\u043e\u0434 \u043d\u0430 \u0435\u0437\u0438\u043a\u0430","target_langcode":"\u0415\u0437\u0438\u043a",width:"\u0428\u0438\u0440\u0438\u043d\u0430",height:"\u0412\u0438\u0441\u043e\u0447\u0438\u043d\u0430"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/bn_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/bn_dlg.js
deleted file mode 100644
index 34e337219..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/bn_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bn.advlink_dlg',{"target_name":"Target name",classes:"Classes",style:"Style",id:"Id","popup_position":"Position (X/Y)",langdir:"Language direction","popup_size":"Size","popup_dependent":"Dependent (Mozilla/Firefox only)","popup_resizable":"Make window resizable","popup_location":"Show location bar","popup_menubar":"Show menu bar","popup_toolbar":"Show toolbars","popup_statusbar":"Show status bar","popup_scrollbars":"Show scrollbars","popup_return":"Insert \'return false\'","popup_name":"Window name","popup_url":"Popup URL",popup:"Javascript popup","target_blank":"Open in new window","target_top":"Open in top frame (replaces all frames)","target_parent":"Open in parent window / frame","target_same":"Open in this window / frame","anchor_names":"Anchors","popup_opts":"Options","advanced_props":"Advanced properties","event_props":"Events","popup_props":"Popup properties","general_props":"General properties","advanced_tab":"Advanced","events_tab":"Events","popup_tab":"Popup","general_tab":"General",list:"Link list","is_external":"The URL you entered seems to external link, do you want to add the required http:// prefix?","is_email":"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?",titlefield:"Title",target:"Target",url:"Link URL",title:"Insert/edit link","link_list":"Link list",rtl:"Right to left",ltr:"Left to right",accesskey:"Accesskey",tabindex:"Tabindex",rev:"Relationship target to page",rel:"Relationship page to target",mime:"Target MIME type",encoding:"Target character encoding",langcode:"Language code","target_langcode":"Target language",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/br_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/br_dlg.js
deleted file mode 100644
index 8c341beda..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/br_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('br.advlink_dlg',{"target_name":"Nome do alvo",classes:"Classes",style:"Estilo",id:"Id","popup_position":"Posi\u00e7\u00e3o (X/Y)",langdir:"Dire\u00e7\u00e3o do texto","popup_size":"Tamanho","popup_dependent":"Dependente (Mozilla/Firefox apenas)","popup_resizable":"Permitir altera\u00e7\u00e3o do tamanho da janela","popup_location":"Mostrar barra de endere\u00e7os","popup_menubar":"Mostrar barra de menu","popup_toolbar":"Mostrar barras de ferramentas","popup_statusbar":"Mostrar barra de status","popup_scrollbars":"Mostrar barras de scroll","popup_return":"Inserir \'return false\'","popup_name":"Nome da janela","popup_url":"URL do popup",popup:"Popup javascript","target_blank":"Abrir numa nova janela","target_top":"Abrir na p\u00e1gina inteira (substitui todos os quadros)","target_parent":"Abrir na janela/quadro pai","target_same":"Abrir nesta janela/quadro","anchor_names":"\u00c2ncoras","popup_opts":"Op\u00e7\u00f5es","advanced_props":"Propriedades avan\u00e7adas","event_props":"Eventos","popup_props":"Propriedades de popup","general_props":"Propriedades gerais","advanced_tab":"Avan\u00e7ado","events_tab":"Eventos","popup_tab":"Popup","general_tab":"Geral",list:"Lista de hyperlinks","is_external":"A URL digitada parece conduzir a um link externo. Deseja acrescentar o (necess\u00e1rio) prefixo http://?","is_email":"A URL digitada parece ser um endere\u00e7o de e-mail. Deseja acrescentar o (necess\u00e1rio) prefixo mailto:?",titlefield:"T\u00edtulo",target:"Alvo",url:"URL do hyperlink",title:"Inserir/editar hyperlink","link_list":"Lista de hyperlinks",rtl:"Da direita para a esquerda",ltr:"Da esquerda para a direita",accesskey:"Chave de acesso",tabindex:"Tabindex",rev:"Rela\u00e7\u00e3o alvo/p\u00e1gina",rel:"Rela\u00e7\u00e3o p\u00e1gina/alvo",mime:"Tipo MIME alvo",encoding:"Codifica\u00e7\u00e3o de caracteres",langcode:"C\u00f3digo da linguagem","target_langcode":"linguagem alvo",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/bs_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/bs_dlg.js
deleted file mode 100644
index ae841aae1..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/bs_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bs.advlink_dlg',{"target_name":"Ime mete",classes:"Klasa",style:"Stil",id:"Id","popup_position":"Pozicija (X/Y)",langdir:"Smjer jezika","popup_size":"Veli\u010dina","popup_dependent":"Ovisan (samo za Mozilla/Firefox)","popup_resizable":"Prozor promjenjive veli\u010dine","popup_location":"Poka\u017ei traku lokacije","popup_menubar":"Poka\u017ei izbornik","popup_toolbar":"Poka\u017ei alatne trake","popup_statusbar":"Poka\u017ei statusnu traku","popup_scrollbars":"Poka\u017ei kliza\u010de","popup_return":"Umetni \'return false\'","popup_name":"Ime prozora","popup_url":"Popup URL",popup:"Javascript popup","target_blank":"Otvori u novom prozoru","target_top":"Otvori u gornjem okviru (zamjenjuje sve okvire)","target_parent":"Otvori u izvornom prozoru / okvir","target_same":"Otovori u novom prozoru / okviru","anchor_names":"Sidra","popup_opts":"Opcije","advanced_props":"Napredna svojstva","event_props":"Doga\u0111aji","popup_props":"Svojstva popup prozora","general_props":"Osnovna svojstva","advanced_tab":"Napredno","events_tab":"Doga\u0111aj","popup_tab":"Popup","general_tab":"Osnovno",list:"Lista poveznica","is_external":"URL koji ste unijeli izgleda kao vanjska poveznica, \u017eelite li dodati potrebni http:// prefiks?","is_email":"URL koji ste unijeli izgleda kao e-mail adresa, \u017eelite li dodati potrebni mailto: prefiks?",titlefield:"Naslov",target:"Meta",url:"URL poveznice",title:"Umetni/uredi poveznicu","link_list":"Lista poveznica",rtl:"S desna na lijevo",ltr:"S lijeva na desno",accesskey:"Accesskey",tabindex:"Tabindex",rev:"Odnos mete prema stranici",rel:"Odnos stranice prema meti",mime:"MIME tip",encoding:"Kodiranje znakova",langcode:"Kod jezika","target_langcode":"Jezik",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/ca_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/ca_dlg.js
deleted file mode 100644
index c580f73c5..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/ca_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ca.advlink_dlg',{"target_name":"Nom del dest\u00ed",classes:"Classes",style:"Estil",id:"Id","popup_position":"Posici\u00f3 (X/Y)",langdir:"Direcci\u00f3 de l\'idioma","popup_size":"Mida","popup_dependent":"Dependent (nom\u00e9s Mozilla/Firefox)","popup_resizable":"Fes la finestra redimensionable","popup_location":"Mostra la barra d\'ubicaci\u00f3","popup_menubar":"Mostra la barra de men\u00fa","popup_toolbar":"Mostra la barra d\'eines","popup_statusbar":"Mostra la barra d\'estat","popup_scrollbars":"Mostra les barres de despla\u00e7ament","popup_return":"Insereix \'return false\'","popup_name":"Nom de la finestra","popup_url":"URL de la finestra emergent",popup:"Finestra emergent javascript","target_blank":"Obre en una nova finestra","target_top":"Obre en el marc superior (reempla\u00e7a tots els marcs)","target_parent":"Obre en la finestra / marc pare","target_same":"Obre en aquesta finestra / marc","anchor_names":"\u00c0ncores","popup_opts":"Opcions","advanced_props":"Propietats avan\u00e7ades","event_props":"Esdeveniments","popup_props":"Propietats de la finestra emergent","general_props":"Propietats generals","advanced_tab":"Avan\u00e7at","events_tab":"Esdeveniments","popup_tab":"Finestra emergent","general_tab":"General",list:"Llista d\'enlla\u00e7os","is_external":"L\'URL que heu introdu\u00eft sembla ser un enlla\u00e7 extern, voleu afegir-hi el prefix requerit http:// ?","is_email":"L\'URL que heu introdu\u00eft sembla ser una adre\u00e7a de correu electr\u00f2nic, voleu afegir-hi el prefix requerit mailto: ?",titlefield:"T\u00edtol",target:"Objectiu",url:"URL de l\'enlla\u00e7",title:"Insereix/edita enlla\u00e7","link_list":"Llista d\'enlla\u00e7os",rtl:"De dreta a esquerra",ltr:"D\'esquerra a dreta",accesskey:"Accesskey",tabindex:"Tabindex",rev:"Relaci\u00f3 de dest\u00ed a p\u00e0gina",rel:"Relaci\u00f3 de p\u00e0gina a dest\u00ed",mime:"Tipus MIME del dest\u00ed",encoding:"Codificaci\u00f3 de car\u00e0cters del dest\u00ed",langcode:"Codi de l\'idioma","target_langcode":"Idioma del dest\u00ed",width:"Amplada",height:"Al\u00e7ada"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/cs_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/cs_dlg.js
deleted file mode 100644
index d63122959..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/cs_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('cs.advlink_dlg',{"target_name":"N\u00e1zev c\u00edle",classes:"T\u0159\u00eddy",style:"Styl",id:"ID","popup_position":"Um\u00edst\u011bn\u00ed (X/Y)",langdir:"Sm\u011br textu","popup_size":"Velikost","popup_dependent":"Z\u00e1vislost (pouze Mozilla/Firefox)","popup_resizable":"Umo\u017enit zm\u011bnu velikosti","popup_location":"Zobrazit pole s adresou","popup_menubar":"Zobrazit nab\u00eddku","popup_toolbar":"Zobrazit panel n\u00e1stroj\u016f","popup_statusbar":"Zobrazit stavov\u00fd \u0159\u00e1dek","popup_scrollbars":"Zobrazit posuvn\u00edky","popup_return":"Vlo\u017eit \'return false\'","popup_name":"N\u00e1zev okna","popup_url":"URL vyskakovac\u00edho okna",popup:"Javascriptov\u00e9 okno","target_blank":"Otev\u0159\u00edt v nov\u00e9m okn\u011b/r\u00e1mu","target_top":"Otev\u0159\u00edt v hlavn\u00edm okn\u011b/r\u00e1mu (nahradit v\u0161echny r\u00e1my)","target_parent":"Otev\u0159\u00edt v nad\u0159azen\u00e9m okn\u011b/r\u00e1mu","target_same":"Otev\u0159\u00edt v tomto okn\u011b/r\u00e1mu","anchor_names":"Z\u00e1lo\u017eka","popup_opts":"Mo\u017enosti","advanced_props":"Roz\u0161\u00ed\u0159en\u00e9 parametry","event_props":"Ud\u00e1losti","popup_props":"Vlastnosti vyskakovac\u00edho okna","general_props":"Obecn\u00e9 parametry","advanced_tab":"Roz\u0161\u00ed\u0159en\u00e9","events_tab":"Ud\u00e1losti","popup_tab":"Vyskakovac\u00ed okno","general_tab":"Obecn\u00e9",list:"Seznam odkaz\u016f","is_external":"Zadan\u00e9 URL vypad\u00e1 jako extern\u00ed odkaz, chcete doplnit povinn\u00fd prefix http://?","is_email":"Zadan\u00e9 URL vypad\u00e1 jako e-mailov\u00e1 adresa, chcete doplnit povinn\u00fd prefix mailto:?",titlefield:"Titulek",target:"C\u00edl",url:"URL odkazu",title:"Vlo\u017eit/upravit odkaz","link_list":"Seznam odkaz\u016f",rtl:"Zprava doleva",ltr:"Zleva doprava",accesskey:"Kl\u00e1vesov\u00e1 zkratka",tabindex:"Po\u0159ad\u00ed pro tabul\u00e1tor",rev:"Vztah c\u00edle ke str\u00e1nce",rel:"Vztah str\u00e1nky k c\u00edli",mime:"MIME typ",encoding:"K\u00f3dov\u00e1n\u00ed",langcode:"K\u00f3d jazyka","target_langcode":"Jazyk c\u00edle",width:"\u0160\u00ed\u0159ka",height:"V\u00fd\u0161ka"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/cy_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/cy_dlg.js
deleted file mode 100644
index 770aeea9d..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/cy_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('cy.advlink_dlg',{"target_name":"Enw targed",classes:"Dosbarthiadau",style:"Arddull",id:"Id","popup_position":"Safle (X/Y)",langdir:"Cyfeiriad iaith","popup_size":"Maint","popup_dependent":"Dibynnol (dim ond Mozilla/Firefox)","popup_resizable":"Gwneud ffenest yn ailfeintiol","popup_location":"Dangos bar lleoliad","popup_menubar":"Dangos bar dewislen","popup_toolbar":"Dangos barrau offer","popup_statusbar":"Dangor bar statws","popup_scrollbars":"Dangos bar sgrolio","popup_return":"Mewnosod \'return false\'","popup_name":"Enw ffenest","popup_url":"URL naidlen",popup:"Naidlen JavaScript","target_blank":"Agor mewn ffenest newydd","target_top":"Agor mewn pen ffr\u00e2m (amnewid pob ffr\u00e2m)","target_parent":"Agos mewn y ffenest / ffr\u00e2m rhiant","target_same":"Agos mewn y ffenest / ffr\u00e2m yma","anchor_names":"Angorau","popup_opts":"Dewisiadau","advanced_props":"Priodweddau uwch","event_props":"Digwyddiadau","popup_props":"Priodweddau cyffredinol","general_props":"Priodweddau cyfferdinol","advanced_tab":"Uwch","events_tab":"Digwyddiadau","popup_tab":"Naidlen","general_tab":"Cyffredinol",list:"Rhestr cysylltau","is_external":"Mae\'r URL a rydych wedi rhoi yn edrych fel cyswllt allannol, ydych chi eisiau ychwanegu\'r rhagddodiad http:// sydd angen?","is_email":"Mae\'r URL a rydych wedi rhoi yn edrych fel cyferiad e-bost, ydych chi eisiau ychwanegu\'r rhagddodiad mailto: sydd angen?",titlefield:"Teitl",target:"Targed",url:"URL cyswllt",title:"Mewnosod/Golygu cyswllt","link_list":"Rhestr cysylltau",rtl:"De i\'r chwith",ltr:"Chwith i\'r dde",accesskey:"Bysell mynediad",tabindex:"Trefn tabio",rev:"Perthynas y targed i\'r tudalen",rel:"Perthynas y tudalen i\'r targed",mime:"Math MIME targed",encoding:"Amgodiad nodau targed",langcode:"Cod iaith","target_langcode":"Iaith targed",width:"Lled",height:"Uchder"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/da_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/da_dlg.js
deleted file mode 100644
index 06f7fe3d8..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/da_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('da.advlink_dlg',{"target_name":"Destinationsnavn",classes:"Klasser",style:"Stil",id:"Id","popup_position":"Position (X/Y)",langdir:"Sprogretning","popup_size":"St\u00f8rrelse","popup_dependent":"Afh\u00e6ngig (Kun Mozilla/Firefox)","popup_resizable":"Lad det v\u00e6re muligt at \u00e6ndre st\u00f8rrelsen p\u00e5 vinduet","popup_location":"Vis adresselinje","popup_menubar":"Vis menulinje","popup_toolbar":"Vis v\u00e6rkt\u00f8jslinjer","popup_statusbar":"Vis statuslinje","popup_scrollbars":"Vis rullepanel","popup_return":"Inds\u00e6t \'return false\'","popup_name":"Vinduesnavn","popup_url":"Popup URL",popup:"Javascript popup","target_blank":"\u00c5ben i nyt vindue","target_top":"\u00c5ben i \u00f8verste vindue / ramme (erstatter alle rammer)","target_parent":"\u00c5ben i overliggende vindue / ramme","target_same":"\u00c5ben i dette vindue / ramme","anchor_names":"Ankre","popup_opts":"Indstillinger","advanced_props":"Avancerede egenskaber","event_props":"H\u00e6ndelser","popup_props":"Popup egenskaber","general_props":"Generelle egenskaber","advanced_tab":"Advanceret","events_tab":"H\u00e6ndelser","popup_tab":"Popup","general_tab":"Generelt",list:"Liste over links","is_external":"Den URL, der er indtastet, ser ud til at v\u00e6re et eksternt link. Vil du have tilf\u00f8jet det p\u00e5kr\u00e6vede http:// foran?","is_email":"Den URL, der er indtastet, ser ud til at v\u00e6re en emailadresse. Vil du have tilf\u00f8jet det p\u00e5kr\u00e6vede mailto: foran?",titlefield:"Titel",target:"M\u00e5l",url:"Link URL",title:"Inds\u00e6t/rediger link","link_list":"Liste over links",rtl:"H\u00f8jre mod venstre",ltr:"Venstre mod h\u00f8jre",accesskey:"Genvejstast",tabindex:"Tabindex",rev:"Relativ destination til side",rel:"Relativ side til destination",mime:"Destinations-MIME-type",encoding:"Destinationstegns\u00e6t",langcode:"Sprogkode","target_langcode":"Destinationssprog",width:"Bredde",height:"H\u00f8jde"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/de_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/de_dlg.js
deleted file mode 100644
index bb0d3e35b..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/de_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('de.advlink_dlg',{"target_name":"Name der Zielseite",classes:"Klassen",style:"Format",id:"ID","popup_position":"Position (X/Y)",langdir:"Schriftrichtung","popup_size":"Gr\u00f6\u00dfe","popup_dependent":"Vom Elternfenster abh\u00e4ngig <br /> (nur Mozilla/Firefox) ","popup_resizable":"Vergr\u00f6\u00dfern des Fenster zulassen","popup_location":"Adressleiste anzeigen","popup_menubar":"Browsermen\u00fc anzeigen","popup_toolbar":"Werkzeugleisten anzeigen","popup_statusbar":"Statusleiste anzeigen","popup_scrollbars":"Scrollbalken anzeigen","popup_return":"Link trotz Popup folgen","popup_name":"Name des Fensters","popup_url":"Popup-Adresse",popup:"JavaScript-Popup","target_blank":"In neuem Fenster \u00f6ffnen","target_top":"Im obersten Frame \u00f6ffnen (sprengt das Frameset)","target_parent":"Im \u00fcbergeordneten Fenster/Frame \u00f6ffnen","target_same":"Im selben Fenster/Frame \u00f6ffnen","anchor_names":"Anker","popup_opts":"Optionen","advanced_props":"Erweiterte Eigenschaften","event_props":"Ereignisse","popup_props":"Popup-Eigenschaften","general_props":"Allemeine Eigenschaften","advanced_tab":"Erweitert","events_tab":"Ereignisse","popup_tab":"Popup","general_tab":"Allgemein",list:"Linkliste","is_external":"Diese Adresse scheint ein externer Link zu sein. M\u00f6chten Sie das dazu ben\u00f6tigte \"http://\" voranstellen?","is_email":"Diese Adresse scheint eine E-Mail-Adresse zu sein. M\u00f6chten Sie das dazu ben\u00f6tigte \"mailto:\" voranstellen?",titlefield:"Titel",target:"Fenster",url:"Adresse",title:"Link einf\u00fcgen/bearbeiten","link_list":"Linkliste",rtl:"Rechts nach links",ltr:"Links nach rechts",accesskey:"Tastenk\u00fcrzel",tabindex:"Tabindex",rev:"Beziehung des Linkziels zur Seite",rel:"Beziehung der Seite zum Linkziel",mime:"MIME-Type der Zielseite",encoding:"Zeichenkodierung der Zielseite",langcode:"Sprachcode","target_langcode":"Sprache der Zielseite",width:"Breite",height:"H\u00f6he"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/el_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/el_dlg.js
deleted file mode 100644
index dc093991e..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/el_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('el.advlink_dlg',{"target_name":"\u038c\u03bd\u03bf\u03bc\u03b1 \u03c3\u03c4\u03cc\u03c7\u03bf\u03c5",classes:"\u039a\u03bb\u03ac\u03c3\u03b5\u03b9\u03c2",style:"\u03a3\u03c4\u03c5\u03bb",id:"Id","popup_position":"\u0398\u03ad\u03c3\u03b7 (X/Y)",langdir:"\u039a\u03b1\u03c4\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 \u03b3\u03bb\u03ce\u03c3\u03c3\u03b1\u03c2","popup_size":"\u039c\u03ad\u03b3\u03b5\u03b8\u03bf\u03c2","popup_dependent":"\u0395\u03be\u03b1\u03c1\u03c4\u03ce\u03bc\u03b5\u03bd\u03bf (\u03bc\u03cc\u03bd\u03bf \u03b3\u03b9\u03b1 Mozilla/Firefox)","popup_resizable":"\u039d\u03b1 \u03b1\u03bb\u03bb\u03ac\u03b6\u03bf\u03c5\u03bd \u03bf\u03b9 \u03b4\u03b9\u03b1\u03c3\u03c4\u03ac\u03c3\u03b5\u03b9\u03c2 \u03c4\u03bf\u03c5 \u03c0\u03b1\u03c1\u03b1\u03b8\u03cd\u03c1\u03bf\u03c5","popup_location":"\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2 \u03c4\u03bf\u03c0\u03bf\u03b8\u03b5\u03c3\u03af\u03b1\u03c2","popup_menubar":"\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03bc\u03b5\u03bd\u03bf\u03cd","popup_toolbar":"\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ce\u03bd \u03b5\u03c1\u03b3\u03b1\u03bb\u03b5\u03af\u03c9\u03bd","popup_statusbar":"\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2 \u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7\u03c2","popup_scrollbars":"\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03c1\u03ac\u03b2\u03b4\u03c9\u03bd \u03ba\u03cd\u03bb\u03b9\u03c3\u03b7\u03c2","popup_return":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \'return false\'","popup_name":"\u038c\u03bd\u03bf\u03bc\u03b1 \u03c0\u03b1\u03c1\u03b1\u03b8\u03cd\u03c1\u03bf\u03c5","popup_url":"\u0394\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae URL \u03c4\u03bf\u03c5 Popup",popup:"Javascript popup","target_blank":"\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1 \u03c3\u03b5 \u03bd\u03ad\u03bf \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf","target_top":"\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1 \u03c3\u03c4\u03bf \u03c0\u03b9\u03bf \u03c0\u03ac\u03bd\u03c9 frame (\u03b1\u03bd\u03c4\u03b9\u03ba\u03b1\u03b8\u03b9\u03c3\u03c4\u03ac \u03cc\u03bb\u03b1 \u03c4\u03b1 frames)","target_parent":"\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1 \u03c3\u03c4\u03bf \u03b3\u03bf\u03bd\u03b9\u03ba\u03cc window / frame","target_same":"\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1 \u03c3\u03b5 \u03af\u03b4\u03b9\u03bf \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf / frame","anchor_names":"Anchors","popup_opts":"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ad\u03c2","advanced_props":"\u03a0\u03c1\u03bf\u03c7\u03c9\u03c1\u03b7\u03bc\u03ad\u03bd\u03b5\u03c2 \u03b9\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2","event_props":"\u0393\u03b5\u03b3\u03bf\u03bd\u03cc\u03c4\u03b1","popup_props":"\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 Popup","general_props":"\u0393\u03b5\u03bd\u03b9\u03ba\u03ad\u03c2 \u03b9\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2","advanced_tab":"\u0393\u03b9\u03b1 \u03c0\u03c1\u03bf\u03c7\u03c9\u03c1\u03b7\u03bc\u03ad\u03bd\u03bf\u03c5\u03c2","events_tab":"\u0393\u03b5\u03b3\u03bf\u03bd\u03cc\u03c4\u03b1","popup_tab":"Popup","general_tab":"\u0393\u03b5\u03bd\u03b9\u03ba\u03ac",list:"\u039b\u03af\u03c3\u03c4\u03b1 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03c9\u03bd","is_external":"\u0397 \u03b4\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae URL \u03c0\u03bf\u03c5 \u03b5\u03b9\u03c3\u03ac\u03b3\u03b1\u03c4\u03b5 \u03c6\u03b1\u03af\u03bd\u03b5\u03c4\u03b1\u03b9 \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03be\u03c9\u03c4\u03b5\u03c1\u03b9\u03ba\u03cc\u03c2 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf\u03c2, \u03bd\u03b1 \u03c0\u03c1\u03bf\u03c3\u03c4\u03b5\u03b8\u03b5\u03af \u03c4\u03bf \u03b1\u03c0\u03b1\u03c1\u03b1\u03af\u03c4\u03b7\u03c4\u03bf http:// ;","is_email":"\u0397 \u03b4\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae URL \u03c0\u03bf\u03c5 \u03b5\u03b9\u03c3\u03ac\u03b3\u03b1\u03c4\u03b5 \u03c6\u03b1\u03af\u03bd\u03b5\u03c4\u03b1\u03b9 \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 email, \u03bd\u03b1 \u03c0\u03c1\u03bf\u03c3\u03c4\u03b5\u03b8\u03b5\u03af \u03c4\u03bf \u03b1\u03c0\u03b1\u03c1\u03b1\u03af\u03c4\u03b7\u03c4\u03bf mailto: ;",titlefield:"\u03a4\u03af\u03c4\u03bb\u03bf\u03c2",target:"\u03a3\u03c4\u03cc\u03c7\u03bf\u03c2",url:"\u0394\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae URL \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5",title:"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5","link_list":"\u039b\u03af\u03c3\u03c4\u03b1 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03c9\u03bd",rtl:"\u0394\u03b5\u03be\u03b9\u03ac \u03c0\u03c1\u03bf\u03c2 \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac",ltr:"\u0391\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac \u03c0\u03c1\u03bf\u03c2 \u03b4\u03b5\u03be\u03b9\u03ac",accesskey:"\u03a0\u03bb\u03ae\u03ba\u03c4\u03c1\u03bf \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2",tabindex:"Tabindex",rev:"\u03a3\u03c7\u03ad\u03c3\u03b7 \u03c3\u03c4\u03cc\u03c7\u03bf\u03c5 \u03c0\u03c1\u03bf\u03c2 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1 (REV)",rel:"\u03a3\u03c7\u03ad\u03c3\u03b7 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1\u03c2 \u03c0\u03c1\u03bf\u03c2 \u03c3\u03c4\u03cc\u03c7\u03bf (REL)",mime:"\u03a4\u03cd\u03c0\u03bf\u03c2 MIME \u03c3\u03c4\u03cc\u03c7\u03bf\u03c5",encoding:"\u039a\u03c9\u03b4\u03b9\u03ba\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03ae\u03c1\u03c9\u03bd \u03c3\u03c4\u03cc\u03c7\u03bf\u03c5",langcode:"\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03b3\u03bb\u03ce\u03c3\u03c3\u03b1\u03c2","target_langcode":"\u0393\u03bb\u03ce\u03c3\u03c3\u03b1 \u03c3\u03c4\u03cc\u03c7\u03bf\u03c5",width:"\u03a0\u03bb\u03ac\u03c4\u03bf\u03c2",height:"\u038e\u03c8\u03bf\u03c2"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/en_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/en_dlg.js
deleted file mode 100644
index 3169a5658..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/en_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('en.advlink_dlg',{"target_name":"Target Name",classes:"Classes",style:"Style",id:"ID","popup_position":"Position (X/Y)",langdir:"Language Direction","popup_size":"Size","popup_dependent":"Dependent (Mozilla/Firefox Only)","popup_resizable":"Make Window Resizable","popup_location":"Show Location Bar","popup_menubar":"Show Menu Bar","popup_toolbar":"Show Toolbars","popup_statusbar":"Show Status Bar","popup_scrollbars":"Show Scrollbars","popup_return":"Insert \'return false\'","popup_name":"Window Name","popup_url":"Popup URL",popup:"JavaScript Popup","target_blank":"Open in New Window","target_top":"Open in Top Frame (Replaces All Frames)","target_parent":"Open in Parent Window/Frame","target_same":"Open in This Window/Frame","anchor_names":"Anchors","popup_opts":"Options","advanced_props":"Advanced Properties","event_props":"Events","popup_props":"Popup Properties","general_props":"General Properties","advanced_tab":"Advanced","events_tab":"Events","popup_tab":"Popup","general_tab":"General",list:"Link List","is_external":"The URL you entered seems to be an external link. Do you want to add the required http:// prefix?","is_email":"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",titlefield:"Title",target:"Target",url:"Link URL",title:"Insert/Edit Link","link_list":"Link List",rtl:"Right to Left",ltr:"Left to Right",accesskey:"AccessKey",tabindex:"TabIndex",rev:"Relationship Target to Page",rel:"Relationship Page to Target",mime:"Target MIME Type",encoding:"Target Character Encoding",langcode:"Language Code","target_langcode":"Target Language",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/eo_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/eo_dlg.js
deleted file mode 100644
index 2d13c2c2d..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/eo_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('eo.advlink_dlg',{"target_name":"Nomo de celo",classes:"Klasoj",style:"Stilo",id:"Id","popup_position":"Pozicio (X/Y)",langdir:"Tekstodirekto","popup_size":"Grandeco","popup_dependent":"Dependa (nur Mozilla/Firefox)","popup_resizable":"Permesi \u015dan\u011di la grandecon de fenestro","popup_location":"Montri adresbreton","popup_menubar":"Montri menubreton","popup_toolbar":"Montri ilobreton","popup_statusbar":"Montri statbreton","popup_scrollbars":"Montri rulumskalojn","popup_return":"Enmeti \"return false\"","popup_name":"Nomo de la fenestro","popup_url":"URL de la \u015dprucfenestro",popup:"\u015cprucfenestro Javascript","target_blank":"Malfermi en novan fenestron","target_top":"Malfermi en la plej supran nivelon (anstata\u016digas \u0109iujn kadrojn)","target_parent":"Malfermi en la patran fenestron/kadron","target_same":"Malfermi en \u0109i tiun fenestron/kadron","anchor_names":"Ankroj","popup_opts":"Agordoj","advanced_props":"Spertaj atributoj","event_props":"Eventoj","popup_props":"Atributoj de \u015dprucfenestro","general_props":"\u011ceneralaj atributoj","advanced_tab":"Spertaj","events_tab":"Eventoj","popup_tab":"\u015cprucfenestro","general_tab":"\u011ceneralaj",list:"Listo de ligiloj","is_external":"La entajpita adreso \u015dajne kondukas al ekstera ligilo. \u0108u vi volas aldoni la necesan prefikson http://?","is_email":"La entajpita adreso \u015dajnas retpo\u015dtadreso. \u0108u vi volas aldoni la necesan prefikson mailto:?",titlefield:"Titolo",target:"Celo",url:"Adreso de ligilo",title:"Enmeti/redakti ligilon","link_list":"Listo de ligiloj",rtl:"Dekstre-Maldekstren",ltr:"Maldekstre-Dekstren",accesskey:"Alir\u015dlosilo",tabindex:"TabIndekso",rev:"Rilato celo/pa\u011do",rel:"Rilato pa\u011do/celo",mime:"MIME-Tipo de la celo",encoding:"Signa enkodigo",langcode:"Lingvokodo","target_langcode":"Cellingvo",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/es_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/es_dlg.js
deleted file mode 100644
index 2f48a3715..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/es_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('es.advlink_dlg',{"target_name":"Nombre del Target",classes:"Clases",style:"Estilo",id:"Id","popup_position":"Posici\u00f3n (X/Y)",langdir:"Direcci\u00f3n del lenguaje","popup_size":"Tama\u00f1o","popup_dependent":"Dependientes (s\u00f3lo Mozilla/Firefox)","popup_resizable":"Permitir cambiar el tama\u00f1o de la ventana","popup_location":"Barra de localizaci\u00f3n","popup_menubar":"Barra de men\u00fa","popup_toolbar":"Barra de herramientas","popup_statusbar":"Barra de estado","popup_scrollbars":"Barras de desplazamiento","popup_return":"Insertar \'return false\'","popup_name":"Nombre de la ventana","popup_url":"URL de la ventana emergente",popup:"Javascript popup","target_blank":"Abrir en ventana nueva","target_top":"Abrir en el marco superior (reemplaza todos los marcos)","target_parent":"Abrir en ventana padre / marco","target_same":"Abrir en esta ventana / marco","anchor_names":"Anclas","popup_opts":"Opciones","advanced_props":"Propiedades avanzadas","event_props":"Eventos","popup_props":"Propiedades de ventanas emergentes","general_props":"Propiedades generales","advanced_tab":"Avanzado","events_tab":"Eventos","popup_tab":"Ventana emergente","general_tab":"General",list:"Lista de v\u00ednculos","is_external":"La URL que ha introducido parece ser un v\u00ednculo externo, \u00bfdesea agregar el prefijo http:// necesario?","is_email":"La URL que ha introducido parece ser una direci\u00f3n de correo, \u00bfdesea agregar el prefijo mailto: necesario?",titlefield:"T\u00edtulo",target:"Destino",url:"URL del hiperv\u00ednculo",title:"Insertar/editar hiperv\u00ednculo","link_list":"Lista de v\u00ednculo",rtl:"Derecha a izquierda",ltr:"Izquierda a derecha",accesskey:"Tecla de acceso",tabindex:"Indice de tabulaci\u00f3n",rev:"Relaci\u00f3n target a p\u00e1gina",rel:"Relaci\u00f3n p\u00e1gina a target",mime:"Tipo MIME del Target",encoding:"Codificaci\u00f3n de caracteres del Target",langcode:"C\u00f3digo del lenguaje","target_langcode":"Lenguaje del Target",width:"Ancho",height:"Alto"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/et_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/et_dlg.js
deleted file mode 100644
index f8431bdea..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/et_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('et.advlink_dlg',{"target_name":"Sihtm\u00e4rgi nimi",classes:"Klassid",style:"Stiil",id:"ID","popup_position":"Positsioon (X/Y)",langdir:"Keele suund","popup_size":"Suurus","popup_dependent":"S\u00f5ltuv (ainult Mozilla/Firefox)","popup_resizable":"Muuda akna suurus muudetavaks","popup_location":"N\u00e4ita asukohariba","popup_menubar":"N\u00e4ita men\u00fc\u00fcriba","popup_toolbar":"N\u00e4ita seadistusriba","popup_statusbar":"N\u00e4ita staatuse riba","popup_scrollbars":"N\u00e4ita kerimisribasid","popup_return":"Sisesta \'tagasiminek eba\u00f5nnestus\'","popup_name":"Akna nimi","popup_url":"Pop-up\u2019i URL",popup:"Javascript\u2019i pop-up","target_blank":"Ava uues aknas","target_top":"Ava k\u00f5rgeimas raamis (asenda k\u00f5ik raamid)","target_parent":"Ava pea-aknas/raamis","target_same":"Ava selles aknas/raamis","anchor_names":"Ankrud","popup_opts":"Valikud","advanced_props":"\u00dcldised seadistused","event_props":"S\u00fcndmused","popup_props":"Pop-up\u2019i seadistus","general_props":"\u00dcldised seadistused","advanced_tab":"P\u00f5hjalikum","events_tab":"S\u00fcndmused","popup_tab":"Pop-up","general_tab":"\u00dcldine",list:"Linkide nimekiri","is_external":"URL, mille sisestasid, tundub olevat v\u00e4line link, kas soovid sellele lisada http://?","is_email":" URL, mille sisestasid, tundub olevat e-posti aadress, kas soovid sellele lisada mailto: funktsiooni?",titlefield:"Pealkiri",target:"Sihtm\u00e4rk",url:" URL\u2019i link",title:"Sisesta muuda linki","link_list":"Linkide list",rtl:"Paremalt vasakule",ltr:"Vasakult paremale",accesskey:"Ligip\u00e4\u00e4suklahv",tabindex:"Sisujuht",rev:"Seo sihtm\u00e4rk lehega",rel:"Seo leht sihtm\u00e4rgiga",mime:"M\u00e4rgista MIME t\u00fc\u00fcp",encoding:"Sihtm\u00e4rgi kodeering",langcode:"Keele kood","target_langcode":"Sihtm\u00e4rgi keel",width:"Laius",height:"K\u00f5rgus"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/eu_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/eu_dlg.js
deleted file mode 100644
index 5e6c7ef52..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/eu_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('eu.advlink_dlg',{"target_name":"Helburuaren izena",classes:"Klaseak",style:"Estiloa",id:"Id","popup_position":"Kokapena (X/Y)",langdir:"Hizkuntzaren norabidea","popup_size":"Tamaina","popup_dependent":"Menpekoa (Mozilla/Firefoxen bakarrik)","popup_resizable":"Leihoaren tamaina aldatzea aktibatu","popup_location":"Helbide-barra erakutsi","popup_menubar":"Menu-barra erakutsi","popup_toolbar":"Tresna-barrak erakutsi","popup_statusbar":"Egoera-barra erakutsi","popup_scrollbars":"Gora-behera barra erakutsi","popup_return":"\'return false\' txertatu","popup_name":"Leihoaren izena","popup_url":"Popuparen URL helbidea",popup:"Javascript popupa","target_blank":"Leiho berrian ireki","target_top":"Gorengo markoan ireki (marko guztiak ordezkatzen ditu)","target_parent":"Leiho/marko gurasoan ireki","target_same":"Leiho/marko honetan ireki","anchor_names":"Aingurak","popup_opts":"Aukerak","advanced_props":"Aukera aurreratuak","event_props":"Ebentuak","popup_props":"Popuparen aukerak","general_props":"Aukera orokorrak","advanced_tab":"Gehigarriak","events_tab":"Ebentuak","popup_tab":"Popupa","general_tab":"Orokorra",list:"Lotura-zerrenda","is_external":"Sartutako helbideak kanpoko webgune batena dirudi, aurretik http:// gehitzea nahi duzu?","is_email":"Sartutako helbideak e-posta bat dirudi, aurretik mailto: gehitzea nahi duzu?",titlefield:"Izenburua",target:"Helburua",url:"Loturaren URL helbidea",title:"Lotura txertatu/editatu","link_list":"Lotura-zerrenda",rtl:"Eskuinetik ezkerrera",ltr:"Ezkerretik eskuinera",accesskey:"Laster-tekla",tabindex:"Tabulazio ordena",rev:"Helburuaren eta orrialdearen arteko erlazioa",rel:"Orrialdearen eta helburuaren arteko erlazioa",mime:"Helburuaren MIME mota",encoding:"Helburuaren karaktere-kodeketa",langcode:"Hizkuntza-kodea","target_langcode":"Helburu-hizkuntza",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/fa_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/fa_dlg.js
deleted file mode 100644
index d500971a7..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/fa_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fa.advlink_dlg',{"target_name":"\u0646\u0627\u0645 \u0645\u0642\u0635\u062f (Target)",classes:"\u06a9\u0644\u0627\u0633 \u0647\u0627",style:"\u0627\u0633\u062a\u0627\u06cc\u0644",id:"\u0634\u0646\u0627\u0633\u0647","popup_position":"\u0645\u0648\u0642\u0639\u06cc\u062a (X/Y)",langdir:"\u062c\u0647\u062a \u0632\u0628\u0627\u0646","popup_size":"\u0627\u0646\u062f\u0627\u0632\u0647","popup_dependent":"\u0648\u0627\u0628\u0633\u062a\u0647 (\u0641\u0642\u0637 Mozilla/Firefox)","popup_resizable":"\u0627\u06cc\u062c\u0627\u062f \u067e\u0646\u062c\u0631\u0647 \u0642\u0627\u0628\u0644 \u0627\u0646\u062f\u0627\u0632\u0647 \u0628\u0646\u062f\u06cc \u0645\u062c\u062f\u062f","popup_location":"\u0646\u0645\u0627\u06cc\u0634 \u0646\u0648\u0627\u0631 \u0645\u06a9\u0627\u0646","popup_menubar":"\u0646\u0645\u0627\u06cc\u0634 \u0646\u0648\u0627\u0631 \u0645\u0646\u0648","popup_toolbar":"\u0646\u0645\u0627\u06cc\u0634 \u0646\u0648\u0627\u0631 \u0627\u0628\u0632\u0627\u0631","popup_statusbar":"\u0646\u0645\u0627\u06cc\u0634 \u0646\u0648\u0627\u0631 \u0648\u0636\u0639\u06cc\u062a","popup_scrollbars":"\u0646\u0645\u0627\u06cc\u0634 \u0646\u0648\u0627\u0631 \u067e\u06cc\u0645\u0627\u06cc\u0634 \u0647\u0627","popup_return":"\u062f\u0631\u062c \'return false\'","popup_name":"\u0646\u0627\u0645 \u067e\u0646\u062c\u0631\u0647","popup_url":"\u0622\u062f\u0631\u0633 \u067e\u0646\u062c\u0631\u0647 \u0628\u0627\u0632\u0634\u0648 (Popup)",popup:"\u067e\u0646\u062c\u0631\u0647 \u0628\u0627\u0632\u0634\u0648\u06cc Javascript","target_blank":"\u0628\u0627\u0632\u0634\u062f\u0646 \u062f\u0631 \u067e\u0646\u062c\u0631\u0647 \u062c\u062f\u06cc\u062f","target_top":"\u0628\u0627\u0632\u0634\u062f\u0646 \u062f\u0631 \u0642\u0627\u0628 \u0628\u0627\u0644\u0627 (Top Frame) (\u062a\u0645\u0627\u0645\u06cc \u0642\u0627\u0628 \u0647\u0627 \u0631\u0627 \u062a\u0639\u0648\u06cc\u0636 \u0645\u06cc \u06a9\u0646\u062f)","target_parent":"\u0628\u0627\u0632\u0634\u062f\u0646 \u062f\u0631 \u067e\u0646\u062c\u0631\u0647 / \u0642\u0627\u0628 \u0648\u0627\u0644\u062f (Parent Frame)","target_same":"\u0628\u0627\u0632\u0634\u062f\u0646 \u062f\u0631 \u0627\u06cc\u0646 \u067e\u0646\u062c\u0631\u0647 / \u0642\u0627\u0628 (Frame)","anchor_names":"\u0644\u0646\u06af\u0631\u0647\u0627 (Anchor)","popup_opts":"\u062a\u0646\u0638\u06cc\u0645\u0627\u062a","advanced_props":"\u0645\u0634\u062e\u0635\u0627\u062a \u067e\u06cc\u0634\u0631\u0641\u062a\u0647","event_props":"\u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627","popup_props":"\u0645\u0634\u062e\u0635\u0627\u062a \u067e\u0646\u062c\u0631\u0647 \u0628\u0627\u0632\u0634\u0648 (Popup)","general_props":"\u0645\u0634\u062e\u0635\u0627\u062a \u0639\u0645\u0648\u0645\u06cc","advanced_tab":"\u067e\u06cc\u0634\u0631\u0641\u062a\u0647","events_tab":"\u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627","popup_tab":"\u067e\u0646\u062c\u0631\u0647 \u0628\u0627\u0632\u0634\u0648 (Popup)","general_tab":"\u0639\u0645\u0648\u0645\u06cc",list:"\u0644\u06cc\u0633\u062a \u0644\u06cc\u0646\u06a9","is_external":"\u0622\u062f\u0631\u0633 \u0648\u0628\u06cc \u06a9\u0647 \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0622\u06cc\u062f \u06a9\u0647 \u06cc\u06a9 \u0644\u06cc\u0646\u06a9 \u062e\u0627\u0631\u062c\u06cc \u0645\u06cc \u0628\u0627\u0634\u062f \u060c \u0622\u06cc\u0627 \u0645\u0627\u06cc\u0644\u06cc\u062f \u062a\u0627 \u067e\u06cc\u0634\u0648\u0646\u062f \u0644\u0627\u0632\u0645\u0647 //:http \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u0646\u0645\u0627\u0626\u06cc\u062f\u061f","is_email":"\u0622\u062f\u0631\u0633 \u0648\u0628\u06cc \u06a9\u0647 \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0622\u06cc\u062f \u06a9\u0647 \u06cc\u06a9 \u0622\u062f\u0631\u0633 \u0627\u06cc\u0645\u06cc\u0644 \u0645\u06cc \u0628\u0627\u0634\u062f \u060c \u0622\u06cc\u0627 \u0645\u0627\u06cc\u0644\u06cc\u062f \u062a\u0627 \u067e\u06cc\u0634\u0648\u0646\u062f \u0644\u0627\u0632\u0645\u0647 :mailto \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u0646\u0645\u0627\u0626\u06cc\u062f\u061f",titlefield:"\u0639\u0646\u0648\u0627\u0646",target:"\u0645\u0642\u0635\u062f (Target)",url:"\u0622\u062f\u0631\u0633 \u0644\u06cc\u0646\u06a9",title:"\u062f\u0631\u062c/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0644\u06cc\u0646\u06a9","link_list":"\u0644\u06cc\u0633\u062a \u0644\u06cc\u0646\u06a9",rtl:"\u0631\u0627\u0633\u062a \u0628\u0647 \u0686\u067e",ltr:"\u0686\u067e \u0628\u0647 \u0631\u0627\u0633\u062a",accesskey:"\u06a9\u0644\u06cc\u062f \u062f\u0633\u062a\u0631\u0633\u06cc",tabindex:"TabIndex",rev:"\u0631\u0627\u0628\u0637\u0647 \u0645\u0642\u0635\u062f (Target) \u0628\u0627 \u0635\u0641\u062d\u0647",rel:"\u0631\u0627\u0628\u0637\u0647 \u0635\u0641\u062d\u0647 \u0628\u0627 \u0645\u0642\u0635\u062f (Target)",mime:"\u0646\u0648\u0639 MIME \u0645\u0642\u0635\u062f (Target)",encoding:"\u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u0645\u0642\u0635\u062f (Target)",langcode:"\u06a9\u062f \u0632\u0628\u0627\u0646","target_langcode":"\u0632\u0628\u0627\u0646 \u0645\u0642\u0635\u062f (Target)",width:"\u067e\u0647\u0646\u0627",height:"\u0627\u0631\u062a\u0641\u0627\u0639"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/fi_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/fi_dlg.js
deleted file mode 100644
index e49488e73..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/fi_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fi.advlink_dlg',{"target_name":"Kohteen nimi",classes:"Luokat",style:"Tyyli",id:"Id","popup_position":"Sijainti (X/Y)",langdir:"Kielen suunta","popup_size":"Koko","popup_dependent":"Riippuvainen (vain Mozilla/Firefox)","popup_resizable":"Tee ikkunan koko muokattavaksi","popup_location":"N\u00e4yt\u00e4 sijaintipalkki","popup_menubar":"N\u00e4yt\u00e4 valikkopalkki","popup_toolbar":"N\u00e4yt\u00e4 ty\u00f6kalut","popup_statusbar":"N\u00e4yt\u00e4 tilapalkki","popup_scrollbars":"N\u00e4yt\u00e4 vierityspalkit","popup_return":"Lis\u00e4\u00e4 \'return false\'","popup_name":"Ikkunan nimi","popup_url":"Ponnahdusikkunan URL",popup:"JavaScript-ponnahdusikkuna","target_blank":"Avaa uudessa ikkunassa","target_top":"Avaa ylimm\u00e4ss\u00e4 ruudussa (korvaa kaikki ruudut)","target_parent":"Avaa ylemm\u00e4ss\u00e4 ikkunassa","target_same":"Avaa t\u00e4ss\u00e4 ikkunassa","anchor_names":"Ankkurit","popup_opts":"Valinta","advanced_props":"Edistyneet asetukset","event_props":"Tapahtumat (events)","popup_props":"Ponnahdusikkunan asetukset","general_props":"Yleiset asetukset","advanced_tab":"Edistynyt","events_tab":"Tapahtumat","popup_tab":"Ponnahdusikkuna","general_tab":"Yleiset",list:"Linkkilista","is_external":"Sy\u00f6tt\u00e4m\u00e4si URL n\u00e4ytt\u00e4\u00e4 olevan sivuston ulkoinen osoite, haluatko lis\u00e4t\u00e4 http://-etuliitteen?","is_email":"Sy\u00f6tt\u00e4m\u00e4si URL n\u00e4ytt\u00e4\u00e4 olevan s\u00e4hk\u00f6postiosoite, haluatko lis\u00e4t\u00e4 mailto:-etuliitteen?",titlefield:"Otsikko",target:"Kohde (target)",url:"Linkin URL",title:"Lis\u00e4\u00e4/muokkaa linkki\u00e4","link_list":"Linkkilista",rtl:"Oikealta vasemmalle",ltr:"Vasemmalta oikealle",accesskey:"Pikan\u00e4pp\u00e4in",tabindex:"Tabulaattori-indeksi",rev:"Kohteen suhde sivuun",rel:"Sivun suhde kohteeseen",mime:"Kohteen MIME-tyyppi",encoding:"Kohteen merkist\u00f6koodaus",langcode:"Kielen koodi","target_langcode":"Kohteen kieli",width:"Leveys",height:"Korkeus"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/fr_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/fr_dlg.js
deleted file mode 100644
index 38e5a7858..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/fr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fr.advlink_dlg',{"target_name":"Nom de la cible",classes:"Classes",style:"Style",id:"Id","popup_position":"Position (X/Y)",langdir:"Sens de lecture","popup_size":"Taille","popup_dependent":"D\u00e9pendante (seulement sous Mozilla/Firefox)","popup_resizable":"Autoriser le redimensionnement de la fen\u00eatre","popup_location":"Afficher la barre d\'adresse","popup_menubar":"Afficher la barre de menu","popup_toolbar":"Afficher la barre d\'outils","popup_statusbar":"Afficher la barre d\'\u00e9tat","popup_scrollbars":"Afficher les ascenseurs","popup_return":"Ins\u00e9rer \'return false\'","popup_name":"Nom de la fen\u00eatre","popup_url":"URL de la popup",popup:"Popup Javascript","target_blank":"Ouvrir dans une nouvelle fen\u00eatre","target_top":"Ouvrir dans le cadre principal (remplace tous les cadres)","target_parent":"Ouvrir dans la fen\u00eatre / le cadre parent","target_same":"Ouvrir dans cette fen\u00eatre / dans ce cadre","anchor_names":"Ancres","popup_opts":"Options","advanced_props":"Propri\u00e9t\u00e9s avanc\u00e9es","event_props":"\u00c9v\u00e8nements","popup_props":"Propri\u00e9t\u00e9s de la popup","general_props":"Propri\u00e9t\u00e9s g\u00e9n\u00e9rales","advanced_tab":"Avanc\u00e9","events_tab":"\u00c9v\u00e8nements","popup_tab":"Popup","general_tab":"G\u00e9n\u00e9ral",list:"Liste de liens","is_external":"L\'URL que vous avez saisie semble \u00eatre une adresse web externe. Souhaitez-vous ajouter le pr\u00e9fixe \u00ab http:// \u00bb ?","is_email":"L\'URL que vous avez saisie semble \u00eatre une adresse e-mail, souhaitez-vous ajouter le pr\u00e9fixe \u00ab mailto: \u00bb ?",titlefield:"Titre",target:"Cible",url:"URL du lien",title:"Ins\u00e9rer / \u00e9diter un lien","link_list":"Liste des liens",rtl:"Droite \u00e0 gauche",ltr:"Gauche \u00e0 droite",accesskey:"Touche d\'acc\u00e8s rapide",tabindex:"Tabindex",rev:"Relation de la cible \u00e0 la page",rel:"Relation de la page \u00e0 la cible",mime:"Type MIME de la cible",encoding:"Encodage de la cible",langcode:"Code de la langue","target_langcode":"Langue de la cible",width:"Largeur",height:"Hauteur"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/gl_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/gl_dlg.js
deleted file mode 100644
index 8b38a8e7f..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/gl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('gl.advlink_dlg',{"target_name":"Nome do obxetivo",classes:"Clases",style:"Estilo",id:"Id","popup_position":"Posici\u00f3n (X/Y)",langdir:"Direcci\u00f3n da lenguaxe","popup_size":"Tama\u00f1o","popup_dependent":"Dependentes (s\u00f3lo Mozilla/Firefox)","popup_resizable":"Permitir cambia-lo tama\u00f1o da vent\u00e1","popup_location":"Barra de localizaci\u00f3n","popup_menubar":"Barra de men\u00fa","popup_toolbar":"Barra de ferramentas","popup_statusbar":"Barra de estado","popup_scrollbars":"Barras de desprazamento","popup_return":"Insertar \'return false\'","popup_name":"Nome da vent\u00e1","popup_url":"URL da vent\u00e1 emerxente",popup:"Javascript popup","target_blank":"Abrir en vent\u00e1 nova","target_top":"Abrir no marco superior (reemplaza todo-los marcos)","target_parent":"Abrir na vent\u00e1 / marco padre","target_same":"Abrir nesta vent\u00e1 / marco","anchor_names":"\u00c1ncoras","popup_opts":"Opci\u00f3ns","advanced_props":"Propiedades avanzadas","event_props":"Eventos","popup_props":"Propiedades de vent\u00e1s emerxentes","general_props":"Propiedades xerales","advanced_tab":"Avanzado","events_tab":"Eventos","popup_tab":"Ventana emerxente","general_tab":"Xeral",list:"Lista de v\u00ednculos","is_external":"A URL introducida semella ser un v\u00ednculo externo, \u00bfDesexa engadi-lo prefixo necesario http://?","is_email":"A URL introducida semella ser un enderezo de e-mail, \u00bfDesexa engadi-lo prefixo necesario mailto:?",titlefield:"T\u00edtulo",target:"Destino",url:"URL do hiperv\u00ednculo",title:"Insertar/editar hiperv\u00ednculo","link_list":"Lista de v\u00ednculo",rtl:"Dereita a esquerda",ltr:"Esquerda a dereita",accesskey:"Tecla de acceso",tabindex:"\u00cdndice de tabulaci\u00f3n",rev:"Relaci\u00f3n obxetivo a p\u00e1xina",rel:"Relaci\u00f3n p\u00e1xina a obxetivo",mime:"Tipo MIME do obxetivo",encoding:"Codificaci\u00f3n de caracteres do obxetivo",langcode:"C\u00f3digo da lenguaxe","target_langcode":"Lenguaxe do obxetivo",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/he_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/he_dlg.js
deleted file mode 100644
index 7ea21bdaa..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/he_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('he.advlink_dlg',{"target_name":"Target name",classes:"Classes",style:"\u05e1\u05d2\u05e0\u05d5\u05df",id:"\u05de\u05e1\u05e4\u05e8 \u05e1\u05d9\u05d3\u05d5\u05e8\u05d9","popup_position":"\u05de\u05d9\u05e7\u05d5\u05dd (X/Y)",langdir:"\u05db\u05d9\u05d5\u05d5\u05df \u05d4\u05e9\u05e4\u05d4","popup_size":"\u05d2\u05d5\u05d3\u05dc","popup_dependent":"Dependent (Mozilla/Firefox only)","popup_resizable":"\u05d7\u05dc\u05d5\u05df \u05d3\u05d9\u05e0\u05d0\u05de\u05d9(resizable)","popup_location":"\u05d4\u05e6\u05d2\u05ea location bar ","popup_menubar":"\u05d4\u05e6\u05d2\u05ea \u05ea\u05e4\u05e8\u05d9\u05d8","popup_toolbar":"\u05d4\u05e6\u05d2\u05ea \u05e1\u05e8\u05d2\u05dc\u05d9 \u05db\u05dc\u05d9\u05dd","popup_statusbar":"\u05d4\u05e6\u05d2\u05ea \u05e9\u05d5\u05e8\u05ea \u05e1\u05d8\u05d0\u05d8\u05d5\u05e1","popup_scrollbars":"\u05d4\u05e6\u05d2\u05ea \u05e4\u05e1 \u05d2\u05dc\u05d9\u05dc\u05d4","popup_return":"\u05d9\u05e9 \u05dc\u05d4\u05db\u05e0\u05d9\u05e1 \'return false\'","popup_name":"\u05e9\u05dd \u05d4\u05d7\u05dc\u05d5\u05df","popup_url":"\u05d7\u05dc\u05d5\u05df \u05de\u05d5\u05e7\u05e4\u05e5 URL",popup:"\u05d7\u05dc\u05d5\u05df \u05de\u05d5\u05e7\u05e4\u05e5 javascript","target_blank":"\u05e4\u05ea\u05d9\u05d7\u05d4 \u05d1\u05d7\u05dc\u05d5\u05df \u05d7\u05d3\u05e9","target_top":"\u05e4\u05ea\u05d9\u05d7\u05d4 \u05d1\u05d7\u05dc\u05d5\u05df \u05d4\u05d1\u05df \u05d4\u05e8\u05d0\u05e9\u05d9(\u05de\u05d7\u05dc\u05d9\u05e3 \u05d0\u05ea \u05db\u05dc \u05d7\u05dc\u05d5\u05e0\u05d5\u05ea \u05d4\u05d1\u05e0\u05d9\u05dd)","target_parent":"\u05e4\u05ea\u05d9\u05d7\u05d4 \u05d1\u05dc\u05d5\u05df \u05d4\u05d0\u05d1\u05d0/\u05d7\u05dc\u05d5\u05df \u05d1\u05df","target_same":"\u05e4\u05ea\u05d9\u05d7\u05d4 \u05d1\u05d7\u05dc\u05d5\u05df \u05d7\u05d3\u05e9/\u05d7\u05dc\u05d5\u05df \u05d1\u05df","anchor_names":"\u05e7\u05d9\u05e9\u05d5\u05e8 \u05dc\u05e1\u05d9\u05de\u05e0\u05d9\u05d4","popup_opts":"\u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea","advanced_props":"\u05ea\u05db\u05d5\u05e0\u05d5\u05ea \u05de\u05ea\u05e7\u05d3\u05de\u05d5\u05ea","event_props":"\u05de\u05d0\u05d5\u05e8\u05e2\u05d5\u05ea","popup_props":"\u05ea\u05db\u05d5\u05e0\u05d5\u05ea \u05d7\u05dc\u05d5\u05df \u05de\u05d5\u05e7\u05e4\u05e5","general_props":"\u05ea\u05db\u05d5\u05e0\u05d5\u05ea \u05db\u05dc\u05dc\u05d9\u05d5\u05ea","advanced_tab":"\u05de\u05ea\u05e7\u05d3\u05dd","events_tab":"\u05d0\u05e8\u05d5\u05e2\u05d9\u05dd","popup_tab":"\u05d7\u05dc\u05d5\u05df \u05de\u05d5\u05e7\u05e4\u05e5","general_tab":"\u05db\u05dc\u05dc\u05d9",list:"\u05e8\u05e9\u05d9\u05de\u05ea \u05e7\u05d9\u05e9\u05d5\u05e8\u05d9\u05dd","is_external":"\u05db\u05ea\u05d5\u05d1\u05ea \u05d4-URL \u05e9\u05d4\u05d5\u05db\u05e0\u05e1\u05d4 \u05d4\u05d9\u05d0 \u05db\u05db\u05dc \u05d4\u05e0\u05e8\u05d0\u05d4 \u05e7\u05d9\u05e9\u05d5\u05e8 \u05d7\u05d9\u05e6\u05d5\u05e0\u05d9 \u05d4\u05d0\u05dd \u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05d4\u05d5\u05e1\u05d9\u05e3 \u05d0\u05ea \u05d4\u05e7\u05d9\u05d3\u05d5\u05de\u05ea http:// \u05d4\u05e0\u05d3\u05e8\u05e9\u05ea?","is_email":"\u05db\u05ea\u05d5\u05d1\u05ea \u05d4-URL \u05e9\u05d4\u05d5\u05db\u05e0\u05e1\u05d4 \u05d4\u05d9\u05d0 \u05db\u05db\u05dc \u05d4\u05e0\u05e8\u05d0\u05d4 \u05db\u05ea\u05d5\u05d1\u05ea \u05de\u05d9\u05d9\u05dc \u05d4\u05d0\u05dd \u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05d4\u05d5\u05e1\u05d9\u05e3 \u05d0\u05ea \u05d4\u05e7\u05d9\u05d3\u05d5\u05de\u05ea MAILTO \u05d4\u05e0\u05d3\u05e8\u05e9\u05ea?",titlefield:"\u05db\u05d5\u05ea\u05e8\u05ea \u05d4\u05e7\u05d9\u05e9\u05d5\u05e8",target:"\u05d9\u05e2\u05d3",url:"\u05db\u05ea\u05d5\u05d1\u05ea \u05d4\u05e7\u05d9\u05e9\u05d5\u05e8",title:"\u05d4\u05d5\u05e1\u05e4\u05d4/\u05e2\u05e8\u05d9\u05db\u05ea \u05e7\u05d9\u05e9\u05d5\u05e8","link_list":"\u05e8\u05e9\u05d9\u05de\u05ea \u05e7\u05d9\u05e9\u05d5\u05e8\u05d9\u05dd",rtl:"\u05de\u05d9\u05de\u05d9\u05df \u05dc\u05e9\u05de\u05d0\u05dc",ltr:"\u05de\u05e9\u05de\u05d0\u05dc \u05dc\u05d9\u05de\u05d9\u05df",accesskey:"Accesskey",tabindex:"Tabindex",rev:"Relationship target to page",rel:"Relationship page to target",mime:"Target MIME type",encoding:"Target character encoding",langcode:"\u05e7\u05d5\u05d3 \u05d4\u05e9\u05e4\u05d4","target_langcode":"Target language",width:"\u05e8\u05d5\u05d7\u05d1",height:"\u05d2\u05d5\u05d1\u05d4"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/hi_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/hi_dlg.js
deleted file mode 100644
index 5c31c6d2e..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/hi_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hi.advlink_dlg',{"target_name":"Target name",classes:"Classes",style:"Style",id:"Id","popup_position":"Position (X/Y)",langdir:"Language direction","popup_size":"Size","popup_dependent":"Dependent (Mozilla/Firefox only)","popup_resizable":"Make window resizable","popup_location":"Show location bar","popup_menubar":"Show menu bar","popup_toolbar":"Show toolbars","popup_statusbar":"Show status bar","popup_scrollbars":"Show scrollbars","popup_return":"Insert \'return false\'","popup_name":"Window name","popup_url":"Popup URL",popup:"Javascript popup","target_blank":"Open in new window","target_top":"Open in top frame (replaces all frames)","target_parent":"Open in parent window / frame","target_same":"Open in this window / frame","anchor_names":"Anchors","popup_opts":"Options","advanced_props":"Advanced properties","event_props":"Events","popup_props":"Popup properties","general_props":"General properties","advanced_tab":"Advanced","events_tab":"Events","popup_tab":"Popup","general_tab":"General",list:"Link list","is_external":"The URL you entered seems to external link, do you want to add the required http:// prefix?","is_email":"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?",titlefield:"Title",target:"Target",url:"Link URL",title:"Insert/edit link","link_list":"Link list",rtl:"Right to left",ltr:"Left to right",accesskey:"Accesskey",tabindex:"Tabindex",rev:"Relationship target to page",rel:"Relationship page to target",mime:"Target MIME type",encoding:"Target character encoding",langcode:"Language code","target_langcode":"Target language",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/hr_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/hr_dlg.js
deleted file mode 100644
index 37001bd12..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/hr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hr.advlink_dlg',{"target_name":"Ime mete",classes:"Klasa",style:"Stil",id:"Id","popup_position":"Pozicija (X/Y)",langdir:"Smjer jezika","popup_size":"Veli\u010dina","popup_dependent":"Ovisan (samo za Mozilla/Firefox)","popup_resizable":"Prozor promjenjive veli\u010dine","popup_location":"Poka\u017ei traku lokacije","popup_menubar":"Poka\u017ei izbornik","popup_toolbar":"Poka\u017ei alatne trake","popup_statusbar":"Poka\u017ei statusnu traku","popup_scrollbars":"Poka\u017ei kliza\u010de","popup_return":"Umetni \'return false\'","popup_name":"Ime prozora","popup_url":"Popup URL",popup:"Javascript popup","target_blank":"Otvori u novom prozoru","target_top":"Otvori u gornjem okviru (zamjenjuje sve okvire) (_top)","target_parent":"Otvori u izvornom prozoru / okvir","target_same":"Otovori u ovom prozoru / okviru","anchor_names":"Sidra","popup_opts":"Opcije","advanced_props":"Napredna svojstva","event_props":"Doga\u0111aji","popup_props":"Svojstva popup prozora","general_props":"Osnovna svojstva","advanced_tab":"Napredno","events_tab":"Doga\u0111aj","popup_tab":"Popup","general_tab":"Op\u0107e",list:"Lista linkova","is_external":"URL koji ste unijeli izgleda kao vanjski link, \u017eelite li dodati potrebni http:// prefiks?","is_email":"URL koji ste unijeli izgleda kao e-mail adresa, \u017eelite li dodati potrebni mailto: prefiks?",titlefield:"Naslov",target:"Meta",url:"URL linkovi",title:"Umetni/uredi link","link_list":"Lista linkova",rtl:"S desna na lijevo",ltr:"S lijeva na desno",accesskey:"Accesskey",tabindex:"Tabindex",rev:"Odnos mete prema stranici",rel:"Odnos stranice prema meti",mime:"MIME tip",encoding:"Kodiranje znakova",langcode:"Kod jezika","target_langcode":"Jezik mete",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/hu_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/hu_dlg.js
deleted file mode 100644
index 9cf1c8fbe..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/hu_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hu.advlink_dlg',{"target_name":"C\u00e9l neve",classes:"Class-ok",style:"Style",id:"Id","popup_position":"Poz\u00edci\u00f3 (X/Y)",langdir:"Nyelv \u00edr\u00e1s ir\u00e1ny","popup_size":"M\u00e9ret","popup_dependent":"F\u00fcgg\u0151 (csak Mozilla/Firefox)","popup_resizable":"\u00c1tm\u00e9retezhet\u0151 ablak","popup_location":"C\u00edm mez\u0151 mutat\u00e1sa","popup_menubar":"Men\u00fcsor mutat\u00e1sa","popup_toolbar":"Eszk\u00f6zsor mutat\u00e1sa","popup_statusbar":"St\u00e1tuszsor mutat\u00e1sa","popup_scrollbars":"G\u00f6rget\u0151s\u00e1vok mutat\u00e1sa","popup_return":"\'return false\' besz\u00far\u00e1sa","popup_name":"Ablakn\u00e9v","popup_url":"Felugr\u00f3 ablak URL",popup:"JavaScript felugr\u00f3 ablak","target_blank":"\u00daj ablakban megnyit\u00e1s","target_top":"Azonos ablakban/keretben megnyit\u00e1s legfel\u00fcl","target_parent":"Sz\u00fcl\u0151 ablakban/keretben megnyit\u00e1s","target_same":"Azonos ablakban/keretben megnyit\u00e1s","anchor_names":"Horgonyok","popup_opts":"Be\u00e1ll\u00edt\u00e1sok","advanced_props":"Halad\u00f3 tulajdons\u00e1gok","event_props":"Esem\u00e9nyek","popup_props":"Felugr\u00f3 ablak tulajdons\u00e1gai","general_props":"\u00c1ltal\u00e1nos tulajdons\u00e1gok","advanced_tab":"Halad\u00f3","events_tab":"Esem\u00e9nyek","popup_tab":"Felugr\u00f3 ablak","general_tab":"\u00c1ltal\u00e1nos",list:"Link lista","is_external":"A be\u00edrt URL k\u00fcls\u0151 hivatkoz\u00e1snak t\u0171nik, k\u00edv\u00e1nja a sz\u00fcks\u00e9ges http://-t el\u00e9 tenni?","is_email":"A be\u00edrt URL e-mail c\u00edmnek t\u0171nik, k\u00edv\u00e1nja a sz\u00fcks\u00e9ges mailto:-t el\u00e9 tenni?",titlefield:"C\u00edm",target:"Target",url:"Link URL",title:"Link besz\u00far\u00e1s/szerkeszt\u00e9s","link_list":"Link lista",rtl:"Jobbr\u00f3l balra",ltr:"Balr\u00f3l jobbra",accesskey:"Gyorsgomb",tabindex:"Tabindex",rev:"C\u00e9l kapcsolata az oldallal",rel:"Oldal kapcsolata a c\u00e9llal",mime:"C\u00e9l MIME t\u00edpus",encoding:"C\u00e9l karakterk\u00f3dol\u00e1s",langcode:"Nyelv k\u00f3d","target_langcode":"C\u00e9l nyelv",width:"Sz\u00e9less\u00e9g",height:"Magass\u00e1g"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/hy_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/hy_dlg.js
deleted file mode 100644
index f713e3154..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/hy_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hy.advlink_dlg',{"target_name":"Target name",classes:"\u0534\u0561\u057d\u0565\u0580",style:"\u0548\u0573",id:"Id","popup_position":"\u054f\u0565\u0572\u0561\u056f\u0561\u0575\u0578\u0582\u0574 (X / Y)",langdir:"\u0548\u0582\u0572\u0572\u0578\u0582\u0569\u0575\u0578\u0582\u0576","popup_size":"\u0549\u0561\u0583\u057d","popup_dependent":"Dependent (\u0574\u056b\u0561\u0575\u0576 Mozilla / Firefox)","popup_resizable":"\u0539\u0578\u0582\u0575\u056c\u0561\u057f\u0580\u0565\u056c \u0579\u0561\u0583\u0565\u0580\u056b \u0583\u0578\u0583\u0578\u056d\u0578\u0582\u0574","popup_location":"\u0551\u0578\u0582\u0581\u0561\u0564\u0580\u0565\u056c location \u057e\u0561\u0570\u0561\u0576\u0561\u056f\u0568","popup_menubar":"\u0551\u0578\u0582\u0581\u0561\u0564\u0580\u0565\u056c \u0574\u0565\u0576\u0575\u0578\u0582\u0576","popup_toolbar":"\u0551\u0578\u0582\u0581\u0561\u0564\u0580\u0565\u056c \u0563\u0578\u0580\u056e\u056b\u0584\u0561\u0575\u056b\u0576 \u057e\u0561\u0570\u0561\u0576\u0561\u056f\u0576\u0565\u0580\u0568","popup_statusbar":"\u0551\u0578\u0582\u0581\u0561\u0564\u0580\u0565\u056c \u057d\u057f\u0561\u057f\u0578\u0582\u057d\u0568","popup_scrollbars":"\u0551\u0578\u0582\u0581\u0561\u0564\u0580\u0565\u056c \u057d\u0584\u0580\u0578\u056c\u056c\u0576\u0565\u0580\u0568","popup_return":"\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c \'return false\'","popup_name":"\u054a\u0561\u057f\u0578\u0582\u0570\u0561\u0576\u056b \u0561\u0576\u057e\u0561\u0576\u0578\u0582\u0574","popup_url":"Popup URL",popup:"Javascript popup","target_blank":"\u0532\u0561\u0581\u0565\u056c \u0576\u0578\u0580 \u057a\u0561\u057f\u0578\u0582\u0570\u0561\u0576\u0578\u0582\u0574","target_top":"\u0532\u0561\u0581\u0565\u056c \u057e\u0565\u0580\u056b\u0576 \u0586\u0580\u0565\u0575\u0574\u0578\u0582\u0574 (\u0583\u0578\u0583\u0578\u056d\u0565\u056c \u0562\u0578\u056c\u0578\u0580 \u0586\u0580\u0565\u0575\u0574\u0565\u0580\u0568)","target_parent":"\u0532\u0561\u0581\u0565\u056c \u0570\u056b\u0574\u0576\u0561\u056f\u0561\u0576 \u057a\u0561\u057f\u0578\u0582\u0570\u0561\u0576\u0578\u0582\u0574 / \u0586\u0580\u0565\u0575\u0574\u0578\u0582\u0574","target_same":"\u0532\u0561\u0581\u0565\u056c \u0561\u0575\u057d \u057a\u0561\u057f\u0578\u0582\u0570\u0561\u0576\u0578\u0582\u0574 / \u0586\u0580\u0565\u0575\u0574\u0578\u0582\u0574","anchor_names":"\u053d\u0561\u0580\u056b\u057d\u056d","popup_opts":"\u054a\u0561\u0580\u0561\u0574\u0565\u057f\u0580\u0565\u0580","advanced_props":"\u053c\u0580\u0561\u0581\u0578\u0582\u0581\u056b\u0579 \u0564\u0565\u057a\u0584\u0565\u0580","event_props":"\u0534\u0565\u057a\u0584\u0565\u0580","popup_props":"Popup \u057a\u0561\u0580\u0561\u0574\u0565\u057f\u0580\u0565\u0580","general_props":"\u0538\u0576\u0564\u0570\u0561\u0576\u0578\u0582\u0580 \u057a\u0561\u0580\u0561\u0574\u0565\u057f\u0580\u0565\u0580","advanced_tab":"\u053c\u0580\u0561\u0581\u0578\u0582\u0581\u056b\u0579","events_tab":"\u0534\u0565\u057a\u0584\u0565\u0580","popup_tab":"Popup","general_tab":"\u0540\u056b\u0574\u0576\u0561\u056f\u0561\u0576",list:"\u0540\u0572\u0578\u0582\u0574\u0576\u0565\u0580\u056b \u0581\u0561\u0576\u056f","is_external":"\u0546\u0565\u0580\u0561\u056e\u057e\u0561\u056e URL \u0570\u0561\u057d\u0581\u0565\u0576 \u0576\u0574\u0561\u0576 \u0567 \u0561\u0580\u057f\u0561\u0584\u056b\u0576 \u0570\u0572\u0574\u0561\u0576, \u0534\u0578\u0582\u0584 \u0581\u0561\u0576\u056f\u0561\u0576\u0578\u0582\u055e\u0574 \u0565\u0584 \u0561\u057e\u0565\u056c\u0561\u0581\u0576\u0565\u056c http://","is_email":"\u0546\u0565\u0580\u0561\u056e\u057e\u0561\u056e URL \u0570\u0561\u057d\u0581\u0565\u0576 \u0576\u0574\u0561\u0576 \u0567 email \u0570\u0561\u057d\u0581\u0565\u056b, \u0534\u0578\u0582\u0584 \u0581\u0561\u0576\u056f\u0561\u0576\u0578\u0582\u055e\u0574 \u0565\u0584 \u0561\u057e\u0565\u056c\u0561\u0581\u0576\u0565\u056c mailto:",titlefield:"\u054e\u0565\u0580\u0576\u0561\u0563\u056b\u0580",target:"\u0532\u0561\u0581\u0565\u056c ...",url:"\u0540\u0561\u057d\u0581\u0565",title:"\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c / \u0583\u0578\u0583\u0578\u056d\u0565\u056c \u0570\u0572\u0578\u0582\u0574","link_list":"\u0540\u0572\u0578\u0582\u0574\u0576\u0565\u0580\u056b \u0581\u0561\u0576\u056f",rtl:"\u0531\u057b\u056b\u0581 \u0571\u0561\u056d",ltr:"\u0541\u0561\u056d\u056b\u0581 \u0561\u057b",accesskey:"Accesskey",tabindex:"Tabindex",rev:"Relationship target to page",rel:"Relationship page to target",mime:"Target MIME type",encoding:"Target character encoding",langcode:"\u053c\u0565\u0566\u057e\u056b \u056f\u0578\u0564","target_langcode":"Target language",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/id_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/id_dlg.js
deleted file mode 100644
index deff7d775..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/id_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('id.advlink_dlg',{"target_name":"Nama Target",classes:"Classes",style:"Style",id:"Id","popup_position":"Posisi (X/Y)",langdir:"Bahasa","popup_size":"Ukuran","popup_dependent":"Tergantung (khusus Mozilla/Firefox)","popup_resizable":"Jadikan window resizable","popup_location":"Tampilkan location bar","popup_menubar":"Tampilkan menu bar","popup_toolbar":"Tampilkan toolbars","popup_statusbar":"Tampilkan status bar","popup_scrollbars":"Tampilkan scrollbars","popup_return":"sisipkan \'return false\'","popup_name":"Nama Window","popup_url":"Popup URL",popup:"Javascript popup","target_blank":"Buka pada Window baru","target_top":"Buka pada frame atas (Gantikan semua frame)","target_parent":"Buka pada parent window/frame","target_same":"Buka pada window/frame ini","anchor_names":"Anchors","popup_opts":"Options","advanced_props":"Advanced properties","event_props":"Events","popup_props":"Properti Pop-Up","general_props":"Properti Umum","advanced_tab":"Advanced","events_tab":"Events","popup_tab":"Popup","general_tab":"Umum",list:"Daftar Link","is_external":"URL yang Anda sisipkan tampaknya link eksternal, Anda ingin menambahkan awalan \'http://\'?","is_email":"URL yang Anda sisipkan tampaknya e-mail, Anda ingin menambahkan awalan \'mailto:\'?",titlefield:"Judul",target:"Target",url:"Link URL",title:"Sisipkan/Ubah link","link_list":"Daftar Link",rtl:"Kanan ke kiri",ltr:"Kiri ke kanan",accesskey:"Accesskey",tabindex:"Tabindex",rev:"Hubungan target dengan page",rel:"Hubungan page dengan target",mime:"Target MIME type",encoding:"Target character encoding",langcode:"Kode Bahasa","target_langcode":"Bahasa Target",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/is_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/is_dlg.js
deleted file mode 100644
index a89252ee0..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/is_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('is.advlink_dlg',{"target_name":"Target heiti",classes:"Klasi",style:"St\u00edll",id:"Id","popup_position":"Sta\u00f0setning (X/Y)",langdir:"\u00c1tt tungum\u00e1ls","popup_size":"St\u00e6r\u00f0","popup_dependent":"Dependent (Mozilla/Firefox only)","popup_resizable":"Leyfa breytingu st\u00e6r\u00f0ar \u00e1 glugga","popup_location":"Birta vefsl\u00f3\u00f0","popup_menubar":"Birta valmynd","popup_toolbar":"Show toolbars","popup_statusbar":"Birta st\u00f6\u00f0u sl\u00e1","popup_scrollbars":"Birta runusl\u00e1","popup_return":"B\u00e6ta vi\u00f0 \'return false\'","popup_name":"Heiti gluggans","popup_url":"Sl\u00f3\u00f0 sprettigluggans",popup:"Javascript sprettigluggi","target_blank":"Opna \u00ed n\u00fdjum glugga","target_top":"Opna \u00ed efsta ramma (kemur \u00ed sta\u00f0inn fyrir alla ramma)","target_parent":"Opna \u00ed yfir glugga / ramma","target_same":"Opna \u00ed \u00feessum glugga / ramma","anchor_names":"Anchors","popup_opts":"M\u00f6guleikar","advanced_props":"Frekari eiginleikar","event_props":"Vi\u00f0bur\u00f0ir","popup_props":"Eiginleikar sprettiglugga","general_props":"Almennir eiginleikar","advanced_tab":"N\u00e1nar","events_tab":"Vi\u00f0bur\u00f0ir","popup_tab":"Sprettigluggi","general_tab":"Almennt",list:"Listi hlekkja","is_external":"Sl\u00f3\u00f0in sem \u00fe\u00fa skr\u00e1\u00f0ir vir\u00f0ist vera sl\u00f3\u00f0 utan vefs, vilt \u00fe\u00fa b\u00e6ta vi\u00f0 forskeytinu http://?","is_email":"Sl\u00f3\u00f0in sem \u00fe\u00fa skr\u00e1\u00f0ir vir\u00f0ist vera netfang, vilt \u00fe\u00fa b\u00e6ta vi\u00f0 forskeytinu mailto:?",titlefield:"Titill",target:"Target",url:"Sl\u00f3\u00f0",title:"Setja inn/breyta hlekk","link_list":"Listi hlekkja",rtl:"H\u00e6gri til vinstri",ltr:"Vinstri til h\u00e6gri",accesskey:"Fl\u00fdtihnappur",tabindex:"Tabindex",rev:"Relationship target to page",rel:"Relationship page to target",mime:"Target MIME type",encoding:"Target character encoding",langcode:"K\u00f3\u00f0i tungum\u00e1ls","target_langcode":"\u00c6tla\u00f0 tungum\u00e1l",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/it_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/it_dlg.js
deleted file mode 100644
index bf19659d0..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/it_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('it.advlink_dlg',{"target_name":"Nome target",classes:"Classe",style:"Stile",id:"Id","popup_position":"Posizione (X/Y)",langdir:"Direzione del testo","popup_size":"Dimensioni","popup_dependent":"Dipendente (Solo in Mozilla/Firefox)","popup_resizable":"Rendi la finestra ridimensionabile","popup_location":"Mostra barra navigazione","popup_menubar":"Mostra barra menu","popup_toolbar":"Mostra barre strumenti","popup_statusbar":"Mostra barra di stato","popup_scrollbars":"Mostra barre di scorrimento","popup_return":"Inserisci \'return false\'","popup_name":"Nome finestra","popup_url":"URL Popup",popup:"Popup Javascript","target_blank":"Apri in una nuova finestra","target_top":"Apri nella cornice superiore (sostituisce tutte le cornici)","target_parent":"Apri nella finestra / cornice genitore","target_same":"Apri in questa finestra / cornice","anchor_names":"Ancore","popup_opts":"Opzioni","advanced_props":"Propriet\u00e0 avanzate","event_props":"Eventi","popup_props":"Propriet\u00e0 popup","general_props":"Propriet\u00e0 generali","advanced_tab":"Avanzate","events_tab":"Eventi","popup_tab":"Popup","general_tab":"Generale",list:"Lista collegamenti","is_external":"L\'URL inserito sembra essere un link esterno. Aggiungere il necessario prefisso http:// ?","is_email":"L\'URL inserito sembra essere un indirizzo email. Aggiungere il necessario prefisso mailto: ?",titlefield:"Titolo",target:"Target",url:"URL collegamento",title:"Inserisci/modifica link","link_list":"Lista collegamenti",rtl:"Destra verso sinistra",ltr:"Sinistra verso destra",accesskey:"Carattere di accesso",tabindex:"Indice tabulazione",rev:"Relazione da target a pagina",rel:"Relazione da pagina a target",mime:"Tipo MIME del target",encoding:"Codifica carattere del target",langcode:"Lingua","target_langcode":"Lingua del target",width:"Larghezza",height:"Altezza"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/ja_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/ja_dlg.js
deleted file mode 100644
index 68ebcd2e6..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/ja_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ja.advlink_dlg',{"target_name":"\u30bf\u30fc\u30b2\u30c3\u30c8\u306e\u540d\u524d",classes:"\u30af\u30e9\u30b9",style:"\u30b9\u30bf\u30a4\u30eb",id:"ID","popup_position":"\u4f4d\u7f6e (X/Y)",langdir:"\u6587\u7ae0\u306e\u65b9\u5411","popup_size":"\u5927\u304d\u3055","popup_dependent":"\u4f9d\u5b58(Mozilla\u3068Firefox\u3060\u3051)","popup_resizable":"\u30a6\u30a4\u30f3\u30c9\u30a6\u306e\u30b5\u30a4\u30ba\u5909\u66f4\u3092\u8a31\u53ef","popup_location":"\u30a2\u30c9\u30ec\u30b9\u30d0\u30fc\u3092\u8868\u793a","popup_menubar":"\u30e1\u30cb\u30e5\u30fc\u30d0\u30fc\u3092\u8868\u793a","popup_toolbar":"\u30c4\u30fc\u30eb\u30d0\u30fc\u3092\u8868\u793a","popup_statusbar":"\u30b9\u30c6\u30fc\u30bf\u30b9\u30d0\u30fc\u3092\u8868\u793a","popup_scrollbars":"\u30b9\u30af\u30ed\u30fc\u30eb\u30d0\u30fc\u3092\u8868\u793a","popup_return":"\'return false\'\u3092\u633f\u5165","popup_name":"\u30a6\u30a4\u30f3\u30c9\u30a6\u306e\u540d\u524d","popup_url":"\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u306eURL",popup:"Javascript\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7","target_blank":"\u65b0\u3057\u3044\u30a6\u30a4\u30f3\u30c9\u30a6\u3067\u958b\u304f","target_top":"\u30c8\u30c3\u30d7\u306e\u30d5\u30ec\u30fc\u30e0\u3067\u958b\u304f(\u3059\u3079\u3066\u306e\u30d5\u30ec\u30fc\u30e0\u3092\u7f6e\u304d\u63db\u3048)","target_parent":"\u89aa\u30a6\u30a4\u30f3\u30c9\u30a6/\u89aa\u30d5\u30ec\u30fc\u30e0\u3067\u958b\u304f","target_same":"\u3053\u306e\u30a6\u30a4\u30f3\u30c9\u30a6/\u30d5\u30ec\u30fc\u30e0\u3067\u958b\u304f","anchor_names":"\u30a2\u30f3\u30ab\u30fc","popup_opts":"\u30aa\u30d7\u30b7\u30e7\u30f3","advanced_props":"\u9ad8\u5ea6\u306a\u5c5e\u6027","event_props":"\u30a4\u30d9\u30f3\u30c8","popup_props":"\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7","general_props":"\u4e00\u822c","advanced_tab":"\u5c02\u9580\u7684","events_tab":"\u30a4\u30d9\u30f3\u30c8","popup_tab":"\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7","general_tab":"\u4e00\u822c",list:"\u30ea\u30f3\u30af\u306e\u4e00\u89a7","is_external":"\u5165\u529b\u3057\u305fURL\u306f\u5916\u90e8\u306e\u30ea\u30f3\u30af\u306e\u3088\u3046\u3067\u3059\u3002\u30ea\u30f3\u30af\u306b http:// \u3092\u8ffd\u52a0\u3057\u307e\u3059\u304b?","is_email":"\u5165\u529b\u3057\u305fURL\u306f\u96fb\u5b50\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306e\u3088\u3046\u3067\u3059\u3002\u30ea\u30f3\u30af\u306b mailto: \u3092\u8ffd\u52a0\u3057\u307e\u3059\u304b?",titlefield:"\u30bf\u30a4\u30c8\u30eb",target:"\u30bf\u30fc\u30b2\u30c3\u30c8",url:"\u30ea\u30f3\u30af\u306eURL",title:"\u30ea\u30f3\u30af\u306e\u633f\u5165/\u7de8\u96c6","link_list":"\u30ea\u30f3\u30af\u306e\u4e00\u89a7",rtl:"\u53f3\u304b\u3089\u5de6",ltr:"\u5de6\u304b\u3089\u53f3",accesskey:"\u30a2\u30af\u30bb\u30b9\u30ad\u30fc",tabindex:"\u30bf\u30d6\u30a4\u30f3\u30c7\u30c3\u30af\u30b9",rev:"\u30bf\u30fc\u30b2\u30c3\u30c8\u304b\u3089\u30da\u30fc\u30b8\u306e\u95a2\u4fc2",rel:"\u30da\u30fc\u30b8\u304b\u3089\u30bf\u30fc\u30b2\u30c3\u30c8\u306e\u95a2\u4fc2",mime:"\u30bf\u30fc\u30b2\u30c3\u30c8\u306eMIME\u30bf\u30a4\u30d7",encoding:"\u30bf\u30fc\u30b2\u30c3\u30c8\u306e\u6587\u5b57\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0",langcode:"\u8a00\u8a9e\u30b3\u30fc\u30c9","target_langcode":"\u30bf\u30fc\u30b2\u30c3\u30c8\u306e\u8a00\u8a9e",width:"\u5e45",height:"\u9ad8\u3055"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/ka_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/ka_dlg.js
deleted file mode 100644
index 5ea6a4da6..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/ka_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ka.advlink_dlg',{"target_name":"\u10db\u10d8\u10d6\u10dc\u10d8\u10e1 \u10e1\u10d0\u10ee\u10d4\u10da\u10d8",classes:"\u10d9\u10da\u10d0\u10e1\u10d4\u10d1\u10d8",style:"\u10e1\u10e2\u10d8\u10da\u10d8",id:"\u10e1\u10d0\u10ee\u10d4\u10da\u10d8","popup_position":"\u10de\u10dd\u10d6\u10d8\u10ea\u10d8\u10d0 (X/Y)",langdir:"\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1 \u10db\u10d8\u10db\u10d0\u10e0\u10d7\u10e3\u10da\u10d1\u10d0","popup_size":"\u10d6\u10dd\u10db\u10d0","popup_dependent":"\u10d3\u10d0\u10db\u10dd\u10d9\u10d8\u10d3\u10d4\u10d1\u10e3\u10da\u10d4\u10d1\u10d0 (\u10db\u10ee\u10dd\u10da\u10dd\u10d3 Firefox)","popup_resizable":"\u10d6\u10dd\u10db\u10d8\u10e1 \u10ea\u10d5\u10da\u10d8\u10da\u10d4\u10d1\u10d8\u10e1 \u10d3\u10d0\u10e8\u10d5\u10d4\u10d1\u10d0","popup_location":"\u10d2\u10d0\u10dc\u10da\u10d0\u10d2\u10d4\u10d1\u10d8\u10e1 \u10de\u10d0\u10dc\u10d4\u10da\u10d8\u10e1 \u10d2\u10d0\u10db\u10dd\u10e9\u10d4\u10dc\u10d0","popup_menubar":"\u10db\u10d4\u10dc\u10d8\u10e3\u10e1 \u10d2\u10d0\u10db\u10dd\u10e9\u10d4\u10dc\u10d0","popup_toolbar":"\u10d8\u10dc\u10e1\u10e2\u10e0\u10e3\u10db\u10d4\u10dc\u10e2\u10d4\u10d1\u10d8\u10e1 \u10de\u10d0\u10dc\u10d4\u10da\u10d8\u10e1 \u10d2\u10d0\u10db\u10dd\u10e9\u10d4\u10dc\u10d0","popup_statusbar":"\u10db\u10d3\u10d2\u10dd\u10db\u10d0\u10e0\u10d4\u10dd\u10d1\u10d8\u10e1 \u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10d2\u10d0\u10db\u10dd\u10e9\u10d4\u10dc\u10d0","popup_scrollbars":"\u10d2\u10d0\u10d3\u10d0\u10ee\u10d5\u10d4\u10d5\u10d8\u10e1 \u10d5\u10d4\u10da\u10d4\u10d1\u10d8\u10e1 \u10d2\u10d0\u10db\u10dd\u10e9\u10d4\u10dc\u10d0","popup_return":"\'return false\' \u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0","popup_name":"\u10e4\u10d0\u10dc\u10ef\u10e0\u10d8\u10e1 \u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8","popup_url":"\u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d8",popup:"\u10d2\u10d0\u10e8\u10da\u10d0 Java-\u10e1 \u10d2\u10d0\u10db\u10dd\u10e7\u10d4\u10dc\u10d4\u10d1\u10d8\u10d7","target_blank":"\u10d0\u10ee\u10d0\u10da \u10e4\u10d0\u10dc\u10ef\u10d0\u10e0\u10d0\u10e8\u10d8 \u10d2\u10d0\u10ee\u10e1\u10dc\u10d0","target_top":"\u10d6\u10d4\u10d3\u10d0 \u10d9\u10d0\u10d3\u10e0\u10e8\u10d8 \u10d2\u10d0\u10ee\u10e1\u10dc\u10d0","target_parent":"\u10e1\u10d0\u10d9\u10e3\u10d7\u10d0\u10e0\u10d0 \u10e4\u10d0\u10dc\u10ef\u10d0\u10e0\u10d0\u10e8\u10d8 \u10d2\u10d0\u10ee\u10e1\u10dc\u10d0","target_same":"\u10db\u10dd\u10ea\u10d4\u10db\u10e3\u10da \u10e4\u10d0\u10dc\u10ef\u10d0\u10e0\u10d0\u10e8\u10d8 \u10d2\u10d0\u10ee\u10e1\u10dc\u10d0","anchor_names":"\u10e6\u10e3\u10d6\u10d4\u10d1\u10d8","popup_opts":"\u10db\u10d0\u10ee\u10d0\u10e1\u10d8\u10d0\u10d7\u10d4\u10d1\u10da\u10d4\u10d1\u10d8","advanced_props":"\u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d8\u10d7\u10d8 \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8","event_props":"\u10db\u10dd\u10d5\u10da\u10d4\u10dc\u10d4\u10d1\u10d8\u10e1 \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8","popup_props":"\u10d2\u10d0\u10e8\u10da\u10d8\u10e1 \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8","general_props":"\u10e1\u10d0\u10d4\u10e0\u10d7\u10dd \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8","advanced_tab":"\u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d8\u10d7","events_tab":"\u10db\u10dd\u10d5\u10da\u10d4\u10dc\u10d0","popup_tab":"\u10d2\u10d0\u10e8\u10da\u10d0","general_tab":"\u10e1\u10d0\u10d4\u10e0\u10d7\u10dd",list:"\u10e1\u10d8\u10d0","is_external":"\u10e8\u10d4\u10e7\u10d5\u10d0\u10dc\u10d8\u10da\u10d8 \u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d8 \u10d2\u10d0\u10d5\u10e1 \u10d2\u10d0\u10e0\u10d4 \u10d1\u10db\u10e3\u10da\u10e1, \u10d3\u10d0\u10d5\u10d0\u10db\u10d0\u10d7\u10dd\u10e2 \u10de\u10e0\u10d4\u10e4\u10d8\u10e5\u10e1\u10d8 http://?","is_email":" \u10e8\u10d4\u10e7\u10d5\u10d0\u10dc\u10d8\u10da\u10d8 \u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d8 \u10d2\u10d0\u10d5\u10e1 \u10d4\u10da.\u10e4\u10dd\u10e1\u10e2\u10d8\u10e1 \u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10e1, \u10d3\u10d0\u10d5\u10d0\u10db\u10d0\u10e2\u10dd\u10d7 \u10de\u10e0\u10d4\u10e4\u10d8\u10e5\u10e1\u10d8 mailto:?",titlefield:"\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8",target:"\u10db\u10d8\u10d6\u10d0\u10dc\u10d8",url:"\u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d8",title:"\u10d1\u10db\u10e3\u10da\u10d8\u10e1 \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8","link_list":"\u10d1\u10db\u10e3\u10da\u10d4\u10d1\u10d8\u10e1 \u10e1\u10d8\u10d0",rtl:"\u10db\u10d0\u10e0\u10ef\u10d5\u10dc\u10d8\u10d3\u10d0\u10dc \u10db\u10d0\u10e0\u10ea\u10ee\u10dc\u10d8\u10d5",ltr:"\u10db\u10d0\u10e0\u10ea\u10ee\u10dc\u10d8\u10d3\u10d0\u10dc \u10db\u10d0\u10e0\u10ef\u10d5\u10dc\u10d8\u10d5",accesskey:"\u10e8\u10d4\u10e0\u10ec\u10d4\u10d5\u10d8\u10e1 \u10d2\u10d0\u10e1\u10d0\u10e6\u10d4\u10d1\u10d8",tabindex:"\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8",rev:"\u10db\u10d8\u10d6\u10dc\u10d8\u10e1 \u10d3\u10d0\u10db\u10dd\u10d9\u10d8\u10d3\u10d4\u10d1\u10e3\u10da\u10d4\u10d1\u10d0 \u10d2\u10d5\u10d4\u10e0\u10d3\u10d7\u10d0\u10dc",rel:"\u10d2\u10d5\u10d4\u10e0\u10d3\u10d8\u10e1 \u10d3\u10d0\u10db\u10dd\u10d9\u10d8\u10d3\u10d4\u10d1\u10e3\u10da\u10d4\u10d1\u10d0 \u10db\u10d8\u10d6\u10d0\u10dc\u10d7\u10d0\u10dc",mime:"MIME \u10db\u10d8\u10d6\u10dc\u10d8\u10e1 \u10e2\u10d8\u10de\u10d8",encoding:"\u10db\u10d8\u10d6\u10dc\u10d8\u10e1 \u10d9\u10dd\u10d3\u10d8\u10e0\u10d4\u10d1\u10d0",langcode:"\u10d4\u10dc\u10d8\u10e1 \u10d9\u10dd\u10d3\u10d8","target_langcode":"\u10db\u10d8\u10d6\u10dc\u10d8\u10e1 \u10d4\u10dc\u10d0",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/ko_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/ko_dlg.js
deleted file mode 100644
index 21aaa4e35..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/ko_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ko.advlink_dlg',{"target_name":"Target \uc774\ub984",classes:"\ud074\ub798\uc2a4",style:"\uc11c\uc2dd",id:"ID","popup_position":"\uc704\uce58(X/Y)",langdir:"\ubb38\uc790 \ubc29\ud5a5","popup_size":"\ud06c\uae30","popup_dependent":"\uc5f0\ub3d9 (Mozilla/Firefox\ub9cc)","popup_resizable":"\ucc3d \ud06c\uae30 \ubcc0\uacbd \uac00\ub2a5","popup_location":"\uc8fc\uc18c \ud45c\uc2dc\uc904 \ubcf4\uc784","popup_menubar":"\uba54\ub274 \ud45c\uc2dc\uc904 \ubcf4\uc784","popup_toolbar":"\ub3c4\uad6c \ubaa8\uc74c \ubcf4\uc784","popup_statusbar":"\uc0c1\ud0dc \ud45c\uc2dc\uc904 \ubcf4\uc784","popup_scrollbars":"\uc2a4\ud06c\ub864\ubc14 \ubcf4\uc784","popup_return":"\'return false\' \uc0bd\uc785","popup_name":"\ucc3d \uc774\ub984","popup_url":"\ud31d\uc5c5 URL",popup:"Javascript \ud31d\uc5c5","target_blank":"\uc0c8 \ucc3d\uc73c\ub85c \uc5f4\uae30","target_top":"\ucd5c\uc0c1\uc704 \ud504\ub808\uc784\uc5d0 \uc5f4\uae30 (\ubaa8\ub4e0 \ud504\ub808\uc784\uc774 \ubc14\ub01c)","target_parent":"\ubd80\ubaa8 \ucc3d/\ud504\ub808\uc784\uc5d0 \uc5f4\uae30","target_same":"\uc774 \ucc3d/\ud504\ub808\uc784\uc5d0 \uc5f4\uae30","anchor_names":"\uc575\ucee4","popup_opts":"\uc635\uc158","advanced_props":"\uc138\ubd80 \uc18d\uc131","event_props":"\uc774\ubca4\ud2b8","popup_props":"\ud31d\uc5c5 \uc18d\uc131","general_props":"\uc77c\ubc18 \uc18d\uc131","advanced_tab":"\uc138\ubd80 \uc0ac\ud56d","events_tab":"\uc774\ubca4\ud2b8","popup_tab":"\ud31d\uc5c5","general_tab":"\uc77c\ubc18",list:"\ub9c1\ud06c \ubaa9\ub85d","is_external":"\uc785\ub825\ud558\uc2e0 URL\uc740 \uc678\ubd80 \ub9c1\ud06c\ub85c \ud310\ub2e8\ub429\ub2c8\ub2e4. URL \uc55e\uc5d0 \ud544\uc218\uc801\uc778 http://\ub97c \ubd99\uc774\uc2dc\uaca0\uc2b5\ub2c8\uae4c?","is_email":"\uc785\ub825\ud558\uc2e0 URL\uc740 e\uba54\uc77c \uc8fc\uc18c\ub85c \ud310\ub2e8\ub429\ub2c8\ub2e4. URL \uc55e\uc5d0 \ud544\uc218\uc801\uc778 mailto:\ub97c \ubd99\uc774\uc2dc\uaca0\uc2b5\ub2c8\uae4c?",titlefield:"\uc81c\ubaa9",target:"Target",url:"\ub9c1\ud06c URL",title:"\ub9c1\ud06c \uc0bd\uc785/\ud3b8\uc9d1","link_list":"\ub9c1\ud06c \ubaa9\ub85d",rtl:"\uc624\ub978\ucabd\uc5d0\uc11c \uc67c\ucabd\uc73c\ub85c",ltr:"\uc67c\ucabd\uc5d0\uc11c \uc624\ub978\ucabd\uc73c\ub85c",accesskey:"\uc561\uc138\uc2a4 \ud0a4",tabindex:"\ud0ed \uc778\ub371\uc2a4",rev:"\ub9c1\ud06c\ub85c\ubd80\ud130\uc758 \uad00\uacc4",rel:"\ub9c1\ud06c\uc5d0 \uad00\uacc4",mime:"\ud0c0\uac9f MIME \uc720\ud615",encoding:"\ud0c0\uac9f \ubb38\uc790 \uc778\ucf54\ub529",langcode:"\uc5b8\uc5b4 \ucf54\ub4dc","target_langcode":"\ud0c0\uac9f \uc5b8\uc5b4",width:"\ud3ed",height:"\ub192\uc774"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/lt_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/lt_dlg.js
deleted file mode 100644
index 7a48ca4e4..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/lt_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('lt.advlink_dlg',{"target_name":"Paskirties vardas",classes:"Klas\u0117s",style:"Stilius",id:"Id","popup_position":"Pozicija (X/Y)",langdir:"Kalbos kryptis","popup_size":"Dydis","popup_dependent":"Proporcionaliai (tik Mozilla/Firefox)","popup_resizable":"Galima koreguoti lango i\u0161matavimus","popup_location":"Rodyti adres\u0173 juost\u0105","popup_menubar":"Rodyti meniu juost\u0105","popup_toolbar":"Rodyti \u012franki\u0173 juost\u0105","popup_statusbar":"Rodyti b\u016bsenos juost\u0105","popup_scrollbars":"Rodyti slankjuostes","popup_return":"\u012eterpti \u201ereturn false\u201c","popup_name":"Lango vardas","popup_url":"I\u0161kylan\u010dio lango URL adresas",popup:"Javascript i\u0161kylantis langas","target_blank":"Atverti naujame lange","target_top":"Atverti vir\u0161utiniame lange (pakei\u010dia visus langus)","target_parent":"Atverti t\u0117viniame lange","target_same":"Atverti tame pa\u010diame lange","anchor_names":"Prierai\u0161ai","popup_opts":"Nustatymai","advanced_props":"I\u0161pl\u0117stiniai nustatymai","event_props":"\u012evykiai","popup_props":"I\u0161kylan\u010dio lango nustatymai","general_props":"Bendri nustatymai","advanced_tab":"I\u0161pl\u0117sta","events_tab":"\u012evykiai","popup_tab":"I\u0161kylantis langas","general_tab":"Bendra",list:"Nuorod\u0173 s\u0105ra\u0161as","is_external":"URL adresas, kur\u012f \u012fved\u0117te yra i\u0161orin\u0117 nuoroda, ar norite prid\u0117ti reikaling\u0105 http:// prefiks\u0105?","is_email":"URL adresas, kur\u012f \u012fved\u0117te yra el. pa\u0161to adresas, ar norite prid\u0117ti reikaling\u0105 mailto: prefiks\u0105?",titlefield:"Pavadinimas",target:"Paskirtis",url:"Nuorodos URL adresas",title:"\u012eterpti/Redaguoti nuorod\u0105","link_list":"Nuorod\u0173 s\u0105ra\u0161as",rtl:"I\u0161 de\u0161in\u0117s \u012f kair\u0119",ltr:"I\u0161 kair\u0117s \u012f de\u0161in\u0119",accesskey:"Prieigos klavi\u0161as",tabindex:"Tabuliavimo indeksas",rev:"Ry\u0161ys paskirties su puslapiu",rel:"Ry\u0161ys puslapio su paskirtimi",mime:"Paskirties MIME tipas",encoding:"Kalbos koduot\u0117",langcode:"Kalbos kodas","target_langcode":"Paskirties kalba",width:"Plotis",height:"Auk\u0161tis"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/lv_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/lv_dlg.js
deleted file mode 100644
index 3df0d1dd7..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/lv_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('lv.advlink_dlg',{"target_name":"M\u0113r\u0137a nosaukums",classes:"Klases",style:"St\u012bls",id:"Id","popup_position":"Poz\u012bcija (X/Y)",langdir:"Valodas virziens","popup_size":"Izm\u0113rs","popup_dependent":"Atkar\u012bgs (tikai priek\u0161 Mozilla/Firefox)","popup_resizable":"Iedot iesp\u0113ju main\u012bt loga izmerus","popup_location":"Par\u0101d\u012bt adreses joslu","popup_menubar":"Par\u0101d\u012bt izvelnes joslu","popup_toolbar":"Par\u0101d\u012bt r\u012bkjoslu","popup_statusbar":"Par\u0101d\u012bt status bar","popup_scrollbars":"Par\u0101d\u012bt scrollbars","popup_return":"Ielikt \'return false\'","popup_name":"Loga nosaukums","popup_url":"Popup URL",popup:"Javascript popup","target_blank":"Atvert jaun\u0101j\u0101 log\u0101","target_top":"Atvert pa virsu \u0161im r\u0101m\u012bm (aizvieto visus r\u0101mjus)","target_parent":"Atvert \u0161aj\u0101 log\u0101 / r\u0101m\u012b","target_same":"Atvert \u0161aj\u0101 log\u0101 / r\u0101m\u012b","anchor_names":"Enkuri","popup_opts":"Opcijas","advanced_props":"Advanced \u012bpa\u0161\u012bbas","event_props":"Notikumi","popup_props":"Popup \u012bpa\u0161\u012bbas","general_props":"Kop\u012bgas \u012bpa\u0161\u012bbas","advanced_tab":"Advanced","events_tab":"Notikumi","popup_tab":"Popup","general_tab":"Kop\u012bgais",list:"Link list","is_external":"Ievad\u012btais URL \u0161\u0137iet ir \u0101r\u0113j\u0101 saite, vai J\u016bs v\u0113laties pirms t\u0101s pievienot http:// pried\u0113kli?","is_email":"Ievad\u012btais URL \u0161\u0137iet ir e-pasta adrese, vai J\u016bs v\u0113laties pirms t\u0101s pievienot mailto: pried\u0113kli?",titlefield:"Nosaukums",target:"M\u0113r\u0137is",url:"Saites URL",title:"Ievietot/Redi\u0123\u0113t saiti","link_list":"Sakaru saraksts",rtl:"No labas puses uz kreiso",ltr:"No kreisas puses uz labo",accesskey:"Pieejas poga",tabindex:"Tabindex",rev:"M\u0113r\u0137a attiec\u012bbas pret lapu",rel:"Lapas attiec\u012bbas pret m\u0113r\u0137i",mime:"M\u0113r\u0137a MIME tips",encoding:"M\u0113r\u0137a valodas koda tabula",langcode:"Valodas kods","target_langcode":"M\u0113r\u0137a valoda",width:"Platums",height:"Augstums"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/mk_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/mk_dlg.js
deleted file mode 100644
index 6c8f0b649..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/mk_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('mk.advlink_dlg',{"target_name":"\u0418\u043c\u0435 \u043d\u0430 \u0446\u0435\u043b\u0442\u0430",classes:"\u041a\u043b\u0430\u0441\u0430",style:"\u0421\u0442\u0438\u043b",id:"\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0458\u0430 (Id)","popup_position":"\u041f\u043e\u0437\u0438\u0446\u0438\u0458\u0430 (X/Y)",langdir:"\u0421\u043c\u0435\u0440 \u043d\u0430 \u0458\u0430\u0437\u0438\u043a\u043e\u0442","popup_size":"\u0413\u043e\u043b\u0435\u043c\u0438\u043d\u0430","popup_dependent":"\u0417\u0430\u0432\u0438\u0441\u0435\u043d (\u0441\u0430\u043c\u043e \u0437\u0430 Mozilla/Firefox)","popup_resizable":"\u041f\u0440\u043e\u0437\u043e\u0440 \u0441\u043e \u043f\u0440\u043e\u043c\u0435\u043d\u043b\u0438\u0432\u0430 \u0433\u043e\u043b\u0435\u043c\u0438\u043d\u0430","popup_location":"\u041f\u043e\u043a\u0430\u0436\u0438 \u043b\u0438\u043d\u0438\u0458\u0430 \u043d\u0430 \u043b\u043e\u043a\u0430\u0446\u0438\u0458\u0430","popup_menubar":"\u041f\u043e\u043a\u0430\u0436\u0438 \u043c\u0435\u043d\u0438","popup_toolbar":"\u041f\u043e\u043a\u0430\u0436\u0438 \u0430\u043b\u0430\u0442\u043a\u0438","popup_statusbar":"\u041f\u043e\u043a\u0430\u0436\u0438 \u0441\u0442\u0430\u0442\u0443\u0441\u043d\u0430 \u043b\u0438\u043d\u0438\u0458\u0430","popup_scrollbars":"\u041f\u0440\u0438\u043a\u0430\u0436\u0438 \u043b\u0438\u0437\u0433\u0430\u0447\u0438","popup_return":"\u0412\u043c\u0435\u0442\u043d\u0438 \'return false\'","popup_name":"\u0418\u043c\u0435 \u043d\u0430 \u043f\u0440\u043e\u0437\u043e\u0440\u043e\u0442","popup_url":"Popup URL",popup:"Javascript popup","target_blank":"\u041e\u0442\u0432\u043e\u0440\u0438 \u0432\u043e \u043d\u043e\u0432 \u043f\u0440\u043e\u0437\u043e\u0440","target_top":"\u041e\u0442\u0432\u043e\u0440\u0438 \u0432\u043e \u0433\u043e\u0440\u043d\u0430\u0442\u0430 \u0440\u0430\u043c\u043a\u0430(\u0433\u0438 \u0437\u0430\u043c\u0435\u043d\u0443\u0432\u0430 \u0441\u0438\u0442\u0435 \u0440\u0430\u043c\u043a\u0438)","target_parent":"\u041e\u0442\u0432\u043e\u0440\u0438 \u0432\u043e \u0438\u0437\u0432\u043e\u0440\u043d\u0438\u043e\u0442 \u043f\u0440\u043e\u0437\u043e\u0440/\u0440\u0430\u043c\u043a\u0430","target_same":"\u041e\u0442\u0432\u043e\u0440\u0438 \u0432\u043e \u043d\u043e\u0432 \u043f\u0440\u043e\u0437\u043e\u0440/\u0440\u0430\u043c\u043a\u0430","anchor_names":"\u0421\u0438\u0434\u0440\u0430","popup_opts":"\u041c\u043e\u0436\u043d\u043e\u0441\u0442\u0438","advanced_props":"\u041d\u0430\u043f\u0440\u0435\u0434\u043d\u0438 \u0441\u0432\u043e\u0458\u0441\u0442\u0432\u0430","event_props":"\u041d\u0430\u0441\u0442\u0430\u043d\u0438","popup_props":"\u0421\u0432\u043e\u0458\u0441\u0442\u0432\u0430 \u043d\u0430 popup \u043f\u0440\u043e\u0437\u043e\u0440\u043e\u0442","general_props":"\u041e\u0441\u043d\u043e\u0432\u043d\u0438 \u0441\u0432\u043e\u0458\u0441\u0442\u0432\u0430","advanced_tab":"\u041d\u0430\u043f\u0440\u0435\u0434\u043d\u043e","events_tab":"\u041d\u0430\u0441\u0442\u0430\u043d\u0438","popup_tab":"Popup","general_tab":"\u041e\u0441\u043d\u043e\u0432\u043d\u043e",list:"\u041b\u0438\u0441\u0442\u0430 \u043d\u0430 \u043b\u0438\u043d\u043a\u043e\u0432\u0438","is_external":"\u0423\u0420\u041b \u0430\u0434\u0440\u0435\u0441\u0442\u0430 \u0448\u0442\u043e \u0458\u0430 \u0432\u043d\u0435\u0441\u043e\u0432\u0442\u0435 \u0438\u0437\u0433\u043b\u0435\u0434\u0430 \u043a\u0430\u043a\u043e \u043d\u0430\u0434\u0432\u043e\u0440\u0435\u0448\u0435\u043d \u043b\u0438\u043d\u043a. \u0414\u0430\u043b\u0438 \u0441\u0430\u043a\u0430\u0442\u0435 \u0434\u0430 \u0433\u043e \u0434\u043e\u0434\u0430\u0434\u0435\u0442\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u0438\u043e\u0442 \u201ehttp://:\u201c \u043f\u0440\u0435\u0444\u0438\u043a\u0441 ?","is_email":"\u0423\u0420\u041b \u0430\u0434\u0440\u0435\u0441\u0442\u0430 \u0448\u0442\u043e \u0458\u0430 \u0432\u043d\u0435\u0441\u043e\u0432\u0442\u0435 \u0438\u0437\u0433\u043b\u0435\u0434\u0430 \u043a\u0430\u043a\u043e \u0435-\u043f\u043e\u0448\u0442\u0430. \u0414\u0430\u043b\u0438 \u0441\u0430\u043a\u0430\u0442\u0435 \u0434\u0430 \u0433\u043e \u0434\u043e\u0434\u0430\u0434\u0435\u0442\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u0438\u043e\u0442 \u201emailto:\u201c \u043f\u0440\u0435\u0444\u0438\u043a\u0441 ?",titlefield:"\u041d\u0430\u0441\u043b\u043e\u0432",target:"\u0426\u0435\u043b",url:"\u0423\u0420\u041b \u043b\u0438\u043d\u043a",title:"\u0412\u043c\u0435\u0442\u043d\u0438/\u0443\u0440\u0435\u0434\u0438 \u043b\u0438\u043d\u043a","link_list":"\u041b\u0438\u0441\u0442\u0430 \u043d\u0430 \u043b\u0438\u043d\u043a\u043e\u0432\u0438",rtl:"\u041e\u0434 \u0434\u0435\u0441\u043d\u043e \u043d\u0430 \u043b\u0435\u0432\u043e",ltr:"\u041e\u0434 \u043b\u0435\u0432\u043e \u043d\u0430 \u0434\u0435\u0441\u043d\u043e",accesskey:"\u041a\u043b\u0443\u0447 \u0437\u0430 \u043f\u0440\u0438\u0441\u0442\u0430\u043f",tabindex:"Tabindex",rev:"\u041e\u0434\u043d\u043e\u0441 \u043d\u0430 \u0446\u0435\u043b\u0442\u0430 \u0441\u043f\u0440\u0435\u043c\u0430 \u0441\u0442\u0440\u0430\u043d\u0430\u0442\u0430",rel:"\u041e\u0434\u043d\u043e\u0441 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0430\u0442\u0430 \u0441\u043f\u0440\u0435\u043c\u0430 \u0446\u0435\u043b\u0442\u0430",mime:"MIME \u0442\u0438\u043f",encoding:"\u041a\u043e\u0434\u0438\u0440\u0430\u045a\u0435 \u043d\u0430 \u0437\u043d\u0430\u0446\u0438\u0442\u0435",langcode:"\u041a\u043e\u0434 \u043d\u0430 \u0458\u0430\u0437\u0438\u043a\u043e\u0442","target_langcode":"\u0408\u0430\u0437\u0438\u043a",width:"\u0428\u0438\u0440\u0438\u043d\u0430",height:"\u0412\u0438\u0441\u0438\u043d\u0430"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/ms_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/ms_dlg.js
deleted file mode 100644
index 80c0621c9..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/ms_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ms.advlink_dlg',{"target_name":"Nama sasaran",classes:"Kelas-kelas",style:"Gaya",id:"Id","popup_position":"Posisi (X/Y)",langdir:"Arah bahasa","popup_size":"Saiz","popup_dependent":"Tanggungan (Hanya Mozilla/Firefox)","popup_resizable":"Jadikan tetingkap boleh diubahsuai","popup_location":"Tunjuk bar lokasi","popup_menubar":"Tunjuk bar menu","popup_toolbar":"Tunjuk bar alatan","popup_statusbar":"Tunjuk bar status","popup_scrollbars":"Tunjuk bar gulung","popup_return":"Masukkan \'return false\'","popup_name":"Nama tetingkap","popup_url":"Popup URL",popup:"Popup Javascript ","target_blank":"Buka dalam tetingkap baru.","target_top":"Buka bingkaian atas (gantikan kesemua bingkai)","target_parent":"Buka dalam tetingkap yang lain","target_same":"Buka tetingkap ini","anchor_names":"Sauh","popup_opts":"Pilihan","advanced_props":"Alatan lanjutan","event_props":"Peristiwa","popup_props":"Alatan Popup","general_props":"Alatan am","advanced_tab":"Lanjutan","events_tab":"Peristiwa","popup_tab":"Popup","general_tab":"Am",list:"Senarai pautan","is_external":"URL yang dimasukkan adalah pautan luar, tambah \"http://\" di awalan?","is_email":"URL yang dimasukkan adalah alamat emel, tambah \"mailto\": di awalan?",titlefield:"Tajuk",target:"Sasaran",url:"Pautan URL",title:"Sisip/sunting pautan","link_list":"Senarai pautan",rtl:"Kanan ke kiri",ltr:"Kiri ke kanan",accesskey:"Kunci akses",tabindex:"Tanda indeks",rev:"Kaitan sasaran kepada halaman",rel:"Kaitan halaman kepada sasaran",mime:"Sasaran jenis MIME",encoding:"Sasaran enkod perkataan",langcode:"Kod bahasa","target_langcode":"Bahasa sasaran",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/nb_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/nb_dlg.js
deleted file mode 100644
index ea316c334..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/nb_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nb.advlink_dlg',{"target_name":"M\u00e5lnavn",classes:"Klasser",style:"Stil",id:"Id","popup_position":"Posisjon (X/Y)",langdir:"Skriftretning","popup_size":"St\u00f8rrelse","popup_dependent":"Avhengig vindu (bare i Mozilla/Firefox)","popup_resizable":"Gj\u00f8r vinduet skalerbart","popup_location":"Vis plasseringslinje","popup_menubar":"Vis menylinje","popup_toolbar":"Vis verkt\u00f8ylinjer","popup_statusbar":"Vis statuslinje","popup_scrollbars":"Vis rullefelt","popup_return":"Sett inn \'return false\'","popup_name":"Vindunavn","popup_url":"Popup URL",popup:"Javascript-popup","target_blank":"\u00c5pne i nytt vindu","target_top":"\u00c5pne i toppvindu (erstatter alle rammer)","target_parent":"\u00c5pne i overordnet vindu/ramme","target_same":"\u00c5pne i samme vindu/ramme","anchor_names":"Anker","popup_opts":"Innstillinger","advanced_props":"Generelle egenskaper","event_props":"Hendelser","popup_props":"Popup-egenskaper","general_props":"Generelle egenskaper","advanced_tab":"Avansert","events_tab":"Hendelser","popup_tab":"Popup","general_tab":"Generelt",list:"Lenkeliste","is_external":"URL\'en du oppga synes \u00e5 v\u00e6re en ekstern lenke, \u00f8nsker du \u00e5 legge til den n\u00f8dvendige http:// prefix?","is_email":"URL\'en du oppga synes \u00e5 v\u00e6re en email adresse, \u00f8nsker du \u00e5 legge til den n\u00f8dvendige mailto: prefix?",titlefield:"Tittel",target:"M\u00e5l",url:"Lenkens URL",title:"Sett inn / rediger lenke","link_list":"Lenkeliste",rtl:"H\u00f8yre mot venstre",ltr:"Venstre mot h\u00f8yre",accesskey:"Hurtigtast",tabindex:"Tabulatorindeks",rev:"M\u00e5lets forhold til siden",rel:"Sidens forhold til m\u00e5let",mime:"M\u00e5lets MIME-type",encoding:"Tegnkonvertering",langcode:"Spr\u00e5kkode","target_langcode":"M\u00e5lspr\u00e5k",width:"Bredde",height:"H\u00f8yde"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/nl_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/nl_dlg.js
deleted file mode 100644
index b2924758b..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/nl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nl.advlink_dlg',{"target_name":"Doel",classes:"Klasses",style:"Stijl",id:"Id","popup_position":"Positie (X/Y)",langdir:"Taalrichting","popup_size":"Grootte","popup_dependent":"Afhankelijk (Alleen Mozilla/Firefox)","popup_resizable":"Aanpasbaar venster","popup_location":"Lokatiebalk weergeven","popup_menubar":"Menubalk weergeven","popup_toolbar":"Werkbalk weergeven","popup_statusbar":"Statusbalk weergeven","popup_scrollbars":"Scrollbalken weergeven","popup_return":"\'return false\' invoegen","popup_name":"Vensternaam","popup_url":"Popup URL",popup:"Javascript popup","target_blank":"In nieuw venster openen","target_top":"In bovenste frame openen (vervangt gehele pagina)","target_parent":"In bovenliggend venster / frame openen","target_same":"In dit venster / frame openen","anchor_names":"Ankers","popup_opts":"Opties","advanced_props":"Geavanceerde eigenschappen","event_props":"Gebeurtenissen","popup_props":"Popup eigenschappen","general_props":"Algemene eigenschappen","advanced_tab":"Geavanceerd","events_tab":"Gebeurtenissen","popup_tab":"Popup","general_tab":"Algemeen",list:"Lijst","is_external":"De ingevoerde URL lijkt op een externe link. Wilt u de vereiste http:// tekst voorvoegen?","is_email":"De ingevoerde URL lijkt op een e-mailadres. Wilt u de vereiste mailto: tekst voorvoegen?",titlefield:"Titel",target:"Doel",url:"URL",title:"Link invoegen/bewerken","link_list":"Lijst",rtl:"Van rechts naar links",ltr:"Van links naar rechts",accesskey:"Toegangstoets",tabindex:"Tabvolgorde",rev:"Relatie van doel tot pagina",rel:"Relatie van pagina tot doel",mime:"MIME type",encoding:"Taalcodering",langcode:"Taalcode","target_langcode":"Taal",width:"Breedte",height:"Hoogte"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/nn_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/nn_dlg.js
deleted file mode 100644
index 8644b0bc0..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/nn_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nn.advlink_dlg',{"target_name":"M\u00e5lnamn",classes:"Klasser",style:"Stil",id:"Id","popup_position":"Posisjon (X/Y)",langdir:"Skriftretning","popup_size":"Storleik","popup_dependent":"Avhengig vindu (berre i Mozilla/Firefox)","popup_resizable":"Gjer vindauget skalerbart","popup_location":"Vis plasseringsline","popup_menubar":"Vis menyline","popup_toolbar":"Vis verktyliner","popup_statusbar":"Vis statusline","popup_scrollbars":"Vis rullefelt","popup_return":"Set inn \\\'return false\\\'","popup_name":"Namn p\u00e5 vindauge","popup_url":"Popup URL",popup:"Javascript-popup","target_blank":"Opne i nytt vindauge","target_top":"Opne i toppvindauge (erstattar alle rammer)","target_parent":"Opne i overordna vindauge/ramme","target_same":"Opne i same vindauge/ramme","anchor_names":"Anker","popup_opts":"Innstillingar","advanced_props":"Generelle eigenskapar","event_props":"Hendingar","popup_props":"Popup-eigenskapar","general_props":"Generelt","advanced_tab":"Avansert","events_tab":"Hendingar","popup_tab":"Popup","general_tab":"Generelt",list:"Lenkjeliste","is_external":"URL-en du skreiv inn ser ut til \u00e5 vere ei eksern lenkje. \u00d8nskjer du \u00e5 leggje til det obligatoriske http://-prefikset?","is_email":"URL-en du skreiv inn ser ut til \u00e5 vere ei e-postadresse. \u00d8nskjer du \u00e5 leggje til det obligatoriske mailto:-prefikset?",titlefield:"Tittel",target:"M\u00e5l",url:"Lenkje-URL",title:"Set inn / rediger lenkje","link_list":"Lenkjeliste",rtl:"H\u00f8gre mot venstre",ltr:"Venstre mot h\u00f8gre",accesskey:"Hurtigtast",tabindex:"Tabulatorindeks",rev:"M\u00e5let sitt forhold til sida",rel:"Sida sitt forhold til m\u00e5let",mime:"M\u00e5let sin MIME-type",encoding:"Teiknkonvertering",langcode:"Spr\u00e5kkode","target_langcode":"M\u00e5lspr\u00e5k",width:"Breidde",height:"H\u00f8gde"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/pl_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/pl_dlg.js
deleted file mode 100644
index d529d7ad1..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/pl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('pl.advlink_dlg',{"target_name":"Nazwa celu",classes:"Klasy",style:"Styl",id:"Id","popup_position":"Pozycja (X/Y)",langdir:"Kierunek czytania tekstu","popup_size":"Rozmiar","popup_dependent":"Zale\u017cny (Mozilla/Firefox wy\u0142\u0105cznie)","popup_resizable":"Stw\u00f3rz okno z mo\u017cliwo\u015bci\u0105 zmiany rozmiaru","popup_location":"Poka\u017c pasek adresu","popup_menubar":"Poka\u017c pasek menu","popup_toolbar":"Poka\u017c narz\u0119dzia","popup_statusbar":"Poka\u017c pasek statusu","popup_scrollbars":"Poka\u017c paski przewijania","popup_return":"Wstaw \'return false\'","popup_name":"Nazwa okna","popup_url":"URL okna",popup:"Wyskakuj\u0105ce okno","target_blank":"Otw\u00f3rz w nowym oknie","target_top":"Otw\u00f3rz w g\u00f3rnej ramce (zamie\u0144 wszystkie ramki)","target_parent":"Otw\u00f3rz w nadrz\u0119dnym oknie / ramce","target_same":"Otw\u00f3rz w tym oknie / ramce","anchor_names":"Kotwice","popup_opts":"Opcje","advanced_props":"Zaawansowae w\u0142a\u015bciwo\u015bci","event_props":"Zdarzenia","popup_props":"W\u0142a\u015bciwo\u015bci okna","general_props":"W\u0142a\u015bciwo\u015bci og\u00f3lne","advanced_tab":"Zaawansowane","events_tab":"Zdarzenia","popup_tab":"Popup","general_tab":"Og\u00f3lne",list:"Lista link\u00f3w","is_external":"Podany adres wydaje si\u0119 by\u0107 zewn\u0119trznym linkiem, czy chcesz doda\u0107 wymagany prefiks http://?","is_email":"Podany adres wydaje si\u0119 by\u0107 adresem emailowym, czy chcesz doda\u0107 wymagany prefiks mailto:?",titlefield:"Tytu\u0142",target:"Cel",url:"URL linka",title:"Wstaw/edytuj link","link_list":"Lista odno\u015bnik\u00f3w",rtl:"Kierunek z prawej do lewej",ltr:"Kierunek z lewej do prawej",accesskey:"Klawisz skr\u00f3tu",tabindex:"Numer tab",rev:"Relacje celu do strony",rel:"Relacje strony do celu",mime:"Docelowy typ MIME",encoding:"Kodowanie znak\u00f3w celu",langcode:"Kod j\u0119zyka","target_langcode":"Docelowy kod j\u0119zyka",width:"Szeroko\u015b\u0107",height:"Wysoko\u015b\u0107"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/ps_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/ps_dlg.js
deleted file mode 100644
index b0f91e22c..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/ps_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ps.advlink_dlg',{"target_name":"Target name",classes:"Classes",style:"Style",id:"Id","popup_position":"Position (X/Y)",langdir:"Language direction","popup_size":"Size","popup_dependent":"Dependent (Mozilla/Firefox only)","popup_resizable":"Make window resizable","popup_location":"Show location bar","popup_menubar":"Show menu bar","popup_toolbar":"Show toolbars","popup_statusbar":"Show status bar","popup_scrollbars":"Show scrollbars","popup_return":"Insert \'return false\'","popup_name":"Window name","popup_url":"Popup URL",popup:"Javascript popup","target_blank":"Open in new window","target_top":"Open in top frame (replaces all frames)","target_parent":"Open in parent window / frame","target_same":"Open in this window / frame","anchor_names":"Anchors","popup_opts":"Options","advanced_props":"Advanced properties","event_props":"Events","popup_props":"Popup properties","general_props":"General properties","advanced_tab":"Advanced","events_tab":"Events","popup_tab":"Popup","general_tab":"General",list:"Link list","is_external":"The URL you entered seems to external link, do you want to add the required http:// prefix?","is_email":"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?",titlefield:"Title",target:"Target",url:"Link URL",title:"Insert/edit link","link_list":"Link list",rtl:"Right to left",ltr:"Left to right",accesskey:"Accesskey",tabindex:"Tabindex",rev:"Relationship target to page",rel:"Relationship page to target",mime:"Target MIME type",encoding:"Target character encoding",langcode:"Language code","target_langcode":"Target language",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/pt_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/pt_dlg.js
deleted file mode 100644
index 816785544..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/pt_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('pt.advlink_dlg',{"target_name":"Nome do alvo",classes:"Classes",style:"Estilo",id:"Id","popup_position":"Posi\u00e7\u00e3o (X/Y)",langdir:"Dire\u00e7\u00e3o do texto","popup_size":"Tamanho","popup_dependent":"Dependente (Mozilla/Firefox apenas)","popup_resizable":"Permitir altera\u00e7\u00e3o do tamanho da janela","popup_location":"Mostrar a barra de endere\u00e7os","popup_menubar":"Mostrar a barra de menu","popup_toolbar":"Mostrar a barra de ferramentas","popup_statusbar":"Mostrar a barra de status","popup_scrollbars":"Mostrar as barras de scroll","popup_return":"Inserir \"return false\"","popup_name":"Nome da janela","popup_url":"URL do popup",popup:"Popup javascript","target_blank":"Abrir numa nova janela","target_top":"Abrir na p\u00e1gina inteira (substitui todos os quadros)","target_parent":"Abrir na janela/quadro pai","target_same":"Abrir nesta janela/quadro","anchor_names":"\u00c2ncoras","popup_opts":"Op\u00e7\u00f5es","advanced_props":"Propriedades avan\u00e7adas","event_props":"Eventos","popup_props":"Propriedades de popup","general_props":"Propriedades gerais","advanced_tab":"Avan\u00e7ado","events_tab":"Eventos","popup_tab":"Popup","general_tab":"Geral",list:"Lista de hyperlinks","is_external":"A URL digitada parece conduzir a um link externo. Deseja acrescentar o prefixo necess\u00e1rio http://?","is_email":"A URL digitada parece ser um endere\u00e7o de e-mail. Deseja acrescentar o prefixo necess\u00e1rio mailto:?",titlefield:"T\u00edtulo",target:"Alvo",url:"URL do hyperlink",title:"Inserir/editar hyperlink","link_list":"Lista de hyperlinks",rtl:"Da direita para a esquerda",ltr:"Da esquerda para a direita",accesskey:"Chave de acesso",tabindex:"Tabindex",rev:"Rela\u00e7\u00e3o alvo/p\u00e1gina",rel:"Rela\u00e7\u00e3o p\u00e1gina/alvo",mime:"Tipo MIME alvo",encoding:"Codifica\u00e7\u00e3o de caracteres",langcode:"C\u00f3digo do idioma","target_langcode":"Idioma alvo",width:"Largura",height:"Altura"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/ro_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/ro_dlg.js
deleted file mode 100644
index dc12a9821..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/ro_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ro.advlink_dlg',{"target_name":"Nume \u021bint\u0103",classes:"Clase",style:"Stil",id:"Id","popup_position":"Pozi\u021bie (X/Y)",langdir:"Direc\u021bie limb\u0103","popup_size":"M\u0103rime","popup_dependent":"Dependent (Mozilla/Firefox)?","popup_resizable":"Fereastr\u0103 redimensionabil\u0103?","popup_location":"Arat\u0103 bara de adrese","popup_menubar":"Arat\u0103 meniul","popup_toolbar":"Arat\u0103 toolbar-uri","popup_statusbar":"Arat\u0103 bara de stare","popup_scrollbars":"Arat\u0103 barele de derulare","popup_return":"Insereaz\u0103 \'return false\'","popup_name":"Nume fereastr\u0103","popup_url":"URL Popup",popup:"Javascript Popup","target_blank":"Deschide \u00een fereastr\u0103 nou\u0103","target_top":"Deschide \u00een cadrul cel mai mare (\u00eenlocuie\u0219te celelalte cadre)","target_parent":"Deschide leg\u0103tura \u00een fereastra/cadrul p\u0103rinte","target_same":"Deschide leg\u0103tura \u00een fereastra/cadrul de fa\u021b\u0103","anchor_names":"Ancore","popup_opts":"Op\u021biuni","advanced_props":"Propriet\u0103\u021bi avansate","event_props":"Evenimente","popup_props":"Propriet\u0103\u021bi popup","general_props":"Propriet\u0103\u021bi generale","advanced_tab":"Avansat","events_tab":"Evenimente","popup_tab":"Popup","general_tab":"General",list:"List\u0103 de leg\u0103turi","is_external":"URL-ul pe care l-ai introdus pare a fi o leg\u0103tur\u0103 extern\u0103. Vrei s\u0103 adaug \u0219i prefixul http:// necesar?","is_email":"URL-ul pe care l-ai introdus pare a fi o adres\u0103 de e-mail. Vrei s\u0103 adaug \u0219i prefixul mailto: necesar?",titlefield:"Titlu",target:"\u021aint\u0103",url:"URL leg\u0103tur\u0103",title:"Insereaz\u0103/editeaz\u0103 link","link_list":"List\u0103 leg\u0103turi",rtl:"Dreapta la st\u00e2nga",ltr:"St\u00e2nga la dreapta",accesskey:"Cheie de acces",tabindex:"Tabindex",rev:"Rela\u0163ia \u0163intei cu pagina",rel:"Rela\u021bia paginii cu \u021binta",mime:"MIME type \u021bint\u0103",encoding:"Set de caractere \u021bint\u0103",langcode:"Cod limb\u0103","target_langcode":"Limb\u0103",width:"L\u0103\u021bime",height:"\u00cen\u0103l\u021bime"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/ru_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/ru_dlg.js
deleted file mode 100644
index faa628578..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/ru_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ru.advlink_dlg',{"target_name":"\u0418\u043c\u044f \u0446\u0435\u043b\u0438",classes:"\u041a\u043b\u0430\u0441\u0441\u044b",style:"\u0421\u0442\u0438\u043b\u044c",id:"\u0418\u043c\u044f","popup_position":"\u041f\u043e\u0437\u0438\u0446\u0438\u044f (X/Y)",langdir:"\u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430","popup_size":"\u0420\u0430\u0437\u043c\u0435\u0440","popup_dependent":"\u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c (\u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f Firefox)","popup_resizable":"\u0420\u0430\u0437\u0440\u0435\u0448\u0430\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440","popup_location":"\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043f\u0430\u043d\u0435\u043b\u044c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f","popup_menubar":"\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043c\u0435\u043d\u044e","popup_toolbar":"\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043f\u0430\u043d\u0435\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432","popup_statusbar":"\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f","popup_scrollbars":"\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043f\u043e\u043b\u043e\u0441\u044b \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0438","popup_return":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \'return false\'","popup_name":"\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043e\u043a\u043d\u0430","popup_url":"\u0410\u0434\u0440\u0435\u0441",popup:"\u0420\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Java","target_blank":"\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0432 \u043d\u043e\u0432\u043e\u043c \u043e\u043a\u043d\u0435","target_top":"\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u043a\u0430\u0434\u0440\u0435 (\u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u0441\u0435 \u043a\u0430\u0434\u0440\u044b)","target_parent":"\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0432 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c \u043e\u043a\u043d\u0435/\u043a\u0430\u0434\u0440\u0435","target_same":"\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0432 \u044d\u0442\u043e\u043c \u043e\u043a\u043d\u0435/\u043a\u0430\u0434\u0440\u0435","anchor_names":"\u042f\u043a\u043e\u0440\u044f","popup_opts":"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430","advanced_props":"\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b","event_props":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u043e\u0431\u044b\u0442\u0438\u0439","popup_props":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f","general_props":"\u041e\u0431\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b","advanced_tab":"\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e","events_tab":"\u0421\u043e\u0431\u044b\u0442\u0438\u044f","popup_tab":"\u0420\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435","general_tab":"\u041e\u0431\u0449\u0435\u0435",list:"\u0421\u043f\u0438\u0441\u043e\u043a","is_external":"\u0412\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u0432\u043d\u0435\u0448\u043d\u044e\u044e \u0441\u0441\u044b\u043b\u043a\u0443, \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0435\u0444\u0438\u043a\u0441 http://?","is_email":"\u0412\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0443\u044e \u043f\u043e\u0447\u0442\u0443, \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0435\u0444\u0438\u043a\u0441 mailto:?",titlefield:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",target:"\u0426\u0435\u043b\u044c",url:"\u0410\u0434\u0440\u0435\u0441",title:"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u0441\u044b\u043b\u043a\u0438","link_list":"\u0421\u043f\u0438\u0441\u043e\u043a \u0441\u0441\u044b\u043b\u043e\u043a",rtl:"\u0421\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0435\u0432\u043e",ltr:"\u0421\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e",accesskey:"\u041a\u043b\u044e\u0447 \u0434\u043e\u0441\u0442\u0443\u043f\u0430",tabindex:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",rev:"\u041e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0446\u0435\u043b\u0438 \u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435",rel:"\u041e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043a \u0446\u0435\u043b\u0438",mime:"MIME \u0442\u0438\u043f \u0446\u0435\u043b\u0438",encoding:"\u041a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430 \u0446\u0435\u043b\u0438",langcode:"\u041a\u043e\u0434 \u044f\u0437\u044b\u043a\u0430","target_langcode":"\u042f\u0437\u044b\u043a \u0446\u0435\u043b\u0438",width:"\u0428\u0438\u0440\u0438\u043d\u0430",height:"\u0412\u044b\u0441\u043e\u0442\u0430"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/si_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/si_dlg.js
deleted file mode 100644
index c3cc3ba21..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/si_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('si.advlink_dlg',{"target_name":"Target name",classes:"Classes",style:"Style",id:"Id","popup_position":"Position (X/Y)",langdir:"Language direction","popup_size":"Size","popup_dependent":"Dependent (Mozilla/Firefox only)","popup_resizable":"Make window resizable","popup_location":"Show location bar","popup_menubar":"Show menu bar","popup_toolbar":"Show toolbars","popup_statusbar":"Show status bar","popup_scrollbars":"Show scrollbars","popup_return":"Insert \'return false\'","popup_name":"Window name","popup_url":"Popup URL",popup:"Javascript popup","target_blank":"Open in new window","target_top":"Open in top frame (replaces all frames)","target_parent":"Open in parent window / frame","target_same":"Open in this window / frame","anchor_names":"Anchors","popup_opts":"Options","advanced_props":"Advanced properties","event_props":"Events","popup_props":"Popup properties","general_props":"General properties","advanced_tab":"Advanced","events_tab":"Events","popup_tab":"Popup","general_tab":"General",list:"Link list","is_external":"The URL you entered seems to external link, do you want to add the required http:// prefix?","is_email":"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?",titlefield:"Title",target:"Target",url:"Link URL",title:"Insert/edit link","link_list":"Link list",rtl:"Right to left",ltr:"Left to right",accesskey:"Accesskey",tabindex:"Tabindex",rev:"Relationship target to page",rel:"Relationship page to target",mime:"Target MIME type",encoding:"Target character encoding",langcode:"Language code","target_langcode":"Target language",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/sk_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/sk_dlg.js
deleted file mode 100644
index 288ece53b..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/sk_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sk.advlink_dlg',{"target_name":"N\u00e1zov cie\u013ea",classes:"Triedy",style:"\u0160t\u00fdl",id:"ID","popup_position":"Umiestnenie (X/Y)",langdir:"Smer textu","popup_size":"Ve\u013ekos\u0165","popup_dependent":"Z\u00e1vislos\u0165 (iba Mozilla Firefox)","popup_resizable":"Umo\u017eni\u0165 zmenu ve\u013ekosti","popup_location":"Zobrazi\u0165 li\u0161tu umiestnen\u00ed","popup_menubar":"Zobrazi\u0165 ponuku","popup_toolbar":"Zobrazi\u0165 panel n\u00e1strojov","popup_statusbar":"Zobrazi\u0165 stavov\u00fd riadok","popup_scrollbars":"Zobrazi\u0165 posuvn\u00edky","popup_return":"Vlo\u017ei\u0165 \'return false\'","popup_name":"N\u00e1zov okna","popup_url":"URL vyskakovacieho okna",popup:"JavaScriptov\u00e9 okno","target_blank":"Otvori\u0165 v novom okne","target_top":"Otvori\u0165 v hlavnom okne/r\u00e1me (nahradi\u0165 v\u0161etky r\u00e1my)","target_parent":"Otvori\u0165 v nadradenom okne/r\u00e1me","target_same":"Otvori\u0165 v rovnakom okne/r\u00e1me","anchor_names":"Z\u00e1lo\u017eka","popup_opts":"Mo\u017enosti","advanced_props":"Roz\u0161\u00edren\u00e9 parametre","event_props":"Udalosti","popup_props":"Vlastnosti vyskakovacieho okna","general_props":"Obecn\u00e9 parametre","advanced_tab":"Roz\u0161\u00edren\u00e9","events_tab":"Udalosti","popup_tab":"Vyskakovacie okno","general_tab":"Obecn\u00e9",list:"Zoznam odkazov","is_external":"Zadan\u00e1 URL vyzer\u00e1 ako extern\u00fd odkaz, chcete doplni\u0165 povinn\u00fd prefix http://?","is_email":"Zadan\u00e1 URL vyzer\u00e1 ako e-mailov\u00e1 adresa, chcete doplni\u0165 povinn\u00fd prefix mailto:?",titlefield:"Titulok",target:"Cie\u013e",url:"URL odkazu",title:"Vlo\u017ei\u0165/upravi\u0165 odkaz","link_list":"Zoznam odkazov",rtl:"Sprava do\u013eava",ltr:"Z\u013eava doprava",accesskey:"Kl\u00e1vesov\u00e1 skratka",tabindex:"Poradie pre tabul\u00e1tor",rev:"Vz\u0165ah cie\u013ea k str\u00e1nke",rel:"Vz\u0165ah str\u00e1nky k cie\u013eu",mime:"MIME typ",encoding:"K\u00f3dovanie",langcode:"K\u00f3d jazyka","target_langcode":"Jazyk cie\u013ea",width:"\u0160\u00edrka",height:"V\u00fd\u0161ka"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/sl_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/sl_dlg.js
deleted file mode 100644
index 34a398b7e..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/sl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sl.advlink_dlg',{"target_name":"Ime cilja",classes:"Razredi",style:"Slog",id:"Id","popup_position":"Polo\u017eaj (X/Y)",langdir:"Smer pisave","popup_size":"Velikost","popup_dependent":"Odvisno (le za Mozillo/Firefox)","popup_resizable":"Omogo\u010di pvoe\u010devanje okna","popup_location":"Prika\u017ei vrstico naslova","popup_menubar":"Prika\u017ei meni","popup_toolbar":"Prika\u017ei orodjarno","popup_statusbar":"Prika\u017ei vrstico stanja","popup_scrollbars":"Prika\u017ei drsnike","popup_return":"Vstavi \'return false\'","popup_name":"Ime okna","popup_url":"Naslov URL okna",popup:"Dodatno okno z javascriptom","target_blank":"Odpri v novem oknu","target_top":"Odpri v vrhnjem okviru (nadomesti vse okvire)","target_parent":"Odpri v nadrejenem oknu / okviru","target_same":"Odpri v tem oknu / okviru","anchor_names":"Sidra","popup_opts":"Mo\u017enosti","advanced_props":"Napredne lastnosti","event_props":"Dogodki","popup_props":"Lastnosti okna","general_props":"Splo\u0161ne lastnosti","advanced_tab":"Napredno","events_tab":"Dogodki","popup_tab":"Dodatno okno","general_tab":"Splo\u0161no",list:"Seznam povezav","is_external":"Vneseni naslov verjetno predstavlja zunanjo povezavo, \u017eelite da dodam zahtevano predpono","is_email":"Vneseni naslov verjetno prestavlja e-naslov, \u017eelite da dodam zahtevano predpono \\\'mailto:\\\'?",titlefield:"Naslov",target:"Cilj",url:"Naslov URL",title:"Vstavi/uredi povezavo","link_list":"Seznam povezav",rtl:"Od desne proti levi",ltr:"Od leve proti desni",accesskey:"Tipka dostopa",tabindex:"Zap. \u0161t.",rev:"Razmerje cilja do strani",rel:"Razmerje strani do cilja",mime:"Tip MIME cilja",encoding:"Kodiranje znakov cilja",langcode:"Koda jezika","target_langcode":"Jezik cilja",width:"\u0160irina",height:"Vi\u0161ina"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/sq_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/sq_dlg.js
deleted file mode 100644
index 67e428683..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/sq_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sq.advlink_dlg',{"target_name":"Emri",classes:"Klasat",style:"Stili",id:"Id","popup_position":"Pozicioni (X/Y)",langdir:"Drejtimi i gjuh\u00ebs","popup_size":"Madh\u00ebsia","popup_dependent":"I varur (vet\u00ebm Mozilla/Firefox)","popup_resizable":"B\u00ebje dritaren t\u00eb zmadhueshme","popup_location":"Shfaq shiritin e adres\u00ebs","popup_menubar":"Shfaq menun\u00eb","popup_toolbar":"Shfaq butonat","popup_statusbar":"Shfaq shiritin e statusit","popup_scrollbars":"Shfaq ashensor\u00ebt","popup_return":"Fut \'return false\'","popup_name":"Emri i dritares","popup_url":"URL e popup",popup:"Popup me Javascript","target_blank":"Hape n\u00eb dritare t\u00eb re","target_top":"Hape n\u00eb frame-in e m\u00ebsip\u00ebrm","target_parent":"Hape n\u00eb dritaren m\u00ebm\u00eb / frame","target_same":"Hape n\u00eb k\u00ebt\u00eb dritare / frame","anchor_names":"Lidhjet","popup_opts":"Opsionet","advanced_props":"Tipare t\u00eb avancuara","event_props":"Ngjarjet","popup_props":"Tiparet e popup","general_props":"Tipare t\u00eb p\u00ebrgjithshme","advanced_tab":"T\u00eb Avancuara","events_tab":"Ngjarjet","popup_tab":"Popup","general_tab":"T\u00eb P\u00ebrgjithshme",list:"Lista e lidhjeve","is_external":"Adresa q\u00eb keni futur duket si lidhje e jashtme. D\u00ebshironi t\u00eb shtoni prefiksin http://?","is_email":"Adresa q\u00eb keni futur duket si email. D\u00ebshironi t\u00eb shtoni prefiksin mailto:?",titlefield:"Titulli",target:"Sh\u00ebnjestra",url:"URL e lidhjes",title:"Fut/edito lidhje","link_list":"Lista e lidhjeve",rtl:"Djathtas-Majtas",ltr:"Majtas-Djathtas",accesskey:"Butoni i aksesit",tabindex:"Indeksi i Tab",rev:"Marr\u00ebdh\u00ebnia sh\u00ebnjest\u00ebr-faqe",rel:"Marr\u00ebdh\u00ebnia faqe-sh\u00ebnjest\u00ebr",mime:"Tipi MIME i sh\u00ebnjestr\u00ebs",encoding:"Kodimi i karaktereve t\u00eb sh\u00ebnjestr\u00ebs",langcode:"Kodi i gjuh\u00ebs","target_langcode":"Gjuha e sh\u00ebnjestr\u00ebs",width:"Gjer\u00ebsia",height:"Gjat\u00ebsia"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/sr_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/sr_dlg.js
deleted file mode 100644
index 6e4bef205..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/sr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sr.advlink_dlg',{"target_name":"Naziv mete",classes:"Klase",style:"Stil",id:"Id","popup_position":"Pozicija (X/Y)",langdir:"Smer jezika","popup_size":"Veli\u010dina","popup_dependent":"Zavistan (samo za Mozilla/Firefox)","popup_resizable":"Prozor promenljive veli\u010dine","popup_location":"Prika\u017ei traku lokacije","popup_menubar":"Prika\u017ei traku menija","popup_toolbar":"Prika\u017ei trake sa alatkama","popup_statusbar":"Prika\u017ei statusnu traku","popup_scrollbars":"Prika\u017ei kliza\u010de","popup_return":"Umetni \'return false\'","popup_name":"Naziv prozora","popup_url":"Popup URL",popup:"Javascript popup","target_blank":"Otvori u novom prozoru","target_top":"Otvori u okviru na vrhu (zamenjuje sve okvire)","target_parent":"Otvori u izvornom prozoru/okviru","target_same":"Otovori u ovom prozoru/okviru","anchor_names":"Sidra","popup_opts":"Opcije","advanced_props":"Napredne osobine","event_props":"Doga\u0111aji","popup_props":"Osobine popup-a","general_props":"Osnovne osobine","advanced_tab":"Napredno","events_tab":"Doga\u0111aji","popup_tab":"Popup","general_tab":"Osnovno",list:"Lista linkova","is_external":"URL koji ste uneli izgleda kao spolja\u0161nji link, da li \u017eelite da dodate neophodni http:// prefiks?","is_email":"URL koji ste uneli izgleda kao e-mail adresa, da li \u017eelite da dodate neophodni mailto: prefiks?",titlefield:"Naslov",target:"Meta",url:"URL linka",title:"Umetni/Uredi link","link_list":"Lista linkova",rtl:"Zdesna nalevo",ltr:"Sleva nadesno",accesskey:"Taster za pristup",tabindex:"Tabindex",rev:"Odnos mete prema stranici",rel:"Odnos stranice prema meti",mime:"Odabrani MIME tip",encoding:"Odabrano kodiranje znakova",langcode:"Kod jezika","target_langcode":"Odabrani jezik",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/sv_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/sv_dlg.js
deleted file mode 100644
index 8a6194472..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/sv_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sv.advlink_dlg',{"target_name":"M\u00e5lnamn",classes:"Klasser",style:"Stil",id:"Id","popup_position":"Position (x/y)",langdir:"Skriftriktning","popup_size":"Storlek","popup_dependent":"Beroende av (Mozilla/Firefox enbart)","popup_resizable":"Skalbart f\u00f6nster","popup_location":"Adressraden","popup_menubar":"Menyrad","popup_toolbar":"Verktygsf\u00e4lt","popup_statusbar":"Statusf\u00e4lt","popup_scrollbars":"Rullningslister","popup_return":"Infoga \'return false\'","popup_name":"F\u00f6nsternamn","popup_url":"Popup URL",popup:"Javascript popup","target_blank":"\u00d6ppna i nytt f\u00f6nster","target_top":"\u00d6ppna i toppramen (ers\u00e4tter alla ramar)","target_parent":"\u00d6ppna i \u00f6verliggande f\u00f6nster/ram","target_same":"\u00d6ppna i detta f\u00f6nster/ram","anchor_names":"Bokm\u00e4rken","popup_opts":"Inst\u00e4llningar","advanced_props":"Avancerade inst\u00e4llningar","event_props":"H\u00e4ndelser","popup_props":"Popup-inst\u00e4llningar","general_props":"Generella inst\u00e4llningar","advanced_tab":"Avancerat","events_tab":"H\u00e4ndelser","popup_tab":"Popup","general_tab":"Generellt",list:"L\u00e4nklista","is_external":"L\u00e4nken du angav verkar vara en extern adress. Vill du infoga http:// prefixet p\u00e5 l\u00e4nken?","is_email":"L\u00e4nken du angav verkar vara en e-post adress. Vill du infoga mailto: prefixet p\u00e5 l\u00e4nken?",titlefield:"Titel",target:"M\u00e5l",url:"L\u00e4nkens URL",title:"Infoga/redigera l\u00e4nk","link_list":"L\u00e4nklista",rtl:"H\u00f6ger till v\u00e4nster",ltr:"V\u00e4nster till h\u00f6ger",accesskey:"Snabbtangent",tabindex:"Tabbindex",rev:"Omv\u00e4nd relation (rev)",rel:"Relation (rel attribut)",mime:"MIME type",encoding:"Teckenformattering",langcode:"Spr\u00e5kkod","target_langcode":"M\u00e5lspr\u00e5k",width:"Bredd",height:"H\u00f6jd"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/ta_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/ta_dlg.js
deleted file mode 100644
index 4cf49c312..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/ta_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ta.advlink_dlg',{"target_name":"Target name",classes:"Classes",style:"Style",id:"Id","popup_position":"Position (X/Y)",langdir:"Language direction","popup_size":"Size","popup_dependent":"Dependent (Mozilla/Firefox only)","popup_resizable":"Make window resizable","popup_location":"Show location bar","popup_menubar":"Show menu bar","popup_toolbar":"Show toolbars","popup_statusbar":"Show status bar","popup_scrollbars":"Show scrollbars","popup_return":"Insert \'return false\'","popup_name":"Window name","popup_url":"Popup URL",popup:"Javascript popup","target_blank":"Open in new window","target_top":"Open in top frame (replaces all frames)","target_parent":"Open in parent window / frame","target_same":"Open in this window / frame","anchor_names":"Anchors","popup_opts":"Options","advanced_props":"Advanced properties","event_props":"Events","popup_props":"Popup properties","general_props":"General properties","advanced_tab":"Advanced","events_tab":"Events","popup_tab":"Popup","general_tab":"General",list:"Link list","is_external":"The URL you entered seems to external link, do you want to add the required http:// prefix?","is_email":"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?",titlefield:"Title",target:"Target",url:"Link URL",title:"Insert/edit link","link_list":"Link list",rtl:"Right to left",ltr:"Left to right",accesskey:"Accesskey",tabindex:"Tabindex",rev:"Relationship target to page",rel:"Relationship page to target",mime:"Target MIME type",encoding:"Target character encoding",langcode:"Language code","target_langcode":"Target language",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/th_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/th_dlg.js
deleted file mode 100644
index ab37a3c6f..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/th_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('th.advlink_dlg',{"target_name":"\u0e0a\u0e37\u0e48\u0e2d\u0e40\u0e1b\u0e49\u0e32\u0e2b\u0e21\u0e32\u0e22",classes:"\u0e04\u0e25\u0e32\u0e2a",style:"\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a",id:"Id","popup_position":"\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07 (X/Y)",langdir:"\u0e17\u0e34\u0e28\u0e17\u0e32\u0e07\u0e01\u0e32\u0e23\u0e2d\u0e48\u0e32\u0e19","popup_size":"\u0e02\u0e19\u0e32\u0e14","popup_dependent":"Dependent (Mozilla/Firefox only)","popup_resizable":"\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e02\u0e19\u0e32\u0e14\u0e02\u0e2d\u0e07\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e48\u0e32\u0e07\u0e44\u0e14\u0e49","popup_location":"\u0e41\u0e2a\u0e14\u0e07\u0e0a\u0e48\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48","popup_menubar":"\u0e41\u0e2a\u0e14\u0e07\u0e41\u0e16\u0e1a\u0e40\u0e21\u0e19\u0e39","popup_toolbar":"\u0e41\u0e2a\u0e14\u0e07\u0e17\u0e39\u0e25\u0e1a\u0e32\u0e23\u0e4c","popup_statusbar":"\u0e41\u0e2a\u0e14\u0e07\u0e41\u0e16\u0e1a\u0e2a\u0e16\u0e32\u0e19\u0e30","popup_scrollbars":"\u0e41\u0e2a\u0e14\u0e07\u0e2a\u0e01\u0e23\u0e2d\u0e25\u0e1a\u0e32\u0e23\u0e4c","popup_return":"\u0e40\u0e1e\u0e34\u0e48\u0e21 \'return false\'","popup_name":"\u0e0a\u0e37\u0e48\u0e2d\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e48\u0e32\u0e07","popup_url":"\u0e1b\u0e4a\u0e2d\u0e1b-\u0e2d\u0e31\u0e1e URL",popup:"\u0e08\u0e32\u0e27\u0e32 \u0e1b\u0e4a\u0e2d\u0e1b-\u0e2d\u0e31\u0e1e","target_blank":"\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e48\u0e32\u0e07\u0e43\u0e2b\u0e21\u0e48","target_top":"\u0e40\u0e1b\u0e34\u0e14\u0e17\u0e35\u0e48\u0e40\u0e1f\u0e23\u0e21\u0e1a\u0e19 (\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e17\u0e38\u0e01\u0e40\u0e1f\u0e23\u0e21)","target_parent":"\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e48\u0e32\u0e07\u0e40\u0e14\u0e34\u0e21 / \u0e40\u0e1f\u0e23\u0e21","target_same":"\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e48\u0e32\u0e07\u0e43\u0e2b\u0e21\u0e48 / \u0e40\u0e1f\u0e23\u0e21","anchor_names":"\u0e0a\u0e37\u0e48\u0e2d\u0e25\u0e34\u0e49\u0e07\u0e04\u0e4c","popup_opts":"\u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01","advanced_props":"\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e02\u0e31\u0e49\u0e19\u0e2a\u0e39\u0e07","event_props":"\u0e01\u0e34\u0e08\u0e01\u0e23\u0e23\u0e21","popup_props":"\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e1b\u0e4a\u0e2d\u0e1b-\u0e2d\u0e31\u0e1e","general_props":"\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e17\u0e31\u0e48\u0e27\u0e44\u0e1b","advanced_tab":"\u0e02\u0e31\u0e49\u0e19\u0e2a\u0e39\u0e07","events_tab":"\u0e01\u0e34\u0e08\u0e01\u0e23\u0e23\u0e21","popup_tab":"\u0e1b\u0e4a\u0e2d\u0e1b-\u0e2d\u0e31\u0e1e","general_tab":"\u0e17\u0e31\u0e48\u0e27\u0e44\u0e1b",list:"\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e25\u0e34\u0e49\u0e07\u0e04\u0e4c","is_external":"URL \u0e17\u0e35\u0e48\u0e04\u0e38\u0e13\u0e1b\u0e49\u0e2d\u0e19\u0e14\u0e39\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e27\u0e48\u0e32\u0e20\u0e32\u0e22\u0e19\u0e2d\u0e01\u0e25\u0e34\u0e07\u0e04\u0e04\u0e38\u0e13\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e40\u0e1e\u0e34\u0e48\u0e21 http:// \u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48 ?","is_email":"URL \u0e17\u0e35\u0e48\u0e04\u0e38\u0e13\u0e1b\u0e49\u0e2d\u0e19\u0e14\u0e39\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e27\u0e48\u0e32\u0e08\u0e30\u0e21\u0e35\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e2d\u0e22\u0e39\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e40\u0e1e\u0e34\u0e48\u0e21 mailto: \u0e19\u0e33\u0e2b\u0e19\u0e49\u0e32\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48 ",titlefield:"\u0e0a\u0e37\u0e48\u0e2d",target:"\u0e40\u0e1b\u0e49\u0e32\u0e2b\u0e21\u0e32\u0e22",url:"\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48 \u0e25\u0e34\u0e49\u0e07\u0e04\u0e4c",title:"\u0e40\u0e1e\u0e34\u0e48\u0e21/\u0e41\u0e01\u0e49\u0e44\u0e02 \u0e25\u0e34\u0e49\u0e07\u0e04\u0e4c","link_list":"\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e25\u0e34\u0e49\u0e07\u0e04\u0e4c",rtl:"\u0e02\u0e27\u0e32\u0e44\u0e1b\u0e0b\u0e49\u0e32\u0e22",ltr:"\u0e0b\u0e49\u0e32\u0e22\u0e44\u0e1b\u0e02\u0e27\u0e32",accesskey:"Accesskey",tabindex:"Tabindex",rev:"Relationship target to page",rel:"Relationship page to target",mime:"\u0e40\u0e1b\u0e49\u0e32\u0e2b\u0e21\u0e32\u0e22 MIME type",encoding:"\u0e40\u0e1b\u0e49\u0e32\u0e2b\u0e21\u0e32\u0e22\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23",langcode:"\u0e42\u0e04\u0e49\u0e14\u0e20\u0e32\u0e29\u0e32","target_langcode":"\u0e40\u0e1b\u0e49\u0e32\u0e2b\u0e21\u0e32\u0e22 \u0e20\u0e32\u0e29\u0e32",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/tr_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/tr_dlg.js
deleted file mode 100644
index 447cc3a0d..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/tr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('tr.advlink_dlg',{"target_name":"Hedef ad\u0131",classes:"S\u0131n\u0131fla",style:"Stil",id:"Id","popup_position":"Konum (X/Y)",langdir:"Dil y\u00f6n\u00fc","popup_size":"Boyut","popup_dependent":"Ba\u011f\u0131ml\u0131 (Sadece Mozilla Firefox)","popup_resizable":"Pencereyi boyutland\u0131r\u0131labilir yap","popup_location":"Aderes \u00e7ubu\u011funu g\u00f6ster","popup_menubar":"Men\u00fc \u00e7ubu\u011funu g\u00f6ster","popup_toolbar":"Ara\u00e7 kutusunu g\u00f6ster","popup_statusbar":"Durum \u00e7ubu\u011funu g\u00f6ster","popup_scrollbars":"Kayd\u0131rma \u00e7ubuklar\u0131n\u0131 g\u00f6ster","popup_return":"Ekle \'return false\'","popup_name":"Pencere ad\u0131","popup_url":"A\u00e7\u0131l\u0131r pencere URL\'si",popup:"Javascript a\u00e7\u0131l\u0131r pencere","target_blank":"Yeni pencerede a\u00e7","target_top":"\u00dcst \u00e7er\u00e7evede a\u00e7 (t\u00fcm \u00e7er\u00e7eveleri de\u011fi\u015ftir) ","target_parent":"Ana pencerede / \u00e7er\u00e7evede a\u00e7","target_same":"Pencerede / \u00e7er\u00e7evede a\u00e7","anchor_names":"Nesne tutucular","popup_opts":"Se\u00e7enekler","advanced_props":"Geli\u015fmi\u015f \u00f6zellikler","event_props":"Olaylar","popup_props":"A\u00e7\u0131l\u0131r pencere \u00f6zellikleri","general_props":"Genel \u00f6zellikler","advanced_tab":"Geli\u015fmi\u015f","events_tab":"Olaylar","popup_tab":"A\u00e7\u0131l\u0131r pencere","general_tab":"Genel",list:"Ba\u011flant\u0131 listesi","is_external":"Girdi\u011fiz URL d\u0131\u015f ba\u011flant\u0131 gibi g\u00f6r\u00fcn\u00fcyor; gerekli olan http:// \u00f6nekinin eklenmesini ister misiniz?","is_email":"Girdi\u011finiz URL e-posta adresi gibi g\u00f6r\u00fcn\u00fcyor; gerekli olan mailto: \u00f6nekinin eklenmesini ister misiniz? prefix?",titlefield:"Ba\u015fl\u0131k",target:"Hedef",url:"Ba\u011flant\u0131 URL\'si",title:"Ba\u011flant\u0131 ekle/d\u00fczenle","link_list":"Ba\u011flant\u0131 listesi",rtl:"Soldan sa\u011fa",ltr:"Sa\u011fdan sola",accesskey:"Eri\u015fim tu\u015fu",tabindex:"Sekme indeksi",rev:"Sayfadan hedefe ili\u015fki",rel:"Hedeften sayfaya ili\u015fki",mime:"Hedef MIME tipi",encoding:"Hedef karakter kodlama",langcode:"Dil kodu","target_langcode":"Hedef dil",width:"Geni\u015flik",height:"Y\u00fckseklik"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/uk_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/uk_dlg.js
deleted file mode 100644
index 91d935ea8..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/uk_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('uk.advlink_dlg',{"target_name":"\u041d\u0430\u0437\u0432\u0430 \u0446\u0456\u043b\u0456",classes:"\u041a\u043b\u0430\u0441\u0438",style:"\u0421\u0442\u0438\u043b\u044c",id:"\u0406\u0434\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0442\u043e\u0440","popup_position":"\u041f\u043e\u0437\u0438\u0446\u0456\u044f (X/Y)",langdir:"\u041d\u0430\u043f\u0440\u044f\u043c \u043c\u043e\u0432\u0438","popup_size":"\u0420\u043e\u0437\u043c\u0456\u0440","popup_dependent":"\u0417\u0430\u043b\u0435\u0436\u043d\u0438\u0439 (\u043b\u0438\u0448\u0435 \u0434\u043b\u044f Mozilla/Firefox)","popup_resizable":"\u0414\u043e\u0437\u0432\u043e\u043b\u044f\u0442\u0438 \u0437\u043c\u0456\u043d\u044e\u0432\u0430\u0442\u0438 \u0440\u043e\u0437\u043c\u0456\u0440","popup_location":"\u041f\u043e\u043a\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u043f\u0430\u043d\u0435\u043b\u044c location","popup_menubar":"\u041f\u043e\u043a\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u043c\u0435\u043d\u044e","popup_toolbar":"\u041f\u043e\u043a\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u043f\u0430\u043d\u0435\u043b\u0456 \u0456\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0456\u0432","popup_statusbar":"\u041f\u043e\u043a\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u0441\u0442\u0430\u0442\u0443\u0441","popup_scrollbars":"\u041f\u043e\u043a\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u0441\u043a\u0440\u043e\u043b\u0435\u0440\u0438","popup_return":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \'return false\'","popup_name":"\u041d\u0430\u0437\u0432\u0430 \u0432\u0456\u043a\u043d\u0430","popup_url":"\u041f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u043d\u0430 \u0432\u0438\u0440\u0438\u043d\u0430\u044e\u0447\u0435 \u0432\u0456\u043a\u043d\u043e",popup:"\u0412\u0438\u0440\u0438\u043d\u0430\u044e\u0447\u0435 \u0432\u0456\u043a\u043d\u043e Javascript","target_blank":"\u0412\u0456\u0434\u043a\u0440\u0438\u0442\u0438 \u0432 \u043d\u043e\u0432\u043e\u043c\u0443 \u0432\u0456\u043a\u043d\u0456","target_top":"\u0412\u0456\u0434\u043a\u0440\u0438\u0442\u0438 \u0443 \u0432\u0435\u0440\u0445\u043d\u044c\u043e\u043c\u0443 \u0444\u0440\u0435\u0439\u043c\u0456 (\u0437\u0430\u043c\u0456\u043d\u0438\u0442\u0438 \u0432\u0441\u0456 \u0444\u0440\u0435\u0439\u043c\u0438)","target_parent":"\u0412\u0456\u0434\u043a\u0440\u0438\u0442\u0438 \u0432 \u0431\u0430\u0442\u044c\u043a\u0456\u0432\u0441\u044c\u043a\u043e\u043c\u0443 \u0432\u0456\u043a\u043d\u0456 / \u0444\u0440\u0435\u0439\u043c\u0456","target_same":"\u0412\u0456\u0434\u043a\u0440\u0438\u0442\u0438 \u0432 \u0446\u044c\u043e\u043c\u0443 \u0436 \u0432\u0456\u043a\u043d\u0456 / \u0444\u0440\u0435\u0439\u043c\u0456","anchor_names":"\u042f\u043a\u043e\u0440\u0456","popup_opts":"\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456","advanced_props":"\u0420\u043e\u0437\u0448\u0438\u0440\u0435\u043d\u0456 \u0432\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456","event_props":"\u041f\u043e\u0434\u0456\u0457","popup_props":"\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u0432\u0438\u0440\u0438\u043d\u0430\u044e\u0447\u043e\u0433\u043e \u0432\u0456\u043a\u043d\u0430","general_props":"\u0417\u0430\u0433\u0430\u043b\u044c\u043d\u0456 \u0432\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456","advanced_tab":"\u0414\u043e\u0434\u0430\u0442\u043a\u043e\u0432\u043e","events_tab":"\u041f\u043e\u0434\u0456\u0457","popup_tab":"\u0412\u0438\u0440\u0438\u043d\u0430\u044e\u0447\u0435 \u0432\u0456\u043a\u043d\u043e","general_tab":"\u0417\u0430\u0433\u0430\u043b\u044c\u043d\u0435",list:"\u0421\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u044c","is_external":"\u0412\u0432\u0435\u0434\u0435\u043d\u0435 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u0441\u0445\u043e\u0436\u0435 \u043d\u0430 \u0437\u043e\u0432\u043d\u0456\u0448\u043d\u0454 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f, \u0432\u0438 \u0431\u0430\u0436\u0430\u0454\u0442\u0435 \u0434\u043e\u0434\u0430\u0442\u0438 \u043f\u043e\u0442\u0440\u0456\u0431\u043d\u0438\u0439 \u043f\u0440\u0435\u0444\u0456\u043a\u0441 http://?","is_email":"\u0412\u0432\u0435\u0434\u0435\u043d\u0435 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u0441\u0445\u043e\u0436\u0435 \u043d\u0430 \u0430\u0434\u0440\u0435\u0441\u0443 \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0457 \u043f\u043e\u0448\u0442\u0438, \u0432\u0438 \u0431\u0430\u0436\u0430\u0454\u0442\u0435 \u0434\u043e\u0434\u0430\u0442\u0438 \u043f\u043e\u0442\u0440\u0456\u0431\u043d\u0438\u0439 \u043f\u0440\u0435\u0444\u0456\u043a\u0441 mailto:?",titlefield:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",target:"\u0412\u0456\u0434\u043a\u0440\u0438\u0442\u0438 \u0432...",url:"\u0410\u0434\u0440\u0435\u0441\u0430",title:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438/\u0437\u043c\u0456\u043d\u0438\u0442\u0438 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f","link_list":"\u0421\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u044c",rtl:"\u0421\u043f\u0440\u0430\u0432\u0430 \u043b\u0456\u0432\u043e\u0440\u0443\u0447",ltr:"\u0417\u043b\u0456\u0432\u0430 \u043f\u0440\u0430\u0432\u043e\u0440\u0443\u0447",accesskey:"\u041a\u043b\u0430\u0432\u0456\u0448\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0443",tabindex:"\u0422\u0430\u0431\u0456\u043d\u0434\u0435\u043a\u0441",rev:"\u0417\u0432\'\u044f\u0437\u043e\u043a \u043c\u0456\u0436 \u0446\u0456\u043b\u043b\u044e \u0442\u0430 \u0441\u0442\u043e\u0440\u0456\u043d\u043a\u043e\u044e",rel:"\u0417\u0432\'\u044f\u0437\u043e\u043a \u043c\u0456\u0436 \u0441\u0442\u043e\u0440\u0456\u043d\u043a\u043e\u044e \u0442\u0430 \u0446\u0456\u043b\u043b\u044e",mime:"MIME \u0442\u0438\u043f \u0446\u0456\u043b\u0456",encoding:"\u041a\u043e\u0434\u0443\u0432\u0430\u043d\u043d\u044f \u0446\u0456\u043b\u0456",langcode:"\u041a\u043e\u0434 \u043c\u043e\u0432\u0438","target_langcode":"\u041c\u043e\u0432\u0430 \u0446\u0456\u043b\u0456",width:"\u0428\u0438\u0440\u0438\u043d\u0430",height:"\u0412\u0438\u0441\u043e\u0442\u0430"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/vi_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/vi_dlg.js
deleted file mode 100644
index 01400dee8..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/vi_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('vi.advlink_dlg',{"target_name":"T\u00ean \u0111\u00edch",classes:"L\u1edbp",style:"Ki\u1ec3u d\u00e1ng",id:"Id","popup_position":"V\u1ecb tr\u00ed (X/Y)",langdir:"H\u01b0\u1edbng ng\u00f4n ng\u1eef","popup_size":"K\u00edch th\u01b0\u1edbc","popup_dependent":"Ph\u1ee5 thu\u1ed9c (ch\u1ec9 Mozilla/Firefox)","popup_resizable":"L\u00e0m cho c\u1eeda s\u1ed5 c\u00f3 th\u1ec3 thay \u0111\u1ed5i k\u00edch c\u1ee1","popup_location":"Hi\u1ec7n th\u1ecb thanh v\u1ecb tr\u00ed","popup_menubar":"Hi\u1ec3n th\u1ecb thanh th\u1ef1c \u0111\u01a1n","popup_toolbar":"Hi\u1ec7n th\u1ecb thanh c\u00f4ng c\u1ee5","popup_statusbar":"Hi\u1ec7n th\u1ecb thanh tr\u1ea1ng th\u00e1i","popup_scrollbars":"Hi\u1ec3n th\u1ecb thanh cu\u1ed9n","popup_return":"Ch\u00e8n \'return false\'","popup_name":"T\u00ean c\u1eeda s\u1ed5","popup_url":"URL b\u1eadt l\u00ean",popup:"Javascript b\u1eadt l\u00ean","target_blank":"M\u1edf trong c\u1eeda s\u1ed5 m\u1edbi","target_top":"M\u1edf trong khung tr\u00ean c\u00f9ng (thay th\u1ebf t\u1ea5t c\u00e1c khung)","target_parent":"M\u1edf trong c\u1eeda s\u1ed5/khung cha","target_same":"M\u1edf trong c\u1eeda s\u1ed5/khung n\u00e0y","anchor_names":"M\u1ecf neo","popup_opts":"T\u00f9y ch\u1ecdn","advanced_props":"Thu\u1ed9c t\u00ednh n\u00e2ng cao","event_props":"S\u1ef1 ki\u1ec7n","popup_props":"Thu\u1ed9c t\u00ednh b\u1eadt l\u00ean","general_props":"Thu\u1ed9c t\u00ednh chung","advanced_tab":"N\u00e2ng cao","events_tab":"S\u1ef1 ki\u1ec7n","popup_tab":"B\u1eadt l\u00ean","general_tab":"Chung",list:"Danh s\u00e1ch li\u00ean k\u1ebft","is_external":"URL b\u1ea1n \u0111\u00e3 nh\u1eadp c\u00f3 v\u1ebb l\u00e0 m\u1ed9t li\u00ean k\u1ebft ngo\u00e0i, b\u1ea1n c\u00f3 mu\u1ed1n th\u00eam ti\u1ec1n t\u1ed1 http://?","is_email":"URL b\u1ea1n \u0111\u00e3 nh\u1eadp c\u00f3 v\u1ebb l\u00e0 m\u1ed9t \u0111\u1ecba ch\u1ec9 \u0111i\u1ec7n th\u01b0, B\u1ea1n c\u00f3 mu\u1ed1n th\u00eam ti\u1ec1n t\u1ed1 mailto?",titlefield:"Ti\u00eau \u0111\u1ec1",target:"\u0110\u00edch",url:"URL Li\u00ean k\u1ebft",title:"Th\u00eam/S\u1eeda Li\u00ean k\u1ebft","link_list":"Danh s\u00e1ch li\u00ean k\u1ebft",rtl:"Ph\u1ea3i qua tr\u00e1i",ltr:"Tr\u00e1i qua ph\u1ea3i",accesskey:"Ph\u00edm truy c\u1eadp",tabindex:"Ch\u1ec9 m\u1ee5c th\u1ebb",rev:"\u0110\u00edch li\u00ean quan t\u1edbi trang",rel:"Trang li\u00ean quan t\u1edbi \u0111\u00edch",mime:"Ki\u1ec3u MIME \u0111\u00edch",encoding:"M\u00e3 h\u00f3a k\u00fd t\u1ef1 \u0111\u00edch",langcode:"M\u00e3 ng\u00f4n ng\u1eef","target_langcode":"Ng\u00f4n ng\u1eef \u0111\u00edch",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/zh-cn_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/zh-cn_dlg.js
deleted file mode 100644
index fb228f594..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/zh-cn_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('zh-cn.advlink_dlg',{"target_name":"\u76ee\u6807\u540d\u79f0",classes:"\u7c7b\u522b",style:"\u6837\u5f0f",id:"ID","popup_position":"\u4f4d\u7f6e(X/Y)",langdir:"\u8bed\u8a00\u4e66\u5199\u65b9\u5411","popup_size":"\u5927\u5c0f","popup_dependent":"\u9650\u5236(\u4ec5\u652f\u6301Mozilla/Firefox)","popup_resizable":"\u7a97\u53e3\u53ef\u8c03\u6574\u5927\u5c0f","popup_location":"\u663e\u793a\u5730\u5740\u680f","popup_menubar":"\u663e\u793a\u83dc\u5355\u680f","popup_toolbar":"\u663e\u793a\u5de5\u5177\u680f","popup_statusbar":"\u663e\u793a\u72b6\u6001\u680f","popup_scrollbars":"\u663e\u793a\u6eda\u52a8\u6761","popup_return":"\u63d2\u5165\'return false\'","popup_name":"\u7a97\u53e3\u540d\u79f0","popup_url":"\u5f39\u51faURL",popup:"Javascript\u5f39\u7a97","target_blank":"\u5728\u65b0\u7a97\u53e3\u6253\u5f00","target_top":"\u5728\u9876\u90e8\u6846\u67b6\u6253\u5f00\uff08\u91cd\u7f6e\u6240\u6709\u6846\u67b6\uff09","target_parent":"\u5728\u7236\u7a97\u53e3/\u6846\u67b6\u6253\u5f00","target_same":"\u5728\u5f53\u524d\u7a97\u53e3/\u6846\u67b6\u6253\u5f00","anchor_names":"\u951a","popup_opts":"\u9009\u9879","advanced_props":"\u9ad8\u7ea7\u5c5e\u6027","event_props":"\u4e8b\u4ef6","popup_props":"\u5f39\u51fa\u5c5e\u6027","general_props":"\u666e\u901a\u5c5e\u6027","advanced_tab":"\u9ad8\u7ea7","events_tab":"\u4e8b\u4ef6","popup_tab":"\u5f39\u51fa","general_tab":"\u666e\u901a",list:"\u94fe\u63a5\u5217\u8868","is_external":"\u60a8\u8f93\u5165\u7684URL\u662f\u4e00\u4e2a\u5916\u90e8\u94fe\u63a5\uff0c\u662f\u5426\u8981\u52a0\u4e0a\"http://\"\u524d\u7f00\uff1f","is_email":"\u60a8\u8f93\u5165URL\u662f\u7535\u5b50\u90ae\u4ef6\u5730\u5740\uff0c\u662f\u5426\u9700\u8981\u52a0\"mailto:\"\u524d\u7f00\uff1f",titlefield:"\u6807\u9898",target:"\u6253\u5f00\u65b9\u5f0f",url:"\u8d85\u94fe\u63a5URL",title:"\u63d2\u5165/\u7f16\u8f91 \u8d85\u94fe\u63a5","link_list":"\u94fe\u63a5\u5217\u8868",rtl:"\u4ece\u53f3\u5230\u5de6",ltr:"\u4ece\u5de6\u5230\u53f3",accesskey:"\u5feb\u6377\u952e",tabindex:"Tab\u7d22\u5f15",rev:"\u76ee\u6807\u5230\u7f51\u9875\u7684\u5173\u7cfb",rel:"\u7f51\u9875\u5230\u76ee\u6807\u7684\u5173\u7cfb",mime:"\u76ee\u6807MIME\u7c7b\u578b",encoding:"\u76ee\u6807\u8bed\u8a00\u7f16\u7801",langcode:"\u8bed\u8a00\u7f16\u7801","target_langcode":"\u76ee\u6807\u8bed\u8a00",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/langs/zh-tw_dlg.js b/program/js/tiny_mce/plugins/advlink/langs/zh-tw_dlg.js
deleted file mode 100644
index 56819393e..000000000
--- a/program/js/tiny_mce/plugins/advlink/langs/zh-tw_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('zh-tw.advlink_dlg',{"target_name":"\u76ee\u6a19\u540d\u7a31",classes:"\u985e\u5225 (Class)",style:"\u6a23\u5f0f",id:"\u9023\u7d50\u7684 ID","popup_position":"\u4f4d\u7f6e (X/Y)",langdir:"\u66f8\u5beb\u65b9\u5411","popup_size":"\u5927\u5c0f","popup_dependent":"\u9650\u5236 (\u50c5 Firefox \u652f\u63f4)","popup_resizable":"\u53ef\u4ee5\u8abf\u6574\u8996\u7a97\u5927\u5c0f","popup_location":"\u986f\u793a\u7db2\u5740\u5217","popup_menubar":"\u986f\u793a\u7a0b\u5f0f\u9078\u55ae","popup_toolbar":"\u986f\u793a\u5de5\u5177\u5217","popup_statusbar":"\u986f\u793a\u72c0\u614b\u5217","popup_scrollbars":"\u986f\u793a\u7db2\u9801\u6372\u8ef8","popup_return":"\u52a0\u5165\u4e00\u500b Javascript Return False \u8a9e\u6cd5","popup_name":"\u8996\u7a97\u540d\u7a31","popup_url":"\u5f48\u8df3\u8996\u7a97\u7684\u7db2\u5740",popup:"\u4f7f\u7528 Javascript \u7a0b\u5f0f\u8a9e\u8a00\u505a\u5f48\u8df3\u6548\u679c","target_blank":"\u958b\u4e00\u500b\u65b0\u8996\u7a97","target_top":"\u76f4\u63a5\u958b\u555f (\u6846\u67b6\u4e5f\u84cb\u6389)","target_parent":"\u958b\u5728\u4e3b\u8981\u756b\u9762","target_same":"\u76f4\u63a5\u958b\u555f","anchor_names":"\u9328\u9ede (\u66f8\u7c64)","popup_opts":"\u9078\u9805","advanced_props":"\u66f4\u591a\u8a2d\u5b9a","event_props":"\u4e8b\u4ef6","popup_props":"\u5f48\u8df3\u8a2d\u5b9a","general_props":"\u4e00\u822c","advanced_tab":"\u66f4\u591a","events_tab":"\u7a0b\u5f0f\u4e8b\u4ef6","popup_tab":"\u5f48\u8df3\u8996\u7a97","general_tab":"\u4e00\u822c",list:"\u9023\u7d50\u6e05\u55ae","is_external":"\u60a8\u7684\u7db2\u5740\u5c11\u597d\u50cf\u52a0\u5165\u4e00\u500b http:// \u8a9e\u6cd5\uff0c\u8981\u5e6b\u60a8\u4fee\u6b63\u55ce\uff1f","is_email":"\u60a8\u7684 E-Mail \u5c11\u597d\u50cf\u52a0\u5165\u4e00\u500b mailto: \u8a9e\u6cd5\uff0c\u8981\u5e6b\u60a8\u4fee\u6b63\u55ce\uff1f",titlefield:"\u6a19\u984c",target:"\u958b\u555f\u65b9\u5f0f",url:"\u9023\u7d50 URL",title:"\u52a0\u5165 / \u7de8\u8f2f\u7db2\u5740\u9023\u7d50","link_list":"\u9023\u7d50\u6e05\u55ae",rtl:"\u5f9e\u53f3\u908a\u5230\u5de6\u908a",ltr:"\u5f9e\u5de6\u908a\u5230\u53f3\u908a",accesskey:"HTML \u5feb\u901f\u9375",tabindex:"Tab \u7d22\u5f15\u4f4d\u7f6e (Tabindex)",rev:"\u9023\u7d50\u8207\u7db2\u9801\u7684\u95dc\u4fc2",rel:"\u7db2\u9801\u8207\u9023\u7d50\u7684\u95dc\u4fc2",mime:"\u9023\u7d50\u7684 MIME \u985e\u578b",encoding:"\u9023\u7d50\u4e2d\u7684\u5b57\u5143\u7de8\u78bc",langcode:"\u8a9e\u7cfb\u4ee3\u865f","target_langcode":"\u9023\u7d50\u7684\u8a9e\u8a00",width:"Width",height:"Height"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlink/link.htm b/program/js/tiny_mce/plugins/advlink/link.htm
deleted file mode 100644
index 8ab7c2a95..000000000
--- a/program/js/tiny_mce/plugins/advlink/link.htm
+++ /dev/null
@@ -1,338 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#advlink_dlg.title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="../../utils/form_utils.js"></script>
- <script type="text/javascript" src="../../utils/validate.js"></script>
- <script type="text/javascript" src="js/advlink.js"></script>
- <link href="css/advlink.css" rel="stylesheet" type="text/css" />
-</head>
-<body id="advlink" style="display: none" role="application" onload="javascript:mcTabs.displayTab('general_tab','general_panel', true);" aria-labelledby="app_label">
- <span class="mceVoiceLabel" id="app_label" style="display:none;">{#advlink_dlg.title}</span>
- <form onsubmit="insertAction();return false;" action="#">
- <div class="tabs" role="presentation">
- <ul>
- <li id="general_tab" class="current" aria-controls="general_panel" ><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advlink_dlg.general_tab}</a></span></li>
- <li id="popup_tab" aria-controls="popup_panel" ><span><a href="javascript:mcTabs.displayTab('popup_tab','popup_panel');" onmousedown="return false;">{#advlink_dlg.popup_tab}</a></span></li>
- <li id="events_tab" aria-controls="events_panel"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#advlink_dlg.events_tab}</a></span></li>
- <li id="advanced_tab" aria-controls="advanced_panel"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#advlink_dlg.advanced_tab}</a></span></li>
- </ul>
- </div>
-
- <div class="panel_wrapper" role="presentation">
- <div id="general_panel" class="panel current">
- <fieldset>
- <legend>{#advlink_dlg.general_props}</legend>
-
- <table border="0" cellpadding="4" cellspacing="0" role="presentation">
- <tr>
- <td class="nowrap"><label id="hreflabel" for="href">{#advlink_dlg.url}</label></td>
- <td><table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input id="href" name="href" type="text" class="mceFocus" value="" onchange="selectByValue(this.form,'linklisthref',this.value);" aria-required="true" /></td>
- <td id="hrefbrowsercontainer">&nbsp;</td>
- </tr>
- </table></td>
- </tr>
- <tr id="linklisthrefrow">
- <td class="column1"><label for="linklisthref">{#advlink_dlg.list}</label></td>
- <td colspan="2" id="linklisthrefcontainer"><select id="linklisthref"><option value=""></option></select></td>
- </tr>
- <tr id="anchorlistrow">
- <td class="column1"><label for="anchorlist">{#advlink_dlg.anchor_names}</label></td>
- <td colspan="2" id="anchorlistcontainer"><select id="anchorlist"><option value=""></option></select></td>
- </tr>
- <tr>
- <td><label id="targetlistlabel" for="targetlist">{#advlink_dlg.target}</label></td>
- <td id="targetlistcontainer"><select id="targetlist"><option value=""></option></select></td>
- </tr>
- <tr>
- <td class="nowrap"><label id="titlelabel" for="title">{#advlink_dlg.titlefield}</label></td>
- <td><input id="title" name="title" type="text" value="" /></td>
- </tr>
- <tr>
- <td><label id="classlabel" for="classlist">{#class_name}</label></td>
- <td>
- <select id="classlist" name="classlist" onchange="changeClass();">
- <option value="" selected="selected">{#not_set}</option>
- </select>
- </td>
- </tr>
- </table>
- </fieldset>
- </div>
-
- <div id="popup_panel" class="panel">
- <fieldset>
- <legend>{#advlink_dlg.popup_props}</legend>
-
- <input type="checkbox" id="ispopup" name="ispopup" class="radio" onclick="setPopupControlsDisabled(!this.checked);buildOnClick();" />
- <label id="ispopuplabel" for="ispopup">{#advlink_dlg.popup}</label>
-
- <table border="0" cellpadding="0" cellspacing="4" role="presentation" >
- <tr>
- <td class="nowrap"><label for="popupurl">{#advlink_dlg.popup_url}</label>&nbsp;</td>
- <td>
- <table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" name="popupurl" id="popupurl" value="" onchange="buildOnClick();" /></td>
- <td id="popupurlbrowsercontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td class="nowrap"><label for="popupname">{#advlink_dlg.popup_name}</label>&nbsp;</td>
- <td><input type="text" name="popupname" id="popupname" value="" onchange="buildOnClick();" /></td>
- </tr>
- <tr role="group" aria-labelledby="popup_size_label">
- <td class="nowrap"><label id="popup_size_label">{#advlink_dlg.popup_size}</label>&nbsp;</td>
- <td class="nowrap">
- <span style="display:none" id="width_voiceLabel">{#advlink_dlg.width}</span>
- <input type="text" id="popupwidth" name="popupwidth" value="" onchange="buildOnClick();" aria-labelledby="width_voiceLabel" /> x
- <span style="display:none" id="height_voiceLabel">{#advlink_dlg.height}</span>
- <input type="text" id="popupheight" name="popupheight" value="" onchange="buildOnClick();" aria-labelledby="height_voiceLabel" /> px
- </td>
- </tr>
- <tr role="group" aria-labelledby="popup_position_label center_hint">
- <td class="nowrap" id="labelleft"><label id="popup_position_label">{#advlink_dlg.popup_position}</label>&nbsp;</td>
- <td class="nowrap">
- <span style="display:none" id="x_voiceLabel">X</span>
- <input type="text" id="popupleft" name="popupleft" value="" onchange="buildOnClick();" aria-labelledby="x_voiceLabel" /> /
- <span style="display:none" id="y_voiceLabel">Y</span>
- <input type="text" id="popuptop" name="popuptop" value="" onchange="buildOnClick();" aria-labelledby="y_voiceLabel" /> <span id="center_hint">(c /c = center)</span>
- </td>
- </tr>
- </table>
-
- <fieldset>
- <legend>{#advlink_dlg.popup_opts}</legend>
-
- <table border="0" cellpadding="0" cellspacing="4" role="presentation" >
- <tr>
- <td><input type="checkbox" id="popuplocation" name="popuplocation" class="checkbox" onchange="buildOnClick();" /></td>
- <td class="nowrap"><label id="popuplocationlabel" for="popuplocation">{#advlink_dlg.popup_location}</label></td>
- <td><input type="checkbox" id="popupscrollbars" name="popupscrollbars" class="checkbox" onchange="buildOnClick();" /></td>
- <td class="nowrap"><label id="popupscrollbarslabel" for="popupscrollbars">{#advlink_dlg.popup_scrollbars}</label></td>
- </tr>
- <tr>
- <td><input type="checkbox" id="popupmenubar" name="popupmenubar" class="checkbox" onchange="buildOnClick();" /></td>
- <td class="nowrap"><label id="popupmenubarlabel" for="popupmenubar">{#advlink_dlg.popup_menubar}</label></td>
- <td><input type="checkbox" id="popupresizable" name="popupresizable" class="checkbox" onchange="buildOnClick();" /></td>
- <td class="nowrap"><label id="popupresizablelabel" for="popupresizable">{#advlink_dlg.popup_resizable}</label></td>
- </tr>
- <tr>
- <td><input type="checkbox" id="popuptoolbar" name="popuptoolbar" class="checkbox" onchange="buildOnClick();" /></td>
- <td class="nowrap"><label id="popuptoolbarlabel" for="popuptoolbar">{#advlink_dlg.popup_toolbar}</label></td>
- <td><input type="checkbox" id="popupdependent" name="popupdependent" class="checkbox" onchange="buildOnClick();" /></td>
- <td class="nowrap"><label id="popupdependentlabel" for="popupdependent">{#advlink_dlg.popup_dependent}</label></td>
- </tr>
- <tr>
- <td><input type="checkbox" id="popupstatus" name="popupstatus" class="checkbox" onchange="buildOnClick();" /></td>
- <td class="nowrap"><label id="popupstatuslabel" for="popupstatus">{#advlink_dlg.popup_statusbar}</label></td>
- <td><input type="checkbox" id="popupreturn" name="popupreturn" class="checkbox" onchange="buildOnClick();" checked="checked" /></td>
- <td class="nowrap"><label id="popupreturnlabel" for="popupreturn">{#advlink_dlg.popup_return}</label></td>
- </tr>
- </table>
- </fieldset>
- </fieldset>
- </div>
-
- <div id="advanced_panel" class="panel">
- <fieldset>
- <legend>{#advlink_dlg.advanced_props}</legend>
-
- <table border="0" cellpadding="0" cellspacing="4" role="presentation" >
- <tr>
- <td class="column1"><label id="idlabel" for="id">{#advlink_dlg.id}</label></td>
- <td><input id="id" name="id" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td><label id="stylelabel" for="style">{#advlink_dlg.style}</label></td>
- <td><input type="text" id="style" name="style" value="" /></td>
- </tr>
-
- <tr>
- <td><label id="classeslabel" for="classes">{#advlink_dlg.classes}</label></td>
- <td><input type="text" id="classes" name="classes" value="" onchange="selectByValue(this.form,'classlist',this.value,true);" /></td>
- </tr>
-
- <tr>
- <td><label id="targetlabel" for="target">{#advlink_dlg.target_name}</label></td>
- <td><input type="text" id="target" name="target" value="" onchange="selectByValue(this.form,'targetlist',this.value,true);" /></td>
- </tr>
-
- <tr>
- <td class="column1"><label id="dirlabel" for="dir">{#advlink_dlg.langdir}</label></td>
- <td>
- <select id="dir" name="dir">
- <option value="">{#not_set}</option>
- <option value="ltr">{#advlink_dlg.ltr}</option>
- <option value="rtl">{#advlink_dlg.rtl}</option>
- </select>
- </td>
- </tr>
-
- <tr>
- <td><label id="hreflanglabel" for="hreflang">{#advlink_dlg.target_langcode}</label></td>
- <td><input type="text" id="hreflang" name="hreflang" value="" /></td>
- </tr>
-
- <tr>
- <td class="column1"><label id="langlabel" for="lang">{#advlink_dlg.langcode}</label></td>
- <td>
- <input id="lang" name="lang" type="text" value="" />
- </td>
- </tr>
-
- <tr>
- <td><label id="charsetlabel" for="charset">{#advlink_dlg.encoding}</label></td>
- <td><input type="text" id="charset" name="charset" value="" /></td>
- </tr>
-
- <tr>
- <td><label id="typelabel" for="type">{#advlink_dlg.mime}</label></td>
- <td><input type="text" id="type" name="type" value="" /></td>
- </tr>
-
- <tr>
- <td><label id="rellabel" for="rel">{#advlink_dlg.rel}</label></td>
- <td><select id="rel" name="rel">
- <option value="">{#not_set}</option>
- <option value="lightbox">Lightbox</option>
- <option value="alternate">Alternate</option>
- <option value="designates">Designates</option>
- <option value="stylesheet">Stylesheet</option>
- <option value="start">Start</option>
- <option value="next">Next</option>
- <option value="prev">Prev</option>
- <option value="contents">Contents</option>
- <option value="index">Index</option>
- <option value="glossary">Glossary</option>
- <option value="copyright">Copyright</option>
- <option value="chapter">Chapter</option>
- <option value="subsection">Subsection</option>
- <option value="appendix">Appendix</option>
- <option value="help">Help</option>
- <option value="bookmark">Bookmark</option>
- <option value="nofollow">No Follow</option>
- <option value="tag">Tag</option>
- </select>
- </td>
- </tr>
-
- <tr>
- <td><label id="revlabel" for="rev">{#advlink_dlg.rev}</label></td>
- <td><select id="rev" name="rev">
- <option value="">{#not_set}</option>
- <option value="alternate">Alternate</option>
- <option value="designates">Designates</option>
- <option value="stylesheet">Stylesheet</option>
- <option value="start">Start</option>
- <option value="next">Next</option>
- <option value="prev">Prev</option>
- <option value="contents">Contents</option>
- <option value="index">Index</option>
- <option value="glossary">Glossary</option>
- <option value="copyright">Copyright</option>
- <option value="chapter">Chapter</option>
- <option value="subsection">Subsection</option>
- <option value="appendix">Appendix</option>
- <option value="help">Help</option>
- <option value="bookmark">Bookmark</option>
- </select>
- </td>
- </tr>
-
- <tr>
- <td><label id="tabindexlabel" for="tabindex">{#advlink_dlg.tabindex}</label></td>
- <td><input type="text" id="tabindex" name="tabindex" value="" /></td>
- </tr>
-
- <tr>
- <td><label id="accesskeylabel" for="accesskey">{#advlink_dlg.accesskey}</label></td>
- <td><input type="text" id="accesskey" name="accesskey" value="" /></td>
- </tr>
- </table>
- </fieldset>
- </div>
-
- <div id="events_panel" class="panel">
- <fieldset>
- <legend>{#advlink_dlg.event_props}</legend>
-
- <table border="0" cellpadding="0" cellspacing="4" role="presentation" >
- <tr>
- <td class="column1"><label for="onfocus">onfocus</label></td>
- <td><input id="onfocus" name="onfocus" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="column1"><label for="onblur">onblur</label></td>
- <td><input id="onblur" name="onblur" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="column1"><label for="onclick">onclick</label></td>
- <td><input id="onclick" name="onclick" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="column1"><label for="ondblclick">ondblclick</label></td>
- <td><input id="ondblclick" name="ondblclick" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="column1"><label for="onmousedown">onmousedown</label></td>
- <td><input id="onmousedown" name="onmousedown" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="column1"><label for="onmouseup">onmouseup</label></td>
- <td><input id="onmouseup" name="onmouseup" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="column1"><label for="onmouseover">onmouseover</label></td>
- <td><input id="onmouseover" name="onmouseover" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="column1"><label for="onmousemove">onmousemove</label></td>
- <td><input id="onmousemove" name="onmousemove" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="column1"><label for="onmouseout">onmouseout</label></td>
- <td><input id="onmouseout" name="onmouseout" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="column1"><label for="onkeypress">onkeypress</label></td>
- <td><input id="onkeypress" name="onkeypress" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="column1"><label for="onkeydown">onkeydown</label></td>
- <td><input id="onkeydown" name="onkeydown" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="column1"><label for="onkeyup">onkeyup</label></td>
- <td><input id="onkeyup" name="onkeyup" type="text" value="" /></td>
- </tr>
- </table>
- </fieldset>
- </div>
- </div>
-
- <div class="mceActionPanel">
- <input type="submit" id="insert" name="insert" value="{#insert}" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
- </form>
-</body>
-</html>
diff --git a/program/js/tiny_mce/plugins/advlist/editor_plugin.js b/program/js/tiny_mce/plugins/advlist/editor_plugin.js
deleted file mode 100644
index 57ecce6e0..000000000
--- a/program/js/tiny_mce/plugins/advlist/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){var a=tinymce.each;tinymce.create("tinymce.plugins.AdvListPlugin",{init:function(b,c){var d=this;d.editor=b;function e(g){var f=[];a(g.split(/,/),function(h){f.push({title:"advlist."+(h=="default"?"def":h.replace(/-/g,"_")),styles:{listStyleType:h=="default"?"":h}})});return f}d.numlist=b.getParam("advlist_number_styles")||e("default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman");d.bullist=b.getParam("advlist_bullet_styles")||e("default,circle,disc,square");if(tinymce.isIE&&/MSIE [2-7]/.test(navigator.userAgent)){d.isIE7=true}},createControl:function(d,b){var f=this,e,i,g=f.editor;if(d=="numlist"||d=="bullist"){if(f[d][0].title=="advlist.def"){i=f[d][0]}function c(j,l){var k=true;a(l.styles,function(n,m){if(g.dom.getStyle(j,m)!=n){k=false;return false}});return k}function h(){var k,l=g.dom,j=g.selection;k=l.getParent(j.getNode(),"ol,ul");if(!k||k.nodeName==(d=="bullist"?"OL":"UL")||c(k,i)){g.execCommand(d=="bullist"?"InsertUnorderedList":"InsertOrderedList")}if(i){k=l.getParent(j.getNode(),"ol,ul");if(k){l.setStyles(k,i.styles);k.removeAttribute("data-mce-style")}}g.focus()}e=b.createSplitButton(d,{title:"advanced."+d+"_desc","class":"mce_"+d,onclick:function(){h()}});e.onRenderMenu.add(function(j,k){k.onHideMenu.add(function(){if(f.bookmark){g.selection.moveToBookmark(f.bookmark);f.bookmark=0}});k.onShowMenu.add(function(){var n=g.dom,m=n.getParent(g.selection.getNode(),"ol,ul"),l;if(m||i){l=f[d];a(k.items,function(o){var p=true;o.setSelected(0);if(m&&!o.isDisabled()){a(l,function(q){if(q.id==o.id){if(!c(m,q)){p=false;return false}}});if(p){o.setSelected(1)}}});if(!m){k.items[i.id].setSelected(1)}}g.focus();if(tinymce.isIE){f.bookmark=g.selection.getBookmark(1)}});k.add({id:g.dom.uniqueId(),title:"advlist.types","class":"mceMenuItemTitle",titleItem:true}).setDisabled(1);a(f[d],function(l){if(f.isIE7&&l.styles.listStyleType=="lower-greek"){return}l.id=g.dom.uniqueId();k.add({id:l.id,title:l.title,onclick:function(){i=l;h()}})})});return e}},getInfo:function(){return{longname:"Advanced lists",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlist",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("advlist",tinymce.plugins.AdvListPlugin)})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/advlist/editor_plugin_src.js b/program/js/tiny_mce/plugins/advlist/editor_plugin_src.js
deleted file mode 100644
index a8f046b41..000000000
--- a/program/js/tiny_mce/plugins/advlist/editor_plugin_src.js
+++ /dev/null
@@ -1,176 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- var each = tinymce.each;
-
- tinymce.create('tinymce.plugins.AdvListPlugin', {
- init : function(ed, url) {
- var t = this;
-
- t.editor = ed;
-
- function buildFormats(str) {
- var formats = [];
-
- each(str.split(/,/), function(type) {
- formats.push({
- title : 'advlist.' + (type == 'default' ? 'def' : type.replace(/-/g, '_')),
- styles : {
- listStyleType : type == 'default' ? '' : type
- }
- });
- });
-
- return formats;
- };
-
- // Setup number formats from config or default
- t.numlist = ed.getParam("advlist_number_styles") || buildFormats("default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman");
- t.bullist = ed.getParam("advlist_bullet_styles") || buildFormats("default,circle,disc,square");
-
- if (tinymce.isIE && /MSIE [2-7]/.test(navigator.userAgent))
- t.isIE7 = true;
- },
-
- createControl: function(name, cm) {
- var t = this, btn, format, editor = t.editor;
-
- if (name == 'numlist' || name == 'bullist') {
- // Default to first item if it's a default item
- if (t[name][0].title == 'advlist.def')
- format = t[name][0];
-
- function hasFormat(node, format) {
- var state = true;
-
- each(format.styles, function(value, name) {
- // Format doesn't match
- if (editor.dom.getStyle(node, name) != value) {
- state = false;
- return false;
- }
- });
-
- return state;
- };
-
- function applyListFormat() {
- var list, dom = editor.dom, sel = editor.selection;
-
- // Check for existing list element
- list = dom.getParent(sel.getNode(), 'ol,ul');
-
- // Switch/add list type if needed
- if (!list || list.nodeName == (name == 'bullist' ? 'OL' : 'UL') || hasFormat(list, format))
- editor.execCommand(name == 'bullist' ? 'InsertUnorderedList' : 'InsertOrderedList');
-
- // Append styles to new list element
- if (format) {
- list = dom.getParent(sel.getNode(), 'ol,ul');
- if (list) {
- dom.setStyles(list, format.styles);
- list.removeAttribute('data-mce-style');
- }
- }
-
- editor.focus();
- };
-
- btn = cm.createSplitButton(name, {
- title : 'advanced.' + name + '_desc',
- 'class' : 'mce_' + name,
- onclick : function() {
- applyListFormat();
- }
- });
-
- btn.onRenderMenu.add(function(btn, menu) {
- menu.onHideMenu.add(function() {
- if (t.bookmark) {
- editor.selection.moveToBookmark(t.bookmark);
- t.bookmark = 0;
- }
- });
-
- menu.onShowMenu.add(function() {
- var dom = editor.dom, list = dom.getParent(editor.selection.getNode(), 'ol,ul'), fmtList;
-
- if (list || format) {
- fmtList = t[name];
-
- // Unselect existing items
- each(menu.items, function(item) {
- var state = true;
-
- item.setSelected(0);
-
- if (list && !item.isDisabled()) {
- each(fmtList, function(fmt) {
- if (fmt.id == item.id) {
- if (!hasFormat(list, fmt)) {
- state = false;
- return false;
- }
- }
- });
-
- if (state)
- item.setSelected(1);
- }
- });
-
- // Select the current format
- if (!list)
- menu.items[format.id].setSelected(1);
- }
-
- editor.focus();
-
- // IE looses it's selection so store it away and restore it later
- if (tinymce.isIE) {
- t.bookmark = editor.selection.getBookmark(1);
- }
- });
-
- menu.add({id : editor.dom.uniqueId(), title : 'advlist.types', 'class' : 'mceMenuItemTitle', titleItem: true}).setDisabled(1);
-
- each(t[name], function(item) {
- // IE<8 doesn't support lower-greek, skip it
- if (t.isIE7 && item.styles.listStyleType == 'lower-greek')
- return;
-
- item.id = editor.dom.uniqueId();
-
- menu.add({id : item.id, title : item.title, onclick : function() {
- format = item;
- applyListFormat();
- }});
- });
- });
-
- return btn;
- }
- },
-
- getInfo : function() {
- return {
- longname : 'Advanced lists',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlist',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('advlist', tinymce.plugins.AdvListPlugin);
-})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/autolink/editor_plugin.js b/program/js/tiny_mce/plugins/autolink/editor_plugin.js
deleted file mode 100644
index 71d86bbec..000000000
--- a/program/js/tiny_mce/plugins/autolink/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.AutolinkPlugin",{init:function(a,b){var c=this;a.onKeyDown.addToTop(function(d,f){if(f.keyCode==13){return c.handleEnter(d)}});if(tinyMCE.isIE){return}a.onKeyPress.add(function(d,f){if(f.which==41){return c.handleEclipse(d)}});a.onKeyUp.add(function(d,f){if(f.keyCode==32){return c.handleSpacebar(d)}})},handleEclipse:function(a){this.parseCurrentLine(a,-1,"(",true)},handleSpacebar:function(a){this.parseCurrentLine(a,0,"",true)},handleEnter:function(a){this.parseCurrentLine(a,-1,"",false)},parseCurrentLine:function(i,d,b,g){var a,f,c,n,k,m,h,e,j;a=i.selection.getRng(true).cloneRange();if(a.startOffset<5){e=a.endContainer.previousSibling;if(e==null){if(a.endContainer.firstChild==null||a.endContainer.firstChild.nextSibling==null){return}e=a.endContainer.firstChild.nextSibling}j=e.length;a.setStart(e,j);a.setEnd(e,j);if(a.endOffset<5){return}f=a.endOffset;n=e}else{n=a.endContainer;if(n.nodeType!=3&&n.firstChild){while(n.nodeType!=3&&n.firstChild){n=n.firstChild}if(n.nodeType==3){a.setStart(n,0);a.setEnd(n,n.nodeValue.length)}}if(a.endOffset==1){f=2}else{f=a.endOffset-1-d}}c=f;do{a.setStart(n,f>=2?f-2:0);a.setEnd(n,f>=1?f-1:0);f-=1}while(a.toString()!=" "&&a.toString()!=""&&a.toString().charCodeAt(0)!=160&&(f-2)>=0&&a.toString()!=b);if(a.toString()==b||a.toString().charCodeAt(0)==160){a.setStart(n,f);a.setEnd(n,c);f+=1}else{if(a.startOffset==0){a.setStart(n,0);a.setEnd(n,c)}else{a.setStart(n,f);a.setEnd(n,c)}}var m=a.toString();if(m.charAt(m.length-1)=="."){a.setEnd(n,c-1)}m=a.toString();h=m.match(/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|(?:mailto:)?[A-Z0-9._%+-]+@)(.+)$/i);if(h){if(h[1]=="www."){h[1]="http://www."}else{if(/@$/.test(h[1])&&!/^mailto:/.test(h[1])){h[1]="mailto:"+h[1]}}k=i.selection.getBookmark();i.selection.setRng(a);tinyMCE.execCommand("createlink",false,h[1]+h[2]);i.selection.moveToBookmark(k);i.nodeChanged();if(tinyMCE.isWebKit){i.selection.collapse(false);var l=Math.min(n.length,c+1);a.setStart(n,l);a.setEnd(n,l);i.selection.setRng(a)}}},getInfo:function(){return{longname:"Autolink",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autolink",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("autolink",tinymce.plugins.AutolinkPlugin)})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/autolink/editor_plugin_src.js b/program/js/tiny_mce/plugins/autolink/editor_plugin_src.js
deleted file mode 100644
index 5b61f7a20..000000000
--- a/program/js/tiny_mce/plugins/autolink/editor_plugin_src.js
+++ /dev/null
@@ -1,184 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2011, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- tinymce.create('tinymce.plugins.AutolinkPlugin', {
- /**
- * Initializes the plugin, this will be executed after the plugin has been created.
- * This call is done before the editor instance has finished it's initialization so use the onInit event
- * of the editor instance to intercept that event.
- *
- * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.
- * @param {string} url Absolute URL to where the plugin is located.
- */
-
- init : function(ed, url) {
- var t = this;
-
- // Add a key down handler
- ed.onKeyDown.addToTop(function(ed, e) {
- if (e.keyCode == 13)
- return t.handleEnter(ed);
- });
-
- // Internet Explorer has built-in automatic linking for most cases
- if (tinyMCE.isIE)
- return;
-
- ed.onKeyPress.add(function(ed, e) {
- if (e.which == 41)
- return t.handleEclipse(ed);
- });
-
- // Add a key up handler
- ed.onKeyUp.add(function(ed, e) {
- if (e.keyCode == 32)
- return t.handleSpacebar(ed);
- });
- },
-
- handleEclipse : function(ed) {
- this.parseCurrentLine(ed, -1, '(', true);
- },
-
- handleSpacebar : function(ed) {
- this.parseCurrentLine(ed, 0, '', true);
- },
-
- handleEnter : function(ed) {
- this.parseCurrentLine(ed, -1, '', false);
- },
-
- parseCurrentLine : function(ed, end_offset, delimiter, goback) {
- var r, end, start, endContainer, bookmark, text, matches, prev, len;
-
- // We need at least five characters to form a URL,
- // hence, at minimum, five characters from the beginning of the line.
- r = ed.selection.getRng(true).cloneRange();
- if (r.startOffset < 5) {
- // During testing, the caret is placed inbetween two text nodes.
- // The previous text node contains the URL.
- prev = r.endContainer.previousSibling;
- if (prev == null) {
- if (r.endContainer.firstChild == null || r.endContainer.firstChild.nextSibling == null)
- return;
-
- prev = r.endContainer.firstChild.nextSibling;
- }
- len = prev.length;
- r.setStart(prev, len);
- r.setEnd(prev, len);
-
- if (r.endOffset < 5)
- return;
-
- end = r.endOffset;
- endContainer = prev;
- } else {
- endContainer = r.endContainer;
-
- // Get a text node
- if (endContainer.nodeType != 3 && endContainer.firstChild) {
- while (endContainer.nodeType != 3 && endContainer.firstChild)
- endContainer = endContainer.firstChild;
-
- // Move range to text node
- if (endContainer.nodeType == 3) {
- r.setStart(endContainer, 0);
- r.setEnd(endContainer, endContainer.nodeValue.length);
- }
- }
-
- if (r.endOffset == 1)
- end = 2;
- else
- end = r.endOffset - 1 - end_offset;
- }
-
- start = end;
-
- do
- {
- // Move the selection one character backwards.
- r.setStart(endContainer, end >= 2 ? end - 2 : 0);
- r.setEnd(endContainer, end >= 1 ? end - 1 : 0);
- end -= 1;
-
- // Loop until one of the following is found: a blank space, &nbsp;, delimeter, (end-2) >= 0
- } while (r.toString() != ' ' && r.toString() != '' && r.toString().charCodeAt(0) != 160 && (end -2) >= 0 && r.toString() != delimiter);
-
- if (r.toString() == delimiter || r.toString().charCodeAt(0) == 160) {
- r.setStart(endContainer, end);
- r.setEnd(endContainer, start);
- end += 1;
- } else if (r.startOffset == 0) {
- r.setStart(endContainer, 0);
- r.setEnd(endContainer, start);
- }
- else {
- r.setStart(endContainer, end);
- r.setEnd(endContainer, start);
- }
-
- // Exclude last . from word like "www.site.com."
- var text = r.toString();
- if (text.charAt(text.length - 1) == '.') {
- r.setEnd(endContainer, start - 1);
- }
-
- text = r.toString();
- matches = text.match(/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|(?:mailto:)?[A-Z0-9._%+-]+@)(.+)$/i);
-
- if (matches) {
- if (matches[1] == 'www.') {
- matches[1] = 'http://www.';
- } else if (/@$/.test(matches[1]) && !/^mailto:/.test(matches[1])) {
- matches[1] = 'mailto:' + matches[1];
- }
-
- bookmark = ed.selection.getBookmark();
-
- ed.selection.setRng(r);
- tinyMCE.execCommand('createlink',false, matches[1] + matches[2]);
- ed.selection.moveToBookmark(bookmark);
- ed.nodeChanged();
-
- // TODO: Determine if this is still needed.
- if (tinyMCE.isWebKit) {
- // move the caret to its original position
- ed.selection.collapse(false);
- var max = Math.min(endContainer.length, start + 1);
- r.setStart(endContainer, max);
- r.setEnd(endContainer, max);
- ed.selection.setRng(r);
- }
- }
- },
-
- /**
- * Returns information about the plugin as a name/value array.
- * The current keys are longname, author, authorurl, infourl and version.
- *
- * @return {Object} Name/value array containing information about the plugin.
- */
- getInfo : function() {
- return {
- longname : 'Autolink',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autolink',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('autolink', tinymce.plugins.AutolinkPlugin);
-})();
diff --git a/program/js/tiny_mce/plugins/autoresize/editor_plugin.js b/program/js/tiny_mce/plugins/autoresize/editor_plugin.js
deleted file mode 100644
index 46d9dc3dd..000000000
--- a/program/js/tiny_mce/plugins/autoresize/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.AutoResizePlugin",{init:function(a,c){var d=this,e=0;if(a.getParam("fullscreen_is_enabled")){return}function b(){var j,i=a.getDoc(),f=i.body,l=i.documentElement,h=tinymce.DOM,k=d.autoresize_min_height,g;g=tinymce.isIE?f.scrollHeight:(tinymce.isWebKit&&f.clientHeight==0?0:f.offsetHeight);if(g>d.autoresize_min_height){k=g}if(d.autoresize_max_height&&g>d.autoresize_max_height){k=d.autoresize_max_height;f.style.overflowY="auto";l.style.overflowY="auto"}else{f.style.overflowY="hidden";l.style.overflowY="hidden";f.scrollTop=0}if(k!==e){j=k-e;h.setStyle(h.get(a.id+"_ifr"),"height",k+"px");e=k;if(tinymce.isWebKit&&j<0){b()}}}d.editor=a;d.autoresize_min_height=parseInt(a.getParam("autoresize_min_height",a.getElement().offsetHeight));d.autoresize_max_height=parseInt(a.getParam("autoresize_max_height",0));a.onInit.add(function(f){f.dom.setStyle(f.getBody(),"paddingBottom",f.getParam("autoresize_bottom_margin",50)+"px")});a.onChange.add(b);a.onSetContent.add(b);a.onPaste.add(b);a.onKeyUp.add(b);a.onPostRender.add(b);if(a.getParam("autoresize_on_init",true)){a.onLoad.add(b);a.onLoadContent.add(b)}a.addCommand("mceAutoResize",b)},getInfo:function(){return{longname:"Auto Resize",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autoresize",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("autoresize",tinymce.plugins.AutoResizePlugin)})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/autoresize/editor_plugin_src.js b/program/js/tiny_mce/plugins/autoresize/editor_plugin_src.js
deleted file mode 100644
index 7673bcff8..000000000
--- a/program/js/tiny_mce/plugins/autoresize/editor_plugin_src.js
+++ /dev/null
@@ -1,119 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- /**
- * Auto Resize
- *
- * This plugin automatically resizes the content area to fit its content height.
- * It will retain a minimum height, which is the height of the content area when
- * it's initialized.
- */
- tinymce.create('tinymce.plugins.AutoResizePlugin', {
- /**
- * Initializes the plugin, this will be executed after the plugin has been created.
- * This call is done before the editor instance has finished it's initialization so use the onInit event
- * of the editor instance to intercept that event.
- *
- * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.
- * @param {string} url Absolute URL to where the plugin is located.
- */
- init : function(ed, url) {
- var t = this, oldSize = 0;
-
- if (ed.getParam('fullscreen_is_enabled'))
- return;
-
- /**
- * This method gets executed each time the editor needs to resize.
- */
- function resize() {
- var deltaSize, d = ed.getDoc(), body = d.body, de = d.documentElement, DOM = tinymce.DOM, resizeHeight = t.autoresize_min_height, myHeight;
-
- // Get height differently depending on the browser used
- myHeight = tinymce.isIE ? body.scrollHeight : (tinymce.isWebKit && body.clientHeight == 0 ? 0 : body.offsetHeight);
-
- // Don't make it smaller than the minimum height
- if (myHeight > t.autoresize_min_height)
- resizeHeight = myHeight;
-
- // If a maximum height has been defined don't exceed this height
- if (t.autoresize_max_height && myHeight > t.autoresize_max_height) {
- resizeHeight = t.autoresize_max_height;
- body.style.overflowY = "auto";
- de.style.overflowY = "auto"; // Old IE
- } else {
- body.style.overflowY = "hidden";
- de.style.overflowY = "hidden"; // Old IE
- body.scrollTop = 0;
- }
-
- // Resize content element
- if (resizeHeight !== oldSize) {
- deltaSize = resizeHeight - oldSize;
- DOM.setStyle(DOM.get(ed.id + '_ifr'), 'height', resizeHeight + 'px');
- oldSize = resizeHeight;
-
- // WebKit doesn't decrease the size of the body element until the iframe gets resized
- // So we need to continue to resize the iframe down until the size gets fixed
- if (tinymce.isWebKit && deltaSize < 0)
- resize();
- }
- };
-
- t.editor = ed;
-
- // Define minimum height
- t.autoresize_min_height = parseInt(ed.getParam('autoresize_min_height', ed.getElement().offsetHeight));
-
- // Define maximum height
- t.autoresize_max_height = parseInt(ed.getParam('autoresize_max_height', 0));
-
- // Add padding at the bottom for better UX
- ed.onInit.add(function(ed){
- ed.dom.setStyle(ed.getBody(), 'paddingBottom', ed.getParam('autoresize_bottom_margin', 50) + 'px');
- });
-
- // Add appropriate listeners for resizing content area
- ed.onChange.add(resize);
- ed.onSetContent.add(resize);
- ed.onPaste.add(resize);
- ed.onKeyUp.add(resize);
- ed.onPostRender.add(resize);
-
- if (ed.getParam('autoresize_on_init', true)) {
- ed.onLoad.add(resize);
- ed.onLoadContent.add(resize);
- }
-
- // Register the command so that it can be invoked by using tinyMCE.activeEditor.execCommand('mceExample');
- ed.addCommand('mceAutoResize', resize);
- },
-
- /**
- * Returns information about the plugin as a name/value array.
- * The current keys are longname, author, authorurl, infourl and version.
- *
- * @return {Object} Name/value array containing information about the plugin.
- */
- getInfo : function() {
- return {
- longname : 'Auto Resize',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autoresize',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('autoresize', tinymce.plugins.AutoResizePlugin);
-})();
diff --git a/program/js/tiny_mce/plugins/autosave/editor_plugin.js b/program/js/tiny_mce/plugins/autosave/editor_plugin.js
deleted file mode 100644
index 6da98ff33..000000000
--- a/program/js/tiny_mce/plugins/autosave/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(e){var c="autosave",g="restoredraft",b=true,f,d,a=e.util.Dispatcher;e.create("tinymce.plugins.AutoSave",{init:function(i,j){var h=this,l=i.settings;h.editor=i;function k(n){var m={s:1000,m:60000};n=/^(\d+)([ms]?)$/.exec(""+n);return(n[2]?m[n[2]]:1)*parseInt(n)}e.each({ask_before_unload:b,interval:"30s",retention:"20m",minlength:50},function(n,m){m=c+"_"+m;if(l[m]===f){l[m]=n}});l.autosave_interval=k(l.autosave_interval);l.autosave_retention=k(l.autosave_retention);i.addButton(g,{title:c+".restore_content",onclick:function(){if(i.getContent({draft:true}).replace(/\s|&nbsp;|<\/?p[^>]*>|<br[^>]*>/gi,"").length>0){i.windowManager.confirm(c+".warning_message",function(m){if(m){h.restoreDraft()}})}else{h.restoreDraft()}}});i.onNodeChange.add(function(){var m=i.controlManager;if(m.get(g)){m.setDisabled(g,!h.hasDraft())}});i.onInit.add(function(){if(i.controlManager.get(g)){h.setupStorage(i);setInterval(function(){if(!i.removed){h.storeDraft();i.nodeChanged()}},l.autosave_interval)}});h.onStoreDraft=new a(h);h.onRestoreDraft=new a(h);h.onRemoveDraft=new a(h);if(!d){window.onbeforeunload=e.plugins.AutoSave._beforeUnloadHandler;d=b}},getInfo:function(){return{longname:"Auto save",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autosave",version:e.majorVersion+"."+e.minorVersion}},getExpDate:function(){return new Date(new Date().getTime()+this.editor.settings.autosave_retention).toUTCString()},setupStorage:function(i){var h=this,k=c+"_test",j="OK";h.key=c+i.id;e.each([function(){if(localStorage){localStorage.setItem(k,j);if(localStorage.getItem(k)===j){localStorage.removeItem(k);return localStorage}}},function(){if(sessionStorage){sessionStorage.setItem(k,j);if(sessionStorage.getItem(k)===j){sessionStorage.removeItem(k);return sessionStorage}}},function(){if(e.isIE){i.getElement().style.behavior="url('#default#userData')";return{autoExpires:b,setItem:function(l,n){var m=i.getElement();m.setAttribute(l,n);m.expires=h.getExpDate();try{m.save("TinyMCE")}catch(o){}},getItem:function(l){var m=i.getElement();try{m.load("TinyMCE");return m.getAttribute(l)}catch(n){return null}},removeItem:function(l){i.getElement().removeAttribute(l)}}}},],function(l){try{h.storage=l();if(h.storage){return false}}catch(m){}})},storeDraft:function(){var i=this,l=i.storage,j=i.editor,h,k;if(l){if(!l.getItem(i.key)&&!j.isDirty()){return}k=j.getContent({draft:true});if(k.length>j.settings.autosave_minlength){h=i.getExpDate();if(!i.storage.autoExpires){i.storage.setItem(i.key+"_expires",h)}i.storage.setItem(i.key,k);i.onStoreDraft.dispatch(i,{expires:h,content:k})}}},restoreDraft:function(){var h=this,j=h.storage,i;if(j){i=j.getItem(h.key);if(i){h.editor.setContent(i);h.onRestoreDraft.dispatch(h,{content:i})}}},hasDraft:function(){var h=this,k=h.storage,i,j;if(k){j=!!k.getItem(h.key);if(j){if(!h.storage.autoExpires){i=new Date(k.getItem(h.key+"_expires"));if(new Date().getTime()<i.getTime()){return b}h.removeDraft()}else{return b}}}return false},removeDraft:function(){var h=this,k=h.storage,i=h.key,j;if(k){j=k.getItem(i);k.removeItem(i);k.removeItem(i+"_expires");if(j){h.onRemoveDraft.dispatch(h,{content:j})}}},"static":{_beforeUnloadHandler:function(h){var i;e.each(tinyMCE.editors,function(j){if(j.plugins.autosave){j.plugins.autosave.storeDraft()}if(j.getParam("fullscreen_is_enabled")){return}if(!i&&j.isDirty()&&j.getParam("autosave_ask_before_unload")){i=j.getLang("autosave.unload_msg")}});return i}}});e.PluginManager.add("autosave",e.plugins.AutoSave)})(tinymce); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/autosave/editor_plugin_src.js b/program/js/tiny_mce/plugins/autosave/editor_plugin_src.js
deleted file mode 100644
index 8b308f5aa..000000000
--- a/program/js/tiny_mce/plugins/autosave/editor_plugin_src.js
+++ /dev/null
@@ -1,433 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- *
- * Adds auto-save capability to the TinyMCE text editor to rescue content
- * inadvertently lost. This plugin was originally developed by Speednet
- * and that project can be found here: http://code.google.com/p/tinyautosave/
- *
- * TECHNOLOGY DISCUSSION:
- *
- * The plugin attempts to use the most advanced features available in the current browser to save
- * as much content as possible. There are a total of four different methods used to autosave the
- * content. In order of preference, they are:
- *
- * 1. localStorage - A new feature of HTML 5, localStorage can store megabytes of data per domain
- * on the client computer. Data stored in the localStorage area has no expiration date, so we must
- * manage expiring the data ourselves. localStorage is fully supported by IE8, and it is supposed
- * to be working in Firefox 3 and Safari 3.2, but in reality is is flaky in those browsers. As
- * HTML 5 gets wider support, the AutoSave plugin will use it automatically. In Windows Vista/7,
- * localStorage is stored in the following folder:
- * C:\Users\[username]\AppData\Local\Microsoft\Internet Explorer\DOMStore\[tempFolder]
- *
- * 2. sessionStorage - A new feature of HTML 5, sessionStorage works similarly to localStorage,
- * except it is designed to expire after a certain amount of time. Because the specification
- * around expiration date/time is very loosely-described, it is preferrable to use locaStorage and
- * manage the expiration ourselves. sessionStorage has similar storage characteristics to
- * localStorage, although it seems to have better support by Firefox 3 at the moment. (That will
- * certainly change as Firefox continues getting better at HTML 5 adoption.)
- *
- * 3. UserData - A very under-exploited feature of Microsoft Internet Explorer, UserData is a
- * way to store up to 128K of data per "document", or up to 1MB of data per domain, on the client
- * computer. The feature is available for IE 5+, which makes it available for every version of IE
- * supported by TinyMCE. The content is persistent across browser restarts and expires on the
- * date/time specified, just like a cookie. However, the data is not cleared when the user clears
- * cookies on the browser, which makes it well-suited for rescuing autosaved content. UserData,
- * like other Microsoft IE browser technologies, is implemented as a behavior attached to a
- * specific DOM object, so in this case we attach the behavior to the same DOM element that the
- * TinyMCE editor instance is attached to.
- */
-
-(function(tinymce) {
- // Setup constants to help the compressor to reduce script size
- var PLUGIN_NAME = 'autosave',
- RESTORE_DRAFT = 'restoredraft',
- TRUE = true,
- undefined,
- unloadHandlerAdded,
- Dispatcher = tinymce.util.Dispatcher;
-
- /**
- * This plugin adds auto-save capability to the TinyMCE text editor to rescue content
- * inadvertently lost. By using localStorage.
- *
- * @class tinymce.plugins.AutoSave
- */
- tinymce.create('tinymce.plugins.AutoSave', {
- /**
- * Initializes the plugin, this will be executed after the plugin has been created.
- * This call is done before the editor instance has finished it's initialization so use the onInit event
- * of the editor instance to intercept that event.
- *
- * @method init
- * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.
- * @param {string} url Absolute URL to where the plugin is located.
- */
- init : function(ed, url) {
- var self = this, settings = ed.settings;
-
- self.editor = ed;
-
- // Parses the specified time string into a milisecond number 10m, 10s etc.
- function parseTime(time) {
- var multipels = {
- s : 1000,
- m : 60000
- };
-
- time = /^(\d+)([ms]?)$/.exec('' + time);
-
- return (time[2] ? multipels[time[2]] : 1) * parseInt(time);
- };
-
- // Default config
- tinymce.each({
- ask_before_unload : TRUE,
- interval : '30s',
- retention : '20m',
- minlength : 50
- }, function(value, key) {
- key = PLUGIN_NAME + '_' + key;
-
- if (settings[key] === undefined)
- settings[key] = value;
- });
-
- // Parse times
- settings.autosave_interval = parseTime(settings.autosave_interval);
- settings.autosave_retention = parseTime(settings.autosave_retention);
-
- // Register restore button
- ed.addButton(RESTORE_DRAFT, {
- title : PLUGIN_NAME + ".restore_content",
- onclick : function() {
- if (ed.getContent({draft: true}).replace(/\s|&nbsp;|<\/?p[^>]*>|<br[^>]*>/gi, "").length > 0) {
- // Show confirm dialog if the editor isn't empty
- ed.windowManager.confirm(
- PLUGIN_NAME + ".warning_message",
- function(ok) {
- if (ok)
- self.restoreDraft();
- }
- );
- } else
- self.restoreDraft();
- }
- });
-
- // Enable/disable restoredraft button depending on if there is a draft stored or not
- ed.onNodeChange.add(function() {
- var controlManager = ed.controlManager;
-
- if (controlManager.get(RESTORE_DRAFT))
- controlManager.setDisabled(RESTORE_DRAFT, !self.hasDraft());
- });
-
- ed.onInit.add(function() {
- // Check if the user added the restore button, then setup auto storage logic
- if (ed.controlManager.get(RESTORE_DRAFT)) {
- // Setup storage engine
- self.setupStorage(ed);
-
- // Auto save contents each interval time
- setInterval(function() {
- if (!ed.removed) {
- self.storeDraft();
- ed.nodeChanged();
- }
- }, settings.autosave_interval);
- }
- });
-
- /**
- * This event gets fired when a draft is stored to local storage.
- *
- * @event onStoreDraft
- * @param {tinymce.plugins.AutoSave} sender Plugin instance sending the event.
- * @param {Object} draft Draft object containing the HTML contents of the editor.
- */
- self.onStoreDraft = new Dispatcher(self);
-
- /**
- * This event gets fired when a draft is restored from local storage.
- *
- * @event onStoreDraft
- * @param {tinymce.plugins.AutoSave} sender Plugin instance sending the event.
- * @param {Object} draft Draft object containing the HTML contents of the editor.
- */
- self.onRestoreDraft = new Dispatcher(self);
-
- /**
- * This event gets fired when a draft removed/expired.
- *
- * @event onRemoveDraft
- * @param {tinymce.plugins.AutoSave} sender Plugin instance sending the event.
- * @param {Object} draft Draft object containing the HTML contents of the editor.
- */
- self.onRemoveDraft = new Dispatcher(self);
-
- // Add ask before unload dialog only add one unload handler
- if (!unloadHandlerAdded) {
- window.onbeforeunload = tinymce.plugins.AutoSave._beforeUnloadHandler;
- unloadHandlerAdded = TRUE;
- }
- },
-
- /**
- * Returns information about the plugin as a name/value array.
- * The current keys are longname, author, authorurl, infourl and version.
- *
- * @method getInfo
- * @return {Object} Name/value array containing information about the plugin.
- */
- getInfo : function() {
- return {
- longname : 'Auto save',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autosave',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- },
-
- /**
- * Returns an expiration date UTC string.
- *
- * @method getExpDate
- * @return {String} Expiration date UTC string.
- */
- getExpDate : function() {
- return new Date(
- new Date().getTime() + this.editor.settings.autosave_retention
- ).toUTCString();
- },
-
- /**
- * This method will setup the storage engine. If the browser has support for it.
- *
- * @method setupStorage
- */
- setupStorage : function(ed) {
- var self = this, testKey = PLUGIN_NAME + '_test', testVal = "OK";
-
- self.key = PLUGIN_NAME + ed.id;
-
- // Loop though each storage engine type until we find one that works
- tinymce.each([
- function() {
- // Try HTML5 Local Storage
- if (localStorage) {
- localStorage.setItem(testKey, testVal);
-
- if (localStorage.getItem(testKey) === testVal) {
- localStorage.removeItem(testKey);
-
- return localStorage;
- }
- }
- },
-
- function() {
- // Try HTML5 Session Storage
- if (sessionStorage) {
- sessionStorage.setItem(testKey, testVal);
-
- if (sessionStorage.getItem(testKey) === testVal) {
- sessionStorage.removeItem(testKey);
-
- return sessionStorage;
- }
- }
- },
-
- function() {
- // Try IE userData
- if (tinymce.isIE) {
- ed.getElement().style.behavior = "url('#default#userData')";
-
- // Fake localStorage on old IE
- return {
- autoExpires : TRUE,
-
- setItem : function(key, value) {
- var userDataElement = ed.getElement();
-
- userDataElement.setAttribute(key, value);
- userDataElement.expires = self.getExpDate();
-
- try {
- userDataElement.save("TinyMCE");
- } catch (e) {
- // Ignore, saving might fail if "Userdata Persistence" is disabled in IE
- }
- },
-
- getItem : function(key) {
- var userDataElement = ed.getElement();
-
- try {
- userDataElement.load("TinyMCE");
- return userDataElement.getAttribute(key);
- } catch (e) {
- // Ignore, loading might fail if "Userdata Persistence" is disabled in IE
- return null;
- }
- },
-
- removeItem : function(key) {
- ed.getElement().removeAttribute(key);
- }
- };
- }
- },
- ], function(setup) {
- // Try executing each function to find a suitable storage engine
- try {
- self.storage = setup();
-
- if (self.storage)
- return false;
- } catch (e) {
- // Ignore
- }
- });
- },
-
- /**
- * This method will store the current contents in the the storage engine.
- *
- * @method storeDraft
- */
- storeDraft : function() {
- var self = this, storage = self.storage, editor = self.editor, expires, content;
-
- // Is the contents dirty
- if (storage) {
- // If there is no existing key and the contents hasn't been changed since
- // it's original value then there is no point in saving a draft
- if (!storage.getItem(self.key) && !editor.isDirty())
- return;
-
- // Store contents if the contents if longer than the minlength of characters
- content = editor.getContent({draft: true});
- if (content.length > editor.settings.autosave_minlength) {
- expires = self.getExpDate();
-
- // Store expiration date if needed IE userData has auto expire built in
- if (!self.storage.autoExpires)
- self.storage.setItem(self.key + "_expires", expires);
-
- self.storage.setItem(self.key, content);
- self.onStoreDraft.dispatch(self, {
- expires : expires,
- content : content
- });
- }
- }
- },
-
- /**
- * This method will restore the contents from the storage engine back to the editor.
- *
- * @method restoreDraft
- */
- restoreDraft : function() {
- var self = this, storage = self.storage, content;
-
- if (storage) {
- content = storage.getItem(self.key);
-
- if (content) {
- self.editor.setContent(content);
- self.onRestoreDraft.dispatch(self, {
- content : content
- });
- }
- }
- },
-
- /**
- * This method will return true/false if there is a local storage draft available.
- *
- * @method hasDraft
- * @return {boolean} true/false state if there is a local draft.
- */
- hasDraft : function() {
- var self = this, storage = self.storage, expDate, exists;
-
- if (storage) {
- // Does the item exist at all
- exists = !!storage.getItem(self.key);
- if (exists) {
- // Storage needs autoexpire
- if (!self.storage.autoExpires) {
- expDate = new Date(storage.getItem(self.key + "_expires"));
-
- // Contents hasn't expired
- if (new Date().getTime() < expDate.getTime())
- return TRUE;
-
- // Remove it if it has
- self.removeDraft();
- } else
- return TRUE;
- }
- }
-
- return false;
- },
-
- /**
- * Removes the currently stored draft.
- *
- * @method removeDraft
- */
- removeDraft : function() {
- var self = this, storage = self.storage, key = self.key, content;
-
- if (storage) {
- // Get current contents and remove the existing draft
- content = storage.getItem(key);
- storage.removeItem(key);
- storage.removeItem(key + "_expires");
-
- // Dispatch remove event if we had any contents
- if (content) {
- self.onRemoveDraft.dispatch(self, {
- content : content
- });
- }
- }
- },
-
- "static" : {
- // Internal unload handler will be called before the page is unloaded
- _beforeUnloadHandler : function(e) {
- var msg;
-
- tinymce.each(tinyMCE.editors, function(ed) {
- // Store a draft for each editor instance
- if (ed.plugins.autosave)
- ed.plugins.autosave.storeDraft();
-
- // Never ask in fullscreen mode
- if (ed.getParam("fullscreen_is_enabled"))
- return;
-
- // Setup a return message if the editor is dirty
- if (!msg && ed.isDirty() && ed.getParam("autosave_ask_before_unload"))
- msg = ed.getLang("autosave.unload_msg");
- });
-
- return msg;
- }
- }
- });
-
- tinymce.PluginManager.add('autosave', tinymce.plugins.AutoSave);
-})(tinymce);
diff --git a/program/js/tiny_mce/plugins/autosave/langs/en.js b/program/js/tiny_mce/plugins/autosave/langs/en.js
deleted file mode 100644
index fce6bd3e1..000000000
--- a/program/js/tiny_mce/plugins/autosave/langs/en.js
+++ /dev/null
@@ -1,4 +0,0 @@
-tinyMCE.addI18n('en.autosave',{
-restore_content: "Restore auto-saved content",
-warning_message: "If you restore the saved content, you will lose all the content that is currently in the editor.\n\nAre you sure you want to restore the saved content?"
-}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/bbcode/editor_plugin.js b/program/js/tiny_mce/plugins/bbcode/editor_plugin.js
deleted file mode 100644
index 8f8821fd6..000000000
--- a/program/js/tiny_mce/plugins/bbcode/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.BBCodePlugin",{init:function(a,b){var d=this,c=a.getParam("bbcode_dialect","punbb").toLowerCase();a.onBeforeSetContent.add(function(e,f){f.content=d["_"+c+"_bbcode2html"](f.content)});a.onPostProcess.add(function(e,f){if(f.set){f.content=d["_"+c+"_bbcode2html"](f.content)}if(f.get){f.content=d["_"+c+"_html2bbcode"](f.content)}})},getInfo:function(){return{longname:"BBCode Plugin",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_punbb_html2bbcode:function(a){a=tinymce.trim(a);function b(c,d){a=a.replace(c,d)}b(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]");b(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");b(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");b(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");b(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");b(/<span style=\"color: ?(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]");b(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]");b(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]");b(/<font>(.*?)<\/font>/gi,"$1");b(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]");b(/<span class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]");b(/<span class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]");b(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]");b(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]");b(/<em class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]");b(/<em class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]");b(/<u class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]");b(/<u class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]");b(/<\/(strong|b)>/gi,"[/b]");b(/<(strong|b)>/gi,"[b]");b(/<\/(em|i)>/gi,"[/i]");b(/<(em|i)>/gi,"[i]");b(/<\/u>/gi,"[/u]");b(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]");b(/<u>/gi,"[u]");b(/<blockquote[^>]*>/gi,"[quote]");b(/<\/blockquote>/gi,"[/quote]");b(/<br \/>/gi,"\n");b(/<br\/>/gi,"\n");b(/<br>/gi,"\n");b(/<p>/gi,"");b(/<\/p>/gi,"\n");b(/&nbsp;|\u00a0/gi," ");b(/&quot;/gi,'"');b(/&lt;/gi,"<");b(/&gt;/gi,">");b(/&amp;/gi,"&");return a},_punbb_bbcode2html:function(a){a=tinymce.trim(a);function b(c,d){a=a.replace(c,d)}b(/\n/gi,"<br />");b(/\[b\]/gi,"<strong>");b(/\[\/b\]/gi,"</strong>");b(/\[i\]/gi,"<em>");b(/\[\/i\]/gi,"</em>");b(/\[u\]/gi,"<u>");b(/\[\/u\]/gi,"</u>");b(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,'<a href="$1">$2</a>');b(/\[url\](.*?)\[\/url\]/gi,'<a href="$1">$1</a>');b(/\[img\](.*?)\[\/img\]/gi,'<img src="$1" />');b(/\[color=(.*?)\](.*?)\[\/color\]/gi,'<font color="$1">$2</font>');b(/\[code\](.*?)\[\/code\]/gi,'<span class="codeStyle">$1</span>&nbsp;');b(/\[quote.*?\](.*?)\[\/quote\]/gi,'<span class="quoteStyle">$1</span>&nbsp;');return a}});tinymce.PluginManager.add("bbcode",tinymce.plugins.BBCodePlugin)})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/bbcode/editor_plugin_src.js b/program/js/tiny_mce/plugins/bbcode/editor_plugin_src.js
deleted file mode 100644
index 4e7eb3377..000000000
--- a/program/js/tiny_mce/plugins/bbcode/editor_plugin_src.js
+++ /dev/null
@@ -1,120 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- tinymce.create('tinymce.plugins.BBCodePlugin', {
- init : function(ed, url) {
- var t = this, dialect = ed.getParam('bbcode_dialect', 'punbb').toLowerCase();
-
- ed.onBeforeSetContent.add(function(ed, o) {
- o.content = t['_' + dialect + '_bbcode2html'](o.content);
- });
-
- ed.onPostProcess.add(function(ed, o) {
- if (o.set)
- o.content = t['_' + dialect + '_bbcode2html'](o.content);
-
- if (o.get)
- o.content = t['_' + dialect + '_html2bbcode'](o.content);
- });
- },
-
- getInfo : function() {
- return {
- longname : 'BBCode Plugin',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- },
-
- // Private methods
-
- // HTML -> BBCode in PunBB dialect
- _punbb_html2bbcode : function(s) {
- s = tinymce.trim(s);
-
- function rep(re, str) {
- s = s.replace(re, str);
- };
-
- // example: <strong> to [b]
- rep(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]");
- rep(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");
- rep(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");
- rep(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");
- rep(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");
- rep(/<span style=\"color: ?(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]");
- rep(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]");
- rep(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]");
- rep(/<font>(.*?)<\/font>/gi,"$1");
- rep(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]");
- rep(/<span class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]");
- rep(/<span class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]");
- rep(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]");
- rep(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]");
- rep(/<em class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]");
- rep(/<em class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]");
- rep(/<u class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]");
- rep(/<u class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]");
- rep(/<\/(strong|b)>/gi,"[/b]");
- rep(/<(strong|b)>/gi,"[b]");
- rep(/<\/(em|i)>/gi,"[/i]");
- rep(/<(em|i)>/gi,"[i]");
- rep(/<\/u>/gi,"[/u]");
- rep(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]");
- rep(/<u>/gi,"[u]");
- rep(/<blockquote[^>]*>/gi,"[quote]");
- rep(/<\/blockquote>/gi,"[/quote]");
- rep(/<br \/>/gi,"\n");
- rep(/<br\/>/gi,"\n");
- rep(/<br>/gi,"\n");
- rep(/<p>/gi,"");
- rep(/<\/p>/gi,"\n");
- rep(/&nbsp;|\u00a0/gi," ");
- rep(/&quot;/gi,"\"");
- rep(/&lt;/gi,"<");
- rep(/&gt;/gi,">");
- rep(/&amp;/gi,"&");
-
- return s;
- },
-
- // BBCode -> HTML from PunBB dialect
- _punbb_bbcode2html : function(s) {
- s = tinymce.trim(s);
-
- function rep(re, str) {
- s = s.replace(re, str);
- };
-
- // example: [b] to <strong>
- rep(/\n/gi,"<br />");
- rep(/\[b\]/gi,"<strong>");
- rep(/\[\/b\]/gi,"</strong>");
- rep(/\[i\]/gi,"<em>");
- rep(/\[\/i\]/gi,"</em>");
- rep(/\[u\]/gi,"<u>");
- rep(/\[\/u\]/gi,"</u>");
- rep(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,"<a href=\"$1\">$2</a>");
- rep(/\[url\](.*?)\[\/url\]/gi,"<a href=\"$1\">$1</a>");
- rep(/\[img\](.*?)\[\/img\]/gi,"<img src=\"$1\" />");
- rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"<font color=\"$1\">$2</font>");
- rep(/\[code\](.*?)\[\/code\]/gi,"<span class=\"codeStyle\">$1</span>&nbsp;");
- rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"<span class=\"quoteStyle\">$1</span>&nbsp;");
-
- return s;
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('bbcode', tinymce.plugins.BBCodePlugin);
-})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/contextmenu/editor_plugin.js b/program/js/tiny_mce/plugins/contextmenu/editor_plugin.js
deleted file mode 100644
index 2ed042c3a..000000000
--- a/program/js/tiny_mce/plugins/contextmenu/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){var a=tinymce.dom.Event,c=tinymce.each,b=tinymce.DOM;tinymce.create("tinymce.plugins.ContextMenu",{init:function(f){var i=this,g,d,j,e;i.editor=f;d=f.settings.contextmenu_never_use_native;i.onContextMenu=new tinymce.util.Dispatcher(this);e=function(k){h(f,k)};g=f.onContextMenu.add(function(k,l){if((j!==0?j:l.ctrlKey)&&!d){return}a.cancel(l);if(l.target.nodeName=="IMG"){k.selection.select(l.target)}i._getMenu(k).showMenu(l.clientX||l.pageX,l.clientY||l.pageY);a.add(k.getDoc(),"click",e);k.nodeChanged()});f.onRemove.add(function(){if(i._menu){i._menu.removeAll()}});function h(k,l){j=0;if(l&&l.button==2){j=l.ctrlKey;return}if(i._menu){i._menu.removeAll();i._menu.destroy();a.remove(k.getDoc(),"click",e);i._menu=null}}f.onMouseDown.add(h);f.onKeyDown.add(h);f.onKeyDown.add(function(k,l){if(l.shiftKey&&!l.ctrlKey&&!l.altKey&&l.keyCode===121){a.cancel(l);g(k,l)}})},getInfo:function(){return{longname:"Contextmenu",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/contextmenu",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_getMenu:function(e){var g=this,d=g._menu,j=e.selection,f=j.isCollapsed(),h=j.getNode()||e.getBody(),i,k;if(d){d.removeAll();d.destroy()}k=b.getPos(e.getContentAreaContainer());d=e.controlManager.createDropMenu("contextmenu",{offset_x:k.x+e.getParam("contextmenu_offset_x",0),offset_y:k.y+e.getParam("contextmenu_offset_y",0),constrain:1,keyboard_focus:true});g._menu=d;d.add({title:"advanced.cut_desc",icon:"cut",cmd:"Cut"}).setDisabled(f);d.add({title:"advanced.copy_desc",icon:"copy",cmd:"Copy"}).setDisabled(f);d.add({title:"advanced.paste_desc",icon:"paste",cmd:"Paste"});if((h.nodeName=="A"&&!e.dom.getAttrib(h,"name"))||!f){d.addSeparator();d.add({title:"advanced.link_desc",icon:"link",cmd:e.plugins.advlink?"mceAdvLink":"mceLink",ui:true});d.add({title:"advanced.unlink_desc",icon:"unlink",cmd:"UnLink"})}d.addSeparator();d.add({title:"advanced.image_desc",icon:"image",cmd:e.plugins.advimage?"mceAdvImage":"mceImage",ui:true});d.addSeparator();i=d.addMenu({title:"contextmenu.align"});i.add({title:"contextmenu.left",icon:"justifyleft",cmd:"JustifyLeft"});i.add({title:"contextmenu.center",icon:"justifycenter",cmd:"JustifyCenter"});i.add({title:"contextmenu.right",icon:"justifyright",cmd:"JustifyRight"});i.add({title:"contextmenu.full",icon:"justifyfull",cmd:"JustifyFull"});g.onContextMenu.dispatch(g,d,h,f);return d}});tinymce.PluginManager.add("contextmenu",tinymce.plugins.ContextMenu)})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/contextmenu/editor_plugin_src.js b/program/js/tiny_mce/plugins/contextmenu/editor_plugin_src.js
deleted file mode 100644
index 48b0fff99..000000000
--- a/program/js/tiny_mce/plugins/contextmenu/editor_plugin_src.js
+++ /dev/null
@@ -1,163 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- var Event = tinymce.dom.Event, each = tinymce.each, DOM = tinymce.DOM;
-
- /**
- * This plugin a context menu to TinyMCE editor instances.
- *
- * @class tinymce.plugins.ContextMenu
- */
- tinymce.create('tinymce.plugins.ContextMenu', {
- /**
- * Initializes the plugin, this will be executed after the plugin has been created.
- * This call is done before the editor instance has finished it's initialization so use the onInit event
- * of the editor instance to intercept that event.
- *
- * @method init
- * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.
- * @param {string} url Absolute URL to where the plugin is located.
- */
- init : function(ed) {
- var t = this, showMenu, contextmenuNeverUseNative, realCtrlKey, hideMenu;
-
- t.editor = ed;
-
- contextmenuNeverUseNative = ed.settings.contextmenu_never_use_native;
-
- /**
- * This event gets fired when the context menu is shown.
- *
- * @event onContextMenu
- * @param {tinymce.plugins.ContextMenu} sender Plugin instance sending the event.
- * @param {tinymce.ui.DropMenu} menu Drop down menu to fill with more items if needed.
- */
- t.onContextMenu = new tinymce.util.Dispatcher(this);
-
- hideMenu = function(e) {
- hide(ed, e);
- };
-
- showMenu = ed.onContextMenu.add(function(ed, e) {
- // Block TinyMCE menu on ctrlKey and work around Safari issue
- if ((realCtrlKey !== 0 ? realCtrlKey : e.ctrlKey) && !contextmenuNeverUseNative)
- return;
-
- Event.cancel(e);
-
- // Select the image if it's clicked. WebKit would other wise expand the selection
- if (e.target.nodeName == 'IMG')
- ed.selection.select(e.target);
-
- t._getMenu(ed).showMenu(e.clientX || e.pageX, e.clientY || e.pageY);
- Event.add(ed.getDoc(), 'click', hideMenu);
-
- ed.nodeChanged();
- });
-
- ed.onRemove.add(function() {
- if (t._menu)
- t._menu.removeAll();
- });
-
- function hide(ed, e) {
- realCtrlKey = 0;
-
- // Since the contextmenu event moves
- // the selection we need to store it away
- if (e && e.button == 2) {
- realCtrlKey = e.ctrlKey;
- return;
- }
-
- if (t._menu) {
- t._menu.removeAll();
- t._menu.destroy();
- Event.remove(ed.getDoc(), 'click', hideMenu);
- t._menu = null;
- }
- };
-
- ed.onMouseDown.add(hide);
- ed.onKeyDown.add(hide);
- ed.onKeyDown.add(function(ed, e) {
- if (e.shiftKey && !e.ctrlKey && !e.altKey && e.keyCode === 121) {
- Event.cancel(e);
- showMenu(ed, e);
- }
- });
- },
-
- /**
- * Returns information about the plugin as a name/value array.
- * The current keys are longname, author, authorurl, infourl and version.
- *
- * @method getInfo
- * @return {Object} Name/value array containing information about the plugin.
- */
- getInfo : function() {
- return {
- longname : 'Contextmenu',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/contextmenu',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- },
-
- _getMenu : function(ed) {
- var t = this, m = t._menu, se = ed.selection, col = se.isCollapsed(), el = se.getNode() || ed.getBody(), am, p;
-
- if (m) {
- m.removeAll();
- m.destroy();
- }
-
- p = DOM.getPos(ed.getContentAreaContainer());
-
- m = ed.controlManager.createDropMenu('contextmenu', {
- offset_x : p.x + ed.getParam('contextmenu_offset_x', 0),
- offset_y : p.y + ed.getParam('contextmenu_offset_y', 0),
- constrain : 1,
- keyboard_focus: true
- });
-
- t._menu = m;
-
- m.add({title : 'advanced.cut_desc', icon : 'cut', cmd : 'Cut'}).setDisabled(col);
- m.add({title : 'advanced.copy_desc', icon : 'copy', cmd : 'Copy'}).setDisabled(col);
- m.add({title : 'advanced.paste_desc', icon : 'paste', cmd : 'Paste'});
-
- if ((el.nodeName == 'A' && !ed.dom.getAttrib(el, 'name')) || !col) {
- m.addSeparator();
- m.add({title : 'advanced.link_desc', icon : 'link', cmd : ed.plugins.advlink ? 'mceAdvLink' : 'mceLink', ui : true});
- m.add({title : 'advanced.unlink_desc', icon : 'unlink', cmd : 'UnLink'});
- }
-
- m.addSeparator();
- m.add({title : 'advanced.image_desc', icon : 'image', cmd : ed.plugins.advimage ? 'mceAdvImage' : 'mceImage', ui : true});
-
- m.addSeparator();
- am = m.addMenu({title : 'contextmenu.align'});
- am.add({title : 'contextmenu.left', icon : 'justifyleft', cmd : 'JustifyLeft'});
- am.add({title : 'contextmenu.center', icon : 'justifycenter', cmd : 'JustifyCenter'});
- am.add({title : 'contextmenu.right', icon : 'justifyright', cmd : 'JustifyRight'});
- am.add({title : 'contextmenu.full', icon : 'justifyfull', cmd : 'JustifyFull'});
-
- t.onContextMenu.dispatch(t, m, el, col);
-
- return m;
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('contextmenu', tinymce.plugins.ContextMenu);
-})();
diff --git a/program/js/tiny_mce/plugins/directionality/editor_plugin.js b/program/js/tiny_mce/plugins/directionality/editor_plugin.js
deleted file mode 100644
index 90847e78e..000000000
--- a/program/js/tiny_mce/plugins/directionality/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.Directionality",{init:function(b,c){var d=this;d.editor=b;function a(e){var h=b.dom,g,f=b.selection.getSelectedBlocks();if(f.length){g=h.getAttrib(f[0],"dir");tinymce.each(f,function(i){if(!h.getParent(i.parentNode,"*[dir='"+e+"']",h.getRoot())){if(g!=e){h.setAttrib(i,"dir",e)}else{h.setAttrib(i,"dir",null)}}});b.nodeChanged()}}b.addCommand("mceDirectionLTR",function(){a("ltr")});b.addCommand("mceDirectionRTL",function(){a("rtl")});b.addButton("ltr",{title:"directionality.ltr_desc",cmd:"mceDirectionLTR"});b.addButton("rtl",{title:"directionality.rtl_desc",cmd:"mceDirectionRTL"});b.onNodeChange.add(d._nodeChange,d)},getInfo:function(){return{longname:"Directionality",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/directionality",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_nodeChange:function(b,a,e){var d=b.dom,c;e=d.getParent(e,d.isBlock);if(!e){a.setDisabled("ltr",1);a.setDisabled("rtl",1);return}c=d.getAttrib(e,"dir");a.setActive("ltr",c=="ltr");a.setDisabled("ltr",0);a.setActive("rtl",c=="rtl");a.setDisabled("rtl",0)}});tinymce.PluginManager.add("directionality",tinymce.plugins.Directionality)})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/directionality/editor_plugin_src.js b/program/js/tiny_mce/plugins/directionality/editor_plugin_src.js
deleted file mode 100644
index b13401412..000000000
--- a/program/js/tiny_mce/plugins/directionality/editor_plugin_src.js
+++ /dev/null
@@ -1,85 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- tinymce.create('tinymce.plugins.Directionality', {
- init : function(ed, url) {
- var t = this;
-
- t.editor = ed;
-
- function setDir(dir) {
- var dom = ed.dom, curDir, blocks = ed.selection.getSelectedBlocks();
-
- if (blocks.length) {
- curDir = dom.getAttrib(blocks[0], "dir");
-
- tinymce.each(blocks, function(block) {
- // Add dir to block if the parent block doesn't already have that dir
- if (!dom.getParent(block.parentNode, "*[dir='" + dir + "']", dom.getRoot())) {
- if (curDir != dir) {
- dom.setAttrib(block, "dir", dir);
- } else {
- dom.setAttrib(block, "dir", null);
- }
- }
- });
-
- ed.nodeChanged();
- }
- }
-
- ed.addCommand('mceDirectionLTR', function() {
- setDir("ltr");
- });
-
- ed.addCommand('mceDirectionRTL', function() {
- setDir("rtl");
- });
-
- ed.addButton('ltr', {title : 'directionality.ltr_desc', cmd : 'mceDirectionLTR'});
- ed.addButton('rtl', {title : 'directionality.rtl_desc', cmd : 'mceDirectionRTL'});
-
- ed.onNodeChange.add(t._nodeChange, t);
- },
-
- getInfo : function() {
- return {
- longname : 'Directionality',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/directionality',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- },
-
- // Private methods
-
- _nodeChange : function(ed, cm, n) {
- var dom = ed.dom, dir;
-
- n = dom.getParent(n, dom.isBlock);
- if (!n) {
- cm.setDisabled('ltr', 1);
- cm.setDisabled('rtl', 1);
- return;
- }
-
- dir = dom.getAttrib(n, 'dir');
- cm.setActive('ltr', dir == "ltr");
- cm.setDisabled('ltr', 0);
- cm.setActive('rtl', dir == "rtl");
- cm.setDisabled('rtl', 0);
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('directionality', tinymce.plugins.Directionality);
-})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/editor_plugin.js b/program/js/tiny_mce/plugins/emotions/editor_plugin.js
deleted file mode 100644
index dbdd8ffb5..000000000
--- a/program/js/tiny_mce/plugins/emotions/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(a){a.create("tinymce.plugins.EmotionsPlugin",{init:function(b,c){b.addCommand("mceEmotion",function(){b.windowManager.open({file:c+"/emotions.htm",width:250+parseInt(b.getLang("emotions.delta_width",0)),height:160+parseInt(b.getLang("emotions.delta_height",0)),inline:1},{plugin_url:c})});b.addButton("emotions",{title:"emotions.emotions_desc",cmd:"mceEmotion"})},getInfo:function(){return{longname:"Emotions",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/emotions",version:a.majorVersion+"."+a.minorVersion}}});a.PluginManager.add("emotions",a.plugins.EmotionsPlugin)})(tinymce); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/editor_plugin_src.js b/program/js/tiny_mce/plugins/emotions/editor_plugin_src.js
deleted file mode 100644
index 71d541697..000000000
--- a/program/js/tiny_mce/plugins/emotions/editor_plugin_src.js
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function(tinymce) {
- tinymce.create('tinymce.plugins.EmotionsPlugin', {
- init : function(ed, url) {
- // Register commands
- ed.addCommand('mceEmotion', function() {
- ed.windowManager.open({
- file : url + '/emotions.htm',
- width : 250 + parseInt(ed.getLang('emotions.delta_width', 0)),
- height : 160 + parseInt(ed.getLang('emotions.delta_height', 0)),
- inline : 1
- }, {
- plugin_url : url
- });
- });
-
- // Register buttons
- ed.addButton('emotions', {title : 'emotions.emotions_desc', cmd : 'mceEmotion'});
- },
-
- getInfo : function() {
- return {
- longname : 'Emotions',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/emotions',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('emotions', tinymce.plugins.EmotionsPlugin);
-})(tinymce); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/emotions.htm b/program/js/tiny_mce/plugins/emotions/emotions.htm
deleted file mode 100644
index 101355654..000000000
--- a/program/js/tiny_mce/plugins/emotions/emotions.htm
+++ /dev/null
@@ -1,42 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#emotions_dlg.title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="js/emotions.js"></script>
-</head>
-<body style="display: none" role="application" aria-labelledby="app_title">
-<span style="display:none;" id="app_title">{#emotions_dlg.title}</span>
-<div align="center">
- <div class="title">{#emotions_dlg.title}:<br /><br /></div>
-
- <table id="emoticon_table" role="presentation" border="0" cellspacing="0" cellpadding="4">
- <tr>
- <td><a class="emoticon_link" role="button" title="{#emotions_dlg.cool}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-cool.gif','emotions_dlg.cool');"><img src="img/smiley-cool.gif" width="18" height="18" border="0" alt="{#emotions_dlg.cool}. {#emotions_dlg.usage}" /></a></td>
- <td><a class="emoticon_link" role="button" title="{#emotions_dlg.cry}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-cry.gif','emotions_dlg.cry');"><img src="img/smiley-cry.gif" width="18" height="18" border="0" alt="{#emotions_dlg.cry}. {#emotions_dlg.usage}" /></a></td>
- <td><a class="emoticon_link" role="button" title="{#emotions_dlg.embarassed}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-embarassed.gif','emotions_dlg.embarassed');"><img src="img/smiley-embarassed.gif" width="18" height="18" border="0" alt="{#emotions_dlg.embarassed}. {#emotions_dlg.usage}" /></a></td>
- <td><a class="emoticon_link" role="button" title="{#emotions_dlg.foot_in_mouth}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-foot-in-mouth.gif','emotions_dlg.foot_in_mouth');"><img src="img/smiley-foot-in-mouth.gif" width="18" height="18" border="0" alt="{#emotions_dlg.foot_in_mouth}. {#emotions_dlg.usage}" /></a></td>
- </tr>
- <tr>
- <td><a class="emoticon_link" role="button" title="{#emotions_dlg.frown}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-frown.gif','emotions_dlg.frown');"><img src="img/smiley-frown.gif" width="18" height="18" border="0" alt="{#emotions_dlg.frown}. {#emotions_dlg.usage}" /></a></td>
- <td><a class="emoticon_link" role="button" title="{#emotions_dlg.innocent}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-innocent.gif','emotions_dlg.innocent');"><img src="img/smiley-innocent.gif" width="18" height="18" border="0" alt="{#emotions_dlg.innocent}. {#emotions_dlg.usage}" /></a></td>
- <td><a class="emoticon_link" role="button" title="{#emotions_dlg.kiss}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-kiss.gif','emotions_dlg.kiss');"><img src="img/smiley-kiss.gif" width="18" height="18" border="0" alt="{#emotions_dlg.kiss}. {#emotions_dlg.usage}" /></a></td>
- <td><a class="emoticon_link" role="button" title="{#emotions_dlg.laughing}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-laughing.gif','emotions_dlg.laughing');"><img src="img/smiley-laughing.gif" width="18" height="18" border="0" alt="{#emotions_dlg.laughing}. {#emotions_dlg.usage}" /></a></td>
- </tr>
- <tr>
- <td><a class="emoticon_link" role="button" title="{#emotions_dlg.money_mouth}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-money-mouth.gif','emotions_dlg.money_mouth');"><img src="img/smiley-money-mouth.gif" width="18" height="18" border="0" alt="{#emotions_dlg.money_mouth}. {#emotions_dlg.usage}"/></a></td>
- <td><a class="emoticon_link" role="button" title="{#emotions_dlg.sealed}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-sealed.gif','emotions_dlg.sealed');"><img src="img/smiley-sealed.gif" width="18" height="18" border="0" alt="{#emotions_dlg.sealed}. {#emotions_dlg.usage}" /></a></td>
- <td><a class="emoticon_link" role="button" title="{#emotions_dlg.smile}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-smile.gif','emotions_dlg.smile');"><img src="img/smiley-smile.gif" width="18" height="18" border="0" alt="{#emotions_dlg.smile}. {#emotions_dlg.usage}" /></a></td>
- <td><a class="emoticon_link" role="button" title="{#emotions_dlg.surprised}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-surprised.gif','emotions_dlg.surprised');"><img src="img/smiley-surprised.gif" width="18" height="18" border="0" alt="{#emotions_dlg.surprised}. {#emotions_dlg.usage}" /></a></td>
- </tr>
- <tr>
- <td><a class="emoticon_link" role="button" title="{#emotions_dlg.tongue_out}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-tongue-out.gif','emotions_dlg.tongue_out');"><img src="img/smiley-tongue-out.gif" width="18" height="18" border="0" alt="{#emotions_dlg.tongue-out}. {#emotions_dlg.usage}" /></a></td>
- <td><a class="emoticon_link" role="button" title="{#emotions_dlg.undecided}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-undecided.gif','emotions_dlg.undecided');"><img src="img/smiley-undecided.gif" width="18" height="18" border="0" alt="{#emotions_dlg.undecided}. {#emotions_dlg.usage}" /></a></td>
- <td><a class="emoticon_link" role="button" title="{#emotions_dlg.wink}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-wink.gif','emotions_dlg.wink');"><img src="img/smiley-wink.gif" width="18" height="18" border="0" alt="{#emotions_dlg.wink}. {#emotions_dlg.usage}" /></a></td>
- <td><a class="emoticon_link" role="button" title="{#emotions_dlg.yell}. {#emotions_dlg.usage}" href="javascript:EmotionsDialog.insert('smiley-yell.gif','emotions_dlg.yell');"><img src="img/smiley-yell.gif" width="18" height="18" border="0" alt="{#emotions_dlg.yell}. {#emotions_dlg.usage}" /></a></td>
- </tr>
- </table>
- <div>{#emotions_dlg.usage}</div>
-</div>
-</body>
-</html>
diff --git a/program/js/tiny_mce/plugins/emotions/js/emotions.js b/program/js/tiny_mce/plugins/emotions/js/emotions.js
deleted file mode 100644
index b360f20b6..000000000
--- a/program/js/tiny_mce/plugins/emotions/js/emotions.js
+++ /dev/null
@@ -1,43 +0,0 @@
-tinyMCEPopup.requireLangPack();
-
-var EmotionsDialog = {
- addKeyboardNavigation: function(){
- var tableElm, cells, settings;
-
- cells = tinyMCEPopup.dom.select("a.emoticon_link", "emoticon_table");
-
- settings ={
- root: "emoticon_table",
- items: cells
- };
- cells[0].tabindex=0;
- tinyMCEPopup.dom.addClass(cells[0], "mceFocus");
- if (tinymce.isGecko) {
- cells[0].focus();
- } else {
- setTimeout(function(){
- cells[0].focus();
- }, 100);
- }
- tinyMCEPopup.editor.windowManager.createInstance('tinymce.ui.KeyboardNavigation', settings, tinyMCEPopup.dom);
- },
- init : function(ed) {
- tinyMCEPopup.resizeToInnerSize();
- this.addKeyboardNavigation();
- },
-
- insert : function(file, title) {
- var ed = tinyMCEPopup.editor, dom = ed.dom;
-
- tinyMCEPopup.execCommand('mceInsertContent', false, dom.createHTML('img', {
- src : tinyMCEPopup.getWindowArg('plugin_url') + '/img/' + file,
- alt : ed.getLang(title),
- title : ed.getLang(title),
- border : 0
- }));
-
- tinyMCEPopup.close();
- }
-};
-
-tinyMCEPopup.onInit.add(EmotionsDialog.init, EmotionsDialog);
diff --git a/program/js/tiny_mce/plugins/emotions/langs/ar_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/ar_dlg.js
deleted file mode 100644
index 80f94027c..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/ar_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ar.emotions_dlg',{cry:"\u0628\u0643\u0627\u0621",cool:"\u062c\u064a\u062f",desc:"\u0627\u0644\u0648\u0633\u0648\u0645",title:"\u0627\u0636\u0627\u0641\u0647 \u0648\u0633\u0645 \u062a\u0639\u0628\u064a\u0631\u0649",yell:"\u064a\u0635\u064a\u062d",wink:"\u063a\u0645\u0632\u0629",undecided:"\u0628\u0639\u062f","tongue_out":"\u0627\u0644\u0644\u0633\u0627\u0646 \u062e\u0627\u0631\u062c",surprised:"\u0645\u0646\u062f\u0647\u0634\u0629",smile:"\u0627\u0628\u062a\u0633\u0627\u0645\u0629",sealed:"\u0627\u0644\u0645\u062e\u062a\u0648\u0645\u0629","money_mouth":"\u0645\u062d\u0628 \u0627\u0644\u0645\u0627\u0644",laughing:"\u0627\u0644\u0636\u062d\u0643",kiss:"\u0642\u0628\u0644\u0647",innocent:"\u0627\u0644\u0628\u0631\u0627\u0621\u0647",frown:"\u0627\u0644\u062a\u062c\u0647\u0645","foot_in_mouth":"\u062d\u0630\u0627\u0621 \u0641\u0649 \u0627\u0644\u0641\u0645 (\u0627\u062e\u0631\u0633)",embarassed:"\u0627\u062d\u0631\u0627\u062c",usage:"\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0627\u0644\u0623\u0633\u0647\u0645 \u0627\u0644\u0623\u064a\u0645\u0646 \u0648\u0627\u0644\u0623\u064a\u0633\u0631 \u0644\u0644\u062a\u0646\u0642\u0644."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/az_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/az_dlg.js
deleted file mode 100644
index 919ef500f..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/az_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('az.emotions_dlg',{cry:"A\u011flay\u0131r",cool:"Bomba",desc:"Smayllar",title:"Smayl \u0259lav\u0259 et",yell:"Ba\u011f\u0131r\u0131r",wink:"G\u00f6z vurur",undecided:"Q\u0259rars\u0131zl\u0131qda","tongue_out":"Dil g\u00f6st\u0259rir",surprised:"T\u0259\u0259c\u00fcbl\u0259nib",smile:"G\u00fcl\u00fcms\u0259yir",sealed:"M\u00f6h\u00fcrl\u0259nib","money_mouth":"\u00c7oxlu pul",laughing:"G\u00fcl\u00fcr",kiss:"\u00d6p\u00fc\u015f",innocent:"G\u00fcnahs\u0131z",frown:"Qa\u015fqabaql\u0131","foot_in_mouth":"Ayaqlar_m\u0259nim_a\u011fz\u0131ma!",embarassed:"Mat qalm\u0131\u015f"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/bg_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/bg_dlg.js
deleted file mode 100644
index b15ff1cb0..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/bg_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bg.emotions_dlg',{cry:"Cry",cool:"Cool",desc:"\u0415\u043c\u043e\u0442\u0438\u043a\u043e\u043d\u0438",title:"\u0412\u043c\u044a\u043a\u043d\u0438 \u0435\u043c\u043e\u0442\u0438\u043a\u043e\u043d",yell:"Yell",wink:"Wink",undecided:"Undecided","tongue_out":"Tongue out",surprised:"Surprised",smile:"Smile",sealed:"Sealed","money_mouth":"Money mouth",laughing:"Laughing",kiss:"Kiss",innocent:"Innocent",frown:"Frown","foot_in_mouth":"Foot in mouth",embarassed:"Embarassed",usage:"\u0418\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0439\u0442\u0435 \u0441\u0442\u0440\u0435\u043b\u043a\u0438\u0442\u0435 \u043d\u0430\u043b\u044f\u0432\u043e \u0438 \u043d\u0430\u0434\u044f\u0441\u043d\u043e, \u0437\u0430 \u0434\u0430 \u0438\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043d\u044f\u043a\u043e\u044f \u0435\u043c\u043e\u0442\u0438\u043a\u043e\u043d\u043a\u0430"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/bn_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/bn_dlg.js
deleted file mode 100644
index ff99a6526..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/bn_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bn.emotions_dlg',{cry:"Cry",cool:"Cool",desc:"Emotions",title:"Insert emotion",yell:"Yell",wink:"Wink",undecided:"Undecided","tongue_out":"Tongue out",surprised:"Surprised",smile:"Smile",sealed:"Sealed","money_mouth":"Money mouth",laughing:"Laughing",kiss:"Kiss",innocent:"Innocent",frown:"Frown","foot_in_mouth":"Foot in mouth",embarassed:"Embarassed"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/br_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/br_dlg.js
deleted file mode 100644
index d482e034b..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/br_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('br.emotions_dlg',{cry:"Chor\u00e3o",cool:"Fixe",desc:"Emoticons",title:"Inserir emoticon",yell:"Irado",wink:"Piscadela",undecided:"Indeciso","tongue_out":"L\u00edngua de fora",surprised:"Surpresa",smile:"Sorriso",sealed:"Boca Fechada","money_mouth":"Avarez",laughing:"Riso",kiss:"Beijo",innocent:"Inocente",frown:"Decep\u00e7\u00e3o","foot_in_mouth":"Disse asneira",embarassed:"Embara\u00e7ado"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/bs_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/bs_dlg.js
deleted file mode 100644
index c34a7655e..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/bs_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bs.emotions_dlg',{cry:"Pla\u010d",cool:"Cool",desc:"Emocije",title:"Umetni emociju",yell:"Vi\u010de",wink:"Namigiva",undecided:"Neodlu\u010dan","tongue_out":"Belji se",surprised:"Iznena\u0111en",smile:"Osmijeh",sealed:"\u0160utim","money_mouth":"Bogata\u0161",laughing:"Smijeh",kiss:"Poljubac",innocent:"Nevina\u0161ce",frown:"Mr\u0161ti se","foot_in_mouth":"Izlanuo se",embarassed:"Sramim se"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/ca_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/ca_dlg.js
deleted file mode 100644
index 6aaba39bf..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/ca_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ca.emotions_dlg',{cry:"Plorant",cool:"Guai",desc:"Emoticones",title:"Insereix una emoticona",yell:"Cridant",wink:"Fent l\'ullet",undecided:"Indec\u00eds","tongue_out":"Llengua a fora",surprised:"Sorpr\u00e8s",smile:"Somriure",sealed:"Censurat","money_mouth":"Amb fam de diners",laughing:"Rient",kiss:"Pet\u00f3",innocent:"Innocent",frown:"Arrufant les celles","foot_in_mouth":"Amb un peu a la boca",embarassed:"Avergonyit",usage:"Feu servir fletxes esquerra i dreta per navegar"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/cs_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/cs_dlg.js
deleted file mode 100644
index 625608bcc..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/cs_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('cs.emotions_dlg',{cry:"Pla\u010d\u00edc\u00ed",cool:"\u00da\u017easn\u00fd",desc:"Emotikony",title:"Vlo\u017eit emotikonu",yell:"K\u0159i\u010d\u00edc\u00ed",wink:"Mrkaj\u00edc\u00ed",undecided:"Nerozhodn\u00fd","tongue_out":"S vyplazen\u00fdm jazykem",surprised:"P\u0159ekvapen\u00fd",smile:"Usm\u00edvaj\u00edc\u00ed se",sealed:"Ml\u010d\u00edc\u00ed","money_mouth":"Je na prachy",laughing:"Sm\u011bj\u00edc\u00ed se",kiss:"L\u00edbaj\u00edc\u00ed",innocent:"Nevinn\u00fd",frown:"Zamra\u010den\u00fd","foot_in_mouth":"\u0160l\u00e1pnul vedle",embarassed:"Rozpa\u010dit\u00fd",usage:"Pro navigaci pou\u017eijte \u0161ipky vlevo a vpravo."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/cy_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/cy_dlg.js
deleted file mode 100644
index 6e40f0cb2..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/cy_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('cy.emotions_dlg',{cry:"Crio",cool:"Iawn",desc:"Emosiynau",title:"Mewnosod Emosiwn",yell:"Gweiddi",wink:"Wincio",undecided:"Heb benderfynu","tongue_out":"Tafod allan",surprised:"Wedi synnu",smile:"Gw\u00ean",sealed:"Wedi\'i selio","money_mouth":"Ceg arian",laughing:"Chwerthin",kiss:"Cusan",innocent:"Dieuog",frown:"Gwgu","foot_in_mouth":"Troed yn y geg",embarassed:"Embaras",usage:"Defnyddiwch saethau dde a chwith i fforio."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/da_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/da_dlg.js
deleted file mode 100644
index 165137e7b..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/da_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('da.emotions_dlg',{cry:"Gr\u00e6de",cool:"Cool",desc:"Hum\u00f8rikoner",title:"Inds\u00e6t hum\u00f8rikon",yell:"R\u00e5be",wink:"Vink",undecided:"Ubeslutsom","tongue_out":"Tunge ud",surprised:"Overrasket",smile:"Smil",sealed:"Lukket","money_mouth":"Pengemund",laughing:"Grine",kiss:"Kys",innocent:"Uskyldig",frown:"Forskr\u00e6kket","foot_in_mouth":"Fod i munden",embarassed:"Flov",usage:"Brug venstre og h\u00f8jre piletaster til at navigere"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/de_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/de_dlg.js
deleted file mode 100644
index 9ef427cbb..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/de_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('de.emotions_dlg',{cry:"Weinend",cool:"Cool",desc:"Smilies",title:"Smiley einf\u00fcgen",yell:"Br\u00fcllend",wink:"Zwinkernd",undecided:"Unentschlossen","tongue_out":"Zunge raus",surprised:"\u00dcberrascht",smile:"L\u00e4chelnd",sealed:"Verschlossen","money_mouth":"Geld",laughing:"Lachend",kiss:"K\u00fcssend",innocent:"Unschuldig",frown:"Stirnrunzelnd","foot_in_mouth":"Reingefallen",embarassed:"Verlegen",usage:"Navigation mit linken und rechten Pfeilen."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/el_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/el_dlg.js
deleted file mode 100644
index c847eb29c..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/el_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('el.emotions_dlg',{cry:"\u0394\u03b1\u03ba\u03c1\u03c5\u03c3\u03bc\u03ad\u03bd\u03bf\u03c2",cool:"\u0386\u03bd\u03b5\u03c4\u03bf\u03c2",desc:"\u03a3\u03c5\u03bd\u03b1\u03b9\u03c3\u03b8\u03ae\u03bc\u03b1\u03c4\u03b1",title:"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03c3\u03c5\u03bd\u03b1\u03b9\u03c3\u03b8\u03ae\u03bc\u03b1\u03c4\u03bf\u03c2",yell:"\u03a6\u03c9\u03bd\u03ac\u03b6\u03c9",wink:"\u039a\u03bb\u03b5\u03af\u03c3\u03b9\u03bc\u03bf \u03bc\u03b1\u03c4\u03b9\u03bf\u03cd",undecided:"\u0391\u03bd\u03b1\u03c0\u03bf\u03c6\u03ac\u03c3\u03b9\u03c3\u03c4\u03bf\u03c2","tongue_out":"\u0393\u03bb\u03ce\u03c3\u03c3\u03b1 \u03ad\u03be\u03c9",surprised:"\u0388\u03ba\u03c0\u03bb\u03b7\u03ba\u03c4\u03bf\u03c2",smile:"\u03a7\u03b1\u03bc\u03cc\u03b3\u03b5\u03bb\u03bf",sealed:"\u03a3\u03c6\u03c1\u03b1\u03b3\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf \u03c3\u03c4\u03cc\u03bc\u03b1","money_mouth":"\u039b\u03b5\u03c6\u03c4\u03ac \u03c9\u03c2 \u03c3\u03c4\u03cc\u03bc\u03b1",laughing:"\u0393\u03ad\u03bb\u03b9\u03bf",kiss:"\u03a6\u03b9\u03bb\u03af",innocent:"\u0391\u03b8\u03ce\u03bf\u03c2",frown:"\u039a\u03b1\u03c4\u03c3\u03bf\u03c5\u03c6\u03b9\u03b1\u03c3\u03bc\u03ad\u03bd\u03bf\u03c2","foot_in_mouth":"\u039a\u03bb\u03c9\u03c4\u03c3\u03b9\u03ac \u03c3\u03c4\u03bf \u03c3\u03c4\u03cc\u03bc\u03b1",embarassed:"\u0391\u03bc\u03ae\u03c7\u03b1\u03bd\u03bf\u03c2",usage:"\u03a7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03c4\u03b5 \u03c4\u03bf \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03cc \u03ba\u03b1\u03b9 \u03c4\u03bf \u03b4\u03b5\u03be\u03af \u03b2\u03ad\u03bb\u03bf\u03c2 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03c0\u03b5\u03c1\u03b9\u03b7\u03b3\u03b7\u03b8\u03b5\u03af\u03c4\u03b5."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/en_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/en_dlg.js
deleted file mode 100644
index 037c4b588..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/en_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('en.emotions_dlg',{cry:"Cry",cool:"Cool",desc:"Emotions",title:"Insert Emotion",usage:"Use left and right arrows to navigate.",yell:"Yell",wink:"Wink",undecided:"Undecided","tongue_out":"Tongue Out",surprised:"Surprised",smile:"Smile",sealed:"Sealed","money_mouth":"Money Mouth",laughing:"Laughing",kiss:"Kiss",innocent:"Innocent",frown:"Frown","foot_in_mouth":"Foot in Mouth",embarassed:"Embarassed"});
diff --git a/program/js/tiny_mce/plugins/emotions/langs/eo_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/eo_dlg.js
deleted file mode 100644
index 47a7bdfee..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/eo_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('eo.emotions_dlg',{cry:"Ploranta",cool:"Mojosa",desc:"Viza\u011detoj",title:"Enmeti viza\u011deton",yell:"Kolera",wink:"Okulumo",undecided:"Sendecida","tongue_out":"Lango",surprised:"Surprizita",smile:"Rideto",sealed:"Bu\u015do Fermita","money_mouth":"Avara",laughing:"Rido",kiss:"Kiso",innocent:"Senkulpa",frown:"Malgajo","foot_in_mouth":"Rubo",embarassed:"Hontema"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/es_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/es_dlg.js
deleted file mode 100644
index bdff36a57..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/es_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('es.emotions_dlg',{cry:"Llora",cool:"Todo bien",desc:"Emoticones",title:"Insertar emoticon",yell:"Enfadado",wink:"Gui\u00f1o",undecided:"Indeciso","tongue_out":"Lengua fuera",surprised:"Sorprendido",smile:"Sonrisa",sealed:"Sellado","money_mouth":"Dinero boca",laughing:"Risa",kiss:"Beso",innocent:"Inocente",frown:"Triste","foot_in_mouth":"Pie en la boca",embarassed:"Verg\u00fcenza",usage:"Use las flechas para navegar"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/et_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/et_dlg.js
deleted file mode 100644
index 1b1d632a0..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/et_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('et.emotions_dlg',{cry:"Nutt",cool:"Lahe",desc:"Emotsioonid",title:"Sisesta emotsioon",yell:"Karje",wink:"Silmapilgutus",undecided:"K\u00f5hklev","tongue_out":"Keel v\u00e4ljas",surprised:"\u00dcllatunud",smile:"Naeratus",sealed:"Suletud","money_mouth":"Rahasuu",laughing:"Naermine",kiss:"Suudlus",innocent:"S\u00fc\u00fctu",frown:"Kulmu kortsutamine","foot_in_mouth":"Jalg suus",embarassed:"H\u00e4bitunne",usage:"Kasuta navigeerimiseks vasak ja parem nooli."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/eu_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/eu_dlg.js
deleted file mode 100644
index e8c51bcfb..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/eu_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('eu.emotions_dlg',{cry:"Negarrez",cool:"Ondo",desc:"Ikonotsoak",title:"Ikonotxoa sartu",yell:"Oihua",wink:"Keinua",undecided:"Zalantzan","tongue_out":"Mihia atera",surprised:"Harrituta",smile:"Irriparra",sealed:"Ixilik","money_mouth":"Ahoa diruz beteta",laughing:"Barrez",kiss:"Muxua",innocent:"Ni ez naiz izan",frown:"Desadostasuna","foot_in_mouth":"Hanka ahoan",embarassed:"Lotsatuta"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/fa_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/fa_dlg.js
deleted file mode 100644
index 1c1d57c0d..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/fa_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fa.emotions_dlg',{cry:"\u06af\u0631\u06cc\u0647",cool:"\u0622\u0631\u0627\u0645",desc:"\u0634\u06a9\u0644\u06a9 \u0647\u0627",title:"\u062f\u0631\u062c \u0634\u06a9\u0644\u06a9",yell:"\u0641\u0631\u06cc\u0627\u062f",wink:"\u0686\u0634\u0645\u06a9",undecided:"\u0645\u0631\u062f\u062f","tongue_out":"\u0632\u0628\u0627\u0646 \u062f\u0631\u0627\u0632\u06cc",surprised:"\u0645\u062a\u0639\u062c\u0628",smile:"\u0644\u0628\u062e\u0646\u062f",sealed:"\u0645\u0647\u0631 \u0634\u062f\u0647","money_mouth":"\u067e\u0648\u0644 \u062f\u0631 \u062f\u0647\u0627\u0646",laughing:"\u062e\u0646\u062f\u0647",kiss:"\u0628\u0648\u0633\u0647",innocent:"\u0628\u06cc \u062a\u0642\u0635\u06cc\u0631",frown:"\u0627\u062e\u0645","foot_in_mouth":"\u067e\u0627 \u062f\u0631 \u062f\u0647\u0627\u0646",embarassed:"\u062e\u062c\u0627\u0644\u062a\u06cc",usage:"\u0627\u0632 \u06a9\u0644\u06cc\u062f \u0647\u0627\u06cc \u0686\u067e \u0648 \u0631\u0627\u0633\u062a \u062c\u0647\u062a \u062d\u0631\u06a9\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/fi_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/fi_dlg.js
deleted file mode 100644
index 7e620dd5f..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/fi_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fi.emotions_dlg',{cry:"Itku",cool:"Cool",desc:"Hymi\u00f6t",title:"Lis\u00e4\u00e4 hymi\u00f6",yell:"Huuto",wink:"Silm\u00e4nisku",undecided:"P\u00e4\u00e4tt\u00e4m\u00e4t\u00f6n","tongue_out":"Kieli ulkona",surprised:"Yll\u00e4ttynyt",smile:"Hymy",sealed:"Tukittu","money_mouth":"Klink Klink (raha)",laughing:"Nauru",kiss:"Pusu",innocent:"Viaton",frown:"Otsan rypistys","foot_in_mouth":"Jalka suussa",embarassed:"Nolostunut",usage:"K\u00e4yt\u00e4 vasenta ja oikeata nuolin\u00e4pp\u00e4int\u00e4 navigointiin."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/fr_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/fr_dlg.js
deleted file mode 100644
index 971cf0966..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/fr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fr.emotions_dlg',{cry:"En pleurs",cool:"Cool",desc:"\u00c9motic\u00f4nes",title:"Ins\u00e9rer une \u00e9motic\u00f4ne",yell:"Criant",wink:"Clin d\'\u0153il",undecided:"Incertain","tongue_out":"Langue tir\u00e9e",surprised:"Surpris",smile:"Sourire",sealed:"Bouche cousue","money_mouth":"Avare",laughing:"Rigolant",kiss:"Bisou",innocent:"Innocent",frown:"D\u00e9\u00e7u","foot_in_mouth":"Pied de nez",embarassed:"Embarrass\u00e9",usage:"Utilisez les fl\u00e8ches gauche et droite pour naviguer."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/gl_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/gl_dlg.js
deleted file mode 100644
index 790050a70..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/gl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('gl.emotions_dlg',{cry:"Chora",cool:"Guay",desc:"Emoticones",title:"Insertar emoticon",yell:"Anoxado",wink:"Gui\u00f1o",undecided:"Indeciso","tongue_out":"Canso",surprised:"Sorprendido",smile:"Sorriso",sealed:"Selado","money_mouth":"Cartos",laughing:"Risa",kiss:"Beso",innocent:"Inocente",frown:"Triste","foot_in_mouth":"A que dixen",embarassed:"Vergo\u00f1a"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/he_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/he_dlg.js
deleted file mode 100644
index 2664cd224..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/he_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('he.emotions_dlg',{cry:"\u05d1\u05d5\u05db\u05d4",cool:"\u05de\u05d2\u05e0\u05d9\u05d1",desc:"\u05e1\u05de\u05d9\u05d9\u05dc\u05d9\u05dd",title:"\u05d4\u05d5\u05e1\u05e4\u05ea \u05e1\u05de\u05d9\u05d9\u05dc\u05d9",yell:"\u05e6\u05e2\u05e7\u05d4",wink:"\u05e7\u05e8\u05d9\u05e6\u05d4",undecided:"\u05d4\u05e1\u05e0\u05e0\u05d9","tongue_out":"\u05dc\u05e9\u05d5\u05df \u05d1\u05d7\u05d5\u05e5",surprised:"\u05de\u05d5\u05e4\u05ea\u05e2",smile:"\u05d7\u05d9\u05d5\u05da",sealed:"\u05d0\u05d8\u05d5\u05dd","money_mouth":"\u05db\u05e1\u05e3",laughing:"\u05e6\u05d5\u05d7\u05e7",kiss:"\u05e0\u05e9\u05d9\u05e7\u05d4",innocent:"\u05ea\u05de\u05d9\u05dd",frown:"\u05de\u05d6\u05e2\u05d9\u05e3 \u05d0\u05ea \u05d4\u05e4\u05d4","foot_in_mouth":"\u05e8\u05d2\u05dc \u05d1\u05e4\u05d4",embarassed:"\u05e0\u05d1\u05d5\u05da",usage:"\u05d4\u05e9\u05ea\u05de\u05e9\u05d5 \u05d1\u05d7\u05e5 \u05d9\u05de\u05d9\u05e0\u05d4 \u05d5\u05e9\u05de\u05d0\u05dc\u05d4 \u05dc\u05e0\u05d9\u05d5\u05d5\u05d8"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/hi_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/hi_dlg.js
deleted file mode 100644
index aee9ef395..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/hi_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hi.emotions_dlg',{cry:"Cry",cool:"Cool",desc:"Emotions",title:"Insert emotion",yell:"Yell",wink:"Wink",undecided:"Undecided","tongue_out":"Tongue out",surprised:"Surprised",smile:"Smile",sealed:"Sealed","money_mouth":"Money mouth",laughing:"Laughing",kiss:"Kiss",innocent:"Innocent",frown:"Frown","foot_in_mouth":"Foot in mouth",embarassed:"Embarassed"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/hr_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/hr_dlg.js
deleted file mode 100644
index d71e4a26c..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/hr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hr.emotions_dlg',{cry:"Pla\u010d",cool:"Cool",desc:"Emotikoni",title:"Umetni emotikona",yell:"Vi\u010de",wink:"Namiguje",undecided:"Neodlu\u010dan","tongue_out":"Plazi jezik",surprised:"Iznena\u0111en",smile:"Osmijeh",sealed:"\u0160uti","money_mouth":"Bogata\u0161",laughing:"Smije se",kiss:"Poljubac",innocent:"Nevina\u0161ce",frown:"Mr\u0161ti se","foot_in_mouth":"Izlanuo se",embarassed:"Srami se"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/hu_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/hu_dlg.js
deleted file mode 100644
index b48285bb5..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/hu_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hu.emotions_dlg',{cry:"S\u00edr\u00f3s",cool:"Kir\u00e1ly",desc:"Hangulatjelek",title:"Hangulatjel besz\u00far\u00e1sa",yell:"\u00dcv\u00f6lt\u00e9s",wink:"Kacsint\u00e1s",undecided:"Hat\u00e1rozatlan","tongue_out":"Nyelv\u00f6lt\u00e9s",surprised:"Meglepett",smile:"Vigyor",sealed:"Lakat a sz\u00e1j\u00e1n","money_mouth":"P\u00e9nz besz\u00e9l",laughing:"Nevet\u00e9s",kiss:"Cs\u00f3k",innocent:"\u00c1rtatlan",frown:"Rosszall","foot_in_mouth":"L\u00e1b a sz\u00e1jban",embarassed:"Zavarban van",usage:"A navig\u00e1l\u00e1shoz haszn\u00e1ld a bal \u00e9s jobb oldali nyilat."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/hy_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/hy_dlg.js
deleted file mode 100644
index a43f53f8b..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/hy_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hy.emotions_dlg',{cry:"Cry",cool:"Cool",desc:"\u054d\u0574\u0561\u0575\u056c\u056b\u056f\u0576\u0565\u0580",title:"\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c \u057d\u0574\u0561\u0575\u056c\u056b\u056f",yell:"Yell",wink:"Wink",undecided:"Undecided","tongue_out":"Tongue out",surprised:"Surprised",smile:"Smile",sealed:"Sealed","money_mouth":"Money mouth",laughing:"Laughing",kiss:"Kiss",innocent:"Innocent",frown:"Frown","foot_in_mouth":"Foot in mouth",embarassed:"Embarassed"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/id_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/id_dlg.js
deleted file mode 100644
index 72270f404..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/id_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('id.emotions_dlg',{cry:"Cry",cool:"Cool",desc:"Emotions",title:"sisipkan emotion",yell:"Yell",wink:"Wink",undecided:"Undecided","tongue_out":"Tongue out",surprised:"Surprised",smile:"Smile",sealed:"Sealed","money_mouth":"Money mouth",laughing:"Laughing",kiss:"Kiss",innocent:"Innocent",frown:"Frown","foot_in_mouth":"Foot in mouth",embarassed:"Embarassed"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/is_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/is_dlg.js
deleted file mode 100644
index e47753cd2..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/is_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('is.emotions_dlg',{cry:"Gr\u00e1tandi",cool:"T\u00f6ff",desc:"Broskarlar",title:"Setja inn broskall",yell:"\u00d6skrandi",wink:"Blikk",undecided:"\u00d3\u00e1kve\u00f0inn","tongue_out":"Tungan \u00fat",surprised:"Hissa",smile:"Bros",sealed:"Rennil\u00e1samunnur","money_mouth":"Peningamunnur",laughing:"Hl\u00e6gjandi",kiss:"Koss",innocent:"Saklaus",frown:"Frown","foot_in_mouth":"F\u00f3tur \u00ed munni",embarassed:"Skammast s\u00edn"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/it_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/it_dlg.js
deleted file mode 100644
index 06998660a..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/it_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('it.emotions_dlg',{cry:"Piango",cool:"Fico",desc:"Faccina",title:"Inserisci faccina",yell:"Arrabbiato",wink:"Occhiolino",undecided:"Indeciso","tongue_out":"Linguaccia",surprised:"Sorpreso",smile:"Sorridente",sealed:"Bocca sigillata","money_mouth":"Bocca danarosa",laughing:"Risatona",kiss:"Bacio",innocent:"Santarellino",frown:"Triste","foot_in_mouth":"Piede in bocca",embarassed:"Imbarazzato",usage:"Utilizza le freccie sinistra e destra per navigare."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/ja_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/ja_dlg.js
deleted file mode 100644
index 7ff287f39..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/ja_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ja.emotions_dlg',{cry:"\u6ce3\u304d\u9854",cool:"\u30af\u30fc\u30eb",desc:"\u8868\u60c5\u30a2\u30a4\u30b3\u30f3",title:"\u8868\u60c5\u30a2\u30a4\u30b3\u30f3\u306e\u633f\u5165",yell:"\u30a8\u30fc\u30eb",wink:"\u30a6\u30a3\u30f3\u30af",undecided:"\u672a\u6c7a\u5b9a","tongue_out":"\u30a2\u30c3\u30ab\u30f3\u30d9\u30fc",surprised:"\u9a5a\u304d",smile:"\u7b11\u9854",sealed:"\u5c01\u5370","money_mouth":"\u53e3\u306b\u304a\u91d1",laughing:"\u7b11\u3044",kiss:"\u30ad\u30b9",innocent:"\u7d14\u771f\u7121\u57a2",frown:"\u6e0b\u9762","foot_in_mouth":"\u53e3\u306b\u8db3",embarassed:"\u56f0\u60d1",usage:"\u5de6\u3068\u53f3\u306e\u30ab\u30fc\u30bd\u30eb\u30ad\u30fc\u3067\u79fb\u52d5\u3057\u3066\u304f\u3060\u3055\u3044\u3002"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/ka_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/ka_dlg.js
deleted file mode 100644
index a2b76b378..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/ka_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ka.emotions_dlg',{cry:"\u10d5\u10e2\u10d8\u10e0\u10d8\u10d5\u10d0\u10e0",cool:"\u10db\u10d0\u10d2\u10d0\u10e0\u10d8\u10d0!",desc:"\u10e1\u10db\u10d0\u10d8\u10da\u10d4\u10d1\u10d8",title:"\u10e1\u10db\u10d0\u10d8\u10da\u10d8\u10e1 \u10d0\u10e0\u10e9\u10d4\u10d5\u10d0",yell:"\u10d5\u10e7\u10d5\u10d8\u10e0\u10d8\u10d5\u10d0\u10e0",wink:"\u10d7\u10d5\u10d0\u10da\u10e1 \u10d2\u10d8\u10de\u10d0\u10ed\u10e3\u10dc\u10d4\u10d1",undecided:"\u10d5\u10d4\u10e0 \u10d2\u10d0\u10d3\u10d0\u10d5\u10ec\u10e7\u10d5\u10d8\u10e2\u10d4","tongue_out":"\u10d4\u10dc\u10d0\u10e1 \u10d2\u10d8\u10e7\u10dd\u10e4",surprised:"\u10d2\u10d0\u10db\u10d8\u10d9\u10d5\u10d8\u10e0\u10d3\u10d0",smile:"\u10d5\u10d8\u10e6\u10d8\u10db\u10d8",sealed:"\u10e1\u10d0\u10d8\u10d3\u10e3\u10db\u10da\u10dd \u10e9\u10d4\u10db\u10d7\u10d0\u10dc \u10d4\u10e0\u10d7\u10d0\u10d3 \u10db\u10dd\u10d9\u10d5\u10d3\u10d4\u10d1\u10d0","money_mouth":"\u10e4\u10e3\u10da\u10d8! \u10e4\u10e3\u10da\u10d8!",laughing:"\u10d2\u10e0\u10d4\u10e9\u10d8\u10ee\u10d0 \u10db\u10d0\u10d8\u10dc\u10ea \u10e0\u10d0 \u10d3\u10d4\u10d1\u10d8\u10da\u10d8\u10d0!",kiss:"\u10d2\u10d9\u10dd\u10ea\u10dc\u10d8",innocent:"\u10e3\u10db\u10d0\u10dc\u10d9\u10dd \u10d5\u10d0\u10e0",frown:"\u10d5\u10d8\u10e6\u10e0\u10e3\u10d1\u10da\u10d4\u10d1\u10d8","foot_in_mouth":"\u10e2\u10e4\u10e3\u10d8",embarassed:"\u10d2\u10d0\u10d5\u10ec\u10d8\u10d7\u10da\u10d3\u10d8"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/ko_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/ko_dlg.js
deleted file mode 100644
index ac481fcfd..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/ko_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ko.emotions_dlg',{cry:"\uc6b8\uc74c",cool:"\ucfe8\ud568",desc:"\uc774\ubaa8\ud2f0\ucf58",title:"\uc774\ubaa8\ud2f0\ucf58 \uc0bd\uc785",yell:"\uace0\ud568",wink:"\uc719\ud06c",undecided:"\uace0\ubbfc","tongue_out":"\uba54\ub871",surprised:"\ub180\ub78c",smile:"\ubbf8\uc18c",sealed:"\ubd09\uc778","money_mouth":"\ub3c8",laughing:"\uc6c3\uc74c",kiss:"\ud0a4\uc2a4",innocent:"\uc21c\uc9c4",frown:"\ucc21\uadf8\ub9b0 \uc5bc\uad74","foot_in_mouth":"\uc2e4\uc5b8",embarassed:"\ubd80\ub044\ub7ec\uc6c0",usage:"\uc88c\uc6b0 \ud654\uc0b4\ud45c\ub97c \uc0ac\uc6a9\ud574 \uc120\ud0dd\ud558\uc2e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/lt_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/lt_dlg.js
deleted file mode 100644
index d1d4006ea..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/lt_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('lt.emotions_dlg',{cry:"Verksmas",cool:"J\u0117ga",desc:"Jaustukai",title:"\u012eterpti jaustuk\u0105",yell:"Klyksmas",wink:"Mirk\u010diojimas",undecided:"Neapsisprend\u0119s","tongue_out":"I\u0161ki\u0161tas lie\u017euvis",surprised:"Nusteb\u0119s",smile:"\u0160ypsena",sealed:"Sandarus","money_mouth":"Piniginga burna",laughing:"Juokimasis",kiss:"Bu\u010dinys",innocent:"Nekaltas",frown:"Susirauk\u0119s","foot_in_mouth":"Koja burnoje",embarassed:"Susig\u0117d\u0119s",usage:"Naudokite kair\u0117s ir de\u0161in\u0117s rodykles norint nar\u0161yti."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/lv_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/lv_dlg.js
deleted file mode 100644
index dbd57d1fa..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/lv_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('lv.emotions_dlg',{cry:"Raudul\u012bgais",cool:"V\u0113sais",desc:"Smaidi\u0146i",title:"Ievietot smaidi\u0146u",yell:"Kliedzo\u0161s",wink:"Aci miedzo\u0161s",undecided:"Neizl\u0113m\u012bgs","tongue_out":"M\u0113d\u012bgs",surprised:"P\u0101rsteigts",smile:"Smaid\u012bgs",sealed:"Nosl\u0113gts","money_mouth":"Naudmutis",laughing:"Smejo\u0161s",kiss:"Sk\u016bpsts",innocent:"Nevain\u012bgs",frown:"Satraukts","foot_in_mouth":"K\u0101jmutis",embarassed:"Nokautr\u0113jies",usage:"Izmantojiet kreis\u0101s un lab\u0101s puses r\u0101d\u012bt\u0101jus, ja v\u0113laties p\u0101rl\u016bkot"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/mk_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/mk_dlg.js
deleted file mode 100644
index 52fce732c..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/mk_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('mk.emotions_dlg',{cry:"\u041f\u043b\u0430\u0447\u0435\u045a\u0435",cool:"\u0424\u0440\u0430\u0435\u0440",desc:"\u0415\u043c\u043e\u0446\u0438\u0438",title:"\u0412\u043c\u0435\u0442\u043d\u0438 \u0435\u043c\u043e\u0446\u0438\u0438",yell:"\u0412\u0438\u043a\u0430\u045a\u0435",wink:"\u041d\u0430\u043c\u0438\u0433\u043d\u0443\u0432\u0430\u045a\u0435",undecided:"\u041d\u0435\u043e\u0434\u043b\u0443\u0447\u0435\u043d","tongue_out":"\u041f\u043b\u0430\u0437\u0435\u045a\u0435",surprised:"Iznena\u0111en",smile:"\u041e\u0441\u043c\u0435\u0445",sealed:"\u040c\u0443\u0442\u0435\u045a\u0435","money_mouth":"\u0423\u0441\u0442\u0430 \u0441\u043e \u043f\u0430\u0440\u0438",laughing:"\u0421\u043c\u0435\u0435\u045a\u0435",kiss:"\u0411\u0430\u043b\u043d\u0435\u0436",innocent:"\u041d\u0435\u0432\u0438\u043d\u0430\u0448\u0447\u0435",frown:"\u0421\u0435 \u043c\u0443\u0440\u0442\u0438","foot_in_mouth":"\u0425\u0440\u0430\u043d\u0430 \u0432\u043e \u0443\u0441\u0442\u0430",embarassed:"\u0417\u0430\u0441\u0440\u0430\u043c\u0435\u043d",usage:"\u041a\u043e\u0440\u0438\u0441\u0442\u0435\u0442\u0435 \u043b\u0435\u0432\u0430 \u0438 \u0434\u0435\u0441\u043d\u0430 \u0441\u0442\u0440\u0435\u043b\u043a\u0430 \u0437\u0430 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0458\u0430"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/ms_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/ms_dlg.js
deleted file mode 100644
index fd03f6aef..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/ms_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ms.emotions_dlg',{cry:"Menangis",cool:"Tampan",desc:"Simbol Emosi",title:"Masukkan emosi",yell:"Menguap",wink:"Kenyit",undecided:"Tak pasti","tongue_out":"Jelir lidah",surprised:"Terkejut",smile:"Senyum",sealed:"Kacip","money_mouth":"Duit mulut",laughing:"Gelak",kiss:"Cium",innocent:"Tidak bersalah",frown:"Mengerut","foot_in_mouth":"Kaki dalam mulut",embarassed:"Malu"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/nb_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/nb_dlg.js
deleted file mode 100644
index 24757d24a..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/nb_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nb.emotions_dlg',{cry:"Gr\u00e5ter",cool:"Kul",desc:"Hum\u00f8rfjes",title:"Sett inn hum\u00f8rfjes",yell:"Rope",wink:"Blunke",undecided:"Skeptisk","tongue_out":"Rekke tunge",surprised:"Overrasket",smile:"Smile",sealed:"Hemmelig","money_mouth":"Penger i munnen",laughing:"Ler",kiss:"Kyss",innocent:"Uskyldig",frown:"Skuffet","foot_in_mouth":"Fot i munnen",embarassed:"Flau",usage:"Bruk venstre og h\u00f8yre piltast for \u00e5 navigere."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/nl_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/nl_dlg.js
deleted file mode 100644
index 0e7d7babb..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/nl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nl.emotions_dlg',{cry:"Huilen",cool:"Stoer",desc:"Emoties",title:"Emotie invoegen",yell:"Roepen",wink:"Knipogen",undecided:"Onbeslist","tongue_out":"Tong uitsteken",surprised:"Verrast",smile:"Lachen",sealed:"Afgesloten","money_mouth":"Hebberig",laughing:"Lachen",kiss:"Zoenen",innocent:"Onschuldig",frown:"Wenkbrauw ophalen","foot_in_mouth":"Verstomd",embarassed:"Schamen",usage:"Gebruik linker en rechter pijltjestoetsen om te navigeren."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/nn_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/nn_dlg.js
deleted file mode 100644
index 17ad594c9..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/nn_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nn.emotions_dlg',{cry:"Gret",cool:"Cool",desc:"Hum\u00f8rfjes",title:"Set inn hum\u00f8rfjes",yell:"Skri",wink:"Blunke",undecided:"Skeptisk","tongue_out":"Rekkje tunge",surprised:"Overraska",smile:"Glad",sealed:"Hemmeleg","money_mouth":"Pengar i munnen",laughing:"Ler",kiss:"Kyss",innocent:"Uskyldig",frown:"Skuffa","foot_in_mouth":"Fot i munnen",embarassed:"Flau",usage:"Bruk venstre og h\u00f8gre piltast for \u00e5 navigere"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/pl_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/pl_dlg.js
deleted file mode 100644
index 4e676926b..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/pl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('pl.emotions_dlg',{cry:"P\u0142acz",cool:"Wyluzowany",desc:"Emotikony",title:"Wstaw emotikon\u0119",yell:"Krzyk",wink:"Mrugni\u0119cie",undecided:"Niezdecydowany","tongue_out":"Wystawiony j\u0119zyk",surprised:"Zaskoczony",smile:"U\u015bmiech",sealed:"Zaklepany","money_mouth":"Zaanga\u017cowany",laughing:"\u015amiech",kiss:"Poca\u0142unek",innocent:"Niewinny",frown:"Dezaprobata","foot_in_mouth":"Niewyparzona g\u0119ba",embarassed:"Zmieszany",usage:"U\u017cywaj strza\u0142ek w lewo i w prawo do nawigacji."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/ps_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/ps_dlg.js
deleted file mode 100644
index f8340f3d2..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/ps_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ps.emotions_dlg',{cry:"Cry",cool:"Cool",desc:"Emotions",title:"Insert emotion",yell:"Yell",wink:"Wink",undecided:"Undecided","tongue_out":"Tongue out",surprised:"Surprised",smile:"Smile",sealed:"Sealed","money_mouth":"Money mouth",laughing:"Laughing",kiss:"Kiss",innocent:"Innocent",frown:"Frown","foot_in_mouth":"Foot in mouth",embarassed:"Embarassed"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/pt_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/pt_dlg.js
deleted file mode 100644
index 220959478..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/pt_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('pt.emotions_dlg',{cry:"Chor\u00e3o",cool:"Fixe",desc:"Emoticons",title:"Inserir emoticon",yell:"Irado",wink:"Piscadela",undecided:"Indeciso","tongue_out":"L\u00edngua de fora",surprised:"Surpresa",smile:"Sorriso",sealed:"Boca Fechada","money_mouth":"Avarez",laughing:"Riso",kiss:"Beijo",innocent:"Inocente",frown:"Decep\u00e7\u00e3o","foot_in_mouth":"Disse asneira",embarassed:"Embara\u00e7ado",usage:"Use as setas esquerda e direita para navegar."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/ro_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/ro_dlg.js
deleted file mode 100644
index ca0aa34bb..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/ro_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ro.emotions_dlg',{cry:"Trist",cool:"Cool",desc:"Figurine emotive",title:"Insereaz\u0103 o figurin\u0103",yell:"\u021aip\u0103",wink:"Face cu ochiul",undecided:"Indecis","tongue_out":"Cu limba afar\u0103",surprised:"Surprins",smile:"Z\u00e2mbet",sealed:"Sigilat","money_mouth":"Bani \u00een gur\u0103",laughing:"R\u00e2de",kiss:"Pupic",innocent:"Nevinovat",frown:"\u00cencruntat","foot_in_mouth":"Picior \u00een gur\u0103",embarassed:"Ru\u015finat",usage:"Folose\u0219te s\u0103ge\u021bile st\u00e2nga \u0219i dreapta pentru navigare."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/ru_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/ru_dlg.js
deleted file mode 100644
index be9f3bca9..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/ru_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ru.emotions_dlg',{cry:"\u041f\u043b\u0430\u0447\u0443",cool:"\u041a\u0440\u0443\u0442\u043e\u0439",desc:"\u0421\u043c\u0430\u0439\u043b\u044b",title:"\u0412\u044b\u0431\u043e\u0440 \u0441\u043c\u0430\u0439\u043b\u0430",yell:"\u041a\u0440\u0438\u0447\u0443",wink:"\u041f\u043e\u0434\u043c\u0438\u0433\u0438\u0432\u0430\u044e",undecided:"\u0412 \u043d\u0435\u0440\u0435\u0448\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438","tongue_out":"\u0414\u0440\u0430\u0437\u043d\u044e\u0441\u044c",surprised:"\u0423\u0434\u0438\u0432\u043b\u044f\u044e\u0441\u044c",smile:"\u0423\u043b\u044b\u0431\u0430\u044e\u0441\u044c",sealed:"\u041d\u0435\u043c \u043a\u0430\u043a \u0440\u044b\u0431\u0430","money_mouth":"\u0414\u0435\u043d\u044c\u0433\u0438",laughing:"\u0421\u043c\u0435\u044e\u0441\u044c",kiss:"\u041f\u043e\u0446\u0435\u043b\u0443\u0439",innocent:"\u0410\u043d\u0433\u0435\u043b",frown:"\u0425\u043c\u0443\u0440\u044e\u0441\u044c","foot_in_mouth":"\u0412 \u0440\u043e\u0442 \u043c\u043d\u0435 \u043d\u043e\u0433\u0438",embarassed:"\u041a\u0440\u0430\u0441\u043d\u0435\u044e",usage:"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0438 \"\u0412\u043b\u0435\u0432\u043e\" \u0438 \"\u0412\u043f\u0440\u0430\u0432\u043e\" \u0434\u043b\u044f \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/si_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/si_dlg.js
deleted file mode 100644
index cc41b2555..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/si_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('si.emotions_dlg',{cry:"Cry",cool:"Cool",desc:"Emotions",title:"Insert emotion",yell:"Yell",wink:"Wink",undecided:"Undecided","tongue_out":"Tongue out",surprised:"Surprised",smile:"Smile",sealed:"Sealed","money_mouth":"Money mouth",laughing:"Laughing",kiss:"Kiss",innocent:"Innocent",frown:"Frown","foot_in_mouth":"Foot in mouth",embarassed:"Embarassed"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/sk_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/sk_dlg.js
deleted file mode 100644
index 34187f357..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/sk_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sk.emotions_dlg',{cry:"Pla\u010d\u00faci",cool:"\u00da\u017easn\u00fd",desc:"Emotikony",title:"Vlo\u017ei\u0165 emotikonu",yell:"Kri\u010diaci",wink:"\u017dmurkaj\u00faci",undecided:"Nerozhodn\u00fd","tongue_out":"S vyplazen\u00fdm jazykom",surprised:"Prekvapen\u00fd",smile:"Usmiaty",sealed:"Ml\u010diaci","money_mouth":"Je na prachy",laughing:"Smej\u00faci sa",kiss:"Bozkaj\u00faci",innocent:"Nevinn\u00fd",frown:"Zamra\u010den\u00fd","foot_in_mouth":"\u0160liapol ved\u013ea",embarassed:"Zahanben\u00fd",usage:"Pou\u017eite \u0161\u00edpky vpravo a v\u013eavo"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/sl_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/sl_dlg.js
deleted file mode 100644
index 17879d28d..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/sl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sl.emotions_dlg',{cry:"jok",cool:"kul",desc:"Sme\u0161ki",title:"Vstavi sme\u0161ka",yell:"krik",wink:"me\u017eik",undecided:"neodlo\u010den","tongue_out":"ka\u017ee jezik",surprised:"presene\u010den",smile:"nasmeh",sealed:"zape\u010dateno","money_mouth":"zlati kljun",laughing:"smeh",kiss:"poljub",innocent:"nedol\u017een",frown:"nagubano \u010delo","foot_in_mouth":"zare\u010deni kruh",embarassed:"v zadregi",usage:"Za navigacijo uporabite tipki levo in desno"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/sq_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/sq_dlg.js
deleted file mode 100644
index 5156819cf..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/sq_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sq.emotions_dlg',{cry:"Qaj",cool:"I/e lezetsh\u00ebm",desc:"Emocionet",title:"Fut emocion",yell:"B\u00ebrtit",wink:"Shkel syrin",undecided:"I/e pavendosur","tongue_out":"Gjuha jasht\u00eb",surprised:"I/e \u00e7uditur",smile:"Buz\u00ebqesh",sealed:"Dh\u00ebmb\u00ebt e mbyllur","money_mouth":"Lek\u00eb n\u00eb goj\u00eb",laughing:"Qesh",kiss:"Puth",innocent:"I/e pafajsh\u00ebm",frown:"Rrudh vetullat","foot_in_mouth":"K\u00ebmba n\u00eb goj\u00eb",embarassed:"Turp",usage:"P\u00ebrdorni butonat majtas dhe djathtas p\u00ebr navigim"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/sr_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/sr_dlg.js
deleted file mode 100644
index 4fa96ec5c..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/sr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sr.emotions_dlg',{cry:"Pla\u010de",cool:"Kul",desc:"Smajli",title:"Umetni smajli",yell:"Vi\u010de",wink:"Namiguje",undecided:"Neodlu\u010dan","tongue_out":"Plazi se",surprised:"Iznena\u0111en",smile:"Osmehuje se",sealed:"\u0106uti kao zaliven","money_mouth":"Bogata\u0161",laughing:"Smeje se",kiss:"\u0160alje poljubac",innocent:"Nevina\u0161ce",frown:"Namr\u0161ten","foot_in_mouth":"Izletelo mu...",embarassed:"Posti\u0111en"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/sv_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/sv_dlg.js
deleted file mode 100644
index c36ebee3d..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/sv_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sv.emotions_dlg',{cry:"Gr\u00e5ter",cool:"Cool",desc:"Smileys",title:"Infoga smiley",yell:"Skrikandes",wink:"Fl\u00f6rt",undecided:"Obest\u00e4md","tongue_out":"Tungan ute",surprised:"F\u00f6rv\u00e5nad",smile:"Glad",sealed:"Tyst","money_mouth":"Guld i mun",laughing:"Skrattande",kiss:"Kyss",innocent:"Oskyldig",frown:"Rynkar p\u00e5 n\u00e4san","foot_in_mouth":"Foten i munnen",embarassed:"Sk\u00e4ms",usage:"Anv\u00e4nd v\u00e4nster och h\u00f6ger pil f\u00f6r att navigera"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/ta_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/ta_dlg.js
deleted file mode 100644
index 1842bb1e2..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/ta_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ta.emotions_dlg',{cry:"Cry",cool:"Cool",desc:"Emotions",title:"Insert emotion",yell:"Yell",wink:"Wink",undecided:"Undecided","tongue_out":"Tongue out",surprised:"Surprised",smile:"Smile",sealed:"Sealed","money_mouth":"Money mouth",laughing:"Laughing",kiss:"Kiss",innocent:"Innocent",frown:"Frown","foot_in_mouth":"Foot in mouth",embarassed:"Embarassed"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/th_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/th_dlg.js
deleted file mode 100644
index 6039d65d7..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/th_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('th.emotions_dlg',{cry:"\u0e23\u0e49\u0e2d\u0e07\u0e44\u0e2b\u0e49",cool:"\u0e40\u0e08\u0e4b\u0e07",desc:"\u0e44\u0e2d\u0e04\u0e2d\u0e19\u0e41\u0e2a\u0e14\u0e07\u0e2d\u0e32\u0e23\u0e21\u0e13\u0e4c",title:"\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e44\u0e2d\u0e04\u0e2d\u0e19\u0e41\u0e2a\u0e14\u0e07\u0e2d\u0e32\u0e23\u0e21\u0e13\u0e4c",yell:"\u0e42\u0e27\u0e22\u0e27\u0e32\u0e22",wink:"\u0e02\u0e22\u0e34\u0e1a\u0e15\u0e32",undecided:"\u0e25\u0e31\u0e07\u0e40\u0e25","tongue_out":"\u0e41\u0e25\u0e1a\u0e25\u0e34\u0e49\u0e19",surprised:"\u0e1b\u0e23\u0e30\u0e2b\u0e25\u0e32\u0e14\u0e43\u0e08",smile:"Smile",sealed:"\u0e1b\u0e34\u0e14\u0e1b\u0e32\u0e01","money_mouth":"\u0e40\u0e07\u0e34\u0e19\u0e46\u0e46\u0e46",laughing:"\u0e2b\u0e31\u0e27\u0e40\u0e23\u0e32\u0e30",kiss:"\u0e08\u0e39\u0e1a",innocent:"\u0e44\u0e23\u0e49\u0e40\u0e14\u0e35\u0e22\u0e07\u0e2a\u0e32",frown:"\u0e1a\u0e36\u0e49\u0e07\u0e15\u0e36\u0e07","foot_in_mouth":"\u0e1b\u0e34\u0e14\u0e1b\u0e32\u0e01",embarassed:"\u0e2d\u0e32\u0e22",usage:"\u0e43\u0e0a\u0e49\u0e25\u0e39\u0e01\u0e28\u0e23\u0e0b\u0e49\u0e32\u0e22\u0e41\u0e25\u0e30\u0e02\u0e27\u0e32\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e19\u0e33\u0e17\u0e32\u0e07"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/tr_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/tr_dlg.js
deleted file mode 100644
index 27491734e..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/tr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('tr.emotions_dlg',{cry:"A\u011flayan",cool:"Sakin",desc:"\u0130fadeler",title:"\u0130fade ekle",yell:"Ba\u011f\u0131rma",wink:"G\u00f6z k\u0131rpma",undecided:"Karars\u0131z","tongue_out":"Dil \u00e7\u0131karma",surprised:"\u015ea\u015f\u0131rma",smile:"G\u00fcl\u00fcmseme",sealed:"Gizli","money_mouth":"Para g\u00f6z",laughing:"Kahkaha",kiss:"\u00d6p\u00fcc\u00fck",innocent:"Masum",frown:"As\u0131k","foot_in_mouth":"Pot k\u0131rm\u0131\u015f",embarassed:"Utanga\u00e7",usage:"Gezinmek i\u00e7in sa\u011f ve sol oklar\u0131 kullan\u0131n."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/uk_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/uk_dlg.js
deleted file mode 100644
index 8798e9eca..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/uk_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('uk.emotions_dlg',{cry:"\u041f\u043b\u0430\u0447",cool:"Cool",desc:"\u041f\u043e\u0441\u043c\u0456\u0448\u043a\u0438",title:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u043f\u043e\u0441\u043c\u0456\u0448\u043a\u0443",yell:"\u0417\u043e\u0439\u043a",wink:"\u041f\u0456\u0434\u043c\u043e\u0440\u0433\u0443\u0454",undecided:"\u041d\u0435\u0440\u0456\u0448\u0443\u0447\u0456\u0441\u0442\u044c","tongue_out":"\u041f\u043e\u043a\u0430\u0437\u0443\u0454 \u044f\u0437\u0438\u043a\u0430",surprised:"\u0417\u0434\u0438\u0432\u043e\u0432\u0430\u043d\u0456\u0441\u0442\u044c",smile:"\u041f\u043e\u0441\u043c\u0456\u0448\u043a\u0430",sealed:"Sealed","money_mouth":"\u0413\u0440\u043e\u0449\u0456 \u0432 \u0440\u043e\u0442\u0456",laughing:"\u0421\u043c\u0456\u0445",kiss:"\u041f\u043e\u0446\u0456\u043b\u0443\u043d\u043e\u043a",innocent:"\u041d\u0435\u0432\u0438\u043d\u043d\u0456\u0441\u0442\u044c",frown:"\u041d\u0430\u0441\u0443\u043f\u043b\u0435\u043d\u043d\u0456\u0441\u0442\u044c","foot_in_mouth":"\u041d\u043e\u0433\u0430 \u0432 \u0440\u043e\u0442\u0456",embarassed:"\u0417\u0431\u0435\u043d\u0442\u0435\u0436\u0435\u043d\u043d\u044f",usage:"\u0412\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0439\u0442\u0435 \u0441\u0442\u0440\u0456\u043b\u043a\u0438 \u0432\u043b\u0456\u0432\u043e \u0442\u0430 \u0432\u043f\u0440\u0430\u0432\u043e \u0434\u043b\u044f \u043d\u0430\u0432\u0456\u0433\u0430\u0446\u0456\u0457"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/vi_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/vi_dlg.js
deleted file mode 100644
index b77323ca7..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/vi_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('vi.emotions_dlg',{cry:"Kh\u00f3c",cool:"Kh\u00f4ng bi\u1ebft ng\u01b0\u1ee3ng",desc:"Bi\u1ec3u T\u01b0\u1ee3ng C\u1ea3m X\u00fac",title:"Bi\u1ec3u T\u01b0\u1ee3ng C\u1ea3m X\u00fac",yell:"La h\u00e9t",wink:"Nh\u00e1y m\u1eaft",undecided:"L\u01b0\u1ee1ng l\u1ef1","tongue_out":"L\u00e8 l\u01b0\u1ee1i",surprised:"Ng\u1ea1c nhi\u00ean",smile:"M\u1ec9m c\u01b0\u1eddi",sealed:"K\u00edn mi\u1ec7ng","money_mouth":"S\u00e1ng m\u1eaft v\u00ec $",laughing:"C\u01b0\u1eddi nh\u0103n r\u0103ng",kiss:"N\u1ee5 h\u00f4n",innocent:"Ng\u00e2y th\u01a1",frown:"Cau m\u00e0y","foot_in_mouth":"L\u1ee1 l\u1eddi",embarassed:"X\u1ea5u h\u1ed5"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/zh-cn_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/zh-cn_dlg.js
deleted file mode 100644
index 1dece2ce2..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/zh-cn_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('zh-cn.emotions_dlg',{cry:"\u54ed",cool:"\u9177",desc:"\u8868\u60c5",title:"\u63d2\u5165\u8868\u60c5",yell:"\u53eb\u558a",wink:"\u7728\u773c",undecided:"\u72b9\u8c6b","tongue_out":"\u5410\u820c\u5934",surprised:"\u60ca\u8bb6",smile:"\u5fae\u7b11",sealed:"\u4fdd\u5bc6","money_mouth":"\u53d1\u8d22",laughing:"\u5927\u7b11",kiss:"\u543b",innocent:"\u5929\u771f",frown:"\u76b1\u7709","foot_in_mouth":"\u8822\u8bdd",embarassed:"\u5c34\u5c2c"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/langs/zh-tw_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/zh-tw_dlg.js
deleted file mode 100644
index 4b670b0f7..000000000
--- a/program/js/tiny_mce/plugins/emotions/langs/zh-tw_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('zh-tw.emotions_dlg',{cry:"\u597d\u60f3\u54ed",cool:"\u9177\u554a\uff01",desc:"\u8868\u60c5",title:"\u4f7f\u7528\u8868\u60c5\u7b26\u865f",yell:"\u554a\u554a\u554a\u554a\uff01",wink:"Wink\uff01",undecided:"\u597d\u7336\u8c6b","tongue_out":"\u5566~",surprised:"\u7d66\u4f60\u4e00\u500b\u9a5a\u559c\uff01",smile:"\u5fae\u7b11",sealed:"(\u4e0d\u80fd\u8aaa)","money_mouth":"\u9322\u9322\u9322",laughing:"\u54c8\u54c8",kiss:"\u89aa\u4e00\u500b",innocent:"\u88dd\u7121\u8f9c",frown:"\u7709\u982d\u6df1\u9396","foot_in_mouth":"\u5931\u8a00",embarassed:"\u597d\u5c37\u5c2c\u2026"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/example/dialog.htm b/program/js/tiny_mce/plugins/example/dialog.htm
deleted file mode 100644
index 50b2b3445..000000000
--- a/program/js/tiny_mce/plugins/example/dialog.htm
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#example_dlg.title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="js/dialog.js"></script>
-</head>
-<body>
-
-<form onsubmit="ExampleDialog.insert();return false;" action="#">
- <p>Here is a example dialog.</p>
- <p>Selected text: <input id="someval" name="someval" type="text" class="text" /></p>
- <p>Custom arg: <input id="somearg" name="somearg" type="text" class="text" /></p>
-
- <div class="mceActionPanel">
- <input type="button" id="insert" name="insert" value="{#insert}" onclick="ExampleDialog.insert();" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
-</form>
-
-</body>
-</html>
diff --git a/program/js/tiny_mce/plugins/example/editor_plugin.js b/program/js/tiny_mce/plugins/example/editor_plugin.js
deleted file mode 100644
index ec1f81ea4..000000000
--- a/program/js/tiny_mce/plugins/example/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.PluginManager.requireLangPack("example");tinymce.create("tinymce.plugins.ExamplePlugin",{init:function(a,b){a.addCommand("mceExample",function(){a.windowManager.open({file:b+"/dialog.htm",width:320+parseInt(a.getLang("example.delta_width",0)),height:120+parseInt(a.getLang("example.delta_height",0)),inline:1},{plugin_url:b,some_custom_arg:"custom arg"})});a.addButton("example",{title:"example.desc",cmd:"mceExample",image:b+"/img/example.gif"});a.onNodeChange.add(function(d,c,e){c.setActive("example",e.nodeName=="IMG")})},createControl:function(b,a){return null},getInfo:function(){return{longname:"Example plugin",author:"Some author",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/example",version:"1.0"}}});tinymce.PluginManager.add("example",tinymce.plugins.ExamplePlugin)})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/example/editor_plugin_src.js b/program/js/tiny_mce/plugins/example/editor_plugin_src.js
deleted file mode 100644
index 0a259471d..000000000
--- a/program/js/tiny_mce/plugins/example/editor_plugin_src.js
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- // Load plugin specific language pack
- tinymce.PluginManager.requireLangPack('example');
-
- tinymce.create('tinymce.plugins.ExamplePlugin', {
- /**
- * Initializes the plugin, this will be executed after the plugin has been created.
- * This call is done before the editor instance has finished it's initialization so use the onInit event
- * of the editor instance to intercept that event.
- *
- * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.
- * @param {string} url Absolute URL to where the plugin is located.
- */
- init : function(ed, url) {
- // Register the command so that it can be invoked by using tinyMCE.activeEditor.execCommand('mceExample');
- ed.addCommand('mceExample', function() {
- ed.windowManager.open({
- file : url + '/dialog.htm',
- width : 320 + parseInt(ed.getLang('example.delta_width', 0)),
- height : 120 + parseInt(ed.getLang('example.delta_height', 0)),
- inline : 1
- }, {
- plugin_url : url, // Plugin absolute URL
- some_custom_arg : 'custom arg' // Custom argument
- });
- });
-
- // Register example button
- ed.addButton('example', {
- title : 'example.desc',
- cmd : 'mceExample',
- image : url + '/img/example.gif'
- });
-
- // Add a node change handler, selects the button in the UI when a image is selected
- ed.onNodeChange.add(function(ed, cm, n) {
- cm.setActive('example', n.nodeName == 'IMG');
- });
- },
-
- /**
- * Creates control instances based in the incoming name. This method is normally not
- * needed since the addButton method of the tinymce.Editor class is a more easy way of adding buttons
- * but you sometimes need to create more complex controls like listboxes, split buttons etc then this
- * method can be used to create those.
- *
- * @param {String} n Name of the control to create.
- * @param {tinymce.ControlManager} cm Control manager to use inorder to create new control.
- * @return {tinymce.ui.Control} New control instance or null if no control was created.
- */
- createControl : function(n, cm) {
- return null;
- },
-
- /**
- * Returns information about the plugin as a name/value array.
- * The current keys are longname, author, authorurl, infourl and version.
- *
- * @return {Object} Name/value array containing information about the plugin.
- */
- getInfo : function() {
- return {
- longname : 'Example plugin',
- author : 'Some author',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/example',
- version : "1.0"
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('example', tinymce.plugins.ExamplePlugin);
-})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/example/img/example.gif b/program/js/tiny_mce/plugins/example/img/example.gif
deleted file mode 100644
index 1ab5da446..000000000
--- a/program/js/tiny_mce/plugins/example/img/example.gif
+++ /dev/null
Binary files differ
diff --git a/program/js/tiny_mce/plugins/example/js/dialog.js b/program/js/tiny_mce/plugins/example/js/dialog.js
deleted file mode 100644
index fa8341132..000000000
--- a/program/js/tiny_mce/plugins/example/js/dialog.js
+++ /dev/null
@@ -1,19 +0,0 @@
-tinyMCEPopup.requireLangPack();
-
-var ExampleDialog = {
- init : function() {
- var f = document.forms[0];
-
- // Get the selected contents as text and place it in the input
- f.someval.value = tinyMCEPopup.editor.selection.getContent({format : 'text'});
- f.somearg.value = tinyMCEPopup.getWindowArg('some_custom_arg');
- },
-
- insert : function() {
- // Insert the contents from the input into the document
- tinyMCEPopup.editor.execCommand('mceInsertContent', false, document.forms[0].someval.value);
- tinyMCEPopup.close();
- }
-};
-
-tinyMCEPopup.onInit.add(ExampleDialog.init, ExampleDialog);
diff --git a/program/js/tiny_mce/plugins/example/langs/en.js b/program/js/tiny_mce/plugins/example/langs/en.js
deleted file mode 100644
index e0784f80f..000000000
--- a/program/js/tiny_mce/plugins/example/langs/en.js
+++ /dev/null
@@ -1,3 +0,0 @@
-tinyMCE.addI18n('en.example',{
- desc : 'This is just a template button'
-});
diff --git a/program/js/tiny_mce/plugins/example/langs/en_dlg.js b/program/js/tiny_mce/plugins/example/langs/en_dlg.js
deleted file mode 100644
index ebcf948da..000000000
--- a/program/js/tiny_mce/plugins/example/langs/en_dlg.js
+++ /dev/null
@@ -1,3 +0,0 @@
-tinyMCE.addI18n('en.example_dlg',{
- title : 'This is just a example title'
-});
diff --git a/program/js/tiny_mce/plugins/example_dependency/editor_plugin.js b/program/js/tiny_mce/plugins/example_dependency/editor_plugin.js
deleted file mode 100644
index 0a4551d38..000000000
--- a/program/js/tiny_mce/plugins/example_dependency/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.ExampleDependencyPlugin",{init:function(a,b){},getInfo:function(){return{longname:"Example Dependency plugin",author:"Some author",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/example_dependency",version:"1.0"}}});tinymce.PluginManager.add("example_dependency",tinymce.plugins.ExampleDependencyPlugin,["example"])})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/example_dependency/editor_plugin_src.js b/program/js/tiny_mce/plugins/example_dependency/editor_plugin_src.js
deleted file mode 100644
index e1c55e41b..000000000
--- a/program/js/tiny_mce/plugins/example_dependency/editor_plugin_src.js
+++ /dev/null
@@ -1,50 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
-
- tinymce.create('tinymce.plugins.ExampleDependencyPlugin', {
- /**
- * Initializes the plugin, this will be executed after the plugin has been created.
- * This call is done before the editor instance has finished it's initialization so use the onInit event
- * of the editor instance to intercept that event.
- *
- * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.
- * @param {string} url Absolute URL to where the plugin is located.
- */
- init : function(ed, url) {
- },
-
-
- /**
- * Returns information about the plugin as a name/value array.
- * The current keys are longname, author, authorurl, infourl and version.
- *
- * @return {Object} Name/value array containing information about the plugin.
- */
- getInfo : function() {
- return {
- longname : 'Example Dependency plugin',
- author : 'Some author',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/example_dependency',
- version : "1.0"
- };
- }
- });
-
- /**
- * Register the plugin, specifying the list of the plugins that this plugin depends on. They are specified in a list, with the list loaded in order.
- * plugins in this list will be initialised when this plugin is initialized. (before the init method is called).
- * plugins in a depends list should typically be specified using the short name). If neccesary this can be done
- * with an object which has the url to the plugin and the shortname.
- */
- tinymce.PluginManager.add('example_dependency', tinymce.plugins.ExampleDependencyPlugin, ['example']);
-})();
diff --git a/program/js/tiny_mce/plugins/fullpage/css/fullpage.css b/program/js/tiny_mce/plugins/fullpage/css/fullpage.css
deleted file mode 100644
index 2675cec15..000000000
--- a/program/js/tiny_mce/plugins/fullpage/css/fullpage.css
+++ /dev/null
@@ -1,143 +0,0 @@
-/* Hide the advanced tab */
-#advanced_tab {
- display: none;
-}
-
-#metatitle, #metakeywords, #metadescription, #metaauthor, #metacopyright {
- width: 280px;
-}
-
-#doctype, #docencoding {
- width: 200px;
-}
-
-#langcode {
- width: 30px;
-}
-
-#bgimage {
- width: 220px;
-}
-
-#fontface {
- width: 240px;
-}
-
-#leftmargin, #rightmargin, #topmargin, #bottommargin {
- width: 50px;
-}
-
-.panel_wrapper div.current {
- height: 400px;
-}
-
-#stylesheet, #style {
- width: 240px;
-}
-
-#doctypes {
- width: 200px;
-}
-
-/* Head list classes */
-
-.headlistwrapper {
- width: 100%;
-}
-
-.selected {
- border: 1px solid #0A246A;
- background-color: #B6BDD2;
-}
-
-.toolbar {
- width: 100%;
-}
-
-#headlist {
- width: 100%;
- margin-top: 3px;
- font-size: 11px;
-}
-
-#info, #title_element, #meta_element, #script_element, #style_element, #base_element, #link_element, #comment_element, #unknown_element {
- display: none;
-}
-
-#addmenu {
- position: absolute;
- border: 1px solid gray;
- display: none;
- z-index: 100;
- background-color: white;
-}
-
-#addmenu a {
- display: block;
- width: 100%;
- line-height: 20px;
- text-decoration: none;
- background-color: white;
-}
-
-#addmenu a:hover {
- background-color: #B6BDD2;
- color: black;
-}
-
-#addmenu span {
- padding-left: 10px;
- padding-right: 10px;
-}
-
-#updateElementPanel {
- display: none;
-}
-
-#script_element .panel_wrapper div.current {
- height: 108px;
-}
-
-#style_element .panel_wrapper div.current {
- height: 108px;
-}
-
-#link_element .panel_wrapper div.current {
- height: 140px;
-}
-
-#element_script_value {
- width: 100%;
- height: 100px;
-}
-
-#element_comment_value {
- width: 100%;
- height: 120px;
-}
-
-#element_style_value {
- width: 100%;
- height: 100px;
-}
-
-#element_title, #element_script_src, #element_meta_name, #element_meta_content, #element_base_href, #element_link_href, #element_link_title {
- width: 250px;
-}
-
-.updateElementButton {
- margin-top: 3px;
-}
-
-/* MSIE specific styles */
-
-* html .addbutton, * html .removebutton, * html .moveupbutton, * html .movedownbutton {
- width: 22px;
- height: 22px;
-}
-
-textarea {
- height: 55px;
-}
-
-.panel_wrapper div.current {height:420px;} \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/editor_plugin.js b/program/js/tiny_mce/plugins/fullpage/editor_plugin.js
deleted file mode 100644
index dcf76024d..000000000
--- a/program/js/tiny_mce/plugins/fullpage/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){var b=tinymce.each,a=tinymce.html.Node;tinymce.create("tinymce.plugins.FullPagePlugin",{init:function(c,d){var e=this;e.editor=c;c.addCommand("mceFullPageProperties",function(){c.windowManager.open({file:d+"/fullpage.htm",width:430+parseInt(c.getLang("fullpage.delta_width",0)),height:495+parseInt(c.getLang("fullpage.delta_height",0)),inline:1},{plugin_url:d,data:e._htmlToData()})});c.addButton("fullpage",{title:"fullpage.desc",cmd:"mceFullPageProperties"});c.onBeforeSetContent.add(e._setContent,e);c.onGetContent.add(e._getContent,e)},getInfo:function(){return{longname:"Fullpage",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullpage",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_htmlToData:function(){var f=this._parseHeader(),h={},c,i,g,e=this.editor;function d(l,j){var k=l.attr(j);return k||""}h.fontface=e.getParam("fullpage_default_fontface","");h.fontsize=e.getParam("fullpage_default_fontsize","");i=f.firstChild;if(i.type==7){h.xml_pi=true;g=/encoding="([^"]+)"/.exec(i.value);if(g){h.docencoding=g[1]}}i=f.getAll("#doctype")[0];if(i){h.doctype="<!DOCTYPE"+i.value+">"}i=f.getAll("title")[0];if(i&&i.firstChild){h.metatitle=i.firstChild.value}b(f.getAll("meta"),function(m){var k=m.attr("name"),j=m.attr("http-equiv"),l;if(k){h["meta"+k.toLowerCase()]=m.attr("content")}else{if(j=="Content-Type"){l=/charset\s*=\s*(.*)\s*/gi.exec(m.attr("content"));if(l){h.docencoding=l[1]}}}});i=f.getAll("html")[0];if(i){h.langcode=d(i,"lang")||d(i,"xml:lang")}i=f.getAll("link")[0];if(i&&i.attr("rel")=="stylesheet"){h.stylesheet=i.attr("href")}i=f.getAll("body")[0];if(i){h.langdir=d(i,"dir");h.style=d(i,"style");h.visited_color=d(i,"vlink");h.link_color=d(i,"link");h.active_color=d(i,"alink")}return h},_dataToHtml:function(g){var f,d,h,j,k,e=this.editor.dom;function c(n,l,m){n.attr(l,m?m:undefined)}function i(l){if(d.firstChild){d.insert(l,d.firstChild)}else{d.append(l)}}f=this._parseHeader();d=f.getAll("head")[0];if(!d){j=f.getAll("html")[0];d=new a("head",1);if(j.firstChild){j.insert(d,j.firstChild,true)}else{j.append(d)}}j=f.firstChild;if(g.xml_pi){k='version="1.0"';if(g.docencoding){k+=' encoding="'+g.docencoding+'"'}if(j.type!=7){j=new a("xml",7);f.insert(j,f.firstChild,true)}j.value=k}else{if(j&&j.type==7){j.remove()}}j=f.getAll("#doctype")[0];if(g.doctype){if(!j){j=new a("#doctype",10);if(g.xml_pi){f.insert(j,f.firstChild)}else{i(j)}}j.value=g.doctype.substring(9,g.doctype.length-1)}else{if(j){j.remove()}}j=f.getAll("title")[0];if(g.metatitle){if(!j){j=new a("title",1);j.append(new a("#text",3)).value=g.metatitle;i(j)}}if(g.docencoding){j=null;b(f.getAll("meta"),function(l){if(l.attr("http-equiv")=="Content-Type"){j=l}});if(!j){j=new a("meta",1);j.attr("http-equiv","Content-Type");j.shortEnded=true;i(j)}j.attr("content","text/html; charset="+g.docencoding)}b("keywords,description,author,copyright,robots".split(","),function(m){var l=f.getAll("meta"),n,p,o=g["meta"+m];for(n=0;n<l.length;n++){p=l[n];if(p.attr("name")==m){if(o){p.attr("content",o)}else{p.remove()}return}}if(o){j=new a("meta",1);j.attr("name",m);j.attr("content",o);j.shortEnded=true;i(j)}});j=f.getAll("link")[0];if(j&&j.attr("rel")=="stylesheet"){if(g.stylesheet){j.attr("href",g.stylesheet)}else{j.remove()}}else{if(g.stylesheet){j=new a("link",1);j.attr({rel:"stylesheet",text:"text/css",href:g.stylesheet});j.shortEnded=true;i(j)}}j=f.getAll("body")[0];if(j){c(j,"dir",g.langdir);c(j,"style",g.style);c(j,"vlink",g.visited_color);c(j,"link",g.link_color);c(j,"alink",g.active_color);e.setAttribs(this.editor.getBody(),{style:g.style,dir:g.dir,vLink:g.visited_color,link:g.link_color,aLink:g.active_color})}j=f.getAll("html")[0];if(j){c(j,"lang",g.langcode);c(j,"xml:lang",g.langcode)}h=new tinymce.html.Serializer({validate:false,indent:true,apply_source_formatting:true,indent_before:"head,html,body,meta,title,script,link,style",indent_after:"head,html,body,meta,title,script,link,style"}).serialize(f);this.head=h.substring(0,h.indexOf("</body>"))},_parseHeader:function(){return new tinymce.html.DomParser({validate:false,root_name:"#document"}).parse(this.head)},_setContent:function(g,d){var m=this,i,c,h=d.content,f,l="",e=m.editor.dom,j;function k(n){return n.replace(/<\/?[A-Z]+/g,function(o){return o.toLowerCase()})}if(d.format=="raw"&&m.head){return}if(d.source_view&&g.getParam("fullpage_hide_in_source_view")){return}h=h.replace(/<(\/?)BODY/gi,"<$1body");i=h.indexOf("<body");if(i!=-1){i=h.indexOf(">",i);m.head=k(h.substring(0,i+1));c=h.indexOf("</body",i);if(c==-1){c=h.length}d.content=h.substring(i+1,c);m.foot=k(h.substring(c))}else{m.head=this._getDefaultHeader();m.foot="\n</body>\n</html>"}f=m._parseHeader();b(f.getAll("style"),function(n){if(n.firstChild){l+=n.firstChild.value}});j=f.getAll("body")[0];if(j){e.setAttribs(m.editor.getBody(),{style:j.attr("style")||"",dir:j.attr("dir")||"",vLink:j.attr("vlink")||"",link:j.attr("link")||"",aLink:j.attr("alink")||""})}e.remove("fullpage_styles");if(l){e.add(m.editor.getDoc().getElementsByTagName("head")[0],"style",{id:"fullpage_styles"},l);j=e.get("fullpage_styles");if(j.styleSheet){j.styleSheet.cssText=l}}},_getDefaultHeader:function(){var f="",c=this.editor,e,d="";if(c.getParam("fullpage_default_xml_pi")){f+='<?xml version="1.0" encoding="'+c.getParam("fullpage_default_encoding","ISO-8859-1")+'" ?>\n'}f+=c.getParam("fullpage_default_doctype",'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');f+="\n<html>\n<head>\n";if(e=c.getParam("fullpage_default_title")){f+="<title>"+e+"</title>\n"}if(e=c.getParam("fullpage_default_encoding")){f+='<meta http-equiv="Content-Type" content="text/html; charset='+e+'" />\n'}if(e=c.getParam("fullpage_default_font_family")){d+="font-family: "+e+";"}if(e=c.getParam("fullpage_default_font_size")){d+="font-size: "+e+";"}if(e=c.getParam("fullpage_default_text_color")){d+="color: "+e+";"}f+="</head>\n<body"+(d?' style="'+d+'"':"")+">\n";return f},_getContent:function(d,e){var c=this;if(!e.source_view||!d.getParam("fullpage_hide_in_source_view")){e.content=tinymce.trim(c.head)+"\n"+tinymce.trim(e.content)+"\n"+tinymce.trim(c.foot)}}});tinymce.PluginManager.add("fullpage",tinymce.plugins.FullPagePlugin)})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/editor_plugin_src.js b/program/js/tiny_mce/plugins/fullpage/editor_plugin_src.js
deleted file mode 100644
index 23de7c5a1..000000000
--- a/program/js/tiny_mce/plugins/fullpage/editor_plugin_src.js
+++ /dev/null
@@ -1,405 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- var each = tinymce.each, Node = tinymce.html.Node;
-
- tinymce.create('tinymce.plugins.FullPagePlugin', {
- init : function(ed, url) {
- var t = this;
-
- t.editor = ed;
-
- // Register commands
- ed.addCommand('mceFullPageProperties', function() {
- ed.windowManager.open({
- file : url + '/fullpage.htm',
- width : 430 + parseInt(ed.getLang('fullpage.delta_width', 0)),
- height : 495 + parseInt(ed.getLang('fullpage.delta_height', 0)),
- inline : 1
- }, {
- plugin_url : url,
- data : t._htmlToData()
- });
- });
-
- // Register buttons
- ed.addButton('fullpage', {title : 'fullpage.desc', cmd : 'mceFullPageProperties'});
-
- ed.onBeforeSetContent.add(t._setContent, t);
- ed.onGetContent.add(t._getContent, t);
- },
-
- getInfo : function() {
- return {
- longname : 'Fullpage',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullpage',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- },
-
- // Private plugin internal methods
-
- _htmlToData : function() {
- var headerFragment = this._parseHeader(), data = {}, nodes, elm, matches, editor = this.editor;
-
- function getAttr(elm, name) {
- var value = elm.attr(name);
-
- return value || '';
- };
-
- // Default some values
- data.fontface = editor.getParam("fullpage_default_fontface", "");
- data.fontsize = editor.getParam("fullpage_default_fontsize", "");
-
- // Parse XML PI
- elm = headerFragment.firstChild;
- if (elm.type == 7) {
- data.xml_pi = true;
- matches = /encoding="([^"]+)"/.exec(elm.value);
- if (matches)
- data.docencoding = matches[1];
- }
-
- // Parse doctype
- elm = headerFragment.getAll('#doctype')[0];
- if (elm)
- data.doctype = '<!DOCTYPE' + elm.value + ">";
-
- // Parse title element
- elm = headerFragment.getAll('title')[0];
- if (elm && elm.firstChild) {
- data.metatitle = elm.firstChild.value;
- }
-
- // Parse meta elements
- each(headerFragment.getAll('meta'), function(meta) {
- var name = meta.attr('name'), httpEquiv = meta.attr('http-equiv'), matches;
-
- if (name)
- data['meta' + name.toLowerCase()] = meta.attr('content');
- else if (httpEquiv == "Content-Type") {
- matches = /charset\s*=\s*(.*)\s*/gi.exec(meta.attr('content'));
-
- if (matches)
- data.docencoding = matches[1];
- }
- });
-
- // Parse html attribs
- elm = headerFragment.getAll('html')[0];
- if (elm)
- data.langcode = getAttr(elm, 'lang') || getAttr(elm, 'xml:lang');
-
- // Parse stylesheet
- elm = headerFragment.getAll('link')[0];
- if (elm && elm.attr('rel') == 'stylesheet')
- data.stylesheet = elm.attr('href');
-
- // Parse body parts
- elm = headerFragment.getAll('body')[0];
- if (elm) {
- data.langdir = getAttr(elm, 'dir');
- data.style = getAttr(elm, 'style');
- data.visited_color = getAttr(elm, 'vlink');
- data.link_color = getAttr(elm, 'link');
- data.active_color = getAttr(elm, 'alink');
- }
-
- return data;
- },
-
- _dataToHtml : function(data) {
- var headerFragment, headElement, html, elm, value, dom = this.editor.dom;
-
- function setAttr(elm, name, value) {
- elm.attr(name, value ? value : undefined);
- };
-
- function addHeadNode(node) {
- if (headElement.firstChild)
- headElement.insert(node, headElement.firstChild);
- else
- headElement.append(node);
- };
-
- headerFragment = this._parseHeader();
- headElement = headerFragment.getAll('head')[0];
- if (!headElement) {
- elm = headerFragment.getAll('html')[0];
- headElement = new Node('head', 1);
-
- if (elm.firstChild)
- elm.insert(headElement, elm.firstChild, true);
- else
- elm.append(headElement);
- }
-
- // Add/update/remove XML-PI
- elm = headerFragment.firstChild;
- if (data.xml_pi) {
- value = 'version="1.0"';
-
- if (data.docencoding)
- value += ' encoding="' + data.docencoding + '"';
-
- if (elm.type != 7) {
- elm = new Node('xml', 7);
- headerFragment.insert(elm, headerFragment.firstChild, true);
- }
-
- elm.value = value;
- } else if (elm && elm.type == 7)
- elm.remove();
-
- // Add/update/remove doctype
- elm = headerFragment.getAll('#doctype')[0];
- if (data.doctype) {
- if (!elm) {
- elm = new Node('#doctype', 10);
-
- if (data.xml_pi)
- headerFragment.insert(elm, headerFragment.firstChild);
- else
- addHeadNode(elm);
- }
-
- elm.value = data.doctype.substring(9, data.doctype.length - 1);
- } else if (elm)
- elm.remove();
-
- // Add/update/remove title
- elm = headerFragment.getAll('title')[0];
- if (data.metatitle) {
- if (!elm) {
- elm = new Node('title', 1);
- elm.append(new Node('#text', 3)).value = data.metatitle;
- addHeadNode(elm);
- }
- }
-
- // Add meta encoding
- if (data.docencoding) {
- elm = null;
- each(headerFragment.getAll('meta'), function(meta) {
- if (meta.attr('http-equiv') == 'Content-Type')
- elm = meta;
- });
-
- if (!elm) {
- elm = new Node('meta', 1);
- elm.attr('http-equiv', 'Content-Type');
- elm.shortEnded = true;
- addHeadNode(elm);
- }
-
- elm.attr('content', 'text/html; charset=' + data.docencoding);
- }
-
- // Add/update/remove meta
- each('keywords,description,author,copyright,robots'.split(','), function(name) {
- var nodes = headerFragment.getAll('meta'), i, meta, value = data['meta' + name];
-
- for (i = 0; i < nodes.length; i++) {
- meta = nodes[i];
-
- if (meta.attr('name') == name) {
- if (value)
- meta.attr('content', value);
- else
- meta.remove();
-
- return;
- }
- }
-
- if (value) {
- elm = new Node('meta', 1);
- elm.attr('name', name);
- elm.attr('content', value);
- elm.shortEnded = true;
-
- addHeadNode(elm);
- }
- });
-
- // Add/update/delete link
- elm = headerFragment.getAll('link')[0];
- if (elm && elm.attr('rel') == 'stylesheet') {
- if (data.stylesheet)
- elm.attr('href', data.stylesheet);
- else
- elm.remove();
- } else if (data.stylesheet) {
- elm = new Node('link', 1);
- elm.attr({
- rel : 'stylesheet',
- text : 'text/css',
- href : data.stylesheet
- });
- elm.shortEnded = true;
-
- addHeadNode(elm);
- }
-
- // Update body attributes
- elm = headerFragment.getAll('body')[0];
- if (elm) {
- setAttr(elm, 'dir', data.langdir);
- setAttr(elm, 'style', data.style);
- setAttr(elm, 'vlink', data.visited_color);
- setAttr(elm, 'link', data.link_color);
- setAttr(elm, 'alink', data.active_color);
-
- // Update iframe body as well
- dom.setAttribs(this.editor.getBody(), {
- style : data.style,
- dir : data.dir,
- vLink : data.visited_color,
- link : data.link_color,
- aLink : data.active_color
- });
- }
-
- // Set html attributes
- elm = headerFragment.getAll('html')[0];
- if (elm) {
- setAttr(elm, 'lang', data.langcode);
- setAttr(elm, 'xml:lang', data.langcode);
- }
-
- // Serialize header fragment and crop away body part
- html = new tinymce.html.Serializer({
- validate: false,
- indent: true,
- apply_source_formatting : true,
- indent_before: 'head,html,body,meta,title,script,link,style',
- indent_after: 'head,html,body,meta,title,script,link,style'
- }).serialize(headerFragment);
-
- this.head = html.substring(0, html.indexOf('</body>'));
- },
-
- _parseHeader : function() {
- // Parse the contents with a DOM parser
- return new tinymce.html.DomParser({
- validate: false,
- root_name: '#document'
- }).parse(this.head);
- },
-
- _setContent : function(ed, o) {
- var self = this, startPos, endPos, content = o.content, headerFragment, styles = '', dom = self.editor.dom, elm;
-
- function low(s) {
- return s.replace(/<\/?[A-Z]+/g, function(a) {
- return a.toLowerCase();
- })
- };
-
- // Ignore raw updated if we already have a head, this will fix issues with undo/redo keeping the head/foot separate
- if (o.format == 'raw' && self.head)
- return;
-
- if (o.source_view && ed.getParam('fullpage_hide_in_source_view'))
- return;
-
- // Parse out head, body and footer
- content = content.replace(/<(\/?)BODY/gi, '<$1body');
- startPos = content.indexOf('<body');
-
- if (startPos != -1) {
- startPos = content.indexOf('>', startPos);
- self.head = low(content.substring(0, startPos + 1));
-
- endPos = content.indexOf('</body', startPos);
- if (endPos == -1)
- endPos = content.length;
-
- o.content = content.substring(startPos + 1, endPos);
- self.foot = low(content.substring(endPos));
- } else {
- self.head = this._getDefaultHeader();
- self.foot = '\n</body>\n</html>';
- }
-
- // Parse header and update iframe
- headerFragment = self._parseHeader();
- each(headerFragment.getAll('style'), function(node) {
- if (node.firstChild)
- styles += node.firstChild.value;
- });
-
- elm = headerFragment.getAll('body')[0];
- if (elm) {
- dom.setAttribs(self.editor.getBody(), {
- style : elm.attr('style') || '',
- dir : elm.attr('dir') || '',
- vLink : elm.attr('vlink') || '',
- link : elm.attr('link') || '',
- aLink : elm.attr('alink') || ''
- });
- }
-
- dom.remove('fullpage_styles');
-
- if (styles) {
- dom.add(self.editor.getDoc().getElementsByTagName('head')[0], 'style', {id : 'fullpage_styles'}, styles);
-
- // Needed for IE 6/7
- elm = dom.get('fullpage_styles');
- if (elm.styleSheet)
- elm.styleSheet.cssText = styles;
- }
- },
-
- _getDefaultHeader : function() {
- var header = '', editor = this.editor, value, styles = '';
-
- if (editor.getParam('fullpage_default_xml_pi'))
- header += '<?xml version="1.0" encoding="' + editor.getParam('fullpage_default_encoding', 'ISO-8859-1') + '" ?>\n';
-
- header += editor.getParam('fullpage_default_doctype', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');
- header += '\n<html>\n<head>\n';
-
- if (value = editor.getParam('fullpage_default_title'))
- header += '<title>' + value + '</title>\n';
-
- if (value = editor.getParam('fullpage_default_encoding'))
- header += '<meta http-equiv="Content-Type" content="text/html; charset=' + value + '" />\n';
-
- if (value = editor.getParam('fullpage_default_font_family'))
- styles += 'font-family: ' + value + ';';
-
- if (value = editor.getParam('fullpage_default_font_size'))
- styles += 'font-size: ' + value + ';';
-
- if (value = editor.getParam('fullpage_default_text_color'))
- styles += 'color: ' + value + ';';
-
- header += '</head>\n<body' + (styles ? ' style="' + styles + '"' : '') + '>\n';
-
- return header;
- },
-
- _getContent : function(ed, o) {
- var self = this;
-
- if (!o.source_view || !ed.getParam('fullpage_hide_in_source_view'))
- o.content = tinymce.trim(self.head) + '\n' + tinymce.trim(o.content) + '\n' + tinymce.trim(self.foot);
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('fullpage', tinymce.plugins.FullPagePlugin);
-})();
diff --git a/program/js/tiny_mce/plugins/fullpage/fullpage.htm b/program/js/tiny_mce/plugins/fullpage/fullpage.htm
deleted file mode 100644
index 14ab8652e..000000000
--- a/program/js/tiny_mce/plugins/fullpage/fullpage.htm
+++ /dev/null
@@ -1,259 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#fullpage_dlg.title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="../../utils/form_utils.js"></script>
- <script type="text/javascript" src="js/fullpage.js"></script>
- <link href="css/fullpage.css" rel="stylesheet" type="text/css" />
-</head>
-<body id="fullpage" style="display: none">
-<form onsubmit="FullPageDialog.update();return false;" name="fullpage" action="#">
- <div class="tabs">
- <ul>
- <li id="meta_tab" class="current"><span><a href="javascript:mcTabs.displayTab('meta_tab','meta_panel');" onmousedown="return false;">{#fullpage_dlg.meta_tab}</a></span></li>
- <li id="appearance_tab"><span><a href="javascript:mcTabs.displayTab('appearance_tab','appearance_panel');" onmousedown="return false;">{#fullpage_dlg.appearance_tab}</a></span></li>
- </ul>
- </div>
-
- <div class="panel_wrapper">
- <div id="meta_panel" class="panel current">
- <fieldset>
- <legend>{#fullpage_dlg.meta_props}</legend>
-
- <table border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td class="nowrap"><label for="metatitle">{#fullpage_dlg.meta_title}</label>&nbsp;</td>
- <td><input type="text" id="metatitle" name="metatitle" value="" class="mceFocus" /></td>
- </tr>
- <tr>
- <td class="nowrap"><label for="metakeywords">{#fullpage_dlg.meta_keywords}</label>&nbsp;</td>
- <td><textarea id="metakeywords" name="metakeywords" rows="4"></textarea></td>
- </tr>
- <tr>
- <td class="nowrap"><label for="metadescription">{#fullpage_dlg.meta_description}</label>&nbsp;</td>
- <td><textarea id="metadescription" name="metadescription" rows="4"></textarea></td>
- </tr>
- <tr>
- <td class="nowrap"><label for="metaauthor">{#fullpage_dlg.author}</label>&nbsp;</td>
- <td><input type="text" id="metaauthor" name="metaauthor" value="" /></td>
- </tr>
- <tr>
- <td class="nowrap"><label for="metacopyright">{#fullpage_dlg.copyright}</label>&nbsp;</td>
- <td><input type="text" id="metacopyright" name="metacopyright" value="" /></td>
- </tr>
- <tr>
- <td class="nowrap"><label for="metarobots">{#fullpage_dlg.meta_robots}</label>&nbsp;</td>
- <td>
- <select id="metarobots" name="metarobots">
- <option value="">{#not_set}</option>
- <option value="index,follow">{#fullpage_dlg.meta_index_follow}</option>
- <option value="index,nofollow">{#fullpage_dlg.meta_index_nofollow}</option>
- <option value="noindex,follow">{#fullpage_dlg.meta_noindex_follow}</option>
- <option value="noindex,nofollow">{#fullpage_dlg.meta_noindex_nofollow}</option>
- </select>
- </td>
- </tr>
- </table>
- </fieldset>
-
- <fieldset>
- <legend>{#fullpage_dlg.langprops}</legend>
-
- <table border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td class="column1"><label for="docencoding">{#fullpage_dlg.encoding}</label></td>
- <td>
- <select id="docencoding" name="docencoding">
- <option value="">{#not_set}</option>
- </select>
- </td>
- </tr>
- <tr>
- <td class="nowrap"><label for="doctype">{#fullpage_dlg.doctypes}</label>&nbsp;</td>
- <td>
- <select id="doctype" name="doctype">
- <option value="">{#not_set}</option>
- </select>
- </td>
- </tr>
- <tr>
- <td class="nowrap"><label for="langcode">{#fullpage_dlg.langcode}</label>&nbsp;</td>
- <td><input type="text" id="langcode" name="langcode" value="" /></td>
- </tr>
- <tr>
- <td class="column1"><label for="langdir">{#fullpage_dlg.langdir}</label></td>
- <td>
- <select id="langdir" name="langdir">
- <option value="">{#not_set}</option>
- <option value="ltr">{#fullpage_dlg.ltr}</option>
- <option value="rtl">{#fullpage_dlg.rtl}</option>
- </select>
- </td>
- </tr>
- <tr>
- <td class="nowrap"><label for="xml_pi">{#fullpage_dlg.xml_pi}</label>&nbsp;</td>
- <td><input type="checkbox" id="xml_pi" name="xml_pi" class="checkbox" /></td>
- </tr>
- </table>
- </fieldset>
- </div>
-
- <div id="appearance_panel" class="panel">
- <fieldset>
- <legend>{#fullpage_dlg.appearance_textprops}</legend>
-
- <table border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td class="column1"><label for="fontface">{#fullpage_dlg.fontface}</label></td>
- <td>
- <select id="fontface" name="fontface" onchange="FullPageDialog.changedStyleProp();">
- <option value="">{#not_set}</option>
- </select>
- </td>
- </tr>
-
- <tr>
- <td class="column1"><label for="fontsize">{#fullpage_dlg.fontsize}</label></td>
- <td>
- <select id="fontsize" name="fontsize" onchange="FullPageDialog.changedStyleProp();">
- <option value="">{#not_set}</option>
- </select>
- </td>
- </tr>
-
- <tr>
- <td class="column1"><label for="textcolor">{#fullpage_dlg.textcolor}</label></td>
- <td>
- <table border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="textcolor" name="textcolor" type="text" value="" size="9" onchange="updateColor('textcolor_pick','textcolor');FullPageDialog.changedStyleProp();" /></td>
- <td id="textcolor_pickcontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </fieldset>
-
- <fieldset>
- <legend>{#fullpage_dlg.appearance_bgprops}</legend>
-
- <table border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td class="column1"><label for="bgimage">{#fullpage_dlg.bgimage}</label></td>
- <td>
- <table border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="bgimage" name="bgimage" type="text" value="" onchange="FullPageDialog.changedStyleProp();" /></td>
- <td id="bgimage_pickcontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td class="column1"><label for="bgcolor">{#fullpage_dlg.bgcolor}</label></td>
- <td>
- <table border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');FullPageDialog.changedStyleProp();" /></td>
- <td id="bgcolor_pickcontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </fieldset>
-
- <fieldset>
- <legend>{#fullpage_dlg.appearance_marginprops}</legend>
-
- <table border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td class="column1"><label for="leftmargin">{#fullpage_dlg.left_margin}</label></td>
- <td><input id="leftmargin" name="leftmargin" type="text" value="" onchange="FullPageDialog.changedStyleProp();" /></td>
- <td class="column1"><label for="rightmargin">{#fullpage_dlg.right_margin}</label></td>
- <td><input id="rightmargin" name="rightmargin" type="text" value="" onchange="FullPageDialog.changedStyleProp();" /></td>
- </tr>
- <tr>
- <td class="column1"><label for="topmargin">{#fullpage_dlg.top_margin}</label></td>
- <td><input id="topmargin" name="topmargin" type="text" value="" onchange="FullPageDialog.changedStyleProp();" /></td>
- <td class="column1"><label for="bottommargin">{#fullpage_dlg.bottom_margin}</label></td>
- <td><input id="bottommargin" name="bottommargin" type="text" value="" onchange="FullPageDialog.changedStyleProp();" /></td>
- </tr>
- </table>
- </fieldset>
-
- <fieldset>
- <legend>{#fullpage_dlg.appearance_linkprops}</legend>
-
- <table border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td class="column1"><label for="link_color">{#fullpage_dlg.link_color}</label></td>
- <td>
- <table border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="link_color" name="link_color" type="text" value="" size="9" onchange="updateColor('link_color_pick','link_color');FullPageDialog.changedStyleProp();" /></td>
- <td id="link_color_pickcontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
-
- <td class="column1"><label for="visited_color">{#fullpage_dlg.visited_color}</label></td>
- <td>
- <table border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="visited_color" name="visited_color" type="text" value="" size="9" onchange="updateColor('visited_color_pick','visited_color');FullPageDialog.changedStyleProp();" /></td>
- <td id="visited_color_pickcontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td class="column1"><label for="active_color">{#fullpage_dlg.active_color}</label></td>
- <td>
- <table border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="active_color" name="active_color" type="text" value="" size="9" onchange="updateColor('active_color_pick','active_color');FullPageDialog.changedStyleProp();" /></td>
- <td id="active_color_pickcontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
-
- <td>&nbsp;</td>
- <td>&nbsp;</td>
- </tr>
- </table>
- </fieldset>
-
- <fieldset>
- <legend>{#fullpage_dlg.appearance_style}</legend>
-
- <table border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td class="column1"><label for="stylesheet">{#fullpage_dlg.stylesheet}</label></td>
- <td><table border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="stylesheet" name="stylesheet" type="text" value="" /></td>
- <td id="stylesheet_browsercontainer">&nbsp;</td>
- </tr>
- </table></td>
- </tr>
- <tr>
- <td class="column1"><label for="style">{#fullpage_dlg.style}</label></td>
- <td><input id="style" name="style" type="text" value="" onchange="FullPageDialog.changedStyle();" /></td>
- </tr>
- </table>
- </fieldset>
- </div>
- </div>
-
- <div class="mceActionPanel">
- <input type="submit" id="insert" name="update" value="{#update}" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
-</form>
-</body>
-</html>
diff --git a/program/js/tiny_mce/plugins/fullpage/js/fullpage.js b/program/js/tiny_mce/plugins/fullpage/js/fullpage.js
deleted file mode 100644
index 3f672ad3b..000000000
--- a/program/js/tiny_mce/plugins/fullpage/js/fullpage.js
+++ /dev/null
@@ -1,232 +0,0 @@
-/**
- * fullpage.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- tinyMCEPopup.requireLangPack();
-
- var defaultDocTypes =
- 'XHTML 1.0 Transitional=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">,' +
- 'XHTML 1.0 Frameset=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">,' +
- 'XHTML 1.0 Strict=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">,' +
- 'XHTML 1.1=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">,' +
- 'HTML 4.01 Transitional=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">,' +
- 'HTML 4.01 Strict=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">,' +
- 'HTML 4.01 Frameset=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">';
-
- var defaultEncodings =
- 'Western european (iso-8859-1)=iso-8859-1,' +
- 'Central European (iso-8859-2)=iso-8859-2,' +
- 'Unicode (UTF-8)=utf-8,' +
- 'Chinese traditional (Big5)=big5,' +
- 'Cyrillic (iso-8859-5)=iso-8859-5,' +
- 'Japanese (iso-2022-jp)=iso-2022-jp,' +
- 'Greek (iso-8859-7)=iso-8859-7,' +
- 'Korean (iso-2022-kr)=iso-2022-kr,' +
- 'ASCII (us-ascii)=us-ascii';
-
- var defaultFontNames = 'Arial=arial,helvetica,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,times new roman,times,serif;Tahoma=tahoma,arial,helvetica,sans-serif;Times New Roman=times new roman,times,serif;Verdana=verdana,arial,helvetica,sans-serif;Impact=impact;WingDings=wingdings';
- var defaultFontSizes = '10px,11px,12px,13px,14px,15px,16px';
-
- function setVal(id, value) {
- var elm = document.getElementById(id);
-
- if (elm) {
- value = value || '';
-
- if (elm.nodeName == "SELECT")
- selectByValue(document.forms[0], id, value);
- else if (elm.type == "checkbox")
- elm.checked = !!value;
- else
- elm.value = value;
- }
- };
-
- function getVal(id) {
- var elm = document.getElementById(id);
-
- if (elm.nodeName == "SELECT")
- return elm.options[elm.selectedIndex].value;
-
- if (elm.type == "checkbox")
- return elm.checked;
-
- return elm.value;
- };
-
- window.FullPageDialog = {
- changedStyle : function() {
- var val, styles = tinyMCEPopup.editor.dom.parseStyle(getVal('style'));
-
- setVal('fontface', styles['font-face']);
- setVal('fontsize', styles['font-size']);
- setVal('textcolor', styles['color']);
-
- if (val = styles['background-image'])
- setVal('bgimage', val.replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1"));
- else
- setVal('bgimage', '');
-
- setVal('bgcolor', styles['background-color']);
-
- // Reset margin form elements
- setVal('topmargin', '');
- setVal('rightmargin', '');
- setVal('bottommargin', '');
- setVal('leftmargin', '');
-
- // Expand margin
- if (val = styles['margin']) {
- val = val.split(' ');
- styles['margin-top'] = val[0] || '';
- styles['margin-right'] = val[1] || val[0] || '';
- styles['margin-bottom'] = val[2] || val[0] || '';
- styles['margin-left'] = val[3] || val[0] || '';
- }
-
- if (val = styles['margin-top'])
- setVal('topmargin', val.replace(/px/, ''));
-
- if (val = styles['margin-right'])
- setVal('rightmargin', val.replace(/px/, ''));
-
- if (val = styles['margin-bottom'])
- setVal('bottommargin', val.replace(/px/, ''));
-
- if (val = styles['margin-left'])
- setVal('leftmargin', val.replace(/px/, ''));
-
- updateColor('bgcolor_pick', 'bgcolor');
- updateColor('textcolor_pick', 'textcolor');
- },
-
- changedStyleProp : function() {
- var val, dom = tinyMCEPopup.editor.dom, styles = dom.parseStyle(getVal('style'));
-
- styles['font-face'] = getVal('fontface');
- styles['font-size'] = getVal('fontsize');
- styles['color'] = getVal('textcolor');
- styles['background-color'] = getVal('bgcolor');
-
- if (val = getVal('bgimage'))
- styles['background-image'] = "url('" + val + "')";
- else
- styles['background-image'] = '';
-
- delete styles['margin'];
-
- if (val = getVal('topmargin'))
- styles['margin-top'] = val + "px";
- else
- styles['margin-top'] = '';
-
- if (val = getVal('rightmargin'))
- styles['margin-right'] = val + "px";
- else
- styles['margin-right'] = '';
-
- if (val = getVal('bottommargin'))
- styles['margin-bottom'] = val + "px";
- else
- styles['margin-bottom'] = '';
-
- if (val = getVal('leftmargin'))
- styles['margin-left'] = val + "px";
- else
- styles['margin-left'] = '';
-
- // Serialize, parse and reserialize this will compress redundant styles
- setVal('style', dom.serializeStyle(dom.parseStyle(dom.serializeStyle(styles))));
- this.changedStyle();
- },
-
- update : function() {
- var data = {};
-
- tinymce.each(tinyMCEPopup.dom.select('select,input,textarea'), function(node) {
- data[node.id] = getVal(node.id);
- });
-
- tinyMCEPopup.editor.plugins.fullpage._dataToHtml(data);
- tinyMCEPopup.close();
- }
- };
-
- function init() {
- var form = document.forms[0], i, item, list, editor = tinyMCEPopup.editor;
-
- // Setup doctype select box
- list = editor.getParam("fullpage_doctypes", defaultDocTypes).split(',');
- for (i = 0; i < list.length; i++) {
- item = list[i].split('=');
-
- if (item.length > 1)
- addSelectValue(form, 'doctype', item[0], item[1]);
- }
-
- // Setup fonts select box
- list = editor.getParam("fullpage_fonts", defaultFontNames).split(';');
- for (i = 0; i < list.length; i++) {
- item = list[i].split('=');
-
- if (item.length > 1)
- addSelectValue(form, 'fontface', item[0], item[1]);
- }
-
- // Setup fontsize select box
- list = editor.getParam("fullpage_fontsizes", defaultFontSizes).split(',');
- for (i = 0; i < list.length; i++)
- addSelectValue(form, 'fontsize', list[i], list[i]);
-
- // Setup encodings select box
- list = editor.getParam("fullpage_encodings", defaultEncodings).split(',');
- for (i = 0; i < list.length; i++) {
- item = list[i].split('=');
-
- if (item.length > 1)
- addSelectValue(form, 'docencoding', item[0], item[1]);
- }
-
- // Setup color pickers
- document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
- document.getElementById('link_color_pickcontainer').innerHTML = getColorPickerHTML('link_color_pick','link_color');
- document.getElementById('visited_color_pickcontainer').innerHTML = getColorPickerHTML('visited_color_pick','visited_color');
- document.getElementById('active_color_pickcontainer').innerHTML = getColorPickerHTML('active_color_pick','active_color');
- document.getElementById('textcolor_pickcontainer').innerHTML = getColorPickerHTML('textcolor_pick','textcolor');
- document.getElementById('stylesheet_browsercontainer').innerHTML = getBrowserHTML('stylesheetbrowser','stylesheet','file','fullpage');
- document.getElementById('bgimage_pickcontainer').innerHTML = getBrowserHTML('bgimage_browser','bgimage','image','fullpage');
-
- // Resize some elements
- if (isVisible('stylesheetbrowser'))
- document.getElementById('stylesheet').style.width = '220px';
-
- if (isVisible('link_href_browser'))
- document.getElementById('element_link_href').style.width = '230px';
-
- if (isVisible('bgimage_browser'))
- document.getElementById('bgimage').style.width = '210px';
-
- // Update form
- tinymce.each(tinyMCEPopup.getWindowArg('data'), function(value, key) {
- setVal(key, value);
- });
-
- FullPageDialog.changedStyle();
-
- // Update colors
- updateColor('textcolor_pick', 'textcolor');
- updateColor('bgcolor_pick', 'bgcolor');
- updateColor('visited_color_pick', 'visited_color');
- updateColor('active_color_pick', 'active_color');
- updateColor('link_color_pick', 'link_color');
- };
-
- tinyMCEPopup.onInit.add(init);
-})();
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/ar_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/ar_dlg.js
deleted file mode 100644
index 634642b2e..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/ar_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ar.fullpage_dlg',{title:"Document properties","meta_tab":"\u0639\u0627\u0645","appearance_tab":"Appearance","advanced_tab":"Advanced","meta_props":"Meta information",langprops:"Language and encoding","meta_title":"Title","meta_keywords":"Keywords","meta_description":"Description","meta_robots":"Robots",doctypes:"Doctype",langcode:"Language code",langdir:"Language direction",ltr:"Left to right",rtl:"Right to left","xml_pi":"XML declaration",encoding:"Character encoding","appearance_bgprops":"Background properties","appearance_marginprops":"Body margins","appearance_linkprops":"Link colors","appearance_textprops":"Text properties",bgcolor:"Background color",bgimage:"Background image","left_margin":"Left margin","right_margin":"Right margin","top_margin":"Top margin","bottom_margin":"Bottom margin","text_color":"Text color","font_size":"Font size","font_face":"Font face","link_color":"Link color","hover_color":"Hover color","visited_color":"Visited color","active_color":"Active color",textcolor:"Color",fontsize:"Font size",fontface:"Font family","meta_index_follow":"Index and follow the links","meta_index_nofollow":"Index and don\'t follow the links","meta_noindex_follow":"Do not index but follow the links","meta_noindex_nofollow":"Do not index and don\\\'t follow the links","appearance_style":"Stylesheet and style properties",stylesheet:"Stylesheet",style:"Style",author:"Author",copyright:"Copyright",add:"Add new element",remove:"Remove selected element",moveup:"Move selected element up",movedown:"Move selected element down","head_elements":"Head elements",info:"Information","add_title":"Title element","add_meta":"Meta element","add_script":"Script element","add_style":"Style element","add_link":"Link element","add_base":"Base element","add_comment":"Comment node","title_element":"Title element","script_element":"Script element","style_element":"Style element","base_element":"Base element","link_element":"Link element","meta_element":"Meta element","comment_element":"Comment",src:"Src",language:"Language",href:"Href",target:"Target",type:"Type",charset:"Charset",defer:"Defer",media:"Media",properties:"Properties",name:"Name",value:"Value",content:"Content",rel:"Rel",rev:"Rev",hreflang:"Href lang","general_props":"\u0639\u0627\u0645","advanced_props":"Advanced"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/az_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/az_dlg.js
deleted file mode 100644
index 2d09ff333..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/az_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('az.fullpage_dlg',{title:"S\u0259n\u0259d x\u00fcsusiyy\u0259tl\u0259ri","meta_tab":"\u00dcmumi","appearance_tab":"G\u00f6r\u00fcn\u00fc\u015f","advanced_tab":"\u018flav\u0259l\u0259r","meta_props":"Meta m\u0259lumat",langprops:"Dil v\u0259 kodla\u015fd\u0131rma","meta_title":"Ba\u015fl\u0131q","meta_keywords":"A\u00e7ar s\u00f6zl\u0259ri","meta_description":"T\u0259svir","meta_robots":"Robotlar",doctypes:"S\u0259n\u0259d n\u00f6v\u00fc",langcode:"Dil kodu",langdir:"Dil istiqam\u0259ti",ltr:"Soldan sa\u011fa",rtl:"Sa\u011fdan sola","xml_pi":"XML t\u0259rifi",encoding:"\u0130\u015far\u0259 kodla\u015fd\u0131rmas\u0131","appearance_bgprops":"Arxa plan x\u00fcsusiyy\u0259tl\u0259ri","appearance_marginprops":"G\u00f6vd\u0259 k\u0259narlar\u0131","appearance_linkprops":"Ke\u00e7id r\u0259ngl\u0259ri","appearance_textprops":"M\u0259tn x\u00fcsusiyy\u0259tl\u0259ri",bgcolor:"Arxa plan r\u0259ngi",bgimage:"Arxa plan \u015f\u0259kli","left_margin":"Sol bo\u015fluq","right_margin":"Sa\u011f bo\u015fluq","top_margin":"\u00dcst bo\u015fluq","bottom_margin":"Alt bo\u015fluq","text_color":"M\u0259tn r\u0259ngi","font_size":"\u015erift \u00f6l\u00e7\u00fcs\u00fc","font_face":"\u015erift n\u00f6v\u00fc","link_color":"Ke\u00e7id r\u0259ngi","hover_color":"\u00dcz\u0259rind\u0259ki r\u0259ng","visited_color":"Bax\u0131lm\u0131\u015f r\u0259ng","active_color":"Aktiv r\u0259ng",textcolor:"R\u0259ng",fontsize:"\u015erift \u00f6l\u00e7\u00fcs\u00fc",fontface:"\u015erift ail\u0259si","meta_index_follow":"\u0130ndeks et v\u0259 ke\u00e7idi izl\u0259","meta_index_nofollow":"\u0130ndeks et lakin ke\u00e7idi izl\u0259m\u0259","meta_noindex_follow":"\u0130ndeks etm\u0259 lakin ke\u00e7idi izl\u0259","meta_noindex_nofollow":"\u0130ndeks etm\u0259 v\u0259 ke\u00e7idl\u0259ri izl\u0259m\u0259","appearance_style":"Stil v\u0259r\u0259qi v\u0259 x\u00fcsusiyy\u0259tl\u0259ri",stylesheet:"Stil v\u0259r\u0259qi",style:"Stil",author:"M\u00fc\u0259llif",copyright:"M\u00fc\u0259llif h\u00fcququ",add:"Yeni element \u0259lav\u0259 et",remove:"Se\u00e7ilmi\u015f elementi sil",moveup:"Se\u00e7il\u0259n elementi yuxar\u0131 \u00e7\u0259k",movedown:"Se\u00e7il\u0259n elementi a\u015fa\u011f\u0131 \u00e7\u0259k","head_elements":"Ba\u015f elementl\u0259r",info:"M\u0259lumat","add_title":"Ba\u015fl\u0131q elementi","add_meta":"Meta elementi","add_script":"Skript elementi","add_style":"Stil elementi","add_link":"Ke\u00e7id elementi","add_base":"Baza elementi","add_comment":"\u015e\u0259rh d\u00fcy\u00fcn\u00fc","title_element":"Ba\u015fl\u0131q elementi","script_element":"Skript elementi","style_element":"Stil elementi","base_element":"Baza elementi","link_element":"Ke\u00e7id elementi","meta_element":"Meta elementi","comment_element":"\u015e\u0259rh",src:"Src",language:"Dil",href:"Href",target:"H\u0259d\u0259f",type:"N\u00f6v",charset:"\u00c7arset",defer:"T\u0259xir\u0259 sal",media:"Media",properties:"X\u00fcsusiyy\u0259tl\u0259r",name:"Ad\u0131",value:"D\u0259y\u0259r",content:"M\u0259zmun",rel:"Rel",rev:"Rev",hreflang:"Href dili","general_props":"\u00dcmumi","advanced_props":"\u018flav\u0259l\u0259r"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/bg_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/bg_dlg.js
deleted file mode 100644
index 2076714c3..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/bg_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bg.fullpage_dlg',{title:"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430","meta_tab":"\u041e\u0431\u0449\u0438","appearance_tab":"\u0412\u044a\u043d\u0448\u0435\u043d \u0432\u0438\u0434","advanced_tab":"\u0417\u0430 \u043d\u0430\u043f\u0440\u0435\u0434\u043d\u0430\u043b\u0438","meta_props":"Meta \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f",langprops:"\u0415\u0437\u0438\u043a \u0438 \u043a\u043e\u0434\u0438\u0440\u0430\u043d\u0435","meta_title":"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435","meta_keywords":"\u041a\u043b\u044e\u0447\u043e\u0432\u0438 \u0434\u0443\u043c\u0438","meta_description":"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435","meta_robots":"\u0420\u043e\u0431\u043e\u0442\u0438",doctypes:"\u0422\u0438\u043f",langcode:"\u041a\u043e\u0434 \u043d\u0430 \u0435\u0437\u0438\u043a\u0430",langdir:"\u041f\u043e\u0441\u043e\u043a\u0430 \u043d\u0430 \u0435\u0437\u0438\u043a\u0430",ltr:"\u041e\u0442\u043b\u044f\u0432\u043e \u043d\u0430 \u0434\u044f\u0441\u043d\u043e",rtl:"\u041e\u0442\u0434\u044f\u0441\u043d\u043e \u043d\u0430 \u043b\u044f\u0432\u043e","xml_pi":"XML \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0446\u0438\u0438",encoding:"\u041a\u043e\u0434\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0442\u0435","appearance_bgprops":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430 \u0444\u043e\u043d\u0430","appearance_marginprops":"Body margins","appearance_linkprops":"\u0426\u0432\u0435\u0442\u043e\u0432\u0435 \u043d\u0430 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0438\u0442\u0435","appearance_textprops":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0430",bgcolor:"\u0426\u0432\u044f\u0442 \u043d\u0430 \u0434\u043e\u043d\u0430",bgimage:"\u0424\u043e\u043d\u043e\u0432\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430","left_margin":"\u041b\u044f\u0432 margin","right_margin":"\u0414\u0435\u0430\u0441\u0435\u043d margin","top_margin":"\u0413\u043e\u0440\u0435\u043d margin","bottom_margin":"\u0414\u043e\u043b\u0435\u043d margin","text_color":"\u0426\u0432\u044f\u0442 \u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0430","font_size":"\u0420\u0430\u0437\u043c\u0435\u0440 \u043d\u0430 \u0448\u0440\u0438\u0444\u0442\u0430","font_face":"\u0428\u0440\u0438\u0444\u0442","link_color":"\u0426\u0432\u044f\u0442 \u043d\u0430 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430\u0442\u0430","hover_color":"\u0426\u0432\u044f\u0442 \u043f\u0440\u0438 hover","visited_color":"\u0426\u0432\u044f\u0442 \u0437\u0430 \u043f\u043e\u0441\u0435\u0442\u0435\u043d\u0438 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0438","active_color":"\u0410\u043a\u0442\u0438\u0432\u0435\u043d \u0446\u0432\u044f\u0442",textcolor:"\u0426\u0432\u044f\u0442",fontsize:"\u0420\u0430\u0437\u043c\u0435\u0440 \u043d\u0430 \u0448\u0440\u0438\u0444\u0442\u0430",fontface:"\u0428\u0440\u0438\u0444\u0442","meta_index_follow":"\u0418\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u0430\u0439 \u0438 \u0441\u043b\u0435\u0434\u0432\u0430\u0439 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0438\u0442\u0435","meta_index_nofollow":"\u0418\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u0430\u0439 \u0438 \u043d\u0435 \u0441\u043b\u0435\u0434\u0432\u0430\u0439 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0438\u0442\u0435","meta_noindex_follow":"\u041d\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u0430\u0439 \u043d\u043e \u0441\u043b\u0435\u0434\u0432\u0430\u0439 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0438\u0442\u0435","meta_noindex_nofollow":"\u041d\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u0430\u0439 \u0438 \u043d\u0435 \u0441\u043b\u0435\u0434\u0432\u0430\u0439 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0438\u0442\u0435","appearance_style":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430 Stylesheet \u0438 \u0441\u0442\u0438\u043b\u0430",stylesheet:"Stylesheet",style:"\u0421\u0442\u0438\u043b",author:"\u0410\u0432\u0442\u043e\u0440",copyright:"Copyright",add:"\u0414\u043e\u0431\u0430\u0432\u0438 \u043d\u043e\u0432 \u0435\u043b\u0435\u043c\u0435\u043d\u0442",remove:"\u041f\u0440\u0435\u043c\u0430\u0445\u043d\u0438 \u0438\u0437\u0431\u0440\u0430\u043d\u0438\u044f\u0442 \u0435\u043b\u0435\u043c\u0435\u043d\u0442",moveup:"\u041f\u0440\u0438\u0434\u0432\u0438\u0436\u0438 \u0438\u0437\u0431\u0440\u0430\u043d\u0438\u044f\u0442 \u0435\u043b\u0435\u043c\u0435\u043d\u0442 \u043d\u0430\u0433\u043e\u0440\u0435",movedown:"\u041f\u0440\u0438\u0434\u0432\u0438\u0436\u0438 \u0438\u0437\u0431\u0440\u0430\u043d\u0438\u044f\u0442 \u0435\u043b\u0435\u043c\u0435\u043d\u0442 \u043d\u0430\u0434\u043e\u043b\u0443","head_elements":"Head elements",info:"Information","add_title":"Title element","add_meta":"Meta element","add_script":"Script element","add_style":"Style element","add_link":"Link element","add_base":"Base element","add_comment":"Comment node","title_element":"Title element","script_element":"Script element","style_element":"Style element","base_element":"Base element","link_element":"Link element","meta_element":"Meta element","comment_element":"Comment",src:"Src",language:"Language",href:"Href",target:"Target",type:"Type",charset:"Charset",defer:"Defer",media:"Media",properties:"Properties",name:"Name",value:"Value",content:"Content",rel:"Rel",rev:"Rev",hreflang:"Href lang","general_props":"\u041e\u0431\u0449\u0438","advanced_props":"\u0417\u0430 \u043d\u0430\u043f\u0440\u0435\u0434\u043d\u0430\u043b\u0438"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/bn_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/bn_dlg.js
deleted file mode 100644
index 833c995b8..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/bn_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bn.fullpage_dlg',{title:"Document properties","meta_tab":"General","appearance_tab":"Appearance","advanced_tab":"Advanced","meta_props":"Meta information",langprops:"Language and encoding","meta_title":"Title","meta_keywords":"Keywords","meta_description":"Description","meta_robots":"Robots",doctypes:"Doctype",langcode:"Language code",langdir:"Language direction",ltr:"Left to right",rtl:"Right to left","xml_pi":"XML declaration",encoding:"Character encoding","appearance_bgprops":"Background properties","appearance_marginprops":"Body margins","appearance_linkprops":"Link colors","appearance_textprops":"Text properties",bgcolor:"Background color",bgimage:"Background image","left_margin":"Left margin","right_margin":"Right margin","top_margin":"Top margin","bottom_margin":"Bottom margin","text_color":"Text color","font_size":"Font size","font_face":"Font face","link_color":"Link color","hover_color":"Hover color","visited_color":"Visited color","active_color":"Active color",textcolor:"Color",fontsize:"Font size",fontface:"Font family","meta_index_follow":"Index and follow the links","meta_index_nofollow":"Index and don\'t follow the links","meta_noindex_follow":"Do not index but follow the links","meta_noindex_nofollow":"Do not index and don\\\'t follow the links","appearance_style":"Stylesheet and style properties",stylesheet:"Stylesheet",style:"Style",author:"Author",copyright:"Copyright",add:"Add new element",remove:"Remove selected element",moveup:"Move selected element up",movedown:"Move selected element down","head_elements":"Head elements",info:"Information","add_title":"Title element","add_meta":"Meta element","add_script":"Script element","add_style":"Style element","add_link":"Link element","add_base":"Base element","add_comment":"Comment node","title_element":"Title element","script_element":"Script element","style_element":"Style element","base_element":"Base element","link_element":"Link element","meta_element":"Meta element","comment_element":"Comment",src:"Src",language:"Language",href:"Href",target:"Target",type:"Type",charset:"Charset",defer:"Defer",media:"Media",properties:"Properties",name:"Name",value:"Value",content:"Content",rel:"Rel",rev:"Rev",hreflang:"Href lang","general_props":"General","advanced_props":"Advanced"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/br_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/br_dlg.js
deleted file mode 100644
index e271584a3..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/br_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('br.fullpage_dlg',{title:"Propriedades do documento","meta_tab":"Geral","appearance_tab":"Apar\u00eancia","advanced_tab":"Avan\u00e7ado","meta_props":"Meta-informa\u00e7\u00e3o",langprops:"Linguagem e codifica\u00e7\u00e3o","meta_title":"T\u00edtulo","meta_keywords":"Palavras-chave","meta_description":"Descri\u00e7\u00e3o","meta_robots":"Robots",doctypes:"Doctype",langcode:"C\u00f3digo de linguagem",langdir:"Dire\u00e7\u00e3o do texto",ltr:"Esquerda para direita",rtl:"Direita para esquerda","xml_pi":"Declara\u00e7\u00e3o XML",encoding:"Codifica\u00e7\u00e3o de caracteres","appearance_bgprops":"Propriedades do plano de fundo","appearance_marginprops":"Margens (BODY)","appearance_linkprops":"Cores dos links","appearance_textprops":"Propriedades de texto",bgcolor:"Cor de fundo",bgimage:"Imagem de fundo","left_margin":"Margem esquerda","right_margin":"Margem direita","top_margin":"Margem topo","bottom_margin":"Margem base","text_color":"Cor do texto","font_size":"Tamanho fonte","font_face":"Fonte","link_color":"Cores dos links","hover_color":"Hover","visited_color":"Visited","active_color":"Active",textcolor:"Cor",fontsize:"Tamanho fonte",fontface:"Fonte","meta_index_follow":"Indexar e seguir os hyperlinks","meta_index_nofollow":"Indexar e n\u00e3o seguir os hyperlinks","meta_noindex_follow":"Seguir hyperlinks, mas n\u00e3o indexar","meta_noindex_nofollow":"N\u00e3o indexar / n\u00e3o seguir hyperlinks.","appearance_style":"Propriedades de folhas de estilo",stylesheet:"Folha de estilo",style:"Estilo",author:"Autor",copyright:"Copyright",add:"Acrescentar Novo elemento",remove:"Remover elemento selecionado",moveup:"Subir elemento selecionado",movedown:"Descer elemento selecionado","head_elements":"Elementos HEAD",info:"Informa\u00e7\u00e3o","add_title":"TITLE","add_meta":"META","add_script":"SCRIPT","add_style":"STYLE","add_link":"LINK","add_base":"BASE","add_comment":"Coment\u00e1rio","title_element":"TITLE","script_element":"SCRIPT","style_element":"STYLE","base_element":"BASE","link_element":"LINK","meta_element":"META","comment_element":"Coment\u00e1rio",src:"Src",language:"Idioma",href:"Href",target:"Alvo",type:"Tipo",charset:"Charset",defer:"Adiar",media:"Media",properties:"Propriedades",name:"Nome",value:"Valor",content:"Conte\u00fado",rel:"rel",rev:"rev",hreflang:"Href lang","general_props":"Geral","advanced_props":"Avan\u00e7ado"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/bs_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/bs_dlg.js
deleted file mode 100644
index 85d8502b2..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/bs_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bs.fullpage_dlg',{title:"Svojstva dokumenta","meta_tab":"Osnovno","appearance_tab":"Izgled","advanced_tab":"Napredno","meta_props":"Meta informacije",langprops:"Jezik i kodiranje","meta_title":"Naslov","meta_keywords":"Klju\u010dne rije\u010di","meta_description":"Opis","meta_robots":"Robots",doctypes:"Doctype",langcode:"Kod jezika",langdir:"Smjer jezika",ltr:"S lijeva na desno",rtl:"S desna na lijevo","xml_pi":"XML deklaracija",encoding:"Kodiranje znakova","appearance_bgprops":"Svojstva pozadine","appearance_marginprops":"Margina","appearance_linkprops":"Boja poveznica","appearance_textprops":"Svojstva teksta",bgcolor:"Boja pozadine",bgimage:"Pozadinska slika","left_margin":"Lijeva margina","right_margin":"Desna margina","top_margin":"Gornja margina","bottom_margin":"Donja margina","text_color":"Boja teksta","font_size":"Veli\u010dina pisma","font_face":"Pismo","link_color":"Boja poveznice","hover_color":"Boja poveznice ispod mi\u0161a","visited_color":"Boja posje\u0107ene poveznice","active_color":"Boja aktivne poveznice",textcolor:"Boja",fontsize:"Veli\u010dina pisma",fontface:"Skupina pisama","meta_index_follow":"Indeksiraj i slijedi poveznice","meta_index_nofollow":"Indeksiraj i ne slijedi poveznice","meta_noindex_follow":"Ne indeksiraj i slijedi poveznice","meta_noindex_nofollow":"Ne indeksiraj i ne slijedi poveznice","appearance_style":"CSS i svojstva stila",stylesheet:"CSS",style:"Stil",author:"Autor",copyright:"Autorska prava",add:"Dodaj novi element",remove:"Ukloni odabrani element",moveup:"Pomakni odabrani element prema gore",movedown:"Pomakni odabrani element prema dolje","head_elements":"Zaglavni elementi",info:"Informacije","add_title":"Naslovni element","add_meta":"Meta element","add_script":"Skriptni element","add_style":"Sitlski element","add_link":"Element poveznice","add_base":"Osnovni element","add_comment":"Komentar","title_element":"Naslovni element","script_element":"Skriptni element","style_element":"Stilski element","base_element":"Osnovni element","link_element":"Element poveznice","meta_element":"Meta element","comment_element":"Komentar",src:"Src",language:"Jezik",href:"Href",target:"Meta",type:"Type",charset:"Charset",defer:"Defer",media:"Media",properties:"Svojstva",name:"Ime",value:"Vrijednost",content:"Sadr\u017eaj",rel:"Rel",rev:"Rev",hreflang:"Href lang","general_props":"Osnovno","advanced_props":"Napredno"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/ca_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/ca_dlg.js
deleted file mode 100644
index a8f72d071..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/ca_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ca.fullpage_dlg',{title:"Propietats del document","meta_tab":"General","appearance_tab":"Aparen\u00e7a","advanced_tab":"Avan\u00e7at","meta_props":"Metainformaci\u00f3",langprops:"Idioma i codificaci\u00f3","meta_title":"T\u00edtol","meta_keywords":"Paraules clau","meta_description":"Descripci\u00f3","meta_robots":"Robots",doctypes:"Doctype",langcode:"Codi d\'idioma",langdir:"Direcci\u00f3 de l\'idioma",ltr:"D\'esquerra a dreta",rtl:"De dreta a esquerra","xml_pi":"Declaraci\u00f3 XML",encoding:"Codificaci\u00f3 dels car\u00e0cters","appearance_bgprops":"Propietats del fons","appearance_marginprops":"Marges del cos","appearance_linkprops":"Colors d\'enlla\u00e7","appearance_textprops":"Propietats del text",bgcolor:"Color del fons",bgimage:"Imatge del fons","left_margin":"Marge esquerre","right_margin":"Marge dret","top_margin":"Marge superior","bottom_margin":"Marge inferior","text_color":"Color del text","font_size":"Mida de la font","font_face":"Font","link_color":"Color d\'enlla\u00e7","hover_color":"Color quan es passi per sobre","visited_color":"Color quan ja \u00e9s visitat","active_color":"Color quan \u00e9s actiu",textcolor:"Color",fontsize:"Mida de la font",fontface:"Fam\u00edlia de la font","meta_index_follow":"Indexa i segueix els enlla\u00e7os","meta_index_nofollow":"Indexa i no segueixis els enlla\u00e7os","meta_noindex_follow":"No indexis per\u00f2 segueix els enlla\u00e7os","meta_noindex_nofollow":"No indexis i no segueixis els enlla\u00e7os","appearance_style":"Full d\'estils i propietats dels estils",stylesheet:"Full d\'estils",style:"Estil",author:"Autor",copyright:"Copyright",add:"Afegeix un nou element",remove:"Elimina l\'element seleccionat",moveup:"Mou amunt l\'element seleccionat",movedown:"Mou avall l\'element seleccionat","head_elements":"Elements d\'encap\u00e7alament",info:"Informaci\u00f3","add_title":"Element t\u00edtol","add_meta":"Element meta","add_script":"Element script","add_style":"Element estil","add_link":"Element enlla\u00e7","add_base":"Element base","add_comment":"Node comentari","title_element":"Element t\u00edtol","script_element":"Element script","style_element":"Element estil","base_element":"Element base","link_element":"Element enlla\u00e7","meta_element":"Element meta","comment_element":"Comentari",src:"Src",language:"Idioma",href:"Href",target:"Dest\u00ed",type:"Type",charset:"Charset",defer:"Defer",media:"Media",properties:"Propietats",name:"Nom",value:"Valor",content:"Contingut",rel:"Rel",rev:"Rev",hreflang:"Href lang","general_props":"General","advanced_props":"Avan\u00e7at"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/cs_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/cs_dlg.js
deleted file mode 100644
index 7b9d5808d..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/cs_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('cs.fullpage_dlg',{title:"Vlastnosti dokumentu","meta_tab":"Obecn\u00e9","appearance_tab":"Vzhled","advanced_tab":"Roz\u0161\u00ed\u0159en\u00e9","meta_props":"Meta informace",langprops:"Jazyk a k\u00f3dov\u00e1n\u00ed","meta_title":"Titulek","meta_keywords":"Kl\u00ed\u010dov\u00e1 slova","meta_description":"Popis","meta_robots":"Roboti",doctypes:"Typ dokumentu",langcode:"K\u00f3d jazyka",langdir:"Sm\u011br textu",ltr:"Zleva doprava",rtl:"Zprava doleva","xml_pi":"XML deklarace",encoding:"K\u00f3dov\u00e1n\u00ed","appearance_bgprops":"Vlastnosti pozad\u00ed","appearance_marginprops":"Okraje t\u011bla dokumentu","appearance_linkprops":"Vlastnosti odkaz\u016f","appearance_textprops":"Vlastnosti textu",bgcolor:"Barva pozad\u00ed",bgimage:"Obr\u00e1zek pozad\u00ed","left_margin":"Lev\u00fd okraj","right_margin":"Prav\u00fd okraj","top_margin":"Horn\u00ed okraj","bottom_margin":"Spodn\u00ed okraj","text_color":"Barva textu","font_size":"Velikost p\u00edsma","font_face":"Typ p\u00edsma","link_color":"Barva odkazu","hover_color":"Barva zvolen\u00e9ho odkazu","visited_color":"Barva nav\u0161t\u00edven\u00e9ho odkazu","active_color":"Barva aktivn\u00edho odkazu",textcolor:"Barva",fontsize:"Velikost p\u00edsma",fontface:"Typ p\u00edsma","meta_index_follow":"Indexovat a sledovat odkazy","meta_index_nofollow":"Indexovat a nesledovat odkazy","meta_noindex_follow":"Neindexovat, ale sledovat odkazy","meta_noindex_nofollow":"Neindexovat a nesledovat odkazy","appearance_style":"Vlastnosti styl\u016f",stylesheet:"Stylopis",style:"Styl",author:"Autor",copyright:"Autorsk\u00e1 pr\u00e1va",add:"P\u0159idat nov\u00fd element",remove:"Odebrat ozna\u010den\u00fd element",moveup:"P\u0159esu\u0148 ozna\u010den\u00fd element v\u00fd\u0161",movedown:"P\u0159esu\u0148 ozna\u010den\u00fd element n\u00ed\u017e","head_elements":"Hlavi\u010dky",info:"Informace","add_title":"Vlo\u017eit titulek","add_meta":"Vlo\u017eit meta informace","add_script":"Vlo\u017eit skript","add_style":"Vlo\u017eit styl","add_link":"Vlo\u017eit nezobrazovan\u00fd odkaz","add_base":"Vlo\u017eit z\u00e1kladn\u00ed um\u00edst\u011bn\u00ed","add_comment":"Vlo\u017eit koment\u00e1\u0159","title_element":"Titulek","script_element":"Skript","style_element":"Styl","base_element":"Z\u00e1kladn\u00ed um\u00edst\u011bn\u00ed","link_element":"Nezobrazovan\u00fd odkaz","meta_element":"Meta informace","comment_element":"Koment\u00e1\u0159",src:"Zdroj",language:"Jazyk",href:"Soubor/URL",target:"C\u00edl",type:"Typ",charset:"Znakov\u00e1 sada",defer:"Odlo\u017eit (defer)",media:"M\u00e9dia",properties:"Vlastnosti",name:"N\u00e1zev",value:"Hodnota",content:"Obsah",rel:"Vztah str\u00e1nky k c\u00edli",rev:"Vztah c\u00edle ke str\u00e1nce",hreflang:"Jazyk odkazu","general_props":"Obecn\u00e9 parametry","advanced_props":"Roz\u0161\u00ed\u0159en\u00e9 parametry"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/cy_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/cy_dlg.js
deleted file mode 100644
index d1cf795e3..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/cy_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('cy.fullpage_dlg',{title:"Priodweddau dogfen","meta_tab":"Cyffredinol","appearance_tab":"Ymddangosiad","advanced_tab":"Uwch","meta_props":"Gwybodaeth meta",langprops:"Iaith ac amgodiad","meta_title":"Teitl","meta_keywords":"Allweddair","meta_description":"Disgrifiad","meta_robots":"Robotau",doctypes:"Math dogfen",langcode:"Cod iaith",langdir:"Cyfeiriad iaith",ltr:"Chwith i\'r dde",rtl:"De i\'r chwith","xml_pi":"Datganiad XML",encoding:"Amgodiad nodau","appearance_bgprops":"Priodweddau cefndir","appearance_marginprops":"Ymylon corff","appearance_linkprops":"Lliwiau cysylltau","appearance_textprops":"Priodweddau testun",bgcolor:"Lliw cefndir",bgimage:"Delwedd cefndir","left_margin":"Ymyl chwith","right_margin":"Ymyl dde","top_margin":"Ymyl brig","bottom_margin":"Ymyl gwaelod","text_color":"Lliw testun","font_size":"Maint ffont","font_face":"Wyneb ffont","link_color":"Lliw cysylltau","hover_color":"Lliw hofran","visited_color":"Lliw ymwelwyd","active_color":"Lliw actif",textcolor:"Lliw",fontsize:"Maint ffont",fontface:"Teulu ffont","meta_index_follow":"Mynegeio a ddilyn y cysylltau","meta_index_nofollow":"Mynegeio a peidio ddilyn y cysylltau","meta_noindex_follow":"Peidio mynegeio ond ddilyn y cysylltau","meta_noindex_nofollow":"Peidio mynegeio a peidio ddilyn y cysylltau","appearance_style":"Priodweddau dalen-arddull ac arddull",stylesheet:"Dalen-arddull",style:"Arddull",author:"Awdur",copyright:"Hawlfraint",add:"Ychwanegu elfen newydd",remove:"Tynnu elfen dewisedig",moveup:"Symud elfen dewisedig i fyny",movedown:"Symud elfen dewisedig i lawr","head_elements":"Elfennau pen",info:"Gwybodaeth","add_title":"Elfen teitl","add_meta":"Elfen meta","add_script":"Elfen sgript","add_style":"Elfen arddull","add_link":"Elfen cyswllt","add_base":"Elfen sail","add_comment":"Nod sylw","title_element":"Elfen teitl","script_element":"Elfen sgript","style_element":"Elfen arddull","base_element":"Elfen sail","link_element":"Elfen cyswllt","meta_element":"Elfen meta","comment_element":"Sylw",src:"Fynhonell",language:"Iaith",href:"Href",target:"Targed",type:"Math",charset:"Set nodau",defer:"Gohirio",media:"Cyfryngau",properties:"Priodweddau",name:"Enw",value:"Gwerth",content:"Cynnwys",rel:"Perthynas",rev:"Diwygiad",hreflang:"Iaith href","general_props":"Cyfferdinol","advanced_props":"Uwch"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/da_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/da_dlg.js
deleted file mode 100644
index 79fd65897..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/da_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('da.fullpage_dlg',{title:"Dokumentegenskaber","meta_tab":"Generelt","appearance_tab":"Udseende","advanced_tab":"Advanceret","meta_props":"Meta-information",langprops:"Sprog og kodning","meta_title":"Titel","meta_keywords":"N\u00f8gleord","meta_description":"Beskrivelse","meta_robots":"Robots",doctypes:"Doctype",langcode:"Sprogkode",langdir:"Sprogretning",ltr:"Venstre mod h\u00f8jre",rtl:"H\u00f8jre md venstre","xml_pi":"XML declaration",encoding:"Tegns\u00e6t","appearance_bgprops":"Baggrundsegenskaber","appearance_marginprops":"Body margins","appearance_linkprops":"Link farver","appearance_textprops":"Tekstegenskaber",bgcolor:"Baggrundsfarve",bgimage:"Baggrundsbillede","left_margin":"Venstre margin","right_margin":"H\u00f8jre margin","top_margin":"Topmargin","bottom_margin":"Bundmargin","text_color":"Tekstfarve","font_size":"Skriftst\u00f8rrelse","font_face":"Skrifttype","link_color":"Linkfarve","hover_color":"Farve ved aktivering","visited_color":"Farve efter museklik","active_color":"Farve ved museklik",textcolor:"Farve",fontsize:"Skriftst\u00f8rrelse",fontface:"Skrifttype","meta_index_follow":"Indeks og f\u00f8lg links","meta_index_nofollow":"Indeks og f\u00f8lg ikke links","meta_noindex_follow":"Ingen indeks, men f\u00f8lg links","meta_noindex_nofollow":"Ingen indeks og f\u00f8lg ikke links","appearance_style":"Stylesheet og style-egenskaber",stylesheet:"Stylesheet",style:"Style",author:"Forfatter",copyright:"Copyright",add:"Tilf\u00f8j nyt element",remove:"Slet valgte element",moveup:"Flyt valgte element op",movedown:"Flyt valgte element ned","head_elements":"Hovedelement",info:"Information","add_title":"Titelelement","add_meta":"Meta-element","add_script":"Script-element","add_style":"Style-element","add_link":"Link-element","add_base":"Base-element","add_comment":"Kommentar-node","title_element":"Titelelement","script_element":"Script-element","style_element":"Style-element","base_element":"Base-element","link_element":"Link-element","meta_element":"Meta-element","comment_element":"Kommentar",src:"Src",language:"Sprog",href:"Href",target:"Destination",type:"Type",charset:"Tegns\u00e6t",defer:"Defer",media:"Media",properties:"Egenskaber",name:"Navn",value:"V\u00e6rdi",content:"Indhold",rel:"Rel",rev:"Rev",hreflang:"Href lang","general_props":"Generelt","advanced_props":"Advanceret"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/de_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/de_dlg.js
deleted file mode 100644
index ecdff9ed6..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/de_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('de.fullpage_dlg',{title:"Dokument-Eigenschaften","meta_tab":"Allgemein","appearance_tab":"Aussehen","advanced_tab":"Erweitert","meta_props":"Meta-Information",langprops:"Sprache und Codierung","meta_title":"Titel","meta_keywords":"Keywords","meta_description":"Beschreibung","meta_robots":"Robots",doctypes:"DocType",langcode:"Sprachcode",langdir:"Sprachrichtung",ltr:"Links nach Rechts",rtl:"Rechts nach Links","xml_pi":"XML Deklaration",encoding:"Zeichencodierung","appearance_bgprops":"Hintergrund-Eigenschaften","appearance_marginprops":"Abst\u00e4nde des Body","appearance_linkprops":"Linkfarben","appearance_textprops":"Text-Eigenschaften",bgcolor:"Hintergrundfarbe",bgimage:"Hintergrundbild","left_margin":"Linker Abstand","right_margin":"Rechter Abstand","top_margin":"Oberer Abstand","bottom_margin":"Unterer Abstand","text_color":"Textfarbe","font_size":"Schriftgr\u00f6\u00dfe","font_face":"Schriftart","link_color":"Linkfarbe","hover_color":"Hover-Farbe","visited_color":"Visited-Farbe","active_color":"Active-Farbe",textcolor:"Farbe",fontsize:"Schriftgr\u00f6\u00dfe",fontface:"Schriftart","meta_index_follow":"Indizieren und den Links folgen","meta_index_nofollow":"Indizieren, aber den Links nicht folgen","meta_noindex_follow":"Nicht indizieren, aber den Links folgen","meta_noindex_nofollow":"Nicht indizieren und auch nicht den Links folgen","appearance_style":"CSS-Stylesheet und Stileigenschaften",stylesheet:"CSS-Stylesheet",style:"CSS-Stil",author:"Autor",copyright:"Copyright",add:"Neues Element hinzuf\u00fcgen",remove:"Ausgew\u00e4hltes Element entfernen",moveup:"Ausgew\u00e4hltes Element nach oben bewegen",movedown:"Ausgew\u00e4hltes Element nach unten bewegen","head_elements":"\u00dcberschriftenelemente",info:"Information","add_title":"Titel-Element","add_meta":"Meta-Element","add_script":"Script-Element","add_style":"Style-Element","add_link":"Link-Element","add_base":"Base-Element","add_comment":"HTML-Kommentar","title_element":"Titel-Element","script_element":"Script-Element","style_element":"Style-Element","base_element":"Base-Element","link_element":"Link-Element","meta_element":"Meta_Element","comment_element":"Kommentar",src:"Src",language:"Sprache",href:"Href",target:"Ziel",type:"Typ",charset:"Zeichensatz",defer:"Defer",media:"Media",properties:"Eigenschaften",name:"Name",value:"Wert",content:"Inhalt",rel:"Rel",rev:"Rev",hreflang:"Href lang","general_props":"Allgemein","advanced_props":"Erweitert"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/el_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/el_dlg.js
deleted file mode 100644
index 457946ddd..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/el_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('el.fullpage_dlg',{title:"\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 \u03b5\u03b3\u03b3\u03c1\u03ac\u03c6\u03bf\u03c5","meta_tab":"\u0393\u03b5\u03bd\u03b9\u03ba\u03ac","appearance_tab":"\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7","advanced_tab":"\u0393\u03b9\u03b1 \u03c0\u03c1\u03bf\u03c7\u03c9\u03c1\u03b7\u03bc\u03ad\u03bd\u03bf\u03c5\u03c2","meta_props":"\u039c\u03b5\u03c4\u03b1-\u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2",langprops:"\u0393\u03bb\u03ce\u03c3\u03c3\u03b1 \u03ba\u03b1\u03b9 \u03ba\u03c9\u03b4\u03b9\u03ba\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7","meta_title":"\u03a4\u03af\u03c4\u03bb\u03bf\u03c2","meta_keywords":"\u039b\u03ad\u03be\u03b5\u03b9\u03c2 \u03ba\u03bb\u03b5\u03b9\u03b4\u03b9\u03ac","meta_description":"\u03a0\u03b5\u03c1\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae","meta_robots":"\u03a1\u03bf\u03bc\u03c0\u03cc\u03c4",doctypes:"Doctype",langcode:"\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03b3\u03bb\u03ce\u03c3\u03c3\u03b1\u03c2",langdir:"\u039a\u03b1\u03c4\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 \u03b3\u03bb\u03ce\u03c3\u03c3\u03b1\u03c2",ltr:"\u0391\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac \u03c0\u03c1\u03bf\u03c2 \u03b4\u03b5\u03be\u03b9\u03ac",rtl:"\u0394\u03b5\u03be\u03b9\u03ac \u03c0\u03c1\u03bf\u03c2 \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac","xml_pi":"\u0394\u03ae\u03bb\u03c9\u03c3\u03b7 XML",encoding:"\u039a\u03c9\u03b4\u03b9\u03ba\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03ae\u03c1\u03c9\u03bd","appearance_bgprops":"\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 \u03c6\u03cc\u03bd\u03c4\u03bf\u03c5","appearance_marginprops":"\u03a0\u03b5\u03c1\u03b9\u03b8\u03ce\u03c1\u03b9\u03b1 \u03c3\u03ce\u03bc\u03b1\u03c4\u03bf\u03c2","appearance_linkprops":"\u03a7\u03c1\u03ce\u03bc\u03b1\u03c4\u03b1 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03c9\u03bd","appearance_textprops":"\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 \u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5",bgcolor:"\u03a7\u03c1\u03ce\u03bc\u03b1 \u03c6\u03cc\u03bd\u03c4\u03bf\u03c5",bgimage:"\u0395\u03b9\u03ba\u03cc\u03bd\u03b1 \u03c6\u03cc\u03bd\u03c4\u03bf\u03c5","left_margin":"\u0391\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03cc \u03c0\u03b5\u03c1\u03b9\u03b8\u03ce\u03c1\u03b9\u03bf","right_margin":"\u0394\u03b5\u03be\u03b9\u03cc \u03c0\u03b5\u03c1\u03b9\u03b8\u03ce\u03c1\u03b9\u03bf","top_margin":"\u03a0\u03ac\u03bd\u03c9 \u03c0\u03b5\u03c1\u03b9\u03b8\u03ce\u03c1\u03b9\u03bf","bottom_margin":"\u039a\u03ac\u03c4\u03c9 \u03c0\u03b5\u03c1\u03b9\u03b8\u03ce\u03c1\u03b9\u03bf","text_color":"\u03a7\u03c1\u03ce\u03bc\u03b1 \u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5","font_size":"\u039c\u03ad\u03b3\u03b5\u03b8\u03bf\u03c2 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ac\u03c4\u03c9\u03bd","font_face":"\u0393\u03c1\u03b1\u03bc\u03bc\u03b1\u03c4\u03bf\u03c3\u03b5\u03b9\u03c1\u03ac","link_color":"\u03a7\u03c1\u03ce\u03bc\u03b1 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5","hover_color":"\u03a7\u03c1\u03ce\u03bc\u03b1 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5 (Hover)","visited_color":"\u03a7\u03c1\u03ce\u03bc\u03b1 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5 (Visited)","active_color":"\u03a7\u03c1\u03ce\u03bc\u03b1 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5 (Active)",textcolor:"\u03a7\u03c1\u03ce\u03bc\u03b1",fontsize:"\u039c\u03ad\u03b3\u03b5\u03b8\u03bf\u03c2 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ac\u03c4\u03c9\u03bd",fontface:"\u0393\u03c1\u03b1\u03bc\u03bc\u03b1\u03c4\u03bf\u03c3\u03b5\u03b9\u03c1\u03ac","meta_index_follow":"\u039a\u03b1\u03c4\u03b1\u03c7\u03ce\u03c1\u03b7\u03c3\u03b7 \u03ba\u03b1\u03b9 \u03bd\u03b1 \u03b1\u03ba\u03bf\u03bb\u03bf\u03c5\u03b8\u03b7\u03b8\u03bf\u03cd\u03bd \u03bf\u03b9 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf\u03b9","meta_index_nofollow":"\u039a\u03b1\u03c4\u03b1\u03c7\u03ce\u03c1\u03b7\u03c3\u03b7 \u03ba\u03b1\u03b9 \u03bd\u03b1 \u03bc\u03b7\u03bd \u03b1\u03ba\u03bf\u03bb\u03bf\u03c5\u03b8\u03b7\u03b8\u03bf\u03cd\u03bd \u03bf\u03b9 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf\u03b9","meta_noindex_follow":"\u03a7\u03c9\u03c1\u03af\u03c2 \u03ba\u03b1\u03c4\u03b1\u03c7\u03ce\u03c1\u03b7\u03c3\u03b7 \u03ba\u03b1\u03b9 \u03bd\u03b1 \u03b1\u03ba\u03bf\u03bb\u03bf\u03c5\u03b8\u03b7\u03b8\u03bf\u03cd\u03bd \u03bf\u03b9 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf\u03b9","meta_noindex_nofollow":"\u03a7\u03c9\u03c1\u03af\u03c2 \u03ba\u03b1\u03c4\u03b1\u03c7\u03ce\u03c1\u03b7\u03c3\u03b7 \u03ba\u03b1\u03b9 \u03bd\u03b1 \u03bc\u03b7\u03bd \u03b1\u03ba\u03bf\u03bb\u03bf\u03c5\u03b8\u03b7\u03b8\u03bf\u03cd\u03bd \u03bf\u03b9 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf\u03b9","appearance_style":"\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 \u03c3\u03c4\u03c5\u03bb \u03ba\u03b1\u03b9 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5 \u03c3\u03c4\u03c5\u03bb",stylesheet:"\u0391\u03c1\u03c7\u03b5\u03af\u03bf \u03c3\u03c4\u03c5\u03bb",style:"\u03a3\u03c4\u03c5\u03bb",author:"\u03a3\u03c5\u03b3\u03b3\u03c1\u03b1\u03c6\u03ad\u03b1\u03c2",copyright:"\u0394\u03b9\u03ba\u03b1\u03af\u03c9\u03bc\u03b1 \u03ba\u03b1\u03c4\u03b1\u03c3\u03ba\u03b5\u03c5\u03b1\u03c3\u03c4\u03ae",add:"\u03a0\u03c1\u03bf\u03c3\u03b8\u03ae\u03ba\u03b7 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf\u03c5",remove:"\u0391\u03c6\u03b1\u03af\u03c1\u03b5\u03c3\u03b7 \u03b5\u03c0\u03b9\u03bb\u03b5\u03b3\u03bc\u03ad\u03bd\u03bf\u03c5 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf\u03c5",moveup:"\u039c\u03b5\u03c4\u03b1\u03ba\u03af\u03bd\u03b7\u03c3\u03b7 \u03b5\u03c0\u03b9\u03bb\u03b5\u03b3\u03bc\u03ad\u03bd\u03bf\u03c5 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf\u03c5 \u03c0\u03ac\u03bd\u03c9",movedown:"\u039c\u03b5\u03c4\u03b1\u03ba\u03af\u03bd\u03b7\u03c3\u03b7 \u03b5\u03c0\u03b9\u03bb\u03b5\u03b3\u03bc\u03ad\u03bd\u03bf\u03c5 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf\u03c5 \u03ba\u03ac\u03c4\u03c9","head_elements":"\u03a3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03b1 \u03ba\u03b5\u03c6\u03b1\u03bb\u03ae\u03c2",info:"\u03a0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2","add_title":"\u03a3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf \u03c4\u03af\u03c4\u03bb\u03bf\u03c5","add_meta":"\u03a3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf \u03bc\u03b5\u03c4\u03b1-\u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b1\u03c2","add_script":"\u03a3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf Script","add_style":"\u03a3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf \u03c3\u03c4\u03c5\u03bb","add_link":"\u03a3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5","add_base":"\u03a3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf \u03b2\u03ac\u03c3\u03b7\u03c2","add_comment":"\u039a\u03cc\u03bc\u03b2\u03bf\u03c2 \u03c3\u03c7\u03bf\u03bb\u03af\u03bf\u03c5","title_element":"\u03a3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf \u03c4\u03af\u03c4\u03bb\u03bf\u03c5","script_element":"\u03a3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf Script","style_element":"\u03a3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf \u03c3\u03c4\u03c5\u03bb","base_element":"\u03a3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf \u03b2\u03ac\u03c3\u03b7\u03c2","link_element":"\u03a3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5","meta_element":"\u03a3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf \u03bc\u03b5\u03c4\u03b1-\u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b1\u03c2","comment_element":"\u03a3\u03c7\u03cc\u03bb\u03b9\u03bf",src:"\u03a0\u03b7\u03b3\u03ae",language:"\u0393\u03bb\u03ce\u03c3\u03c3\u03b1",href:"Href",target:"\u03a3\u03c4\u03cc\u03c7\u03bf\u03c2",type:"\u03a4\u03cd\u03c0\u03bf\u03c2",charset:"\u03a3\u03b5\u03c4 \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03ae\u03c1\u03c9\u03bd",defer:"Defer",media:"Media",properties:"\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2",name:"\u038c\u03bd\u03bf\u03bc\u03b1",value:"\u03a4\u03b9\u03bc\u03ae",content:"\u03a0\u03b5\u03c1\u03b9\u03b5\u03c7\u03cc\u03bc\u03b5\u03bd\u03bf",rel:"Rel",rev:"Rev",hreflang:"\u0393\u03bb\u03ce\u03c3\u03c3\u03b1 Href","general_props":"\u0393\u03b5\u03bd\u03b9\u03ba\u03ac","advanced_props":"\u0393\u03b9\u03b1 \u03c0\u03c1\u03bf\u03c7\u03c9\u03c1\u03b7\u03bc\u03ad\u03bd\u03bf\u03c5\u03c2"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/en_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/en_dlg.js
deleted file mode 100644
index 516edc74f..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/en_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('en.fullpage_dlg',{title:"Document Properties","meta_tab":"General","appearance_tab":"Appearance","advanced_tab":"Advanced","meta_props":"Meta Information",langprops:"Language and Encoding","meta_title":"Title","meta_keywords":"Keywords","meta_description":"Description","meta_robots":"Robots",doctypes:"Doctype",langcode:"Language Code",langdir:"Language Direction",ltr:"Left to Right",rtl:"Right to Left","xml_pi":"XML Declaration",encoding:"Character Encoding","appearance_bgprops":"Background Properties","appearance_marginprops":"Body Margins","appearance_linkprops":"Link Colors","appearance_textprops":"Text Properties",bgcolor:"Background Color",bgimage:"Background Image","left_margin":"Left Margin","right_margin":"Right Margin","top_margin":"Top Margin","bottom_margin":"Bottom Margin","text_color":"Text Color","font_size":"Font Size","font_face":"Font Face","link_color":"Link Color","hover_color":"Hover Color","visited_color":"Visited Color","active_color":"Active Color",textcolor:"Color",fontsize:"Font Size",fontface:"Font Family","meta_index_follow":"Index and Follow the Links","meta_index_nofollow":"Index and Don\'t Follow the Links","meta_noindex_follow":"Do Not Index but Follow the Links","meta_noindex_nofollow":"Do Not Index and Don\'t Follow the Links","appearance_style":"Stylesheet and Style Properties",stylesheet:"Stylesheet",style:"Style",author:"Author",copyright:"Copyright",add:"Add New Element",remove:"Remove Selected Element",moveup:"Move Selected Element Up",movedown:"Move Selected Element Down","head_elements":"Head Elements",info:"Information","add_title":"Title Element","add_meta":"Meta Element","add_script":"Script Element","add_style":"Style Element","add_link":"Link Element","add_base":"Base Element","add_comment":"Comment Node","title_element":"Title Element","script_element":"Script Element","style_element":"Style Element","base_element":"Base Element","link_element":"Link Element","meta_element":"Meta Element","comment_element":"Comment",src:"Source",language:"Language",href:"HREF",target:"Target",type:"Type",charset:"Charset",defer:"Defer",media:"Media",properties:"Properties",name:"Name",value:"Value",content:"Content",rel:"Rel",rev:"Rev",hreflang:"HREF Lang","general_props":"General","advanced_props":"Advanced"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/eo_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/eo_dlg.js
deleted file mode 100644
index bd11ff311..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/eo_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('eo.fullpage_dlg',{title:"Atributoj de la dokumento","meta_tab":"\u011ceneralaj","appearance_tab":"Aspekto","advanced_tab":"Spertaj","meta_props":"Meta-informo",langprops:"Lingvo kaj enkodigo","meta_title":"Titolo","meta_keywords":"\u015closilvortoj","meta_description":"Priskribo","meta_robots":"Robotoj",doctypes:"Doctype",langcode:"Lingvokodo",langdir:"Tekstodirekto",ltr:"Maldekstre-Dekstren",rtl:"Dekstre-Maldekstren","xml_pi":"Deklaro XML",encoding:"Signa enkodigo","appearance_bgprops":"Fonaj atributoj","appearance_marginprops":"Mar\u011denoj (BODY)","appearance_linkprops":"Koloroj de ligiloj","appearance_textprops":"Atributoj de teksto",bgcolor:"Koloro de fono",bgimage:"Bildo de fono","left_margin":"Maldekstra mar\u011deno","right_margin":"Dekstra mar\u011deno","top_margin":"Supra mar\u011deno","bottom_margin":"Suba mar\u011deno","text_color":"Tekstokoloro","font_size":"Grandeco de tiparo","font_face":"Tiparo","link_color":"Koloro de ligiloj","hover_color":"Koloro dum \u015dvebo","visited_color":"Koloro de vizitita ligilo","active_color":"Koloro de aktiva ligilo",textcolor:"Koloro",fontsize:"Grandeco de tiparo",fontface:"Tiparo","meta_index_follow":"Indeksi kaj sekvi ligilojn","meta_index_nofollow":"Indeksi kaj ne sekvi ligilojn","meta_noindex_follow":"Sekvi ligilojn, sed ne indeksi","meta_noindex_nofollow":"Ne indeksi / ne sekvi ligilojn.","appearance_style":"Atributoj de stilfolio",stylesheet:"Stilfolio",style:"Stilo",author:"A\u016dtoro",copyright:"Kopirajto",add:"Aldoni novan elementon",remove:"Forigi elektitan elementon",moveup:"Suprenigi elektitan elementon",movedown:"Subigi elektitan elementon","head_elements":"Elementoj HEAD",info:"Informo","add_title":"TITLE","add_meta":"META","add_script":"SCRIPT","add_style":"STYLE","add_link":"LINK","add_base":"BASE","add_comment":"Komento","title_element":"TITLE","script_element":"SCRIPT","style_element":"STYLE","base_element":"BASE","link_element":"LINK","meta_element":"META","comment_element":"Komento",src:"src",language:"Lingvo",href:"href",target:"Celo",type:"Tipo",charset:"Signa enkodigo",defer:"Prokrasti",media:"Enhavkomunikilo",properties:"Atributoj",name:"Nomo",value:"Valoro",content:"Enhavo",rel:"rel",rev:"rev",hreflang:"href lang","general_props":"\u0108efaj","advanced_props":"Spertaj"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/es_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/es_dlg.js
deleted file mode 100644
index 94e52a71f..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/es_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('es.fullpage_dlg',{title:"Propiedades del documento","meta_tab":"General","appearance_tab":"Apariencia","advanced_tab":"Avanzado","meta_props":"Informaci\u00f3n Meta",langprops:"Lenguaje y codificaci\u00f3n","meta_title":"T\u00edtulo","meta_keywords":"Palabras clave","meta_description":"Descripci\u00f3n","meta_robots":"Robots",doctypes:"Tipo de doc.",langcode:"C\u00f3digo del lenguaje",langdir:"Direcci\u00f3n del lenguaje",ltr:"Izquierda a derecha",rtl:"Derecha a izquierda","xml_pi":"Declaraci\u00f3n XML",encoding:"Codificaci\u00f3n de caracteres","appearance_bgprops":"Propiedades del fondo","appearance_marginprops":"M\u00e1rgenes","appearance_linkprops":"Colores del v\u00ednculo","appearance_textprops":"Propiedades de texto",bgcolor:"Color de fondo",bgimage:"Imagen de fondo","left_margin":"Margen izquierdo","right_margin":"Margen derecho","top_margin":"Margen superior","bottom_margin":"Margen inferior","text_color":"Color del texto","font_size":"Tama\u00f1o de fuente","font_face":"Fuente","link_color":"Color de v\u00ednculo","hover_color":"Color rat\u00f3n encima","visited_color":"Color visitado","active_color":"Color activo",textcolor:"Color",fontsize:"Tama\u00f1o de fuente",fontface:"Fuente","meta_index_follow":"Indexar y seguir los v\u00ednculos","meta_index_nofollow":"Indexar y no seguir los v\u00ednculos","meta_noindex_follow":"No indexar pero seguir v\u00ednculos","meta_noindex_nofollow":"No indexar y no seguir v\u00ednculos","appearance_style":"Propiedades de hoja de estilos y estilo",stylesheet:"Hoja de estilo",style:"Estilo",author:"Autor",copyright:"Copyright",add:"Agregar nuevo elemento",remove:"Eliminar elemento seleccionado",moveup:"Mover elemento seleccionado hacia arriba",movedown:"Mover elemento seleccionado hacia abajo","head_elements":"Elemento Head",info:"Informaci\u00f3n","add_title":"Elemento Title","add_meta":"Elemento Meta","add_script":"Elemento Script","add_style":"Elemento Style","add_link":"Elemento Link","add_base":"Elemento Base","add_comment":"Nodo Comment","title_element":"Elemento Title","script_element":"Elemento Script","style_element":"Elemento Style","base_element":"Elemento Base","link_element":"Elemento Link","meta_element":"Elemento Meta","comment_element":"Comentario",src:"Src",language:"Lenguaje",href:"Href",target:"Target",type:"Tipo",charset:"Charset",defer:"Defer",media:"Medio",properties:"Propiedades",name:"Nombre",value:"Valor",content:"Contenido",rel:"Rel",rev:"Rev",hreflang:"Href lang","general_props":"General","advanced_props":"Avanzado"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/et_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/et_dlg.js
deleted file mode 100644
index f55f77639..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/et_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('et.fullpage_dlg',{title:"Dokumendi omadused","meta_tab":"\u00dcldine","appearance_tab":"V\u00e4limus","advanced_tab":"P\u00f5hjalikum","meta_props":"\u201eMeta\u201c informatioon",langprops:"Keel ja kodeering","meta_title":"Pealkiri","meta_keywords":"M\u00e4rks\u00f5nad","meta_description":"Kirjeldus","meta_robots":"Robotid",doctypes:"Dokumendi t\u00fc\u00fcp",langcode:"Keele kood",langdir:"Keele suund",ltr:"Vasakult paremale",rtl:"Paremalt vasakule","xml_pi":"XML avaldus",encoding:"Karakteri kodeering","appearance_bgprops":"Tausta seadistus","appearance_marginprops":"Sisu piir","appearance_linkprops":"Lingi v\u00e4rv","appearance_textprops":"Teksti seaded",bgcolor:"Tausta v\u00e4rv",bgimage:"Tausta pilt","left_margin":"Vasak piir","right_margin":"Parem piir","top_margin":"\u00dclemine piir","bottom_margin":"Alumine piir","text_color":"Teksti v\u00e4rv","font_size":"Fondi suurus","font_face":"Fondi n\u00e4gu","link_color":"Lingi v\u00e4rv","hover_color":"\u00dcle-v\u00e4rv","visited_color":"K\u00fclastatud-v\u00e4rv","active_color":"Aktiivne-v\u00e4rv",textcolor:"V\u00f6rv",fontsize:"Fondi suurus",fontface:"Font","meta_index_follow":"M\u00e4rgi ja j\u00e4rgi linki","meta_index_nofollow":"M\u00e4rgi ja \u00e4ra j\u00e4rgi linki","meta_noindex_follow":"\u00c4ra m\u00e4rgi linki, aga j\u00e4rgi linki","meta_noindex_nofollow":"\u00c4ra m\u00e4rgi linki ja \u00e4ra j\u00e4rgi linki","appearance_style":"Stiilileht ja stiili seaded",stylesheet:"Stiilileht",style:"Stiil",author:"Autor",copyright:"Autorikaitse",add:"Lisa uus element",remove:"Eemalda valitud element",moveup:"Liiguta valitud element \u00fclesse",movedown:"Liiguta valitud element alla","head_elements":"P\u00f5hielemendid",info:"Informatioon","add_title":"Pealkirja element","add_meta":"\u201eMeta\u201c element","add_script":"Skript\u2019i element","add_style":"Stiili element","add_link":"Lingi element","add_base":"Baaselement","add_comment":"Kommentaar","title_element":"Pealkirja element","script_element":"Skript\u2019i element","style_element":"Stiili element","base_element":"Baaselement","link_element":"Lingi element","meta_element":"\u201eMeta\u201c element","comment_element":"kommentaar",src:"Src",language:"Keel",href:"Href",target:"Sihtm\u00e4rk",type:"T\u00fc\u00fcp",charset:"Charset",defer:"Edasi l\u00fckkamine",media:"Meedia",properties:"Seaded",name:"Nimi",value:"V\u00e4\u00e4rtus",content:"Sisu",rel:"Rel",rev:"Rev",hreflang:"Href lang","general_props":"\u00dcldine","advanced_props":"T\u00e4psustatud"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/eu_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/eu_dlg.js
deleted file mode 100644
index 4ca2fd9a9..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/eu_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('eu.fullpage_dlg',{title:"Dokumentuaren ezaugarriak","meta_tab":"Orokorra","appearance_tab":"Itxura","advanced_tab":"Aurreratua","meta_props":"Meta datuak",langprops:"Hizkuntza eta kodeketa","meta_title":"Izenburua","meta_keywords":"Hitz-gakoak","meta_description":"Deskribapena","meta_robots":"Robotak",doctypes:"Dokumentu mota",langcode:"Hizkuntza kodea",langdir:"Hizkuntza norabidea",ltr:"Ezkerretik eskuinera",rtl:"Eskuinetik ezkerrera","xml_pi":"XML zehaztapena",encoding:"Karaktere kodeketa","appearance_bgprops":"Atzeko ezaugarriak","appearance_marginprops":"Gorputzaren marginak","appearance_linkprops":"Lotura koloreak","appearance_textprops":"Testu ezaugarriak",bgcolor:"Atzeko kolorea",bgimage:"Atzeko irudia","left_margin":"Ezker margina","right_margin":"Eskuin margina","top_margin":"Goiko margina","bottom_margin":"Beheko margina","text_color":"Testu kolorea","font_size":"Letra tamaina","font_face":"Letra mota","link_color":"Loturaren kolorea","hover_color":"Lotura gainean kolorea","visited_color":"Bisitatutako lotura kolorea","active_color":"Lotura aktiboaren kolorea",textcolor:"Kolorea",fontsize:"Letra tamaina",fontface:"Letra mota","meta_index_follow":"Indexatu eta jarraitu loturak","meta_index_nofollow":"Indexatu eta ez jarraitu loturak","meta_noindex_follow":"Ez indexatu, baina jarraitu loturak","meta_noindex_nofollow":"Ez indexatu eta ez jarraitu loturak","appearance_style":"Estilo orri eta estilo ezaugarriak",stylesheet:"Estilo orria",style:"Estiloa",author:"Egilea",copyright:"Copyright",add:"Gehitu elementua",remove:"Ezabatu aukeratutako elementua",moveup:"Mugitu aukeratutako elementua gora",movedown:"Mugitu aukeratutako elementua behera","head_elements":"Goiburuko elementuak",info:"Informazioa","add_title":"Title elementua","add_meta":"Meta elementua","add_script":"Script elementua","add_style":"Style elementua","add_link":"Link elementua","add_base":"Base elementua","add_comment":"Comment nodoa","title_element":"Title elementua","script_element":"Script elementua","style_element":"Style elementua","base_element":"Base elementua","link_element":"Link elementua","meta_element":"Meta elementua","comment_element":"Iruzkina",src:"Src",language:"Hizkuntza",href:"Href",target:"Helburua",type:"Mota",charset:"Karaktereak",defer:"Defer",media:"Media",properties:"Ezaugarriak",name:"Izena",value:"Balioa",content:"Edukia",rel:"Rel",rev:"Rev",hreflang:"Href hizkuntza","general_props":"Orokorra","advanced_props":"Aurreratua"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/fa_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/fa_dlg.js
deleted file mode 100644
index f826495f0..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/fa_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fa.fullpage_dlg',{title:"\u0645\u0634\u062e\u0635\u0627\u062a \u0633\u0646\u062f","meta_tab":"\u0639\u0645\u0648\u0645\u06cc","appearance_tab":"\u0638\u0627\u0647\u0631","advanced_tab":"\u067e\u06cc\u0634\u0631\u0641\u062a\u0647","meta_props":"\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u062a\u0627 (Meta)",langprops:"\u0632\u0628\u0627\u0646 \u0648 \u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc (Encoding)","meta_title":"\u0639\u0646\u0648\u0627\u0646","meta_keywords":"\u06a9\u0644\u0645\u0627\u062a \u06a9\u0644\u06cc\u062f\u06cc","meta_description":"\u062a\u0648\u0636\u06cc\u062d","meta_robots":"\u0631\u0648\u0628\u0627\u062a \u0647\u0627 (Robots)",doctypes:"\u0646\u0648\u0639 \u0633\u0646\u062f",langcode:"\u06a9\u062f \u0632\u0628\u0627\u0646",langdir:"\u062c\u0647\u062a \u0632\u0628\u0627\u0646",ltr:"\u0686\u067e \u0628\u0647 \u0631\u0627\u0633\u062a",rtl:"\u0631\u0627\u0633\u062a \u0628\u0647 \u0686\u067e","xml_pi":"\u0627\u0639\u0644\u0627\u0646 XML",encoding:"\u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc (Encoding) \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631","appearance_bgprops":"\u0645\u0634\u062e\u0635\u0627\u062a \u0632\u0645\u06cc\u0646\u0647","appearance_marginprops":"\u062d\u0627\u0634\u06cc\u0647 \u0647\u0627\u06cc \u0628\u062f\u0646\u0647 (Body)","appearance_linkprops":"\u0631\u0646\u06af \u0647\u0627\u06cc \u0644\u06cc\u0646\u06a9","appearance_textprops":"\u0645\u0634\u062e\u0635\u0627\u062a \u0645\u062a\u0646",bgcolor:"\u0631\u0646\u06af \u0632\u0645\u06cc\u0646\u0647",bgimage:"\u062a\u0635\u0648\u06cc\u0631 \u0632\u0645\u06cc\u0646\u0647","left_margin":"\u062d\u0627\u0634\u06cc\u0647 \u0686\u067e","right_margin":"\u062d\u0627\u0634\u06cc\u0647 \u0631\u0627\u0633\u062a","top_margin":"\u062d\u0627\u0634\u06cc\u0647 \u0628\u0627\u0644\u0627","bottom_margin":"\u062d\u0627\u0634\u06cc\u0647 \u067e\u0627\u06cc\u06cc\u0646","text_color":"\u0631\u0646\u06af \u0645\u062a\u0646","font_size":"\u0627\u0646\u062f\u0627\u0632\u0647 \u0642\u0644\u0645","font_face":"\u0638\u0627\u0647\u0631 \u0642\u0644\u0645","link_color":"\u0631\u0646\u06af \u0642\u0644\u0645","hover_color":"\u0631\u0646\u06af \u062f\u0631 \u062d\u0627\u0644\u062a \u0642\u0631\u0627\u0631\u06af\u06cc\u0631\u06cc \u0645\u0648\u0633","visited_color":"\u0631\u0646\u06af \u062f\u0631 \u062d\u0627\u0644\u062a \u0628\u0627\u0632\u062f\u06cc\u062f \u0634\u062f\u0647","active_color":"\u0631\u0646\u06af \u062f\u0631 \u062d\u0627\u0644\u062a \u0641\u0639\u0627\u0644",textcolor:"\u0631\u0646\u06af",fontsize:"\u0627\u0646\u062f\u0627\u0632\u0647 \u0642\u0644\u0645",fontface:"\u062e\u0627\u0646\u0648\u0627\u062f\u0647 \u0642\u0644\u0645","meta_index_follow":"\u0641\u0647\u0631\u0633\u062a \u0648 \u062f\u0646\u0628\u0627\u0644\u0647 \u0631\u0648\u06cc \u0644\u06cc\u0646\u06a9 \u0647\u0627","meta_index_nofollow":"\u0641\u0647\u0631\u0633\u062a \u0648 \u0639\u062f\u0645 \u062f\u0646\u0628\u0627\u0644\u0647 \u0631\u0648\u06cc \u0644\u06cc\u0646\u06a9 \u0647\u0627","meta_noindex_follow":"\u0639\u062f\u0645 \u0641\u0647\u0631\u0633\u062a \u0627\u0645\u0627 \u062f\u0646\u0628\u0627\u0644\u0647 \u0631\u0648\u06cc \u0644\u06cc\u0646\u06a9 \u0647\u0627","meta_noindex_nofollow":"\u0639\u062f\u0645 \u0641\u0647\u0631\u0633\u062a \u0648 \u0639\u062f\u0645 \u062f\u0646\u0628\u0627\u0644\u0647 \u0631\u0648\u06cc \u0644\u06cc\u0646\u06a9 \u0647\u0627","appearance_style":"\u0648\u0631\u0642\u0647 \u0627\u0633\u062a\u0627\u06cc\u0644 \u0648 \u0645\u0634\u062e\u0635\u0627\u062a \u0627\u0633\u062a\u0627\u06cc\u0644",stylesheet:"\u0648\u0631\u0642\u0647 \u0627\u0633\u062a\u0627\u06cc\u0644",style:"\u0627\u0633\u062a\u0627\u06cc\u0644",author:"\u0645\u0624\u0644\u0641",copyright:"\u062d\u0642 \u0627\u0646\u062d\u0635\u0627\u0631\u06cc",add:"\u0627\u0641\u0632\u0648\u062f\u0646 \u0639\u0646\u0635\u0631 \u062c\u062f\u06cc\u062f",remove:"\u062d\u0630\u0641 \u0639\u0646\u0635\u0631 \u0627\u0646\u062a\u062e\u0627\u0628 \u0634\u062f\u0647",moveup:"\u0627\u0646\u062a\u0642\u0627\u0644 \u0639\u0646\u0635\u0631 \u0627\u0646\u062a\u062e\u0627\u0628 \u0634\u062f\u0647 \u0628\u0647 \u0628\u0627\u0644\u0627",movedown:"\u0627\u0646\u062a\u0642\u0627\u0644 \u0639\u0646\u0635\u0631 \u0627\u0646\u062a\u062e\u0627\u0628 \u0634\u062f\u0647 \u0628\u0647 \u067e\u0627\u06cc\u06cc\u0646","head_elements":"\u0639\u0646\u0627\u0635\u0631 \u0633\u0631 (Head)",info:"\u0627\u0637\u0644\u0627\u0639\u0627\u062a","add_title":"\u0639\u0646\u0635\u0631 \u0639\u0646\u0648\u0627\u0646","add_meta":"\u0639\u0646\u0635\u0631 \u0645\u062a\u0627 (Meta)","add_script":"\u0639\u0646\u0635\u0631 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a (Script)","add_style":"\u0639\u0646\u0635\u0631 \u0627\u0633\u062a\u0627\u06cc\u0644 (Style)","add_link":"\u0639\u0646\u0635\u0631 \u0644\u06cc\u0646\u06a9 (Link)","add_base":"\u0639\u0646\u0635\u0631 \u067e\u0627\u06cc\u0647 (Base)","add_comment":"\u06af\u0631\u0647 \u062a\u0648\u0636\u06cc\u062d","title_element":"\u0639\u0646\u0635\u0631 \u0639\u0646\u0648\u0627\u0646 (Title)","script_element":"\u0639\u0646\u0635\u0631 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a (Script)","style_element":"\u0639\u0646\u0635\u0631 \u0627\u0633\u062a\u0627\u06cc\u0644 (Style)","base_element":"\u0639\u0646\u0635\u0631 \u067e\u0627\u06cc\u0647","link_element":"\u0639\u0646\u0635\u0631 \u0644\u06cc\u0646\u06a9","meta_element":"\u0639\u0646\u0635\u0631 \u0645\u062a\u0627 (Meta)","comment_element":"\u062a\u0648\u0636\u06cc\u062d",src:"\u0645\u0646\u0628\u0639 (Src)",language:"\u0632\u0628\u0627\u0646",href:"\u0622\u062f\u0631\u0633 (Href)",target:"\u0645\u0642\u0635\u062f (Target)",type:"\u0646\u0648\u0639",charset:"\u0645\u062c\u0645\u0648\u0639\u0647 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 (Charset)",defer:"Defer",media:"\u0631\u0633\u0627\u0646\u0647 (Media)",properties:"\u0645\u0634\u062e\u0635\u0627\u062a",name:"\u0646\u0627\u0645",value:"\u0645\u0642\u062f\u0627\u0631",content:"\u0645\u062d\u062a\u0648\u0627",rel:"Rel",rev:"Rev",hreflang:"\u0632\u0628\u0627\u0646 Href","general_props":"\u0639\u0645\u0648\u0645\u06cc","advanced_props":"\u067e\u06cc\u0634\u0631\u0641\u062a\u0647"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/fi_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/fi_dlg.js
deleted file mode 100644
index 3f1fb393f..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/fi_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fi.fullpage_dlg',{title:"Tiedoston asetukset","meta_tab":"Yleinen","appearance_tab":"Ulkoasu","advanced_tab":"Edistynyt","meta_props":"Metatiedot",langprops:"Kieli ja koodaus","meta_title":"Otsikko","meta_keywords":"Avainsanat","meta_description":"Kuvaus","meta_robots":"Robotit",doctypes:"Dokumenttityypit",langcode:"Kielen koodi",langdir:"Kielen suunta",ltr:"Vasemmalta oikealle",rtl:"Oikealta vasemmalle","xml_pi":"XML-ilmoitus",encoding:"Tekstin koodaus","appearance_bgprops":"Taustan asetukset","appearance_marginprops":"Body-marginaalit","appearance_linkprops":"Linkkien v\u00e4rit","appearance_textprops":"Tekstin asetukset",bgcolor:"Taustan v\u00e4ri",bgimage:"Taustakuva","left_margin":"Vasen marginaali","right_margin":"Oikea marginaali","top_margin":"Yl\u00e4marginaali","bottom_margin":"Alamarginaali","text_color":"Tekstin v\u00e4ri","font_size":"Fonttikoko","font_face":"Fontti","link_color":"Linkin v\u00e4ri","hover_color":"Hover-v\u00e4ri","visited_color":"Vierailtu v\u00e4ri","active_color":"Aktiivinen v\u00e4ri",textcolor:"V\u00e4ri",fontsize:"Fonttikoko",fontface:"Fontti","meta_index_follow":"Indeksoi ja seuraa linkkej\u00e4","meta_index_nofollow":"Indeksoi, mutta \u00e4l\u00e4 seuraa linkkej\u00e4","meta_noindex_follow":"\u00c4l\u00e4 indeksoi, mutta seuraa linkkej\u00e4.","meta_noindex_nofollow":"\u00c4l\u00e4 indeksoi, \u00e4l\u00e4k\u00e4 seuraa linkkej\u00e4","appearance_style":"Tyylitiedosto ja tyylin asetukset",stylesheet:"Tyylitiedosto",style:"Tyyli",author:"Kirjoittaja",copyright:"Copyright",add:"Lis\u00e4\u00e4 uusi elementti",remove:"Poista valittu elementti",moveup:"Siirr\u00e4 valittua elementti\u00e4 yl\u00f6s",movedown:"Siirr\u00e4 valittua elementti\u00e4 alas","head_elements":"P\u00e4\u00e4elementti",info:"Informaatio","add_title":"Otsikkoelementti","add_meta":"Meta-elementti","add_script":"Script-elementti","add_style":"Tyylielementti","add_link":"Linkkielementti","add_base":"Base-elementti","add_comment":"Yleinen elementti","title_element":"Otsikkoelementti","script_element":"Script-elementti","style_element":"Tyylielementti","base_element":"Base-elementti","link_element":"Linkkielementti","meta_element":"Meta-elementti","comment_element":"Kommentti",src:"L\u00e4hde",language:"Kieli",href:"Href",target:"Kohde",type:"Tyyppi",charset:"Kirjasintyyppi",defer:"Mukautuminen",media:"Media",properties:"Asetukset",name:"Nimi",value:"Arvo",content:"Sis\u00e4lt\u00f6",rel:"Rel",rev:"Rev",hreflang:"Href-kieli","general_props":"Yleinen","advanced_props":"Edistynyt"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/fr_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/fr_dlg.js
deleted file mode 100644
index c2ddc65db..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/fr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fr.fullpage_dlg',{title:"Propri\u00e9t\u00e9s du document","meta_tab":"G\u00e9n\u00e9ral","appearance_tab":"Apparence","advanced_tab":"Avanc\u00e9","meta_props":"Metadonn\u00e9es",langprops:"Langue et encodage","meta_title":"Titre","meta_keywords":"Mots-cl\u00e9s","meta_description":"Description","meta_robots":"Robots",doctypes:"Doctype",langcode:"Code de la langue",langdir:"Sens de lecture",ltr:"De gauche \u00e0 droite",rtl:"De droite \u00e0 gauche","xml_pi":"D\u00e9claration XML",encoding:"Encodage des caract\u00e8res","appearance_bgprops":"Propri\u00e9t\u00e9s du fond","appearance_marginprops":"Marge du corps de la page","appearance_linkprops":"Couleurs des liens","appearance_textprops":"Propri\u00e9t\u00e9s du texte",bgcolor:"Couleur de fond",bgimage:"Image de fond","left_margin":"Marge de gauche","right_margin":"Marge de droite","top_margin":"Marge du haut","bottom_margin":"Marge du bas","text_color":"Couleur du texte","font_size":"Taille de la police","font_face":"Nom de la police","link_color":"Couleur des liens","hover_color":"Couleur au survol","visited_color":"Couleur des liens visit\u00e9s","active_color":"Couleur du lien actif",textcolor:"Couleur",fontsize:"Taille de police",fontface:"Nom de la police","meta_index_follow":"Indexer et suivre les liens","meta_index_nofollow":"Indexer et ne pas suivre les liens","meta_noindex_follow":"Ne pas indexer et suivre les liens","meta_noindex_nofollow":"Ne pas indexer et ne pas suivre les liens","appearance_style":"Propri\u00e9t\u00e9s de la feuille de style et du style",stylesheet:"Feuille de style",style:"Style",author:"Auteur",copyright:"Copyright",add:"Ajouter un nouvel \u00e9l\u00e9ment",remove:"Retirer l\'\u00e9l\u00e9ment s\u00e9lectionn\u00e9",moveup:"D\u00e9placer l\'\u00e9l\u00e9ment s\u00e9lectionn\u00e9 vers le haut",movedown:"D\u00e9placer l\'\u00e9l\u00e9ment s\u00e9lectionn\u00e9 vers le bas","head_elements":"\u00c9l\u00e9ments d\'en-t\u00eate",info:"Information","add_title":"\u00c9l\u00e9ment de titre","add_meta":"\u00c9l\u00e9ment Meta","add_script":"\u00c9l\u00e9ment de script","add_style":"\u00c9l\u00e9ment de style","add_link":"\u00c9l\u00e9ment de lien","add_base":"\u00c9l\u00e9ment de base","add_comment":"Commentaire","title_element":"\u00c9l\u00e9ment de titre","script_element":"\u00c9l\u00e9ment de script","style_element":"\u00c9l\u00e9ment de style","base_element":"\u00c9l\u00e9ment de base","link_element":"\u00c9l\u00e9ment de lien","meta_element":"\u00c9l\u00e9ment Meta","comment_element":"Commentaire",src:"Source",language:"Langue",href:"Href",target:"Cible",type:"Type",charset:"Charset",defer:"D\u00e9f\u00e9rer",media:"M\u00e9dia",properties:"Propri\u00e9t\u00e9s",name:"Nom",value:"Valeur",content:"Contenu",rel:"Rel",rev:"Rev",hreflang:"langue Href","general_props":"G\u00e9n\u00e9ral","advanced_props":"Avanc\u00e9"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/gl_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/gl_dlg.js
deleted file mode 100644
index d497cfc65..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/gl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('gl.fullpage_dlg',{title:"Propiedades do documento","meta_tab":"Xeral","appearance_tab":"Apariencia","advanced_tab":"Avanzado","meta_props":"Informaci\u00f3n Meta",langprops:"Lenguaxe e codificaci\u00f3n","meta_title":"T\u00edtulo","meta_keywords":"Verbas chave","meta_description":"Descripci\u00f3n","meta_robots":"Robots",doctypes:"Tipo de doc.",langcode:"C\u00f3digo da lenguaxe",langdir:"Direcci\u00f3n da lenguaxe",ltr:"Esquerda a dereita",rtl:"Dereita a esquerda","xml_pi":"Declaraci\u00f3n XML",encoding:"Codificaci\u00f3n de caracteres","appearance_bgprops":"Propiedades do fondo","appearance_marginprops":"Marxes","appearance_linkprops":"Cores do v\u00ednculo","appearance_textprops":"Propiedades de texto",bgcolor:"Cor de fondo",bgimage:"Imaxe de fondo","left_margin":"Marxe esquerdo","right_margin":"Marxe dereito","top_margin":"Marxe superior","bottom_margin":"Marxe inferior","text_color":"Cor do texto","font_size":"Tama\u00f1o de fonte","font_face":"Fonte","link_color":"Cor de v\u00ednculo","hover_color":"Cor rato encima","visited_color":"Cor visitado","active_color":"Cor activo",textcolor:"Cor",fontsize:"Tama\u00f1o de fonte",fontface:"Fonte","meta_index_follow":"Indexar e segui-los v\u00ednculos","meta_index_nofollow":"Indexar e non segui-los v\u00ednculos","meta_noindex_follow":"Non indexar pero seguir v\u00ednculos","meta_noindex_nofollow":"Non indexar e non seguir v\u00ednculos","appearance_style":"Propiedades de folla de estilos e estilo",stylesheet:"Folla de estilo",style:"Estilo",author:"Autor",copyright:"Copyright",add:"Agregar novo elemento",remove:"Eliminar elemento seleccionado",moveup:"Mover elemento seleccionado arriba",movedown:"Mover elemento seleccionado abaixo","head_elements":"Elementos Head",info:"Informaci\u00f3n","add_title":"Elemento Title","add_meta":"Elemento Meta","add_script":"Elemento Script","add_style":"Elemento Style","add_link":"Elemento Link","add_base":"Elemento Base","add_comment":"Nodo Comment","title_element":"Elemento Title","script_element":"Elemento Script","style_element":"Elemento Style","base_element":"Elemento Base","link_element":"Elemento Link","meta_element":"Elemento Meta","comment_element":"Comentario",src:"Src",language:"Lenguaxe",href:"Href",target:"Obxetivo",type:"Tipo",charset:"Charset",defer:"Defer",media:"Medio",properties:"Propiedades",name:"Nome",value:"Valor",content:"Contido",rel:"Rel",rev:"Rev",hreflang:"Href lang","general_props":"Xeral","advanced_props":"Avanzado"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/he_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/he_dlg.js
deleted file mode 100644
index 69faae39a..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/he_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('he.fullpage_dlg',{title:"\u05de\u05d0\u05e4\u05d9\u05d9\u05e0\u05d9 \u05de\u05e1\u05de\u05da","meta_tab":"\u05db\u05dc\u05dc\u05d9","appearance_tab":"\u05de\u05e8\u05d0\u05d4","advanced_tab":"\u05de\u05ea\u05e7\u05d3\u05dd","meta_props":"\u05ea\u05d2\u05d9 \u05de\u05d8\u05d4",langprops:"\u05e9\u05e4\u05d4 \u05d5\u05e7\u05d9\u05d3\u05d5\u05d3","meta_title":"\u05db\u05d5\u05ea\u05e8\u05ea","meta_keywords":"\u05de\u05d9\u05dc\u05d5\u05ea \u05de\u05e4\u05ea\u05d7","meta_description":"\u05ea\u05d9\u05d0\u05d5\u05e8","meta_robots":"\u05e8\u05d5\u05d1\u05d5\u05d8\u05d9\u05dd",doctypes:"Doctype",langcode:"\u05e7\u05d5\u05d3 \u05d4\u05e9\u05e4\u05d4",langdir:"\u05db\u05d9\u05d5\u05d5\u05df \u05d4\u05e9\u05e4\u05d4",ltr:"\u05de\u05e9\u05de\u05d0\u05dc \u05dc\u05d9\u05de\u05d9\u05df",rtl:"\u05de\u05d9\u05de\u05d9\u05df \u05dc\u05e9\u05de\u05d0\u05dc","xml_pi":"XML declaration",encoding:"\u05e7\u05d9\u05d3\u05d5\u05d3 \u05ea\u05d5\u05d5\u05d9\u05dd","appearance_bgprops":"\u05de\u05d0\u05e4\u05d9\u05d9\u05e0\u05d9 \u05e8\u05e7\u05e2","appearance_marginprops":"Body margins","appearance_linkprops":"\u05e6\u05d1\u05e2 \u05e7\u05d9\u05e9\u05d5\u05e8\u05d9\u05dd","appearance_textprops":"Text properties",bgcolor:"\u05e6\u05d1\u05e2 \u05e8\u05e7\u05e2",bgimage:"\u05ea\u05de\u05d5\u05e0\u05ea \u05e8\u05e7\u05e2","left_margin":"\u05e9\u05d5\u05dc\u05d9\u05d9\u05dd \u05e9\u05de\u05d0\u05dc\u05d9\u05d9\u05dd","right_margin":"\u05e9\u05d5\u05dc\u05d9\u05d9\u05dd \u05d9\u05de\u05e0\u05d9\u05d9\u05dd","top_margin":"\u05e9\u05d5\u05dc\u05d9\u05d9\u05dd \u05e2\u05dc\u05d9\u05d5\u05e0\u05d9\u05dd","bottom_margin":"\u05e9\u05d5\u05dc\u05d9\u05d9\u05dd \u05ea\u05d7\u05ea\u05d9\u05d9\u05dd","text_color":"\u05e6\u05d1\u05e2 \u05d8\u05e7\u05e1\u05d8","font_size":"\u05d2\u05d5\u05d3\u05dc \u05d2\u05d5\u05e4\u05df","font_face":"\u05e1\u05d5\u05d2 \u05d2\u05d5\u05e4\u05df","link_color":"\u05e6\u05d1\u05e2 \u05e7\u05d9\u05e9\u05d5\u05e8","hover_color":"\u05e6\u05d1\u05e2 \u05e7\u05d9\u05e9\u05d5\u05e8 \u05d1\u05de\u05e2\u05d1\u05e8 \u05e2\u05db\u05d1\u05e8","visited_color":"\u05e6\u05d1\u05e2 \u05e7\u05d9\u05e9\u05d5\u05e8 \u05e9\u05e0\u05e6\u05e4\u05d4","active_color":"\u05e6\u05d1\u05e2 \u05e7\u05d9\u05e9\u05d5\u05e8 \u05e4\u05e2\u05d9\u05dc",textcolor:"\u05e6\u05d1\u05e2",fontsize:"\u05d2\u05d5\u05d3\u05dc \u05d2\u05d5\u05e4\u05df",fontface:"\u05d2\u05d5\u05e4\u05df","meta_index_follow":"Index and follow the links","meta_index_nofollow":"Index and don\'t follow the links","meta_noindex_follow":"Do not index but follow the links","meta_noindex_nofollow":"Do not index and don\\\'t follow the links","appearance_style":"Stylesheet and style properties",stylesheet:"\u05e1\u05d2\u05e0\u05d5\u05df \u05e2\u05d9\u05e6\u05d5\u05d1",style:"\u05e2\u05d9\u05e6\u05d5\u05d1",author:"\u05db\u05d5\u05ea\u05d1",copyright:"\u05d6\u05db\u05d5\u05d9\u05d5\u05ea \u05d9\u05d5\u05e6\u05e8\u05d9\u05dd",add:"\u05d4\u05d5\u05e1\u05e3 \u05d0\u05dc\u05de\u05e0\u05d8 \u05d7\u05d3\u05e9",remove:"Remove selected element",moveup:"Move selected element up",movedown:"Move selected element down","head_elements":"Head elements",info:"\u05de\u05d9\u05d3\u05e2","add_title":"Title element","add_meta":"Meta element","add_script":"Script element","add_style":"Style element","add_link":"Link element","add_base":"Base element","add_comment":"Comment node","title_element":"Title element","script_element":"Script element","style_element":"\u05d0\u05dc\u05de\u05e0\u05d8 \u05e2\u05d9\u05e6\u05d5\u05d1","base_element":"\u05d0\u05dc\u05de\u05e0\u05d8 \u05d1\u05e1\u05d9\u05e1","link_element":"\u05d0\u05dc\u05de\u05e0\u05d8 \u05e7\u05d9\u05e9\u05d5\u05e8","meta_element":"Meta element","comment_element":"\u05ea\u05d2\u05d5\u05d1\u05d4",src:"\u05db\u05ea\u05d5\u05d1\u05ea \u05de\u05e7\u05d5\u05e8",language:"\u05e9\u05e4\u05d4",href:"HREF",target:"\u05d9\u05e2\u05d3",type:"\u05e1\u05d5\u05d2",charset:"\u05e7\u05d9\u05d3\u05d5\u05d3",defer:"Defer",media:"\u05de\u05d3\u05d9\u05d4",properties:"\u05de\u05d0\u05e4\u05d9\u05d9\u05e0\u05d9\u05dd",name:"\u05e9\u05dd",value:"\u05e2\u05e8\u05da",content:"\u05ea\u05d5\u05db\u05df",rel:"Rel",rev:"Rev",hreflang:"Href lang","general_props":"\u05db\u05dc\u05dc\u05d9","advanced_props":"\u05de\u05ea\u05e7\u05d3\u05dd"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/hi_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/hi_dlg.js
deleted file mode 100644
index aea6db5f7..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/hi_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hi.fullpage_dlg',{title:"Document properties","meta_tab":"General","appearance_tab":"Appearance","advanced_tab":"Advanced","meta_props":"Meta information",langprops:"Language and encoding","meta_title":"Title","meta_keywords":"Keywords","meta_description":"Description","meta_robots":"Robots",doctypes:"Doctype",langcode:"Language code",langdir:"Language direction",ltr:"Left to right",rtl:"Right to left","xml_pi":"XML declaration",encoding:"Character encoding","appearance_bgprops":"Background properties","appearance_marginprops":"Body margins","appearance_linkprops":"Link colors","appearance_textprops":"Text properties",bgcolor:"Background color",bgimage:"Background image","left_margin":"Left margin","right_margin":"Right margin","top_margin":"Top margin","bottom_margin":"Bottom margin","text_color":"Text color","font_size":"Font size","font_face":"Font face","link_color":"Link color","hover_color":"Hover color","visited_color":"Visited color","active_color":"Active color",textcolor:"Color",fontsize:"Font size",fontface:"Font family","meta_index_follow":"Index and follow the links","meta_index_nofollow":"Index and don\'t follow the links","meta_noindex_follow":"Do not index but follow the links","meta_noindex_nofollow":"Do not index and don\\\'t follow the links","appearance_style":"Stylesheet and style properties",stylesheet:"Stylesheet",style:"Style",author:"Author",copyright:"Copyright",add:"Add new element",remove:"Remove selected element",moveup:"Move selected element up",movedown:"Move selected element down","head_elements":"Head elements",info:"Information","add_title":"Title element","add_meta":"Meta element","add_script":"Script element","add_style":"Style element","add_link":"Link element","add_base":"Base element","add_comment":"Comment node","title_element":"Title element","script_element":"Script element","style_element":"Style element","base_element":"Base element","link_element":"Link element","meta_element":"Meta element","comment_element":"Comment",src:"Src",language:"Language",href:"Href",target:"Target",type:"Type",charset:"Charset",defer:"Defer",media:"Media",properties:"Properties",name:"Name",value:"Value",content:"Content",rel:"Rel",rev:"Rev",hreflang:"Href lang","general_props":"General","advanced_props":"Advanced"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/hr_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/hr_dlg.js
deleted file mode 100644
index 8c8f40cc1..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/hr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hr.fullpage_dlg',{title:"Svojstva dokumenta","meta_tab":"Op\u0107e","appearance_tab":"Izgled","advanced_tab":"Napredno","meta_props":"Meta informacije",langprops:"Jezik i kodiranje","meta_title":"Naslov","meta_keywords":"Klju\u010dne rije\u010di","meta_description":"Opis","meta_robots":"Roboti",doctypes:"Doctype",langcode:"Kod jezika",langdir:"Smjer jezika",ltr:"S lijeva na desno",rtl:"S desna na lijevo","xml_pi":"XML deklaracija",encoding:"Kodiranje znakova","appearance_bgprops":"Svojstva pozadine","appearance_marginprops":"Margina","appearance_linkprops":"Boja linka","appearance_textprops":"Svojstva teksta",bgcolor:"Boja pozadine",bgimage:"Pozadinska slika","left_margin":"Lijeva margina","right_margin":"Desna margina","top_margin":"Gornja margina","bottom_margin":"Donja margina","text_color":"Boja teksta","font_size":"Veli\u010dina pisma","font_face":"Pismo","link_color":"Boja linka","hover_color":"Boja linka ispod mi\u0161a","visited_color":"Boja posje\u0107enog linka","active_color":"Boja aktivnog linka",textcolor:"Boja",fontsize:"Veli\u010dina fonta",fontface:"Skupina fontova","meta_index_follow":"Indeksiraj i slijedi linkove","meta_index_nofollow":"Indeksiraj i ne slijedi linkove","meta_noindex_follow":"Ne indeksiraj i slijedi linkove","meta_noindex_nofollow":"Ne indeksiraj i ne slijedi linkove","appearance_style":"CSS i svojstva stila",stylesheet:"CSS",style:"Stil",author:"Autor",copyright:"Autorska prava",add:"Dodaj novi element",remove:"Ukloni odabrani element",moveup:"Pomakni odabrani element prema gore",movedown:"Pomakni odabrani element prema dolje","head_elements":"Elementi zaglavlja",info:"Informacije","add_title":"Naslovni element","add_meta":"Meta element","add_script":"Skriptni element","add_style":"Sitlski element","add_link":"Element linka","add_base":"Osnovni element","add_comment":"Komentar","title_element":"Naslovni element","script_element":"Skriptni element","style_element":"Stilski element","base_element":"Temeljni element","link_element":"Element linka","meta_element":"Meta element","comment_element":"Komentar",src:"Src",language:"Jezik",href:"Href",target:"Meta",type:"Type",charset:"Charset",defer:"Defer",media:"Media",properties:"Svojstva",name:"Ime",value:"Vrijednost",content:"Sadr\u017eaj",rel:"Rel",rev:"Rev",hreflang:"Href lang","general_props":"Op\u0107e","advanced_props":"Napredno"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/hu_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/hu_dlg.js
deleted file mode 100644
index b20670532..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/hu_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hu.fullpage_dlg',{title:"Dokumentum tulajdons\u00e1gai","meta_tab":"\u00c1ltal\u00e1nos","appearance_tab":"Megjelen\u00e9s","advanced_tab":"Halad\u00f3","meta_props":"Meta inform\u00e1ci\u00f3",langprops:"Nyelv \u00e9s k\u00f3dol\u00e1s","meta_title":"C\u00edm","meta_keywords":"Kulcsszavak","meta_description":"Le\u00edr\u00e1s","meta_robots":"Robotok",doctypes:"Doctype",langcode:"Nyelvk\u00f3d",langdir:"\u00cdr\u00e1s ir\u00e1nya",ltr:"Balr\u00f3l jobra",rtl:"Jobbr\u00f3l balra","xml_pi":"XML deklar\u00e1ci\u00f3",encoding:"Karakterk\u00f3dol\u00e1s","appearance_bgprops":"H\u00e1tt\u00e9r tulajdons\u00e1gai","appearance_marginprops":"Test keret","appearance_linkprops":"Link sz\u00ednek","appearance_textprops":"Sz\u00f6veg tulajdons\u00e1gai",bgcolor:"H\u00e1tt\u00e9rsz\u00edn",bgimage:"H\u00e1tt\u00e9rk\u00e9p","left_margin":"Bal marg\u00f3","right_margin":"Jobb marg\u00f3","top_margin":"Fels\u0151 marg\u00f3","bottom_margin":"Als\u00f3 marg\u00f3","text_color":"Sz\u00f6vegsz\u00edn","font_size":"Bet\u0171m\u00e9ret","font_face":"Bet\u0171t\u00edpus","link_color":"Link sz\u00edn","hover_color":"F\u00f6l\u00e9vitt sz\u00edn","visited_color":"L\u00e1togatva sz\u00edn","active_color":"Akt\u00edv sz\u00edn",textcolor:"Sz\u00edn",fontsize:"Bet\u0171m\u00e9ret",fontface:"Bet\u0171t\u00edpus","meta_index_follow":"Indexel \u00e9s k\u00f6veti a linkeket","meta_index_nofollow":"Indexel, de nem k\u00f6veti a linkeket","meta_noindex_follow":"Nem indexel, de k\u00f6veti a linkeket","meta_noindex_nofollow":"Nem indexel \u00e9s nem k\u00f6veti a linkeket","appearance_style":"Stylesheet \u00e9s style tulajdons\u00e1gok",stylesheet:"Stylesheet",style:"Style",author:"Szerz\u0151",copyright:"Copyright",add:"\u00daj elem hozz\u00e1ad\u00e1sa",remove:"Kijel\u00f6lt elem t\u00f6rl\u00e9se",moveup:"Kijel\u00f6lt elem felfel\u00e9 mozgat\u00e1sa",movedown:"Kijel\u00f6lt elem lefel\u00e9 mozgat\u00e1sa","head_elements":"Fej elemek",info:"Inform\u00e1ci\u00f3","add_title":"C\u00edm elem","add_meta":"Meta elem","add_script":"Script elem","add_style":"Style elem","add_link":"Link elem","add_base":"Base elem","add_comment":"Comment elem","title_element":"Title elem","script_element":"Script elem","style_element":"Style elem","base_element":"Base elem","link_element":"Link elem","meta_element":"Meta elem","comment_element":"Megjegyz\u00e9s",src:"Src",language:"Language",href:"Href",target:"Target",type:"Type",charset:"Charset",defer:"Defer",media:"Media",properties:"Properties",name:"Name",value:"Value",content:"Content",rel:"Rel",rev:"Rev",hreflang:"Href lang","general_props":"\u00c1ltal\u00e1nos","advanced_props":"Halad\u00f3"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/hy_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/hy_dlg.js
deleted file mode 100644
index 3e5bda301..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/hy_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hy.fullpage_dlg',{title:"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430","meta_tab":"\u041e\u0431\u0449\u0435\u0435","appearance_tab":"\u0412\u0438\u0434","advanced_tab":"\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e","meta_props":"\u0426\u0435\u043b\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438",langprops:"\u042f\u0437\u044b\u043a \u0438 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f","meta_title":"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a","meta_keywords":"\u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0441\u043b\u043e\u0432\u0430","meta_description":"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435","meta_robots":"\u0420\u0430\u0431\u043e\u0442\u044b",doctypes:"Doctype",langcode:"\u041a\u043e\u0434 \u044f\u0437\u044b\u043a\u0430",langdir:"\u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u044f\u0437\u044b\u043a\u0430",ltr:"\u0421\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e",rtl:"\u0421\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0435\u0432\u043e","xml_pi":"XML declaration",encoding:"\u041a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430","appearance_bgprops":"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0444\u043e\u043d\u0430","appearance_marginprops":"\u041e\u0442\u0441\u0442\u0443\u043f\u044b","appearance_linkprops":"\u0426\u0432\u0435\u0442 \u0441\u0441\u044b\u043b\u043e\u043a","appearance_textprops":"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0442\u0435\u043a\u0441\u0442\u0430",bgcolor:"\u0426\u0432\u0435\u0442 \u0444\u043e\u043d\u0430",bgimage:"\u0424\u043e\u043d\u043e\u0432\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435","left_margin":"\u041e\u0442\u0441\u0442\u0443\u043f \u0441\u043b\u0435\u0432\u0430","right_margin":"\u041e\u0442\u0441\u0442\u0443\u043f \u0441\u043f\u0440\u0430\u0432\u0430","top_margin":"\u041e\u0442\u0441\u0442\u0443\u043f \u0441\u0432\u0435\u0440\u0445\u0443","bottom_margin":"\u041e\u0442\u0441\u0442\u0443\u043f \u0441\u043d\u0438\u0437\u0443","text_color":"\u0426\u0432\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u0430","font_size":"\u0420\u0430\u0437\u043c\u0435\u0440 \u0448\u0440\u0438\u0444\u0442\u0430","font_face":"\u0428\u0440\u0438\u0444\u0442","link_color":"\u0426\u0432\u0435\u0442 \u0441\u0441\u044b\u043b\u043a\u0438","hover_color":"\u0426\u0432\u0435\u0442 \u0441\u0441\u044b\u043b\u043a\u0438 \u043f\u0440\u0438 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u0438","visited_color":"\u0426\u0432\u0435\u0442 \u043d\u0430\u0436\u0430\u0442\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0438","active_color":"\u0426\u0432\u0435\u0442 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0438",textcolor:"\u0426\u0432\u0435\u0442",fontsize:"\u0420\u0430\u0437\u043c\u0435\u0440 \u0448\u0440\u0438\u0444\u0442\u0430",fontface:"\u0421\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u043e \u0448\u0440\u0438\u0444\u0442\u0430","meta_index_follow":"Index and follow the links","meta_index_nofollow":"Index and don\'t follow the links","meta_noindex_follow":"Do not index but follow the links","meta_noindex_nofollow":"Do not index and don \\ \'t follow the links","appearance_style":"Stylesheet and style properties",stylesheet:"Stylesheet",style:"\u0421\u0442\u0438\u043b\u044c",author:"\u0410\u0432\u0442\u043e\u0440",copyright:"\u041a\u043e\u043f\u0438\u0440\u0430\u0439\u0442",add:"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442",remove:"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442",moveup:"\u041f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432\u0432\u0435\u0440\u0445",movedown:"\u041f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432\u043d\u0438\u0437","head_elements":"Head elements",info:"\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f","add_title":"Title element","add_meta":"Meta element","add_script":"Script element","add_style":"Style element","add_link":"Link element","add_base":"Base element","add_comment":"Comment node","title_element":"Title element","script_element":"Script element","style_element":"Style element","base_element":"Base element","link_element":"Link element","meta_element":"Meta \u044d\u043b\u0435\u043c\u0435\u043d\u0442","comment_element":"\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439",src:"Src",language:"\u042f\u0437\u044b\u043a",href:"Href",target:"Target",type:"Type",charset:"Charset",defer:"Defer",media:"Media",properties:"Properties",name:"\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435",value:"\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435",content:"\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435",rel:"Rel",rev:"Rev",hreflang:"Href lang","general_props":"\u041e\u0431\u0449\u0435\u0435","advanced_props":"\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/id_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/id_dlg.js
deleted file mode 100644
index 051788f42..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/id_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('id.fullpage_dlg',{title:"Document properties","meta_tab":"General","appearance_tab":"Appearance","advanced_tab":"Advanced","meta_props":"Meta information",langprops:"Language and encoding","meta_title":"Title","meta_keywords":"Keywords","meta_description":"Description","meta_robots":"Robots",doctypes:"Doctype",langcode:"Language code",langdir:"Language direction",ltr:"Left to right",rtl:"Right to left","xml_pi":"XML declaration",encoding:"Character encoding","appearance_bgprops":"Background properties","appearance_marginprops":"Body margins","appearance_linkprops":"Link colors","appearance_textprops":"Text properties",bgcolor:"Background color",bgimage:"Background image","left_margin":"Left margin","right_margin":"Right margin","top_margin":"Top margin","bottom_margin":"Bottom margin","text_color":"Text color","font_size":"Font size","font_face":"Font face","link_color":"Link color","hover_color":"Hover color","visited_color":"Visited color","active_color":"Active color",textcolor:"Color",fontsize:"Font size",fontface:"Font family","meta_index_follow":"Index and follow the links","meta_index_nofollow":"Index and don\'t follow the links","meta_noindex_follow":"Do not index but follow the links","meta_noindex_nofollow":"Do not index and don\\\'t follow the links","appearance_style":"Stylesheet and style properties",stylesheet:"Stylesheet",style:"Style",author:"Author",copyright:"Copyright",add:"Add new element",remove:"Remove selected element",moveup:"Move selected element up",movedown:"Move selected element down","head_elements":"Head elements",info:"Information","add_title":"Title element","add_meta":"Meta element","add_script":"Script element","add_style":"Style element","add_link":"Link element","add_base":"Base element","add_comment":"Comment node","title_element":"Title element","script_element":"Script element","style_element":"Style element","base_element":"Base element","link_element":"Link element","meta_element":"Meta element","comment_element":"Comment",src:"Src",language:"Language",href:"Href",target:"Target",type:"Type",charset:"Charset",defer:"Defer",media:"Media",properties:"Properties",name:"Name",value:"Value",content:"Content",rel:"Rel",rev:"Rev",hreflang:"Href lang","general_props":"General","advanced_props":"Advanced"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/is_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/is_dlg.js
deleted file mode 100644
index 73f4cf7f1..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/is_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('is.fullpage_dlg',{title:"Valm\u00f6guleikar skjals","meta_tab":"Almennt","appearance_tab":"\u00datlit","advanced_tab":"\u00cdtarlegt","meta_props":"Meta uppl\u00fdsingar",langprops:"Tungum\u00e1l","meta_title":"Titill","meta_keywords":"Leitaror\u00f0","meta_description":"L\u00fdsing","meta_robots":"Robots",doctypes:"Doctype",langcode:"Tungum\u00e1la k\u00f3\u00f0i",langdir:"Tungum\u00e1la \u00e1tt",ltr:"Vinstri til h\u00e6gri",rtl:"H\u00e6gri til vinstri","xml_pi":"XML declaration",encoding:"Stafa enk\u00f3\u00f0un","appearance_bgprops":"Bakgrunns m\u00f6guleikar","appearance_marginprops":"innihalds sp\u00e1ss\u00eda","appearance_linkprops":"Litir \u00e1 hlekkjum","appearance_textprops":"Text properties",bgcolor:"Bakgrunnslitur",bgimage:"Bakgrunnsmynd","left_margin":"vinstri sp\u00e1ss\u00eda","right_margin":"H\u00e6gri sp\u00e1ss\u00eda","top_margin":"Top sp\u00e1ss\u00eda","bottom_margin":"Botn sp\u00e1ss\u00eda","text_color":"Textalitur","font_size":"Stafast\u00e6r\u00f0","font_face":"Stafager\u00f0","link_color":"Litur \u00e1 hlekk","hover_color":"hover litur","visited_color":"Heims\u00f3ttur litur","active_color":"Virkur litur",textcolor:"Litur",fontsize:"Stafast\u00e6r\u00f0",fontface:"Stafa fj\u00f6lskylda","meta_index_follow":"Index and follow the links","meta_index_nofollow":"Index and don\'t follow the links","meta_noindex_follow":"Do not index but follow the links","meta_noindex_nofollow":"Do not index and don\\\'t follow the links","appearance_style":"St\u00edlsni\u00f0 og eiginleikar",stylesheet:"St\u00edlsni\u00f0",style:"St\u00edll",author:"H\u00f6fundur",copyright:"Eignar\u00e9ttur",add:"B\u00e6ta vi\u00f0 n\u00fdjum hlut",remove:"Fjarl\u00e6gja valinn hlut",moveup:"F\u00e6ra valinn hlut upp",movedown:"F\u00e6ra valinn hlut ni\u00f0ur","head_elements":"A\u00f0al hlutur",info:"Uppl\u00fdsingar","add_title":"Titill hluts","add_meta":"Meta element","add_script":"Script element","add_style":"Style element","add_link":"Link element","add_base":"Base element","add_comment":"B\u00e6ta vi\u00f0 athugasemd","title_element":"Titill hluts","script_element":"Script element","style_element":"Style element","base_element":"Base element","link_element":"Link element","meta_element":"Meta element","comment_element":"Comment",src:"Src",language:"Tungum\u00e1l",href:"Href",target:"\u00c1\u00e6tlunarsta\u00f0ur",type:"Tegund",charset:"stafasett",defer:"V\u00edsun",media:"Margmi\u00f0lun",properties:"Eiginleikar",name:"Nafn",value:"Value",content:"Innihald",rel:"Rel",rev:"Rev",hreflang:"Href lang","general_props":"Almennt","advanced_props":"\u00cdtarlegt"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/it_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/it_dlg.js
deleted file mode 100644
index d5445e832..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/it_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('it.fullpage_dlg',{title:"Propriet\u00e0 Documento","meta_tab":"Generale","appearance_tab":"Aspetto","advanced_tab":"Avanzate","meta_props":"Informazioni Metatag",langprops:"Lingua e codifica","meta_title":"Titolo","meta_keywords":"Parole chiave","meta_description":"Descrizione","meta_robots":"Robots",doctypes:"Doctype",langcode:"Codice lingua",langdir:"Direzione testo",ltr:"Sinistra verso destra",rtl:"Destra verso sinistra","xml_pi":"Dichiarazione XML",encoding:"Codifica carattere","appearance_bgprops":"Propriet\u00e0 sfondo","appearance_marginprops":"Margini body","appearance_linkprops":"Colori collegamenti","appearance_textprops":"Propriet\u00e0 testo",bgcolor:"Colore sfondo",bgimage:"Immagine sfondo","left_margin":"Margine sinistro","right_margin":"Margine destro","top_margin":"Margine superiore","bottom_margin":"Margine inferiore","text_color":"Colore testo","font_size":"Dimensione carattere","font_face":"Tipo carattere","link_color":"Colore collegamento","hover_color":"Colore \\\'Hover\\\'","visited_color":"Colore \\\'Visited\\\'","active_color":"Colore \\\'Active\\\'",textcolor:"Colore",fontsize:"Dimensione carattere",fontface:"Famiglia carattere","meta_index_follow":"Indicizzare e seguire collegamenti","meta_index_nofollow":"Indicizzare e non segure collegamenti","meta_noindex_follow":"Non indicizzare ma seguire collegamenti","meta_noindex_nofollow":"Non indicizzare e non seguire collegamenti","appearance_style":"Propriet\u00e0 stili e fogli di stile",stylesheet:"Fogli di stile",style:"Stile",author:"Autore",copyright:"Copyright",add:"Aggiungi nuovo elemento",remove:"Rimuovi elemento selezionato",moveup:"Sposta elemento selezionato in alto",movedown:"Sposta elemento selezionato in basso","head_elements":"Elementi Head",info:"Informazioni","add_title":"Elemento Titolo","add_meta":"Elemento Meta","add_script":"Elemento Script","add_style":"Elemento Style","add_link":"Elemento Link","add_base":"Elemento Base","add_comment":"Nodo Commento","title_element":"Elemento Titolo","script_element":"Elemento Script","style_element":"Elemento Style","base_element":"Elemento Base","link_element":"Elemento Link","meta_element":"Elemento Meta","comment_element":"Commento",src:"Sorgente",language:"Linguaggio",href:"Href",target:"Target",type:"Tipo",charset:"Set caratteri",defer:"Defer",media:"Media",properties:"Propriet\u00e0",name:"Nome",value:"Valore",content:"Contenuto",rel:"Rel",rev:"Rev",hreflang:"Href lang","general_props":"Generale","advanced_props":"Avanzate"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/ja_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/ja_dlg.js
deleted file mode 100644
index 656436305..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/ja_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ja.fullpage_dlg',{title:"\u30da\u30fc\u30b8\u306e\u5c5e\u6027","meta_tab":"\u4e00\u822c","appearance_tab":"\u8868\u793a","advanced_tab":"\u9ad8\u5ea6\u306a\u8a2d\u5b9a","meta_props":"\u30e1\u30bf\u60c5\u5831",langprops:"\u8a00\u8a9e\u3068\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0","meta_title":"\u30bf\u30a4\u30c8\u30eb","meta_keywords":"\u30ad\u30fc\u30ef\u30fc\u30c9","meta_description":"\u8aac\u660e","meta_robots":"\u691c\u7d22\u30ed\u30dc\u30c3\u30c8\u306e\u5236\u5fa1",doctypes:"\u6587\u66f8\u578b",langcode:"\u8a00\u8a9e\u30b3\u30fc\u30c9",langdir:"\u6587\u7ae0\u306e\u65b9\u5411",ltr:"\u5de6\u304b\u3089\u53f3",rtl:"\u53f3\u304b\u3089\u5de6","xml_pi":"XML\u5ba3\u8a00",encoding:"\u6587\u5b57\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0","appearance_bgprops":"\u80cc\u666f\u306e\u5c5e\u6027","appearance_marginprops":"Body\u306e\u4f59\u767d","appearance_linkprops":"\u30ea\u30f3\u30af\u306e\u8272","appearance_textprops":"\u6587\u5b57\u306e\u5c5e\u6027",bgcolor:"\u80cc\u666f\u306e\u8272",bgimage:"\u80cc\u666f\u306e\u753b\u50cf","left_margin":"\u5de6\u306e\u4f59\u767d","right_margin":"\u53f3\u306e\u4f59\u767d","top_margin":"\u4e0a\u306e\u4f59\u767d","bottom_margin":"\u4e0b\u306e\u4f59\u767d","text_color":"\u6587\u5b57\u306e\u8272","font_size":"\u6587\u5b57\u306e\u5927\u304d\u3055","font_face":"\u30d5\u30a9\u30f3\u30c8","link_color":"\u30ea\u30f3\u30af\u306e\u8272","hover_color":"\u30de\u30a6\u30b9\u30ab\u30fc\u30bd\u30eb\u304c\u3042\u308b\u30ea\u30f3\u30af\u306e\u8272(hover)","visited_color":"\u65e2\u306b\u8aad\u3093\u3060\u30ea\u30f3\u30af\u306e\u8272(visited)","active_color":"\u30af\u30ea\u30c3\u30af\u3057\u305f\u77ac\u9593\u306e\u30ea\u30f3\u30af\u306e\u8272(active)",textcolor:"\u8272",fontsize:"\u6587\u5b57\u306e\u5927\u304d\u3055",fontface:"\u30d5\u30a9\u30f3\u30c8","meta_index_follow":"\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u4f7f\u7528\u3057\u3066\u30ea\u30f3\u30af\u3092\u305f\u3069\u308b","meta_index_nofollow":"\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u4f7f\u7528\u3057\u3066\u30ea\u30f3\u30af\u306f\u305f\u3069\u3089\u306a\u3044","meta_noindex_follow":"\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u4f7f\u7528\u3057\u306a\u3044\u304c\u30ea\u30f3\u30af\u3092\u305f\u3069\u308b","meta_noindex_nofollow":"\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u4f7f\u7528\u3057\u306a\u3044\u3067\u30ea\u30f3\u30af\u3082\u305f\u3069\u3089\u306a\u3044","appearance_style":"\u30b9\u30bf\u30a4\u30eb\u30b7\u30fc\u30c8\u3068\u30b9\u30bf\u30a4\u30eb\u306e\u5c5e\u6027",stylesheet:"\u30b9\u30bf\u30a4\u30eb\u30b7\u30fc\u30c8",style:"\u30b9\u30bf\u30a4\u30eb",author:"\u4f5c\u6210\u8005",copyright:"\u8457\u4f5c\u6a29",add:"\u65b0\u3057\u304f\u8981\u7d20\u3092\u8ffd\u52a0",remove:"\u9078\u629e\u3057\u305f\u8981\u7d20\u3092\u524a\u9664",moveup:"\u9078\u629e\u3057\u305f\u8981\u7d20\u3092\u4e0a\u306b\u79fb\u52d5",movedown:"\u9078\u629e\u3057\u305f\u8981\u7d20\u3092\u4e0b\u306b\u79fb\u52d5","head_elements":"Head\u8981\u7d20",info:"\u60c5\u5831","add_title":"Title\u8981\u7d20","add_meta":"Meta\u8981\u7d20","add_script":"Script\u8981\u7d20","add_style":"Style\u8981\u7d20","add_link":"Link\u8981\u7d20","add_base":"Base\u8981\u7d20","add_comment":"Comment\u30ce\u30fc\u30c9","title_element":"Title\u8981\u7d20","script_element":"Script\u8981\u7d20","style_element":"Style\u8981\u7d20","base_element":"Base\u8981\u7d20","link_element":"Link\u8981\u7d20","meta_element":"Meta\u8981\u7d20","comment_element":"\u30b3\u30e1\u30f3\u30c8",src:"src",language:"\u8a00\u8a9e",href:"Href",target:"Target",type:"Type",charset:"Charset",defer:"Defer",media:"Media",properties:"Properties",name:"Name",value:"Value",content:"Content",rel:"Rel",rev:"Rev",hreflang:"Href\u306e\u8a00\u8a9e","general_props":"\u4e00\u822c","advanced_props":"\u8a73\u7d30\u306a\u8a2d\u5b9a"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/ka_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/ka_dlg.js
deleted file mode 100644
index 0bf678976..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/ka_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ka.fullpage_dlg',{title:"\u10d3\u10dd\u10d9\u10e3\u10db\u10d4\u10dc\u10e2\u10d8\u10e1 \u10db\u10d0\u10ee\u10d0\u10e1\u10d8\u10d0\u10d7\u10d4\u10d1\u10da\u10d4\u10d1\u10d8","meta_tab":"\u10e1\u10d0\u10d4\u10e0\u10d7\u10dd","appearance_tab":"\u10e9\u10d5\u10d4\u10dc\u10d4\u10d1\u10d0","advanced_tab":"\u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d8\u10d7","meta_props":"\u10d8\u10dc\u10e4\u10dd\u10e0\u10db\u10d0\u10ea\u10d8\u10d8\u10e1 \u10db\u10d8\u10d6\u10d0\u10dc\u10d8",langprops:"\u10d4\u10dc\u10d0 \u10d3\u10d0 \u10d9\u10dd\u10d3\u10d8\u10e0\u10d4\u10d1\u10d0","meta_title":"\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8","meta_keywords":"\u10e1\u10d0\u10d9\u10d5\u10d0\u10dc\u10eb\u10dd \u10e1\u10d8\u10e2\u10e7\u10d5\u10d4\u10d1\u10d8","meta_description":"\u10d0\u10e0\u10ec\u10d4\u10e0\u10d0","meta_robots":"\u10dc\u10d0\u10db\u10e3\u10e8\u10d4\u10d5\u10e0\u10d4\u10d1\u10d8",doctypes:"\u10e2\u10d8\u10de\u10d8",langcode:"\u10d4\u10dc\u10d8\u10e1 \u10d9\u10dd\u10d3\u10d8",langdir:"\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1 \u10db\u10d8\u10db\u10d0\u10e0\u10d7\u10e3\u10da\u10d4\u10d1\u10d0",ltr:"\u10db\u10d0\u10e0\u10ea\u10e1\u10dc\u10d8\u10d3\u10d0\u10dc \u10db\u10d0\u10e0\u10ef\u10d5\u10dc\u10d8\u10d5",rtl:"\u10db\u10d0\u10e0\u10ef\u10d5\u10dc\u10d8\u10d3\u10d0\u10dc \u10db\u10d0\u10e0\u10ea\u10ee\u10dc\u10d8\u10d5","xml_pi":"XML \u10d2\u10d0\u10dc\u10ea\u10ee\u10d0\u10d3\u10d4\u10d1\u10d0",encoding:"\u10d9\u10dd\u10d3\u10d8\u10e0\u10d4\u10d1\u10d0","appearance_bgprops":"\u10e4\u10dd\u10dc\u10d8\u10e1 \u10db\u10d0\u10ee\u10d0\u10e1\u10d8\u10d0\u10d7\u10d4\u10d1\u10da\u10d4\u10d1\u10d8","appearance_marginprops":"\u10d3\u10d0\u10e8\u10dd\u10e0\u10d4\u10d1\u10d4\u10d1\u10d8","appearance_linkprops":"\u10d1\u10db\u10e3\u10da\u10d4\u10d1\u10d8\u10e1 \u10e4\u10d4\u10e0\u10d8","appearance_textprops":"\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1 \u10db\u10d0\u10d0\u10e1\u10d8\u10d0\u10d7\u10d4\u10d1\u10da\u10d4\u10d1\u10d8",bgcolor:"\u10e4\u10dd\u10dc\u10d8\u10e1 \u10e4\u10d4\u10e0\u10d8",bgimage:"\u10e4\u10dd\u10dc\u10e3\u10e0\u10d8 \u10d2\u10d0\u10db\u10dd\u10e1\u10d0\u10ee\u10e3\u10da\u10d4\u10d1\u10d0","left_margin":"\u10d3\u10d0\u10e8\u10dd\u10e0\u10d4\u10d1\u10d0 \u10db\u10d0\u10e0\u10ea\u10e1\u10dc\u10d8\u10d3\u10d0\u10dc","right_margin":"\u10d3\u10d0\u10e8\u10dd\u10e0\u10d4\u10d1\u10d0 \u10db\u10d0\u10e0\u10ef\u10d5\u10dc\u10d8\u10d3\u10d0\u10dc","top_margin":"\u10d3\u10d0\u10e8\u10dd\u10e0\u10d4\u10d1\u10d0 \u10d6\u10d4\u10db\u10dd\u10d3\u10d0\u10dc","bottom_margin":"\u10d3\u10d0\u10e8\u10dd\u10e0\u10d4\u10d1\u10d0 \u10e5\u10d5\u10d4\u10db\u10dd\u10d3\u10d0\u10dc","text_color":"\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1 \u10e4\u10d4\u10e0\u10d8","font_size":"\u10e8\u10e0\u10d8\u10e4\u10e2\u10d8\u10e1 \u10d6\u10dd\u10db\u10d0","font_face":"\u10e8\u10e0\u10d8\u10e4\u10e2\u10d8","link_color":"\u10d1\u10db\u10e3\u10da\u10d8\u10e1 \u10e4\u10d4\u10e0\u10d8","hover_color":"\u10d1\u10db\u10e3\u10da\u10d8\u10e1 \u10e4\u10d4\u10e0\u10d8 \u10d2\u10d0\u10d0\u10e5\u10e2\u10d8\u10e3\u10e0\u10d4\u10d1\u10d8\u10e1\u10d0\u10e1","visited_color":"\u10d2\u10d0\u10d0\u10e5\u10e2\u10d8\u10e3\u10e0\u10d4\u10d1\u10e3\u10da\u10d8 \u10d1\u10db\u10e3\u10da\u10d8\u10e1 \u10e4\u10d4\u10e0\u10d8","active_color":"\u10d0\u10e5\u10e2\u10d8\u10e3\u10e0\u10d8 \u10d1\u10db\u10e3\u10da\u10d8\u10e1 \u10e4\u10d4\u10e0\u10d8",textcolor:"\u10e4\u10d4\u10e0\u10d8",fontsize:"\u10e8\u10e0\u10d8\u10e4\u10e2\u10d8\u10e1 \u10d6\u10dd\u10db\u10d0",fontface:"\u10e8\u10e0\u10d8\u10e4\u10e2\u10d8\u10e1 \u10d9\u10d0\u10e2\u10d4\u10d2\u10dd\u10e0\u10d8\u10d0","meta_index_follow":"\u10d3\u10d0\u10d5\u10d0\u10d8\u10dc\u10d3\u10d4\u10e5\u10e1\u10dd\u10d7 \u10d3\u10d0 \u10d2\u10d0\u10d5\u10e7\u10d5\u10d4\u10d7 \u10d1\u10db\u10e3\u10da\u10d4\u10d1\u10e1","meta_index_nofollow":"\u10d3\u10d0\u10d5\u10d0\u10d8\u10dc\u10d3\u10d4\u10e5\u10e1\u10dd\u10d7 \u10d3\u10d0 \u10d0\u10e0 \u10d2\u10d0\u10d5\u10e7\u10d5\u10d4\u10d7 \u10d1\u10db\u10e3\u10da\u10d4\u10d1\u10e1","meta_noindex_follow":"\u10d0\u10e0 \u10d3\u10d0\u10d5\u10d0\u10d8\u10dc\u10d3\u10d4\u10e5\u10e1\u10dd\u10d7, \u10db\u10d0\u10d2\u10e0\u10d0\u10db \u10d1\u10db\u10e3\u10da\u10d4\u10d1\u10e1 \u10d2\u10d0\u10d5\u10e7\u10d5\u10d4\u10d7","meta_noindex_nofollow":"\u10d0\u10e0 \u10d3\u10d0\u10d5\u10d0\u10d8\u10dc\u10d3\u10d4\u10e5\u10e1\u10dd\u10d7 \u10d3\u10d0 \u10d0\u10e0 \u10d2\u10d0\u10d5\u10e7\u10d5\u10d4\u10d7 \u10d1\u10db\u10e3\u10da\u10d4\u10d1\u10e1","appearance_style":"\u10e1\u10e2\u10d8\u10da\u10d4\u10d1\u10d8\u10e1 \u10db\u10d0\u10e9\u10d5\u10d4\u10dc\u10d4\u10d1\u10da\u10d4\u10d1\u10d8 \u10d3\u10d0 \u10e1\u10d8\u10d0",stylesheet:"\u10e1\u10e2\u10d8\u10da\u10d4\u10d1\u10d8\u10e1 \u10e1\u10d8\u10d0",style:"\u10e1\u10e2\u10d8\u10da\u10d8",author:"\u10d0\u10d5\u10e2\u10dd\u10e0\u10d8",copyright:"\u10d9\u10dd\u10de\u10d8\u10e0\u10d0\u10d8\u10e2\u10d8",add:"\u10d0\u10ee\u10d0\u10da\u10d8 \u10d4\u10da\u10d4\u10db\u10d4\u10dc\u10e2\u10d8\u10e1 \u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0",remove:"\u10db\u10dd\u10dc\u10d8\u10e8\u10dc\u10e3\u10da\u10d8 \u10d4\u10da\u10d4\u10db\u10d4\u10dc\u10e2\u10d8\u10e1 \u10ec\u10d0\u10e8\u10da\u10d0",moveup:"\u10d4\u10da\u10d4\u10db\u10d4\u10dc\u10e2\u10d8\u10e1 \u10d6\u10d4\u10db\u10dd\u10d7 \u10d2\u10d0\u10d3\u10d0\u10d0\u10d3\u10d2\u10d8\u10da\u10d4\u10d1\u10d0",movedown:"\u10d4\u10da\u10d4\u10db\u10d4\u10dc\u10e2\u10d8\u10e1 \u10e5\u10d5\u10d4\u10db\u10dd\u10d7 \u10d2\u10d0\u10d3\u10d0\u10d0\u10d3\u10d2\u10d8\u10da\u10d4\u10d1\u10d0","head_elements":"\u10d4\u10da\u10d4\u10db\u10d4\u10dc\u10e2\u10d8 Header",info:"\u10d8\u10dc\u10e4\u10dd\u10e0\u10db\u10d0\u10ea\u10d8\u10d0","add_title":"\u10d4\u10da\u10d4\u10db\u10d4\u10dc\u10e2\u10d8 Title","add_meta":"\u10d4\u10da\u10d4\u10db\u10d4\u10dc\u10e2\u10d8 Meta","add_script":"\u10d4\u10da\u10d4\u10db\u10d4\u10dc\u10e2\u10d8 Script","add_style":"\u10d4\u10da\u10d4\u10db\u10d4\u10dc\u10e2\u10d8 Style","add_link":"\u10d4\u10da\u10d4\u10db\u10d4\u10dc\u10e2\u10d8 Link","add_base":"\u10d4\u10da\u10d4\u10db\u10d4\u10dc\u10e2\u10d8 Base","add_comment":"\u10d9\u10dd\u10db\u10d4\u10dc\u10e2\u10d0\u10e0\u10d8","title_element":"\u10d4\u10da\u10d4\u10db\u10d4\u10dc\u10e2\u10d8 Title","script_element":"\u10d4\u10da\u10d4\u10db\u10d4\u10dc\u10e2\u10d8 Script","style_element":"\u10d4\u10da\u10d4\u10db\u10d4\u10dc\u10e2\u10d8 Style","base_element":"\u10d4\u10da\u10d4\u10db\u10d4\u10dc\u10e2\u10d8 Base","link_element":"\u10d4\u10da\u10d4\u10db\u10d4\u10dc\u10e2\u10d8 Link","meta_element":"\u10d4\u10da\u10d4\u10db\u10d4\u10dc\u10e2\u10d8 Meta","comment_element":"\u10d9\u10dd\u10db\u10d4\u10dc\u10e2\u10d8\u10d0\u10e0\u10d8",src:"Src",language:"\u10d4\u10dc\u10d0",href:"\u10d1\u10db\u10e3\u10da\u10d8",target:"\u10db\u10d8\u10d6\u10d0\u10dc\u10d8",type:"\u10e2\u10d8\u10de\u10d8",charset:"\u10d9\u10dd\u10d3\u10d8\u10e0\u10d4\u10d1\u10d0",defer:"\u10d2\u10d0\u10d3\u10d0\u10e2\u10d0\u10dc\u10d0",media:"\u10db\u10d4\u10d3\u10d8\u10d0",properties:"\u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8",name:"\u10e1\u10d0\u10ee\u10d4\u10da\u10ec\u10dd\u10d3\u10d4\u10d1\u10d0",value:"\u10db\u10d0\u10e9\u10d5\u10d4\u10dc\u10d4\u10d1\u10d4\u10da\u10d8",content:"\u10e8\u10d8\u10dc\u10d0\u10d0\u10e0\u10e1\u10d8",rel:"Rel",rev:"Rev",hreflang:"\u10d4\u10dc\u10d8\u10e1 \u10d1\u10db\u10e3\u10da\u10d8","general_props":"\u10e1\u10d0\u10d4\u10e0\u10d7\u10dd","advanced_props":"\u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d8\u10d7"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/ko_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/ko_dlg.js
deleted file mode 100644
index b3d629852..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/ko_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ko.fullpage_dlg',{title:"\ubb38\uc11c \uc18d\uc131","meta_tab":"\uc77c\ubc18","appearance_tab":"\ud45c\uc2dc","advanced_tab":"\uc138\ubd80 \uc0ac\ud56d","meta_props":"\uba54\ud0c0 \uc815\ubcf4",langprops:"\uc5b8\uc5b4 \ubc0f \uc778\ucf54\ub529","meta_title":"\uc81c\ubaa9","meta_keywords":"\ud0a4\uc6cc\ub4dc","meta_description":"\uc124\uba85","meta_robots":"\ub85c\ubd07",doctypes:"Doctype",langcode:"\uc5b8\uc5b4 \ucf54\ub4dc",langdir:"\ubb38\uc790 \ubc29\ud5a5",ltr:"\uc67c\ucabd\uc5d0\uc11c \uc624\ub978\ucabd\uc73c\ub85c",rtl:"\uc624\ub978\ucabd\uc5d0\uc11c \uc67c\ucabd\uc73c\ub85c","xml_pi":"XML \uc120\uc5b8",encoding:"\ubb38\uc790 \uc778\ucf54\ub529","appearance_bgprops":"\ubc30\uacbd \uc18d\uc131","appearance_marginprops":"Body \ub9c8\uc9c4","appearance_linkprops":"\ub9c1\ud06c\uc0c9","appearance_textprops":"\ud14d\uc2a4\ud2b8 \uc18d\uc131",bgcolor:"\ubc30\uacbd\uc0c9",bgimage:"\ubc30\uacbd \uc774\ubbf8\uc9c0","left_margin":"\uc67c\ucabd \ub9c8\uc9c4","right_margin":"\uc624\ub978\ucabd \ub9c8\uc9c4","top_margin":"\uc704 \ub9c8\uc9c4","bottom_margin":"\uc544\ub798 \ub9c8\uc9c4","text_color":"\ubb38\uc790\uc0c9","font_size":"\uae00\uaf34 \ud06c\uae30","font_face":"\uae00\uaf34\uba85","link_color":"\ub9c1\ud06c\uc0c9","hover_color":"\ub9c1\ud06c\uc0c9(hover)","visited_color":"\ub9c1\ud06c\uc0c9(visited)","active_color":"\ub9c1\ud06c\uc0c9(active)",textcolor:"\uc0c9",fontsize:"\uae00\uaf34 \ud06c\uae30",fontface:"\uae00\uaf34\uad70","meta_index_follow":"\ubaa8\ub450 \ud5c8\uac00","meta_index_nofollow":"\ud398\uc774\uc9c0\ub97c \ud5c8\uac00\ud558\uc9c0\ub9cc \ub9c1\ud06c \uae08\uc9c0","meta_noindex_follow":"\ud398\uc774\uc9c0\ub97c \uae08\uc9c0\ud558\uace0 \ub9c1\ud06c \ud5c8\uac00","meta_noindex_nofollow":"\ubaa8\ub450 \uae08\uc9c0","appearance_style":"\uc2a4\ud0c0\uc77c\uc2dc\ud2b8 \ubc0f \uc11c\uc2dd \uc18d\uc131",stylesheet:"\uc2a4\ud0c0\uc77c\uc2dc\ud2b8",style:"\uc11c\uc2dd",author:"\uc81c\uc791\uc790",copyright:"\uc800\uc791\uad8c",add:"\uc0c8 \uc694\uc18c \ucd94\uac00",remove:"\uc120\ud0dd\ud55c \uc694\uc18c \uc0ad\uc81c",moveup:"\uc120\ud0dd\ud55c \uc694\uc18c\ub97c \uc704\ub85c \uc774\ub3d9",movedown:"\uc120\ud0dd\ud55c \uc694\uc18c\ub97c \uc544\ub798\ub85c \uc774\ub3d9","head_elements":"Head \uc694\uc18c",info:"\uc815\ubcf4","add_title":"Title \uc694\uc18c","add_meta":"Meta \uc694\uc18c","add_script":"Script \uc694\uc18c","add_style":"Style \uc694\uc18c","add_link":"Link \uc694\uc18c","add_base":"Base \uc694\uc18c","add_comment":"\uc8fc\uc11d \uc694\uc18c","title_element":"Title \uc694\uc18c","script_element":"Script \uc694\uc18c","style_element":"Style \uc694\uc18c","base_element":"Base \uc694\uc18c","link_element":"Link \uc694\uc18c","meta_element":"Meta \uc694\uc18c","comment_element":"\uc8fc\uc11d",src:"Src",language:"Language",href:"Href",target:"Target",type:"Type",charset:"Charset",defer:"Defer",media:"Media",properties:"\uc18d\uc131",name:"\uc774\ub984",value:"\uac12",content:"\ub0b4\uc6a9",rel:"Rel",rev:"Rev",hreflang:"Href lang","general_props":"\uc77c\ubc18","advanced_props":"\uc138\ubd80 \uc0ac\ud56d"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/lt_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/lt_dlg.js
deleted file mode 100644
index de70876a0..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/lt_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('lt.fullpage_dlg',{title:"Dokumento nustatymai","meta_tab":"Bendra","appearance_tab":"I\u0161vaizda","advanced_tab":"I\u0161pl\u0117sta","meta_props":"Meta informacija",langprops:"Kalba ir koduot\u0117","meta_title":"Pavadinimas","meta_keywords":"Rakta\u017eod\u017eiai","meta_description":"Apra\u0161as","meta_robots":"Robotai",doctypes:"Dokumento tipas",langcode:"Kalbos kodas",langdir:"Kalbos kryptis",ltr:"I\u0161 kair\u0117s \u012f de\u0161in\u0119",rtl:"I\u0161 de\u0161in\u0117s \u012f kair\u0119","xml_pi":"XML deklaracijos",encoding:"Simboli\u0173 koduot\u0117","appearance_bgprops":"Fono nustatymai","appearance_marginprops":"K\u016bno para\u0161t\u0117s","appearance_linkprops":"Nuorod\u0173 spalvos","appearance_textprops":"Teksto nustatymai",bgcolor:"Fono spalva",bgimage:"Fono paveiksl\u0117lis","left_margin":"Kair\u0117 para\u0161t\u0117","right_margin":"De\u0161in\u0117 para\u0161t\u0117","top_margin":"Vir\u0161utin\u0117 para\u0161t\u0117","bottom_margin":"Apatin\u0117 para\u0161t\u0117","text_color":"Teksto spalva","font_size":"\u0160rifto dydis","font_face":"\u0160riftas","link_color":"Nuorodos spalva","hover_color":"U\u017evedus pele spalva","visited_color":"Aplankytos spalva","active_color":"Aktyvios spalva",textcolor:"Spalva",fontsize:"\u0160rifto dydis",fontface:"\u0160rifto \u0161eima","meta_index_follow":"Indeksuoti ir sekti nuorodomis","meta_index_nofollow":"Indeksuoti ir nesekti nuorodomis","meta_noindex_follow":"Neindeksuoti, bet sekti nuorodomis","meta_noindex_nofollow":"Neindeksuoti ir nesekti nuorodomis","appearance_style":"Stili\u0173 lapo ir stiliaus nustatymai",stylesheet:"Stili\u0173 lapas",style:"Stilius",author:"Autorius",copyright:"Autoriaus teis\u0117s",add:"Prid\u0117ti nauj\u0105 element\u0105",remove:"Pa\u0161alinti pa\u017eym\u0117t\u0105 element\u0105",moveup:"Perkelti pa\u017eym\u0117t\u0105 element\u0105 \u012f vir\u0161\u0173",movedown:"Perkelti pa\u017eym\u0117t\u0105 element\u0105 \u012f apa\u010di\u0105","head_elements":"Antra\u0161t\u0117s elementai",info:"Informacija","add_title":"Pavadinimo elementas","add_meta":"Meta elementas","add_script":"Skripto elementas","add_style":"Stiliaus elementas","add_link":"Nuorodos elementas","add_base":"Bazinis elementas","add_comment":"Komentaro mazgas","title_element":"Pavadinimo elementas","script_element":"Skripto elementas","style_element":"Stiliaus elementas","base_element":"Bazinis elementas","link_element":"Nuorodos elementas","meta_element":"Meta elementas","comment_element":"Komentaras",src:"\u0160altinis",language:"Kalba",href:"Href",target:"Paskirtis",type:"Tipas",charset:"Koduot\u0117",defer:"Atid\u0117ti",media:"Medija",properties:"Nustatymai",name:"Vardas",value:"Reik\u0161m\u0117",content:"Turinys",rel:"Laida",rev:"Pataisa",hreflang:"Href kalba","general_props":"Bendra","advanced_props":"I\u0161pl\u0117sta"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/lv_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/lv_dlg.js
deleted file mode 100644
index c3c578127..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/lv_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('lv.fullpage_dlg',{title:"Document properties","meta_tab":"General","appearance_tab":"Appearance","advanced_tab":"Advanced","meta_props":"Meta information",langprops:"Language and encoding","meta_title":"Title","meta_keywords":"Keywords","meta_description":"Description","meta_robots":"Robots",doctypes:"Doctype",langcode:"Language code",langdir:"Language direction",ltr:"Left to right",rtl:"Right to left","xml_pi":"XML declaration",encoding:"Character encoding","appearance_bgprops":"Background properties","appearance_marginprops":"Body margins","appearance_linkprops":"Link colors","appearance_textprops":"Text properties",bgcolor:"Background color",bgimage:"Background image","left_margin":"Left margin","right_margin":"Right margin","top_margin":"Top margin","bottom_margin":"Bottom margin","text_color":"Text color","font_size":"Font size","font_face":"Font face","link_color":"Link color","hover_color":"Hover color","visited_color":"Visited color","active_color":"Active color",textcolor:"Color",fontsize:"Font size",fontface:"Font family","meta_index_follow":"Index and follow the links","meta_index_nofollow":"Index and don\'t follow the links","meta_noindex_follow":"Do not index but follow the links","meta_noindex_nofollow":"Do not index and don\\\'t follow the links","appearance_style":"Stylesheet and style properties",stylesheet:"Stylesheet",style:"Style",author:"Author",copyright:"Copyright",add:"Add new element",remove:"Remove selected element",moveup:"Move selected element up",movedown:"Move selected element down","head_elements":"Head elements",info:"Information","add_title":"Title element","add_meta":"Meta element","add_script":"Script element","add_style":"Style element","add_link":"Link element","add_base":"Base element","add_comment":"Comment node","title_element":"Title element","script_element":"Script element","style_element":"Style element","base_element":"Base element","link_element":"Link element","meta_element":"Meta element","comment_element":"Comment",src:"Src",language:"Language",href:"Href",target:"Target",type:"Type",charset:"Charset",defer:"Defer",media:"Media",properties:"Properties",name:"Name",value:"Value",content:"Content",rel:"Rel",rev:"Rev",hreflang:"Href lang","general_props":"General","advanced_props":"Advanced"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/mk_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/mk_dlg.js
deleted file mode 100644
index e70b7cab3..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/mk_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('mk.fullpage_dlg',{title:"\u0421\u0432\u043e\u0458\u0441\u0442\u0432\u0430 \u043d\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0442","meta_tab":"\u041e\u0441\u043d\u043e\u0432\u043d\u043e","appearance_tab":"\u0418\u0437\u0433\u043b\u0435\u0434","advanced_tab":"\u041d\u0430\u043f\u0440\u0435\u0434\u043d\u043e","meta_props":"\u041c\u0435\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0458\u0430",langprops:"\u0408\u0430\u0437\u0438\u043a \u0438 \u043a\u043e\u0434\u0438\u0440\u0430\u045a\u0435","meta_title":"\u041d\u0430\u0441\u043b\u043e\u0432","meta_keywords":"\u041a\u043b\u0443\u0447\u043d\u0438 \u0437\u0431\u043e\u0440\u043e\u0432\u0438","meta_description":"\u041e\u043f\u0438\u0441","meta_robots":"\u0420\u043e\u0431\u043e\u0442\u0438",doctypes:"\u0422\u0438\u043f \u043d\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0442",langcode:"\u041a\u043e\u0434 \u043d\u0430 \u0458\u0430\u0437\u0438\u043a\u043e\u0442",langdir:"\u041d\u0430\u0441\u043e\u043a\u0430 \u043d\u0430 \u0458\u0430\u0437\u0438\u043a\u043e\u0442",ltr:"\u041e\u0434 \u043b\u0435\u0432\u043e \u043d\u0430 \u0434\u0435\u0441\u043d\u043e",rtl:"\u041e\u0434 \u0434\u0435\u0441\u043d\u043e \u043d\u0430 \u043b\u0435\u0432\u043e","xml_pi":"XML \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0446\u0438\u0458\u0430",encoding:"\u041a\u043e\u0434\u0438\u0440\u0430\u045a\u0435 \u043d\u0430 \u0437\u043d\u0430\u0446\u0438\u0442\u0435","appearance_bgprops":"\u0421\u0432\u043e\u0458\u0441\u0442\u0432\u0430 \u043d\u0430 \u043f\u043e\u0437\u0430\u0434\u0438\u043d\u0430\u0442\u0430","appearance_marginprops":"\u041c\u0430\u0440\u0433\u0438\u043d\u0438 \u043d\u0430 \u0442\u0435\u043b\u043e\u0442\u043e","appearance_linkprops":"\u0411\u043e\u0458\u0430 \u043d\u0430 \u043b\u0438\u043d\u043a\u043e\u0432\u0438\u0442\u0435","appearance_textprops":"\u0421\u0432\u043e\u0458\u0441\u0442\u0432\u043e \u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u043e\u0442",bgcolor:"\u0411\u043e\u0458\u0430 \u043d\u0430 \u043f\u043e\u0437\u0430\u0434\u0438\u043d\u0430\u0442\u0430",bgimage:"\u041f\u043e\u0437\u0430\u0434\u0438\u043d\u0441\u043a\u0430 \u0441\u043b\u0438\u043a\u0430","left_margin":"\u041b\u0435\u0432\u0430 \u043c\u0430\u0440\u0433\u0438\u043d\u0430","right_margin":"\u0414\u0435\u0441\u043d\u0430 \u043c\u0430\u0440\u0433\u0438\u043d\u0430","top_margin":"\u0413\u043e\u0440\u043d\u0430 \u043c\u0430\u0440\u0433\u0438\u043d\u0430","bottom_margin":"\u0414\u043e\u043b\u043d\u0430 \u043c\u0430\u0440\u0438\u043d\u0430","text_color":"\u0411\u043e\u0458\u0430 \u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u043e\u0442","font_size":"\u0413\u043e\u043b\u0435\u043c\u0438\u043d\u0430 \u043d\u0430 \u0444\u043e\u043d\u0442\u043e\u0442","font_face":"\u0418\u0437\u0433\u043b\u0440\u0434 \u043d\u0430 \u0444\u043e\u043d\u0442\u043e\u0442","link_color":"\u0411\u043e\u0458\u0430 \u043d\u0430 \u043b\u0438\u043d\u043a\u043e\u0442","hover_color":"\u0411\u043e\u0458\u0430 \u043d\u0430 \u043b\u0438\u043d\u043a\u043e\u0442 \u043f\u0440\u0438 \u043f\u0440\u0435\u043c\u0438\u043d\u0443\u0432\u0430\u045a\u0435 \u043f\u0440\u0435\u043a\u0443 \u043d\u0435\u0433\u043e","visited_color":"\u0411\u043e\u0458\u0430 \u043d\u0430 \u043f\u043e\u0441\u0435\u0442\u0435\u043d\u0438 \u043b\u0438\u043d\u043a\u043e\u0432\u0438","active_color":"\u0411\u043e\u0458\u0430 \u043d\u0430 \u0430\u043a\u0442\u0438\u0432\u0435\u043d \u043b\u0438\u043d\u043a",textcolor:"\u0411\u043e\u0458\u0430",fontsize:"\u0413\u043e\u043b\u0435\u043c\u0438\u043d\u0430 \u043d\u0430 \u0444\u043e\u043d\u0442\u043e\u0442",fontface:"\u0413\u0440\u0443\u043f\u0430 \u043d\u0430 \u0444\u043e\u043d\u0442\u043e\u0432\u0438","meta_index_follow":"\u0418\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u0430\u0458 \u0438 \u0441\u043b\u0435\u0434\u0438 \u0433\u043e \u043b\u0438\u043d\u043a\u043e\u0442","meta_index_nofollow":"\u0418\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u0430\u0458 \u0438 \u043d\u0435 \u0433\u043e \u0441\u043b\u0435\u0434\u0438 \u043b\u0438\u043d\u043a\u043e\u0442","meta_noindex_follow":"\u041d\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u0430\u0458 \u043d\u043e \u0441\u043b\u0435\u0434\u0438 \u0433\u043e \u043b\u0438\u043d\u043a\u043e\u0442","meta_noindex_nofollow":"\u041d\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u0430\u0458 \u0438 \u043d\u0435 \u0433\u043e \u0441\u043b\u0435\u0434\u0438 \u043b\u0438\u043d\u043a\u043e\u0442","appearance_style":"CSS \u0438 \u0441\u0432\u043e\u0458\u0441\u0442\u0432\u0430 \u043d\u0430 \u0441\u0442\u0438\u043b\u043e\u0442",stylesheet:"CSS",style:"\u0421\u0442\u0438\u043b",author:"\u0410\u0432\u0442\u043e\u0440",copyright:"\u0410\u0432\u0442\u043e\u0440\u0441\u043a\u0438 \u043f\u0440\u0430\u0432\u0430",add:"\u0414\u043e\u0434\u0430\u0458 \u043d\u043e\u0432 \u0435\u043b\u0435\u043c\u0435\u043d\u0442",remove:"\u041e\u0434\u0441\u0442\u0440\u0430\u043d\u0438 \u0433\u043e \u0438\u0437\u0431\u0440\u0430\u043d\u0438\u043e\u0442 \u0435\u043b\u0435\u043c\u0435\u043d\u0442",moveup:"\u041f\u043e\u043c\u0435\u0441\u0442\u0438 \u0433\u043e \u0438\u0437\u0431\u0440\u0430\u043d\u043e\u0438\u043e\u0442 \u0435\u043b\u0435\u043c\u0435\u043d\u0442 \u043d\u0430\u0433\u043e\u0440\u0435",movedown:"\u041f\u043e\u043c\u0435\u0441\u0442\u0438 \u0433\u043e \u0438\u0437\u0431\u0440\u0430\u043d\u0438\u043e\u0442 \u0435\u043b\u0435\u043c\u0435\u043d\u0442 \u043d\u0430\u0434\u043e\u043b\u0435","head_elements":"\u0415\u043b\u0435\u043c\u0435\u043d\u0442\u0438 \u0437\u0430\u0433\u043b\u0430\u0432\u0438\u0458\u0430",info:"\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0458\u0430","add_title":"\u041d\u0430\u0441\u043b\u043e\u0432\u0435\u043d \u0435\u043b\u0435\u043c\u0435\u043d\u0442","add_meta":"\u041c\u0435\u0442\u0430 \u0435\u043b\u0435\u043c\u0435\u043d\u0442","add_script":"\u0421\u043a\u0440\u0438\u043f\u0442\u0435\u043d \u0435\u043b\u0435\u043c\u0435\u043d\u0442","add_style":"\u0421\u0442\u0438\u043b\u0441\u043a\u0438 \u0435\u043b\u0435\u043c\u0435\u043d\u0442","add_link":"\u0415\u043b\u0435\u043c\u0435\u043d\u0442 \u0437\u0430 \u043f\u043e\u0432\u0440\u0437\u0438\u0432\u0430\u045a\u0435 (\u043b\u0438\u043d\u043a)","add_base":"\u041e\u0441\u043d\u043e\u0432\u0435\u043d \u0435\u043b\u0435\u043c\u0435\u043d\u0442","add_comment":"\u041a\u043e\u043c\u0435\u043d\u0442\u0430\u0440","title_element":"\u041d\u0430\u0441\u043b\u043e\u0432\u0435\u043d \u0435\u043b\u0435\u043c\u0435\u043d\u0442","script_element":"\u0421\u043a\u0440\u0438\u043f\u0442\u0435\u043d \u0435\u043b\u0435\u043c\u0435\u043d\u0442","style_element":"\u0421\u0442\u0438\u043b\u0441\u043a\u0438 \u0435\u043b\u0435\u043c\u0435\u043d\u0442","base_element":"\u041e\u0441\u043d\u043e\u0432\u0435\u043d \u0435\u043b\u0435\u043c\u0435\u043d\u0442","link_element":"\u0415\u043b\u0435\u043c\u0435\u043d\u0442 \u0437\u0430 \u043f\u043e\u0432\u0440\u0437\u0443\u0432\u0430\u045a\u0435 (\u043b\u0438\u043d\u043a)","meta_element":"\u041c\u0435\u0442\u0430 \u0435\u043b\u0435\u043c\u0435\u043d\u0442","comment_element":"\u041a\u043e\u043c\u0435\u043d\u0442\u0430\u0440",src:"\u0418\u0437\u0432\u043e\u0440",language:"\u0408\u0430\u0437\u0438\u043a",href:"Href",target:"\u041c\u0435\u0442\u0430",type:"\u0422\u0438\u043f",charset:"Charset",defer:"Defer",media:"\u041c\u0435\u0434\u0438\u0443\u043c\u0438",properties:"\u0421\u043e\u0458\u0441\u0442\u0432\u0430",name:"\u0418\u043c\u0435",value:"\u0412\u0440\u0435\u0434\u043d\u043e\u0441\u0442",content:"\u0421\u043e\u0434\u0440\u0436\u0438\u043d\u0430",rel:"Rel",rev:"Rev",hreflang:"Href lang","general_props":"\u041e\u0441\u043d\u043e\u0432\u043d\u043e","advanced_props":"\u041d\u0430\u043f\u0440\u0435\u0434\u043d\u043e"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/ms_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/ms_dlg.js
deleted file mode 100644
index 83751480a..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/ms_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ms.fullpage_dlg',{title:"Alatan dokumen","meta_tab":"Am","appearance_tab":"Penglihatan","advanced_tab":"Lanjutan","meta_props":"Meta informasi",langprops:"Bahasa dan enkod","meta_title":"Tajuk","meta_keywords":"Kata kunci","meta_description":"Huraian","meta_robots":"Robot",doctypes:"Doctype",langcode:"Kod bahasa",langdir:"Arah bahasa",ltr:"Kiri ke kanan",rtl:"Kanan ke kiri","xml_pi":"XML deklarasi",encoding:"PengKod aksara","appearance_bgprops":"Alatan latar belakang","appearance_marginprops":"Ruangan tepi isi kandungan","appearance_linkprops":"Pautan warna","appearance_textprops":"Alatan teks",bgcolor:"Warna latar belakang",bgimage:"Imej latar belakang","left_margin":"Ruangan tepi kiri","right_margin":"Ruangan tepi kanan","top_margin":"Ruangan tepi atas","bottom_margin":"Ruangan tepi bawah","text_color":"Warna teks","font_size":"Saiz Huruf","font_face":"Jenis Huruf","link_color":"Pautan Warna","hover_color":"Warna di atas","visited_color":"Warna telah lawat","active_color":"Warna aktif",textcolor:"Warna",fontsize:"Saiz huruf",fontface:"Keluarga huruf","meta_index_follow":"Indeks dan ikut pautan","meta_index_nofollow":"Indeks dan jangan ikut pautan","meta_noindex_follow":"Jangan indeks tapi ikut pautan","meta_noindex_nofollow":"Jangan indeks dan ikut pautan","appearance_style":"Stylesheet dan alatan gaya",stylesheet:"Stylesheet",style:"Gaya",author:"Pengarang",copyright:"Hakcipta",add:"Tambah unsur baru",remove:"Alih unsur yang dipilih",moveup:"Alih unsur yang dipilih ke atas",movedown:"Alih unsur yang dipilih ke bawah","head_elements":"Unsur pembuka",info:"Informasi","add_title":"Unsur tajuk","add_meta":"Unsur meta","add_script":"Unsur skrip","add_style":"Unsur gaya","add_link":"Unsur pautan","add_base":"Unsur dasar","add_comment":"Nod komen","title_element":"Unsur tajuk","script_element":"Unsur skrip","style_element":"Unsur gaya","base_element":"Unsur dasar","link_element":"Unsur pautan","meta_element":"Unsur meta","comment_element":"Komen",src:"Src",language:"Bahasa",href:"Href",target:"Sasaran",type:"Jenis",charset:"Set huruf",defer:"Menangguhkan",media:"Media",properties:"Alatan",name:"Nama",value:"Nilai",content:"Isi kandungan",rel:"Rel",rev:"Rev",hreflang:"Href lang","general_props":"Am","advanced_props":"Lanjutan"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/nb_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/nb_dlg.js
deleted file mode 100644
index 3c4b2696f..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/nb_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nb.fullpage_dlg',{title:"Dokumentegenskaper","meta_tab":"Generelt","appearance_tab":"Utseende","advanced_tab":"Avansert","meta_props":"Metainformasjon",langprops:"Spr\u00e5k og koding","meta_title":"Tittel","meta_keywords":"N\u00f8kkelord","meta_description":"Beskrivelse","meta_robots":"Roboter",doctypes:"Doctype",langcode:"Spr\u00e5kkode",langdir:"Skriftretning",ltr:"Venstre mot h\u00f8yre",rtl:"H\u00f8yre mot venstre","xml_pi":"XML-deklarasjon",encoding:"Tegnkonvertering","appearance_bgprops":"Bakgrunnsegenskaper","appearance_marginprops":"Body-marg","appearance_linkprops":"Lenkefarger","appearance_textprops":"Tekstegenskaper",bgcolor:"Bakgrunn",bgimage:"Bakgrunnsbilde","left_margin":"Venstre marg","right_margin":"H\u00f8yre marg","top_margin":"Toppmarg","bottom_margin":"Bunnmarg","text_color":"Farge","font_size":"Skriftst\u00f8rrelse","font_face":"Skrifttype","link_color":"Lenkefarge","hover_color":"Mus over-farge","visited_color":"Bes\u00f8kt-farge","active_color":"Aktive farge",textcolor:"Farge",fontsize:"Skriftst\u00f8rrelse",fontface:"Skrifttype","meta_index_follow":"Indekser, og f\u00f8lg lenkene","meta_index_nofollow":"Indekser, men ikke f\u00f8lg lenkene","meta_noindex_follow":"Ikke indekser, men f\u00f8lg lenkene","meta_noindex_nofollow":"Ikke indekser, og ikke f\u00f8lg lenkene","appearance_style":"Stilark og stilegenskaper",stylesheet:"Stilark",style:"Stil",author:"Forfatter",copyright:"Copyright",add:"Legg til nytt element",remove:"Fjern",moveup:"Flytt markert element opp",movedown:"Flytt markert element ned","head_elements":"Overskriftselementer",info:"Informasjon","add_title":"Tittelelement","add_meta":"Metaelement","add_script":"Skriptelement","add_style":"Stilelement","add_link":"Lenkeelement","add_base":"Basiselement","add_comment":"Kommentarnode","title_element":"Tittelelement","script_element":"Skriptelement","style_element":"Stilelement","base_element":"Basiselement","link_element":"Lenkeelement","meta_element":"Metaelement","comment_element":"Kommentar",src:"Skjerm",language:"Spr\u00e5k",href:"Href",target:"M\u00e5l",type:"Type",charset:"Tegnsett",defer:"Defer",media:"Objekt",properties:"Egenskaper",name:"Navn",value:"Verdi",content:"Innhold",rel:"Sidens forhold til m\u00e5let",rev:"M\u00e5lets forhold til siden",hreflang:"Href lang","general_props":"Generelt","advanced_props":"Avasert"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/nl_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/nl_dlg.js
deleted file mode 100644
index 9124146ce..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/nl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nl.fullpage_dlg',{title:"Documenteigenschappen","meta_tab":"Algemeen","appearance_tab":"Weergave","advanced_tab":"Geavanceerd","meta_props":"Meta informatie",langprops:"Taal en codering","meta_title":"Titel","meta_keywords":"Sleutelwoorden","meta_description":"Beschrijving","meta_robots":"Robots",doctypes:"Doctype",langcode:"Taalcode",langdir:"Taalrichting",ltr:"Van links naar rechts",rtl:"Van rechts naar links","xml_pi":"XML toewijzing",encoding:"Karaktercodering","appearance_bgprops":"Achtergrondeigenschappen","appearance_marginprops":"Bodymarge","appearance_linkprops":"Linkkleuren","appearance_textprops":"Teksteigenschappen",bgcolor:"Achtergrondkleur",bgimage:"Achtergrondafbeelding","left_margin":"Linkermarge","right_margin":"Rechtermarge","top_margin":"Bovenmarge","bottom_margin":"Ondermarge","text_color":"Tekstkleur","font_size":"Tekengrootte","font_face":"Lettertype","link_color":"Linkkleur","hover_color":"Hoverkleur","visited_color":"Bezocht kleur","active_color":"Actieve kleur",textcolor:"Kleur",fontsize:"Tekengrootte",fontface:"Lettertype","meta_index_follow":"Links indexeren en volgen","meta_index_nofollow":"Links indexeren maar niet volgen","meta_noindex_follow":"Links volgen maar niet indexeren","meta_noindex_nofollow":"Links niet indexeren en niet volgen","appearance_style":"Stijlblad en stijleigenschappen",stylesheet:"Stijlblad",style:"Stijl",author:"Auteur",copyright:"Copyright",add:"Nieuw element toevoegen",remove:"Geselecteerde elementen verwijderen",moveup:"Geselecteerde elementen omhoog verplaatsen",movedown:"Geselecteerde elementen omlaag verplaatsen","head_elements":"Kopelementen",info:"Informatie","add_title":"Titelelement","add_meta":"Meta-element","add_script":"Scriptelement","add_style":"Stijlelement","add_link":"Linkelement","add_base":"Basiselement","add_comment":"Opmerkingknooppunt","title_element":"Titelelement","script_element":"Scriptelement","style_element":"Stijlelement","base_element":"Basiselement","link_element":"Linkelement","meta_element":"Meta-element","comment_element":"Opmerking",src:"Bron",language:"Taal",href:"HREF",target:"Doel",type:"Type",charset:"Karakterset",defer:"Uitstellen",media:"Media",properties:"Eigenschappen",name:"Naam",value:"Waarde",content:"Inhoud",rel:"Rel",rev:"Rev",hreflang:"HREF taal","general_props":"Algemeen","advanced_props":"Geavanceerd"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/nn_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/nn_dlg.js
deleted file mode 100644
index 433cfab06..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/nn_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nn.fullpage_dlg',{title:"Dokumenteigenskapar","meta_tab":"Generelt","appearance_tab":"Utsj\u00e5nad","advanced_tab":"Avansert","meta_props":"Metainformasjon",langprops:"Spr\u00e5k og koding","meta_title":"Tittel","meta_keywords":"N\u00f8kkelord","meta_description":"Omtale","meta_robots":"Roboter",doctypes:"Doctype",langcode:"Spr\u00e5kkode",langdir:"Skriftretning",ltr:"Venstre mot h\u00f8gre",rtl:"H\u00f8gre mot venstre","xml_pi":"XML-deklarasjon",encoding:"Teiknkonvertering","appearance_bgprops":"Bakgrunnseigenskapar","appearance_marginprops":"Body-marg","appearance_linkprops":"Lenkjefargar","appearance_textprops":"Teksteigenskapar",bgcolor:"Bakgrunn",bgimage:"Bakgrunnsbilete","left_margin":"Venstre marg","right_margin":"H\u00f8gre marg","top_margin":"Toppmarg","bottom_margin":"Botnmarg","text_color":"Farge","font_size":"Skriftstorleik","font_face":"Skrifttype","link_color":"Lenkjefarge","hover_color":"Mus-over-farge","visited_color":"Bes\u00f8kt-farge","active_color":"Aktiv farge",textcolor:"Farge",fontsize:"Skriftstorleik",fontface:"Skriftfamile","meta_index_follow":"Indekser, og f\u00f8lg lenkjene","meta_index_nofollow":"Indekser, men ikkje f\u00f8lg lenkjene","meta_noindex_follow":"Ikkje indekser, men f\u00f8lg lenkjene","meta_noindex_nofollow":"Ikkje indekser, og ikkje f\u00f8lg lenkjene","appearance_style":"Stilark og stileigenskapar",stylesheet:"Stilark",style:"Stil",author:"Forfattar",copyright:"Copyright",add:"Legg til nytt element",remove:"Fjern",moveup:"Flytt markert element opp",movedown:"Flytt markert element ned","head_elements":"Overskriftselement",info:"Informasjon","add_title":"Tittelelement","add_meta":"Metaelement","add_script":"Skriptelement","add_style":"Stilelement","add_link":"Lenkjeelement","add_base":"Basiselement","add_comment":"Kommentarnode","title_element":"Tittelelement","script_element":"Skriptelement","style_element":"Stilelement","base_element":"Basiselement","link_element":"Lenkjeelement","meta_element":"Metaelement","comment_element":"Kommentar",src:"Skjerm",language:"Spr\u00e5k",href:"Href",target:"M\u00e5l",type:"Type",charset:"Teiknsett",defer:"Defer",media:"Objekt",properties:"Eigenskapar",name:"Namn",value:"Verdi",content:"Nytt lag...",rel:"Sida sitt tilh\u00f8ve til m\u00e5let",rev:"M\u00e5let sitt tilh\u00f8ve til sida",hreflang:"Href lang","general_props":"Generelt","advanced_props":"Generelle eigenskapar"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/pl_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/pl_dlg.js
deleted file mode 100644
index b94005264..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/pl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('pl.fullpage_dlg',{title:"W\u0142a\u015bciwo\u015bci dokumentu","meta_tab":"Og\u00f3lne","appearance_tab":"Wygl\u0105d","advanced_tab":"Zaawansowane","meta_props":"Meta informacje",langprops:"J\u0119zyk i kodowanie","meta_title":"Tytu\u0142","meta_keywords":"S\u0142owa kluczowe","meta_description":"Opis","meta_robots":"Roboty",doctypes:"Typ dokumentu",langcode:"Oznaczenie kodowe j\u0119zyka",langdir:"Kierunek czytania tekstu",ltr:"Kierunek z lewej do prawej",rtl:"Kierunek z prawej do lewej","xml_pi":"Deklaracja XML",encoding:"Kodowanie znak\u00f3w","appearance_bgprops":"W\u0142a\u015bciwo\u015bci t\u0142a","appearance_marginprops":"Marginesy strony","appearance_linkprops":"Kolor odno\u015bnik\u00f3w","appearance_textprops":"W\u0142a\u015bciwo\u015bci tekstu",bgcolor:"Kolor t\u0142a",bgimage:"Obrazek t\u0142a","left_margin":"Lewy margines","right_margin":"Prawy margines","top_margin":"G\u00f3rny margines","bottom_margin":"Dolny margines","text_color":"Kolor tekstu","font_size":"Rozmiar czcionki","font_face":"Czcionka","link_color":"Kolor odno\u015bnika","hover_color":"Kolor po najechaniu myszk\u0105","visited_color":"Kolor odwiedzonych link\u00f3w","active_color":"Kolor aktywnych link\u00f3w",textcolor:"Kolor",fontsize:"Rozmiar czcionki",fontface:"Rodzaj czcionki","meta_index_follow":"Indeksuj i pod\u0105\u017caj za linkami","meta_index_nofollow":"Indeksuj i nie pod\u0105\u017caj za odno\u015bnikami","meta_noindex_follow":"Nie indeksuj i pod\u0105\u017caj za odno\u015bnikami","meta_noindex_nofollow":"Nie indeksuj i nie pod\u0105\u017caj za odno\u015bnikami","appearance_style":"Arkusze i w\u0142a\u015bciwo\u015bci styl\u00f3w",stylesheet:"Arkusz styl\u00f3w",style:"Styl",author:"Autor",copyright:"Prawa autorskie",add:"Dodaj nowy element",remove:"Usu\u0144 wybrany element",moveup:"Przesu\u0144 wybrane element do g\u00f3ry",movedown:"Przesu\u0144 wybrane element w d\u00f3\u0142","head_elements":"Elementy nag\u0142\u00f3wka",info:"Informacja","add_title":"Tytu\u0142","add_meta":"Meta tag","add_script":"Skrypt","add_style":"Styl","add_link":"Odno\u015bnik","add_base":"Baza","add_comment":"Komentarz","title_element":"Tytu\u0142","script_element":"Skrypt","style_element":"Styl","base_element":"Baza","link_element":"Odno\u015bnik","meta_element":"Meta tag","comment_element":"Komentarz",src:"\u0179r\u00f3d\u0142o",language:"J\u0119zyk",href:"Odno\u015bnik",target:"Cel",type:"Typ",charset:"Kodowanie",defer:"Defer",media:"Media",properties:"W\u0142a\u015bciwo\u015bci",name:"Nazwa",value:"Warto\u015b\u0107",content:"Zawarto\u015b\u0107",rel:"Rel",rev:"Rev",hreflang:"J\u0119zyk odno\u015bnika","general_props":"G\u0142\u00f3wne","advanced_props":"Zaawansowane"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/ps_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/ps_dlg.js
deleted file mode 100644
index d62c50907..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/ps_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ps.fullpage_dlg',{title:"Document properties","meta_tab":"General","appearance_tab":"Appearance","advanced_tab":"Advanced","meta_props":"Meta information",langprops:"Language and encoding","meta_title":"Title","meta_keywords":"Keywords","meta_description":"Description","meta_robots":"Robots",doctypes:"Doctype",langcode:"Language code",langdir:"Language direction",ltr:"Left to right",rtl:"Right to left","xml_pi":"XML declaration",encoding:"Character encoding","appearance_bgprops":"Background properties","appearance_marginprops":"Body margins","appearance_linkprops":"Link colors","appearance_textprops":"Text properties",bgcolor:"Background color",bgimage:"Background image","left_margin":"Left margin","right_margin":"Right margin","top_margin":"Top margin","bottom_margin":"Bottom margin","text_color":"Text color","font_size":"Font size","font_face":"Font face","link_color":"Link color","hover_color":"Hover color","visited_color":"Visited color","active_color":"Active color",textcolor:"Color",fontsize:"Font size",fontface:"Font family","meta_index_follow":"Index and follow the links","meta_index_nofollow":"Index and don\'t follow the links","meta_noindex_follow":"Do not index but follow the links","meta_noindex_nofollow":"Do not index and don\\\'t follow the links","appearance_style":"Stylesheet and style properties",stylesheet:"Stylesheet",style:"Style",author:"Author",copyright:"Copyright",add:"Add new element",remove:"Remove selected element",moveup:"Move selected element up",movedown:"Move selected element down","head_elements":"Head elements",info:"Information","add_title":"Title element","add_meta":"Meta element","add_script":"Script element","add_style":"Style element","add_link":"Link element","add_base":"Base element","add_comment":"Comment node","title_element":"Title element","script_element":"Script element","style_element":"Style element","base_element":"Base element","link_element":"Link element","meta_element":"Meta element","comment_element":"Comment",src:"Src",language:"Language",href:"Href",target:"Target",type:"Type",charset:"Charset",defer:"Defer",media:"Media",properties:"Properties",name:"Name",value:"Value",content:"Content",rel:"Rel",rev:"Rev",hreflang:"Href lang","general_props":"General","advanced_props":"Advanced"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/pt_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/pt_dlg.js
deleted file mode 100644
index 749f86859..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/pt_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('pt.fullpage_dlg',{title:"Propriedades do documento","meta_tab":"Geral","appearance_tab":"Apar\u00eancia","advanced_tab":"Avan\u00e7ado","meta_props":"Meta-informa\u00e7\u00e3o",langprops:"Idioma e codifica\u00e7\u00e3o","meta_title":"T\u00edtulo","meta_keywords":"Palavras-chave","meta_description":"Descri\u00e7\u00e3o","meta_robots":"Robots",doctypes:"Doctype",langcode:"C\u00f3digo do idioma",langdir:"Dire\u00e7\u00e3o do texto",ltr:"Esquerda para direita",rtl:"Direita para esquerda","xml_pi":"Declara\u00e7\u00e3o XML",encoding:"Codifica\u00e7\u00e3o de caracteres","appearance_bgprops":"Propriedades do plano de fundo","appearance_marginprops":"Margens (BODY)","appearance_linkprops":"Cores dos links","appearance_textprops":"Propriedades de texto",bgcolor:"Cor de fundo",bgimage:"Imagem de fundo","left_margin":"Margem esquerda","right_margin":"Margem direita","top_margin":"Margem topo","bottom_margin":"Margem base","text_color":"Cor do texto","font_size":"Tamanho fonte","font_face":"Fonte","link_color":"Cores dos links","hover_color":"Hover","visited_color":"Visitado","active_color":"Ativo",textcolor:"Cor",fontsize:"Tamanho fonte",fontface:"Fonte","meta_index_follow":"Indexar e seguir os hyperlinks","meta_index_nofollow":"Indexar e n\u00e3o seguir os hyperlinks","meta_noindex_follow":"Seguir hyperlinks, mas n\u00e3o indexar","meta_noindex_nofollow":"N\u00e3o indexar / n\u00e3o seguir hyperlinks.","appearance_style":"Propriedades de folhas de estilo",stylesheet:"Folha de estilo",style:"Estilo",author:"Autor",copyright:"Copyright",add:"Acrescentar novo elemento",remove:"Remover elemento selecionado",moveup:"Subir elemento selecionado",movedown:"Descer elemento selecionado","head_elements":"Elementos HEAD",info:"Informa\u00e7\u00e3o","add_title":"TITLE","add_meta":"META","add_script":"SCRIPT","add_style":"STYLE","add_link":"LINK","add_base":"BASE","add_comment":"Coment\u00e1rio","title_element":"TITLE","script_element":"SCRIPT","style_element":"STYLE","base_element":"BASE","link_element":"LINK","meta_element":"META","comment_element":"Coment\u00e1rio",src:"src",language:"Idioma",href:"href",target:"Alvo",type:"Tipo",charset:"Charset",defer:"Adiar",media:"Media",properties:"Propriedades",name:"Nome",value:"Valor",content:"Conte\u00fado",rel:"rel",rev:"rev",hreflang:"href lang","general_props":"Geral","advanced_props":"Avan\u00e7ado"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/ro_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/ro_dlg.js
deleted file mode 100644
index db0a58bc8..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/ro_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ro.fullpage_dlg',{title:"Propriet\u0103\u021bi document","meta_tab":"General","appearance_tab":"Aspect","advanced_tab":"Avansat","meta_props":"Meta informa\u021bii",langprops:"Limb\u0103 \u0219i codare","meta_title":"Titlu","meta_keywords":"Cuvinte cheie","meta_description":"Descriere","meta_robots":"Robo\u021bi",doctypes:"Doctype",langcode:"Cod limb\u0103",langdir:"Direc\u021bie limb\u0103",ltr:"De la st\u00e2nga la dreapta",rtl:"De la dreapta la st\u00e2nga","xml_pi":"Declara\u021bie XML",encoding:"Cod caractere","appearance_bgprops":"Propriet\u0103\u021bi fundal","appearance_marginprops":"Margini corp","appearance_linkprops":"Culoare leg\u0103turi","appearance_textprops":"Propriet\u0103\u021bi text",bgcolor:"Culoare de fundal",bgimage:"Imagine de fundal","left_margin":"Margine st\u00e2nga","right_margin":"Margine dreapta","top_margin":"Margine sus","bottom_margin":"Margine jos","text_color":"Culoare text","font_size":"Dimensiune font","font_face":"Tip font","link_color":"Culoare leg\u0103tur\u0103","hover_color":"Culoare leg\u0103tur\u0103 la maus deasupra","visited_color":"Leg\u0103tur\u0103 vizitat\u0103","active_color":"Leg\u0103tur\u0103 activ\u0103",textcolor:"Culoare",fontsize:"Dimensiune font",fontface:"Tip font","meta_index_follow":"Indexeaz\u0103 \u0219i urm\u0103re\u0219te aceste leg\u0103turi","meta_index_nofollow":"Indexeaz\u0103 \u0219i nu urm\u0103ri aceste leg\u0103turi","meta_noindex_follow":"Nu indexa, dar urm\u0103re\u0219te aceste leg\u0103turi","meta_noindex_nofollow":"Nu indexa \u0219i nu urm\u0103ri aceste leg\u0103turi","appearance_style":"Stil",stylesheet:"Foaie de stil",style:"Stil",author:"Autor",copyright:"Copyright",add:"Adaug\u0103 un element",remove:"\u0218terge elementul selectat",moveup:"Mut\u0103 elementul selectat \u00een sus",movedown:"Mut\u0103 elementul selectat \u00een jos","head_elements":"Elemente de antet",info:"Informa\u021bii","add_title":"Titlu","add_meta":"Meta","add_script":"Script","add_style":"Stil","add_link":"Link","add_base":"Base","add_comment":"Comentariu","title_element":"Title","script_element":"Script","style_element":"Stil","base_element":"Base","link_element":"Link","meta_element":"Meta","comment_element":"Comentariu",src:"Src",language:"Limb\u0103",href:"Href",target:"\u021aint\u0103",type:"Tip",charset:"Set de caractere",defer:"Defer",media:"Media",properties:"Propriet\u0103\u021bi",name:"Nume",value:"Valoare",content:"Con\u021binut",rel:"Rel",rev:"Rev",hreflang:"Href lang","general_props":"General","advanced_props":"Avansat"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/ru_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/ru_dlg.js
deleted file mode 100644
index 1ae10de0a..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/ru_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ru.fullpage_dlg',{title:"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430","meta_tab":"\u041e\u0431\u0449\u0435\u0435","appearance_tab":"\u0412\u0438\u0434","advanced_tab":"\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e","meta_props":"\u0426\u0435\u043b\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438",langprops:"\u042f\u0437\u044b\u043a \u0438 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f","meta_title":"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a","meta_keywords":"\u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0441\u043b\u043e\u0432\u0430","meta_description":"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435","meta_robots":"\u0420\u0430\u0431\u043e\u0442\u044b",doctypes:"\u0422\u0438\u043f",langcode:"\u041a\u043e\u0434 \u044f\u0437\u044b\u043a\u0430",langdir:"\u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430",ltr:"\u0421\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e",rtl:"\u0421\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0435\u0432\u043e","xml_pi":"\u041e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 XML",encoding:"\u041a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430","appearance_bgprops":"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0444\u043e\u043d\u0430","appearance_marginprops":"\u041e\u0442\u0441\u0442\u0443\u043f\u044b","appearance_linkprops":"\u0426\u0432\u0435\u0442 \u0441\u0441\u044b\u043b\u043e\u043a","appearance_textprops":"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0442\u0435\u043a\u0441\u0442\u0430",bgcolor:"\u0426\u0432\u0435\u0442 \u0444\u043e\u043d\u0430",bgimage:"\u0424\u043e\u043d\u043e\u0432\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435","left_margin":"\u041e\u0442\u0441\u0442\u0443\u043f \u0441\u043b\u0435\u0432\u0430","right_margin":"\u041e\u0442\u0441\u0442\u0443\u043f \u0441\u043f\u0440\u0430\u0432\u0430","top_margin":"\u041e\u0442\u0441\u0442\u0443\u043f \u0441\u0432\u0435\u0440\u0445\u0443","bottom_margin":"\u041e\u0442\u0441\u0442\u0443\u043f \u0441\u043d\u0438\u0437\u0443","text_color":"\u0426\u0432\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u0430","font_size":"\u0420\u0430\u0437\u043c\u0435\u0440 \u0448\u0440\u0438\u0444\u0442\u0430","font_face":"\u0428\u0440\u0438\u0444\u0442","link_color":"\u0426\u0432\u0435\u0442 \u0441\u0441\u044b\u043b\u043a\u0438","hover_color":"\u0426\u0432\u0435\u0442 \u0441\u0441\u044b\u043b\u043a\u0438 \u043f\u0440\u0438 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u0438","visited_color":"\u0426\u0432\u0435\u0442 \u043d\u0430\u0436\u0430\u0442\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0438","active_color":"\u0426\u0432\u0435\u0442 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0438",textcolor:"\u0426\u0432\u0435\u0442",fontsize:"\u0420\u0430\u0437\u043c\u0435\u0440 \u0448\u0440\u0438\u0444\u0442\u0430",fontface:"\u0421\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u043e \u0448\u0440\u0438\u0444\u0442\u043e\u0432","meta_index_follow":"Index and follow the links","meta_index_nofollow":"Index and don\'t follow the links","meta_noindex_follow":"Do not index but follow the links","meta_noindex_nofollow":"Do not index and don \\ \'t follow the links","appearance_style":"\u041b\u0438\u0441\u0442 \u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0441\u0442\u0438\u043b\u0435\u0439",stylesheet:"\u041b\u0438\u0441\u0442 \u0441\u0442\u0438\u043b\u0435\u0439",style:"\u0421\u0442\u0438\u043b\u044c",author:"\u0410\u0432\u0442\u043e\u0440",copyright:"\u041a\u043e\u043f\u0438\u0440\u0430\u0439\u0442",add:"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442",remove:"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442",moveup:"\u041f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432\u0432\u0435\u0440\u0445",movedown:"\u041f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432\u043d\u0438\u0437","head_elements":"\u042d\u043b\u0435\u043c\u0435\u043d\u0442 Header",info:"\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f","add_title":"\u042d\u043b\u0435\u043c\u0435\u043d\u0442 Title","add_meta":"\u042d\u043b\u0435\u043c\u0435\u043d\u0442 Meta","add_script":"\u042d\u043b\u0435\u043c\u0435\u043d\u0442 Script","add_style":"\u042d\u043b\u0435\u043c\u0435\u043d\u0442 Style","add_link":"\u042d\u043b\u0435\u043c\u0435\u043d\u0442 Link","add_base":"\u042d\u043b\u0435\u043c\u0435\u043d\u0442 Base","add_comment":"\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439","title_element":"\u042d\u043b\u0435\u043c\u0435\u043d\u0442 Title","script_element":"\u042d\u043b\u0435\u043c\u0435\u043d\u0442 Script","style_element":"\u042d\u043b\u0435\u043c\u0435\u043d\u0442 Style","base_element":"\u042d\u043b\u0435\u043c\u0435\u043d\u0442 Base","link_element":"\u042d\u043b\u0435\u043c\u0435\u043d\u0442 Link","meta_element":"\u042d\u043b\u0435\u043c\u0435\u043d\u0442 Meta","comment_element":"\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439",src:"Src",language:"\u042f\u0437\u044b\u043a",href:"\u0441\u0441\u044b\u043b\u043a\u0430",target:"\u0426\u0435\u043b\u044c",type:"Type",charset:"\u041a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430",defer:"\u041e\u0442\u0441\u0440\u043e\u0447\u043a\u0430",media:"\u041c\u0435\u0434\u0438\u0430",properties:"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b",name:"\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435",value:"\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435",content:"\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435",rel:"Rel",rev:"Rev",hreflang:"\u042f\u0437\u044b\u043a \u0441\u0441\u044b\u043b\u043a\u0438","general_props":"\u041e\u0431\u0449\u0435\u0435","advanced_props":"\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/si_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/si_dlg.js
deleted file mode 100644
index 3cfc4f1d7..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/si_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('si.fullpage_dlg',{title:"Document properties","meta_tab":"General","appearance_tab":"Appearance","advanced_tab":"Advanced","meta_props":"Meta information",langprops:"Language and encoding","meta_title":"Title","meta_keywords":"Keywords","meta_description":"Description","meta_robots":"Robots",doctypes:"Doctype",langcode:"Language code",langdir:"Language direction",ltr:"Left to right",rtl:"Right to left","xml_pi":"XML declaration",encoding:"Character encoding","appearance_bgprops":"Background properties","appearance_marginprops":"Body margins","appearance_linkprops":"Link colors","appearance_textprops":"Text properties",bgcolor:"Background color",bgimage:"Background image","left_margin":"Left margin","right_margin":"Right margin","top_margin":"Top margin","bottom_margin":"Bottom margin","text_color":"Text color","font_size":"Font size","font_face":"Font face","link_color":"Link color","hover_color":"Hover color","visited_color":"Visited color","active_color":"Active color",textcolor:"Color",fontsize:"Font size",fontface:"Font family","meta_index_follow":"Index and follow the links","meta_index_nofollow":"Index and don\'t follow the links","meta_noindex_follow":"Do not index but follow the links","meta_noindex_nofollow":"Do not index and don\\\'t follow the links","appearance_style":"Stylesheet and style properties",stylesheet:"Stylesheet",style:"Style",author:"Author",copyright:"Copyright",add:"Add new element",remove:"Remove selected element",moveup:"Move selected element up",movedown:"Move selected element down","head_elements":"Head elements",info:"Information","add_title":"Title element","add_meta":"Meta element","add_script":"Script element","add_style":"Style element","add_link":"Link element","add_base":"Base element","add_comment":"Comment node","title_element":"Title element","script_element":"Script element","style_element":"Style element","base_element":"Base element","link_element":"Link element","meta_element":"Meta element","comment_element":"Comment",src:"Src",language:"Language",href:"Href",target:"Target",type:"Type",charset:"Charset",defer:"Defer",media:"Media",properties:"Properties",name:"Name",value:"Value",content:"Content",rel:"Rel",rev:"Rev",hreflang:"Href lang","general_props":"General","advanced_props":"Advanced"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/sk_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/sk_dlg.js
deleted file mode 100644
index 4c7a8537a..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/sk_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sk.fullpage_dlg',{title:"Vlastnosti dokumentu","meta_tab":"Obecn\u00e9","appearance_tab":"Vzh\u013ead","advanced_tab":"Roz\u0161\u00edren\u00e9","meta_props":"Meta inform\u00e1cie",langprops:"Jazyk a k\u00f3dovanie","meta_title":"Titulok","meta_keywords":"K\u013e\u00fa\u010dov\u00e9 slov\u00e1","meta_description":"Popis","meta_robots":"Roboti",doctypes:"Typ dokumentu",langcode:"K\u00f3d jazyka",langdir:"Smer textu",ltr:"Z\u013eava doprava",rtl:"Sprava do\u013eava","xml_pi":"XML deklar\u00e1cia",encoding:"K\u00f3dovanie","appearance_bgprops":"Vlastnosti pozadia","appearance_marginprops":"Okraje tela dokumentu","appearance_linkprops":"Vlastnosti odkazov","appearance_textprops":"Vlastnosti textu",bgcolor:"Farba pozadia",bgimage:"Obr\u00e1zok pozadia","left_margin":"\u013dav\u00fd okraj","right_margin":"Prav\u00fd okraj","top_margin":"Horn\u00fd okraj","bottom_margin":"Doln\u00fd okraj","text_color":"Farba textu","font_size":"Ve\u013ekos\u0165 p\u00edsma","font_face":"Typ p\u00edsma","link_color":"Farba odkazu","hover_color":"Farba vybrat\u00e9ho odkazu","visited_color":"Farba nav\u0161t\u00edven\u00e9ho odkazu","active_color":"Farba akt\u00edvneho odkazu",textcolor:"Farba",fontsize:"Ve\u013ekos\u0165 p\u00edsma",fontface:"Typ p\u00edsma","meta_index_follow":"Indexova\u0165 a n\u00e1sledova\u0165 odkazy","meta_index_nofollow":"Indexova\u0165 a nen\u00e1sledova\u0165 odkazy","meta_noindex_follow":"Neindexova\u0165, ale n\u00e1sledova\u0165 odkazy","meta_noindex_nofollow":"Neindexova\u0165 a nen\u00e1sledova\u0165 odkazy","appearance_style":"Vlastnosti \u0161t\u00fdlov",stylesheet:"\u0160t\u00fdlopis",style:"\u0160t\u00fdl",author:"Autor",copyright:"Autorsk\u00e9 pr\u00e1va",add:"Prida\u0165 nov\u00fd element",remove:"Odstr\u00e1ni\u0165 ozna\u010den\u00fd element",moveup:"Presun\u00fa\u0165 ozna\u010den\u00fd element vy\u0161\u0161ie ",movedown:"Presun\u00fa\u0165 ozna\u010den\u00fd element ni\u017e\u0161ie","head_elements":"Hlavi\u010dky",info:"Inform\u00e1cie","add_title":"Vlo\u017ei\u0165 titulok","add_meta":"Vlo\u017ei\u0165 meta inform\u00e1cie","add_script":"Vlo\u017ei\u0165 skript","add_style":"Vlo\u017ei\u0165 \u0161t\u00fdl","add_link":"Vlo\u017ei\u0165 nezobrazovan\u00fd odkaz","add_base":"Vlo\u017ei\u0165 z\u00e1kladn\u00e9 umiestnenie","add_comment":"Vlo\u017ei\u0165 koment\u00e1r","title_element":"Titulok","script_element":"Skript","style_element":"\u0160t\u00fdl","base_element":"Z\u00e1kladn\u00e9 umiestnenie","link_element":"Nezobrazovan\u00fd odkaz","meta_element":"Meta inform\u00e1cie","comment_element":"Koment\u00e1r",src:"Zdroj",language:"Jazyk",href:"S\u00fabor/URL",target:"Cie\u013e",type:"Typ",charset:"K\u00f3dovanie",defer:"Odlo\u017ei\u0165 (defer)",media:"M\u00e9di\u00e1",properties:"Vlastnosti",name:"N\u00e1zov",value:"Hodnota",content:"Obsah",rel:"Vz\u0165ah str\u00e1nky k cie\u013eu",rev:"Vz\u0165ah cie\u013ea k str\u00e1nke",hreflang:"Jazyk odkazu","general_props":"Obecn\u00e9 parametre","advanced_props":"Roz\u0161\u00edren\u00e9 parametre"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/sl_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/sl_dlg.js
deleted file mode 100644
index bb71c2048..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/sl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sl.fullpage_dlg',{title:"Lastnosti dokumenta","meta_tab":"Splo\u0161no","appearance_tab":"Izgled","advanced_tab":"Napredno","meta_props":"Meta podatki",langprops:"Jezik in kodiranje","meta_title":"Naslov","meta_keywords":"Klju\u010dne besede","meta_description":"Opis","meta_robots":"Roboti",doctypes:"Doctype",langcode:"Koda jezika",langdir:"Smer pisave",ltr:"Od leve proti desni",rtl:"Od desne proti levi","xml_pi":"Najava XML",encoding:"Kodiranje znakov","appearance_bgprops":"Lastnosti ozadja","appearance_marginprops":"Robovi telesa","appearance_linkprops":"Barve povezav","appearance_textprops":"Lastnosti besedila",bgcolor:"Barva ozadja",bgimage:"Slika ozadja","left_margin":"Levi rob","right_margin":"Desni rob","top_margin":"Zgornji rob","bottom_margin":"Spodnji rob","text_color":"Barva pisave","font_size":"Velikost pisave","font_face":"Vrsta pisave","link_color":"Barva povezave","hover_color":"Barva nakazane povezave","visited_color":"Barva obiskane povezave","active_color":"Barva dejavne povezave",textcolor:"Barva",fontsize:"Velikost pisave",fontface:"Dru\u017eina pisave","meta_index_follow":"Indeksiraj in sledi povezavam","meta_index_nofollow":"Indeksiraj a ne sledi povezavam","meta_noindex_follow":"Ne indeksiraj a sledi pvoezavams","meta_noindex_nofollow":"Ne indeksiraj in ne sledi povezavam","appearance_style":"Lastnosti slogov",stylesheet:"Slogi",style:"Slog",author:"Avtor",copyright:"Copyright",add:"Dodaj element",remove:"Odstrani izbrani element",moveup:"Premakni izbrani element navzgor",movedown:"Premakni izbrani element navzdol","head_elements":"Elementi glave",info:"Informacija","add_title":"element Title","add_meta":"element Meta","add_script":"element Script","add_style":"element Style","add_link":"element Link","add_base":"element Base","add_comment":"komentar","title_element":"element Title","script_element":"element Script","style_element":"element Style","base_element":"element Base","link_element":"element Link","meta_element":"element Meta","comment_element":"komentar",src:"Src",language:"Language",href:"Href",target:"Target",type:"Type",charset:"Charset",defer:"Defer",media:"Media",properties:"Lastnosti",name:"ime",value:"vrednost",content:"vsebina",rel:"Rel",rev:"Rev",hreflang:"Href lang","general_props":"Splo\u0161no","advanced_props":"Napredno"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/sq_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/sq_dlg.js
deleted file mode 100644
index dfa9b43ae..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/sq_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sq.fullpage_dlg',{title:"Tiparet e dokumentit","meta_tab":"T\u00eb P\u00ebrgjithshme","appearance_tab":"Pamja","advanced_tab":"T\u00eb Avancuara","meta_props":"Informacioni Meta",langprops:"Gjuha dhe kodimi","meta_title":"Titulli","meta_keywords":"Fjal\u00ebt ky\u00e7e","meta_description":"P\u00ebrshkrimi","meta_robots":"Robot\u00ebt",doctypes:"Doctype",langcode:"Kodi i gjuh\u00ebs",langdir:"Drejtimi i gjuh\u00ebs",ltr:"Majtas-djathtas",rtl:"Djathtas-majtas","xml_pi":"Deklarimi XML",encoding:"Kodimi i karakter\u00ebve","appearance_bgprops":"Tiparet e fush\u00ebs","appearance_marginprops":"Hap\u00ebsirat e trupit","appearance_linkprops":"Ngjyra e lidhjeve","appearance_textprops":"Tiparet e tekstit",bgcolor:"Ngjyra e fush\u00ebs",bgimage:"Foto e fush\u00ebs","left_margin":"Hap\u00ebsira majtas","right_margin":"Hap\u00ebsira djathtas","top_margin":"Hap\u00ebsira n\u00eb krye","bottom_margin":"Hap\u00ebsira n\u00eb fund","text_color":"Ngjyra e tekstit","font_size":"Madh\u00ebsia e g\u00ebrmave","font_face":"Tipi i g\u00ebrm\u00ebs","link_color":"Ngjyra e lidhjes","hover_color":"Ngjyra e hover","visited_color":"Ngjyra e vizituar","active_color":"Ngjyra aktive",textcolor:"Ngjyra",fontsize:"Madh\u00ebsia e g\u00ebrmave",fontface:"Tipi i g\u00ebrm\u00ebs","meta_index_follow":"Indekso dhe ndiq lidhjet","meta_index_nofollow":"Indekso por mos ndiq lidhjet","meta_noindex_follow":"Mos indekso por ndiq lidhjet","meta_noindex_nofollow":"Mos indekso e as mos ndiq lidhjet","appearance_style":"Faqja e stileve dhe tiparete tyre",stylesheet:"Faqja e stileve",style:"Stili",author:"Autori",copyright:"T\u00eb drejtat e kopjes",add:"Shto nj\u00eb element t\u00eb ri",remove:"Fshi elementin e zgjedhur",moveup:"L\u00ebviz elementin sip\u00ebr",movedown:"L\u00ebviz elementin posht\u00eb","head_elements":"Element\u00ebt e kok\u00ebs",info:"Informacion","add_title":"Element titull","add_meta":"Element meta","add_script":"Element script","add_style":"Element stil","add_link":"Element lidhej","add_base":"Element baz\u00eb","add_comment":"Komento","title_element":"Element titull","script_element":"Element script","style_element":"Element stil","base_element":"Element baz\u00eb","link_element":"Element lidhje","meta_element":"Element meta","comment_element":"Komento",src:"Src",language:"Gjuha",href:"Href",target:"Sh\u00ebnjestra",type:"Tipi",charset:"Charset",defer:"Defer",media:"Media",properties:"Tiparet",name:"Emri",value:"Vlera",content:"P\u00ebrmbajtja",rel:"Rel",rev:"Rev",hreflang:"Href lang","general_props":"T\u00eb P\u00ebrgjithshme","advanced_props":"T\u00eb Avancuara"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/sr_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/sr_dlg.js
deleted file mode 100644
index f1fbb0d68..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/sr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sr.fullpage_dlg',{title:"Osobine dokumenta","meta_tab":"Osnovno","appearance_tab":"Izgled","advanced_tab":"Napredno","meta_props":"Meta informacije",langprops:"Jezik i kodiranje","meta_title":"Naslov","meta_keywords":"Klju\u010dne re\u010di","meta_description":"Opis","meta_robots":"Robots",doctypes:"Doctype",langcode:"Kod jezika",langdir:"Smer jezika",ltr:"Sleva nadesno",rtl:"Zdesna nalevo","xml_pi":"XML deklaracija",encoding:"Kodiranje znakova","appearance_bgprops":"Osobine pozadine","appearance_marginprops":"Margine sadr\u017eaja","appearance_linkprops":"Boje linka","appearance_textprops":"Osobine teksta",bgcolor:"Boja pozadine",bgimage:"Slika u pozadini","left_margin":"Leva margina","right_margin":"Desna margina","top_margin":"Gornja margina","bottom_margin":"Donja margina","text_color":"Boja teksta","font_size":"Veli\u010dina pisma","font_face":"Pismo (Font face)","link_color":"Boja linka","hover_color":"Boja linka pod mi\u0161em","visited_color":"Boja pose\u0107enog linka","active_color":"Boja aktivnog linka",textcolor:"Boja",fontsize:"Veli\u010dina pisma",fontface:"Pismo","meta_index_follow":"Indeksiraj i sledi linkove","meta_index_nofollow":"Indeksiraj i ne sledi linkove","meta_noindex_follow":"Ne indeksiraj ali sledi linkove","meta_noindex_nofollow":"Ne indeksiraj i ne sledi linkove","appearance_style":"CSS i osobine stila",stylesheet:"CSS",style:"Stil",author:"Autor",copyright:"Autorska prava",add:"Dodaj nov element",remove:"Ukloni odabrani element",moveup:"Pomeri odabrani element nagore",movedown:"Pomakni odabrani element nadole","head_elements":"Elementi zaglavlja",info:"Informacije","add_title":"Element \'title\' (naslov)","add_meta":"Element \'meta\'","add_script":"Element \'script\'","add_style":"Element \'style\'","add_link":"Element \'link\'","add_base":"Element \'base\'","add_comment":"Komentar","title_element":"Element \'title\' (naslov)","script_element":"Element \'script\'","style_element":"Element \'style\'","base_element":"Element \'base\'","link_element":"Element \'link\'","meta_element":"Element \'meta\'","comment_element":"Komentar",src:"Src",language:"Jezik",href:"Href",target:"Meta",type:"Type",charset:"Charset",defer:"Defer",media:"Media",properties:"Osobine",name:"Naziv",value:"Vrednost",content:"Sadr\u017eaj",rel:"Rel",rev:"Rev",hreflang:"Href lang","general_props":"Osnovno","advanced_props":"Napredno"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/sv_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/sv_dlg.js
deleted file mode 100644
index c141b235a..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/sv_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sv.fullpage_dlg',{title:"Dokumentinst\u00e4llningar","meta_tab":"Generella","appearance_tab":"Utseende","advanced_tab":"Avancerat","meta_props":"Metainformation",langprops:"Spr\u00e5k och kodning","meta_title":"Titel","meta_keywords":"Nyckelord","meta_description":"Bekrivning","meta_robots":"Robots",doctypes:"Doctype",langcode:"Spr\u00e5kkod",langdir:"Skriftriktning",ltr:"V\u00e4nster till h\u00f6ger",rtl:"H\u00f6ger till v\u00e4nster","xml_pi":"XML deklaration",encoding:"Teckenkodning","appearance_bgprops":"Bakgrundsinst\u00e4llningar","appearance_marginprops":"Body marginaler","appearance_linkprops":"L\u00e4nkf\u00e4rger","appearance_textprops":"Textinst\u00e4llningar",bgcolor:"Bakgrundsf\u00e4rg",bgimage:"Bakgrundsbild","left_margin":"V\u00e4nstermarginal","right_margin":"H\u00f6germarginal","top_margin":"Toppmarginal","bottom_margin":"Bottenmarginal","text_color":"Textf\u00e4rg","font_size":"Textstorlek","font_face":"Textstil","link_color":"L\u00e4nkf\u00e4rg","hover_color":"Hover f\u00e4rg","visited_color":"Visited f\u00e4rg","active_color":"Active f\u00e4rg",textcolor:"F\u00e4rg",fontsize:"Textstorlek",fontface:"Textstil","meta_index_follow":"Indexera och f\u00f6lj l\u00e4nkar","meta_index_nofollow":"Indexera men f\u00f6lj ej l\u00e4nkar","meta_noindex_follow":"Indexera inte men f\u00f6lj l\u00e4nkar","meta_noindex_nofollow":"Indexera inte och f\u00f6lj ej l\u00e4nkar","appearance_style":"Stilmall och stilegenskaper",stylesheet:"Stilmall",style:"Stil",author:"F\u00f6rfattare",copyright:"Copyright",add:"L\u00e4gg till element",remove:"Radera det markerade elementet",moveup:"Flytta det markerade elementet upp\u00e5t",movedown:"Flytta det markerade elementet ned\u00e5t","head_elements":"Head element",info:"Information","add_title":"Titel-element","add_meta":"Meta-element","add_script":"Script-element","add_style":"Stil-element","add_link":"L\u00e4nk-element","add_base":"Base-element","add_comment":"Kommentarsnod","title_element":"Titel-element","script_element":"Script-element","style_element":"Style-element","base_element":"Base-element","link_element":"Link-element","meta_element":"Meta-element","comment_element":"Comment-element",src:"Src",language:"Spr\u00e5k",href:"Href",target:"M\u00e5l",type:"Typ",charset:"Teckenupps\u00e4ttning",defer:"Defer",media:"Media",properties:"Egenskaper",name:"Name",value:"Value",content:"Inneh\u00e5ll",rel:"Rel",rev:"Rev",hreflang:"Href lang","general_props":"Generellt","advanced_props":"Avancerat"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/ta_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/ta_dlg.js
deleted file mode 100644
index 6a38095b2..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/ta_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ta.fullpage_dlg',{title:"Document properties","meta_tab":"General","appearance_tab":"Appearance","advanced_tab":"Advanced","meta_props":"Meta information",langprops:"Language and encoding","meta_title":"Title","meta_keywords":"Keywords","meta_description":"Description","meta_robots":"Robots",doctypes:"Doctype",langcode:"Language code",langdir:"Language direction",ltr:"Left to right",rtl:"Right to left","xml_pi":"XML declaration",encoding:"Character encoding","appearance_bgprops":"Background properties","appearance_marginprops":"Body margins","appearance_linkprops":"Link colors","appearance_textprops":"Text properties",bgcolor:"Background color",bgimage:"Background image","left_margin":"Left margin","right_margin":"Right margin","top_margin":"Top margin","bottom_margin":"Bottom margin","text_color":"Text color","font_size":"Font size","font_face":"Font face","link_color":"Link color","hover_color":"Hover color","visited_color":"Visited color","active_color":"Active color",textcolor:"Color",fontsize:"Font size",fontface:"Font family","meta_index_follow":"Index and follow the links","meta_index_nofollow":"Index and don\'t follow the links","meta_noindex_follow":"Do not index but follow the links","meta_noindex_nofollow":"Do not index and don\\\'t follow the links","appearance_style":"Stylesheet and style properties",stylesheet:"Stylesheet",style:"Style",author:"Author",copyright:"Copyright",add:"Add new element",remove:"Remove selected element",moveup:"Move selected element up",movedown:"Move selected element down","head_elements":"Head elements",info:"Information","add_title":"Title element","add_meta":"Meta element","add_script":"Script element","add_style":"Style element","add_link":"Link element","add_base":"Base element","add_comment":"Comment node","title_element":"Title element","script_element":"Script element","style_element":"Style element","base_element":"Base element","link_element":"Link element","meta_element":"Meta element","comment_element":"Comment",src:"Src",language:"Language",href:"Href",target:"Target",type:"Type",charset:"Charset",defer:"Defer",media:"Media",properties:"Properties",name:"Name",value:"Value",content:"Content",rel:"Rel",rev:"Rev",hreflang:"Href lang","general_props":"General","advanced_props":"Advanced"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/th_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/th_dlg.js
deleted file mode 100644
index 2200f9a4e..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/th_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('th.fullpage_dlg',{title:"\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23","meta_tab":"\u0e17\u0e31\u0e48\u0e27\u0e44\u0e1b","appearance_tab":"\u0e23\u0e39\u0e1b\u0e25\u0e31\u0e01\u0e29\u0e13\u0e4c","advanced_tab":"\u0e02\u0e31\u0e49\u0e19\u0e2a\u0e39\u0e07","meta_props":"\u0e23\u0e32\u0e22\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14\u0e40\u0e21\u0e15\u0e49\u0e32",langprops:"\u0e20\u0e32\u0e29\u0e32 \u0e41\u0e25\u0e30 \u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e23\u0e2b\u0e31\u0e2a","meta_title":"\u0e0a\u0e37\u0e48\u0e2d","meta_keywords":"\u0e04\u0e33\u0e2a\u0e33\u0e04\u0e31\u0e0d","meta_description":"\u0e23\u0e32\u0e22\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14","meta_robots":"Robots",doctypes:"Doctype",langcode:"\u0e42\u0e04\u0e4a\u0e14\u0e20\u0e32\u0e29\u0e32",langdir:"\u0e17\u0e34\u0e28\u0e17\u0e32\u0e07\u0e01\u0e32\u0e23\u0e2d\u0e48\u0e32\u0e19",ltr:"\u0e0b\u0e49\u0e32\u0e22\u0e44\u0e1b\u0e02\u0e27\u0e32",rtl:"\u0e02\u0e27\u0e32\u0e44\u0e1b\u0e0b\u0e49\u0e32\u0e22","xml_pi":"XML declaration",encoding:"Character encoding","appearance_bgprops":"\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e1e\u0e37\u0e49\u0e19\u0e2b\u0e25\u0e31\u0e07","appearance_marginprops":"Body margins","appearance_linkprops":"\u0e2a\u0e35\u0e25\u0e34\u0e49\u0e07\u0e04\u0e4c","appearance_textprops":"\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21",bgcolor:"\u0e1e\u0e37\u0e49\u0e19\u0e2b\u0e25\u0e31\u0e07 color",bgimage:"\u0e1e\u0e37\u0e49\u0e19\u0e2b\u0e25\u0e31\u0e07 image","left_margin":"\u0e02\u0e2d\u0e1a\u0e0b\u0e49\u0e32\u0e22","right_margin":"\u0e02\u0e2d\u0e1a\u0e02\u0e27\u0e32","top_margin":"\u0e02\u0e2d\u0e1a\u0e1a\u0e21","bottom_margin":"\u0e02\u0e2d\u0e1a\u0e25\u0e48\u0e32\u0e07","text_color":"\u0e2a\u0e35\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21","font_size":"\u0e02\u0e19\u0e32\u0e14\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23","font_face":"\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23","link_color":"\u0e2a\u0e35\u0e25\u0e34\u0e49\u0e07\u0e04\u0e4c","hover_color":"Hover color","visited_color":"Visited color","active_color":"Active color",textcolor:"\u0e2a\u0e35",fontsize:"\u0e02\u0e19\u0e32\u0e14\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23",fontface:"\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e15\u0e31\u0e27\u0e2d\u0e01\u0e29\u0e23","meta_index_follow":"Index and follow the \u0e25\u0e34\u0e49\u0e07\u0e04\u0e4cs","meta_index_nofollow":"Index and don\'t follow the \u0e25\u0e34\u0e49\u0e07\u0e04\u0e4cs","meta_noindex_follow":"Do not index but follow the \u0e25\u0e34\u0e49\u0e07\u0e04\u0e4cs","meta_noindex_nofollow":"Do not index and don\\\'t follow the \u0e25\u0e34\u0e49\u0e07\u0e04\u0e4cs","appearance_style":"\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1asheet and style properties",stylesheet:"\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1asheet",style:"\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a",author:"Author",copyright:"Copyright",add:"Add new element",remove:"Remove selected element",moveup:"Move selected element up",movedown:"Move selected element down","head_elements":"Head elements",info:"Information","add_title":"\u0e0a\u0e37\u0e48\u0e2d element","add_meta":"Meta element","add_script":"Script element","add_style":"\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a element","add_link":"Link element","add_base":"Base element","add_comment":"Comment node","title_element":"\u0e0a\u0e37\u0e48\u0e2d element","script_element":"Script element","style_element":"\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a element","base_element":"Base element","link_element":"Link element","meta_element":"Meta element","comment_element":"Comment",src:"Src",language:"\u0e20\u0e32\u0e29\u0e32",href:"Href",target:"\u0e40\u0e1b\u0e49\u0e32\u0e2b\u0e21\u0e32\u0e22",type:"Type",charset:"Charset",defer:"Defer",media:"Media",properties:"Properties",name:"Name",value:"Value",content:"Content",rel:"Rel",rev:"Rev",hreflang:"Href lang","general_props":"\u0e17\u0e31\u0e48\u0e27\u0e44\u0e1b","advanced_props":"\u0e02\u0e31\u0e49\u0e19\u0e2a\u0e39\u0e07"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/tr_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/tr_dlg.js
deleted file mode 100644
index 8f2a44b68..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/tr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('tr.fullpage_dlg',{title:"Belge \u00f6zellikleri","meta_tab":"Genel","appearance_tab":"G\u00f6r\u00fcn\u00fcm","advanced_tab":"Geli\u015fmi\u015f","meta_props":"Meta bilgisi",langprops:"Dil ve kodlama","meta_title":"Ba\u015fl\u0131k","meta_keywords":"Anahtar kelimeler","meta_description":"A\u00e7\u0131klama","meta_robots":"Robotlar",doctypes:"Belge tipi",langcode:"Dil kodu",langdir:"Dil y\u00f6n\u00fc",ltr:"Sa\u011fdan sola",rtl:"Soldan sa\u011fa","xml_pi":"XML tan\u0131m\u0131",encoding:"Karakter kodlamas\u0131","appearance_bgprops":"Arkaplan \u00f6zellikleri","appearance_marginprops":"G\u00f6vde bo\u015fluklar\u0131","appearance_linkprops":"Ba\u011flant\u0131 renkleri","appearance_textprops":"Metin \u00f6zellikleri",bgcolor:"Arkaplan rengi",bgimage:"Arkaplan resmi","left_margin":"Sol bo\u015fluk","right_margin":"Sa\u011f bo\u015fluk","top_margin":"\u00dcst bo\u015fluk","bottom_margin":"Alt bo\u015fluk","text_color":"Metin rengi","font_size":"Yaz\u0131 boyutu","font_face":"Yaz\u0131 tipi","link_color":"Ba\u011flant\u0131 rengi","hover_color":"Fare \u00fcst\u00fcnde rengi","visited_color":"Ziyaret edilmi\u015f ba\u011flant\u0131 rengi","active_color":"Ge\u00e7erli renk",textcolor:"Renk",fontsize:"Yaz\u0131 boyutu",fontface:"Yaz\u0131 tipi","meta_index_follow":"\u0130ndeksle ve ba\u011flant\u0131lar\u0131 izle.","meta_index_nofollow":"\u0130ndeksle ve ba\u011flant\u0131lar\u0131 izleme.","meta_noindex_follow":"\u0130ndeksleme ama ba\u011flant\u0131lar\u0131 izle.","meta_noindex_nofollow":"\u0130ndeksleme ve ba\u011flant\u0131lar\u0131 izleme.","appearance_style":"Stil ve stil sayfas\u0131 \u00f6zellikleri",stylesheet:"Stil sayfas\u0131",style:"Stil",author:"Yazar",copyright:"Telik hakk\u0131",add:"Yeni nesne ekle",remove:"Se\u00e7ili nesneyi kald\u0131r",moveup:"Se\u00e7ili nesneyi yukar\u0131 ta\u015f\u0131",movedown:"Se\u00e7ili nesneyi a\u015fa\u011f\u0131 ta\u015f\u0131","head_elements":"Ba\u015fl\u0131k nesneleri",info:"Bilgi","add_title":"Ba\u015fl\u0131k nesnesi","add_meta":"Meta nesnesi","add_script":"Script nesnesi","add_style":"Stil nesnesi","add_link":"Ba\u011flant\u0131 nesnesi","add_base":"Temel nesne","add_comment":"Yorum d\u00fc\u011f\u00fcm\u00fc","title_element":"Ba\u015fl\u0131k nesnesi","script_element":"Script nesnesi","style_element":"Stil nesnesi","base_element":"Temel nesne","link_element":"Ba\u011flant\u0131 nesnesi","meta_element":"Meta nesnesi","comment_element":"Yorum",src:"Src",language:"Dil",href:"Href",target:"Hedef",type:"Tip",charset:"Karakter seti",defer:"Erteleme",media:"Medya",properties:"\u00d6zellikler",name:"\u0130sim",value:"De\u011fer",content:"\u0130\u00e7erik",rel:"Rel",rev:"Rev",hreflang:"Href dili","general_props":"Genel","advanced_props":"Geli\u015fmi\u015f"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/uk_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/uk_dlg.js
deleted file mode 100644
index f1e6a7f0b..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/uk_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('uk.fullpage_dlg',{title:"\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430","meta_tab":"\u0417\u0430\u0433\u0430\u043b\u044c\u043d\u0435","appearance_tab":"\u0412\u0438\u0433\u043b\u044f\u0434","advanced_tab":"\u0414\u043e\u0434\u0430\u0442\u043a\u043e\u0432\u043e","meta_props":"\u041c\u0435\u0442\u0430 \u0456\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0456\u044f",langprops:"\u041c\u043e\u0432\u0430 \u0442\u0430 \u043a\u043e\u0434\u0443\u0432\u0430\u043d\u043d\u044f","meta_title":"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a","meta_keywords":"\u041a\u043b\u044e\u0447\u043e\u0432\u0456 \u0441\u043b\u043e\u0432\u0430","meta_description":"\u041e\u043f\u0438\u0441","meta_robots":"\u0420\u043e\u0431\u043e\u0442\u0438",doctypes:"Doctype",langcode:"\u041a\u043e\u0434 \u043c\u043e\u0432\u0438",langdir:"\u041d\u0430\u043f\u0440\u044f\u043c \u043c\u043e\u0432\u0438",ltr:"\u0417\u043b\u0456\u0432\u0430 \u043f\u0440\u0430\u0432\u043e\u0440\u0443\u0447",rtl:"\u0421\u043f\u0440\u0430\u0432\u0430 \u043b\u0456\u0432\u043e\u0440\u0443\u0447","xml_pi":"\u041e\u0431\'\u044f\u0432\u043b\u0435\u043d\u043d\u044f XML",encoding:"\u041a\u043e\u0434\u0443\u0432\u0430\u043d\u043d\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u0456\u0432","appearance_bgprops":"\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u0444\u043e\u043d\u0443","appearance_marginprops":"\u0412\u0456\u0434\u0441\u0442\u0443\u043f\u0438","appearance_linkprops":"\u041a\u043e\u043b\u0456\u0440 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u044c","appearance_textprops":"\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u0442\u0435\u043a\u0441\u0442\u0443",bgcolor:"\u041a\u043e\u043b\u0456\u0440 \u0444\u043e\u043d\u0443",bgimage:"\u0424\u043e\u043d\u043e\u0432\u0435 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f","left_margin":"\u0412\u0456\u0434\u0441\u0442\u0443\u043f \u0437\u043b\u0456\u0432\u0430","right_margin":"\u0412\u0456\u0434\u0441\u0442\u0443\u043f \u0441\u043f\u0440\u0430\u0432\u0430","top_margin":"\u0412\u0456\u0434\u0441\u0442\u0443\u043f \u0437\u0432\u0435\u0440\u0445\u0443","bottom_margin":"\u0412\u0456\u0434\u0441\u0442\u0443\u043f \u0437\u043d\u0438\u0437\u0443","text_color":"\u041a\u043e\u043b\u0456\u0440 \u0442\u0435\u043a\u0441\u0442\u0443","font_size":"\u0420\u043e\u0437\u043c\u0456\u0440 \u0448\u0440\u0438\u0444\u0442\u0430","font_face":"\u0428\u0440\u0438\u0444\u0442","link_color":"\u041a\u043e\u043b\u0456\u0440 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f","hover_color":"\u041a\u043e\u043b\u0456\u0440 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u043f\u0440\u0438 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u043d\u0456","visited_color":"\u041a\u043e\u043b\u0456\u0440 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u043f\u0440\u0438 \u043d\u0430\u0442\u0438\u0441\u043d\u0435\u043d\u043d\u0456","active_color":"\u041a\u043e\u043b\u0456\u0440 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",textcolor:"\u041a\u043e\u043b\u0456\u0440",fontsize:"\u0420\u043e\u0437\u043c\u0456\u0440 \u0448\u0440\u0438\u0444\u0442\u0430",fontface:"\u0421\u0456\u043c\u0435\u0439\u0441\u0442\u0432\u043e \u0448\u0440\u0438\u0444\u0442\u0430","meta_index_follow":"\u0406\u043d\u0434\u0435\u043a\u0441\u0443\u0432\u0430\u0442\u0438 \u0456 \u0439\u0442\u0438 \u0437\u0430 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f\u043c\u0438","meta_index_nofollow":"\u0406\u043d\u0434\u0435\u043a\u0441\u0443\u0432\u0430\u0442\u0438 \u0456 \u043d\u0435 \u0439\u0442\u0438 \u0437\u0430 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f\u043c\u0438","meta_noindex_follow":"\u041d\u0435 \u0456\u043d\u0434\u0435\u043a\u0441\u0443\u0432\u0430\u0442\u0438, \u0430\u043b\u0435 \u0439\u0442\u0438 \u0437\u0430 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f\u043c\u0438","meta_noindex_nofollow":"\u041d\u0435 \u0456\u043d\u0434\u0435\u043a\u0441\u0443\u0432\u0430\u0442\u0438 \u0456 \u043d\u0435 \u0439\u0442\u0438 \u0437\u0430 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f\u043c\u0438","appearance_style":"\u0422\u0430\u0431\u043b\u0438\u0446\u044f \u0441\u0442\u0438\u043b\u044e \u0442\u0430 \u0432\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u0441\u0442\u0438\u043b\u044e",stylesheet:"\u0422\u0430\u0431\u043b\u0438\u0446\u044f \u0441\u0442\u0438\u043b\u044e",style:"\u0421\u0442\u0438\u043b\u044c",author:"\u0410\u0432\u0442\u043e\u0440",copyright:"\u0410\u0432\u0442\u043e\u0440\u0441\u044c\u043a\u0435 \u043f\u0440\u0430\u0432\u043e",add:"\u0414\u043e\u0434\u0430\u0442\u0438 \u043d\u043e\u0432\u0438\u0439 \u0435\u043b\u0435\u043c\u0435\u043d\u0442",remove:"\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u0432\u0438\u0434\u0456\u043b\u0435\u043d\u0438\u0439 \u0435\u043b\u0435\u043c\u0435\u043d\u0442",moveup:"\u041f\u0435\u0440\u0435\u043c\u0456\u0441\u0442\u0438\u0442\u0438 \u0435\u043b\u0435\u043c\u0435\u043d\u0442 \u0432\u0433\u043e\u0440\u0443",movedown:"\u041f\u0435\u0440\u0435\u043c\u0456\u0441\u0442\u0438\u0442\u0438 \u0435\u043b\u0435\u043c\u0435\u043d\u0442 \u0432\u043d\u0438\u0437","head_elements":"Head \u0435\u043b\u0435\u043c\u0435\u043d\u0442\u0438",info:"\u0406\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0456\u044f","add_title":"Title \u0435\u043b\u0435\u043c\u0435\u043d\u0442","add_meta":"Meta \u0435\u043b\u0435\u043c\u0435\u043d\u0442","add_script":"Script \u0435\u043b\u0435\u043c\u0435\u043d\u0442","add_style":"Style \u0435\u043b\u0435\u043c\u0435\u043d\u0442","add_link":"Link \u0435\u043b\u0435\u043c\u0435\u043d\u0442","add_base":"Base \u0435\u043b\u0435\u043c\u0435\u043d\u0442","add_comment":"\u0412\u0443\u0437\u043e\u043b \u043a\u043e\u043c\u0435\u043d\u0442\u0430\u0440\u044f","title_element":"Title \u0435\u043b\u0435\u043c\u0435\u043d\u0442","script_element":"Script \u0435\u043b\u0435\u043c\u0435\u043d\u0442","style_element":"Style \u0435\u043b\u0435\u043c\u0435\u043d\u0442","base_element":"Base \u0435\u043b\u0435\u043c\u0435\u043d\u0442","link_element":"Link \u0435\u043b\u0435\u043c\u0435\u043d\u0442","meta_element":"Meta \u0435\u043b\u0435\u043c\u0435\u043d\u0442","comment_element":"\u041a\u043e\u043c\u0435\u043d\u0442\u0430\u0440",src:"\u0414\u0436\u0435\u0440\u0435\u043b\u043e",language:"\u041c\u043e\u0432\u0430",href:"\u041f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",target:"\u0426\u0456\u043b\u044c",type:"\u0422\u0438\u043f",charset:"\u041a\u043e\u0434\u0443\u0432\u0430\u043d\u043d\u044f",defer:"Defer",media:"\u041c\u0435\u0434\u0456\u0430",properties:"\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456",name:"\u041d\u0430\u0437\u0432\u0430",value:"\u0417\u043d\u0430\u0447\u0435\u043d\u043d\u044f",content:"\u0417\u043c\u0456\u0441\u0442",rel:"\u0417\u0432\'\u044f\u0437\u043e\u043a",rev:"Rev",hreflang:"\u041c\u043e\u0432\u0430 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f","general_props":"\u0417\u0430\u0433\u0430\u043b\u044c\u043d\u0435","advanced_props":"\u0414\u043e\u0434\u0430\u0442\u043a\u043e\u0432\u043e"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/vi_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/vi_dlg.js
deleted file mode 100644
index 3222b6739..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/vi_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('vi.fullpage_dlg',{title:"Thu\u1ed9c t\u00ednh v\u0103n b\u1ea3n","meta_tab":"Chung","appearance_tab":"Xu\u1ea5t hi\u1ec7n","advanced_tab":"N\u00e2ng cao","meta_props":"Th\u00f4ng tin Meta",langprops:"Ng\u00f4n ng\u1eef v\u00e0 m\u00e3 h\u00f3a","meta_title":"Ti\u00eau \u0111\u1ec1","meta_keywords":"T\u1eeb kh\u00f3a","meta_description":"M\u00f4 t\u1ea3","meta_robots":"Robots",doctypes:"Ki\u1ec3u t\u00e0i li\u1ec7u",langcode:"M\u00e3 ng\u00f4n ng\u1eef",langdir:"H\u01b0\u1edbng ng\u00f4n ng\u1eef",ltr:"Tr\u00e1i qua ph\u1ea3i",rtl:"Ph\u1ea3i qua tr\u00e1i","xml_pi":"Khai b\u00e1o XML",encoding:"M\u00e3 h\u00f3a k\u00fd t\u1ef1","appearance_bgprops":"Thu\u1ed9c t\u00ednh n\u1ec1n","appearance_marginprops":"Bi\u00ean c\u1ee7a th\u00e2n t\u00e0i li\u1ec7u","appearance_linkprops":"M\u00e0u li\u00ean k\u1ebft","appearance_textprops":"Thu\u00f4c t\u00ednh v\u0103n b\u1ea3n",bgcolor:"M\u00e0u n\u1ec1n",bgimage:"\u1ea2nh n\u1ec1n","left_margin":"Bi\u00ean tr\u00e1i","right_margin":"Bi\u00ean ph\u1ea3i","top_margin":"Bi\u00ean tr\u00ean","bottom_margin":"Bi\u00ean d\u01b0\u1edbi","text_color":"M\u00e0u v\u0103n b\u1ea3n","font_size":"K\u00edch c\u1ee1 ph\u00f4ng","font_face":"Ph\u00f4ng ch\u1eef","link_color":"M\u00e0u li\u00ean k\u1ebft","hover_color":"M\u00e0u khi tr\u1ecf chu\u1ed9t","visited_color":"M\u00e0u \u0111\u00e3 gh\u00e9 th\u0103m","active_color":"M\u00e0u ho\u1ea1t \u0111\u1ed9ng",textcolor:"M\u00e0u",fontsize:"K\u00edch c\u1ee1 ph\u00f4ng",fontface:"T\u1eadp h\u1ee3p ph\u00f4ng","meta_index_follow":"Ch\u1ec9 s\u1ed1 v\u00e0 theo li\u00ean k\u1ebft","meta_index_nofollow":"Ch\u1ec9 s\u1ed1 v\u00e0 kh\u00f4ng theo li\u00ean k\u1ebft","meta_noindex_follow":"Kh\u00f4ng ch\u1ec9 s\u1ed1 nh\u01b0ng theo li\u00ean k\u1ebft","meta_noindex_nofollow":"Kh\u00f4ng ch\u1ec9 s\u1ed1 v\u00e0 kh\u00f4ng theo li\u00ean k\u1ebft","appearance_style":"Thu\u1ed9c t\u00ednh ki\u1ec3u d\u00e1ng v\u00e0 stylesheet",stylesheet:"Stylesheet",style:"Ki\u1ec3u d\u00e1ng",author:"T\u00e1c gi\u1ea3",copyright:"B\u1ea3n quy\u1ec1n",add:"Th\u00eam ph\u1ea7n t\u1eed m\u1edbi",remove:"Lo\u1ea1i b\u1ecf ph\u1ea7n t\u1eed \u0111\u00e3 ch\u1ecdn",moveup:"Di chuy\u1ec3n ph\u1ea7n t\u1eed \u0111\u00e3 ch\u1ecdn \u0111i l\u00ean",movedown:"Di chuy\u1ec3n ph\u1ea7n t\u1eed \u0111\u00e3 ch\u1ecdn \u0111i xu\u1ed1ng","head_elements":"Ph\u1ea7n t\u1eed \u0111\u1ea7u \u0111\u1ec1",info:"Th\u00f4ng tin","add_title":"Ph\u1ea7n t\u1eed ti\u00eau \u0111\u1ec1","add_meta":"Ph\u1ea7n t\u1eed meta","add_script":"Ph\u1ea7n t\u1eed script","add_style":"Ph\u1ea7n t\u1eed ki\u1ec3u d\u00e1ng","add_link":"Ph\u1ea7n t\u1eed li\u00ean k\u1ebft","add_base":"Ph\u1ea7n t\u1eed c\u01a1 s\u1edf","add_comment":"Comment node","title_element":"Ph\u1ea7n t\u1eed ti\u00eau \u0111\u1ec1","script_element":"Ph\u1ea7n t\u1eed script","style_element":"Ph\u1ea7n t\u1eed ki\u1ec3u d\u00e1ng","base_element":"Ph\u1ea7n t\u1eed c\u01a1 s\u1edf","link_element":"Ph\u1ea7n t\u1eed li\u00ean k\u1ebft","meta_element":"Ph\u1ea7n t\u1eed meta","comment_element":"Ch\u00fa th\u00edch",src:"Src",language:"Ng\u00f4n ng\u1eef",href:"Href",target:"\u0110\u00edch",type:"Ki\u1ec3u",charset:"T\u1eadp k\u00fd t\u1ef1",defer:"Tr\u00ec ho\u00e3n",media:"Ph\u01b0\u01a1ng ti\u1ec7n",properties:"Thu\u1ed9c t\u00ednh",name:"T\u00ean",value:"Gi\u00e1 tr\u1ecb",content:"N\u1ed9i dung",rel:"Rel",rev:"Rev",hreflang:"Href lang","general_props":"Chung","advanced_props":"N\u00e2ng cao"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/zh-cn_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/zh-cn_dlg.js
deleted file mode 100644
index de0a74ac5..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/zh-cn_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('zh-cn.fullpage_dlg',{title:"\u6587\u4ef6\u5c5e\u6027","meta_tab":"\u666e\u901a","appearance_tab":"\u5916\u89c2","advanced_tab":"\u9ad8\u7ea7","meta_props":"Meta\u4fe1\u606f",langprops:"\u8bed\u8a00\u548c\u7f16\u7801","meta_title":"\u6807\u9898","meta_keywords":"Meta \u5173\u952e\u5b57","meta_description":"Meta \u63cf\u8ff0","meta_robots":"\u641c\u7d22\u673a\u5668\u4eba",doctypes:"\u6587\u6863\u7c7b\u578b",langcode:"\u8bed\u8a00\u7f16\u7801",langdir:"\u8bed\u8a00\u6587\u5b57\u65b9\u5411",ltr:"\u4ece\u5de6\u5230\u53f3",rtl:"\u4ece\u53f3\u5230\u5de6","xml_pi":"XML\u7533\u660e",encoding:"\u5b57\u7b26\u7f16\u7801","appearance_bgprops":"\u80cc\u666f\u5c5e\u6027","appearance_marginprops":"\u9875\u8fb9\u8ddd","appearance_linkprops":"\u8d85\u94fe\u63a5\u989c\u8272","appearance_textprops":"\u6587\u672c\u5c5e\u6027",bgcolor:"\u80cc\u666f\u989c\u8272",bgimage:"\u80cc\u666f\u56fe\u7247","left_margin":"\u5de6\u8fb9\u8ddd","right_margin":"\u53f3\u8fb9\u8ddd","top_margin":"\u4e0a\u8fb9\u8ddd","bottom_margin":"\u4e0b\u8fb9\u8ddd","text_color":"\u6587\u672c\u989c\u8272","font_size":"\u5b57\u4f53\u5927\u5c0f","font_face":"\u5b57\u4f53","link_color":"\u8d85\u94fe\u63a5\u989c\u8272","hover_color":"Hover\u989c\u8272","visited_color":"Visited\u989c\u8272","active_color":"Active\u989c\u8272",textcolor:"\u989c\u8272",fontsize:"\u5b57\u4f53\u5927\u5c0f",fontface:"\u5b57\u4f53","meta_index_follow":"\u7d22\u5f15\u5e76\u8fde\u7ed3","meta_index_nofollow":"\u7d22\u5f15\u4f46\u4e0d\u8fde\u7ed3","meta_noindex_follow":"\u4e0d\u7d22\u5f15\u4f46\u8fde\u7ed3","meta_noindex_nofollow":"\u4e0d\u7d22\u5f15\u4e5f\u4e0d\u8fde\u7ed3","appearance_style":"\u6837\u5f0f\u8868\u4e0e\u6837\u5f0f\u5c5e\u6027",stylesheet:"\u6837\u5f0f\u8868",style:"\u6837\u5f0f",author:"\u4f5c\u8005",copyright:"\u7248\u6743\u58f0\u660e",add:"\u6dfb\u52a0\u5143\u7d20",remove:"\u5220\u9664\u9009\u62e9\u5143\u7d20",moveup:"\u4e0a\u79fb\u9009\u62e9\u5143\u7d20",movedown:"\u4e0b\u79fb\u9009\u62e9\u5143\u7d20","head_elements":"Head\u5143\u7d20",info:"\u4fe1\u606f","add_title":"Title\u5143\u7d20","add_meta":"Meta\u5143\u7d20","add_script":"Script\u5143\u7d20","add_style":"Style\u5143\u7d20","add_link":"Link\u5143\u7d20","add_base":"Base\u5143\u7d20","add_comment":"\u6ce8\u91ca","title_element":"Title\u5143\u7d20","script_element":"Script\u5143\u7d20","style_element":"Style\u5143\u7d20","base_element":"Base\u5143\u7d20","link_element":"Link\u5143\u7d20","meta_element":"Meta\u5143\u7d20","comment_element":"\u6ce8\u91ca",src:"\u5730\u5740",language:"\u8bed\u8a00",href:"Href",target:"\u76ee\u6807",type:"\u7c7b\u578b",charset:"\u5b57\u7b26\u96c6",defer:"Defer",media:"\u5a92\u4f53",properties:"\u5c5e\u6027",name:"\u540d\u79f0",value:"\u503c",content:"\u5185\u5bb9",rel:"Rel",rev:"Rev",hreflang:"Href\u8bed\u8a00","general_props":"\u5e38\u89c4","advanced_props":"\u9ad8\u7ea7"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullpage/langs/zh-tw_dlg.js b/program/js/tiny_mce/plugins/fullpage/langs/zh-tw_dlg.js
deleted file mode 100644
index 5a9b05433..000000000
--- a/program/js/tiny_mce/plugins/fullpage/langs/zh-tw_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('zh-tw.fullpage_dlg',{title:"\u9801\u9762\u8a2d\u5b9a","meta_tab":"\u4e00\u822c","appearance_tab":"\u5916\u89c0","advanced_tab":"\u66f4\u591a\u8a2d\u5b9a","meta_props":"Meta \u8cc7\u8a0a",langprops:"\u8a9e\u8a00\u8207\u7de8\u78bc\u8a2d\u5b9a","meta_title":"\u6a19\u984c","meta_keywords":"\u95dc\u9375\u5b57","meta_description":"\u63cf\u8ff0","meta_robots":"\u641c\u5c0b\u5f15\u64ce\u7684\u6a5f\u5668\u4eba",doctypes:"\u6587\u4ef6\u985e\u578b (Doctype)",langcode:"\u8a9e\u8a00\u7de8\u78bc",langdir:"\u66f8\u5beb\u65b9\u5f0f",ltr:"\u5f9e\u5de6\u5230\u53f3",rtl:"\u5f9e\u53f3\u5230\u5de6","xml_pi":"XML \u5b9a\u7fa9 (XML declaration)",encoding:"\u5b57\u5143\u7de8\u78bc","appearance_bgprops":"\u80cc\u666f\u8a2d\u5b9a","appearance_marginprops":"\u7db2\u9801\u7684\u908a\u8ddd","appearance_linkprops":"\u9023\u7d50\u7684\u984f\u8272","appearance_textprops":"\u6587\u5b57\u8a2d\u5b9a",bgcolor:"\u80cc\u666f\u984f\u8272",bgimage:"\u80cc\u666f\u5716","left_margin":"\u5de6\u908a\u8ddd","right_margin":"\u53f3\u908a\u8ddd","top_margin":"\u4e0a\u65b9\u908a\u8ddd","bottom_margin":"\u4e0b\u65b9\u908a\u8ddd","text_color":"\u6587\u5b57\u984f\u8272","font_size":"\u5b57\u9ad4\u5927\u5c0f","font_face":"\u5b57\u9ad4\u6a23\u5f0f","link_color":"\u9810\u8a2d\u7684\u984f\u8272\u6a23\u5f0f","hover_color":"\u6ed1\u9f20\u79fb\u904e\u53bb\u7684\u984f\u8272\u6a23\u5f0f","visited_color":"\u9ede\u904e\u5f8c\u7684\u984f\u8272\u6a23\u5f0f","active_color":"\u6309\u4e0b\u53bb\u5f8c\u7684\u984f\u8272",textcolor:"\u984f\u8272",fontsize:"\u6309\u4e0b\u53bb\u5f8c\u7684\u984f\u8272\u6a23\u5f0f",fontface:"\u5b57\u9ad4\u6a23\u5f0f","meta_index_follow":"\u516c\u958b\u7d66\u641c\u5c0b\u5f15\u64ce\u77e5\u9053","meta_index_nofollow":"\u544a\u8a34\u641c\u5c0b\u5f15\u64ce\u53ef\u4ee5\u5206\u4eab\u9023\u7d50\u7d66\u5927\u5bb6\uff0c\u4f46\u4e0d\u8981\u8b93\u641c\u5c0b\u5f15\u64ce\u5f9e\u9019\u88e1\u627e\u8cc7\u6599","meta_noindex_follow":"\u544a\u8a34\u641c\u5c0b\u5f15\u64ce\u4e0d\u8981\u8b93\u5927\u5bb6\u77e5\u9053\u6709\u9019\u500b\u9023\u7d50\uff0c\u53ea\u8b93\u641c\u5c0b\u5f15\u64ce\u77e5\u9053\u3001\u627e\u8cc7\u6599","meta_noindex_nofollow":"\u544a\u8a34\u641c\u5c0b\u5f15\u64ce\u8df3\u904e\u9019\u500b\u9023\u7d50","appearance_style":"\u6a23\u5f0f\u8868\u8207\u6a23\u5f0f\u7684\u5c6c\u6027\u8a2d\u5b9a",stylesheet:"\u6a23\u5f0f\u8868",style:"\u6a23\u5f0f",author:"\u9328\u9ede (\u66f8\u7c64)",copyright:"\u8457\u4f5c/\u6388\u6b0a",add:"\u65b0\u589e HTML \u6a19\u7c64",remove:"\u522a\u9664\u6240\u9078\u7684\u6a19\u7c64",moveup:"\u79fb\u52d5\u9078\u64c7\u7684\u6a19\u7c64 (\u5f80\u4e0a)",movedown:"\u79fb\u52d5\u9078\u64c7\u7684\u6a19\u7c64 (\u5f80\u4e0b)","head_elements":"HTML \u7684 Head \u6a19\u7c64",info:"\u8cc7\u8a0a","add_title":"HTML \u7684 Title \u6a19\u7c64","add_meta":"HTML \u7684 Meta \u6a19\u7c64","add_script":"HTML \u7684 Script \u6a19\u7c64","add_style":"HTML \u7684 Style \u6a19\u7c64","add_link":"HTML \u7684 Link \u6a19\u7c64","add_base":"HTML \u7684 Base \u6a19\u7c64","add_comment":"\u8a3b\u6587","title_element":"HTML \u7684 Title \u6a19\u7c64","script_element":"HTML \u7684 Script \u6a19\u7c64","style_element":"HTML \u7684 Style \u6a19\u7c64","base_element":"HTML \u7684 Base \u6a19\u7c64","link_element":"HTML \u7684 Link \u6a19\u7c64","meta_element":"HTML \u7684 Meta \u6a19\u7c64","comment_element":"\u8a3b\u89e3",src:"\u4f86\u6e90",language:"\u8a9e\u8a00",href:"\u9023\u7d50\u4f4d\u7f6e",target:"\u958b\u555f\u65b9\u5f0f",type:"\u5f62\u5f0f",charset:"\u5b57\u5143",defer:"\u5ef6\u7de9",media:"\u5f71\u97f3/\u5a92\u9ad4",properties:"\u5c6c\u6027",name:"\u540d\u7a31",value:"\u503c",content:"\u5167\u5bb9",rel:"\u8a72\u9023\u7d50\u662f\u4ec0\u9ebc (Rel)",rev:"\u8a72\u9023\u7d50\u8207\u7db2\u7ad9\u7684\u95dc\u4fc2 (Rev)",hreflang:"\u8a72\u9023\u7d50\u7684\u8a9e\u7cfb","general_props":"\u4e00\u822c","advanced_props":"\u66f4\u591a"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullscreen/editor_plugin.js b/program/js/tiny_mce/plugins/fullscreen/editor_plugin.js
deleted file mode 100644
index 1aa8cc443..000000000
--- a/program/js/tiny_mce/plugins/fullscreen/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){var b=tinymce.DOM;var a=function(d,f,e){var c=function(g){var i=d.controlManager.get(g);var h=f.controlManager.get(g);if(i&&h){h.displayColor(i.value)}};c("forecolor");c("backcolor");f.setContent(d.getContent({format:"raw"}),{format:"raw"});f.selection.moveToBookmark(e);if(d.plugins.spellchecker&&f.plugins.spellchecker){f.plugins.spellchecker.setLanguage(d.plugins.spellchecker.selectedLang)}};tinymce.create("tinymce.plugins.FullScreenPlugin",{init:function(i,c){var l=this,m={},k=b.doc.documentElement,d,o,h,g,f,e,j;i.addCommand("mceFullScreen",function(){var q,r;if(i.getParam("fullscreen_is_enabled")){if(i.getParam("fullscreen_new_window")){closeFullscreen()}else{b.win.setTimeout(function(){var t=i;var s=tinyMCE.get(t.getParam("fullscreen_editor_id"));s.plugins.fullscreen.saveState(t);tinyMCE.remove(t)},10)}return}if(i.getParam("fullscreen_new_window")){l.fullscreenSettings={bookmark:i.selection.getBookmark()};q=b.win.open(c+"/fullscreen.htm","mceFullScreenPopup","fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width="+screen.availWidth+",height="+screen.availHeight);try{q.resizeTo(screen.availWidth,screen.availHeight)}catch(p){}}else{o=b.getStyle(b.doc.body,"overflow",1)||"auto";h=b.getStyle(k,"overflow",1);d=b.getViewPort();g=d.x;f=d.y;if(tinymce.isOpera&&o=="visible"){o="auto"}if(tinymce.isIE&&o=="scroll"){o="auto"}if(tinymce.isIE&&(h=="visible"||h=="scroll")){h="auto"}if(o=="0px"){o=""}b.setStyle(b.doc.body,"overflow","hidden");k.style.overflow="hidden";d=b.getViewPort();b.win.scrollTo(0,0);if(tinymce.isIE){d.h-=1}if(tinymce.isIE6||document.compatMode=="BackCompat"){e="absolute;top:"+d.y}else{e="fixed;top:0"}n=b.add(b.doc.body,"div",{id:"mce_fullscreen_container",style:"position:"+e+";left:0;width:"+d.w+"px;height:"+d.h+"px;z-index:200000;"});b.add(n,"div",{id:"mce_fullscreen"});tinymce.each(i.settings,function(s,t){m[t]=s});m.id="mce_fullscreen";m.width=n.clientWidth;m.height=n.clientHeight-15;m.fullscreen_is_enabled=true;m.fullscreen_editor_id=i.id;m.theme_advanced_resizing=false;m.save_onsavecallback=function(){i.setContent(tinyMCE.get(m.id).getContent());i.execCommand("mceSave")};tinymce.each(i.getParam("fullscreen_settings"),function(t,s){m[s]=t});l.fullscreenSettings={bookmark:i.selection.getBookmark(),fullscreen_overflow:o,fullscreen_html_overflow:h,fullscreen_scrollx:g,fullscreen_scrolly:f};if(m.theme_advanced_toolbar_location==="external"){m.theme_advanced_toolbar_location="top"}tinyMCE.oldSettings=tinyMCE.settings;l.fullscreenEditor=new tinymce.Editor("mce_fullscreen",m);l.fullscreenEditor.onInit.add(function(){l.loadState(l.fullscreenEditor)});l.fullscreenEditor.render();l.fullscreenElement=new tinymce.dom.Element("mce_fullscreen_container");l.fullscreenElement.update();l.resizeFunc=tinymce.dom.Event.add(b.win,"resize",function(){var v=tinymce.DOM.getViewPort(),t=l.fullscreenEditor,s,u;s=t.dom.getSize(t.getContainer().getElementsByTagName("table")[0]);u=t.dom.getSize(t.getContainer().getElementsByTagName("iframe")[0]);t.theme.resizeTo(v.w-s.w+u.w,v.h-s.h+u.h)})}});i.addButton("fullscreen",{title:"fullscreen.desc",cmd:"mceFullScreen"});i.onNodeChange.add(function(q,p){p.setActive("fullscreen",q.getParam("fullscreen_is_enabled"))});l.loadState=function(p){if(!(p&&l.fullscreenSettings)){throw"No fullscreen editor to load to"}a(i,p,l.fullscreenSettings.bookmark);p.focus()};l.saveState=function(q){if(!(q&&l.fullscreenSettings)){throw"No fullscreen editor to restore from"}var p=l.fullscreenSettings;a(q,i,q.selection.getBookmark());if(!i.getParam("fullscreen_new_window")){tinymce.dom.Event.remove(b.win,"resize",l.resizeFunc);delete l.resizeFunc;b.remove("mce_fullscreen_container");b.doc.documentElement.style.overflow=p.fullscreen_html_overflow;b.setStyle(b.doc.body,"overflow",p.fullscreen_overflow);b.win.scrollTo(p.fullscreen_scrollx,p.fullscreen_scrolly)}tinyMCE.settings=tinyMCE.oldSettings;delete tinyMCE.oldSettings;delete l.fullscreenEditor;delete l.fullscreenElement;delete l.fullscreenSettings;b.win.setTimeout(function(){i.selection.moveToBookmark(j);i.focus()},10)}},getInfo:function(){return{longname:"Fullscreen",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("fullscreen",tinymce.plugins.FullScreenPlugin)})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullscreen/editor_plugin_src.js b/program/js/tiny_mce/plugins/fullscreen/editor_plugin_src.js
deleted file mode 100644
index bec886f74..000000000
--- a/program/js/tiny_mce/plugins/fullscreen/editor_plugin_src.js
+++ /dev/null
@@ -1,234 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- var DOM = tinymce.DOM;
-
- // State Transfer function
- var transferState = function(oldEditor, newEditor, bookmark) {
- var transferColorButtonState = function(swapme) {
- var c = oldEditor.controlManager.get(swapme);
- var newC = newEditor.controlManager.get(swapme);
-
- if (c && newC) {
- newC.displayColor(c.value);
- }
-
- };
-
- transferColorButtonState('forecolor');
- transferColorButtonState('backcolor');
- newEditor.setContent(oldEditor.getContent({format : 'raw'}), {format : 'raw'});
- newEditor.selection.moveToBookmark(bookmark);
-
- if (oldEditor.plugins.spellchecker && newEditor.plugins.spellchecker) {
- newEditor.plugins.spellchecker.setLanguage(oldEditor.plugins.spellchecker.selectedLang);
- }
- };
-
- tinymce.create('tinymce.plugins.FullScreenPlugin', {
- init : function(ed, url) {
- var t = this, s = {}, de = DOM.doc.documentElement, vp, fullscreen_overflow, fullscreen_html_overflow, fullscreen_scrollx, fullscreen_scrolly, posCss, bookmark;
-
- // Register commands
- ed.addCommand('mceFullScreen', function() {
- var win, oed;
-
- if (ed.getParam('fullscreen_is_enabled')) {
- if (ed.getParam('fullscreen_new_window'))
- closeFullscreen(); // Call to close in fullscreen.htm
- else {
- DOM.win.setTimeout(function() {
- var fullscreenEditor = ed;
-
- // find the editor that opened this one, execute restore function there
- var originalEditor = tinyMCE.get(fullscreenEditor.getParam('fullscreen_editor_id'));
- originalEditor.plugins.fullscreen.saveState(fullscreenEditor);
-
- tinyMCE.remove(fullscreenEditor);
- }, 10);
- }
-
- return;
- }
-
- if (ed.getParam('fullscreen_new_window')) {
- t.fullscreenSettings = {
- bookmark: ed.selection.getBookmark()
- };
- win = DOM.win.open(url + "/fullscreen.htm", "mceFullScreenPopup", "fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width=" + screen.availWidth + ",height=" + screen.availHeight);
- try {
- win.resizeTo(screen.availWidth, screen.availHeight);
- } catch (e) {
- // Ignore
- }
- } else {
- fullscreen_overflow = DOM.getStyle(DOM.doc.body, 'overflow', 1) || 'auto';
- fullscreen_html_overflow = DOM.getStyle(de, 'overflow', 1);
- vp = DOM.getViewPort();
- fullscreen_scrollx = vp.x;
- fullscreen_scrolly = vp.y;
-
- // Fixes an Opera bug where the scrollbars doesn't reappear
- if (tinymce.isOpera && fullscreen_overflow == 'visible')
- fullscreen_overflow = 'auto';
-
- // Fixes an IE bug where horizontal scrollbars would appear
- if (tinymce.isIE && fullscreen_overflow == 'scroll')
- fullscreen_overflow = 'auto';
-
- // Fixes an IE bug where the scrollbars doesn't reappear
- if (tinymce.isIE && (fullscreen_html_overflow == 'visible' || fullscreen_html_overflow == 'scroll'))
- fullscreen_html_overflow = 'auto';
-
- if (fullscreen_overflow == '0px')
- fullscreen_overflow = '';
-
- DOM.setStyle(DOM.doc.body, 'overflow', 'hidden');
- de.style.overflow = 'hidden'; //Fix for IE6/7
- vp = DOM.getViewPort();
- DOM.win.scrollTo(0, 0);
-
- if (tinymce.isIE)
- vp.h -= 1;
-
- // Use fixed position if it exists
- if (tinymce.isIE6 || document.compatMode == 'BackCompat')
- posCss = 'absolute;top:' + vp.y;
- else
- posCss = 'fixed;top:0';
-
- n = DOM.add(DOM.doc.body, 'div', {
- id : 'mce_fullscreen_container',
- style : 'position:' + posCss + ';left:0;width:' + vp.w + 'px;height:' + vp.h + 'px;z-index:200000;'});
- DOM.add(n, 'div', {id : 'mce_fullscreen'});
-
- tinymce.each(ed.settings, function(v, n) {
- s[n] = v;
- });
-
- s.id = 'mce_fullscreen';
- s.width = n.clientWidth;
- s.height = n.clientHeight - 15;
- s.fullscreen_is_enabled = true;
- s.fullscreen_editor_id = ed.id;
- s.theme_advanced_resizing = false;
- s.save_onsavecallback = function() {
- ed.setContent(tinyMCE.get(s.id).getContent());
- ed.execCommand('mceSave');
- };
-
- tinymce.each(ed.getParam('fullscreen_settings'), function(v, k) {
- s[k] = v;
- });
-
- t.fullscreenSettings = {
- bookmark: ed.selection.getBookmark(),
- fullscreen_overflow: fullscreen_overflow,
- fullscreen_html_overflow: fullscreen_html_overflow,
- fullscreen_scrollx: fullscreen_scrollx,
- fullscreen_scrolly: fullscreen_scrolly
- };
-
- if (s.theme_advanced_toolbar_location === 'external')
- s.theme_advanced_toolbar_location = 'top';
-
- tinyMCE.oldSettings = tinyMCE.settings; // Store old settings, the Editor constructor overwrites them
- t.fullscreenEditor = new tinymce.Editor('mce_fullscreen', s);
- t.fullscreenEditor.onInit.add(function() {
- t.loadState(t.fullscreenEditor);
- });
-
- t.fullscreenEditor.render();
-
- t.fullscreenElement = new tinymce.dom.Element('mce_fullscreen_container');
- t.fullscreenElement.update();
- //document.body.overflow = 'hidden';
-
- t.resizeFunc = tinymce.dom.Event.add(DOM.win, 'resize', function() {
- var vp = tinymce.DOM.getViewPort(), fed = t.fullscreenEditor, outerSize, innerSize;
-
- // Get outer/inner size to get a delta size that can be used to calc the new iframe size
- outerSize = fed.dom.getSize(fed.getContainer().getElementsByTagName('table')[0]);
- innerSize = fed.dom.getSize(fed.getContainer().getElementsByTagName('iframe')[0]);
-
- fed.theme.resizeTo(vp.w - outerSize.w + innerSize.w, vp.h - outerSize.h + innerSize.h);
- });
- }
- });
-
- // Register buttons
- ed.addButton('fullscreen', {title : 'fullscreen.desc', cmd : 'mceFullScreen'});
-
- ed.onNodeChange.add(function(ed, cm) {
- cm.setActive('fullscreen', ed.getParam('fullscreen_is_enabled'));
- });
-
- // fullscreenEditor is a param here because in window mode we don't create it
- t.loadState = function(fullscreenEditor) {
- if (!(fullscreenEditor && t.fullscreenSettings)) {
- throw "No fullscreen editor to load to";
- }
-
- transferState(ed, fullscreenEditor, t.fullscreenSettings.bookmark);
- fullscreenEditor.focus();
-
- };
-
- // fullscreenEditor is a param here because in window mode we don't create it
- t.saveState = function(fullscreenEditor) {
- if (!(fullscreenEditor && t.fullscreenSettings)) {
- throw "No fullscreen editor to restore from";
- }
- var settings = t.fullscreenSettings;
-
- transferState(fullscreenEditor, ed, fullscreenEditor.selection.getBookmark());
-
- // cleanup only required if window mode isn't used
- if (!ed.getParam('fullscreen_new_window')) {
- tinymce.dom.Event.remove(DOM.win, 'resize', t.resizeFunc);
- delete t.resizeFunc;
-
- DOM.remove('mce_fullscreen_container');
-
- DOM.doc.documentElement.style.overflow = settings.fullscreen_html_overflow;
- DOM.setStyle(DOM.doc.body, 'overflow', settings.fullscreen_overflow);
- DOM.win.scrollTo(settings.fullscreen_scrollx, settings.fullscreen_scrolly);
- }
- tinyMCE.settings = tinyMCE.oldSettings; // Restore old settings
-
- // clear variables
- delete tinyMCE.oldSettings;
- delete t.fullscreenEditor;
- delete t.fullscreenElement;
- delete t.fullscreenSettings;
-
- // allow the fullscreen editor to be removed before restoring focus and selection
- DOM.win.setTimeout(function() {
- ed.selection.moveToBookmark(bookmark);
- ed.focus();
- }, 10);
- };
- },
-
- getInfo : function() {
- return {
- longname : 'Fullscreen',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('fullscreen', tinymce.plugins.FullScreenPlugin);
-})();
diff --git a/program/js/tiny_mce/plugins/fullscreen/fullscreen.htm b/program/js/tiny_mce/plugins/fullscreen/fullscreen.htm
deleted file mode 100644
index baf028b79..000000000
--- a/program/js/tiny_mce/plugins/fullscreen/fullscreen.htm
+++ /dev/null
@@ -1,117 +0,0 @@
-<!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title></title>
- <meta http-equiv="X-UA-Compatible" content="IE=edge" />
- <script type="text/javascript" src="../../tiny_mce.js"></script>
- <script type="text/javascript">
- function patchCallback(settings, key) {
- if (settings[key])
- settings[key] = "window.opener." + settings[key];
- }
-
- var settings = {}, paSe = window.opener.tinyMCE.activeEditor.settings, oeID = window.opener.tinyMCE.activeEditor.id;
-
- // Clone array
- for (var n in paSe)
- settings[n] = paSe[n];
-
- // Override options for fullscreen
- for (var n in paSe.fullscreen_settings)
- settings[n] = paSe.fullscreen_settings[n];
-
- // Patch callbacks, make them point to window.opener
- patchCallback(settings, 'urlconverter_callback');
- patchCallback(settings, 'insertlink_callback');
- patchCallback(settings, 'insertimage_callback');
- patchCallback(settings, 'setupcontent_callback');
- patchCallback(settings, 'save_callback');
- patchCallback(settings, 'onchange_callback');
- patchCallback(settings, 'init_instance_callback');
- patchCallback(settings, 'file_browser_callback');
- patchCallback(settings, 'cleanup_callback');
- patchCallback(settings, 'execcommand_callback');
- patchCallback(settings, 'oninit');
-
- // Set options
- delete settings.id;
- settings['mode'] = 'exact';
- settings['elements'] = 'fullscreenarea';
- settings['add_unload_trigger'] = false;
- settings['ask'] = false;
- settings['document_base_url'] = window.opener.tinyMCE.activeEditor.documentBaseURI.getURI();
- settings['fullscreen_is_enabled'] = true;
- settings['fullscreen_editor_id'] = oeID;
- settings['theme_advanced_resizing'] = false;
- settings['strict_loading_mode'] = true;
-
- settings.save_onsavecallback = function() {
- moveContent();
- window.opener.tinyMCE.get(oeID).execCommand('mceSave');
- window.close();
- };
-
- function unloadHandler(e) {
- moveContent();
- }
-
- function moveContent() {
- // find the original editor, execute restore state in it's plugin instance
- window.opener.tinyMCE.get(oeID).plugins.fullscreen.saveState(tinyMCE.activeEditor);
-
- // prevent moveContent from being called twice - e.g. if the unloadHandler runs after moveContent()
- tinymce.dom.Event.remove(window, "beforeunload", unloadHandler);
- }
-
- function closeFullscreen() {
- // moveContent() will be called by the unload handler
- window.close();
- }
-
- function doParentSubmit() {
- moveContent();
-
- if (window.opener.tinyMCE.selectedInstance.formElement.form)
- window.opener.tinyMCE.selectedInstance.formElement.form.submit();
-
- window.close();
-
- return false;
- }
-
- function render() {
- var e = document.getElementById('fullscreenarea'), vp, ed, ow, oh, dom = tinymce.DOM;
-
- vp = dom.getViewPort();
- settings.width = vp.w;
- settings.height = vp.h - 15;
-
- settings.oninit = function() {
- var ed = tinyMCE.activeEditor;
- window.opener.tinyMCE.get(oeID).plugins.fullscreen.loadState(ed);
-
- tinymce.dom.Event.add(window, 'resize', function() {
- var vp = dom.getViewPort();
-
- tinyMCE.activeEditor.theme.resizeTo(vp.w, vp.h);
- });
- }
-
- tinyMCE.init(settings);
- }
-
- // Add onunload
- tinymce.dom.Event.add(window, "beforeunload", unloadHandler);
- </script>
-</head>
-<body style="margin:0;overflow:hidden;width:100%;height:100%" scrolling="no" scroll="no">
-<form onsubmit="doParentSubmit();">
-<textarea id="fullscreenarea" style="width:100%; height:100%"></textarea>
-</form>
-
-<script type="text/javascript">
- render();
-</script>
-
-</body>
-</html>
diff --git a/program/js/tiny_mce/plugins/iespell/editor_plugin.js b/program/js/tiny_mce/plugins/iespell/editor_plugin.js
deleted file mode 100644
index e9cba106c..000000000
--- a/program/js/tiny_mce/plugins/iespell/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.IESpell",{init:function(a,b){var c=this,d;if(!tinymce.isIE){return}c.editor=a;a.addCommand("mceIESpell",function(){try{d=new ActiveXObject("ieSpell.ieSpellExtension");d.CheckDocumentNode(a.getDoc().documentElement)}catch(f){if(f.number==-2146827859){a.windowManager.confirm(a.getLang("iespell.download"),function(e){if(e){window.open("http://www.iespell.com/download.php","ieSpellDownload","")}})}else{a.windowManager.alert("Error Loading ieSpell: Exception "+f.number)}}});a.addButton("iespell",{title:"iespell.iespell_desc",cmd:"mceIESpell"})},getInfo:function(){return{longname:"IESpell (IE Only)",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/iespell",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("iespell",tinymce.plugins.IESpell)})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/iespell/editor_plugin_src.js b/program/js/tiny_mce/plugins/iespell/editor_plugin_src.js
deleted file mode 100644
index 1b2bb9846..000000000
--- a/program/js/tiny_mce/plugins/iespell/editor_plugin_src.js
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- tinymce.create('tinymce.plugins.IESpell', {
- init : function(ed, url) {
- var t = this, sp;
-
- if (!tinymce.isIE)
- return;
-
- t.editor = ed;
-
- // Register commands
- ed.addCommand('mceIESpell', function() {
- try {
- sp = new ActiveXObject("ieSpell.ieSpellExtension");
- sp.CheckDocumentNode(ed.getDoc().documentElement);
- } catch (e) {
- if (e.number == -2146827859) {
- ed.windowManager.confirm(ed.getLang("iespell.download"), function(s) {
- if (s)
- window.open('http://www.iespell.com/download.php', 'ieSpellDownload', '');
- });
- } else
- ed.windowManager.alert("Error Loading ieSpell: Exception " + e.number);
- }
- });
-
- // Register buttons
- ed.addButton('iespell', {title : 'iespell.iespell_desc', cmd : 'mceIESpell'});
- },
-
- getInfo : function() {
- return {
- longname : 'IESpell (IE Only)',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/iespell',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('iespell', tinymce.plugins.IESpell);
-})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/inlinepopups/editor_plugin.js b/program/js/tiny_mce/plugins/inlinepopups/editor_plugin.js
deleted file mode 100644
index 2d71a2e17..000000000
--- a/program/js/tiny_mce/plugins/inlinepopups/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){var d=tinymce.DOM,b=tinymce.dom.Element,a=tinymce.dom.Event,e=tinymce.each,c=tinymce.is;tinymce.create("tinymce.plugins.InlinePopups",{init:function(f,g){f.onBeforeRenderUI.add(function(){f.windowManager=new tinymce.InlineWindowManager(f);d.loadCSS(g+"/skins/"+(f.settings.inlinepopups_skin||"clearlooks2")+"/window.css")})},getInfo:function(){return{longname:"InlinePopups",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/inlinepopups",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.create("tinymce.InlineWindowManager:tinymce.WindowManager",{InlineWindowManager:function(f){var g=this;g.parent(f);g.zIndex=300000;g.count=0;g.windows={}},open:function(s,j){var z=this,i,k="",r=z.editor,g=0,v=0,h,m,o,q,l,x,y,n;s=s||{};j=j||{};if(!s.inline){return z.parent(s,j)}n=z._frontWindow();if(n&&d.get(n.id+"_ifr")){n.focussedElement=d.get(n.id+"_ifr").contentWindow.document.activeElement}if(!s.type){z.bookmark=r.selection.getBookmark(1)}i=d.uniqueId("mce_inlinepopups_");h=d.getViewPort();s.width=parseInt(s.width||320);s.height=parseInt(s.height||240)+(tinymce.isIE?8:0);s.min_width=parseInt(s.min_width||150);s.min_height=parseInt(s.min_height||100);s.max_width=parseInt(s.max_width||2000);s.max_height=parseInt(s.max_height||2000);s.left=s.left||Math.round(Math.max(h.x,h.x+(h.w/2)-(s.width/2)));s.top=s.top||Math.round(Math.max(h.y,h.y+(h.h/2)-(s.height/2)));s.movable=s.resizable=true;j.mce_width=s.width;j.mce_height=s.height;j.mce_inline=true;j.mce_window_id=i;j.mce_auto_focus=s.auto_focus;z.features=s;z.params=j;z.onOpen.dispatch(z,s,j);if(s.type){k+=" mceModal";if(s.type){k+=" mce"+s.type.substring(0,1).toUpperCase()+s.type.substring(1)}s.resizable=false}if(s.statusbar){k+=" mceStatusbar"}if(s.resizable){k+=" mceResizable"}if(s.minimizable){k+=" mceMinimizable"}if(s.maximizable){k+=" mceMaximizable"}if(s.movable){k+=" mceMovable"}z._addAll(d.doc.body,["div",{id:i,role:"dialog","aria-labelledby":s.type?i+"_content":i+"_title","class":(r.settings.inlinepopups_skin||"clearlooks2")+(tinymce.isIE&&window.getSelection?" ie9":""),style:"width:100px;height:100px"},["div",{id:i+"_wrapper","class":"mceWrapper"+k},["div",{id:i+"_top","class":"mceTop"},["div",{"class":"mceLeft"}],["div",{"class":"mceCenter"}],["div",{"class":"mceRight"}],["span",{id:i+"_title"},s.title||""]],["div",{id:i+"_middle","class":"mceMiddle"},["div",{id:i+"_left","class":"mceLeft",tabindex:"0"}],["span",{id:i+"_content"}],["div",{id:i+"_right","class":"mceRight",tabindex:"0"}]],["div",{id:i+"_bottom","class":"mceBottom"},["div",{"class":"mceLeft"}],["div",{"class":"mceCenter"}],["div",{"class":"mceRight"}],["span",{id:i+"_status"},"Content"]],["a",{"class":"mceMove",tabindex:"-1",href:"javascript:;"}],["a",{"class":"mceMin",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{"class":"mceMax",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{"class":"mceMed",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{"class":"mceClose",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{id:i+"_resize_n","class":"mceResize mceResizeN",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_s","class":"mceResize mceResizeS",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_w","class":"mceResize mceResizeW",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_e","class":"mceResize mceResizeE",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_nw","class":"mceResize mceResizeNW",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_ne","class":"mceResize mceResizeNE",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_sw","class":"mceResize mceResizeSW",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_se","class":"mceResize mceResizeSE",tabindex:"-1",href:"javascript:;"}]]]);d.setStyles(i,{top:-10000,left:-10000});if(tinymce.isGecko){d.setStyle(i,"overflow","auto")}if(!s.type){g+=d.get(i+"_left").clientWidth;g+=d.get(i+"_right").clientWidth;v+=d.get(i+"_top").clientHeight;v+=d.get(i+"_bottom").clientHeight}d.setStyles(i,{top:s.top,left:s.left,width:s.width+g,height:s.height+v});y=s.url||s.file;if(y){if(tinymce.relaxedDomain){y+=(y.indexOf("?")==-1?"?":"&")+"mce_rdomain="+tinymce.relaxedDomain}y=tinymce._addVer(y)}if(!s.type){d.add(i+"_content","iframe",{id:i+"_ifr",src:'javascript:""',frameBorder:0,style:"border:0;width:10px;height:10px"});d.setStyles(i+"_ifr",{width:s.width,height:s.height});d.setAttrib(i+"_ifr","src",y)}else{d.add(i+"_wrapper","a",{id:i+"_ok","class":"mceButton mceOk",href:"javascript:;",onmousedown:"return false;"},"Ok");if(s.type=="confirm"){d.add(i+"_wrapper","a",{"class":"mceButton mceCancel",href:"javascript:;",onmousedown:"return false;"},"Cancel")}d.add(i+"_middle","div",{"class":"mceIcon"});d.setHTML(i+"_content",s.content.replace("\n","<br />"));a.add(i,"keyup",function(f){var p=27;if(f.keyCode===p){s.button_func(false);return a.cancel(f)}});a.add(i,"keydown",function(f){var t,p=9;if(f.keyCode===p){t=d.select("a.mceCancel",i+"_wrapper")[0];if(t&&t!==f.target){t.focus()}else{d.get(i+"_ok").focus()}return a.cancel(f)}})}o=a.add(i,"mousedown",function(t){var u=t.target,f,p;f=z.windows[i];z.focus(i);if(u.nodeName=="A"||u.nodeName=="a"){if(u.className=="mceClose"){z.close(null,i);return a.cancel(t)}else{if(u.className=="mceMax"){f.oldPos=f.element.getXY();f.oldSize=f.element.getSize();p=d.getViewPort();p.w-=2;p.h-=2;f.element.moveTo(p.x,p.y);f.element.resizeTo(p.w,p.h);d.setStyles(i+"_ifr",{width:p.w-f.deltaWidth,height:p.h-f.deltaHeight});d.addClass(i+"_wrapper","mceMaximized")}else{if(u.className=="mceMed"){f.element.moveTo(f.oldPos.x,f.oldPos.y);f.element.resizeTo(f.oldSize.w,f.oldSize.h);f.iframeElement.resizeTo(f.oldSize.w-f.deltaWidth,f.oldSize.h-f.deltaHeight);d.removeClass(i+"_wrapper","mceMaximized")}else{if(u.className=="mceMove"){return z._startDrag(i,t,u.className)}else{if(d.hasClass(u,"mceResize")){return z._startDrag(i,t,u.className.substring(13))}}}}}}});q=a.add(i,"click",function(f){var p=f.target;z.focus(i);if(p.nodeName=="A"||p.nodeName=="a"){switch(p.className){case"mceClose":z.close(null,i);return a.cancel(f);case"mceButton mceOk":case"mceButton mceCancel":s.button_func(p.className=="mceButton mceOk");return a.cancel(f)}}});a.add([i+"_left",i+"_right"],"focus",function(p){var t=d.get(i+"_ifr");if(t){var f=t.contentWindow.document.body;var u=d.select(":input:enabled,*[tabindex=0]",f);if(p.target.id===(i+"_left")){u[u.length-1].focus()}else{u[0].focus()}}else{d.get(i+"_ok").focus()}});x=z.windows[i]={id:i,mousedown_func:o,click_func:q,element:new b(i,{blocker:1,container:r.getContainer()}),iframeElement:new b(i+"_ifr"),features:s,deltaWidth:g,deltaHeight:v};x.iframeElement.on("focus",function(){z.focus(i)});if(z.count==0&&z.editor.getParam("dialog_type","modal")=="modal"){d.add(d.doc.body,"div",{id:"mceModalBlocker","class":(z.editor.settings.inlinepopups_skin||"clearlooks2")+"_modalBlocker",style:{zIndex:z.zIndex-1}});d.show("mceModalBlocker");d.setAttrib(d.doc.body,"aria-hidden","true")}else{d.setStyle("mceModalBlocker","z-index",z.zIndex-1)}if(tinymce.isIE6||/Firefox\/2\./.test(navigator.userAgent)||(tinymce.isIE&&!d.boxModel)){d.setStyles("mceModalBlocker",{position:"absolute",left:h.x,top:h.y,width:h.w-2,height:h.h-2})}d.setAttrib(i,"aria-hidden","false");z.focus(i);z._fixIELayout(i,1);if(d.get(i+"_ok")){d.get(i+"_ok").focus()}z.count++;return x},focus:function(h){var g=this,f;if(f=g.windows[h]){f.zIndex=this.zIndex++;f.element.setStyle("zIndex",f.zIndex);f.element.update();h=h+"_wrapper";d.removeClass(g.lastId,"mceFocus");d.addClass(h,"mceFocus");g.lastId=h;if(f.focussedElement){f.focussedElement.focus()}else{if(d.get(h+"_ok")){d.get(f.id+"_ok").focus()}else{if(d.get(f.id+"_ifr")){d.get(f.id+"_ifr").focus()}}}}},_addAll:function(k,h){var g,l,f=this,j=tinymce.DOM;if(c(h,"string")){k.appendChild(j.doc.createTextNode(h))}else{if(h.length){k=k.appendChild(j.create(h[0],h[1]));for(g=2;g<h.length;g++){f._addAll(k,h[g])}}}},_startDrag:function(v,G,E){var o=this,u,z,C=d.doc,f,l=o.windows[v],h=l.element,y=h.getXY(),x,q,F,g,A,s,r,j,i,m,k,n,B;g={x:0,y:0};A=d.getViewPort();A.w-=2;A.h-=2;j=G.screenX;i=G.screenY;m=k=n=B=0;u=a.add(C,"mouseup",function(p){a.remove(C,"mouseup",u);a.remove(C,"mousemove",z);if(f){f.remove()}h.moveBy(m,k);h.resizeBy(n,B);q=h.getSize();d.setStyles(v+"_ifr",{width:q.w-l.deltaWidth,height:q.h-l.deltaHeight});o._fixIELayout(v,1);return a.cancel(p)});if(E!="Move"){D()}function D(){if(f){return}o._fixIELayout(v,0);d.add(C.body,"div",{id:"mceEventBlocker","class":"mceEventBlocker "+(o.editor.settings.inlinepopups_skin||"clearlooks2"),style:{zIndex:o.zIndex+1}});if(tinymce.isIE6||(tinymce.isIE&&!d.boxModel)){d.setStyles("mceEventBlocker",{position:"absolute",left:A.x,top:A.y,width:A.w-2,height:A.h-2})}f=new b("mceEventBlocker");f.update();x=h.getXY();q=h.getSize();s=g.x+x.x-A.x;r=g.y+x.y-A.y;d.add(f.get(),"div",{id:"mcePlaceHolder","class":"mcePlaceHolder",style:{left:s,top:r,width:q.w,height:q.h}});F=new b("mcePlaceHolder")}z=a.add(C,"mousemove",function(w){var p,H,t;D();p=w.screenX-j;H=w.screenY-i;switch(E){case"ResizeW":m=p;n=0-p;break;case"ResizeE":n=p;break;case"ResizeN":case"ResizeNW":case"ResizeNE":if(E=="ResizeNW"){m=p;n=0-p}else{if(E=="ResizeNE"){n=p}}k=H;B=0-H;break;case"ResizeS":case"ResizeSW":case"ResizeSE":if(E=="ResizeSW"){m=p;n=0-p}else{if(E=="ResizeSE"){n=p}}B=H;break;case"mceMove":m=p;k=H;break}if(n<(t=l.features.min_width-q.w)){if(m!==0){m+=n-t}n=t}if(B<(t=l.features.min_height-q.h)){if(k!==0){k+=B-t}B=t}n=Math.min(n,l.features.max_width-q.w);B=Math.min(B,l.features.max_height-q.h);m=Math.max(m,A.x-(s+A.x));k=Math.max(k,A.y-(r+A.y));m=Math.min(m,(A.w+A.x)-(s+q.w+A.x));k=Math.min(k,(A.h+A.y)-(r+q.h+A.y));if(m+k!==0){if(s+m<0){m=0}if(r+k<0){k=0}F.moveTo(s+m,r+k)}if(n+B!==0){F.resizeTo(q.w+n,q.h+B)}return a.cancel(w)});return a.cancel(G)},resizeBy:function(g,h,i){var f=this.windows[i];if(f){f.element.resizeBy(g,h);f.iframeElement.resizeBy(g,h)}},close:function(i,k){var g=this,f,j=d.doc,h,k;k=g._findId(k||i);if(!g.windows[k]){g.parent(i);return}g.count--;if(g.count==0){d.remove("mceModalBlocker");d.setAttrib(d.doc.body,"aria-hidden","false");g.editor.focus()}if(f=g.windows[k]){g.onClose.dispatch(g);a.remove(j,"mousedown",f.mousedownFunc);a.remove(j,"click",f.clickFunc);a.clear(k);a.clear(k+"_ifr");d.setAttrib(k+"_ifr","src",'javascript:""');f.element.remove();delete g.windows[k];h=g._frontWindow();if(h){g.focus(h.id)}}},_frontWindow:function(){var g,f=0;e(this.windows,function(h){if(h.zIndex>f){g=h;f=h.zIndex}});return g},setTitle:function(f,g){var h;f=this._findId(f);if(h=d.get(f+"_title")){h.innerHTML=d.encode(g)}},alert:function(g,f,j){var i=this,h;h=i.open({title:i,type:"alert",button_func:function(k){if(f){f.call(k||i,k)}i.close(null,h.id)},content:d.encode(i.editor.getLang(g,g)),inline:1,width:400,height:130})},confirm:function(g,f,j){var i=this,h;h=i.open({title:i,type:"confirm",button_func:function(k){if(f){f.call(k||i,k)}i.close(null,h.id)},content:d.encode(i.editor.getLang(g,g)),inline:1,width:400,height:130})},_findId:function(f){var g=this;if(typeof(f)=="string"){return f}e(g.windows,function(h){var i=d.get(h.id+"_ifr");if(i&&f==i.contentWindow){f=h.id;return false}});return f},_fixIELayout:function(i,h){var f,g;if(!tinymce.isIE6){return}e(["n","s","w","e","nw","ne","sw","se"],function(j){var k=d.get(i+"_resize_"+j);d.setStyles(k,{width:h?k.clientWidth:"",height:h?k.clientHeight:"",cursor:d.getStyle(k,"cursor",1)});d.setStyle(i+"_bottom","bottom","-1px");k=0});if(f=this.windows[i]){f.element.hide();f.element.show();e(d.select("div,a",i),function(k,j){if(k.currentStyle.backgroundImage!="none"){g=new Image();g.src=k.currentStyle.backgroundImage.replace(/url\(\"(.+)\"\)/,"$1")}});d.get(i).style.filter=""}}});tinymce.PluginManager.add("inlinepopups",tinymce.plugins.InlinePopups)})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/inlinepopups/editor_plugin_src.js b/program/js/tiny_mce/plugins/inlinepopups/editor_plugin_src.js
deleted file mode 100644
index da6ee2493..000000000
--- a/program/js/tiny_mce/plugins/inlinepopups/editor_plugin_src.js
+++ /dev/null
@@ -1,699 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- var DOM = tinymce.DOM, Element = tinymce.dom.Element, Event = tinymce.dom.Event, each = tinymce.each, is = tinymce.is;
-
- tinymce.create('tinymce.plugins.InlinePopups', {
- init : function(ed, url) {
- // Replace window manager
- ed.onBeforeRenderUI.add(function() {
- ed.windowManager = new tinymce.InlineWindowManager(ed);
- DOM.loadCSS(url + '/skins/' + (ed.settings.inlinepopups_skin || 'clearlooks2') + "/window.css");
- });
- },
-
- getInfo : function() {
- return {
- longname : 'InlinePopups',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/inlinepopups',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- tinymce.create('tinymce.InlineWindowManager:tinymce.WindowManager', {
- InlineWindowManager : function(ed) {
- var t = this;
-
- t.parent(ed);
- t.zIndex = 300000;
- t.count = 0;
- t.windows = {};
- },
-
- open : function(f, p) {
- var t = this, id, opt = '', ed = t.editor, dw = 0, dh = 0, vp, po, mdf, clf, we, w, u, parentWindow;
-
- f = f || {};
- p = p || {};
-
- // Run native windows
- if (!f.inline)
- return t.parent(f, p);
-
- parentWindow = t._frontWindow();
- if (parentWindow && DOM.get(parentWindow.id + '_ifr')) {
- parentWindow.focussedElement = DOM.get(parentWindow.id + '_ifr').contentWindow.document.activeElement;
- }
-
- // Only store selection if the type is a normal window
- if (!f.type)
- t.bookmark = ed.selection.getBookmark(1);
-
- id = DOM.uniqueId("mce_inlinepopups_"); // Use a prefix so this can't conflict with other ids
- vp = DOM.getViewPort();
- f.width = parseInt(f.width || 320);
- f.height = parseInt(f.height || 240) + (tinymce.isIE ? 8 : 0);
- f.min_width = parseInt(f.min_width || 150);
- f.min_height = parseInt(f.min_height || 100);
- f.max_width = parseInt(f.max_width || 2000);
- f.max_height = parseInt(f.max_height || 2000);
- f.left = f.left || Math.round(Math.max(vp.x, vp.x + (vp.w / 2.0) - (f.width / 2.0)));
- f.top = f.top || Math.round(Math.max(vp.y, vp.y + (vp.h / 2.0) - (f.height / 2.0)));
- f.movable = f.resizable = true;
- p.mce_width = f.width;
- p.mce_height = f.height;
- p.mce_inline = true;
- p.mce_window_id = id;
- p.mce_auto_focus = f.auto_focus;
-
- // Transpose
-// po = DOM.getPos(ed.getContainer());
-// f.left -= po.x;
-// f.top -= po.y;
-
- t.features = f;
- t.params = p;
- t.onOpen.dispatch(t, f, p);
-
- if (f.type) {
- opt += ' mceModal';
-
- if (f.type)
- opt += ' mce' + f.type.substring(0, 1).toUpperCase() + f.type.substring(1);
-
- f.resizable = false;
- }
-
- if (f.statusbar)
- opt += ' mceStatusbar';
-
- if (f.resizable)
- opt += ' mceResizable';
-
- if (f.minimizable)
- opt += ' mceMinimizable';
-
- if (f.maximizable)
- opt += ' mceMaximizable';
-
- if (f.movable)
- opt += ' mceMovable';
-
- // Create DOM objects
- t._addAll(DOM.doc.body,
- ['div', {id : id, role : 'dialog', 'aria-labelledby': f.type ? id + '_content' : id + '_title', 'class' : (ed.settings.inlinepopups_skin || 'clearlooks2') + (tinymce.isIE && window.getSelection ? ' ie9' : ''), style : 'width:100px;height:100px'},
- ['div', {id : id + '_wrapper', 'class' : 'mceWrapper' + opt},
- ['div', {id : id + '_top', 'class' : 'mceTop'},
- ['div', {'class' : 'mceLeft'}],
- ['div', {'class' : 'mceCenter'}],
- ['div', {'class' : 'mceRight'}],
- ['span', {id : id + '_title'}, f.title || '']
- ],
-
- ['div', {id : id + '_middle', 'class' : 'mceMiddle'},
- ['div', {id : id + '_left', 'class' : 'mceLeft', tabindex : '0'}],
- ['span', {id : id + '_content'}],
- ['div', {id : id + '_right', 'class' : 'mceRight', tabindex : '0'}]
- ],
-
- ['div', {id : id + '_bottom', 'class' : 'mceBottom'},
- ['div', {'class' : 'mceLeft'}],
- ['div', {'class' : 'mceCenter'}],
- ['div', {'class' : 'mceRight'}],
- ['span', {id : id + '_status'}, 'Content']
- ],
-
- ['a', {'class' : 'mceMove', tabindex : '-1', href : 'javascript:;'}],
- ['a', {'class' : 'mceMin', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],
- ['a', {'class' : 'mceMax', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],
- ['a', {'class' : 'mceMed', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],
- ['a', {'class' : 'mceClose', tabindex : '-1', href : 'javascript:;', onmousedown : 'return false;'}],
- ['a', {id : id + '_resize_n', 'class' : 'mceResize mceResizeN', tabindex : '-1', href : 'javascript:;'}],
- ['a', {id : id + '_resize_s', 'class' : 'mceResize mceResizeS', tabindex : '-1', href : 'javascript:;'}],
- ['a', {id : id + '_resize_w', 'class' : 'mceResize mceResizeW', tabindex : '-1', href : 'javascript:;'}],
- ['a', {id : id + '_resize_e', 'class' : 'mceResize mceResizeE', tabindex : '-1', href : 'javascript:;'}],
- ['a', {id : id + '_resize_nw', 'class' : 'mceResize mceResizeNW', tabindex : '-1', href : 'javascript:;'}],
- ['a', {id : id + '_resize_ne', 'class' : 'mceResize mceResizeNE', tabindex : '-1', href : 'javascript:;'}],
- ['a', {id : id + '_resize_sw', 'class' : 'mceResize mceResizeSW', tabindex : '-1', href : 'javascript:;'}],
- ['a', {id : id + '_resize_se', 'class' : 'mceResize mceResizeSE', tabindex : '-1', href : 'javascript:;'}]
- ]
- ]
- );
-
- DOM.setStyles(id, {top : -10000, left : -10000});
-
- // Fix gecko rendering bug, where the editors iframe messed with window contents
- if (tinymce.isGecko)
- DOM.setStyle(id, 'overflow', 'auto');
-
- // Measure borders
- if (!f.type) {
- dw += DOM.get(id + '_left').clientWidth;
- dw += DOM.get(id + '_right').clientWidth;
- dh += DOM.get(id + '_top').clientHeight;
- dh += DOM.get(id + '_bottom').clientHeight;
- }
-
- // Resize window
- DOM.setStyles(id, {top : f.top, left : f.left, width : f.width + dw, height : f.height + dh});
-
- u = f.url || f.file;
- if (u) {
- if (tinymce.relaxedDomain)
- u += (u.indexOf('?') == -1 ? '?' : '&') + 'mce_rdomain=' + tinymce.relaxedDomain;
-
- u = tinymce._addVer(u);
- }
-
- if (!f.type) {
- DOM.add(id + '_content', 'iframe', {id : id + '_ifr', src : 'javascript:""', frameBorder : 0, style : 'border:0;width:10px;height:10px'});
- DOM.setStyles(id + '_ifr', {width : f.width, height : f.height});
- DOM.setAttrib(id + '_ifr', 'src', u);
- } else {
- DOM.add(id + '_wrapper', 'a', {id : id + '_ok', 'class' : 'mceButton mceOk', href : 'javascript:;', onmousedown : 'return false;'}, 'Ok');
-
- if (f.type == 'confirm')
- DOM.add(id + '_wrapper', 'a', {'class' : 'mceButton mceCancel', href : 'javascript:;', onmousedown : 'return false;'}, 'Cancel');
-
- DOM.add(id + '_middle', 'div', {'class' : 'mceIcon'});
- DOM.setHTML(id + '_content', f.content.replace('\n', '<br />'));
-
- Event.add(id, 'keyup', function(evt) {
- var VK_ESCAPE = 27;
- if (evt.keyCode === VK_ESCAPE) {
- f.button_func(false);
- return Event.cancel(evt);
- }
- });
-
- Event.add(id, 'keydown', function(evt) {
- var cancelButton, VK_TAB = 9;
- if (evt.keyCode === VK_TAB) {
- cancelButton = DOM.select('a.mceCancel', id + '_wrapper')[0];
- if (cancelButton && cancelButton !== evt.target) {
- cancelButton.focus();
- } else {
- DOM.get(id + '_ok').focus();
- }
- return Event.cancel(evt);
- }
- });
- }
-
- // Register events
- mdf = Event.add(id, 'mousedown', function(e) {
- var n = e.target, w, vp;
-
- w = t.windows[id];
- t.focus(id);
-
- if (n.nodeName == 'A' || n.nodeName == 'a') {
- if (n.className == 'mceClose') {
- t.close(null, id);
- return Event.cancel(e);
- } else if (n.className == 'mceMax') {
- w.oldPos = w.element.getXY();
- w.oldSize = w.element.getSize();
-
- vp = DOM.getViewPort();
-
- // Reduce viewport size to avoid scrollbars
- vp.w -= 2;
- vp.h -= 2;
-
- w.element.moveTo(vp.x, vp.y);
- w.element.resizeTo(vp.w, vp.h);
- DOM.setStyles(id + '_ifr', {width : vp.w - w.deltaWidth, height : vp.h - w.deltaHeight});
- DOM.addClass(id + '_wrapper', 'mceMaximized');
- } else if (n.className == 'mceMed') {
- // Reset to old size
- w.element.moveTo(w.oldPos.x, w.oldPos.y);
- w.element.resizeTo(w.oldSize.w, w.oldSize.h);
- w.iframeElement.resizeTo(w.oldSize.w - w.deltaWidth, w.oldSize.h - w.deltaHeight);
-
- DOM.removeClass(id + '_wrapper', 'mceMaximized');
- } else if (n.className == 'mceMove')
- return t._startDrag(id, e, n.className);
- else if (DOM.hasClass(n, 'mceResize'))
- return t._startDrag(id, e, n.className.substring(13));
- }
- });
-
- clf = Event.add(id, 'click', function(e) {
- var n = e.target;
-
- t.focus(id);
-
- if (n.nodeName == 'A' || n.nodeName == 'a') {
- switch (n.className) {
- case 'mceClose':
- t.close(null, id);
- return Event.cancel(e);
-
- case 'mceButton mceOk':
- case 'mceButton mceCancel':
- f.button_func(n.className == 'mceButton mceOk');
- return Event.cancel(e);
- }
- }
- });
-
- // Make sure the tab order loops within the dialog.
- Event.add([id + '_left', id + '_right'], 'focus', function(evt) {
- var iframe = DOM.get(id + '_ifr');
- if (iframe) {
- var body = iframe.contentWindow.document.body;
- var focusable = DOM.select(':input:enabled,*[tabindex=0]', body);
- if (evt.target.id === (id + '_left')) {
- focusable[focusable.length - 1].focus();
- } else {
- focusable[0].focus();
- }
- } else {
- DOM.get(id + '_ok').focus();
- }
- });
-
- // Add window
- w = t.windows[id] = {
- id : id,
- mousedown_func : mdf,
- click_func : clf,
- element : new Element(id, {blocker : 1, container : ed.getContainer()}),
- iframeElement : new Element(id + '_ifr'),
- features : f,
- deltaWidth : dw,
- deltaHeight : dh
- };
-
- w.iframeElement.on('focus', function() {
- t.focus(id);
- });
-
- // Setup blocker
- if (t.count == 0 && t.editor.getParam('dialog_type', 'modal') == 'modal') {
- DOM.add(DOM.doc.body, 'div', {
- id : 'mceModalBlocker',
- 'class' : (t.editor.settings.inlinepopups_skin || 'clearlooks2') + '_modalBlocker',
- style : {zIndex : t.zIndex - 1}
- });
-
- DOM.show('mceModalBlocker'); // Reduces flicker in IE
- DOM.setAttrib(DOM.doc.body, 'aria-hidden', 'true');
- } else
- DOM.setStyle('mceModalBlocker', 'z-index', t.zIndex - 1);
-
- if (tinymce.isIE6 || /Firefox\/2\./.test(navigator.userAgent) || (tinymce.isIE && !DOM.boxModel))
- DOM.setStyles('mceModalBlocker', {position : 'absolute', left : vp.x, top : vp.y, width : vp.w - 2, height : vp.h - 2});
-
- DOM.setAttrib(id, 'aria-hidden', 'false');
- t.focus(id);
- t._fixIELayout(id, 1);
-
- // Focus ok button
- if (DOM.get(id + '_ok'))
- DOM.get(id + '_ok').focus();
- t.count++;
-
- return w;
- },
-
- focus : function(id) {
- var t = this, w;
-
- if (w = t.windows[id]) {
- w.zIndex = this.zIndex++;
- w.element.setStyle('zIndex', w.zIndex);
- w.element.update();
-
- id = id + '_wrapper';
- DOM.removeClass(t.lastId, 'mceFocus');
- DOM.addClass(id, 'mceFocus');
- t.lastId = id;
-
- if (w.focussedElement) {
- w.focussedElement.focus();
- } else if (DOM.get(id + '_ok')) {
- DOM.get(w.id + '_ok').focus();
- } else if (DOM.get(w.id + '_ifr')) {
- DOM.get(w.id + '_ifr').focus();
- }
- }
- },
-
- _addAll : function(te, ne) {
- var i, n, t = this, dom = tinymce.DOM;
-
- if (is(ne, 'string'))
- te.appendChild(dom.doc.createTextNode(ne));
- else if (ne.length) {
- te = te.appendChild(dom.create(ne[0], ne[1]));
-
- for (i=2; i<ne.length; i++)
- t._addAll(te, ne[i]);
- }
- },
-
- _startDrag : function(id, se, ac) {
- var t = this, mu, mm, d = DOM.doc, eb, w = t.windows[id], we = w.element, sp = we.getXY(), p, sz, ph, cp, vp, sx, sy, sex, sey, dx, dy, dw, dh;
-
- // Get positons and sizes
-// cp = DOM.getPos(t.editor.getContainer());
- cp = {x : 0, y : 0};
- vp = DOM.getViewPort();
-
- // Reduce viewport size to avoid scrollbars while dragging
- vp.w -= 2;
- vp.h -= 2;
-
- sex = se.screenX;
- sey = se.screenY;
- dx = dy = dw = dh = 0;
-
- // Handle mouse up
- mu = Event.add(d, 'mouseup', function(e) {
- Event.remove(d, 'mouseup', mu);
- Event.remove(d, 'mousemove', mm);
-
- if (eb)
- eb.remove();
-
- we.moveBy(dx, dy);
- we.resizeBy(dw, dh);
- sz = we.getSize();
- DOM.setStyles(id + '_ifr', {width : sz.w - w.deltaWidth, height : sz.h - w.deltaHeight});
- t._fixIELayout(id, 1);
-
- return Event.cancel(e);
- });
-
- if (ac != 'Move')
- startMove();
-
- function startMove() {
- if (eb)
- return;
-
- t._fixIELayout(id, 0);
-
- // Setup event blocker
- DOM.add(d.body, 'div', {
- id : 'mceEventBlocker',
- 'class' : 'mceEventBlocker ' + (t.editor.settings.inlinepopups_skin || 'clearlooks2'),
- style : {zIndex : t.zIndex + 1}
- });
-
- if (tinymce.isIE6 || (tinymce.isIE && !DOM.boxModel))
- DOM.setStyles('mceEventBlocker', {position : 'absolute', left : vp.x, top : vp.y, width : vp.w - 2, height : vp.h - 2});
-
- eb = new Element('mceEventBlocker');
- eb.update();
-
- // Setup placeholder
- p = we.getXY();
- sz = we.getSize();
- sx = cp.x + p.x - vp.x;
- sy = cp.y + p.y - vp.y;
- DOM.add(eb.get(), 'div', {id : 'mcePlaceHolder', 'class' : 'mcePlaceHolder', style : {left : sx, top : sy, width : sz.w, height : sz.h}});
- ph = new Element('mcePlaceHolder');
- };
-
- // Handle mouse move/drag
- mm = Event.add(d, 'mousemove', function(e) {
- var x, y, v;
-
- startMove();
-
- x = e.screenX - sex;
- y = e.screenY - sey;
-
- switch (ac) {
- case 'ResizeW':
- dx = x;
- dw = 0 - x;
- break;
-
- case 'ResizeE':
- dw = x;
- break;
-
- case 'ResizeN':
- case 'ResizeNW':
- case 'ResizeNE':
- if (ac == "ResizeNW") {
- dx = x;
- dw = 0 - x;
- } else if (ac == "ResizeNE")
- dw = x;
-
- dy = y;
- dh = 0 - y;
- break;
-
- case 'ResizeS':
- case 'ResizeSW':
- case 'ResizeSE':
- if (ac == "ResizeSW") {
- dx = x;
- dw = 0 - x;
- } else if (ac == "ResizeSE")
- dw = x;
-
- dh = y;
- break;
-
- case 'mceMove':
- dx = x;
- dy = y;
- break;
- }
-
- // Boundary check
- if (dw < (v = w.features.min_width - sz.w)) {
- if (dx !== 0)
- dx += dw - v;
-
- dw = v;
- }
-
- if (dh < (v = w.features.min_height - sz.h)) {
- if (dy !== 0)
- dy += dh - v;
-
- dh = v;
- }
-
- dw = Math.min(dw, w.features.max_width - sz.w);
- dh = Math.min(dh, w.features.max_height - sz.h);
- dx = Math.max(dx, vp.x - (sx + vp.x));
- dy = Math.max(dy, vp.y - (sy + vp.y));
- dx = Math.min(dx, (vp.w + vp.x) - (sx + sz.w + vp.x));
- dy = Math.min(dy, (vp.h + vp.y) - (sy + sz.h + vp.y));
-
- // Move if needed
- if (dx + dy !== 0) {
- if (sx + dx < 0)
- dx = 0;
-
- if (sy + dy < 0)
- dy = 0;
-
- ph.moveTo(sx + dx, sy + dy);
- }
-
- // Resize if needed
- if (dw + dh !== 0)
- ph.resizeTo(sz.w + dw, sz.h + dh);
-
- return Event.cancel(e);
- });
-
- return Event.cancel(se);
- },
-
- resizeBy : function(dw, dh, id) {
- var w = this.windows[id];
-
- if (w) {
- w.element.resizeBy(dw, dh);
- w.iframeElement.resizeBy(dw, dh);
- }
- },
-
- close : function(win, id) {
- var t = this, w, d = DOM.doc, fw, id;
-
- id = t._findId(id || win);
-
- // Probably not inline
- if (!t.windows[id]) {
- t.parent(win);
- return;
- }
-
- t.count--;
-
- if (t.count == 0) {
- DOM.remove('mceModalBlocker');
- DOM.setAttrib(DOM.doc.body, 'aria-hidden', 'false');
- t.editor.focus();
- }
-
- if (w = t.windows[id]) {
- t.onClose.dispatch(t);
- Event.remove(d, 'mousedown', w.mousedownFunc);
- Event.remove(d, 'click', w.clickFunc);
- Event.clear(id);
- Event.clear(id + '_ifr');
-
- DOM.setAttrib(id + '_ifr', 'src', 'javascript:""'); // Prevent leak
- w.element.remove();
- delete t.windows[id];
-
- fw = t._frontWindow();
-
- if (fw)
- t.focus(fw.id);
- }
- },
-
- // Find front most window
- _frontWindow : function() {
- var fw, ix = 0;
- // Find front most window and focus that
- each (this.windows, function(w) {
- if (w.zIndex > ix) {
- fw = w;
- ix = w.zIndex;
- }
- });
- return fw;
- },
-
- setTitle : function(w, ti) {
- var e;
-
- w = this._findId(w);
-
- if (e = DOM.get(w + '_title'))
- e.innerHTML = DOM.encode(ti);
- },
-
- alert : function(txt, cb, s) {
- var t = this, w;
-
- w = t.open({
- title : t,
- type : 'alert',
- button_func : function(s) {
- if (cb)
- cb.call(s || t, s);
-
- t.close(null, w.id);
- },
- content : DOM.encode(t.editor.getLang(txt, txt)),
- inline : 1,
- width : 400,
- height : 130
- });
- },
-
- confirm : function(txt, cb, s) {
- var t = this, w;
-
- w = t.open({
- title : t,
- type : 'confirm',
- button_func : function(s) {
- if (cb)
- cb.call(s || t, s);
-
- t.close(null, w.id);
- },
- content : DOM.encode(t.editor.getLang(txt, txt)),
- inline : 1,
- width : 400,
- height : 130
- });
- },
-
- // Internal functions
-
- _findId : function(w) {
- var t = this;
-
- if (typeof(w) == 'string')
- return w;
-
- each(t.windows, function(wo) {
- var ifr = DOM.get(wo.id + '_ifr');
-
- if (ifr && w == ifr.contentWindow) {
- w = wo.id;
- return false;
- }
- });
-
- return w;
- },
-
- _fixIELayout : function(id, s) {
- var w, img;
-
- if (!tinymce.isIE6)
- return;
-
- // Fixes the bug where hover flickers and does odd things in IE6
- each(['n','s','w','e','nw','ne','sw','se'], function(v) {
- var e = DOM.get(id + '_resize_' + v);
-
- DOM.setStyles(e, {
- width : s ? e.clientWidth : '',
- height : s ? e.clientHeight : '',
- cursor : DOM.getStyle(e, 'cursor', 1)
- });
-
- DOM.setStyle(id + "_bottom", 'bottom', '-1px');
-
- e = 0;
- });
-
- // Fixes graphics glitch
- if (w = this.windows[id]) {
- // Fixes rendering bug after resize
- w.element.hide();
- w.element.show();
-
- // Forced a repaint of the window
- //DOM.get(id).style.filter = '';
-
- // IE has a bug where images used in CSS won't get loaded
- // sometimes when the cache in the browser is disabled
- // This fix tries to solve it by loading the images using the image object
- each(DOM.select('div,a', id), function(e, i) {
- if (e.currentStyle.backgroundImage != 'none') {
- img = new Image();
- img.src = e.currentStyle.backgroundImage.replace(/url\(\"(.+)\"\)/, '$1');
- }
- });
-
- DOM.get(id).style.filter = '';
- }
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('inlinepopups', tinymce.plugins.InlinePopups);
-})();
-
diff --git a/program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif b/program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif
deleted file mode 100644
index 219139857..000000000
--- a/program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif
+++ /dev/null
Binary files differ
diff --git a/program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif b/program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif
deleted file mode 100644
index f957e49a3..000000000
--- a/program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif
+++ /dev/null
Binary files differ
diff --git a/program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif b/program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif
deleted file mode 100644
index 6baf64ad3..000000000
--- a/program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif
+++ /dev/null
Binary files differ
diff --git a/program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif b/program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif
deleted file mode 100644
index 20acbbf7a..000000000
--- a/program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif
+++ /dev/null
Binary files differ
diff --git a/program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif b/program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif
deleted file mode 100644
index d5de1cc23..000000000
--- a/program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif
+++ /dev/null
Binary files differ
diff --git a/program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif b/program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif
deleted file mode 100644
index c2a2ad454..000000000
--- a/program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif
+++ /dev/null
Binary files differ
diff --git a/program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif b/program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif
deleted file mode 100644
index 0b4cc3682..000000000
--- a/program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif
+++ /dev/null
Binary files differ
diff --git a/program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css b/program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css
deleted file mode 100644
index a50d4fc57..000000000
--- a/program/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css
+++ /dev/null
@@ -1,90 +0,0 @@
-/* Clearlooks 2 */
-
-/* Reset */
-.clearlooks2, .clearlooks2 div, .clearlooks2 span, .clearlooks2 a {vertical-align:baseline; text-align:left; position:absolute; border:0; padding:0; margin:0; background:transparent; font-family:Arial,Verdana; font-size:11px; color:#000; text-decoration:none; font-weight:normal; width:auto; height:auto; overflow:hidden; display:block}
-
-/* General */
-.clearlooks2 {position:absolute; direction:ltr}
-.clearlooks2 .mceWrapper {position:static}
-.mceEventBlocker {position:fixed; left:0; top:0; background:url(img/horizontal.gif) no-repeat 0 -75px; width:100%; height:100%}
-.clearlooks2 .mcePlaceHolder {border:1px solid #000; background:#888; top:0; left:0; opacity:0.5; -ms-filter:'alpha(opacity=50)'; filter:alpha(opacity=50)}
-.clearlooks2_modalBlocker {position:fixed; left:0; top:0; width:100%; height:100%; background:#FFF; opacity:0.6; -ms-filter:'alpha(opacity=60)'; filter:alpha(opacity=60); display:none}
-
-/* Top */
-.clearlooks2 .mceTop, .clearlooks2 .mceTop div {top:0; width:100%; height:23px}
-.clearlooks2 .mceTop .mceLeft {width:6px; background:url(img/corners.gif)}
-.clearlooks2 .mceTop .mceCenter {right:6px; width:100%; height:23px; background:url(img/horizontal.gif) 12px 0; clip:rect(auto auto auto 12px)}
-.clearlooks2 .mceTop .mceRight {right:0; width:6px; height:23px; background:url(img/corners.gif) -12px 0}
-.clearlooks2 .mceTop span {width:100%; text-align:center; vertical-align:middle; line-height:23px; font-weight:bold}
-.clearlooks2 .mceFocus .mceTop .mceLeft {background:url(img/corners.gif) -6px 0}
-.clearlooks2 .mceFocus .mceTop .mceCenter {background:url(img/horizontal.gif) 0 -23px}
-.clearlooks2 .mceFocus .mceTop .mceRight {background:url(img/corners.gif) -18px 0}
-.clearlooks2 .mceFocus .mceTop span {color:#FFF}
-
-/* Middle */
-.clearlooks2 .mceMiddle, .clearlooks2 .mceMiddle div {top:0}
-.clearlooks2 .mceMiddle {width:100%; height:100%; clip:rect(23px auto auto auto)}
-.clearlooks2 .mceMiddle .mceLeft {left:0; width:5px; height:100%; background:url(img/vertical.gif) -5px 0}
-.clearlooks2 .mceMiddle span {top:23px; left:5px; width:100%; height:100%; background:#FFF}
-.clearlooks2 .mceMiddle .mceRight {right:0; width:5px; height:100%; background:url(img/vertical.gif)}
-
-/* Bottom */
-.clearlooks2 .mceBottom, .clearlooks2 .mceBottom div {height:6px}
-.clearlooks2 .mceBottom {left:0; bottom:0; width:100%}
-.clearlooks2 .mceBottom div {top:0}
-.clearlooks2 .mceBottom .mceLeft {left:0; width:5px; background:url(img/corners.gif) -34px -6px}
-.clearlooks2 .mceBottom .mceCenter {left:5px; width:100%; background:url(img/horizontal.gif) 0 -46px}
-.clearlooks2 .mceBottom .mceRight {right:0; width:5px; background: url(img/corners.gif) -34px 0}
-.clearlooks2 .mceBottom span {display:none}
-.clearlooks2 .mceStatusbar .mceBottom, .clearlooks2 .mceStatusbar .mceBottom div {height:23px}
-.clearlooks2 .mceStatusbar .mceBottom .mceLeft {background:url(img/corners.gif) -29px 0}
-.clearlooks2 .mceStatusbar .mceBottom .mceCenter {background:url(img/horizontal.gif) 0 -52px}
-.clearlooks2 .mceStatusbar .mceBottom .mceRight {background:url(img/corners.gif) -24px 0}
-.clearlooks2 .mceStatusbar .mceBottom span {display:block; left:7px; font-family:Arial, Verdana; font-size:11px; line-height:23px}
-
-/* Actions */
-.clearlooks2 a {width:29px; height:16px; top:3px;}
-.clearlooks2 .mceClose {right:6px; background:url(img/buttons.gif) -87px 0}
-.clearlooks2 .mceMin {display:none; right:68px; background:url(img/buttons.gif) 0 0}
-.clearlooks2 .mceMed {display:none; right:37px; background:url(img/buttons.gif) -29px 0}
-.clearlooks2 .mceMax {display:none; right:37px; background:url(img/buttons.gif) -58px 0}
-.clearlooks2 .mceMove {display:none;width:100%;cursor:move;background:url(img/corners.gif) no-repeat -100px -100px}
-.clearlooks2 .mceMovable .mceMove {display:block}
-.clearlooks2 .mceFocus .mceClose {right:6px; background:url(img/buttons.gif) -87px -16px}
-.clearlooks2 .mceFocus .mceMin {right:68px; background:url(img/buttons.gif) 0 -16px}
-.clearlooks2 .mceFocus .mceMed {right:37px; background:url(img/buttons.gif) -29px -16px}
-.clearlooks2 .mceFocus .mceMax {right:37px; background:url(img/buttons.gif) -58px -16px}
-.clearlooks2 .mceFocus .mceClose:hover {right:6px; background:url(img/buttons.gif) -87px -32px}
-.clearlooks2 .mceFocus .mceClose:hover {right:6px; background:url(img/buttons.gif) -87px -32px}
-.clearlooks2 .mceFocus .mceMin:hover {right:68px; background:url(img/buttons.gif) 0 -32px}
-.clearlooks2 .mceFocus .mceMed:hover {right:37px; background:url(img/buttons.gif) -29px -32px}
-.clearlooks2 .mceFocus .mceMax:hover {right:37px; background:url(img/buttons.gif) -58px -32px}
-
-/* Resize */
-.clearlooks2 .mceResize {top:auto; left:auto; display:none; width:5px; height:5px; background:url(img/horizontal.gif) no-repeat 0 -75px}
-.clearlooks2 .mceResizable .mceResize {display:block}
-.clearlooks2 .mceResizable .mceMin, .clearlooks2 .mceMax {display:none}
-.clearlooks2 .mceMinimizable .mceMin {display:block}
-.clearlooks2 .mceMaximizable .mceMax {display:block}
-.clearlooks2 .mceMaximized .mceMed {display:block}
-.clearlooks2 .mceMaximized .mceMax {display:none}
-.clearlooks2 a.mceResizeN {top:0; left:0; width:100%; cursor:n-resize}
-.clearlooks2 a.mceResizeNW {top:0; left:0; cursor:nw-resize}
-.clearlooks2 a.mceResizeNE {top:0; right:0; cursor:ne-resize}
-.clearlooks2 a.mceResizeW {top:0; left:0; height:100%; cursor:w-resize;}
-.clearlooks2 a.mceResizeE {top:0; right:0; height:100%; cursor:e-resize}
-.clearlooks2 a.mceResizeS {bottom:0; left:0; width:100%; cursor:s-resize}
-.clearlooks2 a.mceResizeSW {bottom:0; left:0; cursor:sw-resize}
-.clearlooks2 a.mceResizeSE {bottom:0; right:0; cursor:se-resize}
-
-/* Alert/Confirm */
-.clearlooks2 .mceButton {font-weight:bold; bottom:10px; width:80px; height:30px; background:url(img/button.gif); line-height:30px; vertical-align:middle; text-align:center; outline:0}
-.clearlooks2 .mceMiddle .mceIcon {left:15px; top:35px; width:32px; height:32px}
-.clearlooks2 .mceAlert .mceMiddle span, .clearlooks2 .mceConfirm .mceMiddle span {background:transparent;left:60px; top:35px; width:320px; height:50px; font-weight:bold; overflow:auto; white-space:normal}
-.clearlooks2 a:hover {font-weight:bold;}
-.clearlooks2 .mceAlert .mceMiddle, .clearlooks2 .mceConfirm .mceMiddle {background:#D6D7D5}
-.clearlooks2 .mceAlert .mceOk {left:50%; top:auto; margin-left: -40px}
-.clearlooks2 .mceAlert .mceIcon {background:url(img/alert.gif)}
-.clearlooks2 .mceConfirm .mceOk {left:50%; top:auto; margin-left: -90px}
-.clearlooks2 .mceConfirm .mceCancel {left:50%; top:auto}
-.clearlooks2 .mceConfirm .mceIcon {background:url(img/confirm.gif)}
diff --git a/program/js/tiny_mce/plugins/inlinepopups/template.htm b/program/js/tiny_mce/plugins/inlinepopups/template.htm
deleted file mode 100644
index f9ec64219..000000000
--- a/program/js/tiny_mce/plugins/inlinepopups/template.htm
+++ /dev/null
@@ -1,387 +0,0 @@
-<!-- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -->
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<title>Template for dialogs</title>
-<link rel="stylesheet" type="text/css" href="skins/clearlooks2/window.css" />
-</head>
-<body>
-
-<div class="mceEditor">
- <div class="clearlooks2" style="width:400px; height:100px; left:10px;">
- <div class="mceWrapper">
- <div class="mceTop">
- <div class="mceLeft"></div>
- <div class="mceCenter"></div>
- <div class="mceRight"></div>
- <span>Blured</span>
- </div>
-
- <div class="mceMiddle">
- <div class="mceLeft"></div>
- <span>Content</span>
- <div class="mceRight"></div>
- </div>
-
- <div class="mceBottom">
- <div class="mceLeft"></div>
- <div class="mceCenter"></div>
- <div class="mceRight"></div>
- <span>Statusbar text.</span>
- </div>
-
- <a class="mceMove" href="#"></a>
- <a class="mceMin" href="#"></a>
- <a class="mceMax" href="#"></a>
- <a class="mceMed" href="#"></a>
- <a class="mceClose" href="#"></a>
- <a class="mceResize mceResizeN" href="#"></a>
- <a class="mceResize mceResizeS" href="#"></a>
- <a class="mceResize mceResizeW" href="#"></a>
- <a class="mceResize mceResizeE" href="#"></a>
- <a class="mceResize mceResizeNW" href="#"></a>
- <a class="mceResize mceResizeNE" href="#"></a>
- <a class="mceResize mceResizeSW" href="#"></a>
- <a class="mceResize mceResizeSE" href="#"></a>
- </div>
- </div>
-
- <div class="clearlooks2" style="width:400px; height:100px; left:420px;">
- <div class="mceWrapper mceMovable mceFocus">
- <div class="mceTop">
- <div class="mceLeft"></div>
- <div class="mceCenter"></div>
- <div class="mceRight"></div>
- <span>Focused</span>
- </div>
-
- <div class="mceMiddle">
- <div class="mceLeft"></div>
- <span>Content</span>
- <div class="mceRight"></div>
- </div>
-
- <div class="mceBottom">
- <div class="mceLeft"></div>
- <div class="mceCenter"></div>
- <div class="mceRight"></div>
- <span>Statusbar text.</span>
- </div>
-
- <a class="mceMove" href="#"></a>
- <a class="mceMin" href="#"></a>
- <a class="mceMax" href="#"></a>
- <a class="mceMed" href="#"></a>
- <a class="mceClose" href="#"></a>
- <a class="mceResize mceResizeN" href="#"></a>
- <a class="mceResize mceResizeS" href="#"></a>
- <a class="mceResize mceResizeW" href="#"></a>
- <a class="mceResize mceResizeE" href="#"></a>
- <a class="mceResize mceResizeNW" href="#"></a>
- <a class="mceResize mceResizeNE" href="#"></a>
- <a class="mceResize mceResizeSW" href="#"></a>
- <a class="mceResize mceResizeSE" href="#"></a>
- </div>
- </div>
-
- <div class="clearlooks2" style="width:400px; height:100px; left:10px; top:120px;">
- <div class="mceWrapper mceMovable mceFocus mceStatusbar">
- <div class="mceTop">
- <div class="mceLeft"></div>
- <div class="mceCenter"></div>
- <div class="mceRight"></div>
- <span>Statusbar</span>
- </div>
-
- <div class="mceMiddle">
- <div class="mceLeft"></div>
- <span>Content</span>
- <div class="mceRight"></div>
- </div>
-
- <div class="mceBottom">
- <div class="mceLeft"></div>
- <div class="mceCenter"></div>
- <div class="mceRight"></div>
- <span>Statusbar text.</span>
- </div>
-
- <a class="mceMove" href="#"></a>
- <a class="mceMin" href="#"></a>
- <a class="mceMax" href="#"></a>
- <a class="mceMed" href="#"></a>
- <a class="mceClose" href="#"></a>
- <a class="mceResize mceResizeN" href="#"></a>
- <a class="mceResize mceResizeS" href="#"></a>
- <a class="mceResize mceResizeW" href="#"></a>
- <a class="mceResize mceResizeE" href="#"></a>
- <a class="mceResize mceResizeNW" href="#"></a>
- <a class="mceResize mceResizeNE" href="#"></a>
- <a class="mceResize mceResizeSW" href="#"></a>
- <a class="mceResize mceResizeSE" href="#"></a>
- </div>
- </div>
-
- <div class="clearlooks2" style="width:400px; height:100px; left:420px; top:120px;">
- <div class="mceWrapper mceMovable mceFocus mceStatusbar mceResizable">
- <div class="mceTop">
- <div class="mceLeft"></div>
- <div class="mceCenter"></div>
- <div class="mceRight"></div>
- <span>Statusbar, Resizable</span>
- </div>
-
- <div class="mceMiddle">
- <div class="mceLeft"></div>
- <span>Content</span>
- <div class="mceRight"></div>
- </div>
-
- <div class="mceBottom">
- <div class="mceLeft"></div>
- <div class="mceCenter"></div>
- <div class="mceRight"></div>
- <span>Statusbar text.</span>
- </div>
-
- <a class="mceMove" href="#"></a>
- <a class="mceMin" href="#"></a>
- <a class="mceMax" href="#"></a>
- <a class="mceMed" href="#"></a>
- <a class="mceClose" href="#"></a>
- <a class="mceResize mceResizeN" href="#"></a>
- <a class="mceResize mceResizeS" href="#"></a>
- <a class="mceResize mceResizeW" href="#"></a>
- <a class="mceResize mceResizeE" href="#"></a>
- <a class="mceResize mceResizeNW" href="#"></a>
- <a class="mceResize mceResizeNE" href="#"></a>
- <a class="mceResize mceResizeSW" href="#"></a>
- <a class="mceResize mceResizeSE" href="#"></a>
- </div>
- </div>
-
- <div class="clearlooks2" style="width:400px; height:100px; left:10px; top:230px;">
- <div class="mceWrapper mceMovable mceFocus mceResizable mceMaximizable">
- <div class="mceTop">
- <div class="mceLeft"></div>
- <div class="mceCenter"></div>
- <div class="mceRight"></div>
- <span>Resizable, Maximizable</span>
- </div>
-
- <div class="mceMiddle">
- <div class="mceLeft"></div>
- <span>Content</span>
- <div class="mceRight"></div>
- </div>
-
- <div class="mceBottom">
- <div class="mceLeft"></div>
- <div class="mceCenter"></div>
- <div class="mceRight"></div>
- <span>Statusbar text.</span>
- </div>
-
- <a class="mceMove" href="#"></a>
- <a class="mceMin" href="#"></a>
- <a class="mceMax" href="#"></a>
- <a class="mceMed" href="#"></a>
- <a class="mceClose" href="#"></a>
- <a class="mceResize mceResizeN" href="#"></a>
- <a class="mceResize mceResizeS" href="#"></a>
- <a class="mceResize mceResizeW" href="#"></a>
- <a class="mceResize mceResizeE" href="#"></a>
- <a class="mceResize mceResizeNW" href="#"></a>
- <a class="mceResize mceResizeNE" href="#"></a>
- <a class="mceResize mceResizeSW" href="#"></a>
- <a class="mceResize mceResizeSE" href="#"></a>
- </div>
- </div>
-
- <div class="clearlooks2" style="width:400px; height:100px; left:420px; top:230px;">
- <div class="mceWrapper mceMovable mceStatusbar mceResizable mceMaximizable">
- <div class="mceTop">
- <div class="mceLeft"></div>
- <div class="mceCenter"></div>
- <div class="mceRight"></div>
- <span>Blurred, Maximizable, Statusbar, Resizable</span>
- </div>
-
- <div class="mceMiddle">
- <div class="mceLeft"></div>
- <span>Content</span>
- <div class="mceRight"></div>
- </div>
-
- <div class="mceBottom">
- <div class="mceLeft"></div>
- <div class="mceCenter"></div>
- <div class="mceRight"></div>
- <span>Statusbar text.</span>
- </div>
-
- <a class="mceMove" href="#"></a>
- <a class="mceMin" href="#"></a>
- <a class="mceMax" href="#"></a>
- <a class="mceMed" href="#"></a>
- <a class="mceClose" href="#"></a>
- <a class="mceResize mceResizeN" href="#"></a>
- <a class="mceResize mceResizeS" href="#"></a>
- <a class="mceResize mceResizeW" href="#"></a>
- <a class="mceResize mceResizeE" href="#"></a>
- <a class="mceResize mceResizeNW" href="#"></a>
- <a class="mceResize mceResizeNE" href="#"></a>
- <a class="mceResize mceResizeSW" href="#"></a>
- <a class="mceResize mceResizeSE" href="#"></a>
- </div>
- </div>
-
- <div class="clearlooks2" style="width:400px; height:100px; left:10px; top:340px;">
- <div class="mceWrapper mceMovable mceFocus mceResizable mceMaximized mceMinimizable mceMaximizable">
- <div class="mceTop">
- <div class="mceLeft"></div>
- <div class="mceCenter"></div>
- <div class="mceRight"></div>
- <span>Maximized, Maximizable, Minimizable</span>
- </div>
-
- <div class="mceMiddle">
- <div class="mceLeft"></div>
- <span>Content</span>
- <div class="mceRight"></div>
- </div>
-
- <div class="mceBottom">
- <div class="mceLeft"></div>
- <div class="mceCenter"></div>
- <div class="mceRight"></div>
- <span>Statusbar text.</span>
- </div>
-
- <a class="mceMove" href="#"></a>
- <a class="mceMin" href="#"></a>
- <a class="mceMax" href="#"></a>
- <a class="mceMed" href="#"></a>
- <a class="mceClose" href="#"></a>
- <a class="mceResize mceResizeN" href="#"></a>
- <a class="mceResize mceResizeS" href="#"></a>
- <a class="mceResize mceResizeW" href="#"></a>
- <a class="mceResize mceResizeE" href="#"></a>
- <a class="mceResize mceResizeNW" href="#"></a>
- <a class="mceResize mceResizeNE" href="#"></a>
- <a class="mceResize mceResizeSW" href="#"></a>
- <a class="mceResize mceResizeSE" href="#"></a>
- </div>
- </div>
-
- <div class="clearlooks2" style="width:400px; height:100px; left:420px; top:340px;">
- <div class="mceWrapper mceMovable mceStatusbar mceResizable mceMaximized mceMinimizable mceMaximizable">
- <div class="mceTop">
- <div class="mceLeft"></div>
- <div class="mceCenter"></div>
- <div class="mceRight"></div>
- <span>Blured</span>
- </div>
-
- <div class="mceMiddle">
- <div class="mceLeft"></div>
- <span>Content</span>
- <div class="mceRight"></div>
- </div>
-
- <div class="mceBottom">
- <div class="mceLeft"></div>
- <div class="mceCenter"></div>
- <div class="mceRight"></div>
- <span>Statusbar text.</span>
- </div>
-
- <a class="mceMove" href="#"></a>
- <a class="mceMin" href="#"></a>
- <a class="mceMax" href="#"></a>
- <a class="mceMed" href="#"></a>
- <a class="mceClose" href="#"></a>
- <a class="mceResize mceResizeN" href="#"></a>
- <a class="mceResize mceResizeS" href="#"></a>
- <a class="mceResize mceResizeW" href="#"></a>
- <a class="mceResize mceResizeE" href="#"></a>
- <a class="mceResize mceResizeNW" href="#"></a>
- <a class="mceResize mceResizeNE" href="#"></a>
- <a class="mceResize mceResizeSW" href="#"></a>
- <a class="mceResize mceResizeSE" href="#"></a>
- </div>
- </div>
-
- <div class="clearlooks2" style="width:400px; height:130px; left:10px; top:450px;">
- <div class="mceWrapper mceMovable mceFocus mceModal mceAlert">
- <div class="mceTop">
- <div class="mceLeft"></div>
- <div class="mceCenter"></div>
- <div class="mceRight"></div>
- <span>Alert</span>
- </div>
-
- <div class="mceMiddle">
- <div class="mceLeft"></div>
- <span>
- This is a very long error message. This is a very long error message.
- This is a very long error message. This is a very long error message.
- This is a very long error message. This is a very long error message.
- This is a very long error message. This is a very long error message.
- This is a very long error message. This is a very long error message.
- This is a very long error message. This is a very long error message.
- </span>
- <div class="mceRight"></div>
- <div class="mceIcon"></div>
- </div>
-
- <div class="mceBottom">
- <div class="mceLeft"></div>
- <div class="mceCenter"></div>
- <div class="mceRight"></div>
- </div>
-
- <a class="mceMove" href="#"></a>
- <a class="mceButton mceOk" href="#">Ok</a>
- <a class="mceClose" href="#"></a>
- </div>
- </div>
-
- <div class="clearlooks2" style="width:400px; height:130px; left:420px; top:450px;">
- <div class="mceWrapper mceMovable mceFocus mceModal mceConfirm">
- <div class="mceTop">
- <div class="mceLeft"></div>
- <div class="mceCenter"></div>
- <div class="mceRight"></div>
- <span>Confirm</span>
- </div>
-
- <div class="mceMiddle">
- <div class="mceLeft"></div>
- <span>
- This is a very long error message. This is a very long error message.
- This is a very long error message. This is a very long error message.
- This is a very long error message. This is a very long error message.
- This is a very long error message. This is a very long error message.
- This is a very long error message. This is a very long error message.
- This is a very long error message. This is a very long error message.
- </span>
- <div class="mceRight"></div>
- <div class="mceIcon"></div>
- </div>
-
- <div class="mceBottom">
- <div class="mceLeft"></div>
- <div class="mceCenter"></div>
- <div class="mceRight"></div>
- </div>
-
- <a class="mceMove" href="#"></a>
- <a class="mceButton mceOk" href="#">Ok</a>
- <a class="mceButton mceCancel" href="#">Cancel</a>
- <a class="mceClose" href="#"></a>
- </div>
- </div>
-</div>
-
-</body>
-</html>
diff --git a/program/js/tiny_mce/plugins/insertdatetime/editor_plugin.js b/program/js/tiny_mce/plugins/insertdatetime/editor_plugin.js
deleted file mode 100644
index 938ce6b17..000000000
--- a/program/js/tiny_mce/plugins/insertdatetime/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.InsertDateTime",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceInsertDate",function(){var d=c._getDateTime(new Date(),a.getParam("plugin_insertdate_dateFormat",a.getLang("insertdatetime.date_fmt")));a.execCommand("mceInsertContent",false,d)});a.addCommand("mceInsertTime",function(){var d=c._getDateTime(new Date(),a.getParam("plugin_insertdate_timeFormat",a.getLang("insertdatetime.time_fmt")));a.execCommand("mceInsertContent",false,d)});a.addButton("insertdate",{title:"insertdatetime.insertdate_desc",cmd:"mceInsertDate"});a.addButton("inserttime",{title:"insertdatetime.inserttime_desc",cmd:"mceInsertTime"})},getInfo:function(){return{longname:"Insert date/time",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/insertdatetime",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_getDateTime:function(e,a){var c=this.editor;function b(g,d){g=""+g;if(g.length<d){for(var f=0;f<(d-g.length);f++){g="0"+g}}return g}a=a.replace("%D","%m/%d/%y");a=a.replace("%r","%I:%M:%S %p");a=a.replace("%Y",""+e.getFullYear());a=a.replace("%y",""+e.getYear());a=a.replace("%m",b(e.getMonth()+1,2));a=a.replace("%d",b(e.getDate(),2));a=a.replace("%H",""+b(e.getHours(),2));a=a.replace("%M",""+b(e.getMinutes(),2));a=a.replace("%S",""+b(e.getSeconds(),2));a=a.replace("%I",""+((e.getHours()+11)%12+1));a=a.replace("%p",""+(e.getHours()<12?"AM":"PM"));a=a.replace("%B",""+c.getLang("insertdatetime.months_long").split(",")[e.getMonth()]);a=a.replace("%b",""+c.getLang("insertdatetime.months_short").split(",")[e.getMonth()]);a=a.replace("%A",""+c.getLang("insertdatetime.day_long").split(",")[e.getDay()]);a=a.replace("%a",""+c.getLang("insertdatetime.day_short").split(",")[e.getDay()]);a=a.replace("%%","%");return a}});tinymce.PluginManager.add("insertdatetime",tinymce.plugins.InsertDateTime)})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/insertdatetime/editor_plugin_src.js b/program/js/tiny_mce/plugins/insertdatetime/editor_plugin_src.js
deleted file mode 100644
index 181c791ec..000000000
--- a/program/js/tiny_mce/plugins/insertdatetime/editor_plugin_src.js
+++ /dev/null
@@ -1,83 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- tinymce.create('tinymce.plugins.InsertDateTime', {
- init : function(ed, url) {
- var t = this;
-
- t.editor = ed;
-
- ed.addCommand('mceInsertDate', function() {
- var str = t._getDateTime(new Date(), ed.getParam("plugin_insertdate_dateFormat", ed.getLang('insertdatetime.date_fmt')));
-
- ed.execCommand('mceInsertContent', false, str);
- });
-
- ed.addCommand('mceInsertTime', function() {
- var str = t._getDateTime(new Date(), ed.getParam("plugin_insertdate_timeFormat", ed.getLang('insertdatetime.time_fmt')));
-
- ed.execCommand('mceInsertContent', false, str);
- });
-
- ed.addButton('insertdate', {title : 'insertdatetime.insertdate_desc', cmd : 'mceInsertDate'});
- ed.addButton('inserttime', {title : 'insertdatetime.inserttime_desc', cmd : 'mceInsertTime'});
- },
-
- getInfo : function() {
- return {
- longname : 'Insert date/time',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/insertdatetime',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- },
-
- // Private methods
-
- _getDateTime : function(d, fmt) {
- var ed = this.editor;
-
- function addZeros(value, len) {
- value = "" + value;
-
- if (value.length < len) {
- for (var i=0; i<(len-value.length); i++)
- value = "0" + value;
- }
-
- return value;
- };
-
- fmt = fmt.replace("%D", "%m/%d/%y");
- fmt = fmt.replace("%r", "%I:%M:%S %p");
- fmt = fmt.replace("%Y", "" + d.getFullYear());
- fmt = fmt.replace("%y", "" + d.getYear());
- fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2));
- fmt = fmt.replace("%d", addZeros(d.getDate(), 2));
- fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2));
- fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2));
- fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2));
- fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1));
- fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM"));
- fmt = fmt.replace("%B", "" + ed.getLang("insertdatetime.months_long").split(',')[d.getMonth()]);
- fmt = fmt.replace("%b", "" + ed.getLang("insertdatetime.months_short").split(',')[d.getMonth()]);
- fmt = fmt.replace("%A", "" + ed.getLang("insertdatetime.day_long").split(',')[d.getDay()]);
- fmt = fmt.replace("%a", "" + ed.getLang("insertdatetime.day_short").split(',')[d.getDay()]);
- fmt = fmt.replace("%%", "%");
-
- return fmt;
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('insertdatetime', tinymce.plugins.InsertDateTime);
-})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/layer/editor_plugin.js b/program/js/tiny_mce/plugins/layer/editor_plugin.js
deleted file mode 100644
index ca3857a74..000000000
--- a/program/js/tiny_mce/plugins/layer/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){function a(b){do{if(b.className&&b.className.indexOf("mceItemLayer")!=-1){return b}}while(b=b.parentNode)}tinymce.create("tinymce.plugins.Layer",{init:function(b,c){var d=this;d.editor=b;b.addCommand("mceInsertLayer",d._insertLayer,d);b.addCommand("mceMoveForward",function(){d._move(1)});b.addCommand("mceMoveBackward",function(){d._move(-1)});b.addCommand("mceMakeAbsolute",function(){d._toggleAbsolute()});b.addButton("moveforward",{title:"layer.forward_desc",cmd:"mceMoveForward"});b.addButton("movebackward",{title:"layer.backward_desc",cmd:"mceMoveBackward"});b.addButton("absolute",{title:"layer.absolute_desc",cmd:"mceMakeAbsolute"});b.addButton("insertlayer",{title:"layer.insertlayer_desc",cmd:"mceInsertLayer"});b.onInit.add(function(){var e=b.dom;if(tinymce.isIE){b.getDoc().execCommand("2D-Position",false,true)}});b.onMouseUp.add(function(f,h){var g=a(h.target);if(g){f.dom.setAttrib(g,"data-mce-style","")}});b.onMouseDown.add(function(f,j){var h=j.target,i=f.getDoc(),g;if(tinymce.isGecko){if(a(h)){if(i.designMode!=="on"){i.designMode="on";h=i.body;g=h.parentNode;g.removeChild(h);g.appendChild(h)}}else{if(i.designMode=="on"){i.designMode="off"}}}});b.onNodeChange.add(d._nodeChange,d);b.onVisualAid.add(d._visualAid,d)},getInfo:function(){return{longname:"Layer",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/layer",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_nodeChange:function(c,b,f){var d,e;d=this._getParentLayer(f);e=c.dom.getParent(f,"DIV,P,IMG");if(!e){b.setDisabled("absolute",1);b.setDisabled("moveforward",1);b.setDisabled("movebackward",1)}else{b.setDisabled("absolute",0);b.setDisabled("moveforward",!d);b.setDisabled("movebackward",!d);b.setActive("absolute",d&&d.style.position.toLowerCase()=="absolute")}},_visualAid:function(b,d,c){var f=b.dom;tinymce.each(f.select("div,p",d),function(g){if(/^(absolute|relative|fixed)$/i.test(g.style.position)){if(c){f.addClass(g,"mceItemVisualAid")}else{f.removeClass(g,"mceItemVisualAid")}f.addClass(g,"mceItemLayer")}})},_move:function(j){var c=this.editor,g,h=[],f=this._getParentLayer(c.selection.getNode()),e=-1,k=-1,b;b=[];tinymce.walk(c.getBody(),function(d){if(d.nodeType==1&&/^(absolute|relative|static)$/i.test(d.style.position)){b.push(d)}},"childNodes");for(g=0;g<b.length;g++){h[g]=b[g].style.zIndex?parseInt(b[g].style.zIndex):0;if(e<0&&b[g]==f){e=g}}if(j<0){for(g=0;g<h.length;g++){if(h[g]<h[e]){k=g;break}}if(k>-1){b[e].style.zIndex=h[k];b[k].style.zIndex=h[e]}else{if(h[e]>0){b[e].style.zIndex=h[e]-1}}}else{for(g=0;g<h.length;g++){if(h[g]>h[e]){k=g;break}}if(k>-1){b[e].style.zIndex=h[k];b[k].style.zIndex=h[e]}else{b[e].style.zIndex=h[e]+1}}c.execCommand("mceRepaint")},_getParentLayer:function(b){return this.editor.dom.getParent(b,function(c){return c.nodeType==1&&/^(absolute|relative|static)$/i.test(c.style.position)})},_insertLayer:function(){var c=this.editor,e=c.dom,d=e.getPos(e.getParent(c.selection.getNode(),"*")),b=c.getBody();c.dom.add(b,"div",{style:{position:"absolute",left:d.x,top:(d.y>20?d.y:20),width:100,height:100},"class":"mceItemVisualAid mceItemLayer"},c.selection.getContent()||c.getLang("layer.content"));if(tinymce.isIE){e.setHTML(b,b.innerHTML)}},_toggleAbsolute:function(){var b=this.editor,c=this._getParentLayer(b.selection.getNode());if(!c){c=b.dom.getParent(b.selection.getNode(),"DIV,P,IMG")}if(c){if(c.style.position.toLowerCase()=="absolute"){b.dom.setStyles(c,{position:"",left:"",top:"",width:"",height:""});b.dom.removeClass(c,"mceItemVisualAid");b.dom.removeClass(c,"mceItemLayer")}else{if(c.style.left==""){c.style.left=20+"px"}if(c.style.top==""){c.style.top=20+"px"}if(c.style.width==""){c.style.width=c.width?(c.width+"px"):"100px"}if(c.style.height==""){c.style.height=c.height?(c.height+"px"):"100px"}c.style.position="absolute";b.dom.setAttrib(c,"data-mce-style","");b.addVisual(b.getBody())}b.execCommand("mceRepaint");b.nodeChanged()}}});tinymce.PluginManager.add("layer",tinymce.plugins.Layer)})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/layer/editor_plugin_src.js b/program/js/tiny_mce/plugins/layer/editor_plugin_src.js
deleted file mode 100644
index daed2806c..000000000
--- a/program/js/tiny_mce/plugins/layer/editor_plugin_src.js
+++ /dev/null
@@ -1,262 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- function findParentLayer(node) {
- do {
- if (node.className && node.className.indexOf('mceItemLayer') != -1) {
- return node;
- }
- } while (node = node.parentNode);
- };
-
- tinymce.create('tinymce.plugins.Layer', {
- init : function(ed, url) {
- var t = this;
-
- t.editor = ed;
-
- // Register commands
- ed.addCommand('mceInsertLayer', t._insertLayer, t);
-
- ed.addCommand('mceMoveForward', function() {
- t._move(1);
- });
-
- ed.addCommand('mceMoveBackward', function() {
- t._move(-1);
- });
-
- ed.addCommand('mceMakeAbsolute', function() {
- t._toggleAbsolute();
- });
-
- // Register buttons
- ed.addButton('moveforward', {title : 'layer.forward_desc', cmd : 'mceMoveForward'});
- ed.addButton('movebackward', {title : 'layer.backward_desc', cmd : 'mceMoveBackward'});
- ed.addButton('absolute', {title : 'layer.absolute_desc', cmd : 'mceMakeAbsolute'});
- ed.addButton('insertlayer', {title : 'layer.insertlayer_desc', cmd : 'mceInsertLayer'});
-
- ed.onInit.add(function() {
- var dom = ed.dom;
-
- if (tinymce.isIE)
- ed.getDoc().execCommand('2D-Position', false, true);
- });
-
- // Remove serialized styles when selecting a layer since it might be changed by a drag operation
- ed.onMouseUp.add(function(ed, e) {
- var layer = findParentLayer(e.target);
-
- if (layer) {
- ed.dom.setAttrib(layer, 'data-mce-style', '');
- }
- });
-
- // Fixes edit focus issues with layers on Gecko
- // This will enable designMode while inside a layer and disable it when outside
- ed.onMouseDown.add(function(ed, e) {
- var node = e.target, doc = ed.getDoc(), parent;
-
- if (tinymce.isGecko) {
- if (findParentLayer(node)) {
- if (doc.designMode !== 'on') {
- doc.designMode = 'on';
-
- // Repaint caret
- node = doc.body;
- parent = node.parentNode;
- parent.removeChild(node);
- parent.appendChild(node);
- }
- } else if (doc.designMode == 'on') {
- doc.designMode = 'off';
- }
- }
- });
-
- ed.onNodeChange.add(t._nodeChange, t);
- ed.onVisualAid.add(t._visualAid, t);
- },
-
- getInfo : function() {
- return {
- longname : 'Layer',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/layer',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- },
-
- // Private methods
-
- _nodeChange : function(ed, cm, n) {
- var le, p;
-
- le = this._getParentLayer(n);
- p = ed.dom.getParent(n, 'DIV,P,IMG');
-
- if (!p) {
- cm.setDisabled('absolute', 1);
- cm.setDisabled('moveforward', 1);
- cm.setDisabled('movebackward', 1);
- } else {
- cm.setDisabled('absolute', 0);
- cm.setDisabled('moveforward', !le);
- cm.setDisabled('movebackward', !le);
- cm.setActive('absolute', le && le.style.position.toLowerCase() == "absolute");
- }
- },
-
- // Private methods
-
- _visualAid : function(ed, e, s) {
- var dom = ed.dom;
-
- tinymce.each(dom.select('div,p', e), function(e) {
- if (/^(absolute|relative|fixed)$/i.test(e.style.position)) {
- if (s)
- dom.addClass(e, 'mceItemVisualAid');
- else
- dom.removeClass(e, 'mceItemVisualAid');
-
- dom.addClass(e, 'mceItemLayer');
- }
- });
- },
-
- _move : function(d) {
- var ed = this.editor, i, z = [], le = this._getParentLayer(ed.selection.getNode()), ci = -1, fi = -1, nl;
-
- nl = [];
- tinymce.walk(ed.getBody(), function(n) {
- if (n.nodeType == 1 && /^(absolute|relative|static)$/i.test(n.style.position))
- nl.push(n);
- }, 'childNodes');
-
- // Find z-indexes
- for (i=0; i<nl.length; i++) {
- z[i] = nl[i].style.zIndex ? parseInt(nl[i].style.zIndex) : 0;
-
- if (ci < 0 && nl[i] == le)
- ci = i;
- }
-
- if (d < 0) {
- // Move back
-
- // Try find a lower one
- for (i=0; i<z.length; i++) {
- if (z[i] < z[ci]) {
- fi = i;
- break;
- }
- }
-
- if (fi > -1) {
- nl[ci].style.zIndex = z[fi];
- nl[fi].style.zIndex = z[ci];
- } else {
- if (z[ci] > 0)
- nl[ci].style.zIndex = z[ci] - 1;
- }
- } else {
- // Move forward
-
- // Try find a higher one
- for (i=0; i<z.length; i++) {
- if (z[i] > z[ci]) {
- fi = i;
- break;
- }
- }
-
- if (fi > -1) {
- nl[ci].style.zIndex = z[fi];
- nl[fi].style.zIndex = z[ci];
- } else
- nl[ci].style.zIndex = z[ci] + 1;
- }
-
- ed.execCommand('mceRepaint');
- },
-
- _getParentLayer : function(n) {
- return this.editor.dom.getParent(n, function(n) {
- return n.nodeType == 1 && /^(absolute|relative|static)$/i.test(n.style.position);
- });
- },
-
- _insertLayer : function() {
- var ed = this.editor, dom = ed.dom, p = dom.getPos(dom.getParent(ed.selection.getNode(), '*')), body = ed.getBody();
-
- ed.dom.add(body, 'div', {
- style : {
- position : 'absolute',
- left : p.x,
- top : (p.y > 20 ? p.y : 20),
- width : 100,
- height : 100
- },
- 'class' : 'mceItemVisualAid mceItemLayer'
- }, ed.selection.getContent() || ed.getLang('layer.content'));
-
- // Workaround for IE where it messes up the JS engine if you insert a layer on IE 6,7
- if (tinymce.isIE)
- dom.setHTML(body, body.innerHTML);
- },
-
- _toggleAbsolute : function() {
- var ed = this.editor, le = this._getParentLayer(ed.selection.getNode());
-
- if (!le)
- le = ed.dom.getParent(ed.selection.getNode(), 'DIV,P,IMG');
-
- if (le) {
- if (le.style.position.toLowerCase() == "absolute") {
- ed.dom.setStyles(le, {
- position : '',
- left : '',
- top : '',
- width : '',
- height : ''
- });
-
- ed.dom.removeClass(le, 'mceItemVisualAid');
- ed.dom.removeClass(le, 'mceItemLayer');
- } else {
- if (le.style.left == "")
- le.style.left = 20 + 'px';
-
- if (le.style.top == "")
- le.style.top = 20 + 'px';
-
- if (le.style.width == "")
- le.style.width = le.width ? (le.width + 'px') : '100px';
-
- if (le.style.height == "")
- le.style.height = le.height ? (le.height + 'px') : '100px';
-
- le.style.position = "absolute";
-
- ed.dom.setAttrib(le, 'data-mce-style', '');
- ed.addVisual(ed.getBody());
- }
-
- ed.execCommand('mceRepaint');
- ed.nodeChanged();
- }
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('layer', tinymce.plugins.Layer);
-})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/legacyoutput/editor_plugin.js b/program/js/tiny_mce/plugins/legacyoutput/editor_plugin.js
deleted file mode 100644
index 2ed5f41ae..000000000
--- a/program/js/tiny_mce/plugins/legacyoutput/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(a){a.onAddEditor.addToTop(function(c,b){b.settings.inline_styles=false});a.create("tinymce.plugins.LegacyOutput",{init:function(b){b.onInit.add(function(){var c="p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img",e=a.explode(b.settings.font_size_style_values),d=b.schema;b.formatter.register({alignleft:{selector:c,attributes:{align:"left"}},aligncenter:{selector:c,attributes:{align:"center"}},alignright:{selector:c,attributes:{align:"right"}},alignfull:{selector:c,attributes:{align:"justify"}},bold:[{inline:"b",remove:"all"},{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}}],italic:[{inline:"i",remove:"all"},{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}}],underline:[{inline:"u",remove:"all"},{inline:"span",styles:{textDecoration:"underline"},exact:true}],strikethrough:[{inline:"strike",remove:"all"},{inline:"span",styles:{textDecoration:"line-through"},exact:true}],fontname:{inline:"font",attributes:{face:"%value"}},fontsize:{inline:"font",attributes:{size:function(f){return a.inArray(e,f.value)+1}}},forecolor:{inline:"font",attributes:{color:"%value"}},hilitecolor:{inline:"font",styles:{backgroundColor:"%value"}}});a.each("b,i,u,strike".split(","),function(f){d.addValidElements(f+"[*]")});if(!d.getElementRule("font")){d.addValidElements("font[face|size|color|style]")}a.each(c.split(","),function(f){var h=d.getElementRule(f),g;if(h){if(!h.attributes.align){h.attributes.align={};h.attributesOrder.push("align")}}});b.onNodeChange.add(function(g,k){var j,f,h,i;f=g.dom.getParent(g.selection.getNode(),"font");if(f){h=f.face;i=f.size}if(j=k.get("fontselect")){j.select(function(l){return l==h})}if(j=k.get("fontsizeselect")){j.select(function(m){var l=a.inArray(e,m.fontSize);return l+1==i})}})})},getInfo:function(){return{longname:"LegacyOutput",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/legacyoutput",version:a.majorVersion+"."+a.minorVersion}}});a.PluginManager.add("legacyoutput",a.plugins.LegacyOutput)})(tinymce); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/legacyoutput/editor_plugin_src.js b/program/js/tiny_mce/plugins/legacyoutput/editor_plugin_src.js
deleted file mode 100644
index 3cdcde579..000000000
--- a/program/js/tiny_mce/plugins/legacyoutput/editor_plugin_src.js
+++ /dev/null
@@ -1,139 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- *
- * This plugin will force TinyMCE to produce deprecated legacy output such as font elements, u elements, align
- * attributes and so forth. There are a few cases where these old items might be needed for example in email applications or with Flash
- *
- * However you should NOT use this plugin if you are building some system that produces web contents such as a CMS. All these elements are
- * not apart of the newer specifications for HTML and XHTML.
- */
-
-(function(tinymce) {
- // Override inline_styles setting to force TinyMCE to produce deprecated contents
- tinymce.onAddEditor.addToTop(function(tinymce, editor) {
- editor.settings.inline_styles = false;
- });
-
- // Create the legacy ouput plugin
- tinymce.create('tinymce.plugins.LegacyOutput', {
- init : function(editor) {
- editor.onInit.add(function() {
- var alignElements = 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img',
- fontSizes = tinymce.explode(editor.settings.font_size_style_values),
- schema = editor.schema;
-
- // Override some internal formats to produce legacy elements and attributes
- editor.formatter.register({
- // Change alignment formats to use the deprecated align attribute
- alignleft : {selector : alignElements, attributes : {align : 'left'}},
- aligncenter : {selector : alignElements, attributes : {align : 'center'}},
- alignright : {selector : alignElements, attributes : {align : 'right'}},
- alignfull : {selector : alignElements, attributes : {align : 'justify'}},
-
- // Change the basic formatting elements to use deprecated element types
- bold : [
- {inline : 'b', remove : 'all'},
- {inline : 'strong', remove : 'all'},
- {inline : 'span', styles : {fontWeight : 'bold'}}
- ],
- italic : [
- {inline : 'i', remove : 'all'},
- {inline : 'em', remove : 'all'},
- {inline : 'span', styles : {fontStyle : 'italic'}}
- ],
- underline : [
- {inline : 'u', remove : 'all'},
- {inline : 'span', styles : {textDecoration : 'underline'}, exact : true}
- ],
- strikethrough : [
- {inline : 'strike', remove : 'all'},
- {inline : 'span', styles : {textDecoration: 'line-through'}, exact : true}
- ],
-
- // Change font size and font family to use the deprecated font element
- fontname : {inline : 'font', attributes : {face : '%value'}},
- fontsize : {
- inline : 'font',
- attributes : {
- size : function(vars) {
- return tinymce.inArray(fontSizes, vars.value) + 1;
- }
- }
- },
-
- // Setup font elements for colors as well
- forecolor : {inline : 'font', attributes : {color : '%value'}},
- hilitecolor : {inline : 'font', styles : {backgroundColor : '%value'}}
- });
-
- // Check that deprecated elements are allowed if not add them
- tinymce.each('b,i,u,strike'.split(','), function(name) {
- schema.addValidElements(name + '[*]');
- });
-
- // Add font element if it's missing
- if (!schema.getElementRule("font"))
- schema.addValidElements("font[face|size|color|style]");
-
- // Add the missing and depreacted align attribute for the serialization engine
- tinymce.each(alignElements.split(','), function(name) {
- var rule = schema.getElementRule(name), found;
-
- if (rule) {
- if (!rule.attributes.align) {
- rule.attributes.align = {};
- rule.attributesOrder.push('align');
- }
- }
- });
-
- // Listen for the onNodeChange event so that we can do special logic for the font size and font name drop boxes
- editor.onNodeChange.add(function(editor, control_manager) {
- var control, fontElm, fontName, fontSize;
-
- // Find font element get it's name and size
- fontElm = editor.dom.getParent(editor.selection.getNode(), 'font');
- if (fontElm) {
- fontName = fontElm.face;
- fontSize = fontElm.size;
- }
-
- // Select/unselect the font name in droplist
- if (control = control_manager.get('fontselect')) {
- control.select(function(value) {
- return value == fontName;
- });
- }
-
- // Select/unselect the font size in droplist
- if (control = control_manager.get('fontsizeselect')) {
- control.select(function(value) {
- var index = tinymce.inArray(fontSizes, value.fontSize);
-
- return index + 1 == fontSize;
- });
- }
- });
- });
- },
-
- getInfo : function() {
- return {
- longname : 'LegacyOutput',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/legacyoutput',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('legacyoutput', tinymce.plugins.LegacyOutput);
-})(tinymce);
diff --git a/program/js/tiny_mce/plugins/lists/editor_plugin.js b/program/js/tiny_mce/plugins/lists/editor_plugin.js
deleted file mode 100644
index ec21b256e..000000000
--- a/program/js/tiny_mce/plugins/lists/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){var e=tinymce.each,r=tinymce.dom.Event,g;function p(t,s){while(t&&(t.nodeType===8||(t.nodeType===3&&/^[ \t\n\r]*$/.test(t.nodeValue)))){t=s(t)}return t}function b(s){return p(s,function(t){return t.previousSibling})}function i(s){return p(s,function(t){return t.nextSibling})}function d(s,u,t){return s.dom.getParent(u,function(v){return tinymce.inArray(t,v)!==-1})}function n(s){return s&&(s.tagName==="OL"||s.tagName==="UL")}function c(u,v){var t,w,s;t=b(u.lastChild);while(n(t)){w=t;t=b(w.previousSibling)}if(w){s=v.create("li",{style:"list-style-type: none;"});v.split(u,w);v.insertAfter(s,w);s.appendChild(w);s.appendChild(w);u=s.previousSibling}return u}function m(t,s,u){t=a(t,s,u);return o(t,s,u)}function a(u,s,v){var t=b(u.previousSibling);if(t){return h(t,u,s?t:false,v)}else{return u}}function o(u,t,v){var s=i(u.nextSibling);if(s){return h(u,s,t?s:false,v)}else{return u}}function h(u,s,t,v){if(l(u,s,!!t,v)){return f(u,s,t)}else{if(u&&u.tagName==="LI"&&n(s)){u.appendChild(s)}}return s}function l(u,t,s,v){if(!u||!t){return false}else{if(u.tagName==="LI"&&t.tagName==="LI"){return t.style.listStyleType==="none"||j(t)}else{if(n(u)){return(u.tagName===t.tagName&&(s||u.style.listStyleType===t.style.listStyleType))||q(t)}else{return v&&u.tagName==="P"&&t.tagName==="P"}}}}function q(t){var s=i(t.firstChild),u=b(t.lastChild);return s&&u&&n(t)&&s===u&&(n(s)||s.style.listStyleType==="none"||j(s))}function j(u){var t=i(u.firstChild),s=b(u.lastChild);return t&&s&&t===s&&n(t)}function f(w,v,s){var u=b(w.lastChild),t=i(v.firstChild);if(w.tagName==="P"){w.appendChild(w.ownerDocument.createElement("br"))}while(v.firstChild){w.appendChild(v.firstChild)}if(s){w.style.listStyleType=s.style.listStyleType}v.parentNode.removeChild(v);h(u,t,false);return w}function k(t,u){var s;if(!u.is(t,"li,ol,ul")){s=u.getParent(t,"li");if(s){t=s}}return t}tinymce.create("tinymce.plugins.Lists",{init:function(y){var v="TABBING";var s="EMPTY";var J="ESCAPE";var z="PARAGRAPH";var N="UNKNOWN";var x=N;function E(U){return U.keyCode===tinymce.VK.TAB&&!(U.altKey||U.ctrlKey)&&(y.queryCommandState("InsertUnorderedList")||y.queryCommandState("InsertOrderedList"))}function w(){var U=B();var W=U.parentNode.parentNode;var V=U.parentNode.lastChild===U;return V&&!t(W)&&P(U)}function t(U){if(n(U)){return U.parentNode&&U.parentNode.tagName==="LI"}else{return U.tagName==="LI"}}function F(){return y.selection.isCollapsed()&&P(B())}function B(){var U=y.selection.getStart();return((U.tagName=="BR"||U.tagName=="")&&U.parentNode.tagName=="LI")?U.parentNode:U}function P(U){var V=U.childNodes.length;if(U.tagName==="LI"){return V==0?true:V==1&&(U.firstChild.tagName==""||U.firstChild.tagName=="BR"||H(U))}return false}function H(U){var V=tinymce.grep(U.parentNode.childNodes,function(Y){return Y.tagName=="LI"});var W=U==V[V.length-1];var X=U.firstChild;return tinymce.isIE9&&W&&(X.nodeValue==String.fromCharCode(160)||X.nodeValue==String.fromCharCode(32))}function T(U){return U.keyCode===tinymce.VK.ENTER}function A(U){return T(U)&&!U.shiftKey}function M(U){if(E(U)){return v}else{if(A(U)&&w()){return N}else{if(A(U)&&F()){return s}else{return N}}}}function D(U,V){if(x==v||x==s||tinymce.isGecko&&x==J){r.cancel(V)}}function C(){var U=y.selection.getRng(true);var V=U.startContainer;if(V.nodeType==3){var W=V.nodeValue;if(tinymce.isIE9&&W.length>1&&W.charCodeAt(W.length-1)==32){return(U.endOffset==W.length-1)}else{return(U.endOffset==W.length)}}else{if(V.nodeType==1){return U.endOffset==V.childNodes.length}}return false}function I(){var W=y.selection.getNode();var V="h1,h2,h3,h4,h5,h6,p,div";var U=y.dom.is(W,V)&&W.parentNode.tagName==="LI"&&W.parentNode.lastChild===W;return y.selection.isCollapsed()&&U&&C()}function K(W,Y){if(A(Y)&&I()){var X=W.selection.getNode();var V=W.dom.create("li");var U=W.dom.getParent(X,"li");W.dom.insertAfter(V,U);if(tinymce.isIE6||tinymce.isIE7||tinyMCE.isIE8){W.selection.setCursorLocation(V,1)}else{W.selection.setCursorLocation(V,0)}Y.preventDefault()}}function u(X,Z){var ac;if(!tinymce.isGecko){return}var V=X.selection.getStart();if(Z.keyCode!=tinymce.VK.BACKSPACE||V.tagName!=="IMG"){return}function W(ag){var ah=ag.firstChild;var af=null;do{if(!ah){break}if(ah.tagName==="LI"){af=ah}}while(ah=ah.nextSibling);return af}function ae(ag,af){while(ag.childNodes.length>0){af.appendChild(ag.childNodes[0])}}ac=V.parentNode.previousSibling;if(!ac){return}var aa;if(ac.tagName==="UL"||ac.tagName==="OL"){aa=ac}else{if(ac.previousSibling&&(ac.previousSibling.tagName==="UL"||ac.previousSibling.tagName==="OL")){aa=ac.previousSibling}else{return}}var ad=W(aa);var U=X.dom.createRng();U.setStart(ad,1);U.setEnd(ad,1);X.selection.setRng(U);X.selection.collapse(true);var Y=X.selection.getBookmark();var ab=V.parentNode.cloneNode(true);if(ab.tagName==="P"||ab.tagName==="DIV"){ae(ab,ad)}else{ad.appendChild(ab)}V.parentNode.parentNode.removeChild(V.parentNode);X.selection.moveToBookmark(Y)}function G(U){var V=y.dom.getParent(U,"ol,ul");if(V!=null){var W=V.lastChild;y.selection.setCursorLocation(W,0)}}this.ed=y;y.addCommand("Indent",this.indent,this);y.addCommand("Outdent",this.outdent,this);y.addCommand("InsertUnorderedList",function(){this.applyList("UL","OL")},this);y.addCommand("InsertOrderedList",function(){this.applyList("OL","UL")},this);y.onInit.add(function(){y.editorCommands.addCommands({outdent:function(){var V=y.selection,W=y.dom;function U(X){X=W.getParent(X,W.isBlock);return X&&(parseInt(y.dom.getStyle(X,"margin-left")||0,10)+parseInt(y.dom.getStyle(X,"padding-left")||0,10))>0}return U(V.getStart())||U(V.getEnd())||y.queryCommandState("InsertOrderedList")||y.queryCommandState("InsertUnorderedList")}},"state")});y.onKeyUp.add(function(V,W){if(x==v){V.execCommand(W.shiftKey?"Outdent":"Indent",true,null);x=N;return r.cancel(W)}else{if(x==s){var U=B();var Y=V.settings.list_outdent_on_enter===true||W.shiftKey;V.execCommand(Y?"Outdent":"Indent",true,null);if(tinymce.isIE){G(U)}return r.cancel(W)}else{if(x==J){if(tinymce.isIE6||tinymce.isIE7||tinymce.isIE8){var X=V.getDoc().createTextNode("\uFEFF");V.selection.getNode().appendChild(X)}else{if(tinymce.isIE9||tinymce.isGecko){V.execCommand("Outdent");return r.cancel(W)}}}}}});function L(V,U){var W=y.getDoc().createTextNode("\uFEFF");V.insertBefore(W,U);y.selection.setCursorLocation(W,0);y.execCommand("mceRepaint")}function R(V,X){if(T(X)){var U=B();if(U){var W=U.parentNode;var Y=W&&W.parentNode;if(Y&&Y.nodeName=="LI"&&Y.firstChild==W&&U==W.firstChild){L(Y,W)}}}}function S(V,X){if(T(X)){var U=B();if(V.dom.select("ul li",U).length===1){var W=U.firstChild;L(U,W)}}}function Q(W,aa){function X(ab){var ad=[];var ae=new tinymce.dom.TreeWalker(ab.firstChild,ab);for(var ac=ae.current();ac;ac=ae.next()){if(W.dom.is(ac,"ol,ul,li")){ad.push(ac)}}return ad}if(aa.keyCode==tinymce.VK.BACKSPACE){var U=B();if(U){var Z=W.dom.getParent(U,"ol,ul"),V=W.selection.getRng();if(Z&&Z.firstChild===U&&V.startOffset==0){var Y=X(U);Y.unshift(U);W.execCommand("Outdent",false,Y);W.undoManager.add();return r.cancel(aa)}}}}function O(V,X){var U=B();if(X.keyCode===tinymce.VK.BACKSPACE&&V.dom.is(U,"li")&&U.parentNode.firstChild!==U){if(V.dom.select("ul,ol",U).length===1){var Z=U.previousSibling;V.dom.remove(V.dom.select("br",U));V.dom.remove(U,true);var W=tinymce.grep(Z.childNodes,function(aa){return aa.nodeType===3});if(W.length===1){var Y=W[0];V.selection.setCursorLocation(Y,Y.length)}V.undoManager.add();return r.cancel(X)}}}y.onKeyDown.add(function(U,V){x=M(V)});y.onKeyDown.add(D);y.onKeyDown.add(u);y.onKeyDown.add(K);if(tinymce.isGecko){y.onKeyUp.add(R)}if(tinymce.isIE8){y.onKeyUp.add(S)}if(tinymce.isGecko||tinymce.isWebKit){y.onKeyDown.add(Q)}if(tinymce.isWebKit){y.onKeyDown.add(O)}},applyList:function(y,v){var C=this,z=C.ed,I=z.dom,s=[],H=false,u=false,w=false,B,G=z.selection.getSelectedBlocks();function E(t){if(t&&t.tagName==="BR"){I.remove(t)}}function F(M){var N=I.create(y),t;function L(O){if(O.style.marginLeft||O.style.paddingLeft){C.adjustPaddingFunction(false)(O)}}if(M.tagName==="LI"){}else{if(M.tagName==="P"||M.tagName==="DIV"||M.tagName==="BODY"){K(M,function(P,O){J(P,O,M.tagName==="BODY"?null:P.parentNode);t=P.parentNode;L(t);E(O)});if(t){if(t.tagName==="LI"&&(M.tagName==="P"||G.length>1)){I.split(t.parentNode.parentNode,t.parentNode)}m(t.parentNode,true)}return}else{t=I.create("li");I.insertAfter(t,M);t.appendChild(M);L(M);M=t}}I.insertAfter(N,M);N.appendChild(M);m(N,true);s.push(M)}function J(P,L,N){var t,O=P,M;while(!I.isBlock(P.parentNode)&&P.parentNode!==I.getRoot()){P=I.split(P.parentNode,P.previousSibling);P=P.nextSibling;O=P}if(N){t=N.cloneNode(true);P.parentNode.insertBefore(t,P);while(t.firstChild){I.remove(t.firstChild)}t=I.rename(t,"li")}else{t=I.create("li");P.parentNode.insertBefore(t,P)}while(O&&O!=L){M=O.nextSibling;t.appendChild(O);O=M}if(t.childNodes.length===0){t.innerHTML='<br _mce_bogus="1" />'}F(t)}function K(Q,T){var N,R,O=3,L=1,t="br,ul,ol,p,div,h1,h2,h3,h4,h5,h6,table,blockquote,address,pre,form,center,dl";function P(X,U){var V=I.createRng(),W;g.keep=true;z.selection.moveToBookmark(g);g.keep=false;W=z.selection.getRng(true);if(!U){U=X.parentNode.lastChild}V.setStartBefore(X);V.setEndAfter(U);return !(V.compareBoundaryPoints(O,W)>0||V.compareBoundaryPoints(L,W)<=0)}function S(U){if(U.nextSibling){return U.nextSibling}if(!I.isBlock(U.parentNode)&&U.parentNode!==I.getRoot()){return S(U.parentNode)}}N=Q.firstChild;var M=false;e(I.select(t,Q),function(U){if(U.hasAttribute&&U.hasAttribute("_mce_bogus")){return true}if(P(N,U)){I.addClass(U,"_mce_tagged_br");N=S(U)}});M=(N&&P(N,undefined));N=Q.firstChild;e(I.select(t,Q),function(V){var U=S(V);if(V.hasAttribute&&V.hasAttribute("_mce_bogus")){return true}if(I.hasClass(V,"_mce_tagged_br")){T(N,V,R);R=null}else{R=V}N=U});if(M){T(N,undefined,R)}}function D(t){K(t,function(M,L,N){J(M,L);E(L);E(N)})}function A(t){if(tinymce.inArray(s,t)!==-1){return}if(t.parentNode.tagName===v){I.split(t.parentNode,t);F(t);o(t.parentNode,false)}s.push(t)}function x(M){var O,N,L,t;if(tinymce.inArray(s,M)!==-1){return}M=c(M,I);while(I.is(M.parentNode,"ol,ul,li")){I.split(M.parentNode,M)}s.push(M);M=I.rename(M,"p");L=m(M,false,z.settings.force_br_newlines);if(L===M){O=M.firstChild;while(O){if(I.isBlock(O)){O=I.split(O.parentNode,O);t=true;N=O.nextSibling&&O.nextSibling.firstChild}else{N=O.nextSibling;if(t&&O.tagName==="BR"){I.remove(O)}t=false}O=N}}}e(G,function(t){t=k(t,I);if(t.tagName===v||(t.tagName==="LI"&&t.parentNode.tagName===v)){u=true}else{if(t.tagName===y||(t.tagName==="LI"&&t.parentNode.tagName===y)){H=true}else{w=true}}});if(w&&!H||u||G.length===0){B={LI:A,H1:F,H2:F,H3:F,H4:F,H5:F,H6:F,P:F,BODY:F,DIV:G.length>1?F:D,defaultAction:D,elements:this.selectedBlocks()}}else{B={defaultAction:x,elements:this.selectedBlocks(),processEvenIfEmpty:true}}this.process(B)},indent:function(){var u=this.ed,w=u.dom,x=[];function s(z){var y=w.create("li",{style:"list-style-type: none;"});w.insertAfter(y,z);return y}function t(B){var y=s(B),D=w.getParent(B,"ol,ul"),C=D.tagName,E=w.getStyle(D,"list-style-type"),A={},z;if(E!==""){A.style="list-style-type: "+E+";"}z=w.create(C,A);y.appendChild(z);return z}function v(z){if(!d(u,z,x)){z=c(z,w);var y=t(z);y.appendChild(z);m(y.parentNode,false);m(y,false);x.push(z)}}this.process({LI:v,defaultAction:this.adjustPaddingFunction(true),elements:this.selectedBlocks()})},outdent:function(y,x){var w=this,u=w.ed,z=u.dom,s=[];function A(t){var C,B,D;if(!d(u,t,s)){if(z.getStyle(t,"margin-left")!==""||z.getStyle(t,"padding-left")!==""){return w.adjustPaddingFunction(false)(t)}D=z.getStyle(t,"text-align",true);if(D==="center"||D==="right"){z.setStyle(t,"text-align","left");return}t=c(t,z);C=t.parentNode;B=t.parentNode.parentNode;if(B.tagName==="P"){z.split(B,t.parentNode)}else{z.split(C,t);if(B.tagName==="LI"){z.split(B,t)}else{if(!z.is(B,"ol,ul")){z.rename(t,"p")}}}s.push(t)}}var v=x&&tinymce.is(x,"array")?x:this.selectedBlocks();this.process({LI:A,defaultAction:this.adjustPaddingFunction(false),elements:v});e(s,m)},process:function(y){var F=this,w=F.ed.selection,z=F.ed.dom,E,u;function B(t){var s=tinymce.grep(t.childNodes,function(H){return !(H.nodeName==="BR"||H.nodeName==="SPAN"&&z.getAttrib(H,"data-mce-type")=="bookmark"||H.nodeType==3&&(H.nodeValue==String.fromCharCode(160)||H.nodeValue==""))});return s.length===0}function x(s){z.removeClass(s,"_mce_act_on");if(!s||s.nodeType!==1||!y.processEvenIfEmpty&&E.length>1&&B(s)){return}s=k(s,z);var t=y[s.tagName];if(!t){t=y.defaultAction}t(s)}function v(s){F.splitSafeEach(s.childNodes,x,true)}function C(s,t){return t>=0&&s.hasChildNodes()&&t<s.childNodes.length&&s.childNodes[t].tagName==="BR"}function D(){var t=w.getNode();var s=z.getParent(t,"td");return s!==null}E=y.elements;u=w.getRng(true);if(!u.collapsed){if(C(u.endContainer,u.endOffset-1)){u.setEnd(u.endContainer,u.endOffset-1);w.setRng(u)}if(C(u.startContainer,u.startOffset)){u.setStart(u.startContainer,u.startOffset+1);w.setRng(u)}}if(tinymce.isIE8){var G=F.ed.selection.getNode();if(G.tagName==="LI"&&!(G.parentNode.lastChild===G)){var A=F.ed.getDoc().createTextNode("\uFEFF");G.appendChild(A)}}g=w.getBookmark();y.OL=y.UL=v;F.splitSafeEach(E,x);w.moveToBookmark(g);g=null;if(!D()){F.ed.execCommand("mceRepaint")}},splitSafeEach:function(u,t,s){if(s||(tinymce.isGecko&&(/Firefox\/[12]\.[0-9]/.test(navigator.userAgent)||/Firefox\/3\.[0-4]/.test(navigator.userAgent)))){this.classBasedEach(u,t)}else{e(u,t)}},classBasedEach:function(v,u){var w=this.ed.dom,s,t;e(v,function(x){w.addClass(x,"_mce_act_on")});s=w.select("._mce_act_on");while(s.length>0){t=s.shift();w.removeClass(t,"_mce_act_on");u(t);s=w.select("._mce_act_on")}},adjustPaddingFunction:function(u){var s,v,t=this.ed;s=t.settings.indentation;v=/[a-z%]+/i.exec(s);s=parseInt(s,10);return function(w){var y,x;y=parseInt(t.dom.getStyle(w,"margin-left")||0,10)+parseInt(t.dom.getStyle(w,"padding-left")||0,10);if(u){x=y+s}else{x=y-s}t.dom.setStyle(w,"padding-left","");t.dom.setStyle(w,"margin-left",x>0?x+v:"")}},selectedBlocks:function(){var s=this.ed,t=s.selection.getSelectedBlocks();return t.length==0?[s.dom.getRoot()]:t},getInfo:function(){return{longname:"Lists",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/lists",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("lists",tinymce.plugins.Lists)}()); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/lists/editor_plugin_src.js b/program/js/tiny_mce/plugins/lists/editor_plugin_src.js
deleted file mode 100644
index 1000ef745..000000000
--- a/program/js/tiny_mce/plugins/lists/editor_plugin_src.js
+++ /dev/null
@@ -1,955 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2011, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- var each = tinymce.each, Event = tinymce.dom.Event, bookmark;
-
- // Skips text nodes that only contain whitespace since they aren't semantically important.
- function skipWhitespaceNodes(e, next) {
- while (e && (e.nodeType === 8 || (e.nodeType === 3 && /^[ \t\n\r]*$/.test(e.nodeValue)))) {
- e = next(e);
- }
- return e;
- }
-
- function skipWhitespaceNodesBackwards(e) {
- return skipWhitespaceNodes(e, function(e) {
- return e.previousSibling;
- });
- }
-
- function skipWhitespaceNodesForwards(e) {
- return skipWhitespaceNodes(e, function(e) {
- return e.nextSibling;
- });
- }
-
- function hasParentInList(ed, e, list) {
- return ed.dom.getParent(e, function(p) {
- return tinymce.inArray(list, p) !== -1;
- });
- }
-
- function isList(e) {
- return e && (e.tagName === 'OL' || e.tagName === 'UL');
- }
-
- function splitNestedLists(element, dom) {
- var tmp, nested, wrapItem;
- tmp = skipWhitespaceNodesBackwards(element.lastChild);
- while (isList(tmp)) {
- nested = tmp;
- tmp = skipWhitespaceNodesBackwards(nested.previousSibling);
- }
- if (nested) {
- wrapItem = dom.create('li', { style: 'list-style-type: none;'});
- dom.split(element, nested);
- dom.insertAfter(wrapItem, nested);
- wrapItem.appendChild(nested);
- wrapItem.appendChild(nested);
- element = wrapItem.previousSibling;
- }
- return element;
- }
-
- function attemptMergeWithAdjacent(e, allowDifferentListStyles, mergeParagraphs) {
- e = attemptMergeWithPrevious(e, allowDifferentListStyles, mergeParagraphs);
- return attemptMergeWithNext(e, allowDifferentListStyles, mergeParagraphs);
- }
-
- function attemptMergeWithPrevious(e, allowDifferentListStyles, mergeParagraphs) {
- var prev = skipWhitespaceNodesBackwards(e.previousSibling);
- if (prev) {
- return attemptMerge(prev, e, allowDifferentListStyles ? prev : false, mergeParagraphs);
- } else {
- return e;
- }
- }
-
- function attemptMergeWithNext(e, allowDifferentListStyles, mergeParagraphs) {
- var next = skipWhitespaceNodesForwards(e.nextSibling);
- if (next) {
- return attemptMerge(e, next, allowDifferentListStyles ? next : false, mergeParagraphs);
- } else {
- return e;
- }
- }
-
- function attemptMerge(e1, e2, differentStylesMasterElement, mergeParagraphs) {
- if (canMerge(e1, e2, !!differentStylesMasterElement, mergeParagraphs)) {
- return merge(e1, e2, differentStylesMasterElement);
- } else if (e1 && e1.tagName === 'LI' && isList(e2)) {
- // Fix invalidly nested lists.
- e1.appendChild(e2);
- }
- return e2;
- }
-
- function canMerge(e1, e2, allowDifferentListStyles, mergeParagraphs) {
- if (!e1 || !e2) {
- return false;
- } else if (e1.tagName === 'LI' && e2.tagName === 'LI') {
- return e2.style.listStyleType === 'none' || containsOnlyAList(e2);
- } else if (isList(e1)) {
- return (e1.tagName === e2.tagName && (allowDifferentListStyles || e1.style.listStyleType === e2.style.listStyleType)) || isListForIndent(e2);
- } else return mergeParagraphs && e1.tagName === 'P' && e2.tagName === 'P';
- }
-
- function isListForIndent(e) {
- var firstLI = skipWhitespaceNodesForwards(e.firstChild), lastLI = skipWhitespaceNodesBackwards(e.lastChild);
- return firstLI && lastLI && isList(e) && firstLI === lastLI && (isList(firstLI) || firstLI.style.listStyleType === 'none' || containsOnlyAList(firstLI));
- }
-
- function containsOnlyAList(e) {
- var firstChild = skipWhitespaceNodesForwards(e.firstChild), lastChild = skipWhitespaceNodesBackwards(e.lastChild);
- return firstChild && lastChild && firstChild === lastChild && isList(firstChild);
- }
-
- function merge(e1, e2, masterElement) {
- var lastOriginal = skipWhitespaceNodesBackwards(e1.lastChild), firstNew = skipWhitespaceNodesForwards(e2.firstChild);
- if (e1.tagName === 'P') {
- e1.appendChild(e1.ownerDocument.createElement('br'));
- }
- while (e2.firstChild) {
- e1.appendChild(e2.firstChild);
- }
- if (masterElement) {
- e1.style.listStyleType = masterElement.style.listStyleType;
- }
- e2.parentNode.removeChild(e2);
- attemptMerge(lastOriginal, firstNew, false);
- return e1;
- }
-
- function findItemToOperateOn(e, dom) {
- var item;
- if (!dom.is(e, 'li,ol,ul')) {
- item = dom.getParent(e, 'li');
- if (item) {
- e = item;
- }
- }
- return e;
- }
-
- tinymce.create('tinymce.plugins.Lists', {
- init: function(ed) {
- var LIST_TABBING = 'TABBING';
- var LIST_EMPTY_ITEM = 'EMPTY';
- var LIST_ESCAPE = 'ESCAPE';
- var LIST_PARAGRAPH = 'PARAGRAPH';
- var LIST_UNKNOWN = 'UNKNOWN';
- var state = LIST_UNKNOWN;
-
- function isTabInList(e) {
- // Don't indent on Ctrl+Tab or Alt+Tab
- return e.keyCode === tinymce.VK.TAB && !(e.altKey || e.ctrlKey) &&
- (ed.queryCommandState('InsertUnorderedList') || ed.queryCommandState('InsertOrderedList'));
- }
-
- function isOnLastListItem() {
- var li = getLi();
- var grandParent = li.parentNode.parentNode;
- var isLastItem = li.parentNode.lastChild === li;
- return isLastItem && !isNestedList(grandParent) && isEmptyListItem(li);
- }
-
- function isNestedList(grandParent) {
- if (isList(grandParent)) {
- return grandParent.parentNode && grandParent.parentNode.tagName === 'LI';
- } else {
- return grandParent.tagName === 'LI';
- }
- }
-
- function isInEmptyListItem() {
- return ed.selection.isCollapsed() && isEmptyListItem(getLi());
- }
-
- function getLi() {
- var n = ed.selection.getStart();
- // Get start will return BR if the LI only contains a BR or an empty element as we use these to fix caret position
- return ((n.tagName == 'BR' || n.tagName == '') && n.parentNode.tagName == 'LI') ? n.parentNode : n;
- }
-
- function isEmptyListItem(li) {
- var numChildren = li.childNodes.length;
- if (li.tagName === 'LI') {
- return numChildren == 0 ? true : numChildren == 1 && (li.firstChild.tagName == '' || li.firstChild.tagName == 'BR' || isEmptyIE9Li(li));
- }
- return false;
- }
-
- function isEmptyIE9Li(li) {
- // only consider this to be last item if there is no list item content or that content is nbsp or space since IE9 creates these
- var lis = tinymce.grep(li.parentNode.childNodes, function(n) {return n.tagName == 'LI'});
- var isLastLi = li == lis[lis.length - 1];
- var child = li.firstChild;
- return tinymce.isIE9 && isLastLi && (child.nodeValue == String.fromCharCode(160) || child.nodeValue == String.fromCharCode(32));
- }
-
- function isEnter(e) {
- return e.keyCode === tinymce.VK.ENTER;
- }
-
- function isEnterWithoutShift(e) {
- return isEnter(e) && !e.shiftKey;
- }
-
- function getListKeyState(e) {
- if (isTabInList(e)) {
- return LIST_TABBING;
- } else if (isEnterWithoutShift(e) && isOnLastListItem()) {
- // Returns LIST_UNKNOWN since breaking out of lists is handled by the EnterKey.js logic now
- //return LIST_ESCAPE;
- return LIST_UNKNOWN;
- } else if (isEnterWithoutShift(e) && isInEmptyListItem()) {
- return LIST_EMPTY_ITEM;
- } else {
- return LIST_UNKNOWN;
- }
- }
-
- function cancelDefaultEvents(ed, e) {
- // list escape is done manually using outdent as it does not create paragraphs correctly in td's
- if (state == LIST_TABBING || state == LIST_EMPTY_ITEM || tinymce.isGecko && state == LIST_ESCAPE) {
- Event.cancel(e);
- }
- }
-
- function isCursorAtEndOfContainer() {
- var range = ed.selection.getRng(true);
- var startContainer = range.startContainer;
- if (startContainer.nodeType == 3) {
- var value = startContainer.nodeValue;
- if (tinymce.isIE9 && value.length > 1 && value.charCodeAt(value.length-1) == 32) {
- // IE9 places a space on the end of the text in some cases so ignore last char
- return (range.endOffset == value.length-1);
- } else {
- return (range.endOffset == value.length);
- }
- } else if (startContainer.nodeType == 1) {
- return range.endOffset == startContainer.childNodes.length;
- }
- return false;
- }
-
- /*
- If we are at the end of a list item surrounded with an element, pressing enter should create a
- new list item instead without splitting the element e.g. don't want to create new P or H1 tag
- */
- function isEndOfListItem() {
- var node = ed.selection.getNode();
- var validElements = 'h1,h2,h3,h4,h5,h6,p,div';
- var isLastParagraphOfLi = ed.dom.is(node, validElements) && node.parentNode.tagName === 'LI' && node.parentNode.lastChild === node;
- return ed.selection.isCollapsed() && isLastParagraphOfLi && isCursorAtEndOfContainer();
- }
-
- // Creates a new list item after the current selection's list item parent
- function createNewLi(ed, e) {
- if (isEnterWithoutShift(e) && isEndOfListItem()) {
- var node = ed.selection.getNode();
- var li = ed.dom.create("li");
- var parentLi = ed.dom.getParent(node, 'li');
- ed.dom.insertAfter(li, parentLi);
-
- // Move caret to new list element.
- if (tinymce.isIE6 || tinymce.isIE7 || tinyMCE.isIE8) {
- // Removed this line since it would create an odd <&nbsp;> tag and placing the caret inside an empty LI is handled and should be handled by the selection logic
- //li.appendChild(ed.dom.create("&nbsp;")); // IE needs an element within the bullet point
- ed.selection.setCursorLocation(li, 1);
- } else {
- ed.selection.setCursorLocation(li, 0);
- }
- e.preventDefault();
- }
- }
-
- function imageJoiningListItem(ed, e) {
- var prevSibling;
-
- if (!tinymce.isGecko)
- return;
-
- var n = ed.selection.getStart();
- if (e.keyCode != tinymce.VK.BACKSPACE || n.tagName !== 'IMG')
- return;
-
- function lastLI(node) {
- var child = node.firstChild;
- var li = null;
- do {
- if (!child)
- break;
-
- if (child.tagName === 'LI')
- li = child;
- } while (child = child.nextSibling);
-
- return li;
- }
-
- function addChildren(parentNode, destination) {
- while (parentNode.childNodes.length > 0)
- destination.appendChild(parentNode.childNodes[0]);
- }
-
- // Check if there is a previous sibling
- prevSibling = n.parentNode.previousSibling;
- if (!prevSibling)
- return;
-
- var ul;
- if (prevSibling.tagName === 'UL' || prevSibling.tagName === 'OL')
- ul = prevSibling;
- else if (prevSibling.previousSibling && (prevSibling.previousSibling.tagName === 'UL' || prevSibling.previousSibling.tagName === 'OL'))
- ul = prevSibling.previousSibling;
- else
- return;
-
- var li = lastLI(ul);
-
- // move the caret to the end of the list item
- var rng = ed.dom.createRng();
- rng.setStart(li, 1);
- rng.setEnd(li, 1);
- ed.selection.setRng(rng);
- ed.selection.collapse(true);
-
- // save a bookmark at the end of the list item
- var bookmark = ed.selection.getBookmark();
-
- // copy the image an its text to the list item
- var clone = n.parentNode.cloneNode(true);
- if (clone.tagName === 'P' || clone.tagName === 'DIV')
- addChildren(clone, li);
- else
- li.appendChild(clone);
-
- // remove the old copy of the image
- n.parentNode.parentNode.removeChild(n.parentNode);
-
- // move the caret where we saved the bookmark
- ed.selection.moveToBookmark(bookmark);
- }
-
- // fix the cursor position to ensure it is correct in IE
- function setCursorPositionToOriginalLi(li) {
- var list = ed.dom.getParent(li, 'ol,ul');
- if (list != null) {
- var lastLi = list.lastChild;
- // Removed this line since IE9 would report an DOM character error and placing the caret inside an empty LI is handled and should be handled by the selection logic
- //lastLi.appendChild(ed.getDoc().createElement(''));
- ed.selection.setCursorLocation(lastLi, 0);
- }
- }
-
- this.ed = ed;
- ed.addCommand('Indent', this.indent, this);
- ed.addCommand('Outdent', this.outdent, this);
- ed.addCommand('InsertUnorderedList', function() {
- this.applyList('UL', 'OL');
- }, this);
- ed.addCommand('InsertOrderedList', function() {
- this.applyList('OL', 'UL');
- }, this);
-
- ed.onInit.add(function() {
- ed.editorCommands.addCommands({
- 'outdent': function() {
- var sel = ed.selection, dom = ed.dom;
-
- function hasStyleIndent(n) {
- n = dom.getParent(n, dom.isBlock);
- return n && (parseInt(ed.dom.getStyle(n, 'margin-left') || 0, 10) + parseInt(ed.dom.getStyle(n, 'padding-left') || 0, 10)) > 0;
- }
-
- return hasStyleIndent(sel.getStart()) || hasStyleIndent(sel.getEnd()) || ed.queryCommandState('InsertOrderedList') || ed.queryCommandState('InsertUnorderedList');
- }
- }, 'state');
- });
-
- ed.onKeyUp.add(function(ed, e) {
- if (state == LIST_TABBING) {
- ed.execCommand(e.shiftKey ? 'Outdent' : 'Indent', true, null);
- state = LIST_UNKNOWN;
- return Event.cancel(e);
- } else if (state == LIST_EMPTY_ITEM) {
- var li = getLi();
- var shouldOutdent = ed.settings.list_outdent_on_enter === true || e.shiftKey;
- ed.execCommand(shouldOutdent ? 'Outdent' : 'Indent', true, null);
- if (tinymce.isIE) {
- setCursorPositionToOriginalLi(li);
- }
-
- return Event.cancel(e);
- } else if (state == LIST_ESCAPE) {
- if (tinymce.isIE6 || tinymce.isIE7 || tinymce.isIE8) {
- // append a zero sized nbsp so that caret is positioned correctly in IE after escaping and applying formatting.
- // if there is no text then applying formatting for e.g a H1 to the P tag immediately following list after
- // escaping from it will cause the caret to be positioned on the last li instead of staying the in P tag.
- var n = ed.getDoc().createTextNode('\uFEFF');
- ed.selection.getNode().appendChild(n);
- } else if (tinymce.isIE9 || tinymce.isGecko) {
- // IE9 does not escape the list so we use outdent to do this and cancel the default behaviour
- // Gecko does not create a paragraph outdenting inside a TD so default behaviour is cancelled and we outdent ourselves
- ed.execCommand('Outdent');
- return Event.cancel(e);
- }
- }
- });
-
- function fixListItem(parent, reference) {
- // a zero-sized non-breaking space is placed in the empty list item so that the nested list is
- // displayed on the below line instead of next to it
- var n = ed.getDoc().createTextNode('\uFEFF');
- parent.insertBefore(n, reference);
- ed.selection.setCursorLocation(n, 0);
- // repaint to remove rendering artifact. only visible when creating new list
- ed.execCommand('mceRepaint');
- }
-
- function fixIndentedListItemForGecko(ed, e) {
- if (isEnter(e)) {
- var li = getLi();
- if (li) {
- var parent = li.parentNode;
- var grandParent = parent && parent.parentNode;
- if (grandParent && grandParent.nodeName == 'LI' && grandParent.firstChild == parent && li == parent.firstChild) {
- fixListItem(grandParent, parent);
- }
- }
- }
- }
-
- function fixIndentedListItemForIE8(ed, e) {
- if (isEnter(e)) {
- var li = getLi();
- if (ed.dom.select('ul li', li).length === 1) {
- var list = li.firstChild;
- fixListItem(li, list);
- }
- }
- }
-
- function fixDeletingFirstCharOfList(ed, e) {
- function listElements(li) {
- var elements = [];
- var walker = new tinymce.dom.TreeWalker(li.firstChild, li);
- for (var node = walker.current(); node; node = walker.next()) {
- if (ed.dom.is(node, 'ol,ul,li')) {
- elements.push(node);
- }
- }
- return elements;
- }
-
- if (e.keyCode == tinymce.VK.BACKSPACE) {
- var li = getLi();
- if (li) {
- var list = ed.dom.getParent(li, 'ol,ul'),
- rng = ed.selection.getRng();
- if (list && list.firstChild === li && rng.startOffset == 0) {
- var elements = listElements(li);
- elements.unshift(li);
- ed.execCommand("Outdent", false, elements);
- ed.undoManager.add();
- return Event.cancel(e);
- }
- }
- }
- }
-
- function fixDeletingEmptyLiInWebkit(ed, e) {
- var li = getLi();
- if (e.keyCode === tinymce.VK.BACKSPACE && ed.dom.is(li, 'li') && li.parentNode.firstChild!==li) {
- if (ed.dom.select('ul,ol', li).length === 1) {
- var prevLi = li.previousSibling;
- ed.dom.remove(ed.dom.select('br', li));
- ed.dom.remove(li, true);
- var textNodes = tinymce.grep(prevLi.childNodes, function(n){ return n.nodeType === 3 });
- if (textNodes.length === 1) {
- var textNode = textNodes[0];
- ed.selection.setCursorLocation(textNode, textNode.length);
- }
- ed.undoManager.add();
- return Event.cancel(e);
- }
- }
- }
-
- ed.onKeyDown.add(function(_, e) { state = getListKeyState(e); });
- ed.onKeyDown.add(cancelDefaultEvents);
- ed.onKeyDown.add(imageJoiningListItem);
- ed.onKeyDown.add(createNewLi);
-
- if (tinymce.isGecko) {
- ed.onKeyUp.add(fixIndentedListItemForGecko);
- }
- if (tinymce.isIE8) {
- ed.onKeyUp.add(fixIndentedListItemForIE8);
- }
- if (tinymce.isGecko || tinymce.isWebKit) {
- ed.onKeyDown.add(fixDeletingFirstCharOfList);
- }
- if (tinymce.isWebKit) {
- ed.onKeyDown.add(fixDeletingEmptyLiInWebkit);
- }
- },
-
- applyList: function(targetListType, oppositeListType) {
- var t = this, ed = t.ed, dom = ed.dom, applied = [], hasSameType = false, hasOppositeType = false, hasNonList = false, actions,
- selectedBlocks = ed.selection.getSelectedBlocks();
-
- function cleanupBr(e) {
- if (e && e.tagName === 'BR') {
- dom.remove(e);
- }
- }
-
- function makeList(element) {
- var list = dom.create(targetListType), li;
-
- function adjustIndentForNewList(element) {
- // If there's a margin-left, outdent one level to account for the extra list margin.
- if (element.style.marginLeft || element.style.paddingLeft) {
- t.adjustPaddingFunction(false)(element);
- }
- }
-
- if (element.tagName === 'LI') {
- // No change required.
- } else if (element.tagName === 'P' || element.tagName === 'DIV' || element.tagName === 'BODY') {
- processBrs(element, function(startSection, br) {
- doWrapList(startSection, br, element.tagName === 'BODY' ? null : startSection.parentNode);
- li = startSection.parentNode;
- adjustIndentForNewList(li);
- cleanupBr(br);
- });
- if (li) {
- if (li.tagName === 'LI' && (element.tagName === 'P' || selectedBlocks.length > 1)) {
- dom.split(li.parentNode.parentNode, li.parentNode);
- }
- attemptMergeWithAdjacent(li.parentNode, true);
- }
- return;
- } else {
- // Put the list around the element.
- li = dom.create('li');
- dom.insertAfter(li, element);
- li.appendChild(element);
- adjustIndentForNewList(element);
- element = li;
- }
- dom.insertAfter(list, element);
- list.appendChild(element);
- attemptMergeWithAdjacent(list, true);
- applied.push(element);
- }
-
- function doWrapList(start, end, template) {
- var li, n = start, tmp;
- while (!dom.isBlock(start.parentNode) && start.parentNode !== dom.getRoot()) {
- start = dom.split(start.parentNode, start.previousSibling);
- start = start.nextSibling;
- n = start;
- }
- if (template) {
- li = template.cloneNode(true);
- start.parentNode.insertBefore(li, start);
- while (li.firstChild) dom.remove(li.firstChild);
- li = dom.rename(li, 'li');
- } else {
- li = dom.create('li');
- start.parentNode.insertBefore(li, start);
- }
- while (n && n != end) {
- tmp = n.nextSibling;
- li.appendChild(n);
- n = tmp;
- }
- if (li.childNodes.length === 0) {
- li.innerHTML = '<br _mce_bogus="1" />';
- }
- makeList(li);
- }
-
- function processBrs(element, callback) {
- var startSection, previousBR, END_TO_START = 3, START_TO_END = 1,
- breakElements = 'br,ul,ol,p,div,h1,h2,h3,h4,h5,h6,table,blockquote,address,pre,form,center,dl';
-
- function isAnyPartSelected(start, end) {
- var r = dom.createRng(), sel;
- bookmark.keep = true;
- ed.selection.moveToBookmark(bookmark);
- bookmark.keep = false;
- sel = ed.selection.getRng(true);
- if (!end) {
- end = start.parentNode.lastChild;
- }
- r.setStartBefore(start);
- r.setEndAfter(end);
- return !(r.compareBoundaryPoints(END_TO_START, sel) > 0 || r.compareBoundaryPoints(START_TO_END, sel) <= 0);
- }
-
- function nextLeaf(br) {
- if (br.nextSibling)
- return br.nextSibling;
- if (!dom.isBlock(br.parentNode) && br.parentNode !== dom.getRoot())
- return nextLeaf(br.parentNode);
- }
-
- // Split on BRs within the range and process those.
- startSection = element.firstChild;
- // First mark the BRs that have any part of the previous section selected.
- var trailingContentSelected = false;
- each(dom.select(breakElements, element), function(br) {
- if (br.hasAttribute && br.hasAttribute('_mce_bogus')) {
- return true; // Skip the bogus Brs that are put in to appease Firefox and Safari.
- }
- if (isAnyPartSelected(startSection, br)) {
- dom.addClass(br, '_mce_tagged_br');
- startSection = nextLeaf(br);
- }
- });
- trailingContentSelected = (startSection && isAnyPartSelected(startSection, undefined));
- startSection = element.firstChild;
- each(dom.select(breakElements, element), function(br) {
- // Got a section from start to br.
- var tmp = nextLeaf(br);
- if (br.hasAttribute && br.hasAttribute('_mce_bogus')) {
- return true; // Skip the bogus Brs that are put in to appease Firefox and Safari.
- }
- if (dom.hasClass(br, '_mce_tagged_br')) {
- callback(startSection, br, previousBR);
- previousBR = null;
- } else {
- previousBR = br;
- }
- startSection = tmp;
- });
- if (trailingContentSelected) {
- callback(startSection, undefined, previousBR);
- }
- }
-
- function wrapList(element) {
- processBrs(element, function(startSection, br, previousBR) {
- // Need to indent this part
- doWrapList(startSection, br);
- cleanupBr(br);
- cleanupBr(previousBR);
- });
- }
-
- function changeList(element) {
- if (tinymce.inArray(applied, element) !== -1) {
- return;
- }
- if (element.parentNode.tagName === oppositeListType) {
- dom.split(element.parentNode, element);
- makeList(element);
- attemptMergeWithNext(element.parentNode, false);
- }
- applied.push(element);
- }
-
- function convertListItemToParagraph(element) {
- var child, nextChild, mergedElement, splitLast;
- if (tinymce.inArray(applied, element) !== -1) {
- return;
- }
- element = splitNestedLists(element, dom);
- while (dom.is(element.parentNode, 'ol,ul,li')) {
- dom.split(element.parentNode, element);
- }
- // Push the original element we have from the selection, not the renamed one.
- applied.push(element);
- element = dom.rename(element, 'p');
- mergedElement = attemptMergeWithAdjacent(element, false, ed.settings.force_br_newlines);
- if (mergedElement === element) {
- // Now split out any block elements that can't be contained within a P.
- // Manually iterate to ensure we handle modifications correctly (doesn't work with tinymce.each)
- child = element.firstChild;
- while (child) {
- if (dom.isBlock(child)) {
- child = dom.split(child.parentNode, child);
- splitLast = true;
- nextChild = child.nextSibling && child.nextSibling.firstChild;
- } else {
- nextChild = child.nextSibling;
- if (splitLast && child.tagName === 'BR') {
- dom.remove(child);
- }
- splitLast = false;
- }
- child = nextChild;
- }
- }
- }
-
- each(selectedBlocks, function(e) {
- e = findItemToOperateOn(e, dom);
- if (e.tagName === oppositeListType || (e.tagName === 'LI' && e.parentNode.tagName === oppositeListType)) {
- hasOppositeType = true;
- } else if (e.tagName === targetListType || (e.tagName === 'LI' && e.parentNode.tagName === targetListType)) {
- hasSameType = true;
- } else {
- hasNonList = true;
- }
- });
-
- if (hasNonList &&!hasSameType || hasOppositeType || selectedBlocks.length === 0) {
- actions = {
- 'LI': changeList,
- 'H1': makeList,
- 'H2': makeList,
- 'H3': makeList,
- 'H4': makeList,
- 'H5': makeList,
- 'H6': makeList,
- 'P': makeList,
- 'BODY': makeList,
- 'DIV': selectedBlocks.length > 1 ? makeList : wrapList,
- defaultAction: wrapList,
- elements: this.selectedBlocks()
- };
- } else {
- actions = {
- defaultAction: convertListItemToParagraph,
- elements: this.selectedBlocks(),
- processEvenIfEmpty: true
- };
- }
- this.process(actions);
- },
-
- indent: function() {
- var ed = this.ed, dom = ed.dom, indented = [];
-
- function createWrapItem(element) {
- var wrapItem = dom.create('li', { style: 'list-style-type: none;'});
- dom.insertAfter(wrapItem, element);
- return wrapItem;
- }
-
- function createWrapList(element) {
- var wrapItem = createWrapItem(element),
- list = dom.getParent(element, 'ol,ul'),
- listType = list.tagName,
- listStyle = dom.getStyle(list, 'list-style-type'),
- attrs = {},
- wrapList;
- if (listStyle !== '') {
- attrs.style = 'list-style-type: ' + listStyle + ';';
- }
- wrapList = dom.create(listType, attrs);
- wrapItem.appendChild(wrapList);
- return wrapList;
- }
-
- function indentLI(element) {
- if (!hasParentInList(ed, element, indented)) {
- element = splitNestedLists(element, dom);
- var wrapList = createWrapList(element);
- wrapList.appendChild(element);
- attemptMergeWithAdjacent(wrapList.parentNode, false);
- attemptMergeWithAdjacent(wrapList, false);
- indented.push(element);
- }
- }
-
- this.process({
- 'LI': indentLI,
- defaultAction: this.adjustPaddingFunction(true),
- elements: this.selectedBlocks()
- });
-
- },
-
- outdent: function(ui, elements) {
- var t = this, ed = t.ed, dom = ed.dom, outdented = [];
-
- function outdentLI(element) {
- var listElement, targetParent, align;
- if (!hasParentInList(ed, element, outdented)) {
- if (dom.getStyle(element, 'margin-left') !== '' || dom.getStyle(element, 'padding-left') !== '') {
- return t.adjustPaddingFunction(false)(element);
- }
- align = dom.getStyle(element, 'text-align', true);
- if (align === 'center' || align === 'right') {
- dom.setStyle(element, 'text-align', 'left');
- return;
- }
- element = splitNestedLists(element, dom);
- listElement = element.parentNode;
- targetParent = element.parentNode.parentNode;
- if (targetParent.tagName === 'P') {
- dom.split(targetParent, element.parentNode);
- } else {
- dom.split(listElement, element);
- if (targetParent.tagName === 'LI') {
- // Nested list, need to split the LI and go back out to the OL/UL element.
- dom.split(targetParent, element);
- } else if (!dom.is(targetParent, 'ol,ul')) {
- dom.rename(element, 'p');
- }
- }
- outdented.push(element);
- }
- }
-
- var listElements = elements && tinymce.is(elements, 'array') ? elements : this.selectedBlocks();
- this.process({
- 'LI': outdentLI,
- defaultAction: this.adjustPaddingFunction(false),
- elements: listElements
- });
-
- each(outdented, attemptMergeWithAdjacent);
- },
-
- process: function(actions) {
- var t = this, sel = t.ed.selection, dom = t.ed.dom, selectedBlocks, r;
-
- function isEmptyElement(element) {
- var excludeBrsAndBookmarks = tinymce.grep(element.childNodes, function(n) {
- return !(n.nodeName === 'BR' || n.nodeName === 'SPAN' && dom.getAttrib(n, 'data-mce-type') == 'bookmark'
- || n.nodeType == 3 && (n.nodeValue == String.fromCharCode(160) || n.nodeValue == ''));
- });
- return excludeBrsAndBookmarks.length === 0;
- }
-
- function processElement(element) {
- dom.removeClass(element, '_mce_act_on');
- if (!element || element.nodeType !== 1 || ! actions.processEvenIfEmpty && selectedBlocks.length > 1 && isEmptyElement(element)) {
- return;
- }
- element = findItemToOperateOn(element, dom);
- var action = actions[element.tagName];
- if (!action) {
- action = actions.defaultAction;
- }
- action(element);
- }
-
- function recurse(element) {
- t.splitSafeEach(element.childNodes, processElement, true);
- }
-
- function brAtEdgeOfSelection(container, offset) {
- return offset >= 0 && container.hasChildNodes() && offset < container.childNodes.length &&
- container.childNodes[offset].tagName === 'BR';
- }
-
- function isInTable() {
- var n = sel.getNode();
- var p = dom.getParent(n, 'td');
- return p !== null;
- }
-
- selectedBlocks = actions.elements;
-
- r = sel.getRng(true);
- if (!r.collapsed) {
- if (brAtEdgeOfSelection(r.endContainer, r.endOffset - 1)) {
- r.setEnd(r.endContainer, r.endOffset - 1);
- sel.setRng(r);
- }
- if (brAtEdgeOfSelection(r.startContainer, r.startOffset)) {
- r.setStart(r.startContainer, r.startOffset + 1);
- sel.setRng(r);
- }
- }
-
-
- if (tinymce.isIE8) {
- // append a zero sized nbsp so that caret is restored correctly using bookmark
- var s = t.ed.selection.getNode();
- if (s.tagName === 'LI' && !(s.parentNode.lastChild === s)) {
- var i = t.ed.getDoc().createTextNode('\uFEFF');
- s.appendChild(i);
- }
- }
-
- bookmark = sel.getBookmark();
- actions.OL = actions.UL = recurse;
- t.splitSafeEach(selectedBlocks, processElement);
- sel.moveToBookmark(bookmark);
- bookmark = null;
-
- // we avoid doing repaint in a table as this will move the caret out of the table in Firefox 3.6
- if (!isInTable()) {
- // Avoids table or image handles being left behind in Firefox.
- t.ed.execCommand('mceRepaint');
- }
- },
-
- splitSafeEach: function(elements, f, forceClassBase) {
- if (forceClassBase ||
- (tinymce.isGecko &&
- (/Firefox\/[12]\.[0-9]/.test(navigator.userAgent) ||
- /Firefox\/3\.[0-4]/.test(navigator.userAgent)))) {
- this.classBasedEach(elements, f);
- } else {
- each(elements, f);
- }
- },
-
- classBasedEach: function(elements, f) {
- var dom = this.ed.dom, nodes, element;
- // Mark nodes
- each(elements, function(element) {
- dom.addClass(element, '_mce_act_on');
- });
- nodes = dom.select('._mce_act_on');
- while (nodes.length > 0) {
- element = nodes.shift();
- dom.removeClass(element, '_mce_act_on');
- f(element);
- nodes = dom.select('._mce_act_on');
- }
- },
-
- adjustPaddingFunction: function(isIndent) {
- var indentAmount, indentUnits, ed = this.ed;
- indentAmount = ed.settings.indentation;
- indentUnits = /[a-z%]+/i.exec(indentAmount);
- indentAmount = parseInt(indentAmount, 10);
- return function(element) {
- var currentIndent, newIndentAmount;
- currentIndent = parseInt(ed.dom.getStyle(element, 'margin-left') || 0, 10) + parseInt(ed.dom.getStyle(element, 'padding-left') || 0, 10);
- if (isIndent) {
- newIndentAmount = currentIndent + indentAmount;
- } else {
- newIndentAmount = currentIndent - indentAmount;
- }
- ed.dom.setStyle(element, 'padding-left', '');
- ed.dom.setStyle(element, 'margin-left', newIndentAmount > 0 ? newIndentAmount + indentUnits : '');
- };
- },
-
- selectedBlocks: function() {
- var ed = this.ed, selectedBlocks = ed.selection.getSelectedBlocks();
- return selectedBlocks.length == 0 ? [ ed.dom.getRoot() ] : selectedBlocks;
- },
-
- getInfo: function() {
- return {
- longname : 'Lists',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/lists',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
- tinymce.PluginManager.add("lists", tinymce.plugins.Lists);
-}());
diff --git a/program/js/tiny_mce/plugins/media/css/media.css b/program/js/tiny_mce/plugins/media/css/media.css
deleted file mode 100644
index 0c45c7ff6..000000000
--- a/program/js/tiny_mce/plugins/media/css/media.css
+++ /dev/null
@@ -1,17 +0,0 @@
-#id, #name, #hspace, #vspace, #class_name, #align { width: 100px }
-#hspace, #vspace { width: 50px }
-#flash_quality, #flash_align, #flash_scale, #flash_salign, #flash_wmode { width: 100px }
-#flash_base, #flash_flashvars, #html5_altsource1, #html5_altsource2, #html5_poster { width: 240px }
-#width, #height { width: 40px }
-#src, #media_type { width: 250px }
-#class { width: 120px }
-#prev { margin: 0; border: 1px solid black; width: 380px; height: 260px; overflow: auto }
-.panel_wrapper div.current { height: 420px; overflow: auto }
-#flash_options, #shockwave_options, #qt_options, #wmp_options, #rmp_options { display: none }
-.mceAddSelectValue { background-color: #DDDDDD }
-#qt_starttime, #qt_endtime, #qt_fov, #qt_href, #qt_moveid, #qt_moviename, #qt_node, #qt_pan, #qt_qtsrc, #qt_qtsrcchokespeed, #qt_target, #qt_tilt, #qt_urlsubstituten, #qt_volume { width: 70px }
-#wmp_balance, #wmp_baseurl, #wmp_captioningid, #wmp_currentmarker, #wmp_currentposition, #wmp_defaultframe, #wmp_playcount, #wmp_rate, #wmp_uimode, #wmp_volume { width: 70px }
-#rmp_console, #rmp_numloop, #rmp_controls, #rmp_scriptcallbacks { width: 70px }
-#shockwave_swvolume, #shockwave_swframe, #shockwave_swurl, #shockwave_swstretchvalign, #shockwave_swstretchhalign, #shockwave_swstretchstyle { width: 90px }
-#qt_qtsrc { width: 200px }
-iframe {border: 1px solid gray}
diff --git a/program/js/tiny_mce/plugins/media/editor_plugin.js b/program/js/tiny_mce/plugins/media/editor_plugin.js
deleted file mode 100644
index 9ac42e0d2..000000000
--- a/program/js/tiny_mce/plugins/media/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){var b=tinymce.explode("id,name,width,height,style,align,class,hspace,vspace,bgcolor,type"),a=tinymce.makeMap(b.join(",")),f=tinymce.html.Node,d,i,h=tinymce.util.JSON,g;d=[["Flash","d27cdb6e-ae6d-11cf-96b8-444553540000","application/x-shockwave-flash","http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"],["ShockWave","166b1bca-3f9c-11cf-8075-444553540000","application/x-director","http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0"],["WindowsMedia","6bf52a52-394a-11d3-b153-00c04f79faa6,22d6f312-b0f6-11d0-94ab-0080c74c7e95,05589fa1-c356-11ce-bf01-00aa0055595a","application/x-mplayer2","http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701"],["QuickTime","02bf25d5-8c17-4b23-bc80-d3488abddc6b","video/quicktime","http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0"],["RealMedia","cfcdaa03-8be4-11cf-b84b-0020afbbccfa","audio/x-pn-realaudio-plugin","http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"],["Java","8ad9c840-044e-11d1-b3e9-00805f499d93","application/x-java-applet","http://java.sun.com/products/plugin/autodl/jinstall-1_5_0-windows-i586.cab#Version=1,5,0,0"],["Silverlight","dfeaf541-f3e1-4c24-acac-99c30715084a","application/x-silverlight-2"],["Iframe"],["Video"],["EmbeddedAudio"],["Audio"]];function e(j){return typeof(j)=="string"?j.replace(/[^0-9%]/g,""):j}function c(m){var l,j,k;if(m&&!m.splice){j=[];for(k=0;true;k++){if(m[k]){j[k]=m[k]}else{break}}return j}return m}tinymce.create("tinymce.plugins.MediaPlugin",{init:function(n,j){var r=this,l={},m,p,q,k;function o(s){return s&&s.nodeName==="IMG"&&n.dom.hasClass(s,"mceItemMedia")}r.editor=n;r.url=j;i="";for(m=0;m<d.length;m++){k=d[m][0];q={name:k,clsids:tinymce.explode(d[m][1]||""),mimes:tinymce.explode(d[m][2]||""),codebase:d[m][3]};for(p=0;p<q.clsids.length;p++){l["clsid:"+q.clsids[p]]=q}for(p=0;p<q.mimes.length;p++){l[q.mimes[p]]=q}l["mceItem"+k]=q;l[k.toLowerCase()]=q;i+=(i?"|":"")+k}tinymce.each(n.getParam("media_types","video=mp4,m4v,ogv,webm;silverlight=xap;flash=swf,flv;shockwave=dcr;quicktime=mov,qt,mpg,mpeg;shockwave=dcr;windowsmedia=avi,wmv,wm,asf,asx,wmx,wvx;realmedia=rm,ra,ram;java=jar;audio=mp3,ogg").split(";"),function(v){var s,u,t;v=v.split(/=/);u=tinymce.explode(v[1].toLowerCase());for(s=0;s<u.length;s++){t=l[v[0].toLowerCase()];if(t){l[u[s]]=t}}});i=new RegExp("write("+i+")\\(([^)]+)\\)");r.lookup=l;n.onPreInit.add(function(){n.schema.addValidElements("object[id|style|width|height|classid|codebase|*],param[name|value],embed[id|style|width|height|type|src|*],video[*],audio[*],source[*]");n.parser.addNodeFilter("object,embed,video,audio,script,iframe",function(s){var t=s.length;while(t--){r.objectToImg(s[t])}});n.serializer.addNodeFilter("img",function(s,u,t){var v=s.length,w;while(v--){w=s[v];if((w.attr("class")||"").indexOf("mceItemMedia")!==-1){r.imgToObject(w,t)}}})});n.onInit.add(function(){if(n.theme&&n.theme.onResolveName){n.theme.onResolveName.add(function(s,t){if(t.name==="img"&&n.dom.hasClass(t.node,"mceItemMedia")){t.name="media"}})}if(n&&n.plugins.contextmenu){n.plugins.contextmenu.onContextMenu.add(function(t,u,s){if(s.nodeName==="IMG"&&s.className.indexOf("mceItemMedia")!==-1){u.add({title:"media.edit",icon:"media",cmd:"mceMedia"})}})}});n.addCommand("mceMedia",function(){var t,s;s=n.selection.getNode();if(o(s)){t=n.dom.getAttrib(s,"data-mce-json");if(t){t=h.parse(t);tinymce.each(b,function(u){var v=n.dom.getAttrib(s,u);if(v){t[u]=v}});t.type=r.getType(s.className).name.toLowerCase()}}if(!t){t={type:"flash",video:{sources:[]},params:{}}}n.windowManager.open({file:j+"/media.htm",width:430+parseInt(n.getLang("media.delta_width",0)),height:500+parseInt(n.getLang("media.delta_height",0)),inline:1},{plugin_url:j,data:t})});n.addButton("media",{title:"media.desc",cmd:"mceMedia"});n.onNodeChange.add(function(t,s,u){s.setActive("media",o(u))})},convertUrl:function(l,o){var k=this,n=k.editor,m=n.settings,p=m.url_converter,j=m.url_converter_scope||k;if(!l){return l}if(o){return n.documentBaseURI.toAbsolute(l)}return p.call(j,l,"src","object")},getInfo:function(){return{longname:"Media",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/media",version:tinymce.majorVersion+"."+tinymce.minorVersion}},dataToImg:function(m,k){var r=this,o=r.editor,p=o.documentBaseURI,j,q,n,l;m.params.src=r.convertUrl(m.params.src,k);q=m.video.attrs;if(q){q.src=r.convertUrl(q.src,k)}if(q){q.poster=r.convertUrl(q.poster,k)}j=c(m.video.sources);if(j){for(l=0;l<j.length;l++){j[l].src=r.convertUrl(j[l].src,k)}}n=r.editor.dom.create("img",{id:m.id,style:m.style,align:m.align,hspace:m.hspace,vspace:m.vspace,src:r.editor.theme.url+"/img/trans.gif","class":"mceItemMedia mceItem"+r.getType(m.type).name,"data-mce-json":h.serialize(m,"'")});n.width=m.width=e(m.width||(m.type=="audio"?"300":"320"));n.height=m.height=e(m.height||(m.type=="audio"?"32":"240"));return n},dataToHtml:function(j,k){return this.editor.serializer.serialize(this.dataToImg(j,k),{forced_root_block:"",force_absolute:k})},htmlToData:function(l){var k,j,m;m={type:"flash",video:{sources:[]},params:{}};k=this.editor.parser.parse(l);j=k.getAll("img")[0];if(j){m=h.parse(j.attr("data-mce-json"));m.type=this.getType(j.attr("class")).name.toLowerCase();tinymce.each(b,function(n){var o=j.attr(n);if(o){m[n]=o}})}return m},getType:function(m){var k,j,l;j=tinymce.explode(m," ");for(k=0;k<j.length;k++){l=this.lookup[j[k]];if(l){return l}}},imgToObject:function(z,o){var u=this,p=u.editor,C,H,j,t,I,y,G,w,k,E,s,q,A,D,m,x,l,B,F;function r(n,J){var N,M,O,L,K;K=p.getParam("flash_video_player_url",u.convertUrl(u.url+"/moxieplayer.swf"));if(K){N=p.documentBaseURI;G.params.src=K;if(p.getParam("flash_video_player_absvideourl",true)){n=N.toAbsolute(n||"",true);J=N.toAbsolute(J||"",true)}O="";M=p.getParam("flash_video_player_flashvars",{url:"$url",poster:"$poster"});tinymce.each(M,function(Q,P){Q=Q.replace(/\$url/,n||"");Q=Q.replace(/\$poster/,J||"");if(Q.length>0){O+=(O?"&":"")+P+"="+escape(Q)}});if(O.length){G.params.flashvars=O}L=p.getParam("flash_video_player_params",{allowfullscreen:true,allowscriptaccess:true});tinymce.each(L,function(Q,P){G.params[P]=""+Q})}}G=z.attr("data-mce-json");if(!G){return}G=h.parse(G);q=this.getType(z.attr("class"));B=z.attr("data-mce-style");if(!B){B=z.attr("style");if(B){B=p.dom.serializeStyle(p.dom.parseStyle(B,"img"))}}G.width=z.attr("width")||G.width;G.height=z.attr("height")||G.height;if(q.name==="Iframe"){x=new f("iframe",1);tinymce.each(b,function(n){var J=z.attr(n);if(n=="class"&&J){J=J.replace(/mceItem.+ ?/g,"")}if(J&&J.length>0){x.attr(n,J)}});for(I in G.params){x.attr(I,G.params[I])}x.attr({style:B,src:G.params.src});z.replace(x);return}if(this.editor.settings.media_use_script){x=new f("script",1).attr("type","text/javascript");y=new f("#text",3);y.value="write"+q.name+"("+h.serialize(tinymce.extend(G.params,{width:z.attr("width"),height:z.attr("height")}))+");";x.append(y);z.replace(x);return}if(q.name==="Video"&&G.video.sources[0]){C=new f("video",1).attr(tinymce.extend({id:z.attr("id"),width:e(z.attr("width")),height:e(z.attr("height")),style:B},G.video.attrs));if(G.video.attrs){l=G.video.attrs.poster}k=G.video.sources=c(G.video.sources);for(A=0;A<k.length;A++){if(/\.mp4$/.test(k[A].src)){m=k[A].src}}if(!k[0].type){C.attr("src",k[0].src);k.splice(0,1)}for(A=0;A<k.length;A++){w=new f("source",1).attr(k[A]);w.shortEnded=true;C.append(w)}if(m){r(m,l);q=u.getType("flash")}else{G.params.src=""}}if(q.name==="Audio"&&G.video.sources[0]){F=new f("audio",1).attr(tinymce.extend({id:z.attr("id"),width:e(z.attr("width")),height:e(z.attr("height")),style:B},G.video.attrs));if(G.video.attrs){l=G.video.attrs.poster}k=G.video.sources=c(G.video.sources);if(!k[0].type){F.attr("src",k[0].src);k.splice(0,1)}for(A=0;A<k.length;A++){w=new f("source",1).attr(k[A]);w.shortEnded=true;F.append(w)}G.params.src=""}if(q.name==="EmbeddedAudio"){j=new f("embed",1);j.shortEnded=true;j.attr({id:z.attr("id"),width:e(z.attr("width")),height:e(z.attr("height")),style:B,type:z.attr("type")});for(I in G.params){j.attr(I,G.params[I])}tinymce.each(b,function(n){if(G[n]&&n!="type"){j.attr(n,G[n])}});G.params.src=""}if(G.params.src){if(/\.flv$/i.test(G.params.src)){r(G.params.src,"")}if(o&&o.force_absolute){G.params.src=p.documentBaseURI.toAbsolute(G.params.src)}H=new f("object",1).attr({id:z.attr("id"),width:e(z.attr("width")),height:e(z.attr("height")),style:B});tinymce.each(b,function(n){var J=G[n];if(n=="class"&&J){J=J.replace(/mceItem.+ ?/g,"")}if(J&&n!="type"){H.attr(n,J)}});for(I in G.params){s=new f("param",1);s.shortEnded=true;y=G.params[I];if(I==="src"&&q.name==="WindowsMedia"){I="url"}s.attr({name:I,value:y});H.append(s)}if(this.editor.getParam("media_strict",true)){H.attr({data:G.params.src,type:q.mimes[0]})}else{H.attr({classid:"clsid:"+q.clsids[0],codebase:q.codebase});j=new f("embed",1);j.shortEnded=true;j.attr({id:z.attr("id"),width:e(z.attr("width")),height:e(z.attr("height")),style:B,type:q.mimes[0]});for(I in G.params){j.attr(I,G.params[I])}tinymce.each(b,function(n){if(G[n]&&n!="type"){j.attr(n,G[n])}});H.append(j)}if(G.object_html){y=new f("#text",3);y.raw=true;y.value=G.object_html;H.append(y)}if(C){C.append(H)}}if(C){if(G.video_html){y=new f("#text",3);y.raw=true;y.value=G.video_html;C.append(y)}}if(F){if(G.video_html){y=new f("#text",3);y.raw=true;y.value=G.video_html;F.append(y)}}var v=C||F||H||j;if(v){z.replace(v)}else{z.remove()}},objectToImg:function(C){var L,k,F,s,M,N,y,A,x,G,E,t,q,I,B,l,K,o,H=this.lookup,m,z,v=this.editor.settings.url_converter,n=this.editor.settings.url_converter_scope,w,r,D,j;function u(O){return new tinymce.html.Serializer({inner:true,validate:false}).serialize(O)}function J(P,O){return H[(P.attr(O)||"").toLowerCase()]}function p(P){var O=P.replace(/^.*\.([^.]+)$/,"$1");return H[O.toLowerCase()||""]}if(!C.parent){return}if(C.name==="script"){if(C.firstChild){m=i.exec(C.firstChild.value)}if(!m){return}o=m[1];K={video:{},params:h.parse(m[2])};A=K.params.width;x=K.params.height}K=K||{video:{},params:{}};M=new f("img",1);M.attr({src:this.editor.theme.url+"/img/trans.gif"});N=C.name;if(N==="video"||N=="audio"){F=C;L=C.getAll("object")[0];k=C.getAll("embed")[0];A=F.attr("width");x=F.attr("height");y=F.attr("id");K.video={attrs:{},sources:[]};z=K.video.attrs;for(N in F.attributes.map){z[N]=F.attributes.map[N]}B=C.attr("src");if(B){K.video.sources.push({src:v.call(n,B,"src",C.name)})}l=F.getAll("source");for(E=0;E<l.length;E++){B=l[E].remove();K.video.sources.push({src:v.call(n,B.attr("src"),"src","source"),type:B.attr("type"),media:B.attr("media")})}if(z.poster){z.poster=v.call(n,z.poster,"poster",C.name)}}if(C.name==="object"){L=C;k=C.getAll("embed")[0]}if(C.name==="embed"){k=C}if(C.name==="iframe"){s=C;o="Iframe"}if(L){A=A||L.attr("width");x=x||L.attr("height");G=G||L.attr("style");y=y||L.attr("id");w=w||L.attr("hspace");r=r||L.attr("vspace");D=D||L.attr("align");j=j||L.attr("bgcolor");K.name=L.attr("name");I=L.getAll("param");for(E=0;E<I.length;E++){q=I[E];N=q.remove().attr("name");if(!a[N]){K.params[N]=q.attr("value")}}K.params.src=K.params.src||L.attr("data")}if(k){A=A||k.attr("width");x=x||k.attr("height");G=G||k.attr("style");y=y||k.attr("id");w=w||k.attr("hspace");r=r||k.attr("vspace");D=D||k.attr("align");j=j||k.attr("bgcolor");for(N in k.attributes.map){if(!a[N]&&!K.params[N]){K.params[N]=k.attributes.map[N]}}}if(s){A=e(s.attr("width"));x=e(s.attr("height"));G=G||s.attr("style");y=s.attr("id");w=s.attr("hspace");r=s.attr("vspace");D=s.attr("align");j=s.attr("bgcolor");tinymce.each(b,function(O){M.attr(O,s.attr(O))});for(N in s.attributes.map){if(!a[N]&&!K.params[N]){K.params[N]=s.attributes.map[N]}}}if(K.params.movie){K.params.src=K.params.src||K.params.movie;delete K.params.movie}if(K.params.src){K.params.src=v.call(n,K.params.src,"src","object")}if(F){if(C.name==="video"){o=H.video.name}else{if(C.name==="audio"){o=H.audio.name}}}if(L&&!o){o=(J(L,"clsid")||J(L,"classid")||J(L,"type")||{}).name}if(k&&!o){o=(J(k,"type")||p(K.params.src)||{}).name}if(k&&o=="EmbeddedAudio"){K.params.type=k.attr("type")}C.replace(M);if(k){k.remove()}if(L){t=u(L.remove());if(t){K.object_html=t}}if(F){t=u(F.remove());if(t){K.video_html=t}}K.hspace=w;K.vspace=r;K.align=D;K.bgcolor=j;M.attr({id:y,"class":"mceItemMedia mceItem"+(o||"Flash"),style:G,width:A||(C.name=="audio"?"300":"320"),height:x||(C.name=="audio"?"32":"240"),hspace:w,vspace:r,align:D,bgcolor:j,"data-mce-json":h.serialize(K,"'")})}});tinymce.PluginManager.add("media",tinymce.plugins.MediaPlugin)})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/editor_plugin_src.js b/program/js/tiny_mce/plugins/media/editor_plugin_src.js
deleted file mode 100644
index 33a58050e..000000000
--- a/program/js/tiny_mce/plugins/media/editor_plugin_src.js
+++ /dev/null
@@ -1,898 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- var rootAttributes = tinymce.explode('id,name,width,height,style,align,class,hspace,vspace,bgcolor,type'), excludedAttrs = tinymce.makeMap(rootAttributes.join(',')), Node = tinymce.html.Node,
- mediaTypes, scriptRegExp, JSON = tinymce.util.JSON, mimeTypes;
-
- // Media types supported by this plugin
- mediaTypes = [
- // Type, clsid:s, mime types, codebase
- ["Flash", "d27cdb6e-ae6d-11cf-96b8-444553540000", "application/x-shockwave-flash", "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"],
- ["ShockWave", "166b1bca-3f9c-11cf-8075-444553540000", "application/x-director", "http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0"],
- ["WindowsMedia", "6bf52a52-394a-11d3-b153-00c04f79faa6,22d6f312-b0f6-11d0-94ab-0080c74c7e95,05589fa1-c356-11ce-bf01-00aa0055595a", "application/x-mplayer2", "http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701"],
- ["QuickTime", "02bf25d5-8c17-4b23-bc80-d3488abddc6b", "video/quicktime", "http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0"],
- ["RealMedia", "cfcdaa03-8be4-11cf-b84b-0020afbbccfa", "audio/x-pn-realaudio-plugin", "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"],
- ["Java", "8ad9c840-044e-11d1-b3e9-00805f499d93", "application/x-java-applet", "http://java.sun.com/products/plugin/autodl/jinstall-1_5_0-windows-i586.cab#Version=1,5,0,0"],
- ["Silverlight", "dfeaf541-f3e1-4c24-acac-99c30715084a", "application/x-silverlight-2"],
- ["Iframe"],
- ["Video"],
- ["EmbeddedAudio"],
- ["Audio"]
- ];
-
- function normalizeSize(size) {
- return typeof(size) == "string" ? size.replace(/[^0-9%]/g, '') : size;
- }
-
- function toArray(obj) {
- var undef, out, i;
-
- if (obj && !obj.splice) {
- out = [];
-
- for (i = 0; true; i++) {
- if (obj[i])
- out[i] = obj[i];
- else
- break;
- }
-
- return out;
- }
-
- return obj;
- };
-
- tinymce.create('tinymce.plugins.MediaPlugin', {
- init : function(ed, url) {
- var self = this, lookup = {}, i, y, item, name;
-
- function isMediaImg(node) {
- return node && node.nodeName === 'IMG' && ed.dom.hasClass(node, 'mceItemMedia');
- };
-
- self.editor = ed;
- self.url = url;
-
- // Parse media types into a lookup table
- scriptRegExp = '';
- for (i = 0; i < mediaTypes.length; i++) {
- name = mediaTypes[i][0];
-
- item = {
- name : name,
- clsids : tinymce.explode(mediaTypes[i][1] || ''),
- mimes : tinymce.explode(mediaTypes[i][2] || ''),
- codebase : mediaTypes[i][3]
- };
-
- for (y = 0; y < item.clsids.length; y++)
- lookup['clsid:' + item.clsids[y]] = item;
-
- for (y = 0; y < item.mimes.length; y++)
- lookup[item.mimes[y]] = item;
-
- lookup['mceItem' + name] = item;
- lookup[name.toLowerCase()] = item;
-
- scriptRegExp += (scriptRegExp ? '|' : '') + name;
- }
-
- // Handle the media_types setting
- tinymce.each(ed.getParam("media_types",
- "video=mp4,m4v,ogv,webm;" +
- "silverlight=xap;" +
- "flash=swf,flv;" +
- "shockwave=dcr;" +
- "quicktime=mov,qt,mpg,mpeg;" +
- "shockwave=dcr;" +
- "windowsmedia=avi,wmv,wm,asf,asx,wmx,wvx;" +
- "realmedia=rm,ra,ram;" +
- "java=jar;" +
- "audio=mp3,ogg"
- ).split(';'), function(item) {
- var i, extensions, type;
-
- item = item.split(/=/);
- extensions = tinymce.explode(item[1].toLowerCase());
- for (i = 0; i < extensions.length; i++) {
- type = lookup[item[0].toLowerCase()];
-
- if (type)
- lookup[extensions[i]] = type;
- }
- });
-
- scriptRegExp = new RegExp('write(' + scriptRegExp + ')\\(([^)]+)\\)');
- self.lookup = lookup;
-
- ed.onPreInit.add(function() {
- // Allow video elements
- ed.schema.addValidElements('object[id|style|width|height|classid|codebase|*],param[name|value],embed[id|style|width|height|type|src|*],video[*],audio[*],source[*]');
-
- // Convert video elements to image placeholder
- ed.parser.addNodeFilter('object,embed,video,audio,script,iframe', function(nodes) {
- var i = nodes.length;
-
- while (i--)
- self.objectToImg(nodes[i]);
- });
-
- // Convert image placeholders to video elements
- ed.serializer.addNodeFilter('img', function(nodes, name, args) {
- var i = nodes.length, node;
-
- while (i--) {
- node = nodes[i];
- if ((node.attr('class') || '').indexOf('mceItemMedia') !== -1)
- self.imgToObject(node, args);
- }
- });
- });
-
- ed.onInit.add(function() {
- // Display "media" instead of "img" in element path
- if (ed.theme && ed.theme.onResolveName) {
- ed.theme.onResolveName.add(function(theme, path_object) {
- if (path_object.name === 'img' && ed.dom.hasClass(path_object.node, 'mceItemMedia'))
- path_object.name = 'media';
- });
- }
-
- // Add contect menu if it's loaded
- if (ed && ed.plugins.contextmenu) {
- ed.plugins.contextmenu.onContextMenu.add(function(plugin, menu, element) {
- if (element.nodeName === 'IMG' && element.className.indexOf('mceItemMedia') !== -1)
- menu.add({title : 'media.edit', icon : 'media', cmd : 'mceMedia'});
- });
- }
- });
-
- // Register commands
- ed.addCommand('mceMedia', function() {
- var data, img;
-
- img = ed.selection.getNode();
- if (isMediaImg(img)) {
- data = ed.dom.getAttrib(img, 'data-mce-json');
- if (data) {
- data = JSON.parse(data);
-
- // Add some extra properties to the data object
- tinymce.each(rootAttributes, function(name) {
- var value = ed.dom.getAttrib(img, name);
-
- if (value)
- data[name] = value;
- });
-
- data.type = self.getType(img.className).name.toLowerCase();
- }
- }
-
- if (!data) {
- data = {
- type : 'flash',
- video: {sources:[]},
- params: {}
- };
- }
-
- ed.windowManager.open({
- file : url + '/media.htm',
- width : 430 + parseInt(ed.getLang('media.delta_width', 0)),
- height : 500 + parseInt(ed.getLang('media.delta_height', 0)),
- inline : 1
- }, {
- plugin_url : url,
- data : data
- });
- });
-
- // Register buttons
- ed.addButton('media', {title : 'media.desc', cmd : 'mceMedia'});
-
- // Update media selection status
- ed.onNodeChange.add(function(ed, cm, node) {
- cm.setActive('media', isMediaImg(node));
- });
- },
-
- convertUrl : function(url, force_absolute) {
- var self = this, editor = self.editor, settings = editor.settings,
- urlConverter = settings.url_converter,
- urlConverterScope = settings.url_converter_scope || self;
-
- if (!url)
- return url;
-
- if (force_absolute)
- return editor.documentBaseURI.toAbsolute(url);
-
- return urlConverter.call(urlConverterScope, url, 'src', 'object');
- },
-
- getInfo : function() {
- return {
- longname : 'Media',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/media',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- },
-
- /**
- * Converts the JSON data object to an img node.
- */
- dataToImg : function(data, force_absolute) {
- var self = this, editor = self.editor, baseUri = editor.documentBaseURI, sources, attrs, img, i;
-
- data.params.src = self.convertUrl(data.params.src, force_absolute);
-
- attrs = data.video.attrs;
- if (attrs)
- attrs.src = self.convertUrl(attrs.src, force_absolute);
-
- if (attrs)
- attrs.poster = self.convertUrl(attrs.poster, force_absolute);
-
- sources = toArray(data.video.sources);
- if (sources) {
- for (i = 0; i < sources.length; i++)
- sources[i].src = self.convertUrl(sources[i].src, force_absolute);
- }
-
- img = self.editor.dom.create('img', {
- id : data.id,
- style : data.style,
- align : data.align,
- hspace : data.hspace,
- vspace : data.vspace,
- src : self.editor.theme.url + '/img/trans.gif',
- 'class' : 'mceItemMedia mceItem' + self.getType(data.type).name,
- 'data-mce-json' : JSON.serialize(data, "'")
- });
-
- img.width = data.width = normalizeSize(data.width || (data.type == 'audio' ? "300" : "320"));
- img.height = data.height = normalizeSize(data.height || (data.type == 'audio' ? "32" : "240"));
-
- return img;
- },
-
- /**
- * Converts the JSON data object to a HTML string.
- */
- dataToHtml : function(data, force_absolute) {
- return this.editor.serializer.serialize(this.dataToImg(data, force_absolute), {forced_root_block : '', force_absolute : force_absolute});
- },
-
- /**
- * Converts the JSON data object to a HTML string.
- */
- htmlToData : function(html) {
- var fragment, img, data;
-
- data = {
- type : 'flash',
- video: {sources:[]},
- params: {}
- };
-
- fragment = this.editor.parser.parse(html);
- img = fragment.getAll('img')[0];
-
- if (img) {
- data = JSON.parse(img.attr('data-mce-json'));
- data.type = this.getType(img.attr('class')).name.toLowerCase();
-
- // Add some extra properties to the data object
- tinymce.each(rootAttributes, function(name) {
- var value = img.attr(name);
-
- if (value)
- data[name] = value;
- });
- }
-
- return data;
- },
-
- /**
- * Get type item by extension, class, clsid or mime type.
- *
- * @method getType
- * @param {String} value Value to get type item by.
- * @return {Object} Type item object or undefined.
- */
- getType : function(value) {
- var i, values, typeItem;
-
- // Find type by checking the classes
- values = tinymce.explode(value, ' ');
- for (i = 0; i < values.length; i++) {
- typeItem = this.lookup[values[i]];
-
- if (typeItem)
- return typeItem;
- }
- },
-
- /**
- * Converts a tinymce.html.Node image element to video/object/embed.
- */
- imgToObject : function(node, args) {
- var self = this, editor = self.editor, video, object, embed, iframe, name, value, data,
- source, sources, params, param, typeItem, i, item, mp4Source, replacement,
- posterSrc, style, audio;
-
- // Adds the flash player
- function addPlayer(video_src, poster_src) {
- var baseUri, flashVars, flashVarsOutput, params, flashPlayer;
-
- flashPlayer = editor.getParam('flash_video_player_url', self.convertUrl(self.url + '/moxieplayer.swf'));
- if (flashPlayer) {
- baseUri = editor.documentBaseURI;
- data.params.src = flashPlayer;
-
- // Convert the movie url to absolute urls
- if (editor.getParam('flash_video_player_absvideourl', true)) {
- video_src = baseUri.toAbsolute(video_src || '', true);
- poster_src = baseUri.toAbsolute(poster_src || '', true);
- }
-
- // Generate flash vars
- flashVarsOutput = '';
- flashVars = editor.getParam('flash_video_player_flashvars', {url : '$url', poster : '$poster'});
- tinymce.each(flashVars, function(value, name) {
- // Replace $url and $poster variables in flashvars value
- value = value.replace(/\$url/, video_src || '');
- value = value.replace(/\$poster/, poster_src || '');
-
- if (value.length > 0)
- flashVarsOutput += (flashVarsOutput ? '&' : '') + name + '=' + escape(value);
- });
-
- if (flashVarsOutput.length)
- data.params.flashvars = flashVarsOutput;
-
- params = editor.getParam('flash_video_player_params', {
- allowfullscreen: true,
- allowscriptaccess: true
- });
-
- tinymce.each(params, function(value, name) {
- data.params[name] = "" + value;
- });
- }
- };
-
- data = node.attr('data-mce-json');
- if (!data)
- return;
-
- data = JSON.parse(data);
- typeItem = this.getType(node.attr('class'));
-
- style = node.attr('data-mce-style');
- if (!style) {
- style = node.attr('style');
-
- if (style)
- style = editor.dom.serializeStyle(editor.dom.parseStyle(style, 'img'));
- }
-
- // Use node width/height to override the data width/height when the placeholder is resized
- data.width = node.attr('width') || data.width;
- data.height = node.attr('height') || data.height;
-
- // Handle iframe
- if (typeItem.name === 'Iframe') {
- replacement = new Node('iframe', 1);
-
- tinymce.each(rootAttributes, function(name) {
- var value = node.attr(name);
-
- if (name == 'class' && value)
- value = value.replace(/mceItem.+ ?/g, '');
-
- if (value && value.length > 0)
- replacement.attr(name, value);
- });
-
- for (name in data.params)
- replacement.attr(name, data.params[name]);
-
- replacement.attr({
- style: style,
- src: data.params.src
- });
-
- node.replace(replacement);
-
- return;
- }
-
- // Handle scripts
- if (this.editor.settings.media_use_script) {
- replacement = new Node('script', 1).attr('type', 'text/javascript');
-
- value = new Node('#text', 3);
- value.value = 'write' + typeItem.name + '(' + JSON.serialize(tinymce.extend(data.params, {
- width: node.attr('width'),
- height: node.attr('height')
- })) + ');';
-
- replacement.append(value);
- node.replace(replacement);
-
- return;
- }
-
- // Add HTML5 video element
- if (typeItem.name === 'Video' && data.video.sources[0]) {
- // Create new object element
- video = new Node('video', 1).attr(tinymce.extend({
- id : node.attr('id'),
- width: normalizeSize(node.attr('width')),
- height: normalizeSize(node.attr('height')),
- style : style
- }, data.video.attrs));
-
- // Get poster source and use that for flash fallback
- if (data.video.attrs)
- posterSrc = data.video.attrs.poster;
-
- sources = data.video.sources = toArray(data.video.sources);
- for (i = 0; i < sources.length; i++) {
- if (/\.mp4$/.test(sources[i].src))
- mp4Source = sources[i].src;
- }
-
- if (!sources[0].type) {
- video.attr('src', sources[0].src);
- sources.splice(0, 1);
- }
-
- for (i = 0; i < sources.length; i++) {
- source = new Node('source', 1).attr(sources[i]);
- source.shortEnded = true;
- video.append(source);
- }
-
- // Create flash fallback for video if we have a mp4 source
- if (mp4Source) {
- addPlayer(mp4Source, posterSrc);
- typeItem = self.getType('flash');
- } else
- data.params.src = '';
- }
-
- // Add HTML5 audio element
- if (typeItem.name === 'Audio' && data.video.sources[0]) {
- // Create new object element
- audio = new Node('audio', 1).attr(tinymce.extend({
- id : node.attr('id'),
- width: normalizeSize(node.attr('width')),
- height: normalizeSize(node.attr('height')),
- style : style
- }, data.video.attrs));
-
- // Get poster source and use that for flash fallback
- if (data.video.attrs)
- posterSrc = data.video.attrs.poster;
-
- sources = data.video.sources = toArray(data.video.sources);
- if (!sources[0].type) {
- audio.attr('src', sources[0].src);
- sources.splice(0, 1);
- }
-
- for (i = 0; i < sources.length; i++) {
- source = new Node('source', 1).attr(sources[i]);
- source.shortEnded = true;
- audio.append(source);
- }
-
- data.params.src = '';
- }
-
- if (typeItem.name === 'EmbeddedAudio') {
- embed = new Node('embed', 1);
- embed.shortEnded = true;
- embed.attr({
- id: node.attr('id'),
- width: normalizeSize(node.attr('width')),
- height: normalizeSize(node.attr('height')),
- style : style,
- type: node.attr('type')
- });
-
- for (name in data.params)
- embed.attr(name, data.params[name]);
-
- tinymce.each(rootAttributes, function(name) {
- if (data[name] && name != 'type')
- embed.attr(name, data[name]);
- });
-
- data.params.src = '';
- }
-
- // Do we have a params src then we can generate object
- if (data.params.src) {
- // Is flv movie add player for it
- if (/\.flv$/i.test(data.params.src))
- addPlayer(data.params.src, '');
-
- if (args && args.force_absolute)
- data.params.src = editor.documentBaseURI.toAbsolute(data.params.src);
-
- // Create new object element
- object = new Node('object', 1).attr({
- id : node.attr('id'),
- width: normalizeSize(node.attr('width')),
- height: normalizeSize(node.attr('height')),
- style : style
- });
-
- tinymce.each(rootAttributes, function(name) {
- var value = data[name];
-
- if (name == 'class' && value)
- value = value.replace(/mceItem.+ ?/g, '');
-
- if (value && name != 'type')
- object.attr(name, value);
- });
-
- // Add params
- for (name in data.params) {
- param = new Node('param', 1);
- param.shortEnded = true;
- value = data.params[name];
-
- // Windows media needs to use url instead of src for the media URL
- if (name === 'src' && typeItem.name === 'WindowsMedia')
- name = 'url';
-
- param.attr({name: name, value: value});
- object.append(param);
- }
-
- // Setup add type and classid if strict is disabled
- if (this.editor.getParam('media_strict', true)) {
- object.attr({
- data: data.params.src,
- type: typeItem.mimes[0]
- });
- } else {
- object.attr({
- classid: "clsid:" + typeItem.clsids[0],
- codebase: typeItem.codebase
- });
-
- embed = new Node('embed', 1);
- embed.shortEnded = true;
- embed.attr({
- id: node.attr('id'),
- width: normalizeSize(node.attr('width')),
- height: normalizeSize(node.attr('height')),
- style : style,
- type: typeItem.mimes[0]
- });
-
- for (name in data.params)
- embed.attr(name, data.params[name]);
-
- tinymce.each(rootAttributes, function(name) {
- if (data[name] && name != 'type')
- embed.attr(name, data[name]);
- });
-
- object.append(embed);
- }
-
- // Insert raw HTML
- if (data.object_html) {
- value = new Node('#text', 3);
- value.raw = true;
- value.value = data.object_html;
- object.append(value);
- }
-
- // Append object to video element if it exists
- if (video)
- video.append(object);
- }
-
- if (video) {
- // Insert raw HTML
- if (data.video_html) {
- value = new Node('#text', 3);
- value.raw = true;
- value.value = data.video_html;
- video.append(value);
- }
- }
-
- if (audio) {
- // Insert raw HTML
- if (data.video_html) {
- value = new Node('#text', 3);
- value.raw = true;
- value.value = data.video_html;
- audio.append(value);
- }
- }
-
- var n = video || audio || object || embed;
- if (n)
- node.replace(n);
- else
- node.remove();
- },
-
- /**
- * Converts a tinymce.html.Node video/object/embed to an img element.
- *
- * The video/object/embed will be converted into an image placeholder with a JSON data attribute like this:
- * <img class="mceItemMedia mceItemFlash" width="100" height="100" data-mce-json="{..}" />
- *
- * The JSON structure will be like this:
- * {'params':{'flashvars':'something','quality':'high','src':'someurl'}, 'video':{'sources':[{src: 'someurl', type: 'video/mp4'}]}}
- */
- objectToImg : function(node) {
- var object, embed, video, iframe, img, name, id, width, height, style, i, html,
- param, params, source, sources, data, type, lookup = this.lookup,
- matches, attrs, urlConverter = this.editor.settings.url_converter,
- urlConverterScope = this.editor.settings.url_converter_scope,
- hspace, vspace, align, bgcolor;
-
- function getInnerHTML(node) {
- return new tinymce.html.Serializer({
- inner: true,
- validate: false
- }).serialize(node);
- };
-
- function lookupAttribute(o, attr) {
- return lookup[(o.attr(attr) || '').toLowerCase()];
- }
-
- function lookupExtension(src) {
- var ext = src.replace(/^.*\.([^.]+)$/, '$1');
- return lookup[ext.toLowerCase() || ''];
- }
-
- // If node isn't in document
- if (!node.parent)
- return;
-
- // Handle media scripts
- if (node.name === 'script') {
- if (node.firstChild)
- matches = scriptRegExp.exec(node.firstChild.value);
-
- if (!matches)
- return;
-
- type = matches[1];
- data = {video : {}, params : JSON.parse(matches[2])};
- width = data.params.width;
- height = data.params.height;
- }
-
- // Setup data objects
- data = data || {
- video : {},
- params : {}
- };
-
- // Setup new image object
- img = new Node('img', 1);
- img.attr({
- src : this.editor.theme.url + '/img/trans.gif'
- });
-
- // Video element
- name = node.name;
- if (name === 'video' || name == 'audio') {
- video = node;
- object = node.getAll('object')[0];
- embed = node.getAll('embed')[0];
- width = video.attr('width');
- height = video.attr('height');
- id = video.attr('id');
- data.video = {attrs : {}, sources : []};
-
- // Get all video attributes
- attrs = data.video.attrs;
- for (name in video.attributes.map)
- attrs[name] = video.attributes.map[name];
-
- source = node.attr('src');
- if (source)
- data.video.sources.push({src : urlConverter.call(urlConverterScope, source, 'src', node.name)});
-
- // Get all sources
- sources = video.getAll("source");
- for (i = 0; i < sources.length; i++) {
- source = sources[i].remove();
-
- data.video.sources.push({
- src: urlConverter.call(urlConverterScope, source.attr('src'), 'src', 'source'),
- type: source.attr('type'),
- media: source.attr('media')
- });
- }
-
- // Convert the poster URL
- if (attrs.poster)
- attrs.poster = urlConverter.call(urlConverterScope, attrs.poster, 'poster', node.name);
- }
-
- // Object element
- if (node.name === 'object') {
- object = node;
- embed = node.getAll('embed')[0];
- }
-
- // Embed element
- if (node.name === 'embed')
- embed = node;
-
- // Iframe element
- if (node.name === 'iframe') {
- iframe = node;
- type = 'Iframe';
- }
-
- if (object) {
- // Get width/height
- width = width || object.attr('width');
- height = height || object.attr('height');
- style = style || object.attr('style');
- id = id || object.attr('id');
- hspace = hspace || object.attr('hspace');
- vspace = vspace || object.attr('vspace');
- align = align || object.attr('align');
- bgcolor = bgcolor || object.attr('bgcolor');
- data.name = object.attr('name');
-
- // Get all object params
- params = object.getAll("param");
- for (i = 0; i < params.length; i++) {
- param = params[i];
- name = param.remove().attr('name');
-
- if (!excludedAttrs[name])
- data.params[name] = param.attr('value');
- }
-
- data.params.src = data.params.src || object.attr('data');
- }
-
- if (embed) {
- // Get width/height
- width = width || embed.attr('width');
- height = height || embed.attr('height');
- style = style || embed.attr('style');
- id = id || embed.attr('id');
- hspace = hspace || embed.attr('hspace');
- vspace = vspace || embed.attr('vspace');
- align = align || embed.attr('align');
- bgcolor = bgcolor || embed.attr('bgcolor');
-
- // Get all embed attributes
- for (name in embed.attributes.map) {
- if (!excludedAttrs[name] && !data.params[name])
- data.params[name] = embed.attributes.map[name];
- }
- }
-
- if (iframe) {
- // Get width/height
- width = normalizeSize(iframe.attr('width'));
- height = normalizeSize(iframe.attr('height'));
- style = style || iframe.attr('style');
- id = iframe.attr('id');
- hspace = iframe.attr('hspace');
- vspace = iframe.attr('vspace');
- align = iframe.attr('align');
- bgcolor = iframe.attr('bgcolor');
-
- tinymce.each(rootAttributes, function(name) {
- img.attr(name, iframe.attr(name));
- });
-
- // Get all iframe attributes
- for (name in iframe.attributes.map) {
- if (!excludedAttrs[name] && !data.params[name])
- data.params[name] = iframe.attributes.map[name];
- }
- }
-
- // Use src not movie
- if (data.params.movie) {
- data.params.src = data.params.src || data.params.movie;
- delete data.params.movie;
- }
-
- // Convert the URL to relative/absolute depending on configuration
- if (data.params.src)
- data.params.src = urlConverter.call(urlConverterScope, data.params.src, 'src', 'object');
-
- if (video) {
- if (node.name === 'video')
- type = lookup.video.name;
- else if (node.name === 'audio')
- type = lookup.audio.name;
- }
-
- if (object && !type)
- type = (lookupAttribute(object, 'clsid') || lookupAttribute(object, 'classid') || lookupAttribute(object, 'type') || {}).name;
-
- if (embed && !type)
- type = (lookupAttribute(embed, 'type') || lookupExtension(data.params.src) || {}).name;
-
- // for embedded audio we preserve the original specified type
- if (embed && type == 'EmbeddedAudio') {
- data.params.type = embed.attr('type');
- }
-
- // Replace the video/object/embed element with a placeholder image containing the data
- node.replace(img);
-
- // Remove embed
- if (embed)
- embed.remove();
-
- // Serialize the inner HTML of the object element
- if (object) {
- html = getInnerHTML(object.remove());
-
- if (html)
- data.object_html = html;
- }
-
- // Serialize the inner HTML of the video element
- if (video) {
- html = getInnerHTML(video.remove());
-
- if (html)
- data.video_html = html;
- }
-
- data.hspace = hspace;
- data.vspace = vspace;
- data.align = align;
- data.bgcolor = bgcolor;
-
- // Set width/height of placeholder
- img.attr({
- id : id,
- 'class' : 'mceItemMedia mceItem' + (type || 'Flash'),
- style : style,
- width : width || (node.name == 'audio' ? "300" : "320"),
- height : height || (node.name == 'audio' ? "32" : "240"),
- hspace : hspace,
- vspace : vspace,
- align : align,
- bgcolor : bgcolor,
- "data-mce-json" : JSON.serialize(data, "'")
- });
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('media', tinymce.plugins.MediaPlugin);
-})();
diff --git a/program/js/tiny_mce/plugins/media/js/embed.js b/program/js/tiny_mce/plugins/media/js/embed.js
deleted file mode 100644
index f8dc81052..000000000
--- a/program/js/tiny_mce/plugins/media/js/embed.js
+++ /dev/null
@@ -1,73 +0,0 @@
-/**
- * This script contains embed functions for common plugins. This scripts are complety free to use for any purpose.
- */
-
-function writeFlash(p) {
- writeEmbed(
- 'D27CDB6E-AE6D-11cf-96B8-444553540000',
- 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
- 'application/x-shockwave-flash',
- p
- );
-}
-
-function writeShockWave(p) {
- writeEmbed(
- '166B1BCA-3F9C-11CF-8075-444553540000',
- 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0',
- 'application/x-director',
- p
- );
-}
-
-function writeQuickTime(p) {
- writeEmbed(
- '02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',
- 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0',
- 'video/quicktime',
- p
- );
-}
-
-function writeRealMedia(p) {
- writeEmbed(
- 'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA',
- 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
- 'audio/x-pn-realaudio-plugin',
- p
- );
-}
-
-function writeWindowsMedia(p) {
- p.url = p.src;
- writeEmbed(
- '6BF52A52-394A-11D3-B153-00C04F79FAA6',
- 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701',
- 'application/x-mplayer2',
- p
- );
-}
-
-function writeEmbed(cls, cb, mt, p) {
- var h = '', n;
-
- h += '<object classid="clsid:' + cls + '" codebase="' + cb + '"';
- h += typeof(p.id) != "undefined" ? 'id="' + p.id + '"' : '';
- h += typeof(p.name) != "undefined" ? 'name="' + p.name + '"' : '';
- h += typeof(p.width) != "undefined" ? 'width="' + p.width + '"' : '';
- h += typeof(p.height) != "undefined" ? 'height="' + p.height + '"' : '';
- h += typeof(p.align) != "undefined" ? 'align="' + p.align + '"' : '';
- h += '>';
-
- for (n in p)
- h += '<param name="' + n + '" value="' + p[n] + '">';
-
- h += '<embed type="' + mt + '"';
-
- for (n in p)
- h += n + '="' + p[n] + '" ';
-
- h += '></embed></object>';
-
- document.write(h);
-}
diff --git a/program/js/tiny_mce/plugins/media/js/media.js b/program/js/tiny_mce/plugins/media/js/media.js
deleted file mode 100644
index 89cea2a41..000000000
--- a/program/js/tiny_mce/plugins/media/js/media.js
+++ /dev/null
@@ -1,513 +0,0 @@
-(function() {
- var url;
-
- if (url = tinyMCEPopup.getParam("media_external_list_url"))
- document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');
-
- function get(id) {
- return document.getElementById(id);
- }
-
- function clone(obj) {
- var i, len, copy, attr;
-
- if (null == obj || "object" != typeof obj)
- return obj;
-
- // Handle Array
- if ('length' in obj) {
- copy = [];
-
- for (i = 0, len = obj.length; i < len; ++i) {
- copy[i] = clone(obj[i]);
- }
-
- return copy;
- }
-
- // Handle Object
- copy = {};
- for (attr in obj) {
- if (obj.hasOwnProperty(attr))
- copy[attr] = clone(obj[attr]);
- }
-
- return copy;
- }
-
- function getVal(id) {
- var elm = get(id);
-
- if (elm.nodeName == "SELECT")
- return elm.options[elm.selectedIndex].value;
-
- if (elm.type == "checkbox")
- return elm.checked;
-
- return elm.value;
- }
-
- function setVal(id, value, name) {
- if (typeof(value) != 'undefined' && value != null) {
- var elm = get(id);
-
- if (elm.nodeName == "SELECT")
- selectByValue(document.forms[0], id, value);
- else if (elm.type == "checkbox") {
- if (typeof(value) == 'string') {
- value = value.toLowerCase();
- value = (!name && value === 'true') || (name && value === name.toLowerCase());
- }
- elm.checked = !!value;
- } else
- elm.value = value;
- }
- }
-
- window.Media = {
- init : function() {
- var html, editor, self = this;
-
- self.editor = editor = tinyMCEPopup.editor;
-
- // Setup file browsers and color pickers
- get('filebrowsercontainer').innerHTML = getBrowserHTML('filebrowser','src','media','media');
- get('qtsrcfilebrowsercontainer').innerHTML = getBrowserHTML('qtsrcfilebrowser','quicktime_qtsrc','media','media');
- get('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
- get('video_altsource1_filebrowser').innerHTML = getBrowserHTML('video_filebrowser_altsource1','video_altsource1','media','media');
- get('video_altsource2_filebrowser').innerHTML = getBrowserHTML('video_filebrowser_altsource2','video_altsource2','media','media');
- get('audio_altsource1_filebrowser').innerHTML = getBrowserHTML('audio_filebrowser_altsource1','audio_altsource1','media','media');
- get('audio_altsource2_filebrowser').innerHTML = getBrowserHTML('audio_filebrowser_altsource2','audio_altsource2','media','media');
- get('video_poster_filebrowser').innerHTML = getBrowserHTML('filebrowser_poster','video_poster','image','media');
-
- html = self.getMediaListHTML('medialist', 'src', 'media', 'media');
- if (html == "")
- get("linklistrow").style.display = 'none';
- else
- get("linklistcontainer").innerHTML = html;
-
- if (isVisible('filebrowser'))
- get('src').style.width = '230px';
-
- if (isVisible('video_filebrowser_altsource1'))
- get('video_altsource1').style.width = '220px';
-
- if (isVisible('video_filebrowser_altsource2'))
- get('video_altsource2').style.width = '220px';
-
- if (isVisible('audio_filebrowser_altsource1'))
- get('audio_altsource1').style.width = '220px';
-
- if (isVisible('audio_filebrowser_altsource2'))
- get('audio_altsource2').style.width = '220px';
-
- if (isVisible('filebrowser_poster'))
- get('video_poster').style.width = '220px';
-
- editor.dom.setOuterHTML(get('media_type'), self.getMediaTypeHTML(editor));
-
- self.setDefaultDialogSettings(editor);
- self.data = clone(tinyMCEPopup.getWindowArg('data'));
- self.dataToForm();
- self.preview();
-
- updateColor('bgcolor_pick', 'bgcolor');
- },
-
- insert : function() {
- var editor = tinyMCEPopup.editor;
-
- this.formToData();
- editor.execCommand('mceRepaint');
- tinyMCEPopup.restoreSelection();
- editor.selection.setNode(editor.plugins.media.dataToImg(this.data));
- tinyMCEPopup.close();
- },
-
- preview : function() {
- get('prev').innerHTML = this.editor.plugins.media.dataToHtml(this.data, true);
- },
-
- moveStates : function(to_form, field) {
- var data = this.data, editor = this.editor,
- mediaPlugin = editor.plugins.media, ext, src, typeInfo, defaultStates, src;
-
- defaultStates = {
- // QuickTime
- quicktime_autoplay : true,
- quicktime_controller : true,
-
- // Flash
- flash_play : true,
- flash_loop : true,
- flash_menu : true,
-
- // WindowsMedia
- windowsmedia_autostart : true,
- windowsmedia_enablecontextmenu : true,
- windowsmedia_invokeurls : true,
-
- // RealMedia
- realmedia_autogotourl : true,
- realmedia_imagestatus : true
- };
-
- function parseQueryParams(str) {
- var out = {};
-
- if (str) {
- tinymce.each(str.split('&'), function(item) {
- var parts = item.split('=');
-
- out[unescape(parts[0])] = unescape(parts[1]);
- });
- }
-
- return out;
- };
-
- function setOptions(type, names) {
- var i, name, formItemName, value, list;
-
- if (type == data.type || type == 'global') {
- names = tinymce.explode(names);
- for (i = 0; i < names.length; i++) {
- name = names[i];
- formItemName = type == 'global' ? name : type + '_' + name;
-
- if (type == 'global')
- list = data;
- else if (type == 'video' || type == 'audio') {
- list = data.video.attrs;
-
- if (!list && !to_form)
- data.video.attrs = list = {};
- } else
- list = data.params;
-
- if (list) {
- if (to_form) {
- setVal(formItemName, list[name], type == 'video' || type == 'audio' ? name : '');
- } else {
- delete list[name];
-
- value = getVal(formItemName);
- if ((type == 'video' || type == 'audio') && value === true)
- value = name;
-
- if (defaultStates[formItemName]) {
- if (value !== defaultStates[formItemName]) {
- value = "" + value;
- list[name] = value;
- }
- } else if (value) {
- value = "" + value;
- list[name] = value;
- }
- }
- }
- }
- }
- }
-
- if (!to_form) {
- data.type = get('media_type').options[get('media_type').selectedIndex].value;
- data.width = getVal('width');
- data.height = getVal('height');
-
- // Switch type based on extension
- src = getVal('src');
- if (field == 'src') {
- ext = src.replace(/^.*\.([^.]+)$/, '$1');
- if (typeInfo = mediaPlugin.getType(ext))
- data.type = typeInfo.name.toLowerCase();
-
- setVal('media_type', data.type);
- }
-
- if (data.type == "video" || data.type == "audio") {
- if (!data.video.sources)
- data.video.sources = [];
-
- data.video.sources[0] = {src: getVal('src')};
- }
- }
-
- // Hide all fieldsets and show the one active
- get('video_options').style.display = 'none';
- get('audio_options').style.display = 'none';
- get('flash_options').style.display = 'none';
- get('quicktime_options').style.display = 'none';
- get('shockwave_options').style.display = 'none';
- get('windowsmedia_options').style.display = 'none';
- get('realmedia_options').style.display = 'none';
- get('embeddedaudio_options').style.display = 'none';
-
- if (get(data.type + '_options'))
- get(data.type + '_options').style.display = 'block';
-
- setVal('media_type', data.type);
-
- setOptions('flash', 'play,loop,menu,swliveconnect,quality,scale,salign,wmode,base,flashvars');
- setOptions('quicktime', 'loop,autoplay,cache,controller,correction,enablejavascript,kioskmode,autohref,playeveryframe,targetcache,scale,starttime,endtime,target,qtsrcchokespeed,volume,qtsrc');
- setOptions('shockwave', 'sound,progress,autostart,swliveconnect,swvolume,swstretchstyle,swstretchhalign,swstretchvalign');
- setOptions('windowsmedia', 'autostart,enabled,enablecontextmenu,fullscreen,invokeurls,mute,stretchtofit,windowlessvideo,balance,baseurl,captioningid,currentmarker,currentposition,defaultframe,playcount,rate,uimode,volume');
- setOptions('realmedia', 'autostart,loop,autogotourl,center,imagestatus,maintainaspect,nojava,prefetch,shuffle,console,controls,numloop,scriptcallbacks');
- setOptions('video', 'poster,autoplay,loop,muted,preload,controls');
- setOptions('audio', 'autoplay,loop,preload,controls');
- setOptions('embeddedaudio', 'autoplay,loop,controls');
- setOptions('global', 'id,name,vspace,hspace,bgcolor,align,width,height');
-
- if (to_form) {
- if (data.type == 'video') {
- if (data.video.sources[0])
- setVal('src', data.video.sources[0].src);
-
- src = data.video.sources[1];
- if (src)
- setVal('video_altsource1', src.src);
-
- src = data.video.sources[2];
- if (src)
- setVal('video_altsource2', src.src);
- } else if (data.type == 'audio') {
- if (data.video.sources[0])
- setVal('src', data.video.sources[0].src);
-
- src = data.video.sources[1];
- if (src)
- setVal('audio_altsource1', src.src);
-
- src = data.video.sources[2];
- if (src)
- setVal('audio_altsource2', src.src);
- } else {
- // Check flash vars
- if (data.type == 'flash') {
- tinymce.each(editor.getParam('flash_video_player_flashvars', {url : '$url', poster : '$poster'}), function(value, name) {
- if (value == '$url')
- data.params.src = parseQueryParams(data.params.flashvars)[name] || data.params.src || '';
- });
- }
-
- setVal('src', data.params.src);
- }
- } else {
- src = getVal("src");
-
- // YouTube Embed
- if (src.match(/youtube\.com\/embed\/\w+/)) {
- data.width = 425;
- data.height = 350;
- data.params.frameborder = '0';
- data.type = 'iframe';
- setVal('src', src);
- setVal('media_type', data.type);
- } else {
- // YouTube *NEW*
- if (src.match(/youtu\.be\/[a-z1-9.-_]+/)) {
- data.width = 425;
- data.height = 350;
- data.params.frameborder = '0';
- data.type = 'iframe';
- src = 'http://www.youtube.com/embed/' + src.match(/youtu.be\/([a-z1-9.-_]+)/)[1];
- setVal('src', src);
- setVal('media_type', data.type);
- }
-
- // YouTube
- if (src.match(/youtube\.com(.+)v=([^&]+)/)) {
- data.width = 425;
- data.height = 350;
- data.params.frameborder = '0';
- data.type = 'iframe';
- src = 'http://www.youtube.com/embed/' + src.match(/v=([^&]+)/)[1];
- setVal('src', src);
- setVal('media_type', data.type);
- }
- }
-
- // Google video
- if (src.match(/video\.google\.com(.+)docid=([^&]+)/)) {
- data.width = 425;
- data.height = 326;
- data.type = 'flash';
- src = 'http://video.google.com/googleplayer.swf?docId=' + src.match(/docid=([^&]+)/)[1] + '&hl=en';
- setVal('src', src);
- setVal('media_type', data.type);
- }
-
- // Vimeo
- if (src.match(/vimeo\.com\/([0-9]+)/)) {
- data.width = 425;
- data.height = 350;
- data.params.frameborder = '0';
- data.type = 'iframe';
- src = 'http://player.vimeo.com/video/' + src.match(/vimeo.com\/([0-9]+)/)[1];
- setVal('src', src);
- setVal('media_type', data.type);
- }
-
- // stream.cz
- if (src.match(/stream\.cz\/((?!object).)*\/([0-9]+)/)) {
- data.width = 425;
- data.height = 350;
- data.params.frameborder = '0';
- data.type = 'iframe';
- src = 'http://www.stream.cz/object/' + src.match(/stream.cz\/[^/]+\/([0-9]+)/)[1];
- setVal('src', src);
- setVal('media_type', data.type);
- }
-
- // Google maps
- if (src.match(/maps\.google\.([a-z]{2,3})\/maps\/(.+)msid=(.+)/)) {
- data.width = 425;
- data.height = 350;
- data.params.frameborder = '0';
- data.type = 'iframe';
- src = 'http://maps.google.com/maps/ms?msid=' + src.match(/msid=(.+)/)[1] + "&output=embed";
- setVal('src', src);
- setVal('media_type', data.type);
- }
-
- if (data.type == 'video') {
- if (!data.video.sources)
- data.video.sources = [];
-
- data.video.sources[0] = {src : src};
-
- src = getVal("video_altsource1");
- if (src)
- data.video.sources[1] = {src : src};
-
- src = getVal("video_altsource2");
- if (src)
- data.video.sources[2] = {src : src};
- } else if (data.type == 'audio') {
- if (!data.video.sources)
- data.video.sources = [];
-
- data.video.sources[0] = {src : src};
-
- src = getVal("audio_altsource1");
- if (src)
- data.video.sources[1] = {src : src};
-
- src = getVal("audio_altsource2");
- if (src)
- data.video.sources[2] = {src : src};
- } else
- data.params.src = src;
-
- // Set default size
- setVal('width', data.width || (data.type == 'audio' ? 300 : 320));
- setVal('height', data.height || (data.type == 'audio' ? 32 : 240));
- }
- },
-
- dataToForm : function() {
- this.moveStates(true);
- },
-
- formToData : function(field) {
- if (field == "width" || field == "height")
- this.changeSize(field);
-
- if (field == 'source') {
- this.moveStates(false, field);
- setVal('source', this.editor.plugins.media.dataToHtml(this.data));
- this.panel = 'source';
- } else {
- if (this.panel == 'source') {
- this.data = clone(this.editor.plugins.media.htmlToData(getVal('source')));
- this.dataToForm();
- this.panel = '';
- }
-
- this.moveStates(false, field);
- this.preview();
- }
- },
-
- beforeResize : function() {
- this.width = parseInt(getVal('width') || (this.data.type == 'audio' ? "300" : "320"), 10);
- this.height = parseInt(getVal('height') || (this.data.type == 'audio' ? "32" : "240"), 10);
- },
-
- changeSize : function(type) {
- var width, height, scale, size;
-
- if (get('constrain').checked) {
- width = parseInt(getVal('width') || (this.data.type == 'audio' ? "300" : "320"), 10);
- height = parseInt(getVal('height') || (this.data.type == 'audio' ? "32" : "240"), 10);
-
- if (type == 'width') {
- this.height = Math.round((width / this.width) * height);
- setVal('height', this.height);
- } else {
- this.width = Math.round((height / this.height) * width);
- setVal('width', this.width);
- }
- }
- },
-
- getMediaListHTML : function() {
- if (typeof(tinyMCEMediaList) != "undefined" && tinyMCEMediaList.length > 0) {
- var html = "";
-
- html += '<select id="linklist" name="linklist" style="width: 250px" onchange="this.form.src.value=this.options[this.selectedIndex].value;Media.formToData(\'src\');">';
- html += '<option value="">---</option>';
-
- for (var i=0; i<tinyMCEMediaList.length; i++)
- html += '<option value="' + tinyMCEMediaList[i][1] + '">' + tinyMCEMediaList[i][0] + '</option>';
-
- html += '</select>';
-
- return html;
- }
-
- return "";
- },
-
- getMediaTypeHTML : function(editor) {
- function option(media_type, element) {
- if (!editor.schema.getElementRule(element || media_type)) {
- return '';
- }
-
- return '<option value="'+media_type+'">'+tinyMCEPopup.editor.translate("media_dlg."+media_type)+'</option>'
- }
-
- var html = "";
-
- html += '<select id="media_type" name="media_type" onchange="Media.formToData(\'type\');">';
- html += option("video");
- html += option("audio");
- html += option("flash", "object");
- html += option("quicktime", "object");
- html += option("shockwave", "object");
- html += option("windowsmedia", "object");
- html += option("realmedia", "object");
- html += option("iframe");
-
- if (editor.getParam('media_embedded_audio', false)) {
- html += option('embeddedaudio', "object");
- }
-
- html += '</select>';
- return html;
- },
-
- setDefaultDialogSettings : function(editor) {
- var defaultDialogSettings = editor.getParam("media_dialog_defaults", {});
- tinymce.each(defaultDialogSettings, function(v, k) {
- setVal(k, v);
- });
- }
- };
-
- tinyMCEPopup.requireLangPack();
- tinyMCEPopup.onInit.add(function() {
- Media.init();
- });
-})();
diff --git a/program/js/tiny_mce/plugins/media/langs/ar_dlg.js b/program/js/tiny_mce/plugins/media/langs/ar_dlg.js
deleted file mode 100644
index bc7446814..000000000
--- a/program/js/tiny_mce/plugins/media/langs/ar_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ar.media_dlg',{list:"\u0642\u0627\u0626\u0645\u0647",file:"\u0645\u0644\u0641/\u0639\u0646\u0648\u0627\u0646URL",advanced:"\u0645\u062a\u0642\u062f\u0645",general:"\u0639\u0627\u0645",title:"\u0627\u0636\u0641/ \u0639\u062f\u0644 \u0641\u0644\u0627\u0634 \u0627\u0648 \u0641\u064a\u062f\u064a\u0648","align_top_left":"\u0627\u0639\u0644\u0649 \u064a\u0633\u0627\u0631","align_center":"\u0648\u0633\u0637","align_left":"\u064a\u0633\u0627\u0631","align_bottom":"\u0627\u0633\u0641\u0644","align_right":"\u064a\u0645\u064a\u0646","align_top":"\u0627\u0644\u0627\u0639\u0644\u0649","qt_stream_warn":"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"\u062a\u0642\u062f\u0645",sound:"\u0635\u0648\u062a",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks","align_top_right":"\u0627\u0639\u0644\u0649 \u064a\u0645\u064a\u0646",uimode:"UI Mode",rate:"\u0645\u0639\u062f\u0644",playcount:"\u0639\u062f\u062f \u0645\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0636",defaultframe:"\u0627\u0644\u0627\u0637\u0627\u0631 \u0627\u0644\u0627\u0641\u062a\u0631\u0627\u0636\u0649",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"\u0641\u064a\u062f\u064a\u0648 \u0628\u0644\u0627 \u0627\u0637\u0627\u0631",stretchtofit:"\u0645\u0637\u0647 \u0644\u064a\u0646\u0627\u0633\u0628",mute:"\u0628\u0644\u0627 \u0635\u0648\u062a",invokeurls:"Invoke URLs",fullscreen:"\u0628\u0643\u0627\u0645\u0644 \u0627\u0644\u0634\u0627\u0634\u0647",enabled:"\u0645\u062a\u0627\u062d",autostart:"\u0628\u062f\u0621 \u062a\u0644\u0642\u0627\u0626\u0649",volume:"\u0639\u0644\u0648 \u0627\u0644\u0635\u0648\u062a",target:"Target",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"\u0648\u0642\u062a \u0627\u0644\u0646\u0647\u0627\u064a\u0647",starttime:"\u0648\u0642\u062a \u0627\u0644\u0628\u062f\u0627\u064a\u0647",enablejavascript:"Enable JavaScript",correction:"\u0628\u0644\u0627 \u062a\u0635\u062d\u064a\u062d",targetcache:"Target cache",playeveryframe:"\u0639\u0631\u0636 \u0643\u0644 \u0627\u0644\u0643\u0627\u062f\u0631\u0627\u062a",kioskmode:"Kiosk mode",controller:"Controller",menu:"\u0627\u0638\u0647\u0631 \u0627\u0644\u0642\u0627\u0626\u0645\u0647",loop:"\u062a\u0643\u0631\u0627\u0631",play:"\u062a\u0634\u063a\u064a\u0644 \u062a\u0644\u0642\u0627\u0626\u0649",hspace:"H-Space",vspace:"V-Space","class_name":"Class",name:"\u0627\u0633\u0645",id:"Id",type:"\u0646\u0648\u0639",size:"\u0627\u0628\u0639\u0627\u062f",preview:"\u0645\u0639\u0627\u064a\u0646\u0647","constrain_proportions":"Constrain proportions",controls:"Controls",numloop:"\u0639\u062f\u062f \u0627\u0644\u062a\u0643\u0631\u0627\u0631\u0627\u062a",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"\u062e\u0644\u0641\u064a\u0647",wmode:"WMode",salign:"SAlign",align:"\u0645\u062d\u0627\u0632\u0627\u0647",scale:"Scale",quality:"\u062c\u0648\u062f\u0647",shuffle:"Shuffle",prefetch:"\u0627\u062d\u0636\u0627\u0631 \u0645\u0633\u0628\u0642",nojava:"\u0644\u0627 \u062c\u0627\u0641\u0627",maintainaspect:"\u0627\u0644\u062d\u0641\u0627\u0638 \u0639\u0644\u0649 \u0646\u0633\u0628\u0629 \u0627\u0644\u0637\u0648\u0644 \u0644\u0644\u0639\u0631\u0636",imagestatus:"\u062d\u0627\u0644\u0629 \u0627\u0644\u0635\u0648\u0631\u0647",center:"\u0648\u0633\u0637",autogotourl:"\u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u0630\u0647\u0627\u0628 \u0627\u0644\u062a\u0644\u0642\u0627\u0626\u0649","shockwave_options":"Shockwave options","rmp_options":"Real media player options","wmp_options":"\u062e\u0635\u0627\u0626\u0635 \u0645\u064a\u062f\u064a\u0627 \u0628\u0644\u0627\u064a\u0631","qt_options":"\u062e\u0635\u0627\u0626\u0635 \u0643\u0648\u064a\u0643 \u062a\u0627\u064a\u0645","flash_options":"\u062e\u0635\u0627\u0626\u0635 \u0641\u0644\u0627\u0634",hidden:"\u062e\u0641\u0649","align_bottom_left":"\u0627\u0633\u0641\u0644 \u064a\u0633\u0627\u0631","align_bottom_right":"\u0627\u0633\u0641\u0644 \u064a\u0645\u064a\u0646",flash:"flash",quicktime:"quicktime ","embedded_audio_options":"\u062e\u064a\u0627\u0631\u0627\u062a \u0627\u0644\u0635\u0648\u062a \u0627\u0644\u0645\u062f\u0645\u062c\u0629",windowsmedia:"windowsmedia ",realmedia:"realmedia ",shockwave:"shockwave",audio:"\u0627\u0644\u0635\u0648\u062a",video:"\u0627\u0644\u0641\u064a\u062f\u064a\u0648","html5_video_options":"\u062e\u0635\u0627\u0626\u0635 \u0641\u064a\u062f\u064a\u0648 HTML5",altsource1:"\u0627\u0644\u0628\u062f\u064a\u0644 \u0627\u0644\u0627\u0648\u0644 \u0644\u0644\u0645\u0635\u062f\u0631",altsource2:"\u0627\u0644\u0628\u062f\u064a\u0644 \u0627\u0644\u062b\u0627\u0646\u0649 \u0644\u0644\u0645\u0635\u062f\u0631",preload:"\u062a\u062d\u0645\u064a\u0644 \u0645\u0633\u0628\u0642",poster:"Poster",source:"\u0645\u0635\u062f\u0631","html5_audio_options":"\u062e\u064a\u0627\u0631\u0627\u062a \u0627\u0644\u0635\u0648\u062a","preload_none":"\u0644\u0627 \u0627\u0644\u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0645\u0633\u0628\u0642","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide",iframe:"iframe ",embeddedaudio:"embedded audio "}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/az_dlg.js b/program/js/tiny_mce/plugins/media/langs/az_dlg.js
deleted file mode 100644
index 5fd1f6b6c..000000000
--- a/program/js/tiny_mce/plugins/media/langs/az_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('az.media_dlg',{list:"Siyah\u0131",file:"Fayl/\u00fcnvan",advanced:"\u018flav\u0259l\u0259r",general:"\u00dcmumi",title:"Mediya-obyekti \u0259lav\u0259/redakt\u0259 et","align_top_left":"\u00dcst sol","align_center":"M\u0259tk\u0259z","align_left":"Sol","align_bottom":"Alt","align_right":"Sa\u011f","align_top":"\u00dcst","qt_stream_warn":"Haz\u0131rki ax\u0131lan rtsp m\u0259nb\u0259l\u0259ri QT Src sah\u0259sin\u0259 \u0259lav\u0259 edilm\u0259lidir.\nSiz h\u0259m\u00e7inin Src sah\u0259sin\u0259 qeyri-ax\u0131lan versiyan\u0131 da \u0259lav\u0259 etm\u0259lisiniz..",qtsrc:"QT Src",progress:"\u0130l\u0259rl\u0259yi\u015f",sound:"S\u0259s",swstretchvalign:"Uzat D-D\u00fczl\u0259ndir",swstretchhalign:"Uzat Y-D\u00fczl\u0259ndir",swstretchstyle:"Uzatma stili",scriptcallbacks:"Skript \u00e7a\u011f\u0131r\u0131mlar\u0131","align_top_right":"\u00dcst sa\u011f",uimode:"UI \u00dcsulu",rate:"Norma",playcount:"Oynatma say\u0131",defaultframe:"Susmaya g\u00f6r\u0259 \u00e7\u0259r\u00e7iv\u0259",currentposition:"Haz\u0131rki m\u00f6vqe",currentmarker:"Haz\u0131rki marker",captioningid:"Ba\u015fl\u0131qland\u0131rma id",baseurl:"Baza URL",balance:"Balans",windowlessvideo:"P\u0259nc\u0259r\u0259siz vide",stretchtofit:"S\u0131\u011facaq q\u0259d\u0259r \u00f6l\u00e7\u00fcl\u0259ndir",mute:"S\u0259ssiz",invokeurls:"\u00c7a\u011f\u0131r\u0131lacaq URL \u00fcnvanlar",fullscreen:"Tam ekran",enabled:"Yan\u0131l\u0131b",autostart:"Avtomatik ba\u015flat",volume:"S\u0259s",target:"H\u0259d\u0259f",qtsrcchokespeed:"Drossel s\u00fcr\u0259ti",href:"Href",endtime:"Bit\u0259c\u0259k zaman",starttime:"Ba\u015flan\u011f\u0131c zaman",enablejavascript:"JavaScript-i yand\u0131r",correction:"D\u0259yi\u015fiklik yoxdur",targetcache:"H\u0259d\u0259f ke\u015f",playeveryframe:"H\u0259r \u00e7\u0259r\u00e7iv\u0259ni oynat",kioskmode:"Kiosk \u00fcsulu",controller:"\u0130dar\u0259\u00e7i",menu:"Menyunu g\u00f6st\u0259r",loop:"\u0130lm\u0259k",play:"Avtomatik oynat",hspace:"\u00dcf\u00fcqi f\u0259za",vspace:"\u015eaquli f\u0259za","class_name":"Sinif",name:"Ad\u0131",id:"\u0130dentifikator",type:"N\u00f6v",size:"\u00d6\u00e7\u00fcl\u0259ri",preview:"\u0130lkin bax\u0131\u015f","constrain_proportions":"Proporsiyalar\u0131 saxla",controls:"Kontroller",numloop:"R\u0259q\u0259mli ilm\u0259l\u0259r",console:"Konsol",cache:"Ke\u015f",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"T\u0259m\u0259l",bgcolor:"Fon",wmode:"WMode",salign:"SAlign",align:"Tarazla\u015fmaq",scale:"Miqyas",quality:"Keyfiyy\u0259t",shuffle:"Qar\u0131\u015fd\u0131r",prefetch:"\u00d6n-g\u0259tirm\u0259",nojava:"Java yox",maintainaspect:"Aspekti qoru",imagestatus:"\u015e\u0259kil statusu",center:"M\u0259rk\u0259z",autogotourl:"Avtomatik gedil\u0259c\u0259k URL","shockwave_options":"Shockwave nizamlamalar\u0131","rmp_options":"Real media player nizamlamalar\u0131","wmp_options":"Windows media player nizamlamalar\u0131","qt_options":"Quicktime nizamlamalar\u0131","flash_options":"Flash nizamlamalar\u0131",hidden:"Gizli","align_bottom_left":"A\u015fa\u011f\u0131 sol","align_bottom_right":"A\u015fa\u011f\u0131 sa\u011f","html5_video_options":"HTML5 Video Options",altsource1:"Alternative source 1",altsource2:"Alternative source 2",preload:"Preload",poster:"Poster",source:"Source","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/bg_dlg.js b/program/js/tiny_mce/plugins/media/langs/bg_dlg.js
deleted file mode 100644
index 0b16481f9..000000000
--- a/program/js/tiny_mce/plugins/media/langs/bg_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bg.media_dlg',{list:"\u0421\u043f\u0438\u0441\u044a\u043a",file:"\u0424\u0430\u0439\u043b/URL",advanced:"\u0417\u0430 \u043d\u0430\u043f\u0440\u0435\u0434\u043d\u0430\u043b\u0438",general:"\u041e\u0431\u0449\u0438",title:"\u0412\u043c\u044a\u043a\u043d\u0438/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 \u043c\u0435\u0434\u0438\u044f","align_top_left":"\u0413\u043e\u0440\u0435 \u043b\u044f\u0432\u043e","align_center":"\u0426\u0435\u043d\u0442\u044a\u0440","align_left":"\u041b\u044f\u0432\u043e","align_bottom":"\u0414\u043e\u043b\u0443","align_right":"\u0414\u044f\u0441\u043d\u043e","align_top":"\u0413\u043e\u0440\u0435","qt_stream_warn":"\u041f\u043e\u0442\u043e\u0447\u043d\u0438\u0442\u0435 rtsp \u0440\u0435\u0441\u0443\u0440\u0441\u0438 \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u0441\u0435 \u0434\u043e\u0431\u0430\u0432\u044f\u0442 \u0432 QT Src \u043f\u043e\u043b\u0435\u0442\u043e \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0430 \u0437\u0430 \u043d\u0430\u043f\u0440\u0435\u0434\u043d\u0430\u043b\u0438.\n\u0422\u0440\u044f\u0431\u0432\u0430 \u0441\u044a\u0449\u043e \u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u0435 \u043d\u0435 \u043f\u043e\u0442\u043e\u0447\u043d\u0430 \u0432\u0435\u0440\u0441\u0438\u044f \u0432 Src \u043f\u043e\u043b\u0435\u0442\u043e..",qtsrc:"QT \u0418\u0437\u0442\u043e\u0447\u043d\u0438\u043a",progress:"\u041f\u0440\u043e\u0433\u0440\u0435\u0441",sound:"\u0417\u0432\u0443\u043a",swstretchvalign:"\u0420\u0430\u0437\u043f\u044a\u0432\u0430\u043d\u0435 V-Align",swstretchhalign:"\u0420\u0430\u0437\u043f\u044a\u0432\u0430\u043d\u0435 H-Align",swstretchstyle:"\u0421\u0442\u0438\u043b \u043d\u0430 \u0440\u0430\u0437\u043f\u044a\u0432\u0430\u043d\u0435",scriptcallbacks:"\u0421\u043a\u0440\u0438\u043f\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u0438 \u0438\u0437\u0432\u0438\u043a\u0432\u0430\u043d\u0438\u044f","align_top_right":"\u0413\u043e\u0440\u0435 \u0434\u044f\u0441\u043d\u043e",uimode:"UI \u0440\u0435\u0436\u0438\u043c",rate:"\u0411\u044a\u0440\u0437\u0438\u043d\u0430",playcount:"\u0411\u0440\u043e\u0439 \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f",defaultframe:"\u041d\u0430\u0447\u0430\u043b\u0435\u043d \u043a\u0430\u0434\u044a\u0440",currentposition:"\u0422\u0435\u043a\u0443\u0449\u0430 \u043f\u043e\u0437\u0438\u0446\u0438\u044f",currentmarker:"\u0422\u0435\u043a\u0443\u0449 \u043c\u0430\u0440\u043a\u0435\u0440",captioningid:"\u041d\u0430\u0434\u043f\u0438\u0441\u0432\u0430\u043d\u0435 id",baseurl:"\u0411\u0430\u0437\u043e\u0432\u043e URL",balance:"\u0411\u0430\u043b\u0430\u043d\u0441",windowlessvideo:"\u0412\u0438\u0434\u0435\u043e \u0431\u0435\u0437 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446",stretchtofit:"\u0420\u0430\u0437\u043f\u044a\u043d\u0438",mute:"\u0417\u0430\u0433\u043b\u0443\u0448\u0438",invokeurls:"\u0418\u0437\u0432\u0438\u043a\u0430\u0439\u0442\u0435 URL-\u0442\u0430",fullscreen:"\u0426\u044f\u043b \u0435\u043a\u0440\u0430\u043d",enabled:"\u0412\u043a\u043b\u044e\u0447\u0435\u043d",autostart:"\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u043e \u0441\u0442\u0430\u0440\u0442\u0438\u0440\u0430\u043d\u0435",volume:"\u0421\u0438\u043b\u0430 \u043d\u0430 \u0437\u0432\u0443\u043a\u0430",target:"\u0426\u0435\u043b",qtsrcchokespeed:"\u041f\u0440\u0435\u0434\u0435\u043b\u043d\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442",href:"Href",endtime:"\u0412\u0440\u0435\u043c\u0435 \u0437\u0430 \u043a\u0440\u0430\u0439",starttime:"\u0412\u0440\u0435\u043c\u0435 \u0437\u0430 \u0441\u0442\u0430\u0440\u0442\u0438\u0440\u0430\u043d\u0435",enablejavascript:"\u0412\u043a\u043b\u044e\u0447\u0438 JavaScript",correction:"\u0411\u0435\u0437 \u043f\u043e\u043f\u0440\u0430\u0432\u043a\u0438",targetcache:"\u0426\u0435\u043b\u0435\u0432\u0438 \u043a\u0435\u0448",playeveryframe:"\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u0439 \u0432\u0441\u0435\u043a\u0438 \u043a\u0430\u0434\u044a\u0440",kioskmode:"Kiosk \u0440\u0435\u0436\u0438\u043c",controller:"\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u0435\u0440",menu:"\u041f\u043e\u043a\u0430\u0436\u0438 \u043c\u0435\u043d\u044e",loop:"\u041f\u043e\u0432\u0442\u0430\u0440\u044f\u0439",play:"\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u043e \u043f\u0443\u0441\u043a\u0430\u043d\u0435",hspace:"H-Space",vspace:"V-Space","class_name":"\u041a\u043b\u0430\u0441",name:"\u0418\u043c\u0435",id:"Id",type:"\u0422\u0438\u043f",size:"\u0420\u0430\u0437\u043c\u0435\u0440\u0438",preview:"\u041f\u0440\u0435\u0433\u043b\u0435\u0434","constrain_proportions":"\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0438 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u0438\u0442\u0435",controls:"\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435",numloop:"\u0411\u0440\u043e\u0439 \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f",console:"\u041a\u043e\u043d\u0437\u043e\u043b\u0430",cache:"\u041a\u0435\u0448",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"\u0424\u043b\u0430\u0448 \u043f\u0440\u043e\u043c\u0435\u043d\u043b\u0438\u0432\u0438",base:"\u041e\u0441\u043d\u043e\u0432\u0430",bgcolor:"\u0424\u043e\u043d",wmode:"WMode",salign:"SAlign",align:"\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435",scale:"\u041f\u0440\u0435\u043e\u0440\u0430\u0437\u043c\u0435\u0440\u0438",quality:"\u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e",shuffle:"\u0420\u0430\u0437\u0431\u044a\u0440\u043a\u0430\u0439",prefetch:"\u0421\u0432\u0430\u043b\u0438 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u043d\u043e",nojava:"\u0411\u0435\u0437 JAVA",maintainaspect:"\u041f\u043e\u0434\u0434\u044a\u0440\u0436\u0430\u0439 \u0441\u044a\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435\u0442\u043e",imagestatus:"\u0421\u0442\u0430\u0442\u0443\u0441 \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430",center:"\u0426\u0435\u043d\u0442\u044a\u0440",autogotourl:"\u041e\u0442\u0438\u0434\u0438 \u043d\u0430 URL","shockwave_options":"\u041e\u043f\u0446\u0438\u0438 \u0437\u0430 Shockwave","rmp_options":"\u041e\u043f\u0446\u0438\u0438 \u0437\u0430 Real media player","wmp_options":"\u041e\u043f\u0446\u0438\u0438 \u0437\u0430 Windows media player","qt_options":"\u041e\u043f\u0446\u0438\u0438 \u0437\u0430 Quicktime","flash_options":"\u041e\u043f\u0446\u0438\u0438 \u0437\u0430 Flash",hidden:"\u0421\u043a\u0440\u0438\u0442","align_bottom_left":"\u0414\u043e\u043b\u0443 \u043b\u044f\u0432\u043e","align_bottom_right":"\u0414\u043e\u043b\u0443 \u0434\u044f\u0441\u043d\u043e",flash:"\u0424\u043b\u0430\u0448 \u0444\u0430\u0439\u043b",quicktime:"Quick Time","embedded_audio_options":"\u0412\u0433\u0440\u0430\u0434\u0435\u043d\u0438 \u0430\u0443\u0434\u0438\u043e \u043e\u043f\u0446\u0438\u0438",windowsmedia:"Windows Media Player",realmedia:"Real Media",shockwave:"Shockwave",audio:"\u0417\u0432\u0443\u043a",video:"\u0412\u0438\u0434\u0435\u043e","html5_video_options":"HTML5 \u0412\u0438\u0434\u0435\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438",altsource1:"\u0410\u043b\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0435\u043d \u0438\u0437\u0442\u043e\u0447\u043d\u0438\u043a 1",altsource2:"\u0410\u043b\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0435\u043d \u0438\u0437\u0442\u043e\u0447\u043d\u0438\u043a 2",preload:"\u041f\u0440\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u043d\u043e \u0437\u0430\u0440\u0435\u0436\u0434\u0430\u043d\u0435",poster:"\u041f\u043b\u0430\u043a\u0430\u0442",source:"\u0418\u0437\u0442\u043e\u0447\u043d\u0438\u043a","html5_audio_options":"\u0410\u0443\u0434\u0438\u043e \u041e\u043f\u0446\u0438\u0438","preload_none":"\u041d\u0435 \u0437\u0430\u0440\u0435\u0436\u0434\u0430\u0439 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u043d\u043e","preload_metadata":"\u0417\u0430\u0440\u0435\u0434\u0438 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u043d\u043e \u0432\u0438\u0435\u0434\u043e \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u0438\u0442\u0435","preload_auto":"\u041d\u0435\u043a\u0430 \u0431\u0440\u0430\u0443\u0437\u044a\u0440\u044a\u0442 \u043d\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044f \u0440\u0435\u0448\u0438",iframe:"\u041b\u043e\u043a\u0430\u043b\u0435\u043d \u0444\u0440\u0435\u0439\u043c(iframe)",embeddedaudio:"\u0412\u0433\u0440\u0430\u0434\u0435\u043d\u043e \u0430\u0443\u0434\u0438\u043e"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/bn_dlg.js b/program/js/tiny_mce/plugins/media/langs/bn_dlg.js
deleted file mode 100644
index 216365a9d..000000000
--- a/program/js/tiny_mce/plugins/media/langs/bn_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bn.media_dlg',{list:"\u09b2\u09bf\u09b8\u09cd\u099f",file:"\u09ab\u09be\u0987\u09b2/\u0987\u0989 \u0986\u09b0 \u098f\u09b2",advanced:"\u098f\u09a1\u09ad\u09be\u09a8\u09cd\u09b8\u09a1",general:"\u099c\u09c7\u09a8\u09be\u09b0\u09c7\u09b2",title:"\u0987\u09a8\u09b8\u09be\u09b0\u09cd\u099f/ \u098f\u09ae\u09ac\u09c7\u09a1\u09c7\u09a1 \u09ae\u09bf\u09a1\u09bf\u09df\u09be \u098f\u09a1\u09bf\u099f \u0995\u09b0\u09be","align_top_left":"\u0989\u09aa\u09b0\u09c7\u09b0 \u09ac\u09be\u09ae \u0995\u09cb\u09a8\u09c7","align_center":"\u09ae\u09be\u099d\u0996\u09be\u09a8\u09c7","align_left":"\u09ac\u09be\u09ae\u09c7","align_bottom":"\u09a8\u09bf\u099a\u09c7","align_right":"\u09a1\u09be\u09a8\u09c7","align_top":"\u0989\u09aa\u09b0\u09c7","qt_stream_warn":"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks","align_top_right":"Top right",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Default frame",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless video",stretchtofit:"Stretch to fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Fullscreen",enabled:"Enabled",autostart:"Auto start",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"End time",starttime:"Start time",enablejavascript:"Enable JavaScript",correction:"No correction",targetcache:"Target cache",playeveryframe:"Play every frame",kioskmode:"Kiosk mode",controller:"Controller",menu:"Show menu",loop:"Loop",play:"Auto play",hspace:"H-Space",vspace:"V-Space","class_name":"Class",name:"Name",id:"Id",type:"Type",size:"Dimensions",preview:"Preview","constrain_proportions":"Constrain proportions",controls:"Controls",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Background",wmode:"WMode",salign:"SAlign",align:"Align",scale:"Scale",quality:"Quality",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Image status",center:"Center",autogotourl:"Auto goto URL","shockwave_options":"Shockwave options","rmp_options":"Real media player options","wmp_options":"Windows media player options","qt_options":"Quicktime options","flash_options":"Flash options",hidden:"Hidden","align_bottom_left":"Bottom left","align_bottom_right":"Bottom right","html5_video_options":"HTML5 Video Options",altsource1:"Alternative source 1",altsource2:"Alternative source 2",preload:"Preload",poster:"Poster",source:"Source","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/br_dlg.js b/program/js/tiny_mce/plugins/media/langs/br_dlg.js
deleted file mode 100644
index 81d197820..000000000
--- a/program/js/tiny_mce/plugins/media/langs/br_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('br.media_dlg',{list:"Lista",file:"Arquivo/URL",advanced:"Avan\u00e7ado",general:"Geral",title:"Inserir/Editar m\u00eddia incorporada","align_top_left":"Topo \u00e0\u00a0 esquerda","align_center":"Centro","align_left":"Esquerda","align_bottom":"Abaixo","align_right":"Direita","align_top":"Topo","qt_stream_warn":"Fluxos de recursos rtsp devem ser acrescentados ao campo QT Src no Modo Avan\u00e7ado.\\NUma vers\u00e3o sem fluxo tamb\u00e9m deve ser acrescentada ao campo Src.",qtsrc:"QT Src",progress:"Progresso",sound:"Som",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"callbacks de script","align_top_right":"Topo \u00e0\u00a0 direita",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Frame padr\u00e3o",currentposition:"Posi\u00e7\u00e3o actual",currentmarker:"Marcador actual",captioningid:"Id de legenda",baseurl:"Base URL",balance:"Stereo",windowlessvideo:"V\u00eddeo sem janela",stretchtofit:"Estender",mute:"Mudo",invokeurls:"Invocar URLs",fullscreen:"Ecr\u00e3 inteiro",enabled:"Activado",autostart:"Execu\u00e7\u00e3o autom\u00e1tica",volume:"Volume",target:"Alvo",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"Hora do fim",starttime:"Hora de in\u00edcio",enablejavascript:"Disponibilizar javaScript",correction:"Sem correc\u00e7\u00f5es",targetcache:"Cache alvo",playeveryframe:"Executar todas as frames",kioskmode:"Modo Quiosque",controller:"Controlador",menu:"Mostrar menu",loop:"Repeti\u00e7\u00e3o autom\u00e1tica",play:"Execu\u00e7\u00e3o autom\u00e1tica",hspace:"Espa\u00e7o horizontal",vspace:"Espa\u00e7o vertical","class_name":"Classe",name:"Nome",id:"Id",type:"Tipo",size:"Dimens\u00f5es",preview:"Previs\u00e3o","constrain_proportions":"Manter propor\u00e7\u00f5es",controls:"Controles",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Fundo",wmode:"WMode",salign:"SAlign",align:"Alinhamento",scale:"Escala",quality:"Qualidade",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Image status",center:"Centro",autogotourl:"Auto goto URL","shockwave_options":"Op\u00e7\u00f5es Shockwave","rmp_options":"Op\u00e7\u00f5es Real Media Player","wmp_options":"Op\u00e7\u00f5es Windows Media Player","qt_options":"Op\u00e7\u00f5es Quicktime","flash_options":"Op\u00e7\u00f5es Flash",hidden:"Oculto","align_bottom_left":"Abaixo \u00e0\u00a0 esquerda","align_bottom_right":"Abaixo \u00e0\u00a0 direita","html5_video_options":"HTML5 Video Options",altsource1:"Alternative source 1",altsource2:"Alternative source 2",preload:"Preload",poster:"Poster",source:"Source","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/bs_dlg.js b/program/js/tiny_mce/plugins/media/langs/bs_dlg.js
deleted file mode 100644
index 1a5cb2390..000000000
--- a/program/js/tiny_mce/plugins/media/langs/bs_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bs.media_dlg',{list:"List",file:"File/URL",advanced:"Advanced",general:"General",title:"Insert / edit embedded media","align_top_left":"Top left","align_center":"Center","align_left":"Left","align_bottom":"Bottom","align_right":"Right","align_top":"Top","qt_stream_warn":"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks","align_top_right":"Top right",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Default frame",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless video",stretchtofit:"Stretch to fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Fullscreen",enabled:"Enabled",autostart:"Auto start",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"End time",starttime:"Start time",enablejavascript:"Enable JavaScript",correction:"No correction",targetcache:"Target cache",playeveryframe:"Play every frame",kioskmode:"Kiosk mode",controller:"Controller",menu:"Show menu",loop:"Loop",play:"Auto play",hspace:"H-Space",vspace:"V-Space","class_name":"Class",name:"Name",id:"Id",type:"Type",size:"Dimensions",preview:"Preview","constrain_proportions":"Constrain proportions",controls:"Controls",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Background",wmode:"WMode",salign:"SAlign",align:"Align",scale:"Scale",quality:"Quality",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Image status",center:"Center",autogotourl:"Auto goto URL","shockwave_options":"Shockwave options","rmp_options":"Real media player options","wmp_options":"Windows media player options","qt_options":"Quicktime options","flash_options":"Flash options",hidden:"Hidden","align_bottom_left":"Bottom left","align_bottom_right":"Bottom right","html5_video_options":"HTML5 Video Options",altsource1:"Alternative source 1",altsource2:"Alternative source 2",preload:"Preload",poster:"Poster",source:"Source","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/ca_dlg.js b/program/js/tiny_mce/plugins/media/langs/ca_dlg.js
deleted file mode 100644
index 1162d4e7e..000000000
--- a/program/js/tiny_mce/plugins/media/langs/ca_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ca.media_dlg',{list:"Llista",file:"Fitxer/URL",advanced:"Avan\u00e7at",general:"General",title:"Insereix / edita multim\u00e8dia incrustada","align_top_left":"Superior esquerra","align_center":"Centre","align_left":"Esquerra","align_bottom":"Inferior","align_right":"Dreta","align_top":"Superior","qt_stream_warn":"Els recursos rtsp fets flux s\'haurien d\'afegir al camp QT Src sota la pestanya avan\u00e7ada.\nTamb\u00e9 haur\u00edeu d\'afegir una versi\u00f3 no feta flux al camp Src..",qtsrc:"QT Src",progress:"Progr\u00e9s",sound:"S\u00f2",swstretchvalign:"Alineaci\u00f3 vertical de l\'extensor",swstretchhalign:"Alineaci\u00f3 horitzontal de l\'extensor",swstretchstyle:"Estil de l\'extensor",scriptcallbacks:"Crides de retorn a script","align_top_right":"Superior dreta",uimode:"Mode UI",rate:"Velocitat",playcount:"Compte de reproducci\u00f3",defaultframe:"Marc per defecte",currentposition:"Posici\u00f3 actual",currentmarker:"Retolador actual",captioningid:"Id nominal",baseurl:"URL base",balance:"Equilibri",windowlessvideo:"V\u00eddeo sense finestra",stretchtofit:"Estirar fins a encaixar",mute:"Silenci",invokeurls:"Invoca els URL",fullscreen:"Pantalla completa",enabled:"Habilitat",autostart:"Inici autom\u00e0tic",volume:"Volumen",target:"Dest\u00ed",qtsrcchokespeed:"Velocitat",href:"Href",endtime:"Fi",starttime:"Inici",enablejavascript:"Habilita el javascript",correction:"Sense correcci\u00f3",targetcache:"Target cache",playeveryframe:"Reprodueix cada marc",kioskmode:"Mode quiosc",controller:"Controlador",menu:"Mostra el men\u00fa",loop:"Bucle",play:"Reproducci\u00f3 autom\u00e0tica",hspace:"Espai horitzontal",vspace:"Espai vertical","class_name":"Classe",name:"Nom",id:"Id",type:"Tipus",size:"Dimensions",preview:"Previsualitzaci\u00f3","constrain_proportions":"Mant\u00e9 les proporcions",controls:"Controls",numloop:"Nre. bucles",console:"Consola",cache:"Mem\u00f2ria cau",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Fons",wmode:"Mode W",salign:"Alinea S",align:"Alinea",scale:"Escala",quality:"Qualitat",shuffle:"Shuffle",prefetch:"Prec\u00e0rrega",nojava:"Sense java",maintainaspect:"Mant\u00e9 l\'aspecte",imagestatus:"Estat de la imatge",center:"Alinea al centre",autogotourl:"URL goto autom\u00e0tic","shockwave_options":"Opcions del Shockwave","rmp_options":"Opcions del Real media player","wmp_options":"Opcions del Windows media player","qt_options":"Opcions del Quicktime","flash_options":"Opcions del Flash",hidden:"Ocult","align_bottom_left":"Inferior esquerra","align_bottom_right":"Inferior dreta",flash:"flash",quicktime:"quicktime","embedded_audio_options":"Opcions d\'audio incrustat",windowsmedia:"windowsmedia",realmedia:"realmedia",shockwave:"shockwave",audio:"audio",video:"video","html5_video_options":"Opcions de v\u00eddeo HTML5",altsource1:"Font alternatiu 1",altsource2:"Font alternatiu 2",preload:"Pre-c\u00e0rrega",poster:"Anunci",source:"Font","html5_audio_options":"Opcions d\'audio","preload_none":"No precarregar","preload_metadata":"Precarregar metadata de v\u00eddeo","preload_auto":"Deixar decidir a l\'usuari del navegador",iframe:"iframe",embeddedaudio:"embeddedaudio"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/cs_dlg.js b/program/js/tiny_mce/plugins/media/langs/cs_dlg.js
deleted file mode 100644
index b1268617f..000000000
--- a/program/js/tiny_mce/plugins/media/langs/cs_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('cs.media_dlg',{list:"Seznam",file:"Soubor/URL",advanced:"Roz\u0161\u00ed\u0159en\u00e9",general:"Obecn\u00e9",title:"Vlo\u017eit/upravit vkl\u00e1dan\u00e1 m\u00e9dia","align_top_left":"Nahoru vlevo","align_center":"Na st\u0159ed","align_left":"Vlevo","align_bottom":"Dol\u016f","align_right":"Vpravo","align_top":"Nahoru","qt_stream_warn":"Streamovan\u00e9 rtsp zdroje mohou b\u00fdt p\u0159id\u00e1ny do pole \'Soubor/URL streamu pro QT\' na z\u00e1lo\u017ece \'Roz\u0161\u00ed\u0159en\u00e9\'.\nYM\u016f\u017eete tak\u00e9 p\u0159idat nestreamovanou verzi do pole \'Soubor/URL\'.",qtsrc:"Soubor/URL streamu pro QT",progress:"Pr\u016fb\u011bh",sound:"Zvuk",swstretchvalign:"Zarovn\u00e1n\u00ed vert. rozta\u017een\u00ed",swstretchhalign:"Zarovn\u00e1n\u00ed horiz. rozta\u017een\u00ed",swstretchstyle:"Styl rozta\u017een\u00ed",scriptcallbacks:"Skripty zp\u011btn\u00fdch vol\u00e1n\u00ed","align_top_right":"Nahoru vpravo",uimode:"Re\u017eim ovl\u00e1dac\u00edho panelu",rate:"Relativn\u00ed rychlost",playcount:"Po\u010det p\u0159ehr\u00e1n\u00ed",defaultframe:"V\u00fdchoz\u00ed sn\u00edmek",currentposition:"Aktu\u00e1ln\u00ed pozice",currentmarker:"Aktu\u00e1ln\u00ed z\u00e1lo\u017eka",captioningid:"ID popisku m\u00e9dia",baseurl:"Z\u00e1kladn\u00ed URL",balance:"Vyv\u00e1\u017een\u00ed",windowlessvideo:"Video bez okna",stretchtofit:"Rozt\u00e1hnout do okna",mute:"Ztlumit",invokeurls:"Po\u017eadovat URL",fullscreen:"Cel\u00e1 obrazovka",enabled:"Povolit ovl\u00e1dac\u00ed panel",autostart:"Automatick\u00e9 spu\u0161t\u011bn\u00ed",volume:"Hlasitost",target:"C\u00edl",qtsrcchokespeed:"Sn\u00ed\u017een\u00ed rychlosti",href:"Odkaz",endtime:"\u010cas ukon\u010den\u00ed",starttime:"Po\u010d\u00e1te\u010dn\u00ed \u010das",enablejavascript:"Povolit Javascript",correction:"Bez korekc\u00ed",targetcache:"C\u00edlov\u00e1 mezipam\u011b\u0165",playeveryframe:"P\u0159ehr\u00e1t ka\u017ed\u00fd sn\u00edmek",kioskmode:"Zak\u00e1zat ukl\u00e1d\u00e1n\u00ed",controller:"Ovl\u00e1dac\u00ed panel",menu:"Zobrazit nab\u00eddku",loop:"Opakov\u00e1n\u00ed",play:"Automatick\u00e9 p\u0159ehr\u00e1v\u00e1n\u00ed",hspace:"Horizont\u00e1ln\u00ed odsazen\u00ed",vspace:"Vertik\u00e1ln\u00ed odsazen\u00ed","class_name":"T\u0159\u00edda",name:"N\u00e1zev",id:"ID",type:"Typ",size:"Rozm\u011bry",preview:"N\u00e1hled","constrain_proportions":"Zachovat proporce",controls:"Ovl\u00e1dac\u00ed panel",numloop:"Po\u010det opakov\u00e1n\u00ed",console:"Konzola",cache:"Mezipam\u011b\u0165",autohref:"Automatick\u00e9 na\u010dten\u00ed",liveconnect:"Spustit Javu (SWLiveConnect)",flashvars:"Parametry (Flashvars)",base:"Z\u00e1kladn\u00ed slo\u017eka",bgcolor:"Pozad\u00ed",wmode:"Re\u017eim okna",salign:"Zarovn\u00e1n\u00ed okna",align:"Zarovn\u00e1n\u00ed",scale:"Pom\u011br",quality:"Kvalita",shuffle:"N\u00e1hodn\u011b",prefetch:"P\u0159edna\u010dten\u00ed",nojava:"Nespout\u011bt Javu",maintainaspect:"Zachovat pom\u011br stran",imagestatus:"Stav obrazu",center:"Na st\u0159ed",autogotourl:"Automatick\u00fd p\u0159echod na URL","shockwave_options":"Mo\u017enosti Shockwave","rmp_options":"Mo\u017enosti p\u0159ehr\u00e1va\u010de Real media","wmp_options":"Mo\u017enosti p\u0159ehr\u00e1va\u010de Windows media","qt_options":"Mo\u017enosti Quicktime","flash_options":"Mo\u017enosti Flashe",hidden:"Skr\u00fdt","align_bottom_left":"Dol\u016f vlevo","align_bottom_right":"Dol\u016f vpravo",flash:"flash",quicktime:"quicktime","embedded_audio_options":"Volby vlo\u017een\u00e9ho audio souboru",windowsmedia:"windowsmedia",realmedia:"realmedia",shockwave:"shockwave",audio:"audio",video:"video","html5_video_options":"Mo\u017enosti HTML5 video",altsource1:"Alternativn\u00ed zdroj 1",altsource2:"Alternativn\u00ed zdroj 2",preload:"P\u0159edna\u010d\u00edst",poster:"Obr\u00e1zek (zobraz\u00ed se p\u0159i nedostupnosti videa)",source:"Zdroj","html5_audio_options":"Parametry zvuku","preload_none":"Nena\u010d\u00edtat p\u0159edem","preload_metadata":"Na\u010d\u00edst video metadata p\u0159edem","preload_auto":"Ur\u010d\u00ed prohl\u00ed\u017ee\u010d",iframe:"iframe",embeddedaudio:"embeddedaudio"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/cy_dlg.js b/program/js/tiny_mce/plugins/media/langs/cy_dlg.js
deleted file mode 100644
index 122a78fe9..000000000
--- a/program/js/tiny_mce/plugins/media/langs/cy_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('cy.media_dlg',{list:"Rhestr",file:"Ffeil/URL",advanced:"Uwch",general:"Cyffredinol",title:"Mewnosod/Golygu Cyfrwng wedi\'i Fewnosod","align_top_left":"Pen Chwith","align_center":"Canol","align_left":"Chwith","align_bottom":"Gwaelod","align_right":"Dde","align_top":"Pen","qt_stream_warn":"Dylai adnoddau RTSP ffrydiedig gael eu hychwanegu i\'r maes Ffynhonnell QT o dan y tab Uwch.\nDylech chi hefyd ychwanegu fersiwn heb ffrydio i\'r maes Ffynhonnell.",qtsrc:"Ffynhonnell QT",progress:"Cynnydd",sound:"Sain",swstretchvalign:"Ymestyn Aliniad Fertigol",swstretchhalign:"Ymestyn Aliniad Llorweddol",swstretchstyle:"Arddull Ymestyn",scriptcallbacks:"Sgriptiau N\u00f4l-Galw ","align_top_right":"Pen Dde",uimode:"Modd UI",rate:"Cyfradd",playcount:"Cyfrif Chwarae",defaultframe:"Ffr\u00e2m Ddiofyn",currentposition:"Lleoliad Cyfredol",currentmarker:"Marciwr Cyfredol",captioningid:"Id Penawdu",baseurl:"URL y B\u00f4n",balance:"Cydbwysedd",windowlessvideo:"Fideo Heb-Ffenest",stretchtofit:"Ymestyn i Ffitio",mute:"Mudo",invokeurls:"Defnyddio URLs",fullscreen:"Sgrin Llawn",enabled:"Galluogwyd",autostart:"Awto Cychwyn",volume:"Seinfannedd",target:"Targed",qtsrcchokespeed:"Cyflymder Tagu",href:"HREF",endtime:"Amser Gorffen",starttime:"Amser Dechrau",enablejavascript:"Galluogi JavaScript",correction:"Dim Cywiriad",targetcache:"Storfa Targed",playeveryframe:"Chwarae Pob Ffr\u00e2m",kioskmode:"Modd Ciosg",controller:"Rheolydd",menu:"Dangos Dewislen",loop:"Cylchu",play:"Awto Chwarae",hspace:"Gofod Llorweddol",vspace:"Gofod Fertigol","class_name":"Dosbarth",name:"Enw",id:"ID",type:"Math",size:"Dimensiynau",preview:"Rhagolwg","constrain_proportions":"Gorfodi Cyfranedd",controls:"Rheolyddion",numloop:"Nifer y Cylchau",console:"Consol",cache:"Storfa",autohref:"Auto HREF",liveconnect:"SWLiveConnect",flashvars:"Flash Vars",base:"Sail",bgcolor:"Cefndir",wmode:"Modd-W",salign:"Alinio-S",align:"Alinio",scale:"Graddfa",quality:"Ansawdd",shuffle:"Cymysgu",prefetch:"Prefetch",nojava:"Dim Java",maintainaspect:"Cadw\'r Agwedd",imagestatus:"Statws y Ddelwedd",center:"Canol",autogotourl:"URL Diofyn","shockwave_options":"Opsiynau Shockwave","rmp_options":"Opsiynau Real Media Player","wmp_options":"Opsiynau Windows Media Player","qt_options":"Opsiynau Quicktime","flash_options":"Opsiynau Flash",hidden:"Cudd","align_bottom_left":"Gwaelod Chwith","align_bottom_right":"Gwaelod Dde",flash:"flash",quicktime:"quicktime","embedded_audio_options":"Opsiynau Sain wedi\'i Fewnosod",windowsmedia:"windowsmedia",realmedia:"realmedia",shockwave:"shockwave",audio:"sain",video:"fideo","html5_video_options":"Opsiynau Fideo HTML5",altsource1:"Ffynhonnell amgen 1",altsource2:"Ffynhonnell amgen 2",preload:"Cyn-lwytho",poster:"Postiwr",source:"Ffynhonnell","html5_audio_options":"Opsiynau Sain","preload_none":"Peidiwch \u00e2 Cyn-lwytho","preload_metadata":"Cyn-lwytho metadata fideo","preload_auto":"Gadael porwr y defnyddiwr i benderfynu",iframe:"iframe",embeddedaudio:"sainmewnosodiedig"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/da_dlg.js b/program/js/tiny_mce/plugins/media/langs/da_dlg.js
deleted file mode 100644
index d9a88d1fa..000000000
--- a/program/js/tiny_mce/plugins/media/langs/da_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('da.media_dlg',{list:"Liste",file:"Fil/URL",advanced:"Avanceret",general:"Generelt",title:"Inds\u00e6t/rediger indlejret mediefil","align_top_left":"\u00d8verste venstre hj\u00f8rne","align_center":"Centreret","align_left":"Venstre","align_bottom":"Bund","align_right":"H\u00f8jret","align_top":"Top","qt_stream_warn":"Streamede rtsp resourcer skal tilf\u00f8jes til QT Src feltet under tabben avanceret.\nDu skal ogs\u00e5 tilf\u00f8je en ikke streamet version til Src feltet..",qtsrc:"QT Src",progress:"Fremskridt",sound:"Lyd",swstretchvalign:"Str\u00e6k V-justering",swstretchhalign:"Str\u00e6k H-justering",swstretchstyle:"Str\u00e6k stil",scriptcallbacks:"Script callbacks","align_top_right":"\u00d8verste h\u00f8jre hj\u00f8rne",uimode:"UI-tilstand",rate:"Vurder",playcount:"Afspil indhold",defaultframe:"Standard ramme",currentposition:"Aktuel position",currentmarker:"Aktuel mark\u00f8r",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Vinduesl\u00f8s video",stretchtofit:"Str\u00e6k for at tilpasse",mute:"Lydl\u00f8s",invokeurls:"Aktiver URL\'er",fullscreen:"Fuldsk\u00e6rm",enabled:"Valgt",autostart:"Afspil automatisk",volume:"Lydstyrke",target:"M\u00e5l",qtsrcchokespeed:"Choke-hastighed",href:"Href",endtime:"Sluttidspunkt",starttime:"Starttidspunkt",enablejavascript:"Tillad JavaScript",correction:"Ingen korrektion",targetcache:"M\u00e5l-cache",playeveryframe:"Afsplil alle rammer",kioskmode:"Kiosk-tilstand",controller:"Controller",menu:"Vis menu",loop:"Gentag",play:"Start",hspace:"H-afstand",vspace:"V-afstand","class_name":"Klasse",name:"Navn",id:"Id",type:"Type",size:"Dimensioner",preview:"Vis udskrift","constrain_proportions":"Bevar proportioner",controls:"Kontroller",numloop:"Antal loops",console:"Konsol",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Baggrund",wmode:"WMode",salign:"SAlign",align:"Juster",scale:"Skaler",quality:"Kvalitet",shuffle:"Bland",prefetch:"Forh\u00e5ndshent",nojava:"Ingen java",maintainaspect:"Bevar aspekt",imagestatus:"Billedstatus",center:"Center",autogotourl:"Auto g\u00e5 til URL","shockwave_options":"Shockwave options","rmp_options":"Real media player egenskaber","wmp_options":"Windows media player egenskaber","qt_options":"Quicktime egenskaber","flash_options":"Flash egenskaber",hidden:"Skjul","align_bottom_left":"Nederste venstre hj\u00f8rne","align_bottom_right":"\u00d8verste h\u00f8jre hj\u00f8rne",flash:"Flash",quicktime:"Quicktime","embedded_audio_options":"Indstillinger for indlejret audio",windowsmedia:"Windows Media",realmedia:"Realmedia",shockwave:"Shockwave",audio:"Lyd",video:"Video","html5_video_options":"HTML5 Video Indstillinger",altsource1:"Alternativ kilde 1",altsource2:"Alternativ kilde 2",preload:"Forudindl\u00e6s",poster:"Poster",source:"Kilde","html5_audio_options":"Audio indstillinger","preload_none":"Preindl\u00e6s ikke","preload_metadata":"Preindl\u00e6s video metadata","preload_auto":"Lad brugerens browser v\u00e6lge",iframe:"iframe",embeddedaudio:"Indlejret lyd"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/de_dlg.js b/program/js/tiny_mce/plugins/media/langs/de_dlg.js
deleted file mode 100644
index 6d0de767c..000000000
--- a/program/js/tiny_mce/plugins/media/langs/de_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('de.media_dlg',{list:"Liste",file:"Datei/URL",advanced:"Erweitert",general:"Allgemein",title:"Multimedia-Inhalte einf\u00fcgen/bearbeiten","align_top_left":"Oben Links","align_center":"Zentriert","align_left":"Links","align_bottom":"Unten","align_right":"Rechts","align_top":"Oben","qt_stream_warn":"In den Erweiterten Einstellungen sollten im Feld \'QT Src\' gestreamte RTSP Resourcen hinzugef\u00fcgt werden.\nZus\u00e4tzlich sollten Sie dort auch eine nicht-gestreamte Resource angeben.",qtsrc:"Angabe zu QT Src",progress:"Fortschritt",sound:"Ton",swstretchvalign:"Stretch V-Ausrichtung",swstretchhalign:"Stretch H-Ausrichtung",swstretchstyle:"Stretch-Art",scriptcallbacks:"Script callbacks","align_top_right":"Oben Rechts",uimode:"UI Modus",rate:"Rate",playcount:"Z\u00e4hler",defaultframe:"Frame-Voreinstellung",currentposition:"Aktuelle Position",currentmarker:"Aktueller Marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Fensterloses Video",stretchtofit:"Anzeigefl\u00e4che an verf\u00fcgbaren Platz anpassen",mute:"Stumm",invokeurls:"Invoke URLs",fullscreen:"Vollbild",enabled:"Aktiviert",autostart:"Autostart",volume:"Lautst\u00e4rke",target:"Ziel",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"Endzeitpunkt",starttime:"Startzeitpunkt",enablejavascript:"JavaScript aktivieren",correction:"Ohne Korrektur",targetcache:"Ziel zwischenspeichern",playeveryframe:"Jeden Frame abspielen",kioskmode:"Kioskmodus",controller:"Controller",menu:"Men\u00fc anzeigen",loop:"Wiederholung",play:"Automatisches Abspielen",hspace:"Horizontaler Abstand",vspace:"Vertikaler Abstand","class_name":"CSS-Klasse",name:"Name",id:"Id",type:"Typ",size:"Abmessungen",preview:"Vorschau","constrain_proportions":"Proportionen erhalten",controls:"Steuerung",numloop:"Anzahl Wiederholungen",console:"Konsole",cache:"Zwischenspeicher",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvariablen",base:"Base",bgcolor:"Hintergrund",wmode:"WMode",salign:"S-Ausrichtung",align:"Ausrichtung",scale:"Skalierung",quality:"Qualit\u00e4t",shuffle:"Zuf\u00e4llige Wiedergabe",prefetch:"Prefetch",nojava:"Kein Java",maintainaspect:"Bildverh\u00e4ltnis beibehalten",imagestatus:"Bildstatus",center:"Zentriert",autogotourl:"Auto goto URL","shockwave_options":"Shockwave-Optionen","rmp_options":"Optionen f\u00fcr Real Media Player","wmp_options":"Optionen f\u00fcr Windows Media Player","qt_options":"Quicktime-Optionen","flash_options":"Flash-Optionen",hidden:"Versteckt","align_bottom_left":"Unten Links","align_bottom_right":"Unten Rechts",flash:"Flash",quicktime:"QuickTime","embedded_audio_options":"Integrierte Audio Optionen",windowsmedia:"WindowsMedia",realmedia:"RealMedia",shockwave:"ShockWave",audio:"Audio",video:"Video","html5_video_options":"HTML5 Video Optionen",altsource1:"Alternative Quelle 1",altsource2:"Alternative Quelle 2",preload:"Preload",poster:"Poster",source:"Quelle","html5_audio_options":"Audio Optionen","preload_none":"Nicht vorladen","preload_metadata":"Video Metadaten vorladen","preload_auto":"Benutzer Browser entscheidet automatisch",iframe:"iFrame",embeddedaudio:"Audio (eingebunden)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/el_dlg.js b/program/js/tiny_mce/plugins/media/langs/el_dlg.js
deleted file mode 100644
index 157767dc1..000000000
--- a/program/js/tiny_mce/plugins/media/langs/el_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('el.media_dlg',{list:"\u039b\u03af\u03c3\u03c4\u03b1",file:"\u0391\u03c1\u03c7\u03b5\u03af\u03bf/URL",advanced:"\u0393\u03b9\u03b1 \u03c0\u03c1\u03bf\u03c7\u03c9\u03c1\u03b7\u03bc\u03ad\u03bd\u03bf\u03c5\u03c2",general:"\u0393\u03b5\u03bd\u03b9\u03ba\u03ac",title:"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03b5\u03bd\u03c3\u03c9\u03bc\u03b1\u03c4\u03c9\u03bc\u03ad\u03bd\u03c9\u03bd media","align_top_left":"\u03a0\u03ac\u03bd\u03c9 \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac","align_center":"\u039a\u03ad\u03bd\u03c4\u03c1\u03bf","align_left":"\u0391\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac","align_bottom":"\u039a\u03ac\u03c4\u03c9","align_right":"\u0394\u03b5\u03be\u03b9\u03ac","align_top":"\u03a0\u03ac\u03bd\u03c9","qt_stream_warn":"\u03a0\u03b7\u03b3\u03ad\u03c2 \u03c1\u03bf\u03ce\u03bd rtsp \u03b8\u03b1 \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03c0\u03c1\u03bf\u03c3\u03c4\u03b5\u03b8\u03bf\u03cd\u03bd \u03c3\u03c4\u03bf \u03c0\u03b5\u03b4\u03af\u03bf \u03a0\u03b7\u03b3\u03ae QT \u03ba\u03ac\u03c4\u03c9 \u03b1\u03c0\u03cc \u03c4\u03b7\u03bd \u03ba\u03b1\u03c1\u03c4\u03ad\u03bb\u03b1 \u0393\u03b9\u03b1 \u03c0\u03c1\u03bf\u03c7\u03c9\u03c1\u03b7\u03bc\u03ad\u03bd\u03bf\u03c5\u03c2.\n\u0395\u03c0\u03af\u03c3\u03b7\u03c2 \u03ba\u03b1\u03bb\u03cc \u03b8\u03b1 \u03ae\u03c4\u03b1\u03bd \u03bd\u03b1 \u03c0\u03c1\u03bf\u03c3\u03b8\u03ad\u03c3\u03b5\u03c4\u03b5 \u03bc\u03b9\u03b1 \u03b1\u03c0\u03bb\u03ae (\u03cc\u03c7\u03b9 \u03c1\u03bf\u03ae\u03c2) \u03c0\u03b7\u03b3\u03ae..",qtsrc:"\u03a0\u03b7\u03b3\u03ae \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5",progress:"\u03a0\u03c1\u03cc\u03bf\u03b4\u03bf\u03c2",sound:"\u0389\u03c7\u03bf\u03c2",swstretchvalign:"\u039a\u03b1\u03c4\u03b1\u03ba\u03cc\u03c1\u03c5\u03c6\u03b7 \u03b5\u03c0\u03ad\u03ba\u03c4\u03b1\u03c3\u03b7",swstretchhalign:"\u039f\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03b1 \u03b5\u03c0\u03ad\u03ba\u03c4\u03b1\u03c3\u03b7",swstretchstyle:"\u03a3\u03c4\u03c5\u03bb \u03b5\u03c0\u03ad\u03ba\u03c4\u03b1\u03c3\u03b7\u03c2",scriptcallbacks:"Script callbacks","align_top_right":"\u03a0\u03ac\u03bd\u03c9 \u03b4\u03b5\u03be\u03b9\u03ac",uimode:"\u039b\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 UI",rate:"\u03a1\u03c5\u03b8\u03bc\u03cc\u03c2",playcount:"\u03a0\u03cc\u03c3\u03b5\u03c2 \u03c6\u03bf\u03c1\u03ad\u03c2 \u03b8\u03b1 \u03c0\u03b1\u03af\u03be\u03b5\u03b9",defaultframe:"\u03a0\u03c1\u03bf\u03b5\u03c0\u03b9\u03bb\u03b5\u03b3\u03bc\u03ad\u03bd\u03bf \u03ba\u03b1\u03c1\u03ad",currentposition:"\u03a4\u03c1\u03ad\u03c7\u03bf\u03c5\u03c3\u03b1 \u03b8\u03ad\u03c3\u03b7",currentmarker:"\u03a4\u03c1\u03ad\u03c7\u03bf\u03bd \u03c3\u03b7\u03bc\u03ac\u03b4\u03b9",captioningid:"Captioning id",baseurl:"URL \u03b2\u03ac\u03c3\u03b7\u03c2",balance:"\u0399\u03c3\u03bf\u03c1\u03c1\u03bf\u03c0\u03af\u03b1",windowlessvideo:"\u0392\u03af\u03bd\u03c4\u03b5\u03bf \u03c7\u03c9\u03c1\u03af\u03c2 \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf",stretchtofit:"\u0395\u03c0\u03ad\u03ba\u03c4\u03b1\u03c3\u03b7 \u03ce\u03c3\u03c4\u03b5 \u03bd\u03b1 \u03c7\u03c9\u03c1\u03ad\u03c3\u03b5\u03b9",mute:"\u03a3\u03af\u03b3\u03b1\u03c3\u03b7",invokeurls:"\u039a\u03bb\u03ae\u03c3\u03b7 URLs",fullscreen:"\u03a0\u03bb\u03ae\u03c1\u03b7\u03c2 \u03bf\u03b8\u03cc\u03bd\u03b7",enabled:"\u0395\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7",autostart:"\u0391\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b7 \u03b5\u03ba\u03ba\u03af\u03bd\u03b7\u03c3\u03b7",volume:"\u0388\u03bd\u03c4\u03b1\u03c3\u03b7",target:"\u03a3\u03c4\u03cc\u03c7\u03bf\u03c2",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"\u03a7\u03c1\u03cc\u03bd\u03bf\u03c2 \u03bb\u03ae\u03be\u03b7\u03c2",starttime:"\u03a7\u03c1\u03cc\u03bd\u03bf\u03c2 \u03ad\u03bd\u03b1\u03c1\u03be\u03b7\u03c2",enablejavascript:"\u0395\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 JavaScript",correction:"\u03a7\u03c9\u03c1\u03af\u03c2 \u03b4\u03b9\u03cc\u03c1\u03b8\u03c9\u03c3\u03b7",targetcache:"\u039c\u03bd\u03ae\u03bc\u03b7 cache \u03c3\u03c4\u03cc\u03c7\u03bf\u03c5",playeveryframe:"\u03a0\u03b1\u03af\u03be\u03b9\u03bc\u03bf \u03cc\u03bb\u03c9\u03bd \u03c4\u03c9\u03bd \u03ba\u03b1\u03c1\u03ad",kioskmode:"\u039b\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 Kiosk",controller:"\u0395\u03bb\u03b5\u03b3\u03ba\u03c4\u03ae\u03c2",menu:"\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03bc\u03b5\u03bd\u03bf\u03cd",loop:"\u0395\u03c0\u03b1\u03bd\u03ac\u03bb\u03b7\u03c8\u03b7",play:"\u0391\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03bf \u03b5\u03ba\u03ba\u03af\u03bd\u03b7\u03c3\u03b7",hspace:"\u0391\u03c0\u03cc\u03c3\u03c4\u03b1\u03c3\u03b7 \u03bf\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03b1",vspace:"\u0391\u03c0\u03cc\u03c3\u03c4\u03b1\u03c3\u03b7 \u03ba\u03ac\u03b8\u03b5\u03c4\u03b7","class_name":"\u039a\u03bb\u03ac\u03c3\u03b7",name:"\u038c\u03bd\u03bf\u03bc\u03b1",id:"Id",type:"\u03a4\u03cd\u03c0\u03bf\u03c2",size:"\u0394\u03b9\u03b1\u03c3\u03c4\u03ac\u03c3\u03b5\u03b9\u03c2",preview:"\u03a0\u03c1\u03bf\u03b5\u03c0\u03b9\u03c3\u03ba\u03cc\u03c0\u03b7\u03c3\u03b7","constrain_proportions":"\u0394\u03b9\u03b1\u03c4\u03ae\u03c1\u03b7\u03c3\u03b7 \u03b1\u03bd\u03b1\u03bb\u03bf\u03b3\u03af\u03b1\u03c2 \u03c0\u03bb. - \u03cd\u03c8\u03bf\u03c5\u03c2",controls:"\u03a7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ae\u03c1\u03b9\u03b1",numloop:"\u03a0\u03cc\u03c3\u03b5\u03c2 \u03c6\u03bf\u03c1\u03ad\u03c2 \u03b8\u03b1 \u03c0\u03b1\u03af\u03be\u03b5\u03b9",console:"\u039a\u03bf\u03bd\u03c3\u03cc\u03bb\u03b1",cache:"\u039c\u03bd\u03ae\u03bc\u03b7 cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"\u039c\u03b5\u03c4\u03b1\u03b2\u03bb\u03b7\u03c4\u03ad\u03c2 Flash",base:"\u0392\u03ac\u03c3\u03b7",bgcolor:"\u03a6\u03cc\u03bd\u03c4\u03bf",wmode:"WMode",salign:"SAlign",align:"\u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7",scale:"\u039a\u03bb\u03af\u03bc\u03b1\u03ba\u03b1",quality:"\u03a0\u03bf\u03b9\u03cc\u03c4\u03b7\u03c4\u03b1",shuffle:"\u03a4\u03c5\u03c7\u03b1\u03af\u03b1 \u03c3\u03b5\u03b9\u03c1\u03ac",prefetch:"\u03a0\u03c1\u03bf\u03c6\u03cc\u03c1\u03c4\u03c9\u03c3\u03b7",nojava:"\u03a7\u03c9\u03c1\u03af\u03c2 java",maintainaspect:"\u0394\u03b9\u03b1\u03c4\u03ae\u03c1\u03b7\u03c3\u03b7 \u03b1\u03bd\u03b1\u03bb\u03bf\u03b3\u03af\u03b1\u03c2 \u03c0\u03bb. - \u03cd\u03c8\u03bf\u03c5\u03c2",imagestatus:"\u039a\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2",center:"\u039a\u03ad\u03bd\u03c4\u03c1\u03bf",autogotourl:"\u0391\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b7 \u03bc\u03b5\u03c4\u03ac\u03b2\u03b1\u03c3\u03b7 \u03c3\u03c4\u03bf URL","shockwave_options":"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ad\u03c2 Shockwave","rmp_options":"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ad\u03c2 Real media player","wmp_options":"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ad\u03c2 Windows media player","qt_options":"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ad\u03c2 Quicktime","flash_options":"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ad\u03c2 Flash",hidden:"\u039a\u03c1\u03c5\u03c6\u03cc","align_bottom_left":"\u039a\u03ac\u03c4\u03c9 \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac","align_bottom_right":"\u039a\u03ac\u03c4\u03c9 \u03b4\u03b5\u03be\u03b9\u03ac","html5_video_options":"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ad\u03c2 HTML5 Video",altsource1:"\u0395\u03bd\u03b1\u03bb\u03bb\u03b1\u03ba\u03c4\u03b9\u03ba\u03ae \u03c0\u03b7\u03b3\u03ae 1",altsource2:"\u0395\u03bd\u03b1\u03bb\u03bb\u03b1\u03ba\u03c4\u03b9\u03ba\u03ae \u03c0\u03b7\u03b3\u03ae 2",preload:"\u03a0\u03c1\u03bf\u03c6\u03cc\u03c1\u03c4\u03c9\u03c3\u03b7",poster:"\u0391\u03c6\u03af\u03c3\u03b1",source:"\u03a0\u03b7\u03b3\u03ae","html5_audio_options":"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ad\u03c2 \u03ae\u03c7\u03bf\u03c5","embedded_audio_options":"Embedded Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide",flash:"",quicktime:"",windowsmedia:"",realmedia:"",shockwave:"",audio:"",video:"",iframe:"",embeddedaudio:""}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/en_dlg.js b/program/js/tiny_mce/plugins/media/langs/en_dlg.js
deleted file mode 100644
index ecef3a801..000000000
--- a/program/js/tiny_mce/plugins/media/langs/en_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('en.media_dlg',{list:"List",file:"File/URL",advanced:"Advanced",general:"General",title:"Insert/Edit Embedded Media","align_top_left":"Top Left","align_center":"Center","align_left":"Left","align_bottom":"Bottom","align_right":"Right","align_top":"Top","qt_stream_warn":"Streamed RTSP resources should be added to the QT Source field under the Advanced tab.\nYou should also add a non-streamed version to the Source field.",qtsrc:"QT Source",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch Style",scriptcallbacks:"Script Callbacks","align_top_right":"Top Right",uimode:"UI Mode",rate:"Rate",playcount:"Play Count",defaultframe:"Default Frame",currentposition:"Current Position",currentmarker:"Current Marker",captioningid:"Captioning ID",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless Video",stretchtofit:"Stretch to Fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Full Screen",enabled:"Enabled",autostart:"Auto Start",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke Speed",href:"HREF",endtime:"End Time",starttime:"Start Time",enablejavascript:"Enable JavaScript",correction:"No Correction",targetcache:"Target Cache",playeveryframe:"Play Every Frame",kioskmode:"Kiosk Mode",controller:"Controller",menu:"Show Menu",loop:"Loop",play:"Auto Play",hspace:"H-Space",vspace:"V-Space","class_name":"Class",name:"Name",id:"ID",type:"Type",size:"Dimensions",preview:"Preview","constrain_proportions":"Constrain Proportions",controls:"Controls",numloop:"Num Loops",console:"Console",cache:"Cache",autohref:"Auto HREF",liveconnect:"SWLiveConnect",flashvars:"Flash Vars",base:"Base",bgcolor:"Background",wmode:"WMode",salign:"SAlign",align:"Align",scale:"Scale",quality:"Quality",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No Java",maintainaspect:"Maintain Aspect",imagestatus:"Image Status",center:"Center",autogotourl:"Auto Goto URL","shockwave_options":"Shockwave Options","rmp_options":"Real Media Player Options","wmp_options":"Windows Media Player Options","qt_options":"QuickTime Options","flash_options":"Flash Options",hidden:"Hidden","align_bottom_left":"Bottom Left","align_bottom_right":"Bottom Right","html5_video_options":"HTML5 Video Options",altsource1:"Alternative source 1",altsource2:"Alternative source 2",preload:"Preload",poster:"Poster",source:"Source","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide", "embedded_audio_options":"Embedded Audio Options", video:"HTML5 Video", audio:"HTML5 Audio", flash:"Flash", quicktime:"QuickTime", shockwave:"Shockwave", windowsmedia:"Windows Media", realmedia:"Real Media", iframe:"Iframe", embeddedaudio:"Embedded Audio" });
diff --git a/program/js/tiny_mce/plugins/media/langs/eo_dlg.js b/program/js/tiny_mce/plugins/media/langs/eo_dlg.js
deleted file mode 100644
index 73b1fb956..000000000
--- a/program/js/tiny_mce/plugins/media/langs/eo_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('eo.media_dlg',{list:"Listo",file:"Dosiero/Adreso",advanced:"Sperta",general:"\u0108efa",title:"Enmeti/Redakti enhavon enkonstruitan","align_top_left":"Supre-maldekstre","align_center":"Meze","align_left":"Maldekstre","align_bottom":"Sube","align_right":"Dekstre","align_top":"Supre","qt_stream_warn":"Fluoj de risurcoj rtsp devas esti aldonitaj al la kampo QT Src en la Sperta Re\u011dimo.\nVersio sen fluo anka\u016d devas esti aldonita al la kampo Src.",qtsrc:"QT Src",progress:"Progreso",sound:"Sono",swstretchvalign:"Devigi V-Liniigon",swstretchhalign:"Devigi H-Liniigon",swstretchstyle:"Devigi Stilon",scriptcallbacks:"Revokojn de skriptoj","align_top_right":"Supre-dekstre",uimode:"UI-re\u011dimo",rate:"Rapido",playcount:"Kalkulo de a\u016dskultantoj",defaultframe:"Defa\u016dlta kadro",currentposition:"Aktuala pozicio",currentmarker:"Aktuala markilo",captioningid:"ID de subteksto",baseurl:"Baza URL",balance:"Stereo",windowlessvideo:"Video sen fenestro",stretchtofit:"Etendi",mute:"Sen sono",invokeurls:"Voki URL-oj",fullscreen:"Plenekrane",enabled:"Aktiva",autostart:"A\u016dtomata starto",volume:"La\u016dteco",target:"Celo",qtsrcchokespeed:"Malrapidigi",href:"Ligilo",endtime:"Tempo de fino",starttime:"Tempo de komenco",enablejavascript:"Aktivigi JavaScript-on",correction:"Sen correktoj",targetcache:"Cela ka\u015dmemoro",playeveryframe:"Ludi \u0109iujn kadrojn",kioskmode:"Kioskre\u011dimo",controller:"Kontrolilo",menu:"Montri menuon",loop:"A\u016dtomata ripetado",play:"A\u016dtomata starto",hspace:"Horizontala spaco",vspace:"Verticala spaco","class_name":"Klaso",name:"Nomo",id:"Id",type:"Tipo",size:"Dimensioj",preview:"Anta\u016dvido","constrain_proportions":"Konservi proporcion",controls:"Komandoj",numloop:"Ripetado",console:"Konzolo",cache:"Ka\u015dmemoro",autohref:"A\u016dtoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Bazo",bgcolor:"Fono",wmode:"WMode",salign:"SAlign",align:"Liniigo",scale:"Skalo",quality:"Kvalito",shuffle:"Hazarda ordo",prefetch:"Anta\u016dvenigi",nojava:"Sen Java",maintainaspect:"Konservi aspekton",imagestatus:"Stato de bildo",center:"Centro",autogotourl:"A\u016dtomate malfermi adreson","shockwave_options":"Agordoj de Shockwave","rmp_options":"Agordoj de Real Media Player","wmp_options":"Agordoj de Windows Media Player","qt_options":"Agordoj de Quicktime","flash_options":"Agordoj de Flash",hidden:"Ka\u015dita","align_bottom_left":"Sube-maldekstre","align_bottom_right":"Sube-dekstre","html5_video_options":"Agordoj pri HTML5-video",altsource1:"Alternativa kodo 1",altsource2:"Alternativa kodo 2",preload:"Anta\u016d\u015dargi",poster:"Afi\u015do",source:"Fonto","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/es_dlg.js b/program/js/tiny_mce/plugins/media/langs/es_dlg.js
deleted file mode 100644
index 4d84bb156..000000000
--- a/program/js/tiny_mce/plugins/media/langs/es_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('es.media_dlg',{list:"Lista",file:"Archivo/URL",advanced:"Avanzado",general:"General",title:"Insertar/editar medio embebido","align_top_left":"Arriba Izda.","align_center":"Centrado","align_left":"Izquierda","align_bottom":"Debajo","align_right":"Derecha","align_top":"Arriba","qt_stream_warn":"Los recursos rtsp de Streaming deber\u00edan a\u00f1adirse en el campo QT Src de la pesta\u00f1a avanzada.\nAdem\u00e1s deber\u00eda a\u00f1adir una versi\u00f3n no Streaming en el campo Src.",qtsrc:"QT Src",progress:"Progreso",sound:"Sonido",swstretchvalign:"Alin. V. Estiramiento",swstretchhalign:"Alin. H. Estiramiento",swstretchstyle:"Estilo estiramiento",scriptcallbacks:"Script callbacks","align_top_right":"Arriba Dcha.",uimode:"Modo UI",rate:"Ratio",playcount:"Cuantas reproducciones",defaultframe:"Frame predet.",currentposition:"Posici\u00f3n actual",currentmarker:"Marcador actual",captioningid:"Captioning id",baseurl:"URL Base",balance:"Balance",windowlessvideo:"Video sin ventana",stretchtofit:"Estirar para ajustar",mute:"Silencio",invokeurls:"Invocar URLs",fullscreen:"Pantalla Completa",enabled:"Habilitado",autostart:"Comienzo Autom\u00e1tico",volume:"Volumen",target:"Target",qtsrcchokespeed:"Vel. de choque",href:"Href",endtime:"Fin",starttime:"Inicio",enablejavascript:"Habilitar JavaScript",correction:"Sin correci\u00f3n",targetcache:"Cach\u00e9 de destino",playeveryframe:"Reproducir todo los frames",kioskmode:"Modo Kiosko",controller:"Controlador",menu:"Mostrar Men\u00fa",loop:"Repetitivo",play:"Comienzo Autom\u00e1tico",hspace:"H-Space",vspace:"V-Space","class_name":"Clase",name:"Nombre",id:"Id",type:"Tipo",size:"Dimensiones",preview:"Vista Previa","constrain_proportions":"Bloquear relaci\u00f3n de aspecto",controls:"Controles",numloop:"N\u00fam. repeticiones",console:"Consola",cache:"Cach\u00e9",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Variables de flash",base:"Base",bgcolor:"Fondo",wmode:"WMode",salign:"SAlign",align:"Alineaci\u00f3n",scale:"Escalar",quality:"Calidad",shuffle:"Aleatorio",prefetch:"Preb\u00fasqueda",nojava:"Sin java",maintainaspect:"Mantener aspecto",imagestatus:"Estado de imagen",center:"Centrado",autogotourl:"Ir a URL autom\u00e1t.","shockwave_options":"Opciones Shockwave","rmp_options":"Opciones Real media player","wmp_options":"Opciones Windows media player","qt_options":"Opciones Quicktime","flash_options":"Opciones Flash",hidden:"Oculto","align_bottom_left":"Debajo Izda.","align_bottom_right":"Debajo Dcha.",flash:"flash",quicktime:"quicktime","embedded_audio_options":"Opciones sobre Audio incrustado",windowsmedia:"windowsmedia",realmedia:"realmedia",shockwave:"shockwave",audio:"audio",video:"video","html5_video_options":"Opciones Video HTML5",altsource1:"Fuente alternativa 1",altsource2:"Fuente alternativa 2",preload:"Precarga",poster:"P\u00f3ster",source:"Fuente","html5_audio_options":"Opciones de audio","preload_none":"No recargar","preload_metadata":"Metadatos de la precarga de v\u00eddeo","preload_auto":"Permitir que decida el navegador del usuario",iframe:"iframe",embeddedaudio:"audio incrustado"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/et_dlg.js b/program/js/tiny_mce/plugins/media/langs/et_dlg.js
deleted file mode 100644
index 0e305b0af..000000000
--- a/program/js/tiny_mce/plugins/media/langs/et_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('et.media_dlg',{list:"Nimekiri",file:"Fail/URL",advanced:"T\u00e4psem",general:"\u00dcldine",title:"Sisesta/muuda meediat","align_top_left":"\u00dcleval vasakul","align_center":"Keskel","align_left":"Vasakul","align_bottom":"All","align_right":"Paremal","align_top":"\u00dcleval","qt_stream_warn":"Striimitav variant peaks olema lisatud.",qtsrc:"QT Src",progress:"Progress",sound:"Heli",swstretchvalign:"Venita V-joondust",swstretchhalign:"Venita H-joondust",swstretchstyle:"Venita stiili",scriptcallbacks:"Skripti tagasikutse","align_top_right":"Pleval paremal",uimode:"UI Reziim",rate:"Hinda",playcount:"M\u00e4ngukorrad",defaultframe:"Vaikimisi raam",currentposition:"Antud positioon",currentmarker:"Antud marker",captioningid:"Tiitri ID",baseurl:"Baas URL",balance:"Tasakaal",windowlessvideo:"Aknata video",stretchtofit:"Venita sobivaks",mute:"Vaigista",invokeurls:"N\u00e4ita URL\u2019e",fullscreen:"T\u00e4isekraan",enabled:"Lubatud",autostart:"Auto-start",volume:"Valjudus",target:"Sihtm\u00e4rk",qtsrcchokespeed:"Kiirus",href:"Href",endtime:"L\u00f5pu aeg",starttime:"Stardi aeg",enablejavascript:"Luba JavaScript\u2019i",correction:"Parandust ei ole",targetcache:"Sihtm\u00e4rgi vahem\u00e4lu",playeveryframe:"M\u00e4ngi igat raami",kioskmode:"Kioski reziim",controller:"Kontrollija",menu:"N\u00e4ita men\u00fc\u00fcd",loop:"Auto-kordus",play:"Auto-start",hspace:"H-vahe",vspace:"V-vahe","class_name":"Klass",name:"Nime",id:"ID",type:"T\u00fc\u00fcp",size:"M\u00f5\u00f5dud",preview:"Eelvaade","constrain_proportions":"S\u00e4ilita proportsioon",controls:"Kontrollid",numloop:"Kordused",console:"Konsool",cache:"Vahem\u00e4lu",autohref:"Auto-HREF",liveconnect:"SWLive-\u00dchendus",flashvars:"Flashiv\u00e4rk",base:"Baas",bgcolor:"Taust",wmode:"WMoodus",salign:"SJoondus",align:"Joondus",scale:"M\u00f5\u00f5tkava",quality:"Kvaliteet",shuffle:"Sega",prefetch:"Prefetch",nojava:"Ilma java\u2019ta",maintainaspect:"S\u00e4ilitamise aspekt",imagestatus:"Pildi staatus",center:"Keskel",autogotourl:"Auto-URL","shockwave_options":"Shockwave\u2019i seaded","rmp_options":"Real media player\u2019i seaded","wmp_options":"Windows media player\u2019i seaded","qt_options":"Quicktime\u2019 seaded","flash_options":"Flash\u2019i seaded",hidden:"Peidetud","align_bottom_left":"All vasakul","align_bottom_right":"All paremal",flash:"flash",quicktime:"quicktime","embedded_audio_options":"Manustatud heli valikud",windowsmedia:"windowsmedia",realmedia:"realmedia ",shockwave:"shockwave ",audio:"audio",video:"video","html5_video_options":"HTML5 video valikud",altsource1:"Alternatiivallikas 1",altsource2:"Alternatiivallikas 2",preload:"Eellae",poster:"Poster",source:"Allikas","html5_audio_options":"Heli valikud","preload_none":"\u00c4ra eellae","preload_metadata":"Eellae video metaandmed","preload_auto":"Lase kasutaja brauseril otsustada",iframe:"iframe",embeddedaudio:"embeddedaudio"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/eu_dlg.js b/program/js/tiny_mce/plugins/media/langs/eu_dlg.js
deleted file mode 100644
index 679338944..000000000
--- a/program/js/tiny_mce/plugins/media/langs/eu_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('eu.media_dlg',{list:"Zerrenda",file:"Fitxategia/URL",advanced:"Aurreratua",general:"Orokorra",title:"Sartu / editatu ahokatutako euskarria","align_top_left":"Goian ezkerran","align_center":"Erdian","align_left":"Ezkerrean","align_bottom":"Behean","align_right":"Eskuinean","align_top":"Goian","qt_stream_warn":"Streaming bidez ematen diren rtsp baliabideak aurreratuak fitxa n dagoen QT Src eremuan gehitu behar dira.\n Streaming gabeko bertsio bat ere gehitu beharko zenuke.",qtsrc:"QT Src",progress:"Aurrerapena",sound:"Soinua",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks","align_top_right":"Goian eskuinean",uimode:"UI Modua",rate:"Rate",playcount:"Play count",defaultframe:"Lehenetsitako fotograma",currentposition:"Uneko posizioa",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balanzea",windowlessvideo:"Lehiogabeko bideoa",stretchtofit:"Neurrikoa izateko zabaldu",mute:"Ixilik",invokeurls:"URLa deitu",fullscreen:"Pantaila osoa",enabled:"Gaituta",autostart:"Automatikoki hasi",volume:"Bolumena",target:"Helburua",qtsrcchokespeed:"Talka abiadura",href:"Href",endtime:"Noiz bukatu",starttime:"Noiz hasi",enablejavascript:"Gaitu JavaScript",correction:"Zuzenketarik ez",targetcache:"Helburu katxea",playeveryframe:"Marko guztiak erreproduzitu",kioskmode:"Kiosko modua",controller:"Controller",menu:"Erakutsi menua",loop:"Begizta",play:"Auto play",hspace:"H-Space",vspace:"V-Space","class_name":"Klasea",name:"Izena",id:"Id",type:"Mota",size:"Tamaina",preview:"Aurrebista","constrain_proportions":"Itxura erlazioa blokeatu",controls:"Kontrolak",numloop:"Begizta kopurua",console:"Konsola",cache:"Katxea",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Oinarria",bgcolor:"Atzea",wmode:"WMode",salign:"SAlign",align:"Lerrokatu",scale:"Eskalatu",quality:"Kalitatea",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"Java ez",maintainaspect:"Itxura mantendu",imagestatus:"Irudi edoera",center:"Erdian",autogotourl:"Automatikoi joan URLra","shockwave_options":"Shockwave aukerak","rmp_options":"Real media player aukerak","wmp_options":"Windows media player aukerak","qt_options":"Quicktime aukerak","flash_options":"Flash aukerak",hidden:"Ezkutuan","align_bottom_left":"Behean ezkerrean","align_bottom_right":"Behean eskuinean","html5_video_options":"HTML5 bideo aukerak",altsource1:"Ordezko iturria 1",altsource2:"Ordezko iturria 2",preload:"Aurrekargatu",poster:"Posterra",source:"Iturria","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/fa_dlg.js b/program/js/tiny_mce/plugins/media/langs/fa_dlg.js
deleted file mode 100644
index 13ac8b4f7..000000000
--- a/program/js/tiny_mce/plugins/media/langs/fa_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fa.media_dlg',{list:"\u0644\u06cc\u0633\u062a",file:"\u0641\u0627\u06cc\u0644/\u0622\u062f\u0631\u0633 \u0648\u0628",advanced:"\u067e\u06cc\u0634\u0631\u0641\u062a\u0647",general:"\u0639\u0645\u0648\u0645\u06cc",title:"\u062f\u0631\u062c / \u0648\u06cc\u0631\u0627\u06cc\u0634 \u0631\u0633\u0627\u0646\u0647 \u062c\u0627\u0633\u0627\u0632\u06cc \u0634\u062f\u0647 (Embeded Media)","align_top_left":"\u0628\u0627\u0644\u0627 \u0686\u067e","align_center":"\u0648\u0633\u0637","align_left":"\u0686\u067e","align_bottom":"\u067e\u0627\u06cc\u06cc\u0646","align_right":"\u0631\u0627\u0633\u062a","align_top":"\u0628\u0627\u0644\u0627","qt_stream_warn":"\u0645\u0646\u0627\u0628\u0639 Streamed rtsp \u0628\u0627\u06cc\u062f \u062f\u0631 \u0628\u0631\u06af\u0647 (Tab) \u067e\u06cc\u0634\u0631\u0641\u062a\u0647 \u062f\u0631 \u0641\u06cc\u0644\u062f \u0645\u0646\u0628\u0639 QT \u0627\u0636\u0627\u0641\u0647 \u0634\u0648\u062f.\n\u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u0647\u0645\u0686\u0646\u06cc\u0646 \u06cc\u06a9 \u0646\u0633\u062e\u0647 \u063a\u06cc\u0631 streamed \u0631\u0627 \u062f\u0631 \u0641\u06cc\u0644\u062f \u0645\u0646\u0628\u0639 \u0627\u0636\u0627\u0641\u0647 \u0646\u0645\u0627\u0626\u06cc\u062f..",qtsrc:"\u0645\u0646\u0628\u0639 QT",progress:"\u067e\u06cc\u0634\u0631\u0641\u062a",sound:"\u0635\u062f\u0627",swstretchvalign:"\u06a9\u0634\u06cc\u062f\u0646 \u062a\u0631\u0627\u0632 \u0639\u0645\u0648\u062f\u06cc",swstretchhalign:"\u06a9\u0634\u06cc\u062f\u0646 \u062a\u0631\u0627\u0632 \u0627\u0641\u0642\u06cc",swstretchstyle:"\u06a9\u0634\u06cc\u062f\u0646 \u0627\u0633\u062a\u0627\u06cc\u0644",scriptcallbacks:"\u0627\u0633\u06a9\u0631\u06cc\u067e\u062a Callbacks","align_top_right":"\u0628\u0627\u0644\u0627 \u0631\u0627\u0633\u062a",uimode:"\u062d\u0627\u0644\u062a UI",rate:"\u0646\u0631\u062e",playcount:"\u062a\u0639\u062f\u0627\u062f \u067e\u062e\u0634",defaultframe:"\u0641\u0631\u06cc\u0645 \u067e\u06cc\u0634\u0641\u0631\u0636",currentposition:"\u0645\u0648\u0642\u0639\u06cc\u062a \u0641\u0639\u0644\u06cc",currentmarker:"\u0646\u0634\u0627\u0646\u06af\u0631 \u0641\u0639\u0644\u06cc",captioningid:"\u0634\u0646\u0627\u0633\u0647 \u0639\u0646\u0648\u0627\u0646",baseurl:"\u0622\u062f\u0631\u0633 \u067e\u0627\u06cc\u0647",balance:"\u062a\u0648\u0627\u0632\u0646 (Balance)",windowlessvideo:"\u0648\u06cc\u062f\u0626\u0648\u06cc \u0628\u062f\u0648\u0646 \u067e\u0646\u062c\u0631\u0647",stretchtofit:"\u06a9\u0634\u06cc\u062f\u0646 \u062c\u0647\u062a \u06af\u0646\u062c\u0627\u0646\u062f\u0646 \u06a9\u0627\u0645\u0644",mute:"\u0628\u06cc \u0635\u062f\u0627",invokeurls:"\u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0622\u062f\u0631\u0633 \u0647\u0627",fullscreen:"\u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647",enabled:"\u0641\u0639\u0627\u0644 \u0634\u062f\u0647",autostart:"\u0634\u0631\u0648\u0639 \u0627\u062a\u0648\u0645\u0627\u062a\u06cc\u06a9",volume:"\u0628\u0644\u0646\u062f\u06cc \u0635\u062f\u0627",target:"\u0645\u0642\u0635\u062f (Target)",qtsrcchokespeed:"\u0633\u0631\u0639\u062a Choke",href:"HREF",endtime:"\u0632\u0645\u0627\u0646 \u067e\u0627\u06cc\u0627\u0646",starttime:"\u0632\u0645\u0627\u0646 \u0634\u0631\u0648\u0639",enablejavascript:"\u0641\u0639\u0627\u0644 \u0628\u0648\u062f\u0646 JavaScript",correction:"\u0628\u062f\u0648\u0646 \u062a\u0635\u062d\u06cc\u062d",targetcache:"\u06a9\u0634 \u0645\u0642\u0635\u062f (Target Cache)",playeveryframe:"\u067e\u062e\u0634 \u0647\u0631 \u0641\u0631\u06cc\u0645 (Frame)",kioskmode:"\u062d\u0627\u0644\u062a \u06a9\u06cc\u0648\u0633\u06a9",controller:"\u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u0646\u062f\u0647",menu:"\u0646\u0645\u0627\u06cc\u0634 \u0645\u0646\u0648",loop:"\u062d\u0644\u0642\u0647 (Loop)",play:"\u067e\u062e\u0634 \u0627\u062a\u0648\u0645\u0627\u062a\u06cc\u06a9",hspace:"\u0641\u0627\u0635\u0644\u0647 \u0627\u0641\u0642\u06cc",vspace:"\u0641\u0627\u0635\u0644\u0647 \u0639\u0645\u0648\u062f\u06cc","class_name":"\u06a9\u0644\u0627\u0633",name:"\u0646\u0627\u0645",id:"\u0634\u0646\u0627\u0633\u0647",type:"\u0646\u0648\u0639",size:"\u0627\u0628\u0639\u0627\u062f",preview:"\u067e\u06cc\u0634 \u0646\u0645\u0627\u06cc\u0634","constrain_proportions":"\u062d\u0641\u0638 \u062a\u0646\u0627\u0633\u0628",controls:"\u06a9\u0646\u062a\u0631\u0644 \u0647\u0627",numloop:"\u062a\u0639\u062f\u0627\u062f \u062d\u0644\u0642\u0647 \u0647\u0627",console:"\u06a9\u0646\u0633\u0648\u0644",cache:"\u06a9\u0634",autohref:"HREF \u0627\u062a\u0648\u0645\u0627\u062a\u06cc\u06a9",liveconnect:"\u0627\u0631\u062a\u0628\u0627\u0637 SWLive",flashvars:"\u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc Flash",base:"\u067e\u0627\u06cc\u0647 (Base)",bgcolor:"\u067e\u0633 \u0632\u0645\u06cc\u0646\u0647",wmode:"WMode",salign:"SAlign",align:"\u062a\u0631\u0627\u0632",scale:"\u0645\u0642\u06cc\u0627\u0633",quality:"\u06a9\u06cc\u0641\u06cc\u062a",shuffle:"\u062f\u0631 \u0647\u0645 \u0622\u0645\u06cc\u062e\u062a\u0647",prefetch:"\u067e\u06cc\u0634 \u0648\u0627\u06a9\u0634\u06cc",nojava:"\u0628\u062f\u0648\u0646 java",maintainaspect:"\u062d\u0641\u0638 \u062a\u0646\u0627\u0633\u0628 \u0648\u062c\u0648\u0647",imagestatus:"\u0648\u0636\u0639\u06cc\u062a \u062a\u0635\u0648\u06cc\u0631",center:"\u0648\u0633\u0637",autogotourl:"\u0631\u0641\u062a\u0646 \u0627\u062a\u0648\u0645\u0627\u062a\u06cc\u06a9 \u0628\u0647 URL","shockwave_options":"\u062a\u0646\u0638\u06cc\u0645\u0627\u062a Shockwave","rmp_options":"\u062a\u0646\u0638\u06cc\u0645\u0627\u062a Real media player","wmp_options":"\u062a\u0646\u0638\u06cc\u0645\u0627\u062a Windows media player","qt_options":"\u062a\u0646\u0638\u06cc\u0645\u0627\u062a Quicktime","flash_options":"\u062a\u0646\u0638\u06cc\u0645\u0627\u062a Flash",hidden:"\u0645\u062e\u0641\u06cc","align_bottom_left":"\u067e\u0627\u06cc\u06cc\u0646 \u0686\u067e","align_bottom_right":"\u067e\u0627\u06cc\u06cc\u0646 \u0631\u0627\u0633\u062a",flash:"flash",quicktime:"quicktime","embedded_audio_options":"\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0635\u062f\u0627\u06cc \u062c\u0627\u0633\u0627\u0632\u06cc \u0634\u062f\u0647",windowsmedia:"windowsmedia",realmedia:"realmedia",shockwave:"shockwave",audio:"\u0635\u062f\u0627",video:"\u0648\u06cc\u062f\u0626\u0648","html5_video_options":"\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0648\u06cc\u062f\u0626\u0648\u06cc HTML5",altsource1:"\u0645\u0646\u0628\u0639 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 1",altsource2:"\u0645\u0646\u0628\u0639 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 2",preload:"\u067e\u06cc\u0634\u200c \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc",poster:"\u067e\u0648\u0633\u062a\u0631",source:"\u0645\u0646\u0628\u0639","html5_audio_options":"\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0635\u062f\u0627","preload_none":"\u067e\u06cc\u0634 \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc \u0646\u06a9\u0646","preload_metadata":" \u067e\u06cc\u0634 \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0648\u06cc\u062f\u0626\u0648\u06cc\u06cc","preload_auto":"\u062a\u0635\u0645\u06cc\u0645 \u0628\u0627 \u0645\u0631\u0648\u0631\u06af\u0631 \u06a9\u0627\u0631\u0628\u0631",iframe:"iframe",embeddedaudio:"embeddedaudio"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/fi_dlg.js b/program/js/tiny_mce/plugins/media/langs/fi_dlg.js
deleted file mode 100644
index 2ac2fcac1..000000000
--- a/program/js/tiny_mce/plugins/media/langs/fi_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fi.media_dlg',{list:"Lista",file:"Tiedosto/URL",advanced:"Edistyneet",general:"Yleiset",title:"Lis\u00e4\u00e4/muokkaa upotettua mediaa","align_top_left":"Yl\u00e4-vasemmalla","align_center":"Keskell\u00e4","align_left":"Vasemmalla","align_bottom":"Alhaalla","align_right":"Oikealla","align_top":"Ylh\u00e4\u00e4ll\u00e4","qt_stream_warn":"Streamatut rtsp-resurssit tulisi lis\u00e4t\u00e4 QT Src -kentt\u00e4\u00e4n edistynyt-v\u00e4lilehdelle.\nSinun kannattaa lis\u00e4t\u00e4 my\u00f6s ei-streamattu versio Src-kentt\u00e4\u00e4n.",qtsrc:"QT Src",progress:"Eteneminen",sound:"\u00c4\u00e4ni",swstretchvalign:"Venyt\u00e4 pystysuunnassa",swstretchhalign:"Venyt\u00e4 vaakasuunnassa",swstretchstyle:"Venytystyyli",scriptcallbacks:"Skriptin takaisinkutsut","align_top_right":"Yl\u00e4-oikealla",uimode:"UI-moodi",rate:"Rate",playcount:"Toistolaskin",defaultframe:"Oletusruutu",currentposition:"T\u00e4m\u00e4nhetkinen sijainti",currentmarker:"T\u00e4m\u00e4nhetkinen merkki",captioningid:"Otsikointi-id",baseurl:"Perus URL-osoitteet",balance:"Tasapaino",windowlessvideo:"Ikkunaton video",stretchtofit:"Venyt\u00e4 sopimaan",mute:"Hiljennys",invokeurls:"Kutsu URL-osoitteet",fullscreen:"Kokoruutu",enabled:"P\u00e4\u00e4ll\u00e4",autostart:"Automaattinen aloitus",volume:"\u00c4\u00e4nen voimakkuus",target:"Kohde",qtsrcchokespeed:"Choke-nopeus",href:"Href",endtime:"Lopetusaika",starttime:"Aloitusaika",enablejavascript:"Salli JavaScript",correction:"Ei korjausta",targetcache:"Kohteen v\u00e4limuisti",playeveryframe:"Toista jokainen ruutu",kioskmode:"Kioskitila",controller:"Ohjain",menu:"N\u00e4yt\u00e4 valikko",loop:"Silmukka",play:"Automaattinen toisto",hspace:"Vaakatason tila",vspace:"Pystytason tila","class_name":"Luokka",name:"Nimi",id:"Tunniste",type:"Tyyppi",size:"Mitat",preview:"Esikatselu","constrain_proportions":"S\u00e4ilyt\u00e4 mittasuhteet",controls:"Kontrollit",numloop:"Toistojen m\u00e4\u00e4r\u00e4",console:"Konsoli",cache:"V\u00e4limuisti",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flash-muuttujat",base:"Perusta",bgcolor:"Tausta",wmode:"WMode",salign:"SAlign",align:"Tasaus",scale:"Skaala",quality:"Laatu",shuffle:"Sekoita",prefetch:"Esinouda",nojava:"Ei Javaa",maintainaspect:"S\u00e4ilyt\u00e4 kuvasuhde",imagestatus:"Kuvan tila",center:"Keskit\u00e4",autogotourl:"Mene automaattisesti URL:iin","shockwave_options":"Shockwaven asetukset","rmp_options":"Real media playerin asetukset","wmp_options":"Windows media playerin asetukset","qt_options":"Quicktimen asetukset","flash_options":"Flashin asetukset",hidden:"Piilotettu","align_bottom_left":"Ala-vasemmalla","align_bottom_right":"Ala-oikealla",flash:"flash",quicktime:"quicktime","embedded_audio_options":"Upotetun \u00e4\u00e4nen asetukset",windowsmedia:"windowsmedia",realmedia:"realmedia",shockwave:"shockwave",audio:"audio",video:"video","html5_video_options":"HTML5 videoasetukset",altsource1:"Vaihtoehtoinen l\u00e4hde 1",altsource2:"Vaihtoehtoinen l\u00e4hde 2",preload:"Esilataa",poster:"Posteri",source:"L\u00e4hde","html5_audio_options":"\u00c4\u00e4niasetukset","preload_none":"\u00c4l\u00e4 esilataa","preload_metadata":"Esilataa videon metatiedot","preload_auto":"Anna k\u00e4ytt\u00e4j\u00e4n selaimen p\u00e4\u00e4tt\u00e4\u00e4",iframe:"iframe",embeddedaudio:"upotettu audio"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/fr_dlg.js b/program/js/tiny_mce/plugins/media/langs/fr_dlg.js
deleted file mode 100644
index 90b0102dd..000000000
--- a/program/js/tiny_mce/plugins/media/langs/fr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fr.media_dlg',{list:"Liste",file:"Fichier / URL",advanced:"Avanc\u00e9",general:"G\u00e9n\u00e9ral",title:"Ins\u00e9rer / \u00e9diter un fichier m\u00e9dia","align_top_left":"En haut \u00e0 gauche","align_center":"Centr\u00e9","align_left":"Gauche","align_bottom":"Bas","align_right":"Droite","align_top":"Haut","qt_stream_warn":"Les ressources rtsp en streaming doivent \u00eatre ajout\u00e9es au champ \u00ab Source QT \u00bb dans l\'onglet avanc\u00e9.\nVous devriez aussi ajouter une version n\'\u00e9tant pas en streaming au champ \u00ab source QT \u00bb.",qtsrc:"Source QT",progress:"Progression",sound:"Son",swstretchvalign:"Stretch vertical",swstretchhalign:"Stretch horizontal",swstretchstyle:"Stretch style",scriptcallbacks:"Callback de script","align_top_right":"En haut \u00e0 droite",uimode:"Mode UI",rate:"Taux",playcount:"Compteur",defaultframe:"Image par d\u00e9faut",currentposition:"Position actuelle",currentmarker:"Marqueur actuel",captioningid:"ID sous-titrage",baseurl:"Adresse de base",balance:"Balance",windowlessvideo:"Vid\u00e9o sans fen\u00eatre",stretchtofit:"\u00c9tendre pour adapter la taille",mute:"Muet",invokeurls:"Invoquer URLs",fullscreen:"Plein \u00e9cran",enabled:"Activ\u00e9",autostart:"Lire automatiquement",volume:"Volume",target:"Cible",qtsrcchokespeed:"D\u00e9bit maximum",href:"Href",endtime:"Fin",starttime:"D\u00e9but",enablejavascript:"Activer le JavaScript",correction:"Pas de correction",targetcache:"Cache cible",playeveryframe:"Jouer toutes les images",kioskmode:"Mode kiosque",controller:"Contr\u00f4leur",menu:"Afficher le menu",loop:"Lire en boucle",play:"Lecture automatique",hspace:"Espacement horizontal",vspace:"Espacement vertical","class_name":"Classe",name:"Nom",id:"Id",type:"Type",size:"Dimensions",preview:"Pr\u00e9visualisation","constrain_proportions":"Conserver les proportions",controls:"Contr\u00f4les",numloop:"Nombre de tours",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Variables flash",base:"Base",bgcolor:"Fond",wmode:"WMode",salign:"SAlign",align:"Alignement",scale:"\u00c9chelle",quality:"Qualit\u00e9",shuffle:"Al\u00e9atoire",prefetch:"Pr\u00e9chargement",nojava:"Pas java",maintainaspect:"Maintenir l\'aspect",imagestatus:"Statut de l\'image",center:"Centrer",autogotourl:"Aller automatiquement \u00e0 l\'URL","shockwave_options":"Options Shockwave","rmp_options":"Options Real media player","wmp_options":"Windows media player options","qt_options":"Options Quicktime","flash_options":"Options Flash",hidden:"Cach\u00e9","align_bottom_left":"En bas \u00e0 gauche","align_bottom_right":"En bas \u00e0 droite",flash:"flash",quicktime:"quicktime","embedded_audio_options":"Options audio int\u00e9gr\u00e9es",windowsmedia:"windowsmedia",realmedia:"realmedia",shockwave:"shockwave",audio:"audio",video:"vid\u00e9o","html5_video_options":"Options Vid\u00e9o HTML 5",altsource1:"Source alternative 1",altsource2:"Source alternative 2",preload:"Pr\u00e9chargement",poster:"Poster",source:"Source","html5_audio_options":"Options audio","preload_none":"Ne pas pr\u00e9charger","preload_metadata":"Pr\u00e9charger les m\u00e9tadonn\u00e9es vid\u00e9o","preload_auto":"Laisser le fureteur de l\'utilisateur d\u00e9cider",iframe:"iframe",embeddedaudio:"embeddedaudio"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/gl_dlg.js b/program/js/tiny_mce/plugins/media/langs/gl_dlg.js
deleted file mode 100644
index c4848f39f..000000000
--- a/program/js/tiny_mce/plugins/media/langs/gl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('gl.media_dlg',{list:"Lista",file:"Arquivo/URL",advanced:"Avanzado",general:"Xeral",title:"Insertar/editar medio embebido","align_top_left":"Arriba Izda.","align_center":"Centrado","align_left":"Esquerda","align_bottom":"Abaixo","align_right":"Dereita","align_top":"Arriba","qt_stream_warn":"Os recursos rtsp de Streaming deber\u00edan engadirse no campo QT Src da pesta\u00f1a avanzada.\nAdem\u00e1is deber\u00eda engadir unha versi\u00f3n no Streaming no campo Src.",qtsrc:"QT Src",progress:"Progreso",sound:"Son",swstretchvalign:"Esturar ali\u00f1. V.",swstretchhalign:"Estirar ali\u00f1. H.",swstretchstyle:"Estilo estiramento",scriptcallbacks:"Script callbacks","align_top_right":"Arriba Dta.",uimode:"Modo UI",rate:"Relaci\u00f3n",playcount:"Cantas reproducci\u00f3ns",defaultframe:"Frame predet.",currentposition:"Posici\u00f3n actual",currentmarker:"Marcador actual",captioningid:"Id de lenda",baseurl:"URL Base",balance:"Balance",windowlessvideo:"Video sen vent\u00e1",stretchtofit:"Estirar pra axustar",mute:"Silencio",invokeurls:"Invocar URLs",fullscreen:"Pantalla Completa",enabled:"Habilitado",autostart:"Comezo Autom\u00e1tico",volume:"Volume",target:"Obxetivo",qtsrcchokespeed:"Vel. de choque",href:"Href",endtime:"Fin",starttime:"Inicio",enablejavascript:"Habilitar JavaScript",correction:"Sen correci\u00f3n",targetcache:"Obxetivo cache",playeveryframe:"Reproducir t\u00f3dolos frames",kioskmode:"Modo kiosco",controller:"Controller",menu:"Mostrar Men\u00fa",loop:"Repetitivo",play:"Comezo Autom\u00e1tico",hspace:"Espacio H.",vspace:"Espacio V.","class_name":"Clase",name:"Nome",id:"Id",type:"Tipo",size:"Tama\u00f1o",preview:"Vista Previa","constrain_proportions":"Bloquear proporci\u00f3ns",controls:"Controis",numloop:"N\u00fam. repetici\u00f3ns",console:"Consola",cache:"Cach\u00e9",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Fondo",wmode:"WMode",salign:"SAlign",align:"Ali\u00f1aci\u00f3n",scale:"Escala",quality:"Calidade",shuffle:"Aleatorio",prefetch:"PreBusca",nojava:"No java",maintainaspect:"Manter aspecto",imagestatus:"Estado de imaxe",center:"Centrado",autogotourl:"Ir a URL autom\u00e1t.","shockwave_options":"Opci\u00f3ns Shockwave","rmp_options":"Opci\u00f3ns Real media player","wmp_options":"Opci\u00f3ns Windows media player","qt_options":"Opci\u00f3ns Quicktime","flash_options":"Opci\u00f3ns Flash",hidden:"Oculto","align_bottom_left":"Abaixo Izda.","align_bottom_right":"Abaixo Dta.","html5_video_options":"HTML5 Video Options",altsource1:"Alternative source 1",altsource2:"Alternative source 2",preload:"Preload",poster:"Poster",source:"Source","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/he_dlg.js b/program/js/tiny_mce/plugins/media/langs/he_dlg.js
deleted file mode 100644
index 4bd005821..000000000
--- a/program/js/tiny_mce/plugins/media/langs/he_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('he.media_dlg',{list:"\u05e8\u05e9\u05d9\u05de\u05d4",file:"\u05db\u05ea\u05d5\u05d1\u05ea \u05d4\u05e7\u05d5\u05d1\u05e5",advanced:"\u05de\u05ea\u05e7\u05d3\u05dd",general:"\u05db\u05dc\u05dc\u05d9",title:"\u05d4\u05d5\u05e1\u05e4\u05ea/\u05e2\u05e8\u05d9\u05db\u05ea \u05e1\u05e8\u05d8\u05d5\u05df","align_top_left":"\u05e9\u05de\u05d0\u05dc \u05dc\u05de\u05e2\u05dc\u05d4","align_center":"\u05de\u05e8\u05db\u05d6","align_left":"\u05dc\u05e9\u05de\u05d0\u05dc","align_bottom":"\u05dc\u05de\u05d8\u05d4","align_right":"\u05d9\u05de\u05d9\u05df","align_top":"\u05dc\u05de\u05e2\u05dc\u05d4","qt_stream_warn":"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"\u05d4\u05ea\u05e7\u05d3\u05de\u05d5\u05ea",sound:"\u05e6\u05dc\u05d9\u05dc",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks","align_top_right":"\u05d9\u05de\u05d9\u05df \u05dc\u05de\u05e2\u05dc\u05d4",uimode:"\u05de\u05e6\u05d1 \u05ea\u05e6\u05d5\u05d2\u05d4",rate:"\u05e7\u05e6\u05d1",playcount:"\u05de\u05e1\u05e4\u05e8 \u05d4\u05e9\u05de\u05e2\u05d5\u05ea",defaultframe:"\u05e4\u05e8\u05d9\u05d9\u05dd \u05d1\u05e8\u05d9\u05e8\u05ea \u05de\u05d7\u05d3\u05dc",currentposition:"\u05de\u05d9\u05e7\u05d5\u05dd \u05e0\u05d5\u05db\u05d7\u05d9",currentmarker:"\u05e1\u05de\u05df \u05e0\u05d5\u05db\u05d7\u05d9",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless video",stretchtofit:"\u05de\u05ea\u05d7 \u05dc\u05d4\u05ea\u05d0\u05de\u05d4",mute:"\u05d4\u05e9\u05ea\u05e7",invokeurls:"Invoke URLs",fullscreen:"\u05de\u05e1\u05da \u05de\u05dc\u05d0",enabled:"\u05de\u05d5\u05e4\u05e2\u05dc",autostart:"\u05d4\u05ea\u05d7\u05dc \u05d0\u05d5\u05d8\u05d5\u05de\u05d8\u05d9\u05ea",volume:"\u05e2\u05d5\u05e6\u05de\u05d4",target:"\u05de\u05d8\u05e8\u05d4",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"\u05d6\u05de\u05df \u05e1\u05d9\u05d5\u05dd",starttime:"\u05d6\u05de\u05df \u05d4\u05ea\u05d7\u05dc\u05d4",enablejavascript:"\u05d0\u05e4\u05e9\u05e8 JavaScript",correction:"\u05dc\u05dc\u05d0 \u05ea\u05d9\u05e7\u05d5\u05df",targetcache:"Target cache",playeveryframe:"\u05e0\u05d2\u05df \u05db\u05dc \u05e4\u05e8\u05d9\u05d9\u05dd",kioskmode:"Kiosk mode",controller:"Controller",menu:"\u05d4\u05e6\u05d2\u05ea \u05ea\u05e4\u05e8\u05d9\u05d8",loop:"\u05e0\u05d2\u05d9\u05e0\u05d4 \u05de\u05d7\u05d6\u05d5\u05e8\u05d9\u05ea",play:"\u05e0\u05d2\u05d9\u05e0\u05d4 \u05d0\u05d5\u05d8\u05d5\u05de\u05d8\u05d9\u05ea \u05e2\u05dd \u05d4\u05d8\u05e2\u05d9\u05e0\u05d4",hspace:"\u05e8\u05d5\u05d5\u05d7 \u05d0\u05d5\u05e4\u05e7\u05d9",vspace:"\u05e8\u05d5\u05d5\u05d7 \u05d0\u05e0\u05db\u05d9","class_name":"\u05de\u05d7\u05dc\u05e7\u05d4",name:"\u05e9\u05dd",id:"Id",type:"\u05e1\u05d5\u05d2",size:"\u05e8\u05d5\u05d7\u05d1 \u05d5\u05d2\u05d5\u05d1\u05d4",preview:"\u05ea\u05e6\u05d5\u05d2\u05d4 \u05de\u05e7\u05d3\u05d9\u05de\u05d4","constrain_proportions":"\u05e9\u05de\u05d5\u05e8 \u05e2\u05dc \u05e4\u05e8\u05d5\u05e4\u05d5\u05e8\u05e6\u05d9\u05d5\u05ea",controls:"Controls",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"\u05de\u05e7\u05d5\u05e8",bgcolor:"\u05e6\u05d1\u05e2 \u05e8\u05e7\u05e2",wmode:"WMode",salign:"SAlign",align:"\u05d9\u05d9\u05e9\u05d5\u05e8",scale:"Scale",quality:"\u05d0\u05d9\u05db\u05d5\u05ea \u05d4\u05e1\u05e8\u05d8\u05d5\u05df",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Image status",center:"\u05de\u05e8\u05db\u05d6",autogotourl:"Auto goto URL","shockwave_options":"\u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea Shockwave","rmp_options":"\u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea \u05e0\u05d2\u05df Real Media","wmp_options":"\u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea \u05de\u05d3\u05d9\u05d4 \u05e4\u05dc\u05d9\u05d9\u05e8","qt_options":"\u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea Quicktime","flash_options":"\u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea \u05e4\u05dc\u05d0\u05e9",hidden:"Hidden","align_bottom_left":"\u05dc\u05de\u05d8\u05d4 \u05de\u05e9\u05de\u05d0\u05dc","align_bottom_right":"\u05dc\u05de\u05d8\u05d4 \u05de\u05d9\u05de\u05d9\u05df",flash:"Flash",quicktime:"quicktime","embedded_audio_options":"\u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea \u05d0\u05d5\u05d3\u05d9\u05d5 \u05de\u05e9\u05d5\u05dc\u05d1",windowsmedia:"windowsmedia",realmedia:"realmedia",shockwave:"shockwave",audio:"audio",video:"video","html5_video_options":"\u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea \u05d5\u05d9\u05d3\u05d0\u05d5 HTML5",altsource1:"\u05de\u05e7\u05d5\u05e8 \u05d7\u05dc\u05d5\u05e4\u05d9 1",altsource2:"\u05de\u05e7\u05d5\u05e8 \u05d7\u05dc\u05d5\u05e4\u05d9 2",preload:"Preload",poster:"\u05e4\u05d5\u05e1\u05d8\u05e8",source:"\u05de\u05e7\u05d5\u05e8","html5_audio_options":"\u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea \u05d0\u05d5\u05d3\u05d9\u05d5","preload_none":"Don\'t Preload","preload_metadata":"\u05d8\u05e2\u05df \u05de\u05d8\u05d4-\u05d8\u05d0\u05d2 \u05dc\u05d5\u05d5\u05d9\u05d3\u05d0\u05d5","preload_auto":"\u05d0\u05ea\u05df \u05dc\u05d3\u05e4\u05d3\u05e4\u05df \u05dc\u05d1\u05d7\u05d5\u05e8",iframe:"iframe",embeddedaudio:"embeddedaudio "}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/hi_dlg.js b/program/js/tiny_mce/plugins/media/langs/hi_dlg.js
deleted file mode 100644
index ea5656d07..000000000
--- a/program/js/tiny_mce/plugins/media/langs/hi_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hi.media_dlg',{list:"List",file:"File/URL",advanced:"Advanced",general:"General",title:"Insert / edit embedded media","align_top_left":"Top left","align_center":"Center","align_left":"Left","align_bottom":"Bottom","align_right":"Right","align_top":"Top","qt_stream_warn":"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks","align_top_right":"Top right",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Default frame",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless video",stretchtofit:"Stretch to fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Fullscreen",enabled:"Enabled",autostart:"Auto start",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"End time",starttime:"Start time",enablejavascript:"Enable JavaScript",correction:"No correction",targetcache:"Target cache",playeveryframe:"Play every frame",kioskmode:"Kiosk mode",controller:"Controller",menu:"Show menu",loop:"Loop",play:"Auto play",hspace:"H-Space",vspace:"V-Space","class_name":"Class",name:"Name",id:"Id",type:"Type",size:"Dimensions",preview:"Preview","constrain_proportions":"Constrain proportions",controls:"Controls",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Background",wmode:"WMode",salign:"SAlign",align:"Align",scale:"Scale",quality:"Quality",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Image status",center:"Center",autogotourl:"Auto goto URL","shockwave_options":"Shockwave options","rmp_options":"Real media player options","wmp_options":"Windows media player options","qt_options":"Quicktime options","flash_options":"Flash options",hidden:"Hidden","align_bottom_left":"Bottom left","align_bottom_right":"Bottom right","html5_video_options":"HTML5 Video Options",altsource1:"Alternative source 1",altsource2:"Alternative source 2",preload:"Preload",poster:"Poster",source:"Source","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/hr_dlg.js b/program/js/tiny_mce/plugins/media/langs/hr_dlg.js
deleted file mode 100644
index 7a19994fe..000000000
--- a/program/js/tiny_mce/plugins/media/langs/hr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hr.media_dlg',{list:"Lista",file:"Datoteka/URL",advanced:"Napredno",general:"Op\u0107e",title:"Dodaj / uredi ugra\u0111enu multimediju","align_top_left":"Gore lijevo","align_center":"Sredina","align_left":"Lijevo","align_bottom":"Dno","align_right":"Desno","align_top":"Gore","qt_stream_warn":"Izvori rtsp streamanja trebali bi biti dodani u QT Src polje u naprednom tabu.\nTako\u0111er, trebali bi dodati i obi\u010dnu verziju u Src polje...",qtsrc:"QT Src (Izvor)",progress:"Napredak",sound:"Zvuk",swstretchvalign:"Ra\u0161iri okomito",swstretchhalign:"Ra\u0161iri vodoravno",swstretchstyle:"Stil \u0161irenja",scriptcallbacks:"Poziv (callback) skripte","align_top_right":"Gore desno",uimode:"UI Mod",rate:"Brzina",playcount:"Broj izvedbi",defaultframe:"Osnovni okvir",currentposition:"Trenutna pozicija",currentmarker:"Trenutni znak",captioningid:"Id titlova",baseurl:"Osnovni URL",balance:"Balans",windowlessvideo:"Video bez prozora",stretchtofit:"Ra\u0161iri da stane",mute:"Isklju\u010di zvuk",invokeurls:"Dozovi URLove",fullscreen:"Cijeli ekran",enabled:"Omogu\u0107eno",autostart:"Automatsko pokretanje",volume:"Ja\u010dina zvuka",target:"Meta",qtsrcchokespeed:"Brzina kliza\u010da",href:"Href (lokacija)",endtime:"Vrijeme zavr\u0161etka",starttime:"Vrijeme po\u010detka",enablejavascript:"Omogu\u0107i JavaScript",correction:"Bez ispravka",targetcache:"Cache meta",playeveryframe:"Prila\u017ei svaki frame",kioskmode:"Kiosk mod",controller:"Kontrolor",menu:"Prila\u017ei izbornik",loop:"Kru\u017ena izvedba",play:"Automatska izvedba",hspace:"H-Space",vspace:"V-Space","class_name":"Class",name:"Ime (Name)",id:"Id",type:"Tip",size:"Dimenzije",preview:"Predpregled","constrain_proportions":"Zadr\u017ei proporcije",controls:"Kontrole",numloop:"Broj prikazivanja",console:"Konzola",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Pozadina",wmode:"WMode",salign:"SAlign",align:"Poravnanje",scale:"Veli\u010dina",quality:"Kvaliteta",shuffle:"Mije\u0161ani redoslijed",prefetch:"Prethodno punjenje",nojava:"Bez jave",maintainaspect:"Zadr\u017ei aspekt",imagestatus:"Status slike",center:"Sredina",autogotourl:"Automatski idi na URL","shockwave_options":"Shockwave opcije","rmp_options":"Real media player opcije","wmp_options":"Windows media player opcije","qt_options":"Quicktime opcije","flash_options":"Flash opcije",hidden:"Skriveno","align_bottom_left":"Dolje lijevo","align_bottom_right":"Dolje desno","html5_video_options":"HTML5 Video Opcije",altsource1:"Alternativni izvor 1",altsource2:"Alternativni izvor 2",preload:"Predhodno u\u010ditavanje",poster:"Poster",source:"Izvor","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/hu_dlg.js b/program/js/tiny_mce/plugins/media/langs/hu_dlg.js
deleted file mode 100644
index cccb421f1..000000000
--- a/program/js/tiny_mce/plugins/media/langs/hu_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hu.media_dlg',{list:"Lista",file:"F\u00e1jl/URL",advanced:"Halad\u00f3",general:"\u00c1ltal\u00e1nos",title:"Be\u00e1gyazott m\u00e9dia besz\u00far\u00e1sa/szerkeszt\u00e9se","align_top_left":"Bal-fent","align_center":"K\u00f6z\u00e9pen","align_left":"Balra","align_bottom":"Lent","align_right":"Jobbra","align_top":"Fent","qt_stream_warn":"Streamelt rtsp forr\u00e1sok a QT Src mez\u0151be val\u00f3k a halad\u00f3 lapon.\nHozz\u00e1 kellene adnia egy nem streamelt verzi\u00f3t a Src mez\u0151ben.",qtsrc:"QT Src",progress:"Folyamat",sound:"Hang",swstretchvalign:"Ny\u00fajt\u00e1s F-igaz\u00edt\u00e1s",swstretchhalign:"Ny\u00fajt\u00e1s V-igaz\u00edt\u00e1s",swstretchstyle:"Ny\u00fajt\u00e1s st\u00edlusa",scriptcallbacks:"Script callbacks","align_top_right":"Jobbra fent",uimode:"UI M\u00f3d",rate:"\u00c9rt\u00e9kel\u00e9s",playcount:"Lej\u00e1tsz\u00e1ssz\u00e1m",defaultframe:"Alap\u00e9rtelmezett frame",currentposition:"Aktu\u00e1lis poz\u00edci\u00f3",currentmarker:"Aktu\u00e1lis marker",captioningid:"Captioning id",baseurl:"Alap URL",balance:"Balance",windowlessvideo:"Ablak n\u00e9lk\u00fcli vide\u00f3",stretchtofit:"Ny\u00fajtva igaz\u00edt\u00e1s",mute:"N\u00e9ma",invokeurls:"URL-ek bevon\u00e1sa",fullscreen:"Teljes k\u00e9perny\u0151",enabled:"Enged\u00e9lyezve",autostart:"Automatikus kezd\u00e9s",volume:"Hanger\u0151",target:"C\u00e9l",qtsrcchokespeed:"Folyt\u00e1s sebess\u00e9ge",href:"Href",endtime:"Z\u00e1r\u00f3 id\u0151",starttime:"Kezd\u00e9si id\u0151",enablejavascript:"JavaScript enged\u00e9se",correction:"Nincs jav\u00edt\u00e1s",targetcache:"C\u00e9l cache",playeveryframe:"Minden kocka lej\u00e1tsz\u00e1sa",kioskmode:"Kiosk m\u00f3d",controller:"Vez\u00e9rl\u0151",menu:"Men\u00fc mutat\u00e1sa",loop:"Ism\u00e9tl\u00e9s",play:"Automatikus lej\u00e1tsz\u00e1s",hspace:"V-t\u00e1v",vspace:"F-t\u00e1v","class_name":"Oszt\u00e1ly",name:"N\u00e9v",id:"Id",type:"T\u00edpus",size:"M\u00e9retek",preview:"El\u0151n\u00e9zet","constrain_proportions":"Ar\u00e1nytart\u00e1s",controls:"Kezel\u0151k",numloop:"Ism\u00e9tl\u00e9ssz\u00e1m",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"H\u00e1tt\u00e9r",wmode:"WM\u00f3d",salign:"SElrendez\u00e9s",align:"Elrendez\u00e9s",scale:"Nagy\u00edt\u00e1s",quality:"Min\u0151s\u00e9g",shuffle:"V\u00e9letlenszer\u0171",prefetch:"El\u0151t\u00f6lt\u00e9s",nojava:"Nincs java",maintainaspect:"Ar\u00e1nytart\u00e1s",imagestatus:"K\u00e9p \u00e1llapot",center:"K\u00f6z\u00e9pre",autogotourl:"Automatikus URL-re ugr\u00e1s","shockwave_options":"Shockwave be\u00e1ll\u00edt\u00e1sai","rmp_options":"Real media player be\u00e1ll\u00edt\u00e1sai","wmp_options":"Windows media player be\u00e1ll\u00edt\u00e1sai","qt_options":"Quicktime be\u00e1ll\u00edt\u00e1sai","flash_options":"Flash be\u00e1ll\u00edt\u00e1sai",hidden:"Rejtett","align_bottom_left":"Bal-lent","align_bottom_right":"Bal-jobbra","embedded_audio_options":"Be\u00e1gyazott hang be\u00e1ll\u00edt\u00e1sok","html5_video_options":"HTML5 Video be\u00e1ll\u00edt\u00e1sok",altsource1:"Alternat\u00edv forr\u00e1s 1",altsource2:"Alternat\u00edv forr\u00e1s 2",preload:"El\u0151t\u00f6lt\u00e9s",poster:"Hozz\u00e1ad\u00f3",source:"Forr\u00e1s","html5_audio_options":"Audi\u00f3 be\u00e1ll\u00edt\u00e1sok","preload_none":"Nincs el\u0151reolvas\u00e1s","preload_metadata":"Vide\u00f3 metaadatok el\u0151reolvas\u00e1sa","preload_auto":"Hagyjuk a felhaszn\u00e1l\u00f3 b\u00f6ng\u00e9sz\u0151j\u00e9nek eld\u00f6nteni",flash:"",quicktime:"",windowsmedia:"",realmedia:"",shockwave:"",audio:"",video:"",iframe:"",embeddedaudio:""}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/hy_dlg.js b/program/js/tiny_mce/plugins/media/langs/hy_dlg.js
deleted file mode 100644
index 2b4c15899..000000000
--- a/program/js/tiny_mce/plugins/media/langs/hy_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hy.media_dlg',{list:"\u0421\u043f\u0438\u0441\u043e\u043a",file:"\u0424\u0430\u0439\u043b / URL",advanced:"\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e",general:"\u041e\u0431\u0449\u0435\u0435",title:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c / \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c embedded media","align_top_left":"Top left","align_center":"Center","align_left":"Left","align_bottom":"Bottom","align_right":"Right","align_top":"Top","qt_stream_warn":"Streamed rtsp resources should be added to the QT Src field under the advanced tab \\ nYou should also add a non streamed version to the Src field ..",qtsrc:"QT Src",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks","align_top_right":"Top right",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Default frame",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"\u0411\u0430\u043b\u0430\u043d\u0441",windowlessvideo:"Windowless video",stretchtofit:"Stretch to fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Fullscreen",enabled:"Enabled",autostart:"\u0410\u0432\u0442\u043e\u0441\u0442\u0430\u0440\u0442",volume:"\u0413\u0440\u043e\u043c\u043a\u043e\u0441\u0442\u044c",target:"Target",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"End time",starttime:"Start time",enablejavascript:"Enable JavaScript",correction:"No correction",targetcache:"Target cache",playeveryframe:"Play every frame",kioskmode:"Kiosk mode",controller:"Controller",menu:"\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043c\u0435\u043d\u044e",loop:"\u041b\u0443\u043f",play:"\u0410\u0432\u0442\u043e\u043f\u043b\u0435\u0439",hspace:"\u0433\u043e\u0440. \u043e\u0442\u0441\u0442\u0443\u043f",vspace:"\u0432\u0435\u0440\u0442. \u043e\u0442\u0441\u0442\u0443\u043f","class_name":"\u041a\u043b\u0430\u0441\u0441",name:"\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435",id:"Id",type:"\u0422\u0438\u043f",size:"\u0420\u0430\u0437\u043c\u0435\u0440\u044b",preview:"\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440","constrain_proportions":"\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u0438",controls:"Controls",numloop:"Num loops",console:"Console",cache:"\u041a\u044d\u0448",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"\u0424\u043e\u043d",wmode:"WMode",salign:"SAlign",align:"Align",scale:"Scale",quality:"\u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Image status",center:"Center",autogotourl:"Auto goto URL","shockwave_options":"Shockwave options","rmp_options":"Real media player options","wmp_options":"Windows media player options","qt_options":"Quicktime options","flash_options":"Flash options",hidden:"Hidden","align_bottom_left":"Bottom left","align_bottom_right":"Bottom right","html5_video_options":"HTML5 Video Options",altsource1:"Alternative source 1",altsource2:"Alternative source 2",preload:"Preload",poster:"Poster",source:"Source","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/id_dlg.js b/program/js/tiny_mce/plugins/media/langs/id_dlg.js
deleted file mode 100644
index 3aab79b8c..000000000
--- a/program/js/tiny_mce/plugins/media/langs/id_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('id.media_dlg',{list:"List",file:"File/URL",advanced:"Advanced",general:"General",title:"Insert / edit embedded media","align_top_left":"Atas Kiri","align_center":"Tengah","align_left":"Kiri","align_bottom":"Bawah","align_right":"Kanan","align_top":"Atas","qt_stream_warn":"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks","align_top_right":"Atas Kanan",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Default frame",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless video",stretchtofit:"Stretch to fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Fullscreen",enabled:"Enabled",autostart:"Auto start",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"End time",starttime:"Start time",enablejavascript:"Enable JavaScript",correction:"No correction",targetcache:"Target cache",playeveryframe:"Play every frame",kioskmode:"Kiosk mode",controller:"Controller",menu:"Show menu",loop:"Loop",play:"Auto play",hspace:"H-Space",vspace:"V-Space","class_name":"Class",name:"Name",id:"Id",type:"Type",size:"Dimensions",preview:"Preview","constrain_proportions":"Constrain proportions",controls:"Controls",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Background",wmode:"WMode",salign:"SAlign",align:"Align",scale:"Scale",quality:"Quality",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Image status",center:"Center",autogotourl:"Auto goto URL","shockwave_options":"Shockwave options","rmp_options":"Real media player options","wmp_options":"Windows media player options","qt_options":"Quicktime options","flash_options":"Flash options",hidden:"Hidden","align_bottom_left":"Bawah Kiri","align_bottom_right":"Bawah kanan","html5_video_options":"HTML5 Video Options",altsource1:"Alternative source 1",altsource2:"Alternative source 2",preload:"Preload",poster:"Poster",source:"Source","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/is_dlg.js b/program/js/tiny_mce/plugins/media/langs/is_dlg.js
deleted file mode 100644
index 61cc8bfd5..000000000
--- a/program/js/tiny_mce/plugins/media/langs/is_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('is.media_dlg',{list:"Listi",file:"Skr\u00e1/Sl\u00f3\u00f0",advanced:"\u00cdtarlegt",general:"Almennt",title:"Setja inn / Breyta birtingu margmi\u00f0lunar","align_top_left":"Efst vinstri","align_center":"Mi\u00f0ja","align_left":"Vinstri","align_bottom":"Ne\u00f0st","align_right":"H\u00e6gri","align_top":"Efst","qt_stream_warn":"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"Sta\u00f0a",sound:"Hlj\u00f3\u00f0",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks","align_top_right":"Efst h\u00e6gri",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Upprunalegur rammi",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Gluggalaust myndband",stretchtofit:"Teigja til a\u00f0 passa",mute:"Dempa",invokeurls:"Virkja sl\u00f3\u00f0ir",fullscreen:"Heilskj\u00e1r",enabled:"Virkt",autostart:"Byrja sj\u00e1lfvirkt",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"End time",starttime:"Start time",enablejavascript:"Enable JavaScript",correction:"No correction",targetcache:"Target cache",playeveryframe:"Play every frame",kioskmode:"Kiosk mode",controller:"Controller",menu:"S\u00fdna valmynd",loop:"Endurtaka",play:"Sj\u00e1lfvirk spilun",hspace:"L\u00e1r-bil",vspace:"L\u00f3\u00f0r-bil","class_name":"Flokkur",name:"Nafn",id:"Id",type:"Ger\u00f0",size:"V\u00edddir",preview:"Forsko\u00f0un","constrain_proportions":"Halda hlutf\u00f6llum",controls:"Stj\u00f3rn",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Bakgrunnur",wmode:"WMode",salign:"SAlign",align:"J\u00f6fnun",scale:"A\u00f0l\u00f6gun",quality:"G\u00e6\u00f0i",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"Ekkert java",maintainaspect:"Halda hlutf\u00f6llum",imagestatus:"Sta\u00f0a myndar",center:"Mi\u00f0ja",autogotourl:"Auto goto URL","shockwave_options":"Shockwave m\u00f6guleikar","rmp_options":"Real media player m\u00f6guleikar","wmp_options":"Windows media player m\u00f6guleikar","qt_options":"Quicktime m\u00f6guleikar","flash_options":"Flash m\u00f6guleikar",hidden:"Hidden","align_bottom_left":"Ne\u00f0st vinstri","align_bottom_right":"Ne\u00f0st h\u00e6gri","html5_video_options":"HTML5 Video Options",altsource1:"Alternative source 1",altsource2:"Alternative source 2",preload:"Preload",poster:"Poster",source:"Source","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/it_dlg.js b/program/js/tiny_mce/plugins/media/langs/it_dlg.js
deleted file mode 100644
index f335edebb..000000000
--- a/program/js/tiny_mce/plugins/media/langs/it_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('it.media_dlg',{list:"Lista",file:"File/URL",advanced:"Avanzate",general:"Generale",title:"Inserisci/modifica file multimediale","align_top_left":"Alto a sinistra","align_center":"Centro","align_left":"Sinistra","align_bottom":"Basso","align_right":"Destra","align_top":"Alto","qt_stream_warn":"Le risorse rstp \'streamed\' devono essere aggiunte al campo Sorgente QT nella tabella Avanzate.\nSi dovrebbe inserire anche una versione non \'streamed\' al campo Sorgente..",qtsrc:"Sorgente QT",progress:"Avanzamento",sound:"Suono",swstretchvalign:"Tratto V-Allineamento",swstretchhalign:"Tratto H-Allineamento",swstretchstyle:"Stile Tratto",scriptcallbacks:"Script richiamato","align_top_right":"Alto a destra",uimode:"Modalit\u00e0 Interfaccia Utente",rate:"Qualit\u00e0",playcount:"Conteggio esecuzione",defaultframe:"Frame predefinito",currentposition:"Posizione corrente",currentmarker:"Indicatore corrente",captioningid:"Didascalia dell\'Id",baseurl:"URL base",balance:"Bilanciamento",windowlessvideo:"Video senza finestra",stretchtofit:"Adatta dimensioni",mute:"Muto",invokeurls:"Invoca URLs",fullscreen:"Tutto schermo",enabled:"Abilitato",autostart:"Avvio automatico",volume:"Volume",target:"Target",qtsrcchokespeed:"Velocit\u00e0 cursore",href:"Href",endtime:"Ora fine",starttime:"Ora inizio",enablejavascript:"Abilita JavaScript",correction:"Nessuna Correzione",targetcache:"Cache del target",playeveryframe:"Esegui ogni frame",kioskmode:"Modalit\u00e0 Kiosk",controller:"Controller",menu:"Mostra menu",loop:"Riproduzione ciclica",play:"Esecuzione automatica",hspace:"H-Spazio",vspace:"V-Spazio","class_name":"Classe",name:"Nome",id:"Id",type:"Tipo",size:"Dimensioni",preview:"Anteprima","constrain_proportions":"Mantieni Proporzioni",controls:"Controlli",numloop:"Numero Cicli",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Sfondo",wmode:"WMode",salign:"SAlign",align:"Allineamento",scale:"Scala",quality:"Qualit\u00e0",shuffle:"Shuffle",prefetch:"Precaricamento",nojava:"No java",maintainaspect:"Mantieni Aspetto",imagestatus:"Stato Immagine",center:"Centra",autogotourl:"Vai a URL automatico","shockwave_options":"Opzioni Shockwave","rmp_options":"Opzioni Real media player","wmp_options":"Opzioni Windows media player","qt_options":"Opzioni Quicktime","flash_options":"Opzioni Flash",hidden:"Nascosto","align_bottom_left":"Basso a Sinistra","align_bottom_right":"Basso a Destra",flash:"flash",quicktime:"quicktime","embedded_audio_options":"Opzioni Audio Embedded",windowsmedia:"windowsmedia",realmedia:"realmedia",shockwave:"shockwave",audio:"audio",video:"video","html5_video_options":"Opzioni Video HTML5",altsource1:"Sorgente alternativa 1",altsource2:"Sorgente alternativa 2",preload:"Precarica",poster:"Poster",source:"Sorgente","html5_audio_options":"Opzioni Audio","preload_none":"Non Precaricare","preload_metadata":"Precarica i metadati video","preload_auto":"Lascia decidere al browser dell\'utente",iframe:"iframe",embeddedaudio:"embeddedaudio"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/ja_dlg.js b/program/js/tiny_mce/plugins/media/langs/ja_dlg.js
deleted file mode 100644
index 9752ca22e..000000000
--- a/program/js/tiny_mce/plugins/media/langs/ja_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ja.media_dlg',{list:"\u4e00\u89a7",file:"\u30d5\u30a1\u30a4\u30eb\u3084URL",advanced:"\u8a73\u7d30",general:"\u4e00\u822c",title:"\u57cb\u3081\u8fbc\u307f\u30e1\u30c7\u30a3\u30a2\u306e\u633f\u5165\u3084\u7de8\u96c6","align_top_left":"\u5de6\u4e0a","align_center":"\u4e2d\u592e","align_left":"\u5de6","align_bottom":"\u4e0b","align_right":"\u53f3","align_top":"\u4e0a","qt_stream_warn":"RTSP\u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u30ea\u30bd\u30fc\u30b9\u3092\u300c\u9ad8\u5ea6\u300d\u306e\u30bf\u30d6\u306e\u300cQT\u306e\u30bd\u30fc\u30b9\u300d\u6b04\u306b\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n\u307e\u305f\u3001\u300c\u30bd\u30fc\u30b9\u300d\u6b04\u306b\u306f\u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u3067\u306f\u306a\u3044\u30d0\u30fc\u30b8\u30e7\u30fc\u30f3\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002",qtsrc:"QT\u306e\u30bd\u30fc\u30b9",progress:"\u9032\u5c55",sound:"\u30b5\u30a6\u30f3\u30c9",swstretchvalign:"\u5782\u76f4\u306e\u914d\u7f6e",swstretchhalign:"\u6c34\u5e73\u306e\u914d\u7f6e",swstretchstyle:"\u4f38\u7e2e\u306e\u30b9\u30bf\u30a4\u30eb",scriptcallbacks:"\u30b9\u30af\u30ea\u30d7\u30c8\u306e\u30b3\u30fc\u30eb\u30d0\u30c3\u30af","align_top_right":"\u53f3\u4e0a",uimode:"UI\u3092\u8868\u793a\u3059\u308b\u30e2\u30fc\u30c9",rate:"\u518d\u751f\u30ec\u30fc\u30c8",playcount:"\u518d\u751f\u56de\u6570",defaultframe:"\u521d\u671f\u72b6\u614b\u306e\u30d5\u30ec\u30fc\u30e0",currentposition:"\u518d\u751f\u4f4d\u7f6e(\u79d2\u5358\u4f4d)",currentmarker:"\u30de\u30fc\u30ab\u30fc\u756a\u53f7",captioningid:"\u30ad\u30e3\u30d7\u30b7\u30e7\u30f3\u8868\u793a\u8981\u7d20ID",baseurl:"\u57fa\u6e96\u306eURL",balance:"\u30b9\u30c6\u30ec\u30aa\u306e\u30d0\u30e9\u30f3\u30b9",windowlessvideo:"\u30a6\u30a3\u30f3\u30c9\u30a6\u306a\u3057\u306e\u52d5\u753b",stretchtofit:"\u5408\u308f\u305b\u3066\u62e1\u5927",mute:"\u6d88\u97f3",invokeurls:"URL\u3092\u958b\u304f",fullscreen:"\u5168\u753b\u9762",enabled:"\u6709\u52b9",autostart:"\u81ea\u52d5\u518d\u751f",volume:"\u97f3\u91cf",target:"\u30bf\u30fc\u30b2\u30c3\u30c8",qtsrcchokespeed:"\u518d\u751f\u30c7\u30fc\u30bf\u30ec\u30fc\u30c8",href:"\u30ea\u30f3\u30af\u5148URL",endtime:"\u7d42\u4e86\u6642\u9593",starttime:"\u958b\u59cb\u6642\u9593",enablejavascript:"JavaScript\u3092\u6709\u52b9",correction:"\u8a02\u6b63\u306a\u3057",targetcache:"\u30bf\u30fc\u30b2\u30c3\u30c8\u3092\u30ad\u30e3\u30c3\u30b7\u30e5",playeveryframe:"\u3059\u3079\u3066\u306e\u30d5\u30ec\u30fc\u30e0\u3092\u518d\u751f",kioskmode:"Kiosk\u30e2\u30fc\u30c9",controller:"\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u306e\u8868\u793a",menu:"\u30e1\u30cb\u30e5\u30fc\u3092\u8868\u793a",loop:"\u7e70\u308a\u8fd4\u3057",play:"\u81ea\u52d5\u518d\u751f",hspace:"\u5de6\u53f3\u306e\u4f59\u767d",vspace:"\u4e0a\u4e0b\u306e\u4f59\u767d","class_name":"\u30af\u30e9\u30b9",name:"\u540d\u524d",id:"ID",type:"\u30bf\u30a4\u30d7",size:"\u5bf8\u6cd5",preview:"\u30d7\u30ec\u30d3\u30e5\u30fc","constrain_proportions":"\u7e26\u6a2a\u6bd4\u3092\u7dad\u6301",controls:"\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u306e\u8868\u793a",numloop:"\u7e70\u308a\u8fd4\u3057\u306e\u56de\u6570",console:"\u30b3\u30f3\u30bd\u30fc\u30eb",cache:"\u30ad\u30e3\u30c3\u30b7\u30e5",autohref:"\u81ea\u52d5\u8aad\u8fbc",liveconnect:"SWLiveConnect\u5c5e\u6027",flashvars:"Flash Vars",base:"Base",bgcolor:"\u80cc\u666f\u8272",wmode:"WMode",salign:"SAlign",align:"\u914d\u7f6e",scale:"\u4f38\u7e2e",quality:"\u54c1\u8cea",shuffle:"\u30b7\u30e3\u30c3\u30d5\u30eb",prefetch:"\u5148\u8aad\u307f",nojava:"Java\u3092\u7981\u6b62",maintainaspect:"\u7e26\u6a2a\u6bd4\u306e\u7dad\u6301",imagestatus:"\u753b\u50cf\u306e\u72b6\u614b",center:"\u4e2d\u592e\u63c3\u3048",autogotourl:"URL\u306b\u81ea\u52d5\u79fb\u52d5","shockwave_options":"Shockwave\u306e\u30aa\u30d7\u30b7\u30e7\u30f3","rmp_options":"Real media player\u306e\u30aa\u30d7\u30b7\u30e7\u30f3","wmp_options":"Windows media player\u306e\u30aa\u30d7\u30b7\u30e7\u30f3","qt_options":"Quicktime\u306e\u30aa\u30d7\u30b7\u30e7\u30f3","flash_options":"Flash\u306e\u30aa\u30d7\u30b7\u30e7\u30f3",hidden:"\u975e\u8868\u793a","align_bottom_left":"\u5de6\u4e0b","align_bottom_right":"\u53f3\u4e0b",flash:"flash",quicktime:"quicktime","embedded_audio_options":"\u57cb\u3081\u8fbc\u307fAudio\u306e\u30aa\u30d7\u30b7\u30e7\u30f3",windowsmedia:"Windows\u30e1\u30c7\u30a3\u30a2",realmedia:"realmedia",shockwave:"shockwave",audio:"\u30aa\u30fc\u30c7\u30a3\u30aa",video:"\u52d5\u753b","html5_video_options":"HTML5 Video\u306e\u30aa\u30d7\u30b7\u30e7\u30f3",altsource1:"\u4ee3\u66ff\u30bd\u30fc\u30b91",altsource2:"\u4ee3\u66ff\u30bd\u30fc\u30b92",preload:"preload\u5c5e\u6027",poster:"poster\u5c5e\u6027",source:"HTML","html5_audio_options":"Audio \u30aa\u30d7\u30b7\u30e7\u30f3","preload_none":"\u5148\u8aad\u307f\u3057\u306a\u3044","preload_metadata":"\u52d5\u753b\u306e\u30e1\u30bf\u30c7\u30fc\u30bf\u3092\u5148\u8aad\u307f","preload_auto":"\u30e6\u30fc\u30b6\u30fc\u306e\u30d6\u30e9\u30a6\u30b6\u30fc\u306b\u5f93\u3046",iframe:"iframe",embeddedaudio:"\u57cb\u3081\u8fbc\u307f\u97f3\u58f0"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/ka_dlg.js b/program/js/tiny_mce/plugins/media/langs/ka_dlg.js
deleted file mode 100644
index e84713166..000000000
--- a/program/js/tiny_mce/plugins/media/langs/ka_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ka.media_dlg',{list:"\u10e9\u10d0\u10db\u10dd\u10dc\u10d0\u10d7\u10d5\u10d0\u10da\u10d8",file:"\u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d8",advanced:"\u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d8\u10d7",general:"\u10e1\u10d0\u10d4\u10e0\u10d7\u10dd",title:"\u10d9\u10da\u10d8\u10de\u10d8\u10e1 \u10db\u10d0\u10ee\u10d0\u10e1\u10d8\u10d0\u10d7\u10d4\u10d1\u10da\u10d4\u10d1\u10d8","align_top_left":"\u10db\u10d0\u10e0\u10ea\u10ee\u10d4\u10dc\u10d0 \u10d6\u10d4\u10d3\u10d0 \u10d9\u10e3\u10d7\u10ee\u10d4","align_center":"\u10ea\u10d4\u10dc\u10e2\u10e0\u10d8","align_left":"\u10db\u10d0\u10e0\u10ea\u10ee\u10d4\u10dc\u10d0 \u10d9\u10d8\u10d3\u10d4\u10d6\u10d4","align_bottom":"\u10e5\u10d5\u10d4\u10d3\u10d0 \u10d9\u10d8\u10d3\u10d4\u10d6\u10d4","align_right":"\u10db\u10d0\u10e0\u10ef\u10d5\u10d4\u10dc\u10d0 \u10d9\u10d8\u10d3\u10d4\u10d6\u10d4","align_top":"\u10d6\u10d4\u10d3\u10d0 \u10d9\u10d8\u10d3\u10d4\u10d6\u10d4","qt_stream_warn":"\u10dc\u10d0\u10d9\u10d0\u10d3\u10dd\u10d5\u10d0\u10dc\u10d8 rtsp \u10e0\u10d4\u10e1\u10e3\u10e0\u10e1\u10d4\u10d1\u10d8 \u10e3\u10dc\u10d3\u10d0 \u10e9\u10d0\u10d0\u10db\u10d0\u10e2\u10dd\u10d7 QT Src \u10d5\u10d4\u10da\u10e8\u10d8, \"\u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d8\u10d7\" \u10d2\u10d5\u10d4\u10e0\u10d3\u10d6\u10d4.\n\u10ee\u10dd\u10da\u10dd \u10d0\u10e0\u10d0 \u10dc\u10d0\u10d9\u10d0\u10d3\u10dd\u10d5\u10d0\u10dc\u10d8 \u10d5\u10d4\u10e0\u10e1\u10d8\u10d0 - Src \u10d5\u10d4\u10da\u10e8\u10d8.",qtsrc:"QT Src",progress:"\u10de\u10e0\u10dd\u10d2\u10e0\u10d4\u10e1\u10d8",sound:"\u10ee\u10db\u10d0",swstretchvalign:"\u10d5\u10d4\u10e0\u10e2. \u10d2\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d0 \u10d2\u10d0\u10ec\u10d4\u10da\u10d5\u10d8\u10d7",swstretchhalign:"\u10f0\u10dd\u10e0\u10d8\u10d6. \u10d2\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d0 \u10d2\u10d0\u10ec\u10d4\u10da\u10d5\u10d8\u10d7",swstretchstyle:"\u10d2\u10d0\u10ec\u10d4\u10da\u10d5\u10d8\u10e1 \u10e1\u10e2\u10d8\u10da\u10d8",scriptcallbacks:"\u10e1\u10e5\u10e0\u10d8\u10de\u10e2\u10d8\u10e1 \u10db\u10ee\u10d0\u10e0\u10d3\u10d0\u10ed\u10d4\u10e0\u10d0","align_top_right":"\u10db\u10d0\u10e0\u10ef\u10d5\u10d4\u10dc\u10d0 \u10d6\u10d4\u10d3\u10d0 \u10d9\u10e3\u10d7\u10ee\u10d4",uimode:"\u10d8\u10dc\u10e2\u10d4\u10e0\u10e4\u10d4\u10d8\u10e1\u10d8\u10e1 \u10e0\u10d4\u10df\u10d8\u10db\u10d8",rate:"\u10e0\u10d4\u10d8\u10e2\u10d8\u10dc\u10d2\u10d8",playcount:"\u10dc\u10d0\u10ee\u10d5\u10d4\u10d1\u10d8\u10e1 \u10db\u10d7\u10d5\u10da\u10d4\u10da\u10d8",defaultframe:"\u10db\u10d7\u10d0\u10d5\u10d0\u10e0\u10d8 \u10d9\u10d0\u10d3\u10e0\u10d8",currentposition:"\u10db\u10dd\u10ea\u10d4\u10db\u10e3\u10da\u10d8 \u10de\u10dd\u10d6\u10d8\u10ea\u10d8\u10d0",currentmarker:"\u10db\u10dd\u10ea\u10d4\u10db\u10e3\u10da\u10d8 \u10db\u10d0\u10e0\u10d9\u10d4\u10e0\u10d8",captioningid:"\u10e1\u10e3\u10d1\u10e2\u10d8\u10e2\u10e0\u10d4\u10d1\u10d8\u10e1 \u10e1\u10d0\u10ee\u10d4\u10da\u10d8",baseurl:"\u10e1\u10d0\u10d1\u10d0\u10d6\u10d8\u10e1\u10dd \u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d8",balance:"\u10d1\u10d0\u10da\u10d0\u10dc\u10e1\u10d8",windowlessvideo:"\u10e4\u10d0\u10dc\u10ef\u10e0\u10d8\u10e1 \u10d5\u10d8\u10d3\u10d4\u10dd",stretchtofit:"\u10e4\u10d0\u10dc\u10ef\u10e0\u10d8\u10e1 \u10d6\u10dd\u10db\u10d0\u10d6\u10d4",mute:"\u10ee\u10db\u10d8\u10e1 \u10d2\u10d0\u10e0\u10d4\u10e8\u10d4",invokeurls:"\u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d8\u10e1 \u10d2\u10d0\u10db\u10dd\u10eb\u10d0\u10ee\u10d4\u10d1\u10d0",fullscreen:"\u10db\u10d7\u10d4\u10da \u10d4\u10d9\u10e0\u10d0\u10dc\u10d6\u10d4",enabled:"\u10e9\u10d0\u10e0\u10d7\u10e3\u10da\u10d8\u10d0",autostart:"\u10d0\u10d5\u10e2\u10dd\u10d2\u10d0\u10e8\u10d5\u10d4\u10d1\u10d0",volume:"\u10ee\u10db\u10d0",target:"\u10db\u10d8\u10d6\u10d0\u10dc\u10d8",qtsrcchokespeed:"\u10e1\u10d8\u10ee\u10e8\u10d8\u10e0\u10d4",href:"\u10d1\u10db\u10e3\u10da\u10d8",endtime:"\u10d3\u10d0\u10e1\u10e0\u10e3\u10da\u10d4\u10d1\u10d8\u10e1 \u10d3\u10e0\u10dd",starttime:"\u10d3\u10d0\u10ec\u10e7\u10d4\u10d1\u10d8\u10e1 \u10d3\u10e0\u10dd",enablejavascript:"JavaScript-\u10d8\u10e1 \u10e9\u10d0\u10e0\u10d7\u10d5\u10d0",correction:"\u10d9\u10dd\u10e0\u10d4\u10e5\u10e2\u10d8\u10e0\u10d4\u10d1\u10d8\u10e1 \u10d2\u10d0\u10e0\u10d4\u10e8\u10d4",targetcache:"\u10e5\u10d4\u10e8\u10d8",playeveryframe:"\u10e7\u10d5\u10d4\u10da\u10d0 \u10d9\u10d0\u10d3\u10e0\u10d8\u10e1 \u10d0\u10e1\u10d0\u10ee\u10d5\u10d0",kioskmode:"\u10d9\u10d8\u10dd\u10e1\u10d9\u10d8\u10e1 \u10e0\u10d4\u10df\u10d8\u10db\u10d8",controller:"\u10db\u10d0\u10e0\u10d7\u10d5\u10d0",menu:"\u10db\u10d4\u10dc\u10d8\u10e3\u10e1 \u10d2\u10d0\u10db\u10dd\u10e9\u10d4\u10dc\u10d0",loop:"\u10d2\u10d0\u10db\u10d4\u10dd\u10e0\u10d4\u10d1\u10d0",play:"\u10d0\u10d5\u10e2\u10dd\u10d2\u10d0\u10e8\u10d5\u10d4\u10d1\u10d0",hspace:"\u10f0\u10dd\u10e0\u10d8\u10d6. \u10d3\u10d0\u10e8\u10dd\u10e0\u10d4\u10d1\u10d0",vspace:"\u10d5\u10d4\u10e0\u10e2. \u10d3\u10d0\u10e8\u10dd\u10e0\u10d4\u10d1\u10d0","class_name":"\u10d9\u10da\u10d0\u10e1\u10d8",name:"\u10e1\u10d0\u10ee\u10d4\u10da\u10ec\u10dd\u10d3\u10d4\u10d1\u10d0",id:"\u10d8\u10d3\u10d4\u10dc\u10e2\u10d8\u10e4\u10d8\u10d9\u10d0\u10e2\u10dd\u10e0\u10d8",type:"\u10e2\u10d8\u10de\u10d8",size:"\u10d6\u10dd\u10db\u10d4\u10d1\u10d8",preview:"\u10ec\u10d8\u10dc\u10d0\u10e1\u10ec\u10d0\u10e0\u10d8 \u10d3\u10d0\u10d7\u10d5\u10d0\u10da\u10d8\u10d4\u10e0\u10d4\u10d1\u10d0","constrain_proportions":"\u10de\u10e0\u10dd\u10de\u10dd\u10e0\u10ea\u10d8\u10d4\u10d1\u10d8\u10e1 \u10e8\u10d4\u10dc\u10d0\u10e0\u10e9\u10e3\u10dc\u10d4\u10d1\u10d0",controls:"\u10db\u10d0\u10e0\u10d7\u10d5\u10d0",numloop:"\u10d2\u10d0\u10db\u10d4\u10dd\u10e0\u10d4\u10d1\u10d0\u10d7\u10d0 \u10e0\u10d8\u10ea\u10ee\u10d5\u10d8",console:"\u10d9\u10dd\u10dc\u10e1\u10dd\u10da\u10d8",cache:"\u10e5\u10d4\u10e8\u10d8",autohref:"\u10d0\u10d5\u10e2\u10dd \u10d1\u10db\u10e3\u10da\u10d8",liveconnect:"SWLiveConnect",flashvars:"Flas \u10d1\u10e0\u10eb\u10d0\u10dc\u10d4\u10d1\u10d4\u10d1\u10d8",base:"Base",bgcolor:"\u10e4\u10dd\u10dc\u10d8",wmode:"\u10e4\u10d0\u10dc\u10ef\u10d0\u10e0\u10d0",salign:"\u10d2\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d0",align:"\u10d2\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d0",scale:"\u10db\u10d8\u10d3\u10d0\u10db\u10dd",quality:"\u10ee\u10d0\u10e0\u10d8\u10e1\u10ee\u10d8",shuffle:"\u0412 \u0440\u0430\u0437\u0431\u0440\u043e\u0441",prefetch:"\u10d0\u10db\u10dd\u10d9\u10e0\u10d4\u10e4\u10d0",nojava:"Java-\u10e1 \u10d2\u10d0\u10e0\u10d4\u10e8\u10d4",maintainaspect:"\u10d6\u10dd\u10db\u10d8\u10e1 \u10d3\u10d0\u10db\u10d0\u10ee\u10e1\u10dd\u10d5\u10e0\u10d4\u10d1\u10d0",imagestatus:"\u10d2\u10d0\u10db\u10dd\u10e1\u10d0\u10ee\u10e3\u10da\u10d4\u10d1\u10d8\u10e1 \u10e1\u10e2\u10d0\u10e2\u10e3\u10e1\u10d8",center:"\u10ea\u10d4\u10dc\u10e2\u10e0\u10d8",autogotourl:"\u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d6\u10d4 \u10d0\u10d5\u10e2\u10dd \u10d2\u10d0\u10d3\u10d0\u10e1\u10d5\u10da\u10d0","shockwave_options":"Shockwave \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8","rmp_options":"Real Media \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8","wmp_options":"Windows Media \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8","qt_options":"Quicktime \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8","flash_options":"Flash \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8",hidden:"\u10d3\u10d0\u10e4\u10d0\u10e0\u10e3\u10da\u10d8","align_bottom_left":"\u10db\u10d0\u10e0\u10ea\u10ee\u10d4\u10dc\u10d0 \u10e5\u10d5\u10d4\u10d3\u10d0 \u10d9\u10e3\u10d7\u10ee\u10d4","align_bottom_right":"\u10db\u10d0\u10e0\u10ef\u10d5\u10d4\u10dc\u10d0 \u10e5\u10d5\u10d4\u10d3\u10d0 \u10d9\u10e3\u10d7\u10ee\u10d4","html5_video_options":"HTML5-\u10d5\u10d8\u10d3\u10d4\u10dd\u10e1 \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8",altsource1:"\u10d0\u10da\u10e2\u10d4\u10e0\u10dc\u10d0\u10e2\u10d8\u10e3\u10da\u10d8 \u10ec\u10e7\u10d0\u10e0\u10dd 1",altsource2:"\u10d0\u10da\u10e2\u10d4\u10e0\u10dc\u10d0\u10e2\u10d8\u10e3\u10da\u10d8 \u10ec\u10e7\u10d0\u10e0\u10dd 2",preload:"\u10ec\u10d8\u10dc\u10d0\u10e1\u10ec\u10d0\u10e0\u10d8 \u10e9\u10d0\u10db\u10dd\u10e2\u10d5\u10d8\u10e0\u10d7\u10d5\u10d0",poster:"\u10de\u10dd\u10e1\u10e2\u10d4\u10e0\u10d8",source:"\u10ec\u10e7\u10d0\u10e0\u10dd","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/ko_dlg.js b/program/js/tiny_mce/plugins/media/langs/ko_dlg.js
deleted file mode 100644
index 1b6848747..000000000
--- a/program/js/tiny_mce/plugins/media/langs/ko_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ko.media_dlg',{list:"\ubaa9\ub85d",file:"\ud30c\uc77c/URL",advanced:"\uace0\uae09",general:"\uc77c\ubc18",title:"\ubbf8\ub514\uc5b4 \uc0bd\uc785/\ud3b8\uc9d1","align_top_left":"Top left","align_center":"Center","align_left":"Left","align_bottom":"Bottom","align_right":"Right","align_top":"Top","qt_stream_warn":"Streamed rtsp resources should be added to the QT Src field under the advanced tab.nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks","align_top_right":"Top right",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Default frame",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless video",stretchtofit:"Stretch to fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Fullscreen",enabled:"Enabled",autostart:"Auto start",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"End time",starttime:"Start time",enablejavascript:"JavaScript\ub97c \ud5c8\uac00",correction:"No correction",targetcache:"Target cache",playeveryframe:"Play every frame",kioskmode:"Kiosk mode",controller:"Controller",menu:"\uba54\ub274 \ud45c\uc2dc",loop:"\uc5f0\uc18d \uc7ac\uc0dd",play:"\uc790\ub3d9 \uc7ac\uc0dd",hspace:"\uc88c\uc6b0 \uc5ec\ubc31",vspace:"\uc0c1\ud558 \uc5ec\ubc31","class_name":"Class",name:"Name",id:"Id",type:"\ud0c0\uc785",size:"\ud06c\uae30",preview:"\ubbf8\ub9ac\ubcf4\uae30","constrain_proportions":"\uc885\ud6a1\ube44 \uc720\uc9c0",controls:"Controls",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Background",wmode:"WMode",salign:"SAlign",align:"Align",scale:"\uc2a4\ucf00\uc77c",quality:"\ud488\uc9c8",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Image status",center:"Center",autogotourl:"Auto goto URL","shockwave_options":"Shockwave options","rmp_options":"Real media player options","wmp_options":"Windows media player options","qt_options":"Quicktime options","flash_options":"Flash options",hidden:"Hidden","align_bottom_left":"Bottom left","align_bottom_right":"Bottom right","embedded_audio_options":"Embedded Audio Options","html5_video_options":"HTML5 Video Options",altsource1:"Alternative source 1",altsource2:"Alternative source 2",preload:"Preload",poster:"Poster",source:"Source","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide",flash:"",quicktime:"",windowsmedia:"",realmedia:"",shockwave:"",audio:"",video:"",iframe:"",embeddedaudio:""}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/lt_dlg.js b/program/js/tiny_mce/plugins/media/langs/lt_dlg.js
deleted file mode 100644
index 14efd23f2..000000000
--- a/program/js/tiny_mce/plugins/media/langs/lt_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('lt.media_dlg',{list:"S\u0105ra\u0161as",file:"Failas/URL",advanced:"I\u0161pl\u0117sta",general:"Bendra",title:"\u012eterpti/redaguoti integruot\u0105 daugialyp\u0119 terp\u0119","align_top_left":"Vir\u0161uje, kair\u0117je","align_center":"Centre","align_left":"Kair\u0117je","align_bottom":"Apa\u010dioje","align_right":"De\u0161in\u0117je","align_top":"Vir\u0161uje","qt_stream_warn":"Transliuojami rtsp i\u0161tekliai tur\u0117t\u0173 b\u016bti prid\u0117ti prie QT Src lauko \u201ePapildom\u0173 nustatym\u0173\u201c kortel\u0117je.\nTaip pat reikt\u0173 prid\u0117ti ir netransliuojam\u0105j\u0105 Src lauko versij\u0105.",qtsrc:"QT Src",progress:"Progresas",sound:"Garsas",swstretchvalign:"I\u0161tempti V-lygiavim\u0105",swstretchhalign:"I\u0161tempti H-lygiavim\u0105",swstretchstyle:"I\u0161tempti stili\u0173",scriptcallbacks:"Scenarijaus atgalinis atsakas","align_top_right":"Vir\u0161uje, de\u0161in\u0117je",uimode:"UI re\u017eimas",rate:"Da\u017enis",playcount:"Grojimo kartai",defaultframe:"Numatytas kadras",currentposition:"Dabartin\u0117 pozicija",currentmarker:"Dabartinis \u017eymeklis",captioningid:"Antra\u0161t\u0117s id",baseurl:"Prad\u017eios URL adresas",balance:"Balansas",windowlessvideo:"Vaizdas be lango",stretchtofit:"I\u0161tempti iki atitikimo",mute:"Nutildyti",invokeurls:"I\u0161kviesti URL adresus",fullscreen:"Viso ekrano re\u017eimas",enabled:"\u012ejungta",autostart:"Automatinis paleidimas",volume:"Garsis",target:"Paskirtis",qtsrcchokespeed:"Dusinimo greitis",href:"Adresas",endtime:"Pabaigos laikas",starttime:"Prad\u017eios laikas",enablejavascript:"\u012egalinti JavaScript",correction:"Joki\u0173 korekcij\u0173",targetcache:"Paskirties laikinoji talpykla",playeveryframe:"Paleisti kiekvien\u0105 kadr\u0105",kioskmode:"Kiosko re\u017eimas",controller:"Valdiklis",menu:"Rodyti meniu",loop:"Kartoti",play:"Automatinis paleidimas",hspace:"Horizontalus tarpas",vspace:"Vertikalus tarpas","class_name":"Klas\u0117",name:"Vardas",id:"Id",type:"Tipas",size:"I\u0161matavimai",preview:"Per\u017ei\u016bra","constrain_proportions":"Priverstin\u0117s proporcijos",controls:"Valdikliai",numloop:"Cikl\u0173 kiekis",console:"Konsol\u0117",cache:"Laikinoji talpykla",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flash kintamieji",base:"Baz\u0117",bgcolor:"Fono spalva",wmode:"W-re\u017eimas",salign:"S-lygiavimas",align:"Lygiavimas",scale:"Mastelis",quality:"Kokyb\u0117",shuffle:"Atsitiktinis mai\u0161ymasis",prefetch:"I\u0161ankstinis duom. i\u0161rinkimas",nojava:"Be Java",maintainaspect:"I\u0161laikyti aspekt\u0105",imagestatus:"Paveiksl\u0117lio b\u016bsena",center:"Centre",autogotourl:"Automatinis \u0117jimas URL adresu","shockwave_options":"Shockwave nustatymai","rmp_options":"Real media player nustatymai","wmp_options":"Windows media player nustatymai","qt_options":"Quicktime nustatymai","flash_options":"Flash nustatymai",hidden:"Pasl\u0117pta","align_bottom_left":"Apa\u010dioje, kair\u0117je","align_bottom_right":"Apa\u010dioje, de\u0161in\u0117je",flash:"flash",quicktime:"quicktime","embedded_audio_options":"Embedded Audio Options",windowsmedia:"windowsmedia",realmedia:"realmedia",shockwave:"shockwave",audio:"audio",video:"video","html5_video_options":"HTML5 video nustatymai",altsource1:"Kitas video formatas 1",altsource2:"Kitas video formatas 2",preload:"Automati\u0161kai prad\u0117ti parsiuntim\u0105",poster:"Video paveiksl\u0117lis",source:"Kodo per\u017ei\u016bra","html5_audio_options":"Garso nustatymai","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Listi nuspresti vartotojo nar\u0161yklei",iframe:"iframe",embeddedaudio:"embeddedaydio"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/lv_dlg.js b/program/js/tiny_mce/plugins/media/langs/lv_dlg.js
deleted file mode 100644
index 0f662d515..000000000
--- a/program/js/tiny_mce/plugins/media/langs/lv_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('lv.media_dlg',{list:"List",file:"File/URL",advanced:"Advanced",general:"General",title:"Insert / edit embedded media","align_top_left":"Top left","align_center":"Center","align_left":"Left","align_bottom":"Bottom","align_right":"Right","align_top":"Top","qt_stream_warn":"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks","align_top_right":"Top right",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Default frame",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless video",stretchtofit:"Stretch to fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Fullscreen",enabled:"Enabled",autostart:"Auto start",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"End time",starttime:"Start time",enablejavascript:"Enable JavaScript",correction:"No correction",targetcache:"Target cache",playeveryframe:"Play every frame",kioskmode:"Kiosk mode",controller:"Controller",menu:"Show menu",loop:"Loop",play:"Auto play",hspace:"H-Space",vspace:"V-Space","class_name":"Class",name:"Nosaukums",id:"Id",type:"Tips",size:"Izm\u0113ri",preview:"Priek\u0161skat\u012bjums","constrain_proportions":"Constrain proportions",controls:"Kontroles",numloop:"Num loops",console:"Console",cache:"Ke\u0161atmi\u0146a",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Fons",wmode:"WMode",salign:"SAlign",align:"L\u012bdzin\u0101jums",scale:"Scale",quality:"Kvalit\u0101te",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Bildes status",center:"Centr\u0113ts",autogotourl:"Auto goto URL","shockwave_options":"Shockwave opcijas","rmp_options":"Real Media Player opcijas","wmp_options":"Windows Media Player opcijas","qt_options":"Quicktime opcijas","flash_options":"Flash opcijas",hidden:"Pasl\u0113pts","align_bottom_left":"Bottom left","align_bottom_right":"Bottom right","embedded_audio_options":"Ska\u0146as izv\u0113les","html5_video_options":"HTML5 video izv\u0113les",altsource1:"Cits video form\u0101ts 1",altsource2:"Cits video form\u0101ts 2",preload:"Autom\u0101tiski uzs\u0101kt lejupl\u0101di",poster:"Bilde",source:"Koda caurskate","html5_audio_options":"Ska\u0146as uzst\u0101d\u012bjumi","preload_none":"Neuzs\u0101kt autom\u0101tisku lejupl\u0101di","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide",flash:"",quicktime:"",windowsmedia:"",realmedia:"",shockwave:"",audio:"",video:"",iframe:"",embeddedaudio:""}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/mk_dlg.js b/program/js/tiny_mce/plugins/media/langs/mk_dlg.js
deleted file mode 100644
index 85afd9fed..000000000
--- a/program/js/tiny_mce/plugins/media/langs/mk_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('mk.media_dlg',{list:"\u041b\u0438\u0441\u0442\u0430",file:"\u0414\u0430\u0442\u043e\u0442\u0435\u043a\u0430/\u0423\u0420\u041b",advanced:"\u041d\u0430\u043f\u0440\u0435\u0434\u043d\u043e",general:"\u041e\u0441\u043d\u043e\u0432\u043d\u043e",title:"\u0412\u043d\u0435\u0441\u0438/\u0443\u0440\u0435\u0434\u0438 \u0432\u0433\u0440\u0430\u0434\u0435\u043d\u0438 \u043c\u0435\u0434\u0438\u0443\u043c\u0438","align_top_left":"\u041d\u0430\u0458\u0433\u043e\u0440\u0435 \u043b\u0435\u0432\u043e","align_center":"\u0421\u0440\u0435\u0434\u0438\u043d\u0430","align_left":"\u041b\u0435\u0432\u043e","align_bottom":"\u041d\u0430\u0458\u0434\u043e\u043b\u0435","align_right":"\u0414\u0435\u0441\u043d\u043e","align_top":"\u041d\u0430\u0458\u0433\u043e\u0440\u0435","qt_stream_warn":"RTSP \u0440\u0435\u0441\u0443\u0440\u0441\u0438\u0442\u0435 \u0442\u0440\u0435\u0431\u0430 \u0434\u0430 \u0441\u0435 \u0434\u043e\u0434\u0430\u0434\u0435 \u043d\u0430 Q\u0422 \u0438\u0437\u0432\u043e\u0440 \u043e\u0431\u043b\u0430\u0441\u0442\u0430 \u043f\u043e\u0434 Advanced \u0442\u0430\u0431\u043e\u0442. \n\u041c\u043e\u0436\u0435, \u0438\u0441\u0442\u043e \u0442\u0430\u043a\u0430, \u0442\u0440\u0435\u0431\u0430 \u0434\u0430 \u0441\u0435 \u0434\u043e\u0434\u0430\u0434\u0435 \u043d\u0435 \u0435\u043c\u0438\u0442\u0443\u0432\u0430\u043d\u0430 \u0432\u0435\u0440\u0437\u0438\u0458\u0430 \u043d\u0430 \u043f\u043e\u043b\u0435\u0442\u043e Src ..",qtsrc:"QT \u0438\u0437\u0432\u043e\u0440",progress:"\u041d\u0430\u043f\u0440\u0435\u0434\u043e\u043a",sound:"\u0417\u0432\u0443\u043a",swstretchvalign:"\u0420\u0430\u0448\u0438\u0440\u0438 \u043f\u043e \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0430",swstretchhalign:"\u0420\u0430\u0448\u0438\u0440\u0438 \u043f\u043e \u0445\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u0430",swstretchstyle:"\u0420\u0430\u0448\u0438\u0440\u0435\u043d \u0441\u0442\u0438\u043b",scriptcallbacks:"Script callbacks","align_top_right":"\u0413\u043e\u0440\u0435 \u0434\u0435\u0441\u043d\u043e",uimode:"UI \u043c\u043e\u0434",rate:"\u0411\u0440\u0437\u0438\u043d\u0430",playcount:"\u0411\u0440\u043e\u0458 \u043d\u0430 \u0438\u0433\u0440\u0438",defaultframe:"\u041f\u0440\u0435\u0432\u0437\u0435\u043c\u0435\u043d\u0430 \u0440\u0430\u043c\u043a\u0430",currentposition:"\u041c\u043e\u043c\u0435\u043d\u0442\u0430\u043b\u043d\u0430 \u043f\u043e\u0437\u0438\u0446\u0438\u0458\u0430",currentmarker:"\u041c\u043e\u043c\u0435\u043d\u0442\u0430\u043b\u0435\u043d \u043c\u0430\u0440\u043a\u0435\u0440",captioningid:"\u0414\u043e\u0434\u0435\u043b\u0443\u0432\u0430\u043d\u0458\u0435 \u0438\u043c\u0435 \u043d\u0430 ID",baseurl:"\u041e\u0441\u043d\u043e\u0432\u0435\u043d \u0423\u0420\u041b",balance:"\u0420\u0430\u043c\u043d\u043e\u0442\u0435\u0436\u0430",windowlessvideo:"Windowless video",stretchtofit:"\u0420\u0430\u0448\u0438\u0440\u0438 \u0434\u043e \u043a\u0440\u0430\u0458",mute:"\u0411\u0435\u0437 \u0433\u043b\u0430\u0441",invokeurls:"\u041f\u043e\u0432\u0438\u043a\u0430\u0458 \u0423\u0420\u041b-\u0430",fullscreen:"\u0426\u0435\u043b \u0435\u043a\u0440\u0430\u043d",enabled:"\u041e\u0432\u043e\u0437\u043c\u043e\u0436\u0438",autostart:"\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0441\u043a\u0438 \u0441\u0442\u0430\u0440\u0442",volume:"\u0413\u043b\u0430\u0441\u043d\u043e\u0441\u0442",target:"\u0426\u0435\u043b",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"\u0412\u0440\u0435\u043c\u0435 \u043d\u0430 \u043a\u0440\u0430\u0458",starttime:"\u0412\u0440\u0435\u043c\u0435 \u043d\u0430 \u043f\u043e\u0447\u0435\u0442\u043e\u043a",enablejavascript:"\u041e\u0432\u043e\u0437\u043c\u043e\u0436\u0438 JavaScript",correction:"\u0411\u0435\u0437 \u043a\u043e\u0440\u0435\u043a\u0446\u0438\u0458\u0430",targetcache:"\u0414\u043e\u0441\u0442\u0438\u0433\u043d\u0430\u0442\u0430 \u0446\u0435\u043b",playeveryframe:"\u041f\u0443\u0448\u0442\u0438\u0458\u0430 \u0441\u0435\u043a\u043e\u0458\u0430 \u0440\u0430\u043c\u043a\u0430",kioskmode:"Kiosk \u043c\u043e\u0434",controller:"\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u0435\u0440",menu:"\u041f\u043e\u043a\u0430\u0436\u0438 \u043c\u0435\u043d\u0438",loop:"\u0408\u0430\u043c\u043a\u0430",play:"\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0441\u043a\u0438 \u043e\u0434\u0438\u0433\u0440\u0430\u0458",hspace:"\u0425\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u043d\u043e \u043c\u0435\u0441\u0442\u043e",vspace:"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u043d\u043e \u043c\u0435\u0441\u0442\u043e","class_name":"\u041a\u043b\u0430\u0441\u0430",name:"\u0418\u043c\u0435",id:"\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0458\u0430 (Id)",type:"\u0422\u0438\u043f",size:"\u0414\u0438\u043c\u0435\u043d\u0437\u0438\u0438",preview:"\u041f\u0440\u0435\u0433\u043b\u0435\u0434","constrain_proportions":"\u0417\u0430\u0434\u0440\u0436\u0438 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u0438",controls:"\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u0438",numloop:"\u0411\u0440\u043e\u0458 \u043d\u0430 \u0458\u0430\u043c\u043a\u0438",console:"\u041a\u043e\u043d\u0437\u043e\u043b\u0430",cache:"\u041a\u0435\u0448",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flash \u043f\u0440\u043e\u043c\u0435\u043d\u043b\u0438\u0432\u0438",base:"\u041e\u0441\u043d\u043e\u0432\u0430",bgcolor:"\u041f\u043e\u0437\u0430\u0434\u0438\u043d\u0430",wmode:"WMode",salign:"SAlign",align:"\u041f\u043e\u0430\u0440\u0430\u043c\u043d\u0443\u0432\u0430\u045a\u0435",scale:"\u0420\u0430\u0437\u043c\u0435\u0440",quality:"\u041a\u0432\u0430\u043b\u0438\u0442\u0435\u0442",shuffle:"\u041c\u0435\u0448\u0430\u0458",prefetch:"Prefetch",nojava:"\u041d\u0435\u043c\u0430 java",maintainaspect:"\u0410\u0441\u043f\u0435\u043a\u0442 \u043d\u0430 \u043e\u0434\u0440\u0436\u0443\u0432\u0430\u045a\u0435",imagestatus:"\u0421\u0442\u0430\u0442\u0443\u0441 \u043d\u0430 \u0441\u043b\u0438\u043a\u0430",center:"\u0426\u0435\u043d\u0442\u0430\u0440/\u0441\u0440\u0435\u0434\u0438\u043d\u0430",autogotourl:"\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0441\u043a\u0438 \u043e\u0434\u0438 \u043d\u0430 \u0423\u0420\u041b","shockwave_options":"\u041e\u043f\u0446\u0438\u0438 \u043d\u0430 Shockwave ","rmp_options":"\u041e\u043f\u0446\u0438\u0438 \u043d\u0430 Real media player","wmp_options":"\u041e\u043f\u0446\u0438\u0438 \u043d\u0435 Windows media player","qt_options":"\u041e\u043f\u0446\u0438\u0438 \u043d\u0430 Quicktime","flash_options":"\u041e\u043f\u0446\u0438\u0438 \u043d\u0430 Flash",hidden:"\u0421\u043e\u043a\u0440\u0438\u0435\u043d\u043e","align_bottom_left":"\u0414\u043e\u043b\u0435 \u043b\u0435\u0432\u043e","align_bottom_right":"\u0414\u043e\u043b\u0435 \u0434\u0435\u0441\u043d\u043e",flash:"flash",quicktime:"quicktime","embedded_audio_options":"\u0412\u0433\u0440\u0430\u0434\u0435\u043d\u0438 \u0430\u0443\u0434\u0438\u043e \u043e\u043f\u0446\u0438\u0438",windowsmedia:"windowsmedia",realmedia:"realmedia",shockwave:"shockwave",audio:"\u0430\u0443\u0434\u0438\u043e",video:"\u0432\u0438\u0434\u0435\u043e","html5_video_options":"HTML5 \u0412\u0438\u0434\u0435\u043e \u043e\u043f\u0446\u0438\u0438",altsource1:"\u0410\u043b\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0435\u043d \u0438\u0437\u0432\u043e\u0440 1",altsource2:"\u0410\u043b\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0435\u043d \u0438\u0437\u0437\u0432\u043e\u0440 2",preload:"\u041d\u0430\u043b\u043e\u0436\u0438 \u043f\u0440\u0435\u0442\u0445\u043e\u0434\u043d\u043e",poster:"\u041f\u043e\u0441\u0442\u0435\u0440",source:"\u0418\u0437\u0432\u043e\u0440","html5_audio_options":"\u0410\u0443\u0434\u0438\u043e \u043e\u043f\u0446\u0438\u0438","preload_none":"\u0411\u0435\u0437 \u043f\u0440\u0435\u0442\u0445\u043e\u0434\u043d\u043e \u043d\u0430\u043b\u0430\u0433\u0430\u045a\u0435","preload_metadata":"\u041f\u0440\u0435\u0442\u0445\u043e\u0434\u043d\u043e \u043d\u0430\u043b\u043e\u0436\u0438 \u0432\u0438\u0434\u0435\u043e \u043c\u0435\u0442\u0430 \u043f\u043e\u0434\u0430\u0442\u043e\u0446\u0438","preload_auto":"\u041d\u0435\u043a\u0430 \u043e\u0434\u043b\u0443\u0447\u0438 \u043a\u043e\u0440\u0438\u0441\u043d\u0438\u0447\u043a\u0438\u043e\u0442 \u043f\u0440\u0435\u043b\u0438\u0441\u0442\u0443\u0432\u0430\u0447",iframe:"iframe",embeddedaudio:"\u0432\u0433\u0440\u0430\u0434\u0435\u043d\u043e \u0430\u0443\u0434\u0438\u043e"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/ms_dlg.js b/program/js/tiny_mce/plugins/media/langs/ms_dlg.js
deleted file mode 100644
index c73ae0a15..000000000
--- a/program/js/tiny_mce/plugins/media/langs/ms_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ms.media_dlg',{list:"Senarai",file:"Fail/URL",advanced:"Lanjutan",general:"Am",title:"Masukkan / sunting media","align_top_left":"Kiri atas","align_center":"Tengah","align_left":"Kiri","align_bottom":"Bawah","align_right":"Kanan","align_top":"Atas",qtsrc:"QT Src",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch Selarian-Tegak",swstretchhalign:"Bentangan Selarian-Ufuk",swstretchstyle:"Gaya bentangan",scriptcallbacks:"Panggilan balik skrip","align_top_right":"Kanan atas",uimode:"Mod Grafik",rate:"Undi",playcount:"Kira",defaultframe:"Bingkai asal",currentposition:"Posisi semasa",currentmarker:"Penanda semasa",captioningid:"Tajuk id",baseurl:"URL dasar",balance:"Baki",windowlessvideo:"Tetingkap tanpa video",stretchtofit:"Bujurkan supaya sesuai",mute:"Bisu",invokeurls:"Panggil URL",fullscreen:"Skrin penuh",enabled:"Dibolehkan",autostart:"Auto mula",volume:"Ketinggian suara",target:"Sasaran",qtsrcchokespeed:"Kelajuan sumbatan",href:"Href",endtime:"Masa tamat",starttime:"Masa bermula",enablejavascript:"Bolehkan JavaScript",correction:"Tiada pembetulan",targetcache:"Sasaran tersembunyi",playeveryframe:"Main setiap bingkai",kioskmode:"Mode toko",controller:"Kendali",menu:"Tunjuk menu",loop:"Gelung",play:"Auto main",hspace:"Ruangan-Datar",vspace:"Ruangan-Tegak","class_name":"Kelas",name:"Nama",id:"Id",type:"Jenis",size:"Dimensi",preview:"Pratonton","constrain_proportions":"Kadar tahanan",controls:"Kendali",numloop:"Nombor gelungan",console:"Konsol",cache:"Tempat menyembunyikan",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Dasar",bgcolor:"Latar belakang",wmode:"WMod",salign:"SLuruskan",align:"Luruskan",scale:"Ukuran",quality:"Kualiti",shuffle:"Merangkak",prefetch:"Preambilan",nojava:"Java tidak dibenarkan",maintainaspect:"Pelihara aspek",imagestatus:"Status imej",center:"Tengah",autogotourl:"Auto pergi-ke URL","shockwave_options":"Shockwave","rmp_options":"Pemain Real media","wmp_options":"Pemain Windows media","qt_options":"Quicktime","flash_options":"Flash",hidden:"Tersorok","align_bottom_left":"Bawah kiri","align_bottom_right":"Bawah kanan","qt_stream_warn":"Streamed RTSP resources should be added to the QT Source field under the Advanced tab.\nYou should also add a non-streamed version to the Source field.","html5_video_options":"HTML5 Video Options",altsource1:"Alternative source 1",altsource2:"Alternative source 2",preload:"Preload",poster:"Poster",source:"Source","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/nb_dlg.js b/program/js/tiny_mce/plugins/media/langs/nb_dlg.js
deleted file mode 100644
index 162beda16..000000000
--- a/program/js/tiny_mce/plugins/media/langs/nb_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nb.media_dlg',{list:"Liste",file:"Fil/URL",advanced:"Avansert",general:"Generelt",title:"Sett inn / rediger inkludert objekt","align_top_left":"Topp venstre","align_center":"Midtstill","align_left":"Venstre","align_bottom":"Bunn","align_right":"H\u00f8yre","align_top":"Topp","qt_stream_warn":"Streamede rtsp-ressurser b\u00f8r legges til QT Src-felt i avansert-fanen.\nDu b\u00f8r ogs\u00e5 legge til en ikke-streamet versjon i Src-felt",qtsrc:"QT Src",progress:"Framdrift",sound:"Lyd",swstretchvalign:"Strekk V-justering",swstretchhalign:"Strekk H-justering",swstretchstyle:"Strekkstil",scriptcallbacks:"Skript-referanser","align_top_right":"Topp h\u00f8yre",uimode:"UI-modus",rate:"Rate",playcount:"Teller",defaultframe:"Standardramme",currentposition:"Aktiv posisjon",currentmarker:"Aktiv mark\u00f8r",captioningid:"Fang opp id",baseurl:"Utgangsadresse (URL)",balance:"Balanse",windowlessvideo:"Video uten vindu",stretchtofit:"Strekk for \u00e5 passe inn",mute:"Demp",invokeurls:"Aktiviser URL-er",fullscreen:"Fullskjerm",enabled:"Kj\u00f8rbar",autostart:"Autostart",volume:"Volum",target:"M\u00e5l",qtsrcchokespeed:"Choke-hastighet",href:"Href",endtime:"Stopptid",starttime:"Starttid",enablejavascript:"Tillat Javaskript",correction:"Ingen korreksjon",targetcache:"M\u00e5l-mellomlagring",playeveryframe:"Spill hver ramme",kioskmode:"Kiosk-modus",controller:"Kontroller",menu:"Vis meny",loop:"L\u00f8kke",play:"Autostart",hspace:"Horisontal avstand",vspace:"Vertikal avstand","class_name":"Klasse",name:"Navn",id:"Id",type:"Type",size:"St\u00f8rrelse",preview:"Forh\u00e5ndsvisning","constrain_proportions":"Behold st\u00f8rrelsesforhold",controls:"Kontroller",numloop:"Antall gjennoml\u00f8p",console:"Konsoll",cache:"Mellomlager",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flash-variabler",base:"Base",bgcolor:"Bakgrunn",wmode:"W-modus",salign:"S-justering",align:"Justering",scale:"Skalering",quality:"Kvalitet",shuffle:"Miks",prefetch:"Forh\u00e5ndsregistrer",nojava:"Ingen Java",maintainaspect:"Behold st\u00f8rrelsesforhold",imagestatus:"Bildestatus",center:"Midtstill",autogotourl:"Auto-g\u00e5-til-URL","shockwave_options":"Shockwave-innstillinger","rmp_options":"Real mediaplayer-innstillinger","wmp_options":"Windows mediaplayer-innstillinger","qt_options":"Quicktime-innstillinger","flash_options":"Flash-egenskaper",hidden:"Skjult","align_bottom_left":"Bunn venstre","align_bottom_right":"Bunn h\u00f8yre",flash:"flash",quicktime:"quicktime","embedded_audio_options":"Innebygd lyd-valg",windowsmedia:"windowsmedia",realmedia:"realmedia",shockwave:"shockwave",audio:"lyd",video:"video","html5_video_options":"HTML5-videovalg",altsource1:"Alternativ kilde 1",altsource2:"Alternativ kilde 2",preload:"Forh\u00e5ndsvis",poster:"Poster",source:"Kilde","html5_audio_options":"Lydvalg","preload_none":"Ikke forh\u00e5ndslast","preload_metadata":"Forh\u00e5ndslast videos metadata","preload_auto":"La nettleser bestemme",iframe:"iframe",embeddedaudio:"embeddedaudio"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/nl_dlg.js b/program/js/tiny_mce/plugins/media/langs/nl_dlg.js
deleted file mode 100644
index 68ae6b008..000000000
--- a/program/js/tiny_mce/plugins/media/langs/nl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nl.media_dlg',{list:"Lijst",file:"Bestand/URL",advanced:"Geavanceerd",general:"Algemeen",title:"Media invoegen/bewerken","align_top_left":"Linksboven","align_center":"Centreren","align_left":"Links","align_bottom":"Onder","align_right":"Rechts","align_top":"Boven","qt_stream_warn":"Gestreamde RTSP bronnen dienen op het tabblad geavanceerd bij Quicktime bron te worden opgegeven.\nDe niet-gestreamde versie kan dan bij het tabblad algemeen worden opgegeven.",qtsrc:"Quicktime bron",progress:"Voortgang",sound:"Geluid",swstretchvalign:"V-Schaal",swstretchhalign:"H-Schaal",swstretchstyle:"Schaal",scriptcallbacks:"Script callbacks","align_top_right":"Rechtsboven",uimode:"UI Modus",rate:"Snelheid",playcount:"Afspeelteller",defaultframe:"Standaard frame",currentposition:"Huidige positie",currentmarker:"Huidige markering",captioningid:"Ondertiteling id",baseurl:"Basis URL",balance:"Balans",windowlessvideo:"Video zonder venster",stretchtofit:"Passend maken",mute:"Dempen",invokeurls:"URLs laden",fullscreen:"Volledig scherm",enabled:"Ingeschakeld",autostart:"Automatisch afspelen",volume:"Volume",target:"Doel",qtsrcchokespeed:"Chokesnelheid",href:"Href",endtime:"Eindtijd",starttime:"Starttijd",enablejavascript:"JavaScript Inschakelen",correction:"Geen correctie",targetcache:"Doelcache",playeveryframe:"Elk frame afspelen",kioskmode:"Kioskmodus",controller:"Controller",menu:"Menu weergeven",loop:"Herhalen",play:"Automatisch afspelen",hspace:"H-Ruimte",vspace:"V-Ruimte","class_name":"Klasse",name:"Naam",id:"Id",type:"Type",size:"Afmetingen",preview:"Voorbeeld","constrain_proportions":"Verhouding bewaren",controls:"Bediening",numloop:"Aantal herhalingen",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Variabelen",base:"Basis",bgcolor:"Achtergrond",wmode:"WMode",salign:"Schaaluitlijning",align:"Uitlijning",scale:"Schaal",quality:"Kwaliteit",shuffle:"Willekeurige volgorde",prefetch:"Voorladen",nojava:"Geen Java",maintainaspect:"Verhouding bewaren",imagestatus:"Afbeeldingstatus",center:"Centreren",autogotourl:"Automatisch naar URL","shockwave_options":"Shockwave opties","rmp_options":"Real Media Player Opties","wmp_options":"Windows Media Player Opties","qt_options":"Quicktime opties","flash_options":"Flash opties",hidden:"Verborgen","align_bottom_left":"Linksonder","align_bottom_right":"Rechtsonder",flash:"flash",quicktime:"quicktime","embedded_audio_options":"Ge\u00efntegreerd Geluid Opties",windowsmedia:"windowsmedia",realmedia:"realmedia",shockwave:"shockwave",audio:"geluid",video:"video","html5_video_options":"HTML5 Video Opties",altsource1:"Alternatieve bron 1",altsource2:"Alternatieve bron 2",preload:"Voorladen",poster:"Poster",source:"Bron","html5_audio_options":"Audio Opties","preload_none":"Niet voorladen","preload_metadata":"Video metadata voorladen","preload_auto":"Laat browser beslissen",iframe:"iframe",embeddedaudio:"ge\u00efntegreerd geluid"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/nn_dlg.js b/program/js/tiny_mce/plugins/media/langs/nn_dlg.js
deleted file mode 100644
index dc37b11bc..000000000
--- a/program/js/tiny_mce/plugins/media/langs/nn_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nn.media_dlg',{list:"Liste",file:"Fil/URL",advanced:"Avansert",general:"Generelt",title:"Set inn / rediger inkludert objekt","align_top_left":"Topp venstre","align_center":"Midt","align_left":"Venstre","align_bottom":"Botn","align_right":"H\u00f8gre","align_top":"Topp","qt_stream_warn":"Streama rtsp-ressursar b\u00f8r leggsst til QT Src field i avansert-fana.\nDu b\u00f8r ogs\u00e5 leggje til ein ikkje-streama versjon i src field",qtsrc:"QT Src",progress:"Framdrift",sound:"Lyd",swstretchvalign:"Strekk V-justering",swstretchhalign:"Strekk H-justering",swstretchstyle:"Strekkstil",scriptcallbacks:"Skript-referanser","align_top_right":"Top h\u00f8gre",uimode:"UI-modus",rate:"Rate",playcount:"Tellar",defaultframe:"Standardramme",currentposition:"Aktiv posisjon",currentmarker:"Aktiv mark\u00f8r",captioningid:"Fange opp id",baseurl:"Base URL",balance:"Balanse",windowlessvideo:"Video utan vindauge",stretchtofit:"Strekk for \u00e5 passe inn",mute:"Demp",invokeurls:"Aktiviser URL-ar",fullscreen:"Fullskjerm",enabled:"K\u00f8yrbar",autostart:"Autostart",volume:"Volum",target:"M\u00e5l",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"Stopptid",starttime:"Starttid",enablejavascript:"Tillat Javaskript",correction:"Ingen korreksjon",targetcache:"M\u00e5l-cache",playeveryframe:"Spel kvar ramme",kioskmode:"Kiosk-modus",controller:"Kontroller",menu:"Vis meny",loop:"Lykkje",play:"Autostart",hspace:"Horisontal avstand",vspace:"Vertikal avstand","class_name":"Klasse",name:"Namn",id:"Id",type:"Type",size:"Storleik",preview:"Sj\u00e5 f\u00f8rebels utkast","constrain_proportions":"Behald proporsjonar",controls:"Kontroller",numloop:"Antal gjennoml\u00f8p",console:"Konsoll",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flash-variablar",base:"Base",bgcolor:"Bakgrunn",wmode:"W-modus",salign:"S-justering",align:"Justering",scale:"Skalering",quality:"Kvalitet",shuffle:"Miks",prefetch:"Registrer p\u00e5 f\u00f8rehand",nojava:"Ikke Java",maintainaspect:"Behald proporsjonar",imagestatus:"Status for bilete",center:"Midtstill",autogotourl:"Auto-g\u00e5-til-URL","shockwave_options":"Shockwave-innstillinger","rmp_options":"Real mediaplayer-innstillingar","wmp_options":"Windows mediaplayer-innstillingar","qt_options":"Quicktime-innstillingar","flash_options":"Flash-eigenskapar",hidden:"Skjult","align_bottom_left":"Botn venste","align_bottom_right":"Botn h\u00f8gre","embedded_audio_options":"Embedded Audio Options","html5_video_options":"HTML5 Video Options",altsource1:"Alternative source 1",altsource2:"Alternative source 2",preload:"Preload",poster:"Poster",source:"Source","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide",flash:"",quicktime:"",windowsmedia:"",realmedia:"",shockwave:"",audio:"",video:"",iframe:"",embeddedaudio:""}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/pl_dlg.js b/program/js/tiny_mce/plugins/media/langs/pl_dlg.js
deleted file mode 100644
index 9e054b21d..000000000
--- a/program/js/tiny_mce/plugins/media/langs/pl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('pl.media_dlg',{list:"Lista",file:"Plik/URL",advanced:"Zaawansowane",general:"G\u0142\u00f3wne",title:"Wstaw/Edytuj wbudowane media","align_top_left":"G\u00f3rny lewy","align_center":"\u015arodek","align_left":"Lewo","align_bottom":"D\u00f3\u0142","align_right":"Prawo","align_top":"G\u00f3ra","qt_stream_warn":"Emitowane \u017ar\u00f3d\u0142a rtsp powinny by\u0107 dodane do pola QT Src w zak\u0142adce zaawansowane.nPowiniene\u015b r\u00f3wnie\u017c doda\u0107 niestrumieniow\u0105 wersj\u0119 do pola Src.",qtsrc:"QT Src",progress:"Post\u0119p",sound:"D\u017awi\u0119k",swstretchvalign:"Wyr\u00f3wnaj w pionie",swstretchhalign:"Wyr\u00f3wnaj w poziomie",swstretchstyle:"Styl rozci\u0105gania",scriptcallbacks:"Funkcje zwrotne skryptu","align_top_right":"G\u00f3rny prawy",uimode:"Tryb UI",rate:"Tempo",playcount:"Ilo\u015b\u0107 odtworze\u0144",defaultframe:"Domy\u015blna ramka",currentposition:"Aktualna pozycja",currentmarker:"Aktualny znacznik",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balans",windowlessvideo:"Wideo bez okienka",stretchtofit:"Rozci\u0105gnij aby dopasowa\u0107",mute:"Wycisz",invokeurls:"Odwo\u0142aj si\u0119 do URLi",fullscreen:"Pe\u0142ny ekran",enabled:"Aktywny",autostart:"Auto start",volume:"G\u0142o\u015bno\u015b\u0107",target:"Cel",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"Ko\u0144cowy czas",starttime:"Pocz\u0105tkowy czas",enablejavascript:"W\u0142\u0105cz JavaScript",correction:"Bez korekcji",targetcache:"Target cache",playeveryframe:"Odtwarzaj ka\u017cd\u0105 ramk\u0119",kioskmode:"Tryb kiosku",controller:"Kontroler",menu:"Poka\u017c menu",loop:"Zap\u0119tlenie",play:"Autoodtwarzanie",hspace:"H-Space",vspace:"V-Space","class_name":"Klasa",name:"Nazwa",id:"Id",type:"Typ",size:"Wymiary",preview:"Podgl\u0105d","constrain_proportions":"Zachowaj proporcje",controls:"Controls",numloop:"Liczba powt\u00f3rze\u0144",console:"Konsola",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Baza",bgcolor:"T\u0142o",wmode:"WMode",salign:"SAlign",align:"Wyr\u00f3wnaj",scale:"Skala",quality:"Jako\u015b\u0107",shuffle:"Losuj",prefetch:"Prze\u0142aduj",nojava:"Bez javy",maintainaspect:"Utrzymaj aspekt",imagestatus:"Obraz statusu",center:"Wy\u015brodkuj",autogotourl:"Automatycznie przejd\u017a pod adres","shockwave_options":"Opcje Shockwave","rmp_options":"Opcje Real media player","wmp_options":"Opcje Windows media player","qt_options":"Opcje Quicktime","flash_options":"Opcje flasha",hidden:"Ukryty","align_bottom_left":"Dolny lewy","align_bottom_right":"Dolny prawy",flash:"flash",quicktime:"quicktime","embedded_audio_options":"Opcje Embedded Audio",windowsmedia:"windowsmedia",realmedia:"realmedia",shockwave:"shockwave",audio:"audio",video:"video","html5_video_options":"Opcje HTML5 Video",altsource1:"Alternatywne \u017ar\u00f3d\u0142o 1",altsource2:"Alternatywne \u017ar\u00f3d\u0142o 2",preload:"Prze\u0142aduj",poster:"Obraz",source:"\u0179r\u00f3d\u0142o","html5_audio_options":"Opcje audio","preload_none":"Nie \u0142\u0105duj wst\u0119pnie","preload_metadata":"\u0141aduj wst\u0119pnie metadane video","preload_auto":"Pozw\u00f3l zdecydowa\u0107 przegl\u0105darce u\u017cytkownika",iframe:"iframe",embeddedaudio:"embeddedaudio"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/ps_dlg.js b/program/js/tiny_mce/plugins/media/langs/ps_dlg.js
deleted file mode 100644
index 6589c9be1..000000000
--- a/program/js/tiny_mce/plugins/media/langs/ps_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ps.media_dlg',{list:"List",file:"File/URL",advanced:"Advanced",general:"General",title:"Insert / edit embedded media","align_top_left":"Top left","align_center":"Center","align_left":"Left","align_bottom":"Bottom","align_right":"Right","align_top":"Top","qt_stream_warn":"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks","align_top_right":"Top right",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Default frame",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless video",stretchtofit:"Stretch to fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Fullscreen",enabled:"Enabled",autostart:"Auto start",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"End time",starttime:"Start time",enablejavascript:"Enable JavaScript",correction:"No correction",targetcache:"Target cache",playeveryframe:"Play every frame",kioskmode:"Kiosk mode",controller:"Controller",menu:"Show menu",loop:"Loop",play:"Auto play",hspace:"H-Space",vspace:"V-Space","class_name":"Class",name:"Name",id:"Id",type:"Type",size:"Dimensions",preview:"Preview","constrain_proportions":"Constrain proportions",controls:"Controls",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Background",wmode:"WMode",salign:"SAlign",align:"Align",scale:"Scale",quality:"Quality",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Image status",center:"Center",autogotourl:"Auto goto URL","shockwave_options":"Shockwave options","rmp_options":"Real media player options","wmp_options":"Windows media player options","qt_options":"Quicktime options","flash_options":"Flash options",hidden:"Hidden","align_bottom_left":"Bottom left","align_bottom_right":"Bottom right","html5_video_options":"HTML5 Video Options",altsource1:"Alternative source 1",altsource2:"Alternative source 2",preload:"Preload",poster:"Poster",source:"Source","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/pt_dlg.js b/program/js/tiny_mce/plugins/media/langs/pt_dlg.js
deleted file mode 100644
index f578cd750..000000000
--- a/program/js/tiny_mce/plugins/media/langs/pt_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('pt.media_dlg',{list:"Lista",file:"Arquivo/URL",advanced:"Avan\u00e7ado",general:"Geral",title:"Inserir/Editar m\u00eddia embutida","align_top_left":"Topo esquerda","align_center":"Centro","align_left":"Esquerda","align_bottom":"Abaixo","align_right":"Direita","align_top":"Topo","qt_stream_warn":"Fluxos de recursos RTSP devem ser acrescentados ao campo QT Src no Modo Avan\u00e7ado.\nUma vers\u00e3o sem fluxo tamb\u00e9m deve ser acrescentada ao campo Src.",qtsrc:"QT Src",progress:"Progresso",sound:"Som",swstretchvalign:"For\u00e7ar V-Alinhamento",swstretchhalign:"For\u00e7ar H-Alinhamento",swstretchstyle:"For\u00e7ar Estilo",scriptcallbacks:"Retornos de chamada de script","align_top_right":"Topo direita",uimode:"Modo UI",rate:"Taxa",playcount:"Contagem de ouvintes",defaultframe:"Frame padr\u00e3o",currentposition:"Posi\u00e7\u00e3o atual",currentmarker:"Marcador atual",captioningid:"Id de legenda",baseurl:"URL Base",balance:"Stereo",windowlessvideo:"V\u00eddeo sem janela",stretchtofit:"Estender",mute:"Mudo",invokeurls:"Chamar URLs",fullscreen:"Tela inteira",enabled:"Ativado",autostart:"Execu\u00e7\u00e3o autom\u00e1tica",volume:"Volume",target:"Alvo",qtsrcchokespeed:"Diminuir Velocidade",href:"Link",endtime:"Hora do fim",starttime:"Hora de in\u00edcio",enablejavascript:"Permitir JavaScript",correction:"Sem correc\u00e7\u00f5es",targetcache:"Cache alvo",playeveryframe:"Executar todas as frames",kioskmode:"Modo Kiosk",controller:"Controlador",menu:"Mostrar menu",loop:"Repeti\u00e7\u00e3o autom\u00e1tica",play:"Execu\u00e7\u00e3o autom\u00e1tica",hspace:"Espa\u00e7o horizontal",vspace:"Espa\u00e7o vertical","class_name":"Classe",name:"Nome",id:"ID",type:"Tipo",size:"Dimens\u00f5es",preview:"Previs\u00e3o","constrain_proportions":"Manter propor\u00e7\u00f5es",controls:"Controles",numloop:"Repeti\u00e7\u00f5es",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flash Vars",base:"Base",bgcolor:"Fundo",wmode:"WMode",salign:"SAlign",align:"Alinhamento",scale:"Escala",quality:"Qualidade",shuffle:"Aleat\u00f3rio",prefetch:"Pr\u00e9-buscar",nojava:"Sem Java",maintainaspect:"Manter aspecto",imagestatus:"Status da imagem",center:"Centro",autogotourl:"Auto abrir URL","shockwave_options":"Op\u00e7\u00f5es Shockwave","rmp_options":"Op\u00e7\u00f5es Real Media Player","wmp_options":"Op\u00e7\u00f5es Windows Media Player","qt_options":"Op\u00e7\u00f5es Quicktime","flash_options":"Op\u00e7\u00f5es Flash",hidden:"Oculto","align_bottom_left":"Abaixo esquerda","align_bottom_right":"Abaixo direita",flash:"flash",quicktime:"quicktime","embedded_audio_options":"Op\u00e7\u00f5es de \u00c1udio Embutido",windowsmedia:"windowsmedia",realmedia:"realmedia",shockwave:"shockware",audio:"\u00e1udio",video:"v\u00eddeo","html5_video_options":"Op\u00e7\u00f5es de v\u00eddeo HTML5",altsource1:"C\u00f3digo alternativo 1",altsource2:"C\u00f3digo alternativo 2",preload:"Pr\u00e9-carregar",poster:"Poster",source:"Fonte","html5_audio_options":"Op\u00e7\u00f5es de Audio","preload_none":"N\u00e3o Pr\u00e9-carregar","preload_metadata":"Pr\u00e9-carregar metadata de v\u00eddeo","preload_auto":"Deixar que navegador do usu\u00e1rio decida",iframe:"iframe",embeddedaudio:"\u00e1udio embutido"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/ro_dlg.js b/program/js/tiny_mce/plugins/media/langs/ro_dlg.js
deleted file mode 100644
index 6b4bfb316..000000000
--- a/program/js/tiny_mce/plugins/media/langs/ro_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ro.media_dlg',{list:"List\u0103",file:"Fi\u0219ier/URL",advanced:"Avansat\u0103",general:"General",title:"Insereaz\u0103 / editeaz\u0103 media","align_top_left":"St\u00e2nga sus","align_center":"Centru","align_left":"St\u00e2nga","align_bottom":"Jos","align_right":"Dreapta","align_top":"Sus","qt_stream_warn":"Resursele de tip flux rtsp trebuie ad\u0103ugate \u00een c\u00e2mpul QT Src din fila avansat.\nAr trebui de asemenea s\u0103 adaugi \u00een c\u00e2mpul Src o variant\u0103 care nu este de tip flux.",qtsrc:"QT Src",progress:"Progres",sound:"Sunet",swstretchvalign:"\u00centindere V-Aliniere",swstretchhalign:"\u00centindere H-Aliniere",swstretchstyle:"Stil \u00eentindere",scriptcallbacks:"Script callback","align_top_right":"Dreapta sus",uimode:"Mod UI",rate:"Vot",playcount:"Numar red\u0103ri",defaultframe:"Frame implicit",currentposition:"Pozi\u021bie curent\u0103",currentmarker:"Marcator curent",captioningid:"Titlu id",baseurl:"URL baz\u0103",balance:"Balan\u021b\u0103",windowlessvideo:"Video f\u0103r\u0103 fereastr\u0103",stretchtofit:"\u00centinde pentru a se \u00eencadra",mute:"Mut",invokeurls:"Invoc\u0103 URL-uri",fullscreen:"Ecran complet",enabled:"Activat",autostart:"Pornire automat\u0103",volume:"Volum",target:"Tin\u0163a",qtsrcchokespeed:"Viteza de sufocare",href:"Href",endtime:"Timp de sf\u00e2r\u0219it",starttime:"Timp de \u00eenceput",enablejavascript:"Activeaz\u0103 JavaScript",correction:"F\u0103r\u0103 corecturi",targetcache:"Memoria tampon \u021bint\u0103",playeveryframe:"Red\u0103 fiecare cadru",kioskmode:"Mod chio\u0219c",controller:"Controler",menu:"Arat\u0103 meniu",loop:"Repetare",play:"Redare automat\u0103",hspace:"H-Space",vspace:"V-Space","class_name":"Clas\u0103",name:"Nume",id:"Id",type:"Tip",size:"Dimensiuni",preview:"Previzualizare","constrain_proportions":"Men\u0163inere propor\u021bii",controls:"Controale",numloop:"Num\u0103r de repet\u0103ri",console:"Consol\u0103",cache:"Memorie tampon",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Variabile Flash",base:"URL de baz\u0103",bgcolor:"Fundal",wmode:"WMode",salign:"SAlign",align:"Aliniere",scale:"Scar\u0103",quality:"Calitate",shuffle:"Aleator",prefetch:"Prefetch",nojava:"F\u0103r\u0103 java",maintainaspect:"Men\u021bine aspect",imagestatus:"Status imagine",center:"Centru",autogotourl:"Mergi automat la URL","shockwave_options":"Op\u021biuni Shockwave","rmp_options":"Op\u021biuni Real media player","wmp_options":"Op\u021biuni Windows media player","qt_options":"Op\u021biuni QuickTime","flash_options":"Op\u021biuni Flash",hidden:"Ascuns","align_bottom_left":"St\u00e2nga jos","align_bottom_right":"Dreapta jos",flash:"flash",quicktime:"quicktime","embedded_audio_options":"Op\u021biuni de includere audio",windowsmedia:"windowsmedia",realmedia:"realmedia",shockwave:"shockwave",audio:"audio",video:"video","html5_video_options":"Op\u021biuni video HTML5",altsource1:"Sursa alternativ\u0103 1",altsource2:"Sursa alternativ\u0103 2",preload:"Pre\u00eencarc\u0103",poster:"Afi\u0219",source:"Surs\u0103","html5_audio_options":"Op\u021biuni audio","preload_none":"Nu pre\u00eenc\u0103rca","preload_metadata":"Pre\u00eencarc\u0103 metadatele video","preload_auto":"Las\u0103 navigatorul utilizatorului s\u0103 decid\u0103",iframe:"iframe",embeddedaudio:"embeddedaudio"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/ru_dlg.js b/program/js/tiny_mce/plugins/media/langs/ru_dlg.js
deleted file mode 100644
index fbb186b9b..000000000
--- a/program/js/tiny_mce/plugins/media/langs/ru_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ru.media_dlg',{list:"\u0421\u043f\u0438\u0441\u043e\u043a",file:"\u0410\u0434\u0440\u0435\u0441",advanced:"\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e",general:"\u041e\u0431\u0449\u0435\u0435",title:"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043b\u0438\u043f\u0430","align_top_left":"\u041f\u043e \u043b\u0435\u0432\u043e\u043c\u0443 \u0432\u0435\u0440\u0445\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e","align_center":"\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443","align_left":"\u041f\u043e \u043b\u0435\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","align_bottom":"\u041f\u043e \u043d\u0438\u0436\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e","align_right":"\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","align_top":"\u041f\u043e \u0432\u0435\u0440\u0445\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e","qt_stream_warn":"\u041f\u043e\u0442\u043e\u043a\u043e\u0432\u044b\u0435 rtsp \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0432 \u043f\u043e\u043b\u0435 QT Src.",qtsrc:"QT Src",progress:"\u041f\u0440\u043e\u0433\u0440\u0435\u0441\u0441",sound:"\u0417\u0432\u0443\u043a",swstretchvalign:"\u0412\u0435\u0440. \u0432\u044b\u0440-\u0435 \u0440\u0430\u0441\u0442\u044f\u0436\u0435\u043d\u0438\u044f",swstretchhalign:"\u0413\u043e\u0440. \u0432\u044b\u0440-\u0435 \u0440\u0430\u0441\u0442\u044f\u0436\u0435\u043d\u0438\u044f",swstretchstyle:"\u0421\u0442\u0438\u043b\u044c \u0440\u0430\u0441\u0442\u044f\u0436\u0435\u043d\u0438\u0435",scriptcallbacks:"\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u0430","align_top_right":"\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u0432\u0435\u0440\u0445\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e",uimode:"\u0420\u0435\u0436\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430",rate:"\u0420\u0435\u0439\u0442\u0438\u043d\u0433",playcount:"\u0429\u0435\u0442\u0447\u0438\u043a \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0439",defaultframe:"\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u0430\u0434\u0440",currentposition:"\u0422\u0435\u043a\u0443\u0449\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u044f",currentmarker:"\u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u0430\u0440\u043a\u0435\u0440",captioningid:"\u0418\u043c\u044f \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043e\u0432",baseurl:"\u0411\u0430\u0437\u043e\u0440\u0432\u044b\u0439 \u0430\u0434\u0440\u0435\u0441",balance:"\u0411\u0430\u043b\u0430\u043d\u0441",windowlessvideo:"\u041e\u043a\u043e\u043d\u043d\u043e\u0435 \u0432\u0438\u0434\u0435\u043e",stretchtofit:"\u041f\u043e\u0434 \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u043a\u043d\u0430",mute:"\u0411\u0435\u0437 \u0437\u0432\u0443\u043a\u0430",invokeurls:"\u0412\u044b\u0437\u0432\u0430\u0442\u044c \u0430\u0434\u0440\u0435\u0441",fullscreen:"\u041d\u0430 \u0432\u0435\u0441\u044c \u044d\u043a\u0440\u0430\u043d",enabled:"\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u043e",autostart:"\u0410\u0432\u0442\u043e\u0437\u0430\u043f\u0443\u0441\u043a",volume:"\u0413\u0440\u043e\u043c\u043a\u043e\u0441\u0442\u044c",target:"\u0426\u0435\u043b\u044c",qtsrcchokespeed:"Choke speed",href:"\u0421\u0441\u044b\u043b\u043a\u0430",endtime:"\u0412\u0440\u0435\u043c\u044f \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f",starttime:"\u0412\u0440\u0435\u043c\u044f \u043d\u0430\u0447\u0430\u043b\u0430",enablejavascript:"\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c JavaScript",correction:"\u0411\u0435\u0437 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u043a\u0438",targetcache:"\u041a\u044d\u0448 \u0446\u0435\u043b\u0438",playeveryframe:"\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u0430\u0434\u0440",kioskmode:"\u0420\u0435\u0436\u0438\u043c \u043a\u0438\u043e\u0441\u043a",controller:"\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435",menu:"\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043c\u0435\u043d\u044e",loop:"\u041f\u043e\u0432\u0442\u043e\u0440",play:"\u0410\u0432\u0442\u0437\u0430\u043f\u0443\u0441\u043a",hspace:"\u0413\u043e\u0440. \u043e\u0442\u0441\u0442\u0443\u043f",vspace:"\u0412\u0435\u0440\u0442. \u043e\u0442\u0441\u0442\u0443\u043f","class_name":"\u041a\u043b\u0430\u0441\u0441",name:"\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435",id:"\u0418\u043c\u044f",type:"\u0422\u0438\u043f",size:"\u0420\u0430\u0437\u043c\u0435\u0440\u044b",preview:"\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440","constrain_proportions":"\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u0438",controls:"\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435",numloop:"\u041f\u043e\u0432\u0442\u043e\u0440\u044b",console:"\u041a\u043e\u043d\u0441\u043e\u043b\u044c",cache:"\u041a\u044d\u0448",autohref:"\u0410\u0432\u0442\u043e-\u0441\u0441\u044b\u043b\u043a\u0430",liveconnect:"SWLiveConnect",flashvars:"Flash \u043a\u043e\u043c\u0430\u043d\u0434\u044b",base:"Base",bgcolor:"\u0424\u043e\u043d",wmode:"\u041e\u043a\u043d\u043e",salign:"\u0412\u044b\u0440-\u0435",align:"\u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435",scale:"\u041e\u0431\u043b\u0430\u0441\u0442\u044c",quality:"\u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e",shuffle:"\u0412 \u0440\u0430\u0437\u0431\u0440\u043e\u0441",prefetch:"\u0423\u043f\u0440\u0435\u0436\u0434\u0430\u044e\u0449\u0430\u044f \u0432\u044b\u0431\u043e\u0440\u043a\u0430",nojava:"\u0411\u0435\u0437 Java",maintainaspect:"\u0417\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440",imagestatus:"\u0421\u0442\u0430\u0442\u0443\u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f",center:"\u0426\u0435\u043d\u0442\u0440",autogotourl:"\u0410\u0432\u0442\u043e\u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u0430\u0434\u0440\u0435\u0441","shockwave_options":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b Shockwave","rmp_options":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b Real Media","wmp_options":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b Windows Media","qt_options":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b Quicktime","flash_options":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b Flash",hidden:"\u0421\u043a\u0440\u044b\u0442\u044b\u0439","align_bottom_left":"\u041f\u043e \u043b\u0435\u0432\u043e\u043c\u0443 \u043d\u0438\u0436\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e","align_bottom_right":"\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043d\u0438\u0436\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e",flash:"\u0412\u0441\u0442\u0430\u0432\u043a\u0430 Flash \u0444\u0430\u0439\u043b\u0430",quicktime:"\u0412\u0441\u0442\u0430\u0432\u043a\u0430 Quick Time \u0444\u0430\u0439\u043b\u0430","embedded_audio_options":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432\u043d\u0435\u0434\u0440\u0451\u043d\u043d\u043e\u0433\u043e \u0430\u0443\u0434\u0438\u043e",windowsmedia:"\u0412\u0441\u0442\u0430\u0432\u043a\u0430 Windows Media \u0444\u0430\u0439\u043b\u0430",realmedia:"\u0412\u0441\u0442\u0430\u0432\u043a\u0430 Real Media \u0444\u0430\u0439\u043b\u0430",shockwave:"\u0412\u0441\u0442\u0430\u0432\u043a\u0430 Shockwave \u0444\u0430\u0439\u043b\u0430",audio:"\u0412\u0441\u0442\u0430\u0432\u043a\u0430 HTML5 \u0437\u0432\u0443\u043a\u043e\u0432\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430",video:"\u0412\u0441\u0442\u0430\u0432\u043a\u0430 HTML5 \u0432\u0438\u0434\u0435\u043e \u0444\u0430\u0439\u043b\u0430","html5_video_options":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b HTML5 Video",altsource1:"\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a 1",altsource2:"\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a 2",preload:"\u041f\u0440\u0435\u0434\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430",poster:"\u041f\u043e\u0441\u0442\u0435\u0440",source:"\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a","html5_audio_options":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0430\u0443\u0434\u0438\u043e","preload_none":"\u0411\u0435\u0437 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438","preload_metadata":"\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u0438\u0434\u0435\u043e","preload_auto":"\u041d\u0430 \u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430",iframe:"\u0412\u0441\u0442\u0430\u0432\u043a\u0430 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0440\u0435\u0441\u0443\u0440\u0441 \u0432 IFrame",embeddedaudio:"\u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0417\u0432\u0443\u043a"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/si_dlg.js b/program/js/tiny_mce/plugins/media/langs/si_dlg.js
deleted file mode 100644
index 7b8989d52..000000000
--- a/program/js/tiny_mce/plugins/media/langs/si_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('si.media_dlg',{list:"List",file:"File/URL",advanced:"Advanced",general:"General",title:"Insert / edit embedded media","align_top_left":"Top left","align_center":"Center","align_left":"Left","align_bottom":"Bottom","align_right":"Right","align_top":"Top","qt_stream_warn":"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks","align_top_right":"Top right",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Default frame",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless video",stretchtofit:"Stretch to fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Fullscreen",enabled:"Enabled",autostart:"Auto start",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"End time",starttime:"Start time",enablejavascript:"Enable JavaScript",correction:"No correction",targetcache:"Target cache",playeveryframe:"Play every frame",kioskmode:"Kiosk mode",controller:"Controller",menu:"Show menu",loop:"Loop",play:"Auto play",hspace:"H-Space",vspace:"V-Space","class_name":"Class",name:"Name",id:"Id",type:"Type",size:"Dimensions",preview:"Preview","constrain_proportions":"Constrain proportions",controls:"Controls",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Background",wmode:"WMode",salign:"SAlign",align:"Align",scale:"Scale",quality:"Quality",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Image status",center:"Center",autogotourl:"Auto goto URL","shockwave_options":"Shockwave options","rmp_options":"Real media player options","wmp_options":"Windows media player options","qt_options":"Quicktime options","flash_options":"Flash options",hidden:"Hidden","align_bottom_left":"Bottom left","align_bottom_right":"Bottom right","html5_video_options":"HTML5 Video Options",altsource1:"Alternative source 1",altsource2:"Alternative source 2",preload:"Preload",poster:"Poster",source:"Source","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/sk_dlg.js b/program/js/tiny_mce/plugins/media/langs/sk_dlg.js
deleted file mode 100644
index eb96783f7..000000000
--- a/program/js/tiny_mce/plugins/media/langs/sk_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sk.media_dlg',{list:"Zoznam",file:"S\u00fabor/URL",advanced:"Roz\u0161\u00edren\u00e9",general:"Obecn\u00e9",title:"Vlo\u017ei\u0165/upravi\u0165 vkladan\u00e9 m\u00e9di\u00e1","align_top_left":"Hore v\u013eavo","align_center":"Na stred","align_left":"V\u013eavo","align_bottom":"Dolu","align_right":"Vpravo","align_top":"Hore","qt_stream_warn":"Streamovan\u00e9 RTSP zdroje m\u00f4\u017eu by\u0165 pridan\u00e9 do polia \'S\u00fabor/URL streamu pre QT\' na z\u00e1lo\u017eke \'Roz\u0161\u00edren\u00e9\'.\nM\u00f4\u017ete tie\u017e prida\u0165 nie streamovan\u00fa verziu do polia \'S\u00fabor/URL\'.",qtsrc:"S\u00fabor/URL streamu pre QT",progress:"Priebeh",sound:"Zvuk",swstretchvalign:"Zarovnanie vert. roztiahnutia",swstretchhalign:"Zarovnanie horiz. roztiahnutia",swstretchstyle:"\u0160t\u00fdl roztiahnutia",scriptcallbacks:"Skripty sp\u00e4tn\u00fdch volan\u00ed","align_top_right":"Hore vpravo",uimode:"Re\u017eim ovl\u00e1dacieho panelu",rate:"Relat\u00edvna r\u00fdchlos\u0165",playcount:"Po\u010d\u00edtadlo prehrat\u00ed",defaultframe:"Predvolen\u00fd sn\u00edmok",currentposition:"Aktu\u00e1lna poz\u00edcia",currentmarker:"Aktu\u00e1lna z\u00e1lo\u017eka",captioningid:"ID popisku m\u00e9dia",baseurl:"Z\u00e1kladn\u00e1 URL",balance:"Rovnov\u00e1ha",windowlessvideo:"Video bez okna",stretchtofit:"Roztiahn\u00fa\u0165 do okna",mute:"Uml\u010da\u0165",invokeurls:"Po\u017eadova\u0165 URL",fullscreen:"Cel\u00e1 obrazovka",enabled:"Povoli\u0165 ovl\u00e1dac\u00ed panel",autostart:"Automatick\u00e9 spustenie",volume:"Hlasitos\u0165",target:"Cie\u013e",qtsrcchokespeed:"Zn\u00ed\u017eenie r\u00fdchlosti",href:"Odkaz",endtime:"Koncov\u00fd \u010das",starttime:"Po\u010diato\u010dn\u00fd \u010das",enablejavascript:"Povoli\u0165 JavaScript",correction:"Bez korekci\u00ed",targetcache:"Cie\u013eov\u00e1 medzipam\u00e4\u0165",playeveryframe:"Prehra\u0165 ka\u017ed\u00fd sn\u00edmok",kioskmode:"Zak\u00e1za\u0165 ukladanie",controller:"Ovl\u00e1dac\u00ed panel",menu:"Zobrazi\u0165 ponuku",loop:"Opakovanie",play:"Automatick\u00e9 prehr\u00e1vanie",hspace:"Horizont\u00e1lne odsadenie",vspace:"Vertik\u00e1lne odsadenie","class_name":"Trieda",name:"N\u00e1zov",id:"ID",type:"Typ",size:"Rozmery",preview:"N\u00e1h\u013ead","constrain_proportions":"Zachova\u0165 proporcie",controls:"Ovl\u00e1dac\u00ed panel",numloop:"Po\u010det opakovan\u00ed",console:"Konzola",cache:"Medzipam\u00e4\u0165",autohref:"Automatick\u00e9 na\u010d\u00edtanie",liveconnect:"Spusti\u0165 Javu (SWLiveConnect)",flashvars:"Parametre (Flashvars)",base:"Z\u00e1kladn\u00fd prie\u010dinok",bgcolor:"Pozadie",wmode:"Re\u017eim okna",salign:"Zarovnanie okna",align:"Zarovnanie",scale:"Pomer",quality:"Kvalita",shuffle:"N\u00e1hodne",prefetch:"Predna\u010d\u00edtanie",nojava:"Nesp\u00fa\u0161\u0165a\u0165 Javu",maintainaspect:"Zachova\u0165 pomer str\u00e1n",imagestatus:"Stav obrazu",center:"Na stred",autogotourl:"Automatick\u00fd prechod na URL","shockwave_options":"Mo\u017enosti Shockwave","rmp_options":"Mo\u017enosti prehr\u00e1va\u010da Real media","wmp_options":"Mo\u017enosti prehr\u00e1va\u010da Windows media","qt_options":"Mo\u017enosti Quicktime","flash_options":"Mo\u017enosti Flashu",hidden:"Skry\u0165","align_bottom_left":"Dolu v\u013eavo","align_bottom_right":"Dolu vpravo",flash:"flash",quicktime:"quicktime","embedded_audio_options":"Mo\u017enosti vlo\u017een\u00e9ho audio s\u00faboru",windowsmedia:"windowsmedia",realmedia:"realmedia",shockwave:"shockwave",audio:"audio",video:"video","html5_video_options":"Mo\u017enosti HTML5 video",altsource1:"Alternat\u00edvny zdroj 1",altsource2:"Alternat\u00edvny zdroj 2",preload:"Predna\u010d\u00edtanie",poster:"Obr\u00e1zok (zobraz\u00ed sa pri nedostupnosti videa)",source:"Zdroj","html5_audio_options":"Vlastnosti audia","preload_none":"Nepred\u010d\u00edtaj","preload_metadata":"Nepred\u010d\u00edtaj meta-\u00fadaje videa","preload_auto":"Ponechajte vo\u013eba pri v\u00fdbere prehliada\u010da na u\u017e\u00edvate\u013eovi",iframe:"iframe",embeddedaudio:"embeddedaudio"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/sl_dlg.js b/program/js/tiny_mce/plugins/media/langs/sl_dlg.js
deleted file mode 100644
index fc02c62ea..000000000
--- a/program/js/tiny_mce/plugins/media/langs/sl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sl.media_dlg',{list:"Seznam",file:"Datoteka/URL",advanced:"Napredno",general:"Splo\u0161no",title:"Vstavi / uredi multimedijsko vsebino","align_top_left":"zgoraj levo","align_center":"sredina","align_left":"levo","align_bottom":"spodaj","align_right":"desno","align_top":"zgoraj","qt_stream_warn":"V polje \"QT vir\" pod zavihkom napredno, morajo biti dodani preto\u010dni RTSP viri.\nNepreto\u010dna razli\u010dica mora biti dodana v polje \"vir\".",qtsrc:"QT vir",progress:"Napredek",sound:"Zvok",swstretchvalign:"raztegni n-poravnano",swstretchhalign:"raztegni v-poravnano",swstretchstyle:"Slog raztegovanja",scriptcallbacks:"Povratni klici","align_top_right":"zgoraj desno",uimode:"Na\u010din uporabni\u0161kega vmesnika",rate:"Ocena",playcount:"\u0160tevilo predvajanj",defaultframe:"Privzeti okvir",currentposition:"Trenutni polo\u017eaj",currentmarker:"Trenutna oznaka",captioningid:"Oznaka podnapisov",baseurl:"Temeljni URL",balance:"Ravnovesje",windowlessvideo:"Video brez okna",stretchtofit:"Raz\u0161iri",mute:"Uti\u0161aj",invokeurls:"Naslovi URLje",fullscreen:"Cel zaslon",enabled:"Omogo\u010deno",autostart:"Samodejno predvajaj",volume:"Glasnost",target:"Cilj",qtsrcchokespeed:"Hitrost predpomnenja",href:"Povezava",endtime:"Kon\u010dni \u010das",starttime:"Za\u010detni \u010das",enablejavascript:"Omogo\u010di JavaScript",correction:"Brez popravkov",targetcache:"Ciljno predpomnjenje",playeveryframe:"Predvajaj vsak okvir",kioskmode:"Kiosk na\u010din",controller:"Nadzorni element",menu:"Prika\u017ei meni",loop:"Ponavljaj",play:"Samodejno predvajaj",hspace:"H-razmik",vspace:"V-razmik","class_name":"Razred",name:"Ime",id:"Id",type:"Tip",size:"Dimenzije",preview:"Predogled","constrain_proportions":"Obdr\u017ei razmerje",controls:"Nadzorni elementi",numloop:"\u0160t. zank",console:"Konzola",cache:"Predpomnjenje",autohref:"Avtomatska povezava",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Osnova",bgcolor:"Ozadje",wmode:"WM na\u010din",salign:"S-poravnava",align:"Poravnava",scale:"Stopnja pove\u010dave",quality:"Kakovost",shuffle:"Pome\u0161aj",prefetch:"Predpomnenje",nojava:"Brez Jave",maintainaspect:"Zakleni razmerje",imagestatus:"Slika stanja",center:"Sredina",autogotourl:"Samodejno na URL","shockwave_options":"Mo\u017enosti Shockwave","rmp_options":"Mo\u017enosti Real media player","wmp_options":"Mo\u017enosti Windows media player","qt_options":"Mo\u017enosti Quicktime","flash_options":"Mo\u017enosti Flash",hidden:"Skrito","align_bottom_left":"spodaj levo","align_bottom_right":"spodaj desno",flash:"flash",quicktime:"quicktime","embedded_audio_options":"Nastavitve za vstavljeni zvok",windowsmedia:"windowsmedia",realmedia:"realmedia",shockwave:"shockwave",audio:"audio",video:"video","html5_video_options":"HTML5 video nastavitve",altsource1:"Alternativni vir 1",altsource2:"Alternativni vir 2",preload:"Predpomnenje",poster:"Poster",source:"Vir","html5_audio_options":"Nastavitve za zvok","preload_none":"Brez prednalaganja","preload_metadata":"Prednalo\u017ei mata podatke za video ","preload_auto":"Privzeta nastavitev brskalnika",iframe:"iframe",embeddedaudio:"embeddedaudio"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/sq_dlg.js b/program/js/tiny_mce/plugins/media/langs/sq_dlg.js
deleted file mode 100644
index efe1332ef..000000000
--- a/program/js/tiny_mce/plugins/media/langs/sq_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sq.media_dlg',{list:"Lista",file:"Skedari/URL",advanced:"T\u00eb Avancuara",general:"T\u00eb P\u00ebrgjithshme",title:"Fut / edito media","align_top_left":"Krye-majtas","align_center":"Qend\u00ebr","align_left":"Majtas","align_bottom":"Fund","align_right":"Djathtas","align_top":"Krye","qt_stream_warn":"Risurset RTSP duhet t\u00eb shtohen n\u00eb fush\u00ebn QT Src n\u00eb opsionet e avancuara.\nDuhet t\u00eb shtoni gjithashtu nj\u00eb version jo stream n\u00eb fush\u00ebn src..",qtsrc:"QT Src",progress:"Progresi",sound:"Z\u00ebri",swstretchvalign:"Zmadho Drejtim-V",swstretchhalign:"Zmadho Drejtim-H",swstretchstyle:"Stili i zmadhimit",scriptcallbacks:"Script Callbacks","align_top_right":"Krye-djathtas",uimode:"M\u00ebnyra UI",rate:"Raporti",playcount:"Numri i luajtjeve",defaultframe:"Kuadri fillestar",currentposition:"Pozicioni aktual",currentmarker:"Sh\u00ebnjuesi aktual",captioningid:"Id e titullit",baseurl:"URL baz\u00eb",balance:"Balanci",windowlessvideo:"Video pa dritare",stretchtofit:"Zmadho me p\u00ebrshtatje",mute:"Mbyll z\u00ebrin",invokeurls:"Th\u00ebrrit URL",fullscreen:"Pamje e plot\u00eb",enabled:"Aktivizuar",autostart:"Nisje automatike",volume:"Volumi",target:"Sh\u00ebnjestra",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"Koha e p\u00ebrfundimit",starttime:"Koha e nisjes",enablejavascript:"Aktivizo JavaScript",correction:"Pa rregullime",targetcache:"Cache sh\u00ebnjestr\u00ebn",playeveryframe:"Luaj \u00e7do kuader",kioskmode:"M\u00ebnyra Kiosk",controller:"Kontrollues",menu:"Shfaq menu",loop:"Lak",play:"Luaj automatikisht",hspace:"Hap\u00ebsira-H",vspace:"Hap\u00ebsira-V","class_name":"Klasa",name:"Emri",id:"Id",type:"Tipi",size:"P\u00ebrmasat",preview:"Paraqitje","constrain_proportions":"Ruaj raportet",controls:"Kontrollet",numloop:"Numri lak\u00ebve",console:"Konsola",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Baza",bgcolor:"Fusha",wmode:"WMode",salign:"Drejtimi S",align:"Drejtimi",scale:"Shkalla",quality:"Cil\u00ebsia",shuffle:"Shuffle",prefetch:"Para ngarko",nojava:"Pa Java",maintainaspect:"Ruaj raportet",imagestatus:"Statusi fotos",center:"Qend\u00ebr",autogotourl:"Shko n\u00eb URL automatikisht","shockwave_options":"Opsionet e Shockwave","rmp_options":"Opsionet e Real media player","wmp_options":"Opsionet e Windows media player","qt_options":"Opsionet e Quicktime","flash_options":"Opsionet e Flash",hidden:"Fshehur","align_bottom_left":"Fund-majtas","align_bottom_right":"Fund-djathtas","embedded_audio_options":"Opsionet e Muzik\u00ebs","html5_video_options":"Opsionet e Videos HTML5",altsource1:"Burim Alternativ 1",altsource2:"Burim Alternativ 2",preload:"Para-ngarko",poster:"Poster",source:"Burim","html5_audio_options":"Opsionet e Muzik\u00ebs","preload_none":"Mos para-ngarko","preload_metadata":"Para-ngarko t\u00eb dh\u00ebnat meta t\u00eb videos","preload_auto":"L\u00ebrini shfletuesin ta vendos\u00eb"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/sr_dlg.js b/program/js/tiny_mce/plugins/media/langs/sr_dlg.js
deleted file mode 100644
index 7351c30fe..000000000
--- a/program/js/tiny_mce/plugins/media/langs/sr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sr.media_dlg',{list:"Lista",file:"Fajl/URL",advanced:"Napredno",general:"Osnovno",title:"Umetni/Uredi multimedijalni sadr\u017eaj","align_top_left":"Gore levo","align_center":"Sredina","align_left":"Levo","align_bottom":"Dole","align_right":"Desno","align_top":"Gore","qt_stream_warn":"Rtsp izvori za striming bi trebali biti dodati u \'QT Src\' polje kartice \'Napredno\'.\nTrebalo bi tako\u0111e dodati i ne-striming verzije u \'Src\' polje.",qtsrc:"QT Src",progress:"Napredak",sound:"Zvuk",swstretchvalign:"Razvuci V-Poravnanje",swstretchhalign:"Razvuci H-Poravnanje",swstretchstyle:"Na\u010din razvla\u010denja",scriptcallbacks:"Script callbacks","align_top_right":"Gore desno",uimode:"UI re\u017eim",rate:"Tempo",playcount:"Broj izvo\u0111enje",defaultframe:"Podrazumevani frejm",currentposition:"Trenutna pozicija",currentmarker:"Trenutni marker",captioningid:"Id naslova",baseurl:"Osnovni URL",balance:"Balans",windowlessvideo:"Video bez prozora",stretchtofit:"Razvuci da se uklopi",mute:"Izklju\u010di zvuk",invokeurls:"U\u010ditaj URL-ove",fullscreen:"Preko celog ekrana",enabled:"Omogu\u0107eno",autostart:"Automatsko pokretanje",volume:"Ja\u010dina zvuka",target:"Meta",qtsrcchokespeed:"Brzina u\u010ditavanja",href:"Href",endtime:"Vreme zavr\u0161etka",starttime:"Vreme po\u010detka",enablejavascript:"Omogu\u0107i JavaScript",correction:"Bez korekcije",targetcache:"Odabrani ke\u0161",playeveryframe:"Prika\u017ei svaki frejm",kioskmode:"Kiosk re\u017eim",controller:"Kontrolor",menu:"Prika\u017ei meni",loop:"Vrti u krug",play:"Automatsko prikazivanje",hspace:"H-Space",vspace:"V-Space","class_name":"Klasa",name:"Naziv",id:"Id",type:"Vrsta",size:"Dimenzije",preview:"Preliminarni prikaz","constrain_proportions":"Zadr\u017ei proporcije",controls:"Kontrole",numloop:"Broj izvo\u0111enja",console:"Konzola",cache:"Ke\u0161",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Pozadina",wmode:"WMode",salign:"SAlign",align:"Poravnanje",scale:"Promena veli\u010dine",quality:"Kvalitet",shuffle:"Nasumi\u010dni redosled",prefetch:"Predpunjenje",nojava:"Bez jave",maintainaspect:"O\u010duvaj izgled",imagestatus:"Status slike",center:"Sredina",autogotourl:"Automatski idi na URL","shockwave_options":"Shockwave opcije","rmp_options":"Real media player opcije","wmp_options":"Windows media player opcije","qt_options":"Quicktime opcije","flash_options":"Flash opcije",hidden:"Sakriveno","align_bottom_left":"Dole levo","align_bottom_right":"Dole desno","html5_video_options":"HTML5 Video opcije",altsource1:"Alternativni izvor 1",altsource2:"Alternativni izvor 2",preload:"U\u010ditaj unapred",source:"Izvor",poster:"Poster","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/sv_dlg.js b/program/js/tiny_mce/plugins/media/langs/sv_dlg.js
deleted file mode 100644
index 4f71780a9..000000000
--- a/program/js/tiny_mce/plugins/media/langs/sv_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sv.media_dlg',{list:"Lista",file:"Fil/URL",advanced:"Avancerat",general:"Generellt",title:"Infoga/redigera inb\u00e4ddad media","align_top_left":"Top left","align_center":"Center","align_left":"V\u00e4nster","align_bottom":"Botten","align_right":"H\u00f6ger","align_top":"Toppen","qt_stream_warn":"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"Progress",sound:"Ljud",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks","align_top_right":"Top right",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Default frame",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless video",stretchtofit:"Stretch to fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Fullsk\u00e4rm",enabled:"Aktiverad",autostart:"Starta automatiskt",volume:"Volym",target:"M\u00e5l",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"Slut tid",starttime:"Start tid",enablejavascript:"Aktivera JavaScript",correction:"No correction",targetcache:"Target cache",playeveryframe:"Spela varje bildruta",kioskmode:"Kiosk mode",controller:"Controller",menu:"Visa menyn",loop:"Loopa",play:"Spela upp automatiskt",hspace:"H-Space",vspace:"V-Space","class_name":"Klass",name:"Namn",id:"Id",type:"Typ",size:"Dimensioner",preview:"F\u00f6rhandsvisning","constrain_proportions":"Bibeh\u00e5ll proportionerna",controls:"Controls",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Bakgrundsf\u00e4rg",wmode:"WMode",salign:"SAlign",align:"Justera",scale:"Skala",quality:"Kvalit\u00e9",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Bild status",center:"Center",autogotourl:"Auto goto URL","shockwave_options":"Inst\u00e4llningar f\u00f6r Shockwave","rmp_options":"Real media player options","wmp_options":"Windows media player options","qt_options":"Quicktime options","flash_options":"Flash options",hidden:"G\u00f6md","align_bottom_left":"Bottom left","align_bottom_right":"Bottom right",flash:"flash",quicktime:"quicktime ","embedded_audio_options":"Inst\u00e4llningar f\u00f6r inb\u00e4ddatljud",windowsmedia:"windowsmedia ",realmedia:"realmedia ",shockwave:"shockwave ",audio:"ljud",video:"video","html5_video_options":"HTML5 Filmegenskaper",altsource1:"Alternativk\u00e4lla 1",altsource2:"Alternativk\u00e4lla 2",preload:"F\u00f6rladda",poster:"Poster",source:"K\u00e4lla","html5_audio_options":"Ljudinst\u00e4llningar","preload_none":"F\u00f6rladda inte","preload_metadata":"F\u00f6rladda metadata","preload_auto":"L\u00e5t webbl\u00e4saren v\u00e4lja",iframe:"iframe",embeddedaudio:"inb\u00e4ddat ljud"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/ta_dlg.js b/program/js/tiny_mce/plugins/media/langs/ta_dlg.js
deleted file mode 100644
index 1b70c97f3..000000000
--- a/program/js/tiny_mce/plugins/media/langs/ta_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ta.media_dlg',{list:"List",file:"File/URL",advanced:"Advanced",general:"General",title:"Insert / edit embedded media","align_top_left":"Top left","align_center":"Center","align_left":"Left","align_bottom":"Bottom","align_right":"Right","align_top":"Top","qt_stream_warn":"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks","align_top_right":"Top right",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Default frame",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless video",stretchtofit:"Stretch to fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Fullscreen",enabled:"Enabled",autostart:"Auto start",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"End time",starttime:"Start time",enablejavascript:"Enable JavaScript",correction:"No correction",targetcache:"Target cache",playeveryframe:"Play every frame",kioskmode:"Kiosk mode",controller:"Controller",menu:"Show menu",loop:"Loop",play:"Auto play",hspace:"H-Space",vspace:"V-Space","class_name":"Class",name:"Name",id:"Id",type:"Type",size:"Dimensions",preview:"Preview","constrain_proportions":"Constrain proportions",controls:"Controls",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Background",wmode:"WMode",salign:"SAlign",align:"Align",scale:"Scale",quality:"Quality",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Image status",center:"Center",autogotourl:"Auto goto URL","shockwave_options":"Shockwave options","rmp_options":"Real media player options","wmp_options":"Windows media player options","qt_options":"Quicktime options","flash_options":"Flash options",hidden:"Hidden","align_bottom_left":"Bottom left","align_bottom_right":"Bottom right","html5_video_options":"HTML5 Video Options",altsource1:"Alternative source 1",altsource2:"Alternative source 2",preload:"Preload",poster:"Poster",source:"Source","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/th_dlg.js b/program/js/tiny_mce/plugins/media/langs/th_dlg.js
deleted file mode 100644
index 091d4b88f..000000000
--- a/program/js/tiny_mce/plugins/media/langs/th_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('th.media_dlg',{list:"\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23",file:"\u0e44\u0e1f\u0e25\u0e4c/URL",advanced:"\u0e02\u0e31\u0e49\u0e19\u0e2a\u0e39\u0e07",general:"\u0e17\u0e31\u0e48\u0e27\u0e44\u0e1b",title:"\u0e40\u0e1e\u0e34\u0e48\u0e21 / \u0e41\u0e01\u0e49\u0e44\u0e02 \u0e21\u0e35\u0e40\u0e14\u0e35\u0e22","align_top_left":"\u0e1a\u0e19 \u0e0b\u0e49\u0e32\u0e22","align_center":"\u0e01\u0e25\u0e32\u0e07","align_left":"\u0e0b\u0e49\u0e32\u0e22","align_bottom":"\u0e25\u0e48\u0e32\u0e07","align_right":"\u0e02\u0e27\u0e32","align_top":"\u0e1a\u0e19","qt_stream_warn":"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks","align_top_right":"\u0e1a\u0e19 \u0e02\u0e27\u0e32",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Default frame",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless video",stretchtofit:"Stretch to fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Fullscreen",enabled:"Enabled",autostart:"\u0e40\u0e25\u0e48\u0e19\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34",volume:"Volume",target:"\u0e40\u0e1b\u0e49\u0e32\u0e2b\u0e21\u0e32\u0e22",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"End time",starttime:"Start time",enablejavascript:"Enable JavaScript",correction:"No correction",targetcache:"\u0e40\u0e1b\u0e49\u0e32\u0e2b\u0e21\u0e32\u0e22 cache",playeveryframe:"Play every frame",kioskmode:"Kiosk mode",controller:"\u0e41\u0e1c\u0e07\u0e04\u0e27\u0e1a\u0e04\u0e38\u0e21",menu:"\u0e41\u0e2a\u0e14\u0e07\u0e40\u0e21\u0e19\u0e39",loop:"\u0e40\u0e25\u0e48\u0e19\u0e0b\u0e49\u0e33",play:"\u0e40\u0e25\u0e48\u0e19\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34",hspace:"\u0e23\u0e30\u0e22\u0e30\u0e2b\u0e48\u0e32\u0e07\u0e41\u0e19\u0e27\u0e19\u0e2d\u0e19",vspace:"\u0e23\u0e30\u0e22\u0e30\u0e2b\u0e48\u0e32\u0e07\u0e41\u0e19\u0e27\u0e15\u0e31\u0e49\u0e07","class_name":"\u0e04\u0e25\u0e32\u0e2a",name:"\u0e0a\u0e37\u0e48\u0e2d",id:"Id",type:"\u0e0a\u0e19\u0e34\u0e14",size:"\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07",preview:"\u0e14\u0e39\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07","constrain_proportions":"\u0e04\u0e07\u0e2d\u0e31\u0e15\u0e23\u0e32\u0e2a\u0e48\u0e27\u0e19",controls:"Controls",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"\u0e1e\u0e37\u0e49\u0e19\u0e2b\u0e25\u0e31\u0e07",wmode:"WMode",salign:"SAlign",align:"Align",scale:"\u0e02\u0e19\u0e32\u0e14",quality:"\u0e04\u0e27\u0e32\u0e21\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Image status",center:"Center",autogotourl:"Auto goto URL","shockwave_options":"Shockwave options","rmp_options":"Real media player options","wmp_options":"Windows media player options","qt_options":"Quicktime options","flash_options":"Flash options",hidden:"Hidden","align_bottom_left":"\u0e25\u0e48\u0e32\u0e07 \u0e0b\u0e49\u0e32\u0e22","align_bottom_right":"\u0e25\u0e48\u0e32\u0e07 \u0e02\u0e27\u0e32","embedded_audio_options":"Embedded Audio Options","html5_video_options":"HTML5 Video Options",altsource1:"Alternative source 1",altsource2:"Alternative source 2",preload:"Preload",poster:"Poster",source:"Source","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide",flash:"",quicktime:"",windowsmedia:"",realmedia:"",shockwave:"",audio:"",video:"",iframe:"",embeddedaudio:""}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/tr_dlg.js b/program/js/tiny_mce/plugins/media/langs/tr_dlg.js
deleted file mode 100644
index a939d4099..000000000
--- a/program/js/tiny_mce/plugins/media/langs/tr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('tr.media_dlg',{list:"Listele",file:"Dosya/URL",advanced:"Geli\u015fmi\u015f",general:"Genel",title:"T\u00fcmle\u015fik medya ekle / d\u00fczenle","align_top_left":"Sol \u00fcst","align_center":"Orta","align_left":"Sol","align_bottom":"Alt","align_right":"Sa\u011f","align_top":"\u00dcst","qt_stream_warn":"Ak\u0131\u015f rtsp kaynaklar\u0131 geli\u015fmi\u015f alt\u0131ndaki QT Kay. alan\u0131na girilmeli.\nKay. alan\u0131na ayr\u0131ca ak\u0131\u015fkan olmayan eklenir.",qtsrc:"QT Kay.",progress:"\u0130lerle",sound:"Ses",swstretchvalign:"Esnetme D-Hiza",swstretchhalign:"Esnetme Y-Hiza",swstretchstyle:"Esnetme stili",scriptcallbacks:"Script \u00e7a\u011f\u0131r","align_top_right":"Sa\u011f \u00fcst",uimode:"UI Modu",rate:"Oran",playcount:"Oynatma say\u0131s\u0131",defaultframe:"Varsay\u0131lan \u00e7er\u00e7eve",currentposition:"Se\u00e7ili konum",currentmarker:"Se\u00e7ili i\u015faret\u00e7i",captioningid:"Ba\u015fl\u0131k id",baseurl:"Ge\u00e7erli URL",balance:"Denge",windowlessvideo:"Penceresiz video",stretchtofit:"S\u0131\u011facak \u015fekilde boyutland\u0131r",mute:"Sessiz",invokeurls:"Ba\u015flatma URL\'si",fullscreen:"Tam ekran",enabled:"Aktif",autostart:"Otomatik ba\u015flat",volume:"Ses d\u00fczeyi",target:"Hedef",qtsrcchokespeed:"S\u0131k\u0131\u015ft\u0131rma h\u0131z\u0131",href:"Href",endtime:"Biti\u015f zaman\u0131",starttime:"Ba\u015flang\u0131\u00e7 zaman\u0131",enablejavascript:"Javascript Aktif",correction:"D\u00fczeltme yok",targetcache:"Hedef \u00f6nbellek",playeveryframe:"Her \u00e7er\u00e7eveyi oynat",kioskmode:"Kiosk modu",controller:"Kontroller",menu:"Men\u00fcy\u00fc g\u00f6ster",loop:"D\u00f6nd\u00fcr",play:"Otomatik oynat",hspace:"Yatay bo\u015fluk",vspace:"Dikey bo\u015fluk","class_name":"S\u0131n\u0131f",name:"\u0130sim",id:"Id",type:"Tip",size:"Boyutlar",preview:"\u00d6nizleme","constrain_proportions":"Oran\u0131 s\u0131n\u0131rla",controls:"Kontroller",numloop:"D\u00f6ng\u00fc say\u0131s\u0131",console:"Konsol",cache:"\u00d6nbellek",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flash de\u011fi\u015fkeni",base:"Taban",bgcolor:"Arkaplan",wmode:"WModu",salign:"SHizala",align:"Hizala",scale:"\u00d6l\u00e7ek",quality:"Kalite",shuffle:"Kar\u0131\u015ft\u0131r",prefetch:"\u00d6n belle\u011fe al",nojava:"Java yok",maintainaspect:"Orant\u0131y\u0131 koru",imagestatus:"Resim durumu",center:"Orta",autogotourl:"URL\'e otomatik git","shockwave_options":"Shockware se\u00e7enekleri","rmp_options":"Real media player se\u00e7enekleri","wmp_options":"Windows media player se\u00e7enekleri","qt_options":"Quicktime se\u00e7enekleri","flash_options":"Flash se\u00e7enekleri",hidden:"Gizli","align_bottom_left":"Sol alt","align_bottom_right":"Sa\u011f alt",flash:"flash",quicktime:"quicktime","embedded_audio_options":"G\u00f6m\u00fcl\u00fc Ses Ayarlar\u0131",windowsmedia:"windowsmedia",realmedia:"realmedia",shockwave:"shockwave",audio:"ses",video:"video","html5_video_options":"HTML5 Video Ayarlar\u0131",altsource1:"Alternatif Kaynak 1",altsource2:"Alternatif Kaynak 2",preload:"\u00d6ny\u00fckleme",poster:"Poster",source:"Kaynak","html5_audio_options":"Ses Ayarlar\u0131","preload_none":"\u00d6ny\u00fckleme Yapma","preload_metadata":"Vide metadata \u00f6ny\u00fckleme","preload_auto":"Kullan\u0131c\u0131n\u0131n taray\u0131c\u0131s\u0131 karar versin",iframe:"iframe",embeddedaudio:"g\u00f6m\u00fcl\u00fc ses"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/uk_dlg.js b/program/js/tiny_mce/plugins/media/langs/uk_dlg.js
deleted file mode 100644
index 6f7a4b43f..000000000
--- a/program/js/tiny_mce/plugins/media/langs/uk_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('uk.media_dlg',{list:"\u0421\u043f\u0438\u0441\u043e\u043a",file:"\u0424\u0430\u0439\u043b/URL",advanced:"\u0414\u043e\u0434\u0430\u0442\u043a\u043e\u0432\u043e",general:"\u0417\u0430\u0433\u0430\u043b\u044c\u043d\u0435",title:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 / \u0440\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0432\u0431\u0443\u0434\u043e\u0432\u0430\u043d\u0456 \u043c\u0435\u0434\u0456\u0430","align_top_left":"\u0417\u0432\u0435\u0440\u0445\u0443 \u0437\u043b\u0456\u0432\u0430","align_center":"\u0426\u0435\u043d\u0442\u0440","align_left":"\u041b\u0456\u0432\u043e","align_bottom":"\u041d\u0438\u0437","align_right":"\u041f\u0440\u0430\u0432\u043e","align_top":"\u0412\u0435\u0440\u0445","qt_stream_warn":"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\nYou should also add a non streamed version to the Src field..",qtsrc:"\u0414\u0436\u0435\u0440\u0435\u043b\u043e QT",progress:"\u0425\u0456\u0434",sound:"\u0417\u0432\u0443\u043a",swstretchvalign:"\u0420\u043e\u0437\u0442\u044f\u0433\u043d\u0443\u0442\u0438 \u0432\u0435\u0440\u0442. \u0432\u0438\u0440\u0456\u0432\u043d\u044e\u0430\u043d\u043d\u044f",swstretchhalign:"\u0420\u043e\u0437\u0442\u044f\u0433\u043d\u0443\u0442\u0438 \u0433\u043e\u0440\u0438\u0437. \u0432\u0438\u0440\u0456\u0432\u043d\u044e\u0430\u043d\u043d\u044f",swstretchstyle:"\u0420\u043e\u0437\u0442\u044f\u0433\u043d\u0443\u0442\u0438\u0439 \u0441\u0442\u0438\u043b\u044c",scriptcallbacks:"\u0417\u0432\u043e\u0440\u043e\u0442\u043d\u0456\u0439 \u0432\u0438\u043a\u043b\u0438\u043a \u0441\u0446\u0435\u043d\u0430\u0440\u0456\u044e","align_top_right":"\u0417\u0432\u0435\u0440\u0445\u0443 \u0437\u043f\u0440\u0430\u0432\u0430",uimode:"\u0420\u0435\u0436\u0438\u043c \u0456\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443",rate:"\u0428\u0432\u0438\u0434\u043a\u0456\u0441\u0442\u044c",playcount:"\u041a\u0456\u043b\u044c\u043a\u0456\u0441\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u0432\u0430\u043d\u044c",defaultframe:"\u041a\u0430\u0434\u0440 \u0437\u0430 \u0437\u0430\u043c\u043e\u0432\u0447\u0430\u043d\u043d\u044f\u043c",currentposition:"\u041f\u043e\u0442\u043e\u0447\u043d\u0430 \u043f\u043e\u0437\u0438\u0446\u0456\u044f",currentmarker:"\u041f\u043e\u0442\u043e\u0447\u043d\u0438\u0439 \u043c\u0430\u0440\u043a\u0435\u0440",captioningid:"\u0406\u0434\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0442\u043e\u0440 \u043d\u0430\u0434\u043f\u0438\u0441\u0443",baseurl:"\u041e\u0441\u043d\u043e\u0432\u043d\u0435 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",balance:"\u0411\u0430\u043b\u0430\u043d\u0441",windowlessvideo:"Windowless video",stretchtofit:"\u0417\u043c\u0435\u043d\u0448\u0438\u0442\u0438, \u0449\u043e\u0431 \u0432\u043c\u0456\u0441\u0442\u0438\u043b\u043e\u0441\u044c",mute:"\u0417\u0430\u0433\u043b\u0443\u0448\u0438\u0442\u0438",invokeurls:"\u0412\u0438\u043a\u043b\u0438\u043a\u0430\u0442\u0438 URLs",fullscreen:"\u041f\u043e\u0432\u043d\u0438\u0439 \u0435\u043a\u0440\u0430\u043d",enabled:"\u0414\u043e\u0437\u0432\u043e\u043b\u0435\u043d\u0438\u0439",autostart:"\u0410\u0432\u0442\u043e\u0441\u0442\u0430\u0440\u0442",volume:"\u0413\u0443\u0447\u043d\u0456\u0441\u0442\u044c",target:"\u0426\u0456\u043b\u044c",qtsrcchokespeed:"\u0428\u0432\u0438\u0434\u043a\u0456\u0441\u0442\u044c \u0437\u0430\u0433\u0430\u0441\u0430\u043d\u043d\u044f",href:"\u041f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",endtime:"\u0427\u0430\u0441 \u043a\u0456\u043d\u0446\u044f",starttime:"\u0427\u0430\u0441 \u043f\u043e\u0447\u0430\u0442\u043a\u0443",enablejavascript:"\u0414\u043e\u0437\u0432\u043e\u043b\u0438\u0442\u0438 JavaScript",correction:"\u0411\u0435\u0437 \u043a\u043e\u0440\u0435\u043a\u0446\u0456\u0457",targetcache:"\u0426\u0456\u043b\u044c\u043e\u0432\u0438\u0439 \u043a\u0435\u0448",playeveryframe:"\u041f\u0440\u043e\u0433\u0440\u0430\u0432\u0430\u0442\u0438 \u043a\u043e\u0436\u0435\u043d \u043a\u0430\u0434\u0440",kioskmode:"\u041f\u043e\u0432\u043d\u043e\u0435\u043a\u0440\u0430\u043d\u043d\u0438\u0439 \u0440\u0435\u0436\u0438\u043c",controller:"\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u0435\u0440",menu:"\u041f\u043e\u043a\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u043c\u0435\u043d\u044e",loop:"\u041f\u043e\u0432\u0442\u043e\u0440\u044e\u0432\u0430\u0442\u0438",play:"\u0410\u0432\u0442\u043e\u043f\u0440\u043e\u0433\u0440\u0430\u0432\u043d\u043d\u044f",hspace:"\u0433\u043e\u0440.\u0432\u0456\u0434\u0441\u0442\u0443\u043f",vspace:"\u0432\u0435\u0440\u0442.\u0432\u0456\u0434\u0441\u0442\u0443\u043f","class_name":"\u041a\u043b\u0430\u0441",name:"\u041d\u0430\u0437\u0432\u0430",id:"\u0406\u0434\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0442\u043e\u0440",type:"\u0422\u0438\u043f",size:"\u0420\u043e\u0437\u043c\u0456\u0440\u0438",preview:"\u041f\u0435\u0440\u0435\u0433\u043b\u044f\u0434","constrain_proportions":"\u0417\u0431\u0435\u0440\u0456\u0433\u0430\u0442\u0438 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0456\u0457",controls:"\u041a\u0435\u0440\u0443\u0432\u0430\u043d\u043d\u044f",numloop:"\u041a\u0456\u043b\u044c\u043a\u0456\u0441\u0442\u044c \u0446\u0438\u043a\u043b\u0456\u0432",console:"\u041a\u043e\u043d\u0441\u043e\u043b\u044c",cache:"\u041a\u0435\u0448",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flash-\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438",base:"\u0411\u0430\u0437\u0430",bgcolor:"\u0424\u043e\u043d",wmode:"W-\u0440\u0435\u0436\u0438\u043c",salign:"S-\u0412\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f",align:"\u0412\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f",scale:"\u041c\u0430\u0441\u0448\u0442\u0430\u0431\u0443\u0432\u0430\u043d\u043d\u044f",quality:"\u042f\u043a\u0456\u0441\u0442\u044c",shuffle:"\u041f\u0435\u0440\u0435\u0442\u0430\u0441\u0443\u0432\u0430\u0442\u0438",prefetch:"\u041f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u0454 \u0432\u0438\u043b\u0443\u0447\u0435\u043d\u043d\u044f",nojava:"\u0411\u0435\u0437 Java",maintainaspect:"\u0412\u0434\u0435\u0440\u0436\u0443\u0432\u0430\u0442\u0438 \u0440\u0430\u043a\u0443\u0440\u0441",imagestatus:"\u0421\u0442\u0430\u0442\u0443\u0441 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",center:"\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443",autogotourl:"\u041f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u0430\u0432\u0442\u043e\u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0443","shockwave_options":"\u041e\u043f\u0446\u0456\u0457 Shockwave","rmp_options":"\u041e\u043f\u0446\u0456\u0457 Real media player","wmp_options":"\u041e\u043f\u0446\u0456\u0457 Windows media player","qt_options":"\u041e\u043f\u0446\u0456\u0457 Quicktime","flash_options":"\u041e\u043f\u0446\u0456\u0457 Flash",hidden:"\u041f\u0440\u0438\u0445\u043e\u0432\u0430\u043d\u0438\u0439","align_bottom_left":"\u0417\u043d\u0438\u0437\u0443 \u0437\u043b\u0456\u0432\u0430","align_bottom_right":"\u0417\u043d\u0438\u0437\u0443 \u0437\u043f\u0440\u0430\u0432\u0430",flash:"flash",quicktime:"quicktime","embedded_audio_options":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438 \u0432\u0431\u0443\u0434\u043e\u0432\u0430\u043d\u043e\u0433\u043e \u0437\u0432\u0443\u043a\u0443",windowsmedia:"windowsmedia",realmedia:"realmedia",shockwave:"shockwave",audio:"audio",video:"video","html5_video_options":"\u0412\u0456\u0434\u0435\u043e \u043e\u043f\u0446\u0456\u0457 HTML5",altsource1:"\u0410\u043b\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u0435 \u0434\u0436\u0435\u0440\u0435\u043b\u043e 1",altsource2:"\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u0435 \u0434\u0436\u0435\u0440\u0435\u043b\u043e 2",preload:"\u041f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u0454 \u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043d\u044f",poster:"\u041f\u043e\u0441\u0442\u0435\u0440",source:"\u0414\u0436\u0435\u0440\u0435\u043b\u043e","html5_audio_options":"\u0410\u0443\u0434\u0456\u043e \u043e\u043f\u0446\u0456\u0457","preload_none":"\u0411\u0435\u0437 \u043f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u044c\u043e\u0457 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438","preload_metadata":"\u041f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u0438\u0445 \u0432\u0456\u0434\u0435\u043e","preload_auto":"\u041d\u0430 \u0440\u043e\u0437\u0441\u0443\u0434 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430",iframe:"iframe",embeddedaudio:"embeddedaudio"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/vi_dlg.js b/program/js/tiny_mce/plugins/media/langs/vi_dlg.js
deleted file mode 100644
index 04fca2d58..000000000
--- a/program/js/tiny_mce/plugins/media/langs/vi_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('vi.media_dlg',{list:"Danh s\u00e1ch",file:"T\u1eadp tin/URL",advanced:"N\u00e2ng cao",general:"Chung",title:"Ch\u00e8n / s\u1eeda ph\u01b0\u01a1ng ti\u1ec7n truy\u1ec1n th\u00f4ng nh\u00fang","align_top_left":"Tr\u00ean c\u00f9ng tr\u00e1i","align_center":"Gi\u1eefa","align_left":"Tr\u00e1i","align_bottom":"D\u01b0\u1edbi c\u00f9ng","align_right":"Ph\u1ea3i","align_top":"Tr\u00ean c\u00f9ng","qt_stream_warn":"Ngu\u1ed3n rtsp theo lu\u1ed3ng n\u00ean \u0111\u01b0\u1ee3c th\u00eam v\u00e0o tr\u01b0\u1eddng QT Src d\u01b0\u1edbi th\u1ebb n\u00e2ng cao.\nB\u1ea1n c\u0169ng n\u00ean th\u00eam m\u1ed9t phi\u00ean b\u1ea3n kh\u00f4ng theo lu\u1ed3ng v\u00e0o tr\u01b0\u1eddng Src..",qtsrc:"QT Src",progress:"\u0110ang ti\u1ebfn tri\u1ec3n",sound:"\u00c2m thanh",swstretchvalign:"D\u00e3n theo V-Align",swstretchhalign:"D\u00e3n theo H-Align",swstretchstyle:"Ki\u1ec3u d\u00e3n",scriptcallbacks:"H\u00e0m g\u1ecdi ng\u01b0\u1ee3c Script","align_top_right":"Tr\u00ean c\u00f9ng ph\u1ea3i",uimode:"Ch\u1ebf \u0111\u1ed9 UI",rate:"T\u1ed1c \u0111\u1ed9",playcount:"\u0110\u1ebfm l\u1ea7n ph\u00e1t",defaultframe:"Khung m\u1eb7c \u0111\u1ecbnh",currentposition:"V\u1ecb tr\u00ed hi\u1ec7n th\u1eddi",currentmarker:"B\u1ed9 t\u1ea1o hi\u1ec7n th\u1eddi",captioningid:"id \u0111\u1ea7u \u0111\u1ec1",baseurl:"Base URL",balance:"C\u00e2n b\u1eb1ng",windowlessvideo:"Video kh\u00f4ng c\u1eeda s\u1ed5",stretchtofit:"D\u00e3n \u0111\u1ec3 ph\u00f9 h\u1ee3p",mute:"T\u1eaft \u00e2m thanh",invokeurls:"URL tri\u1ec7u g\u1ecdi",fullscreen:"To\u00e0n m\u00e0n h\u00ecnh",enabled:"Cho ph\u00e9p",autostart:"T\u1ef1 \u0111\u1ed9ng b\u1eaft \u0111\u1ea7u",volume:"\u00c2m l\u01b0\u1ee3ng",target:"\u0110\u00edch",qtsrcchokespeed:"T\u1ed1c \u0111\u1ed9 Choke",href:"Href",endtime:"Th\u1eddi gian k\u1ebft th\u00fac",starttime:"Th\u1eddi gian b\u1eaft \u0111\u1ea7u",enablejavascript:"Cho ph\u00e9p JavaScript",correction:"Kh\u00f4ng ch\u1ec9nh",targetcache:"B\u1ed9 nh\u1edb \u0111\u1ec7m \u0111\u00edch",playeveryframe:"Ph\u00e1t t\u1ea5t c\u1ea3 khung",kioskmode:"Ch\u1ebf \u0111\u1ed9 Kiosk",controller:"Tr\u00ecnh \u0111i\u1ec1u khi\u1ec3n",menu:"Hi\u1ec3n th\u1ecb menu",loop:"L\u1eb7p",play:"T\u1ef1 \u0111\u1ed9ng ph\u00e1t",hspace:"H-Space",vspace:"V-Space","class_name":"L\u1edbp",name:"T\u00ean",id:"Id",type:"Ki\u1ec3u",size:"K\u00edch th\u01b0\u1edbc",preview:"Xem tr\u01b0\u1edbc","constrain_proportions":"R\u00e0ng bu\u1ed9c t\u1ec9 l\u1ec7",controls:"\u0110i\u1ec1u khi\u1ec3n",numloop:"S\u1ed1 l\u1eb7p",console:"B\u00e0n \u0111i\u1ec1u khi\u1ec3n",cache:"B\u1ed9 nh\u1edb \u0111\u1ec7m",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"C\u01a1 s\u1edf",bgcolor:"N\u1ec1n",wmode:"WMode",salign:"SAlign",align:"Canh l\u1ec1",scale:"T\u1ec9 l\u1ec7",quality:"Ch\u1ea5t l\u01b0\u1ee3ng",shuffle:"Kh\u00f4ng theo tr\u1eadt t\u1ef1",prefetch:"T\u00ecm n\u1ea1p tr\u01b0\u1edbc",nojava:"Kh\u00f4ng c\u00f3 java",maintainaspect:"Duy tr\u00ec c\u1ea1nh",imagestatus:"Tr\u1ea1ng th\u00e1i \u1ea3nh",center:"Gi\u1eefa",autogotourl:"T\u1ef1 \u0111\u1ed9ng nh\u1ea3y t\u1edbi URL","shockwave_options":"T\u00f9y ch\u1ecdn Shockwave","rmp_options":"T\u00f9y ch\u1ecdn tr\u00ecnh ch\u01a1i media Real","wmp_options":"T\u00f9y ch\u1ecdn tr\u00ecnh ch\u01a1i media Windows","qt_options":"T\u00f9y ch\u1ecdn Quicktime","flash_options":"T\u00f9y ch\u1ecdn Flash",hidden:"\u1ea8n","align_bottom_left":"D\u01b0\u1edbi c\u00f9ng tr\u00e1i","align_bottom_right":"D\u01b0\u1edbi c\u00f9ng ph\u1ea3i","html5_video_options":"HTML5 Video Options",altsource1:"Alternative source 1",altsource2:"Alternative source 2",preload:"Preload",poster:"Poster",source:"Source","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/zh-cn_dlg.js b/program/js/tiny_mce/plugins/media/langs/zh-cn_dlg.js
deleted file mode 100644
index 273a48f0c..000000000
--- a/program/js/tiny_mce/plugins/media/langs/zh-cn_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('zh-cn.media_dlg',{list:"\u5217\u8868",file:"\u6587\u4ef6/URL",advanced:"\u9ad8\u7ea7",general:"\u666e\u901a",title:"\u63d2\u5165/\u7f16\u8f91 \u5d4c\u5165\u5f0f\u5a92\u4f53","align_top_left":"\u5de6\u4e0a","align_center":"\u5c45\u4e2d","align_left":"\u5c45\u5de6","align_bottom":"\u5c45\u4e0b","align_right":"\u5c45\u53f3","align_top":"\u5c45\u4e0a","qt_stream_warn":"\u6d41\u5a92\u4f53RTSP\u8d44\u6e90\u5e94\u6dfb\u52a0\u5230\u9ad8\u7ea7\u9009\u9879\u7684QT\u8d44\u6e90\u4e2d\u3002n\u540c\u65f6\uff0c\u60a8\u4e5f\u53ef\u4ee5\u5728\u8fd9\u91cc\u52a0\u5165\u4e00\u4e2a\u975e\u6d41\u5a92\u4f53\u3002",qtsrc:"QT\u8d44\u6e90",progress:"\u8fdb\u5ea6",sound:"\u58f0\u97f3",swstretchvalign:"\u5782\u76f4\u62c9\u4f38",swstretchhalign:"\u6c34\u5e73\u62c9\u4f38",swstretchstyle:"\u62c9\u4f38\u65b9\u5f0f",scriptcallbacks:"\u811a\u672c\u56de\u8c03","align_top_right":"\u53f3\u4e0a",uimode:"\u5916\u89c2\u6a21\u5f0f",rate:"\u6bd4\u7387",playcount:"\u64ad\u653e\u6b21\u6570",defaultframe:"\u9ed8\u8ba4\u5e27",currentposition:"\u5f53\u524d\u4f4d\u7f6e",currentmarker:"\u5f53\u524d\u6807\u8bb0",captioningid:"\u5b57\u5e55ID",baseurl:"\u57fa\u7840\u8def\u5f84",balance:"\u5e73\u8861",windowlessvideo:"\u65e0\u8fb9\u6846",stretchtofit:"\u62c9\u4f38\u5230\u9002\u5408",mute:"\u9759\u97f3",invokeurls:"\u5f15\u7528URL",fullscreen:"\u5168\u5c4f",enabled:"\u542f\u7528",autostart:"\u81ea\u52a8\u64ad\u653e",volume:"\u97f3\u91cf",target:"\u76ee\u6807",qtsrcchokespeed:"\u9650\u5236\u901f\u5ea6",href:"\u8d85\u94fe\u63a5",endtime:"\u7ed3\u675f\u65f6\u95f4",starttime:"\u5f00\u59cb\u65f6\u95f4",enablejavascript:"\u542f\u7528JavaScript",correction:"\u65e0\u4fee\u6b63",targetcache:"\u76ee\u6807\u7f13\u5b58",playeveryframe:"\u9010\u5e27\u64ad\u653e",kioskmode:"\u5168\u5c4f\u6a21\u5f0f",controller:"\u63a7\u5236\u53f0",menu:"\u663e\u793a\u83dc\u5355",loop:"\u5faa\u73af",play:"\u81ea\u52a8\u64ad\u653e",hspace:"\u6c34\u5e73\u8ddd\u79bb",vspace:"\u5782\u76f4\u8ddd\u79bb","class_name":"\u7c7b\u522b",name:"\u540d\u79f0",id:"ID",type:"\u7c7b\u578b",size:"\u5c3a\u5bf8",preview:"\u9884\u89c8","constrain_proportions":"\u4fdd\u6301\u6bd4\u4f8b",controls:"\u64ad\u653e\u63a7\u5236",numloop:"\u5faa\u73af\u6b21\u6570",console:"\u63a7\u5236\u53f0",cache:"\u7f13\u5b58",autohref:"\u81ea\u52a8\u8df3\u8f6c",liveconnect:"JavaScript\u5f00\u542f",flashvars:"Flash\u53d8\u91cf",base:"\u57fa\u7840\u8def\u5f84",bgcolor:"\u80cc\u666f",wmode:"\u7a97\u4f53\u6a21\u5f0f",salign:"\u5a92\u4f53\u5bf9\u9f50",align:"\u6587\u672c\u5bf9\u9f50",scale:"\u7f29\u653e",quality:"\u753b\u8d28",shuffle:"\u968f\u673a",prefetch:"\u9884\u52a0\u8f7d",nojava:"\u65e0java",maintainaspect:"\u4fdd\u6301\u5916\u89c2",imagestatus:"\u56fe\u7247\u72b6\u6001",center:"\u5c45\u4e2d",autogotourl:"\u81ea\u52a8\u8f6c\u5230URL","shockwave_options":"Shockwave\u9009\u9879","rmp_options":"Real media player\u9009\u9879","wmp_options":"Windows media player\u9009\u9879","qt_options":"Quicktime\u9009\u9879","flash_options":"Flash\u9009\u9879",hidden:"\u9690\u85cf","align_bottom_left":"\u5de6\u4e0b","align_bottom_right":"\u53f3\u4e0b","html5_video_options":"HTML5\u89c6\u9891\u9009\u9879",altsource1:"\u66ff\u4ee3\u8d44\u6e901",altsource2:"\u66ff\u4ee3\u8d44\u6e902",preload:"\u9884\u52a0\u8f7d",poster:"\u6d77\u62a5",source:"\u8d44\u6e90","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/langs/zh-tw_dlg.js b/program/js/tiny_mce/plugins/media/langs/zh-tw_dlg.js
deleted file mode 100644
index da608d42f..000000000
--- a/program/js/tiny_mce/plugins/media/langs/zh-tw_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('zh-tw.media_dlg',{"qt_stream_warn":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",source:"\u5d4c\u5165\u539f\u59cb\u6a94",list:"List",file:"File/URL",advanced:"Advanced",general:"General",title:"Insert/Edit Embedded Media","align_top_left":"Top Left","align_center":"Center","align_left":"Left","align_bottom":"Bottom","align_right":"Right","align_top":"Top",qtsrc:"QT Source",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch Style",scriptcallbacks:"Script Callbacks","align_top_right":"Top Right",uimode:"UI Mode",rate:"Rate",playcount:"Play Count",defaultframe:"Default Frame",currentposition:"Current Position",currentmarker:"Current Marker",captioningid:"Captioning ID",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless Video",stretchtofit:"Stretch to Fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Full Screen",enabled:"Enabled",autostart:"Auto Start",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke Speed",href:"HREF",endtime:"End Time",starttime:"Start Time",enablejavascript:"Enable JavaScript",correction:"No Correction",targetcache:"Target Cache",playeveryframe:"Play Every Frame",kioskmode:"Kiosk Mode",controller:"Controller",menu:"Show Menu",loop:"Loop",play:"Auto Play",hspace:"H-Space",vspace:"V-Space","class_name":"Class",name:"Name",id:"ID",type:"Type",size:"Dimensions",preview:"Preview","constrain_proportions":"Constrain Proportions",controls:"Controls",numloop:"Num Loops",console:"Console",cache:"Cache",autohref:"Auto HREF",liveconnect:"SWLiveConnect",flashvars:"Flash Vars",base:"Base",bgcolor:"Background",wmode:"WMode",salign:"SAlign",align:"Align",scale:"Scale",quality:"Quality",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No Java",maintainaspect:"Maintain Aspect",imagestatus:"Image Status",center:"Center",autogotourl:"Auto Goto URL","shockwave_options":"Shockwave Options","rmp_options":"Real Media Player Options","wmp_options":"Windows Media Player Options","qt_options":"QuickTime Options","flash_options":"Flash Options",hidden:"Hidden","align_bottom_left":"Bottom Left","align_bottom_right":"Bottom Right","html5_video_options":"HTML5 Video Options",altsource1:"Alternative source 1",altsource2:"Alternative source 2",preload:"Preload",poster:"Poster","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/media/media.htm b/program/js/tiny_mce/plugins/media/media.htm
deleted file mode 100644
index 957d83a68..000000000
--- a/program/js/tiny_mce/plugins/media/media.htm
+++ /dev/null
@@ -1,922 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#media_dlg.title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="js/media.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="../../utils/validate.js"></script>
- <script type="text/javascript" src="../../utils/form_utils.js"></script>
- <script type="text/javascript" src="../../utils/editable_selects.js"></script>
- <link href="css/media.css" rel="stylesheet" type="text/css" />
-</head>
-<body style="display: none" role="application">
-<form onsubmit="Media.insert();return false;" action="#">
- <div class="tabs" role="presentation">
- <ul>
- <li id="general_tab" class="current" aria-controls="general_panel"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');Media.formToData();" onmousedown="return false;">{#media_dlg.general}</a></span></li>
- <li id="advanced_tab" aria-controls="advanced_panel"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');Media.formToData();" onmousedown="return false;">{#media_dlg.advanced}</a></span></li>
- <li id="source_tab" aria-controls="source_panel"><span><a href="javascript:mcTabs.displayTab('source_tab','source_panel');Media.formToData('source');" onmousedown="return false;">{#media_dlg.source}</a></span></li>
- </ul>
- </div>
-
- <div class="panel_wrapper">
- <div id="general_panel" class="panel current">
- <fieldset>
- <legend>{#media_dlg.general}</legend>
-
- <table role="presentation" border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td><label for="media_type">{#media_dlg.type}</label></td>
- <td>
- <select id="media_type"></select>
- </td>
- </tr>
- <tr>
- <td><label for="src">{#media_dlg.file}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input id="src" name="src" type="text" value="" class="mceFocus" onchange="Media.formToData();" /></td>
- <td id="filebrowsercontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
- <tr id="linklistrow">
- <td><label for="linklist">{#media_dlg.list}</label></td>
- <td id="linklistcontainer"><select id="linklist"><option value=""></option></select></td>
- </tr>
- <tr>
- <td><label for="width">{#media_dlg.size}</label></td>
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="text" id="width" name="width" value="" class="size" onchange="Media.formToData('width');" onfocus="Media.beforeResize();" /> x <input type="text" id="height" name="height" value="" class="size" onfocus="Media.beforeResize();" onchange="Media.formToData('height');" /></td>
- <td>&nbsp;&nbsp;<input id="constrain" type="checkbox" name="constrain" class="checkbox" checked="checked" /></td>
- <td><label id="constrainlabel" for="constrain">{#media_dlg.constrain_proportions}</label></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </fieldset>
-
- <fieldset>
- <legend>{#media_dlg.preview}</legend>
- <div id="prev"></div>
- </fieldset>
- </div>
-
- <div id="advanced_panel" class="panel">
- <fieldset>
- <legend>{#media_dlg.advanced}</legend>
-
- <table role="presentation" border="0" cellpadding="4" cellspacing="0" width="100%">
- <tr>
- <td><label for="id">{#media_dlg.id}</label></td>
- <td><input type="text" id="id" name="id" onchange="Media.formToData();" /></td>
- <td><label for="name">{#media_dlg.name}</label></td>
- <td><input type="text" id="name" name="name" onchange="Media.formToData();" /></td>
- </tr>
-
- <tr>
- <td><label for="align">{#media_dlg.align}</label></td>
- <td>
- <select id="align" name="align" onchange="Media.formToData();">
- <option value="">{#not_set}</option>
- <option value="top">{#media_dlg.align_top}</option>
- <option value="right">{#media_dlg.align_right}</option>
- <option value="bottom">{#media_dlg.align_bottom}</option>
- <option value="left">{#media_dlg.align_left}</option>
- </select>
- </td>
-
- <td><label for="bgcolor">{#media_dlg.bgcolor}</label></td>
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');Media.formToData();" /></td>
- <td id="bgcolor_pickcontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td><label for="vspace">{#media_dlg.vspace}</label></td>
- <td><input type="text" id="vspace" name="vspace" class="number" onchange="Media.formToData();" /></td>
- <td><label for="hspace">{#media_dlg.hspace}</label></td>
- <td><input type="text" id="hspace" name="hspace" class="number" onchange="Media.formToData();" /></td>
- </tr>
- </table>
- </fieldset>
-
- <fieldset id="video_options">
- <legend>{#media_dlg.html5_video_options}</legend>
-
- <table role="presentation">
- <tr>
- <td><label for="video_altsource1">{#media_dlg.altsource1}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="video_altsource1" name="video_altsource1" onchange="Media.formToData();" style="width: 240px" /></td>
- <td id="video_altsource1_filebrowser">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td><label for="video_altsource2">{#media_dlg.altsource2}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="video_altsource2" name="video_altsource2" onchange="Media.formToData();" style="width: 240px" /></td>
- <td id="video_altsource2_filebrowser">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td><label for="video_poster">{#media_dlg.poster}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="video_poster" name="video_poster" onchange="Media.formToData();" style="width: 240px" /></td>
- <td id="video_poster_filebrowser">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td><label for="video_preload">{#media_dlg.preload}</label></td>
- <td>
- <select id="video_preload" name="video_preload" onchange="Media.formToData();">
- <option value="none">{#media_dlg.preload_none}</option>
- <option value="metadata">{#media_dlg.preload_metadata}</option>
- <option value="auto">{#media_dlg.preload_auto}</option>
- </select>
- </td>
- </tr>
- </table>
-
- <table role="presentation" border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="video_autoplay" name="video_autoplay" onchange="Media.formToData();" /></td>
- <td><label for="video_autoplay">{#media_dlg.play}</label></td>
- </tr>
- </table>
- </td>
-
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="video_muted" name="video_muted" onchange="Media.formToData();" /></td>
- <td><label for="video_muted">{#media_dlg.mute}</label></td>
- </tr>
- </table>
- </td>
-
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="video_loop" name="video_loop" onchange="Media.formToData();" /></td>
- <td><label for="video_loop">{#media_dlg.loop}</label></td>
- </tr>
- </table>
- </td>
-
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="video_controls" name="video_controls" onchange="Media.formToData();" /></td>
- <td><label for="video_controls">{#media_dlg.controls}</label></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </fieldset>
-
- <fieldset id="embeddedaudio_options">
- <legend>{#media_dlg.embedded_audio_options}</legend>
-
- <table role="presentation" border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="embeddedaudio_autoplay" name="audio_autoplay" onchange="Media.formToData();" /></td>
- <td><label for="audio_autoplay">{#media_dlg.play}</label></td>
- </tr>
- </table>
- </td>
-
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="embeddedaudio_loop" name="audio_loop" onchange="Media.formToData();" /></td>
- <td><label for="audio_loop">{#media_dlg.loop}</label></td>
- </tr>
- </table>
- </td>
-
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="embeddedaudio_controls" name="audio_controls" onchange="Media.formToData();" /></td>
- <td><label for="audio_controls">{#media_dlg.controls}</label></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </fieldset>
-
- <fieldset id="audio_options">
- <legend>{#media_dlg.html5_audio_options}</legend>
-
- <table role="presentation">
- <tr>
- <td><label for="audio_altsource1">{#media_dlg.altsource1}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="audio_altsource1" name="audio_altsource1" onchange="Media.formToData();" style="width: 240px" /></td>
- <td id="audio_altsource1_filebrowser">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td><label for="audio_altsource2">{#media_dlg.altsource2}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="audio_altsource2" name="audio_altsource2" onchange="Media.formToData();" style="width: 240px" /></td>
- <td id="audio_altsource2_filebrowser">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td><label for="audio_preload">{#media_dlg.preload}</label></td>
- <td>
- <select id="audio_preload" name="audio_preload" onchange="Media.formToData();">
- <option value="none">{#media_dlg.preload_none}</option>
- <option value="metadata">{#media_dlg.preload_metadata}</option>
- <option value="auto">{#media_dlg.preload_auto}</option>
- </select>
- </td>
- </tr>
- </table>
-
- <table role="presentation" border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="audio_autoplay" name="audio_autoplay" onchange="Media.formToData();" /></td>
- <td><label for="audio_autoplay">{#media_dlg.play}</label></td>
- </tr>
- </table>
- </td>
-
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="audio_loop" name="audio_loop" onchange="Media.formToData();" /></td>
- <td><label for="audio_loop">{#media_dlg.loop}</label></td>
- </tr>
- </table>
- </td>
-
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="audio_controls" name="audio_controls" onchange="Media.formToData();" /></td>
- <td><label for="audio_controls">{#media_dlg.controls}</label></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </fieldset>
-
- <fieldset id="flash_options">
- <legend>{#media_dlg.flash_options}</legend>
-
- <table role="presentation" border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td><label for="flash_quality">{#media_dlg.quality}</label></td>
- <td>
- <select id="flash_quality" name="flash_quality" onchange="Media.formToData();">
- <option value="">{#not_set}</option>
- <option value="high">high</option>
- <option value="low">low</option>
- <option value="autolow">autolow</option>
- <option value="autohigh">autohigh</option>
- <option value="best">best</option>
- </select>
- </td>
-
- <td><label for="flash_scale">{#media_dlg.scale}</label></td>
- <td>
- <select id="flash_scale" name="flash_scale" onchange="Media.formToData();">
- <option value="">{#not_set}</option>
- <option value="showall">showall</option>
- <option value="noborder">noborder</option>
- <option value="exactfit">exactfit</option>
- <option value="noscale">noscale</option>
- </select>
- </td>
- </tr>
-
- <tr>
- <td><label for="flash_wmode">{#media_dlg.wmode}</label></td>
- <td>
- <select id="flash_wmode" name="flash_wmode" onchange="Media.formToData();">
- <option value="">{#not_set}</option>
- <option value="window">window</option>
- <option value="opaque">opaque</option>
- <option value="transparent">transparent</option>
- </select>
- </td>
-
- <td><label for="flash_salign">{#media_dlg.salign}</label></td>
- <td>
- <select id="flash_salign" name="flash_salign" onchange="Media.formToData();">
- <option value="">{#not_set}</option>
- <option value="l">{#media_dlg.align_left}</option>
- <option value="t">{#media_dlg.align_top}</option>
- <option value="r">{#media_dlg.align_right}</option>
- <option value="b">{#media_dlg.align_bottom}</option>
- <option value="tl">{#media_dlg.align_top_left}</option>
- <option value="tr">{#media_dlg.align_top_right}</option>
- <option value="bl">{#media_dlg.align_bottom_left}</option>
- <option value="br">{#media_dlg.align_bottom_right}</option>
- </select>
- </td>
- </tr>
-
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="flash_play" name="flash_play" checked="checked" onchange="Media.formToData();" /></td>
- <td><label for="flash_play">{#media_dlg.play}</label></td>
- </tr>
- </table>
- </td>
-
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="flash_loop" name="flash_loop" checked="checked" onchange="Media.formToData();" /></td>
- <td><label for="flash_loop">{#media_dlg.loop}</label></td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="flash_menu" name="flash_menu" checked="checked" onchange="Media.formToData();" /></td>
- <td><label for="flash_menu">{#media_dlg.menu}</label></td>
- </tr>
- </table>
- </td>
-
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="flash_swliveconnect" name="flash_swliveconnect" onchange="Media.formToData();" /></td>
- <td><label for="flash_swliveconnect">{#media_dlg.liveconnect}</label></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
-
- <table role="presentation">
- <tr>
- <td><label for="flash_base">{#media_dlg.base}</label></td>
- <td><input type="text" id="flash_base" name="flash_base" onchange="Media.formToData();" /></td>
- </tr>
-
- <tr>
- <td><label for="flash_flashvars">{#media_dlg.flashvars}</label></td>
- <td><input type="text" id="flash_flashvars" name="flash_flashvars" onchange="Media.formToData();" /></td>
- </tr>
- </table>
- </fieldset>
-
- <fieldset id="quicktime_options">
- <legend>{#media_dlg.qt_options}</legend>
-
- <table role="presentation" border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="quicktime_loop" name="quicktime_loop" onchange="Media.formToData();" /></td>
- <td><label for="quicktime_loop">{#media_dlg.loop}</label></td>
- </tr>
- </table>
- </td>
-
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="quicktime_autoplay" name="quicktime_autoplay" checked="checked" onchange="Media.formToData();" /></td>
- <td><label for="quicktime_autoplay">{#media_dlg.play}</label></td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="quicktime_cache" name="quicktime_cache" onchange="Media.formToData();" /></td>
- <td><label for="quicktime_cache">{#media_dlg.cache}</label></td>
- </tr>
- </table>
- </td>
-
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="quicktime_controller" name="quicktime_controller" checked="checked" onchange="Media.formToData();" /></td>
- <td><label for="quicktime_controller">{#media_dlg.controller}</label></td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="quicktime_correction" name="quicktime_correction" onchange="Media.formToData();" /></td>
- <td><label for="quicktime_correction">{#media_dlg.correction}</label></td>
- </tr>
- </table>
- </td>
-
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="quicktime_enablejavascript" name="quicktime_enablejavascript" onchange="Media.formToData();" /></td>
- <td><label for="quicktime_enablejavascript">{#media_dlg.enablejavascript}</label></td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="quicktime_kioskmode" name="quicktime_kioskmode" onchange="Media.formToData();" /></td>
- <td><label for="quicktime_kioskmode">{#media_dlg.kioskmode}</label></td>
- </tr>
- </table>
- </td>
-
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="quicktime_autohref" name="quicktime_autohref" onchange="Media.formToData();" /></td>
- <td><label for="quicktime_autohref">{#media_dlg.autohref}</label></td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="quicktime_playeveryframe" name="quicktime_playeveryframe" onchange="Media.formToData();" /></td>
- <td><label for="quicktime_playeveryframe">{#media_dlg.playeveryframe}</label></td>
- </tr>
- </table>
- </td>
-
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="quicktime_targetcache" name="quicktime_targetcache" onchange="Media.formToData();" /></td>
- <td><label for="quicktime_targetcache">{#media_dlg.targetcache}</label></td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td><label for="quicktime_scale">{#media_dlg.scale}</label></td>
- <td><select id="quicktime_scale" name="quicktime_scale" class="mceEditableSelect" onchange="Media.formToData();">
- <option value="">{#not_set}</option>
- <option value="tofit">tofit</option>
- <option value="aspect">aspect</option>
- </select>
- </td>
-
- <td colspan="2">&nbsp;</td>
- </tr>
-
- <tr>
- <td><label for="quicktime_starttime">{#media_dlg.starttime}</label></td>
- <td><input type="text" id="quicktime_starttime" name="quicktime_starttime" onchange="Media.formToData();" /></td>
-
- <td><label for="quicktime_endtime">{#media_dlg.endtime}</label></td>
- <td><input type="text" id="quicktime_endtime" name="quicktime_endtime" onchange="Media.formToData();" /></td>
- </tr>
-
- <tr>
- <td><label for="quicktime_target">{#media_dlg.target}</label></td>
- <td><input type="text" id="quicktime_target" name="quicktime_target" onchange="Media.formToData();" /></td>
-
- <td><label for="quicktime_href">{#media_dlg.href}</label></td>
- <td><input type="text" id="quicktime_href" name="quicktime_href" onchange="Media.formToData();" /></td>
- </tr>
-
- <tr>
- <td><label for="quicktime_qtsrcchokespeed">{#media_dlg.qtsrcchokespeed}</label></td>
- <td><input type="text" id="quicktime_qtsrcchokespeed" name="quicktime_qtsrcchokespeed" onchange="Media.formToData();" /></td>
-
- <td><label for="quicktime_volume">{#media_dlg.volume}</label></td>
- <td><input type="text" id="quicktime_volume" name="quicktime_volume" onchange="Media.formToData();" /></td>
- </tr>
-
- <tr>
- <td><label for="quicktime_qtsrc">{#media_dlg.qtsrc}</label></td>
- <td colspan="4">
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="quicktime_qtsrc" name="quicktime_qtsrc" onchange="Media.formToData();" /></td>
- <td id="qtsrcfilebrowsercontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </fieldset>
-
- <fieldset id="windowsmedia_options">
- <legend>{#media_dlg.wmp_options}</legend>
-
- <table role="presentation" border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="windowsmedia_autostart" name="windowsmedia_autostart" checked="checked" onchange="Media.formToData();" /></td>
- <td><label for="windowsmedia_autostart">{#media_dlg.autostart}</label></td>
- </tr>
- </table>
- </td>
-
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="windowsmedia_enabled" name="windowsmedia_enabled" onchange="Media.formToData();" /></td>
- <td><label for="windowsmedia_enabled">{#media_dlg.enabled}</label></td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="windowsmedia_enablecontextmenu" name="windowsmedia_enablecontextmenu" checked="checked" onchange="Media.formToData();" /></td>
- <td><label for="windowsmedia_enablecontextmenu">{#media_dlg.menu}</label></td>
- </tr>
- </table>
- </td>
-
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="windowsmedia_fullscreen" name="windowsmedia_fullscreen" onchange="Media.formToData();" /></td>
- <td><label for="windowsmedia_fullscreen">{#media_dlg.fullscreen}</label></td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="windowsmedia_invokeurls" name="windowsmedia_invokeurls" checked="checked" onchange="Media.formToData();" /></td>
- <td><label for="windowsmedia_invokeurls">{#media_dlg.invokeurls}</label></td>
- </tr>
- </table>
- </td>
-
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="windowsmedia_mute" name="windowsmedia_mute" onchange="Media.formToData();" /></td>
- <td><label for="windowsmedia_mute">{#media_dlg.mute}</label></td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="windowsmedia_stretchtofit" name="windowsmedia_stretchtofit" onchange="Media.formToData();" /></td>
- <td><label for="windowsmedia_stretchtofit">{#media_dlg.stretchtofit}</label></td>
- </tr>
- </table>
- </td>
-
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="windowsmedia_windowlessvideo" name="windowsmedia_windowlessvideo" onchange="Media.formToData();" /></td>
- <td><label for="windowsmedia_windowlessvideo">{#media_dlg.windowlessvideo}</label></td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td><label for="windowsmedia_balance">{#media_dlg.balance}</label></td>
- <td><input type="text" id="windowsmedia_balance" name="windowsmedia_balance" onchange="Media.formToData();" /></td>
-
- <td><label for="windowsmedia_baseurl">{#media_dlg.baseurl}</label></td>
- <td><input type="text" id="windowsmedia_baseurl" name="windowsmedia_baseurl" onchange="Media.formToData();" /></td>
- </tr>
-
- <tr>
- <td><label for="windowsmedia_captioningid">{#media_dlg.captioningid}</label></td>
- <td><input type="text" id="windowsmedia_captioningid" name="windowsmedia_captioningid" onchange="Media.formToData();" /></td>
-
- <td><label for="windowsmedia_currentmarker">{#media_dlg.currentmarker}</label></td>
- <td><input type="text" id="windowsmedia_currentmarker" name="windowsmedia_currentmarker" onchange="Media.formToData();" /></td>
- </tr>
-
- <tr>
- <td><label for="windowsmedia_currentposition">{#media_dlg.currentposition}</label></td>
- <td><input type="text" id="windowsmedia_currentposition" name="windowsmedia_currentposition" onchange="Media.formToData();" /></td>
-
- <td><label for="windowsmedia_defaultframe">{#media_dlg.defaultframe}</label></td>
- <td><input type="text" id="windowsmedia_defaultframe" name="windowsmedia_defaultframe" onchange="Media.formToData();" /></td>
- </tr>
-
- <tr>
- <td><label for="windowsmedia_playcount">{#media_dlg.playcount}</label></td>
- <td><input type="text" id="windowsmedia_playcount" name="windowsmedia_playcount" onchange="Media.formToData();" /></td>
-
- <td><label for="windowsmedia_rate">{#media_dlg.rate}</label></td>
- <td><input type="text" id="windowsmedia_rate" name="windowsmedia_rate" onchange="Media.formToData();" /></td>
- </tr>
-
- <tr>
- <td><label for="windowsmedia_uimode">{#media_dlg.uimode}</label></td>
- <td><input type="text" id="windowsmedia_uimode" name="windowsmedia_uimode" onchange="Media.formToData();" /></td>
-
- <td><label for="windowsmedia_volume">{#media_dlg.volume}</label></td>
- <td><input type="text" id="windowsmedia_volume" name="windowsmedia_volume" onchange="Media.formToData();" /></td>
- </tr>
-
- </table>
- </fieldset>
-
- <fieldset id="realmedia_options">
- <legend>{#media_dlg.rmp_options}</legend>
-
- <table role="presentation" border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="realmedia_autostart" name="realmedia_autostart" onchange="Media.formToData();" /></td>
- <td><label for="realmedia_autostart">{#media_dlg.autostart}</label></td>
- </tr>
- </table>
- </td>
-
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="realmedia_loop" name="realmedia_loop" onchange="Media.formToData();" /></td>
- <td><label for="realmedia_loop">{#media_dlg.loop}</label></td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="realmedia_autogotourl" name="realmedia_autogotourl" checked="checked" onchange="Media.formToData();" /></td>
- <td><label for="realmedia_autogotourl">{#media_dlg.autogotourl}</label></td>
- </tr>
- </table>
- </td>
-
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="realmedia_center" name="realmedia_center" onchange="Media.formToData();" /></td>
- <td><label for="realmedia_center">{#media_dlg.center}</label></td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="realmedia_imagestatus" name="realmedia_imagestatus" checked="checked" onchange="Media.formToData();" /></td>
- <td><label for="realmedia_imagestatus">{#media_dlg.imagestatus}</label></td>
- </tr>
- </table>
- </td>
-
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="realmedia_maintainaspect" name="realmedia_maintainaspect" onchange="Media.formToData();" /></td>
- <td><label for="realmedia_maintainaspect">{#media_dlg.maintainaspect}</label></td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="realmedia_nojava" name="realmedia_nojava" onchange="Media.formToData();" /></td>
- <td><label for="realmedia_nojava">{#media_dlg.nojava}</label></td>
- </tr>
- </table>
- </td>
-
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="realmedia_prefetch" name="realmedia_prefetch" onchange="Media.formToData();" /></td>
- <td><label for="realmedia_prefetch">{#media_dlg.prefetch}</label></td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="realmedia_shuffle" name="realmedia_shuffle" onchange="Media.formToData();" /></td>
- <td><label for="realmedia_shuffle">{#media_dlg.shuffle}</label></td>
- </tr>
- </table>
- </td>
-
- <td colspan="2">
- &nbsp;
- </td>
- </tr>
-
- <tr>
- <td><label for="realmedia_console">{#media_dlg.console}</label></td>
- <td><input type="text" id="realmedia_console" name="realmedia_console" onchange="Media.formToData();" /></td>
-
- <td><label for="realmedia_controls">{#media_dlg.controls}</label></td>
- <td><input type="text" id="realmedia_controls" name="realmedia_controls" onchange="Media.formToData();" /></td>
- </tr>
-
- <tr>
- <td><label for="realmedia_numloop">{#media_dlg.numloop}</label></td>
- <td><input type="text" id="realmedia_numloop" name="realmedia_numloop" onchange="Media.formToData();" /></td>
-
- <td><label for="realmedia_scriptcallbacks">{#media_dlg.scriptcallbacks}</label></td>
- <td><input type="text" id="realmedia_scriptcallbacks" name="realmedia_scriptcallbacks" onchange="Media.formToData();" /></td>
- </tr>
- </table>
- </fieldset>
-
- <fieldset id="shockwave_options">
- <legend>{#media_dlg.shockwave_options}</legend>
-
- <table role="presentation" border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td><label for="shockwave_swstretchstyle">{#media_dlg.swstretchstyle}</label></td>
- <td>
- <select id="shockwave_swstretchstyle" name="shockwave_swstretchstyle" onchange="Media.formToData();">
- <option value="none">{#not_set}</option>
- <option value="meet">Meet</option>
- <option value="fill">Fill</option>
- <option value="stage">Stage</option>
- </select>
- </td>
-
- <td><label for="shockwave_swvolume">{#media_dlg.volume}</label></td>
- <td><input type="text" id="shockwave_swvolume" name="shockwave_swvolume" onchange="Media.formToData();" /></td>
- </tr>
-
- <tr>
- <td><label for="shockwave_swstretchhalign">{#media_dlg.swstretchhalign}</label></td>
- <td>
- <select id="shockwave_swstretchhalign" name="shockwave_swstretchhalign" onchange="Media.formToData();">
- <option value="none">{#not_set}</option>
- <option value="left">{#media_dlg.align_left}</option>
- <option value="center">{#media_dlg.align_center}</option>
- <option value="right">{#media_dlg.align_right}</option>
- </select>
- </td>
-
- <td><label for="shockwave_swstretchvalign">{#media_dlg.swstretchvalign}</label></td>
- <td>
- <select id="shockwave_swstretchvalign" name="shockwave_swstretchvalign" onchange="Media.formToData();">
- <option value="none">{#not_set}</option>
- <option value="meet">Meet</option>
- <option value="fill">Fill</option>
- <option value="stage">Stage</option>
- </select>
- </td>
- </tr>
-
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="shockwave_autostart" name="shockwave_autostart" onchange="Media.formToData();" checked="checked" /></td>
- <td><label for="shockwave_autostart">{#media_dlg.autostart}</label></td>
- </tr>
- </table>
- </td>
-
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="shockwave_sound" name="shockwave_sound" onchange="Media.formToData();" checked="checked" /></td>
- <td><label for="shockwave_sound">{#media_dlg.sound}</label></td>
- </tr>
- </table>
- </td>
- </tr>
-
-
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="shockwave_swliveconnect" name="shockwave_swliveconnect" onchange="Media.formToData();" /></td>
- <td><label for="shockwave_swliveconnect">{#media_dlg.liveconnect}</label></td>
- </tr>
- </table>
- </td>
-
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input type="checkbox" class="checkbox" id="shockwave_progress" name="shockwave_progress" onchange="Media.formToData();" checked="checked" /></td>
- <td><label for="shockwave_progress">{#media_dlg.progress}</label></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </fieldset>
- </div>
-
- <div id="source_panel" class="panel">
- <fieldset>
- <legend>{#media_dlg.source}</legend>
- <textarea id="source" style="width: 99%; height: 390px"></textarea>
- </fieldset>
- </div>
- </div>
-
- <div class="mceActionPanel">
- <input type="submit" id="insert" name="insert" value="{#insert}" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
- </form>
-</body>
-</html>
diff --git a/program/js/tiny_mce/plugins/media/moxieplayer.swf b/program/js/tiny_mce/plugins/media/moxieplayer.swf
deleted file mode 100644
index 585d772d6..000000000
--- a/program/js/tiny_mce/plugins/media/moxieplayer.swf
+++ /dev/null
Binary files differ
diff --git a/program/js/tiny_mce/plugins/nonbreaking/editor_plugin.js b/program/js/tiny_mce/plugins/nonbreaking/editor_plugin.js
deleted file mode 100644
index 687f54866..000000000
--- a/program/js/tiny_mce/plugins/nonbreaking/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.Nonbreaking",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceNonBreaking",function(){a.execCommand("mceInsertContent",false,(a.plugins.visualchars&&a.plugins.visualchars.state)?'<span data-mce-bogus="1" class="mceItemHidden mceItemNbsp">&nbsp;</span>':"&nbsp;")});a.addButton("nonbreaking",{title:"nonbreaking.nonbreaking_desc",cmd:"mceNonBreaking"});if(a.getParam("nonbreaking_force_tab")){a.onKeyDown.add(function(d,f){if(f.keyCode==9){f.preventDefault();d.execCommand("mceNonBreaking");d.execCommand("mceNonBreaking");d.execCommand("mceNonBreaking")}})}},getInfo:function(){return{longname:"Nonbreaking space",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/nonbreaking",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("nonbreaking",tinymce.plugins.Nonbreaking)})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/nonbreaking/editor_plugin_src.js b/program/js/tiny_mce/plugins/nonbreaking/editor_plugin_src.js
deleted file mode 100644
index d492fbefe..000000000
--- a/program/js/tiny_mce/plugins/nonbreaking/editor_plugin_src.js
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- tinymce.create('tinymce.plugins.Nonbreaking', {
- init : function(ed, url) {
- var t = this;
-
- t.editor = ed;
-
- // Register commands
- ed.addCommand('mceNonBreaking', function() {
- ed.execCommand('mceInsertContent', false, (ed.plugins.visualchars && ed.plugins.visualchars.state) ? '<span data-mce-bogus="1" class="mceItemHidden mceItemNbsp">&nbsp;</span>' : '&nbsp;');
- });
-
- // Register buttons
- ed.addButton('nonbreaking', {title : 'nonbreaking.nonbreaking_desc', cmd : 'mceNonBreaking'});
-
- if (ed.getParam('nonbreaking_force_tab')) {
- ed.onKeyDown.add(function(ed, e) {
- if (e.keyCode == 9) {
- e.preventDefault();
-
- ed.execCommand('mceNonBreaking');
- ed.execCommand('mceNonBreaking');
- ed.execCommand('mceNonBreaking');
- }
- });
- }
- },
-
- getInfo : function() {
- return {
- longname : 'Nonbreaking space',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/nonbreaking',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
-
- // Private methods
- });
-
- // Register plugin
- tinymce.PluginManager.add('nonbreaking', tinymce.plugins.Nonbreaking);
-})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/noneditable/editor_plugin.js b/program/js/tiny_mce/plugins/noneditable/editor_plugin.js
deleted file mode 100644
index da411ebc0..000000000
--- a/program/js/tiny_mce/plugins/noneditable/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){var c=tinymce.dom.TreeWalker;var a="contenteditable",d="data-mce-"+a;var e=tinymce.VK;function b(n){var j=n.dom,p=n.selection,r,o="mce_noneditablecaret",r="\uFEFF";function m(t){var s;if(t.nodeType===1){s=t.getAttribute(d);if(s&&s!=="inherit"){return s}s=t.contentEditable;if(s!=="inherit"){return s}}return null}function g(s){var t;while(s){t=m(s);if(t){return t==="false"?s:null}s=s.parentNode}}function l(s){while(s){if(s.id===o){return s}s=s.parentNode}}function k(s){var t;if(s){t=new c(s,s);for(s=t.current();s;s=t.next()){if(s.nodeType===3){return s}}}}function f(v,u){var s,t;if(m(v)==="false"){if(j.isBlock(v)){p.select(v);return}}t=j.createRng();if(m(v)==="true"){if(!v.firstChild){v.appendChild(n.getDoc().createTextNode("\u00a0"))}v=v.firstChild;u=true}s=j.create("span",{id:o,"data-mce-bogus":true},r);if(u){v.parentNode.insertBefore(s,v)}else{j.insertAfter(s,v)}t.setStart(s.firstChild,1);t.collapse(true);p.setRng(t);return s}function i(s){var v,t,u;if(s){rng=p.getRng(true);rng.setStartBefore(s);rng.setEndBefore(s);v=k(s);if(v&&v.nodeValue.charAt(0)==r){v=v.deleteData(0,1)}j.remove(s,true);p.setRng(rng)}else{t=l(p.getStart());while((s=j.get(o))&&s!==u){if(t!==s){v=k(s);if(v&&v.nodeValue.charAt(0)==r){v=v.deleteData(0,1)}j.remove(s,true)}u=s}}}function q(){var s,w,u,t,v;function x(B,D){var A,F,E,C,z;A=t.startContainer;F=t.startOffset;if(A.nodeType==3){z=A.nodeValue.length;if((F>0&&F<z)||(D?F==z:F==0)){return}}else{if(F<A.childNodes.length){var G=!D&&F>0?F-1:F;A=A.childNodes[G];if(A.hasChildNodes()){A=A.firstChild}}else{return !D?B:null}}E=new c(A,B);while(C=E[D?"prev":"next"]()){if(C.nodeType===3&&C.nodeValue.length>0){return}else{if(m(C)==="true"){return C}}}return B}i();u=p.isCollapsed();s=g(p.getStart());w=g(p.getEnd());if(s||w){t=p.getRng(true);if(u){s=s||w;var y=p.getStart();if(v=x(s,true)){f(v,true)}else{if(v=x(s,false)){f(v,false)}else{p.select(s)}}}else{t=p.getRng(true);if(s){t.setStartBefore(s)}if(w){t.setEndAfter(w)}p.setRng(t)}}}function h(z,B){var F=B.keyCode,x,C,D,v;function u(H,G){while(H=H[G?"previousSibling":"nextSibling"]){if(H.nodeType!==3||H.nodeValue.length>0){return H}}}function y(G,H){p.select(G);p.collapse(H)}function t(K){var J,I,M,H;function G(O){var N=I;while(N){if(N===O){return}N=N.parentNode}j.remove(O);q()}function L(){var O,P,N=z.schema.getNonEmptyElements();P=new tinymce.dom.TreeWalker(I,z.getBody());while(O=(K?P.prev():P.next())){if(N[O.nodeName.toLowerCase()]){break}if(O.nodeType===3&&tinymce.trim(O.nodeValue).length>0){break}if(m(O)==="false"){G(O);return true}}if(g(O)){return true}return false}if(p.isCollapsed()){J=p.getRng(true);I=J.startContainer;M=J.startOffset;I=l(I)||I;if(H=g(I)){G(H);return false}if(I.nodeType==3&&(K?M>0:M<I.nodeValue.length)){return true}if(I.nodeType==1){I=I.childNodes[M]||I}if(L()){return false}}return true}D=p.getStart();v=p.getEnd();x=g(D)||g(v);if(x&&(F<112||F>124)&&F!=e.DELETE&&F!=e.BACKSPACE){if((tinymce.isMac?B.metaKey:B.ctrlKey)&&(F==67||F==88||F==86)){return}B.preventDefault();if(F==e.LEFT||F==e.RIGHT){var w=F==e.LEFT;if(z.dom.isBlock(x)){var A=w?x.previousSibling:x.nextSibling;var s=new c(A,A);var E=w?s.prev():s.next();y(E,!w)}else{y(x,w)}}}else{if(F==e.LEFT||F==e.RIGHT||F==e.BACKSPACE||F==e.DELETE){C=l(D);if(C){if(F==e.LEFT||F==e.BACKSPACE){x=u(C,true);if(x&&m(x)==="false"){B.preventDefault();if(F==e.LEFT){y(x,true)}else{j.remove(x);return}}else{i(C)}}if(F==e.RIGHT||F==e.DELETE){x=u(C);if(x&&m(x)==="false"){B.preventDefault();if(F==e.RIGHT){y(x,false)}else{j.remove(x);return}}else{i(C)}}}if((F==e.BACKSPACE||F==e.DELETE)&&!t(F==e.BACKSPACE)){B.preventDefault();return false}}}}n.onMouseDown.addToTop(function(s,u){var t=s.selection.getNode();if(m(t)==="false"&&t==u.target){q()}});n.onMouseUp.addToTop(q);n.onKeyDown.addToTop(h);n.onKeyUp.addToTop(q)}tinymce.create("tinymce.plugins.NonEditablePlugin",{init:function(i,k){var h,g,j;function f(m,n){var o=j.length,p=n.content,l=tinymce.trim(g);if(n.format=="raw"){return}while(o--){p=p.replace(j[o],function(s){var r=arguments,q=r[r.length-2];if(q>0&&p.charAt(q-1)=='"'){return s}return'<span class="'+l+'" data-mce-content="'+m.dom.encode(r[0])+'">'+m.dom.encode(typeof(r[1])==="string"?r[1]:r[0])+"</span>"})}n.content=p}h=" "+tinymce.trim(i.getParam("noneditable_editable_class","mceEditable"))+" ";g=" "+tinymce.trim(i.getParam("noneditable_noneditable_class","mceNonEditable"))+" ";j=i.getParam("noneditable_regexp");if(j&&!j.length){j=[j]}i.onPreInit.add(function(){b(i);if(j){i.selection.onBeforeSetContent.add(f);i.onBeforeSetContent.add(f)}i.parser.addAttributeFilter("class",function(l){var m=l.length,n,o;while(m--){o=l[m];n=" "+o.attr("class")+" ";if(n.indexOf(h)!==-1){o.attr(d,"true")}else{if(n.indexOf(g)!==-1){o.attr(d,"false")}}}});i.serializer.addAttributeFilter(d,function(l,m){var n=l.length,o;while(n--){o=l[n];if(j&&o.attr("data-mce-content")){o.name="#text";o.type=3;o.raw=true;o.value=o.attr("data-mce-content")}else{o.attr(a,null);o.attr(d,null)}}});i.parser.addAttributeFilter(a,function(l,m){var n=l.length,o;while(n--){o=l[n];o.attr(d,o.attr(a));o.attr(a,null)}})})},getInfo:function(){return{longname:"Non editable elements",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("noneditable",tinymce.plugins.NonEditablePlugin)})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/noneditable/editor_plugin_src.js b/program/js/tiny_mce/plugins/noneditable/editor_plugin_src.js
deleted file mode 100644
index a18bcd786..000000000
--- a/program/js/tiny_mce/plugins/noneditable/editor_plugin_src.js
+++ /dev/null
@@ -1,537 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- var TreeWalker = tinymce.dom.TreeWalker;
- var externalName = 'contenteditable', internalName = 'data-mce-' + externalName;
- var VK = tinymce.VK;
-
- function handleContentEditableSelection(ed) {
- var dom = ed.dom, selection = ed.selection, invisibleChar, caretContainerId = 'mce_noneditablecaret', invisibleChar = '\uFEFF';
-
- // Returns the content editable state of a node "true/false" or null
- function getContentEditable(node) {
- var contentEditable;
-
- // Ignore non elements
- if (node.nodeType === 1) {
- // Check for fake content editable
- contentEditable = node.getAttribute(internalName);
- if (contentEditable && contentEditable !== "inherit") {
- return contentEditable;
- }
-
- // Check for real content editable
- contentEditable = node.contentEditable;
- if (contentEditable !== "inherit") {
- return contentEditable;
- }
- }
-
- return null;
- };
-
- // Returns the noneditable parent or null if there is a editable before it or if it wasn't found
- function getNonEditableParent(node) {
- var state;
-
- while (node) {
- state = getContentEditable(node);
- if (state) {
- return state === "false" ? node : null;
- }
-
- node = node.parentNode;
- }
- };
-
- // Get caret container parent for the specified node
- function getParentCaretContainer(node) {
- while (node) {
- if (node.id === caretContainerId) {
- return node;
- }
-
- node = node.parentNode;
- }
- };
-
- // Finds the first text node in the specified node
- function findFirstTextNode(node) {
- var walker;
-
- if (node) {
- walker = new TreeWalker(node, node);
-
- for (node = walker.current(); node; node = walker.next()) {
- if (node.nodeType === 3) {
- return node;
- }
- }
- }
- };
-
- // Insert caret container before/after target or expand selection to include block
- function insertCaretContainerOrExpandToBlock(target, before) {
- var caretContainer, rng;
-
- // Select block
- if (getContentEditable(target) === "false") {
- if (dom.isBlock(target)) {
- selection.select(target);
- return;
- }
- }
-
- rng = dom.createRng();
-
- if (getContentEditable(target) === "true") {
- if (!target.firstChild) {
- target.appendChild(ed.getDoc().createTextNode('\u00a0'));
- }
-
- target = target.firstChild;
- before = true;
- }
-
- //caretContainer = dom.create('span', {id: caretContainerId, 'data-mce-bogus': true, style:'border: 1px solid red'}, invisibleChar);
- caretContainer = dom.create('span', {id: caretContainerId, 'data-mce-bogus': true}, invisibleChar);
-
- if (before) {
- target.parentNode.insertBefore(caretContainer, target);
- } else {
- dom.insertAfter(caretContainer, target);
- }
-
- rng.setStart(caretContainer.firstChild, 1);
- rng.collapse(true);
- selection.setRng(rng);
-
- return caretContainer;
- };
-
- // Removes any caret container except the one we might be in
- function removeCaretContainer(caretContainer) {
- var child, currentCaretContainer, lastContainer;
-
- if (caretContainer) {
- rng = selection.getRng(true);
- rng.setStartBefore(caretContainer);
- rng.setEndBefore(caretContainer);
-
- child = findFirstTextNode(caretContainer);
- if (child && child.nodeValue.charAt(0) == invisibleChar) {
- child = child.deleteData(0, 1);
- }
-
- dom.remove(caretContainer, true);
-
- selection.setRng(rng);
- } else {
- currentCaretContainer = getParentCaretContainer(selection.getStart());
- while ((caretContainer = dom.get(caretContainerId)) && caretContainer !== lastContainer) {
- if (currentCaretContainer !== caretContainer) {
- child = findFirstTextNode(caretContainer);
- if (child && child.nodeValue.charAt(0) == invisibleChar) {
- child = child.deleteData(0, 1);
- }
-
- dom.remove(caretContainer, true);
- }
-
- lastContainer = caretContainer;
- }
- }
- };
-
- // Modifies the selection to include contentEditable false elements or insert caret containers
- function moveSelection() {
- var nonEditableStart, nonEditableEnd, isCollapsed, rng, element;
-
- // Checks if there is any contents to the left/right side of caret returns the noneditable element or any editable element if it finds one inside
- function hasSideContent(element, left) {
- var container, offset, walker, node, len;
-
- container = rng.startContainer;
- offset = rng.startOffset;
-
- // If endpoint is in middle of text node then expand to beginning/end of element
- if (container.nodeType == 3) {
- len = container.nodeValue.length;
- if ((offset > 0 && offset < len) || (left ? offset == len : offset == 0)) {
- return;
- }
- } else {
- // Can we resolve the node by index
- if (offset < container.childNodes.length) {
- // Browser represents caret position as the offset at the start of an element. When moving right
- // this is the element we are moving into so we consider our container to be child node at offset-1
- var pos = !left && offset > 0 ? offset-1 : offset;
- container = container.childNodes[pos];
- if (container.hasChildNodes()) {
- container = container.firstChild;
- }
- } else {
- // If not then the caret is at the last position in it's container and the caret container should be inserted after the noneditable element
- return !left ? element : null;
- }
- }
-
- // Walk left/right to look for contents
- walker = new TreeWalker(container, element);
- while (node = walker[left ? 'prev' : 'next']()) {
- if (node.nodeType === 3 && node.nodeValue.length > 0) {
- return;
- } else if (getContentEditable(node) === "true") {
- // Found contentEditable=true element return this one to we can move the caret inside it
- return node;
- }
- }
-
- return element;
- };
-
- // Remove any existing caret containers
- removeCaretContainer();
-
- // Get noneditable start/end elements
- isCollapsed = selection.isCollapsed();
- nonEditableStart = getNonEditableParent(selection.getStart());
- nonEditableEnd = getNonEditableParent(selection.getEnd());
-
- // Is any fo the range endpoints noneditable
- if (nonEditableStart || nonEditableEnd) {
- rng = selection.getRng(true);
-
- // If it's a caret selection then look left/right to see if we need to move the caret out side or expand
- if (isCollapsed) {
- nonEditableStart = nonEditableStart || nonEditableEnd;
- var start = selection.getStart();
- if (element = hasSideContent(nonEditableStart, true)) {
- // We have no contents to the left of the caret then insert a caret container before the noneditable element
- insertCaretContainerOrExpandToBlock(element, true);
- } else if (element = hasSideContent(nonEditableStart, false)) {
- // We have no contents to the right of the caret then insert a caret container after the noneditable element
- insertCaretContainerOrExpandToBlock(element, false);
- } else {
- // We are in the middle of a noneditable so expand to select it
- selection.select(nonEditableStart);
- }
- } else {
- rng = selection.getRng(true);
-
- // Expand selection to include start non editable element
- if (nonEditableStart) {
- rng.setStartBefore(nonEditableStart);
- }
-
- // Expand selection to include end non editable element
- if (nonEditableEnd) {
- rng.setEndAfter(nonEditableEnd);
- }
-
- selection.setRng(rng);
- }
- }
- };
-
- function handleKey(ed, e) {
- var keyCode = e.keyCode, nonEditableParent, caretContainer, startElement, endElement;
-
- function getNonEmptyTextNodeSibling(node, prev) {
- while (node = node[prev ? 'previousSibling' : 'nextSibling']) {
- if (node.nodeType !== 3 || node.nodeValue.length > 0) {
- return node;
- }
- }
- };
-
- function positionCaretOnElement(element, start) {
- selection.select(element);
- selection.collapse(start);
- }
-
- function canDelete(backspace) {
- var rng, container, offset, nonEditableParent;
-
- function removeNodeIfNotParent(node) {
- var parent = container;
-
- while (parent) {
- if (parent === node) {
- return;
- }
-
- parent = parent.parentNode;
- }
-
- dom.remove(node);
- moveSelection();
- }
-
- function isNextPrevTreeNodeNonEditable() {
- var node, walker, nonEmptyElements = ed.schema.getNonEmptyElements();
-
- walker = new tinymce.dom.TreeWalker(container, ed.getBody());
- while (node = (backspace ? walker.prev() : walker.next())) {
- // Found IMG/INPUT etc
- if (nonEmptyElements[node.nodeName.toLowerCase()]) {
- break;
- }
-
- // Found text node with contents
- if (node.nodeType === 3 && tinymce.trim(node.nodeValue).length > 0) {
- break;
- }
-
- // Found non editable node
- if (getContentEditable(node) === "false") {
- removeNodeIfNotParent(node);
- return true;
- }
- }
-
- // Check if the content node is within a non editable parent
- if (getNonEditableParent(node)) {
- return true;
- }
-
- return false;
- }
-
- if (selection.isCollapsed()) {
- rng = selection.getRng(true);
- container = rng.startContainer;
- offset = rng.startOffset;
- container = getParentCaretContainer(container) || container;
-
- // Is in noneditable parent
- if (nonEditableParent = getNonEditableParent(container)) {
- removeNodeIfNotParent(nonEditableParent);
- return false;
- }
-
- // Check if the caret is in the middle of a text node
- if (container.nodeType == 3 && (backspace ? offset > 0 : offset < container.nodeValue.length)) {
- return true;
- }
-
- // Resolve container index
- if (container.nodeType == 1) {
- container = container.childNodes[offset] || container;
- }
-
- // Check if previous or next tree node is non editable then block the event
- if (isNextPrevTreeNodeNonEditable()) {
- return false;
- }
- }
-
- return true;
- }
-
- startElement = selection.getStart()
- endElement = selection.getEnd();
-
- // Disable all key presses in contentEditable=false except delete or backspace
- nonEditableParent = getNonEditableParent(startElement) || getNonEditableParent(endElement);
- if (nonEditableParent && (keyCode < 112 || keyCode > 124) && keyCode != VK.DELETE && keyCode != VK.BACKSPACE) {
- // Is Ctrl+c, Ctrl+v or Ctrl+x then use default browser behavior
- if ((tinymce.isMac ? e.metaKey : e.ctrlKey) && (keyCode == 67 || keyCode == 88 || keyCode == 86)) {
- return;
- }
-
- e.preventDefault();
-
- // Arrow left/right select the element and collapse left/right
- if (keyCode == VK.LEFT || keyCode == VK.RIGHT) {
- var left = keyCode == VK.LEFT;
- // If a block element find previous or next element to position the caret
- if (ed.dom.isBlock(nonEditableParent)) {
- var targetElement = left ? nonEditableParent.previousSibling : nonEditableParent.nextSibling;
- var walker = new TreeWalker(targetElement, targetElement);
- var caretElement = left ? walker.prev() : walker.next();
- positionCaretOnElement(caretElement, !left);
- } else {
- positionCaretOnElement(nonEditableParent, left);
- }
- }
- } else {
- // Is arrow left/right, backspace or delete
- if (keyCode == VK.LEFT || keyCode == VK.RIGHT || keyCode == VK.BACKSPACE || keyCode == VK.DELETE) {
- caretContainer = getParentCaretContainer(startElement);
- if (caretContainer) {
- // Arrow left or backspace
- if (keyCode == VK.LEFT || keyCode == VK.BACKSPACE) {
- nonEditableParent = getNonEmptyTextNodeSibling(caretContainer, true);
-
- if (nonEditableParent && getContentEditable(nonEditableParent) === "false") {
- e.preventDefault();
-
- if (keyCode == VK.LEFT) {
- positionCaretOnElement(nonEditableParent, true);
- } else {
- dom.remove(nonEditableParent);
- return;
- }
- } else {
- removeCaretContainer(caretContainer);
- }
- }
-
- // Arrow right or delete
- if (keyCode == VK.RIGHT || keyCode == VK.DELETE) {
- nonEditableParent = getNonEmptyTextNodeSibling(caretContainer);
-
- if (nonEditableParent && getContentEditable(nonEditableParent) === "false") {
- e.preventDefault();
-
- if (keyCode == VK.RIGHT) {
- positionCaretOnElement(nonEditableParent, false);
- } else {
- dom.remove(nonEditableParent);
- return;
- }
- } else {
- removeCaretContainer(caretContainer);
- }
- }
- }
-
- if ((keyCode == VK.BACKSPACE || keyCode == VK.DELETE) && !canDelete(keyCode == VK.BACKSPACE)) {
- e.preventDefault();
- return false;
- }
- }
- }
- };
-
- ed.onMouseDown.addToTop(function(ed, e) {
- var node = ed.selection.getNode();
-
- if (getContentEditable(node) === "false" && node == e.target) {
- // Expand selection on mouse down we can't block the default event since it's used for drag/drop
- moveSelection();
- }
- });
-
- ed.onMouseUp.addToTop(moveSelection);
- ed.onKeyDown.addToTop(handleKey);
- ed.onKeyUp.addToTop(moveSelection);
- };
-
- tinymce.create('tinymce.plugins.NonEditablePlugin', {
- init : function(ed, url) {
- var editClass, nonEditClass, nonEditableRegExps;
-
- // Converts configured regexps to noneditable span items
- function convertRegExpsToNonEditable(ed, args) {
- var i = nonEditableRegExps.length, content = args.content, cls = tinymce.trim(nonEditClass);
-
- // Don't replace the variables when raw is used for example on undo/redo
- if (args.format == "raw") {
- return;
- }
-
- while (i--) {
- content = content.replace(nonEditableRegExps[i], function(match) {
- var args = arguments, index = args[args.length - 2];
-
- // Is value inside an attribute then don't replace
- if (index > 0 && content.charAt(index - 1) == '"') {
- return match;
- }
-
- return '<span class="' + cls + '" data-mce-content="' + ed.dom.encode(args[0]) + '">' + ed.dom.encode(typeof(args[1]) === "string" ? args[1] : args[0]) + '</span>';
- });
- }
-
- args.content = content;
- };
-
- editClass = " " + tinymce.trim(ed.getParam("noneditable_editable_class", "mceEditable")) + " ";
- nonEditClass = " " + tinymce.trim(ed.getParam("noneditable_noneditable_class", "mceNonEditable")) + " ";
-
- // Setup noneditable regexps array
- nonEditableRegExps = ed.getParam("noneditable_regexp");
- if (nonEditableRegExps && !nonEditableRegExps.length) {
- nonEditableRegExps = [nonEditableRegExps];
- }
-
- ed.onPreInit.add(function() {
- handleContentEditableSelection(ed);
-
- if (nonEditableRegExps) {
- ed.selection.onBeforeSetContent.add(convertRegExpsToNonEditable);
- ed.onBeforeSetContent.add(convertRegExpsToNonEditable);
- }
-
- // Apply contentEditable true/false on elements with the noneditable/editable classes
- ed.parser.addAttributeFilter('class', function(nodes) {
- var i = nodes.length, className, node;
-
- while (i--) {
- node = nodes[i];
- className = " " + node.attr("class") + " ";
-
- if (className.indexOf(editClass) !== -1) {
- node.attr(internalName, "true");
- } else if (className.indexOf(nonEditClass) !== -1) {
- node.attr(internalName, "false");
- }
- }
- });
-
- // Remove internal name
- ed.serializer.addAttributeFilter(internalName, function(nodes, name) {
- var i = nodes.length, node;
-
- while (i--) {
- node = nodes[i];
-
- if (nonEditableRegExps && node.attr('data-mce-content')) {
- node.name = "#text";
- node.type = 3;
- node.raw = true;
- node.value = node.attr('data-mce-content');
- } else {
- node.attr(externalName, null);
- node.attr(internalName, null);
- }
- }
- });
-
- // Convert external name into internal name
- ed.parser.addAttributeFilter(externalName, function(nodes, name) {
- var i = nodes.length, node;
-
- while (i--) {
- node = nodes[i];
- node.attr(internalName, node.attr(externalName));
- node.attr(externalName, null);
- }
- });
- });
- },
-
- getInfo : function() {
- return {
- longname : 'Non editable elements',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('noneditable', tinymce.plugins.NonEditablePlugin);
-})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/pagebreak/editor_plugin.js b/program/js/tiny_mce/plugins/pagebreak/editor_plugin.js
deleted file mode 100644
index 35085e8ad..000000000
--- a/program/js/tiny_mce/plugins/pagebreak/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.PageBreakPlugin",{init:function(b,d){var f='<img src="'+b.theme.url+'/img/trans.gif" class="mcePageBreak mceItemNoResize" />',a="mcePageBreak",c=b.getParam("pagebreak_separator","<!-- pagebreak -->"),e;e=new RegExp(c.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g,function(g){return"\\"+g}),"g");b.addCommand("mcePageBreak",function(){b.execCommand("mceInsertContent",0,f)});b.addButton("pagebreak",{title:"pagebreak.desc",cmd:a});b.onInit.add(function(){if(b.theme.onResolveName){b.theme.onResolveName.add(function(g,h){if(h.node.nodeName=="IMG"&&b.dom.hasClass(h.node,a)){h.name="pagebreak"}})}});b.onClick.add(function(g,h){h=h.target;if(h.nodeName==="IMG"&&g.dom.hasClass(h,a)){g.selection.select(h)}});b.onNodeChange.add(function(h,g,i){g.setActive("pagebreak",i.nodeName==="IMG"&&h.dom.hasClass(i,a))});b.onBeforeSetContent.add(function(g,h){h.content=h.content.replace(e,f)});b.onPostProcess.add(function(g,h){if(h.get){h.content=h.content.replace(/<img[^>]+>/g,function(i){if(i.indexOf('class="mcePageBreak')!==-1){i=c}return i})}})},getInfo:function(){return{longname:"PageBreak",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/pagebreak",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("pagebreak",tinymce.plugins.PageBreakPlugin)})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/pagebreak/editor_plugin_src.js b/program/js/tiny_mce/plugins/pagebreak/editor_plugin_src.js
deleted file mode 100644
index a094c1916..000000000
--- a/program/js/tiny_mce/plugins/pagebreak/editor_plugin_src.js
+++ /dev/null
@@ -1,74 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- tinymce.create('tinymce.plugins.PageBreakPlugin', {
- init : function(ed, url) {
- var pb = '<img src="' + ed.theme.url + '/img/trans.gif" class="mcePageBreak mceItemNoResize" />', cls = 'mcePageBreak', sep = ed.getParam('pagebreak_separator', '<!-- pagebreak -->'), pbRE;
-
- pbRE = new RegExp(sep.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g, function(a) {return '\\' + a;}), 'g');
-
- // Register commands
- ed.addCommand('mcePageBreak', function() {
- ed.execCommand('mceInsertContent', 0, pb);
- });
-
- // Register buttons
- ed.addButton('pagebreak', {title : 'pagebreak.desc', cmd : cls});
-
- ed.onInit.add(function() {
- if (ed.theme.onResolveName) {
- ed.theme.onResolveName.add(function(th, o) {
- if (o.node.nodeName == 'IMG' && ed.dom.hasClass(o.node, cls))
- o.name = 'pagebreak';
- });
- }
- });
-
- ed.onClick.add(function(ed, e) {
- e = e.target;
-
- if (e.nodeName === 'IMG' && ed.dom.hasClass(e, cls))
- ed.selection.select(e);
- });
-
- ed.onNodeChange.add(function(ed, cm, n) {
- cm.setActive('pagebreak', n.nodeName === 'IMG' && ed.dom.hasClass(n, cls));
- });
-
- ed.onBeforeSetContent.add(function(ed, o) {
- o.content = o.content.replace(pbRE, pb);
- });
-
- ed.onPostProcess.add(function(ed, o) {
- if (o.get)
- o.content = o.content.replace(/<img[^>]+>/g, function(im) {
- if (im.indexOf('class="mcePageBreak') !== -1)
- im = sep;
-
- return im;
- });
- });
- },
-
- getInfo : function() {
- return {
- longname : 'PageBreak',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/pagebreak',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('pagebreak', tinymce.plugins.PageBreakPlugin);
-})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/editor_plugin.js b/program/js/tiny_mce/plugins/paste/editor_plugin.js
deleted file mode 100644
index f69f263f9..000000000
--- a/program/js/tiny_mce/plugins/paste/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){var c=tinymce.each,a={paste_auto_cleanup_on_paste:true,paste_enable_default_filters:true,paste_block_drop:false,paste_retain_style_properties:"none",paste_strip_class_attributes:"mso",paste_remove_spans:false,paste_remove_styles:false,paste_remove_styles_if_webkit:true,paste_convert_middot_lists:true,paste_convert_headers_to_strong:false,paste_dialog_width:"450",paste_dialog_height:"400",paste_max_consecutive_linebreaks:2,paste_text_use_dialog:false,paste_text_sticky:false,paste_text_sticky_default:false,paste_text_notifyalways:false,paste_text_linebreaktype:"combined",paste_text_replacements:[[/\u2026/g,"..."],[/[\x93\x94\u201c\u201d]/g,'"'],[/[\x60\x91\x92\u2018\u2019]/g,"'"]]};function b(d,e){return d.getParam(e,a[e])}tinymce.create("tinymce.plugins.PastePlugin",{init:function(d,e){var f=this;f.editor=d;f.url=e;f.onPreProcess=new tinymce.util.Dispatcher(f);f.onPostProcess=new tinymce.util.Dispatcher(f);f.onPreProcess.add(f._preProcess);f.onPostProcess.add(f._postProcess);f.onPreProcess.add(function(i,j){d.execCallback("paste_preprocess",i,j)});f.onPostProcess.add(function(i,j){d.execCallback("paste_postprocess",i,j)});d.onKeyDown.addToTop(function(i,j){if(((tinymce.isMac?j.metaKey:j.ctrlKey)&&j.keyCode==86)||(j.shiftKey&&j.keyCode==45)){return false}});d.pasteAsPlainText=b(d,"paste_text_sticky_default");function h(l,j){var k=d.dom,i;f.onPreProcess.dispatch(f,l);l.node=k.create("div",0,l.content);if(tinymce.isGecko){i=d.selection.getRng(true);if(i.startContainer==i.endContainer&&i.startContainer.nodeType==3){if(l.node.childNodes.length===1&&/^(p|h[1-6]|pre)$/i.test(l.node.firstChild.nodeName)&&l.content.indexOf("__MCE_ITEM__")===-1){k.remove(l.node.firstChild,true)}}}f.onPostProcess.dispatch(f,l);l.content=d.serializer.serialize(l.node,{getInner:1,forced_root_block:""});if((!j)&&(d.pasteAsPlainText)){f._insertPlainText(l.content);if(!b(d,"paste_text_sticky")){d.pasteAsPlainText=false;d.controlManager.setActive("pastetext",false)}}else{f._insert(l.content)}}d.addCommand("mceInsertClipboardContent",function(i,j){h(j,true)});if(!b(d,"paste_text_use_dialog")){d.addCommand("mcePasteText",function(j,i){var k=tinymce.util.Cookie;d.pasteAsPlainText=!d.pasteAsPlainText;d.controlManager.setActive("pastetext",d.pasteAsPlainText);if((d.pasteAsPlainText)&&(!k.get("tinymcePasteText"))){if(b(d,"paste_text_sticky")){d.windowManager.alert(d.translate("paste.plaintext_mode_sticky"))}else{d.windowManager.alert(d.translate("paste.plaintext_mode"))}if(!b(d,"paste_text_notifyalways")){k.set("tinymcePasteText","1",new Date(new Date().getFullYear()+1,12,31))}}})}d.addButton("pastetext",{title:"paste.paste_text_desc",cmd:"mcePasteText"});d.addButton("selectall",{title:"paste.selectall_desc",cmd:"selectall"});function g(s){var l,p,j,t,k=d.selection,o=d.dom,q=d.getBody(),i,r;if(s.clipboardData||o.doc.dataTransfer){r=(s.clipboardData||o.doc.dataTransfer).getData("Text");if(d.pasteAsPlainText){s.preventDefault();h({content:o.encode(r).replace(/\r?\n/g,"<br />")});return}}if(o.get("_mcePaste")){return}l=o.add(q,"div",{id:"_mcePaste","class":"mcePaste","data-mce-bogus":"1"},"\uFEFF\uFEFF");if(q!=d.getDoc().body){i=o.getPos(d.selection.getStart(),q).y}else{i=q.scrollTop+o.getViewPort(d.getWin()).y}o.setStyles(l,{position:"absolute",left:tinymce.isGecko?-40:0,top:i-25,width:1,height:1,overflow:"hidden"});if(tinymce.isIE){t=k.getRng();j=o.doc.body.createTextRange();j.moveToElementText(l);j.execCommand("Paste");o.remove(l);if(l.innerHTML==="\uFEFF\uFEFF"){d.execCommand("mcePasteWord");s.preventDefault();return}k.setRng(t);k.setContent("");setTimeout(function(){h({content:l.innerHTML})},0);return tinymce.dom.Event.cancel(s)}else{function m(n){n.preventDefault()}o.bind(d.getDoc(),"mousedown",m);o.bind(d.getDoc(),"keydown",m);p=d.selection.getRng();l=l.firstChild;j=d.getDoc().createRange();j.setStart(l,0);j.setEnd(l,2);k.setRng(j);window.setTimeout(function(){var u="",n;if(!o.select("div.mcePaste > div.mcePaste").length){n=o.select("div.mcePaste");c(n,function(w){var v=w.firstChild;if(v&&v.nodeName=="DIV"&&v.style.marginTop&&v.style.backgroundColor){o.remove(v,1)}c(o.select("span.Apple-style-span",w),function(x){o.remove(x,1)});c(o.select("br[data-mce-bogus]",w),function(x){o.remove(x)});if(w.parentNode.className!="mcePaste"){u+=w.innerHTML}})}else{u="<p>"+o.encode(r).replace(/\r?\n\r?\n/g,"</p><p>").replace(/\r?\n/g,"<br />")+"</p>"}c(o.select("div.mcePaste"),function(v){o.remove(v)});if(p){k.setRng(p)}h({content:u});o.unbind(d.getDoc(),"mousedown",m);o.unbind(d.getDoc(),"keydown",m)},0)}}if(b(d,"paste_auto_cleanup_on_paste")){if(tinymce.isOpera||/Firefox\/2/.test(navigator.userAgent)){d.onKeyDown.addToTop(function(i,j){if(((tinymce.isMac?j.metaKey:j.ctrlKey)&&j.keyCode==86)||(j.shiftKey&&j.keyCode==45)){g(j)}})}else{d.onPaste.addToTop(function(i,j){return g(j)})}}d.onInit.add(function(){d.controlManager.setActive("pastetext",d.pasteAsPlainText);if(b(d,"paste_block_drop")){d.dom.bind(d.getBody(),["dragend","dragover","draggesture","dragdrop","drop","drag"],function(i){i.preventDefault();i.stopPropagation();return false})}});f._legacySupport()},getInfo:function(){return{longname:"Paste text/word",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_preProcess:function(g,e){var k=this.editor,j=e.content,p=tinymce.grep,n=tinymce.explode,f=tinymce.trim,l,i;function d(h){c(h,function(o){if(o.constructor==RegExp){j=j.replace(o,"")}else{j=j.replace(o[0],o[1])}})}if(k.settings.paste_enable_default_filters==false){return}if(tinymce.isIE&&document.documentMode>=9&&/<(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)/.test(e.content)){d([[/(?:<br>&nbsp;[\s\r\n]+|<br>)*(<\/?(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)[^>]*>)(?:<br>&nbsp;[\s\r\n]+|<br>)*/g,"$1"]]);d([[/<br><br>/g,"<BR><BR>"],[/<br>/g," "],[/<BR><BR>/g,"<br>"]])}if(/class="?Mso|style="[^"]*\bmso-|w:WordDocument/i.test(j)||e.wordContent){e.wordContent=true;d([/^\s*(&nbsp;)+/gi,/(&nbsp;|<br[^>]*>)+\s*$/gi]);if(b(k,"paste_convert_headers_to_strong")){j=j.replace(/<p [^>]*class="?MsoHeading"?[^>]*>(.*?)<\/p>/gi,"<p><strong>$1</strong></p>")}if(b(k,"paste_convert_middot_lists")){d([[/<!--\[if !supportLists\]-->/gi,"$&__MCE_ITEM__"],[/(<span[^>]+(?:mso-list:|:\s*symbol)[^>]+>)/gi,"$1__MCE_ITEM__"],[/(<p[^>]+(?:MsoListParagraph)[^>]+>)/gi,"$1__MCE_ITEM__"]])}d([/<!--[\s\S]+?-->/gi,/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,[/<(\/?)s>/gi,"<$1strike>"],[/&nbsp;/gi,"\u00a0"]]);do{l=j.length;j=j.replace(/(<?!(ol|ul)[^>]*\s)(?:id|name|language|type|on\w+|\w+:\w+)=(?:"[^"]*"|\w+)\s?/gi,"$1");j=j.replace(/(<(ol|ul)[^>]*\s)(?:id|name|language|on\w+|\w+:\w+)=(?:"[^"]*"|\w+)\s?/gi,"$1")}while(l!=j.length);if(b(k,"paste_retain_style_properties").replace(/^none$/i,"").length==0){j=j.replace(/<\/?span[^>]*>/gi,"")}else{d([[/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,function(o,h){return(h.length>0)?h.replace(/./," ").slice(Math.floor(h.length/2)).split("").join("\u00a0"):""}],[/(<[a-z][^>]*)\sstyle="([^"]*)"/gi,function(t,h,r){var u=[],o=0,q=n(f(r).replace(/&quot;/gi,"'"),";");c(q,function(s){var w,y,z=n(s,":");function x(A){return A+((A!=="0")&&(/\d$/.test(A)))?"px":""}if(z.length==2){w=z[0].toLowerCase();y=z[1].toLowerCase();switch(w){case"mso-padding-alt":case"mso-padding-top-alt":case"mso-padding-right-alt":case"mso-padding-bottom-alt":case"mso-padding-left-alt":case"mso-margin-alt":case"mso-margin-top-alt":case"mso-margin-right-alt":case"mso-margin-bottom-alt":case"mso-margin-left-alt":case"mso-table-layout-alt":case"mso-height":case"mso-width":case"mso-vertical-align-alt":u[o++]=w.replace(/^mso-|-alt$/g,"")+":"+x(y);return;case"horiz-align":u[o++]="text-align:"+y;return;case"vert-align":u[o++]="vertical-align:"+y;return;case"font-color":case"mso-foreground":u[o++]="color:"+y;return;case"mso-background":case"mso-highlight":u[o++]="background:"+y;return;case"mso-default-height":u[o++]="min-height:"+x(y);return;case"mso-default-width":u[o++]="min-width:"+x(y);return;case"mso-padding-between-alt":u[o++]="border-collapse:separate;border-spacing:"+x(y);return;case"text-line-through":if((y=="single")||(y=="double")){u[o++]="text-decoration:line-through"}return;case"mso-zero-height":if(y=="yes"){u[o++]="display:none"}return}if(/^(mso|column|font-emph|lang|layout|line-break|list-image|nav|panose|punct|row|ruby|sep|size|src|tab-|table-border|text-(?!align|decor|indent|trans)|top-bar|version|vnd|word-break)/.test(w)){return}u[o++]=w+":"+z[1]}});if(o>0){return h+' style="'+u.join(";")+'"'}else{return h}}]])}}if(b(k,"paste_convert_headers_to_strong")){d([[/<h[1-6][^>]*>/gi,"<p><strong>"],[/<\/h[1-6][^>]*>/gi,"</strong></p>"]])}d([[/Version:[\d.]+\nStartHTML:\d+\nEndHTML:\d+\nStartFragment:\d+\nEndFragment:\d+/gi,""]]);i=b(k,"paste_strip_class_attributes");if(i!=="none"){function m(q,o){if(i==="all"){return""}var h=p(n(o.replace(/^(["'])(.*)\1$/,"$2")," "),function(r){return(/^(?!mso)/i.test(r))});return h.length?' class="'+h.join(" ")+'"':""}j=j.replace(/ class="([^"]+)"/gi,m);j=j.replace(/ class=([\-\w]+)/gi,m)}if(b(k,"paste_remove_spans")){j=j.replace(/<\/?span[^>]*>/gi,"")}e.content=j},_postProcess:function(g,i){var f=this,e=f.editor,h=e.dom,d;if(e.settings.paste_enable_default_filters==false){return}if(i.wordContent){c(h.select("a",i.node),function(j){if(!j.href||j.href.indexOf("#_Toc")!=-1){h.remove(j,1)}});if(b(e,"paste_convert_middot_lists")){f._convertLists(g,i)}d=b(e,"paste_retain_style_properties");if((tinymce.is(d,"string"))&&(d!=="all")&&(d!=="*")){d=tinymce.explode(d.replace(/^none$/i,""));c(h.select("*",i.node),function(m){var n={},k=0,l,o,j;if(d){for(l=0;l<d.length;l++){o=d[l];j=h.getStyle(m,o);if(j){n[o]=j;k++}}}h.setAttrib(m,"style","");if(d&&k>0){h.setStyles(m,n)}else{if(m.nodeName=="SPAN"&&!m.className){h.remove(m,true)}}})}}if(b(e,"paste_remove_styles")||(b(e,"paste_remove_styles_if_webkit")&&tinymce.isWebKit)){c(h.select("*[style]",i.node),function(j){j.removeAttribute("style");j.removeAttribute("data-mce-style")})}else{if(tinymce.isWebKit){c(h.select("*",i.node),function(j){j.removeAttribute("data-mce-style")})}}},_convertLists:function(g,e){var i=g.editor.dom,h,l,d=-1,f,m=[],k,j;c(i.select("p",e.node),function(t){var q,u="",s,r,n,o;for(q=t.firstChild;q&&q.nodeType==3;q=q.nextSibling){u+=q.nodeValue}u=t.innerHTML.replace(/<\/?\w+[^>]*>/gi,"").replace(/&nbsp;/g,"\u00a0");if(/^(__MCE_ITEM__)+[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*\u00a0*/.test(u)){s="ul"}if(/^__MCE_ITEM__\s*\w+\.\s*\u00a0+/.test(u)){s="ol"}if(s){f=parseFloat(t.style.marginLeft||0);if(f>d){m.push(f)}if(!h||s!=k){h=i.create(s);i.insertAfter(h,t)}else{if(f>d){h=l.appendChild(i.create(s))}else{if(f<d){n=tinymce.inArray(m,f);o=i.getParents(h.parentNode,s);h=o[o.length-1-n]||h}}}c(i.select("span",t),function(v){var p=v.innerHTML.replace(/<\/?\w+[^>]*>/gi,"");if(s=="ul"&&/^__MCE_ITEM__[\u2022\u00b7\u00a7\u00d8o\u25CF]/.test(p)){i.remove(v)}else{if(/^__MCE_ITEM__[\s\S]*\w+\.(&nbsp;|\u00a0)*\s*/.test(p)){i.remove(v)}}});r=t.innerHTML;if(s=="ul"){r=t.innerHTML.replace(/__MCE_ITEM__/g,"").replace(/^[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*(&nbsp;|\u00a0)+\s*/,"")}else{r=t.innerHTML.replace(/__MCE_ITEM__/g,"").replace(/^\s*\w+\.(&nbsp;|\u00a0)+\s*/,"")}l=h.appendChild(i.create("li",0,r));i.remove(t);d=f;k=s}else{h=d=0}});j=e.node.innerHTML;if(j.indexOf("__MCE_ITEM__")!=-1){e.node.innerHTML=j.replace(/__MCE_ITEM__/g,"")}},_insert:function(f,d){var e=this.editor,g=e.selection.getRng();if(!e.selection.isCollapsed()&&g.startContainer!=g.endContainer){e.getDoc().execCommand("Delete",false,null)}e.execCommand("mceInsertContent",false,f,{skip_undo:d})},_insertPlainText:function(j){var h=this.editor,f=b(h,"paste_text_linebreaktype"),k=b(h,"paste_text_replacements"),g=tinymce.is;function e(m){c(m,function(n){if(n.constructor==RegExp){j=j.replace(n,"")}else{j=j.replace(n[0],n[1])}})}if((typeof(j)==="string")&&(j.length>0)){if(/<(?:p|br|h[1-6]|ul|ol|dl|table|t[rdh]|div|blockquote|fieldset|pre|address|center)[^>]*>/i.test(j)){e([/[\n\r]+/g])}else{e([/\r+/g])}e([[/<\/(?:p|h[1-6]|ul|ol|dl|table|div|blockquote|fieldset|pre|address|center)>/gi,"\n\n"],[/<br[^>]*>|<\/tr>/gi,"\n"],[/<\/t[dh]>\s*<t[dh][^>]*>/gi,"\t"],/<[a-z!\/?][^>]*>/gi,[/&nbsp;/gi," "],[/(?:(?!\n)\s)*(\n+)(?:(?!\n)\s)*/gi,"$1"]]);var d=Number(b(h,"paste_max_consecutive_linebreaks"));if(d>-1){var l=new RegExp("\n{"+(d+1)+",}","g");var i="";while(i.length<d){i+="\n"}e([[l,i]])}j=h.dom.decode(tinymce.html.Entities.encodeRaw(j));if(g(k,"array")){e(k)}else{if(g(k,"string")){e(new RegExp(k,"gi"))}}if(f=="none"){e([[/\n+/g," "]])}else{if(f=="br"){e([[/\n/g,"<br />"]])}else{if(f=="p"){e([[/\n+/g,"</p><p>"],[/^(.*<\/p>)(<p>)$/,"<p>$1"]])}else{e([[/\n\n/g,"</p><p>"],[/^(.*<\/p>)(<p>)$/,"<p>$1"],[/\n/g,"<br />"]])}}}h.execCommand("mceInsertContent",false,j)}},_legacySupport:function(){var e=this,d=e.editor;d.addCommand("mcePasteWord",function(){d.windowManager.open({file:e.url+"/pasteword.htm",width:parseInt(b(d,"paste_dialog_width")),height:parseInt(b(d,"paste_dialog_height")),inline:1})});if(b(d,"paste_text_use_dialog")){d.addCommand("mcePasteText",function(){d.windowManager.open({file:e.url+"/pastetext.htm",width:parseInt(b(d,"paste_dialog_width")),height:parseInt(b(d,"paste_dialog_height")),inline:1})})}d.addButton("pasteword",{title:"paste.paste_word_desc",cmd:"mcePasteWord"})}});tinymce.PluginManager.add("paste",tinymce.plugins.PastePlugin)})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/editor_plugin_src.js b/program/js/tiny_mce/plugins/paste/editor_plugin_src.js
deleted file mode 100644
index 6f1734299..000000000
--- a/program/js/tiny_mce/plugins/paste/editor_plugin_src.js
+++ /dev/null
@@ -1,887 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- var each = tinymce.each,
- defs = {
- paste_auto_cleanup_on_paste : true,
- paste_enable_default_filters : true,
- paste_block_drop : false,
- paste_retain_style_properties : "none",
- paste_strip_class_attributes : "mso",
- paste_remove_spans : false,
- paste_remove_styles : false,
- paste_remove_styles_if_webkit : true,
- paste_convert_middot_lists : true,
- paste_convert_headers_to_strong : false,
- paste_dialog_width : "450",
- paste_dialog_height : "400",
- paste_max_consecutive_linebreaks: 2,
- paste_text_use_dialog : false,
- paste_text_sticky : false,
- paste_text_sticky_default : false,
- paste_text_notifyalways : false,
- paste_text_linebreaktype : "combined",
- paste_text_replacements : [
- [/\u2026/g, "..."],
- [/[\x93\x94\u201c\u201d]/g, '"'],
- [/[\x60\x91\x92\u2018\u2019]/g, "'"]
- ]
- };
-
- function getParam(ed, name) {
- return ed.getParam(name, defs[name]);
- }
-
- tinymce.create('tinymce.plugins.PastePlugin', {
- init : function(ed, url) {
- var t = this;
-
- t.editor = ed;
- t.url = url;
-
- // Setup plugin events
- t.onPreProcess = new tinymce.util.Dispatcher(t);
- t.onPostProcess = new tinymce.util.Dispatcher(t);
-
- // Register default handlers
- t.onPreProcess.add(t._preProcess);
- t.onPostProcess.add(t._postProcess);
-
- // Register optional preprocess handler
- t.onPreProcess.add(function(pl, o) {
- ed.execCallback('paste_preprocess', pl, o);
- });
-
- // Register optional postprocess
- t.onPostProcess.add(function(pl, o) {
- ed.execCallback('paste_postprocess', pl, o);
- });
-
- ed.onKeyDown.addToTop(function(ed, e) {
- // Block ctrl+v from adding an undo level since the default logic in tinymce.Editor will add that
- if (((tinymce.isMac ? e.metaKey : e.ctrlKey) && e.keyCode == 86) || (e.shiftKey && e.keyCode == 45))
- return false; // Stop other listeners
- });
-
- // Initialize plain text flag
- ed.pasteAsPlainText = getParam(ed, 'paste_text_sticky_default');
-
- // This function executes the process handlers and inserts the contents
- // force_rich overrides plain text mode set by user, important for pasting with execCommand
- function process(o, force_rich) {
- var dom = ed.dom, rng;
-
- // Execute pre process handlers
- t.onPreProcess.dispatch(t, o);
-
- // Create DOM structure
- o.node = dom.create('div', 0, o.content);
-
- // If pasting inside the same element and the contents is only one block
- // remove the block and keep the text since Firefox will copy parts of pre and h1-h6 as a pre element
- if (tinymce.isGecko) {
- rng = ed.selection.getRng(true);
- if (rng.startContainer == rng.endContainer && rng.startContainer.nodeType == 3) {
- // Is only one block node and it doesn't contain word stuff
- if (o.node.childNodes.length === 1 && /^(p|h[1-6]|pre)$/i.test(o.node.firstChild.nodeName) && o.content.indexOf('__MCE_ITEM__') === -1)
- dom.remove(o.node.firstChild, true);
- }
- }
-
- // Execute post process handlers
- t.onPostProcess.dispatch(t, o);
-
- // Serialize content
- o.content = ed.serializer.serialize(o.node, {getInner : 1, forced_root_block : ''});
-
- // Plain text option active?
- if ((!force_rich) && (ed.pasteAsPlainText)) {
- t._insertPlainText(o.content);
-
- if (!getParam(ed, "paste_text_sticky")) {
- ed.pasteAsPlainText = false;
- ed.controlManager.setActive("pastetext", false);
- }
- } else {
- t._insert(o.content);
- }
- }
-
- // Add command for external usage
- ed.addCommand('mceInsertClipboardContent', function(u, o) {
- process(o, true);
- });
-
- if (!getParam(ed, "paste_text_use_dialog")) {
- ed.addCommand('mcePasteText', function(u, v) {
- var cookie = tinymce.util.Cookie;
-
- ed.pasteAsPlainText = !ed.pasteAsPlainText;
- ed.controlManager.setActive('pastetext', ed.pasteAsPlainText);
-
- if ((ed.pasteAsPlainText) && (!cookie.get("tinymcePasteText"))) {
- if (getParam(ed, "paste_text_sticky")) {
- ed.windowManager.alert(ed.translate('paste.plaintext_mode_sticky'));
- } else {
- ed.windowManager.alert(ed.translate('paste.plaintext_mode'));
- }
-
- if (!getParam(ed, "paste_text_notifyalways")) {
- cookie.set("tinymcePasteText", "1", new Date(new Date().getFullYear() + 1, 12, 31))
- }
- }
- });
- }
-
- ed.addButton('pastetext', {title: 'paste.paste_text_desc', cmd: 'mcePasteText'});
- ed.addButton('selectall', {title: 'paste.selectall_desc', cmd: 'selectall'});
-
- // This function grabs the contents from the clipboard by adding a
- // hidden div and placing the caret inside it and after the browser paste
- // is done it grabs that contents and processes that
- function grabContent(e) {
- var n, or, rng, oldRng, sel = ed.selection, dom = ed.dom, body = ed.getBody(), posY, textContent;
-
- // Check if browser supports direct plaintext access
- if (e.clipboardData || dom.doc.dataTransfer) {
- textContent = (e.clipboardData || dom.doc.dataTransfer).getData('Text');
-
- if (ed.pasteAsPlainText) {
- e.preventDefault();
- process({content : dom.encode(textContent).replace(/\r?\n/g, '<br />')});
- return;
- }
- }
-
- if (dom.get('_mcePaste'))
- return;
-
- // Create container to paste into
- n = dom.add(body, 'div', {id : '_mcePaste', 'class' : 'mcePaste', 'data-mce-bogus' : '1'}, '\uFEFF\uFEFF');
-
- // If contentEditable mode we need to find out the position of the closest element
- if (body != ed.getDoc().body)
- posY = dom.getPos(ed.selection.getStart(), body).y;
- else
- posY = body.scrollTop + dom.getViewPort(ed.getWin()).y;
-
- // Styles needs to be applied after the element is added to the document since WebKit will otherwise remove all styles
- // If also needs to be in view on IE or the paste would fail
- dom.setStyles(n, {
- position : 'absolute',
- left : tinymce.isGecko ? -40 : 0, // Need to move it out of site on Gecko since it will othewise display a ghost resize rect for the div
- top : posY - 25,
- width : 1,
- height : 1,
- overflow : 'hidden'
- });
-
- if (tinymce.isIE) {
- // Store away the old range
- oldRng = sel.getRng();
-
- // Select the container
- rng = dom.doc.body.createTextRange();
- rng.moveToElementText(n);
- rng.execCommand('Paste');
-
- // Remove container
- dom.remove(n);
-
- // Check if the contents was changed, if it wasn't then clipboard extraction failed probably due
- // to IE security settings so we pass the junk though better than nothing right
- if (n.innerHTML === '\uFEFF\uFEFF') {
- ed.execCommand('mcePasteWord');
- e.preventDefault();
- return;
- }
-
- // Restore the old range and clear the contents before pasting
- sel.setRng(oldRng);
- sel.setContent('');
-
- // For some odd reason we need to detach the the mceInsertContent call from the paste event
- // It's like IE has a reference to the parent element that you paste in and the selection gets messed up
- // when it tries to restore the selection
- setTimeout(function() {
- // Process contents
- process({content : n.innerHTML});
- }, 0);
-
- // Block the real paste event
- return tinymce.dom.Event.cancel(e);
- } else {
- function block(e) {
- e.preventDefault();
- };
-
- // Block mousedown and click to prevent selection change
- dom.bind(ed.getDoc(), 'mousedown', block);
- dom.bind(ed.getDoc(), 'keydown', block);
-
- or = ed.selection.getRng();
-
- // Move select contents inside DIV
- n = n.firstChild;
- rng = ed.getDoc().createRange();
- rng.setStart(n, 0);
- rng.setEnd(n, 2);
- sel.setRng(rng);
-
- // Wait a while and grab the pasted contents
- window.setTimeout(function() {
- var h = '', nl;
-
- // Paste divs duplicated in paste divs seems to happen when you paste plain text so lets first look for that broken behavior in WebKit
- if (!dom.select('div.mcePaste > div.mcePaste').length) {
- nl = dom.select('div.mcePaste');
-
- // WebKit will split the div into multiple ones so this will loop through then all and join them to get the whole HTML string
- each(nl, function(n) {
- var child = n.firstChild;
-
- // WebKit inserts a DIV container with lots of odd styles
- if (child && child.nodeName == 'DIV' && child.style.marginTop && child.style.backgroundColor) {
- dom.remove(child, 1);
- }
-
- // Remove apply style spans
- each(dom.select('span.Apple-style-span', n), function(n) {
- dom.remove(n, 1);
- });
-
- // Remove bogus br elements
- each(dom.select('br[data-mce-bogus]', n), function(n) {
- dom.remove(n);
- });
-
- // WebKit will make a copy of the DIV for each line of plain text pasted and insert them into the DIV
- if (n.parentNode.className != 'mcePaste')
- h += n.innerHTML;
- });
- } else {
- // Found WebKit weirdness so force the content into paragraphs this seems to happen when you paste plain text from Nodepad etc
- // So this logic will replace double enter with paragraphs and single enter with br so it kind of looks the same
- h = '<p>' + dom.encode(textContent).replace(/\r?\n\r?\n/g, '</p><p>').replace(/\r?\n/g, '<br />') + '</p>';
- }
-
- // Remove the nodes
- each(dom.select('div.mcePaste'), function(n) {
- dom.remove(n);
- });
-
- // Restore the old selection
- if (or)
- sel.setRng(or);
-
- process({content : h});
-
- // Unblock events ones we got the contents
- dom.unbind(ed.getDoc(), 'mousedown', block);
- dom.unbind(ed.getDoc(), 'keydown', block);
- }, 0);
- }
- }
-
- // Check if we should use the new auto process method
- if (getParam(ed, "paste_auto_cleanup_on_paste")) {
- // Is it's Opera or older FF use key handler
- if (tinymce.isOpera || /Firefox\/2/.test(navigator.userAgent)) {
- ed.onKeyDown.addToTop(function(ed, e) {
- if (((tinymce.isMac ? e.metaKey : e.ctrlKey) && e.keyCode == 86) || (e.shiftKey && e.keyCode == 45))
- grabContent(e);
- });
- } else {
- // Grab contents on paste event on Gecko and WebKit
- ed.onPaste.addToTop(function(ed, e) {
- return grabContent(e);
- });
- }
- }
-
- ed.onInit.add(function() {
- ed.controlManager.setActive("pastetext", ed.pasteAsPlainText);
-
- // Block all drag/drop events
- if (getParam(ed, "paste_block_drop")) {
- ed.dom.bind(ed.getBody(), ['dragend', 'dragover', 'draggesture', 'dragdrop', 'drop', 'drag'], function(e) {
- e.preventDefault();
- e.stopPropagation();
-
- return false;
- });
- }
- });
-
- // Add legacy support
- t._legacySupport();
- },
-
- getInfo : function() {
- return {
- longname : 'Paste text/word',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- },
-
- _preProcess : function(pl, o) {
- var ed = this.editor,
- h = o.content,
- grep = tinymce.grep,
- explode = tinymce.explode,
- trim = tinymce.trim,
- len, stripClass;
-
- //console.log('Before preprocess:' + o.content);
-
- function process(items) {
- each(items, function(v) {
- // Remove or replace
- if (v.constructor == RegExp)
- h = h.replace(v, '');
- else
- h = h.replace(v[0], v[1]);
- });
- }
-
- if (ed.settings.paste_enable_default_filters == false) {
- return;
- }
-
- // IE9 adds BRs before/after block elements when contents is pasted from word or for example another browser
- if (tinymce.isIE && document.documentMode >= 9 && /<(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)/.test(o.content)) {
- // IE9 adds BRs before/after block elements when contents is pasted from word or for example another browser
- process([[/(?:<br>&nbsp;[\s\r\n]+|<br>)*(<\/?(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)[^>]*>)(?:<br>&nbsp;[\s\r\n]+|<br>)*/g, '$1']]);
-
- // IE9 also adds an extra BR element for each soft-linefeed and it also adds a BR for each word wrap break
- process([
- [/<br><br>/g, '<BR><BR>'], // Replace multiple BR elements with uppercase BR to keep them intact
- [/<br>/g, ' '], // Replace single br elements with space since they are word wrap BR:s
- [/<BR><BR>/g, '<br>'] // Replace back the double brs but into a single BR
- ]);
- }
-
- // Detect Word content and process it more aggressive
- if (/class="?Mso|style="[^"]*\bmso-|w:WordDocument/i.test(h) || o.wordContent) {
- o.wordContent = true; // Mark the pasted contents as word specific content
- //console.log('Word contents detected.');
-
- // Process away some basic content
- process([
- /^\s*(&nbsp;)+/gi, // &nbsp; entities at the start of contents
- /(&nbsp;|<br[^>]*>)+\s*$/gi // &nbsp; entities at the end of contents
- ]);
-
- if (getParam(ed, "paste_convert_headers_to_strong")) {
- h = h.replace(/<p [^>]*class="?MsoHeading"?[^>]*>(.*?)<\/p>/gi, "<p><strong>$1</strong></p>");
- }
-
- if (getParam(ed, "paste_convert_middot_lists")) {
- process([
- [/<!--\[if !supportLists\]-->/gi, '$&__MCE_ITEM__'], // Convert supportLists to a list item marker
- [/(<span[^>]+(?:mso-list:|:\s*symbol)[^>]+>)/gi, '$1__MCE_ITEM__'], // Convert mso-list and symbol spans to item markers
- [/(<p[^>]+(?:MsoListParagraph)[^>]+>)/gi, '$1__MCE_ITEM__'] // Convert mso-list and symbol paragraphs to item markers (FF)
- ]);
- }
-
- process([
- // Word comments like conditional comments etc
- /<!--[\s\S]+?-->/gi,
-
- // Remove comments, scripts (e.g., msoShowComment), XML tag, VML content, MS Office namespaced tags, and a few other tags
- /<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,
-
- // Convert <s> into <strike> for line-though
- [/<(\/?)s>/gi, "<$1strike>"],
-
- // Replace nsbp entites to char since it's easier to handle
- [/&nbsp;/gi, "\u00a0"]
- ]);
-
- // Remove bad attributes, with or without quotes, ensuring that attribute text is really inside a tag.
- // If JavaScript had a RegExp look-behind, we could have integrated this with the last process() array and got rid of the loop. But alas, it does not, so we cannot.
- do {
- len = h.length;
- // Don't remove the type attribute for lists so that non-default list types display correctly.
- h = h.replace(/(<?!(ol|ul)[^>]*\s)(?:id|name|language|type|on\w+|\w+:\w+)=(?:"[^"]*"|\w+)\s?/gi, "$1");
- h = h.replace(/(<(ol|ul)[^>]*\s)(?:id|name|language|on\w+|\w+:\w+)=(?:"[^"]*"|\w+)\s?/gi, "$1");
- } while (len != h.length);
-
- // Remove all spans if no styles is to be retained
- if (getParam(ed, "paste_retain_style_properties").replace(/^none$/i, "").length == 0) {
- h = h.replace(/<\/?span[^>]*>/gi, "");
- } else {
- // We're keeping styles, so at least clean them up.
- // CSS Reference: http://msdn.microsoft.com/en-us/library/aa155477.aspx
-
- process([
- // Convert <span style="mso-spacerun:yes">___</span> to string of alternating breaking/non-breaking spaces of same length
- [/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,
- function(str, spaces) {
- return (spaces.length > 0)? spaces.replace(/./, " ").slice(Math.floor(spaces.length/2)).split("").join("\u00a0") : "";
- }
- ],
-
- // Examine all styles: delete junk, transform some, and keep the rest
- [/(<[a-z][^>]*)\sstyle="([^"]*)"/gi,
- function(str, tag, style) {
- var n = [],
- i = 0,
- s = explode(trim(style).replace(/&quot;/gi, "'"), ";");
-
- // Examine each style definition within the tag's style attribute
- each(s, function(v) {
- var name, value,
- parts = explode(v, ":");
-
- function ensureUnits(v) {
- return v + ((v !== "0") && (/\d$/.test(v)))? "px" : "";
- }
-
- if (parts.length == 2) {
- name = parts[0].toLowerCase();
- value = parts[1].toLowerCase();
-
- // Translate certain MS Office styles into their CSS equivalents
- switch (name) {
- case "mso-padding-alt":
- case "mso-padding-top-alt":
- case "mso-padding-right-alt":
- case "mso-padding-bottom-alt":
- case "mso-padding-left-alt":
- case "mso-margin-alt":
- case "mso-margin-top-alt":
- case "mso-margin-right-alt":
- case "mso-margin-bottom-alt":
- case "mso-margin-left-alt":
- case "mso-table-layout-alt":
- case "mso-height":
- case "mso-width":
- case "mso-vertical-align-alt":
- n[i++] = name.replace(/^mso-|-alt$/g, "") + ":" + ensureUnits(value);
- return;
-
- case "horiz-align":
- n[i++] = "text-align:" + value;
- return;
-
- case "vert-align":
- n[i++] = "vertical-align:" + value;
- return;
-
- case "font-color":
- case "mso-foreground":
- n[i++] = "color:" + value;
- return;
-
- case "mso-background":
- case "mso-highlight":
- n[i++] = "background:" + value;
- return;
-
- case "mso-default-height":
- n[i++] = "min-height:" + ensureUnits(value);
- return;
-
- case "mso-default-width":
- n[i++] = "min-width:" + ensureUnits(value);
- return;
-
- case "mso-padding-between-alt":
- n[i++] = "border-collapse:separate;border-spacing:" + ensureUnits(value);
- return;
-
- case "text-line-through":
- if ((value == "single") || (value == "double")) {
- n[i++] = "text-decoration:line-through";
- }
- return;
-
- case "mso-zero-height":
- if (value == "yes") {
- n[i++] = "display:none";
- }
- return;
- }
-
- // Eliminate all MS Office style definitions that have no CSS equivalent by examining the first characters in the name
- if (/^(mso|column|font-emph|lang|layout|line-break|list-image|nav|panose|punct|row|ruby|sep|size|src|tab-|table-border|text-(?!align|decor|indent|trans)|top-bar|version|vnd|word-break)/.test(name)) {
- return;
- }
-
- // If it reached this point, it must be a valid CSS style
- n[i++] = name + ":" + parts[1]; // Lower-case name, but keep value case
- }
- });
-
- // If style attribute contained any valid styles the re-write it; otherwise delete style attribute.
- if (i > 0) {
- return tag + ' style="' + n.join(';') + '"';
- } else {
- return tag;
- }
- }
- ]
- ]);
- }
- }
-
- // Replace headers with <strong>
- if (getParam(ed, "paste_convert_headers_to_strong")) {
- process([
- [/<h[1-6][^>]*>/gi, "<p><strong>"],
- [/<\/h[1-6][^>]*>/gi, "</strong></p>"]
- ]);
- }
-
- process([
- // Copy paste from Java like Open Office will produce this junk on FF
- [/Version:[\d.]+\nStartHTML:\d+\nEndHTML:\d+\nStartFragment:\d+\nEndFragment:\d+/gi, '']
- ]);
-
- // Class attribute options are: leave all as-is ("none"), remove all ("all"), or remove only those starting with mso ("mso").
- // Note:- paste_strip_class_attributes: "none", verify_css_classes: true is also a good variation.
- stripClass = getParam(ed, "paste_strip_class_attributes");
-
- if (stripClass !== "none") {
- function removeClasses(match, g1) {
- if (stripClass === "all")
- return '';
-
- var cls = grep(explode(g1.replace(/^(["'])(.*)\1$/, "$2"), " "),
- function(v) {
- return (/^(?!mso)/i.test(v));
- }
- );
-
- return cls.length ? ' class="' + cls.join(" ") + '"' : '';
- };
-
- h = h.replace(/ class="([^"]+)"/gi, removeClasses);
- h = h.replace(/ class=([\-\w]+)/gi, removeClasses);
- }
-
- // Remove spans option
- if (getParam(ed, "paste_remove_spans")) {
- h = h.replace(/<\/?span[^>]*>/gi, "");
- }
-
- //console.log('After preprocess:' + h);
-
- o.content = h;
- },
-
- /**
- * Various post process items.
- */
- _postProcess : function(pl, o) {
- var t = this, ed = t.editor, dom = ed.dom, styleProps;
-
- if (ed.settings.paste_enable_default_filters == false) {
- return;
- }
-
- if (o.wordContent) {
- // Remove named anchors or TOC links
- each(dom.select('a', o.node), function(a) {
- if (!a.href || a.href.indexOf('#_Toc') != -1)
- dom.remove(a, 1);
- });
-
- if (getParam(ed, "paste_convert_middot_lists")) {
- t._convertLists(pl, o);
- }
-
- // Process styles
- styleProps = getParam(ed, "paste_retain_style_properties"); // retained properties
-
- // Process only if a string was specified and not equal to "all" or "*"
- if ((tinymce.is(styleProps, "string")) && (styleProps !== "all") && (styleProps !== "*")) {
- styleProps = tinymce.explode(styleProps.replace(/^none$/i, ""));
-
- // Retains some style properties
- each(dom.select('*', o.node), function(el) {
- var newStyle = {}, npc = 0, i, sp, sv;
-
- // Store a subset of the existing styles
- if (styleProps) {
- for (i = 0; i < styleProps.length; i++) {
- sp = styleProps[i];
- sv = dom.getStyle(el, sp);
-
- if (sv) {
- newStyle[sp] = sv;
- npc++;
- }
- }
- }
-
- // Remove all of the existing styles
- dom.setAttrib(el, 'style', '');
-
- if (styleProps && npc > 0)
- dom.setStyles(el, newStyle); // Add back the stored subset of styles
- else // Remove empty span tags that do not have class attributes
- if (el.nodeName == 'SPAN' && !el.className)
- dom.remove(el, true);
- });
- }
- }
-
- // Remove all style information or only specifically on WebKit to avoid the style bug on that browser
- if (getParam(ed, "paste_remove_styles") || (getParam(ed, "paste_remove_styles_if_webkit") && tinymce.isWebKit)) {
- each(dom.select('*[style]', o.node), function(el) {
- el.removeAttribute('style');
- el.removeAttribute('data-mce-style');
- });
- } else {
- if (tinymce.isWebKit) {
- // We need to compress the styles on WebKit since if you paste <img border="0" /> it will become <img border="0" style="... lots of junk ..." />
- // Removing the mce_style that contains the real value will force the Serializer engine to compress the styles
- each(dom.select('*', o.node), function(el) {
- el.removeAttribute('data-mce-style');
- });
- }
- }
- },
-
- /**
- * Converts the most common bullet and number formats in Office into a real semantic UL/LI list.
- */
- _convertLists : function(pl, o) {
- var dom = pl.editor.dom, listElm, li, lastMargin = -1, margin, levels = [], lastType, html;
-
- // Convert middot lists into real semantic lists
- each(dom.select('p', o.node), function(p) {
- var sib, val = '', type, html, idx, parents;
-
- // Get text node value at beginning of paragraph
- for (sib = p.firstChild; sib && sib.nodeType == 3; sib = sib.nextSibling)
- val += sib.nodeValue;
-
- val = p.innerHTML.replace(/<\/?\w+[^>]*>/gi, '').replace(/&nbsp;/g, '\u00a0');
-
- // Detect unordered lists look for bullets
- if (/^(__MCE_ITEM__)+[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*\u00a0*/.test(val))
- type = 'ul';
-
- // Detect ordered lists 1., a. or ixv.
- if (/^__MCE_ITEM__\s*\w+\.\s*\u00a0+/.test(val))
- type = 'ol';
-
- // Check if node value matches the list pattern: o&nbsp;&nbsp;
- if (type) {
- margin = parseFloat(p.style.marginLeft || 0);
-
- if (margin > lastMargin)
- levels.push(margin);
-
- if (!listElm || type != lastType) {
- listElm = dom.create(type);
- dom.insertAfter(listElm, p);
- } else {
- // Nested list element
- if (margin > lastMargin) {
- listElm = li.appendChild(dom.create(type));
- } else if (margin < lastMargin) {
- // Find parent level based on margin value
- idx = tinymce.inArray(levels, margin);
- parents = dom.getParents(listElm.parentNode, type);
- listElm = parents[parents.length - 1 - idx] || listElm;
- }
- }
-
- // Remove middot or number spans if they exists
- each(dom.select('span', p), function(span) {
- var html = span.innerHTML.replace(/<\/?\w+[^>]*>/gi, '');
-
- // Remove span with the middot or the number
- if (type == 'ul' && /^__MCE_ITEM__[\u2022\u00b7\u00a7\u00d8o\u25CF]/.test(html))
- dom.remove(span);
- else if (/^__MCE_ITEM__[\s\S]*\w+\.(&nbsp;|\u00a0)*\s*/.test(html))
- dom.remove(span);
- });
-
- html = p.innerHTML;
-
- // Remove middot/list items
- if (type == 'ul')
- html = p.innerHTML.replace(/__MCE_ITEM__/g, '').replace(/^[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*(&nbsp;|\u00a0)+\s*/, '');
- else
- html = p.innerHTML.replace(/__MCE_ITEM__/g, '').replace(/^\s*\w+\.(&nbsp;|\u00a0)+\s*/, '');
-
- // Create li and add paragraph data into the new li
- li = listElm.appendChild(dom.create('li', 0, html));
- dom.remove(p);
-
- lastMargin = margin;
- lastType = type;
- } else
- listElm = lastMargin = 0; // End list element
- });
-
- // Remove any left over makers
- html = o.node.innerHTML;
- if (html.indexOf('__MCE_ITEM__') != -1)
- o.node.innerHTML = html.replace(/__MCE_ITEM__/g, '');
- },
-
- /**
- * Inserts the specified contents at the caret position.
- */
- _insert : function(h, skip_undo) {
- var ed = this.editor, r = ed.selection.getRng();
-
- // First delete the contents seems to work better on WebKit when the selection spans multiple list items or multiple table cells.
- if (!ed.selection.isCollapsed() && r.startContainer != r.endContainer)
- ed.getDoc().execCommand('Delete', false, null);
-
- ed.execCommand('mceInsertContent', false, h, {skip_undo : skip_undo});
- },
-
- /**
- * Instead of the old plain text method which tried to re-create a paste operation, the
- * new approach adds a plain text mode toggle switch that changes the behavior of paste.
- * This function is passed the same input that the regular paste plugin produces.
- * It performs additional scrubbing and produces (and inserts) the plain text.
- * This approach leverages all of the great existing functionality in the paste
- * plugin, and requires minimal changes to add the new functionality.
- * Speednet - June 2009
- */
- _insertPlainText : function(content) {
- var ed = this.editor,
- linebr = getParam(ed, "paste_text_linebreaktype"),
- rl = getParam(ed, "paste_text_replacements"),
- is = tinymce.is;
-
- function process(items) {
- each(items, function(v) {
- if (v.constructor == RegExp)
- content = content.replace(v, "");
- else
- content = content.replace(v[0], v[1]);
- });
- };
-
- if ((typeof(content) === "string") && (content.length > 0)) {
- // If HTML content with line-breaking tags, then remove all cr/lf chars because only tags will break a line
- if (/<(?:p|br|h[1-6]|ul|ol|dl|table|t[rdh]|div|blockquote|fieldset|pre|address|center)[^>]*>/i.test(content)) {
- process([
- /[\n\r]+/g
- ]);
- } else {
- // Otherwise just get rid of carriage returns (only need linefeeds)
- process([
- /\r+/g
- ]);
- }
-
- process([
- [/<\/(?:p|h[1-6]|ul|ol|dl|table|div|blockquote|fieldset|pre|address|center)>/gi, "\n\n"], // Block tags get a blank line after them
- [/<br[^>]*>|<\/tr>/gi, "\n"], // Single linebreak for <br /> tags and table rows
- [/<\/t[dh]>\s*<t[dh][^>]*>/gi, "\t"], // Table cells get tabs betweem them
- /<[a-z!\/?][^>]*>/gi, // Delete all remaining tags
- [/&nbsp;/gi, " "], // Convert non-break spaces to regular spaces (remember, *plain text*)
- [/(?:(?!\n)\s)*(\n+)(?:(?!\n)\s)*/gi, "$1"] // Cool little RegExp deletes whitespace around linebreak chars.
- ]);
-
- var maxLinebreaks = Number(getParam(ed, "paste_max_consecutive_linebreaks"));
- if (maxLinebreaks > -1) {
- var maxLinebreaksRegex = new RegExp("\n{" + (maxLinebreaks + 1) + ",}", "g");
- var linebreakReplacement = "";
-
- while (linebreakReplacement.length < maxLinebreaks) {
- linebreakReplacement += "\n";
- }
-
- process([
- [maxLinebreaksRegex, linebreakReplacement] // Limit max consecutive linebreaks
- ]);
- }
-
- content = ed.dom.decode(tinymce.html.Entities.encodeRaw(content));
-
- // Perform default or custom replacements
- if (is(rl, "array")) {
- process(rl);
- } else if (is(rl, "string")) {
- process(new RegExp(rl, "gi"));
- }
-
- // Treat paragraphs as specified in the config
- if (linebr == "none") {
- // Convert all line breaks to space
- process([
- [/\n+/g, " "]
- ]);
- } else if (linebr == "br") {
- // Convert all line breaks to <br />
- process([
- [/\n/g, "<br />"]
- ]);
- } else if (linebr == "p") {
- // Convert all line breaks to <p>...</p>
- process([
- [/\n+/g, "</p><p>"],
- [/^(.*<\/p>)(<p>)$/, '<p>$1']
- ]);
- } else {
- // defaults to "combined"
- // Convert single line breaks to <br /> and double line breaks to <p>...</p>
- process([
- [/\n\n/g, "</p><p>"],
- [/^(.*<\/p>)(<p>)$/, '<p>$1'],
- [/\n/g, "<br />"]
- ]);
- }
-
- ed.execCommand('mceInsertContent', false, content);
- }
- },
-
- /**
- * This method will open the old style paste dialogs. Some users might want the old behavior but still use the new cleanup engine.
- */
- _legacySupport : function() {
- var t = this, ed = t.editor;
-
- // Register command(s) for backwards compatibility
- ed.addCommand("mcePasteWord", function() {
- ed.windowManager.open({
- file: t.url + "/pasteword.htm",
- width: parseInt(getParam(ed, "paste_dialog_width")),
- height: parseInt(getParam(ed, "paste_dialog_height")),
- inline: 1
- });
- });
-
- if (getParam(ed, "paste_text_use_dialog")) {
- ed.addCommand("mcePasteText", function() {
- ed.windowManager.open({
- file : t.url + "/pastetext.htm",
- width: parseInt(getParam(ed, "paste_dialog_width")),
- height: parseInt(getParam(ed, "paste_dialog_height")),
- inline : 1
- });
- });
- }
-
- // Register button for backwards compatibility
- ed.addButton("pasteword", {title : "paste.paste_word_desc", cmd : "mcePasteWord"});
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add("paste", tinymce.plugins.PastePlugin);
-})();
diff --git a/program/js/tiny_mce/plugins/paste/js/pastetext.js b/program/js/tiny_mce/plugins/paste/js/pastetext.js
deleted file mode 100644
index c524f9eb0..000000000
--- a/program/js/tiny_mce/plugins/paste/js/pastetext.js
+++ /dev/null
@@ -1,36 +0,0 @@
-tinyMCEPopup.requireLangPack();
-
-var PasteTextDialog = {
- init : function() {
- this.resize();
- },
-
- insert : function() {
- var h = tinyMCEPopup.dom.encode(document.getElementById('content').value), lines;
-
- // Convert linebreaks into paragraphs
- if (document.getElementById('linebreaks').checked) {
- lines = h.split(/\r?\n/);
- if (lines.length > 1) {
- h = '';
- tinymce.each(lines, function(row) {
- h += '<p>' + row + '</p>';
- });
- }
- }
-
- tinyMCEPopup.editor.execCommand('mceInsertClipboardContent', false, {content : h});
- tinyMCEPopup.close();
- },
-
- resize : function() {
- var vp = tinyMCEPopup.dom.getViewPort(window), el;
-
- el = document.getElementById('content');
-
- el.style.width = (vp.w - 20) + 'px';
- el.style.height = (vp.h - 90) + 'px';
- }
-};
-
-tinyMCEPopup.onInit.add(PasteTextDialog.init, PasteTextDialog);
diff --git a/program/js/tiny_mce/plugins/paste/js/pasteword.js b/program/js/tiny_mce/plugins/paste/js/pasteword.js
deleted file mode 100644
index a52731c36..000000000
--- a/program/js/tiny_mce/plugins/paste/js/pasteword.js
+++ /dev/null
@@ -1,51 +0,0 @@
-tinyMCEPopup.requireLangPack();
-
-var PasteWordDialog = {
- init : function() {
- var ed = tinyMCEPopup.editor, el = document.getElementById('iframecontainer'), ifr, doc, css, cssHTML = '';
-
- // Create iframe
- el.innerHTML = '<iframe id="iframe" src="javascript:\'\';" frameBorder="0" style="border: 1px solid gray"></iframe>';
- ifr = document.getElementById('iframe');
- doc = ifr.contentWindow.document;
-
- // Force absolute CSS urls
- css = [ed.baseURI.toAbsolute("themes/" + ed.settings.theme + "/skins/" + ed.settings.skin + "/content.css")];
- css = css.concat(tinymce.explode(ed.settings.content_css) || []);
- tinymce.each(css, function(u) {
- cssHTML += '<link href="' + ed.documentBaseURI.toAbsolute('' + u) + '" rel="stylesheet" type="text/css" />';
- });
-
- // Write content into iframe
- doc.open();
- doc.write('<html><head>' + cssHTML + '</head><body class="mceContentBody" spellcheck="false"></body></html>');
- doc.close();
-
- doc.designMode = 'on';
- this.resize();
-
- window.setTimeout(function() {
- ifr.contentWindow.focus();
- }, 10);
- },
-
- insert : function() {
- var h = document.getElementById('iframe').contentWindow.document.body.innerHTML;
-
- tinyMCEPopup.editor.execCommand('mceInsertClipboardContent', false, {content : h, wordContent : true});
- tinyMCEPopup.close();
- },
-
- resize : function() {
- var vp = tinyMCEPopup.dom.getViewPort(window), el;
-
- el = document.getElementById('iframe');
-
- if (el) {
- el.style.width = (vp.w - 20) + 'px';
- el.style.height = (vp.h - 90) + 'px';
- }
- }
-};
-
-tinyMCEPopup.onInit.add(PasteWordDialog.init, PasteWordDialog);
diff --git a/program/js/tiny_mce/plugins/paste/langs/ar_dlg.js b/program/js/tiny_mce/plugins/paste/langs/ar_dlg.js
deleted file mode 100644
index f4fb2aba2..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/ar_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ar.paste_dlg',{"word_title":"\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0639\u0644\u0649 \u0644\u0648\u062d\u0629 \u0627\u0644\u0645\u0641\u0627\u062a\u064a\u062d \u0644\u0644\u0635\u0642 \u0627\u0644\u0646\u0635 \u0641\u064a \u0627\u0644\u0625\u0637\u0627\u0631.( CTRL+V )","text_linebreaks":"\u0627\u062d\u062a\u0641\u0638 \u0628\u0641\u0648\u0627\u0635\u0644 \u0627\u0644\u0623\u0633\u0637\u0631","text_title":"\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0639\u0644\u0649 \u0644\u0648\u062d\u0629 \u0627\u0644\u0645\u0641\u0627\u062a\u064a\u062d \u0644\u0644\u0635\u0642 \u0627\u0644\u0646\u0635 \u0641\u064a \u0627\u0644\u0625\u0637\u0627\u0631.( CTRL+V )"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/az_dlg.js b/program/js/tiny_mce/plugins/paste/langs/az_dlg.js
deleted file mode 100644
index 98a7fe1ce..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/az_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('az.paste_dlg',{"word_title":"P\u0259nc\u0259r\u0259y\u0259 s\u00f6z \u0259lav\u0259 etm\u0259k \u00fc\u00e7\u00fcn CTRL+V klavi\u015f birl\u0259\u015fm\u0259sini istifad\u0259 edin.","text_linebreaks":"S\u0259tr s\u0131nmalar\u0131n\u0131 saxla","text_title":"P\u0259nc\u0259r\u0259y\u0259 m\u0259tn \u0259lav\u0259 etm\u0259k \u00fc\u00e7\u00fcn CTRL+V klavi\u015f birl\u0259\u015fm\u0259sini istifad\u0259 edin."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/bg_dlg.js b/program/js/tiny_mce/plugins/paste/langs/bg_dlg.js
deleted file mode 100644
index 722ecdc56..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/bg_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bg.paste_dlg',{"word_title":"\u0418\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0439\u0442\u0435 CTRL V \u043e\u0442 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430\u0442\u0430, \u0437\u0430 \u0434\u0430 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446\u0430.","text_linebreaks":"\u0417\u0430\u043f\u0430\u0437\u0438 \u0437\u043d\u0430\u0446\u0438\u0442\u0435 \u0437\u0430 \u043d\u043e\u0432\u0438 \u0440\u0435\u0434\u043e\u0432\u0435","text_title":"\u0418\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0439\u0442\u0435 CTRL V \u043d\u0430 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430\u0442\u0430, \u0437\u0430 \u0434\u0430 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446\u0430."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/bn_dlg.js b/program/js/tiny_mce/plugins/paste/langs/bn_dlg.js
deleted file mode 100644
index 592080db9..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/bn_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bn.paste_dlg',{"word_title":"Use CTRL+V on your keyboard to paste the text into the window.","text_linebreaks":"Keep linebreaks","text_title":"Use CTRL+V on your keyboard to paste the text into the window."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/br_dlg.js b/program/js/tiny_mce/plugins/paste/langs/br_dlg.js
deleted file mode 100644
index 41832e433..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/br_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('br.paste_dlg',{"word_title":"Use CTRL+V para colar o texto na janela.","text_linebreaks":"Manter quebras de linha","text_title":"Use CTRL+V para colar o texto na janela."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/bs_dlg.js b/program/js/tiny_mce/plugins/paste/langs/bs_dlg.js
deleted file mode 100644
index 0e6c62cb5..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/bs_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bs.paste_dlg',{"word_title":"Koristite CTRL+V na tipkovnici da zalijepite tekst u prozor.","text_linebreaks":"Zadr\u017ei prijelome","text_title":"Koristite CTRL+V na tipkovnici da zalijepite tekst u prozor."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/ca_dlg.js b/program/js/tiny_mce/plugins/paste/langs/ca_dlg.js
deleted file mode 100644
index ac180fb11..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/ca_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ca.paste_dlg',{"word_title":"Amb el teclat utilitzeu CTRL+V per a enganxar el text dins la finestra.","text_linebreaks":"Conserva els salts de l\u00ednia","text_title":"Amb el teclat utilitzeu CTRL+V per a enganxar el text dins la finestra."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/cs_dlg.js b/program/js/tiny_mce/plugins/paste/langs/cs_dlg.js
deleted file mode 100644
index 66936bbab..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/cs_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('cs.paste_dlg',{"word_title":"Pou\u017eijte CTRL+V pro vlo\u017een\u00ed textu do okna.","text_linebreaks":"Zachovat zalamov\u00e1n\u00ed \u0159\u00e1dk\u016f","text_title":"Pou\u017eijte CTRL+V pro vlo\u017een\u00ed textu do okna."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/cy_dlg.js b/program/js/tiny_mce/plugins/paste/langs/cy_dlg.js
deleted file mode 100644
index d1c91b9aa..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/cy_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('cy.paste_dlg',{"word_title":"Defnyddiwch CTRL+V ar eich bysellfwrdd i ludo\'r testun i fewn i\'r ffenest.","text_linebreaks":"Cadw toriadau llinell","text_title":"Defnyddiwch CTRL+V ar eich bysellfwrdd i ludo\'r testun i fewn i\'r ffenest."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/da_dlg.js b/program/js/tiny_mce/plugins/paste/langs/da_dlg.js
deleted file mode 100644
index 7e1b96183..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/da_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('da.paste_dlg',{"word_title":"Anvend CTRL+V p\u00e5 tastaturet for at inds\u00e6tte teksten.","text_linebreaks":"Bevar linieskift","text_title":"Anvend CTRL+V p\u00e5 tastaturet for at inds\u00e6tte teksten."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/de_dlg.js b/program/js/tiny_mce/plugins/paste/langs/de_dlg.js
deleted file mode 100644
index 84b9bc620..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/de_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('de.paste_dlg',{"word_title":"Dr\u00fccken Sie auf Ihrer Tastatur Strg+V, um den Text einzuf\u00fcgen.","text_linebreaks":"Zeilenumbr\u00fcche beibehalten","text_title":"Dr\u00fccken Sie auf Ihrer Tastatur Strg+V, um den Text einzuf\u00fcgen."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/el_dlg.js b/program/js/tiny_mce/plugins/paste/langs/el_dlg.js
deleted file mode 100644
index 563ecc761..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/el_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('el.paste_dlg',{"word_title":"\u03a7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03c4\u03b5 CTRL+V \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03ba\u03ac\u03bd\u03b5\u03c4\u03b5 \u03b5\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7 \u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5 \u03c3\u03c4\u03bf \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf.","text_linebreaks":"\u039d\u03b1 \u03ba\u03c1\u03b1\u03c4\u03b7\u03b8\u03bf\u03cd\u03bd \u03c4\u03b1 linebreaks","text_title":"\u03a7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03c4\u03b5 CTRL+V \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03ba\u03ac\u03bd\u03b5\u03c4\u03b5 \u03b5\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7 \u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5 \u03c3\u03c4\u03bf \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/en_dlg.js b/program/js/tiny_mce/plugins/paste/langs/en_dlg.js
deleted file mode 100644
index bc74daf85..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/en_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('en.paste_dlg',{"word_title":"Use Ctrl+V on your keyboard to paste the text into the window.","text_linebreaks":"Keep Linebreaks","text_title":"Use Ctrl+V on your keyboard to paste the text into the window."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/eo_dlg.js b/program/js/tiny_mce/plugins/paste/langs/eo_dlg.js
deleted file mode 100644
index e6613b739..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/eo_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('eo.paste_dlg',{"word_title":"Uzu CTRL V por alglui tekston en la fenestron.","text_linebreaks":"Konservi linisaltojn","text_title":"Uzu CTRL V por alglui tekston en la fenestron."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/es_dlg.js b/program/js/tiny_mce/plugins/paste/langs/es_dlg.js
deleted file mode 100644
index aa54f98cc..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/es_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('es.paste_dlg',{"word_title":"Use CTRL+V en su teclado para pegar el texto en la ventana.","text_linebreaks":"Mantener saltos de l\u00ednea","text_title":"Use CTRL+V en su teclado para pegar el texto en la ventana."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/et_dlg.js b/program/js/tiny_mce/plugins/paste/langs/et_dlg.js
deleted file mode 100644
index 8949d832d..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/et_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('et.paste_dlg',{"word_title":"Vajuta CTRL+V oma klaviatuuril teksti aknasse kleepimiseks.","text_linebreaks":"J\u00e4ta reavahetused","text_title":"Vajuta CTRL+V oma klaviatuuril teksti aknasse kleepimiseks."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/eu_dlg.js b/program/js/tiny_mce/plugins/paste/langs/eu_dlg.js
deleted file mode 100644
index 3296bd5b1..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/eu_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('eu.paste_dlg',{"word_title":"Erabili CTRL+V testua lehioan itsasteko.","text_linebreaks":"Mantendu lerro-jauziak","text_title":"Erabili CTRL+V testua lehioan itsasteko."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/fa_dlg.js b/program/js/tiny_mce/plugins/paste/langs/fa_dlg.js
deleted file mode 100644
index cb554bcad..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/fa_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fa.paste_dlg',{"word_title":"\u062c\u0647\u062a \u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u0645\u062a\u0646 \u062f\u0631 \u067e\u0646\u062c\u0631\u0647 \u0627\u0632 CTRL+V \u0628\u0631 \u0631\u0648\u06cc \u0635\u0641\u062d\u0647 \u06a9\u0644\u06cc\u062f \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0645\u0627\u0626\u06cc\u062f.","text_linebreaks":"\u062d\u0641\u0638 \u0642\u0637\u0639 \u062e\u0637\u0648\u0637","text_title":"\u062c\u0647\u062a \u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u0645\u062a\u0646 \u062f\u0631 \u067e\u0646\u062c\u0631\u0647 \u0627\u0632 CTRL+V \u0628\u0631 \u0631\u0648\u06cc \u0635\u0641\u062d\u0647 \u06a9\u0644\u06cc\u062f \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0645\u0627\u0626\u06cc\u062f."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/fi_dlg.js b/program/js/tiny_mce/plugins/paste/langs/fi_dlg.js
deleted file mode 100644
index 530e507cd..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/fi_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fi.paste_dlg',{"word_title":"Paina Ctrl+V liitt\u00e4\u00e4ksesi sis\u00e4ll\u00f6n ikkunaan.","text_linebreaks":"S\u00e4ilyt\u00e4 rivinvaihdot","text_title":"Paina Ctrl+V liitt\u00e4\u00e4ksesi sis\u00e4ll\u00f6n ikkunaan."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/fr_dlg.js b/program/js/tiny_mce/plugins/paste/langs/fr_dlg.js
deleted file mode 100644
index acc5d639f..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/fr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fr.paste_dlg',{"word_title":"Utilisez CTRL+V sur votre clavier pour coller le texte dans la fen\u00eatre.","text_linebreaks":"Conserver les retours \u00e0 la ligne","text_title":"Utilisez CTRL+V sur votre clavier pour coller le texte dans la fen\u00eatre."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/gl_dlg.js b/program/js/tiny_mce/plugins/paste/langs/gl_dlg.js
deleted file mode 100644
index 3fc652da5..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/gl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('gl.paste_dlg',{"word_title":"Use CTRL+V no teclado pra pega-lo texto na vent\u00e1.","text_linebreaks":"Manter salto de li\u00f1as","text_title":"Use CTRL+V no teclado pra pega-lo texto na vent\u00e1."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/he_dlg.js b/program/js/tiny_mce/plugins/paste/langs/he_dlg.js
deleted file mode 100644
index 5fe796a6a..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/he_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('he.paste_dlg',{"word_title":"\u05d4\u05d3\u05d1\u05d9\u05e7\u05d5 \u05d1\u05d7\u05dc\u05d5\u05df \u05d6\u05d4 \u05d0\u05ea \u05d4\u05d8\u05e7\u05e1\u05d8 \u05d1\u05d0\u05de\u05e6\u05e2\u05d5\u05ea \u05d4\u05de\u05e7\u05e9\u05d9\u05dd CTRL+V.","text_linebreaks":"\u05d4\u05e9\u05d0\u05e8 \u05d0\u05ea \u05e9\u05d5\u05e8\u05d5\u05ea \u05d4\u05e8\u05d5\u05d5\u05d7","text_title":"\u05d4\u05d3\u05d1\u05d9\u05e7\u05d5 \u05d1\u05d7\u05dc\u05d5\u05df \u05d6\u05d4 \u05d0\u05ea \u05d4\u05d8\u05e7\u05e1\u05d8 \u05d1\u05d0\u05de\u05e6\u05e2\u05d5\u05ea \u05d4\u05de\u05e7\u05e9\u05d9\u05dd CTRL+V."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/hi_dlg.js b/program/js/tiny_mce/plugins/paste/langs/hi_dlg.js
deleted file mode 100644
index 51c6566c9..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/hi_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hi.paste_dlg',{"word_title":"Use CTRL+V on your keyboard to paste the text into the window.","text_linebreaks":"Keep linebreaks","text_title":"Use CTRL+V on your keyboard to paste the text into the window."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/hr_dlg.js b/program/js/tiny_mce/plugins/paste/langs/hr_dlg.js
deleted file mode 100644
index 60433743e..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/hr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hr.paste_dlg',{"word_title":"Koristite CTRL+V na tipkovnici da zalijepite tekst u prozor.","text_linebreaks":"Zadr\u017ei prijelome","text_title":"Koristite CTRL+V na tipkovnici da zalijepite tekst u prozor."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/hu_dlg.js b/program/js/tiny_mce/plugins/paste/langs/hu_dlg.js
deleted file mode 100644
index 7f4fb7e7b..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/hu_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hu.paste_dlg',{"word_title":"Haszn\u00e1lja a Ctrl+V-t a billenty\u0171zet\u00e9n a beilleszt\u00e9shez.","text_linebreaks":"Sort\u00f6r\u00e9sek megtart\u00e1sa","text_title":"Haszn\u00e1lja a Ctrl+V-t a billenty\u0171zet\u00e9n a beilleszt\u00e9shez."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/hy_dlg.js b/program/js/tiny_mce/plugins/paste/langs/hy_dlg.js
deleted file mode 100644
index adc0b318d..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/hy_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hy.paste_dlg',{"word_title":"\u0555\u0563\u057f\u0561\u0563\u0578\u0580\u056e\u0565\u0584 CTRL + V \u057a\u0561\u057f\u0573\u0565\u0576\u057e\u0561\u056e \u057f\u0565\u0584\u057d\u057f\u056b \u057f\u0565\u0572\u0561\u0564\u0580\u0574\u0561\u0576 \u0570\u0561\u0574\u0561\u0580","text_linebreaks":"\u054a\u0561\u0570\u057a\u0561\u0576\u0565\u056c \u057f\u0578\u0572\u0561\u0564\u0561\u0580\u0571\u0565\u0580\u0568","text_title":"\u0555\u0563\u057f\u0561\u0563\u0578\u0580\u056e\u0565\u0584 CTRL + V \u057a\u0561\u057f\u0573\u0565\u0576\u057e\u0561\u056e \u057f\u0565\u0584\u057d\u057f\u056b \u057f\u0565\u0572\u0561\u0564\u0580\u0574\u0561\u0576 \u0570\u0561\u0574\u0561\u0580"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/id_dlg.js b/program/js/tiny_mce/plugins/paste/langs/id_dlg.js
deleted file mode 100644
index f3e05b52c..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/id_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('id.paste_dlg',{"word_title":"Gunakan CTRL+V pada keyboard untuk paste.","text_linebreaks":"Keep linebreaks","text_title":"Gunakan CTRL+V pada keyboard untuk paste."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/is_dlg.js b/program/js/tiny_mce/plugins/paste/langs/is_dlg.js
deleted file mode 100644
index cbacd611f..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/is_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('is.paste_dlg',{"word_title":"Nota\u00f0u CTRL+V \u00e1 lyklabo\u00f0rinu til a\u00f0 l\u00edma textanum \u00ed ritilinn.","text_linebreaks":"Halda endingu l\u00edna","text_title":"Nota\u00f0u CTRL+V \u00e1 lyklabor\u00f0inu til a\u00f0 l\u00edma textanum \u00ed ritilinn."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/it_dlg.js b/program/js/tiny_mce/plugins/paste/langs/it_dlg.js
deleted file mode 100644
index f1b8dc7e0..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/it_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('it.paste_dlg',{"word_title":"Premere CTRL+V sulla tastiera per incollare il testo nella finestra.","text_linebreaks":"Mantieni interruzioni di riga","text_title":"Premere CTRL+V sulla tastiera per incollare il testo nella finestra."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/ja_dlg.js b/program/js/tiny_mce/plugins/paste/langs/ja_dlg.js
deleted file mode 100644
index 5af598227..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/ja_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ja.paste_dlg',{"word_title":"Ctrl V(\u30ad\u30fc\u30dc\u30fc\u30c9)\u3092\u4f7f\u7528\u3057\u3066\u3001\u30c6\u30ad\u30b9\u30c8\u3092\u30a6\u30a3\u30f3\u30c9\u30a6\u306b\u8cbc\u308a\u4ed8\u3051\u3066\u304f\u3060\u3055\u3044\u3002","text_linebreaks":"\u6539\u884c\u3092\u4fdd\u6301","text_title":"Ctrl V(\u30ad\u30fc\u30dc\u30fc\u30c9)\u3092\u4f7f\u7528\u3057\u3066\u3001\u30c6\u30ad\u30b9\u30c8\u3092\u30a6\u30a3\u30f3\u30c9\u30a6\u306b\u8cbc\u308a\u4ed8\u3051\u3066\u304f\u3060\u3055\u3044\u3002"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/ka_dlg.js b/program/js/tiny_mce/plugins/paste/langs/ka_dlg.js
deleted file mode 100644
index dedcfd33b..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/ka_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ka.paste_dlg',{"word_title":"\u0418\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1 \u10e9\u10d0\u10e1\u10d0\u10e1\u10db\u10d4\u10da\u10d0\u10d3 \u10d2\u10d0\u10db\u10dd\u10d8\u10e7\u10d4\u10dc\u10d4\u10d7 \u10d9\u10da\u10d0\u10d5\u10d8\u10d0\u10e2\u10e3\u10e0\u10e3\u10da\u10d8 \u10d9\u10dd\u10db\u10d1\u10d8\u10dc\u10d0\u10ea\u10d8\u10d0 CTRL+V.","text_linebreaks":"\u10d2\u10d0\u10d3\u10d0\u10e2\u10d0\u10dc\u10d8\u10da\u10d8 \u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d4\u10d1\u10d8\u10e1 \u10e8\u10d4\u10dc\u10d0\u10ee\u10d5\u10d0","text_title":"\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1 \u10e9\u10d0\u10e1\u10d0\u10e1\u10db\u10d4\u10da\u10d0\u10d3 \u10d2\u10d0\u10db\u10dd\u10d8\u10e7\u10d4\u10dc\u10d4\u10d7 \u10d9\u10da\u10d0\u10d5\u10d8\u10d0\u10e2\u10e3\u10e0\u10e3\u10da\u10d8 \u10d9\u10dd\u10db\u10d1\u10d8\u10dc\u10d0\u10ea\u10d8\u10d0 CTRL+V."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/ko_dlg.js b/program/js/tiny_mce/plugins/paste/langs/ko_dlg.js
deleted file mode 100644
index 3fb6c9762..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/ko_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ko.paste_dlg',{"word_title":"\ud0a4\ubcf4\ub4dc\uc5d0\uc11c Ctrl-V\ub97c \uc0ac\uc6a9\ud558\uba74 \ud14d\uc2a4\ud2b8\ub97c \ucc3d\uc5d0 \ubd99\uc5ec\ub123\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.","text_linebreaks":"\uc904\ubc14\uafc8 \uc720\uc9c0","text_title":"\ud0a4\ubcf4\ub4dc\uc5d0\uc11c Ctrl-V\ub97c \uc0ac\uc6a9\ud558\uba74 \ud14d\uc2a4\ud2b8\ub97c \ucc3d\uc5d0 \ubd99\uc5ec\ub123\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/lt_dlg.js b/program/js/tiny_mce/plugins/paste/langs/lt_dlg.js
deleted file mode 100644
index 7cf928dab..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/lt_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('lt.paste_dlg',{"word_title":"Naudokite CTRL+V tekstui \u012fd\u0117ti \u012f \u0161\u012f lang\u0105.","text_linebreaks":"Palikti eilu\u010di\u0173 l\u016b\u017eius","text_title":"Naudokite CTRL+V tekstui \u012fd\u0117ti \u012f \u0161\u012f lang\u0105."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/lv_dlg.js b/program/js/tiny_mce/plugins/paste/langs/lv_dlg.js
deleted file mode 100644
index ae02a1864..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/lv_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('lv.paste_dlg',{"word_title":"Izmantojiet CTRL+V uz j\u016bsu tastat\u016bras lai iekop\u0113t tekstu log\u0101.","text_linebreaks":"Sagl\u0101b\u0101t l\u012bniju sadal\u012bt\u0101jus","text_title":"Izmantojiet CTRL+V uz j\u016bsu tastat\u016bras lai iekop\u0113t tekstu log\u0101."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/mk_dlg.js b/program/js/tiny_mce/plugins/paste/langs/mk_dlg.js
deleted file mode 100644
index bebf74f7b..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/mk_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('mk.paste_dlg',{"word_title":"\u041a\u043e\u0440\u0438\u0441\u0442\u0435\u0442\u0435 CTRL V \u043e\u0434 \u0442\u0430\u0441\u0442\u0430\u0442\u0443\u0440\u0430\u0442\u0430 \u0437\u0430 \u0434\u0430 \u0433\u043e \u0437\u0430\u043b\u0435\u043f\u0438\u0442\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0442 \u0432\u043e \u043f\u0440\u043e\u0437\u043e\u0440\u043e\u0442.","text_linebreaks":"\u0417\u0430\u0434\u0440\u0436\u0438 \u0433\u0438 \u043f\u0430\u0443\u0437\u0438\u0442\u0435 \u043f\u043e\u043c\u0435\u0453\u0443 \u043b\u0438\u043d\u0438\u0438\u0442\u0435","text_title":"\u041a\u043e\u0440\u0438\u0441\u0442\u0435\u0442\u0435 CTRL V \u043e\u0434 \u0442\u0430\u0441\u0442\u0430\u0442\u0443\u0440\u0430\u0442\u0430 \u0437\u0430 \u0434\u0430 \u0433\u043e \u0437\u0430\u043b\u0435\u043f\u0438\u0442\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0442 \u0432\u043e \u043f\u0440\u043e\u0437\u043e\u0440\u043e\u0442."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/ms_dlg.js b/program/js/tiny_mce/plugins/paste/langs/ms_dlg.js
deleted file mode 100644
index 547d849d0..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/ms_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ms.paste_dlg',{"word_title":"Guna CTRL+V pada papan kekunci anda untuk teks ke dalam tetingkap.","text_linebreaks":"Biarkan garisan pemisah","text_title":"Guna CTRL+V pada papan kekunci anda untuk Tempel teks ke dalam tetingkap."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/nb_dlg.js b/program/js/tiny_mce/plugins/paste/langs/nb_dlg.js
deleted file mode 100644
index bfb2266f8..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/nb_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nb.paste_dlg',{"word_title":"Bruk CTRL+V p\u00e5 tastaturet for \u00e5 lime inn i dette vinduet.","text_linebreaks":"Behold tekstbryting","text_title":"Bruk CTRL+V p\u00e5 tastaturet for \u00e5 lime inn i dette vinduet."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/nl_dlg.js b/program/js/tiny_mce/plugins/paste/langs/nl_dlg.js
deleted file mode 100644
index bac8ac046..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/nl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nl.paste_dlg',{"word_title":"Gebruik Ctrl+V om tekst in het venster te plakken.","text_linebreaks":"Regelafbreking bewaren","text_title":"Gebruik Ctrl+V om tekst in het venster te plakken."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/nn_dlg.js b/program/js/tiny_mce/plugins/paste/langs/nn_dlg.js
deleted file mode 100644
index be58ae572..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/nn_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nn.paste_dlg',{"word_title":"Bruk CTRL+V p\u00e5 tastaturet for \u00e5 lime inn i dette vindauget.","text_linebreaks":"Behald tekstbryting","text_title":"Bruk CTRL+V p\u00e5 tastaturet for \u00e5 lime inn i dette vindauget."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/pl_dlg.js b/program/js/tiny_mce/plugins/paste/langs/pl_dlg.js
deleted file mode 100644
index 54fd41c37..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/pl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('pl.paste_dlg',{"word_title":"U\u017cyj CTRL+V na swojej klawiaturze \u017ceby wklei\u0107 tekst do okna.","text_linebreaks":"Zachowaj ko\u0144ce linii.","text_title":"U\u017cyj CTRL+V na swojej klawiaturze \u017ceby wklei\u0107 tekst do okna."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/ps_dlg.js b/program/js/tiny_mce/plugins/paste/langs/ps_dlg.js
deleted file mode 100644
index a2a054660..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/ps_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ps.paste_dlg',{"word_title":"Use CTRL+V on your keyboard to paste the text into the window.","text_linebreaks":"Keep linebreaks","text_title":"Use CTRL+V on your keyboard to paste the text into the window."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/pt_dlg.js b/program/js/tiny_mce/plugins/paste/langs/pt_dlg.js
deleted file mode 100644
index c9601cf94..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/pt_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('pt.paste_dlg',{"word_title":"Use CTRL+V para colar o texto na janela.","text_linebreaks":"Manter quebras de linha","text_title":"Use CTRL+V para colar o texto na janela."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/ro_dlg.js b/program/js/tiny_mce/plugins/paste/langs/ro_dlg.js
deleted file mode 100644
index 897bc01fc..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/ro_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ro.paste_dlg',{"word_title":"Folose\u0219te CTRL V pentru a lipi \u00een aceast\u0103 zon\u0103.","text_linebreaks":"P\u0103streaz\u0103 separatoarele de linii.","text_title":"Folose\u0219te CTRL V pentru a lipi \u00een aceast\u0103 zon\u0103."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/ru_dlg.js b/program/js/tiny_mce/plugins/paste/langs/ru_dlg.js
deleted file mode 100644
index b360b075d..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/ru_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ru.paste_dlg',{"word_title":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 CTRL+V \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u043e\u043a\u043d\u043e.","text_linebreaks":"\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u044b \u0441\u0442\u0440\u043e\u043a","text_title":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 CTRL+V \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u043e\u043a\u043d\u043e."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/si_dlg.js b/program/js/tiny_mce/plugins/paste/langs/si_dlg.js
deleted file mode 100644
index c72fcae8c..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/si_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('si.paste_dlg',{"word_title":"Use CTRL+V on your keyboard to paste the text into the window.","text_linebreaks":"Keep linebreaks","text_title":"Use CTRL+V on your keyboard to paste the text into the window."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/sk_dlg.js b/program/js/tiny_mce/plugins/paste/langs/sk_dlg.js
deleted file mode 100644
index a3745f300..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/sk_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sk.paste_dlg',{"word_title":"Pou\u017eite CTRL+V pre vlo\u017eenie textu do okna.","text_linebreaks":"Zachova\u0165 zalamovanie riadkov","text_title":"Pou\u017eite CTRL+V pre vlo\u017eenie textu do okna."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/sl_dlg.js b/program/js/tiny_mce/plugins/paste/langs/sl_dlg.js
deleted file mode 100644
index eca8bd1d3..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/sl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sl.paste_dlg',{"word_title":"Uporabite kombinacijo tipk CTRL+V, da prilepite vsebino v okno.","text_linebreaks":"Obdr\u017ei prelome vrstic","text_title":"Uporabite kombinacijo tipk CTRL+V, da prilepite vsebino v okno."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/sq_dlg.js b/program/js/tiny_mce/plugins/paste/langs/sq_dlg.js
deleted file mode 100644
index 741461421..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/sq_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sq.paste_dlg',{"word_title":"P\u00ebrdor CTRL+V p\u00ebr t\u00eb ngjitur tekstin.","text_linebreaks":"Ruaj linjat e reja","text_title":"P\u00ebrdor CTRL+V p\u00ebr t\u00eb ngjitur tekstin."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/sr_dlg.js b/program/js/tiny_mce/plugins/paste/langs/sr_dlg.js
deleted file mode 100644
index 51dc0ddad..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/sr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sr.paste_dlg',{"word_title":"Koristite CTRL V na tastaturi da zalepite tekst u prozor.","text_linebreaks":"Zadr\u017ei prelome linija","text_title":"Koristite CTRL+V na tastaturi da zalepite tekst u prozor."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/sv_dlg.js b/program/js/tiny_mce/plugins/paste/langs/sv_dlg.js
deleted file mode 100644
index 1c99e2b1b..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/sv_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sv.paste_dlg',{"word_title":"Anv\u00e4nd ctrl-v p\u00e5 ditt tangentbord f\u00f6r att klistra in i detta f\u00f6nster.","text_linebreaks":"Spara radbrytningar","text_title":"Anv\u00e4nd ctrl-v p\u00e5 ditt tangentbord f\u00f6r att klistra in i detta f\u00f6nster."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/ta_dlg.js b/program/js/tiny_mce/plugins/paste/langs/ta_dlg.js
deleted file mode 100644
index 03eb3e075..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/ta_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ta.paste_dlg',{"word_title":"Use CTRL+V on your keyboard to paste the text into the window.","text_linebreaks":"Keep linebreaks","text_title":"Use CTRL+V on your keyboard to paste the text into the window."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/th_dlg.js b/program/js/tiny_mce/plugins/paste/langs/th_dlg.js
deleted file mode 100644
index 9616c4102..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/th_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('th.paste_dlg',{"word_title":"Use CTRL+V on your keyboard to paste the text into the window.","text_linebreaks":"Keep linebreaks","text_title":"Use CTRL+V on your keyboard to paste the text into the window."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/tr_dlg.js b/program/js/tiny_mce/plugins/paste/langs/tr_dlg.js
deleted file mode 100644
index 16864b474..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/tr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('tr.paste_dlg',{"word_title":"Pencereye metin yap\u0131\u015ft\u0131rmak i\u00e7in klavyeden CTRL+V i kullan\u0131n.","text_linebreaks":"Sat\u0131r kesmelerini tut","text_title":"Pencereye metin yap\u0131\u015ft\u0131rmak i\u00e7in klavyeden CTRL+V i kullan\u0131n."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/uk_dlg.js b/program/js/tiny_mce/plugins/paste/langs/uk_dlg.js
deleted file mode 100644
index b62328956..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/uk_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('uk.paste_dlg',{"word_title":"\u0412\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0439\u0442\u0435 CTRL+V \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0443 \u0443 \u0432\u0456\u043a\u043d\u043e.","text_linebreaks":"\u0417\u0431\u0435\u0440\u0456\u0433\u0430\u0442\u0438 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438 \u0440\u044f\u0434\u043a\u0456\u0432","text_title":"\u0412\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0439\u0442\u0435 CTRL+V \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0443 \u0443 \u0432\u0456\u043a\u043d\u043e."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/vi_dlg.js b/program/js/tiny_mce/plugins/paste/langs/vi_dlg.js
deleted file mode 100644
index 25694d9c1..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/vi_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('vi.paste_dlg',{"word_title":"S\u1eed d\u1ee5ng CTRL+V tr\u00ean b\u00e0n ph\u00edm \u0111\u1ec3 d\u00e1n v\u0103n b\u1ea3n v\u00e0o c\u1eeda s\u1ed5.","text_linebreaks":"Gi\u1eef ng\u1eaft d\u00f2ng","text_title":"S\u1eed d\u1ee5ng CTRL+V tr\u00ean b\u00e0n ph\u00edm \u0111\u1ec3 d\u00e1n v\u0103n b\u1ea3n v\u00e0o c\u1eeda s\u1ed5."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/zh-cn_dlg.js b/program/js/tiny_mce/plugins/paste/langs/zh-cn_dlg.js
deleted file mode 100644
index 4abd1a96c..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/zh-cn_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('zh-cn.paste_dlg',{"word_title":"\u4f7f\u7528CTRL V\u7c98\u8d34\u6587\u672c\u5230\u7a97\u53e3\u4e2d\u3002","text_linebreaks":"\u4fdd\u7559\u65ad\u884c","text_title":"\u4f7f\u7528CTRL V\u7c98\u8d34\u6587\u672c\u5230\u7a97\u53e3\u4e2d\u3002"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/langs/zh-tw_dlg.js b/program/js/tiny_mce/plugins/paste/langs/zh-tw_dlg.js
deleted file mode 100644
index ea2f214ee..000000000
--- a/program/js/tiny_mce/plugins/paste/langs/zh-tw_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('zh-tw.paste_dlg',{"word_title":"\u8acb\u6309\u9375\u76e4\u4e0a\u7684 Ctrl C (\u8907\u88fd) \u8cc7\u6599\u5230\u756b\u9762\u4e0a","text_linebreaks":"\u4fdd\u7559\u6587\u7ae0\u4e2d\u7684\u63db\u884c","text_title":"\u8acb\u6309\u9375\u76e4\u4e0a\u7684 Ctrl C (\u8cbc\u4e0a) \u8cc7\u6599\u5230\u756b\u9762\u4e0a"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/pastetext.htm b/program/js/tiny_mce/plugins/paste/pastetext.htm
deleted file mode 100644
index b65594547..000000000
--- a/program/js/tiny_mce/plugins/paste/pastetext.htm
+++ /dev/null
@@ -1,27 +0,0 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#paste.paste_text_desc}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="js/pastetext.js"></script>
-</head>
-<body onresize="PasteTextDialog.resize();" style="display:none; overflow:hidden;">
- <form name="source" onsubmit="return PasteTextDialog.insert();" action="#">
- <div style="float: left" class="title">{#paste.paste_text_desc}</div>
-
- <div style="float: right">
- <input type="checkbox" name="linebreaks" id="linebreaks" class="wordWrapCode" checked="checked" /><label for="linebreaks">{#paste_dlg.text_linebreaks}</label>
- </div>
-
- <br style="clear: both" />
-
- <div>{#paste_dlg.text_title}</div>
-
- <textarea id="content" name="content" rows="15" cols="100" style="width: 100%; height: 100%; font-family: 'Courier New',Courier,mono; font-size: 12px;" dir="ltr" wrap="soft" class="mceFocus"></textarea>
-
- <div class="mceActionPanel">
- <input type="submit" name="insert" value="{#insert}" id="insert" />
- <input type="button" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" id="cancel" />
- </div>
- </form>
-</body>
-</html> \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/pasteword.htm b/program/js/tiny_mce/plugins/paste/pasteword.htm
deleted file mode 100644
index 0f6bb4121..000000000
--- a/program/js/tiny_mce/plugins/paste/pasteword.htm
+++ /dev/null
@@ -1,21 +0,0 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#paste.paste_word_desc}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="js/pasteword.js"></script>
-</head>
-<body onresize="PasteWordDialog.resize();" style="display:none; overflow:hidden;">
- <form name="source" onsubmit="return PasteWordDialog.insert();" action="#">
- <div class="title">{#paste.paste_word_desc}</div>
-
- <div>{#paste_dlg.word_title}</div>
-
- <div id="iframecontainer"></div>
-
- <div class="mceActionPanel">
- <input type="submit" id="insert" name="insert" value="{#insert}" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
- </form>
-</body>
-</html>
diff --git a/program/js/tiny_mce/plugins/preview/editor_plugin.js b/program/js/tiny_mce/plugins/preview/editor_plugin.js
deleted file mode 100644
index 507909c5f..000000000
--- a/program/js/tiny_mce/plugins/preview/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.Preview",{init:function(a,b){var d=this,c=tinymce.explode(a.settings.content_css);d.editor=a;tinymce.each(c,function(f,e){c[e]=a.documentBaseURI.toAbsolute(f)});a.addCommand("mcePreview",function(){a.windowManager.open({file:a.getParam("plugin_preview_pageurl",b+"/preview.html"),width:parseInt(a.getParam("plugin_preview_width","550")),height:parseInt(a.getParam("plugin_preview_height","600")),resizable:"yes",scrollbars:"yes",popup_css:c?c.join(","):a.baseURI.toAbsolute("themes/"+a.settings.theme+"/skins/"+a.settings.skin+"/content.css"),inline:a.getParam("plugin_preview_inline",1)},{base:a.documentBaseURI.getURI()})});a.addButton("preview",{title:"preview.preview_desc",cmd:"mcePreview"})},getInfo:function(){return{longname:"Preview",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/preview",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("preview",tinymce.plugins.Preview)})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/preview/editor_plugin_src.js b/program/js/tiny_mce/plugins/preview/editor_plugin_src.js
deleted file mode 100644
index 80f00f0d9..000000000
--- a/program/js/tiny_mce/plugins/preview/editor_plugin_src.js
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- tinymce.create('tinymce.plugins.Preview', {
- init : function(ed, url) {
- var t = this, css = tinymce.explode(ed.settings.content_css);
-
- t.editor = ed;
-
- // Force absolute CSS urls
- tinymce.each(css, function(u, k) {
- css[k] = ed.documentBaseURI.toAbsolute(u);
- });
-
- ed.addCommand('mcePreview', function() {
- ed.windowManager.open({
- file : ed.getParam("plugin_preview_pageurl", url + "/preview.html"),
- width : parseInt(ed.getParam("plugin_preview_width", "550")),
- height : parseInt(ed.getParam("plugin_preview_height", "600")),
- resizable : "yes",
- scrollbars : "yes",
- popup_css : css ? css.join(',') : ed.baseURI.toAbsolute("themes/" + ed.settings.theme + "/skins/" + ed.settings.skin + "/content.css"),
- inline : ed.getParam("plugin_preview_inline", 1)
- }, {
- base : ed.documentBaseURI.getURI()
- });
- });
-
- ed.addButton('preview', {title : 'preview.preview_desc', cmd : 'mcePreview'});
- },
-
- getInfo : function() {
- return {
- longname : 'Preview',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/preview',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('preview', tinymce.plugins.Preview);
-})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/preview/example.html b/program/js/tiny_mce/plugins/preview/example.html
deleted file mode 100644
index b2c3d90ce..000000000
--- a/program/js/tiny_mce/plugins/preview/example.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<script language="javascript" src="../../tiny_mce_popup.js"></script>
-<script type="text/javascript" src="jscripts/embed.js"></script>
-<script type="text/javascript">
-tinyMCEPopup.onInit.add(function(ed) {
- var dom = tinyMCEPopup.dom;
-
- // Load editor content_css
- tinymce.each(ed.settings.content_css.split(','), function(u) {
- dom.loadCSS(ed.documentBaseURI.toAbsolute(u));
- });
-
- // Place contents inside div container
- dom.setHTML('content', ed.getContent());
-});
-</script>
-<title>Example of a custom preview page</title>
-</head>
-<body>
-
-Editor contents: <br />
-<div id="content">
-<!-- Gets filled with editor contents -->
-</div>
-
-</body>
-</html>
diff --git a/program/js/tiny_mce/plugins/preview/jscripts/embed.js b/program/js/tiny_mce/plugins/preview/jscripts/embed.js
deleted file mode 100644
index f8dc81052..000000000
--- a/program/js/tiny_mce/plugins/preview/jscripts/embed.js
+++ /dev/null
@@ -1,73 +0,0 @@
-/**
- * This script contains embed functions for common plugins. This scripts are complety free to use for any purpose.
- */
-
-function writeFlash(p) {
- writeEmbed(
- 'D27CDB6E-AE6D-11cf-96B8-444553540000',
- 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
- 'application/x-shockwave-flash',
- p
- );
-}
-
-function writeShockWave(p) {
- writeEmbed(
- '166B1BCA-3F9C-11CF-8075-444553540000',
- 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0',
- 'application/x-director',
- p
- );
-}
-
-function writeQuickTime(p) {
- writeEmbed(
- '02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',
- 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0',
- 'video/quicktime',
- p
- );
-}
-
-function writeRealMedia(p) {
- writeEmbed(
- 'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA',
- 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
- 'audio/x-pn-realaudio-plugin',
- p
- );
-}
-
-function writeWindowsMedia(p) {
- p.url = p.src;
- writeEmbed(
- '6BF52A52-394A-11D3-B153-00C04F79FAA6',
- 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701',
- 'application/x-mplayer2',
- p
- );
-}
-
-function writeEmbed(cls, cb, mt, p) {
- var h = '', n;
-
- h += '<object classid="clsid:' + cls + '" codebase="' + cb + '"';
- h += typeof(p.id) != "undefined" ? 'id="' + p.id + '"' : '';
- h += typeof(p.name) != "undefined" ? 'name="' + p.name + '"' : '';
- h += typeof(p.width) != "undefined" ? 'width="' + p.width + '"' : '';
- h += typeof(p.height) != "undefined" ? 'height="' + p.height + '"' : '';
- h += typeof(p.align) != "undefined" ? 'align="' + p.align + '"' : '';
- h += '>';
-
- for (n in p)
- h += '<param name="' + n + '" value="' + p[n] + '">';
-
- h += '<embed type="' + mt + '"';
-
- for (n in p)
- h += n + '="' + p[n] + '" ';
-
- h += '></embed></object>';
-
- document.write(h);
-}
diff --git a/program/js/tiny_mce/plugins/preview/preview.html b/program/js/tiny_mce/plugins/preview/preview.html
deleted file mode 100644
index 67e7b142f..000000000
--- a/program/js/tiny_mce/plugins/preview/preview.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
-<script type="text/javascript" src="jscripts/embed.js"></script>
-<script type="text/javascript"><!--
-document.write('<base href="' + tinyMCEPopup.getWindowArg("base") + '">');
-// -->
-</script>
-<title>{#preview.preview_desc}</title>
-</head>
-<body id="content">
-<script type="text/javascript">
- document.write(tinyMCEPopup.editor.getContent());
-</script>
-</body>
-</html>
diff --git a/program/js/tiny_mce/plugins/print/editor_plugin.js b/program/js/tiny_mce/plugins/print/editor_plugin.js
deleted file mode 100644
index b5b3a55ed..000000000
--- a/program/js/tiny_mce/plugins/print/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.Print",{init:function(a,b){a.addCommand("mcePrint",function(){a.getWin().print()});a.addButton("print",{title:"print.print_desc",cmd:"mcePrint"})},getInfo:function(){return{longname:"Print",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/print",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("print",tinymce.plugins.Print)})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/print/editor_plugin_src.js b/program/js/tiny_mce/plugins/print/editor_plugin_src.js
deleted file mode 100644
index 3933fe656..000000000
--- a/program/js/tiny_mce/plugins/print/editor_plugin_src.js
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- tinymce.create('tinymce.plugins.Print', {
- init : function(ed, url) {
- ed.addCommand('mcePrint', function() {
- ed.getWin().print();
- });
-
- ed.addButton('print', {title : 'print.print_desc', cmd : 'mcePrint'});
- },
-
- getInfo : function() {
- return {
- longname : 'Print',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/print',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('print', tinymce.plugins.Print);
-})();
diff --git a/program/js/tiny_mce/plugins/save/editor_plugin.js b/program/js/tiny_mce/plugins/save/editor_plugin.js
deleted file mode 100644
index 8e9399667..000000000
--- a/program/js/tiny_mce/plugins/save/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.Save",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceSave",c._save,c);a.addCommand("mceCancel",c._cancel,c);a.addButton("save",{title:"save.save_desc",cmd:"mceSave"});a.addButton("cancel",{title:"save.cancel_desc",cmd:"mceCancel"});a.onNodeChange.add(c._nodeChange,c);a.addShortcut("ctrl+s",a.getLang("save.save_desc"),"mceSave")},getInfo:function(){return{longname:"Save",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/save",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_nodeChange:function(b,a,c){var b=this.editor;if(b.getParam("save_enablewhendirty")){a.setDisabled("save",!b.isDirty());a.setDisabled("cancel",!b.isDirty())}},_save:function(){var c=this.editor,a,e,d,b;a=tinymce.DOM.get(c.id).form||tinymce.DOM.getParent(c.id,"form");if(c.getParam("save_enablewhendirty")&&!c.isDirty()){return}tinyMCE.triggerSave();if(e=c.getParam("save_onsavecallback")){if(c.execCallback("save_onsavecallback",c)){c.startContent=tinymce.trim(c.getContent({format:"raw"}));c.nodeChanged()}return}if(a){c.isNotDirty=true;if(a.onsubmit==null||a.onsubmit()!=false){a.submit()}c.nodeChanged()}else{c.windowManager.alert("Error: No form element found.")}},_cancel:function(){var a=this.editor,c,b=tinymce.trim(a.startContent);if(c=a.getParam("save_oncancelcallback")){a.execCallback("save_oncancelcallback",a);return}a.setContent(b);a.undoManager.clear();a.nodeChanged()}});tinymce.PluginManager.add("save",tinymce.plugins.Save)})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/save/editor_plugin_src.js b/program/js/tiny_mce/plugins/save/editor_plugin_src.js
deleted file mode 100644
index f5a3de8f5..000000000
--- a/program/js/tiny_mce/plugins/save/editor_plugin_src.js
+++ /dev/null
@@ -1,101 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- tinymce.create('tinymce.plugins.Save', {
- init : function(ed, url) {
- var t = this;
-
- t.editor = ed;
-
- // Register commands
- ed.addCommand('mceSave', t._save, t);
- ed.addCommand('mceCancel', t._cancel, t);
-
- // Register buttons
- ed.addButton('save', {title : 'save.save_desc', cmd : 'mceSave'});
- ed.addButton('cancel', {title : 'save.cancel_desc', cmd : 'mceCancel'});
-
- ed.onNodeChange.add(t._nodeChange, t);
- ed.addShortcut('ctrl+s', ed.getLang('save.save_desc'), 'mceSave');
- },
-
- getInfo : function() {
- return {
- longname : 'Save',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/save',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- },
-
- // Private methods
-
- _nodeChange : function(ed, cm, n) {
- var ed = this.editor;
-
- if (ed.getParam('save_enablewhendirty')) {
- cm.setDisabled('save', !ed.isDirty());
- cm.setDisabled('cancel', !ed.isDirty());
- }
- },
-
- // Private methods
-
- _save : function() {
- var ed = this.editor, formObj, os, i, elementId;
-
- formObj = tinymce.DOM.get(ed.id).form || tinymce.DOM.getParent(ed.id, 'form');
-
- if (ed.getParam("save_enablewhendirty") && !ed.isDirty())
- return;
-
- tinyMCE.triggerSave();
-
- // Use callback instead
- if (os = ed.getParam("save_onsavecallback")) {
- if (ed.execCallback('save_onsavecallback', ed)) {
- ed.startContent = tinymce.trim(ed.getContent({format : 'raw'}));
- ed.nodeChanged();
- }
-
- return;
- }
-
- if (formObj) {
- ed.isNotDirty = true;
-
- if (formObj.onsubmit == null || formObj.onsubmit() != false)
- formObj.submit();
-
- ed.nodeChanged();
- } else
- ed.windowManager.alert("Error: No form element found.");
- },
-
- _cancel : function() {
- var ed = this.editor, os, h = tinymce.trim(ed.startContent);
-
- // Use callback instead
- if (os = ed.getParam("save_oncancelcallback")) {
- ed.execCallback('save_oncancelcallback', ed);
- return;
- }
-
- ed.setContent(h);
- ed.undoManager.clear();
- ed.nodeChanged();
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('save', tinymce.plugins.Save);
-})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/css/searchreplace.css b/program/js/tiny_mce/plugins/searchreplace/css/searchreplace.css
deleted file mode 100644
index ecdf58c7b..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/css/searchreplace.css
+++ /dev/null
@@ -1,6 +0,0 @@
-.panel_wrapper {height:85px;}
-.panel_wrapper div.current {height:85px;}
-
-/* IE */
-* html .panel_wrapper {height:100px;}
-* html .panel_wrapper div.current {height:100px;}
diff --git a/program/js/tiny_mce/plugins/searchreplace/editor_plugin.js b/program/js/tiny_mce/plugins/searchreplace/editor_plugin.js
deleted file mode 100644
index 165bc12df..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.SearchReplacePlugin",{init:function(a,c){function b(d){window.focus();a.windowManager.open({file:c+"/searchreplace.htm",width:420+parseInt(a.getLang("searchreplace.delta_width",0)),height:170+parseInt(a.getLang("searchreplace.delta_height",0)),inline:1,auto_focus:0},{mode:d,search_string:a.selection.getContent({format:"text"}),plugin_url:c})}a.addCommand("mceSearch",function(){b("search")});a.addCommand("mceReplace",function(){b("replace")});a.addButton("search",{title:"searchreplace.search_desc",cmd:"mceSearch"});a.addButton("replace",{title:"searchreplace.replace_desc",cmd:"mceReplace"});a.addShortcut("ctrl+f","searchreplace.search_desc","mceSearch")},getInfo:function(){return{longname:"Search/Replace",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/searchreplace",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("searchreplace",tinymce.plugins.SearchReplacePlugin)})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/editor_plugin_src.js b/program/js/tiny_mce/plugins/searchreplace/editor_plugin_src.js
deleted file mode 100644
index 4c87e8fa7..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/editor_plugin_src.js
+++ /dev/null
@@ -1,61 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- tinymce.create('tinymce.plugins.SearchReplacePlugin', {
- init : function(ed, url) {
- function open(m) {
- // Keep IE from writing out the f/r character to the editor
- // instance while initializing a new dialog. See: #3131190
- window.focus();
-
- ed.windowManager.open({
- file : url + '/searchreplace.htm',
- width : 420 + parseInt(ed.getLang('searchreplace.delta_width', 0)),
- height : 170 + parseInt(ed.getLang('searchreplace.delta_height', 0)),
- inline : 1,
- auto_focus : 0
- }, {
- mode : m,
- search_string : ed.selection.getContent({format : 'text'}),
- plugin_url : url
- });
- };
-
- // Register commands
- ed.addCommand('mceSearch', function() {
- open('search');
- });
-
- ed.addCommand('mceReplace', function() {
- open('replace');
- });
-
- // Register buttons
- ed.addButton('search', {title : 'searchreplace.search_desc', cmd : 'mceSearch'});
- ed.addButton('replace', {title : 'searchreplace.replace_desc', cmd : 'mceReplace'});
-
- ed.addShortcut('ctrl+f', 'searchreplace.search_desc', 'mceSearch');
- },
-
- getInfo : function() {
- return {
- longname : 'Search/Replace',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/searchreplace',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('searchreplace', tinymce.plugins.SearchReplacePlugin);
-})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/js/searchreplace.js b/program/js/tiny_mce/plugins/searchreplace/js/searchreplace.js
deleted file mode 100644
index eb9b6eea8..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/js/searchreplace.js
+++ /dev/null
@@ -1,148 +0,0 @@
-tinyMCEPopup.requireLangPack();
-
-var SearchReplaceDialog = {
- init : function(ed) {
- var t = this, f = document.forms[0], m = tinyMCEPopup.getWindowArg("mode");
-
- t.switchMode(m);
-
- f[m + '_panel_searchstring'].value = tinyMCEPopup.getWindowArg("search_string");
-
- // Focus input field
- f[m + '_panel_searchstring'].focus();
-
- mcTabs.onChange.add(function(tab_id, panel_id) {
- t.switchMode(tab_id.substring(0, tab_id.indexOf('_')));
- });
-
- },
-
- switchMode : function(m) {
- var f, lm = this.lastMode;
-
- if (lm != m) {
- f = document.forms[0];
-
- if (lm) {
- f[m + '_panel_searchstring'].value = f[lm + '_panel_searchstring'].value;
- f[m + '_panel_backwardsu'].checked = f[lm + '_panel_backwardsu'].checked;
- f[m + '_panel_backwardsd'].checked = f[lm + '_panel_backwardsd'].checked;
- f[m + '_panel_casesensitivebox'].checked = f[lm + '_panel_casesensitivebox'].checked;
- }
-
- mcTabs.displayTab(m + '_tab', m + '_panel');
- document.getElementById("replaceBtn").style.display = (m == "replace") ? "inline" : "none";
- document.getElementById("replaceAllBtn").style.display = (m == "replace") ? "inline" : "none";
- this.lastMode = m;
- }
- },
-
- searchNext : function(a) {
- var ed = tinyMCEPopup.editor, se = ed.selection, r = se.getRng(), f, m = this.lastMode, s, b, fl = 0, w = ed.getWin(), wm = ed.windowManager, fo = 0;
-
- if (tinymce.isIE11 && !window.find) {
- ed.windowManager.alert("This feature is not available in IE 11+. Upgrade TinyMCE to 4.x to get this functionallity back.");
- return;
- }
-
- // Get input
- f = document.forms[0];
- s = f[m + '_panel_searchstring'].value;
- b = f[m + '_panel_backwardsu'].checked;
- ca = f[m + '_panel_casesensitivebox'].checked;
- rs = f['replace_panel_replacestring'].value;
-
- if (tinymce.isIE) {
- r = ed.getDoc().selection.createRange();
- }
-
- if (s == '')
- return;
-
- function fix() {
- // Correct Firefox graphics glitches
- // TODO: Verify if this is actually needed any more, maybe it was for very old FF versions?
- r = se.getRng().cloneRange();
- ed.getDoc().execCommand('SelectAll', false, null);
- se.setRng(r);
- };
-
- function replace() {
- ed.selection.setContent(rs); // Needs to be duplicated due to selection bug in IE
- };
-
- // IE flags
- if (ca)
- fl = fl | 4;
-
- switch (a) {
- case 'all':
- // Move caret to beginning of text
- ed.execCommand('SelectAll');
- ed.selection.collapse(true);
-
- if (tinymce.isIE) {
- ed.focus();
- r = ed.getDoc().selection.createRange();
-
- while (r.findText(s, b ? -1 : 1, fl)) {
- r.scrollIntoView();
- r.select();
- replace();
- fo = 1;
-
- if (b) {
- r.moveEnd("character", -(rs.length)); // Otherwise will loop forever
- }
- }
-
- tinyMCEPopup.storeSelection();
- } else {
- while (w.find(s, ca, b, false, false, false, false)) {
- replace();
- fo = 1;
- }
- }
-
- if (fo)
- tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.allreplaced'));
- else
- tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));
-
- return;
-
- case 'current':
- if (!ed.selection.isCollapsed())
- replace();
-
- break;
- }
-
- se.collapse(b);
- r = se.getRng();
-
- // Whats the point
- if (!s)
- return;
-
- if (tinymce.isIE) {
- ed.focus();
- r = ed.getDoc().selection.createRange();
-
- if (r.findText(s, b ? -1 : 1, fl)) {
- r.scrollIntoView();
- r.select();
- } else
- tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));
-
- tinyMCEPopup.storeSelection();
- } else {
- if (!w.find(s, ca, b, false, false, false, false))
- tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound'));
- else
- fix();
- }
- }
-};
-
-tinyMCEPopup.onInit.add(SearchReplaceDialog.init, SearchReplaceDialog);
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/ar_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/ar_dlg.js
deleted file mode 100644
index 4e6674b7f..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/ar_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ar.searchreplace_dlg',{findwhat:"\u0627\u0628\u062d\u062b \u0639\u0646",replacewith:"\u0627\u0633\u062a\u0628\u062f\u0644 \u0628\u0640",direction:"\u0627\u0644\u0627\u062a\u062c\u0627\u0647",up:"\u0644\u0623\u0639\u0644\u0649",down:"\u0644\u0623\u0633\u0641\u0644",mcase:"\u062d\u0627\u0644\u0647 \u0627\u0644\u062a\u0637\u0627\u0628\u0642",findnext:"\u0627\u0628\u062d\u062b \u0639\u0646 \u0627\u0644\u062a\u0627\u0644\u0649",allreplaced:"\u062a\u0645\u062a \u0639\u0645\u0644\u064a\u0647 \u0627\u0644\u0627\u0633\u062a\u0628\u062f\u0627\u0644","searchnext_desc":"\u0628\u062d\u062b \u0645\u0631\u0647 \u0627\u062e\u0631\u0649",notfound:"\u0644\u0642\u062f \u0627\u0646\u062a\u0647\u0649 \u0627\u0644\u0628\u062d\u062b \u0648\u0644\u0645 \u0646\u0639\u062b\u0631 \u0639\u0644\u0649 \u0627\u0649 \u0646\u062a\u064a\u062c\u0647","search_title":"\u0628\u062d\u062b","replace_title":"\u0628\u062d\u062b/\u0627\u0633\u062a\u0628\u062f\u0627\u0644",replaceall:"\u0627\u0633\u062a\u0628\u062f\u0627\u0644 \u0627\u0644\u0643\u0644",replace:"\u0627\u0633\u062a\u0628\u062f\u0627\u0644"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/az_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/az_dlg.js
deleted file mode 100644
index d9085f847..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/az_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('az.searchreplace_dlg',{findwhat:"N\u0259 axtar\u0131ls\u0131n",replacewith:"N\u0259y\u0259 d\u0259yi\u015filsin",direction:"\u0130stiqam\u0259tl\u0259ndirm\u0259",up:"Yuxar\u0131",down:"A\u015fa\u011f\u0131",mcase:"Registr\u0131 n\u0259z\u0259r\u0259 al",findnext:"Sonrak\u0131n\u0131 axtar",allreplaced:"B\u00fct\u00fcn qar\u015f\u0131la\u015fm\u0131\u015f s\u0259trl\u0259r d\u0259yi\u015fdirildi.","searchnext_desc":"S\u00f6zl\u0259ri axtar",notfound:"Axtar\u0131\u015f bitdi. S\u0259tr tap\u0131lmad\u0131.","search_title":"Axtar","replace_title":"Axtar/D\u0259yi\u015f",replaceall:"Ham\u0131s\u0131n\u0131 d\u0259yi\u015f",replace:"D\u0259yi\u015f"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/bg_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/bg_dlg.js
deleted file mode 100644
index 6560e0f87..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/bg_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bg.searchreplace_dlg',{findwhat:"\u0422\u044a\u0440\u0441\u0438",replacewith:"\u0417\u0430\u043c\u0435\u0441\u0442\u0438 \u0441",direction:"\u041f\u043e\u0441\u043e\u043a\u0430",up:"\u041d\u0430\u0433\u043e\u0440\u0435",down:"\u041d\u0430\u0434\u043e\u043b\u0443",mcase:"\u0421\u044a\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u043d\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u044a\u0440\u0430",findnext:"\u0422\u044a\u0440\u0441\u0438 \u0441\u043b\u0435\u0434\u0432\u0430\u0449\u0438",allreplaced:"\u0412\u0441\u0438\u0447\u043a\u0438 \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u0438 \u0434\u0443\u043c\u0438 \u0431\u044f\u0445\u0430 \u0437\u0430\u043c\u0435\u0441\u0442\u0435\u043d\u0438.","searchnext_desc":"\u0422\u044a\u0440\u0441\u0438 \u043e\u0442\u043d\u043e\u0432\u043e",notfound:"\u0422\u044a\u0440\u0441\u0435\u043d\u0435\u0442\u043e \u0437\u0430\u0432\u044a\u0440\u0448\u0438. \u0422\u044a\u0440\u0441\u0435\u043d\u0438\u0442\u0435 \u0434\u0443\u043c\u0438 \u043d\u0435 \u0431\u044f\u0445\u0430 \u043e\u0442\u043a\u0440\u0438\u0442\u0438.","search_title":"\u0422\u044a\u0440\u0441\u0438","replace_title":"\u0422\u044a\u0440\u0441\u0438/\u0417\u0430\u043c\u0435\u0441\u0442\u0438",replaceall:"\u0417\u0430\u043c\u0435\u0441\u0442\u0438 \u0432\u0441\u0438\u0447\u043a\u0438",replace:"\u0417\u0430\u043c\u0435\u0441\u0442\u0438"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/bn_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/bn_dlg.js
deleted file mode 100644
index 607e623c4..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/bn_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bn.searchreplace_dlg',{findwhat:"Find what",replacewith:"Replace with",direction:"Direction",up:"Up",down:"Down",mcase:"Match case",findnext:"Find next",allreplaced:"All occurrences of the search string were replaced.","searchnext_desc":"Find again",notfound:"The search has been completed. The search string could not be found.","search_title":"Find","replace_title":"Find/Replace",replaceall:"Replace all",replace:"Replace"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/br_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/br_dlg.js
deleted file mode 100644
index 9313b8346..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/br_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('br.searchreplace_dlg',{findwhat:"Localizar",replacewith:"Substituir com",direction:"Dire\u00e7\u00e3o",up:"Acima",down:"Abaixo",mcase:"Diferenciar mai\u00fasculas/min\u00fasculas",findnext:"Localizar pr\u00f3ximo",allreplaced:"Todas as substitui\u00e7\u00f5es foram efetuadas.","searchnext_desc":"Localizar novamente",notfound:"A pesquisa foi conclu\u00edda sem resultados.","search_title":"Localizar","replace_title":"Localizar/substituir",replaceall:"Substituir todos",replace:"Substituir"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/bs_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/bs_dlg.js
deleted file mode 100644
index 358f15c87..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/bs_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bs.searchreplace_dlg',{findwhat:"Prona\u0111i tekst",replacewith:"Zamijeni sa",direction:"Smjer",up:"Gore",down:"Dolje",mcase:"Match case",findnext:"Prona\u0111i sljede\u0107e",allreplaced:"Sva pojavljivanja tra\u017eenog teksta su zamijenjena.","searchnext_desc":"Prona\u0111i opet",notfound:"Pretra\u017eivanje je zavr\u0161eno. Tra\u017eeni tekst nije prona\u0111en.","search_title":"Prona\u0111i","replace_title":"Prona\u0111i/Zamijeni",replaceall:"Zamijeni sve",replace:"Zamijeni"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/ca_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/ca_dlg.js
deleted file mode 100644
index da37295f3..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/ca_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ca.searchreplace_dlg',{findwhat:"Cerca",replacewith:"Reempla\u00e7a amb",direction:"Direcci\u00f3",up:"Amunt",down:"Avall",mcase:"Distingeix maj\u00fascules/min\u00fascules",findnext:"Seg\u00fcent",allreplaced:"S\'han reempla\u00e7at totes les ocurr\u00e8ncies de la cadena cercada.","searchnext_desc":"Cerca de nou",notfound:"S\'ha completat la cerca. No s\'ha trobat la cadena cercada.","search_title":"Cerca","replace_title":"Cerca/Reempla\u00e7a",replaceall:"Reempla\u00e7a-ho tot",replace:"Reempla\u00e7a"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/cs_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/cs_dlg.js
deleted file mode 100644
index 81654085b..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/cs_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('cs.searchreplace_dlg',{findwhat:"Co hledat",replacewith:"\u010c\u00edm nahradit",direction:"Sm\u011br",up:"Nahoru",down:"Dol\u016f",mcase:"Rozli\u0161ovat velikost",findnext:"Naj\u00edt dal\u0161\u00ed",allreplaced:"V\u0161echny v\u00fdskyty byly nahrazeny.","searchnext_desc":"Naj\u00edt dal\u0161\u00ed",notfound:"Hled\u00e1n\u00ed bylo dokon\u010deno. Hledan\u00fd text nebyl nalezen.","search_title":"Naj\u00edt","replace_title":"Naj\u00edt/nahradit",replaceall:"Nahradit v\u0161e",replace:"Nahradit"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/cy_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/cy_dlg.js
deleted file mode 100644
index 204824f55..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/cy_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('cy.searchreplace_dlg',{findwhat:"Canfod beth",replacewith:"Adnewid gyda",direction:"Cyfeiriad",up:"I fyny",down:"I lawr",mcase:"Cydweddu priflythrennedd",findnext:"Canfod nesaf",allreplaced:"Amnewidwyd pob digwyddiad o\'r llinyn chwiliad.","searchnext_desc":"Canfod eto",notfound:"Mae\'r chwiliad wedi cwblhau. Methu canfod y llinyn chwiliad.","search_title":"Canfod","replace_title":"Canfod/Amnewid",replaceall:"Amnewid pob un",replace:"Amnewid"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/da_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/da_dlg.js
deleted file mode 100644
index b551cea04..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/da_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('da.searchreplace_dlg',{findwhat:"S\u00f8g efter",replacewith:"Erstat med",direction:"Retning",up:"Op",down:"Ned",mcase:"Forskel p\u00e5 store og sm\u00e5 bogstaver",findnext:"Find n\u00e6ste",allreplaced:"Alle forekomster af s\u00f8gestrengen er erstattet.","searchnext_desc":"S\u00f8g igen",notfound:"S\u00f8gningen gav intet resultat.","search_title":"S\u00f8g","replace_title":"S\u00f8g / erstat",replaceall:"Erstat alle",replace:"Erstat"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/de_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/de_dlg.js
deleted file mode 100644
index 7c40acd9e..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/de_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('de.searchreplace_dlg',{findwhat:"Zu suchender Text",replacewith:"Ersetzen durch",direction:"Suchrichtung",up:"Aufw\u00e4rts",down:"Abw\u00e4rts",mcase:"Gro\u00df-/Kleinschreibung beachten",findnext:"Weitersuchen",allreplaced:"Alle Vorkommen der Zeichenkette wurden ersetzt.","searchnext_desc":"Weitersuchen",notfound:"Die Suche ist am Ende angelangt. Die Zeichenkette konnte nicht gefunden werden.","search_title":"Suchen","replace_title":"Suchen/Ersetzen",replaceall:"Alle ersetzen",replace:"Ersetzen"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/el_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/el_dlg.js
deleted file mode 100644
index 10e564dc8..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/el_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('el.searchreplace_dlg',{findwhat:"\u0395\u03cd\u03c1\u03b5\u03c3\u03b7 \u03c4\u03bf\u03c5",replacewith:"\u0391\u03bd\u03c4\u03b9\u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7 \u03bc\u03b5",direction:"\u039a\u03b1\u03c4\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7",up:"\u03a0\u03ac\u03bd\u03c9",down:"\u039a\u03ac\u03c4\u03c9",mcase:"\u03a4\u03b1\u03af\u03c1\u03b9\u03b1\u03c3\u03bc\u03b1 \u03ba\u03b5\u03c6\u03b1\u03bb\u03b1\u03af\u03b1/\u03bc\u03b9\u03ba\u03c1\u03ac",findnext:"\u0392\u03c1\u03b5\u03c2 \u03b5\u03c0\u03cc\u03bc\u03b5\u03bd\u03bf",allreplaced:"\u038c\u03bb\u03b5\u03c2 \u03bf\u03b9 \u03b5\u03bc\u03c6\u03b1\u03bd\u03af\u03c3\u03b5\u03b9\u03c2 \u03c4\u03bf\u03c5 \u03b6\u03b7\u03c4\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf\u03c5 \u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5 \u03b1\u03bd\u03c4\u03b9\u03ba\u03b1\u03c4\u03b1\u03c3\u03c4\u03ac\u03b8\u03b7\u03ba\u03b1\u03bd.","searchnext_desc":"\u0395\u03cd\u03c1\u03b5\u03c3\u03b7 \u03be\u03b1\u03bd\u03ac",notfound:"\u0397 \u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7 \u03c4\u03b5\u03bb\u03b5\u03af\u03c9\u03c3\u03b5. \u03a4\u03bf \u03b6\u03b7\u03c4\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf \u03ba\u03b5\u03af\u03bc\u03b5\u03bd\u03bf \u03b4\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5.","search_title":"\u0395\u03cd\u03c1\u03b5\u03c3\u03b7","replace_title":"\u0395\u03cd\u03c1\u03b5\u03c3\u03b7/\u0391\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7",replaceall:"\u0391\u03bd\u03c4\u03b9\u03ba\u03b1\u03c4. \u03cc\u03bb\u03c9\u03bd",replace:"\u0391\u03bd\u03c4\u03b9\u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/en_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/en_dlg.js
deleted file mode 100644
index 8a6590097..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/en_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('en.searchreplace_dlg',{findwhat:"Find What",replacewith:"Replace with",direction:"Direction",up:"Up",down:"Down",mcase:"Match Case",findnext:"Find Next",allreplaced:"All occurrences of the search string were replaced.","searchnext_desc":"Find Again",notfound:"The search has been completed. The search string could not be found.","search_title":"Find","replace_title":"Find/Replace",replaceall:"Replace All",replace:"Replace"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/eo_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/eo_dlg.js
deleted file mode 100644
index 3cd418510..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/eo_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('eo.searchreplace_dlg',{findwhat:"Ser\u0109i",replacewith:"Anstata\u016digi per",direction:"Direkto",up:"Supren",down:"Suben",mcase:"Usklecodistinga",findnext:"Ser\u0109i sekvan",allreplaced:"\u0108iuj anstata\u016digoj estas faritaj.","searchnext_desc":"Ser\u0109i denove",notfound:"La ser\u0109o fini\u011dis sen rezultoj.","search_title":"Ser\u0109i","replace_title":"Ser\u0109i/anstata\u016digi",replaceall:"Anstata\u016digi \u0109iujn",replace:"Anstata\u016digi"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/es_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/es_dlg.js
deleted file mode 100644
index 62e178de6..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/es_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('es.searchreplace_dlg',{findwhat:"Qu\u00e9 buscar",replacewith:"Reemplazar por",direction:"Direcci\u00f3n",up:"Arriba",down:"Abajo",mcase:"Min\u00fas./May\u00fas.",findnext:"Buscar siguiente",allreplaced:"Se ha reemplazado el texto.","searchnext_desc":"Buscar de nuevo",notfound:"La b\u00fasqueda se ha completado. No se encontr\u00f3 el texto introducido.","search_title":"Buscar","replace_title":"Buscar/Reemplazar",replaceall:"Reemplazar todo",replace:"Reemplazar"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/et_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/et_dlg.js
deleted file mode 100644
index ef567f7bd..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/et_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('et.searchreplace_dlg',{findwhat:"Otsi mida",replacewith:"Asenda millega",direction:"Suund",up:"\u00dcles",down:"Alla",mcase:"Vasta suurusele",findnext:"Otsi j\u00e4rgmine",allreplaced:"K\u00f5ik otsis\u00f5na ilmingud on asendatud.","searchnext_desc":"Otsi uuesti",notfound:"Otsing on l\u00f5petatud. Otsis\u00f5na ei leitud.","search_title":"Otsi","replace_title":"Otsi/Asenda",replaceall:"Asenda k\u00f5ik",replace:"Asenda"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/eu_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/eu_dlg.js
deleted file mode 100644
index 602cfa8bc..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/eu_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('eu.searchreplace_dlg',{findwhat:"Zer bilatu",replacewith:"Zerekin ordezkatu",direction:"Norabidea",up:"Gorantz",down:"Beherantz",mcase:"Maiuskulak eta minuskulak kontuan hartu",findnext:"Hurrengoa",allreplaced:"Bilatutakoaren agerpen guztiak ordezkatu dira.","searchnext_desc":"Berriz bilatu",notfound:"Bilaketa bukatu da. Bilatutakoa ez da aurkitu.","search_title":"Bilatu","replace_title":"Bilatu/Ordezkatu",replaceall:"Ordezkatu guztiak",replace:"Ordezkatu"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/fa_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/fa_dlg.js
deleted file mode 100644
index d8c5d4b72..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/fa_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fa.searchreplace_dlg',{findwhat:"\u062c\u0633\u062a\u062c\u0648\u06cc",replacewith:"\u062a\u0639\u0648\u06cc\u0636 \u0628\u0627",direction:"\u062c\u0647\u062a",up:"\u0628\u0627\u0644\u0627",down:"\u067e\u0627\u06cc\u06cc\u0646",mcase:"\u0647\u0645\u0633\u0627\u0646 \u0628\u0648\u062f\u0646 \u062d\u0631\u0648\u0641",findnext:"\u062c\u0633\u062a\u062c\u0648\u06cc \u0628\u0639\u062f\u06cc",allreplaced:"\u062a\u0645\u0627\u0645\u06cc \u06a9\u0644\u0645\u0627\u062a \u06cc\u0627\u0641\u062a \u0634\u062f\u0647 \u062a\u063a\u06cc\u06cc\u0631 \u06cc\u0627\u0641\u062a\u0646\u062f","searchnext_desc":"\u062c\u0633\u062a\u062c\u0648\u06cc \u0645\u062c\u062f\u062f",notfound:"\u062c\u0633\u062a\u062c\u0648 \u06a9\u0627\u0645\u0644 \u0634\u062f. \u06a9\u0644\u0645\u0647 \u062c\u0633\u062a\u062c\u0648 \u0634\u062f\u0647 \u06cc\u0627\u0641\u062a \u0646\u0634\u062f","search_title":"\u062c\u0633\u062a\u062c\u0648","replace_title":"\u062c\u0633\u062a\u062c\u0648/\u062a\u0639\u0648\u06cc\u0636",replaceall:"\u062a\u0639\u0648\u06cc\u0636 \u0647\u0645\u0647",replace:"\u062a\u0639\u0648\u06cc\u0636"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/fi_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/fi_dlg.js
deleted file mode 100644
index c2617c337..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/fi_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fi.searchreplace_dlg',{findwhat:"Etsit\u00e4\u00e4n",replacewith:"Korvataan",direction:"Suunta",up:"Yl\u00f6s",down:"Alas",mcase:"Huomioi isot ja pienet kirjaimet",findnext:"Etsi seuraavaa",allreplaced:"Kaikki l\u00f6ydetyt merkkijonot korvattiin.","searchnext_desc":"Etsi uudestaan",notfound:"Haku on valmis. Haettua teksti\u00e4 ei l\u00f6ytynyt.","search_title":"Haku","replace_title":"Etsi ja korvaa",replaceall:"Korvaa kaikki",replace:"Korvaa"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/fr_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/fr_dlg.js
deleted file mode 100644
index 707b5c2a9..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/fr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fr.searchreplace_dlg',{findwhat:"Rechercher ceci",replacewith:"Remplacer par",direction:"Direction",up:"Vers le haut",down:"Vers le bas",mcase:"Sensible \u00e0 la casse",findnext:"Rechercher le suivant",allreplaced:"Toutes les occurrences de la cha\u00eene recherch\u00e9e ont \u00e9t\u00e9 remplac\u00e9es.","searchnext_desc":"Suivant",notfound:"La recherche est termin\u00e9e. La cha\u00eene recherch\u00e9e n\'a pas \u00e9t\u00e9 trouv\u00e9e.","search_title":"Rechercher","replace_title":"Rechercher / remplacer",replaceall:"Tout remplacer",replace:"Remplacer"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/gl_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/gl_dlg.js
deleted file mode 100644
index 72be08cda..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/gl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('gl.searchreplace_dlg',{findwhat:"Localizar",replacewith:"Reemplazar por",direction:"Direcci\u00f3n",up:"Arriba",down:"Abaixo",mcase:"Min\u00fas./Mai\u00fas.",findnext:"Buscar seginte",allreplaced:"T\u00f3da-las coincidencias do texto buscado foron reemplazadas.","searchnext_desc":"Buscar outra vez",notfound:"A busca rematou. No se atopou o texto buscado.","search_title":"Buscar","replace_title":"Buscar/Reemplazar",replaceall:"Reemplazar todo",replace:"Reemplazar"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/he_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/he_dlg.js
deleted file mode 100644
index c5861bbd4..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/he_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('he.searchreplace_dlg',{findwhat:"\u05dc\u05d7\u05e4\u05e9 \u05d0\u05ea",replacewith:"\u05dc\u05d4\u05d7\u05dc\u05d9\u05e3 \u05d1",direction:"\u05db\u05d9\u05d5\u05d5\u05df",up:"\u05dc\u05de\u05e2\u05dc\u05d4",down:"\u05dc\u05de\u05d8\u05d4",mcase:"\u05d4\u05ea\u05d0\u05dd \u05d0\u05d5\u05ea\u05d9\u05d5\u05ea \u05e8\u05d9\u05e9\u05d9\u05d5\u05ea",findnext:"\u05d7\u05e4\u05e9 \u05d0\u05ea \u05d4\u05d1\u05d0",allreplaced:"\u05db\u05dc \u05e4\u05e8\u05d9\u05d8\u05d9 \u05d4\u05d7\u05d9\u05e4\u05d5\u05e9 \u05d4\u05d5\u05d7\u05dc\u05e4\u05d5","searchnext_desc":"\u05d7\u05d9\u05e4\u05d5\u05e9 \u05d4\u05d1\u05d0",notfound:"\u05d4\u05d7\u05d9\u05e4\u05d5\u05e9 \u05d4\u05e1\u05ea\u05d9\u05d9\u05dd. \u05e4\u05e8\u05d9\u05d8 \u05d4\u05d7\u05d9\u05e4\u05d5\u05e9 \u05dc\u05d0 \u05e0\u05de\u05e6\u05d0.","search_title":"\u05d7\u05d9\u05e4\u05d5\u05e9","replace_title":"\u05d7\u05d9\u05e4\u05d5\u05e9 \u05d5\u05d4\u05d7\u05dc\u05e4\u05d4",replaceall:"\u05d4\u05d7\u05dc\u05e4\u05ea \u05d4\u05db\u05dc",replace:"\u05d4\u05d7\u05dc\u05e4\u05d4"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/hi_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/hi_dlg.js
deleted file mode 100644
index a65ceb8ae..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/hi_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hi.searchreplace_dlg',{findwhat:"Find what",replacewith:"Replace with",direction:"Direction",up:"Up",down:"Down",mcase:"Match case",findnext:"Find next",allreplaced:"All occurrences of the search string were replaced.","searchnext_desc":"Find again",notfound:"The search has been completed. The search string could not be found.","search_title":"Find","replace_title":"Find/Replace",replaceall:"Replace all",replace:"Replace"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/hr_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/hr_dlg.js
deleted file mode 100644
index 9dafb4511..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/hr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hr.searchreplace_dlg',{findwhat:"Prona\u0111i tekst",replacewith:"Zamijeni sa",direction:"Smjer",up:"Gore",down:"Dolje",mcase:"Usporedi velika/mala slova",findnext:"Prona\u0111i sljede\u0107e",allreplaced:"Sva pojavljivanja tra\u017eenog teksta su zamijenjena.","searchnext_desc":"Prona\u0111i opet",notfound:"Pretra\u017eivanje je zavr\u0161eno. Tra\u017eeni tekst nije prona\u0111en.","search_title":"Prona\u0111i","replace_title":"Prona\u0111i/Zamijeni",replaceall:"Zamijeni sve",replace:"Zamijeni"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/hu_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/hu_dlg.js
deleted file mode 100644
index 4165838c6..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/hu_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hu.searchreplace_dlg',{findwhat:"Mit keres",replacewith:"Mire cser\u00e9l",direction:"Ir\u00e1ny",up:"Fel",down:"Le",mcase:"Kis- \u00e9s nagybet\u0171k megk\u00fcl\u00f6nb\u00f6ztet\u00e9se",findnext:"K\u00f6vetkez\u0151",allreplaced:"A keresett r\u00e9szsz\u00f6veg minden el\u0151fordul\u00e1sa cser\u00e9lve lett.","searchnext_desc":"Keres\u00e9s megint",notfound:"A keres\u00e9s v\u00e9get \u00e9rt. A keresett sz\u00f6vegr\u00e9sz nem tal\u00e1lhat\u00f3.","search_title":"Keres\u00e9s","replace_title":"Keres\u00e9s/Csere",replaceall:"\u00d6sszes cser\u00e9je",replace:"Csere"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/hy_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/hy_dlg.js
deleted file mode 100644
index c2cdadb43..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/hy_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hy.searchreplace_dlg',{findwhat:"\u0548\u0580\u0578\u0576\u0565\u056c",replacewith:"\u0553\u0578\u0583\u0578\u056d\u0565\u056c",direction:"\u0548\u0582\u0572\u0572\u0578\u0582\u0569\u0575\u0578\u0582\u0576",up:"\u054e\u0565\u0580\u0587 ",down:"\u0546\u0565\u0580\u0584\u0587",mcase:"\u0540\u0561\u0577\u057e\u056b \u0561\u057c\u0576\u0565\u056c \u057c\u0565\u0563\u056b\u057d\u057f\u0578\u0580\u0568",findnext:"\u0533\u057f\u0576\u0565\u056c \u0570\u0561\u057b\u0578\u0580\u0564\u0568",allreplaced:"\u0532\u0578\u056c\u0578\u0580 \u0563\u057f\u0576\u057e\u0561\u056e\u0576\u0565\u0580\u0568 \u0583\u0578\u0583\u0578\u056d\u057e\u0565\u0581\u056b\u0576","searchnext_desc":"\u0546\u0578\u0580\u056b\u0581 \u0578\u0580\u0578\u0576\u0565\u056c",notfound:"\u0548\u0580\u0578\u0576\u0578\u0582\u0574\u0568 \u0561\u057e\u0561\u0580\u057f\u057e\u0565\u0581\u0589 \u0548\u0579\u056b\u0576\u0579 \u0579\u056b \u0563\u057f\u0576\u057e\u0565\u056c","search_title":"\u0548\u0580\u0578\u0576\u0565\u056c","replace_title":"\u0548\u0580\u0578\u0576\u0565\u056c / \u0553\u0578\u0583\u0578\u056d\u0565\u056c",replaceall:"\u0553\u0578\u0583\u0578\u056d\u0565\u056c \u0562\u0561\u056c\u0578\u0580\u0568",replace:"\u0553\u0578\u0583\u0578\u056d\u0565\u056c"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/id_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/id_dlg.js
deleted file mode 100644
index 3d6ce654f..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/id_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('id.searchreplace_dlg',{findwhat:"Cari apa...",replacewith:"Ganti dengan...",direction:"Arah",up:"Atas",down:"Bawah",mcase:"Match case",findnext:"Cari selanjutnya",allreplaced:"Seluruh kata dari string pencarian telah digantikan","searchnext_desc":"Cari Lagi",notfound:"Pencarian selesai. Hasil tidak ditemukan.","search_title":"Cari","replace_title":"Cari/Ganti",replaceall:"Ganti semua",replace:"Ganti"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/is_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/is_dlg.js
deleted file mode 100644
index 94004afdf..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/is_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('is.searchreplace_dlg',{findwhat:"Finna hva\u00f0",replacewith:"Skipta \u00fat me\u00f0",direction:"\u00c1tt",up:"Upp",down:"Ni\u00f0ur",mcase:"Match case",findnext:"Finna n\u00e6sta",allreplaced:"\u00d6llum ni\u00f0urst\u00f6\u00f0um leitar var skipt \u00fat.","searchnext_desc":"Finna aftur",notfound:"Leitinni er loki\u00f0. Leitarstrengurinn fannst ekki.","search_title":"Finna","replace_title":"Finna/Skipta \u00fat",replaceall:"Skipta \u00fat \u00f6llu",replace:"Skipta \u00fat"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/it_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/it_dlg.js
deleted file mode 100644
index da34e5d83..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/it_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('it.searchreplace_dlg',{findwhat:"Trova:",replacewith:"Sostituisci con:",direction:"Direzione",up:"Avanti",down:"Indietro",mcase:"Maiuscole/minuscole",findnext:"Trova succ.",allreplaced:"Tutte le occorrenze del criterio di ricerca sono state sostituite.","searchnext_desc":"Trova successivo",notfound:"Ricerca completata. Nessun risultato trovato.","search_title":"Trova","replace_title":"Trova/Sostituisci",replaceall:"Sost. tutto",replace:"Sostituisci"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/ja_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/ja_dlg.js
deleted file mode 100644
index a12eb7830..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/ja_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ja.searchreplace_dlg',{findwhat:"\u691c\u7d22\u3059\u308b\u6587\u5b57\u5217",replacewith:"\u7f6e\u63db\u5f8c\u306e\u6587\u5b57\u5217",direction:"\u65b9\u5411",up:"\u4e0a\u3078",down:"\u4e0b\u3078",mcase:"\u5927\u6587\u5b57\u30fb\u5c0f\u6587\u5b57\u306e\u533a\u5225",findnext:"\u6b21\u3092\u691c\u7d22",allreplaced:"\u3059\u3079\u3066\u7f6e\u63db\u3057\u307e\u3057\u305f\u3002","searchnext_desc":"\u518d\u691c\u7d22",notfound:"\u691c\u7d22\u3092\u5b8c\u4e86\u3057\u307e\u3057\u305f\u3002\u691c\u7d22\u6587\u5b57\u5217\u306f\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002","search_title":"\u691c\u7d22","replace_title":"\u691c\u7d22\u3068\u7f6e\u63db",replaceall:"\u3059\u3079\u3066\u7f6e\u63db",replace:"\u7f6e\u63db"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/ka_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/ka_dlg.js
deleted file mode 100644
index fdf508fc4..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/ka_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ka.searchreplace_dlg',{findwhat:"\u10eb\u10d4\u10d5\u10dc\u10d0",replacewith:"\u10e8\u10d4\u10ea\u10d5\u10da\u10d0 ..",direction:"\u10db\u10d8\u10db\u10d0\u10e0\u10d7\u10e3\u10da\u10d4\u10d1\u10d0",up:"\u10d6\u10d4\u10db\u10dd\u10d7 ",down:"\u10e5\u10d5\u10d4\u10db\u10dd\u10d7",mcase:"\u10e0\u10d4\u10d2\u10d8\u10e1\u10e2\u10e0\u10d8\u10e1 \u10d2\u10d0\u10d7\u10d5\u10d0\u10da\u10d8\u10e1\u10ec\u10d8\u10dc\u10d4\u10d1\u10d0",findnext:"\u10d8\u10de\u10dd\u10d5\u10dc\u10d4 \u10e8\u10d4\u10db\u10d3\u10d4\u10d2",allreplaced:"\u10e7\u10d5\u10d4\u10da\u10d0 \u10db\u10dc\u10d8\u10e8\u10dc\u10d4\u10da\u10dd\u10d1\u10d0 \u10e8\u10d4\u10ea\u10d5\u10da\u10d8\u10da\u10d8\u10d0.","searchnext_desc":"\u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d8\u10d7 \u10de\u10dd\u10d5\u10dc\u10d0",notfound:"\u10eb\u10d4\u10d1\u10dc\u10d0 \u10d3\u10d0\u10e1\u10e0\u10e3\u10da\u10d4\u10d1\u10e3\u10da\u10d8\u10d0. \u10e8\u10d4\u10e1\u10d0\u10e2\u10e7\u10d5\u10d8\u10e1\u10d1\u10d8 \u10d0\u10e0 \u10d0\u10e0\u10d8\u10e1 \u10dc\u10d0\u10de\u10dd\u10d5\u10dc\u10d8.","search_title":"\u10eb\u10d8\u10d4\u10d1\u10d0","replace_title":"\u10db\u10dd\u10eb\u10d4\u10d1\u10dc\u10d0 \u10d3\u10d0 \u10e8\u10d4\u10ea\u10d5\u10da\u10d0",replaceall:"\u10e7\u10d5\u10d4\u10da\u10d0\u10e4\u10d4\u10e0\u10d8\u10e1 \u10e8\u10d4\u10ea\u10d5\u10da\u10d0",replace:"\u10e8\u10d4\u10ea\u10d5\u10da\u10d0"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/ko_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/ko_dlg.js
deleted file mode 100644
index 15587c91b..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/ko_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ko.searchreplace_dlg',{findwhat:"\ucc3e\uc744 \ub0b4\uc6a9",replacewith:"\ubc14\uafc0 \ub0b4\uc6a9",direction:"\ubc29\ud5a5",up:"\uc704\ub85c",down:"\uc544\ub798\ub85c",mcase:"\ub300\uc18c\ubb38\uc790 \uad6c\ubcc4",findnext:"\ub2e4\uc74c \ucc3e\uae30",allreplaced:"\uac80\uc0c9 \ubb38\uc790\uc5f4\uc744 \ubaa8\ub450 \ucc3e\uc544 \ubc14\uafe8\uc2b5\ub2c8\ub2e4.","searchnext_desc":"\ub2e4\uc2dc \ucc3e\uae30",notfound:"\uac80\uc0c9\uc774 \uc644\ub8cc\ub410\uc2b5\ub2c8\ub2e4. \uac80\uc0c9 \ubb38\uc790\uc5f4\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.","search_title":"\ucc3e\uae30","replace_title":"\ucc3e\uae30/\ubc14\uafb8\uae30",replaceall:"\ubaa8\ub450 \ubc14\uafb8\uae30",replace:"\ubc14\uafb8\uae30"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/lt_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/lt_dlg.js
deleted file mode 100644
index bc35477fd..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/lt_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('lt.searchreplace_dlg',{findwhat:"Ko ie\u0161koti",replacewith:"Kuo pakeisti",direction:"Kryptis",up:"\u012e vir\u0161\u0173",down:"\u012e apa\u010di\u0105",mcase:"Visi\u0161kas atitikimas",findnext:"Ie\u0161koti sek.",allreplaced:"Visi paie\u0161kos fraz\u0117s pasikartojimai pakeisti.","searchnext_desc":"Ie\u0161koti dar kart\u0105",notfound:"Paie\u0161ka baigta. Paie\u0161kos fraz\u0117 nerasta.","search_title":"Ie\u0161koti","replace_title":"Ie\u0161koti/Pakeisti",replaceall:"Pakeisti visus",replace:"Pakeisti"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/lv_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/lv_dlg.js
deleted file mode 100644
index f093dd5c2..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/lv_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('lv.searchreplace_dlg',{findwhat:"Ko atrast",replacewith:"Aizvietot ar",direction:"Virziens",up:"Uz aug\u0161u",down:"Uz leju",mcase:"Re\u0123istrj\u016bt\u012bgs",findnext:"Mekl\u0113t n\u0101kamo",allreplaced:"Visas fr\u0101zes/v\u0101rdi tika veiksm\u012bgi aizvietoti.","searchnext_desc":"Mekl\u0113t v\u0113lreiz",notfound:"Mekl\u0113\u0161ana pabeigta. Mekl\u0113t\u0101 fr\u0101ze/v\u0101rds netika atrasta.","search_title":"Mekl\u0113t","replace_title":"Mekl\u0113t/Aizvietot",replaceall:"Aizvietot visu",replace:"Aizvietot"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/mk_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/mk_dlg.js
deleted file mode 100644
index bf3828a15..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/mk_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('mk.searchreplace_dlg',{findwhat:"\u041d\u0430\u0458\u0434\u0438 \u0442\u0435\u043a\u0441\u0442",replacewith:"\u0417\u0430\u043c\u0435\u043d\u0438 \u0441\u043e",direction:"\u0421\u043c\u0435\u0440",up:"\u0413\u043e\u0440\u0435",down:"\u0414\u043e\u043b\u0435",mcase:"\u0441\u043b\u0443\u0447\u0430\u0458 \u043a\u043e\u0433\u0430 \u0435 \u043f\u043e\u0433\u043e\u0434\u0435\u043d\u043e",findnext:"\u041d\u0430\u0458\u0434\u0438 \u0441\u043b\u0435\u0434\u043d\u043e",allreplaced:"\u0421\u0438\u0442\u0435 \u043f\u043e\u0458\u0430\u0432\u0443\u0432\u0430\u045a\u0430 \u043d\u0430 \u0431\u0430\u0440\u0430\u043d\u0438\u043e\u0442 \u0442\u0435\u043a\u0441\u0442 \u0441\u0435 \u0437\u0430\u043c\u0435\u043d\u0435\u0442\u0438","searchnext_desc":"\u041d\u0430\u0458\u0434\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e",notfound:"\u0411\u0430\u0440\u0430\u045a\u0435\u0442\u043e \u0437\u0430\u0432\u0440\u0448\u0438. \u0411\u0430\u0440\u0430\u043d\u0438\u043e\u0442 \u0442\u0435\u043a\u0441\u0442 \u043d\u0435 \u0435 \u043d\u0430\u0458\u0434\u0435\u043d.","search_title":"\u041d\u0430\u0458\u0434\u0438","replace_title":"\u041d\u0430\u0458\u0434\u0438/\u0417\u0430\u043c\u0435\u043d\u0438",replaceall:"\u0417\u0430\u043c\u0435\u043d\u0438 \u0433\u0438 \u0441\u0438\u0442\u0435",replace:"\u0417\u0430\u043c\u0435\u043d\u0438"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/ms_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/ms_dlg.js
deleted file mode 100644
index 6ec6c1554..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/ms_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ms.searchreplace_dlg',{findwhat:"Cari apa",replacewith:"Ganti dengan",direction:"Arah",up:"Atas",down:"Bawah",mcase:"Samakan kes",findnext:"Carian seterusnya",allreplaced:"Kesemua perkataan telah digantikan.","searchnext_desc":"Cari lagi",notfound:"Carian tamat. Perkataan yang dicari tiada.","search_title":"Cari","replace_title":"Cari/Ganti",replaceall:"Ganti kesemuanya",replace:"Ganti"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/nb_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/nb_dlg.js
deleted file mode 100644
index 222de644a..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/nb_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nb.searchreplace_dlg',{findwhat:"Finn hva",replacewith:"Erstatt med",direction:"Retning",up:"Oppover",down:"Nedover",mcase:"Skill mellom store og sm\u00e5 tegn",findnext:"Finn neste",allreplaced:"Alle forekomster av s\u00f8kestrengen er erstattet.","searchnext_desc":"S\u00f8k igjen",notfound:"S\u00f8ket er avsluttet. Fant ikke s\u00f8kestrengen.","search_title":"S\u00f8k","replace_title":"S\u00f8k/Erstatt",replaceall:"Erstatt alt",replace:"Erstatt"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/nl_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/nl_dlg.js
deleted file mode 100644
index afda5f032..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/nl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nl.searchreplace_dlg',{findwhat:"Zoeken naar",replacewith:"Vervangen door",direction:"Richting",up:"Omhoog",down:"Omlaag",mcase:"Identieke hoofdletters/kleine letters",findnext:"Zoeken",allreplaced:"Alle instanties van de zoekterm zijn vervangen.","searchnext_desc":"Opnieuw zoeken",notfound:"Het doorzoeken is voltooid. De zoekterm kon niet meer worden gevonden.","search_title":"Zoeken","replace_title":"Zoeken/Vervangen",replaceall:"Alles verv.",replace:"Vervangen"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/nn_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/nn_dlg.js
deleted file mode 100644
index 3dddb7fc0..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/nn_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nn.searchreplace_dlg',{findwhat:"Finn kva",replacewith:"Erstatt med",direction:"Retning",up:"Oppover",down:"Nedover",mcase:"Skill mellom store og sm\u00e5 teikn",findnext:"Finn neste",allreplaced:"Alle f\u00f8rekomstar av s\u00f8kjestrengen er erstatta.","searchnext_desc":"S\u00f8k igjen",notfound:"S\u00f8ket avslutta. Fann ikkje s\u00f8kjestrengen.","search_title":"S\u00f8k","replace_title":"S\u00f8k/Erstatt",replaceall:"Erstatt alt",replace:"Erstatt"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/pl_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/pl_dlg.js
deleted file mode 100644
index df815de1c..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/pl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('pl.searchreplace_dlg',{findwhat:"Znajd\u017a...",replacewith:"Zamie\u0144 na...",direction:"Kierunek",up:"W g\u00f3r\u0119",down:"W d\u00f3\u0142",mcase:"Uwzgl\u0119dniaj wielko\u015b\u0107 liter",findnext:"Znajd\u017a nast\u0119pny",allreplaced:"Wszystkie wyst\u0105pienia szukanego fragmentu zosta\u0142y zast\u0105pione.","searchnext_desc":"Znajd\u017a ponownie",notfound:"Wyszukiwanie zako\u0144czone. Poszukiwany fragment nie zosta\u0142 znaleziony.","search_title":"Znajd\u017a","replace_title":"Znajd\u017a/zamie\u0144",replaceall:"Zamie\u0144 wszystko",replace:"Zamie\u0144"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/ps_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/ps_dlg.js
deleted file mode 100644
index 4a69379af..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/ps_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ps.searchreplace_dlg',{findwhat:"Find what",replacewith:"Replace with",direction:"Direction",up:"Up",down:"Down",mcase:"Match case",findnext:"Find next",allreplaced:"All occurrences of the search string were replaced.","searchnext_desc":"Find again",notfound:"The search has been completed. The search string could not be found.","search_title":"Find","replace_title":"Find/Replace",replaceall:"Replace all",replace:"Replace"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/pt_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/pt_dlg.js
deleted file mode 100644
index 25c9a42c5..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/pt_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('pt.searchreplace_dlg',{findwhat:"Localizar",replacewith:"Substituir com",direction:"Dire\u00e7\u00e3o",up:"Acima",down:"Abaixo",mcase:"Diferenciar mai\u00fasculas",findnext:"Localizar pr\u00f3x.",allreplaced:"Todas as substitui\u00e7\u00f5es foram efetuadas.","searchnext_desc":"Localizar novamente",notfound:"A pesquisa foi conclu\u00edda sem resultados.","search_title":"Localizar","replace_title":"Localizar/substituir",replaceall:"Subst. todos",replace:"Substituir"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/ro_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/ro_dlg.js
deleted file mode 100644
index d07670777..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/ro_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ro.searchreplace_dlg',{findwhat:"Termen c\u0103utat:",replacewith:"\u00cenlocuie\u0219te cu:",direction:"Direc\u021bia",up:"\u00cen sus",down:"\u00cen jos",mcase:"Conteaz\u0103 literele mici/mari?",findnext:"Mai caut\u0103",allreplaced:"Toate instan\u021bele termenului c\u0103utat au fost \u00eenlocuite.","searchnext_desc":"Caut\u0103 din nou",notfound:"C\u0103utarea a fost terminat\u0103. Nu am g\u0103sit termenul c\u0103utat.","search_title":"Caut\u0103","replace_title":"C\u0103utare/\u00eenlocuire",replaceall:"\u00cenlocuie\u0219te tot",replace:"\u00cenlocuie\u0219te"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/ru_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/ru_dlg.js
deleted file mode 100644
index 3cc2af8d4..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/ru_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ru.searchreplace_dlg',{findwhat:"\u041f\u043e\u0438\u0441\u043a",replacewith:"\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430",direction:"\u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435",up:"\u0412\u0432\u0435\u0440\u0445 ",down:"\u0412\u043d\u0438\u0437",mcase:"\u0423\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0440\u0435\u0433\u0438\u0441\u0442\u0440",findnext:"\u041d\u0430\u0439\u0442\u0438 \u0434\u0430\u043b\u0435\u0435",allreplaced:"\u0412\u0441\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0431\u044b\u043b\u0438 \u0437\u0430\u043c\u0435\u043d\u0435\u043d\u044b.","searchnext_desc":"\u041d\u0430\u0439\u0442\u0438 \u0435\u0449\u0435",notfound:"\u041f\u043e\u0438\u0441\u043a \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d. \u0421\u043e\u043e\u0442\u0432\u0435\u0441\u0442\u0432\u0438\u0439 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e.","search_title":"\u041f\u043e\u0438\u0441\u043a","replace_title":"\u041f\u043e\u0438\u0441\u043a \u0438 \u0437\u0430\u043c\u0435\u043d\u0430",replaceall:"\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u0441\u0435",replace:"\u0417\u0430\u043c\u0435\u043d\u0430"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/si_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/si_dlg.js
deleted file mode 100644
index cfa3a2dda..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/si_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('si.searchreplace_dlg',{findwhat:"Find what",replacewith:"Replace with",direction:"Direction",up:"Up",down:"Down",mcase:"Match case",findnext:"Find next",allreplaced:"All occurrences of the search string were replaced.","searchnext_desc":"Find again",notfound:"The search has been completed. The search string could not be found.","search_title":"Find","replace_title":"Find/Replace",replaceall:"Replace all",replace:"Replace"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/sk_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/sk_dlg.js
deleted file mode 100644
index 569888671..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/sk_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sk.searchreplace_dlg',{findwhat:"H\u013eada\u0165 \u010do",replacewith:"Nahradi\u0165 \u010d\u00edm",direction:"Smer",up:"Nahor",down:"Nadol",mcase:"Rozli\u0161ova\u0165 mal\u00e9 a VE\u013dK\u00c9 p\u00edsmen\u00e1",findnext:"H\u013eada\u0165 \u010falej",allreplaced:"V\u0161etky v\u00fdskyty boli nahraden\u00e9.","searchnext_desc":"H\u013eada\u0165 \u010falej",notfound:"H\u013eadanie bolo dokon\u010den\u00e9. H\u013eadan\u00fd text nebol n\u00e1jden\u00fd.","search_title":"H\u013eada\u0165","replace_title":"H\u013eada\u0165 a nahradi\u0165",replaceall:"Nahradi\u0165 v\u0161etko",replace:"Nahradi\u0165"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/sl_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/sl_dlg.js
deleted file mode 100644
index 828fc6472..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/sl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sl.searchreplace_dlg',{findwhat:"I\u0161\u010dem za",replacewith:"Zamenjam z",direction:"Smer",up:"navzgor",down:"navzdol",mcase:"ujemanje velikosti",findnext:"Najdi nasled.",allreplaced:"Vse pojavitve iskanega besedila so bile zamenjane.","searchnext_desc":"Najdi znova",notfound:"Preiskovanje zaklju\u010deno. Iskanega besedila nisem na\u0161el.","search_title":"Najdi","replace_title":"Najdi/zamenjaj",replaceall:"Zamenjaj vse",replace:"Zamenjaj"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/sq_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/sq_dlg.js
deleted file mode 100644
index 851befdbe..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/sq_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sq.searchreplace_dlg',{findwhat:"K\u00ebrko p\u00ebr",replacewith:"Z\u00ebvend\u00ebso me",direction:"Drejtimi",up:"Lart",down:"Posht\u00eb",mcase:"P\u00ebrshtat madh\u00ebsin\u00eb e g\u00ebrm\u00ebs",findnext:"K\u00ebrko tjetr\u00ebn",allreplaced:"T\u00eb gjitha tekstet e gjetura u z\u00ebvend\u00ebsuan.","searchnext_desc":"K\u00ebrko p\u00ebrs\u00ebri",notfound:"K\u00ebrkimi p\u00ebrfundoi dhe nuk ktheu asnj\u00eb rezultat.","search_title":"K\u00ebrko","replace_title":"K\u00ebrko/Z\u00ebvend\u00ebso",replaceall:"Z\u00ebv. t\u00eb gjitha",replace:"Z\u00ebvend\u00ebso"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/sr_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/sr_dlg.js
deleted file mode 100644
index 0ce4906b4..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/sr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sr.searchreplace_dlg',{findwhat:"Prona\u0111i",replacewith:"Zameni sa",direction:"Smer",up:"Gore",down:"Dole",mcase:"Podudaranje velikih/malih slova",findnext:"Na\u0111i slede\u0107e",allreplaced:"Sva pojavljivanja tra\u017eenog teksta su zamenjena.","searchnext_desc":"Prona\u0111i ponovo",notfound:"Pretra\u017eivanje je zavr\u0161eno. Tra\u017eeni tekst nije prona\u0111en.","search_title":"Prona\u0111i","replace_title":"Prona\u0111i/Zameni",replaceall:"Zameni sve",replace:"Zameni"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/sv_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/sv_dlg.js
deleted file mode 100644
index d503ec86d..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/sv_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sv.searchreplace_dlg',{findwhat:"Hitta vad",replacewith:"Ers\u00e4tt med",direction:"Riktning",up:"Upp\u00e5t",down:"Ner\u00e5t",mcase:"Matcha gemener/versaler",findnext:"Hitta n\u00e4sta",allreplaced:"Alla st\u00e4llen d\u00e4r s\u00f6kstr\u00e4ngen kunde hittas har ersatts.","searchnext_desc":"S\u00f6k igen",notfound:"S\u00f6kningen har slutf\u00f6rts. S\u00f6kstr\u00e4ngen kunde inte hittas.","search_title":"S\u00f6k","replace_title":"S\u00f6k/ers\u00e4tt",replaceall:"Ers\u00e4tt alla",replace:"Ers\u00e4tt"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/ta_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/ta_dlg.js
deleted file mode 100644
index 908bf7fe5..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/ta_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ta.searchreplace_dlg',{findwhat:"Find what",replacewith:"Replace with",direction:"Direction",up:"Up",down:"Down",mcase:"Match case",findnext:"Find next",allreplaced:"All occurrences of the search string were replaced.","searchnext_desc":"Find again",notfound:"The search has been completed. The search string could not be found.","search_title":"Find","replace_title":"Find/Replace",replaceall:"Replace all",replace:"Replace"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/th_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/th_dlg.js
deleted file mode 100644
index cd02e1880..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/th_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('th.searchreplace_dlg',{findwhat:"\u0e04\u0e49\u0e19\u0e2b\u0e32",replacewith:"\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e14\u0e49\u0e27\u0e22",direction:"\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07",up:"\u0e1a\u0e19",down:"\u0e25\u0e48\u0e32\u0e07",mcase:"\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e17\u0e38\u0e01\u0e2d\u0e22\u0e48\u0e32\u0e07",findnext:"\u0e04\u0e49\u0e19\u0e2b\u0e32\u0e15\u0e48\u0e2d\u0e44\u0e1b",allreplaced:"\u0e17\u0e38\u0e01\u0e04\u0e33\u0e17\u0e35\u0e48\u0e43\u0e2a\u0e48\u0e16\u0e39\u0e01\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27","searchnext_desc":"\u0e04\u0e49\u0e19\u0e2b\u0e32\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07",notfound:"\u0e01\u0e32\u0e23\u0e04\u0e49\u0e19\u0e2b\u0e32\u0e2a\u0e34\u0e49\u0e19\u0e2a\u0e38\u0e14 \u0e40\u0e23\u0e32\u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e2d\u0e30\u0e44\u0e23\u0e40\u0e25\u0e22","search_title":"\u0e04\u0e49\u0e19\u0e2b\u0e32","replace_title":"\u0e04\u0e49\u0e19\u0e2b\u0e32/\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48",replaceall:"\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14",replace:"\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/tr_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/tr_dlg.js
deleted file mode 100644
index e5ef98ce5..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/tr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('tr.searchreplace_dlg',{findwhat:"Aranan",replacewith:"Yeni de\u011fer",direction:"Y\u00f6n",up:"Yukar\u0131",down:"A\u015fa\u011f\u0131",mcase:"B\u00fcy\u00fck/k\u00fc\u00e7\u00fck duyarl\u0131",findnext:"Sonrakini bul",allreplaced:"Aranan metin bulundu\u011fu yerlede de\u011fi\u015ftirildi.","searchnext_desc":"Tekrar ara",notfound:"Arama tamamland\u0131. Aranan metin bulunamad\u0131.","search_title":"Bul","replace_title":"Bul/De\u011fi\u015ftir",replaceall:"T\u00fcm\u00fcn\u00fc de\u011fi\u015ftir",replace:"De\u011fi\u015ftir"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/uk_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/uk_dlg.js
deleted file mode 100644
index cdb46ab59..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/uk_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('uk.searchreplace_dlg',{findwhat:"\u0417\u043d\u0430\u0439\u0442\u0438",replacewith:"\u0417\u0430\u043c\u0456\u043d\u0438\u0442\u0438 \u043d\u0430",direction:"\u041d\u0430\u043f\u0440\u044f\u043c\u043e\u043a \u043f\u043e\u0448\u0443\u043a\u0443",up:"\u0412\u0433\u043e\u0440\u0443",down:"\u0412\u043d\u0438\u0437",mcase:"\u0412\u0440\u0430\u0445\u043e\u0432\u0443\u0432\u0430\u0442\u0438 \u0440\u0435\u0454\u0441\u0442\u0440",findnext:"\u0417\u043d\u0430\u0439\u0442\u0438 \u043d\u0430\u0441\u0442\u0443\u043f\u043d\u0435",allreplaced:"\u0412\u0441\u0456 \u0432\u0445\u043e\u0434\u0436\u0435\u043d\u043d\u044f \u0440\u044f\u0434\u043a\u0430 \u0431\u0443\u043b\u0438 \u0437\u0430\u043c\u0456\u043d\u0435\u043d\u0456.","searchnext_desc":"\u0417\u043d\u0430\u0439\u0442\u0438 \u0449\u0435",notfound:"\u041f\u043e\u0448\u0443\u043a \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043e. \u041f\u043e\u0448\u0443\u043a\u043e\u0432\u0438\u0439 \u0440\u044f\u0434\u043e\u043a \u043d\u0435 \u0437\u043d\u0430\u0439\u0434\u0435\u043d\u043e.","search_title":"\u0428\u0443\u043a\u0430\u0442\u0438","replace_title":"\u0428\u0443\u043a\u0430\u0442\u0438/\u0417\u0430\u043c\u0456\u043d\u0438\u0442\u0438",replaceall:"\u0417\u0430\u043c\u0456\u043d\u0438\u0442\u0438 \u0432\u0441\u0435",replace:"\u0417\u0430\u043c\u0456\u043d\u0438\u0442\u0438"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/vi_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/vi_dlg.js
deleted file mode 100644
index f291ee775..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/vi_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('vi.searchreplace_dlg',{findwhat:"T\u00ecm ki\u1ebfm g\u00ec",replacewith:"Thay th\u1ebf v\u1edbi",direction:"H\u01b0\u1edbng",up:"L\u00ean",down:"Xu\u1ed1ng",mcase:"Theo c\u1ea3 ch\u1eef hoa",findnext:"T\u00ecm k\u1ebf ti\u1ebfp",allreplaced:"T\u1ea5t c\u1ea3 c\u00e1c l\u1ea7n xu\u1ea5t hi\u1ec7n c\u1ee7a c\u00e1c chu\u1ed7i t\u00ecm ki\u1ebfm \u0111\u01b0\u1ee3c thay th\u1ebf.","searchnext_desc":"T\u00ecm l\u1ea1i",notfound:"Vi\u1ec7c t\u00ecm ki\u1ebfm \u0111\u00e3 ho\u00e0n th\u00e0nh. Chu\u1ed7i t\u00ecm ki\u1ebfm kh\u00f4ng \u0111\u01b0\u1ee3c t\u00ecm th\u1ea5y.","search_title":"T\u00ecm ki\u1ebfm","replace_title":"T\u00ecm/Thay th\u1ebf",replaceall:"Thay th\u1ebf t\u1ea5t",replace:"Thay th\u1ebf"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/zh-cn_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/zh-cn_dlg.js
deleted file mode 100644
index 88912474f..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/zh-cn_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('zh-cn.searchreplace_dlg',{findwhat:"\u67e5\u627e\u76ee\u6807",replacewith:"\u66ff\u6362\u4e3a",direction:"\u67e5\u627e\u65b9\u5411",up:"\u5411\u4e0a",down:"\u5411\u4e0b",mcase:"\u533a\u5206\u5927\u5c0f\u5199",findnext:"\u67e5\u627e\u4e0b\u4e00\u4e2a",allreplaced:"\u6240\u6709\u51fa\u73b0\u7684\u5b57\u7b26\u5747\u5df2\u66ff\u6362\u3002","searchnext_desc":"\u7ee7\u7eed\u67e5\u627e",notfound:"\u67e5\u627e\u5b8c\u6210\uff0c\u672a\u627e\u5230\u7b26\u5408\u7684\u6587\u5b57\u3002","search_title":"\u67e5\u627e","replace_title":"\u67e5\u627e/\u66ff\u6362",replaceall:"\u5168\u90e8\u66ff\u6362",replace:"\u66ff\u6362"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/langs/zh-tw_dlg.js b/program/js/tiny_mce/plugins/searchreplace/langs/zh-tw_dlg.js
deleted file mode 100644
index f60db8e39..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/langs/zh-tw_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('zh-tw.searchreplace_dlg',{findwhat:"\u5c0b\u627e",replacewith:"\u53d6\u4ee3\u6210",direction:"\u5c0b\u627e\u7684\u65b9\u5411",up:"\u5f80\u4e0a\u627e",down:"\u5f80\u4e0b\u627e",mcase:"\u5927\u5c0f\u5beb\u5340\u5206\u958b\u4f86",findnext:"\u627e\u4e0b\u4e00\u500b",allreplaced:"\u53d6\u4ee3\u5b8c\u6210","searchnext_desc":"\u518d\u627e\u4e00\u6b21",notfound:"\u627e\u4e0d\u5230\u7b26\u5408\u7684\u8cc7\u6599","search_title":"\u5c0b\u627e","replace_title":"\u5c0b\u627e / \u53d6\u4ee3",replaceall:"\u5168\u90e8\u53d6\u4ee3",replace:"\u53d6\u4ee3"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/searchreplace/searchreplace.htm b/program/js/tiny_mce/plugins/searchreplace/searchreplace.htm
deleted file mode 100644
index 2443a9184..000000000
--- a/program/js/tiny_mce/plugins/searchreplace/searchreplace.htm
+++ /dev/null
@@ -1,100 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#searchreplace_dlg.replace_title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="../../utils/form_utils.js"></script>
- <script type="text/javascript" src="js/searchreplace.js"></script>
- <link rel="stylesheet" type="text/css" href="css/searchreplace.css" />
-</head>
-<body style="display:none;" role="application" aria-labelledby="app_title">
-<span id="app_title" style="display:none">{#searchreplace_dlg.replace_title}</span>
-<form onsubmit="SearchReplaceDialog.searchNext('none');return false;" action="#">
- <div class="tabs">
- <ul>
- <li id="search_tab" aria-controls="search_panel"><span><a href="javascript:SearchReplaceDialog.switchMode('search');" onmousedown="return false;">{#searchreplace.search_desc}</a></span></li>
- <li id="replace_tab" aria-controls="replace_panel"><span><a href="javascript:SearchReplaceDialog.switchMode('replace');" onmousedown="return false;">{#searchreplace_dlg.replace}</a></span></li>
- </ul>
- </div>
-
- <div class="panel_wrapper">
- <div id="search_panel" class="panel">
- <table role="presentation" border="0" cellspacing="0" cellpadding="2">
- <tr>
- <td><label for="search_panel_searchstring">{#searchreplace_dlg.findwhat}</label></td>
- <td><input type="text" id="search_panel_searchstring" name="search_panel_searchstring" style="width: 200px" aria-required="true" /></td>
- </tr>
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellspacing="0" cellpadding="0" class="direction">
- <tr role="group" aria-labelledby="search_panel_backwards_label">
- <td><label id="search_panel_backwards_label">{#searchreplace_dlg.direction}</label></td>
- <td><input id="search_panel_backwardsu" name="search_panel_backwards" class="radio" type="radio" /></td>
- <td><label for="search_panel_backwardsu">{#searchreplace_dlg.up}</label></td>
- <td><input id="search_panel_backwardsd" name="search_panel_backwards" class="radio" type="radio" checked="checked" /></td>
- <td><label for="search_panel_backwardsd">{#searchreplace_dlg.down}</label></td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input id="search_panel_casesensitivebox" name="search_panel_casesensitivebox" class="checkbox" type="checkbox" /></td>
- <td><label for="search_panel_casesensitivebox">{#searchreplace_dlg.mcase}</label></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </div>
-
- <div id="replace_panel" class="panel">
- <table role="presentation" border="0" cellspacing="0" cellpadding="2">
- <tr>
- <td><label for="replace_panel_searchstring">{#searchreplace_dlg.findwhat}</label></td>
- <td><input type="text" id="replace_panel_searchstring" name="replace_panel_searchstring" style="width: 200px" aria-required="true" /></td>
- </tr>
- <tr>
- <td><label for="replace_panel_replacestring">{#searchreplace_dlg.replacewith}</label></td>
- <td><input type="text" id="replace_panel_replacestring" name="replace_panel_replacestring" style="width: 200px" aria-required="true" /></td>
- </tr>
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellspacing="0" cellpadding="0" class="direction">
- <tr role="group" aria-labelledby="replace_panel_dir_label">
- <td><label id="replace_panel_dir_label">{#searchreplace_dlg.direction}</label></td>
- <td><input id="replace_panel_backwardsu" name="replace_panel_backwards" class="radio" type="radio" /></td>
- <td><label for="replace_panel_backwardsu">{#searchreplace_dlg.up}</label></td>
- <td><input id="replace_panel_backwardsd" name="replace_panel_backwards" class="radio" type="radio" checked="checked" /></td>
- <td><label for="replace_panel_backwardsd">{#searchreplace_dlg.down}</label></td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td colspan="2">
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input id="replace_panel_casesensitivebox" name="replace_panel_casesensitivebox" class="checkbox" type="checkbox" /></td>
- <td><label for="replace_panel_casesensitivebox">{#searchreplace_dlg.mcase}</label></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </div>
-
- </div>
-
- <div class="mceActionPanel">
- <input type="submit" id="insert" name="insert" value="{#searchreplace_dlg.findnext}" />
- <input type="button" class="button" id="replaceBtn" name="replaceBtn" value="{#searchreplace_dlg.replace}" onclick="SearchReplaceDialog.searchNext('current');" />
- <input type="button" class="button" id="replaceAllBtn" name="replaceAllBtn" value="{#searchreplace_dlg.replaceall}" onclick="SearchReplaceDialog.searchNext('all');" />
- <input type="button" id="cancel" name="close" value="{#close}" onclick="tinyMCEPopup.close();" />
- </div>
-</form>
-</body>
-</html>
diff --git a/program/js/tiny_mce/plugins/spellchecker/css/content.css b/program/js/tiny_mce/plugins/spellchecker/css/content.css
deleted file mode 100644
index 24efa0217..000000000
--- a/program/js/tiny_mce/plugins/spellchecker/css/content.css
+++ /dev/null
@@ -1 +0,0 @@
-.mceItemHiddenSpellWord {background:url(../img/wline.gif) repeat-x bottom left; cursor:default;}
diff --git a/program/js/tiny_mce/plugins/spellchecker/editor_plugin.js b/program/js/tiny_mce/plugins/spellchecker/editor_plugin.js
deleted file mode 100644
index 6b57241a9..000000000
--- a/program/js/tiny_mce/plugins/spellchecker/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){var a=tinymce.util.JSONRequest,c=tinymce.each,b=tinymce.DOM;tinymce.create("tinymce.plugins.SpellcheckerPlugin",{getInfo:function(){return{longname:"Spellchecker",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/spellchecker",version:tinymce.majorVersion+"."+tinymce.minorVersion}},init:function(e,f){var g=this,d;g.url=f;g.editor=e;g.rpcUrl=e.getParam("spellchecker_rpc_url","{backend}");if(g.rpcUrl=="{backend}"){if(tinymce.isIE){return}g.hasSupport=true;e.onContextMenu.addToTop(function(h,i){if(g.active){return false}})}e.addCommand("mceSpellCheck",function(){if(g.rpcUrl=="{backend}"){g.editor.getBody().spellcheck=g.active=!g.active;return}if(!g.active){e.setProgressState(1);g._sendRPC("checkWords",[g.selectedLang,g._getWords()],function(h){if(h.length>0){g.active=1;g._markWords(h);e.setProgressState(0);e.nodeChanged()}else{e.setProgressState(0);if(e.getParam("spellchecker_report_no_misspellings",true)){e.windowManager.alert("spellchecker.no_mpell")}}})}else{g._done()}});if(e.settings.content_css!==false){e.contentCSS.push(f+"/css/content.css")}e.onClick.add(g._showMenu,g);e.onContextMenu.add(g._showMenu,g);e.onBeforeGetContent.add(function(){if(g.active){g._removeWords()}});e.onNodeChange.add(function(i,h){h.setActive("spellchecker",g.active)});e.onSetContent.add(function(){g._done()});e.onBeforeGetContent.add(function(){g._done()});e.onBeforeExecCommand.add(function(h,i){if(i=="mceFullScreen"){g._done()}});g.languages={};c(e.getParam("spellchecker_languages","+English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv","hash"),function(i,h){if(h.indexOf("+")===0){h=h.substring(1);g.selectedLang=i}g.languages[h]=i})},createControl:function(h,d){var f=this,g,e=f.editor;if(h=="spellchecker"){if(f.rpcUrl=="{backend}"){if(f.hasSupport){g=d.createButton(h,{title:"spellchecker.desc",cmd:"mceSpellCheck",scope:f})}return g}g=d.createSplitButton(h,{title:"spellchecker.desc",cmd:"mceSpellCheck",scope:f});g.onRenderMenu.add(function(j,i){i.add({title:"spellchecker.langs","class":"mceMenuItemTitle"}).setDisabled(1);f.menuItems={};c(f.languages,function(n,m){var p={icon:1},l;p.onclick=function(){if(n==f.selectedLang){return}f._updateMenu(l);f.selectedLang=n};p.title=m;l=i.add(p);l.setSelected(n==f.selectedLang);f.menuItems[n]=l;if(n==f.selectedLang){f.selectedItem=l}})});return g}},setLanguage:function(e){var d=this;if(e==d.selectedLang){return}if(tinymce.grep(d.languages,function(f){return f===e}).length===0){throw"Unknown language: "+e}d.selectedLang=e;if(d.menuItems){d._updateMenu(d.menuItems[e])}if(d.active){d._done()}},_updateMenu:function(d){d.setSelected(1);this.selectedItem.setSelected(0);this.selectedItem=d},_walk:function(i,g){var h=this.editor.getDoc(),e;if(h.createTreeWalker){e=h.createTreeWalker(i,NodeFilter.SHOW_TEXT,null,false);while((i=e.nextNode())!=null){g.call(this,i)}}else{tinymce.walk(i,g,"childNodes")}},_getSeparators:function(){var e="",d,f=this.editor.getParam("spellchecker_word_separator_chars",'\\s!"#$%&()*+,-./:;<=>?@[]^_{|}\u201d\u201c');for(d=0;d<f.length;d++){e+="\\"+f.charAt(d)}return e},_getWords:function(){var e=this.editor,g=[],d="",f={},h=[];this._walk(e.getBody(),function(i){if(i.nodeType==3){d+=i.nodeValue+" "}});if(e.getParam("spellchecker_word_pattern")){h=d.match("("+e.getParam("spellchecker_word_pattern")+")","gi")}else{d=d.replace(new RegExp("([0-9]|["+this._getSeparators()+"])","g")," ");d=tinymce.trim(d.replace(/(\s+)/g," "));h=d.split(" ")}c(h,function(i){if(!f[i]){g.push(i);f[i]=1}});return g},_removeWords:function(d){var e=this.editor,h=e.dom,g=e.selection,f=g.getRng(true);c(h.select("span").reverse(),function(i){if(i&&(h.hasClass(i,"mceItemHiddenSpellWord")||h.hasClass(i,"mceItemHidden"))){if(!d||h.decode(i.innerHTML)==d){h.remove(i,1)}}});g.setRng(f)},_markWords:function(l){var h=this.editor,g=h.dom,j=h.getDoc(),i=h.selection,d=i.getRng(true),e=[],k=l.join("|"),m=this._getSeparators(),f=new RegExp("(^|["+m+"])("+k+")(?=["+m+"]|$)","g");this._walk(h.getBody(),function(o){if(o.nodeType==3){e.push(o)}});c(e,function(t){var r,q,o,s,p=t.nodeValue;f.lastIndex=0;if(f.test(p)){p=g.encode(p);q=g.create("span",{"class":"mceItemHidden"});if(tinymce.isIE){p=p.replace(f,"$1<mcespell>$2</mcespell>");while((s=p.indexOf("<mcespell>"))!=-1){o=p.substring(0,s);if(o.length){r=j.createTextNode(g.decode(o));q.appendChild(r)}p=p.substring(s+10);s=p.indexOf("</mcespell>");o=p.substring(0,s);p=p.substring(s+11);q.appendChild(g.create("span",{"class":"mceItemHiddenSpellWord"},o))}if(p.length){r=j.createTextNode(g.decode(p));q.appendChild(r)}}else{q.innerHTML=p.replace(f,'$1<span class="mceItemHiddenSpellWord">$2</span>')}g.replace(q,t)}});i.setRng(d)},_showMenu:function(h,j){var i=this,h=i.editor,d=i._menu,l,k=h.dom,g=k.getViewPort(h.getWin()),f=j.target;j=0;if(!d){d=h.controlManager.createDropMenu("spellcheckermenu",{"class":"mceNoIcons"});i._menu=d}if(k.hasClass(f,"mceItemHiddenSpellWord")){d.removeAll();d.add({title:"spellchecker.wait","class":"mceMenuItemTitle"}).setDisabled(1);i._sendRPC("getSuggestions",[i.selectedLang,k.decode(f.innerHTML)],function(m){var e;d.removeAll();if(m.length>0){d.add({title:"spellchecker.sug","class":"mceMenuItemTitle"}).setDisabled(1);c(m,function(n){d.add({title:n,onclick:function(){k.replace(h.getDoc().createTextNode(n),f);i._checkDone()}})});d.addSeparator()}else{d.add({title:"spellchecker.no_sug","class":"mceMenuItemTitle"}).setDisabled(1)}if(h.getParam("show_ignore_words",true)){e=i.editor.getParam("spellchecker_enable_ignore_rpc","");d.add({title:"spellchecker.ignore_word",onclick:function(){var n=f.innerHTML;k.remove(f,1);i._checkDone();if(e){h.setProgressState(1);i._sendRPC("ignoreWord",[i.selectedLang,n],function(o){h.setProgressState(0)})}}});d.add({title:"spellchecker.ignore_words",onclick:function(){var n=f.innerHTML;i._removeWords(k.decode(n));i._checkDone();if(e){h.setProgressState(1);i._sendRPC("ignoreWords",[i.selectedLang,n],function(o){h.setProgressState(0)})}}})}if(i.editor.getParam("spellchecker_enable_learn_rpc")){d.add({title:"spellchecker.learn_word",onclick:function(){var n=f.innerHTML;k.remove(f,1);i._checkDone();h.setProgressState(1);i._sendRPC("learnWord",[i.selectedLang,n],function(o){h.setProgressState(0)})}})}d.update()});l=b.getPos(h.getContentAreaContainer());d.settings.offset_x=l.x;d.settings.offset_y=l.y;h.selection.select(f);l=k.getPos(f);d.showMenu(l.x,l.y+f.offsetHeight-g.y);return tinymce.dom.Event.cancel(j)}else{d.hideMenu()}},_checkDone:function(){var e=this,d=e.editor,g=d.dom,f;c(g.select("span"),function(h){if(h&&g.hasClass(h,"mceItemHiddenSpellWord")){f=true;return false}});if(!f){e._done()}},_done:function(){var d=this,e=d.active;if(d.active){d.active=0;d._removeWords();if(d._menu){d._menu.hideMenu()}if(e){d.editor.nodeChanged()}}},_sendRPC:function(e,g,d){var f=this;a.sendRPC({url:f.rpcUrl,method:e,params:g,success:d,error:function(i,h){f.editor.setProgressState(0);f.editor.windowManager.alert(i.errstr||("Error response: "+h.responseText))}})}});tinymce.PluginManager.add("spellchecker",tinymce.plugins.SpellcheckerPlugin)})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/spellchecker/editor_plugin_src.js b/program/js/tiny_mce/plugins/spellchecker/editor_plugin_src.js
deleted file mode 100644
index 5751b0e52..000000000
--- a/program/js/tiny_mce/plugins/spellchecker/editor_plugin_src.js
+++ /dev/null
@@ -1,471 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- var JSONRequest = tinymce.util.JSONRequest, each = tinymce.each, DOM = tinymce.DOM;
-
- tinymce.create('tinymce.plugins.SpellcheckerPlugin', {
- getInfo : function() {
- return {
- longname : 'Spellchecker',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/spellchecker',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- },
-
- init : function(ed, url) {
- var t = this, cm;
-
- t.url = url;
- t.editor = ed;
- t.rpcUrl = ed.getParam("spellchecker_rpc_url", "{backend}");
-
- if (t.rpcUrl == '{backend}') {
- // Sniff if the browser supports native spellchecking (Don't know of a better way)
- if (tinymce.isIE)
- return;
-
- t.hasSupport = true;
-
- // Disable the context menu when spellchecking is active
- ed.onContextMenu.addToTop(function(ed, e) {
- if (t.active)
- return false;
- });
- }
-
- // Register commands
- ed.addCommand('mceSpellCheck', function() {
- if (t.rpcUrl == '{backend}') {
- // Enable/disable native spellchecker
- t.editor.getBody().spellcheck = t.active = !t.active;
- return;
- }
-
- if (!t.active) {
- ed.setProgressState(1);
- t._sendRPC('checkWords', [t.selectedLang, t._getWords()], function(r) {
- if (r.length > 0) {
- t.active = 1;
- t._markWords(r);
- ed.setProgressState(0);
- ed.nodeChanged();
- } else {
- ed.setProgressState(0);
-
- if (ed.getParam('spellchecker_report_no_misspellings', true))
- ed.windowManager.alert('spellchecker.no_mpell');
- }
- });
- } else
- t._done();
- });
-
- if (ed.settings.content_css !== false)
- ed.contentCSS.push(url + '/css/content.css');
-
- ed.onClick.add(t._showMenu, t);
- ed.onContextMenu.add(t._showMenu, t);
- ed.onBeforeGetContent.add(function() {
- if (t.active)
- t._removeWords();
- });
-
- ed.onNodeChange.add(function(ed, cm) {
- cm.setActive('spellchecker', t.active);
- });
-
- ed.onSetContent.add(function() {
- t._done();
- });
-
- ed.onBeforeGetContent.add(function() {
- t._done();
- });
-
- ed.onBeforeExecCommand.add(function(ed, cmd) {
- if (cmd == 'mceFullScreen')
- t._done();
- });
-
- // Find selected language
- t.languages = {};
- each(ed.getParam('spellchecker_languages', '+English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv', 'hash'), function(v, k) {
- if (k.indexOf('+') === 0) {
- k = k.substring(1);
- t.selectedLang = v;
- }
-
- t.languages[k] = v;
- });
- },
-
- createControl : function(n, cm) {
- var t = this, c, ed = t.editor;
-
- if (n == 'spellchecker') {
- // Use basic button if we use the native spellchecker
- if (t.rpcUrl == '{backend}') {
- // Create simple toggle button if we have native support
- if (t.hasSupport)
- c = cm.createButton(n, {title : 'spellchecker.desc', cmd : 'mceSpellCheck', scope : t});
-
- return c;
- }
-
- c = cm.createSplitButton(n, {title : 'spellchecker.desc', cmd : 'mceSpellCheck', scope : t});
-
- c.onRenderMenu.add(function(c, m) {
- m.add({title : 'spellchecker.langs', 'class' : 'mceMenuItemTitle'}).setDisabled(1);
- t.menuItems = {};
- each(t.languages, function(v, k) {
- var o = {icon : 1}, mi;
-
- o.onclick = function() {
- if (v == t.selectedLang) {
- return;
- }
- t._updateMenu(mi);
- t.selectedLang = v;
- };
-
- o.title = k;
- mi = m.add(o);
- mi.setSelected(v == t.selectedLang);
- t.menuItems[v] = mi;
- if (v == t.selectedLang)
- t.selectedItem = mi;
- });
- });
-
-
-
- return c;
- }
- },
-
- setLanguage: function(lang) {
- var t = this;
-
- if (lang == t.selectedLang) {
- // allowed
- return;
- }
-
- if (tinymce.grep(t.languages, function(v) { return v === lang; }).length === 0) {
- throw "Unknown language: " + lang;
- }
-
- t.selectedLang = lang;
-
- // if the menu has been shown, update it as well
- if (t.menuItems) {
- t._updateMenu(t.menuItems[lang]);
- }
-
- if (t.active) {
- // clear error in the old language.
- t._done();
-
- // Don't immediately block the UI to check spelling in the new language, this is an API not a user action.
- }
- },
-
- // Internal functions
-
- _updateMenu: function(mi) {
- mi.setSelected(1);
- this.selectedItem.setSelected(0);
- this.selectedItem = mi;
- },
-
- _walk : function(n, f) {
- var d = this.editor.getDoc(), w;
-
- if (d.createTreeWalker) {
- w = d.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, false);
-
- while ((n = w.nextNode()) != null)
- f.call(this, n);
- } else
- tinymce.walk(n, f, 'childNodes');
- },
-
- _getSeparators : function() {
- var re = '', i, str = this.editor.getParam('spellchecker_word_separator_chars', '\\s!"#$%&()*+,-./:;<=>?@[\]^_{|}\u201d\u201c');
-
- // Build word separator regexp
- for (i=0; i<str.length; i++)
- re += '\\' + str.charAt(i);
-
- return re;
- },
-
- _getWords : function() {
- var ed = this.editor, wl = [], tx = '', lo = {}, rawWords = [];
-
- // Get area text
- this._walk(ed.getBody(), function(n) {
- if (n.nodeType == 3)
- tx += n.nodeValue + ' ';
- });
-
- // split the text up into individual words
- if (ed.getParam('spellchecker_word_pattern')) {
- // look for words that match the pattern
- rawWords = tx.match('(' + ed.getParam('spellchecker_word_pattern') + ')', 'gi');
- } else {
- // Split words by separator
- tx = tx.replace(new RegExp('([0-9]|[' + this._getSeparators() + '])', 'g'), ' ');
- tx = tinymce.trim(tx.replace(/(\s+)/g, ' '));
- rawWords = tx.split(' ');
- }
-
- // Build word array and remove duplicates
- each(rawWords, function(v) {
- if (!lo[v]) {
- wl.push(v);
- lo[v] = 1;
- }
- });
-
- return wl;
- },
-
- _removeWords : function(w) {
- var ed = this.editor, dom = ed.dom, se = ed.selection, r = se.getRng(true);
-
- each(dom.select('span').reverse(), function(n) {
- if (n && (dom.hasClass(n, 'mceItemHiddenSpellWord') || dom.hasClass(n, 'mceItemHidden'))) {
- if (!w || dom.decode(n.innerHTML) == w)
- dom.remove(n, 1);
- }
- });
-
- se.setRng(r);
- },
-
- _markWords : function(wl) {
- var ed = this.editor, dom = ed.dom, doc = ed.getDoc(), se = ed.selection, r = se.getRng(true), nl = [],
- w = wl.join('|'), re = this._getSeparators(), rx = new RegExp('(^|[' + re + '])(' + w + ')(?=[' + re + ']|$)', 'g');
-
- // Collect all text nodes
- this._walk(ed.getBody(), function(n) {
- if (n.nodeType == 3) {
- nl.push(n);
- }
- });
-
- // Wrap incorrect words in spans
- each(nl, function(n) {
- var node, elem, txt, pos, v = n.nodeValue;
-
- rx.lastIndex = 0;
- if (rx.test(v)) {
- // Encode the content
- v = dom.encode(v);
- // Create container element
- elem = dom.create('span', {'class' : 'mceItemHidden'});
-
- // Following code fixes IE issues by creating text nodes
- // using DOM methods instead of innerHTML.
- // Bug #3124: <PRE> elements content is broken after spellchecking.
- // Bug #1408: Preceding whitespace characters are removed
- // @TODO: I'm not sure that both are still issues on IE9.
- if (tinymce.isIE) {
- // Enclose mispelled words with temporal tag
- v = v.replace(rx, '$1<mcespell>$2</mcespell>');
- // Loop over the content finding mispelled words
- while ((pos = v.indexOf('<mcespell>')) != -1) {
- // Add text node for the content before the word
- txt = v.substring(0, pos);
- if (txt.length) {
- node = doc.createTextNode(dom.decode(txt));
- elem.appendChild(node);
- }
- v = v.substring(pos+10);
- pos = v.indexOf('</mcespell>');
- txt = v.substring(0, pos);
- v = v.substring(pos+11);
- // Add span element for the word
- elem.appendChild(dom.create('span', {'class' : 'mceItemHiddenSpellWord'}, txt));
- }
- // Add text node for the rest of the content
- if (v.length) {
- node = doc.createTextNode(dom.decode(v));
- elem.appendChild(node);
- }
- } else {
- // Other browsers preserve whitespace characters on innerHTML usage
- elem.innerHTML = v.replace(rx, '$1<span class="mceItemHiddenSpellWord">$2</span>');
- }
-
- // Finally, replace the node with the container
- dom.replace(elem, n);
- }
- });
-
- se.setRng(r);
- },
-
- _showMenu : function(ed, e) {
- var t = this, ed = t.editor, m = t._menu, p1, dom = ed.dom, vp = dom.getViewPort(ed.getWin()), wordSpan = e.target;
-
- e = 0; // Fixes IE memory leak
-
- if (!m) {
- m = ed.controlManager.createDropMenu('spellcheckermenu', {'class' : 'mceNoIcons'});
- t._menu = m;
- }
-
- if (dom.hasClass(wordSpan, 'mceItemHiddenSpellWord')) {
- m.removeAll();
- m.add({title : 'spellchecker.wait', 'class' : 'mceMenuItemTitle'}).setDisabled(1);
-
- t._sendRPC('getSuggestions', [t.selectedLang, dom.decode(wordSpan.innerHTML)], function(r) {
- var ignoreRpc;
-
- m.removeAll();
-
- if (r.length > 0) {
- m.add({title : 'spellchecker.sug', 'class' : 'mceMenuItemTitle'}).setDisabled(1);
- each(r, function(v) {
- m.add({title : v, onclick : function() {
- dom.replace(ed.getDoc().createTextNode(v), wordSpan);
- t._checkDone();
- }});
- });
-
- m.addSeparator();
- } else
- m.add({title : 'spellchecker.no_sug', 'class' : 'mceMenuItemTitle'}).setDisabled(1);
-
- if (ed.getParam('show_ignore_words', true)) {
- ignoreRpc = t.editor.getParam("spellchecker_enable_ignore_rpc", '');
- m.add({
- title : 'spellchecker.ignore_word',
- onclick : function() {
- var word = wordSpan.innerHTML;
-
- dom.remove(wordSpan, 1);
- t._checkDone();
-
- // tell the server if we need to
- if (ignoreRpc) {
- ed.setProgressState(1);
- t._sendRPC('ignoreWord', [t.selectedLang, word], function(r) {
- ed.setProgressState(0);
- });
- }
- }
- });
-
- m.add({
- title : 'spellchecker.ignore_words',
- onclick : function() {
- var word = wordSpan.innerHTML;
-
- t._removeWords(dom.decode(word));
- t._checkDone();
-
- // tell the server if we need to
- if (ignoreRpc) {
- ed.setProgressState(1);
- t._sendRPC('ignoreWords', [t.selectedLang, word], function(r) {
- ed.setProgressState(0);
- });
- }
- }
- });
- }
-
- if (t.editor.getParam("spellchecker_enable_learn_rpc")) {
- m.add({
- title : 'spellchecker.learn_word',
- onclick : function() {
- var word = wordSpan.innerHTML;
-
- dom.remove(wordSpan, 1);
- t._checkDone();
-
- ed.setProgressState(1);
- t._sendRPC('learnWord', [t.selectedLang, word], function(r) {
- ed.setProgressState(0);
- });
- }
- });
- }
-
- m.update();
- });
-
- p1 = DOM.getPos(ed.getContentAreaContainer());
- m.settings.offset_x = p1.x;
- m.settings.offset_y = p1.y;
-
- ed.selection.select(wordSpan);
- p1 = dom.getPos(wordSpan);
- m.showMenu(p1.x, p1.y + wordSpan.offsetHeight - vp.y);
-
- return tinymce.dom.Event.cancel(e);
- } else
- m.hideMenu();
- },
-
- _checkDone : function() {
- var t = this, ed = t.editor, dom = ed.dom, o;
-
- each(dom.select('span'), function(n) {
- if (n && dom.hasClass(n, 'mceItemHiddenSpellWord')) {
- o = true;
- return false;
- }
- });
-
- if (!o)
- t._done();
- },
-
- _done : function() {
- var t = this, la = t.active;
-
- if (t.active) {
- t.active = 0;
- t._removeWords();
-
- if (t._menu)
- t._menu.hideMenu();
-
- if (la)
- t.editor.nodeChanged();
- }
- },
-
- _sendRPC : function(m, p, cb) {
- var t = this;
-
- JSONRequest.sendRPC({
- url : t.rpcUrl,
- method : m,
- params : p,
- success : cb,
- error : function(e, x) {
- t.editor.setProgressState(0);
- t.editor.windowManager.alert(e.errstr || ('Error response: ' + x.responseText));
- }
- });
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('spellchecker', tinymce.plugins.SpellcheckerPlugin);
-})();
diff --git a/program/js/tiny_mce/plugins/spellchecker/img/wline.gif b/program/js/tiny_mce/plugins/spellchecker/img/wline.gif
deleted file mode 100644
index 7d0a4dbca..000000000
--- a/program/js/tiny_mce/plugins/spellchecker/img/wline.gif
+++ /dev/null
Binary files differ
diff --git a/program/js/tiny_mce/plugins/style/css/props.css b/program/js/tiny_mce/plugins/style/css/props.css
deleted file mode 100644
index 3b8f0ee77..000000000
--- a/program/js/tiny_mce/plugins/style/css/props.css
+++ /dev/null
@@ -1,14 +0,0 @@
-#text_font {width:250px;}
-#text_size {width:70px;}
-.mceAddSelectValue {background:#DDD;}
-select, #block_text_indent, #box_width, #box_height, #box_padding_top, #box_padding_right, #box_padding_bottom, #box_padding_left {width:70px;}
-#box_margin_top, #box_margin_right, #box_margin_bottom, #box_margin_left, #positioning_width, #positioning_height, #positioning_zindex {width:70px;}
-#positioning_placement_top, #positioning_placement_right, #positioning_placement_bottom, #positioning_placement_left {width:70px;}
-#positioning_clip_top, #positioning_clip_right, #positioning_clip_bottom, #positioning_clip_left {width:70px;}
-.panel_toggle_insert_span {padding-top:10px;}
-.panel_wrapper div.current {padding-top:10px;height:230px;}
-.delim {border-left:1px solid gray;}
-.tdelim {border-bottom:1px solid gray;}
-#block_display {width:145px;}
-#list_type {width:115px;}
-.disabled {background:#EEE;}
diff --git a/program/js/tiny_mce/plugins/style/editor_plugin.js b/program/js/tiny_mce/plugins/style/editor_plugin.js
deleted file mode 100644
index dda9f928b..000000000
--- a/program/js/tiny_mce/plugins/style/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.StylePlugin",{init:function(a,b){a.addCommand("mceStyleProps",function(){var c=false;var f=a.selection.getSelectedBlocks();var d=[];if(f.length===1){d.push(a.selection.getNode().style.cssText)}else{tinymce.each(f,function(g){d.push(a.dom.getAttrib(g,"style"))});c=true}a.windowManager.open({file:b+"/props.htm",width:480+parseInt(a.getLang("style.delta_width",0)),height:340+parseInt(a.getLang("style.delta_height",0)),inline:1},{applyStyleToBlocks:c,plugin_url:b,styles:d})});a.addCommand("mceSetElementStyle",function(d,c){if(e=a.selection.getNode()){a.dom.setAttrib(e,"style",c);a.execCommand("mceRepaint")}});a.onNodeChange.add(function(d,c,f){c.setDisabled("styleprops",f.nodeName==="BODY")});a.addButton("styleprops",{title:"style.desc",cmd:"mceStyleProps"})},getInfo:function(){return{longname:"Style",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/style",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("style",tinymce.plugins.StylePlugin)})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/editor_plugin_src.js b/program/js/tiny_mce/plugins/style/editor_plugin_src.js
deleted file mode 100644
index eaa7c7713..000000000
--- a/program/js/tiny_mce/plugins/style/editor_plugin_src.js
+++ /dev/null
@@ -1,71 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- tinymce.create('tinymce.plugins.StylePlugin', {
- init : function(ed, url) {
- // Register commands
- ed.addCommand('mceStyleProps', function() {
-
- var applyStyleToBlocks = false;
- var blocks = ed.selection.getSelectedBlocks();
- var styles = [];
-
- if (blocks.length === 1) {
- styles.push(ed.selection.getNode().style.cssText);
- }
- else {
- tinymce.each(blocks, function(block) {
- styles.push(ed.dom.getAttrib(block, 'style'));
- });
- applyStyleToBlocks = true;
- }
-
- ed.windowManager.open({
- file : url + '/props.htm',
- width : 480 + parseInt(ed.getLang('style.delta_width', 0)),
- height : 340 + parseInt(ed.getLang('style.delta_height', 0)),
- inline : 1
- }, {
- applyStyleToBlocks : applyStyleToBlocks,
- plugin_url : url,
- styles : styles
- });
- });
-
- ed.addCommand('mceSetElementStyle', function(ui, v) {
- if (e = ed.selection.getNode()) {
- ed.dom.setAttrib(e, 'style', v);
- ed.execCommand('mceRepaint');
- }
- });
-
- ed.onNodeChange.add(function(ed, cm, n) {
- cm.setDisabled('styleprops', n.nodeName === 'BODY');
- });
-
- // Register buttons
- ed.addButton('styleprops', {title : 'style.desc', cmd : 'mceStyleProps'});
- },
-
- getInfo : function() {
- return {
- longname : 'Style',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/style',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('style', tinymce.plugins.StylePlugin);
-})();
diff --git a/program/js/tiny_mce/plugins/style/js/props.js b/program/js/tiny_mce/plugins/style/js/props.js
deleted file mode 100644
index 0a8a8ec3e..000000000
--- a/program/js/tiny_mce/plugins/style/js/props.js
+++ /dev/null
@@ -1,709 +0,0 @@
-tinyMCEPopup.requireLangPack();
-
-var defaultFonts = "" +
- "Arial, Helvetica, sans-serif=Arial, Helvetica, sans-serif;" +
- "Times New Roman, Times, serif=Times New Roman, Times, serif;" +
- "Courier New, Courier, mono=Courier New, Courier, mono;" +
- "Times New Roman, Times, serif=Times New Roman, Times, serif;" +
- "Georgia, Times New Roman, Times, serif=Georgia, Times New Roman, Times, serif;" +
- "Verdana, Arial, Helvetica, sans-serif=Verdana, Arial, Helvetica, sans-serif;" +
- "Geneva, Arial, Helvetica, sans-serif=Geneva, Arial, Helvetica, sans-serif";
-
-var defaultSizes = "9;10;12;14;16;18;24;xx-small;x-small;small;medium;large;x-large;xx-large;smaller;larger";
-var defaultMeasurement = "+pixels=px;points=pt;inches=in;centimetres=cm;millimetres=mm;picas=pc;ems=em;exs=ex;%";
-var defaultSpacingMeasurement = "pixels=px;points=pt;inches=in;centimetres=cm;millimetres=mm;picas=pc;+ems=em;exs=ex;%";
-var defaultIndentMeasurement = "pixels=px;+points=pt;inches=in;centimetres=cm;millimetres=mm;picas=pc;ems=em;exs=ex;%";
-var defaultWeight = "normal;bold;bolder;lighter;100;200;300;400;500;600;700;800;900";
-var defaultTextStyle = "normal;italic;oblique";
-var defaultVariant = "normal;small-caps";
-var defaultLineHeight = "normal";
-var defaultAttachment = "fixed;scroll";
-var defaultRepeat = "no-repeat;repeat;repeat-x;repeat-y";
-var defaultPosH = "left;center;right";
-var defaultPosV = "top;center;bottom";
-var defaultVAlign = "baseline;sub;super;top;text-top;middle;bottom;text-bottom";
-var defaultDisplay = "inline;block;list-item;run-in;compact;marker;table;inline-table;table-row-group;table-header-group;table-footer-group;table-row;table-column-group;table-column;table-cell;table-caption;none";
-var defaultBorderStyle = "none;solid;dashed;dotted;double;groove;ridge;inset;outset";
-var defaultBorderWidth = "thin;medium;thick";
-var defaultListType = "disc;circle;square;decimal;lower-roman;upper-roman;lower-alpha;upper-alpha;none";
-
-function aggregateStyles(allStyles) {
- var mergedStyles = {};
-
- tinymce.each(allStyles, function(style) {
- if (style !== '') {
- var parsedStyles = tinyMCEPopup.editor.dom.parseStyle(style);
- for (var name in parsedStyles) {
- if (parsedStyles.hasOwnProperty(name)) {
- if (mergedStyles[name] === undefined) {
- mergedStyles[name] = parsedStyles[name];
- }
- else if (name === 'text-decoration') {
- if (mergedStyles[name].indexOf(parsedStyles[name]) === -1) {
- mergedStyles[name] = mergedStyles[name] +' '+ parsedStyles[name];
- }
- }
- }
- }
- }
- });
-
- return mergedStyles;
-}
-
-var applyActionIsInsert;
-var existingStyles;
-
-function init(ed) {
- var ce = document.getElementById('container'), h;
-
- existingStyles = aggregateStyles(tinyMCEPopup.getWindowArg('styles'));
- ce.style.cssText = tinyMCEPopup.editor.dom.serializeStyle(existingStyles);
-
- applyActionIsInsert = ed.getParam("edit_css_style_insert_span", false);
- document.getElementById('toggle_insert_span').checked = applyActionIsInsert;
-
- h = getBrowserHTML('background_image_browser','background_image','image','advimage');
- document.getElementById("background_image_browser").innerHTML = h;
-
- document.getElementById('text_color_pickcontainer').innerHTML = getColorPickerHTML('text_color_pick','text_color');
- document.getElementById('background_color_pickcontainer').innerHTML = getColorPickerHTML('background_color_pick','background_color');
- document.getElementById('border_color_top_pickcontainer').innerHTML = getColorPickerHTML('border_color_top_pick','border_color_top');
- document.getElementById('border_color_right_pickcontainer').innerHTML = getColorPickerHTML('border_color_right_pick','border_color_right');
- document.getElementById('border_color_bottom_pickcontainer').innerHTML = getColorPickerHTML('border_color_bottom_pick','border_color_bottom');
- document.getElementById('border_color_left_pickcontainer').innerHTML = getColorPickerHTML('border_color_left_pick','border_color_left');
-
- fillSelect(0, 'text_font', 'style_font', defaultFonts, ';', true);
- fillSelect(0, 'text_size', 'style_font_size', defaultSizes, ';', true);
- fillSelect(0, 'text_size_measurement', 'style_font_size_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'text_case', 'style_text_case', "capitalize;uppercase;lowercase", ';', true);
- fillSelect(0, 'text_weight', 'style_font_weight', defaultWeight, ';', true);
- fillSelect(0, 'text_style', 'style_font_style', defaultTextStyle, ';', true);
- fillSelect(0, 'text_variant', 'style_font_variant', defaultVariant, ';', true);
- fillSelect(0, 'text_lineheight', 'style_font_line_height', defaultLineHeight, ';', true);
- fillSelect(0, 'text_lineheight_measurement', 'style_font_line_height_measurement', defaultMeasurement, ';', true);
-
- fillSelect(0, 'background_attachment', 'style_background_attachment', defaultAttachment, ';', true);
- fillSelect(0, 'background_repeat', 'style_background_repeat', defaultRepeat, ';', true);
-
- fillSelect(0, 'background_hpos_measurement', 'style_background_hpos_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'background_vpos_measurement', 'style_background_vpos_measurement', defaultMeasurement, ';', true);
-
- fillSelect(0, 'background_hpos', 'style_background_hpos', defaultPosH, ';', true);
- fillSelect(0, 'background_vpos', 'style_background_vpos', defaultPosV, ';', true);
-
- fillSelect(0, 'block_wordspacing', 'style_wordspacing', 'normal', ';', true);
- fillSelect(0, 'block_wordspacing_measurement', 'style_wordspacing_measurement', defaultSpacingMeasurement, ';', true);
- fillSelect(0, 'block_letterspacing', 'style_letterspacing', 'normal', ';', true);
- fillSelect(0, 'block_letterspacing_measurement', 'style_letterspacing_measurement', defaultSpacingMeasurement, ';', true);
- fillSelect(0, 'block_vertical_alignment', 'style_vertical_alignment', defaultVAlign, ';', true);
- fillSelect(0, 'block_text_align', 'style_text_align', "left;right;center;justify", ';', true);
- fillSelect(0, 'block_whitespace', 'style_whitespace', "normal;pre;nowrap", ';', true);
- fillSelect(0, 'block_display', 'style_display', defaultDisplay, ';', true);
- fillSelect(0, 'block_text_indent_measurement', 'style_text_indent_measurement', defaultIndentMeasurement, ';', true);
-
- fillSelect(0, 'box_width_measurement', 'style_box_width_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'box_height_measurement', 'style_box_height_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'box_float', 'style_float', 'left;right;none', ';', true);
- fillSelect(0, 'box_clear', 'style_clear', 'left;right;both;none', ';', true);
- fillSelect(0, 'box_padding_left_measurement', 'style_padding_left_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'box_padding_top_measurement', 'style_padding_top_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'box_padding_bottom_measurement', 'style_padding_bottom_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'box_padding_right_measurement', 'style_padding_right_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'box_margin_left_measurement', 'style_margin_left_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'box_margin_top_measurement', 'style_margin_top_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'box_margin_bottom_measurement', 'style_margin_bottom_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'box_margin_right_measurement', 'style_margin_right_measurement', defaultMeasurement, ';', true);
-
- fillSelect(0, 'border_style_top', 'style_border_style_top', defaultBorderStyle, ';', true);
- fillSelect(0, 'border_style_right', 'style_border_style_right', defaultBorderStyle, ';', true);
- fillSelect(0, 'border_style_bottom', 'style_border_style_bottom', defaultBorderStyle, ';', true);
- fillSelect(0, 'border_style_left', 'style_border_style_left', defaultBorderStyle, ';', true);
-
- fillSelect(0, 'border_width_top', 'style_border_width_top', defaultBorderWidth, ';', true);
- fillSelect(0, 'border_width_right', 'style_border_width_right', defaultBorderWidth, ';', true);
- fillSelect(0, 'border_width_bottom', 'style_border_width_bottom', defaultBorderWidth, ';', true);
- fillSelect(0, 'border_width_left', 'style_border_width_left', defaultBorderWidth, ';', true);
-
- fillSelect(0, 'border_width_top_measurement', 'style_border_width_top_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'border_width_right_measurement', 'style_border_width_right_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'border_width_bottom_measurement', 'style_border_width_bottom_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'border_width_left_measurement', 'style_border_width_left_measurement', defaultMeasurement, ';', true);
-
- fillSelect(0, 'list_type', 'style_list_type', defaultListType, ';', true);
- fillSelect(0, 'list_position', 'style_list_position', "inside;outside", ';', true);
-
- fillSelect(0, 'positioning_type', 'style_positioning_type', "absolute;relative;static", ';', true);
- fillSelect(0, 'positioning_visibility', 'style_positioning_visibility', "inherit;visible;hidden", ';', true);
-
- fillSelect(0, 'positioning_width_measurement', 'style_positioning_width_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'positioning_height_measurement', 'style_positioning_height_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'positioning_overflow', 'style_positioning_overflow', "visible;hidden;scroll;auto", ';', true);
-
- fillSelect(0, 'positioning_placement_top_measurement', 'style_positioning_placement_top_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'positioning_placement_right_measurement', 'style_positioning_placement_right_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'positioning_placement_bottom_measurement', 'style_positioning_placement_bottom_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'positioning_placement_left_measurement', 'style_positioning_placement_left_measurement', defaultMeasurement, ';', true);
-
- fillSelect(0, 'positioning_clip_top_measurement', 'style_positioning_clip_top_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'positioning_clip_right_measurement', 'style_positioning_clip_right_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'positioning_clip_bottom_measurement', 'style_positioning_clip_bottom_measurement', defaultMeasurement, ';', true);
- fillSelect(0, 'positioning_clip_left_measurement', 'style_positioning_clip_left_measurement', defaultMeasurement, ';', true);
-
- TinyMCE_EditableSelects.init();
- setupFormData();
- showDisabledControls();
-}
-
-function setupFormData() {
- var ce = document.getElementById('container'), f = document.forms[0], s, b, i;
-
- // Setup text fields
-
- selectByValue(f, 'text_font', ce.style.fontFamily, true, true);
- selectByValue(f, 'text_size', getNum(ce.style.fontSize), true, true);
- selectByValue(f, 'text_size_measurement', getMeasurement(ce.style.fontSize));
- selectByValue(f, 'text_weight', ce.style.fontWeight, true, true);
- selectByValue(f, 'text_style', ce.style.fontStyle, true, true);
- selectByValue(f, 'text_lineheight', getNum(ce.style.lineHeight), true, true);
- selectByValue(f, 'text_lineheight_measurement', getMeasurement(ce.style.lineHeight));
- selectByValue(f, 'text_case', ce.style.textTransform, true, true);
- selectByValue(f, 'text_variant', ce.style.fontVariant, true, true);
- f.text_color.value = tinyMCEPopup.editor.dom.toHex(ce.style.color);
- updateColor('text_color_pick', 'text_color');
- f.text_underline.checked = inStr(ce.style.textDecoration, 'underline');
- f.text_overline.checked = inStr(ce.style.textDecoration, 'overline');
- f.text_linethrough.checked = inStr(ce.style.textDecoration, 'line-through');
- f.text_blink.checked = inStr(ce.style.textDecoration, 'blink');
- f.text_none.checked = inStr(ce.style.textDecoration, 'none');
- updateTextDecorations();
-
- // Setup background fields
-
- f.background_color.value = tinyMCEPopup.editor.dom.toHex(ce.style.backgroundColor);
- updateColor('background_color_pick', 'background_color');
- f.background_image.value = ce.style.backgroundImage.replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
- selectByValue(f, 'background_repeat', ce.style.backgroundRepeat, true, true);
- selectByValue(f, 'background_attachment', ce.style.backgroundAttachment, true, true);
- selectByValue(f, 'background_hpos', getNum(getVal(ce.style.backgroundPosition, 0)), true, true);
- selectByValue(f, 'background_hpos_measurement', getMeasurement(getVal(ce.style.backgroundPosition, 0)));
- selectByValue(f, 'background_vpos', getNum(getVal(ce.style.backgroundPosition, 1)), true, true);
- selectByValue(f, 'background_vpos_measurement', getMeasurement(getVal(ce.style.backgroundPosition, 1)));
-
- // Setup block fields
-
- selectByValue(f, 'block_wordspacing', getNum(ce.style.wordSpacing), true, true);
- selectByValue(f, 'block_wordspacing_measurement', getMeasurement(ce.style.wordSpacing));
- selectByValue(f, 'block_letterspacing', getNum(ce.style.letterSpacing), true, true);
- selectByValue(f, 'block_letterspacing_measurement', getMeasurement(ce.style.letterSpacing));
- selectByValue(f, 'block_vertical_alignment', ce.style.verticalAlign, true, true);
- selectByValue(f, 'block_text_align', ce.style.textAlign, true, true);
- f.block_text_indent.value = getNum(ce.style.textIndent);
- selectByValue(f, 'block_text_indent_measurement', getMeasurement(ce.style.textIndent));
- selectByValue(f, 'block_whitespace', ce.style.whiteSpace, true, true);
- selectByValue(f, 'block_display', ce.style.display, true, true);
-
- // Setup box fields
-
- f.box_width.value = getNum(ce.style.width);
- selectByValue(f, 'box_width_measurement', getMeasurement(ce.style.width));
-
- f.box_height.value = getNum(ce.style.height);
- selectByValue(f, 'box_height_measurement', getMeasurement(ce.style.height));
- selectByValue(f, 'box_float', ce.style.cssFloat || ce.style.styleFloat, true, true);
-
- selectByValue(f, 'box_clear', ce.style.clear, true, true);
-
- setupBox(f, ce, 'box_padding', 'padding', '');
- setupBox(f, ce, 'box_margin', 'margin', '');
-
- // Setup border fields
-
- setupBox(f, ce, 'border_style', 'border', 'Style');
- setupBox(f, ce, 'border_width', 'border', 'Width');
- setupBox(f, ce, 'border_color', 'border', 'Color');
-
- updateColor('border_color_top_pick', 'border_color_top');
- updateColor('border_color_right_pick', 'border_color_right');
- updateColor('border_color_bottom_pick', 'border_color_bottom');
- updateColor('border_color_left_pick', 'border_color_left');
-
- f.elements.border_color_top.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_top.value);
- f.elements.border_color_right.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_right.value);
- f.elements.border_color_bottom.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_bottom.value);
- f.elements.border_color_left.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_left.value);
-
- // Setup list fields
-
- selectByValue(f, 'list_type', ce.style.listStyleType, true, true);
- selectByValue(f, 'list_position', ce.style.listStylePosition, true, true);
- f.list_bullet_image.value = ce.style.listStyleImage.replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
-
- // Setup box fields
-
- selectByValue(f, 'positioning_type', ce.style.position, true, true);
- selectByValue(f, 'positioning_visibility', ce.style.visibility, true, true);
- selectByValue(f, 'positioning_overflow', ce.style.overflow, true, true);
- f.positioning_zindex.value = ce.style.zIndex ? ce.style.zIndex : "";
-
- f.positioning_width.value = getNum(ce.style.width);
- selectByValue(f, 'positioning_width_measurement', getMeasurement(ce.style.width));
-
- f.positioning_height.value = getNum(ce.style.height);
- selectByValue(f, 'positioning_height_measurement', getMeasurement(ce.style.height));
-
- setupBox(f, ce, 'positioning_placement', '', '', ['top', 'right', 'bottom', 'left']);
-
- s = ce.style.clip.replace(new RegExp("rect\\('?([^']*)'?\\)", 'gi'), "$1");
- s = s.replace(/,/g, ' ');
-
- if (!hasEqualValues([getVal(s, 0), getVal(s, 1), getVal(s, 2), getVal(s, 3)])) {
- f.positioning_clip_top.value = getNum(getVal(s, 0));
- selectByValue(f, 'positioning_clip_top_measurement', getMeasurement(getVal(s, 0)));
- f.positioning_clip_right.value = getNum(getVal(s, 1));
- selectByValue(f, 'positioning_clip_right_measurement', getMeasurement(getVal(s, 1)));
- f.positioning_clip_bottom.value = getNum(getVal(s, 2));
- selectByValue(f, 'positioning_clip_bottom_measurement', getMeasurement(getVal(s, 2)));
- f.positioning_clip_left.value = getNum(getVal(s, 3));
- selectByValue(f, 'positioning_clip_left_measurement', getMeasurement(getVal(s, 3)));
- } else {
- f.positioning_clip_top.value = getNum(getVal(s, 0));
- selectByValue(f, 'positioning_clip_top_measurement', getMeasurement(getVal(s, 0)));
- f.positioning_clip_right.value = f.positioning_clip_bottom.value = f.positioning_clip_left.value;
- }
-
-// setupBox(f, ce, '', 'border', 'Color');
-}
-
-function getMeasurement(s) {
- return s.replace(/^([0-9.]+)(.*)$/, "$2");
-}
-
-function getNum(s) {
- if (new RegExp('^(?:[0-9.]+)(?:[a-z%]+)$', 'gi').test(s))
- return s.replace(/[^0-9.]/g, '');
-
- return s;
-}
-
-function inStr(s, n) {
- return new RegExp(n, 'gi').test(s);
-}
-
-function getVal(s, i) {
- var a = s.split(' ');
-
- if (a.length > 1)
- return a[i];
-
- return "";
-}
-
-function setValue(f, n, v) {
- if (f.elements[n].type == "text")
- f.elements[n].value = v;
- else
- selectByValue(f, n, v, true, true);
-}
-
-function setupBox(f, ce, fp, pr, sf, b) {
- if (typeof(b) == "undefined")
- b = ['Top', 'Right', 'Bottom', 'Left'];
-
- if (isSame(ce, pr, sf, b)) {
- f.elements[fp + "_same"].checked = true;
-
- setValue(f, fp + "_top", getNum(ce.style[pr + b[0] + sf]));
- f.elements[fp + "_top"].disabled = false;
-
- f.elements[fp + "_right"].value = "";
- f.elements[fp + "_right"].disabled = true;
- f.elements[fp + "_bottom"].value = "";
- f.elements[fp + "_bottom"].disabled = true;
- f.elements[fp + "_left"].value = "";
- f.elements[fp + "_left"].disabled = true;
-
- if (f.elements[fp + "_top_measurement"]) {
- selectByValue(f, fp + '_top_measurement', getMeasurement(ce.style[pr + b[0] + sf]));
- f.elements[fp + "_left_measurement"].disabled = true;
- f.elements[fp + "_bottom_measurement"].disabled = true;
- f.elements[fp + "_right_measurement"].disabled = true;
- }
- } else {
- f.elements[fp + "_same"].checked = false;
-
- setValue(f, fp + "_top", getNum(ce.style[pr + b[0] + sf]));
- f.elements[fp + "_top"].disabled = false;
-
- setValue(f, fp + "_right", getNum(ce.style[pr + b[1] + sf]));
- f.elements[fp + "_right"].disabled = false;
-
- setValue(f, fp + "_bottom", getNum(ce.style[pr + b[2] + sf]));
- f.elements[fp + "_bottom"].disabled = false;
-
- setValue(f, fp + "_left", getNum(ce.style[pr + b[3] + sf]));
- f.elements[fp + "_left"].disabled = false;
-
- if (f.elements[fp + "_top_measurement"]) {
- selectByValue(f, fp + '_top_measurement', getMeasurement(ce.style[pr + b[0] + sf]));
- selectByValue(f, fp + '_right_measurement', getMeasurement(ce.style[pr + b[1] + sf]));
- selectByValue(f, fp + '_bottom_measurement', getMeasurement(ce.style[pr + b[2] + sf]));
- selectByValue(f, fp + '_left_measurement', getMeasurement(ce.style[pr + b[3] + sf]));
- f.elements[fp + "_left_measurement"].disabled = false;
- f.elements[fp + "_bottom_measurement"].disabled = false;
- f.elements[fp + "_right_measurement"].disabled = false;
- }
- }
-}
-
-function isSame(e, pr, sf, b) {
- var a = [], i, x;
-
- if (typeof(b) == "undefined")
- b = ['Top', 'Right', 'Bottom', 'Left'];
-
- if (typeof(sf) == "undefined" || sf == null)
- sf = "";
-
- a[0] = e.style[pr + b[0] + sf];
- a[1] = e.style[pr + b[1] + sf];
- a[2] = e.style[pr + b[2] + sf];
- a[3] = e.style[pr + b[3] + sf];
-
- for (i=0; i<a.length; i++) {
- if (a[i] == null)
- return false;
-
- for (x=0; x<a.length; x++) {
- if (a[x] != a[i])
- return false;
- }
- }
-
- return true;
-};
-
-function hasEqualValues(a) {
- var i, x;
-
- for (i=0; i<a.length; i++) {
- if (a[i] == null)
- return false;
-
- for (x=0; x<a.length; x++) {
- if (a[x] != a[i])
- return false;
- }
- }
-
- return true;
-}
-
-function toggleApplyAction() {
- applyActionIsInsert = ! applyActionIsInsert;
-}
-
-function applyAction() {
- var ce = document.getElementById('container'), ed = tinyMCEPopup.editor;
-
- generateCSS();
-
- tinyMCEPopup.restoreSelection();
-
- var newStyles = tinyMCEPopup.editor.dom.parseStyle(ce.style.cssText);
-
- if (applyActionIsInsert) {
- ed.formatter.register('plugin_style', {
- inline: 'span', styles: existingStyles
- });
- ed.formatter.remove('plugin_style');
-
- ed.formatter.register('plugin_style', {
- inline: 'span', styles: newStyles
- });
- ed.formatter.apply('plugin_style');
- } else {
- var nodes;
-
- if (tinyMCEPopup.getWindowArg('applyStyleToBlocks')) {
- nodes = ed.selection.getSelectedBlocks();
- }
- else {
- nodes = ed.selection.getNode();
- }
-
- ed.dom.setAttrib(nodes, 'style', tinyMCEPopup.editor.dom.serializeStyle(newStyles));
- }
-}
-
-function updateAction() {
- applyAction();
- tinyMCEPopup.close();
-}
-
-function generateCSS() {
- var ce = document.getElementById('container'), f = document.forms[0], num = new RegExp('[0-9]+', 'g'), s, t;
-
- ce.style.cssText = "";
-
- // Build text styles
- ce.style.fontFamily = f.text_font.value;
- ce.style.fontSize = f.text_size.value + (isNum(f.text_size.value) ? (f.text_size_measurement.value || 'px') : "");
- ce.style.fontStyle = f.text_style.value;
- ce.style.lineHeight = f.text_lineheight.value + (isNum(f.text_lineheight.value) ? f.text_lineheight_measurement.value : "");
- ce.style.textTransform = f.text_case.value;
- ce.style.fontWeight = f.text_weight.value;
- ce.style.fontVariant = f.text_variant.value;
- ce.style.color = f.text_color.value;
-
- s = "";
- s += f.text_underline.checked ? " underline" : "";
- s += f.text_overline.checked ? " overline" : "";
- s += f.text_linethrough.checked ? " line-through" : "";
- s += f.text_blink.checked ? " blink" : "";
- s = s.length > 0 ? s.substring(1) : s;
-
- if (f.text_none.checked)
- s = "none";
-
- ce.style.textDecoration = s;
-
- // Build background styles
-
- ce.style.backgroundColor = f.background_color.value;
- ce.style.backgroundImage = f.background_image.value != "" ? "url(" + f.background_image.value + ")" : "";
- ce.style.backgroundRepeat = f.background_repeat.value;
- ce.style.backgroundAttachment = f.background_attachment.value;
-
- if (f.background_hpos.value != "") {
- s = "";
- s += f.background_hpos.value + (isNum(f.background_hpos.value) ? f.background_hpos_measurement.value : "") + " ";
- s += f.background_vpos.value + (isNum(f.background_vpos.value) ? f.background_vpos_measurement.value : "");
- ce.style.backgroundPosition = s;
- }
-
- // Build block styles
-
- ce.style.wordSpacing = f.block_wordspacing.value + (isNum(f.block_wordspacing.value) ? f.block_wordspacing_measurement.value : "");
- ce.style.letterSpacing = f.block_letterspacing.value + (isNum(f.block_letterspacing.value) ? f.block_letterspacing_measurement.value : "");
- ce.style.verticalAlign = f.block_vertical_alignment.value;
- ce.style.textAlign = f.block_text_align.value;
- ce.style.textIndent = f.block_text_indent.value + (isNum(f.block_text_indent.value) ? f.block_text_indent_measurement.value : "");
- ce.style.whiteSpace = f.block_whitespace.value;
- ce.style.display = f.block_display.value;
-
- // Build box styles
-
- ce.style.width = f.box_width.value + (isNum(f.box_width.value) ? f.box_width_measurement.value : "");
- ce.style.height = f.box_height.value + (isNum(f.box_height.value) ? f.box_height_measurement.value : "");
- ce.style.styleFloat = f.box_float.value;
- ce.style.cssFloat = f.box_float.value;
-
- ce.style.clear = f.box_clear.value;
-
- if (!f.box_padding_same.checked) {
- ce.style.paddingTop = f.box_padding_top.value + (isNum(f.box_padding_top.value) ? f.box_padding_top_measurement.value : "");
- ce.style.paddingRight = f.box_padding_right.value + (isNum(f.box_padding_right.value) ? f.box_padding_right_measurement.value : "");
- ce.style.paddingBottom = f.box_padding_bottom.value + (isNum(f.box_padding_bottom.value) ? f.box_padding_bottom_measurement.value : "");
- ce.style.paddingLeft = f.box_padding_left.value + (isNum(f.box_padding_left.value) ? f.box_padding_left_measurement.value : "");
- } else
- ce.style.padding = f.box_padding_top.value + (isNum(f.box_padding_top.value) ? f.box_padding_top_measurement.value : "");
-
- if (!f.box_margin_same.checked) {
- ce.style.marginTop = f.box_margin_top.value + (isNum(f.box_margin_top.value) ? f.box_margin_top_measurement.value : "");
- ce.style.marginRight = f.box_margin_right.value + (isNum(f.box_margin_right.value) ? f.box_margin_right_measurement.value : "");
- ce.style.marginBottom = f.box_margin_bottom.value + (isNum(f.box_margin_bottom.value) ? f.box_margin_bottom_measurement.value : "");
- ce.style.marginLeft = f.box_margin_left.value + (isNum(f.box_margin_left.value) ? f.box_margin_left_measurement.value : "");
- } else
- ce.style.margin = f.box_margin_top.value + (isNum(f.box_margin_top.value) ? f.box_margin_top_measurement.value : "");
-
- // Build border styles
-
- if (!f.border_style_same.checked) {
- ce.style.borderTopStyle = f.border_style_top.value;
- ce.style.borderRightStyle = f.border_style_right.value;
- ce.style.borderBottomStyle = f.border_style_bottom.value;
- ce.style.borderLeftStyle = f.border_style_left.value;
- } else
- ce.style.borderStyle = f.border_style_top.value;
-
- if (!f.border_width_same.checked) {
- ce.style.borderTopWidth = f.border_width_top.value + (isNum(f.border_width_top.value) ? f.border_width_top_measurement.value : "");
- ce.style.borderRightWidth = f.border_width_right.value + (isNum(f.border_width_right.value) ? f.border_width_right_measurement.value : "");
- ce.style.borderBottomWidth = f.border_width_bottom.value + (isNum(f.border_width_bottom.value) ? f.border_width_bottom_measurement.value : "");
- ce.style.borderLeftWidth = f.border_width_left.value + (isNum(f.border_width_left.value) ? f.border_width_left_measurement.value : "");
- } else
- ce.style.borderWidth = f.border_width_top.value + (isNum(f.border_width_top.value) ? f.border_width_top_measurement.value : "");
-
- if (!f.border_color_same.checked) {
- ce.style.borderTopColor = f.border_color_top.value;
- ce.style.borderRightColor = f.border_color_right.value;
- ce.style.borderBottomColor = f.border_color_bottom.value;
- ce.style.borderLeftColor = f.border_color_left.value;
- } else
- ce.style.borderColor = f.border_color_top.value;
-
- // Build list styles
-
- ce.style.listStyleType = f.list_type.value;
- ce.style.listStylePosition = f.list_position.value;
- ce.style.listStyleImage = f.list_bullet_image.value != "" ? "url(" + f.list_bullet_image.value + ")" : "";
-
- // Build positioning styles
-
- ce.style.position = f.positioning_type.value;
- ce.style.visibility = f.positioning_visibility.value;
-
- if (ce.style.width == "")
- ce.style.width = f.positioning_width.value + (isNum(f.positioning_width.value) ? f.positioning_width_measurement.value : "");
-
- if (ce.style.height == "")
- ce.style.height = f.positioning_height.value + (isNum(f.positioning_height.value) ? f.positioning_height_measurement.value : "");
-
- ce.style.zIndex = f.positioning_zindex.value;
- ce.style.overflow = f.positioning_overflow.value;
-
- if (!f.positioning_placement_same.checked) {
- ce.style.top = f.positioning_placement_top.value + (isNum(f.positioning_placement_top.value) ? f.positioning_placement_top_measurement.value : "");
- ce.style.right = f.positioning_placement_right.value + (isNum(f.positioning_placement_right.value) ? f.positioning_placement_right_measurement.value : "");
- ce.style.bottom = f.positioning_placement_bottom.value + (isNum(f.positioning_placement_bottom.value) ? f.positioning_placement_bottom_measurement.value : "");
- ce.style.left = f.positioning_placement_left.value + (isNum(f.positioning_placement_left.value) ? f.positioning_placement_left_measurement.value : "");
- } else {
- s = f.positioning_placement_top.value + (isNum(f.positioning_placement_top.value) ? f.positioning_placement_top_measurement.value : "");
- ce.style.top = s;
- ce.style.right = s;
- ce.style.bottom = s;
- ce.style.left = s;
- }
-
- if (!f.positioning_clip_same.checked) {
- s = "rect(";
- s += (isNum(f.positioning_clip_top.value) ? f.positioning_clip_top.value + f.positioning_clip_top_measurement.value : "auto") + " ";
- s += (isNum(f.positioning_clip_right.value) ? f.positioning_clip_right.value + f.positioning_clip_right_measurement.value : "auto") + " ";
- s += (isNum(f.positioning_clip_bottom.value) ? f.positioning_clip_bottom.value + f.positioning_clip_bottom_measurement.value : "auto") + " ";
- s += (isNum(f.positioning_clip_left.value) ? f.positioning_clip_left.value + f.positioning_clip_left_measurement.value : "auto");
- s += ")";
-
- if (s != "rect(auto auto auto auto)")
- ce.style.clip = s;
- } else {
- s = "rect(";
- t = isNum(f.positioning_clip_top.value) ? f.positioning_clip_top.value + f.positioning_clip_top_measurement.value : "auto";
- s += t + " ";
- s += t + " ";
- s += t + " ";
- s += t + ")";
-
- if (s != "rect(auto auto auto auto)")
- ce.style.clip = s;
- }
-
- ce.style.cssText = ce.style.cssText;
-}
-
-function isNum(s) {
- return new RegExp('[0-9]+', 'g').test(s);
-}
-
-function showDisabledControls() {
- var f = document.forms, i, a;
-
- for (i=0; i<f.length; i++) {
- for (a=0; a<f[i].elements.length; a++) {
- if (f[i].elements[a].disabled)
- tinyMCEPopup.editor.dom.addClass(f[i].elements[a], "disabled");
- else
- tinyMCEPopup.editor.dom.removeClass(f[i].elements[a], "disabled");
- }
- }
-}
-
-function fillSelect(f, s, param, dval, sep, em) {
- var i, ar, p, se;
-
- f = document.forms[f];
- sep = typeof(sep) == "undefined" ? ";" : sep;
-
- if (em)
- addSelectValue(f, s, "", "");
-
- ar = tinyMCEPopup.getParam(param, dval).split(sep);
- for (i=0; i<ar.length; i++) {
- se = false;
-
- if (ar[i].charAt(0) == '+') {
- ar[i] = ar[i].substring(1);
- se = true;
- }
-
- p = ar[i].split('=');
-
- if (p.length > 1) {
- addSelectValue(f, s, p[0], p[1]);
-
- if (se)
- selectByValue(f, s, p[1]);
- } else {
- addSelectValue(f, s, p[0], p[0]);
-
- if (se)
- selectByValue(f, s, p[0]);
- }
- }
-}
-
-function toggleSame(ce, pre) {
- var el = document.forms[0].elements, i;
-
- if (ce.checked) {
- el[pre + "_top"].disabled = false;
- el[pre + "_right"].disabled = true;
- el[pre + "_bottom"].disabled = true;
- el[pre + "_left"].disabled = true;
-
- if (el[pre + "_top_measurement"]) {
- el[pre + "_top_measurement"].disabled = false;
- el[pre + "_right_measurement"].disabled = true;
- el[pre + "_bottom_measurement"].disabled = true;
- el[pre + "_left_measurement"].disabled = true;
- }
- } else {
- el[pre + "_top"].disabled = false;
- el[pre + "_right"].disabled = false;
- el[pre + "_bottom"].disabled = false;
- el[pre + "_left"].disabled = false;
-
- if (el[pre + "_top_measurement"]) {
- el[pre + "_top_measurement"].disabled = false;
- el[pre + "_right_measurement"].disabled = false;
- el[pre + "_bottom_measurement"].disabled = false;
- el[pre + "_left_measurement"].disabled = false;
- }
- }
-
- showDisabledControls();
-}
-
-function synch(fr, to) {
- var f = document.forms[0];
-
- f.elements[to].value = f.elements[fr].value;
-
- if (f.elements[fr + "_measurement"])
- selectByValue(f, to + "_measurement", f.elements[fr + "_measurement"].value);
-}
-
-function updateTextDecorations(){
- var el = document.forms[0].elements;
-
- var textDecorations = ["text_underline", "text_overline", "text_linethrough", "text_blink"];
- var noneChecked = el["text_none"].checked;
- tinymce.each(textDecorations, function(id) {
- el[id].disabled = noneChecked;
- if (noneChecked) {
- el[id].checked = false;
- }
- });
-}
-
-tinyMCEPopup.onInit.add(init);
diff --git a/program/js/tiny_mce/plugins/style/langs/ar_dlg.js b/program/js/tiny_mce/plugins/style/langs/ar_dlg.js
deleted file mode 100644
index 8621f097d..000000000
--- a/program/js/tiny_mce/plugins/style/langs/ar_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ar.style_dlg',{"text_lineheight":"\u0627\u0631\u062a\u0641\u0627\u0639 \u0627\u0644\u062e\u0637","text_variant":"\u0634\u0643\u0644 \u0645\u062e\u062a\u0644\u0641","text_style":"\u0633\u0645\u0647","text_weight":"\u0627\u0644\u0639\u0631\u0636","text_size":"\u062d\u062c\u0645","text_font":"\u062e\u0637","text_props":"\u0646\u0635","positioning_tab":"\u0648\u0636\u0639","list_tab":"\u0642\u0627\u0626\u0645\u0647","border_tab":"\u0627\u0637\u0627\u0631","box_tab":"\u0635\u0646\u062f\u0648\u0642","block_tab":"\u0628\u0644\u0648\u0643","background_tab":"\u062e\u0644\u0641\u064a\u0647","text_tab":"\u0646\u0635",apply:"\u0627\u062f\u0631\u0627\u062c",title:"Edit CSS Style",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"\u0627\u0644\u0628\u0639\u062f \u0627\u0644\u062b\u0627\u0644\u062b",visibility:"\u0627\u0644\u0638\u0647\u0648\u0631","positioning_type":"\u0646\u0648\u0639",position:"Position","bullet_image":"Bullet image","list_type":"\u0646\u0648\u0639",color:"\u0644\u0648\u0646",height:"\u0627\u0631\u062a\u0641\u0627\u0639",width:"\u0639\u0631\u0636",style:"\u0633\u0645\u0647",margin:"Margin",left:"\u064a\u0633\u0627\u0631",bottom:"\u0627\u0633\u0641\u0644",right:"\u064a\u0645\u064a\u0646",top:"\u0627\u0644\u0627\u0639\u0644\u0649",same:"\u0645\u062a\u0633\u0627\u0648\u0649 \u0644\u0644\u0643\u0644",padding:"Padding","box_clear":"Clear","box_float":"Float","box_height":"\u0627\u0631\u062a\u0641\u0627\u0639","box_width":"\u0639\u0631\u0636","block_display":"Display","block_whitespace":"Whitespace","block_text_indent":"Text indent","block_text_align":"Text align","block_vertical_alignment":"\u0645\u062d\u0627\u0632\u0627\u0647 \u0631\u0623\u0633\u064a\u0647","block_letterspacing":"\u062a\u0628\u0627\u0639\u062f \u0627\u0644\u062d\u0631\u0648\u0641","block_wordspacing":"\u062a\u0628\u0627\u0639\u062f \u0627\u0644\u0643\u0644\u0645\u0627\u062a","background_vpos":"Vertical position","background_hpos":"Horizontal position","background_attachment":"\u0645\u0631\u0641\u0642\u0627\u062a","background_repeat":"\u062a\u0643\u0631\u0627\u0631","background_image":"\u0635\u0648\u0631\u0629 \u0627\u0644\u062e\u0644\u0641\u064a\u0647","background_color":"\u0644\u0648\u0646 \u0627\u0644\u062e\u0644\u0641\u064a\u0647","text_none":"\u0644\u0627 \u0634\u0626","text_blink":"blink","text_case":"Case","text_striketrough":"strikethrough","text_underline":"\u062a\u062d\u062a\u0647 \u062e\u0637","text_overline":"\u0641\u0648\u0642\u0647 \u062e\u0637","text_decoration":"Decoration","text_color":"\u0644\u0648\u0646",text:"\u0646\u0635",background:"\u0627\u0644\u062e\u0644\u0641\u064a\u0629",block:"\u0628\u0644\u0648\u0643",box:"\u0635\u0646\u062f\u0648\u0642",border:"\u062d\u062f\u0648\u062f",list:"\u0642\u0627\u0626\u0645\u0629"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/az_dlg.js b/program/js/tiny_mce/plugins/style/langs/az_dlg.js
deleted file mode 100644
index 81d8cdca5..000000000
--- a/program/js/tiny_mce/plugins/style/langs/az_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('az.style_dlg',{"text_lineheight":"S\u0259tr h\u00fcnd\u00fcrl\u00fcy\u00fc","text_variant":"Variant","text_style":"Stil","text_weight":"\u00c7\u0259kisi","text_size":"\u00d6l\u00e7\u00fcs\u00fc","text_font":"\u015erift","text_props":"M\u0259tn","positioning_tab":"M\u00f6vqe","list_tab":"Siyah\u0131","border_tab":"S\u0259rh\u0259d","box_tab":"Konteyner","block_tab":"Blok","background_tab":"Fon","text_tab":"M\u0259tn",apply:"T\u0259tbiq et",title:"CSS stili redakt\u0259 et",clip:"K\u0259sm\u0259k",placement:"Yerl\u0259\u015fdirm\u0259",overflow:"Axma",zindex:"Z-indeks",visibility:"G\u00f6r\u00fcn\u00fc\u015f","positioning_type":"N\u00f6v",position:"M\u00f6vqe","bullet_image":"Marker \u015f\u0259kli","list_type":"N\u00f6v",color:"R\u0259ng",height:"H\u00fcnd\u00fcrl\u00fck",width:"En",style:"Stil",margin:"Sah\u0259l\u0259r",left:"Soldan",bottom:"A\u015fa\u011f\u0131dan",right:"Sa\u011fdan",top:"Yuxar\u0131dan",same:"Ham\u0131s\u0131 \u00fc\u00e7\u00fcn eyni",padding:"Doldurma","box_clear":"T\u0259mizl\u0259","box_float":"\u00dcz\u0259n","box_height":"Uzunlu\u011fu","box_width":"Eni","block_display":"N\u00fcmayis","block_whitespace":"Bo\u015fluq","block_text_indent":"M\u0259tn bo\u015flu\u011fu","block_text_align":"M\u0259tn tara\u015fla\u015fd\u0131r\u0131lmas\u0131","block_vertical_alignment":"\u015eaquli tarazla\u015fd\u0131r\u0131lma","block_letterspacing":"Simvol aras\u0131 bo\u015fluqlar","block_wordspacing":"S\u00f6zaras\u0131 bo\u015fluqlar","background_vpos":"\u015eaquli m\u00f6vqe","background_hpos":"\u00dcf\u00fcqi m\u00f6vqe","background_attachment":"B\u0259rkitm\u0259k","background_repeat":"T\u0259krar","background_image":"fon \u015f\u0259kli","background_color":"Fon r\u0259ngi","text_none":"he\u00e7 biri","text_blink":"Yan\u0131b-s\u00f6n\u0259n","text_case":"Registr","text_striketrough":"\u00fcst\u00fcnd\u0259n x\u0259tt","text_underline":"alt\u0131ndan x\u0259tt","text_overline":"\u00fcz\u0259rind\u0259n x\u0259tt","text_decoration":"B\u0259z\u0259k","text_color":"\u015e\u0259kil",text:"Text",background:"Background",block:"Block",box:"Box",border:"Border",list:"List"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/bg_dlg.js b/program/js/tiny_mce/plugins/style/langs/bg_dlg.js
deleted file mode 100644
index 1be3bbab8..000000000
--- a/program/js/tiny_mce/plugins/style/langs/bg_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bg.style_dlg',{"text_lineheight":"\u0412\u0438\u0441\u043e\u0447\u0438\u043d\u0430 \u043d\u0430 \u0440\u0435\u0434\u0430","text_variant":"\u041f\u0440\u043e\u043c\u0435\u043d\u043b\u0438\u0432","text_style":"\u0421\u0442\u0438\u043b","text_weight":"\u0422\u0435\u0433\u043b\u043e","text_size":"\u0420\u0430\u0437\u043c\u0435\u0440","text_font":"\u0428\u0440\u0438\u0444\u0442","text_props":"\u0422\u0435\u043a\u0441\u0442","positioning_tab":"\u041f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u0430\u043d\u0435","list_tab":"\u0421\u043f\u0438\u0441\u044a\u043a","border_tab":"\u0420\u0430\u043c\u043a\u0430","box_tab":"\u041a\u0443\u0442\u0438\u044f","block_tab":"\u0411\u043b\u043e\u043a","background_tab":"\u0424\u043e\u043d","text_tab":"\u0422\u0435\u043a\u0441\u0442",apply:"\u041f\u043e\u0442\u0432\u044a\u0440\u0434\u0438",title:"\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 CSS \u0441\u0442\u0438\u043b",clip:"\u041e\u0442\u0440\u0435\u0436\u0438",placement:"\u0420\u0430\u0437\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435",overflow:"Overflow",zindex:"Z-\u0438\u043d\u0434\u0435\u043a\u0441",visibility:"\u0412\u0438\u0434\u0438\u043c\u043e\u0441\u0442","positioning_type":"\u0422\u0438\u043f",position:"\u041f\u043e\u0437\u0438\u0446\u0438\u044f","bullet_image":"\u0413\u0440\u0430\u0444\u0438\u043a\u0430 \u043d\u0430 \u0432\u043e\u0434\u0430\u0447\u0438\u0442\u0435","list_type":"\u0422\u0438\u043f",color:"\u0426\u0432\u044f\u0442",height:"\u0412\u0438\u0441\u043e\u0447\u0438\u043d\u0430",width:"\u0428\u0438\u0440\u0438\u043d\u0430",style:"\u0421\u0442\u0438\u043b",margin:"\u041e\u0442\u0441\u0442\u044a\u043f \u043e\u0442\u0432\u044a\u043d",left:"\u041b\u044f\u0432\u043e",bottom:"\u0414\u043e\u043b\u0443",right:"\u0414\u044f\u0441\u043d\u043e",top:"\u0413\u043e\u0440\u0435",same:"\u0417\u0430 \u0432\u0441\u0438\u0447\u043a\u0438",padding:"\u041e\u0442\u0441\u0442\u044a\u043f \u043d\u0430\u0432\u044a\u0442\u0440\u0435","box_clear":"\u0418\u0437\u0447\u0438\u0441\u0442\u0438","box_float":"\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435","box_height":"\u0412\u0438\u0441\u043e\u0447\u0438\u043d\u0430","box_width":"\u0428\u0438\u0440\u0438\u043d\u0430","block_display":"\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435","block_whitespace":"\u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b","block_text_indent":"\u041e\u0442\u0441\u0442\u044a\u043f \u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0430","block_text_align":"\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435 \u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0430","block_vertical_alignment":"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u043d\u043e \u043f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435","block_letterspacing":"\u0420\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0431\u0443\u043a\u0432\u0438\u0442\u0435","block_wordspacing":"\u0420\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0434\u0443\u043c\u0438\u0442\u0435","background_vpos":"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u043d\u0430 \u043f\u043e\u0437\u0438\u0446\u0438\u044f","background_hpos":"\u0425\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u043d\u0430 \u043f\u043e\u0437\u0438\u0446\u0438\u044f","background_attachment":"\u041f\u0440\u0438\u043a\u0440\u0435\u043f\u0438","background_repeat":"\u041f\u043e\u0432\u0442\u043e\u0440\u0438","background_image":"\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0437\u0430 \u0444\u043e\u043d","background_color":"\u0426\u0432\u044f\u0442 \u0437\u0430 \u0444\u043e\u043d","text_none":"\u043d\u0438\u0449\u043e","text_blink":"\u043c\u0438\u0433\u0430","text_case":"\u0420\u0435\u0433\u0438\u0441\u0442\u044a\u0440","text_striketrough":"\u0437\u0430\u0447\u0435\u0440\u0442\u0430\u043d","text_underline":"\u043f\u043e\u0434\u0447\u0435\u0440\u0442\u0430\u043d","text_overline":"\u043d\u0430\u0434\u0447\u0435\u0440\u0442\u0430\u043d","text_decoration":"\u0414\u0435\u043a\u043e\u0440\u0430\u0446\u0438\u044f","text_color":"\u0426\u0432\u044f\u0442",text:"\u0422\u0435\u043a\u0441\u0442",background:"\u0424\u043e\u043d",block:"\u0411\u043b\u043e\u043a",box:"\u041a\u0443\u0442\u0438\u044f",border:"\u0420\u0430\u043c\u043a\u0430",list:"\u0421\u043f\u0438\u0441\u044a\u043a"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/bn_dlg.js b/program/js/tiny_mce/plugins/style/langs/bn_dlg.js
deleted file mode 100644
index 77db89017..000000000
--- a/program/js/tiny_mce/plugins/style/langs/bn_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bn.style_dlg',{"text_lineheight":"Line height","text_variant":"Variant","text_style":"Style","text_weight":"Weight","text_size":"Size","text_font":"Font","text_props":"Text","positioning_tab":"Positioning","list_tab":"List","border_tab":"Border","box_tab":"Box","block_tab":"Block","background_tab":"Background","text_tab":"Text",apply:"Apply",title:"Edit CSS Style",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibility","positioning_type":"Type",position:"Position","bullet_image":"Bullet image","list_type":"Type",color:"Color",height:"Height",width:"Width",style:"Style",margin:"Margin",left:"Left",bottom:"Bottom",right:"Right",top:"Top",same:"Same for all",padding:"Padding","box_clear":"Clear","box_float":"Float","box_height":"Height","box_width":"Width","block_display":"Display","block_whitespace":"Whitespace","block_text_indent":"Text indent","block_text_align":"Text align","block_vertical_alignment":"Vertical alignment","block_letterspacing":"Letter spacing","block_wordspacing":"Word spacing","background_vpos":"Vertical position","background_hpos":"Horizontal position","background_attachment":"Attachment","background_repeat":"Repeat","background_image":"Background image","background_color":"Background color","text_none":"none","text_blink":"blink","text_case":"Case","text_striketrough":"strikethrough","text_underline":"underline","text_overline":"overline","text_decoration":"Decoration","text_color":"Color",text:"Text",background:"Background",block:"Block",box:"Box",border:"Border",list:"List"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/br_dlg.js b/program/js/tiny_mce/plugins/style/langs/br_dlg.js
deleted file mode 100644
index c8cabcd28..000000000
--- a/program/js/tiny_mce/plugins/style/langs/br_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('br.style_dlg',{"text_lineheight":"Altura da linha","text_variant":"Variante","text_style":"Estilo","text_weight":"Peso","text_size":"Tamanho","text_font":"Fonte","text_props":"Texto","positioning_tab":"Posicionamento","list_tab":"Lista","border_tab":"Limites","box_tab":"Caixa","block_tab":"Bloco","background_tab":"Fundo","text_tab":"Texto",apply:"Aplicar",title:"Editar CSS",clip:"Clip",placement:"Posicionamento",overflow:"Overflow",zindex:"Z-index",visibility:"Visibilidade","positioning_type":"Tipo",position:"Posi\u00e7\u00e3o","bullet_image":"Imagem de lista","list_type":"Tipo",color:"Cor",height:"Altura",width:"Largura",style:"Estilo",margin:"Margem",left:"Esquerda",bottom:"Abaixo",right:"Direita",top:"Topo",same:"O mesmo para todos",padding:"Padding","box_clear":"Clear","box_float":"Float","box_height":"Altura","box_width":"Largura","block_display":"Display","block_whitespace":"Espa\u00e7o","block_text_indent":"Indent","block_text_align":"Alinhamento de texto","block_vertical_alignment":"Alinhamento vertical","block_letterspacing":"Espa\u00e7amento de letras","block_wordspacing":"Espa\u00e7amento de palavras","background_vpos":"Posi\u00e7\u00e3o vertical","background_hpos":"Posi\u00e7\u00e3o horizontal","background_attachment":"Fixar","background_repeat":"Repetir","background_image":"Imagem de fundo","background_color":"Cor de fundo","text_none":"nenhum","text_blink":"Piscar","text_case":"Mai\u00fascula/min\u00fascula","text_striketrough":"Riscado","text_underline":"Sublinhado","text_overline":"Sobrelinha","text_decoration":"Decora\u00e7\u00e3o","text_color":"Cor",text:"Text",background:"Background",block:"Block",box:"Box",border:"Border",list:"List"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/bs_dlg.js b/program/js/tiny_mce/plugins/style/langs/bs_dlg.js
deleted file mode 100644
index 56bd50590..000000000
--- a/program/js/tiny_mce/plugins/style/langs/bs_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bs.style_dlg',{"text_lineheight":"Line height","text_variant":"Variant","text_style":"Style","text_weight":"Weight","text_size":"Size","text_font":"Font","text_props":"Text","positioning_tab":"Positioning","list_tab":"List","border_tab":"Border","box_tab":"Box","block_tab":"Block","background_tab":"Background","text_tab":"Text",apply:"Apply",title:"Edit CSS Style",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibility","positioning_type":"Type",position:"Position","bullet_image":"Bullet image","list_type":"Type",color:"Color",height:"Height",width:"Width",style:"Style",margin:"Margin",left:"Left",bottom:"Bottom",right:"Right",top:"Top",same:"Same for all",padding:"Padding","box_clear":"Clear","box_float":"Float","box_height":"Height","box_width":"Width","block_display":"Display","block_whitespace":"Whitespace","block_text_indent":"Text indent","block_text_align":"Text align","block_vertical_alignment":"Vertical alignment","block_letterspacing":"Letter spacing","block_wordspacing":"Word spacing","background_vpos":"Vertical position","background_hpos":"Horizontal position","background_attachment":"Attachment","background_repeat":"Repeat","background_image":"Background image","background_color":"Background color","text_none":"none","text_blink":"blink","text_case":"Case","text_striketrough":"strikethrough","text_underline":"underline","text_overline":"overline","text_decoration":"Decoration","text_color":"Color",text:"Text",background:"Background",block:"Block",box:"Box",border:"Border",list:"List"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/ca_dlg.js b/program/js/tiny_mce/plugins/style/langs/ca_dlg.js
deleted file mode 100644
index 466109a0f..000000000
--- a/program/js/tiny_mce/plugins/style/langs/ca_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ca.style_dlg',{"text_lineheight":"Al\u00e7ada de l\u00ednia","text_variant":"Variant","text_style":"Estil","text_weight":"Pes","text_size":"Mida","text_font":"Font","text_props":"Text","positioning_tab":"Posicionament","list_tab":"Llista","border_tab":"Contorn","box_tab":"Quadre","block_tab":"Bloc","background_tab":"Fons","text_tab":"Text",apply:"Aplica",title:"Edita l\'estil CSS",clip:"Retall",placement:"Empla\u00e7ament",overflow:"Desbordament",zindex:"\u00cdndex Z",visibility:"Visibilitat","positioning_type":"Tipus",position:"Posici\u00f3","bullet_image":"Imatge pic","list_type":"Tipus",color:"Color",height:"Al\u00e7ada",width:"Amplada",style:"Estil",margin:"Marge",left:"Esquerra",bottom:"Avall",right:"Dreta",top:"Dalt",same:"Igual per a tot",padding:"Separaci\u00f3","box_clear":"Buida","box_float":"Flota","box_height":"Al\u00e7ada","box_width":"Amplada","block_display":"Visualitzaci\u00f3","block_whitespace":"Espai en blanc","block_text_indent":"Sagna el text","block_text_align":"Alinea el text","block_vertical_alignment":"Alineaci\u00f3 vertical","block_letterspacing":"Espaiat entre lletres","block_wordspacing":"Espaiat entre paraules","background_vpos":"Posici\u00f3 vertical","background_hpos":"Posici\u00f3 horitzontal","background_attachment":"Adjunt","background_repeat":"Repeteix","background_image":"Imatge de fons","background_color":"Color de fons","text_none":"cap","text_blink":"parpelleig","text_case":"Cas","text_striketrough":"barrat","text_underline":"subratllat","text_overline":"sobreratllat","text_decoration":"Decoraci\u00f3","text_color":"Color",text:"Text",background:"Fons",block:"Bloc",box:"Caixa",border:"Contorn",list:"Llista"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/cs_dlg.js b/program/js/tiny_mce/plugins/style/langs/cs_dlg.js
deleted file mode 100644
index 8e6dc60cc..000000000
--- a/program/js/tiny_mce/plugins/style/langs/cs_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('cs.style_dlg',{"text_lineheight":"V\u00fd\u0161ka \u0159\u00e1dku","text_variant":"Varianta","text_style":"Styl textu","text_weight":"Tu\u010dnost p\u00edsma","text_size":"Velikost","text_font":"P\u00edsmo","text_props":"Text","positioning_tab":"Um\u00edst\u011bn\u00ed","list_tab":"Seznam","border_tab":"Ohrani\u010den\u00ed","box_tab":"Box","block_tab":"Blok","background_tab":"Pozad\u00ed","text_tab":"Text",apply:"Pou\u017e\u00edt",title:"Upravit CSS styl",clip:"O\u0159ez\u00e1n\u00ed (clip)",placement:"Um\u00edst\u011bni",overflow:"P\u0159ete\u010den\u00ed (overflow)",zindex:"Z-index",visibility:"Viditelnost","positioning_type":"Typ",position:"Um\u00edst\u011bn\u00ed","bullet_image":"Styl odr\u00e1\u017eek","list_type":"Typ",color:"Barva",height:"V\u00fd\u0161ka",width:"\u0160\u00ed\u0159ka",style:"Styl",margin:"Okraje (margin)",left:"Vlevo",bottom:"Dole",right:"Vpravo",top:"Naho\u0159e",same:"Stejn\u00e9 pro v\u0161echny",padding:"Odsazen\u00ed (padding)","box_clear":"Vy\u010distit","box_float":"Plovouc\u00ed","box_height":"V\u00fd\u0161ka","box_width":"\u0160\u00ed\u0159ka","block_display":"Blokov\u00e9 zobrazen\u00ed","block_whitespace":"Zalamov\u00e1n\u00ed textu","block_text_indent":"Odsazen\u00ed textu","block_text_align":"Zarovn\u00e1n\u00ed textu","block_vertical_alignment":"Vertik\u00e1ln\u00ed zarovn\u00e1n\u00ed","block_letterspacing":"Rozestup znak\u016f","block_wordspacing":"Rozestup slov","background_vpos":"Vertik\u00e1ln\u00ed um\u00edst\u011bn\u00ed","background_hpos":"Horizont\u00e1ln\u00ed um\u00edst\u011bn\u00ed","background_attachment":"Rolov\u00e1n\u00ed","background_repeat":"Opakov\u00e1n\u00ed","background_image":"Obr\u00e1zek pozad\u00ed","background_color":"Barva pozad\u00ed","text_none":"\u017d\u00e1dn\u00e1","text_blink":"Blik\u00e1n\u00ed","text_case":"Velk\u00e1 p\u00edsmena","text_striketrough":"P\u0159e\u0161krtnut\u00ed","text_underline":"Podtr\u017een\u00ed","text_overline":"Nadtr\u017een\u00ed","text_decoration":"Dekorace","text_color":"Barva",text:"Text",background:"Pozad\u00ed",block:"Blok",box:"Box",border:"Okraj",list:"Seznam"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/cy_dlg.js b/program/js/tiny_mce/plugins/style/langs/cy_dlg.js
deleted file mode 100644
index 3b5515510..000000000
--- a/program/js/tiny_mce/plugins/style/langs/cy_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('cy.style_dlg',{"text_lineheight":"Uchder Llinell","text_variant":"Amrywiad","text_style":"Arddull","text_weight":"Pwysau","text_size":"Maint","text_font":"Ffont","text_props":"Testun","positioning_tab":"Lleoli","list_tab":"Rhestr","border_tab":"Border","box_tab":"Blwch","block_tab":"Bloc","background_tab":"Cefndir","text_tab":"Testun",apply:"Gosod",title:"Golygu Arddull CSS",clip:"Clip",placement:"Gosodiad",overflow:"Gorlif",zindex:"Indecs-Z",visibility:"Gwelededd","positioning_type":"Math",position:"Lleoliad","bullet_image":"Delwedd bwled","list_type":"Math",color:"Lliw",height:"Uchder",width:"Lled",style:"Arddull",margin:"Ymyl",left:"Chwith",bottom:"Gwaelod",right:"De",top:"Pen",same:"Yr un ar gyfer pob un",padding:"Padio","box_clear":"Clirio","box_float":"Arnofio","box_height":"Uchder","box_width":"Lled","block_display":"Arddangos","block_whitespace":"Whitespace","block_text_indent":"Mewnoliad testun","block_text_align":"Aliniad testun","block_vertical_alignment":"Aliniad fertigol","block_letterspacing":"Bylchiad llythyren","block_wordspacing":"Bylchiad gair","background_vpos":"Lleoliad fertigol","background_hpos":"Lleoliad llorweddol","background_attachment":"Atodiad","background_repeat":"Ailadrodd","background_image":"Delwedd cefndir","background_color":"Lliw cefndir","text_none":"Dim un","text_blink":"Blincio","text_case":"Llythrennau bach/mawr","text_striketrough":"Taro drwodd","text_underline":"Tanlinellu","text_overline":"Uwchlinellu","text_decoration":"Addurniadau","text_color":"Lliw",text:"Testun",background:"Cefndir",block:"Bloc",box:"Blwch",border:"Border",list:"Rhestr"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/da_dlg.js b/program/js/tiny_mce/plugins/style/langs/da_dlg.js
deleted file mode 100644
index 733249f1d..000000000
--- a/program/js/tiny_mce/plugins/style/langs/da_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('da.style_dlg',{"text_lineheight":"Linieh\u00f8jde","text_variant":"Variant","text_style":"Stil","text_weight":"V\u00e6gt","text_size":"St\u00f8rrelse","text_font":"Skrifttype","text_props":"Tekst","positioning_tab":"Positionering","list_tab":"Liste","border_tab":"Kant","box_tab":"Boks","block_tab":"Blok","background_tab":"Baggrund","text_tab":"Tekst",apply:"Anvend",title:"Rediger CSS stil",clip:"Klip",placement:"Placering",overflow:"Overl\u00f8b",zindex:"Z-index",visibility:"Synlighed","positioning_type":"Type",position:"Position","bullet_image":"Punktopstillings-billede","list_type":"Type",color:"Farve",height:"H\u00f8jde",width:"Bredde",style:"Style",margin:"Margin",left:"Venstre",bottom:"Bund",right:"H\u00f8jre",top:"Top",same:"Ens for alle",padding:"Afstand til indhold","box_clear":"Ryd","box_float":"Flydende","box_height":"H\u00f8jde","box_width":"Bredde","block_display":"Vis","block_whitespace":"Mellemrum","block_text_indent":"Tekstindrykning","block_text_align":"Tekstjustering","block_vertical_alignment":"Vertikal justering","block_letterspacing":"Afstand mellem bogstaver","block_wordspacing":"Afstand mellem ord","background_vpos":"Vertikal position","background_hpos":"Horisontal position","background_attachment":"Vedh\u00e6ftede fil","background_repeat":"Gentag","background_image":"Baggrundsbillede","background_color":"Baggrundsfarve","text_none":"ingen","text_blink":"blink","text_case":"Vesaltilstand","text_striketrough":"gennemstreget","text_underline":"understreget","text_overline":"overstreget","text_decoration":"Dekoration","text_color":"Farve",text:"Tekst",background:"Baggrund",block:"Blok",box:"Boks",border:"Kant",list:"Liste"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/de_dlg.js b/program/js/tiny_mce/plugins/style/langs/de_dlg.js
deleted file mode 100644
index ad04664e1..000000000
--- a/program/js/tiny_mce/plugins/style/langs/de_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('de.style_dlg',{"text_lineheight":"Zeilenh\u00f6he","text_variant":"Variante","text_style":"Stil","text_weight":"Dicke","text_size":"Gr\u00f6\u00dfe","text_font":"Schriftart","text_props":"Text","positioning_tab":"Positionierung","list_tab":"Liste","border_tab":"Rahmen","box_tab":"Box","block_tab":"Block","background_tab":"Hintergrund","text_tab":"Text",apply:"\u00dcbernehmen",title:"CSS-Styles bearbeiten",clip:"Ausschnitt",placement:"Platzierung",overflow:"Verhalten bei \u00dcbergr\u00f6\u00dfe",zindex:"Z-Wert",visibility:"Sichtbar","positioning_type":"Art der Positionierung",position:"Positionierung","bullet_image":"Listenpunkt-Grafik","list_type":"Listenpunkt-Art",color:"Textfarbe",height:"H\u00f6he",width:"Breite",style:"Format",margin:"\u00c4u\u00dferer Abstand",left:"Links",bottom:"Unten",right:"Rechts",top:"Oben",same:"Alle gleich",padding:"Innerer Abstand","box_clear":"Umflie\u00dfung verhindern","box_float":"Umflie\u00dfung","box_height":"H\u00f6he","box_width":"Breite","block_display":"Umbruchverhalten","block_whitespace":"Automatischer Umbruch","block_text_indent":"Einr\u00fcckung","block_text_align":"Ausrichtung","block_vertical_alignment":"Vertikale Ausrichtung","block_letterspacing":"Buchstabenabstand","block_wordspacing":"Wortabstand","background_vpos":"Position Y","background_hpos":"Position X","background_attachment":"Wasserzeicheneffekt","background_repeat":"Wiederholung","background_image":"Hintergrundbild","background_color":"Hintergrundfarbe","text_none":"keine","text_blink":"blinkend","text_case":"Schreibung","text_striketrough":"durchgestrichen","text_underline":"unterstrichen","text_overline":"\u00fcberstrichen","text_decoration":"Gestaltung","text_color":"Farbe",text:"Text",background:"Hintergrund",block:"Block",box:"Box",border:"Rahmen",list:"Liste"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/el_dlg.js b/program/js/tiny_mce/plugins/style/langs/el_dlg.js
deleted file mode 100644
index 8ae651b6e..000000000
--- a/program/js/tiny_mce/plugins/style/langs/el_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('el.style_dlg',{"text_lineheight":"\u038e\u03c8\u03bf\u03c2 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2","text_variant":"\u03a0\u03b1\u03c1\u03b1\u03bb\u03bb\u03b1\u03b3\u03ae","text_style":"\u03a3\u03c4\u03c5\u03bb","text_weight":"\u0392\u03ac\u03c1\u03bf\u03c2","text_size":"\u039c\u03ad\u03b3\u03b5\u03b8\u03bf\u03c2 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ac\u03c4\u03c9\u03bd","text_font":"\u0393\u03c1\u03b1\u03bc\u03bc\u03b1\u03c4\u03bf\u03c3\u03b5\u03b9\u03c1\u03ac","text_props":"\u039a\u03b5\u03af\u03bc\u03b5\u03bd\u03bf","positioning_tab":"\u03a4\u03bf\u03c0\u03bf\u03b8\u03ad\u03c4\u03b7\u03c3\u03b7","list_tab":"\u039b\u03af\u03c3\u03c4\u03b1","border_tab":"\u03a0\u03bb\u03b1\u03af\u03c3\u03b9\u03bf","box_tab":"\u039a\u03bf\u03c5\u03c4\u03af","block_tab":"\u039c\u03c0\u03bb\u03bf\u03ba","background_tab":"\u03a6\u03cc\u03bd\u03c4\u03bf","text_tab":"\u039a\u03b5\u03af\u03bc\u03b5\u03bd\u03bf",apply:"\u0395\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae",title:"\u0395\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03a3\u03c4\u03c5\u03bb CSS",clip:"Clip",placement:"\u03a4\u03bf\u03c0\u03bf\u03b8\u03ad\u03c4\u03b7\u03c3\u03b7",overflow:"\u03a5\u03c0\u03b5\u03c1\u03c7\u03b5\u03af\u03bb\u03b9\u03c3\u03b7",zindex:"Z-index",visibility:"\u039f\u03c1\u03b1\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1","positioning_type":"\u03a4\u03cd\u03c0\u03bf\u03c2",position:"\u0398\u03ad\u03c3\u03b7","bullet_image":"\u0395\u03b9\u03ba\u03cc\u03bd\u03b1 \u03c4\u03b5\u03bb\u03b5\u03af\u03b1\u03c2","list_type":"\u03a4\u03cd\u03c0\u03bf\u03c2",color:"\u03a7\u03c1\u03ce\u03bc\u03b1",height:"\u038e\u03c8\u03bf\u03c2",width:"\u03a0\u03bb\u03ac\u03c4\u03bf\u03c2",style:"\u03a3\u03c4\u03c5\u03bb",margin:"\u03a0\u03b5\u03c1\u03b9\u03b8\u03ce\u03c1\u03b9\u03bf",left:"\u0391\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac",bottom:"\u039a\u03ac\u03c4\u03c9",right:"\u0394\u03b5\u03be\u03b9\u03ac",top:"\u03a0\u03ac\u03bd\u03c9",same:"\u038a\u03b4\u03b9\u03bf \u03b3\u03b9\u03b1 \u03cc\u03bb\u03b1",padding:"\u0393\u03ad\u03bc\u03b9\u03c3\u03bc\u03b1","box_clear":"Clear","box_float":"Float","box_height":"\u038e\u03c8\u03bf\u03c2","box_width":"\u03a0\u03bb\u03ac\u03c4\u03bf\u03c2","block_display":"\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7","block_whitespace":"\u039a\u03b5\u03bd\u03cc\u03c2 \u03c7\u03ce\u03c1\u03bf\u03c2","block_text_indent":"\u0395\u03c3\u03bf\u03c7\u03ae \u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5","block_text_align":"\u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7 \u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5","block_vertical_alignment":"\u039a\u03b1\u03c4\u03b1\u03ba\u03cc\u03c1\u03c5\u03c6\u03b7 \u03c3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7","block_letterspacing":"\u0391\u03c0\u03cc\u03c3\u03c4\u03b1\u03c3\u03b7 \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03ae\u03c1\u03c9\u03bd","block_wordspacing":"\u0391\u03c0\u03cc\u03c3\u03c4\u03b1\u03c3\u03b7 \u03bb\u03ad\u03be\u03b5\u03c9\u03bd","background_vpos":"\u039a\u03b1\u03c4\u03b1\u03ba\u03cc\u03c1\u03c5\u03c6\u03b7 \u03b8\u03ad\u03c3\u03b7","background_hpos":"\u039f\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03b1 \u03b8\u03ad\u03c3\u03b7","background_attachment":"\u03a0\u03c1\u03bf\u03c3\u03ac\u03c1\u03c4\u03b7\u03bc\u03b1","background_repeat":"\u0395\u03c0\u03b1\u03bd\u03ac\u03bb\u03b7\u03c8\u03b7","background_image":"\u0395\u03b9\u03ba\u03cc\u03bd\u03b1 \u03c6\u03cc\u03bd\u03c4\u03bf\u03c5","background_color":"\u03a7\u03c1\u03ce\u03bc\u03b1 \u03c6\u03cc\u03bd\u03c4\u03bf\u03c5","text_none":"\u039a\u03b1\u03bc\u03af\u03b1","text_blink":"\u039d\u03b1 \u03b1\u03bd\u03b1\u03b2\u03bf\u03c3\u03b2\u03ae\u03bd\u03b5\u03b9","text_case":"\u039a\u03b5\u03c6./\u039c\u03b9\u03ba\u03c1\u03ac","text_striketrough":"\u0394\u03b9\u03b1\u03b3\u03c1\u03ac\u03bc\u03bc\u03b9\u03c3\u03b7","text_underline":"\u03a5\u03c0\u03bf\u03b3\u03c1\u03ac\u03bc\u03bc\u03b9\u03c3\u03b7","text_overline":"\u03a5\u03c0\u03b5\u03c1\u03b3\u03c1\u03ac\u03bc\u03bc\u03b9\u03c3\u03b7","text_decoration":"\u0394\u03b9\u03b1\u03ba\u03cc\u03c3\u03bc\u03b7\u03c3\u03b7","text_color":"\u03a7\u03c1\u03ce\u03bc\u03b1",text:"\u039a\u03b5\u03af\u03bc\u03b5\u03bd\u03bf",background:"\u03a6\u03cc\u03bd\u03c4\u03bf",border:"\u03a0\u03b5\u03c1\u03af\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1",list:"\u039b\u03af\u03c3\u03c4\u03b1",block:"Block",box:"Box"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/en_dlg.js b/program/js/tiny_mce/plugins/style/langs/en_dlg.js
deleted file mode 100644
index 35881b3ac..000000000
--- a/program/js/tiny_mce/plugins/style/langs/en_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('en.style_dlg',{"text_lineheight":"Line Height","text_variant":"Variant","text_style":"Style","text_weight":"Weight","text_size":"Size","text_font":"Font","text_props":"Text","positioning_tab":"Positioning","list_tab":"List","border_tab":"Border","box_tab":"Box","block_tab":"Block","background_tab":"Background","text_tab":"Text",apply:"Apply",toggle_insert_span:"Insert span at selection",title:"Edit CSS Style",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibility","positioning_type":"Type",position:"Position","bullet_image":"Bullet Image","list_type":"Type",color:"Color",height:"Height",width:"Width",style:"Style",margin:"Margin",left:"Left",bottom:"Bottom",right:"Right",top:"Top",same:"Same for All",padding:"Padding","box_clear":"Clear","box_float":"Float","box_height":"Height","box_width":"Width","block_display":"Display","block_whitespace":"Whitespace","block_text_indent":"Text Indent","block_text_align":"Text Align","block_vertical_alignment":"Vertical Alignment","block_letterspacing":"Letter Spacing","block_wordspacing":"Word Spacing","background_vpos":"Vertical Position","background_hpos":"Horizontal Position","background_attachment":"Attachment","background_repeat":"Repeat","background_image":"Background Image","background_color":"Background Color","text_none":"None","text_blink":"Blink","text_case":"Case","text_striketrough":"Strikethrough","text_underline":"Underline","text_overline":"Overline","text_decoration":"Decoration","text_color":"Color",text:"Text",background:"Background",block:"Block",box:"Box",border:"Border",list:"List"});
diff --git a/program/js/tiny_mce/plugins/style/langs/eo_dlg.js b/program/js/tiny_mce/plugins/style/langs/eo_dlg.js
deleted file mode 100644
index 29822e8f1..000000000
--- a/program/js/tiny_mce/plugins/style/langs/eo_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('eo.style_dlg',{"text_lineheight":"Alteco de linio","text_variant":"Varianto","text_style":"Stilo","text_weight":"Pezo","text_size":"Grandeco","text_font":"Tiparo","text_props":"Teksto","positioning_tab":"Pozicio","list_tab":"Listo","border_tab":"Bordero","box_tab":"Skatolo","block_tab":"Bloko","background_tab":"Fono","text_tab":"Teksto",apply:"Apliki",title:"Redakti CSS",clip:"Tondi",placement:"Pozicio",overflow:"Elfluo",zindex:"Z-indekso",visibility:"Videbleco","positioning_type":"Pozicitipo",position:"Pozicio","bullet_image":"Listbildo","list_type":"Tipo",color:"Koloro",height:"Alteco",width:"Lar\u011deco",style:"Stilo",margin:"Mar\u011deno",left:"Maldekstre",bottom:"Sube",right:"Dekstre",top:"Supre",same:"Same por \u0109iuj",padding:"Ena kromspaco","box_clear":"Kvitigi","box_float":"Flosado","box_height":"Alteco","box_width":"Lar\u011deco","block_display":"Montro","block_whitespace":"Spaco","block_text_indent":"Alineo","block_text_align":"Tekstoliniigo","block_vertical_alignment":"Vertikala liniigo","block_letterspacing":"Spaco inter literoj","block_wordspacing":"Spaco inter vortoj","background_vpos":"Vertikala pozicio","background_hpos":"Horizontala pozicio","background_attachment":"Fiksi","background_repeat":"Ripeti","background_image":"Fona bildo","background_color":"Fona koloro","text_none":"Neniu","text_blink":"Lumpulsi","text_case":"Majuskle","text_striketrough":"Strekite","text_underline":"Substrekite","text_overline":"Superstrekite","text_decoration":"Ornamado","text_color":"Koloro",text:"Text",background:"Background",block:"Block",box:"Box",border:"Border",list:"List"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/es_dlg.js b/program/js/tiny_mce/plugins/style/langs/es_dlg.js
deleted file mode 100644
index 7a63754a7..000000000
--- a/program/js/tiny_mce/plugins/style/langs/es_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('es.style_dlg',{"text_lineheight":"Ancho de la fila","text_variant":"Variante","text_style":"Estilo","text_weight":"Peso","text_size":"Tama\u00f1o","text_font":"Fuente","text_props":"Texto","positioning_tab":"Posicionamiento","list_tab":"Lista","border_tab":"Borde","box_tab":"Caja","block_tab":"Bloque","background_tab":"Fondo","text_tab":"Texto",apply:"Aplicar",title:"Editar Estilo CSS",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibilidad","positioning_type":"Tipo",position:"Posici\u00f3n","bullet_image":"Imagen de la vi\u00f1eta","list_type":"Tipo",color:"Color",height:"Alto",width:"Ancho",style:"Estilo",margin:"Margen",left:"Izquierda",bottom:"Inferior",right:"Derecha",top:"Superior",same:"Lo mismo en todos",padding:"Padding","box_clear":"Clear","box_float":"Float","box_height":"Alto","box_width":"Ancho","block_display":"Display","block_whitespace":"Espacio en blanco","block_text_indent":"Sangr\u00eda","block_text_align":"Alineaci\u00f3n del texto","block_vertical_alignment":"Alineaci\u00f3n vertical","block_letterspacing":"Espacio entre letra","block_wordspacing":"Espacio entre palabra","background_vpos":"Posici\u00f3n vertical","background_hpos":"Posici\u00f3n horizontal","background_attachment":"Adjunto","background_repeat":"Repetici\u00f3n","background_image":"Imagen de fondo","background_color":"Color de fondo","text_none":"Ninguno","text_blink":"Parpadeo","text_case":"Min\u00fas./May\u00fas.","text_striketrough":"Tachado","text_underline":"Subrayado","text_overline":"Subrayado superior","text_decoration":"Decorativos","text_color":"Color",text:"Texto",background:"Fondo",block:"Bloque",box:"Caja",border:"Borde",list:"Lista"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/et_dlg.js b/program/js/tiny_mce/plugins/style/langs/et_dlg.js
deleted file mode 100644
index 89de41d8f..000000000
--- a/program/js/tiny_mce/plugins/style/langs/et_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('et.style_dlg',{"text_lineheight":"Joone k\u00f5rgus","text_variant":"Variant","text_style":"Stiil","text_weight":"Raskus","text_size":"Suurus","text_font":"Font","text_props":"Tekst","positioning_tab":"Positsioneerimine","list_tab":"Nimekiri","border_tab":"Raam","box_tab":"Kast","block_tab":"Plokk","background_tab":"Taust","text_tab":"Tekst",apply:"Rakenda",title:"Muuda CSS stiili",clip:"Klipp",placement:"Asetus",overflow:"\u00dclevool",zindex:"Z-viit",visibility:"N\u00e4htavus","positioning_type":"T\u00fc\u00fcp",position:"Positsioon","bullet_image":"Punkt pilt","list_type":"T\u00fc\u00fcp",color:"V\u00e4rv",height:"K\u00f5rgus",width:"Laius",style:"Stiil",margin:"Serv",left:"Vasakul",bottom:"All",right:"Paremal",top:"\u00dcleval",same:"Sama k\u00f5igile",padding:"T\u00e4idis","box_clear":"Puhas","box_float":"H\u00f5ljuv","box_height":"K\u00f5rgus","box_width":"Laius","block_display":"Kuva","block_whitespace":"T\u00fchimik","block_text_indent":"Teksti taandus","block_text_align":"Teksti joondus","block_vertical_alignment":"Vertikaalne joondus","block_letterspacing":"T\u00e4he avardamine","block_wordspacing":"S\u00f5nade avardamine","background_vpos":"Vertikaalne asend","background_hpos":"Horisontaalne asend","background_attachment":"Manus","background_repeat":"Kordus","background_image":"Tausta pilt","background_color":"Tausta v\u00e4rv","text_none":"mitte \u00fckski","text_blink":"vilgutus","text_case":"Kast","text_striketrough":"l\u00e4bikriipsutus","text_underline":"alajoon","text_overline":"\u00fclejoon","text_decoration":"Dekoratioon","text_color":"V\u00e4rv",text:"Tekst",background:"Taust",block:"Plokk",box:"Kast",border:"Joon",list:"List"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/eu_dlg.js b/program/js/tiny_mce/plugins/style/langs/eu_dlg.js
deleted file mode 100644
index 961e98a13..000000000
--- a/program/js/tiny_mce/plugins/style/langs/eu_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('eu.style_dlg',{"text_lineheight":"Lerro garaiera","text_variant":"Aldaera","text_style":"Estiloa","text_weight":"Pisua","text_size":"Tamaina","text_font":"Letra-tipoa","text_props":"Testua","positioning_tab":"Kokapena","list_tab":"Zerrenda","border_tab":"Ertza","box_tab":"Kaxa","block_tab":"Blokea","background_tab":"Atzea","text_tab":"Testua",apply:"Apikatu",title:"Aldatu CSS estiloa",clip:"Klip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Ikusgarritasuna","positioning_type":"Mota",position:"Kokapena","bullet_image":"Bulet-irudia","list_type":"Mota",color:"Kolorea",height:"Altuera",width:"Zabalera",style:"Estiloa",margin:"Margina",left:"Ezkerra",bottom:"Behera",right:"Eskuina",top:"Gora",same:"Guztientzat berdina",padding:"Padding","box_clear":"Garbitu","box_float":"Flotatu","box_height":"Altuera","box_width":"Zabalera","block_display":"Erakutsi","block_whitespace":"Zuriunea","block_text_indent":"Koska","block_text_align":"Testu lerrokatzea","block_vertical_alignment":"Lerrokatze bertikala","block_letterspacing":"Letra banaketa","block_wordspacing":"Hitz banaketa","background_vpos":"Posizio bertikala","background_hpos":"Posizio horizontala","background_attachment":"Eranskina","background_repeat":"Errepikatu","background_image":"Atzeko irudia","background_color":"Atzeko kolorea","text_none":"Bat ere ez","text_blink":"Keinada","text_case":"Minus./Maius.","text_striketrough":"Marratua","text_underline":"Azpimarra","text_overline":"Goimarra","text_decoration":"Apaingarriak","text_color":"Kolorea",text:"Text",background:"Background",block:"Block",box:"Box",border:"Border",list:"List"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/fa_dlg.js b/program/js/tiny_mce/plugins/style/langs/fa_dlg.js
deleted file mode 100644
index d00a708b4..000000000
--- a/program/js/tiny_mce/plugins/style/langs/fa_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fa.style_dlg',{"text_lineheight":"\u0628\u0644\u0646\u062f\u06cc \u062e\u0637","text_variant":"\u0646\u0648\u0639 \u062a\u063a\u06cc\u06cc\u0631","text_style":"\u0627\u0633\u062a\u0627\u06cc\u0644","text_weight":"\u062d\u0627\u0644\u062a","text_size":"\u0627\u0646\u062f\u0627\u0632\u0647","text_font":"\u0642\u0644\u0645","text_props":"\u0645\u062a\u0646","positioning_tab":"\u0645\u0648\u0642\u0639\u06cc\u062a","list_tab":"\u0644\u06cc\u0633\u062a","border_tab":"\u062d\u0627\u0634\u06cc\u0647","box_tab":"\u062c\u0639\u0628\u0647","block_tab":"\u0628\u0644\u0648\u06a9","background_tab":"\u067e\u0633 \u0632\u0645\u06cc\u0646\u0647","text_tab":"\u0645\u062a\u0646",apply:"\u0628\u06a9\u0627\u0631\u06af\u06cc\u0631\u06cc",title:"\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0627\u0633\u062a\u0627\u06cc\u0644 CSS",clip:"\u0628\u0631\u0634 (Clip)",placement:"\u0645\u0648\u0642\u0639\u06cc\u062a \u0645\u06a9\u0627\u0646\u06cc",overflow:"\u0633\u0631 \u0631\u06cc\u0632",zindex:"\u0645\u062d\u0648\u0631 Z",visibility:"\u0642\u0627\u0628\u0644\u06cc\u062a \u0631\u0648\u06cc\u062a","positioning_type":"\u0646\u0648\u0639",position:"\u0645\u0648\u0642\u0639\u06cc\u062a","bullet_image":"\u062a\u0635\u0648\u06cc\u0631 \u06af\u0644\u0648\u0644\u0647","list_type":"\u0646\u0648\u0639",color:"\u0631\u0646\u06af",height:"\u0627\u0631\u062a\u0641\u0627\u0639",width:"\u067e\u0647\u0646\u0627",style:"\u0627\u0633\u062a\u0627\u06cc\u0644",margin:"\u0644\u0628\u0647",left:"\u0686\u067e",bottom:"\u067e\u0627\u06cc\u06cc\u0646",right:"\u0631\u0627\u0633\u062a",top:"\u0628\u0627\u0644\u0627",same:"\u0647\u0645\u0633\u0627\u0646 \u0628\u0631\u0627\u06cc \u0647\u0645\u0647",padding:"\u0644\u0627\u06cc\u0647 \u06af\u0630\u0627\u0631\u06cc","box_clear":"\u067e\u0627\u06a9 \u0633\u0627\u0632\u06cc","box_float":"\u0634\u0646\u0627\u0648\u0631","box_height":"\u0627\u0631\u062a\u0641\u0627\u0639","box_width":"\u067e\u0647\u0646\u0627","block_display":"\u0646\u0645\u0627\u06cc\u0634","block_whitespace":"\u0641\u0627\u0635\u0644\u0647 \u0633\u0641\u06cc\u062f","block_text_indent":"\u062a\u0648\u0631\u0641\u062a\u06af\u06cc \u0645\u062a\u0646","block_text_align":"\u062a\u0631\u0627\u0632 \u0645\u062a\u0646","block_vertical_alignment":"\u062a\u0631\u0627\u0632 \u0639\u0645\u0648\u062f\u06cc","block_letterspacing":"\u0641\u0627\u0635\u0644\u0647 \u062d\u0631\u0648\u0641","block_wordspacing":"\u0641\u0627\u0635\u0644\u0647 \u06a9\u0644\u0645\u0627\u062a","background_vpos":"\u0645\u0648\u0642\u0639\u06cc\u062a \u0639\u0645\u0648\u062f\u06cc","background_hpos":"\u0645\u0648\u0642\u0639\u06cc\u062a \u0627\u0641\u0642\u06cc","background_attachment":"\u0641\u0627\u06cc\u0644 \u0636\u0645\u06cc\u0645\u0647","background_repeat":"\u062a\u06a9\u0631\u0627\u0631","background_image":"\u062a\u0635\u0648\u06cc\u0631 \u067e\u0633 \u0632\u0645\u06cc\u0646\u0647","background_color":"\u0631\u0646\u06af \u067e\u0633 \u0632\u0645\u06cc\u0646\u0647","text_none":"\u0647\u06cc\u0686 \u06a9\u062f\u0627\u0645","text_blink":"\u0686\u0634\u0645\u06a9 \u0632\u0646","text_case":"\u062d\u0627\u0644\u062a","text_striketrough":"\u062e\u0637 \u062e\u0648\u0631\u062f\u0647","text_underline":"\u0632\u06cc\u0631 \u062e\u0637","text_overline":"\u0628\u0627\u0644\u0627 \u062e\u0637","text_decoration":"\u0622\u0631\u0627\u06cc\u0634","text_color":"\u0631\u0646\u06af",text:"\u0645\u062a\u0646",background:"\u067e\u0633 \u0632\u0645\u06cc\u0646\u0647",block:"\u0628\u0644\u0648\u06a9",box:"\u062c\u0639\u0628\u0647",border:"\u062d\u0627\u0634\u06cc\u0647",list:"\u0644\u06cc\u0633\u062a"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/fi_dlg.js b/program/js/tiny_mce/plugins/style/langs/fi_dlg.js
deleted file mode 100644
index 4f174cc71..000000000
--- a/program/js/tiny_mce/plugins/style/langs/fi_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fi.style_dlg',{"text_lineheight":"Rivin korkeus","text_variant":"Variantti","text_style":"Tyyli","text_weight":"Paino","text_size":"Koko","text_font":"Kirjasin","text_props":"Teksti","positioning_tab":"Sijainti","list_tab":"Lista","border_tab":"Kehys","box_tab":"Laatikko","block_tab":"Palkki","background_tab":"Tausta","text_tab":"Teksti",apply:"K\u00e4yt\u00e4",title:"Muokkaa CSS-tyyli\u00e4",clip:"Leike",placement:"Sijoittelu",overflow:"Ylivuoto",zindex:"Z-indeksi",visibility:"N\u00e4kyvyys","positioning_type":"Tyyppi",position:"Sijainti","bullet_image":"Listauskuva","list_type":"Tyyppi",color:"V\u00e4ri",height:"Korkeus",width:"Leveys",style:"Tyyli",margin:"Marginaali",left:"Vasemmalla",bottom:"Alhaalla",right:"Oikealla",top:"Ylh\u00e4\u00e4ll\u00e4",same:"Sama kaikille",padding:"Tyhj\u00e4 tila","box_clear":"Nollaus","box_float":"Kellunta","box_height":"Korkeus","box_width":"Leveys","block_display":"N\u00e4ytt\u00f6","block_whitespace":"Tyhj\u00e4 tila","block_text_indent":"Tekstin sisennys","block_text_align":"Tekstin asettelu","block_vertical_alignment":"Pystyasettelu","block_letterspacing":"Kirjainten v\u00e4listys","block_wordspacing":"Sanojen v\u00e4listys","background_vpos":"Pystyasettelu","background_hpos":"Vaaka-asettelu","background_attachment":"Liite","background_repeat":"Toistuvuus","background_image":"Taustakuva","background_color":"Taustav\u00e4ri","text_none":"ei mit\u00e4\u00e4n","text_blink":"V\u00e4l\u00e4hdys","text_case":"Isot/pienet kirjaimet","text_striketrough":"Yliviivattu","text_underline":"Alleviivattu (Ctrl+U)","text_overline":"Yliviivattu","text_decoration":"Koristelu","text_color":"V\u00e4ri",text:"Teksti",background:"Tausta",block:"Lohko",box:"Laatikko",border:"Reunus",list:"Lista"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/fr_dlg.js b/program/js/tiny_mce/plugins/style/langs/fr_dlg.js
deleted file mode 100644
index 3f7bdb92d..000000000
--- a/program/js/tiny_mce/plugins/style/langs/fr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fr.style_dlg',{"text_lineheight":"Hauteur de ligne","text_variant":"Variante","text_style":"Style","text_weight":"Gras","text_size":"Taille","text_font":"Police","text_props":"Texte","positioning_tab":"Positionnement","list_tab":"Liste","border_tab":"Bordure","box_tab":"Bo\u00eete","block_tab":"Bloc","background_tab":"Fond","text_tab":"Texte",apply:"Appliquer",title:"\u00c9diter la feuille de style",clip:"Clip",placement:"Placement",overflow:"D\u00e9bordement",zindex:"Z-index",visibility:"Visibilit\u00e9","positioning_type":"Type",position:"Position","bullet_image":"Image de puce","list_type":"Type",color:"Couleur",height:"Hauteur",width:"Largeur",style:"Style",margin:"Marge",left:"Gauche",bottom:"Bas",right:"Droit",top:"Haut",same:"Identique pour tous",padding:"Espacement","box_clear":"Vider","box_float":"Flottant","box_height":"Hauteur","box_width":"Largeur","block_display":"Affichage","block_whitespace":"Fin de ligne","block_text_indent":"Indentation du texte","block_text_align":"Alignement du texte","block_vertical_alignment":"Alignement vertical","block_letterspacing":"Espacement des lettres","block_wordspacing":"Espacement des mots ","background_vpos":"Position verticale","background_hpos":"Position horizontale","background_attachment":"Attachement","background_repeat":"R\u00e9p\u00e9ter","background_image":"Image de fond","background_color":"Couleur de fond","text_none":"aucun","text_blink":"clignotant","text_case":"Casse","text_striketrough":"barr\u00e9","text_underline":"soulign\u00e9","text_overline":"ligne au-dessus","text_decoration":"D\u00e9coration","text_color":"Couleur",text:"Texte",background:"Fond",block:"Bloc",box:"Bo\u00eete",border:"Bordure",list:"Liste"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/gl_dlg.js b/program/js/tiny_mce/plugins/style/langs/gl_dlg.js
deleted file mode 100644
index e5d85d245..000000000
--- a/program/js/tiny_mce/plugins/style/langs/gl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('gl.style_dlg',{"text_lineheight":"Ancho da fila","text_variant":"Variante","text_style":"Estilo","text_weight":"Peso","text_size":"Tama\u00f1o","text_font":"Fonte","text_props":"Texto","positioning_tab":"Posici\u00f3n","list_tab":"Lista","border_tab":"Borde","box_tab":"Caixa","block_tab":"Bloque","background_tab":"Fondo","text_tab":"Texto",apply:"Aplicar",title:"Editar Estilo CSS",clip:"Clip",placement:"Colocaci\u00f3n",overflow:"Desbodramento",zindex:"\u00cdndize Z",visibility:"Visibilidade","positioning_type":"Tipo",position:"Posici\u00f3n","bullet_image":"Imaxe da vi\u00f1eta","list_type":"Tipo",color:"Cor",height:"Alto",width:"Ancho",style:"Estilo",margin:"Marxe",left:"Esquerda",bottom:"Abaixo",right:"Dereita",top:"Arriba",same:"O mesmo en todos",padding:"Recheo","box_clear":"Limpar","box_float":"Float","box_height":"Alto","box_width":"Ancho","block_display":"Display","block_whitespace":"Espacio en branco","block_text_indent":"Sangr\u00eda","block_text_align":"Ali\u00f1aci\u00f3n do texto","block_vertical_alignment":"Ali\u00f1aci\u00f3n vertical","block_letterspacing":"Espacio entre letras","block_wordspacing":"Espacio entre verbas","background_vpos":"Posici\u00f3n vertical","background_hpos":"Posici\u00f3n horizontal","background_attachment":"Adxunto","background_repeat":"Repetir","background_image":"Imaxe de fondo","background_color":"Cor de fondo","text_none":"Neng\u00fan","text_blink":"Parpadeo","text_case":"Min\u00fas./May\u00fas.","text_striketrough":"Tachado","text_underline":"Suli\u00f1ado","text_overline":"Li\u00f1a superior","text_decoration":"Decorativos","text_color":"Cor",text:"Text",background:"Background",block:"Block",box:"Box",border:"Border",list:"List"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/he_dlg.js b/program/js/tiny_mce/plugins/style/langs/he_dlg.js
deleted file mode 100644
index 22680ba67..000000000
--- a/program/js/tiny_mce/plugins/style/langs/he_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('he.style_dlg',{"text_lineheight":"\u05d2\u05d5\u05d1\u05d4 \u05e9\u05d5\u05e8\u05d4","text_variant":"\u05de\u05e9\u05ea\u05e0\u05d4","text_style":"\u05e1\u05d2\u05e0\u05d5\u05df","text_weight":"\u05e2\u05d5\u05d1\u05d9","text_size":"\u05d2\u05d5\u05d3\u05dc","text_font":"\u05e4\u05d5\u05e0\u05d8","text_props":"\u05d8\u05e7\u05e1\u05d8","positioning_tab":"\u05de\u05d9\u05e7\u05d5\u05dd","list_tab":"\u05e8\u05e9\u05d9\u05de\u05d4","border_tab":"\u05d2\u05d1\u05d5\u05dc","box_tab":"\u05e7\u05d5\u05e4\u05e1\u05d0","block_tab":"\u05d7\u05e1\u05d5\u05dd","background_tab":"\u05e8\u05e7\u05e2","text_tab":"\u05d8\u05e7\u05e1\u05d8",apply:"\u05d4\u05d7\u05dc",title:"\u05e2\u05d3\u05db\u05d5\u05df \u05d4\u05d2\u05d3\u05e8\u05d5\u05ea CSS",clip:"\u05e7\u05dc\u05d9\u05e4",placement:"\u05de\u05d9\u05e7\u05d5\u05dd",overflow:"\u05d2\u05dc\u05d9\u05e9\u05d4",zindex:"Z-index",visibility:"\u05e8\u05d0\u05d5\u05ea","positioning_type":"\u05e1\u05d5\u05d2",position:"\u05de\u05d9\u05e7\u05d5\u05dd","bullet_image":"\u05ea\u05de\u05d5\u05e0\u05ea \u05ea\u05d1\u05dc\u05d9\u05d8","list_type":"\u05e1\u05d5\u05d2",color:"\u05e6\u05d1\u05e2",height:"\u05d2\u05d5\u05d1\u05d4",width:"\u05e8\u05d5\u05d7\u05d1",style:"\u05e1\u05d2\u05e0\u05d5\u05df",margin:"\u05e9\u05d5\u05dc\u05d9\u05d9\u05dd",left:"\u05e9\u05de\u05d0\u05dc",bottom:"\u05ea\u05d7\u05ea\u05d9\u05ea",right:"\u05d9\u05de\u05d9\u05df",top:"\u05e2\u05dc\u05d9\u05d5\u05df",same:"\u05d0\u05d5\u05ea\u05d5 \u05d3\u05d1\u05e8 \u05e2\u05d1\u05d5\u05e8 \u05db\u05d5\u05dc\u05dd",padding:"\u05e8\u05d9\u05e4\u05d5\u05d3","box_clear":"\u05e0\u05e7\u05d4","box_float":"\u05d4\u05e6\u05e4\u05d4","box_height":"\u05d2\u05d5\u05d1\u05d4","box_width":"\u05e8\u05d5\u05d7\u05d1","block_display":"\u05d4\u05e6\u05d2","block_whitespace":"\u05e8\u05d5\u05d5\u05d7","block_text_indent":"\u05d4\u05d6\u05d7\u05d4","block_text_align":"\u05d9\u05d9\u05e9\u05d5\u05e8 \u05d8\u05e7\u05e1\u05d8","block_vertical_alignment":"\u05d9\u05d9\u05e9\u05d5\u05e8 \u05d0\u05e0\u05db\u05d9","block_letterspacing":"\u05de\u05e8\u05d7\u05e7 \u05d1\u05d9\u05df \u05d0\u05d5\u05ea\u05d9\u05d5\u05ea","block_wordspacing":"\u05de\u05e8\u05d7\u05e7 \u05d1\u05d9\u05df \u05de\u05d9\u05dc\u05d9\u05dd","background_vpos":"\u05de\u05d9\u05e7\u05d5\u05dd \u05e8\u05d5\u05d7\u05d1\u05d9","background_hpos":"\u05de\u05d9\u05e7\u05d5\u05dd \u05d0\u05d5\u05e4\u05e7\u05d9","background_attachment":"\u05e7\u05d1\u05e6\u05d9\u05dd \u05de\u05e6\u05d5\u05e8\u05e4\u05d9\u05dd","background_repeat":"\u05d7\u05d6\u05d5\u05e8","background_image":"\u05ea\u05de\u05d5\u05e0\u05ea \u05e8\u05e7\u05e2","background_color":"\u05e6\u05d1\u05e2 \u05e8\u05e7\u05e2","text_none":"\u05dc\u05dc\u05d0","text_blink":"\u05d4\u05d1\u05d4\u05d5\u05d1","text_case":"Case","text_striketrough":"\u05e7\u05d5 \u05d7\u05d5\u05e6\u05d4","text_underline":"\u05e9\u05d5\u05e8\u05d4 \u05de\u05ea\u05d7\u05ea","text_overline":"\u05e9\u05d5\u05e8\u05d4 \u05de\u05e2\u05dc","text_decoration":"\u05e2\u05d9\u05e6\u05d5\u05d1","text_color":"\u05e6\u05d1\u05e2",text:"\u05d8\u05e7\u05e1\u05d8",background:"\u05e8\u05e7\u05e2",block:"\u05d1\u05dc\u05d5\u05e7",box:"\u05ea\u05d9\u05d1\u05d4",border:"\u05d2\u05d1\u05d5\u05dc",list:"\u05e8\u05e9\u05d9\u05de\u05d4"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/hi_dlg.js b/program/js/tiny_mce/plugins/style/langs/hi_dlg.js
deleted file mode 100644
index 8b0f31555..000000000
--- a/program/js/tiny_mce/plugins/style/langs/hi_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hi.style_dlg',{"text_lineheight":"Line height","text_variant":"Variant","text_style":"Style","text_weight":"Weight","text_size":"Size","text_font":"Font","text_props":"Text","positioning_tab":"Positioning","list_tab":"List","border_tab":"Border","box_tab":"Box","block_tab":"Block","background_tab":"Background","text_tab":"Text",apply:"Apply",title:"Edit CSS Style",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibility","positioning_type":"Type",position:"Position","bullet_image":"Bullet image","list_type":"Type",color:"Color",height:"Height",width:"Width",style:"Style",margin:"Margin",left:"Left",bottom:"Bottom",right:"Right",top:"Top",same:"Same for all",padding:"Padding","box_clear":"Clear","box_float":"Float","box_height":"Height","box_width":"Width","block_display":"Display","block_whitespace":"Whitespace","block_text_indent":"Text indent","block_text_align":"Text align","block_vertical_alignment":"Vertical alignment","block_letterspacing":"Letter spacing","block_wordspacing":"Word spacing","background_vpos":"Vertical position","background_hpos":"Horizontal position","background_attachment":"Attachment","background_repeat":"Repeat","background_image":"Background image","background_color":"Background color","text_none":"none","text_blink":"blink","text_case":"Case","text_striketrough":"strikethrough","text_underline":"underline","text_overline":"overline","text_decoration":"Decoration","text_color":"Color",text:"Text",background:"Background",block:"Block",box:"Box",border:"Border",list:"List"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/hr_dlg.js b/program/js/tiny_mce/plugins/style/langs/hr_dlg.js
deleted file mode 100644
index 48cf6b90e..000000000
--- a/program/js/tiny_mce/plugins/style/langs/hr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hr.style_dlg',{"text_lineheight":"Visina linije","text_variant":"Varijanta","text_style":"Stil","text_weight":"Te\u017eina","text_size":"Veli\u010dina","text_font":"Font","text_props":"Tekst","positioning_tab":"Pozicioniranje","list_tab":"Lista","border_tab":"Obrub","box_tab":"Okvir","block_tab":"Blok","background_tab":"Pozadina","text_tab":"Tekst",apply:"Primjeni",title:"Uredi CSS Stil",clip:"Obre\u017ei (clip)",placement:"Polo\u017eaj",overflow:"Prelijevanje (Overflow)",zindex:"Z-index",visibility:"Vidljivost (Visibility)","positioning_type":"Tip",position:"Pozicija (Position)","bullet_image":"Bullet slika","list_type":"Tip",color:"Boja",height:"Visina",width:"\u0160irina",style:"Stil",margin:"Margine",left:"Lijevo",bottom:"Dno",right:"Desno",top:"Vrh",same:"Isto za sve",padding:"Ispunjenje (Padding)","box_clear":"Clear","box_float":"Float","box_height":"Visina","box_width":"\u0160irina","block_display":"Prikaz (Display)","block_whitespace":"Razmak (Whitespace)","block_text_indent":"Uvu\u010deni tekst","block_text_align":"Pozicioniranje teksta","block_vertical_alignment":"Okomito poravnanje","block_letterspacing":"Razmak izme\u0111u slova","block_wordspacing":"Razmak izme\u0111u rije\u010di","background_vpos":"Okomita pozicija","background_hpos":"Vodoravna pozicija","background_attachment":"Privitak","background_repeat":"Ponavljanje","background_image":"Pozadinska slika","background_color":"Pozadinska boja","text_none":"ni\u0161ta","text_blink":"blink","text_case":"Velika / mala slova","text_striketrough":"Precrtano","text_underline":"Podcrtano","text_overline":"Nadcrtano","text_decoration":"Ukras (Decoration)","text_color":"Boja",text:"Text",background:"Background",block:"Block",box:"Box",border:"Border",list:"List"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/hu_dlg.js b/program/js/tiny_mce/plugins/style/langs/hu_dlg.js
deleted file mode 100644
index b60f3f73d..000000000
--- a/program/js/tiny_mce/plugins/style/langs/hu_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hu.style_dlg',{"text_lineheight":"Sormagass\u00e1g","text_variant":"V\u00e1ltozat","text_style":"St\u00edlus","text_weight":"Sz\u00e9less\u00e9g","text_size":"M\u00e9ret","text_font":"Bet\u0171t\u00edpus","text_props":"Sz\u00f6veg","positioning_tab":"Poz\u00edci\u00f3","list_tab":"Lista","border_tab":"Keret","box_tab":"Doboz","block_tab":"Blokk","background_tab":"H\u00e1tt\u00e9r","text_tab":"Sz\u00f6veg",apply:"Alkalmaz",title:"CSS st\u00edlus szerkest\u00e9se",clip:"Lev\u00e1g\u00e1s",placement:"Elhelyez\u00e9s",overflow:"Kifut\u00e1s",zindex:"Z-index",visibility:"L\u00e1that\u00f3s\u00e1g","positioning_type":"T\u00edpus",position:"Poz\u00edci\u00f3","bullet_image":"Elemk\u00e9p","list_type":"T\u00edpus",color:"Sz\u00edn",height:"Magass\u00e1g",width:"Sz\u00e9less\u00e9g",style:"St\u00edlus",margin:"Marg\u00f3",left:"Balra",bottom:"Lent",right:"Jobbra",top:"Fel\u00fcl",same:"Mindenhol ugyanaz",padding:"Bels\u0151 marg\u00f3","box_clear":"Lebeg\u00e9s (float) t\u00f6rl\u00e9se","box_float":"Lebeg\u00e9s (float)","box_height":"Magass\u00e1g","box_width":"Sz\u00e9less\u00e9g","block_display":"Megjelen\u00edt\u00e9s","block_whitespace":"T\u00e9rk\u00f6z","block_text_indent":"Sz\u00f6veg beh\u00faz\u00e1sa","block_text_align":"Sz\u00f6veg igaz\u00edt\u00e1sa","block_vertical_alignment":"F\u00fcgg\u0151leges igaz\u00edt\u00e1s","block_letterspacing":"Bet\u0171t\u00e1vols\u00e1g","block_wordspacing":"Sz\u00f3t\u00e1vols\u00e1g","background_vpos":"F\u00fcgg\u0151leges hely","background_hpos":"V\u00edzszintes hely","background_attachment":"Csatolm\u00e1ny","background_repeat":"Ism\u00e9tl\u00e9s","background_image":"H\u00e1tt\u00e9rk\u00e9p","background_color":"H\u00e1tt\u00e9rsz\u00edn","text_none":"egyik sem","text_blink":"villog\u00e1s","text_case":"eset","text_striketrough":"\u00e1th\u00fazott","text_underline":"al\u00e1h\u00fazott","text_overline":"fel\u00fclh\u00fazott","text_decoration":"dekor\u00e1ci\u00f3","text_color":"sz\u00edn",text:"Sz\u00f6veg",background:"H\u00e1tt\u00e9r",block:"Blokk",box:"Doboz",border:"Keret",list:"Lista"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/hy_dlg.js b/program/js/tiny_mce/plugins/style/langs/hy_dlg.js
deleted file mode 100644
index 4b9885b07..000000000
--- a/program/js/tiny_mce/plugins/style/langs/hy_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hy.style_dlg',{"text_lineheight":"\u054f\u0578\u0572\u056b \u0562\u0561\u0580\u0571\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576","text_variant":"Variant","text_style":"\u0548\u0573","text_weight":"\u0540\u0561\u057d\u057f\u0578\u0582\u0569\u0575\u0578\u0582\u0576","text_size":"\u0549\u0561\u0583\u057d","text_font":"\u054f\u0561\u057c\u0561\u057f\u0565\u057d\u0561\u056f","text_props":"\u054f\u0565\u0584\u057d\u057f","positioning_tab":"\u054f\u0565\u0572\u0561\u056f\u0561\u0575\u0578\u0582\u0574","list_tab":"\u0551\u0578\u0582\u0581\u0561\u056f","border_tab":"\u0535\u0566\u0580","box_tab":"Box","block_tab":"\u0532\u056c\u0578\u056f","background_tab":"\u0556\u0578\u0576","text_tab":"\u054f\u0565\u0584\u057d\u057f",apply:"\u0540\u0561\u057d\u057f\u0561\u057f\u0565\u056c",title:"CSS \u0578\u0573\u0565\u0580\u056b \u056d\u0574\u0562\u0561\u0563\u0580\u0578\u0582\u0574",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"\u054f\u0565\u057d\u0561\u0576\u0565\u056c\u056b\u0578\u0582\u0569\u0575\u0578\u0582\u0576","positioning_type":"\u054f\u0565\u057d\u0561\u056f",position:"\u0534\u056b\u0580\u0584","bullet_image":"Bullet image","list_type":"\u054f\u0565\u057d\u0561\u056f",color:"\u0533\u0578\u0582\u0575\u0576",height:"\u0532\u0561\u0580\u0571\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576",width:"\u053c\u0561\u0575\u0576\u0578\u0582\u0569\u0575\u0578\u0582\u0576",style:"\u0548\u0573",margin:"Margin",left:"\u0541\u0561\u056d\u056b\u0581",bottom:"\u0546\u0565\u0580\u0584\u0587\u056b\u0581",right:"\u0531\u057b\u056b\u0581",top:"\u054e\u0565\u0580\u0587\u056b\u0581",same:"\u0544\u056b\u0587\u0576\u0578\u0582\u0575\u0576 \u0561\u0574\u0565\u0576 \u056b\u0576\u0579\u056b \u0570\u0561\u0574\u0561\u0580",padding:"Padding","box_clear":"Clear","box_float":"Float","box_height":"\u0532\u0561\u0580\u0571\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576","box_width":"\u053c\u0561\u0575\u0576\u0578\u0582\u0569\u0575\u0578\u0582\u0576","block_display":"Display","block_whitespace":"Whitespace","block_text_indent":"Text indent","block_text_align":"\u054f\u0565\u0584\u057d\u057f\u056b \u0570\u0561\u057e\u0561\u057d\u0561\u0580\u0565\u0581\u0578\u0582\u0574","block_vertical_alignment":"\u0548\u0582\u0572\u0572\u0561\u0570\u0561\u0575\u0561\u0581 \u0570\u0561\u057e\u0561\u057d\u0561\u0580\u0565\u0581\u0578\u0582\u0574","block_letterspacing":"\u0532\u0561\u0581\u0561\u0580\u056f\u0576\u0565\u0580 \u057f\u0561\u057c\u0565\u0580\u056b \u0574\u056b\u057b\u0587","block_wordspacing":"\u0532\u0561\u0581\u0561\u0580\u056f\u0576\u0565\u0580 \u0562\u0561\u057c\u0565\u0580\u056b \u0574\u056b\u057b\u0587","background_vpos":"\u0548\u0582\u0572\u0572\u0561\u0570\u0561\u0575\u0561\u0581 \u057f\u0565\u0572\u0561\u056f\u0561\u0575\u0578\u0582\u0574","background_hpos":"\u0540\u0578\u0580\u056b\u0566\u0578\u0576\u0561\u056f\u0561\u0576 \u057f\u0565\u0572\u0561\u056f\u0561\u0575\u0578\u0582\u0574","background_attachment":"Attachment","background_repeat":"\u053f\u0580\u056f\u0576\u0578\u0582\u0569\u0575\u0578\u0582\u0576","background_image":"\u0556\u0578\u0576\u0561\u0575\u056b\u0576 \u0576\u056f\u0561\u0580","background_color":"\u0556\u0578\u0576\u056b \u0563\u0578\u0582\u0575\u0576","text_none":"\u0578\u0579\u056b\u0576\u0579","text_blink":"\u0569\u0561\u0580\u0569\u0578\u0582\u0574\u0576\u0565\u0580","text_case":"Case","text_striketrough":"\u0561\u0580\u057f\u0561\u0563\u056e\u057e\u0561\u056e","text_underline":"\u057d\u057f\u0578\u0580\u056b\u0576 \u0563\u056b\u056e","text_overline":"\u057e\u0565\u0580\u056b\u0576 \u0563\u056b\u056e","text_decoration":"\u0541\u0587\u0561\u057e\u0578\u0580\u0578\u0582\u0574","text_color":"\u0533\u0578\u0582\u0575\u0576",text:"Text",background:"Background",block:"Block",box:"Box",border:"Border",list:"List"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/id_dlg.js b/program/js/tiny_mce/plugins/style/langs/id_dlg.js
deleted file mode 100644
index b8862d617..000000000
--- a/program/js/tiny_mce/plugins/style/langs/id_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('id.style_dlg',{"text_lineheight":"Line height","text_variant":"Variant","text_style":"Style","text_weight":"Weight","text_size":"Size","text_font":"Font","text_props":"Text","positioning_tab":"Positioning","list_tab":"List","border_tab":"Border","box_tab":"Box","block_tab":"Block","background_tab":"Background","text_tab":"Text",apply:"Apply",title:"Edit CSS Style",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibility","positioning_type":"Type",position:"Position","bullet_image":"Bullet image","list_type":"Type",color:"Color",height:"Height",width:"Width",style:"Style",margin:"Margin",left:"Left",bottom:"Bottom",right:"Right",top:"Top",same:"Same for all",padding:"Padding","box_clear":"Clear","box_float":"Float","box_height":"Height","box_width":"Width","block_display":"Display","block_whitespace":"Whitespace","block_text_indent":"Text indent","block_text_align":"Text align","block_vertical_alignment":"Vertical alignment","block_letterspacing":"Letter spacing","block_wordspacing":"Word spacing","background_vpos":"Vertical position","background_hpos":"Horizontal position","background_attachment":"Attachment","background_repeat":"Repeat","background_image":"Background image","background_color":"Background color","text_none":"none","text_blink":"blink","text_case":"Case","text_striketrough":"strikethrough","text_underline":"underline","text_overline":"overline","text_decoration":"Decoration","text_color":"Color",text:"Text",background:"Background",block:"Block",box:"Box",border:"Border",list:"List"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/is_dlg.js b/program/js/tiny_mce/plugins/style/langs/is_dlg.js
deleted file mode 100644
index 433672f68..000000000
--- a/program/js/tiny_mce/plugins/style/langs/is_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('is.style_dlg',{"text_lineheight":"Line height","text_variant":"Variant","text_style":"Style","text_weight":"Weight","text_size":"Size","text_font":"Font","text_props":"Text","positioning_tab":"Positioning","list_tab":"List","border_tab":"Border","box_tab":"Box","block_tab":"Block","background_tab":"Background","text_tab":"Text",apply:"Apply",title:"Edit CSS Style",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibility","positioning_type":"Type",position:"Position","bullet_image":"Bullet image","list_type":"Type",color:"Color",height:"Height",width:"Width",style:"Style",margin:"Margin",left:"Left",bottom:"Bottom",right:"Right",top:"Top",same:"Same for all",padding:"Padding","box_clear":"Clear","box_float":"Float","box_height":"Height","box_width":"Width","block_display":"Display","block_whitespace":"Whitespace","block_text_indent":"Text indent","block_text_align":"Text align","block_vertical_alignment":"Vertical alignment","block_letterspacing":"Letter spacing","block_wordspacing":"Word spacing","background_vpos":"Vertical position","background_hpos":"Horizontal position","background_attachment":"Attachment","background_repeat":"Repeat","background_image":"Background image","background_color":"Background color","text_none":"none","text_blink":"blink","text_case":"Case","text_striketrough":"strikethrough","text_underline":"underline","text_overline":"overline","text_decoration":"Decoration","text_color":"Color",text:"Text",background:"Background",block:"Block",box:"Box",border:"Border",list:"List"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/it_dlg.js b/program/js/tiny_mce/plugins/style/langs/it_dlg.js
deleted file mode 100644
index 401b72770..000000000
--- a/program/js/tiny_mce/plugins/style/langs/it_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('it.style_dlg',{"text_lineheight":"Altezza linea","text_variant":"Variante","text_style":"Stile","text_weight":"Spessore","text_size":"Dimensione","text_font":"Carattere","text_props":"Testo","positioning_tab":"Posizionamento","list_tab":"Liste","border_tab":"Bordi","box_tab":"Contenitore","block_tab":"Blocco","background_tab":"Sfondo","text_tab":"Testo",apply:"Applica",title:"Modifica stile CSS",clip:"Clip",placement:"Piazzamento",overflow:"Overflow",zindex:"Z-index",visibility:"Visibilit\u00e0","positioning_type":"Tipo",position:"Posizione","bullet_image":"Immagine Punto","list_type":"Tipo",color:"Colore",height:"Altezza",width:"Larghezza",style:"Stile",margin:"Margine",left:"Sinistro",bottom:"Inferiore",right:"Destro",top:"Superiore",same:"Uguale per tutti",padding:"Spazio dal bordo","box_clear":"Pulito","box_float":"Fluttuante","box_height":"Altezza","box_width":"Larghezza","block_display":"Visualizzazione","block_whitespace":"Whitespace","block_text_indent":"Indentazione testo","block_text_align":"Allineamento testo","block_vertical_alignment":"Allineamento verticale","block_letterspacing":"Spaziatura caratteri","block_wordspacing":"Spaziatura parole","background_vpos":"Posizione verticale","background_hpos":"Posizione orizzontale","background_attachment":"Allegato","background_repeat":"Repetizione","background_image":"Immagine sfondo","background_color":"Colore sfondo","text_none":"nessuna","text_blink":"lampeggiante","text_case":"Tipo","text_striketrough":"barrato","text_underline":"sottolineato","text_overline":"sopralineato","text_decoration":"Decorazione","text_color":"Colore",text:"Testo",background:"Sfondo",block:"Blocco",box:"Box",border:"Bordo",list:"Lista"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/ja_dlg.js b/program/js/tiny_mce/plugins/style/langs/ja_dlg.js
deleted file mode 100644
index 4d5953cf4..000000000
--- a/program/js/tiny_mce/plugins/style/langs/ja_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ja.style_dlg',{"text_lineheight":"\u884c\u306e\u9ad8\u3055","text_variant":"\u5909\u5f62","text_style":"\u30b9\u30bf\u30a4\u30eb","text_weight":"\u592a\u3055","text_size":"\u5927\u304d\u3055","text_font":"\u30d5\u30a9\u30f3\u30c8","text_props":"\u30c6\u30ad\u30b9\u30c8","positioning_tab":"\u4f4d\u7f6e","list_tab":"\u7b87\u6761\u66f8\u304d","border_tab":"\u67a0\u7dda","box_tab":"\u30dc\u30c3\u30af\u30b9","block_tab":"\u30d6\u30ed\u30c3\u30af","background_tab":"\u80cc\u666f","text_tab":"\u6587\u5b57",apply:"\u9069\u7528",title:"CSS\u306e\u30b9\u30bf\u30a4\u30eb\u3092\u7de8\u96c6",clip:"\u5207\u308a\u629c\u304d",placement:"\u914d\u7f6e",overflow:"\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc",zindex:"Z-index",visibility:"\u53ef\u8996\u6027","positioning_type":"\u914d\u7f6e\u65b9\u6cd5",position:"\u8868\u793a\u4f4d\u7f6e","bullet_image":"\u884c\u982d\u6587\u5b57","list_type":"\u7b87\u6761\u66f8\u304d\u306e\u7a2e\u985e",color:"\u8272",height:"\u9ad8\u3055",width:"\u5e45",style:"\u30b9\u30bf\u30a4\u30eb",margin:"\u30de\u30fc\u30b8\u30f3",left:"\u5de6",bottom:"\u4e0b",right:"\u53f3",top:"\u4e0a",same:"\u3059\u3079\u3066\u540c\u3058",padding:"\u30d1\u30c7\u30a3\u30f3\u30b0","box_clear":"\u56de\u308a\u8fbc\u307f\u89e3\u9664","box_float":"\u56de\u308a\u8fbc\u307f","box_height":"\u9ad8\u3055","box_width":"\u5e45","block_display":"\u30c7\u30a3\u30b9\u30d7\u30ec\u30a4","block_whitespace":"\u7a7a\u767d\u6587\u5b57","block_text_indent":"\u30c6\u30ad\u30b9\u30c8\u306e\u5b57\u4e0b\u3052","block_text_align":"\u30c6\u30ad\u30b9\u30c8\u306e\u6c34\u5e73\u914d\u7f6e","block_vertical_alignment":"\u5782\u76f4\u914d\u7f6e","block_letterspacing":"\u6587\u5b57\u9593\u9694","block_wordspacing":"\u5358\u8a9e\u9593\u9694","background_vpos":"\u5782\u76f4\u4f4d\u7f6e","background_hpos":"\u6c34\u5e73\u4f4d\u7f6e","background_attachment":"\u6dfb\u4ed8","background_repeat":"\u7e70\u308a\u8fd4\u3057","background_image":"\u80cc\u666f\u753b\u50cf","background_color":"\u80cc\u666f\u8272","text_none":"\u306a\u3057","text_blink":"\u70b9\u6ec5","text_case":"\u5927\u6587\u5b57/\u5c0f\u6587\u5b57","text_striketrough":"\u6253\u6d88\u3057\u7dda","text_underline":"\u4e0b\u7dda","text_overline":"\u4e0a\u7dda","text_decoration":"\u88c5\u98fe","text_color":"\u8272",text:"\u6587\u5b57",background:"\u80cc\u666f",block:"\u30d6\u30ed\u30c3\u30af",box:"\u30dc\u30c3\u30af\u30b9",border:"\u67a0\u7dda",list:"\u7b87\u6761\u66f8\u304d"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/ka_dlg.js b/program/js/tiny_mce/plugins/style/langs/ka_dlg.js
deleted file mode 100644
index 442f54efa..000000000
--- a/program/js/tiny_mce/plugins/style/langs/ka_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ka.style_dlg',{"text_lineheight":"\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10e1\u10d8\u10db\u10d0\u10e6\u10da\u10d4","text_variant":"\u10d5\u10d0\u10e0\u10d8\u10d0\u10dc\u10e2\u10d8","text_style":"\u10e1\u10e2\u10d8\u10da\u10d8","text_weight":"\u10e1\u10d8\u10e1\u10e5\u10d4","text_size":"\u10d6\u10dd\u10db\u10d0","text_font":"\u10e8\u10e0\u10d8\u10e4\u10e2\u10d8","text_props":"\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8","positioning_tab":"\u10de\u10dd\u10d6\u10d8\u10ea\u10d8\u10dd\u10dc\u10d8\u10e0\u10d4\u10d1\u10d0","list_tab":"\u10e1\u10d8\u10d0","border_tab":"\u10e1\u10d0\u10d6\u10e6\u10d5\u10d0\u10e0\u10d8","box_tab":"\u10d9\u10d8\u10d3\u10d4\u10d4\u10d1\u10d8","block_tab":"\u10d1\u10da\u10dd\u10d9\u10d8","background_tab":"\u10e4\u10dd\u10dc\u10d8","text_tab":"\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8",apply:"\u10d2\u10d0\u10db\u10dd\u10d5\u10d8\u10e7\u10d4\u10dc\u10dd\u10d7",title:"CSS \u10e1\u10e2\u10d8\u10da\u10d8\u10e1 \u10e0\u10d4\u10d3\u10d0\u10e5\u10e2\u10dd\u10e0\u10d8",clip:"\u10db\u10dd\u10d9\u10d5\u10d4\u10d7\u10d0",placement:"\u10d2\u10d0\u10dc\u10d7\u10d0\u10d5\u10e1\u10d4\u10d1\u10d0",overflow:"\u10d2\u10d0\u10d3\u10d0\u10d5\u10e1\u10d4\u10d1\u10d0",zindex:"Z-\u10d8\u10dc\u10d3\u10d4\u10e5\u10e1\u10d8",visibility:"\u10ee\u10d8\u10da\u10d5\u10d0\u10d3\u10dd\u10d1\u10d0","positioning_type":"\u10e2\u10d8\u10de\u10d8",position:"\u10de\u10dd\u10d6\u10d8\u10ea\u10d8\u10d0","bullet_image":"\u10db\u10d0\u10e0\u10d9\u10d4\u10e0\u10d8","list_type":"\u10e2\u10d8\u10de\u10d8",color:"\u10e4\u10d4\u10e0\u10d8",height:"\u10e1\u10d8\u10db\u10d0\u10e6\u10da\u10d4",width:"\u10e1\u10d8\u10d2\u10d0\u10dc\u10d4",style:"\u10e1\u10e2\u10d8\u10da\u10d8",margin:"\u10d3\u10d0\u10e8\u10dd\u10e0\u10d4\u10d1\u10d0",left:"\u10db\u10d0\u10e0\u10ea\u10ee\u10dc\u10d8\u10d5",bottom:"\u10e5\u10d5\u10d4\u10db\u10dd\u10d7",right:"\u10db\u10d0\u10e0\u10ef\u10d5\u10dc\u10d8\u10d5",top:"\u10d6\u10d4\u10db\u10dd\u10d7",same:"\u10e7\u10d5\u10d4\u10da\u10d0\u10e1\u10d7\u10d5\u10d8\u10e1 \u10d4\u10e0\u10d7\u10dc\u10d0\u10d4\u10e0\u10d0\u10d3",padding:"\u10db\u10d8\u10dc\u10d3\u10d5\u10e0\u10d4\u10d1\u10d8","box_clear":"\u10db\u10dd\u10e1\u10e3\u10e4\u10d7\u10d0\u10d5\u10d4\u10d1\u10d0","box_float":"\u10db\u10dd\u10ea\u10e3\u10e0\u10d0\u10d5\u10d4","box_height":"\u10e1\u10d8\u10db\u10d0\u10e6\u10da\u10d4","box_width":"\u10e1\u10d8\u10d2\u10d0\u10dc\u10d4","block_display":"\u10d0\u10e1\u10d0\u10ee\u10d5\u10d0","block_whitespace":"\u10e1\u10d8\u10d5\u10e0\u10ea\u10d4","block_text_indent":"\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1 \u10d3\u10d0\u10e8\u10dd\u10e0\u10d4\u10d1\u10d0","block_text_align":"\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1 \u10d2\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d0","block_vertical_alignment":"\u10d5\u10d4\u10e0\u10e2\u10d8\u10d9\u10d0\u10da\u10e3\u10e0\u10d8 \u10d2\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d0","block_letterspacing":"\u10d0\u10e1\u10dd\u10d4\u10d1\u10e1 \u10e8\u10dd\u10e0\u10d8\u10e1 \u10d3\u10d0\u10e8\u10dd\u10e0\u10d4\u10d1\u10d0","block_wordspacing":"\u10e1\u10d8\u10e2\u10e7\u10d5\u10d4\u10d1\u10e1 \u10e8\u10dd\u10e0\u10d8\u10e1 \u10d3\u10d0\u10e8\u10dd\u10e0\u10d4\u10d1\u10d0","background_vpos":"\u10d5\u10d4\u10e0\u10e2\u10d8\u10d9\u10d0\u10da\u10e3\u10e0\u10d8 \u10de\u10dd\u10d6\u10d8\u10ea\u10d8\u10d0","background_hpos":"\u10f0\u10dd\u10e0\u10d8\u10d6\u10dd\u10dc\u10e2\u10d0\u10da\u10e3\u10e0\u10d8 \u10de\u10dd\u10d6\u10d8\u10ea\u10d8\u10d0","background_attachment":"\u10db\u10d8\u10d1\u10db\u10d0","background_repeat":"\u10d2\u10d0\u10db\u10d4\u10dd\u10e0\u10d4\u10d1\u10d0","background_image":"\u10e4\u10dd\u10dc\u10d8\u10e1 \u10d2\u10d0\u10db\u10dd\u10e1\u10d0\u10ee\u10e3\u10da\u10d4\u10d1\u10d0","background_color":"\u10e4\u10dd\u10dc\u10d8\u10e1 \u10e4\u10d4\u10e0\u10d8","text_none":"\u10e7\u10d5\u10d4\u10da\u10d0\u10e4\u10e0\u10d8\u10e1 \u10d2\u10d0\u10e0\u10d4\u10e8\u10d4","text_blink":"\u10db\u10dd\u10ea\u10d8\u10db\u10ea\u10d8\u10db\u10d4","text_case":"\u10e0\u10d4\u10d2\u10d8\u10e1\u10e2\u10e0\u10d8","text_striketrough":"\u10d2\u10d0\u10d3\u10d0\u10ee\u10d0\u10d6\u10e3\u10da\u10d8","text_underline":"\u10db\u10dd\u10ee\u10d0\u10d6\u10e3\u10da\u10d8","text_overline":"\u10d6\u10d4\u10d3\u10d0 \u10ee\u10d0\u10d6\u10d8\u10d7","text_decoration":"\u10d2\u10d0\u10e4\u10dd\u10e0\u10db\u10d4\u10d1\u10d0","text_color":"\u10e4\u10d4\u10e0\u10d8",text:"Text",background:"Background",block:"Block",box:"Box",border:"Border",list:"List"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/ko_dlg.js b/program/js/tiny_mce/plugins/style/langs/ko_dlg.js
deleted file mode 100644
index c326368fd..000000000
--- a/program/js/tiny_mce/plugins/style/langs/ko_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ko.style_dlg',{"text_lineheight":"\ud589 \ub192\uc774","text_variant":"Variant","text_style":"\uc2a4\ud0c0\uc77c","text_weight":"\uad75\uae30","text_size":"\ud06c\uae30","text_font":"\uae00\uaf34","text_props":"\ud14d\uc2a4\ud2b8","positioning_tab":"\uc704\uce58","list_tab":"\ub9ac\uc2a4\ud2b8","border_tab":"\ud14c\ub450\ub9ac\uc120","box_tab":"\ubc15\uc2a4","block_tab":"\ube14\ub85d","background_tab":"\ubc30\uacbd","text_tab":"\ud14d\uc2a4\ud2b8",apply:"\uc801\uc6a9",title:"CSS \ud3b8\uc9d1",clip:"Clip",placement:"\uc704\uce58(placement)",overflow:"\uc624\ubc84\ud50c\ub85c\uc6b0",zindex:"Z-index",visibility:"\uac00\uc2dc\uc131","positioning_type":"\ud0c0\uc785",position:"\uc704\uce58","bullet_image":"\ubd88\ub9bf \uc774\ubbf8\uc9c0","list_type":"\ubaa9\ub85d\uc885\ub958",color:"\uc0c9",height:"\ub192\uc774",width:"\ud3ed",style:"\uc2a4\ud0c0\uc77c",margin:"\ub9c8\uc9c4",left:"\uc88c",bottom:"\ud558",right:"\uc6b0",top:"\uc0c1",same:"\ubaa8\ub450 \ub611\uac19\uc774",padding:"padding","box_clear":"Clear","box_float":"float","box_height":"\ub192\uc774","box_width":"\ud3ed","block_display":"\ud45c\uc2dc","block_whitespace":"\uacf5\ubc31 \ubb38\uc790","block_text_indent":"\ub4e4\uc5ec\uc4f0\uae30","block_text_align":"\uc88c\uc6b0 \ub9de\ucda4","block_vertical_alignment":"\uc138\ub85c \ub9de\ucda4","block_letterspacing":"\ubb38\uc790 \uac04\uaca9","block_wordspacing":"\ub2e8\uc5b4 \uac04\uaca9","background_vpos":"\uc138\ub85c \uc704\uce58","background_hpos":"\uac00\ub85c \uc704\uce58","background_attachment":"\ucca8\ubd80","background_repeat":"\ubc18\ubcf5","background_image":"\ubc30\uacbd \uc774\ubbf8\uc9c0","background_color":"\ubc30\uacbd\uc0c9","text_none":"\uc5c6\uc74c","text_blink":"\uc810\uba78","text_case":"\ub300/\uc18c\ubb38\uc790","text_striketrough":"\ucde8\uc18c\uc120","text_underline":"\ubc11\uc904","text_overline":"\uc717\uc904","text_decoration":"\uc7a5\uc2dd","text_color":"\uc0c9",text:"\ud14d\uc2a4\ud2b8",background:"\ubc30\uacbd",block:"\ube14\ub85d",border:"\ud14c\ub450\ub9ac\uc120",list:"\ubaa9\ub85d",box:"Box"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/lt_dlg.js b/program/js/tiny_mce/plugins/style/langs/lt_dlg.js
deleted file mode 100644
index c8bc04271..000000000
--- a/program/js/tiny_mce/plugins/style/langs/lt_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('lt.style_dlg',{"text_lineheight":"Eilut\u0117s auk\u0161tis","text_variant":"Variantas","text_style":"Stilius","text_weight":"Storis","text_size":"Dydis","text_font":"\u0160riftas","text_props":"Tekstas","positioning_tab":"Pozicionavimas","list_tab":"S\u0105ra\u0161as","border_tab":"R\u0117melis","box_tab":"D\u0117\u017eut\u0117","block_tab":"Blokas","background_tab":"Fonas","text_tab":"Tekstas",apply:"Taikyti",title:"Redaguoti CSS stili\u0173",clip:"\u012era\u0161as",placement:"Talpinimas",overflow:"Perpildymas",zindex:"Z-indeksas",visibility:"Matomumas","positioning_type":"Tipas",position:"Pozicija","bullet_image":"\u017denklelio paveiksl\u0117lis","list_type":"Tipas",color:"Spalva",height:"Auk\u0161tis",width:"Ilgis",style:"Stilius",margin:"Para\u0161t\u0117",left:"Kair\u0117je",bottom:"Apa\u010dioje",right:"De\u0161in\u0117je",top:"Vir\u0161uje",same:"Tas pats visiems",padding:"U\u017epildymas","box_clear":"I\u0161valyti","box_float":"Slankus","box_height":"Auk\u0161tis","box_width":"Ilgis","block_display":"Rodymas","block_whitespace":"Tarpai","block_text_indent":"Teksto atitraukimas","block_text_align":"Teksto lygiavimas","block_vertical_alignment":"Vertikalus lygiavimas","block_letterspacing":"Tarpai tarp raid\u017ei\u0173","block_wordspacing":"Tarpai tarp \u017eod\u017ei\u0173","background_vpos":"Vertikali pozicija","background_hpos":"Horizontali pozicija","background_attachment":"Priedas","background_repeat":"Kartoti","background_image":"Fono paveiksl\u0117lis","background_color":"Fono spalva","text_none":"joks","text_blink":"mirks\u0117jimas","text_case":"Ma\u017eosios/did\u017eiosios raid\u0117s","text_striketrough":"perbraukta","text_underline":"pabraukta apa\u010dioje","text_overline":"pabraukta vir\u0161uje","text_decoration":"Dekoracija","text_color":"Spalva",text:"Tekstas",background:"Fonas",block:"Blokuoti",box:"D\u0117\u017e\u0117",border:"Siena",list:"\u0160\u0105ra\u0161as"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/lv_dlg.js b/program/js/tiny_mce/plugins/style/langs/lv_dlg.js
deleted file mode 100644
index 9f0d3f246..000000000
--- a/program/js/tiny_mce/plugins/style/langs/lv_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('lv.style_dlg',{"text_lineheight":"Line height","text_variant":"Variant","text_style":"Style","text_weight":"Weight","text_size":"Size","text_font":"Font","text_props":"Text","positioning_tab":"Positioning","list_tab":"List","border_tab":"Border","box_tab":"Box","block_tab":"Block","background_tab":"Background","text_tab":"Text",apply:"Apply",title:"Edit CSS Style",clip:"Klips",placement:"Izvietojums",overflow:"P\u0101rm\u0113rs",zindex:"Z-index",visibility:"Redzam\u012bba","positioning_type":"Tips",position:"Poz\u012bcija","bullet_image":"Bullet bilde","list_type":"Tips",color:"Kr\u0101sa",height:"Augstums",width:"Platums",style:"St\u012bls",margin:"Mala",left:"Pa kreisi",bottom:"Apak\u0161a",right:"Pa labi",top:"Aug\u0161a",same:"Same for all",padding:"Atstarpe","box_clear":"Clear","box_float":"Float","box_height":"Augstums","box_width":"Platums","block_display":"Display","block_whitespace":"Tuk\u0161ais laukums","block_text_indent":"\u00c9crit indent","block_text_align":"Teksta izl\u012bdzin\u0101jums","block_vertical_alignment":"Vertik\u0101lais izl\u012bdzin\u0101jums","block_letterspacing":"Burtu atstarpe","block_wordspacing":"V\u0101rdu atstarpe","background_vpos":"Vertik\u0101l\u0101 poz\u012bcija","background_hpos":"Horizont\u0101l\u0101 poz\u012bcija","background_attachment":"Attachment","background_repeat":"Repeat","background_image":"Background image","background_color":"Background color","text_none":"none","text_blink":"blink","text_case":"Case","text_striketrough":"strikethrough","text_underline":"underline","text_overline":"overline","text_decoration":"Decoration","text_color":"Color",text:"Teksts",background:"Fons",block:"Blo\u0137\u0113t",box:"Kaste",border:"Siena",list:"Saraksts"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/mk_dlg.js b/program/js/tiny_mce/plugins/style/langs/mk_dlg.js
deleted file mode 100644
index ce8ab5d8d..000000000
--- a/program/js/tiny_mce/plugins/style/langs/mk_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('mk.style_dlg',{"text_lineheight":"\u0412\u0438\u0441\u0438\u043d\u0430 \u043d\u0430 \u043b\u0438\u043d\u0438\u0458\u0430","text_variant":"\u0412\u0430\u0440\u0438\u0430\u043d\u0442\u0430","text_style":"\u0421\u0442\u0438\u043b","text_weight":"\u0428\u0438\u0440\u0438\u043d\u0430","text_size":"\u0413\u043e\u043b\u0435\u043c\u0438\u043d\u0430","text_font":"\u0424\u043e\u043d\u0442","text_props":"\u0422\u0435\u043a\u0441\u0442","positioning_tab":"\u041f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u0430\u045a\u0435","list_tab":"\u041b\u0438\u0441\u0442\u0430","border_tab":"\u0413\u0440\u0430\u043d\u0438\u0446\u0438","box_tab":"\u041a\u0443\u0442\u0438\u0458\u0430","block_tab":"\u0411\u043b\u043e\u043a","background_tab":"\u041f\u043e\u0437\u0430\u0434\u0438\u043d\u0430","text_tab":"\u0422\u0435\u043a\u0441\u0442",apply:"\u041f\u0440\u0438\u043c\u0435\u043d\u0438",title:"\u0423\u0440\u0435\u0434\u0438 \u0433\u043e CSS \u0441\u0442\u0438\u043b\u043e\u0442",clip:"\u041a\u043b\u0438\u043f",placement:"\u041f\u043e\u0441\u0442\u0430\u0432\u0435\u043d\u043e\u0441\u0442",overflow:"\u041f\u0440\u0435\u043b\u0435\u0432\u0430\u045a\u0435",zindex:"Z-index",visibility:"\u0412\u0438\u0434\u043b\u0438\u0432\u043e\u0441\u0442","positioning_type":"\u0422\u0438\u043f",position:"\u041f\u043e\u0437\u0438\u0446\u0438\u0458\u0430","bullet_image":"Bullet \u0441\u043b\u0438\u043a\u0430","list_type":"\u0422\u0438\u043f",color:"\u0411\u043e\u0458\u0430",height:"\u0412\u0438\u0441\u0438\u043d\u0430",width:"\u0428\u0438\u0440\u0438\u043d\u0430",style:"\u0421\u0442\u0438\u043b",margin:"\u041c\u0430\u0440\u0433\u0438\u043d\u0430",left:"\u041b\u0435\u0432\u043e",bottom:"\u0414\u043e\u043b\u0435",right:"\u0414\u0435\u0441\u043d\u043e",top:"\u0413\u043e\u0440\u0435",same:"\u0418\u0441\u0442\u043e \u0437\u0430 \u0441\u0438\u0442\u0435",padding:"\u041f\u043e\u043c\u0435\u0441\u0442\u0443\u0432\u0430\u045a\u0435","box_clear":"\u0418\u0441\u0447\u0438\u0441\u0442\u0438","box_float":"\u041f\u043e\u043c\u0435\u0441\u0442\u0443\u0432\u0430\u045a\u0435","box_height":"\u0412\u0438\u0441\u0438\u043d\u0430","box_width":"\u0428\u0438\u0440\u0438\u043d\u0430","block_display":"\u041f\u0440\u0438\u043a\u0430\u0436\u0438","block_whitespace":"\u041f\u0440\u0430\u0437\u043d\u043e \u043c\u0435\u0441\u0442\u043e","block_text_indent":"\u0422\u0435\u043a\u0441\u0442 \u043f\u0430\u0440\u0430\u0433\u0440\u0430\u0444","block_text_align":"\u041f\u043e\u0440\u0430\u043c\u043d\u0438 \u0433\u043e \u0442\u0435\u043a\u0441\u0442\u043e\u0442","block_vertical_alignment":"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u043d\u043e \u043f\u043e\u0440\u0430\u043c\u043d\u0443\u0432\u0430\u045a\u0435","block_letterspacing":"\u0420\u0430\u0441\u0442\u043e\u0430\u0458\u043d\u0438\u0435 \u043c\u0435\u0453\u0443 \u0431\u0443\u043a\u0432\u0438\u0442\u0435","block_wordspacing":"\u0420\u0430\u0441\u0442\u043e\u0458\u0430\u043d\u0438\u0435 \u043c\u0435\u0453\u0443 \u0437\u0431\u043e\u0440\u043e\u0432\u0438\u0442\u0435","background_vpos":"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u043d\u0430 \u043f\u043e\u0437\u0438\u0446\u0438\u0458\u0430","background_hpos":"\u0425\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u043d\u0430 \u043f\u043e\u0437\u0438\u0446\u0438\u0458\u0430","background_attachment":"\u041f\u0440\u0438\u043b\u043e\u0433","background_repeat":"\u041f\u043e\u0432\u0442\u043e\u0440\u0438","background_image":"\u041f\u043e\u0437\u0430\u0434\u043d\u0438\u043d\u0441\u043a\u0430 \u0441\u043b\u0438\u043a\u0430","background_color":"\u0411\u043e\u0458\u0430 \u043d\u0430 \u043f\u043e\u0437\u0430\u0434\u0438\u043d\u0430\u0442\u0430","text_none":"\u043d\u0438\u0448\u0442\u043e","text_blink":"\u0442\u0440\u0435\u043f\u043a\u0430\u045a\u0435","text_case":"\u0421\u043b\u0443\u0447\u0430\u0458","text_striketrough":"\u043f\u0440\u0435\u0446\u0440\u0442\u0430\u043d\u043e","text_underline":"\u043f\u043e\u0434\u0432\u043b\u0435\u0448\u0435\u043d\u043e","text_overline":"\u043d\u0430\u0434 \u043b\u0438\u043d\u0438\u0458\u0430","text_decoration":"\u0414\u0435\u043a\u043e\u0440\u0430\u0446\u0438\u0458\u0430","text_color":"\u0411\u043e\u0458\u0430",text:"\u0422\u0435\u043a\u0441\u0442",background:"\u041f\u043e\u0437\u0430\u0434\u0438\u043d\u0430",block:"\u0411\u043b\u043e\u043a",box:"\u041a\u0443\u0442\u0438\u0458\u0430",border:"\u0413\u0440\u0430\u043d\u0438\u0446\u0438/\u0440\u0430\u0431\u043e\u0432\u0438",list:"\u041b\u0438\u0441\u0442\u0430"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/ms_dlg.js b/program/js/tiny_mce/plugins/style/langs/ms_dlg.js
deleted file mode 100644
index 518a3be20..000000000
--- a/program/js/tiny_mce/plugins/style/langs/ms_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ms.style_dlg',{"text_lineheight":"Tinggi garisan","text_variant":"Varian","text_style":"Gaya","text_weight":"Beban","text_size":"Saiz","text_font":"Huruf","text_props":"Teks","positioning_tab":"Kedudukan","list_tab":"Senarai","border_tab":"Sempadan","box_tab":"Kotak","block_tab":"Landasan","background_tab":"Latar belakang","text_tab":"Teks",apply:"Guna",title:"Sunting Gaya CSS",clip:"Klip",placement:"Penempatan",overflow:"Limpahan",zindex:"Indeks-Z",visibility:"Kelihatan","positioning_type":"Jenis",position:"Posisi","bullet_image":"Imej peluru","list_type":"Jenis",color:"Warna",height:"Tinggi",width:"Lebar",style:"Gaya",margin:"Ruangan tepi",left:"Kiri",bottom:"Bawah",right:"Kanan",top:"Atas",same:"Samakan kesemuanya",padding:"Lapisan","box_clear":"Ruangan jelas","box_float":"Apungan","box_height":"Tinggi","box_width":"Lebar","block_display":"Pamer","block_whitespace":"Ruangan putih","block_text_indent":"Takukan teks","block_text_align":"Penjajaran teks","block_vertical_alignment":"Penjajaran tegak","block_letterspacing":"Jarak huruf","block_wordspacing":"Jarak perkataan","background_vpos":"Posisi tegak","background_hpos":"Posisi mengufuk","background_attachment":"Sisipan","background_repeat":"Ulangan","background_image":"Imej Latar","background_color":"Warna Latar","text_none":"tiada","text_blink":"kelip","text_case":"Kes","text_striketrough":"garis tengah","text_underline":"garis bawah","text_overline":"garis atas","text_decoration":"Dekorasi","text_color":"Warna",text:"Text",background:"Background",block:"Block",box:"Box",border:"Border",list:"List"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/nb_dlg.js b/program/js/tiny_mce/plugins/style/langs/nb_dlg.js
deleted file mode 100644
index c17857477..000000000
--- a/program/js/tiny_mce/plugins/style/langs/nb_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nb.style_dlg',{"text_lineheight":"Linjeh\u00f8yde","text_variant":"Variant","text_style":"Skriftstil","text_weight":"Skriftvekt","text_size":"Skriftst\u00f8rrelse","text_font":"Skrifttype","text_props":"Skriftegenskaper","positioning_tab":"Posisjon","list_tab":"Liste","border_tab":"Ramme","box_tab":"Boks","block_tab":"Blokk","background_tab":"Bakgrunn","text_tab":"Tekst",apply:"Legg til",title:"Rediger CSS-stil",clip:"Klipp",placement:"Plassering",overflow:"Overfyll",zindex:"Z-indeks",visibility:"Synlighet","positioning_type":"Type",position:"Posisjon","bullet_image":"Punktbilde","list_type":"Type",color:"Farge",height:"H\u00f8yde",width:"Bredde",style:"Stil",margin:"Marg",left:"Venstre",bottom:"Bunn",right:"H\u00f8yre",top:"Topp",same:"Lik i alle",padding:"Utfylling","box_clear":"Slett","box_float":"Flyt","box_height":"H\u00f8yde","box_width":"Bredde","block_display":"Framvising","block_whitespace":"Mellomrom","block_text_indent":"Innrykk","block_text_align":"Justering","block_vertical_alignment":"Vertikal justering","block_letterspacing":"Bokstavmellomrom","block_wordspacing":"Ordmellomrom","background_vpos":"Vertikal posisjon","background_hpos":"Horisontal posisjon","background_attachment":"Vedlegg","background_repeat":"Gjenta","background_image":"Bakgrunnsbilde","background_color":"Bakgrunnsfarge","text_none":"Ingen","text_blink":"Blink","text_case":"Store / sm\u00e5 bokstaver","text_striketrough":"Gjennomstreking","text_underline":"Senke skrift","text_overline":"Heve skrift","text_decoration":"Dekorasjon","text_color":"Farge",text:"Tekst",background:"Bakgrunn",block:"Blokk",box:"Boks",border:"Ramme",list:"Liste"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/nl_dlg.js b/program/js/tiny_mce/plugins/style/langs/nl_dlg.js
deleted file mode 100644
index ad81f8f85..000000000
--- a/program/js/tiny_mce/plugins/style/langs/nl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nl.style_dlg',{"text_lineheight":"Lijnhoogte","text_variant":"Variant","text_style":"Stijl","text_weight":"Gewicht","text_size":"Tekengrootte","text_font":"Lettertype","text_props":"Tekst","positioning_tab":"Positionering","list_tab":"Lijst","border_tab":"Rand","box_tab":"Box","block_tab":"Blok","background_tab":"Achtergrond","text_tab":"Tekst",apply:"Toepassen",title:"CSS Stijl bewerken",clip:"Clip",placement:"Plaatsing",overflow:"Overvloeien",zindex:"Z-index",visibility:"Zichtbaarheid","positioning_type":"Type",position:"Positie","bullet_image":"Opsommingsteken","list_type":"Type",color:"Kleur",height:"Hoogte",width:"Breedte",style:"Stijl",margin:"Marge",left:"Links",bottom:"Onder",right:"Rechts",top:"Boven",same:"Alles hetzelfde",padding:"Opening","box_clear":"Vrijhouden","box_float":"Zweven","box_height":"Hoogte","box_width":"Breedte","block_display":"Weergave","block_whitespace":"Witruimte","block_text_indent":"Inspringen","block_text_align":"Tekstuitlijning","block_vertical_alignment":"Verticale uitlijning","block_letterspacing":"Letterruimte","block_wordspacing":"Woordruimte","background_vpos":"Verticale positie","background_hpos":"Horizontale positie","background_attachment":"Bijlage","background_repeat":"Herhalen","background_image":"Achtergrondafbeelding","background_color":"Achtergrondkleur","text_none":"Niets","text_blink":"Knipperen","text_case":"Hoofdlettergebruik","text_striketrough":"Doorhalen","text_underline":"Onderstrepen","text_overline":"Overhalen","text_decoration":"Decoratie","text_color":"Kleur",text:"Tekst",background:"Achtergrond",block:"Blok",box:"Box",border:"Rand",list:"Lijst"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/nn_dlg.js b/program/js/tiny_mce/plugins/style/langs/nn_dlg.js
deleted file mode 100644
index 8b891c131..000000000
--- a/program/js/tiny_mce/plugins/style/langs/nn_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nn.style_dlg',{"text_lineheight":"Linjeh\u00f8gd","text_variant":"Variant","text_style":"Skriftstil","text_weight":"Skriftvekt","text_size":"Skriftstorleik","text_font":"Skrifttype","text_props":"Eigenskapar for skrift","positioning_tab":"Posisjon","list_tab":"Liste","border_tab":"Ramme","box_tab":"Boks","block_tab":"Blokk","background_tab":"Bakgrunn","text_tab":"Tekst",apply:"Legg til",title:"Rediger CSS-stil",clip:"Klipp",placement:"Plassering",overflow:"Overfylt",zindex:"Z-indeks",visibility:"Synlegheit","positioning_type":"Type",position:"Posisjon","bullet_image":"Kulepunktbilete","list_type":"Type",color:"Farge",height:"H\u00f8gd",width:"Breidd",style:"Stil",margin:"Marg",left:"Venstre",bottom:"Bunn",right:"H\u00f8gre",top:"Topp",same:"Likt i alle",padding:"Utfylling","box_clear":"Slett","box_float":"Flyt","box_height":"H\u00f8gd","box_width":"Breidd","block_display":"Framsyning","block_whitespace":"Mellomrom","block_text_indent":"Innrykk","block_text_align":"Justering","block_vertical_alignment":"Vertikal justering","block_letterspacing":"Bokstavmellomrom","block_wordspacing":"Ordmellomrom","background_vpos":"Vertikal posisjon","background_hpos":"Horisontal posisjon","background_attachment":"Vedlegg","background_repeat":"Gjenta","background_image":"Bakgrunnsbilete","background_color":"Bakgrunnsfarge","text_none":"Ingen","text_blink":"Blink","text_case":"Kapitelar/minusklar","text_striketrough":"Gjennomstreking","text_underline":"Senka skrift","text_overline":"Heva skrift","text_decoration":"Dekorasjon","text_color":"Farge",text:"Tekst",background:"Bakgrunn",block:"Blokk",box:"Boks",border:"Ramme",list:"Liste"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/pl_dlg.js b/program/js/tiny_mce/plugins/style/langs/pl_dlg.js
deleted file mode 100644
index 1dd01ce03..000000000
--- a/program/js/tiny_mce/plugins/style/langs/pl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('pl.style_dlg',{"text_lineheight":"Wysoko\u015b\u0107 linii","text_variant":"Wariant","text_style":"Styl","text_weight":"Waga","text_size":"Rozmiar","text_font":"Wz\u00f3r czcionki","text_props":"Tekst","positioning_tab":"Pozycjonowanie","list_tab":"Lista","border_tab":"Obramowanie","box_tab":"Pud\u0142o (box)","block_tab":"Blok","background_tab":"T\u0142o","text_tab":"Text",apply:"Zastosuj",title:"Edytuj style CSS",clip:"Klip",placement:"Umieszczenie",overflow:"Przepe\u0142niony",zindex:"Z-index",visibility:"Widoczno\u015b\u0107","positioning_type":"Typ",position:"Pozycja","bullet_image":"Obrazek listy","list_type":"Typ",color:"Kolor",height:"Wysoko\u015b\u0107",width:"Szeroko\u015b\u0107",style:"Styl",margin:"Margines",left:"Lewy",bottom:"D\u00f3\u0142",right:"Prawy",top:"G\u00f3ra",same:"To samo dla wszystkich",padding:"Odst\u0119py","box_clear":"Op\u0142ywanie (Clear)","box_float":"Op\u0142ywanie (Float)","box_height":"Wysoko\u015b\u0107","box_width":"Szeroko\u015b\u0107","block_display":"Spos\u00f3b wy\u015bwietlania","block_whitespace":"Bia\u0142e znaki","block_text_indent":"Przesuni\u0119cie tekstu","block_text_align":"Wyr\u00f3wnanie tekstu","block_vertical_alignment":"Pionowe wyr\u00f3wnanie","block_letterspacing":"Odst\u0119p mi\u0119dzy literami","block_wordspacing":"Odst\u0119p mi\u0119dzy wyrazami","background_vpos":"Pozycja pionowa","background_hpos":"Pozycja pozioma","background_attachment":"Za\u0142\u0105cznik","background_repeat":"Powt\u00f3rz","background_image":"Obrazek t\u0142a","background_color":"Kolor t\u0142a","text_none":"\u017caden","text_blink":"miganie","text_case":"Znaki","text_striketrough":"przekre\u015blenie","text_underline":"podkre\u015blenie","text_overline":"nadkre\u015blenie","text_decoration":"Dekoracja","text_color":"Kolor",text:"Tekst",background:"T\u0142o",block:"Blok",box:"Pud\u0142o (box)",border:"Obramowanie",list:"Lista"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/ps_dlg.js b/program/js/tiny_mce/plugins/style/langs/ps_dlg.js
deleted file mode 100644
index aa85aad72..000000000
--- a/program/js/tiny_mce/plugins/style/langs/ps_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ps.style_dlg',{"text_lineheight":"Line height","text_variant":"Variant","text_style":"Style","text_weight":"Weight","text_size":"Size","text_font":"Font","text_props":"Text","positioning_tab":"Positioning","list_tab":"List","border_tab":"Border","box_tab":"Box","block_tab":"Block","background_tab":"Background","text_tab":"Text",apply:"Apply",title:"Edit CSS Style",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibility","positioning_type":"Type",position:"Position","bullet_image":"Bullet image","list_type":"Type",color:"Color",height:"Height",width:"Width",style:"Style",margin:"Margin",left:"Left",bottom:"Bottom",right:"Right",top:"Top",same:"Same for all",padding:"Padding","box_clear":"Clear","box_float":"Float","box_height":"Height","box_width":"Width","block_display":"Display","block_whitespace":"Whitespace","block_text_indent":"Text indent","block_text_align":"Text align","block_vertical_alignment":"Vertical alignment","block_letterspacing":"Letter spacing","block_wordspacing":"Word spacing","background_vpos":"Vertical position","background_hpos":"Horizontal position","background_attachment":"Attachment","background_repeat":"Repeat","background_image":"Background image","background_color":"Background color","text_none":"none","text_blink":"blink","text_case":"Case","text_striketrough":"strikethrough","text_underline":"underline","text_overline":"overline","text_decoration":"Decoration","text_color":"Color",text:"Text",background:"Background",block:"Block",box:"Box",border:"Border",list:"List"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/pt_dlg.js b/program/js/tiny_mce/plugins/style/langs/pt_dlg.js
deleted file mode 100644
index 21c6b5e16..000000000
--- a/program/js/tiny_mce/plugins/style/langs/pt_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('pt.style_dlg',{"text_lineheight":"Altura da linha","text_variant":"Variante","text_style":"Estilo","text_weight":"Peso","text_size":"Tamanho","text_font":"Fonte","text_props":"Texto","positioning_tab":"Posicionamento","list_tab":"Lista","border_tab":"Limites","box_tab":"Caixa","block_tab":"Bloco","background_tab":"Fundo","text_tab":"Texto",apply:"Aplicar",title:"Editar CSS",clip:"Clip",placement:"Posicionamento",overflow:"Overflow",zindex:"Z-index",visibility:"Visibilidade","positioning_type":"Tipo",position:"Posi\u00e7\u00e3o","bullet_image":"Imagem de lista","list_type":"Tipo",color:"Cor",height:"Altura",width:"Largura",style:"Estilo",margin:"Margem",left:"Esquerda",bottom:"Abaixo",right:"Direita",top:"Topo",same:"O mesmo para todos",padding:"Padding","box_clear":"Clear","box_float":"Float","box_height":"Altura","box_width":"Largura","block_display":"Display","block_whitespace":"Espa\u00e7o","block_text_indent":"Indent","block_text_align":"Alinhamento de texto","block_vertical_alignment":"Alinhamento vertical","block_letterspacing":"Espa\u00e7amento de letras","block_wordspacing":"Espa\u00e7amento de palavras","background_vpos":"Posi\u00e7\u00e3o vertical","background_hpos":"Posi\u00e7\u00e3o horizontal","background_attachment":"Fixar","background_repeat":"Repetir","background_image":"Imagem de fundo","background_color":"Cor de fundo","text_none":"nenhum","text_blink":"Piscar","text_case":"Mai\u00fascula","text_striketrough":"Riscado","text_underline":"Sublinhado","text_overline":"Sobrelinha","text_decoration":"Decora\u00e7\u00e3o","text_color":"Cor",text:"Texto",background:"Fundo",block:"Bloco",box:"Caixa",border:"Borda",list:"Lista"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/ro_dlg.js b/program/js/tiny_mce/plugins/style/langs/ro_dlg.js
deleted file mode 100644
index 98a160574..000000000
--- a/program/js/tiny_mce/plugins/style/langs/ro_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ro.style_dlg',{"text_lineheight":"\u00cen\u0103l\u021bime linie","text_variant":"Variant\u0103","text_style":"Stil","text_weight":"Greutate","text_size":"M\u0103rime","text_font":"Font","text_props":"Text","positioning_tab":"Pozi\u021bionare","list_tab":"List\u0103","border_tab":"Bordur\u0103","box_tab":"Box","block_tab":"Block","background_tab":"Fundal","text_tab":"Text",apply:"Aplic\u0103",title:"Editare CSS",clip:"Clip",placement:"Plasament",overflow:"Overflow",zindex:"Z-index",visibility:"Vizibilitate","positioning_type":"Tip",position:"Pozi\u021bionare","bullet_image":"Imagine","list_type":"Tip",color:"Culoare",height:"\u00cen\u0103l\u021bime",width:"L\u0103\u021bime",style:"Stil",margin:"Margini",left:"St\u00e2nga",bottom:"Jos",right:"Dreapta",top:"Sus",same:"La fel pentru toate",padding:"Margini interne","box_clear":"Normal\u0103","box_float":"Plutitoare","box_height":"\u00cen\u0103l\u021bime","box_width":"L\u0103\u0163ime","block_display":"Afi\u0219are","block_whitespace":"Spa\u0163iu alb","block_text_indent":"Indentare text","block_text_align":"Aliniere text","block_vertical_alignment":"Aliniere vertical\u0103","block_letterspacing":"Spa\u021biere litere","block_wordspacing":"Spa\u021biere cuvinte","background_vpos":"Pozi\u021bionare vertical\u0103","background_hpos":"Pozi\u021bionare orizontal\u0103","background_attachment":"Ata\u0219ament","background_repeat":"Repet\u0103","background_image":"Imagine fundal","background_color":"Culoare fundal","text_none":"Nici unul","text_blink":"Clipire","text_case":"Caz","text_striketrough":"T\u0103iere","text_underline":"Sub linie","text_overline":"Peste linie","text_decoration":"Decora\u021bii","text_color":"Culoare",text:"Text",background:"Fundal",block:"Bloc",box:"Cutie",border:"Bordur\u0103",list:"List\u0103"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/ru_dlg.js b/program/js/tiny_mce/plugins/style/langs/ru_dlg.js
deleted file mode 100644
index 857077c93..000000000
--- a/program/js/tiny_mce/plugins/style/langs/ru_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ru.style_dlg',{"text_lineheight":"\u0412\u044b\u0441\u043e\u0442\u0430 \u0441\u0442\u0440\u043e\u043a\u0438","text_variant":"\u0412\u0430\u0440\u0438\u0430\u043d\u0442","text_style":"\u0421\u0442\u0438\u043b\u044c","text_weight":"\u0422\u043e\u043b\u0449\u0438\u043d\u0430","text_size":"\u0420\u0430\u0437\u043c\u0435\u0440","text_font":"\u0428\u0440\u0438\u0444\u0442","text_props":"\u0422\u0435\u043a\u0441\u0442","positioning_tab":"\u041f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435","list_tab":"\u0421\u043f\u0438\u0441\u043e\u043a","border_tab":"\u0413\u0440\u0430\u043d\u0438\u0446\u0430","box_tab":"\u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440","block_tab":"\u0411\u043b\u043e\u043a","background_tab":"\u0424\u043e\u043d","text_tab":"\u0422\u0435\u043a\u0441\u0442",apply:"\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c",title:"\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 CSS \u0441\u0442\u0438\u043b\u044f",clip:"\u041e\u0442\u0441\u0435\u0447\u0435\u043d\u0438\u0435",placement:"\u0420\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435",overflow:"\u041f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435",zindex:"Z-\u0438\u043d\u0434\u0435\u043a\u0441",visibility:"\u0412\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u044c","positioning_type":"\u0422\u0438\u043f",position:"\u041f\u043e\u0437\u0438\u0446\u0438\u044f","bullet_image":"\u041c\u0430\u0440\u043a\u0435\u0440","list_type":"\u0422\u0438\u043f",color:"\u0426\u0432\u0435\u0442",height:"\u0412\u044b\u0441\u043e\u0442\u0430",width:"\u0428\u0438\u0440\u0438\u043d\u0430",style:"\u0421\u0442\u0438\u043b\u044c",margin:"\u041e\u0442\u0441\u0442\u0443\u043f",left:"\u0421\u043b\u0435\u0432\u0430",bottom:"\u0421\u043d\u0438\u0437\u0443",right:"\u0421\u043f\u0440\u0430\u0432\u0430",top:"\u0412\u0432\u0435\u0440\u0445",same:"\u041e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e \u0434\u043b\u044f \u0432\u0441\u0435\u0445",padding:"\u041f\u043e\u043b\u044f","box_clear":"\u042f\u0432\u043d\u044b\u0439","box_float":"\u041f\u043b\u0430\u0432\u0430\u044e\u0449\u0438\u0439","box_height":"\u0412\u044b\u0441\u043e\u0442\u0430","box_width":"\u0428\u0438\u0440\u0438\u043d\u0430","block_display":"\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435","block_whitespace":"\u041f\u0440\u043e\u0431\u0435\u043b","block_text_indent":"\u041e\u0442\u0441\u0442\u0443\u043f \u0442\u0435\u043a\u0441\u0442\u0430","block_text_align":"\u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430","block_vertical_alignment":"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435","block_letterspacing":"\u041e\u0442\u0441\u0442\u0443\u043f\u044b \u043c\u0435\u0436\u0434\u0443 \u0431\u0443\u043a\u0432\u0430\u043c\u0438","block_wordspacing":"\u041e\u0442\u0441\u0442\u0443\u043f\u044b \u043c\u0435\u0436\u0434\u0443 \u0441\u043b\u043e\u0432\u0430\u043c\u0438","background_vpos":"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u044f","background_hpos":"\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u044f","background_attachment":"\u041f\u0440\u0438\u0432\u044f\u0437\u043a\u0430","background_repeat":"\u041f\u043e\u0432\u0442\u043e\u0440","background_image":"\u0424\u043e\u043d\u043e\u0432\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435","background_color":"\u0426\u0432\u0435\u0442 \u0444\u043e\u043d\u0430","text_none":"\u0411\u0435\u0437 \u0432\u0441\u0435\u0433\u043e","text_blink":"\u041c\u0435\u0440\u0446\u0430\u044e\u0449\u0438\u0439","text_case":"\u0420\u0435\u0433\u0438\u0441\u0442\u0440","text_striketrough":"\u0417\u0430\u0447\u0435\u0440\u043a\u043d\u0443\u0442\u044b\u0439","text_underline":"\u041f\u043e\u0434\u0447\u0435\u0440\u043a\u043d\u0443\u0442\u044b\u0439","text_overline":"\u0421 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0447\u0435\u0440\u0442\u043e\u0439","text_decoration":"\u041e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u0435","text_color":"\u0426\u0432\u0435\u0442",text:"\u0422\u0435\u043a\u0441\u0442",background:"\u0424\u043e\u043d",block:"\u0411\u043b\u043e\u043a",box:"\u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440",border:"\u0413\u0440\u0430\u043d\u0438\u0446\u0430",list:"\u0421\u043f\u0438\u0441\u043e\u043a"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/si_dlg.js b/program/js/tiny_mce/plugins/style/langs/si_dlg.js
deleted file mode 100644
index 3d6725022..000000000
--- a/program/js/tiny_mce/plugins/style/langs/si_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('si.style_dlg',{"text_lineheight":"Line height","text_variant":"Variant","text_style":"Style","text_weight":"Weight","text_size":"Size","text_font":"Font","text_props":"Text","positioning_tab":"Positioning","list_tab":"List","border_tab":"Border","box_tab":"Box","block_tab":"Block","background_tab":"Background","text_tab":"Text",apply:"Apply",title:"Edit CSS Style",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibility","positioning_type":"Type",position:"Position","bullet_image":"Bullet image","list_type":"Type",color:"Color",height:"Height",width:"Width",style:"Style",margin:"Margin",left:"Left",bottom:"Bottom",right:"Right",top:"Top",same:"Same for all",padding:"Padding","box_clear":"Clear","box_float":"Float","box_height":"Height","box_width":"Width","block_display":"Display","block_whitespace":"Whitespace","block_text_indent":"Text indent","block_text_align":"Text align","block_vertical_alignment":"Vertical alignment","block_letterspacing":"Letter spacing","block_wordspacing":"Word spacing","background_vpos":"Vertical position","background_hpos":"Horizontal position","background_attachment":"Attachment","background_repeat":"Repeat","background_image":"Background image","background_color":"Background color","text_none":"none","text_blink":"blink","text_case":"Case","text_striketrough":"strikethrough","text_underline":"underline","text_overline":"overline","text_decoration":"Decoration","text_color":"Color",text:"Text",background:"Background",block:"Block",box:"Box",border:"Border",list:"List"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/sk_dlg.js b/program/js/tiny_mce/plugins/style/langs/sk_dlg.js
deleted file mode 100644
index d184cd34e..000000000
--- a/program/js/tiny_mce/plugins/style/langs/sk_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sk.style_dlg',{"text_lineheight":"V\u00fd\u0161ka riadkov","text_variant":"Varianta","text_style":"\u0160t\u00fdl textu","text_weight":"Tu\u010dnos\u0165 p\u00edsma","text_size":"Ve\u013ekos\u0165","text_font":"P\u00edsmo","text_props":"Text","positioning_tab":"Umiestnenie","list_tab":"Zoznam","border_tab":"Or\u00e1movanie","box_tab":"Box","block_tab":"Blok","background_tab":"Pozadie","text_tab":"Text",apply:"Pou\u017ei\u0165",title:"Upravi\u0165 CSS \u0161t\u00fdl",clip:"Orezanie (clip)",placement:"Umiestnenie",overflow:"Prete\u010denie (overflow)",zindex:"Z-index",visibility:"Vidite\u013enos\u0165","positioning_type":"Typ",position:"Umiestnenie","bullet_image":"\u0160t\u00fdl odr\u00e1\u017eok","list_type":"Typ",color:"Farba",height:"V\u00fd\u0161ka",width:"\u0160\u00edrka",style:"\u0160t\u00fdl",margin:"Okraje (margin)",left:"V\u013eavo",bottom:"Dole",right:"Vpravo",top:"Hore",same:"Rovnak\u00e9 pre v\u0161etky",padding:"Odsadenie (padding)","box_clear":"Vy\u010disti\u0165","box_float":"Pl\u00e1vaj\u00faci","box_height":"V\u00fd\u0161ka","box_width":"\u0160\u00edrka","block_display":"Blokov\u00e9 zobrazenie","block_whitespace":"Zalamovanie textu","block_text_indent":"Odsadenie textu","block_text_align":"Zarovnanie textu","block_vertical_alignment":"Vertik\u00e1lne zarovnanie","block_letterspacing":"Rozstup znakov","block_wordspacing":"Rozstup slov","background_vpos":"Vertik\u00e1lne umiestnenie","background_hpos":"Horizont\u00e1lne umiestnenie","background_attachment":"Rolovanie","background_repeat":"Opakovanie","background_image":"Obr\u00e1zok pozadia","background_color":"Farba pozadia","text_none":"\u017eiadna","text_blink":"blikanie","text_case":"Ve\u013ek\u00e9 p\u00edsmen\u00e1","text_striketrough":"pre\u010diarknutie","text_underline":"pod\u010diarknutie","text_overline":"nad\u010diarknutie","text_decoration":"Dekor\u00e1cia","text_color":"Farba",text:"Text",background:"Pozadie",block:"Blok",box:"Box",border:"Or\u00e1movanie",list:"Zoznam"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/sl_dlg.js b/program/js/tiny_mce/plugins/style/langs/sl_dlg.js
deleted file mode 100644
index e2b8f2e1d..000000000
--- a/program/js/tiny_mce/plugins/style/langs/sl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sl.style_dlg',{"text_lineheight":"Vi\u0161ina vrstice","text_variant":"Razli\u010dica","text_style":"Slog","text_weight":"Ute\u017e","text_size":"Velikost","text_font":"Pisava","text_props":"Besedilo","positioning_tab":"Polo\u017eaj","list_tab":"Seznam","border_tab":"Obroba","box_tab":"Okvir","block_tab":"Blok","background_tab":"Ozadje","text_tab":"Besedilo",apply:"Uporabi",title:"Uredi sloge CSS",clip:"Obre\u017ei",placement:"Polo\u017eaj",overflow:"Prelivanje",zindex:"Z-indeks",visibility:"Vidnost","positioning_type":"Vrsta",position:"Polo\u017eaj","bullet_image":"Slika alineje","list_type":"Vrsta",color:"Barva",height:"Vi\u0161ina",width:"\u0160irina",style:"Slog",margin:"Rob",left:"Levo",bottom:"Spodaj",right:"Desno",top:"Zgoraj",same:"Enako za vse",padding:"Podlaganje","box_clear":"\u010cisto","box_float":"Plavojo\u010de","box_height":"Vi\u0161ina","box_width":"\u0160irina","block_display":"Prikaz","block_whitespace":"Beli prostor","block_text_indent":"Zamik besedila","block_text_align":"Poravnava besedila","block_vertical_alignment":"Navpi\u010dna poravnava","block_letterspacing":"Razmik znakov","block_wordspacing":"Razmik besed","background_vpos":"Navpi\u010dni polo\u017eaj","background_hpos":"Vodoravni polo\u017eaj","background_attachment":"Priponka","background_repeat":"Ponavljaj","background_image":"Slika ozadja","background_color":"Barva ozadja","text_none":"brez","text_blink":"utripajo\u010de","text_case":"Velikost","text_striketrough":"pre\u010drtano","text_underline":"pod\u010drtano","text_overline":"nad\u010drtano","text_decoration":"Dekoracija","text_color":"Barva",text:"Besedilo",background:"Ozadje",block:"Blok",box:"Okvir",border:"Obroba",list:"Seznam"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/sq_dlg.js b/program/js/tiny_mce/plugins/style/langs/sq_dlg.js
deleted file mode 100644
index 01517670d..000000000
--- a/program/js/tiny_mce/plugins/style/langs/sq_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sq.style_dlg',{"text_lineheight":"Gjat\u00ebsia e linj\u00ebs","text_variant":"Varianti","text_style":"Stili","text_weight":"Pesha","text_size":"Madh\u00ebsia","text_font":"G\u00ebrma","text_props":"Teksti","positioning_tab":"Pozicionimi","list_tab":"Lista","border_tab":"Korniza","box_tab":"Kuti","block_tab":"Bllok","background_tab":"Sfondi","text_tab":"Teksti",apply:"Apliko",title:"Edito t\u00eb gjitha stilet",clip:"Prerja",placement:"Vendosja",overflow:"Mbivendosja",zindex:"Indeksi Z",visibility:"Shikueshm\u00ebria","positioning_type":"Tipi",position:"Pozicioni","bullet_image":"Foto e List\u00ebs","list_type":"Tipi",color:"Ngjyra",height:"Gjat\u00ebsia",width:"Gjer\u00ebsia",style:"Stili",margin:"Hap\u00ebsira",left:"Majtas",bottom:"Fund",right:"Djathtas",top:"Krye",same:"E nj\u00ebjt\u00eb p\u00ebr t\u00eb gjitha",padding:"Hap\u00ebsira e br\u00ebndshme","box_clear":"Pastro","box_float":"Pluskimi","box_height":"Gjat\u00ebsia","box_width":"Gjer\u00ebsia","block_display":"Shfaqja","block_whitespace":"Hap\u00ebsira bosh","block_text_indent":"Kryerradha","block_text_align":"Drejtimi i tekstit","block_vertical_alignment":"Drejtimi vertikal","block_letterspacing":"Hap\u00ebsira e g\u00ebrmave","block_wordspacing":"Hap\u00ebsira e fjal\u00ebve","background_vpos":"Pozicionimi vertikal","background_hpos":"Pozicionimi horizontal","background_attachment":"Bashk\u00ebngjitja","background_repeat":"P\u00ebrs\u00ebritja","background_image":"Foto e Sfondit","background_color":"Ngjyra e Sfondit","text_none":"Asnj\u00eb","text_blink":"Fik-Ndiz","text_case":"Madh\u00ebsia e g\u00ebrm\u00ebs","text_striketrough":"N\u00eb mes","text_underline":"N\u00ebn linj\u00eb","text_overline":"Mbi linj\u00eb","text_decoration":"Zbukurimi","text_color":"Ngjyra",text:"Teskt",background:"Sfondi",block:"Bllok",box:"Kuti",border:"Korniz\u00eb",list:"List\u00eb"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/sr_dlg.js b/program/js/tiny_mce/plugins/style/langs/sr_dlg.js
deleted file mode 100644
index 8765f5bc8..000000000
--- a/program/js/tiny_mce/plugins/style/langs/sr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sr.style_dlg',{"text_lineheight":"Visina reda","text_variant":"Varijanta","text_style":"Oblik","text_weight":"Podebljanost","text_size":"Veli\u010dina","text_font":"Pismo","text_props":"Tekst","positioning_tab":"Pozicioniranje","list_tab":"Nabrajanje","border_tab":"Ivice","box_tab":"Okvir","block_tab":"Blok teksta","background_tab":"Pozadina","text_tab":"Tekst",apply:"Primeni",title:"Uredi CSS stil",clip:"Odsecanje (clip)",placement:"Postavljanje (placement)",overflow:"Prelivanje (overflow)",zindex:"Z-index",visibility:"Vidljivost","positioning_type":"Vrsta",position:"Pozicija","bullet_image":"Slika (za znak)","list_type":"Tip znaka",color:"Boja",height:"Visina",width:"\u0160irina",style:"Oblik",margin:"Margine",left:"Levo",bottom:"Dole",right:"Desno",top:"Gore",same:"Isto za sve",padding:"Dopuna (padding)","box_clear":"O\u010disti (clear)","box_float":"Pliva (float)","box_height":"Visina","box_width":"\u0160irina","block_display":"Prikaz (display)","block_whitespace":"Razmaci (white-space)","block_text_indent":"Uvla\u010denje teksta","block_text_align":"Poravnanje teksta","block_vertical_alignment":"Vertikalno poravnanje","block_letterspacing":"Razmak slova","block_wordspacing":"Razmak re\u010di","background_vpos":"Vertikalna pozicija","background_hpos":"Horizontalna pozicija","background_attachment":"Ka\u010denje","background_repeat":"Ponavljanje","background_image":"Slika u pozadini","background_color":"Boja pozadine","text_none":"ni\u0161ta","text_blink":"treperi","text_case":"Velika/Mala slova","text_striketrough":"precrtano","text_underline":"podvu\u010deno","text_overline":"nadvu\u010deno","text_decoration":"Dekoracija","text_color":"Boja",text:"Text",background:"Background",block:"Block",box:"Box",border:"Border",list:"List"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/sv_dlg.js b/program/js/tiny_mce/plugins/style/langs/sv_dlg.js
deleted file mode 100644
index 4a529541e..000000000
--- a/program/js/tiny_mce/plugins/style/langs/sv_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sv.style_dlg',{"text_lineheight":"Radh\u00f6jd","text_variant":"Variant","text_style":"Stil","text_weight":"Tjocklek","text_size":"Storlek","text_font":"Typsnitt","text_props":"Text","positioning_tab":"Positionering","list_tab":"Listor","border_tab":"Ramar","box_tab":"Box","block_tab":"Block","background_tab":"Bakgrund","text_tab":"Text",apply:"Applicera",title:"Redigera inline CSS",clip:"Besk\u00e4rning",placement:"Placering",overflow:"\u00d6\u0096verfl\u00f6de",zindex:"Z-index",visibility:"Synlighet","positioning_type":"Positionstyp",position:"Position","bullet_image":"Punktbild","list_type":"Listtyp",color:"F\u00e4rg",height:"H\u00f6jd",width:"Bredd",style:"Stil",margin:"Marginal",left:"V\u00e4nster",bottom:"Botten",right:"H\u00f6ger",top:"Toppen",same:"Samma f\u00f6r alla",padding:"Padding","box_clear":"Rensa","box_float":"Flyt","box_height":"H\u00f6jd","box_width":"Bredd","block_display":"Display","block_whitespace":"Whitespace","block_text_indent":"Textindrag","block_text_align":"Textjustering","block_vertical_alignment":"Vertikal justering","block_letterspacing":"Teckenmellanrum","block_wordspacing":"Ordavbrytning","background_vpos":"Vertikal position","background_hpos":"Horisontell position","background_attachment":"F\u00e4stpunkt","background_repeat":"Upprepning","background_image":"Bakgrundsbild","background_color":"Bakgrundsf\u00e4rg","text_none":"Inget","text_blink":"Blinka","text_case":"Sm\u00e5/stora","text_striketrough":"Genomstruken","text_underline":"Understruken","text_overline":"\u00d6verstruken","text_decoration":"Dekoration","text_color":"F\u00e4rg",text:"Text",background:"Bakgrund",block:"Block",box:"Box",border:"Ram",list:"Lista"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/ta_dlg.js b/program/js/tiny_mce/plugins/style/langs/ta_dlg.js
deleted file mode 100644
index 4968e4563..000000000
--- a/program/js/tiny_mce/plugins/style/langs/ta_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ta.style_dlg',{"text_lineheight":"Line height","text_variant":"Variant","text_style":"Style","text_weight":"Weight","text_size":"Size","text_font":"Font","text_props":"Text","positioning_tab":"Positioning","list_tab":"List","border_tab":"Border","box_tab":"Box","block_tab":"Block","background_tab":"Background","text_tab":"Text",apply:"Apply",title:"Edit CSS Style",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibility","positioning_type":"Type",position:"Position","bullet_image":"Bullet image","list_type":"Type",color:"Color",height:"Height",width:"Width",style:"Style",margin:"Margin",left:"Left",bottom:"Bottom",right:"Right",top:"Top",same:"Same for all",padding:"Padding","box_clear":"Clear","box_float":"Float","box_height":"Height","box_width":"Width","block_display":"Display","block_whitespace":"Whitespace","block_text_indent":"Text indent","block_text_align":"Text align","block_vertical_alignment":"Vertical alignment","block_letterspacing":"Letter spacing","block_wordspacing":"Word spacing","background_vpos":"Vertical position","background_hpos":"Horizontal position","background_attachment":"Attachment","background_repeat":"Repeat","background_image":"Background image","background_color":"Background color","text_none":"none","text_blink":"blink","text_case":"Case","text_striketrough":"strikethrough","text_underline":"underline","text_overline":"overline","text_decoration":"Decoration","text_color":"Color",text:"Text",background:"Background",block:"Block",box:"Box",border:"Border",list:"List"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/th_dlg.js b/program/js/tiny_mce/plugins/style/langs/th_dlg.js
deleted file mode 100644
index 264f85ada..000000000
--- a/program/js/tiny_mce/plugins/style/langs/th_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('th.style_dlg',{"text_lineheight":"\u0e23\u0e30\u0e22\u0e30\u0e2b\u0e48\u0e32\u0e07\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14","text_variant":"Variant","text_style":"\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a","text_weight":"\u0e19\u0e49\u0e33\u0e2b\u0e19\u0e31\u0e01","text_size":"\u0e02\u0e19\u0e32\u0e14","text_font":"\u0e41\u0e1a\u0e1a\u0e2d\u0e31\u0e01\u0e29\u0e23","text_props":"\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21","positioning_tab":"\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07","list_tab":"\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23","border_tab":"\u0e02\u0e2d\u0e1a","box_tab":"\u0e01\u0e25\u0e48\u0e2d\u0e07","block_tab":"Block","background_tab":"\u0e1e\u0e37\u0e49\u0e19\u0e2b\u0e25\u0e31\u0e07","text_tab":"\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21",apply:"\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19",title:"\u0e41\u0e01\u0e49\u0e44\u0e02\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a CSS",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibility","positioning_type":"Type",position:"Position","bullet_image":"Bullet image","list_type":"Type",color:"\u0e2a\u0e35",height:"\u0e2a\u0e39\u0e07",width:"\u0e01\u0e27\u0e49\u0e32\u0e07",style:"\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a",margin:"Margin",left:"\u0e0b\u0e49\u0e32\u0e22",bottom:"\u0e25\u0e48\u0e32\u0e07",right:"\u0e02\u0e27\u0e32",top:"\u0e1a\u0e19",same:"Same for all",padding:"Padding","box_clear":"\u0e25\u0e49\u0e32\u0e07","box_float":"\u0e25\u0e2d\u0e22","box_height":"\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e39\u0e07","box_width":"\u0e04\u0e27\u0e32\u0e21\u0e01\u0e27\u0e49\u0e32\u0e07","block_display":"\u0e41\u0e2a\u0e14\u0e07\u0e1c\u0e25","block_whitespace":"Whitespace","block_text_indent":"\u0e22\u0e48\u0e2d\u0e2b\u0e19\u0e49\u0e32\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21","block_text_align":"\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21","block_vertical_alignment":"\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07\u0e41\u0e19\u0e27\u0e15\u0e31\u0e49\u0e07","block_letterspacing":"\u0e40\u0e27\u0e49\u0e19\u0e23\u0e30\u0e22\u0e30\u0e2b\u0e48\u0e32\u0e07\u0e0a\u0e48\u0e2d\u0e07\u0e44\u0e1f","block_wordspacing":"\u0e40\u0e27\u0e49\u0e19\u0e23\u0e30\u0e22\u0e30\u0e2b\u0e48\u0e32\u0e07\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e04\u0e33","background_vpos":"\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07\u0e41\u0e19\u0e27\u0e15\u0e31\u0e49\u0e07","background_hpos":"\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07\u0e41\u0e19\u0e27\u0e19\u0e2d\u0e19","background_attachment":"\u0e2a\u0e34\u0e48\u0e07\u0e17\u0e35\u0e48\u0e41\u0e19\u0e1a","background_repeat":"\u0e0b\u0e49\u0e33","background_image":"\u0e23\u0e39\u0e1b\u0e1e\u0e37\u0e49\u0e19\u0e2b\u0e25\u0e31\u0e07","background_color":"\u0e2a\u0e35\u0e1e\u0e37\u0e49\u0e19\u0e2b\u0e25\u0e31\u0e07","text_none":"\u0e44\u0e21\u0e48\u0e21\u0e35","text_blink":"blink","text_case":"Case","text_striketrough":"strikethrough","text_underline":"\u0e02\u0e35\u0e14\u0e40\u0e2a\u0e49\u0e19\u0e43\u0e15\u0e49","text_overline":"overline","text_decoration":"Decoration","text_color":"\u0e2a\u0e35",text:"\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21",background:"\u0e1e\u0e37\u0e49\u0e19\u0e2b\u0e25\u0e31\u0e07",box:"\u0e01\u0e25\u0e48\u0e2d\u0e07",border:"\u0e02\u0e2d\u0e1a",list:"\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23",block:"Block"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/tr_dlg.js b/program/js/tiny_mce/plugins/style/langs/tr_dlg.js
deleted file mode 100644
index bc12209f3..000000000
--- a/program/js/tiny_mce/plugins/style/langs/tr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('tr.style_dlg',{"text_lineheight":"\u00c7izgi y\u00fcksekli\u011fi","text_variant":"De\u011fi\u015fken","text_style":"Stil","text_weight":"Kal\u0131nl\u0131k","text_size":"Boyut","text_font":"Yaz\u0131 tipi","text_props":"Metin","positioning_tab":"Konumland\u0131rma","list_tab":"Listele","border_tab":"Kenarl\u0131k","box_tab":"Kutu","block_tab":"Blok","background_tab":"Arkaplan","text_tab":"Metin",apply:"Uygula",title:"CSS Stilini D\u00fczenle",clip:"K\u0131rp",placement:"Yerle\u015ftir",overflow:"Ta\u015fma",zindex:"Z-indeksi",visibility:"G\u00f6r\u00fcn\u00fcrl\u00fck","positioning_type":"Tip",position:"Konum","bullet_image":"Madde imi resmi","list_type":"Tip",color:"Renk",height:"Y\u00fckseklik",width:"Geni\u015flik",style:"Stil",margin:"Kenar bo\u015flu\u011fu",left:"Sol",bottom:"Alt",right:"Sa\u011f",top:"\u00dcst",same:"T\u00fcm\u00fc i\u00e7in",padding:"Dolgu","box_clear":"Serbest","box_float":"Kayan","box_height":"Y\u00fckseklik","box_width":"Geni\u015flik","block_display":"G\u00f6r\u00fcnt\u00fcle","block_whitespace":"Bo\u015fluk","block_text_indent":"Metnin girintisini art\u0131r","block_text_align":"Metin hizala","block_vertical_alignment":"Dikey hizalama","block_letterspacing":"harf bo\u015flu\u011fu","block_wordspacing":"Kelime bo\u015flu\u011fu","background_vpos":"Dikey konum","background_hpos":"Yatay konum","background_attachment":"Eklenti","background_repeat":"Tekrarla","background_image":"Arkaplan resmi","background_color":"Arkaplan rengi","text_none":"hi\u00e7biri","text_blink":"yan\u0131p s\u00f6nen","text_case":"Ko\u015ful","text_striketrough":"\u00fcst\u00fc \u00e7izgili","text_underline":"alt \u00e7izgi","text_overline":"\u00fcst \u00e7izgi","text_decoration":"Dekorasyon","text_color":"Renk",text:"Yaz\u0131",background:"Arkaplan",block:"Blok",box:"Kutu",border:"S\u0131n\u0131r",list:"Liste"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/uk_dlg.js b/program/js/tiny_mce/plugins/style/langs/uk_dlg.js
deleted file mode 100644
index 4c07a44c7..000000000
--- a/program/js/tiny_mce/plugins/style/langs/uk_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('uk.style_dlg',{"text_lineheight":"\u0412\u0438\u0441\u043e\u0442\u0430 \u0440\u044f\u0434\u043a\u0443","text_variant":"\u0412\u0430\u0440\u0456\u0430\u043d\u0442","text_style":"\u0421\u0442\u0438\u043b\u044c","text_weight":"\u0422\u043e\u0432\u0449\u0438\u043d\u0430","text_size":"\u0420\u043e\u0437\u043c\u0456\u0440","text_font":"\u0428\u0440\u0438\u0444\u0442","text_props":"\u0422\u0435\u043a\u0441\u0442","positioning_tab":"\u041f\u043e\u0437\u0438\u0446\u0456\u043e\u043d\u0443\u0432\u0430\u043d\u043d\u044f","list_tab":"\u0421\u043f\u0438\u0441\u043e\u043a","border_tab":"\u0420\u0430\u043c\u043a\u0430","box_tab":"\u042f\u0449\u0438\u043a(box)","block_tab":"\u0411\u043b\u043e\u043a","background_tab":"\u0424\u043e\u043d","text_tab":"\u0422\u0435\u043a\u0441\u0442",apply:"\u0417\u0430\u0441\u0442\u043e\u0441\u0443\u0432\u0430\u0442\u0438",title:"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u043d\u043d\u044f CSS \u0441\u0442\u0438\u043b\u044e",clip:"\u0421\u043a\u0440\u0456\u043f\u043b\u0435\u043d\u043d\u044f",placement:"\u0420\u043e\u0437\u043c\u0456\u0449\u0435\u043d\u043d\u044f",overflow:"\u041f\u0435\u0440\u0435\u043f\u043e\u0432\u043d\u0435\u043d\u043d\u044f",zindex:"Z-\u0456\u043d\u0434\u0435\u043a\u0441",visibility:"\u0412\u0438\u0434\u0438\u043c\u0456\u0441\u0442\u044c","positioning_type":"\u0422\u0438\u043f",position:"\u041f\u043e\u0437\u0438\u0446\u0456\u044f","bullet_image":"\u0417\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f \u0437\u043d\u0430\u0447\u043a\u0430 \u0432 \u0441\u043f\u0438\u0441\u043a\u0443","list_type":"\u0422\u0438\u043f",color:"\u041a\u043e\u043b\u0456\u0440",height:"\u0412\u0438\u0441\u043e\u0442\u0430",width:"\u0428\u0438\u0440\u0438\u043d\u0430",style:"\u0421\u0442\u0438\u043b\u044c",margin:"Margin",left:"\u041b\u0456\u0432\u043e\u0440\u0443\u0447",bottom:"\u0417\u043d\u0438\u0437\u0443",right:"\u041f\u0440\u0430\u0432\u043e\u0440\u0443\u0447",top:"\u0412\u0433\u043e\u0440\u0443",same:"\u041e\u0434\u043d\u0430\u043a\u043e\u0435 \u0434\u043b\u044f \u0432\u0441\u0456\u0445",padding:"\u0412\u043d\u0443\u0442\u0440\u0456\u0448\u043d\u0456\u0439 \u0432\u0456\u0434\u0441\u0442\u0443\u043f","box_clear":"\u041e\u0447\u0438\u0441\u0442\u043a\u0430","box_float":"\u041f\u043b\u0430\u0432\u0430\u043d\u043d\u044f","box_height":"\u0412\u0438\u0441\u043e\u0442\u0430","box_width":"\u0428\u0438\u0440\u0438\u043d\u0430","block_display":"\u0412\u0456\u0434\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u0438","block_whitespace":"\u041f\u0440\u043e\u0431\u0456\u043b","block_text_indent":"\u0412\u0456\u0434\u0441\u0442\u0443\u043f","block_text_align":"\u0412\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f \u0442\u0435\u043a\u0441\u0442\u0443","block_vertical_alignment":"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0435 \u0432\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f","block_letterspacing":"\u0412\u0456\u0434\u0441\u0442\u0443\u043f\u0438 \u043c\u0456\u0436 \u043b\u0456\u0442\u0435\u0440\u0430\u043c\u0438","block_wordspacing":"\u0412\u0456\u0434\u0441\u0442\u0443\u043f\u0438 \u043c\u0456\u0436 \u0441\u043b\u043e\u0432\u0430\u043c\u0438","background_vpos":"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0430 \u043f\u043e\u0437\u0438\u0446\u0456\u044f","background_hpos":"\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0430 \u043f\u043e\u0437\u0438\u0446\u0456\u044f","background_attachment":"\u0412\u043a\u043b\u0430\u0434\u0435\u043d\u043d\u044f","background_repeat":"\u041f\u043e\u0432\u0442\u043e\u0440","background_image":"\u0424\u043e\u043d\u043e\u0432\u0435 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f","background_color":"\u041a\u043e\u043b\u0456\u0440 \u0444\u043e\u043d\u0443","text_none":"\u041d\u0456\u0447\u043e\u0433\u043e","text_blink":"\u041c\u0435\u0440\u0435\u0445\u0442\u0456\u043d\u043d\u044f","text_case":"\u0420\u0435\u0433\u0456\u0441\u0442\u0440","text_striketrough":"\u0417\u0430\u043a\u0440\u0435\u0441\u043b\u0435\u043d\u0438\u0439","text_underline":"\u041f\u0456\u0434\u043a\u0440\u0435\u0441\u043b\u0435\u043d\u0438\u0439","text_overline":"\u041d\u0430\u0434\u043a\u0440\u0435\u0441\u043b\u0435\u043d\u0438\u0439","text_decoration":"\u041e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u043d\u044f","text_color":"\u041a\u043e\u043b\u0456\u0440",text:"\u0422\u0435\u043a\u0441\u0442",background:"\u0424\u043e\u043d",block:"\u0411\u043b\u043e\u043a",box:"\u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440",border:"\u0413\u0440\u0430\u043d\u0438\u0446\u0456",list:"\u0421\u043f\u0438\u0441\u043e\u043a"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/vi_dlg.js b/program/js/tiny_mce/plugins/style/langs/vi_dlg.js
deleted file mode 100644
index ee7136b66..000000000
--- a/program/js/tiny_mce/plugins/style/langs/vi_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('vi.style_dlg',{"text_lineheight":"Chi\u1ec1u cao \u0111\u01b0\u1eddng","text_variant":"Bi\u1ebfn \u0111\u1ed5i","text_style":"Ki\u1ec3u d\u00e1ng","text_weight":"Tr\u1ecdng l\u01b0\u1ee3ng","text_size":"K\u00edch c\u1ee1","text_font":"Ph\u00f4ng","text_props":"V\u0103n b\u1ea3n","positioning_tab":"V\u1ecb tr\u00ed","list_tab":"Danh s\u00e1ch","border_tab":"Vi\u1ec1n","box_tab":"H\u1ed9p","block_tab":"Kh\u1ed1i","background_tab":"N\u1ec1n","text_tab":"V\u0103n b\u1ea3n",apply:"\u00c1p d\u1ee5ng",title:"S\u1eeda ki\u1ec3u d\u00e1ng CSS",clip:"Ghim",placement:"S\u1eafp \u0111\u1eb7t",overflow:"Tr\u00e0n",zindex:"Ch\u1ec9 m\u1ee5c Z",visibility:"Nh\u00ecn th\u1ea5y","positioning_type":"Ki\u1ec3u",position:"V\u1ecb tr\u00ed","bullet_image":"\u1ea2nh Bullet","list_type":"Ki\u1ec3u",color:"M\u00e0u",height:"Chi\u1ec1u cao",width:"Chi\u1ec1u r\u1ed9ng",style:"Ki\u1ec3u",margin:"Bi\u00ean",left:"Tr\u00e1i",bottom:"D\u01b0\u1edbi",right:"Ph\u1ea3i",top:"Tr\u00ean",same:"\u00c1p d\u1ee5ng cho t\u1ea5t c\u1ea3",padding:"\u0110\u1ec7m l\u00f3t","box_clear":"L\u00e0m s\u1ea1ch","box_float":"N\u1ed5i","box_height":"Chi\u1ec1u cao","box_width":"Chi\u1ec1u r\u1ed9ng","block_display":"Hi\u1ec3n th\u1ecb","block_whitespace":"Kho\u1ea3ng tr\u1eafng","block_text_indent":"Th\u1ee5t d\u00f2ng v\u0103n b\u1ea3n","block_text_align":"Canh l\u1ec1 v\u0103n b\u1ea3n","block_vertical_alignment":"Canh l\u1ec1 d\u1ecdc","block_letterspacing":"Kho\u1ea3ng c\u00e1c k\u00fd t\u1ef1","block_wordspacing":"Kho\u1ea3ng c\u00e1c t\u1eeb","background_vpos":"V\u1ecb tr\u00ed d\u1ecdc","background_hpos":"V\u1ecb tr\u00ed ngang","background_attachment":"\u0110\u00ednh k\u00e8m","background_repeat":"L\u1eb7p l\u1ea1i","background_image":"\u1ea2nh n\u1ec1n","background_color":"M\u00e0u n\u1ec1n","text_none":"kh\u00f4ng","text_blink":"nh\u1ea5p nh\u00e1y","text_case":"Bo\u0323c","text_striketrough":"g\u1ea1ch xuy\u00ean","text_underline":"g\u1ea1ch d\u01b0\u1edbi","text_overline":"g\u1ea1ch tr\u00ean","text_decoration":"Trang tr\u00ed","text_color":"M\u00e0u",text:"Text",background:"Background",block:"Block",box:"Box",border:"Border",list:"List"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/zh-cn_dlg.js b/program/js/tiny_mce/plugins/style/langs/zh-cn_dlg.js
deleted file mode 100644
index c5fc08b1f..000000000
--- a/program/js/tiny_mce/plugins/style/langs/zh-cn_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('zh-cn.style_dlg',{"text_lineheight":"\u884c\u9ad8","text_variant":"\u53d8\u5f62","text_style":"\u6837\u5f0f","text_weight":"\u7c97\u7ec6","text_size":"\u5927\u5c0f","text_font":"\u5b57\u4f53","text_props":"\u6587\u672c","positioning_tab":"\u4f4d\u7f6e","list_tab":"\u5217\u8868","border_tab":"\u8fb9\u6846","box_tab":"Box","block_tab":"\u533a\u5757","background_tab":"\u80cc\u666f","text_tab":"\u6587\u672c",apply:"\u5e94\u7528",title:"\u7f16\u8f91CSS\u6837\u5f0f",clip:"\u526a\u8f91",placement:"\u653e\u7f6e",overflow:"\u6ea2\u51fa",zindex:"Z-Index",visibility:"\u53ef\u89c1","positioning_type":"\u7c7b\u578b",position:"\u4f4d\u7f6e","bullet_image":"\u56fe\u7247\u9879\u76ee\u7b26\u53f7","list_type":"\u7c7b\u578b",color:"\u989c\u8272",height:"\u9ad8\u5ea6",width:"\u5bbd\u5ea6",style:"\u6837\u5f0f",margin:"\u5916\u8fb9\u8ddd",left:"\u5de6",bottom:"\u4e0b",right:"\u53f3",top:"\u4e0a",same:"\u5168\u90e8\u76f8\u540c",padding:"\u5185\u8fb9\u8ddd","box_clear":"\u6e05\u9664\u6d6e\u52a8","box_float":"\u6d6e\u52a8","box_height":"\u9ad8\u5ea6","box_width":"\u5bbd\u5ea6","block_display":"\u663e\u793a","block_whitespace":"\u7a7a\u683c","block_text_indent":"\u6587\u5b57\u7f29\u6392","block_text_align":"\u6587\u5b57\u5bf9\u9f50","block_vertical_alignment":"\u5782\u76f4\u5bf9\u9f50","block_letterspacing":"\u5b57\u95f4\u8ddd","block_wordspacing":"\u8bcd\u95f4\u8ddd","background_vpos":"\u5782\u76f4\u4f4d\u7f6e","background_hpos":"\u6c34\u5e73\u4f4d\u7f6e","background_attachment":"\u9644\u4ef6","background_repeat":"\u91cd\u590d","background_image":"\u80cc\u666f\u56fe\u7247","background_color":"\u80cc\u666f\u989c\u8272","text_none":"\u65e0","text_blink":"\u95ea\u70c1","text_case":"\u5b57\u4f53\u5f62\u5f0f","text_striketrough":"\u5220\u9664\u7ebf","text_underline":"\u4e0b\u5212\u7ebf","text_overline":"\u4e0a\u5212\u7ebf","text_decoration":"\u5b57\u4f53\u88c5\u9970","text_color":"\u989c\u8272",text:"Text",background:"Background",block:"Block",box:"Box",border:"Border",list:"List"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/langs/zh-tw_dlg.js b/program/js/tiny_mce/plugins/style/langs/zh-tw_dlg.js
deleted file mode 100644
index 22774ebd7..000000000
--- a/program/js/tiny_mce/plugins/style/langs/zh-tw_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('zh-tw.style_dlg',{"text_lineheight":"\u6587\u5b57\u884c\u9ad8","text_variant":"\u7279\u6b8a\u5b57\u9ad4","text_style":"\u6a23\u5f0f","text_weight":"\u5b57\u9ad4\u7c97\u7d30","text_size":"\u5b57\u9ad4\u5927\u5c0f","text_font":"\u5b57\u9ad4","text_props":"\u5b57\u578b","positioning_tab":"\u4f4d\u7f6e","list_tab":"\u5217\u8868","border_tab":"\u908a\u6846","box_tab":"\u65b9\u584a","block_tab":"\u5340\u584a","background_tab":"\u80cc\u666f","text_tab":"\u5b57\u578b",apply:"\u5957\u7528",title:"\u7de8\u8f2f CSS \u6a23\u5f0f",clip:"\u526a\u8f2f",placement:"\u653e\u7f6e",overflow:"\u5377\u8ef8\u8a2d\u5b9a (Overflow)",zindex:"Z \u8ef8",visibility:"\u80fd\u898b\u5ea6","positioning_type":"\u5f62\u5f0f",position:"\u4f4d\u7f6e","bullet_image":"\u9805\u76ee\u7b26\u865f (\u6709\u5716\u7247)","list_type":"\u5f62\u5f0f",color:"\u984f\u8272",height:"\u9ad8\u5ea6",width:"\u5bec\u5ea6",style:"\u6a23\u5f0f",margin:"\u908a\u8ddd",left:"\u5de6\u908a",bottom:"\u4e0b\u65b9",right:"\u53f3\u908a",top:"\u4e0a\u65b9",same:"\u5168\u90e8\u4e00\u6a23",padding:"\u5167\u8ddd","box_clear":"\u79fb\u9664\u6d6e\u52d5\u6548\u679c","box_float":"\u6d6e\u52d5\u6548\u679c","box_height":"\u9ad8\u5ea6","box_width":"\u9ad8\u5ea6","block_display":"\u986f\u793a","block_whitespace":"\u7a7a\u683c","block_text_indent":"\u6587\u5b57\u7e2e\u6392","block_text_align":"\u6587\u5b57\u5c0d\u9f4a","block_vertical_alignment":"\u5782\u76f4\u5c0d\u9f4a","block_letterspacing":"\u6587\u5b57\u9593\u9694","block_wordspacing":"\u5b57\u8a5e\u9593\u9694","background_vpos":"\u5782\u76f4","background_hpos":"\u6c34\u5e73","background_attachment":"\u9644\u4ef6","background_repeat":"\u91cd\u8907","background_image":"\u80cc\u666f\u5716\u7247","background_color":"\u80cc\u666f\u984f\u8272","text_none":"\u7121","text_blink":"\u9583\u720d\u6548\u679c","text_case":"\u5b57\u9ad4\u6a23\u5f0f","text_striketrough":"\u522a\u9664\u7dda","text_underline":"\u5e95\u7dda","text_overline":"\u4e00\u689d\u7dda\u5728\u4e0a\u9762","text_decoration":"\u7dda\u689d\u6a23\u5f0f","text_color":"\u984f\u8272",text:"Text",background:"Background",block:"Block",box:"Box",border:"Border",list:"List"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/style/props.htm b/program/js/tiny_mce/plugins/style/props.htm
deleted file mode 100644
index 7dc087a30..000000000
--- a/program/js/tiny_mce/plugins/style/props.htm
+++ /dev/null
@@ -1,845 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#style_dlg.title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="../../utils/editable_selects.js"></script>
- <script type="text/javascript" src="../../utils/form_utils.js"></script>
- <script type="text/javascript" src="js/props.js"></script>
- <link href="css/props.css" rel="stylesheet" type="text/css" />
-</head>
-
-<body id="styleprops" style="display: none" role="application" aria-labelledby="app_title">
-<span id="app_title" style="display:none">{#style_dlg.title}</span>
-<form onsubmit="updateAction();return false;" action="#">
-<div class="tabs">
- <ul>
- <li id="text_tab" class="current" aria-controls="text_panel"><span><a href="javascript:mcTabs.displayTab('text_tab','text_panel');" onMouseDown="return false;">{#style_dlg.text_tab}</a></span></li>
- <li id="background_tab" aria-controls="background_panel"><span><a href="javascript:mcTabs.displayTab('background_tab','background_panel');" onMouseDown="return false;">{#style_dlg.background_tab}</a></span></li>
- <li id="block_tab" aria-controls="block_panel"><span><a href="javascript:mcTabs.displayTab('block_tab','block_panel');" onMouseDown="return false;">{#style_dlg.block_tab}</a></span></li>
- <li id="box_tab" aria-controls="box_panel"><span><a href="javascript:mcTabs.displayTab('box_tab','box_panel');" onMouseDown="return false;">{#style_dlg.box_tab}</a></span></li>
- <li id="border_tab" aria-controls="border_panel"><span><a href="javascript:mcTabs.displayTab('border_tab','border_panel');" onMouseDown="return false;">{#style_dlg.border_tab}</a></span></li>
- <li id="list_tab" aria-controls="list_panel"><span><a href="javascript:mcTabs.displayTab('list_tab','list_panel');" onMouseDown="return false;">{#style_dlg.list_tab}</a></span></li>
- <li id="positioning_tab" aria-controls="positioning_panel"><span><a href="javascript:mcTabs.displayTab('positioning_tab','positioning_panel');" onMouseDown="return false;">{#style_dlg.positioning_tab}</a></span></li>
- </ul>
-</div>
-
-<div class="panel_wrapper">
-<div id="text_panel" class="panel current">
- <fieldset>
- <legend>{#style_dlg.text}</legend>
- <table role="presentation" border="0" width="100%">
- <tr>
- <td><label for="text_font">{#style_dlg.text_font}</label></td>
- <td colspan="3">
- <select id="text_font" name="text_font" class="mceEditableSelect mceFocus"></select>
- </td>
- </tr>
- <tr>
- <td><label for="text_size">{#style_dlg.text_size}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><select id="text_size" name="text_size" class="mceEditableSelect"></select></td>
- <td>&nbsp;</td>
- <td>
- <label id="text_size_measurement_label" for="text_size_measurement" style="display: none; visibility: hidden;">Text Size Measurement Unit</label>
- <select id="text_size_measurement" name="text_size_measurement" aria-labelledby="text_size_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- <td><label for="text_weight">{#style_dlg.text_weight}</label></td>
- <td>
- <select id="text_weight" name="text_weight"></select>
- </td>
- </tr>
- <tr>
- <td><label for="text_style">{#style_dlg.text_style}</label></td>
- <td>
- <select id="text_style" name="text_style" class="mceEditableSelect"></select>
- </td>
- <td><label for="text_variant">{#style_dlg.text_variant}</label></td>
- <td>
- <select id="text_variant" name="text_variant"></select>
- </td>
- </tr>
- <tr>
- <td><label for="text_lineheight">{#style_dlg.text_lineheight}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td>
- <select id="text_lineheight" name="text_lineheight" class="mceEditableSelect"></select>
- </td>
- <td>&nbsp;</td>
- <td>
- <label id="text_lineheight_measurement_label" for="text_lineheight_measurement" style="display: none; visibility: hidden;">Line Height Measurement Unit</label>
- <select id="text_lineheight_measurement" name="text_lineheight_measurement" aria-labelledby="text_lineheight_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- <td><label for="text_case">{#style_dlg.text_case}</label></td>
- <td>
- <select id="text_case" name="text_case"></select>
- </td>
- </tr>
- <tr>
- <td><label for="text_color">{#style_dlg.text_color}</label></td>
- <td colspan="2">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="text_color" name="text_color" type="text" value="" size="9" onChange="updateColor('text_color_pick','text_color');" /></td>
- <td id="text_color_pickcontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td valign="top" style="vertical-align: top; padding-top: 3px;">{#style_dlg.text_decoration}</td>
- <td colspan="2">
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input id="text_underline" name="text_underline" class="checkbox" type="checkbox" /></td>
- <td><label for="text_underline">{#style_dlg.text_underline}</label></td>
- </tr>
- <tr>
- <td><input id="text_overline" name="text_overline" class="checkbox" type="checkbox" /></td>
- <td><label for="text_overline">{#style_dlg.text_overline}</label></td>
- </tr>
- <tr>
- <td><input id="text_linethrough" name="text_linethrough" class="checkbox" type="checkbox" /></td>
- <td><label for="text_linethrough">{#style_dlg.text_striketrough}</label></td>
- </tr>
- <tr>
- <td><input id="text_blink" name="text_blink" class="checkbox" type="checkbox" /></td>
- <td><label for="text_blink">{#style_dlg.text_blink}</label></td>
- </tr>
- <tr>
- <td><input id="text_none" name="text_none" class="checkbox" type="checkbox" onclick="updateTextDecorations();"/></td>
- <td><label for="text_none">{#style_dlg.text_none}</label></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </fieldset>
-</div>
-
-<div id="background_panel" class="panel">
- <fieldset>
- <legend>{#style_dlg.background}</legend>
- <table role="presentation" border="0">
- <tr>
- <td><label for="background_color">{#style_dlg.background_color}</label></td>
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="background_color" name="background_color" type="text" value="" size="9" onChange="updateColor('background_color_pick','background_color');" /></td>
- <td id="background_color_pickcontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td><label for="background_image">{#style_dlg.background_image}</label></td>
- <td><table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input id="background_image" name="background_image" type="text" /></td>
- <td id="background_image_browser">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td><label for="background_repeat">{#style_dlg.background_repeat}</label></td>
- <td><select id="background_repeat" name="background_repeat" class="mceEditableSelect"></select></td>
- </tr>
-
- <tr>
- <td><label for="background_attachment">{#style_dlg.background_attachment}</label></td>
- <td><select id="background_attachment" name="background_attachment" class="mceEditableSelect"></select></td>
- </tr>
-
- <tr>
- <td><label for="background_hpos">{#style_dlg.background_hpos}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><select id="background_hpos" name="background_hpos" class="mceEditableSelect"></select></td>
- <td>&nbsp;</td>
- <td>
- <label id="background_hpos_measurement_label" for="background_hpos_measurement" style="display: none; visibility: hidden;">Horizontal position measurement unit</label>
- <select id="background_hpos_measurement" name="background_hpos_measurement" aria-labelledby="background_hpos_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td><label for="background_vpos">{#style_dlg.background_vpos}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><select id="background_vpos" name="background_vpos" class="mceEditableSelect"></select></td>
- <td>&nbsp;</td>
- <td>
-
- <label id="background_vpos_measurement_label" for="background_vpos_measurement" style="display: none; visibility: hidden;">Vertical position measurement unit</label>
- <select id="background_vpos_measurement" name="background_vpos_measurement" aria-labelledby="background_vpos_measurement_label">></select></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </fieldset>
-</div>
-
-<div id="block_panel" class="panel">
- <fieldset>
- <legend>{#style_dlg.block}</legend>
- <table role="presentation" border="0">
- <tr>
- <td><label for="block_wordspacing">{#style_dlg.block_wordspacing}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><select id="block_wordspacing" name="block_wordspacing" class="mceEditableSelect"></select></td>
- <td>&nbsp;</td>
- <td>
- <label id="block_wordspacing_measurement_label" for="block_wordspacing_measurement" style="display: none; visibility: hidden;">Word spacing measurement unit</label>
- <select id="block_wordspacing_measurement" name="block_wordspacing_measurement" aria-labelledby="block_wordspacing_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td><label for="block_letterspacing">{#style_dlg.block_letterspacing}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><select id="block_letterspacing" name="block_letterspacing" class="mceEditableSelect"></select></td>
- <td>&nbsp;</td>
- <td>
- <label id="block_letterspacing_measurement_label" for="block_letterspacing_measurement" style="display: none; visibility: hidden;">Letter spacing measurement unit</label>
- <select id="block_letterspacing_measurement" name="block_letterspacing_measurement" aria-labelledby="block_letterspacing_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td><label for="block_vertical_alignment">{#style_dlg.block_vertical_alignment}</label></td>
- <td><select id="block_vertical_alignment" name="block_vertical_alignment" class="mceEditableSelect"></select></td>
- </tr>
-
- <tr>
- <td><label for="block_text_align">{#style_dlg.block_text_align}</label></td>
- <td><select id="block_text_align" name="block_text_align" class="mceEditableSelect"></select></td>
- </tr>
-
- <tr>
- <td><label for="block_text_indent">{#style_dlg.block_text_indent}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="block_text_indent" name="block_text_indent" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="block_text_indent_measurement_label" for="block_text_indent_measurement" style="display: none; visibility: hidden;">Text Indent Measurement Unit</label>
-
- <select id="block_text_indent_measurement" name="block_text_indent_measurement" aria-labelledby="block_text_indent_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td><label for="block_whitespace">{#style_dlg.block_whitespace}</label></td>
- <td><select id="block_whitespace" name="block_whitespace" class="mceEditableSelect"></select></td>
- </tr>
-
- <tr>
- <td><label for="block_display">{#style_dlg.block_display}</label></td>
- <td><select id="block_display" name="block_display" class="mceEditableSelect"></select></td>
- </tr>
- </table>
- </fieldset>
-</div>
-
-<div id="box_panel" class="panel">
- <fieldset>
- <legend>{#style_dlg.box}</legend>
- <table role="presentation" border="0">
- <tr>
- <td><label for="box_width">{#style_dlg.box_width}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="box_width" name="box_width" class="mceEditableSelect" onChange="synch('box_width','positioning_width');" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="box_width_measurement_label" for="box_width_measurement" style="display: none; visibility: hidden;">Box Width Measurement Unit</label>
- <select id="box_width_measurement" name="box_width_measurement" aria-labelledby="box_width_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- <td>&nbsp;&nbsp;&nbsp;<label for="box_float">{#style_dlg.box_float}</label></td>
- <td><select id="box_float" name="box_float" class="mceEditableSelect"></select></td>
- </tr>
-
- <tr>
- <td><label for="box_height">{#style_dlg.box_height}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="box_height" name="box_height" class="mceEditableSelect" onChange="synch('box_height','positioning_height');" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="box_height_measurement_label" for="box_height_measurement" style="display: none; visibility: hidden;">Box Height Measurement Unit</label>
- <select id="box_height_measurement" name="box_height_measurement" aria-labelledby="box_height_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- <td>&nbsp;&nbsp;&nbsp;<label for="box_clear">{#style_dlg.box_clear}</label></td>
- <td><select id="box_clear" name="box_clear" class="mceEditableSelect"></select></td>
- </tr>
- </table>
- </fieldset>
-
-<div style="float: left; width: 49%">
- <fieldset>
- <legend>{#style_dlg.padding}</legend>
-
- <table role="presentation" border="0">
- <tr>
- <td>&nbsp;</td>
- <td><input type="checkbox" id="box_padding_same" name="box_padding_same" class="checkbox" checked="checked" onClick="toggleSame(this,'box_padding');" /> <label for="box_padding_same">{#style_dlg.same}</label></td>
- </tr>
- <tr>
- <td><label for="box_padding_top">{#style_dlg.top}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="box_padding_top" name="box_padding_top" class="mceEditableSelect" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="box_padding_top_measurement_label" for="box_padding_top_measurement" style="display: none; visibility: hidden;">Padding Top Measurement Unit</label>
- <select id="box_padding_top_measurement" name="box_padding_top_measurement" aria-labelledby="box_padding_top_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td><label for="box_padding_right">{#style_dlg.right}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="box_padding_right" name="box_padding_right" class="mceEditableSelect" disabled="disabled" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="box_padding_right_measurement_label" for="box_padding_right_measurement" style="display: none; visibility: hidden;">Padding Right Measurement Unit</label>
- <select id="box_padding_right_measurement" name="box_padding_right_measurement" disabled="disabled" aria-labelledby="box_padding_right_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td><label for="box_padding_bottom">{#style_dlg.bottom}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="box_padding_bottom" name="box_padding_bottom" class="mceEditableSelect" disabled="disabled" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="box_padding_bottom_measurement_label" for="box_padding_bottom_measurement" style="display: none; visibility: hidden;">Padding Bottom Measurement Unit</label>
- <select id="box_padding_bottom_measurement" name="box_padding_bottom_measurement" disabled="disabled" aria-labelledby="box_padding_bottom_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td><label for="box_padding_left">{#style_dlg.left}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="box_padding_left" name="box_padding_left" class="mceEditableSelect" disabled="disabled" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="box_padding_left_measurement_label" for="box_padding_left_measurement" style="display: none; visibility: hidden;">Padding Left Measurement Unit</label>
- <select id="box_padding_left_measurement" name="box_padding_left_measurement" disabled="disabled" aria-labelledby="box_padding_left_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </fieldset>
-</div>
-
-<div style="float: right; width: 49%">
- <fieldset>
- <legend>{#style_dlg.margin}</legend>
-
- <table role="presentation" border="0">
- <tr>
- <td>&nbsp;</td>
- <td><input type="checkbox" id="box_margin_same" name="box_margin_same" class="checkbox" checked="checked" onClick="toggleSame(this,'box_margin');" /> <label for="box_margin_same">{#style_dlg.same}</label></td>
- </tr>
- <tr>
- <td><label for="box_margin_top">{#style_dlg.top}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="box_margin_top" name="box_margin_top" class="mceEditableSelect" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="box_margin_top_measurement_label" for="box_margin_top_measurement" style="display: none; visibility: hidden;">Margin Top Measurement Unit</label>
- <select id="box_margin_top_measurement" name="box_margin_top_measurement" aria-labelledby="box_margin_top_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td><label for="box_margin_right">{#style_dlg.right}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="box_margin_right" name="box_margin_right" class="mceEditableSelect" disabled="disabled" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="box_margin_right_measurement_label" for="box_margin_right_measurement" style="display: none; visibility: hidden;">Margin Right Measurement Unit</label>
- <select id="box_margin_right_measurement" name="box_margin_right_measurement" disabled="disabled" aria-labelledby="box_margin_right_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td><label for="box_margin_bottom">{#style_dlg.bottom}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="box_margin_bottom" name="box_margin_bottom" class="mceEditableSelect" disabled="disabled" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="box_margin_bottom_measurement_label" for="box_margin_bottom_measurement" style="display: none; visibility: hidden;">Margin Bottom Measurement Unit</label>
- <select id="box_margin_bottom_measurement" name="box_margin_bottom_measurement" disabled="disabled" aria-labelledby="box_margin_bottom_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td><label for="box_margin_left">{#style_dlg.left}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="box_margin_left" name="box_margin_left" class="mceEditableSelect" disabled="disabled" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="box_margin_left_measurement_label" for="box_margin_left_measurement" style="display: none; visibility: hidden;">Margin Left Measurement Unit</label>
- <select id="box_margin_left_measurement" name="box_margin_left_measurement" disabled="disabled" aria-labelledby="box_margin_left_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </fieldset>
-</div>
-<br style="clear: both" />
-</div>
-
-<div id="border_panel" class="panel">
- <fieldset>
- <legend>{#style_dlg.border}</legend>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0" width="100%">
- <tr>
- <td class="tdelim">&nbsp;</td>
- <td class="tdelim delim">&nbsp;</td>
- <td class="tdelim">{#style_dlg.style}</td>
- <td class="tdelim delim">&nbsp;</td>
- <td class="tdelim">{#style_dlg.width}</td>
- <td class="tdelim delim">&nbsp;</td>
- <td class="tdelim">{#style_dlg.color}</td>
- </tr>
-
- <tr>
- <td>&nbsp;</td>
- <td class="delim">&nbsp;</td>
- <td><input type="checkbox" id="border_style_same" name="border_style_same" class="checkbox" checked="checked" onClick="toggleSame(this,'border_style');" /> <label for="border_style_same">{#style_dlg.same}</label></td>
- <td class="delim">&nbsp;</td>
- <td><input type="checkbox" id="border_width_same" name="border_width_same" class="checkbox" checked="checked" onClick="toggleSame(this,'border_width');" /> <label for="border_width_same">{#style_dlg.same}</label></td>
- <td class="delim">&nbsp;</td>
- <td><input type="checkbox" id="border_color_same" name="border_color_same" class="checkbox" checked="checked" onClick="toggleSame(this,'border_color');" /> <label for="border_color_same">{#style_dlg.same}</label></td>
- </tr>
-
- <tr>
- <td>{#style_dlg.top}</td>
- <td class="delim">&nbsp;</td>
- <td><select id="border_style_top" name="border_style_top" class="mceEditableSelect"></select></td>
- <td class="delim">&nbsp;</td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><select id="border_width_top" name="border_width_top" class="mceEditableSelect"></select></td>
- <td>&nbsp;</td>
- <td>
- <label id="border_width_top_measurement_label" for="border_width_top_measurement" style="display: none; visibility: hidden;">Width top Measurement Unit</label>
- <select id="border_width_top_measurement" name="border_width_top_measurement" aria-labelledby="border_width_top_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- <td class="delim">&nbsp;</td>
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="border_color_top" name="border_color_top" type="text" value="" size="9" onChange="updateColor('border_color_top_pick','border_color_top');" /></td>
- <td id="border_color_top_pickcontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td>{#style_dlg.right}</td>
- <td class="delim">&nbsp;</td>
- <td><select id="border_style_right" name="border_style_right" class="mceEditableSelect" disabled="disabled"></select></td>
- <td class="delim">&nbsp;</td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><select id="border_width_right" name="border_width_right" class="mceEditableSelect" disabled="disabled"></select></td>
- <td>&nbsp;</td>
- <td>
- <label id="border_width_right_measurement_label" for="border_width_right_measurement" style="display: none; visibility: hidden;">Width Right Measurement Unit</label>
- <select id="border_width_right_measurement" name="border_width_right_measurement" disabled="disabled" aria-labelledby="border_width_right_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- <td class="delim">&nbsp;</td>
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="border_color_right" name="border_color_right" type="text" value="" size="9" onChange="updateColor('border_color_right_pick','border_color_right');" disabled="disabled" /></td>
- <td id="border_color_right_pickcontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td>{#style_dlg.bottom}</td>
- <td class="delim">&nbsp;</td>
- <td><select id="border_style_bottom" name="border_style_bottom" class="mceEditableSelect" disabled="disabled"></select></td>
- <td class="delim">&nbsp;</td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><select id="border_width_bottom" name="border_width_bottom" class="mceEditableSelect" disabled="disabled"></select></td>
- <td>&nbsp;</td>
- <td>
- <label id="border_width_bottom_measurement_label" for="border_width_bottom_measurement" style="display: none; visibility: hidden;">Width Bottom Measurement Unit</label>
- <select id="border_width_bottom_measurement" name="border_width_bottom_measurement" disabled="disabled" aria-labelledby="border_width_bottom_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- <td class="delim">&nbsp;</td>
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="border_color_bottom" name="border_color_bottom" type="text" value="" size="9" onChange="updateColor('border_color_bottom_pick','border_color_bottom');" disabled="disabled" /></td>
- <td id="border_color_bottom_pickcontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td>{#style_dlg.left}</td>
- <td class="delim">&nbsp;</td>
- <td><select id="border_style_left" name="border_style_left" class="mceEditableSelect" disabled="disabled"></select></td>
- <td class="delim">&nbsp;</td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><select id="border_width_left" name="border_width_left" class="mceEditableSelect" disabled="disabled"></select></td>
- <td>&nbsp;</td>
- <td>
- <label id="border_width_left_measurement_label" for="border_width_left_measurement" style="display: none; visibility: hidden;">Width Left Measurement Unit</label>
- <select id="border_width_left_measurement" name="border_width_left_measurement" disabled="disabled" aria-labelledby="border_width_left_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- <td class="delim">&nbsp;</td>
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="border_color_left" name="border_color_left" type="text" value="" size="9" onChange="updateColor('border_color_left_pick','border_color_left');" disabled="disabled" /></td>
- <td id="border_color_left_pickcontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </fieldset>
-</div>
-
-<div id="list_panel" class="panel">
-<fieldset>
- <legend>{#style_dlg.list}</legend>
- <table role="presentation" border="0">
- <tr>
- <td><label for="list_type">{#style_dlg.list_type}</label></td>
- <td><select id="list_type" name="list_type" class="mceEditableSelect"></select></td>
- </tr>
-
- <tr>
- <td><label for="list_bullet_image">{#style_dlg.bullet_image}</label></td>
- <td><input id="list_bullet_image" name="list_bullet_image" type="text" /></td>
- </tr>
-
- <tr>
- <td><label for="list_position">{#style_dlg.position}</label></td>
- <td><select id="list_position" name="list_position" class="mceEditableSelect"></select></td>
- </tr>
- </table>
-</fieldset>
-</div>
-
-<div id="positioning_panel" class="panel">
-<fieldset>
- <legend>{#style_dlg.position}</legend>
-<table role="presentation" border="0">
- <tr>
- <td><label for="positioning_type">{#style_dlg.positioning_type}</label></td>
- <td><select id="positioning_type" name="positioning_type" class="mceEditableSelect"></select></td>
- <td>&nbsp;&nbsp;&nbsp;<label for="positioning_visibility">{#style_dlg.visibility}</label></td>
- <td><select id="positioning_visibility" name="positioning_visibility" class="mceEditableSelect"></select></td>
- </tr>
-
- <tr>
- <td><label for="positioning_width">{#style_dlg.width}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="positioning_width" name="positioning_width" onChange="synch('positioning_width','box_width');" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="positioning_width_measurement_label" for="positioning_width_measurement" style="display: none; visibility: hidden;">Positioning width Measurement Unit</label>
- <select id="positioning_width_measurement" name="positioning_width_measurement" aria-labelledby="positioning_width_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- <td>&nbsp;&nbsp;&nbsp;<label for="positioning_zindex">{#style_dlg.zindex}</label></td>
- <td><input type="text" id="positioning_zindex" name="positioning_zindex" /></td>
- </tr>
-
- <tr>
- <td><label for="positioning_height">{#style_dlg.height}</label></td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="positioning_height" name="positioning_height" onChange="synch('positioning_height','box_height');" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="positioning_height_measurement_label" for="positioning_height_measurement" style="display: none; visibility: hidden;">Positioning Height Measurement Unit</label>
- <select id="positioning_height_measurement" name="positioning_height_measurement" aria-labelledby="positioning_height_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- <td>&nbsp;&nbsp;&nbsp;<label for="positioning_overflow">{#style_dlg.overflow}</label></td>
- <td><select id="positioning_overflow" name="positioning_overflow" class="mceEditableSelect"></select></td>
- </tr>
-</table>
-</fieldset>
-
-<div style="float: left; width: 49%">
- <fieldset>
- <legend>{#style_dlg.placement}</legend>
-
- <table role="presentation" border="0">
- <tr>
- <td>&nbsp;</td>
- <td><input type="checkbox" id="positioning_placement_same" name="positioning_placement_same" class="checkbox" checked="checked" onClick="toggleSame(this,'positioning_placement');" /> <label for="positioning_placement_same">{#style_dlg.same}</label></td>
- </tr>
- <tr>
- <td>{#style_dlg.top}</td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="positioning_placement_top" name="positioning_placement_top" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="positioning_placement_top_measurement_label" for="positioning_placement_top_measurement" style="display: none; visibility: hidden;">Placement Top Measurement Unit</label>
- <select id="positioning_placement_top_measurement" name="positioning_placement_top_measurement" aria-labelledby="positioning_placement_top_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td>{#style_dlg.right}</td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="positioning_placement_right" name="positioning_placement_right" disabled="disabled" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="positioning_placement_right_measurement_label" for="positioning_placement_right_measurement" style="display: none; visibility: hidden;">Placement Right Measurement Unit</label>
- <select id="positioning_placement_right_measurement" name="positioning_placement_right_measurement" disabled="disabled" aria-labelledby="positioning_placement_right_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td>{#style_dlg.bottom}</td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="positioning_placement_bottom" name="positioning_placement_bottom" disabled="disabled" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="positioning_placement_bottom_measurement_label" for="positioning_placement_bottom_measurement" style="display: none; visibility: hidden;">Placement Bottom Measurement Unit</label>
- <select id="positioning_placement_bottom_measurement" name="positioning_placement_bottom_measurement" disabled="disabled" aria-labelledby="positioning_placement_bottom_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td>{#style_dlg.left}</td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="positioning_placement_left" name="positioning_placement_left" disabled="disabled" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="positioning_placement_left_measurement_label" for="positioning_placement_left_measurement" style="display: none; visibility: hidden;">Placement Left Measurement Unit</label>
- <select id="positioning_placement_left_measurement" name="positioning_placement_left_measurement" disabled="disabled" aria-labelledby="positioning_placement_left_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </fieldset>
-</div>
-
-<div style="float: right; width: 49%">
- <fieldset>
- <legend>{#style_dlg.clip}</legend>
-
- <table role="presentation" border="0">
- <tr>
- <td>&nbsp;</td>
- <td><input type="checkbox" id="positioning_clip_same" name="positioning_clip_same" class="checkbox" checked="checked" onClick="toggleSame(this,'positioning_clip');" /> <label for="positioning_clip_same">{#style_dlg.same}</label></td>
- </tr>
- <tr>
- <td>{#style_dlg.top}</td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="positioning_clip_top" name="positioning_clip_top" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="positioning_clip_top_measurement_label" for="positioning_clip_top_measurement" style="display: none; visibility: hidden;">Clip Top Measurement Unit</label>
- <select id="positioning_clip_top_measurement" name="positioning_clip_top_measurement" aria-labelledby="positioning_clip_top_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td>{#style_dlg.right}</td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="positioning_clip_right" name="positioning_clip_right" disabled="disabled" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="positioning_clip_right_measurement_label" for="positioning_clip_right_measurement" style="display: none; visibility: hidden;">Clip Right Measurement Unit</label>
- <select id="positioning_clip_right_measurement" name="positioning_clip_right_measurement" disabled="disabled" aria-labelledby="positioning_clip_right_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td>{#style_dlg.bottom}</td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="positioning_clip_bottom" name="positioning_clip_bottom" disabled="disabled" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="positioning_clip_bottom_measurement_label" for="positioning_clip_bottom_measurement" style="display: none; visibility: hidden;">Clip Bottom Measurement Unit</label>
- <select id="positioning_clip_bottom_measurement" name="positioning_clip_bottom_measurement" disabled="disabled" aria-labelledby="positioning_clip_bottom_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td>{#style_dlg.left}</td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input type="text" id="positioning_clip_left" name="positioning_clip_left" disabled="disabled" /></td>
- <td>&nbsp;</td>
- <td>
- <label id="positioning_clip_left_measurement_label" for="positioning_clip_left_measurement" style="display: none; visibility: hidden;">Clip Left Measurement Unit</label>
- <select id="positioning_clip_left_measurement" name="positioning_clip_left_measurement" disabled="disabled" aria-labelledby="positioning_clip_left_measurement_label"></select>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </fieldset>
-</div>
-<br style="clear: both" />
-</div>
-</div>
-
-<div class="panel_toggle_insert_span">
- <input type="checkbox" class="checkbox" id="toggle_insert_span" name="toggle_insert_span" onClick="toggleApplyAction();" />
- <label for="toggle_insert_span">{#style_dlg.toggle_insert_span}</label>
-</div>
-
-<div class="mceActionPanel">
- <input type="submit" id="insert" name="insert" value="{#update}" />
- <input type="button" class="button" id="apply" name="apply" value="{#style_dlg.apply}" onClick="applyAction();" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onClick="tinyMCEPopup.close();" />
-</div>
-</form>
-
-<div style="display: none">
- <div id="container"></div>
-</div>
-
-</body>
-</html>
diff --git a/program/js/tiny_mce/plugins/style/readme.txt b/program/js/tiny_mce/plugins/style/readme.txt
deleted file mode 100644
index 5bac30202..000000000
--- a/program/js/tiny_mce/plugins/style/readme.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-Edit CSS Style plug-in notes
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Unlike WYSIWYG editor functionality that operates only on the selected text,
-typically by inserting new HTML elements with the specified styles.
-This plug-in operates on the HTML blocks surrounding the selected text.
-No new HTML elements are created.
-
-This plug-in only operates on the surrounding blocks and not the nearest
-parent node. This means that if a block encapsulates a node,
-e.g <p><span>text</span></p>, then only the styles in the block are
-recognized, not those in the span.
-
-When selecting text that includes multiple blocks at the same level (peers),
-this plug-in accumulates the specified styles in all of the surrounding blocks
-and populates the dialogue checkboxes accordingly. There is no differentiation
-between styles set in all the blocks versus styles set in some of the blocks.
-
-When the [Update] or [Apply] buttons are pressed, the styles selected in the
-checkboxes are applied to all blocks that surround the selected text.
diff --git a/program/js/tiny_mce/plugins/tabfocus/editor_plugin.js b/program/js/tiny_mce/plugins/tabfocus/editor_plugin.js
deleted file mode 100644
index 2c5129161..000000000
--- a/program/js/tiny_mce/plugins/tabfocus/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){var c=tinymce.DOM,a=tinymce.dom.Event,d=tinymce.each,b=tinymce.explode;tinymce.create("tinymce.plugins.TabFocusPlugin",{init:function(f,g){function e(i,j){if(j.keyCode===9){return a.cancel(j)}}function h(l,p){var j,m,o,n,k;function q(t){n=c.select(":input:enabled,*[tabindex]:not(iframe)");function s(v){return v.nodeName==="BODY"||(v.type!="hidden"&&!(v.style.display=="none")&&!(v.style.visibility=="hidden")&&s(v.parentNode))}function i(v){return v.attributes.tabIndex.specified||v.nodeName=="INPUT"||v.nodeName=="TEXTAREA"}function u(){return tinymce.isIE6||tinymce.isIE7}function r(v){return((!u()||i(v)))&&v.getAttribute("tabindex")!="-1"&&s(v)}d(n,function(w,v){if(w.id==l.id){j=v;return false}});if(t>0){for(m=j+1;m<n.length;m++){if(r(n[m])){return n[m]}}}else{for(m=j-1;m>=0;m--){if(r(n[m])){return n[m]}}}return null}if(p.keyCode===9){k=b(l.getParam("tab_focus",l.getParam("tabfocus_elements",":prev,:next")));if(k.length==1){k[1]=k[0];k[0]=":prev"}if(p.shiftKey){if(k[0]==":prev"){n=q(-1)}else{n=c.get(k[0])}}else{if(k[1]==":next"){n=q(1)}else{n=c.get(k[1])}}if(n){if(n.id&&(l=tinymce.get(n.id||n.name))){l.focus()}else{window.setTimeout(function(){if(!tinymce.isWebKit){window.focus()}n.focus()},10)}return a.cancel(p)}}}f.onKeyUp.add(e);if(tinymce.isGecko){f.onKeyPress.add(h);f.onKeyDown.add(e)}else{f.onKeyDown.add(h)}},getInfo:function(){return{longname:"Tabfocus",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/tabfocus",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("tabfocus",tinymce.plugins.TabFocusPlugin)})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/tabfocus/editor_plugin_src.js b/program/js/tiny_mce/plugins/tabfocus/editor_plugin_src.js
deleted file mode 100644
index 94f45320d..000000000
--- a/program/js/tiny_mce/plugins/tabfocus/editor_plugin_src.js
+++ /dev/null
@@ -1,122 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, explode = tinymce.explode;
-
- tinymce.create('tinymce.plugins.TabFocusPlugin', {
- init : function(ed, url) {
- function tabCancel(ed, e) {
- if (e.keyCode === 9)
- return Event.cancel(e);
- }
-
- function tabHandler(ed, e) {
- var x, i, f, el, v;
-
- function find(d) {
- el = DOM.select(':input:enabled,*[tabindex]:not(iframe)');
-
- function canSelectRecursive(e) {
- return e.nodeName==="BODY" || (e.type != 'hidden' &&
- !(e.style.display == "none") &&
- !(e.style.visibility == "hidden") && canSelectRecursive(e.parentNode));
- }
- function canSelectInOldIe(el) {
- return el.attributes["tabIndex"].specified || el.nodeName == "INPUT" || el.nodeName == "TEXTAREA";
- }
- function isOldIe() {
- return tinymce.isIE6 || tinymce.isIE7;
- }
- function canSelect(el) {
- return ((!isOldIe() || canSelectInOldIe(el))) && el.getAttribute("tabindex") != '-1' && canSelectRecursive(el);
- }
-
- each(el, function(e, i) {
- if (e.id == ed.id) {
- x = i;
- return false;
- }
- });
- if (d > 0) {
- for (i = x + 1; i < el.length; i++) {
- if (canSelect(el[i]))
- return el[i];
- }
- } else {
- for (i = x - 1; i >= 0; i--) {
- if (canSelect(el[i]))
- return el[i];
- }
- }
-
- return null;
- }
-
- if (e.keyCode === 9) {
- v = explode(ed.getParam('tab_focus', ed.getParam('tabfocus_elements', ':prev,:next')));
-
- if (v.length == 1) {
- v[1] = v[0];
- v[0] = ':prev';
- }
-
- // Find element to focus
- if (e.shiftKey) {
- if (v[0] == ':prev')
- el = find(-1);
- else
- el = DOM.get(v[0]);
- } else {
- if (v[1] == ':next')
- el = find(1);
- else
- el = DOM.get(v[1]);
- }
-
- if (el) {
- if (el.id && (ed = tinymce.get(el.id || el.name)))
- ed.focus();
- else
- window.setTimeout(function() {
- if (!tinymce.isWebKit)
- window.focus();
- el.focus();
- }, 10);
-
- return Event.cancel(e);
- }
- }
- }
-
- ed.onKeyUp.add(tabCancel);
-
- if (tinymce.isGecko) {
- ed.onKeyPress.add(tabHandler);
- ed.onKeyDown.add(tabCancel);
- } else
- ed.onKeyDown.add(tabHandler);
-
- },
-
- getInfo : function() {
- return {
- longname : 'Tabfocus',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/tabfocus',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('tabfocus', tinymce.plugins.TabFocusPlugin);
-})();
diff --git a/program/js/tiny_mce/plugins/table/cell.htm b/program/js/tiny_mce/plugins/table/cell.htm
deleted file mode 100644
index a72a8d697..000000000
--- a/program/js/tiny_mce/plugins/table/cell.htm
+++ /dev/null
@@ -1,180 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#table_dlg.cell_title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="../../utils/form_utils.js"></script>
- <script type="text/javascript" src="../../utils/validate.js"></script>
- <script type="text/javascript" src="../../utils/editable_selects.js"></script>
- <script type="text/javascript" src="js/cell.js"></script>
- <link href="css/cell.css" rel="stylesheet" type="text/css" />
-</head>
-<body id="tablecell" style="display: none" role="application">
- <form onsubmit="updateAction();return false;" action="#">
- <div class="tabs">
- <ul>
- <li id="general_tab" class="current" aria-controls="general_panel"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#table_dlg.general_tab}</a></span></li>
- <li id="advanced_tab" aria-controls="advanced_panel"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#table_dlg.advanced_tab}</a></span></li>
- </ul>
- </div>
-
- <div class="panel_wrapper">
- <div id="general_panel" class="panel current">
- <fieldset>
- <legend>{#table_dlg.general_props}</legend>
-
- <table role="presentation" border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td><label for="align">{#table_dlg.align}</label></td>
- <td>
- <select id="align" name="align" class="mceFocus">
- <option value="">{#not_set}</option>
- <option value="center">{#table_dlg.align_middle}</option>
- <option value="left">{#table_dlg.align_left}</option>
- <option value="right">{#table_dlg.align_right}</option>
- </select>
- </td>
-
- <td><label for="celltype">{#table_dlg.cell_type}</label></td>
- <td>
- <select id="celltype" name="celltype">
- <option value="td">{#table_dlg.td}</option>
- <option value="th">{#table_dlg.th}</option>
- </select>
- </td>
- </tr>
-
- <tr>
- <td><label for="valign">{#table_dlg.valign}</label></td>
- <td>
- <select id="valign" name="valign">
- <option value="">{#not_set}</option>
- <option value="top">{#table_dlg.align_top}</option>
- <option value="middle">{#table_dlg.align_middle}</option>
- <option value="bottom">{#table_dlg.align_bottom}</option>
- </select>
- </td>
-
- <td><label for="scope">{#table_dlg.scope}</label></td>
- <td>
- <select id="scope" name="scope">
- <option value="">{#not_set}</option>
- <option value="col">{#table.col}</option>
- <option value="row">{#table.row}</option>
- <option value="rowgroup">{#table_dlg.rowgroup}</option>
- <option value="colgroup">{#table_dlg.colgroup}</option>
- </select>
- </td>
-
- </tr>
-
- <tr>
- <td><label for="width">{#table_dlg.width}</label></td>
- <td><input id="width" name="width" type="text" value="" size="7" maxlength="7" onchange="changedSize();" class="size" /></td>
-
- <td><label for="height">{#table_dlg.height}</label></td>
- <td><input id="height" name="height" type="text" value="" size="7" maxlength="7" onchange="changedSize();" class="size" /></td>
- </tr>
-
- <tr id="styleSelectRow">
- <td><label for="class">{#class_name}</label></td>
- <td colspan="3">
- <select id="class" name="class" class="mceEditableSelect">
- <option value="" selected="selected">{#not_set}</option>
- </select>
- </td>
- </tr>
- </table>
- </fieldset>
- </div>
-
- <div id="advanced_panel" class="panel">
- <fieldset>
- <legend>{#table_dlg.advanced_props}</legend>
-
- <table role="presentation" border="0" cellpadding="0" cellspacing="4">
- <tr>
- <td class="column1"><label for="id">{#table_dlg.id}</label></td>
- <td><input id="id" name="id" type="text" value="" style="width: 200px" /></td>
- </tr>
-
- <tr>
- <td><label for="style">{#table_dlg.style}</label></td>
- <td><input type="text" id="style" name="style" value="" style="width: 200px;" onchange="changedStyle();" /></td>
- </tr>
-
- <tr>
- <td class="column1"><label for="dir">{#table_dlg.langdir}</label></td>
- <td>
- <select id="dir" name="dir" style="width: 200px">
- <option value="">{#not_set}</option>
- <option value="ltr">{#table_dlg.ltr}</option>
- <option value="rtl">{#table_dlg.rtl}</option>
- </select>
- </td>
- </tr>
-
- <tr>
- <td class="column1"><label for="lang">{#table_dlg.langcode}</label></td>
- <td>
- <input id="lang" name="lang" type="text" value="" style="width: 200px" />
- </td>
- </tr>
-
- <tr>
- <td class="column1"><label for="backgroundimage">{#table_dlg.bgimage}</label></td>
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="backgroundimage" name="backgroundimage" type="text" value="" style="width: 200px" onchange="changedBackgroundImage();" /></td>
- <td id="backgroundimagebrowsercontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr role="group" aria-labelledby="bordercolor_label">
- <td class="column1"><label id="bordercolor_label" for="bordercolor">{#table_dlg.bordercolor}</label></td>
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="bordercolor" name="bordercolor" type="text" value="" size="9" onchange="updateColor('bordercolor_pick','bordercolor');changedColor();" /></td>
- <td id="bordercolor_pickcontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr role="group" aria-labelledby="bgcolor_label">
- <td class="column1"><label id="bgcolor_label" for="bgcolor">{#table_dlg.bgcolor}</label></td>
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');changedColor();" /></td>
- <td id="bgcolor_pickcontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </fieldset>
- </div>
- </div>
-
- <div class="mceActionPanel">
- <div>
- <select id="action" name="action">
- <option value="cell">{#table_dlg.cell_cell}</option>
- <option value="row">{#table_dlg.cell_row}</option>
- <option value="col">{#table_dlg.cell_col}</option>
- <option value="all">{#table_dlg.cell_all}</option>
- </select>
- </div>
-
- <input type="submit" id="insert" name="insert" value="{#update}" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
- </form>
-</body>
-</html>
diff --git a/program/js/tiny_mce/plugins/table/css/cell.css b/program/js/tiny_mce/plugins/table/css/cell.css
deleted file mode 100644
index a067ecdfe..000000000
--- a/program/js/tiny_mce/plugins/table/css/cell.css
+++ /dev/null
@@ -1,17 +0,0 @@
-/* CSS file for cell dialog in the table plugin */
-
-.panel_wrapper div.current {
- height: 200px;
-}
-
-.advfield {
- width: 200px;
-}
-
-#action {
- margin-bottom: 3px;
-}
-
-#class {
- width: 150px;
-} \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/css/row.css b/program/js/tiny_mce/plugins/table/css/row.css
deleted file mode 100644
index 1f7755daf..000000000
--- a/program/js/tiny_mce/plugins/table/css/row.css
+++ /dev/null
@@ -1,25 +0,0 @@
-/* CSS file for row dialog in the table plugin */
-
-.panel_wrapper div.current {
- height: 200px;
-}
-
-.advfield {
- width: 200px;
-}
-
-#action {
- margin-bottom: 3px;
-}
-
-#rowtype,#align,#valign,#class,#height {
- width: 150px;
-}
-
-#height {
- width: 50px;
-}
-
-.col2 {
- padding-left: 20px;
-}
diff --git a/program/js/tiny_mce/plugins/table/css/table.css b/program/js/tiny_mce/plugins/table/css/table.css
deleted file mode 100644
index d11c3f69c..000000000
--- a/program/js/tiny_mce/plugins/table/css/table.css
+++ /dev/null
@@ -1,13 +0,0 @@
-/* CSS file for table dialog in the table plugin */
-
-.panel_wrapper div.current {
- height: 245px;
-}
-
-.advfield {
- width: 200px;
-}
-
-#class {
- width: 150px;
-}
diff --git a/program/js/tiny_mce/plugins/table/editor_plugin.js b/program/js/tiny_mce/plugins/table/editor_plugin.js
deleted file mode 100644
index 4a92e1b36..000000000
--- a/program/js/tiny_mce/plugins/table/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(d){var e=d.each;function c(g,h){var j=h.ownerDocument,f=j.createRange(),k;f.setStartBefore(h);f.setEnd(g.endContainer,g.endOffset);k=j.createElement("body");k.appendChild(f.cloneContents());return k.innerHTML.replace(/<(br|img|object|embed|input|textarea)[^>]*>/gi,"-").replace(/<[^>]+>/g,"").length==0}function a(g,f){return parseInt(g.getAttribute(f)||1)}function b(H,G,K){var g,L,D,o;t();o=G.getParent(K.getStart(),"th,td");if(o){L=F(o);D=I();o=z(L.x,L.y)}function A(N,M){N=N.cloneNode(M);N.removeAttribute("id");return N}function t(){var M=0;g=[];e(["thead","tbody","tfoot"],function(N){var O=G.select("> "+N+" tr",H);e(O,function(P,Q){Q+=M;e(G.select("> td, > th",P),function(W,R){var S,T,U,V;if(g[Q]){while(g[Q][R]){R++}}U=a(W,"rowspan");V=a(W,"colspan");for(T=Q;T<Q+U;T++){if(!g[T]){g[T]=[]}for(S=R;S<R+V;S++){g[T][S]={part:N,real:T==Q&&S==R,elm:W,rowspan:U,colspan:V}}}})});M+=O.length})}function z(M,O){var N;N=g[O];if(N){return N[M]}}function s(O,M,N){if(O){N=parseInt(N);if(N===1){O.removeAttribute(M,1)}else{O.setAttribute(M,N,1)}}}function j(M){return M&&(G.hasClass(M.elm,"mceSelected")||M==o)}function k(){var M=[];e(H.rows,function(N){e(N.cells,function(O){if(G.hasClass(O,"mceSelected")||O==o.elm){M.push(N);return false}})});return M}function r(){var M=G.createRng();M.setStartAfter(H);M.setEndAfter(H);K.setRng(M);G.remove(H)}function f(M){var N;d.walk(M,function(P){var O;if(P.nodeType==3){e(G.getParents(P.parentNode,null,M).reverse(),function(Q){Q=A(Q,false);if(!N){N=O=Q}else{if(O){O.appendChild(Q)}}O=Q});if(O){O.innerHTML=d.isIE&&!d.isIE11?"&nbsp;":'<br data-mce-bogus="1" />'}return false}},"childNodes");M=A(M,false);s(M,"rowSpan",1);s(M,"colSpan",1);if(N){M.appendChild(N)}else{if(!d.isIE||d.isIE11){M.innerHTML='<br data-mce-bogus="1" />'}}return M}function q(){var M=G.createRng();e(G.select("tr",H),function(N){if(N.cells.length==0){G.remove(N)}});if(G.select("tr",H).length==0){M.setStartAfter(H);M.setEndAfter(H);K.setRng(M);G.remove(H);return}e(G.select("thead,tbody,tfoot",H),function(N){if(N.rows.length==0){G.remove(N)}});t();row=g[Math.min(g.length-1,L.y)];if(row){K.select(row[Math.min(row.length-1,L.x)].elm,true);K.collapse(true)}}function u(S,Q,U,R){var P,N,M,O,T;P=g[Q][S].elm.parentNode;for(M=1;M<=U;M++){P=G.getNext(P,"tr");if(P){for(N=S;N>=0;N--){T=g[Q+M][N].elm;if(T.parentNode==P){for(O=1;O<=R;O++){G.insertAfter(f(T),T)}break}}if(N==-1){for(O=1;O<=R;O++){P.insertBefore(f(P.cells[0]),P.cells[0])}}}}}function C(){e(g,function(M,N){e(M,function(P,O){var S,R,T,Q;if(j(P)){P=P.elm;S=a(P,"colspan");R=a(P,"rowspan");if(S>1||R>1){s(P,"rowSpan",1);s(P,"colSpan",1);for(Q=0;Q<S-1;Q++){G.insertAfter(f(P),P)}u(O,N,R-1,S)}}})})}function p(V,S,Y){var P,O,X,W,U,R,T,M,V,N,Q;if(V){pos=F(V);P=pos.x;O=pos.y;X=P+(S-1);W=O+(Y-1)}else{L=D=null;e(g,function(Z,aa){e(Z,function(ac,ab){if(j(ac)){if(!L){L={x:ab,y:aa}}D={x:ab,y:aa}}})});P=L.x;O=L.y;X=D.x;W=D.y}T=z(P,O);M=z(X,W);if(T&&M&&T.part==M.part){C();t();T=z(P,O).elm;s(T,"colSpan",(X-P)+1);s(T,"rowSpan",(W-O)+1);for(R=O;R<=W;R++){for(U=P;U<=X;U++){if(!g[R]||!g[R][U]){continue}V=g[R][U].elm;if(V!=T){N=d.grep(V.childNodes);e(N,function(Z){T.appendChild(Z)});if(N.length){N=d.grep(T.childNodes);Q=0;e(N,function(Z){if(Z.nodeName=="BR"&&G.getAttrib(Z,"data-mce-bogus")&&Q++<N.length-1){T.removeChild(Z)}})}G.remove(V)}}}q()}}function l(Q){var M,S,P,R,T,U,N,V,O;e(g,function(W,X){e(W,function(Z,Y){if(j(Z)){Z=Z.elm;T=Z.parentNode;U=A(T,false);M=X;if(Q){return false}}});if(Q){return !M}});for(R=0;R<g[0].length;R++){if(!g[M][R]){continue}S=g[M][R].elm;if(S!=P){if(!Q){O=a(S,"rowspan");if(O>1){s(S,"rowSpan",O+1);continue}}else{if(M>0&&g[M-1][R]){V=g[M-1][R].elm;O=a(V,"rowSpan");if(O>1){s(V,"rowSpan",O+1);continue}}}N=f(S);s(N,"colSpan",S.colSpan);U.appendChild(N);P=S}}if(U.hasChildNodes()){if(!Q){G.insertAfter(U,T)}else{T.parentNode.insertBefore(U,T)}}}function h(N){var O,M;e(g,function(P,Q){e(P,function(S,R){if(j(S)){O=R;if(N){return false}}});if(N){return !O}});e(g,function(S,T){var P,Q,R;if(!S[O]){return}P=S[O].elm;if(P!=M){R=a(P,"colspan");Q=a(P,"rowspan");if(R==1){if(!N){G.insertAfter(f(P),P);u(O,T,Q-1,R)}else{P.parentNode.insertBefore(f(P),P);u(O,T,Q-1,R)}}else{s(P,"colSpan",P.colSpan+1)}M=P}})}function n(){var M=[];e(g,function(N,O){e(N,function(Q,P){if(j(Q)&&d.inArray(M,P)===-1){e(g,function(T){var R=T[P].elm,S;S=a(R,"colSpan");if(S>1){s(R,"colSpan",S-1)}else{G.remove(R)}});M.push(P)}})});q()}function m(){var N;function M(Q){var P,R,O;P=G.getNext(Q,"tr");e(Q.cells,function(S){var T=a(S,"rowSpan");if(T>1){s(S,"rowSpan",T-1);R=F(S);u(R.x,R.y,1,1)}});R=F(Q.cells[0]);e(g[R.y],function(S){var T;S=S.elm;if(S!=O){T=a(S,"rowSpan");if(T<=1){G.remove(S)}else{s(S,"rowSpan",T-1)}O=S}})}N=k();e(N.reverse(),function(O){M(O)});q()}function E(){var M=k();G.remove(M);q();return M}function J(){var M=k();e(M,function(O,N){M[N]=A(O,true)});return M}function B(O,N){if(!O){return}var P=k(),M=P[N?0:P.length-1],Q=M.cells.length;e(g,function(S){var R;Q=0;e(S,function(U,T){if(U.real){Q+=U.colspan}if(U.elm.parentNode==M){R=1}});if(R){return false}});if(!N){O.reverse()}e(O,function(T){var S=T.cells.length,R;for(i=0;i<S;i++){R=T.cells[i];s(R,"colSpan",1);s(R,"rowSpan",1)}for(i=S;i<Q;i++){T.appendChild(f(T.cells[S-1]))}for(i=Q;i<S;i++){G.remove(T.cells[i])}if(N){M.parentNode.insertBefore(T,M)}else{G.insertAfter(T,M)}});G.removeClass(G.select("td.mceSelected,th.mceSelected"),"mceSelected")}function F(M){var N;e(g,function(O,P){e(O,function(R,Q){if(R.elm==M){N={x:Q,y:P};return false}});return !N});return N}function w(M){L=F(M)}function I(){var O,N,M;N=M=0;e(g,function(P,Q){e(P,function(S,R){var U,T;if(j(S)){S=g[Q][R];if(R>N){N=R}if(Q>M){M=Q}if(S.real){U=S.colspan-1;T=S.rowspan-1;if(U){if(R+U>N){N=R+U}}if(T){if(Q+T>M){M=Q+T}}}}})});return{x:N,y:M}}function v(S){var P,O,U,T,N,M,Q,R;D=F(S);if(L&&D){P=Math.min(L.x,D.x);O=Math.min(L.y,D.y);U=Math.max(L.x,D.x);T=Math.max(L.y,D.y);N=U;M=T;for(y=O;y<=M;y++){S=g[y][P];if(!S.real){if(P-(S.colspan-1)<P){P-=S.colspan-1}}}for(x=P;x<=N;x++){S=g[O][x];if(!S.real){if(O-(S.rowspan-1)<O){O-=S.rowspan-1}}}for(y=O;y<=T;y++){for(x=P;x<=U;x++){S=g[y][x];if(S.real){Q=S.colspan-1;R=S.rowspan-1;if(Q){if(x+Q>N){N=x+Q}}if(R){if(y+R>M){M=y+R}}}}}G.removeClass(G.select("td.mceSelected,th.mceSelected"),"mceSelected");for(y=O;y<=M;y++){for(x=P;x<=N;x++){if(g[y][x]){G.addClass(g[y][x].elm,"mceSelected")}}}}}d.extend(this,{deleteTable:r,split:C,merge:p,insertRow:l,insertCol:h,deleteCols:n,deleteRows:m,cutRows:E,copyRows:J,pasteRows:B,getPos:F,setStartCell:w,setEndCell:v})}d.create("tinymce.plugins.TablePlugin",{init:function(g,h){var f,m,j=true;function l(p){var o=g.selection,n=g.dom.getParent(p||o.getNode(),"table");if(n){return new b(n,g.dom,o)}}function k(){g.getBody().style.webkitUserSelect="";if(j){g.dom.removeClass(g.dom.select("td.mceSelected,th.mceSelected"),"mceSelected");j=false}}e([["table","table.desc","mceInsertTable",true],["delete_table","table.del","mceTableDelete"],["delete_col","table.delete_col_desc","mceTableDeleteCol"],["delete_row","table.delete_row_desc","mceTableDeleteRow"],["col_after","table.col_after_desc","mceTableInsertColAfter"],["col_before","table.col_before_desc","mceTableInsertColBefore"],["row_after","table.row_after_desc","mceTableInsertRowAfter"],["row_before","table.row_before_desc","mceTableInsertRowBefore"],["row_props","table.row_desc","mceTableRowProps",true],["cell_props","table.cell_desc","mceTableCellProps",true],["split_cells","table.split_cells_desc","mceTableSplitCells",true],["merge_cells","table.merge_cells_desc","mceTableMergeCells",true]],function(n){g.addButton(n[0],{title:n[1],cmd:n[2],ui:n[3]})});if(!d.isIE){g.onClick.add(function(n,o){o=o.target;if(o.nodeName==="TABLE"){n.selection.select(o);n.nodeChanged()}})}g.onPreProcess.add(function(o,p){var n,q,r,t=o.dom,s;n=t.select("table",p.node);q=n.length;while(q--){r=n[q];t.setAttrib(r,"data-mce-style","");if((s=t.getAttrib(r,"width"))){t.setStyle(r,"width",s);t.setAttrib(r,"width","")}if((s=t.getAttrib(r,"height"))){t.setStyle(r,"height",s);t.setAttrib(r,"height","")}}});g.onNodeChange.add(function(q,o,s){var r;s=q.selection.getStart();r=q.dom.getParent(s,"td,th,caption");o.setActive("table",s.nodeName==="TABLE"||!!r);if(r&&r.nodeName==="CAPTION"){r=0}o.setDisabled("delete_table",!r);o.setDisabled("delete_col",!r);o.setDisabled("delete_table",!r);o.setDisabled("delete_row",!r);o.setDisabled("col_after",!r);o.setDisabled("col_before",!r);o.setDisabled("row_after",!r);o.setDisabled("row_before",!r);o.setDisabled("row_props",!r);o.setDisabled("cell_props",!r);o.setDisabled("split_cells",!r);o.setDisabled("merge_cells",!r)});g.onInit.add(function(r){var p,t,q=r.dom,u;f=r.windowManager;r.onMouseDown.add(function(w,z){if(z.button!=2){k();t=q.getParent(z.target,"td,th");p=q.getParent(t,"table")}});q.bind(r.getDoc(),"mouseover",function(C){var A,z,B=C.target;if(t&&(u||B!=t)&&(B.nodeName=="TD"||B.nodeName=="TH")){z=q.getParent(B,"table");if(z==p){if(!u){u=l(z);u.setStartCell(t);r.getBody().style.webkitUserSelect="none"}u.setEndCell(B);j=true}A=r.selection.getSel();try{if(A.removeAllRanges){A.removeAllRanges()}else{A.empty()}}catch(w){}C.preventDefault()}});r.onMouseUp.add(function(F,G){var z,B=F.selection,H,I=B.getSel(),w,C,A,E;if(t){if(u){F.getBody().style.webkitUserSelect=""}function D(J,L){var K=new d.dom.TreeWalker(J,J);do{if(J.nodeType==3&&d.trim(J.nodeValue).length!=0){if(L){z.setStart(J,0)}else{z.setEnd(J,J.nodeValue.length)}return}if(J.nodeName=="BR"){if(L){z.setStartBefore(J)}else{z.setEndBefore(J)}return}}while(J=(L?K.next():K.prev()))}H=q.select("td.mceSelected,th.mceSelected");if(H.length>0){z=q.createRng();C=H[0];E=H[H.length-1];z.setStartBefore(C);z.setEndAfter(C);D(C,1);w=new d.dom.TreeWalker(C,q.getParent(H[0],"table"));do{if(C.nodeName=="TD"||C.nodeName=="TH"){if(!q.hasClass(C,"mceSelected")){break}A=C}}while(C=w.next());D(A);B.setRng(z)}F.nodeChanged();t=u=p=null}});r.onKeyUp.add(function(w,z){k()});r.onKeyDown.add(function(w,z){n(w)});r.onMouseDown.add(function(w,z){if(z.button!=2){n(w)}});function o(D,z,A,F){var B=3,G=D.dom.getParent(z.startContainer,"TABLE"),C,w,E;if(G){C=G.parentNode}w=z.startContainer.nodeType==B&&z.startOffset==0&&z.endOffset==0&&F&&(A.nodeName=="TR"||A==C);E=(A.nodeName=="TD"||A.nodeName=="TH")&&!F;return w||E}function n(A){if(!d.isWebKit){return}var z=A.selection.getRng();var C=A.selection.getNode();var B=A.dom.getParent(z.startContainer,"TD,TH");if(!o(A,z,C,B)){return}if(!B){B=C}var w=B.lastChild;while(w.lastChild){w=w.lastChild}z.setEnd(w,w.nodeValue.length);A.selection.setRng(z)}r.plugins.table.fixTableCellSelection=n;if(r&&r.plugins.contextmenu){r.plugins.contextmenu.onContextMenu.add(function(A,w,C){var D,B=r.selection,z=B.getNode()||r.getBody();if(r.dom.getParent(C,"td")||r.dom.getParent(C,"th")||r.dom.select("td.mceSelected,th.mceSelected").length){w.removeAll();if(z.nodeName=="A"&&!r.dom.getAttrib(z,"name")){w.add({title:"advanced.link_desc",icon:"link",cmd:r.plugins.advlink?"mceAdvLink":"mceLink",ui:true});w.add({title:"advanced.unlink_desc",icon:"unlink",cmd:"UnLink"});w.addSeparator()}if(z.nodeName=="IMG"&&z.className.indexOf("mceItem")==-1){w.add({title:"advanced.image_desc",icon:"image",cmd:r.plugins.advimage?"mceAdvImage":"mceImage",ui:true});w.addSeparator()}w.add({title:"table.desc",icon:"table",cmd:"mceInsertTable",value:{action:"insert"}});w.add({title:"table.props_desc",icon:"table_props",cmd:"mceInsertTable"});w.add({title:"table.del",icon:"delete_table",cmd:"mceTableDelete"});w.addSeparator();D=w.addMenu({title:"table.cell"});D.add({title:"table.cell_desc",icon:"cell_props",cmd:"mceTableCellProps"});D.add({title:"table.split_cells_desc",icon:"split_cells",cmd:"mceTableSplitCells"});D.add({title:"table.merge_cells_desc",icon:"merge_cells",cmd:"mceTableMergeCells"});D=w.addMenu({title:"table.row"});D.add({title:"table.row_desc",icon:"row_props",cmd:"mceTableRowProps"});D.add({title:"table.row_before_desc",icon:"row_before",cmd:"mceTableInsertRowBefore"});D.add({title:"table.row_after_desc",icon:"row_after",cmd:"mceTableInsertRowAfter"});D.add({title:"table.delete_row_desc",icon:"delete_row",cmd:"mceTableDeleteRow"});D.addSeparator();D.add({title:"table.cut_row_desc",icon:"cut",cmd:"mceTableCutRow"});D.add({title:"table.copy_row_desc",icon:"copy",cmd:"mceTableCopyRow"});D.add({title:"table.paste_row_before_desc",icon:"paste",cmd:"mceTablePasteRowBefore"}).setDisabled(!m);D.add({title:"table.paste_row_after_desc",icon:"paste",cmd:"mceTablePasteRowAfter"}).setDisabled(!m);D=w.addMenu({title:"table.col"});D.add({title:"table.col_before_desc",icon:"col_before",cmd:"mceTableInsertColBefore"});D.add({title:"table.col_after_desc",icon:"col_after",cmd:"mceTableInsertColAfter"});D.add({title:"table.delete_col_desc",icon:"delete_col",cmd:"mceTableDeleteCol"})}else{w.add({title:"table.desc",icon:"table",cmd:"mceInsertTable"})}})}if(d.isWebKit){function v(C,N){var L=d.VK;var Q=N.keyCode;function O(Y,U,S){var T=Y?"previousSibling":"nextSibling";var Z=C.dom.getParent(U,"tr");var X=Z[T];if(X){z(C,U,X,Y);d.dom.Event.cancel(S);return true}else{var aa=C.dom.getParent(Z,"table");var W=Z.parentNode;var R=W.nodeName.toLowerCase();if(R==="tbody"||R===(Y?"tfoot":"thead")){var V=w(Y,aa,W,"tbody");if(V!==null){return K(Y,V,U,S)}}return M(Y,Z,T,aa,S)}}function w(V,T,U,X){var S=C.dom.select(">"+X,T);var R=S.indexOf(U);if(V&&R===0||!V&&R===S.length-1){return B(V,T)}else{if(R===-1){var W=U.tagName.toLowerCase()==="thead"?0:S.length-1;return S[W]}else{return S[R+(V?-1:1)]}}}function B(U,T){var S=U?"thead":"tfoot";var R=C.dom.select(">"+S,T);return R.length!==0?R[0]:null}function K(V,T,S,U){var R=J(T,V);R&&z(C,S,R,V);d.dom.Event.cancel(U);return true}function M(Y,U,R,X,W){var S=X[R];if(S){F(S);return true}else{var V=C.dom.getParent(X,"td,th");if(V){return O(Y,V,W)}else{var T=J(U,!Y);F(T);return d.dom.Event.cancel(W)}}}function J(S,R){var T=S&&S[R?"lastChild":"firstChild"];return T&&T.nodeName==="BR"?C.dom.getParent(T,"td,th"):T}function F(R){C.selection.setCursorLocation(R,0)}function A(){return Q==L.UP||Q==L.DOWN}function D(R){var T=R.selection.getNode();var S=R.dom.getParent(T,"tr");return S!==null}function P(S){var R=0;var T=S;while(T.previousSibling){T=T.previousSibling;R=R+a(T,"colspan")}return R}function E(T,R){var U=0;var S=0;e(T.children,function(V,W){U=U+a(V,"colspan");S=W;if(U>R){return false}});return S}function z(T,W,Y,V){var X=P(T.dom.getParent(W,"td,th"));var S=E(Y,X);var R=Y.childNodes[S];var U=J(R,V);F(U||R)}function H(R){var T=C.selection.getNode();var U=C.dom.getParent(T,"td,th");var S=C.dom.getParent(R,"td,th");return U&&U!==S&&I(U,S)}function I(S,R){return C.dom.getParent(S,"TABLE")===C.dom.getParent(R,"TABLE")}if(A()&&D(C)){var G=C.selection.getNode();setTimeout(function(){if(H(G)){O(!N.shiftKey&&Q===L.UP,G,N)}},0)}}r.onKeyDown.add(v)}function s(){var w;for(w=r.getBody().lastChild;w&&w.nodeType==3&&!w.nodeValue.length;w=w.previousSibling){}if(w&&w.nodeName=="TABLE"){if(r.settings.forced_root_block){r.dom.add(r.getBody(),r.settings.forced_root_block,null,d.isIE&&!d.isIE11?"&nbsp;":'<br data-mce-bogus="1" />')}else{r.dom.add(r.getBody(),"br",{"data-mce-bogus":"1"})}}}if(d.isGecko){r.onKeyDown.add(function(z,B){var w,A,C=z.dom;if(B.keyCode==37||B.keyCode==38){w=z.selection.getRng();A=C.getParent(w.startContainer,"table");if(A&&z.getBody().firstChild==A){if(c(w,A)){w=C.createRng();w.setStartBefore(A);w.setEndBefore(A);z.selection.setRng(w);B.preventDefault()}}}})}r.onKeyUp.add(s);r.onSetContent.add(s);r.onVisualAid.add(s);r.onPreProcess.add(function(w,A){var z=A.node.lastChild;if(z&&(z.nodeName=="BR"||(z.childNodes.length==1&&(z.firstChild.nodeName=="BR"||z.firstChild.nodeValue=="\u00a0")))&&z.previousSibling&&z.previousSibling.nodeName=="TABLE"){w.dom.remove(z)}});s();r.startContent=r.getContent({format:"raw"})});e({mceTableSplitCells:function(n){n.split()},mceTableMergeCells:function(o){var p,q,n;n=g.dom.getParent(g.selection.getNode(),"th,td");if(n){p=n.rowSpan;q=n.colSpan}if(!g.dom.select("td.mceSelected,th.mceSelected").length){f.open({url:h+"/merge_cells.htm",width:240+parseInt(g.getLang("table.merge_cells_delta_width",0)),height:110+parseInt(g.getLang("table.merge_cells_delta_height",0)),inline:1},{rows:p,cols:q,onaction:function(r){o.merge(n,r.cols,r.rows)},plugin_url:h})}else{o.merge()}},mceTableInsertRowBefore:function(n){n.insertRow(true)},mceTableInsertRowAfter:function(n){n.insertRow()},mceTableInsertColBefore:function(n){n.insertCol(true)},mceTableInsertColAfter:function(n){n.insertCol()},mceTableDeleteCol:function(n){n.deleteCols()},mceTableDeleteRow:function(n){n.deleteRows()},mceTableCutRow:function(n){m=n.cutRows()},mceTableCopyRow:function(n){m=n.copyRows()},mceTablePasteRowBefore:function(n){n.pasteRows(m,true)},mceTablePasteRowAfter:function(n){n.pasteRows(m)},mceTableDelete:function(n){n.deleteTable()}},function(o,n){g.addCommand(n,function(){var p=l();if(p){o(p);g.execCommand("mceRepaint");k()}})});e({mceInsertTable:function(n){f.open({url:h+"/table.htm",width:400+parseInt(g.getLang("table.table_delta_width",0)),height:320+parseInt(g.getLang("table.table_delta_height",0)),inline:1},{plugin_url:h,action:n?n.action:0})},mceTableRowProps:function(){f.open({url:h+"/row.htm",width:400+parseInt(g.getLang("table.rowprops_delta_width",0)),height:295+parseInt(g.getLang("table.rowprops_delta_height",0)),inline:1},{plugin_url:h})},mceTableCellProps:function(){f.open({url:h+"/cell.htm",width:400+parseInt(g.getLang("table.cellprops_delta_width",0)),height:295+parseInt(g.getLang("table.cellprops_delta_height",0)),inline:1},{plugin_url:h})}},function(o,n){g.addCommand(n,function(p,q){o(q)})})}});d.PluginManager.add("table",d.plugins.TablePlugin)})(tinymce); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/editor_plugin_src.js b/program/js/tiny_mce/plugins/table/editor_plugin_src.js
deleted file mode 100644
index 045648376..000000000
--- a/program/js/tiny_mce/plugins/table/editor_plugin_src.js
+++ /dev/null
@@ -1,1456 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function(tinymce) {
- var each = tinymce.each;
-
- // Checks if the selection/caret is at the start of the specified block element
- function isAtStart(rng, par) {
- var doc = par.ownerDocument, rng2 = doc.createRange(), elm;
-
- rng2.setStartBefore(par);
- rng2.setEnd(rng.endContainer, rng.endOffset);
-
- elm = doc.createElement('body');
- elm.appendChild(rng2.cloneContents());
-
- // Check for text characters of other elements that should be treated as content
- return elm.innerHTML.replace(/<(br|img|object|embed|input|textarea)[^>]*>/gi, '-').replace(/<[^>]+>/g, '').length == 0;
- };
-
- function getSpanVal(td, name) {
- return parseInt(td.getAttribute(name) || 1);
- }
-
- /**
- * Table Grid class.
- */
- function TableGrid(table, dom, selection) {
- var grid, startPos, endPos, selectedCell;
-
- buildGrid();
- selectedCell = dom.getParent(selection.getStart(), 'th,td');
- if (selectedCell) {
- startPos = getPos(selectedCell);
- endPos = findEndPos();
- selectedCell = getCell(startPos.x, startPos.y);
- }
-
- function cloneNode(node, children) {
- node = node.cloneNode(children);
- node.removeAttribute('id');
-
- return node;
- }
-
- function buildGrid() {
- var startY = 0;
-
- grid = [];
-
- each(['thead', 'tbody', 'tfoot'], function(part) {
- var rows = dom.select('> ' + part + ' tr', table);
-
- each(rows, function(tr, y) {
- y += startY;
-
- each(dom.select('> td, > th', tr), function(td, x) {
- var x2, y2, rowspan, colspan;
-
- // Skip over existing cells produced by rowspan
- if (grid[y]) {
- while (grid[y][x])
- x++;
- }
-
- // Get col/rowspan from cell
- rowspan = getSpanVal(td, 'rowspan');
- colspan = getSpanVal(td, 'colspan');
-
- // Fill out rowspan/colspan right and down
- for (y2 = y; y2 < y + rowspan; y2++) {
- if (!grid[y2])
- grid[y2] = [];
-
- for (x2 = x; x2 < x + colspan; x2++) {
- grid[y2][x2] = {
- part : part,
- real : y2 == y && x2 == x,
- elm : td,
- rowspan : rowspan,
- colspan : colspan
- };
- }
- }
- });
- });
-
- startY += rows.length;
- });
- };
-
- function getCell(x, y) {
- var row;
-
- row = grid[y];
- if (row)
- return row[x];
- };
-
- function setSpanVal(td, name, val) {
- if (td) {
- val = parseInt(val);
-
- if (val === 1)
- td.removeAttribute(name, 1);
- else
- td.setAttribute(name, val, 1);
- }
- }
-
- function isCellSelected(cell) {
- return cell && (dom.hasClass(cell.elm, 'mceSelected') || cell == selectedCell);
- };
-
- function getSelectedRows() {
- var rows = [];
-
- each(table.rows, function(row) {
- each(row.cells, function(cell) {
- if (dom.hasClass(cell, 'mceSelected') || cell == selectedCell.elm) {
- rows.push(row);
- return false;
- }
- });
- });
-
- return rows;
- };
-
- function deleteTable() {
- var rng = dom.createRng();
-
- rng.setStartAfter(table);
- rng.setEndAfter(table);
-
- selection.setRng(rng);
-
- dom.remove(table);
- };
-
- function cloneCell(cell) {
- var formatNode;
-
- // Clone formats
- tinymce.walk(cell, function(node) {
- var curNode;
-
- if (node.nodeType == 3) {
- each(dom.getParents(node.parentNode, null, cell).reverse(), function(node) {
- node = cloneNode(node, false);
-
- if (!formatNode)
- formatNode = curNode = node;
- else if (curNode)
- curNode.appendChild(node);
-
- curNode = node;
- });
-
- // Add something to the inner node
- if (curNode)
- curNode.innerHTML = tinymce.isIE && !tinymce.isIE11 ? '&nbsp;' : '<br data-mce-bogus="1" />';
-
- return false;
- }
- }, 'childNodes');
-
- cell = cloneNode(cell, false);
- setSpanVal(cell, 'rowSpan', 1);
- setSpanVal(cell, 'colSpan', 1);
-
- if (formatNode) {
- cell.appendChild(formatNode);
- } else {
- if (!tinymce.isIE || tinymce.isIE11)
- cell.innerHTML = '<br data-mce-bogus="1" />';
- }
-
- return cell;
- };
-
- function cleanup() {
- var rng = dom.createRng();
-
- // Empty rows
- each(dom.select('tr', table), function(tr) {
- if (tr.cells.length == 0)
- dom.remove(tr);
- });
-
- // Empty table
- if (dom.select('tr', table).length == 0) {
- rng.setStartAfter(table);
- rng.setEndAfter(table);
- selection.setRng(rng);
- dom.remove(table);
- return;
- }
-
- // Empty header/body/footer
- each(dom.select('thead,tbody,tfoot', table), function(part) {
- if (part.rows.length == 0)
- dom.remove(part);
- });
-
- // Restore selection to start position if it still exists
- buildGrid();
-
- // Restore the selection to the closest table position
- row = grid[Math.min(grid.length - 1, startPos.y)];
- if (row) {
- selection.select(row[Math.min(row.length - 1, startPos.x)].elm, true);
- selection.collapse(true);
- }
- };
-
- function fillLeftDown(x, y, rows, cols) {
- var tr, x2, r, c, cell;
-
- tr = grid[y][x].elm.parentNode;
- for (r = 1; r <= rows; r++) {
- tr = dom.getNext(tr, 'tr');
-
- if (tr) {
- // Loop left to find real cell
- for (x2 = x; x2 >= 0; x2--) {
- cell = grid[y + r][x2].elm;
-
- if (cell.parentNode == tr) {
- // Append clones after
- for (c = 1; c <= cols; c++)
- dom.insertAfter(cloneCell(cell), cell);
-
- break;
- }
- }
-
- if (x2 == -1) {
- // Insert nodes before first cell
- for (c = 1; c <= cols; c++)
- tr.insertBefore(cloneCell(tr.cells[0]), tr.cells[0]);
- }
- }
- }
- };
-
- function split() {
- each(grid, function(row, y) {
- each(row, function(cell, x) {
- var colSpan, rowSpan, newCell, i;
-
- if (isCellSelected(cell)) {
- cell = cell.elm;
- colSpan = getSpanVal(cell, 'colspan');
- rowSpan = getSpanVal(cell, 'rowspan');
-
- if (colSpan > 1 || rowSpan > 1) {
- setSpanVal(cell, 'rowSpan', 1);
- setSpanVal(cell, 'colSpan', 1);
-
- // Insert cells right
- for (i = 0; i < colSpan - 1; i++)
- dom.insertAfter(cloneCell(cell), cell);
-
- fillLeftDown(x, y, rowSpan - 1, colSpan);
- }
- }
- });
- });
- };
-
- function merge(cell, cols, rows) {
- var startX, startY, endX, endY, x, y, startCell, endCell, cell, children, count;
-
- // Use specified cell and cols/rows
- if (cell) {
- pos = getPos(cell);
- startX = pos.x;
- startY = pos.y;
- endX = startX + (cols - 1);
- endY = startY + (rows - 1);
- } else {
- startPos = endPos = null;
-
- // Calculate start/end pos by checking for selected cells in grid works better with context menu
- each(grid, function(row, y) {
- each(row, function(cell, x) {
- if (isCellSelected(cell)) {
- if (!startPos) {
- startPos = {x: x, y: y};
- }
-
- endPos = {x: x, y: y};
- }
- });
- });
-
- // Use selection
- startX = startPos.x;
- startY = startPos.y;
- endX = endPos.x;
- endY = endPos.y;
- }
-
- // Find start/end cells
- startCell = getCell(startX, startY);
- endCell = getCell(endX, endY);
-
- // Check if the cells exists and if they are of the same part for example tbody = tbody
- if (startCell && endCell && startCell.part == endCell.part) {
- // Split and rebuild grid
- split();
- buildGrid();
-
- // Set row/col span to start cell
- startCell = getCell(startX, startY).elm;
- setSpanVal(startCell, 'colSpan', (endX - startX) + 1);
- setSpanVal(startCell, 'rowSpan', (endY - startY) + 1);
-
- // Remove other cells and add it's contents to the start cell
- for (y = startY; y <= endY; y++) {
- for (x = startX; x <= endX; x++) {
- if (!grid[y] || !grid[y][x])
- continue;
-
- cell = grid[y][x].elm;
-
- if (cell != startCell) {
- // Move children to startCell
- children = tinymce.grep(cell.childNodes);
- each(children, function(node) {
- startCell.appendChild(node);
- });
-
- // Remove bogus nodes if there is children in the target cell
- if (children.length) {
- children = tinymce.grep(startCell.childNodes);
- count = 0;
- each(children, function(node) {
- if (node.nodeName == 'BR' && dom.getAttrib(node, 'data-mce-bogus') && count++ < children.length - 1)
- startCell.removeChild(node);
- });
- }
-
- // Remove cell
- dom.remove(cell);
- }
- }
- }
-
- // Remove empty rows etc and restore caret location
- cleanup();
- }
- };
-
- function insertRow(before) {
- var posY, cell, lastCell, x, rowElm, newRow, newCell, otherCell, rowSpan;
-
- // Find first/last row
- each(grid, function(row, y) {
- each(row, function(cell, x) {
- if (isCellSelected(cell)) {
- cell = cell.elm;
- rowElm = cell.parentNode;
- newRow = cloneNode(rowElm, false);
- posY = y;
-
- if (before)
- return false;
- }
- });
-
- if (before)
- return !posY;
- });
-
- for (x = 0; x < grid[0].length; x++) {
- // Cell not found could be because of an invalid table structure
- if (!grid[posY][x])
- continue;
-
- cell = grid[posY][x].elm;
-
- if (cell != lastCell) {
- if (!before) {
- rowSpan = getSpanVal(cell, 'rowspan');
- if (rowSpan > 1) {
- setSpanVal(cell, 'rowSpan', rowSpan + 1);
- continue;
- }
- } else {
- // Check if cell above can be expanded
- if (posY > 0 && grid[posY - 1][x]) {
- otherCell = grid[posY - 1][x].elm;
- rowSpan = getSpanVal(otherCell, 'rowSpan');
- if (rowSpan > 1) {
- setSpanVal(otherCell, 'rowSpan', rowSpan + 1);
- continue;
- }
- }
- }
-
- // Insert new cell into new row
- newCell = cloneCell(cell);
- setSpanVal(newCell, 'colSpan', cell.colSpan);
-
- newRow.appendChild(newCell);
-
- lastCell = cell;
- }
- }
-
- if (newRow.hasChildNodes()) {
- if (!before)
- dom.insertAfter(newRow, rowElm);
- else
- rowElm.parentNode.insertBefore(newRow, rowElm);
- }
- };
-
- function insertCol(before) {
- var posX, lastCell;
-
- // Find first/last column
- each(grid, function(row, y) {
- each(row, function(cell, x) {
- if (isCellSelected(cell)) {
- posX = x;
-
- if (before)
- return false;
- }
- });
-
- if (before)
- return !posX;
- });
-
- each(grid, function(row, y) {
- var cell, rowSpan, colSpan;
-
- if (!row[posX])
- return;
-
- cell = row[posX].elm;
- if (cell != lastCell) {
- colSpan = getSpanVal(cell, 'colspan');
- rowSpan = getSpanVal(cell, 'rowspan');
-
- if (colSpan == 1) {
- if (!before) {
- dom.insertAfter(cloneCell(cell), cell);
- fillLeftDown(posX, y, rowSpan - 1, colSpan);
- } else {
- cell.parentNode.insertBefore(cloneCell(cell), cell);
- fillLeftDown(posX, y, rowSpan - 1, colSpan);
- }
- } else
- setSpanVal(cell, 'colSpan', cell.colSpan + 1);
-
- lastCell = cell;
- }
- });
- };
-
- function deleteCols() {
- var cols = [];
-
- // Get selected column indexes
- each(grid, function(row, y) {
- each(row, function(cell, x) {
- if (isCellSelected(cell) && tinymce.inArray(cols, x) === -1) {
- each(grid, function(row) {
- var cell = row[x].elm, colSpan;
-
- colSpan = getSpanVal(cell, 'colSpan');
-
- if (colSpan > 1)
- setSpanVal(cell, 'colSpan', colSpan - 1);
- else
- dom.remove(cell);
- });
-
- cols.push(x);
- }
- });
- });
-
- cleanup();
- };
-
- function deleteRows() {
- var rows;
-
- function deleteRow(tr) {
- var nextTr, pos, lastCell;
-
- nextTr = dom.getNext(tr, 'tr');
-
- // Move down row spanned cells
- each(tr.cells, function(cell) {
- var rowSpan = getSpanVal(cell, 'rowSpan');
-
- if (rowSpan > 1) {
- setSpanVal(cell, 'rowSpan', rowSpan - 1);
- pos = getPos(cell);
- fillLeftDown(pos.x, pos.y, 1, 1);
- }
- });
-
- // Delete cells
- pos = getPos(tr.cells[0]);
- each(grid[pos.y], function(cell) {
- var rowSpan;
-
- cell = cell.elm;
-
- if (cell != lastCell) {
- rowSpan = getSpanVal(cell, 'rowSpan');
-
- if (rowSpan <= 1)
- dom.remove(cell);
- else
- setSpanVal(cell, 'rowSpan', rowSpan - 1);
-
- lastCell = cell;
- }
- });
- };
-
- // Get selected rows and move selection out of scope
- rows = getSelectedRows();
-
- // Delete all selected rows
- each(rows.reverse(), function(tr) {
- deleteRow(tr);
- });
-
- cleanup();
- };
-
- function cutRows() {
- var rows = getSelectedRows();
-
- dom.remove(rows);
- cleanup();
-
- return rows;
- };
-
- function copyRows() {
- var rows = getSelectedRows();
-
- each(rows, function(row, i) {
- rows[i] = cloneNode(row, true);
- });
-
- return rows;
- };
-
- function pasteRows(rows, before) {
- // If we don't have any rows in the clipboard, return immediately
- if(!rows)
- return;
-
- var selectedRows = getSelectedRows(),
- targetRow = selectedRows[before ? 0 : selectedRows.length - 1],
- targetCellCount = targetRow.cells.length;
-
- // Calc target cell count
- each(grid, function(row) {
- var match;
-
- targetCellCount = 0;
- each(row, function(cell, x) {
- if (cell.real)
- targetCellCount += cell.colspan;
-
- if (cell.elm.parentNode == targetRow)
- match = 1;
- });
-
- if (match)
- return false;
- });
-
- if (!before)
- rows.reverse();
-
- each(rows, function(row) {
- var cellCount = row.cells.length, cell;
-
- // Remove col/rowspans
- for (i = 0; i < cellCount; i++) {
- cell = row.cells[i];
- setSpanVal(cell, 'colSpan', 1);
- setSpanVal(cell, 'rowSpan', 1);
- }
-
- // Needs more cells
- for (i = cellCount; i < targetCellCount; i++)
- row.appendChild(cloneCell(row.cells[cellCount - 1]));
-
- // Needs less cells
- for (i = targetCellCount; i < cellCount; i++)
- dom.remove(row.cells[i]);
-
- // Add before/after
- if (before)
- targetRow.parentNode.insertBefore(row, targetRow);
- else
- dom.insertAfter(row, targetRow);
- });
-
- // Remove current selection
- dom.removeClass(dom.select('td.mceSelected,th.mceSelected'), 'mceSelected');
- };
-
- function getPos(target) {
- var pos;
-
- each(grid, function(row, y) {
- each(row, function(cell, x) {
- if (cell.elm == target) {
- pos = {x : x, y : y};
- return false;
- }
- });
-
- return !pos;
- });
-
- return pos;
- };
-
- function setStartCell(cell) {
- startPos = getPos(cell);
- };
-
- function findEndPos() {
- var pos, maxX, maxY;
-
- maxX = maxY = 0;
-
- each(grid, function(row, y) {
- each(row, function(cell, x) {
- var colSpan, rowSpan;
-
- if (isCellSelected(cell)) {
- cell = grid[y][x];
-
- if (x > maxX)
- maxX = x;
-
- if (y > maxY)
- maxY = y;
-
- if (cell.real) {
- colSpan = cell.colspan - 1;
- rowSpan = cell.rowspan - 1;
-
- if (colSpan) {
- if (x + colSpan > maxX)
- maxX = x + colSpan;
- }
-
- if (rowSpan) {
- if (y + rowSpan > maxY)
- maxY = y + rowSpan;
- }
- }
- }
- });
- });
-
- return {x : maxX, y : maxY};
- };
-
- function setEndCell(cell) {
- var startX, startY, endX, endY, maxX, maxY, colSpan, rowSpan;
-
- endPos = getPos(cell);
-
- if (startPos && endPos) {
- // Get start/end positions
- startX = Math.min(startPos.x, endPos.x);
- startY = Math.min(startPos.y, endPos.y);
- endX = Math.max(startPos.x, endPos.x);
- endY = Math.max(startPos.y, endPos.y);
-
- // Expand end positon to include spans
- maxX = endX;
- maxY = endY;
-
- // Expand startX
- for (y = startY; y <= maxY; y++) {
- cell = grid[y][startX];
-
- if (!cell.real) {
- if (startX - (cell.colspan - 1) < startX)
- startX -= cell.colspan - 1;
- }
- }
-
- // Expand startY
- for (x = startX; x <= maxX; x++) {
- cell = grid[startY][x];
-
- if (!cell.real) {
- if (startY - (cell.rowspan - 1) < startY)
- startY -= cell.rowspan - 1;
- }
- }
-
- // Find max X, Y
- for (y = startY; y <= endY; y++) {
- for (x = startX; x <= endX; x++) {
- cell = grid[y][x];
-
- if (cell.real) {
- colSpan = cell.colspan - 1;
- rowSpan = cell.rowspan - 1;
-
- if (colSpan) {
- if (x + colSpan > maxX)
- maxX = x + colSpan;
- }
-
- if (rowSpan) {
- if (y + rowSpan > maxY)
- maxY = y + rowSpan;
- }
- }
- }
- }
-
- // Remove current selection
- dom.removeClass(dom.select('td.mceSelected,th.mceSelected'), 'mceSelected');
-
- // Add new selection
- for (y = startY; y <= maxY; y++) {
- for (x = startX; x <= maxX; x++) {
- if (grid[y][x])
- dom.addClass(grid[y][x].elm, 'mceSelected');
- }
- }
- }
- };
-
- // Expose to public
- tinymce.extend(this, {
- deleteTable : deleteTable,
- split : split,
- merge : merge,
- insertRow : insertRow,
- insertCol : insertCol,
- deleteCols : deleteCols,
- deleteRows : deleteRows,
- cutRows : cutRows,
- copyRows : copyRows,
- pasteRows : pasteRows,
- getPos : getPos,
- setStartCell : setStartCell,
- setEndCell : setEndCell
- });
- };
-
- tinymce.create('tinymce.plugins.TablePlugin', {
- init : function(ed, url) {
- var winMan, clipboardRows, hasCellSelection = true; // Might be selected cells on reload
-
- function createTableGrid(node) {
- var selection = ed.selection, tblElm = ed.dom.getParent(node || selection.getNode(), 'table');
-
- if (tblElm)
- return new TableGrid(tblElm, ed.dom, selection);
- };
-
- function cleanup() {
- // Restore selection possibilities
- ed.getBody().style.webkitUserSelect = '';
-
- if (hasCellSelection) {
- ed.dom.removeClass(ed.dom.select('td.mceSelected,th.mceSelected'), 'mceSelected');
- hasCellSelection = false;
- }
- };
-
- // Register buttons
- each([
- ['table', 'table.desc', 'mceInsertTable', true],
- ['delete_table', 'table.del', 'mceTableDelete'],
- ['delete_col', 'table.delete_col_desc', 'mceTableDeleteCol'],
- ['delete_row', 'table.delete_row_desc', 'mceTableDeleteRow'],
- ['col_after', 'table.col_after_desc', 'mceTableInsertColAfter'],
- ['col_before', 'table.col_before_desc', 'mceTableInsertColBefore'],
- ['row_after', 'table.row_after_desc', 'mceTableInsertRowAfter'],
- ['row_before', 'table.row_before_desc', 'mceTableInsertRowBefore'],
- ['row_props', 'table.row_desc', 'mceTableRowProps', true],
- ['cell_props', 'table.cell_desc', 'mceTableCellProps', true],
- ['split_cells', 'table.split_cells_desc', 'mceTableSplitCells', true],
- ['merge_cells', 'table.merge_cells_desc', 'mceTableMergeCells', true]
- ], function(c) {
- ed.addButton(c[0], {title : c[1], cmd : c[2], ui : c[3]});
- });
-
- // Select whole table is a table border is clicked
- if (!tinymce.isIE) {
- ed.onClick.add(function(ed, e) {
- e = e.target;
-
- if (e.nodeName === 'TABLE') {
- ed.selection.select(e);
- ed.nodeChanged();
- }
- });
- }
-
- ed.onPreProcess.add(function(ed, args) {
- var nodes, i, node, dom = ed.dom, value;
-
- nodes = dom.select('table', args.node);
- i = nodes.length;
- while (i--) {
- node = nodes[i];
- dom.setAttrib(node, 'data-mce-style', '');
-
- if ((value = dom.getAttrib(node, 'width'))) {
- dom.setStyle(node, 'width', value);
- dom.setAttrib(node, 'width', '');
- }
-
- if ((value = dom.getAttrib(node, 'height'))) {
- dom.setStyle(node, 'height', value);
- dom.setAttrib(node, 'height', '');
- }
- }
- });
-
- // Handle node change updates
- ed.onNodeChange.add(function(ed, cm, n) {
- var p;
-
- n = ed.selection.getStart();
- p = ed.dom.getParent(n, 'td,th,caption');
- cm.setActive('table', n.nodeName === 'TABLE' || !!p);
-
- // Disable table tools if we are in caption
- if (p && p.nodeName === 'CAPTION')
- p = 0;
-
- cm.setDisabled('delete_table', !p);
- cm.setDisabled('delete_col', !p);
- cm.setDisabled('delete_table', !p);
- cm.setDisabled('delete_row', !p);
- cm.setDisabled('col_after', !p);
- cm.setDisabled('col_before', !p);
- cm.setDisabled('row_after', !p);
- cm.setDisabled('row_before', !p);
- cm.setDisabled('row_props', !p);
- cm.setDisabled('cell_props', !p);
- cm.setDisabled('split_cells', !p);
- cm.setDisabled('merge_cells', !p);
- });
-
- ed.onInit.add(function(ed) {
- var startTable, startCell, dom = ed.dom, tableGrid;
-
- winMan = ed.windowManager;
-
- // Add cell selection logic
- ed.onMouseDown.add(function(ed, e) {
- if (e.button != 2) {
- cleanup();
-
- startCell = dom.getParent(e.target, 'td,th');
- startTable = dom.getParent(startCell, 'table');
- }
- });
-
- dom.bind(ed.getDoc(), 'mouseover', function(e) {
- var sel, table, target = e.target;
-
- if (startCell && (tableGrid || target != startCell) && (target.nodeName == 'TD' || target.nodeName == 'TH')) {
- table = dom.getParent(target, 'table');
- if (table == startTable) {
- if (!tableGrid) {
- tableGrid = createTableGrid(table);
- tableGrid.setStartCell(startCell);
-
- ed.getBody().style.webkitUserSelect = 'none';
- }
-
- tableGrid.setEndCell(target);
- hasCellSelection = true;
- }
-
- // Remove current selection
- sel = ed.selection.getSel();
-
- try {
- if (sel.removeAllRanges)
- sel.removeAllRanges();
- else
- sel.empty();
- } catch (ex) {
- // IE9 might throw errors here
- }
-
- e.preventDefault();
- }
- });
-
- ed.onMouseUp.add(function(ed, e) {
- var rng, sel = ed.selection, selectedCells, nativeSel = sel.getSel(), walker, node, lastNode, endNode;
-
- // Move selection to startCell
- if (startCell) {
- if (tableGrid)
- ed.getBody().style.webkitUserSelect = '';
-
- function setPoint(node, start) {
- var walker = new tinymce.dom.TreeWalker(node, node);
-
- do {
- // Text node
- if (node.nodeType == 3 && tinymce.trim(node.nodeValue).length != 0) {
- if (start)
- rng.setStart(node, 0);
- else
- rng.setEnd(node, node.nodeValue.length);
-
- return;
- }
-
- // BR element
- if (node.nodeName == 'BR') {
- if (start)
- rng.setStartBefore(node);
- else
- rng.setEndBefore(node);
-
- return;
- }
- } while (node = (start ? walker.next() : walker.prev()));
- }
-
- // Try to expand text selection as much as we can only Gecko supports cell selection
- selectedCells = dom.select('td.mceSelected,th.mceSelected');
- if (selectedCells.length > 0) {
- rng = dom.createRng();
- node = selectedCells[0];
- endNode = selectedCells[selectedCells.length - 1];
- rng.setStartBefore(node);
- rng.setEndAfter(node);
-
- setPoint(node, 1);
- walker = new tinymce.dom.TreeWalker(node, dom.getParent(selectedCells[0], 'table'));
-
- do {
- if (node.nodeName == 'TD' || node.nodeName == 'TH') {
- if (!dom.hasClass(node, 'mceSelected'))
- break;
-
- lastNode = node;
- }
- } while (node = walker.next());
-
- setPoint(lastNode);
-
- sel.setRng(rng);
- }
-
- ed.nodeChanged();
- startCell = tableGrid = startTable = null;
- }
- });
-
- ed.onKeyUp.add(function(ed, e) {
- cleanup();
- });
-
- ed.onKeyDown.add(function (ed, e) {
- fixTableCellSelection(ed);
- });
-
- ed.onMouseDown.add(function (ed, e) {
- if (e.button != 2) {
- fixTableCellSelection(ed);
- }
- });
- function tableCellSelected(ed, rng, n, currentCell) {
- // The decision of when a table cell is selected is somewhat involved. The fact that this code is
- // required is actually a pointer to the root cause of this bug. A cell is selected when the start
- // and end offsets are 0, the start container is a text, and the selection node is either a TR (most cases)
- // or the parent of the table (in the case of the selection containing the last cell of a table).
- var TEXT_NODE = 3, table = ed.dom.getParent(rng.startContainer, 'TABLE'),
- tableParent, allOfCellSelected, tableCellSelection;
- if (table)
- tableParent = table.parentNode;
- allOfCellSelected =rng.startContainer.nodeType == TEXT_NODE &&
- rng.startOffset == 0 &&
- rng.endOffset == 0 &&
- currentCell &&
- (n.nodeName=="TR" || n==tableParent);
- tableCellSelection = (n.nodeName=="TD"||n.nodeName=="TH")&& !currentCell;
- return allOfCellSelected || tableCellSelection;
- // return false;
- }
-
- // this nasty hack is here to work around some WebKit selection bugs.
- function fixTableCellSelection(ed) {
- if (!tinymce.isWebKit)
- return;
-
- var rng = ed.selection.getRng();
- var n = ed.selection.getNode();
- var currentCell = ed.dom.getParent(rng.startContainer, 'TD,TH');
-
- if (!tableCellSelected(ed, rng, n, currentCell))
- return;
- if (!currentCell) {
- currentCell=n;
- }
-
- // Get the very last node inside the table cell
- var end = currentCell.lastChild;
- while (end.lastChild)
- end = end.lastChild;
-
- // Select the entire table cell. Nothing outside of the table cell should be selected.
- rng.setEnd(end, end.nodeValue.length);
- ed.selection.setRng(rng);
- }
- ed.plugins.table.fixTableCellSelection=fixTableCellSelection;
-
- // Add context menu
- if (ed && ed.plugins.contextmenu) {
- ed.plugins.contextmenu.onContextMenu.add(function(th, m, e) {
- var sm, se = ed.selection, el = se.getNode() || ed.getBody();
-
- if (ed.dom.getParent(e, 'td') || ed.dom.getParent(e, 'th') || ed.dom.select('td.mceSelected,th.mceSelected').length) {
- m.removeAll();
-
- if (el.nodeName == 'A' && !ed.dom.getAttrib(el, 'name')) {
- m.add({title : 'advanced.link_desc', icon : 'link', cmd : ed.plugins.advlink ? 'mceAdvLink' : 'mceLink', ui : true});
- m.add({title : 'advanced.unlink_desc', icon : 'unlink', cmd : 'UnLink'});
- m.addSeparator();
- }
-
- if (el.nodeName == 'IMG' && el.className.indexOf('mceItem') == -1) {
- m.add({title : 'advanced.image_desc', icon : 'image', cmd : ed.plugins.advimage ? 'mceAdvImage' : 'mceImage', ui : true});
- m.addSeparator();
- }
-
- m.add({title : 'table.desc', icon : 'table', cmd : 'mceInsertTable', value : {action : 'insert'}});
- m.add({title : 'table.props_desc', icon : 'table_props', cmd : 'mceInsertTable'});
- m.add({title : 'table.del', icon : 'delete_table', cmd : 'mceTableDelete'});
- m.addSeparator();
-
- // Cell menu
- sm = m.addMenu({title : 'table.cell'});
- sm.add({title : 'table.cell_desc', icon : 'cell_props', cmd : 'mceTableCellProps'});
- sm.add({title : 'table.split_cells_desc', icon : 'split_cells', cmd : 'mceTableSplitCells'});
- sm.add({title : 'table.merge_cells_desc', icon : 'merge_cells', cmd : 'mceTableMergeCells'});
-
- // Row menu
- sm = m.addMenu({title : 'table.row'});
- sm.add({title : 'table.row_desc', icon : 'row_props', cmd : 'mceTableRowProps'});
- sm.add({title : 'table.row_before_desc', icon : 'row_before', cmd : 'mceTableInsertRowBefore'});
- sm.add({title : 'table.row_after_desc', icon : 'row_after', cmd : 'mceTableInsertRowAfter'});
- sm.add({title : 'table.delete_row_desc', icon : 'delete_row', cmd : 'mceTableDeleteRow'});
- sm.addSeparator();
- sm.add({title : 'table.cut_row_desc', icon : 'cut', cmd : 'mceTableCutRow'});
- sm.add({title : 'table.copy_row_desc', icon : 'copy', cmd : 'mceTableCopyRow'});
- sm.add({title : 'table.paste_row_before_desc', icon : 'paste', cmd : 'mceTablePasteRowBefore'}).setDisabled(!clipboardRows);
- sm.add({title : 'table.paste_row_after_desc', icon : 'paste', cmd : 'mceTablePasteRowAfter'}).setDisabled(!clipboardRows);
-
- // Column menu
- sm = m.addMenu({title : 'table.col'});
- sm.add({title : 'table.col_before_desc', icon : 'col_before', cmd : 'mceTableInsertColBefore'});
- sm.add({title : 'table.col_after_desc', icon : 'col_after', cmd : 'mceTableInsertColAfter'});
- sm.add({title : 'table.delete_col_desc', icon : 'delete_col', cmd : 'mceTableDeleteCol'});
- } else
- m.add({title : 'table.desc', icon : 'table', cmd : 'mceInsertTable'});
- });
- }
-
- // Fix to allow navigating up and down in a table in WebKit browsers.
- if (tinymce.isWebKit) {
- function moveSelection(ed, e) {
- var VK = tinymce.VK;
- var key = e.keyCode;
-
- function handle(upBool, sourceNode, event) {
- var siblingDirection = upBool ? 'previousSibling' : 'nextSibling';
- var currentRow = ed.dom.getParent(sourceNode, 'tr');
- var siblingRow = currentRow[siblingDirection];
-
- if (siblingRow) {
- moveCursorToRow(ed, sourceNode, siblingRow, upBool);
- tinymce.dom.Event.cancel(event);
- return true;
- } else {
- var tableNode = ed.dom.getParent(currentRow, 'table');
- var middleNode = currentRow.parentNode;
- var parentNodeName = middleNode.nodeName.toLowerCase();
- if (parentNodeName === 'tbody' || parentNodeName === (upBool ? 'tfoot' : 'thead')) {
- var targetParent = getTargetParent(upBool, tableNode, middleNode, 'tbody');
- if (targetParent !== null) {
- return moveToRowInTarget(upBool, targetParent, sourceNode, event);
- }
- }
- return escapeTable(upBool, currentRow, siblingDirection, tableNode, event);
- }
- }
-
- function getTargetParent(upBool, topNode, secondNode, nodeName) {
- var tbodies = ed.dom.select('>' + nodeName, topNode);
- var position = tbodies.indexOf(secondNode);
- if (upBool && position === 0 || !upBool && position === tbodies.length - 1) {
- return getFirstHeadOrFoot(upBool, topNode);
- } else if (position === -1) {
- var topOrBottom = secondNode.tagName.toLowerCase() === 'thead' ? 0 : tbodies.length - 1;
- return tbodies[topOrBottom];
- } else {
- return tbodies[position + (upBool ? -1 : 1)];
- }
- }
-
- function getFirstHeadOrFoot(upBool, parent) {
- var tagName = upBool ? 'thead' : 'tfoot';
- var headOrFoot = ed.dom.select('>' + tagName, parent);
- return headOrFoot.length !== 0 ? headOrFoot[0] : null;
- }
-
- function moveToRowInTarget(upBool, targetParent, sourceNode, event) {
- var targetRow = getChildForDirection(targetParent, upBool);
- targetRow && moveCursorToRow(ed, sourceNode, targetRow, upBool);
- tinymce.dom.Event.cancel(event);
- return true;
- }
-
- function escapeTable(upBool, currentRow, siblingDirection, table, event) {
- var tableSibling = table[siblingDirection];
- if (tableSibling) {
- moveCursorToStartOfElement(tableSibling);
- return true;
- } else {
- var parentCell = ed.dom.getParent(table, 'td,th');
- if (parentCell) {
- return handle(upBool, parentCell, event);
- } else {
- var backUpSibling = getChildForDirection(currentRow, !upBool);
- moveCursorToStartOfElement(backUpSibling);
- return tinymce.dom.Event.cancel(event);
- }
- }
- }
-
- function getChildForDirection(parent, up) {
- var child = parent && parent[up ? 'lastChild' : 'firstChild'];
- // BR is not a valid table child to return in this case we return the table cell
- return child && child.nodeName === 'BR' ? ed.dom.getParent(child, 'td,th') : child;
- }
-
- function moveCursorToStartOfElement(n) {
- ed.selection.setCursorLocation(n, 0);
- }
-
- function isVerticalMovement() {
- return key == VK.UP || key == VK.DOWN;
- }
-
- function isInTable(ed) {
- var node = ed.selection.getNode();
- var currentRow = ed.dom.getParent(node, 'tr');
- return currentRow !== null;
- }
-
- function columnIndex(column) {
- var colIndex = 0;
- var c = column;
- while (c.previousSibling) {
- c = c.previousSibling;
- colIndex = colIndex + getSpanVal(c, "colspan");
- }
- return colIndex;
- }
-
- function findColumn(rowElement, columnIndex) {
- var c = 0;
- var r = 0;
- each(rowElement.children, function(cell, i) {
- c = c + getSpanVal(cell, "colspan");
- r = i;
- if (c > columnIndex)
- return false;
- });
- return r;
- }
-
- function moveCursorToRow(ed, node, row, upBool) {
- var srcColumnIndex = columnIndex(ed.dom.getParent(node, 'td,th'));
- var tgtColumnIndex = findColumn(row, srcColumnIndex);
- var tgtNode = row.childNodes[tgtColumnIndex];
- var rowCellTarget = getChildForDirection(tgtNode, upBool);
- moveCursorToStartOfElement(rowCellTarget || tgtNode);
- }
-
- function shouldFixCaret(preBrowserNode) {
- var newNode = ed.selection.getNode();
- var newParent = ed.dom.getParent(newNode, 'td,th');
- var oldParent = ed.dom.getParent(preBrowserNode, 'td,th');
- return newParent && newParent !== oldParent && checkSameParentTable(newParent, oldParent)
- }
-
- function checkSameParentTable(nodeOne, NodeTwo) {
- return ed.dom.getParent(nodeOne, 'TABLE') === ed.dom.getParent(NodeTwo, 'TABLE');
- }
-
- if (isVerticalMovement() && isInTable(ed)) {
- var preBrowserNode = ed.selection.getNode();
- setTimeout(function() {
- if (shouldFixCaret(preBrowserNode)) {
- handle(!e.shiftKey && key === VK.UP, preBrowserNode, e);
- }
- }, 0);
- }
- }
-
- ed.onKeyDown.add(moveSelection);
- }
-
- // Fixes an issue on Gecko where it's impossible to place the caret behind a table
- // This fix will force a paragraph element after the table but only when the forced_root_block setting is enabled
- function fixTableCaretPos() {
- var last;
-
- // Skip empty text nodes form the end
- for (last = ed.getBody().lastChild; last && last.nodeType == 3 && !last.nodeValue.length; last = last.previousSibling) ;
-
- if (last && last.nodeName == 'TABLE') {
- if (ed.settings.forced_root_block)
- ed.dom.add(ed.getBody(), ed.settings.forced_root_block, null, tinymce.isIE && !tinymce.isIE11 ? '&nbsp;' : '<br data-mce-bogus="1" />');
- else
- ed.dom.add(ed.getBody(), 'br', {'data-mce-bogus': '1'});
- }
- };
-
- // Fixes an bug where it's impossible to place the caret before a table in Gecko
- // this fix solves it by detecting when the caret is at the beginning of such a table
- // and then manually moves the caret infront of the table
- if (tinymce.isGecko) {
- ed.onKeyDown.add(function(ed, e) {
- var rng, table, dom = ed.dom;
-
- // On gecko it's not possible to place the caret before a table
- if (e.keyCode == 37 || e.keyCode == 38) {
- rng = ed.selection.getRng();
- table = dom.getParent(rng.startContainer, 'table');
-
- if (table && ed.getBody().firstChild == table) {
- if (isAtStart(rng, table)) {
- rng = dom.createRng();
-
- rng.setStartBefore(table);
- rng.setEndBefore(table);
-
- ed.selection.setRng(rng);
-
- e.preventDefault();
- }
- }
- }
- });
- }
-
- ed.onKeyUp.add(fixTableCaretPos);
- ed.onSetContent.add(fixTableCaretPos);
- ed.onVisualAid.add(fixTableCaretPos);
-
- ed.onPreProcess.add(function(ed, o) {
- var last = o.node.lastChild;
-
- if (last && (last.nodeName == "BR" || (last.childNodes.length == 1 && (last.firstChild.nodeName == 'BR' || last.firstChild.nodeValue == '\u00a0'))) && last.previousSibling && last.previousSibling.nodeName == "TABLE") {
- ed.dom.remove(last);
- }
- });
-
-
- /**
- * Fixes bug in Gecko where shift-enter in table cell does not place caret on new line
- *
- * Removed: Since the new enter logic seems to fix this one.
- */
- /*
- if (tinymce.isGecko) {
- ed.onKeyDown.add(function(ed, e) {
- if (e.keyCode === tinymce.VK.ENTER && e.shiftKey) {
- var node = ed.selection.getRng().startContainer;
- var tableCell = dom.getParent(node, 'td,th');
- if (tableCell) {
- var zeroSizedNbsp = ed.getDoc().createTextNode("\uFEFF");
- dom.insertAfter(zeroSizedNbsp, node);
- }
- }
- });
- }
- */
-
- fixTableCaretPos();
- ed.startContent = ed.getContent({format : 'raw'});
- });
-
- // Register action commands
- each({
- mceTableSplitCells : function(grid) {
- grid.split();
- },
-
- mceTableMergeCells : function(grid) {
- var rowSpan, colSpan, cell;
-
- cell = ed.dom.getParent(ed.selection.getNode(), 'th,td');
- if (cell) {
- rowSpan = cell.rowSpan;
- colSpan = cell.colSpan;
- }
-
- if (!ed.dom.select('td.mceSelected,th.mceSelected').length) {
- winMan.open({
- url : url + '/merge_cells.htm',
- width : 240 + parseInt(ed.getLang('table.merge_cells_delta_width', 0)),
- height : 110 + parseInt(ed.getLang('table.merge_cells_delta_height', 0)),
- inline : 1
- }, {
- rows : rowSpan,
- cols : colSpan,
- onaction : function(data) {
- grid.merge(cell, data.cols, data.rows);
- },
- plugin_url : url
- });
- } else
- grid.merge();
- },
-
- mceTableInsertRowBefore : function(grid) {
- grid.insertRow(true);
- },
-
- mceTableInsertRowAfter : function(grid) {
- grid.insertRow();
- },
-
- mceTableInsertColBefore : function(grid) {
- grid.insertCol(true);
- },
-
- mceTableInsertColAfter : function(grid) {
- grid.insertCol();
- },
-
- mceTableDeleteCol : function(grid) {
- grid.deleteCols();
- },
-
- mceTableDeleteRow : function(grid) {
- grid.deleteRows();
- },
-
- mceTableCutRow : function(grid) {
- clipboardRows = grid.cutRows();
- },
-
- mceTableCopyRow : function(grid) {
- clipboardRows = grid.copyRows();
- },
-
- mceTablePasteRowBefore : function(grid) {
- grid.pasteRows(clipboardRows, true);
- },
-
- mceTablePasteRowAfter : function(grid) {
- grid.pasteRows(clipboardRows);
- },
-
- mceTableDelete : function(grid) {
- grid.deleteTable();
- }
- }, function(func, name) {
- ed.addCommand(name, function() {
- var grid = createTableGrid();
-
- if (grid) {
- func(grid);
- ed.execCommand('mceRepaint');
- cleanup();
- }
- });
- });
-
- // Register dialog commands
- each({
- mceInsertTable : function(val) {
- winMan.open({
- url : url + '/table.htm',
- width : 400 + parseInt(ed.getLang('table.table_delta_width', 0)),
- height : 320 + parseInt(ed.getLang('table.table_delta_height', 0)),
- inline : 1
- }, {
- plugin_url : url,
- action : val ? val.action : 0
- });
- },
-
- mceTableRowProps : function() {
- winMan.open({
- url : url + '/row.htm',
- width : 400 + parseInt(ed.getLang('table.rowprops_delta_width', 0)),
- height : 295 + parseInt(ed.getLang('table.rowprops_delta_height', 0)),
- inline : 1
- }, {
- plugin_url : url
- });
- },
-
- mceTableCellProps : function() {
- winMan.open({
- url : url + '/cell.htm',
- width : 400 + parseInt(ed.getLang('table.cellprops_delta_width', 0)),
- height : 295 + parseInt(ed.getLang('table.cellprops_delta_height', 0)),
- inline : 1
- }, {
- plugin_url : url
- });
- }
- }, function(func, name) {
- ed.addCommand(name, function(ui, val) {
- func(val);
- });
- });
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('table', tinymce.plugins.TablePlugin);
-})(tinymce);
diff --git a/program/js/tiny_mce/plugins/table/js/cell.js b/program/js/tiny_mce/plugins/table/js/cell.js
deleted file mode 100644
index 02ecf22c8..000000000
--- a/program/js/tiny_mce/plugins/table/js/cell.js
+++ /dev/null
@@ -1,319 +0,0 @@
-tinyMCEPopup.requireLangPack();
-
-var ed;
-
-function init() {
- ed = tinyMCEPopup.editor;
- tinyMCEPopup.resizeToInnerSize();
-
- document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
- document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor');
- document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor')
-
- var inst = ed;
- var tdElm = ed.dom.getParent(ed.selection.getStart(), "td,th");
- var formObj = document.forms[0];
- var st = ed.dom.parseStyle(ed.dom.getAttrib(tdElm, "style"));
-
- // Get table cell data
- var celltype = tdElm.nodeName.toLowerCase();
- var align = ed.dom.getAttrib(tdElm, 'align');
- var valign = ed.dom.getAttrib(tdElm, 'valign');
- var width = trimSize(getStyle(tdElm, 'width', 'width'));
- var height = trimSize(getStyle(tdElm, 'height', 'height'));
- var bordercolor = convertRGBToHex(getStyle(tdElm, 'bordercolor', 'borderLeftColor'));
- var bgcolor = convertRGBToHex(getStyle(tdElm, 'bgcolor', 'backgroundColor'));
- var className = ed.dom.getAttrib(tdElm, 'class');
- var backgroundimage = getStyle(tdElm, 'background', 'backgroundImage').replace(new RegExp("url\\(['\"]?([^'\"]*)['\"]?\\)", 'gi'), "$1");
- var id = ed.dom.getAttrib(tdElm, 'id');
- var lang = ed.dom.getAttrib(tdElm, 'lang');
- var dir = ed.dom.getAttrib(tdElm, 'dir');
- var scope = ed.dom.getAttrib(tdElm, 'scope');
-
- // Setup form
- addClassesToList('class', 'table_cell_styles');
- TinyMCE_EditableSelects.init();
-
- if (!ed.dom.hasClass(tdElm, 'mceSelected')) {
- formObj.bordercolor.value = bordercolor;
- formObj.bgcolor.value = bgcolor;
- formObj.backgroundimage.value = backgroundimage;
- formObj.width.value = width;
- formObj.height.value = height;
- formObj.id.value = id;
- formObj.lang.value = lang;
- formObj.style.value = ed.dom.serializeStyle(st);
- selectByValue(formObj, 'align', align);
- selectByValue(formObj, 'valign', valign);
- selectByValue(formObj, 'class', className, true, true);
- selectByValue(formObj, 'celltype', celltype);
- selectByValue(formObj, 'dir', dir);
- selectByValue(formObj, 'scope', scope);
-
- // Resize some elements
- if (isVisible('backgroundimagebrowser'))
- document.getElementById('backgroundimage').style.width = '180px';
-
- updateColor('bordercolor_pick', 'bordercolor');
- updateColor('bgcolor_pick', 'bgcolor');
- } else
- tinyMCEPopup.dom.hide('action');
-}
-
-function updateAction() {
- var el, inst = ed, tdElm, trElm, tableElm, formObj = document.forms[0];
-
- if (!AutoValidator.validate(formObj)) {
- tinyMCEPopup.alert(AutoValidator.getErrorMessages(formObj).join('. ') + '.');
- return false;
- }
-
- tinyMCEPopup.restoreSelection();
- el = ed.selection.getStart();
- tdElm = ed.dom.getParent(el, "td,th");
- trElm = ed.dom.getParent(el, "tr");
- tableElm = ed.dom.getParent(el, "table");
-
- // Cell is selected
- if (ed.dom.hasClass(tdElm, 'mceSelected')) {
- // Update all selected sells
- tinymce.each(ed.dom.select('td.mceSelected,th.mceSelected'), function(td) {
- updateCell(td);
- });
-
- ed.addVisual();
- ed.nodeChanged();
- inst.execCommand('mceEndUndoLevel');
- tinyMCEPopup.close();
- return;
- }
-
- switch (getSelectValue(formObj, 'action')) {
- case "cell":
- var celltype = getSelectValue(formObj, 'celltype');
- var scope = getSelectValue(formObj, 'scope');
-
- function doUpdate(s) {
- if (s) {
- updateCell(tdElm);
-
- ed.addVisual();
- ed.nodeChanged();
- inst.execCommand('mceEndUndoLevel');
- tinyMCEPopup.close();
- }
- };
-
- if (ed.getParam("accessibility_warnings", 1)) {
- if (celltype == "th" && scope == "")
- tinyMCEPopup.confirm(ed.getLang('table_dlg.missing_scope', '', true), doUpdate);
- else
- doUpdate(1);
-
- return;
- }
-
- updateCell(tdElm);
- break;
-
- case "row":
- var cell = trElm.firstChild;
-
- if (cell.nodeName != "TD" && cell.nodeName != "TH")
- cell = nextCell(cell);
-
- do {
- cell = updateCell(cell, true);
- } while ((cell = nextCell(cell)) != null);
-
- break;
-
- case "col":
- var curr, col = 0, cell = trElm.firstChild, rows = tableElm.getElementsByTagName("tr");
-
- if (cell.nodeName != "TD" && cell.nodeName != "TH")
- cell = nextCell(cell);
-
- do {
- if (cell == tdElm)
- break;
- col += cell.getAttribute("colspan")?cell.getAttribute("colspan"):1;
- } while ((cell = nextCell(cell)) != null);
-
- for (var i=0; i<rows.length; i++) {
- cell = rows[i].firstChild;
-
- if (cell.nodeName != "TD" && cell.nodeName != "TH")
- cell = nextCell(cell);
-
- curr = 0;
- do {
- if (curr == col) {
- cell = updateCell(cell, true);
- break;
- }
- curr += cell.getAttribute("colspan")?cell.getAttribute("colspan"):1;
- } while ((cell = nextCell(cell)) != null);
- }
-
- break;
-
- case "all":
- var rows = tableElm.getElementsByTagName("tr");
-
- for (var i=0; i<rows.length; i++) {
- var cell = rows[i].firstChild;
-
- if (cell.nodeName != "TD" && cell.nodeName != "TH")
- cell = nextCell(cell);
-
- do {
- cell = updateCell(cell, true);
- } while ((cell = nextCell(cell)) != null);
- }
-
- break;
- }
-
- ed.addVisual();
- ed.nodeChanged();
- inst.execCommand('mceEndUndoLevel');
- tinyMCEPopup.close();
-}
-
-function nextCell(elm) {
- while ((elm = elm.nextSibling) != null) {
- if (elm.nodeName == "TD" || elm.nodeName == "TH")
- return elm;
- }
-
- return null;
-}
-
-function updateCell(td, skip_id) {
- var inst = ed;
- var formObj = document.forms[0];
- var curCellType = td.nodeName.toLowerCase();
- var celltype = getSelectValue(formObj, 'celltype');
- var doc = inst.getDoc();
- var dom = ed.dom;
-
- if (!skip_id)
- dom.setAttrib(td, 'id', formObj.id.value);
-
- dom.setAttrib(td, 'align', formObj.align.value);
- dom.setAttrib(td, 'vAlign', formObj.valign.value);
- dom.setAttrib(td, 'lang', formObj.lang.value);
- dom.setAttrib(td, 'dir', getSelectValue(formObj, 'dir'));
- dom.setAttrib(td, 'style', ed.dom.serializeStyle(ed.dom.parseStyle(formObj.style.value)));
- dom.setAttrib(td, 'scope', formObj.scope.value);
- dom.setAttrib(td, 'class', getSelectValue(formObj, 'class'));
-
- // Clear deprecated attributes
- ed.dom.setAttrib(td, 'width', '');
- ed.dom.setAttrib(td, 'height', '');
- ed.dom.setAttrib(td, 'bgColor', '');
- ed.dom.setAttrib(td, 'borderColor', '');
- ed.dom.setAttrib(td, 'background', '');
-
- // Set styles
- td.style.width = getCSSSize(formObj.width.value);
- td.style.height = getCSSSize(formObj.height.value);
- if (formObj.bordercolor.value != "") {
- td.style.borderColor = formObj.bordercolor.value;
- td.style.borderStyle = td.style.borderStyle == "" ? "solid" : td.style.borderStyle;
- td.style.borderWidth = td.style.borderWidth == "" ? "1px" : td.style.borderWidth;
- } else
- td.style.borderColor = '';
-
- td.style.backgroundColor = formObj.bgcolor.value;
-
- if (formObj.backgroundimage.value != "")
- td.style.backgroundImage = "url('" + formObj.backgroundimage.value + "')";
- else
- td.style.backgroundImage = '';
-
- if (curCellType != celltype) {
- // changing to a different node type
- var newCell = doc.createElement(celltype);
-
- for (var c=0; c<td.childNodes.length; c++)
- newCell.appendChild(td.childNodes[c].cloneNode(1));
-
- for (var a=0; a<td.attributes.length; a++)
- ed.dom.setAttrib(newCell, td.attributes[a].name, ed.dom.getAttrib(td, td.attributes[a].name));
-
- td.parentNode.replaceChild(newCell, td);
- td = newCell;
- }
-
- dom.setAttrib(td, 'style', dom.serializeStyle(dom.parseStyle(td.style.cssText)));
-
- return td;
-}
-
-function changedBackgroundImage() {
- var formObj = document.forms[0];
- var st = ed.dom.parseStyle(formObj.style.value);
-
- st['background-image'] = "url('" + formObj.backgroundimage.value + "')";
-
- formObj.style.value = ed.dom.serializeStyle(st);
-}
-
-function changedSize() {
- var formObj = document.forms[0];
- var st = ed.dom.parseStyle(formObj.style.value);
-
- var width = formObj.width.value;
- if (width != "")
- st['width'] = getCSSSize(width);
- else
- st['width'] = "";
-
- var height = formObj.height.value;
- if (height != "")
- st['height'] = getCSSSize(height);
- else
- st['height'] = "";
-
- formObj.style.value = ed.dom.serializeStyle(st);
-}
-
-function changedColor() {
- var formObj = document.forms[0];
- var st = ed.dom.parseStyle(formObj.style.value);
-
- st['background-color'] = formObj.bgcolor.value;
- st['border-color'] = formObj.bordercolor.value;
-
- formObj.style.value = ed.dom.serializeStyle(st);
-}
-
-function changedStyle() {
- var formObj = document.forms[0];
- var st = ed.dom.parseStyle(formObj.style.value);
-
- if (st['background-image'])
- formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
- else
- formObj.backgroundimage.value = '';
-
- if (st['width'])
- formObj.width.value = trimSize(st['width']);
-
- if (st['height'])
- formObj.height.value = trimSize(st['height']);
-
- if (st['background-color']) {
- formObj.bgcolor.value = st['background-color'];
- updateColor('bgcolor_pick','bgcolor');
- }
-
- if (st['border-color']) {
- formObj.bordercolor.value = st['border-color'];
- updateColor('bordercolor_pick','bordercolor');
- }
-}
-
-tinyMCEPopup.onInit.add(init);
diff --git a/program/js/tiny_mce/plugins/table/js/merge_cells.js b/program/js/tiny_mce/plugins/table/js/merge_cells.js
deleted file mode 100644
index 7ee4bf040..000000000
--- a/program/js/tiny_mce/plugins/table/js/merge_cells.js
+++ /dev/null
@@ -1,27 +0,0 @@
-tinyMCEPopup.requireLangPack();
-
-var MergeCellsDialog = {
- init : function() {
- var f = document.forms[0];
-
- f.numcols.value = tinyMCEPopup.getWindowArg('cols', 1);
- f.numrows.value = tinyMCEPopup.getWindowArg('rows', 1);
- },
-
- merge : function() {
- var func, f = document.forms[0];
-
- tinyMCEPopup.restoreSelection();
-
- func = tinyMCEPopup.getWindowArg('onaction');
-
- func({
- cols : f.numcols.value,
- rows : f.numrows.value
- });
-
- tinyMCEPopup.close();
- }
-};
-
-tinyMCEPopup.onInit.add(MergeCellsDialog.init, MergeCellsDialog);
diff --git a/program/js/tiny_mce/plugins/table/js/row.js b/program/js/tiny_mce/plugins/table/js/row.js
deleted file mode 100644
index 0c678de46..000000000
--- a/program/js/tiny_mce/plugins/table/js/row.js
+++ /dev/null
@@ -1,254 +0,0 @@
-tinyMCEPopup.requireLangPack();
-
-function init() {
- tinyMCEPopup.resizeToInnerSize();
-
- document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
- document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
-
- var inst = tinyMCEPopup.editor;
- var dom = inst.dom;
- var trElm = dom.getParent(inst.selection.getStart(), "tr");
- var formObj = document.forms[0];
- var st = dom.parseStyle(dom.getAttrib(trElm, "style"));
-
- // Get table row data
- var rowtype = trElm.parentNode.nodeName.toLowerCase();
- var align = dom.getAttrib(trElm, 'align');
- var valign = dom.getAttrib(trElm, 'valign');
- var height = trimSize(getStyle(trElm, 'height', 'height'));
- var className = dom.getAttrib(trElm, 'class');
- var bgcolor = convertRGBToHex(getStyle(trElm, 'bgcolor', 'backgroundColor'));
- var backgroundimage = getStyle(trElm, 'background', 'backgroundImage').replace(new RegExp("url\\(['\"]?([^'\"]*)['\"]?\\)", 'gi'), "$1");
- var id = dom.getAttrib(trElm, 'id');
- var lang = dom.getAttrib(trElm, 'lang');
- var dir = dom.getAttrib(trElm, 'dir');
-
- selectByValue(formObj, 'rowtype', rowtype);
- setActionforRowType(formObj, rowtype);
-
- // Any cells selected
- if (dom.select('td.mceSelected,th.mceSelected', trElm).length == 0) {
- // Setup form
- addClassesToList('class', 'table_row_styles');
- TinyMCE_EditableSelects.init();
-
- formObj.bgcolor.value = bgcolor;
- formObj.backgroundimage.value = backgroundimage;
- formObj.height.value = height;
- formObj.id.value = id;
- formObj.lang.value = lang;
- formObj.style.value = dom.serializeStyle(st);
- selectByValue(formObj, 'align', align);
- selectByValue(formObj, 'valign', valign);
- selectByValue(formObj, 'class', className, true, true);
- selectByValue(formObj, 'dir', dir);
-
- // Resize some elements
- if (isVisible('backgroundimagebrowser'))
- document.getElementById('backgroundimage').style.width = '180px';
-
- updateColor('bgcolor_pick', 'bgcolor');
- } else
- tinyMCEPopup.dom.hide('action');
-}
-
-function updateAction() {
- var inst = tinyMCEPopup.editor, dom = inst.dom, trElm, tableElm, formObj = document.forms[0];
- var action = getSelectValue(formObj, 'action');
-
- if (!AutoValidator.validate(formObj)) {
- tinyMCEPopup.alert(AutoValidator.getErrorMessages(formObj).join('. ') + '.');
- return false;
- }
-
- tinyMCEPopup.restoreSelection();
- trElm = dom.getParent(inst.selection.getStart(), "tr");
- tableElm = dom.getParent(inst.selection.getStart(), "table");
-
- // Update all selected rows
- if (dom.select('td.mceSelected,th.mceSelected', trElm).length > 0) {
- tinymce.each(tableElm.rows, function(tr) {
- var i;
-
- for (i = 0; i < tr.cells.length; i++) {
- if (dom.hasClass(tr.cells[i], 'mceSelected')) {
- updateRow(tr, true);
- return;
- }
- }
- });
-
- inst.addVisual();
- inst.nodeChanged();
- inst.execCommand('mceEndUndoLevel');
- tinyMCEPopup.close();
- return;
- }
-
- switch (action) {
- case "row":
- updateRow(trElm);
- break;
-
- case "all":
- var rows = tableElm.getElementsByTagName("tr");
-
- for (var i=0; i<rows.length; i++)
- updateRow(rows[i], true);
-
- break;
-
- case "odd":
- case "even":
- var rows = tableElm.getElementsByTagName("tr");
-
- for (var i=0; i<rows.length; i++) {
- if ((i % 2 == 0 && action == "odd") || (i % 2 != 0 && action == "even"))
- updateRow(rows[i], true, true);
- }
-
- break;
- }
-
- inst.addVisual();
- inst.nodeChanged();
- inst.execCommand('mceEndUndoLevel');
- tinyMCEPopup.close();
-}
-
-function updateRow(tr_elm, skip_id, skip_parent) {
- var inst = tinyMCEPopup.editor;
- var formObj = document.forms[0];
- var dom = inst.dom;
- var curRowType = tr_elm.parentNode.nodeName.toLowerCase();
- var rowtype = getSelectValue(formObj, 'rowtype');
- var doc = inst.getDoc();
-
- // Update row element
- if (!skip_id)
- dom.setAttrib(tr_elm, 'id', formObj.id.value);
-
- dom.setAttrib(tr_elm, 'align', getSelectValue(formObj, 'align'));
- dom.setAttrib(tr_elm, 'vAlign', getSelectValue(formObj, 'valign'));
- dom.setAttrib(tr_elm, 'lang', formObj.lang.value);
- dom.setAttrib(tr_elm, 'dir', getSelectValue(formObj, 'dir'));
- dom.setAttrib(tr_elm, 'style', dom.serializeStyle(dom.parseStyle(formObj.style.value)));
- dom.setAttrib(tr_elm, 'class', getSelectValue(formObj, 'class'));
-
- // Clear deprecated attributes
- dom.setAttrib(tr_elm, 'background', '');
- dom.setAttrib(tr_elm, 'bgColor', '');
- dom.setAttrib(tr_elm, 'height', '');
-
- // Set styles
- tr_elm.style.height = getCSSSize(formObj.height.value);
- tr_elm.style.backgroundColor = formObj.bgcolor.value;
-
- if (formObj.backgroundimage.value != "")
- tr_elm.style.backgroundImage = "url('" + formObj.backgroundimage.value + "')";
- else
- tr_elm.style.backgroundImage = '';
-
- // Setup new rowtype
- if (curRowType != rowtype && !skip_parent) {
- // first, clone the node we are working on
- var newRow = tr_elm.cloneNode(1);
-
- // next, find the parent of its new destination (creating it if necessary)
- var theTable = dom.getParent(tr_elm, "table");
- var dest = rowtype;
- var newParent = null;
- for (var i = 0; i < theTable.childNodes.length; i++) {
- if (theTable.childNodes[i].nodeName.toLowerCase() == dest)
- newParent = theTable.childNodes[i];
- }
-
- if (newParent == null) {
- newParent = doc.createElement(dest);
-
- if (theTable.firstChild.nodeName == 'CAPTION')
- inst.dom.insertAfter(newParent, theTable.firstChild);
- else
- theTable.insertBefore(newParent, theTable.firstChild);
- }
-
- // append the row to the new parent
- newParent.appendChild(newRow);
-
- // remove the original
- tr_elm.parentNode.removeChild(tr_elm);
-
- // set tr_elm to the new node
- tr_elm = newRow;
- }
-
- dom.setAttrib(tr_elm, 'style', dom.serializeStyle(dom.parseStyle(tr_elm.style.cssText)));
-}
-
-function changedBackgroundImage() {
- var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
- var st = dom.parseStyle(formObj.style.value);
-
- st['background-image'] = "url('" + formObj.backgroundimage.value + "')";
-
- formObj.style.value = dom.serializeStyle(st);
-}
-
-function changedStyle() {
- var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
- var st = dom.parseStyle(formObj.style.value);
-
- if (st['background-image'])
- formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
- else
- formObj.backgroundimage.value = '';
-
- if (st['height'])
- formObj.height.value = trimSize(st['height']);
-
- if (st['background-color']) {
- formObj.bgcolor.value = st['background-color'];
- updateColor('bgcolor_pick','bgcolor');
- }
-}
-
-function changedSize() {
- var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
- var st = dom.parseStyle(formObj.style.value);
-
- var height = formObj.height.value;
- if (height != "")
- st['height'] = getCSSSize(height);
- else
- st['height'] = "";
-
- formObj.style.value = dom.serializeStyle(st);
-}
-
-function changedColor() {
- var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
- var st = dom.parseStyle(formObj.style.value);
-
- st['background-color'] = formObj.bgcolor.value;
-
- formObj.style.value = dom.serializeStyle(st);
-}
-
-function changedRowType() {
- var formObj = document.forms[0];
- var rowtype = getSelectValue(formObj, 'rowtype');
-
- setActionforRowType(formObj, rowtype);
-
-}
-
-function setActionforRowType(formObj, rowtype) {
- if (rowtype === "tbody") {
- formObj.action.disabled = false;
- } else {
- selectByValue(formObj, 'action', "row");
- formObj.action.disabled = true;
- }
-}
-tinyMCEPopup.onInit.add(init);
diff --git a/program/js/tiny_mce/plugins/table/js/table.js b/program/js/tiny_mce/plugins/table/js/table.js
deleted file mode 100644
index f427f5f87..000000000
--- a/program/js/tiny_mce/plugins/table/js/table.js
+++ /dev/null
@@ -1,501 +0,0 @@
-tinyMCEPopup.requireLangPack();
-
-var action, orgTableWidth, orgTableHeight, dom = tinyMCEPopup.editor.dom;
-
-function insertTable() {
- var formObj = document.forms[0];
- var inst = tinyMCEPopup.editor, dom = inst.dom;
- var cols = 2, rows = 2, border = 0, cellpadding = -1, cellspacing = -1, align, width, height, className, caption, frame, rules;
- var html = '', capEl, elm;
- var cellLimit, rowLimit, colLimit;
-
- tinyMCEPopup.restoreSelection();
-
- if (!AutoValidator.validate(formObj)) {
- tinyMCEPopup.alert(AutoValidator.getErrorMessages(formObj).join('. ') + '.');
- return false;
- }
-
- elm = dom.getParent(inst.selection.getNode(), 'table');
-
- // Get form data
- cols = formObj.elements['cols'].value;
- rows = formObj.elements['rows'].value;
- border = formObj.elements['border'].value != "" ? formObj.elements['border'].value : 0;
- cellpadding = formObj.elements['cellpadding'].value != "" ? formObj.elements['cellpadding'].value : "";
- cellspacing = formObj.elements['cellspacing'].value != "" ? formObj.elements['cellspacing'].value : "";
- align = getSelectValue(formObj, "align");
- frame = getSelectValue(formObj, "tframe");
- rules = getSelectValue(formObj, "rules");
- width = formObj.elements['width'].value;
- height = formObj.elements['height'].value;
- bordercolor = formObj.elements['bordercolor'].value;
- bgcolor = formObj.elements['bgcolor'].value;
- className = getSelectValue(formObj, "class");
- id = formObj.elements['id'].value;
- summary = formObj.elements['summary'].value;
- style = formObj.elements['style'].value;
- dir = formObj.elements['dir'].value;
- lang = formObj.elements['lang'].value;
- background = formObj.elements['backgroundimage'].value;
- caption = formObj.elements['caption'].checked;
-
- cellLimit = tinyMCEPopup.getParam('table_cell_limit', false);
- rowLimit = tinyMCEPopup.getParam('table_row_limit', false);
- colLimit = tinyMCEPopup.getParam('table_col_limit', false);
-
- // Validate table size
- if (colLimit && cols > colLimit) {
- tinyMCEPopup.alert(inst.getLang('table_dlg.col_limit').replace(/\{\$cols\}/g, colLimit));
- return false;
- } else if (rowLimit && rows > rowLimit) {
- tinyMCEPopup.alert(inst.getLang('table_dlg.row_limit').replace(/\{\$rows\}/g, rowLimit));
- return false;
- } else if (cellLimit && cols * rows > cellLimit) {
- tinyMCEPopup.alert(inst.getLang('table_dlg.cell_limit').replace(/\{\$cells\}/g, cellLimit));
- return false;
- }
-
- // Update table
- if (action == "update") {
- dom.setAttrib(elm, 'cellPadding', cellpadding, true);
- dom.setAttrib(elm, 'cellSpacing', cellspacing, true);
-
- if (!isCssSize(border)) {
- dom.setAttrib(elm, 'border', border);
- } else {
- dom.setAttrib(elm, 'border', '');
- }
-
- if (border == '') {
- dom.setStyle(elm, 'border-width', '');
- dom.setStyle(elm, 'border', '');
- dom.setAttrib(elm, 'border', '');
- }
-
- dom.setAttrib(elm, 'align', align);
- dom.setAttrib(elm, 'frame', frame);
- dom.setAttrib(elm, 'rules', rules);
- dom.setAttrib(elm, 'class', className);
- dom.setAttrib(elm, 'style', style);
- dom.setAttrib(elm, 'id', id);
- dom.setAttrib(elm, 'summary', summary);
- dom.setAttrib(elm, 'dir', dir);
- dom.setAttrib(elm, 'lang', lang);
-
- capEl = inst.dom.select('caption', elm)[0];
-
- if (capEl && !caption)
- capEl.parentNode.removeChild(capEl);
-
- if (!capEl && caption) {
- capEl = elm.ownerDocument.createElement('caption');
-
- if (!tinymce.isIE || tinymce.isIE11)
- capEl.innerHTML = '<br data-mce-bogus="1"/>';
-
- elm.insertBefore(capEl, elm.firstChild);
- }
-
- if (width && inst.settings.inline_styles) {
- dom.setStyle(elm, 'width', width);
- dom.setAttrib(elm, 'width', '');
- } else {
- dom.setAttrib(elm, 'width', width, true);
- dom.setStyle(elm, 'width', '');
- }
-
- // Remove these since they are not valid XHTML
- dom.setAttrib(elm, 'borderColor', '');
- dom.setAttrib(elm, 'bgColor', '');
- dom.setAttrib(elm, 'background', '');
-
- if (height && inst.settings.inline_styles) {
- dom.setStyle(elm, 'height', height);
- dom.setAttrib(elm, 'height', '');
- } else {
- dom.setAttrib(elm, 'height', height, true);
- dom.setStyle(elm, 'height', '');
- }
-
- if (background != '')
- elm.style.backgroundImage = "url('" + background + "')";
- else
- elm.style.backgroundImage = '';
-
-/* if (tinyMCEPopup.getParam("inline_styles")) {
- if (width != '')
- elm.style.width = getCSSSize(width);
- }*/
-
- if (bordercolor != "") {
- elm.style.borderColor = bordercolor;
- elm.style.borderStyle = elm.style.borderStyle == "" ? "solid" : elm.style.borderStyle;
- elm.style.borderWidth = cssSize(border);
- } else
- elm.style.borderColor = '';
-
- elm.style.backgroundColor = bgcolor;
- elm.style.height = getCSSSize(height);
-
- inst.addVisual();
-
- // Fix for stange MSIE align bug
- //elm.outerHTML = elm.outerHTML;
-
- inst.nodeChanged();
- inst.execCommand('mceEndUndoLevel', false, {}, {skip_undo: true});
-
- // Repaint if dimensions changed
- if (formObj.width.value != orgTableWidth || formObj.height.value != orgTableHeight)
- inst.execCommand('mceRepaint');
-
- tinyMCEPopup.close();
- return true;
- }
-
- // Create new table
- html += '<table';
-
- html += makeAttrib('id', id);
- if (!isCssSize(border)) {
- html += makeAttrib('border', border);
- }
-
- html += makeAttrib('cellpadding', cellpadding);
- html += makeAttrib('cellspacing', cellspacing);
- html += makeAttrib('data-mce-new', '1');
-
- if (width && inst.settings.inline_styles) {
- if (style)
- style += '; ';
-
- // Force px
- if (/^[0-9\.]+$/.test(width))
- width += 'px';
-
- style += 'width: ' + width;
- } else
- html += makeAttrib('width', width);
-
-/* if (height) {
- if (style)
- style += '; ';
-
- style += 'height: ' + height;
- }*/
-
- //html += makeAttrib('height', height);
- //html += makeAttrib('bordercolor', bordercolor);
- //html += makeAttrib('bgcolor', bgcolor);
- html += makeAttrib('align', align);
- html += makeAttrib('frame', frame);
- html += makeAttrib('rules', rules);
- html += makeAttrib('class', className);
- html += makeAttrib('style', style);
- html += makeAttrib('summary', summary);
- html += makeAttrib('dir', dir);
- html += makeAttrib('lang', lang);
- html += '>';
-
- if (caption) {
- if (!tinymce.isIE || tinymce.isIE11)
- html += '<caption><br data-mce-bogus="1"/></caption>';
- else
- html += '<caption></caption>';
- }
-
- for (var y=0; y<rows; y++) {
- html += "<tr>";
-
- for (var x=0; x<cols; x++) {
- if (!tinymce.isIE || tinymce.isIE11)
- html += '<td><br data-mce-bogus="1"/></td>';
- else
- html += '<td></td>';
- }
-
- html += "</tr>";
- }
-
- html += "</table>";
-
- // Move table
- if (inst.settings.fix_table_elements) {
- var patt = '';
-
- inst.focus();
- inst.selection.setContent('<br class="_mce_marker" />');
-
- tinymce.each('h1,h2,h3,h4,h5,h6,p'.split(','), function(n) {
- if (patt)
- patt += ',';
-
- patt += n + ' ._mce_marker';
- });
-
- tinymce.each(inst.dom.select(patt), function(n) {
- inst.dom.split(inst.dom.getParent(n, 'h1,h2,h3,h4,h5,h6,p'), n);
- });
-
- dom.setOuterHTML(dom.select('br._mce_marker')[0], html);
- } else
- inst.execCommand('mceInsertContent', false, html);
-
- tinymce.each(dom.select('table[data-mce-new]'), function(node) {
- var tdorth = dom.select('td,th', node);
-
- // Fixes a bug in IE where the caret cannot be placed after the table if the table is at the end of the document
- if (tinymce.isIE && !tinymce.isIE11 && node.nextSibling == null) {
- if (inst.settings.forced_root_block)
- dom.insertAfter(dom.create(inst.settings.forced_root_block), node);
- else
- dom.insertAfter(dom.create('br', {'data-mce-bogus': '1'}), node);
- }
-
- try {
- // IE9 might fail to do this selection
- inst.selection.setCursorLocation(tdorth[0], 0);
- } catch (ex) {
- // Ignore
- }
-
- dom.setAttrib(node, 'data-mce-new', '');
- });
-
- inst.addVisual();
- inst.execCommand('mceEndUndoLevel', false, {}, {skip_undo: true});
-
- tinyMCEPopup.close();
-}
-
-function makeAttrib(attrib, value) {
- var formObj = document.forms[0];
- var valueElm = formObj.elements[attrib];
-
- if (typeof(value) == "undefined" || value == null) {
- value = "";
-
- if (valueElm)
- value = valueElm.value;
- }
-
- if (value == "")
- return "";
-
- // XML encode it
- value = value.replace(/&/g, '&amp;');
- value = value.replace(/\"/g, '&quot;');
- value = value.replace(/</g, '&lt;');
- value = value.replace(/>/g, '&gt;');
-
- return ' ' + attrib + '="' + value + '"';
-}
-
-function init() {
- tinyMCEPopup.resizeToInnerSize();
-
- document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
- document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
- document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor');
- document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
-
- var cols = 2, rows = 2, border = tinyMCEPopup.getParam('table_default_border', '0'), cellpadding = tinyMCEPopup.getParam('table_default_cellpadding', ''), cellspacing = tinyMCEPopup.getParam('table_default_cellspacing', '');
- var align = "", width = "", height = "", bordercolor = "", bgcolor = "", className = "";
- var id = "", summary = "", style = "", dir = "", lang = "", background = "", bgcolor = "", bordercolor = "", rules = "", frame = "";
- var inst = tinyMCEPopup.editor, dom = inst.dom;
- var formObj = document.forms[0];
- var elm = dom.getParent(inst.selection.getNode(), "table");
-
- // Hide advanced fields that isn't available in the schema
- tinymce.each("summary id rules dir style frame".split(" "), function(name) {
- var tr = tinyMCEPopup.dom.getParent(name, "tr") || tinyMCEPopup.dom.getParent("t" + name, "tr");
-
- if (tr && !tinyMCEPopup.editor.schema.isValid("table", name)) {
- tr.style.display = 'none';
- }
- });
-
- action = tinyMCEPopup.getWindowArg('action');
-
- if (!action)
- action = elm ? "update" : "insert";
-
- if (elm && action != "insert") {
- var rowsAr = elm.rows;
- var cols = 0;
- for (var i=0; i<rowsAr.length; i++)
- if (rowsAr[i].cells.length > cols)
- cols = rowsAr[i].cells.length;
-
- cols = cols;
- rows = rowsAr.length;
-
- st = dom.parseStyle(dom.getAttrib(elm, "style"));
- border = trimSize(getStyle(elm, 'border', 'borderWidth'));
- cellpadding = dom.getAttrib(elm, 'cellpadding', "");
- cellspacing = dom.getAttrib(elm, 'cellspacing', "");
- width = trimSize(getStyle(elm, 'width', 'width'));
- height = trimSize(getStyle(elm, 'height', 'height'));
- bordercolor = convertRGBToHex(getStyle(elm, 'bordercolor', 'borderLeftColor'));
- bgcolor = convertRGBToHex(getStyle(elm, 'bgcolor', 'backgroundColor'));
- align = dom.getAttrib(elm, 'align', align);
- frame = dom.getAttrib(elm, 'frame');
- rules = dom.getAttrib(elm, 'rules');
- className = tinymce.trim(dom.getAttrib(elm, 'class').replace(/mceItem.+/g, ''));
- id = dom.getAttrib(elm, 'id');
- summary = dom.getAttrib(elm, 'summary');
- style = dom.serializeStyle(st);
- dir = dom.getAttrib(elm, 'dir');
- lang = dom.getAttrib(elm, 'lang');
- background = getStyle(elm, 'background', 'backgroundImage').replace(new RegExp("url\\(['\"]?([^'\"]*)['\"]?\\)", 'gi'), "$1");
- formObj.caption.checked = elm.getElementsByTagName('caption').length > 0;
-
- orgTableWidth = width;
- orgTableHeight = height;
-
- action = "update";
- formObj.insert.value = inst.getLang('update');
- }
-
- addClassesToList('class', "table_styles");
- TinyMCE_EditableSelects.init();
-
- // Update form
- selectByValue(formObj, 'align', align);
- selectByValue(formObj, 'tframe', frame);
- selectByValue(formObj, 'rules', rules);
- selectByValue(formObj, 'class', className, true, true);
- formObj.cols.value = cols;
- formObj.rows.value = rows;
- formObj.border.value = border;
- formObj.cellpadding.value = cellpadding;
- formObj.cellspacing.value = cellspacing;
- formObj.width.value = width;
- formObj.height.value = height;
- formObj.bordercolor.value = bordercolor;
- formObj.bgcolor.value = bgcolor;
- formObj.id.value = id;
- formObj.summary.value = summary;
- formObj.style.value = style;
- formObj.dir.value = dir;
- formObj.lang.value = lang;
- formObj.backgroundimage.value = background;
-
- updateColor('bordercolor_pick', 'bordercolor');
- updateColor('bgcolor_pick', 'bgcolor');
-
- // Resize some elements
- if (isVisible('backgroundimagebrowser'))
- document.getElementById('backgroundimage').style.width = '180px';
-
- // Disable some fields in update mode
- if (action == "update") {
- formObj.cols.disabled = true;
- formObj.rows.disabled = true;
- }
-}
-
-function changedSize() {
- var formObj = document.forms[0];
- var st = dom.parseStyle(formObj.style.value);
-
-/* var width = formObj.width.value;
- if (width != "")
- st['width'] = tinyMCEPopup.getParam("inline_styles") ? getCSSSize(width) : "";
- else
- st['width'] = "";*/
-
- var height = formObj.height.value;
- if (height != "")
- st['height'] = getCSSSize(height);
- else
- st['height'] = "";
-
- formObj.style.value = dom.serializeStyle(st);
-}
-
-function isCssSize(value) {
- return /^[0-9.]+(%|in|cm|mm|em|ex|pt|pc|px)$/.test(value);
-}
-
-function cssSize(value, def) {
- value = tinymce.trim(value || def);
-
- if (!isCssSize(value)) {
- return parseInt(value, 10) + 'px';
- }
-
- return value;
-}
-
-function changedBackgroundImage() {
- var formObj = document.forms[0];
- var st = dom.parseStyle(formObj.style.value);
-
- st['background-image'] = "url('" + formObj.backgroundimage.value + "')";
-
- formObj.style.value = dom.serializeStyle(st);
-}
-
-function changedBorder() {
- var formObj = document.forms[0];
- var st = dom.parseStyle(formObj.style.value);
-
- // Update border width if the element has a color
- if (formObj.border.value != "" && (isCssSize(formObj.border.value) || formObj.bordercolor.value != ""))
- st['border-width'] = cssSize(formObj.border.value);
- else {
- if (!formObj.border.value) {
- st['border'] = '';
- st['border-width'] = '';
- }
- }
-
- formObj.style.value = dom.serializeStyle(st);
-}
-
-function changedColor() {
- var formObj = document.forms[0];
- var st = dom.parseStyle(formObj.style.value);
-
- st['background-color'] = formObj.bgcolor.value;
-
- if (formObj.bordercolor.value != "") {
- st['border-color'] = formObj.bordercolor.value;
-
- // Add border-width if it's missing
- if (!st['border-width'])
- st['border-width'] = cssSize(formObj.border.value, 1);
- }
-
- formObj.style.value = dom.serializeStyle(st);
-}
-
-function changedStyle() {
- var formObj = document.forms[0];
- var st = dom.parseStyle(formObj.style.value);
-
- if (st['background-image'])
- formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\(['\"]?([^'\"]*)['\"]?\\)", 'gi'), "$1");
- else
- formObj.backgroundimage.value = '';
-
- if (st['width'])
- formObj.width.value = trimSize(st['width']);
-
- if (st['height'])
- formObj.height.value = trimSize(st['height']);
-
- if (st['background-color']) {
- formObj.bgcolor.value = st['background-color'];
- updateColor('bgcolor_pick','bgcolor');
- }
-
- if (st['border-color']) {
- formObj.bordercolor.value = st['border-color'];
- updateColor('bordercolor_pick','bordercolor');
- }
-}
-
-tinyMCEPopup.onInit.add(init);
diff --git a/program/js/tiny_mce/plugins/table/langs/ar_dlg.js b/program/js/tiny_mce/plugins/table/langs/ar_dlg.js
deleted file mode 100644
index bb2d617d7..000000000
--- a/program/js/tiny_mce/plugins/table/langs/ar_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ar.table_dlg',{"rules_border":"\u0627\u0644\u0628\u0631\u0648\u0627\u0632","rules_box":"\u0635\u0646\u062f\u0648\u0642","rules_vsides":"\u0627\u0644\u062c\u0648\u0627\u0646\u0628 \u0627\u0644\u0639\u0645\u0648\u062f\u064a\u0629","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"\u0627\u0644\u062c\u0648\u0627\u0646\u0628 \u0627\u0644\u0623\u0641\u0642\u064a\u0629","rules_below":"\u0623\u062f\u0646\u0627\u0647","rules_above":"\u0623\u0639\u0644\u0649","rules_void":"\u0623\u0644\u063a\u0649",rules:"\u0642\u0648\u0627\u0639\u062f","frame_all":"\u0643\u0627\u0641\u0629","frame_cols":"\u0639\u062f\u062f \u0627\u0644\u0623\u0639\u0645\u062f\u0629","frame_rows":"\u0639\u062f\u062f \u0627\u0644\u0635\u0641\u0648\u0641","frame_groups":"\u0627\u0644\u0645\u062c\u0645\u0648\u0639\u0627\u062a","frame_none":"\u0644\u0627 \u0634\u064a\u0621",frame:"\u0627\u0644\u0625\u0637\u0627\u0631",caption:"\u0627\u0644\u062c\u062f\u0648\u0644 \u0627\u0644\u062a\u0648\u0636\u064a\u062d\u064a\u0629","missing_scope":"\u0647\u0644 \u0627\u0646\u062a \u0645\u062a\u0623\u0643\u062f \u0627\u0646\u0643 \u062a\u0631\u064a\u062f \u0627\u0644\u0625\u0633\u062a\u0645\u0631\u0627\u0631 \u0628\u062f\u0648\u0646 \u062a\u062d\u062f\u064a\u062f \u0631\u0623\u0633 \u0644\u0644\u062c\u062f\u0648\u0644.. \u0642\u062f \u064a\u0643\u0648\u0646 \u0635\u0639\u0628 \u0639\u0644\u0649 \u0632\u0648\u0649 \u0627\u0644\u0625\u062d\u062a\u064a\u0627\u062c\u0627\u062a \u0627\u0644\u062e\u0627\u0635\u0647 \u0641\u0647\u0645 \u0645\u062d\u062a\u0648\u064a\u0627\u062a \u062c\u062f\u0648\u0644\u0643","cell_limit":"\u0644\u0642\u062f \u062a\u062c\u0627\u0648\u0632\u062a \u0627\u0644\u062d\u062f \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0639\u062f\u062f \u0645\u0646 \u0627\u0644\u062e\u0644\u0627\u064a\u0627 {$cells}.","row_limit":"\u0644\u0642\u062f \u062a\u062c\u0627\u0648\u0632\u062a \u0627\u0644\u062d\u062f \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0639\u062f\u062f \u0627\u0644\u0635\u0641\u0648\u0641 {$rows}.","col_limit":"\u0644\u0642\u062f \u062a\u062c\u0627\u0648\u0632\u062a \u0627\u0644\u062d\u062f \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0639\u062f\u062f \u0623\u0639\u0645\u062f\u0629 {$cols}.",colgroup:"\u0645\u062c\u0645\u0648\u0639\u0629 \u0623\u0639\u0645\u062f\u0629 ",rowgroup:" \u0645\u062c\u0645\u0648\u0639\u0629 \u0635\u0641",scope:"\u0646\u0637\u0627\u0642",tfoot:"\u0645\u0624\u062e\u0631\u0629 \u0627\u0644\u062c\u062f\u0648\u0644",tbody:"\u062c\u0633\u0645 \u0627\u0644\u062c\u062f\u0648\u0644",thead:"\u0631\u0623\u0633 \u0627\u0644\u062c\u062f\u0648\u0644","row_all":"\u062a\u062d\u062f\u064a\u062b \u0643\u0627\u0641\u0629 \u0627\u0644\u0635\u0641\u0648\u0641 \u0641\u064a \u0627\u0644\u062c\u062f\u0648\u0644","row_even":" \u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0635\u0641\u0648\u0641 \u0627\u0644\u0632\u0648\u062c\u064a\u0647 \u0645\u0646 \u0627\u0644\u062c\u062f\u0648\u0644","row_odd":"\u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0635\u0641\u0648\u0641 \u0627\u0644\u0641\u0631\u062f\u064a\u0647 \u0645\u0646 \u0627\u0644\u062c\u062f\u0648\u0644","row_row":"\u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0635\u0641 \u0627\u0644\u062d\u0627\u0644\u064a","cell_all":"\u062a\u062d\u062f\u064a\u062b \u0643\u0644 \u062e\u0644\u0627\u064a\u0627 \u0627\u0644\u062c\u062f\u0648\u0644","cell_row":"\u062a\u062d\u062f\u064a\u062b \u0643\u0627\u0641\u0629 \u0627\u0644\u062e\u0644\u0627\u064a\u0627 \u0641\u064a \u0627\u0644\u0635\u0641","cell_cell":"\u062a\u062d\u062f\u064a\u062b \u0627\u0644\u062e\u0644\u064a\u0629 \u0627\u0644\u062d\u0627\u0644\u064a\u0629",th:"\u0631\u0623\u0633",td:"\u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a",summary:"\u0645\u0644\u062e\u0635",bgimage:"\u0635\u0648\u0631\u0629 \u0627\u0644\u062e\u0644\u0641\u064a\u0629",rtl:"\u0645\u0646 \u0627\u0644\u064a\u0645\u064a\u0646 \u0625\u0644\u0649 \u0627\u0644\u064a\u0633\u0627\u0631",ltr:"\u0645\u0646 \u0627\u0644\u064a\u0633\u0627\u0631 \u0625\u0644\u0649 \u0627\u0644\u064a\u0645\u064a\u0646",mime:"\u0627\u0644\u0647\u062f\u0641 \u0646\u0648\u0639 \u0627\u0644\u0645\u0644\u0641",langcode:"\u0631\u0645\u0632 \u0627\u0644\u0644\u063a\u0629",langdir:"\u0627\u062a\u062c\u0627\u0647 \u0644\u063a\u0629",style:"\u0634\u0643\u0644",id:"\u0627\u0644 \u0623\u064a \u062f\u064a Id","merge_cells_title":"\u062f\u0645\u062c \u0627\u0644\u062e\u0644\u0627\u064a\u0627",bgcolor:"\u0644\u0648\u0646 \u0627\u0644\u062e\u0644\u0641\u064a\u0629",bordercolor:"\u0644\u0648\u0646 \u0627\u0644\u062d\u062f\u0648\u062f","align_bottom":"\u0627\u0633\u0641\u0644","align_top":"\u0627\u0639\u0644\u0649",valign:"\u0627\u0644\u0645\u062d\u0627\u0630\u0627\u0629 \u0627\u0644\u0631\u0623\u0633\u064a\u0647","cell_type":"\u0646\u0648\u0639 \u0627\u0644\u062e\u0644\u064a\u0629","cell_title":"\u062e\u0635\u0627\u0626\u0635 \u062e\u0644\u064a\u0629 \u062c\u062f\u0648\u0644","row_title":"\u062e\u0635\u0627\u0626\u0635 \u0635\u0641 \u062c\u062f\u0648\u0644","align_middle":"\u0648\u0633\u0637","align_right":"\u064a\u0645\u064a\u0646","align_left":"\u064a\u0633\u0627\u0631","align_default":"\u0627\u0644\u0627\u0641\u062a\u0631\u0627\u0636\u064a",align:"\u0627\u0644\u0645\u062d\u0627\u0630\u0627\u0629",border:"\u0627\u0644\u062d\u062f\u0648\u062f",cellpadding:"\u0628\u0637\u0627\u0646\u0629 \u0627\u0644\u062e\u0644\u0627\u064a\u0627",cellspacing:"\u062a\u0628\u0627\u0639\u062f \u0627\u0644\u062e\u0644\u0627\u064a\u0627 ",rows:"\u0627\u0644\u0635\u0641\u0648\u0641",cols:"\u0623\u0639\u0645\u062f\u0629",height:"\u0627\u0631\u062a\u0641\u0627\u0639",width:"\u0639\u0631\u0636",title:"\u0625\u062f\u0631\u0627\u062c/\u062a\u0639\u062f\u064a\u0644 \u062c\u062f\u0648\u0644",rowtype:"\u0635\u0641 \u0641\u064a \u062c\u0632\u0621 \u0627\u0644\u062c\u062f\u0648\u0644","advanced_props":"\u062e\u0635\u0627\u0626\u0635 \u0645\u062a\u0642\u062f\u0645\u0647","general_props":"\u062e\u0635\u0627\u0626\u0635 \u0639\u0627\u0645\u0647","advanced_tab":"\u0645\u062a\u0642\u062f\u0645","general_tab":"\u0639\u0627\u0645","cell_col":"\u062a\u062d\u062f\u064a\u062b \u0643\u0644 \u0627\u0644\u062e\u0644\u0627\u064a\u0627 \u0641\u0649 \u0639\u0645\u0648\u062f"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/az_dlg.js b/program/js/tiny_mce/plugins/table/langs/az_dlg.js
deleted file mode 100644
index 5d5deca5b..000000000
--- a/program/js/tiny_mce/plugins/table/langs/az_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('az.table_dlg',{"rules_border":"s\u0259rh\u0259d","rules_box":"konteyner","rules_vsides":"\u015faquli t\u0259r\u0259fl\u0259r","rules_rhs":"sa\u011f \u00fcf\u00fcqi t\u0259r\u0259fl\u0259r","rules_lhs":"sol \u00fcf\u00fcqi t\u0259r\u0259fl\u0259r","rules_hsides":"\u00fcf\u00fcqi t\u0259r\u0259fl\u0259r","rules_below":"a\u015fa\u011f\u0131dan","rules_above":"yuxar\u0131dan","rules_void":"he\u00e7 n\u0259",rules:"X\u0259ttl\u0259r","frame_all":"ham\u0131s\u0131","frame_cols":"s\u00fctunlar","frame_rows":"s\u0259trl\u0259r","frame_groups":"qruplar","frame_none":"he\u00e7n\u0259",frame:"\u00c7\u0259r\u00e7iv\u0259",caption:"C\u0259dv\u0259l ba\u015fl\u0131\u011f\u0131","missing_scope":"\u018fminsiniz ki, ba\u015fl\u0131q \u00f6z\u0259yinin h\u0259ddini g\u00f6st\u0259rm\u0259d\u0259n davam etm\u0259k ist\u0259yirsiniz? Bunsuz b\u0259zi i\u015f qabiliyy\u0259ti a\u015fa\u011f\u0131 olan istifad\u0259\u00e7il\u0259r\u0259 c\u0259dv\u0259lin m\u0259lumatlar\u0131 v\u0259 t\u0259rkibini anlamaq \u00e7\u0259tin olacaq.","cell_limit":"Siz \u00f6z\u0259kl\u0259rd\u0259 {$cells} maksimum say\u0131 a\u015fd\u0131n\u0131z.","row_limit":"Siz s\u0259trl\u0259rd\u0259 {$rows} maksimum say\u0131 a\u015fd\u0131n\u0131z.","col_limit":"Siz s\u00fctunlarda {$cols} maksimum say\u0131 a\u015fd\u0131n\u0131z.",colgroup:"S\u00fctun qrupu",rowgroup:"S\u0259tr qrupu",scope:"H\u0259dd",tfoot:"C\u0259dv\u0259lin a\u015fa\u011f\u0131 hiss\u0259si",tbody:"C\u0259dv\u0259lin \u0259sas hiss\u0259si",thead:"C\u0259dv\u0259lin yuxar\u0131 hiss\u0259si","row_all":"C\u0259dv\u0259ld\u0259ki b\u00fct\u00fcn s\u0259trl\u0259ri yenil\u0259","row_even":"C\u0259dv\u0259ld\u0259ki c\u00fct (\u0259d\u0259d) s\u0259trl\u0259ri yenil\u0259","row_odd":"C\u0259d\u0259ld\u0259ki t\u0259k (\u0259d\u0259d) s\u0259trl\u0259ri yenil\u0259","row_row":"Haz\u0131rki s\u0259tri yenil\u0259","cell_all":"C\u0259dv\u0259ld\u0259ki b\u00fct\u00fcn \u00f6z\u0259kl\u0259ri yenil\u0259","cell_row":"S\u0259trd\u0259ki b\u00fct\u00fcn \u00f6z\u0259kl\u0259ri yenil\u0259","cell_cell":"Haz\u0131rki \u00f6z\u0259yi yenil\u0259",th:"Ba\u015fl\u0131q",td:"Veril\u0259nl\u0259r",summary:"X\u00fclas\u0259",bgimage:"Fon \u015f\u0259kli",rtl:"Sa\u011fda-sola",ltr:"Solda-sa\u011fa",mime:"H\u0259d\u0259fli MIME-n\u00f6v",langcode:"Dil kodu",langdir:"Dil istiqam\u0259ti",style:"Stil",id:"\u0130dentifikator","merge_cells_title":"\u00d6z\u0259k stili",bgcolor:"Fon r\u0259ngi",bordercolor:"S\u0259rh\u0259d r\u0259ngi","align_bottom":"A\u015fa\u011f\u0131 il\u0259","align_top":"Yuxar\u0131 il\u0259",valign:"\u015eaquli tarazla\u015fma","cell_type":"\u00d6z\u0259k n\u00f6v\u00fc","cell_title":"\u00d6z\u0259k x\u00fcsusiyy\u0259ti","row_title":"S\u0259tr x\u00fcsusiyy\u0259ti","align_middle":"M\u0259rk\u0259z il\u0259","align_right":"Sa\u011fa","align_left":"Sola","align_default":"Default",align:"Tarazla\u015fd\u0131rma",border:"S\u0259rh\u0259d",cellpadding:"\u00d6z\u0259kl\u0259rd\u0259 doldurma",cellspacing:"\u00d6z\u0259kl\u0259r aras\u0131ndak\u0131 m\u0259saf\u0259",rows:"S\u0259trl\u0259r",cols:"S\u00fctunlar",height:"H\u00fcnd\u00fcrl\u00fcy\u00fc",width:"Eni",title:"C\u0259dv\u0259li \u0259lav\u0259 et/d\u0259yi\u015fdir",rowtype:"C\u0259dv\u0259l hiss\u0259sind\u0259ki s\u0259tr","advanced_props":"\u018flav\u0259 x\u00fcsusiyy\u0259tl\u0259r","general_props":"\u00dcmumi x\u00fcsusiyy\u0259tl\u0259r","advanced_tab":"\u018flav\u0259l\u0259r","general_tab":"\u00dcmumi","cell_col":"Update all cells in column"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/bg_dlg.js b/program/js/tiny_mce/plugins/table/langs/bg_dlg.js
deleted file mode 100644
index 30d4181d2..000000000
--- a/program/js/tiny_mce/plugins/table/langs/bg_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bg.table_dlg',{"rules_border":"\u0433\u0440\u0430\u043d\u0438\u0446\u0430","rules_box":"\u043a\u0443\u0442\u0438\u044f","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"\u0441\u043b\u0435\u0434","rules_above":"\u043f\u0440\u0435\u0434\u0438","rules_void":"void",rules:"\u041f\u0440\u0430\u0432\u0438\u043b\u0430","frame_all":"\u0432\u0441\u0438\u0447\u043a\u0438","frame_cols":"\u043a\u043e\u043b\u043e\u043d\u0438","frame_rows":"\u0440\u0435\u0434\u043e\u0432\u0435","frame_groups":"\u0433\u0440\u0443\u043f\u0438","frame_none":"\u0431\u0435\u0437",frame:"\u0424\u0440\u0435\u0439\u043c",caption:"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430","missing_scope":"\u0421\u0438\u0433\u0443\u0440\u0435\u043d \u043b\u0438 \u0441\u0442\u0435, \u0447\u0435 \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u0434\u0430 \u043f\u0440\u043e\u0434\u044a\u043b\u0436\u0438\u0442\u0435 \u0431\u0435\u0437 \u0434\u0430 \u0441\u043b\u043e\u0436\u0438\u0442\u0435 \u043e\u0431\u0445\u0432\u0430\u0442 \u043d\u0430 \u0433\u043b\u0430\u0432\u0430\u0442\u0430 \u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0430\u0442\u0430. \u0411\u0435\u0437 \u043d\u0435\u0433\u043e, \u043d\u044f\u043a\u043e\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0438 \u0441 \u0443\u0432\u0440\u0435\u0436\u0434\u0430\u043d\u0438\u044f \u043c\u043e\u0433\u0430\u0442 \u0434\u0430 \u0438\u043c\u0430\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0434\u0430 \u0440\u0430\u0437\u0431\u0435\u0440\u0430\u0442 \u0434\u0430\u043d\u043d\u0438\u0442\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430.","cell_limit":"\u041f\u0440\u0435\u0432\u0438\u0448\u0438\u0445\u0442\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u043d\u0430\u0442\u0430 \u0431\u0440\u043e\u0439\u043a\u0430 \u043a\u043b\u0435\u0442\u043a\u0438: {$cells}.","row_limit":"\u041f\u0440\u0435\u0432\u0438\u0448\u0438\u0445\u0442\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u043d\u0430\u0442\u0430 \u0431\u0440\u043e\u0439\u043a\u0430 \u0440\u0435\u0434\u043e\u0432\u0435: {$rows}.","col_limit":"\u041f\u0440\u0435\u0432\u0438\u0448\u0438\u0445\u0442\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u043d\u0430\u0442\u0430 \u0431\u0440\u043e\u0439\u043a\u0430 \u043a\u043e\u043b\u043e\u043d\u0438: {$cols}.",colgroup:"\u0413\u0440\u0443\u043f\u0430 \u043a\u043e\u043b\u043e\u043d\u0438",rowgroup:"\u0413\u0440\u0443\u043f\u0430 \u0440\u0435\u0434\u043e\u0432\u0435",scope:"\u041e\u0431\u0445\u0432\u0430\u0442",tfoot:"\u0414\u044a\u043d\u043e \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430",tbody:"\u0422\u044f\u043b\u043e \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430",thead:"\u0413\u043b\u0430\u0432\u0430 \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430","row_all":"\u041e\u0431\u043d\u043e\u0432\u0438 \u0432\u0441\u0438\u0447\u043a\u0438 \u0440\u0435\u0434\u043e\u0432\u0435 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430","row_even":"\u041e\u0431\u043d\u043e\u0432\u0438 \u0447\u0435\u0442\u043d\u0438\u0442\u0435 \u0440\u0435\u0434\u043e\u0432\u0435 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430","row_odd":"\u041e\u0431\u043d\u043e\u0432\u0438 \u043d\u0435\u0447\u0435\u0442\u043d\u0438\u0442\u0435 \u0440\u0435\u0434\u043e\u0432\u0435 \u0432 \u0442\u0430\u043b\u0438\u0446\u0430\u0442\u0430","row_row":"\u041e\u0431\u043d\u043e\u0432\u0438 \u0442\u0435\u043a\u0443\u0449\u0438\u044f \u0440\u0435\u0434","cell_all":"\u041e\u0431\u043d\u043e\u0432\u0438 \u0432\u0441\u0438\u0447\u043a\u0438 \u043a\u043b\u0435\u0442\u043a\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430","cell_row":"\u041e\u0431\u043d\u043e\u0432\u0438 \u0432\u0441\u0438\u0447\u043a\u0438 \u043a\u043b\u0435\u0442\u043a\u0438 \u043d\u0430 \u0440\u0435\u0434\u0430","cell_cell":"\u041e\u0431\u043d\u043e\u0432\u0438 \u0442\u0435\u043a\u0443\u0449\u0430\u0442\u0430 \u043a\u043b\u0435\u0442\u043a\u0430",th:"\u0413\u043b\u0430\u0432\u0430",td:"\u0414\u0430\u043d\u0438\u043d",summary:"\u041e\u0431\u043e\u0431\u0449\u0435\u043d\u0438\u0435",bgimage:"\u0424\u043e\u043d\u043e\u0432\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430",rtl:"\u041e\u0442\u0434\u044f\u0441\u043d\u043e \u043d\u0430 \u043b\u044f\u0432\u043e",ltr:"\u041e\u0442\u043b\u044f\u0432\u043e \u043d\u0430 \u0434\u044f\u0441\u043d\u043e",mime:"MIME \u0442\u0438\u043f",langcode:"\u041a\u043e\u0434 \u043d\u0430 \u0435\u0437\u0438\u043a\u0430",langdir:"\u041f\u043e\u0441\u043e\u043a\u0430 \u043d\u0430 \u0435\u0437\u0438\u043a\u0430",style:"\u0421\u0442\u0438\u043b",id:"Id","merge_cells_title":"\u0421\u043b\u0435\u0439 \u043a\u043b\u0435\u0442\u043a\u0438\u0442\u0435",bgcolor:"\u0426\u0432\u044f\u0442 \u043d\u0430 \u0444\u043e\u043d\u0430",bordercolor:"\u0426\u0432\u044f\u0442 \u043d\u0430 \u0440\u0430\u043c\u043a\u0430\u0442\u0430","align_bottom":"\u0414\u043e\u043b\u0443","align_top":"\u0413\u043e\u0440\u0435",valign:"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u043d\u043e \u043f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435","cell_type":"\u0422\u0438\u043f \u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0430\u0442\u0430","cell_title":"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0430\u0442\u0430","row_title":"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430 \u0440\u0435\u0434\u0430","align_middle":"\u0426\u0435\u043d\u0442\u044a\u0440","align_right":"\u0414\u044f\u0441\u043d\u043e","align_left":"\u041b\u044f\u0432\u043e","align_default":"\u041f\u043e \u043f\u043e\u0434\u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043d\u0435",align:"\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435",border:"\u0420\u0430\u043c\u043a\u0430",cellpadding:"\u041e\u0442\u0441\u0442\u044a\u043f \u0432 \u043a\u043b\u0435\u0442\u043a\u0438\u0442\u0435",cellspacing:"\u0420\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u044a\u0436\u0434\u0443 \u043a\u043b\u0435\u0442\u043a\u0438\u0442\u0435",rows:"\u0420\u0435\u0434\u043e\u0432\u0435",cols:"\u041a\u043e\u043b\u043e\u043d\u0438",height:"\u0412\u0438\u0441\u043e\u0447\u0438\u043d\u0430",width:"\u0428\u0438\u0440\u0438\u043d\u0430",title:"\u0412\u043c\u044a\u043a\u043d\u0438/\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0430",rowtype:"\u0420\u043e\u043b\u044f \u043d\u0430 \u0440\u0435\u0434\u0430","advanced_props":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0437\u0430 \u043d\u0430\u043f\u0440\u0435\u0434\u043d\u0430\u043b\u0438","general_props":"\u041e\u0431\u0449\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438","advanced_tab":"\u0417\u0430 \u043d\u0430\u043f\u0440\u0435\u0434\u043d\u0430\u043b\u0438","general_tab":"\u041e\u0431\u0449\u0438","cell_col":"\u041e\u0431\u043d\u043e\u0432\u0438 \u0432\u0441\u0438\u0447\u043a\u0438 \u043a\u043b\u0435\u0442\u043a\u0438 \u0432 \u043a\u043e\u043b\u043e\u043d\u0430\u0442\u0430"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/bn_dlg.js b/program/js/tiny_mce/plugins/table/langs/bn_dlg.js
deleted file mode 100644
index c422b3ac9..000000000
--- a/program/js/tiny_mce/plugins/table/langs/bn_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bn.table_dlg',{"rules_border":"border","rules_box":"box","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"below","rules_above":"above","rules_void":"void",rules:"Rules","frame_all":"all","frame_cols":"cols","frame_rows":"rows","frame_groups":"groups","frame_none":"none",frame:"Frame",caption:"Table caption","missing_scope":"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.","cell_limit":"You\'ve exceeded the maximum number of cells of {$cells}.","row_limit":"You\'ve exceeded the maximum number of rows of {$rows}.","col_limit":"You\'ve exceeded the maximum number of columns of {$cols}.",colgroup:"Col Group",rowgroup:"Row Group",scope:"Scope",tfoot:"Table Foot",tbody:"Table Body",thead:"Table Head","row_all":"Update all rows in table","row_even":"Update even rows in table","row_odd":"Update odd rows in table","row_row":"Update current row","cell_all":"Update all cells in table","cell_row":"Update all cells in row","cell_cell":"Update current cell",th:"Header",td:"Data",summary:"Summary",bgimage:"Background image",rtl:"Right to left",ltr:"Left to right",mime:"Target MIME type",langcode:"Language code",langdir:"Language direction",style:"Style",id:"Id","merge_cells_title":"Merge table cells",bgcolor:"Background color",bordercolor:"Border color","align_bottom":"Bottom","align_top":"Top",valign:"Vertical alignment","cell_type":"Cell type","cell_title":"Table cell properties","row_title":"Table row properties","align_middle":"Center","align_right":"Right","align_left":"Left","align_default":"Default",align:"Alignment",border:"Border",cellpadding:"Cellpadding",cellspacing:"Cellspacing",rows:"Rows",cols:"Cols",height:"Height",width:"Width",title:"Insert/Modify table",rowtype:"Row in table part","advanced_props":"Advanced properties","general_props":"General properties","advanced_tab":"Advanced","general_tab":"General","cell_col":"Update all cells in column"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/br_dlg.js b/program/js/tiny_mce/plugins/table/langs/br_dlg.js
deleted file mode 100644
index 0572c22e9..000000000
--- a/program/js/tiny_mce/plugins/table/langs/br_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('br.table_dlg',{"rules_border":"Limites","rules_box":"Box","rules_vsides":"Vsides","rules_rhs":"Rhs","rules_lhs":"Lhs","rules_hsides":"Hsides","rules_below":"abaixo","rules_above":"acima","rules_void":"void",rules:"Regras","frame_all":"Todos","frame_cols":"colunas","frame_rows":"Linhas","frame_groups":"Grupos","frame_none":"Nenhum",frame:"Frame",caption:"T\u00edtulo da tabela","missing_scope":"Tem certeza de que quer continuar sem especificar um escopo para esta c\u00e9lula? (Isso poder\u00e1 causar dificuldades a usu\u00e1rios deficientes)","cell_limit":"Excedeu o n\u00famero m\u00e1ximo de c\u00e9lulas de {$cells}.","row_limit":"Excedeu o n\u00famero m\u00e1ximo de linhas de {$rows}.","col_limit":"Excedeu o n\u00famero m\u00e1ximo de colunas de {$cols}.",colgroup:"Grupo colunas",rowgroup:"Grupo linhas",scope:"Alcance",tfoot:"Rodap\u00e9 da tabela",tbody:"Corpo da tabela",thead:"Topo da tabela","row_all":"Atualizar todas as linhas","row_even":"Atualizar linhas pares","row_odd":"Atualizar linhas \u00edmpares","row_row":"Atcualizar esta linha","cell_all":"Atualizar todas as c\u00e9lulas na tabela","cell_row":"Atualizar todas as c\u00e9lulas na linha","cell_cell":"Atualizar esta c\u00e9lula",th:"Campo",td:"Dados",summary:"Sum\u00e1rio",bgimage:"Imagem de fundo",rtl:"Da direita para a esquerda",ltr:"Da esquerda para a direita",mime:"MIME alvo",langcode:"C\u00f3digo da linguagem",langdir:"Dire\u00e7\u00e3o do texto",style:"Estilo",id:"Id","merge_cells_title":"Unir c\u00e9lulas",bgcolor:"Cor de fundo",bordercolor:"Cor dos limites","align_bottom":"Abaixo","align_top":"Topo",valign:"Alinhamento vertical","cell_type":"Tipo de c\u00e9lula","cell_title":"Propriedades de c\u00e9lulas","row_title":"Propriedades de linhas","align_middle":"Centro","align_right":"Direita","align_left":"Esquerda","align_default":"Padr\u00e3o",align:"Alinhamento",border:"Limites",cellpadding:"Cellpadding",cellspacing:"Cellspacing",rows:"Linhas",cols:"Colunas",height:"Altura",width:"Largura",title:"Inserir/modificar tabela",rowtype:"Linha na parte da tabela","advanced_props":"Propriedades avan\u00e7adas","general_props":"Propriedades gerais","advanced_tab":"Avan\u00e7ado","general_tab":"Geral","cell_col":"Update all cells in column"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/bs_dlg.js b/program/js/tiny_mce/plugins/table/langs/bs_dlg.js
deleted file mode 100644
index 11f5d170a..000000000
--- a/program/js/tiny_mce/plugins/table/langs/bs_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bs.table_dlg',{"rules_border":"border","rules_box":"box","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"below","rules_above":"above","rules_void":"void",rules:"Rules","frame_all":"all","frame_cols":"cols","frame_rows":"rows","frame_groups":"groups","frame_none":"none",frame:"Frame",caption:"Opis tablice","missing_scope":"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.","cell_limit":"Prema\u0161ili ste maksimalni broj \u0107elija ({$cells}).","row_limit":"Prema\u0161ili ste maksimalni broj redaka ({$rows}).","col_limit":"Prema\u0161ili ste maksimalni broj stupaca ({$cols}).",colgroup:"Grupa stupaca",rowgroup:"Grupa redaka",scope:"Domet",tfoot:"Podno\u017eje tablice",tbody:"Tijelo tablice",thead:"Zaglavlje tablice","row_all":"Primjeni na sve retke u tablici","row_even":"Primjeni na parne retke u tablici","row_odd":"Primjeni na neparne retke u tablici","row_row":"Primjeni na odabrani redak","cell_all":"Primjeni na sve \u0107elije u tablici","cell_row":"Primjeni na sve \u0107elije u retku","cell_cell":"Primjeni na odabranu \u0107eliju",th:"Zaglavlje",td:"Podatkovna",summary:"Sa\u017eetak",bgimage:"Slika pozadine",rtl:"S desna na lijevo",ltr:"S lijeva na desno",mime:"MIME tip",langcode:"Kod jezika",langdir:"Smjer jezika",style:"Stil",id:"Id","merge_cells_title":"Spoji \u0107elije",bgcolor:"Background color",bordercolor:"Boja obruba","align_bottom":"Dno","align_top":"Vrh",valign:"Okomito poravnavanje","cell_type":"Tip \u0107elije","cell_title":"Svojstva \u0107elije","row_title":"Svojstva retka","align_middle":"Sredina","align_right":"Desno","align_left":"Lijevo","align_default":"Zadano",align:"Poravnavanje",border:"Obrub",cellpadding:"Dopuna \u0107elije",cellspacing:"Razmak \u0107elija",rows:"Redaka",cols:"Stupaca",height:"Visina",width:"\u0160irina",title:"Umetni/uredi tablicu",rowtype:"Row in table part","advanced_props":"Napredna svojstva","general_props":"Osnovna svojstva","advanced_tab":"Napredno","general_tab":"Osnovno","cell_col":"Update all cells in column"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/ca_dlg.js b/program/js/tiny_mce/plugins/table/langs/ca_dlg.js
deleted file mode 100644
index 881c0ae41..000000000
--- a/program/js/tiny_mce/plugins/table/langs/ca_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ca.table_dlg',{"rules_border":"vora","rules_box":"quadre","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"per sota de","rules_above":"per damunt de","rules_void":"buit",rules:"Regles","frame_all":"tot","frame_cols":"columnes","frame_rows":"files","frame_groups":"grups","frame_none":"cap",frame:"Marc",caption:"T\u00edtol de la taula","missing_scope":"Esteu segur que voleu continuar sense indicar un abast per a aquesta cel\u00b7la de cap\u00e7alera. Pot ser dif\u00edcil per a alguns usuaris amb discapacitats entendre el contingut o les dades mostrades a la taula.","cell_limit":"Heu superat el nombre m\u00e0xim de cel\u00b7les de {$cells}..","row_limit":"Heu superat el nombre m\u00e0xim de files de {$rows}.","col_limit":"Heu superat el nombre m\u00e0xim de columnes de {$cols}.",colgroup:"Grup de columnes",rowgroup:"Grup de files",scope:"Abast",tfoot:"Peu de la taula",tbody:"Cos de la taula",thead:"Cap\u00e7alera de la taula","row_all":"Actualitza totes les files","row_even":"Actualitza les files parells","row_odd":"Actualitza les files senars","row_row":"Actualitza la fila","cell_all":"Actualitza totes les cel\u00b7les de la taula","cell_row":"Actualitza totes les cel\u00b7les de la fila","cell_cell":"Actualitza la cel\u00b7la",th:"Cap\u00e7alera",td:"Dades",summary:"Resum",bgimage:"Imatge de fons",rtl:"De dreta a esquerra",ltr:"D\'esquerra a dreta",mime:"Tipus MIME",langcode:"Codi de l\'idioma",langdir:"Direcci\u00f3 de l\'idioma",style:"Estil",id:"Id","merge_cells_title":"Fusiona cel\u00b7les",bgcolor:"Color de fons",bordercolor:"Color de vora","align_bottom":"A baix","align_top":"A dalt",valign:"Alineaci\u00f3 vertical","cell_type":"Tipus de cel\u00b7la","cell_title":"Propietats de cel\u00b7la","row_title":"Propietats de fila","align_middle":"Centre","align_right":"Dreta","align_left":"Esquerra","align_default":"Per defecte",align:"Alineaci\u00f3",border:"Vora",cellpadding:"Separaci\u00f3 de cel\u00b7la",cellspacing:"Espaiat de cel\u00b7la",rows:"Files",cols:"Columnes",height:"Al\u00e7ada",width:"Amplada",title:"Insereix/Modifica taula",rowtype:"Fila","advanced_props":"Propietats avan\u00e7ades","general_props":"Propietats generals","advanced_tab":"Avan\u00e7at","general_tab":"General","cell_col":"Actuaitza totes les cel\u00b7les en la columna"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/cs_dlg.js b/program/js/tiny_mce/plugins/table/langs/cs_dlg.js
deleted file mode 100644
index 735c5214d..000000000
--- a/program/js/tiny_mce/plugins/table/langs/cs_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('cs.table_dlg',{"rules_border":"r\u00e1me\u010dek okolo","rules_box":"box okolo","rules_vsides":"vlevo a vpravo","rules_rhs":"vpravo","rules_lhs":"vlevo","rules_hsides":"naho\u0159e a dole","rules_below":"dole","rules_above":"naho\u0159e","rules_void":"\u017e\u00e1dn\u00fd",rules:"Vykreslen\u00ed m\u0159\u00ed\u017eky","frame_all":"v\u0161e","frame_cols":"sloupce","frame_rows":"\u0159\u00e1dky","frame_groups":"oblasti a skupiny sloupc\u016f","frame_none":"\u017e\u00e1dn\u00e1",frame:"R\u00e1me\u010dek tabulky",caption:"Nadpis tabulky","missing_scope":"Skute\u010dn\u011b chcete pokra\u010dovat bez ur\u010den\u00ed oblasti hlavi\u010dky t\u00e9to tabulky? Bez n\u00ed m\u016f\u017ee u n\u011bkter\u00fdch u\u017eivatel\u016f doch\u00e1zet k ur\u010dit\u00fdm probl\u00e9m\u016fm p\u0159i interpretaci a zobrazov\u00e1n\u00ed dat v tabulce.","cell_limit":"P\u0159ekro\u010dili jste maxim\u00e1ln\u00ed po\u010det bun\u011bk {$cells}.","row_limit":"P\u0159ekro\u010dili jste maxim\u00e1ln\u00ed po\u010det \u0159\u00e1dk\u016f {$rows}.","col_limit":"P\u0159ekro\u010dili jste maxim\u00e1ln\u00ed po\u010det sloupc\u016f {$cols}.",colgroup:"Skupina sloupc\u016f",rowgroup:"Skupina \u0159\u00e1dk\u016f",scope:"Hlavi\u010dka pro",tfoot:"Pata tabulky",tbody:"T\u011blo tabulky",thead:"Hlavi\u010dka tabulky","row_all":"Aktualizovat v\u0161echny \u0159\u00e1dky tabulky","row_even":"Aktualizovat sud\u00e9 \u0159\u00e1dky tabulky","row_odd":"Aktualizovat lich\u00e9 \u0159\u00e1dky tabulky","row_row":"Aktualizovat zvolen\u00fd \u0159\u00e1dek","cell_all":"Aktualizovat v\u0161echny bu\u0148ky v tabulce","cell_row":"Aktualizovat v\u0161echny bu\u0148ky v \u0159\u00e1dku","cell_cell":"Aktualizovat zvolenou bu\u0148ku",th:"Z\u00e1hlav\u00ed",td:"Data",summary:"Shrnut\u00ed obsahu",bgimage:"Obr\u00e1zek pozad\u00ed",rtl:"Zprava doleva",ltr:"Zleva doprava",mime:"MIME typ c\u00edle",langcode:"K\u00f3d jazyka",langdir:"Sm\u011br textu",style:"Styl",id:"ID","merge_cells_title":"Spojit bu\u0148ky",bgcolor:"Barva pozad\u00ed",bordercolor:"Barva r\u00e1me\u010dku","align_bottom":"Dol\u016f","align_top":"Nahoru",valign:"Vertik\u00e1ln\u00ed zarovn\u00e1n\u00ed","cell_type":"Typ bu\u0148ky","cell_title":"Vlastnosti bu\u0148ky","row_title":"Vlastnosti \u0159\u00e1dku","align_middle":"Na st\u0159ed","align_right":"Vpravo","align_left":"Vlevo","align_default":"V\u00fdchoz\u00ed",align:"Zarovn\u00e1n\u00ed",border:"R\u00e1me\u010dek",cellpadding:"Odsazen\u00ed obsahu",cellspacing:"Rozestup bun\u011bk",rows:"\u0158\u00e1dky",cols:"Sloupce",height:"V\u00fd\u0161ka",width:"\u0160\u00ed\u0159ka",title:"Vlo\u017eit/upravit tabulku",rowtype:"Typ \u0159\u00e1dku","advanced_props":"Roz\u0161\u00ed\u0159en\u00e9 parametry","general_props":"Obecn\u00e9 parametry","advanced_tab":"Roz\u0161\u00ed\u0159en\u00e9","general_tab":"Obecn\u00e9","cell_col":"Aktualizovat v\u0161echny bu\u0148ky ve sloupci"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/cy_dlg.js b/program/js/tiny_mce/plugins/table/langs/cy_dlg.js
deleted file mode 100644
index 6a4bc6537..000000000
--- a/program/js/tiny_mce/plugins/table/langs/cy_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('cy.table_dlg',{"rules_border":"border","rules_box":"box","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"o dan","rules_above":"above","rules_void":"void",rules:"Rheolau","frame_all":"all","frame_cols":"cols","frame_rows":"rows","frame_groups":"groups","frame_none":"none",frame:"Ffr\u00e2m",caption:"Egluryn tabl","missing_scope":"A ydych chi\'n si\u0175r eich bod eisiau parhau heb penodi cwmpas i\'r cell pennyn yma? Hebddo fo, efallai fydd o\'n anodd i rhai ddefnyddwyr gyda anableddau i ddeallt y cynnwys neu\'r data yn y tabl.","cell_limit":"Rydych wedi mynd tu twnt i\'r nifer uchafswm {$cells} o celloedd.","row_limit":"Rydych wedi mynd tu twnt i\'r nifer uchafswm {$rows} o rhesi.","col_limit":"Rydych wedi mynd tu twnt i\'r nifer uchafswm {$cols} o golofnau.",colgroup:"Gr\u0175p Colofnau",rowgroup:"Gr\u0175p Rhesi",scope:"Cwmpas",tfoot:"Troed Tabl",tbody:"Corff Tabl",thead:"Pen Tabl","row_all":"Diweddaru pob rhes yn y tabl","row_even":"Diweddaru rhesi eilrif yn y tabl","row_odd":"Diweddaru rhesi odrif yn y tabl","row_row":"Diweddaru rhes cyfredol","cell_all":"Diweddaru pob cell yn y tabl","cell_row":"Diweddaru pob cell yn y rhes","cell_cell":"Diweddaru cell cyfredol",th:"Pennyn",td:"Data",summary:"Crynodeb",bgimage:"Delwedd cefndir",rtl:"De i\'r chwith",ltr:"Chwith i\'r dde",mime:"Math MIME targed",langcode:"Cod iaith",langdir:"Cyfeiriad iaith",style:"Arddull",id:"Id","merge_cells_title":"Cyfuno celloedd tabl",bgcolor:"Lliw cefndir",bordercolor:"Lliw border","align_bottom":"Gwaelod","align_top":"Pen",valign:"Aliniad ferigol","cell_type":"Math cell","cell_title":"Priodweddau cell tabl","row_title":"Priodweddau rhes tabl","align_middle":"Canol","align_right":"De","align_left":"Chwith","align_default":"Rhagosodedig",align:"Aliniad",border:"Border",cellpadding:"Padio celloedd",cellspacing:"Bylchiad celloedd",rows:"Rhesi",cols:"Colofnau",height:"Uchder",width:"Lled",title:"Mewnosod/Golygu tabl",rowtype:"Rhes mewn rhan tabl","advanced_props":"Priodweddau uwch","general_props":"Priodweddau cyffredinol","advanced_tab":"Uwch","general_tab":"Cyffredinol","cell_col":"Diweddaru pob cell yn y colofn"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/da_dlg.js b/program/js/tiny_mce/plugins/table/langs/da_dlg.js
deleted file mode 100644
index 13220a5a1..000000000
--- a/program/js/tiny_mce/plugins/table/langs/da_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('da.table_dlg',{"rules_border":"kant","rules_box":"boks","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"under","rules_above":"over","rules_void":"void",rules:"Regler","frame_all":"alle","frame_cols":"kolonner","frame_rows":"r\u00e6kker","frame_groups":"grupper","frame_none":"ingen",frame:"Ramme",caption:"Tabeloverskrift","missing_scope":"Er du sikker p\u00e5, du vil forts\u00e6tte uden at angive forklaring for denne overskriftscelle? Uden forklaring vil v\u00e6re sv\u00e6rt for f.ek.s blinde at l\u00e6se og forst\u00e5 indholdet i tabellen.","cell_limit":"Du har overskredet antallet af tilladte celler p\u00e5 {$cells}.","row_limit":"Du har overskredet antallet af tilladte r\u00e6kker p\u00e5 {$rows}.","col_limit":"Du har overskredet antallet af tilladte kolonner p\u00e5 {$cols}.",colgroup:"Kolonnegruppe",rowgroup:"R\u00e6kkegruppe",scope:"Forklaring",tfoot:"Tabelfod",tbody:"Tabelkrop",thead:"Tabelhoved","row_all":"Opdater alle r\u00e6kker","row_even":"Opdater lige r\u00e6kker","row_odd":"Opdater ulige r\u00e6kker","row_row":"Opdater aktuelle celle","cell_all":"Opdater alle celler i tabellen","cell_row":"Opdater alle celler i r\u00e6kken","cell_cell":"Opdater aktuelle celle",th:"Hoved",td:"Data",summary:"Beskrivelse",bgimage:"Baggrundsbillede",rtl:"H\u00f8jre mod venstre",ltr:"Venstre mod h\u00f8jre",mime:"Destinations-MIME-type",langcode:"Sprogkode",langdir:"Sprogretning",style:"Style",id:"Id","merge_cells_title":"Flet celler",bgcolor:"Baggrundsfarve",bordercolor:"Kantfarve","align_bottom":"Bund","align_top":"Top",valign:"Vertikal justering","cell_type":"Celletype","cell_title":"Celleegenskaber","row_title":"R\u00e6kkeegenskaber","align_middle":"Centreret","align_right":"H\u00f8jre","align_left":"Venstre","align_default":"Standard",align:"Justering",border:"Kant",cellpadding:"Afstand til celleindhold",cellspacing:"Afstand mellem celler",rows:"R\u00e6kker",cols:"Kolonner",height:"H\u00f8jde",width:"Bredde",title:"Inds\u00e6t/rediger tabel",rowtype:"R\u00e6kke i tabel del","advanced_props":"Avancerede egenskaber","general_props":"Generelle egenskaber","advanced_tab":"Avanceret","general_tab":"Generelt","cell_col":"Opdat\u00e9r alle celler i en s\u00f8jle"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/de_dlg.js b/program/js/tiny_mce/plugins/table/langs/de_dlg.js
deleted file mode 100644
index 5a64ebd72..000000000
--- a/program/js/tiny_mce/plugins/table/langs/de_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('de.table_dlg',{"rules_border":"alle 4 Seiten (Border)","rules_box":"alle 4 Seiten (Box)","rules_vsides":"links und rechts","rules_rhs":"nur rechts","rules_lhs":"nur links","rules_hsides":"oben und unten","rules_below":"nur unten","rules_above":"nur oben","rules_void":"keins",rules:"Gitter","frame_all":"zwischen allen Zellen","frame_cols":"zwischen Spalten","frame_rows":"zwischen Zeilen","frame_groups":"zwischen Gruppen","frame_none":"keine",frame:"Rahmen",caption:"Beschriftung der Tabelle","missing_scope":"Wollen Sie wirklich keine Beziehung f\u00fcr diese \u00dcberschrift angeben? Benutzer mit k\u00f6rperlichen Einschr\u00e4nkungen k\u00f6nnten Schwierigkeiten haben, den Inhalt der Tabelle zu verstehen.","cell_limit":"Sie haben die maximale Zellenzahl von {$cells} \u00fcberschritten.","row_limit":"Sie haben die maximale Zeilenzahl von {$rows} \u00fcberschritten.","col_limit":"Sie haben die maximale Spaltenzahl von {$cols} \u00fcberschritten.",colgroup:"Horizontal gruppieren",rowgroup:"Vertikal gruppieren",scope:"Bezug",tfoot:"Tabellenfu\u00df",tbody:"Tabelleninhalt",thead:"Tabellenkopf","row_all":"Alle Zeilen ver\u00e4ndern","row_even":"Gerade Zeilen ver\u00e4ndern","row_odd":"Ungerade Zeilen ver\u00e4ndern","row_row":"Diese Zeile ver\u00e4ndern","cell_all":"Alle Zellen der Tabelle ver\u00e4ndern","cell_row":"Alle Zellen in dieser Zeile ver\u00e4ndern","cell_cell":"Diese Zelle ver\u00e4ndern",th:"\u00dcberschrift",td:"Textzelle",summary:"Zusammenfassung",bgimage:"Hintergrundbild",rtl:"Rechts nach links",ltr:"Links nach rechts",mime:"MIME-Type des Inhalts",langcode:"Sprachcode",langdir:"Schriftrichtung",style:"Format",id:"ID","merge_cells_title":"Zellen vereinen",bgcolor:"Hintergrundfarbe",bordercolor:"Rahmenfarbe","align_bottom":"Unten","align_top":"Oben",valign:"Vertikale Ausrichtung","cell_type":"Zellentyp","cell_title":"Eigenschaften der Zelle","row_title":"Eigenschaften der Zeile","align_middle":"Mittig","align_right":"Rechts","align_left":"Links","align_default":"Standard",align:"Ausrichtung",border:"Rahmen",cellpadding:"Abstand innerhalb der Zellen",cellspacing:"Zellenabstand",rows:"Zeilen",cols:"Spalten",height:"H\u00f6he",width:"Breite",title:"Tabelle einf\u00fcgen/bearbeiten",rowtype:"Gruppierung","advanced_props":"Erweiterte Einstellungen","general_props":"Allgemeine Einstellungen","advanced_tab":"Erweitert","general_tab":"Allgemein","cell_col":"Alle Zellen in dieser Spalte aktualisieren"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/el_dlg.js b/program/js/tiny_mce/plugins/table/langs/el_dlg.js
deleted file mode 100644
index f2510f083..000000000
--- a/program/js/tiny_mce/plugins/table/langs/el_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('el.table_dlg',{"rules_border":"\u03c0\u03bb\u03b1\u03af\u03c3\u03b9\u03bf","rules_box":"\u03ba\u03bf\u03c5\u03c4\u03af","rules_vsides":"\u03ba\u03ac\u03b8\u03b5\u03c4\u03b5\u03c2 \u03c0\u03bb\u03b5\u03c5\u03c1\u03ad\u03c2","rules_rhs":"\u03b4\u03b5\u03be\u03b9\u03ac \u03bf\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03b1 \u03c0\u03bb\u03b5\u03c5\u03c1\u03ac","rules_lhs":"\u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ae \u03bf\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03b1 \u03c0\u03bb\u03b5\u03c5\u03c1\u03ac","rules_hsides":"\u03bf\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03b5\u03c2 \u03c0\u03bb\u03b5\u03c5\u03c1\u03ad\u03c2","rules_below":"\u03b1\u03c0\u03cc \u03ba\u03ac\u03c4\u03c9","rules_above":"\u03b1\u03c0\u03cc \u03c0\u03ac\u03bd\u03c9","rules_void":"\u03ba\u03b5\u03bd\u03cc",rules:"\u039a\u03b1\u03bd\u03cc\u03bd\u03b5\u03c2","frame_all":"\u03cc\u03bb\u03b1","frame_cols":"\u03c3\u03c4\u03ae\u03bb\u03b5\u03c2","frame_rows":"\u03b3\u03c1\u03b1\u03bc\u03bc\u03ad\u03c2","frame_groups":"\u03bf\u03bc\u03ac\u03b4\u03b5\u03c2","frame_none":"\u03ba\u03b1\u03bd\u03ad\u03bd\u03b1",frame:"Frame",caption:"\u0395\u03c0\u03b9\u03ba\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1","missing_scope":"\u03a3\u03af\u03b3\u03bf\u03c5\u03c1\u03b1 \u03b8\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b5\u03c7\u03af\u03c3\u03b5\u03c4\u03b5 \u03c7\u03c9\u03c1\u03af\u03c2 \u03bd\u03b1 \u03ad\u03c7\u03b5\u03c4\u03b5 \u03ba\u03b1\u03b8\u03bf\u03c1\u03af\u03c3\u03b5\u03b9 \u03c4\u03b7\u03bd \u03b5\u03bc\u03b2\u03ad\u03bb\u03b5\u03b9\u03b1 \u03c4\u03bf\u03c5 \u03ba\u03b5\u03bb\u03b9\u03bf\u03cd \u03c4\u03b7\u03c2 \u03ba\u03bf\u03c1\u03c5\u03c6\u03ae\u03c2 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1. \u03a7\u03c9\u03c1\u03af\u03c2 \u03b1\u03c5\u03c4\u03ae, \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03cd\u03c3\u03ba\u03bf\u03bb\u03bf \u03b3\u03b9\u03b1 \u03ba\u03ac\u03c0\u03bf\u03b9\u03bf\u03c5\u03c2 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b5\u03c2 \u03bc\u03b5 \u03c0\u03c1\u03bf\u03b2\u03bb\u03ae\u03bc\u03b1\u03c4\u03b1 \u03bd\u03b1 \u03ba\u03b1\u03c4\u03b1\u03bb\u03ac\u03b2\u03bf\u03c5\u03bd \u03c4\u03bf \u03c0\u03b5\u03c1\u03b9\u03b5\u03c7\u03cc\u03bc\u03b5\u03bd\u03bf \u03c4\u03bf\u03c5 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1.","cell_limit":"\u0388\u03c7\u03b5\u03c4\u03b5 \u03be\u03b5\u03c0\u03b5\u03c1\u03ac\u03c3\u03b5\u03b9 \u03c4\u03bf \u03cc\u03c1\u03b9\u03bf \u03c4\u03c9\u03bd \u03ba\u03b5\u03bb\u03b9\u03ce\u03bd \u03c0\u03bf\u03c5 \u03b5\u03af\u03bd\u03b1\u03b9 {$cells}.","row_limit":"\u0388\u03c7\u03b5\u03c4\u03b5 \u03be\u03b5\u03c0\u03b5\u03c1\u03ac\u03c3\u03b5\u03b9 \u03c4\u03bf \u03cc\u03c1\u03b9\u03bf \u03c4\u03c9\u03bd \u03b3\u03c1\u03b1\u03bc\u03bc\u03ce\u03bd \u03c0\u03bf\u03c5 \u03b5\u03af\u03bd\u03b1\u03b9 {$rows}.","col_limit":"\u0388\u03c7\u03b5\u03c4\u03b5 \u03be\u03b5\u03c0\u03b5\u03c1\u03ac\u03c3\u03b5\u03b9 \u03c4\u03bf \u03cc\u03c1\u03b9\u03bf \u03c4\u03c9\u03bd \u03c3\u03c4\u03b7\u03bb\u03c9\u03bd \u03c0\u03bf\u03c5 \u03b5\u03af\u03bd\u03b1\u03b9 {$cols}.",colgroup:"\u039f\u03bc\u03ac\u03b4\u03b1 \u03c3\u03c4\u03b7\u03bb\u03ce\u03bd",rowgroup:"\u039f\u03bc\u03ac\u03b4\u03b1 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ce\u03bd",scope:"\u0395\u03bc\u03b2\u03ad\u03bb\u03b5\u03b9\u03b1",tfoot:"\u0392\u03ac\u03c3\u03b7 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1",tbody:"\u03a3\u03ce\u03bc\u03b1 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1",thead:"\u039a\u03bf\u03c1\u03c5\u03c6\u03ae \u03c0\u03af\u03bd\u03b1\u03ba\u03b1","row_all":"\u0395\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7 \u03cc\u03bb\u03c9\u03bd \u03c4\u03c9\u03bd \u03b3\u03c1\u03b1\u03bc\u03bc\u03ce\u03bd \u03c4\u03bf\u03c5 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1","row_even":"\u0395\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7 \u03c4\u03c9\u03bd \u03b6\u03c5\u03b3\u03ce\u03bd \u03b3\u03c1\u03b1\u03bc\u03bc\u03ce\u03bd \u03c4\u03bf\u03c5 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1","row_odd":"\u0395\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7 \u03c4\u03c9\u03bd \u03bc\u03bf\u03bd\u03ce\u03bd \u03b3\u03c1\u03b1\u03bc\u03bc\u03ce\u03bd \u03c4\u03bf\u03c5 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1","row_row":"\u0395\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7 \u03c4\u03b7\u03c2 \u03c4\u03c1\u03ad\u03c7\u03bf\u03c5\u03c3\u03b1\u03c2 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2","cell_all":"\u0395\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7 \u03cc\u03bb\u03c9\u03bd \u03c4\u03c9\u03bd \u03ba\u03b5\u03bb\u03b9\u03ce\u03bd \u03c4\u03bf\u03c5 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1","cell_row":"\u0395\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7 \u03cc\u03bb\u03c9\u03bd \u03c4\u03c9\u03bd \u03ba\u03b5\u03bb\u03b9\u03ce\u03bd \u03c4\u03b7\u03c2 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2","cell_cell":"\u0395\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7 \u03c4\u03c1\u03ad\u03c7\u03bf\u03bd\u03c4\u03bf\u03c2 \u03ba\u03b5\u03bb\u03b9\u03bf\u03cd",th:"\u0395\u03c0\u03b9\u03ba\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1",td:"\u0394\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03b1",summary:"\u03a0\u03b5\u03c1\u03af\u03bb\u03b7\u03c8\u03b7",bgimage:"\u0395\u03b9\u03ba\u03cc\u03bd\u03b1 \u03c6\u03cc\u03bd\u03c4\u03bf\u03c5",rtl:"\u0394\u03b5\u03be\u03b9\u03ac \u03c0\u03c1\u03bf\u03c2 \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac",ltr:"\u0391\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac \u03c0\u03c1\u03bf\u03c2 \u03b4\u03b5\u03be\u03b9\u03ac",mime:"\u03a4\u03cd\u03c0\u03bf\u03c2 MIME \u03c3\u03c4\u03cc\u03c7\u03bf\u03c5",langcode:"\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03b3\u03bb\u03ce\u03c3\u03c3\u03b1\u03c2",langdir:"\u039a\u03b1\u03c4\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 \u03b3\u03bb\u03ce\u03c3\u03c3\u03b1\u03c2",style:"\u03a3\u03c4\u03c5\u03bb",id:"Id","merge_cells_title":"\u03a3\u03c5\u03b3\u03c7\u03ce\u03bd\u03b5\u03c5\u03c3\u03b7 \u03ba\u03b5\u03bb\u03b9\u03ce\u03bd \u03c0\u03af\u03bd\u03b1\u03ba\u03b1",bgcolor:"\u03a7\u03c1\u03ce\u03bc\u03b1 \u03c6\u03cc\u03bd\u03c4\u03bf\u03c5",bordercolor:"\u03a7\u03c1\u03ce\u03bc\u03b1 \u03c0\u03bb\u03b1\u03b9\u03c3\u03af\u03bf\u03c5","align_bottom":"\u039a\u03ac\u03c4\u03c9","align_top":"\u03a0\u03ac\u03bd\u03c9",valign:"\u039a\u03b1\u03c4\u03b1\u03ba\u03cc\u03c1\u03c5\u03c6\u03b7 \u03c3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7","cell_type":"\u03a4\u03cd\u03c0\u03bf\u03c2 \u03ba\u03b5\u03bb\u03b9\u03bf\u03cd","cell_title":"\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 \u03ba\u03b5\u03bb\u03b9\u03bf\u03cd \u03c0\u03af\u03bd\u03b1\u03ba\u03b1","row_title":"\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1","align_middle":"\u039a\u03ad\u03bd\u03c4\u03c1\u03bf","align_right":"\u0394\u03b5\u03be\u03b9\u03ac","align_left":"\u0391\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac","align_default":"\u03a0\u03c1\u03bf\u03b5\u03c0\u03b9\u03bb\u03b5\u03b3\u03bc\u03ad\u03bd\u03b7",align:"\u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7",border:"\u03a0\u03bb\u03b1\u03af\u03c3\u03b9\u03bf",cellpadding:"\u0393\u03ad\u03bc\u03b9\u03c3\u03bc\u03b1 \u03ba\u03b5\u03bb\u03b9\u03ce\u03bd",cellspacing:"\u0391\u03c0\u03cc\u03c3\u03c4\u03b1\u03c3\u03b7 \u03ba\u03b5\u03bb\u03b9\u03ce\u03bd",rows:"\u0393\u03c1\u03b1\u03bc\u03bc\u03ad\u03c2",cols:"\u03a3\u03c4\u03ae\u03bb\u03b5\u03c2",height:"\u038e\u03c8\u03bf\u03c2",width:"\u03a0\u03bb\u03ac\u03c4\u03bf\u03c2",title:"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1",rowtype:"\u0393\u03c1\u03b1\u03bc\u03bc\u03ae \u03c3\u03b5 \u03bc\u03ad\u03c1\u03bf\u03c2 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1","advanced_props":"\u03a0\u03c1\u03bf\u03c7\u03c9\u03c1\u03b7\u03bc\u03ad\u03bd\u03b5\u03c2 \u03b9\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2","general_props":"\u0393\u03b5\u03bd\u03b9\u03ba\u03ad\u03c2 \u03b9\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2","advanced_tab":"\u0393\u03b9\u03b1 \u03c0\u03c1\u03bf\u03c7\u03c9\u03c1\u03b7\u03bc\u03ad\u03bd\u03bf\u03c5\u03c2","general_tab":"\u0393\u03b5\u03bd\u03b9\u03ba\u03ac","cell_col":"\u0391\u03bd\u03b1\u03bd\u03ad\u03c9\u03c3\u03b7 \u03cc\u03bb\u03c9\u03bd \u03c4\u03c9\u03bd \u03ba\u03b5\u03bb\u03b9\u03ce\u03bd \u03c3\u03c4\u03b7\u03bd \u03c3\u03c4\u03ae\u03bb\u03b7"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/en_dlg.js b/program/js/tiny_mce/plugins/table/langs/en_dlg.js
deleted file mode 100644
index 463e09ee1..000000000
--- a/program/js/tiny_mce/plugins/table/langs/en_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('en.table_dlg',{"rules_border":"border","rules_box":"box","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"below","rules_above":"above","rules_void":"void",rules:"Rules","frame_all":"all","frame_cols":"cols","frame_rows":"rows","frame_groups":"groups","frame_none":"none",frame:"Frame",caption:"Table Caption","missing_scope":"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.","cell_limit":"You\'ve exceeded the maximum number of cells of {$cells}.","row_limit":"You\'ve exceeded the maximum number of rows of {$rows}.","col_limit":"You\'ve exceeded the maximum number of columns of {$cols}.",colgroup:"Col Group",rowgroup:"Row Group",scope:"Scope",tfoot:"Footer",tbody:"Body",thead:"Header","row_all":"Update All Rows in Table","row_even":"Update Even Rows in Table","row_odd":"Update Odd Rows in Table","row_row":"Update Current Row","cell_all":"Update All Cells in Table","cell_row":"Update All Cells in Row","cell_cell":"Update Current Cell",th:"Header",td:"Data",summary:"Summary",bgimage:"Background Image",rtl:"Right to Left",ltr:"Left to Right",mime:"Target MIME Type",langcode:"Language Code",langdir:"Language Direction",style:"Style",id:"ID","merge_cells_title":"Merge Table Cells",bgcolor:"Background Color",bordercolor:"Border Color","align_bottom":"Bottom","align_top":"Top",valign:"Vertical Alignment","cell_type":"Cell Type","cell_title":"Table Cell Properties","row_title":"Table Row Properties","align_middle":"Center","align_right":"Right","align_left":"Left","align_default":"Default",align:"Alignment",border:"Border",cellpadding:"Cell Padding",cellspacing:"Cell Spacing",rows:"Rows",cols:"Columns",height:"Height",width:"Width",title:"Insert/Edit Table",rowtype:"Row Type","advanced_props":"Advanced Properties","general_props":"General Properties","advanced_tab":"Advanced","general_tab":"General","cell_col":"Update all cells in column"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/eo_dlg.js b/program/js/tiny_mce/plugins/table/langs/eo_dlg.js
deleted file mode 100644
index d31f078b7..000000000
--- a/program/js/tiny_mce/plugins/table/langs/eo_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('eo.table_dlg',{"rules_border":"Bordero","rules_box":"Skatolo","rules_vsides":"Vsides","rules_rhs":"Rhs","rules_lhs":"Lhs","rules_hsides":"Hsides","rules_below":"sube","rules_above":"supre","rules_void":"void",rules:"Reguloj","frame_all":"\u0108iuj","frame_cols":"Kolumnoj","frame_rows":"Linioj","frame_groups":"Grupoj","frame_none":"Neniu",frame:"Kadro",caption:"Titolo de la tabelo","missing_scope":"\u0108u vi certas ke vi volas da\u016drigi sen specifi amplekson por \u0109i tiu \u0109elo? (Tio povos ka\u016dzi malfacila\u0135on al handikapuloj)","cell_limit":"La maksimuma nombro da \u0109eloj {$cells} estis superita.","row_limit":"La maksimuma nombro da linioj {$rows} estis superita.","col_limit":"La maksimuma nombro da kolumnoj {$cols} estis superita.",colgroup:"Kolumnogrupo",rowgroup:"Linigrupo",scope:"Amplekso",tfoot:"Tabelpiedo",tbody:"Tabelkorpo",thead:"Tabelkapo","row_all":"\u011cisdatigi \u0109iujn liniojn","row_even":"\u011cisdatigi parajn liniojn","row_odd":"\u011cisdatigi neparajn liniojn","row_row":"\u011cisdatigi \u0109i tiun linion","cell_all":"\u011cisdatigi \u0109iujn \u0109elojn en la tabelo","cell_row":"\u011cisdatigi \u0109iujn \u0109elojn en la linio","cell_cell":"\u011cisdatigi \u0109i tiun \u0109elon",th:"Kampo",td:"Datumoj",summary:"Resumo",bgimage:"Fonbildo",rtl:"Dekstre-Maldekstren",ltr:"Maldekstre-Dekstren",mime:"Cela MIME",langcode:"Lingvokodo",langdir:"Tekstodirekto",style:"Stilo",id:"Id","merge_cells_title":"Unuigi \u0109elojn",bgcolor:"Fonkoloro",bordercolor:"Borderkoloro","align_bottom":"Sube","align_top":"Supre",valign:"Vert. liniigo","cell_type":"\u0108eltipo","cell_title":"Atributoj de \u0109eloj","row_title":"Atributoj de linioj","align_middle":"Meze","align_right":"Dekstre","align_left":"Maldekstre","align_default":"Defa\u016dlte",align:"Liniigo",border:"Bordero",cellpadding:"Ena kromspaco de \u0109elo",cellspacing:"Kromspaco de \u0109elo",rows:"Linioj",cols:"Kolumnoj",height:"Alteco",width:"Lar\u011deco",title:"Enmeti/redakti tabelon",rowtype:"Tabellinio","advanced_props":"Spertaj atributoj","general_props":"\u011ceneralaj atributoj","advanced_tab":"Sperta","general_tab":"\u011cenerala","cell_col":"Update all cells in column"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/es_dlg.js b/program/js/tiny_mce/plugins/table/langs/es_dlg.js
deleted file mode 100644
index 32701a8d1..000000000
--- a/program/js/tiny_mce/plugins/table/langs/es_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('es.table_dlg',{"rules_border":"border","rules_box":"box","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"debajo","rules_above":"encima","rules_void":"vac\u00edo",rules:"Reglas","frame_all":"todos","frame_cols":"cols","frame_rows":"filas","frame_groups":"grupos","frame_none":"ninguno",frame:"Recuadro",caption:"Subt\u00edtulo de la tabla","missing_scope":" \u00bfEst\u00e1 seguro que desea continuar sin especificar el alcance del encabezado de celda? Sin \u00e9l podr\u00eda ser dificultoso para algunos usuarios entender el contenido o los datos mostrados en la tabla.","cell_limit":"Ha superado el n\u00famero m\u00e1ximo de celdas: {$cells}.","row_limit":"Ha superado el n\u00famero m\u00e1ximo de filas: {$rows}.","col_limit":"Ha superado el n\u00famero m\u00e1ximo de columnas: {$cols}.",colgroup:"Grupo de columnas",rowgroup:"Grupo de filas",scope:"Alcance",tfoot:"Pie de la tabla",tbody:"Cuerpo de la tabla",thead:"Encabezado de la tabla","row_all":"Actualizar todas las filas","row_even":"Actualizar filas pares","row_odd":"Actualizar filas impares","row_row":"Actualizar fila actual","cell_all":"Actualizar todas las celdas en la tabla","cell_row":"Actualizar todas las celdas en la fila","cell_cell":"Actualizar celda actual",th:"Encabezado",td:"Datos",summary:"Resumen",bgimage:"Imagen de fondo",rtl:"Derecha a izquierda",ltr:"Izquierda a derecha",mime:"Tipo MIME",langcode:"C\u00f3digo del lenguaje",langdir:"Direcci\u00f3n del lenguaje",style:"Estilo",id:"Id","merge_cells_title":"Vincular celdas",bgcolor:"Color de fondo",bordercolor:"Color del borde","align_bottom":"Debajo","align_top":"Arriba",valign:"Alineaci\u00f3n vertical","cell_type":"Tipo de celda","cell_title":"Propiedades de la celda","row_title":"Propiedades de la fila","align_middle":"Centrado","align_right":"Derecha","align_left":"Izquierda","align_default":"Predet.",align:"Alineaci\u00f3n",border:"Borde",cellpadding:"Relleno de celda",cellspacing:"Espaciado de celda",rows:"Filas",cols:"Cols",height:"Alto",width:"Ancho",title:"Insertar/Modificar tabla",rowtype:"Tipo de fila","advanced_props":"Propiedades avanzadas","general_props":"Propiedades generales","advanced_tab":"Avanzado","general_tab":"General","cell_col":"Actualizar todas las celdas en la columna"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/et_dlg.js b/program/js/tiny_mce/plugins/table/langs/et_dlg.js
deleted file mode 100644
index 61e05ffff..000000000
--- a/program/js/tiny_mce/plugins/table/langs/et_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('et.table_dlg',{"rules_border":"raam","rules_box":"kast","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"all","rules_above":"\u00fcleval","rules_void":"t\u00fchi",rules:"Reeglid","frame_all":"k\u00f5ik","frame_cols":"veerud","frame_rows":"read","frame_groups":"grupid","frame_none":"mitte \u00fckski",frame:"Raam",caption:"Tabeli seletus","missing_scope":"Oled kindel, et soovid j\u00e4tkata t\u00e4psustamata antud tabeli p\u00e4ise nime?","cell_limit":"Oled j\u00f5udnud maksimaalse arvu elementideni","row_limit":"Oled j\u00f5udnud maksimaalse arvu ridadeni","col_limit":"Oled j\u00f5udnud maksemaalse arvu veegudeni.",colgroup:"Veeru grupp",rowgroup:"Rea grupp",scope:"Ulatus",tfoot:"Tabeli jalus",tbody:"Tabeli sisu",thead:"Tabeli p\u00e4is","row_all":"Uuenda k\u00f5iki ridu tabelis","row_even":"Uuenda paaris ridu tabelis","row_odd":"Uuenda paarituid ridu tabelis","row_row":"Uuenda antud rida","cell_all":"Uuenda k\u00f5iki lahtreid tabelis","cell_row":"Uuenda k\u00f5iki lahtreid reas","cell_cell":"Uuenda antud lahtrit",th:"P\u00e4is",td:"Info",summary:"Kokkuv\u00f5te",bgimage:"Tausta pilt",rtl:"Paremalt vasakule",ltr:"Vasakult paremale",mime:"M\u00e4rgista MIME t\u00fc\u00fcp",langcode:"Keele kood",langdir:"Keele suund",style:"Stiil",id:"ID","merge_cells_title":"\u00dchenda lahtrid",bgcolor:"Tausta v\u00e4rv",bordercolor:"Raami v\u00e4rv","align_bottom":"All","align_top":"\u00dcleval",valign:"Vertikaalne joondus","cell_type":"Veeru t\u00fc\u00fcp","cell_title":"Tabeli veeru seaded","row_title":"Tabeli rea seaded","align_middle":"Keskel","align_right":"Parem","align_left":"Vasak","align_default":"Vaikimisi",align:"Joondus",border:"Raam",cellpadding:"Veeru t\u00e4ide",cellspacing:"Veeru laius",rows:"Ridu",cols:"Veerge",height:"K\u00f5rgus",width:"Laius",title:"Sisesta/muuda tabelit",rowtype:"Rida rea osas","advanced_props":"T\u00e4psustatud seaded","general_props":"\u00dcldised seaded","advanced_tab":"T\u00e4psustatud","general_tab":"\u00dcldine","cell_col":"Uuenda k\u00f5ik veeru lahtrid"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/eu_dlg.js b/program/js/tiny_mce/plugins/table/langs/eu_dlg.js
deleted file mode 100644
index b27211535..000000000
--- a/program/js/tiny_mce/plugins/table/langs/eu_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('eu.table_dlg',{"rules_border":"border","rules_box":"box","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"azpian","rules_above":"gainean","rules_void":"hutsa",rules:"Erregelak","frame_all":"guztiak","frame_cols":"zutabeak","frame_rows":"lerroak","frame_groups":"taldeak","frame_none":"Bat ere ez",frame:"Markoa",caption:"Taularen azpititulua","missing_scope":"Taularen goiburukoari eremu bat zehaztu gabe jarritu nahi duzula ziur zaude? Eremu hori gabe, ezintasunak dituzten erabiltzaileentzat zaila izango da taularen datuak ulertzea.","cell_limit":"Gelaxka kopuru maximoa ({$cells}) gainditu duzu..","row_limit":"Lerro kopuru maximoa ({$rows}) gainditu duzu.","col_limit":"Zutabe kopuru maximoa ({$cols}) gainditu duzu.",colgroup:"Zutabe Taldea",rowgroup:"Lerro Taldea",scope:"Eremua",tfoot:"Taularen Oina",tbody:"Taularen Gorputza",thead:"Taularen Goiburukoa","row_all":"Eguneratu lerro guztiak","row_even":"Eguneratu lerro bikoitiak","row_odd":"Eguneratu lerro bakoitiak","row_row":"Eguneratu uneko lerroa","cell_all":"Eguneratu gelaxka guztiak","cell_row":"Eguneratu lerroko gelaxka guztiak","cell_cell":"Eguneratu uneko gelaxka",th:"Goiburua",td:"Datuak",summary:"Laburpena",bgimage:"Atzeko irudia",rtl:"Eskuinetik ezkerrera",ltr:"Ezkerretik eskuinera",mime:"Helburuareb MIME mota",langcode:"Hizkuntza kodea",langdir:"Hizkuntza norabidea",style:"Estiloa",id:"Id","merge_cells_title":"Bateratu gelaxkak",bgcolor:"Atzeko kolorea",bordercolor:"Ertz kolorea","align_bottom":"Behean","align_top":"Goian",valign:"Lerrokatze bertikala","cell_type":"Gelaxka mota","cell_title":"Gelaxka ezaugarriak","row_title":"Lerro ezaugarriak","align_middle":"Erdian","align_right":"Eskuinera","align_left":"Ezkerrera","align_default":"Lehenetsia",align:"Lerrokatzea",border:"Ertza",cellpadding:"Gelaxkaren betegarria",cellspacing:"Gelaxkaren tartea",rows:"Lerroak",cols:"Zutabeak",height:"Altuera",width:"Zabalera",title:"Txertatu/Aldatu taula",rowtype:"Lerro mota","advanced_props":"Ezaugarri aurreratuak","general_props":"Ezaugarri orokorrak","advanced_tab":"Aurreratua","general_tab":"Orokorra","cell_col":"Update all cells in column"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/fa_dlg.js b/program/js/tiny_mce/plugins/table/langs/fa_dlg.js
deleted file mode 100644
index d26a9375c..000000000
--- a/program/js/tiny_mce/plugins/table/langs/fa_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fa.table_dlg',{"rules_border":"\u062d\u0627\u0634\u06cc\u0647","rules_box":"\u062c\u0639\u0628\u0647","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"\u067e\u0627\u06cc\u06cc\u0646","rules_above":"\u0628\u0627\u0644\u0627","rules_void":"\u062e\u0627\u0644\u06cc",rules:"\u062e\u0637 \u0647\u0627","frame_all":"\u0647\u0645\u0647","frame_cols":"\u0633\u062a\u0648\u0646 \u0647\u0627","frame_rows":"\u0633\u0637\u0631\u0647\u0627","frame_groups":"\u06af\u0631\u0648\u0647 \u0647\u0627","frame_none":"\u0647\u06cc\u0686 \u06a9\u062f\u0627\u0645",frame:"\u0642\u0627\u0628 (Frame)",caption:"\u0639\u0646\u0648\u0627\u0646 \u062c\u062f\u0648\u0644","missing_scope":"\u0622\u06cc\u0627 \u0628\u062f\u0648\u0646 \u062a\u0639\u06cc\u06cc\u0646 \u0645\u062d\u062f\u0648\u062f\u0647 \u0628\u0631\u0627\u06cc \u0633\u0644\u0648\u0644 \u0639\u0646\u0648\u0627\u0646 \u062c\u062f\u0648\u0644\u060c \u0627\u062f\u0627\u0645\u0647 \u0645\u06cc \u062f\u0647\u06cc\u062f\u061f. \u0628\u062f\u0648\u0646 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u060c \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u062f\u0631\u06a9 \u0645\u062d\u062a\u0648\u0627 \u06cc\u0627 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0628\u0631\u0627\u06cc \u0628\u0639\u0636\u06cc \u0627\u0632 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0645\u0634\u06a9\u0644 \u0628\u0627\u0634\u062f.","cell_limit":"\u0634\u0645\u0627 \u0627\u0632 \u062a\u0639\u062f\u0627\u062f \u062d\u062f\u0627\u06a9\u062b\u0631 {$cells} \u0633\u0644\u0648\u0644 \u062a\u062c\u0627\u0648\u0632 \u06a9\u0631\u062f\u06cc\u062f.","row_limit":"\u0634\u0645\u0627 \u0627\u0632 \u062a\u0639\u062f\u0627\u062f \u062d\u062f\u0627\u06a9\u062b\u0631 {$rows} \u0633\u0637\u0631 \u062a\u062c\u0627\u0648\u0632 \u06a9\u0631\u062f\u06cc\u062f.","col_limit":"\u0634\u0645\u0627 \u0627\u0632 \u062a\u0639\u062f\u0627\u062f \u062d\u062f\u0627\u06a9\u062b\u0631 {$cols} \u0633\u062a\u0648\u0646 \u062a\u062c\u0627\u0648\u0632 \u06a9\u0631\u062f\u06cc\u062f.",colgroup:"\u06af\u0631\u0648\u0647 \u0633\u062a\u0648\u0646",rowgroup:"\u06af\u0631\u0648\u0647 \u0633\u0637\u0631",scope:"\u0645\u062d\u062f\u0648\u062f\u0647",tfoot:"\u067e\u0627\u06cc\u06cc\u0646 \u062c\u062f\u0648\u0644",tbody:"\u0628\u062f\u0646\u0647 \u062c\u062f\u0648\u0644",thead:"\u0628\u0627\u0644\u0627\u06cc \u062c\u062f\u0648\u0644","row_all":"\u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u062a\u0645\u0627\u0645\u06cc \u0633\u0637\u0631\u0647\u0627 \u062f\u0631 \u062c\u062f\u0648\u0644","row_even":"\u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0633\u0637\u0631\u0647\u0627\u06cc \u0632\u0648\u062c \u062f\u0631 \u062c\u062f\u0648\u0644","row_odd":"\u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0633\u0637\u0631\u0647\u0627\u06cc \u0641\u0631\u062f \u062f\u0631 \u062c\u062f\u0648\u0644","row_row":"\u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0633\u0637\u0631 \u0641\u0639\u0644\u06cc","cell_all":"\u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u062a\u0645\u0627\u0645\u06cc \u0633\u0644\u0648\u0644 \u0647\u0627\u06cc \u062c\u062f\u0648\u0644","cell_row":"\u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u062a\u0645\u0627\u0645\u06cc \u0633\u0644\u0648\u0644 \u0647\u0627\u06cc \u0633\u0637\u0631","cell_cell":"\u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0633\u0644\u0648\u0644 \u0641\u0639\u0644\u06cc",th:"\u0633\u0631 \u062c\u062f\u0648\u0644",td:"\u062f\u0627\u062f\u0647",summary:"\u062e\u0644\u0627\u0635\u0647",bgimage:"\u062a\u0635\u0648\u06cc\u0631 \u0632\u0645\u06cc\u0646\u0647",rtl:"\u0631\u0627\u0633\u062a \u0628\u0647 \u0686\u067e",ltr:"\u0686\u067e \u0628\u0647 \u0631\u0627\u0633\u062a",mime:"\u0646\u0648\u0639 MIME \u0645\u0642\u0635\u062f (Target)",langcode:"\u06a9\u062f \u0632\u0628\u0627\u0646",langdir:"\u062c\u0647\u062a \u0632\u0628\u0627\u0646",style:"\u0627\u0633\u062a\u0627\u06cc\u0644",id:"\u0634\u0646\u0627\u0633\u0647","merge_cells_title":"\u0627\u062f\u063a\u0627\u0645 \u0633\u0644\u0648\u0644 \u0647\u0627\u06cc \u062c\u062f\u0648\u0644",bgcolor:"\u0631\u0646\u06af \u0632\u0645\u06cc\u0646\u0647",bordercolor:"\u0631\u0646\u06af \u062d\u0627\u0634\u06cc\u0647","align_bottom":"\u067e\u0627\u06cc\u06cc\u0646","align_top":"\u0628\u0627\u0644\u0627",valign:"\u062a\u0631\u0627\u0632 \u0639\u0645\u0648\u062f\u06cc","cell_type":"\u0646\u0648\u0639 \u0633\u0644\u0648\u0644","cell_title":"\u0645\u0634\u062e\u0635\u0627\u062a \u0633\u0644\u0648\u0644 \u062c\u062f\u0648\u0644","row_title":"\u0645\u0634\u062e\u0635\u0627\u062a \u0633\u0637\u0631 \u062c\u062f\u0648\u0644","align_middle":"\u0648\u0633\u0637","align_right":"\u0631\u0627\u0633\u062a","align_left":"\u0686\u067e","align_default":"\u067e\u06cc\u0634\u0641\u0631\u0636",align:"\u062a\u0631\u0627\u0632",border:"\u062d\u0627\u0634\u06cc\u0647",cellpadding:"\u0644\u0627\u06cc\u0647 \u06af\u0630\u0627\u0631\u06cc \u0633\u0644\u0648\u0644 \u0647\u0627",cellspacing:"\u0641\u0627\u0635\u0644\u0647 \u0633\u0644\u0648\u0644 \u0647\u0627",rows:"\u0633\u0637\u0631\u0647\u0627",cols:"\u0633\u062a\u0648\u0646 \u0647\u0627",height:"\u0627\u0631\u062a\u0641\u0627\u0639",width:"\u067e\u0647\u0646\u0627",title:"\u062f\u0631\u062c/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u062c\u062f\u0648\u0644",rowtype:"\u0646\u0648\u0639 \u0633\u0637\u0631","advanced_props":"\u0645\u0634\u062e\u0635\u0627\u062a \u067e\u06cc\u0634\u0631\u0641\u062a\u0647","general_props":"\u0645\u0634\u062e\u0635\u0627\u062a \u0639\u0645\u0648\u0645\u06cc","advanced_tab":"\u067e\u06cc\u0634\u0631\u0641\u062a\u0647","general_tab":"\u0639\u0645\u0648\u0645\u06cc","cell_col":"\u0628\u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u062a\u0645\u0627\u0645 \u0633\u0644\u0648\u0644\u200c\u0647\u0627 \u062f\u0631 \u0633\u062a\u0648\u0646"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/fi_dlg.js b/program/js/tiny_mce/plugins/table/langs/fi_dlg.js
deleted file mode 100644
index 87ed83649..000000000
--- a/program/js/tiny_mce/plugins/table/langs/fi_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fi.table_dlg',{"rules_border":"kehys","rules_box":"laatikko","rules_vsides":"pystysuorat reunat","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"vaakasuorat reunat","rules_below":"alapuoli","rules_above":"yl\u00e4puoli","rules_void":"tyhj\u00e4",rules:"S\u00e4\u00e4nn\u00f6t","frame_all":"kaikki","frame_cols":"sarakkeet","frame_rows":"rivit","frame_groups":"ryhm\u00e4t","frame_none":"ei mit\u00e4\u00e4n",frame:"kehys",caption:"Taulukon seloste","missing_scope":"Haluatko varmasti jatkaa m\u00e4\u00e4ritt\u00e4m\u00e4tt\u00e4 tilaa t\u00e4lle taulukon otsakesolulle? Ilman sit\u00e4 joidenkin k\u00e4ytt\u00e4jien voi olla vaikea ymm\u00e4rt\u00e4\u00e4 taulukon sis\u00e4lt\u00e4m\u00e4\u00e4 informaatiota.","cell_limit":"Olet ylitt\u00e4nyt suurimman sallitun m\u00e4\u00e4r\u00e4n soluja {$cells}.","row_limit":"Olet ylitt\u00e4nyt suurimman sallitun m\u00e4\u00e4r\u00e4n rivej\u00e4 {$rows}.","col_limit":"Olet ylitt\u00e4nyt suurimman sallitun m\u00e4\u00e4r\u00e4n sarakkeita {$cols}.",colgroup:"Sarake ryhm\u00e4",rowgroup:"Rivi ryhm\u00e4",scope:"Tila",tfoot:"Taulukon alaosa",tbody:"Taulukon runko",thead:"Taulukon otsake","row_all":"P\u00e4ivit\u00e4 kaikki taulukon rivit","row_even":"P\u00e4ivit\u00e4 taulukon parilliset rivit","row_odd":"P\u00e4ivit\u00e4 taulukon parittomat rivit","row_row":"P\u00e4ivit\u00e4 rivi","cell_all":"P\u00e4ivit\u00e4 kaikki taulukon solut","cell_row":"P\u00e4ivit\u00e4 kaikki rivin solut","cell_cell":"P\u00e4ivit\u00e4 solu",th:"Otsake",td:"Tietue",summary:"Yhteenveto",bgimage:"Taustakuva",rtl:"Oikealta vasemmalle",ltr:"Vasemmalta oikealle",mime:"Kohteen MIME-tyyppi",langcode:"Kielen koodi",langdir:"Kielen suunta",style:"Tyyli",id:"Id","merge_cells_title":"Yhdist\u00e4 taulukon solut",bgcolor:"Taustan v\u00e4ri",bordercolor:"Kehyksen v\u00e4ri","align_bottom":"Alas","align_top":"Yl\u00f6s",valign:"Pystysuunnan tasaus","cell_type":"Solun tyyppi","cell_title":"Taulukon solun asetukset","row_title":"Taulukon rivin asetukset","align_middle":"Keskitetty","align_right":"Oikea","align_left":"Vasen","align_default":"Oletus",align:"Tasaus",border:"Kehys",cellpadding:"Solun tyhj\u00e4 tila",cellspacing:"Solun v\u00e4li",rows:"Rivit",cols:"Sarakkeet",height:"Korkeus",width:"Leveys",title:"Lis\u00e4\u00e4/muokkaa taulukkoa",rowtype:"Rivi taulukon osassa","advanced_props":"Edistyneet asetukset","general_props":"Yleiset asetukset","advanced_tab":"Edistynyt","general_tab":"Yleiset","cell_col":"P\u00e4ivit\u00e4 kaikki sarakkeen solut"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/fr_dlg.js b/program/js/tiny_mce/plugins/table/langs/fr_dlg.js
deleted file mode 100644
index 9f9488af5..000000000
--- a/program/js/tiny_mce/plugins/table/langs/fr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fr.table_dlg',{"rules_border":"bordure","rules_box":"bo\u00eete","rules_vsides":"verticales","rules_rhs":"\u00e0 droite","rules_lhs":"\u00e0 gauche","rules_hsides":"horizontales","rules_below":"au-dessous","rules_above":"au-dessus","rules_void":"aucune",rules:"R\u00e8gles","frame_all":"tous","frame_cols":"colonnes","frame_rows":"lignes","frame_groups":"groupe","frame_none":"aucun",frame:"Cadre",caption:"Afficher la l\u00e9gende du tableau","missing_scope":"\u00cates-vous s\u00fbr de vouloir continuer sans sp\u00e9cifier de port\u00e9e pour cette cellule de titre ? Sans port\u00e9e, cela peut \u00eatre difficile pour certains utilisateurs de comprendre le contenu ou les donn\u00e9es affich\u00e9es dans le tableau.","cell_limit":"Vous avez d\u00e9pass\u00e9 le nombre maximum de cellules ({$cells}).","row_limit":"Vous avez d\u00e9pass\u00e9 le nombre maximum de lignes ({$rows}).","col_limit":"Vous avez d\u00e9pass\u00e9 le nombre maximum de colonnes ({$cols}).",colgroup:"Groupe de colonnes",rowgroup:"Groupe de lignes",scope:"Port\u00e9e",tfoot:"Pied de tableau",tbody:"Corps de tableau",thead:"En-t\u00eates de tableau","row_all":"Mettre \u00e0 jour toutes les lignes du tableau","row_even":"Mettre \u00e0 jour les lignes paires","row_odd":"Mettre \u00e0 jour les lignes impaires","row_row":"Mettre \u00e0 jour la ligne courante","cell_all":"Mettre \u00e0 jour toutes les cellules du tableau","cell_row":"Mettre \u00e0 jour toutes les cellules de la ligne","cell_cell":"Mettre \u00e0 jour la cellule courante",th:"Titre",td:"Donn\u00e9es",summary:"R\u00e9sum\u00e9",bgimage:"Image de fond",rtl:"de droite \u00e0 gauche",ltr:"De gauche \u00e0 droite",mime:"Type MIME de la cible",langcode:"Code de la langue",langdir:"Sens de lecture",style:"Style",id:"Id","merge_cells_title":"Fusionner les cellules",bgcolor:"Couleur du fond",bordercolor:"Couleur de la bordure","align_bottom":"Bas","align_top":"Haut",valign:"Alignement vertical","cell_type":"Type de cellule","cell_title":"Propri\u00e9t\u00e9s de la cellule","row_title":"Propri\u00e9t\u00e9s de la ligne","align_middle":"Centr\u00e9","align_right":"Droite","align_left":"Gauche","align_default":"Par d\u00e9faut",align:"Alignement",border:"Bordure",cellpadding:"Espacement dans les cellules",cellspacing:"Espacement entre les cellules",rows:"Lignes",cols:"Colonnes",height:"Hauteur",width:"Largeur",title:"Ins\u00e9rer / modifier un tableau",rowtype:"Type de ligne","advanced_props":"Propri\u00e9t\u00e9s avanc\u00e9es","general_props":"Propri\u00e9t\u00e9s g\u00e9n\u00e9rales","advanced_tab":"Avanc\u00e9","general_tab":"G\u00e9n\u00e9ral","cell_col":"Mettre \u00e0 jour toutes les cellules de la colonne"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/gl_dlg.js b/program/js/tiny_mce/plugins/table/langs/gl_dlg.js
deleted file mode 100644
index c992348fe..000000000
--- a/program/js/tiny_mce/plugins/table/langs/gl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('gl.table_dlg',{"rules_border":"borde","rules_box":"box","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"debaixo","rules_above":"encima","rules_void":"vac\u00edo",rules:"Regras","frame_all":"todos","frame_cols":"columnas","frame_rows":"filas","frame_groups":"grupos","frame_none":"ning\u00fan",frame:"Recadro",caption:"Subt\u00edtulo da t\u00e1boa","missing_scope":"\u00bfEst\u00e1 seguro que desexa continuar sen especifica-lo \u00e1mbito do encabezado de celda? Sen \u00e9l podr\u00eda ser dificultoso pra algunos usuarios entende-lo contido ou os datos mostrados na t\u00e1boa.","cell_limit":"Super\u00f3u o n\u00famero m\u00e1ximo de celdas: {$cells}.","row_limit":"Super\u00f3u o n\u00famero m\u00e1ximo de filas: {$rows}.","col_limit":"Super\u00f3u o n\u00famero m\u00e1ximo de columnas: {$cols}.",colgroup:"Grupo de columnas",rowgroup:"Grupo de filas",scope:"\u00c1mbito",tfoot:"Pe da t\u00e1boa",tbody:"Corpo da t\u00e1boa",thead:"Encabezamento da t\u00e1boa","row_all":"Actualizar todalas filas","row_even":"Actualizar filas pares","row_odd":"Actualizar filas impares","row_row":"Actualizar fila actual","cell_all":"Actualizar todalas celdas na t\u00e1boa","cell_row":"Actualizar todalas celdas na fila","cell_cell":"Actualizar celda actual",th:"Encabezamento",td:"Datos",summary:"Resumen",bgimage:"Imaxe de fondo",rtl:"Dereita a esquerda",ltr:"Esquerda a dereita",mime:"Tipo MIME",langcode:"C\u00f3digo da lenguaxe",langdir:"Direcci\u00f3n da lenguaxe",style:"Estilo",id:"Id","merge_cells_title":"Unir celdas",bgcolor:"Cor de fondo",bordercolor:"Cor do borde","align_bottom":"Abaixo","align_top":"Arriba",valign:"Ali\u00f1aci\u00f3n vertical","cell_type":"Tipo de celda","cell_title":"Propiedades da celda","row_title":"Propiedades da fila","align_middle":"Centrado","align_right":"Dereita","align_left":"Esquerda","align_default":"Predet.",align:"Ali\u00f1aci\u00f3n",border:"Borde",cellpadding:"Relleno de celda",cellspacing:"Espaciado de celda",rows:"Filas",cols:"Cols",height:"Alto",width:"Ancho",title:"Insertar/Modificar t\u00e1boa",rowtype:"Tipo de fila","advanced_props":"Propiedades avanzadas","general_props":"Propiedades xerales","advanced_tab":"Avanzado","general_tab":"Xeral","cell_col":"Update all cells in column"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/he_dlg.js b/program/js/tiny_mce/plugins/table/langs/he_dlg.js
deleted file mode 100644
index 25371ea70..000000000
--- a/program/js/tiny_mce/plugins/table/langs/he_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('he.table_dlg',{"rules_border":"\u05d2\u05d1\u05d5\u05dc","rules_box":"box","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"\u05de\u05ea\u05d7\u05ea","rules_above":"\u05de\u05e2\u05dc","rules_void":"void",rules:"\u05d7\u05d5\u05e7\u05d9\u05dd","frame_all":"\u05d4\u05db\u05d5\u05dc","frame_cols":"\u05e2\u05de\u05d5\u05d3\u05d5\u05ea","frame_rows":"\u05e9\u05d5\u05e8\u05d5\u05ea","frame_groups":"\u05e7\u05d1\u05d5\u05e6\u05d5\u05ea","frame_none":"\u05dc\u05dc\u05d0",frame:"Frame",caption:"\u05db\u05d5\u05ea\u05e8\u05ea \u05d4\u05d8\u05d1\u05dc\u05d4","missing_scope":"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.","cell_limit":"\u05d7\u05e8\u05d9\u05d2\u05d4 \u05de\u05de\u05e1\u05e4\u05e8 \u05d4\u05de\u05e7\u05e1\u05d9\u05de\u05d0\u05dc\u05d9 \u05e9\u05dc \u05d4\u05ea\u05d0\u05d9\u05dd \u05d1\u05d8\u05d1\u05dc\u05d4 \u05e9\u05dc {$cells}.","row_limit":"\u05d7\u05e8\u05d9\u05d2\u05d4 \u05de\u05de\u05e1\u05e4\u05e8 \u05d4\u05de\u05e7\u05e1\u05d9\u05de\u05d0\u05dc\u05d9 \u05e9\u05dc \u05d4\u05e9\u05d5\u05e8\u05d5\u05ea \u05e9\u05dc {$rows}.","col_limit":"\u05d7\u05e8\u05d9\u05d2\u05d4 \u05de\u05de\u05e1\u05e4\u05e8 \u05d4\u05e2\u05de\u05d5\u05d3\u05d5\u05ea \u05d4\u05de\u05e7\u05e1\u05d9\u05de\u05d0\u05dc\u05d9 \u05e9\u05dc {$cols}.",colgroup:"Col Group",rowgroup:"Row Group",scope:"Scope",tfoot:"\u05e9\u05d5\u05e8\u05d4 \u05ea\u05d7\u05ea\u05d9\u05ea",tbody:"\u05e9\u05d5\u05e8\u05d4 \u05e8\u05d2\u05d9\u05dc\u05d4",thead:"\u05e9\u05d5\u05e8\u05ea \u05db\u05d5\u05ea\u05e8\u05ea","row_all":"\u05e2\u05d3\u05db\u05d5\u05df\u05db\u05dc \u05d4\u05e9\u05d5\u05e8\u05d5\u05ea \u05d1\u05d8\u05d1\u05dc\u05d4","row_even":"\u05e2\u05d3\u05db\u05d5\u05df \u05e9\u05d5\u05e8\u05d5\u05ea \u05d6\u05d5\u05d2\u05d9\u05d5\u05ea \u05d1\u05d8\u05d1\u05dc\u05d4","row_odd":"\u05e2\u05d3\u05db\u05d5\u05df \u05e9\u05d5\u05e8\u05d5\u05ea \u05d0\u05d9-\u05d6\u05d5\u05d2\u05d9\u05d5\u05ea \u05d1\u05d8\u05d1\u05dc\u05d4","row_row":"\u05e2\u05d3\u05db\u05d5\u05df \u05e9\u05d5\u05e8\u05d4 \u05e0\u05d5\u05db\u05d7\u05d9\u05ea","cell_all":"\u05e2\u05d3\u05db\u05d5\u05df \u05db\u05dc \u05ea\u05d0\u05d9 \u05d4\u05d8\u05d1\u05dc\u05d4","cell_row":"\u05e2\u05d3\u05db\u05d5\u05df \u05db\u05dc \u05ea\u05d0\u05d9 \u05d4\u05e9\u05d5\u05e8\u05d4","cell_cell":"\u05e2\u05d3\u05db\u05d5\u05df \u05ea\u05d0 \u05e0\u05d5\u05db\u05d7\u05d9",th:"\u05db\u05d5\u05ea\u05e8\u05ea",td:"\u05ea\u05d0 \u05de\u05d9\u05d3\u05e2",summary:"\u05ea\u05de\u05e6\u05d9\u05ea",bgimage:"\u05ea\u05de\u05d5\u05e0\u05ea \u05e8\u05e7\u05e2",rtl:"\u05de\u05d9\u05de\u05d9\u05df \u05dc\u05e9\u05de\u05d0\u05dc",ltr:"\u05de\u05e9\u05de\u05d0\u05dc \u05dc\u05d9\u05de\u05d9\u05df",mime:"Target MIME type",langcode:"\u05e7\u05d5\u05d3 \u05d4\u05e9\u05e4\u05d4",langdir:"\u05db\u05d9\u05d5\u05d5\u05df \u05d4\u05e9\u05e4\u05d4",style:"\u05e2\u05d9\u05e6\u05d5\u05d1",id:"Id","merge_cells_title":"\u05d0\u05d7\u05d3 \u05ea\u05d0\u05d9\u05dd \u05d1\u05d8\u05d1\u05dc\u05d4",bgcolor:"\u05e6\u05d1\u05e2 \u05d4\u05e8\u05e7\u05e2",bordercolor:"\u05e6\u05d1\u05e2 \u05d4\u05d2\u05d1\u05d5\u05dc","align_bottom":"\u05ea\u05d7\u05ea\u05d9\u05ea","align_top":"\u05e2\u05dc\u05d9\u05d5\u05df",valign:"\u05d9\u05e9\u05d5\u05e8 \u05d0\u05e0\u05db\u05d9","cell_type":"\u05e1\u05d2\u05e0\u05d5\u05df \u05d4\u05ea\u05d0","cell_title":"\u05ea\u05db\u05d5\u05e0\u05d5\u05ea \u05ea\u05d0 \u05d1\u05d8\u05d1\u05dc\u05d4","row_title":"\u05ea\u05db\u05d5\u05e0\u05d5\u05ea \u05e9\u05d5\u05e8\u05d4 \u05d1\u05d8\u05d1\u05dc\u05d4","align_middle":"\u05d0\u05de\u05e6\u05e2","align_right":"\u05dc\u05d9\u05de\u05d9\u05df","align_left":"\u05dc\u05e9\u05de\u05d0\u05dc","align_default":"Default",align:"\u05d9\u05e9\u05d5\u05e8 \u05d0\u05d5\u05e4\u05e7\u05d9",border:"\u05d2\u05d1\u05d5\u05dc",cellpadding:"Cellpadding",cellspacing:"Cellspacing",rows:"\u05e9\u05d5\u05e8\u05d5\u05ea",cols:"\u05e2\u05de\u05d5\u05d3\u05d5\u05ea",height:"\u05d2\u05d5\u05d1\u05d4",width:"\u05e8\u05d5\u05d7\u05d1",title:"\u05d4\u05d5\u05e1\u05e4\u05ea/\u05e2\u05e8\u05d9\u05db\u05ea \u05d8\u05d1\u05dc\u05d4",rowtype:"\u05e1\u05d5\u05d2 \u05d4\u05e9\u05d5\u05e8\u05d4 \u05d1\u05d8\u05d1\u05dc\u05d4","advanced_props":"\u05ea\u05db\u05d5\u05e0\u05d5\u05ea \u05de\u05ea\u05e7\u05d3\u05de\u05d5\u05ea","general_props":"\u05ea\u05db\u05d5\u05e0\u05d5\u05ea \u05db\u05dc\u05dc\u05d9\u05d5\u05ea","advanced_tab":"\u05de\u05ea\u05e7\u05d3\u05dd","general_tab":"\u05db\u05dc\u05dc\u05d9","cell_col":"\u05e2\u05d3\u05db\u05df \u05d0\u05ea \u05db\u05dc \u05d4\u05ea\u05d0\u05d9\u05dd \u05d1\u05d8\u05d5\u05e8"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/hi_dlg.js b/program/js/tiny_mce/plugins/table/langs/hi_dlg.js
deleted file mode 100644
index bf2a8911a..000000000
--- a/program/js/tiny_mce/plugins/table/langs/hi_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hi.table_dlg',{"rules_border":"border","rules_box":"box","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"below","rules_above":"above","rules_void":"void",rules:"Rules","frame_all":"all","frame_cols":"cols","frame_rows":"rows","frame_groups":"groups","frame_none":"none",frame:"Frame",caption:"Table caption","missing_scope":"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.","cell_limit":"You\'ve exceeded the maximum number of cells of {$cells}.","row_limit":"You\'ve exceeded the maximum number of rows of {$rows}.","col_limit":"You\'ve exceeded the maximum number of columns of {$cols}.",colgroup:"Col Group",rowgroup:"Row Group",scope:"Scope",tfoot:"Table Foot",tbody:"Table Body",thead:"Table Head","row_all":"Update all rows in table","row_even":"Update even rows in table","row_odd":"Update odd rows in table","row_row":"Update current row","cell_all":"Update all cells in table","cell_row":"Update all cells in row","cell_cell":"Update current cell",th:"Header",td:"Data",summary:"Summary",bgimage:"Background image",rtl:"Right to left",ltr:"Left to right",mime:"Target MIME type",langcode:"Language code",langdir:"Language direction",style:"Style",id:"Id","merge_cells_title":"Merge table cells",bgcolor:"Background color",bordercolor:"Border color","align_bottom":"Bottom","align_top":"Top",valign:"Vertical alignment","cell_type":"Cell type","cell_title":"Table cell properties","row_title":"Table row properties","align_middle":"Center","align_right":"Right","align_left":"Left","align_default":"Default",align:"Alignment",border:"Border",cellpadding:"Cellpadding",cellspacing:"Cellspacing",rows:"Rows",cols:"Cols",height:"Height",width:"Width",title:"Insert/Modify table",rowtype:"Row in table part","advanced_props":"Advanced properties","general_props":"General properties","advanced_tab":"Advanced","general_tab":"General","cell_col":"Update all cells in column"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/hr_dlg.js b/program/js/tiny_mce/plugins/table/langs/hr_dlg.js
deleted file mode 100644
index 0760d72ef..000000000
--- a/program/js/tiny_mce/plugins/table/langs/hr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hr.table_dlg',{"rules_border":"okvir","rules_box":"sve strane","rules_vsides":"lijevo i desno","rules_rhs":"samo desno","rules_lhs":"samo lijevo","rules_hsides":"gornja i doljnja","rules_below":"ispod","rules_above":"iznad","rules_void":"prazno",rules:"Linije","frame_all":"sve","frame_cols":"stupci","frame_rows":"redovi","frame_groups":"grupe","frame_none":"bez okvira",frame:"Okvir",caption:"Opis tablice","missing_scope":"Jeste li sigurni da \u017eelite nastaviti bez da ste odredili podru\u010dje zaglavlja za ovu tablicu. Bez toga postoji mogu\u0107nost da \u0107e neki korisnici sa pote\u0161ko\u0107ama te\u0161ko razumjeti sadr\u017eaj ili podatke va\u0161e tablice.","cell_limit":"Pre\u0161li ste maksimalan broj \u0107elija ({$cells}).","row_limit":"Pre\u0161li ste maksimalan broj redaka ({$rows}).","col_limit":"Pre\u0161li ste maksimalan broj stupaca ({$cols}).",colgroup:"Grupa stupaca",rowgroup:"Grupa redaka",scope:"Domet",tfoot:"Podno\u017eje tablice",tbody:"Tijelo tablice",thead:"Zaglavlje tablice","row_all":"Primjeni na sve retke u tablici","row_even":"Primjeni na parne retke u tablici","row_odd":"Primjeni na neparne retke u tablici","row_row":"Primjeni na odabrani redak","cell_all":"Primjeni na sve \u0107elije u tablici","cell_row":"Primjeni na sve \u0107elije u retku","cell_cell":"Primjeni na odabranu \u0107eliju",th:"Zaglavlje",td:"Podatkovna",summary:"Sa\u017eetak",bgimage:"Slika pozadine",rtl:"S desna na lijevo",ltr:"S lijeva na desno",mime:"MIME tip",langcode:"Kod jezika",langdir:"Smjer jezika",style:"Stil",id:"Id","merge_cells_title":"Spoji \u0107elije",bgcolor:"Boja pozadine",bordercolor:"Boja obruba","align_bottom":"Dno","align_top":"Vrh",valign:"Okomito poravnavanje","cell_type":"Tip \u0107elije","cell_title":"Svojstva \u0107elije","row_title":"Svojstva retka","align_middle":"Sredina","align_right":"Desno","align_left":"Lijevo","align_default":"Osnovno",align:"Poravnavanje",border:"Obrub",cellpadding:"Dopuna \u0107elije",cellspacing:"Razmak \u0107elija",rows:"Redaka",cols:"Stupaca",height:"Visina",width:"\u0160irina",title:"Umetni/uredi tablicu",rowtype:"Redak u dijelu tablice","advanced_props":"Napredna svojstva","general_props":"Op\u0107a svojstva","advanced_tab":"Napredno","general_tab":"Op\u0107e","cell_col":"A\u017euriraj sve stanice u stupcu"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/hu_dlg.js b/program/js/tiny_mce/plugins/table/langs/hu_dlg.js
deleted file mode 100644
index 518c3ad10..000000000
--- a/program/js/tiny_mce/plugins/table/langs/hu_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hu.table_dlg',{"rules_border":"keret","rules_box":"doboz","rules_vsides":"f. oldalak","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"v. oldalak","rules_below":"alatta","rules_above":"f\u00f6l\u00f6tte","rules_void":"sehol",rules:"Vonalak","frame_all":"mind","frame_cols":"oszlopok","frame_rows":"sorok","frame_groups":"csoportok","frame_none":"nincs",frame:"Keret",caption:"C\u00edmsor","missing_scope":"Biztosan folytatni akarja an\u00e9lk\u00fcl, hogy hat\u00f3k\u00f6rt adna ennek a fejl\u00e9ccell\u00e1nak? Korl\u00e1toz\u00e1sokkal \u00e9l\u0151k sz\u00e1m\u00e1ra neh\u00e9z lesz meg\u00e9rteni a t\u00e1bl\u00e1zat tartalm\u00e1t.","cell_limit":"T\u00fall\u00e9pte a maxim\u00e1lis cellasz\u00e1mot, ami {$cells}.","row_limit":"T\u00fall\u00e9pte a maxim\u00e1lis sorsz\u00e1mot, ami {$rows}.","col_limit":"T\u00fall\u00e9pte a maxim\u00e1lis oszlopsz\u00e1mot, ami {$cols}.",colgroup:"Oszlop csoport",rowgroup:"Sor csoport",scope:"Hat\u00f3k\u00f6r",tfoot:"T\u00e1bl\u00e1zat l\u00e1bl\u00e9c",tbody:"T\u00e1bl\u00e1zat tartalom",thead:"T\u00e1bl\u00e1zat fejl\u00e9c","row_all":"Minden sor friss\u00edt\u00e9se","row_even":"P\u00e1ros sorok friss\u00edt\u00e9se","row_odd":"P\u00e1ratlan sorok friss\u00edt\u00e9se","row_row":"Sor friss\u00edt\u00e9se","cell_all":"T\u00e1bl\u00e1zat \u00f6sszes cell\u00e1j\u00e1nak friss\u00edt\u00e9se","cell_row":"Sor \u00f6sszes cell\u00e1j\u00e1nak friss\u00edt\u00e9se","cell_cell":"Cella friss\u00edt\u00e9se",th:"Fejl\u00e9c",td:"Adat",summary:"\u00d6sszegz\u00e9s",bgimage:"H\u00e1tt\u00e9rk\u00e9p",rtl:"Jobbr\u00f3l balra",ltr:"Balr\u00f3l jobbra",mime:"C\u00e9l MIME t\u00edpus",langcode:"Nyelvk\u00f3d",langdir:"\u00cdr\u00e1s ir\u00e1ny",style:"St\u00edlus",id:"Id","merge_cells_title":"Cell\u00e1k \u00f6sszevon\u00e1sa",bgcolor:"H\u00e1tt\u00e9rsz\u00edn",bordercolor:"Keretsz\u00edn","align_bottom":"Le","align_top":"Fel",valign:"F\u00fcgg\u0151leges igaz\u00edt\u00e1s","cell_type":"Cellat\u00edpus","cell_title":"Cella tulajdons\u00e1gai","row_title":"Sor tulajdons\u00e1gai","align_middle":"K\u00f6z\u00e9pre","align_right":"Jobbra","align_left":"Balra","align_default":"Alap\u00e9rtelmezett",align:"Igaz\u00edt\u00e1s",border:"Keret",cellpadding:"Cella bels\u0151 marg\u00f3",cellspacing:"Cella t\u00e1vols\u00e1g",rows:"Sorok",cols:"Oszlopok",height:"Magass\u00e1g",width:"Sz\u00e9less\u00e9g",title:"T\u00e1bl\u00e1zat besz\u00far\u00e1sa/szerkeszt\u00e9se",rowtype:"Sor a t\u00e1bl\u00e1ban","advanced_props":"Halad\u00f3 tulajdons\u00e1gok","general_props":"\u00c1ltal\u00e1nos tulajdons\u00e1gok","advanced_tab":"Halad\u00f3","general_tab":"\u00c1ltal\u00e1nos","cell_col":"\u00d6sszes cella friss\u00edt\u00e9se az oszlopban"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/hy_dlg.js b/program/js/tiny_mce/plugins/table/langs/hy_dlg.js
deleted file mode 100644
index 5b3222b70..000000000
--- a/program/js/tiny_mce/plugins/table/langs/hy_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hy.table_dlg',{"rules_border":"border","rules_box":"box","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"below","rules_above":"above","rules_void":"void",rules:"Rules","frame_all":"all","frame_cols":"cols","frame_rows":"rows","frame_groups":"groups","frame_none":"none",frame:"\u0424\u0440\u0435\u0439\u043c",caption:"Table caption","missing_scope":"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table","cell_limit":"You\'ve exceeded the maximum number of cells of ($ cells)","row_limit":"You\'ve exceeded the maximum number of rows of ($ rows)","col_limit":"You\'ve exceeded the maximum number of columns of ($ cols)",colgroup:"Col Group",rowgroup:"Row Group",scope:"Scope",tfoot:"\u041d\u0438\u0436\u043d\u044f\u044f \u0447\u0430\u0441\u0442\u0441\u0438\u043d\u0430",tbody:"\u0422\u0435\u043b\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u044b",thead:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0442\u0430\u0431\u043b\u0438\u0446\u044b","row_all":"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435","row_even":"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0447\u0435\u0442\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435","row_odd":"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0435\u0447\u0435\u0442\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435","row_row":"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443","cell_all":"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435","cell_row":"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435","cell_cell":"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u044f\u0447\u0435\u0439\u043a\u0443",th:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",td:"\u0414\u0430\u043d\u043d\u044b\u0435",summary:"\u041e\u0431\u0449\u0435\u0435",bgimage:"\u0424\u043e\u043d\u043e\u0432\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",rtl:"\u0421\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0435\u0432\u043e",ltr:"\u0421\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e",mime:"Target MIME-\u0442\u0438\u043f",langcode:"\u041a\u043e\u0434 \u044f\u0437\u044b\u043a\u0430",langdir:"\u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u044f\u0437\u044b\u043a\u0430",style:"\u0421\u0442\u0438\u043b\u044c",id:"Id","merge_cells_title":"\u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u044f\u0447\u0435\u0439\u043a\u0438",bgcolor:"\u0446\u0432\u0435\u0442 \u0444\u043e\u043d\u0430",bordercolor:"\u0446\u0432\u0435\u0442 \u0433\u0440\u0430\u043d\u0438\u0446\u044b","align_bottom":"\u041f\u043e \u043d\u0438\u0436\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e","align_top":"\u041f\u043e \u0432\u0435\u0440\u0445\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e",valign:"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435","cell_type":"\u0422\u0438\u043f \u044f\u0447\u0435\u0439\u043a\u0438","cell_title":"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u044f\u0447\u0435\u0439\u043a\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044b","row_title":"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0441\u0442\u0440\u043e\u043a\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b","align_middle":"\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443","align_right":"\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","align_left":"\u041f\u043e \u043b\u0435\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","align_default":"\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e",align:"\u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435",border:"\u0413\u0440\u0430\u043d\u0438\u0446\u0430",cellpadding:"\u041e\u0442\u0441\u0442\u0443\u043f\u044b \u0432 \u044f\u0447\u0435\u0439\u043a\u0430\u0445",cellspacing:"\u0420\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u044f\u0447\u0435\u0439\u043a\u0430\u043c\u0438",rows:"\u0421\u0440\u043e\u043a\u0438",cols:"\u0421\u0442\u043e\u043b\u0431\u0446\u044b",height:"\u0412\u044b\u0441\u043e\u0442\u0430",width:"\u0428\u0438\u0440\u0438\u043d\u0430",title:"\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 / \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b",rowtype:"Row in table part","advanced_props":"\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430","general_props":"\u041e\u0431\u0449\u0438\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430","advanced_tab":"\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e","general_tab":"\u041e\u0431\u0449\u0435\u0435","cell_col":"Update all cells in column"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/id_dlg.js b/program/js/tiny_mce/plugins/table/langs/id_dlg.js
deleted file mode 100644
index e67d2e6e6..000000000
--- a/program/js/tiny_mce/plugins/table/langs/id_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('id.table_dlg',{"rules_border":"border","rules_box":"box","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"below","rules_above":"above","rules_void":"void",rules:"Rules","frame_all":"all","frame_cols":"cols","frame_rows":"rows","frame_groups":"groups","frame_none":"none",frame:"Frame",caption:"Table caption","missing_scope":"Yakin ingin melanjutkan tanpa menetapkan cakupan sel header tabel ini. Tanpa itu, mungkin sulit bagi beberapa pengguna yang memiliki keterbatasan untuk memahami isi atau data yang ditampilkan dari tabel.","cell_limit":"Anda telah melebihi jumlah maksimum cell {$cells}.","row_limit":"Anda telah melebihi jumlah maksimum row {$rows}.","col_limit":"Anda telah melebihi jumlah maksimum kolom {$cols}.",colgroup:"Col Group",rowgroup:"Row Group",scope:"Scope",tfoot:"Table Foot",tbody:"Table Body",thead:"Table Head","row_all":"Update all rows in table","row_even":"Update even rows in table","row_odd":"Update odd rows in table","row_row":"Update current row","cell_all":"Update all cells in table","cell_row":"Update all cells in row","cell_cell":"Update current cell",th:"Header",td:"Data",summary:"Summary",bgimage:"Gambar Background",rtl:"Kanan ke kiri",ltr:"Kiri ke kanan",mime:"Target MIME type",langcode:"Kode Bahasa",langdir:"Bahasa",style:"Style",id:"Id","merge_cells_title":"Merge cell tabel",bgcolor:"Warna Background",bordercolor:"Warna Border","align_bottom":"Bawah","align_top":"Atas",valign:"Vertical alignment","cell_type":"Cell type","cell_title":"Properti cell tabel","row_title":"Properti row tabel","align_middle":"Tengah","align_right":"Kanan","align_left":"Kiri","align_default":"Default",align:"Alignment",border:"Border",cellpadding:"Cellpadding",cellspacing:"Cellspacing",rows:"Rows",cols:"Cols",height:"Tinggi",width:"Lebar",title:"Sisipkan/Ubah Tabel",rowtype:"Row in table part","advanced_props":"Properti Advanced","general_props":"Properti Umum","advanced_tab":"Advanced","general_tab":"Umum","cell_col":"Update all cells in column"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/is_dlg.js b/program/js/tiny_mce/plugins/table/langs/is_dlg.js
deleted file mode 100644
index 8b4b1ffc6..000000000
--- a/program/js/tiny_mce/plugins/table/langs/is_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('is.table_dlg',{"rules_border":"rammi","rules_box":"box","rules_vsides":"vsides","rules_rhs":"hhl","rules_lhs":"vhl","rules_hsides":"hli\u00f0ar","rules_below":"ne\u00f0an","rules_above":"ofan","rules_void":"\u00f3gilt",rules:"Rules","frame_all":"allt","frame_cols":"d\u00e1lkar","frame_rows":"ra\u00f0ir","frame_groups":"h\u00f3par","frame_none":"ekkert",frame:"rammi",caption:"T\u00f6fluval","missing_scope":"Ertu viss um a\u00f0 \u00fe\u00fa viljir halda \u00e1fram \u00e1n \u00feess a\u00f0 skilgreina innihaldi\u00f0 fyrir \u00feessa t\u00f6flu fyrirs\u00f6gn. \u00c1n hennar getur veri\u00f0 erfitt fyrir suma notendur me\u00f0 h\u00f6mlun a\u00f0 skilja innihaldi\u00f0 e\u00f0a \u00fea\u00f0 efni sem er til sta\u00f0ar \u00ed t\u00f6flunni.","cell_limit":"\u00de\u00fa ert komin yfir leyfilegan fj\u00f6lda reita {$cells}.","row_limit":"\u00de\u00fa ert komin yfir leyfilegna fj\u00f6lda ra\u00f0a {$rows}.","col_limit":"\u00de\u00fa ert komin yfir leyfilegan fj\u00f6lda d\u00e1lka {$cols}.",colgroup:"D\u00e1lkah\u00f3pur",rowgroup:"Ra\u00f0arh\u00f3pur",scope:"Umfang",tfoot:"T\u00f6fluf\u00f3tur",tbody:"T\u00f6flusv\u00e6\u00f0i",thead:"Fyrirs\u00f6gn t\u00f6flu","row_all":"Uppf\u00e6ra allar ra\u00f0ir \u00ed t\u00f6flunni","row_even":"Uppf\u00e6ra sl\u00e9ttra\u00f0ir","row_odd":"Uppf\u00e6ra oodara\u00f0ir","row_row":"Uppf\u00e6ra n\u00faverandi r\u00f6\u00f0","cell_all":"Uppf\u00e6ra alla reiti i t\u00f6flunni","cell_row":"Uppf\u00e6ra alla reiti \u00ed r\u00f6\u00f0inni","cell_cell":"Uppf\u00e6ra n\u00faverandi reit",th:"Fyrirs\u00f6gn",td:"G\u00f6gn",summary:"Yfirlit",bgimage:"Bakgrunnsmynd",rtl:"Fr\u00e1 h\u00e6gri til vinstri",ltr:"Fr\u00e1 vinstri til h\u00e6gri",mime:"Velja MIME tegund",langcode:"Tungum\u00e1la k\u00f3\u00f0i",langdir:"Tungum\u00e1la \u00e1tt",style:"St\u00edll",id:"id","merge_cells_title":"Sameina reiti",bgcolor:"Bakgrunnslitur",bordercolor:"Rammalitur","align_bottom":"Ne\u00f0st","align_top":"Efst",valign:"L\u00f3\u00f0r\u00e9tt j\u00f6fnun","cell_type":"Reitartegund","cell_title":"Eiginleikar reits","row_title":"Eiginleikar ra\u00f0ar","align_middle":"Mi\u00f0ja","align_right":"H\u00e6gri","align_left":"Vinstri","align_default":"St\u00f6\u00f0lu\u00f0",align:"J\u00f6fnun",border:"Rammi",cellpadding:"Reita \u00f6ndun",cellspacing:"Reitabil",rows:"Ra\u00f0ir",cols:"Cols",height:"H\u00e6\u00f0",width:"Breidd",title:"Setja inn/Breyta t\u00f6flu",rowtype:"R\u00f6\u00f0 \u00ed t\u00f6fluhluta","advanced_props":"Frekari eiginleikar","general_props":"Almennir eiginleikar","advanced_tab":"N\u00e1nar","general_tab":"Almennt","cell_col":"Update all cells in column"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/it_dlg.js b/program/js/tiny_mce/plugins/table/langs/it_dlg.js
deleted file mode 100644
index 2a847ed62..000000000
--- a/program/js/tiny_mce/plugins/table/langs/it_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('it.table_dlg',{"rules_border":"bordo","rules_box":"box","rules_vsides":"lato vert.","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"lato orizz.","rules_below":"sotto","rules_above":"sopra","rules_void":"vuoto",rules:"Regole","frame_all":"tutte","frame_cols":"colonne","frame_rows":"righe","frame_groups":"gruppi","frame_none":"nessuna",frame:"Cornice",caption:"Didascalia tabella","missing_scope":"Sicuro di proseguire senza aver specificato uno scope per l\'intestazione di questa tabella? Senza di esso, potrebbe essere difficoltoso per alcuni utenti con disabilit\u00e0 capire il contenuto o i dati mostrati nella tabella.","cell_limit":"Superato il numero massimo di celle di {$cells}.","row_limit":"Superato il numero massimo di righe di {$rows}.","col_limit":"Superato il numero massimo di colonne di {$cols}.",colgroup:"Gruppo colonna",rowgroup:"Gruppo riga",scope:"Scope",tfoot:"Pedice tabella",tbody:"Corpo tabella",thead:"Intestazione tabella","row_all":"Update tutte le righe della tabella","row_even":"Aggiorna righe pari della tabella","row_odd":"Aggiorna righe dispari della tabella","row_row":"Aggiorna riga corrente","cell_all":"Aggiorna tutte le celle della tabella","cell_row":"Aggiorna tutte le celle della riga","cell_cell":"Aggiorna cella corrente",th:"Intestazione",td:"Data",summary:"Sommario",bgimage:"Immagine sfondo",rtl:"Destra verso sinistra",ltr:"Sinistra verso destra",mime:"Tipo MIME del target",langcode:"Lingua",langdir:"Direzione testo",style:"Stile",id:"Id","merge_cells_title":"Unisci celle",bgcolor:"Colore sfondo",bordercolor:"Colore bordo","align_bottom":"In basso","align_top":"In alto",valign:"Allineamento verticale","cell_type":"Tipo cella","cell_title":"Propriet\u00e0 cella","row_title":"Propriet\u00e0 riga","align_middle":"Centra","align_right":"A destra","align_left":"A sinistra","align_default":"Predefinito",align:"Allineamento",border:"Bordo",cellpadding:"Padding celle",cellspacing:"Spaziatura celle",rows:"Righe",cols:"Colonne",height:"Altezza",width:"Larghezza",title:"Inserisci/Modifica tabella",rowtype:"Riga in una parte di tabella","advanced_props":"Propriet\u00e0 avanzate","general_props":"Propriet\u00e0 generali","advanced_tab":"Avanzate","general_tab":"Generale","cell_col":"Aggiorna tutte le celle della colonna"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/ja_dlg.js b/program/js/tiny_mce/plugins/table/langs/ja_dlg.js
deleted file mode 100644
index ad3358642..000000000
--- a/program/js/tiny_mce/plugins/table/langs/ja_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ja.table_dlg',{"rules_border":"\u67a0\u7dda(\u4e0a\u4e0b\u5de6\u53f3)","rules_box":"\u30dc\u30c3\u30af\u30b9(\u4e0a\u4e0b\u5de6\u53f3)","rules_vsides":"\u5de6\u53f3\u306e\u7e26\u7dda","rules_rhs":"\u53f3\u306e\u7e26\u7dda","rules_lhs":"\u5de6\u306e\u7e26\u7dda","rules_hsides":"\u4e0a\u4e0b\u306e\u6a2a\u7dda","rules_below":"\u4e0b\u306e\u6a2a\u7dda","rules_above":"\u4e0a\u306e\u6a2a\u7dda","rules_void":"\u306a\u3057",rules:"\u8868\u306e\u5916\u67a0","frame_all":"\u3059\u3079\u3066","frame_cols":"\u5217","frame_rows":"\u884c","frame_groups":"\u30b0\u30eb\u30fc\u30d7\u6bce","frame_none":"\u306a\u3057",frame:"\u30bb\u30eb\u306e\u67a0",caption:"\u8868\u306e\u898b\u51fa\u3057","missing_scope":"\u3053\u306e\u8868\u306e\u30d8\u30c3\u30c0\u30fc\u306e\u30bb\u30eb\u306e\u7bc4\u56f2\u3092\u8a2d\u5b9a\u3057\u306a\u3044\u3067\u672c\u5f53\u306b\u7d9a\u3051\u307e\u3059\u304b? \u3053\u306e\u307e\u307e\u3067\u306f\u76ee\u306e\u4e0d\u81ea\u7531\u306a\u65b9\u304c\u8868\u306e\u5185\u5bb9\u3084\u8868\u793a\u3055\u308c\u308b\u30c7\u30fc\u30bf\u3092\u7406\u89e3\u3059\u308b\u306e\u304c\u56f0\u96e3\u306b\u306a\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002","cell_limit":"\u30bb\u30eb\u306e\u6700\u5927\u6570\u306e${cells}\u3092\u8d85\u3048\u307e\u3057\u305f\u3002","row_limit":"\u884c\u306e\u6700\u5927\u6570\u306e${rows}\u3092\u8d85\u3048\u307e\u3057\u305f\u3002","col_limit":"\u5217\u306e\u6700\u5927\u6570\u306e${cols}\u3092\u8d85\u3048\u307e\u3057\u305f\u3002",colgroup:"\u5217\u30b0\u30eb\u30fc\u30d7",rowgroup:"\u884c\u30b0\u30eb\u30fc\u30d7",scope:"\u30b9\u30b3\u30fc\u30d7",tfoot:"\u8868\u306e\u30d5\u30c3\u30bf\u30fc",tbody:"\u8868\u306e\u30dc\u30c7\u30a3",thead:"\u8868\u306e\u30d8\u30c3\u30c0\u30fc","row_all":"\u3059\u3079\u3066\u306e\u884c\u3092\u66f4\u65b0","row_even":"\u5076\u6570\u884c\u3092\u66f4\u65b0","row_odd":"\u5947\u6570\u884c\u3092\u66f4\u65b0","row_row":"\u9078\u629e\u3057\u3066\u3044\u308b\u884c\u3092\u66f4\u65b0","cell_all":"\u3059\u3079\u3066\u306e\u30bb\u30eb\u3092\u66f4\u65b0","cell_row":"\u884c\u5185\u306e\u30bb\u30eb\u3092\u66f4\u65b0","cell_cell":"\u9078\u629e\u3057\u3066\u3044\u308b\u30bb\u30eb\u3092\u66f4\u65b0",th:"\u30d8\u30c3\u30c0\u30fc",td:"\u30c7\u30fc\u30bf",summary:"\u30b5\u30de\u30ea\u30fc",bgimage:"\u80cc\u666f\u306e\u753b\u50cf",rtl:"\u53f3\u304b\u3089\u5de6",ltr:"\u5de6\u304b\u3089\u53f3",mime:"\u30bf\u30fc\u30b2\u30c3\u30c8\u306eMIME\u30bf\u30a4\u30d7",langcode:"\u8a00\u8a9e\u30b3\u30fc\u30c9",langdir:"\u6587\u7ae0\u306e\u65b9\u5411",style:"\u30b9\u30bf\u30a4\u30eb",id:"ID","merge_cells_title":"\u30bb\u30eb\u3092\u7d50\u5408",bgcolor:"\u80cc\u666f\u306e\u8272",bordercolor:"\u67a0\u7dda\u306e\u8272","align_bottom":"\u4e0b\u63c3\u3048","align_top":"\u4e0a\u63c3\u3048",valign:"\u5782\u76f4\u65b9\u5411\u306e\u914d\u7f6e","cell_type":"\u30bb\u30eb\u306e\u7a2e\u985e","cell_title":"\u30bb\u30eb\u306e\u5c5e\u6027","row_title":"\u884c\u306e\u5c5e\u6027","align_middle":"\u4e2d\u592e\u63c3\u3048","align_right":"\u53f3\u63c3\u3048","align_left":"\u5de6\u63c3\u3048","align_default":"\u521d\u671f\u72b6\u614b",align:"\u914d\u7f6e",border:"\u67a0\u7dda",cellpadding:"\u30bb\u30eb\u306e\u30d1\u30c7\u30a3\u30f3\u30b0(cellpadding)",cellspacing:"\u30bb\u30eb\u306e\u9593\u9694(cellspacing)",rows:"\u884c",cols:"\u5217",height:"\u9ad8\u3055",width:"\u5e45",title:"\u8868\u306e\u633f\u5165\u3084\u7de8\u96c6",rowtype:"\u884c","advanced_props":"\u9ad8\u5ea6\u306a\u5c5e\u6027","general_props":"\u4e00\u822c\u7684\u306a\u5c5e\u6027","advanced_tab":"\u9ad8\u5ea6","general_tab":"\u4e00\u822c","cell_col":"\u3059\u3079\u3066\u306e\u30bb\u30eb\u3092\u66f4\u65b0"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/ka_dlg.js b/program/js/tiny_mce/plugins/table/langs/ka_dlg.js
deleted file mode 100644
index ff8b1bef9..000000000
--- a/program/js/tiny_mce/plugins/table/langs/ka_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ka.table_dlg',{"rules_border":"\u10e1\u10d0\u10d6\u10e6\u10d5\u10d0\u10e0\u10d8","rules_box":"\u10d9\u10dd\u10da\u10dd\u10e4\u10d8","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"below","rules_above":"above","rules_void":"void",rules:"wesebi","frame_all":"\u10e7\u10d5\u10d4\u10da\u10d0","frame_cols":"\u10e1\u10d5\u10d4\u10e2\u10d4\u10d1\u10d8","frame_rows":"\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d4\u10d1\u10d8","frame_groups":"\u10ef\u10d2\u10e3\u10e4\u10d4\u10d1\u10d8","frame_none":"none",frame:"\u10d9\u10d0\u10d3\u10e0\u10d8",caption:"\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8","missing_scope":"\u10d7\u10e3 \u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8 \u10d0\u10e0 \u10d8\u10e5\u10dc\u10d4\u10d1\u10d0 \u10db\u10d8\u10d7\u10d8\u10d7\u10d4\u10d1\u10e3\u10da\u10d8, \u10e8\u10d4\u10d8\u10eb\u10da\u10d4\u10d1\u10d0 \u10e7\u10d5\u10d4\u10da\u10d0\u10db \u10d5\u10d4\u10e0 \u10dc\u10d0\u10ee\u10dd\u10e1 \u10d8\u10dc\u10e4\u10dd\u10e0\u10db\u10d0\u10ea\u10d8\u10d0.","cell_limit":"\u10db\u10d8\u10e6\u10ec\u10d4\u10e3\u10da\u10d8\u10d0 \u10db\u10d0\u10e5\u10e1\u10d8\u10db\u10d0\u10da\u10e3\u10e0\u10d8 \u10d6\u10e6\u10d5\u10d0\u10e0\u10d8, $ \u10e3\u10ef\u10e0\u10d0.","row_limit":"\u10db\u10d8\u10e6\u10ec\u10d4\u10e3\u10da\u10d8\u10d0 \u10db\u10d0\u10e5\u10e1\u10d8\u10db\u10d0\u10da\u10e3\u10e0\u10d8 \u10d6\u10e6\u10d5\u10d0\u10e0\u10d8, $ \u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8.","col_limit":"\u10db\u10d8\u10e6\u10ec\u10d4\u10e3\u10da\u10d8\u10d0 \u10db\u10d0\u10e5\u10e1\u10d8\u10db\u10d0\u10da\u10e3\u10e0\u10d8 \u10d6\u10e6\u10d5\u10d0\u10e0\u10d8, $ \u10e1\u10d5\u10d4\u10e2\u10d8.",colgroup:"\u10e1\u10d5\u10d4\u10e2\u10d4\u10d1\u10d8\u10e1 \u10ef\u10d2\u10e3\u10e4\u10d8",rowgroup:"\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d4\u10d1\u10d8\u10e1 \u10ef\u10d2\u10e3\u10e4\u10d8",scope:"\u10db\u10d8\u10d3\u10d0\u10db\u10dd",tfoot:"\u10d3\u10d0\u10e1\u10e0\u10e3\u10da\u10d4\u10d1\u10d0",tbody:"\u10e1\u10ee\u10d4\u10e3\u10da\u10d8",thead:"\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8","row_all":"\u10ea\u10ee\u10e0\u10d8\u10da\u10e1\u10d8 \u10e7\u10d5\u10d4\u10da\u10d0 \u10e3\u10ef\u10e0\u10d8\u10e1 \u10d2\u10d0\u10dc\u10d0\u10ee\u10da\u10d4\u10d1\u10d0","row_even":"\u10ea\u10ee\u10e0\u10d8\u10da\u10e8\u10d8 \u10da\u10e3\u10ec\u10d8\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d4\u10d1\u10d8\u10e1 \u10d2\u10d0\u10dc\u10d0\u10ee\u10da\u10d4\u10d1\u10d0","row_odd":"\u10ea\u10ee\u10e0\u10e3\u10da\u10e1\u10d8 \u10d9\u10d4\u10dc\u10e2\u10d8 \u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d4\u10d1\u10d8\u10e1 \u10d2\u10d0\u10dc\u10d0\u10ee\u10da\u10d4\u10d1\u10d0","row_row":"\u10db\u10dd\u10ea\u10d4\u10db\u10e3\u10da\u10d8 \u10e1\u10e2\u10d8\u10e0\u10e5\u10dd\u10dc\u10d8\u10e1 \u10d2\u10d0\u10dc\u10d0\u10ee\u10da\u10d4\u10d1\u10d0","cell_all":"\u10ea\u10ee\u10e0\u10d8\u10da\u10e1\u10d8 \u10e7\u10d5\u10d4\u10da\u10d0 \u10e3\u10ef\u10e0\u10d8\u10e1 \u10d2\u10d0\u10dc\u10d0\u10ee\u10da\u10d4\u10d1\u10d0","cell_row":"\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10e8\u10d8 \u10e7\u10d5\u10d4\u10da\u10d0 \u10e3\u10ef\u10e0\u10e1 \u10d2\u10d0\u10dc\u10d0\u10ee\u10da\u10d4\u10d1\u10d0","cell_cell":"\u10db\u10dd\u10ea\u10d4\u10db\u10e3\u10da\u10d8 \u10e3\u10ef\u10e0\u10d8\u10e1 \u10d2\u10d0\u10dc\u10d0\u10ee\u10da\u10d4\u10d1\u10d0",th:"\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8",td:"\u10db\u10dd\u10dc\u10d0\u10ea\u10d4\u10db\u10d4\u10d1\u10d8",summary:"\u10e1\u10d0\u10d4\u10e0\u10d7\u10dd",bgimage:"\u10e4\u10dd\u10dc\u10e3\u10e0\u10d8 \u10d2\u10d0\u10db\u10dd\u10e1\u10d0\u10ee\u10e3\u10da\u10d1\u10d0",rtl:"\u10db\u10d0\u10e0\u10d5\u10dc\u10d8\u10d3\u10d0\u10dc \u10db\u10d0\u10e0\u10ea\u10ee\u10dc\u10d8\u10d5",ltr:"\u10db\u10d0\u10e0\u10ea\u10ee\u10dc\u10d8\u10d3\u10d0\u10dc \u10db\u10d0\u10e0\u10ef\u10d5\u10dc\u10d8\u10d5",mime:"MIME \u10db\u10d8\u10d6\u10dc\u10d8\u10e1 \u10e2\u10d8\u10de\u10d8",langcode:"\u10d4\u10dc\u10d8\u10e1 \u10d9\u10dd\u10d3\u10d8",langdir:"\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1 \u10db\u10d8\u10db\u10d0\u10e0\u10d7\u10e3\u10da\u10d4\u10d1\u10d0",style:"\u10e1\u10e2\u10d8\u10da\u10d8",id:"\u10e1\u10d0\u10ee\u10d4\u10da\u10d8","merge_cells_title":"\u10e3\u10ef\u10e0\u10d4\u10d1\u10d8\u10e1 \u10d2\u10d0\u10d4\u10e0\u10d7\u10d8\u10d0\u10dc\u10d4\u10d1\u10d0",bgcolor:"\u10e8\u10d4\u10d5\u10e1\u10d4\u10d1\u10d8\u10e1 \u10e4\u10d4\u10e0\u10d8",bordercolor:"\u10e1\u10d0\u10d6\u10e6\u10d5\u10e0\u10d4\u10d1\u10d8\u10e1 \u10e4\u10d4\u10e0\u10d8","align_bottom":"\u10e5\u10d5\u10d4\u10d3\u10d0 \u10d9\u10d8\u10d3\u10d4\u10d6\u10d4","align_top":"\u10d6\u10d4\u10d3\u10d0 \u10d9\u10d8\u10d3\u10d4\u10d6\u10d4",valign:"\u10d5\u10d4\u10e0\u10e2\u10d8\u10d9\u10d0\u10da\u10e3\u10e0\u10d8 \u10d2\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d0","cell_type":"\u10e2\u10d8\u10de\u10d8","cell_title":"\u10e3\u10ef\u10e0\u10d8\u10e1 \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8","row_title":"\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8","align_middle":"\u10ea\u10d4\u10dc\u10e2\u10e0\u10d6\u10d4","align_right":"\u10db\u10d0\u10e0\u10ef\u10d5\u10d4\u10dc\u10d0 \u10d9\u10d8\u10d3\u10d4\u10d6\u10d4","align_left":"\u10db\u10d0\u10e0\u10ea\u10ee\u10d4\u10dc\u10d0 \u10d9\u10d8\u10d3\u10d4\u10d6\u10d4","align_default":"\u10e1\u10d0\u10ec\u10d8\u10e1\u10d0\u10d3",align:"\u10d2\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d0",border:"\u10e1\u10d0\u10d6\u10e6\u10d5\u10d0\u10e0\u10d8",cellpadding:"\u10e3\u10ef\u10e0\u10d4\u10d1\u10e1 \u10e8\u10dd\u10e0\u10d8\u10e1 \u10d3\u10d0\u10e8\u10dd\u10e0\u10d4\u10d1\u10d0",cellspacing:"\u10e3\u10ef\u10e0\u10d4\u10d1\u10e1 \u10e8\u10dd\u10e0\u10d8\u10e1 \u10d3\u10d0\u10e8\u10dd\u10e0\u10d4\u10d1\u10d0",rows:"\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d4\u10d1\u10d8",cols:"\u10e1\u10d5\u10d4\u10e2\u10d4\u10d1\u10d8",height:"\u10e1\u10d8\u10db\u10d0\u10e6\u10da\u10d4",width:"\u10e1\u10d8\u10d2\u10d0\u10dc\u10d4",title:"\u10ea\u10ee\u10e0\u10d8\u10da\u10d8\u10e1 \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8",rowtype:"\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10e0\u10d8\u10de\u10d8","advanced_props":"\u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d8\u10d7\u10d8 \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8","general_props":"\u10e1\u10d0\u10d4\u10e0\u10d7\u10dd \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8","advanced_tab":"\u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d8\u10d7","general_tab":"\u10e1\u10d0\u10d4\u10e0\u10d7\u10dd","cell_col":"Update all cells in column"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/ko_dlg.js b/program/js/tiny_mce/plugins/table/langs/ko_dlg.js
deleted file mode 100644
index 67c7d8d71..000000000
--- a/program/js/tiny_mce/plugins/table/langs/ko_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ko.table_dlg',{"rules_border":"border","rules_box":"box","rules_vsides":"\uc88c\uc6b0\ubc94\uc704\ub9cc","rules_rhs":"\uc6b0\uce21 \ubc94\uc704\ub9cc","rules_lhs":"\uc88c\uce21 \ubc94\uc704\ub9cc","rules_hsides":"\uc0c1\ud558\ubc94\uc704\ub9cc","rules_below":"\uc544\ub798","rules_above":"\uc704","rules_void":"Void",rules:"Rules","frame_all":"\ubaa8\ub450","frame_cols":"\uc5f4","frame_rows":"\ud589","frame_groups":"\uadf8\ub8f9","frame_none":"\uc5c6\uc74c",frame:"Frame",caption:"\ud45c \uc81c\ubaa9","missing_scope":"\uc774 \ud45c \ud5e4\ub354\uc140\uc5d0 scope\uc18d\uc131\uc744 \uc9c0\uc815\ud558\uc9c0\uc54a\uc544\ub3c4 \uad1c\ucc2e\uc2b5\ub2c8\uae4c? \uc9c0\uc815\ud558\uc9c0 \uc54a\ub294 \uacbd\uc6b0, \uc2dc\uac04\uc801\uc73c\ub85c \ud14c\uc774\ube14\uc758 \uad6c\uc870\ub97c \ud30c\uc545\ud558\ub294 \uac83\uc774 \uc5b4\ub824\uc6b4 \ubd84\uc758 \uc811\uadfc\uc131\uc774 \uc800\ud558\ud569\ub2c8\ub2e4.","cell_limit":"\uc140\uc218\uc758 \uc0c1\ud55c{$cells}\ub97c \ub118\uc5c8\uc2b5\ub2c8\ub2e4.","row_limit":"\ud589\uc218\uc758 \uc0c1\ud55c{$rows}\ub97c \ub118\uc5c8\uc2b5\ub2c8\ub2e4.","col_limit":"\uc5f4 \uc218\uc758 \uc0c1\ud55c{$cols}\ub97c \ub118\uc5c8\uc2b5\ub2c8\ub2e4.",colgroup:"\uc5f4 \uadf8\ub8f9",rowgroup:"\ud589 \uadf8\ub8f9",scope:"Scope",tfoot:"\ubc14\ub2e5\uae00",tbody:"\ubcf8\ubb38",thead:"\uba38\ub9bf\uae00","row_all":"\ud45c\uc758 \ubaa8\ub4e0 \ud589 \uac31\uc2e0","row_even":"\ud45c\uc758 \uc9dd\uc218 \ud589 \uac31\uc2e0","row_odd":"\ud45c\uc758 \ud640\uc218 \ud589 \uac31\uc2e0","row_row":"\ud604\uc7ac \ud589 \uac31\uc2e0","cell_all":"\ud45c\uc758 \ubaa8\ub4e0 \uc140 \uac31\uc2e0","cell_row":"\ud589\uc758 \ubaa8\ub4e0 \uc140 \uac31\uc2e0","cell_cell":"\ud604\uc7ac \uc140 \uac31\uc2e0",th:"\uba38\ub9bf\uae00",td:"\ub370\uc774\ud130",summary:"\uc694\uc57d",bgimage:"\ubc30\uacbd \uc774\ubbf8\uc9c0",rtl:"\uc624\ub978\ucabd\uc5d0\uc11c \uc67c\ucabd\uc73c\ub85c",ltr:"\uc67c\ucabd\uc5d0\uc11c \uc624\ub978\ucabd\uc73c\ub85c",mime:"Target MIME \ud0c0\uc785",langcode:"\uc5b8\uc5b4 \ucf54\ub4dc",langdir:"\ubb38\uc790 \ubc29\ud5a5",style:"\uc11c\uc2dd",id:"ID","merge_cells_title":"\uc140 \ubcd1\ud569",bgcolor:"\ubc30\uacbd\uc0c9",bordercolor:"\ud14c\ub450\ub9ac \uc0c9","align_bottom":"\ud558","align_top":"\uc0c1",valign:"\uc138\ub85c \ub9de\ucda4","cell_type":"\uc140 \uc885\ub958","cell_title":"\uc140 \uc18d\uc131","row_title":"\ud589 \uc18d\uc131","align_middle":"\uac00\uc6b4\ub370 \ub9de\ucda4","align_right":"\uc624\ub978\ucabd \ub9de\ucda4","align_left":"\uc67c\ucabd \ub9de\ucda4","align_default":"\uae30\ubcf8\uac12",align:"\uc904 \ub9de\ucda4",border:"\ud14c\ub450\ub9ac\uc120",cellpadding:"\uc140\ub0b4 \uc5ec\ubc31",cellspacing:"\uc140 \uac04\uaca9",rows:"\ud589",cols:"\uc5f4",height:"\ub192\uc774",width:"\ud3ed",title:"\ud45c \uc0bd\uc785/\ud3b8\uc9d1",rowtype:"\ud589 \uc885\ub958","advanced_props":"\uc138\ubd80 \uc18d\uc131","general_props":"\uc77c\ubc18 \uc18d\uc131","advanced_tab":"\uc138\ubd80 \uc0ac\ud56d","general_tab":"\uc77c\ubc18","cell_col":"\uc5f4\uc758 \ubaa8\ub4e0 \uc140 \uac31\uc2e0"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/lt_dlg.js b/program/js/tiny_mce/plugins/table/langs/lt_dlg.js
deleted file mode 100644
index 754fd7d07..000000000
--- a/program/js/tiny_mce/plugins/table/langs/lt_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('lt.table_dlg',{"rules_border":"r\u0117melis","rules_box":"d\u0117\u017eut\u0117","rules_vsides":"vert. pus\u0117s","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hor. pus\u0117s","rules_below":"apatinis","rules_above":"vir\u0161utinis","rules_void":"negaliojantis",rules:"Taisykl\u0117s","frame_all":"visi","frame_cols":"stulpeliai","frame_rows":"eilut\u0117s","frame_groups":"grup\u0117s","frame_none":"joks",frame:"R\u0117melis",caption:"Lentel\u0117s antra\u0161t\u0117","missing_scope":"Ar norite t\u0119sti nenurod\u0119 galiojimo srities \u0161iam lentel\u0117s vir\u0161utiniam langeliui. Be nurodymo, kai kuriems naudotojams su negalia gali b\u016bti sunku suprasti lentel\u0117je atvaizduojam\u0173 duomen\u0173 turin\u012f.","cell_limit":"Vir\u0161ijote did\u017eiausi\u0105 ({$cells}) langeli\u0173 kiek\u012f.","row_limit":"Vir\u0161ijote did\u017eiausi\u0105 ({$rows}) eilu\u010di\u0173 kiek\u012f.","col_limit":"Vir\u0161ijote did\u017eiausi\u0105 ({$cols}) stulpeli\u0173 kiek\u012f.",colgroup:"Stulpeli\u0173 grup\u0117",rowgroup:"Eilu\u010di\u0173 grup\u0117",scope:"Galiojimo sritis",tfoot:"Lentel\u0117s apa\u010dia",tbody:"Lentel\u0117s vidus",thead:"Lentel\u0117s vir\u0161us","row_all":"Atnaujinti visas lentel\u0117s eilutes","row_even":"Atnaujinti lygines lentel\u0117s eilutes","row_odd":"Atnaujinti nelygines lentel\u0117s eilutes","row_row":"Atnaujinti dabartin\u0119 eilut\u0119","cell_all":"Atnaujinti visus lentel\u0117s langelius","cell_row":"Atnaujinti visus eilut\u0117s langelius","cell_cell":"Atnaujinti dabartin\u012f langel\u012f",th:"Antra\u0161t\u0117",td:"Duomenys",summary:"Apibendrinimas",bgimage:"Fono paveiksl\u0117lis",rtl:"I\u0161 de\u0161in\u0117s \u012f kair\u0119",ltr:"I\u0161 kair\u0117s \u012f de\u0161in\u0119",mime:"Paskirties MIME tipas",langcode:"Kalbos kodas",langdir:"Kalbos kryptis",style:"Stilius",id:"Id","merge_cells_title":"Sujungti lentel\u0117s langelius",bgcolor:"Fono spalva",bordercolor:"R\u0117melio spalva","align_bottom":"Apa\u010dioje","align_top":"Vir\u0161uje",valign:"Vertikalus lygiavimas","cell_type":"Langelio tipas","cell_title":"Lentel\u0117s langeli\u0173 nustatymai","row_title":"Lentel\u0117s eilut\u0117s nustatymai","align_middle":"Centruoti","align_right":"Lygiuoti de\u0161in\u0117je","align_left":"Lygiuoti kair\u0117je","align_default":"Standartinis",align:"Lygiavimas",border:"R\u0117melis",cellpadding:"Tarpas langelio viduje",cellspacing:"Tarpas tarp langeli\u0173",rows:"Eilut\u0117s",cols:"Stulpeliai",height:"Auk\u0161tis",width:"Ilgis",title:"\u012eterpti/modifikuoti lentel\u0119",rowtype:"Eilut\u0117 lentel\u0117s dalyje","advanced_props":"I\u0161pl\u0117stiniai nustatymai","general_props":"Bendri nustatymai","advanced_tab":"I\u0161pl\u0117sta","general_tab":"Bendra","cell_col":"Atnaujinti visus langelius stulpelyje"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/lv_dlg.js b/program/js/tiny_mce/plugins/table/langs/lv_dlg.js
deleted file mode 100644
index 6920325d8..000000000
--- a/program/js/tiny_mce/plugins/table/langs/lv_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('lv.table_dlg',{"rules_border":"border","rules_box":"box","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"below","rules_above":"above","rules_void":"void",rules:"Rules","frame_all":"all","frame_cols":"cols","frame_rows":"rows","frame_groups":"groups","frame_none":"none",frame:"Frame",caption:"Table caption","missing_scope":"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.","cell_limit":"You\'ve exceeded the maximum number of cells of {$cells}.","row_limit":"You\'ve exceeded the maximum number of rows of {$rows}.","col_limit":"You\'ve exceeded the maximum number of columns of {$cols}.",colgroup:"Col Group",rowgroup:"Row Group",scope:"Scope",tfoot:"Table Foot",tbody:"Table Body",thead:"Table Head","row_all":"Update all rows in table","row_even":"Update even rows in table","row_odd":"Update odd rows in table","row_row":"Update current row","cell_all":"Update all cells in table","cell_row":"Update all cells in row","cell_cell":"Update current cell",th:"Header",td:"Data",summary:"Summary",bgimage:"Background image",rtl:"Right to left",ltr:"Left to right",mime:"Target MIME type",langcode:"Language code",langdir:"Language direction",style:"Style",id:"Id","merge_cells_title":"Merge table cells",bgcolor:"Background color",bordercolor:"Border color","align_bottom":"Bottom","align_top":"Top",valign:"Vertical alignment","cell_type":"Cell type","cell_title":"Table cell properties","row_title":"Table row properties","align_middle":"Center","align_right":"Right","align_left":"Left","align_default":"Default",align:"Alignment",border:"Border",cellpadding:"Cellpadding",cellspacing:"Cellspacing",rows:"Rows",cols:"Cols",height:"Height",width:"Width",title:"Insert/Modify table",rowtype:"Row in table part","advanced_props":"Advanced properties","general_props":"General properties","advanced_tab":"Advanced","general_tab":"General","cell_col":"Atjaunot visus logus ail\u0113"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/mk_dlg.js b/program/js/tiny_mce/plugins/table/langs/mk_dlg.js
deleted file mode 100644
index 6bf049b19..000000000
--- a/program/js/tiny_mce/plugins/table/langs/mk_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('mk.table_dlg',{"rules_border":"\u0433\u0440\u0430\u043d\u0438\u0446\u0430","rules_box":"\u043a\u0443\u0442\u0438\u0458\u0430","rules_vsides":"\u043b\u0435\u0432\u043e \u0438 \u0434\u0435\u0441\u043d\u043e","rules_rhs":"\u043e\u0434 \u0434\u0435\u0441\u043d\u043e \u043d\u0430 \u043b\u0435\u0432\u043e","rules_lhs":"\u043e\u0434 \u043b\u0435\u0432\u043e \u043d\u0430 \u0434\u0435\u0441\u043d\u043e","rules_hsides":"\u0433\u043e\u0440\u0435 \u0438 \u0434\u043e\u043b\u0435","rules_below":"\u043f\u043e\u0434","rules_above":"\u043d\u0430\u0434","rules_void":"\u043f\u0440\u0430\u0437\u043d\u043e",rules:"\u041f\u0440\u0430\u0432\u0438\u043b\u0430","frame_all":"\u0441\u0435/\u0441\u0438\u0442\u0435","frame_cols":"\u043a\u043e\u043b\u043e\u043d\u0438","frame_rows":"\u0440\u0435\u0434\u043e\u0432\u0438","frame_groups":"\u0433\u0440\u0443\u043f\u0438","frame_none":"\u043d\u0438\u0448\u0442\u043e",frame:"\u0420\u0430\u043c\u043a\u0430",caption:"\u041e\u043f\u0438\u0441 \u043d\u0430 \u0442\u0430\u0431\u0435\u043b\u0430\u0442\u0430","missing_scope":"\u0414\u0430\u043b\u0438 \u0441\u0442\u0435 \u0441\u0438\u0433\u0443\u0440\u043d\u0438 \u0434\u0435\u043a\u0430 \u0441\u0430\u043a\u0430\u0442\u0435 \u0434\u0430 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435 \u0431\u0435\u0437 \u043e\u0434\u0440\u0435\u0434\u0443\u0432\u0430\u045a\u0435 \u043d\u0430 \u043e\u043f\u0441\u0435\u0433\u043e\u0442 \u043d\u0430 \u043d\u0430\u0441\u043b\u043e\u0432\u043d\u0430\u0442\u0430 \u043a\u043b\u0435\u0442\u043a\u0430 \u043d\u0430 \u043e\u0432\u0430\u0430 \u0442\u0430\u0431\u0435\u043b\u0430. \u0411\u0435\u0437 \u043d\u0435\u0433\u043e, \u0442\u043e\u0430 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0431\u0438\u0434\u0435 \u0442\u0435\u0448\u043a\u043e \u0437\u0430 \u043d\u0435\u043a\u043e\u0438 \u043a\u043e\u0440\u0438\u0441\u043d\u0438\u0446\u0438 \u0441\u043e \u043f\u043e\u0441\u0435\u0431\u043d\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438 \u0434\u0430 \u0441\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0435 \u0441\u043e\u0434\u0440\u0436\u0438\u043d\u0430\u0442\u0430 \u0438\u043b\u0438 \u043f\u043e\u0434\u0430\u0442\u043e\u0446\u0438 \u043f\u0440\u0438\u043a\u0430\u0436\u0430\u043d\u0438 \u043d\u0430 \u0442\u0430\u0431\u0435\u043b\u0430\u0442\u0430.","cell_limit":"\u0413\u043e \u043d\u0430\u0434\u043c\u0438\u043d\u0430\u0432\u0442\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u043d\u0438\u043e\u0442 \u0431\u0440\u043e\u0458 \u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0438 ({$cells}).","row_limit":"\u0413\u043e \u043d\u0430\u0434\u043c\u0438\u043d\u0430\u0432\u0442\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u043d\u043e\u043e\u0442 \u0431\u0440\u043e\u0458 \u043d\u0430 \u0440\u0435\u0434\u043e\u0432\u0438 ({$rows}).","col_limit":"\u0413\u043e \u043d\u0430\u0434\u043c\u0438\u043d\u0430\u0432\u0442\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u043d\u043e\u043e\u0442 \u0431\u0440\u043e\u0458 \u043d\u0430 \u043a\u043e\u043b\u043e\u043d\u0438 ({$cols}).",colgroup:"\u0413\u0440\u0443\u043f\u0430 \u043d\u0430 \u043a\u043e\u043b\u043e\u043d\u0438",rowgroup:"\u0413\u0440\u0443\u043f\u0430 \u043d\u0430 \u0440\u0435\u0434\u043e\u0432\u0438",scope:"\u041e\u043f\u0441\u0435\u0433",tfoot:"\u041e\u043f\u0430\u0448\u043a\u0430/\u043f\u043e\u0434\u043d\u043e\u0436\u0458\u0435 \u043d\u0430 \u0442\u0430\u0431\u0435\u043b\u0430\u0442\u0430",tbody:"\u0422\u0435\u043b\u043e \u043d\u0430 \u0442\u0430\u0431\u0435\u043b\u0430\u0442\u0430",thead:"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 \u043d\u0430 \u0442\u0430\u0431\u0435\u043b\u0430\u0442\u0430","row_all":"\u0410\u0436\u0443\u0440\u0438\u0440\u0430\u0458 \u0433\u0438 \u0441\u0438\u0442\u0435 \u0440\u0435\u0434\u043e\u0432\u0438 \u0432\u043e \u0442\u0430\u0431\u0435\u043b\u0430\u0442\u0430","row_even":"\u0410\u0436\u0443\u0440\u0438\u0440\u0430\u0458 \u0433\u0438 \u0441\u0438\u0442\u0435 \u043f\u0430\u0440\u043d\u0438 \u0440\u0435\u0434\u043e\u0432\u0438 \u0432\u043e \u0442\u0430\u0431\u0435\u043b\u0430\u0442\u0430","row_odd":"\u0410\u0436\u0443\u0440\u0438\u0440\u0430\u0458 \u0433\u0438 \u0441\u0438\u0442\u0435 \u043d\u0435\u043f\u0430\u0440\u043d\u0438 \u0440\u0435\u0434\u043e\u0432\u0438 \u0432\u043e \u0442\u0430\u0431\u0435\u043b\u0430\u0442\u0430","row_row":"\u0410\u0436\u0443\u0440\u0438\u0440\u0430\u0458 \u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430\u043b\u043d\u0438\u043e\u0442 \u0440\u0435\u0434","cell_all":"\u0410\u0436\u0443\u0440\u0438\u0440\u0430\u0458 \u0433\u0438 \u0441\u0438\u0442\u0435 \u043a\u043b\u0435\u0442\u043a\u0438 \u0432\u043e \u0442\u0430\u0431\u0435\u043b\u0430\u0442\u0430","cell_row":"\u0410\u0436\u0443\u0440\u0438\u0440\u0430\u0458 \u0433\u0438 \u0441\u0438\u0442\u0435 \u043a\u043b\u0435\u0442\u043a\u0438 \u0432\u043e \u0440\u0435\u0434\u043e\u0442","cell_cell":"\u0410\u0436\u0443\u0440\u0438\u0440\u0430\u0458 \u0458\u0430 \u043c\u043e\u043c\u0435\u043d\u0442\u0430\u043b\u043d\u0430\u0442\u0430 \u043a\u043b\u0435\u0442\u043a\u0430",th:"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435",td:"\u041f\u043e\u0434\u0430\u0442\u043e\u0446\u0438",summary:"\u0420\u0435\u0437\u0438\u043c\u0435",bgimage:"\u0421\u043b\u0438\u043a\u0430 \u043d\u0430 \u043f\u043e\u0437\u0430\u0434\u0438\u043d\u0430\u0442\u0430",rtl:"\u041e\u0434 \u0434\u0435\u0441\u043d\u043e \u043d\u0430 \u043b\u0435\u0432\u043e",ltr:"\u041e\u0434 \u043b\u0435\u0432\u043e \u043d\u0430 \u0434\u0435\u0441\u043d\u043e",mime:"MIME \u0442\u0438\u043f",langcode:"\u041a\u043e\u0434 \u043d\u0430 \u0458\u0430\u0437\u0438\u043a\u043e\u0442",langdir:"\u0421\u043c\u0435\u0440 \u043d\u0430 \u0458\u0430\u0437\u0438\u043a\u043e\u0442",style:"\u0421\u0442\u0438\u043b",id:"\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0458\u0430 (Id)","merge_cells_title":"\u0421\u043f\u043e\u0438 \u0433\u0438 \u043a\u043b\u0435\u0442\u043a\u0438\u0442\u0435",bgcolor:"\u0411\u043e\u0458\u0430 \u043d\u0430 \u043f\u043e\u0437\u0430\u0434\u0438\u043d\u0430\u0442\u0430",bordercolor:"\u0411\u043e\u0458\u0430 \u043d\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u0430\u0442\u0430/\u0440\u0430\u0431\u043e\u0442","align_bottom":"\u0414\u043e\u043b\u0435","align_top":"\u0413\u043e\u0440\u0435",valign:"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u043d\u043e \u0438\u0437\u0440\u0430\u043c\u043d\u0443\u0432\u0430\u045a\u0435","cell_type":"\u0422\u0438\u043f \u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0430","cell_title":"\u0421\u0432\u043e\u0458\u0441\u0442\u0432\u0430 \u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0430\u0442\u0430","row_title":"\u0421\u0432\u043e\u0458\u0441\u0442\u0432\u0430 \u043d\u0430 \u0440\u0435\u0434\u043e\u0442","align_middle":"\u0421\u0440\u0435\u0434\u0438\u043d\u0430","align_right":"\u0414\u0435\u0441\u043d\u043e","align_left":"\u041b\u0435\u0432\u043e","align_default":"\u041f\u0440\u0435\u0432\u0437\u0435\u043c\u0435\u043d\u043e",align:"\u0418\u0437\u0440\u0430\u043c\u043d\u0443\u0432\u0430\u045a\u0435",border:"\u0413\u0440\u0430\u043d\u0438\u0446\u0430 / \u0440\u0430\u0431",cellpadding:"\u0414\u043e\u043f\u043e\u043b\u043d\u0443\u0432\u0430\u045a\u0435 \u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0430\u0442\u0430",cellspacing:"\u0420\u0430\u0441\u0442\u043e\u0458\u0430\u043d\u0438\u0435 \u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0430\u0442\u0430",rows:"\u0420\u0435\u0434\u043e\u0432\u0438",cols:"\u041a\u043e\u043b\u043e\u043d\u0438",height:"\u0412\u0438\u0441\u0438\u043d\u0430",width:"\u0428\u0438\u0440\u0438\u043d\u0430",title:"\u0412\u043c\u0435\u0442\u043d\u0438/\u0443\u0440\u0435\u0434\u0438 \u0442\u0430\u0431\u0435\u043b\u0430",rowtype:"\u0422\u0438\u043f \u043d\u0430 \u0440\u0435\u0434\u043e\u0442","advanced_props":"\u041d\u0430\u043f\u0440\u0435\u0434\u043d\u0438 \u0441\u0432\u043e\u0458\u0441\u0442\u0432\u0430","general_props":"\u041e\u0441\u043d\u043e\u0432\u043d\u0438 \u0441\u0432\u043e\u0458\u0441\u0442\u0432\u0430","advanced_tab":"\u041d\u0430\u043f\u0440\u0435\u0434\u043d\u043e","general_tab":"\u041e\u0441\u043d\u043e\u0432\u043d\u043e","cell_col":"\u0410\u0436\u0443\u0440\u0438\u0440\u0430\u0458 \u0433\u0438 \u0441\u0438\u0442\u0435 \u043a\u043b\u0435\u0442\u043a\u0438 \u0432\u043e \u043a\u043e\u043b\u043e\u043d\u0430\u0442\u0430"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/ms_dlg.js b/program/js/tiny_mce/plugins/table/langs/ms_dlg.js
deleted file mode 100644
index d32483f93..000000000
--- a/program/js/tiny_mce/plugins/table/langs/ms_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ms.table_dlg',{"rules_border":"sempadan","rules_box":"kotak","rules_vsides":"tepian tegak","rules_rhs":"hs-kanan","rules_lhs":"hs-kiri","rules_hsides":"tepian datar","rules_below":"bawah","rules_above":"atas","rules_void":"batal",rules:"Peraturan","frame_all":"semua","frame_cols":"kol","frame_rows":"row","frame_groups":"kumpulan","frame_none":"tiada",frame:"Bingkai",caption:"Tajuk jadual","missing_scope":"Adakah anda pasti terhadap skop sel jadual ini. Ia mungkin memberi kesan kepada OKU memahami isi jadual.","cell_limit":"Anda telah melebihi maxima sel dibenarkan iaitu {$cells}.","row_limit":"Anda telah melebihi maxima row dibenarkan iaitu {$rows}.","col_limit":"Anda telah melebihi maxima kolum dibenarkan iaitu {$cols}.",colgroup:"Kumpulan kol",rowgroup:"Kumpulan row",scope:"Skop",tfoot:"Penutup jadual Foot",tbody:"Isi jadual",thead:"Pembuka jadual","row_all":"Baharui semua row dalam jadual","row_even":"Baharui row genap dalam jadual","row_odd":"Baharui row ganjil dalam jadual","row_row":"Baharui row semasa","cell_all":"Baharui semua sel dalam jadual","cell_row":"Baharui semua sel dalam row","cell_cell":"Baharui sel ini",th:"Kepala",td:"Data",summary:"Kesimpulan",bgimage:"Imej latar",rtl:"Kanan ke kiri",ltr:"Kiri ke kanan",mime:"Sasaran jenis MIME",langcode:"Kod bahasa",langdir:"Arah bahasa",style:"Gaya",id:"Id","merge_cells_title":"Gabung sel jadual",bgcolor:"Warna latar",bordercolor:"Warna sempadan","align_bottom":"Bawah","align_top":"Atas",valign:"Penjajaran tegak","cell_type":"Jenis sel","cell_title":"Alatan sel jadual","row_title":"Alatan row jadual","align_middle":"Tengah","align_right":"Kanan","align_left":"Kiri","align_default":"Asal",align:"Penyelarian",border:"Sempadan",cellpadding:"Lapisan sel",cellspacing:"Ruang sel",rows:"Row",cols:"Kol",height:"Tinggi",width:"Lebar",title:"Masuk/Ubah jadual",rowtype:"Row dalam jadual","advanced_props":"Alatan lanjutan","general_props":"Alatan am","advanced_tab":"Lanjutan","general_tab":"Am","cell_col":"Update all cells in column"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/nb_dlg.js b/program/js/tiny_mce/plugins/table/langs/nb_dlg.js
deleted file mode 100644
index 2fc6c4fb7..000000000
--- a/program/js/tiny_mce/plugins/table/langs/nb_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nb.table_dlg',{"rules_border":"ramme","rules_box":"boks","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsider","rules_below":"under","rules_above":"over","rules_void":"ingen",rules:"Streker","frame_all":"alle","frame_cols":"kolonner","frame_rows":"rader","frame_groups":"grupper","frame_none":"ingen",frame:"Ramme",caption:"Tabelloverskrift","missing_scope":"Er du sikker p\u00e5 at du vil fortsette uten \u00e5 angi et omr\u00e5de for denne overskrifscellen? Uten dette kan det bli vanskelig for enkelte funksjonshemmede brukere \u00e5 forst\u00e5 innholdet eller dataene som blir presentert i tabellen.","cell_limit":"Du har overskredet maksimalt antall celler p\u00e5 {$cells}.","row_limit":"Du har overskredet maksimalt antall rader p\u00e5 {$rows}.","col_limit":"Du har overskredet maksimalt antall kolonner p\u00e5 {$cols}.",colgroup:"Kolonnegruppe",rowgroup:"Radgruppe",scope:"Omr\u00e5de",tfoot:"Tabellfot",tbody:"Tabellkropp",thead:"Tabellhode","row_all":"Oppdater alle rader","row_even":"Oppdater partallsrader","row_odd":"Oppdater oddetallsrader","row_row":"Oppdater aktuell rad","cell_all":"Oppdater alle celler i tabellen","cell_row":"Oppdater alle celler i raden","cell_cell":"Oppdater aktuell celle",th:"Overskrift",td:"Data",summary:"Sammendrag",bgimage:"Bakgrunnsbilde",rtl:"H\u00f8yre mot venstre",ltr:"Venstre mot h\u00f8yre",mime:"M\u00e5lets MIME-type",langcode:"Spr\u00e5kkode",langdir:"Skriftretning",style:"Stil",id:"Id","merge_cells_title":"Sl\u00e5 sammen celler",bgcolor:"Bakgrunn",bordercolor:"Rammefarge","align_bottom":"Bunn","align_top":"Topp",valign:"Vertikal justering","cell_type":"Celletype","cell_title":"Celleegenskaper","row_title":"Radegenskaper","align_middle":"Midtstilt","align_right":"H\u00f8yre","align_left":"Venstre","align_default":"Standard",align:"Justering",border:"Ramme",cellpadding:"Cellefylling",cellspacing:"Celleavstand",rows:"Rader",cols:"Kolonner",height:"H\u00f8yde",width:"Bredde",title:"Sett inn / rediger tabell",rowtype:"Rad i tabell","advanced_props":"Generelle egenskaper","general_props":"Generelt","advanced_tab":"Avansert","general_tab":"Generelt","cell_col":"Oppdater alle celler i kolonnen"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/nl_dlg.js b/program/js/tiny_mce/plugins/table/langs/nl_dlg.js
deleted file mode 100644
index ebc25e70e..000000000
--- a/program/js/tiny_mce/plugins/table/langs/nl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nl.table_dlg',{"rules_border":"Rand","rules_box":"Box","rules_vsides":"Verticale zijden","rules_rhs":"Rechterzijkant","rules_lhs":"Linkerzijkant","rules_hsides":"Horizontale zijden","rules_below":"Onder","rules_above":"Boven","rules_void":"Geen",rules:"Hulplijnen","frame_all":"Alles","frame_cols":"Kolommen","frame_rows":"Rijen","frame_groups":"Groepen","frame_none":"Geen",frame:"Frame",caption:"Tabelbeschrijving","missing_scope":"Weet u zeker dat u door wilt gaan met het toewijzen van een kop zonder een bereik op te geven? Mensen met een visuele handicap kunnen hierdoor waarschijnlijk slecht bij de gegevens.","cell_limit":"U heeft het maximale aantal cellen van {$cells} overschreden.","row_limit":"U heeft hebt het maximale aantal rijen van {$rows} overschreden.","col_limit":"U heeft het maximale aantal kolommen van {$cols} overschreden.",colgroup:"Kolomgroep",rowgroup:"Rijgroep",scope:"Bereik",tfoot:"Tabelvoet",tbody:"Tabellichaam",thead:"Tabelkop","row_all":"Alle rijen bijwerken","row_even":"Even rijen bijwerken","row_odd":"Oneven rijen bijwerken","row_row":"Huidige rij bijwerken","cell_all":"Alle cellen in tabel bijwerken","cell_row":"Alle cellen in rij bijwerken","cell_cell":"Huidige cel bijwerken",th:"Kop",td:"Gegevens",summary:"Samenvatting",bgimage:"Achtergrondafbeelding",rtl:"Van rechts naar links",ltr:"Van links naar rechts",mime:"Doel MIME type",langcode:"Taalcode",langdir:"Taalrichting",style:"Stijl",id:"Id","merge_cells_title":"Cellen samenvoegen",bgcolor:"Achtergrondkleur",bordercolor:"Randkleur","align_bottom":"Onder","align_top":"Boven",valign:"Verticale uitlijning","cell_type":"Celtype","cell_title":"Celeigenschappen","row_title":"Rij-eigenschappen","align_middle":"Centreren","align_right":"Rechts","align_left":"Links","align_default":"Standaard",align:"Uitlijning",border:"Rand",cellpadding:"Ruimte in cel",cellspacing:"Ruimte om cel",rows:"Rijen",cols:"Kolommen",height:"Hoogte",width:"Breedte",title:"Tabel invoegen/bewerken",rowtype:"Rijtype","advanced_props":"Geavanceerde eigenschappen","general_props":"Algemene eigenschappen","advanced_tab":"Geavanceerd","general_tab":"Algemeen","cell_col":"Alle cellen in de kolom bijwerken"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/nn_dlg.js b/program/js/tiny_mce/plugins/table/langs/nn_dlg.js
deleted file mode 100644
index ac1ea85ca..000000000
--- a/program/js/tiny_mce/plugins/table/langs/nn_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nn.table_dlg',{"rules_border":"ramme","rules_box":"boks","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"under","rules_above":"over","rules_void":"ingen",rules:"Strekar","frame_all":"alle","frame_cols":"kolonnar","frame_rows":"rader","frame_groups":"grupper","frame_none":"ingen",frame:"Ramme",caption:"Tabelloverskrift","missing_scope":"Er du sikker p\u00e5 at du vil fortsetje utan \u00e5 angi eit omr\u00e5de for denne overskrifscella? Utan dette kan det bli vanskeleg for enkelte funksjonshemma brukarar \u00e5 forst\u00e5 innhaldet eller dataane som blir presenterte i tabellen.","cell_limit":"Du har fleire enn maksimalt tal celler p\u00e5 {$cells}.","row_limit":"Du har fleire enn maksimalt tal rader p\u00e5 {$rows}.","col_limit":"Du har fleire enn maksimalt tal kolonner p\u00e5 {$cols}.",colgroup:"Kolonnegruppe",rowgroup:"Radgruppe",scope:"Omr\u00e5de",tfoot:"Tabellfot",tbody:"Tabellkropp",thead:"Tabellhovud","row_all":"Oppdater alle rader","row_even":"Oppdater partallrader","row_odd":"Oppdater oddetallrader","row_row":"Oppdater aktuell rad","cell_all":"Oppdater alle celler i tabellen","cell_row":"Oppdater alle celler i rada","cell_cell":"Oppdater aktuell celle",th:"Overskrift",td:"Data",summary:"Samandrag",bgimage:"Bakgrunnsbilete",rtl:"H\u00f8gre mot venstre",ltr:"Venstre mot h\u00f8gre",mime:"M\u00e5let sin MIME-type",langcode:"Spr\u00e5kkode",langdir:"Skriftretning",style:"Stil",id:"Id","merge_cells_title":"Sl\u00e5 saman celler",bgcolor:"Bakgrunn",bordercolor:"Rammefarge","align_bottom":"Botn","align_top":"Topp",valign:"Vertikal justering","cell_type":"Celletype","cell_title":"Celleeigenskapar","row_title":"Radeigenskapar","align_middle":"Midtstilt","align_right":"H\u00f8gre","align_left":"Venstre","align_default":"Standard",align:"Justering",border:"Ramme",cellpadding:"Cellefylling",cellspacing:"Celleavstand",rows:"Rader",cols:"Kolonner",height:"H\u00f8gd",width:"Breidd",title:"Set inn / rediger tabell",rowtype:"Rad i tabell","advanced_props":"Generelle eigenskapar","general_props":"Generelt","advanced_tab":"Avansert","general_tab":"Generelt","cell_col":"Oppdater alle celler i kolonne"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/pl_dlg.js b/program/js/tiny_mce/plugins/table/langs/pl_dlg.js
deleted file mode 100644
index 8bbe7c83b..000000000
--- a/program/js/tiny_mce/plugins/table/langs/pl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('pl.table_dlg',{"rules_border":"granica","rules_box":"ramka","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"pod","rules_above":"nad","rules_void":"void",rules:"Prowadnice","frame_all":"wszystkie","frame_cols":"kolumny","frame_rows":"wiersze","frame_groups":"grupy","frame_none":"brak",frame:"Ramka",caption:"Nag\u0142\u00f3wek tabeli","missing_scope":"Jeste\u015b pewny \u017ce chcesz kontynuowa\u0107 bez definiowania zasi\u0119gu dla kom\u00f3rki tabeli. Bez niej, mo\u017ce by\u0107 trudne dla niekt\u00f3rych u\u017cytkownik\u00f3w zrozuminie zawarto\u015bci albo danych wy\u015bwietlanych poza tabel\u0105.","cell_limit":"Przekroczy\u0142e\u015b maksymaln\u0105 liczb\u0119 kom\u00f3rek kt\u00f3ra wynosi {$cells}.","row_limit":"Przekroczy\u0142e\u015b maksymaln\u0105 liczb\u0119 wierszy kt\u00f3ra wynosi {$rows}.","col_limit":"Przekroczy\u0142e\u015b maksymaln\u0105 liczb\u0119 kolumn kt\u00f3ra wynosi {$cols}.",colgroup:"Grupa kolumn",rowgroup:"Grupa wierszy",scope:"Zakres",tfoot:"Stopka tabeli",tbody:"Cia\u0142o tabeli",thead:"Nag\u0142\u00f3wek tabeli","row_all":"Zmie\u0144 wszystkie wiersze","row_even":"Zmie\u0144 parzyste wiersze","row_odd":"Zmie\u0144 nieparzyste wiersze","row_row":"Zmie\u0144 aktualny wiersz","cell_all":"Zmie\u0144 wszytkie kom\u00f3rki w tabeli","cell_row":"Zmie\u0144 wszytkie kom\u00f3rki w wierszu","cell_cell":"Zmie\u0144 aktualn\u0105 kom\u00f3rk\u0119",th:"Nag\u0142owek",td:"Dane",summary:"Podsumowanie",bgimage:"Obrazek t\u0142a",rtl:"Kierunek z prawej do lewej",ltr:"Kierunek z lewej do prawej",mime:"Docelowy typ MIME",langcode:"Kod j\u0119zyka",langdir:"Kierunek czytania tekstu",style:"Styl",id:"Id","merge_cells_title":"Po\u0142\u0105cz kom\u00f3rki",bgcolor:"Kolor t\u0142a",bordercolor:"Kolor ramki","align_bottom":"D\u00f3\u0142","align_top":"G\u00f3ra",valign:"Pionowe wyr\u00f3wnanie","cell_type":"Typ kom\u00f3rki","cell_title":"W\u0142a\u015bciwo\u015bci kom\u00f3rki","row_title":"W\u0142a\u015bciwo\u015bci wiersza","align_middle":"\u015arodek","align_right":"Prawy","align_left":"Lewy","align_default":"Domy\u015blnie",align:"Wyr\u00f3wnanie",border:"Ramka",cellpadding:"Cellpadding",cellspacing:"Cellspacing",rows:"Wiersze",cols:"Kolumny",height:"Wysoko\u015b\u0107",width:"Szeroko\u015b\u0107",title:"Wklej/Zmie\u0144 tabel\u0119",rowtype:"Wiersz w cz\u0119\u015bci tabeli","advanced_props":"Zaawansowane w\u0142a\u015bciwo\u015bci","general_props":"G\u0142\u00f3wne w\u0142a\u015bciwo\u015bci","advanced_tab":"Zaawansowane","general_tab":"G\u0142\u00f3wne","cell_col":"Zaktualizuj wszystkie kom\u00f3rki w kolumnie"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/ps_dlg.js b/program/js/tiny_mce/plugins/table/langs/ps_dlg.js
deleted file mode 100644
index b34a45a57..000000000
--- a/program/js/tiny_mce/plugins/table/langs/ps_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ps.table_dlg',{"rules_border":"border","rules_box":"box","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"below","rules_above":"above","rules_void":"void",rules:"Rules","frame_all":"all","frame_cols":"cols","frame_rows":"rows","frame_groups":"groups","frame_none":"none",frame:"Frame",caption:"Table caption","missing_scope":"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.","cell_limit":"You\'ve exceeded the maximum number of cells of {$cells}.","row_limit":"You\'ve exceeded the maximum number of rows of {$rows}.","col_limit":"You\'ve exceeded the maximum number of columns of {$cols}.",colgroup:"Col Group",rowgroup:"Row Group",scope:"Scope",tfoot:"Table Foot",tbody:"Table Body",thead:"Table Head","row_all":"Update all rows in table","row_even":"Update even rows in table","row_odd":"Update odd rows in table","row_row":"Update current row","cell_all":"Update all cells in table","cell_row":"Update all cells in row","cell_cell":"Update current cell",th:"Header",td:"Data",summary:"Summary",bgimage:"Background image",rtl:"Right to left",ltr:"Left to right",mime:"Target MIME type",langcode:"Language code",langdir:"Language direction",style:"Style",id:"Id","merge_cells_title":"Merge table cells",bgcolor:"Background color",bordercolor:"Border color","align_bottom":"Bottom","align_top":"Top",valign:"Vertical alignment","cell_type":"Cell type","cell_title":"Table cell properties","row_title":"Table row properties","align_middle":"Center","align_right":"Right","align_left":"Left","align_default":"Default",align:"Alignment",border:"Border",cellpadding:"Cellpadding",cellspacing:"Cellspacing",rows:"Rows",cols:"Cols",height:"Height",width:"Width",title:"Insert/Modify table",rowtype:"Row in table part","advanced_props":"Advanced properties","general_props":"General properties","advanced_tab":"Advanced","general_tab":"General","cell_col":"Update all cells in column"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/pt_dlg.js b/program/js/tiny_mce/plugins/table/langs/pt_dlg.js
deleted file mode 100644
index fb54400da..000000000
--- a/program/js/tiny_mce/plugins/table/langs/pt_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('pt.table_dlg',{"rules_border":"Limites","rules_box":"Box","rules_vsides":"Vsides","rules_rhs":"Rhs","rules_lhs":"Lhs","rules_hsides":"Hsides","rules_below":"abaixo","rules_above":"acima","rules_void":"void",rules:"Regras","frame_all":"Todos","frame_cols":"colunas","frame_rows":"Linhas","frame_groups":"Grupos","frame_none":"Nenhum",frame:"Frame",caption:"T\u00edtulo da tabela","missing_scope":"Tem certeza de que quer continuar sem especificar um escopo para esta c\u00e9lula? (Isso poder\u00e1 causar dificuldades a usu\u00e1rios deficientes)","cell_limit":"Excedeu o n\u00famero m\u00e1ximo de c\u00e9lulas de {$cells}.","row_limit":"Excedeu o n\u00famero m\u00e1ximo de linhas de {$rows}.","col_limit":"Excedeu o n\u00famero m\u00e1ximo de colunas de {$cols}.",colgroup:"Grupo colunas",rowgroup:"Grupo linhas",scope:"Alcance",tfoot:"Rodap\u00e9 da tabela",tbody:"Corpo da tabela",thead:"Topo da tabela","row_all":"Atualizar todas as linhas","row_even":"Atualizar linhas pares","row_odd":"Atualizar linhas \u00edmpares","row_row":"Atualizar esta linha","cell_all":"Atualizar todas as c\u00e9lulas na tabela","cell_row":"Atualizar todas as c\u00e9lulas na linha","cell_cell":"Atualizar esta c\u00e9lula",th:"Campo",td:"Dados",summary:"Sum\u00e1rio",bgimage:"Imagem de fundo",rtl:"Da direita para a esquerda",ltr:"Da esquerda para a direita",mime:"MIME alvo",langcode:"C\u00f3digo do idioma",langdir:"Dire\u00e7\u00e3o do texto",style:"Estilo",id:"Id","merge_cells_title":"Unir c\u00e9lulas",bgcolor:"Cor de fundo",bordercolor:"Cor dos limites","align_bottom":"Abaixo","align_top":"Topo",valign:"Alinha. vert.","cell_type":"Tipo c\u00e9l.","cell_title":"Propriedades de c\u00e9lulas","row_title":"Propriedades de linhas","align_middle":"Centro","align_right":"Direita","align_left":"Esquerda","align_default":"Padr\u00e3o",align:"Alinha.",border:"Limites",cellpadding:"Enchimento da C\u00e9lula",cellspacing:"Espa\u00e7amento da C\u00e9lula",rows:"Linhas",cols:"Colunas",height:"Altura",width:"Largura",title:"Inserir/modificar tabela",rowtype:"Linha na parte da tabela","advanced_props":"Propriedades avan\u00e7adas","general_props":"Propriedades gerais","advanced_tab":"Avan\u00e7ado","general_tab":"Geral","cell_col":"Atualizar todas as c\u00e9lulas na coluna"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/ro_dlg.js b/program/js/tiny_mce/plugins/table/langs/ro_dlg.js
deleted file mode 100644
index c1974ed00..000000000
--- a/program/js/tiny_mce/plugins/table/langs/ro_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ro.table_dlg',{"rules_border":"border","rules_box":"box","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"dedesubt","rules_above":"deasupra","rules_void":"gol",rules:"Reguli","frame_all":"toate","frame_cols":"coloane","frame_rows":"r\u00e2nduri","frame_groups":"grupuri","frame_none":"niciuna",frame:"Frame",caption:"Titlu tabel","missing_scope":"Sigur vrei s\u0103 continui f\u0103r\u0103 s\u0103 completezi scopul acestei celule antet? F\u0103r\u0103 acesta, anumi\u021bi utilizatori cu dizabilit\u0103\u021bi ar putea avea dificult\u0103\u021bi \u00een \u00een\u021belegerea datelor afi\u0219ate \u00een tabel.","cell_limit":"Ai dep\u0103\u0219it num\u0103rul maxim de celule: {$cells}.","row_limit":"Ai dep\u0103\u0219it num\u0103rul maxim de r\u00e2nduri: {$rows}.","col_limit":"Ai dep\u0103\u0219it num\u0103rul maxim de coloane: {$cols}.",colgroup:"Grupeaz\u0103 celulele",rowgroup:"Grupeaz\u0103 r\u00e2ndurile",scope:"Scop",tfoot:"Subsol tabel",tbody:"Corp tabel",thead:"Antet tabel","row_all":"Actualizeaz\u0103 toate r\u00e2ndurile","row_even":"Actualizeaz\u0103 r\u00e2ndurile pare","row_odd":"Actualizeaz\u0103 r\u00e2ndurile impare","row_row":"Actualizeaz\u0103 r\u00e2nd curent","cell_all":"Actualizeaz\u0103 toate celulele din tabel","cell_row":"Actualizeaz\u0103 toate celulele din r\u00e2nd","cell_cell":"Actualizeaz\u0103 celula curent\u0103",th:"Antet",td:"Date",summary:"Sumar",bgimage:"Imagine de fundal",rtl:"De la dreapta la st\u00e2nga",ltr:"De la st\u00e2nga la dreapta",mime:"MIME type \u021bint\u0103",langcode:"Cod limb\u0103",langdir:"Direc\u021bie limb\u0103",style:"Stil",id:"Id","merge_cells_title":"Une\u015fte celulele",bgcolor:"Culoare fundal",bordercolor:"Culoare bordur\u0103","align_bottom":"Jos","align_top":"Sus",valign:"Aliniere vertical\u0103","cell_type":"Tip celul\u0103","cell_title":"Propriet\u0103\u021bi celul\u0103","row_title":"Propriet\u0103\u021bi r\u00e2nd","align_middle":"Centru","align_right":"Dreapta","align_left":"St\u00e2nga","align_default":"Implicit\u0103",align:"Aliniere",border:"Bordur\u0103",cellpadding:"Spa\u021biu \u00een celule",cellspacing:"Spa\u021biu \u00eentre celule",rows:"R\u00e2nduri",cols:"Coloane",height:"\u00cen\u0103l\u021bime",width:"L\u0103\u021bime",title:"Inserare/editare tabel",rowtype:"Tip de r\u00e2nd","advanced_props":"Propriet\u0103\u021bi avansate","general_props":"Propriet\u0103\u021bi generale","advanced_tab":"Avansat","general_tab":"General","cell_col":"Actualizeaz\u0103 toate celulele din coloan\u0103"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/ru_dlg.js b/program/js/tiny_mce/plugins/table/langs/ru_dlg.js
deleted file mode 100644
index 3bd88153f..000000000
--- a/program/js/tiny_mce/plugins/table/langs/ru_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ru.table_dlg',{"rules_border":"border","rules_box":"box","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"below","rules_above":"above","rules_void":"void",rules:"\u041f\u0440\u0430\u0432\u0438\u043b\u0430","frame_all":"\u0432\u0441\u0435","frame_cols":"\u043a\u043e\u043b\u043e\u043d\u043a\u0438","frame_rows":"\u0440\u044f\u0434\u044b","frame_groups":"\u0433\u0440\u0443\u043f\u043f\u044b","frame_none":"\u043d\u0435\u0442",frame:"\u041a\u0430\u0434\u0440",caption:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0442\u0430\u0431\u043b\u0438\u0446\u044b","missing_scope":"\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0431\u0435\u0437 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u043d\u0438\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0437\u0430\u0433\u043b\u043e\u043b\u0432\u043a\u0430? \u0411\u0435\u0437 \u044d\u0442\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0442\u0440\u0443\u0434\u043d\u0435\u043d\u043e \u0432\u043e\u0441\u043f\u0440\u0438\u044f\u0442\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c.","cell_limit":"\u0414\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0432\u0439 \u043f\u0440\u0435\u0434\u0435\u043b, \u0432 $ \u044f\u0447\u0435\u0435\u043a.","row_limit":"\u0414\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0432\u0439 \u043f\u0440\u0435\u0434\u0435\u043b, \u0432 $ \u0441\u0442\u0440\u043e\u043a.","col_limit":"\u0414\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0432\u0439 \u043f\u0440\u0435\u0434\u0435\u043b, \u0432 $ \u043a\u043e\u043b\u043e\u043d\u043e\u043a.",colgroup:"\u0413\u0440\u0443\u043f\u043f\u0430 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432",rowgroup:"\u0413\u0440\u0443\u043f\u043f\u0430 \u0441\u0442\u0440\u043e\u043a",scope:"\u041e\u0431\u043b\u0430\u0441\u0442\u044c",tfoot:"\u0417\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435",tbody:"\u0422\u0435\u043b\u043e",thead:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a","row_all":"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435","row_even":"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0447\u0435\u0442\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435","row_odd":"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0435\u0447\u0435\u0442\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435","row_row":"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443","cell_all":"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435","cell_row":"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435","cell_cell":"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u044f\u0447\u0435\u0439\u043a\u0443",th:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",td:"\u0414\u0430\u043d\u043d\u044b\u0435",summary:"\u041e\u0431\u0449\u0435\u0435",bgimage:"\u0424\u043e\u043d\u043e\u0432\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",rtl:"\u0421\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0435\u0432\u043e",ltr:"\u0421\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e",mime:"MIME \u0442\u0438\u043f \u0446\u0435\u043b\u0438",langcode:"\u041a\u043e\u0434 \u044f\u0437\u044b\u043a\u0430",langdir:"\u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430",style:"\u0421\u0442\u0438\u043b\u044c",id:"\u0418\u043c\u044f","merge_cells_title":"\u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u044f\u0447\u0435\u0439\u043a\u0438",bgcolor:"\u0426\u0432\u0435\u0442 \u0437\u0430\u043b\u0438\u0432\u043a\u0438",bordercolor:"\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043d\u0438\u0446\u044b","align_bottom":"\u041f\u043e \u043d\u0438\u0436\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e","align_top":"\u041f\u043e \u0432\u0435\u0440\u0445\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e",valign:"\u0412\u0435\u0440\u0442. \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435","cell_type":"\u0422\u0438\u043f","cell_title":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u044f\u0447\u0435\u0439\u043a\u0438","row_title":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u0442\u0440\u043e\u043a\u0438","align_middle":"\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443","align_right":"\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","align_left":"\u041f\u043e \u043b\u0435\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","align_default":"\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e",align:"\u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435",border:"\u0413\u0440\u0430\u043d\u0438\u0446\u0430",cellpadding:"\u041e\u0442\u0441\u0442\u0443\u043f\u044b \u0432 \u044f\u0447\u0435\u0439\u043a\u0430\u0445",cellspacing:"\u0420\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u044f\u0447\u0435\u0439\u043a\u0430\u043c\u0438",rows:"\u0421\u0442\u0440\u043e\u043a\u0438",cols:"\u0421\u0442\u043e\u043b\u0431\u0446\u044b",height:"\u0412\u044b\u0441\u043e\u0442\u0430",width:"\u0428\u0438\u0440\u0438\u043d\u0430",title:"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0442\u0430\u0431\u043b\u0438\u0446\u044b",rowtype:"\u0422\u0438\u043f \u0441\u0442\u0440\u043e\u043a\u0438","advanced_props":"\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b","general_props":"\u041e\u0431\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b","advanced_tab":"\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e","general_tab":"\u041e\u0431\u0449\u0435\u0435","cell_col":"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 \u0432 \u0441\u0442\u043e\u043b\u0431\u0446\u0435"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/si_dlg.js b/program/js/tiny_mce/plugins/table/langs/si_dlg.js
deleted file mode 100644
index 5dcb178f5..000000000
--- a/program/js/tiny_mce/plugins/table/langs/si_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('si.table_dlg',{"rules_border":"border","rules_box":"box","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"below","rules_above":"above","rules_void":"void",rules:"Rules","frame_all":"all","frame_cols":"cols","frame_rows":"rows","frame_groups":"groups","frame_none":"none",frame:"Frame",caption:"Table caption","missing_scope":"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.","cell_limit":"You\'ve exceeded the maximum number of cells of {$cells}.","row_limit":"You\'ve exceeded the maximum number of rows of {$rows}.","col_limit":"You\'ve exceeded the maximum number of columns of {$cols}.",colgroup:"Col Group",rowgroup:"Row Group",scope:"Scope",tfoot:"Table Foot",tbody:"Table Body",thead:"Table Head","row_all":"Update all rows in table","row_even":"Update even rows in table","row_odd":"Update odd rows in table","row_row":"Update current row","cell_all":"Update all cells in table","cell_row":"Update all cells in row","cell_cell":"Update current cell",th:"Header",td:"Data",summary:"Summary",bgimage:"Background image",rtl:"Right to left",ltr:"Left to right",mime:"Target MIME type",langcode:"Language code",langdir:"Language direction",style:"Style",id:"Id","merge_cells_title":"Merge table cells",bgcolor:"Background color",bordercolor:"Border color","align_bottom":"Bottom","align_top":"Top",valign:"Vertical alignment","cell_type":"Cell type","cell_title":"Table cell properties","row_title":"Table row properties","align_middle":"Center","align_right":"Right","align_left":"Left","align_default":"Default",align:"Alignment",border:"Border",cellpadding:"Cellpadding",cellspacing:"Cellspacing",rows:"Rows",cols:"Cols",height:"Height",width:"Width",title:"Insert/Modify table",rowtype:"Row in table part","advanced_props":"Advanced properties","general_props":"General properties","advanced_tab":"Advanced","general_tab":"General","cell_col":"Update all cells in column"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/sk_dlg.js b/program/js/tiny_mce/plugins/table/langs/sk_dlg.js
deleted file mode 100644
index 817f0e00c..000000000
--- a/program/js/tiny_mce/plugins/table/langs/sk_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sk.table_dlg',{"rules_border":"or\u00e1movanie okolo","rules_box":"box okolo","rules_vsides":"v\u013eavo a vpravo","rules_rhs":"vpravo","rules_lhs":"v\u013eavo","rules_hsides":"hore a dole","rules_below":"dole","rules_above":"hore","rules_void":"\u017eiadne",rules:"Vykreslenie mrie\u017eky","frame_all":"v\u0161etko","frame_cols":"st\u013apce","frame_rows":"riadky","frame_groups":"oblasti a skupiny st\u013apcov","frame_none":"\u017eiadna",frame:"Or\u00e1movanie tabu\u013eky",caption:"Nadpis tabu\u013eky","missing_scope":"Skuto\u010dne chcete pokra\u010dova\u0165 bez ur\u010denia oblasti hlavi\u010dky tejto tabu\u013eky? Bez nej m\u00f4\u017ee u niektor\u00fdch u\u017e\u00edvate\u013eov doch\u00e1dza\u0165 k ur\u010dit\u00fdm probl\u00e9mom pri inrtepret\u00e1cii a zobrazovan\u00ed d\u00e1t v tabu\u013eke.","cell_limit":"Prekro\u010dili ste maxim\u00e1lny po\u010det buniek {$cells}.","row_limit":"Prekro\u010dili ste maxim\u00e1lny po\u010det riadkov {$rows}.","col_limit":"Prekro\u010dili ste maxim\u00e1lny po\u010det st\u013apcov {$cols}.",colgroup:"Skupina st\u013apcov",rowgroup:"Skupina riadkov",scope:"Hlavi\u010dka pre",tfoot:"P\u00e4ta tabu\u013eky",tbody:"Telo tabu\u013eky",thead:"Hlavi\u010dka tabu\u013eky","row_all":"Aktualizova\u0165 v\u0161etky riadky tabu\u013eky","row_even":"Aktualizova\u0165 p\u00e1rne riadky tabu\u013eky","row_odd":"Aktualizova\u0165 nep\u00e1rne riadky tabu\u013eky","row_row":"Aktualizova\u0165 aktu\u00e1lny riadok","cell_all":"Aktualizova\u0165 v\u0161etky bunky v tabu\u013eke","cell_row":"Aktualizova\u0165 v\u0161etky bunky v riadku","cell_cell":"Aktualizova\u0165 aktu\u00e1lnu bunku",th:"Hlavi\u010dka",td:"D\u00e1ta",summary:"Obsah tabu\u013eky",bgimage:"Obr\u00e1zok pozadia",rtl:"Sprava do\u013eava",ltr:"Z\u013eava doprava",mime:"MIME typ cie\u013ea",langcode:"K\u00f3d jazyka",langdir:"Smer textu",style:"\u0160t\u00fdl",id:"ID","merge_cells_title":"Zl\u00fa\u010di\u0165 bunky",bgcolor:"Farba pozadia",bordercolor:"Farba or\u00e1movania","align_bottom":"Dolu","align_top":"Hore",valign:"Vertik\u00e1lne zarovnanie","cell_type":"Typ bunky","cell_title":"Vlastnosti bunky","row_title":"Vlastnosti riadkov","align_middle":"Na stred","align_right":"Vpravo","align_left":"V\u013eavo","align_default":"Predvolen\u00e9",align:"Zarovnanie",border:"Or\u00e1movanie",cellpadding:"Odsadenie obsahu",cellspacing:"Rozstup buniek",rows:"Riadky",cols:"St\u013apce",height:"V\u00fd\u0161ka",width:"\u0160\u00edrka",title:"Vlo\u017ei\u0165/Upravi\u0165 tabu\u013eku",rowtype:"Typ riadku","advanced_props":"Roz\u0161\u00edren\u00e9 parametre","general_props":"Obecn\u00e9 parametre","advanced_tab":"Roz\u0161\u00edren\u00e9","general_tab":"Obecn\u00e9","cell_col":"Aktualizova\u0165 v\u0161etky bunky v st\u013apci"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/sl_dlg.js b/program/js/tiny_mce/plugins/table/langs/sl_dlg.js
deleted file mode 100644
index 52e1efe7f..000000000
--- a/program/js/tiny_mce/plugins/table/langs/sl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sl.table_dlg',{"rules_border":"obroba","rules_box":"\u0161katla","rules_vsides":"n-strani","rules_rhs":"d-strani","rules_lhs":"l-strani","rules_hsides":"v-strani","rules_below":"pod","rules_above":"nad","rules_void":"prazno",rules:"Pravila","frame_all":"vse","frame_cols":"stolpci","frame_rows":"vrstice","frame_groups":"skupine","frame_none":"brez",frame:"Okvir",caption:"Opis tabele","missing_scope":"Ste prepri\u010dani, da \u017eelite nadaljevati brez dolo\u010denega dosega? Brez dosega je razumevanje tabele lahko ote\u017eeno ljudem s slab\u0161o zaznavo!","cell_limit":"Presegli ste dovoljeno \u0161tevilo celic: {$cells}.","row_limit":"Presegli ste dovoljeno \u0161tevilo vrstic: {$rows}.","col_limit":"Presegli ste dovoljeno \u0161tevilo stolpcev: {$cols}.",colgroup:"Skup. stolp.",rowgroup:"Skup. vrst.",scope:"Doseg",tfoot:"Noga tabele",tbody:"Telo tabele",thead:"Glava tabele","row_all":"Posodobi vse vrstice","row_even":"Posodobi sode vrstice","row_odd":"Posodobi lihe vrstice","row_row":"Posodobi trenutno vrstico","cell_all":"Posodobi vse celice tabele","cell_row":"Posodobi vse celice vrstice","cell_cell":"Posodobi trenutno celico",th:"Glava",td:"Podatek",summary:"Povzetek",bgimage:"Slika ozadja",rtl:"Od desne proti levi",ltr:"Od leve proti desni",mime:"Ciljni tip MIME",langcode:"Koda jezika",langdir:"Smer pisave",style:"Slog",id:"Oznaka","merge_cells_title":"Spoji celice",bgcolor:"Barva ozadja",bordercolor:"Barva obrobe","align_bottom":"Dno","align_top":"Vrh",valign:"Navpi\u010dna poravnava","cell_type":"Tip celice","cell_title":"Lastnosti celice","row_title":"Lastnosti vrstice","align_middle":"Sredina","align_right":"Desno","align_left":"Levo","align_default":"Privzeto",align:"Poravnava",border:"Obroba",cellpadding:"Podlaganje celic",cellspacing:"Razmik celic",rows:"Vrstic",cols:"Stolpcev",height:"Vi\u0161ina",width:"\u0160irina",title:"Vstavi/posodobi tabelo",rowtype:"Vrstica v tabeli","advanced_props":"Napredne lastnosti","general_props":"Splo\u0161ne lastnosti","advanced_tab":"Napredno","general_tab":"Splo\u0161no","cell_col":"Posodobi vse celice v stolpcu"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/sq_dlg.js b/program/js/tiny_mce/plugins/table/langs/sq_dlg.js
deleted file mode 100644
index c9bd5a8e1..000000000
--- a/program/js/tiny_mce/plugins/table/langs/sq_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sq.table_dlg',{"rules_border":"korniz\u00eb","rules_box":"kuti","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"posht\u00eb","rules_above":"sip\u00ebr","rules_void":"zbrazur",rules:"Rregullat","frame_all":"t\u00eb gjitha","frame_cols":"kolona","frame_rows":"rreshta","frame_groups":"grupe","frame_none":"asnj\u00eb",frame:"Korniza",caption:"Krijo hap\u00ebsir\u00eb p\u00ebr titull","missing_scope":"Jeni t\u00eb sigurt q\u00eb nuk doni t\u00eb vendosni objektiv p\u00ebr k\u00ebt\u00eb qeliz\u00eb t\u00eb kok\u00ebs. Pa t\u00eb mund t\u00eb jet\u00eb e v\u00ebshtir\u00eb p\u00ebr disa p\u00ebrdorues me aft\u00ebsi t\u00eb kufizuara t\u00eb lexojn\u00eb p\u00ebrmbajtjen e tabel\u00ebs.","cell_limit":"Keni kaluar numrin maksimal t\u00eb qelizave {$cells}.","row_limit":"Keni kaluar numrin maksimal t\u00eb rreshtave: {$rows}.","col_limit":"Keni kaluar numrin maksimal t\u00eb kolonave: {$cols}.",colgroup:"Grup Kolonash",rowgroup:"Grup Rreshtash",scope:"Objektivi",tfoot:"K\u00ebmb\u00ebt e Tabel\u00ebs",tbody:"Trupin e Tabel\u00ebs",thead:"Kok\u00ebn e Tabel\u00ebs","row_all":"Rifresko t\u00eb gjitha rreshtat n\u00eb tabel\u00eb","row_even":"Rifresko rreshtat \u00e7ift","row_odd":"Rifresko rreshtat tek","row_row":"Rifresko rreshtin aktual","cell_all":"Rifresko t\u00eb gjitha qelizat","cell_row":"Rifresko t\u00eb gjitha qelizat n\u00eb rresht","cell_cell":"Rifresko qeliz\u00ebn aktuale",th:"Kok\u00eb",td:"T\u00eb dh\u00ebna",summary:"P\u00ebrmbledhja",bgimage:"Foto e fush\u00ebs",rtl:"Djathtas-Majtas",ltr:"Majtas-Djathtas",mime:"Tipi MIME i sh\u00ebnjestr\u00ebs",langcode:"Kodi i gjuh\u00ebs",langdir:"Drejtimi i gjuh\u00ebs",style:"Stili",id:"Id","merge_cells_title":"Bashko qelizat",bgcolor:"Ngjyra e fush\u00ebs",bordercolor:"Ngjyra e korniz\u00ebs","align_bottom":"Fund","align_top":"Krye",valign:"Drejtimi vertikal","cell_type":"Tipi i qeliz\u00ebs","cell_title":"Tiparet e qeliz\u00ebs","row_title":"Tiparet e rreshtit","align_middle":"Qend\u00ebr","align_right":"Djathtas","align_left":"Majtas","align_default":"Paracaktuar",align:"Drejtimi",border:"Korniza",cellpadding:"Hap\u00ebsira e br\u00ebndshme",cellspacing:"Hap\u00ebsira midis qelizave",rows:"Rreshta",cols:"Kolona",height:"Gjat\u00ebsia",width:"Gjer\u00ebsia",title:"Fut/Edito tabel\u00eb",rowtype:"Rresht n\u00eb","advanced_props":"Tipare t\u00eb avancuara","general_props":"Tipare t\u00eb p\u00ebrgjithshme","advanced_tab":"T\u00eb avancuara","general_tab":"T\u00eb p\u00ebrgjithshme","cell_col":"P\u00ebrdit\u00ebsoni t\u00eb gjitha qelizat n\u00eb kolon\u00eb"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/sr_dlg.js b/program/js/tiny_mce/plugins/table/langs/sr_dlg.js
deleted file mode 100644
index 1ef0d8d15..000000000
--- a/program/js/tiny_mce/plugins/table/langs/sr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sr.table_dlg',{"rules_border":"sa svih strana (border)","rules_box":"sa svih strana (box)","rules_vsides":"levo i desno","rules_rhs":"samo desno","rules_lhs":"samo levo","rules_hsides":"gore i dole","rules_below":"samo dole","rules_above":"samo gore","rules_void":"ni sa jedne strane",rules:"Unutra\u0161nje linije","frame_all":"sve","frame_cols":"izme\u0111u kolona","frame_rows":"izme\u0111u redova","frame_groups":"izme\u0111u grupa","frame_none":"ni jedna",frame:"Linije okvira",caption:"Opis tabele","missing_scope":"Da li ste sigurni da \u017eelite da nastavite bez definisanog podru\u010dja delovanja \u0107elije zaglavlja tabele. Bez toga, korisnicima sa smetnjama u razvoju mo\u017eda ne\u0107e biti razumljiv njihov sadr\u017eaj.","cell_limit":"Prema\u0161ili ste maksimalni broj \u0107elija ({$cells}).","row_limit":"Prema\u0161ili ste maksimalni broj redova ({$rows}).","col_limit":"Prema\u0161ili ste maksimalni broj kolona ({$cols}).",colgroup:"Grupa kolona",rowgroup:"Grupa redova",scope:"Podru\u010dje delovanja",tfoot:"Podno\u017eje tabele",tbody:"Sadr\u017eaj tabele",thead:"Zaglavlje tabele","row_all":"A\u017euriraj sve redove u tabeli","row_even":"A\u017euriraj parne redove u tabeli","row_odd":"A\u017euriraj neparne redove u tabeli","row_row":"A\u017euriraj teku\u0107i red","cell_all":"A\u017euriraj sve \u0107elije u tabeli","cell_row":"A\u017euriraj sve \u0107elije u redu","cell_cell":"A\u017euriraj teku\u0107u \u0107eliju",th:"Zaglavlje",td:"Podaci",summary:"Sa\u017eeti opis",bgimage:"Slika u pozadini",rtl:"Zdesna nalevo",ltr:"Sleva nadesno",mime:"Odabrani MIME tip",langcode:"Kod jezika",langdir:"Smer jezika",style:"Stil",id:"Id","merge_cells_title":"Spoj \u0107elije",bgcolor:"Boja pozadine",bordercolor:"Boja ivica","align_bottom":"Dole","align_top":"Gore",valign:"Vertikalno poravnanje","cell_type":"Vrsta \u0107elije","cell_title":"Osobine \u0107elije","row_title":"Osobine reda","align_middle":"Sredina","align_right":"Desno","align_left":"Levo","align_default":"Podrazumevano",align:"Poravnanje",border:"Ivice (debljina)",cellpadding:"Dopuna \u0107elije (cellpadding)",cellspacing:"Razmak \u0107elija (cellspacing)",rows:"Broj redova",cols:"Broj kolona",height:"Visina",width:"\u0160irina",title:"Umetni/Uredi tabelu",rowtype:"Red je u delu tabele","advanced_props":"Napredne osobine","general_props":"Osnovne osobine","advanced_tab":"Napredno","general_tab":"Osnovno","cell_col":"A\u017euriraj sve \u0107elije u kolonama"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/sv_dlg.js b/program/js/tiny_mce/plugins/table/langs/sv_dlg.js
deleted file mode 100644
index d058bcb85..000000000
--- a/program/js/tiny_mce/plugins/table/langs/sv_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sv.table_dlg',{"rules_border":"kant","rules_box":"box","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"under","rules_above":"\u00f6ver","rules_void":"void",rules:"Regler","frame_all":"alla","frame_cols":"kolumner ","frame_rows":"rader","frame_groups":"grupper","frame_none":"ingen",frame:"Ram",caption:"\u00d6verskrift","missing_scope":"\u00c4r du s\u00e4ker p\u00e5 att du vill forts\u00e4tta utan att ange en omfattning, denna underl\u00e4ttar f\u00f6r icke-grafiska webbl\u00e4sare.","cell_limit":"Du kan inte skapa en tabell med fler \u00e4n {$cells} celler.","row_limit":"Du kan inte ange fler \u00e4n {$rows} rader.","col_limit":"Du kan inte ange fler \u00e4n {$cols} kolumner.",colgroup:"Kolumngrupp",rowgroup:"Radgrupp",scope:"Omfattning",tfoot:"tabellfot",tbody:"tabellkropp",thead:"tabellhuvud","row_all":"Uppdatera alla rader i tabellen","row_even":"Uppdatera j\u00e4mna rader i tabellen","row_odd":"Uppdatera udda rader i tabellen","row_row":"Uppdatera nuvarande rad","cell_all":"Uppdatera alla celler i tabellen","cell_row":"Uppdatera alla celler i raden","cell_cell":"Uppdatera nuvarande cell",th:"Huvud",td:"Data",summary:"Sammanfattning",bgimage:"Bakgrundsbild",rtl:"H\u00f6ger till v\u00e4nster",ltr:"V\u00e4nster till h\u00f6ger",mime:"Target MIME type",langcode:"Spr\u00e5kkod",langdir:"Skriftriktning",style:"Stil",id:"Id","merge_cells_title":"Sammanfoga celler",bgcolor:"Bakgrundsf\u00e4rg",bordercolor:"Ramf\u00e4rg","align_bottom":"Botten","align_top":"Toppen",valign:"Vertikal justering","cell_type":"Celltyp","cell_title":"Tabellcellsinst\u00e4llningar","row_title":"Tabellradsinst\u00e4llningar","align_middle":"Mitten","align_right":"H\u00f6ger","align_left":"V\u00e4nster","align_default":"Standard",align:"Justering",border:"Ram",cellpadding:"Cellpadding",cellspacing:"Cellspacing",rows:"Rader",cols:"Kolumner",height:"H\u00f6jd",width:"Bredd",title:"Infoga/redigera ny tabell",rowtype:"Radtyp","advanced_props":"Avancerade inst\u00e4llningar","general_props":"Generella inst\u00e4llningar","advanced_tab":"Avancerat","general_tab":"Generellt","cell_col":"Uppdatera alla celler i kolumn"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/ta_dlg.js b/program/js/tiny_mce/plugins/table/langs/ta_dlg.js
deleted file mode 100644
index 5917ec35c..000000000
--- a/program/js/tiny_mce/plugins/table/langs/ta_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ta.table_dlg',{"rules_border":"border","rules_box":"box","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"below","rules_above":"above","rules_void":"void",rules:"Rules","frame_all":"all","frame_cols":"cols","frame_rows":"rows","frame_groups":"groups","frame_none":"none",frame:"Frame",caption:"Table caption","missing_scope":"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.","cell_limit":"You\'ve exceeded the maximum number of cells of {$cells}.","row_limit":"You\'ve exceeded the maximum number of rows of {$rows}.","col_limit":"You\'ve exceeded the maximum number of columns of {$cols}.",colgroup:"Col Group",rowgroup:"Row Group",scope:"Scope",tfoot:"Table Foot",tbody:"Table Body",thead:"Table Head","row_all":"Update all rows in table","row_even":"Update even rows in table","row_odd":"Update odd rows in table","row_row":"Update current row","cell_all":"Update all cells in table","cell_row":"Update all cells in row","cell_cell":"Update current cell",th:"Header",td:"Data",summary:"Summary",bgimage:"Background image",rtl:"Right to left",ltr:"Left to right",mime:"Target MIME type",langcode:"Language code",langdir:"Language direction",style:"Style",id:"Id","merge_cells_title":"Merge table cells",bgcolor:"Background color",bordercolor:"Border color","align_bottom":"Bottom","align_top":"Top",valign:"Vertical alignment","cell_type":"Cell type","cell_title":"Table cell properties","row_title":"Table row properties","align_middle":"Center","align_right":"Right","align_left":"Left","align_default":"Default",align:"Alignment",border:"Border",cellpadding:"Cellpadding",cellspacing:"Cellspacing",rows:"Rows",cols:"Cols",height:"Height",width:"Width",title:"Insert/Modify table",rowtype:"Row in table part","advanced_props":"Advanced properties","general_props":"General properties","advanced_tab":"Advanced","general_tab":"General","cell_col":"Update all cells in column"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/th_dlg.js b/program/js/tiny_mce/plugins/table/langs/th_dlg.js
deleted file mode 100644
index e16138049..000000000
--- a/program/js/tiny_mce/plugins/table/langs/th_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('th.table_dlg',{"rules_border":"border","rules_box":"box","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"below","rules_above":"above","rules_void":"void",rules:"Rules","frame_all":"all","frame_cols":"cols","frame_rows":"rows","frame_groups":"groups","frame_none":"none",frame:"Frame",caption:"Table caption","missing_scope":"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.","cell_limit":"You\'ve exceeded the maximum number of cells of {$cells}.","row_limit":"You\'ve exceeded the maximum number of rows of {$rows}.","col_limit":"You\'ve exceeded the maximum number of columns of {$cols}.",colgroup:"Col Group",rowgroup:"Row Group",scope:"Scope",tfoot:"Table Foot",tbody:"Table Body",thead:"Table Head","row_all":"Update all rows in table","row_even":"Update even rows in table","row_odd":"Update odd rows in table","row_row":"Update current row","cell_all":"Update all cells in table","cell_row":"Update all cells in row","cell_cell":"Update current cell",th:"Header",td:"Data",summary:"Summary",bgimage:"\u0e1e\u0e37\u0e49\u0e19\u0e2b\u0e25\u0e31\u0e07 image",rtl:"\u0e02\u0e27\u0e32\u0e44\u0e1b\u0e0b\u0e49\u0e32\u0e22",ltr:"\u0e0b\u0e49\u0e32\u0e22\u0e44\u0e1b\u0e02\u0e27\u0e32",mime:"\u0e40\u0e1b\u0e49\u0e32\u0e2b\u0e21\u0e32\u0e22 MIME type",langcode:"\u0e42\u0e04\u0e4a\u0e14\u0e20\u0e32\u0e29\u0e32",langdir:"\u0e17\u0e34\u0e28\u0e17\u0e32\u0e07\u0e01\u0e32\u0e23\u0e2d\u0e48\u0e32\u0e19",style:"\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a",id:"Id","merge_cells_title":"Merge table cells",bgcolor:"\u0e2a\u0e35\u0e1e\u0e37\u0e49\u0e19\u0e2b\u0e25\u0e31\u0e07",bordercolor:"\u0e2a\u0e35\u0e01\u0e23\u0e2d\u0e1a","align_bottom":"\u0e25\u0e48\u0e32\u0e07","align_top":"\u0e1a\u0e19",valign:"Vertical alignment","cell_type":"Cell type","cell_title":"\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e40\u0e0b\u0e25\u0e25\u0e4c\u0e43\u0e19\u0e32\u0e23\u0e32\u0e07","row_title":"\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e41\u0e16\u0e27\u0e43\u0e19\u0e15\u0e32\u0e23\u0e32\u0e07","align_middle":"\u0e01\u0e25\u0e32\u0e07","align_right":"\u0e02\u0e27\u0e32","align_left":"\u0e0b\u0e49\u0e32\u0e22","align_default":"\u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19",align:"\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07\u0e08\u0e31\u0e14\u0e27\u0e32\u0e07",border:"\u0e01\u0e23\u0e2d\u0e1a",cellpadding:"Cellpadding",cellspacing:"Cellspacing",rows:"\u0e41\u0e16\u0e27",cols:"\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e1e\u0e4c",height:"\u0e2a\u0e39\u0e07",width:"\u0e01\u0e27\u0e49\u0e32\u0e07",title:"\u0e40\u0e1e\u0e34\u0e48\u0e21/\u0e41\u0e01\u0e49\u0e44\u0e02 \u0e15\u0e32\u0e23\u0e32\u0e07",rowtype:"Row in table part","advanced_props":"\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e02\u0e31\u0e49\u0e19\u0e2a\u0e39\u0e07","general_props":"\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e17\u0e31\u0e48\u0e27\u0e44\u0e1b","advanced_tab":"\u0e02\u0e31\u0e49\u0e19\u0e2a\u0e39\u0e07","general_tab":"\u0e17\u0e31\u0e48\u0e27\u0e44\u0e1b","cell_col":"Update all cells in column"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/tr_dlg.js b/program/js/tiny_mce/plugins/table/langs/tr_dlg.js
deleted file mode 100644
index 28020cf8b..000000000
--- a/program/js/tiny_mce/plugins/table/langs/tr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('tr.table_dlg',{"rules_border":"kenarl\u0131k","rules_box":"kutu","rules_vsides":"dikey kenarlar","rules_rhs":"sa\u011f yatay kenarlar","rules_lhs":"sol yatay kenarlar","rules_hsides":"yatay kenarlar","rules_below":"alt\u0131nda","rules_above":"\u00fcst\u00fcnde","rules_void":"yok",rules:"\u00c7izgiler","frame_all":"t\u00fcm\u00fc","frame_cols":"s\u00fctunlar","frame_rows":"sat\u0131rlar","frame_groups":"gruplar","frame_none":"hi\u00e7biri",frame:"\u00c7er\u00e7eve",caption:"Tablo ba\u015fl\u0131\u011f\u0131","missing_scope":"Tablo ba\u015fl\u0131k h\u00fccresi i\u00e7in bir kapsam belirlemeden devam etmek istedi\u011finize emin misiniz? Bu de\u011fer olmadan, engelli kullan\u0131c\u0131lar tabloda g\u00f6sterilen verileri ve i\u00e7eri\u011fi anlamas\u0131 zordur.","cell_limit":"Maksimum h\u00fccre say\u0131s\u0131 ($cells) a\u015f\u0131ld\u0131.","row_limit":"Maksimum sat\u0131r say\u0131s\u0131 ($rows) a\u015f\u0131ld\u0131.","col_limit":"Maksimum s\u00fctun say\u0131s\u0131 ($cols) a\u015f\u0131ld\u0131.",colgroup:"S\u00fctun Grubu",rowgroup:"Sat\u0131r Grubu",scope:"Kapsam",tfoot:"Tablo Alt\u0131",tbody:"Tablo G\u00f6vdesi",thead:"Tablo Ba\u015fl\u0131\u011f\u0131","row_all":"Tablodaki t\u00fcm sat\u0131rlar\u0131 g\u00fcncelle","row_even":"Tablodaki \u00e7ift nolu sat\u0131rlar\u0131 g\u00fcncelle","row_odd":"Tablodaki tek nolu sat\u0131rlar\u0131 g\u00fcncelle","row_row":"Se\u00e7ili sat\u0131r\u0131 g\u00fcncelle","cell_all":"Tablodaki t\u00fcm h\u00fccreleri g\u00fcncelle","cell_row":"Sat\u0131rdaki t\u00fcm h\u00fccreleri g\u00fcncelle","cell_cell":"Se\u00e7ili h\u00fccreleri g\u00fcncelle",th:"Ba\u015fl\u0131k",td:"Veri",summary:"\u00d6zet",bgimage:"Arkaplan resmi",rtl:"Soldan sa\u011fa",ltr:"Sa\u011fdan sola",mime:"Hedef MIME tipi",langcode:"Dil kodu",langdir:"Dil y\u00f6n\u00fc",style:"Stil",id:"Id","merge_cells_title":"Tablo h\u00fccrelerini birle\u015ftir",bgcolor:"Arkaplan rengi",bordercolor:"Kenarl\u0131k rengi","align_bottom":"Alt","align_top":"\u00dcst",valign:"Dikey hizalama","cell_type":"H\u00fccre tipi","cell_title":"Tablo h\u00fccre \u00f6zellikleri","row_title":"Tablo sat\u0131r \u00f6zellikleri","align_middle":"Orta","align_right":"Sa\u011f","align_left":"Sol","align_default":"Varsay\u0131lan",align:"Hizalama",border:"Kenarl\u0131k",cellpadding:"H\u00fccre d\u0131\u015f\u0131 bo\u015flu\u011fu",cellspacing:"H\u00fccre i\u00e7i bo\u015flu\u011fu",rows:"Sat\u0131rlar",cols:"S\u00fctunlar",height:"Y\u00fckseklik",width:"Geni\u015flik",title:"Tablo Ekle/D\u00fczenle",rowtype:"Tablo b\u00f6l\u00fcm\u00fcndeki sat\u0131r","advanced_props":"Geli\u015fmi\u015f \u00f6zellikler","general_props":"Genel \u00f6zellikler","advanced_tab":"Geli\u015fmi\u015f","general_tab":"Genel","cell_col":"S\u00fctundaki b\u00fct\u00fcn h\u00fccreleri g\u00fcncelle"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/uk_dlg.js b/program/js/tiny_mce/plugins/table/langs/uk_dlg.js
deleted file mode 100644
index 396cbb621..000000000
--- a/program/js/tiny_mce/plugins/table/langs/uk_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('uk.table_dlg',{"rules_border":"\u0440\u0430\u043c\u043a\u0430","rules_box":"\u0431\u043e\u043a\u0441","rules_vsides":"v-\u0441\u0442\u043e\u0440\u043e\u043d\u0438","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"h-\u0441\u0442\u043e\u0440\u043e\u043d\u0438","rules_below":"\u0437\u043d\u0438\u0437\u0443","rules_above":"\u0437\u0432\u0435\u0440\u0445\u0443","rules_void":"\u043f\u0443\u0441\u0442\u043e",rules:"\u041f\u0440\u0430\u0432\u0438\u043b\u0430","frame_all":"\u0432\u0441\u0456","frame_cols":"\u0441\u0442\u043e\u0432\u043f\u0446\u0456","frame_rows":"\u0440\u044f\u0434\u043a\u0438","frame_groups":"\u0433\u0440\u0443\u043f\u0438","frame_none":"\u043d\u0456\u044f\u043a\u0438\u0439",frame:"\u0424\u0440\u0435\u0439\u043c",caption:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0442\u0430\u0431\u043b\u0438\u0446\u0456","missing_scope":"\u0412\u0438 \u0432\u043f\u0435\u0432\u043d\u0435\u043d\u0456, \u0449\u043e \u0431\u0430\u0436\u0430\u0454\u0442\u0435 \u043f\u0440\u043e\u0434\u043e\u0432\u0436\u0438\u0442\u0438 \u043d\u0435 \u0432\u043a\u0430\u0437\u0430\u0432\u0448\u0438 \u043c\u0435\u0436\u0456 \u0434\u043b\u044f \u0446\u0456\u0454\u0457 \u043a\u043e\u043c\u0456\u0440\u043a\u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0443. \u0411\u0435\u0437 \u0446\u044c\u043e\u0433\u043e \u0434\u0435\u044f\u043a\u0438\u043c \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430\u043c \u0431\u0443\u0434\u0435 \u0432\u0430\u0436\u043a\u043e \u0437\u0440\u043e\u0437\u0443\u043c\u0456\u0442\u0438 \u0437\u043c\u0456\u0441\u0442 \u0442\u0430\u0431\u043b\u0438\u0446\u0456.","cell_limit":"\u0412\u0438 \u043f\u0435\u0440\u0435\u0432\u0438\u0449\u0438\u043b\u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443 \u043a\u0456\u043b\u044c\u043a\u0456\u0441\u0442\u044c \u043a\u043e\u043c\u0456\u0440\u043e\u043a: {$cells}.","row_limit":"\u0412\u0438 \u043f\u0435\u0440\u0435\u0432\u0438\u0449\u0438\u043b\u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443 \u043a\u0456\u043b\u044c\u043a\u0456\u0441\u0442\u044c \u0440\u044f\u0434\u043a\u0456\u0432: {$rows}.","col_limit":"\u0412\u0438 \u043f\u0435\u0440\u0435\u0432\u0438\u0449\u0438\u043b\u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443 \u043a\u0456\u043b\u044c\u043a\u0456\u0441\u0442\u044c \u0441\u0442\u043e\u0432\u043f\u0446\u0456\u0432: {$cols}.",colgroup:"\u0413\u0440\u0443\u043f\u0430 \u0441\u0442\u043e\u0432\u043f\u0446\u0456\u0432",rowgroup:"\u0413\u0440\u0443\u043f\u0430 \u043a\u043e\u043c\u0456\u0440\u043e\u043a",scope:"\u0420\u043e\u0437\u043c\u0430\u0445",tfoot:"\u041d\u0438\u0436\u043d\u044f \u0447\u0430\u0441\u0442\u0438\u043d\u0430",tbody:"\u0422\u0456\u043b\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u0456",thead:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0442\u0430\u0431\u043b\u0438\u0446\u0456","row_all":"\u041e\u043d\u043e\u0432\u0438\u0442\u0438 \u0432\u0441\u0456 \u0440\u044f\u0434\u043a\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0456","row_even":"\u041e\u043d\u043e\u0432\u0438\u0442\u0438 \u043f\u0430\u0440\u043d\u0456 \u0440\u044f\u0434\u043a\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0456","row_odd":"\u041e\u043d\u043e\u0432\u0438\u0442\u0438 \u043d\u0435\u043f\u0430\u0440\u043d\u0456 \u0440\u044f\u0434\u043a\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446","row_row":"\u041e\u043d\u043e\u0432\u0438\u0442\u0438 \u043f\u043e\u0442\u043e\u0447\u043d\u0438\u0439 \u0440\u044f\u0434\u043e\u043a","cell_all":"\u041e\u043d\u043e\u0432\u0438\u0442\u0438 \u0432\u0441\u0456 \u043a\u043e\u043c\u0456\u0440\u043a\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0456","cell_row":"\u041e\u043d\u043e\u0432\u0438\u0442\u0438 \u0432\u0441\u0456 \u043a\u043e\u043c\u0456\u0440\u043a\u0438 \u0432 \u0440\u044f\u0434\u043a\u0443","cell_cell":"\u041e\u043d\u043e\u0432\u0438\u0442\u0438 \u043f\u043e\u0442\u043e\u0447\u043d\u0443 \u043a\u043e\u043c\u0456\u0440\u043a\u0443",th:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",td:"\u0414\u0430\u043d\u043d\u0456",summary:"\u0417\u0430\u0433\u0430\u043b\u044c\u043d\u0435",bgimage:"\u0424\u043e\u043d\u043e\u0432\u0435 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",rtl:"\u0421\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0456\u0432\u043e",ltr:"\u0417\u043b\u0456\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e",mime:"MIME-\u0442\u0438\u043f \u0446\u0456\u043b\u0456",langcode:"\u041a\u043e\u0434 \u043c\u043e\u0432\u0438",langdir:"\u041d\u0430\u043f\u0440\u044f\u043c \u043c\u043e\u0432\u0438",style:"\u0421\u0442\u0438\u043b\u044c",id:"\u0406\u0434\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0442\u043e\u0440","merge_cells_title":"\u041e\u0431\'\u0454\u0434\u043d\u0430\u0442\u0438 \u043a\u043e\u043c\u0456\u0440\u043a\u0438",bgcolor:"\u041a\u043e\u043b\u0456\u0440 \u0444\u043e\u043d\u0443",bordercolor:"\u041a\u043e\u043b\u0456\u0440 \u0433\u0440\u0430\u043d\u0438\u0446\u0456","align_bottom":"\u041f\u043e \u043d\u0438\u0436\u043d\u044c\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","align_top":"\u041f\u043e \u0432\u0435\u0440\u0445\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e",valign:"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0435 \u0432\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f","cell_type":"\u0422\u0438\u043f \u043a\u043e\u043c\u0456\u0440\u043a\u0438","cell_title":"\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u043a\u043e\u043c\u0456\u0440\u043a\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u0456","row_title":"\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u0440\u044f\u0434\u043a\u0443 \u0442\u0430\u0431\u043b\u0438\u0446\u0456","align_middle":"\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443","align_right":"\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","align_left":"\u041f\u043e \u043b\u0456\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","align_default":"\u0417\u0430 \u0437\u0430\u043c\u043e\u0432\u0447\u0430\u043d\u043d\u044f\u043c",align:"\u0412\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f",border:"\u0420\u0430\u043c\u043a\u0430",cellpadding:"\u0412\u0456\u0434\u0441\u0442\u0443\u043f\u0438 \u0443 \u043a\u043e\u043c\u0456\u0440\u043a\u0430\u0445",cellspacing:"\u0412\u0456\u0434\u0441\u0442\u0430\u043d\u044c \u043c\u0456\u0436 \u043a\u043e\u043c\u0456\u0440\u043a\u0430\u043c\u0438",rows:"\u0420\u044f\u0434\u043a\u0438",cols:"\u0421\u0442\u043e\u0432\u043f\u0446\u0456",height:"\u0412\u0438\u0441\u043e\u0442\u0430",width:"\u0428\u0438\u0440\u0438\u043d\u0430",title:"\u0414\u043e\u0434\u0430\u0442\u0438/\u0417\u043c\u0456\u043d\u0438\u0442\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044e",rowtype:"\u0420\u044f\u0434\u043e\u043a \u0432 \u0447\u0430\u0441\u0442\u0438\u043d\u0456 \u0442\u0430\u0431\u043b\u0438\u0446\u0456","advanced_props":"\u0420\u043e\u0437\u0448\u0438\u0440\u0435\u043d\u0456 \u0432\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456","general_props":"\u0417\u0430\u0433\u0430\u043b\u044c\u043d\u0456 \u0432\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456","advanced_tab":"\u0414\u043e\u0434\u0430\u0442\u043a\u043e\u0432\u043e","general_tab":"\u0417\u0430\u0433\u0430\u043b\u044c\u043d\u0435","cell_col":"\u041e\u043d\u043e\u0432\u0438\u0442\u0438 \u0432\u0441\u0456 \u043a\u043b\u0456\u0442\u0438\u043d\u043a\u0438 \u0432 \u043a\u043e\u043b\u043e\u043d\u0446\u0456"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/vi_dlg.js b/program/js/tiny_mce/plugins/table/langs/vi_dlg.js
deleted file mode 100644
index 64318f607..000000000
--- a/program/js/tiny_mce/plugins/table/langs/vi_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('vi.table_dlg',{"rules_border":"vi\u1ec1n","rules_box":"box","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"d\u01b0\u1edbi","rules_above":"tr\u00ean","rules_void":"tr\u1ed1ng kh\u00f4ng",rules:"Th\u01b0\u1edbc","frame_all":"t\u1ea5t","frame_cols":"c\u1ed9t","frame_rows":"h\u00e0ng","frame_groups":"nh\u00f3m","frame_none":"kh\u00f4ng",frame:"Khung",caption:"Ch\u00fa t\u00edch b\u1ea3ng","missing_scope":"Ti\u1ebfp t\u1ee5c v\u1edbi \u0111\u01b0\u1eddng d\u1eabn kh\u00f4ng t\u1ed3n t\u1ea1i ?","cell_limit":"B\u1ea1n \u0111\u00e3 v\u01b0\u1ee3t qu\u00e1 s\u1ed1 t\u1ed1i \u0111a \u00f4 c\u1ee7a {$cells}.","row_limit":"B\u1ea1n \u0111\u00e3 v\u01b0\u1ee3t qu\u00e1 s\u1ed1 t\u1ed1i \u0111a h\u00e0ng c\u1ee7a {$rows}.","col_limit":"B\u1ea1n \u0111\u00e3 v\u01b0\u1ee3t qu\u00e1 s\u1ed1 t\u1ed1i \u0111a c\u1ed9t c\u1ee7a {$cols}.",colgroup:"Nh\u00f3m c\u1ed9t",rowgroup:"Nh\u00f3m h\u00e0ng",scope:"Ph\u1ea1m vi",tfoot:"Ch\u00e2n b\u1ea3ng",tbody:"Th\u00e2n b\u1ea3n",thead:"\u0110\u1ea7u b\u1ea3ng","row_all":"C\u1eadp nh\u1eadt t\u1ea5t h\u00e0ng trong b\u1ea3ng","row_even":"C\u1eadp nh\u1eadt h\u00e0ng ch\u1eb5n trong b\u1ea3ng","row_odd":"C\u1eadp nh\u1eadt h\u00e0ng l\u1ebb trong b\u1ea3ng","row_row":"C\u1eadp nh\u1eadt h\u00e0ng hi\u1ec7n th\u1eddi","cell_all":"C\u1eadp nh\u1ea5t t\u1ea5t c\u00e1c \u00f4 trong b\u1ea3ng","cell_row":"C\u1eadp nh\u1ea5t t\u1ea5t c\u00e1c \u00f4 trong h\u00e0ng","cell_cell":"C\u1eadp nh\u1eadt \u00f4 hi\u1ec7n th\u1eddi",th:"\u0110\u1ea7u \u0111\u1ec1",td:"D\u1eef li\u1ec7u",summary:"T\u00f3m l\u01b0\u1ee3c",bgimage:"\u1ea2nh n\u1ec1n",rtl:"Ph\u1ea3i qua tr\u00e1i",ltr:"Tr\u00e1i qua ph\u1ea3i",mime:"Ki\u1ec3u MIME \u0111\u00edch",langcode:"M\u00e3 ng\u00f4n ng\u1eef",langdir:"H\u01b0\u1edbng ng\u00f4n ng\u1eef",style:"Ki\u1ec3u d\u00e1ng",id:"Id","merge_cells_title":"K\u1ebft h\u1ee3p c\u00e1c \u00f4 c\u1ee7a b\u1ea3ng",bgcolor:"M\u00e0u n\u1ec1n",bordercolor:"M\u00e0u vi\u1ec1n","align_bottom":"D\u01b0\u1edbi","align_top":"Tr\u00ean",valign:"Canh l\u1ec1 d\u1ecdc","cell_type":"Lo\u1ea1i \u00f4","cell_title":"Thu\u1ed9c t\u00ednh \u00f4","row_title":"Thu\u1ed9c t\u00ednh h\u00e0ng","align_middle":"Gi\u1eefa","align_right":"Ph\u1ea3i","align_left":"Tr\u00e1i","align_default":"M\u1eb7c \u0111\u1ecbnh",align:"Canh l\u1ec1",border:"Vi\u1ec1n",cellpadding:"Kho\u1ea3ng l\u00f3t \u00f4",cellspacing:"Kho\u1ea3ng c\u00e1ch \u00f4",rows:"H\u00e0ng",cols:"C\u1ed9t",height:"Chi\u1ec1u cao",width:"Chi\u1ec1u r\u1ed9ng",title:"Ch\u00e8n/S\u1eeda b\u1ea3ng",rowtype:"H\u00e0ng trong t\u1eebng ph\u1ea7n b\u1ea3ng","advanced_props":"Thu\u1ed9c t\u00ednh n\u00e2ng cao","general_props":"Thu\u1ed9c t\u00ednh chung","advanced_tab":"N\u00e2ng cao","general_tab":"Chung","cell_col":"Update all cells in column"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/zh-cn_dlg.js b/program/js/tiny_mce/plugins/table/langs/zh-cn_dlg.js
deleted file mode 100644
index 4fe30035f..000000000
--- a/program/js/tiny_mce/plugins/table/langs/zh-cn_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('zh-cn.table_dlg',{"rules_border":"\u8fb9\u6846","rules_box":"\u6846","rules_vsides":"\u5782\u76f4","rules_rhs":"\u53f3\u8fb9","rules_lhs":"\u5de6\u8fb9","rules_hsides":"\u6c34\u5e73","rules_below":"\u4e0b","rules_above":"\u4e0a","rules_void":"\u7a7a",rules:"\u89c4\u5219","frame_all":"\u5168\u90e8","frame_cols":"\u5217","frame_rows":"\u884c","frame_groups":"\u5206\u7ec4","frame_none":"\u65e0",frame:"\u6846\u67b6",caption:"\u683c\u6807\u9898","missing_scope":"\u60a8\u6ca1\u6709\u6307\u5b9a\u8868\u683c\u7684\u6807\u9898\u5355\u5143\uff0c\u5982\u679c\u4e0d\u8bbe\u7f6e\uff0c\u53ef\u80fd\u4f1a\u4f7f\u7528\u6237\u96be\u4ee5\u7406\u89e3\u60a8\u7684\u8868\u683c\u7684\u5185\u5bb9\u3002\u60a8\u8981\u7ee7\u7eed\u5417\uff1f","cell_limit":"\u5df2\u7ecf\u8d85\u51fa\u6700\u5927\u5355\u5143\u683c\u6570{$cells}\u3002","row_limit":"\u5df2\u7ecf\u8d85\u51fa\u6700\u5927\u884c\u6570{$rows}\u3002","col_limit":"\u5df2\u7ecf\u8d85\u51fa\u6700\u5927\u5217\u6570{$cols}\u3002",colgroup:"\u5217\u5206\u7ec4",rowgroup:"\u884c\u5206\u7ec4",scope:"\u8303\u56f4",tfoot:"\u8868\u5c3e",tbody:"\u8868\u683c\u4e3b\u4f53",thead:"\u8868\u5934","row_all":"\u66f4\u65b0\u8868\u683c\u7684\u6240\u6709\u884c","row_even":"\u66f4\u65b0\u8868\u683c\u7684\u5076\u6570\u884c","row_odd":"\u66f4\u65b0\u8868\u683c\u7684\u5947\u6570\u884c","row_row":"\u66f4\u65b0\u5f53\u524d\u884c","cell_all":"\u66f4\u65b0\u6240\u6709\u5355\u5143\u683c","cell_row":"\u66f4\u65b0\u5f53\u524d\u884c\u7684\u5355\u5143\u683c","cell_cell":"\u66f4\u65b0\u5f53\u524d\u5355\u5143\u683c",th:"\u8868\u5934",td:"\u5185\u5bb9",summary:"\u6458\u8981",bgimage:"\u80cc\u666f\u56fe\u7247",rtl:"\u4ece\u53f3\u5230\u5de6",ltr:"\u4ece\u5de6\u5230\u53f3",mime:"\u76ee\u6807MIME\u7c7b\u578b",langcode:"\u8bed\u8a00\u7f16\u7801",langdir:"\u8bed\u8a00\u4e66\u5199\u65b9\u5411",style:"\u6837\u5f0f",id:"ID","merge_cells_title":"\u5408\u5e76\u5355\u5143\u683c",bgcolor:"\u80cc\u666f\u989c\u8272",bordercolor:"\u8fb9\u6846\u989c\u8272","align_bottom":"\u9760\u4e0b","align_top":"\u9760\u4e0a",valign:"\u5782\u76f4\u5bf9\u9f50","cell_type":"\u5355\u5143\u683c\u7c7b\u578b","cell_title":"\u5355\u5143\u683c\u5c5e\u6027","row_title":"\u884c\u5c5e\u6027","align_middle":"\u5c45\u4e2d","align_right":"\u53f3\u5bf9\u9f50","align_left":"\u5de6\u5bf9\u9f50","align_default":"\u9ed8\u8ba4",align:"\u5bf9\u9f50",border:"\u8fb9\u6846",cellpadding:"\u5355\u5143\u683c\u8fb9\u8ddd",cellspacing:"\u5355\u5143\u683c\u95f4\u8ddd",rows:"\u884c\u6570",cols:"\u5217\u6570",height:"\u9ad8\u5ea6",width:"\u5bbd\u5ea6",title:"\u63d2\u5165/\u7f16\u8f91 \u8868\u683c",rowtype:"\u884c\u6240\u5728\u7684\u8868\u683c\u4f4d\u7f6e","advanced_props":"\u9ad8\u7ea7\u5c5e\u6027","general_props":"\u666e\u901a\u5c5e\u6027","advanced_tab":"\u9ad8\u7ea7","general_tab":"\u666e\u901a","cell_col":"\u66f4\u65b0\u8be5\u5217\u5168\u90e8\u5355\u5143\u683c"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/langs/zh-tw_dlg.js b/program/js/tiny_mce/plugins/table/langs/zh-tw_dlg.js
deleted file mode 100644
index 7a89be3f6..000000000
--- a/program/js/tiny_mce/plugins/table/langs/zh-tw_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('zh-tw.table_dlg',{"rules_border":"\u908a\u6846","rules_box":"\u6846","rules_vsides":"\u5782\u76f4","rules_rhs":"\u53f3\u908a","rules_lhs":"\u5de6\u908a","rules_hsides":"\u6c34\u5e73","rules_below":"\u4e0b\u65b9","rules_above":"\u4e0a\u65b9","rules_void":"\u7121\u6548",rules:"\u898f\u5247","frame_all":"\u5168\u90e8","frame_cols":"\u6b04","frame_rows":"\u5217","frame_groups":"\u7fa4\u7d44","frame_none":"\u7121",frame:"\u6846\u67b6",caption:"\u8868\u683c\u8aaa\u660e","missing_scope":"\u60a8\u8868\u683c\u7b2c\u4e00\u884c\u7684\u8868\u683c\u6c92\u6709\u8a2d\u5b9a\u6a19\u984c\u5132\u5b58\u683c (TH)\uff0c\u9019\u53ef\u80fd\u4e0d\u5229\u65bc\u7db2\u9801 SEO \u8207 \u7121\u969c\u7919\u7a7a\u9593\u898f\u7bc4\uff0c\u60a8\u78ba\u5b9a\u8981\u5ffd\u7565\u9019\u500b\u55ce\uff1f","cell_limit":"\u8868\u683c\u5167\u7684\u683c\u5b57\u592a\u591a\uff0c\u529f\u80fd\u7121\u6cd5\u904b\u4f5c\uff0c\u5df2\u7d93\u8d85\u904e {$cells} \u500b\u3002","row_limit":"\u8868\u683c\u5167\u7684\u5217\u6578\u592a\u591a\uff0c\u529f\u80fd\u7121\u6cd5\u904b\u4f5c\uff0c\u5df2\u7d93\u8d85\u904e {$rows} \u5217\u3002","col_limit":"\u8868\u683c\u5167\u7684\u6b04\u4f4d\u592a\u591a\uff0c\u529f\u80fd\u7121\u6cd5\u904b\u4f5c\uff0c\u5df2\u7d93\u8d85\u904e {$cols} \u6b04\u3002",colgroup:"\u6b04\u4f4d\u7fa4\u7d44",rowgroup:"\u5217\u7fa4\u7d44",scope:"\u5957\u7528\u7bc4\u570d",tfoot:"\u8868\u683c\u5c3e\u90e8",tbody:"\u8868\u683c\u4e3b\u9ad4",thead:"\u8868\u683c\u4e0a\u982d","row_all":"\u66f4\u65b0\u5168\u90e8\u7684\u5217","row_even":"\u53ea\u66f4\u65b0\u8868\u683c\u4e0a\u7684\u5076\u6578\u5217","row_odd":"\u53ea\u66f4\u65b0\u8868\u683c\u4e0a\u7684\u5947\u6578\u5217","row_row":"\u53ea\u66f4\u65b0\u76ee\u524d\u9019\u5217","cell_all":"\u66f4\u65b0\u5168\u90e8\u5132\u5b58\u683c","cell_row":"\u66f4\u65b0\u76ee\u524d\u9019\u5217\u4e0a\u7684\u683c\u5b50","cell_cell":"\u66f4\u65b0\u76ee\u524d\u7684\u683c\u5b50\u5c31\u597d",th:"\u8868\u982d",td:"\u8cc7\u6599",summary:"\u8868\u683c\u6458\u8981",bgimage:"\u80cc\u666f\u5716",rtl:"\u5f9e\u53f3\u5230\u5de6",ltr:"\u5f9e\u5de6\u5230\u53f3",mime:"\u76ee\u6a19 MIME \u985e\u578b",langcode:"\u8a9e\u8a00\u7de8\u78bc",langdir:"\u66f8\u5beb\u65b9\u5411",style:"\u6a23\u5f0f",id:"\u8868\u683c\u7684 ID","merge_cells_title":"\u5408\u4f75\u5132\u5b58\u683c",bgcolor:"\u80cc\u666f\u984f\u8272",bordercolor:"\u908a\u6846\u7684\u984f\u8272","align_bottom":"\u9760\u4e0b","align_top":"\u9760\u4e0a",valign:"\u5782\u76f4\u5c0d\u9f4a","cell_type":"\u5132\u5b58\u683c\u7684\u5f62\u5f0f","cell_title":"\u8868\u683c\u683c\u5b50\u7684\u5c6c\u6027","row_title":"\u8868\u683c\u5217\u7684\u5c6c\u6027","align_middle":"\u4e2d\u9593","align_right":"\u53f3\u908a","align_left":"\u5de6\u908a","align_default":"\u9810\u8a2d",align:"\u5c0d\u9f4a\u65b9\u5f0f",border:"\u908a\u6846",cellpadding:"\u683c\u5b50\u7684\u5167\u8ddd",cellspacing:"\u683c\u5b50\u9593\u7684\u8ddd\u96e2",rows:"\u5217",cols:"\u6b04",height:"\u9ad8\u5ea6",width:"\u5bec\u5ea6",title:"\u52a0\u5165 / \u8a2d\u5b9a\u8868\u683c",rowtype:"\u76ee\u524d\u4f4d\u7f6e\u5217\u7684\u4f4d\u7f6e","advanced_props":"\u66f4\u591a\u5c6c\u6027","general_props":"\u5c6c\u6027\u8a2d\u5b9a","advanced_tab":"\u66f4\u591a","general_tab":"\u4e00\u822c","cell_col":"\u66f4\u65b0\u9019\u6b04\u4e0b\u7684\u6240\u6709\u683c\u5b50"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/merge_cells.htm b/program/js/tiny_mce/plugins/table/merge_cells.htm
deleted file mode 100644
index d231090e7..000000000
--- a/program/js/tiny_mce/plugins/table/merge_cells.htm
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#table_dlg.merge_cells_title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="../../utils/validate.js"></script>
- <script type="text/javascript" src="js/merge_cells.js"></script>
-</head>
-<body style="margin: 8px" role="application">
-<form onsubmit="MergeCellsDialog.merge();return false;" action="#">
- <fieldset>
- <legend>{#table_dlg.merge_cells_title}</legend>
- <table role="presentation" border="0" cellpadding="0" cellspacing="3" width="100%">
- <tr>
- <td><label for="numcols">{#table_dlg.cols}</label>:</td>
- <td align="right"><input type="text" id="numcols" name="numcols" value="" class="number min1 mceFocus" style="width: 30px" aria-required="true" /></td>
- </tr>
- <tr>
- <td><label for="numrows">{#table_dlg.rows}</label>:</td>
- <td align="right"><input type="text" id="numrows" name="numrows" value="" class="number min1" style="width: 30px" aria-required="true" /></td>
- </tr>
- </table>
- </fieldset>
-
- <div class="mceActionPanel">
- <input type="submit" id="insert" name="insert" value="{#update}" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
-</form>
-</body>
-</html>
diff --git a/program/js/tiny_mce/plugins/table/row.htm b/program/js/tiny_mce/plugins/table/row.htm
deleted file mode 100644
index 6ebef2842..000000000
--- a/program/js/tiny_mce/plugins/table/row.htm
+++ /dev/null
@@ -1,158 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#table_dlg.row_title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="../../utils/form_utils.js"></script>
- <script type="text/javascript" src="../../utils/validate.js"></script>
- <script type="text/javascript" src="../../utils/editable_selects.js"></script>
- <script type="text/javascript" src="js/row.js"></script>
- <link href="css/row.css" rel="stylesheet" type="text/css" />
-</head>
-<body id="tablerow" style="display: none" role="application">
- <form onsubmit="updateAction();return false;" action="#">
- <div class="tabs">
- <ul>
- <li id="general_tab" class="current" aria-controls="general_panel"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#table_dlg.general_tab}</a></span></li>
- <li id="advanced_tab" aria-controls="advanced_panel"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#table_dlg.advanced_tab}</a></span></li>
- </ul>
- </div>
-
- <div class="panel_wrapper">
- <div id="general_panel" class="panel current">
- <fieldset>
- <legend>{#table_dlg.general_props}</legend>
-
- <table role="presentation" border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td><label for="rowtype">{#table_dlg.rowtype}</label></td>
- <td class="col2">
- <select id="rowtype" name="rowtype" class="mceFocus" onChange="changedRowType();">
- <option value="thead">{#table_dlg.thead}</option>
- <option value="tbody">{#table_dlg.tbody}</option>
- <option value="tfoot">{#table_dlg.tfoot}</option>
- </select>
- </td>
- </tr>
-
- <tr>
- <td><label for="align">{#table_dlg.align}</label></td>
- <td class="col2">
- <select id="align" name="align">
- <option value="">{#not_set}</option>
- <option value="center">{#table_dlg.align_middle}</option>
- <option value="left">{#table_dlg.align_left}</option>
- <option value="right">{#table_dlg.align_right}</option>
- </select>
- </td>
- </tr>
-
- <tr>
- <td><label for="valign">{#table_dlg.valign}</label></td>
- <td class="col2">
- <select id="valign" name="valign">
- <option value="">{#not_set}</option>
- <option value="top">{#table_dlg.align_top}</option>
- <option value="middle">{#table_dlg.align_middle}</option>
- <option value="bottom">{#table_dlg.align_bottom}</option>
- </select>
- </td>
- </tr>
-
- <tr id="styleSelectRow">
- <td><label for="class">{#class_name}</label></td>
- <td class="col2">
- <select id="class" name="class" class="mceEditableSelect">
- <option value="" selected="selected">{#not_set}</option>
- </select>
- </td>
- </tr>
-
- <tr>
- <td><label for="height">{#table_dlg.height}</label></td>
- <td class="col2"><input name="height" type="text" id="height" value="" size="7" maxlength="7" onchange="changedSize();" class="size" /></td>
- </tr>
- </table>
- </fieldset>
- </div>
-
- <div id="advanced_panel" class="panel">
- <fieldset>
- <legend>{#table_dlg.advanced_props}</legend>
-
- <table role="presentation" border="0" cellpadding="0" cellspacing="4">
- <tr>
- <td class="column1"><label for="id">{#table_dlg.id}</label></td>
- <td><input id="id" name="id" type="text" value="" style="width: 200px" /></td>
- </tr>
-
- <tr>
- <td><label for="style">{#table_dlg.style}</label></td>
- <td><input type="text" id="style" name="style" value="" style="width: 200px;" onchange="changedStyle();" /></td>
- </tr>
-
- <tr>
- <td class="column1"><label for="dir">{#table_dlg.langdir}</label></td>
- <td>
- <select id="dir" name="dir" style="width: 200px">
- <option value="">{#not_set}</option>
- <option value="ltr">{#table_dlg.ltr}</option>
- <option value="rtl">{#table_dlg.rtl}</option>
- </select>
- </td>
- </tr>
-
- <tr>
- <td class="column1"><label for="lang">{#table_dlg.langcode}</label></td>
- <td>
- <input id="lang" name="lang" type="text" value="" style="width: 200px" />
- </td>
- </tr>
-
- <tr>
- <td class="column1"><label for="backgroundimage">{#table_dlg.bgimage}</label></td>
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="backgroundimage" name="backgroundimage" type="text" value="" style="width: 200px" onchange="changedBackgroundImage();" /></td>
- <td id="backgroundimagebrowsercontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td class="column1"><label for="bgcolor" id="bgcolor_label">{#table_dlg.bgcolor}</label></td>
- <td>
- <span role="group" aria-labelledby="bgcolor_label">
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');changedColor();" /></td>
- <td id="bgcolor_pickcontainer">&nbsp;</td>
- </tr>
- </table>
- </span>
- </td>
- </tr>
- </table>
- </fieldset>
- </div>
- </div>
-
- <div class="mceActionPanel">
- <div>
- <select id="action" name="action">
- <option value="row">{#table_dlg.row_row}</option>
- <option value="odd">{#table_dlg.row_odd}</option>
- <option value="even">{#table_dlg.row_even}</option>
- <option value="all">{#table_dlg.row_all}</option>
- </select>
- </div>
-
- <input type="submit" id="insert" name="insert" value="{#update}" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
- </form>
-</body>
-</html>
diff --git a/program/js/tiny_mce/plugins/table/table.htm b/program/js/tiny_mce/plugins/table/table.htm
deleted file mode 100644
index b92fa741e..000000000
--- a/program/js/tiny_mce/plugins/table/table.htm
+++ /dev/null
@@ -1,188 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#table_dlg.title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="../../utils/form_utils.js"></script>
- <script type="text/javascript" src="../../utils/validate.js"></script>
- <script type="text/javascript" src="../../utils/editable_selects.js"></script>
- <script type="text/javascript" src="js/table.js"></script>
- <link href="css/table.css" rel="stylesheet" type="text/css" />
-</head>
-<body id="table" style="display: none" role="application" aria-labelledby="app_title">
- <span style="display:none;" id="app_title">{#table_dlg.title}</span>
- <form onsubmit="insertTable();return false;" action="#">
- <div class="tabs">
- <ul>
- <li id="general_tab" aria-controls="general_panel" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#table_dlg.general_tab}</a></span></li>
- <li id="advanced_tab" aria-controls="advanced_panel"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#table_dlg.advanced_tab}</a></span></li>
- </ul>
- </div>
-
- <div class="panel_wrapper">
- <div id="general_panel" class="panel current">
- <fieldset>
- <legend>{#table_dlg.general_props}</legend>
- <table role="presentation" border="0" cellpadding="4" cellspacing="0" width="100%">
- <tr>
- <td><label id="colslabel" for="cols">{#table_dlg.cols}</label></td>
- <td><input id="cols" name="cols" type="text" value="" size="3" maxlength="3" class="required number min1 mceFocus" aria-required="true" /></td>
- <td><label id="rowslabel" for="rows">{#table_dlg.rows}</label></td>
- <td><input id="rows" name="rows" type="text" value="" size="3" maxlength="3" class="required number min1" aria-required="true" /></td>
- </tr>
- <tr>
- <td><label id="cellpaddinglabel" for="cellpadding">{#table_dlg.cellpadding}</label></td>
- <td><input id="cellpadding" name="cellpadding" type="text" value="" size="3" maxlength="3" class="number" /></td>
- <td><label id="cellspacinglabel" for="cellspacing">{#table_dlg.cellspacing}</label></td>
- <td><input id="cellspacing" name="cellspacing" type="text" value="" size="3" maxlength="3" class="number" /></td>
- </tr>
- <tr>
- <td><label id="alignlabel" for="align">{#table_dlg.align}</label></td>
- <td><select id="align" name="align">
- <option value="">{#not_set}</option>
- <option value="center">{#table_dlg.align_middle}</option>
- <option value="left">{#table_dlg.align_left}</option>
- <option value="right">{#table_dlg.align_right}</option>
- </select></td>
- <td><label id="borderlabel" for="border">{#table_dlg.border}</label></td>
- <td><input id="border" name="border" type="text" value="" size="3" maxlength="5" onchange="changedBorder();" class="size" /></td>
- </tr>
- <tr id="width_row">
- <td><label id="widthlabel" for="width">{#table_dlg.width}</label></td>
- <td><input name="width" type="text" id="width" value="" size="7" maxlength="7" onchange="changedSize();" class="size" /></td>
- <td><label id="heightlabel" for="height">{#table_dlg.height}</label></td>
- <td><input name="height" type="text" id="height" value="" size="7" maxlength="7" onchange="changedSize();" class="size" /></td>
- </tr>
- <tr id="styleSelectRow" >
- <td><label id="classlabel" for="class">{#class_name}</label></td>
- <td colspan="3" >
- <select id="class" name="class" class="mceEditableSelect">
- <option value="" selected="selected">{#not_set}</option>
- </select></td>
- </tr>
- <tr>
- <td class="column1" ><label for="caption">{#table_dlg.caption}</label></td>
- <td><input id="caption" name="caption" type="checkbox" class="checkbox" value="true" /></td>
- </tr>
- </table>
- </fieldset>
- </div>
-
- <div id="advanced_panel" class="panel">
- <fieldset>
- <legend>{#table_dlg.advanced_props}</legend>
-
- <table role="presentation" border="0" cellpadding="0" cellspacing="4">
- <tr>
- <td class="column1"><label for="id">{#table_dlg.id}</label></td>
- <td><input id="id" name="id" type="text" value="" class="advfield" /></td>
- </tr>
-
- <tr>
- <td class="column1"><label for="summary">{#table_dlg.summary}</label></td>
- <td><input id="summary" name="summary" type="text" value="" class="advfield" /></td>
- </tr>
-
- <tr>
- <td><label for="style">{#table_dlg.style}</label></td>
- <td><input type="text" id="style" name="style" value="" class="advfield" onchange="changedStyle();" /></td>
- </tr>
-
- <tr>
- <td class="column1"><label id="langlabel" for="lang">{#table_dlg.langcode}</label></td>
- <td>
- <input id="lang" name="lang" type="text" value="" class="advfield" />
- </td>
- </tr>
-
- <tr>
- <td class="column1"><label for="backgroundimage">{#table_dlg.bgimage}</label></td>
- <td>
- <table role="presentation" aria-labelledby="backgroundimage_label" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="backgroundimage" name="backgroundimage" type="text" value="" class="advfield" onchange="changedBackgroundImage();" /></td>
- <td id="backgroundimagebrowsercontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <td class="column1"><label for="tframe">{#table_dlg.frame}</label></td>
- <td>
- <select id="tframe" name="tframe" class="advfield">
- <option value="">{#not_set}</option>
- <option value="void">{#table_dlg.rules_void}</option>
- <option value="above">{#table_dlg.rules_above}</option>
- <option value="below">{#table_dlg.rules_below}</option>
- <option value="hsides">{#table_dlg.rules_hsides}</option>
- <option value="lhs">{#table_dlg.rules_lhs}</option>
- <option value="rhs">{#table_dlg.rules_rhs}</option>
- <option value="vsides">{#table_dlg.rules_vsides}</option>
- <option value="box">{#table_dlg.rules_box}</option>
- <option value="border">{#table_dlg.rules_border}</option>
- </select>
- </td>
- </tr>
-
- <tr>
- <td class="column1"><label for="rules">{#table_dlg.rules}</label></td>
- <td>
- <select id="rules" name="rules" class="advfield">
- <option value="">{#not_set}</option>
- <option value="none">{#table_dlg.frame_none}</option>
- <option value="groups">{#table_dlg.frame_groups}</option>
- <option value="rows">{#table_dlg.frame_rows}</option>
- <option value="cols">{#table_dlg.frame_cols}</option>
- <option value="all">{#table_dlg.frame_all}</option>
- </select>
- </td>
- </tr>
-
- <tr>
- <td class="column1"><label for="dir">{#table_dlg.langdir}</label></td>
- <td>
- <select id="dir" name="dir" class="advfield">
- <option value="">{#not_set}</option>
- <option value="ltr">{#table_dlg.ltr}</option>
- <option value="rtl">{#table_dlg.rtl}</option>
- </select>
- </td>
- </tr>
-
- <tr role="group" aria-labelledby="bordercolor_label">
- <td class="column1"><label id="bordercolor_label" for="bordercolor">{#table_dlg.bordercolor}</label></td>
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="bordercolor" name="bordercolor" type="text" value="" size="9" onchange="updateColor('bordercolor_pick','bordercolor');changedColor();" /></td>
- <td id="bordercolor_pickcontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr role="group" aria-labelledby="bgcolor_label">
- <td class="column1"><label id="bgcolor_label" for="bgcolor">{#table_dlg.bgcolor}</label></td>
- <td>
- <table role="presentation" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');changedColor();" /></td>
- <td id="bgcolor_pickcontainer">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </fieldset>
- </div>
- </div>
-
- <div class="mceActionPanel">
- <input type="submit" id="insert" name="insert" value="{#insert}" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
- </form>
-</body>
-</html>
diff --git a/program/js/tiny_mce/plugins/template/blank.htm b/program/js/tiny_mce/plugins/template/blank.htm
deleted file mode 100644
index ecde53fae..000000000
--- a/program/js/tiny_mce/plugins/template/blank.htm
+++ /dev/null
@@ -1,12 +0,0 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>blank_page</title>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <script type="text/javascript">
- parent.TemplateDialog.loadCSSFiles(document);
- </script>
-</head>
-<body id="mceTemplatePreview" class="mceContentBody">
-
-</body>
-</html>
diff --git a/program/js/tiny_mce/plugins/template/css/template.css b/program/js/tiny_mce/plugins/template/css/template.css
deleted file mode 100644
index 2d23a4938..000000000
--- a/program/js/tiny_mce/plugins/template/css/template.css
+++ /dev/null
@@ -1,23 +0,0 @@
-#frmbody {
- padding: 10px;
- background-color: #FFF;
- border: 1px solid #CCC;
-}
-
-.frmRow {
- margin-bottom: 10px;
-}
-
-#templatesrc {
- border: none;
- width: 320px;
- height: 240px;
-}
-
-.title {
- padding-bottom: 5px;
-}
-
-.mceActionPanel {
- padding-top: 5px;
-}
diff --git a/program/js/tiny_mce/plugins/template/editor_plugin.js b/program/js/tiny_mce/plugins/template/editor_plugin.js
deleted file mode 100644
index ebe3c27d7..000000000
--- a/program/js/tiny_mce/plugins/template/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){var a=tinymce.each;tinymce.create("tinymce.plugins.TemplatePlugin",{init:function(b,c){var d=this;d.editor=b;b.addCommand("mceTemplate",function(e){b.windowManager.open({file:c+"/template.htm",width:b.getParam("template_popup_width",750),height:b.getParam("template_popup_height",600),inline:1},{plugin_url:c})});b.addCommand("mceInsertTemplate",d._insertTemplate,d);b.addButton("template",{title:"template.desc",cmd:"mceTemplate"});b.onPreProcess.add(function(e,g){var f=e.dom;a(f.select("div",g.node),function(h){if(f.hasClass(h,"mceTmpl")){a(f.select("*",h),function(i){if(f.hasClass(i,e.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))){i.innerHTML=d._getDateTime(new Date(),e.getParam("template_mdate_format",e.getLang("template.mdate_format")))}});d._replaceVals(h)}})})},getInfo:function(){return{longname:"Template plugin",author:"Moxiecode Systems AB",authorurl:"http://www.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/template",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_insertTemplate:function(i,j){var k=this,g=k.editor,f,c,d=g.dom,b=g.selection.getContent();f=j.content;a(k.editor.getParam("template_replace_values"),function(l,h){if(typeof(l)!="function"){f=f.replace(new RegExp("\\{\\$"+h+"\\}","g"),l)}});c=d.create("div",null,f);n=d.select(".mceTmpl",c);if(n&&n.length>0){c=d.create("div",null);c.appendChild(n[0].cloneNode(true))}function e(l,h){return new RegExp("\\b"+h+"\\b","g").test(l.className)}a(d.select("*",c),function(h){if(e(h,g.getParam("template_cdate_classes","cdate").replace(/\s+/g,"|"))){h.innerHTML=k._getDateTime(new Date(),g.getParam("template_cdate_format",g.getLang("template.cdate_format")))}if(e(h,g.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))){h.innerHTML=k._getDateTime(new Date(),g.getParam("template_mdate_format",g.getLang("template.mdate_format")))}if(e(h,g.getParam("template_selected_content_classes","selcontent").replace(/\s+/g,"|"))){h.innerHTML=b}});k._replaceVals(c);g.execCommand("mceInsertContent",false,c.innerHTML);g.addVisual()},_replaceVals:function(c){var d=this.editor.dom,b=this.editor.getParam("template_replace_values");a(d.select("*",c),function(f){a(b,function(g,e){if(d.hasClass(f,e)){if(typeof(b[e])=="function"){b[e](f)}}})})},_getDateTime:function(e,b){if(!b){return""}function c(g,d){var f;g=""+g;if(g.length<d){for(f=0;f<(d-g.length);f++){g="0"+g}}return g}b=b.replace("%D","%m/%d/%y");b=b.replace("%r","%I:%M:%S %p");b=b.replace("%Y",""+e.getFullYear());b=b.replace("%y",""+e.getYear());b=b.replace("%m",c(e.getMonth()+1,2));b=b.replace("%d",c(e.getDate(),2));b=b.replace("%H",""+c(e.getHours(),2));b=b.replace("%M",""+c(e.getMinutes(),2));b=b.replace("%S",""+c(e.getSeconds(),2));b=b.replace("%I",""+((e.getHours()+11)%12+1));b=b.replace("%p",""+(e.getHours()<12?"AM":"PM"));b=b.replace("%B",""+this.editor.getLang("template_months_long").split(",")[e.getMonth()]);b=b.replace("%b",""+this.editor.getLang("template_months_short").split(",")[e.getMonth()]);b=b.replace("%A",""+this.editor.getLang("template_day_long").split(",")[e.getDay()]);b=b.replace("%a",""+this.editor.getLang("template_day_short").split(",")[e.getDay()]);b=b.replace("%%","%");return b}});tinymce.PluginManager.add("template",tinymce.plugins.TemplatePlugin)})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/editor_plugin_src.js b/program/js/tiny_mce/plugins/template/editor_plugin_src.js
deleted file mode 100644
index 9cac26991..000000000
--- a/program/js/tiny_mce/plugins/template/editor_plugin_src.js
+++ /dev/null
@@ -1,159 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- var each = tinymce.each;
-
- tinymce.create('tinymce.plugins.TemplatePlugin', {
- init : function(ed, url) {
- var t = this;
-
- t.editor = ed;
-
- // Register commands
- ed.addCommand('mceTemplate', function(ui) {
- ed.windowManager.open({
- file : url + '/template.htm',
- width : ed.getParam('template_popup_width', 750),
- height : ed.getParam('template_popup_height', 600),
- inline : 1
- }, {
- plugin_url : url
- });
- });
-
- ed.addCommand('mceInsertTemplate', t._insertTemplate, t);
-
- // Register buttons
- ed.addButton('template', {title : 'template.desc', cmd : 'mceTemplate'});
-
- ed.onPreProcess.add(function(ed, o) {
- var dom = ed.dom;
-
- each(dom.select('div', o.node), function(e) {
- if (dom.hasClass(e, 'mceTmpl')) {
- each(dom.select('*', e), function(e) {
- if (dom.hasClass(e, ed.getParam('template_mdate_classes', 'mdate').replace(/\s+/g, '|')))
- e.innerHTML = t._getDateTime(new Date(), ed.getParam("template_mdate_format", ed.getLang("template.mdate_format")));
- });
-
- t._replaceVals(e);
- }
- });
- });
- },
-
- getInfo : function() {
- return {
- longname : 'Template plugin',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://www.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/template',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- },
-
- _insertTemplate : function(ui, v) {
- var t = this, ed = t.editor, h, el, dom = ed.dom, sel = ed.selection.getContent();
-
- h = v.content;
-
- each(t.editor.getParam('template_replace_values'), function(v, k) {
- if (typeof(v) != 'function')
- h = h.replace(new RegExp('\\{\\$' + k + '\\}', 'g'), v);
- });
-
- el = dom.create('div', null, h);
-
- // Find template element within div
- n = dom.select('.mceTmpl', el);
- if (n && n.length > 0) {
- el = dom.create('div', null);
- el.appendChild(n[0].cloneNode(true));
- }
-
- function hasClass(n, c) {
- return new RegExp('\\b' + c + '\\b', 'g').test(n.className);
- };
-
- each(dom.select('*', el), function(n) {
- // Replace cdate
- if (hasClass(n, ed.getParam('template_cdate_classes', 'cdate').replace(/\s+/g, '|')))
- n.innerHTML = t._getDateTime(new Date(), ed.getParam("template_cdate_format", ed.getLang("template.cdate_format")));
-
- // Replace mdate
- if (hasClass(n, ed.getParam('template_mdate_classes', 'mdate').replace(/\s+/g, '|')))
- n.innerHTML = t._getDateTime(new Date(), ed.getParam("template_mdate_format", ed.getLang("template.mdate_format")));
-
- // Replace selection
- if (hasClass(n, ed.getParam('template_selected_content_classes', 'selcontent').replace(/\s+/g, '|')))
- n.innerHTML = sel;
- });
-
- t._replaceVals(el);
-
- ed.execCommand('mceInsertContent', false, el.innerHTML);
- ed.addVisual();
- },
-
- _replaceVals : function(e) {
- var dom = this.editor.dom, vl = this.editor.getParam('template_replace_values');
-
- each(dom.select('*', e), function(e) {
- each(vl, function(v, k) {
- if (dom.hasClass(e, k)) {
- if (typeof(vl[k]) == 'function')
- vl[k](e);
- }
- });
- });
- },
-
- _getDateTime : function(d, fmt) {
- if (!fmt)
- return "";
-
- function addZeros(value, len) {
- var i;
-
- value = "" + value;
-
- if (value.length < len) {
- for (i=0; i<(len-value.length); i++)
- value = "0" + value;
- }
-
- return value;
- }
-
- fmt = fmt.replace("%D", "%m/%d/%y");
- fmt = fmt.replace("%r", "%I:%M:%S %p");
- fmt = fmt.replace("%Y", "" + d.getFullYear());
- fmt = fmt.replace("%y", "" + d.getYear());
- fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2));
- fmt = fmt.replace("%d", addZeros(d.getDate(), 2));
- fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2));
- fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2));
- fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2));
- fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1));
- fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM"));
- fmt = fmt.replace("%B", "" + this.editor.getLang("template_months_long").split(',')[d.getMonth()]);
- fmt = fmt.replace("%b", "" + this.editor.getLang("template_months_short").split(',')[d.getMonth()]);
- fmt = fmt.replace("%A", "" + this.editor.getLang("template_day_long").split(',')[d.getDay()]);
- fmt = fmt.replace("%a", "" + this.editor.getLang("template_day_short").split(',')[d.getDay()]);
- fmt = fmt.replace("%%", "%");
-
- return fmt;
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('template', tinymce.plugins.TemplatePlugin);
-})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/js/template.js b/program/js/tiny_mce/plugins/template/js/template.js
deleted file mode 100644
index bc3045d24..000000000
--- a/program/js/tiny_mce/plugins/template/js/template.js
+++ /dev/null
@@ -1,106 +0,0 @@
-tinyMCEPopup.requireLangPack();
-
-var TemplateDialog = {
- preInit : function() {
- var url = tinyMCEPopup.getParam("template_external_list_url");
-
- if (url != null)
- document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></sc'+'ript>');
- },
-
- init : function() {
- var ed = tinyMCEPopup.editor, tsrc, sel, x, u;
-
- tsrc = ed.getParam("template_templates", false);
- sel = document.getElementById('tpath');
-
- // Setup external template list
- if (!tsrc && typeof(tinyMCETemplateList) != 'undefined') {
- for (x=0, tsrc = []; x<tinyMCETemplateList.length; x++)
- tsrc.push({title : tinyMCETemplateList[x][0], src : tinyMCETemplateList[x][1], description : tinyMCETemplateList[x][2]});
- }
-
- for (x=0; x<tsrc.length; x++)
- sel.options[sel.options.length] = new Option(tsrc[x].title, tinyMCEPopup.editor.documentBaseURI.toAbsolute(tsrc[x].src));
-
- this.resize();
- this.tsrc = tsrc;
- },
-
- resize : function() {
- var w, h, e;
-
- if (!self.innerWidth) {
- w = document.body.clientWidth - 50;
- h = document.body.clientHeight - 160;
- } else {
- w = self.innerWidth - 50;
- h = self.innerHeight - 170;
- }
-
- e = document.getElementById('templatesrc');
-
- if (e) {
- e.style.height = Math.abs(h) + 'px';
- e.style.width = Math.abs(w - 5) + 'px';
- }
- },
-
- loadCSSFiles : function(d) {
- var ed = tinyMCEPopup.editor;
-
- tinymce.each(ed.getParam("content_css", '').split(','), function(u) {
- d.write('<link href="' + ed.documentBaseURI.toAbsolute(u) + '" rel="stylesheet" type="text/css" />');
- });
- },
-
- selectTemplate : function(u, ti) {
- var d = window.frames['templatesrc'].document, x, tsrc = this.tsrc;
-
- if (!u)
- return;
-
- d.body.innerHTML = this.templateHTML = this.getFileContents(u);
-
- for (x=0; x<tsrc.length; x++) {
- if (tsrc[x].title == ti)
- document.getElementById('tmpldesc').innerHTML = tsrc[x].description || '';
- }
- },
-
- insert : function() {
- tinyMCEPopup.execCommand('mceInsertTemplate', false, {
- content : this.templateHTML,
- selection : tinyMCEPopup.editor.selection.getContent()
- });
-
- tinyMCEPopup.close();
- },
-
- getFileContents : function(u) {
- var x, d, t = 'text/plain';
-
- function g(s) {
- x = 0;
-
- try {
- x = new ActiveXObject(s);
- } catch (s) {
- }
-
- return x;
- };
-
- x = window.ActiveXObject ? g('Msxml2.XMLHTTP') || g('Microsoft.XMLHTTP') : new XMLHttpRequest();
-
- // Synchronous AJAX load file
- x.overrideMimeType && x.overrideMimeType(t);
- x.open("GET", u, false);
- x.send(null);
-
- return x.responseText;
- }
-};
-
-TemplateDialog.preInit();
-tinyMCEPopup.onInit.add(TemplateDialog.init, TemplateDialog);
diff --git a/program/js/tiny_mce/plugins/template/langs/ar_dlg.js b/program/js/tiny_mce/plugins/template/langs/ar_dlg.js
deleted file mode 100644
index 5bae50d37..000000000
--- a/program/js/tiny_mce/plugins/template/langs/ar_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ar.template_dlg',{title:"Templates",label:"Template","desc_label":"\u0627\u0644\u0648\u0635\u0641",desc:"Insert predefined template content",select:"Select a template",preview:"\u0645\u0639\u0627\u064a\u0646\u0647",warning:"Warning: Updating a template with a different one may cause data loss.","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"\u064a\u0646\u0627\u064a\u0631 \u060c \u0641\u0628\u0631\u0627\u064a\u0631 \u060c \u0622\u0630\u0627\u0631 \u060c \u0646\u064a\u0633\u0627\u0646 \u060c \u0623\u064a\u0627\u0631 \u060c \u062d\u0632\u064a\u0631\u0627\u0646 \u060c \u062a\u0645\u0648\u0632 \u060c \u0622\u0628 \u060c \u0623\u064a\u0644\u0648\u0644 / \u0633\u0628\u062a\u0645\u0628\u0631 \u060c \u0623\u0643\u062a\u0648\u0628\u0631 \u060c \u0646\u0648\u0641\u0645\u0628\u0631 \u060c \u062f\u064a\u0633\u0645\u0628\u0631","months_short":"\u064a\u0646\u0627\u064a\u0631 \u060c \u0641\u0628\u0631\u0627\u064a\u0631 \u060c \u0645\u0627\u0631\u0633 \u060c \u0623\u0628\u0631\u064a\u0644 \u0648\u0645\u0627\u064a\u0648 \u0648\u064a\u0648\u0646\u064a\u0648 \u060c \u064a\u0648\u0644\u064a\u0648 \u060c \u0623\u063a\u0633\u0637\u0633 \u060c \u0633\u0628\u062a\u0645\u0628\u0631 \u060c \u0623\u0643\u062a\u0648\u0628\u0631 \u060c \u0646\u0648\u0641\u0645\u0628\u0631 \u060c \u062f\u064a\u0633\u0645\u0628\u0631","day_long":"\u0627\u0644\u0623\u062d\u062f \u060c \u0627\u0644\u0627\u062b\u0646\u064a\u0646 \u060c \u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 \u060c \u0627\u0644\u0627\u0631\u0628\u0639\u0627\u0621 \u060c \u0627\u0644\u062e\u0645\u064a\u0633 \u060c \u0627\u0644\u062c\u0645\u0639\u0629 \u060c \u0627\u0644\u0633\u0628\u062a \u060c \u0627\u0644\u0623\u062d\u062f","day_short":"\u0623\u062d\u062f \u060c \u0627\u0644\u0627\u062b\u0646\u064a\u0646 \u060c \u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621 \u060c \u0627\u0644\u0627\u0631\u0628\u0639\u0627\u0621 \u060c \u0627\u0644\u062e\u0645\u064a\u0633 \u060c \u0627\u0644\u062c\u0645\u0639\u0629 \u060c \u0627\u0644\u0633\u0628\u062a \u0648\u0627\u0644\u0623\u062d\u062f"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/az_dlg.js b/program/js/tiny_mce/plugins/template/langs/az_dlg.js
deleted file mode 100644
index c7e8834d3..000000000
--- a/program/js/tiny_mce/plugins/template/langs/az_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('az.template_dlg',{title:"\u015eablonlar",label:"\u015eablon","desc_label":"T\u0259svir",desc:"\u018fvv\u0259ld\u0259n m\u00fc\u0259yy\u0259n edil\u0259n \u015fablon daxil et",select:"\u015eablon se\u00e7",preview:"\u0130lkin bax\u0131\u015f",warning:"T\u0259hl\u00fck\u0259: Bir \u015fablonu bir ba\u015fqas\u0131yla aktualla\u015fd\u0131rmaq m\u0259lumat itkisin\u0259 yol a\u00e7a bil\u0259r.","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"Yanvar,Fevral,Mart,Aprel,May,\u0130yun,\u0130yul,Avqust,Sentaybr,Oktaybr,Noyabr,Dekabr","months_short":"Yan,Fev,Mar,Ape,May,\u0130yn,\u0130yl,Avq,Sen,Okt,Noy,Dek","day_long":"Bazar,Bazar ert\u0259si,\u00c7\u0259r\u015f\u0259nb\u0259 ax\u015fam\u0131,\u00c7\u0259r\u015f\u0259nb\u0259,C\u00fcm\u0259 ax\u015fam\u0131,C\u00fcm\u0259,\u015e\u0259nb\u0259,Bazar","day_short":"B,Be,\u00c7a,\u00c7,Ca,C,\u015e,B"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/bg_dlg.js b/program/js/tiny_mce/plugins/template/langs/bg_dlg.js
deleted file mode 100644
index 8791dcfed..000000000
--- a/program/js/tiny_mce/plugins/template/langs/bg_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bg.template_dlg',{title:"\u0422\u0435\u043c\u043f\u043b\u0435\u0439\u0442\u0438",label:"\u0422\u0435\u043c\u043f\u043b\u0435\u0439\u0442","desc_label":"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435",desc:"\u0412\u043c\u044a\u043a\u043d\u0438 \u0441\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435\u0442\u043e \u043d\u0430 \u0442\u0435\u043c\u043f\u043b\u0435\u0439\u0442",select:"\u0418\u0437\u0431\u0435\u0440\u0438 \u0442\u0435\u043c\u043f\u043b\u0435\u0439\u0442",preview:"\u041f\u0440\u0435\u0433\u043b\u0435\u0434",warning:"\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u041e\u0431\u043d\u043e\u0432\u044f\u0432\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u0435\u0434\u0438\u043d \u0442\u0435\u043c\u043f\u043b\u0435\u0439\u0442 \u0441 \u0434\u0440\u0443\u0433 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0434\u043e\u0432\u0435\u0434\u0435 \u0434\u043e \u0437\u0430\u0433\u0443\u0431\u0430 \u043d\u0430 \u0434\u0430\u043d\u043d\u0438.","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"\u042f\u043d\u0443\u0430\u0440\u0438,\u0424\u0435\u0432\u0440\u0443\u0430\u0440\u0438,\u041c\u0430\u0440\u0442,\u0410\u043f\u0440\u0438\u043b,\u041c\u0430\u0439,\u042e\u043d\u0438,\u042e\u043b\u0438,\u0410\u0432\u0433\u0443\u0441\u0442,\u0421\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438,\u041e\u043a\u0442\u043e\u043c\u0432\u0440\u0438,\u041d\u043e\u0435\u043c\u0432\u0440\u0438,\u0414\u0435\u043a\u0435\u043c\u0432\u0440\u0438","months_short":"\u042f\u043d\u0443,\u0424\u0435\u0432,\u041c\u0430\u0440,\u0410\u043f\u0440,\u041c\u0430\u0439,\u042e\u043d\u0438,\u042e\u043b\u0438,\u0410\u0432\u0433,\u0421\u0435\u043f,\u041e\u043a\u0442,\u041d\u043e\u0435,\u0414\u0435\u043a","day_long":"\u041d\u0435\u0434\u0435\u043b\u044f,\u041f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a,\u0412\u0442\u043e\u0440\u043d\u0438\u043a,\u0421\u0440\u044f\u0434\u0430,\u0427\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a,\u041f\u0435\u0442\u044a\u043a,\u0421\u044a\u0431\u043e\u0442\u0430,\u041d\u0435\u0434\u0435\u043b\u044f","day_short":"\u041d\u0434,\u041f\u043d,\u0412\u0442,\u0421\u0440,\u0427\u0442,\u041f\u0442,\u0421\u0431,\u041d\u0434"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/bn_dlg.js b/program/js/tiny_mce/plugins/template/langs/bn_dlg.js
deleted file mode 100644
index c7c09fb74..000000000
--- a/program/js/tiny_mce/plugins/template/langs/bn_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bn.template_dlg',{title:"Templates",label:"Template","desc_label":"Description",desc:"Insert predefined template content",select:"Select a template",preview:"Preview",warning:"Warning: Updating a template with a different one may cause data loss.","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"January,February,March,April,May,June,July,August,September,October,November,December","months_short":"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec","day_long":"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday","day_short":"Sun,Mon,Tue,Wed,Thu,Fri,Sat,Sun"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/br_dlg.js b/program/js/tiny_mce/plugins/template/langs/br_dlg.js
deleted file mode 100644
index 803df2ae5..000000000
--- a/program/js/tiny_mce/plugins/template/langs/br_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('br.template_dlg',{title:"Templates",label:"Template","desc_label":"Descri\u00e7\u00e3o",desc:"Inserir template",select:"Selecionar template",preview:"Pr\u00e9-Visualiza\u00e7\u00e3o",warning:"Aten\u00e7\u00e3o: Atualizar um template com outro pode causar a perda de dados.","mdate_format":"%d-%m-%Y %H:%M:%S","cdate_format":"%d-%m-%Y %H:%M:%S","months_long":"Janeiro,Fevereiro,Mar\u00e7o,Abril,Maio,Junho,Julho,Agosto,Setembro,Outubro,Novembro,Dezembro","months_short":"Jan,Fev,Mar,Abr,Mai,Jun,Jul,Ago,Set,Out,Nov,Dez","day_long":"Domingo,Segunda-Feira,Ter\u00e7a-Feira,Quarta-Feira,Quinta-Feira,Sexta-Feira,S\u00e1bado,Domingo","day_short":"Dom,Seg,Ter,Qua,Qui,Sex,Sab,Dom"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/bs_dlg.js b/program/js/tiny_mce/plugins/template/langs/bs_dlg.js
deleted file mode 100644
index 89dd021e2..000000000
--- a/program/js/tiny_mce/plugins/template/langs/bs_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bs.template_dlg',{title:"Predlo\u0161ci",label:"Predlo\u017eak","desc_label":"Opis",desc:"Umetni sadr\u017eaj predlo\u0161ka",select:"Odaberite predlo\u017eak",preview:"Prikaz",warning:"Upozorenje: Nadopuna predlo\u0161ka novim mo\u017ee uzrokovati gubitak podataka.","mdate_format":"%d.%m.%Y %H:%M:%S","cdate_format":"%d.%m.%Y %H:%M:%S","months_long":"sije\u010danj,velja\u010da,o\u017eujak,travanj,svibanj,lipanj,srpanj,kolovoz,rujan,listopad,studeni,prosinac","months_short":"sij,velj,o\u017eu,tra,svi,lip,srp,kol,ruj,lis,stu,pro","day_long":"nedjelja,ponedjeljak,utorak,srijeda,\u010detvrtak,petak,subota,nedjelja","day_short":"ned,pon,uto,sri,\u010det,pet,sub,ned"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/ca_dlg.js b/program/js/tiny_mce/plugins/template/langs/ca_dlg.js
deleted file mode 100644
index 8c713109e..000000000
--- a/program/js/tiny_mce/plugins/template/langs/ca_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ca.template_dlg',{title:"Plantilles",label:"Plantilla","desc_label":"Descripci\u00f3",desc:"Insereix el contingut de plantilla predefinit",select:"Seleccioneu una plantilla",preview:"Previsualitzaci\u00f3",warning:"Av\u00eds: Actualitzar una plantilla amb una altra diferent pot provocar p\u00e8rdua d\'informaci\u00f3.","mdate_format":"%d-%m-%Y %H:%M:%S","cdate_format":"%d-%m-%Y %H:%M:%S","months_long":"gener,febrer,mar\u00e7,abril,maig,juny,juliol,agost,setembre,octubre,novembre,desembre","months_short":"gen.,febr.,mar\u00e7,abr.,maig,juny,jul.,ag.,set.,oct.,nov.,des.","day_long":"diumenge,dilluns,dimarts,dimecres,dijous,divendres,dissabte,diumenge","day_short":"dg.,dl.,dt.,dc.,dj.,dv.,ds.,dg."}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/cs_dlg.js b/program/js/tiny_mce/plugins/template/langs/cs_dlg.js
deleted file mode 100644
index acf5e146e..000000000
--- a/program/js/tiny_mce/plugins/template/langs/cs_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('cs.template_dlg',{title:"\u0160ablony",label:"\u0160ablona","desc_label":"Popis",desc:"Vlo\u017eit p\u0159eddefinovan\u00fd obsah ze \u0161ablony",select:"Vybrat \u0161ablonu",preview:"N\u00e1hled",warning:"Upozorn\u011bn\u00ed: Aktualizace \u0161ablony jinou zp\u016fsob\u00ed ztr\u00e1tu dat.","mdate_format":"%d.%m.%Y %H:%M:%S","cdate_format":"%d.%m.%Y %H:%M:%S","months_long":"Leden,\u00danor,B\u0159ezen,Duben,Kv\u011bten,\u010cerven,\u010cervenec,Srpen,Z\u00e1\u0159\u00ed,\u0158\u00edjen,Listopad,Prosinec","months_short":"Led,\u00dano,B\u0159e,Dub,Kv\u011b,\u010cer,\u010cvc,Srp,Z\u00e1\u0159,\u0158\u00edj,Lis,Pro","day_long":"Ned\u011ble,Pond\u011bl\u00ed,\u00dater\u00fd,St\u0159eda,\u010ctvrtek,P\u00e1tek,Sobota,Ned\u011ble","day_short":"Ne,Po,\u00dat,St,\u010ct,P\u00e1,So,Ne"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/cy_dlg.js b/program/js/tiny_mce/plugins/template/langs/cy_dlg.js
deleted file mode 100644
index e6b10b2ca..000000000
--- a/program/js/tiny_mce/plugins/template/langs/cy_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('cy.template_dlg',{title:"Templedi",label:"Templedi","desc_label":"Disgrifiad",desc:"Mewnosod cynnwys templed rhagosodol",select:"Dewis templed",preview:"Rhagolygiad",warning:"Rhybudd: Gall diweddaru templed gyda un arall achosi colled data.","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"Ionawr,Chwefror,Mawrth,Ebrill,Mai,Mehefin,Goffennaf,Awst,Medi,Hydref,Tachwedd,Rhagfyr","months_short":"Ion,Chw,Maw,Ebr,Mai,Meh,Gor,Aws,Med,Hyd,Tac,Rha","day_long":"Sul,Llun,Mawrth,Mercher,Iau,Gwener,Sadwrn,Sul","day_short":"Sul,Llu,Maw,Mer,Iau,Gwe,Sad,Sul"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/da_dlg.js b/program/js/tiny_mce/plugins/template/langs/da_dlg.js
deleted file mode 100644
index 5728ce193..000000000
--- a/program/js/tiny_mce/plugins/template/langs/da_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('da.template_dlg',{title:"Skabeloner",label:"Skabelon","desc_label":"Beskrivelse",desc:"Inds\u00e6t pr\u00e6defineret skabelonindhold",select:"V\u00e6lg en skabelon",preview:"Vis udskrift",warning:"Advarsel: Opdatering af en skabelon med en anden kan betyde datatab.","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"Januar,Februar,Marts,April,Maj,Juni,Juli,August,September,Oktober,November,December","months_short":"Jan,Feb,Mar,Apr,Maj,Jun,Jul,Aug,Sep,Okt,Nov,Dec","day_long":"S\u00f8ndag,Mandag,Tirsdag,Onsdag,Torsdag,Fredag,L\u00f8rdag,S\u00f8ndag","day_short":"S\u00f8n,Man,Tirs,Ons,Tors,Fre,L\u00f8r,S\u00f8n"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/de_dlg.js b/program/js/tiny_mce/plugins/template/langs/de_dlg.js
deleted file mode 100644
index 04c9fa1a8..000000000
--- a/program/js/tiny_mce/plugins/template/langs/de_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('de.template_dlg',{title:"Vorlagen",label:"Vorlage","desc_label":"Beschreibung",desc:"Inhalt aus Vorlage einf\u00fcgen",select:"Vorlage ausw\u00e4hlen",preview:"Vorschau",warning:"Warnung: Eine Vorlage mit einer anderen zu aktualisieren kann zu einem Datenverlust f\u00fchren!","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"Januar,Februar,M\u00e4rz,April,Mai,Juni,Juli,August,September,Oktober,November,Dezember","months_short":"Jan,Feb,M\u00e4r,Apr,Mai,Juni,Juli,Aug,Sept,Okt,Nov,Dez","day_long":"Sonntag,Montag,Dienstag,Mittwoch,Donnerstag,Freitag,Samstag,Sonntag","day_short":"So,Mo,Di,Mi,Do,Fr,Sa,So"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/el_dlg.js b/program/js/tiny_mce/plugins/template/langs/el_dlg.js
deleted file mode 100644
index 4f5372256..000000000
--- a/program/js/tiny_mce/plugins/template/langs/el_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('el.template_dlg',{title:"\u03a0\u03c1\u03cc\u03c4\u03c5\u03c0\u03b1",label:"\u03a0\u03c1\u03cc\u03c4\u03c5\u03c0\u03bf","desc_label":"\u03a0\u03b5\u03c1\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae",desc:"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03c0\u03b5\u03c1\u03b9\u03b5\u03c7\u03bf\u03bc\u03ad\u03bd\u03bf\u03c5 \u03b3\u03b9\u03b1 \u03c0\u03c1\u03bf\u03ba\u03b1\u03b8\u03bf\u03c1\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf \u03c0\u03c1\u03cc\u03c4\u03c5\u03c0\u03bf",select:"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03c0\u03c1\u03bf\u03c4\u03cd\u03c0\u03bf\u03c5",preview:"\u03a0\u03c1\u03bf\u03b5\u03c0\u03b9\u03c3\u03ba\u03cc\u03c0\u03b7\u03c3\u03b7",warning:"\u03a0\u03c1\u03bf\u03c3\u03bf\u03c7\u03ae : \u0395\u03bd\u03b7\u03bc\u03b5\u03c1\u03ce\u03bd\u03bf\u03bd\u03c4\u03b1\u03c2 \u03ad\u03bd\u03b1 \u03c0\u03c1\u03cc\u03c4\u03c5\u03c0\u03bf \u03bc\u03b5 \u03ad\u03bd\u03b1 \u03ac\u03bb\u03bb\u03bf, \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03c0\u03c1\u03bf\u03ba\u03b1\u03bb\u03ad\u03c3\u03b5\u03b9 \u03b1\u03c0\u03ce\u03bb\u03b5\u03b9\u03b1 \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd.","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"\u0399\u03b1\u03bd\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2,\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2,\u039c\u03ac\u03c1\u03c4\u03b9\u03bf\u03c2,\u0391\u03c0\u03c1\u03af\u03bb\u03b9\u03bf\u03c2,\u039c\u03ac\u03b9\u03bf\u03c2,\u0399\u03bf\u03cd\u03bd\u03b9\u03bf\u03c2,\u0399\u03bf\u03cd\u03bb\u03b9\u03bf\u03c2,\u0391\u03cd\u03b3\u03bf\u03c5\u03c3\u03c4\u03bf\u03c2,\u03a3\u03b5\u03c0\u03c4\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2,\u039f\u03ba\u03c4\u03ce\u03b2\u03c1\u03b9\u03bf\u03c2,\u039d\u03bf\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2,\u0394\u03b5\u03ba\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2","months_short":"\u0399\u03b1\u03bd,\u03a6\u03b5\u03b2,\u039c\u03ac\u03c1,\u0391\u03c0\u03c1,\u039c\u03ac\u03b9,\u0399\u03bf\u03cd\u03bd,\u0399\u03bf\u03cd\u03bb,\u0391\u03cd\u03b3,\u03a3\u03b5\u03c0,\u039f\u03ba\u03c4,\u039d\u03bf\u03ad,\u0394\u03b5\u03ba","day_long":"\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae,\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1,\u03a4\u03c1\u03af\u03c4\u03b7,\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7,\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7,\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae,\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf","day_short":"\u039a\u03c5,\u0394\u03b5,\u03a4\u03c1,\u03a4\u03b5\u03c4,\u03a0\u03ad\u03bc,\u03a0\u03b1\u03c1,\u03a3\u03b1\u03b2"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/en_dlg.js b/program/js/tiny_mce/plugins/template/langs/en_dlg.js
deleted file mode 100644
index 83e599d68..000000000
--- a/program/js/tiny_mce/plugins/template/langs/en_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('en.template_dlg',{title:"Templates",label:"Template","desc_label":"Description",desc:"Insert Predefined Template Content",select:"Select a Template",preview:"Preview",warning:"Warning: Updating a template with a different one may cause data loss.","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"January,February,March,April,May,June,July,August,September,October,November,December","months_short":"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec","day_long":"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday","day_short":"Sun,Mon,Tue,Wed,Thu,Fri,Sat,Sun"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/eo_dlg.js b/program/js/tiny_mce/plugins/template/langs/eo_dlg.js
deleted file mode 100644
index e54079f2e..000000000
--- a/program/js/tiny_mce/plugins/template/langs/eo_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('eo.template_dlg',{title:"\u015cablonoj",label:"\u015cablono","desc_label":"Priskribo",desc:"Enmeti \u015dablonon",select:"Elekti \u015dablonon",preview:"Anta\u016dvido",warning:"Atentu: \u011cisdatigi \u015dablonon per alia povas ka\u016dzi datumperdon.","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"Januaro,Februaro,Marto,Aprilo,Majo,Junio,Julio,A\u016dgusto,Septembro,Oktobro,Novembro,Decembro","months_short":"Jan,Feb,Mar,Apr,Maj,Jun,Jul,A\u016dg,Sep,Okt,Nov,Dec","day_long":"Diman\u0109o,Lundo,Mardo,Merkredo,\u0134a\u016ddo,Vendredo,Sabato,Diman\u0109o","day_short":"Dim,Lun,Mar,Mer,\u0134a\u016d,Ven,Sab,Dim"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/es_dlg.js b/program/js/tiny_mce/plugins/template/langs/es_dlg.js
deleted file mode 100644
index 185e45a45..000000000
--- a/program/js/tiny_mce/plugins/template/langs/es_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('es.template_dlg',{title:"Plantillas",label:"Plantilla","desc_label":"Descripci\u00f3n",desc:"Insertar contenido de plantilla predefinida",select:"Elegir plantilla",preview:"Vista previa",warning:"Cuidado: Actualizar una plantilla con otra puede causar p\u00e9rdida de datos.","mdate_format":"%d-%m-%Y %H:%M:%S","cdate_format":"%d-%m-%Y %H:%M:%S","months_long":"Enero,Febrero,Marzo,Abril,Mayo,Junio,Julio,Agosto,Septiembre,Octubre,Noviembre,Diciembre","months_short":"Ene,Feb,Mar,Abr,May,Jun,Jul,Ago,Sep,Oct,Nov,Dic","day_long":"Domingo,Lunes,Martes,Mi\u00e9rcoles,Jueves,Viernes,S\u00e1bado,Domingo","day_short":"Dom,Lun,Mar,Mie,Jue,Vie,Sab,Dom"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/et_dlg.js b/program/js/tiny_mce/plugins/template/langs/et_dlg.js
deleted file mode 100644
index a1ad87888..000000000
--- a/program/js/tiny_mce/plugins/template/langs/et_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('et.template_dlg',{title:"\u0160abloonid",label:"\u0160abloon","desc_label":"Kirjeldus",desc:"Sisesta eeldefineeritud \u0161ablooni sisu",select:"Vali \u0161abloon",preview:"Eelvaade",warning:"Hoiatus: \u0160ablooni uuendamine teistsugusega v\u00f5ib kaasa tuua andmete kaotsiminemist.","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"Jaanuar,Veebruar,M\u00e4rts,Aprill,Mai,Juuni,Juuli,August,September,Oktoober,November,Detsember","months_short":"Jaan,Veeb,M\u00e4rts,Apr,Mai,Juuni,Juuli,Aug,Sep,Okt,Nov,Dets","day_long":"P\u00fchap\u00e4ev,Esmasp\u00e4ev,Teisip\u00e4ev,Kolmap\u00e4ev,Neljap\u00e4ev,reede,Laup\u00e4ev,P\u00fchap\u00e4ev","day_short":"P,E,T,K,N,R,L,P"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/eu_dlg.js b/program/js/tiny_mce/plugins/template/langs/eu_dlg.js
deleted file mode 100644
index b458e9ae6..000000000
--- a/program/js/tiny_mce/plugins/template/langs/eu_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('eu.template_dlg',{title:"Txantiloiak",label:"Txantiloia","desc_label":"Deskribapena",desc:"Txertatu aurredefinitutako txantiloi edukia",select:"Aukeratu txantiloia",preview:"Aurreikusi",warning:"Kontuz: Txantiloi bat beste batekin eguneratzeak data galera sor dezake.","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"Urtarrila,Otsaila,Martxoa,Apirila,Maiatza,Ekaina,Uztaila,Abuztua,Iraila,Urria,Azaroa,Abendua","months_short":"Urt,Ots,Mar,Apr,Mai,Eka,Uzt,Abu,Ira,Urr,Aza,Abe","day_long":"Igandea,Astelehena,Asteartea,Asteazkena,Osteguna,Ostirala,Larunbata,Igandea","day_short":"Ig,Al,As,Az,Og,Or,Lr,Ig"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/fa_dlg.js b/program/js/tiny_mce/plugins/template/langs/fa_dlg.js
deleted file mode 100644
index 7ee0976c3..000000000
--- a/program/js/tiny_mce/plugins/template/langs/fa_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fa.template_dlg',{title:"\u0642\u0627\u0644\u0628 \u0647\u0627",label:"\u0642\u0627\u0644\u0628","desc_label":"\u062a\u0648\u0636\u06cc\u062d",desc:"\u062f\u0631\u062c \u0645\u062d\u062a\u0648\u0627\u06cc \u0642\u0627\u0644\u0628 \u0627\u0632 \u067e\u06cc\u0634 \u062a\u0639\u06cc\u06cc\u0646 \u0634\u062f\u0647",select:"\u0627\u0646\u062a\u062e\u0627\u0628 \u06cc\u06a9 \u0642\u0627\u0644\u0628",preview:"\u067e\u06cc\u0634 \u0646\u0645\u0627\u06cc\u0634",warning:"\u0647\u0634\u062f\u0627\u0631: \u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u06cc\u06a9 \u0642\u0627\u0644\u0628 \u0628\u0627 \u06cc\u06a9 \u0646\u0648\u0639 \u0645\u062a\u0641\u0627\u0648\u062a \u062f\u06cc\u06af\u0631 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u0627\u0639\u062b \u0627\u0632 \u062f\u0633\u062a \u0631\u0641\u062a\u0646 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0634\u0648\u062f.","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"\u0698\u0627\u0646\u0648\u06cc\u0647,\u0641\u0648\u0631\u06cc\u0647,\u0645\u0627\u0631\u0633,\u0622\u0648\u0631\u06cc\u0644,\u0645\u0647,\u0698\u0648\u0626\u0646,\u0698\u0648\u0626\u06cc\u0647,\u0627\u0648\u062a,\u0633\u067e\u062a\u0627\u0645\u0628\u0631,\u0627\u06a9\u062a\u0628\u0631,\u0646\u0648\u0627\u0645\u0628\u0631,\u062f\u0633\u0627\u0645\u0628\u0631","months_short":"\u0698\u0627\u0646\u0648\u06cc\u0647,\u0641\u0648\u0631\u06cc\u0647,\u0645\u0627\u0631\u0633,\u0622\u0648\u0631\u06cc\u0644,\u0645\u0647,\u0698\u0648\u0626\u0646,\u0698\u0648\u0626\u06cc\u0647,\u0627\u0648\u062a,\u0633\u067e\u062a\u0627\u0645\u0628\u0631,\u0627\u06a9\u062a\u0628\u0631,\u0646\u0648\u0627\u0645\u0628\u0631,\u062f\u0633\u0627\u0645\u0628\u0631","day_long":"\u06cc\u06a9\u0634\u0646\u0628\u0647,\u062f\u0648\u0634\u0646\u0628\u0647,\u0633\u0647 \u0634\u0646\u0628\u0647,\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647,\u067e\u0646\u062c \u0634\u0646\u0628\u0647,\u062c\u0645\u0639\u0647,\u0634\u0646\u0628\u0647,\u06cc\u06a9\u0634\u0646\u0628\u0647","day_short":"\u06cc\u06a9\u0634\u0646\u0628\u0647,\u062f\u0648\u0634\u0646\u0628\u0647,\u0633\u0647 \u0634\u0646\u0628\u0647,\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647,\u067e\u0646\u062c \u0634\u0646\u0628\u0647,\u062c\u0645\u0639\u0647,\u0634\u0646\u0628\u0647,\u06cc\u06a9\u0634\u0646\u0628\u0647"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/fi_dlg.js b/program/js/tiny_mce/plugins/template/langs/fi_dlg.js
deleted file mode 100644
index d3ce43703..000000000
--- a/program/js/tiny_mce/plugins/template/langs/fi_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fi.template_dlg',{title:"Sivupohjat",label:"Sivupohja","desc_label":"Kuvaus",desc:"Lis\u00e4\u00e4 esim\u00e4\u00e4ritetty\u00e4 sivupohjasis\u00e4lt\u00f6\u00e4",select:"Valitse sivupohja",preview:"Esikatselu",warning:"Varoitus: Sivupohjan p\u00e4ivitt\u00e4minen toisella saattaa aiheuttaa tiedon menetyksen.","mdate_format":"%d.%m.%Y %H:%M:%S","cdate_format":"%d.%m.%Y %H:%M:%S","months_long":"Tammikuu,Helmikuu,Maaliskuu,Huhtikuu,Toukokuu,Kes\u00e4kuu,Hein\u00e4kuu,Elokuu,Syyskuu,Lokakuu,Marraskuu,Joulukuu","months_short":"Tammi,Helmi,Maalis,Huhti,Touko,Kes\u00e4,Hein\u00e4,Elo,Syys,Loka,Marras,Joulu","day_long":"sunnuntai,maanantai,tiistai,keskiviikko,torstai,perjantai,lauantai,sunnuntai","day_short":"su,ma,ti,ke,to,pe,la,su"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/fr_dlg.js b/program/js/tiny_mce/plugins/template/langs/fr_dlg.js
deleted file mode 100644
index a9ee12412..000000000
--- a/program/js/tiny_mce/plugins/template/langs/fr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fr.template_dlg',{title:"Mod\u00e8les",label:"Mod\u00e8le","desc_label":"Description",desc:"Ins\u00e9rer un mod\u00e8le pr\u00e9d\u00e9fini",select:"Choisir un mod\u00e8le",preview:"Pr\u00e9visualisation",warning:"Attention : Mettre \u00e0 jour un mod\u00e8le pour un autre peut entra\u00eener une perte de donn\u00e9es !","mdate_format":"%d/%m/%Y %H:%M:%S","cdate_format":"%d/%m/%Y %H:%M:%S","months_long":"Janvier,F\u00e9vrier,Mars,Avril,Mai,Juin,Juillet,Ao\u00fbt,Septembre,Octobre,Novembre,D\u00e9cembre","months_short":"Jan,F\u00e9v,Mar,Avr,Mai,Juin,Juil,Ao\u00fbt,Sep,Oct,Nov,D\u00e9c","day_long":"Dimanche,Lundi,Mardi,Mercredi,Jeudi,Vendredi,Samedi,Dimanche","day_short":"Dim,Lun,Mar,Mer,Jeu,Ven,Sam,Dim"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/gl_dlg.js b/program/js/tiny_mce/plugins/template/langs/gl_dlg.js
deleted file mode 100644
index b74388bb1..000000000
--- a/program/js/tiny_mce/plugins/template/langs/gl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('gl.template_dlg',{title:"Plantillas",label:"Plantilla","desc_label":"Descripci\u00f3n",desc:"Insertar contido de plantilla predefinida",select:"Seleccionar plantilla",preview:"Vista previa",warning:"Coidado: Actualizar unha plantilla con outra pode causar p\u00e9rdida de datos.","mdate_format":"%d-%m-%Y %H:%M:%S","cdate_format":"%d-%m-%Y %H:%M:%S","months_long":"Xaneito,Febreiro,Marzo,Abril,Maio,Xu\u00f1o,Xullo,Agosto,Setembro,Outubro,Novembro,Decembro","months_short":"Xan,Feb,Mar,Abr,Mai,Xu\u00f1,Xul,Ago,Set,Out,Nov,Dec","day_long":"Domingo,Luns,Martes,M\u00e9rcores,Xoves,Venres,S\u00e1bado,Domingo","day_short":"Dom,Lun,Mar,M\u00e9r,Xov,Ver,S\u00e1b,Dom"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/he_dlg.js b/program/js/tiny_mce/plugins/template/langs/he_dlg.js
deleted file mode 100644
index cb2f785f1..000000000
--- a/program/js/tiny_mce/plugins/template/langs/he_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('he.template_dlg',{title:"\u05ea\u05d1\u05e0\u05d9\u05d5\u05ea",label:"\u05ea\u05d1\u05e0\u05d9\u05ea","desc_label":"\u05ea\u05d9\u05d0\u05d5\u05e8",desc:"Insert predefined template content",select:"\u05d1\u05d7\u05e8 \u05ea\u05d1\u05e0\u05d9\u05ea",preview:"\u05ea\u05e6\u05d5\u05d2\u05d4 \u05de\u05e7\u05d3\u05d9\u05de\u05d4",warning:"Warning: Updating a template with a different one may cause data loss.","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"January,February,March,April,May,June,July,August,September,October,November,December","months_short":"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec","day_long":"\u05e8\u05d0\u05e9\u05d5\u05df,\u05e9\u05e0\u05d9,\u05e9\u05dc\u05d9\u05e9\u05d9,\u05e8\u05d1\u05d9\u05e2\u05d9,\u05d7\u05de\u05d9\u05e9\u05d9,\u05e9\u05d9\u05e9\u05d9,\u05e9\u05d1\u05ea","day_short":"\u05e8\u05d0\u05e9\u05d5\u05df,\u05e9\u05e0\u05d9,\u05e9\u05dc\u05d9\u05e9\u05d9,\u05e8\u05d1\u05d9\u05e2\u05d9,\u05d7\u05de\u05d9\u05e9\u05d9,\u05e9\u05d9\u05e9\u05d9,\u05e9\u05d1\u05ea"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/hi_dlg.js b/program/js/tiny_mce/plugins/template/langs/hi_dlg.js
deleted file mode 100644
index 35f38ddda..000000000
--- a/program/js/tiny_mce/plugins/template/langs/hi_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hi.template_dlg',{title:"Templates",label:"Template","desc_label":"Description",desc:"Insert predefined template content",select:"Select a template",preview:"Preview",warning:"Warning: Updating a template with a different one may cause data loss.","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"January,February,March,April,May,June,July,August,September,October,November,December","months_short":"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec","day_long":"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday","day_short":"Sun,Mon,Tue,Wed,Thu,Fri,Sat,Sun"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/hr_dlg.js b/program/js/tiny_mce/plugins/template/langs/hr_dlg.js
deleted file mode 100644
index c2bce38a5..000000000
--- a/program/js/tiny_mce/plugins/template/langs/hr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hr.template_dlg',{title:"Predlo\u0161ci",label:"Predlo\u017eak","desc_label":"Opis",desc:"Umetni predefinirani sadr\u017eaj predlo\u0161ka",select:"Odaberite predlo\u017eak",preview:"Predpregled",warning:"Upozorenje: A\u017euriranje predlo\u0161ka novim mo\u017ee uzrokovati gubitak podataka.","mdate_format":"%d.%m.%Y %H:%M:%S","cdate_format":"%d.%m.%Y %H:%M:%S","months_long":"sije\u010danj,velja\u010da,o\u017eujak,travanj,svibanj,lipanj,srpanj,kolovoz,rujan,listopad,studeni,prosinac","months_short":"sij,velj,o\u017eu,tra,svi,lip,srp,kol,ruj,lis,stu,pro","day_long":"nedjelja,ponedjeljak,utorak,srijeda,\u010detvrtak,petak,subota,nedjelja","day_short":"ned,pon,uto,sri,\u010det,pet,sub,ned"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/hu_dlg.js b/program/js/tiny_mce/plugins/template/langs/hu_dlg.js
deleted file mode 100644
index b28de5b98..000000000
--- a/program/js/tiny_mce/plugins/template/langs/hu_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hu.template_dlg',{title:"Sablon beilleszt\u00e9se",label:"Sablon","desc_label":"Le\u00edr\u00e1s",desc:"Sablon beilleszt\u00e9se",select:"Sablon v\u00e1laszt\u00e1sa",preview:"El\u0151n\u00e9zet",warning:"Figyelem: Egy m\u00e1r alkalmazott sablon friss\u00edt\u00e9se m\u00e1sikkal adatveszt\u00e9ssel j\u00e1rhat.","mdate_format":"%Y.%m.%d. %H:%M:%S","cdate_format":"%Y.%m.%d. %H:%M:%S","months_long":"janu\u00e1r,febru\u00e1r,m\u00e1rcius,\u00e1prilis,m\u00e1jus,j\u00fanius,j\u00falius,augusztus,szeptember,okt\u00f3ber,november,december","months_short":"jan,feb,m\u00e1r,\u00e1pr,m\u00e1j,j\u00fan,j\u00fal,aug,szep,okt,nov,dec","day_long":"vas\u00e1rnap,h\u00e9tf\u0151,kedd,szerda,cs\u00fct\u00f6rt\u00f6k,p\u00e9ntek,szombat,vas\u00e1rnap","day_short":"V,H,K,Sze,Cs,P,Szo,V"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/hy_dlg.js b/program/js/tiny_mce/plugins/template/langs/hy_dlg.js
deleted file mode 100644
index 447eec34b..000000000
--- a/program/js/tiny_mce/plugins/template/langs/hy_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hy.template_dlg',{title:"\u0428\u0430\u0431\u043b\u043e\u043d\u044b",label:"\u0428\u0430\u0431\u043b\u043e\u043d","desc_label":"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435",desc:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442",select:"\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0448\u0430\u0431\u043b\u043e\u043d",preview:"\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440",warning:"\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u043f\u043e\u0442\u0435\u0440\u044f\u043c \u0434\u0430\u043d\u043d\u044b\u0445","mdate_format":"% Y-% m-% d% H:% M:% S","cdate_format":"% Y-% m-% d% H:% M:% S","months_long":"\u044f\u043d\u0432\u0430\u0440\u044c, \u0444\u0435\u0432\u0440\u0430\u043b\u044c, \u043c\u0430\u0440\u0442, \u0430\u043f\u0440\u0435\u043b\u044c, \u043c\u0430\u0439, \u0438\u044e\u043d\u044c, \u0438\u044e\u043b\u044c, \u0430\u0432\u0433\u0443\u0441\u0442, \u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c, \u043e\u043a\u0442\u044f\u0431\u0440\u044c, \u043d\u043e\u044f\u0431\u0440\u044c, \u0434\u0435\u043a\u0430\u0431\u0440\u044c","months_short":"\u044f\u043d\u0432\u0430\u0440\u044c, \u0444\u0435\u0432\u0440\u0430\u043b\u044c, \u043c\u0430\u0440\u0442, \u0430\u043f\u0440\u0435\u043b\u044c, \u043c\u0430\u0439, \u0438\u044e\u043d\u044c, \u0438\u044e\u043b\u044c, \u0430\u0432\u0433\u0443\u0441\u0442, \u0421\u0435\u043d\u0442\u044f\u0431\u0440\u044c, \u041e\u043a\u0442\u044f\u0431\u0440\u044c, \u041d\u043e\u044f\u0431\u0440\u044c, \u0414\u0435\u043a\u0430\u0431\u0440\u044c","day_long":"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435, \u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a, \u0432\u0442\u043e\u0440\u043d\u0438\u043a, \u0441\u0440\u0435\u0434\u0430, \u0447\u0435\u0442\u0432\u0435\u0440\u0433, \u043f\u044f\u0442\u043d\u0438\u0446\u0443, \u0441\u0443\u0431\u0431\u043e\u0442\u0443, \u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435","day_short":"\u0412\u0441, \u041f\u043d, \u0412\u0442, \u0421\u0440, \u0427\u0442, \u041f\u0442, \u0421\u0431, \u0412\u0441"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/id_dlg.js b/program/js/tiny_mce/plugins/template/langs/id_dlg.js
deleted file mode 100644
index 27a930057..000000000
--- a/program/js/tiny_mce/plugins/template/langs/id_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('id.template_dlg',{title:"Templates",label:"Template","desc_label":"Description",desc:"Menyisipkan template standar isi",select:"Select a template",preview:"Preview",warning:"Warning: mengupdate template yang berbeda dapat menyebabkan kehilangan data","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"Januari,Februari,Maren,April,Mei,Juni,Juli,Agustus,September,Oktober,November,Desember","months_short":"Jan,Feb,Mar,Apr,Mei,Jun,Jul,Ags,Sep,Okt,Nov,Des","day_long":"Minggu,Senin,Selasa,Rabu,Kamis,Jumat,Sabtu,Minggu","day_short":"Min,Sen,Sel,Rab,Kam,Jum,Sab,Min"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/is_dlg.js b/program/js/tiny_mce/plugins/template/langs/is_dlg.js
deleted file mode 100644
index c84fb1753..000000000
--- a/program/js/tiny_mce/plugins/template/langs/is_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('is.template_dlg',{title:"Sni\u00f0",label:"Sni\u00f0","desc_label":"L\u00fdsing",desc:"Setja inn tilb\u00fai\u00f0 sni\u00f0",select:"Velja sni\u00f0",preview:"Sko\u00f0a",warning:"Vi\u00f0v\u00f6run: Me\u00f0 \u00fev\u00ed a\u00f0 uppf\u00e6ra sni\u00f0 \u00f6\u00f0ru sni\u00f0i g\u00e6ti leitt til \u00feess a\u00f0 g\u00f6gn t\u00fdnist.","mdate_format":"%d. %m %Y %H:%M:%S","cdate_format":"%d. %m %Y %H:%M:%S","months_long":"jan\u00faar,febr\u00faar,mars,apr\u00edl,ma\u00ed,j\u00fan\u00ed,j\u00fal\u00ed,\u00e1g\u00fast,september,okt\u00f3ber,n\u00f3vember,desember","months_short":"jan,feb,mar,apr,ma\u00ed,j\u00fan,j\u00fal,\u00e1g\u00fa,sep,okt,nov,des","day_long":"sunnudagur,m\u00e1nudagur,\u00feri\u00f0judagur,mi\u00f0vikudagur,fimmtudagur,f\u00f6studagur,laugardagur,sunnudagur","day_short":"sun,m\u00e1n,\u00feri,mi\u00f0,fim,f\u00f6s,lau,sun"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/it_dlg.js b/program/js/tiny_mce/plugins/template/langs/it_dlg.js
deleted file mode 100644
index 78abd1f09..000000000
--- a/program/js/tiny_mce/plugins/template/langs/it_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('it.template_dlg',{title:"Modelli",label:"Modello","desc_label":"Descrizione",desc:"Inserisci contenuto da modello predefinito",select:"Seleziona un modello",preview:"Anteprima",warning:"Attenzione: Aggiornare un modello con un altro differente pu\u00f2 causare perdite di dati.","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"Gennaio,Febbraio,Marzo,Aprile,Maggio,Giugno,Luglio,Agosto,Settembre,Ottobre,Novembre,Dicembre","months_short":"Gen,Feb,Mar,Apr,Mag,Giu,Lug,Ago,Set,Ott,Nov,Dic","day_long":"Domenica,Luned\u00ec,Marted\u00ec,Mercoled\u00ec,Gioved\u00ec,Venerd\u00ec,Sabato,Domenica","day_short":"Dom,Lun,Mar,Mer,Gio,Ven,Sab,Dom"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/ja_dlg.js b/program/js/tiny_mce/plugins/template/langs/ja_dlg.js
deleted file mode 100644
index 4aae93377..000000000
--- a/program/js/tiny_mce/plugins/template/langs/ja_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ja.template_dlg',{title:"\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8",label:"\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8","desc_label":"\u8aac\u660e",desc:"\u5b9a\u7fa9\u6e08\u307f\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u633f\u5165",select:"\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u9078\u629e",preview:"\u30d7\u30ec\u30d3\u30e5\u30fc",warning:"\u8b66\u544a\uff1a\u7570\u306a\u308b\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306b\u66f4\u65b0\u3059\u308b\u3068\u30c7\u30fc\u30bf\u3092\u5931\u3046\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"1\u6708,2\u6708,3\u6708,4\u6708,5\u6708,6\u6708,7\u6708,8\u6708,9\u6708,10\u6708,11\u6708,12\u6708","months_short":"1,2,3,4,5,6,7,8,9,10,11,12","day_long":"\u65e5\u66dc\u65e5,\u6708\u66dc\u65e5,\u706b\u66dc\u65e5,\u6c34\u66dc\u65e5,\u6728\u66dc\u65e5,\u91d1\u66dc\u65e5,\u571f\u66dc\u65e5,\u65e5\u66dc\u65e5","day_short":"(\u65e5),(\u6708),(\u706b),(\u6c34),(\u6728),(\u91d1),(\u571f),(\u65e5)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/ka_dlg.js b/program/js/tiny_mce/plugins/template/langs/ka_dlg.js
deleted file mode 100644
index 30605c2e2..000000000
--- a/program/js/tiny_mce/plugins/template/langs/ka_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ka.template_dlg',{title:"\u10e8\u10d0\u10d1\u10da\u10dd\u10dc\u10d4\u10d1\u10d8",label:"\u10e8\u10d0\u10d1\u10da\u10dd\u10dc\u10d8","desc_label":"\u10d0\u10e6\u10ec\u10d4\u10e0\u10d0",desc:"\u10e8\u10d0\u10d1\u10da\u10dd\u10dc\u10d8\u10e1 \u10e9\u10d0\u10e1\u10db\u10d0",select:"\u10d0\u10d8\u10e0\u10e9\u10d8\u10d4\u10d7 \u10e8\u10d0\u10d1\u10da\u10dd\u10dc\u10d8",preview:"\u10d3\u10d0\u10d7\u10d5\u10d0\u10da\u10d8\u10e0\u10d4\u10d1\u10d0",warning:"\u10e7\u10e3\u10e0\u10d0\u10d3\u10e6\u10d4\u10d1\u10d0: \u10e8\u10d0\u10d1\u10da\u10dd\u10dc\u10d8\u10e1 \u10d0\u10e0\u10e9\u10d4\u10d5\u10d0\u10db \u10e8\u10d4\u10d8\u10eb\u10da\u10d4\u10d1\u10d0 \u10d2\u10d0\u10db\u10dd\u10d8\u10ec\u10d5\u10d8\u10dd\u10e1 \u10db\u10dd\u10dc\u10d0\u10ea\u10d4\u10db\u10d4\u10d1\u10d8\u10e1 \u10d3\u10d0\u10d9\u10d0\u10e0\u10d2\u10d5\u10d0/","mdate_format":"%Y.%m.%d %H:%M:%S","cdate_format":"%Y.%m.%d %H:%M:%S","months_long":"\u10d8\u10d0\u10dc\u10d5\u10d0\u10e0\u10d8,\u10d7\u10d4\u10d1\u10d4\u10e0\u10d5\u10d0\u10da\u10d8,\u10db\u10d0\u10e0\u10e2\u10d8,\u10d0\u10de\u10e0\u10d8\u10da\u10d8,\u10db\u10d0\u10d8\u10e1\u10d8,\u10d8\u10d5\u10dc\u10d8\u10e1\u10d8,\u10d8\u10d5\u10da\u10d8\u10e1\u10d8,\u10d0\u10d2\u10d5\u10d8\u10e1\u10e2\u10dd,\u10e1\u10d4\u10e5\u10e2\u10d4\u10db\u10d1\u10d4\u10e0\u10d8,\u10dd\u10e5\u10e2\u10dd\u10db\u10d1\u10d4\u10e0\u10d8,\u10dc\u10dd\u10d4\u10db\u10d1\u10d4\u10e0\u10d8,\u10d3\u10d4\u10d9\u10d4\u10db\u10d1\u10d4\u10e0\u10d8","months_short":"\u10d8\u10d0\u10dc,\u10d7\u10d4\u10d1,\u10db\u10d0\u10e0\u10e2,\u10d0\u10de\u10e0,\u10db\u10d0\u10d8\u10e1\u10d8,\u10d8\u10d5\u10dc,\u10d8\u10d5\u10da,\u10d0\u10d2\u10d5,\u10e1\u10d4\u10e5,\u10dd\u10e5\u10e2,\u10dc\u10dd\u10d4\u10db,\u10d3\u10d4\u10d9","day_long":"\u10d9\u10d5\u10d8\u10e0\u10d0,\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8,\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8,\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8,\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8,\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10d8,\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8,\u10d9\u10d5\u10d8\u10e0\u10d0","day_short":"\u10d9\u10d5,\u10dd\u10e0\u10e8,\u10e1\u10d0\u10db\u10e8,\u10dd\u10d7\u10ee\u10e8,\u10ee\u10e3\u10d7,\u10de\u10d0\u10e0,\u10e8\u10d0\u10d1,\u10d9\u10d5"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/ko_dlg.js b/program/js/tiny_mce/plugins/template/langs/ko_dlg.js
deleted file mode 100644
index 3919ced43..000000000
--- a/program/js/tiny_mce/plugins/template/langs/ko_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ko.template_dlg',{title:"\ud15c\ud50c\ub9bf",label:"\ud15c\ud50c\ub9bf","desc_label":"\uc124\uba85",desc:"\ubbf8\ub9ac \uc815\uc758\ub41c \ud15c\ud50c\ub9bf \uc0bd\uc785",select:"\ud15c\ud50c\ub9bf \uc120\ud0dd",preview:"\ubbf8\ub9ac \ubcf4\uae30",warning:"\uacbd\uace0: \ub2e4\ub978 \ud15c\ud50c\ub9bf\uc73c\ub85c \ubcc0\uacbd\ud558\uba74 \ub370\uc774\ud130\uac00 \uc720\uc2e4\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4.","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"1\uc6d4,2\uc6d4,3\uc6d4,4\uc6d4,5\uc6d4,6\uc6d4,7\uc6d4,8\uc6d4,9\uc6d4,10\uc6d4,11\uc6d4,12\uc6d4","months_short":"1,2,3,4,5,6,7,8,9,10,11,12","day_long":"\uc77c\uc694\uc77c,\uc6d4\uc694\uc77c,\ud654\uc694\uc77c,\uc218\uc694\uc77c,\ubaa9\uc694\uc77c,\uae08\uc694\uc77c,\ud1a0\uc694\uc77c,\uc77c\uc694\uc77c","day_short":"\uc77c,\uc6d4,\ud654,\uc218,\ubaa9,\uae08,\ud1a0,\uc77c"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/lt_dlg.js b/program/js/tiny_mce/plugins/template/langs/lt_dlg.js
deleted file mode 100644
index 2a28ead94..000000000
--- a/program/js/tiny_mce/plugins/template/langs/lt_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('lt.template_dlg',{title:"\u0160ablonai",label:"\u0160ablonas","desc_label":"Apra\u0161as",desc:"\u012eterpti numatyt\u0105 \u0161ablono turin\u012f",select:"Pasirinkti \u0161ablon\u0105",preview:"Per\u017ei\u016bra",warning:"Persp\u0117jimas: \u0160ablono pakeitimas kitu gali sukelti duomen\u0173 praradim\u0105.","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"Sausis,Vasaris,Kovas,Balandis,Gegu\u017e\u0117,Bir\u017eelis,Liepa,Rugpj\u016btis,Rugs\u0117jis,Spalis,Lapkritis,Gruodis","months_short":"Sau,Vas,Kov,Bal,Geg,Bir,Lie,Rugpj,Rugs,Spa,Lapkr,Gruo","day_long":"Sekmadienis,Pirmadienis,Antradienis,Tre\u010diadienis,Ketvirtadienis,Penktadienis,\u0160e\u0161tadienis,Sekmadienis","day_short":"Sekm,Pirm,Antr,Tre\u010d,Ketv,Penk,\u0160e\u0161t,Sekm"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/lv_dlg.js b/program/js/tiny_mce/plugins/template/langs/lv_dlg.js
deleted file mode 100644
index e6c59f99d..000000000
--- a/program/js/tiny_mce/plugins/template/langs/lv_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('lv.template_dlg',{title:"Templates",label:"Template","desc_label":"Description",desc:"Insert predefined template content",select:"Select a template",preview:"Preview",warning:"Warning: Updating a template with a different one may cause data loss.","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"January,February,March,April,May,June,July,August,September,October,November,December","months_short":"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec","day_long":"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday","day_short":"Sun,Mon,Tue,Wed,Thu,Fri,Sat,Sun"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/mk_dlg.js b/program/js/tiny_mce/plugins/template/langs/mk_dlg.js
deleted file mode 100644
index 5e47b4f7f..000000000
--- a/program/js/tiny_mce/plugins/template/langs/mk_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('mk.template_dlg',{title:"\u041f\u0440\u0438\u043c\u0435\u0440\u043e\u0446\u0438",label:"\u041f\u0440\u0438\u043c\u0435\u0440\u043e\u043a","desc_label":"\u041e\u043f\u0438\u0441",desc:"\u0412\u043d\u0435\u0441\u0438 \u0441\u043e\u0434\u0440\u0436\u0438\u043d\u0430 \u043e\u0434 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0442",select:"\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043a",preview:"\u041f\u0440\u0435\u0433\u043b\u0435\u0434",warning:"\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0434\u0443\u0432\u0430\u045a\u0435: \u0410\u0436\u0443\u0440\u0438\u0440\u0430\u045a\u0435\u0442\u043e \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043a\u043e\u0442 \u0441\u043e \u0434\u0440\u0443\u0433 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0440\u0435\u0437\u0443\u043b\u0442\u0438\u0440\u0430 \u0432\u043e \u0437\u0430\u0433\u0443\u0431\u0430 \u043d\u0430 \u043f\u043e\u0434\u0430\u0442\u043e\u0446\u0438\u0442\u0435.","mdate_format":"%d.%m.%Y %H:%M:%S","cdate_format":"%d.%m.%Y %H:%M:%S","months_long":"\u0408\u0430\u043d\u0443\u0430\u0440\u0438,\u0424\u0435\u0432\u0440\u0443\u0430\u0440\u0438,\u041c\u0430\u0440\u0442,\u0410\u043f\u0440\u0438\u043b,\u041c\u0430\u0458,\u0408\u0443\u043d\u0438,\u0408\u0443\u043b\u0438,\u0410\u0432\u0433\u0443\u0441\u0442,\u0421\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438,\u041e\u043a\u0442\u043e\u043c\u0432\u0440\u0438,\u041d\u043e\u0435\u043c\u0432\u0440\u0438,\u0414\u0435\u043a\u0435\u043c\u0432\u0440\u0438","months_short":"\u0408\u0430\u043d,\u0424\u0435\u0432,\u041c\u0430\u0440,\u0410\u043f\u0440,\u041c\u0430\u0458,\u0408\u0443\u043d,\u0408\u0443\u043b,\u0410\u0432\u0433,\u0421\u0435\u043f,\u041e\u043a\u0442,\u041d\u043e\u0435,\u0414\u0435\u043a","day_long":"\u041d\u0435\u0434\u0435\u043b\u0430,\u041f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a,\u0412\u0442\u043e\u0440\u043d\u0438\u043a,\u0421\u0440\u0435\u0434\u0430,\u0427\u0435\u0442\u0432\u0440\u0442\u043e\u043a,\u041f\u0435\u0442\u043e\u043a,\u0421\u0430\u0431\u043e\u0442\u0430,\u041d\u0435\u0434\u0435\u043b\u0430","day_short":"\u041d\u0435\u0434,\u041f\u043e\u043d,\u0412\u0442\u043e,\u0421\u0440\u0435,\u0427\u0435\u0442,\u041f\u0435\u0442,\u0421\u0430\u0431,\u041d\u0435\u0434"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/ms_dlg.js b/program/js/tiny_mce/plugins/template/langs/ms_dlg.js
deleted file mode 100644
index 52a065480..000000000
--- a/program/js/tiny_mce/plugins/template/langs/ms_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ms.template_dlg',{title:"Templet",label:"Templet","desc_label":"Huraian",desc:"Masukkan pra takrifan kandungan templet",select:"Pilih templet",preview:"Pratonton",warning:"Amaran: Memperbaharui template dengan yang lain akan menyebabkan kehilangan data.","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"Januari,Febuari,Mac,April,Mei,Jun,Julai,Ogos,September,Oktober,November,Disember","months_short":"Jan,Feb,Mac,Apr,Mei,Jun,Jul,Ogo,Sep,Okt,Nov,Dis","day_long":"Ahad,Isnin,Selasa,Rabu,Khamis,Jumaat,Sabtu,Ahad","day_short":"Aha,Isn,Sel,Rab,Kha,Jum,Sab,Aha"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/nb_dlg.js b/program/js/tiny_mce/plugins/template/langs/nb_dlg.js
deleted file mode 100644
index 4f2bc593d..000000000
--- a/program/js/tiny_mce/plugins/template/langs/nb_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nb.template_dlg',{title:"Maler",label:"Mal","desc_label":"Beskrivelse",desc:"Sett inn forh\u00e5ndsdefinert malinnhold",select:"Velg en mal",preview:"Forh\u00e5ndsvisning",warning:"Advarsel: Utskifting av en mal med en annen kan f\u00f8re til at data g\u00e5r tapt.","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"januar,februar,mars,april,mai,juni,juli,august,september,oktober,november,desember","months_short":"jan,feb,mar,apr,mai,jun,jul,aug,sep,okt,nov,des","day_long":"s\u00f8ndag,mandag,tirsdag,onsdag,torsdag,fredag,l\u00f8rdag,s\u00f8ndag","day_short":"s\u00f8n,man,tir,ons,tor,fre,l\u00f8r,s\u00f8n"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/nl_dlg.js b/program/js/tiny_mce/plugins/template/langs/nl_dlg.js
deleted file mode 100644
index acd330419..000000000
--- a/program/js/tiny_mce/plugins/template/langs/nl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nl.template_dlg',{title:"Sjablonen",label:"Sjabloon","desc_label":"Beschrijving",desc:"Voorgedefinieerd sjabloon invoegen",select:"Selecteer een sjabloon",preview:"Voorbeeld",warning:"Waarschuwing: het bijwerken van een sjabloon met een andere kan het verlies van informatie tot gevolg hebben.","mdate_format":"%d-%m-%Y %H:%M:%S","cdate_format":"%d-%m-%Y %H:%M:%S","months_long":"Januari,Februari,Maart,April,Mei,Juni,Juli,Augustus,September,Oktober,November,December","months_short":"Jan,Feb,Mar,Apr,Mei,Jun,Jul,Aug,Sep,Okt,Nov,Dec","day_long":"Zondag,Maandag,Dinsdag,Woensdag,Donderdag,Vrijdag,Zaterdag,Zondag","day_short":"zo,ma,di,wo,do,vr,za,zo"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/nn_dlg.js b/program/js/tiny_mce/plugins/template/langs/nn_dlg.js
deleted file mode 100644
index 8900919a2..000000000
--- a/program/js/tiny_mce/plugins/template/langs/nn_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nn.template_dlg',{title:"Malar",label:"Mal","desc_label":"Omtale",desc:"Set inn f\u00f8rehandsdefinert malinnhald",select:"Vel ein mal",preview:"Sj\u00e5 f\u00f8rebels utkast",warning:"\u00c5tvaring: Utskifting av ein mal med ein annen kan f\u00f8re til at data g\u00e5r tapt.","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"januar,februar,mars,april,mai,juni,juli,august,september,oktober,november,desember","months_short":"jan,feb,mar,apr,mai,jun,jul,aug,sep,okt,nov,des","day_long":"sundag,mandag,tirsdag,onsdag,torsdag,fredag,laurdag,sundag","day_short":"sun,man,tir,ons,tor,fre,l\u00f8r,sun"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/pl_dlg.js b/program/js/tiny_mce/plugins/template/langs/pl_dlg.js
deleted file mode 100644
index 82fbb64c5..000000000
--- a/program/js/tiny_mce/plugins/template/langs/pl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('pl.template_dlg',{title:"Szablony",label:"Szablon","desc_label":"Opis",desc:"Wstaw tre\u015b\u0107 szablonu",select:"Wybierz szablon",preview:"Podgl\u0105d",warning:"Uwaga: Aktualizacja szablon\u00f3w mo\u017ce spowodowa\u0107 utrat\u0119 danych.","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"Stycze\u0144,Luty,Marzec.Kwiecie\u0144,Maj,Czerwiec,Lipiec,Sierpie\u0144,Wrzesie\u0144,Pa\u017adziernik,Listopad,Grudzie\u0144","months_short":"Sty,Lut,Mar,Kwi,Maj,Cze,Lip,Sie,Wrz,Pa\u017a,Lis,Gru","day_long":"Niedziela,Poniedzia\u0142ek,Wtorek,\u015aroda,Czwartek,Pi\u0105tek,Sobota,Niedziela","day_short":"N,Pn,Wt,\u015ar,Cz,Pt,So,N"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/ps_dlg.js b/program/js/tiny_mce/plugins/template/langs/ps_dlg.js
deleted file mode 100644
index 06d005e62..000000000
--- a/program/js/tiny_mce/plugins/template/langs/ps_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ps.template_dlg',{title:"Templates",label:"Template","desc_label":"Description",desc:"Insert predefined template content",select:"Select a template",preview:"Preview",warning:"Warning: Updating a template with a different one may cause data loss.","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"January,February,March,April,May,June,July,August,September,October,November,December","months_short":"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec","day_long":"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday","day_short":"Sun,Mon,Tue,Wed,Thu,Fri,Sat,Sun"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/pt_dlg.js b/program/js/tiny_mce/plugins/template/langs/pt_dlg.js
deleted file mode 100644
index bc4101435..000000000
--- a/program/js/tiny_mce/plugins/template/langs/pt_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('pt.template_dlg',{title:"Templates",label:"Template","desc_label":"Descri\u00e7\u00e3o",desc:"Inserir template",select:"Selecionar template",preview:"Pr\u00e9-Visualiza\u00e7\u00e3o",warning:"Aten\u00e7\u00e3o: Atualizar um template com outro pode causar a perda de dados.","mdate_format":"%d-%m-%Y %H:%M:%S","cdate_format":"%d-%m-%Y %H:%M:%S","months_long":"Janeiro,Fevereiro,Mar\u00e7o,Abril,Maio,Junho,Julho,Agosto,Setembro,Outubro,Novembro,Dezembro","months_short":"Jan,Fev,Mar,Abr,Mai,Jun,Jul,Ago,Set,Out,Nov,Dez","day_long":"Domingo,Segunda-feira,Ter\u00e7a-feira,Quarta-feira,Quinta-feira,Sexta-feira,S\u00e1bado,Domingo","day_short":"Dom,Seg,Ter,Qua,Qui,Sex,Sab,Dom"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/ro_dlg.js b/program/js/tiny_mce/plugins/template/langs/ro_dlg.js
deleted file mode 100644
index c326651aa..000000000
--- a/program/js/tiny_mce/plugins/template/langs/ro_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ro.template_dlg',{title:"\u0218abloane",label:"\u0218ablon","desc_label":"Descriere",desc:"Insereaz\u0103 \u0219ablon",select:"Selecteaz\u0103 \u0219ablon",preview:"Previzualizare",warning:"Aten\u0163ie: Schimbarea \u0219ablonului poate provoca pierderi de date","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"Ianuarie,Februarie,Martie,Aprilie,Mai,Iunie,Iulie,August,Septembrie,Octombrie,Noiembrie,Decembrie","months_short":"Ian,Feb,Mar,Apr,Mai,Iun,Iul,Aug,Sep,Oct,Noi,Dec","day_long":"Duminic\u0103,Luni,Mar\u021bi,Miercuri,Joi,Vineri,S\u00e2mb\u0103t\u0103,Duminic\u0103","day_short":"Dum,Lun,Mar,Mie,Joi,Vin,S\u00e2m,Dum"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/ru_dlg.js b/program/js/tiny_mce/plugins/template/langs/ru_dlg.js
deleted file mode 100644
index 86d2137f5..000000000
--- a/program/js/tiny_mce/plugins/template/langs/ru_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ru.template_dlg',{title:"\u0428\u0430\u0431\u043b\u043e\u043d\u044b",label:"\u0428\u0430\u0431\u043b\u043e\u043d","desc_label":"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435",desc:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d",select:"\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0448\u0430\u0431\u043b\u043e\u043d",preview:"\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440",warning:"\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u043f\u043e\u0442\u0435\u0440\u044f\u043c \u0434\u0430\u043d\u043d\u044b\u0445/","mdate_format":"%Y.%m.%d %H:%M:%S","cdate_format":"%Y.%m.%d %H:%M:%S","months_long":"\u044f\u043d\u0432\u0430\u0440\u044c,\u0444\u0435\u0432\u0440\u0430\u043b\u044c,\u043c\u0430\u0440\u0442,\u0430\u043f\u0440\u0435\u043b\u044c,\u043c\u0430\u0439,\u0438\u044e\u043d\u044c,\u0438\u044e\u043b\u044c,\u0430\u0432\u0433\u0443\u0441\u0442,\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c,\u043e\u043a\u0442\u044f\u0431\u0440\u044c,\u043d\u043e\u044f\u0431\u0440\u044c,\u0434\u0435\u043a\u0430\u0431\u0440\u044c","months_short":"\u044f\u043d\u0432,\u0444\u0435\u0432,\u043c\u0430\u0440\u0442,\u0430\u043f\u0440,\u043c\u0430\u0439,\u0438\u044e\u043d\u044c,\u0438\u044e\u043b\u044c,\u0430\u0432\u0433,\u0441\u0435\u043d,\u043e\u043a\u0442,\u043d\u043e\u044f,\u0434\u0435\u043a","day_long":"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435,\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a,\u0432\u0442\u043e\u0440\u043d\u0438\u043a,\u0441\u0440\u0435\u0434\u0430,\u0447\u0435\u0442\u0432\u0435\u0440\u0433,\u043f\u044f\u0442\u043d\u0438\u0446\u0443,\u0441\u0443\u0431\u0431\u043e\u0442\u0430,\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435","day_short":"\u0432\u0441,\u043f\u043d,\u0432\u0442,\u0441\u0440,\u0447\u0442,\u043f\u0442,\u0441\u0431,\u0432\u0441"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/si_dlg.js b/program/js/tiny_mce/plugins/template/langs/si_dlg.js
deleted file mode 100644
index 727d66d13..000000000
--- a/program/js/tiny_mce/plugins/template/langs/si_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('si.template_dlg',{title:"Templates",label:"Template","desc_label":"Description",desc:"Insert predefined template content",select:"Select a template",preview:"Preview",warning:"Warning: Updating a template with a different one may cause data loss.","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"January,February,March,April,May,June,July,August,September,October,November,December","months_short":"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec","day_long":"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday","day_short":"Sun,Mon,Tue,Wed,Thu,Fri,Sat,Sun"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/sk_dlg.js b/program/js/tiny_mce/plugins/template/langs/sk_dlg.js
deleted file mode 100644
index a6ce09c93..000000000
--- a/program/js/tiny_mce/plugins/template/langs/sk_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sk.template_dlg',{title:"\u0160abl\u00f3ny",label:"\u0160abl\u00f3na","desc_label":"Popis",desc:"Vlo\u017ei\u0165 preddefinovan\u00fd obsah zo \u0161abl\u00f3ny",select:"Vyber \u0161abl\u00f3nu",preview:"N\u00e1h\u013ead",warning:"Upozornenie: Aktualiz\u00e1cia \u0161abl\u00f3ny inou, sp\u00f4sob\u00ed stratu d\u00e1t.","mdate_format":"%d.%m.%Y %H:%M:%S","cdate_format":"%d.%m.%Y %H:%M:%S","months_long":"Janu\u00e1r,Febru\u00e1r,Marec,Apr\u00edl,M\u00e1j,J\u00fan,J\u00fal,August,September,Okt\u00f3ber,November,December","months_short":"Jan,Feb,Mar,Apr,M\u00e1j,J\u00fan,J\u00fal,Aug,Sep,Okt,Nov,Dec","day_long":"Nede\u013ea,Pondelok,Utorok,Streda,\u0160tvrtok,Piatok,Sobota,Nede\u013ea","day_short":"Ne,Po,Ut,St,\u0160t,Pi,So,Ne"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/sl_dlg.js b/program/js/tiny_mce/plugins/template/langs/sl_dlg.js
deleted file mode 100644
index 8c08beb80..000000000
--- a/program/js/tiny_mce/plugins/template/langs/sl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sl.template_dlg',{title:"Predloge",label:"Predloga","desc_label":"Opis",desc:"Vstavi pripravljeno vsebino predloge",select:"Izberite predlogo",preview:"Predogled",warning:"Opozorilo: posodabljanje predloge lahko pripelje od izgube podatkov.","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"januar,februar,marec,april,maj,junij,julij,avgust,september,oktober,november,december","months_short":"jan,feb,mar,apr,maj,jun,jul,avg,sep,okt,nov,dec","day_long":"nedelja,ponedeljek,torek,sreda,\u010detrtek,petek,sobota,nedelja","day_short":"ned,pon,tor,sre,\u010det,pet,sob,ned"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/sq_dlg.js b/program/js/tiny_mce/plugins/template/langs/sq_dlg.js
deleted file mode 100644
index 80392164e..000000000
--- a/program/js/tiny_mce/plugins/template/langs/sq_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sq.template_dlg',{title:"Shabllonet",label:"Shabllon","desc_label":"P\u00ebrshkrimi",desc:"Fut p\u00ebrmbajtje shabllon",select:"Zgjidh nj\u00eb shabllon",preview:"Paraqitje",warning:"Kujdes: N\u00ebse rifreskoni nj\u00eb shabllon me nj\u00eb tjeter, mund t\u00eb humbisni t\u00eb dh\u00ebnat.","mdate_format":"%d-%m-%Y %H:%M:%S","cdate_format":"%d-%m-%Y %H:%M:%S","months_long":"Janar,Shkurt,Mars,Prill,Maj,Qershor,Korrik,Gusht,Shtator,Tetor,N\u00ebntor,Dhjetor","months_short":"Jan,Shk,Mar,Pri,Maj,Qer,Kor,Gus,Sht,Tet,N\u00ebn,Dhj","day_long":"E Djel\u00eb,E H\u00ebn\u00eb,E Mart\u00eb,E M\u00ebrkur\u00eb,E Enjte,E Premte,E Shtun\u00eb,E Djel\u00eb","day_short":"Dje,H\u00ebn,Mar,M\u00ebr,Enj,Pre,Sht,Dje"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/sr_dlg.js b/program/js/tiny_mce/plugins/template/langs/sr_dlg.js
deleted file mode 100644
index d50032d5e..000000000
--- a/program/js/tiny_mce/plugins/template/langs/sr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sr.template_dlg',{title:"\u0160abloni",label:"\u0160ablon","desc_label":"Opis",desc:"Umetni predefinisani sadr\u017eaj \u0161ablona",select:"Odaberi \u0161ablon",preview:"Preliminarni prikaz",warning:"Upozorenje: A\u017euriranje \u0161ablona druga\u010dijim \u0161ablonom mo\u017ee da dovede do gubitka podataka.","mdate_format":"%d.%m.%Y %H:%M:%S","cdate_format":"%d.%m.%Y %H:%M:%S","months_long":"januar,februar,mart,april,maj,juni,juli,avgust,septembar,oktobar,novembar,decembar","months_short":"jan,feb,mar,apr,maj,jun,jul,avg,sep,okt,nov,dec","day_long":"nedelja,ponedeljak,utorak,sreda,\u010detvrtak,petak,subota,nedelja","day_short":"ned,pon,uto,sri,\u010det,pet,sub,ned"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/sv_dlg.js b/program/js/tiny_mce/plugins/template/langs/sv_dlg.js
deleted file mode 100644
index add47e87f..000000000
--- a/program/js/tiny_mce/plugins/template/langs/sv_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sv.template_dlg',{title:"Mallar",label:"Mall","desc_label":"Beskrivning",desc:"Infoga en f\u00e4rdig mall",select:"V\u00e4lj en mall",preview:"F\u00f6rhandsgranska",warning:"Varning: Uppdaterar en mall med en ny kan inneb\u00e4ra att data f\u00f6rsvinner.","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"Januari,Februari,Mars,April,Maj,Juni,Juli,Augusti,September,Oktober,November,December","months_short":"Jan,Feb,Mar,Apr,Maj,Jun,Jul,Aug,Sep,Okt,Nov,Dec","day_long":"S\u00f6ndag,M\u00e5ndag,Tisdag,Onsdag,Torsdag,Fredag,L\u00f6rdag,S\u00f6ndag","day_short":"S\u00f6n,M\u00e5n,Tis,Ons,Tors,Fre,L\u00f6r,S\u00f6n"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/ta_dlg.js b/program/js/tiny_mce/plugins/template/langs/ta_dlg.js
deleted file mode 100644
index aae601780..000000000
--- a/program/js/tiny_mce/plugins/template/langs/ta_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ta.template_dlg',{title:"Templates",label:"Template","desc_label":"Description",desc:"Insert predefined template content",select:"Select a template",preview:"Preview",warning:"Warning: Updating a template with a different one may cause data loss.","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"January,February,March,April,May,June,July,August,September,October,November,December","months_short":"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec","day_long":"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday","day_short":"Sun,Mon,Tue,Wed,Thu,Fri,Sat,Sun"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/th_dlg.js b/program/js/tiny_mce/plugins/template/langs/th_dlg.js
deleted file mode 100644
index 97ce1d0a8..000000000
--- a/program/js/tiny_mce/plugins/template/langs/th_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('th.template_dlg',{title:"\u0e41\u0e21\u0e48\u0e41\u0e1a\u0e1a\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23",label:"\u0e41\u0e21\u0e48\u0e41\u0e1a\u0e1a\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23","desc_label":"\u0e23\u0e32\u0e22\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14",desc:"\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e41\u0e21\u0e48\u0e41\u0e1a\u0e1a\u0e40\u0e2d\u0e01\u0e2a\u0e32",select:"\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e41\u0e21\u0e48\u0e41\u0e1a\u0e1a\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23",preview:"\u0e14\u0e39\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07",warning:"\u0e04\u0e33\u0e40\u0e15\u0e37\u0e2d\u0e19: \u0e01\u0e32\u0e23\u0e1b\u0e23\u0e31\u0e1a\u0e1b\u0e23\u0e38\u0e07\u0e41\u0e21\u0e48\u0e41\u0e1a\u0e1a\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e17\u0e35\u0e48\u0e41\u0e15\u0e01\u0e15\u0e48\u0e32\u0e07\u0e01\u0e31\u0e19\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e2d\u0e32\u0e08\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e39\u0e0d\u0e2b\u0e32\u0e22","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"\u0e21\u0e01\u0e23\u0e32\u0e04\u0e21,\u0e01\u0e38\u0e21\u0e20\u0e32\u0e1e\u0e31\u0e19\u0e18\u0e4c,\u0e21\u0e35\u0e19\u0e32\u0e04\u0e21,\u0e40\u0e21\u0e29\u0e32\u0e22\u0e19,\u0e1e\u0e24\u0e29\u0e20\u0e32\u0e04\u0e21,\u0e21\u0e34\u0e16\u0e38\u0e19\u0e32\u0e22\u0e19,\u0e01\u0e23\u0e01\u0e0e\u0e32\u0e04\u0e21,\u0e2a\u0e34\u0e07\u0e2b\u0e32\u0e04\u0e21,\u0e01\u0e31\u0e19\u0e22\u0e32\u0e22\u0e19,\u0e15\u0e38\u0e25\u0e32\u0e04\u0e21,\u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32\u0e22\u0e19,\u0e18\u0e31\u0e19\u0e27\u0e32\u0e04\u0e21","months_short":"\u0e21.\u0e04.,\u0e01.\u0e1e.,\u0e21\u0e35.\u0e04.,\u0e40\u0e21.\u0e22.,\u0e1e.\u0e04.,\u0e21\u0e34.\u0e22.,\u0e01.\u0e04.,\u0e2a.\u0e04.,\u0e01.\u0e22.,\u0e15.\u0e04.,\u0e1e.\u0e22.,\u0e18.\u0e04.","day_long":"\u0e27\u0e31\u0e19\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c,\u0e27\u0e31\u0e19\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c,\u0e27\u0e31\u0e19\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23,\u0e27\u0e31\u0e19\u0e1e\u0e38\u0e18,\u0e27\u0e31\u0e19\u0e1e\u0e24\u0e2b\u0e31\u0e2a\u0e1a\u0e14\u0e35,\u0e27\u0e31\u0e19\u0e28\u0e38\u0e01\u0e23\u0e4c,\u0e27\u0e31\u0e19\u0e40\u0e2a\u0e32\u0e23\u0e4c,\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c","day_short":"\u0e2d\u0e32,\u0e08,\u0e2d,\u0e1e,\u0e1e\u0e24,\u0e28,\u0e2a,\u0e2d\u0e32"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/tr_dlg.js b/program/js/tiny_mce/plugins/template/langs/tr_dlg.js
deleted file mode 100644
index dfa9f2d9d..000000000
--- a/program/js/tiny_mce/plugins/template/langs/tr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('tr.template_dlg',{title:"\u015eablonlar",label:"\u015eablon","desc_label":"A\u00e7\u0131klama",desc:"\u00d6ntan\u0131ml\u0131 i\u00e7erik \u015fablonu kullan",select:"\u015eablonu se\u00e7",preview:"\u00d6nizleme",warning:"Uyar\u0131: Bir \u015fablonu bir di\u011feriyle g\u00fcncellemek veri kayb\u0131na yol a\u00e7abilir.","mdate_format":"%d-%m-%Y %H:%M:%S","cdate_format":"%d-%m-%Y %H:%M:%S","months_long":"Ocak,\u015eubat,Mart,Nisan,May\u0131s,Haziran,Temmuz,A\u011fustos,Eyl\u00fcl,Ekim,Kas\u0131m,Aral\u0131k","months_short":"Oca,\u015eub,Mar,Nis,May,Haz,Tem,A\u011fu,Eyl,Eki,Kas,Ara","day_long":"Pazar,Pazartesi,Sal\u0131,\u00c7ar\u015famba,Per\u015fembe,Cuma,Cumartesi","day_short":"Paz,Pzt,Sal,\u00c7r\u015f,Per,Cum,Cts"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/uk_dlg.js b/program/js/tiny_mce/plugins/template/langs/uk_dlg.js
deleted file mode 100644
index a457122eb..000000000
--- a/program/js/tiny_mce/plugins/template/langs/uk_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('uk.template_dlg',{title:"\u0428\u0430\u0431\u043b\u043e\u043d\u0438",label:"\u0428\u0430\u0431\u043b\u043e\u043d","desc_label":"\u041e\u043f\u0438\u0441",desc:"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u043d\u0438\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442",select:"\u0412\u0438\u0431\u0435\u0440\u0456\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d",preview:"\u041f\u0435\u0440\u0435\u0433\u043b\u044f\u0434",warning:"\u0423\u0432\u0430\u0433\u0430: \u043e\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u043d\u0430 \u0456\u043d\u0448\u0438\u0439 \u043c\u043e\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u0434\u043e \u0432\u0442\u0440\u0430\u0442 \u0434\u0430\u043d\u0438\u0445.","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"\u0421\u0456\u0447\u0435\u043d\u044c,\u041b\u044e\u0442\u0438\u0439,\u0411\u0435\u0440\u0435\u0437\u0435\u043d\u044c,\u041a\u0432\u0456\u0442\u0435\u043d\u044c,\u0422\u0440\u0430\u0432\u0435\u043d\u044c,\u0427\u0435\u0440\u0432\u0435\u043d\u044c,\u041b\u0438\u043f\u0435\u043d\u044c,\u0421\u0435\u0440\u043f\u0435\u043d\u044c,\u0412\u0435\u0440\u0435\u0441\u0435\u043d\u044c,\u0416\u043e\u0432\u0442\u0435\u043d\u044c,\u041b\u0438\u0441\u0442\u043e\u043f\u0430\u0434,\u0413\u0440\u0443\u0434\u0435\u043d\u044c","months_short":"\u0421\u0456\u0447,\u041b\u044e\u0442,\u0411\u0435\u0440,\u041a\u0432\u0456,\u0422\u0440\u0430,\u0427\u0435\u0440,\u041b\u0438\u043f,\u0421\u0435\u0440,\u0412\u0435\u0440,\u0416\u043e\u0432,\u041b\u0438\u0441,\u0413\u0440\u0443","day_long":"\u041d\u0435\u0434\u0456\u043b\u044f,\u041f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a,\u0412\u0456\u0432\u0442\u043e\u0440\u043e\u043a,\u0421\u0435\u0440\u0435\u0434\u0430,\u0427\u0435\u0442\u0432\u0435\u0440,\u041f\'\u044f\u0442\u043d\u0438\u0446\u044f,\u0421\u0443\u0431\u043e\u0442\u0430,\u041d\u0435\u0434\u0456\u043b\u044f","day_short":"\u041d\u0434,\u041f\u043d,\u0412\u0442,\u0421\u0440,\u0427\u0442,\u041f\u0442,\u0421\u0431,\u041d\u0434"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/vi_dlg.js b/program/js/tiny_mce/plugins/template/langs/vi_dlg.js
deleted file mode 100644
index 1c19becd1..000000000
--- a/program/js/tiny_mce/plugins/template/langs/vi_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('vi.template_dlg',{title:"M\u1eabu",label:"M\u1eabu","desc_label":"M\u00f4 t\u1ea3",desc:"Ch\u00e8n m\u1ed9t n\u1ed9i dung m\u1eabu \u0111\u1ecbnh ngh\u0129a tr\u01b0\u1edbc",select:"Ch\u1ecdn m\u1ed9t m\u1eabu",preview:"Xem tr\u01b0\u1edbc",warning:"C\u1ea3nh b\u00e1o: C\u1eadp nh\u1eadt m\u1ed9t m\u1eabu v\u1edbi m\u1ed9t s\u1ef1 sai kh\u00e1c c\u00f3 th\u1ec3 l\u00e0m m\u1ea5t d\u1eef li\u1ec7u.","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"Th\u00e1ng M\u1ed9t,Th\u00e1ng Hai,Th\u00e1ng Ba,Th\u00e1ng T\u01b0,Th\u00e1ng N\u0103m,Th\u00e1ng S\u00e1u,Th\u00e1ng B\u1ea3y,Th\u00e1ng T\u00e1m,Th\u00e1ng Ch\u00edn,Th\u00e1ng M\u01b0\u1eddi,Th\u00e1ng M\u01b0\u1eddi M\u1ed9t,Th\u00e1ng M\u01b0\u1eddi Hai","months_short":"Thg1,Thg2,Thg3,Thg4,Thg5,Thg6,Thg7,Thg8,Thg9,Th10,Th11,Th12","day_long":"Ch\u1ee7 Nh\u1eadt,Th\u1ee9 Hai,Th\u1ee9 Ba,Th\u1ee9 T\u01b0,Th\u1ee9 N\u0103m,Th\u1ee9 S\u00e1u,Th\u1ee9 B\u1ea3y,Ch\u1ee7 Nh\u1eadt","day_short":"CN,T2,T3,T4,T5,T6,T7,CN"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/zh-cn_dlg.js b/program/js/tiny_mce/plugins/template/langs/zh-cn_dlg.js
deleted file mode 100644
index a6217b9b7..000000000
--- a/program/js/tiny_mce/plugins/template/langs/zh-cn_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('zh-cn.template_dlg',{title:"\u6a21\u677f",label:"\u6a21\u677f","desc_label":"\u8bf4\u660e",desc:"\u63d2\u5165\u9884\u8bbe\u7684\u6a21\u677f\u5185\u5bb9",select:"\u9009\u62e9\u6a21\u677f",preview:"\u9884\u89c8",warning:"\u8b66\u544a\uff1a\u66f4\u65b0\u6a21\u677f\u53ef\u80fd\u5bfc\u81f4\u6570\u636e\u4e22\u5931\u3002","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"\u4e00\u6708,\u4e8c\u6708,\u4e09\u6708,\u56db\u6708,\u4e94\u6708,\u516d\u6708,\u4e03\u6708,\u516b\u6708,\u4e5d\u6708,\u5341\u6708,\u5341\u4e00\u6708,\u5341\u4e8c\u6708","months_short":"1\u6708,2\u6708,3\u6708,4\u6708,5\u6708,6\u6708,7\u6708,8\u6708,9\u6708,10\u6708,11\u6708,12\u6708","day_long":"\u661f\u671f\u65e5,\u661f\u671f\u4e00,\u661f\u671f\u4e8c,\u661f\u671f\u4e09,\u661f\u671f\u56db,\u661f\u671f\u4e94,\u661f\u671f\u516d,\u661f\u671f\u65e5","day_short":"\u5468\u65e5,\u5468\u4e00,\u5468\u4e8c,\u5468\u4e09,\u5468\u56db,\u5468\u4e94,\u5468\u516d,\u5468\u65e5"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/langs/zh-tw_dlg.js b/program/js/tiny_mce/plugins/template/langs/zh-tw_dlg.js
deleted file mode 100644
index e86dd3d77..000000000
--- a/program/js/tiny_mce/plugins/template/langs/zh-tw_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('zh-tw.template_dlg',{title:"\u7248\u578b",label:"\u7248\u578b","desc_label":"\u8a3b\u89e3",desc:"\u5957\u7248\u7248\u578b\u7684\u5167\u5bb9",select:"\u9078\u4e00\u500b\u7248\u578b",preview:"\u9810\u89bd",warning:"\u66f4\u65b0\u7248\u578b\u53ef\u80fd\u6703\u628a\u4e4b\u524d\u7684\u8cc7\u6599\u5f04\u4e0d\u898b\u5594\uff01","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"\u4e00\u6708,\u4e8c\u6708,\u4e09\u6708,\u56db\u6708,\u4e94\u6708,\u516d\u6708,\u4e03\u6708,\u516b\u6708,\u4e5d\u6708,\u5341\u6708,\u5341\u4e00\u6708,\u5341\u4e8c\u6708","months_short":"\u4e00\u6708,\u4e8c\u6708,\u4e09\u6708,\u56db\u6708,\u4e94\u6708,\u516d\u6708,\u4e03\u6708,\u516b\u6708,\u4e5d\u6708,\u5341\u6708,\u5341\u4e00\u6708,\u5341\u4e8c\u6708","day_long":"\u661f\u671f\u4e00,\u661f\u671f\u4e8c,\u661f\u671f\u4e09,\u661f\u671f\u56db,\u661f\u671f\u4e94,\u661f\u671f\u516d,\u661f\u671f\u65e5","day_short":"\u9031\u4e00,\u9031\u4e8c,\u9031\u4e09,\u9031\u56db,\u9031\u4e94,\u9031\u516d,\u9031\u65e5"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/template/template.htm b/program/js/tiny_mce/plugins/template/template.htm
deleted file mode 100644
index b2182e632..000000000
--- a/program/js/tiny_mce/plugins/template/template.htm
+++ /dev/null
@@ -1,31 +0,0 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#template_dlg.title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="js/template.js"></script>
- <link href="css/template.css" rel="stylesheet" type="text/css" />
-</head>
-<body onresize="TemplateDialog.resize();">
- <form onsubmit="TemplateDialog.insert();return false;">
- <div id="frmbody">
- <div class="title">{#template_dlg.desc}</div>
- <div class="frmRow"><label for="tpath" title="{#template_dlg.select}">{#template_dlg.label}:</label>
- <select id="tpath" name="tpath" onchange="TemplateDialog.selectTemplate(this.options[this.selectedIndex].value, this.options[this.selectedIndex].text);" class="mceFocus">
- <option value="">{#template_dlg.select}...</option>
- </select>
- <span id="warning"></span></div>
- <div class="frmRow"><label for="tdesc">{#template_dlg.desc_label}:</label>
- <span id="tmpldesc"></span></div>
- <fieldset>
- <legend>{#template_dlg.preview}</legend>
- <iframe id="templatesrc" name="templatesrc" src="blank.htm" width="690" height="400" frameborder="0"></iframe>
- </fieldset>
- </div>
-
- <div class="mceActionPanel">
- <input type="submit" id="insert" name="insert" value="{#insert}" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
- </form>
-</body>
-</html>
diff --git a/program/js/tiny_mce/plugins/visualblocks/css/visualblocks.css b/program/js/tiny_mce/plugins/visualblocks/css/visualblocks.css
deleted file mode 100644
index 76bc92b50..000000000
--- a/program/js/tiny_mce/plugins/visualblocks/css/visualblocks.css
+++ /dev/null
@@ -1,21 +0,0 @@
-p, h1, h2, h3, h4, h5, h6, hgroup, aside, div, section, article, blockquote, address, pre, figure {display: block; padding-top: 10px; border: 1px dashed #BBB; background: transparent no-repeat}
-p, h1, h2, h3, h4, h5, h6, hgroup, aside, div, section, article, address, pre, figure {margin-left: 3px}
-section, article, address, hgroup, aside, figure {margin: 0 0 1em 3px}
-
-p {background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}
-h1 {background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}
-h2 {background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}
-h3 {background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}
-h4 {background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}
-h5 {background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}
-h6 {background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}
-div {background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}
-section {background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}
-article {background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}
-blockquote {background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}
-address {background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}
-pre {background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}
-hgroup {background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}
-aside {background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}
-figure {background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}
-figcaption {border: 1px dashed #BBB}
diff --git a/program/js/tiny_mce/plugins/visualblocks/editor_plugin.js b/program/js/tiny_mce/plugins/visualblocks/editor_plugin.js
deleted file mode 100644
index c65eaf2b4..000000000
--- a/program/js/tiny_mce/plugins/visualblocks/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.VisualBlocks",{init:function(a,b){var c;if(!window.NodeList){return}a.addCommand("mceVisualBlocks",function(){var e=a.dom,d;if(!c){c=e.uniqueId();d=e.create("link",{id:c,rel:"stylesheet",href:b+"/css/visualblocks.css"});a.getDoc().getElementsByTagName("head")[0].appendChild(d)}else{d=e.get(c);d.disabled=!d.disabled}a.controlManager.setActive("visualblocks",!d.disabled)});a.addButton("visualblocks",{title:"visualblocks.desc",cmd:"mceVisualBlocks"});a.onInit.add(function(){if(a.settings.visualblocks_default_state){a.execCommand("mceVisualBlocks",false,null,{skip_focus:true})}})},getInfo:function(){return{longname:"Visual blocks",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualblocks",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("visualblocks",tinymce.plugins.VisualBlocks)})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/visualblocks/editor_plugin_src.js b/program/js/tiny_mce/plugins/visualblocks/editor_plugin_src.js
deleted file mode 100644
index b9d2ab2e1..000000000
--- a/program/js/tiny_mce/plugins/visualblocks/editor_plugin_src.js
+++ /dev/null
@@ -1,63 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2012, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- tinymce.create('tinymce.plugins.VisualBlocks', {
- init : function(ed, url) {
- var cssId;
-
- // We don't support older browsers like IE6/7 and they don't provide prototypes for DOM objects
- if (!window.NodeList) {
- return;
- }
-
- ed.addCommand('mceVisualBlocks', function() {
- var dom = ed.dom, linkElm;
-
- if (!cssId) {
- cssId = dom.uniqueId();
- linkElm = dom.create('link', {
- id: cssId,
- rel : 'stylesheet',
- href : url + '/css/visualblocks.css'
- });
-
- ed.getDoc().getElementsByTagName('head')[0].appendChild(linkElm);
- } else {
- linkElm = dom.get(cssId);
- linkElm.disabled = !linkElm.disabled;
- }
-
- ed.controlManager.setActive('visualblocks', !linkElm.disabled);
- });
-
- ed.addButton('visualblocks', {title : 'visualblocks.desc', cmd : 'mceVisualBlocks'});
-
- ed.onInit.add(function() {
- if (ed.settings.visualblocks_default_state) {
- ed.execCommand('mceVisualBlocks', false, null, {skip_focus : true});
- }
- });
- },
-
- getInfo : function() {
- return {
- longname : 'Visual blocks',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualblocks',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('visualblocks', tinymce.plugins.VisualBlocks);
-})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/visualchars/editor_plugin.js b/program/js/tiny_mce/plugins/visualchars/editor_plugin.js
deleted file mode 100644
index 1a148e8b4..000000000
--- a/program/js/tiny_mce/plugins/visualchars/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.VisualChars",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceVisualChars",c._toggleVisualChars,c);a.addButton("visualchars",{title:"visualchars.desc",cmd:"mceVisualChars"});a.onBeforeGetContent.add(function(d,e){if(c.state&&e.format!="raw"&&!e.draft){c.state=true;c._toggleVisualChars(false)}})},getInfo:function(){return{longname:"Visual characters",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualchars",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_toggleVisualChars:function(m){var p=this,k=p.editor,a,g,j,n=k.getDoc(),o=k.getBody(),l,q=k.selection,e,c,f;p.state=!p.state;k.controlManager.setActive("visualchars",p.state);if(m){f=q.getBookmark()}if(p.state){a=[];tinymce.walk(o,function(b){if(b.nodeType==3&&b.nodeValue&&b.nodeValue.indexOf("\u00a0")!=-1){a.push(b)}},"childNodes");for(g=0;g<a.length;g++){l=a[g].nodeValue;l=l.replace(/(\u00a0)/g,'<span data-mce-bogus="1" class="mceItemHidden mceItemNbsp">$1</span>');c=k.dom.create("div",null,l);while(node=c.lastChild){k.dom.insertAfter(node,a[g])}k.dom.remove(a[g])}}else{a=k.dom.select("span.mceItemNbsp",o);for(g=a.length-1;g>=0;g--){k.dom.remove(a[g],1)}}q.moveToBookmark(f)}});tinymce.PluginManager.add("visualchars",tinymce.plugins.VisualChars)})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/visualchars/editor_plugin_src.js b/program/js/tiny_mce/plugins/visualchars/editor_plugin_src.js
deleted file mode 100644
index df985905b..000000000
--- a/program/js/tiny_mce/plugins/visualchars/editor_plugin_src.js
+++ /dev/null
@@ -1,83 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- tinymce.create('tinymce.plugins.VisualChars', {
- init : function(ed, url) {
- var t = this;
-
- t.editor = ed;
-
- // Register commands
- ed.addCommand('mceVisualChars', t._toggleVisualChars, t);
-
- // Register buttons
- ed.addButton('visualchars', {title : 'visualchars.desc', cmd : 'mceVisualChars'});
-
- ed.onBeforeGetContent.add(function(ed, o) {
- if (t.state && o.format != 'raw' && !o.draft) {
- t.state = true;
- t._toggleVisualChars(false);
- }
- });
- },
-
- getInfo : function() {
- return {
- longname : 'Visual characters',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualchars',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- },
-
- // Private methods
-
- _toggleVisualChars : function(bookmark) {
- var t = this, ed = t.editor, nl, i, h, d = ed.getDoc(), b = ed.getBody(), nv, s = ed.selection, bo, div, bm;
-
- t.state = !t.state;
- ed.controlManager.setActive('visualchars', t.state);
-
- if (bookmark)
- bm = s.getBookmark();
-
- if (t.state) {
- nl = [];
- tinymce.walk(b, function(n) {
- if (n.nodeType == 3 && n.nodeValue && n.nodeValue.indexOf('\u00a0') != -1)
- nl.push(n);
- }, 'childNodes');
-
- for (i = 0; i < nl.length; i++) {
- nv = nl[i].nodeValue;
- nv = nv.replace(/(\u00a0)/g, '<span data-mce-bogus="1" class="mceItemHidden mceItemNbsp">$1</span>');
-
- div = ed.dom.create('div', null, nv);
- while (node = div.lastChild)
- ed.dom.insertAfter(node, nl[i]);
-
- ed.dom.remove(nl[i]);
- }
- } else {
- nl = ed.dom.select('span.mceItemNbsp', b);
-
- for (i = nl.length - 1; i >= 0; i--)
- ed.dom.remove(nl[i], 1);
- }
-
- s.moveToBookmark(bm);
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('visualchars', tinymce.plugins.VisualChars);
-})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/wordcount/editor_plugin.js b/program/js/tiny_mce/plugins/wordcount/editor_plugin.js
deleted file mode 100644
index 42ece2092..000000000
--- a/program/js/tiny_mce/plugins/wordcount/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.WordCount",{block:0,id:null,countre:null,cleanre:null,init:function(c,d){var e=this,f=0,g=tinymce.VK;e.countre=c.getParam("wordcount_countregex",/[\w\u2019\'-]+/g);e.cleanre=c.getParam("wordcount_cleanregex",/[0-9.(),;:!?%#$?\'\"_+=\\\/-]*/g);e.update_rate=c.getParam("wordcount_update_rate",2000);e.update_on_delete=c.getParam("wordcount_update_on_delete",false);e.id=c.id+"-word-count";c.onPostRender.add(function(i,h){var j,k;k=i.getParam("wordcount_target_id");if(!k){j=tinymce.DOM.get(i.id+"_path_row");if(j){tinymce.DOM.add(j.parentNode,"div",{style:"float: right"},i.getLang("wordcount.words","Words: ")+'<span id="'+e.id+'">0</span>')}}else{tinymce.DOM.add(k,"span",{},'<span id="'+e.id+'">0</span>')}});c.onInit.add(function(h){h.selection.onSetContent.add(function(){e._count(h)});e._count(h)});c.onSetContent.add(function(h){e._count(h)});function b(h){return h!==f&&(h===g.ENTER||f===g.SPACEBAR||a(f))}function a(h){return h===g.DELETE||h===g.BACKSPACE}c.onKeyUp.add(function(h,i){if(b(i.keyCode)||e.update_on_delete&&a(i.keyCode)){e._count(h)}f=i.keyCode})},_getCount:function(c){var a=0;var b=c.getContent({format:"raw"});if(b){b=b.replace(/\.\.\./g," ");b=b.replace(/<.[^<>]*?>/g," ").replace(/&nbsp;|&#160;/gi," ");b=b.replace(/(\w+)(&.+?;)+(\w+)/,"$1$3").replace(/&.+?;/g," ");b=b.replace(this.cleanre,"");var d=b.match(this.countre);if(d){a=d.length}}return a},_count:function(a){var b=this;if(b.block){return}b.block=1;setTimeout(function(){if(!a.destroyed){var c=b._getCount(a);tinymce.DOM.setHTML(b.id,c.toString());setTimeout(function(){b.block=0},b.update_rate)}},1)},getInfo:function(){return{longname:"Word Count plugin",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/wordcount",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("wordcount",tinymce.plugins.WordCount)})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/wordcount/editor_plugin_src.js b/program/js/tiny_mce/plugins/wordcount/editor_plugin_src.js
deleted file mode 100644
index 34b265553..000000000
--- a/program/js/tiny_mce/plugins/wordcount/editor_plugin_src.js
+++ /dev/null
@@ -1,122 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- tinymce.create('tinymce.plugins.WordCount', {
- block : 0,
- id : null,
- countre : null,
- cleanre : null,
-
- init : function(ed, url) {
- var t = this, last = 0, VK = tinymce.VK;
-
- t.countre = ed.getParam('wordcount_countregex', /[\w\u2019\'-]+/g); // u2019 == &rsquo;
- t.cleanre = ed.getParam('wordcount_cleanregex', /[0-9.(),;:!?%#$?\'\"_+=\\\/-]*/g);
- t.update_rate = ed.getParam('wordcount_update_rate', 2000);
- t.update_on_delete = ed.getParam('wordcount_update_on_delete', false);
- t.id = ed.id + '-word-count';
-
- ed.onPostRender.add(function(ed, cm) {
- var row, id;
-
- // Add it to the specified id or the theme advanced path
- id = ed.getParam('wordcount_target_id');
- if (!id) {
- row = tinymce.DOM.get(ed.id + '_path_row');
-
- if (row)
- tinymce.DOM.add(row.parentNode, 'div', {'style': 'float: right'}, ed.getLang('wordcount.words', 'Words: ') + '<span id="' + t.id + '">0</span>');
- } else {
- tinymce.DOM.add(id, 'span', {}, '<span id="' + t.id + '">0</span>');
- }
- });
-
- ed.onInit.add(function(ed) {
- ed.selection.onSetContent.add(function() {
- t._count(ed);
- });
-
- t._count(ed);
- });
-
- ed.onSetContent.add(function(ed) {
- t._count(ed);
- });
-
- function checkKeys(key) {
- return key !== last && (key === VK.ENTER || last === VK.SPACEBAR || checkDelOrBksp(last));
- }
-
- function checkDelOrBksp(key) {
- return key === VK.DELETE || key === VK.BACKSPACE;
- }
-
- ed.onKeyUp.add(function(ed, e) {
- if (checkKeys(e.keyCode) || t.update_on_delete && checkDelOrBksp(e.keyCode)) {
- t._count(ed);
- }
-
- last = e.keyCode;
- });
- },
-
- _getCount : function(ed) {
- var tc = 0;
- var tx = ed.getContent({ format: 'raw' });
-
- if (tx) {
- tx = tx.replace(/\.\.\./g, ' '); // convert ellipses to spaces
- tx = tx.replace(/<.[^<>]*?>/g, ' ').replace(/&nbsp;|&#160;/gi, ' '); // remove html tags and space chars
-
- // deal with html entities
- tx = tx.replace(/(\w+)(&.+?;)+(\w+)/, "$1$3").replace(/&.+?;/g, ' ');
- tx = tx.replace(this.cleanre, ''); // remove numbers and punctuation
-
- var wordArray = tx.match(this.countre);
- if (wordArray) {
- tc = wordArray.length;
- }
- }
-
- return tc;
- },
-
- _count : function(ed) {
- var t = this;
-
- // Keep multiple calls from happening at the same time
- if (t.block)
- return;
-
- t.block = 1;
-
- setTimeout(function() {
- if (!ed.destroyed) {
- var tc = t._getCount(ed);
- tinymce.DOM.setHTML(t.id, tc.toString());
- setTimeout(function() {t.block = 0;}, t.update_rate);
- }
- }, 1);
- },
-
- getInfo: function() {
- return {
- longname : 'Word Count plugin',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/wordcount',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- tinymce.PluginManager.add('wordcount', tinymce.plugins.WordCount);
-})();
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/abbr.htm b/program/js/tiny_mce/plugins/xhtmlxtras/abbr.htm
deleted file mode 100644
index 30a894f7c..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/abbr.htm
+++ /dev/null
@@ -1,142 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#xhtmlxtras_dlg.title_abbr_element}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="../../utils/form_utils.js"></script>
- <script type="text/javascript" src="../../utils/editable_selects.js"></script>
- <script type="text/javascript" src="js/element_common.js"></script>
- <script type="text/javascript" src="js/abbr.js"></script>
- <link rel="stylesheet" type="text/css" href="css/popup.css" />
-</head>
-<body style="display: none" role="application" aria-labelledby="app_title">
-<span style="display:none;" id="app_title">{#xhtmlxtras_dlg.title_abbr_element}</span>
-<form onsubmit="insertAbbr();return false;" action="#">
- <div class="tabs">
- <ul>
- <li id="general_tab" class="current" aria-controls="general_panel"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.general_tab}</a></span></li>
- <!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.events_tab}</a></span></li> -->
- </ul>
- </div>
-
- <div class="panel_wrapper">
- <div id="general_panel" class="panel current">
- <fieldset>
- <legend>{#xhtmlxtras_dlg.fieldset_attrib_tab}</legend>
- <table role="presentation" border="0" cellpadding="0" cellspacing="4">
- <tr>
- <td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td>
- <td><input id="title" name="title" type="text" value="" class="field mceFocus" /></td>
- </tr>
- <tr>
- <td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td>
- <td><input id="id" name="id" type="text" value="" class="field" /></td>
- </tr>
- <tr>
- <td class="label"><label id="classlabel" for="class">{#xhtmlxtras_dlg.attribute_label_class}</label>:</td>
- <td>
- <select id="class" name="class" class="field mceEditableSelect">
- <option value="">{#not_set}</option>
- </select>
- </td>
- </tr>
- <tr>
- <td class="label"><label id="stylelabel" for="style">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td>
- <td><input id="style" name="style" type="text" value="" class="field" /></td>
- </tr>
- <tr>
- <td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td>
- <td>
- <select id="dir" name="dir" class="field">
- <option value="">{#not_set}</option>
- <option value="ltr">{#xhtmlxtras_dlg.attribute_option_ltr}</option>
- <option value="rtl">{#xhtmlxtras_dlg.attribute_option_rtl}</option>
- </select>
- </td>
- </tr>
- <tr>
- <td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td>
- <td>
- <input id="lang" name="lang" type="text" value="" class="field" />
- </td>
- </tr>
- </table>
- </fieldset>
- </div>
- <div id="events_panel" class="panel">
- <fieldset>
- <legend>{#xhtmlxtras_dlg.fieldset_events_tab}</legend>
-
- <table role="presentation" border="0" cellpadding="0" cellspacing="4">
- <tr>
- <td class="label"><label for="onfocus">onfocus</label>:</td>
- <td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onblur">onblur</label>:</td>
- <td><input id="onblur" name="onblur" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onclick">onclick</label>:</td>
- <td><input id="onclick" name="onclick" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="ondblclick">ondblclick</label>:</td>
- <td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmousedown">onmousedown</label>:</td>
- <td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmouseup">onmouseup</label>:</td>
- <td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmouseover">onmouseover</label>:</td>
- <td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmousemove">onmousemove</label>:</td>
- <td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmouseout">onmouseout</label>:</td>
- <td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onkeypress">onkeypress</label>:</td>
- <td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onkeydown">onkeydown</label>:</td>
- <td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onkeyup">onkeyup</label>:</td>
- <td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td>
- </tr>
- </table>
- </fieldset>
- </div>
- </div>
- <div class="mceActionPanel">
- <input type="submit" id="insert" name="insert" value="{#update}" />
- <input type="button" id="remove" name="remove" class="button" value="{#xhtmlxtras_dlg.remove}" onclick="removeAbbr();" style="display: none;" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
-</form>
-</body>
-</html>
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/acronym.htm b/program/js/tiny_mce/plugins/xhtmlxtras/acronym.htm
deleted file mode 100644
index c10934592..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/acronym.htm
+++ /dev/null
@@ -1,142 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#xhtmlxtras_dlg.title_acronym_element}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="../../utils/form_utils.js"></script>
- <script type="text/javascript" src="../../utils/editable_selects.js"></script>
- <script type="text/javascript" src="js/element_common.js"></script>
- <script type="text/javascript" src="js/acronym.js"></script>
- <link rel="stylesheet" type="text/css" href="css/popup.css" />
-</head>
-<body style="display: none" role="application" aria-labelledby="app_title">
-<span style="display:none;" id="app_title">{#xhtmlxtras_dlg.title_acronym_element}</span>
-<form onsubmit="insertAcronym();return false;" action="#">
- <div class="tabs">
- <ul>
- <li id="general_tab" class="current" aria-controls="general_panel"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.general_tab}</a></span></li>
- <!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.events_tab}</a></span></li> -->
- </ul>
- </div>
-
- <div class="panel_wrapper">
- <div id="general_panel" class="panel current">
- <fieldset>
- <legend>{#xhtmlxtras_dlg.fieldset_attrib_tab}</legend>
- <table role="presentation" border="0" cellpadding="0" cellspacing="4">
- <tr>
- <td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td>
- <td><input id="title" name="title" type="text" value="" class="field mceFocus" /></td>
- </tr>
- <tr>
- <td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td>
- <td><input id="id" name="id" type="text" value="" class="field" /></td>
- </tr>
- <tr>
- <td class="label"><label id="classlabel" for="class">{#xhtmlxtras_dlg.attribute_label_class}</label>:</td>
- <td>
- <select id="class" name="class" class="field mceEditableSelect">
- <option value="">{#not_set}</option>
- </select>
- </td>
- </tr>
- <tr>
- <td class="label"><label id="stylelabel" for="style">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td>
- <td><input id="style" name="style" type="text" value="" class="field" /></td>
- </tr>
- <tr>
- <td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td>
- <td>
- <select id="dir" name="dir" class="field">
- <option value="">{#not_set}</option>
- <option value="ltr">{#xhtmlxtras_dlg.attribute_option_ltr}</option>
- <option value="rtl">{#xhtmlxtras_dlg.attribute_option_rtl}</option>
- </select>
- </td>
- </tr>
- <tr>
- <td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td>
- <td>
- <input id="lang" name="lang" type="text" value="" class="field" />
- </td>
- </tr>
- </table>
- </fieldset>
- </div>
- <div id="events_panel" class="panel">
- <fieldset>
- <legend>{#xhtmlxtras_dlg.fieldset_events_tab}</legend>
-
- <table role="presentation" border="0" cellpadding="0" cellspacing="4">
- <tr>
- <td class="label"><label for="onfocus">onfocus</label>:</td>
- <td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onblur">onblur</label>:</td>
- <td><input id="onblur" name="onblur" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onclick">onclick</label>:</td>
- <td><input id="onclick" name="onclick" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="ondblclick">ondblclick</label>:</td>
- <td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmousedown">onmousedown</label>:</td>
- <td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmouseup">onmouseup</label>:</td>
- <td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmouseover">onmouseover</label>:</td>
- <td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmousemove">onmousemove</label>:</td>
- <td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmouseout">onmouseout</label>:</td>
- <td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onkeypress">onkeypress</label>:</td>
- <td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onkeydown">onkeydown</label>:</td>
- <td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onkeyup">onkeyup</label>:</td>
- <td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td>
- </tr>
- </table>
- </fieldset>
- </div>
- </div>
- <div class="mceActionPanel">
- <input type="submit" id="insert" name="insert" value="{#update}" />
- <input type="button" id="remove" name="remove" class="button" value="{#xhtmlxtras_dlg.remove}" onclick="removeAcronym();" style="display: none;" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
-</form>
-</body>
-</html>
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/attributes.htm b/program/js/tiny_mce/plugins/xhtmlxtras/attributes.htm
deleted file mode 100644
index e8d606a34..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/attributes.htm
+++ /dev/null
@@ -1,149 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#xhtmlxtras_dlg.attribs_title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="../../utils/editable_selects.js"></script>
- <script type="text/javascript" src="../../utils/form_utils.js"></script>
- <script type="text/javascript" src="js/attributes.js"></script>
- <link rel="stylesheet" type="text/css" href="css/attributes.css" />
-</head>
-<body style="display: none" role="application" aria-labelledby="app_title">
-<span style="display:none;" id="app_title">{#xhtmlxtras_dlg.attribs_title}</span>
-<form onsubmit="insertAction();return false;" action="#">
- <div class="tabs">
- <ul>
- <li id="general_tab" class="current" aria-controls="general_panel"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.attribute_attrib_tab}</a></span></li>
- <li id="events_tab" aria-controls="events_panel"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.attribute_events_tab}</a></span></li>
- </ul>
- </div>
-
- <div class="panel_wrapper">
- <div id="general_panel" class="panel current">
- <fieldset>
- <legend>{#xhtmlxtras_dlg.attribute_attrib_tab}</legend>
- <table role="presentation" border="0" cellpadding="0" cellspacing="4">
- <tr>
- <td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td>
- <td><input id="title" name="title" type="text" value="" class="mceFocus" /></td>
- </tr>
- <tr>
- <td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td>
- <td><input id="id" name="id" type="text" value="" /></td>
- </tr>
- <tr>
- <td><label id="classlabel" for="classlist">{#class_name}</label></td>
- <td>
- <select id="classlist" name="classlist" class="mceEditableSelect">
- <option value="" selected="selected">{#not_set}</option>
- </select>
- </td>
- </tr>
- <tr>
- <td class="label"><label id="stylelabel" for="style">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td>
- <td><input id="style" name="style" type="text" value="" /></td>
- </tr>
- <tr>
- <td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td>
- <td>
- <select id="dir" name="dir">
- <option value="">{#not_set}</option>
- <option value="ltr">{#xhtmlxtras_dlg.option_ltr}</option>
- <option value="rtl">{#xhtmlxtras_dlg.option_rtl}</option>
- </select>
- </td>
- </tr>
- <tr>
- <td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td>
- <td>
- <input id="lang" name="lang" type="text" value="" />
- </td>
- </tr>
- <tr>
- <td><label id="tabindexlabel" for="tabindex">{#xhtmlxtras_dlg.attribute_label_tabindex}</label></td>
- <td><input type="text" id="tabindex" name="tabindex" value="" /></td>
- </tr>
-
- <tr>
- <td><label id="accesskeylabel" for="accesskey">{#xhtmlxtras_dlg.attribute_label_accesskey}</label></td>
- <td><input type="text" id="accesskey" name="accesskey" value="" /></td>
- </tr>
- </table>
- </fieldset>
- </div>
- <div id="events_panel" class="panel">
- <fieldset>
- <legend>{#xhtmlxtras_dlg.attribute_events_tab}</legend>
-
- <table role="presentation" border="0" cellpadding="0" cellspacing="4">
- <tr>
- <td class="label"><label for="onfocus">onfocus</label>:</td>
- <td><input id="onfocus" name="onfocus" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onblur">onblur</label>:</td>
- <td><input id="onblur" name="onblur" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onclick">onclick</label>:</td>
- <td><input id="onclick" name="onclick" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="ondblclick">ondblclick</label>:</td>
- <td><input id="ondblclick" name="ondblclick" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmousedown">onmousedown</label>:</td>
- <td><input id="onmousedown" name="onmousedown" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmouseup">onmouseup</label>:</td>
- <td><input id="onmouseup" name="onmouseup" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmouseover">onmouseover</label>:</td>
- <td><input id="onmouseover" name="onmouseover" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmousemove">onmousemove</label>:</td>
- <td><input id="onmousemove" name="onmousemove" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmouseout">onmouseout</label>:</td>
- <td><input id="onmouseout" name="onmouseout" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onkeypress">onkeypress</label>:</td>
- <td><input id="onkeypress" name="onkeypress" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onkeydown">onkeydown</label>:</td>
- <td><input id="onkeydown" name="onkeydown" type="text" value="" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onkeyup">onkeyup</label>:</td>
- <td><input id="onkeyup" name="onkeyup" type="text" value="" /></td>
- </tr>
- </table>
- </fieldset>
- </div>
- </div>
- <div class="mceActionPanel">
- <input type="submit" id="insert" name="insert" value="{#insert}" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
-</form>
-</body>
-</html>
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/cite.htm b/program/js/tiny_mce/plugins/xhtmlxtras/cite.htm
deleted file mode 100644
index 0ac6bdb66..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/cite.htm
+++ /dev/null
@@ -1,142 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#xhtmlxtras_dlg.title_cite_element}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="../../utils/form_utils.js"></script>
- <script type="text/javascript" src="../../utils/editable_selects.js"></script>
- <script type="text/javascript" src="js/element_common.js"></script>
- <script type="text/javascript" src="js/cite.js"></script>
- <link rel="stylesheet" type="text/css" href="css/popup.css" />
-</head>
-<body style="display: none" role="application" aria-labelledby="app_title">
-<span style="display:none;" id="app_title">{#xhtmlxtras_dlg.title_cite_element}</span>
-<form onsubmit="insertCite();return false;" action="#">
- <div class="tabs">
- <ul>
- <li id="general_tab" class="current" aria-controls="general_panel"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.general_tab}</a></span></li>
- <!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.events_tab}</a></span></li> -->
- </ul>
- </div>
-
- <div class="panel_wrapper">
- <div id="general_panel" class="panel current">
- <fieldset>
- <legend>{#xhtmlxtras_dlg.fieldset_attrib_tab}</legend>
- <table role="presentation" border="0" cellpadding="0" cellspacing="4">
- <tr>
- <td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td>
- <td><input id="title" name="title" type="text" value="" class="field mceFocus" /></td>
- </tr>
- <tr>
- <td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td>
- <td><input id="id" name="id" type="text" value="" class="field" /></td>
- </tr>
- <tr>
- <td class="label"><label id="classlabel" for="class">{#xhtmlxtras_dlg.attribute_label_class}</label>:</td>
- <td>
- <select id="class" name="class" class="field mceEditableSelect">
- <option value="">{#not_set}</option>
- </select>
- </td>
- </tr>
- <tr>
- <td class="label"><label id="stylelabel" for="class">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td>
- <td><input id="style" name="style" type="text" value="" class="field" /></td>
- </tr>
- <tr>
- <td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td>
- <td>
- <select id="dir" name="dir" class="field">
- <option value="">{#not_set}</option>
- <option value="ltr">{#xhtmlxtras_dlg.attribute_option_ltr}</option>
- <option value="rtl">{#xhtmlxtras_dlg.attribute_option_rtl}</option>
- </select>
- </td>
- </tr>
- <tr>
- <td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td>
- <td>
- <input id="lang" name="lang" type="text" value="" class="field" />
- </td>
- </tr>
- </table>
- </fieldset>
- </div>
- <div id="events_panel" class="panel">
- <fieldset>
- <legend>{#xhtmlxtras_dlg.fieldset_events_tab}</legend>
-
- <table role="presentation" border="0" cellpadding="0" cellspacing="4">
- <tr>
- <td class="label"><label for="onfocus">onfocus</label>:</td>
- <td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onblur">onblur</label>:</td>
- <td><input id="onblur" name="onblur" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onclick">onclick</label>:</td>
- <td><input id="onclick" name="onclick" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="ondblclick">ondblclick</label>:</td>
- <td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmousedown">onmousedown</label>:</td>
- <td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmouseup">onmouseup</label>:</td>
- <td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmouseover">onmouseover</label>:</td>
- <td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmousemove">onmousemove</label>:</td>
- <td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmouseout">onmouseout</label>:</td>
- <td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onkeypress">onkeypress</label>:</td>
- <td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onkeydown">onkeydown</label>:</td>
- <td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onkeyup">onkeyup</label>:</td>
- <td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td>
- </tr>
- </table>
- </fieldset>
- </div>
- </div>
- <div class="mceActionPanel">
- <input type="submit" id="insert" name="insert" value="{#update}" />
- <input type="button" id="remove" name="remove" class="button" value="{#xhtmlxtras_dlg.remove}" onclick="removeCite();" style="display: none;" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
-</form>
-</body>
-</html>
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/css/attributes.css b/program/js/tiny_mce/plugins/xhtmlxtras/css/attributes.css
deleted file mode 100644
index 9a6a235c3..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/css/attributes.css
+++ /dev/null
@@ -1,11 +0,0 @@
-.panel_wrapper div.current {
- height: 290px;
-}
-
-#id, #style, #title, #dir, #hreflang, #lang, #classlist, #tabindex, #accesskey {
- width: 200px;
-}
-
-#events_panel input {
- width: 200px;
-}
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/css/popup.css b/program/js/tiny_mce/plugins/xhtmlxtras/css/popup.css
deleted file mode 100644
index e67114dba..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/css/popup.css
+++ /dev/null
@@ -1,9 +0,0 @@
-input.field, select.field {width:200px;}
-input.picker {width:179px; margin-left: 5px;}
-input.disabled {border-color:#F2F2F2;}
-img.picker {vertical-align:text-bottom; cursor:pointer;}
-h1 {padding: 0 0 5px 0;}
-.panel_wrapper div.current {height:160px;}
-#xhtmlxtrasdel .panel_wrapper div.current, #xhtmlxtrasins .panel_wrapper div.current {height: 230px;}
-a.browse span {display:block; width:20px; height:20px; background:url('../../../themes/advanced/img/icons.gif') -140px -20px;}
-#datetime {width:180px;}
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/del.htm b/program/js/tiny_mce/plugins/xhtmlxtras/del.htm
deleted file mode 100644
index 5f667510f..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/del.htm
+++ /dev/null
@@ -1,162 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#xhtmlxtras_dlg.title_del_element}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="../../utils/form_utils.js"></script>
- <script type="text/javascript" src="../../utils/editable_selects.js"></script>
- <script type="text/javascript" src="js/element_common.js"></script>
- <script type="text/javascript" src="js/del.js"></script>
- <link rel="stylesheet" type="text/css" href="css/popup.css" />
-</head>
-<body id="xhtmlxtrasins" style="display: none" role="application" aria-labelledby="app_title">
-<span style="display:none;" id="app_title">{#xhtmlxtras_dlg.title_del_element}</span>
-<form onsubmit="insertDel();return false;" action="#">
- <div class="tabs">
- <ul>
- <li id="general_tab" class="current" aria-controls="general_panel"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.general_tab}</a></span></li>
- <!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.events_tab}</a></span></li> -->
- </ul>
- </div>
-
- <div class="panel_wrapper">
- <div id="general_panel" class="panel current">
- <fieldset>
- <legend>{#xhtmlxtras_dlg.fieldset_general_tab}</legend>
- <table role="presentation" border="0" cellpadding="0" cellspacing="4">
- <tr>
- <td class="label"><label id="datetimelabel" for="datetime">{#xhtmlxtras_dlg.attribute_label_datetime}</label>:</td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input id="datetime" name="datetime" type="text" value="" maxlength="19" class="field mceFocus" /></td>
- <td><a href="javascript:insertDateTime('datetime');" onmousedown="return false;" class="browse" role="button" aria-labelledby="datetimelabel"><span class="datetime" title="{#xhtmlxtras_dlg.insert_date}"></span></a></td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td class="label"><label id="citelabel" for="cite">{#xhtmlxtras_dlg.attribute_label_cite}</label>:</td>
- <td><input id="cite" name="cite" type="text" value="" class="field" /></td>
- </tr>
- </table>
- </fieldset>
- <fieldset>
- <legend>{#xhtmlxtras_dlg.fieldset_attrib_tab}</legend>
- <table role="presentation" border="0" cellpadding="0" cellspacing="4">
- <tr>
- <td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td>
- <td><input id="title" name="title" type="text" value="" class="field" /></td>
- </tr>
- <tr>
- <td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td>
- <td><input id="id" name="id" type="text" value="" class="field" /></td>
- </tr>
- <tr>
- <td class="label"><label id="classlabel" for="class">{#xhtmlxtras_dlg.attribute_label_class}</label>:</td>
- <td>
- <select id="class" name="class" class="field mceEditableSelect">
- <option value="">{#not_set}</option>
- </select>
- </td>
- </tr>
- <tr>
- <td class="label"><label id="stylelabel" for="style">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td>
- <td><input id="style" name="style" type="text" value="" class="field" /></td>
- </tr>
- <tr>
- <td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td>
- <td>
- <select id="dir" name="dir" class="field">
- <option value="">{#not_set}</option>
- <option value="ltr">{#xhtmlxtras_dlg.attribute_option_ltr}</option>
- <option value="rtl">{#xhtmlxtras_dlg.attribute_option_rtl}</option>
- </select>
- </td>
- </tr>
- <tr>
- <td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td>
- <td>
- <input id="lang" name="lang" type="text" value="" class="field" />
- </td>
- </tr>
- </table>
- </fieldset>
- </div>
- <div id="events_panel" class="panel">
- <fieldset>
- <legend>{#xhtmlxtras_dlg.fieldset_events_tab}</legend>
-
- <table role="presentation" border="0" cellpadding="0" cellspacing="4">
- <tr>
- <td class="label"><label for="onfocus">onfocus</label>:</td>
- <td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onblur">onblur</label>:</td>
- <td><input id="onblur" name="onblur" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onclick">onclick</label>:</td>
- <td><input id="onclick" name="onclick" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="ondblclick">ondblclick</label>:</td>
- <td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmousedown">onmousedown</label>:</td>
- <td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmouseup">onmouseup</label>:</td>
- <td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmouseover">onmouseover</label>:</td>
- <td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmousemove">onmousemove</label>:</td>
- <td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmouseout">onmouseout</label>:</td>
- <td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onkeypress">onkeypress</label>:</td>
- <td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onkeydown">onkeydown</label>:</td>
- <td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onkeyup">onkeyup</label>:</td>
- <td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td>
- </tr>
- </table>
- </fieldset>
- </div>
- </div>
- <div class="mceActionPanel">
- <input type="submit" id="insert" name="insert" value="{#update}" />
- <input type="button" id="remove" name="remove" class="button" value="{#xhtmlxtras_dlg.remove}" onclick="removeDel();" style="display: none;" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
-</form>
-</body>
-</html>
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/editor_plugin.js b/program/js/tiny_mce/plugins/xhtmlxtras/editor_plugin.js
deleted file mode 100644
index 9b98a5154..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/editor_plugin.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){tinymce.create("tinymce.plugins.XHTMLXtrasPlugin",{init:function(a,b){a.addCommand("mceCite",function(){a.windowManager.open({file:b+"/cite.htm",width:350+parseInt(a.getLang("xhtmlxtras.cite_delta_width",0)),height:250+parseInt(a.getLang("xhtmlxtras.cite_delta_height",0)),inline:1},{plugin_url:b})});a.addCommand("mceAcronym",function(){a.windowManager.open({file:b+"/acronym.htm",width:350+parseInt(a.getLang("xhtmlxtras.acronym_delta_width",0)),height:250+parseInt(a.getLang("xhtmlxtras.acronym_delta_height",0)),inline:1},{plugin_url:b})});a.addCommand("mceAbbr",function(){a.windowManager.open({file:b+"/abbr.htm",width:350+parseInt(a.getLang("xhtmlxtras.abbr_delta_width",0)),height:250+parseInt(a.getLang("xhtmlxtras.abbr_delta_height",0)),inline:1},{plugin_url:b})});a.addCommand("mceDel",function(){a.windowManager.open({file:b+"/del.htm",width:340+parseInt(a.getLang("xhtmlxtras.del_delta_width",0)),height:310+parseInt(a.getLang("xhtmlxtras.del_delta_height",0)),inline:1},{plugin_url:b})});a.addCommand("mceIns",function(){a.windowManager.open({file:b+"/ins.htm",width:340+parseInt(a.getLang("xhtmlxtras.ins_delta_width",0)),height:310+parseInt(a.getLang("xhtmlxtras.ins_delta_height",0)),inline:1},{plugin_url:b})});a.addCommand("mceAttributes",function(){a.windowManager.open({file:b+"/attributes.htm",width:380+parseInt(a.getLang("xhtmlxtras.attr_delta_width",0)),height:370+parseInt(a.getLang("xhtmlxtras.attr_delta_height",0)),inline:1},{plugin_url:b})});a.addButton("cite",{title:"xhtmlxtras.cite_desc",cmd:"mceCite"});a.addButton("acronym",{title:"xhtmlxtras.acronym_desc",cmd:"mceAcronym"});a.addButton("abbr",{title:"xhtmlxtras.abbr_desc",cmd:"mceAbbr"});a.addButton("del",{title:"xhtmlxtras.del_desc",cmd:"mceDel"});a.addButton("ins",{title:"xhtmlxtras.ins_desc",cmd:"mceIns"});a.addButton("attribs",{title:"xhtmlxtras.attribs_desc",cmd:"mceAttributes"});a.onNodeChange.add(function(d,c,f,e){f=d.dom.getParent(f,"CITE,ACRONYM,ABBR,DEL,INS");c.setDisabled("cite",e);c.setDisabled("acronym",e);c.setDisabled("abbr",e);c.setDisabled("del",e);c.setDisabled("ins",e);c.setDisabled("attribs",f&&f.nodeName=="BODY");c.setActive("cite",0);c.setActive("acronym",0);c.setActive("abbr",0);c.setActive("del",0);c.setActive("ins",0);if(f){do{c.setDisabled(f.nodeName.toLowerCase(),0);c.setActive(f.nodeName.toLowerCase(),1)}while(f=f.parentNode)}});a.onPreInit.add(function(){a.dom.create("abbr")})},getInfo:function(){return{longname:"XHTML Xtras Plugin",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/xhtmlxtras",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("xhtmlxtras",tinymce.plugins.XHTMLXtrasPlugin)})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js b/program/js/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js
deleted file mode 100644
index f24057211..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js
+++ /dev/null
@@ -1,132 +0,0 @@
-/**
- * editor_plugin_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- tinymce.create('tinymce.plugins.XHTMLXtrasPlugin', {
- init : function(ed, url) {
- // Register commands
- ed.addCommand('mceCite', function() {
- ed.windowManager.open({
- file : url + '/cite.htm',
- width : 350 + parseInt(ed.getLang('xhtmlxtras.cite_delta_width', 0)),
- height : 250 + parseInt(ed.getLang('xhtmlxtras.cite_delta_height', 0)),
- inline : 1
- }, {
- plugin_url : url
- });
- });
-
- ed.addCommand('mceAcronym', function() {
- ed.windowManager.open({
- file : url + '/acronym.htm',
- width : 350 + parseInt(ed.getLang('xhtmlxtras.acronym_delta_width', 0)),
- height : 250 + parseInt(ed.getLang('xhtmlxtras.acronym_delta_height', 0)),
- inline : 1
- }, {
- plugin_url : url
- });
- });
-
- ed.addCommand('mceAbbr', function() {
- ed.windowManager.open({
- file : url + '/abbr.htm',
- width : 350 + parseInt(ed.getLang('xhtmlxtras.abbr_delta_width', 0)),
- height : 250 + parseInt(ed.getLang('xhtmlxtras.abbr_delta_height', 0)),
- inline : 1
- }, {
- plugin_url : url
- });
- });
-
- ed.addCommand('mceDel', function() {
- ed.windowManager.open({
- file : url + '/del.htm',
- width : 340 + parseInt(ed.getLang('xhtmlxtras.del_delta_width', 0)),
- height : 310 + parseInt(ed.getLang('xhtmlxtras.del_delta_height', 0)),
- inline : 1
- }, {
- plugin_url : url
- });
- });
-
- ed.addCommand('mceIns', function() {
- ed.windowManager.open({
- file : url + '/ins.htm',
- width : 340 + parseInt(ed.getLang('xhtmlxtras.ins_delta_width', 0)),
- height : 310 + parseInt(ed.getLang('xhtmlxtras.ins_delta_height', 0)),
- inline : 1
- }, {
- plugin_url : url
- });
- });
-
- ed.addCommand('mceAttributes', function() {
- ed.windowManager.open({
- file : url + '/attributes.htm',
- width : 380 + parseInt(ed.getLang('xhtmlxtras.attr_delta_width', 0)),
- height : 370 + parseInt(ed.getLang('xhtmlxtras.attr_delta_height', 0)),
- inline : 1
- }, {
- plugin_url : url
- });
- });
-
- // Register buttons
- ed.addButton('cite', {title : 'xhtmlxtras.cite_desc', cmd : 'mceCite'});
- ed.addButton('acronym', {title : 'xhtmlxtras.acronym_desc', cmd : 'mceAcronym'});
- ed.addButton('abbr', {title : 'xhtmlxtras.abbr_desc', cmd : 'mceAbbr'});
- ed.addButton('del', {title : 'xhtmlxtras.del_desc', cmd : 'mceDel'});
- ed.addButton('ins', {title : 'xhtmlxtras.ins_desc', cmd : 'mceIns'});
- ed.addButton('attribs', {title : 'xhtmlxtras.attribs_desc', cmd : 'mceAttributes'});
-
- ed.onNodeChange.add(function(ed, cm, n, co) {
- n = ed.dom.getParent(n, 'CITE,ACRONYM,ABBR,DEL,INS');
-
- cm.setDisabled('cite', co);
- cm.setDisabled('acronym', co);
- cm.setDisabled('abbr', co);
- cm.setDisabled('del', co);
- cm.setDisabled('ins', co);
- cm.setDisabled('attribs', n && n.nodeName == 'BODY');
- cm.setActive('cite', 0);
- cm.setActive('acronym', 0);
- cm.setActive('abbr', 0);
- cm.setActive('del', 0);
- cm.setActive('ins', 0);
-
- // Activate all
- if (n) {
- do {
- cm.setDisabled(n.nodeName.toLowerCase(), 0);
- cm.setActive(n.nodeName.toLowerCase(), 1);
- } while (n = n.parentNode);
- }
- });
-
- ed.onPreInit.add(function() {
- // Fixed IE issue where it can't handle these elements correctly
- ed.dom.create('abbr');
- });
- },
-
- getInfo : function() {
- return {
- longname : 'XHTML Xtras Plugin',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/xhtmlxtras',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- };
- }
- });
-
- // Register plugin
- tinymce.PluginManager.add('xhtmlxtras', tinymce.plugins.XHTMLXtrasPlugin);
-})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/ins.htm b/program/js/tiny_mce/plugins/xhtmlxtras/ins.htm
deleted file mode 100644
index d001ac7c4..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/ins.htm
+++ /dev/null
@@ -1,162 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#xhtmlxtras_dlg.title_ins_element}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="../../utils/form_utils.js"></script>
- <script type="text/javascript" src="../../utils/editable_selects.js"></script>
- <script type="text/javascript" src="js/element_common.js"></script>
- <script type="text/javascript" src="js/ins.js"></script>
- <link rel="stylesheet" type="text/css" href="css/popup.css" />
-</head>
-<body id="xhtmlxtrasins" style="display: none" role="application" aria-labelledby="app_title">
-<span style="display:none;" id="app_title">{#xhtmlxtras_dlg.title_ins_element}</span>
-<form onsubmit="insertIns();return false;" action="#">
- <div class="tabs">
- <ul>
- <li id="general_tab" class="current" aria-controls="general_panel"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.general_tab}</a></span></li>
- <!-- <li id="events_tab"><span><a href="javascript:mcTabs.displayTab('events_tab','events_panel');" onmousedown="return false;">{#xhtmlxtras_dlg.events_tab}</a></span></li> -->
- </ul>
- </div>
-
- <div class="panel_wrapper">
- <div id="general_panel" class="panel current">
- <fieldset>
- <legend>{#xhtmlxtras_dlg.fieldset_general_tab}</legend>
- <table role="presentation" border="0" cellpadding="0" cellspacing="4">
- <tr>
- <td class="label"><label id="datetimelabel" for="datetime">{#xhtmlxtras_dlg.attribute_label_datetime}</label>:</td>
- <td>
- <table role="presentation" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input id="datetime" name="datetime" type="text" value="" maxlength="19" class="field mceFocus" /></td>
- <td ><a href="javascript:insertDateTime('datetime');" onmousedown="return false;" class="browse" role="button" aria-labelledby="datetimelabel"><span class="datetime" title="{#xhtmlxtras_dlg.insert_date}"></span></a></td>
- </tr>
- </table>
- </td>
- </tr>
- <tr >
- <td class="label"><label id="citelabel" for="cite">{#xhtmlxtras_dlg.attribute_label_cite}</label>:</td>
- <td><input id="cite" name="cite" type="text" value="" class="field" /></td>
- </tr>
- </table>
- </fieldset>
- <fieldset>
- <legend>{#xhtmlxtras_dlg.fieldset_attrib_tab}</legend>
- <table role="presentation" border="0" cellpadding="0" cellspacing="4">
- <tr>
- <td class="label"><label id="titlelabel" for="title">{#xhtmlxtras_dlg.attribute_label_title}</label>:</td>
- <td><input id="title" name="title" type="text" value="" class="field" /></td>
- </tr>
- <tr>
- <td class="label"><label id="idlabel" for="id">{#xhtmlxtras_dlg.attribute_label_id}</label>:</td>
- <td><input id="id" name="id" type="text" value="" class="field" /></td>
- </tr>
- <tr>
- <td class="label"><label id="classlabel" for="class">{#xhtmlxtras_dlg.attribute_label_class}</label>:</td>
- <td>
- <select id="class" name="class" class="field mceEditableSelect">
- <option value="">{#not_set}</option>
- </select>
- </td>
- </tr>
- <tr>
- <td class="label"><label id="stylelabel" for="style">{#xhtmlxtras_dlg.attribute_label_style}</label>:</td>
- <td><input id="style" name="style" type="text" value="" class="field" /></td>
- </tr>
- <tr>
- <td class="label"><label id="dirlabel" for="dir">{#xhtmlxtras_dlg.attribute_label_langdir}</label>:</td>
- <td>
- <select id="dir" name="dir" class="field">
- <option value="">{#not_set}</option>
- <option value="ltr">{#xhtmlxtras_dlg.attribute_option_ltr}</option>
- <option value="rtl">{#xhtmlxtras_dlg.attribute_option_rtl}</option>
- </select>
- </td>
- </tr>
- <tr>
- <td class="label"><label id="langlabel" for="lang">{#xhtmlxtras_dlg.attribute_label_langcode}</label>:</td>
- <td>
- <input id="lang" name="lang" type="text" value="" class="field" />
- </td>
- </tr>
- </table>
- </fieldset>
- </div>
- <div id="events_panel" class="panel">
- <fieldset>
- <legend>{#xhtmlxtras_dlg.fieldset_events_tab}</legend>
-
- <table role="presentation" border="0" cellpadding="0" cellspacing="4">
- <tr>
- <td class="label"><label for="onfocus">onfocus</label>:</td>
- <td><input id="onfocus" name="onfocus" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onblur">onblur</label>:</td>
- <td><input id="onblur" name="onblur" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onclick">onclick</label>:</td>
- <td><input id="onclick" name="onclick" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="ondblclick">ondblclick</label>:</td>
- <td><input id="ondblclick" name="ondblclick" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmousedown">onmousedown</label>:</td>
- <td><input id="onmousedown" name="onmousedown" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmouseup">onmouseup</label>:</td>
- <td><input id="onmouseup" name="onmouseup" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmouseover">onmouseover</label>:</td>
- <td><input id="onmouseover" name="onmouseover" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmousemove">onmousemove</label>:</td>
- <td><input id="onmousemove" name="onmousemove" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onmouseout">onmouseout</label>:</td>
- <td><input id="onmouseout" name="onmouseout" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onkeypress">onkeypress</label>:</td>
- <td><input id="onkeypress" name="onkeypress" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onkeydown">onkeydown</label>:</td>
- <td><input id="onkeydown" name="onkeydown" type="text" value="" class="field" /></td>
- </tr>
-
- <tr>
- <td class="label"><label for="onkeyup">onkeyup</label>:</td>
- <td><input id="onkeyup" name="onkeyup" type="text" value="" class="field" /></td>
- </tr>
- </table>
- </fieldset>
- </div>
- </div>
- <div class="mceActionPanel">
- <input type="submit" id="insert" name="insert" value="{#update}" />
- <input type="button" id="remove" name="remove" class="button" value="{#xhtmlxtras_dlg.remove}" onclick="removeIns();" style="display: none;" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
-</form>
-</body>
-</html>
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/js/abbr.js b/program/js/tiny_mce/plugins/xhtmlxtras/js/abbr.js
deleted file mode 100644
index 4b51a2572..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/js/abbr.js
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * abbr.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-function init() {
- SXE.initElementDialog('abbr');
- if (SXE.currentAction == "update") {
- SXE.showRemoveButton();
- }
-}
-
-function insertAbbr() {
- SXE.insertElement('abbr');
- tinyMCEPopup.close();
-}
-
-function removeAbbr() {
- SXE.removeElement('abbr');
- tinyMCEPopup.close();
-}
-
-tinyMCEPopup.onInit.add(init);
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/js/acronym.js b/program/js/tiny_mce/plugins/xhtmlxtras/js/acronym.js
deleted file mode 100644
index 6ec2f8871..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/js/acronym.js
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * acronym.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-function init() {
- SXE.initElementDialog('acronym');
- if (SXE.currentAction == "update") {
- SXE.showRemoveButton();
- }
-}
-
-function insertAcronym() {
- SXE.insertElement('acronym');
- tinyMCEPopup.close();
-}
-
-function removeAcronym() {
- SXE.removeElement('acronym');
- tinyMCEPopup.close();
-}
-
-tinyMCEPopup.onInit.add(init);
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/js/attributes.js b/program/js/tiny_mce/plugins/xhtmlxtras/js/attributes.js
deleted file mode 100644
index 9c99995ad..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/js/attributes.js
+++ /dev/null
@@ -1,111 +0,0 @@
-/**
- * attributes.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-function init() {
- tinyMCEPopup.resizeToInnerSize();
- var inst = tinyMCEPopup.editor;
- var dom = inst.dom;
- var elm = inst.selection.getNode();
- var f = document.forms[0];
- var onclick = dom.getAttrib(elm, 'onclick');
-
- setFormValue('title', dom.getAttrib(elm, 'title'));
- setFormValue('id', dom.getAttrib(elm, 'id'));
- setFormValue('style', dom.getAttrib(elm, "style"));
- setFormValue('dir', dom.getAttrib(elm, 'dir'));
- setFormValue('lang', dom.getAttrib(elm, 'lang'));
- setFormValue('tabindex', dom.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : ""));
- setFormValue('accesskey', dom.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : ""));
- setFormValue('onfocus', dom.getAttrib(elm, 'onfocus'));
- setFormValue('onblur', dom.getAttrib(elm, 'onblur'));
- setFormValue('onclick', onclick);
- setFormValue('ondblclick', dom.getAttrib(elm, 'ondblclick'));
- setFormValue('onmousedown', dom.getAttrib(elm, 'onmousedown'));
- setFormValue('onmouseup', dom.getAttrib(elm, 'onmouseup'));
- setFormValue('onmouseover', dom.getAttrib(elm, 'onmouseover'));
- setFormValue('onmousemove', dom.getAttrib(elm, 'onmousemove'));
- setFormValue('onmouseout', dom.getAttrib(elm, 'onmouseout'));
- setFormValue('onkeypress', dom.getAttrib(elm, 'onkeypress'));
- setFormValue('onkeydown', dom.getAttrib(elm, 'onkeydown'));
- setFormValue('onkeyup', dom.getAttrib(elm, 'onkeyup'));
- className = dom.getAttrib(elm, 'class');
-
- addClassesToList('classlist', 'advlink_styles');
- selectByValue(f, 'classlist', className, true);
-
- TinyMCE_EditableSelects.init();
-}
-
-function setFormValue(name, value) {
- if(value && document.forms[0].elements[name]){
- document.forms[0].elements[name].value = value;
- }
-}
-
-function insertAction() {
- var inst = tinyMCEPopup.editor;
- var elm = inst.selection.getNode();
-
- setAllAttribs(elm);
- tinyMCEPopup.execCommand("mceEndUndoLevel");
- tinyMCEPopup.close();
-}
-
-function setAttrib(elm, attrib, value) {
- var formObj = document.forms[0];
- var valueElm = formObj.elements[attrib.toLowerCase()];
- var inst = tinyMCEPopup.editor;
- var dom = inst.dom;
-
- if (typeof(value) == "undefined" || value == null) {
- value = "";
-
- if (valueElm)
- value = valueElm.value;
- }
-
- dom.setAttrib(elm, attrib.toLowerCase(), value);
-}
-
-function setAllAttribs(elm) {
- var f = document.forms[0];
-
- setAttrib(elm, 'title');
- setAttrib(elm, 'id');
- setAttrib(elm, 'style');
- setAttrib(elm, 'class', getSelectValue(f, 'classlist'));
- setAttrib(elm, 'dir');
- setAttrib(elm, 'lang');
- setAttrib(elm, 'tabindex');
- setAttrib(elm, 'accesskey');
- setAttrib(elm, 'onfocus');
- setAttrib(elm, 'onblur');
- setAttrib(elm, 'onclick');
- setAttrib(elm, 'ondblclick');
- setAttrib(elm, 'onmousedown');
- setAttrib(elm, 'onmouseup');
- setAttrib(elm, 'onmouseover');
- setAttrib(elm, 'onmousemove');
- setAttrib(elm, 'onmouseout');
- setAttrib(elm, 'onkeypress');
- setAttrib(elm, 'onkeydown');
- setAttrib(elm, 'onkeyup');
-
- // Refresh in old MSIE
-// if (tinyMCE.isMSIE5)
-// elm.outerHTML = elm.outerHTML;
-}
-
-function insertAttribute() {
- tinyMCEPopup.close();
-}
-
-tinyMCEPopup.onInit.add(init);
-tinyMCEPopup.requireLangPack();
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/js/cite.js b/program/js/tiny_mce/plugins/xhtmlxtras/js/cite.js
deleted file mode 100644
index 009b71546..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/js/cite.js
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * cite.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-function init() {
- SXE.initElementDialog('cite');
- if (SXE.currentAction == "update") {
- SXE.showRemoveButton();
- }
-}
-
-function insertCite() {
- SXE.insertElement('cite');
- tinyMCEPopup.close();
-}
-
-function removeCite() {
- SXE.removeElement('cite');
- tinyMCEPopup.close();
-}
-
-tinyMCEPopup.onInit.add(init);
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/js/del.js b/program/js/tiny_mce/plugins/xhtmlxtras/js/del.js
deleted file mode 100644
index 1f957dc78..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/js/del.js
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * del.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-function init() {
- SXE.initElementDialog('del');
- if (SXE.currentAction == "update") {
- setFormValue('datetime', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'datetime'));
- setFormValue('cite', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'cite'));
- SXE.showRemoveButton();
- }
-}
-
-function setElementAttribs(elm) {
- setAllCommonAttribs(elm);
- setAttrib(elm, 'datetime');
- setAttrib(elm, 'cite');
- elm.removeAttribute('data-mce-new');
-}
-
-function insertDel() {
- var elm = tinyMCEPopup.editor.dom.getParent(SXE.focusElement, 'DEL');
-
- if (elm == null) {
- var s = SXE.inst.selection.getContent();
- if(s.length > 0) {
- insertInlineElement('del');
- var elementArray = SXE.inst.dom.select('del[data-mce-new]');
- for (var i=0; i<elementArray.length; i++) {
- var elm = elementArray[i];
- setElementAttribs(elm);
- }
- }
- } else {
- setElementAttribs(elm);
- }
- tinyMCEPopup.editor.nodeChanged();
- tinyMCEPopup.execCommand('mceEndUndoLevel');
- tinyMCEPopup.close();
-}
-
-function removeDel() {
- SXE.removeElement('del');
- tinyMCEPopup.close();
-}
-
-tinyMCEPopup.onInit.add(init);
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/js/element_common.js b/program/js/tiny_mce/plugins/xhtmlxtras/js/element_common.js
deleted file mode 100644
index 4e5d9c3bb..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/js/element_common.js
+++ /dev/null
@@ -1,229 +0,0 @@
-/**
- * element_common.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-tinyMCEPopup.requireLangPack();
-
-function initCommonAttributes(elm) {
- var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
-
- // Setup form data for common element attributes
- setFormValue('title', dom.getAttrib(elm, 'title'));
- setFormValue('id', dom.getAttrib(elm, 'id'));
- selectByValue(formObj, 'class', dom.getAttrib(elm, 'class'), true);
- setFormValue('style', dom.getAttrib(elm, 'style'));
- selectByValue(formObj, 'dir', dom.getAttrib(elm, 'dir'));
- setFormValue('lang', dom.getAttrib(elm, 'lang'));
- setFormValue('onfocus', dom.getAttrib(elm, 'onfocus'));
- setFormValue('onblur', dom.getAttrib(elm, 'onblur'));
- setFormValue('onclick', dom.getAttrib(elm, 'onclick'));
- setFormValue('ondblclick', dom.getAttrib(elm, 'ondblclick'));
- setFormValue('onmousedown', dom.getAttrib(elm, 'onmousedown'));
- setFormValue('onmouseup', dom.getAttrib(elm, 'onmouseup'));
- setFormValue('onmouseover', dom.getAttrib(elm, 'onmouseover'));
- setFormValue('onmousemove', dom.getAttrib(elm, 'onmousemove'));
- setFormValue('onmouseout', dom.getAttrib(elm, 'onmouseout'));
- setFormValue('onkeypress', dom.getAttrib(elm, 'onkeypress'));
- setFormValue('onkeydown', dom.getAttrib(elm, 'onkeydown'));
- setFormValue('onkeyup', dom.getAttrib(elm, 'onkeyup'));
-}
-
-function setFormValue(name, value) {
- if(document.forms[0].elements[name]) document.forms[0].elements[name].value = value;
-}
-
-function insertDateTime(id) {
- document.getElementById(id).value = getDateTime(new Date(), "%Y-%m-%dT%H:%M:%S");
-}
-
-function getDateTime(d, fmt) {
- fmt = fmt.replace("%D", "%m/%d/%y");
- fmt = fmt.replace("%r", "%I:%M:%S %p");
- fmt = fmt.replace("%Y", "" + d.getFullYear());
- fmt = fmt.replace("%y", "" + d.getYear());
- fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2));
- fmt = fmt.replace("%d", addZeros(d.getDate(), 2));
- fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2));
- fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2));
- fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2));
- fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1));
- fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM"));
- fmt = fmt.replace("%%", "%");
-
- return fmt;
-}
-
-function addZeros(value, len) {
- var i;
-
- value = "" + value;
-
- if (value.length < len) {
- for (i=0; i<(len-value.length); i++)
- value = "0" + value;
- }
-
- return value;
-}
-
-function selectByValue(form_obj, field_name, value, add_custom, ignore_case) {
- if (!form_obj || !form_obj.elements[field_name])
- return;
-
- var sel = form_obj.elements[field_name];
-
- var found = false;
- for (var i=0; i<sel.options.length; i++) {
- var option = sel.options[i];
-
- if (option.value == value || (ignore_case && option.value.toLowerCase() == value.toLowerCase())) {
- option.selected = true;
- found = true;
- } else
- option.selected = false;
- }
-
- if (!found && add_custom && value != '') {
- var option = new Option('Value: ' + value, value);
- option.selected = true;
- sel.options[sel.options.length] = option;
- }
-
- return found;
-}
-
-function setAttrib(elm, attrib, value) {
- var formObj = document.forms[0];
- var valueElm = formObj.elements[attrib.toLowerCase()];
- tinyMCEPopup.editor.dom.setAttrib(elm, attrib, value || valueElm.value);
-}
-
-function setAllCommonAttribs(elm) {
- setAttrib(elm, 'title');
- setAttrib(elm, 'id');
- setAttrib(elm, 'class');
- setAttrib(elm, 'style');
- setAttrib(elm, 'dir');
- setAttrib(elm, 'lang');
- /*setAttrib(elm, 'onfocus');
- setAttrib(elm, 'onblur');
- setAttrib(elm, 'onclick');
- setAttrib(elm, 'ondblclick');
- setAttrib(elm, 'onmousedown');
- setAttrib(elm, 'onmouseup');
- setAttrib(elm, 'onmouseover');
- setAttrib(elm, 'onmousemove');
- setAttrib(elm, 'onmouseout');
- setAttrib(elm, 'onkeypress');
- setAttrib(elm, 'onkeydown');
- setAttrib(elm, 'onkeyup');*/
-}
-
-SXE = {
- currentAction : "insert",
- inst : tinyMCEPopup.editor,
- updateElement : null
-}
-
-SXE.focusElement = SXE.inst.selection.getNode();
-
-SXE.initElementDialog = function(element_name) {
- addClassesToList('class', 'xhtmlxtras_styles');
- TinyMCE_EditableSelects.init();
-
- element_name = element_name.toLowerCase();
- var elm = SXE.inst.dom.getParent(SXE.focusElement, element_name.toUpperCase());
- if (elm != null && elm.nodeName.toUpperCase() == element_name.toUpperCase()) {
- SXE.currentAction = "update";
- }
-
- if (SXE.currentAction == "update") {
- initCommonAttributes(elm);
- SXE.updateElement = elm;
- }
-
- document.forms[0].insert.value = tinyMCEPopup.getLang(SXE.currentAction, 'Insert', true);
-}
-
-SXE.insertElement = function(element_name) {
- var elm = SXE.inst.dom.getParent(SXE.focusElement, element_name.toUpperCase()), h, tagName;
-
- if (elm == null) {
- var s = SXE.inst.selection.getContent();
- if(s.length > 0) {
- tagName = element_name;
-
- insertInlineElement(element_name);
- var elementArray = tinymce.grep(SXE.inst.dom.select(element_name));
- for (var i=0; i<elementArray.length; i++) {
- var elm = elementArray[i];
-
- if (SXE.inst.dom.getAttrib(elm, 'data-mce-new')) {
- elm.id = '';
- elm.setAttribute('id', '');
- elm.removeAttribute('id');
- elm.removeAttribute('data-mce-new');
-
- setAllCommonAttribs(elm);
- }
- }
- }
- } else {
- setAllCommonAttribs(elm);
- }
- SXE.inst.nodeChanged();
- tinyMCEPopup.execCommand('mceEndUndoLevel');
-}
-
-SXE.removeElement = function(element_name){
- element_name = element_name.toLowerCase();
- elm = SXE.inst.dom.getParent(SXE.focusElement, element_name.toUpperCase());
- if(elm && elm.nodeName.toUpperCase() == element_name.toUpperCase()){
- tinyMCE.execCommand('mceRemoveNode', false, elm);
- SXE.inst.nodeChanged();
- tinyMCEPopup.execCommand('mceEndUndoLevel');
- }
-}
-
-SXE.showRemoveButton = function() {
- document.getElementById("remove").style.display = '';
-}
-
-SXE.containsClass = function(elm,cl) {
- return (elm.className.indexOf(cl) > -1) ? true : false;
-}
-
-SXE.removeClass = function(elm,cl) {
- if(elm.className == null || elm.className == "" || !SXE.containsClass(elm,cl)) {
- return true;
- }
- var classNames = elm.className.split(" ");
- var newClassNames = "";
- for (var x = 0, cnl = classNames.length; x < cnl; x++) {
- if (classNames[x] != cl) {
- newClassNames += (classNames[x] + " ");
- }
- }
- elm.className = newClassNames.substring(0,newClassNames.length-1); //removes extra space at the end
-}
-
-SXE.addClass = function(elm,cl) {
- if(!SXE.containsClass(elm,cl)) elm.className ? elm.className += " " + cl : elm.className = cl;
- return true;
-}
-
-function insertInlineElement(en) {
- var ed = tinyMCEPopup.editor, dom = ed.dom;
-
- ed.getDoc().execCommand('FontName', false, 'mceinline');
- tinymce.each(dom.select('span,font'), function(n) {
- if (n.style.fontFamily == 'mceinline' || n.face == 'mceinline')
- dom.replace(dom.create(en, {'data-mce-new' : 1}), n, 1);
- });
-}
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/js/ins.js b/program/js/tiny_mce/plugins/xhtmlxtras/js/ins.js
deleted file mode 100644
index c4addfb01..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/js/ins.js
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * ins.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-function init() {
- SXE.initElementDialog('ins');
- if (SXE.currentAction == "update") {
- setFormValue('datetime', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'datetime'));
- setFormValue('cite', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'cite'));
- SXE.showRemoveButton();
- }
-}
-
-function setElementAttribs(elm) {
- setAllCommonAttribs(elm);
- setAttrib(elm, 'datetime');
- setAttrib(elm, 'cite');
- elm.removeAttribute('data-mce-new');
-}
-
-function insertIns() {
- var elm = tinyMCEPopup.editor.dom.getParent(SXE.focusElement, 'INS');
-
- if (elm == null) {
- var s = SXE.inst.selection.getContent();
- if(s.length > 0) {
- insertInlineElement('ins');
- var elementArray = SXE.inst.dom.select('ins[data-mce-new]');
- for (var i=0; i<elementArray.length; i++) {
- var elm = elementArray[i];
- setElementAttribs(elm);
- }
- }
- } else {
- setElementAttribs(elm);
- }
- tinyMCEPopup.editor.nodeChanged();
- tinyMCEPopup.execCommand('mceEndUndoLevel');
- tinyMCEPopup.close();
-}
-
-function removeIns() {
- SXE.removeElement('ins');
- tinyMCEPopup.close();
-}
-
-tinyMCEPopup.onInit.add(init);
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/ar_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/ar_dlg.js
deleted file mode 100644
index e7a5633bd..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/ar_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ar.xhtmlxtras_dlg',{"attribs_title":"Insert/Edit Attributes","option_rtl":"\u064a\u0645\u064a\u0646 \u0627\u0644\u0649 \u064a\u0633\u0627\u0631","option_ltr":"\u064a\u0633\u0627\u0631 \u0627\u0644\u0649 \u064a\u0645\u064a\u0646","insert_date":"Insert current date/time",remove:"\u062d\u0630\u0641","title_cite_element":"Citation Element","title_abbr_element":"Abbreviation Element","title_acronym_element":"Acronym Element","title_del_element":"Deletion Element","title_ins_element":"Insertion Element","fieldset_events_tab":"Element Events","fieldset_attrib_tab":"Element Attributes","fieldset_general_tab":"\u0627\u0639\u062f\u0627\u062f\u0627\u062a \u0639\u0627\u0645\u0647","events_tab":"\u0627\u062d\u062f\u0627\u062b","attrib_tab":"Attributes","general_tab":"\u0639\u0627\u0645","attribute_attrib_tab":"Attributes","attribute_events_tab":"\u0627\u062d\u062f\u0627\u062b","attribute_label_accesskey":"AccessKey","attribute_label_tabindex":"TabIndex","attribute_label_langcode":"Language","attribute_option_rtl":"\u064a\u0645\u064a\u0646 \u0627\u0644\u0649 \u064a\u0633\u0627\u0631","attribute_option_ltr":"\u064a\u0633\u0627\u0631 \u0627\u0644\u0649 \u064a\u0645\u064a\u0646","attribute_label_langdir":"\u0627\u062a\u062c\u0627\u0647 \u0627\u0644\u0643\u062a\u0627\u0628\u0647","attribute_label_datetime":"\u062a\u0627\u0631\u064a\u062e / \u0632\u0645\u0646","attribute_label_cite":"Cite","attribute_label_style":"\u0648\u0633\u0645","attribute_label_class":"Class","attribute_label_id":"ID","attribute_label_title":"\u0639\u0646\u0648\u0627\u0646"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/az_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/az_dlg.js
deleted file mode 100644
index 2378cf605..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/az_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('az.xhtmlxtras_dlg',{"attribs_title":"Atribut \u0259lav\u0259/redakt\u0259 et","option_rtl":"Sa\u011fda-sola","option_ltr":"Solda-sa\u011fa","insert_date":"Haz\u0131rki tarixi/vaxt\u0131 \u0259lav\u0259 et",remove:"L\u0259\u011fv et","title_cite_element":"Sitat elementi","title_abbr_element":"Abbreviatura elementi","title_acronym_element":"Akronim elementi","title_del_element":"Silinmi\u015f m\u0259tnin elementi","title_ins_element":"\u018flav\u0259 edilmi\u015f m\u0259tnin elementi","fieldset_events_tab":"Element hadis\u0259l\u0259ri","fieldset_attrib_tab":"Element atributlar\u0131","fieldset_general_tab":"\u00dcmumi nizamlamalar","events_tab":"Hadis\u0259l\u0259r","attrib_tab":"Atributlar","general_tab":"\u00dcmumi","attribute_attrib_tab":"Atributlar","attribute_events_tab":"Hadis\u0259l\u0259r","attribute_label_accesskey":"Giri\u015f klavi\u015fi","attribute_label_tabindex":"Hesab indeksi","attribute_label_langcode":"Dil","attribute_option_rtl":"Sa\u011fda-sola","attribute_option_ltr":"Solda-sa\u011fa","attribute_label_langdir":"M\u0259tnin istiqam\u0259ti","attribute_label_datetime":"Tarix/vaxt","attribute_label_cite":"Sitat","attribute_label_style":"Stil","attribute_label_class":"Sinif","attribute_label_id":"\u0130dentifikator","attribute_label_title":"Ad\u0131"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/bg_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/bg_dlg.js
deleted file mode 100644
index 4cf4ef9f6..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/bg_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bg.xhtmlxtras_dlg',{"attribs_title":"\u0412\u043c\u044a\u043a\u043d\u0438/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 \u0410\u0442\u0440\u0438\u0431\u0443\u0442\u0438","option_rtl":"\u041e\u0442\u0434\u044f\u0441\u043d\u043e \u043d\u0430 \u043b\u044f\u0432\u043e","option_ltr":"\u041e\u0442\u043b\u044f\u0432\u043e \u043d\u0430 \u0434\u044f\u0441\u043d\u043e","insert_date":"\u0412\u043c\u044a\u043a\u043d\u0438 \u0442\u0435\u043a\u0443\u0449\u0430\u0442\u0430 \u0434\u0430\u0442\u0430/\u0446\u0430\u0441",remove:"\u041f\u0440\u0435\u043c\u0430\u0445\u043d\u0438","title_cite_element":"\u0415\u043b\u0435\u043c\u0435\u043d\u0442 \u0426\u0438\u0442\u0430\u0442","title_abbr_element":"\u0415\u043b\u0435\u043c\u0435\u043d\u0442 \u0421\u044a\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0435","title_acronym_element":"\u0415\u043b\u0435\u043c\u0435\u043d\u0442 \u0410\u043a\u0440\u043e\u043d\u0438\u043c","title_del_element":"\u0415\u043b\u0435\u043c\u0435\u043d\u0442 \u0418\u0437\u0442\u0440\u0438\u0432\u0430\u043d\u0435","title_ins_element":"\u0415\u043b\u0435\u043c\u0435\u043d\u0442 \u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435","fieldset_events_tab":"\u0421\u044a\u0431\u0438\u0442\u0438\u044f \u043d\u0430 \u0435\u043b\u0435\u043c\u0435\u043d\u0442\u0430","fieldset_attrib_tab":"\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u0438 \u043d\u0430 \u0435\u043b\u0435\u043c\u0435\u043d\u0442\u0430","fieldset_general_tab":"\u041e\u0431\u0449\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438","events_tab":"\u0421\u044a\u0431\u0438\u0442\u0438\u044f","attrib_tab":"\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u0438","general_tab":"\u041e\u0431\u0449\u0438","attribute_attrib_tab":"\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u0438","attribute_events_tab":"\u0421\u044a\u0431\u0438\u0442\u0438\u044f","attribute_label_accesskey":"\u041a\u043b\u0430\u0432\u0438\u0448","attribute_label_tabindex":"\u041f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u043d\u043e\u0441\u0442","attribute_label_langcode":"\u0415\u0437\u0438\u043a","attribute_option_rtl":"\u041e\u0442\u0434\u044f\u0441\u043d\u043e \u043d\u0430 \u043b\u044f\u0432\u043e","attribute_option_ltr":"\u041e\u0442\u043b\u044f\u0432\u043e \u043d\u0430 \u0434\u044f\u0441\u043d\u043e","attribute_label_langdir":"\u041f\u043e\u0441\u043e\u043a\u0430 \u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0430","attribute_label_datetime":"\u0414\u0430\u0442\u0430/\u0412\u0440\u0435\u043c\u0435","attribute_label_cite":"\u0426\u0438\u0442\u0430\u0442","attribute_label_style":"\u0421\u0442\u0438\u043b","attribute_label_class":"\u041a\u043b\u0430\u0441","attribute_label_id":"ID","attribute_label_title":"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/bn_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/bn_dlg.js
deleted file mode 100644
index 085ed82e9..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/bn_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bn.xhtmlxtras_dlg',{"attribs_title":"Insert/Edit Attributes","option_rtl":"Right to left","option_ltr":"Left to right","insert_date":"Insert current date/time",remove:"Remove","title_cite_element":"Citation Element","title_abbr_element":"Abbreviation Element","title_acronym_element":"Acronym Element","title_del_element":"Deletion Element","title_ins_element":"Insertion Element","fieldset_events_tab":"Element Events","fieldset_attrib_tab":"Element Attributes","fieldset_general_tab":"General Settings","events_tab":"Events","attrib_tab":"Attributes","general_tab":"General","attribute_attrib_tab":"Attributes","attribute_events_tab":"Events","attribute_label_accesskey":"AccessKey","attribute_label_tabindex":"TabIndex","attribute_label_langcode":"Language","attribute_option_rtl":"Right to left","attribute_option_ltr":"Left to right","attribute_label_langdir":"Text Direction","attribute_label_datetime":"Date/Time","attribute_label_cite":"Cite","attribute_label_style":"Style","attribute_label_class":"Class","attribute_label_id":"ID","attribute_label_title":"Title"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/br_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/br_dlg.js
deleted file mode 100644
index 0c75ca89e..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/br_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('br.xhtmlxtras_dlg',{"attribs_title":"Inserir/editar atributos","option_rtl":"Da direita para a esquerda","option_ltr":"Da esquerda para a direita","insert_date":"Inserir data/hora",remove:"Remover","title_cite_element":"Cita\u00e7\u00e3o","title_abbr_element":"Abrevia\u00e7\u00e3o","title_acronym_element":"Acr\u00f4nimo","title_del_element":"Apagar","title_ins_element":"Inserir","fieldset_events_tab":"Eventos","fieldset_attrib_tab":"Atributos","fieldset_general_tab":"Configura\u00e7\u00f5es gerais","events_tab":"Eventos","attrib_tab":"Atributos","general_tab":"Geral","attribute_attrib_tab":"Atributos","attribute_events_tab":"Eventos","attribute_label_accesskey":"Tecla de Atalho","attribute_label_tabindex":"TabIndex","attribute_label_langcode":"Linguagem","attribute_option_rtl":"Da direita para a esquerda","attribute_option_ltr":"Da esquerda para a direita","attribute_label_langdir":"Dire\u00e7\u00e3o do texto","attribute_label_datetime":"Data/Hora","attribute_label_cite":"Citar","attribute_label_style":"Estilo","attribute_label_class":"Classe","attribute_label_id":"ID","attribute_label_title":"T\u00edtulo"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/bs_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/bs_dlg.js
deleted file mode 100644
index 5d931ec3d..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/bs_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bs.xhtmlxtras_dlg',{"attribs_title":"Umetni/uredi atribute","option_rtl":"S desna na lijevo","option_ltr":"S lijeva na desno","insert_date":"Umetni trenuta\u010dni datum/vrijeme",remove:"Ukloni","title_cite_element":"Element citata","title_abbr_element":"Element kratice","title_acronym_element":"Element akronima","title_del_element":"Element za brisanje","title_ins_element":"Element za unos","fieldset_events_tab":"Doga\u0111aji elemenata","fieldset_attrib_tab":"Atributi elemenata","fieldset_general_tab":"Osnovne postavke","events_tab":"Doga\u0111aji","attrib_tab":"Atributi","general_tab":"Osnovno","attribute_attrib_tab":"Atributi","attribute_events_tab":"Doga\u0111aji","attribute_label_accesskey":"AccessKey","attribute_label_tabindex":"TabIndex","attribute_label_langcode":"Jezik","attribute_option_rtl":"S desna na lijevo","attribute_option_ltr":"S lijeva na desno","attribute_label_langdir":"Smjer teksta","attribute_label_datetime":"Datum/vrijeme","attribute_label_cite":"Citat","attribute_label_style":"Stil","attribute_label_class":"Klasa","attribute_label_id":"ID","attribute_label_title":"Naslov"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/ca_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/ca_dlg.js
deleted file mode 100644
index 5c548b5e7..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/ca_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ca.xhtmlxtras_dlg',{"attribs_title":"Insereix/Edita atributs","option_rtl":"De dreta a esquerra","option_ltr":"D\'esquerra a dreta","insert_date":"Insereix la data/hora actuals",remove:"Elimina","title_cite_element":"Element de menci\u00f3","title_abbr_element":"Element d\'abreviatura","title_acronym_element":"Element d\'acr\u00f2nim","title_del_element":"Element d\'eliminaci\u00f3","title_ins_element":"Element d\'inserci\u00f3","fieldset_events_tab":"Esdeveniments d\'element","fieldset_attrib_tab":"Atributs d\'element","fieldset_general_tab":"Configuraci\u00f3 general","events_tab":"Esdeveniments","attrib_tab":"Atributs","general_tab":"General","attribute_attrib_tab":"Atributs","attribute_events_tab":"Esdeveniments","attribute_label_accesskey":"AccessKey","attribute_label_tabindex":"TabIndex","attribute_label_langcode":"Idioma","attribute_option_rtl":"De dreta a esquerra","attribute_option_ltr":"D\'esquerra a dreta","attribute_label_langdir":"Direcci\u00f3 del text","attribute_label_datetime":"Data/Hora","attribute_label_cite":"Cita","attribute_label_style":"Estil","attribute_label_class":"Classe","attribute_label_id":"ID","attribute_label_title":"T\u00edtol"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/cs_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/cs_dlg.js
deleted file mode 100644
index 55c8cab8c..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/cs_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('cs.xhtmlxtras_dlg',{"attribs_title":"Vlo\u017eit/upravit atributy","option_rtl":"Zprava doleva","option_ltr":"Zleva doprava","insert_date":"Vlo\u017eit aktu\u00e1ln\u00ed datum/\u010das",remove:"Odstranit","title_cite_element":"Citace","title_abbr_element":"Zkratka","title_acronym_element":"Akronym","title_del_element":"Odstran\u011bn\u00fd text","title_ins_element":"P\u0159idan\u00fd text","fieldset_events_tab":"Atributy ud\u00e1losti","fieldset_attrib_tab":"Atributy prvku","fieldset_general_tab":"Obecn\u00e9 parametry","events_tab":"Ud\u00e1losti","attrib_tab":"Atributy","general_tab":"Obecn\u00e9","attribute_attrib_tab":"Atributy","attribute_events_tab":"Ud\u00e1losti","attribute_label_accesskey":"Kl\u00e1vesov\u00e1 zkratka","attribute_label_tabindex":"Po\u0159ad\u00ed pro tabul\u00e1tor","attribute_label_langcode":"Jazyk","attribute_option_rtl":"Zprava doleva","attribute_option_ltr":"Zleva doprava","attribute_label_langdir":"Sm\u011br textu","attribute_label_datetime":"Datum/\u010cas","attribute_label_cite":"Citace","attribute_label_style":"Styl","attribute_label_class":"T\u0159\u00edda","attribute_label_id":"ID","attribute_label_title":"Titulek"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/cy_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/cy_dlg.js
deleted file mode 100644
index 981483939..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/cy_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('cy.xhtmlxtras_dlg',{"attribs_title":"Mewnosod/Golygu Priodoleddau","option_rtl":"De i\'r chwith","option_ltr":"Chwith i\'r dde","insert_date":"Mewnosod dyddiad/amser presennol",remove:"Tynnu","title_cite_element":"Elfen Dyfyniad","title_abbr_element":"Elfen Talfyriad","title_acronym_element":"Elfen Acronym","title_del_element":"Elfen Dilead","title_ins_element":"Elfen Mewnosodiad","fieldset_events_tab":"Digwyddiadau Elfen","fieldset_attrib_tab":"Priodoleddau Elfen","fieldset_general_tab":"Gosodiadau Cyfredinol","events_tab":"Digwyddiadau","attrib_tab":"Priodoleddau","general_tab":"Cyffredinol","attribute_attrib_tab":"Priodoleddau","attribute_events_tab":"Digwyddiadau","attribute_label_accesskey":"Bysell mynediad","attribute_label_tabindex":"Trefn tabio","attribute_label_langcode":"Iaith","attribute_option_rtl":"De i\'r chwith","attribute_option_ltr":"Chwith i\'r dde","attribute_label_langdir":"Cyfeiriad Testun","attribute_label_datetime":"Dyddiad/Amser","attribute_label_cite":"Dyfynnu","attribute_label_style":"Arddull","attribute_label_class":"Dosbarth","attribute_label_id":"ID","attribute_label_title":"Teitl"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/da_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/da_dlg.js
deleted file mode 100644
index cd9eb4085..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/da_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('da.xhtmlxtras_dlg',{"attribs_title":"Inds\u00e6t/rediger attributter","option_rtl":"H\u00f8jre mod venstre","option_ltr":"Venstre mod h\u00f8jre","insert_date":"Inds\u00e6t nuv\u00e6rende dato/tid",remove:"Slet","title_cite_element":"Citationselement","title_abbr_element":"Forkortet element","title_acronym_element":"Akronym element","title_del_element":"Sletteklart element","title_ins_element":"Inds\u00e6tbart element","fieldset_events_tab":"Element-h\u00e6ndelser","fieldset_attrib_tab":"Element-attributter","fieldset_general_tab":"Genererelle indstillinger","events_tab":"H\u00e6ndelser","attrib_tab":"Attributter","general_tab":"Generelt","attribute_attrib_tab":"Attributter","attribute_events_tab":"H\u00e6ndelser","attribute_label_accesskey":"Adgangsn\u00f8gle","attribute_label_tabindex":"Tab-indeks","attribute_label_langcode":"Sprog","attribute_option_rtl":"H\u00f8jre mod venstre","attribute_option_ltr":"Venstre mod h\u00f8jre","attribute_label_langdir":"Tekstretning","attribute_label_datetime":"Dato/tid","attribute_label_cite":"Citat","attribute_label_style":"Stil","attribute_label_class":"Klasse","attribute_label_id":"ID","attribute_label_title":"Titel"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/de_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/de_dlg.js
deleted file mode 100644
index 4994355b9..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/de_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('de.xhtmlxtras_dlg',{"attribs_title":"Attribute einf\u00fcgen/bearbeiten","option_rtl":"Rechts nach links","option_ltr":"Links nach rechts","insert_date":"Aktuelle Zeit/Datum einf\u00fcgen",remove:"Entfernen","title_cite_element":"Quellenangabe","title_abbr_element":"Abk\u00fcrzung","title_acronym_element":"Akronym","title_del_element":"Entfernter Text","title_ins_element":"Eingef\u00fcgter Text","fieldset_events_tab":"Ereignisse","fieldset_attrib_tab":"Attribute","fieldset_general_tab":"Allgemeine Einstellungen","events_tab":"Ereignisse","attrib_tab":"Attribute","general_tab":"Allgemein","attribute_attrib_tab":"Attribute","attribute_events_tab":"Ereignisse","attribute_label_accesskey":"Tastenk\u00fcrzel","attribute_label_tabindex":"Tabindex","attribute_label_langcode":"Sprache","attribute_option_rtl":"Rechts nach links","attribute_option_ltr":"Links nach rechts","attribute_label_langdir":"Schriftrichtung","attribute_label_datetime":"Zeit/Datum","attribute_label_cite":"Quellenangabe","attribute_label_style":"Format","attribute_label_class":"Klasse","attribute_label_id":"ID","attribute_label_title":"Titel"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/el_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/el_dlg.js
deleted file mode 100644
index cbc5fbb16..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/el_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('el.xhtmlxtras_dlg',{"attribs_title":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03b9\u03b4\u03b9\u03bf\u03c4\u03ae\u03c4\u03c9\u03bd","option_rtl":"\u0394\u03b5\u03be\u03b9\u03ac \u03c0\u03c1\u03bf\u03c2 \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac","option_ltr":"\u0391\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac \u03c0\u03c1\u03bf\u03c2 \u03b4\u03b5\u03be\u03b9\u03ac","insert_date":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03c4\u03c1\u03ad\u03c7\u03bf\u03c5\u03c3\u03b1\u03c2 \u03b7\u03bc\u03ad\u03c1\u03b1\u03c2/\u03ce\u03c1\u03b1\u03c2",remove:"\u0391\u03c6\u03b1\u03af\u03c1\u03b5\u03c3\u03b7","title_cite_element":"Citation \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf\u03c5","title_abbr_element":"\u03a3\u03c5\u03bd\u03c4\u03bf\u03bc\u03bf\u03b3\u03c1\u03b1\u03c6\u03af\u03b1 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf\u03c5","title_acronym_element":"\u0391\u03ba\u03c1\u03bf\u03bd\u03cd\u03bc\u03b9\u03bf \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf\u03c5","title_del_element":"\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf\u03c5","title_ins_element":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf\u03c5","fieldset_events_tab":"\u0393\u03b5\u03b3\u03bf\u03bd\u03cc\u03c4\u03b1 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf\u03c5","fieldset_attrib_tab":"\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf\u03c5","fieldset_general_tab":"\u0393\u03b5\u03bd\u03b9\u03ba\u03ad\u03c2 \u03a1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2","events_tab":"\u0393\u03b5\u03b3\u03bf\u03bd\u03cc\u03c4\u03b1","attrib_tab":"\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2","general_tab":"\u0393\u03b5\u03bd\u03b9\u03ba\u03ac","attribute_attrib_tab":"\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2","attribute_events_tab":"\u0393\u03b5\u03b3\u03bf\u03bd\u03cc\u03c4\u03b1","attribute_label_accesskey":"\u03a0\u03bb\u03ae\u03ba\u03c4\u03c1\u03bf \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2","attribute_label_tabindex":"TabIndex","attribute_label_langcode":"\u0393\u03bb\u03ce\u03c3\u03c3\u03b1","attribute_option_rtl":"\u0394\u03b5\u03be\u03b9\u03ac \u03c0\u03c1\u03bf\u03c2 \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac","attribute_option_ltr":"\u0391\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac \u03c0\u03c1\u03bf\u03c2 \u03b4\u03b5\u03be\u03b9\u03ac","attribute_label_langdir":"\u039a\u03b1\u03c4\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 \u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5","attribute_label_datetime":"\u0397\u03bc\u03ad\u03c1\u03b1/\u038f\u03c1\u03b1","attribute_label_cite":"Cite","attribute_label_style":"\u03a3\u03c4\u03c5\u03bb","attribute_label_class":"\u039a\u03bb\u03ac\u03c3\u03b7","attribute_label_id":"ID","attribute_label_title":"\u03a4\u03af\u03c4\u03bb\u03bf\u03c2"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/en_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/en_dlg.js
deleted file mode 100644
index c4569f85e..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/en_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('en.xhtmlxtras_dlg',{"attribs_title":"Insert/Edit Attributes","option_rtl":"Right to Left","option_ltr":"Left to Right","insert_date":"Insert Current Date/Time",remove:"Remove","title_cite_element":"Citation Element","title_abbr_element":"Abbreviation Element","title_acronym_element":"Acronym Element","title_del_element":"Deletion Element","title_ins_element":"Insertion Element","fieldset_events_tab":"Element Events","fieldset_attrib_tab":"Element Attributes","fieldset_general_tab":"General Settings","events_tab":"Events","attrib_tab":"Attributes","general_tab":"General","attribute_attrib_tab":"Attributes","attribute_events_tab":"Events","attribute_label_accesskey":"AccessKey","attribute_label_tabindex":"TabIndex","attribute_label_langcode":"Language","attribute_option_rtl":"Right to Left","attribute_option_ltr":"Left to Right","attribute_label_langdir":"Text Direction","attribute_label_datetime":"Date/Time","attribute_label_cite":"Cite","attribute_label_style":"Style","attribute_label_class":"Class","attribute_label_id":"ID","attribute_label_title":"Title"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/eo_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/eo_dlg.js
deleted file mode 100644
index c0e977686..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/eo_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('eo.xhtmlxtras_dlg',{"attribs_title":"Enmeti/redakti atributojn","option_rtl":"Dekstre-Maldekstren","option_ltr":"Maldekstre-Dekstren","insert_date":"Enmeti daton/horon",remove:"Forigi","title_cite_element":"Cita\u0135o","title_abbr_element":"Mallongigo","title_acronym_element":"Akronimo","title_del_element":"Forvi\u015di","title_ins_element":"Enmeti","fieldset_events_tab":"Eventoj","fieldset_attrib_tab":"Atributoj","fieldset_general_tab":"\u011ceneralaj agorda\u0135oj","events_tab":"Eventoj","attrib_tab":"Atributoj","general_tab":"\u011ceneralaj","attribute_attrib_tab":"Atributoj","attribute_events_tab":"Eventoj","attribute_label_accesskey":"Klavkombino","attribute_label_tabindex":"TabIndekso","attribute_label_langcode":"Lingvo","attribute_option_rtl":"Dekstre-Maldekstren","attribute_option_ltr":"Maldekstre-Dekstren","attribute_label_langdir":"Tekstodirekto","attribute_label_datetime":"Dato/Horo","attribute_label_cite":"Citi","attribute_label_style":"Stilo","attribute_label_class":"Klaso","attribute_label_id":"ID","attribute_label_title":"Titolo"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/es_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/es_dlg.js
deleted file mode 100644
index 676e20086..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/es_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('es.xhtmlxtras_dlg',{"attribs_title":"Insertar/Editar atributos","option_rtl":"Derecha a izquierda","option_ltr":"Izquierda a derecha","insert_date":"Insertar fecha/hora actuales",remove:"Suprimir","title_cite_element":"Cita","title_abbr_element":"Abreviatura","title_acronym_element":"Acr\u00f3nimo","title_del_element":"Borrar","title_ins_element":"Insertar","fieldset_events_tab":"Evento","fieldset_attrib_tab":"Atributos","fieldset_general_tab":"Configuraci\u00f3n general","events_tab":"Eventos","attrib_tab":"Atributos","general_tab":"General","attribute_attrib_tab":"Atributos","attribute_events_tab":"Eventos","attribute_label_accesskey":"Tecla de acceso","attribute_label_tabindex":"Orden de tabulaci\u00f3n","attribute_label_langcode":"Lenguaje","attribute_option_rtl":"Derecha a izquierda","attribute_option_ltr":"Izquierda a derecha","attribute_label_langdir":"Direcci\u00f3n de texto","attribute_label_datetime":"Fecha/Hora","attribute_label_cite":"Cita","attribute_label_style":"Estilo","attribute_label_class":"Clase","attribute_label_id":"ID","attribute_label_title":"T\u00edtulo"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/et_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/et_dlg.js
deleted file mode 100644
index 6e7ffcc7d..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/et_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('et.xhtmlxtras_dlg',{"attribs_title":"Sisesta/muuda atribuute","option_rtl":"Paremalt vasakule","option_ltr":"Vasakult paremale","insert_date":"Sisesta hetke kuup\u00e4ev/aeg",remove:"Eemalda","title_cite_element":"Elemendi tsitaat","title_abbr_element":"Elemendi l\u00fchend","title_acronym_element":"Elemendi akron\u00fc\u00fcm","title_del_element":"Elemendi kustutus","title_ins_element":"Elemendi sisestus","fieldset_events_tab":"Elementide s\u00fcndmused","fieldset_attrib_tab":"Elementide atribuudid","fieldset_general_tab":"\u00dcldised seaded","events_tab":"S\u00fcndmused","attrib_tab":"Atribuudid","general_tab":"\u00dcldine","attribute_attrib_tab":"Atribuudid","attribute_events_tab":"S\u00fcndmused","attribute_label_accesskey":"Ligip\u00e4\u00e4suklahv","attribute_label_tabindex":"Sisujuht","attribute_label_langcode":"Keel","attribute_option_rtl":"Paremalt vasakule","attribute_option_ltr":"Vasakult paremale","attribute_label_langdir":"Teksti suund","attribute_label_datetime":"Kuup\u00e4ev/aeg","attribute_label_cite":"Tsitaat","attribute_label_style":"Stiil","attribute_label_class":"Klass","attribute_label_id":"ID","attribute_label_title":"Pealkiri"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/eu_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/eu_dlg.js
deleted file mode 100644
index 16997b852..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/eu_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('eu.xhtmlxtras_dlg',{"attribs_title":"Atributuak txertatu/editatu","option_rtl":"Eskuinetik ezkerrera","option_ltr":"Ezkerretik eskuinera","insert_date":"Data/ordua txertatu",remove:"Ezabatu","title_cite_element":"Elementuaren zita","title_abbr_element":"Elementuaren laburdura","title_acronym_element":"Elementuaren akronimoa","title_del_element":"Elementuaren ezabaketa","title_ins_element":"Elementuaren txertaketa","fieldset_events_tab":"Elementuen ebentuak","fieldset_attrib_tab":"Elementuen atributuak","fieldset_general_tab":"Aukera orokorrak","events_tab":"Ebentuak","attrib_tab":"Atributuak","general_tab":"Orokorra","attribute_attrib_tab":"Atributuak","attribute_events_tab":"Ebentuak","attribute_label_accesskey":"Laster-tekla","attribute_label_tabindex":"Tabulazio ordena","attribute_label_langcode":"Hizkuntza","attribute_option_rtl":"Eskuinetik ezkerrera","attribute_option_ltr":"Ezkerretik eskuinera","attribute_label_langdir":"Testuaren norabidea","attribute_label_datetime":"Data/Ordua","attribute_label_cite":"Zita","attribute_label_style":"Estiloa","attribute_label_class":"Klasea","attribute_label_id":"ID","attribute_label_title":"Izenburua"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/fa_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/fa_dlg.js
deleted file mode 100644
index a37c26b7d..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/fa_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fa.xhtmlxtras_dlg',{"attribs_title":"\u062f\u0631\u062c/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627","option_rtl":"\u0631\u0627\u0633\u062a \u0628\u0647 \u0686\u067e","option_ltr":"\u0686\u067e \u0628\u0647 \u0631\u0627\u0633\u062a","insert_date":"\u062f\u0631\u062c \u062a\u0627\u0631\u06cc\u062e/\u0632\u0645\u0627\u0646 \u0641\u0639\u0644\u06cc",remove:"\u062d\u0630\u0641","title_cite_element":"\u0639\u0646\u0635\u0631 \u0646\u0642\u0644 \u0642\u0648\u0644","title_abbr_element":"\u0639\u0646\u0635\u0631 \u0627\u062e\u062a\u0635\u0627\u0631","title_acronym_element":"\u0639\u0646\u0635\u0631 \u0645\u062e\u0641\u0641","title_del_element":"\u0639\u0646\u0635\u0631 \u062d\u0630\u0641","title_ins_element":"\u0639\u0646\u0635\u0631 \u062f\u0631\u062c","fieldset_events_tab":"\u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc \u0639\u0646\u0635\u0631","fieldset_attrib_tab":"\u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u0639\u0646\u0635\u0631","fieldset_general_tab":"\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0639\u0645\u0648\u0645\u06cc","events_tab":"\u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627","attrib_tab":"\u0648\u06cc\u0698\u06af\u06cc \u0647\u0627","general_tab":"\u0639\u0645\u0648\u0645\u06cc","attribute_attrib_tab":"\u0648\u06cc\u0698\u06af\u06cc \u0647\u0627","attribute_events_tab":"\u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627","attribute_label_accesskey":"AccessKey","attribute_label_tabindex":"TabIndex","attribute_label_langcode":"\u0632\u0628\u0627\u0646","attribute_option_rtl":"\u0631\u0627\u0633\u062a \u0628\u0647 \u0686\u067e","attribute_option_ltr":"\u0686\u067e \u0628\u0647 \u0631\u0627\u0633\u062a","attribute_label_langdir":"\u062c\u0647\u062a \u0645\u062a\u0646","attribute_label_datetime":"\u062a\u0627\u0631\u06cc\u062e/\u0632\u0645\u0627\u0646","attribute_label_cite":"\u0627\u0639\u0644\u0627\u0645\u06cc\u0647","attribute_label_style":"\u0627\u0633\u062a\u0627\u06cc\u0644","attribute_label_class":"\u06a9\u0644\u0627\u0633","attribute_label_id":"\u0634\u0646\u0627\u0633\u0647","attribute_label_title":"\u0639\u0646\u0648\u0627\u0646"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/fi_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/fi_dlg.js
deleted file mode 100644
index 58c4e7e95..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/fi_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fi.xhtmlxtras_dlg',{"attribs_title":"Lis\u00e4\u00e4/muokkaa attribuutteja","option_rtl":"Oikealta vasemmalle","option_ltr":"Vasemmalta oikealle","insert_date":"Lis\u00e4\u00e4 t\u00e4m\u00e4nhetkinen p\u00e4iv\u00e4/aika",remove:"Poista","title_cite_element":"Sitaatti elementit","title_abbr_element":"Lyhenne elementit","title_acronym_element":"Kirjainlyhenne elementit","title_del_element":"Poisto elementit","title_ins_element":"Lis\u00e4ys elementit","fieldset_events_tab":"Elementin tapahtumat","fieldset_attrib_tab":"Elementin attribuutit","fieldset_general_tab":"Yleiset asetukset","events_tab":"Tapahtumat","attrib_tab":"Attribuutit","general_tab":"Yleiset","attribute_attrib_tab":"Attribuutit","attribute_events_tab":"Tapahtumat","attribute_label_accesskey":"AccessKey","attribute_label_tabindex":"TabIndex","attribute_label_langcode":"Kieli","attribute_option_rtl":"Oikealta vasemmalle","attribute_option_ltr":"Vasemmalta oikealle","attribute_label_langdir":"Tekstin suunta","attribute_label_datetime":"P\u00e4iv\u00e4/Aika","attribute_label_cite":"Sitaatti","attribute_label_style":"Tyyli","attribute_label_class":"Luokka","attribute_label_id":"ID","attribute_label_title":"Otsikko"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/fr_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/fr_dlg.js
deleted file mode 100644
index 4ae5a3baf..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/fr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fr.xhtmlxtras_dlg',{"attribs_title":"Ins\u00e9rer / \u00e9diter les attributs","option_rtl":"De droite \u00e0 gauche","option_ltr":"De gauche \u00e0 droite","insert_date":"Ins\u00e9rer la date et l\'heure actuelles",remove:"Enlever","title_cite_element":"Citation","title_abbr_element":"Abr\u00e9viation","title_acronym_element":"Acronyme","title_del_element":"Suppression","title_ins_element":"Insertion","fieldset_events_tab":"\u00c9v\u00e9nements","fieldset_attrib_tab":"Attributs","fieldset_general_tab":"Param\u00e8tres g\u00e9n\u00e9raux","events_tab":"\u00c9v\u00e9nements","attrib_tab":"Attributs","general_tab":"G\u00e9n\u00e9ral","attribute_attrib_tab":"Attributs","attribute_events_tab":"\u00c9v\u00e8nements","attribute_label_accesskey":"Accesskey","attribute_label_tabindex":"TabIndex","attribute_label_langcode":"Langue","attribute_option_rtl":"De droite \u00e0 gauche","attribute_option_ltr":"De gauche \u00e0 droite","attribute_label_langdir":"Sens de lecture","attribute_label_datetime":"Date / heure","attribute_label_cite":"Citation","attribute_label_style":"Style","attribute_label_class":"Classe","attribute_label_id":"ID","attribute_label_title":"Titre"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/gl_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/gl_dlg.js
deleted file mode 100644
index 59fb5fe8c..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/gl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('gl.xhtmlxtras_dlg',{"attribs_title":"Insertar/Editar atributos","option_rtl":"Dereita a esquerda","option_ltr":"Esquerda a dereita","insert_date":"Insertar data/hora actuais",remove:"Suprimir","title_cite_element":"Cita","title_abbr_element":"Abreviatura","title_acronym_element":"Acr\u00f3nimo","title_del_element":"Borrar","title_ins_element":"Insertar","fieldset_events_tab":"Evento","fieldset_attrib_tab":"Atributos","fieldset_general_tab":"Configuraci\u00f3n xeral","events_tab":"Eventos","attrib_tab":"Atributos","general_tab":"Xeral","attribute_attrib_tab":"Atributos","attribute_events_tab":"Eventos","attribute_label_accesskey":"Tecla de acceso","attribute_label_tabindex":"Orde de tabulaci\u00f3n","attribute_label_langcode":"Lenguaxe","attribute_option_rtl":"Dereita a esquerda","attribute_option_ltr":"Esquerda a dereita","attribute_label_langdir":"Direcci\u00f3n de texto","attribute_label_datetime":"Data/Hora","attribute_label_cite":"Cita","attribute_label_style":"Estilo","attribute_label_class":"Clase","attribute_label_id":"ID","attribute_label_title":"T\u00edtulo"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/he_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/he_dlg.js
deleted file mode 100644
index 515536f61..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/he_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('he.xhtmlxtras_dlg',{"attribs_title":"\u05d4\u05db\u05e0\u05e1\u05ea/\u05e2\u05d3\u05db\u05d5\u05df \u05ea\u05db\u05d5\u05e0\u05d5\u05ea","option_rtl":"\u05de\u05d9\u05de\u05d9\u05df \u05dc\u05e9\u05de\u05d0\u05dc","option_ltr":"\u05de\u05e9\u05de\u05d0\u05dc \u05dc\u05d9\u05de\u05d9\u05df","insert_date":"\u05d4\u05db\u05e0\u05e1\u05ea \u05d6\u05de\u05df/\u05ea\u05d0\u05e8\u05d9\u05da \u05e0\u05d5\u05db\u05d7\u05d9",remove:"\u05d4\u05e1\u05e8","title_cite_element":"\u05e6\u05d9\u05d8\u05d5\u05d8 \u05d0\u05dc\u05de\u05e0\u05d8","title_abbr_element":"\u05e7\u05d9\u05e6\u05d5\u05e8 \u05d0\u05dc\u05de\u05e0\u05d8","title_acronym_element":"\u05e8\u05d0\u05e9\u05d9 \u05ea\u05d9\u05d1\u05d5\u05ea \u05d4\u05d0\u05dc\u05de\u05e0\u05d8","title_del_element":"\u05de\u05d7\u05d9\u05e7\u05ea \u05d0\u05dc\u05de\u05e0\u05d8","title_ins_element":"\u05d4\u05db\u05e0\u05e1\u05ea \u05d0\u05dc\u05de\u05e0\u05d8","fieldset_events_tab":"\u05d0\u05d9\u05e8\u05d5\u05e2\u05d9 \u05d4\u05d0\u05dc\u05de\u05e0\u05d8","fieldset_attrib_tab":" \u05ea\u05db\u05d5\u05e0\u05d5\u05ea \u05d4\u05d0\u05dc\u05de\u05e0\u05d8","fieldset_general_tab":"\u05d4\u05d2\u05d3\u05e8\u05d5\u05ea \u05db\u05dc\u05dc\u05d9\u05d5\u05ea","events_tab":"\u05d0\u05d9\u05e8\u05d5\u05e2\u05d9\u05dd","attrib_tab":"\u05ea\u05db\u05d5\u05e0\u05d5\u05ea","general_tab":"\u05db\u05dc\u05dc\u05d9","attribute_attrib_tab":"\u05ea\u05db\u05d5\u05e0\u05d5\u05ea","attribute_events_tab":"\u05d0\u05d9\u05e8\u05d5\u05e2\u05d9\u05dd","attribute_label_accesskey":"AccessKey","attribute_label_tabindex":"TabIndex","attribute_label_langcode":"\u05e9\u05e4\u05d4","attribute_option_rtl":"\u05de\u05d9\u05de\u05d9\u05df \u05dc\u05e9\u05de\u05d0\u05dc","attribute_option_ltr":"\u05de\u05e9\u05de\u05d0\u05dc \u05dc\u05d9\u05de\u05d9\u05df","attribute_label_langdir":"\u05db\u05d9\u05d5\u05d5\u05df \u05d4\u05d8\u05e7\u05e1\u05d8","attribute_label_datetime":"\u05ea\u05d0\u05e8\u05d9\u05da/\u05d6\u05de\u05df","attribute_label_cite":"\u05e6\u05d9\u05d8\u05d5\u05d8","attribute_label_style":"\u05e2\u05d9\u05e6\u05d5\u05d1","attribute_label_class":"\u05de\u05d7\u05dc\u05e7\u05d4","attribute_label_id":"ID","attribute_label_title":"\u05db\u05d5\u05ea\u05e8\u05ea"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/hi_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/hi_dlg.js
deleted file mode 100644
index 36d773c20..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/hi_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hi.xhtmlxtras_dlg',{"attribs_title":"Insert/Edit Attributes","option_rtl":"Right to left","option_ltr":"Left to right","insert_date":"Insert current date/time",remove:"Remove","title_cite_element":"Citation Element","title_abbr_element":"Abbreviation Element","title_acronym_element":"Acronym Element","title_del_element":"Deletion Element","title_ins_element":"Insertion Element","fieldset_events_tab":"Element Events","fieldset_attrib_tab":"Element Attributes","fieldset_general_tab":"General Settings","events_tab":"Events","attrib_tab":"Attributes","general_tab":"General","attribute_attrib_tab":"Attributes","attribute_events_tab":"Events","attribute_label_accesskey":"AccessKey","attribute_label_tabindex":"TabIndex","attribute_label_langcode":"Language","attribute_option_rtl":"Right to left","attribute_option_ltr":"Left to right","attribute_label_langdir":"Text Direction","attribute_label_datetime":"Date/Time","attribute_label_cite":"Cite","attribute_label_style":"Style","attribute_label_class":"Class","attribute_label_id":"ID","attribute_label_title":"Title"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/hr_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/hr_dlg.js
deleted file mode 100644
index 38c19db82..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/hr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hr.xhtmlxtras_dlg',{"attribs_title":"Umetni/uredi atribute","option_rtl":"S desna na lijevo","option_ltr":"S lijeva na desno","insert_date":"Umetni trenutni datum/vrijeme",remove:"Ukloni","title_cite_element":"Element citata","title_abbr_element":"Element kratice","title_acronym_element":"Element akronima","title_del_element":"Element za brisanje","title_ins_element":"Element za unos","fieldset_events_tab":"Doga\u0111aji elemenata","fieldset_attrib_tab":"Atributi elemenata","fieldset_general_tab":"Osnovne postavke","events_tab":"Doga\u0111aji","attrib_tab":"Atributi","general_tab":"Osnovno","attribute_attrib_tab":"Atributi","attribute_events_tab":"Doga\u0111aji","attribute_label_accesskey":"AccessKey","attribute_label_tabindex":"TabIndex","attribute_label_langcode":"Jezik","attribute_option_rtl":"S desna na lijevo","attribute_option_ltr":"S lijeva na desno","attribute_label_langdir":"Smjer teksta","attribute_label_datetime":"Datum/vrijeme","attribute_label_cite":"Citat","attribute_label_style":"Stil","attribute_label_class":"Klasa","attribute_label_id":"ID","attribute_label_title":"Naslov"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/hu_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/hu_dlg.js
deleted file mode 100644
index 8af166632..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/hu_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hu.xhtmlxtras_dlg',{"attribs_title":"Tulajdons\u00e1gok besz\u00far\u00e1sa/szerkeszt\u00e9se","option_rtl":"Jobbr\u00f3l balra","option_ltr":"Balr\u00f3l jobra","insert_date":"Aktu\u00e1lis d\u00e1tum/id\u0151 besz\u00far\u00e1sa",remove:"Elt\u00e1vol\u00edt\u00e1s","title_cite_element":"Id\u00e9zet elem","title_abbr_element":"R\u00f6vid\u00edt\u00e9s elem","title_acronym_element":"Bet\u0171sz\u00f3 elem","title_del_element":"T\u00f6r\u00f6lt elem","title_ins_element":"Besz\u00fart elem","fieldset_events_tab":"Elem esem\u00e9nyek","fieldset_attrib_tab":"Elem tulajdons\u00e1gok","fieldset_general_tab":"\u00c1ltal\u00e1nos be\u00e1ll\u00edt\u00e1sok","events_tab":"Esem\u00e9nyek","attrib_tab":"Tulajdons\u00e1gok","general_tab":"\u00c1ltal\u00e1nos","attribute_attrib_tab":"Tulajdons\u00e1gok","attribute_events_tab":"Esem\u00e9nyek","attribute_label_accesskey":"Gyorsbilenty\u0171","attribute_label_tabindex":"TabIndex","attribute_label_langcode":"Nyelv","attribute_option_rtl":"Jobbr\u00f3l balra","attribute_option_ltr":"Balr\u00f3l jobbra","attribute_label_langdir":"Sz\u00f6veg ir\u00e1nya","attribute_label_datetime":"D\u00e1tum/Id\u0151","attribute_label_cite":"Id\u00e9zet","attribute_label_style":"Style","attribute_label_class":"Class","attribute_label_id":"ID","attribute_label_title":"C\u00edm"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/hy_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/hy_dlg.js
deleted file mode 100644
index 2f9a0483d..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/hy_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hy.xhtmlxtras_dlg',{"attribs_title":"\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c / \u0583\u0578\u0583\u0578\u056d\u0565\u056c \u0561\u057f\u0580\u056b\u0562\u0578\u0582\u057f\u0576\u0565\u0580","option_rtl":"\u0531\u057b\u056b\u0581 \u0571\u0561\u056d","option_ltr":"\u0541\u0561\u056d\u056b\u0581 \u0561\u057b","insert_date":"\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c \u0568\u0576\u0569\u0561\u0581\u056b\u056f \u0561\u0574\u057d\u0561\u0569\u056b\u057e\u0568 / \u056a\u0561\u0574\u0568",remove:"\u0540\u0565\u057c\u0561\u0581\u0576\u0565\u056c","title_cite_element":"Citation Element","title_abbr_element":"Abbreviation Element","title_acronym_element":"Acronym Element","title_del_element":"Deletion Element","title_ins_element":"Insertion Element","fieldset_events_tab":"Element Events","fieldset_attrib_tab":"Element Attributes","fieldset_general_tab":"\u0538\u0576\u0564\u0570\u0561\u0576\u0578\u0582\u0580 \u057a\u0561\u0580\u0561\u0574\u0565\u057f\u0580\u0565\u0580","events_tab":"\u0534\u0565\u057a\u0584\u0565\u0580","attrib_tab":"\u0531\u057f\u0580\u056b\u0562\u0578\u0582\u057f\u0576\u0565\u0580","general_tab":"\u0540\u056b\u0574\u0576\u0561\u056f\u0561\u0576","attribute_attrib_tab":"\u0531\u0568\u0580\u056b\u0562\u0578\u0582\u057f\u0576\u0565\u0580","attribute_events_tab":"\u0534\u0565\u057a\u0584\u0565\u0580","attribute_label_accesskey":"AccessKey","attribute_label_tabindex":"TabIndex","attribute_label_langcode":"\u053c\u0565\u0566\u0578\u0582","attribute_option_rtl":"\u0531\u057b\u056b\u0581 \u0571\u0561\u056d","attribute_option_ltr":"\u0541\u0561\u056d\u056b\u0581 \u0561\u057b","attribute_label_langdir":"\u054f\u0565\u0584\u057d\u057f\u056b \u0578\u0582\u0572\u0572\u0578\u0582\u0569\u0575\u0578\u0582\u0576","attribute_label_datetime":"\u0531\u0574\u057d\u0561\u0569\u056b\u057e / \u053a\u0561\u0574\u0561\u0576\u0561\u056f","attribute_label_cite":"\u0544\u0565\u056f\u0576\u0561\u0562\u0561\u0576\u0578\u0582\u0569\u0575\u0578\u0582\u0576","attribute_label_style":"\u0548\u0573","attribute_label_class":"\u0534\u0561\u057d","attribute_label_id":"ID","attribute_label_title":"\u054e\u0565\u0580\u0576\u0561\u0563\u056b\u0580"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/id_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/id_dlg.js
deleted file mode 100644
index f9a392c95..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/id_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('id.xhtmlxtras_dlg',{"attribs_title":"Sisipkan/Ubah atribut","option_rtl":"Kanan ke kiri","option_ltr":"Kiri ke kanan","insert_date":"Sisipkan tanggal/waktu sekarang",remove:"Hapus","title_cite_element":"Elemen Kutipan","title_abbr_element":"Elemen Singkatan","title_acronym_element":"Elemen Akronim","title_del_element":"Elemen penghapusan","title_ins_element":"Elemen Penyisipak","fieldset_events_tab":"Element Events","fieldset_attrib_tab":"Atribut Element","fieldset_general_tab":"Pengaturan Umum","events_tab":"Events","attrib_tab":"Atribut","general_tab":"Umum","attribute_attrib_tab":"Atribut","attribute_events_tab":"Events","attribute_label_accesskey":"AccessKey","attribute_label_tabindex":"TabIndex","attribute_label_langcode":"Bahasa","attribute_option_rtl":"Kanan ke kiri","attribute_option_ltr":"Kiri ke kanan","attribute_label_langdir":"Arah Text","attribute_label_datetime":"Tanggal/waktu","attribute_label_cite":"Kutip","attribute_label_style":"Style","attribute_label_class":"Class","attribute_label_id":"ID","attribute_label_title":"Judul"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/is_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/is_dlg.js
deleted file mode 100644
index 71a87c972..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/is_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('is.xhtmlxtras_dlg',{"attribs_title":"Insert/Edit Attributes","option_rtl":"Right to left","option_ltr":"Left to right","insert_date":"Insert current date/time",remove:"Remove","title_cite_element":"Citation Element","title_abbr_element":"Abbreviation Element","title_acronym_element":"Acronym Element","title_del_element":"Deletion Element","title_ins_element":"Insertion Element","fieldset_events_tab":"Element Events","fieldset_attrib_tab":"Element Attributes","fieldset_general_tab":"General Settings","events_tab":"Events","attrib_tab":"Attributes","general_tab":"General","attribute_attrib_tab":"Attributes","attribute_events_tab":"Events","attribute_label_accesskey":"AccessKey","attribute_label_tabindex":"TabIndex","attribute_label_langcode":"Language","attribute_option_rtl":"Right to left","attribute_option_ltr":"Left to right","attribute_label_langdir":"Text Direction","attribute_label_datetime":"Date/Time","attribute_label_cite":"Cite","attribute_label_style":"Style","attribute_label_class":"Class","attribute_label_id":"ID","attribute_label_title":"Title"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/it_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/it_dlg.js
deleted file mode 100644
index 726be22c6..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/it_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('it.xhtmlxtras_dlg',{"attribs_title":"Inserisci/modifica attributi","option_rtl":"Destra verso sinistra","option_ltr":"Sinistra verso destra","insert_date":"Inserisci data/ora corrente",remove:"Rimuovi","title_cite_element":"Citazione elemento","title_abbr_element":"Abbreviazione elemento","title_acronym_element":"Acronimo elemento","title_del_element":"Cancellazione elemento","title_ins_element":"Inserimento elemento","fieldset_events_tab":"Eventi elemento","fieldset_attrib_tab":"Attributi elemento","fieldset_general_tab":"Impostazioni Generali","events_tab":"Eventi","attrib_tab":"Attributi","general_tab":"Generale","attribute_attrib_tab":"Attributi","attribute_events_tab":"Eventi","attribute_label_accesskey":"Tasto di accesso","attribute_label_tabindex":"Indice tabulazione","attribute_label_langcode":"Lingua","attribute_option_rtl":"Destra verso sinistra","attribute_option_ltr":"Sinistra verso destra","attribute_label_langdir":"Direzione del testo","attribute_label_datetime":"Date/Time","attribute_label_cite":"Citazione","attribute_label_style":"Style","attribute_label_class":"Classe","attribute_label_id":"ID","attribute_label_title":"Titolo"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/ja_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/ja_dlg.js
deleted file mode 100644
index 888522c9e..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/ja_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ja.xhtmlxtras_dlg',{"attribs_title":"\u5c5e\u6027\u306e\u633f\u5165\u3084\u524a\u9664","option_rtl":"\u53f3\u304b\u3089\u5de6","option_ltr":"\u5de6\u304b\u3089\u53f3","insert_date":"\u73fe\u5728\u306e\u65e5\u4ed8\u3084\u6642\u523b\u3092\u633f\u5165",remove:"\u524a\u9664","title_cite_element":"\u5f15\u7528\u8981\u7d20","title_abbr_element":"\u7565\u8a9e\u8981\u7d20","title_acronym_element":"\u982d\u5b57\u8a9e\u8981\u7d20","title_del_element":"\u8981\u7d20\u3092\u524a\u9664","title_ins_element":"\u8981\u7d20\u3092\u633f\u5165","fieldset_events_tab":"\u8981\u7d20\u306e\u30a4\u30d9\u30f3\u30c8","fieldset_attrib_tab":"\u8981\u7d20\u306e\u5c5e\u6027","fieldset_general_tab":"\u4e00\u822c\u7684\u306a\u8a2d\u5b9a","events_tab":"\u30a4\u30d9\u30f3\u30c8","attrib_tab":"\u5c5e\u6027","general_tab":"\u4e00\u822c","attribute_attrib_tab":"\u5c5e\u6027","attribute_events_tab":"\u30a4\u30d9\u30f3\u30c8","attribute_label_accesskey":"\u30a2\u30af\u30bb\u30b9\u30ad\u30fc","attribute_label_tabindex":"\u30bf\u30d6\u30a4\u30f3\u30c7\u30c3\u30af\u30b9","attribute_label_langcode":"\u8a00\u8a9e","attribute_option_rtl":"\u53f3\u304b\u3089\u5de6","attribute_option_ltr":"\u5de6\u304b\u3089\u53f3","attribute_label_langdir":"\u6587\u7ae0\u306e\u65b9\u5411","attribute_label_datetime":"\u65e5\u4ed8/\u6642\u523b","attribute_label_cite":"\u5f15\u7528","attribute_label_style":"\u30b9\u30bf\u30a4\u30eb","attribute_label_class":"\u30af\u30e9\u30b9","attribute_label_id":"ID","attribute_label_title":"\u30bf\u30a4\u30c8\u30eb"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/ka_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/ka_dlg.js
deleted file mode 100644
index 9898869b4..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/ka_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ka.xhtmlxtras_dlg',{"attribs_title":"\u10d4\u10da\u10d4\u10db\u10d4\u10dc\u10e2\u10d8\u10e1 \u10d7\u10d5\u10d8\u10e1\u10d4\u10d1\u10d4\u10d1\u10d8","option_rtl":"\u10db\u10d0\u10e0\u10ef\u10d5\u10dc\u10d8\u10d3\u10d0\u10dc \u10db\u10d0\u10e0\u10ea\u10ee\u10dc\u10d8\u10d5","option_ltr":"\u10db\u10d0\u10e0\u10ea\u10ee\u10dc\u10d8\u10d3\u10d0\u10dc \u10db\u10d0\u10e0\u10ef\u10d5\u10dc\u10d8\u10d5","insert_date":"\u10d7\u10d0\u10e0\u10d8\u10e6\u10d8\u10e1 \u10e9\u10d0\u10e1\u10db\u10d0",remove:"\u10ec\u10d0\u10e8\u10da\u10d0","title_cite_element":"\u10ea\u10d8\u10e2\u10d8\u10e0\u10d4\u10d1\u10d0","title_abbr_element":"\u10e8\u10d4\u10db\u10dd\u10d9\u10da\u10d4\u10d1\u10d0","title_acronym_element":"\u10d0\u10d1\u10e0\u10d8\u10d5\u10d8\u10d0\u10ea\u10d8\u10d0","title_del_element":"\u10ec\u10d0\u10e8\u10da\u10d0","title_ins_element":"\u10e8\u10d4\u10ea\u10d5\u10da\u10d0","fieldset_events_tab":"\u10d4\u10da\u10d4\u10db\u10d4\u10dc\u10e2\u10d4\u10d1\u10d8\u10e1 \u10db\u10dd\u10d5\u10da\u10d4\u10dc\u10d4\u10d1\u10d8","fieldset_attrib_tab":"\u10d4\u10da\u10d4\u10db\u10d4\u10dc\u10e2\u10d8\u10e1 \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8","fieldset_general_tab":"\u10e1\u10d0\u10d4\u10e0\u10d7\u10dd \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8","events_tab":"\u10db\u10dd\u10d5\u10da\u10d4\u10dc\u10d0","attrib_tab":"\u10d0\u10e2\u10e0\u10d8\u10d1\u10e3\u10e2\u10d8","general_tab":"\u10e1\u10d0\u10d4\u10e0\u10d7\u10dd","attribute_attrib_tab":"\u10d0\u10e2\u10e0\u10d8\u10d1\u10e3\u10e2\u10d8","attribute_events_tab":"\u10db\u10dd\u10d5\u10da\u10d4\u10dc\u10d0","attribute_label_accesskey":"\u10ec\u10d5\u10d3\u10dd\u10db\u10d8\u10e1 \u10d2\u10d0\u10e1\u10d0\u10e6\u10d4\u10d1\u10d8","attribute_label_tabindex":"\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8","attribute_label_langcode":"\u10d4\u10dc\u10d0","attribute_option_rtl":"\u10db\u10d0\u10e0\u10ef\u10d5\u10dc\u10d8\u10d3\u10d0\u10dc \u10db\u10d0\u10e0\u10ea\u10ee\u10dc\u10d8\u10d5","attribute_option_ltr":"\u10db\u10d0\u10e0\u10ea\u10ee\u10dc\u10d8\u10d3\u10d0\u10dc \u10db\u10d0\u10e0\u10ef\u10d5\u10dc\u10d8\u10d5","attribute_label_langdir":"\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1 \u10db\u10d8\u10db\u10e0\u10d7\u10e3\u10da\u10d4\u10d1\u10d0","attribute_label_datetime":"\u10d7\u10d0\u10e0\u10d8\u10e6\u10d8/\u10d3\u10e0\u10dd","attribute_label_cite":"\u10ea\u10d8\u10e2\u10d0\u10e2\u10d0","attribute_label_style":"\u10e1\u10e2\u10d8\u10da\u10d8","attribute_label_class":"\u10d9\u10da\u10d0\u10e1\u10d8","attribute_label_id":"\u10e1\u10d0\u10ee\u10d4\u10da\u10d8","attribute_label_title":"\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/ko_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/ko_dlg.js
deleted file mode 100644
index b89bd9dc6..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/ko_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ko.xhtmlxtras_dlg',{"attribs_title":"\uc18d\uc131 \uc0bd\uc785/\ud3b8\uc9d1","option_rtl":"\uc624\ub978\ucabd\uc5d0\uc11c \uc67c\ucabd\uc73c\ub85c","option_ltr":"\uc67c\ucabd\uc5d0\uc11c \uc624\ub978\ucabd\uc73c\ub85c","insert_date":"\ud604\uc7ac \ub0a0\uc9dc/\uc2dc\uac04 \uc0bd\uc785",remove:"\uc81c\uac70","title_cite_element":"\uc778\uc6a9 \uc694\uc18c","title_abbr_element":"\uc57d\uc5b4 \uc694\uc18c","title_acronym_element":"\uba38\ub9bf\uae00\uc790 \uc694\uc18c","title_del_element":"\uc0ad\uc81c \uc694\uc18c","title_ins_element":"\uc0bd\uc785 \uc694\uc18c","fieldset_events_tab":"\uc694\uc18c \uc774\ubca4\ud2b8","fieldset_attrib_tab":"\uc694\uc18c \uc18d\uc131","fieldset_general_tab":"\uc77c\ubc18 \uc124\uc815","events_tab":"\uc774\ubca4\ud2b8","attrib_tab":"\uc18d\uc131","general_tab":"\uc77c\ubc18","attribute_attrib_tab":"\uc18d\uc131","attribute_events_tab":"\uc774\ubca4\ud2b8","attribute_label_accesskey":"\uc561\uc138\uc2a4 \ud0a4","attribute_label_tabindex":"\ud0ed \uc778\ub371\uc2a4","attribute_label_langcode":"\uc5b8\uc5b4","attribute_option_rtl":"\uc624\ub978\ucabd\uc5d0\uc11c \uc67c\ucabd\uc73c\ub85c","attribute_option_ltr":"\uc67c\ucabd\uc5d0\uc11c \uc624\ub978\ucabd\uc73c\ub85c","attribute_label_langdir":"\ubb38\uc790 \ubc29\ud5a5","attribute_label_datetime":"\ub0a0\uc9dc/\uc2dc\uac04","attribute_label_cite":"\uc778\uc6a9","attribute_label_style":"\uc11c\uc2dd","attribute_label_class":"\ud074\ub798\uc2a4","attribute_label_id":"ID","attribute_label_title":"\uc81c\ubaa9"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/lt_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/lt_dlg.js
deleted file mode 100644
index ebf7cfb31..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/lt_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('lt.xhtmlxtras_dlg',{"attribs_title":"\u012eterpti/Redaguoti atributus","option_rtl":"I\u0161 de\u0161in\u0117s \u012f kair\u0119","option_ltr":"I\u0161 kair\u0117s \u012f de\u0161in\u0119","insert_date":"\u012eterpti dabartin\u0119 dat\u0105/laik\u0105",remove:"Pa\u0161alinti","title_cite_element":"Citatos elementas","title_abbr_element":"Santrumpos elementas","title_acronym_element":"Akronimo elementas","title_del_element":"Pa\u0161alinimo elementas","title_ins_element":"\u012eterpimo elementas","fieldset_events_tab":"Elemento \u012fvykiai","fieldset_attrib_tab":"Elemento atributai","fieldset_general_tab":"Bendri nustatymai","events_tab":"\u012evykiai","attrib_tab":"Atributai","general_tab":"Bendra","attribute_attrib_tab":"Atributai","attribute_events_tab":"\u012evykiai","attribute_label_accesskey":"Prieigos klavi\u0161as","attribute_label_tabindex":"Tabuliavimo indeksas","attribute_label_langcode":"Kalba","attribute_option_rtl":"I\u0161 de\u0161in\u0117s \u012f kair\u0119","attribute_option_ltr":"I\u0161 kair\u0117s \u012f de\u0161in\u0119","attribute_label_langdir":"Kalbos teksto kryptis","attribute_label_datetime":"Data/Laikas","attribute_label_cite":"Citata","attribute_label_style":"Stilius","attribute_label_class":"Klas\u0117","attribute_label_id":"ID","attribute_label_title":"Pavadinimas"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/lv_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/lv_dlg.js
deleted file mode 100644
index f41b5045d..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/lv_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('lv.xhtmlxtras_dlg',{"attribs_title":"Insert/Edit Attributes","option_rtl":"Right to left","option_ltr":"Left to right","insert_date":"Insert current date/time",remove:"Remove","title_cite_element":"Citation Element","title_abbr_element":"Abbreviation Element","title_acronym_element":"Acronym Element","title_del_element":"Deletion Element","title_ins_element":"Insertion Element","fieldset_events_tab":"Element Events","fieldset_attrib_tab":"Element Attributes","fieldset_general_tab":"General Settings","events_tab":"Events","attrib_tab":"Attributes","general_tab":"General","attribute_attrib_tab":"\u012apa\u0161\u012bbas","attribute_events_tab":"Notikumi","attribute_label_accesskey":"Pieejas poga","attribute_label_tabindex":"TabIndex","attribute_label_langcode":"Valoda","attribute_option_rtl":"No labas puses uz kreiso","attribute_option_ltr":"No kreisas puses uz labo","attribute_label_langdir":"Teksta v\u012brziens","attribute_label_datetime":"Datums/Laiks","attribute_label_cite":"Cite","attribute_label_style":"Stils","attribute_label_class":"Klase","attribute_label_id":"ID","attribute_label_title":"Nosaukums"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/mk_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/mk_dlg.js
deleted file mode 100644
index 0e7d13a11..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/mk_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('mk.xhtmlxtras_dlg',{"attribs_title":"\u0412\u043d\u0435\u0441\u0438/\u0443\u0440\u0435\u0434\u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0438","option_rtl":"\u041e\u0434 \u0434\u0435\u0441\u043d\u043e \u043d\u0430 \u043b\u0435\u0432\u043e","option_ltr":"\u041e\u0434 \u043b\u0435\u0432\u043e \u043d\u0430 \u0434\u0435\u0441\u043d\u043e","insert_date":"\u0412\u043d\u0435\u0441\u0438 \u0442\u0435\u043a\u043e\u0432\u0435\u043d \u0434\u0430\u0442\u0443\u043c/\u0432\u0440\u0435\u043c\u0435",remove:"\u041e\u0434\u0441\u0442\u0440\u0430\u043d\u0438","title_cite_element":"\u0415\u043b\u0435\u043c\u0435\u043d\u0442 \u0446\u0438\u0442\u0430\u0442","title_abbr_element":"\u0415\u043b\u0435\u043c\u0435\u043d\u0442 \u043a\u0440\u0430\u0442\u0435\u043d\u043a\u0430","title_acronym_element":"\u0415\u043b\u0435\u043c\u0435\u043d\u0442 \u0430\u043a\u0440\u043e\u043d\u0438\u043c","title_del_element":"\u0415\u043b\u0435\u043c\u0435\u043d\u0442 \u0437\u0430 \u0431\u0440\u0438\u0448\u0435\u045a\u0435","title_ins_element":"\u0415\u043b\u0435\u043c\u0435\u043d\u0442 \u0437\u0430 \u0432\u043d\u0435\u0441","fieldset_events_tab":"\u0415\u043b\u0435\u043c\u0435\u043d\u0442 \u0437\u0430 \u043d\u0430\u0441\u0442\u0430\u043d\u0438","fieldset_attrib_tab":"\u0415\u043b\u0435\u043c\u0435\u043d\u0442 \u0437\u0430 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0438","fieldset_general_tab":"\u041e\u0441\u043d\u043e\u0432\u043d\u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u0443\u0432\u0430\u045a\u0430","events_tab":"\u041d\u0430\u0441\u0442\u0430\u043d\u0438","attrib_tab":"\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u0438","general_tab":"\u041e\u0441\u043d\u043e\u0432\u043d\u043e","attribute_attrib_tab":"\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u0438","attribute_events_tab":"\u041d\u0430\u0441\u0442\u0430\u043d\u0438","attribute_label_accesskey":"\u041a\u043b\u0443\u0447 \u0437\u0430 \u043f\u0440\u0438\u0441\u0442\u0430\u043f","attribute_label_tabindex":"TabIndex","attribute_label_langcode":"\u0408\u0430\u0437\u0438\u043a","attribute_option_rtl":"\u041e\u0434 \u0434\u0435\u0441\u043d\u043e \u043d\u0430 \u043b\u0435\u0432\u043e","attribute_option_ltr":"\u041e\u0434 \u043b\u0435\u0432\u043e \u043d\u0430 \u0434\u0435\u0441\u043d\u043e","attribute_label_langdir":"\u0421\u043c\u0435\u0440 \u043d\u0430 \u0458\u0430\u0437\u0438\u043a\u043e\u0442","attribute_label_datetime":"\u0414\u0430\u0442\u0443\u043c/\u0432\u0440\u0435\u043c\u0435","attribute_label_cite":"\u0426\u0438\u0442\u0430\u0442","attribute_label_style":"\u0421\u0442\u0438\u043b","attribute_label_class":"\u041a\u043b\u0430\u0441\u0430","attribute_label_id":"\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0458\u0430 (Id)","attribute_label_title":"\u041d\u0430\u0441\u043b\u043e\u0432"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/ms_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/ms_dlg.js
deleted file mode 100644
index 19db57528..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/ms_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ms.xhtmlxtras_dlg',{"attribs_title":"Masukkan/Sunting Ciri-ciri","option_rtl":"Kanan ke kiri","option_ltr":"Kiri ke kanan","insert_date":"Masukkan tarikh/masa sekarang",remove:"Alih","title_cite_element":"Kutipan Unsur","title_abbr_element":"Singkatan Unsur","title_acronym_element":"Akronim Unsur","title_del_element":"Pemadaman Unsur","title_ins_element":"Kemasukkan Unsur","fieldset_events_tab":"Unsur Peristiwa","fieldset_attrib_tab":"Unsur Ciri-ciri","fieldset_general_tab":"Susunan Am","events_tab":"Peristiwa","attrib_tab":"Ciri-ciri","general_tab":"Am","attribute_attrib_tab":"Ciri-ciri","attribute_events_tab":"Peristiwa","attribute_label_accesskey":"Kunci akses","attribute_label_tabindex":"Tanda indeks","attribute_label_langcode":"Bahasa","attribute_option_rtl":"Kanan ke kiri","attribute_option_ltr":"Kiri ke kanan","attribute_label_langdir":"Arah Teks","attribute_label_datetime":"Tarikh/Masa","attribute_label_cite":"Cuplik","attribute_label_style":"Gaya","attribute_label_class":"Kelas","attribute_label_id":"ID","attribute_label_title":"Tajuk"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/nb_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/nb_dlg.js
deleted file mode 100644
index e5207ebc6..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/nb_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nb.xhtmlxtras_dlg',{"attribs_title":"Sett inn / endre attributter","option_rtl":"H\u00f8yre mot venstre","option_ltr":"Venstre mot h\u00f8yre","insert_date":"Sett inn dato/tid",remove:"Fjern","title_cite_element":"Sitatelement","title_abbr_element":"Forkortelseselement","title_acronym_element":"Akronymelement","title_del_element":"Sletteelement","title_ins_element":"Innsettingselement","fieldset_events_tab":"Elementhendelser","fieldset_attrib_tab":"Elementattributter","fieldset_general_tab":"Generelle innstillinger","events_tab":"Hendelser","attrib_tab":"Attributter","general_tab":"Generelt","attribute_attrib_tab":"Attributter","attribute_events_tab":"Hendelser","attribute_label_accesskey":"Tilgangsn\u00f8kkel","attribute_label_tabindex":"Tabuleringsindeks","attribute_label_langcode":"Spr\u00e5k","attribute_option_rtl":"H\u00f8yre til venstre","attribute_option_ltr":"Venstre til h\u00f8yre","attribute_label_langdir":"Tekstretning","attribute_label_datetime":"Dato/tid","attribute_label_cite":"Sted","attribute_label_style":"Stil","attribute_label_class":"Klasse","attribute_label_id":"ID","attribute_label_title":"Tittel"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/nl_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/nl_dlg.js
deleted file mode 100644
index 5708ddfe4..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/nl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nl.xhtmlxtras_dlg',{"attribs_title":"Attributen Invoegen/bewerken","option_rtl":"Van rechts naar links","option_ltr":"Van links naar rechts","insert_date":"Huidige datum/tijd invoegen",remove:"Verwijderen","title_cite_element":"Citaat","title_abbr_element":"Afkorting","title_acronym_element":"Synoniem","title_del_element":"Verwijderingselement","title_ins_element":"Invoegingselement","fieldset_events_tab":"Element Gebeurtenissen","fieldset_attrib_tab":"Elementattributen","fieldset_general_tab":"Algemene instellingen","events_tab":"Gebeurtenissen","attrib_tab":"Attributen","general_tab":"Algemeen","attribute_attrib_tab":"Attributen","attribute_events_tab":"Gebeurtenissen","attribute_label_accesskey":"Toegangstoets","attribute_label_tabindex":"Tabvolgorde","attribute_label_langcode":"Taal","attribute_option_rtl":"Van rechts naar links","attribute_option_ltr":"Van links naar rechts","attribute_label_langdir":"Tekstrichting","attribute_label_datetime":"Datum/Tijd","attribute_label_cite":"Citaat","attribute_label_style":"Stijl","attribute_label_class":"Klasse","attribute_label_id":"ID","attribute_label_title":"Titel"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/nn_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/nn_dlg.js
deleted file mode 100644
index 415d7245e..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/nn_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nn.xhtmlxtras_dlg',{"attribs_title":"Set inn / endre attributt","option_rtl":"H\u00f8gre mot venstre","option_ltr":"Venstre mot h\u00f8gre","insert_date":"Set inn dato/ti",remove:"Fjern","title_cite_element":"Sitatelement","title_abbr_element":"Forkortingselement","title_acronym_element":"Akronymelement","title_del_element":"Sletteelement","title_ins_element":"Innsetjingselement","fieldset_events_tab":"Elementhendingar","fieldset_attrib_tab":"Elementattributtar","fieldset_general_tab":"Generelle innstillingar","events_tab":"Hendingar","attrib_tab":"Attributtar","general_tab":"Generelt","attribute_attrib_tab":"Attributt","attribute_events_tab":"Hendingar","attribute_label_accesskey":"Tilgangsn\u00f8kkel","attribute_label_tabindex":"Tabuleringsindeks","attribute_label_langcode":"Spr\u00e5k","attribute_option_rtl":"H\u00f8gre mot venstre","attribute_option_ltr":"Venstre mot h\u00f8gre","attribute_label_langdir":"Tekstretning","attribute_label_datetime":"Dato/tid","attribute_label_cite":"Stad","attribute_label_style":"Stil","attribute_label_class":"Klasse","attribute_label_id":"ID","attribute_label_title":"Tittel"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/pl_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/pl_dlg.js
deleted file mode 100644
index a409dd326..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/pl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('pl.xhtmlxtras_dlg',{"attribs_title":"Wklej/edytuj atrybuty","option_rtl":"Kierunek z prawej do lewej","option_ltr":"Kierunek z lewej do prawej","insert_date":"Wklej aktualn\u0105 dat\u0119/czas",remove:"Usu\u0144","title_cite_element":"Cytat","title_abbr_element":"Skr\u00f3t","title_acronym_element":"Akronim","title_del_element":"Usuni\u0119cie","title_ins_element":"Wstawienie","fieldset_events_tab":"Zdarzenia","fieldset_attrib_tab":"Atrybuty","fieldset_general_tab":"G\u0142\u00f3wne ustawienia","events_tab":"Zdarzenia","attrib_tab":"Atrybuty","general_tab":"G\u0142\u00f3wny","attribute_attrib_tab":"Atrybuty","attribute_events_tab":"Zdarzenia","attribute_label_accesskey":"Klawisz skr\u00f3tu","attribute_label_tabindex":"Numer tabulacji","attribute_label_langcode":"J\u0119zyk","attribute_option_rtl":"Kierunek z prawej do lewej","attribute_option_ltr":"Kierunek z lewej do prawej","attribute_label_langdir":"Kierunek czytania tekstu","attribute_label_datetime":"Data/Czas","attribute_label_cite":"Cytat","attribute_label_style":"Styl","attribute_label_class":"Klasa","attribute_label_id":"ID","attribute_label_title":"Tytu\u0142"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/ps_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/ps_dlg.js
deleted file mode 100644
index e0d668add..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/ps_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ps.xhtmlxtras_dlg',{"attribs_title":"Insert/Edit Attributes","option_rtl":"Right to left","option_ltr":"Left to right","insert_date":"Insert current date/time",remove:"Remove","title_cite_element":"Citation Element","title_abbr_element":"Abbreviation Element","title_acronym_element":"Acronym Element","title_del_element":"Deletion Element","title_ins_element":"Insertion Element","fieldset_events_tab":"Element Events","fieldset_attrib_tab":"Element Attributes","fieldset_general_tab":"General Settings","events_tab":"Events","attrib_tab":"Attributes","general_tab":"General","attribute_attrib_tab":"Attributes","attribute_events_tab":"Events","attribute_label_accesskey":"AccessKey","attribute_label_tabindex":"TabIndex","attribute_label_langcode":"Language","attribute_option_rtl":"Right to left","attribute_option_ltr":"Left to right","attribute_label_langdir":"Text Direction","attribute_label_datetime":"Date/Time","attribute_label_cite":"Cite","attribute_label_style":"Style","attribute_label_class":"Class","attribute_label_id":"ID","attribute_label_title":"Title"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/pt_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/pt_dlg.js
deleted file mode 100644
index 520eaa535..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/pt_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('pt.xhtmlxtras_dlg',{"attribs_title":"Inserir/editar atributos","option_rtl":"Da direita para a esquerda","option_ltr":"Da esquerda para a direita","insert_date":"Inserir data/hora",remove:"Remover","title_cite_element":"Cita\u00e7\u00e3o","title_abbr_element":"Abrevia\u00e7\u00e3o","title_acronym_element":"Acr\u00f4nimo","title_del_element":"Apagar","title_ins_element":"Inserir","fieldset_events_tab":"Eventos","fieldset_attrib_tab":"Atributos","fieldset_general_tab":"Configura\u00e7\u00f5es gerais","events_tab":"Eventos","attrib_tab":"Atributos","general_tab":"Geral","attribute_attrib_tab":"Atributos","attribute_events_tab":"Eventos","attribute_label_accesskey":"Tecla de Atalho","attribute_label_tabindex":"TabIndex","attribute_label_langcode":"Idioma","attribute_option_rtl":"Da direita para a esquerda","attribute_option_ltr":"Da esquerda para a direita","attribute_label_langdir":"Dire\u00e7\u00e3o do texto","attribute_label_datetime":"Data/Hora","attribute_label_cite":"Citar","attribute_label_style":"Estilo","attribute_label_class":"Classe","attribute_label_id":"ID","attribute_label_title":"T\u00edtulo"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/ro_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/ro_dlg.js
deleted file mode 100644
index bb802193c..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/ro_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ro.xhtmlxtras_dlg',{"attribs_title":"Inserare atribute","option_rtl":"De la dreapta la st\u00e2nga","option_ltr":"De la st\u00e2nga la dreapta","insert_date":"Inserare dat\u0103/or\u0103 curent\u0103",remove:"Scoate","title_cite_element":"Citare","title_abbr_element":"Abreviere","title_acronym_element":"Acronim","title_del_element":"\u0218tergere element","title_ins_element":"Inserare element","fieldset_events_tab":"Evenimente element","fieldset_attrib_tab":"Atribute element","fieldset_general_tab":"Set\u0103ri generale","events_tab":"Evenimente","attrib_tab":"Atribute","general_tab":"General","attribute_attrib_tab":"Atribute","attribute_events_tab":"Evenimente","attribute_label_accesskey":"Tast\u0103 de acces","attribute_label_tabindex":"TabIndex","attribute_label_langcode":"Limb\u0103","attribute_option_rtl":"De la dreapta la st\u00e2nga","attribute_option_ltr":"De la st\u00e2nga la dreapta","attribute_label_langdir":"Direc\u021bie text","attribute_label_datetime":"Dat\u0103/or\u0103","attribute_label_cite":"Citat","attribute_label_style":"Stil","attribute_label_class":"Clas\u0103","attribute_label_id":"ID","attribute_label_title":"Titlu"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/ru_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/ru_dlg.js
deleted file mode 100644
index bd25335d6..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/ru_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ru.xhtmlxtras_dlg',{"attribs_title":"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430","option_rtl":"\u0421\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0435\u0432\u043e","option_ltr":"\u0421\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e","insert_date":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0434\u0430\u0442\u0443/\u0432\u0440\u0435\u043c\u044f",remove:"\u0423\u0434\u0430\u043b\u0438\u0442\u044c","title_cite_element":"\u0426\u0438\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435","title_abbr_element":"\u0421\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0435","title_acronym_element":"\u0410\u0431\u0431\u0440\u0435\u0432\u0438\u0430\u0446\u0438\u044f","title_del_element":"\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435","title_ins_element":"\u0417\u0430\u043c\u0435\u043d\u0430","fieldset_events_tab":"\u0421\u043e\u0431\u044b\u0442\u0438\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430","fieldset_attrib_tab":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430","fieldset_general_tab":"\u041e\u0431\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b","events_tab":"\u0421\u043e\u0431\u044b\u0442\u0438\u044f","attrib_tab":"\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u044b","general_tab":"\u041e\u0431\u0449\u0435\u0435","attribute_attrib_tab":"\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u044b","attribute_events_tab":"\u0421\u043e\u0431\u044b\u0442\u0438\u044f","attribute_label_accesskey":"\u041a\u043b\u044e\u0447 \u0434\u043e\u0441\u0442\u0443\u043f\u0430","attribute_label_tabindex":"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a","attribute_label_langcode":"\u042f\u0437\u044b\u043a","attribute_option_rtl":"\u0421\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0435\u0432\u043e","attribute_option_ltr":"\u0421\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e","attribute_label_langdir":"\u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430","attribute_label_datetime":"\u0414\u0430\u0442\u0430/\u0412\u0440\u0435\u043c\u044f","attribute_label_cite":"\u0426\u0438\u0442\u0430\u0442\u0430","attribute_label_style":"\u0421\u0442\u0438\u043b\u044c","attribute_label_class":"\u041a\u043b\u0430\u0441\u0441","attribute_label_id":"\u0418\u043c\u044f","attribute_label_title":"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/si_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/si_dlg.js
deleted file mode 100644
index 4d44aa567..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/si_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('si.xhtmlxtras_dlg',{"attribs_title":"Insert/Edit Attributes","option_rtl":"Right to left","option_ltr":"Left to right","insert_date":"Insert current date/time",remove:"Remove","title_cite_element":"Citation Element","title_abbr_element":"Abbreviation Element","title_acronym_element":"Acronym Element","title_del_element":"Deletion Element","title_ins_element":"Insertion Element","fieldset_events_tab":"Element Events","fieldset_attrib_tab":"Element Attributes","fieldset_general_tab":"General Settings","events_tab":"Events","attrib_tab":"Attributes","general_tab":"General","attribute_attrib_tab":"Attributes","attribute_events_tab":"Events","attribute_label_accesskey":"AccessKey","attribute_label_tabindex":"TabIndex","attribute_label_langcode":"Language","attribute_option_rtl":"Right to left","attribute_option_ltr":"Left to right","attribute_label_langdir":"Text Direction","attribute_label_datetime":"Date/Time","attribute_label_cite":"Cite","attribute_label_style":"Style","attribute_label_class":"Class","attribute_label_id":"ID","attribute_label_title":"Title"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/sk_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/sk_dlg.js
deleted file mode 100644
index 3ee6e8b5d..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/sk_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sk.xhtmlxtras_dlg',{"attribs_title":"Vlo\u017ei\u0165/upravi\u0165 atrib\u00faty","option_rtl":"Sprava do\u013eava","option_ltr":"Z\u013eava doprava","insert_date":"Vlo\u017ei\u0165 aktu\u00e1lny d\u00e1tum/\u010das",remove:"Odstr\u00e1ni\u0165","title_cite_element":"Cit\u00e1cia","title_abbr_element":"Skratka","title_acronym_element":"Akronym","title_del_element":"Odstr\u00e1nen\u00fd text","title_ins_element":"Pridan\u00fd text","fieldset_events_tab":"Atrib\u00faty udalost\u00ed","fieldset_attrib_tab":"Atrib\u00faty prvku","fieldset_general_tab":"Obecn\u00e9 parametre","events_tab":"Udalosti","attrib_tab":"Atrib\u00faty","general_tab":"Obecn\u00e9","attribute_attrib_tab":"Atrib\u00faty","attribute_events_tab":"Udalosti","attribute_label_accesskey":"Kl\u00e1vesov\u00e1 skratka","attribute_label_tabindex":"Poradie pre tabul\u00e1tor","attribute_label_langcode":"Jazyk","attribute_option_rtl":"Sprava do\u013eava","attribute_option_ltr":"Z\u013eava doprava","attribute_label_langdir":"Smer textu","attribute_label_datetime":"D\u00e1tum/\u010das","attribute_label_cite":"Cit\u00e1cia","attribute_label_style":"\u0160t\u00fdl","attribute_label_class":"Trieda","attribute_label_id":"ID","attribute_label_title":"Titulok"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/sl_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/sl_dlg.js
deleted file mode 100644
index 09cb321e5..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/sl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sl.xhtmlxtras_dlg',{"attribs_title":"Vstavi/uredi atribute","option_rtl":"Od desne proti levi","option_ltr":"Od leve proti desni","insert_date":"Vstavi trenutni datum/\u010das",remove:"Odstrani","title_cite_element":"Citat","title_abbr_element":"Okraj\u0161ava","title_acronym_element":"Kratica","title_del_element":"Izbrisano","title_ins_element":"Vstavljeno","fieldset_events_tab":"Dogodki elementa","fieldset_attrib_tab":"Atributi elementa","fieldset_general_tab":"Splo\u0161ne nastavitve","events_tab":"Dogodki","attrib_tab":"Atributi","general_tab":"Splo\u0161no","attribute_attrib_tab":"Atributi","attribute_events_tab":"Dogodki","attribute_label_accesskey":"Tipka dostopa","attribute_label_tabindex":"Zap. \u0161t.","attribute_label_langcode":"Jezik","attribute_option_rtl":"Od desne proti levi","attribute_option_ltr":"Od leve proti desni","attribute_label_langdir":"Smer pisave","attribute_label_datetime":"Datum/ura","attribute_label_cite":"Citat","attribute_label_style":"Slog","attribute_label_class":"Razred","attribute_label_id":"Id","attribute_label_title":"Naslov"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/sq_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/sq_dlg.js
deleted file mode 100644
index 27641487a..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/sq_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sq.xhtmlxtras_dlg',{"attribs_title":"Fut/Edito Tipare","option_rtl":"Djathtas-Majtas","option_ltr":"Majtas-Djathtas","insert_date":"Fut dat\u00ebn/or\u00ebn aktuale",remove:"Fshi","title_cite_element":"Element Citat","title_abbr_element":"Element Shkurtimi","title_acronym_element":"Element Akronim","title_del_element":"Element Fshir\u00ebs","title_ins_element":"Element Fut\u00ebs","fieldset_events_tab":"Ngjarjet e elementit","fieldset_attrib_tab":"Tiparet e elementit","fieldset_general_tab":"Opsionet e P\u00ebrgjithshme","events_tab":"Ngjarjet","attrib_tab":"Tiparet","general_tab":"T\u00eb P\u00ebrgjithshme","attribute_attrib_tab":"Tiparet","attribute_events_tab":"Ngjarjet","attribute_label_accesskey":"Butoni i aksesit","attribute_label_tabindex":"Indeksi i Tab","attribute_label_langcode":"Gjuha","attribute_option_rtl":"Djathtas-Majtas","attribute_option_ltr":"Majtas-Djathtas","attribute_label_langdir":"Drejtimi i tekstit","attribute_label_datetime":"Data/Ora","attribute_label_cite":"Citati","attribute_label_style":"Stili","attribute_label_class":"Klasa","attribute_label_id":"ID","attribute_label_title":"Titulli"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/sr_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/sr_dlg.js
deleted file mode 100644
index 8d72ccc67..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/sr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sr.xhtmlxtras_dlg',{"attribs_title":"Umetni/Uredi atribute","option_rtl":"Zdesna nalevo","option_ltr":"Sleva nadesno","insert_date":"Ubaci sada\u0161nji datum/vreme",remove:"Ukloni","title_cite_element":"Element za citat","title_abbr_element":"Element za skra\u0107enicu","title_acronym_element":"Element za akronim","title_del_element":"Element za brisanje","title_ins_element":"Element za umetanje ","fieldset_events_tab":"Element za doga\u0111aje","fieldset_attrib_tab":"Element za atribute","fieldset_general_tab":"Osnovna pode\u0161avanja","events_tab":"Doga\u0111aji","attrib_tab":"Atributi","general_tab":"Osnovno","attribute_attrib_tab":"Atributi","attribute_events_tab":"Doga\u0111aji","attribute_label_accesskey":"Taster za pristup","attribute_label_tabindex":"TabIndex","attribute_label_langcode":"Jezik","attribute_option_rtl":"Zdesna nalevo","attribute_option_ltr":"Sleva nadesno","attribute_label_langdir":"Smer teksta","attribute_label_datetime":"Datum/Vreme","attribute_label_cite":"Citat","attribute_label_style":"Stil","attribute_label_class":"Klasa","attribute_label_id":"ID","attribute_label_title":"Naslov"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/sv_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/sv_dlg.js
deleted file mode 100644
index 71847974c..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/sv_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sv.xhtmlxtras_dlg',{"attribs_title":"Redigera attribut","option_rtl":"H\u00f6ger till v\u00e4nster","option_ltr":"V\u00e4nster till h\u00f6ger","insert_date":"Infoga nuvarande datum och tid",remove:"Radera","title_cite_element":"Citat","title_abbr_element":"F\u00f6rkortning","title_acronym_element":"Akronym","title_del_element":"Markera som struket","title_ins_element":"Markera som tillagt","fieldset_events_tab":"H\u00e4ndelser","fieldset_attrib_tab":"Attribut","fieldset_general_tab":"Generella inst\u00e4llningar","events_tab":"H\u00e4ndelser","attrib_tab":"Attribut","general_tab":"Generellt","attribute_attrib_tab":"Attribut","attribute_events_tab":"H\u00e4ndelser","attribute_label_accesskey":"Snabbtangent","attribute_label_tabindex":"Tabbindex","attribute_label_langcode":"Spr\u00e5k","attribute_option_rtl":"H\u00f6ger till v\u00e4nster","attribute_option_ltr":"V\u00e4nster till h\u00f6ger","attribute_label_langdir":"Skriftriktning","attribute_label_datetime":"Datum/Tid","attribute_label_cite":"Citat","attribute_label_style":"Stil","attribute_label_class":"Klass","attribute_label_id":"ID","attribute_label_title":"Titel"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/ta_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/ta_dlg.js
deleted file mode 100644
index 3079423b1..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/ta_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ta.xhtmlxtras_dlg',{"attribs_title":"Insert/Edit Attributes","option_rtl":"Right to left","option_ltr":"Left to right","insert_date":"Insert current date/time",remove:"Remove","title_cite_element":"Citation Element","title_abbr_element":"Abbreviation Element","title_acronym_element":"Acronym Element","title_del_element":"Deletion Element","title_ins_element":"Insertion Element","fieldset_events_tab":"Element Events","fieldset_attrib_tab":"Element Attributes","fieldset_general_tab":"General Settings","events_tab":"Events","attrib_tab":"Attributes","general_tab":"General","attribute_attrib_tab":"Attributes","attribute_events_tab":"Events","attribute_label_accesskey":"AccessKey","attribute_label_tabindex":"TabIndex","attribute_label_langcode":"Language","attribute_option_rtl":"Right to left","attribute_option_ltr":"Left to right","attribute_label_langdir":"Text Direction","attribute_label_datetime":"Date/Time","attribute_label_cite":"Cite","attribute_label_style":"Style","attribute_label_class":"Class","attribute_label_id":"ID","attribute_label_title":"Title"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/th_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/th_dlg.js
deleted file mode 100644
index c5e2eb43e..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/th_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('th.xhtmlxtras_dlg',{"attribs_title":"\u0e40\u0e1e\u0e34\u0e48\u0e21/\u0e41\u0e01\u0e49\u0e44\u0e02 Attributes","option_rtl":"\u0e02\u0e27\u0e32\u0e44\u0e1b\u0e0b\u0e49\u0e32\u0e22","option_ltr":"\u0e0b\u0e49\u0e32\u0e22\u0e44\u0e1b\u0e02\u0e27\u0e32","insert_date":"\u0e40\u0e1e\u0e34\u0e48\u0e21 \u0e27\u0e31\u0e19/\u0e40\u0e27\u0e25\u0e32",remove:"\u0e25\u0e1a","title_cite_element":"Citation Element","title_abbr_element":"Abbreviation Element","title_acronym_element":"Acronym Element","title_del_element":"Deletion Element","title_ins_element":"Insertion Element","fieldset_events_tab":"Element Event","fieldset_attrib_tab":"Element Attributes","fieldset_general_tab":"\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e17\u0e31\u0e48\u0e27\u0e44\u0e1b","events_tab":"\u0e01\u0e34\u0e08\u0e01\u0e23\u0e23\u0e21","attrib_tab":"Attributes","general_tab":"\u0e17\u0e31\u0e48\u0e27\u0e44\u0e1b","attribute_attrib_tab":"Attributes","attribute_events_tab":"Event","attribute_label_accesskey":"\u0e1b\u0e38\u0e48\u0e21\u0e25\u0e31\u0e14","attribute_label_tabindex":"\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e41\u0e17\u0e47\u0e1a","attribute_label_langcode":"\u0e20\u0e32\u0e29\u0e32","attribute_option_rtl":"\u0e02\u0e27\u0e32\u0e44\u0e1b\u0e0b\u0e49\u0e32\u0e22","attribute_option_ltr":"\u0e0b\u0e49\u0e32\u0e22\u0e44\u0e1b\u0e02\u0e27\u0e32","attribute_label_langdir":"\u0e17\u0e34\u0e28\u0e17\u0e32\u0e07\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23","attribute_label_datetime":"\u0e27\u0e31\u0e19/\u0e40\u0e27\u0e25\u0e32","attribute_label_cite":"Cite","attribute_label_style":"\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a","attribute_label_class":"\u0e04\u0e25\u0e32\u0e2a","attribute_label_id":"ID","attribute_label_title":"\u0e0a\u0e37\u0e48\u0e2d"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/tr_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/tr_dlg.js
deleted file mode 100644
index cca543566..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/tr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('tr.xhtmlxtras_dlg',{"attribs_title":"Nitelik ekle/d\u00fczenle","option_rtl":"Soldan sa\u011fa","option_ltr":"Sa\u011fdan sola","insert_date":"\u015euan ki tarih/saati ekle",remove:"Sil","title_cite_element":"Nesne Al\u0131nt\u0131s\u0131","title_abbr_element":"Nesne K\u0131saltmas\u0131","title_acronym_element":"Nense K\u0131sa ad\u0131","title_del_element":"Nesne Silme","title_ins_element":"Nesne Ekleme","fieldset_events_tab":"Nesne Olaylar\u0131","fieldset_attrib_tab":"Nesne Nitelikleri","fieldset_general_tab":"Genel Ayarlar","events_tab":"Olaylar","attrib_tab":"Nitelikler","general_tab":"Genel","attribute_attrib_tab":"Nitelikler","attribute_events_tab":"Olaylar","attribute_label_accesskey":"Eri\u015fim Tu\u015fu","attribute_label_tabindex":"Sekme indeksi","attribute_label_langcode":"Dil","attribute_option_rtl":"Soldan sa\u011fa","attribute_option_ltr":"Sa\u011fdan sola","attribute_label_langdir":"Metnin y\u00f6n\u00fc","attribute_label_datetime":"Tarih/Saat","attribute_label_cite":"Al\u0131nt\u0131 yapmak","attribute_label_style":"Stil","attribute_label_class":"S\u0131n\u0131f","attribute_label_id":"ID","attribute_label_title":"Ba\u015fl\u0131k"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/uk_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/uk_dlg.js
deleted file mode 100644
index 1dbf92892..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/uk_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('uk.xhtmlxtras_dlg',{"attribs_title":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438/\u0437\u043c\u0456\u043d\u0438\u0442\u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0438","option_rtl":"\u0421\u043f\u0440\u0430\u0432\u0430 \u043b\u0456\u0432\u043e\u0440\u0443\u0447","option_ltr":"\u0417\u043b\u0456\u0432\u0430 \u043f\u0440\u0430\u0432\u043e\u0440\u0443\u0447","insert_date":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u043f\u043e\u0442\u043e\u0447\u043d\u0456 \u0434\u0430\u0442\u0443/\u0447\u0430\u0441",remove:"\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438","title_cite_element":"\u0415\u043b\u0435\u043c\u0435\u043d\u0442 \u0446\u0438\u0442\u0443\u0432\u0430\u043d\u043d\u044f","title_abbr_element":"\u0415\u043b\u0435\u043c\u0435\u043d\u0442 \u0430\u0431\u0440\u0435\u0432\u0456\u0430\u0442\u0443\u0440\u0438","title_acronym_element":"\u0415\u043b\u0435\u043c\u0435\u043d\u0442 \u0430\u043a\u0440\u043e\u043d\u0456\u043c\u0443","title_del_element":"\u0415\u043b\u0435\u043c\u0435\u043d\u0442 \u0432\u0438\u0434\u0430\u043b\u0435\u043d\u043d\u044f","title_ins_element":"\u0415\u043b\u0435\u043c\u0435\u043d\u0442 \u0432\u0441\u0442\u0430\u0432\u043a\u0438","fieldset_events_tab":"\u041f\u043e\u0434\u0456\u0457 \u0435\u043b\u0435\u043c\u0435\u043d\u0442\u0443","fieldset_attrib_tab":"\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u0438 \u0435\u043b\u0435\u043c\u0435\u043d\u0442\u0443","fieldset_general_tab":"\u0417\u0430\u0433\u0430\u043b\u044c\u043d\u0456 \u043d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f","events_tab":"\u041f\u043e\u0434\u0456\u0457","attrib_tab":"\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u0438","general_tab":"\u0417\u0430\u0433\u0430\u043b\u044c\u043d\u0435","attribute_attrib_tab":"\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u0438","attribute_events_tab":"\u041f\u043e\u0434\u0456\u0457","attribute_label_accesskey":"\u041a\u043b\u0430\u0432\u0456\u0448\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0443","attribute_label_tabindex":"\u0422\u0430\u0431\u0456\u043d\u0434\u0435\u043a\u0441","attribute_label_langcode":"\u041c\u043e\u0432\u0430","attribute_option_rtl":"\u0421\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0456\u0432\u043e","attribute_option_ltr":"\u0417\u043b\u0456\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e","attribute_label_langdir":"\u041d\u0430\u043f\u0440\u044f\u043c \u0442\u0435\u043a\u0441\u0442\u0443","attribute_label_datetime":"\u0414\u0430\u0442\u0430/\u0427\u0430\u0441","attribute_label_cite":"\u0426\u0438\u0442\u0430\u0442\u0430","attribute_label_style":"\u0421\u0442\u0438\u043b\u044c","attribute_label_class":"\u041a\u043b\u0430\u0441","attribute_label_id":"\u0406\u0434\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0442\u043e\u0440","attribute_label_title":"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/vi_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/vi_dlg.js
deleted file mode 100644
index 227659a5e..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/vi_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('vi.xhtmlxtras_dlg',{"attribs_title":"Ch\u00e8n/S\u1eeda thu\u1ed9c t\u00ednh","option_rtl":"Ph\u1ea3i qua tr\u00e1i","option_ltr":"Tr\u00e1i qua ph\u1ea3i","insert_date":"Ch\u00e8n ng\u00e0y/gi\u1edd hi\u1ec7n th\u1eddi",remove:"Lo\u1ea1i b\u1ecf","title_cite_element":"Bi\u00ea\u0309u ch\u01b0\u01a1ng ph\u1ea7n t\u1eed","title_abbr_element":"T\u00ean vi\u1ebft t\u1eaft ph\u1ea7n t\u1eed","title_acronym_element":"Vi\u1ebft t\u1eaft ph\u1ea7n t\u1eed","title_del_element":"X\u00f3a ph\u1ea7n t\u1eed","title_ins_element":"Ch\u00e8n ph\u1ea7n t\u1eed","fieldset_events_tab":"S\u1ef1 ki\u1ec7n ph\u1ea7n t\u1eed","fieldset_attrib_tab":"Thu\u1ed9c t\u00ednh ph\u1ea7n t\u1eed","fieldset_general_tab":"Thi\u1ebft l\u1eadp chung","events_tab":"S\u1ef1 ki\u1ec7n","attrib_tab":"Thu\u1ed9c t\u00ednh","general_tab":"Chung","attribute_attrib_tab":"Thu\u1ed9c t\u00ednh","attribute_events_tab":"S\u1ef1 ki\u1ec7n","attribute_label_accesskey":"Ph\u00edm truy c\u1eadp","attribute_label_tabindex":"Ch\u1ec9 m\u1ee5c th\u1ebb","attribute_label_langcode":"Ng\u00f4n ng\u1eef","attribute_option_rtl":"Ph\u1ea3i qua tr\u00e1i","attribute_option_ltr":"Tr\u00e1i qua ph\u1ea3i","attribute_label_langdir":"H\u01b0\u1edbng v\u0103n b\u1ea3n","attribute_label_datetime":"Ng\u00e0y/gi\u1edd","attribute_label_cite":"Ch\u00fa th\u00edch","attribute_label_style":"Ki\u1ec3u d\u00e1ng","attribute_label_class":"L\u1edbp","attribute_label_id":"ID","attribute_label_title":"Ti\u00eau \u0111\u1ec1"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/zh-cn_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/zh-cn_dlg.js
deleted file mode 100644
index eccbdf676..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/zh-cn_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('zh-cn.xhtmlxtras_dlg',{"attribs_title":"\u63d2\u5165/\u7f16\u8f91 \u5c5e\u6027","option_rtl":"\u4ece\u53f3\u5230\u5de6","option_ltr":"\u4ece\u5de6\u5230\u53f3","insert_date":"\u63d2\u5165\u5f53\u524d\u65e5\u671f/\u65f6\u95f4",remove:"\u79fb\u9664","title_cite_element":"\u5f15\u7528\u5143\u7d20","title_abbr_element":"\u7f29\u5199\u5143\u7d20","title_acronym_element":"\u9996\u5b57\u6bcd\u7f29\u5199\u5143\u7d20","title_del_element":"\u5220\u9664\u5143\u7d20","title_ins_element":"\u63d2\u5165\u5143\u7d20","fieldset_events_tab":"\u5143\u7d20\u4e8b\u4ef6","fieldset_attrib_tab":"\u5143\u7d20\u5c5e\u6027","fieldset_general_tab":"\u666e\u901a\u8bbe\u7f6e","events_tab":"\u4e8b\u4ef6","attrib_tab":"\u5c5e\u6027","general_tab":"\u666e\u901a","attribute_attrib_tab":"\u5c5e\u6027","attribute_events_tab":"\u4e8b\u4ef6","attribute_label_accesskey":"\u5feb\u6377\u952e","attribute_label_tabindex":"Tab\u7d22\u5f15","attribute_label_langcode":"\u8bed\u8a00","attribute_option_rtl":"\u4ece\u53f3\u5230\u5de6","attribute_option_ltr":"\u4ece\u5de6\u5230\u53f3","attribute_label_langdir":"\u6587\u5b57\u4e66\u5199\u65b9\u5411","attribute_label_datetime":"\u65e5\u671f/\u65f6\u95f4","attribute_label_cite":"\u5f15\u7528","attribute_label_style":"\u6837\u5f0f","attribute_label_class":"\u7c7b\u522b","attribute_label_id":"ID","attribute_label_title":"\u6807\u9898"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/xhtmlxtras/langs/zh-tw_dlg.js b/program/js/tiny_mce/plugins/xhtmlxtras/langs/zh-tw_dlg.js
deleted file mode 100644
index d0fec64de..000000000
--- a/program/js/tiny_mce/plugins/xhtmlxtras/langs/zh-tw_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('zh-tw.xhtmlxtras_dlg',{"attribs_title":"\u52a0\u5165 / \u8a2d\u5b9a\u5c6c\u6027","option_rtl":"\u5f9e\u53f3\u5230\u5de6","option_ltr":"\u5f9e\u5de6\u5230\u53f3","insert_date":"\u52a0\u5165\u76ee\u524d\u7684\u6642\u9593\u3001\u65e5\u671f",remove:"\u79fb\u9664","title_cite_element":"\u5f15\u7528\u6a19\u7c64","title_abbr_element":"\u7e2e\u5beb\u6a19\u7c64","title_acronym_element":"\u982d\u5b57\u8a9e\u6a19\u7c64","title_del_element":"\u79fb\u9664 HTML \u6a19\u7c64","title_ins_element":"\u65b0\u589e HTML \u6a19\u7c64","fieldset_events_tab":"\u6a19\u7c64\u4e8b\u4ef6","fieldset_attrib_tab":"\u6a19\u7c64\u5c6c\u6027","fieldset_general_tab":"\u8a2d\u5b9a","events_tab":"\u4e8b\u4ef6","attrib_tab":"\u5c6c\u6027","general_tab":"\u4e00\u822c","attribute_attrib_tab":"\u5c6c\u6027","attribute_events_tab":"\u4e8b\u4ef6","attribute_label_accesskey":"HTML \u5feb\u901f\u9375 (AccessKey)","attribute_label_tabindex":"Tab \u7d22\u5f15\u4f4d\u7f6e (TabIndex)","attribute_label_langcode":"\u8a9e\u7cfb","attribute_option_rtl":"\u5f9e\u53f3\u908a\u5230\u5de6\u908a","attribute_option_ltr":"\u5f9e\u5de6\u908a\u5230\u53f3\u908a","attribute_label_langdir":"\u66f8\u5beb\u65b9\u5f0f","attribute_label_datetime":"\u6642\u9593\u65e5\u671f","attribute_label_cite":"\u5f15\u7528","attribute_label_style":"\u6a23\u5f0f","attribute_label_class":"\u985e\u5225 (Class)","attribute_label_id":"\u6a19\u7c64\u7684 ID ","attribute_label_title":"\u6a19\u984c"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/about.htm b/program/js/tiny_mce/themes/advanced/about.htm
deleted file mode 100644
index 7a97cb715..000000000
--- a/program/js/tiny_mce/themes/advanced/about.htm
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#advanced_dlg.about_title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="js/about.js"></script>
-</head>
-<body id="about" style="display: none">
- <div class="tabs">
- <ul>
- <li id="general_tab" class="current" aria-controls="general_panel"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advanced_dlg.about_general}</a></span></li>
- <li id="help_tab" style="display:none" aria-hidden="true" aria-controls="help_panel"><span><a href="javascript:mcTabs.displayTab('help_tab','help_panel');" onmousedown="return false;">{#advanced_dlg.about_help}</a></span></li>
- <li id="plugins_tab" aria-controls="plugins_panel"><span><a href="javascript:mcTabs.displayTab('plugins_tab','plugins_panel');" onmousedown="return false;">{#advanced_dlg.about_plugins}</a></span></li>
- </ul>
- </div>
-
- <div class="panel_wrapper">
- <div id="general_panel" class="panel current">
- <h3>{#advanced_dlg.about_title}</h3>
- <p>Version: <span id="version"></span> (<span id="date"></span>)</p>
- <p>TinyMCE is a platform independent web based Javascript HTML WYSIWYG editor control released as Open Source under <a href="../../license.txt" target="_blank">LGPL</a>
- by Moxiecode Systems AB. It has the ability to convert HTML TEXTAREA fields or other HTML elements to editor instances.</p>
- <p>Copyright &copy; 2003-2008, <a href="http://www.moxiecode.com" target="_blank">Moxiecode Systems AB</a>, All rights reserved.</p>
- <p>For more information about this software visit the <a href="http://tinymce.moxiecode.com" target="_blank">TinyMCE website</a>.</p>
-
- <div id="buttoncontainer">
- <a href="http://www.moxiecode.com" target="_blank"><img src="http://tinymce.moxiecode.com/images/gotmoxie.png" alt="Got Moxie?" border="0" /></a>
- </div>
- </div>
-
- <div id="plugins_panel" class="panel">
- <div id="pluginscontainer">
- <h3>{#advanced_dlg.about_loaded}</h3>
-
- <div id="plugintablecontainer">
- </div>
-
- <p>&nbsp;</p>
- </div>
- </div>
-
- <div id="help_panel" class="panel noscroll" style="overflow: visible;">
- <div id="iframecontainer"></div>
- </div>
- </div>
-
- <div class="mceActionPanel">
- <input type="button" id="cancel" name="cancel" value="{#close}" onclick="tinyMCEPopup.close();" />
- </div>
-</body>
-</html>
diff --git a/program/js/tiny_mce/themes/advanced/anchor.htm b/program/js/tiny_mce/themes/advanced/anchor.htm
deleted file mode 100644
index 75c93b799..000000000
--- a/program/js/tiny_mce/themes/advanced/anchor.htm
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#advanced_dlg.anchor_title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="js/anchor.js"></script>
-</head>
-<body style="display: none" role="application" aria-labelledby="app_title">
-<form onsubmit="AnchorDialog.update();return false;" action="#">
- <table border="0" cellpadding="4" cellspacing="0" role="presentation">
- <tr>
- <td colspan="2" class="title" id="app_title">{#advanced_dlg.anchor_title}</td>
- </tr>
- <tr>
- <td class="nowrap"><label for="anchorName">{#advanced_dlg.anchor_name}:</label></td>
- <td><input name="anchorName" type="text" class="mceFocus" id="anchorName" value="" style="width: 200px" aria-required="true" /></td>
- </tr>
- </table>
-
- <div class="mceActionPanel">
- <input type="submit" id="insert" name="insert" value="{#update}" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
-</form>
-</body>
-</html>
diff --git a/program/js/tiny_mce/themes/advanced/charmap.htm b/program/js/tiny_mce/themes/advanced/charmap.htm
deleted file mode 100644
index d4b6bdfb7..000000000
--- a/program/js/tiny_mce/themes/advanced/charmap.htm
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#advanced_dlg.charmap_title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="js/charmap.js"></script>
-</head>
-<body id="charmap" style="display:none" role="application">
-<table align="center" border="0" cellspacing="0" cellpadding="2" role="presentation">
- <tr>
- <td colspan="2" class="title" ><label for="charmapView" id="charmap_label">{#advanced_dlg.charmap_title}</label></td>
- </tr>
- <tr>
- <td id="charmapView" rowspan="2" align="left" valign="top">
- <!-- Chars will be rendered here -->
- </td>
- <td width="100" align="center" valign="top">
- <table border="0" cellpadding="0" cellspacing="0" width="100" style="height:100px" role="presentation">
- <tr>
- <td id="codeV">&nbsp;</td>
- </tr>
- <tr>
- <td id="codeN">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td valign="bottom" style="padding-bottom: 3px;">
- <table width="100" align="center" border="0" cellpadding="2" cellspacing="0" role="presentation">
- <tr>
- <td align="center" style="border-left: 1px solid #666699; border-top: 1px solid #666699; border-right: 1px solid #666699;"><label for="codeA">HTML-Code</label></td>
- </tr>
- <tr>
- <td style="font-size: 16px; font-weight: bold; border-left: 1px solid #666699; border-bottom: 1px solid #666699; border-right: 1px solid #666699;" id="codeA" align="center">&nbsp;</td>
- </tr>
- <tr>
- <td style="font-size: 1px;">&nbsp;</td>
- </tr>
- <tr>
- <td align="center" style="border-left: 1px solid #666699; border-top: 1px solid #666699; border-right: 1px solid #666699;"><label for="codeB">NUM-Code</label></td>
- </tr>
- <tr>
- <td style="font-size: 16px; font-weight: bold; border-left: 1px solid #666699; border-bottom: 1px solid #666699; border-right: 1px solid #666699;" id="codeB" align="center">&nbsp;</td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td colspan="2" id="charmap_usage">{#advanced_dlg.charmap_usage}</td>
- </tr>
-
-</table>
-</body>
-</html>
diff --git a/program/js/tiny_mce/themes/advanced/color_picker.htm b/program/js/tiny_mce/themes/advanced/color_picker.htm
deleted file mode 100644
index b625531a6..000000000
--- a/program/js/tiny_mce/themes/advanced/color_picker.htm
+++ /dev/null
@@ -1,70 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#advanced_dlg.colorpicker_title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="js/color_picker.js"></script>
-</head>
-<body id="colorpicker" style="display: none" role="application" aria-labelledby="app_label">
- <span class="mceVoiceLabel" id="app_label" style="display:none;">{#advanced_dlg.colorpicker_title}</span>
-<form onsubmit="insertAction();return false" action="#">
- <div class="tabs">
- <ul>
- <li id="picker_tab" aria-controls="picker_panel" class="current"><span><a href="javascript:mcTabs.displayTab('picker_tab','picker_panel');" onmousedown="return false;">{#advanced_dlg.colorpicker_picker_tab}</a></span></li>
- <li id="rgb_tab" aria-controls="rgb_panel"><span><a href="javascript:;" onclick="mcTabs.displayTab('rgb_tab','rgb_panel');" onmousedown="return false;">{#advanced_dlg.colorpicker_palette_tab}</a></span></li>
- <li id="named_tab" aria-controls="named_panel"><span><a href="javascript:;" onclick="javascript:mcTabs.displayTab('named_tab','named_panel');" onmousedown="return false;">{#advanced_dlg.colorpicker_named_tab}</a></span></li>
- </ul>
- </div>
-
- <div class="panel_wrapper">
- <div id="picker_panel" class="panel current">
- <fieldset>
- <legend>{#advanced_dlg.colorpicker_picker_title}</legend>
- <div id="picker">
- <img id="colors" src="img/colorpicker.jpg" onclick="computeColor(event)" onmousedown="isMouseDown = true;return false;" onmouseup="isMouseDown = false;" onmousemove="if (isMouseDown && isMouseOver) computeColor(event); return false;" onmouseover="isMouseOver=true;" onmouseout="isMouseOver=false;" alt="" />
-
- <div id="light">
- <!-- Will be filled with divs -->
- </div>
-
- <br style="clear: both" />
- </div>
- </fieldset>
- </div>
-
- <div id="rgb_panel" class="panel">
- <fieldset>
- <legend id="webcolors_title">{#advanced_dlg.colorpicker_palette_title}</legend>
- <div id="webcolors">
- <!-- Gets filled with web safe colors-->
- </div>
-
- <br style="clear: both" />
- </fieldset>
- </div>
-
- <div id="named_panel" class="panel">
- <fieldset id="named_picker_label">
- <legend id="named_title">{#advanced_dlg.colorpicker_named_title}</legend>
- <div id="namedcolors" role="listbox" tabindex="0" aria-labelledby="named_picker_label">
- <!-- Gets filled with named colors-->
- </div>
-
- <br style="clear: both" />
-
- <div id="colornamecontainer">
- {#advanced_dlg.colorpicker_name} <span id="colorname"></span>
- </div>
- </fieldset>
- </div>
- </div>
-
- <div class="mceActionPanel">
- <input type="submit" id="insert" name="insert" value="{#apply}" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();"/>
- <div id="preview_wrapper"><div id="previewblock"><label for="color">{#advanced_dlg.colorpicker_color}</label> <input id="color" type="text" size="8" class="text mceFocus" aria-required="true" /></div><span id="preview"></span></div>
- </div>
-</form>
-</body>
-</html>
diff --git a/program/js/tiny_mce/themes/advanced/editor_template.js b/program/js/tiny_mce/themes/advanced/editor_template.js
deleted file mode 100644
index 4b8d56375..000000000
--- a/program/js/tiny_mce/themes/advanced/editor_template.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(h){var i=h.DOM,g=h.dom.Event,c=h.extend,f=h.each,a=h.util.Cookie,e,d=h.explode;function b(p,m){var k,l,o=p.dom,j="",n,r;previewStyles=p.settings.preview_styles;if(previewStyles===false){return""}if(!previewStyles){previewStyles="font-family font-size font-weight text-decoration text-transform color background-color"}function q(s){return s.replace(/%(\w+)/g,"")}k=m.block||m.inline||"span";l=o.create(k);f(m.styles,function(t,s){t=q(t);if(t){o.setStyle(l,s,t)}});f(m.attributes,function(t,s){t=q(t);if(t){o.setAttrib(l,s,t)}});f(m.classes,function(s){s=q(s);if(!o.hasClass(l,s)){o.addClass(l,s)}});o.setStyles(l,{position:"absolute",left:-65535});p.getBody().appendChild(l);n=o.getStyle(p.getBody(),"fontSize",true);n=/px$/.test(n)?parseInt(n,10):0;f(previewStyles.split(" "),function(s){var t=o.getStyle(l,s,true);if(s=="background-color"&&/transparent|rgba\s*\([^)]+,\s*0\)/.test(t)){t=o.getStyle(p.getBody(),s,true);if(o.toHex(t).toLowerCase()=="#ffffff"){return}}if(s=="font-size"){if(/em|%$/.test(t)){if(n===0){return}t=parseFloat(t,10)/(/%$/.test(t)?100:1);t=(t*n)+"px"}}j+=s+":"+t+";"});o.remove(l);return j}h.ThemeManager.requireLangPack("advanced");h.create("tinymce.themes.AdvancedTheme",{sizes:[8,10,12,14,18,24,36],controls:{bold:["bold_desc","Bold"],italic:["italic_desc","Italic"],underline:["underline_desc","Underline"],strikethrough:["striketrough_desc","Strikethrough"],justifyleft:["justifyleft_desc","JustifyLeft"],justifycenter:["justifycenter_desc","JustifyCenter"],justifyright:["justifyright_desc","JustifyRight"],justifyfull:["justifyfull_desc","JustifyFull"],bullist:["bullist_desc","InsertUnorderedList"],numlist:["numlist_desc","InsertOrderedList"],outdent:["outdent_desc","Outdent"],indent:["indent_desc","Indent"],cut:["cut_desc","Cut"],copy:["copy_desc","Copy"],paste:["paste_desc","Paste"],undo:["undo_desc","Undo"],redo:["redo_desc","Redo"],link:["link_desc","mceLink"],unlink:["unlink_desc","unlink"],image:["image_desc","mceImage"],cleanup:["cleanup_desc","mceCleanup"],help:["help_desc","mceHelp"],code:["code_desc","mceCodeEditor"],hr:["hr_desc","InsertHorizontalRule"],removeformat:["removeformat_desc","RemoveFormat"],sub:["sub_desc","subscript"],sup:["sup_desc","superscript"],forecolor:["forecolor_desc","ForeColor"],forecolorpicker:["forecolor_desc","mceForeColor"],backcolor:["backcolor_desc","HiliteColor"],backcolorpicker:["backcolor_desc","mceBackColor"],charmap:["charmap_desc","mceCharMap"],visualaid:["visualaid_desc","mceToggleVisualAid"],anchor:["anchor_desc","mceInsertAnchor"],newdocument:["newdocument_desc","mceNewDocument"],blockquote:["blockquote_desc","mceBlockQuote"]},stateControls:["bold","italic","underline","strikethrough","bullist","numlist","justifyleft","justifycenter","justifyright","justifyfull","sub","sup","blockquote"],init:function(k,l){var m=this,n,j,p;m.editor=k;m.url=l;m.onResolveName=new h.util.Dispatcher(this);n=k.settings;k.forcedHighContrastMode=k.settings.detect_highcontrast&&m._isHighContrast();k.settings.skin=k.forcedHighContrastMode?"highcontrast":k.settings.skin;if(!n.theme_advanced_buttons1){n=c({theme_advanced_buttons1:"bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect",theme_advanced_buttons2:"bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code",theme_advanced_buttons3:"hr,removeformat,visualaid,|,sub,sup,|,charmap"},n)}m.settings=n=c({theme_advanced_path:true,theme_advanced_toolbar_location:"top",theme_advanced_blockformats:"p,address,pre,h1,h2,h3,h4,h5,h6",theme_advanced_toolbar_align:"left",theme_advanced_statusbar_location:"bottom",theme_advanced_fonts:"Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",theme_advanced_more_colors:1,theme_advanced_row_height:23,theme_advanced_resize_horizontal:1,theme_advanced_resizing_use_cookie:1,theme_advanced_font_sizes:"1,2,3,4,5,6,7",theme_advanced_font_selector:"span",theme_advanced_show_current_color:0,readonly:k.settings.readonly},n);if(!n.font_size_style_values){n.font_size_style_values="8pt,10pt,12pt,14pt,18pt,24pt,36pt"}if(h.is(n.theme_advanced_font_sizes,"string")){n.font_size_style_values=h.explode(n.font_size_style_values);n.font_size_classes=h.explode(n.font_size_classes||"");p={};k.settings.theme_advanced_font_sizes=n.theme_advanced_font_sizes;f(k.getParam("theme_advanced_font_sizes","","hash"),function(r,q){var o;if(q==r&&r>=1&&r<=7){q=r+" ("+m.sizes[r-1]+"pt)";o=n.font_size_classes[r-1];r=n.font_size_style_values[r-1]||(m.sizes[r-1]+"pt")}if(/^\s*\./.test(r)){o=r.replace(/\./g,"")}p[q]=o?{"class":o}:{fontSize:r}});n.theme_advanced_font_sizes=p}if((j=n.theme_advanced_path_location)&&j!="none"){n.theme_advanced_statusbar_location=n.theme_advanced_path_location}if(n.theme_advanced_statusbar_location=="none"){n.theme_advanced_statusbar_location=0}if(k.settings.content_css!==false){k.contentCSS.push(k.baseURI.toAbsolute(l+"/skins/"+k.settings.skin+"/content.css"))}k.onInit.add(function(){if(!k.settings.readonly){k.onNodeChange.add(m._nodeChanged,m);k.onKeyUp.add(m._updateUndoStatus,m);k.onMouseUp.add(m._updateUndoStatus,m);k.dom.bind(k.dom.getRoot(),"dragend",function(){m._updateUndoStatus(k)})}});k.onSetProgressState.add(function(r,o,s){var t,u=r.id,q;if(o){m.progressTimer=setTimeout(function(){t=r.getContainer();t=t.insertBefore(i.create("DIV",{style:"position:relative"}),t.firstChild);q=i.get(r.id+"_tbl");i.add(t,"div",{id:u+"_blocker","class":"mceBlocker",style:{width:q.clientWidth+2,height:q.clientHeight+2}});i.add(t,"div",{id:u+"_progress","class":"mceProgress",style:{left:q.clientWidth/2,top:q.clientHeight/2}})},s||0)}else{i.remove(u+"_blocker");i.remove(u+"_progress");clearTimeout(m.progressTimer)}});i.loadCSS(n.editor_css?k.documentBaseURI.toAbsolute(n.editor_css):l+"/skins/"+k.settings.skin+"/ui.css");if(n.skin_variant){i.loadCSS(l+"/skins/"+k.settings.skin+"/ui_"+n.skin_variant+".css")}},_isHighContrast:function(){var j,k=i.add(i.getRoot(),"div",{style:"background-color: rgb(171,239,86);"});j=(i.getStyle(k,"background-color",true)+"").toLowerCase().replace(/ /g,"");i.remove(k);return j!="rgb(171,239,86)"&&j!="#abef56"},createControl:function(m,j){var k,l;if(l=j.createControl(m)){return l}switch(m){case"styleselect":return this._createStyleSelect();case"formatselect":return this._createBlockFormats();case"fontselect":return this._createFontSelect();case"fontsizeselect":return this._createFontSizeSelect();case"forecolor":return this._createForeColorMenu();case"backcolor":return this._createBackColorMenu()}if((k=this.controls[m])){return j.createButton(m,{title:"advanced."+k[0],cmd:k[1],ui:k[2],value:k[3]})}},execCommand:function(l,k,m){var j=this["_"+l];if(j){j.call(this,k,m);return true}return false},_importClasses:function(l){var j=this.editor,k=j.controlManager.get("styleselect");if(k.getLength()==0){f(j.dom.getClasses(),function(q,m){var p="style_"+m,n;n={inline:"span",attributes:{"class":q["class"]},selector:"*"};j.formatter.register(p,n);k.add(q["class"],p,{style:function(){return b(j,n)}})})}},_createStyleSelect:function(o){var l=this,j=l.editor,k=j.controlManager,m;m=k.createListBox("styleselect",{title:"advanced.style_select",onselect:function(q){var r,n=[],p;f(m.items,function(s){n.push(s.value)});j.focus();j.undoManager.add();r=j.formatter.matchAll(n);h.each(r,function(s){if(!q||s==q){if(s){j.formatter.remove(s)}p=true}});if(!p){j.formatter.apply(q)}j.undoManager.add();j.nodeChanged();return false}});j.onPreInit.add(function(){var p=0,n=j.getParam("style_formats");if(n){f(n,function(q){var r,s=0;f(q,function(){s++});if(s>1){r=q.name=q.name||"style_"+(p++);j.formatter.register(r,q);m.add(q.title,r,{style:function(){return b(j,q)}})}else{m.add(q.title)}})}else{f(j.getParam("theme_advanced_styles","","hash"),function(t,s){var r,q;if(t){r="style_"+(p++);q={inline:"span",classes:t,selector:"*"};j.formatter.register(r,q);m.add(l.editor.translate(s),r,{style:function(){return b(j,q)}})}})}});if(m.getLength()==0){m.onPostRender.add(function(p,q){if(!m.NativeListBox){g.add(q.id+"_text","focus",l._importClasses,l);g.add(q.id+"_text","mousedown",l._importClasses,l);g.add(q.id+"_open","focus",l._importClasses,l);g.add(q.id+"_open","mousedown",l._importClasses,l)}else{g.add(q.id,"focus",l._importClasses,l)}})}return m},_createFontSelect:function(){var l,k=this,j=k.editor;l=j.controlManager.createListBox("fontselect",{title:"advanced.fontdefault",onselect:function(m){var n=l.items[l.selectedIndex];if(!m&&n){j.execCommand("FontName",false,n.value);return}j.execCommand("FontName",false,m);l.select(function(o){return m==o});if(n&&n.value==m){l.select(null)}return false}});if(l){f(j.getParam("theme_advanced_fonts",k.settings.theme_advanced_fonts,"hash"),function(n,m){l.add(j.translate(m),n,{style:n.indexOf("dings")==-1?"font-family:"+n:""})})}return l},_createFontSizeSelect:function(){var m=this,k=m.editor,n,l=0,j=[];n=k.controlManager.createListBox("fontsizeselect",{title:"advanced.font_size",onselect:function(o){var p=n.items[n.selectedIndex];if(!o&&p){p=p.value;if(p["class"]){k.formatter.toggle("fontsize_class",{value:p["class"]});k.undoManager.add();k.nodeChanged()}else{k.execCommand("FontSize",false,p.fontSize)}return}if(o["class"]){k.focus();k.undoManager.add();k.formatter.toggle("fontsize_class",{value:o["class"]});k.undoManager.add();k.nodeChanged()}else{k.execCommand("FontSize",false,o.fontSize)}n.select(function(q){return o==q});if(p&&(p.value.fontSize==o.fontSize||p.value["class"]&&p.value["class"]==o["class"])){n.select(null)}return false}});if(n){f(m.settings.theme_advanced_font_sizes,function(p,o){var q=p.fontSize;if(q>=1&&q<=7){q=m.sizes[parseInt(q)-1]+"pt"}n.add(o,p,{style:"font-size:"+q,"class":"mceFontSize"+(l++)+(" "+(p["class"]||""))})})}return n},_createBlockFormats:function(){var l,j={p:"advanced.paragraph",address:"advanced.address",pre:"advanced.pre",h1:"advanced.h1",h2:"advanced.h2",h3:"advanced.h3",h4:"advanced.h4",h5:"advanced.h5",h6:"advanced.h6",div:"advanced.div",blockquote:"advanced.blockquote",code:"advanced.code",dt:"advanced.dt",dd:"advanced.dd",samp:"advanced.samp"},k=this;l=k.editor.controlManager.createListBox("formatselect",{title:"advanced.block",onselect:function(m){k.editor.execCommand("FormatBlock",false,m);return false}});if(l){f(k.editor.getParam("theme_advanced_blockformats",k.settings.theme_advanced_blockformats,"hash"),function(n,m){l.add(k.editor.translate(m!=n?m:j[n]),n,{"class":"mce_formatPreview mce_"+n,style:function(){return b(k.editor,{block:n})}})})}return l},_createForeColorMenu:function(){var n,k=this,l=k.settings,m={},j;if(l.theme_advanced_more_colors){m.more_colors_func=function(){k._mceColorPicker(0,{color:n.value,func:function(o){n.setColor(o)}})}}if(j=l.theme_advanced_text_colors){m.colors=j}if(l.theme_advanced_default_foreground_color){m.default_color=l.theme_advanced_default_foreground_color}m.title="advanced.forecolor_desc";m.cmd="ForeColor";m.scope=this;n=k.editor.controlManager.createColorSplitButton("forecolor",m);return n},_createBackColorMenu:function(){var n,k=this,l=k.settings,m={},j;if(l.theme_advanced_more_colors){m.more_colors_func=function(){k._mceColorPicker(0,{color:n.value,func:function(o){n.setColor(o)}})}}if(j=l.theme_advanced_background_colors){m.colors=j}if(l.theme_advanced_default_background_color){m.default_color=l.theme_advanced_default_background_color}m.title="advanced.backcolor_desc";m.cmd="HiliteColor";m.scope=this;n=k.editor.controlManager.createColorSplitButton("backcolor",m);return n},renderUI:function(l){var q,m,r,w=this,u=w.editor,x=w.settings,v,k,j;if(u.settings){u.settings.aria_label=x.aria_label+u.getLang("advanced.help_shortcut")}q=k=i.create("span",{role:"application","aria-labelledby":u.id+"_voice",id:u.id+"_parent","class":"mceEditor "+u.settings.skin+"Skin"+(x.skin_variant?" "+u.settings.skin+"Skin"+w._ufirst(x.skin_variant):"")+(u.settings.directionality=="rtl"?" mceRtl":"")});i.add(q,"span",{"class":"mceVoiceLabel",style:"display:none;",id:u.id+"_voice"},x.aria_label);if(!i.boxModel){q=i.add(q,"div",{"class":"mceOldBoxModel"})}q=v=i.add(q,"table",{role:"presentation",id:u.id+"_tbl","class":"mceLayout",cellSpacing:0,cellPadding:0});q=r=i.add(q,"tbody");switch((x.theme_advanced_layout_manager||"").toLowerCase()){case"rowlayout":m=w._rowLayout(x,r,l);break;case"customlayout":m=u.execCallback("theme_advanced_custom_layout",x,r,l,k);break;default:m=w._simpleLayout(x,r,l,k)}q=l.targetNode;j=v.rows;i.addClass(j[0],"mceFirst");i.addClass(j[j.length-1],"mceLast");f(i.select("tr",r),function(o){i.addClass(o.firstChild,"mceFirst");i.addClass(o.childNodes[o.childNodes.length-1],"mceLast")});if(i.get(x.theme_advanced_toolbar_container)){i.get(x.theme_advanced_toolbar_container).appendChild(k)}else{i.insertAfter(k,q)}g.add(u.id+"_path_row","click",function(n){n=n.target;if(n.nodeName=="A"){w._sel(n.className.replace(/^.*mcePath_([0-9]+).*$/,"$1"));return false}});if(!u.getParam("accessibility_focus")){g.add(i.add(k,"a",{href:"#"},"<!-- IE -->"),"focus",function(){tinyMCE.get(u.id).focus()})}if(x.theme_advanced_toolbar_location=="external"){l.deltaHeight=0}w.deltaHeight=l.deltaHeight;l.targetNode=null;u.onKeyDown.add(function(p,n){var s=121,o=122;if(n.altKey){if(n.keyCode===s){if(h.isWebKit){window.focus()}w.toolbarGroup.focus();return g.cancel(n)}else{if(n.keyCode===o){i.get(p.id+"_path_row").focus();return g.cancel(n)}}}});u.addShortcut("alt+0","","mceShortcuts",w);return{iframeContainer:m,editorContainer:u.id+"_parent",sizeContainer:v,deltaHeight:l.deltaHeight}},getInfo:function(){return{longname:"Advanced theme",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",version:h.majorVersion+"."+h.minorVersion}},resizeBy:function(j,k){var l=i.get(this.editor.id+"_ifr");this.resizeTo(l.clientWidth+j,l.clientHeight+k)},resizeTo:function(j,n,l){var k=this.editor,m=this.settings,o=i.get(k.id+"_tbl"),p=i.get(k.id+"_ifr");j=Math.max(m.theme_advanced_resizing_min_width||100,j);n=Math.max(m.theme_advanced_resizing_min_height||100,n);j=Math.min(m.theme_advanced_resizing_max_width||65535,j);n=Math.min(m.theme_advanced_resizing_max_height||65535,n);i.setStyle(o,"height","");i.setStyle(p,"height",n);if(m.theme_advanced_resize_horizontal){i.setStyle(o,"width","");i.setStyle(p,"width",j);if(j<o.clientWidth){j=o.clientWidth;i.setStyle(p,"width",o.clientWidth)}}if(l&&m.theme_advanced_resizing_use_cookie){a.setHash("TinyMCE_"+k.id+"_size",{cw:j,ch:n})}},destroy:function(){var j=this.editor.id;g.clear(j+"_resize");g.clear(j+"_path_row");g.clear(j+"_external_close")},_simpleLayout:function(z,u,l,j){var y=this,v=y.editor,w=z.theme_advanced_toolbar_location,q=z.theme_advanced_statusbar_location,m,k,r,x;if(z.readonly){m=i.add(u,"tr");m=k=i.add(m,"td",{"class":"mceIframeContainer"});return k}if(w=="top"){y._addToolbars(u,l)}if(w=="external"){m=x=i.create("div",{style:"position:relative"});m=i.add(m,"div",{id:v.id+"_external","class":"mceExternalToolbar"});i.add(m,"a",{id:v.id+"_external_close",href:"javascript:;","class":"mceExternalClose"});m=i.add(m,"table",{id:v.id+"_tblext",cellSpacing:0,cellPadding:0});r=i.add(m,"tbody");if(j.firstChild.className=="mceOldBoxModel"){j.firstChild.appendChild(x)}else{j.insertBefore(x,j.firstChild)}y._addToolbars(r,l);v.onMouseUp.add(function(){var o=i.get(v.id+"_external");i.show(o);i.hide(e);var n=g.add(v.id+"_external_close","click",function(){i.hide(v.id+"_external");g.remove(v.id+"_external_close","click",n);return false});i.show(o);i.setStyle(o,"top",0-i.getRect(v.id+"_tblext").h-1);i.hide(o);i.show(o);o.style.filter="";e=v.id+"_external";o=null})}if(q=="top"){y._addStatusBar(u,l)}if(!z.theme_advanced_toolbar_container){m=i.add(u,"tr");m=k=i.add(m,"td",{"class":"mceIframeContainer"})}if(w=="bottom"){y._addToolbars(u,l)}if(q=="bottom"){y._addStatusBar(u,l)}return k},_rowLayout:function(x,p,l){var w=this,q=w.editor,v,y,j=q.controlManager,m,k,u,r;v=x.theme_advanced_containers_default_class||"";y=x.theme_advanced_containers_default_align||"center";f(d(x.theme_advanced_containers||""),function(s,o){var n=x["theme_advanced_container_"+s]||"";switch(s.toLowerCase()){case"mceeditor":m=i.add(p,"tr");m=k=i.add(m,"td",{"class":"mceIframeContainer"});break;case"mceelementpath":w._addStatusBar(p,l);break;default:r=(x["theme_advanced_container_"+s+"_align"]||y).toLowerCase();r="mce"+w._ufirst(r);m=i.add(i.add(p,"tr"),"td",{"class":"mceToolbar "+(x["theme_advanced_container_"+s+"_class"]||v)+" "+r||y});u=j.createToolbar("toolbar"+o);w._addControls(n,u);i.setHTML(m,u.renderHTML());l.deltaHeight-=x.theme_advanced_row_height}});return k},_addControls:function(k,j){var l=this,m=l.settings,n,o=l.editor.controlManager;if(m.theme_advanced_disable&&!l._disabled){n={};f(d(m.theme_advanced_disable),function(p){n[p]=1});l._disabled=n}else{n=l._disabled}f(d(k),function(q){var p;if(n&&n[q]){return}if(q=="tablecontrols"){f(["table","|","row_props","cell_props","|","row_before","row_after","delete_row","|","col_before","col_after","delete_col","|","split_cells","merge_cells"],function(r){r=l.createControl(r,o);if(r){j.add(r)}});return}p=l.createControl(q,o);if(p){j.add(p)}})},_addToolbars:function(y,k){var B=this,q,p,u=B.editor,C=B.settings,A,j=u.controlManager,w,l,r=[],z,x,m=false;x=j.createToolbarGroup("toolbargroup",{name:u.getLang("advanced.toolbar"),tab_focus_toolbar:u.getParam("theme_advanced_tab_focus_toolbar")});B.toolbarGroup=x;z=C.theme_advanced_toolbar_align.toLowerCase();z="mce"+B._ufirst(z);l=i.add(i.add(y,"tr",{role:"presentation"}),"td",{"class":"mceToolbar "+z,role:"toolbar"});for(q=1;(A=C["theme_advanced_buttons"+q]);q++){m=true;p=j.createToolbar("toolbar"+q,{"class":"mceToolbarRow"+q});if(C["theme_advanced_buttons"+q+"_add"]){A+=","+C["theme_advanced_buttons"+q+"_add"]}if(C["theme_advanced_buttons"+q+"_add_before"]){A=C["theme_advanced_buttons"+q+"_add_before"]+","+A}B._addControls(A,p);x.add(p);k.deltaHeight-=C.theme_advanced_row_height}if(!m){k.deltaHeight-=C.theme_advanced_row_height}r.push(x.renderHTML());r.push(i.createHTML("a",{href:"#",accesskey:"z",title:u.getLang("advanced.toolbar_focus"),onfocus:"tinyMCE.getInstanceById('"+u.id+"').focus();"},"<!-- IE -->"));i.setHTML(l,r.join(""))},_addStatusBar:function(p,k){var l,w=this,q=w.editor,x=w.settings,j,u,v,m;l=i.add(p,"tr");l=m=i.add(l,"td",{"class":"mceStatusbar"});l=i.add(l,"div",{id:q.id+"_path_row",role:"group","aria-labelledby":q.id+"_path_voice"});if(x.theme_advanced_path){i.add(l,"span",{id:q.id+"_path_voice"},q.translate("advanced.path"));i.add(l,"span",{},": ")}else{i.add(l,"span",{},"&#160;")}if(x.theme_advanced_resizing){i.add(m,"a",{id:q.id+"_resize",href:"javascript:;",onclick:"return false;","class":"mceResize",tabIndex:"-1"});if(x.theme_advanced_resizing_use_cookie){q.onPostRender.add(function(){var n=a.getHash("TinyMCE_"+q.id+"_size"),r=i.get(q.id+"_tbl");if(!n){return}w.resizeTo(n.cw,n.ch)})}q.onPostRender.add(function(){g.add(q.id+"_resize","click",function(n){n.preventDefault()});g.add(q.id+"_resize","mousedown",function(E){var t,r,s,o,D,A,B,G,n,F,y;function z(H){H.preventDefault();n=B+(H.screenX-D);F=G+(H.screenY-A);w.resizeTo(n,F)}function C(H){g.remove(i.doc,"mousemove",t);g.remove(q.getDoc(),"mousemove",r);g.remove(i.doc,"mouseup",s);g.remove(q.getDoc(),"mouseup",o);n=B+(H.screenX-D);F=G+(H.screenY-A);w.resizeTo(n,F,true);q.nodeChanged()}E.preventDefault();D=E.screenX;A=E.screenY;y=i.get(w.editor.id+"_ifr");B=n=y.clientWidth;G=F=y.clientHeight;t=g.add(i.doc,"mousemove",z);r=g.add(q.getDoc(),"mousemove",z);s=g.add(i.doc,"mouseup",C);o=g.add(q.getDoc(),"mouseup",C)})})}k.deltaHeight-=21;l=p=null},_updateUndoStatus:function(k){var j=k.controlManager,l=k.undoManager;j.setDisabled("undo",!l.hasUndo()&&!l.typing);j.setDisabled("redo",!l.hasRedo())},_nodeChanged:function(o,u,E,r,F){var z=this,D,G=0,y,H,A=z.settings,x,l,w,C,m,k,j;h.each(z.stateControls,function(n){u.setActive(n,o.queryCommandState(z.controls[n][1]))});function q(p){var s,n=F.parents,t=p;if(typeof(p)=="string"){t=function(v){return v.nodeName==p}}for(s=0;s<n.length;s++){if(t(n[s])){return n[s]}}}u.setActive("visualaid",o.hasVisual);z._updateUndoStatus(o);u.setDisabled("outdent",!o.queryCommandState("Outdent"));D=q("A");if(H=u.get("link")){H.setDisabled((!D&&r)||(D&&!D.href));H.setActive(!!D&&(!D.name&&!D.id))}if(H=u.get("unlink")){H.setDisabled(!D&&r);H.setActive(!!D&&!D.name&&!D.id)}if(H=u.get("anchor")){H.setActive(!r&&!!D&&(D.name||(D.id&&!D.href)))}D=q("IMG");if(H=u.get("image")){H.setActive(!r&&!!D&&E.className.indexOf("mceItem")==-1)}if(H=u.get("styleselect")){z._importClasses();k=[];f(H.items,function(n){k.push(n.value)});j=o.formatter.matchAll(k);H.select(j[0]);h.each(j,function(p,n){if(n>0){H.mark(p)}})}if(H=u.get("formatselect")){D=q(o.dom.isBlock);if(D){H.select(D.nodeName.toLowerCase())}}q(function(p){if(p.nodeName==="SPAN"){if(!x&&p.className){x=p.className}}if(o.dom.is(p,A.theme_advanced_font_selector)){if(!l&&p.style.fontSize){l=p.style.fontSize}if(!w&&p.style.fontFamily){w=p.style.fontFamily.replace(/[\"\']+/g,"").replace(/^([^,]+).*/,"$1").toLowerCase()}if(!C&&p.style.color){C=p.style.color}if(!m&&p.style.backgroundColor){m=p.style.backgroundColor}}return false});if(H=u.get("fontselect")){H.select(function(n){return n.replace(/^([^,]+).*/,"$1").toLowerCase()==w})}if(H=u.get("fontsizeselect")){if(A.theme_advanced_runtime_fontsize&&!l&&!x){l=o.dom.getStyle(E,"fontSize",true)}H.select(function(n){if(n.fontSize&&n.fontSize===l){return true}if(n["class"]&&n["class"]===x){return true}})}if(A.theme_advanced_show_current_color){function B(p,n){if(H=u.get(p)){if(!n){n=H.settings.default_color}if(n!==H.value){H.displayColor(n)}}}B("forecolor",C);B("backcolor",m)}if(A.theme_advanced_show_current_color){function B(p,n){if(H=u.get(p)){if(!n){n=H.settings.default_color}if(n!==H.value){H.displayColor(n)}}}B("forecolor",C);B("backcolor",m)}if(A.theme_advanced_path&&A.theme_advanced_statusbar_location){D=i.get(o.id+"_path")||i.add(o.id+"_path_row","span",{id:o.id+"_path"});if(z.statusKeyboardNavigation){z.statusKeyboardNavigation.destroy();z.statusKeyboardNavigation=null}i.setHTML(D,"");q(function(I){var p=I.nodeName.toLowerCase(),s,v,t="";if(I.nodeType!=1||p==="br"||I.getAttribute("data-mce-bogus")||i.hasClass(I,"mceItemHidden")||i.hasClass(I,"mceItemRemoved")){return}if(h.isIE&&I.scopeName!=="HTML"&&I.scopeName){p=I.scopeName+":"+p}p=p.replace(/mce\:/g,"");switch(p){case"b":p="strong";break;case"i":p="em";break;case"img":if(y=i.getAttrib(I,"src")){t+="src: "+y+" "}break;case"a":if(y=i.getAttrib(I,"name")){t+="name: "+y+" ";p+="#"+y}if(y=i.getAttrib(I,"href")){t+="href: "+y+" "}break;case"font":if(y=i.getAttrib(I,"face")){t+="font: "+y+" "}if(y=i.getAttrib(I,"size")){t+="size: "+y+" "}if(y=i.getAttrib(I,"color")){t+="color: "+y+" "}break;case"span":if(y=i.getAttrib(I,"style")){t+="style: "+y+" "}break}if(y=i.getAttrib(I,"id")){t+="id: "+y+" "}if(y=I.className){y=y.replace(/\b\s*(webkit|mce|Apple-)\w+\s*\b/g,"");if(y){t+="class: "+y+" ";if(o.dom.isBlock(I)||p=="img"||p=="span"){p+="."+y}}}p=p.replace(/(html:)/g,"");p={name:p,node:I,title:t};z.onResolveName.dispatch(z,p);t=p.title;p=p.name;v=i.create("a",{href:"javascript:;",role:"button",onmousedown:"return false;",title:t,"class":"mcePath_"+(G++)},p);if(D.hasChildNodes()){D.insertBefore(i.create("span",{"aria-hidden":"true"},"\u00a0\u00bb "),D.firstChild);D.insertBefore(v,D.firstChild)}else{D.appendChild(v)}},o.getBody());if(i.select("a",D).length>0){z.statusKeyboardNavigation=new h.ui.KeyboardNavigation({root:o.id+"_path_row",items:i.select("a",D),excludeFromTabOrder:true,onCancel:function(){o.focus()}},i)}}},_sel:function(j){this.editor.execCommand("mceSelectNodeDepth",false,j)},_mceInsertAnchor:function(l,k){var j=this.editor;j.windowManager.open({url:this.url+"/anchor.htm",width:320+parseInt(j.getLang("advanced.anchor_delta_width",0)),height:90+parseInt(j.getLang("advanced.anchor_delta_height",0)),inline:true},{theme_url:this.url})},_mceCharMap:function(){var j=this.editor;j.windowManager.open({url:this.url+"/charmap.htm",width:550+parseInt(j.getLang("advanced.charmap_delta_width",0)),height:265+parseInt(j.getLang("advanced.charmap_delta_height",0)),inline:true},{theme_url:this.url})},_mceHelp:function(){var j=this.editor;j.windowManager.open({url:this.url+"/about.htm",width:480,height:380,inline:true},{theme_url:this.url})},_mceShortcuts:function(){var j=this.editor;j.windowManager.open({url:this.url+"/shortcuts.htm",width:480,height:380,inline:true},{theme_url:this.url})},_mceColorPicker:function(l,k){var j=this.editor;k=k||{};j.windowManager.open({url:this.url+"/color_picker.htm",width:375+parseInt(j.getLang("advanced.colorpicker_delta_width",0)),height:250+parseInt(j.getLang("advanced.colorpicker_delta_height",0)),close_previous:false,inline:true},{input_color:k.color,func:k.func,theme_url:this.url})},_mceCodeEditor:function(k,l){var j=this.editor;j.windowManager.open({url:this.url+"/source_editor.htm",width:parseInt(j.getParam("theme_advanced_source_editor_width",720)),height:parseInt(j.getParam("theme_advanced_source_editor_height",580)),inline:true,resizable:true,maximizable:true},{theme_url:this.url})},_mceImage:function(k,l){var j=this.editor;if(j.dom.getAttrib(j.selection.getNode(),"class","").indexOf("mceItem")!=-1){return}j.windowManager.open({url:this.url+"/image.htm",width:355+parseInt(j.getLang("advanced.image_delta_width",0)),height:275+parseInt(j.getLang("advanced.image_delta_height",0)),inline:true},{theme_url:this.url})},_mceLink:function(k,l){var j=this.editor;j.windowManager.open({url:this.url+"/link.htm",width:310+parseInt(j.getLang("advanced.link_delta_width",0)),height:200+parseInt(j.getLang("advanced.link_delta_height",0)),inline:true},{theme_url:this.url})},_mceNewDocument:function(){var j=this.editor;j.windowManager.confirm("advanced.newdocument",function(k){if(k){j.execCommand("mceSetContent",false,"")}})},_mceForeColor:function(){var j=this;this._mceColorPicker(0,{color:j.fgColor,func:function(k){j.fgColor=k;j.editor.execCommand("ForeColor",false,k)}})},_mceBackColor:function(){var j=this;this._mceColorPicker(0,{color:j.bgColor,func:function(k){j.bgColor=k;j.editor.execCommand("HiliteColor",false,k)}})},_ufirst:function(j){return j.substring(0,1).toUpperCase()+j.substring(1)}});h.ThemeManager.add("advanced",h.themes.AdvancedTheme)}(tinymce)); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/editor_template_src.js b/program/js/tiny_mce/themes/advanced/editor_template_src.js
deleted file mode 100644
index 82166dcb6..000000000
--- a/program/js/tiny_mce/themes/advanced/editor_template_src.js
+++ /dev/null
@@ -1,1490 +0,0 @@
-/**
- * editor_template_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function(tinymce) {
- var DOM = tinymce.DOM, Event = tinymce.dom.Event, extend = tinymce.extend, each = tinymce.each, Cookie = tinymce.util.Cookie, lastExtID, explode = tinymce.explode;
-
- // Generates a preview for a format
- function getPreviewCss(ed, fmt) {
- var name, previewElm, dom = ed.dom, previewCss = '', parentFontSize, previewStylesName;
-
- previewStyles = ed.settings.preview_styles;
-
- // No preview forced
- if (previewStyles === false)
- return '';
-
- // Default preview
- if (!previewStyles)
- previewStyles = 'font-family font-size font-weight text-decoration text-transform color background-color';
-
- // Removes any variables since these can't be previewed
- function removeVars(val) {
- return val.replace(/%(\w+)/g, '');
- };
-
- // Create block/inline element to use for preview
- name = fmt.block || fmt.inline || 'span';
- previewElm = dom.create(name);
-
- // Add format styles to preview element
- each(fmt.styles, function(value, name) {
- value = removeVars(value);
-
- if (value)
- dom.setStyle(previewElm, name, value);
- });
-
- // Add attributes to preview element
- each(fmt.attributes, function(value, name) {
- value = removeVars(value);
-
- if (value)
- dom.setAttrib(previewElm, name, value);
- });
-
- // Add classes to preview element
- each(fmt.classes, function(value) {
- value = removeVars(value);
-
- if (!dom.hasClass(previewElm, value))
- dom.addClass(previewElm, value);
- });
-
- // Add the previewElm outside the visual area
- dom.setStyles(previewElm, {position: 'absolute', left: -0xFFFF});
- ed.getBody().appendChild(previewElm);
-
- // Get parent container font size so we can compute px values out of em/% for older IE:s
- parentFontSize = dom.getStyle(ed.getBody(), 'fontSize', true);
- parentFontSize = /px$/.test(parentFontSize) ? parseInt(parentFontSize, 10) : 0;
-
- each(previewStyles.split(' '), function(name) {
- var value = dom.getStyle(previewElm, name, true);
-
- // If background is transparent then check if the body has a background color we can use
- if (name == 'background-color' && /transparent|rgba\s*\([^)]+,\s*0\)/.test(value)) {
- value = dom.getStyle(ed.getBody(), name, true);
-
- // Ignore white since it's the default color, not the nicest fix
- if (dom.toHex(value).toLowerCase() == '#ffffff') {
- return;
- }
- }
-
- // Old IE won't calculate the font size so we need to do that manually
- if (name == 'font-size') {
- if (/em|%$/.test(value)) {
- if (parentFontSize === 0) {
- return;
- }
-
- // Convert font size from em/% to px
- value = parseFloat(value, 10) / (/%$/.test(value) ? 100 : 1);
- value = (value * parentFontSize) + 'px';
- }
- }
-
- previewCss += name + ':' + value + ';';
- });
-
- dom.remove(previewElm);
-
- return previewCss;
- };
-
- // Tell it to load theme specific language pack(s)
- tinymce.ThemeManager.requireLangPack('advanced');
-
- tinymce.create('tinymce.themes.AdvancedTheme', {
- sizes : [8, 10, 12, 14, 18, 24, 36],
-
- // Control name lookup, format: title, command
- controls : {
- bold : ['bold_desc', 'Bold'],
- italic : ['italic_desc', 'Italic'],
- underline : ['underline_desc', 'Underline'],
- strikethrough : ['striketrough_desc', 'Strikethrough'],
- justifyleft : ['justifyleft_desc', 'JustifyLeft'],
- justifycenter : ['justifycenter_desc', 'JustifyCenter'],
- justifyright : ['justifyright_desc', 'JustifyRight'],
- justifyfull : ['justifyfull_desc', 'JustifyFull'],
- bullist : ['bullist_desc', 'InsertUnorderedList'],
- numlist : ['numlist_desc', 'InsertOrderedList'],
- outdent : ['outdent_desc', 'Outdent'],
- indent : ['indent_desc', 'Indent'],
- cut : ['cut_desc', 'Cut'],
- copy : ['copy_desc', 'Copy'],
- paste : ['paste_desc', 'Paste'],
- undo : ['undo_desc', 'Undo'],
- redo : ['redo_desc', 'Redo'],
- link : ['link_desc', 'mceLink'],
- unlink : ['unlink_desc', 'unlink'],
- image : ['image_desc', 'mceImage'],
- cleanup : ['cleanup_desc', 'mceCleanup'],
- help : ['help_desc', 'mceHelp'],
- code : ['code_desc', 'mceCodeEditor'],
- hr : ['hr_desc', 'InsertHorizontalRule'],
- removeformat : ['removeformat_desc', 'RemoveFormat'],
- sub : ['sub_desc', 'subscript'],
- sup : ['sup_desc', 'superscript'],
- forecolor : ['forecolor_desc', 'ForeColor'],
- forecolorpicker : ['forecolor_desc', 'mceForeColor'],
- backcolor : ['backcolor_desc', 'HiliteColor'],
- backcolorpicker : ['backcolor_desc', 'mceBackColor'],
- charmap : ['charmap_desc', 'mceCharMap'],
- visualaid : ['visualaid_desc', 'mceToggleVisualAid'],
- anchor : ['anchor_desc', 'mceInsertAnchor'],
- newdocument : ['newdocument_desc', 'mceNewDocument'],
- blockquote : ['blockquote_desc', 'mceBlockQuote']
- },
-
- stateControls : ['bold', 'italic', 'underline', 'strikethrough', 'bullist', 'numlist', 'justifyleft', 'justifycenter', 'justifyright', 'justifyfull', 'sub', 'sup', 'blockquote'],
-
- init : function(ed, url) {
- var t = this, s, v, o;
-
- t.editor = ed;
- t.url = url;
- t.onResolveName = new tinymce.util.Dispatcher(this);
- s = ed.settings;
-
- ed.forcedHighContrastMode = ed.settings.detect_highcontrast && t._isHighContrast();
- ed.settings.skin = ed.forcedHighContrastMode ? 'highcontrast' : ed.settings.skin;
-
- // Setup default buttons
- if (!s.theme_advanced_buttons1) {
- s = extend({
- theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect",
- theme_advanced_buttons2 : "bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code",
- theme_advanced_buttons3 : "hr,removeformat,visualaid,|,sub,sup,|,charmap"
- }, s);
- }
-
- // Default settings
- t.settings = s = extend({
- theme_advanced_path : true,
- theme_advanced_toolbar_location : 'top',
- theme_advanced_blockformats : "p,address,pre,h1,h2,h3,h4,h5,h6",
- theme_advanced_toolbar_align : "left",
- theme_advanced_statusbar_location : "bottom",
- theme_advanced_fonts : "Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",
- theme_advanced_more_colors : 1,
- theme_advanced_row_height : 23,
- theme_advanced_resize_horizontal : 1,
- theme_advanced_resizing_use_cookie : 1,
- theme_advanced_font_sizes : "1,2,3,4,5,6,7",
- theme_advanced_font_selector : "span",
- theme_advanced_show_current_color: 0,
- readonly : ed.settings.readonly
- }, s);
-
- // Setup default font_size_style_values
- if (!s.font_size_style_values)
- s.font_size_style_values = "8pt,10pt,12pt,14pt,18pt,24pt,36pt";
-
- if (tinymce.is(s.theme_advanced_font_sizes, 'string')) {
- s.font_size_style_values = tinymce.explode(s.font_size_style_values);
- s.font_size_classes = tinymce.explode(s.font_size_classes || '');
-
- // Parse string value
- o = {};
- ed.settings.theme_advanced_font_sizes = s.theme_advanced_font_sizes;
- each(ed.getParam('theme_advanced_font_sizes', '', 'hash'), function(v, k) {
- var cl;
-
- if (k == v && v >= 1 && v <= 7) {
- k = v + ' (' + t.sizes[v - 1] + 'pt)';
- cl = s.font_size_classes[v - 1];
- v = s.font_size_style_values[v - 1] || (t.sizes[v - 1] + 'pt');
- }
-
- if (/^\s*\./.test(v))
- cl = v.replace(/\./g, '');
-
- o[k] = cl ? {'class' : cl} : {fontSize : v};
- });
-
- s.theme_advanced_font_sizes = o;
- }
-
- if ((v = s.theme_advanced_path_location) && v != 'none')
- s.theme_advanced_statusbar_location = s.theme_advanced_path_location;
-
- if (s.theme_advanced_statusbar_location == 'none')
- s.theme_advanced_statusbar_location = 0;
-
- if (ed.settings.content_css !== false)
- ed.contentCSS.push(ed.baseURI.toAbsolute(url + "/skins/" + ed.settings.skin + "/content.css"));
-
- // Init editor
- ed.onInit.add(function() {
- if (!ed.settings.readonly) {
- ed.onNodeChange.add(t._nodeChanged, t);
- ed.onKeyUp.add(t._updateUndoStatus, t);
- ed.onMouseUp.add(t._updateUndoStatus, t);
- ed.dom.bind(ed.dom.getRoot(), 'dragend', function() {
- t._updateUndoStatus(ed);
- });
- }
- });
-
- ed.onSetProgressState.add(function(ed, b, ti) {
- var co, id = ed.id, tb;
-
- if (b) {
- t.progressTimer = setTimeout(function() {
- co = ed.getContainer();
- co = co.insertBefore(DOM.create('DIV', {style : 'position:relative'}), co.firstChild);
- tb = DOM.get(ed.id + '_tbl');
-
- DOM.add(co, 'div', {id : id + '_blocker', 'class' : 'mceBlocker', style : {width : tb.clientWidth + 2, height : tb.clientHeight + 2}});
- DOM.add(co, 'div', {id : id + '_progress', 'class' : 'mceProgress', style : {left : tb.clientWidth / 2, top : tb.clientHeight / 2}});
- }, ti || 0);
- } else {
- DOM.remove(id + '_blocker');
- DOM.remove(id + '_progress');
- clearTimeout(t.progressTimer);
- }
- });
-
- DOM.loadCSS(s.editor_css ? ed.documentBaseURI.toAbsolute(s.editor_css) : url + "/skins/" + ed.settings.skin + "/ui.css");
-
- if (s.skin_variant)
- DOM.loadCSS(url + "/skins/" + ed.settings.skin + "/ui_" + s.skin_variant + ".css");
- },
-
- _isHighContrast : function() {
- var actualColor, div = DOM.add(DOM.getRoot(), 'div', {'style': 'background-color: rgb(171,239,86);'});
-
- actualColor = (DOM.getStyle(div, 'background-color', true) + '').toLowerCase().replace(/ /g, '');
- DOM.remove(div);
-
- return actualColor != 'rgb(171,239,86)' && actualColor != '#abef56';
- },
-
- createControl : function(n, cf) {
- var cd, c;
-
- if (c = cf.createControl(n))
- return c;
-
- switch (n) {
- case "styleselect":
- return this._createStyleSelect();
-
- case "formatselect":
- return this._createBlockFormats();
-
- case "fontselect":
- return this._createFontSelect();
-
- case "fontsizeselect":
- return this._createFontSizeSelect();
-
- case "forecolor":
- return this._createForeColorMenu();
-
- case "backcolor":
- return this._createBackColorMenu();
- }
-
- if ((cd = this.controls[n]))
- return cf.createButton(n, {title : "advanced." + cd[0], cmd : cd[1], ui : cd[2], value : cd[3]});
- },
-
- execCommand : function(cmd, ui, val) {
- var f = this['_' + cmd];
-
- if (f) {
- f.call(this, ui, val);
- return true;
- }
-
- return false;
- },
-
- _importClasses : function(e) {
- var ed = this.editor, ctrl = ed.controlManager.get('styleselect');
-
- if (ctrl.getLength() == 0) {
- each(ed.dom.getClasses(), function(o, idx) {
- var name = 'style_' + idx, fmt;
-
- fmt = {
- inline : 'span',
- attributes : {'class' : o['class']},
- selector : '*'
- };
-
- ed.formatter.register(name, fmt);
-
- ctrl.add(o['class'], name, {
- style: function() {
- return getPreviewCss(ed, fmt);
- }
- });
- });
- }
- },
-
- _createStyleSelect : function(n) {
- var t = this, ed = t.editor, ctrlMan = ed.controlManager, ctrl;
-
- // Setup style select box
- ctrl = ctrlMan.createListBox('styleselect', {
- title : 'advanced.style_select',
- onselect : function(name) {
- var matches, formatNames = [], removedFormat;
-
- each(ctrl.items, function(item) {
- formatNames.push(item.value);
- });
-
- ed.focus();
- ed.undoManager.add();
-
- // Toggle off the current format(s)
- matches = ed.formatter.matchAll(formatNames);
- tinymce.each(matches, function(match) {
- if (!name || match == name) {
- if (match)
- ed.formatter.remove(match);
-
- removedFormat = true;
- }
- });
-
- if (!removedFormat)
- ed.formatter.apply(name);
-
- ed.undoManager.add();
- ed.nodeChanged();
-
- return false; // No auto select
- }
- });
-
- // Handle specified format
- ed.onPreInit.add(function() {
- var counter = 0, formats = ed.getParam('style_formats');
-
- if (formats) {
- each(formats, function(fmt) {
- var name, keys = 0;
-
- each(fmt, function() {keys++;});
-
- if (keys > 1) {
- name = fmt.name = fmt.name || 'style_' + (counter++);
- ed.formatter.register(name, fmt);
- ctrl.add(fmt.title, name, {
- style: function() {
- return getPreviewCss(ed, fmt);
- }
- });
- } else
- ctrl.add(fmt.title);
- });
- } else {
- each(ed.getParam('theme_advanced_styles', '', 'hash'), function(val, key) {
- var name, fmt;
-
- if (val) {
- name = 'style_' + (counter++);
- fmt = {
- inline : 'span',
- classes : val,
- selector : '*'
- };
-
- ed.formatter.register(name, fmt);
- ctrl.add(t.editor.translate(key), name, {
- style: function() {
- return getPreviewCss(ed, fmt);
- }
- });
- }
- });
- }
- });
-
- // Auto import classes if the ctrl box is empty
- if (ctrl.getLength() == 0) {
- ctrl.onPostRender.add(function(ed, n) {
- if (!ctrl.NativeListBox) {
- Event.add(n.id + '_text', 'focus', t._importClasses, t);
- Event.add(n.id + '_text', 'mousedown', t._importClasses, t);
- Event.add(n.id + '_open', 'focus', t._importClasses, t);
- Event.add(n.id + '_open', 'mousedown', t._importClasses, t);
- } else
- Event.add(n.id, 'focus', t._importClasses, t);
- });
- }
-
- return ctrl;
- },
-
- _createFontSelect : function() {
- var c, t = this, ed = t.editor;
-
- c = ed.controlManager.createListBox('fontselect', {
- title : 'advanced.fontdefault',
- onselect : function(v) {
- var cur = c.items[c.selectedIndex];
-
- if (!v && cur) {
- ed.execCommand('FontName', false, cur.value);
- return;
- }
-
- ed.execCommand('FontName', false, v);
-
- // Fake selection, execCommand will fire a nodeChange and update the selection
- c.select(function(sv) {
- return v == sv;
- });
-
- if (cur && cur.value == v) {
- c.select(null);
- }
-
- return false; // No auto select
- }
- });
-
- if (c) {
- each(ed.getParam('theme_advanced_fonts', t.settings.theme_advanced_fonts, 'hash'), function(v, k) {
- c.add(ed.translate(k), v, {style : v.indexOf('dings') == -1 ? 'font-family:' + v : ''});
- });
- }
-
- return c;
- },
-
- _createFontSizeSelect : function() {
- var t = this, ed = t.editor, c, i = 0, cl = [];
-
- c = ed.controlManager.createListBox('fontsizeselect', {title : 'advanced.font_size', onselect : function(v) {
- var cur = c.items[c.selectedIndex];
-
- if (!v && cur) {
- cur = cur.value;
-
- if (cur['class']) {
- ed.formatter.toggle('fontsize_class', {value : cur['class']});
- ed.undoManager.add();
- ed.nodeChanged();
- } else {
- ed.execCommand('FontSize', false, cur.fontSize);
- }
-
- return;
- }
-
- if (v['class']) {
- ed.focus();
- ed.undoManager.add();
- ed.formatter.toggle('fontsize_class', {value : v['class']});
- ed.undoManager.add();
- ed.nodeChanged();
- } else
- ed.execCommand('FontSize', false, v.fontSize);
-
- // Fake selection, execCommand will fire a nodeChange and update the selection
- c.select(function(sv) {
- return v == sv;
- });
-
- if (cur && (cur.value.fontSize == v.fontSize || cur.value['class'] && cur.value['class'] == v['class'])) {
- c.select(null);
- }
-
- return false; // No auto select
- }});
-
- if (c) {
- each(t.settings.theme_advanced_font_sizes, function(v, k) {
- var fz = v.fontSize;
-
- if (fz >= 1 && fz <= 7)
- fz = t.sizes[parseInt(fz) - 1] + 'pt';
-
- c.add(k, v, {'style' : 'font-size:' + fz, 'class' : 'mceFontSize' + (i++) + (' ' + (v['class'] || ''))});
- });
- }
-
- return c;
- },
-
- _createBlockFormats : function() {
- var c, fmts = {
- p : 'advanced.paragraph',
- address : 'advanced.address',
- pre : 'advanced.pre',
- h1 : 'advanced.h1',
- h2 : 'advanced.h2',
- h3 : 'advanced.h3',
- h4 : 'advanced.h4',
- h5 : 'advanced.h5',
- h6 : 'advanced.h6',
- div : 'advanced.div',
- blockquote : 'advanced.blockquote',
- code : 'advanced.code',
- dt : 'advanced.dt',
- dd : 'advanced.dd',
- samp : 'advanced.samp'
- }, t = this;
-
- c = t.editor.controlManager.createListBox('formatselect', {title : 'advanced.block', onselect : function(v) {
- t.editor.execCommand('FormatBlock', false, v);
- return false;
- }});
-
- if (c) {
- each(t.editor.getParam('theme_advanced_blockformats', t.settings.theme_advanced_blockformats, 'hash'), function(v, k) {
- c.add(t.editor.translate(k != v ? k : fmts[v]), v, {'class' : 'mce_formatPreview mce_' + v, style: function() {
- return getPreviewCss(t.editor, {block: v});
- }});
- });
- }
-
- return c;
- },
-
- _createForeColorMenu : function() {
- var c, t = this, s = t.settings, o = {}, v;
-
- if (s.theme_advanced_more_colors) {
- o.more_colors_func = function() {
- t._mceColorPicker(0, {
- color : c.value,
- func : function(co) {
- c.setColor(co);
- }
- });
- };
- }
-
- if (v = s.theme_advanced_text_colors)
- o.colors = v;
-
- if (s.theme_advanced_default_foreground_color)
- o.default_color = s.theme_advanced_default_foreground_color;
-
- o.title = 'advanced.forecolor_desc';
- o.cmd = 'ForeColor';
- o.scope = this;
-
- c = t.editor.controlManager.createColorSplitButton('forecolor', o);
-
- return c;
- },
-
- _createBackColorMenu : function() {
- var c, t = this, s = t.settings, o = {}, v;
-
- if (s.theme_advanced_more_colors) {
- o.more_colors_func = function() {
- t._mceColorPicker(0, {
- color : c.value,
- func : function(co) {
- c.setColor(co);
- }
- });
- };
- }
-
- if (v = s.theme_advanced_background_colors)
- o.colors = v;
-
- if (s.theme_advanced_default_background_color)
- o.default_color = s.theme_advanced_default_background_color;
-
- o.title = 'advanced.backcolor_desc';
- o.cmd = 'HiliteColor';
- o.scope = this;
-
- c = t.editor.controlManager.createColorSplitButton('backcolor', o);
-
- return c;
- },
-
- renderUI : function(o) {
- var n, ic, tb, t = this, ed = t.editor, s = t.settings, sc, p, nl;
-
- if (ed.settings) {
- ed.settings.aria_label = s.aria_label + ed.getLang('advanced.help_shortcut');
- }
-
- // TODO: ACC Should have an aria-describedby attribute which is user-configurable to describe what this field is actually for.
- // Maybe actually inherit it from the original textara?
- n = p = DOM.create('span', {role : 'application', 'aria-labelledby' : ed.id + '_voice', id : ed.id + '_parent', 'class' : 'mceEditor ' + ed.settings.skin + 'Skin' + (s.skin_variant ? ' ' + ed.settings.skin + 'Skin' + t._ufirst(s.skin_variant) : '') + (ed.settings.directionality == "rtl" ? ' mceRtl' : '')});
- DOM.add(n, 'span', {'class': 'mceVoiceLabel', 'style': 'display:none;', id: ed.id + '_voice'}, s.aria_label);
-
- if (!DOM.boxModel)
- n = DOM.add(n, 'div', {'class' : 'mceOldBoxModel'});
-
- n = sc = DOM.add(n, 'table', {role : "presentation", id : ed.id + '_tbl', 'class' : 'mceLayout', cellSpacing : 0, cellPadding : 0});
- n = tb = DOM.add(n, 'tbody');
-
- switch ((s.theme_advanced_layout_manager || '').toLowerCase()) {
- case "rowlayout":
- ic = t._rowLayout(s, tb, o);
- break;
-
- case "customlayout":
- ic = ed.execCallback("theme_advanced_custom_layout", s, tb, o, p);
- break;
-
- default:
- ic = t._simpleLayout(s, tb, o, p);
- }
-
- n = o.targetNode;
-
- // Add classes to first and last TRs
- nl = sc.rows;
- DOM.addClass(nl[0], 'mceFirst');
- DOM.addClass(nl[nl.length - 1], 'mceLast');
-
- // Add classes to first and last TDs
- each(DOM.select('tr', tb), function(n) {
- DOM.addClass(n.firstChild, 'mceFirst');
- DOM.addClass(n.childNodes[n.childNodes.length - 1], 'mceLast');
- });
-
- if (DOM.get(s.theme_advanced_toolbar_container))
- DOM.get(s.theme_advanced_toolbar_container).appendChild(p);
- else
- DOM.insertAfter(p, n);
-
- Event.add(ed.id + '_path_row', 'click', function(e) {
- e = e.target;
-
- if (e.nodeName == 'A') {
- t._sel(e.className.replace(/^.*mcePath_([0-9]+).*$/, '$1'));
- return false;
- }
- });
-/*
- if (DOM.get(ed.id + '_path_row')) {
- Event.add(ed.id + '_tbl', 'mouseover', function(e) {
- var re;
-
- e = e.target;
-
- if (e.nodeName == 'SPAN' && DOM.hasClass(e.parentNode, 'mceButton')) {
- re = DOM.get(ed.id + '_path_row');
- t.lastPath = re.innerHTML;
- DOM.setHTML(re, e.parentNode.title);
- }
- });
-
- Event.add(ed.id + '_tbl', 'mouseout', function(e) {
- if (t.lastPath) {
- DOM.setHTML(ed.id + '_path_row', t.lastPath);
- t.lastPath = 0;
- }
- });
- }
-*/
-
- if (!ed.getParam('accessibility_focus'))
- Event.add(DOM.add(p, 'a', {href : '#'}, '<!-- IE -->'), 'focus', function() {tinyMCE.get(ed.id).focus();});
-
- if (s.theme_advanced_toolbar_location == 'external')
- o.deltaHeight = 0;
-
- t.deltaHeight = o.deltaHeight;
- o.targetNode = null;
-
- ed.onKeyDown.add(function(ed, evt) {
- var DOM_VK_F10 = 121, DOM_VK_F11 = 122;
-
- if (evt.altKey) {
- if (evt.keyCode === DOM_VK_F10) {
- // Make sure focus is given to toolbar in Safari.
- // We can't do this in IE as it prevents giving focus to toolbar when editor is in a frame
- if (tinymce.isWebKit) {
- window.focus();
- }
- t.toolbarGroup.focus();
- return Event.cancel(evt);
- } else if (evt.keyCode === DOM_VK_F11) {
- DOM.get(ed.id + '_path_row').focus();
- return Event.cancel(evt);
- }
- }
- });
-
- // alt+0 is the UK recommended shortcut for accessing the list of access controls.
- ed.addShortcut('alt+0', '', 'mceShortcuts', t);
-
- return {
- iframeContainer : ic,
- editorContainer : ed.id + '_parent',
- sizeContainer : sc,
- deltaHeight : o.deltaHeight
- };
- },
-
- getInfo : function() {
- return {
- longname : 'Advanced theme',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- }
- },
-
- resizeBy : function(dw, dh) {
- var e = DOM.get(this.editor.id + '_ifr');
-
- this.resizeTo(e.clientWidth + dw, e.clientHeight + dh);
- },
-
- resizeTo : function(w, h, store) {
- var ed = this.editor, s = this.settings, e = DOM.get(ed.id + '_tbl'), ifr = DOM.get(ed.id + '_ifr');
-
- // Boundery fix box
- w = Math.max(s.theme_advanced_resizing_min_width || 100, w);
- h = Math.max(s.theme_advanced_resizing_min_height || 100, h);
- w = Math.min(s.theme_advanced_resizing_max_width || 0xFFFF, w);
- h = Math.min(s.theme_advanced_resizing_max_height || 0xFFFF, h);
-
- // Resize iframe and container
- DOM.setStyle(e, 'height', '');
- DOM.setStyle(ifr, 'height', h);
-
- if (s.theme_advanced_resize_horizontal) {
- DOM.setStyle(e, 'width', '');
- DOM.setStyle(ifr, 'width', w);
-
- // Make sure that the size is never smaller than the over all ui
- if (w < e.clientWidth) {
- w = e.clientWidth;
- DOM.setStyle(ifr, 'width', e.clientWidth);
- }
- }
-
- // Store away the size
- if (store && s.theme_advanced_resizing_use_cookie) {
- Cookie.setHash("TinyMCE_" + ed.id + "_size", {
- cw : w,
- ch : h
- });
- }
- },
-
- destroy : function() {
- var id = this.editor.id;
-
- Event.clear(id + '_resize');
- Event.clear(id + '_path_row');
- Event.clear(id + '_external_close');
- },
-
- // Internal functions
-
- _simpleLayout : function(s, tb, o, p) {
- var t = this, ed = t.editor, lo = s.theme_advanced_toolbar_location, sl = s.theme_advanced_statusbar_location, n, ic, etb, c;
-
- if (s.readonly) {
- n = DOM.add(tb, 'tr');
- n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'});
- return ic;
- }
-
- // Create toolbar container at top
- if (lo == 'top')
- t._addToolbars(tb, o);
-
- // Create external toolbar
- if (lo == 'external') {
- n = c = DOM.create('div', {style : 'position:relative'});
- n = DOM.add(n, 'div', {id : ed.id + '_external', 'class' : 'mceExternalToolbar'});
- DOM.add(n, 'a', {id : ed.id + '_external_close', href : 'javascript:;', 'class' : 'mceExternalClose'});
- n = DOM.add(n, 'table', {id : ed.id + '_tblext', cellSpacing : 0, cellPadding : 0});
- etb = DOM.add(n, 'tbody');
-
- if (p.firstChild.className == 'mceOldBoxModel')
- p.firstChild.appendChild(c);
- else
- p.insertBefore(c, p.firstChild);
-
- t._addToolbars(etb, o);
-
- ed.onMouseUp.add(function() {
- var e = DOM.get(ed.id + '_external');
- DOM.show(e);
-
- DOM.hide(lastExtID);
-
- var f = Event.add(ed.id + '_external_close', 'click', function() {
- DOM.hide(ed.id + '_external');
- Event.remove(ed.id + '_external_close', 'click', f);
- return false;
- });
-
- DOM.show(e);
- DOM.setStyle(e, 'top', 0 - DOM.getRect(ed.id + '_tblext').h - 1);
-
- // Fixes IE rendering bug
- DOM.hide(e);
- DOM.show(e);
- e.style.filter = '';
-
- lastExtID = ed.id + '_external';
-
- e = null;
- });
- }
-
- if (sl == 'top')
- t._addStatusBar(tb, o);
-
- // Create iframe container
- if (!s.theme_advanced_toolbar_container) {
- n = DOM.add(tb, 'tr');
- n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'});
- }
-
- // Create toolbar container at bottom
- if (lo == 'bottom')
- t._addToolbars(tb, o);
-
- if (sl == 'bottom')
- t._addStatusBar(tb, o);
-
- return ic;
- },
-
- _rowLayout : function(s, tb, o) {
- var t = this, ed = t.editor, dc, da, cf = ed.controlManager, n, ic, to, a;
-
- dc = s.theme_advanced_containers_default_class || '';
- da = s.theme_advanced_containers_default_align || 'center';
-
- each(explode(s.theme_advanced_containers || ''), function(c, i) {
- var v = s['theme_advanced_container_' + c] || '';
-
- switch (c.toLowerCase()) {
- case 'mceeditor':
- n = DOM.add(tb, 'tr');
- n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'});
- break;
-
- case 'mceelementpath':
- t._addStatusBar(tb, o);
- break;
-
- default:
- a = (s['theme_advanced_container_' + c + '_align'] || da).toLowerCase();
- a = 'mce' + t._ufirst(a);
-
- n = DOM.add(DOM.add(tb, 'tr'), 'td', {
- 'class' : 'mceToolbar ' + (s['theme_advanced_container_' + c + '_class'] || dc) + ' ' + a || da
- });
-
- to = cf.createToolbar("toolbar" + i);
- t._addControls(v, to);
- DOM.setHTML(n, to.renderHTML());
- o.deltaHeight -= s.theme_advanced_row_height;
- }
- });
-
- return ic;
- },
-
- _addControls : function(v, tb) {
- var t = this, s = t.settings, di, cf = t.editor.controlManager;
-
- if (s.theme_advanced_disable && !t._disabled) {
- di = {};
-
- each(explode(s.theme_advanced_disable), function(v) {
- di[v] = 1;
- });
-
- t._disabled = di;
- } else
- di = t._disabled;
-
- each(explode(v), function(n) {
- var c;
-
- if (di && di[n])
- return;
-
- // Compatiblity with 2.x
- if (n == 'tablecontrols') {
- each(["table","|","row_props","cell_props","|","row_before","row_after","delete_row","|","col_before","col_after","delete_col","|","split_cells","merge_cells"], function(n) {
- n = t.createControl(n, cf);
-
- if (n)
- tb.add(n);
- });
-
- return;
- }
-
- c = t.createControl(n, cf);
-
- if (c)
- tb.add(c);
- });
- },
-
- _addToolbars : function(c, o) {
- var t = this, i, tb, ed = t.editor, s = t.settings, v, cf = ed.controlManager, di, n, h = [], a, toolbarGroup, toolbarsExist = false;
-
- toolbarGroup = cf.createToolbarGroup('toolbargroup', {
- 'name': ed.getLang('advanced.toolbar'),
- 'tab_focus_toolbar':ed.getParam('theme_advanced_tab_focus_toolbar')
- });
-
- t.toolbarGroup = toolbarGroup;
-
- a = s.theme_advanced_toolbar_align.toLowerCase();
- a = 'mce' + t._ufirst(a);
-
- n = DOM.add(DOM.add(c, 'tr', {role: 'presentation'}), 'td', {'class' : 'mceToolbar ' + a, "role":"toolbar"});
-
- // Create toolbar and add the controls
- for (i=1; (v = s['theme_advanced_buttons' + i]); i++) {
- toolbarsExist = true;
- tb = cf.createToolbar("toolbar" + i, {'class' : 'mceToolbarRow' + i});
-
- if (s['theme_advanced_buttons' + i + '_add'])
- v += ',' + s['theme_advanced_buttons' + i + '_add'];
-
- if (s['theme_advanced_buttons' + i + '_add_before'])
- v = s['theme_advanced_buttons' + i + '_add_before'] + ',' + v;
-
- t._addControls(v, tb);
- toolbarGroup.add(tb);
-
- o.deltaHeight -= s.theme_advanced_row_height;
- }
- // Handle case when there are no toolbar buttons and ensure editor height is adjusted accordingly
- if (!toolbarsExist)
- o.deltaHeight -= s.theme_advanced_row_height;
- h.push(toolbarGroup.renderHTML());
- h.push(DOM.createHTML('a', {href : '#', accesskey : 'z', title : ed.getLang("advanced.toolbar_focus"), onfocus : 'tinyMCE.getInstanceById(\'' + ed.id + '\').focus();'}, '<!-- IE -->'));
- DOM.setHTML(n, h.join(''));
- },
-
- _addStatusBar : function(tb, o) {
- var n, t = this, ed = t.editor, s = t.settings, r, mf, me, td;
-
- n = DOM.add(tb, 'tr');
- n = td = DOM.add(n, 'td', {'class' : 'mceStatusbar'});
- n = DOM.add(n, 'div', {id : ed.id + '_path_row', 'role': 'group', 'aria-labelledby': ed.id + '_path_voice'});
- if (s.theme_advanced_path) {
- DOM.add(n, 'span', {id: ed.id + '_path_voice'}, ed.translate('advanced.path'));
- DOM.add(n, 'span', {}, ': ');
- } else {
- DOM.add(n, 'span', {}, '&#160;');
- }
-
-
- if (s.theme_advanced_resizing) {
- DOM.add(td, 'a', {id : ed.id + '_resize', href : 'javascript:;', onclick : "return false;", 'class' : 'mceResize', tabIndex:"-1"});
-
- if (s.theme_advanced_resizing_use_cookie) {
- ed.onPostRender.add(function() {
- var o = Cookie.getHash("TinyMCE_" + ed.id + "_size"), c = DOM.get(ed.id + '_tbl');
-
- if (!o)
- return;
-
- t.resizeTo(o.cw, o.ch);
- });
- }
-
- ed.onPostRender.add(function() {
- Event.add(ed.id + '_resize', 'click', function(e) {
- e.preventDefault();
- });
-
- Event.add(ed.id + '_resize', 'mousedown', function(e) {
- var mouseMoveHandler1, mouseMoveHandler2,
- mouseUpHandler1, mouseUpHandler2,
- startX, startY, startWidth, startHeight, width, height, ifrElm;
-
- function resizeOnMove(e) {
- e.preventDefault();
-
- width = startWidth + (e.screenX - startX);
- height = startHeight + (e.screenY - startY);
-
- t.resizeTo(width, height);
- };
-
- function endResize(e) {
- // Stop listening
- Event.remove(DOM.doc, 'mousemove', mouseMoveHandler1);
- Event.remove(ed.getDoc(), 'mousemove', mouseMoveHandler2);
- Event.remove(DOM.doc, 'mouseup', mouseUpHandler1);
- Event.remove(ed.getDoc(), 'mouseup', mouseUpHandler2);
-
- width = startWidth + (e.screenX - startX);
- height = startHeight + (e.screenY - startY);
- t.resizeTo(width, height, true);
-
- ed.nodeChanged();
- };
-
- e.preventDefault();
-
- // Get the current rect size
- startX = e.screenX;
- startY = e.screenY;
- ifrElm = DOM.get(t.editor.id + '_ifr');
- startWidth = width = ifrElm.clientWidth;
- startHeight = height = ifrElm.clientHeight;
-
- // Register envent handlers
- mouseMoveHandler1 = Event.add(DOM.doc, 'mousemove', resizeOnMove);
- mouseMoveHandler2 = Event.add(ed.getDoc(), 'mousemove', resizeOnMove);
- mouseUpHandler1 = Event.add(DOM.doc, 'mouseup', endResize);
- mouseUpHandler2 = Event.add(ed.getDoc(), 'mouseup', endResize);
- });
- });
- }
-
- o.deltaHeight -= 21;
- n = tb = null;
- },
-
- _updateUndoStatus : function(ed) {
- var cm = ed.controlManager, um = ed.undoManager;
-
- cm.setDisabled('undo', !um.hasUndo() && !um.typing);
- cm.setDisabled('redo', !um.hasRedo());
- },
-
- _nodeChanged : function(ed, cm, n, co, ob) {
- var t = this, p, de = 0, v, c, s = t.settings, cl, fz, fn, fc, bc, formatNames, matches;
-
- tinymce.each(t.stateControls, function(c) {
- cm.setActive(c, ed.queryCommandState(t.controls[c][1]));
- });
-
- function getParent(name) {
- var i, parents = ob.parents, func = name;
-
- if (typeof(name) == 'string') {
- func = function(node) {
- return node.nodeName == name;
- };
- }
-
- for (i = 0; i < parents.length; i++) {
- if (func(parents[i]))
- return parents[i];
- }
- };
-
- cm.setActive('visualaid', ed.hasVisual);
- t._updateUndoStatus(ed);
- cm.setDisabled('outdent', !ed.queryCommandState('Outdent'));
-
- p = getParent('A');
- if (c = cm.get('link')) {
- c.setDisabled((!p && co) || (p && !p.href));
- c.setActive(!!p && (!p.name && !p.id));
- }
-
- if (c = cm.get('unlink')) {
- c.setDisabled(!p && co);
- c.setActive(!!p && !p.name && !p.id);
- }
-
- if (c = cm.get('anchor')) {
- c.setActive(!co && !!p && (p.name || (p.id && !p.href)));
- }
-
- p = getParent('IMG');
- if (c = cm.get('image'))
- c.setActive(!co && !!p && n.className.indexOf('mceItem') == -1);
-
- if (c = cm.get('styleselect')) {
- t._importClasses();
-
- formatNames = [];
- each(c.items, function(item) {
- formatNames.push(item.value);
- });
-
- matches = ed.formatter.matchAll(formatNames);
- c.select(matches[0]);
- tinymce.each(matches, function(match, index) {
- if (index > 0) {
- c.mark(match);
- }
- });
- }
-
- if (c = cm.get('formatselect')) {
- p = getParent(ed.dom.isBlock);
-
- if (p)
- c.select(p.nodeName.toLowerCase());
- }
-
- // Find out current fontSize, fontFamily and fontClass
- getParent(function(n) {
- if (n.nodeName === 'SPAN') {
- if (!cl && n.className)
- cl = n.className;
- }
-
- if (ed.dom.is(n, s.theme_advanced_font_selector)) {
- if (!fz && n.style.fontSize)
- fz = n.style.fontSize;
-
- if (!fn && n.style.fontFamily)
- fn = n.style.fontFamily.replace(/[\"\']+/g, '').replace(/^([^,]+).*/, '$1').toLowerCase();
-
- if (!fc && n.style.color)
- fc = n.style.color;
-
- if (!bc && n.style.backgroundColor)
- bc = n.style.backgroundColor;
- }
-
- return false;
- });
-
- if (c = cm.get('fontselect')) {
- c.select(function(v) {
- return v.replace(/^([^,]+).*/, '$1').toLowerCase() == fn;
- });
- }
-
- // Select font size
- if (c = cm.get('fontsizeselect')) {
- // Use computed style
- if (s.theme_advanced_runtime_fontsize && !fz && !cl)
- fz = ed.dom.getStyle(n, 'fontSize', true);
-
- c.select(function(v) {
- if (v.fontSize && v.fontSize === fz)
- return true;
-
- if (v['class'] && v['class'] === cl)
- return true;
- });
- }
-
- if (s.theme_advanced_show_current_color) {
- function updateColor(controlId, color) {
- if (c = cm.get(controlId)) {
- if (!color)
- color = c.settings.default_color;
- if (color !== c.value) {
- c.displayColor(color);
- }
- }
- }
- updateColor('forecolor', fc);
- updateColor('backcolor', bc);
- }
-
- if (s.theme_advanced_show_current_color) {
- function updateColor(controlId, color) {
- if (c = cm.get(controlId)) {
- if (!color)
- color = c.settings.default_color;
- if (color !== c.value) {
- c.displayColor(color);
- }
- }
- };
-
- updateColor('forecolor', fc);
- updateColor('backcolor', bc);
- }
-
- if (s.theme_advanced_path && s.theme_advanced_statusbar_location) {
- p = DOM.get(ed.id + '_path') || DOM.add(ed.id + '_path_row', 'span', {id : ed.id + '_path'});
-
- if (t.statusKeyboardNavigation) {
- t.statusKeyboardNavigation.destroy();
- t.statusKeyboardNavigation = null;
- }
-
- DOM.setHTML(p, '');
-
- getParent(function(n) {
- var na = n.nodeName.toLowerCase(), u, pi, ti = '';
-
- // Ignore non element and bogus/hidden elements
- if (n.nodeType != 1 || na === 'br' || n.getAttribute('data-mce-bogus') || DOM.hasClass(n, 'mceItemHidden') || DOM.hasClass(n, 'mceItemRemoved'))
- return;
-
- // Handle prefix
- if (tinymce.isIE && n.scopeName !== 'HTML' && n.scopeName)
- na = n.scopeName + ':' + na;
-
- // Remove internal prefix
- na = na.replace(/mce\:/g, '');
-
- // Handle node name
- switch (na) {
- case 'b':
- na = 'strong';
- break;
-
- case 'i':
- na = 'em';
- break;
-
- case 'img':
- if (v = DOM.getAttrib(n, 'src'))
- ti += 'src: ' + v + ' ';
-
- break;
-
- case 'a':
- if (v = DOM.getAttrib(n, 'name')) {
- ti += 'name: ' + v + ' ';
- na += '#' + v;
- }
-
- if (v = DOM.getAttrib(n, 'href'))
- ti += 'href: ' + v + ' ';
-
- break;
-
- case 'font':
- if (v = DOM.getAttrib(n, 'face'))
- ti += 'font: ' + v + ' ';
-
- if (v = DOM.getAttrib(n, 'size'))
- ti += 'size: ' + v + ' ';
-
- if (v = DOM.getAttrib(n, 'color'))
- ti += 'color: ' + v + ' ';
-
- break;
-
- case 'span':
- if (v = DOM.getAttrib(n, 'style'))
- ti += 'style: ' + v + ' ';
-
- break;
- }
-
- if (v = DOM.getAttrib(n, 'id'))
- ti += 'id: ' + v + ' ';
-
- if (v = n.className) {
- v = v.replace(/\b\s*(webkit|mce|Apple-)\w+\s*\b/g, '');
-
- if (v) {
- ti += 'class: ' + v + ' ';
-
- if (ed.dom.isBlock(n) || na == 'img' || na == 'span')
- na += '.' + v;
- }
- }
-
- na = na.replace(/(html:)/g, '');
- na = {name : na, node : n, title : ti};
- t.onResolveName.dispatch(t, na);
- ti = na.title;
- na = na.name;
-
- //u = "javascript:tinymce.EditorManager.get('" + ed.id + "').theme._sel('" + (de++) + "');";
- pi = DOM.create('a', {'href' : "javascript:;", role: 'button', onmousedown : "return false;", title : ti, 'class' : 'mcePath_' + (de++)}, na);
-
- if (p.hasChildNodes()) {
- p.insertBefore(DOM.create('span', {'aria-hidden': 'true'}, '\u00a0\u00bb '), p.firstChild);
- p.insertBefore(pi, p.firstChild);
- } else
- p.appendChild(pi);
- }, ed.getBody());
-
- if (DOM.select('a', p).length > 0) {
- t.statusKeyboardNavigation = new tinymce.ui.KeyboardNavigation({
- root: ed.id + "_path_row",
- items: DOM.select('a', p),
- excludeFromTabOrder: true,
- onCancel: function() {
- ed.focus();
- }
- }, DOM);
- }
- }
- },
-
- // Commands gets called by execCommand
-
- _sel : function(v) {
- this.editor.execCommand('mceSelectNodeDepth', false, v);
- },
-
- _mceInsertAnchor : function(ui, v) {
- var ed = this.editor;
-
- ed.windowManager.open({
- url : this.url + '/anchor.htm',
- width : 320 + parseInt(ed.getLang('advanced.anchor_delta_width', 0)),
- height : 90 + parseInt(ed.getLang('advanced.anchor_delta_height', 0)),
- inline : true
- }, {
- theme_url : this.url
- });
- },
-
- _mceCharMap : function() {
- var ed = this.editor;
-
- ed.windowManager.open({
- url : this.url + '/charmap.htm',
- width : 550 + parseInt(ed.getLang('advanced.charmap_delta_width', 0)),
- height : 265 + parseInt(ed.getLang('advanced.charmap_delta_height', 0)),
- inline : true
- }, {
- theme_url : this.url
- });
- },
-
- _mceHelp : function() {
- var ed = this.editor;
-
- ed.windowManager.open({
- url : this.url + '/about.htm',
- width : 480,
- height : 380,
- inline : true
- }, {
- theme_url : this.url
- });
- },
-
- _mceShortcuts : function() {
- var ed = this.editor;
- ed.windowManager.open({
- url: this.url + '/shortcuts.htm',
- width: 480,
- height: 380,
- inline: true
- }, {
- theme_url: this.url
- });
- },
-
- _mceColorPicker : function(u, v) {
- var ed = this.editor;
-
- v = v || {};
-
- ed.windowManager.open({
- url : this.url + '/color_picker.htm',
- width : 375 + parseInt(ed.getLang('advanced.colorpicker_delta_width', 0)),
- height : 250 + parseInt(ed.getLang('advanced.colorpicker_delta_height', 0)),
- close_previous : false,
- inline : true
- }, {
- input_color : v.color,
- func : v.func,
- theme_url : this.url
- });
- },
-
- _mceCodeEditor : function(ui, val) {
- var ed = this.editor;
-
- ed.windowManager.open({
- url : this.url + '/source_editor.htm',
- width : parseInt(ed.getParam("theme_advanced_source_editor_width", 720)),
- height : parseInt(ed.getParam("theme_advanced_source_editor_height", 580)),
- inline : true,
- resizable : true,
- maximizable : true
- }, {
- theme_url : this.url
- });
- },
-
- _mceImage : function(ui, val) {
- var ed = this.editor;
-
- // Internal image object like a flash placeholder
- if (ed.dom.getAttrib(ed.selection.getNode(), 'class', '').indexOf('mceItem') != -1)
- return;
-
- ed.windowManager.open({
- url : this.url + '/image.htm',
- width : 355 + parseInt(ed.getLang('advanced.image_delta_width', 0)),
- height : 275 + parseInt(ed.getLang('advanced.image_delta_height', 0)),
- inline : true
- }, {
- theme_url : this.url
- });
- },
-
- _mceLink : function(ui, val) {
- var ed = this.editor;
-
- ed.windowManager.open({
- url : this.url + '/link.htm',
- width : 310 + parseInt(ed.getLang('advanced.link_delta_width', 0)),
- height : 200 + parseInt(ed.getLang('advanced.link_delta_height', 0)),
- inline : true
- }, {
- theme_url : this.url
- });
- },
-
- _mceNewDocument : function() {
- var ed = this.editor;
-
- ed.windowManager.confirm('advanced.newdocument', function(s) {
- if (s)
- ed.execCommand('mceSetContent', false, '');
- });
- },
-
- _mceForeColor : function() {
- var t = this;
-
- this._mceColorPicker(0, {
- color: t.fgColor,
- func : function(co) {
- t.fgColor = co;
- t.editor.execCommand('ForeColor', false, co);
- }
- });
- },
-
- _mceBackColor : function() {
- var t = this;
-
- this._mceColorPicker(0, {
- color: t.bgColor,
- func : function(co) {
- t.bgColor = co;
- t.editor.execCommand('HiliteColor', false, co);
- }
- });
- },
-
- _ufirst : function(s) {
- return s.substring(0, 1).toUpperCase() + s.substring(1);
- }
- });
-
- tinymce.ThemeManager.add('advanced', tinymce.themes.AdvancedTheme);
-}(tinymce));
diff --git a/program/js/tiny_mce/themes/advanced/image.htm b/program/js/tiny_mce/themes/advanced/image.htm
deleted file mode 100644
index b8ba729f6..000000000
--- a/program/js/tiny_mce/themes/advanced/image.htm
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#advanced_dlg.image_title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="../../utils/form_utils.js"></script>
- <script type="text/javascript" src="js/image.js"></script>
-</head>
-<body id="image" style="display: none">
-<form onsubmit="ImageDialog.update();return false;" action="#">
- <div class="tabs">
- <ul>
- <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advanced_dlg.image_title}</a></span></li>
- </ul>
- </div>
-
- <div class="panel_wrapper">
- <div id="general_panel" class="panel current">
- <table border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td class="nowrap"><label for="src">{#advanced_dlg.image_src}</label></td>
- <td><table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input id="src" name="src" type="text" class="mceFocus" value="" style="width: 200px" onchange="ImageDialog.getImageData();" /></td>
- <td id="srcbrowsercontainer">&nbsp;</td>
- </tr>
- </table></td>
- </tr>
- <tr>
- <td><label for="image_list">{#advanced_dlg.image_list}</label></td>
- <td><select id="image_list" name="image_list" onchange="document.getElementById('src').value=this.options[this.selectedIndex].value;document.getElementById('alt').value=this.options[this.selectedIndex].text;"></select></td>
- </tr>
- <tr>
- <td class="nowrap"><label for="alt">{#advanced_dlg.image_alt}</label></td>
- <td><input id="alt" name="alt" type="text" value="" style="width: 200px" /></td>
- </tr>
- <tr>
- <td class="nowrap"><label for="align">{#advanced_dlg.image_align}</label></td>
- <td><select id="align" name="align" onchange="ImageDialog.updateStyle();">
- <option value="">{#not_set}</option>
- <option value="baseline">{#advanced_dlg.image_align_baseline}</option>
- <option value="top">{#advanced_dlg.image_align_top}</option>
- <option value="middle">{#advanced_dlg.image_align_middle}</option>
- <option value="bottom">{#advanced_dlg.image_align_bottom}</option>
- <option value="text-top">{#advanced_dlg.image_align_texttop}</option>
- <option value="text-bottom">{#advanced_dlg.image_align_textbottom}</option>
- <option value="left">{#advanced_dlg.image_align_left}</option>
- <option value="right">{#advanced_dlg.image_align_right}</option>
- </select></td>
- </tr>
- <tr>
- <td class="nowrap"><label for="width">{#advanced_dlg.image_dimensions}</label></td>
- <td><input id="width" name="width" type="text" value="" size="3" maxlength="5" />
- x
- <input id="height" name="height" type="text" value="" size="3" maxlength="5" /></td>
- </tr>
- <tr>
- <td class="nowrap"><label for="border">{#advanced_dlg.image_border}</label></td>
- <td><input id="border" name="border" type="text" value="" size="3" maxlength="3" onchange="ImageDialog.updateStyle();" /></td>
- </tr>
- <tr>
- <td class="nowrap"><label for="vspace">{#advanced_dlg.image_vspace}</label></td>
- <td><input id="vspace" name="vspace" type="text" value="" size="3" maxlength="3" onchange="ImageDialog.updateStyle();" /></td>
- </tr>
- <tr>
- <td class="nowrap"><label for="hspace">{#advanced_dlg.image_hspace}</label></td>
- <td><input id="hspace" name="hspace" type="text" value="" size="3" maxlength="3" onchange="ImageDialog.updateStyle();" /></td>
- </tr>
- </table>
- </div>
- </div>
-
- <div class="mceActionPanel">
- <input type="submit" id="insert" name="insert" value="{#insert}" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
-</form>
-</body>
-</html>
diff --git a/program/js/tiny_mce/themes/advanced/img/colorpicker.jpg b/program/js/tiny_mce/themes/advanced/img/colorpicker.jpg
deleted file mode 100644
index b1a377aba..000000000
--- a/program/js/tiny_mce/themes/advanced/img/colorpicker.jpg
+++ /dev/null
Binary files differ
diff --git a/program/js/tiny_mce/themes/advanced/img/flash.gif b/program/js/tiny_mce/themes/advanced/img/flash.gif
deleted file mode 100644
index dec3f7c70..000000000
--- a/program/js/tiny_mce/themes/advanced/img/flash.gif
+++ /dev/null
Binary files differ
diff --git a/program/js/tiny_mce/themes/advanced/img/icons.gif b/program/js/tiny_mce/themes/advanced/img/icons.gif
deleted file mode 100644
index ca2224901..000000000
--- a/program/js/tiny_mce/themes/advanced/img/icons.gif
+++ /dev/null
Binary files differ
diff --git a/program/js/tiny_mce/themes/advanced/img/iframe.gif b/program/js/tiny_mce/themes/advanced/img/iframe.gif
deleted file mode 100644
index 410c7ad08..000000000
--- a/program/js/tiny_mce/themes/advanced/img/iframe.gif
+++ /dev/null
Binary files differ
diff --git a/program/js/tiny_mce/themes/advanced/img/pagebreak.gif b/program/js/tiny_mce/themes/advanced/img/pagebreak.gif
deleted file mode 100644
index acdf4085f..000000000
--- a/program/js/tiny_mce/themes/advanced/img/pagebreak.gif
+++ /dev/null
Binary files differ
diff --git a/program/js/tiny_mce/themes/advanced/img/quicktime.gif b/program/js/tiny_mce/themes/advanced/img/quicktime.gif
deleted file mode 100644
index 8f10e7aa6..000000000
--- a/program/js/tiny_mce/themes/advanced/img/quicktime.gif
+++ /dev/null
Binary files differ
diff --git a/program/js/tiny_mce/themes/advanced/img/realmedia.gif b/program/js/tiny_mce/themes/advanced/img/realmedia.gif
deleted file mode 100644
index fdfe0b9ac..000000000
--- a/program/js/tiny_mce/themes/advanced/img/realmedia.gif
+++ /dev/null
Binary files differ
diff --git a/program/js/tiny_mce/themes/advanced/img/shockwave.gif b/program/js/tiny_mce/themes/advanced/img/shockwave.gif
deleted file mode 100644
index 9314d0447..000000000
--- a/program/js/tiny_mce/themes/advanced/img/shockwave.gif
+++ /dev/null
Binary files differ
diff --git a/program/js/tiny_mce/themes/advanced/img/video.gif b/program/js/tiny_mce/themes/advanced/img/video.gif
deleted file mode 100644
index 357010407..000000000
--- a/program/js/tiny_mce/themes/advanced/img/video.gif
+++ /dev/null
Binary files differ
diff --git a/program/js/tiny_mce/themes/advanced/img/windowsmedia.gif b/program/js/tiny_mce/themes/advanced/img/windowsmedia.gif
deleted file mode 100644
index ab50f2d88..000000000
--- a/program/js/tiny_mce/themes/advanced/img/windowsmedia.gif
+++ /dev/null
Binary files differ
diff --git a/program/js/tiny_mce/themes/advanced/js/about.js b/program/js/tiny_mce/themes/advanced/js/about.js
deleted file mode 100644
index 5b3584576..000000000
--- a/program/js/tiny_mce/themes/advanced/js/about.js
+++ /dev/null
@@ -1,73 +0,0 @@
-tinyMCEPopup.requireLangPack();
-
-function init() {
- var ed, tcont;
-
- tinyMCEPopup.resizeToInnerSize();
- ed = tinyMCEPopup.editor;
-
- // Give FF some time
- window.setTimeout(insertHelpIFrame, 10);
-
- tcont = document.getElementById('plugintablecontainer');
- document.getElementById('plugins_tab').style.display = 'none';
-
- var html = "";
- html += '<table id="plugintable">';
- html += '<thead>';
- html += '<tr>';
- html += '<td>' + ed.getLang('advanced_dlg.about_plugin') + '</td>';
- html += '<td>' + ed.getLang('advanced_dlg.about_author') + '</td>';
- html += '<td>' + ed.getLang('advanced_dlg.about_version') + '</td>';
- html += '</tr>';
- html += '</thead>';
- html += '<tbody>';
-
- tinymce.each(ed.plugins, function(p, n) {
- var info;
-
- if (!p.getInfo)
- return;
-
- html += '<tr>';
-
- info = p.getInfo();
-
- if (info.infourl != null && info.infourl != '')
- html += '<td width="50%" title="' + n + '"><a href="' + info.infourl + '" target="_blank">' + info.longname + '</a></td>';
- else
- html += '<td width="50%" title="' + n + '">' + info.longname + '</td>';
-
- if (info.authorurl != null && info.authorurl != '')
- html += '<td width="35%"><a href="' + info.authorurl + '" target="_blank">' + info.author + '</a></td>';
- else
- html += '<td width="35%">' + info.author + '</td>';
-
- html += '<td width="15%">' + info.version + '</td>';
- html += '</tr>';
-
- document.getElementById('plugins_tab').style.display = '';
-
- });
-
- html += '</tbody>';
- html += '</table>';
-
- tcont.innerHTML = html;
-
- tinyMCEPopup.dom.get('version').innerHTML = tinymce.majorVersion + "." + tinymce.minorVersion;
- tinyMCEPopup.dom.get('date').innerHTML = tinymce.releaseDate;
-}
-
-function insertHelpIFrame() {
- var html;
-
- if (tinyMCEPopup.getParam('docs_url')) {
- html = '<iframe width="100%" height="300" src="' + tinyMCEPopup.editor.baseURI.toAbsolute(tinyMCEPopup.getParam('docs_url')) + '"></iframe>';
- document.getElementById('iframecontainer').innerHTML = html;
- document.getElementById('help_tab').style.display = 'block';
- document.getElementById('help_tab').setAttribute("aria-hidden", "false");
- }
-}
-
-tinyMCEPopup.onInit.add(init);
diff --git a/program/js/tiny_mce/themes/advanced/js/anchor.js b/program/js/tiny_mce/themes/advanced/js/anchor.js
deleted file mode 100644
index 2909a3a4d..000000000
--- a/program/js/tiny_mce/themes/advanced/js/anchor.js
+++ /dev/null
@@ -1,56 +0,0 @@
-tinyMCEPopup.requireLangPack();
-
-var AnchorDialog = {
- init : function(ed) {
- var action, elm, f = document.forms[0];
-
- this.editor = ed;
- elm = ed.dom.getParent(ed.selection.getNode(), 'A');
- v = ed.dom.getAttrib(elm, 'name') || ed.dom.getAttrib(elm, 'id');
-
- if (v) {
- this.action = 'update';
- f.anchorName.value = v;
- }
-
- f.insert.value = ed.getLang(elm ? 'update' : 'insert');
- },
-
- update : function() {
- var ed = this.editor, elm, name = document.forms[0].anchorName.value, attribName;
-
- if (!name || !/^[a-z][a-z0-9\-\_:\.]*$/i.test(name)) {
- tinyMCEPopup.alert('advanced_dlg.anchor_invalid');
- return;
- }
-
- tinyMCEPopup.restoreSelection();
-
- if (this.action != 'update')
- ed.selection.collapse(1);
-
- var aRule = ed.schema.getElementRule('a');
- if (!aRule || aRule.attributes.name) {
- attribName = 'name';
- } else {
- attribName = 'id';
- }
-
- elm = ed.dom.getParent(ed.selection.getNode(), 'A');
- if (elm) {
- elm.setAttribute(attribName, name);
- elm[attribName] = name;
- ed.undoManager.add();
- } else {
- // create with zero-sized nbsp so that in Webkit where anchor is on last line by itself caret cannot be placed after it
- var attrs = {'class' : 'mceItemAnchor'};
- attrs[attribName] = name;
- ed.execCommand('mceInsertContent', 0, ed.dom.createHTML('a', attrs, '\uFEFF'));
- ed.nodeChanged();
- }
-
- tinyMCEPopup.close();
- }
-};
-
-tinyMCEPopup.onInit.add(AnchorDialog.init, AnchorDialog);
diff --git a/program/js/tiny_mce/themes/advanced/js/charmap.js b/program/js/tiny_mce/themes/advanced/js/charmap.js
deleted file mode 100644
index bb1869558..000000000
--- a/program/js/tiny_mce/themes/advanced/js/charmap.js
+++ /dev/null
@@ -1,363 +0,0 @@
-/**
- * charmap.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-tinyMCEPopup.requireLangPack();
-
-var charmap = [
- ['&nbsp;', '&#160;', true, 'no-break space'],
- ['&amp;', '&#38;', true, 'ampersand'],
- ['&quot;', '&#34;', true, 'quotation mark'],
-// finance
- ['&cent;', '&#162;', true, 'cent sign'],
- ['&euro;', '&#8364;', true, 'euro sign'],
- ['&pound;', '&#163;', true, 'pound sign'],
- ['&yen;', '&#165;', true, 'yen sign'],
-// signs
- ['&copy;', '&#169;', true, 'copyright sign'],
- ['&reg;', '&#174;', true, 'registered sign'],
- ['&trade;', '&#8482;', true, 'trade mark sign'],
- ['&permil;', '&#8240;', true, 'per mille sign'],
- ['&micro;', '&#181;', true, 'micro sign'],
- ['&middot;', '&#183;', true, 'middle dot'],
- ['&bull;', '&#8226;', true, 'bullet'],
- ['&hellip;', '&#8230;', true, 'three dot leader'],
- ['&prime;', '&#8242;', true, 'minutes / feet'],
- ['&Prime;', '&#8243;', true, 'seconds / inches'],
- ['&sect;', '&#167;', true, 'section sign'],
- ['&para;', '&#182;', true, 'paragraph sign'],
- ['&szlig;', '&#223;', true, 'sharp s / ess-zed'],
-// quotations
- ['&lsaquo;', '&#8249;', true, 'single left-pointing angle quotation mark'],
- ['&rsaquo;', '&#8250;', true, 'single right-pointing angle quotation mark'],
- ['&laquo;', '&#171;', true, 'left pointing guillemet'],
- ['&raquo;', '&#187;', true, 'right pointing guillemet'],
- ['&lsquo;', '&#8216;', true, 'left single quotation mark'],
- ['&rsquo;', '&#8217;', true, 'right single quotation mark'],
- ['&ldquo;', '&#8220;', true, 'left double quotation mark'],
- ['&rdquo;', '&#8221;', true, 'right double quotation mark'],
- ['&sbquo;', '&#8218;', true, 'single low-9 quotation mark'],
- ['&bdquo;', '&#8222;', true, 'double low-9 quotation mark'],
- ['&lt;', '&#60;', true, 'less-than sign'],
- ['&gt;', '&#62;', true, 'greater-than sign'],
- ['&le;', '&#8804;', true, 'less-than or equal to'],
- ['&ge;', '&#8805;', true, 'greater-than or equal to'],
- ['&ndash;', '&#8211;', true, 'en dash'],
- ['&mdash;', '&#8212;', true, 'em dash'],
- ['&macr;', '&#175;', true, 'macron'],
- ['&oline;', '&#8254;', true, 'overline'],
- ['&curren;', '&#164;', true, 'currency sign'],
- ['&brvbar;', '&#166;', true, 'broken bar'],
- ['&uml;', '&#168;', true, 'diaeresis'],
- ['&iexcl;', '&#161;', true, 'inverted exclamation mark'],
- ['&iquest;', '&#191;', true, 'turned question mark'],
- ['&circ;', '&#710;', true, 'circumflex accent'],
- ['&tilde;', '&#732;', true, 'small tilde'],
- ['&deg;', '&#176;', true, 'degree sign'],
- ['&minus;', '&#8722;', true, 'minus sign'],
- ['&plusmn;', '&#177;', true, 'plus-minus sign'],
- ['&divide;', '&#247;', true, 'division sign'],
- ['&frasl;', '&#8260;', true, 'fraction slash'],
- ['&times;', '&#215;', true, 'multiplication sign'],
- ['&sup1;', '&#185;', true, 'superscript one'],
- ['&sup2;', '&#178;', true, 'superscript two'],
- ['&sup3;', '&#179;', true, 'superscript three'],
- ['&frac14;', '&#188;', true, 'fraction one quarter'],
- ['&frac12;', '&#189;', true, 'fraction one half'],
- ['&frac34;', '&#190;', true, 'fraction three quarters'],
-// math / logical
- ['&fnof;', '&#402;', true, 'function / florin'],
- ['&int;', '&#8747;', true, 'integral'],
- ['&sum;', '&#8721;', true, 'n-ary sumation'],
- ['&infin;', '&#8734;', true, 'infinity'],
- ['&radic;', '&#8730;', true, 'square root'],
- ['&sim;', '&#8764;', false,'similar to'],
- ['&cong;', '&#8773;', false,'approximately equal to'],
- ['&asymp;', '&#8776;', true, 'almost equal to'],
- ['&ne;', '&#8800;', true, 'not equal to'],
- ['&equiv;', '&#8801;', true, 'identical to'],
- ['&isin;', '&#8712;', false,'element of'],
- ['&notin;', '&#8713;', false,'not an element of'],
- ['&ni;', '&#8715;', false,'contains as member'],
- ['&prod;', '&#8719;', true, 'n-ary product'],
- ['&and;', '&#8743;', false,'logical and'],
- ['&or;', '&#8744;', false,'logical or'],
- ['&not;', '&#172;', true, 'not sign'],
- ['&cap;', '&#8745;', true, 'intersection'],
- ['&cup;', '&#8746;', false,'union'],
- ['&part;', '&#8706;', true, 'partial differential'],
- ['&forall;', '&#8704;', false,'for all'],
- ['&exist;', '&#8707;', false,'there exists'],
- ['&empty;', '&#8709;', false,'diameter'],
- ['&nabla;', '&#8711;', false,'backward difference'],
- ['&lowast;', '&#8727;', false,'asterisk operator'],
- ['&prop;', '&#8733;', false,'proportional to'],
- ['&ang;', '&#8736;', false,'angle'],
-// undefined
- ['&acute;', '&#180;', true, 'acute accent'],
- ['&cedil;', '&#184;', true, 'cedilla'],
- ['&ordf;', '&#170;', true, 'feminine ordinal indicator'],
- ['&ordm;', '&#186;', true, 'masculine ordinal indicator'],
- ['&dagger;', '&#8224;', true, 'dagger'],
- ['&Dagger;', '&#8225;', true, 'double dagger'],
-// alphabetical special chars
- ['&Agrave;', '&#192;', true, 'A - grave'],
- ['&Aacute;', '&#193;', true, 'A - acute'],
- ['&Acirc;', '&#194;', true, 'A - circumflex'],
- ['&Atilde;', '&#195;', true, 'A - tilde'],
- ['&Auml;', '&#196;', true, 'A - diaeresis'],
- ['&Aring;', '&#197;', true, 'A - ring above'],
- ['&AElig;', '&#198;', true, 'ligature AE'],
- ['&Ccedil;', '&#199;', true, 'C - cedilla'],
- ['&Egrave;', '&#200;', true, 'E - grave'],
- ['&Eacute;', '&#201;', true, 'E - acute'],
- ['&Ecirc;', '&#202;', true, 'E - circumflex'],
- ['&Euml;', '&#203;', true, 'E - diaeresis'],
- ['&Igrave;', '&#204;', true, 'I - grave'],
- ['&Iacute;', '&#205;', true, 'I - acute'],
- ['&Icirc;', '&#206;', true, 'I - circumflex'],
- ['&Iuml;', '&#207;', true, 'I - diaeresis'],
- ['&ETH;', '&#208;', true, 'ETH'],
- ['&Ntilde;', '&#209;', true, 'N - tilde'],
- ['&Ograve;', '&#210;', true, 'O - grave'],
- ['&Oacute;', '&#211;', true, 'O - acute'],
- ['&Ocirc;', '&#212;', true, 'O - circumflex'],
- ['&Otilde;', '&#213;', true, 'O - tilde'],
- ['&Ouml;', '&#214;', true, 'O - diaeresis'],
- ['&Oslash;', '&#216;', true, 'O - slash'],
- ['&OElig;', '&#338;', true, 'ligature OE'],
- ['&Scaron;', '&#352;', true, 'S - caron'],
- ['&Ugrave;', '&#217;', true, 'U - grave'],
- ['&Uacute;', '&#218;', true, 'U - acute'],
- ['&Ucirc;', '&#219;', true, 'U - circumflex'],
- ['&Uuml;', '&#220;', true, 'U - diaeresis'],
- ['&Yacute;', '&#221;', true, 'Y - acute'],
- ['&Yuml;', '&#376;', true, 'Y - diaeresis'],
- ['&THORN;', '&#222;', true, 'THORN'],
- ['&agrave;', '&#224;', true, 'a - grave'],
- ['&aacute;', '&#225;', true, 'a - acute'],
- ['&acirc;', '&#226;', true, 'a - circumflex'],
- ['&atilde;', '&#227;', true, 'a - tilde'],
- ['&auml;', '&#228;', true, 'a - diaeresis'],
- ['&aring;', '&#229;', true, 'a - ring above'],
- ['&aelig;', '&#230;', true, 'ligature ae'],
- ['&ccedil;', '&#231;', true, 'c - cedilla'],
- ['&egrave;', '&#232;', true, 'e - grave'],
- ['&eacute;', '&#233;', true, 'e - acute'],
- ['&ecirc;', '&#234;', true, 'e - circumflex'],
- ['&euml;', '&#235;', true, 'e - diaeresis'],
- ['&igrave;', '&#236;', true, 'i - grave'],
- ['&iacute;', '&#237;', true, 'i - acute'],
- ['&icirc;', '&#238;', true, 'i - circumflex'],
- ['&iuml;', '&#239;', true, 'i - diaeresis'],
- ['&eth;', '&#240;', true, 'eth'],
- ['&ntilde;', '&#241;', true, 'n - tilde'],
- ['&ograve;', '&#242;', true, 'o - grave'],
- ['&oacute;', '&#243;', true, 'o - acute'],
- ['&ocirc;', '&#244;', true, 'o - circumflex'],
- ['&otilde;', '&#245;', true, 'o - tilde'],
- ['&ouml;', '&#246;', true, 'o - diaeresis'],
- ['&oslash;', '&#248;', true, 'o slash'],
- ['&oelig;', '&#339;', true, 'ligature oe'],
- ['&scaron;', '&#353;', true, 's - caron'],
- ['&ugrave;', '&#249;', true, 'u - grave'],
- ['&uacute;', '&#250;', true, 'u - acute'],
- ['&ucirc;', '&#251;', true, 'u - circumflex'],
- ['&uuml;', '&#252;', true, 'u - diaeresis'],
- ['&yacute;', '&#253;', true, 'y - acute'],
- ['&thorn;', '&#254;', true, 'thorn'],
- ['&yuml;', '&#255;', true, 'y - diaeresis'],
- ['&Alpha;', '&#913;', true, 'Alpha'],
- ['&Beta;', '&#914;', true, 'Beta'],
- ['&Gamma;', '&#915;', true, 'Gamma'],
- ['&Delta;', '&#916;', true, 'Delta'],
- ['&Epsilon;', '&#917;', true, 'Epsilon'],
- ['&Zeta;', '&#918;', true, 'Zeta'],
- ['&Eta;', '&#919;', true, 'Eta'],
- ['&Theta;', '&#920;', true, 'Theta'],
- ['&Iota;', '&#921;', true, 'Iota'],
- ['&Kappa;', '&#922;', true, 'Kappa'],
- ['&Lambda;', '&#923;', true, 'Lambda'],
- ['&Mu;', '&#924;', true, 'Mu'],
- ['&Nu;', '&#925;', true, 'Nu'],
- ['&Xi;', '&#926;', true, 'Xi'],
- ['&Omicron;', '&#927;', true, 'Omicron'],
- ['&Pi;', '&#928;', true, 'Pi'],
- ['&Rho;', '&#929;', true, 'Rho'],
- ['&Sigma;', '&#931;', true, 'Sigma'],
- ['&Tau;', '&#932;', true, 'Tau'],
- ['&Upsilon;', '&#933;', true, 'Upsilon'],
- ['&Phi;', '&#934;', true, 'Phi'],
- ['&Chi;', '&#935;', true, 'Chi'],
- ['&Psi;', '&#936;', true, 'Psi'],
- ['&Omega;', '&#937;', true, 'Omega'],
- ['&alpha;', '&#945;', true, 'alpha'],
- ['&beta;', '&#946;', true, 'beta'],
- ['&gamma;', '&#947;', true, 'gamma'],
- ['&delta;', '&#948;', true, 'delta'],
- ['&epsilon;', '&#949;', true, 'epsilon'],
- ['&zeta;', '&#950;', true, 'zeta'],
- ['&eta;', '&#951;', true, 'eta'],
- ['&theta;', '&#952;', true, 'theta'],
- ['&iota;', '&#953;', true, 'iota'],
- ['&kappa;', '&#954;', true, 'kappa'],
- ['&lambda;', '&#955;', true, 'lambda'],
- ['&mu;', '&#956;', true, 'mu'],
- ['&nu;', '&#957;', true, 'nu'],
- ['&xi;', '&#958;', true, 'xi'],
- ['&omicron;', '&#959;', true, 'omicron'],
- ['&pi;', '&#960;', true, 'pi'],
- ['&rho;', '&#961;', true, 'rho'],
- ['&sigmaf;', '&#962;', true, 'final sigma'],
- ['&sigma;', '&#963;', true, 'sigma'],
- ['&tau;', '&#964;', true, 'tau'],
- ['&upsilon;', '&#965;', true, 'upsilon'],
- ['&phi;', '&#966;', true, 'phi'],
- ['&chi;', '&#967;', true, 'chi'],
- ['&psi;', '&#968;', true, 'psi'],
- ['&omega;', '&#969;', true, 'omega'],
-// symbols
- ['&alefsym;', '&#8501;', false,'alef symbol'],
- ['&piv;', '&#982;', false,'pi symbol'],
- ['&real;', '&#8476;', false,'real part symbol'],
- ['&thetasym;','&#977;', false,'theta symbol'],
- ['&upsih;', '&#978;', false,'upsilon - hook symbol'],
- ['&weierp;', '&#8472;', false,'Weierstrass p'],
- ['&image;', '&#8465;', false,'imaginary part'],
-// arrows
- ['&larr;', '&#8592;', true, 'leftwards arrow'],
- ['&uarr;', '&#8593;', true, 'upwards arrow'],
- ['&rarr;', '&#8594;', true, 'rightwards arrow'],
- ['&darr;', '&#8595;', true, 'downwards arrow'],
- ['&harr;', '&#8596;', true, 'left right arrow'],
- ['&crarr;', '&#8629;', false,'carriage return'],
- ['&lArr;', '&#8656;', false,'leftwards double arrow'],
- ['&uArr;', '&#8657;', false,'upwards double arrow'],
- ['&rArr;', '&#8658;', false,'rightwards double arrow'],
- ['&dArr;', '&#8659;', false,'downwards double arrow'],
- ['&hArr;', '&#8660;', false,'left right double arrow'],
- ['&there4;', '&#8756;', false,'therefore'],
- ['&sub;', '&#8834;', false,'subset of'],
- ['&sup;', '&#8835;', false,'superset of'],
- ['&nsub;', '&#8836;', false,'not a subset of'],
- ['&sube;', '&#8838;', false,'subset of or equal to'],
- ['&supe;', '&#8839;', false,'superset of or equal to'],
- ['&oplus;', '&#8853;', false,'circled plus'],
- ['&otimes;', '&#8855;', false,'circled times'],
- ['&perp;', '&#8869;', false,'perpendicular'],
- ['&sdot;', '&#8901;', false,'dot operator'],
- ['&lceil;', '&#8968;', false,'left ceiling'],
- ['&rceil;', '&#8969;', false,'right ceiling'],
- ['&lfloor;', '&#8970;', false,'left floor'],
- ['&rfloor;', '&#8971;', false,'right floor'],
- ['&lang;', '&#9001;', false,'left-pointing angle bracket'],
- ['&rang;', '&#9002;', false,'right-pointing angle bracket'],
- ['&loz;', '&#9674;', true, 'lozenge'],
- ['&spades;', '&#9824;', true, 'black spade suit'],
- ['&clubs;', '&#9827;', true, 'black club suit'],
- ['&hearts;', '&#9829;', true, 'black heart suit'],
- ['&diams;', '&#9830;', true, 'black diamond suit'],
- ['&ensp;', '&#8194;', false,'en space'],
- ['&emsp;', '&#8195;', false,'em space'],
- ['&thinsp;', '&#8201;', false,'thin space'],
- ['&zwnj;', '&#8204;', false,'zero width non-joiner'],
- ['&zwj;', '&#8205;', false,'zero width joiner'],
- ['&lrm;', '&#8206;', false,'left-to-right mark'],
- ['&rlm;', '&#8207;', false,'right-to-left mark'],
- ['&shy;', '&#173;', false,'soft hyphen']
-];
-
-tinyMCEPopup.onInit.add(function() {
- tinyMCEPopup.dom.setHTML('charmapView', renderCharMapHTML());
- addKeyboardNavigation();
-});
-
-function addKeyboardNavigation(){
- var tableElm, cells, settings;
-
- cells = tinyMCEPopup.dom.select("a.charmaplink", "charmapgroup");
-
- settings ={
- root: "charmapgroup",
- items: cells
- };
- cells[0].tabindex=0;
- tinyMCEPopup.dom.addClass(cells[0], "mceFocus");
- if (tinymce.isGecko) {
- cells[0].focus();
- } else {
- setTimeout(function(){
- cells[0].focus();
- }, 100);
- }
- tinyMCEPopup.editor.windowManager.createInstance('tinymce.ui.KeyboardNavigation', settings, tinyMCEPopup.dom);
-}
-
-function renderCharMapHTML() {
- var charsPerRow = 20, tdWidth=20, tdHeight=20, i;
- var html = '<div id="charmapgroup" aria-labelledby="charmap_label" tabindex="0" role="listbox">'+
- '<table role="presentation" border="0" cellspacing="1" cellpadding="0" width="' + (tdWidth*charsPerRow) +
- '"><tr height="' + tdHeight + '">';
- var cols=-1;
-
- for (i=0; i<charmap.length; i++) {
- var previewCharFn;
-
- if (charmap[i][2]==true) {
- cols++;
- previewCharFn = 'previewChar(\'' + charmap[i][1].substring(1,charmap[i][1].length) + '\',\'' + charmap[i][0].substring(1,charmap[i][0].length) + '\',\'' + charmap[i][3] + '\');';
- html += ''
- + '<td class="charmap">'
- + '<a class="charmaplink" role="button" onmouseover="'+previewCharFn+'" onfocus="'+previewCharFn+'" 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] + ' '+ tinyMCEPopup.editor.translate("advanced_dlg.charmap_usage")+'">'
- + 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">&nbsp;</td>';
- }
-
- html += '</tr></table></div>';
- html = html.replace(/<tr height="20"><\/tr>/g, '');
-
- 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 = '&amp;' + codeA;
- elmA.innerHTML = '&amp;' + codeB;
- elmN.innerHTML = codeN;
-}
diff --git a/program/js/tiny_mce/themes/advanced/js/color_picker.js b/program/js/tiny_mce/themes/advanced/js/color_picker.js
deleted file mode 100644
index cc891c171..000000000
--- a/program/js/tiny_mce/themes/advanced/js/color_picker.js
+++ /dev/null
@@ -1,345 +0,0 @@
-tinyMCEPopup.requireLangPack();
-
-var detail = 50, strhex = "0123456789abcdef", i, isMouseDown = false, isMouseOver = false;
-
-var colors = [
- "#000000","#000033","#000066","#000099","#0000cc","#0000ff","#330000","#330033",
- "#330066","#330099","#3300cc","#3300ff","#660000","#660033","#660066","#660099",
- "#6600cc","#6600ff","#990000","#990033","#990066","#990099","#9900cc","#9900ff",
- "#cc0000","#cc0033","#cc0066","#cc0099","#cc00cc","#cc00ff","#ff0000","#ff0033",
- "#ff0066","#ff0099","#ff00cc","#ff00ff","#003300","#003333","#003366","#003399",
- "#0033cc","#0033ff","#333300","#333333","#333366","#333399","#3333cc","#3333ff",
- "#663300","#663333","#663366","#663399","#6633cc","#6633ff","#993300","#993333",
- "#993366","#993399","#9933cc","#9933ff","#cc3300","#cc3333","#cc3366","#cc3399",
- "#cc33cc","#cc33ff","#ff3300","#ff3333","#ff3366","#ff3399","#ff33cc","#ff33ff",
- "#006600","#006633","#006666","#006699","#0066cc","#0066ff","#336600","#336633",
- "#336666","#336699","#3366cc","#3366ff","#666600","#666633","#666666","#666699",
- "#6666cc","#6666ff","#996600","#996633","#996666","#996699","#9966cc","#9966ff",
- "#cc6600","#cc6633","#cc6666","#cc6699","#cc66cc","#cc66ff","#ff6600","#ff6633",
- "#ff6666","#ff6699","#ff66cc","#ff66ff","#009900","#009933","#009966","#009999",
- "#0099cc","#0099ff","#339900","#339933","#339966","#339999","#3399cc","#3399ff",
- "#669900","#669933","#669966","#669999","#6699cc","#6699ff","#999900","#999933",
- "#999966","#999999","#9999cc","#9999ff","#cc9900","#cc9933","#cc9966","#cc9999",
- "#cc99cc","#cc99ff","#ff9900","#ff9933","#ff9966","#ff9999","#ff99cc","#ff99ff",
- "#00cc00","#00cc33","#00cc66","#00cc99","#00cccc","#00ccff","#33cc00","#33cc33",
- "#33cc66","#33cc99","#33cccc","#33ccff","#66cc00","#66cc33","#66cc66","#66cc99",
- "#66cccc","#66ccff","#99cc00","#99cc33","#99cc66","#99cc99","#99cccc","#99ccff",
- "#cccc00","#cccc33","#cccc66","#cccc99","#cccccc","#ccccff","#ffcc00","#ffcc33",
- "#ffcc66","#ffcc99","#ffcccc","#ffccff","#00ff00","#00ff33","#00ff66","#00ff99",
- "#00ffcc","#00ffff","#33ff00","#33ff33","#33ff66","#33ff99","#33ffcc","#33ffff",
- "#66ff00","#66ff33","#66ff66","#66ff99","#66ffcc","#66ffff","#99ff00","#99ff33",
- "#99ff66","#99ff99","#99ffcc","#99ffff","#ccff00","#ccff33","#ccff66","#ccff99",
- "#ccffcc","#ccffff","#ffff00","#ffff33","#ffff66","#ffff99","#ffffcc","#ffffff"
-];
-
-var named = {
- '#F0F8FF':'Alice Blue','#FAEBD7':'Antique White','#00FFFF':'Aqua','#7FFFD4':'Aquamarine','#F0FFFF':'Azure','#F5F5DC':'Beige',
- '#FFE4C4':'Bisque','#000000':'Black','#FFEBCD':'Blanched Almond','#0000FF':'Blue','#8A2BE2':'Blue Violet','#A52A2A':'Brown',
- '#DEB887':'Burly Wood','#5F9EA0':'Cadet Blue','#7FFF00':'Chartreuse','#D2691E':'Chocolate','#FF7F50':'Coral','#6495ED':'Cornflower Blue',
- '#FFF8DC':'Cornsilk','#DC143C':'Crimson','#00FFFF':'Cyan','#00008B':'Dark Blue','#008B8B':'Dark Cyan','#B8860B':'Dark Golden Rod',
- '#A9A9A9':'Dark Gray','#A9A9A9':'Dark Grey','#006400':'Dark Green','#BDB76B':'Dark Khaki','#8B008B':'Dark Magenta','#556B2F':'Dark Olive Green',
- '#FF8C00':'Darkorange','#9932CC':'Dark Orchid','#8B0000':'Dark Red','#E9967A':'Dark Salmon','#8FBC8F':'Dark Sea Green','#483D8B':'Dark Slate Blue',
- '#2F4F4F':'Dark Slate Gray','#2F4F4F':'Dark Slate Grey','#00CED1':'Dark Turquoise','#9400D3':'Dark Violet','#FF1493':'Deep Pink','#00BFFF':'Deep Sky Blue',
- '#696969':'Dim Gray','#696969':'Dim Grey','#1E90FF':'Dodger Blue','#B22222':'Fire Brick','#FFFAF0':'Floral White','#228B22':'Forest Green',
- '#FF00FF':'Fuchsia','#DCDCDC':'Gainsboro','#F8F8FF':'Ghost White','#FFD700':'Gold','#DAA520':'Golden Rod','#808080':'Gray','#808080':'Grey',
- '#008000':'Green','#ADFF2F':'Green Yellow','#F0FFF0':'Honey Dew','#FF69B4':'Hot Pink','#CD5C5C':'Indian Red','#4B0082':'Indigo','#FFFFF0':'Ivory',
- '#F0E68C':'Khaki','#E6E6FA':'Lavender','#FFF0F5':'Lavender Blush','#7CFC00':'Lawn Green','#FFFACD':'Lemon Chiffon','#ADD8E6':'Light Blue',
- '#F08080':'Light Coral','#E0FFFF':'Light Cyan','#FAFAD2':'Light Golden Rod Yellow','#D3D3D3':'Light Gray','#D3D3D3':'Light Grey','#90EE90':'Light Green',
- '#FFB6C1':'Light Pink','#FFA07A':'Light Salmon','#20B2AA':'Light Sea Green','#87CEFA':'Light Sky Blue','#778899':'Light Slate Gray','#778899':'Light Slate Grey',
- '#B0C4DE':'Light Steel Blue','#FFFFE0':'Light Yellow','#00FF00':'Lime','#32CD32':'Lime Green','#FAF0E6':'Linen','#FF00FF':'Magenta','#800000':'Maroon',
- '#66CDAA':'Medium Aqua Marine','#0000CD':'Medium Blue','#BA55D3':'Medium Orchid','#9370D8':'Medium Purple','#3CB371':'Medium Sea Green','#7B68EE':'Medium Slate Blue',
- '#00FA9A':'Medium Spring Green','#48D1CC':'Medium Turquoise','#C71585':'Medium Violet Red','#191970':'Midnight Blue','#F5FFFA':'Mint Cream','#FFE4E1':'Misty Rose','#FFE4B5':'Moccasin',
- '#FFDEAD':'Navajo White','#000080':'Navy','#FDF5E6':'Old Lace','#808000':'Olive','#6B8E23':'Olive Drab','#FFA500':'Orange','#FF4500':'Orange Red','#DA70D6':'Orchid',
- '#EEE8AA':'Pale Golden Rod','#98FB98':'Pale Green','#AFEEEE':'Pale Turquoise','#D87093':'Pale Violet Red','#FFEFD5':'Papaya Whip','#FFDAB9':'Peach Puff',
- '#CD853F':'Peru','#FFC0CB':'Pink','#DDA0DD':'Plum','#B0E0E6':'Powder Blue','#800080':'Purple','#FF0000':'Red','#BC8F8F':'Rosy Brown','#4169E1':'Royal Blue',
- '#8B4513':'Saddle Brown','#FA8072':'Salmon','#F4A460':'Sandy Brown','#2E8B57':'Sea Green','#FFF5EE':'Sea Shell','#A0522D':'Sienna','#C0C0C0':'Silver',
- '#87CEEB':'Sky Blue','#6A5ACD':'Slate Blue','#708090':'Slate Gray','#708090':'Slate Grey','#FFFAFA':'Snow','#00FF7F':'Spring Green',
- '#4682B4':'Steel Blue','#D2B48C':'Tan','#008080':'Teal','#D8BFD8':'Thistle','#FF6347':'Tomato','#40E0D0':'Turquoise','#EE82EE':'Violet',
- '#F5DEB3':'Wheat','#FFFFFF':'White','#F5F5F5':'White Smoke','#FFFF00':'Yellow','#9ACD32':'Yellow Green'
-};
-
-var namedLookup = {};
-
-function init() {
- var inputColor = convertRGBToHex(tinyMCEPopup.getWindowArg('input_color')), key, value;
-
- tinyMCEPopup.resizeToInnerSize();
-
- generatePicker();
- generateWebColors();
- generateNamedColors();
-
- if (inputColor) {
- changeFinalColor(inputColor);
-
- col = convertHexToRGB(inputColor);
-
- if (col)
- updateLight(col.r, col.g, col.b);
- }
-
- for (key in named) {
- value = named[key];
- namedLookup[value.replace(/\s+/, '').toLowerCase()] = key.replace(/#/, '').toLowerCase();
- }
-}
-
-function toHexColor(color) {
- var matches, red, green, blue, toInt = parseInt;
-
- function hex(value) {
- value = parseInt(value).toString(16);
-
- return value.length > 1 ? value : '0' + value; // Padd with leading zero
- };
-
- color = tinymce.trim(color);
- color = color.replace(/^[#]/, '').toLowerCase(); // remove leading '#'
- color = namedLookup[color] || color;
-
- matches = /^rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)$/.exec(color);
-
- if (matches) {
- red = toInt(matches[1]);
- green = toInt(matches[2]);
- blue = toInt(matches[3]);
- } else {
- matches = /^([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/.exec(color);
-
- if (matches) {
- red = toInt(matches[1], 16);
- green = toInt(matches[2], 16);
- blue = toInt(matches[3], 16);
- } else {
- matches = /^([0-9a-f])([0-9a-f])([0-9a-f])$/.exec(color);
-
- if (matches) {
- red = toInt(matches[1] + matches[1], 16);
- green = toInt(matches[2] + matches[2], 16);
- blue = toInt(matches[3] + matches[3], 16);
- } else {
- return '';
- }
- }
- }
-
- return '#' + hex(red) + hex(green) + hex(blue);
-}
-
-function insertAction() {
- var color = document.getElementById("color").value, f = tinyMCEPopup.getWindowArg('func');
-
- var hexColor = toHexColor(color);
-
- if (hexColor === '') {
- var text = tinyMCEPopup.editor.getLang('advanced_dlg.invalid_color_value');
- tinyMCEPopup.alert(text + ': ' + color);
- }
- else {
- tinyMCEPopup.restoreSelection();
-
- if (f)
- f(hexColor);
-
- tinyMCEPopup.close();
- }
-}
-
-function showColor(color, name) {
- if (name)
- document.getElementById("colorname").innerHTML = name;
-
- document.getElementById("preview").style.backgroundColor = color;
- document.getElementById("color").value = color.toUpperCase();
-}
-
-function convertRGBToHex(col) {
- var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi");
-
- if (!col)
- return col;
-
- var rgb = col.replace(re, "$1,$2,$3").split(',');
- if (rgb.length == 3) {
- r = parseInt(rgb[0]).toString(16);
- g = parseInt(rgb[1]).toString(16);
- b = parseInt(rgb[2]).toString(16);
-
- r = r.length == 1 ? '0' + r : r;
- g = g.length == 1 ? '0' + g : g;
- b = b.length == 1 ? '0' + b : b;
-
- return "#" + r + g + b;
- }
-
- return col;
-}
-
-function convertHexToRGB(col) {
- if (col.indexOf('#') != -1) {
- col = col.replace(new RegExp('[^0-9A-F]', 'gi'), '');
-
- r = parseInt(col.substring(0, 2), 16);
- g = parseInt(col.substring(2, 4), 16);
- b = parseInt(col.substring(4, 6), 16);
-
- return {r : r, g : g, b : b};
- }
-
- return null;
-}
-
-function generatePicker() {
- var el = document.getElementById('light'), h = '', i;
-
- for (i = 0; i < detail; i++){
- h += '<div id="gs'+i+'" style="background-color:#000000; width:15px; height:3px; border-style:none; border-width:0px;"'
- + ' onclick="changeFinalColor(this.style.backgroundColor)"'
- + ' onmousedown="isMouseDown = true; return false;"'
- + ' onmouseup="isMouseDown = false;"'
- + ' onmousemove="if (isMouseDown && isMouseOver) changeFinalColor(this.style.backgroundColor); return false;"'
- + ' onmouseover="isMouseOver = true;"'
- + ' onmouseout="isMouseOver = false;"'
- + '></div>';
- }
-
- el.innerHTML = h;
-}
-
-function generateWebColors() {
- var el = document.getElementById('webcolors'), h = '', i;
-
- if (el.className == 'generated')
- return;
-
- // TODO: VoiceOver doesn't seem to support legend as a label referenced by labelledby.
- h += '<div role="listbox" aria-labelledby="webcolors_title" tabindex="0"><table role="presentation" border="0" cellspacing="1" cellpadding="0">'
- + '<tr>';
-
- for (i=0; i<colors.length; i++) {
- h += '<td bgcolor="' + colors[i] + '" width="10" height="10">'
- + '<a href="javascript:insertAction();" role="option" tabindex="-1" aria-labelledby="web_colors_' + i + '" onfocus="showColor(\'' + colors[i] + '\');" onmouseover="showColor(\'' + colors[i] + '\');" style="display:block;width:10px;height:10px;overflow:hidden;">';
- if (tinyMCEPopup.editor.forcedHighContrastMode) {
- h += '<canvas class="mceColorSwatch" height="10" width="10" data-color="' + colors[i] + '"></canvas>';
- }
- h += '<span class="mceVoiceLabel" style="display:none;" id="web_colors_' + i + '">' + colors[i].toUpperCase() + '</span>';
- h += '</a></td>';
- if ((i+1) % 18 == 0)
- h += '</tr><tr>';
- }
-
- h += '</table></div>';
-
- el.innerHTML = h;
- el.className = 'generated';
-
- paintCanvas(el);
- enableKeyboardNavigation(el.firstChild);
-}
-
-function paintCanvas(el) {
- tinyMCEPopup.getWin().tinymce.each(tinyMCEPopup.dom.select('canvas.mceColorSwatch', el), function(canvas) {
- var context;
- if (canvas.getContext && (context = canvas.getContext("2d"))) {
- context.fillStyle = canvas.getAttribute('data-color');
- context.fillRect(0, 0, 10, 10);
- }
- });
-}
-function generateNamedColors() {
- var el = document.getElementById('namedcolors'), h = '', n, v, i = 0;
-
- if (el.className == 'generated')
- return;
-
- for (n in named) {
- v = named[n];
- h += '<a href="javascript:insertAction();" role="option" tabindex="-1" aria-labelledby="named_colors_' + i + '" onfocus="showColor(\'' + n + '\',\'' + v + '\');" onmouseover="showColor(\'' + n + '\',\'' + v + '\');" style="background-color: ' + n + '">';
- if (tinyMCEPopup.editor.forcedHighContrastMode) {
- h += '<canvas class="mceColorSwatch" height="10" width="10" data-color="' + colors[i] + '"></canvas>';
- }
- h += '<span class="mceVoiceLabel" style="display:none;" id="named_colors_' + i + '">' + v + '</span>';
- h += '</a>';
- i++;
- }
-
- el.innerHTML = h;
- el.className = 'generated';
-
- paintCanvas(el);
- enableKeyboardNavigation(el);
-}
-
-function enableKeyboardNavigation(el) {
- tinyMCEPopup.editor.windowManager.createInstance('tinymce.ui.KeyboardNavigation', {
- root: el,
- items: tinyMCEPopup.dom.select('a', el)
- }, tinyMCEPopup.dom);
-}
-
-function dechex(n) {
- return strhex.charAt(Math.floor(n / 16)) + strhex.charAt(n % 16);
-}
-
-function computeColor(e) {
- var x, y, partWidth, partDetail, imHeight, r, g, b, coef, i, finalCoef, finalR, finalG, finalB, pos = tinyMCEPopup.dom.getPos(e.target);
-
- x = e.offsetX ? e.offsetX : (e.target ? e.clientX - pos.x : 0);
- y = e.offsetY ? e.offsetY : (e.target ? e.clientY - pos.y : 0);
-
- partWidth = document.getElementById('colors').width / 6;
- partDetail = detail / 2;
- imHeight = document.getElementById('colors').height;
-
- r = (x >= 0)*(x < partWidth)*255 + (x >= partWidth)*(x < 2*partWidth)*(2*255 - x * 255 / partWidth) + (x >= 4*partWidth)*(x < 5*partWidth)*(-4*255 + x * 255 / partWidth) + (x >= 5*partWidth)*(x < 6*partWidth)*255;
- g = (x >= 0)*(x < partWidth)*(x * 255 / partWidth) + (x >= partWidth)*(x < 3*partWidth)*255 + (x >= 3*partWidth)*(x < 4*partWidth)*(4*255 - x * 255 / partWidth);
- b = (x >= 2*partWidth)*(x < 3*partWidth)*(-2*255 + x * 255 / partWidth) + (x >= 3*partWidth)*(x < 5*partWidth)*255 + (x >= 5*partWidth)*(x < 6*partWidth)*(6*255 - x * 255 / partWidth);
-
- coef = (imHeight - y) / imHeight;
- r = 128 + (r - 128) * coef;
- g = 128 + (g - 128) * coef;
- b = 128 + (b - 128) * coef;
-
- changeFinalColor('#' + dechex(r) + dechex(g) + dechex(b));
- updateLight(r, g, b);
-}
-
-function updateLight(r, g, b) {
- var i, partDetail = detail / 2, finalCoef, finalR, finalG, finalB, color;
-
- for (i=0; i<detail; i++) {
- if ((i>=0) && (i<partDetail)) {
- finalCoef = i / partDetail;
- finalR = dechex(255 - (255 - r) * finalCoef);
- finalG = dechex(255 - (255 - g) * finalCoef);
- finalB = dechex(255 - (255 - b) * finalCoef);
- } else {
- finalCoef = 2 - i / partDetail;
- finalR = dechex(r * finalCoef);
- finalG = dechex(g * finalCoef);
- finalB = dechex(b * finalCoef);
- }
-
- color = finalR + finalG + finalB;
-
- setCol('gs' + i, '#'+color);
- }
-}
-
-function changeFinalColor(color) {
- if (color.indexOf('#') == -1)
- color = convertRGBToHex(color);
-
- setCol('preview', color);
- document.getElementById('color').value = color;
-}
-
-function setCol(e, c) {
- try {
- document.getElementById(e).style.backgroundColor = c;
- } catch (ex) {
- // Ignore IE warning
- }
-}
-
-tinyMCEPopup.onInit.add(init);
diff --git a/program/js/tiny_mce/themes/advanced/js/image.js b/program/js/tiny_mce/themes/advanced/js/image.js
deleted file mode 100644
index bb09e75bf..000000000
--- a/program/js/tiny_mce/themes/advanced/js/image.js
+++ /dev/null
@@ -1,253 +0,0 @@
-var ImageDialog = {
- preInit : function() {
- var url;
-
- tinyMCEPopup.requireLangPack();
-
- if (url = tinyMCEPopup.getParam("external_image_list_url"))
- document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');
- },
-
- init : function() {
- var f = document.forms[0], ed = tinyMCEPopup.editor;
-
- // Setup browse button
- document.getElementById('srcbrowsercontainer').innerHTML = getBrowserHTML('srcbrowser','src','image','theme_advanced_image');
- if (isVisible('srcbrowser'))
- document.getElementById('src').style.width = '180px';
-
- e = ed.selection.getNode();
-
- this.fillFileList('image_list', tinyMCEPopup.getParam('external_image_list', 'tinyMCEImageList'));
-
- if (e.nodeName == 'IMG') {
- f.src.value = ed.dom.getAttrib(e, 'src');
- f.alt.value = ed.dom.getAttrib(e, 'alt');
- f.border.value = this.getAttrib(e, 'border');
- f.vspace.value = this.getAttrib(e, 'vspace');
- f.hspace.value = this.getAttrib(e, 'hspace');
- f.width.value = ed.dom.getAttrib(e, 'width');
- f.height.value = ed.dom.getAttrib(e, 'height');
- f.insert.value = ed.getLang('update');
- this.styleVal = ed.dom.getAttrib(e, 'style');
- selectByValue(f, 'image_list', f.src.value);
- selectByValue(f, 'align', this.getAttrib(e, 'align'));
- this.updateStyle();
- }
- },
-
- fillFileList : function(id, l) {
- var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;
-
- l = typeof(l) === 'function' ? l() : window[l];
-
- if (l && l.length > 0) {
- lst.options[lst.options.length] = new Option('', '');
-
- tinymce.each(l, function(o) {
- lst.options[lst.options.length] = new Option(o[0], o[1]);
- });
- } else
- dom.remove(dom.getParent(id, 'tr'));
- },
-
- update : function() {
- var f = document.forms[0], nl = f.elements, ed = tinyMCEPopup.editor, args = {}, el;
-
- tinyMCEPopup.restoreSelection();
-
- if (f.src.value === '') {
- if (ed.selection.getNode().nodeName == 'IMG') {
- ed.dom.remove(ed.selection.getNode());
- ed.execCommand('mceRepaint');
- }
-
- tinyMCEPopup.close();
- return;
- }
-
- if (!ed.settings.inline_styles) {
- args = tinymce.extend(args, {
- vspace : nl.vspace.value,
- hspace : nl.hspace.value,
- border : nl.border.value,
- align : getSelectValue(f, 'align')
- });
- } else
- args.style = this.styleVal;
-
- tinymce.extend(args, {
- src : f.src.value.replace(/ /g, '%20'),
- alt : f.alt.value,
- width : f.width.value,
- height : f.height.value
- });
-
- el = ed.selection.getNode();
-
- if (el && el.nodeName == 'IMG') {
- ed.dom.setAttribs(el, args);
- tinyMCEPopup.editor.execCommand('mceRepaint');
- tinyMCEPopup.editor.focus();
- } else {
- tinymce.each(args, function(value, name) {
- if (value === "") {
- delete args[name];
- }
- });
-
- ed.execCommand('mceInsertContent', false, tinyMCEPopup.editor.dom.createHTML('img', args), {skip_undo : 1});
- ed.undoManager.add();
- }
-
- tinyMCEPopup.close();
- },
-
- updateStyle : function() {
- var dom = tinyMCEPopup.dom, st = {}, v, f = document.forms[0];
-
- if (tinyMCEPopup.editor.settings.inline_styles) {
- tinymce.each(tinyMCEPopup.dom.parseStyle(this.styleVal), function(value, key) {
- st[key] = value;
- });
-
- // Handle align
- v = getSelectValue(f, 'align');
- if (v) {
- if (v == 'left' || v == 'right') {
- st['float'] = v;
- delete st['vertical-align'];
- } else {
- st['vertical-align'] = v;
- delete st['float'];
- }
- } else {
- delete st['float'];
- delete st['vertical-align'];
- }
-
- // Handle border
- v = f.border.value;
- if (v || v == '0') {
- if (v == '0')
- st['border'] = '0';
- else
- st['border'] = v + 'px solid black';
- } else
- delete st['border'];
-
- // Handle hspace
- v = f.hspace.value;
- if (v) {
- delete st['margin'];
- st['margin-left'] = v + 'px';
- st['margin-right'] = v + 'px';
- } else {
- delete st['margin-left'];
- delete st['margin-right'];
- }
-
- // Handle vspace
- v = f.vspace.value;
- if (v) {
- delete st['margin'];
- st['margin-top'] = v + 'px';
- st['margin-bottom'] = v + 'px';
- } else {
- delete st['margin-top'];
- delete st['margin-bottom'];
- }
-
- // Merge
- st = tinyMCEPopup.dom.parseStyle(dom.serializeStyle(st), 'img');
- this.styleVal = dom.serializeStyle(st, 'img');
- }
- },
-
- getAttrib : function(e, at) {
- var ed = tinyMCEPopup.editor, dom = ed.dom, v, v2;
-
- if (ed.settings.inline_styles) {
- switch (at) {
- case 'align':
- if (v = dom.getStyle(e, 'float'))
- return v;
-
- if (v = dom.getStyle(e, 'vertical-align'))
- return v;
-
- break;
-
- case 'hspace':
- v = dom.getStyle(e, 'margin-left')
- v2 = dom.getStyle(e, 'margin-right');
- if (v && v == v2)
- return parseInt(v.replace(/[^0-9]/g, ''));
-
- break;
-
- case 'vspace':
- v = dom.getStyle(e, 'margin-top')
- v2 = dom.getStyle(e, 'margin-bottom');
- if (v && v == v2)
- return parseInt(v.replace(/[^0-9]/g, ''));
-
- break;
-
- case 'border':
- v = 0;
-
- tinymce.each(['top', 'right', 'bottom', 'left'], function(sv) {
- sv = dom.getStyle(e, 'border-' + sv + '-width');
-
- // False or not the same as prev
- if (!sv || (sv != v && v !== 0)) {
- v = 0;
- return false;
- }
-
- if (sv)
- v = sv;
- });
-
- if (v)
- return parseInt(v.replace(/[^0-9]/g, ''));
-
- break;
- }
- }
-
- if (v = dom.getAttrib(e, at))
- return v;
-
- return '';
- },
-
- resetImageData : function() {
- var f = document.forms[0];
-
- f.width.value = f.height.value = "";
- },
-
- updateImageData : function() {
- var f = document.forms[0], t = ImageDialog;
-
- if (f.width.value == "")
- f.width.value = t.preloadImg.width;
-
- if (f.height.value == "")
- f.height.value = t.preloadImg.height;
- },
-
- getImageData : function() {
- var f = document.forms[0];
-
- this.preloadImg = new Image();
- this.preloadImg.onload = this.updateImageData;
- this.preloadImg.onerror = this.resetImageData;
- this.preloadImg.src = tinyMCEPopup.editor.documentBaseURI.toAbsolute(f.src.value);
- }
-};
-
-ImageDialog.preInit();
-tinyMCEPopup.onInit.add(ImageDialog.init, ImageDialog);
diff --git a/program/js/tiny_mce/themes/advanced/js/link.js b/program/js/tiny_mce/themes/advanced/js/link.js
deleted file mode 100644
index 8c1d73c50..000000000
--- a/program/js/tiny_mce/themes/advanced/js/link.js
+++ /dev/null
@@ -1,159 +0,0 @@
-tinyMCEPopup.requireLangPack();
-
-var LinkDialog = {
- preInit : function() {
- var url;
-
- if (url = tinyMCEPopup.getParam("external_link_list_url"))
- document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');
- },
-
- init : function() {
- var f = document.forms[0], ed = tinyMCEPopup.editor;
-
- // Setup browse button
- document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser', 'href', 'file', 'theme_advanced_link');
- if (isVisible('hrefbrowser'))
- document.getElementById('href').style.width = '180px';
-
- this.fillClassList('class_list');
- this.fillFileList('link_list', 'tinyMCELinkList');
- this.fillTargetList('target_list');
-
- if (e = ed.dom.getParent(ed.selection.getNode(), 'A')) {
- f.href.value = ed.dom.getAttrib(e, 'href');
- f.linktitle.value = ed.dom.getAttrib(e, 'title');
- f.insert.value = ed.getLang('update');
- selectByValue(f, 'link_list', f.href.value);
- selectByValue(f, 'target_list', ed.dom.getAttrib(e, 'target'));
- selectByValue(f, 'class_list', ed.dom.getAttrib(e, 'class'));
- }
- },
-
- update : function() {
- var f = document.forms[0], ed = tinyMCEPopup.editor, e, b, href = f.href.value.replace(/ /g, '%20');
-
- tinyMCEPopup.restoreSelection();
- e = ed.dom.getParent(ed.selection.getNode(), 'A');
-
- // Remove element if there is no href
- if (!f.href.value) {
- if (e) {
- b = ed.selection.getBookmark();
- ed.dom.remove(e, 1);
- ed.selection.moveToBookmark(b);
- tinyMCEPopup.execCommand("mceEndUndoLevel");
- tinyMCEPopup.close();
- return;
- }
- }
-
- // Create new anchor elements
- if (e == null) {
- ed.getDoc().execCommand("unlink", false, null);
- tinyMCEPopup.execCommand("mceInsertLink", false, "#mce_temp_url#", {skip_undo : 1});
-
- tinymce.each(ed.dom.select("a"), function(n) {
- if (ed.dom.getAttrib(n, 'href') == '#mce_temp_url#') {
- e = n;
-
- ed.dom.setAttribs(e, {
- href : href,
- title : f.linktitle.value,
- target : f.target_list ? getSelectValue(f, "target_list") : null,
- 'class' : f.class_list ? getSelectValue(f, "class_list") : null
- });
- }
- });
- } else {
- ed.dom.setAttribs(e, {
- href : href,
- title : f.linktitle.value
- });
-
- if (f.target_list) {
- ed.dom.setAttrib(e, 'target', getSelectValue(f, "target_list"));
- }
-
- if (f.class_list) {
- ed.dom.setAttrib(e, 'class', getSelectValue(f, "class_list"));
- }
- }
-
- // Don't move caret if selection was image
- if (e.childNodes.length != 1 || e.firstChild.nodeName != 'IMG') {
- ed.focus();
- ed.selection.select(e);
- ed.selection.collapse(0);
- tinyMCEPopup.storeSelection();
- }
-
- tinyMCEPopup.execCommand("mceEndUndoLevel");
- tinyMCEPopup.close();
- },
-
- checkPrefix : function(n) {
- if (n.value && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCEPopup.getLang('advanced_dlg.link_is_email')))
- n.value = 'mailto:' + n.value;
-
- if (/^\s*www\./i.test(n.value) && confirm(tinyMCEPopup.getLang('advanced_dlg.link_is_external')))
- n.value = 'http://' + n.value;
- },
-
- fillFileList : function(id, l) {
- var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;
-
- l = window[l];
-
- if (l && l.length > 0) {
- lst.options[lst.options.length] = new Option('', '');
-
- tinymce.each(l, function(o) {
- lst.options[lst.options.length] = new Option(o[0], o[1]);
- });
- } else
- dom.remove(dom.getParent(id, 'tr'));
- },
-
- fillClassList : function(id) {
- var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;
-
- if (v = tinyMCEPopup.getParam('theme_advanced_styles')) {
- cl = [];
-
- tinymce.each(v.split(';'), function(v) {
- var p = v.split('=');
-
- cl.push({'title' : p[0], 'class' : p[1]});
- });
- } else
- cl = tinyMCEPopup.editor.dom.getClasses();
-
- if (cl.length > 0) {
- lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), '');
-
- tinymce.each(cl, function(o) {
- lst.options[lst.options.length] = new Option(o.title || o['class'], o['class']);
- });
- } else
- dom.remove(dom.getParent(id, 'tr'));
- },
-
- fillTargetList : function(id) {
- var dom = tinyMCEPopup.dom, lst = dom.get(id), v;
-
- lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), '');
- lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('advanced_dlg.link_target_same'), '_self');
- lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('advanced_dlg.link_target_blank'), '_blank');
-
- if (v = tinyMCEPopup.getParam('theme_advanced_link_targets')) {
- tinymce.each(v.split(','), function(v) {
- v = v.split('=');
- lst.options[lst.options.length] = new Option(v[0], v[1]);
- });
- }
- }
-};
-
-LinkDialog.preInit();
-tinyMCEPopup.onInit.add(LinkDialog.init, LinkDialog);
diff --git a/program/js/tiny_mce/themes/advanced/js/source_editor.js b/program/js/tiny_mce/themes/advanced/js/source_editor.js
deleted file mode 100644
index dd5e366fa..000000000
--- a/program/js/tiny_mce/themes/advanced/js/source_editor.js
+++ /dev/null
@@ -1,78 +0,0 @@
-tinyMCEPopup.requireLangPack();
-tinyMCEPopup.onInit.add(onLoadInit);
-
-function saveContent() {
- tinyMCEPopup.editor.setContent(document.getElementById('htmlSource').value, {source_view : true});
- tinyMCEPopup.close();
-}
-
-function onLoadInit() {
- tinyMCEPopup.resizeToInnerSize();
-
- // Remove Gecko spellchecking
- if (tinymce.isGecko)
- document.body.spellcheck = tinyMCEPopup.editor.getParam("gecko_spellcheck");
-
- document.getElementById('htmlSource').value = tinyMCEPopup.editor.getContent({source_view : true});
-
- if (tinyMCEPopup.editor.getParam("theme_advanced_source_editor_wrap", true)) {
- turnWrapOn();
- document.getElementById('wraped').checked = true;
- }
-
- resizeInputs();
-}
-
-function setWrap(val) {
- var v, n, s = document.getElementById('htmlSource');
-
- s.wrap = val;
-
- if (!tinymce.isIE) {
- v = s.value;
- n = s.cloneNode(false);
- n.setAttribute("wrap", val);
- s.parentNode.replaceChild(n, s);
- n.value = v;
- }
-}
-
-function setWhiteSpaceCss(value) {
- var el = document.getElementById('htmlSource');
- tinymce.DOM.setStyle(el, 'white-space', value);
-}
-
-function turnWrapOff() {
- if (tinymce.isWebKit) {
- setWhiteSpaceCss('pre');
- } else {
- setWrap('off');
- }
-}
-
-function turnWrapOn() {
- if (tinymce.isWebKit) {
- setWhiteSpaceCss('pre-wrap');
- } else {
- setWrap('soft');
- }
-}
-
-function toggleWordWrap(elm) {
- if (elm.checked) {
- turnWrapOn();
- } else {
- turnWrapOff();
- }
-}
-
-function resizeInputs() {
- var vp = tinyMCEPopup.dom.getViewPort(window), el;
-
- el = document.getElementById('htmlSource');
-
- if (el) {
- el.style.width = (vp.w - 20) + 'px';
- el.style.height = (vp.h - 65) + 'px';
- }
-}
diff --git a/program/js/tiny_mce/themes/advanced/langs/ar.js b/program/js/tiny_mce/themes/advanced/langs/ar.js
deleted file mode 100644
index 9bdeef027..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/ar.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ar.advanced',{"underline_desc":"\u062a\u062d\u062a\u0647 \u062e\u0637 (Ctrl U)","italic_desc":"\u0645\u0627\u0626\u0644 (Ctrl+I)","bold_desc":"\u0639\u0631\u064a\u0636 (Ctrl+B)",dd:"\u0627\u0644\u0648\u0635\u0641",dt:"\u062a\u0639\u0631\u064a\u0641 \u0645\u0635\u0637\u0644\u062d",samp:"Code sample",code:"\u0642\u0627\u0646\u0648\u0646",blockquote:"\u0639\u0644\u0627\u0645\u0629 \u0627\u0642\u062a\u0628\u0627\u0633 \u0641\u0642\u0631\u0629",h6:"\u0627\u0644\u0639\u0646\u0648\u0627\u0646 6",h5:"\u0627\u0644\u0639\u0646\u0648\u0627\u0646 5",h4:"\u0627\u0644\u0639\u0646\u0648\u0627\u0646 4",h3:"\u0627\u0644\u0639\u0646\u0648\u0627\u0646 3",h2:"\u0627\u0644\u0639\u0646\u0648\u0627\u0646 2",h1:"\u0627\u0644\u0639\u0646\u0648\u0627\u0646 1",pre:"\u0645\u0647\u064a\u0623 \u0645\u0633\u0628\u0642",address:"\u0627\u0644\u0639\u0646\u0648\u0627\u0646",div:"\u0627\u0644\u062f\u0631\u062c\u0629",paragraph:"\u0627\u0644\u0646\u0635",block:"\u0627\u0644\u0647\u064a\u0626\u0647",fontdefault:"\u0639\u0627\u0626\u0644\u0647 \u0627\u0644\u062e\u0637","font_size":"\u062d\u062c\u0645 \u0627\u0644\u062e\u0637","style_select":"\u0627\u0644\u0633\u0645\u0627\u062a","more_colors":"\u0627\u0644\u0645\u0632\u064a\u062f \u0645\u0646 \u0627\u0644\u0623\u0644\u0648\u0627\u0646","toolbar_focus":"\u0644\u0644\u062a\u062d\u0631\u0643 \u0627\u0644\u0633\u0631\u064a\u0639 \u0627\u0636\u063a\u0637 \u0639\u0644\u0649 \u0644\u0648\u062d\u0629 \u0627\u0644\u0645\u0641\u0627\u062a\u064a\u062d Alt Q \u0644\u0623\u0632\u0631\u0627\u0631 \u0627\u0644\u0623\u062f\u0648\u0627\u062a\u060c Alt-Z \u0644\u0644\u0645\u062d\u0631\u0631 \u060c Alt-X \u0644\u0645\u0648\u0642\u0639 \u0627\u0644\u0639\u0646\u0635\u0631",newdocument:"\u0647\u0644 \u0623\u0646\u062a \u0645\u062a\u0623\u0643\u062f \u0623\u0646\u0643 \u062a\u0631\u064a\u062f \u0645\u0633\u062d \u0643\u0627\u0641\u0629 \u0645\u062d\u062a\u0648\u064a\u0627\u062a\u061f",path:"\u0645\u0633\u0627\u0631","clipboard_msg":"\u0646\u0633\u062e/\u0642\u0635/\u0644\u0635\u0642 \u063a\u064a\u0631 \u0645\u062a\u0648\u0627\u0641\u0631 \u0641\u064a \u0641\u064a\u0631 \u0641\u0648\u0643\u0633 \u062d\u0627\u0644\u064a\u0627 \u0647\u0644 \u062a\u0631\u064a\u062f \u0627\u0646 \u062a\u0639\u0631\u0641 \u0627\u0644\u0645\u0632\u064a\u062f \u0645\u0646 \u0627\u0644\u0645\u0639\u0644\u0648\u0645\u0627\u062a\u061f","blockquote_desc":"\u0639\u0644\u0627\u0645\u0629 \u0627\u0642\u062a\u0628\u0627\u0633 \u0641\u0642\u0631\u0629","help_desc":"\u0645\u0633\u0627\u0639\u062f\u0647","newdocument_desc":"\u0645\u0633\u062a\u0646\u062f \u062c\u062f\u064a\u062f","image_props_desc":"\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u0635\u0648\u0631\u0629","paste_desc":"\u0644\u0635\u0642","copy_desc":"\u0646\u0633\u062e","cut_desc":"\u0642\u0635","anchor_desc":"\u0625\u062f\u0631\u0627\u062c / \u062a\u062d\u0631\u064a\u0631 \u0645\u0631\u0633\u0627\u0629","visualaid_desc":"\u0627\u0644\u0645\u0628\u0627\u062f\u0626 \u0627\u0644\u062a\u0648\u062c\u064a\u0647\u064a\u0629 \u062a\u0628\u062f\u064a\u0644 / \u0639\u0646\u0627\u0635\u0631 \u063a\u064a\u0631 \u0645\u0631\u0626\u064a\u0629","charmap_desc":"\u0627\u062f\u062e\u0627\u0644 \u0631\u0645\u0632 \u062c\u062f\u064a\u062f","backcolor_desc":"\u0627\u062e\u062a\u0631 \u0644\u0648\u0646 \u0627\u0644\u062e\u0644\u0641\u064a\u0647","forecolor_desc":"\u0627\u062e\u062a\u0631 \u0644\u0648\u0646 \u0627\u0644\u0646\u0635","custom1_desc":"\u0627\u062f\u062e\u0644 \u0627\u0644\u0648\u0635\u0641 \u0647\u0646","removeformat_desc":"\u0627\u0632\u0627\u0644\u0647 \u0627\u0644\u062a\u0646\u0633\u064a\u0642","hr_desc":"\u0627\u062f\u0631\u0627\u062c \u062e\u0637 \u0627\u0641\u0642\u0649","sup_desc":"\u0645\u0631\u062a\u0641\u0639","sub_desc":"\u0645\u0646\u062e\u0641\u0636","code_desc":"\u062a\u0639\u062f\u064a\u0644 \u0634\u0641\u0631\u0647 \u0627\u0644 \u0623\u062a\u0634 \u062a\u064a \u0623\u0645 \u0623\u0644","cleanup_desc":"\u062a\u0646\u0638\u064a\u0641 \u0627\u0644\u0643\u0648\u062f","image_desc":"\u0627\u0636\u0627\u0641\u0647 / \u062d\u0630\u0641 \u0635\u0648\u0631\u0647","unlink_desc":"\u062d\u0630\u0641 \u0627\u0644\u0631\u0627\u0628\u0637","link_desc":"\u0627\u0636\u0627\u0641\u0647 / \u062a\u0639\u062f\u064a\u0644 \u0631\u0627\u0628\u0637","redo_desc":"\u0627\u0644\u0625\u0639\u0627\u062f\u0629 (\u0627\u0644\u0633\u064a\u0637\u0631\u0629 + \u0635)","undo_desc":"\u062a\u0631\u0627\u062c\u0639 (\u0627\u0644\u0633\u064a\u0637\u0631\u0629 + \u0649)","indent_desc":"\u0627\u0644\u0645\u0633\u0627\u0641\u0629 \u0627\u0644\u0628\u0627\u062f\u0626\u0629","outdent_desc":"\u0625\u0646\u0642\u0627\u0635 \u0627\u0644\u0645\u0633\u0627\u0641\u0629 \u0627\u0644\u0628\u0627\u062f\u0626\u0629 \u0642\u0628\u0644","numlist_desc":"\u0642\u0627\u0626\u0645\u0629 \u0645\u0631\u062a\u0628\u0629","bullist_desc":"\u0642\u0627\u0626\u0645\u0629 \u063a\u064a\u0631 \u0645\u0631\u062a\u0628\u0629","justifyfull_desc":"\u0645\u062d\u0627\u0630\u0627\u0647 \u0643\u0644\u064a\u0647","justifyright_desc":"\u062a\u0648\u0633\u064a\u0637 \u064a\u0645\u064a\u0646","justifycenter_desc":"\u062a\u0648\u0633\u064a\u0637 \u0648\u0633\u0637","justifyleft_desc":"\u062a\u0648\u0633\u064a\u0637 \u064a\u0633\u0627\u0631","striketrough_desc":"\u062a\u0648\u0633\u064a\u0637 \u062e\u0637","help_shortcut":"\u0627\u0636\u063a\u0637 ALT-F10 \u0644\u0634\u0631\u064a\u0637 \u0627\u0644\u0627\u062f\u0648\u0627\u062a. \u0627\u0636\u063a\u0637 ALT-0 \u0644\u0644\u0645\u0633\u0627\u0639\u062f\u0647","rich_text_area":"\u0645\u0646\u0637\u0642\u0629 \u0627\u0644\u062a\u0639\u062f\u064a\u0644\u0627\u062a","shortcuts_desc":"Accessability Help",toolbar:"\u0634\u0631\u064a\u0637 \u0627\u0644\u0623\u062f\u0648\u0627\u062a","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/ar_dlg.js b/program/js/tiny_mce/themes/advanced/langs/ar_dlg.js
deleted file mode 100644
index 6cfc8ad59..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/ar_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ar.advanced_dlg',{"link_list":"\u0642\u0627\u0626\u0645\u0647 \u0627\u0644\u0648\u0635\u0644\u0627\u062a","link_is_external":"\u0627\u0644\u0631\u0627\u0628\u0637 \u0627\u0644\u0630\u064a \u0623\u062f\u062e\u0644\u062a\u0647 \u064a\u0628\u062f\u0648 \u0631\u0627\u0628\u0637 \u062e\u0627\u0631\u062c\u064a \u060c \u0647\u0644 \u062a\u0631\u064a\u062f \u0625\u0636\u0627\u0641\u0629 \u0628\u0627\u062f\u0626\u0629 http:// \u0627\u0644\u0645\u0637\u0644\u0648\u0628\u0629\u061f","link_is_email":"\u0627\u0644\u0631\u0627\u0628\u0637 \u0627\u0644\u0630\u064a \u0623\u062f\u062e\u0644\u062a\u0647 \u064a\u0628\u062f\u0648 \u0623\u0646 \u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a \u060c \u0647\u0644 \u062a\u0631\u064a\u062f \u0625\u0636\u0627\u0641\u0629 \u0645\u064a\u0644\u062a\u0648 \u0627\u0644\u0645\u0637\u0644\u0648\u0628\u0629 :\u061f \u0628\u0627\u062f\u0626\u0629","link_titlefield":"\u0627\u0644\u0639\u0646\u0648\u0627\u0646","link_target_blank":"\u0641\u062a\u062d \u0627\u0644\u0631\u0627\u0628\u0637 \u0641\u0649 \u0646\u0627\u0641\u0630\u0647 \u062c\u062f\u064a\u062f\u0647","link_target_same":"\u0641\u062a\u062d \u0627\u0644\u0631\u0627\u0628\u0637 \u0641\u0649 \u0646\u0641\u0633 \u0627\u0644\u0646\u0627\u0641\u0630\u0647","link_target":"\u0627\u0644\u0647\u062f\u0641","link_url":"\u0639\u0646\u0648\u0627\u0646 URL \u0644\u0644\u0648\u0635\u0644\u0647","link_title":"\u0627\u0636\u0641/\u0639\u062f\u0644 \u0648\u0635\u0644\u0647","image_align_right":"\u064a\u0645\u064a\u0646","image_align_left":"\u064a\u0633\u0627\u0631","image_align_textbottom":"\u0627\u0633\u0641\u0644 \u0627\u0644\u0646\u0635","image_align_texttop":"\u0627\u0644\u0646\u0635 \u0627\u0644\u0623\u0639\u0644\u0649","image_align_bottom":"\u0627\u0644\u0642\u0627\u0639","image_align_middle":"\u0627\u0644\u0623\u0648\u0633\u0637","image_align_top":"\u0627\u0644\u0623\u0639\u0644\u0649","image_align_baseline":"\u0627\u0644\u0623\u0633\u0627\u0633","image_align":"\u0645\u062d\u0627\u0630\u0627\u0629","image_hspace":"\u0627\u0644\u0645\u0633\u0627\u0641\u0647 \u0627\u0644\u0627\u0641\u0642\u064a\u0647","image_vspace":"\u0627\u0644\u0645\u0633\u0627\u0641\u0647 \u0627\u0644\u0639\u0645\u0648\u062f\u064a\u0647","image_dimensions":"\u0627\u0644\u0623\u0628\u0639\u0627\u062f","image_alt":"\u0648\u0635\u0641 \u0627\u0644\u0635\u0648\u0631\u0647","image_list":"\u0642\u0627\u0626\u0645\u0647 \u0627\u0644\u0635\u0648\u0631","image_border":"\u0627\u0644\u062d\u062f\u0648\u062f","image_src":"\u0631\u0627\u0628\u0637 \u0627\u0644\u0635\u0648\u0631\u0647","image_title":"\u0627\u0636\u0641/\u0639\u062f\u0644 \u0635\u0648\u0631\u0629","charmap_title":"\u0627\u062e\u062a\u064a\u0627\u0631 \u062d\u0631\u0641 \u0645\u062e\u0635\u0635","colorpicker_name":"\u0627\u0633\u0645:","colorpicker_color":"\u0627\u0644\u0644\u0648\u0646 :","colorpicker_named_title":"\u0627\u0644\u0623\u0644\u0648\u0627\u0646 \u0627\u0644\u0645\u0633\u0645\u0627\u0629","colorpicker_named_tab":"\u0627\u0644\u0645\u0633\u0645\u0627\u0629","colorpicker_palette_title":"\u0644\u0648\u062d \u0627\u0644\u0623\u0644\u0648\u0627\u0646","colorpicker_palette_tab":"\u0644\u0648\u062d","colorpicker_picker_title":"\u0643\u0627\u0634\u0641 \u0627\u0644\u0644\u0648\u0646","colorpicker_picker_tab":"\u0627\u0644\u0643\u0627\u0634\u0641","colorpicker_title":"\u0627\u062e\u062a\u0631 \u0627\u0644\u0644\u0648\u0646","code_wordwrap":"\u0627\u0644\u062a\u0641\u0627\u0641 \u0627\u0644\u0646\u0635","code_title":"\u062a\u0639\u062f\u064a\u0644 \u0627 \u0644\u0634\u064a\u0641\u0631\u0647 \u0627\u0644\u0628\u0631\u0645\u062c\u064a\u0647","anchor_name":"\u0627\u0633\u0645 \u0627\u0644\u0645\u0631\u0633\u0627\u0647","anchor_title":"\u0625\u062f\u0631\u0627\u062c / \u062a\u062d\u0631\u064a\u0631 \u0645\u0631\u0633\u0627\u0629","about_loaded":"\u0627\u0644\u0627\u0636\u0627\u0641\u0627\u062a \u0627\u0644\u0645\u062d\u0645\u0644\u0647","about_version":"\u0627\u0644\u0627\u0635\u062f\u0627\u0631","about_author":"\u0627\u0644\u0643\u0627\u062a\u0628","about_plugin":"\u0627\u0644\u0645\u0648\u0642\u0639","about_plugins":"\u0627\u0644\u0625\u0636\u0627\u0641\u0627\u062a","about_license":"\u0627\u0644\u062a\u0631\u062e\u064a\u0635","about_help":"\u0645\u0633\u0627\u0639\u062f\u0647","about_general":"\u0639\u0646","about_title":"\u0639\u0646 \u0627\u0644\u0645\u062d\u0631\u0631","charmap_usage":"\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0627\u0644\u0623\u0633\u0647\u0645 \u0627\u0644\u0623\u064a\u0645\u0646 \u0648\u0627\u0644\u0623\u064a\u0633\u0631 \u0644\u0644\u062a\u0646\u0642\u0644.","anchor_invalid":"\u0627\u0644\u0631\u062c\u0627\u0621 \u062a\u062d\u062f\u064a\u062f \u0625\u0633\u0645 \u064a\u0635\u0644\u062d \u0644\u0644\u0645\u0631\u0633\u0627\u0647","accessibility_help":"\u062a\u0639\u0644\u064a\u0645\u0627\u062a \u0627\u0644\u0648\u0635\u0648\u0644","accessibility_usage_title":"\u0627\u0644\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0627\u0644\u0639\u0627\u0645","invalid_color_value":"\u0642\u064a\u0645\u0647 \u062e\u0637\u0623 \u0644\u0644\u0648\u0646"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/az.js b/program/js/tiny_mce/themes/advanced/langs/az.js
deleted file mode 100644
index 1edbec24d..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/az.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('az.advanced',{"underline_desc":"Altdan x\u0259tt (Ctrl+U)","italic_desc":"Kursiv (Ctrl+I)","bold_desc":"Yar\u0131qal\u0131n (Ctrl+B)",dd:"Terminin m\u00fc\u0259yy\u0259n edilm\u0259si",dt:"M\u00fc\u0259yy\u0259n edil\u0259n termin",samp:"Kod n\u00fcmun\u0259si",code:"Kod",blockquote:"Sitat bloku",h6:"Ba\u015fl\u0131q 6",h5:"Ba\u015fl\u0131q 5",h4:"Ba\u015fl\u0131q 4",h3:"Ba\u015fl\u0131q 3",h2:"Ba\u015fl\u0131q 2",h1:"Ba\u015fl\u0131q 1",pre:"Formatlanm\u0131\u015f m\u0259tn",address:"\u00dcnvan",div:"B\u00f6lm\u0259",paragraph:"Abzas",block:"Format",fontdefault:"\u015erift","font_size":"\u015erift \u00f6l\u00e7\u00fc\u015f\u00fc","style_select":"Still\u0259r","image_delta_width":"65","more_colors":"Daha \u00e7ox r\u0259ng","toolbar_focus":"Alt+Q - al\u0259t d\u00fcym\u0259l\u0259rin\u0259 ke\u00e7, Alt-Z - redaktoruna ke\u00e7, Alt-X - elementl\u0259r yoluna ke\u00e7",newdocument:"\u0130\u00e7ind\u0259kil\u0259ri tam t\u0259mizl\u0259m\u0259kd\u0259 \u0259minsiniz?",path:"Yol","clipboard_msg":"Kopyalama/\u018flav\u0259 et Mozilla v\u0259 Firefox-da i\u015fl\u0259mir.\nN\u0259 ba\u015f verdiyi haqda daha \u0259trafl\u0131 \u00f6yr\u0259nm\u0259k ist\u0259yirsiniz?","blockquote_desc":"Sitat bloku","help_desc":"K\u00f6m\u0259k","newdocument_desc":"Yeni s\u0259n\u0259d","image_props_desc":"\u015e\u0259kil x\u00fcsusiyy\u0259ti","paste_desc":"\u018flav\u0259 et","copy_desc":"Kopyala","cut_desc":"K\u0259s","anchor_desc":"L\u00f6vb\u0259r \u0259lav\u0259/redakt\u0259 et","visualaid_desc":"G\u00f6nd\u0259ril\u0259n/g\u00f6r\u00fcnm\u0259z elementl\u0259ri yand\u0131r/s\u00f6nd\u00fcr","charmap_desc":"X\u00fcsusi simvol \u0259lav\u0259 et","backcolor_desc":"Fonun r\u0259ngini se\u00e7","forecolor_desc":"M\u0259tnin r\u0259ngini se\u00e7","custom1_desc":"\u00d6z t\u0259svirinizi daxil edin","removeformat_desc":"Formatlaman\u0131 l\u0259\u011fv et","hr_desc":"\u00dcf\u00fcqi x\u0259tt \u0259lav\u0259 et","sup_desc":"Yuxar\u0131 indeks","sub_desc":"A\u015fa\u011f\u0131 indeks","code_desc":"HTML-m\u0259nb\u0259ni redakt\u0259 et","cleanup_desc":"\u018fyri kodu t\u0259mizl\u0259","image_desc":"\u018flav\u0259 et/\u015f\u0259kili redakt\u0259 et","unlink_desc":"Ke\u00e7idi sil","link_desc":"\u018flav\u0259 et/ke\u00e7idi redakt\u0259 et","redo_desc":"T\u0259krarla (Ctrl+Y)","undo_desc":"L\u0259\u011fv et (Ctrl+Z)","indent_desc":"Bo\u015f yeri b\u00f6y\u00fct","outdent_desc":"Bo\u015f yeri ki\u00e7ilt","numlist_desc":"N\u00f6mr\u0259l\u0259nmi\u015f siyah\u0131","bullist_desc":"Qeyd edilmi\u015f siyah\u0131","justifyfull_desc":"Enin\u0259 d\u00fczl\u0259ndir","justifyright_desc":"Sa\u011fdan d\u00fczl\u0259ndir","justifycenter_desc":"M\u0259rk\u0259z\u0259 d\u00fczl\u0259ndir","justifyleft_desc":"Soldan d\u00fczl\u0259ndir","striketrough_desc":"Qaralanm\u0131\u015f","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","help_shortcut":"Press ALT-F10 for toolbar. Press ALT-0 for help","rich_text_area":"Rich Text Area","shortcuts_desc":"Accessability Help",toolbar:"Toolbar"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/az_dlg.js b/program/js/tiny_mce/themes/advanced/langs/az_dlg.js
deleted file mode 100644
index de9a2f46a..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/az_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('az.advanced_dlg',{"link_list":"Ke\u00e7idl\u0259r siyah\u0131s\u0131","link_is_external":"Daxil edil\u0259n \u00fcnvan xarici ke\u00e7id\u0259 b\u0259nz\u0259yir. http:// prefiksini \u0259lav\u0259 etm\u0259k ist\u0259yirsiniz?","link_is_email":"Daxil edil\u0259n \u00fcnvan e-po\u00e7ta b\u0259nz\u0259yir. mailto: prefiksini \u0259lav\u0259 etm\u0259k ist\u0259yirsiniz?","link_titlefield":"Ad\u0131","link_target_blank":"Ke\u00e7idi yeni p\u0259nc\u0259r\u0259d\u0259 a\u00e7","link_target_same":"Ke\u00e7idi h\u0259min p\u0259nc\u0259r\u0259d\u0259 a\u00e7","link_target":"H\u0259d\u0259f","link_url":"Ke\u00e7id \u00fcnvan\u0131","link_title":"Ke\u00e7idi \u0259lav\u0259/redakt\u0259 et","image_align_right":"Sa\u011fa","image_align_left":"Sola","image_align_textbottom":"M\u0259tn a\u015fa\u011f\u0131s\u0131 \u00fczr\u0259","image_align_texttop":"M\u0259tn yuxar\u0131s\u0131 il\u0259","image_align_bottom":"A\u015fa\u011f\u0131 il\u0259","image_align_middle":"M\u0259rk\u0259z il\u0259","image_align_top":"Yuxar\u0131 il\u0259","image_align_baseline":"Bazis liniyas\u0131 \u00fczr\u0259","image_align":"Tarazla\u015fd\u0131r","image_hspace":"\u00dcf\u00fcqi f\u0259za","image_vspace":"\u015eaquli f\u0259za","image_dimensions":"\u00d6l\u00e7\u00fcl\u0259r","image_alt":"\u015e\u0259klin t\u0259sviri","image_list":"\u015e\u0259kil siyah\u0131s\u0131","image_border":"S\u0259rh\u0259d","image_src":"\u015e\u0259klin \u00fcnvan\u0131","image_title":"\u015e\u0259kli \u0259lav\u0259/redakt\u0259 et","charmap_title":"X\u00fcsusi simvol se\u00e7in","colorpicker_name":"Ad\u0131:","colorpicker_color":"R\u0259ng:","colorpicker_named_title":"Adland\u0131r\u0131lm\u0131\u015f r\u0259ngl\u0259r","colorpicker_named_tab":"Adland\u0131r\u0131lm\u0131\u015f","colorpicker_palette_title":"Palitra r\u0259ngl\u0259ri","colorpicker_palette_tab":"Palitra","colorpicker_picker_title":"R\u0259ng se\u00e7imi","colorpicker_picker_tab":"Se\u00e7im","colorpicker_title":"R\u0259ngi se\u00e7","code_wordwrap":"S\u00f6zl\u0259rin s\u0259tr\u0259 ke\u00e7idi","code_title":"HTML-m\u0259nb\u0259 redaktoru","anchor_name":"L\u00f6vb\u0259r ad\u0131","anchor_title":"L\u00f6bv\u0259r \u0259lav\u0259/redakt\u0259 et","about_loaded":"Y\u00fckl\u0259nil\u0259n plaginl\u0259r","about_version":"Versiya","about_author":"M\u00fc\u0259llif","about_plugin":"Plaginl\u0259r","about_plugins":"Plaginl\u0259r","about_license":"Lisenziya","about_help":"K\u00f6m\u0259k","about_general":"Proqram haqq\u0131nda","about_title":"TinyMCE haqda","anchor_invalid":"Please specify a valid anchor name.","accessibility_help":"Accessibility Help","accessibility_usage_title":"General Usage"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/bg.js b/program/js/tiny_mce/themes/advanced/langs/bg.js
deleted file mode 100644
index 6587c7391..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/bg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bg.advanced',{"underline_desc":"\u041f\u043e\u0434\u0447\u0435\u0440\u0442\u0430\u043d (Ctrl+U)","italic_desc":"\u041a\u0443\u0440\u0441\u0438\u0432 (Ctrl+I)","bold_desc":"\u041f\u043e\u043b\u0443\u0447\u0435\u0440 (Ctrl+B)",dd:"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0430 \u0434\u0435\u0444\u0438\u043d\u0438\u0446\u0438\u044f",dt:"\u0414\u0435\u0444\u0438\u043d\u0438\u0446\u0438\u044f ",samp:"\u041f\u0440\u043e\u043c\u0435\u0440\u0435\u043d \u043a\u043e\u0434",code:"\u041a\u043e\u0434",blockquote:"\u0426\u0438\u0442\u0430\u0442",h6:"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 6",h5:"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 5",h4:"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 4",h3:"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 3",h2:"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 2",h1:"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 1",pre:"\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u043d\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0430\u043d",address:"\u0410\u0434\u0440\u0435\u0441",div:"Div",paragraph:"\u041f\u0430\u0440\u0430\u0433\u0440\u0430\u0444",block:"\u0424\u043e\u0440\u043c\u0430\u0442",fontdefault:"\u0428\u0440\u0438\u0444\u0442","font_size":"\u0420\u0430\u0437\u043c\u0435\u0440 \u043d\u0430 \u0448\u0440\u0438\u0444\u0442\u0430","style_select":"\u0421\u0442\u0438\u043b\u043e\u0432\u0435","anchor_delta_height":"","more_colors":"\u041e\u0449\u0435 \u0446\u0432\u0435\u0442\u043e\u0432\u0435","toolbar_focus":"\u041e\u0442\u0438\u0434\u0438 \u043f\u0440\u0438 \u0431\u0443\u0442\u043e\u043d\u0438\u0442\u0435 - Alt+Q, \u041e\u0442\u0438\u0434\u0438 \u043f\u0440\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 - Alt-Z, \u041e\u0442\u0438\u0434\u0438 \u043f\u0440\u0438 \u043f\u044a\u0442\u0435\u043a\u0430\u0442\u0430 \u043d\u0430 \u0435\u043b\u0435\u043c\u0435\u043d\u0442\u0438\u0442\u0435 - Alt-X",newdocument:"\u0421\u0438\u0433\u0443\u0440\u0435\u043d \u043b\u0438 \u0441\u0442\u0435, \u0447\u0435 \u0438\u0441\u043a\u0430\u0442\u0435 \u0434\u0430 \u0438\u0437\u0447\u0438\u0441\u0442\u0438\u0442\u0435 \u0446\u044f\u043b\u043e\u0442\u043e \u0441\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435?",path:"\u041f\u044a\u0442","clipboard_msg":"\u041a\u043e\u043f\u0438\u0440\u0430\u043d\u0435/\u041e\u0442\u0440\u044f\u0437\u0432\u0430\u043d\u0435/\u041f\u043e\u0441\u0442\u0430\u0432\u044f\u043d\u0435 \u043d\u0435 \u0435 \u0434\u043e\u0441\u0442\u044a\u043f\u043d\u043e \u043f\u043e\u0434 Mozilla \u0438 Firefox.\n\u0416\u0435\u043b\u0430\u0435\u0442\u0435 \u043b\u0438 \u043f\u043e\u0432\u0435\u0447\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0437\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430?","blockquote_desc":"\u0426\u0438\u0442\u0430\u0442","help_desc":"\u041f\u043e\u043c\u043e\u0449","newdocument_desc":"\u041d\u043e\u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442","image_props_desc":"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u0442\u0430","paste_desc":"\u041f\u043e\u0441\u0442\u0430\u0432\u044f\u043d\u0435","copy_desc":"\u041a\u043e\u043f\u0438\u0440\u0430\u043d\u0435","cut_desc":"\u0418\u0437\u0440\u044f\u0437\u0432\u0430\u043d\u0435","anchor_desc":"\u0412\u043c\u044a\u043a\u043d\u0438/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 \u043a\u043e\u0442\u0432\u0430","visualaid_desc":"\u0412\u043a\u043b./\u0438\u0437\u043a\u043b. \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u0438\u0442\u0435 \u0435\u043b\u0435\u043c\u0435\u043d\u0442\u0438","charmap_desc":"\u0412\u043c\u044a\u043a\u043d\u0438 \u0441\u0438\u043c\u0432\u043e\u043b","backcolor_desc":"\u0418\u0437\u0431\u0435\u0440\u0438 \u0446\u0432\u044f\u0442 \u043d\u0430 \u0444\u043e\u043d\u0430","forecolor_desc":"\u0418\u0437\u0431\u0435\u0440\u0438 \u0446\u0432\u044f\u0442 \u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0430","custom1_desc":"\u0412\u0430\u0448\u0435\u0442\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0442\u0443\u043a","removeformat_desc":"\u041f\u0440\u0435\u043c\u0430\u0445\u043d\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0430\u043d\u0435\u0442\u043e","hr_desc":"\u0412\u043c\u044a\u043a\u043d\u0438 \u0445\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u043d\u0430 \u043b\u0438\u043d\u0438\u044f","sup_desc":"\u0413\u043e\u0440\u0435\u043d \u0438\u043d\u0434\u0435\u043a\u0441","sub_desc":"\u0414\u043e\u043b\u0435\u043d \u0438\u043d\u0434\u0435\u043a\u0441","code_desc":"\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 HTML","cleanup_desc":"\u0418\u0437\u0447\u0438\u0441\u0442\u0438 \u043a\u043e\u0434\u0430","image_desc":"\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435/\u0440\u0435\u0434\u0430\u043a\u0446\u0438\u044f \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430","unlink_desc":"\u041f\u0440\u0435\u043c\u0430\u0445\u043d\u0438 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430","link_desc":"\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435/\u0440\u0435\u0434\u0430\u043a\u0446\u0438\u044f \u043d\u0430 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430","redo_desc":"\u0412\u044a\u0437\u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0432\u0430\u043d\u0435 (Ctrl+Y)","undo_desc":"\u041e\u0442\u043c\u044f\u043d\u0430 (Ctrl+Z)","indent_desc":"\u0423\u0432\u0435\u043b\u0438\u0447\u0430\u0432\u0430\u043d\u0435 \u043d\u0430 \u043e\u0442\u0441\u0442\u044a\u043f\u0430","outdent_desc":"\u041d\u0430\u043c\u0430\u043b\u044f\u0432\u0430\u043d\u0435 \u043d\u0430 \u043e\u0442\u0441\u0442\u044a\u043f\u0430","numlist_desc":"\u041d\u043e\u043c\u0435\u0440\u0430","bullist_desc":"\u0412\u043e\u0434\u0430\u0447\u0438","justifyfull_desc":"\u0414\u0432\u0443\u0441\u0442\u0440\u0430\u043d\u043d\u043e","justifyright_desc":"\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435 \u043e\u0442\u0434\u044f\u0441\u043d\u043e","justifycenter_desc":"\u0426\u0435\u043d\u0442\u0440\u0438\u0440\u0430\u043d\u043e","justifyleft_desc":"\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435 \u043e\u0442\u043b\u044f\u0432\u043e","striketrough_desc":"\u0417\u0430\u0447\u0435\u0440\u0442\u0430\u043d","help_shortcut":"\u041d\u0430\u0442\u0438\u0441\u043d\u0435\u0442\u0435 ALT-F10 \u0437\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0438. \u041d\u0430\u0442\u0438\u0441\u043d\u0435\u0442\u0435 ALT-0 \u0437\u0430 \u043f\u043e\u043c\u043e\u0449","rich_text_area":"\u0417\u043e\u043d\u0430 \u0441\u0432\u043e\u0431\u043e\u0434\u0435\u043d \u0442\u0435\u043a\u0441\u0442","shortcuts_desc":"\u0417\u0430 \u0434\u043e\u0441\u0442\u044a\u043f \u0434\u043e Help",toolbar:"\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0438","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/bg_dlg.js b/program/js/tiny_mce/themes/advanced/langs/bg_dlg.js
deleted file mode 100644
index 7df3449c6..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/bg_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bg.advanced_dlg',{"link_list":"\u0421\u043f\u0438\u0441\u044a\u043a \u043b\u0438\u043d\u043a\u043e\u0432\u0435","link_is_external":"URL-\u0442\u043e \u043a\u043e\u0435\u0442\u043e \u0432\u044a\u0432\u0435\u0434\u043e\u0445\u0442\u0435 \u0435 \u0432\u044a\u043d\u0448\u043d\u0430 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430, \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u043b\u0438 \u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u0435 \u043d\u0443\u0436\u043d\u0438\u044f\u0442 http:// \u043f\u0440\u0435\u0444\u0438\u043a\u0441?","link_is_email":"URL-\u0442\u043e \u043a\u043e\u0435\u0442\u043e \u0432\u044a\u0432\u0435\u0434\u043e\u0445\u0442\u0435 \u0435 email \u0430\u0434\u0440\u0435\u0441, \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u043b\u0438 \u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u0435 \u043d\u0443\u0436\u043d\u0438\u044f\u0442 mailto: \u043f\u0440\u0435\u0444\u0438\u043a\u0441?","link_titlefield":"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435","link_target_blank":"\u041e\u0442\u0432\u043e\u0440\u0438 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430\u0442\u0430 \u0432 \u043d\u043e\u0432 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446","link_target_same":"\u041e\u0442\u0432\u043e\u0440\u0438 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430\u0442\u0430 \u0432 \u0441\u044a\u0449\u0438\u044f\u0442 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446","link_target":"\u0426\u0435\u043b","link_url":"URL \u043d\u0430 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430","link_title":"\u0412\u043c\u044a\u043a\u043d\u0438/\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430","image_align_right":"\u0414\u044f\u0441\u043d\u043e","image_align_left":"\u041b\u044f\u0432\u043e","image_align_textbottom":"\u0422\u0435\u043a\u0441\u0442 \u0434\u043e\u043b\u0443","image_align_texttop":"\u0422\u0435\u043a\u0441\u0442 \u0433\u043e\u0440\u0435","image_align_bottom":"\u0414\u043e\u043b\u0443","image_align_middle":"\u0426\u0435\u043d\u0442\u0440\u0438\u0440\u0430\u043d\u0435","image_align_top":"\u0413\u043e\u0440\u0435","image_align_baseline":"\u0411\u0430\u0437\u043e\u0432\u0430 \u043b\u0438\u043d\u0438\u044f","image_align":"\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435","image_hspace":"\u0425\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u043d\u043e \u0440\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435","image_vspace":"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u043d\u043e \u0440\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435","image_dimensions":"\u0420\u0430\u0437\u043c\u0435\u0440\u0438","image_alt":"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430","image_list":"\u0421\u043f\u0438\u0441\u044a\u043a \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438","image_border":"\u0420\u0430\u043c\u043a\u0430","image_src":"URL \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430","image_title":"\u0412\u043c\u044a\u043a\u043d\u0438/\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430","charmap_title":"\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u0441\u0438\u043c\u0432\u043e\u043b","colorpicker_name":"\u0418\u043c\u0435:","colorpicker_color":"\u0426\u0432\u044f\u0442:","colorpicker_named_title":"\u0418\u043c\u0435\u043d\u0443\u0432\u0430\u043d\u0438 \u0446\u0432\u0435\u0442\u043e\u0432\u0435","colorpicker_named_tab":"\u0418\u043c\u0435\u043d\u0443\u0432\u0430\u043d\u0438","colorpicker_palette_title":"\u0426\u0432\u0435\u0442\u043e\u0432\u0430 \u043f\u0430\u043b\u0438\u0442\u0440\u0430","colorpicker_palette_tab":"\u041f\u0430\u043b\u0438\u0442\u0440\u0430","colorpicker_picker_title":"\u0418\u0437\u0431\u043e\u0440 \u043d\u0430 \u0446\u0432\u044f\u0442","colorpicker_picker_tab":"\u0418\u0437\u0431\u043e\u0440","colorpicker_title":"\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u0446\u0432\u044f\u0442","code_wordwrap":"\u041f\u0440\u0435\u043d\u043e\u0441 \u043d\u0430 \u0434\u0443\u043c\u0438","code_title":"\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043d\u0430 HTML","anchor_name":"\u0418\u043c\u0435 \u043d\u0430 \u043a\u043e\u0442\u0432\u0430\u0442\u0430","anchor_title":"\u0412\u043c\u044a\u043a\u043d\u0438/\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 \u043a\u043e\u0442\u0432\u0430","about_loaded":"\u0417\u0430\u0440\u0435\u0434\u0435\u043d\u0438 \u0434\u043e\u0431\u0430\u0432\u043a\u0438","about_version":"\u0412\u0435\u0440\u0441\u0438\u044f","about_author":"\u0410\u0432\u0442\u043e\u0440","about_plugin":"\u0414\u043e\u0431\u0430\u0432\u043a\u0430","about_plugins":"\u0414\u043e\u0431\u0430\u0432\u043a\u0438","about_license":"\u041b\u0438\u0446\u0435\u043d\u0437","about_help":"\u041f\u043e\u043c\u043e\u0449","about_general":"\u041e\u0442\u043d\u043e\u0441\u043d\u043e","about_title":"\u041e\u0442\u043d\u043e\u0441\u043d\u043e TinyMCE","charmap_usage":"\u0418\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0439\u0442\u0435 \u0441\u0442\u0440\u0435\u043b\u043a\u0438\u0442\u0435 \u043d\u0430\u043b\u044f\u0432\u043e \u0438 \u043d\u0430\u0434\u044f\u0441\u043d\u043e, \u0437\u0430 \u0434\u0430 \u043d\u0430\u0432\u0438\u0433\u0438\u0440\u0430\u0442\u0435.","anchor_invalid":"\u041c\u043e\u043b\u044f \u0437\u0430\u0434\u0430\u0439\u0442\u0435 \u0432\u0430\u043b\u0438\u0434\u043d\u043e \u0438\u043c\u0435 \u0437\u0430 \u043a\u043e\u0442\u0432\u0430.","accessibility_help":"\u041f\u043e\u043c\u043e\u0449 \u0437\u0430 \u0434\u043e\u0441\u0442\u044a\u043f\u043d\u043e\u0441\u0442","accessibility_usage_title":"\u041e\u0431\u0449\u0430 \u0443\u043f\u043e\u0442\u0440\u0435\u0431\u0430","invalid_color_value":"\u041d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u0430 \u0441\u0442\u043e\u0439\u043d\u043e\u0441\u0442 \u0437\u0430 \u0446\u0432\u044f\u0442"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/bn.js b/program/js/tiny_mce/themes/advanced/langs/bn.js
deleted file mode 100644
index 3b2e4f858..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/bn.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bn.advanced',{"underline_desc":"Underline (Ctrl+U)","italic_desc":"Italic (Ctrl+I)","bold_desc":"Bold (Ctrl+B)",dd:"Definition description",dt:"Definition term ",samp:"Code sample",code:"Code",blockquote:"Blockquote",h6:"Heading 6",h5:"Heading 5",h4:"Heading 4",h3:"Heading 3",h2:"Heading 2",h1:"Heading 1",pre:"Preformatted",address:"Address",div:"Div",paragraph:"Paragraph",block:"Format",fontdefault:"Font family","font_size":"Font size","style_select":"Styles","more_colors":"More colors","toolbar_focus":"Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X",newdocument:"Are you sure you want clear all contents?",path:"Path","clipboard_msg":"Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?","blockquote_desc":"Blockquote","help_desc":"Help","newdocument_desc":"New document","image_props_desc":"Image properties","paste_desc":"Paste","copy_desc":"Copy","cut_desc":"Cut","anchor_desc":"Insert/edit anchor","visualaid_desc":"Toggle guidelines/invisible elements","charmap_desc":"Insert custom character","backcolor_desc":"Select background color","forecolor_desc":"Select text color","custom1_desc":"Your custom description here","removeformat_desc":"Remove formatting","hr_desc":"Insert horizontal ruler","sup_desc":"Superscript","sub_desc":"Subscript","code_desc":"Edit HTML Source","cleanup_desc":"Cleanup messy code","image_desc":"Insert/edit image","unlink_desc":"Unlink","link_desc":"Insert/edit link","redo_desc":"Redo (Ctrl+Y)","undo_desc":"Undo (Ctrl+Z)","indent_desc":"Indent","outdent_desc":"Outdent","numlist_desc":"Ordered list","bullist_desc":"Unordered list","justifyfull_desc":"Align full","justifyright_desc":"Align right","justifycenter_desc":"Align center","justifyleft_desc":"Align left","striketrough_desc":"Strikethrough","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":"","help_shortcut":"Press ALT-F10 for toolbar. Press ALT-0 for help","rich_text_area":"Rich Text Area","shortcuts_desc":"Accessability Help",toolbar:"Toolbar"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/bn_dlg.js b/program/js/tiny_mce/themes/advanced/langs/bn_dlg.js
deleted file mode 100644
index 6be9a341b..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/bn_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bn.advanced_dlg',{"link_list":"Link list","link_is_external":"The URL you entered seems to external link, do you want to add the required http:// prefix?","link_is_email":"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?","link_titlefield":"Title","link_target_blank":"Open link in a new window","link_target_same":"Open link in the same window","link_target":"Target","link_url":"Link URL","link_title":"Insert/edit link","image_align_right":"Right","image_align_left":"Left","image_align_textbottom":"Text bottom","image_align_texttop":"Text top","image_align_bottom":"Bottom","image_align_middle":"Middle","image_align_top":"Top","image_align_baseline":"Baseline","image_align":"Alignment","image_hspace":"Horizontal space","image_vspace":"Vertical space","image_dimensions":"Dimensions","image_alt":"Image description","image_list":"Image list","image_border":"Border","image_src":"Image URL","image_title":"Insert/edit image","charmap_title":"Select custom character","colorpicker_name":"Name:","colorpicker_color":"Color:","colorpicker_named_title":"Named colors","colorpicker_named_tab":"Named","colorpicker_palette_title":"Palette colors","colorpicker_palette_tab":"Palette","colorpicker_picker_title":"Color picker","colorpicker_picker_tab":"Picker","colorpicker_title":"Select a color","code_wordwrap":"Word wrap","code_title":"HTML Source Editor","anchor_name":"Anchor name","anchor_title":"Insert/edit anchor","about_loaded":"Loaded plugins","about_version":"Version","about_author":"Author","about_plugin":"Plugin","about_plugins":"Plugins","about_license":"License","about_help":"Help","about_general":"About","about_title":"About TinyMCE","anchor_invalid":"Please specify a valid anchor name.","accessibility_help":"Accessibility Help","accessibility_usage_title":"General Usage"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/br.js b/program/js/tiny_mce/themes/advanced/langs/br.js
deleted file mode 100644
index f73f53c72..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/br.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('br.advanced',{"underline_desc":"Sublinhado (Ctrl+U)","italic_desc":"It\u00e1lico (Ctrl+I)","bold_desc":"Negrito (Ctrl+B)",dd:"Descri\u00e7\u00e3o de defini\u00e7\u00e3o",dt:"Termo de defini\u00e7\u00e3o",samp:"Amostra de c\u00f3digo",code:"C\u00f3digo",blockquote:"Cita\u00e7\u00e3o em bloco",h6:"Cabe\u00e7alho 6",h5:"Cabe\u00e7alho 5",h4:"Cabe\u00e7alho 4",h3:"Cabe\u00e7alho 3",h2:"Cabe\u00e7alho 2",h1:"Cabe\u00e7alho 1",pre:"Pr\u00e9-formatado",address:"Endere\u00e7o",div:"Div",paragraph:"Par\u00e1grafo",block:"Formata\u00e7\u00e3o",fontdefault:"Fam\u00edlia(Fonte)","font_size":"Tamanho","style_select":"Estilos","more_colors":"Mais cores","toolbar_focus":"Ir para ferramentas - Alt+Q, Ir para o editor - Alt-Z, Ir para endere\u00e7o do elemento - Alt-X",newdocument:"Tem certeza de que deseja apagar tudo?",path:"Endere\u00e7o","clipboard_msg":"Copiar/cortar/colar n\u00e3o est\u00e1 dispon\u00edvel no Mozilla e Firefox. Deseja obter mais informa\u00e7\u00f5es sobre isso?","blockquote_desc":"Cita\u00e7\u00e3o em bloco","help_desc":"Ajuda","newdocument_desc":"Novo documento","image_props_desc":"Propriedades de imagem","paste_desc":"Colar","copy_desc":"Copiar","cut_desc":"Cortar","anchor_desc":"Inserir/editar \u00e2ncora","visualaid_desc":"Alternar guias/elementos invis\u00edveis","charmap_desc":"Inserir caracteres especiais","backcolor_desc":"Selecionar cor de fundo","forecolor_desc":"Selecionar cor do texto","custom1_desc":"Insira aqui a sua descri\u00e7\u00e3o personalizada","removeformat_desc":"Remover formata\u00e7\u00e3o","hr_desc":"Inserir separador horizontal","sup_desc":"Superscrito","sub_desc":"Subscrito","code_desc":"Editar c\u00f3digo fonte","cleanup_desc":"Limpar c\u00f3digo incorreto","image_desc":"Inserir/editar imagem","unlink_desc":"Remover hyperlink","link_desc":"Inserir/editar hyperlink","redo_desc":"Refazer (Ctrl+Y)","undo_desc":"Desfazer (Ctrl+Z)","indent_desc":"Aumentar recuo","outdent_desc":"Diminuir recuo","numlist_desc":"Numera\u00e7\u00e3o","bullist_desc":"Marcadores","justifyfull_desc":"Justificar","justifyright_desc":"Alinhar \u00e0 direita","justifycenter_desc":"Centralizar","justifyleft_desc":"Alinhar \u00e0 esquerda","striketrough_desc":"Riscado","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":"","help_shortcut":"Press ALT-F10 for toolbar. Press ALT-0 for help","rich_text_area":"Rich Text Area","shortcuts_desc":"Accessability Help",toolbar:"Toolbar"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/br_dlg.js b/program/js/tiny_mce/themes/advanced/langs/br_dlg.js
deleted file mode 100644
index bcb26f1b7..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/br_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('br.advanced_dlg',{"link_list":"Lista de Links","link_is_external":"A URL digitada parece conduzir a um link externo. Deseja acrescentar o (necess\u00e1rio) prefixo http://?","link_is_email":"A URL digitada parece ser um endere\u00e7o de e-mail. Deseja acrescentar o (necess\u00e1rio) prefixo mailto:?","link_titlefield":"T\u00edtulo","link_target_blank":"Abrir hyperlink em nova janela","link_target_same":"Abrir hyperlink na mesma janela","link_target":"Alvo","link_url":"URL do hyperink","link_title":"Inserir/editar hyperlink","image_align_right":"Direita","image_align_left":"Esquerda","image_align_textbottom":"Base do texto","image_align_texttop":"Topo do texto","image_align_bottom":"Abaixo","image_align_middle":"Meio","image_align_top":"Topo","image_align_baseline":"Sobre a linha de texto","image_align":"Alinhamento","image_hspace":"Espa\u00e7o Horizontal","image_vspace":"Espa\u00e7o Vertical","image_dimensions":"Dimens\u00f5es","image_alt":"Descri\u00e7\u00e3o da imagem","image_list":"Lista de imagens","image_border":"Limites","image_src":"Endere\u00e7o da imagem","image_title":"Inserir/editar imagem","charmap_title":"Selecionar caracteres personalizados","colorpicker_name":"Nome:","colorpicker_color":"Cor:","colorpicker_named_title":"Cores Personalizadas","colorpicker_named_tab":"Personalizadas","colorpicker_palette_title":"Paleta de Cores","colorpicker_palette_tab":"Paleta","colorpicker_picker_title":"Editor de Cores","colorpicker_picker_tab":"Editor","colorpicker_title":"Seleccione uma cor","code_wordwrap":"Quebra autom\u00e1tica de linha","code_title":"Editor HTML","anchor_name":"Nome da \u00e2ncora","anchor_title":"Inserir/editar \u00e2ncora","about_loaded":"Plugins Instalados","about_version":"Vers\u00e3o","about_author":"Autor","about_plugin":"Plugin","about_plugins":"Plugins","about_license":"Licen\u00e7a","about_help":"Ajuda","about_general":"Sobre","about_title":"Sobre o TinyMCE","anchor_invalid":"Please specify a valid anchor name.","accessibility_help":"Accessibility Help","accessibility_usage_title":"General Usage"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/bs.js b/program/js/tiny_mce/themes/advanced/langs/bs.js
deleted file mode 100644
index ae5081790..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/bs.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bs.advanced',{"underline_desc":"Podcrtaj (Ctrl+U)","italic_desc":"Kurziv (Ctrl+I)","bold_desc":"Podebljaj (Ctrl+B)",dd:"Opis definicije",dt:"Definicija pojma",samp:"Primjer koda",code:"Kod",blockquote:"Citat",h6:"Naslov 6",h5:"Naslov 5",h4:"Naslov 4",h3:"Naslov 3",h2:"Naslov 2",h1:"Naslov 1",pre:"Oblikovano",address:"Adresa",div:"Div",paragraph:"Paragraf",block:"Format",fontdefault:"Vrsta pisma","font_size":"Veli\u010dina pisma","style_select":"Stilovi","more_colors":"Vi\u0161e boja","toolbar_focus":"Prije\u0111i na alatnu traku - Alt+Q, prije\u0111i na ure\u0111iva\u010d - Alt-Z, prije\u0111i na element path - Alt-X",newdocument:"Jeste li sigurni da \u017eelite izbrisati cijeli sadr\u017eaj?",path:"Staza","clipboard_msg":"Kopiraj/Izre\u017ei/Zalijepi nije dostupno u Mozilla i Firefox preglednicima. Vi\u0161e informacija?","blockquote_desc":"Citiraj","help_desc":"Pomo\u0107","newdocument_desc":"Novi dokument","image_props_desc":"Svojstva slike","paste_desc":"Zalijepi","copy_desc":"Kopiraj","cut_desc":"Izre\u017ei","anchor_desc":"Umetni/uredi sidro","visualaid_desc":"Vodilice/nevidljivi elementi","charmap_desc":"Umetni vlastiti znak","backcolor_desc":"Odaberite boju pozadine","forecolor_desc":"Odaberite boju teksta","custom1_desc":"Vlastiti opis ovdje","removeformat_desc":"Poni\u0161ti oblikovanje","hr_desc":"Umetni vodoravnu crtu","sup_desc":"Eksponent","sub_desc":"Indeks","code_desc":"Uredi HTML izvor","cleanup_desc":"Po\u010disti kod","image_desc":"Umetni/uredi sliku","unlink_desc":"Poni\u0161ti poveznicu","link_desc":"Umetni/uredi poveznicu","redo_desc":"Ponovi (Ctrl+Y)","undo_desc":"Poni\u0161ti (Ctrl+Z)","indent_desc":"Izvuci","outdent_desc":"Uvuci","numlist_desc":"Ure\u0111ena lista","bullist_desc":"Neure\u0111ena lista","justifyfull_desc":"Poravnaj potpuno","justifyright_desc":"Poravnaj desno","justifycenter_desc":"Centriraj","justifyleft_desc":"Poravnaj lijevo","striketrough_desc":"Precrtaj","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":"","help_shortcut":"Press ALT-F10 for toolbar. Press ALT-0 for help","rich_text_area":"Rich Text Area","shortcuts_desc":"Accessability Help",toolbar:"Toolbar"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/bs_dlg.js b/program/js/tiny_mce/themes/advanced/langs/bs_dlg.js
deleted file mode 100644
index d2fd3614d..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/bs_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bs.advanced_dlg',{"link_list":"Lista poveznica","link_is_external":"URL koji ste unijeli izgleda kao vanjska poveznica, \u017eelite li dodati potrebni http:// prefiks?","link_is_email":"URL koji ste unijeli izgleda kao e-mail adresa, \u017eelite li dodati potrebni mailto: prefiks?","link_titlefield":"Naslov","link_target_blank":"Otvori poveznicu u novom prozoru","link_target_same":"Otvori poveznicu u istom prozoru","link_target":"Meta","link_url":"URL poveznice","link_title":"Umetni/uredi poveznicu","image_align_right":"Desno","image_align_left":"Lijevo","image_align_textbottom":"Dno teksta","image_align_texttop":"Vrh teksta","image_align_bottom":"Dno","image_align_middle":"Sredina","image_align_top":"Vrh","image_align_baseline":"Osnovna linija","image_align":"Poravnavanje","image_hspace":"Vodoravni razmak","image_vspace":"Okomiti razmak","image_dimensions":"Dimenzije","image_alt":"Opis slike","image_list":"Lista slika","image_border":"Obrub","image_src":"URL slike","image_title":"Umetni/uredi sliku","charmap_title":"Odaberite znak","colorpicker_name":"Naziv:","colorpicker_color":"Boja:","colorpicker_named_title":"Imenovane boje","colorpicker_named_tab":"Imenovano","colorpicker_palette_title":"Paleta boja","colorpicker_palette_tab":"Paleta","colorpicker_picker_title":"Odabir boje","colorpicker_picker_tab":"Odabir","colorpicker_title":"Izbor boje","code_wordwrap":"Omatanje teksta","code_title":"HTML ure\u0111iva\u010d","anchor_name":"Ime sidra","anchor_title":"Umetni/uredi sidro","about_loaded":"Postoje\u0107i dodaci","about_version":"Verzija","about_author":"Autor","about_plugin":"Dodatak","about_plugins":"Dodaci","about_license":"Licenca","about_help":"Pomo\u0107","about_general":"O programu","about_title":"TinyMCE","anchor_invalid":"Please specify a valid anchor name.","accessibility_help":"Accessibility Help","accessibility_usage_title":"General Usage"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/ca.js b/program/js/tiny_mce/themes/advanced/langs/ca.js
deleted file mode 100644
index 4e4be8e20..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/ca.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ca.advanced',{"underline_desc":"Subratllat (Ctrl+U)","italic_desc":"Cursiva (Ctrl+I)","bold_desc":"Negreta (Ctrl+B)",dd:"Descripci\u00f3 de definici\u00f3",dt:"Terme de definici\u00f3 ",samp:"Mostra el Codi",code:"Codi",blockquote:"Citabloc",h6:"Encap\u00e7alament 6",h5:"Encap\u00e7alament 5",h4:"Encap\u00e7alament 4",h3:"Encap\u00e7alament 3",h2:"Encap\u00e7alament 2",h1:"Encap\u00e7alament 1",pre:"Preformatat",address:"Adre\u00e7a",div:"Capa",paragraph:"Par\u00e0graf",block:"Format",fontdefault:"Fam\u00edlia de font","font_size":"Mida de font","style_select":"Estils","more_colors":"M\u00e9s colors","toolbar_focus":"Salta als botons d\'eina - Alt Q, Salta a l\'editor - Alt-Z, Salta al cam\u00ed de l\'element - Alt-X",newdocument:"Esteu segur que voleu buidar tots els continguts?",path:"Cam\u00ed","clipboard_msg":"Copia/Retalla/Enganxa no es troba disponible ni al Mozilla ni al Firefox. Voleu m\u00e9s informaci\u00f3 sobre aix\u00f2?","blockquote_desc":"Citabloc","help_desc":"Ajuda","newdocument_desc":"Nou document","image_props_desc":"Propietats de la imatge","paste_desc":"Enganxa","copy_desc":"Copia","cut_desc":"Retalla","anchor_desc":"Insereix/edita \u00e0ncora","visualaid_desc":"Commuta elements guies/invisibles","charmap_desc":"Insereix un car\u00e0cter","backcolor_desc":"Selecci\u00f3 del color de fons","forecolor_desc":"Selecci\u00f3 del color de text","custom1_desc":"Aqu\u00ed la vostra pr\u00f2pia descripci\u00f3","removeformat_desc":"Elimina el format","hr_desc":"Insereix un filet horitzontal","sup_desc":"Super\u00edndex","sub_desc":"Sub\u00edndex","code_desc":"Edita el codi font HTML","cleanup_desc":"Poleix el codi","image_desc":"Insereix/edita imatge","unlink_desc":"Desenlla\u00e7a","link_desc":"Insereix/edita enlla\u00e7","redo_desc":"Ref\u00e9s (Ctrl+Y)","undo_desc":"Desf\u00e9s (Ctrl+Z)","indent_desc":"Augmenta el sagnat","outdent_desc":"Redueix el sagnat","numlist_desc":"Llista numerada","bullist_desc":"Llista no numerada","justifyfull_desc":"Justificat","justifyright_desc":"Alineaci\u00f3 dreta","justifycenter_desc":"Alineaci\u00f3 al centre","justifyleft_desc":"Alineaci\u00f3 esquerra","striketrough_desc":"Barrat","help_shortcut":"Prem ALT-F10 per barra d\'eines. Prem ALT-0 per ajuda","rich_text_area":"\u00c0rea de Text Enriquit","shortcuts_desc":"Ajuda d\'Accessabilitat",toolbar:"Barra d\'eines","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/ca_dlg.js b/program/js/tiny_mce/themes/advanced/langs/ca_dlg.js
deleted file mode 100644
index d1b3776c2..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/ca_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ca.advanced_dlg',{"link_list":"Llista d\'enlla\u00e7os","link_is_external":"L\'URL que heu introdu\u00eft sembla ser un enlla\u00e7 extern, voleu afegir-hi el prefix requerit http:// ?","link_is_email":"L\'URL que heu introdu\u00eft sembla ser una adre\u00e7a de correu, voleu afegir-hi el prefix requerit mailto: ?","link_titlefield":"T\u00edtol","link_target_blank":"Obre l\'enlla\u00e7 a una nova finestra","link_target_same":"Obre l\'enlla\u00e7 a la mateixa finestra","link_target":"Dest\u00ed","link_url":"URL de l\'enlla\u00e7","link_title":"Insereix/edita enlla\u00e7","image_align_right":"Dreta","image_align_left":"Esquerra","image_align_textbottom":"Part inferior del text","image_align_texttop":"Part superior del text","image_align_bottom":"A baix","image_align_middle":"Al Mig","image_align_top":"A dalt","image_align_baseline":"L\u00ednia de base","image_align":"Alineaci\u00f3","image_hspace":"Espai horitzontal","image_vspace":"Espai vertical","image_dimensions":"Dimensions","image_alt":"Descripci\u00f3 de la imatge","image_list":"Llista de la imatge","image_border":"Vora","image_src":"URL de la imatge","image_title":"Insereix/edita imatge","charmap_title":"Selecci\u00f3 de car\u00e0cter","colorpicker_name":"Nom:","colorpicker_color":"Color:","colorpicker_named_title":"Colors pel seu nom","colorpicker_named_tab":"Per nom","colorpicker_palette_title":"Paleta de colors","colorpicker_palette_tab":"Paleta","colorpicker_picker_title":"Capturador de color","colorpicker_picker_tab":"Capturador","colorpicker_title":"Selecci\u00f3 de color","code_wordwrap":"Embolcall de paraula","code_title":"Editor de codi font HTML","anchor_name":"Nom de l\'\u00e0ncora","anchor_title":"Insereix/edita \u00e0ncora","about_loaded":"Connectors carregats","about_version":"Versi\u00f3","about_author":"Autor","about_plugin":"Connector","about_plugins":"Connectors","about_license":"Llic\u00e8ncia","about_help":"Ajuda","about_general":"Quant a","about_title":"Quant al TinyMCE","charmap_usage":"Feu servir fletxes esquerra i dreta per navegar","anchor_invalid":"Sisplau, especifiqueu un nom d\'\u00e0ncora v\u00e0lid.","accessibility_help":"Ajuda d\'accessibilitat","accessibility_usage_title":"Us general","invalid_color_value":"Valor de color inv\u00e0lid"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/cs.js b/program/js/tiny_mce/themes/advanced/langs/cs.js
deleted file mode 100644
index 9d88d4c9c..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/cs.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('cs.advanced',{"underline_desc":"Podtr\u017een\u00e9 (Ctrl+U)","italic_desc":"Kurz\u00edva (Ctrl+I)","bold_desc":"Tu\u010dn\u00e9 (Ctrl+B)",dd:"Popis definice",dt:"Term\u00edn definice",samp:"Uk\u00e1zka k\u00f3du",code:"K\u00f3d",blockquote:"Blokov\u00e1 citace",h6:"Nadpis 6",h5:"Nadpis 5",h4:"Nadpis 4",h3:"Nadpis 3",h2:"Nadpis 2",h1:"Nadpis 1",pre:"P\u0159edform\u00e1tov\u00e1no",address:"Adresa",div:"Odd\u00edl",paragraph:"Odstavec",block:"Form\u00e1t",fontdefault:"P\u00edsmo","font_size":"Velikost p\u00edsma","style_select":"Styly","more_colors":"Dal\u0161\u00ed barvy","toolbar_focus":"P\u0159echod na panel n\u00e1stroj\u016f - Alt Q, p\u0159echod do editoru - Alt Z, p\u0159echod na cestu prvk\u016f - Alt X",newdocument:"Jste si opravdu jisti, \u017ee chcete odstranit ve\u0161ker\u00fd obsah?",path:"Cesta","clipboard_msg":"Funkce kop\u00edrovat/vyjmout/vlo\u017eit nejsou podporovan\u00e9 v prohl\u00ed\u017ee\u010d\u00edch Mozilla a Firefox.\nChcete v\u00edce informac\u00ed o tomto probl\u00e9mu?","blockquote_desc":"Blokov\u00e1 citace","help_desc":"N\u00e1pov\u011bda","newdocument_desc":"Nov\u00fd dokument","image_props_desc":"Vlastnosti obr\u00e1zku","paste_desc":"Vlo\u017eit","copy_desc":"Kop\u00edrovat","cut_desc":"Vyjmout","anchor_desc":"Vlo\u017eit/upravit z\u00e1lo\u017eku (kotvu)","visualaid_desc":"Zobrazit pomocn\u00e9 linky/skryt\u00e9 prvky","charmap_desc":"Vlo\u017eit speci\u00e1ln\u00ed znak","backcolor_desc":"Barva pozad\u00ed","forecolor_desc":"Barva textu","custom1_desc":"Libovoln\u00fd popisek","removeformat_desc":"Odstranit form\u00e1tov\u00e1n\u00ed","hr_desc":"Vlo\u017eit vodorovn\u00fd odd\u011blova\u010d","sup_desc":"Horn\u00ed index","sub_desc":"Doln\u00ed index","code_desc":"Upravit HTML zdroj","cleanup_desc":"Vy\u010distit k\u00f3d","image_desc":"Vlo\u017eit/upravit obr\u00e1zek","unlink_desc":"Odebrat odkaz","link_desc":"Vlo\u017eit/upravit odkaz","redo_desc":"Znovu (Ctrl+Y)","undo_desc":"Zp\u011bt (Ctrl+Z)","indent_desc":"Zv\u011bt\u0161it odsazen\u00ed","outdent_desc":"Zmen\u0161it odsazen\u00ed","numlist_desc":"\u010c\u00edslovan\u00fd seznam","bullist_desc":"Seznam s odr\u00e1\u017ekami","justifyfull_desc":"Zarovnat do bloku","justifyright_desc":"Zarovnat doprava","justifycenter_desc":"Zarovnat na st\u0159ed","justifyleft_desc":"Zarovnat doleva","striketrough_desc":"P\u0159e\u0161krtnut\u00e9","help_shortcut":"Stiskn\u011bte ALT F10 pro panel n\u00e1stroj\u016f. Stiskn\u011bte ALT 0 pro n\u00e1pov\u011bdu.","rich_text_area":"Oblast s form\u00e1tovan\u00fdm textem","shortcuts_desc":"N\u00e1pov\u011bda",toolbar:"Panel n\u00e1stroj\u016f","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/cs_dlg.js b/program/js/tiny_mce/themes/advanced/langs/cs_dlg.js
deleted file mode 100644
index 35c165a8c..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/cs_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('cs.advanced_dlg',{"link_list":"Seznam odkaz\u016f","link_is_external":"Zadan\u00e9 URL vypad\u00e1 jako extern\u00ed odkaz, chcete doplnit povinn\u00fd prefix http://?","link_is_email":"Zadan\u00e9 URL vypad\u00e1 jako e-mailov\u00e1 adresa, chcete doplnit povinn\u00fd prefix mailto:?","link_titlefield":"Titulek","link_target_blank":"Otev\u0159\u00edt odkaz v nov\u00e9m okn\u011b","link_target_same":"Otev\u0159\u00edt odkaz ve stejn\u00e9m okn\u011b","link_target":"C\u00edl","link_url":"URL odkazu","link_title":"Vlo\u017eit/upravit odkaz","image_align_right":"Vpravo","image_align_left":"Vlevo","image_align_textbottom":"Se spodkem \u0159\u00e1dku","image_align_texttop":"S vrchem \u0159\u00e1dku","image_align_bottom":"Dol\u016f","image_align_middle":"Na st\u0159ed \u0159\u00e1dku","image_align_top":"Nahoru","image_align_baseline":"Na z\u00e1kladnu","image_align":"Zarovn\u00e1n\u00ed","image_hspace":"Horizont\u00e1ln\u00ed odsazen\u00ed","image_vspace":"Vertik\u00e1ln\u00ed odsazen\u00ed","image_dimensions":"Rozm\u011bry","image_alt":"Popis obr\u00e1zku","image_list":"Seznam obr\u00e1zk\u016f","image_border":"R\u00e1me\u010dek","image_src":"URL obr\u00e1zku","image_title":"Vlo\u017eit/upravit obr\u00e1zek","charmap_title":"Vlo\u017eit speci\u00e1ln\u00ed znak","colorpicker_name":"N\u00e1zev:","colorpicker_color":"Vybran\u00e1 barva:","colorpicker_named_title":"Pojmenovan\u00e9 barvy","colorpicker_named_tab":"N\u00e1zvy","colorpicker_palette_title":"Paleta barev","colorpicker_palette_tab":"Paleta","colorpicker_picker_title":"Kap\u00e1tko","colorpicker_picker_tab":"Kap\u00e1tko","colorpicker_title":"V\u00fdb\u011br barvy","code_wordwrap":"Zalamov\u00e1n\u00ed \u0159\u00e1dk\u016f","code_title":"Editor HTML","anchor_name":"N\u00e1zev z\u00e1lo\u017eky","anchor_title":"Vlo\u017eit/upravit z\u00e1lo\u017eku (kotvu)","about_loaded":"Na\u010dten\u00e9 z\u00e1suvn\u00e9 moduly","about_version":"Verze","about_author":"Autor","about_plugin":"Z\u00e1suvn\u00fd modul","about_plugins":"Z\u00e1suvn\u00e9 moduly","about_license":"Licence","about_help":"N\u00e1pov\u011bda","about_general":"O programu","about_title":"O TinyMCE","charmap_usage":"Pro navigaci pou\u017eijte \u0161ipky vlevo a vpravo.","anchor_invalid":"Zadejte, pros\u00edm, platn\u00fd n\u00e1zev z\u00e1lo\u017eky (kotvy).","accessibility_help":"N\u00e1pov\u011bda pro p\u0159\u00edstupnost","accessibility_usage_title":"Obecn\u00e9 pou\u017eit\u00ed","invalid_color_value":"Neplatn\u00fd k\u00f3d barvy"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/cy.js b/program/js/tiny_mce/themes/advanced/langs/cy.js
deleted file mode 100644
index d8b099ff3..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/cy.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('cy.advanced',{"underline_desc":"Tanlinellu (Ctrl+U)","italic_desc":"Italig (Ctrl+I)","bold_desc":"Trwm (Ctrl+B)",dd:"Disgrifiad diffiniad",dt:"Term diffiniad ",samp:"Sampl c\u00f4d",code:"C\u00f4d",blockquote:"Dyfyniad bloc",h6:"Pennawd 6",h5:"Pennawd 5",h4:"Pennawd 4",h3:"Pennawd 3",h2:"Pennawd 2",h1:"Pennawd 1",pre:"Rhagffomatiwyd",address:"Cyfeririad",div:"Div",paragraph:"Paragraff",block:"Fformat",fontdefault:"Teulu ffont","font_size":"Maint Ffont","style_select":"Ardulliau","more_colors":"Mwy o liwiau","toolbar_focus":"Neidio i botymau offeryn - Alt+Q, Neidio i olygydd - Alt-Z, Neidio i lwybr elfen - Alt-X",newdocument:"A ydych chi\'n si\u0175r eich bod eisiau clirio\'r holl cynnwys?",path:"Llwybr","clipboard_msg":"Nid yw Cop\u00efo/Torri/Gludo ar gael mewn Mozilla a Firefox.\nYdych chi eisiau mwy o wybodaeth am y mater yma?","blockquote_desc":"Dyfyniad bloc","help_desc":"Cymorth","newdocument_desc":"Dogfen newydd","image_props_desc":"Priodweddau delwedd","paste_desc":"Gludo","copy_desc":"Cop\u00efo","cut_desc":"Torri","anchor_desc":"Mewnosod/golygu angor","visualaid_desc":"Toglu llinellau cyfeirydd/elfennau anweledig","charmap_desc":"Mewnosod n\u00f4d addasiedig","backcolor_desc":"Dewis lliw cefndir","forecolor_desc":"Dewis lliw testun","custom1_desc":"Eich disgrifiad addasiedig yma","removeformat_desc":"Tynnu fformatio","hr_desc":"Mewnosod mesurydd llorweddol","sup_desc":"Uwchysgrif","sub_desc":"Isysgrif","code_desc":"Golygu Ffynhonell HTML","cleanup_desc":"Glanhau c\u00f4d anhrefnus","image_desc":"Mewnosod/golygu delwedd","unlink_desc":"Datgysylltu","link_desc":"Mewnosod/golygu cyswllt","redo_desc":"Ailwneud (Ctrl+Y)","undo_desc":"Dadwneud (Ctrl+Z)","indent_desc":"Mewnoli","outdent_desc":"Alloli","numlist_desc":"Rhestr trenus","bullist_desc":"Rhestr didrenus","justifyfull_desc":"Alinio llawn","justifyright_desc":"Alinio i\'r dde","justifycenter_desc":"Alinio i\'r canol","justifyleft_desc":"Alinio i\'r chwith","striketrough_desc":"Taro drwodd","help_shortcut":"Pwyswch ALT-F10 ar gyfer bar offer. Pwyswch ALT-0 am gymorth","rich_text_area":"Ardal Testun Cyfoethog","shortcuts_desc":"Cymorth Hygyrchedd",toolbar:"Bar Offer","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/cy_dlg.js b/program/js/tiny_mce/themes/advanced/langs/cy_dlg.js
deleted file mode 100644
index 4df78cbe8..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/cy_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('cy.advanced_dlg',{"link_list":"Rhestr cysylltau","link_is_external":"Mae\'r URL a rydych wedi rhoi yn edrych fel cyswllt allannol, ydych chi eisiau ychwanegu\'r rhagddodiad http:// sydd angen?","link_is_email":"Mae\'r URL a rydych wedi rhoi yn edrych fel cyferiad e-bost, ydych chi eisiau ychwanegu\'r rhagddodiad mailto: sydd angen?","link_titlefield":"Teitl","link_target_blank":"Agor cyswllt mewn ffenst newydd","link_target_same":"Agor cyswllt yn yr un ffenst","link_target":"Targed","link_url":"URL cyswllt","link_title":"Mewnosod/golygu cyswllt","image_align_right":"De","image_align_left":"Chwith","image_align_textbottom":"Gwaelod testun","image_align_texttop":"Pen testun","image_align_bottom":"Gwaelod","image_align_middle":"Canol","image_align_top":"Pen","image_align_baseline":"Gwaelodlin","image_align":"Aliniad","image_hspace":"Gofod llorweddol","image_vspace":"Gofod fertigol","image_dimensions":"Dimensiynau","image_alt":"disgrifiad delwedd","image_list":"Rhestr delweddau","image_border":"Border","image_src":"URL delwedd","image_title":"Mewnosod/golygu delwedd","charmap_title":"Dewis n\u00f4d addasiedig","colorpicker_name":"Enw:","colorpicker_color":"Lliw:","colorpicker_named_title":"Lliwiau wedi\'u enwi","colorpicker_named_tab":"Wedi\'u enwi","colorpicker_palette_title":"Lliwiau palet","colorpicker_palette_tab":"Palet","colorpicker_picker_title":"Dewisydd lliw","colorpicker_picker_tab":"Dweisydd","colorpicker_title":"Dewis lliw","code_wordwrap":"Amlapio geiriau","code_title":"Golygydd Ffynhonell HTML","anchor_name":"Enw angor","anchor_title":"Mewnosod/golygu angor","about_loaded":"Ategion wedi llwytho","about_version":"Fersion","about_author":"Awdur","about_plugin":"Ategyn","about_plugins":"Ategion","about_license":"Twyddedd","about_help":"Cymorth","about_general":"Ynglyn","about_title":"Ynglyn TinyMCE","charmap_usage":"Defnyddiwch saethau dde a chwith i fforio.","anchor_invalid":"Penodwch enw angor dilys.","accessibility_help":"Cymorth Hygyrchedd","accessibility_usage_title":"Defnydd Cyffredin"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/da.js b/program/js/tiny_mce/themes/advanced/langs/da.js
deleted file mode 100644
index 3d5fb8b0a..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/da.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('da.advanced',{"underline_desc":"Understreget (Ctrl+U)","italic_desc":"Kursiv (Ctrl+I)","bold_desc":"Fed (Ctrl+B)",dd:"Definitionsbeskrivelse",dt:"Definitionsterm ",samp:"Kodeeksempel",code:"Kode",blockquote:"Blokcitat",h6:"Overskrift 6",h5:"Overskrift 5",h4:"Overskrift 4",h3:"Overskrift 3",h2:"Overskrift 2",h1:"Overskrift 1",pre:"Pr\u00e6formatteret",address:"Adresse",div:"Div",paragraph:"Afsnit",block:"Format",fontdefault:"Skrifttype","font_size":"Skriftst\u00f8rrelse","style_select":"Typografier","more_colors":"Flere farver","toolbar_focus":"Hop til v\u00e6rkt\u00f8jsknapper - Alt+Q, Skift til redigering - Alt-Z, Skift til element sti - Alt-X",newdocument:"Er du sikker p\u00e5 du vil slette alt indhold?",path:"Sti","clipboard_msg":"Kopier/Klip/inds\u00e6t er ikke muligt i Mozilla og Firefox.\nVil du have mere information om dette emne?","blockquote_desc":"Blokcitat","help_desc":"Hj\u00e6lp","newdocument_desc":"Nyt dokument","image_props_desc":"Billedegenskaber","paste_desc":"Inds\u00e6t","copy_desc":"Kopier","cut_desc":"Klip","anchor_desc":"Inds\u00e6t/rediger anker","visualaid_desc":"Sl\u00e5 hj\u00e6lp/synlige elementer til/fra","charmap_desc":"Inds\u00e6t specialtegn","backcolor_desc":"V\u00e6lg baggrundsfarve","forecolor_desc":"V\u00e6lg tekstfarve","custom1_desc":"Din egen beskrivelse her","removeformat_desc":"Fjern formatering","hr_desc":"Inds\u00e6t horisontal linie","sup_desc":"H\u00e6vet skrift","sub_desc":"S\u00e6nket skrift","code_desc":"Rediger HTML-kilde","cleanup_desc":"Ryd op i uordentlig kode","image_desc":"Inds\u00e6t/rediger billede","unlink_desc":"Fjern link","link_desc":"Inds\u00e6t/rediger link","redo_desc":"Gendan (Ctrl+Y)","undo_desc":"Fortryd (Ctrl+Z)","indent_desc":"\u00d8g indrykning","outdent_desc":"Formindsk indrykning","numlist_desc":"Nummereret punktopstilling","bullist_desc":"Unummereret punktopstilling","justifyfull_desc":"Lige marginer","justifyright_desc":"H\u00f8jrejusteret","justifycenter_desc":"Centreret","justifyleft_desc":"Venstrejusteret","striketrough_desc":"Gennemstreget","help_shortcut":"Tryk ALT-F10 for v\u00e6rkt\u00f8jslinie. Tryk ALT-0 for hj\u00e6lp","rich_text_area":"Tekstomr\u00e5de med formatering","shortcuts_desc":"Hj\u00e6lp til tilg\u00e6ngelighed",toolbar:"V\u00e6rkt\u00f8jslinie","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/da_dlg.js b/program/js/tiny_mce/themes/advanced/langs/da_dlg.js
deleted file mode 100644
index f3a752cb1..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/da_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('da.advanced_dlg',{"link_list":"Liste over links","link_is_external":"Den URL, der er indtastet, ser ud til at v\u00e6re et eksternt link. Vil du have tilf\u00f8jet det p\u00e5kr\u00e6vede http:// foran?","link_is_email":"Den URL, der er indtastet, ser ud til at v\u00e6re en emailadresse. Vil du have tilf\u00f8jet det p\u00e5kr\u00e6vede mailto: foran?","link_titlefield":"Titel","link_target_blank":"\u00c5ben link i nyt vindue","link_target_same":"\u00c5ben link i samme vindue","link_target":"Target","link_url":"Link URL","link_title":"Inds\u00e6t/rediger link","image_align_right":"H\u00f8jre","image_align_left":"Venstre","image_align_textbottom":"Tekst bunden","image_align_texttop":"Tekst toppen","image_align_bottom":"Bunden","image_align_middle":"Centreret","image_align_top":"Toppen","image_align_baseline":"Grundlinie","image_align":"Justering","image_hspace":"Horisontal afstand","image_vspace":"Vertikal afstand","image_dimensions":"Dimensioner","image_alt":"Billedbeskrivelse","image_list":"Liste over billeder","image_border":"Kant","image_src":"Billede URL","image_title":"Inds\u00e6t/rediger billede","charmap_title":"V\u00e6lg specialtegn","colorpicker_name":"Navn:","colorpicker_color":"Farve:","colorpicker_named_title":"Navngivet farve","colorpicker_named_tab":"Navngivet","colorpicker_palette_title":"Palette-farver","colorpicker_palette_tab":"Palette","colorpicker_picker_title":"Farvev\u00e6lger","colorpicker_picker_tab":"V\u00e6lger","colorpicker_title":"V\u00e6lg en farve","code_wordwrap":"Tekstombrydning","code_title":"HTML kildekode-redigering","anchor_name":"Navn p\u00e5 anker","anchor_title":"Inds\u00e6t/rediger anker","about_loaded":"Indl\u00e6ste udvidelser","about_version":"Version","about_author":"Forfatter","about_plugin":"Udvidelse","about_plugins":"Udvidelser","about_license":"Licens","about_help":"Hj\u00e6lp","about_general":"Om","about_title":"Om TinyMCE","charmap_usage":"Brug venstre og h\u00f8jre piletaster til at navigere","anchor_invalid":"Angiv venligst et gyldigt anker navn.","accessibility_help":"Tilg\u00e6ngeligheds hj\u00e6lp","accessibility_usage_title":"Generel brug","invalid_color_value":"Ugyldig farve v\u00e6rdi"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/de.js b/program/js/tiny_mce/themes/advanced/langs/de.js
deleted file mode 100644
index 034195ca4..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/de.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('de.advanced',{"underline_desc":"Unterstrichen (Strg+U)","italic_desc":"Kursiv (Strg+I)","bold_desc":"Fett (Strg+B)",dd:"Definitionsbeschreibung",dt:"Definitionsbegriff",samp:"Beispiel",code:"Code",blockquote:"Zitatblock",h6:"\u00dcberschrift 6",h5:"\u00dcberschrift 5",h4:"\u00dcberschrift 4",h3:"\u00dcberschrift 3",h2:"\u00dcberschrift 2",h1:"\u00dcberschrift 1",pre:"Rohdaten",address:"Adresse",div:"Zusammenh\u00e4ngender Bereich",paragraph:"Absatz",block:"Vorlage",fontdefault:"Schriftart","font_size":"Schriftgr\u00f6\u00dfe","style_select":"Format","anchor_delta_width":"13","more_colors":"Weitere Farben","toolbar_focus":"Zur Werkzeugleiste springen: Alt+Q; Zum Editor springen: Alt-Z; Zum Elementpfad springen: Alt-X",newdocument:"Wollen Sie wirklich den ganzen Inhalt l\u00f6schen?",path:"Pfad","clipboard_msg":"Kopieren, Ausschneiden und Einf\u00fcgen sind im Mozilla Firefox nicht m\u00f6glich.\nWollen Sie mehr \u00fcber dieses Problem erfahren?","blockquote_desc":"Zitatblock","help_desc":"Hilfe","newdocument_desc":"Neues Dokument","image_props_desc":"Bildeigenschaften","paste_desc":"Einf\u00fcgen","copy_desc":"Kopieren","cut_desc":"Ausschneiden","anchor_desc":"Anker einf\u00fcgen/ver\u00e4ndern","visualaid_desc":"Hilfslinien und unsichtbare Elemente ein-/ausblenden","charmap_desc":"Sonderzeichen einf\u00fcgen","backcolor_desc":"Hintergrundfarbe","forecolor_desc":"Textfarbe","custom1_desc":"Benutzerdefinierte Beschreibung","removeformat_desc":"Formatierungen zur\u00fccksetzen","hr_desc":"Trennlinie einf\u00fcgen","sup_desc":"Hochgestellt","sub_desc":"Tiefgestellt","code_desc":"HTML-Quellcode bearbeiten","cleanup_desc":"Quellcode aufr\u00e4umen","image_desc":"Bild einf\u00fcgen/ver\u00e4ndern","unlink_desc":"Link entfernen","link_desc":"Link einf\u00fcgen/ver\u00e4ndern","redo_desc":"Wiederholen (Strg+Y)","undo_desc":"R\u00fcckg\u00e4ngig (Strg+Z)","indent_desc":"Einr\u00fccken","outdent_desc":"Ausr\u00fccken","numlist_desc":"Sortierte Liste","bullist_desc":"Unsortierte Liste","justifyfull_desc":"Blocksatz","justifyright_desc":"Rechtsb\u00fcndig","justifycenter_desc":"Zentriert","justifyleft_desc":"Linksb\u00fcndig","striketrough_desc":"Durchgestrichen","help_shortcut":"Dr\u00fccken Sie ALT-F10 f\u00fcr die Toolbar. Dr\u00fccken Sie ALT-0 f\u00fcr Hilfe","rich_text_area":"Rich Text Feld","shortcuts_desc":"Eingabehilfe",toolbar:"Toolbar","anchor_delta_height":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/de_dlg.js b/program/js/tiny_mce/themes/advanced/langs/de_dlg.js
deleted file mode 100644
index d33ca1dd1..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/de_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('de.advanced_dlg',{"link_list":"Linkliste","link_is_external":"Diese Adresse scheint ein externer Link zu sein. M\u00f6chten Sie das dazu ben\u00f6tigte \"http://\" voranstellen?","link_is_email":"Diese Adresse scheint eine E-Mail-Adresse zu sein. M\u00f6chten Sie das dazu ben\u00f6tigte \"mailto:\" voranstellen?","link_titlefield":"Titel","link_target_blank":"Neues Fenster \u00f6ffnen","link_target_same":"Im selben Fenster \u00f6ffnen","link_target":"Fenster","link_url":"Adresse","link_title":"Link einf\u00fcgen/ver\u00e4ndern","image_align_right":"Rechts","image_align_left":"Links","image_align_textbottom":"Unten im Text","image_align_texttop":"Oben im Text","image_align_bottom":"Unten","image_align_middle":"Mittig","image_align_top":"Oben","image_align_baseline":"Zeile","image_align":"Ausrichtung","image_hspace":"Horizontaler Abstand","image_vspace":"Vertikaler Abstand","image_dimensions":"Abmessungen","image_alt":"Alternativtext","image_list":"Bilderliste","image_border":"Rahmen","image_src":"Adresse","image_title":"Bild einf\u00fcgen/ver\u00e4ndern","charmap_title":"Sonderzeichen","colorpicker_name":"Name:","colorpicker_color":"Farbe:","colorpicker_named_title":"Benannte Farben","colorpicker_named_tab":"Benannte Farben","colorpicker_palette_title":"Farbpalette","colorpicker_palette_tab":"Palette","colorpicker_picker_title":"Farbwahl","colorpicker_picker_tab":"Farbwahl","colorpicker_title":"Farbe","code_wordwrap":"Automatischer Zeilenumbruch","code_title":"HTML-Quellcode bearbeiten","anchor_name":"Name des Ankers","anchor_title":"Anker einf\u00fcgen/ver\u00e4ndern","about_loaded":"Geladene Plugins","about_version":"Version","about_author":"Urheber","about_plugin":"Plugin","about_plugins":"Plugins","about_license":"Lizenzbedingungen","about_help":"Hilfe","about_general":"\u00dcber","about_title":"\u00dcber TinyMCE","charmap_usage":"Navigation mit linken und rechten Pfeilen.","anchor_invalid":"Bitte geben Sie einen g\u00fcltigen Namen f\u00fcr den Anker ein!","accessibility_help":"Eingabehilfe","accessibility_usage_title":"Allgemeine Verwendung","invalid_color_value":"Ung\u00fcltige Farbangabe"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/el.js b/program/js/tiny_mce/themes/advanced/langs/el.js
deleted file mode 100644
index 0ec14a661..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/el.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('el.advanced',{"underline_desc":"\u03a5\u03c0\u03bf\u03b3\u03c1\u03b1\u03bc\u03bc\u03b9\u03c3\u03bc\u03ad\u03bd\u03b1 (Ctrl+U)","italic_desc":"\u03a0\u03bb\u03ac\u03b3\u03b9\u03b1 (Ctrl+I)","bold_desc":"\u039c\u03b1\u03cd\u03c1\u03b1 (Ctrl+B)",dd:"\u03a0\u03b5\u03c1\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae \u039f\u03c1\u03b9\u03c3\u03bc\u03bf\u03cd",dt:"\u039f\u03c1\u03b9\u03c3\u03bc\u03cc\u03c2",samp:"\u0394\u03b5\u03af\u03b3\u03bc\u03b1 \u039a\u03ce\u03b4\u03b9\u03ba\u03b1",code:"\u039a\u03ce\u03b4\u03b9\u03ba\u03b1\u03c2",blockquote:"Blockquote",h6:"\u0395\u03c0\u03b9\u03ba\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 6",h5:"\u0395\u03c0\u03b9\u03ba\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 5",h4:"\u0395\u03c0\u03b9\u03ba\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 4",h3:"\u0395\u03c0\u03b9\u03ba\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 3",h2:"\u0395\u03c0\u03b9\u03ba\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 2",h1:"\u0395\u03c0\u03b9\u03ba\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 1",pre:"Pre",address:"\u0394\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7",div:"Div",paragraph:"\u03a0\u03b1\u03c1\u03ac\u03b3\u03c1\u03b1\u03c6\u03bf\u03c2",block:"\u039c\u03bf\u03c1\u03c6\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7",fontdefault:"\u0393\u03c1\u03b1\u03bc\u03bc\u03b1\u03c4\u03bf\u03c3\u03b5\u03b9\u03c1\u03ac","font_size":"\u039c\u03ad\u03b3\u03b5\u03b8\u03bf\u03c2 \u0393\u03c1\u03b1\u03bc\u03bc\u03ac\u03c4\u03c9\u03bd","style_select":"\u03a3\u03c4\u03c5\u03bb","link_delta_width":"80","image_delta_width":"20","more_colors":"\u03a0\u03b5\u03c1\u03b9\u03c3\u03c3\u03cc\u03c4\u03b5\u03c1\u03b1 \u03c7\u03c1\u03ce\u03bc\u03b1\u03c4\u03b1","toolbar_focus":"\u039c\u03b5\u03c4\u03ac\u03b2\u03b1\u03c3\u03b7 \u03c3\u03c4\u03b1 \u03ba\u03bf\u03c5\u03bc\u03c0\u03b9\u03ac \u03b5\u03c1\u03b3\u03b1\u03bb\u03b5\u03af\u03c9\u03bd - Alt+Q, \u039c\u03b5\u03c4\u03ac\u03b2\u03b1\u03c3\u03b7 \u03c3\u03c4\u03bf\u03bd \u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03c4\u03ae \u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5 - Alt-Z, \u039c\u03b5\u03c4\u03ac\u03b2\u03b1\u03c3\u03b7 \u03c3\u03c4\u03b7\u03bd \u03b4\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae \u03c4\u03bf\u03c5 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03bf\u03c5 - Alt-X",newdocument:"\u03a3\u03b9\u03af\u03b3\u03bf\u03c5\u03c1\u03b1 \u03b8\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03ba\u03b1\u03b8\u03b1\u03c1\u03af\u03c3\u03b5\u03c4\u03b5 \u03cc\u03bb\u03bf \u03c4\u03bf \u03c0\u03b5\u03c1\u03b9\u03b5\u03c7\u03cc\u03bc\u03b5\u03bd\u03bf ;",path:"\u0394\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae","clipboard_msg":"\u039f\u03b9 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b5\u03c2 \u0391\u03bd\u03c4\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae/\u0391\u03c0\u03bf\u03ba\u03bf\u03c0\u03ae/\u0395\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7 \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03b9\u03b1\u03b8\u03ad\u03c3\u03b9\u03bc\u03b5\u03c2 \u03c3\u03b5 Mozilla \u03ba\u03b1\u03b9 Firefox.\n\u0398\u03ad\u03bb\u03b5\u03c4\u03b5 \u03c0\u03b5\u03c1\u03b9\u03c3\u03c3\u03cc\u03c4\u03b5\u03c1\u03b5\u03c2 \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 ;","blockquote_desc":"Blockquote","help_desc":"\u0392\u03bf\u03ae\u03b8\u03b5\u03b9\u03b1","newdocument_desc":"\u039d\u03ad\u03bf \u03ad\u03b3\u03b3\u03c1\u03b1\u03c6\u03bf","image_props_desc":"\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2","paste_desc":"\u0395\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7","copy_desc":"\u0391\u03bd\u03c4\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae","cut_desc":"\u0391\u03c0\u03bf\u03ba\u03bf\u03c0\u03ae","anchor_desc":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 anchor","visualaid_desc":"\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7/\u0391\u03c0\u03cc\u03ba\u03c1\u03c5\u03c8\u03b7 \u03b2\u03bf\u03b7\u03b8\u03b7\u03c4\u03b9\u03ba\u03ce\u03bd \u03b3\u03c1\u03b1\u03bc\u03bc\u03ce\u03bd \u03ba\u03b1\u03b9 \u03b1\u03cc\u03c1\u03b1\u03c4\u03c9\u03bd \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03c9\u03bd","charmap_desc":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03ae\u03c1\u03b1","backcolor_desc":"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03c7\u03c1\u03ce\u03bc\u03b1\u03c4\u03bf\u03c2 \u03c6\u03cc\u03bd\u03c4\u03bf\u03c5","forecolor_desc":"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03c7\u03c1\u03ce\u03bc\u03b1\u03c4\u03bf\u03c2 \u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5","custom1_desc":"\u0397 \u03c0\u03b5\u03c1\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae \u03c3\u03b1\u03c2 \u03b5\u03b4\u03ce","removeformat_desc":"\u0391\u03c6\u03b1\u03af\u03c1\u03b5\u03c3\u03b7 \u03bc\u03bf\u03c1\u03c6\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2","hr_desc":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03bf\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03b1\u03c2 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2","sup_desc":"\u0395\u03ba\u03b8\u03ad\u03c4\u03b7\u03c2","sub_desc":"\u0394\u03b5\u03af\u03ba\u03c4\u03b7\u03c2","code_desc":"\u0395\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 HTML \u039a\u03ce\u03b4\u03b9\u03ba\u03b1","cleanup_desc":"\u039a\u03b1\u03b8\u03b1\u03c1\u03b9\u03c3\u03bc\u03cc\u03c2 \u03bc\u03c0\u03b5\u03c1\u03b4\u03b5\u03bc\u03ad\u03bd\u03bf\u03c5 \u03ba\u03ce\u03b4\u03b9\u03ba\u03b1","image_desc":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2","unlink_desc":"\u039a\u03b1\u03c4\u03ac\u03c1\u03b3\u03b7\u03c3\u03b7 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5","link_desc":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5","redo_desc":"\u0395\u03c0\u03b1\u03bd\u03ac\u03bb\u03b7\u03c8\u03b7 (Ctrl+Y)","undo_desc":"\u0391\u03bd\u03b1\u03af\u03c1\u03b5\u03c3\u03b7 (Ctrl+Z)","indent_desc":"\u0395\u03c3\u03bf\u03c7\u03ae","outdent_desc":"\u03a0\u03c1\u03bf\u03b5\u03be\u03bf\u03c7\u03ae","numlist_desc":"\u039b\u03af\u03c3\u03c4\u03b1 \u03bc\u03b5 \u03c3\u03b5\u03b9\u03c1\u03ac","bullist_desc":"\u039b\u03af\u03c3\u03c4\u03b1 \u03c7\u03c9\u03c1\u03af\u03c2 \u03c3\u03b5\u03b9\u03c1\u03ac","justifyfull_desc":"\u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7 \u03c0\u03bb\u03ae\u03c1\u03b7\u03c2","justifyright_desc":"\u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7 \u03b4\u03b5\u03be\u03b9\u03ac","justifycenter_desc":"\u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7 \u03ba\u03ad\u03bd\u03c4\u03c1\u03bf","justifyleft_desc":"\u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7 \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac","striketrough_desc":"\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03bc\u03bc\u03b9\u03c3\u03bc\u03ad\u03bd\u03b1","help_shortcut":"\u03a0\u03b1\u03c4\u03ae\u03c3\u03c4\u03b5 ALT-F10 \u03b3\u03b9\u03b1 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae \u03b5\u03c1\u03b3\u03b1\u03bb\u03b5\u03af\u03c9\u03bd. \u03a0\u03b9\u03ad\u03c3\u03c4\u03b5 ALT-0 \u03b3\u03b9\u03b1 \u03b2\u03bf\u03ae\u03b8\u03b5\u03b9\u03b1","shortcuts_desc":"\u0392\u03bf\u03ae\u03b8\u03b5\u03b9\u03b1 \u03b3\u03b9\u03b1 \u03a0\u03c1\u03bf\u03c3\u03b2\u03b1\u03c3\u03b9\u03bc\u03cc\u03c4\u03b7\u03c4\u03b1",toolbar:"\u0393\u03c1\u03b1\u03bc\u03bc\u03ae \u03b5\u03c1\u03b3\u03b1\u03bb\u03b5\u03af\u03c9\u03bd","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","image_delta_height":"","rich_text_area":"Rich Text Area"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/el_dlg.js b/program/js/tiny_mce/themes/advanced/langs/el_dlg.js
deleted file mode 100644
index df5856ecf..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/el_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('el.advanced_dlg',{"link_list":"\u039b\u03af\u03c3\u03c4\u03b1 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03c9\u03bd","link_is_external":"\u0397 \u03b4\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae URL \u03c0\u03bf\u03c5 \u03b5\u03b9\u03c3\u03ac\u03b3\u03b1\u03c4\u03b5 \u03c6\u03b1\u03af\u03bd\u03b5\u03c4\u03b1\u03b9 \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03be\u03c9\u03c4\u03b5\u03c1\u03b9\u03ba\u03cc\u03c2 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf\u03c2, \u03bd\u03b1 \u03c0\u03c1\u03bf\u03c3\u03c4\u03b5\u03b8\u03b5\u03af \u03c4\u03bf \u03b1\u03c0\u03b1\u03c1\u03b1\u03af\u03c4\u03b7\u03c4\u03bf http:// ;","link_is_email":"\u0397 \u03b4\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae URL \u03c0\u03bf\u03c5 \u03b5\u03b9\u03c3\u03ac\u03b3\u03b1\u03c4\u03b5 \u03c6\u03b1\u03af\u03bd\u03b5\u03c4\u03b1\u03b9 \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 email, \u03bd\u03b1 \u03c0\u03c1\u03bf\u03c3\u03c4\u03b5\u03b8\u03b5\u03af \u03c4\u03bf \u03b1\u03c0\u03b1\u03c1\u03b1\u03af\u03c4\u03b7\u03c4\u03bf mailto: ;","link_titlefield":"\u03a4\u03af\u03c4\u03bb\u03bf\u03c2","link_target_blank":"\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1 \u03c3\u03b5 \u03bd\u03ad\u03bf \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf","link_target_same":"\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1 \u03c3\u03c4\u03bf \u03af\u03b4\u03b9\u03bf \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf","link_target":"\u03a3\u03c4\u03cc\u03c7\u03bf\u03c2","link_url":"\u0394\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae URL \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5","link_title":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5","image_align_right":"\u0394\u03b5\u03be\u03b9\u03ac","image_align_left":"\u0391\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac","image_align_textbottom":"\u039a\u03b5\u03af\u03bc\u03b5\u03bd\u03bf \u03ba\u03ac\u03c4\u03c9","image_align_texttop":"\u039a\u03ad\u03b9\u03bc\u03b5\u03bd\u03bf \u03c0\u03ac\u03bd\u03c9","image_align_bottom":"\u039a\u03ac\u03c4\u03c9","image_align_middle":"\u039c\u03ad\u03c3\u03b7","image_align_top":"\u0395\u03c0\u03ac\u03bd\u03c9","image_align_baseline":"\u0393\u03c1\u03b1\u03bc\u03bc\u03ae \u03c3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7\u03c2 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ac\u03c4\u03c9\u03bd","image_align":"\u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7","image_hspace":"\u0391\u03c0\u03cc\u03c3\u03c4\u03b1\u03c3\u03b7 \u03bf\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03b1","image_vspace":"\u0391\u03c0\u03cc\u03c3\u03c4\u03b1\u03c3\u03b7 \u03ba\u03ac\u03b8\u03b5\u03c4\u03b7","image_dimensions":"\u0394\u03b9\u03b1\u03c3\u03c4\u03ac\u03c3\u03b5\u03b9\u03c2","image_alt":"\u03a0\u03b5\u03c1\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2","image_list":"\u039b\u03af\u03c3\u03c4\u03b1 \u03b5\u03b9\u03ba\u03cc\u03bd\u03c9\u03bd","image_border":"\u03a0\u03bb\u03b1\u03af\u03c3\u03b9\u03bf","image_src":"\u0394\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae URL \u0395\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2","image_title":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2","charmap_title":"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03ae\u03c1\u03b1","colorpicker_name":"\u038c\u03bd\u03bf\u03bc\u03b1:","colorpicker_color":"\u03a7\u03c1\u03ce\u03bc\u03b1:","colorpicker_named_title":"\u039f\u03bd\u03bf\u03bc\u03b1\u03c3\u03c4\u03b9\u03ba\u03ac \u03c7\u03c1\u03ce\u03bc\u03b1\u03c4\u03b1","colorpicker_named_tab":"\u039f\u03bd\u03bf\u03bc\u03b1\u03c3\u03c4\u03b9\u03ba\u03ac","colorpicker_palette_title":"\u03a7\u03c1\u03ce\u03bc\u03b1\u03c4\u03b1 \u03c0\u03b1\u03bb\u03ad\u03c4\u03b1\u03c2","colorpicker_palette_tab":"\u03a0\u03b1\u03bb\u03ad\u03c4\u03b1","colorpicker_picker_title":"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03c7\u03c1\u03ce\u03bc\u03b1\u03c4\u03bf\u03c2","colorpicker_picker_tab":"\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae","colorpicker_title":"\u0394\u03b9\u03b1\u03bb\u03ad\u03be\u03c4\u03b5 \u03c7\u03c1\u03ce\u03bc\u03b1","code_wordwrap":"\u0391\u03bd\u03b1\u03b4\u03af\u03c0\u03bb\u03c9\u03c3\u03b7 \u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5","code_title":"\u0395\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03c4\u03ae\u03c2 \u03ba\u03ce\u03b4\u03b9\u03ba\u03b1 HTML","anchor_name":"\u038c\u03bd\u03bf\u03bc\u03b1 anchor","anchor_title":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 anchor","about_loaded":"\u03a6\u03bf\u03c1\u03c4\u03c9\u03bc\u03ad\u03bd\u03b1 \u03c0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c4\u03b1","about_version":"\u0388\u03ba\u03b4\u03bf\u03c3\u03b7","about_author":"\u03a3\u03c5\u03b3\u03b3\u03c1\u03b1\u03c6\u03ad\u03b1\u03c2","about_plugin":"\u03a3\u03c7\u03b5\u03c4\u03b9\u03ba\u03ac \u03bc\u03b5 \u03c4\u03bf \u03c0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c4\u03bf","about_plugins":"\u03a3\u03c7\u03b5\u03c4\u03b9\u03ba\u03ac \u03bc\u03b5 \u03c4\u03b1 \u03c0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c4\u03b1","about_license":"\u0386\u03b4\u03b5\u03b9\u03b1","about_help":"\u0392\u03bf\u03ae\u03b8\u03b5\u03b9\u03b1","about_general":"\u03a3\u03c7\u03b5\u03c4\u03b9\u03ba\u03ac","about_title":"\u03a3\u03c7\u03b5\u03c4\u03b9\u03ba\u03ac \u03bc\u03b5 \u03c4\u03bf TinyMCE","charmap_usage":"\u03a7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c3\u03c4\u03b5 \u03c4\u03bf \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03cc \u03ba\u03b1\u03b9 \u03b4\u03b5\u03be\u03af \u03b2\u03b5\u03bb\u03ac\u03ba\u03b9 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03c0\u03bb\u03bf\u03b7\u03b3\u03b7\u03b8\u03b5\u03af\u03c4\u03b5","anchor_invalid":"\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03b5\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03ad\u03bd\u03b1 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 anchor.","accessibility_help":"\u0392\u03bf\u03ae\u03b8\u03b5\u03b9\u03b1 \u03b3\u03b9\u03b1 \u03a0\u03c1\u03bf\u03c3\u03b2\u03b1\u03c3\u03b9\u03bc\u03cc\u03c4\u03b7\u03c4\u03b1","accessibility_usage_title":"\u0393\u03b5\u03bd\u03b9\u03ba\u03ae \u03a7\u03c1\u03ae\u03c3\u03b7","invalid_color_value":"\u039b\u03ac\u03b8\u03bf\u03c2 \u03a4\u03b9\u03bc\u03ae \u03a7\u03c1\u03ce\u03bc\u03b1\u03c4\u03bf\u03c2"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/en.js b/program/js/tiny_mce/themes/advanced/langs/en.js
deleted file mode 100644
index 6e5848187..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/en.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('en.advanced',{"underline_desc":"Underline (Ctrl+U)","italic_desc":"Italic (Ctrl+I)","bold_desc":"Bold (Ctrl+B)",dd:"Definition Description",dt:"Definition Term ",samp:"Code Sample",code:"Code",blockquote:"Block Quote",h6:"Heading 6",h5:"Heading 5",h4:"Heading 4",h3:"Heading 3",h2:"Heading 2",h1:"Heading 1",pre:"Preformatted",address:"Address",div:"DIV",paragraph:"Paragraph",block:"Format",fontdefault:"Font Family","font_size":"Font Size","style_select":"Styles","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":"","more_colors":"More Colors...","toolbar_focus":"Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X",newdocument:"Are you sure you want clear all contents?",path:"Path","clipboard_msg":"Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?","blockquote_desc":"Block Quote","help_desc":"Help","newdocument_desc":"New Document","image_props_desc":"Image Properties","paste_desc":"Paste (Ctrl+V)","copy_desc":"Copy (Ctrl+C)","cut_desc":"Cut (Ctrl+X)","anchor_desc":"Insert/Edit Anchor","visualaid_desc":"show/Hide Guidelines/Invisible Elements","charmap_desc":"Insert Special Character","backcolor_desc":"Select Background Color","forecolor_desc":"Select Text Color","custom1_desc":"Your Custom Description Here","removeformat_desc":"Remove Formatting","hr_desc":"Insert Horizontal Line","sup_desc":"Superscript","sub_desc":"Subscript","code_desc":"Edit HTML Source","cleanup_desc":"Cleanup Messy Code","image_desc":"Insert/Edit Image","unlink_desc":"Unlink","link_desc":"Insert/Edit Link","redo_desc":"Redo (Ctrl+Y)","undo_desc":"Undo (Ctrl+Z)","indent_desc":"Increase Indent","outdent_desc":"Decrease Indent","numlist_desc":"Insert/Remove Numbered List","bullist_desc":"Insert/Remove Bulleted List","justifyfull_desc":"Align Full","justifyright_desc":"Align Right","justifycenter_desc":"Align Center","justifyleft_desc":"Align Left","striketrough_desc":"Strikethrough","help_shortcut":"Press ALT-F10 for toolbar. Press ALT-0 for help","rich_text_area":"Rich Text Area","shortcuts_desc":"Accessability Help",toolbar:"Toolbar"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/en_dlg.js b/program/js/tiny_mce/themes/advanced/langs/en_dlg.js
deleted file mode 100644
index 50cd87e3d..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/en_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('en.advanced_dlg', {"link_list":"Link List","link_is_external":"The URL you entered seems to be an external link. Do you want to add the required http:// prefix?","link_is_email":"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?","link_titlefield":"Title","link_target_blank":"Open Link in a New Window","link_target_same":"Open Link in the Same Window","link_target":"Target","link_url":"Link URL","link_title":"Insert/Edit Link","image_align_right":"Right","image_align_left":"Left","image_align_textbottom":"Text Bottom","image_align_texttop":"Text Top","image_align_bottom":"Bottom","image_align_middle":"Middle","image_align_top":"Top","image_align_baseline":"Baseline","image_align":"Alignment","image_hspace":"Horizontal Space","image_vspace":"Vertical Space","image_dimensions":"Dimensions","image_alt":"Image Description","image_list":"Image List","image_border":"Border","image_src":"Image URL","image_title":"Insert/Edit Image","charmap_title":"Select Special Character", "charmap_usage":"Use left and right arrows to navigate.","colorpicker_name":"Name:","colorpicker_color":"Color:","colorpicker_named_title":"Named Colors","colorpicker_named_tab":"Named","colorpicker_palette_title":"Palette Colors","colorpicker_palette_tab":"Palette","colorpicker_picker_title":"Color Picker","colorpicker_picker_tab":"Picker","colorpicker_title":"Select a Color","code_wordwrap":"Word Wrap","code_title":"HTML Source Editor","anchor_name":"Anchor Name","anchor_title":"Insert/Edit Anchor","about_loaded":"Loaded Plugins","about_version":"Version","about_author":"Author","about_plugin":"Plugin","about_plugins":"Plugins","about_license":"License","about_help":"Help","about_general":"About","about_title":"About TinyMCE","anchor_invalid":"Please specify a valid anchor name.","accessibility_help":"Accessibility Help","accessibility_usage_title":"General Usage","invalid_color_value":"Invalid color value","":""});
diff --git a/program/js/tiny_mce/themes/advanced/langs/eo.js b/program/js/tiny_mce/themes/advanced/langs/eo.js
deleted file mode 100644
index 6a875e504..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/eo.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('eo.advanced',{"underline_desc":"Substrekita (Ctrl U)","italic_desc":"Kursiva (Ctrl I)","bold_desc":"Grasa (Ctrl B)",dd:"Priskribo de la difino",dt:"Enhavo de la difino",samp:"Specimeno de kodo",code:"Kodo",blockquote:"Blokcita\u0135o",h6:"Titolo 6",h5:"Titolo 5",h4:"Titolo 4",h3:"Titolo 3",h2:"Titolo 2",h1:"Titolo 1",pre:"Anta\u016dformatita",address:"Adreso",div:"Div",paragraph:"Paragrafo",block:"Formatado",fontdefault:"Tiparo","font_size":"Grandeco","style_select":"Stiloj","more_colors":"Pliaj koloroj","toolbar_focus":"Iri al iloj - Alt Q, Iri al redaktilo - Alt-Z, Iri al la adreso de la elemento - Alt-X",newdocument:"\u0108u vi certas ke vi volas forvi\u015di \u0109ion?",path:"Adreso","clipboard_msg":"Kopii/eltondi/alglui ne estas disponebla en Mozilla nek Firefox. \u0108u vi volas pliajn informojn pri \u0109i tiu problemo?","blockquote_desc":"Blokcita\u0135o","help_desc":"Helpo","newdocument_desc":"Nova dokumento","image_props_desc":"Atributoj de bildo","paste_desc":"Alglui","copy_desc":"Kopii","cut_desc":"Eltondi","anchor_desc":"Enmeti/redakti ankron","visualaid_desc":"Alterni gvidilojn/nevideblajn elementojn","charmap_desc":"Enmeti specialajn signojn","backcolor_desc":"Elekti koloron de fono","forecolor_desc":"Elekti koloron de teksto","custom1_desc":"Enmetu \u0109i tie vian tajloritan priskribon","removeformat_desc":"Forigi formaton","hr_desc":"Enmeti horizontalan disigilon","sup_desc":"Supre","sub_desc":"Sube","code_desc":"Redakti fontokodon","cleanup_desc":"Senrubigi mal\u011dustan kodon","image_desc":"Enmeti/redakti bildon","unlink_desc":"Forigi ligilon","link_desc":"Enmeti/redakti ligilon","redo_desc":"Refari (Ctrl Y)","undo_desc":"Malfari (Ctrl Z)","indent_desc":"Pligrandigi krommar\u011denon","outdent_desc":"Malpligrandigi krommar\u011denon","numlist_desc":"Numerado","bullist_desc":"Buloj","justifyfull_desc":"\u011cisrandigi","justifyright_desc":"Dekstre liniigi","justifycenter_desc":"Centrigi","justifyleft_desc":"Maldekstre liniigi","striketrough_desc":"Strekita","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":"","help_shortcut":"Press ALT-F10 for toolbar. Press ALT-0 for help","rich_text_area":"Rich Text Area","shortcuts_desc":"Accessability Help",toolbar:"Toolbar"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/eo_dlg.js b/program/js/tiny_mce/themes/advanced/langs/eo_dlg.js
deleted file mode 100644
index 40f0edf6e..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/eo_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('eo.advanced_dlg',{"link_list":"Listo de ligiloj","link_is_external":"La entajpita adreso \u015dajne kondukas al ekstera ligilo. \u0108u vi volas aldoni la necesan prefikson http://?","link_is_email":"La entajpita adreso \u015dajnas retpo\u015dtadreso. \u0108u vi volas aldoni la necesan prefikson mailto:?","link_titlefield":"Titolo","link_target_blank":"Malfermi ligilon en novan fenestron","link_target_same":"Malfermi ligilon en la saman fenestron","link_target":"Celo","link_url":"Adreso de ligilo","link_title":"Enmeti/redakti ligilon","image_align_right":"Dekstre","image_align_left":"Maldekstre","image_align_textbottom":"Tekstosubo","image_align_texttop":"Tekstosupro","image_align_bottom":"Sube","image_align_middle":"Meze","image_align_top":"Supre","image_align_baseline":"Sur tekstlinio","image_align":"Liniigo","image_hspace":"Horizontala spaco","image_vspace":"Vertikala spaco","image_dimensions":"Dimensioj","image_alt":"Priskribo de bildo","image_list":"Listo de bildo","image_border":"Bordero","image_src":"Adreso de bildo","image_title":"Enmeti/redakti bildon","charmap_title":"Elekti tajloritajn signojn","colorpicker_name":"Nomo:","colorpicker_color":"Koloro:","colorpicker_named_title":"Tajloritaj Koloroj","colorpicker_named_tab":"Tajloritaj","colorpicker_palette_title":"Kolorpaletro","colorpicker_palette_tab":"Paletro","colorpicker_picker_title":"Kolorredaktilo","colorpicker_picker_tab":"Redaktilo","colorpicker_title":"Elektu koloron","code_wordwrap":"A\u016dtomata linisalto","code_title":"HTML-Redaktilo","anchor_name":"Nomo de ankro","anchor_title":"Enmeti/redakti ankron","about_loaded":"Instalitaj kromprogramoj","about_version":"Versio","about_author":"A\u016dtoro","about_plugin":"Kromprogramo","about_plugins":"Kromprogramoj","about_license":"Permesilo","about_help":"Helpo","about_general":"Pri","about_title":"Pri TinyMCE","anchor_invalid":"Bonvole, uzu validan nomon por la ankro.","accessibility_help":"Accessibility Help","accessibility_usage_title":"General Usage"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/es.js b/program/js/tiny_mce/themes/advanced/langs/es.js
deleted file mode 100644
index ef9f26472..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/es.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('es.advanced',{"underline_desc":"Subrayado (Ctrl+U)","italic_desc":"Cursiva (Ctrl+I)","bold_desc":"Negrita (Ctrl+B)",dd:"Descripci\u00f3n de definici\u00f3n",dt:"T\u00e9rmino de definici\u00f3n",samp:"Ejemplo de c\u00f3digo",code:"C\u00f3digo",blockquote:"Cita",h6:"Encabezado 6",h5:"Encabezado 5",h4:"Encabezado 4",h3:"Encabezado 3",h2:"Encabezado 2",h1:"Encabezado 1",pre:"Preformateado",address:"Direcci\u00f3n",div:"Div",paragraph:"P\u00e1rrafo",block:"Formato",fontdefault:"Fuente","font_size":"Tama\u00f1o","style_select":"Estilos","more_colors":"M\u00e1s colores","toolbar_focus":"Ir a los botones de herramientas - Alt+Q, Ir al editor - Alt-Z, Ir a la ruta del elemento - Alt-X",newdocument:" \u00bfSeguro que desea limpiar todo el contenido?",path:"Ruta","clipboard_msg":"Copiar/Cortar/Pegar no se encuentra disponible en Mozilla y Firefox.\n \u00bfQuiere m\u00e1s informaci\u00f3n sobre este tema?","blockquote_desc":"Cita","help_desc":"Ayuda","newdocument_desc":"Nuevo documento","image_props_desc":"Propiedades de imagen","paste_desc":"Pegar","copy_desc":"Copiar","cut_desc":"Cortar","anchor_desc":"Insertar/editar ancla","visualaid_desc":"Mostrar/ocultar l\u00ednea de gu\u00eda/elementos invisibles","charmap_desc":"Insertar caracteres personalizados","backcolor_desc":"Elegir color de fondo","forecolor_desc":"Elegir color del texto","custom1_desc":"Su descripci\u00f3n personal aqu\u00ed","removeformat_desc":"Limpiar formato","hr_desc":"Insertar regla horizontal","sup_desc":"Super\u00edndice","sub_desc":"Sub\u00edndice","code_desc":"Editar c\u00f3digo HTML","cleanup_desc":"Limpiar c\u00f3digo basura","image_desc":"Insertar/editar imagen","unlink_desc":"Quitar hiperv\u00ednculo","link_desc":"Insertar/editar hiperv\u00ednculo","redo_desc":"Rehacer (Ctrl+Y)","undo_desc":"Deshacer (Ctrl+Z)","indent_desc":"Aumentar sangr\u00eda","outdent_desc":"Reducir sangr\u00eda","numlist_desc":"Lista ordenada","bullist_desc":"Lista desordenada","justifyfull_desc":"Justificar","justifyright_desc":"Alinear a la derecha","justifycenter_desc":"Alinear al centro","justifyleft_desc":"Alinear a la izquierda","striketrough_desc":"Tachado","help_shortcut":"Presiones ALT-F10 para la barra de herramientas. Presione ALT-0 para ayuda.","rich_text_area":"\u00c1rea de texto con formato","shortcuts_desc":"Ayuda de accesibilidad",toolbar:"Barra de Herramientas","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/es_dlg.js b/program/js/tiny_mce/themes/advanced/langs/es_dlg.js
deleted file mode 100644
index 923c34b75..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/es_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('es.advanced_dlg',{"link_list":"Lista de hiperv\u00ednculos","link_is_external":"La URL que introdujo parece ser un v\u00ednculo externo, \u00bfdesea agregar el prefijo http:// necesario?","link_is_email":"La URL que introdujo parece ser una direcci\u00f3n de email, \u00bfdesea agregar el prefijo mailto: necesario?","link_titlefield":"T\u00edtulo","link_target_blank":"Abrir v\u00ednculo en una ventana nueva","link_target_same":"Abrir v\u00ednculo en la misma ventana","link_target":"Destino","link_url":"URL del hiperv\u00ednculo","link_title":"Insertar/editar hiperv\u00ednculo","image_align_right":"Derecha","image_align_left":"Izquierda","image_align_textbottom":"Texto debajo","image_align_texttop":"Texto arriba","image_align_bottom":"Debajo","image_align_middle":"Medio","image_align_top":"Arriba","image_align_baseline":"L\u00ednea base","image_align":"Alineaci\u00f3n","image_hspace":"Espacio horizontal","image_vspace":"Espacio vertical","image_dimensions":"Dimensi\u00f3n","image_alt":"Descripci\u00f3n de la Imagen","image_list":"Lista de la Imagen","image_border":"Borde","image_src":"URL de la Imagen","image_title":"Insertar/editar imagen","charmap_title":"Elegir caracter personalizado","colorpicker_name":"Nombre:","colorpicker_color":"Color:","colorpicker_named_title":"Colores nombrados","colorpicker_named_tab":"Nombrados","colorpicker_palette_title":"Paleta de colores","colorpicker_palette_tab":"Paleta","colorpicker_picker_title":"Paleta de color","colorpicker_picker_tab":"Selector","colorpicker_title":"Elegir color","code_wordwrap":"Ajustar al margen","code_title":"Editor del c\u00f3digo fuente HTML","anchor_name":"Nombre del ancla","anchor_title":"Insertar/editar ancla","about_loaded":"Complementos cargados","about_version":"Versi\u00f3n","about_author":"Autor","about_plugin":"Complemento","about_plugins":"Complementos","about_license":"Licencia","about_help":"Ayuda","about_general":"Acerca de ","about_title":"Acerca de TinyMCE","charmap_usage":"Use las flechas para navegar","anchor_invalid":"Especifique un nombre v\u00e1lido para liga","accessibility_help":"Ayuda sobre Accesibilidad","accessibility_usage_title":"Uso General","invalid_color_value":"valor invalido de color"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/et.js b/program/js/tiny_mce/themes/advanced/langs/et.js
deleted file mode 100644
index 5c0c7937f..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/et.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('et.advanced',{"underline_desc":"Allajoonitud (Ctrl+U)","italic_desc":"Kursiiv (Ctrl+I)","bold_desc":"Rasvane (Ctrl+B)",dd:"Defineeringu kirjeldus",dt:"Defineeringu tingimus",samp:"Koodi n\u00e4ide",code:"Kood",blockquote:"Plokkviide",h6:"Heading 6",h5:"Heading 5",h4:"Heading 4",h3:"Heading 3",h2:"Heading 2",h1:"Heading 1",pre:"Eelformeeritud",address:"Aadress",div:"Div",paragraph:"Paragraaf",block:"Formaat",fontdefault:"Font","font_size":"Fondi suurus","style_select":"Stiilid","more_colors":"Rohkem v\u00e4rve","toolbar_focus":"H\u00fcppa t\u00f6\u00f6riista nuppudele - Alt+Q, H\u00fcppa redigeerijale - Alt-Z, H\u00fcppa elemendi teele - Alt-X",newdocument:"Oled sa kindel, et tahad kustutada k\u00f5ik sisud?",path:"Tee","clipboard_msg":"Kopeeri/L\u00f5ika/Kleebi ei ole Mozillas ja Firefoxis saadaval. Kas soovid rohkem infot selle probleemi kohta?","blockquote_desc":"Plokkviide","help_desc":"Abi","newdocument_desc":"Uus dokument","image_props_desc":"Pildi kirjeldus","paste_desc":"Kleebi","copy_desc":"Kopeeri","cut_desc":"L\u00f5ika","anchor_desc":"Sisesta/redigeeri ankur","visualaid_desc":"L\u00fclita \u00fcmber juhtjooned/n\u00e4htamatud elemendid","charmap_desc":"Sisesta kohandatud kirjam\u00e4rk","backcolor_desc":"Vali tausta v\u00e4rv","forecolor_desc":"Vali teksti v\u00e4rv","custom1_desc":"Teie kohandatud kirjeldus siia","removeformat_desc":"Eemalda vormindus","hr_desc":"Sisesta horisontaalne joonlaud","sup_desc":"\u00dclaindeks","sub_desc":"Alaindeks","code_desc":"Redigeeri HTML l\u00e4htekoodi","cleanup_desc":"Puhasta segane kood","image_desc":"Sisesta/redigeeri pilt","unlink_desc":"Eemalda link","link_desc":"Sisesta/redigeeri link","redo_desc":"Tee uuesti (Ctrl+Y)","undo_desc":"V\u00f5ta tagasi (Ctrl+Z)","indent_desc":"Taanda sisse","outdent_desc":"Taanda v\u00e4lja","numlist_desc":"Korrap\u00e4rane loetelu","bullist_desc":"Ebakorrap\u00e4rane loetelu","justifyfull_desc":"T\u00e4isjoondus","justifyright_desc":"Parem joondus","justifycenter_desc":"Keskjoondus","justifyleft_desc":"Vasak joondus","striketrough_desc":"L\u00e4bijoonitud","help_shortcut":"Vajuta ALT-F10 t\u00f6\u00f6riistariba jaoks. Vajuta ALT-0 abi saamiseks","rich_text_area":"Vormindatud tekstiala","shortcuts_desc":"K\u00e4ttesaadavus spikker",toolbar:"T\u00f6\u00f6riistariba","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/et_dlg.js b/program/js/tiny_mce/themes/advanced/langs/et_dlg.js
deleted file mode 100644
index 2226a12fd..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/et_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('et.advanced_dlg',{"link_list":"Lingi loetelu","link_is_external":"URL, mille sisestasite, tundub olevat v\u00e4line link, kas soovite, et lisataks http:// eesliite?","link_is_email":"URL, mille te sisestasite, tundub olevat emaili aadress, kas soovite, et lisataks mailto: eesliite?","link_titlefield":"Tiitel","link_target_blank":"Ava link uues aknas","link_target_same":"Ava link samas aknas","link_target":"Sihtala","link_url":"Link URL","link_title":"Sisesta/redigeeri link","image_align_right":"Parem","image_align_left":"Vasak","image_align_textbottom":"Teksti p\u00f5hi","image_align_texttop":"Teksti tipp","image_align_bottom":"Alumine","image_align_middle":"Keskmine","image_align_top":"\u00dclemine","image_align_baseline":"Kirjajoondus","image_align":"Reastus","image_hspace":"Horisontaalne vahe","image_vspace":"Vertikaalne vahe","image_dimensions":"Dimensioonid","image_alt":"Pildi kirjeldus","image_list":"Pildi loend","image_border":"Raam","image_src":"Pildi URL","image_title":"Sisestal/redigeeri pilt","charmap_title":"Vali kohandatud t\u00e4hem\u00e4rk","colorpicker_name":"Nimi:","colorpicker_color":"V\u00e4rv:","colorpicker_named_title":"Nimetatud v\u00e4rvid","colorpicker_named_tab":"Nimetatud","colorpicker_palette_title":"Palett v\u00e4rvid","colorpicker_palette_tab":"Palett","colorpicker_picker_title":"V\u00e4rvi korjaja","colorpicker_picker_tab":"Korjaja","colorpicker_title":"Vali v\u00e4rv","code_wordwrap":"S\u00f5na pakkimine","code_title":"HTML koodi redaktor","anchor_name":"Ankru nimi","anchor_title":"Sisesta/redigeeri ankur","about_loaded":"Laetud lisad","about_version":"Versioon","about_author":"Autor","about_plugin":"Lisa","about_plugins":"Lisad","about_license":"Litsents","about_help":"Abi","about_general":"Teave","about_title":"Teave TinyMCE kohta","charmap_usage":"Kasuta navigeerimiseks vasak ja parem nooli.","anchor_invalid":"Palun m\u00e4\u00e4ra korrektne ankru nimi.","accessibility_help":"K\u00e4ttesaadavus spikker","accessibility_usage_title":"\u00dcldine kasutus"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/eu.js b/program/js/tiny_mce/themes/advanced/langs/eu.js
deleted file mode 100644
index f19e37d02..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/eu.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('eu.advanced',{"underline_desc":"Azpimarratua (Ctrl+U)","italic_desc":"Etzana (Ctrl+I)","bold_desc":"Beltza (Ctrl+B)",dd:"Definizioa (dd)",dt:"Definizio terminoa (dt) ",samp:"Kode adibidea",code:"Kodea",blockquote:"Zita",h6:"6. goiburua",h5:"5. goiburua",h4:"4. goiburua",h3:"3. goiburua",h2:"2. goiburua",h1:"1. goiburua",pre:"Aurreformateatua",address:"Helbidea",div:"Div",paragraph:"Paragrafoa",block:"Formatua",fontdefault:"Letra-mota","font_size":"Letra-tamaina","style_select":"Estiloak","anchor_delta_height":"Ainguraren altuera","anchor_delta_width":"Ainguraren zabalera","charmap_delta_height":"Karaktere maparen altuera","charmap_delta_width":"Karaktere maparen zabalera","colorpicker_delta_height":"Kolore hautatzailearen altuera","colorpicker_delta_width":"Kolore hautatzailearen zabalera","link_delta_height":"Loturaren altuera","link_delta_width":"Loturaren zabalera","image_delta_height":"Irudiaren altuera","image_delta_width":"Irudiaren zabalera","more_colors":"Kolore gehiago","toolbar_focus":"Tresnaren botoietara joan - Alt+Q, Editorera joan - Alt-Z, Elementuaren bidera joan - Alt-X",newdocument:"Eduki guztia kendu nahi duzu?",path:"Bidea","clipboard_msg":"Kopiatu/Ebaki/Itsatsi ez dago Mozilla eta Firefoxen.\nHonen inguruko informazioa nahi duzu?","blockquote_desc":"Zita","help_desc":"Laguntza","newdocument_desc":"Dokumentu berria","image_props_desc":"Irudiaren aukerak","paste_desc":"Itsatsi","copy_desc":"Kopiatu","cut_desc":"Ebaki","anchor_desc":"Aingura txertatu/editatu","visualaid_desc":"Elementu ikustezinak ikustarazi/ezkutatu","charmap_desc":"Karaktere berezia txertatu","backcolor_desc":"Atzeko kolorea aukeratu","forecolor_desc":"Testuaren kolorea aukeratu","custom1_desc":"Nahi duzun deskribapena hemen idatzi","removeformat_desc":"Formatua kendu","hr_desc":"Lerro horizontala gehitu","sup_desc":"Goi-indizea","sub_desc":"Azpi-indizea","code_desc":"HTML kodea editatu","cleanup_desc":"Kode zikina garbitu","image_desc":"Irudia txertatu/editatu","unlink_desc":"Lotura kendu","link_desc":"Lotura txertatu/editatu","redo_desc":"Berregin (Ctrl+Y)","undo_desc":"Desegin (Ctrl+Z)","indent_desc":"Koska gehitu","outdent_desc":"Koska kendu","numlist_desc":"Zerrenda ordenatua","bullist_desc":"Zerrenda","justifyfull_desc":"Testua justifikatu","justifyright_desc":"Eskuinean alineatu","justifycenter_desc":"Erdian zentratu","justifyleft_desc":"Ezkerrean alineatu","striketrough_desc":"Gainetik marra duena","help_shortcut":"Press ALT-F10 for toolbar. Press ALT-0 for help","rich_text_area":"Rich Text Area","shortcuts_desc":"Accessability Help",toolbar:"Toolbar"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/eu_dlg.js b/program/js/tiny_mce/themes/advanced/langs/eu_dlg.js
deleted file mode 100644
index 010174841..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/eu_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('eu.advanced_dlg',{"link_list":"Lotura zerrenda","link_is_external":"Sartutako helbideak kanpoko webgune batena dirudi, aurretik http:// gehitzea nahi duzu?","link_is_email":"Sartutako helbideak e-posta bat dirudi, aurretik mailto: gehitzea nahi duzu?","link_titlefield":"Izenburua","link_target_blank":"Lotura leiho berrian ireki","link_target_same":"Lotura leiho berean ireki","link_target":"Helburua","link_url":"Loturaren URLa","link_title":"Lotura txertatu/editatu","image_align_right":"Eskuinean","image_align_left":"Ezkerrean","image_align_textbottom":"Testua behean","image_align_texttop":"Testua goian","image_align_bottom":"Behean","image_align_middle":"Tartean","image_align_top":"Goian","image_align_baseline":"Oinarriko marra","image_align":"Alineazioa","image_hspace":"Tarte horizontala","image_vspace":"Tarte bertikala","image_dimensions":"Tamaina","image_alt":"Irudiaren deskribapena","image_list":"Irudi zerrenda","image_border":"Inguruko marra","image_src":"Irudiaren URL helbidea","image_title":"Irudia txertatu/editatu","charmap_title":"Karaktere berezia aukeratu","colorpicker_name":"Izena:","colorpicker_color":"Kolorea:","colorpicker_named_title":"Izendun koloreak","colorpicker_named_tab":"Izendunak","colorpicker_palette_title":"Kolore paleta","colorpicker_palette_tab":"Paleta","colorpicker_picker_title":"Kolore aukeratzailea","colorpicker_picker_tab":"Aukeratu","colorpicker_title":"Kolorea aukeratu","code_wordwrap":"Itzulbiratu","code_title":"HTML kodearen editorea","anchor_name":"Ainguraren izena","anchor_title":"Aingura txertatu/editatu","about_loaded":"Kargatutako gehigarriak","about_version":"Bertsioa","about_author":"Egilea","about_plugin":"Gehiagarria","about_plugins":"Gehigarriak","about_license":"Lizentzia","about_help":"Laguntza","about_general":"Honi buruz","about_title":"TinyMCEri buruz","anchor_invalid":"Please specify a valid anchor name.","accessibility_help":"Accessibility Help","accessibility_usage_title":"General Usage"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/fa.js b/program/js/tiny_mce/themes/advanced/langs/fa.js
deleted file mode 100644
index 94af922b4..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/fa.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fa.advanced',{"underline_desc":"\u0645\u062a\u0646 \u0632\u06cc\u0631 \u062e\u0637 \u062f\u0627\u0631 (Ctrl+U)","italic_desc":"\u0645\u062a\u0646 \u0645\u0648\u0631\u0628 (Ctrl+I)","bold_desc":"\u0645\u062a\u0646 \u0636\u062e\u06cc\u0645 (Ctrl+B)",dd:"\u062a\u0639\u0631\u06cc\u0641 \u062a\u0648\u0636\u06cc\u062d",dt:"\u062a\u0639\u0631\u06cc\u0641 \u0648\u0627\u0698\u0647 ",samp:"\u0646\u0645\u0648\u0646\u0647 \u06a9\u062f",code:"\u06a9\u062f",blockquote:"\u0628\u0644\u0648\u06a9 \u0646\u0642\u0644 \u0642\u0648\u0644",h6:"\u0639\u0646\u0648\u0627\u0646 \u06af\u0630\u0627\u0631\u06cc 6",h5:"\u0639\u0646\u0648\u0627\u0646 \u06af\u0630\u0627\u0631\u06cc 5",h4:"\u0639\u0646\u0648\u0627\u0646 \u06af\u0630\u0627\u0631\u06cc 4",h3:"\u0639\u0646\u0648\u0627\u0646 \u06af\u0630\u0627\u0631\u06cc 3",h2:"\u0639\u0646\u0648\u0627\u0646 \u06af\u0630\u0627\u0631\u06cc 2",h1:"\u0639\u0646\u0648\u0627\u0646 \u06af\u0630\u0627\u0631\u06cc \u06f1",pre:"\u0642\u0627\u0644\u0628 \u0628\u0646\u062f\u06cc \u0634\u062f\u0647 \u0627\u0632 \u0642\u0628\u0644",address:"\u0622\u062f\u0631\u0633",div:"Div",paragraph:"\u067e\u0627\u0631\u0627\u06af\u0631\u0627\u0641",block:"\u0642\u0627\u0644\u0628",fontdefault:"\u0646\u0648\u0639 \u0642\u0644\u0645","font_size":"\u0627\u0646\u062f\u0627\u0632\u0647 \u0642\u0644\u0645","style_select":"\u0627\u0633\u062a\u0627\u06cc\u0644 \u0647\u0627","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":"","more_colors":"\u0631\u0646\u06af \u0647\u0627\u06cc \u0628\u06cc\u0634\u062a\u0631","toolbar_focus":"\u067e\u0631\u0634 \u0628\u0647 \u062f\u06a9\u0645\u0647 \u0647\u0627\u06cc \u0627\u0628\u0632\u0627\u0631 - Alt+Q \u060c \u067e\u0631\u0634 \u0628\u0647 \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631 - Alt-Z \u060c \u067e\u0631\u0634 \u0628\u0647 \u0645\u0633\u06cc\u0631 \u0639\u0646\u0635\u0631 - Alt-X",newdocument:"\u0622\u06cc\u0627 \u0634\u0645\u0627 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u062a\u0645\u0627\u0645\u06cc \u0645\u062d\u062a\u0648\u0627 \u0631\u0627 \u067e\u0627\u06a9 \u06a9\u0646\u06cc\u062f\u061f",path:"\u0645\u0633\u06cc\u0631","clipboard_msg":"\u06a9\u067e\u06cc(Copy)/\u0628\u0631\u0634 (Cut)/\u0686\u0633\u0628\u0627\u0646\u062f\u0646 (Paste) \u062f\u0631 Mozilla \u0648 Firefox \u0642\u0627\u0628\u0644 \u062f\u0633\u062a\u0631\u0633 \u0646\u0645\u06cc \u0628\u0627\u0634\u062f.\\r\n\u0622\u06cc\u0627 \u0634\u0645\u0627 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u06cc\u0634\u062a\u0631\u06cc \u062f\u0631\u0628\u0627\u0631\u0647 \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f\u061f","blockquote_desc":"\u0628\u0644\u0648\u06a9 \u0646\u0642\u0644 \u0642\u0648\u0644","help_desc":"\u0631\u0627\u0647\u0646\u0645\u0627","newdocument_desc":"\u0633\u0646\u062f \u062c\u062f\u06cc\u062f","image_props_desc":"\u0645\u0634\u062e\u0635\u0627\u062a \u062a\u0635\u0648\u06cc\u0631","paste_desc":"\u0686\u0633\u0628\u0627\u0646\u062f\u0646 (Paste)","copy_desc":"\u06a9\u067e\u06cc (Copy)","cut_desc":"\u0628\u0631\u0634 (Cut)","anchor_desc":"\u062f\u0631\u062c/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0644\u0646\u06af\u0631","visualaid_desc":"\u0646\u0645\u0627\u06cc\u0634/\u0639\u062f\u0645 \u0646\u0645\u0627\u06cc\u0634 \u0639\u0646\u0627\u0635\u0631 \u062e\u0637\u0648\u0637 \u0631\u0627\u0647\u0646\u0645\u0627/\u063a\u06cc\u0631 \u0642\u0627\u0628\u0644 \u0646\u0645\u0627\u06cc\u0627\u0646","charmap_desc":"\u062f\u0631\u062c \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u0648\u06cc\u0698\u0647","backcolor_desc":"\u0627\u0646\u062a\u062e\u0627\u0628 \u0631\u0646\u06af \u0632\u0645\u06cc\u0646\u0647","forecolor_desc":"\u0627\u0646\u062a\u062e\u0627\u0628 \u0631\u0646\u06af \u0645\u062a\u0646","custom1_desc":"\u062a\u0648\u0636\u06cc\u062d \u0633\u0641\u0627\u0631\u0634\u06cc \u0634\u0645\u0627 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627","removeformat_desc":"\u062d\u0630\u0641 \u0642\u0627\u0644\u0628 \u0628\u0646\u062f\u06cc","hr_desc":"\u062f\u0631\u062c \u062e\u0637 \u0627\u0641\u0642\u06cc","sup_desc":"\u0628\u0627\u0644\u0627 \u0646\u0648\u06cc\u0633","sub_desc":"\u067e\u0627\u06cc\u06cc\u0646 \u0646\u0648\u06cc\u0633","code_desc":"\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0633\u0648\u0631\u0633 HTML","cleanup_desc":"\u067e\u0627\u06a9 \u0633\u0627\u0632\u06cc \u06a9\u062f \u0647\u0627\u06cc \u0628\u0647\u0645 \u062e\u0648\u0631\u062f\u0647","image_desc":"\u062f\u0631\u062c/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u062a\u0635\u0648\u06cc\u0631","unlink_desc":"\u063a\u06cc\u0631 \u0644\u06cc\u0646\u06a9 \u06a9\u0631\u062f\u0646","link_desc":"\u062f\u0631\u062c/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0644\u06cc\u0646\u06a9","redo_desc":"\u0631\u0641\u062a\u0646 \u0628\u0647 \u0639\u0645\u0644 \u0628\u0639\u062f (Ctrl Y)","undo_desc":"\u0628\u0631\u06af\u0634\u062a \u0628\u0647 \u0639\u0645\u0644 \u0642\u0628\u0644 (Ctrl Z)","indent_desc":"\u062a\u0648\u0631\u0641\u062a\u06af\u06cc","outdent_desc":"\u0628\u06cc\u0631\u0648\u0646 \u0622\u0645\u062f\u06af\u06cc","numlist_desc":"\u0644\u06cc\u0633\u062a \u0645\u0631\u062a\u0628","bullist_desc":"\u0644\u06cc\u0633\u062a \u0646\u0627\u0645\u0631\u062a\u0628","justifyfull_desc":"\u0647\u0645 \u062a\u0631\u0627\u0632 \u06a9\u0631\u062f\u0646","justifyright_desc":"\u062a\u0631\u0627\u0632 \u0631\u0627\u0633\u062a","justifycenter_desc":"\u062a\u0631\u0627\u0632 \u0648\u0633\u0637","justifyleft_desc":"\u062a\u0631\u0627\u0632 \u0686\u067e","striketrough_desc":"\u062e\u0637 \u0648\u0633\u0637","help_shortcut":"\u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc ALT-F10 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0646\u0648\u0627\u0631 \u0627\u0628\u0632\u0627\u0631 \u0628\u0641\u0634\u0627\u0631\u06cc\u062f. \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc ALT-0 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0631\u0627\u0647\u0646\u0645\u0627","rich_text_area":"\u0645\u062a\u0646 \u063a\u0646\u06cc","shortcuts_desc":"\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc",toolbar:"\u0646\u0648\u0627\u0631 \u0627\u0628\u0632\u0627\u0631"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/fa_dlg.js b/program/js/tiny_mce/themes/advanced/langs/fa_dlg.js
deleted file mode 100644
index 3fa6a8a77..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/fa_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fa.advanced_dlg',{"link_list":"\u0644\u06cc\u0633\u062a \u0644\u06cc\u0646\u06a9","link_is_external":"\u0622\u062f\u0631\u0633\u06cc \u06a9\u0647 \u0634\u0645\u0627 \u0648\u0627\u0631\u062f \u0646\u0645\u0648\u062f\u0647 \u0627\u06cc\u062f \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0622\u06cc\u062f \u06a9\u0647 \u0644\u06cc\u0646\u06a9 \u062e\u0627\u0631\u062c\u06cc \u0645\u06cc \u0628\u0627\u0634\u062f \u060c \u0622\u06cc\u0627 \u0645\u0627\u06cc\u0644\u06cc\u062f \u062a\u0627 \u067e\u06cc\u0634\u0648\u0646\u062f \u0644\u0627\u0632\u0645\u0647 //:http \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u0646\u0645\u0627\u0626\u06cc\u062f\u061f","link_is_email":"\u0622\u062f\u0631\u0633\u06cc \u06a9\u0647 \u0634\u0645\u0627 \u0648\u0627\u0631\u062f \u0646\u0645\u0648\u062f\u0647 \u0627\u06cc\u062f \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0622\u06cc\u062f \u06a9\u0647 \u06cc\u06a9 \u0622\u062f\u0631\u0633 \u0627\u06cc\u0645\u06cc\u0644 \u0645\u06cc \u0628\u0627\u0634\u062f \u060c \u0622\u06cc\u0627 \u0645\u0627\u06cc\u0644\u06cc\u062f \u062a\u0627 \u067e\u06cc\u0634\u0648\u0646\u062f \u0627\u062c\u0628\u0627\u0631\u06cc \u0644\u0627\u0632\u0645\u0647 :mailto \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u0646\u0645\u0627\u0626\u06cc\u062f\u061f","link_titlefield":"\u0639\u0646\u0648\u0627\u0646","link_target_blank":"\u0628\u0627\u0632 \u0634\u062f\u0646 \u0644\u06cc\u0646\u06a9 \u062f\u0631 \u06cc\u06a9 \u067e\u0646\u062c\u0631\u0647 \u062c\u062f\u06cc\u062f","link_target_same":"\u0628\u0627\u0632\u0634\u062f\u0646 \u0644\u06cc\u0646\u06a9 \u062f\u0631 \u0647\u0645\u0627\u0646 \u067e\u0646\u062c\u0631\u0647","link_target":"\u0645\u0642\u0635\u062f (Target)","link_url":"\u0622\u062f\u0631\u0633 \u0644\u06cc\u0646\u06a9","link_title":"\u062f\u0631\u062c/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0644\u06cc\u0646\u06a9","image_align_right":"\u0631\u0627\u0633\u062a","image_align_left":"\u0686\u067e","image_align_textbottom":"\u067e\u0627\u06cc\u06cc\u0646 \u0645\u062a\u0646","image_align_texttop":"\u0628\u0627\u0644\u0627 \u0645\u062a\u0646","image_align_bottom":"\u067e\u0627\u06cc\u06cc\u0646","image_align_middle":"\u0648\u0633\u0637","image_align_top":"\u0628\u0627\u0644\u0627","image_align_baseline":"\u062e\u0637 \u067e\u0627\u06cc\u0647","image_align":"\u062a\u0631\u0627\u0632","image_hspace":"\u0641\u0627\u0635\u0644\u0647 \u0627\u0641\u0642\u06cc","image_vspace":"\u0641\u0627\u0635\u0644\u0647 \u0639\u0645\u0648\u062f\u06cc","image_dimensions":"\u0627\u0628\u0639\u0627\u062f","image_alt":"\u062a\u0648\u0636\u06cc\u062d \u062a\u0635\u0648\u06cc\u0631","image_list":"\u0644\u06cc\u0633\u062a \u062a\u0635\u0648\u06cc\u0631","image_border":"\u062d\u0627\u0634\u06cc\u0647","image_src":"\u0622\u062f\u0631\u0633 \u062a\u0635\u0648\u06cc\u0631","image_title":"\u062f\u0631\u062c/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u062a\u0635\u0648\u06cc\u0631","charmap_title":"\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u0648\u06cc\u0698\u0647","colorpicker_name":"\u0646\u0627\u0645:","colorpicker_color":"\u0631\u0646\u06af:","colorpicker_named_title":"\u0631\u0646\u06af \u0647\u0627\u06cc \u0646\u0627\u0645 \u062f\u0627\u0631","colorpicker_named_tab":"\u0646\u0627\u0645 \u062f\u0627\u0631","colorpicker_palette_title":"\u0631\u0646\u06af \u0647\u0627\u06cc \u0627\u0644\u06af\u0648","colorpicker_palette_tab":"\u0627\u0644\u06af\u0648","colorpicker_picker_title":"\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u0646\u062f\u0647 \u0631\u0646\u06af","colorpicker_picker_tab":"\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u0646\u062f\u0647","colorpicker_title":"\u0627\u0646\u062a\u062e\u0627\u0628 \u06cc\u06a9 \u0631\u0646\u06af","code_wordwrap":"\u0634\u06a9\u0633\u062a\u0646 \u062e\u0637\u0648\u0637","code_title":"\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0633\u0648\u0631\u0633 HTML","anchor_name":"\u0646\u0627\u0645 \u0644\u0646\u06af\u0631 (Anchor)","anchor_title":"\u062f\u0631\u062c/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0644\u0646\u06af\u0631 (Anchor)","about_loaded":"\u0627\u0644\u062d\u0627\u0642\u0627\u062a \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0634\u062f\u0647","about_version":"\u0646\u0633\u062e\u0647","about_author":"\u0645\u0624\u0644\u0641","about_plugin":"\u0627\u0644\u062d\u0627\u0642\u0647","about_plugins":"\u0627\u0644\u062d\u0627\u0642\u0627\u062a","about_license":"\u0645\u062c\u0648\u0632","about_help":"\u0631\u0627\u0647\u0646\u0645\u0627","about_general":"\u062f\u0631\u0628\u0627\u0631\u0647","about_title":"\u062f\u0631\u0628\u0627\u0631\u0647 TinyMCE","charmap_usage":"\u0627\u0632 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0686\u067e \u0648 \u0631\u0627\u0633\u062a \u062c\u0647\u062a \u067e\u06cc\u0645\u0627\u06cc\u0634 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f","anchor_invalid":"\u0644\u0637\u0641\u0627 \u06cc\u06a9 \u0646\u0627\u0645 \u0645\u0639\u062a\u0628\u0631 \u0628\u0631\u0627\u06cc \u0644\u0646\u06af\u0631 (anchor) \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f.","accessibility_help":"\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc","accessibility_usage_title":"\u0637\u0631\u06cc\u0642\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0639\u0645\u0648\u0645\u06cc","invalid_color_value":"\u06a9\u062f \u0631\u0646\u06af \u0646\u0627\u0645\u0639\u062a\u0628\u0631"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/fi.js b/program/js/tiny_mce/themes/advanced/langs/fi.js
deleted file mode 100644
index 2edb8f6a4..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/fi.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fi.advanced',{"underline_desc":"Alleviivattu (Ctrl+U)","italic_desc":"Kursivoitu (Ctrl+I)","bold_desc":"Lihavoitu (Ctrl+B)",dd:"M\u00e4\u00e4rittelyn kuvaus",dt:"M\u00e4\u00e4rittelyn ehto ",samp:"Koodiesimerkki",code:"Koodi",blockquote:"Pitk\u00e4 lainaus",h6:"Otsikko 6",h5:"Otsikko 5",h4:"Otsikko 4",h3:"Otsikko 3",h2:"Otsikko 2",h1:"Otsikko 1",pre:"Esimuotoiltu (pre)",address:"Osoite",div:"Div",paragraph:"Kappale",block:"Muotoilu",fontdefault:"Kirjasin","font_size":"Kirjasinkoko","style_select":"Tyylit","more_colors":"Enemm\u00e4n v\u00e4rej\u00e4","toolbar_focus":"Siirry ty\u00f6kaluihin - Alt+Q, Siirry tekstieditoriin - Alt-Z, Siirry elementin polkuun - Alt-X",newdocument:"Haluatko varmasti tyhjent\u00e4\u00e4 kaiken sis\u00e4ll\u00f6n?",path:"Polku","clipboard_msg":"Kopioi/Leikkaa/Liit\u00e4 -painikkeet eiv\u00e4t toimi Mozilla ja Firefox -selaimilla. Voit kuitenkin k\u00e4ytt\u00e4\u00e4 n\u00e4pp\u00e4inyhdistelmi\u00e4 kopioimiseen (Ctrl+C), leikkaamiseen (Ctrl+X) ja liitt\u00e4miseen (Ctrl+V). Haluatko lis\u00e4\u00e4 tietoa?","blockquote_desc":"Pitk\u00e4 lainaus","help_desc":"Ohje","newdocument_desc":"Uusi tiedosto","image_props_desc":"Kuvan ominaisuudet","paste_desc":"Liit\u00e4","copy_desc":"Kopioi","cut_desc":"Leikkaa","anchor_desc":"Lis\u00e4\u00e4/Muokkaa ankkuri","visualaid_desc":"Suuntaviivat/N\u00e4kym\u00e4tt\u00f6m\u00e4t elementit","charmap_desc":"Lis\u00e4\u00e4 erikoismerkki","backcolor_desc":"Valitse taustan v\u00e4ri","forecolor_desc":"Valitse tekstin v\u00e4ri","custom1_desc":"Oma kuvauksesi t\u00e4h\u00e4n","removeformat_desc":"Poista muotoilu","hr_desc":"Lis\u00e4\u00e4 vaakasuora viivain","sup_desc":"Yl\u00e4indeksi","sub_desc":"Alaindeksi","code_desc":"Muokkaa HTML-koodia","cleanup_desc":"Siisti sekainen koodi","image_desc":"Lis\u00e4\u00e4/muuta kuva","unlink_desc":"Poista linkki","link_desc":"Lis\u00e4\u00e4/muuta linkki","redo_desc":"Tee uudelleen (Ctrl+Y)","undo_desc":"Peru (Ctrl+Z)","indent_desc":"Sisenn\u00e4","outdent_desc":"Loitonna","numlist_desc":"J\u00e4rjestetty lista","bullist_desc":"J\u00e4rjest\u00e4m\u00e4t\u00f6n lista","justifyfull_desc":"Tasattu","justifyright_desc":"Tasaus oikealle","justifycenter_desc":"Keskitetty","justifyleft_desc":"Tasaus vasemmalle","striketrough_desc":"Yliviivattu","help_shortcut":"Paina ALT F10 n\u00e4hd\u00e4ksesi ty\u00f6kalurivin. Paina ALT-0 n\u00e4hd\u00e4ksesi ohjeen.","rich_text_area":"Rikastettu tekstialue","shortcuts_desc":"Saavutettavuusohje",toolbar:"Ty\u00f6kalurivi","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/fi_dlg.js b/program/js/tiny_mce/themes/advanced/langs/fi_dlg.js
deleted file mode 100644
index 89c0b0bec..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/fi_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fi.advanced_dlg',{"link_list":"Linkkilista","link_is_external":"Antamasi osoite n\u00e4ytt\u00e4\u00e4 johtavan ulkopuoliselle sivustolle. Haluatko lis\u00e4t\u00e4 linkin eteen http://-etuliitteen? (suositus)","link_is_email":"Antamasi osoite n\u00e4ytt\u00e4\u00e4 olevan s\u00e4hk\u00f6postiosoite. Haluatko lis\u00e4t\u00e4 siihen mailto:-etuliitteen?","link_titlefield":"Otsikko","link_target_blank":"Avaa linkki uuteen ikkunaan","link_target_same":"Avaa linkki samassa ikkunassa","link_target":"Kohde","link_url":"Linkin osoite","link_title":"Lis\u00e4\u00e4/muuta linkki","image_align_right":"Oikealle","image_align_left":"Vasemmalle","image_align_textbottom":"Tekstin alaosaan","image_align_texttop":"Tekstin yl\u00e4osaan","image_align_bottom":"Alas","image_align_middle":"Keskelle","image_align_top":"Yl\u00f6s","image_align_baseline":"Tekstin tasossa","image_align":"Tasaus","image_hspace":"Vaakasuuntainen tila","image_vspace":"Pystysuuntainen tila","image_dimensions":"Mitat","image_alt":"Kuvan kuvaus","image_list":"Kuvalista","image_border":"Reunus","image_src":"Kuvan osoite","image_title":"Lis\u00e4\u00e4/muokkaa kuvaa","charmap_title":"Valitse erikoismerkki","colorpicker_name":"Nimi:","colorpicker_color":"V\u00e4ri:","colorpicker_named_title":"Nimetyt v\u00e4rit","colorpicker_named_tab":"Nimetty","colorpicker_palette_title":"V\u00e4ripaletti","colorpicker_palette_tab":"Paletti","colorpicker_picker_title":"V\u00e4rin valitsin","colorpicker_picker_tab":"Valitsin","colorpicker_title":"Valitse v\u00e4ri","code_wordwrap":"Automaattinen rivinvaihto","code_title":"HTML-koodin muokkaus","anchor_name":"Ankkurin nimi","anchor_title":"Liit\u00e4/muokkaa ankkuria","about_loaded":"Ladatut lis\u00e4osat","about_version":"Versio","about_author":"Kirjoittaja","about_plugin":"Lis\u00e4osa","about_plugins":"Lis\u00e4osat","about_license":"Lisenssi","about_help":"Ohje","about_general":"Tietoja","about_title":"Tietoja TinyMCE:st\u00e4","charmap_usage":"K\u00e4yt\u00e4 vasenta ja oikeata nuolin\u00e4pp\u00e4int\u00e4 navigointiin.","anchor_invalid":"Ole hyv\u00e4 ja anna hyv\u00e4ksytty ankkurin nimi.","accessibility_help":"Saavutettavuusohje","accessibility_usage_title":"Yleinen k\u00e4ytt\u00f6","invalid_color_value":"Virheellinen v\u00e4riarvo"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/fr.js b/program/js/tiny_mce/themes/advanced/langs/fr.js
deleted file mode 100644
index 1e91abbc1..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/fr.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fr.advanced',{"underline_desc":"Soulign\u00e9 (Ctrl+U)","italic_desc":"Italique (Ctrl+I)","bold_desc":"Gras (Ctrl+B)",dd:"D\u00e9finition du terme",dt:"Terme \u00e0 d\u00e9finir",samp:"Exemple de code",code:"Code",blockquote:"Bloc de citation",h6:"Titre 6",h5:"Titre 5",h4:"Titre 4",h3:"Titre 3",h2:"Titre 2",h1:"Titre 1",pre:"Pr\u00e9format\u00e9",address:"Adresse",div:"Div",paragraph:"Paragraphe",block:"Format",fontdefault:"Police","font_size":"Taille police","style_select":"Styles","more_colors":"Plus de couleurs","toolbar_focus":"Atteindre les boutons de l\'\u00e9diteur - Alt+Q, Aller \u00e0 l\'\u00e9diteur - Alt-Z, Aller au chemin de l\'\u00e9l\u00e9ment - Alt-X",newdocument:"\u00cates-vous s\u00fbr de vouloir effacer l\'int\u00e9gralit\u00e9 du document ?",path:"Chemin","clipboard_msg":"Les fonctions Copier/Couper/Coller ne sont pas valables sur Mozilla et Firefox.\nSouhaitez-vous avoir plus d\'informations sur ce sujet ?","blockquote_desc":"Citation","help_desc":"Aide","newdocument_desc":"Nouveau document","image_props_desc":"Propri\u00e9t\u00e9s de l\'image","paste_desc":"Coller","copy_desc":"Copier","cut_desc":"Couper","anchor_desc":"Ins\u00e9rer / \u00e9diter une ancre","visualaid_desc":"Activer / d\u00e9sactiver les guides et les \u00e9l\u00e9ments invisibles","charmap_desc":"Ins\u00e9rer des caract\u00e8res sp\u00e9ciaux","backcolor_desc":"Choisir la couleur de surlignage","forecolor_desc":"Choisir la couleur du texte","custom1_desc":"Votre description personnalis\u00e9e ici","removeformat_desc":"Supprimer le formatage","hr_desc":"Ins\u00e9rer un trait horizontal","sup_desc":"Exposant","sub_desc":"Indice","code_desc":"\u00c9diter le code source HTML","cleanup_desc":"Nettoyer le code","image_desc":"Ins\u00e9rer / \u00e9diter l\'image","unlink_desc":"Supprimer le lien","link_desc":"Ins\u00e9rer / \u00e9diter le lien","redo_desc":"R\u00e9tablir (Ctrl+Y)","undo_desc":"Annuler (Ctrl+Z)","indent_desc":"Indenter","outdent_desc":"Retirer l\'indentation","numlist_desc":"Liste num\u00e9rot\u00e9e","bullist_desc":"Liste \u00e0 puces","justifyfull_desc":"Justifi\u00e9","justifyright_desc":"Align\u00e9 \u00e0 droite","justifycenter_desc":"Centr\u00e9","justifyleft_desc":"Align\u00e9 \u00e0 gauche","striketrough_desc":"Barr\u00e9","help_shortcut":"Faites ALT-F10 pour acc\u00e9der \u00e0 la barre d\'outils. Faites ALT-0 pour acc\u00e9der \u00e0 l\'aide","rich_text_area":"Zone de texte enrichi","shortcuts_desc":"Aides \u00e0 l\'accessibilit\u00e9",toolbar:"Barre d\'outils","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/fr_dlg.js b/program/js/tiny_mce/themes/advanced/langs/fr_dlg.js
deleted file mode 100644
index 97b6b5292..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/fr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fr.advanced_dlg',{"link_list":"Liste de liens","link_is_external":"L\'URL que vous avez saisie semble \u00eatre une adresse web externe. Souhaitez-vous ajouter le pr\u00e9fixe \u00ab http:// \u00bb ?","link_is_email":"L\'URL que vous avez saisie semble \u00eatre une adresse e-mail, souhaitez-vous ajouter le pr\u00e9fixe \u00ab mailto: \u00bb ?","link_titlefield":"Titre","link_target_blank":"Ouvrir dans une nouvelle fen\u00eatre","link_target_same":"Ouvrir dans la m\u00eame fen\u00eatre","link_target":"Cible","link_url":"URL du lien","link_title":"Ins\u00e9rer / \u00e9diter un lien","image_align_right":"Droite (flottant)","image_align_left":"Gauche (flottant)","image_align_textbottom":"Texte en bas","image_align_texttop":"Texte en haut","image_align_bottom":"En bas","image_align_middle":"Au milieu","image_align_top":"En haut","image_align_baseline":"Normal","image_align":"Alignement","image_hspace":"Espacement horizontal","image_vspace":"Espacement vertical","image_dimensions":"Dimensions","image_alt":"Description de l\'image","image_list":"Liste d\'images","image_border":"Bordure","image_src":"URL de l\'image","image_title":"Ins\u00e9rer / \u00e9diter une image","charmap_title":"Choisir le caract\u00e8re \u00e0 ins\u00e9rer","colorpicker_name":"Nom :","colorpicker_color":"Couleur :","colorpicker_named_title":"Couleurs nomm\u00e9es","colorpicker_named_tab":"Noms","colorpicker_palette_title":"Couleurs de la palette","colorpicker_palette_tab":"Palette","colorpicker_picker_title":"Nuancier","colorpicker_picker_tab":"Nuancier","colorpicker_title":"Choisir une couleur","code_wordwrap":"Retour \u00e0 la ligne","code_title":"\u00c9diteur de source HTML","anchor_name":"Nom de l\'ancre","anchor_title":"Ins\u00e9rer / \u00e9diter une ancre","about_loaded":"Plugins charg\u00e9s","about_version":"Version","about_author":"Auteur","about_plugin":"Plugin","about_plugins":"Plugins","about_license":"Licence","about_help":"Aide","about_general":"\u00c0 propos","about_title":"\u00c0 propos de TinyMCE","charmap_usage":"Utilisez les fl\u00e8ches gauche et droite pour naviguer.","anchor_invalid":"Veuillez sp\u00e9cifier un nom d\'ancre valide.","accessibility_help":"Aide \u00e0 l\'accessibilit\u00e9","accessibility_usage_title":"Usage g\u00e9n\u00e9ral","invalid_color_value":"Valeur de couleur invalide"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/gl.js b/program/js/tiny_mce/themes/advanced/langs/gl.js
deleted file mode 100644
index cf00430ee..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/gl.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('gl.advanced',{"underline_desc":"Subli\u00f1ado (Ctrl+U)","italic_desc":"Cursiva (Ctrl+I)","bold_desc":"Negrita (Ctrl+B)",dd:"Descripci\u00f3n de definici\u00f3n",dt:"Termo de definici\u00f3n",samp:"Mostra de c\u00f3digo",code:"C\u00f3digo",blockquote:"Bloque de cita",h6:"Encabezamento 6",h5:"Encabezamento 5",h4:"Encabezamento 4",h3:"Encabezamento 3",h2:"Encabezamento 2",h1:"Encabezamento 1",pre:"Pre-formateado",address:"Enderezo",div:"Div",paragraph:"P\u00e1rrafo",block:"Formato",fontdefault:"Fonte","font_size":"Tama\u00f1o","style_select":"Estilos","more_colors":"M\u00e1is cores","toolbar_focus":"Ir \u00f3s bot\u00f3ns de ferramentas - Alt+Q, Ir \u00f3 editor - Alt-Z, Ir \u00e1 ruta do elemento - Alt-X",newdocument:"\u00bfSeguro que desexa limpar todo o contido?",path:"Ruta","clipboard_msg":"Copiar/Cortar/Pegar non est\u00e1 disponible en Mozilla e Firefox.\n\u00bfDesexa obter mais informaci\u00f3n sobre de este asunto?","blockquote_desc":"Cita","help_desc":"Axuda","newdocument_desc":"Novo documento","image_props_desc":"Propiedades de imaxe","paste_desc":"Pegar","copy_desc":"Copiar","cut_desc":"Cortar","anchor_desc":"Insertar/editar \u00e1ncora","visualaid_desc":"Mostrar/ocultar li\u00f1a de gu\u00eda/elementos invisibres","charmap_desc":"Insertar caracteres persoalizados","backcolor_desc":"Seleccionar cor do fondo","forecolor_desc":"Seleccionar cor do texto","custom1_desc":"A s\u00faa descripci\u00f3n persoal aqu\u00ed","removeformat_desc":"quitar formato","hr_desc":"Insertar regra horizontal","sup_desc":"Super\u00edndice","sub_desc":"Sub\u00edndice","code_desc":"Editar c\u00f3digo HTML","cleanup_desc":"Limpiar lixo no c\u00f3digo","image_desc":"Insertar/editar imaxe","unlink_desc":"Quitar hiperv\u00ednculo","link_desc":"Insertar/editar hiperv\u00ednculo","redo_desc":"Re-facer (Ctrl+Y)","undo_desc":"Desfacer (Ctrl+Z)","indent_desc":"Aumentar sangr\u00eda","outdent_desc":"Reducir sangr\u00eda","numlist_desc":"Lista ordenada","bullist_desc":"Lista desordenada","justifyfull_desc":"Xustificar","justifyright_desc":"Ali\u00f1ar \u00e1 dereita","justifycenter_desc":"Ali\u00f1ar \u00f3 centro","justifyleft_desc":"Ali\u00f1ar \u00e1 esquerda","striketrough_desc":"Tachado","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":"","help_shortcut":"Press ALT-F10 for toolbar. Press ALT-0 for help","rich_text_area":"Rich Text Area","shortcuts_desc":"Accessability Help",toolbar:"Toolbar"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/gl_dlg.js b/program/js/tiny_mce/themes/advanced/langs/gl_dlg.js
deleted file mode 100644
index 279bc2993..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/gl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('gl.advanced_dlg',{"link_list":"Lista de hiperv\u00ednculos","link_is_external":"A URL introducida semella ser un v\u00ednculo externo, \u00bfDesexa engadi-lo prefixo necesario http://?","link_is_email":"A URL introducida semella ser un enderezo de e-mail, \u00bfDesexa engadi-lo prefixo necesario mailto:?","link_titlefield":"T\u00edtulo","link_target_blank":"Abrir v\u00ednculo nunha vent\u00e1 nova","link_target_same":"Abrir v\u00ednculo na mesma vent\u00e1","link_target":"Obxetivo","link_url":"URL do enlace","link_title":"Insertar/editar enlace","image_align_right":"Dereita","image_align_left":"Esquerda","image_align_textbottom":"Texto abaixo","image_align_texttop":"Texto arriba","image_align_bottom":"Abaixo","image_align_middle":"Medio","image_align_top":"Arriba","image_align_baseline":"Li\u00f1a base","image_align":"Ali\u00f1aci\u00f3n","image_hspace":"Espacio horizontal","image_vspace":"Espacio vertical","image_dimensions":"Dimensi\u00f3n","image_alt":"Descripci\u00f3n da imaxe","image_list":"Lista de Imaxes","image_border":"Borde","image_src":"URL da imaxe","image_title":"Insertar/editar imaxe","charmap_title":"Seleccionar caracter personalizado","colorpicker_name":"Nome:","colorpicker_color":"Cor:","colorpicker_named_title":"Cores nomeados","colorpicker_named_tab":"Nomeados","colorpicker_palette_title":"Paleta de cores","colorpicker_palette_tab":"Paleta","colorpicker_picker_title":"Selector de cores","colorpicker_picker_tab":"Selector","colorpicker_title":"Seleccionar cor","code_wordwrap":"Cortar li\u00f1as autom\u00e1ticamente","code_title":"Editor HTML","anchor_name":"Nome da \u00e1ncora","anchor_title":"Insertar/editar \u00e1ncora","about_loaded":"Comprementos cargados","about_version":"Versi\u00f3n","about_author":"Autor","about_plugin":"Compremento","about_plugins":"Comprementos","about_license":"Licencia","about_help":"Axuda","about_general":"Sobre","about_title":"Sobre TinyMCE","anchor_invalid":"Please specify a valid anchor name.","accessibility_help":"Accessibility Help","accessibility_usage_title":"General Usage"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/he.js b/program/js/tiny_mce/themes/advanced/langs/he.js
deleted file mode 100644
index 2c50a4b61..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/he.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('he.advanced',{"underline_desc":"\u05e7\u05d5 \u05ea\u05d7\u05ea\u05d5\u05df (Ctrl+U)","italic_desc":"\u05e0\u05d8\u05d5\u05d9 (Ctrl+I)","bold_desc":"\u05de\u05d5\u05d3\u05d2\u05e9 (Ctrl+B)",dd:"\u05d4\u05d2\u05d3\u05e8\u05ea \u05d4\u05de\u05d5\u05e9\u05d2",dt:"\u05de\u05d5\u05e9\u05d2",samp:"\u05d3\u05d5\u05d2\u05de\u05ea \u05e7\u05d5\u05d3",code:"\u05e7\u05d5\u05d3",blockquote:"\u05e6\u05d9\u05d8\u05d5\u05d8 \u05e7\u05d8\u05e2",h6:"\u05db\u05d5\u05ea\u05e8\u05ea 6",h5:"\u05db\u05d5\u05ea\u05e8\u05ea 5",h4:"\u05db\u05d5\u05ea\u05e8\u05ea 4",h3:"\u05db\u05d5\u05ea\u05e8\u05ea 3",h2:"\u05db\u05d5\u05ea\u05e8\u05ea 2",h1:"\u05db\u05d5\u05ea\u05e8\u05ea 1",pre:"Preformatted",address:"\u05db\u05ea\u05d5\u05d1\u05ea",div:"Div",paragraph:"\u05e4\u05e1\u05e7\u05d4",block:"\u05e2\u05d9\u05e6\u05d5\u05d1",fontdefault:"\u05d2\u05d5\u05e4\u05df","font_size":"\u05d2\u05d5\u05d3\u05dc \u05d2\u05d5\u05e4\u05df","style_select":"\u05e1\u05d2\u05e0\u05d5\u05e0\u05d5\u05ea","more_colors":"\u05e2\u05d5\u05d3 \u05e6\u05d1\u05e2\u05d9\u05dd","toolbar_focus":"\u05d4\u05e2\u05d1\u05e8\u05d4 \u05dc\u05e1\u05e8\u05d2\u05dc \u05d4\u05db\u05dc\u05d9\u05dd - Alt+Q, \u05d4\u05e2\u05d1\u05e8\u05d4 \u05dc\u05de\u05e2\u05d1\u05d3 \u05ea\u05de\u05dc\u05d9\u05dc\u05d9\u05dd - Alt-Z, \u05d4\u05e2\u05d1\u05e8\u05d4 \u05dc\u05e0\u05ea\u05d9\u05d1 \u05d4\u05d0\u05dc\u05de\u05d8\u05d9\u05dd - Alt-X",newdocument:"\u05d4\u05d0\u05dd \u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05de\u05d7\u05d5\u05e7 \u05d0\u05ea \u05db\u05dc \u05d4\u05ea\u05d5\u05db\u05df?",path:"path","clipboard_msg":"\u05d4\u05e2\u05ea\u05e7/\u05d2\u05d6\u05d5\u05e8/\u05d4\u05d3\u05d1\u05e7 \u05dc\u05d0 \u05d6\u05de\u05d9\u05e0\u05d9\u05dd \u05d1 Mozilla \u05d5\u05d1-Firefox.\n \u05d4\u05d0\u05dd \u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05e7\u05d1\u05dc \u05de\u05d9\u05d3\u05e2 \u05e0\u05d5\u05e1\u05e3 \u05e2\u05dc \u05d4\u05e0\u05d5\u05e9\u05d0?","blockquote_desc":"\u05e6\u05d9\u05d8\u05d5\u05d8","help_desc":"\u05e2\u05d6\u05e8\u05d4","newdocument_desc":"\u05de\u05e1\u05de\u05da \u05d7\u05d3\u05e9","image_props_desc":"\u05de\u05d0\u05e4\u05d9\u05d9\u05e0\u05d9 \u05d4\u05ea\u05de\u05d5\u05e0\u05d4","paste_desc":"\u05d4\u05d3\u05d1\u05e7\u05d4","copy_desc":"\u05d4\u05e2\u05ea\u05e7\u05d4","cut_desc":"\u05d2\u05d6\u05d9\u05e8\u05d4","anchor_desc":"\u05d4\u05d5\u05e1\u05e4\u05ea/\u05e2\u05e8\u05d9\u05db\u05ea \u05e1\u05d9\u05de\u05e0\u05d9\u05d4","visualaid_desc":"\u05d4\u05e6\u05d2\u05d4 \u05d0\u05d5 \u05d4\u05e1\u05ea\u05e8\u05d4 \u05e9\u05dc \u05e1\u05d9\u05de\u05d5\u05e0\u05d9 \u05e2\u05d9\u05e6\u05d5\u05d1","charmap_desc":"\u05d4\u05d5\u05e1\u05e4\u05ea \u05e1\u05d9\u05de\u05df","backcolor_desc":"\u05d1\u05d7\u05d9\u05e8\u05ea \u05e6\u05d1\u05e2 \u05e8\u05e7\u05e2","forecolor_desc":"\u05d1\u05d7\u05d9\u05e8\u05ea \u05e6\u05d1\u05e2 \u05d2\u05d5\u05e4\u05df","custom1_desc":"\u05d4\u05ea\u05d0\u05d5\u05e8 \u05e9\u05dc\u05da \u05db\u05d0\u05d5","removeformat_desc":"\u05d4\u05e1\u05e8\u05ea \u05e2\u05d9\u05e6\u05d5\u05d1","hr_desc":"\u05d4\u05d5\u05e1\u05e4\u05ea \u05e7\u05d5 \u05de\u05e4\u05e8\u05d9\u05d3","sup_desc":"\u05db\u05ea\u05d1 \u05ea\u05d7\u05ea\u05d9","sub_desc":"\u05db\u05ea\u05d1 \u05e2\u05d9\u05dc\u05d9","code_desc":"\u05e2\u05e8\u05d9\u05db\u05ea \u05e7\u05d5\u05d3 HTML","cleanup_desc":"\u05e0\u05d9\u05e7\u05d5\u05d9 \u05e7\u05d5\u05d3","image_desc":"\u05d4\u05d5\u05e1\u05e4\u05d4/\u05e2\u05e8\u05d9\u05db\u05ea \u05d3\u05e3 \u05ea\u05de\u05d5\u05e0\u05d4","unlink_desc":"\u05d4\u05e1\u05e8\u05ea \u05e7\u05d9\u05e9\u05d5\u05e8","link_desc":"\u05d4\u05d5\u05e1\u05e4\u05ea/\u05e2\u05e8\u05d9\u05db\u05ea \u05e7\u05d9\u05e9\u05d5\u05e8","redo_desc":"\u05d7\u05d6\u05e8\u05d4 \u05e2\u05dc \u05e4\u05e2\u05d5\u05dc\u05d4 (Ctrl+Y)","undo_desc":"\u05d1\u05d9\u05d8\u05d5\u05dc \u05e4\u05e2\u05d5\u05dc\u05d4 (Ctrl+Z)","indent_desc":"\u05d4\u05e7\u05d8\u05e0\u05ea \u05db\u05e0\u05d9\u05e1\u05d4","outdent_desc":"\u05d4\u05d2\u05d3\u05dc\u05ea \u05db\u05e0\u05d9\u05e1\u05d4","numlist_desc":"\u05de\u05e1\u05e4\u05d5\u05e8","bullist_desc":"\u05ea\u05d1\u05dc\u05d9\u05d8\u05d9\u05dd","justifyfull_desc":"\u05d9\u05d9\u05e9\u05d5\u05e8 \u05dc\u05e9\u05e0\u05d9 \u05d4\u05e6\u05d3\u05d3\u05d9\u05dd","justifyright_desc":"\u05d9\u05d9\u05e9\u05d5\u05e8 \u05d8\u05e7\u05e1\u05d8 \u05dc\u05d9\u05de\u05d9\u05df","justifycenter_desc":"\u05de\u05d9\u05e8\u05db\u05d5\u05d6 \u05d8\u05e7\u05e1\u05d8","justifyleft_desc":"\u05d9\u05d9\u05e9\u05d5\u05e8 \u05d8\u05e7\u05e1\u05d8 \u05dc\u05e9\u05de\u05d0\u05dc","striketrough_desc":"\u05e7\u05d5 \u05d7\u05d5\u05e6\u05d4","help_shortcut":"\u05dc\u05d7\u05e6/\u05d9 ALT-F10 \u05dc\u05e1\u05e8\u05d2\u05dc \u05d4\u05db\u05dc\u05d9\u05dd. \u05dc\u05d7\u05e6/\u05d9 ALT-0 \u05dc\u05e2\u05d6\u05e8\u05d4","rich_text_area":"\u05d0\u05d6\u05d5\u05e8 \u05e2\u05e8\u05d9\u05db\u05ea \u05d8\u05e7\u05e1\u05d8 \u05e2\u05e9\u05d9\u05e8","shortcuts_desc":"\u05e2\u05d6\u05e8\u05ea \u05d2\u05d9\u05e9\u05d4",toolbar:"\u05e1\u05e8\u05d2\u05dc \u05db\u05dc\u05d9\u05dd","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/he_dlg.js b/program/js/tiny_mce/themes/advanced/langs/he_dlg.js
deleted file mode 100644
index c27a31a22..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/he_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('he.advanced_dlg',{"link_list":"\u05e8\u05e9\u05d9\u05de\u05ea \u05e7\u05d9\u05e9\u05d5\u05e8\u05d9\u05dd","link_is_external":"\u05db\u05ea\u05d5\u05d1\u05ea \u05d4-URL \u05e9\u05d4\u05d5\u05db\u05e0\u05e1\u05d4 \u05d4\u05d9\u05d0 \u05db\u05db\u05dc \u05d4\u05e0\u05e8\u05d0\u05d4 \u05e7\u05d9\u05e9\u05d5\u05e8 \u05d7\u05d9\u05e6\u05d5\u05e0\u05d9 \u05d4\u05d0\u05dd \u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05d4\u05d5\u05e1\u05d9\u05e3 \u05d0\u05ea \u05d4\u05e7\u05d9\u05d3\u05d5\u05de\u05ea http:// \u05d4\u05e0\u05d3\u05e8\u05e9\u05ea?","link_is_email":"\u05db\u05ea\u05d5\u05d1\u05ea \u05d4-URL \u05e9\u05d4\u05d5\u05db\u05e0\u05e1\u05d4 \u05d4\u05d9\u05d0 \u05db\u05db\u05dc \u05d4\u05e0\u05e8\u05d0\u05d4 \u05db\u05ea\u05d5\u05d1\u05ea \u05de\u05d9\u05d9\u05dc \u05d4\u05d0\u05dd \u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05d4\u05d5\u05e1\u05d9\u05e3 \u05d0\u05ea \u05d4\u05e7\u05d9\u05d3\u05d5\u05de\u05ea MAILTO \u05d4\u05e0\u05d3\u05e8\u05e9\u05ea?","link_titlefield":"\u05db\u05d5\u05ea\u05e8\u05ea","link_target_blank":"\u05e4\u05ea\u05d7 \u05e7\u05d9\u05e9\u05d5\u05e8 \u05d1\u05d7\u05dc\u05d5\u05df \u05d7\u05d3\u05e9","link_target_same":"\u05e4\u05ea\u05d7 \u05e7\u05d9\u05e9\u05d5\u05e8 \u05d1\u05d0\u05d5\u05ea\u05d5 \u05d7\u05dc\u05d5\u05df","link_target":"\u05d9\u05e2\u05d3","link_url":"\u05db\u05ea\u05d5\u05d1\u05ea \u05d4\u05e7\u05d9\u05e9\u05d5\u05e8","link_title":"\u05d4\u05d5\u05e1\u05e4\u05d4/\u05e2\u05e8\u05d9\u05db\u05ea \u05e7\u05d9\u05e9\u05d5\u05e8","image_align_right":"\u05d9\u05de\u05d9\u05df","image_align_left":"\u05e9\u05de\u05d0\u05dc","image_align_textbottom":"\u05e7\u05e6\u05d4 \u05d4\u05ea\u05d7\u05ea\u05d5\u05df \u05e9\u05dc \u05d4\u05d8\u05e7\u05e1\u05d8","image_align_texttop":"\u05e7\u05e6\u05d4 \u05d4\u05e2\u05dc\u05d9\u05d5\u05df \u05e9\u05dc \u05d4\u05d8\u05e7\u05e1\u05d8","image_align_bottom":"\u05e7\u05e6\u05d4 \u05d4\u05ea\u05d7\u05ea\u05d5\u05df","image_align_middle":"\u05d0\u05de\u05e6\u05e2","image_align_top":"\u05e7\u05e6\u05d4 \u05d4\u05e2\u05dc\u05d9\u05d5\u05df","image_align_baseline":"\u05e7\u05d5 \u05d4\u05d4\u05ea\u05d7\u05dc\u05d4","image_align":"\u05d9\u05d9\u05e9\u05d5\u05e8","image_hspace":"\u05e8\u05d5\u05d5\u05d7 \u05d0\u05d5\u05e4\u05e7\u05d9","image_vspace":"\u05e8\u05d5\u05d5\u05d7 \u05d0\u05e0\u05db\u05d9","image_dimensions":"\u05d2\u05d5\u05d3\u05dc","image_alt":"\u05ea\u05d9\u05d0\u05d5\u05e8","image_list":"\u05e8\u05e9\u05d9\u05de\u05d4","image_border":"\u05d2\u05d1\u05d5\u05dc","image_src":"\u05db\u05ea\u05d5\u05d1\u05ea:","image_title":"\u05d4\u05d5\u05e1\u05e4\u05d4/\u05e2\u05e8\u05d9\u05db\u05ea \u05ea\u05de\u05d5\u05e0\u05d4","charmap_title":"\u05d1\u05d7\u05d9\u05e8\u05ea \u05e1\u05d9\u05de\u05df","colorpicker_name":"\u05e9\u05dd:","colorpicker_color":"\u05e6\u05d1\u05e2:","colorpicker_named_title":"\u05e6\u05d1\u05e2\u05d9\u05dd \u05d1\u05e2\u05dc\u05d9 \u05e9\u05de\u05d5\u05ea","colorpicker_named_tab":"\u05e6\u05d1\u05e2\u05d9\u05dd \u05d1\u05e2\u05dc\u05d9 \u05e9\u05de\u05d5\u05ea","colorpicker_palette_title":"\u05dc\u05d5\u05d7 \u05e6\u05d1\u05e2\u05d9\u05dd","colorpicker_palette_tab":"\u05dc\u05d5\u05d7 \u05e6\u05d1\u05e2\u05d9\u05dd","colorpicker_picker_title":"\u05d1\u05d5\u05e8\u05e8 \u05d4\u05e6\u05d1\u05e2\u05d9\u05dd","colorpicker_picker_tab":"\u05d1\u05d5\u05e8\u05e8","colorpicker_title":"\u05d1\u05d7\u05d9\u05e8\u05ea \u05e6\u05d1\u05e2","code_wordwrap":"\u05d2\u05dc\u05d9\u05e9\u05ea \u05d8\u05e7\u05e1\u05d8","code_title":"\u05e2\u05d5\u05e8\u05da \u05d4-HTML","anchor_name":"\u05e9\u05dd \u05d4\u05e1\u05d9\u05de\u05e0\u05d9\u05d4","anchor_title":"\u05d4\u05d5\u05e1\u05e4\u05d4/\u05e2\u05e8\u05d9\u05db\u05ea \u05e1\u05d9\u05de\u05e0\u05d9\u05d4","about_loaded":"\u05ea\u05d5\u05e1\u05e4\u05d5\u05ea \u05e4\u05e2\u05d9\u05dc\u05d5\u05ea","about_version":"\u05d2\u05d9\u05e8\u05e1\u05d4","about_author":"\u05d9\u05d5\u05e6\u05e8","about_plugin":"\u05ea\u05d5\u05e1\u05e4\u05ea","about_plugins":"\u05ea\u05d5\u05e1\u05e4\u05d5\u05ea","about_license":"\u05e8\u05e9\u05d9\u05d5\u05df","about_help":"\u05e2\u05d6\u05e8\u05d4","about_general":"\u05d0\u05d5\u05d3\u05d5\u05ea","about_title":"\u05d0\u05d5\u05d3\u05d5\u05ea TinyMCE","charmap_usage":"\u05d4\u05e9\u05ea\u05de\u05e9/\u05d9 \u05d1\u05d7\u05d9\u05e6\u05d9\u05dd \u05dc\u05e0\u05d9\u05d5\u05d5\u05d8 \u05d9\u05de\u05d9\u05e0\u05d4 \u05d5\u05e9\u05de\u05d0\u05dc\u05d4","anchor_invalid":"\u05e0\u05d0 \u05dc\u05e6\u05d9\u05d9\u05df \u05e9\u05dd \u05d7\u05d5\u05e7\u05d9","accessibility_help":"\u05e2\u05d6\u05e8\u05d4 \u05d1\u05e0\u05d2\u05d9\u05e9\u05d5\u05ea","accessibility_usage_title":"\u05e9\u05d9\u05de\u05d5\u05e9 \u05db\u05dc\u05dc\u05d9","invalid_color_value":"\u05e2\u05e8\u05da \u05d4\u05e6\u05d1\u05e2 \u05dc\u05d0 \u05ea\u05e7\u05d9\u05df"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/hi.js b/program/js/tiny_mce/themes/advanced/langs/hi.js
deleted file mode 100644
index 845102ad2..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/hi.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hi.advanced',{"underline_desc":"Underline (Ctrl+U)","italic_desc":"Italic (Ctrl+I)","bold_desc":"Bold (Ctrl+B)",dd:"Definition description",dt:"Definition term ",samp:"Code sample",code:"Code",blockquote:"Blockquote",h6:"Heading 6",h5:"Heading 5",h4:"Heading 4",h3:"Heading 3",h2:"Heading 2",h1:"Heading 1",pre:"Preformatted",address:"Address",div:"Div",paragraph:"Paragraph",block:"Format",fontdefault:"Font family","font_size":"Font size","style_select":"Styles","more_colors":"More colors","toolbar_focus":"Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X",newdocument:"Are you sure you want clear all contents?",path:"Path","clipboard_msg":"Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?","blockquote_desc":"Blockquote","help_desc":"Help","newdocument_desc":"New document","image_props_desc":"Image properties","paste_desc":"Paste","copy_desc":"Copy","cut_desc":"Cut","anchor_desc":"Insert/edit anchor","visualaid_desc":"Toggle guidelines/invisible elements","charmap_desc":"Insert custom character","backcolor_desc":"Select background color","forecolor_desc":"Select text color","custom1_desc":"Your custom description here","removeformat_desc":"Remove formatting","hr_desc":"Insert horizontal ruler","sup_desc":"Superscript","sub_desc":"Subscript","code_desc":"Edit HTML Source","cleanup_desc":"Cleanup messy code","image_desc":"Insert/edit image","unlink_desc":"Unlink","link_desc":"Insert/edit link","redo_desc":"Redo (Ctrl+Y)","undo_desc":"Undo (Ctrl+Z)","indent_desc":"Indent","outdent_desc":"Outdent","numlist_desc":"Ordered list","bullist_desc":"Unordered list","justifyfull_desc":"Align full","justifyright_desc":"Align right","justifycenter_desc":"Align center","justifyleft_desc":"Align left","striketrough_desc":"Strikethrough","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":"","help_shortcut":"Press ALT-F10 for toolbar. Press ALT-0 for help","rich_text_area":"Rich Text Area","shortcuts_desc":"Accessability Help",toolbar:"Toolbar"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/hi_dlg.js b/program/js/tiny_mce/themes/advanced/langs/hi_dlg.js
deleted file mode 100644
index 023fa2d4c..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/hi_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hi.advanced_dlg',{"link_list":"Link list","link_is_external":"The URL you entered seems to external link, do you want to add the required http:// prefix?","link_is_email":"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?","link_titlefield":"Title","link_target_blank":"Open link in a new window","link_target_same":"Open link in the same window","link_target":"Target","link_url":"Link URL","link_title":"Insert/edit link","image_align_right":"Right","image_align_left":"Left","image_align_textbottom":"Text bottom","image_align_texttop":"Text top","image_align_bottom":"Bottom","image_align_middle":"Middle","image_align_top":"Top","image_align_baseline":"Baseline","image_align":"Alignment","image_hspace":"Horizontal space","image_vspace":"Vertical space","image_dimensions":"Dimensions","image_alt":"Image description","image_list":"Image list","image_border":"Border","image_src":"Image URL","image_title":"Insert/edit image","charmap_title":"Select custom character","colorpicker_name":"Name:","colorpicker_color":"Color:","colorpicker_named_title":"Named colors","colorpicker_named_tab":"Named","colorpicker_palette_title":"Palette colors","colorpicker_palette_tab":"Palette","colorpicker_picker_title":"Color picker","colorpicker_picker_tab":"Picker","colorpicker_title":"Select a color","code_wordwrap":"Word wrap","code_title":"HTML Source Editor","anchor_name":"Anchor name","anchor_title":"Insert/edit anchor","about_loaded":"Loaded plugins","about_version":"Version","about_author":"Author","about_plugin":"Plugin","about_plugins":"Plugins","about_license":"License","about_help":"Help","about_general":"About","about_title":"About TinyMCE","anchor_invalid":"Please specify a valid anchor name.","accessibility_help":"Accessibility Help","accessibility_usage_title":"General Usage"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/hr.js b/program/js/tiny_mce/themes/advanced/langs/hr.js
deleted file mode 100644
index 50521bce2..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/hr.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hr.advanced',{"underline_desc":"Podcrtano (Ctrl U)","italic_desc":"Uko\u0161eno (Ctrl I)","bold_desc":"Podebljano (Ctrl B)",dd:"Opis definicije",dt:"Definicija pojma",samp:"Primjer koda",code:"Kod",blockquote:"Citat",h6:"Naslov 6",h5:"Naslov 5",h4:"Naslov 4",h3:"Naslov 3",h2:"Naslov 2",h1:"Naslov 1",pre:"Oblikovano",address:"Adresa",div:"Div",paragraph:"Paragraf",block:"Format",fontdefault:"Vrsta fonta","font_size":"Veli\u010dina fonta","style_select":"Stilovi","more_colors":"Vi\u0161e boja","toolbar_focus":"Prije\u0111i na alatnu traku - Alt Q, prije\u0111i na ure\u0111iva\u010d - Alt-Z, prije\u0111i na putanju elementa - Alt-X",newdocument:"Jeste li sigurni da \u017eelite izbrisati cijeli sadr\u017eaj?",path:"Putanja","clipboard_msg":"Kopiraj/Izre\u017ei/Zalijepi nije dostupno u Mozilla i Firefox preglednicima. Vi\u0161e informacija?","blockquote_desc":"Citiraj","help_desc":"Pomo\u0107","newdocument_desc":"Novi dokument","image_props_desc":"Svojstva slike","paste_desc":"Zalijepi","copy_desc":"Kopiraj","cut_desc":"Izre\u017ei","anchor_desc":"Umetni/uredi sidro","visualaid_desc":"Vodilice/nevidljivi elementi","charmap_desc":"Umetni vlastiti znak","backcolor_desc":"Odaberite boju pozadine","forecolor_desc":"Odaberite boju teksta","custom1_desc":"Vlastiti opis ovdje","removeformat_desc":"Poni\u0161ti oblikovanje","hr_desc":"Umetni vodoravnu crtu","sup_desc":"Eksponent","sub_desc":"Indeks","code_desc":"Uredi HTML izvor","cleanup_desc":"Po\u010disti neuredan kod","image_desc":"Umetni/uredi sliku","unlink_desc":"Poni\u0161ti link","link_desc":"Umetni/uredi link","redo_desc":"Ponovi (Ctrl+Y)","undo_desc":"Poni\u0161ti (Ctrl+Z)","indent_desc":"Izvuci","outdent_desc":"Uvuci","numlist_desc":"Numerirana lista","bullist_desc":"Nenumerirana lista","justifyfull_desc":"Poravnaj obostrano","justifyright_desc":"Poravnaj desno","justifycenter_desc":"Centriraj","justifyleft_desc":"Poravnaj lijevo","striketrough_desc":"Precrtano","help_shortcut":"Pritisni ALT F10 za alatnu traku, ALT 0 za pomo\u0107.",toolbar:"Alatna traka","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":"","rich_text_area":"Rich Text Area","shortcuts_desc":"Accessability Help"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/hr_dlg.js b/program/js/tiny_mce/themes/advanced/langs/hr_dlg.js
deleted file mode 100644
index 515db71ec..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/hr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hr.advanced_dlg',{"link_list":"Lista linkova","link_is_external":"URL koji ste unijeli izgleda kao vanjski link, \u017eelite li dodati potrebni http:// prefiks?","link_is_email":"URL koji ste unijeli izgleda kao e-mail adresa, \u017eelite li dodati potrebni mailto: prefiks?","link_titlefield":"Naslov","link_target_blank":"Otvori link u novom prozoru","link_target_same":"Otvori link u istom prozoru","link_target":"Meta","link_url":"URL linka","link_title":"Umetni/uredi link","image_align_right":"Na desno","image_align_left":"Na lijevo","image_align_textbottom":"Na dno teksta","image_align_texttop":"Na vrh teksta","image_align_bottom":"Na dno","image_align_middle":"Na sredinu","image_align_top":"Na vrh","image_align_baseline":"Osnovna linija","image_align":"Poravnavanje","image_hspace":"Vodoravni razmak","image_vspace":"Okomiti razmak","image_dimensions":"Dimenzije","image_alt":"Opis slike","image_list":"Lista slika","image_border":"Obrub","image_src":"URL slike","image_title":"Umetni/uredi sliku","charmap_title":"Odaberite znak","colorpicker_name":"Naziv:","colorpicker_color":"Boja:","colorpicker_named_title":"Imenovane boje","colorpicker_named_tab":"Imenovano","colorpicker_palette_title":"Paleta boja","colorpicker_palette_tab":"Paleta","colorpicker_picker_title":"Odabir boje","colorpicker_picker_tab":"Odabir","colorpicker_title":"Izbor boje","code_wordwrap":"Omatanje teksta","code_title":"HTML ure\u0111iva\u010d","anchor_name":"Ime sidra","anchor_title":"Umetni/uredi sidro","about_loaded":"Postoje\u0107i dodaci","about_version":"Verzija","about_author":"Autor","about_plugin":"Dodatak","about_plugins":"Dodaci","about_license":"Licenca","about_help":"Pomo\u0107","about_general":"O programu","about_title":"TinyMCE","anchor_invalid":"Molimo unesite ispravno ime sidra","accessibility_help":"Accessibility Help","accessibility_usage_title":"General Usage"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/hu.js b/program/js/tiny_mce/themes/advanced/langs/hu.js
deleted file mode 100644
index b5a0cbd5f..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/hu.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hu.advanced',{"underline_desc":"Al\u00e1h\u00fazott (Ctrl+U)","italic_desc":"D\u0151lt (Ctrl+I)","bold_desc":"F\u00e9lk\u00f6v\u00e9r (Ctrl+B)",dd:"Defin\u00edci\u00f3 a defin\u00edci\u00f3s list\u00e1ban",dt:"Defini\u00e1lt kifejez\u00e9s a defin\u00edci\u00f3s list\u00e1ban",samp:"K\u00f3d minta",code:"K\u00f3d",blockquote:"Id\u00e9zet",h6:"C\u00edmsor 6",h5:"C\u00edmsor 5",h4:"C\u00edmsor 4",h3:"C\u00edmsor 3",h2:"C\u00edmsor 2",h1:"C\u00edmsor 1",pre:"El\u0151form\u00e1zott",address:"C\u00edm",div:"Div",paragraph:"Bekezd\u00e9s",block:"Form\u00e1tum",fontdefault:"Bet\u0171t\u00edpus","font_size":"Bet\u0171m\u00e9ret","style_select":"St\u00edlusok","image_delta_height":"","image_delta_width":"","more_colors":"Tov\u00e1bbi sz\u00ednek","toolbar_focus":"Eszk\u00f6zgombokra ugr\u00e1s - Alt+Q, Szerkeszt\u0151h\u00f6z ugr\u00e1s - Alt-Z, Elem\u00fatvonalhoz ugr\u00e1s - Alt-X",newdocument:"Biztosan t\u00f6rli az eddigi tartalmat?",path:"\u00datvonal","clipboard_msg":"A M\u00e1sol\u00e1s/Kiv\u00e1g\u00e1s/Besz\u00far\u00e1s funkci\u00f3k nem \u00e9rhet\u0151ek el Mozilla \u00e9s Firefox alatt. Szeretne t\u00f6bbet megtudni err\u0151l?","blockquote_desc":"Id\u00e9zet","help_desc":"Seg\u00edts\u00e9g","newdocument_desc":"\u00daj dokumentum","image_props_desc":"K\u00e9p tulajdons\u00e1gai","paste_desc":"Besz\u00far\u00e1s","copy_desc":"M\u00e1sol\u00e1s","cut_desc":"Kiv\u00e1g\u00e1s","anchor_desc":"Horgony besz\u00far\u00e1sa/szerkeszt\u00e9se","visualaid_desc":"Vezet\u0151vonalak/nem l\u00e1that\u00f3 elemek ki-/bekapcsol\u00e1sa","charmap_desc":"Speci\u00e1lis karakter besz\u00far\u00e1sa","backcolor_desc":"H\u00e1tt\u00e9rsz\u00edn v\u00e1laszt\u00e1sa","forecolor_desc":"Sz\u00f6vegsz\u00edn v\u00e1laszt\u00e1sa","custom1_desc":"Az \u00f6n egyedi le\u00edr\u00e1sa","removeformat_desc":"Form\u00e1z\u00e1s elt\u00e1vol\u00edt\u00e1sa","hr_desc":"V\u00edzszintes elv\u00e1laszt\u00f3 vonal besz\u00far\u00e1sa","sup_desc":"Fels\u0151 index","sub_desc":"Als\u00f3 index","code_desc":"HTML forr\u00e1s szerkeszt\u00e9se","cleanup_desc":"Minden form\u00e1z\u00e1s elt\u00e1vol\u00edt\u00e1sa","image_desc":"K\u00e9p besz\u00far\u00e1sa/szerkeszt\u00e9se","unlink_desc":"Link elt\u00e1vol\u00edt\u00e1sa","link_desc":"Link besz\u00far\u00e1sa/szerkeszt\u00e9se","redo_desc":"M\u00e9gis v\u00e9grehajt (Ctrl+Y)","undo_desc":"Visszavon\u00e1s (Ctrl+Z)","indent_desc":"Beh\u00faz\u00e1s n\u00f6vel\u00e9se","outdent_desc":"Beh\u00faz\u00e1s cs\u00f6kkent\u00e9se","numlist_desc":"Rendezett lista","bullist_desc":"Rendezetlen lista","justifyfull_desc":"Sorkiz\u00e1rt","justifyright_desc":"Jobbra z\u00e1rt","justifycenter_desc":"K\u00f6z\u00e9pre z\u00e1rt","justifyleft_desc":"Balra z\u00e1rt","striketrough_desc":"\u00c1th\u00fazott","help_shortcut":"Ugr\u00e1s az eszk\u00f6zt\u00e1rhoz: ALT-F10. Seg\u00edts\u00e9g: ALT-0.","rich_text_area":"Rich Text ter\u00fclet","shortcuts_desc":"El\u00e9rhet\u0151s\u00e9g s\u00fag\u00f3",toolbar:"Eszk\u00f6zt\u00e1r","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":""}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/hu_dlg.js b/program/js/tiny_mce/themes/advanced/langs/hu_dlg.js
deleted file mode 100644
index 33c197db6..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/hu_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hu.advanced_dlg',{"link_list":"Link lista","link_is_external":"A be\u00edrt internet c\u00edm k\u00fcls\u0151 hivatkoz\u00e1snak t\u0171nik, k\u00edv\u00e1nja a sz\u00fcks\u00e9ges http://-vel kieg\u00e9sz\u00edteni?","link_is_email":"A be\u00edrt internet c\u00edm e-mail c\u00edmnek t\u0171nik, k\u00edv\u00e1nja a sz\u00fcks\u00e9ges mailto:-val kieg\u00e9sz\u00edteni?","link_titlefield":"C\u00edm","link_target_blank":"\u00faj ablakba","link_target_same":"azonos ablakba","link_target":"Megnyit\u00e1s","link_url":"Internet c\u00edm","link_title":"Link besz\u00far\u00e1sa/szerkeszt\u00e9se","image_align_right":"Jobbra","image_align_left":"Balra","image_align_textbottom":"Sz\u00f6veg alj\u00e1hoz","image_align_texttop":"Sz\u00f6veg tetej\u00e9hez","image_align_bottom":"Lentre","image_align_middle":"K\u00f6z\u00e9pre","image_align_top":"Fentre","image_align_baseline":"Alapvonalhoz","image_align":"Igaz\u00edt\u00e1s","image_hspace":"V\u00edzszintes t\u00e1v","image_vspace":"F\u00fcgg\u0151leges t\u00e1v","image_dimensions":"M\u00e9retek","image_alt":"K\u00e9p le\u00edr\u00e1s","image_list":"K\u00e9p lista","image_border":"Keret","image_src":"K\u00e9p URL","image_title":"K\u00e9p besz\u00far\u00e1sa/szerkeszt\u00e9se","charmap_title":"Egyedi karakter v\u00e1laszt\u00e1sa","colorpicker_name":"N\u00e9v:","colorpicker_color":"Sz\u00edn:","colorpicker_named_title":"Elnevezett sz\u00ednek","colorpicker_named_tab":"Elnevezettek","colorpicker_palette_title":"Paletta sz\u00ednek","colorpicker_palette_tab":"Paletta","colorpicker_picker_title":"Sz\u00ednv\u00e1laszt\u00f3","colorpicker_picker_tab":"V\u00e1laszt\u00f3","colorpicker_title":"Sz\u00ednv\u00e1laszt\u00e1s","code_wordwrap":"Sz\u00f6veg t\u00f6rdel\u00e9se","code_title":"HTML forr\u00e1s szerkeszt\u00e9se","anchor_name":"Horgonyn\u00e9v","anchor_title":"Horgony besz\u00far\u00e1sa/szerkeszt\u00e9se","about_loaded":"Bet\u00f6lt\u00f6tt pluginok","about_version":"Verzi\u00f3","about_author":"Szerz\u0151","about_plugin":"Plugin","about_plugins":"Pluginok","about_license":"Licenc","about_help":"Seg\u00edts\u00e9g","about_general":"R\u00f3lunk","about_title":"A TinyMCE-r\u0151l","charmap_usage":"A navig\u00e1l\u00e1shoz haszn\u00e1ld a bal \u00e9s jobb oldali nyilat.","anchor_invalid":"Adjon meg egy helyes horgony nevet.","accessibility_help":"El\u00e9rhet\u0151s\u00e9g s\u00fag\u00f3","accessibility_usage_title":"\u00c1ltal\u00e1nos haszn\u00e1lat"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/hy.js b/program/js/tiny_mce/themes/advanced/langs/hy.js
deleted file mode 100644
index 18c86cd5b..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/hy.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hy.advanced',{"underline_desc":"\u0538\u0576\u0564\u0563\u056e\u057e\u0561\u056e (Ctrl + U)","italic_desc":"\u0547\u0565\u0572 (Ctrl + I)","bold_desc":"\u0540\u0561\u057d\u057f (Ctrl + B)",dd:"\u0532\u0561\u057c\u0561\u0580\u0561\u0576 \u0562\u0561\u0581\u0561\u057f\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576",dt:"\u054f\u0565\u0580\u0574\u056b\u0576\u0576\u0565\u0580\u056b \u0562\u0561\u057c\u0561\u0580\u0561\u0576",samp:"\u053f\u0578\u0564\u056b \u0585\u0580\u056b\u0576\u0561\u056f",code:"\u053f\u0578\u0564",blockquote:"\u0544\u0565\u056f\u0576\u0561\u0562\u0561\u0576\u0578\u0582\u0569\u0575\u0578\u0582\u0576",h6:"\u054e\u0565\u0580\u0576\u0561\u0563\u056b\u0580 6",h5:"\u054e\u0565\u0580\u0576\u0561\u0563\u056b\u0580 5",h4:"\u054e\u0565\u0580\u0576\u0561\u0563\u056b\u0580 4",h3:"\u054e\u0565\u0580\u0576\u0561\u0563\u056b\u0580 3",h2:"\u054e\u0565\u0580\u0576\u0561\u0563\u056b\u0580 2",h1:"\u054e\u0565\u0580\u0576\u0561\u0563\u056b\u0580 1",pre:"\u0546\u0561\u056d\u0561\u057a\u0565\u057d \u0586\u0578\u0580\u0574\u0561\u057f\u0561\u057e\u0578\u0580\u057e\u0561\u056e",address:"\u0540\u0561\u057d\u0581\u0565\u056b \u0578\u0573",div:"Div",paragraph:"\u0556\u0578\u0580\u0574\u0561\u057f",block:"\u0556\u0578\u0580\u0574\u0561\u057f",fontdefault:"\u054f\u0561\u057c\u0561\u057f\u0565\u057d\u0561\u056f","font_size":"\u0549\u0561\u0583\u057d","style_select":"\u0548\u0573\u0565\u0580","more_colors":"\u0547\u0561\u057f \u0563\u0578\u0582\u0575\u0576\u0565\u0580","toolbar_focus":"\u0531\u0576\u0581\u0576\u0565\u056c \u057d\u0565\u0572\u0574\u0561\u056f\u0576\u0565\u0580\u056b \u057e\u0561\u0570\u0561\u0576\u0561\u056f - Alt + Q, \u0531\u0576\u0581\u0576\u0565\u056c \u056d\u0574\u0562\u0561\u0563\u0580\u056b\u0579\u056b\u0576 - Alt-Z, \u0531\u0576\u0581\u0576\u0565\u056c \u0570\u0561\u057d\u0581\u0565\u056b \u0567\u056c\u0565\u0574\u0565\u0576\u057f\u056b\u0576 - Alt-X",newdocument:"\u0540\u0561\u0574\u0578\u0566\u057e\u0561\u055e\u056e \u0565\u0584, \u0578\u0580 \u0581\u0561\u0576\u056f\u0561\u0576\u0578\u0582\u0574 \u0565\u0584 \u0561\u0574\u0562\u0578\u0572\u057b\u0568 \u0570\u0565\u057c\u0561\u0581\u0576\u0565\u056c",path:"\u0540\u0561\u057d\u0581\u0565","clipboard_msg":"\u054a\u0561\u057f\u0573\u0565\u0576\u0565\u056c / \u053f\u057f\u0580\u0565\u056c / \u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c (\u0574\u0561\u057f\u0579\u0565\u056c\u056b \u0579\u0567 Mozilla \u0587 Firefox \u0562\u0580\u0561\u0578\u0582\u0566\u0565\u0580\u0576\u0565\u0580\u0578\u0582\u0574) \\ n \u0541\u0565\u0566 \u0570\u0565\u057f\u0561\u0584\u0580\u0584\u056b\u055e\u0580 \u0567 \u0561\u0575\u0564 \u056b\u0576\u0586\u0578\u0580\u0574\u0561\u0581\u056b\u0561\u0576","blockquote_desc":"\u0544\u0565\u056f\u0576\u0561\u0562\u0561\u0576\u0578\u0582\u0569\u0575\u0578\u0582\u0576","help_desc":"\u0555\u0563\u0576\u0578\u0582\u0569\u0575\u0578\u0582\u0576","newdocument_desc":"\u0546\u0578\u0580 \u0583\u0561\u057d\u057f\u0561\u0569\u0578\u0582\u0572\u0569","image_props_desc":"\u0546\u056f\u0561\u0580\u056b \u057a\u0561\u0580\u0561\u0574\u0565\u057f\u0580\u0565\u0580","paste_desc":"\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c","copy_desc":"\u054a\u0561\u057f\u0573\u0565\u0576\u0565\u056c","cut_desc":"\u053f\u057f\u0580\u0565\u056c","anchor_desc":"\u0531\u057e\u0565\u056c\u0561\u0581\u0576\u0565\u056c / \u0583\u0578\u0583\u056d\u0565\u056c \u056d\u0561\u0580\u056b\u057d\u056d\u0568","visualaid_desc":"Toggle guidelines / invisible elements","charmap_desc":"\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c \u057d\u056b\u0574\u057e\u0578\u056c","backcolor_desc":"\u0538\u0576\u057f\u0580\u0565\u0584 \u0586\u0578\u0576\u056b \u0563\u0578\u0582\u0575\u0576\u0568","forecolor_desc":"\u0538\u0576\u057f\u0580\u0565\u0584 \u057f\u0565\u0584\u057d\u057f\u056b \u0563\u0578\u0582\u0575\u0576\u0568","custom1_desc":"\u0541\u0565\u0580 \u0574\u0565\u056f\u0576\u0561\u0562\u0561\u0576\u0578\u0582\u0569\u0575\u0578\u0582\u0576\u0568","removeformat_desc":"\u0540\u0565\u057c\u0561\u0581\u0576\u0565\u056c \u0586\u0578\u0580\u0574\u0561\u057f\u0561\u057e\u0578\u0580\u0578\u0582\u0574\u0568","hr_desc":"\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c \u0570\u0578\u0580\u056b\u0566\u0578\u0576\u0561\u056f\u0561\u0576 \u0562\u0561\u056a\u0561\u0576\u056b\u0579","sup_desc":"\u054e\u0565\u0580\u056b\u0576 \u056b\u0576\u0564\u0565\u0584\u057d","sub_desc":"\u054d\u057f\u0578\u0580\u056b\u0576 \u056b\u0576\u0564\u0565\u0584\u057d","code_desc":"\u0553\u0578\u0583\u0578\u056d\u0565\u056c HTML \u056f\u0578\u0564\u0568","cleanup_desc":"\u0540\u0565\u057c\u0561\u0581\u0576\u0565\u056c \u0561\u057e\u0565\u056c\u0578\u0580\u0564 \u056f\u0578\u0564\u0568","image_desc":"\u0531\u057e\u0565\u056c\u0561\u0581\u0576\u0565\u056c / \u0583\u0578\u0583\u0578\u056d\u0565\u056c \u0576\u056f\u0561\u0580","unlink_desc":"\u0540\u0565\u057c\u0561\u0581\u0576\u0565\u056c \u0570\u0572\u0578\u0582\u0574\u0568","link_desc":"\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c / \u0583\u0578\u0583\u0578\u056d\u0565\u056c \u0570\u0572\u0578\u0582\u0574\u0568","redo_desc":"\u0531\u057c\u0561\u057b (Ctrl + Y)","undo_desc":"\u0535\u057f (Ctrl + Z)","indent_desc":"\u0531\u057e\u0565\u056c\u0561\u0581\u0576\u0565\u056c \u0570\u0565\u057c\u0561\u057e\u0578\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576\u0568 \u0571\u0561\u056d \u0565\u0566\u0580\u056b\u0581","outdent_desc":"\u053f\u0580\u0573\u0561\u057f\u0565\u056c \u0570\u0565\u057c\u0561\u057e\u0578\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576\u0568 \u0571\u0561\u056d \u0565\u0566\u0580\u056b\u0581","numlist_desc":"\u0540\u0561\u0574\u0561\u0580\u0561\u056f\u0561\u056c\u057e\u0561\u056e \u0581\u0561\u0576\u056f","bullist_desc":"\u0551\u0561\u0576\u056f","justifyfull_desc":"\u0538\u057d\u057f \u056c\u0561\u0575\u0576\u0578\u0582\u0569\u0575\u0561\u0576","justifyright_desc":"\u0531\u057b \u0570\u0561\u057e\u0561\u057d\u0561\u0580\u0565\u0581\u0578\u0582\u0574","justifycenter_desc":"\u053f\u0565\u0576\u057f\u0580\u0578\u0576\u0561\u0581\u0576\u0565\u056c","justifyleft_desc":"\u0541\u0561\u056d \u0570\u0561\u057e\u0561\u057d\u0561\u0580\u0565\u0581\u0578\u0582\u0574","striketrough_desc":"\u0531\u0580\u057f\u0561\u0563\u056e\u057e\u0561\u056e","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":"","help_shortcut":"Press ALT-F10 for toolbar. Press ALT-0 for help","rich_text_area":"Rich Text Area","shortcuts_desc":"Accessability Help",toolbar:"Toolbar"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/hy_dlg.js b/program/js/tiny_mce/themes/advanced/langs/hy_dlg.js
deleted file mode 100644
index c960f947e..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/hy_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hy.advanced_dlg',{"link_list":"\u0540\u0572\u0578\u0582\u0574\u0576\u0565\u0580\u056b \u0581\u0561\u0576\u056f","link_is_external":"\u0546\u0565\u0580\u0561\u056e\u057e\u0561\u056e URL \u0570\u0561\u057d\u0581\u0565\u0576 \u0576\u0574\u0561\u0576 \u0567 \u0561\u0580\u057f\u0561\u0584\u056b\u0576 \u0570\u0572\u0574\u0561\u0576, \u0534\u0578\u0582\u0584 \u0581\u0561\u0576\u056f\u0561\u0576\u0578\u0582\u055e\u0574 \u0565\u0584 \u0561\u057e\u0565\u056c\u0561\u0581\u0576\u0565\u056c http://","link_is_email":"\u0546\u0565\u0580\u0561\u056e\u057e\u0561\u056e URL \u0570\u0561\u057d\u0581\u0565\u0576 \u0576\u0574\u0561\u0576 \u0567 email \u0570\u0561\u057d\u0581\u0565\u056b, \u0534\u0578\u0582\u0584 \u0581\u0561\u0576\u056f\u0561\u0576\u0578\u0582\u055e\u0574 \u0565\u0584 \u0561\u057e\u0565\u056c\u0561\u0581\u0576\u0565\u056c mailto:","link_titlefield":"\u054e\u0565\u0580\u0576\u0561\u0563\u056b\u0580","link_target_blank":"\u0576\u0578\u0580 \u057a\u0561\u057f\u0578\u0582\u0570\u0561\u0576\u0578\u0582\u0574","link_target_same":"\u0561\u0575\u057d \u057a\u0561\u057f\u0578\u0582\u0570\u0561\u0576\u0578\u0582\u0574","link_target":"\u0532\u0561\u0581\u0565\u056c ...","link_url":"\u0540\u0572\u0574\u0561\u0576 \u0570\u0561\u057d\u0581\u0565","link_title":"\u0531\u057e\u0565\u056c\u0561\u0581\u0576\u0565\u056c / \u0583\u0578\u0583\u0578\u056d\u0565\u056c \u0570\u0572\u0578\u0582\u0574\u0568","image_align_right":"\u0531\u057b \u0570\u0561\u057e\u0561\u057d\u0561\u0580\u0565\u0581\u0578\u0582\u0574","image_align_left":"\u0541\u0561\u056d \u0570\u0561\u057e\u0561\u057d\u0561\u0580\u0565\u0581\u0578\u0582\u0574","image_align_textbottom":"\u0538\u057d\u057f \u057f\u0565\u0584\u057d\u057f\u056b \u057d\u057f\u0578\u0580\u056b\u0576 \u0565\u0566\u0580\u056b","image_align_texttop":"\u0538\u057d\u057f \u057f\u0565\u0584\u057d\u057f\u056b \u057e\u0565\u0580\u056b\u0576 \u0565\u0566\u0580\u056b","image_align_bottom":"\u0538\u057d\u057f \u057d\u057f\u0578\u0580\u056b\u0576 \u0563\u056e\u056b","image_align_middle":"\u053f\u0565\u0576\u057f\u0580\u0578\u0576\u0561\u0581\u0576\u0565\u056c","image_align_top":"\u0538\u057d\u057f \u057e\u0565\u0580\u056b\u0576 \u0565\u0566\u0580\u056b","image_align_baseline":"\u0538\u057d\u057f \u0562\u0561\u0566\u0561\u0575\u056b\u0576 \u0563\u056e\u056b","image_align":"\u0540\u0561\u057e\u0561\u057d\u0561\u0580\u0565\u0581\u0578\u0582\u0574","image_hspace":"\u0540\u0578\u0580\u056b\u0566. \u0577\u0565\u0572\u0578\u0582\u0574","image_vspace":"\u0548\u0582\u0572\u0572\u0561\u0570. \u0577\u0565\u0572\u0578\u0582\u0574","image_dimensions":"\u0549\u0561\u0583\u057d\u0565\u0580","image_alt":"\u0546\u056f\u0561\u0580\u0561\u0563\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576","image_list":"\u0546\u056f\u0561\u0580\u0576\u0565\u0580\u056b \u0581\u0561\u0576\u056f","image_border":"\u0535\u0566\u0580","image_src":"\u0540\u0561\u057d\u0581\u0565","image_title":"\u0531\u057e\u0565\u056c\u0561\u0581\u0576\u0565\u056c / \u0583\u0578\u0583\u0578\u056d\u0565\u056c \u0576\u056f\u0561\u0580","charmap_title":"\u0538\u0576\u057f\u0580\u0565\u056c \u057a\u0561\u057f\u0561\u0570\u0561\u056f\u0561\u0576 \u057d\u056b\u0574\u057e\u0578\u056c","colorpicker_name":"\u0531\u0576\u057e\u0561\u0576\u0578\u0582\u0574:","colorpicker_color":"\u0533\u0578\u0582\u0575\u0576:","colorpicker_named_title":"\u0538\u057d\u057f \u0561\u0576\u057e\u0561\u0576\u0574\u0561\u0576","colorpicker_named_tab":"\u0538\u057d\u057f \u0561\u0576\u057e\u0561\u0576\u0574\u0561\u0576","colorpicker_palette_title":"\u0533\u0578\u0582\u0575\u0576\u0565\u0580\u056b \u0581\u0561\u0576\u056f","colorpicker_palette_tab":"\u0551\u0561\u0576\u056f","colorpicker_picker_title":"\u0533\u0578\u0582\u0576\u0561\u0575\u056b\u0576 \u0585\u0580\u056b\u0576\u0561\u056f","colorpicker_picker_tab":"\u0533\u0578\u0582\u0576\u0561\u0575\u056b\u0576 \u0585\u0580\u056b\u0576\u0561\u056f","colorpicker_title":"\u0538\u0576\u057f\u0580\u0565\u0584 \u0563\u0578\u0582\u0575\u0576","code_wordwrap":"\u054f\u0565\u0572\u0561\u0583\u0578\u056d\u0565\u056c \u0562\u0561\u057c\u0565\u0580","code_title":"HTML \u056f\u0578\u0564\u056b \u056d\u0574\u0562\u0561\u0563\u0580\u056b\u0579","anchor_name":"\u053d\u0561\u0580\u056b\u057d\u056d \u0561\u0576\u057e\u0561\u0576\u0578\u0582\u0574","anchor_title":"\u0531\u057e\u0565\u056c\u0561\u0581\u0576\u0565\u056c / \u0583\u0578\u0583\u0578\u056d\u0565\u056c \u056d\u0561\u0580\u056b\u057d\u056d\u0568","about_loaded":"\u0532\u0565\u057c\u0562\u057e\u0561\u056e \u057a\u056c\u0561\u0563\u056b\u0576\u0576\u0565\u0580","about_version":"\u054f\u0561\u0580\u0562\u0565\u0580\u0561\u056f","about_author":"\u0540\u0565\u0572\u056b\u0576\u0561\u056f","about_plugin":"\u054a\u056c\u0561\u0563\u056b\u0576","about_plugins":"\u054a\u056c\u0561\u0563\u056b\u0576\u0576\u0565\u0580","about_license":"\u053c\u056b\u0581\u0565\u0576\u0566\u056b\u0561","about_help":"\u0555\u0563\u0576\u0578\u0582\u0569\u0575\u0578\u0582\u0576","about_general":"\u053e\u0580\u0561\u0563\u0580\u0561\u0575\u056b\u0576 \u0561\u057a\u0561\u0570\u0578\u057e\u0574\u0561\u0576 \u0574\u0561\u057d\u056b\u0576 ...","about_title":"TinyMCE \u053d\u0574\u0562\u0561\u0563\u0580\u056b\u0579","anchor_invalid":"Please specify a valid anchor name.","accessibility_help":"Accessibility Help","accessibility_usage_title":"General Usage"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/id.js b/program/js/tiny_mce/themes/advanced/langs/id.js
deleted file mode 100644
index cfd77b8f8..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/id.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('id.advanced',{"underline_desc":"Underline (Ctrl+U)","italic_desc":"Italic (Ctrl+I)","bold_desc":"Bold (Ctrl+B)",dd:"Definition description",dt:"Definition term ",samp:"Code sample",code:"Code",blockquote:"Blockquote",h6:"Heading 6",h5:"Heading 5",h4:"Heading 4",h3:"Heading 3",h2:"Heading 2",h1:"Heading 1",pre:"Preformatted",address:"Address",div:"Div",paragraph:"Paragraph",block:"Format",fontdefault:"Font family","font_size":"Font size","style_select":"Styles","more_colors":"More colors","toolbar_focus":"Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X",newdocument:"Yakin untuk menghapus semua konten?",path:"Path","clipboard_msg":"Copy/Cut/Paste tidak tersedia pada Mozilla dan Firefox.\nButuh info selengkapnya?","blockquote_desc":"Blockquote","help_desc":"Help","newdocument_desc":"New document","image_props_desc":"Image properties","paste_desc":"Paste","copy_desc":"Copy","cut_desc":"Cut","anchor_desc":"Insert/edit anchor","visualaid_desc":"Toggle guidelines/invisible elements","charmap_desc":"Insert custom character","backcolor_desc":"Pilih background color","forecolor_desc":"Pilih text color","custom1_desc":"Deskripsi disini","removeformat_desc":"Remove formatting","hr_desc":"Insert horizontal ruler","sup_desc":"Superscript","sub_desc":"Subscript","code_desc":"Edit HTML Source","cleanup_desc":"Cleanup messy code","image_desc":"Insert/edit image","unlink_desc":"Unlink","link_desc":"Insert/edit link","redo_desc":"Redo (Ctrl+Y)","undo_desc":"Undo (Ctrl+Z)","indent_desc":"Indent","outdent_desc":"Outdent","numlist_desc":"Ordered list","bullist_desc":"Unordered list","justifyfull_desc":"Align full","justifyright_desc":"Align right","justifycenter_desc":"Align center","justifyleft_desc":"Align left","striketrough_desc":"Strikethrough","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":"","help_shortcut":"Press ALT-F10 for toolbar. Press ALT-0 for help","rich_text_area":"Rich Text Area","shortcuts_desc":"Accessability Help",toolbar:"Toolbar"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/id_dlg.js b/program/js/tiny_mce/themes/advanced/langs/id_dlg.js
deleted file mode 100644
index 6d6ed3239..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/id_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('id.advanced_dlg',{"link_list":"Daftar Link","link_is_external":"URL yang Anda sisipkan tampaknya link eksternal, Anda ingin menambahkan awalan \'http://\'?","link_is_email":"URL yang Anda sisipkan tampaknya e-mail, Anda ingin menambahkan awalan \'mailto:\'?","link_titlefield":"Judul","link_target_blank":"Buka link pada window baru","link_target_same":"Buka link pada window yang sama","link_target":"Target","link_url":"Link URL","link_title":"Insert/edit link","image_align_right":"Right","image_align_left":"Left","image_align_textbottom":"Text bottom","image_align_texttop":"Text top","image_align_bottom":"Bottom","image_align_middle":"Middle","image_align_top":"Top","image_align_baseline":"Baseline","image_align":"Alignment","image_hspace":"Horizontal space","image_vspace":"Vertical space","image_dimensions":"Dimensions","image_alt":"Image description","image_list":"Image list","image_border":"Border","image_src":"Image URL","image_title":"Insert/edit image","charmap_title":"Pilih custom character","colorpicker_name":"Name:","colorpicker_color":"Color:","colorpicker_named_title":"Named colors","colorpicker_named_tab":"Named","colorpicker_palette_title":"Palette colors","colorpicker_palette_tab":"Palette","colorpicker_picker_title":"Color picker","colorpicker_picker_tab":"Picker","colorpicker_title":"Select a color","code_wordwrap":"Word wrap","code_title":"HTML Source Editor","anchor_name":"Anchor name","anchor_title":"Insert/edit anchor","about_loaded":"Loaded plugins","about_version":"Versi","about_author":"Penulis","about_plugin":"Plugin","about_plugins":"Plugins","about_license":"Lisensi","about_help":"Bantuan","about_general":"Tentang","about_title":"Tentang TinyMCE","anchor_invalid":"Please specify a valid anchor name.","accessibility_help":"Accessibility Help","accessibility_usage_title":"General Usage"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/is.js b/program/js/tiny_mce/themes/advanced/langs/is.js
deleted file mode 100644
index 600433cf9..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/is.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('is.advanced',{"underline_desc":"Undirstrika\u00f0 (Ctrl+U)","italic_desc":"Sk\u00e1letra\u00f0 (Ctrl+I)","bold_desc":"Feitletra\u00f0 (Ctrl+B)",dd:"L\u00fdsing skilgreiningar",dt:"Stilgreining",samp:"K\u00f3\u00f0ad\u00e6mi",code:"K\u00f3\u00f0i",blockquote:"Blockquote",h6:"Fyrirs\u00f6gn 6",h5:"Fyrirs\u00f6gn 5",h4:"Fyrirs\u00f6gn 4",h3:"Fyrirs\u00f6gn 3",h2:"Fyrirs\u00f6gn 2",h1:"Fyrirs\u00f6gn 1",pre:"Forsni\u00f0i\u00f0",address:"Heimilisfang",div:"Div",paragraph:"M\u00e1lsgrein",block:"Format",fontdefault:"Leturger\u00f0","font_size":"Leturst\u00e6r\u00f0","style_select":"St\u00edlsni\u00f0","more_colors":"Fleiri litir","toolbar_focus":"Hoppa \u00ed t\u00f3lastiku - Alt+Q, Hoppa \u00ed ritil - Alt-Z, Hoppa \u00ed sl\u00f3\u00f0 - Alt-X",newdocument:"Ertu viss um a\u00f0 \u00fe\u00fa viljir hreinsa allt?",path:"Sl\u00f3\u00f0","clipboard_msg":"Afrita/Klippa/L\u00edma er ekki a\u00f0gengilegt \u00ed Mozilla og Firefox eins og er.\\Viltu f\u00e1 n\u00e1nari uppl\u00fdsingar?","blockquote_desc":"Blockquote","help_desc":"Hj\u00e1lp","newdocument_desc":"N\u00fdtt skjal","image_props_desc":"Stilling myndar","paste_desc":"L\u00edma","copy_desc":"Afrita","cut_desc":"Klippa","anchor_desc":"Setja inn/breyta akkeri","visualaid_desc":"Toggle guidelines/invisible elements","charmap_desc":"Setja inn t\u00e1kn","backcolor_desc":"Veldu bakgrunnslit","forecolor_desc":"Veldu textalit","custom1_desc":"L\u00fdsingin \u00fe\u00edn h\u00e9r","removeformat_desc":"Hreinsa sni\u00f0","hr_desc":"Setja inn l\u00e1r\u00e9tta l\u00ednu","sup_desc":"Superscript","sub_desc":"Subscript","code_desc":"Breyta HTML k\u00f3\u00f0a","cleanup_desc":"Hreinsa ruslk\u00f3\u00f0a","image_desc":"Setja inn/breyta mynd","unlink_desc":"Afhlekkja","link_desc":"Setja inn/breyta hlekk","redo_desc":"Endurtaka (Ctrl+Y)","undo_desc":"Taka til baka (Ctrl+Z)","indent_desc":"Draga inn","outdent_desc":"Draga \u00fat","numlist_desc":"N\u00famera\u00f0ur listi","bullist_desc":"B\u00f3lulisti","justifyfull_desc":"Jafna","justifyright_desc":"H\u00e6grijafna","justifycenter_desc":"Mi\u00f0jujafna","justifyleft_desc":"Vinstrijafna","striketrough_desc":"Yfirstrika\u00f0","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":"","help_shortcut":"Press ALT-F10 for toolbar. Press ALT-0 for help","rich_text_area":"Rich Text Area","shortcuts_desc":"Accessability Help",toolbar:"Toolbar"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/is_dlg.js b/program/js/tiny_mce/themes/advanced/langs/is_dlg.js
deleted file mode 100644
index 7775c7e49..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/is_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('is.advanced_dlg',{"link_list":"Hlekkjalisti","link_is_external":"Sl\u00f3\u00f0in sem \u00fe\u00fa sl\u00f3st inn vir\u00f0ist vera utana\u00f0komandi, viltu b\u00e6ta vi\u00f0 http:// forskeytinu?","link_is_email":"Sl\u00f3\u00f0in sem \u00fe\u00fa sl\u00f3st inn vir\u00f0ist vera netfang, viltu b\u00e6ta vi\u00f0 mailto: forskeytinu?","link_titlefield":"Titill","link_target_blank":"Opna hlekk \u00ed n\u00fdjum glugga","link_target_same":"Opna hlekk \u00ed sama glugga","link_target":"\u00c1fangasta\u00f0ur","link_url":"Sl\u00f3\u00f0 hlekks","link_title":"Setja inn/breyta hlekk","image_align_right":"H\u00e6gri","image_align_left":"Vinstri","image_align_textbottom":"Botn texta","image_align_texttop":"Toppur texta","image_align_bottom":"Botn","image_align_middle":"Mi\u00f0ja","image_align_top":"Toppur","image_align_baseline":"Baseline","image_align":"J\u00f6fnun","image_hspace":"L\u00e1r\u00e9tt loftun","image_vspace":"L\u00f3\u00f0r\u00e9tt loftun","image_dimensions":"St\u00e6r\u00f0ir","image_alt":"L\u00fdsing myndar","image_list":"Myndalisti","image_border":"Rammi","image_src":"Sl\u00f3\u00f0 myndar","image_title":"Setja inn/breyta mynd","charmap_title":"Veldu t\u00e1kn","colorpicker_name":"Nafn:","colorpicker_color":"Litur:","colorpicker_named_title":"Nefndir litir","colorpicker_named_tab":"Nefndir","colorpicker_palette_title":"Litir litaspjalds","colorpicker_palette_tab":"Litaspjald","colorpicker_picker_title":"Litaveljari","colorpicker_picker_tab":"Veljari","colorpicker_title":"Veldu lit","code_wordwrap":"Word wrap","code_title":"HTML k\u00f3\u00f0a ritill","anchor_name":"Nafn akkeris","anchor_title":"Setja inn/breyta akkeri","about_loaded":"Vi\u00f0b\u00e6tur \u00ed notkun","about_version":"\u00datg\u00e1fa","about_author":"H\u00f6fundur","about_plugin":"Vi\u00f0b\u00e6tur","about_plugins":"Vi\u00f0b\u00e6tur","about_license":"Leyfi","about_help":"Hj\u00e1lp","about_general":"Um","about_title":"Um TinyMCE","anchor_invalid":"Please specify a valid anchor name.","accessibility_help":"Accessibility Help","accessibility_usage_title":"General Usage"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/it.js b/program/js/tiny_mce/themes/advanced/langs/it.js
deleted file mode 100644
index af84c79db..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/it.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('it.advanced',{"underline_desc":"Sottolineato (Ctrl+U)","italic_desc":"Corsivo (Ctrl+I)","bold_desc":"Grassetto (Ctrl+B)",dd:"Descrizione definizione",dt:"Termine definizione",samp:"Esempio codice",code:"Codice",blockquote:"Testo quotato",h6:"Intestazione 6",h5:"Intestazione 5",h4:"Intestazione 4",h3:"Intestazione 3",h2:"Intestazione 2",h1:"Intestazione 1",pre:"Preformattato",address:"Indirizzo",div:"Div",paragraph:"Paragrafo",block:"Formato",fontdefault:"Famiglia carattere","font_size":"Grandezza carattere","style_select":"Stili","anchor_delta_height":"anchor_delta_height","anchor_delta_width":"anchor_delta_width","charmap_delta_height":"charmap_delta_height","charmap_delta_width":"charmap_delta_width","colorpicker_delta_height":"colorpicker_delta_height","colorpicker_delta_width":"colorpicker_delta_width","link_delta_height":"link_delta_height","link_delta_width":"link_delta_width","image_delta_height":"image_delta_height","image_delta_width":"image_delta_width","more_colors":"Colori aggiuntivi","toolbar_focus":"Vai ai pulsanti strumento - Alt+Q, Vai all\'editor - Alt-Z, Vai al percorso dell\'elemento - Alt-X",newdocument:"Sei sicuro di voler cancellare tutti i contenuti?",path:"Percorso","clipboard_msg":"Copia/Taglia/Incolla non \u00e8 disponibile in Mozilla e Firefox..\nSi desidera avere maggiori informazioni su questo problema?","blockquote_desc":"Testo quotato","help_desc":"Aiuto","newdocument_desc":"Nuovo documento","image_props_desc":"Propriet\u00e0 immagine","paste_desc":"Incolla","copy_desc":"Copia","cut_desc":"Taglia","anchor_desc":"Inserisci/modifica ancora","visualaid_desc":"Mostra/nascondi linee guida/elementi invisibili","charmap_desc":"Inserisci carattere speciale","backcolor_desc":"Seleziona colore sfondo","forecolor_desc":"Seleziona colore testo","custom1_desc":"La tua descrizione personalizzata qui","removeformat_desc":"Rimuovi formattazione","hr_desc":"Inserisci riga orizzontale","sup_desc":"Apice","sub_desc":"Pedice","code_desc":"Modifica sorgente HTML","cleanup_desc":"Pulisci codice disordinato","image_desc":"Inserisci/modifica immagine","unlink_desc":"Togli collegamento","link_desc":"Inserisci/modifica collegamento","redo_desc":"Ripristina (Ctrl+Y)","undo_desc":"Annulla (Ctrl+Z)","indent_desc":"Sposta verso interno","outdent_desc":"Sposta verso esterno","numlist_desc":"Lista ordinata","bullist_desc":"Lista non ordinata","justifyfull_desc":"Giustifica","justifyright_desc":"Allinea a destra","justifycenter_desc":"Centra","justifyleft_desc":"Allinea a sinistra","striketrough_desc":"Barrato","help_shortcut":"Premi ALT-F10 Per la barra degli strumenti. Premi ALT-0 per l\'aiuto","rich_text_area":"Rich Text Area","shortcuts_desc":"Aiuto accessibilit\u00e0",toolbar:"Barra degli strumenti"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/it_dlg.js b/program/js/tiny_mce/themes/advanced/langs/it_dlg.js
deleted file mode 100644
index 9fc5380c4..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/it_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('it.advanced_dlg',{"link_list":"Lista link","link_is_external":"L\'URL inserito sembra essere un link esterno. Aggiungere il necessario prefisso http:// ?","link_is_email":"L\'URL inserito sembra essere un indirizzo email. Aggiungere il necessario prefisso mailto: ?","link_titlefield":"Titolo","link_target_blank":"Apri link in una nuova finestra","link_target_same":"Apri link nella stessa finestra","link_target":"Target","link_url":"URL link","link_title":"Inserisci/modifica collegamento","image_align_right":"A destra","image_align_left":"A sinistra","image_align_textbottom":"In basso al testo","image_align_texttop":"In alto al testo","image_align_bottom":"In basso","image_align_middle":"In mezzo","image_align_top":"In alto","image_align_baseline":"Alla base","image_align":"Allineamento","image_hspace":"Spaziatura orizz.","image_vspace":"Spaziatura vert.","image_dimensions":"Dimensioni","image_alt":"Descrizione","image_list":"Lista immagini","image_border":"Bordo","image_src":"URL immagine","image_title":"Inserisci/modifica immagine","charmap_title":"Seleziona carattere speciale","colorpicker_name":"Nome:","colorpicker_color":"Colore:","colorpicker_named_title":"Colori per nome","colorpicker_named_tab":"Per nome","colorpicker_palette_title":"Tavolozza dei colori","colorpicker_palette_tab":"Tavolozza","colorpicker_picker_title":"Selettore colori","colorpicker_picker_tab":"Selettore","colorpicker_title":"Seleziona un colore","code_wordwrap":"A capo automatico","code_title":"Editor sorgente HTML","anchor_name":"Nome ancora","anchor_title":"Inserisci/modifica ancora","about_loaded":"Plugin caricati","about_version":"Versione","about_author":"Autore","about_plugin":"Plugin","about_plugins":"Plugins","about_license":"Licenza","about_help":"Aiuto","about_general":"Informazioni","about_title":"Informazioni su TinyMCE","charmap_usage":"Utilizza le freccie sinistra e destra per navigare.","anchor_invalid":"Specificare un nome di ancora valido.","accessibility_help":"Guida accessibilit\u00e0","accessibility_usage_title":"Uso generale","invalid_color_value":"Colore non valido"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/ja.js b/program/js/tiny_mce/themes/advanced/langs/ja.js
deleted file mode 100644
index f5533c548..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/ja.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ja.advanced',{"underline_desc":"\u4e0b\u7dda (Ctrl+U)","italic_desc":"\u659c\u4f53 (Ctrl+I)","bold_desc":"\u592a\u5b57 (Ctrl+B)",dd:"\u8a9e\u53e5\u306e\u8aac\u660e",dt:"\u8a9e\u53e5\u306e\u5b9a\u7fa9",samp:"\u30b3\u30fc\u30c9\u306e\u4f8b",code:"\u30b3\u30fc\u30c9",blockquote:"\u5f15\u7528",h6:"\u898b\u51fa\u30576",h5:"\u898b\u51fa\u30575",h4:"\u898b\u51fa\u30574",h3:"\u898b\u51fa\u30573",h2:"\u898b\u51fa\u30572",h1:"\u898b\u51fa\u30571",pre:"\u6574\u5f62\u6e08\u307f",address:"\u4f4f\u6240",div:"div\u8981\u7d20",paragraph:"\u6bb5\u843d",block:"\u66f8\u5f0f",fontdefault:"\u30d5\u30a9\u30f3\u30c8","font_size":"\u30d5\u30a9\u30f3\u30c8\u306e\u5927\u304d\u3055","style_select":"\u30b9\u30bf\u30a4\u30eb","more_colors":"\u3055\u3089\u306b\u8272\u3092\u4f7f\u7528...","toolbar_focus":"\u30c4\u30fc\u30eb\u30dc\u30bf\u30f3\u3078\u79fb\u52d5 - Alt Q, \u30a8\u30c7\u30a3\u30bf\u306b\u79fb\u52d5 - Alt-Z, \u8981\u7d20\u306e\u30d1\u30b9\u3078\u79fb\u52d5 - Alt-X",newdocument:"\u672c\u5f53\u306b\u3059\u3079\u3066\u306e\u5185\u5bb9\u3092\u6d88\u53bb\u3057\u3066\u3088\u3044\u3067\u3059\u304b?",path:"\u30d1\u30b9","clipboard_msg":"\u30b3\u30d4\u30fc/\u5207\u308a\u53d6\u308a/\u8cbc\u308a\u4ed8\u3051\u306fMozilla\u3068Firefox\u3067\u306f\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002\n\u3053\u306e\u554f\u984c\u306e\u8a73\u7d30\u3092\u77e5\u308a\u305f\u3044\u3067\u3059\u304b?","blockquote_desc":"\u5f15\u7528\u30d6\u30ed\u30c3\u30af","help_desc":"\u30d8\u30eb\u30d7","newdocument_desc":"\u65b0\u3057\u3044\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8","image_props_desc":"\u753b\u50cf\u306e\u5c5e\u6027","paste_desc":"\u8cbc\u308a\u4ed8\u3051","copy_desc":"\u30b3\u30d4\u30fc","cut_desc":"\u5207\u308a\u53d6\u308a","anchor_desc":"\u30a2\u30f3\u30ab\u30fc\u306e\u633f\u5165/\u7de8\u96c6","visualaid_desc":"\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3\u3068\u975e\u8868\u793a\u8981\u7d20\u306e\u8868\u793a\u3092\u5207\u66ff","charmap_desc":"\u7279\u6b8a\u6587\u5b57","backcolor_desc":"\u80cc\u666f\u306e\u8272","forecolor_desc":"\u6587\u5b57\u306e\u8272","custom1_desc":"\u8aac\u660e\u6587\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","removeformat_desc":"\u66f8\u5f0f\u306e\u524a\u9664","hr_desc":"\u6c34\u5e73\u7dda\u3092\u633f\u5165","sup_desc":"\u4e0a\u4ed8\u304d\u6587\u5b57","sub_desc":"\u4e0b\u4ed8\u304d\u6587\u5b57","code_desc":"HTML\u306e\u30bd\u30fc\u30b9\u3092\u7de8\u96c6","cleanup_desc":"\u4e71\u96d1\u306a\u30b3\u30fc\u30c9\u3092\u6574\u5f62","image_desc":"\u753b\u50cf\u306e\u633f\u5165/\u7de8\u96c6","unlink_desc":"\u30ea\u30f3\u30af\u3092\u89e3\u9664","link_desc":"\u30ea\u30f3\u30af\u306e\u633f\u5165/\u7de8\u96c6","redo_desc":"\u3084\u308a\u76f4\u3059 (Ctrl+Y)","undo_desc":"\u5143\u306b\u623b\u3059 (Ctrl+Z)","indent_desc":"\u5b57\u4e0b\u3052\u3092\u5897\u3084\u3059","outdent_desc":"\u5b57\u4e0b\u3052\u3092\u6e1b\u3089\u3059","numlist_desc":"\u756a\u53f7\u3064\u304d\u30ea\u30b9\u30c8","bullist_desc":"\u756a\u53f7\u306a\u3057\u30ea\u30b9\u30c8","justifyfull_desc":"\u5747\u7b49\u5272\u4ed8","justifyright_desc":"\u53f3\u63c3\u3048","justifycenter_desc":"\u4e2d\u592e\u63c3\u3048","justifyleft_desc":"\u5de6\u63c3\u3048","striketrough_desc":"\u53d6\u308a\u6d88\u3057\u7dda","help_shortcut":"ALT-F10 \u3067\u30c4\u30fc\u30eb\u30d0\u30fc\u3001ALT-0 \u3067\u30d8\u30eb\u30d7","rich_text_area":"\u30ea\u30c3\u30c1\u30c6\u30ad\u30b9\u30c8\u30a8\u30ea\u30a2","shortcuts_desc":"\u30a2\u30af\u30bb\u30b7\u30d3\u30ea\u30c6\u30a3\u306e\u30d8\u30eb\u30d7",toolbar:"\u30c4\u30fc\u30eb\u30d0\u30fc","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/ja_dlg.js b/program/js/tiny_mce/themes/advanced/langs/ja_dlg.js
deleted file mode 100644
index 234fb71a4..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/ja_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ja.advanced_dlg',{"link_list":"\u30ea\u30f3\u30af\u306e\u4e00\u89a7","link_is_external":"\u5165\u529b\u3057\u305fURL\u306f\u5916\u90e8\u306e\u30ea\u30f3\u30af\u306e\u3088\u3046\u3067\u3059\u3002\u30ea\u30f3\u30af\u306b http:// \u3092\u8ffd\u52a0\u3057\u307e\u3059\u304b?","link_is_email":"\u5165\u529b\u3057\u305fURL\u306f\u96fb\u5b50\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306e\u3088\u3046\u3067\u3059\u3002\u30ea\u30f3\u30af\u306b mailto: \u3092\u8ffd\u52a0\u3057\u307e\u3059\u304b?","link_titlefield":"\u30bf\u30a4\u30c8\u30eb","link_target_blank":"\u65b0\u3057\u3044\u30a6\u30a4\u30f3\u30c9\u30a6\u3067\u958b\u304f","link_target_same":"\u540c\u3058\u30a6\u30a4\u30f3\u30c9\u30a6\u3067\u958b\u304f","link_target":"\u30bf\u30fc\u30b2\u30c3\u30c8","link_url":"\u30ea\u30f3\u30af\u306eURL","link_title":"\u30ea\u30f3\u30af\u306e\u633f\u5165\u3084\u7de8\u96c6","image_align_right":"\u53f3\u63c3\u3048","image_align_left":"\u5de6\u63c3\u3048","image_align_textbottom":"\u30c6\u30ad\u30b9\u30c8\u306e\u4e0b\u7aef\u63c3\u3048","image_align_texttop":"\u30c6\u30ad\u30b9\u30c8\u306e\u4e0a\u7aef\u63c3\u3048","image_align_bottom":"\u4e0b\u63c3\u3048","image_align_middle":"\u4e2d\u592e\u63c3\u3048","image_align_top":"\u4e0a\u63c3\u3048","image_align_baseline":"\u30d9\u30fc\u30b9\u30e9\u30a4\u30f3\u63c3\u3048","image_align":"\u914d\u7f6e","image_hspace":"\u5de6\u53f3\u306e\u4f59\u767d","image_vspace":"\u4e0a\u4e0b\u306e\u4f59\u767d","image_dimensions":"\u5bf8\u6cd5","image_alt":"\u753b\u50cf\u306e\u8aac\u660e","image_list":"\u753b\u50cf\u306e\u4e00\u89a7","image_border":"\u67a0\u7dda","image_src":"\u753b\u50cf\u306eURL","image_title":"\u753b\u50cf\u306e\u633f\u5165\u3084\u7de8\u96c6","charmap_title":"\u7279\u6b8a\u6587\u5b57","colorpicker_name":"\u540d\u524d:","colorpicker_color":"\u8272:","colorpicker_named_title":"\u5b9a\u7fa9\u6e08\u307f\u306e\u8272","colorpicker_named_tab":"\u5b9a\u7fa9\u6e08\u307f","colorpicker_palette_title":"\u30d1\u30ec\u30c3\u30c8\u306e\u8272","colorpicker_palette_tab":"\u30d1\u30ec\u30c3\u30c8","colorpicker_picker_title":"\u8272\u9078\u629e","colorpicker_picker_tab":"\u9078\u629e","colorpicker_title":"\u8272\u3092\u9078\u629e","code_wordwrap":"\u884c\u306e\u6298\u308a\u8fd4\u3057","code_title":"HTML\u306e\u30bd\u30fc\u30b9\u30a8\u30c7\u30a3\u30bf","anchor_name":"\u30a2\u30f3\u30ab\u30fc\u306e\u540d\u524d","anchor_title":"\u30a2\u30f3\u30ab\u30fc\u306e\u633f\u5165\u3084\u7de8\u96c6","about_loaded":"\u8aad\u307f\u8fbc\u307f\u6e08\u307f\u306e\u30d7\u30e9\u30b0\u30a4\u30f3","about_version":"\u30d0\u30fc\u30b8\u30e7\u30f3","about_author":"\u4f5c\u6210\u8005","about_plugin":"\u30d7\u30e9\u30b0\u30a4\u30f3","about_plugins":"\u30d7\u30e9\u30b0\u30a4\u30f3","about_license":"\u30e9\u30a4\u30bb\u30f3\u30b9","about_help":"\u30d8\u30eb\u30d7","about_general":"TinyMCE\u306b\u3064\u3044\u3066","about_title":"TinyMCE\u306b\u3064\u3044\u3066","charmap_usage":"\u5de6\u53f3\u306e\u30ab\u30fc\u30bd\u30eb\u30ad\u30fc\u3092\u4f7f\u7528\u3057\u3066\u79fb\u52d5\u3057\u3066\u304f\u3060\u3055\u3044\u3002","anchor_invalid":"\u6709\u52b9\u306a\u30a2\u30f3\u30ab\u30fc\u306e\u540d\u524d\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002","accessibility_help":"\u30a2\u30af\u30bb\u30b7\u30d3\u30ea\u30c6\u30a3\u306e\u30d8\u30eb\u30d7","accessibility_usage_title":"\u5168\u822c\u7684\u306a\u4f7f\u3044\u65b9","invalid_color_value":"\u7121\u52b9\u306a\u5024"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/ka.js b/program/js/tiny_mce/themes/advanced/langs/ka.js
deleted file mode 100644
index bc2b1faa9..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/ka.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ka.advanced',{"underline_desc":"\u10db\u10dd\u10ee\u10d0\u10d6\u10e3\u10e0\u10da\u10d8 (Ctrl+U)","italic_desc":"\u10d3\u10d0\u10ee\u10e0\u10d8\u10da\u10d8 (Ctrl+I)","bold_desc":"\u10dc\u10d0\u10ee\u10d4\u10d5\u10e0\u10d0\u10d3 \u10e1\u10e5\u10d4\u10da\u10d8 (Ctrl+B)",dd:"\u10ea\u10dc\u10dd\u10d1\u10d0\u10e0\u10d8\u10e1 \u10d0\u10e6\u10ec\u10d4\u10e0\u10d0",dt:"\u10ea\u10dc\u10dd\u10d1\u10d0\u10e0\u10d8\u10e1 \u10e2\u10d4\u10e0\u10db\u10d8\u10dc\u10d8",samp:"\u10d9\u10dd\u10d3\u10d8\u10e1 \u10db\u10d0\u10d2\u10d0\u10da\u10d8\u10d7\u10d8",code:"\u10d9\u10dd\u10d3\u10d8",blockquote:"\u10ea\u10d8\u10e2\u10d0\u10e2\u10d0",h6:"\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8 6",h5:"\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8 5",h4:"\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8 4",h3:"\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8 3",h2:"\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8 2",h1:"\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8 1",pre:"\u10d2\u10d0\u10d3\u10d0\u10e4\u10dd\u10e0\u10db\u10d0\u10e2\u10d4\u10d1\u10e3\u10da\u10d8",address:"\u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d8",div:"Div",paragraph:"\u10d0\u10d1\u10d6\u10d0\u10ea\u10d8",block:"\u10e4\u10dd\u10e0\u10db\u10d0\u10e2\u10d8",fontdefault:"\u10e8\u10e0\u10d8\u10e4\u10e2\u10d8","font_size":"\u10d6\u10dd\u10db\u10d0","style_select":"\u10e1\u10e2\u10d8\u10da\u10d8","more_colors":"\u10e1\u10ee\u10d5\u10d0 \u10e4\u10d4\u10e0\u10d4\u10d1\u10d8...","toolbar_focus":"\u10e6\u10d8\u10da\u10d0\u10d9\u10d4\u10d1\u10d8\u10e1 \u10de\u10d0\u10dc\u10d4\u10da\u10d6\u10d4 \u10d2\u10d0\u10d3\u10d0\u10e1\u10d5\u10da\u10d0 (Alt+Q). \u10e0\u10d4\u10d3\u10d0\u10e5\u10e2\u10dd\u10e0\u10d6\u10d4 \u10d2\u10d0\u10d3\u10d0\u10e1\u10d5\u10da\u10d0 (Alt+Z). \u10d2\u10d6\u10d8\u10e1 \u10d4\u10da\u10d4\u10db\u10d4\u10dc\u10e2\u10d8\u10d6\u10d4 \u10d2\u10d0\u10d3\u10d0\u10e1\u10d5\u10da\u10d0 (Alt+X).",newdocument:"\u10d3\u10d0\u10e0\u10ec\u10db\u10e3\u10dc\u10d4\u10d1\u10e3\u10da\u10d8 \u10ee\u10d0\u10e0\u10d7, \u10e0\u10dd\u10db \u10d2\u10e1\u10e3\u10e0\u10d7 \u10e7\u10d5\u10d4\u10da\u10d0\u10e4\u10d4\u10e0\u10d8\u10e1 \u10ec\u10d0\u10e8\u10da\u10d0",path:"\u10e2\u10d4\u10d2\u10d4\u10d1\u10d8","clipboard_msg":"\u10d9\u10dd\u10de\u10d8\u10e0\u10d4\u10d1\u10d0, \u10d0\u10db\u10dd\u10ed\u10e0\u10d0 \u10d3\u10d0 \u10e9\u10d0\u10e1\u10db\u10d0 Firefox-\u10e8\u10d8 \u10d0\u10e0 \u10db\u10e3\u10e8\u10d0\u10dd\u10d1\u10e1.\\r\n\u10d2\u10e1\u10e3\u10e0\u10d7 \u10db\u10d8\u10d8\u10e6\u10dd\u10d7 \u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d8\u10d7\u10d8 \u10d8\u10dc\u10e4\u10dd\u10e0\u10db\u10d0\u10ea\u10d8\u10d0?","blockquote_desc":"\u10ea\u10d8\u10e2\u10d0\u10e2\u10d0","help_desc":"\u10d3\u10d0\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10d0","newdocument_desc":"\u10d0\u10ee\u10d0\u10da\u10d8 \u10d3\u10dd\u10d9\u10e3\u10db\u10d4\u10dc\u10e2\u10d8","image_props_desc":"\u10d2\u10d0\u10db\u10dd\u10e1\u10d0\u10ee\u10e3\u10da\u10d4\u10d1\u10d8\u10e1 \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8","paste_desc":"\u10e9\u10d0\u10e1\u10db\u10d0","copy_desc":"\u10d9\u10dd\u10de\u10d8\u10e0\u10d4\u10d1\u10d0","cut_desc":"\u10d0\u10db\u10dd\u10ed\u10e0\u10d0","anchor_desc":"\u10e6\u10e3\u10d6\u10d0\u10e1 \u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0/\u10e0\u10d4\u10d3\u10d0\u10e5\u10e2\u10d8\u10e0\u10d4\u10d1\u10d0","visualaid_desc":"\u10e7\u10d5\u10d4\u10da\u10d0 \u10e1\u10d8\u10db\u10d1\u10dd\u10da\u10dd","charmap_desc":"\u10e1\u10d8\u10db\u10d1\u10dd\u10da\u10dd\u10e1 \u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0","backcolor_desc":"\u10db\u10dd\u10dc\u10d8\u10e1\u10dc\u10e3\u10da\u10d8 \u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1 \u10e4\u10d4\u10e0\u10d8","forecolor_desc":"\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1 \u10e4\u10d4\u10e0\u10d8","custom1_desc":"\u10e1\u10d0\u10d9\u10e3\u10d7\u10d0\u10e0\u10d8 \u10d0\u10e6\u10ec\u10d4\u10e0\u10d0","removeformat_desc":"\u10e4\u10dd\u10e0\u10db\u10d0\u10e2\u10d8\u10e1 \u10d2\u10d0\u10ec\u10db\u10d4\u10dc\u10d3\u10d0","hr_desc":"\u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0","sup_desc":"\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10d6\u10d4\u10db\u10dd\u10d7","sub_desc":"\u10e1\u10e2\u10d8\u10e0\u10e5\u10dd\u10dc\u10d8\u10e1 \u10e5\u10d5\u10d4\u10db\u10dd\u10d7","code_desc":"HTML \u10d9\u10dd\u10d3\u10d8\u10e1 \u10e0\u10d4\u10d3\u10d0\u10e5\u10e2\u10d8\u10e0\u10d4\u10d1\u10d0","cleanup_desc":"\u10d6\u10d4\u10d3\u10db\u10d4\u10e2\u10d8 \u10d9\u10dd\u10d3\u10d8\u10e1\u10d0\u10d2\u10d0\u10dc \u10d2\u10d0\u10ec\u10db\u10d4\u10dc\u10d3\u10d0","image_desc":"\u10d2\u10d0\u10db\u10dd\u10e1\u10d0\u10ee\u10e3\u10da\u10d4\u10d1\u10d8\u10e1 \u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0/\u10e0\u10d4\u10d3\u10d0\u10e5\u10e2\u10d8\u10e0\u10d4\u10d1\u10d0","unlink_desc":"\u10d1\u10db\u10e3\u10da\u10d8\u10e1 \u10ec\u10d0\u10e8\u10da\u10d0","link_desc":"\u10d1\u10db\u10e3\u10da\u10d8\u10e1 \u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0/\u10e8\u10d4\u10ea\u10d5\u10da\u10d0","redo_desc":"\u10d3\u10d0\u10d1\u10e0\u10e3\u10dc\u10d4\u10d1\u10d0 (Ctrl+Y)","undo_desc":"\u10d2\u10d0\u10e3\u10e5\u10db\u10d4\u10d1\u10d0 (Ctrl+Z)","indent_desc":"\u10d3\u10d0\u10e8\u10dd\u10e0\u10d4\u10d1\u10d8\u10e1 \u10d2\u10d0\u10d6\u10e0\u10d3\u10d0","outdent_desc":"\u10d3\u10d0\u10e8\u10dd\u10e0\u10d4\u10d1\u10d8\u10e1 \u10e8\u10d4\u10db\u10ea\u10d8\u10e0\u10d4\u10d1\u10d0","numlist_desc":"\u10d3\u10d0\u10dc\u10dd\u10db\u10e0\u10d8\u10da\u10d8 \u10e1\u10d8\u10d0","bullist_desc":"\u10db\u10d0\u10e0\u10d9\u10d8\u10e0\u10d4\u10d1\u10e3\u10da\u10d8 \u10e1\u10d8\u10d0","justifyfull_desc":"\u10e1\u10d8\u10d2\u10d0\u10dc\u10d4\u10d6\u10d4","justifyright_desc":"\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1 \u10d2\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d0 \u10db\u10d0\u10e0\u10ef\u10d5\u10dc\u10d8\u10d5","justifycenter_desc":"\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1 \u10d2\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d0 \u10ea\u10d4\u10dc\u10e2\u10e0\u10d6\u10d4","justifyleft_desc":"\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1 \u10d2\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d0 \u10db\u10d0\u10e0\u10ea\u10ee\u10dc\u10d8\u10d5","striketrough_desc":"\u10d2\u10d0\u10d3\u10d0\u10ee\u10d0\u10d6\u10e3\u10da\u10d8","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":"","help_shortcut":"Press ALT-F10 for toolbar. Press ALT-0 for help","rich_text_area":"Rich Text Area","shortcuts_desc":"Accessability Help",toolbar:"Toolbar"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/ka_dlg.js b/program/js/tiny_mce/themes/advanced/langs/ka_dlg.js
deleted file mode 100644
index a25659f34..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/ka_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ka.advanced_dlg',{"link_list":"\u10d1\u10db\u10e3\u10da\u10d4\u10d1\u10d8\u10e1 \u10e1\u10d8\u10d0","link_is_external":"\u10e8\u10d4\u10e7\u10d5\u10d0\u10dc\u10d8\u10da\u10d8 \u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d8 \u10d2\u10d0\u10d5\u10e1 \u10d2\u10d0\u10e0\u10d4 \u10d1\u10db\u10e3\u10da\u10e1, \u10d3\u10d0\u10d5\u10d0\u10db\u10d0\u10d7\u10dd\u10e2 \u10de\u10e0\u10d4\u10e4\u10d8\u10e5\u10e1\u10d8 http://?","link_is_email":"\u10e8\u10d4\u10e7\u10d5\u10d0\u10dc\u10d8\u10da\u10d8 \u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d8 \u10d2\u10d0\u10d5\u10e1 \u10d4\u10da.\u10e4\u10dd\u10e1\u10e2\u10d8\u10e1 \u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10e1, \u10d3\u10d0\u10d5\u10d0\u10db\u10d0\u10e2\u10dd\u10d7 \u10de\u10e0\u10d4\u10e4\u10d8\u10e5\u10e1\u10d8 mailto:?","link_titlefield":"\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8","link_target_blank":"\u10d0\u10ee\u10d0\u10da \u10e4\u10d0\u10dc\u10ef\u10d0\u10e0\u10d0\u10e8\u10d8 \u10d2\u10d0\u10ee\u10e1\u10dc\u10d0","link_target_same":"\u10db\u10dd\u10ea\u10d4\u10db\u10e3\u10da \u10e4\u10d0\u10dc\u10ef\u10d0\u10e0\u10d0\u10e8\u10d8 \u10d2\u10d0\u10ee\u10e1\u10dc\u10d0","link_target":"\u10db\u10d8\u10d6\u10d0\u10dc\u10d8","link_url":"\u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d8","link_title":"\u10d1\u10db\u10e3\u10da\u10d8\u10e1 \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8","image_align_right":"\u10db\u10d0\u10e0\u10ef\u10d5\u10d4\u10dc\u10d0 \u10d9\u10d8\u10d3\u10d4\u10d6\u10d4","image_align_left":"\u10db\u10d0\u10e0\u10ea\u10ee\u10d4\u10dc\u10d0 \u10d9\u10d8\u10d3\u10d4\u10d6\u10d4","image_align_textbottom":"\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1 \u10e5\u10d5\u10d4\u10d3\u10d0 \u10d9\u10d8\u10d3\u10d4\u10d6\u10d4","image_align_texttop":"\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1 \u10d6\u10d4\u10d3\u10d0 \u10d9\u10d8\u10d3\u10d4\u10d6\u10d4","image_align_bottom":"\u10e5\u10d5\u10d4\u10d3\u10d0 \u10d9\u10d8\u10d3\u10d4\u10d6\u10d4","image_align_middle":"\u10ea\u10d4\u10dc\u10e2\u10e0\u10d6\u10d4","image_align_top":"\u10d6\u10d4\u10d3\u10d0 \u10d9\u10d8\u10d3\u10d4\u10d6\u10d4","image_align_baseline":"\u10e1\u10d0\u10d1\u10d0\u10d6\u10e1\u10dd \u10ee\u10d0\u10d6\u10d8\u10e1 \u10db\u10d8\u10ee\u10d4\u10d3\u10d5\u10d8\u10d7","image_align":"\u10d2\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d0","image_hspace":"\u10f0\u10dd\u10e0\u10d8\u10d6\u10dd\u10dc\u10e2. \u10d3\u10d0\u10e8\u10dd\u10e0\u10d4\u10d1\u10d0","image_vspace":"\u10d5\u10d4\u10e0\u10e2. \u10d3\u10d0\u10e8\u10dd\u10e0\u10d4\u10d1\u10d0","image_dimensions":"\u10d6\u10dd\u10db\u10d0","image_alt":"\u10d0\u10e6\u10ec\u10d4\u10e0\u10d0","image_list":"\u10d2\u10d0\u10db\u10dd\u10e1\u10d0\u10ee\u10e3\u10da\u10d4\u10d1\u10d4\u10d1\u10d8\u10e1 \u10e1\u10d8\u10d0","image_border":"\u10e9\u10d0\u10e0\u10e9\u10dd","image_src":"\u10db\u10d8\u10e1\u10d0\u10db\u10d0\u10e0\u10d7\u10d8","image_title":"\u10d2\u10d0\u10db\u10dd\u10e1\u10d0\u10ee\u10e3\u10da\u10d4\u10d1\u10d8\u10e1 \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8","charmap_title":"\u10e1\u10d8\u10db\u10d1\u10dd\u10da\u10dd\u10e1 \u10d0\u10e0\u10e9\u10d4\u10d5\u10d0","colorpicker_name":"\u10e1\u10d0\u10ee\u10d4\u10da\u10ec\u10dd\u10d3\u10d4\u10d1\u10d0:","colorpicker_color":"\u10d9\u10dd\u10d3\u10d8:","colorpicker_named_title":"\u10e4\u10d4\u10e0\u10d4\u10d1\u10d8","colorpicker_named_tab":"\u10e1\u10d0\u10ee\u10d4\u10da\u10ec\u10dd\u10d3\u10d4\u10d1\u10d0","colorpicker_palette_title":"\u10e4\u10d4\u10e0\u10d4\u10d1\u10d8","colorpicker_palette_tab":"\u10de\u10d0\u10da\u10d8\u10e2\u10e0\u10d0","colorpicker_picker_title":"\u10e4\u10d4\u10e0\u10d7\u10d0 \u10e8\u10d4\u10db\u10e0\u10e9\u10d4\u10d5\u10d8","colorpicker_picker_tab":"\u10e1\u10de\u10d4\u10e5\u10e2\u10e0\u10d8","colorpicker_title":"\u10d0\u10d5\u10d8\u10e0\u10e9\u10d8\u10dd\u10d7 \u10e4\u10d4\u10e0\u10d8","code_wordwrap":"\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10d2\u10d0\u10d3\u10d0\u10e2\u10d0\u10dc\u10d0","code_title":"HTML \u10d9\u10dd\u10d3\u10d8\u10e1 \u10e0\u10d4\u10d3\u10d0\u10e5\u10e2\u10dd\u10e0\u10d8","anchor_name":"\u10e6\u10e3\u10d6\u10d0\u10e1 \u10e1\u10d0\u10ee\u10d4\u10da\u10d8","anchor_title":"\u10e6\u10e3\u10d6\u10d0\u10e1 \u10de\u10d0\u10e0\u10d0\u10db\u10d4\u10e2\u10e0\u10d4\u10d1\u10d8","about_loaded":"\u10db\u10d8\u10db\u10d0\u10d2\u10e0\u10d4\u10d1\u10e3\u10da\u10d8 \u10de\u10da\u10d0\u10d2\u10d8\u10dc\u10d4\u10d1\u10d8","about_version":"\u10d5\u10d4\u10e0\u10e1\u10d8\u10d0","about_author":"\u10d0\u10d5\u10e2\u10dd\u10e0\u10d8","about_plugin":"\u10de\u10da\u10d0\u10d2\u10d8\u10dc\u10d8","about_plugins":"\u10de\u10da\u10d0\u10d2\u10d8\u10dc\u10d4\u10d1\u10d8","about_license":"\u10da\u10d8\u10ea\u10d4\u10dc\u10d6\u10d8\u10d0","about_help":"\u10d3\u10d0\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10d0","about_general":"\u10d0\u10e6\u10ec\u10d4\u10e0\u10d8\u10da\u10dd\u10d1\u10d0","about_title":"TinyMCE \u10d0\u10e6\u10ec\u10d4\u10e0\u10d8\u10da\u10dd\u10d1\u10d0","anchor_invalid":"\u10e8\u10d4\u10d8\u10e7\u10d5\u10d0\u10dc\u10d4\u10d7 \u10e6\u10e3\u10d6\u10d0\u10e1 \u10d9\u10dd\u10e0\u10d4\u10e5\u10e2\u10e3\u10da\u10d8 \u10e1\u10d0\u10ee\u10d4\u10da\u10d8.","accessibility_help":"Accessibility Help","accessibility_usage_title":"General Usage"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/ko.js b/program/js/tiny_mce/themes/advanced/langs/ko.js
deleted file mode 100644
index 43a436801..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/ko.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ko.advanced',{"underline_desc":"\ubc11\uc904(Ctrl-U)","italic_desc":"\uae30\uc6b8\uc778 \uae00\uaf34(Ctrl-I)","bold_desc":"\uad75\uc740 \uae00\uaf34(Ctrl-B)",dd:"\uc815\uc758 \uc124\uba85",dt:"\uc815\uc758 \uc5b4\uad6c",samp:"\ucf54\ub4dc \uc608\uc2dc",code:"\ucf54\ub4dc",blockquote:"\uc778\uc6a9\ubb38",h6:"\ud45c\uc81c6",h5:"\ud45c\uc81c5",h4:"\ud45c\uc81c4",h3:"\ud45c\uc81c3",h2:"\ud45c\uc81c2",h1:"\ud45c\uc81c1",pre:"pre",address:"\uc8fc\uc18c",div:"Div",paragraph:"\ub2e8\ub77d",block:"\ud615\uc2dd",fontdefault:"\uae00\uaf34\uad70","font_size":"\uae00\uaf34 \ud06c\uae30","style_select":"\uc11c\uc2dd","more_colors":"\uadf8 \uc678\uc758 \uc0c9","toolbar_focus":"\ubc84\ud2bc\uc73c\ub85c \uc810\ud504 - Alt-Q, \uc5d0\ub514\ud130\ub85c \uc810\ud504 - Alt-Z, Jump to element path - Alt-X",newdocument:"\uc815\ub9d0 \ubaa8\ub4e0 \ub0b4\uc6a9\uc744 \uc9c0\uc6b0\uc2dc\uaca0\uc2b5\ub2c8\uae4c?",path:"\uacbd\ub85c","clipboard_msg":"Mozilla \ubc0f Firefox\uc5d0\uc11c\ub294 \ubcf5\uc0ac/\uc798\ub77c\ub0b4\uae30/\ubd99\uc774\uae30\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc774 \ubb38\uc81c\uc5d0 \ub300\ud574 \ub354 \uc790\uc138\ud55c \uc0ac\ud56d\uc744 \ubcf4\uc2dc\uaca0\uc2b5\ub2c8\uae4c?","blockquote_desc":"\uc778\uc6a9\ubb38","help_desc":"\ub3c4\uc6c0\ub9d0","newdocument_desc":"\uc0c8 \ubb38\uc11c","image_props_desc":"\uc774\ubbf8\uc9c0 \uc18d\uc131","paste_desc":"\ubd99\uc774\uae30(Ctrl-V)","copy_desc":"\ubcf5\uc0ac(Ctrl-C)","cut_desc":"\uc798\ub77c\ub0b4\uae30(Ctrl-X)","anchor_desc":"\uc575\ucee4 \uc0bd\uc785/\ud3b8\uc9d1","visualaid_desc":"\uc548\ub0b4\uc120 \ubc0f \ubcf4\uc774\uc9c0 \uc54a\ub294 \uc694\uc18c \ubcf4\uc784/\uc228\uae40","charmap_desc":"\ud2b9\uc218 \ubb38\uc790 \uc0bd\uc785","backcolor_desc":"\ubc30\uacbd\uc0c9 \uc120\ud0dd","forecolor_desc":"\uae00\uc790\uc0c9 \uc120\ud0dd","custom1_desc":"\uc5ec\uae30\uc5d0 \uc124\uba85 \uc785\ub825","removeformat_desc":"\ud615\uc2dd \ud574\uc81c","hr_desc":"\uad6c\ubd84\uc120 \uc0bd\uc785","sup_desc":"\uc704\ucca8\uc790","sub_desc":"\uc544\ub798\ucca8\uc790","code_desc":"HTML \uc18c\uc2a4 \ud3b8\uc9d1","cleanup_desc":"\ubcf5\uc7a1\ud55c \ucf54\ub4dc \uc815\ub9ac","image_desc":"\uc774\ubbf8\uc9c0 \uc0bd\uc785/\ud3b8\uc9d1","unlink_desc":"\ub9c1\ud06c \ud574\uc81c","link_desc":"\ub9c1\ud06c \uc0bd\uc785/\ud3b8\uc9d1","redo_desc":"\uc7ac\uc2e4\ud589(Ctrl-Y)","undo_desc":"\uc2e4\ud589 \ucde8\uc18c(Ctrl-Z)","indent_desc":"\ub354 \ub4e4\uc5ec\uc4f0\uae30","outdent_desc":"\ub354 \ub0b4\uc5b4\uc4f0\uae30","numlist_desc":"\ubc88\ud638 \ubaa9\ub85d \uc0bd\uc785/\uc81c\uac70","bullist_desc":"\uae30\ud638 \ubaa9\ub85d \uc0bd\uc785/\uc81c\uac70","justifyfull_desc":"\uc591\ucabd \ub9de\ucda4","justifyright_desc":"\uc624\ub978\ucabd \ub9de\ucda4","justifycenter_desc":"\uac00\uc6b4\ub370 \ub9de\ucda4","justifyleft_desc":"\uc67c\ucabd \ub9de\ucda4","striketrough_desc":"\ucde8\uc18c\uc120","help_shortcut":"\ub3c4\uad6c \ubaa8\uc74c\uc740 ALT-F10\uc744, \ub3c4\uc6c0\ub9d0\uc740 ALT-0\uc744 \ub204\ub974\uc138\uc694.",toolbar:"\ub3c4\uad6c \ubaa8\uc74c","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":"","rich_text_area":"Rich Text Area","shortcuts_desc":"Accessability Help"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/ko_dlg.js b/program/js/tiny_mce/themes/advanced/langs/ko_dlg.js
deleted file mode 100644
index 4bdb79f18..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/ko_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ko.advanced_dlg',{"link_list":"\ub9c1\ud06c \ubaa9\ub85d","link_is_external":"\uc785\ub825\ud558\uc2e0 URL\uc740 \uc678\ubd80 \ub9c1\ud06c\ub85c \ud310\ub2e8\ub429\ub2c8\ub2e4. URL \uc55e\uc5d0 \ud544\uc218\uc801\uc778 http://\ub97c \ubd99\uc774\uc2dc\uaca0\uc2b5\ub2c8\uae4c?","link_is_email":"\uc785\ub825\ud558\uc2e0 URL\uc740 e\uba54\uc77c \uc8fc\uc18c\ub85c \ud310\ub2e8\ub429\ub2c8\ub2e4. URL \uc55e\uc5d0 \ud544\uc218\uc801\uc778 mailto:\ub97c \ubd99\uc774\uc2dc\uaca0\uc2b5\ub2c8\uae4c?","link_titlefield":"\uc81c\ubaa9","link_target_blank":"\uc0c8 \ucc3d\uc5d0\uc11c \ub9c1\ud06c \uc5f4\uae30","link_target_same":"\uac19\uc740 \ucc3d\uc5d0\uc11c \ub9c1\ud06c \uc5f4\uae30","link_target":"Target","link_url":"\ub9c1\ud06c URL","link_title":"\ub9c1\ud06c \uc0bd\uc785/\ud3b8\uc9d1","image_align_right":"Right","image_align_left":"Left","image_align_textbottom":"Text bottom","image_align_texttop":"Text top","image_align_bottom":"Bottom","image_align_middle":"Middle","image_align_top":"Top","image_align_baseline":"\uae30\uc900\uc120","image_align":"\uc904 \ub9de\ucda4","image_hspace":"\uc88c\uc6b0 \uc5ec\ubc31","image_vspace":"\uc0c1\ud558 \uc5ec\ubc31","image_dimensions":"\ud06c\uae30","image_alt":"\uc774\ubbf8\uc9c0 \uc124\uba85","image_list":"\uc774\ubbf8\uc9c0 \ubaa9\ub85d","image_border":"\ud14c\ub450\ub9ac\uc120","image_src":"\uc774\ubbf8\uc9c0 URL","image_title":"\uc774\ubbf8\uc9c0 \uc0bd\uc785/\ud3b8\uc9d1","charmap_title":"\ud2b9\uc218 \ubb38\uc790 \uc120\ud0dd","colorpicker_name":"\uc774\ub984:","colorpicker_color":"\uc0c9:","colorpicker_named_title":"\uc0c9 \uc774\ub984","colorpicker_named_tab":"\uc0c9 \uc774\ub984","colorpicker_palette_title":"\ud314\ub808\ud2b8 \uc0c9","colorpicker_palette_tab":"\ud314\ub808\ud2b8","colorpicker_picker_title":"\uc0c9 \uc120\ud0dd\uae30","colorpicker_picker_tab":"\uc120\ud0dd\uae30","colorpicker_title":"\uc0c9 \uc120\ud0dd","code_wordwrap":"\uc904\ubc14\uafc8","code_title":"HTML \uc18c\uc2a4 \ud3b8\uc9d1","anchor_name":"\uc575\ucee4 \uba85","anchor_title":"\uc575\ucee4 \uc0bd\uc785/\ud3b8\uc9d1","about_loaded":"\ub85c\ub529\ud55c \ud50c\ub7ec\uadf8\uc778","about_version":"\ubc84\uc804","about_author":"\uc81c\uc791\uc790","about_plugin":"\ud50c\ub7ec\uadf8\uc778","about_plugins":"\ud50c\ub7ec\uadf8\uc778","about_license":"\ub77c\uc774\uc120\uc2a4","about_help":"\ub3c4\uc6c0\ub9d0","about_general":"\ud504\ub85c\uadf8\ub7a8 \uc815\ubcf4","about_title":"TinyMCE \uc815\ubcf4","charmap_usage":"\uc88c\uc6b0 \ud654\uc0b4\ud45c\ub97c \uc0ac\uc6a9\ud574 \uc120\ud0dd\ud558\uc2e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.","anchor_invalid":"\uc801\uc808\ud55c \uc575\ucee4 \uba85\uc744 \uc9c0\uc815\ud574\uc8fc\uc138\uc694.","accessibility_usage_title":"\uc77c\ubc18 \uc0ac\uc6a9\ubc95","invalid_color_value":"\uc0c9 \uac12\uc774 \ubd80\uc801\ud569\ud568","accessibility_help":"Accessibility Help"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/lt.js b/program/js/tiny_mce/themes/advanced/langs/lt.js
deleted file mode 100644
index 30563548b..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/lt.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('lt.advanced',{"underline_desc":"Pabrauktas (Ctrl+U)","italic_desc":"Kursyvas (Ctrl+I)","bold_desc":"Pusjuodis (Ctrl+B)",dd:"Apibr\u0117\u017eimo apra\u0161as",dt:"Apibr\u0117\u017eimo terminas",samp:"Kodo pavyzdys",code:"Kodas",blockquote:"Citatos blokas",h6:"Antra\u0161t\u0117 6",h5:"Antra\u0161t\u0117 5",h4:"Antra\u0161t\u0117 4",h3:"Antra\u0161t\u0117 3",h2:"Antra\u0161t\u0117 2",h1:"Antra\u0161t\u0117 1",pre:"I\u0161 anksto formatuotas",address:"Adresas",div:"Div \u017eym\u0117",paragraph:"Paragrafas",block:"Formatas",fontdefault:"\u0160rifto \u0161eima","font_size":"\u0160rifto dydis","style_select":"Stiliai","link_delta_width":"70","more_colors":"Daugiau spalv\u0173","toolbar_focus":"Per\u0161okimas prie \u012franki\u0173 juostos mygtuk\u0173 - Alt+Q, Per\u0161okimas prie redaktoriaus - Alt-Z, Per\u0161okimas prie element\u0173 kelio - Alt-X",newdocument:"Ar tikrai norite i\u0161valyti vis\u0105 turin\u012f?",path:"Kelias","clipboard_msg":"Kopijavimas/I\u0161kirpimas/\u012ed\u0117jimas negalimas Mozilla ir Firefox nar\u0161ykl\u0117se.\nAr norite daugiau informacijos apie \u0161i\u0105 problem\u0105?","blockquote_desc":"Citatos blokas","help_desc":"Pagalba","newdocument_desc":"Naujas dokumentas","image_props_desc":"Paveiksl\u0117lio nustatymai","paste_desc":"\u012ed\u0117ti","copy_desc":"Kopijuoti","cut_desc":"I\u0161kirpti","anchor_desc":"\u012eterpti/redaguoti prierai\u0161\u0105","visualaid_desc":"Kaitalioti gaires/nematom\u0173 element\u0173 rodym\u0105","charmap_desc":"\u012eterpti nestandartin\u012f simbol\u012f","backcolor_desc":"Parinkti fono spalv\u0105","forecolor_desc":"Parinkti teksto spalv\u0105","custom1_desc":"J\u016bs\u0173 apra\u0161as \u010dia","removeformat_desc":"Pa\u0161alinti formatavim\u0105","hr_desc":"\u012eterpti horizontali\u0105 linij\u0105","sup_desc":"Vir\u0161utinis indeksas","sub_desc":"Apatinis indeksas","code_desc":"Redaguoti HTML i\u0161eities kod\u0105","cleanup_desc":"I\u0161valyti netvarking\u0105 kod\u0105","image_desc":"\u012eterpti/redaguoti paveiksl\u0117l\u012f","unlink_desc":"Pa\u0161alinti nuorod\u0105","link_desc":"\u012eterpti/redaguoti nuorod\u0105","redo_desc":"Gr\u0105\u017einti (Ctrl+Y)","undo_desc":"At\u0161aukti (Ctrl+Z)","indent_desc":"\u012etrauka","outdent_desc":"Atvirk\u0161tin\u0117 \u012ftrauka","numlist_desc":"Sunumeruotas s\u0105ra\u0161as","bullist_desc":"Nesunumeruotas s\u0105ra\u0161as","justifyfull_desc":"Lygiuoti pagal abu kra\u0161tus","justifyright_desc":"Lygiuoti pagal de\u0161in\u0119","justifycenter_desc":"Centruoti","justifyleft_desc":"Lygiuoti pagal kair\u0119","striketrough_desc":"Perbrauktas","help_shortcut":"Paspauskite ALT-F10 \u012fjungti u\u017eduo\u010di\u0173 juostai. Paspauskite ALT-0 jei reikia pagalbos","rich_text_area":"Suformatuoto teksto laukas","shortcuts_desc":"Accessability Help",toolbar:"U\u017eduo\u010di\u0173 juosta","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/lt_dlg.js b/program/js/tiny_mce/themes/advanced/langs/lt_dlg.js
deleted file mode 100644
index 2474073fb..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/lt_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('lt.advanced_dlg',{"link_list":"Nuorod\u0173 s\u0105ra\u0161as","link_is_external":"URL adresas, kur\u012f \u012fved\u0117te yra i\u0161orin\u0117 nuoroda, ar norite prid\u0117ti reikaling\u0105 http:// prefiks\u0105?","link_is_email":"URL adresas, kur\u012f \u012fved\u0117te yra el. pa\u0161to adresas, ar norite prid\u0117ti reikaling\u0105 mailto: prefiks\u0105?","link_titlefield":"Pavadinimas","link_target_blank":"Atverti naujame lange","link_target_same":"Atverti tame pa\u010diame lange","link_target":"Paskirtis","link_url":"Nuorodos URL adresas","link_title":"\u012eterpti/redaguoti nuorod\u0105","image_align_right":"De\u0161in\u0117je","image_align_left":"Kair\u0117je","image_align_textbottom":"Teksto apa\u010dioje","image_align_texttop":"Teksto vir\u0161uje","image_align_bottom":"Apa\u010dioje","image_align_middle":"Viduryje","image_align_top":"Vir\u0161uje","image_align_baseline":"Pradiniame ta\u0161ke","image_align":"Lygiavimas","image_hspace":"Horizontalus tarpas","image_vspace":"Vertikalus tarpas","image_dimensions":"I\u0161matavimai","image_alt":"Paveiksl\u0117lio apra\u0161as","image_list":"Paveiksl\u0117li\u0173 s\u0105ra\u0161as","image_border":"R\u0117melis","image_src":"Paveiksl\u0117lio URL adresas","image_title":"\u012eterpti/redaguoti paveiksl\u0117l\u012f","charmap_title":"Pasirinkti nestandartin\u012f simbol\u012f","colorpicker_name":"Pavadinimas:","colorpicker_color":"Spalva:","colorpicker_named_title":"\u012evardintosios spalvos","colorpicker_named_tab":"\u012evardintosios","colorpicker_palette_title":"Palet\u0117s spalvos","colorpicker_palette_tab":"Palet\u0117","colorpicker_picker_title":"Spalvos parinkiklis","colorpicker_picker_tab":"Parinkiklis","colorpicker_title":"Pasirinkti spalv\u0105","code_wordwrap":"Skaidyti tekst\u0105","code_title":"HTML i\u0161eities kodo redaktorius","anchor_name":"Prierai\u0161o vardas","anchor_title":"\u012eterpti/redaguoti prierai\u0161\u0105","about_loaded":"\u012ekelti papildiniai","about_version":"Versija","about_author":"Autorius","about_plugin":"Papildinys","about_plugins":"Papildiniai","about_license":"Licencija","about_help":"Pagalba","about_general":"Apie","about_title":"Apie TinyMCE","charmap_usage":"Naudokite kair\u0117s ir de\u0161in\u0117s rodykles norint nar\u0161yti.","anchor_invalid":"\u012eveskite teising\u0105 prierai\u0161os vard\u0105.","accessibility_help":"Prieinamumo pagalba","accessibility_usage_title":"Bendrojo naudojimo"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/lv.js b/program/js/tiny_mce/themes/advanced/langs/lv.js
deleted file mode 100644
index e7ed14315..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/lv.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('lv.advanced',{"underline_desc":"Pasv\u012btrojums (Ctrl+U)","italic_desc":"Sl\u012bpraksts (Ctrl+I)","bold_desc":"Treknraksts (Ctrl+B)",dd:"Defin\u012bcijas apraksts",dt:"Defin\u012bcijas termins ",samp:"Koda piem\u0113rs",code:"Kods",blockquote:"Cit\u0101ts",h6:"Virsraksts 6",h5:"Virsraksts 5",h4:"Virsraksts 4",h3:"Virsraksts 3",h2:"Virsraksts 2",h1:"Virsraksts 1",pre:"Priek\u0161format\u0113ts",address:"Adrese",div:"Div\u012bzija",paragraph:"Rindkopa",block:"Form\u0101ts",fontdefault:"Fonta veids","font_size":"Fonta lielums","style_select":"Stili","more_colors":"Vair\u0101k kr\u0101su","toolbar_focus":"Iet uz r\u012bkpog\u0101m - Alt+Q, Iet uz redaktoru - Alt-Z, Iet uz elementa atra\u0161an\u0101s vietu - Alt-X",newdocument:"Vai J\u016bs esat p\u0101rliecin\u0101ti, ka v\u0113laties izdz\u0113st visu saturu?",path:"Atra\u0161an\u0101s vieta","clipboard_msg":"Iesp\u0113ja Kop\u0113t/Izgriezt/Iekop\u0113t nav pieejama p\u0101rl\u016bkiem Mozilla and Firefox.\nVai J\u016bs v\u0113laties uzzin\u0101t vair\u0101k par \u0161o probl\u0113mu?","blockquote_desc":"Cit\u0101ts","help_desc":"Pal\u012bdz\u012bba","newdocument_desc":"Jauns dokuments","image_props_desc":"Bildes iestat\u012bjumi","paste_desc":"Iekop\u0113t","copy_desc":"Kop\u0113t","cut_desc":"Izgriezt","anchor_desc":"Ievietot/Redi\u0123\u0113t enkursaiti","visualaid_desc":"Uzlikt/Nov\u0101kt pal\u012bgsv\u012btras/neredzamos elementus","charmap_desc":"Ievietot simbolu","backcolor_desc":"Uzst\u0101d\u012bt fona kr\u0101su","forecolor_desc":"Uzst\u0101d\u012bt teksta kr\u0101su","custom1_desc":"Tevis izdom\u0101ts apraksts \u0161eit","removeformat_desc":"Izdz\u0113st format\u0113to","hr_desc":"Ievietot horizont\u0101lu sv\u012btru","sup_desc":"Aug\u0161raksts","sub_desc":"Apak\u0161raksts","code_desc":"Redi\u0123\u0113t HTML kodu","cleanup_desc":"Izt\u012br\u012bt nek\u0101rt\u012bgu kodu","image_desc":"Ievietot/Redi\u0123\u0113t att\u0113lu","unlink_desc":"Atsait\u0113t","link_desc":"Ievietot/Redi\u0123\u0113t saiti","redo_desc":"Atatsaukt (Ctrl+Y)","undo_desc":"Atsaukt (Ctrl+Z)","indent_desc":"Atk\u0101pe","outdent_desc":"Uzk\u0101pe","numlist_desc":"Numur\u0113ts saraksts","bullist_desc":"Nenumur\u0113ts saraksts","justifyfull_desc":"Nol\u012bdzin\u0101t malas","justifyright_desc":"Novietot pa labi","justifycenter_desc":"Centr\u0113t","justifyleft_desc":"Novietot pa kreisi","striketrough_desc":"P\u0101rsv\u012btrojums","help_shortcut":"Ieklik\u0161\u0137iniet uz ALT-F10 lai iesl\u0113gtu uzdevumu joslu. Ieklik\u0161\u0137iniet uz ALT-0, ja nepiecie\u0161ama pal\u012bdz\u012bba",toolbar:"Uzdevumu josla","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":"","rich_text_area":"Rich Text Area","shortcuts_desc":"Accessability Help"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/lv_dlg.js b/program/js/tiny_mce/themes/advanced/langs/lv_dlg.js
deleted file mode 100644
index e19b9e260..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/lv_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('lv.advanced_dlg',{"link_list":"Sai\u0161u saraksts","link_is_external":"Ievad\u012btais URL \u0161\u0137iet ir \u0101r\u0113j\u0101 saite, vai tu v\u0113lies pirms t\u0101s pievienot http:// pried\u0113kli?","link_is_email":"Ievad\u012btais URL \u0161\u0137iet ir e-pasta adrese, vai tu v\u0113lies pirms t\u0101s pievienot mailto: pried\u0113kli? ","link_titlefield":"Nosaukums","link_target_blank":"Atv\u0113rt saiti jaun\u0101 log\u0101","link_target_same":"Atv\u0113rt saiti \u0161ai pa\u0161\u0101 log\u0101","link_target":"M\u0113r\u0137is","link_url":"Saites URL","link_title":"Ievietot/Redi\u0123\u0113t saiti","image_align_right":"Pa labi","image_align_left":"Pa kreisi","image_align_textbottom":"Teksta apak\u0161a","image_align_texttop":"Teksta aug\u0161a","image_align_bottom":"Apak\u0161a","image_align_middle":"Vidus","image_align_top":"Aug\u0161a","image_align_baseline":"Pati apak\u0161a","image_align":"Novietojums","image_hspace":"Horizont\u0101l\u0101 atstarpe","image_vspace":"Vertik\u0101l\u0101 atstarpe","image_dimensions":"Izm\u0113ri","image_alt":"Att\u0113la apraksts","image_list":"Att\u0113lu saraksts","image_border":"Apmale","image_src":"Att\u0113la URL","image_title":"Ievietot/Redi\u0123\u0113t att\u0113lu","charmap_title":"Izv\u0113lies simbolu","colorpicker_name":"Nosaukums:","colorpicker_color":"Kr\u0101sa:","colorpicker_named_title":"Nosaukt\u0101s kr\u0101sas","colorpicker_named_tab":"Nosaukts","colorpicker_palette_title":"Kr\u0101su palete","colorpicker_palette_tab":"Palete","colorpicker_picker_title":"Kr\u0101su izv\u0113lnis","colorpicker_picker_tab":"Izv\u0113lnis","colorpicker_title":"Izv\u0113l\u0113ties kr\u0101su","code_wordwrap":"V\u0101rdu p\u0101rne\u0161ana jaun\u0101 rind\u0101","code_title":"HTML koda redaktors","anchor_name":"Enkursaites nosaukums","anchor_title":"Ievietot/Redi\u0123\u0113t enkursaiti","about_loaded":"Iestat\u012btie papildmodu\u013ci","about_version":"Versija","about_author":"Autors","about_plugin":"Papildmodulis","about_plugins":"Papildmodu\u013ci","about_license":"Licence","about_help":"Pal\u012bdz\u012bba","about_general":"Par","about_title":"Par TinyMCE","charmap_usage":"Izmantojiet kreis\u0101s un lab\u0101s puses r\u0101d\u012bt\u0101jus, ja v\u0113laties p\u0101rl\u016bkot","anchor_invalid":"Nor\u0101diet sp\u0113k\u0101 eso\u0161u paz\u012bmes v\u0101rdu","accessibility_help":"Pieejam\u012bbas pal\u012bdz\u012bba","accessibility_usage_title":"Kop\u0113j\u0101s lieto\u0161anas","invalid_color_value":"Invalid color value"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/mk.js b/program/js/tiny_mce/themes/advanced/langs/mk.js
deleted file mode 100644
index b95e95df3..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/mk.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('mk.advanced',{"underline_desc":"\u041f\u043e\u0434\u0432\u043b\u0435\u0447\u0435\u043d\u043e (Ctrl U)","italic_desc":"\u0417\u0430\u043a\u043e\u0441\u0435\u043d\u043e (Ctrl I)","bold_desc":"\u0417\u0434\u0435\u0431\u0435\u043b\u0435\u043d\u043e (Ctrl B)",dd:"\u041e\u043f\u0438\u0441 \u043d\u0430 \u0434\u0435\u0444\u0438\u043d\u0438\u0446\u0438\u0458\u0430\u0442\u0430",dt:"\u0414\u0435\u0444\u0438\u043d\u0438\u0446\u0438\u0458\u0430 \u043d\u0430 \u043f\u043e\u0438\u043c",samp:"\u041f\u0440\u0438\u0438\u043c\u0435\u0440 \u043d\u0430 \u043a\u043e\u0434\u043e\u0442",code:"\u041a\u043e\u0434",blockquote:"\u0426\u0438\u0442\u0430\u0442",h6:"\u041d\u0430\u0441\u043b\u043e\u0432 6",h5:"\u041d\u0430\u0441\u043b\u043e\u0432 5",h4:"\u041d\u0430\u0441\u043b\u043e\u0432 4",h3:"\u041d\u0430\u0441\u043b\u043e\u0432 3",h2:"\u041d\u0430\u0441\u043b\u043e\u0432 2",h1:"\u041d\u0430\u0441\u043b\u043e\u0432 1",pre:"\u041e\u0431\u043b\u0438\u043a\u0443\u0432\u0430\u043d\u043e",address:"\u0410\u0434\u0440\u0435\u0441\u0430",div:"Div",paragraph:"\u041f\u0430\u0440\u0430\u0433\u0440\u0430\u0444",block:"\u0424\u043e\u0440\u043c\u0430\u0442",fontdefault:"\u0412\u0438\u0434 \u043d\u0430 \u0444\u043e\u043d\u0442","font_size":"\u0412\u0435\u043b\u0438\u0447\u0438\u043d\u0430 \u043d\u0430 \u0444\u043e\u043d\u0442\u043e\u0442","style_select":"\u0421\u0442\u0438\u043b\u043e\u0432\u0438","more_colors":"\u041f\u043e\u0432\u0435\u045c\u0435 \u0431\u043e\u0438 ...","toolbar_focus":"\u041f\u043e\u043c\u0438\u043d\u0438 \u043d\u0430 \u043b\u0438\u043d\u0438\u0458\u0430\u0442\u0430 \u0441\u043e \u0430\u043b\u0430\u0442\u043a\u0438 - Alt Q, \u043f\u043e\u043c\u0438\u043d\u0438 \u043d\u0430 \u0443\u0440\u0435\u0434\u0443\u0432\u0430\u0447\u043e\u0442- Alt-Z, \u043f\u043e\u043c\u0438\u043d\u0438 \u043d\u0430 \u043f\u0430\u0442\u0435\u043a\u0430\u0442\u0430 \u0437\u0430 \u0435\u043b\u0435\u043c\u0435\u043d\u0442\u0438 - Alt-X",newdocument:"\u0414\u0430\u043b\u0438 \u0441\u0442\u0435 \u0441\u0438\u0433\u0443\u0440\u043d\u0438\u043e \u0434\u0435\u043a\u0430 \u0441\u0430\u043a\u0430\u0442\u0435 \u0434\u0430 \u0458\u0430 \u0438\u0437\u0431\u0440\u0438\u0448\u0435\u0442\u0435 \u0446\u0435\u043b\u0430 \u0441\u043e\u0434\u0440\u0436\u0438\u043d\u0430 ?",path:"\u041f\u0430\u0442\u0435\u043a\u0430","clipboard_msg":"\u041a\u043e\u043f\u0438\u0440\u0430\u0458/\u041f\u0440\u0435\u0441\u0435\u0447\u0438/\u0412\u043c\u0435\u0442\u043d\u0438 \u043d\u0435 \u0435 \u043d\u0430 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u045a\u0435 \u0432\u043e Mozilla \u0438 Firefox. \u0414\u0430\u043b\u0438 \u0441\u0430\u043a\u0430\u0442\u0435 \u043f\u043e\u0432\u0435\u045c\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0437\u0430 \u043e\u0432\u0430 \u043f\u0440\u0430\u0448\u0430\u045a\u0435?","blockquote_desc":"\u0426\u0438\u0442\u0438\u0440\u0430\u0458","help_desc":"\u041f\u043e\u043c\u043e\u0448","newdocument_desc":"\u041d\u043e\u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442","image_props_desc":"\u0421\u0432\u043e\u0458\u0441\u0442\u0432\u0430 \u043d\u0430 \u0441\u043b\u0438\u043a\u0430\u0442\u0430","paste_desc":"\u0412\u043c\u0435\u0442\u043d\u0438 (Ctrl V)","copy_desc":"\u041a\u043e\u043f\u0438\u0440\u0430\u0458 (Ctrl C)","cut_desc":"\u0418\u0441\u0435\u0447\u0438 (Ctrl X)","anchor_desc":"\u0412\u043d\u0435\u0441\u0438/\u0443\u0440\u0435\u0434\u0438 \u0441\u0438\u0434\u0440\u043e","visualaid_desc":"\u043f\u0440\u0438\u043a\u0430\u0436\u0438/\u0441\u043e\u043a\u0440\u0438 \u0443\u043f\u0430\u0442\u0441\u0442\u0432\u043e/\u043d\u0435\u0432\u0438\u0434\u043b\u0438\u0432\u0438 \u0435\u043b\u0435\u043c\u0435\u043d\u0442\u0438","charmap_desc":"\u0412\u043d\u0435\u0441\u0438 \u0441\u043f\u0435\u0446\u0438\u0458\u0430\u043b\u0435\u043d \u0437\u043d\u0430\u043a","backcolor_desc":"\u0418\u0437\u0431\u0435\u0440\u0438 \u0431\u043e\u0458\u0430 \u043d\u0430 \u043f\u043e\u0437\u0430\u0434\u0438\u043d\u0430","forecolor_desc":"\u0418\u0437\u0431\u0435\u0440\u0438 \u0431\u043e\u0458\u0430 \u043d\u0430 \u0442\u0435\u043a\u0441\u0442","custom1_desc":"\u0421\u043e\u043f\u0441\u0442\u0432\u0435\u043d \u043e\u043f\u0438\u0441 \u043e\u0432\u0434\u0435","removeformat_desc":"\u041f\u043e\u043d\u0438\u0448\u0442\u0438 \u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0430\u045a\u0435\u0442\u043e","hr_desc":"\u0412\u043d\u0435\u0441\u0438 \u0445\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u043d\u0430 \u043b\u0438\u043d\u0438\u0458\u0430","sup_desc":"\u0415\u043a\u0441\u043f\u043e\u043d\u0435\u043d\u0442","sub_desc":"\u0418\u043d\u0434\u0435\u043a\u0441","code_desc":"\u0423\u0440\u0435\u0434\u0438 \u0433\u043e HTML \u0438\u0437\u0432\u043e\u0440\u043e\u0442","cleanup_desc":"\u0421\u0440\u0435\u0434\u0438 \u0433\u043e \u043a\u043e\u0434\u043e\u0442","image_desc":"\u0412\u043d\u0435\u0441\u0438/\u0443\u0440\u0435\u0434\u0438 \u0441\u043b\u0438\u043a\u0430","unlink_desc":"\u041e\u0434\u0441\u0442\u0440\u0430\u043d\u0438 \u0433\u043e \u043b\u0438\u043d\u043a\u043e\u0442","link_desc":"\u0412\u043d\u0435\u0441\u0438/\u0443\u0440\u0435\u0434\u0438 \u043b\u0438\u043d\u043a","redo_desc":"\u041f\u043e\u0432\u0442\u043e\u0440\u0438 (Ctrl Y)","undo_desc":"\u0412\u0440\u0430\u0442\u0438 (Ctrl Z)","indent_desc":"\u0417\u0433\u043e\u043b\u0435\u043c\u0438 \u0433\u043e \u043f\u043e\u043c\u0435\u0441\u0442\u0443\u0432\u0430\u045a\u0435\u0442\u043e","outdent_desc":"\u041d\u0430\u043c\u0430\u043b\u0438 \u0433\u043e \u043f\u043e\u043c\u0435\u0441\u0442\u0443\u0432\u0430\u045a\u0435\u0442\u043e","numlist_desc":"\u0412\u043d\u0435\u0441\u0438/\u043e\u0434\u0441\u0442\u0440\u0430\u043d\u0438 \u043f\u043e\u0434\u0440\u0435\u0434\u0435\u043d\u0430 \u043b\u0438\u0441\u0442\u0430","bullist_desc":"\u0412\u043d\u0435\u0441\u0438/\u043e\u0434\u0441\u0442\u0440\u0430\u043d\u0438 \u043d\u0435\u043f\u043e\u0434\u0440\u0435\u0434\u0435\u043d\u0430 \u043b\u0438\u0441\u0442\u0430","justifyfull_desc":"\u041f\u043e\u0442\u043f\u043e\u043b\u043d\u043e \u043f\u043e\u0440\u0430\u043c\u043d\u0443\u0432\u0430\u045a\u0435","justifyright_desc":"\u041f\u043e\u0440\u0430\u043c\u043d\u0438 \u0434\u0435\u0441\u043d\u043e","justifycenter_desc":"\u0426\u0435\u043d\u0442\u0440\u0438\u0440\u0430\u0458","justifyleft_desc":"\u041f\u043e\u0440\u0430\u043c\u043d\u0438 \u043b\u0435\u0432\u043e","striketrough_desc":"\u041f\u0440\u0435\u0446\u0440\u0442\u0430\u043d\u043e","help_shortcut":"\u041f\u0440\u0438\u0442\u0438\u0441\u043d\u0438 ALT F10 \u0437\u0430 \u0430\u043b\u0430\u0442\u043a\u0438. \u041f\u0440\u0438\u0442\u0438\u0441\u043d\u0438 ALT 0 \u0437\u0430 \u043f\u043e\u043c\u043e\u0448.","rich_text_area":"\u0417\u0431\u043e\u0433\u0430\u0442\u0435\u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0443\u0430\u043b\u043d\u0430 \u043f\u043e\u0432\u0440\u0448\u0438\u043d\u0430","shortcuts_desc":"\u041f\u043e\u043c\u043e\u0448 \u043f\u0440\u0438 \u043f\u0440\u0438\u0441\u0442\u0430\u043f",toolbar:"\u041b\u0438\u043d\u0438\u0458\u0430 \u0437\u0430 \u0430\u043b\u0430\u0442\u043a\u0438","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/mk_dlg.js b/program/js/tiny_mce/themes/advanced/langs/mk_dlg.js
deleted file mode 100644
index 052b43b58..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/mk_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('mk.advanced_dlg',{"link_list":"\u041b\u0438\u0441\u0442\u0430 \u043d\u0430 \u043b\u0438\u043d\u043a\u043e\u0432\u0438","link_is_external":"\u0423\u0420\u041b \u0430\u0434\u0440\u0435\u0441\u0442\u0430 \u0448\u0442\u043e \u0458\u0430 \u0432\u043d\u0435\u0441\u043e\u0432\u0442\u0435 \u0438\u0437\u0433\u043b\u0435\u0434\u0430 \u043a\u0430\u043a\u043e \u043d\u0430\u0434\u0432\u043e\u0440\u0435\u0448\u0435\u043d \u043b\u0438\u043d\u043a. \u0414\u0430\u043b\u0438 \u0441\u0430\u043a\u0430\u0442\u0435 \u0434\u0430 \u0433\u043e \u0434\u043e\u0434\u0430\u0434\u0435\u0442\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u0438\u043e\u0442 \u201ehttp://:\u201c \u043f\u0440\u0435\u0444\u0438\u043a\u0441 ?","link_is_email":"\u0423\u0420\u041b \u0430\u0434\u0440\u0435\u0441\u0442\u0430 \u0448\u0442\u043e \u0458\u0430 \u0432\u043d\u0435\u0441\u043e\u0432\u0442\u0435 \u0438\u0437\u0433\u043b\u0435\u0434\u0430 \u043a\u0430\u043a\u043e \u0435-\u043f\u043e\u0448\u0442\u0430. \u0414\u0430\u043b\u0438 \u0441\u0430\u043a\u0430\u0442\u0435 \u0434\u0430 \u0433\u043e \u0434\u043e\u0434\u0430\u0434\u0435\u0442\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u0438\u043e\u0442 \u201emailto:\u201c \u043f\u0440\u0435\u0444\u0438\u043a\u0441 ?","link_titlefield":"\u041d\u0430\u0441\u043b\u043e\u0432","link_target_blank":"\u041e\u0442\u0432\u043e\u0440\u0438 \u043b\u0438\u043d\u043a \u0432\u043e \u043d\u043e\u0432 \u043f\u0440\u043e\u0437\u043e\u0440","link_target_same":"\u041e\u0442\u0432\u043e\u0440\u0438 \u043b\u0438\u043d\u043a \u0432\u043e \u0438\u0441\u0442\u0438\u043e\u0442 \u043f\u0440\u043e\u0437\u043e\u0440","link_target":"\u0426\u0435\u043b","link_url":"\u0423\u0420\u041b \u043b\u0438\u043d\u043a","link_title":"\u0412\u043d\u0435\u0441\u0438/\u0443\u0440\u0435\u0434\u0438 \u043b\u0438\u043d\u043a","image_align_right":"\u0414\u0435\u0441\u043d\u043e","image_align_left":"\u041b\u0435\u0432\u043e","image_align_textbottom":"\u041a\u0440\u0430\u0458 \u043d\u0430 \u0442\u0435\u043a\u0441\u0442","image_align_texttop":"\u041f\u043e\u0447\u0435\u0442\u043e\u043a \u043d\u0430 \u0442\u0435\u043a\u0441\u0442","image_align_bottom":"\u041d\u0430\u0458\u0434\u043e\u043b\u0435","image_align_middle":"\u0421\u0440\u0435\u0434\u0438\u043d\u0430","image_align_top":"\u041d\u0430\u0458\u0433\u043e\u0440\u0435","image_align_baseline":"\u041e\u0441\u043d\u043e\u0432\u043d\u0430 \u043b\u0438\u043d\u0438\u0458\u0430","image_align":"\u041f\u043e\u0440\u0430\u043c\u043d\u0443\u0432\u0430\u045a\u0435","image_hspace":"\u0425\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u0435\u043d \u043f\u0440\u043e\u0441\u0442\u043e\u0440","image_vspace":"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0435\u043d \u043f\u0440\u043e\u0441\u0442\u043e\u0440","image_dimensions":"\u0414\u0438\u043c\u0435\u043d\u0437\u0438\u0438","image_alt":"\u041e\u043f\u0438\u0441 \u043d\u0430 \u0441\u043b\u0438\u043a\u0430\u0442\u0430","image_list":"\u041b\u0438\u0441\u0442\u0430 \u043d\u0430 \u0441\u043b\u0438\u043a\u0438\u0442\u0435","image_border":"\u0413\u0440\u0430\u043d\u0438\u0446\u0430/\u0440\u0430\u0431","image_src":"\u041b\u0438\u043d\u043a \u043d\u0430 \u0441\u043b\u0438\u043a\u0430\u0442\u0430","image_title":"\u0412\u043d\u0435\u0441\u0438/\u0441\u0440\u0435\u0434\u0438 \u0441\u043b\u0438\u043a\u0438","charmap_title":"\u041e\u0434\u0431\u0435\u0440\u0435\u0442\u0435 \u0437\u043d\u0430\u043a","colorpicker_name":"\u0418\u043c\u0435:","colorpicker_color":"\u0411\u043e\u0458\u0430:","colorpicker_named_title":"\u0418\u043c\u0435\u043d\u0443\u0432\u0430\u043d\u0438 \u0431\u043e\u0438","colorpicker_named_tab":"\u0418\u043c\u0435\u043d\u0443\u0432\u0430\u043d\u043e","colorpicker_palette_title":"\u041f\u0430\u043b\u0435\u0442\u0430 \u043d\u0430 \u0431\u043e\u0438","colorpicker_palette_tab":"\u041f\u0430\u043b\u0435\u0442\u0430","colorpicker_picker_title":"\u041e\u0434\u0431\u0435\u0440\u0438 \u0431\u043e\u0438","colorpicker_picker_tab":"\u041e\u0434\u0431\u0435\u0440\u0438","colorpicker_title":"\u0418\u0437\u0431\u043e\u0440 \u043d\u0430 \u0431\u043e\u0438","code_wordwrap":"\u041f\u0440\u0435\u043a\u043b\u043e\u043f\u0443\u0432\u0430\u045a\u0435 \u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u043e\u0442","code_title":"HTML \u0443\u0440\u0435\u0434\u0443\u0432\u0430\u0447","anchor_name":"\u0418\u043c\u0435 \u043d\u0430 \u0441\u0438\u0434\u0440\u043e\u0442\u043e","anchor_title":"\u0412\u043d\u0435\u0441\u0438/\u0441\u0440\u0435\u0434\u0438 \u0441\u0438\u0434\u0440\u043e","about_loaded":"\u041f\u043e\u0441\u0442\u043e\u0435\u0447\u043a\u0438 \u0434\u043e\u0434\u0430\u0442\u043e\u0446\u0438","about_version":"\u0412\u0435\u0440\u0437\u0438\u0458\u0430","about_author":"\u0410\u0432\u0442\u043e\u0440","about_plugin":"\u0414\u043e\u0434\u0430\u0442\u043e\u043a","about_plugins":"\u0414\u043e\u0434\u0430\u0442\u043e\u0446\u0438","about_license":"\u041b\u0438\u0446\u0435\u043d\u0446\u0430","about_help":"\u041f\u043e\u043c\u043e\u0448","about_general":"\u0417\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u0430\u0442\u0430","about_title":"TinyMCE","charmap_usage":"\u041a\u043e\u0440\u0438\u0441\u0442\u0435\u0442\u0435 \u0433\u0438 \u0441\u0442\u0440\u043b\u0435\u043a\u0438\u0442\u0435 \u043b\u0435\u0432\u043e \u0438 \u0434\u0435\u0441\u043d\u043e \u0437\u0430 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0458\u0430.","anchor_invalid":"\u0412\u0435 \u043c\u043e\u043b\u0438\u043c\u0435 \u043d\u0430\u0432\u0435\u0434\u0435\u0442\u0435 \u0432\u0430\u043b\u0438\u0434\u043d\u043e \u0438\u043c\u0435 \u0437\u0430 \u0441\u0438\u0434\u0440\u043e\u0442\u043e.","accessibility_help":"\u041f\u043e\u043c\u043e\u0448 \u0437\u0430 \u043f\u0440\u0438\u0441\u0442\u0430\u043f\u043d\u043e\u0441\u0442","accessibility_usage_title":"\u041e\u043f\u0448\u0442\u043e \u043a\u043e\u0440\u0438\u0441\u0442\u0435\u045a\u0435"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/ms.js b/program/js/tiny_mce/themes/advanced/langs/ms.js
deleted file mode 100644
index 599e211b9..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/ms.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ms.advanced',{"underline_desc":"Garis bawah (Ctrl+U)","italic_desc":"Condong (Ctrl+I)","bold_desc":"Tebal (Ctrl+B)",dd:"Maksud huraian",dt:"Maksud terma",samp:"Contoh kod",code:"Kod",blockquote:"Petikan blok",h6:"Tajuk 6",h5:"Tajuk 5",h4:"Tajuk 4",h3:"Tajuk 3",h2:"Tajuk 2",h1:"Tajuk 1",pre:"Telah diformatkan",address:"Alamat",div:"Div",paragraph:"Perenggan",block:"Format",fontdefault:"Jenis Huruf","font_size":"Saiz Huruf","style_select":"Gaya","more_colors":"Warna lain","toolbar_focus":"Lompat ke butang alatan - Alt+Q, Lompat ke editor - Alt-Z, Lompat ke unsur laluan - Alt-X",newdocument:"Hapus semua kandungan?",path:"Laluan","clipboard_msg":"Salin/Potong/Tempel tidak disokong dalam Mozilla dan Firefox.\nAdakah anda mahu informasi lanjut tentang isu ini?","blockquote_desc":"Petikan blok","help_desc":"Bantuan","newdocument_desc":"Dokumen baru","image_props_desc":"Alatan imej","paste_desc":"Tempel","copy_desc":"Salin","cut_desc":"Potong","anchor_desc":"Sisip/sunting anchor","visualaid_desc":"Alih garis panduan/unsur tak nampak","charmap_desc":"Sisip aksara","backcolor_desc":"Pilih warna latar belakang","forecolor_desc":"Pilih warna teks","custom1_desc":"Huraian anda di sini","removeformat_desc":"Alih format","hr_desc":"Sisip pembaris mengufuk","sup_desc":"Superskrip","sub_desc":"Subskrip","code_desc":"Sunting kod HTML","cleanup_desc":"Bersihkan kod","image_desc":"Sisip/sunting imej","unlink_desc":"Tiada pautan","link_desc":"Sisip/sunting pautan","redo_desc":"Maju (Ctrl+Y)","undo_desc":"Undur (Ctrl+Z)","indent_desc":"Lekuk kedepan","outdent_desc":"Lekuk kebelakang","numlist_desc":"Senarai tertib","bullist_desc":"Senarai tidak tertib","justifyfull_desc":"Selari penuh","justifyright_desc":"Selari kekanan","justifycenter_desc":"Selari ketengah","justifyleft_desc":"Selari kekiri","striketrough_desc":"Garis tengah","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":"","help_shortcut":"Press ALT-F10 for toolbar. Press ALT-0 for help","rich_text_area":"Rich Text Area","shortcuts_desc":"Accessability Help",toolbar:"Toolbar"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/ms_dlg.js b/program/js/tiny_mce/themes/advanced/langs/ms_dlg.js
deleted file mode 100644
index 550c32cd3..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/ms_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ms.advanced_dlg',{"link_list":"Senarai pautan","link_is_external":"URL yang anda masukkan adalah pautan luar, tambah \"http://\" di awalan?","link_is_email":"URL yang anda masukkan adalah alamat emel, tambah \"mailto\": di awalan?","link_titlefield":"Tajuk","link_target_blank":"Buka pautan dalam tetingkap yang sama","link_target_same":"Buka pautan dalam tetingkap yang sama","link_target":"Sasaran","link_url":"Pautan URL","link_title":"Sisip/sunting pautan","image_align_right":"Kanan","image_align_left":"Kiri","image_align_textbottom":"Teks bawah","image_align_texttop":"Teks atas","image_align_bottom":"Bawah","image_align_middle":"Tengah","image_align_top":"Atas","image_align_baseline":"Garis pangkal","image_align":"Penyelarian","image_hspace":"Ruangan ufuk","image_vspace":"Ruangan tegak","image_dimensions":"Dimensi","image_alt":"Huraian imej","image_list":"Senarai imej","image_border":"Sempadan","image_src":"Imej URL","image_title":"Sisip/sunting imej","charmap_title":"Pilih aksara sendiri","colorpicker_name":"Nama:","colorpicker_color":"Warna:","colorpicker_named_title":"Warna telah dinamakan","colorpicker_named_tab":"Dinamakan","colorpicker_palette_title":"Palet warna","colorpicker_palette_tab":"Palet","colorpicker_picker_title":"Pemungut warna","colorpicker_picker_tab":"Pemungut","colorpicker_title":"Pilih warna","code_wordwrap":"Sisip perkataan","code_title":"Penyunting HTML","anchor_name":"Nama sauh","anchor_title":"Sisip/sunting sauh","about_loaded":"Muatan plugins","about_version":"Versi","about_author":"Pengarang","about_plugin":"Plugin","about_plugins":"Plugins","about_license":"Lesen","about_help":"Bantuan","about_general":"Perihal","about_title":"Perihal TinyMCE","anchor_invalid":"Please specify a valid anchor name.","accessibility_help":"Accessibility Help","accessibility_usage_title":"General Usage"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/nb.js b/program/js/tiny_mce/themes/advanced/langs/nb.js
deleted file mode 100644
index c83c6aaa5..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/nb.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nb.advanced',{"underline_desc":"Understreking","italic_desc":"Kursiv","bold_desc":"Fet",dd:"Definisjonsbeskrivelse",dt:"Definisjonsuttrykk",samp:"Kodeeksempel",code:"Kode",blockquote:"Innrykkinnrykk",h6:"Overskrift 6",h5:"Overskrift 5",h4:"Overskrift 4",h3:"Overskrift 3",h2:"Overskrift 2",h1:"Overskrift 1",pre:"Pre-formatert",address:"Adresse",div:"Div",paragraph:"Avsnitt",block:"Format",fontdefault:"Skriftfamilie","font_size":"Skriftst\u00f8rrelse","style_select":"Stiler","more_colors":"Flere farger","toolbar_focus":"Skift til verkt\u00f8yknapper - Alt+Q, Skift til editor - Alt-Z, Skift til elementsti - Alt-",newdocument:"Er du sikker p\u00e5 at du vil slette alt innhold?",path:"Sti","clipboard_msg":"Klipp ut / Kopier /Lim inn fungerer ikke i Mozilla og Firefox. \n Vil du vite mer om dette?","blockquote_desc":"Innrykk","help_desc":"Hjelp","newdocument_desc":"Nytt dokument","image_props_desc":"Bildeegenskaper","paste_desc":"Lim inn","copy_desc":"Kopier","cut_desc":"Klipp ut","anchor_desc":"Sett inn / endre anker","visualaid_desc":"Sl\u00e5 av/p\u00e5 usynlige elementer","charmap_desc":"Sett inn spesialtegn","backcolor_desc":"Velg bakgrunnsfarge","forecolor_desc":"Velg skriftfarge","custom1_desc":"Beskrivelse av spesialfunksjon","removeformat_desc":"Fjern formatering","hr_desc":"Sett inn horisontal linje","sup_desc":"Hevet skrift","sub_desc":"Senket skrift","code_desc":"Redigere HTML-koden","cleanup_desc":"Rens ukurant kode","image_desc":"Sett inn / endre bilde","unlink_desc":"Fjern lenke","link_desc":"Sett inn / endre lenke","redo_desc":"Gj\u00f8r om","undo_desc":"Angre","indent_desc":"\u00d8k innrykk","outdent_desc":"Reduser innrykk","numlist_desc":"Nummerliste","bullist_desc":"Punktliste","justifyfull_desc":"Blokkjuster","justifyright_desc":"H\u00f8yrejuster","justifycenter_desc":"Midtstill","justifyleft_desc":"Venstrejuster","striketrough_desc":"Gjennomstreking","help_shortcut":"Trykk ALT F10 for verkt\u00f8ylinjen. Trykk ALT 0 for hjelp","rich_text_area":"Rich tekstomr\u00e5det","shortcuts_desc":"Tilgjengelighetshjelp",toolbar:"Verkt\u00f8ylinje","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/nb_dlg.js b/program/js/tiny_mce/themes/advanced/langs/nb_dlg.js
deleted file mode 100644
index 16b3d18b0..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/nb_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nb.advanced_dlg',{"link_list":"Lenkeliste","link_is_external":"Nettadressen du skrev inn ser ut til \u00e5 v\u00e6re en ekstern nettadresse. \u00d8nsker du \u00e5 legge til det p\u00e5krevde http://-prefikset?","link_is_email":"Nettadressen du skrev inn ser ut til \u00e5 v\u00e6re en e-postadresse. \u00d8nsker du \u00e5 legge til det p\u00e5krevde mailto:-prefikset?","link_titlefield":"Tittel","link_target_blank":"\u00c5pne i nytt vindu","link_target_same":"\u00c5pne i dette vinduet","link_target":"M\u00e5lside","link_url":"Lenkens URL","link_title":"Sett inn /endre lenke","image_align_right":"H\u00f8yre","image_align_left":"Venstre","image_align_textbottom":"Tekstbunn","image_align_texttop":"Teksttopp","image_align_bottom":"Bunn","image_align_middle":"Midtstilt","image_align_top":"Topp","image_align_baseline":"Bunnlinje","image_align":"Justering","image_hspace":"Horisontal avstand","image_vspace":"Vertikal avstand","image_dimensions":"Dimensjoner","image_alt":"Bildebeskrivelse","image_list":"Bildeliste","image_border":"Ramme","image_src":"Bildets URL","image_title":"Sett inn / endre bilde","charmap_title":"Velg spesialtegn","colorpicker_name":"Navn:","colorpicker_color":"Farge:","colorpicker_named_title":"Fargenavn","colorpicker_named_tab":"Navnevalg","colorpicker_palette_title":"Palettfarger","colorpicker_palette_tab":"Palett","colorpicker_picker_title":"Fargevalg","colorpicker_picker_tab":"Velg farge","colorpicker_title":"Velg en farge","code_wordwrap":"Tekstbryting","code_title":"HTML-editor","anchor_name":"Ankernavn","anchor_title":"Sett inn / endre anker","about_loaded":"Lastede programtillegg","about_version":"Versjon","about_author":"Utvikler","about_plugin":"Programtillegg","about_plugins":"Programtillegg","about_license":"Lisens","about_help":"Hjelp","about_general":"Om","about_title":"Om TinyMCE","charmap_usage":"Bruk venstre og h\u00f8yre piltast for \u00e5 navigere.","anchor_invalid":"Du m\u00e5 angi et gyldig ankernavn.","accessibility_help":"Tilhjengelighetshjelp","accessibility_usage_title":"Generell bruk","invalid_color_value":"Ugyldig fargeverdi"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/nl.js b/program/js/tiny_mce/themes/advanced/langs/nl.js
deleted file mode 100644
index 3ef2c14c7..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/nl.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nl.advanced',{"underline_desc":"Onderstrepen (Ctrl+U)","italic_desc":"Cursief (Ctrl+I)","bold_desc":"Vet (Ctrl+B)",dd:"Definitiebeschrijving",dt:"Definitieterm",samp:"Codevoorbeeld",code:"Code",blockquote:"Citaat",h6:"Kop 6",h5:"Kop 5",h4:"Kop 4",h3:"Kop 3",h2:"Kop 2",h1:"Kop 1",pre:"Vaste opmaak",address:"Adres",div:"Div",paragraph:"Alinea",block:"Opmaak",fontdefault:"Lettertype","font_size":"Tekengrootte","style_select":"Stijlen","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":"","more_colors":"Meer kleuren","toolbar_focus":"Spring naar werkbalk - Alt+Q, Spring naar tekst - Alt-Z, Spring naar elementpad - Alt-X",newdocument:"Weet u zeker dat u alle inhoud wilt wissen?",path:"Pad","clipboard_msg":"Kopi\u00ebren/knippen/plakken is niet beschikbaar in Mozilla en Firefox.\nWilt u meer informatie over deze beperking?","blockquote_desc":"Citaat","help_desc":"Help","newdocument_desc":"Nieuw document","image_props_desc":"Afbeeldingseigenschappen","paste_desc":"Plakken","copy_desc":"Kopi\u00ebren","cut_desc":"Knippen","anchor_desc":"Anker invoegen/bewerken","visualaid_desc":"Hulplijnen weergeven","charmap_desc":"Symbool invoegen","backcolor_desc":"Tekstmarkeringskleur","forecolor_desc":"Tekstkleur","custom1_desc":"Uw eigen beschrijving hier","removeformat_desc":"Opmaak verwijderen","hr_desc":"Scheidingslijn invoegen","sup_desc":"Superscript","sub_desc":"Subscript","code_desc":"HTML bron bewerken","cleanup_desc":"Code opruimen","image_desc":"Afbeelding invoegen/bewerken","unlink_desc":"Link verwijderen","link_desc":"Link invoegen/bewerken","redo_desc":"Herhalen (Ctrl+Y)","undo_desc":"Ongedaan maken (Ctrl+Z)","indent_desc":"Inspringing vergroten","outdent_desc":"Inspringing verkleinen","numlist_desc":"Nummering","bullist_desc":"Opsommingstekens","justifyfull_desc":"Uitvullen","justifyright_desc":"Rechts uitlijnen","justifycenter_desc":"Centreren","justifyleft_desc":"Links uitlijnen","striketrough_desc":"Doorhalen","help_shortcut":"Druk op ALT-F10 voor de werkbalk. Druk op ALT-0 voor hulp.","rich_text_area":"Rich Text Zone","shortcuts_desc":"Toegankelijkheid Help",toolbar:"Werkbalk"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/nl_dlg.js b/program/js/tiny_mce/themes/advanced/langs/nl_dlg.js
deleted file mode 100644
index 615a5e8d5..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/nl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nl.advanced_dlg',{"link_list":"Link lijst","link_is_external":"De ingevoerde URL lijkt op een externe link. Wilt u de vereiste http:// tekst voorvoegen?","link_is_email":"De ingevoerde URL lijkt op een e-mailadres. Wilt u de vereiste mailto: tekst voorvoegen?","link_titlefield":"Titel","link_target_blank":"Link in een nieuw venster openen","link_target_same":"Link in hetzelfde venster openen","link_target":"Doel","link_url":"Link URL","link_title":"Link invoegen/bewerken","image_align_right":"Rechts","image_align_left":"Links","image_align_textbottom":"Onderkant tekst","image_align_texttop":"Bovenkant tekst","image_align_bottom":"Onder","image_align_middle":"Midden","image_align_top":"Boven","image_align_baseline":"Basislijn","image_align":"Uitlijning","image_hspace":"Horizontale ruimte","image_vspace":"Verticale ruimte","image_dimensions":"Afmetingen","image_alt":"Beschrijving","image_list":"Lijst","image_border":"Rand","image_src":"Bestand/URL","image_title":"Afbeelding invoegen/bewerken","charmap_title":"Symbolen","colorpicker_name":"Naam:","colorpicker_color":"Kleur:","colorpicker_named_title":"Benoemde kleuren","colorpicker_named_tab":"Benoemd","colorpicker_palette_title":"Paletkleuren","colorpicker_palette_tab":"Palet","colorpicker_picker_title":"Alle kleuren","colorpicker_picker_tab":"Alle kleuren","colorpicker_title":"Kleuren","code_wordwrap":"Automatische terugloop","code_title":"HTML Bron","anchor_name":"Ankernaam","anchor_title":"Anker invoegen/bewerken","about_loaded":"Geladen Invoegtoepassingen","about_version":"Versie","about_author":"Auteur","about_plugin":"Invoegtoepassing","about_plugins":"Invoegtoepassingen","about_license":"Licentie","about_help":"Help","about_general":"Info","about_title":"Over TinyMCE","charmap_usage":"Gebruik linker en rechter pijltjestoetsen om te navigeren.","anchor_invalid":"Geef een geldige ankernaam.","accessibility_help":"Hulp m.b.t. Toegankelijkheid","accessibility_usage_title":"Algemeen Gebruik","invalid_color_value":"Ongeldige kleur code"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/nn.js b/program/js/tiny_mce/themes/advanced/langs/nn.js
deleted file mode 100644
index 4f6441e10..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/nn.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nn.advanced',{"underline_desc":"Understreking","italic_desc":"Kursiv","bold_desc":"Feit",dd:"Definisjonsbeskrivelse",dt:"Definisjonsuttrykk",samp:"Kodeeksempel",code:"Kode",blockquote:"Innrykk",h6:"Overskrift 6",h5:"Overskrift 5",h4:"Overskrift 4",h3:"Overskrift 3",h2:"Overskrift 2",h1:"Overskrift 1",pre:"Pre-formatert",address:"Adresse",div:"Div",paragraph:"Avsnitt",block:"Format",fontdefault:"Skriftfamilie","font_size":"Skriftstorleik","style_select":"Stilar","anchor_delta_height":"anchor_delta_height","anchor_delta_width":"anchor_delta_width","charmap_delta_height":"charmap_delta_height","charmap_delta_width":"charmap_delta_width","colorpicker_delta_height":"colorpicker_delta_height","colorpicker_delta_width":"colorpicker_delta_width","link_delta_height":"link_delta_height","link_delta_width":"link_delta_width","image_delta_height":"image_delta_height","image_delta_width":"image_delta_width","more_colors":"Fleire fargar","toolbar_focus":"Skift til verktyknappar - Alt+Q, Skift til editor - Alt-Z, Skift til elementsti - Alt-",newdocument:"Er du sikker p\u00e5 at du vil slette alt innhald?",path:"Sti","clipboard_msg":"Klipp ut / Kopier /Lim inn fungerer ikkje i Mozilla og Firefox. \n Vil du vite meir om dette?","blockquote_desc":"Innrykk","help_desc":"Hjelp","newdocument_desc":"Nytt dokument","image_props_desc":"Eigenskaper for bilete","paste_desc":"Lim inn","copy_desc":"Kopier","cut_desc":"Klipp ut","anchor_desc":"Set inn / endre anker","visualaid_desc":"Sl\u00e5 av/p\u00e5 usynlige element","charmap_desc":"Set inn spesialteikn","backcolor_desc":"Vel bakgrunnsfarge","forecolor_desc":"Vel skriftfarge","custom1_desc":"Din spesialfunksjondefinisjon her","removeformat_desc":"Fjern formatering","hr_desc":"Set inn horisontal linje","sup_desc":"Heva skrift","sub_desc":"Senka skrift","code_desc":"Redigere HTML-koden","cleanup_desc":"Rens grisete kode","image_desc":"Set inn / endre bilete","unlink_desc":"Fjern lenkje","link_desc":"Set inn / endre lenkje","redo_desc":"Gjer om","undo_desc":"Angre","indent_desc":"Auk innrykk","outdent_desc":"Reduser innrykk","numlist_desc":"Nummerliste","bullist_desc":"Punktliste","justifyfull_desc":"Blokkjustert","justifyright_desc":"H\u00f8grejustert","justifycenter_desc":"Midtstilt","justifyleft_desc":"Venstrejustert","striketrough_desc":"Gjennomstreking","help_shortcut":"Klikk ALT-F10 for verkt\u00f8ylinje. Klikk ALT-0 for hjelp","rich_text_area":"Omr\u00e5de for rik tekst","shortcuts_desc":"Tilgjengelighetshjelp",toolbar:"Verkt\u00f8ylinje"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/nn_dlg.js b/program/js/tiny_mce/themes/advanced/langs/nn_dlg.js
deleted file mode 100644
index 0344eb673..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/nn_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nn.advanced_dlg',{"link_list":"Lenkjeliste","link_is_external":"Nettadressa du skreiv inn ser ut til \u00e5 vere ein ekstern nettadresse. \u00d8nskjer du \u00e5 leggje til det obligatoriske http://-prefikset?","link_is_email":"Nettadressa du skreiv inn ser ut til \u00e5 vere ein e-postadresse. \u00d8nskjer du \u00e5 leggje til det obligatoriske mailto:-prefikset?","link_titlefield":"Tittel","link_target_blank":"Opne i nytt vindauget","link_target_same":"Opne i dette vindauget","link_target":"Vindauge","link_url":"Lenkje-URL","link_title":"Set inn / endre lenkje","image_align_right":"H\u00f8gre","image_align_left":"Venstre","image_align_textbottom":"Tekstbotn","image_align_texttop":"Teksttopp","image_align_bottom":"Botn","image_align_middle":"Midtstilt","image_align_top":"Topp","image_align_baseline":"Botnlinje","image_align":"Justering","image_hspace":"Horisontal avstand","image_vspace":"Vertikal avstand","image_dimensions":"Dimensjonar","image_alt":"Bileteomtale","image_list":"Liste med bilete","image_border":"Ramme","image_src":"Bilete-URL","image_title":"Set inn / endre bilete","charmap_title":"Vel spesialteikn","colorpicker_name":"Namn:","colorpicker_color":"Farge:","colorpicker_named_title":"Fargenamn","colorpicker_named_tab":"Namneval","colorpicker_palette_title":"Palettfargar","colorpicker_palette_tab":"Palett","colorpicker_picker_title":"Fargeval","colorpicker_picker_tab":"Vel farge","colorpicker_title":"Vel ein farge","code_wordwrap":"Tekstbryting","code_title":"HTML-editor","anchor_name":"Ankernamn","anchor_title":"Set inn / endre anker","about_loaded":"Lasta programtillegg","about_version":"Versjon","about_author":"Utviklar","about_plugin":"Programtillegg","about_plugins":"Programtillegg","about_license":"Lisens","about_help":"Hjelp","about_general":"Om","about_title":"Om TinyMCE","charmap_usage":"Use left and right arrows to navigate.","anchor_invalid":"Please specify a valid anchor name.","accessibility_help":"Accessibility Help","accessibility_usage_title":"General Usage"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/pl.js b/program/js/tiny_mce/themes/advanced/langs/pl.js
deleted file mode 100644
index f7348f11f..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/pl.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('pl.advanced',{"underline_desc":"Podkre\u015blenie (Ctrl+U)","italic_desc":"Kursywa (Ctrl+I)","bold_desc":"Pogrubienie (Ctrl+B)",dd:"Opis terminu",dt:"Definicja terminu ",samp:"Pr\u00f3bka kodu",code:"Kod",blockquote:"Wydzielony blok",h6:"Nag\u0142\u00f3wek 6",h5:"Nag\u0142\u00f3wek 5",h4:"Nag\u0142\u00f3wek 4",h3:"Nag\u0142\u00f3wek 3",h2:"Nag\u0142\u00f3wek 2",h1:"Nag\u0142\u00f3wek 1",pre:"Czcionka o sta\u0142ej szeroko\u015bci",address:"Adres",div:"Div",paragraph:"Akapit",block:"Format",fontdefault:"Rodzaj czcionki","font_size":"Rozmiar czcionki","style_select":"Styl","more_colors":"Wi\u0119cej kolor\u00f3w...","toolbar_focus":"Przeskocz do przycisk\u00f3w narz\u0119dzi - Alt+Q, Przeskocz do edytora - Alt-Z, Przeskocz do elementu \u015bcie\u017cki - Alt-X",newdocument:"Czy jeste\u015b pewnien, ze chcesz wyczy\u015bci\u0107 ca\u0142\u0105 zawarto\u015b\u0107?",path:"\u015acie\u017cka","clipboard_msg":"Akcje Kopiuj/Wytnij/Wklej nie s\u0105 dost\u0119pne w Mozilli i Firefox.\nCzy chcesz wi\u0119cej informacji o tym problemie?","blockquote_desc":"Blok cytatu","help_desc":"Pomoc","newdocument_desc":"Nowy dokument","image_props_desc":"W\u0142a\u015bciwo\u015bci obrazka","paste_desc":"Wklej (Ctrl V)","copy_desc":"Kopiuj (Ctrl C)","cut_desc":"Wytnij (Ctrl X)","anchor_desc":"Wstaw/edytuj kotwic\u0119","visualaid_desc":"Prze\u0142\u0105cz widoczno\u015b\u0107 wska\u017anik\u00f3w i niewidocznych element\u00f3w","charmap_desc":"Wstaw znak specjalny","backcolor_desc":"Wybierz kolor t\u0142a","forecolor_desc":"Wybierz kolor tekstu","custom1_desc":"Tw\u00f3j niestandardowy opis tutaj","removeformat_desc":"Usu\u0144 formatowanie","hr_desc":"Wstaw poziom\u0105 lini\u0119","sup_desc":"Indeks g\u00f3rny","sub_desc":"Indeks dolny","code_desc":"Edytuj \u017ar\u00f3d\u0142o HTML","cleanup_desc":"Wyczy\u015b\u0107 nieuporz\u0105dkowany kod","image_desc":"Wstaw/edytuj obraz","unlink_desc":"Usu\u0144 link","link_desc":"Wstaw/edytuj link","redo_desc":"Pon\u00f3w (Ctrl+Y)","undo_desc":"Cofnij (Ctrl+Z)","indent_desc":"Wci\u0119cie","outdent_desc":"Cofnij wci\u0119cie","numlist_desc":"Lista numerowana","bullist_desc":"Lista nienumerowana","justifyfull_desc":"R\u00f3wnanie do prawej i lewej","justifyright_desc":"Wyr\u00f3wnaj do prawej","justifycenter_desc":"Wycentruj","justifyleft_desc":"Wyr\u00f3wnaj do lewej","striketrough_desc":"Przekre\u015blenie","help_shortcut":"Wci\u015bnij Alt F10 aby pokaza\u0107 pasek narz\u0119dzi. Wci\u015bnij Alt 0 aby otworzy\u0107 pomoc","rich_text_area":"Pole tekstowe","shortcuts_desc":"Pomoc dost\u0119pno\u015bci",toolbar:"Pasek narz\u0119dzi","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/pl_dlg.js b/program/js/tiny_mce/themes/advanced/langs/pl_dlg.js
deleted file mode 100644
index e1ba93c95..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/pl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('pl.advanced_dlg',{"link_list":"Lista link\u00f3w","link_is_external":"URL kt\u00f3ry otworzy\u0142e\u015b wydaje si\u0119 by\u0107 zewn\u0119trznym linkiem, czy chcesz doda\u0107 wymagany prefiks http:// ?","link_is_email":"URL kt\u00f3ry otworzy\u0142e\u015b wydaje si\u0119 by\u0107 adresem mailowym, czy chcesz doda\u0107 odpowiedni prefiks mailto:?","link_titlefield":"Tytu\u0142","link_target_blank":"Otw\u00f3rz link w nowym oknie","link_target_same":"Otw\u00f3rz link w tym samym oknie","link_target":"Cel","link_url":"URL linka","link_title":"Wstaw/edytuj link","image_align_right":"Prawy","image_align_left":"Lewy","image_align_textbottom":"Dolny tekst","image_align_texttop":"G\u00f3rny tekst","image_align_bottom":"D\u00f3\u0142","image_align_middle":"\u015arodek","image_align_top":"G\u00f3ra","image_align_baseline":"Linia bazowa","image_align":"Wyr\u00f3wnanie","image_hspace":"Odst\u0119p poziomy","image_vspace":"Odst\u0119p pionowy","image_dimensions":"Rozmiary","image_alt":"Opis obrazka","image_list":"Lista obrazk\u00f3w","image_border":"Obramowanie","image_src":"URL obrazka","image_title":"Wstaw/edytuj obraz","charmap_title":"Wybierz niestandardowy znak","colorpicker_name":"Nazwa:","colorpicker_color":"Kolor:","colorpicker_named_title":"Nazwane kolory","colorpicker_named_tab":"Nazwane","colorpicker_palette_title":"Paleta kolor\u00f3w","colorpicker_palette_tab":"Paleta","colorpicker_picker_title":"Wybieranie kolor\u00f3w","colorpicker_picker_tab":"Wybieranie","colorpicker_title":"Wybierz kolor","code_wordwrap":"Zawijanie s\u0142\u00f3w","code_title":"Edytor \u017ar\u00f3d\u0142a HTML","anchor_name":"Nazwa zakotwiczenia","anchor_title":"Wstaw/Edytuj zakotwiczenie","about_loaded":"Za\u0142adowane wtyczki","about_version":"Wersja","about_author":"Autor","about_plugin":"Wtyczka","about_plugins":"Wtyczki","about_license":"Licencja","about_help":"Pomoc","about_general":"O TinyMCE","about_title":"O TinyMCE","charmap_usage":"U\u017cywaj strza\u0142ek w lewo i w prawo do nawigacji.","anchor_invalid":"Prosz\u0119 poda\u0107 w\u0142a\u015bciw\u0105 nazw\u0119 zakotwiczenia.","accessibility_help":"Pomoc dost\u0119pno\u015bci","accessibility_usage_title":"Og\u00f3lne zastosowanie","invalid_color_value":"Nieprawid\u0142owa warto\u015b\u0107 koloru"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/ps.js b/program/js/tiny_mce/themes/advanced/langs/ps.js
deleted file mode 100644
index 59d632974..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/ps.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ps.advanced',{"underline_desc":"Underline (Ctrl+U)","italic_desc":"Italic (Ctrl+I)","bold_desc":"Bold (Ctrl+B)",dd:"Definition description",dt:"Definition term ",samp:"Code sample",code:"Code",blockquote:"Blockquote",h6:"Heading 6",h5:"Heading 5",h4:"Heading 4",h3:"Heading 3",h2:"Heading 2",h1:"Heading 1",pre:"Preformatted",address:"Address",div:"Div",paragraph:"Paragraph",block:"Format",fontdefault:"Font family","font_size":"Font size","style_select":"Styles","more_colors":"More colors","toolbar_focus":"Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X",newdocument:"Are you sure you want clear all contents?",path:"Path","clipboard_msg":"Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?","blockquote_desc":"Blockquote","help_desc":"Help","newdocument_desc":"New document","image_props_desc":"Image properties","paste_desc":"Paste","copy_desc":"Copy","cut_desc":"Cut","anchor_desc":"Insert/edit anchor","visualaid_desc":"Toggle guidelines/invisible elements","charmap_desc":"Insert custom character","backcolor_desc":"Select background color","forecolor_desc":"Select text color","custom1_desc":"Your custom description here","removeformat_desc":"Remove formatting","hr_desc":"Insert horizontal ruler","sup_desc":"Superscript","sub_desc":"Subscript","code_desc":"Edit HTML Source","cleanup_desc":"Cleanup messy code","image_desc":"Insert/edit image","unlink_desc":"Unlink","link_desc":"Insert/edit link","redo_desc":"Redo (Ctrl+Y)","undo_desc":"Undo (Ctrl+Z)","indent_desc":"Indent","outdent_desc":"Outdent","numlist_desc":"Ordered list","bullist_desc":"Unordered list","justifyfull_desc":"Align full","justifyright_desc":"Align right","justifycenter_desc":"Align center","justifyleft_desc":"Align left","striketrough_desc":"Strikethrough","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":"","help_shortcut":"Press ALT-F10 for toolbar. Press ALT-0 for help","rich_text_area":"Rich Text Area","shortcuts_desc":"Accessability Help",toolbar:"Toolbar"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/ps_dlg.js b/program/js/tiny_mce/themes/advanced/langs/ps_dlg.js
deleted file mode 100644
index 597f01f94..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/ps_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ps.advanced_dlg',{"link_list":"Link list","link_is_external":"The URL you entered seems to external link, do you want to add the required http:// prefix?","link_is_email":"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?","link_titlefield":"Title","link_target_blank":"Open link in a new window","link_target_same":"Open link in the same window","link_target":"Target","link_url":"Link URL","link_title":"Insert/edit link","image_align_right":"Right","image_align_left":"Left","image_align_textbottom":"Text bottom","image_align_texttop":"Text top","image_align_bottom":"Bottom","image_align_middle":"Middle","image_align_top":"Top","image_align_baseline":"Baseline","image_align":"Alignment","image_hspace":"Horizontal space","image_vspace":"Vertical space","image_dimensions":"Dimensions","image_alt":"Image description","image_list":"Image list","image_border":"Border","image_src":"Image URL","image_title":"Insert/edit image","charmap_title":"Select custom character","colorpicker_name":"Name:","colorpicker_color":"Color:","colorpicker_named_title":"Named colors","colorpicker_named_tab":"Named","colorpicker_palette_title":"Palette colors","colorpicker_palette_tab":"Palette","colorpicker_picker_title":"Color picker","colorpicker_picker_tab":"Picker","colorpicker_title":"Select a color","code_wordwrap":"Word wrap","code_title":"HTML Source Editor","anchor_name":"Anchor name","anchor_title":"Insert/edit anchor","about_loaded":"Loaded plugins","about_version":"Version","about_author":"Author","about_plugin":"Plugin","about_plugins":"Plugins","about_license":"License","about_help":"Help","about_general":"About","about_title":"About TinyMCE","anchor_invalid":"Please specify a valid anchor name.","accessibility_help":"Accessibility Help","accessibility_usage_title":"General Usage"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/pt.js b/program/js/tiny_mce/themes/advanced/langs/pt.js
deleted file mode 100644
index 48d17b1a6..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/pt.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('pt.advanced',{"underline_desc":"Sublinhado (Ctrl+U)","italic_desc":"It\u00e1lico (Ctrl+I)","bold_desc":"Negrito (Ctrl+B)",dd:"Descri\u00e7\u00e3o da defini\u00e7\u00e3o",dt:"Termo da defini\u00e7\u00e3o",samp:"Amostra de c\u00f3digo",code:"C\u00f3digo",blockquote:"Cita\u00e7\u00e3o em bloco",h6:"T\u00edtulo 6",h5:"T\u00edtulo 5",h4:"T\u00edtulo 4",h3:"T\u00edtulo 3",h2:"T\u00edtulo 2",h1:"T\u00edtulo 1",pre:"Pr\u00e9-formatado",address:"Endere\u00e7o",div:"Div",paragraph:"Par\u00e1grafo",block:"Formata\u00e7\u00e3o",fontdefault:"Tipo de fonte","font_size":"Tamanho","style_select":"Estilos","anchor_delta_width":"30","link_delta_height":"25","link_delta_width":"50","more_colors":"Mais cores","toolbar_focus":"Ir para as ferramentas - Alt+Q, Ir para o editor - Alt-Z, Ir para o endere\u00e7o do elemento - Alt-X",newdocument:"Tem a certeza que deseja apagar tudo?",path:"Endere\u00e7o","clipboard_msg":"Copiar/recortar/colar n\u00e3o est\u00e1 dispon\u00edvel no Mozilla e Firefox. Deseja mais informa\u00e7\u00f5es sobre este problema?","blockquote_desc":"Cita\u00e7\u00e3o em bloco","help_desc":"Ajuda","newdocument_desc":"Novo documento","image_props_desc":"Propriedades da imagem","paste_desc":"Colar","copy_desc":"Copiar","cut_desc":"Recortar","anchor_desc":"Inserir/editar \u00e2ncora","visualaid_desc":"Alternar guias/elementos invis\u00edveis","charmap_desc":"Inserir caracteres especiais","backcolor_desc":"Selecionar a cor de fundo","forecolor_desc":"Selecionar a cor do texto","custom1_desc":"Insira aqui a sua descri\u00e7\u00e3o personalizada","removeformat_desc":"Remover formata\u00e7\u00e3o","hr_desc":"Inserir separador horizontal","sup_desc":"Superior \u00e0 linha","sub_desc":"Inferior \u00e0 linha","code_desc":"Editar c\u00f3digo fonte","cleanup_desc":"Limpar c\u00f3digo incorreto","image_desc":"Inserir/editar imagem","unlink_desc":"Remover hyperlink","link_desc":"Inserir/editar hyperlink","redo_desc":"Refazer (Ctrl+Y)","undo_desc":"Desfazer (Ctrl+Z)","indent_desc":"Aumentar recuo","outdent_desc":"Diminuir recuo","numlist_desc":"Numera\u00e7\u00e3o","bullist_desc":"Marcadores","justifyfull_desc":"Justificar","justifyright_desc":"Alinhar \u00e0 direita","justifycenter_desc":"Centralizar","justifyleft_desc":"Alinhar \u00e0 esquerda","striketrough_desc":"Riscado","help_shortcut":"Pressione ALT-F10 para barra de ferramentas. Pressione ALT-0 para ajuda","rich_text_area":"\u00c1rea de edi\u00e7\u00e3o rica","shortcuts_desc":"Ajuda acessibilidade",toolbar:"Barra de ferramentas","anchor_delta_height":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/pt_dlg.js b/program/js/tiny_mce/themes/advanced/langs/pt_dlg.js
deleted file mode 100644
index 313a012fa..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/pt_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('pt.advanced_dlg',{"link_list":"Lista de Links","link_is_external":"A URL digitada parece conduzir a um link externo. Deseja acrescentar o prefixo necess\u00e1rio http://?","link_is_email":"A URL digitada parece ser um endere\u00e7o de e-mail. Deseja acrescentar o prefixo necess\u00e1rio mailto:?","link_titlefield":"T\u00edtulo","link_target_blank":"Abrir hyperlink em nova janela","link_target_same":"Abrir hyperlink na mesma janela","link_target":"Alvo","link_url":"URL do hyperink","link_title":"Inserir/editar hyperlink","image_align_right":"Direita","image_align_left":"Esquerda","image_align_textbottom":"Base do texto","image_align_texttop":"Topo do texto","image_align_bottom":"Abaixo","image_align_middle":"Meio","image_align_top":"Topo","image_align_baseline":"Sobre a linha de texto","image_align":"Alinhamento","image_hspace":"Espa\u00e7o Horizontal","image_vspace":"Espa\u00e7o Vertical","image_dimensions":"Dimens\u00f5es","image_alt":"Descri\u00e7\u00e3o da imagem","image_list":"Lista de imagens","image_border":"Limites","image_src":"Endere\u00e7o da imagem","image_title":"Inserir/editar imagem","charmap_title":"Selecionar caracteres personalizados","colorpicker_name":"Nome:","colorpicker_color":"Cor:","colorpicker_named_title":"Cores Personalizadas","colorpicker_named_tab":"Personalizadas","colorpicker_palette_title":"Paleta de Cores","colorpicker_palette_tab":"Paleta","colorpicker_picker_title":"Editor de Cores","colorpicker_picker_tab":"Editor","colorpicker_title":"Selecione uma cor","code_wordwrap":"Quebra autom\u00e1tica de linha","code_title":"Editor HTML","anchor_name":"Nome da \u00e2ncora","anchor_title":"Inserir/editar \u00e2ncora","about_loaded":"Plugins Instalados","about_version":"Vers\u00e3o","about_author":"Autor","about_plugin":"Plugin","about_plugins":"Plugins","about_license":"Licen\u00e7a","about_help":"Ajuda","about_general":"Sobre","about_title":"Sobre o TinyMCE","charmap_usage":"Use as setas esquerda e direita para navegar.","anchor_invalid":"Por favor, especifique um nome v\u00e1lido de \u00e2ncora.","accessibility_help":"Ajuda de Acessibilidade","accessibility_usage_title":"Uso Geral","invalid_color_value":"Valor da cor inv\u00e1lido"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/ro.js b/program/js/tiny_mce/themes/advanced/langs/ro.js
deleted file mode 100644
index 88899a8c5..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/ro.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ro.advanced',{"underline_desc":"Subliniat (Ctrl+U)","italic_desc":"Italic (Ctrl+I)","bold_desc":"\u00cengro\u0219at (Ctrl B)",dd:"Defini\u021bie",dt:"Termen definit ",samp:"Mostr\u0103 de cod",code:"Cod",blockquote:"Citat",h6:"Titlu 6",h5:"Titlu 5",h4:"Titlu 4",h3:"Titlu 3",h2:"Titlu 2",h1:"Titlu 1",pre:"Preformatat",address:"Adres\u0103",div:"Div",paragraph:"Paragraf",block:"Format",fontdefault:"Familie font","font_size":"M\u0103rime font","style_select":"Stiluri","more_colors":"Mai multe culori...","toolbar_focus":"Salt la instrumente - Alt Q, Salt la editor - Alt-Z, Salt la cale - Alt-X",newdocument:"Sigur vrei s\u0103 \u0219tergi tot?",path:"Cale","clipboard_msg":"Copierea/t\u0103ierea/lipirea nu sunt disponibile \u00een Mozilla \u0219i Firefox.\nVrei mai multe informa\u021bii despre aceast\u0103 problem\u0103?","blockquote_desc":"Citat","help_desc":"Ajutor","newdocument_desc":"Document nou","image_props_desc":"Detalii imagine","paste_desc":"Lipe\u0219te","copy_desc":"Copiaz\u0103","cut_desc":"Taie","anchor_desc":"Inserare/editare ancor\u0103","visualaid_desc":"Comut\u0103 ghidajele/elementele invizibile","charmap_desc":"Inserare caracter special","backcolor_desc":"Culoare fundal","forecolor_desc":"Culoare text","custom1_desc":"Introdu aici o descriere","removeformat_desc":"Anuleaz\u0103 formatarea","hr_desc":"Insereaz\u0103 linie orizontal\u0103","sup_desc":"Superscript","sub_desc":"Subscript","code_desc":"Editare surs\u0103 HTML","cleanup_desc":"Cur\u0103\u021b\u0103 codul","image_desc":"Inserare/editare imagine","unlink_desc":"\u0218terge leg\u0103tura","link_desc":"Inserare/editare leg\u0103tur\u0103","redo_desc":"Ref\u0103 (Ctrl+Y)","undo_desc":"Undo (Ctrl+Z)","indent_desc":"Indenteaz\u0103","outdent_desc":"De-indenteaz\u0103","numlist_desc":"List\u0103 ordonat\u0103","bullist_desc":"List\u0103 neordonat\u0103","justifyfull_desc":"Aliniere pe toat\u0103 l\u0103\u021bimea","justifyright_desc":"Aliniere la dreapta","justifycenter_desc":"Centrare","justifyleft_desc":"Aliniere la st\u00e2nga","striketrough_desc":"T\u0103iat","help_shortcut":"Apas\u0103 ALT-F10 pentru bara de unelte. Apas\u0103 ALT-0 pentru ajutor","rich_text_area":"Zon\u0103 de text formatat","shortcuts_desc":"Ajutor accesabilitate",toolbar:"Bar\u0103 de unelte","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/ro_dlg.js b/program/js/tiny_mce/themes/advanced/langs/ro_dlg.js
deleted file mode 100644
index 3cb647dd8..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/ro_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ro.advanced_dlg',{"link_list":"Lista de leg\u0103turi","link_is_external":"URL-ul pe care l-ai introdus pare a fi o leg\u0103tur\u0103 extern\u0103. Vrei s\u0103 adaug \u0219i prefixul http:// necesar?","link_is_email":"URL-ul pe care l-ai introdus pare a fi o adres\u0103 de e-mail. Vrei s\u0103 adaug \u0219i prefixul mailto: necesar?","link_titlefield":"Titlu","link_target_blank":"Deschide leg\u0103tura \u00eentr-o fereastr\u0103 nou\u0103","link_target_same":"Deschide leg\u0103tura \u00een aceea\u0219i fereastr\u0103","link_target":"\u021aint\u0103","link_url":"URL leg\u0103tur\u0103","link_title":"Inserare/editare leg\u0103tur\u0103","image_align_right":"Dreapta","image_align_left":"St\u00e2nga","image_align_textbottom":"Textul la mijloc","image_align_texttop":"Textul sus","image_align_bottom":"Jos","image_align_middle":"La mijloc","image_align_top":"Sus","image_align_baseline":"Baseline","image_align":"Aliniere","image_hspace":"Spa\u021biu orizontal","image_vspace":"Spa\u021biu vertical","image_dimensions":"Dimensiuni","image_alt":"Descriere imagine","image_list":"List\u0103 de imagini","image_border":"Bordur\u0103","image_src":"URL imagine","image_title":"Insereaz\u0103/editeaz\u0103 o imagine","charmap_title":"Alege un caracter special","colorpicker_name":"Nume:","colorpicker_color":"Culoare:","colorpicker_named_title":"Culori denumite","colorpicker_named_tab":"Denumite","colorpicker_palette_title":"Palet\u0103 de culori","colorpicker_palette_tab":"Palet\u0103","colorpicker_picker_title":"Pipet\u0103 de culori","colorpicker_picker_tab":"Pipet\u0103","colorpicker_title":"Alege o culoare","code_wordwrap":"\u00cencadrare cuvinte","code_title":"Editor surs\u0103 HTML","anchor_name":"Nume ancor\u0103","anchor_title":"Inserare/editare ancor\u0103","about_loaded":"Module \u00eenc\u0103rcate","about_version":"Versiune","about_author":"Autor","about_plugin":"Modul","about_plugins":"Module","about_license":"Licen\u021b\u0103","about_help":"Ajutor","about_general":"Despre","about_title":"Despre TinyMCE","charmap_usage":"Folose\u0219te s\u0103ge\u021bile st\u00e2nga \u0219i dreapta pentru navigare.","anchor_invalid":"Te rog specific\u0103 un nume valid de ancor\u0103.","accessibility_help":"Ajutor pentru accesibilitate","accessibility_usage_title":"Uz general","invalid_color_value":"Valoare incorect\u0103 a culorii"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/ru.js b/program/js/tiny_mce/themes/advanced/langs/ru.js
deleted file mode 100644
index 5dcf47ad9..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/ru.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ru.advanced',{"underline_desc":"\u041f\u043e\u0434\u0447\u0435\u0440\u043a\u043d\u0443\u0442\u044b\u0439 (Ctrl+U)","italic_desc":"\u041a\u0443\u0440\u0441\u0438\u0432 (Ctrl+I)","bold_desc":"\u041f\u043e\u043b\u0443\u0436\u0438\u0440\u043d\u044b\u0439 (Ctrl+B)",dd:"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u0430",dt:"\u0422\u0435\u0440\u043c\u0438\u043d \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u0430",samp:"\u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0434\u0430",code:"\u041a\u043e\u0434",blockquote:"\u0426\u0438\u0442\u0430\u0442\u0430",h6:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 6",h5:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 5",h4:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 4",h3:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 3",h2:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 2",h1:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 1",pre:"\u041f\u0440\u0435\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439",address:"\u0410\u0434\u0440\u0435\u0441",div:"Div",paragraph:"\u0410\u0431\u0437\u0430\u0446",block:"\u0424\u043e\u0440\u043c\u0430\u0442",fontdefault:"\u0428\u0440\u0438\u0444\u0442","font_size":"\u0420\u0430\u0437\u043c\u0435\u0440","style_select":"\u0421\u0442\u0438\u043b\u044c","more_colors":"\u0414\u0440\u0443\u0433\u0438\u0435 \u0446\u0432\u0435\u0442\u0430...","toolbar_focus":"\u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u044c \u043a\u043d\u043e\u043f\u043e\u043a (Alt+Q). \u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0443 (Alt+Z). \u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443 \u043f\u0443\u0442\u0438 (Alt+X).",newdocument:"\u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u0441\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c?",path:"\u0422\u0435\u0433\u0438","clipboard_msg":"\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0432\u044b\u0440\u0435\u0437\u043a\u0430 \u0438 \u0432\u0441\u0442\u0430\u0432\u043a\u0430 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0432 Firefox. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0438: Ctrl C \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c, Ctrl V \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c. \u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e?","blockquote_desc":"\u0426\u0438\u0442\u0430\u0442\u0430","help_desc":"\u041f\u043e\u043c\u043e\u0449\u044c","newdocument_desc":"\u041d\u043e\u0432\u044b\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442","image_props_desc":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f","paste_desc":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c","copy_desc":"\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c","cut_desc":"\u0412\u044b\u0440\u0435\u0437\u0430\u0442\u044c","anchor_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c/\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u044f\u043a\u043e\u0440\u044c","visualaid_desc":"\u0412\u0441\u0435 \u0437\u043d\u0430\u043a\u0438","charmap_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b","backcolor_desc":"\u0426\u0432\u0435\u0442 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430","forecolor_desc":"\u0426\u0432\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u0430","custom1_desc":"\u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435","removeformat_desc":"\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u0442","hr_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0447\u0435\u0440\u0442\u0443","sup_desc":"\u041d\u0430\u0434\u0441\u0442\u0440\u043e\u0447\u043d\u044b\u0439","sub_desc":"\u041f\u043e\u0434\u0441\u0442\u0440\u043e\u0447\u043d\u044b\u0439","code_desc":"\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c HTML \u043a\u043e\u0434","cleanup_desc":"\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u043b\u0438\u0448\u043d\u0438\u0439 \u043a\u043e\u0434","image_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c/\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435","unlink_desc":"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443","link_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c/\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443","redo_desc":"\u0412\u0435\u0440\u043d\u0443\u0442\u044c (Ctrl+Y)","undo_desc":"\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c (Ctrl+Z)","indent_desc":"\u0423\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043e\u0442\u0441\u0442\u0443\u043f","outdent_desc":"\u0423\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u043e\u0442\u0441\u0442\u0443\u043f","numlist_desc":"\u041d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a","bullist_desc":"\u041c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a","justifyfull_desc":"\u041f\u043e \u0448\u0438\u0440\u0438\u043d\u0435","justifyright_desc":"\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","justifycenter_desc":"\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443","justifyleft_desc":"\u041f\u043e \u043b\u0435\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","striketrough_desc":"\u0417\u0430\u0447\u0435\u0440\u043a\u043d\u0443\u0442\u044b\u0439","help_shortcut":"\u041d\u0430\u0436\u043c\u0438\u0442\u0435 ALT-F10 \u0434\u043b\u044f \u043f\u0430\u043d\u0435\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u041d\u0430\u0436\u043c\u0438\u0442\u0435 ALT-0 \u0434\u043b\u044f \u0441\u043f\u0440\u0430\u0432\u043a\u0438.","rich_text_area":"\u0412\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440","shortcuts_desc":"\u041f\u043e\u043c\u043e\u0449\u044c \u043f\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438",toolbar:"\u041f\u0430\u043d\u0435\u043b\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/ru_dlg.js b/program/js/tiny_mce/themes/advanced/langs/ru_dlg.js
deleted file mode 100644
index 4cd823d10..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/ru_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ru.advanced_dlg',{"link_list":"\u0421\u043f\u0438\u0441\u043e\u043a \u0441\u0441\u044b\u043b\u043e\u043a","link_is_external":"\u0412\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u0432\u043d\u0435\u0448\u043d\u044e\u044e \u0441\u0441\u044b\u043b\u043a\u0443, \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0435\u0444\u0438\u043a\u0441 http://?","link_is_email":"\u0412\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0443\u044e \u043f\u043e\u0447\u0442\u0443, \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0435\u0444\u0438\u043a\u0441 mailto:?","link_titlefield":"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a","link_target_blank":"\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0432 \u043d\u043e\u0432\u043e\u043c \u043e\u043a\u043d\u0435","link_target_same":"\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0432 \u044d\u0442\u043e\u043c \u043e\u043a\u043d\u0435","link_target":"\u0426\u0435\u043b\u044c","link_url":"\u0410\u0434\u0440\u0435\u0441","link_title":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u0441\u044b\u043b\u043a\u0438","image_align_right":"\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","image_align_left":"\u041f\u043e \u043b\u0435\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","image_align_textbottom":"\u041f\u043e \u043d\u0438\u0436\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e \u0442\u0435\u043a\u0441\u0442\u0430","image_align_texttop":"\u041f\u043e \u0432\u0435\u0440\u0445\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e \u0442\u0435\u043a\u0441\u0442\u0430","image_align_bottom":"\u041f\u043e \u043d\u0438\u0436\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e","image_align_middle":"\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443","image_align_top":"\u041f\u043e \u0432\u0435\u0440\u0445\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e","image_align_baseline":"\u041f\u043e \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u043b\u0438\u043d\u0438\u0438","image_align":"\u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435","image_hspace":"\u0413\u043e\u0440\u0438\u0437. \u043e\u0442\u0441\u0442\u0443\u043f","image_vspace":"\u0412\u0435\u0440\u0442. \u043e\u0442\u0441\u0442\u0443\u043f","image_dimensions":"\u0420\u0430\u0437\u043c\u0435\u0440","image_alt":"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435","image_list":"\u0421\u043f\u0438\u0441\u043e\u043a \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a","image_border":"\u0413\u0440\u0430\u043d\u0438\u0446\u0430","image_src":"\u0410\u0434\u0440\u0435\u0441","image_title":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f","charmap_title":"\u0412\u044b\u0431\u043e\u0440 \u0441\u0438\u043c\u0432\u043e\u043b\u0430","colorpicker_name":"\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435:","colorpicker_color":"\u041a\u043e\u0434:","colorpicker_named_title":"\u0426\u0432\u0435\u0442\u0430","colorpicker_named_tab":"\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f","colorpicker_palette_title":"\u0426\u0432\u0435\u0442\u0430","colorpicker_palette_tab":"\u041f\u0430\u043b\u0438\u0442\u0440\u0430","colorpicker_picker_title":"\u0426\u0432\u0435\u0442\u0430","colorpicker_picker_tab":"\u0421\u043f\u0435\u043a\u0442\u0440","colorpicker_title":"\u0426\u0432\u0435\u0442\u0430","code_wordwrap":"\u041f\u0435\u0440\u0435\u043d\u043e\u0441 \u0441\u0442\u0440\u043e\u043a","code_title":"\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 HTML \u043a\u043e\u0434\u0430","anchor_name":"\u0418\u043c\u044f \u044f\u043a\u043e\u0440\u044f","anchor_title":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u044f\u043a\u043e\u0440\u044f","about_loaded":"\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b","about_version":"\u0412\u0435\u0440\u0441\u0438\u044f","about_author":"\u0410\u0432\u0442\u043e\u0440","about_plugin":"\u041f\u043b\u0430\u0433\u0438\u043d","about_plugins":"\u041f\u043b\u0430\u0433\u0438\u043d\u044b","about_license":"\u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f","about_help":"\u041f\u043e\u043c\u043e\u0449\u044c","about_general":"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435","about_title":"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 TinyMCE","charmap_usage":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0438 \"\u0412\u043b\u0435\u0432\u043e\" \u0438 \"\u0412\u043f\u0440\u0430\u0432\u043e\" \u0434\u043b\u044f \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438.","anchor_invalid":"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0435 \u0438\u043c\u044f \u044f\u043a\u043e\u0440\u044f.","accessibility_help":"\u041f\u043e\u043c\u043e\u0449\u044c \u043f\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438","accessibility_usage_title":"\u041e\u0431\u0449\u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435","invalid_color_value":"\u041d\u0435\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u043d\u0438\u0435 \u0446\u0432\u0435\u0442\u0430"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/si.js b/program/js/tiny_mce/themes/advanced/langs/si.js
deleted file mode 100644
index 48bd6352a..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/si.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('si.advanced',{"underline_desc":"Underline (Ctrl+U)","italic_desc":"Italic (Ctrl+I)","bold_desc":"Bold (Ctrl+B)",dd:"\u0db1\u0dd2\u0dbb\u0dca\u0dc0\u0da0\u0db1 \u0dc0\u0dd2\u0dc3\u0dca\u0dad\u0dbb\u0dba",dt:"\u0db1\u0dd2\u0dbb\u0dca\u0dc0\u0da0\u0db1\u0dba ",samp:"\u0d9a\u0dda\u0dad \u0dc3\u0dcf\u0db8\u0dca\u0db4\u0dbd",code:"\u0d9a\u0dda\u0dad\u0dba",blockquote:"Blockquote",h6:"\u0db8\u0dcf\u0dad\u0dd8\u0d9a\u0dcf\u0dc0 6",h5:"\u0db8\u0dcf\u0dad\u0dd8\u0d9a\u0dcf\u0dc0 5",h4:"\u0db8\u0dcf\u0dad\u0dd8\u0d9a\u0dcf\u0dc0 4",h3:"\u0db8\u0dcf\u0dad\u0dd8\u0d9a\u0dcf\u0dc0 3",h2:"\u0db8\u0dcf\u0dad\u0dd8\u0d9a\u0dcf\u0dc0 2",h1:"\u0db8\u0dcf\u0dad\u0dd8\u0d9a\u0dcf\u0dc0 1",pre:"\u0db4\u0dd6\u0dbb\u0dca\u0dc0 \u0db1\u0dd2\u0dbb\u0dca\u0db8\u0dcf\u0dab\u0dba",address:"\u0dbd\u0dd2\u0db4\u0dd2\u0db1\u0dba",div:"Div",paragraph:"\u200d\u0da1\u0dda\u0daf\u0dba",block:"\u0d86\u0d9a\u0dd8\u0dad\u0dd2\u0dba",fontdefault:"\u0db4\u0db1\u0dca\u0daf \u0dc3\u0db8\u0dd6\u0dc4\u0dba","font_size":"\u0db4\u0db1\u0dca\u0daf \u0db4\u0dca\u200d\u0dbb\u0db8\u0dcf\u0dab\u0dba","style_select":"\u0dc1\u0ddb\u0dbd\u0dd2\u0dba","more_colors":"\u0dad\u0dc0\u0dad\u0dca \u0dc0\u0dbb\u0dca\u0dab","toolbar_focus":"Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X",newdocument:"\u0d94\u0db6\u0da7 \u0db8\u0dd9\u0db8 \u0d85\u0db1\u0dca\u0dad\u0dbb\u0dca\u0d9c\u0dad\u0dba \u0db8\u0d9a\u0dcf \u0daf\u0dd0\u0db8\u0dd3\u0db8\u0da7 \u0d85\u0dc0\u0dc1\u0dca\u200d\u0dba \u0db8 \u0daf?",path:"\u0db8\u0d9f","clipboard_msg":"\u0db4\u0dd2\u0da7\u0db4\u0dad\u0dca \u0d9a\u0dd2\u0dbb\u0dd3\u0db8/\u0d89\u0dc0\u0dad\u0dca \u0d9a\u0dd2\u0dbb\u0dd3\u0db8/\u0d87\u0dbd\u0dc0\u0dd3\u0db8 \u0db8\u0ddc\u0dc3\u0dd2\u0dbd\u0dca\u0dbd\u0dcf \u0dc4\u0dcf \u0dc6\u0dba\u0dbb\u0dca \u0dc6\u0ddc\u0d9a\u0dca\u0dc3\u0dca \u0dc4\u0dd2 \u0d87\u0dad\u0dd4\u0dc5\u0dad\u0dca \u0db1\u0ddc\u0dc0\u0dda.\n\u0d94\u0db6\u0da7 \u0db8\u0dda \u0db4\u0dd2\u0dc5\u0dd2\u0db6\u0db3\u0dc0 \u0dad\u0da0\u0daf\u0dd4\u0dbb\u0da7\u0dad\u0dca \u0dad\u0ddc\u0dbb\u0dad\u0dd4\u0dbb\u0dd4 \u0d85\u0dc0\u0dc1\u0dca\u200d\u0dba \u0dc0\u0dda\u0daf?","blockquote_desc":"Blockquote","help_desc":"\u0d8b\u0db4\u0d9a\u0dcf\u0dbb\u0dba","newdocument_desc":"\u0db1\u0dc0 \u0dbd\u0dda\u0d9b\u0db1\u0dba","image_props_desc":"\u0d85\u0db1\u0dd4\u0dbb\u0dd6\u0db4\u0dd2 \u0dbd\u0d9a\u0dca\u0dc2\u0dab\u0dba","copy_desc":"\t\u0db4\u0dd2\u0da7\u0db4\u0dad\u0dca \u0d9a\u0dbb\u0db1\u0dca\u0db1","cut_desc":"Cut","anchor_desc":"\u0d86\u0db0\u0dcf\u0dbb\u0dba \u0d87\u0dad\u0dd4\u0dc5\u0dd4/\u0dc3\u0d82\u0dc3\u0dca\u0d9a\u0dbb\u0dab\u0dba \u0d9a\u0dbb\u0db1\u0dca\u0db1 ","visualaid_desc":"\u0db8\u0dcf\u0dbb\u0dca\u0d9c\u0dc3\u0dd6\u0da0\u0d9a/\u0d85\u0daf\u0dd8\u0dc1\u0dca\u200d\u0dba \u0db8\u0dd6\u0dbd\u0dd2\u0d9a\u0dcf\u0d82\u0d9c","charmap_desc":" \u0db7\u0dcf\u0dc0\u0dd2\u0dad \u0d85\u0d9a\u0dca\u0dc2\u0dbb\u0dba \u0d87\u0dad\u0dd4\u0dbd\u0dd4 \u0d9a\u0dbb\u0db1\u0dca\u0db1","backcolor_desc":"\u0db4\u0dc3\u0dd4\u0db6\u0dd2\u0db8 \u0dc0\u0dbb\u0dca\u0dab\u0dba \u0dad\u0ddd\u0dbb\u0dcf\u0d9c\u0db1\u0dca\u0db1\u0dc0\u0dcf","forecolor_desc":" \u0db4\u0dcf\u0daa\u0dba\u0dd9\u0dc4\u0dd2 \u0dc0\u0dbb\u0dca\u0dab\u0dba \u0dad\u0ddd\u0dbb\u0dcf\u0d9c\u0db1\u0dca\u0db1\u0dc0\u0dcf","custom1_desc":"\u0d94\u0db6\u0dda \u0dc0\u0dca\u200d\u0dba\u0dc0\u0dc4\u0dcf\u0dbb\u0dd2\u0d9a \u0dc0\u0dd2\u0dc3\u0dca\u0dad\u0dbb\u0dba","removeformat_desc":"\u0d86\u0d9a\u0dd8\u0dad\u0dd2\u0d9a\u0dbb\u0dab\u0dba \u0d89\u0dc0\u0dad\u0dca\u0d9a\u0dbb\u0db1\u0dc0\u0dcf","hr_desc":"\u0dad\u0dd2\u0dbb\u0dc3\u0dca \u0dbb\u0dd6\u0dbd \u0d87\u0dad\u0dd4\u0dbd\u0dca \u0d9a\u0dbb\u0db1\u0dca\u0db1","sup_desc":"\u0d8b\u0da9\u0dd4\u0dbd\u0d9a\u0dd4\u0dab","sub_desc":"\u0dba\u0da7\u0dd2\u0dbd\u0d9a\u0dd4\u0dab\u0dd4","code_desc":" HTML \u0db8\u0dd6\u0dbd\u0dcf\u0dc1\u0dca\u200d\u0dbb\u0dba \u0dc3\u0d82\u0dc3\u0dca\u0d9a\u0dbb\u0dab\u0dba \u0d9a\u0dbb\u0db1\u0dca\u0db1","cleanup_desc":"\u0dc0\u0dd0\u0dbb\u0daf\u0dd2 \u0d9a\u0dda\u0dad \u0d89\u0dc0\u0dad\u0dca \u0d9a\u0dbb\u0db1\u0dca\u0db1","image_desc":"\u0d85\u0db1\u0dd4\u0dbb\u0dd6\u0db4\u0dba \u0d87\u0dad\u0dd4\u0dc5\u0dd4/\u0dc3\u0d82\u0dc3\u0dca\u0d9a\u0dbb\u0dab\u0dba \u0d9a\u0dbb\u0db1\u0dca\u0db1 ","unlink_desc":"Unlink","link_desc":"\u0dc3\u0db8\u0dca\u0db6\u0db1\u0dca\u0db0\u0d9a\u0dba \u0d87\u0dad\u0dd4\u0dc5\u0dd4/\u0dc3\u0d82\u0dc3\u0dca\u0d9a\u0dbb\u0dab\u0dba \u0d9a\u0dbb\u0db1\u0dca\u0db1","redo_desc":"\u0db1\u0dd0\u0dc0\u0dad \u0d9a\u0dbb\u0db1\u0dc0\u0dcf (Ctrl+Y)","undo_desc":"\u0db1\u0dd2\u0dc1\u0dca\u0db4\u0dca\u200d\u0dbb\u0db7 \u0d9a\u0dbb\u0db1\u0dca\u0db1(Ctrl+Z)","indent_desc":"Indent","outdent_desc":"Outdent","numlist_desc":"\u0d9a\u0dca\u200d\u0dbb\u0db8\u0dcf\u0db1\u0dd4\u0d9a\u0dd6\u0dbd \u0dbd\u0dd0\u0dba\u0dd2\u0dc3\u0dca\u0dad\u0dd4\u0dc0","bullist_desc":"\u0d85\u0d9a\u0dca\u200d\u0dbb\u0db8\u0dcf\u0db1\u0dd4\u0d9a\u0dd6\u0dbd \u0dbd\u0dd0\u0dba\u0dd2\u0dc3\u0dca\u0dad\u0dd4\u0dc0","justifyfull_desc":"\u0db4\u0dd9\u0dc5\u0da7 \u0d9c\u0db1\u0dca\u0db1\u0dc0\u0dcf","justifyright_desc":"\u0daf\u0d9a\u0dd4\u0dab\u0dd4 \u0db4\u0dd9\u0dc5\u0da7 \u0d9c\u0db1\u0dca\u0db1\u0dc0\u0dcf","justifycenter_desc":"\u0db8\u0dd0\u0daf \u0db4\u0dd9\u0dc5\u0da7 \u0d9c\u0db1\u0dca\u0db1\u0dc0\u0dcf","justifyleft_desc":"\u0dc0\u0db8\u0dca \u0db4\u0dd9\u0dc5\u0da7 \u0d9c\u0db1\u0dca\u0db1\u0dc0\u0dcf","striketrough_desc":"Strikethrough","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":"","paste_desc":"Paste (Ctrl+V)","help_shortcut":"Press ALT-F10 for toolbar. Press ALT-0 for help","rich_text_area":"Rich Text Area","shortcuts_desc":"Accessability Help",toolbar:"Toolbar"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/si_dlg.js b/program/js/tiny_mce/themes/advanced/langs/si_dlg.js
deleted file mode 100644
index 029f5fc03..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/si_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('si.advanced_dlg',{"link_list":"\u0d87\u0db8\u0dd4\u0dab\u0dd4\u0db8\u0dca \u0dbd\u0dba\u0dd2\u0dc3\u0dca\u0dad\u0dd4\u0dc0","link_is_external":"\u0d94\u0db6 \u0d87\u0dad\u0dd4\u0dc5\u0dad\u0dca \u0d9a\u0dc5 URL \u0dba \u0db6\u0dcf\u0dc4\u0dd2\u0dbb \u0d87\u0db8\u0dd2\u0dab\u0dd4\u0db8\u0d9a\u0dca \u0db1\u0db8\u0dca,\u0d94\u0db6\u0da7 \u0d91\u0dba\u0da7 \u0db4\u0dca\u200d\u0dbb\u0dc0\u0dda\u0dc1 \u0dc0\u0dd3\u0db8\u0da7 \u0d85\u0dc0\u0dc1\u0dca\u200d\u0dba \u0daf??","link_is_email":"\u0d94\u0db6 \u0d87\u0dad\u0dd4\u0dc5\u0dad\u0dca \u0d9a\u0dc5 URL \u0dba \u0dc0\u0dd2\u0daf\u0dca\u200d\u0dba\u0dd4\u0dad\u0dca \u0dad\u0dd0\u0db4\u0dd0\u0dbd \u0d9a\u0dca \u0db1\u0db8\u0dca \u0d94\u0db6\u0da7 \u0d91\u0dba\u0da7 \u0db4\u0dca\u200d\u0dbb\u0dc0\u0dda\u0dc1 \u0dc0\u0dd3\u0db8\u0da7 \u0d85\u0dc0\u0dc1\u0dca\u200d\u0dba \u0daf?","link_titlefield":"\u0db8\u0dcf\u0dad\u0dd8\u0d9a\u0dcf\u0dc0","link_target_blank":"\u0d87\u0db8\u0dd4\u0db1\u0dd4\u0db8 \u0dc0\u0dd9\u0db1\u0db8 \u0d9a\u0dc0\u0dd4\u0dbd\u0dd4\u0dc0\u0d9a \u0dc0\u0dd2\u0dc0\u0dd8\u0dad \u0d9a\u0dbb\u0db1\u0dca\u0db1","link_target_same":"\u0d87\u0db8\u0dd4\u0db1\u0dd4\u0db8 \u0dc0\u0dd9\u0db1\u0db8 \u0d9a\u0dc0\u0dd4\u0dbd\u0dd4\u0dc0\u0d9a \u0dc0\u0dd2\u0dc0\u0dd8\u0dad \u0d9a\u0dbb\u0db1\u0dca\u0db1","link_target":"\u0d89\u0dbd\u0d9a\u0dca\u0d9a\u0dba","link_url":"\u0d87\u0db8\u0dd4\u0db1\u0dd4\u0db8 URL","link_title":"\u0d87\u0db8\u0dd4\u0db1\u0dd4\u0db8 \u0d87\u0dad\u0dd4\u0dc5\u0dd4/\u0dc3\u0d82\u0dc3\u0dca\u0d9a\u0dbb\u0dab\u0dba \u0d9a\u0dbb\u0db1\u0dca\u0db1","image_align_right":"\u0daf\u0d9a\u0dd4\u0dab\u0da7","image_align_left":"\u0dc0\u0db8\u0da7","image_align_textbottom":"\u0db4\u0dcf\u0da8\u0dba \u0db4\u0dc4\u0dc5","image_align_texttop":"\u0db4\u0dcf\u0da8\u0dba \u0d89\u0dc4\u0dc5","image_align_bottom":"\u0dba\u0da7","image_align_middle":"\u0db8\u0dd0\u0daf","image_align_top":"\u0d89\u0dc4\u0dc5","image_align_baseline":"\u0db8\u0dd6\u0dbd\u0dd2\u0d9a\u0dba","image_align":"\u0db4\u0dd9\u0dbd \u0d9c\u0dd0\u0db1\u0dca\u0dc0\u0dd4\u0db8","image_hspace":"\u0dad\u0dd2\u0dbb\u0dc3\u0dca \u0d85\u0dc0\u0d9a\u0dcf\u0dc1\u0dba","image_vspace":"\u0dc3\u0dd2\u0dbb\u0dc3\u0dca \u0d85\u0dc0\u0d9a\u0dcf\u0dc1\u0dba","image_dimensions":"\u0db8\u0dcf\u0db1","image_alt":"\u0d85\u0db1\u0dd4\u0dbb\u0dd6\u0db4\u0dba\u0dd9\u0dc4\u0dd2 \u0dc0\u0dd2\u0dc3\u0dca\u0dad\u0dbb","image_list":"\u0d85\u0db1\u0dd4\u0dbb\u0dd6\u0db4 \u0dbd\u0dd0\u0dba\u0dd2\u0dc3\u0dca\u0dad\u0dd4\u0dc0","image_border":"\u0db6\u0ddd\u0da9\u0dbb\u0dba","image_src":"\u0d85\u0db1\u0dd4\u0dbb\u0dd6\u0db4\u0dba\u0dd9\u0dc4\u0dd2 URL","image_title":"\u0d85\u0db1\u0dd4\u0dbb\u0dd6\u0db4\u0dba\u0dd9\u0dc4\u0dd2 \u0d87\u0dad\u0dd4\u0dc5\u0dd4/\u0dc3\u0d82\u0dc3\u0dca\u0d9a\u0dbb\u0dab\u0dba \u0d9a\u0dbb\u0db1\u0dca\u0db1","charmap_title":"\u0db7\u0dcf\u0dc0\u0dd2\u0dad\u0dcf\u0dc0\u0db1 \u0d9c\u0dd4\u0dab\u0dcf\u0d82\u0d9c\u0dba \u0dad\u0ddd\u0dbb\u0db1\u0dca\u0db1","colorpicker_name":"\u0db1\u0dcf\u0db8\u0dba","colorpicker_color":"\u0dc0\u0dbb\u0dca\u0dab:","colorpicker_named_title":"\u0db1\u0db8\u0dd0\u0dad\u0dd2 \u0dc0\u0dbb\u0dca\u0dab","colorpicker_named_tab":"\u0db1\u0db8\u0dd0\u0dad\u0dd2","colorpicker_palette_title":"\t\u0dc0\u0dbb\u0dca\u0dab \u0d91\u0dbd\u0d9a \u0dc0\u0dbb\u0dca\u0dab","colorpicker_palette_tab":"\t\u0dc0\u0dbb\u0dca\u0dab \u0d91\u0dbd\u0d9a\u0dba","colorpicker_picker_title":"\u0dc0\u0dbb\u0dca\u0dab \u0d87\u0dc4\u0dd4\u0dc5\u0dd4\u0db8\u0dca \u0d9a\u0dd6\u0dbb","colorpicker_picker_tab":"\t\u0d87\u0dc4\u0dd4\u0dc5\u0dd4\u0db8\u0dca \u0d9a\u0dd6\u0dbb ","colorpicker_title":"\u0dc0\u0dbb\u0dca\u0dab\u0dba \u0dad\u0ddd\u0dbb\u0db1\u0dca\u0db1","code_wordwrap":"\u0dc0\u0dcf\u0d9c\u0dca \u0dc0\u0dd9\u0dbd\u0dd4\u0db8","code_title":"HTML \u0d9a\u0dda\u0dad \u0dc3\u0d82\u0dc3\u0dca\u0d9a\u0dcf\u0dbb\u0d9a\u0dba","anchor_name":"\u0d86\u0db0\u0dcf\u0dbb\u0d9a \u0db1\u0dcf\u0db8\u0dba","anchor_title":"\u0d86\u0db0\u0dcf\u0dbb\u0dba \u0d87\u0dad\u0dd4\u0dc5\u0dd4/\u0dc3\u0d82\u0dc3\u0dca\u0d9a\u0dbb\u0dab\u0dba \u0d9a\u0dbb\u0db1\u0dca\u0db1","about_loaded":"Loaded plugins","about_version":"\u0dc3\u0d82\u0dc3\u0dca\u0d9a\u0dbb\u0dab\u0dba","about_author":"\u0d9a\u0dad\u0dd8","about_plugin":"Plugin","about_plugins":"Plugins","about_license":"\u0db6\u0dbd\u0db4\u0dad\u0dca\u200d\u0dbb\u0dba","about_help":"\u0d8b\u0db4\u0d9a\u0dcf\u0dbb\u0dba","about_general":"\u0dc3\u0dc0\u0dd2\u0dc3\u0dca\u0dad\u0dbb\u0dcf\u0dad\u0dca\u0db8\u0d9a\u0dc0","about_title":" TinyMCE \u0db4\u0dd2\u0dc5\u0dd2\u0db6\u0db3","anchor_invalid":"Please specify a valid anchor name.","accessibility_help":"Accessibility Help","accessibility_usage_title":"General Usage"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/sk.js b/program/js/tiny_mce/themes/advanced/langs/sk.js
deleted file mode 100644
index 5633fbf25..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/sk.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sk.advanced',{"underline_desc":"Pod\u010diarknut\u00e9 (Ctrl+U)","italic_desc":"Kurz\u00edva (Ctrl+I)","bold_desc":"Tu\u010dn\u00e9 (Ctrl+B)",dd:"Popis defin\u00edcie",dt:"Term\u00edn defin\u00edcie",samp:"Uk\u00e1\u017eka k\u00f3du",code:"K\u00f3d",blockquote:"Blokov\u00e1 cit\u00e1cia",h6:"Nadpis 6",h5:"Nadpis 5",h4:"Nadpis 4",h3:"Nadpis 3",h2:"Nadpis 2",h1:"Nadpis 1",pre:"Predform\u00e1tovan\u00e9",address:"Adresa",div:"Oddiel",paragraph:"Odstavec",block:"Form\u00e1t",fontdefault:"P\u00edsmo","font_size":"Ve\u013ekos\u0165 p\u00edsma","style_select":"\u0160t\u00fdly","more_colors":"\u010eal\u0161ie farby","toolbar_focus":"Prechod na panel n\u00e1strojov - Alt Q, prechod do editora - Alt Z, prechod na cestu k objektom - Alt X",newdocument:"Ste si naozaj ist\u00ed, \u017ee chcete odstr\u00e1ni\u0165 v\u0161etok obsah?",path:"Cesta","clipboard_msg":"Funkcie kop\u00edrova\u0165/vystrihn\u00fa\u0165/vlo\u017ei\u0165 nie s\u00fa prehliada\u010dom Mozilla Firefox podporovan\u00e9. Chcete viac inform\u00e1ci\u00ed o tomto probl\u00e9me?","blockquote_desc":"Blokov\u00e1 cit\u00e1cia","help_desc":"Pomocn\u00edk","newdocument_desc":"Nov\u00fd dokument","image_props_desc":"Vlastnosti obr\u00e1zka","paste_desc":"Vlo\u017ei\u0165","copy_desc":"Kop\u00edrova\u0165","cut_desc":"Vystrihn\u00fa\u0165","anchor_desc":"Vlo\u017ei\u0165/upravi\u0165 z\u00e1lo\u017eku (kotvu)","visualaid_desc":"Zobrazi\u0165 pomocn\u00e9 linky/skryt\u00e9 prvky","charmap_desc":"Vlo\u017ei\u0165 \u0161peci\u00e1lny znak","backcolor_desc":"Farba zv\u00fdraznenia textu","forecolor_desc":"Farba p\u00edsma","custom1_desc":"\u013dubovoln\u00fd popisok","removeformat_desc":"Odstr\u00e1ni\u0165 form\u00e1tovanie","hr_desc":"Vlo\u017ei\u0165 vodorovn\u00fd odde\u013eova\u010d","sup_desc":"Horn\u00fd index","sub_desc":"Doln\u00fd index","code_desc":"Upravi\u0165 HTML zdroj","cleanup_desc":"Vy\u010disti\u0165 k\u00f3d","image_desc":"Vlo\u017ei\u0165/upravi\u0165 obr\u00e1zok","unlink_desc":"Odobra\u0165 odkaz","link_desc":"Vlo\u017ei\u0165/upravi\u0165 odkaz","redo_desc":"Znovu (Ctrl+Y)","undo_desc":"Sp\u00e4\u0165 (Ctrl+Z)","indent_desc":"Zv\u00e4\u010d\u0161i\u0165 odsadenie","outdent_desc":"Zmen\u0161i\u0165 odsadenie","numlist_desc":"\u010c\u00edslovan\u00fd zoznam","bullist_desc":"Zoznam s odr\u00e1\u017ekami","justifyfull_desc":"Zarovna\u0165 do bloku","justifyright_desc":"Zarovna\u0165 doprava","justifycenter_desc":"Zarovna\u0165 na stred","justifyleft_desc":"Zarovna\u0165 do\u013eava","striketrough_desc":"Pre\u010diarknut\u00e9","help_shortcut":"Stla\u010dte ALT F10 pre panel n\u00e1strojov. Stla\u010dte ALT 0 pre pomocn\u00edka.","rich_text_area":"Oblas\u0165 s form\u00e1tovan\u00fdm textom","shortcuts_desc":"Pomocn\u00edk",toolbar:"Panel n\u00e1strojov","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/sk_dlg.js b/program/js/tiny_mce/themes/advanced/langs/sk_dlg.js
deleted file mode 100644
index 3af287aa5..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/sk_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sk.advanced_dlg',{"link_list":"Zoznam odkazov","link_is_external":"Zadan\u00e9 URL vyzer\u00e1 ako extern\u00fd odkaz, chcete doplni\u0165 povinn\u00fd prefix http://?","link_is_email":"Zadan\u00e9 URL vyzer\u00e1 ako e-mailov\u00e1 adresa, chcete doplni\u0165 povinn\u00fd prefix mailto:?","link_titlefield":"Titulok","link_target_blank":"Otvori\u0165 odkaz v novom okne","link_target_same":"Otvori\u0165 odkaz v rovnakom okne","link_target":"Cie\u013e","link_url":"URL odkazu","link_title":"Vlo\u017ei\u0165/upravi\u0165 odkaz","image_align_right":"Vpravo","image_align_left":"V\u013eavo","image_align_textbottom":"So spodkom riadku","image_align_texttop":"S vrcholom riadku","image_align_bottom":"Dole","image_align_middle":"Na stred riadku","image_align_top":"Hore","image_align_baseline":"Na z\u00e1klad\u0148u","image_align":"Zarovnanie","image_hspace":"Horizont\u00e1lne odsadenie","image_vspace":"Vertik\u00e1lne odsadenie","image_dimensions":"Rozmery","image_alt":"Popis obr\u00e1zka","image_list":"Zoznam obr\u00e1zkov","image_border":"Or\u00e1movanie","image_src":"URL obr\u00e1zka","image_title":"Vlo\u017ei\u0165/upravi\u0165 obr\u00e1zok","charmap_title":"Vlo\u017ei\u0165 \u0161peci\u00e1lny znak","colorpicker_name":"N\u00e1zov:","colorpicker_color":"Vybrat\u00e1 farba:","colorpicker_named_title":"Pomenovan\u00e9 farby","colorpicker_named_tab":"N\u00e1zvy","colorpicker_palette_title":"Paleta farieb","colorpicker_palette_tab":"Paleta","colorpicker_picker_title":"Kvapkadlo","colorpicker_picker_tab":"Kvapkadlo","colorpicker_title":"V\u00fdber farby","code_wordwrap":"Zalamovanie riadkov","code_title":"Editor HTML","anchor_name":"N\u00e1zov z\u00e1lo\u017eky","anchor_title":"Vlo\u017ei\u0165/upravi\u0165 z\u00e1lo\u017eku (kotvu)","about_loaded":"Na\u010d\u00edtan\u00e9 z\u00e1suvn\u00e9 moduly","about_version":"Verzia","about_author":"Autor","about_plugin":"Z\u00e1suvn\u00fd modul","about_plugins":"Z\u00e1suvn\u00e9 moduly","about_license":"Licencia","about_help":"Pomocn\u00edk","about_general":"O programe","about_title":"O TinyMCE","charmap_usage":"Pre navig\u00e1ciu pou\u017eite \u0161\u00edpky v\u013eavo a vpravo.","anchor_invalid":"Zadajte, pros\u00edm, platn\u00fd n\u00e1zov z\u00e1lo\u017eky (kotvy).","accessibility_help":"Dostupnos\u0165 n\u00e1povedy","accessibility_usage_title":"V\u0161eobecn\u00e9 pou\u017eitie","invalid_color_value":"Neplatn\u00fd k\u00f3d farby"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/sl.js b/program/js/tiny_mce/themes/advanced/langs/sl.js
deleted file mode 100644
index 0f9901ef9..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/sl.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sl.advanced',{"underline_desc":"Pod\u010drtano (Ctrl+U)","italic_desc":"Po\u0161evno (Ctrl+I)","bold_desc":"Krepko (Ctrl+B)",dd:"definicija - opis",dt:"definicija - izraz",samp:"kodni zgled",code:"koda",blockquote:"citat",h6:"naslov 6",h5:"naslov 5",h4:"naslov 4",h3:"naslov 3",h2:"naslov 2",h1:"naslov 1",pre:"predoblikovano",address:"naslov",div:"blok",paragraph:"odstavek",block:"oblika",fontdefault:"Dru\u017eina pisave","font_size":"Velikost pisave","style_select":"Izberite slog","more_colors":"Ve\u010d barv","toolbar_focus":"Preskok na orodjarno - Alt+Q, Preskok v urejevalnik - Alt-Z, Preskok na pot elementa - Alt-X",newdocument:"Ste prepri\u010dani, da \u017eelite odstraniti vsebino?",path:"Pot","clipboard_msg":"Delo z odlo\u017ei\u0161\u010dem ni mogo\u010de v tem brskalniku. Lahko uporabljate kombinacije tipk Ctrl+X, Ctrl+C, Ctrl+V.\n\u017delite ve\u010d informacij o tem?","blockquote_desc":"Citat","help_desc":"Pomo\u010d","newdocument_desc":"Nov dokument","image_props_desc":"Lastnosti slike","paste_desc":"Prilepi","copy_desc":"Kopiraj","cut_desc":"Izre\u017ei","anchor_desc":"Vstavi/uredi sidro","visualaid_desc":"Preklop prikaza vodil","charmap_desc":"Vstavi posebni znak","backcolor_desc":"Izberite barvo ozadja","forecolor_desc":"Izberite barvo pisave","custom1_desc":"Opis tule","removeformat_desc":"Odstrani oblikovanje","hr_desc":"Vstavi \u010drto","sup_desc":"Nadpisano","sub_desc":"Podpisano","code_desc":"Uredi kodo HTML","cleanup_desc":"Pre\u010disti kodo","image_desc":"Vstavi/uredi sliko","unlink_desc":"Odstrani povezavo","link_desc":"Vstavi/uredi povezavo","redo_desc":"Uveljavi (Ctrl+Y)","undo_desc":"Razveljavi (Ctrl+Z)","indent_desc":"Odmakni ven","outdent_desc":"Zamakni","numlist_desc":"Na\u0161tevanje","bullist_desc":"Alineje","justifyfull_desc":"Polna poravnava","justifyright_desc":"Poravnava desno","justifycenter_desc":"Poravnava na sredino","justifyleft_desc":"Poravnava levo","striketrough_desc":"Pre\u010drtano","help_shortcut":"Pritisnite ALT-F10 za orodno vrstico, ALT-0 za pomo\u010d","rich_text_area":"Polje z obogatenim besedilom","shortcuts_desc":"Pomo\u010d za dostopnost",toolbar:"Orodna vrstica","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/sl_dlg.js b/program/js/tiny_mce/themes/advanced/langs/sl_dlg.js
deleted file mode 100644
index dccb6213f..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/sl_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sl.advanced_dlg',{"link_list":"Seznam povezav","link_is_external":"Vneseni naslov verjetno predstavlja zunanjo povezavo, \u017eelite da dodam zahtevano predpono \\\'http://\\\'?","link_is_email":"Vneseni naslov verjetno prestavlja e-naslov, \u017eelite da dodam zahtevano predpono \\\'mailto:\\\'?","link_titlefield":"Naslov","link_target_blank":"odpri povezavo v novem oknu","link_target_same":"odpri povezavo v istem oknu","link_target":"Ime cilja","link_url":"Naslov URL","link_title":"Vstavi/uredi povezavo","image_align_right":"desno, plavajo\u010de","image_align_left":"levo, plavajo\u010de","image_align_textbottom":"dno besedila","image_align_texttop":"vrh besedila","image_align_bottom":"spodaj","image_align_middle":"sredina","image_align_top":"zgoraj","image_align_baseline":"osnovna linija","image_align":"Poravnava","image_hspace":"Prostor le/de","image_vspace":"Prostor zg/sp","image_dimensions":"Dimenzije","image_alt":"Opis slike","image_list":"Seznam slik","image_border":"Obroba","image_src":"Naslov URL slike","image_title":"Vstavi/uredi sliko","charmap_title":"Izberite posebni znak","colorpicker_name":"Ime:","colorpicker_color":"Barva:","colorpicker_named_title":"Poimenovane barve","colorpicker_named_tab":"Poimenovane","colorpicker_palette_title":"Barve palete","colorpicker_palette_tab":"Paleta","colorpicker_picker_title":"Izbor barve","colorpicker_picker_tab":"Izbor","colorpicker_title":"Izberite barvo","code_wordwrap":"Prelomi vrstice","code_title":"Urejevalnik kode HTML","anchor_name":"Ime sidra","anchor_title":"Vstavi/uredi sidro","about_loaded":"Nalo\u017eeni vsadki","about_version":"Verzija","about_author":"Avtor","about_plugin":"Vsadek","about_plugins":"Vsadki","about_license":"Licenca","about_help":"Pomo\u010d","about_general":"Vizitka","about_title":"O TinyMCE","charmap_usage":"Za navigacijo uporabite tipki levo in desno.","anchor_invalid":"Prosimo vnesite veljavno ime sidra.","accessibility_help":"Pomo\u010d za dostopnost","accessibility_usage_title":"Splo\u0161na raba"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/sq.js b/program/js/tiny_mce/themes/advanced/langs/sq.js
deleted file mode 100644
index 18c265c87..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/sq.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sq.advanced',{"underline_desc":"I N\u00ebnvizuar (Ctrl+U)","italic_desc":"I Pjerr\u00ebt (Ctrl+I)","bold_desc":"I Trash\u00eb (Ctrl+B)",dd:"P\u00ebrshkrimi i p\u00ebrcaktimit",dt:"Terma e p\u00ebrcaktimit ",samp:"Shembull kodi",code:"Kod",blockquote:"Bllok",h6:"Kok\u00eb 6",h5:"Kok\u00eb 5",h4:"Kok\u00eb 4",h3:"Kok\u00eb 3",h2:"Kok\u00eb 2",h1:"Kok\u00eb 1",pre:"Para formatuar",address:"Adres\u00eb",div:"Div",paragraph:"Paragraf",block:"Formati",fontdefault:"Familja e tekstit","font_size":"Madh\u00ebsia e tekstit","style_select":"Stilet","more_colors":"M\u00eb shum\u00eb ngjyra","toolbar_focus":"Shko tek butonat - Alt+Q, Shko tek editori - Alt+Z, Shko tek rruga e elementit - Alt+X",newdocument:"Jeni t\u00eb sigurt q\u00eb doni t\'a fshini p\u00ebrmbajtjen?",path:"Rruga","clipboard_msg":"Kopja/Prerja/Ngjitja nuk suportohen n\u00eb Mozilla dhe Firefox.\nD\u00ebshironi m\u00eb shum\u00eb informacione p\u00ebr k\u00ebt\u00eb \u00e7\u00ebshtje?","blockquote_desc":"Bllok","help_desc":"Ndihm\u00eb","newdocument_desc":"Dokument i Ri","image_props_desc":"Opsionet e fotos","paste_desc":"Ngjit","copy_desc":"Kopjo","cut_desc":"Prit","anchor_desc":"Fut/edito lidhje","visualaid_desc":"Shfaq/Fshih vijat ndihm\u00ebse dhe element\u00ebt e paduksh\u00ebm","charmap_desc":"Fut karakter t\u00eb personalizuar","backcolor_desc":"Zgjidh ngjyr\u00ebn e fush\u00ebs","forecolor_desc":"Zgjidh ngjyr\u00ebn e tekstit","custom1_desc":"P\u00ebshkrimi i personalizuar k\u00ebtu","removeformat_desc":"Fshi formatimin","hr_desc":"Fut linj\u00eb horizontale","sup_desc":"Mbi shkrim","sub_desc":"N\u00ebn shkrim","code_desc":"Edito kodin HTML","cleanup_desc":"Pastro kodin","image_desc":"Fut/edito foto","unlink_desc":"Hiq lidhje","link_desc":"Fut/edito lidhje","redo_desc":"Rib\u00ebj (Ctrl+Y)","undo_desc":"\u00c7b\u00ebj (Ctrl+Z)","indent_desc":"Vendos kryerradh\u00eb","outdent_desc":"Hiq kryerradh\u00eb","numlist_desc":"List\u00eb e rregullt","bullist_desc":"List\u00eb e parregullt","justifyfull_desc":"Drejtim i plot\u00eb","justifyright_desc":"Drejtimi djathtas","justifycenter_desc":"Drejtimi qend\u00ebr","justifyleft_desc":"Drejtimi majtas","striketrough_desc":"Vij\u00eb n\u00eb mes","help_shortcut":"Shtypni ALT-F10 p\u00ebr panelin e veglave. Shtypni ALT-0 p\u00ebr ndihm\u00eb.","rich_text_area":"Zona e Pasur","shortcuts_desc":"Ndihm\u00eb p\u00ebr Aksesueshm\u00ebrin\u00eb",toolbar:"Paneli i Veglave","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/sq_dlg.js b/program/js/tiny_mce/themes/advanced/langs/sq_dlg.js
deleted file mode 100644
index de456f87e..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/sq_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sq.advanced_dlg',{"link_list":"Lista e lidhjeve","link_is_external":"Lidhja q\u00eb keni futur duket si lidhje e jasht\u00ebme. Doni t\u00eb shtoni prefiksin http://?","link_is_email":"Lidhja q\u00eb keni futur duket si adres\u00eb emaili. Doni t\u00eb shtoni prefiksin mailto:?","link_titlefield":"Titulli","link_target_blank":"Hape lidhjen n\u00eb dritare t\u00eb re","link_target_same":"Hape lidhjen n\u00eb t\u00eb nj\u00ebjt\u00ebn dritare","link_target":"Sh\u00ebnjestra","link_url":"URL e lidhjes","link_title":"Fut/edito lidhje","image_align_right":"Djathtas","image_align_left":"Majtas","image_align_textbottom":"N\u00eb fund t\u00eb tekstit","image_align_texttop":"N\u00eb krye t\u00eb tekstit","image_align_bottom":"Fund","image_align_middle":"Mes","image_align_top":"Krye","image_align_baseline":"Vij\u00eb fundore","image_align":"Drejtimi","image_hspace":"Hap\u00ebsira Horizontale","image_vspace":"Hap\u00ebsira Vertikale","image_dimensions":"P\u00ebrmasat","image_alt":"P\u00ebrshkrimi i fotos","image_list":"Lista e fotove","image_border":"Korniza","image_src":"URL e fotos","image_title":"Fut/edio foto","charmap_title":"Zgjidh karakter t\u00eb personalizuar","colorpicker_name":"Emri:","colorpicker_color":"Ngjyra:","colorpicker_named_title":"Ngjyrat e em\u00ebruara","colorpicker_named_tab":"Em\u00ebruar","colorpicker_palette_title":"Ngjyrat e Libraris\u00eb","colorpicker_palette_tab":"Librari","colorpicker_picker_title":"Zgjedh\u00ebsi i ngjyr\u00ebs","colorpicker_picker_tab":"Zgjedh\u00ebsi","colorpicker_title":"Zgjidh nj\u00eb ngjyr\u00eb","code_wordwrap":"Word wrap","code_title":"Edituesi i kodit HTML","anchor_name":"Emri i lidhjes","anchor_title":"Fut/edito lidhje","about_loaded":"Shtesa t\u00eb ngarkuara","about_version":"Versioni","about_author":"Autori","about_plugin":"Shtes\u00eb","about_plugins":"Shtesa","about_license":"Li\u00e7enca","about_help":"Ndihm\u00eb","about_general":"Rreth","about_title":"Rreth TinyMCE","charmap_usage":"P\u00ebrdorni butonat majtas dhe djatthas p\u00ebr navigim.","anchor_invalid":"P\u00ebrcaktoni nj\u00eb em\u00ebr t\u00eb sakt\u00eb lidhjeje.","accessibility_help":"Ndihm\u00eb p\u00ebr Aksesueshm\u00ebrin\u00eb.","accessibility_usage_title":"P\u00ebrdorim i P\u00ebrgjithsh\u00ebm"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/sr.js b/program/js/tiny_mce/themes/advanced/langs/sr.js
deleted file mode 100644
index 1042caa8a..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/sr.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sr.advanced',{"underline_desc":"Podvu\u010deno (Ctrl U)","italic_desc":"Isko\u0161eno (Ctrl I)","bold_desc":"Podebljano (Ctrl B)",dd:"Opis definicije",dt:"Pojam definicija",samp:"Uzorak koda",code:"Kod",blockquote:"Citat",h6:"Naslov 6",h5:"Naslov 5",h4:"Naslov 4",h3:"Naslov 3",h2:"Naslov 2",h1:"Naslov 1",pre:"Unapred formatirano",address:"Adresa",div:"Div",paragraph:"Pasus",block:"Formatiranje",fontdefault:"Pismo","font_size":"Veli\u010dina slova","style_select":"Stilovi","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":"","more_colors":"Jo\u0161 boja","toolbar_focus":"Pre\u0111i na traku sa alatkama - Alt Q, Pre\u0111i na editor - Alt-Z, Pre\u0111i na putanju elementa - Alt-X",newdocument:"Da li ste sigurni da \u017eelite da obri\u0161ete sav sadr\u017eaj?",path:"Putanja","clipboard_msg":"Kopiraj/Iseci/Zalepi nisu dostupni u Mozilla i Firefox web \u010dita\u010dima. \u017delite li vi\u0161e informacija o ovom problemu?","blockquote_desc":"Du\u017ei citat","help_desc":"Pomo\u0107","newdocument_desc":"Nov dokument","image_props_desc":"Osobine slike","paste_desc":"Zalepi","copy_desc":"Kopiraj","cut_desc":"Iseci","anchor_desc":"Ubaci/Uredi sidro","visualaid_desc":"Uklju\u010di/Isklju\u010di linije vodilje/nevidljive elemente","charmap_desc":"Umetni simbol","backcolor_desc":"Izaberi boju pozadine","forecolor_desc":"Izaberi boju teksta","custom1_desc":"Sopstveni opis","removeformat_desc":"Ukloni formatiranje","hr_desc":"Umetni horizontalnu liniju","sup_desc":"Eksponent","sub_desc":"Indeks","code_desc":"Uredi HTML","cleanup_desc":"O\u010disti kod","image_desc":"Umetni/Uredi sliku","unlink_desc":"Ukloni link","link_desc":"Umetni/Uredi link","redo_desc":"Poni\u0161ti opoziv (Ctrl Y)","undo_desc":"Opozovi (Ctrl+Z)","indent_desc":"Uvla\u010denje","outdent_desc":"Izvla\u010denje","numlist_desc":"Ure\u0111eno nabrajanje","bullist_desc":"Neure\u0111eno nabrajanje","justifyfull_desc":"Obostrano poravnanje","justifyright_desc":"Desno poravnanje","justifycenter_desc":"Poravnanje po sredini","justifyleft_desc":"Levo poravnanje","striketrough_desc":"Precrtano","help_shortcut":"Pritisnite ALT-F10 za traku sa alatkama. Pritisnite ALT-0 za pomo\u0107.","rich_text_area":"Rich Text Area","shortcuts_desc":"Pomo\u0107 u vezi dostupnosti",toolbar:"Traka sa alatkama"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/sr_dlg.js b/program/js/tiny_mce/themes/advanced/langs/sr_dlg.js
deleted file mode 100644
index aca90a3e7..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/sr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sr.advanced_dlg',{"link_list":"Link (sa liste)","link_is_external":"URL koji ste uneli izgleda kao spolja\u0161nji link, da li \u017eelite da dodate neophodni http:// prefiks?","link_is_email":"URL koji ste uneli izgleda kao e-mail adresa, da li \u017eelite da dodate neophodni mailto: prefiks?","link_titlefield":"Naslov","link_target_blank":"Otvori link u novom prozoru","link_target_same":"Otvori link u istom prozoru","link_target":"Meta","link_url":"URL linka","link_title":"Umetni/Uredi link","image_align_right":"Desno","image_align_left":"Levo","image_align_textbottom":"Dno teksta","image_align_texttop":"Vrh teksta","image_align_bottom":"Dole","image_align_middle":"Sredina","image_align_top":"Gore","image_align_baseline":"Osnovna linija","image_align":"Poravnanje","image_hspace":"Horizontalni razmak","image_vspace":"Vertikalni razmak","image_dimensions":"Dimenzije","image_alt":"Opis slike","image_list":"Slika (sa liste)","image_border":"Ivice","image_src":"URL slike","image_title":"Umetni/Uredi sliku","charmap_title":"Odaberi simbol","colorpicker_name":"Naziv:","colorpicker_color":"Boja:","colorpicker_named_title":"Boje sa nazivom","colorpicker_named_tab":"Po nazivu","colorpicker_palette_title":"Paleta boja","colorpicker_palette_tab":"Iz palete","colorpicker_picker_title":"Pipeta za boje","colorpicker_picker_tab":"Pipetom","colorpicker_title":"Izaberite boju","code_wordwrap":"Omotaj tekst","code_title":"HTML editor","anchor_name":"Naziv sidra","anchor_title":"Umetni/Uredi sidro","about_loaded":"Aktivni dodaci","about_version":"Verzija","about_author":"Autor","about_plugin":"Dodatak","about_plugins":"Dodaci","about_license":"Licenca","about_help":"Pomo\u0107","about_general":"O programu","about_title":"O TinyMCE","anchor_invalid":"Navedite valjani naziv sidra","accessibility_help":"Accessibility Help","accessibility_usage_title":"General Usage"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/sv.js b/program/js/tiny_mce/themes/advanced/langs/sv.js
deleted file mode 100644
index 9a20833ad..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/sv.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sv.advanced',{"underline_desc":"Understruken (Ctrl+U)","italic_desc":"Kursiv (Ctrl+I)","bold_desc":"Fet (Ctrl+B)",dd:"Definitionsbeskrivning",dt:"Definitionsterm",samp:"Kodexempel",code:"Kodblock",blockquote:"Blockcitat",h6:"Rubrik 6",h5:"Rubrik 5",h4:"Rubrik 4",h3:"Rubrik 3",h2:"Rubrik 2",h1:"Rubrik 1",pre:"F\u00f6rformaterad",address:"Adress",div:"Div",paragraph:"Stycke",block:"Format",fontdefault:"Teckensnitt","font_size":"Teckenstorlek","style_select":"Stilar","more_colors":"Mer f\u00e4rger","toolbar_focus":"Hoppa till verktygsf\u00e4ltet - Alt+Q, Hoppa till redigeraren - Alt-Z, Hoppa till elementlistan - Alt-X",newdocument:"\u00c4r du s\u00e4ker p\u00e5 att du vill radera allt inneh\u00e5ll?",path:"Element","clipboard_msg":"Kopiera/klipp ut/klistra in \u00e4r inte tillg\u00e4ngligt i din webbl\u00e4sare.\nVill du veta mer om detta?","blockquote_desc":"Blockcitat","help_desc":"Hj\u00e4lp","newdocument_desc":"Nytt dokument","image_props_desc":"Bildinst\u00e4llningar","paste_desc":"Klistra in","copy_desc":"Kopiera","cut_desc":"Klipp ut","anchor_desc":"Infoga/redigera bokm\u00e4rke","visualaid_desc":"Visa/d\u00f6lj visuella hj\u00e4lpmedel","charmap_desc":"Infoga specialtecken","backcolor_desc":"V\u00e4lj bakgrundsf\u00e4rg","forecolor_desc":"V\u00e4lj textf\u00e4rg","custom1_desc":"Din beskrivning h\u00e4r","removeformat_desc":"Ta bort formatering","hr_desc":"Infoga horisontell skiljelinje","sup_desc":"Superscript","sub_desc":"Subscript","code_desc":"Redigera HTML k\u00e4llkoden","cleanup_desc":"St\u00e4da upp i k\u00e4llkoden","image_desc":"Infoga/redigera bild","unlink_desc":"Ta bort l\u00e4nk","link_desc":"Infoga/redigera l\u00e4nk","redo_desc":"G\u00f6r om (Ctrl+Y)","undo_desc":"\u00c5ngra (Ctrl+Z)","indent_desc":"Indrag","outdent_desc":"Drag tillbaka","numlist_desc":"Nummerlista","bullist_desc":"Punktlista","justifyfull_desc":"Justera","justifyright_desc":"H\u00f6gerst\u00e4lld","justifycenter_desc":"Centrera","justifyleft_desc":"V\u00e4nsterst\u00e4lld","striketrough_desc":"Genomstruken","help_shortcut":"Alt-F10 f\u00f6r verktygsf\u00e4lt. Alt-0 f\u00f6r hj\u00e4lp.","rich_text_area":"Redigeringsarea","shortcuts_desc":"Hj\u00e4lp f\u00f6r funktionshindrade",toolbar:"Verktygsf\u00e4lt","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/sv_dlg.js b/program/js/tiny_mce/themes/advanced/langs/sv_dlg.js
deleted file mode 100644
index f2da940ed..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/sv_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sv.advanced_dlg',{"link_list":"L\u00e4nklista","link_is_external":"L\u00e4nken du angav verkar vara en extern adress. Vill du infoga http:// prefixet p\u00e5 l\u00e4nken?","link_is_email":"L\u00e4nken du angav verkar vara en e-post adress. Vill du infoga mailto: prefixet p\u00e5 l\u00e4nken?","link_titlefield":"Titel","link_target_blank":"\u00d6\u0096ppna l\u00e4nken i ett nytt f\u00f6nster","link_target_same":"\u00d6\u0096ppna l\u00e4nken i samma f\u00f6nster","link_target":"M\u00e5l","link_url":"L\u00e4nkens URL","link_title":"Infoga/redigera l\u00e4nk","image_align_right":"H\u00f6ger","image_align_left":"V\u00e4nster","image_align_textbottom":"Botten av texten","image_align_texttop":"Toppen av texten","image_align_bottom":"Botten","image_align_middle":"Mitten","image_align_top":"Toppen","image_align_baseline":"Baslinje","image_align":"Justering","image_hspace":"Horisontalrymd","image_vspace":"Vertikalrymd","image_dimensions":"Dimensioner","image_alt":"Bildens beskrivning","image_list":"Bildlista","image_border":"Ram","image_src":"Bildens URL","image_title":"Infoga/redigera bild","charmap_title":"V\u00e4lj ett specialtecken","colorpicker_name":"Namn:","colorpicker_color":"F\u00e4rg:","colorpicker_named_title":"Namngivna f\u00e4rger","colorpicker_named_tab":"Namngivna","colorpicker_palette_title":"Palettf\u00e4rger","colorpicker_palette_tab":"Palett","colorpicker_picker_title":"F\u00e4rgv\u00e4ljare","colorpicker_picker_tab":"V\u00e4ljare","colorpicker_title":"V\u00e4lj en f\u00e4rg","code_wordwrap":"Bryt ord","code_title":"HTML k\u00e4llkodsl\u00e4ge","anchor_name":"Namn","anchor_title":"Infoga/redigera bokm\u00e4rke","about_loaded":"Laddade plug-ins","about_version":"Version","about_author":"Utvecklare","about_plugin":"Om plug-in","about_plugins":"Om plug-in","about_license":"Licens","about_help":"Hj\u00e4lp","about_general":"Om","about_title":"Om TinyMCE","charmap_usage":"Anv\u00e4nd v\u00e4nster och h\u00f6ger pil f\u00f6r att navigera","anchor_invalid":"Skiv ett korrekt ankarnamn.","accessibility_help":"Tillg\u00e4nglighets hj\u00e4lp","accessibility_usage_title":"Generellanv\u00e4ndning","invalid_color_value":"Felaktigt f\u00e4rgv\u00e4rde"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/ta.js b/program/js/tiny_mce/themes/advanced/langs/ta.js
deleted file mode 100644
index c72f17991..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/ta.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ta.advanced',{"underline_desc":"Underline (Ctrl+U)","italic_desc":"Italic (Ctrl+I)","bold_desc":"Bold (Ctrl+B)",dd:"Definition description",dt:"Definition term ",samp:"Code sample",code:"Code",blockquote:"Blockquote",h6:"Heading 6",h5:"Heading 5",h4:"Heading 4",h3:"Heading 3",h2:"Heading 2",h1:"Heading 1",pre:"Preformatted",address:"Address",div:"Div",paragraph:"Paragraph",block:"Format",fontdefault:"Font family","font_size":"Font size","style_select":"Styles","more_colors":"More colors","toolbar_focus":"Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X",newdocument:"Are you sure you want clear all contents?",path:"Path","clipboard_msg":"Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?","blockquote_desc":"Blockquote","help_desc":"Help","newdocument_desc":"New document","image_props_desc":"Image properties","paste_desc":"Paste","copy_desc":"Copy","cut_desc":"Cut","anchor_desc":"Insert/edit anchor","visualaid_desc":"Toggle guidelines/invisible elements","charmap_desc":"Insert custom character","backcolor_desc":"Select background color","forecolor_desc":"Select text color","custom1_desc":"Your custom description here","removeformat_desc":"Remove formatting","hr_desc":"Insert horizontal ruler","sup_desc":"Superscript","sub_desc":"Subscript","code_desc":"Edit HTML Source","cleanup_desc":"Cleanup messy code","image_desc":"Insert/edit image","unlink_desc":"Unlink","link_desc":"Insert/edit link","redo_desc":"Redo (Ctrl+Y)","undo_desc":"Undo (Ctrl+Z)","indent_desc":"Indent","outdent_desc":"Outdent","numlist_desc":"Ordered list","bullist_desc":"Unordered list","justifyfull_desc":"Align full","justifyright_desc":"Align right","justifycenter_desc":"Align center","justifyleft_desc":"Align left","striketrough_desc":"Strikethrough","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":"","help_shortcut":"Press ALT-F10 for toolbar. Press ALT-0 for help","rich_text_area":"Rich Text Area","shortcuts_desc":"Accessability Help",toolbar:"Toolbar"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/ta_dlg.js b/program/js/tiny_mce/themes/advanced/langs/ta_dlg.js
deleted file mode 100644
index f7646ae1a..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/ta_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ta.advanced_dlg',{"link_list":"Link list","link_is_external":"The URL you entered seems to external link, do you want to add the required http:// prefix?","link_is_email":"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?","link_titlefield":"Title","link_target_blank":"Open link in a new window","link_target_same":"Open link in the same window","link_target":"Target","link_url":"Link URL","link_title":"Insert/edit link","image_align_right":"Right","image_align_left":"Left","image_align_textbottom":"Text bottom","image_align_texttop":"Text top","image_align_bottom":"Bottom","image_align_middle":"Middle","image_align_top":"Top","image_align_baseline":"Baseline","image_align":"Alignment","image_hspace":"Horizontal space","image_vspace":"Vertical space","image_dimensions":"Dimensions","image_alt":"Image description","image_list":"Image list","image_border":"Border","image_src":"Image URL","image_title":"Insert/edit image","charmap_title":"Select custom character","colorpicker_name":"Name:","colorpicker_color":"Color:","colorpicker_named_title":"Named colors","colorpicker_named_tab":"Named","colorpicker_palette_title":"Palette colors","colorpicker_palette_tab":"Palette","colorpicker_picker_title":"Color picker","colorpicker_picker_tab":"Picker","colorpicker_title":"Select a color","code_wordwrap":"Word wrap","code_title":"HTML Source Editor","anchor_name":"Anchor name","anchor_title":"Insert/edit anchor","about_loaded":"Loaded plugins","about_version":"Version","about_author":"Author","about_plugin":"Plugin","about_plugins":"Plugins","about_license":"License","about_help":"Help","about_general":"About","about_title":"About TinyMCE","anchor_invalid":"Please specify a valid anchor name.","accessibility_help":"Accessibility Help","accessibility_usage_title":"General Usage"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/th.js b/program/js/tiny_mce/themes/advanced/langs/th.js
deleted file mode 100644
index 144f0a2df..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/th.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('th.advanced',{"underline_desc":"\u0e15\u0e31\u0e27\u0e02\u0e35\u0e14\u0e40\u0e2a\u0e49\u0e19\u0e43\u0e15\u0e49(Ctrl+U)","italic_desc":"\u0e15\u0e31\u0e27\u0e40\u0e2d\u0e35\u0e22\u0e07 (Ctrl+I)","bold_desc":"\u0e15\u0e31\u0e27\u0e2b\u0e19\u0e32 (Ctrl+B)",dd:"\u0e23\u0e32\u0e22\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14\u0e04\u0e33\u0e19\u0e34\u0e22\u0e32\u0e21",dt:"\u0e04\u0e33\u0e19\u0e34\u0e22\u0e32\u0e21",samp:"\u0e42\u0e04\u0e49\u0e14\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07",code:"\u0e42\u0e04\u0e49\u0e14",blockquote:"\u0e2d\u0e49\u0e32\u0e07\u0e2d\u0e34\u0e07",h6:"Heading 6",h5:"Heading 5",h4:"Heading 4",h3:"Heading 3",h2:"Heading 2",h1:"Heading 1",pre:"\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e1e\u0e37\u0e49\u0e19\u0e10\u0e32\u0e19",address:"\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48",div:"Div",paragraph:"\u0e22\u0e48\u0e2d\u0e2b\u0e19\u0e49\u0e32",block:"\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a",fontdefault:"\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23","font_size":"\u0e02\u0e19\u0e32\u0e14\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23","style_select":"\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a","more_colors":"\u0e2a\u0e35\u0e2d\u0e37\u0e48\u0e19\u0e46","toolbar_focus":"Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X",newdocument:"\u0e04\u0e38\u0e13\u0e41\u0e19\u0e48\u0e43\u0e08\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48\u0e27\u0e48\u0e32\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e25\u0e49\u0e32\u0e07\u0e40\u0e19\u0e37\u0e49\u0e2d\u0e2b\u0e32\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14?",path:"\u0e1e\u0e32\u0e17","clipboard_msg":"\u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01 / \u0e15\u0e31\u0e14 / \u0e27\u0e32\u0e07\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e21\u0e35\u0e43\u0e2b\u0e49\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e43\u0e19 Mozilla \u0e41\u0e25\u0e30 Firefox.\nDo \u0e04\u0e38\u0e13\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e15\u0e34\u0e21\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e1b\u0e31\u0e0d\u0e2b\u0e32\u0e19\u0e35\u0e49\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48?","blockquote_desc":"\u0e2d\u0e49\u0e32\u0e07\u0e16\u0e36\u0e07","help_desc":"\u0e0a\u0e48\u0e27\u0e22\u0e40\u0e2b\u0e25\u0e37\u0e2d","newdocument_desc":"\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e43\u0e2b\u0e21\u0e48","image_props_desc":"\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e23\u0e39\u0e1b","paste_desc":"\u0e27\u0e32\u0e07","copy_desc":"\u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01","cut_desc":"\u0e15\u0e31\u0e14","anchor_desc":"\u0e40\u0e1e\u0e34\u0e48\u0e21/\u0e41\u0e01\u0e49\u0e44\u0e02 \u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e25\u0e34\u0e49\u0e07\u0e04\u0e4c","visualaid_desc":"\u0e2a\u0e25\u0e31\u0e1a guidelines/\u0e0b\u0e48\u0e2d\u0e19 elements","charmap_desc":"\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23","backcolor_desc":"\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2a\u0e35\u0e1e\u0e37\u0e49\u0e19\u0e2b\u0e25\u0e31\u0e07","forecolor_desc":"\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2a\u0e35\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21","custom1_desc":"\u0e43\u0e2a\u0e48\u0e23\u0e32\u0e22\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14\u0e40\u0e2d\u0e07\u0e44\u0e14\u0e49\u0e17\u0e35\u0e48\u0e19\u0e35\u0e48","removeformat_desc":"\u0e25\u0e49\u0e32\u0e07\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a","hr_desc":"\u0e43\u0e2a\u0e48\u0e40\u0e2a\u0e49\u0e19\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14","sup_desc":"\u0e15\u0e31\u0e27\u0e22\u0e01","sub_desc":"\u0e15\u0e31\u0e27\u0e2b\u0e49\u0e2d\u0e22","code_desc":"\u0e41\u0e01\u0e49\u0e44\u0e02 HTML","cleanup_desc":"\u0e25\u0e49\u0e32\u0e07\u0e42\u0e04\u0e49\u0e14","image_desc":"\u0e40\u0e1e\u0e34\u0e48\u0e21/\u0e41\u0e01\u0e49\u0e44\u0e02 \u0e23\u0e39\u0e1b","unlink_desc":"\u0e22\u0e01\u0e40\u0e25\u0e34\u0e01\u0e25\u0e34\u0e49\u0e07\u0e04\u0e4c","link_desc":"\u0e40\u0e1e\u0e34\u0e48\u0e21/\u0e41\u0e01\u0e49\u0e44\u0e02 \u0e25\u0e34\u0e49\u0e07\u0e04\u0e4c","redo_desc":"\u0e22\u0e49\u0e2d\u0e19\u0e01\u0e25\u0e31\u0e1a (Ctrl+Y)","undo_desc":"\u0e22\u0e01\u0e40\u0e25\u0e34\u0e01 (Ctrl+Z)","indent_desc":"\u0e40\u0e22\u0e37\u0e49\u0e2d\u0e07\u0e02\u0e27\u0e32","outdent_desc":"\u0e25\u0e14\u0e01\u0e32\u0e23\u0e40\u0e22\u0e37\u0e49\u0e2d\u0e07","numlist_desc":"\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e15\u0e31\u0e27\u0e40\u0e25\u0e02","bullist_desc":"\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23","justifyfull_desc":"\u0e08\u0e31\u0e14\u0e40\u0e15\u0e47\u0e21\u0e2b\u0e19\u0e49\u0e32","justifyright_desc":"\u0e08\u0e31\u0e14\u0e02\u0e27\u0e32","justifycenter_desc":"\u0e08\u0e31\u0e14\u0e01\u0e25\u0e32\u0e07","justifyleft_desc":"\u0e08\u0e31\u0e14\u0e0b\u0e49\u0e32\u0e22","striketrough_desc":"\u0e02\u0e35\u0e14\u0e06\u0e48\u0e32","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":"","help_shortcut":"Press ALT-F10 for toolbar. Press ALT-0 for help","rich_text_area":"Rich Text Area","shortcuts_desc":"Accessability Help",toolbar:"Toolbar"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/th_dlg.js b/program/js/tiny_mce/themes/advanced/langs/th_dlg.js
deleted file mode 100644
index 81540943f..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/th_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('th.advanced_dlg',{"link_list":"\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e25\u0e34\u0e49\u0e07\u0e04\u0e4c","link_is_external":"URL \u0e17\u0e35\u0e48\u0e04\u0e38\u0e13\u0e1b\u0e49\u0e2d\u0e19\u0e14\u0e39\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e27\u0e48\u0e32\u0e20\u0e32\u0e22\u0e19\u0e2d\u0e01\u0e25\u0e34\u0e07\u0e04\u0e04\u0e38\u0e13\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e40\u0e1e\u0e34\u0e48\u0e21 http:// \u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48 ?","link_is_email":"URL \u0e17\u0e35\u0e48\u0e04\u0e38\u0e13\u0e1b\u0e49\u0e2d\u0e19\u0e14\u0e39\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e27\u0e48\u0e32\u0e08\u0e30\u0e21\u0e35\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e2d\u0e35\u0e40\u0e21\u0e25\u0e2d\u0e22\u0e39\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e40\u0e1e\u0e34\u0e48\u0e21 mailto: \u0e19\u0e33\u0e2b\u0e19\u0e49\u0e32\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48 ?","link_titlefield":"\u0e0a\u0e37\u0e48\u0e2d","link_target_blank":"\u0e40\u0e1b\u0e34\u0e14\u0e25\u0e34\u0e49\u0e07\u0e04\u0e4c\u0e43\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e48\u0e32\u0e07\u0e43\u0e2b\u0e21\u0e48","link_target_same":"\u0e40\u0e1b\u0e34\u0e14\u0e25\u0e34\u0e49\u0e07\u0e04\u0e4c\u0e43\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e48\u0e32\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19","link_target":"\u0e40\u0e1b\u0e49\u0e32\u0e2b\u0e21\u0e32\u0e22","link_url":"\u0e25\u0e34\u0e49\u0e07\u0e04\u0e4c URL","link_title":"\u0e40\u0e1e\u0e34\u0e48\u0e21/\u0e41\u0e01\u0e49\u0e44\u0e02 \u0e25\u0e34\u0e49\u0e07\u0e04\u0e4c","image_align_right":"\u0e02\u0e27\u0e32","image_align_left":"\u0e0b\u0e49\u0e32\u0e22","image_align_textbottom":"\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e2d\u0e22\u0e39\u0e48\u0e25\u0e48\u0e32\u0e07","image_align_texttop":"\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e2d\u0e22\u0e39\u0e48\u0e1a\u0e19","image_align_bottom":"\u0e25\u0e48\u0e32\u0e07","image_align_middle":"\u0e01\u0e25\u0e32\u0e07","image_align_top":"\u0e1a\u0e19","image_align_baseline":"\u0e40\u0e2a\u0e49\u0e19\u0e1e\u0e37\u0e49\u0e19","image_align":"\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07\u0e08\u0e31\u0e14\u0e27\u0e32\u0e07","image_hspace":"\u0e23\u0e30\u0e22\u0e30\u0e2b\u0e48\u0e32\u0e07\u0e41\u0e19\u0e27\u0e19\u0e2d\u0e19","image_vspace":"\u0e23\u0e30\u0e22\u0e30\u0e2b\u0e48\u0e32\u0e07\u0e41\u0e19\u0e27\u0e15\u0e31\u0e49\u0e07","image_dimensions":"\u0e02\u0e19\u0e32\u0e14","image_alt":"\u0e23\u0e32\u0e22\u0e25\u0e30\u0e2d\u0e35\u0e22\u0e14\u0e23\u0e39\u0e1b","image_list":"\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e23\u0e39\u0e1b","image_border":"\u0e01\u0e23\u0e2d\u0e1a","image_src":"URL \u0e23\u0e39\u0e1b","image_title":"\u0e40\u0e1e\u0e34\u0e48\u0e21/\u0e41\u0e01\u0e49\u0e44\u0e02 \u0e23\u0e39\u0e1b","charmap_title":"\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23\u0e17\u0e35\u0e48\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e40\u0e2d\u0e07","colorpicker_name":"\u0e0a\u0e37\u0e48\u0e2d:","colorpicker_color":"\u0e2a\u0e35:","colorpicker_named_title":"\u0e0a\u0e37\u0e48\u0e2d\u0e2a\u0e35","colorpicker_named_tab":"\u0e0a\u0e37\u0e48\u0e2d","colorpicker_palette_title":"\u0e08\u0e32\u0e19\u0e2a\u0e35","colorpicker_palette_tab":"\u0e08\u0e32\u0e19\u0e2a\u0e35","colorpicker_picker_title":"\u0e08\u0e32\u0e19\u0e2a\u0e35","colorpicker_picker_tab":"\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2a\u0e35","colorpicker_title":"\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2a\u0e35","code_wordwrap":"\u0e15\u0e31\u0e14\u0e04\u0e33","code_title":"\u0e41\u0e01\u0e49\u0e44\u0e02 HTML","anchor_name":"\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e25\u0e34\u0e49\u0e07\u0e04\u0e4c","anchor_title":"\u0e40\u0e1e\u0e34\u0e48\u0e21/\u0e41\u0e01\u0e49\u0e44\u0e02 \u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e25\u0e34\u0e49\u0e07\u0e04\u0e4c","about_loaded":"\u0e42\u0e2b\u0e25\u0e14\u0e1b\u0e25\u0e31\u0e4a\u0e01\u0e2d\u0e34\u0e19","about_version":"\u0e23\u0e38\u0e48\u0e19","about_author":"\u0e1c\u0e39\u0e49\u0e40\u0e02\u0e35\u0e22\u0e19","about_plugin":"\u0e1b\u0e25\u0e31\u0e4a\u0e01\u0e2d\u0e34\u0e19","about_plugins":"\u0e1b\u0e25\u0e31\u0e4a\u0e01\u0e2d\u0e34\u0e19","about_license":"\u0e25\u0e34\u0e02\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c","about_help":"\u0e0a\u0e48\u0e27\u0e22\u0e40\u0e2b\u0e25\u0e37\u0e2d","about_general":"\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e40\u0e23\u0e32","about_title":"\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a TinyMCE","charmap_usage":"Use left and right arrows to navigate.","anchor_invalid":"Please specify a valid anchor name.","accessibility_help":"Accessibility Help","accessibility_usage_title":"General Usage","invalid_color_value":"Invalid color value"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/tr.js b/program/js/tiny_mce/themes/advanced/langs/tr.js
deleted file mode 100644
index e08a86bda..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/tr.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('tr.advanced',{"underline_desc":"Alt\u0131 \u00e7izili (Ctrl+U)","italic_desc":"\u0130talik (Ctrl+I)","bold_desc":"Kal\u0131n (Ctrl+B)",dd:"A\u00e7\u0131klama tan\u0131mlama",dt:"\u0130fade tan\u0131mlama ",samp:"\u00d6rnek kod",code:"Kod",blockquote:"Blok al\u0131nt\u0131",h6:"Ba\u015fl\u0131k 6",h5:"Ba\u015fl\u0131k 5",h4:"Ba\u015fl\u0131k 4",h3:"Ba\u015fl\u0131k 3",h2:"Ba\u015fl\u0131k 2",h1:"Ba\u015fl\u0131k 1",pre:"\u00d6nceden bi\u00e7imlendirilmi\u015f",address:"Adres",div:"Blok",paragraph:"Paragraf",block:"Bi\u00e7im",fontdefault:"Yaz\u0131 tipi","font_size":"Yaz\u0131 boyutu","style_select":"Stiller","more_colors":"Daha fazla renk","toolbar_focus":"Alt+Q ara\u00e7 d\u00fc\u011fmelerine ge\u00e7. Alt+Z: Edit\u00f6re ge\u00e7. Alt+X:Elementin yoluna ge\u00e7.",newdocument:"T\u00fcm i\u00e7eriklerleri temizlemek istedi\u011finizden emin misiniz?",path:"Yol","clipboard_msg":"Mozilla Firefox da Kes/Kopyala/Yap\u0131\u015ft\u0131r kullan\u0131lamaz. Bu konu hakk\u0131nda daha fazla bilgi almak ister misiniz?","blockquote_desc":"Blok al\u0131nt\u0131","help_desc":"Yard\u0131m","newdocument_desc":"Bo\u015f belge","image_props_desc":"Resim \u00f6zellikleri","paste_desc":"Yap\u0131\u015ft\u0131r","copy_desc":"Kopyala","cut_desc":"Kes","anchor_desc":"K\u00f6pr\u00fc ekle/d\u00fczenle","visualaid_desc":"K\u0131lavuz/g\u00f6r\u00fcnmez nesneleri a\u00e7/kapat.","charmap_desc":"\u00d6zel karakter ekle","backcolor_desc":"Arkaplan rengini se\u00e7","forecolor_desc":"Metin rengini se\u00e7","custom1_desc":"\u00d6zel a\u00e7\u0131klamalar burada","removeformat_desc":"Bi\u00e7imi temizle","hr_desc":"Yatay cetvel ekle","sup_desc":"\u00dcstsimge","sub_desc":"Altsimge","code_desc":"HTML Kayna\u011f\u0131n\u0131 D\u00fczenle","cleanup_desc":"Da\u011f\u0131n\u0131k kodu temizle","image_desc":"Resim ekle/d\u00fczenle","unlink_desc":"Ba\u011flant\u0131y\u0131 kald\u0131r","link_desc":"Ba\u011flant\u0131 ekle/d\u00fczenle","redo_desc":"Yinele (Ctrl+Y)","undo_desc":"Geri al (Ctrl+Z)","indent_desc":"Girintiyi art\u0131r","outdent_desc":"Girintiyi azalt","numlist_desc":"S\u0131ral\u0131 liste","bullist_desc":"S\u0131ras\u0131z liste","justifyfull_desc":"\u0130ki yana yasla","justifyright_desc":"Sa\u011fa hizala","justifycenter_desc":"Ortala","justifyleft_desc":"Sola hizala","striketrough_desc":"\u00dcst\u00fc \u00e7izili","help_shortcut":"Toolbar i\u00e7in ALT-F10 a bas\u0131n. Yard\u0131m i\u00e7in ALT-0 a bas\u0131n.","rich_text_area":"Zengin Metin Alan\u0131","shortcuts_desc":"Eri\u015filebilirlik Yard\u0131m\u0131",toolbar:"Toolbar","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/tr_dlg.js b/program/js/tiny_mce/themes/advanced/langs/tr_dlg.js
deleted file mode 100644
index 099414803..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/tr_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('tr.advanced_dlg',{"link_list":"Ba\u011flant\u0131 listesi","link_is_external":"Girdi\u011fiz URL d\u0131\u015f ba\u011flant\u0131 gibi g\u00f6r\u00fcn\u00fcyor; gerekli olan http:// \u00f6nekinin eklenmesini ister misiniz?","link_is_email":"Girdi\u011finiz URL e-posta adresi gibi g\u00f6r\u00fcn\u00fcyor; gerekli olan mailto: \u00f6nekinin eklenmesini ister misiniz? prefix?","link_titlefield":"Ba\u015fl\u0131k","link_target_blank":"Ba\u011flant\u0131y\u0131 yeni pencerede a\u00e7","link_target_same":"Ba\u011flant\u0131y\u0131 ayn\u0131 pencerede a\u00e7","link_target":"Hedef","link_url":"Ba\u011flant\u0131 URL\'si","link_title":"Ba\u011flant\u0131 ekle/d\u00fczenle","image_align_right":"Sa\u011f","image_align_left":"Sol","image_align_textbottom":"Metin altta","image_align_texttop":"Metin \u00fcstte","image_align_bottom":"Alt","image_align_middle":"Orta","image_align_top":"\u00dcst","image_align_baseline":"Taban hizas\u0131","image_align":"Hizalama","image_hspace":"Yatay bo\u015fluk","image_vspace":"Dikey bo\u015fluk","image_dimensions":"Boyutlar","image_alt":"Resim a\u00e7\u0131klamas\u0131","image_list":"Resim listesi","image_border":"Kenarl\u0131k","image_src":"Resmin URL\'si","image_title":"Resim ekle/d\u00fczenle","charmap_title":"\u00d6zel karakter se\u00e7","colorpicker_name":"\u0130sim:","colorpicker_color":"Renk:","colorpicker_named_title":"Renk ad\u0131","colorpicker_named_tab":"Ad\u0131","colorpicker_palette_title":"Renk paleti","colorpicker_palette_tab":"Palet","colorpicker_picker_title":"Renk se\u00e7ici","colorpicker_picker_tab":"Se\u00e7ici","colorpicker_title":"Renk se\u00e7","code_wordwrap":"Kelimeleri birlikte tut","code_title":"HTML Kaynak Edit\u00f6r\u00fc","anchor_name":"K\u00f6pr\u00fc ad\u0131","anchor_title":"K\u00f6pr\u00fc ekle/d\u00fczenle","about_loaded":"Y\u00fckl\u00fc eklentiler","about_version":"Versiyon","about_author":"Yazar","about_plugin":"Eklenti","about_plugins":"Eklentiler","about_license":"Lisans","about_help":"Yard\u0131m","about_general":"Hakk\u0131nda","about_title":"TinyMCE hakk\u0131nda","charmap_usage":"Gezinmek i\u00e7in sa\u011f ve sol oklar\u0131 kullan\u0131n.","anchor_invalid":"L\u00fctfen ge\u00e7erli bir k\u00f6pr\u00fc ad\u0131 giriniz","accessibility_help":"Eri\u015febilirlik Yard\u0131m\u0131","accessibility_usage_title":"Genel Kullan\u0131m","invalid_color_value":"Ge\u00e7ersiz renk de\u011feri"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/uk.js b/program/js/tiny_mce/themes/advanced/langs/uk.js
deleted file mode 100644
index 9988c60fa..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/uk.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('uk.advanced',{"underline_desc":"\u041f\u0456\u0434\u043a\u0440\u0435\u0441\u043b\u0435\u043d\u0438\u0439 (Ctrl+U)","italic_desc":"\u041a\u0443\u0440\u0441\u0438\u0432 (Ctrl+I)","bold_desc":"\u0416\u0438\u0440\u043d\u0438\u0439 (Ctrl+B)",dd:"\u0414\u043e\u0432\u0456\u0434\u043d\u0438\u043a, \u043e\u043f\u0438\u0441 ",dt:"\u0414\u043e\u0432\u0456\u0434\u043d\u0438\u043a, \u0442\u0435\u0440\u043c\u0456\u043d ",samp:"\u041f\u0440\u0438\u043a\u043b\u0430\u0434 \u043a\u043e\u0434\u0443",code:"\u041a\u043e\u0434",blockquote:"\u0426\u0438\u0442\u0430\u0442\u0430",h6:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 6",h5:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 5",h4:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 4",h3:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 3",h2:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 2",h1:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 1",pre:"\u041f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u044c\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432\u0430\u043d\u0438\u0439",address:"\u0421\u0442\u0438\u043b\u044c \u0430\u0434\u0440\u0435\u0441\u0438",div:"Div",paragraph:"\u0410\u0431\u0437\u0430\u0446",block:"\u0424\u043e\u0440\u043c\u0430\u0442",fontdefault:"\u0428\u0440\u0438\u0444\u0442","font_size":"\u0420\u043e\u0437\u043c\u0456\u0440 \u0448\u0440\u0438\u0444\u0442\u0443","style_select":"\u0421\u0442\u0438\u043b\u0456","more_colors":"\u0411\u0456\u043b\u044c\u0448\u0435 \u043a\u043e\u043b\u044c\u043e\u0440\u0456\u0432","toolbar_focus":"\u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u044c \u043a\u043d\u043e\u043f\u043e\u043a - Alt+Q, \u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u0434\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0443 - Alt-Z, \u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u0434\u043e \u0448\u043b\u044f\u0445\u0443 \u0435\u043b\u0435\u043c\u0435\u043d\u0442\u0443 - Alt-X",newdocument:"\u0412\u0438 \u0432\u043f\u0435\u0432\u043d\u0435\u043d\u0456, \u0449\u043e \u0431\u0430\u0436\u0430\u0454\u0442\u0435 \u0432\u0441\u0435 \u0432\u0438\u0434\u0430\u043b\u0438\u0442\u0438?",path:"\u0428\u043b\u044f\u0445","clipboard_msg":"\u041a\u043e\u043f\u0456\u044e\u0432\u0430\u0442\u0438/\u0412\u0438\u0440\u0456\u0437\u0430\u0442\u0438/\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0456 \u0432 Mozilla \u0438 Firefox.\n\u0412\u0430\u043c \u0446\u0456\u043a\u0430\u0432\u0430 \u0456\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0456\u044f \u043f\u0440\u043e \u0446\u0435?","blockquote_desc":"\u0426\u0438\u0442\u0430\u0442\u0430","help_desc":"\u0414\u043e\u043f\u043e\u043c\u043e\u0433\u0430","newdocument_desc":"\u041d\u043e\u0432\u0438\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442","image_props_desc":"\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f","paste_desc":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438","copy_desc":"\u041a\u043e\u043f\u0456\u044e\u0432\u0430\u0442\u0438","cut_desc":"\u0412\u0438\u0440\u0456\u0437\u0430\u0442\u0438","anchor_desc":"\u0414\u043e\u0434\u0430\u0442\u0438/\u0437\u043c\u0456\u043d\u0438\u0442\u0438 \u044f\u043a\u0456\u0440","visualaid_desc":"\u041f\u0435\u0440\u0435\u043c\u043a\u043d\u0443\u0442\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u0456/\u043f\u0440\u0438\u0445\u043e\u0432\u0430\u043d\u0456 \u0435\u043b\u0435\u043c\u0435\u043d\u0442\u0438","charmap_desc":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0441\u0438\u043c\u0432\u043e\u043b","backcolor_desc":"\u0412\u0438\u0431\u0440\u0430\u0442\u0438 \u043a\u043e\u043b\u0456\u0440 \u0444\u043e\u043d\u0443","forecolor_desc":"\u0412\u0438\u0431\u0440\u0430\u0442\u0438 \u043a\u043e\u043b\u0456\u0440 \u0442\u0435\u043a\u0441\u0442\u0443","custom1_desc":"\u0412\u0430\u0448 \u0434\u043e\u0432\u0456\u043b\u044c\u043d\u0438\u0439 \u043e\u043f\u0438\u0441 \u0442\u0443\u0442","removeformat_desc":"\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0443\u0432\u0430\u043d\u043d\u044f","hr_desc":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0438\u0439 \u0440\u043e\u0437\u0434\u0456\u043b\u044c\u043d\u0438\u043a","sup_desc":"\u0412\u0435\u0440\u0445\u043d\u0456\u0439 \u0456\u043d\u0434\u0435\u043a\u0441","sub_desc":"\u041d\u0438\u0436\u043d\u0456\u0439 \u0456\u043d\u0434\u0435\u043a\u0441","code_desc":"\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 HTML \u043a\u043e\u0434","cleanup_desc":"\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u0438 \u0437\u0430\u0439\u0432\u0438\u0439 \u043a\u043e\u0434","image_desc":"\u0414\u043e\u0434\u0430\u0442\u0438/\u0437\u043c\u0456\u043d\u0438\u0442\u0438 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f","unlink_desc":"\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f","link_desc":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438/\u0437\u043c\u0456\u043d\u0438\u0442\u0438 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f","redo_desc":"\u041f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u0438 (Ctrl+Y)","undo_desc":"\u0412\u0456\u0434\u043c\u0456\u043d\u0438\u0442\u0438 (Ctrl+Z)","indent_desc":"\u0417\u0431\u0456\u043b\u044c\u0448\u0438\u0442\u0438 \u0432\u0456\u0434\u0441\u0442\u0443\u043f","outdent_desc":"\u0417\u043c\u0435\u043d\u0448\u0442\u0438\u0442\u0438 \u0432\u0456\u0434\u0441\u0442\u0443\u043f","numlist_desc":"\u041d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a","bullist_desc":"\u041d\u0435\u043d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a","justifyfull_desc":"\u041f\u043e \u0448\u0438\u0440\u0438\u043d\u0456","justifyright_desc":"\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","justifycenter_desc":"\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443","justifyleft_desc":"\u041f\u043e \u043b\u0456\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","striketrough_desc":"\u0417\u0430\u043a\u0440\u0435\u0441\u043b\u0435\u043d\u0438\u0439","help_shortcut":"\u041d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c ALT F10 \u0434\u043b\u044f \u0442\u0443\u043b\u0431\u0430\u0440\u0443. \u041d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c ALT 0 \u0434\u043b\u044f \u043e\u0442\u0440\u0438\u043c\u0430\u043d\u043d\u044f \u0434\u043e\u043f\u043e\u043c\u043e\u0433\u0438","rich_text_area":"\u0412\u0456\u0437\u0443\u0430\u043b\u044c\u043d\u0438\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440","shortcuts_desc":"\u0414\u043e\u043f\u043e\u043c\u043e\u0433\u0430 \u043f\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0456",toolbar:"\u0422\u0443\u043b\u0431\u0430\u0440","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/uk_dlg.js b/program/js/tiny_mce/themes/advanced/langs/uk_dlg.js
deleted file mode 100644
index 89e003142..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/uk_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('uk.advanced_dlg',{"link_list":"\u0421\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u044c","link_is_external":"\u0412\u0432\u0435\u0434\u0435\u043d\u0435 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u0441\u0445\u043e\u0436\u0435 \u043d\u0430 \u0437\u043e\u0432\u043d\u0456\u0448\u043d\u0454 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f, \u0432\u0438 \u0431\u0430\u0436\u0430\u0454\u0442\u0435 \u0434\u043e\u0434\u0430\u0442\u0438 \u043f\u043e\u0442\u0440\u0456\u0431\u043d\u0438\u0439 \u043f\u0440\u0435\u0444\u0456\u043a\u0441 http://?","link_is_email":"\u0412\u0432\u0435\u0434\u0435\u043d\u0435 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u0441\u0445\u043e\u0436\u0435 \u043d\u0430 \u0430\u0434\u0440\u0435\u0441\u0443 \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0457 \u043f\u043e\u0448\u0442\u0438, \u0432\u0438 \u0431\u0430\u0436\u0430\u0454\u0442\u0435 \u0434\u043e\u0434\u0430\u0442\u0438 \u043f\u043e\u0442\u0440\u0456\u0431\u043d\u0438\u0439 \u043f\u0440\u0435\u0444\u0456\u043a\u0441 mailto:?","link_titlefield":"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a","link_target_blank":"\u043d\u043e\u0432\u043e\u043c\u0443 \u0432\u0456\u043a\u043d\u0456","link_target_same":"\u0446\u044c\u043e\u043c\u0443 \u0436 \u0432\u0456\u043a\u043d\u0456","link_target":"\u0412\u0456\u0434\u043a\u0440\u0438\u0442\u0438 \u0432","link_url":"\u0410\u0434\u0440\u0435\u0441\u0430 ","link_title":"\u0414\u043e\u0434\u0430\u0442\u0438/\u0437\u043c\u0456\u043d\u0438\u0442\u0438 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f","image_align_right":"\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","image_align_left":"\u041f\u043e \u043b\u0456\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","image_align_textbottom":"\u041f\u043e \u043d\u0438\u0436\u043d\u044c\u043e\u043c\u0443 \u043a\u0440\u0430\u044e \u0442\u0435\u043a\u0441\u0442\u0443","image_align_texttop":"\u041f\u043e \u0432\u0435\u0440\u0445\u043d\u044c\u043e\u043c\u0443 \u043a\u0440\u0430\u044e \u0442\u0435\u043a\u0441\u0442\u0443","image_align_bottom":"\u041f\u043e \u043d\u0438\u0436\u043d\u044c\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","image_align_middle":"\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443","image_align_top":"\u041f\u043e \u0432\u0435\u0440\u0445\u043d\u044c\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","image_align_baseline":"\u041f\u043e \u0431\u0430\u0437\u043e\u0432\u0456\u0439 \u043b\u0456\u043d\u0456\u0457","image_align":"\u0412\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f","image_hspace":"\u0413\u043e\u0440\u0438\u0437. \u0432\u0456\u0434\u0441\u0442\u0443\u043f","image_vspace":"\u0412\u0435\u0440\u0442. \u0432\u0456\u0434\u0441\u0442\u0443\u043f","image_dimensions":"\u0420\u043e\u0437\u043c\u0456\u0440\u0438","image_alt":"\u041e\u043f\u0438\u0441","image_list":"\u0421\u043f\u0438\u0441\u043e\u043a \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u044c","image_border":"\u0420\u0430\u043c\u043a\u0430","image_src":"\u0410\u0434\u0440\u0435\u0441\u0430","image_title":"\u0414\u043e\u0434\u0430\u0442\u0438/\u0437\u043c\u0456\u043d\u0438\u0442\u0438 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f","charmap_title":"\u0412\u0438\u0431\u0440\u0430\u0442\u0438 \u0434\u043e\u0432\u0456\u043b\u044c\u043d\u0438\u0439 \u0441\u0438\u043c\u0432\u043e\u043b","colorpicker_name":"\u041d\u0430\u0437\u0432\u0430:","colorpicker_color":"\u041a\u043e\u043b\u0456\u0440:","colorpicker_named_title":"\u0417\u0430 \u043d\u0430\u0437\u0432\u043e\u044e","colorpicker_named_tab":"\u0417\u0430 \u043d\u0430\u0437\u0432\u043e\u044e","colorpicker_palette_title":"\u041f\u0430\u043b\u0456\u0442\u0440\u0430 \u043a\u043e\u043b\u044c\u043e\u0440\u0456\u0432","colorpicker_palette_tab":"\u041f\u0430\u043b\u0456\u0442\u0440\u0430","colorpicker_picker_title":"\u041f\u0456\u043f\u0435\u0442\u043a\u0430 \u043a\u043e\u043b\u044c\u043e\u0440\u0443","colorpicker_picker_tab":"\u041f\u0456\u043f\u0435\u0442\u043a\u0430","colorpicker_title":"\u0412\u0438\u0431\u0440\u0430\u0442\u0438 \u043a\u043e\u043b\u0456\u0440","code_wordwrap":"\u041f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u0438 \u0441\u043b\u043e\u0432\u0430","code_title":"\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 HTML \u043a\u043e\u0434\u0443","anchor_name":"\u041d\u0430\u0437\u0432\u0430 \u044f\u043a\u043e\u0440\u044f","anchor_title":"\u0414\u043e\u0434\u0430\u0442\u0438/\u0437\u043c\u0456\u043d\u0438\u0442\u0438 \u044f\u043a\u0456\u0440","about_loaded":"\u0417\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u0456 \u0434\u043e\u0434\u0430\u0442\u043a\u0438","about_version":"\u0412\u0435\u0440\u0441\u0456\u044f","about_author":"\u0410\u0432\u0442\u043e\u0440","about_plugin":"\u0414\u043e\u0434\u0430\u0442\u043e\u043a","about_plugins":"\u0414\u043e\u0434\u0430\u0442\u043a\u0438","about_license":"\u041b\u0456\u0446\u0435\u043d\u0437\u0456\u044f","about_help":"\u0414\u043e\u043f\u043e\u043c\u043e\u0433\u0430","about_general":"\u041f\u0440\u043e \u043f\u0440\u043e\u0434\u0443\u043a\u0442...","about_title":"\u041f\u0440\u043e \u043f\u0440\u043e\u0434\u0443\u043a\u0442 TinyMCE","charmap_usage":"\u0412\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0439\u0442\u0435 \u0441\u0442\u0440\u0456\u043b\u043a\u0438 \u0432\u043b\u0456\u0432\u043e \u0442\u0430 \u0432\u043f\u0440\u0430\u0432\u043e \u0434\u043b\u044f \u043d\u0430\u0432\u0456\u0433\u0430\u0446\u0456\u0457","anchor_invalid":"\u0412\u0432\u0435\u0434\u0456\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0435 \u0456\u043c\'\u044f \u0434\u043b\u044f \u044f\u043a\u0456\u0440\u0430.","accessibility_help":"\u0414\u043e\u043f\u043e\u043c\u043e\u0433\u0430 \u043f\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0456","accessibility_usage_title":"\u0417\u0430\u0433\u0430\u043b\u044c\u043d\u0435 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u0430\u043d\u043d\u044f","invalid_color_value":"\u041d\u0435\u043a\u043e\u0440\u0435\u043a\u0442\u043d\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f \u043a\u043e\u043b\u044c\u043e\u0440\u0443"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/vi.js b/program/js/tiny_mce/themes/advanced/langs/vi.js
deleted file mode 100644
index 6f80fc9e7..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/vi.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('vi.advanced',{"underline_desc":"G\u1ea1ch ch\u00e2n (Ctrl+U)","italic_desc":"Ch\u1eef nghi\u00eang (Ctrl+I)","bold_desc":"Ch\u1eef \u0111\u1eadm (Ctrl+B)",dd:"Th\u1ebb M\u00f4 t\u1ea3 \u0111\u1ecbnh ngh\u0129a",dt:"Th\u1ebb \u0110i\u1ec1u kho\u1ea3n \u0111\u1ecbnh ngh\u0129a ",samp:"Th\u1ebb M\u00e3 v\u00ed d\u1ee5",code:"Th\u1ebb M\u00e3",blockquote:"Th\u1ebb Tr\u00edch d\u1eabn",h6:"Th\u1ebb Heading 6",h5:"Th\u1ebb Heading 5",h4:"Th\u1ebb Heading 4",h3:"Th\u1ebb Heading 3",h2:"Th\u1ebb Heading 2",h1:"Th\u1ebb Heading 1",pre:"Th\u1ebb Ti\u1ec1n \u0111\u1ecbnh d\u1ea1ng",address:"Th\u1ebb \u0110\u1ecba ch\u1ec9",div:"Th\u1ebb",paragraph:"\u0110o\u1ea1n",block:"\u0110\u1ecbnh d\u1ea1ng",fontdefault:"T\u00ean font ch\u1eef","font_size":"K\u00edch th\u01b0\u1edbc font","style_select":"Ki\u1ec3u","more_colors":"Th\u00eam m\u00e0u","toolbar_focus":"Nh\u1ea3y t\u1edbi c\u00e1c n\u00fat c\u00f4ng c\u1ee5 - Alt+Q, T\u1edbi tr\u00ecnh so\u1ea1n th\u1ea3o - Alt-Z, T\u1edbi \u0111\u01b0\u1eddng d\u1eabn c\u00e1c ph\u1ea7n t\u1eed - Alt-X",newdocument:"B\u1ea1n c\u00f3 ch\u1eafc ch\u1eafn mu\u1ed1n x\u00f3a t\u1ea5t c\u1ea3 n\u1ed9i dung?",path:"\u0110\u01b0\u1eddng d\u1eabn","clipboard_msg":"Sao ch\u00e9p/C\u1eaft/D\u00e1n kh\u00f4ng c\u00f3 s\u1eb5n trong Mozilla v\u00e0 Firefox.\n\t\t\tB\u1ea1n c\u00f3 mu\u1ed1n bi\u1ebft th\u00eam th\u00f4ng tin v\u1ec1 v\u1ea5n \u0111\u1ec1 n\u00e0y?","blockquote_desc":"Blockquote","help_desc":"Tr\u1ee3 gi\u00fap","newdocument_desc":"V\u0103n b\u1ea3n m\u1edbi","image_props_desc":"Thu\u1ed9c t\u00ednh \u1ea3nh","paste_desc":"D\u00e1n","copy_desc":"Sao ch\u00e9p","cut_desc":"C\u1eaft","anchor_desc":"Ch\u00e8n/s\u1eeda m\u1ecf neo","visualaid_desc":"\u0110\u1ea3o c\u00e1c th\u00e0nh ph\u1ea7n h\u01b0\u1edbng d\u1eabn ho\u1eb7c \u1ea9n","charmap_desc":"Ch\u00e8n k\u00fd t\u1ef1 t\u00f9y bi\u1ebfn","backcolor_desc":"Ch\u1ecdn m\u00e0u n\u1ec1n","forecolor_desc":"Ch\u1ecdn m\u00e0u ch\u1eef","custom1_desc":"M\u00f4 t\u1ea3 t\u00f9y bi\u1ebfn c\u1ee7a b\u1ea1n \u1edf \u0111\u00e2y","removeformat_desc":"Lo\u1ea1i b\u1ecf \u0111\u1ecbnh d\u1ea1ng","hr_desc":"Ch\u00e8n th\u01b0\u1edbc ngang","sup_desc":"Ch\u1ec9 s\u1ed1 b\u00ean tr\u00ean","sub_desc":"Ch\u1ec9 s\u1ed1 d\u01b0\u1edbi d\u00f2ng","code_desc":"S\u1eeda m\u00e3 HTML","cleanup_desc":"D\u1ecdn d\u1eb9p m\u00e3 l\u1ed9n x\u1ed9n","image_desc":"Ch\u00e8n/s\u1eeda \u1ea3nh","unlink_desc":"X\u00f3a Li\u00ean k\u1ebft","link_desc":"Th\u00eam/S\u1eeda Li\u00ean k\u1ebft","redo_desc":"Ti\u1ebfn t\u1edbi (Ctrl+Y)","undo_desc":"Tr\u1edf v\u1ec1 (Ctrl+Z)","indent_desc":"Th\u1ee5t \u0111\u1ea7u d\u00f2ng","outdent_desc":"V\u1ec1 \u0111\u1ea7u d\u00f2ng","numlist_desc":"Danh s\u00e1ch c\u00f3 ch\u1ec9 s\u1ed1","bullist_desc":"Danh s\u00e1ch","justifyfull_desc":"Canh l\u1ec1 \u0111\u1ec1u","justifyright_desc":"Canh l\u1ec1 ph\u1ea3i","justifycenter_desc":"Canh gi\u1eefa","justifyleft_desc":"Canh l\u1ec1 tr\u00e1i","striketrough_desc":"G\u1ea1ch ngang","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":"","help_shortcut":"Press ALT-F10 for toolbar. Press ALT-0 for help","rich_text_area":"Rich Text Area","shortcuts_desc":"Accessability Help",toolbar:"Toolbar"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/vi_dlg.js b/program/js/tiny_mce/themes/advanced/langs/vi_dlg.js
deleted file mode 100644
index 3a36071ab..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/vi_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('vi.advanced_dlg',{"link_list":"Danh s\u00e1ch li\u00ean k\u1ebft","link_is_external":"URL b\u1ea1n \u0111\u00e3 nh\u1eadp c\u00f3 v\u1ebb l\u00e0 m\u1ed9t li\u00ean k\u1ebft ngo\u00e0i, b\u1ea1n c\u00f3 mu\u1ed1n th\u00eam ti\u1ec1n t\u1ed1 http://?","link_is_email":"URL b\u1ea1n \u0111\u00e3 nh\u1eadp c\u00f3 v\u1ebb l\u00e0 m\u1ed9t \u0111\u1ecba ch\u1ec9 \u0111i\u1ec7n th\u01b0, B\u1ea1n c\u00f3 mu\u1ed1n th\u00eam ti\u1ec1n t\u1ed1 mailto?","link_titlefield":"Ti\u00eau \u0111\u1ec1","link_target_blank":"M\u1edf li\u00ean k\u1ebft trong c\u1eeda s\u1ed5 m\u1edbi","link_target_same":"M\u1edf li\u00ean k\u1ebft trong c\u00f9ng c\u1eeda s\u1ed5","link_target":"\u0110\u00edch","link_url":"URL Li\u00ean k\u1ebft","link_title":"Th\u00eam/S\u1eeda Li\u00ean k\u1ebft","image_align_right":"Ph\u1ea3i","image_align_left":"Tr\u00e1i","image_align_textbottom":"V\u0103n b\u1ea3n d\u01b0\u1edbi","image_align_texttop":"V\u0103n b\u1ea3n tr\u00ea","image_align_bottom":"D\u01b0\u1edbi c\u00f9ng","image_align_middle":"Gi\u1eefa","image_align_top":"Tr\u00ean c\u00f9ng","image_align_baseline":"\u0110\u01b0\u1eddng c\u01a1 s\u1edf","image_align":"Canh l\u1ec1n","image_hspace":"Kho\u1ea3ng c\u00e1ch ngang","image_vspace":"Kho\u1ea3ng c\u00e1ch d\u1ecdc","image_dimensions":"K\u00edch th\u01b0\u1edbng","image_alt":"M\u00f4 t\u1ea3 \u1ea3nh","image_list":"Danh s\u00e1ch \u1ea3nh","image_border":"Vi\u1ec1n","image_src":"URL \u1ea3nh","image_title":"Ch\u00e8n/s\u1eeda \u1ea3nh","charmap_title":"Ch\u1ecdn k\u00fd t\u1ef1 t\u00f9y bi\u1ebfn","colorpicker_name":"T\u00ean:","colorpicker_color":"M\u00e0u:","colorpicker_named_title":"M\u00e0u \u0111\u00e3 \u0111\u1eb7t t\u00ean","colorpicker_named_tab":"T\u00ean","colorpicker_palette_title":"B\u1ea3ng m\u00e0u","colorpicker_palette_tab":"B\u1ea3ng m\u00e0u","colorpicker_picker_title":"B\u1ed9 ch\u1ecdn m\u00e0u","colorpicker_picker_tab":"B\u1ed9 ch\u1ecdn","colorpicker_title":"Ch\u1ecdn m\u1ed9t m\u00e0u","code_wordwrap":"Xu\u1ed1ng d\u00f2ng t\u1ef1 \u0111\u1ed9ng","code_title":"Tr\u00ecnh so\u1ea1n th\u1ea3o m\u00e3 ngu\u1ed3n HTML","anchor_name":"T\u00ean m\u1ecf neo","anchor_title":"Ch\u00e8n/s\u1eeda m\u1ecf neo","about_loaded":"Tr\u00ecnh g\u1eafn k\u00e8m \u0111\u00e3 n\u1ea1p","about_version":"Phi\u00ean b\u1ea3n","about_author":"T\u00e1c gi\u1ea3","about_plugin":"Tr\u00ecnh g\u1eafn k\u00e8m","about_plugins":"Tr\u00ecnh g\u1eafn k\u00e8m","about_license":"Gi\u1ea5y ph\u00e9p","about_help":"Tr\u1ee3 gi\u00fap","about_general":"Th\u00f4ng tin","about_title":"Th\u00f4ng tin v\u1ec1 TinyMCE","anchor_invalid":"Please specify a valid anchor name.","accessibility_help":"Accessibility Help","accessibility_usage_title":"General Usage"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/zh-cn.js b/program/js/tiny_mce/themes/advanced/langs/zh-cn.js
deleted file mode 100644
index cef3df2d9..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/zh-cn.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('zh-cn.advanced',{"underline_desc":"\u4e0b\u5212\u7ebf(Ctrl U)","italic_desc":"\u659c\u4f53(Ctrl I)","bold_desc":"\u7c97\u4f53(Ctrl B)",dd:"\u5b9a\u4e49\u8bf4\u660e",dt:"\u672f\u8bed\u5b9a\u4e49",samp:"\u4ee3\u7801\u793a\u4f8b",code:"\u4ee3\u7801",blockquote:"\u5f15\u7528",h6:"\u6807\u98986",h5:"\u6807\u98985",h4:"\u6807\u98984",h3:"\u6807\u98983",h2:"\u6807\u98982",h1:"\u6807\u98981",pre:"\u9884\u683c\u5f0f\u6587\u672c",address:"\u5730\u5740",div:"Div\u533a\u5757",paragraph:"\u6bb5\u843d",block:"\u683c\u5f0f\u5316",fontdefault:"\u5b57\u4f53","font_size":"\u5b57\u4f53\u5927\u5c0f","style_select":"\u6837\u5f0f","more_colors":"\u66f4\u591a\u989c\u8272","toolbar_focus":"\u8f6c\u5230\u5de5\u5177\u6309\u94ae - Alt-Q\uff0c\u8f6c\u5230\u7f16\u8f91\u5668 - Alt-Z\uff0c\u8f6c\u5230\u5143\u7d20\u8def\u5f84 - Alt-X\u3002",newdocument:"\u60a8\u771f\u7684\u8981\u6e05\u9664\u6240\u6709\u5185\u5bb9\u5417\uff1f",path:"\u8def\u5f84","clipboard_msg":"\u5728Mozilla\u548cFirefox\u4e2d\u4e0d\u80fd\u4f7f\u7528\u590d\u5236/\u7c98\u8d34/\u526a\u5207\u3002n\u60a8\u8981\u67e5\u770b\u8be5\u95ee\u9898\u66f4\u591a\u7684\u4fe1\u606f\u5417\uff1f","blockquote_desc":"\u5f15\u7528","help_desc":"\u5e2e\u52a9","newdocument_desc":"\u65b0\u5efa","image_props_desc":"\u56fe\u7247\u5c5e\u6027","paste_desc":"\u7c98\u8d34","copy_desc":"\u590d\u5236","cut_desc":"\u526a\u5207","anchor_desc":"\u63d2\u5165/\u7f16\u8f91 \u951a","visualaid_desc":"\u663e\u793a/\u9690\u85cf \u5143\u7d20","charmap_desc":"\u63d2\u5165\u81ea\u5b9a\u4e49\u7b26\u53f7","backcolor_desc":"\u9009\u62e9\u80cc\u666f\u989c\u8272","forecolor_desc":"\u9009\u62e9\u6587\u672c\u989c\u8272","custom1_desc":"\u8fd9\u91cc\u662f\u60a8\u81ea\u5b9a\u4e49\u7684\u63cf\u8ff0","removeformat_desc":"\u6e05\u9664\u683c\u5f0f","hr_desc":"\u63d2\u5165\u6c34\u5e73\u7ebf","sup_desc":"\u4e0a\u6807","sub_desc":"\u4e0b\u6807","code_desc":"\u7f16\u8f91HTML\u6e90\u4ee3\u7801","cleanup_desc":"\u6e05\u9664\u65e0\u7528\u4ee3\u7801","image_desc":"\u63d2\u5165/\u7f16\u8f91 \u56fe\u7247","unlink_desc":"\u53d6\u6d88\u8d85\u94fe\u63a5","link_desc":"\u63d2\u5165/\u7f16\u8f91 \u8d85\u94fe\u63a5","redo_desc":"\u6062\u590d (Ctrl Y)","undo_desc":"\u64a4\u9500 (Ctrl Z)","indent_desc":"\u589e\u52a0\u7f29\u8fdb","outdent_desc":"\u51cf\u5c11\u7f29\u8fdb","numlist_desc":"\u7f16\u53f7\u5217\u8868","bullist_desc":"\u9879\u76ee\u5217\u8868","justifyfull_desc":"\u4e24\u7aef\u5bf9\u9f50","justifyright_desc":"\u53f3\u5bf9\u9f50","justifycenter_desc":"\u5c45\u4e2d","justifyleft_desc":"\u5de6\u5bf9\u9f50","striketrough_desc":"\u5220\u9664\u7ebf","help_shortcut":"\u6309 ALT-F10 \u5b9a\u4f4d\u5230\u5de5\u5177\u680f.\u6309 ALT-0 \u83b7\u53d6\u5e2e\u52a9\u3002","rich_text_area":"\u5bcc\u6587\u672c\u533a","shortcuts_desc":"\u8f85\u52a9\u8bf4\u660e",toolbar:"\u5de5\u5177\u680f","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/zh-cn_dlg.js b/program/js/tiny_mce/themes/advanced/langs/zh-cn_dlg.js
deleted file mode 100644
index 5d038750c..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/zh-cn_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('zh-cn.advanced_dlg',{"link_list":"\u94fe\u63a5\u5217\u8868","link_is_external":"\u60a8\u8f93\u5165\u7684URL\u662f\u4e00\u4e2a\u5916\u90e8\u94fe\u63a5\uff0c\u662f\u5426\u8981\u52a0\u4e0a\"http://\"\u524d\u7f00\uff1f","link_is_email":"\u8f93\u5165URL\u662f\u7535\u5b50\u90ae\u4ef6\u5730\u5740\uff0c\u662f\u5426\u9700\u8981\u52a0\"mailto:\"\u524d\u7f00\uff1f","link_titlefield":"\u6807\u9898","link_target_blank":"\u5728\u65b0\u7a97\u53e3\u6253\u5f00","link_target_same":"\u5728\u5f53\u524d\u7a97\u53e3\u6253\u5f00","link_target":"\u6253\u5f00\u65b9\u5f0f","link_url":"\u8d85\u94fe\u63a5URL","link_title":"\u63d2\u5165/\u7f16\u8f91 \u8d85\u94fe\u63a5","image_align_right":"\u53f3\u5bf9\u9f50","image_align_left":"\u5de6\u5bf9\u9f50","image_align_textbottom":"\u6587\u5b57\u4e0b\u65b9","image_align_texttop":"\u6587\u5b57\u4e0a\u65b9","image_align_bottom":"\u5e95\u7aef\u5bf9\u9f50","image_align_middle":"\u5c45\u4e2d\u5bf9\u9f50","image_align_top":"\u9876\u7aef\u5bf9\u9f50","image_align_baseline":"\u5e95\u7ebf","image_align":"\u5bf9\u9f50","image_hspace":"\u6c34\u5e73\u8ddd\u79bb","image_vspace":"\u5782\u76f4\u8ddd\u79bb","image_dimensions":"\u5c3a\u5bf8","image_alt":"\u56fe\u7247\u63cf\u8ff0","image_list":"\u56fe\u7247\u5217\u8868","image_border":"\u8fb9\u6846","image_src":"\u56fe\u7247\u94fe\u63a5","image_title":"\u63d2\u5165/\u7f16\u8f91 \u56fe\u7247","charmap_title":"\u9009\u62e9\u81ea\u5b9a\u4e49\u7b26\u53f7","colorpicker_name":"\u540d\u79f0\uff1a","colorpicker_color":"\u989c\u8272\uff1a","colorpicker_named_title":"\u547d\u540d\u989c\u8272","colorpicker_named_tab":"\u547d\u540d\u989c\u8272","colorpicker_palette_title":"\u8c03\u8272\u677f\u989c\u8272","colorpicker_palette_tab":"\u8c03\u8272\u677f","colorpicker_picker_title":"\u989c\u8272\u62fe\u53d6","colorpicker_picker_tab":"\u62fe\u53d6","colorpicker_title":"\u9009\u62e9\u989c\u8272","code_wordwrap":"\u81ea\u52a8\u6362\u884c","code_title":"HTML\u4ee3\u7801\u7f16\u8f91\u5668","anchor_name":"\u951a\u540d\u79f0","anchor_title":"\u63d2\u5165/\u7f16\u8f91 \u951a","about_loaded":"\u5df2\u8f7d\u5165\u7684\u63d2\u4ef6","about_version":"\u7248\u672c","about_author":"\u4f5c\u8005","about_plugin":"\u63d2\u4ef6","about_plugins":"\u63d2\u4ef6","about_license":"\u8bb8\u53ef\u534f\u8bae","about_help":"\u5e2e\u52a9","about_general":"\u5173\u4e8e","about_title":"\u5173\u4e8eTinyMCE","anchor_invalid":"\u8bf7\u6307\u5b9a\u4e00\u4e2a\u6709\u6548\u7684\u951a\u540d\u79f0\u3002","accessibility_help":"Accessibility Help","accessibility_usage_title":"General Usage"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/zh-tw.js b/program/js/tiny_mce/themes/advanced/langs/zh-tw.js
deleted file mode 100644
index 54041ae7f..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/zh-tw.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('zh-tw.advanced',{"underline_desc":"\u52a0\u4e0a\u5e95\u7dda (Ctrl U)","italic_desc":"\u8b8a\u6210\u659c\u7dda (Ctrl I)","bold_desc":"\u5b57\u52a0\u7c97 (Ctrl B)",dd:"\u64b0\u5beb\u8aaa\u660e / \u8a3b\u89e3",dt:"\u8853\u8a9e\u5b9a\u7fa9",samp:"\u8a9e\u6cd5\u7bc4\u4f8b",code:"\u8a9e\u6cd5",blockquote:"\u5f15\u7528",h6:"\u6a19\u984c\u6a23\u5f0f 6",h5:"\u6a19\u984c\u6a23\u5f0f 5",h4:"\u6a19\u984c\u6a23\u5f0f 4",h3:"\u6a19\u984c\u6a23\u5f0f 3",h2:"\u6a19\u984c\u6a23\u5f0f 2",h1:"\u6a19\u984c\u6a23\u5f0f 1",pre:"\u7d14\u6587\u5b57",address:"\u4f4f\u5740",div:"Div \u6392\u7248\u5340\u584a",paragraph:"\u6bb5\u843d\u6a23\u5f0f",block:"\u683c\u5f0f",fontdefault:"\u5b57\u9ad4","font_size":"\u6587\u5b57\u5927\u5c0f","style_select":"\u6a23\u5f0f","more_colors":"\u5176\u4ed6\u984f\u8272","toolbar_focus":"\u8f14\u52a9\u529f\u80fd\uff1a\u6309\u4e0b Alt \u8ddf Q \u53ef\u8df3\u5230\u529f\u80fd\u5217\u3001\u6309\u4e0b Alt \u8ddf Z \u8df3\u5230\u6587\u5b57\u7de8\u8f2f\u756b\u9762\u3001\u6309\u4e0b Alt \u8ddf X \u53ef\u8df3\u5230\u8a9e\u6cd5\u7d30\u7bc0\u7684\u90a3\u4e00\u6392",newdocument:"\u60a8\u771f\u7684\u8981\u6e05\u9664\u756b\u9762\u4e0a\u7684\u5167\u5bb9\u55ce\uff1f",path:"\u8a9e\u6cd5\u7d30\u7bc0","clipboard_msg":"\u5f88\u62b1\u6b49\uff0c\u4f60\u770b\u7db2\u9801\u7684\u8edf\u9ad4\u4e0d\u652f\u63f4\u526a\u4e0b\u3001\u8907\u88fd\u3001\u8cbc\u4e0a\u7684\u529f\u80fd\u3002","blockquote_desc":"\u5f15\u7528","help_desc":"\u8aaa\u660e","newdocument_desc":"\u65b0\u6587\u7ae0","image_props_desc":"\u5716\u7247\u8a2d\u5b9a","paste_desc":"\u8cbc\u4e0a","copy_desc":"\u8907\u88fd","cut_desc":"\u526a\u4e0b","anchor_desc":"\u52a0\u5165 / \u7de8\u8f2f\u9328\u9ede (\u66f8\u7c64)","visualaid_desc":"\u986f\u793a\u96b1\u85cf\u7684\u6771\u897f","charmap_desc":"\u52a0\u5165\u4e00\u500b\u81ea\u5df1\u8a2d\u5b9a\u7684\u6587\u5b57\u7b26\u865f","backcolor_desc":"\u9078\u64c7\u80cc\u666f\u8272","forecolor_desc":"\u9078\u64c7\u6587\u5b57\u984f\u8272","custom1_desc":"\u4f60\u5beb\u7684\u8a3b\u89e3\u5728\u9019\u88e1","removeformat_desc":"\u79fb\u9664\u6587\u5b57\u4e0a\u7684\u6a23\u5f0f\u8207\u683c\u5f0f","hr_desc":"\u52a0\u5165\u4e00\u500b\u6c34\u5e73\u7dda","sup_desc":"\u4e0a\u6a19\u5b57","sub_desc":"\u4e0b\u6a19\u5b57","code_desc":"\u7de8\u8f2f HTML \u8a9e\u6cd5","cleanup_desc":"\u79fb\u9664\u591a\u9918\u7684\u6587\u5b57\u8207\u7a0b\u5f0f\u78bc","image_desc":"\u65b0\u589e / \u7de8\u8f2f\u5716\u7247","unlink_desc":"\u79fb\u9664\u9023\u7d50","link_desc":"\u65b0\u589e / \u7de8\u8f2f\u7db2\u5740\u9023\u7d50","redo_desc":"\u91cd\u4f86\u4e00\u6b21 (Ctrl Y)","undo_desc":"\u5fa9\u539f (Ctrl Z)","indent_desc":"\u7e2e\u6392 (\u589e\u52a0)","outdent_desc":"\u7e2e\u6392 (\u6e1b\u5c11)","numlist_desc":"\u9805\u76ee\u7b26\u865f (\u6709\u6578\u5b57)","bullist_desc":"\u9805\u76ee\u7b26\u865f (\u53ea\u6709\u7b26\u865f)","justifyfull_desc":"\u5206\u6563\u5c0d\u9f4a","justifyright_desc":"\u5411\u53f3\u908a\u5c0d\u9f4a","justifycenter_desc":"\u7f6e\u4e2d\u5c0d\u9f4a","justifyleft_desc":"\u5411\u5c0d\u9f4a\u5de6\u908a","striketrough_desc":"\u522a\u9664\u7dda","help_shortcut":"\u6309\u4e0b ALT F10 \u51fa\u73fe\u5de5\u5177\u5217\uff1b\u6309\u4e0b ALT 0 \u5247\u51fa\u73fe\u8aaa\u660e\u3002","rich_text_area":"\u6587\u5b57\u7de8\u8f2f\u5340","shortcuts_desc":"\u8f14\u52a9\u8aaa\u660e",toolbar:"\u5de5\u5177\u5217","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/langs/zh-tw_dlg.js b/program/js/tiny_mce/themes/advanced/langs/zh-tw_dlg.js
deleted file mode 100644
index 46208f90c..000000000
--- a/program/js/tiny_mce/themes/advanced/langs/zh-tw_dlg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('zh-tw.advanced_dlg',{"link_list":"\u9023\u7d50\u6e05\u55ae","link_is_external":"\u60a8\u7684\u7db2\u5740\u5c11\u597d\u50cf\u52a0\u5165\u4e00\u500b http:// \u8a9e\u6cd5\uff0c\u8981\u5e6b\u60a8\u4fee\u6b63\u55ce\uff1f","link_is_email":"\u60a8\u7684 E-Mail \u5c11\u597d\u50cf\u52a0\u5165\u4e00\u500b mailto: \u8a9e\u6cd5\uff0c\u8981\u5e6b\u60a8\u4fee\u6b63\u55ce\uff1f","link_titlefield":"\u6a19\u984c","link_target_blank":"\u53e6\u5916\u958b\u65b0\u8996\u7a97","link_target_same":"\u76f4\u63a5\u958b\u555f\u9023\u7d50","link_target":"\u958b\u555f\u65b9\u5f0f","link_url":"\u9023\u7d50 URL","link_title":"\u52a0\u5165 / \u7de8\u8f2f\u7db2\u5740","image_align_right":"\u5411\u53f3\u5c0d\u9f4a","image_align_left":"\u5411\u5de6\u5c0d\u9f4a","image_align_textbottom":"\u6587\u5b57\u4e0b\u65b9","image_align_texttop":"\u6587\u5b57\u4e0a\u65b9","image_align_bottom":"\u4e0b\u65b9","image_align_middle":"\u7f6e\u4e2d","image_align_top":"\u4e0a\u65b9","image_align_baseline":"\u57fa\u6e96\u7dda","image_align":"\u5c0d\u9f4a","image_hspace":"\u6c34\u5e73\u8ddd\u96e2","image_vspace":"\u5782\u76f4\u8ddd\u96e2","image_dimensions":"\u5c3a\u5bf8","image_alt":"\u5716\u7247\u8aaa\u660e","image_list":"\u5716\u7247\u6e05\u55ae","image_border":"\u908a\u6846","image_src":"\u5716\u7247\u7db2\u5740\u9023\u7d50","image_title":"\u52a0\u5165 / \u8a2d\u5b9a\u5716\u7247","charmap_title":"\u9078\u64c7\u81ea\u8a02\u7684\u7b26\u865f","colorpicker_name":"\u540d\u7a31\uff1a","colorpicker_color":"\u984f\u8272\uff1a","colorpicker_named_title":"\u8272\u7968\u540d\u7a31","colorpicker_named_tab":"\u8272\u7968\u540d\u7a31","colorpicker_palette_title":"\u8abf\u8272","colorpicker_palette_tab":"\u8abf\u8272\u76e4","colorpicker_picker_title":"\u6309\u4e00\u4e0b\u6ed1\u9f20\u9078\u64c7\u984f\u8272","colorpicker_picker_tab":"\u9078\u64c7","colorpicker_title":"\u9078\u4e00\u500b\u984f\u8272","code_wordwrap":"\u81ea\u52d5\u63db\u884c","code_title":"HTML \u8a9e\u6cd5\u7de8\u8f2f\u5668","anchor_name":"\u9328\u9ede\u540d\u7a31","anchor_title":"\u52a0\u5165 / \u8a2d\u5b9a\u9328\u9ede","about_loaded":"\u5916\u639b\u7a0b\u5f0f\u8f09\u5165\u5b8c\u6210","about_version":"\u7248\u672c","about_author":"\u4f5c\u8005","about_plugin":"\u5916\u639b","about_plugins":"\u5916\u639b\u7a0b\u5f0f","about_license":"\u7248\u6b0a\u6388\u6b0a","about_help":"\u8aaa\u660e","about_general":"\u95dc\u65bc","about_title":"\u95dc\u65bc TinyMCE \u9019\u5957\u6587\u5b57\u7de8\u8f2f\u5668","anchor_invalid":"\u8acb\u7528\u82f1\u6587\u6216\u6578\u5b57\u4f5c\u70ba\u9328\u9ede\u7684\u540d\u7a31","accessibility_help":"Accessibility Help","accessibility_usage_title":"General Usage"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/link.htm b/program/js/tiny_mce/themes/advanced/link.htm
deleted file mode 100644
index 5d9dea9b8..000000000
--- a/program/js/tiny_mce/themes/advanced/link.htm
+++ /dev/null
@@ -1,57 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#advanced_dlg.link_title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="../../utils/mctabs.js"></script>
- <script type="text/javascript" src="../../utils/form_utils.js"></script>
- <script type="text/javascript" src="../../utils/validate.js"></script>
- <script type="text/javascript" src="js/link.js"></script>
-</head>
-<body id="link" style="display: none">
-<form onsubmit="LinkDialog.update();return false;" action="#">
- <div class="tabs">
- <ul>
- <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advanced_dlg.link_title}</a></span></li>
- </ul>
- </div>
-
- <div class="panel_wrapper">
- <div id="general_panel" class="panel current">
- <table border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td class="nowrap"><label for="href">{#advanced_dlg.link_url}</label></td>
- <td><table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td><input id="href" name="href" type="text" class="mceFocus" value="" style="width: 200px" onchange="LinkDialog.checkPrefix(this);" /></td>
- <td id="hrefbrowsercontainer">&nbsp;</td>
- </tr>
- </table></td>
- </tr>
- <tr>
- <td><label for="link_list">{#advanced_dlg.link_list}</label></td>
- <td><select id="link_list" name="link_list" onchange="document.getElementById('href').value=this.options[this.selectedIndex].value;"></select></td>
- </tr>
- <tr>
- <td><label id="targetlistlabel" for="targetlist">{#advanced_dlg.link_target}</label></td>
- <td><select id="target_list" name="target_list"></select></td>
- </tr>
- <tr>
- <td class="nowrap"><label for="linktitle">{#advanced_dlg.link_titlefield}</label></td>
- <td><input id="linktitle" name="linktitle" type="text" value="" style="width: 200px" /></td>
- </tr>
- <tr>
- <td><label for="class_list">{#class_name}</label></td>
- <td><select id="class_list" name="class_list"></select></td>
- </tr>
- </table>
- </div>
- </div>
-
- <div class="mceActionPanel">
- <input type="submit" id="insert" name="insert" value="{#insert}" />
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
- </div>
-</form>
-</body>
-</html>
diff --git a/program/js/tiny_mce/themes/advanced/shortcuts.htm b/program/js/tiny_mce/themes/advanced/shortcuts.htm
deleted file mode 100644
index 20ec2f5a3..000000000
--- a/program/js/tiny_mce/themes/advanced/shortcuts.htm
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <title>{#advanced_dlg.accessibility_help}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript">tinyMCEPopup.requireLangPack();</script>
- </head>
- <body id="content">
- <h1>{#advanced_dlg.accessibility_usage_title}</h1>
- <h2>Toolbars</h2>
- <p>Press ALT-F10 to move focus to the toolbars. Navigate through the buttons using the arrow keys.
- Press enter to activate a button and return focus to the editor.
- Press escape to return focus to the editor without performing any actions.</p>
-
- <h2>Status Bar</h2>
- <p>To access the editor status bar, press ALT-F11. Use the left and right arrow keys to navigate between elements in the path.
- Press enter or space to select an element. Press escape to return focus to the editor without changing the selection.</p>
-
- <h2>Context Menu</h2>
- <p>Press shift-F10 to activate the context menu. Use the up and down arrow keys to move between menu items. To open sub-menus press the right arrow key.
- To close submenus press the left arrow key. Press escape to close the context menu.</p>
-
- <h1>Keyboard Shortcuts</h1>
- <table>
- <thead>
- <tr>
- <th>Keystroke</th>
- <th>Function</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>Control-B</td><td>Bold</td>
- </tr>
- <tr>
- <td>Control-I</td><td>Italic</td>
- </tr>
- <tr>
- <td>Control-Z</td><td>Undo</td>
- </tr>
- <tr>
- <td>Control-Y</td><td>Redo</td>
- </tr>
- </tbody>
- </table>
- </body>
-</html>
diff --git a/program/js/tiny_mce/themes/advanced/skins/default/content.css b/program/js/tiny_mce/themes/advanced/skins/default/content.css
deleted file mode 100644
index 2fd94a1f9..000000000
--- a/program/js/tiny_mce/themes/advanced/skins/default/content.css
+++ /dev/null
@@ -1,50 +0,0 @@
-body, td, pre {color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; margin:8px;}
-body {background:#FFF;}
-body.mceForceColors {background:#FFF; color:#000;}
-body.mceBrowserDefaults {background:transparent; color:inherit; font-size:inherit; font-family:inherit;}
-h1 {font-size: 2em}
-h2 {font-size: 1.5em}
-h3 {font-size: 1.17em}
-h4 {font-size: 1em}
-h5 {font-size: .83em}
-h6 {font-size: .75em}
-.mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;}
-a.mceItemAnchor {display:inline-block; -webkit-user-select:all; -webkit-user-modify:read-only; -moz-user-select:all; -moz-user-modify:read-only; width:11px !important; height:11px !important; background:url(img/items.gif) no-repeat center center}
-span.mceItemNbsp {background: #DDD}
-td.mceSelected, th.mceSelected {background-color:#3399ff !important}
-img {border:0;}
-table, img, hr, .mceItemAnchor {cursor:default}
-table td, table th {cursor:text}
-ins {border-bottom:1px solid green; text-decoration: none; color:green}
-del {color:red; text-decoration:line-through}
-cite {border-bottom:1px dashed blue}
-acronym {border-bottom:1px dotted #CCC; cursor:help}
-abbr {border-bottom:1px dashed #CCC; cursor:help}
-
-/* IE */
-* html body {
-scrollbar-3dlight-color:#F0F0EE;
-scrollbar-arrow-color:#676662;
-scrollbar-base-color:#F0F0EE;
-scrollbar-darkshadow-color:#DDD;
-scrollbar-face-color:#E0E0DD;
-scrollbar-highlight-color:#F0F0EE;
-scrollbar-shadow-color:#F0F0EE;
-scrollbar-track-color:#F5F5F5;
-}
-
-img:-moz-broken {-moz-force-broken-image-icon:1; width:24px; height:24px}
-font[face=mceinline] {font-family:inherit !important}
-*[contentEditable]:focus {outline:0}
-
-.mceItemMedia {border:1px dotted #cc0000; background-position:center; background-repeat:no-repeat; background-color:#ffffcc}
-.mceItemShockWave {background-image:url(../../img/shockwave.gif)}
-.mceItemFlash {background-image:url(../../img/flash.gif)}
-.mceItemQuickTime {background-image:url(../../img/quicktime.gif)}
-.mceItemWindowsMedia {background-image:url(../../img/windowsmedia.gif)}
-.mceItemRealMedia {background-image:url(../../img/realmedia.gif)}
-.mceItemVideo {background-image:url(../../img/video.gif)}
-.mceItemAudio {background-image:url(../../img/video.gif)}
-.mceItemEmbeddedAudio {background-image:url(../../img/video.gif)}
-.mceItemIframe {background-image:url(../../img/iframe.gif)}
-.mcePageBreak {display:block;border:0;width:100%;height:12px;border-top:1px dotted #ccc;margin-top:15px;background:#fff url(../../img/pagebreak.gif) no-repeat center top;}
diff --git a/program/js/tiny_mce/themes/advanced/skins/default/dialog.css b/program/js/tiny_mce/themes/advanced/skins/default/dialog.css
deleted file mode 100644
index 879786fc1..000000000
--- a/program/js/tiny_mce/themes/advanced/skins/default/dialog.css
+++ /dev/null
@@ -1,118 +0,0 @@
-/* Generic */
-body {
-font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;
-scrollbar-3dlight-color:#F0F0EE;
-scrollbar-arrow-color:#676662;
-scrollbar-base-color:#F0F0EE;
-scrollbar-darkshadow-color:#DDDDDD;
-scrollbar-face-color:#E0E0DD;
-scrollbar-highlight-color:#F0F0EE;
-scrollbar-shadow-color:#F0F0EE;
-scrollbar-track-color:#F5F5F5;
-background:#F0F0EE;
-padding:0;
-margin:8px 8px 0 8px;
-}
-
-html {background:#F0F0EE;}
-td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
-textarea {resize:none;outline:none;}
-a:link, a:visited {color:black;}
-a:hover {color:#2B6FB6;}
-.nowrap {white-space: nowrap}
-
-/* Forms */
-fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;}
-legend {color:#2B6FB6; font-weight:bold;}
-label.msg {display:none;}
-label.invalid {color:#EE0000; display:inline;}
-input.invalid {border:1px solid #EE0000;}
-input {background:#FFF; border:1px solid #CCC;}
-input, select, textarea {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
-input, select, textarea {border:1px solid #808080;}
-input.radio {border:1px none #000000; background:transparent; vertical-align:middle;}
-input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;}
-.input_noborder {border:0;}
-
-/* Buttons */
-#insert, #cancel, input.button, .updateButton {
-border:0; margin:0; padding:0;
-font-weight:bold;
-width:94px; height:26px;
-background:url(img/buttons.png) 0 -26px;
-cursor:pointer;
-padding-bottom:2px;
-float:left;
-}
-
-#insert {background:url(img/buttons.png) 0 -52px}
-#cancel {background:url(img/buttons.png) 0 0; float:right}
-
-/* Browse */
-a.pickcolor, a.browse {text-decoration:none}
-a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;}
-.mceOldBoxModel a.browse span {width:22px; height:20px;}
-a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;}
-a.browse span.disabled {border:1px solid white; opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
-a.browse:hover span.disabled {border:1px solid white; background-color:transparent;}
-a.pickcolor span {display:block; width:20px; height:16px; background:url(../../img/icons.gif) -840px 0; margin-left:2px;}
-.mceOldBoxModel a.pickcolor span {width:21px; height:17px;}
-a.pickcolor:hover span {background-color:#B2BBD0;}
-a.pickcolor:hover span.disabled {}
-
-/* Charmap */
-table.charmap {border:1px solid #AAA; text-align:center}
-td.charmap, #charmap a {width:18px; height:18px; color:#000; border:1px solid #AAA; text-align:center; font-size:12px; vertical-align:middle; line-height: 18px;}
-#charmap a {display:block; color:#000; text-decoration:none; border:0}
-#charmap a:hover {background:#CCC;color:#2B6FB6}
-#charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center}
-#charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center}
-
-/* Source */
-.wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;}
-.mceActionPanel {margin-top:5px;}
-
-/* Tabs classes */
-.tabs {width:100%; height:18px; line-height:normal; background:url(img/tabs.gif) repeat-x 0 -72px;}
-.tabs ul {margin:0; padding:0; list-style:none;}
-.tabs li {float:left; background:url(img/tabs.gif) no-repeat 0 0; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block;}
-.tabs li.current {background:url(img/tabs.gif) no-repeat 0 -18px; margin-right:2px;}
-.tabs span {float:left; display:block; background:url(img/tabs.gif) no-repeat right -36px; padding:0px 10px 0 0;}
-.tabs .current span {background:url(img/tabs.gif) no-repeat right -54px;}
-.tabs a {text-decoration:none; font-family:Verdana, Arial; font-size:10px;}
-.tabs a:link, .tabs a:visited, .tabs a:hover {color:black;}
-
-/* Panels */
-.panel_wrapper div.panel {display:none;}
-.panel_wrapper div.current {display:block; width:100%; height:300px; overflow:visible;}
-.panel_wrapper {border:1px solid #919B9C; border-top:0px; padding:10px; padding-top:5px; clear:both; background:white;}
-
-/* Columns */
-.column {float:left;}
-.properties {width:100%;}
-.properties .column1 {}
-.properties .column2 {text-align:left;}
-
-/* Titles */
-h1, h2, h3, h4 {color:#2B6FB6; margin:0; padding:0; padding-top:5px;}
-h3 {font-size:14px;}
-.title {font-size:12px; font-weight:bold; color:#2B6FB6;}
-
-/* Dialog specific */
-#link .panel_wrapper, #link div.current {height:125px;}
-#image .panel_wrapper, #image div.current {height:200px;}
-#plugintable thead {font-weight:bold; background:#DDD;}
-#plugintable, #about #plugintable td {border:1px solid #919B9C;}
-#plugintable {width:96%; margin-top:10px;}
-#pluginscontainer {height:290px; overflow:auto;}
-#colorpicker #preview {display:inline-block; padding-left:40px; height:14px; border:1px solid black; margin-left:5px; margin-right: 5px}
-#colorpicker #previewblock {position: relative; top: -3px; padding-left:5px; padding-top: 0px; display:inline}
-#colorpicker #preview_wrapper { text-align:center; padding-top:4px; white-space: nowrap}
-#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;}
-#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;}
-#colorpicker #light div {overflow:hidden;}
-#colorpicker .panel_wrapper div.current {height:175px;}
-#colorpicker #namedcolors {width:150px;}
-#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;}
-#colorpicker #colornamecontainer {margin-top:5px;}
-#colorpicker #picker_panel fieldset {margin:auto;width:325px;}
diff --git a/program/js/tiny_mce/themes/advanced/skins/default/img/buttons.png b/program/js/tiny_mce/themes/advanced/skins/default/img/buttons.png
deleted file mode 100644
index 1e53560e0..000000000
--- a/program/js/tiny_mce/themes/advanced/skins/default/img/buttons.png
+++ /dev/null
Binary files differ
diff --git a/program/js/tiny_mce/themes/advanced/skins/default/img/items.gif b/program/js/tiny_mce/themes/advanced/skins/default/img/items.gif
deleted file mode 100644
index d2f93671c..000000000
--- a/program/js/tiny_mce/themes/advanced/skins/default/img/items.gif
+++ /dev/null
Binary files differ
diff --git a/program/js/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif b/program/js/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif
deleted file mode 100644
index 85e31dfb2..000000000
--- a/program/js/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif
+++ /dev/null
Binary files differ
diff --git a/program/js/tiny_mce/themes/advanced/skins/default/img/menu_check.gif b/program/js/tiny_mce/themes/advanced/skins/default/img/menu_check.gif
deleted file mode 100644
index adfdddccd..000000000
--- a/program/js/tiny_mce/themes/advanced/skins/default/img/menu_check.gif
+++ /dev/null
Binary files differ
diff --git a/program/js/tiny_mce/themes/advanced/skins/default/img/progress.gif b/program/js/tiny_mce/themes/advanced/skins/default/img/progress.gif
deleted file mode 100644
index 5bb90fd6a..000000000
--- a/program/js/tiny_mce/themes/advanced/skins/default/img/progress.gif
+++ /dev/null
Binary files differ
diff --git a/program/js/tiny_mce/themes/advanced/skins/default/img/tabs.gif b/program/js/tiny_mce/themes/advanced/skins/default/img/tabs.gif
deleted file mode 100644
index 06812cb41..000000000
--- a/program/js/tiny_mce/themes/advanced/skins/default/img/tabs.gif
+++ /dev/null
Binary files differ
diff --git a/program/js/tiny_mce/themes/advanced/skins/default/ui.css b/program/js/tiny_mce/themes/advanced/skins/default/ui.css
deleted file mode 100644
index 77083f311..000000000
--- a/program/js/tiny_mce/themes/advanced/skins/default/ui.css
+++ /dev/null
@@ -1,219 +0,0 @@
-/* Reset */
-.defaultSkin table, .defaultSkin tbody, .defaultSkin a, .defaultSkin img, .defaultSkin tr, .defaultSkin div, .defaultSkin td, .defaultSkin iframe, .defaultSkin span, .defaultSkin *, .defaultSkin .mceText {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000; vertical-align:baseline; width:auto; border-collapse:separate; text-align:left}
-.defaultSkin a:hover, .defaultSkin a:link, .defaultSkin a:visited, .defaultSkin a:active {text-decoration:none; font-weight:normal; cursor:default; color:#000}
-.defaultSkin table td {vertical-align:middle}
-
-/* Containers */
-.defaultSkin table {direction:ltr;background:transparent}
-.defaultSkin iframe {display:block;}
-.defaultSkin .mceToolbar {height:26px}
-.defaultSkin .mceLeft {text-align:left}
-.defaultSkin .mceRight {text-align:right}
-
-/* External */
-.defaultSkin .mceExternalToolbar {position:absolute; border:1px solid #CCC; border-bottom:0; display:none;}
-.defaultSkin .mceExternalToolbar td.mceToolbar {padding-right:13px;}
-.defaultSkin .mceExternalClose {position:absolute; top:3px; right:3px; width:7px; height:7px; background:url(../../img/icons.gif) -820px 0}
-
-/* Layout */
-.defaultSkin table.mceLayout {border:0; border-left:1px solid #CCC; border-right:1px solid #CCC}
-.defaultSkin table.mceLayout tr.mceFirst td {border-top:1px solid #CCC}
-.defaultSkin table.mceLayout tr.mceLast td {border-bottom:1px solid #CCC}
-.defaultSkin table.mceToolbar, .defaultSkin tr.mceFirst .mceToolbar tr td, .defaultSkin tr.mceLast .mceToolbar tr td {border:0; margin:0; padding:0;}
-.defaultSkin td.mceToolbar {background:#F0F0EE; padding-top:1px; vertical-align:top}
-.defaultSkin .mceIframeContainer {border-top:1px solid #CCC; border-bottom:1px solid #CCC}
-.defaultSkin .mceStatusbar {background:#F0F0EE; font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:9pt; line-height:16px; overflow:visible; color:#000; display:block; height:20px}
-.defaultSkin .mceStatusbar div {float:left; margin:2px}
-.defaultSkin .mceStatusbar a.mceResize {display:block; float:right; background:url(../../img/icons.gif) -800px 0; width:20px; height:20px; cursor:se-resize; outline:0}
-.defaultSkin .mceStatusbar a:hover {text-decoration:underline}
-.defaultSkin table.mceToolbar {margin-left:3px}
-.defaultSkin span.mceIcon, .defaultSkin img.mceIcon {display:block; width:20px; height:20px}
-.defaultSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px}
-.defaultSkin td.mceCenter {text-align:center;}
-.defaultSkin td.mceCenter table {margin:0 auto; text-align:left;}
-.defaultSkin td.mceRight table {margin:0 0 0 auto;}
-
-/* Button */
-.defaultSkin .mceButton {display:block; border:1px solid #F0F0EE; width:20px; height:20px; margin-right:1px}
-.defaultSkin a.mceButtonEnabled:hover {border:1px solid #0A246A; background-color:#B2BBD0}
-.defaultSkin a.mceButtonActive, .defaultSkin a.mceButtonSelected {border:1px solid #0A246A; background-color:#C2CBE0}
-.defaultSkin .mceButtonDisabled .mceIcon {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
-.defaultSkin .mceButtonLabeled {width:auto}
-.defaultSkin .mceButtonLabeled span.mceIcon {float:left}
-.defaultSkin span.mceButtonLabel {display:block; font-size:10px; padding:4px 6px 0 22px; font-family:Tahoma,Verdana,Arial,Helvetica}
-.defaultSkin .mceButtonDisabled .mceButtonLabel {color:#888}
-
-/* Separator */
-.defaultSkin .mceSeparator {display:block; background:url(../../img/icons.gif) -180px 0; width:2px; height:20px; margin:2px 2px 0 4px}
-
-/* ListBox */
-.defaultSkin .mceListBox, .defaultSkin .mceListBox a {display:block}
-.defaultSkin .mceListBox .mceText {padding-left:4px; width:70px; text-align:left; border:1px solid #CCC; border-right:0; background:#FFF; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; height:20px; line-height:20px; overflow:hidden}
-.defaultSkin .mceListBox .mceOpen {width:9px; height:20px; background:url(../../img/icons.gif) -741px 0; margin-right:2px; border:1px solid #CCC;}
-.defaultSkin table.mceListBoxEnabled:hover .mceText, .defaultSkin .mceListBoxHover .mceText, .defaultSkin .mceListBoxSelected .mceText {border:1px solid #A2ABC0; border-right:0; background:#FFF}
-.defaultSkin table.mceListBoxEnabled:hover .mceOpen, .defaultSkin .mceListBoxHover .mceOpen, .defaultSkin .mceListBoxSelected .mceOpen {background-color:#FFF; border:1px solid #A2ABC0}
-.defaultSkin .mceListBoxDisabled a.mceText {color:gray; background-color:transparent;}
-.defaultSkin .mceListBoxMenu {overflow:auto; overflow-x:hidden}
-.defaultSkin .mceOldBoxModel .mceListBox .mceText {height:22px}
-.defaultSkin .mceOldBoxModel .mceListBox .mceOpen {width:11px; height:22px;}
-.defaultSkin select.mceNativeListBox {font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:7pt; background:#F0F0EE; border:1px solid gray; margin-right:2px;}
-
-/* SplitButton */
-.defaultSkin .mceSplitButton {width:32px; height:20px; direction:ltr}
-.defaultSkin .mceSplitButton a, .defaultSkin .mceSplitButton span {height:20px; display:block}
-.defaultSkin .mceSplitButton a.mceAction {width:20px; border:1px solid #F0F0EE; border-right:0;}
-.defaultSkin .mceSplitButton span.mceAction {width:20px; background-image:url(../../img/icons.gif);}
-.defaultSkin .mceSplitButton a.mceOpen {width:9px; background:url(../../img/icons.gif) -741px 0; border:1px solid #F0F0EE;}
-.defaultSkin .mceSplitButton span.mceOpen {display:none}
-.defaultSkin table.mceSplitButtonEnabled:hover a.mceAction, .defaultSkin .mceSplitButtonHover a.mceAction, .defaultSkin .mceSplitButtonSelected a.mceAction {border:1px solid #0A246A; border-right:0; background-color:#B2BBD0}
-.defaultSkin table.mceSplitButtonEnabled:hover a.mceOpen, .defaultSkin .mceSplitButtonHover a.mceOpen, .defaultSkin .mceSplitButtonSelected a.mceOpen {background-color:#B2BBD0; border:1px solid #0A246A;}
-.defaultSkin .mceSplitButtonDisabled .mceAction, .defaultSkin .mceSplitButtonDisabled a.mceOpen {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
-.defaultSkin .mceSplitButtonActive a.mceAction {border:1px solid #0A246A; background-color:#C2CBE0}
-.defaultSkin .mceSplitButtonActive a.mceOpen {border-left:0;}
-
-/* ColorSplitButton */
-.defaultSkin div.mceColorSplitMenu table {background:#FFF; border:1px solid gray}
-.defaultSkin .mceColorSplitMenu td {padding:2px}
-.defaultSkin .mceColorSplitMenu a {display:block; width:9px; height:9px; overflow:hidden; border:1px solid #808080}
-.defaultSkin .mceColorSplitMenu td.mceMoreColors {padding:1px 3px 1px 1px}
-.defaultSkin .mceColorSplitMenu a.mceMoreColors {width:100%; height:auto; text-align:center; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; line-height:20px; border:1px solid #FFF}
-.defaultSkin .mceColorSplitMenu a.mceMoreColors:hover {border:1px solid #0A246A; background-color:#B6BDD2}
-.defaultSkin a.mceMoreColors:hover {border:1px solid #0A246A}
-.defaultSkin .mceColorPreview {margin-left:2px; width:16px; height:4px; overflow:hidden; background:#9a9b9a}
-.defaultSkin .mce_forecolor span.mceAction, .defaultSkin .mce_backcolor span.mceAction {overflow:hidden; height:16px}
-
-/* Menu */
-.defaultSkin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #D4D0C8; direction:ltr}
-.defaultSkin .mceNoIcons span.mceIcon {width:0;}
-.defaultSkin .mceNoIcons a .mceText {padding-left:10px}
-.defaultSkin .mceMenu table {background:#FFF}
-.defaultSkin .mceMenu a, .defaultSkin .mceMenu span, .defaultSkin .mceMenu {display:block}
-.defaultSkin .mceMenu td {height:20px}
-.defaultSkin .mceMenu a {position:relative;padding:3px 0 4px 0}
-.defaultSkin .mceMenu .mceText {position:relative; display:block; font-family:Tahoma,Verdana,Arial,Helvetica; color:#000; cursor:default; margin:0; padding:0 25px 0 25px; display:block}
-.defaultSkin .mceMenu span.mceText, .defaultSkin .mceMenu .mcePreview {font-size:11px}
-.defaultSkin .mceMenu pre.mceText {font-family:Monospace}
-.defaultSkin .mceMenu .mceIcon {position:absolute; top:0; left:0; width:22px;}
-.defaultSkin .mceMenu .mceMenuItemEnabled a:hover, .defaultSkin .mceMenu .mceMenuItemActive {background-color:#dbecf3}
-.defaultSkin td.mceMenuItemSeparator {background:#DDD; height:1px}
-.defaultSkin .mceMenuItemTitle a {border:0; background:#EEE; border-bottom:1px solid #DDD}
-.defaultSkin .mceMenuItemTitle span.mceText {color:#000; font-weight:bold; padding-left:4px}
-.defaultSkin .mceMenuItemDisabled .mceText {color:#888}
-.defaultSkin .mceMenuItemSelected .mceIcon {background:url(img/menu_check.gif)}
-.defaultSkin .mceNoIcons .mceMenuItemSelected a {background:url(img/menu_arrow.gif) no-repeat -6px center}
-.defaultSkin .mceMenu span.mceMenuLine {display:none}
-.defaultSkin .mceMenuItemSub a {background:url(img/menu_arrow.gif) no-repeat top right;}
-.defaultSkin .mceMenuItem td, .defaultSkin .mceMenuItem th {line-height: normal}
-
-/* Progress,Resize */
-.defaultSkin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=50)'; filter:alpha(opacity=50); background:#FFF}
-.defaultSkin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px}
-
-/* Rtl */
-.mceRtl .mceListBox .mceText {text-align: right; padding: 0 4px 0 0}
-.mceRtl .mceMenuItem .mceText {text-align: right}
-
-/* Formats */
-.defaultSkin .mce_formatPreview a {font-size:10px}
-.defaultSkin .mce_p span.mceText {}
-.defaultSkin .mce_address span.mceText {font-style:italic}
-.defaultSkin .mce_pre span.mceText {font-family:monospace}
-.defaultSkin .mce_h1 span.mceText {font-weight:bolder; font-size: 2em}
-.defaultSkin .mce_h2 span.mceText {font-weight:bolder; font-size: 1.5em}
-.defaultSkin .mce_h3 span.mceText {font-weight:bolder; font-size: 1.17em}
-.defaultSkin .mce_h4 span.mceText {font-weight:bolder; font-size: 1em}
-.defaultSkin .mce_h5 span.mceText {font-weight:bolder; font-size: .83em}
-.defaultSkin .mce_h6 span.mceText {font-weight:bolder; font-size: .75em}
-
-/* Theme */
-.defaultSkin span.mce_bold {background-position:0 0}
-.defaultSkin span.mce_italic {background-position:-60px 0}
-.defaultSkin span.mce_underline {background-position:-140px 0}
-.defaultSkin span.mce_strikethrough {background-position:-120px 0}
-.defaultSkin span.mce_undo {background-position:-160px 0}
-.defaultSkin span.mce_redo {background-position:-100px 0}
-.defaultSkin span.mce_cleanup {background-position:-40px 0}
-.defaultSkin span.mce_bullist {background-position:-20px 0}
-.defaultSkin span.mce_numlist {background-position:-80px 0}
-.defaultSkin span.mce_justifyleft {background-position:-460px 0}
-.defaultSkin span.mce_justifyright {background-position:-480px 0}
-.defaultSkin span.mce_justifycenter {background-position:-420px 0}
-.defaultSkin span.mce_justifyfull {background-position:-440px 0}
-.defaultSkin span.mce_anchor {background-position:-200px 0}
-.defaultSkin span.mce_indent {background-position:-400px 0}
-.defaultSkin span.mce_outdent {background-position:-540px 0}
-.defaultSkin span.mce_link {background-position:-500px 0}
-.defaultSkin span.mce_unlink {background-position:-640px 0}
-.defaultSkin span.mce_sub {background-position:-600px 0}
-.defaultSkin span.mce_sup {background-position:-620px 0}
-.defaultSkin span.mce_removeformat {background-position:-580px 0}
-.defaultSkin span.mce_newdocument {background-position:-520px 0}
-.defaultSkin span.mce_image {background-position:-380px 0}
-.defaultSkin span.mce_help {background-position:-340px 0}
-.defaultSkin span.mce_code {background-position:-260px 0}
-.defaultSkin span.mce_hr {background-position:-360px 0}
-.defaultSkin span.mce_visualaid {background-position:-660px 0}
-.defaultSkin span.mce_charmap {background-position:-240px 0}
-.defaultSkin span.mce_paste {background-position:-560px 0}
-.defaultSkin span.mce_copy {background-position:-700px 0}
-.defaultSkin span.mce_cut {background-position:-680px 0}
-.defaultSkin span.mce_blockquote {background-position:-220px 0}
-.defaultSkin .mce_forecolor span.mceAction {background-position:-720px 0}
-.defaultSkin .mce_backcolor span.mceAction {background-position:-760px 0}
-.defaultSkin span.mce_forecolorpicker {background-position:-720px 0}
-.defaultSkin span.mce_backcolorpicker {background-position:-760px 0}
-
-/* Plugins */
-.defaultSkin span.mce_advhr {background-position:-0px -20px}
-.defaultSkin span.mce_ltr {background-position:-20px -20px}
-.defaultSkin span.mce_rtl {background-position:-40px -20px}
-.defaultSkin span.mce_emotions {background-position:-60px -20px}
-.defaultSkin span.mce_fullpage {background-position:-80px -20px}
-.defaultSkin span.mce_fullscreen {background-position:-100px -20px}
-.defaultSkin span.mce_iespell {background-position:-120px -20px}
-.defaultSkin span.mce_insertdate {background-position:-140px -20px}
-.defaultSkin span.mce_inserttime {background-position:-160px -20px}
-.defaultSkin span.mce_absolute {background-position:-180px -20px}
-.defaultSkin span.mce_backward {background-position:-200px -20px}
-.defaultSkin span.mce_forward {background-position:-220px -20px}
-.defaultSkin span.mce_insert_layer {background-position:-240px -20px}
-.defaultSkin span.mce_insertlayer {background-position:-260px -20px}
-.defaultSkin span.mce_movebackward {background-position:-280px -20px}
-.defaultSkin span.mce_moveforward {background-position:-300px -20px}
-.defaultSkin span.mce_media {background-position:-320px -20px}
-.defaultSkin span.mce_nonbreaking {background-position:-340px -20px}
-.defaultSkin span.mce_pastetext {background-position:-360px -20px}
-.defaultSkin span.mce_pasteword {background-position:-380px -20px}
-.defaultSkin span.mce_selectall {background-position:-400px -20px}
-.defaultSkin span.mce_preview {background-position:-420px -20px}
-.defaultSkin span.mce_print {background-position:-440px -20px}
-.defaultSkin span.mce_cancel {background-position:-460px -20px}
-.defaultSkin span.mce_save {background-position:-480px -20px}
-.defaultSkin span.mce_replace {background-position:-500px -20px}
-.defaultSkin span.mce_search {background-position:-520px -20px}
-.defaultSkin span.mce_styleprops {background-position:-560px -20px}
-.defaultSkin span.mce_table {background-position:-580px -20px}
-.defaultSkin span.mce_cell_props {background-position:-600px -20px}
-.defaultSkin span.mce_delete_table {background-position:-620px -20px}
-.defaultSkin span.mce_delete_col {background-position:-640px -20px}
-.defaultSkin span.mce_delete_row {background-position:-660px -20px}
-.defaultSkin span.mce_col_after {background-position:-680px -20px}
-.defaultSkin span.mce_col_before {background-position:-700px -20px}
-.defaultSkin span.mce_row_after {background-position:-720px -20px}
-.defaultSkin span.mce_row_before {background-position:-740px -20px}
-.defaultSkin span.mce_merge_cells {background-position:-760px -20px}
-.defaultSkin span.mce_table_props {background-position:-980px -20px}
-.defaultSkin span.mce_row_props {background-position:-780px -20px}
-.defaultSkin span.mce_split_cells {background-position:-800px -20px}
-.defaultSkin span.mce_template {background-position:-820px -20px}
-.defaultSkin span.mce_visualchars {background-position:-840px -20px}
-.defaultSkin span.mce_abbr {background-position:-860px -20px}
-.defaultSkin span.mce_acronym {background-position:-880px -20px}
-.defaultSkin span.mce_attribs {background-position:-900px -20px}
-.defaultSkin span.mce_cite {background-position:-920px -20px}
-.defaultSkin span.mce_del {background-position:-940px -20px}
-.defaultSkin span.mce_ins {background-position:-960px -20px}
-.defaultSkin span.mce_pagebreak {background-position:0 -40px}
-.defaultSkin span.mce_restoredraft {background-position:-20px -40px}
-.defaultSkin span.mce_spellchecker {background-position:-540px -20px}
-.defaultSkin span.mce_visualblocks {background-position: -40px -40px}
diff --git a/program/js/tiny_mce/themes/advanced/skins/highcontrast/content.css b/program/js/tiny_mce/themes/advanced/skins/highcontrast/content.css
deleted file mode 100644
index cbce6c6a2..000000000
--- a/program/js/tiny_mce/themes/advanced/skins/highcontrast/content.css
+++ /dev/null
@@ -1,24 +0,0 @@
-body, td, pre { margin:8px;}
-body.mceForceColors {background:#FFF; color:#000;}
-h1 {font-size: 2em}
-h2 {font-size: 1.5em}
-h3 {font-size: 1.17em}
-h4 {font-size: 1em}
-h5 {font-size: .83em}
-h6 {font-size: .75em}
-.mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;}
-a.mceItemAnchor {display:inline-block; width:11px !important; height:11px !important; background:url(../default/img/items.gif) no-repeat 0 0;}
-span.mceItemNbsp {background: #DDD}
-td.mceSelected, th.mceSelected {background-color:#3399ff !important}
-img {border:0;}
-table, img, hr, .mceItemAnchor {cursor:default}
-table td, table th {cursor:text}
-ins {border-bottom:1px solid green; text-decoration: none; color:green}
-del {color:red; text-decoration:line-through}
-cite {border-bottom:1px dashed blue}
-acronym {border-bottom:1px dotted #CCC; cursor:help}
-abbr {border-bottom:1px dashed #CCC; cursor:help}
-
-img:-moz-broken {-moz-force-broken-image-icon:1; width:24px; height:24px}
-font[face=mceinline] {font-family:inherit !important}
-*[contentEditable]:focus {outline:0}
diff --git a/program/js/tiny_mce/themes/advanced/skins/highcontrast/dialog.css b/program/js/tiny_mce/themes/advanced/skins/highcontrast/dialog.css
deleted file mode 100644
index 6d9fc8dd6..000000000
--- a/program/js/tiny_mce/themes/advanced/skins/highcontrast/dialog.css
+++ /dev/null
@@ -1,106 +0,0 @@
-/* Generic */
-body {
-font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;
-background:#F0F0EE;
-color: black;
-padding:0;
-margin:8px 8px 0 8px;
-}
-
-html {background:#F0F0EE; color:#000;}
-td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
-textarea {resize:none;outline:none;}
-a:link, a:visited {color:black;background-color:transparent;}
-a:hover {color:#2B6FB6;background-color:transparent;}
-.nowrap {white-space: nowrap}
-
-/* Forms */
-fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;}
-legend {color:#2B6FB6; font-weight:bold;}
-label.msg {display:none;}
-label.invalid {color:#EE0000; display:inline;background-color:transparent;}
-input.invalid {border:1px solid #EE0000;background-color:transparent;}
-input {background:#FFF; border:1px solid #CCC;color:black;}
-input, select, textarea {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
-input, select, textarea {border:1px solid #808080;}
-input.radio {border:1px none #000000; background:transparent; vertical-align:middle;}
-input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;}
-.input_noborder {border:0;}
-
-/* Buttons */
-#insert, #cancel, input.button, .updateButton {
-font-weight:bold;
-width:94px; height:23px;
-cursor:pointer;
-padding-bottom:2px;
-float:left;
-}
-
-#cancel {float:right}
-
-/* Browse */
-a.pickcolor, a.browse {text-decoration:none}
-a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;}
-.mceOldBoxModel a.browse span {width:22px; height:20px;}
-a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;}
-a.browse span.disabled {border:1px solid white; opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
-a.browse:hover span.disabled {border:1px solid white; background-color:transparent;}
-a.pickcolor span {display:block; width:20px; height:16px; background:url(../../img/icons.gif) -840px 0; margin-left:2px;}
-.mceOldBoxModel a.pickcolor span {width:21px; height:17px;}
-a.pickcolor:hover span {background-color:#B2BBD0;}
-a.pickcolor:hover span.disabled {}
-
-/* Charmap */
-table.charmap {border:1px solid #AAA; text-align:center}
-td.charmap, #charmap a {width:18px; height:18px; color:#000; border:1px solid #AAA; text-align:center; font-size:12px; vertical-align:middle; line-height: 18px;}
-#charmap a {display:block; color:#000; text-decoration:none; border:0}
-#charmap a:hover {background:#CCC;color:#2B6FB6}
-#charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center}
-#charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center}
-
-/* Source */
-.wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;}
-.mceActionPanel {margin-top:5px;}
-
-/* Tabs classes */
-.tabs {width:100%; height:18px; line-height:normal;}
-.tabs ul {margin:0; padding:0; list-style:none;}
-.tabs li {float:left; border: 1px solid black; border-bottom:0; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block; cursor:pointer;}
-.tabs li.current {font-weight: bold; margin-right:2px;}
-.tabs span {float:left; display:block; padding:0px 10px 0 0;}
-.tabs a {text-decoration:none; font-family:Verdana, Arial; font-size:10px;}
-.tabs a:link, .tabs a:visited, .tabs a:hover {color:black;}
-
-/* Panels */
-.panel_wrapper div.panel {display:none;}
-.panel_wrapper div.current {display:block; width:100%; height:300px; overflow:visible;}
-.panel_wrapper {border:1px solid #919B9C; padding:10px; padding-top:5px; clear:both; background:white;}
-
-/* Columns */
-.column {float:left;}
-.properties {width:100%;}
-.properties .column1 {}
-.properties .column2 {text-align:left;}
-
-/* Titles */
-h1, h2, h3, h4 {color:#2B6FB6; margin:0; padding:0; padding-top:5px;}
-h3 {font-size:14px;}
-.title {font-size:12px; font-weight:bold; color:#2B6FB6;}
-
-/* Dialog specific */
-#link .panel_wrapper, #link div.current {height:125px;}
-#image .panel_wrapper, #image div.current {height:200px;}
-#plugintable thead {font-weight:bold; background:#DDD;}
-#plugintable, #about #plugintable td {border:1px solid #919B9C;}
-#plugintable {width:96%; margin-top:10px;}
-#pluginscontainer {height:290px; overflow:auto;}
-#colorpicker #preview {display:inline-block; padding-left:40px; height:14px; border:1px solid black; margin-left:5px; margin-right: 5px}
-#colorpicker #previewblock {position: relative; top: -3px; padding-left:5px; padding-top: 0px; display:inline}
-#colorpicker #preview_wrapper { text-align:center; padding-top:4px; white-space: nowrap}
-#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;}
-#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;}
-#colorpicker #light div {overflow:hidden;}
-#colorpicker .panel_wrapper div.current {height:175px;}
-#colorpicker #namedcolors {width:150px;}
-#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;}
-#colorpicker #colornamecontainer {margin-top:5px;}
diff --git a/program/js/tiny_mce/themes/advanced/skins/highcontrast/ui.css b/program/js/tiny_mce/themes/advanced/skins/highcontrast/ui.css
deleted file mode 100644
index effbbe158..000000000
--- a/program/js/tiny_mce/themes/advanced/skins/highcontrast/ui.css
+++ /dev/null
@@ -1,106 +0,0 @@
-/* Reset */
-.highcontrastSkin table, .highcontrastSkin tbody, .highcontrastSkin a, .highcontrastSkin img, .highcontrastSkin tr, .highcontrastSkin div, .highcontrastSkin td, .highcontrastSkin iframe, .highcontrastSkin span, .highcontrastSkin *, .highcontrastSkin .mceText {border:0; margin:0; padding:0; vertical-align:baseline; border-collapse:separate;}
-.highcontrastSkin a:hover, .highcontrastSkin a:link, .highcontrastSkin a:visited, .highcontrastSkin a:active {text-decoration:none; font-weight:normal; cursor:default;}
-.highcontrastSkin table td {vertical-align:middle}
-
-.highcontrastSkin .mceIconOnly {display: block !important;}
-
-/* External */
-.highcontrastSkin .mceExternalToolbar {position:absolute; border:1px solid; border-bottom:0; display:none; background-color: white;}
-.highcontrastSkin .mceExternalToolbar td.mceToolbar {padding-right:13px;}
-.highcontrastSkin .mceExternalClose {position:absolute; top:3px; right:3px; width:7px; height:7px;}
-
-/* Layout */
-.highcontrastSkin table.mceLayout {border: 1px solid;}
-.highcontrastSkin .mceIframeContainer {border-top:1px solid; border-bottom:1px solid}
-.highcontrastSkin .mceStatusbar a:hover {text-decoration:underline}
-.highcontrastSkin .mceStatusbar {display:block; line-height:1.5em; overflow:visible;}
-.highcontrastSkin .mceStatusbar div {float:left}
-.highcontrastSkin .mceStatusbar a.mceResize {display:block; float:right; width:20px; height:20px; cursor:se-resize; outline:0}
-
-.highcontrastSkin .mceToolbar td { display: inline-block; float: left;}
-.highcontrastSkin .mceToolbar tr { display: block;}
-.highcontrastSkin .mceToolbar table { display: block; }
-
-/* Button */
-
-.highcontrastSkin .mceButton { display:block; margin: 2px; padding: 5px 10px;border: 1px solid; border-radius: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px; -ms-border-radius: 3px; height: 2em;}
-.highcontrastSkin .mceButton .mceVoiceLabel { height: 100%; vertical-align: center; line-height: 2em}
-.highcontrastSkin .mceButtonDisabled .mceVoiceLabel { opacity:0.6; -ms-filter:'alpha(opacity=60)'; filter:alpha(opacity=60);}
-.highcontrastSkin .mceButtonActive, .highcontrastSkin .mceButton:focus, .highcontrastSkin .mceButton:active { border: 5px solid; padding: 1px 6px;-webkit-focus-ring-color:none;outline:none;}
-
-/* Separator */
-.highcontrastSkin .mceSeparator {display:block; width:16px; height:26px;}
-
-/* ListBox */
-.highcontrastSkin .mceListBox { display: block; margin:2px;-webkit-focus-ring-color:none;outline:none;}
-.highcontrastSkin .mceListBox .mceText {padding: 5px 6px; line-height: 2em; width: 15ex; overflow: hidden;}
-.highcontrastSkin .mceListBoxDisabled .mceText { opacity:0.6; -ms-filter:'alpha(opacity=60)'; filter:alpha(opacity=60);}
-.highcontrastSkin .mceListBox a.mceText { padding: 5px 10px; display: block; height: 2em; line-height: 2em; border: 1px solid; border-right: 0; border-radius: 3px 0px 0px 3px; -moz-border-radius: 3px 0px 0px 3px; -webkit-border-radius: 3px 0px 0px 3px; -ms-border-radius: 3px 0px 0px 3px;}
-.highcontrastSkin .mceListBox a.mceOpen { padding: 5px 4px; display: block; height: 2em; line-height: 2em; border: 1px solid; border-left: 0; border-radius: 0px 3px 3px 0px; -moz-border-radius: 0px 3px 3px 0px; -webkit-border-radius: 0px 3px 3px 0px; -ms-border-radius: 0px 3px 3px 0px;}
-.highcontrastSkin .mceListBox:focus a.mceText, .highcontrastSkin .mceListBox:active a.mceText { border-width: 5px; padding: 1px 10px 1px 6px;}
-.highcontrastSkin .mceListBox:focus a.mceOpen, .highcontrastSkin .mceListBox:active a.mceOpen { border-width: 5px; padding: 1px 0px 1px 4px;}
-
-.highcontrastSkin .mceListBoxMenu {overflow-y:auto}
-
-/* SplitButton */
-.highcontrastSkin .mceSplitButtonDisabled .mceAction {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
-
-.highcontrastSkin .mceSplitButton { border-collapse: collapse; margin: 2px; height: 2em; line-height: 2em;-webkit-focus-ring-color:none;outline:none;}
-.highcontrastSkin .mceSplitButton td { display: table-cell; float: none; margin: 0; padding: 0; height: 2em;}
-.highcontrastSkin .mceSplitButton tr { display: table-row; }
-.highcontrastSkin table.mceSplitButton { display: table; }
-.highcontrastSkin .mceSplitButton a.mceAction { padding: 5px 10px; display: block; height: 2em; line-height: 2em; overflow: hidden; border: 1px solid; border-right: 0; border-radius: 3px 0px 0px 3px; -moz-border-radius: 3px 0px 0px 3px; -webkit-border-radius: 3px 0px 0px 3px; -ms-border-radius: 3px 0px 0px 3px;}
-.highcontrastSkin .mceSplitButton a.mceOpen { padding: 5px 4px; display: block; height: 2em; line-height: 2em; border: 1px solid; border-radius: 0px 3px 3px 0px; -moz-border-radius: 0px 3px 3px 0px; -webkit-border-radius: 0px 3px 3px 0px; -ms-border-radius: 0px 3px 3px 0px;}
-.highcontrastSkin .mceSplitButton .mceVoiceLabel { height: 2em; vertical-align: center; line-height: 2em; }
-.highcontrastSkin .mceSplitButton:focus a.mceAction, .highcontrastSkin .mceSplitButton:active a.mceAction { border-width: 5px; border-right-width: 1px; padding: 1px 10px 1px 6px;-webkit-focus-ring-color:none;outline:none;}
-.highcontrastSkin .mceSplitButton:focus a.mceOpen, .highcontrastSkin .mceSplitButton:active a.mceOpen { border-width: 5px; border-left-width: 1px; padding: 1px 0px 1px 4px;-webkit-focus-ring-color:none;outline:none;}
-
-/* Menu */
-.highcontrastSkin .mceNoIcons span.mceIcon {width:0;}
-.highcontrastSkin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid; direction:ltr}
-.highcontrastSkin .mceMenu table {background:white; color: black}
-.highcontrastSkin .mceNoIcons a .mceText {padding-left:10px}
-.highcontrastSkin .mceMenu a, .highcontrastSkin .mceMenu span, .highcontrastSkin .mceMenu {display:block;background:white; color: black}
-.highcontrastSkin .mceMenu td {height:2em}
-.highcontrastSkin .mceMenu a {position:relative;padding:3px 0 4px 0; display: block;}
-.highcontrastSkin .mceMenu .mceText {position:relative; display:block; cursor:default; margin:0; padding:0 25px 0 25px;}
-.highcontrastSkin .mceMenu pre.mceText {font-family:Monospace}
-.highcontrastSkin .mceMenu .mceIcon {position:absolute; top:0; left:0; width:26px;}
-.highcontrastSkin td.mceMenuItemSeparator {border-top:1px solid; height:1px}
-.highcontrastSkin .mceMenuItemTitle a {border:0; border-bottom:1px solid}
-.highcontrastSkin .mceMenuItemTitle span.mceText {font-weight:bold; padding-left:4px}
-.highcontrastSkin .mceNoIcons .mceMenuItemSelected span.mceText:before {content: "\2713\A0";}
-.highcontrastSkin .mceMenu span.mceMenuLine {display:none}
-.highcontrastSkin .mceMenuItemSub a .mceText:after {content: "\A0\25B8"}
-.highcontrastSkin .mceMenuItem td, .highcontrastSkin .mceMenuItem th {line-height: normal}
-
-/* ColorSplitButton */
-.highcontrastSkin div.mceColorSplitMenu table {background:#FFF; border:1px solid; color: #000}
-.highcontrastSkin .mceColorSplitMenu td {padding:2px}
-.highcontrastSkin .mceColorSplitMenu a {display:block; width:16px; height:16px; overflow:hidden; color:#000; margin: 0; padding: 0;}
-.highcontrastSkin .mceColorSplitMenu td.mceMoreColors {padding:1px 3px 1px 1px}
-.highcontrastSkin .mceColorSplitMenu a.mceMoreColors {width:100%; height:auto; text-align:center; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; line-height:20px; border:1px solid #FFF}
-.highcontrastSkin .mceColorSplitMenu a.mceMoreColors:hover {border:1px solid; background-color:#B6BDD2}
-.highcontrastSkin a.mceMoreColors:hover {border:1px solid #0A246A; color: #000;}
-.highcontrastSkin .mceColorPreview {display:none;}
-.highcontrastSkin .mce_forecolor span.mceAction, .highcontrastSkin .mce_backcolor span.mceAction {height:17px;overflow:hidden}
-
-/* Progress,Resize */
-.highcontrastSkin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=50); background:#FFF}
-.highcontrastSkin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(../default/img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px}
-
-/* Rtl */
-.mceRtl .mceListBox .mceText {text-align: right; padding: 0 4px 0 0}
-.mceRtl .mceMenuItem .mceText {text-align: right}
-
-/* Formats */
-.highcontrastSkin .mce_p span.mceText {}
-.highcontrastSkin .mce_address span.mceText {font-style:italic}
-.highcontrastSkin .mce_pre span.mceText {font-family:monospace}
-.highcontrastSkin .mce_h1 span.mceText {font-weight:bolder; font-size: 2em}
-.highcontrastSkin .mce_h2 span.mceText {font-weight:bolder; font-size: 1.5em}
-.highcontrastSkin .mce_h3 span.mceText {font-weight:bolder; font-size: 1.17em}
-.highcontrastSkin .mce_h4 span.mceText {font-weight:bolder; font-size: 1em}
-.highcontrastSkin .mce_h5 span.mceText {font-weight:bolder; font-size: .83em}
-.highcontrastSkin .mce_h6 span.mceText {font-weight:bolder; font-size: .75em}
diff --git a/program/js/tiny_mce/themes/advanced/skins/o2k7/content.css b/program/js/tiny_mce/themes/advanced/skins/o2k7/content.css
deleted file mode 100644
index a1a8f9bd3..000000000
--- a/program/js/tiny_mce/themes/advanced/skins/o2k7/content.css
+++ /dev/null
@@ -1,48 +0,0 @@
-body, td, pre {color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; margin:8px;}
-body {background:#FFF;}
-body.mceForceColors {background:#FFF; color:#000;}
-h1 {font-size: 2em}
-h2 {font-size: 1.5em}
-h3 {font-size: 1.17em}
-h4 {font-size: 1em}
-h5 {font-size: .83em}
-h6 {font-size: .75em}
-.mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;}
-a.mceItemAnchor {display:inline-block; width:11px !important; height:11px !important; background:url(../default/img/items.gif) no-repeat 0 0;}
-span.mceItemNbsp {background: #DDD}
-td.mceSelected, th.mceSelected {background-color:#3399ff !important}
-img {border:0;}
-table, img, hr, .mceItemAnchor {cursor:default}
-table td, table th {cursor:text}
-ins {border-bottom:1px solid green; text-decoration: none; color:green}
-del {color:red; text-decoration:line-through}
-cite {border-bottom:1px dashed blue}
-acronym {border-bottom:1px dotted #CCC; cursor:help}
-abbr {border-bottom:1px dashed #CCC; cursor:help}
-
-/* IE */
-* html body {
-scrollbar-3dlight-color:#F0F0EE;
-scrollbar-arrow-color:#676662;
-scrollbar-base-color:#F0F0EE;
-scrollbar-darkshadow-color:#DDD;
-scrollbar-face-color:#E0E0DD;
-scrollbar-highlight-color:#F0F0EE;
-scrollbar-shadow-color:#F0F0EE;
-scrollbar-track-color:#F5F5F5;
-}
-
-img:-moz-broken {-moz-force-broken-image-icon:1; width:24px; height:24px}
-font[face=mceinline] {font-family:inherit !important}
-*[contentEditable]:focus {outline:0}
-
-.mceItemMedia {border:1px dotted #cc0000; background-position:center; background-repeat:no-repeat; background-color:#ffffcc}
-.mceItemShockWave {background-image:url(../../img/shockwave.gif)}
-.mceItemFlash {background-image:url(../../img/flash.gif)}
-.mceItemQuickTime {background-image:url(../../img/quicktime.gif)}
-.mceItemWindowsMedia {background-image:url(../../img/windowsmedia.gif)}
-.mceItemRealMedia {background-image:url(../../img/realmedia.gif)}
-.mceItemVideo {background-image:url(../../img/video.gif)}
-.mceItemAudio {background-image:url(../../img/video.gif)}
-.mceItemIframe {background-image:url(../../img/iframe.gif)}
-.mcePageBreak {display:block;border:0;width:100%;height:12px;border-top:1px dotted #ccc;margin-top:15px;background:#fff url(../../img/pagebreak.gif) no-repeat center top;}
diff --git a/program/js/tiny_mce/themes/advanced/skins/o2k7/dialog.css b/program/js/tiny_mce/themes/advanced/skins/o2k7/dialog.css
deleted file mode 100644
index a54db98df..000000000
--- a/program/js/tiny_mce/themes/advanced/skins/o2k7/dialog.css
+++ /dev/null
@@ -1,118 +0,0 @@
-/* Generic */
-body {
-font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;
-scrollbar-3dlight-color:#F0F0EE;
-scrollbar-arrow-color:#676662;
-scrollbar-base-color:#F0F0EE;
-scrollbar-darkshadow-color:#DDDDDD;
-scrollbar-face-color:#E0E0DD;
-scrollbar-highlight-color:#F0F0EE;
-scrollbar-shadow-color:#F0F0EE;
-scrollbar-track-color:#F5F5F5;
-background:#F0F0EE;
-padding:0;
-margin:8px 8px 0 8px;
-}
-
-html {background:#F0F0EE;}
-td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
-textarea {resize:none;outline:none;}
-a:link, a:visited {color:black;}
-a:hover {color:#2B6FB6;}
-.nowrap {white-space: nowrap}
-
-/* Forms */
-fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;}
-legend {color:#2B6FB6; font-weight:bold;}
-label.msg {display:none;}
-label.invalid {color:#EE0000; display:inline;}
-input.invalid {border:1px solid #EE0000;}
-input {background:#FFF; border:1px solid #CCC;}
-input, select, textarea {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
-input, select, textarea {border:1px solid #808080;}
-input.radio {border:1px none #000000; background:transparent; vertical-align:middle;}
-input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;}
-.input_noborder {border:0;}
-
-/* Buttons */
-#insert, #cancel, input.button, .updateButton {
-border:0; margin:0; padding:0;
-font-weight:bold;
-width:94px; height:26px;
-background:url(../default/img/buttons.png) 0 -26px;
-cursor:pointer;
-padding-bottom:2px;
-float:left;
-}
-
-#insert {background:url(../default/img/buttons.png) 0 -52px}
-#cancel {background:url(../default/img/buttons.png) 0 0; float:right}
-
-/* Browse */
-a.pickcolor, a.browse {text-decoration:none}
-a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;}
-.mceOldBoxModel a.browse span {width:22px; height:20px;}
-a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;}
-a.browse span.disabled {border:1px solid white; opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
-a.browse:hover span.disabled {border:1px solid white; background-color:transparent;}
-a.pickcolor span {display:block; width:20px; height:16px; background:url(../../img/icons.gif) -840px 0; margin-left:2px;}
-.mceOldBoxModel a.pickcolor span {width:21px; height:17px;}
-a.pickcolor:hover span {background-color:#B2BBD0;}
-a.pickcolor:hover span.disabled {}
-
-/* Charmap */
-table.charmap {border:1px solid #AAA; text-align:center}
-td.charmap, #charmap a {width:18px; height:18px; color:#000; border:1px solid #AAA; text-align:center; font-size:12px; vertical-align:middle; line-height: 18px;}
-#charmap a {display:block; color:#000; text-decoration:none; border:0}
-#charmap a:hover {background:#CCC;color:#2B6FB6}
-#charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center}
-#charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center}
-
-/* Source */
-.wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;}
-.mceActionPanel {margin-top:5px;}
-
-/* Tabs classes */
-.tabs {width:100%; height:18px; line-height:normal; background:url(../default/img/tabs.gif) repeat-x 0 -72px;}
-.tabs ul {margin:0; padding:0; list-style:none;}
-.tabs li {float:left; background:url(../default/img/tabs.gif) no-repeat 0 0; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block;}
-.tabs li.current {background:url(../default/img/tabs.gif) no-repeat 0 -18px; margin-right:2px;}
-.tabs span {float:left; display:block; background:url(../default/img/tabs.gif) no-repeat right -36px; padding:0px 10px 0 0;}
-.tabs .current span {background:url(../default/img/tabs.gif) no-repeat right -54px;}
-.tabs a {text-decoration:none; font-family:Verdana, Arial; font-size:10px;}
-.tabs a:link, .tabs a:visited, .tabs a:hover {color:black;}
-
-/* Panels */
-.panel_wrapper div.panel {display:none;}
-.panel_wrapper div.current {display:block; width:100%; height:300px; overflow:visible;}
-.panel_wrapper {border:1px solid #919B9C; border-top:0px; padding:10px; padding-top:5px; clear:both; background:white;}
-
-/* Columns */
-.column {float:left;}
-.properties {width:100%;}
-.properties .column1 {}
-.properties .column2 {text-align:left;}
-
-/* Titles */
-h1, h2, h3, h4 {color:#2B6FB6; margin:0; padding:0; padding-top:5px;}
-h3 {font-size:14px;}
-.title {font-size:12px; font-weight:bold; color:#2B6FB6;}
-
-/* Dialog specific */
-#link .panel_wrapper, #link div.current {height:125px;}
-#image .panel_wrapper, #image div.current {height:200px;}
-#plugintable thead {font-weight:bold; background:#DDD;}
-#plugintable, #about #plugintable td {border:1px solid #919B9C;}
-#plugintable {width:96%; margin-top:10px;}
-#pluginscontainer {height:290px; overflow:auto;}
-#colorpicker #preview {display:inline-block; padding-left:40px; height:14px; border:1px solid black; margin-left:5px; margin-right: 5px}
-#colorpicker #previewblock {position: relative; top: -3px; padding-left:5px; padding-top: 0px; display:inline}
-#colorpicker #preview_wrapper { text-align:center; padding-top:4px; white-space: nowrap}
-#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;}
-#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;}
-#colorpicker #light div {overflow:hidden;}
-#colorpicker .panel_wrapper div.current {height:175px;}
-#colorpicker #namedcolors {width:150px;}
-#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;}
-#colorpicker #colornamecontainer {margin-top:5px;}
-#colorpicker #picker_panel fieldset {margin:auto;width:325px;}
diff --git a/program/js/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png b/program/js/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png
deleted file mode 100644
index 13a5cb030..000000000
--- a/program/js/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png
+++ /dev/null
Binary files differ
diff --git a/program/js/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png b/program/js/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png
deleted file mode 100644
index 7fc57f2bc..000000000
--- a/program/js/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png
+++ /dev/null
Binary files differ
diff --git a/program/js/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png b/program/js/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png
deleted file mode 100644
index c0dcc6cac..000000000
--- a/program/js/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png
+++ /dev/null
Binary files differ
diff --git a/program/js/tiny_mce/themes/advanced/skins/o2k7/ui.css b/program/js/tiny_mce/themes/advanced/skins/o2k7/ui.css
deleted file mode 100644
index a31022371..000000000
--- a/program/js/tiny_mce/themes/advanced/skins/o2k7/ui.css
+++ /dev/null
@@ -1,222 +0,0 @@
-/* Reset */
-.o2k7Skin table, .o2k7Skin tbody, .o2k7Skin a, .o2k7Skin img, .o2k7Skin tr, .o2k7Skin div, .o2k7Skin td, .o2k7Skin iframe, .o2k7Skin span, .o2k7Skin *, .o2k7Skin .mceText {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000; vertical-align:baseline; width:auto; border-collapse:separate; text-align:left}
-.o2k7Skin a:hover, .o2k7Skin a:link, .o2k7Skin a:visited, .o2k7Skin a:active {text-decoration:none; font-weight:normal; cursor:default; color:#000}
-.o2k7Skin table td {vertical-align:middle}
-
-/* Containers */
-.o2k7Skin table {background:transparent}
-.o2k7Skin iframe {display:block;}
-.o2k7Skin .mceToolbar {height:26px}
-
-/* External */
-.o2k7Skin .mceExternalToolbar {position:absolute; border:1px solid #ABC6DD; border-bottom:0; display:none}
-.o2k7Skin .mceExternalToolbar td.mceToolbar {padding-right:13px;}
-.o2k7Skin .mceExternalClose {position:absolute; top:3px; right:3px; width:7px; height:7px; background:url(../../img/icons.gif) -820px 0}
-
-/* Layout */
-.o2k7Skin table.mceLayout {border:0; border-left:1px solid #ABC6DD; border-right:1px solid #ABC6DD}
-.o2k7Skin table.mceLayout tr.mceFirst td {border-top:1px solid #ABC6DD}
-.o2k7Skin table.mceLayout tr.mceLast td {border-bottom:1px solid #ABC6DD}
-.o2k7Skin table.mceToolbar, .o2k7Skin tr.mceFirst .mceToolbar tr td, .o2k7Skin tr.mceLast .mceToolbar tr td {border:0; margin:0; padding:0}
-.o2k7Skin .mceIframeContainer {border-top:1px solid #ABC6DD; border-bottom:1px solid #ABC6DD}
-.o2k7Skin td.mceToolbar{background:#E5EFFD}
-.o2k7Skin .mceStatusbar {background:#E5EFFD; display:block; font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:9pt; line-height:16px; overflow:visible; color:#000; height:20px}
-.o2k7Skin .mceStatusbar div {float:left; padding:2px}
-.o2k7Skin .mceStatusbar a.mceResize {display:block; float:right; background:url(../../img/icons.gif) -800px 0; width:20px; height:20px; cursor:se-resize; outline:0}
-.o2k7Skin .mceStatusbar a:hover {text-decoration:underline}
-.o2k7Skin table.mceToolbar {margin-left:3px}
-.o2k7Skin .mceToolbar .mceToolbarStart span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px; margin-left:3px;}
-.o2k7Skin .mceToolbar td.mceFirst span {margin:0}
-.o2k7Skin .mceToolbar .mceToolbarEnd span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px}
-.o2k7Skin .mceToolbar .mceToolbarEndListBox span, .o2k7Skin .mceToolbar .mceToolbarStartListBox span {display:none}
-.o2k7Skin span.mceIcon, .o2k7Skin img.mceIcon {display:block; width:20px; height:20px}
-.o2k7Skin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px}
-.o2k7Skin td.mceCenter {text-align:center;}
-.o2k7Skin td.mceCenter table {margin:0 auto; text-align:left;}
-.o2k7Skin td.mceRight table {margin:0 0 0 auto;}
-
-/* Button */
-.o2k7Skin .mceButton {display:block; background:url(img/button_bg.png); width:22px; height:22px}
-.o2k7Skin a.mceButton span, .o2k7Skin a.mceButton img {margin-left:1px}
-.o2k7Skin .mceOldBoxModel a.mceButton span, .o2k7Skin .mceOldBoxModel a.mceButton img {margin:0 0 0 1px}
-.o2k7Skin a.mceButtonEnabled:hover {background-color:#B2BBD0; background-position:0 -22px}
-.o2k7Skin a.mceButtonActive, .o2k7Skin a.mceButtonSelected {background-position:0 -44px}
-.o2k7Skin .mceButtonDisabled .mceIcon {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
-.o2k7Skin .mceButtonLabeled {width:auto}
-.o2k7Skin .mceButtonLabeled span.mceIcon {float:left}
-.o2k7Skin span.mceButtonLabel {display:block; font-size:10px; padding:4px 6px 0 22px; font-family:Tahoma,Verdana,Arial,Helvetica}
-.o2k7Skin .mceButtonDisabled .mceButtonLabel {color:#888}
-
-/* Separator */
-.o2k7Skin .mceSeparator {display:block; background:url(img/button_bg.png) -22px 0; width:5px; height:22px}
-
-/* ListBox */
-.o2k7Skin .mceListBox {padding-left: 3px}
-.o2k7Skin .mceListBox, .o2k7Skin .mceListBox a {display:block}
-.o2k7Skin .mceListBox .mceText {padding-left:4px; text-align:left; width:70px; border:1px solid #b3c7e1; border-right:0; background:#eaf2fb; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; height:20px; line-height:20px; overflow:hidden}
-.o2k7Skin .mceListBox .mceOpen {width:14px; height:22px; background:url(img/button_bg.png) -66px 0}
-.o2k7Skin table.mceListBoxEnabled:hover .mceText, .o2k7Skin .mceListBoxHover .mceText, .o2k7Skin .mceListBoxSelected .mceText {background:#FFF}
-.o2k7Skin table.mceListBoxEnabled:hover .mceOpen, .o2k7Skin .mceListBoxHover .mceOpen, .o2k7Skin .mceListBoxSelected .mceOpen {background-position:-66px -22px}
-.o2k7Skin .mceListBoxDisabled .mceText {color:gray}
-.o2k7Skin .mceListBoxMenu {overflow:auto; overflow-x:hidden; margin-left:3px}
-.o2k7Skin .mceOldBoxModel .mceListBox .mceText {height:22px}
-.o2k7Skin select.mceListBox {font-family:Tahoma,Verdana,Arial,Helvetica; font-size:12px; border:1px solid #b3c7e1; background:#FFF;}
-
-/* SplitButton */
-.o2k7Skin .mceSplitButton, .o2k7Skin .mceSplitButton a, .o2k7Skin .mceSplitButton span {display:block; height:22px; direction:ltr}
-.o2k7Skin .mceSplitButton {background:url(img/button_bg.png)}
-.o2k7Skin .mceSplitButton a.mceAction {width:22px}
-.o2k7Skin .mceSplitButton span.mceAction {width:22px; background-image:url(../../img/icons.gif)}
-.o2k7Skin .mceSplitButton a.mceOpen {width:10px; background:url(img/button_bg.png) -44px 0}
-.o2k7Skin .mceSplitButton span.mceOpen {display:none}
-.o2k7Skin table.mceSplitButtonEnabled:hover a.mceAction, .o2k7Skin .mceSplitButtonHover a.mceAction, .o2k7Skin .mceSplitButtonSelected {background:url(img/button_bg.png) 0 -22px}
-.o2k7Skin table.mceSplitButtonEnabled:hover a.mceOpen, .o2k7Skin .mceSplitButtonHover a.mceOpen, .o2k7Skin .mceSplitButtonSelected a.mceOpen {background-position:-44px -44px}
-.o2k7Skin .mceSplitButtonDisabled .mceAction {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
-.o2k7Skin .mceSplitButtonActive {background-position:0 -44px}
-
-/* ColorSplitButton */
-.o2k7Skin div.mceColorSplitMenu table {background:#FFF; border:1px solid gray}
-.o2k7Skin .mceColorSplitMenu td {padding:2px}
-.o2k7Skin .mceColorSplitMenu a {display:block; width:9px; height:9px; overflow:hidden; border:1px solid #808080}
-.o2k7Skin .mceColorSplitMenu td.mceMoreColors {padding:1px 3px 1px 1px}
-.o2k7Skin .mceColorSplitMenu a.mceMoreColors {width:100%; height:auto; text-align:center; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; line-height:20px; border:1px solid #FFF}
-.o2k7Skin .mceColorSplitMenu a.mceMoreColors:hover {border:1px solid #0A246A; background-color:#B6BDD2}
-.o2k7Skin a.mceMoreColors:hover {border:1px solid #0A246A}
-.o2k7Skin .mceColorPreview {margin-left:2px; width:16px; height:4px; overflow:hidden; background:#9a9b9a;overflow:hidden}
-.o2k7Skin .mce_forecolor span.mceAction, .o2k7Skin .mce_backcolor span.mceAction {height:15px;overflow:hidden}
-
-/* Menu */
-.o2k7Skin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #ABC6DD; direction:ltr}
-.o2k7Skin .mceNoIcons span.mceIcon {width:0;}
-.o2k7Skin .mceNoIcons a .mceText {padding-left:10px}
-.o2k7Skin .mceMenu table {background:#FFF}
-.o2k7Skin .mceMenu a, .o2k7Skin .mceMenu span, .o2k7Skin .mceMenu {display:block}
-.o2k7Skin .mceMenu td {height:20px}
-.o2k7Skin .mceMenu a {position:relative;padding:3px 0 4px 0}
-.o2k7Skin .mceMenu .mceText {position:relative; display:block; font-family:Tahoma,Verdana,Arial,Helvetica; color:#000; cursor:default; margin:0; padding:0 25px 0 25px; display:block}
-.o2k7Skin .mceMenu span.mceText, .o2k7Skin .mceMenu .mcePreview {font-size:11px}
-.o2k7Skin .mceMenu pre.mceText {font-family:Monospace}
-.o2k7Skin .mceMenu .mceIcon {position:absolute; top:0; left:0; width:22px;}
-.o2k7Skin .mceMenu .mceMenuItemEnabled a:hover, .o2k7Skin .mceMenu .mceMenuItemActive {background-color:#dbecf3}
-.o2k7Skin td.mceMenuItemSeparator {background:#DDD; height:1px}
-.o2k7Skin .mceMenuItemTitle a {border:0; background:#E5EFFD; border-bottom:1px solid #ABC6DD}
-.o2k7Skin .mceMenuItemTitle span.mceText {color:#000; font-weight:bold; padding-left:4px}
-.o2k7Skin .mceMenuItemDisabled .mceText {color:#888}
-.o2k7Skin .mceMenuItemSelected .mceIcon {background:url(../default/img/menu_check.gif)}
-.o2k7Skin .mceNoIcons .mceMenuItemSelected a {background:url(../default/img/menu_arrow.gif) no-repeat -6px center}
-.o2k7Skin .mceMenu span.mceMenuLine {display:none}
-.o2k7Skin .mceMenuItemSub a {background:url(../default/img/menu_arrow.gif) no-repeat top right;}
-.o2k7Skin .mceMenuItem td, .o2k7Skin .mceMenuItem th {line-height: normal}
-
-/* Progress,Resize */
-.o2k7Skin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=50); background:#FFF}
-.o2k7Skin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(../default/img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px}
-
-/* Rtl */
-.mceRtl .mceListBox .mceText {text-align: right; padding: 0 4px 0 0}
-.mceRtl .mceMenuItem .mceText {text-align: right}
-
-/* Formats */
-.o2k7Skin .mce_formatPreview a {font-size:10px}
-.o2k7Skin .mce_p span.mceText {}
-.o2k7Skin .mce_address span.mceText {font-style:italic}
-.o2k7Skin .mce_pre span.mceText {font-family:monospace}
-.o2k7Skin .mce_h1 span.mceText {font-weight:bolder; font-size: 2em}
-.o2k7Skin .mce_h2 span.mceText {font-weight:bolder; font-size: 1.5em}
-.o2k7Skin .mce_h3 span.mceText {font-weight:bolder; font-size: 1.17em}
-.o2k7Skin .mce_h4 span.mceText {font-weight:bolder; font-size: 1em}
-.o2k7Skin .mce_h5 span.mceText {font-weight:bolder; font-size: .83em}
-.o2k7Skin .mce_h6 span.mceText {font-weight:bolder; font-size: .75em}
-
-/* Theme */
-.o2k7Skin span.mce_bold {background-position:0 0}
-.o2k7Skin span.mce_italic {background-position:-60px 0}
-.o2k7Skin span.mce_underline {background-position:-140px 0}
-.o2k7Skin span.mce_strikethrough {background-position:-120px 0}
-.o2k7Skin span.mce_undo {background-position:-160px 0}
-.o2k7Skin span.mce_redo {background-position:-100px 0}
-.o2k7Skin span.mce_cleanup {background-position:-40px 0}
-.o2k7Skin span.mce_bullist {background-position:-20px 0}
-.o2k7Skin span.mce_numlist {background-position:-80px 0}
-.o2k7Skin span.mce_justifyleft {background-position:-460px 0}
-.o2k7Skin span.mce_justifyright {background-position:-480px 0}
-.o2k7Skin span.mce_justifycenter {background-position:-420px 0}
-.o2k7Skin span.mce_justifyfull {background-position:-440px 0}
-.o2k7Skin span.mce_anchor {background-position:-200px 0}
-.o2k7Skin span.mce_indent {background-position:-400px 0}
-.o2k7Skin span.mce_outdent {background-position:-540px 0}
-.o2k7Skin span.mce_link {background-position:-500px 0}
-.o2k7Skin span.mce_unlink {background-position:-640px 0}
-.o2k7Skin span.mce_sub {background-position:-600px 0}
-.o2k7Skin span.mce_sup {background-position:-620px 0}
-.o2k7Skin span.mce_removeformat {background-position:-580px 0}
-.o2k7Skin span.mce_newdocument {background-position:-520px 0}
-.o2k7Skin span.mce_image {background-position:-380px 0}
-.o2k7Skin span.mce_help {background-position:-340px 0}
-.o2k7Skin span.mce_code {background-position:-260px 0}
-.o2k7Skin span.mce_hr {background-position:-360px 0}
-.o2k7Skin span.mce_visualaid {background-position:-660px 0}
-.o2k7Skin span.mce_charmap {background-position:-240px 0}
-.o2k7Skin span.mce_paste {background-position:-560px 0}
-.o2k7Skin span.mce_copy {background-position:-700px 0}
-.o2k7Skin span.mce_cut {background-position:-680px 0}
-.o2k7Skin span.mce_blockquote {background-position:-220px 0}
-.o2k7Skin .mce_forecolor span.mceAction {background-position:-720px 0}
-.o2k7Skin .mce_backcolor span.mceAction {background-position:-760px 0}
-.o2k7Skin span.mce_forecolorpicker {background-position:-720px 0}
-.o2k7Skin span.mce_backcolorpicker {background-position:-760px 0}
-
-/* Plugins */
-.o2k7Skin span.mce_advhr {background-position:-0px -20px}
-.o2k7Skin span.mce_ltr {background-position:-20px -20px}
-.o2k7Skin span.mce_rtl {background-position:-40px -20px}
-.o2k7Skin span.mce_emotions {background-position:-60px -20px}
-.o2k7Skin span.mce_fullpage {background-position:-80px -20px}
-.o2k7Skin span.mce_fullscreen {background-position:-100px -20px}
-.o2k7Skin span.mce_iespell {background-position:-120px -20px}
-.o2k7Skin span.mce_insertdate {background-position:-140px -20px}
-.o2k7Skin span.mce_inserttime {background-position:-160px -20px}
-.o2k7Skin span.mce_absolute {background-position:-180px -20px}
-.o2k7Skin span.mce_backward {background-position:-200px -20px}
-.o2k7Skin span.mce_forward {background-position:-220px -20px}
-.o2k7Skin span.mce_insert_layer {background-position:-240px -20px}
-.o2k7Skin span.mce_insertlayer {background-position:-260px -20px}
-.o2k7Skin span.mce_movebackward {background-position:-280px -20px}
-.o2k7Skin span.mce_moveforward {background-position:-300px -20px}
-.o2k7Skin span.mce_media {background-position:-320px -20px}
-.o2k7Skin span.mce_nonbreaking {background-position:-340px -20px}
-.o2k7Skin span.mce_pastetext {background-position:-360px -20px}
-.o2k7Skin span.mce_pasteword {background-position:-380px -20px}
-.o2k7Skin span.mce_selectall {background-position:-400px -20px}
-.o2k7Skin span.mce_preview {background-position:-420px -20px}
-.o2k7Skin span.mce_print {background-position:-440px -20px}
-.o2k7Skin span.mce_cancel {background-position:-460px -20px}
-.o2k7Skin span.mce_save {background-position:-480px -20px}
-.o2k7Skin span.mce_replace {background-position:-500px -20px}
-.o2k7Skin span.mce_search {background-position:-520px -20px}
-.o2k7Skin span.mce_styleprops {background-position:-560px -20px}
-.o2k7Skin span.mce_table {background-position:-580px -20px}
-.o2k7Skin span.mce_cell_props {background-position:-600px -20px}
-.o2k7Skin span.mce_delete_table {background-position:-620px -20px}
-.o2k7Skin span.mce_delete_col {background-position:-640px -20px}
-.o2k7Skin span.mce_delete_row {background-position:-660px -20px}
-.o2k7Skin span.mce_col_after {background-position:-680px -20px}
-.o2k7Skin span.mce_col_before {background-position:-700px -20px}
-.o2k7Skin span.mce_row_after {background-position:-720px -20px}
-.o2k7Skin span.mce_row_before {background-position:-740px -20px}
-.o2k7Skin span.mce_merge_cells {background-position:-760px -20px}
-.o2k7Skin span.mce_table_props {background-position:-980px -20px}
-.o2k7Skin span.mce_row_props {background-position:-780px -20px}
-.o2k7Skin span.mce_split_cells {background-position:-800px -20px}
-.o2k7Skin span.mce_template {background-position:-820px -20px}
-.o2k7Skin span.mce_visualchars {background-position:-840px -20px}
-.o2k7Skin span.mce_abbr {background-position:-860px -20px}
-.o2k7Skin span.mce_acronym {background-position:-880px -20px}
-.o2k7Skin span.mce_attribs {background-position:-900px -20px}
-.o2k7Skin span.mce_cite {background-position:-920px -20px}
-.o2k7Skin span.mce_del {background-position:-940px -20px}
-.o2k7Skin span.mce_ins {background-position:-960px -20px}
-.o2k7Skin span.mce_pagebreak {background-position:0 -40px}
-.o2k7Skin span.mce_restoredraft {background-position:-20px -40px}
-.o2k7Skin span.mce_spellchecker {background-position:-540px -20px}
-.o2k7Skin span.mce_visualblocks {background-position: -40px -40px}
diff --git a/program/js/tiny_mce/themes/advanced/skins/o2k7/ui_black.css b/program/js/tiny_mce/themes/advanced/skins/o2k7/ui_black.css
deleted file mode 100644
index 50c9b76a2..000000000
--- a/program/js/tiny_mce/themes/advanced/skins/o2k7/ui_black.css
+++ /dev/null
@@ -1,8 +0,0 @@
-/* Black */
-.o2k7SkinBlack .mceToolbar .mceToolbarStart span, .o2k7SkinBlack .mceToolbar .mceToolbarEnd span, .o2k7SkinBlack .mceButton, .o2k7SkinBlack .mceSplitButton, .o2k7SkinBlack .mceSeparator, .o2k7SkinBlack .mceSplitButton a.mceOpen, .o2k7SkinBlack .mceListBox a.mceOpen {background-image:url(img/button_bg_black.png)}
-.o2k7SkinBlack td.mceToolbar, .o2k7SkinBlack td.mceStatusbar, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack .mceMenuItemTitle span.mceText, .o2k7SkinBlack .mceStatusbar div, .o2k7SkinBlack .mceStatusbar span, .o2k7SkinBlack .mceStatusbar a {background:#535353; color:#FFF}
-.o2k7SkinBlack table.mceListBoxEnabled .mceText, o2k7SkinBlack .mceListBox .mceText {background:#FFF; border:1px solid #CBCFD4; border-bottom-color:#989FA9; border-right:0}
-.o2k7SkinBlack table.mceListBoxEnabled:hover .mceText, .o2k7SkinBlack .mceListBoxHover .mceText, .o2k7SkinBlack .mceListBoxSelected .mceText {background:#FFF; border:1px solid #FFBD69; border-right:0}
-.o2k7SkinBlack .mceExternalToolbar, .o2k7SkinBlack .mceListBox .mceText, .o2k7SkinBlack div.mceMenu, .o2k7SkinBlack table.mceLayout, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack table.mceLayout tr.mceFirst td, .o2k7SkinBlack table.mceLayout, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack table.mceLayout tr.mceLast td, .o2k7SkinBlack .mceIframeContainer {border-color: #535353;}
-.o2k7SkinBlack table.mceSplitButtonEnabled:hover a.mceAction, .o2k7SkinBlack .mceSplitButtonHover a.mceAction, .o2k7SkinBlack .mceSplitButtonSelected {background-image:url(img/button_bg_black.png)}
-.o2k7SkinBlack .mceMenu .mceMenuItemEnabled a:hover, .o2k7SkinBlack .mceMenu .mceMenuItemActive {background-color:#FFE7A1} \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css b/program/js/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css
deleted file mode 100644
index 960a8e475..000000000
--- a/program/js/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css
+++ /dev/null
@@ -1,5 +0,0 @@
-/* Silver */
-.o2k7SkinSilver .mceToolbar .mceToolbarStart span, .o2k7SkinSilver .mceButton, .o2k7SkinSilver .mceSplitButton, .o2k7SkinSilver .mceSeparator, .o2k7SkinSilver .mceSplitButton a.mceOpen, .o2k7SkinSilver .mceListBox a.mceOpen {background-image:url(img/button_bg_silver.png)}
-.o2k7SkinSilver td.mceToolbar, .o2k7SkinSilver td.mceStatusbar, .o2k7SkinSilver .mceMenuItemTitle a {background:#eee}
-.o2k7SkinSilver .mceListBox .mceText {background:#FFF}
-.o2k7SkinSilver .mceExternalToolbar, .o2k7SkinSilver .mceListBox .mceText, .o2k7SkinSilver div.mceMenu, .o2k7SkinSilver table.mceLayout, .o2k7SkinSilver .mceMenuItemTitle a, .o2k7SkinSilver table.mceLayout tr.mceFirst td, .o2k7SkinSilver table.mceLayout, .o2k7SkinSilver .mceMenuItemTitle a, .o2k7SkinSilver table.mceLayout tr.mceLast td, .o2k7SkinSilver .mceIframeContainer {border-color: #bbb}
diff --git a/program/js/tiny_mce/themes/advanced/source_editor.htm b/program/js/tiny_mce/themes/advanced/source_editor.htm
deleted file mode 100644
index dd973fcc0..000000000
--- a/program/js/tiny_mce/themes/advanced/source_editor.htm
+++ /dev/null
@@ -1,25 +0,0 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <title>{#advanced_dlg.code_title}</title>
- <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
- <script type="text/javascript" src="js/source_editor.js"></script>
-</head>
-<body onresize="resizeInputs();" style="display:none; overflow:hidden;" spellcheck="false">
- <form name="source" onsubmit="saveContent();return false;" action="#">
- <div style="float: left" class="title"><label for="htmlSource">{#advanced_dlg.code_title}</label></div>
-
- <div id="wrapline" style="float: right">
- <input type="checkbox" name="wraped" id="wraped" onclick="toggleWordWrap(this);" class="wordWrapCode" /><label for="wraped">{#advanced_dlg.code_wordwrap}</label>
- </div>
-
- <br style="clear: both" />
-
- <textarea name="htmlSource" id="htmlSource" rows="15" cols="100" style="width: 100%; height: 100%; font-family: 'Courier New',Courier,monospace; font-size: 12px;" dir="ltr" wrap="off" class="mceFocus"></textarea>
-
- <div class="mceActionPanel">
- <input type="submit" role="button" name="insert" value="{#update}" id="insert" />
- <input type="button" role="button" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" id="cancel" />
- </div>
- </form>
-</body>
-</html>
diff --git a/program/js/tiny_mce/themes/simple/editor_template.js b/program/js/tiny_mce/themes/simple/editor_template.js
deleted file mode 100644
index 4b3209cc9..000000000
--- a/program/js/tiny_mce/themes/simple/editor_template.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(){var a=tinymce.DOM;tinymce.ThemeManager.requireLangPack("simple");tinymce.create("tinymce.themes.SimpleTheme",{init:function(c,d){var e=this,b=["Bold","Italic","Underline","Strikethrough","InsertUnorderedList","InsertOrderedList"],f=c.settings;e.editor=c;c.contentCSS.push(d+"/skins/"+f.skin+"/content.css");c.onInit.add(function(){c.onNodeChange.add(function(h,g){tinymce.each(b,function(i){g.get(i.toLowerCase()).setActive(h.queryCommandState(i))})})});a.loadCSS((f.editor_css?c.documentBaseURI.toAbsolute(f.editor_css):"")||d+"/skins/"+f.skin+"/ui.css")},renderUI:function(h){var e=this,i=h.targetNode,b,c,d=e.editor,f=d.controlManager,g;i=a.insertAfter(a.create("span",{id:d.id+"_container","class":"mceEditor "+d.settings.skin+"SimpleSkin"}),i);i=g=a.add(i,"table",{cellPadding:0,cellSpacing:0,"class":"mceLayout"});i=c=a.add(i,"tbody");i=a.add(c,"tr");i=b=a.add(a.add(i,"td"),"div",{"class":"mceIframeContainer"});i=a.add(a.add(c,"tr",{"class":"last"}),"td",{"class":"mceToolbar mceLast",align:"center"});c=e.toolbar=f.createToolbar("tools1");c.add(f.createButton("bold",{title:"simple.bold_desc",cmd:"Bold"}));c.add(f.createButton("italic",{title:"simple.italic_desc",cmd:"Italic"}));c.add(f.createButton("underline",{title:"simple.underline_desc",cmd:"Underline"}));c.add(f.createButton("strikethrough",{title:"simple.striketrough_desc",cmd:"Strikethrough"}));c.add(f.createSeparator());c.add(f.createButton("undo",{title:"simple.undo_desc",cmd:"Undo"}));c.add(f.createButton("redo",{title:"simple.redo_desc",cmd:"Redo"}));c.add(f.createSeparator());c.add(f.createButton("cleanup",{title:"simple.cleanup_desc",cmd:"mceCleanup"}));c.add(f.createSeparator());c.add(f.createButton("insertunorderedlist",{title:"simple.bullist_desc",cmd:"InsertUnorderedList"}));c.add(f.createButton("insertorderedlist",{title:"simple.numlist_desc",cmd:"InsertOrderedList"}));c.renderTo(i);return{iframeContainer:b,editorContainer:d.id+"_container",sizeContainer:g,deltaHeight:-20}},getInfo:function(){return{longname:"Simple theme",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.ThemeManager.add("simple",tinymce.themes.SimpleTheme)})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/editor_template_src.js b/program/js/tiny_mce/themes/simple/editor_template_src.js
deleted file mode 100644
index 01ce87c58..000000000
--- a/program/js/tiny_mce/themes/simple/editor_template_src.js
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
- * editor_template_src.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-(function() {
- var DOM = tinymce.DOM;
-
- // Tell it to load theme specific language pack(s)
- tinymce.ThemeManager.requireLangPack('simple');
-
- tinymce.create('tinymce.themes.SimpleTheme', {
- init : function(ed, url) {
- var t = this, states = ['Bold', 'Italic', 'Underline', 'Strikethrough', 'InsertUnorderedList', 'InsertOrderedList'], s = ed.settings;
-
- t.editor = ed;
- ed.contentCSS.push(url + "/skins/" + s.skin + "/content.css");
-
- ed.onInit.add(function() {
- ed.onNodeChange.add(function(ed, cm) {
- tinymce.each(states, function(c) {
- cm.get(c.toLowerCase()).setActive(ed.queryCommandState(c));
- });
- });
- });
-
- DOM.loadCSS((s.editor_css ? ed.documentBaseURI.toAbsolute(s.editor_css) : '') || url + "/skins/" + s.skin + "/ui.css");
- },
-
- renderUI : function(o) {
- var t = this, n = o.targetNode, ic, tb, ed = t.editor, cf = ed.controlManager, sc;
-
- n = DOM.insertAfter(DOM.create('span', {id : ed.id + '_container', 'class' : 'mceEditor ' + ed.settings.skin + 'SimpleSkin'}), n);
- n = sc = DOM.add(n, 'table', {cellPadding : 0, cellSpacing : 0, 'class' : 'mceLayout'});
- n = tb = DOM.add(n, 'tbody');
-
- // Create iframe container
- n = DOM.add(tb, 'tr');
- n = ic = DOM.add(DOM.add(n, 'td'), 'div', {'class' : 'mceIframeContainer'});
-
- // Create toolbar container
- n = DOM.add(DOM.add(tb, 'tr', {'class' : 'last'}), 'td', {'class' : 'mceToolbar mceLast', align : 'center'});
-
- // Create toolbar
- tb = t.toolbar = cf.createToolbar("tools1");
- tb.add(cf.createButton('bold', {title : 'simple.bold_desc', cmd : 'Bold'}));
- tb.add(cf.createButton('italic', {title : 'simple.italic_desc', cmd : 'Italic'}));
- tb.add(cf.createButton('underline', {title : 'simple.underline_desc', cmd : 'Underline'}));
- tb.add(cf.createButton('strikethrough', {title : 'simple.striketrough_desc', cmd : 'Strikethrough'}));
- tb.add(cf.createSeparator());
- tb.add(cf.createButton('undo', {title : 'simple.undo_desc', cmd : 'Undo'}));
- tb.add(cf.createButton('redo', {title : 'simple.redo_desc', cmd : 'Redo'}));
- tb.add(cf.createSeparator());
- tb.add(cf.createButton('cleanup', {title : 'simple.cleanup_desc', cmd : 'mceCleanup'}));
- tb.add(cf.createSeparator());
- tb.add(cf.createButton('insertunorderedlist', {title : 'simple.bullist_desc', cmd : 'InsertUnorderedList'}));
- tb.add(cf.createButton('insertorderedlist', {title : 'simple.numlist_desc', cmd : 'InsertOrderedList'}));
- tb.renderTo(n);
-
- return {
- iframeContainer : ic,
- editorContainer : ed.id + '_container',
- sizeContainer : sc,
- deltaHeight : -20
- };
- },
-
- getInfo : function() {
- return {
- longname : 'Simple theme',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- version : tinymce.majorVersion + "." + tinymce.minorVersion
- }
- }
- });
-
- tinymce.ThemeManager.add('simple', tinymce.themes.SimpleTheme);
-})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/img/icons.gif b/program/js/tiny_mce/themes/simple/img/icons.gif
deleted file mode 100644
index 6fcbcb5de..000000000
--- a/program/js/tiny_mce/themes/simple/img/icons.gif
+++ /dev/null
Binary files differ
diff --git a/program/js/tiny_mce/themes/simple/langs/ar.js b/program/js/tiny_mce/themes/simple/langs/ar.js
deleted file mode 100644
index f16c58033..000000000
--- a/program/js/tiny_mce/themes/simple/langs/ar.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ar.simple',{"cleanup_desc":"\u0631\u0645\u0632 \u062a\u0646\u0638\u064a\u0641 \u0627\u0644\u0641\u0648\u0636\u0649","redo_desc":"\u0627\u0644\u0625\u0639\u0627\u062f\u0629 (Ctrl+Y)","undo_desc":"\u062a\u0631\u0627\u062c\u0639 (Ctrl+Z)","numlist_desc":"\u0642\u0627\u0626\u0645\u0629 \u0645\u0631\u062a\u0628\u0629","bullist_desc":"\u0642\u0627\u0626\u0645\u0629 \u063a\u064a\u0631 \u0645\u0631\u062a\u0628\u0629","striketrough_desc":"\u062a\u0648\u0633\u064a\u0637 \u0628\u062e\u0637","underline_desc":"\u062a\u0633\u0637\u064a\u0631 (Ctrl+U)","italic_desc":"\u0645\u0627\u0626\u0644 (Ctrl+I)","bold_desc":"\u0639\u0631\u064a\u0636 (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/az.js b/program/js/tiny_mce/themes/simple/langs/az.js
deleted file mode 100644
index 3523e1f61..000000000
--- a/program/js/tiny_mce/themes/simple/langs/az.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('az.simple',{"cleanup_desc":"\u018fyri kodu t\u0259mizl\u0259","redo_desc":"T\u0259krarla (Ctrl+Y)","undo_desc":"L\u0259\u011fv et (Ctrl+Z)","numlist_desc":"N\u00f6mr\u0259l\u0259nmi\u015f siyah\u0131","bullist_desc":"Qeyd edilmi\u015f siyah\u0131","striketrough_desc":"Qaralanm\u0131\u015f","underline_desc":"Altdan x\u0259tt (Ctrl+U)","italic_desc":"Kursiv (Ctrl+I)","bold_desc":"Yar\u0131qal\u0131n (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/bg.js b/program/js/tiny_mce/themes/simple/langs/bg.js
deleted file mode 100644
index 6aca15ab8..000000000
--- a/program/js/tiny_mce/themes/simple/langs/bg.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bg.simple',{"cleanup_desc":"\u0418\u0437\u0447\u0438\u0441\u0442\u0438 \u043a\u043e\u0434\u0430","redo_desc":"\u0412\u044a\u0437\u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0432\u0430\u043d\u0435 (Ctrl+Y)","undo_desc":"\u041e\u0442\u043c\u044f\u043d\u0430 (Ctrl+Z)","numlist_desc":"\u041d\u043e\u043c\u0435\u0440\u0430","bullist_desc":"\u0412\u043e\u0434\u0430\u0447\u0438","striketrough_desc":"\u0417\u0430\u0447\u0435\u0440\u0442\u0430\u043d","underline_desc":"\u041f\u043e\u0434\u0447\u0435\u0440\u0442\u0430\u043d (Ctrl+U)","italic_desc":"\u041a\u0443\u0440\u0441\u0438\u0432 (Ctrl+I)","bold_desc":"\u041f\u043e\u043b\u0443\u0447\u0435\u0440 (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/bn.js b/program/js/tiny_mce/themes/simple/langs/bn.js
deleted file mode 100644
index eba13f26d..000000000
--- a/program/js/tiny_mce/themes/simple/langs/bn.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bn.simple',{"cleanup_desc":"\u0985\u09aa\u09b0\u09bf\u099a\u09cd\u099b\u09a8\u09cd\u09a8 \u0995\u09cb\u09a1 \u09aa\u09b0\u09bf\u09b7\u09cd\u0995\u09be\u09b0 \u0995\u09b0 ","redo_desc":"\u09b0\u09bf\u09a1\u09c1 (Ctrl+Y)","undo_desc":"\u0986\u09a8\u09a1\u09c1 (Ctrl+Z)","numlist_desc":"\u0985\u09b0\u09cd\u09a1\u09be\u09b0\u09a1 \u09b2\u09bf\u09b8\u09cd\u099f","bullist_desc":"\u0986\u09a8\u0985\u09b0\u09cd\u09a1\u09be\u09b0\u09a1 \u09b2\u09bf\u09b8\u09cd\u099f","striketrough_desc":"\u09ae\u09be\u099d \u09ac\u09b0\u09be\u09ac\u09b0 \u09b0\u09c7\u0996\u09be\u0999\u09cd\u0995\u09a8","underline_desc":"\u0986\u09a8\u09cd\u09a1\u09be\u09b0\u09b2\u09be\u0987\u09a8 (Ctrl+U)","italic_desc":"\u0987\u099f\u09be\u09b2\u09bf\u0995 (Ctrl+I)","bold_desc":"\u09ac\u09cb\u09b2\u09cd\u09a1 (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/br.js b/program/js/tiny_mce/themes/simple/langs/br.js
deleted file mode 100644
index 65358cc8f..000000000
--- a/program/js/tiny_mce/themes/simple/langs/br.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('br.simple',{"cleanup_desc":"Limpar c\u00f3digo incorreto","redo_desc":"Refazer (Ctrl+Y)","undo_desc":"Desfazer (Ctrl+Z)","numlist_desc":"Lista ordenada","bullist_desc":"Lista n\u00e3o-ordenada","striketrough_desc":"Riscado","underline_desc":"Sublinhado (Ctrl+U)","italic_desc":"It\u00e1lico (Ctrl+I)","bold_desc":"Negrito (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/bs.js b/program/js/tiny_mce/themes/simple/langs/bs.js
deleted file mode 100644
index aa6ce90d8..000000000
--- a/program/js/tiny_mce/themes/simple/langs/bs.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('bs.simple',{"cleanup_desc":"Po\u010disti kod","redo_desc":"Ponovi (Ctrl+Y)","undo_desc":"Poni\u0161ti (Ctrl+Z)","numlist_desc":"Ure\u0111ena lista","bullist_desc":"Neure\u0111ena lista","striketrough_desc":"Precrtaj","underline_desc":"Podcrtaj (Ctrl+U)","italic_desc":"Kurziv (Ctrl+I)","bold_desc":"Podebljaj (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/ca.js b/program/js/tiny_mce/themes/simple/langs/ca.js
deleted file mode 100644
index 7b4c14372..000000000
--- a/program/js/tiny_mce/themes/simple/langs/ca.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ca.simple',{"cleanup_desc":"Poleix el codi","redo_desc":"Ref\u00e9s (Ctrl+Y)","undo_desc":"Desf\u00e9s (Ctrl+Z)","numlist_desc":"Llista numerada","bullist_desc":"Llista sense numeraci\u00f3","striketrough_desc":"Barrat","underline_desc":"Subratllat (Ctrl+U)","italic_desc":"Cursiva (Ctrl+I)","bold_desc":"Negreta (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/cs.js b/program/js/tiny_mce/themes/simple/langs/cs.js
deleted file mode 100644
index 1be2fd656..000000000
--- a/program/js/tiny_mce/themes/simple/langs/cs.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('cs.simple',{"cleanup_desc":"Vy\u010distit k\u00f3d","redo_desc":"Znovu (Ctrl+Y)","undo_desc":"Zp\u011bt (Ctrl+Z)","numlist_desc":"\u010c\u00edslovan\u00fd seznam","bullist_desc":"Seznam s odr\u00e1\u017ekami","striketrough_desc":"P\u0159e\u0161krtnut\u00e9","underline_desc":"Podtr\u017een\u00e9 (Ctrl+U)","italic_desc":"Kurz\u00edva (Ctrl+I)","bold_desc":"Tu\u010dn\u00e9 (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/cy.js b/program/js/tiny_mce/themes/simple/langs/cy.js
deleted file mode 100644
index 473b43695..000000000
--- a/program/js/tiny_mce/themes/simple/langs/cy.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('cy.simple',{"cleanup_desc":"Glanhau c\u00f4d anhrefnus","redo_desc":"Ailwneud (Ctrl+Y)","undo_desc":"Dadwneud (Ctrl+Z)","numlist_desc":"Rhestr trenus","bullist_desc":"Rhestr didrenus","striketrough_desc":"Taro drwodd","underline_desc":"Tanlinellu (Ctrl+U)","italic_desc":"Italig (Ctrl+I)","bold_desc":"Trwm (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/da.js b/program/js/tiny_mce/themes/simple/langs/da.js
deleted file mode 100644
index 92de7a76a..000000000
--- a/program/js/tiny_mce/themes/simple/langs/da.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('da.simple',{"cleanup_desc":"Ryd op i uordentlig kode","redo_desc":"Gendan (Ctrl+Y)","undo_desc":"Fortryd (Ctrl+Z)","numlist_desc":"Nummereret punktopstilling","bullist_desc":"Unummereret punktopstilling","striketrough_desc":"Gennemstreget","underline_desc":"Understreget (Ctrl+U)","italic_desc":"Kursiv (Ctrl+I)","bold_desc":"Fed (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/de.js b/program/js/tiny_mce/themes/simple/langs/de.js
deleted file mode 100644
index 59bf788d2..000000000
--- a/program/js/tiny_mce/themes/simple/langs/de.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('de.simple',{"cleanup_desc":"Quellcode aufr\u00e4umen","redo_desc":"Wiederholen (Strg+Y)","undo_desc":"R\u00fcckg\u00e4ngig (Strg+Z)","numlist_desc":"Nummerierung","bullist_desc":"Aufz\u00e4hlung","striketrough_desc":"Durchgestrichen","underline_desc":"Unterstrichen (Strg+U)","italic_desc":"Kursiv (Strg+I)","bold_desc":"Fett (Strg+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/el.js b/program/js/tiny_mce/themes/simple/langs/el.js
deleted file mode 100644
index c7554b86b..000000000
--- a/program/js/tiny_mce/themes/simple/langs/el.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('el.simple',{"cleanup_desc":"\u039a\u03b1\u03b8\u03b1\u03c1\u03b9\u03c3\u03bc\u03cc\u03c2 \u03bc\u03c0\u03b5\u03c1\u03b4\u03b5\u03bc\u03ad\u03bd\u03bf\u03c5 \u03ba\u03ce\u03b4\u03b9\u03ba\u03b1","redo_desc":"\u0395\u03c0\u03b1\u03bd\u03ac\u03bb\u03b7\u03c8\u03b7 (Ctrl+Y)","undo_desc":"\u0391\u03bd\u03b1\u03af\u03c1\u03b5\u03c3\u03b7 (Ctrl+Z)","numlist_desc":"\u039b\u03af\u03c3\u03c4\u03b1 \u03bc\u03b5 \u03c3\u03b5\u03b9\u03c1\u03ac","bullist_desc":"\u039b\u03af\u03c3\u03c4\u03b1 \u03c7\u03c9\u03c1\u03af\u03c2 \u03c3\u03b5\u03b9\u03c1\u03ac","striketrough_desc":"\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03bc\u03bc\u03b9\u03c3\u03bc\u03ad\u03bd\u03b1","underline_desc":"\u03a5\u03c0\u03bf\u03b3\u03c1\u03b1\u03bc\u03bc\u03b9\u03c3\u03bc\u03ad\u03bd\u03b1 (Ctrl+U)","italic_desc":"\u03a0\u03bb\u03ac\u03b3\u03b9\u03b1 (Ctrl+I)","bold_desc":"\u0388\u03bd\u03c4\u03bf\u03bd\u03b1 (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/en.js b/program/js/tiny_mce/themes/simple/langs/en.js
deleted file mode 100644
index 088ed0fcb..000000000
--- a/program/js/tiny_mce/themes/simple/langs/en.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('en.simple',{"cleanup_desc":"Cleanup Messy Code","redo_desc":"Redo (Ctrl+Y)","undo_desc":"Undo (Ctrl+Z)","numlist_desc":"Insert/Remove Numbered List","bullist_desc":"Insert/Remove Bulleted List","striketrough_desc":"Strikethrough","underline_desc":"Underline (Ctrl+U)","italic_desc":"Italic (Ctrl+I)","bold_desc":"Bold (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/eo.js b/program/js/tiny_mce/themes/simple/langs/eo.js
deleted file mode 100644
index 1d59bd9c9..000000000
--- a/program/js/tiny_mce/themes/simple/langs/eo.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('eo.simple',{"cleanup_desc":"Senrubigi mal\u011dustan kodon","redo_desc":"Refari (Ctrl Y)","undo_desc":"Malfari (Ctrl Z)","numlist_desc":"Numera listo","bullist_desc":"Bula listo","striketrough_desc":"Strekita","underline_desc":"Substrekita (Ctrl U)","italic_desc":"Kursiva (Ctrl I)","bold_desc":"Grasa (Ctrl B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/es.js b/program/js/tiny_mce/themes/simple/langs/es.js
deleted file mode 100644
index 0fc0311e3..000000000
--- a/program/js/tiny_mce/themes/simple/langs/es.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('es.simple',{"cleanup_desc":"Limpiar c\u00f3digo basura","redo_desc":"Rehacer (Ctrl+Y)","undo_desc":"Deshacer (Ctrl+Z)","numlist_desc":"Lista ordenada","bullist_desc":"Lista desordenada","striketrough_desc":"Tachado","underline_desc":"Subrayado (Ctrl+U)","italic_desc":"Cursiva (Ctrl+I)","bold_desc":"Negrita (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/et.js b/program/js/tiny_mce/themes/simple/langs/et.js
deleted file mode 100644
index ec105a538..000000000
--- a/program/js/tiny_mce/themes/simple/langs/et.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('et.simple',{"cleanup_desc":"Puhasta segane kood","redo_desc":"Tee uuesti (Ctrl+Y)","undo_desc":"V\u00f5ta tagasi (Ctrl+Z)","numlist_desc":"Korrap\u00e4rane loetelu","bullist_desc":"Ebakorrap\u00e4rane loetelu","striketrough_desc":"L\u00e4bijoonitud","underline_desc":"Allajoonitud (Ctrl+U)","italic_desc":"Kursiiv (Ctrl+I)","bold_desc":"Rasvane (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/eu.js b/program/js/tiny_mce/themes/simple/langs/eu.js
deleted file mode 100644
index 0b78f7c75..000000000
--- a/program/js/tiny_mce/themes/simple/langs/eu.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('eu.simple',{"cleanup_desc":"Kode zikina garbitu","redo_desc":"Berregin (Ctrl+Y)","undo_desc":"Desegin (Ctrl+Z)","numlist_desc":"Zerrenda ordenatua","bullist_desc":"Zerrenda","striketrough_desc":"Gainetik marra duena","underline_desc":"Azpimarratua (Ctrl+U)","italic_desc":"Etzana (Ctrl+I)","bold_desc":"Beltza (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/fa.js b/program/js/tiny_mce/themes/simple/langs/fa.js
deleted file mode 100644
index 7351bb256..000000000
--- a/program/js/tiny_mce/themes/simple/langs/fa.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fa.simple',{"cleanup_desc":"\u067e\u0627\u06a9 \u0633\u0627\u0632\u06cc \u06a9\u062f \u0647\u0627\u06cc \u0628\u0647\u0645 \u062e\u0648\u0631\u062f\u0647","redo_desc":"\u0631\u0641\u062a\u0646 \u0628\u0647 \u0639\u0645\u0644 \u0628\u0639\u062f (Ctrl Y)","undo_desc":"\u0628\u0627\u0632\u06af\u0634\u062a \u0628\u0647 \u0639\u0645\u0644 \u0642\u0628\u0644 (Ctrl Z)","numlist_desc":"\u0644\u06cc\u0633\u062a \u0645\u0631\u062a\u0628","bullist_desc":"\u0644\u06cc\u0633\u062a \u0646\u0627\u0645\u0631\u062a\u0628","striketrough_desc":"\u062e\u0637 \u0648\u0633\u0637","underline_desc":"\u0645\u062a\u0646 \u0632\u06cc\u0631 \u062e\u0637 \u062f\u0627\u0631 (Ctrl+U)","italic_desc":"\u0645\u062a\u0646 \u0645\u0648\u0631\u0628 (Ctrl+I)","bold_desc":"\u0645\u062a\u0646 \u0636\u062e\u06cc\u0645 (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/fi.js b/program/js/tiny_mce/themes/simple/langs/fi.js
deleted file mode 100644
index 6ca1d8d10..000000000
--- a/program/js/tiny_mce/themes/simple/langs/fi.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fi.simple',{"cleanup_desc":"Siisti sekainen koodi","redo_desc":"Tee uudestaan (Ctrl+Y)","undo_desc":"Peru (Ctrl+Z)","numlist_desc":"J\u00e4rjestetty lista","bullist_desc":"J\u00e4rjest\u00e4m\u00e4t\u00f6n lista","striketrough_desc":"Yliviivaus","underline_desc":"Alleviivaus (Ctrl+U)","italic_desc":"Kursivointi (Ctrl+I)","bold_desc":"Lihavointi (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/fr.js b/program/js/tiny_mce/themes/simple/langs/fr.js
deleted file mode 100644
index ebe964e1e..000000000
--- a/program/js/tiny_mce/themes/simple/langs/fr.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('fr.simple',{"cleanup_desc":"Nettoyer le code","redo_desc":"R\u00e9tablir (Ctrl+Y)","undo_desc":"Annuler (Ctrl+Z)","numlist_desc":"Liste num\u00e9rot\u00e9e","bullist_desc":"Liste \u00e0 puces","striketrough_desc":"Barr\u00e9","underline_desc":"Soulign\u00e9 (Ctrl+U)","italic_desc":"Italique (Ctrl+I)","bold_desc":"Gras (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/gl.js b/program/js/tiny_mce/themes/simple/langs/gl.js
deleted file mode 100644
index bc7d20596..000000000
--- a/program/js/tiny_mce/themes/simple/langs/gl.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('gl.simple',{"cleanup_desc":"Limpar lixo no c\u00f3digo","redo_desc":"Re-facer (Ctrl+Y)","undo_desc":"Desfacer (Ctrl+Z)","numlist_desc":"Lista ordenada","bullist_desc":"Lista desordenada","striketrough_desc":"Tachado","underline_desc":"Suli\u00f1ado (Ctrl+U)","italic_desc":"Cursiva (Ctrl+I)","bold_desc":"Negri\u00f1a (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/he.js b/program/js/tiny_mce/themes/simple/langs/he.js
deleted file mode 100644
index ade41a112..000000000
--- a/program/js/tiny_mce/themes/simple/langs/he.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('he.simple',{"cleanup_desc":"\u05e0\u05e7\u05d4 \u05e7\u05d5\u05d3","redo_desc":" (Ctrl+Y)","undo_desc":"\u05d1\u05d9\u05d8\u05d5\u05dc \u05e4\u05e2\u05d5\u05dc\u05d4 (Ctrl+Z)","numlist_desc":"\u05de\u05e1\u05e4\u05d5\u05e8","bullist_desc":"\u05ea\u05d1\u05dc\u05d9\u05d8\u05d9\u05dd","striketrough_desc":"\u05e7\u05d5 \u05d7\u05d5\u05e6\u05d4","underline_desc":"\u05e7\u05d5 \u05ea\u05d7\u05ea\u05d5\u05df (Ctrl+U)","italic_desc":"\u05e0\u05d8\u05d5\u05d9 (Ctrl+I)","bold_desc":"\u05de\u05d5\u05d3\u05d2\u05e9 (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/hi.js b/program/js/tiny_mce/themes/simple/langs/hi.js
deleted file mode 100644
index 88c14c539..000000000
--- a/program/js/tiny_mce/themes/simple/langs/hi.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hi.simple',{"cleanup_desc":"Cleanup messy code","redo_desc":"Redo (Ctrl+Y)","undo_desc":"Undo (Ctrl+Z)","numlist_desc":"Ordered list","bullist_desc":"Unordered list","striketrough_desc":"Strikethrough","underline_desc":"Underline (Ctrl+U)","italic_desc":"Italic (Ctrl+I)","bold_desc":"Bold (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/hr.js b/program/js/tiny_mce/themes/simple/langs/hr.js
deleted file mode 100644
index 38c59b0a3..000000000
--- a/program/js/tiny_mce/themes/simple/langs/hr.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hr.simple',{"cleanup_desc":"Po\u010disti neuredni kod","redo_desc":"Ponovi (Ctrl+Y)","undo_desc":"Poni\u0161ti (Ctrl+Z)","numlist_desc":"Numerirana lista","bullist_desc":"Nenumerirana lista","striketrough_desc":"Precrtano","underline_desc":"Podcrtano (Ctrl U)","italic_desc":"Uko\u0161eno (Ctrl I)","bold_desc":"Podebljano (Ctrl B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/hu.js b/program/js/tiny_mce/themes/simple/langs/hu.js
deleted file mode 100644
index 169722a44..000000000
--- a/program/js/tiny_mce/themes/simple/langs/hu.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hu.simple',{"cleanup_desc":"Minden form\u00e1z\u00e1s elt\u00e1vol\u00edt\u00e1sa","redo_desc":"M\u00e9gis v\u00e9grehajt (Ctrl+Y)","undo_desc":"Visszavon\u00e1s (Ctrl+Z)","numlist_desc":"Rendezett lista","bullist_desc":"Rendezetlen lista","striketrough_desc":"\u00c1th\u00fazott","underline_desc":"Al\u00e1h\u00fazott (Ctrl+U)","italic_desc":"D\u0151lt (Ctrl+I)","bold_desc":"F\u00e9lk\u00f6v\u00e9r (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/hy.js b/program/js/tiny_mce/themes/simple/langs/hy.js
deleted file mode 100644
index f31febe8b..000000000
--- a/program/js/tiny_mce/themes/simple/langs/hy.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('hy.simple',{"cleanup_desc":"\u0540\u0565\u057c\u0561\u0581\u0576\u0565\u056c \u0561\u057e\u0565\u056c\u0578\u0580\u0564 \u056f\u0578\u0564\u0568","redo_desc":"\u0531\u057c\u0561\u057b (Ctrl + Y)","undo_desc":"\u0535\u057f (Ctrl + Z)","numlist_desc":"\u0551\u0561\u0576\u056f\u055d \u0570\u0561\u0574\u0561\u0580\u0561\u056f\u0561\u056c\u057e\u0561\u056e","bullist_desc":"\u0551\u0561\u0576\u056f","striketrough_desc":"\u0531\u0580\u057f\u0561\u0563\u056e\u057e\u0561\u056e","underline_desc":"\u0538\u0576\u0564\u0563\u056e\u057e\u0561\u056e (Ctrl + U)","italic_desc":"\u0547\u0565\u0572 (Ctrl + I)","bold_desc":"\u0540\u0561\u057d\u057f (Ctrl + B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/id.js b/program/js/tiny_mce/themes/simple/langs/id.js
deleted file mode 100644
index ef37c5e04..000000000
--- a/program/js/tiny_mce/themes/simple/langs/id.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('id.simple',{"cleanup_desc":"Cleanup messy code","redo_desc":"Redo (Ctrl+Y)","undo_desc":"Undo (Ctrl+Z)","numlist_desc":"Ordered list","bullist_desc":"Unordered list","striketrough_desc":"Strikethrough","underline_desc":"Underline (Ctrl+U)","italic_desc":"Italic (Ctrl+I)","bold_desc":"Bold (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/is.js b/program/js/tiny_mce/themes/simple/langs/is.js
deleted file mode 100644
index f4023f8c5..000000000
--- a/program/js/tiny_mce/themes/simple/langs/is.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('is.simple',{"cleanup_desc":"Hreinsa ruslk\u00f3\u00f0a","redo_desc":"Endurtaka (Ctrl+Y)","undo_desc":"Taka til baka (Ctrl+Z)","numlist_desc":"N\u00famera\u00f0ur listi","bullist_desc":"B\u00f3lulisti","striketrough_desc":"Yfirstrika\u00f0","underline_desc":"Undirstrika\u00f0 (Ctrl+U)","italic_desc":"Sk\u00e1letra\u00f0 (Ctrl+I)","bold_desc":"Feitletra\u00f0 (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/it.js b/program/js/tiny_mce/themes/simple/langs/it.js
deleted file mode 100644
index e0c45ed54..000000000
--- a/program/js/tiny_mce/themes/simple/langs/it.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('it.simple',{"cleanup_desc":"Pulisci codice disordinato","redo_desc":"Ripristina (Ctrl+Y)","undo_desc":"Annulla (Ctrl+Z)","numlist_desc":"Lista ordinata","bullist_desc":"Lista non ordinata","striketrough_desc":"Barrato","underline_desc":"Sottolineato (Ctrl+U)","italic_desc":"Corsivo (Ctrl+I)","bold_desc":"Grassetto (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/ja.js b/program/js/tiny_mce/themes/simple/langs/ja.js
deleted file mode 100644
index b3acbb546..000000000
--- a/program/js/tiny_mce/themes/simple/langs/ja.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ja.simple',{"cleanup_desc":"\u4e71\u96d1\u306a\u30b3\u30fc\u30c9\u3092\u6574\u5f62","redo_desc":"\u3084\u308a\u76f4\u3059 (Ctrl+Y)","undo_desc":"\u5143\u306b\u623b\u3059 (Ctrl+Z)","numlist_desc":"\u756a\u53f7\u3064\u304d\u30ea\u30b9\u30c8","bullist_desc":"\u756a\u53f7\u306a\u3057\u30ea\u30b9\u30c8","striketrough_desc":"\u53d6\u308a\u6d88\u3057\u7dda","underline_desc":"\u4e0b\u7dda (Ctrl+U)","italic_desc":"\u659c\u4f53 (Ctrl+I)","bold_desc":"\u592a\u5b57 (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/ka.js b/program/js/tiny_mce/themes/simple/langs/ka.js
deleted file mode 100644
index 5932df889..000000000
--- a/program/js/tiny_mce/themes/simple/langs/ka.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ka.simple',{"cleanup_desc":"\u10d6\u10d4\u10d3\u10db\u10d4\u10e2\u10d8 \u10d9\u10dd\u10d3\u10d8\u10e1 \u10db\u10dd\u10ea\u10d8\u10da\u10d4\u10d1\u10d0","redo_desc":"\u10d3\u10d0\u10d1\u10e0\u10e3\u10dc\u10d4\u10d1\u10d0 (Ctrl+Y)","undo_desc":"\u10d2\u10d0\u10e3\u10d6\u10db\u10d4\u10d1\u10d0 (Ctrl+Z)","numlist_desc":"\u10d3\u10d0\u10dc\u10dd\u10db\u10e0\u10d8\u10da\u10d8 \u10e1\u10d8\u10d0","bullist_desc":"\u10db\u10d0\u10e0\u10d9\u10d8\u10e0\u10d4\u10d1\u10e3\u10da\u10d8 \u10e1\u10d8\u10d0","striketrough_desc":"\u10d2\u10d0\u10d3\u10d0\u10ee\u10d0\u10d6\u10e3\u10da\u10d8","underline_desc":"\u10db\u10dd\u10ee\u10d0\u10d6\u10e3\u10da\u10d8 (Ctrl+U)","italic_desc":"\u10d3\u10d0\u10ee\u10e0\u10d8\u10da\u10d8 (Ctrl+I)","bold_desc":"\u10e1\u10e5\u10d4\u10da\u10d8 (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/ko.js b/program/js/tiny_mce/themes/simple/langs/ko.js
deleted file mode 100644
index 6012a7107..000000000
--- a/program/js/tiny_mce/themes/simple/langs/ko.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ko.simple',{"cleanup_desc":"\ubcf5\uc7a1\ud55c \ucf54\ub4dc \uc815\ub9ac","redo_desc":"\uc7ac\uc2e4\ud589(Ctrl Y)","undo_desc":"\uc2e4\ud589 \ucde8\uc18c(Ctrl Z)","numlist_desc":"\ubc88\ud638 \ubaa9\ub85d \uc0bd\uc785/\uc81c\uac70","bullist_desc":"\uae30\ud638 \ubaa9\ub85d \uc0bd\uc785/\uc81c\uac70","striketrough_desc":"\ucde8\uc18c\uc120","underline_desc":"\ubc11\uc904(Ctrl+U)","italic_desc":"\uae30\uc6b8\uc778 \uae00\uaf34(Ctrl I)","bold_desc":"\uad75\uc740 \uae00\uaf34(Ctrl B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/lt.js b/program/js/tiny_mce/themes/simple/langs/lt.js
deleted file mode 100644
index 97d45a672..000000000
--- a/program/js/tiny_mce/themes/simple/langs/lt.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('lt.simple',{"cleanup_desc":"I\u0161valyti netvarking\u0105 kod\u0105","redo_desc":"Gr\u0105\u017einti (Ctrl+Y)","undo_desc":"At\u0161aukti (Ctrl+Z)","numlist_desc":"Sunumeruotas s\u0105ra\u0161as","bullist_desc":"Nesunumeruotas s\u0105ra\u0161as","striketrough_desc":"Perbrauktas","underline_desc":"Pabrauktas (Ctrl+U)","italic_desc":"Kursyvas (Ctrl+I)","bold_desc":"Pusjuodis (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/lv.js b/program/js/tiny_mce/themes/simple/langs/lv.js
deleted file mode 100644
index 12f7db224..000000000
--- a/program/js/tiny_mce/themes/simple/langs/lv.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('lv.simple',{"cleanup_desc":"Izt\u012br\u012bt nek\u0101rt\u012bgu kodu","redo_desc":"Atatsaukt (Ctrl+Y)","undo_desc":"Atsaukt (Ctrl+Z)","numlist_desc":"Numur\u0113ts saraksts","bullist_desc":"Nenumur\u0113ts saraksts","striketrough_desc":"P\u0101rsv\u012btrojums","underline_desc":"Pasv\u012btrojums (Ctrl+U)","italic_desc":"Sl\u012bpraksts (Ctrl+I)","bold_desc":"Treknraksts (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/mk.js b/program/js/tiny_mce/themes/simple/langs/mk.js
deleted file mode 100644
index c2a28dfe1..000000000
--- a/program/js/tiny_mce/themes/simple/langs/mk.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('mk.simple',{"cleanup_desc":"\u0421\u0440\u0435\u0434\u0438 \u0433\u043e \u043a\u043e\u0434\u043e\u0442","redo_desc":"\u041f\u043e\u0432\u0442\u043e\u0440\u0438 (Ctrl Y)","undo_desc":"\u0412\u0440\u0430\u0442\u0438 (Ctrl Z)","numlist_desc":"\u0412\u043d\u0435\u0441\u0438/\u043e\u0434\u0441\u0442\u0440\u0430\u043d\u0438 \u043d\u0443\u043c\u0435\u0440\u0438\u0440\u0430\u043d\u0430 \u043b\u0438\u0441\u0442\u0430","bullist_desc":"\u0412\u043d\u0435\u0441\u0438/\u043e\u0434\u0441\u0442\u0440\u0430\u043d\u0438 bullet \u043b\u0438\u0441\u0442\u0430","striketrough_desc":"\u041f\u0440\u0435\u0446\u0440\u0442\u0430\u043d\u043e","underline_desc":"\u041f\u043e\u0434\u0432\u043b\u0435\u0447\u0435\u043d\u043e (Ctrl U)","italic_desc":"\u0417\u0430\u043a\u043e\u0441\u0435\u043d\u043e (Ctrl I)","bold_desc":"\u0417\u0434\u0435\u0431\u0435\u043b\u0435\u043d\u043e (Ctrl B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/ms.js b/program/js/tiny_mce/themes/simple/langs/ms.js
deleted file mode 100644
index e097ab07a..000000000
--- a/program/js/tiny_mce/themes/simple/langs/ms.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ms.simple',{"cleanup_desc":"Bersihkan kod yang bersepah","redo_desc":"Buat semula (Ctrl+Y)","undo_desc":"Buat asal (Ctrl+Z)","numlist_desc":"Senarai tertib","bullist_desc":"Senarai tidak tertib","striketrough_desc":"Garis tengah","underline_desc":"Garis bawah (Ctrl+U)","italic_desc":"Condong (Ctrl+I)","bold_desc":"Tebal (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/nb.js b/program/js/tiny_mce/themes/simple/langs/nb.js
deleted file mode 100644
index 178bae8fa..000000000
--- a/program/js/tiny_mce/themes/simple/langs/nb.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nb.simple',{"cleanup_desc":"Rens ukurant kode","redo_desc":"Gj\u00f8r om (Ctrl + Y)","undo_desc":"Angre (Ctrl+Z)","numlist_desc":"Nummerliste","bullist_desc":"Punktliste","striketrough_desc":"Gjennomstreking","underline_desc":"Understreking","italic_desc":"Kursiv","bold_desc":"Fet"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/nl.js b/program/js/tiny_mce/themes/simple/langs/nl.js
deleted file mode 100644
index 9f105d507..000000000
--- a/program/js/tiny_mce/themes/simple/langs/nl.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nl.simple',{"cleanup_desc":"Code opruimen","redo_desc":"Herhalen (Ctrl+Y)","undo_desc":"Ongedaan maken (Ctrl+Z)","numlist_desc":"Nummering","bullist_desc":"Opsommingstekens","striketrough_desc":"Doorhalen","underline_desc":"Onderstrepen (Ctrl+U)","italic_desc":"Cursief (Ctrl+I)","bold_desc":"Vet (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/nn.js b/program/js/tiny_mce/themes/simple/langs/nn.js
deleted file mode 100644
index 8b81334bb..000000000
--- a/program/js/tiny_mce/themes/simple/langs/nn.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('nn.simple',{"cleanup_desc":"Rens grisete kode","redo_desc":"Gjer om","undo_desc":"Angre","numlist_desc":"Nummerliste","bullist_desc":"Punktliste","striketrough_desc":"Gjennomstreking","underline_desc":"Understreking","italic_desc":"Kursiv","bold_desc":"Feit"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/pl.js b/program/js/tiny_mce/themes/simple/langs/pl.js
deleted file mode 100644
index e48d5df13..000000000
--- a/program/js/tiny_mce/themes/simple/langs/pl.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('pl.simple',{"cleanup_desc":"Wyczy\u015b\u0107 nieuporz\u0105dkowany kod","redo_desc":"Pon\u00f3w (Ctrl+Y)","undo_desc":"Cofnij (Ctrl+Z)","numlist_desc":"Lista numerowana","bullist_desc":"Lista nienumerowana","striketrough_desc":"Przekre\u015blenie","underline_desc":"Podkre\u015blenie (Ctrl+U)","italic_desc":"Kursywa (Ctrl+I)","bold_desc":"Pogrubienie (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/ps.js b/program/js/tiny_mce/themes/simple/langs/ps.js
deleted file mode 100644
index 4070f0907..000000000
--- a/program/js/tiny_mce/themes/simple/langs/ps.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ps.simple',{"cleanup_desc":"Cleanup messy code","redo_desc":"Redo (Ctrl+Y)","undo_desc":"Undo (Ctrl+Z)","numlist_desc":"Ordered list","bullist_desc":"Unordered list","striketrough_desc":"Strikethrough","underline_desc":"Underline (Ctrl+U)","italic_desc":"Italic (Ctrl+I)","bold_desc":"Bold (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/pt.js b/program/js/tiny_mce/themes/simple/langs/pt.js
deleted file mode 100644
index 955201d2a..000000000
--- a/program/js/tiny_mce/themes/simple/langs/pt.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('pt.simple',{"cleanup_desc":"Limpar c\u00f3digo incorreto","redo_desc":"Refazer (Ctrl+Y)","undo_desc":"Desfazer (Ctrl+Z)","numlist_desc":"Lista ordenada","bullist_desc":"Lista n\u00e3o-ordenada","striketrough_desc":"Riscado","underline_desc":"Sublinhado (Ctrl+U)","italic_desc":"It\u00e1lico (Ctrl+I)","bold_desc":"Negrito (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/ro.js b/program/js/tiny_mce/themes/simple/langs/ro.js
deleted file mode 100644
index 3e3ef32a4..000000000
--- a/program/js/tiny_mce/themes/simple/langs/ro.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ro.simple',{"cleanup_desc":"Cur\u0103\u021b\u0103 codul","redo_desc":"Ref\u0103 (Ctrl+Y)","undo_desc":"Undo (Ctrl+Z)","numlist_desc":"List\u0103 ordonat\u0103","bullist_desc":"List\u0103 neordonat\u0103","striketrough_desc":"T\u0103iat","underline_desc":"Subliniat (Ctrl+U)","italic_desc":"Italic (Ctrl+I)","bold_desc":"\u00cengro\u0219at (Ctrl B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/ru.js b/program/js/tiny_mce/themes/simple/langs/ru.js
deleted file mode 100644
index 44970b2e9..000000000
--- a/program/js/tiny_mce/themes/simple/langs/ru.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ru.simple',{"cleanup_desc":"\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u043b\u0438\u0448\u043d\u0438\u0439 \u043a\u043e\u0434","redo_desc":"\u0412\u0435\u0440\u043d\u0443\u0442\u044c (Ctrl+Y)","undo_desc":"\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c (Ctrl+Z)","numlist_desc":"\u041d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a","bullist_desc":"\u041c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a","striketrough_desc":"\u0417\u0430\u0447\u0435\u0440\u043a\u043d\u0443\u0442\u044b\u0439","underline_desc":"\u041f\u043e\u0434\u0447\u0435\u0440\u043a\u043d\u0443\u0442\u044b\u0439 (Ctrl+U)","italic_desc":"\u041a\u0443\u0440\u0441\u0438\u0432 (Ctrl+I)","bold_desc":"\u041f\u043e\u043b\u0443\u0436\u0438\u0440\u043d\u044b\u0439 (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/si.js b/program/js/tiny_mce/themes/simple/langs/si.js
deleted file mode 100644
index 8f02c368b..000000000
--- a/program/js/tiny_mce/themes/simple/langs/si.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('si.simple',{"cleanup_desc":"\u0dc0\u0dd0\u0dbb\u0daf\u0dd2 \u0d9a\u0dda\u0dad \u0d89\u0dc0\u0dad\u0dca \u0d9a\u0dbb\u0db1\u0dca\u0db1","redo_desc":"\u0db1\u0dd0\u0dc0\u0dad \u0d9a\u0dbb\u0db1\u0dc0\u0dcf (Ctrl+Y)","undo_desc":"\u0db1\u0dd2\u0dc1\u0dca\u0db4\u0dca\u200d\u0dbb\u0db7 \u0d9a\u0dbb\u0db1\u0dca\u0db1 (Ctrl+Z)","numlist_desc":"\u0d9a\u0dca\u200d\u0dbb\u0db8\u0dcf\u0db1\u0dd4\u0d9a\u0dd6\u0dbd \u0dbd\u0dd0\u0dba\u0dd2\u0dc3\u0dca\u0dad\u0dd4\u0dc0","bullist_desc":"\u0d85\u0d9a\u0dca\u200d\u0dbb\u0db8\u0dcf\u0db1\u0dd4\u0d9a\u0dd6\u0dbd \u0dbd\u0dd0\u0dba\u0dd2\u0dc3\u0dca\u0dad\u0dd4\u0dc0","striketrough_desc":"Strikethrough","underline_desc":"Underline (Ctrl+U)","italic_desc":"Italic (Ctrl+I)","bold_desc":"Bold (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/sk.js b/program/js/tiny_mce/themes/simple/langs/sk.js
deleted file mode 100644
index 76a87f88f..000000000
--- a/program/js/tiny_mce/themes/simple/langs/sk.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sk.simple',{"cleanup_desc":"Vy\u010disti\u0165 k\u00f3d","redo_desc":"Znovu (Ctrl+Y)","undo_desc":"Sp\u00e4\u0165 (Ctrl+Z)","numlist_desc":"\u010c\u00edslovan\u00fd zoznam","bullist_desc":"Zoznam s odr\u00e1\u017ekami","striketrough_desc":"Pre\u010diarknut\u00e9","underline_desc":"Pod\u010diarknut\u00e9 (Ctrl+U)","italic_desc":"Kurz\u00edva (Ctrl+I)","bold_desc":"Tu\u010dn\u00e9 (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/sl.js b/program/js/tiny_mce/themes/simple/langs/sl.js
deleted file mode 100644
index 5bd108bc4..000000000
--- a/program/js/tiny_mce/themes/simple/langs/sl.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sl.simple',{"cleanup_desc":"Pre\u010disti kodo","redo_desc":"Uveljavi (Ctrl+Y)","undo_desc":"Razveljavi (Ctrl+Z)","numlist_desc":"Na\u0161tevanje","bullist_desc":"Alineje","striketrough_desc":"Pre\u010drtano","underline_desc":"Pod\u010drtano (Ctrl+U)","italic_desc":"Po\u0161evno (Ctrl+I)","bold_desc":"Krepko (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/sq.js b/program/js/tiny_mce/themes/simple/langs/sq.js
deleted file mode 100644
index 3b01cd6a7..000000000
--- a/program/js/tiny_mce/themes/simple/langs/sq.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sq.simple',{"cleanup_desc":"Pastro kodin","redo_desc":"Rib\u00ebj (Ctrl+Y)","undo_desc":"\u00c7b\u00ebj (Ctrl+Z)","numlist_desc":"List\u00eb e rregullt","bullist_desc":"List\u00eb e parregullt","striketrough_desc":"Vij\u00eb n\u00eb mes","underline_desc":"I N\u00ebnvizuar (Ctrl+U)","italic_desc":"I Pjerr\u00ebt (Ctrl+I)","bold_desc":"I Trash\u00eb (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/sr.js b/program/js/tiny_mce/themes/simple/langs/sr.js
deleted file mode 100644
index 0e17e5b8e..000000000
--- a/program/js/tiny_mce/themes/simple/langs/sr.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sr.simple',{"cleanup_desc":"O\u010disti kod","redo_desc":"Poni\u0161ti opoziv (Ctrl Y)","undo_desc":"Opozovi (Ctrl+Z)","numlist_desc":"Ure\u0111eno nabrajanje","bullist_desc":"Neure\u0111eno nabrajanje","striketrough_desc":"Precrtano","underline_desc":"Podvu\u010deno (Ctrl U)","italic_desc":"Isko\u0161eno (Ctrl I)","bold_desc":"Podebljno (Ctrl B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/sv.js b/program/js/tiny_mce/themes/simple/langs/sv.js
deleted file mode 100644
index 4824f5815..000000000
--- a/program/js/tiny_mce/themes/simple/langs/sv.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('sv.simple',{"cleanup_desc":"St\u00e4da upp i k\u00e4llkoden","redo_desc":"G\u00f6r om (Ctrl+Y)","undo_desc":"\u00c5\u0085ngra (Ctrl+Z)","numlist_desc":"Nummerlista","bullist_desc":"Punktlista","striketrough_desc":"Genomstruken","underline_desc":"Understruken (Ctrl+U)","italic_desc":"Kursiv (Ctrl+I)","bold_desc":"Fet (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/ta.js b/program/js/tiny_mce/themes/simple/langs/ta.js
deleted file mode 100644
index 941af1784..000000000
--- a/program/js/tiny_mce/themes/simple/langs/ta.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('ta.simple',{"cleanup_desc":"Cleanup messy code","redo_desc":"Redo (Ctrl+Y)","undo_desc":"Undo (Ctrl+Z)","numlist_desc":"Ordered list","bullist_desc":"Unordered list","striketrough_desc":"Strikethrough","underline_desc":"Underline (Ctrl+U)","italic_desc":"Italic (Ctrl+I)","bold_desc":"Bold (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/th.js b/program/js/tiny_mce/themes/simple/langs/th.js
deleted file mode 100644
index 241d1ee21..000000000
--- a/program/js/tiny_mce/themes/simple/langs/th.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('th.simple',{"cleanup_desc":"\u0e25\u0e49\u0e32\u0e07\u0e23\u0e2b\u0e31\u0e2a\u0e02\u0e22\u0e30","redo_desc":"\u0e17\u0e33\u0e0b\u0e49\u0e33 (Ctrl+Y)","undo_desc":"\u0e22\u0e01\u0e40\u0e25\u0e34\u0e01 (Ctrl+Z)","numlist_desc":"\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e15\u0e31\u0e27\u0e40\u0e25\u0e02","bullist_desc":"\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23","striketrough_desc":"\u0e02\u0e35\u0e14\u0e06\u0e48\u0e32","underline_desc":"\u0e15\u0e31\u0e27\u0e40\u0e02\u0e35\u0e14\u0e40\u0e2a\u0e49\u0e19\u0e43\u0e15\u0e49 (Ctrl+U)","italic_desc":"\u0e15\u0e31\u0e27\u0e40\u0e2d\u0e35\u0e22\u0e07 (Ctrl+I)","bold_desc":"\u0e15\u0e31\u0e27\u0e2b\u0e19\u0e32 (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/tr.js b/program/js/tiny_mce/themes/simple/langs/tr.js
deleted file mode 100644
index 01e458598..000000000
--- a/program/js/tiny_mce/themes/simple/langs/tr.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('tr.simple',{"cleanup_desc":"Da\u011f\u0131n\u0131k kodu temizle","redo_desc":"Yinele (Ctrl+Y)","undo_desc":"Geri al (Ctrl+Z)","numlist_desc":"S\u0131ral\u0131 liste","bullist_desc":"S\u0131ras\u0131z liste","striketrough_desc":"\u00dcst\u00fc \u00e7izili","underline_desc":"Alt\u0131 \u00e7izili (Ctrl+U)","italic_desc":"\u0130talik (Ctrl+I)","bold_desc":"Kal\u0131n (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/uk.js b/program/js/tiny_mce/themes/simple/langs/uk.js
deleted file mode 100644
index b016c9a43..000000000
--- a/program/js/tiny_mce/themes/simple/langs/uk.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('uk.simple',{"cleanup_desc":"\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u0437\u0430\u0439\u0432\u0438\u0439 \u043a\u043e\u0434","redo_desc":"\u041f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u0438 (Ctrl+Y)","undo_desc":"\u0412\u0456\u0434\u043c\u0456\u043d\u0438\u0442\u0438 (Ctrl+Z)","numlist_desc":"\u041d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a","bullist_desc":"\u041d\u0435\u043d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a","striketrough_desc":"\u0417\u0430\u043a\u0440\u0435\u0441\u043b\u0435\u043d\u0438\u0439","underline_desc":"\u041f\u0456\u0434\u043a\u0440\u0435\u0441\u043b\u0435\u043d\u0438\u0439 (Ctrl+U)","italic_desc":"\u041a\u0443\u0440\u0441\u0438\u0432 (Ctrl+I)","bold_desc":"\u0416\u0438\u0440\u043d\u0438\u0439 (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/vi.js b/program/js/tiny_mce/themes/simple/langs/vi.js
deleted file mode 100644
index a22b4bfa3..000000000
--- a/program/js/tiny_mce/themes/simple/langs/vi.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('vi.simple',{"cleanup_desc":"D\u1ecdn d\u1eb9p m\u00e3 l\u1ed9n x\u1ed9n","redo_desc":"Ti\u1ebfn t\u1edbi (Ctrl+Y)","undo_desc":"Tr\u1edf v\u1ec1 (Ctrl+Z)","numlist_desc":"Danh s\u00e1ch theo th\u1ee9 t\u1ef1","bullist_desc":"Danh s\u00e1ch kh\u00f4ng theo th\u1ee9 t\u1ef1","striketrough_desc":"G\u1ea1ch ngang","underline_desc":"G\u1ea1ch ch\u00e2n (Ctrl+U)","italic_desc":"Ch\u1eef nghi\u00eang (Ctrl+I)","bold_desc":"Ch\u1eef \u0111\u1eadm (Ctrl+B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/zh-cn.js b/program/js/tiny_mce/themes/simple/langs/zh-cn.js
deleted file mode 100644
index 6e0c6954b..000000000
--- a/program/js/tiny_mce/themes/simple/langs/zh-cn.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('zh-cn.simple',{"cleanup_desc":"\u6e05\u9664\u65e0\u7528\u4ee3\u7801","redo_desc":"\u6062\u590d(Ctrl Y)","undo_desc":"\u64a4\u9500(Ctrl Z)","numlist_desc":"\u7f16\u53f7\u5217\u8868","bullist_desc":"\u9879\u76ee\u5217\u8868","striketrough_desc":"\u5220\u9664\u7ebf","underline_desc":"\u4e0b\u5212\u7ebf(Ctrl U)","italic_desc":"\u659c\u4f53(Ctrl I)","bold_desc":"\u7c97\u4f53(Ctrl B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/langs/zh-tw.js b/program/js/tiny_mce/themes/simple/langs/zh-tw.js
deleted file mode 100644
index 1629934c8..000000000
--- a/program/js/tiny_mce/themes/simple/langs/zh-tw.js
+++ /dev/null
@@ -1 +0,0 @@
-tinyMCE.addI18n('zh-tw.simple',{"cleanup_desc":"\u6574\u7406\u8cc7\u6599","redo_desc":"\u91cd\u4f86 (Ctrl Y)","undo_desc":"\u5fa9\u539f (Ctrl Z)","numlist_desc":"\u9805\u76ee\u7b26\u865f (\u6709\u6578\u5b57\u7684)","bullist_desc":"\u9805\u76ee\u7b26\u865f","striketrough_desc":"\u522a\u9664\u7dda","underline_desc":"\u5e95\u7dda (Ctrl U)","italic_desc":"\u659c\u7dda (Ctrl I)","bold_desc":"\u52a0\u7c97 (Ctrl B)"}); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/simple/skins/default/content.css b/program/js/tiny_mce/themes/simple/skins/default/content.css
deleted file mode 100644
index 2506c807c..000000000
--- a/program/js/tiny_mce/themes/simple/skins/default/content.css
+++ /dev/null
@@ -1,25 +0,0 @@
-body, td, pre {
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 10px;
-}
-
-body {
- background-color: #FFFFFF;
-}
-
-.mceVisualAid {
- border: 1px dashed #BBBBBB;
-}
-
-/* MSIE specific */
-
-* html body {
- scrollbar-3dlight-color: #F0F0EE;
- scrollbar-arrow-color: #676662;
- scrollbar-base-color: #F0F0EE;
- scrollbar-darkshadow-color: #DDDDDD;
- scrollbar-face-color: #E0E0DD;
- scrollbar-highlight-color: #F0F0EE;
- scrollbar-shadow-color: #F0F0EE;
- scrollbar-track-color: #F5F5F5;
-}
diff --git a/program/js/tiny_mce/themes/simple/skins/default/ui.css b/program/js/tiny_mce/themes/simple/skins/default/ui.css
deleted file mode 100644
index 076fe84e3..000000000
--- a/program/js/tiny_mce/themes/simple/skins/default/ui.css
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Reset */
-.defaultSimpleSkin table, .defaultSimpleSkin tbody, .defaultSimpleSkin a, .defaultSimpleSkin img, .defaultSimpleSkin tr, .defaultSimpleSkin div, .defaultSimpleSkin td, .defaultSimpleSkin iframe, .defaultSimpleSkin span, .defaultSimpleSkin * {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000}
-
-/* Containers */
-.defaultSimpleSkin {position:relative}
-.defaultSimpleSkin table.mceLayout {background:#F0F0EE; border:1px solid #CCC;}
-.defaultSimpleSkin iframe {display:block; background:#FFF; border-bottom:1px solid #CCC;}
-.defaultSimpleSkin .mceToolbar {height:24px;}
-
-/* Layout */
-.defaultSimpleSkin span.mceIcon, .defaultSimpleSkin img.mceIcon {display:block; width:20px; height:20px}
-.defaultSimpleSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px}
-
-/* Button */
-.defaultSimpleSkin .mceButton {display:block; border:1px solid #F0F0EE; width:20px; height:20px}
-.defaultSimpleSkin a.mceButtonEnabled:hover {border:1px solid #0A246A; background-color:#B2BBD0}
-.defaultSimpleSkin a.mceButtonActive {border:1px solid #0A246A; background-color:#C2CBE0}
-.defaultSimpleSkin .mceButtonDisabled span {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
-
-/* Separator */
-.defaultSimpleSkin .mceSeparator {display:block; background:url(../../img/icons.gif) -180px 0; width:2px; height:20px; margin:0 2px 0 4px}
-
-/* Theme */
-.defaultSimpleSkin span.mce_bold {background-position:0 0}
-.defaultSimpleSkin span.mce_italic {background-position:-60px 0}
-.defaultSimpleSkin span.mce_underline {background-position:-140px 0}
-.defaultSimpleSkin span.mce_strikethrough {background-position:-120px 0}
-.defaultSimpleSkin span.mce_undo {background-position:-160px 0}
-.defaultSimpleSkin span.mce_redo {background-position:-100px 0}
-.defaultSimpleSkin span.mce_cleanup {background-position:-40px 0}
-.defaultSimpleSkin span.mce_insertunorderedlist {background-position:-20px 0}
-.defaultSimpleSkin span.mce_insertorderedlist {background-position:-80px 0}
diff --git a/program/js/tiny_mce/themes/simple/skins/o2k7/content.css b/program/js/tiny_mce/themes/simple/skins/o2k7/content.css
deleted file mode 100644
index 595809fa6..000000000
--- a/program/js/tiny_mce/themes/simple/skins/o2k7/content.css
+++ /dev/null
@@ -1,17 +0,0 @@
-body, td, pre {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
-
-body {background: #FFF;}
-.mceVisualAid {border: 1px dashed #BBB;}
-
-/* IE */
-
-* html body {
-scrollbar-3dlight-color: #F0F0EE;
-scrollbar-arrow-color: #676662;
-scrollbar-base-color: #F0F0EE;
-scrollbar-darkshadow-color: #DDDDDD;
-scrollbar-face-color: #E0E0DD;
-scrollbar-highlight-color: #F0F0EE;
-scrollbar-shadow-color: #F0F0EE;
-scrollbar-track-color: #F5F5F5;
-}
diff --git a/program/js/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png b/program/js/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png
deleted file mode 100644
index 527e3495a..000000000
--- a/program/js/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png
+++ /dev/null
Binary files differ
diff --git a/program/js/tiny_mce/themes/simple/skins/o2k7/ui.css b/program/js/tiny_mce/themes/simple/skins/o2k7/ui.css
deleted file mode 100644
index cf6c35d10..000000000
--- a/program/js/tiny_mce/themes/simple/skins/o2k7/ui.css
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Reset */
-.o2k7SimpleSkin table, .o2k7SimpleSkin tbody, .o2k7SimpleSkin a, .o2k7SimpleSkin img, .o2k7SimpleSkin tr, .o2k7SimpleSkin div, .o2k7SimpleSkin td, .o2k7SimpleSkin iframe, .o2k7SimpleSkin span, .o2k7SimpleSkin * {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000}
-
-/* Containers */
-.o2k7SimpleSkin {position:relative}
-.o2k7SimpleSkin table.mceLayout {background:#E5EFFD; border:1px solid #ABC6DD;}
-.o2k7SimpleSkin iframe {display:block; background:#FFF; border-bottom:1px solid #ABC6DD;}
-.o2k7SimpleSkin .mceToolbar {height:26px;}
-
-/* Layout */
-.o2k7SimpleSkin .mceToolbar .mceToolbarStart span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px; }
-.o2k7SimpleSkin .mceToolbar .mceToolbarEnd span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px}
-.o2k7SimpleSkin span.mceIcon, .o2k7SimpleSkin img.mceIcon {display:block; width:20px; height:20px}
-.o2k7SimpleSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px}
-
-/* Button */
-.o2k7SimpleSkin .mceButton {display:block; background:url(img/button_bg.png); width:22px; height:22px}
-.o2k7SimpleSkin a.mceButton span, .o2k7SimpleSkin a.mceButton img {margin:1px 0 0 1px}
-.o2k7SimpleSkin a.mceButtonEnabled:hover {background-color:#B2BBD0; background-position:0 -22px}
-.o2k7SimpleSkin a.mceButtonActive {background-position:0 -44px}
-.o2k7SimpleSkin .mceButtonDisabled span {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
-
-/* Separator */
-.o2k7SimpleSkin .mceSeparator {display:block; background:url(img/button_bg.png) -22px 0; width:5px; height:22px}
-
-/* Theme */
-.o2k7SimpleSkin span.mce_bold {background-position:0 0}
-.o2k7SimpleSkin span.mce_italic {background-position:-60px 0}
-.o2k7SimpleSkin span.mce_underline {background-position:-140px 0}
-.o2k7SimpleSkin span.mce_strikethrough {background-position:-120px 0}
-.o2k7SimpleSkin span.mce_undo {background-position:-160px 0}
-.o2k7SimpleSkin span.mce_redo {background-position:-100px 0}
-.o2k7SimpleSkin span.mce_cleanup {background-position:-40px 0}
-.o2k7SimpleSkin span.mce_insertunorderedlist {background-position:-20px 0}
-.o2k7SimpleSkin span.mce_insertorderedlist {background-position:-80px 0}
diff --git a/program/js/tiny_mce/tiny_mce.js b/program/js/tiny_mce/tiny_mce.js
deleted file mode 100644
index 574a78a3a..000000000
--- a/program/js/tiny_mce/tiny_mce.js
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * @licstart The following is the entire license notice for the
- * JavaScript code in this page.
- *
- * Copyright (c) 2003-2014 Moxiecode Systems AB
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation; either version 2.1 of the License,
- * or (at your option) any later version.
- *
- * @licend The above is the entire license notice
- * for the JavaScript code in this page.
- */
-(function(e){var a=/^\s*|\s*$/g,b,d="B".replace(/A(.)|B/,"$1")==="$1";var c={majorVersion:"3",minorVersion:"5.10",releaseDate:"2013-10-24",_init:function(){var s=this,q=document,o=navigator,g=o.userAgent,m,f,l,k,j,r;s.isIE11=g.indexOf("Trident/")!=-1&&(g.indexOf("rv:")!=-1||o.appName.indexOf("Netscape")!=-1);s.isOpera=e.opera&&opera.buildNumber;s.isWebKit=/WebKit/.test(g);s.isIE=!s.isWebKit&&!s.isOpera&&(/MSIE/gi).test(g)&&(/Explorer/gi).test(o.appName)||s.isIE11;s.isIE6=s.isIE&&/MSIE [56]/.test(g);s.isIE7=s.isIE&&/MSIE [7]/.test(g);s.isIE8=s.isIE&&/MSIE [8]/.test(g);s.isIE9=s.isIE&&/MSIE [9]/.test(g);s.isGecko=!s.isWebKit&&!s.isIE11&&/Gecko/.test(g);s.isMac=g.indexOf("Mac")!=-1;s.isAir=/adobeair/i.test(g);s.isIDevice=/(iPad|iPhone)/.test(g);s.isIOS5=s.isIDevice&&g.match(/AppleWebKit\/(\d*)/)[1]>=534;if(e.tinyMCEPreInit){s.suffix=tinyMCEPreInit.suffix;s.baseURL=tinyMCEPreInit.base;s.query=tinyMCEPreInit.query;return}s.suffix="";f=q.getElementsByTagName("base");for(m=0;m<f.length;m++){r=f[m].href;if(r){if(/^https?:\/\/[^\/]+$/.test(r)){r+="/"}k=r?r.match(/.*\//)[0]:""}}function h(i){if(i.src&&/tiny_mce(|_gzip|_jquery|_prototype|_full)(_dev|_src)?.js/.test(i.src)){if(/_(src|dev)\.js/g.test(i.src)){s.suffix="_src"}if((j=i.src.indexOf("?"))!=-1){s.query=i.src.substring(j+1)}s.baseURL=i.src.substring(0,i.src.lastIndexOf("/"));if(k&&s.baseURL.indexOf("://")==-1&&s.baseURL.indexOf("/")!==0){s.baseURL=k+s.baseURL}return s.baseURL}return null}f=q.getElementsByTagName("script");for(m=0;m<f.length;m++){if(h(f[m])){return}}l=q.getElementsByTagName("head")[0];if(l){f=l.getElementsByTagName("script");for(m=0;m<f.length;m++){if(h(f[m])){return}}}return},is:function(g,f){if(!f){return g!==b}if(f=="array"&&c.isArray(g)){return true}return typeof(g)==f},isArray:Array.isArray||function(f){return Object.prototype.toString.call(f)==="[object Array]"},makeMap:function(f,j,h){var g;f=f||[];j=j||",";if(typeof(f)=="string"){f=f.split(j)}h=h||{};g=f.length;while(g--){h[f[g]]={}}return h},each:function(i,f,h){var j,g;if(!i){return 0}h=h||i;if(i.length!==b){for(j=0,g=i.length;j<g;j++){if(f.call(h,i[j],j,i)===false){return 0}}}else{for(j in i){if(i.hasOwnProperty(j)){if(f.call(h,i[j],j,i)===false){return 0}}}}return 1},map:function(g,h){var i=[];c.each(g,function(f){i.push(h(f))});return i},grep:function(g,h){var i=[];c.each(g,function(f){if(!h||h(f)){i.push(f)}});return i},inArray:function(g,h){var j,f;if(g){for(j=0,f=g.length;j<f;j++){if(g[j]===h){return j}}}return -1},extend:function(n,k){var j,f,h,g=arguments,m;for(j=1,f=g.length;j<f;j++){k=g[j];for(h in k){if(k.hasOwnProperty(h)){m=k[h];if(m!==b){n[h]=m}}}}return n},trim:function(f){return(f?""+f:"").replace(a,"")},create:function(o,f,j){var n=this,g,i,k,l,h,m=0;o=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(o);k=o[3].match(/(^|\.)(\w+)$/i)[2];i=n.createNS(o[3].replace(/\.\w+$/,""),j);if(i[k]){return}if(o[2]=="static"){i[k]=f;if(this.onCreate){this.onCreate(o[2],o[3],i[k])}return}if(!f[k]){f[k]=function(){};m=1}i[k]=f[k];n.extend(i[k].prototype,f);if(o[5]){g=n.resolve(o[5]).prototype;l=o[5].match(/\.(\w+)$/i)[1];h=i[k];if(m){i[k]=function(){return g[l].apply(this,arguments)}}else{i[k]=function(){this.parent=g[l];return h.apply(this,arguments)}}i[k].prototype[k]=i[k];n.each(g,function(p,q){i[k].prototype[q]=g[q]});n.each(f,function(p,q){if(g[q]){i[k].prototype[q]=function(){this.parent=g[q];return p.apply(this,arguments)}}else{if(q!=k){i[k].prototype[q]=p}}})}n.each(f["static"],function(p,q){i[k][q]=p});if(this.onCreate){this.onCreate(o[2],o[3],i[k].prototype)}},walk:function(i,h,j,g){g=g||this;if(i){if(j){i=i[j]}c.each(i,function(k,f){if(h.call(g,k,f,j)===false){return false}c.walk(k,h,j,g)})}},createNS:function(j,h){var g,f;h=h||e;j=j.split(".");for(g=0;g<j.length;g++){f=j[g];if(!h[f]){h[f]={}}h=h[f]}return h},resolve:function(j,h){var g,f;h=h||e;j=j.split(".");for(g=0,f=j.length;g<f;g++){h=h[j[g]];if(!h){break}}return h},addUnload:function(j,i){var h=this,g;g=function(){var f=h.unloads,l,m;if(f){for(m in f){l=f[m];if(l&&l.func){l.func.call(l.scope,1)}}if(e.detachEvent){e.detachEvent("onbeforeunload",k);e.detachEvent("onunload",g)}else{if(e.removeEventListener){e.removeEventListener("unload",g,false)}}h.unloads=l=f=w=g=0;if(e.CollectGarbage){CollectGarbage()}}};function k(){var l=document;function f(){l.detachEvent("onstop",f);if(g){g()}l=0}if(l.readyState=="interactive"){if(l){l.attachEvent("onstop",f)}e.setTimeout(function(){if(l){l.detachEvent("onstop",f)}},0)}}j={func:j,scope:i||this};if(!h.unloads){if(e.attachEvent){e.attachEvent("onunload",g);e.attachEvent("onbeforeunload",k)}else{if(e.addEventListener){e.addEventListener("unload",g,false)}}h.unloads=[j]}else{h.unloads.push(j)}return j},removeUnload:function(i){var g=this.unloads,h=null;c.each(g,function(j,f){if(j&&j.func==i){g.splice(f,1);h=i;return false}});return h},explode:function(f,g){if(!f||c.is(f,"array")){return f}return c.map(f.split(g||","),c.trim)},_addVer:function(g){var f;if(!this.query){return g}f=(g.indexOf("?")==-1?"?":"&")+this.query;if(g.indexOf("#")==-1){return g+f}return g.replace("#",f+"#")},_replace:function(h,f,g){if(d){return g.replace(h,function(){var l=f,j=arguments,k;for(k=0;k<j.length-2;k++){if(j[k]===b){l=l.replace(new RegExp("\\$"+k,"g"),"")}else{l=l.replace(new RegExp("\\$"+k,"g"),j[k])}}return l})}return g.replace(h,f)}};c._init();e.tinymce=e.tinyMCE=c})(window);tinymce.create("tinymce.util.Dispatcher",{scope:null,listeners:null,inDispatch:false,Dispatcher:function(a){this.scope=a||this;this.listeners=[]},add:function(b,a){this.listeners.push({cb:b,scope:a||this.scope});return b},addToTop:function(d,b){var a=this,c={cb:d,scope:b||a.scope};if(a.inDispatch){a.listeners=[c].concat(a.listeners)}else{a.listeners.unshift(c)}return d},remove:function(c){var b=this.listeners,a=null;tinymce.each(b,function(e,d){if(c==e.cb){a=e;b.splice(d,1);return false}});return a},dispatch:function(){var a=this,e,b=arguments,c,d=a.listeners,f;a.inDispatch=true;for(c=0;c<d.length;c++){f=d[c];e=f.cb.apply(f.scope,b.length>0?b:[f.scope]);if(e===false){break}}a.inDispatch=false;return e}});(function(){var a=tinymce.each;tinymce.create("tinymce.util.URI",{URI:function(e,g){var f=this,i,d,c,h;e=tinymce.trim(e);g=f.settings=g||{};if(/^([\w\-]+):([^\/]{2})/i.test(e)||/^\s*#/.test(e)){f.source=e;return}if(e.indexOf("/")===0&&e.indexOf("//")!==0){e=(g.base_uri?g.base_uri.protocol||"http":"http")+"://mce_host"+e}if(!/^[\w\-]*:?\/\//.test(e)){h=g.base_uri?g.base_uri.path:new tinymce.util.URI(location.href).directory;e=((g.base_uri&&g.base_uri.protocol)||"http")+"://mce_host"+f.toAbsPath(h,e)}e=e.replace(/@@/g,"(mce_at)");e=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(e);a(["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],function(b,j){var k=e[j];if(k){k=k.replace(/\(mce_at\)/g,"@@")}f[b]=k});c=g.base_uri;if(c){if(!f.protocol){f.protocol=c.protocol}if(!f.userInfo){f.userInfo=c.userInfo}if(!f.port&&f.host==="mce_host"){f.port=c.port}if(!f.host||f.host==="mce_host"){f.host=c.host}f.source=""}},setPath:function(c){var b=this;c=/^(.*?)\/?(\w+)?$/.exec(c);b.path=c[0];b.directory=c[1];b.file=c[2];b.source="";b.getURI()},toRelative:function(b){var d=this,f;if(b==="./"){return b}b=new tinymce.util.URI(b,{base_uri:d});if((b.host!="mce_host"&&d.host!=b.host&&b.host)||d.port!=b.port||d.protocol!=b.protocol){return b.getURI()}var c=d.getURI(),e=b.getURI();if(c==e||(c.charAt(c.length-1)=="/"&&c.substr(0,c.length-1)==e)){return c}f=d.toRelPath(d.path,b.path);if(b.query){f+="?"+b.query}if(b.anchor){f+="#"+b.anchor}return f},toAbsolute:function(b,c){b=new tinymce.util.URI(b,{base_uri:this});return b.getURI(this.host==b.host&&this.protocol==b.protocol?c:0)},toRelPath:function(g,h){var c,f=0,d="",e,b;g=g.substring(0,g.lastIndexOf("/"));g=g.split("/");c=h.split("/");if(g.length>=c.length){for(e=0,b=g.length;e<b;e++){if(e>=c.length||g[e]!=c[e]){f=e+1;break}}}if(g.length<c.length){for(e=0,b=c.length;e<b;e++){if(e>=g.length||g[e]!=c[e]){f=e+1;break}}}if(f===1){return h}for(e=0,b=g.length-(f-1);e<b;e++){d+="../"}for(e=f-1,b=c.length;e<b;e++){if(e!=f-1){d+="/"+c[e]}else{d+=c[e]}}return d},toAbsPath:function(e,f){var c,b=0,h=[],d,g;d=/\/$/.test(f)?"/":"";e=e.split("/");f=f.split("/");a(e,function(i){if(i){h.push(i)}});e=h;for(c=f.length-1,h=[];c>=0;c--){if(f[c].length===0||f[c]==="."){continue}if(f[c]===".."){b++;continue}if(b>0){b--;continue}h.push(f[c])}c=e.length-b;if(c<=0){g=h.reverse().join("/")}else{g=e.slice(0,c).join("/")+"/"+h.reverse().join("/")}if(g.indexOf("/")!==0){g="/"+g}if(d&&g.lastIndexOf("/")!==g.length-1){g+=d}return g},getURI:function(d){var c,b=this;if(!b.source||d){c="";if(!d){if(b.protocol){c+=b.protocol+"://"}if(b.userInfo){c+=b.userInfo+"@"}if(b.host){c+=b.host}if(b.port){c+=":"+b.port}}if(b.path){c+=b.path}if(b.query){c+="?"+b.query}if(b.anchor){c+="#"+b.anchor}b.source=c}return b.source}})})();(function(){var a=tinymce.each;tinymce.create("static tinymce.util.Cookie",{getHash:function(d){var b=this.get(d),c;if(b){a(b.split("&"),function(e){e=e.split("=");c=c||{};c[unescape(e[0])]=unescape(e[1])})}return c},setHash:function(j,b,g,f,i,c){var h="";a(b,function(e,d){h+=(!h?"":"&")+escape(d)+"="+escape(e)});this.set(j,h,g,f,i,c)},get:function(i){var h=document.cookie,g,f=i+"=",d;if(!h){return}d=h.indexOf("; "+f);if(d==-1){d=h.indexOf(f);if(d!==0){return null}}else{d+=2}g=h.indexOf(";",d);if(g==-1){g=h.length}return unescape(h.substring(d+f.length,g))},set:function(i,b,g,f,h,c){document.cookie=i+"="+escape(b)+((g)?"; expires="+g.toGMTString():"")+((f)?"; path="+escape(f):"")+((h)?"; domain="+h:"")+((c)?"; secure":"")},remove:function(c,e,d){var b=new Date();b.setTime(b.getTime()-1000);this.set(c,"",b,e,d)}})})();(function(){function serialize(o,quote){var i,v,t,name;quote=quote||'"';if(o==null){return"null"}t=typeof o;if(t=="string"){v="\bb\tt\nn\ff\rr\"\"''\\\\";return quote+o.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g,function(a,b){if(quote==='"'&&a==="'"){return a}i=v.indexOf(b);if(i+1){return"\\"+v.charAt(i+1)}a=b.charCodeAt().toString(16);return"\\u"+"0000".substring(a.length)+a})+quote}if(t=="object"){if(o.hasOwnProperty&&Object.prototype.toString.call(o)==="[object Array]"){for(i=0,v="[";i<o.length;i++){v+=(i>0?",":"")+serialize(o[i],quote)}return v+"]"}v="{";for(name in o){if(o.hasOwnProperty(name)){v+=typeof o[name]!="function"?(v.length>1?","+quote:quote)+name+quote+":"+serialize(o[name],quote):""}}return v+"}"}return""+o}tinymce.util.JSON={serialize:serialize,parse:function(s){try{return eval("("+s+")")}catch(ex){}}}})();tinymce.create("static tinymce.util.XHR",{send:function(g){var a,e,b=window,h=0;function f(){if(!g.async||a.readyState==4||h++>10000){if(g.success&&h<10000&&a.status==200){g.success.call(g.success_scope,""+a.responseText,a,g)}else{if(g.error){g.error.call(g.error_scope,h>10000?"TIMED_OUT":"GENERAL",a,g)}}a=null}else{b.setTimeout(f,10)}}g.scope=g.scope||this;g.success_scope=g.success_scope||g.scope;g.error_scope=g.error_scope||g.scope;g.async=g.async===false?false:true;g.data=g.data||"";function d(i){a=0;try{a=new ActiveXObject(i)}catch(c){}return a}a=b.XMLHttpRequest?new XMLHttpRequest():d("Microsoft.XMLHTTP")||d("Msxml2.XMLHTTP");if(a){if(a.overrideMimeType){a.overrideMimeType(g.content_type)}a.open(g.type||(g.data?"POST":"GET"),g.url,g.async);if(g.content_type){a.setRequestHeader("Content-Type",g.content_type)}a.setRequestHeader("X-Requested-With","XMLHttpRequest");a.send(g.data);if(!g.async){return f()}e=b.setTimeout(f,10)}}});(function(){var c=tinymce.extend,b=tinymce.util.JSON,a=tinymce.util.XHR;tinymce.create("tinymce.util.JSONRequest",{JSONRequest:function(d){this.settings=c({},d);this.count=0},send:function(f){var e=f.error,d=f.success;f=c(this.settings,f);f.success=function(h,g){h=b.parse(h);if(typeof(h)=="undefined"){h={error:"JSON Parse error."}}if(h.error){e.call(f.error_scope||f.scope,h.error,g)}else{d.call(f.success_scope||f.scope,h.result)}};f.error=function(h,g){if(e){e.call(f.error_scope||f.scope,h,g)}};f.data=b.serialize({id:f.id||"c"+(this.count++),method:f.method,params:f.params});f.content_type="application/json";a.send(f)},"static":{sendRPC:function(d){return new tinymce.util.JSONRequest().send(d)}}})}());(function(a){a.VK={BACKSPACE:8,DELETE:46,DOWN:40,ENTER:13,LEFT:37,RIGHT:39,SPACEBAR:32,TAB:9,UP:38,modifierPressed:function(b){return b.shiftKey||b.ctrlKey||b.altKey},metaKeyPressed:function(b){return a.isMac?b.metaKey:b.ctrlKey&&!b.altKey}}})(tinymce);tinymce.util.Quirks=function(a){var j=tinymce.VK,f=j.BACKSPACE,k=j.DELETE,e=a.dom,m=a.selection,I=a.settings,x=a.parser,p=a.serializer,F=tinymce.each;function B(O,N){try{a.getDoc().execCommand(O,false,N)}catch(M){}}function o(){var M=a.getDoc().documentMode;return M?M:6}function A(M){return M.isDefaultPrevented()}function K(){function M(S){var O,Q,N,T,P,R,U;function V(){if(P.nodeType==3){if(S&&R==P.length){return true}if(!S&&R===0){return true}}}O=m.getRng();var W=[O.startContainer,O.startOffset,O.endContainer,O.endOffset];if(!O.collapsed){S=true}P=O[(S?"start":"end")+"Container"];R=O[(S?"start":"end")+"Offset"];if(P.nodeType==3){Q=e.getParent(O.startContainer,e.isBlock);if(S){Q=e.getNext(Q,e.isBlock)}if(Q&&(V()||!O.collapsed)){N=e.create("em",{id:"__mceDel"});F(tinymce.grep(Q.childNodes),function(X){N.appendChild(X)});Q.appendChild(N)}}O=e.createRng();O.setStart(W[0],W[1]);O.setEnd(W[2],W[3]);m.setRng(O);a.getDoc().execCommand(S?"ForwardDelete":"Delete",false,null);if(N){T=m.getBookmark();while(U=e.get("__mceDel")){e.remove(U,true)}m.moveToBookmark(T)}}a.onKeyDown.add(function(N,P){var O;O=P.keyCode==k;if(!A(P)&&(O||P.keyCode==f)&&!j.modifierPressed(P)){P.preventDefault();M(O)}});a.addCommand("Delete",function(){M()})}function r(){function M(P){var O=e.create("body");var Q=P.cloneContents();O.appendChild(Q);return m.serializer.serialize(O,{format:"html"})}function N(O){var Q=M(O);var R=e.createRng();R.selectNode(a.getBody());var P=M(R);return Q===P}a.onKeyDown.add(function(P,R){var Q=R.keyCode,O;if(!A(R)&&(Q==k||Q==f)){O=P.selection.isCollapsed();if(O&&!e.isEmpty(P.getBody())){return}if(tinymce.isIE&&!O){return}if(!O&&!N(P.selection.getRng())){return}P.setContent("");P.selection.setCursorLocation(P.getBody(),0);P.nodeChanged()}})}function J(){a.onKeyDown.add(function(M,N){if(!A(N)&&N.keyCode==65&&j.metaKeyPressed(N)){N.preventDefault();M.execCommand("SelectAll")}})}function L(){if(!a.settings.content_editable){e.bind(a.getDoc(),"focusin",function(M){m.setRng(m.getRng())});e.bind(a.getDoc(),"mousedown",function(M){if(M.target==a.getDoc().documentElement){a.getWin().focus();m.setRng(m.getRng())}})}}function C(){a.onKeyDown.add(function(M,P){if(!A(P)&&P.keyCode===f){if(m.isCollapsed()&&m.getRng(true).startOffset===0){var O=m.getNode();var N=O.previousSibling;if(N&&N.nodeName&&N.nodeName.toLowerCase()==="hr"){e.remove(N);tinymce.dom.Event.cancel(P)}}}})}function z(){if(!Range.prototype.getClientRects){a.onMouseDown.add(function(N,O){if(!A(O)&&O.target.nodeName==="HTML"){var M=N.getBody();M.blur();setTimeout(function(){M.focus()},0)}})}}function h(){a.onClick.add(function(M,N){N=N.target;if(/^(IMG|HR)$/.test(N.nodeName)){m.getSel().setBaseAndExtent(N,0,N,1)}if(N.nodeName=="A"&&e.hasClass(N,"mceItemAnchor")){m.select(N)}M.nodeChanged()})}function c(){function N(){var P=e.getAttribs(m.getStart().cloneNode(false));return function(){var Q=m.getStart();if(Q!==a.getBody()){e.setAttrib(Q,"style",null);F(P,function(R){Q.setAttributeNode(R.cloneNode(true))})}}}function M(){return !m.isCollapsed()&&e.getParent(m.getStart(),e.isBlock)!=e.getParent(m.getEnd(),e.isBlock)}function O(P,Q){Q.preventDefault();return false}a.onKeyPress.add(function(P,R){var Q;if(!A(R)&&(R.keyCode==8||R.keyCode==46)&&M()){Q=N();P.getDoc().execCommand("delete",false,null);Q();R.preventDefault();return false}});e.bind(a.getDoc(),"cut",function(Q){var P;if(!A(Q)&&M()){P=N();a.onKeyUp.addToTop(O);setTimeout(function(){P();a.onKeyUp.remove(O)},0)}})}function b(){var N,M;e.bind(a.getDoc(),"selectionchange",function(){if(M){clearTimeout(M);M=0}M=window.setTimeout(function(){var O=m.getRng();if(!N||!tinymce.dom.RangeUtils.compareRanges(O,N)){a.nodeChanged();N=O}},50)})}function y(){document.body.setAttribute("role","application")}function u(){a.onKeyDown.add(function(M,O){if(!A(O)&&O.keyCode===f){if(m.isCollapsed()&&m.getRng(true).startOffset===0){var N=m.getNode().previousSibling;if(N&&N.nodeName&&N.nodeName.toLowerCase()==="table"){return tinymce.dom.Event.cancel(O)}}}})}function D(){if(o()>7){return}B("RespectVisibilityInDesign",true);a.contentStyles.push(".mceHideBrInPre pre br {display: none}");e.addClass(a.getBody(),"mceHideBrInPre");x.addNodeFilter("pre",function(M,O){var P=M.length,R,N,S,Q;while(P--){R=M[P].getAll("br");N=R.length;while(N--){S=R[N];Q=S.prev;if(Q&&Q.type===3&&Q.value.charAt(Q.value-1)!="\n"){Q.value+="\n"}else{S.parent.insert(new tinymce.html.Node("#text",3),S,true).value="\n"}}}});p.addNodeFilter("pre",function(M,O){var P=M.length,R,N,S,Q;while(P--){R=M[P].getAll("br");N=R.length;while(N--){S=R[N];Q=S.prev;if(Q&&Q.type==3){Q.value=Q.value.replace(/\r?\n$/,"")}}}})}function g(){e.bind(a.getBody(),"mouseup",function(O){var N,M=m.getNode();if(M.nodeName=="IMG"){if(N=e.getStyle(M,"width")){e.setAttrib(M,"width",N.replace(/[^0-9%]+/g,""));e.setStyle(M,"width","")}if(N=e.getStyle(M,"height")){e.setAttrib(M,"height",N.replace(/[^0-9%]+/g,""));e.setStyle(M,"height","")}}})}function d(){a.onKeyDown.add(function(S,T){var R,M,N,P,Q,U,O;R=T.keyCode==k;if(!A(T)&&(R||T.keyCode==f)&&!j.modifierPressed(T)){M=m.getRng();N=M.startContainer;P=M.startOffset;O=M.collapsed;if(N.nodeType==3&&N.nodeValue.length>0&&((P===0&&!O)||(O&&P===(R?0:1)))){U=N.previousSibling;if(U&&U.nodeName=="IMG"){return}nonEmptyElements=S.schema.getNonEmptyElements();T.preventDefault();Q=e.create("br",{id:"__tmp"});N.parentNode.insertBefore(Q,N);S.getDoc().execCommand(R?"ForwardDelete":"Delete",false,null);N=m.getRng().startContainer;U=N.previousSibling;if(U&&U.nodeType==1&&!e.isBlock(U)&&e.isEmpty(U)&&!nonEmptyElements[U.nodeName.toLowerCase()]){e.remove(U)}e.remove("__tmp")}}})}function H(){a.onKeyDown.add(function(Q,R){var O,N,S,M,P;if(A(R)||R.keyCode!=j.BACKSPACE){return}O=m.getRng();N=O.startContainer;S=O.startOffset;M=e.getRoot();P=N;if(!O.collapsed||S!==0){return}while(P&&P.parentNode&&P.parentNode.firstChild==P&&P.parentNode!=M){P=P.parentNode}if(P.tagName==="BLOCKQUOTE"){Q.formatter.toggle("blockquote",null,P);O=e.createRng();O.setStart(N,0);O.setEnd(N,0);m.setRng(O)}})}function G(){function M(){a._refreshContentEditable();B("StyleWithCSS",false);B("enableInlineTableEditing",false);if(!I.object_resizing){B("enableObjectResizing",false)}}if(!I.readonly){a.onBeforeExecCommand.add(M);a.onMouseDown.add(M)}}function t(){function M(N,O){F(e.select("a"),function(R){var P=R.parentNode,Q=e.getRoot();if(P.lastChild===R){while(P&&!e.isBlock(P)){if(P.parentNode.lastChild!==P||P===Q){return}P=P.parentNode}e.add(P,"br",{"data-mce-bogus":1})}})}a.onExecCommand.add(function(N,O){if(O==="CreateLink"){M(N)}});a.onSetContent.add(m.onSetContent.add(M))}function n(){if(I.forced_root_block){a.onInit.add(function(){B("DefaultParagraphSeparator",I.forced_root_block)})}}function q(){function M(O,N){if(!O||!N.initial){a.execCommand("mceRepaint")}}a.onUndo.add(M);a.onRedo.add(M);a.onSetContent.add(M)}function i(){a.onKeyDown.add(function(N,O){var M;if(!A(O)&&O.keyCode==f){M=N.getDoc().selection.createRange();if(M&&M.item){O.preventDefault();N.undoManager.beforeChange();e.remove(M.item(0));N.undoManager.add()}}})}function s(){var M;if(o()>=10){M="";F("p div h1 h2 h3 h4 h5 h6".split(" "),function(N,O){M+=(O>0?",":"")+N+":empty"});a.contentStyles.push(M+"{padding-right: 1px !important}")}}function v(){var O,N,ae,M,Z,ac,aa,ad,P,Q,ab,X,W,Y=document,U=a.getDoc();if(!I.object_resizing||I.webkit_fake_resize===false){return}B("enableObjectResizing",false);ab={n:[0.5,0,0,-1],e:[1,0.5,1,0],s:[0.5,1,0,1],w:[0,0.5,-1,0],nw:[0,0,-1,-1],ne:[1,0,1,-1],se:[1,1,1,1],sw:[0,1,-1,1]};function S(ai){var ah,ag;ah=ai.screenX-ac;ag=ai.screenY-aa;X=ah*Z[2]+ad;W=ag*Z[3]+P;X=X<5?5:X;W=W<5?5:W;if(j.modifierPressed(ai)||(ae.nodeName=="IMG"&&Z[2]*Z[3]!==0)){X=Math.round(W/Q);W=Math.round(X*Q)}e.setStyles(M,{width:X,height:W});if(Z[2]<0&&M.clientWidth<=X){e.setStyle(M,"left",O+(ad-X))}if(Z[3]<0&&M.clientHeight<=W){e.setStyle(M,"top",N+(P-W))}}function af(){function ag(ah,ai){if(ai){if(ae.style[ah]||!a.schema.isValid(ae.nodeName.toLowerCase(),ah)){e.setStyle(ae,ah,ai)}else{e.setAttrib(ae,ah,ai)}}}ag("width",X);ag("height",W);e.unbind(U,"mousemove",S);e.unbind(U,"mouseup",af);if(Y!=U){e.unbind(Y,"mousemove",S);e.unbind(Y,"mouseup",af)}e.remove(M);R(ae)}function R(aj){var ah,ai,ag;T();ah=e.getPos(aj);O=ah.x;N=ah.y;ai=aj.offsetWidth;ag=aj.offsetHeight;if(ae!=aj){ae=aj;X=W=0}F(ab,function(am,ak){var al;al=e.get("mceResizeHandle"+ak);if(!al){al=e.add(U.documentElement,"div",{id:"mceResizeHandle"+ak,"class":"mceResizeHandle",style:"cursor:"+ak+"-resize; margin:0; padding:0"});e.bind(al,"mousedown",function(an){an.preventDefault();af();ac=an.screenX;aa=an.screenY;ad=ae.clientWidth;P=ae.clientHeight;Q=P/ad;Z=am;M=ae.cloneNode(true);e.addClass(M,"mceClonedResizable");e.setStyles(M,{left:O,top:N,margin:0});U.documentElement.appendChild(M);e.bind(U,"mousemove",S);e.bind(U,"mouseup",af);if(Y!=U){e.bind(Y,"mousemove",S);e.bind(Y,"mouseup",af)}})}else{e.show(al)}e.setStyles(al,{left:(ai*am[0]+O)-(al.offsetWidth/2),top:(ag*am[1]+N)-(al.offsetHeight/2)})});if(!tinymce.isOpera&&ae.nodeName=="IMG"){ae.setAttribute("data-mce-selected","1")}}function T(){if(ae){ae.removeAttribute("data-mce-selected")}for(var ag in ab){e.hide("mceResizeHandle"+ag)}}a.contentStyles.push(".mceResizeHandle {position: absolute;border: 1px solid black;background: #FFF;width: 5px;height: 5px;z-index: 10000}.mceResizeHandle:hover {background: #000}img[data-mce-selected] {outline: 1px solid black}img.mceClonedResizable, table.mceClonedResizable {position: absolute;outline: 1px dashed black;opacity: .5;z-index: 10000}");function V(){var ag=e.getParent(m.getNode(),"table,img");F(e.select("img[data-mce-selected]"),function(ah){ah.removeAttribute("data-mce-selected")});if(ag){R(ag)}else{T()}}a.onNodeChange.add(V);e.bind(U,"selectionchange",V);a.serializer.addAttributeFilter("data-mce-selected",function(ag,ah){var ai=ag.length;while(ai--){ag[ai].attr(ah,null)}})}function E(){if(o()<9){x.addNodeFilter("noscript",function(M){var N=M.length,O,P;while(N--){O=M[N];P=O.firstChild;if(P){O.attr("data-mce-innertext",P.value)}}});p.addNodeFilter("noscript",function(M){var N=M.length,O,Q,P;while(N--){O=M[N];Q=M[N].firstChild;if(Q){Q.value=tinymce.html.Entities.decode(Q.value)}else{P=O.attributes.map["data-mce-innertext"];if(P){O.attr("data-mce-innertext",null);Q=new tinymce.html.Node("#text",3);Q.value=P;Q.raw=true;O.append(Q)}}}})}}function l(){a.contentStyles.push("body {min-height: 100px}");a.onClick.add(function(M,N){if(N.target.nodeName=="HTML"){a.execCommand("SelectAll");a.selection.collapse(true);a.nodeChanged()}})}u();H();r();if(tinymce.isWebKit){d();K();L();h();n();if(tinymce.isIDevice){b()}else{v();J()}}if(tinymce.isIE&&!tinymce.isIE11){C();y();D();g();i();s();E()}if(tinymce.isIE11){l()}if(tinymce.isGecko&&!tinymce.isIE11){C();z();c();G();t();q()}if(tinymce.isOpera){v()}};(function(j){var a,g,d,k=/[&<>\"\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,b=/[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,f=/[<>&\"\']/g,c=/&(#x|#)?([\w]+);/g,i={128:"\u20AC",130:"\u201A",131:"\u0192",132:"\u201E",133:"\u2026",134:"\u2020",135:"\u2021",136:"\u02C6",137:"\u2030",138:"\u0160",139:"\u2039",140:"\u0152",142:"\u017D",145:"\u2018",146:"\u2019",147:"\u201C",148:"\u201D",149:"\u2022",150:"\u2013",151:"\u2014",152:"\u02DC",153:"\u2122",154:"\u0161",155:"\u203A",156:"\u0153",158:"\u017E",159:"\u0178"};g={'"':"&quot;","'":"&#39;","<":"&lt;",">":"&gt;","&":"&amp;"};d={"&lt;":"<","&gt;":">","&amp;":"&","&quot;":'"',"&apos;":"'"};function h(l){var m;m=document.createElement("div");m.innerHTML=l;return m.textContent||m.innerText||l}function e(m,p){var n,o,l,q={};if(m){m=m.split(",");p=p||10;for(n=0;n<m.length;n+=2){o=String.fromCharCode(parseInt(m[n],p));if(!g[o]){l="&"+m[n+1]+";";q[o]=l;q[l]=o}}return q}}a=e("50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro",32);j.html=j.html||{};j.html.Entities={encodeRaw:function(m,l){return m.replace(l?k:b,function(n){return g[n]||n})},encodeAllRaw:function(l){return(""+l).replace(f,function(m){return g[m]||m})},encodeNumeric:function(m,l){return m.replace(l?k:b,function(n){if(n.length>1){return"&#"+(((n.charCodeAt(0)-55296)*1024)+(n.charCodeAt(1)-56320)+65536)+";"}return g[n]||"&#"+n.charCodeAt(0)+";"})},encodeNamed:function(n,l,m){m=m||a;return n.replace(l?k:b,function(o){return g[o]||m[o]||o})},getEncodeFunc:function(l,o){var p=j.html.Entities;o=e(o)||a;function m(r,q){return r.replace(q?k:b,function(s){return g[s]||o[s]||"&#"+s.charCodeAt(0)+";"||s})}function n(r,q){return p.encodeNamed(r,q,o)}l=j.makeMap(l.replace(/\+/g,","));if(l.named&&l.numeric){return m}if(l.named){if(o){return n}return p.encodeNamed}if(l.numeric){return p.encodeNumeric}return p.encodeRaw},decode:function(l){return l.replace(c,function(n,m,o){if(m){o=parseInt(o,m.length===2?16:10);if(o>65535){o-=65536;return String.fromCharCode(55296+(o>>10),56320+(o&1023))}else{return i[o]||String.fromCharCode(o)}}return d[n]||a[n]||h(n)})}}})(tinymce);tinymce.html.Styles=function(d,f){var k=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,h=/(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,b=/\s*([^:]+):\s*([^;]+);?/g,l=/\s+$/,m=/rgb/,e,g,a={},j;d=d||{};j="\\\" \\' \\; \\: ; : \uFEFF".split(" ");for(g=0;g<j.length;g++){a[j[g]]="\uFEFF"+g;a["\uFEFF"+g]=j[g]}function c(n,q,p,i){function o(r){r=parseInt(r).toString(16);return r.length>1?r:"0"+r}return"#"+o(q)+o(p)+o(i)}return{toHex:function(i){return i.replace(k,c)},parse:function(s){var z={},q,n,x,r,v=d.url_converter,y=d.url_converter_scope||this;function p(D,G){var F,C,B,E;if(z["border-image"]==="none"){delete z["border-image"]}F=z[D+"-top"+G];if(!F){return}C=z[D+"-right"+G];if(F!=C){return}B=z[D+"-bottom"+G];if(C!=B){return}E=z[D+"-left"+G];if(B!=E){return}z[D+G]=E;delete z[D+"-top"+G];delete z[D+"-right"+G];delete z[D+"-bottom"+G];delete z[D+"-left"+G]}function u(C){var D=z[C],B;if(!D||D.indexOf(" ")<0){return}D=D.split(" ");B=D.length;while(B--){if(D[B]!==D[0]){return false}}z[C]=D[0];return true}function A(D,C,B,E){if(!u(C)){return}if(!u(B)){return}if(!u(E)){return}z[D]=z[C]+" "+z[B]+" "+z[E];delete z[C];delete z[B];delete z[E]}function t(B){r=true;return a[B]}function i(C,B){if(r){C=C.replace(/\uFEFF[0-9]/g,function(D){return a[D]})}if(!B){C=C.replace(/\\([\'\";:])/g,"$1")}return C}function o(C,B,F,E,G,D){G=G||D;if(G){G=i(G);return"'"+G.replace(/\'/g,"\\'")+"'"}B=i(B||F||E);if(v){B=v.call(y,B,"style")}return"url('"+B.replace(/\'/g,"\\'")+"')"}if(s){s=s.replace(/\\[\"\';:\uFEFF]/g,t).replace(/\"[^\"]+\"|\'[^\']+\'/g,function(B){return B.replace(/[;:]/g,t)});while(q=b.exec(s)){n=q[1].replace(l,"").toLowerCase();x=q[2].replace(l,"");if(n&&x.length>0){if(n==="font-weight"&&x==="700"){x="bold"}else{if(n==="color"||n==="background-color"){x=x.toLowerCase()}}x=x.replace(k,c);x=x.replace(h,o);z[n]=r?i(x,true):x}b.lastIndex=q.index+q[0].length}p("border","");p("border","-width");p("border","-color");p("border","-style");p("padding","");p("margin","");A("border","border-width","border-style","border-color");if(z.border==="medium none"){delete z.border}}return z},serialize:function(p,r){var o="",n,q;function i(t){var x,u,s,v;x=f.styles[t];if(x){for(u=0,s=x.length;u<s;u++){t=x[u];v=p[t];if(v!==e&&v.length>0){o+=(o.length>0?" ":"")+t+": "+v+";"}}}}if(r&&f&&f.styles){i("*");i(r)}else{for(n in p){q=p[n];if(q!==e&&q.length>0){o+=(o.length>0?" ":"")+n+": "+q+";"}}}return o}}};(function(f){var a={},e=f.makeMap,g=f.each;function d(j,i){return j.split(i||",")}function h(m,l){var j,k={};function i(n){return n.replace(/[A-Z]+/g,function(o){return i(m[o])})}for(j in m){if(m.hasOwnProperty(j)){m[j]=i(m[j])}}i(l).replace(/#/g,"#text").replace(/(\w+)\[([^\]]+)\]\[([^\]]*)\]/g,function(q,o,n,p){n=d(n,"|");k[o]={attributes:e(n),attributesOrder:n,children:e(p,"|",{"#comment":{}})}});return k}function b(){var i=a.html5;if(!i){i=a.html5=h({A:"id|accesskey|class|dir|draggable|item|hidden|itemprop|role|spellcheck|style|subject|title|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup",B:"#|a|abbr|area|audio|b|bdo|br|button|canvas|cite|code|command|datalist|del|dfn|em|embed|i|iframe|img|input|ins|kbd|keygen|label|link|map|mark|meta|meter|noscript|object|output|progress|q|ruby|samp|script|select|small|span|strong|sub|sup|svg|textarea|time|var|video|wbr",C:"#|a|abbr|area|address|article|aside|audio|b|bdo|blockquote|br|button|canvas|cite|code|command|datalist|del|details|dfn|dialog|div|dl|em|embed|fieldset|figure|footer|form|h1|h2|h3|h4|h5|h6|header|hgroup|hr|i|iframe|img|input|ins|kbd|keygen|label|link|map|mark|menu|meta|meter|nav|noscript|ol|object|output|p|pre|progress|q|ruby|samp|script|section|select|small|span|strong|style|sub|sup|svg|table|textarea|time|ul|var|video"},"html[A|manifest][body|head]head[A][base|command|link|meta|noscript|script|style|title]title[A][#]base[A|href|target][]link[A|href|rel|media|type|sizes][]meta[A|http-equiv|name|content|charset][]style[A|type|media|scoped][#]script[A|charset|type|src|defer|async][#]noscript[A][C]body[A][C]section[A][C]nav[A][C]article[A][C]aside[A][C]h1[A][B]h2[A][B]h3[A][B]h4[A][B]h5[A][B]h6[A][B]hgroup[A][h1|h2|h3|h4|h5|h6]header[A][C]footer[A][C]address[A][C]p[A][B]br[A][]pre[A][B]dialog[A][dd|dt]blockquote[A|cite][C]ol[A|start|reversed][li]ul[A][li]li[A|value][C]dl[A][dd|dt]dt[A][B]dd[A][C]a[A|href|target|ping|rel|media|type][B]em[A][B]strong[A][B]small[A][B]cite[A][B]q[A|cite][B]dfn[A][B]abbr[A][B]code[A][B]var[A][B]samp[A][B]kbd[A][B]sub[A][B]sup[A][B]i[A][B]b[A][B]mark[A][B]progress[A|value|max][B]meter[A|value|min|max|low|high|optimum][B]time[A|datetime][B]ruby[A][B|rt|rp]rt[A][B]rp[A][B]bdo[A][B]span[A][B]ins[A|cite|datetime][B]del[A|cite|datetime][B]figure[A][C|legend|figcaption]figcaption[A][C]img[A|alt|src|height|width|usemap|ismap][]iframe[A|name|src|height|width|sandbox|seamless][]embed[A|src|height|width|type][]object[A|data|type|height|width|usemap|name|form|classid][param]param[A|name|value][]details[A|open][C|legend]command[A|type|label|icon|disabled|checked|radiogroup][]menu[A|type|label][C|li]legend[A][C|B]div[A][C]source[A|src|type|media][]audio[A|src|autobuffer|autoplay|loop|controls][source]video[A|src|autobuffer|autoplay|loop|controls|width|height|poster][source]hr[A][]form[A|accept-charset|action|autocomplete|enctype|method|name|novalidate|target][C]fieldset[A|disabled|form|name][C|legend]label[A|form|for][B]input[A|type|accept|alt|autocomplete|autofocus|checked|disabled|form|formaction|formenctype|formmethod|formnovalidate|formtarget|height|list|max|maxlength|min|multiple|pattern|placeholder|readonly|required|size|src|step|width|files|value|name][]button[A|autofocus|disabled|form|formaction|formenctype|formmethod|formnovalidate|formtarget|name|value|type][B]select[A|autofocus|disabled|form|multiple|name|size][option|optgroup]datalist[A][B|option]optgroup[A|disabled|label][option]option[A|disabled|selected|label|value][]textarea[A|autofocus|disabled|form|maxlength|name|placeholder|readonly|required|rows|cols|wrap][]keygen[A|autofocus|challenge|disabled|form|keytype|name][]output[A|for|form|name][B]canvas[A|width|height][]map[A|name][B|C]area[A|shape|coords|href|alt|target|media|rel|ping|type][]mathml[A][]svg[A][]table[A|border][caption|colgroup|thead|tfoot|tbody|tr]caption[A][C]colgroup[A|span][col]col[A|span][]thead[A][tr]tfoot[A][tr]tbody[A][tr]tr[A][th|td]th[A|headers|rowspan|colspan|scope][B]td[A|headers|rowspan|colspan][C]wbr[A][]")}return i}function c(){var i=a.html4;if(!i){i=a.html4=h({Z:"H|K|N|O|P",Y:"X|form|R|Q",ZG:"E|span|width|align|char|charoff|valign",X:"p|T|div|U|W|isindex|fieldset|table",ZF:"E|align|char|charoff|valign",W:"pre|hr|blockquote|address|center|noframes",ZE:"abbr|axis|headers|scope|rowspan|colspan|align|char|charoff|valign|nowrap|bgcolor|width|height",ZD:"[E][S]",U:"ul|ol|dl|menu|dir",ZC:"p|Y|div|U|W|table|br|span|bdo|object|applet|img|map|K|N|Q",T:"h1|h2|h3|h4|h5|h6",ZB:"X|S|Q",S:"R|P",ZA:"a|G|J|M|O|P",R:"a|H|K|N|O",Q:"noscript|P",P:"ins|del|script",O:"input|select|textarea|label|button",N:"M|L",M:"em|strong|dfn|code|q|samp|kbd|var|cite|abbr|acronym",L:"sub|sup",K:"J|I",J:"tt|i|b|u|s|strike",I:"big|small|font|basefont",H:"G|F",G:"br|span|bdo",F:"object|applet|img|map|iframe",E:"A|B|C",D:"accesskey|tabindex|onfocus|onblur",C:"onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup",B:"lang|xml:lang|dir",A:"id|class|style|title"},"script[id|charset|type|language|src|defer|xml:space][]style[B|id|type|media|title|xml:space][]object[E|declare|classid|codebase|data|type|codetype|archive|standby|width|height|usemap|name|tabindex|align|border|hspace|vspace][#|param|Y]param[id|name|value|valuetype|type][]p[E|align][#|S]a[E|D|charset|type|name|href|hreflang|rel|rev|shape|coords|target][#|Z]br[A|clear][]span[E][#|S]bdo[A|C|B][#|S]applet[A|codebase|archive|code|object|alt|name|width|height|align|hspace|vspace][#|param|Y]h1[E|align][#|S]img[E|src|alt|name|longdesc|width|height|usemap|ismap|align|border|hspace|vspace][]map[B|C|A|name][X|form|Q|area]h2[E|align][#|S]iframe[A|longdesc|name|src|frameborder|marginwidth|marginheight|scrolling|align|width|height][#|Y]h3[E|align][#|S]tt[E][#|S]i[E][#|S]b[E][#|S]u[E][#|S]s[E][#|S]strike[E][#|S]big[E][#|S]small[E][#|S]font[A|B|size|color|face][#|S]basefont[id|size|color|face][]em[E][#|S]strong[E][#|S]dfn[E][#|S]code[E][#|S]q[E|cite][#|S]samp[E][#|S]kbd[E][#|S]var[E][#|S]cite[E][#|S]abbr[E][#|S]acronym[E][#|S]sub[E][#|S]sup[E][#|S]input[E|D|type|name|value|checked|disabled|readonly|size|maxlength|src|alt|usemap|onselect|onchange|accept|align][]select[E|name|size|multiple|disabled|tabindex|onfocus|onblur|onchange][optgroup|option]optgroup[E|disabled|label][option]option[E|selected|disabled|label|value][]textarea[E|D|name|rows|cols|disabled|readonly|onselect|onchange][]label[E|for|accesskey|onfocus|onblur][#|S]button[E|D|name|value|type|disabled][#|p|T|div|U|W|table|G|object|applet|img|map|K|N|Q]h4[E|align][#|S]ins[E|cite|datetime][#|Y]h5[E|align][#|S]del[E|cite|datetime][#|Y]h6[E|align][#|S]div[E|align][#|Y]ul[E|type|compact][li]li[E|type|value][#|Y]ol[E|type|compact|start][li]dl[E|compact][dt|dd]dt[E][#|S]dd[E][#|Y]menu[E|compact][li]dir[E|compact][li]pre[E|width|xml:space][#|ZA]hr[E|align|noshade|size|width][]blockquote[E|cite][#|Y]address[E][#|S|p]center[E][#|Y]noframes[E][#|Y]isindex[A|B|prompt][]fieldset[E][#|legend|Y]legend[E|accesskey|align][#|S]table[E|summary|width|border|frame|rules|cellspacing|cellpadding|align|bgcolor][caption|col|colgroup|thead|tfoot|tbody|tr]caption[E|align][#|S]col[ZG][]colgroup[ZG][col]thead[ZF][tr]tr[ZF|bgcolor][th|td]th[E|ZE][#|Y]form[E|action|method|name|enctype|onsubmit|onreset|accept|accept-charset|target][#|X|R|Q]noscript[E][#|Y]td[E|ZE][#|Y]tfoot[ZF][tr]tbody[ZF][tr]area[E|D|shape|coords|href|nohref|alt|target][]base[id|href|target][]body[E|onload|onunload|background|bgcolor|text|link|vlink|alink][#|Y]")}return i}f.html.Schema=function(A){var u=this,s={},k={},j=[],D,y;var o,q,z,r,v,n,p={};function m(F,E,H){var G=A[F];if(!G){G=a[F];if(!G){G=e(E," ",e(E.toUpperCase()," "));G=f.extend(G,H);a[F]=G}}else{G=e(G,",",e(G.toUpperCase()," "))}return G}A=A||{};y=A.schema=="html5"?b():c();if(A.verify_html===false){A.valid_elements="*[*]"}if(A.valid_styles){D={};g(A.valid_styles,function(F,E){D[E]=f.explode(F)})}o=m("whitespace_elements","pre script noscript style textarea");q=m("self_closing_elements","colgroup dd dt li option p td tfoot th thead tr");z=m("short_ended_elements","area base basefont br col frame hr img input isindex link meta param embed source wbr");r=m("boolean_attributes","checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls");n=m("non_empty_elements","td th iframe video audio object script",z);textBlockElementsMap=m("text_block_elements","h1 h2 h3 h4 h5 h6 p div address pre form blockquote center dir fieldset header footer article section hgroup aside nav figure");v=m("block_elements","hr table tbody thead tfoot th tr td li ol ul caption dl dt dd noscript menu isindex samp option datalist select optgroup",textBlockElementsMap);function i(E){return new RegExp("^"+E.replace(/([?+*])/g,".$1")+"$")}function C(L){var K,G,Z,V,aa,F,I,U,X,Q,Y,ac,O,J,W,E,S,H,ab,ad,P,T,N=/^([#+\-])?([^\[\/]+)(?:\/([^\[]+))?(?:\[([^\]]+)\])?$/,R=/^([!\-])?(\w+::\w+|[^=:<]+)?(?:([=:<])(.*))?$/,M=/[*?+]/;if(L){L=d(L);if(s["@"]){S=s["@"].attributes;H=s["@"].attributesOrder}for(K=0,G=L.length;K<G;K++){F=N.exec(L[K]);if(F){W=F[1];Q=F[2];E=F[3];X=F[4];O={};J=[];I={attributes:O,attributesOrder:J};if(W==="#"){I.paddEmpty=true}if(W==="-"){I.removeEmpty=true}if(S){for(ad in S){O[ad]=S[ad]}J.push.apply(J,H)}if(X){X=d(X,"|");for(Z=0,V=X.length;Z<V;Z++){F=R.exec(X[Z]);if(F){U={};ac=F[1];Y=F[2].replace(/::/g,":");W=F[3];T=F[4];if(ac==="!"){I.attributesRequired=I.attributesRequired||[];I.attributesRequired.push(Y);U.required=true}if(ac==="-"){delete O[Y];J.splice(f.inArray(J,Y),1);continue}if(W){if(W==="="){I.attributesDefault=I.attributesDefault||[];I.attributesDefault.push({name:Y,value:T});U.defaultValue=T}if(W===":"){I.attributesForced=I.attributesForced||[];I.attributesForced.push({name:Y,value:T});U.forcedValue=T}if(W==="<"){U.validValues=e(T,"?")}}if(M.test(Y)){I.attributePatterns=I.attributePatterns||[];U.pattern=i(Y);I.attributePatterns.push(U)}else{if(!O[Y]){J.push(Y)}O[Y]=U}}}}if(!S&&Q=="@"){S=O;H=J}if(E){I.outputName=Q;s[E]=I}if(M.test(Q)){I.pattern=i(Q);j.push(I)}else{s[Q]=I}}}}}function t(E){s={};j=[];C(E);g(y,function(G,F){k[F]=G.children})}function l(F){var E=/^(~)?(.+)$/;if(F){g(d(F),function(J){var H=E.exec(J),I=H[1]==="~",K=I?"span":"div",G=H[2];k[G]=k[K];p[G]=K;if(!I){v[G.toUpperCase()]={};v[G]={}}if(!s[G]){s[G]=s[K]}g(k,function(L,M){if(L[K]){L[G]=L[K]}})})}}function x(F){var E=/^([+\-]?)(\w+)\[([^\]]+)\]$/;if(F){g(d(F),function(J){var I=E.exec(J),G,H;if(I){H=I[1];if(H){G=k[I[2]]}else{G=k[I[2]]={"#comment":{}}}G=k[I[2]];g(d(I[3],"|"),function(K){if(H==="-"){delete G[K]}else{G[K]={}}})}})}}function B(E){var G=s[E],F;if(G){return G}F=j.length;while(F--){G=j[F];if(G.pattern.test(E)){return G}}}if(!A.valid_elements){g(y,function(F,E){s[E]={attributes:F.attributes,attributesOrder:F.attributesOrder};k[E]=F.children});if(A.schema!="html5"){g(d("strong/b,em/i"),function(E){E=d(E,"/");s[E[1]].outputName=E[0]})}s.img.attributesDefault=[{name:"alt",value:""}];g(d("ol,ul,sub,sup,blockquote,span,font,a,table,tbody,tr,strong,em,b,i"),function(E){if(s[E]){s[E].removeEmpty=true}});g(d("p,h1,h2,h3,h4,h5,h6,th,td,pre,div,address,caption"),function(E){s[E].paddEmpty=true})}else{t(A.valid_elements)}l(A.custom_elements);x(A.valid_children);C(A.extended_valid_elements);x("+ol[ul|ol],+ul[ul|ol]");if(A.invalid_elements){f.each(f.explode(A.invalid_elements),function(E){if(s[E]){delete s[E]}})}if(!B("span")){C("span[!data-mce-type|*]")}u.children=k;u.styles=D;u.getBoolAttrs=function(){return r};u.getBlockElements=function(){return v};u.getTextBlockElements=function(){return textBlockElementsMap};u.getShortEndedElements=function(){return z};u.getSelfClosingElements=function(){return q};u.getNonEmptyElements=function(){return n};u.getWhiteSpaceElements=function(){return o};u.isValidChild=function(E,G){var F=k[E];return !!(F&&F[G])};u.isValid=function(F,E){var H,G,I=B(F);if(I){if(E){if(I.attributes[E]){return true}H=I.attributePatterns;if(H){G=H.length;while(G--){if(H[G].pattern.test(F)){return true}}}}else{return true}}return false};u.getElementRule=B;u.getCustomElements=function(){return p};u.addValidElements=C;u.setValidElements=t;u.addCustomElements=l;u.addValidChildren=x;u.elements=s}})(tinymce);(function(a){a.html.SaxParser=function(c,e){var b=this,d=function(){};c=c||{};b.schema=e=e||new a.html.Schema();if(c.fix_self_closing!==false){c.fix_self_closing=true}a.each("comment cdata text start end pi doctype".split(" "),function(f){if(f){b[f]=c[f]||d}});b.parse=function(E){var n=this,g,G=0,I,B,A=[],N,Q,C,r,z,s,M,H,O,v,m,k,t,R,o,P,F,S,L,f,J,l,D,K,h,x=0,j=a.html.Entities.decode,y,q;function u(T){var V,U;V=A.length;while(V--){if(A[V].name===T){break}}if(V>=0){for(U=A.length-1;U>=V;U--){T=A[U];if(T.valid){n.end(T.name)}}A.length=V}}function p(U,T,Y,X,W){var Z,V;T=T.toLowerCase();Y=T in H?T:j(Y||X||W||"");if(v&&!z&&T.indexOf("data-")!==0){Z=P[T];if(!Z&&F){V=F.length;while(V--){Z=F[V];if(Z.pattern.test(T)){break}}if(V===-1){Z=null}}if(!Z){return}if(Z.validValues&&!(Y in Z.validValues)){return}}N.map[T]=Y;N.push({name:T,value:Y})}l=new RegExp("<(?:(?:!--([\\w\\W]*?)-->)|(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|(?:!DOCTYPE([\\w\\W]*?)>)|(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|(?:\\/([^>]+)>)|(?:([A-Za-z0-9\\-\\:\\.]+)((?:\\s+[^\"'>]+(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>]*))*|\\/|\\s+)>))","g");D=/([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g;K={script:/<\/script[^>]*>/gi,style:/<\/style[^>]*>/gi,noscript:/<\/noscript[^>]*>/gi};M=e.getShortEndedElements();J=c.self_closing_elements||e.getSelfClosingElements();H=e.getBoolAttrs();v=c.validate;s=c.remove_internals;y=c.fix_self_closing;q=a.isIE;o=/^:/;while(g=l.exec(E)){if(G<g.index){n.text(j(E.substr(G,g.index-G)))}if(I=g[6]){I=I.toLowerCase();if(q&&o.test(I)){I=I.substr(1)}u(I)}else{if(I=g[7]){I=I.toLowerCase();if(q&&o.test(I)){I=I.substr(1)}O=I in M;if(y&&J[I]&&A.length>0&&A[A.length-1].name===I){u(I)}if(!v||(m=e.getElementRule(I))){k=true;if(v){P=m.attributes;F=m.attributePatterns}if(R=g[8]){z=R.indexOf("data-mce-type")!==-1;if(z&&s){k=false}N=[];N.map={};R.replace(D,p)}else{N=[];N.map={}}if(v&&!z){S=m.attributesRequired;L=m.attributesDefault;f=m.attributesForced;if(f){Q=f.length;while(Q--){t=f[Q];r=t.name;h=t.value;if(h==="{$uid}"){h="mce_"+x++}N.map[r]=h;N.push({name:r,value:h})}}if(L){Q=L.length;while(Q--){t=L[Q];r=t.name;if(!(r in N.map)){h=t.value;if(h==="{$uid}"){h="mce_"+x++}N.map[r]=h;N.push({name:r,value:h})}}}if(S){Q=S.length;while(Q--){if(S[Q] in N.map){break}}if(Q===-1){k=false}}if(N.map["data-mce-bogus"]){k=false}}if(k){n.start(I,N,O)}}else{k=false}if(B=K[I]){B.lastIndex=G=g.index+g[0].length;if(g=B.exec(E)){if(k){C=E.substr(G,g.index-G)}G=g.index+g[0].length}else{C=E.substr(G);G=E.length}if(k&&C.length>0){n.text(C,true)}if(k){n.end(I)}l.lastIndex=G;continue}if(!O){if(!R||R.indexOf("/")!=R.length-1){A.push({name:I,valid:k})}else{if(k){n.end(I)}}}}else{if(I=g[1]){n.comment(I)}else{if(I=g[2]){n.cdata(I)}else{if(I=g[3]){n.doctype(I)}else{if(I=g[4]){n.pi(I,g[5])}}}}}}G=g.index+g[0].length}if(G<E.length){n.text(j(E.substr(G)))}for(Q=A.length-1;Q>=0;Q--){I=A[Q];if(I.valid){n.end(I.name)}}}}})(tinymce);(function(d){var c=/^[ \t\r\n]*$/,e={"#text":3,"#comment":8,"#cdata":4,"#pi":7,"#doctype":10,"#document-fragment":11};function a(k,l,j){var i,h,f=j?"lastChild":"firstChild",g=j?"prev":"next";if(k[f]){return k[f]}if(k!==l){i=k[g];if(i){return i}for(h=k.parent;h&&h!==l;h=h.parent){i=h[g];if(i){return i}}}}function b(f,g){this.name=f;this.type=g;if(g===1){this.attributes=[];this.attributes.map={}}}d.extend(b.prototype,{replace:function(g){var f=this;if(g.parent){g.remove()}f.insert(g,f);f.remove();return f},attr:function(h,l){var f=this,g,j,k;if(typeof h!=="string"){for(j in h){f.attr(j,h[j])}return f}if(g=f.attributes){if(l!==k){if(l===null){if(h in g.map){delete g.map[h];j=g.length;while(j--){if(g[j].name===h){g=g.splice(j,1);return f}}}return f}if(h in g.map){j=g.length;while(j--){if(g[j].name===h){g[j].value=l;break}}}else{g.push({name:h,value:l})}g.map[h]=l;return f}else{return g.map[h]}}},clone:function(){var g=this,n=new b(g.name,g.type),h,f,m,j,k;if(m=g.attributes){k=[];k.map={};for(h=0,f=m.length;h<f;h++){j=m[h];if(j.name!=="id"){k[k.length]={name:j.name,value:j.value};k.map[j.name]=j.value}}n.attributes=k}n.value=g.value;n.shortEnded=g.shortEnded;return n},wrap:function(g){var f=this;f.parent.insert(g,f);g.append(f);return f},unwrap:function(){var f=this,h,g;for(h=f.firstChild;h;){g=h.next;f.insert(h,f,true);h=g}f.remove()},remove:function(){var f=this,h=f.parent,g=f.next,i=f.prev;if(h){if(h.firstChild===f){h.firstChild=g;if(g){g.prev=null}}else{i.next=g}if(h.lastChild===f){h.lastChild=i;if(i){i.next=null}}else{g.prev=i}f.parent=f.next=f.prev=null}return f},append:function(h){var f=this,g;if(h.parent){h.remove()}g=f.lastChild;if(g){g.next=h;h.prev=g;f.lastChild=h}else{f.lastChild=f.firstChild=h}h.parent=f;return h},insert:function(h,f,i){var g;if(h.parent){h.remove()}g=f.parent||this;if(i){if(f===g.firstChild){g.firstChild=h}else{f.prev.next=h}h.prev=f.prev;h.next=f;f.prev=h}else{if(f===g.lastChild){g.lastChild=h}else{f.next.prev=h}h.next=f.next;h.prev=f;f.next=h}h.parent=g;return h},getAll:function(g){var f=this,h,i=[];for(h=f.firstChild;h;h=a(h,f)){if(h.name===g){i.push(h)}}return i},empty:function(){var g=this,f,h,j;if(g.firstChild){f=[];for(j=g.firstChild;j;j=a(j,g)){f.push(j)}h=f.length;while(h--){j=f[h];j.parent=j.firstChild=j.lastChild=j.next=j.prev=null}}g.firstChild=g.lastChild=null;return g},isEmpty:function(k){var f=this,j=f.firstChild,h,g;if(j){do{if(j.type===1){if(j.attributes.map["data-mce-bogus"]){continue}if(k[j.name]){return false}h=j.attributes.length;while(h--){g=j.attributes[h].name;if(g==="name"||g.indexOf("data-mce-")===0){return false}}}if(j.type===8){return false}if((j.type===3&&!c.test(j.value))){return false}}while(j=a(j,f))}return true},walk:function(f){return a(this,null,f)}});d.extend(b,{create:function(g,f){var i,h;i=new b(g,e[g]||1);if(f){for(h in f){i.attr(h,f[h])}}return i}});d.html.Node=b})(tinymce);(function(b){var a=b.html.Node;b.html.DomParser=function(g,h){var f=this,e={},d=[],i={},c={};g=g||{};g.validate="validate" in g?g.validate:true;g.root_name=g.root_name||"body";f.schema=h=h||new b.html.Schema();function j(n){var p,q,y,x,A,o,r,l,u,v,k,t,m,z,s;t=b.makeMap("tr,td,th,tbody,thead,tfoot,table");k=h.getNonEmptyElements();m=h.getTextBlockElements();for(p=0;p<n.length;p++){q=n[p];if(!q.parent||q.fixed){continue}if(m[q.name]&&q.parent.name=="li"){z=q.next;while(z){if(m[z.name]){z.name="li";z.fixed=true;q.parent.insert(z,q.parent)}else{break}z=z.next}q.unwrap(q);continue}x=[q];for(y=q.parent;y&&!h.isValidChild(y.name,q.name)&&!t[y.name];y=y.parent){x.push(y)}if(y&&x.length>1){x.reverse();A=o=f.filterNode(x[0].clone());for(u=0;u<x.length-1;u++){if(h.isValidChild(o.name,x[u].name)){r=f.filterNode(x[u].clone());o.append(r)}else{r=o}for(l=x[u].firstChild;l&&l!=x[u+1];){s=l.next;r.append(l);l=s}o=r}if(!A.isEmpty(k)){y.insert(A,x[0],true);y.insert(q,A)}else{y.insert(q,x[0],true)}y=x[0];if(y.isEmpty(k)||y.firstChild===y.lastChild&&y.firstChild.name==="br"){y.empty().remove()}}else{if(q.parent){if(q.name==="li"){z=q.prev;if(z&&(z.name==="ul"||z.name==="ul")){z.append(q);continue}z=q.next;if(z&&(z.name==="ul"||z.name==="ul")){z.insert(q,z.firstChild,true);continue}q.wrap(f.filterNode(new a("ul",1)));continue}if(h.isValidChild(q.parent.name,"div")&&h.isValidChild("div",q.name)){q.wrap(f.filterNode(new a("div",1)))}else{if(q.name==="style"||q.name==="script"){q.empty().remove()}else{q.unwrap()}}}}}}f.filterNode=function(m){var l,k,n;if(k in e){n=i[k];if(n){n.push(m)}else{i[k]=[m]}}l=d.length;while(l--){k=d[l].name;if(k in m.attributes.map){n=c[k];if(n){n.push(m)}else{c[k]=[m]}}}return m};f.addNodeFilter=function(k,l){b.each(b.explode(k),function(m){var n=e[m];if(!n){e[m]=n=[]}n.push(l)})};f.addAttributeFilter=function(k,l){b.each(b.explode(k),function(m){var n;for(n=0;n<d.length;n++){if(d[n].name===m){d[n].callbacks.push(l);return}}d.push({name:m,callbacks:[l]})})};f.parse=function(v,m){var n,J,B,A,D,C,x,r,F,N,z,o,E,M=[],L,t,k,y,s,p,u,q;m=m||{};i={};c={};o=b.extend(b.makeMap("script,style,head,html,body,title,meta,param"),h.getBlockElements());u=h.getNonEmptyElements();p=h.children;z=g.validate;q="forced_root_block" in m?m.forced_root_block:g.forced_root_block;s=h.getWhiteSpaceElements();E=/^[ \t\r\n]+/;t=/[ \t\r\n]+$/;k=/[ \t\r\n]+/g;y=/^[ \t\r\n]+$/;function G(){var O=J.firstChild,l,P;while(O){l=O.next;if(O.type==3||(O.type==1&&O.name!=="p"&&!o[O.name]&&!O.attr("data-mce-type"))){if(!P){P=K(q,1);J.insert(P,O);P.append(O)}else{P.append(O)}}else{P=null}O=l}}function K(l,O){var P=new a(l,O),Q;if(l in e){Q=i[l];if(Q){Q.push(P)}else{i[l]=[P]}}return P}function I(P){var Q,l,O;for(Q=P.prev;Q&&Q.type===3;){l=Q.value.replace(t,"");if(l.length>0){Q.value=l;Q=Q.prev}else{O=Q.prev;Q.remove();Q=O}}}function H(O){var P,l={};for(P in O){if(P!=="li"&&P!="p"){l[P]=O[P]}}return l}n=new b.html.SaxParser({validate:z,self_closing_elements:H(h.getSelfClosingElements()),cdata:function(l){B.append(K("#cdata",4)).value=l},text:function(P,l){var O;if(!L){P=P.replace(k," ");if(B.lastChild&&o[B.lastChild.name]){P=P.replace(E,"")}}if(P.length!==0){O=K("#text",3);O.raw=!!l;B.append(O).value=P}},comment:function(l){B.append(K("#comment",8)).value=l},pi:function(l,O){B.append(K(l,7)).value=O;I(B)},doctype:function(O){var l;l=B.append(K("#doctype",10));l.value=O;I(B)},start:function(l,W,P){var U,R,Q,O,S,X,V,T;Q=z?h.getElementRule(l):{};if(Q){U=K(Q.outputName||l,1);U.attributes=W;U.shortEnded=P;B.append(U);T=p[B.name];if(T&&p[U.name]&&!T[U.name]){M.push(U)}R=d.length;while(R--){S=d[R].name;if(S in W.map){F=c[S];if(F){F.push(U)}else{c[S]=[U]}}}if(o[l]){I(U)}if(!P){B=U}if(!L&&s[l]){L=true}}},end:function(l){var S,P,R,O,Q;P=z?h.getElementRule(l):{};if(P){if(o[l]){if(!L){S=B.firstChild;if(S&&S.type===3){R=S.value.replace(E,"");if(R.length>0){S.value=R;S=S.next}else{O=S.next;S.remove();S=O}while(S&&S.type===3){R=S.value;O=S.next;if(R.length===0||y.test(R)){S.remove();S=O}S=O}}S=B.lastChild;if(S&&S.type===3){R=S.value.replace(t,"");if(R.length>0){S.value=R;S=S.prev}else{O=S.prev;S.remove();S=O}while(S&&S.type===3){R=S.value;O=S.prev;if(R.length===0||y.test(R)){S.remove();S=O}S=O}}}}if(L&&s[l]){L=false}if(P.removeEmpty||P.paddEmpty){if(B.isEmpty(u)){if(P.paddEmpty){B.empty().append(new a("#text","3")).value="\u00a0"}else{if(!B.attributes.map.name&&!B.attributes.map.id){Q=B.parent;B.empty().remove();B=Q;return}}}}B=B.parent}}},h);J=B=new a(m.context||g.root_name,11);n.parse(v);if(z&&M.length){if(!m.context){j(M)}else{m.invalid=true}}if(q&&J.name=="body"){G()}if(!m.invalid){for(N in i){F=e[N];A=i[N];x=A.length;while(x--){if(!A[x].parent){A.splice(x,1)}}for(D=0,C=F.length;D<C;D++){F[D](A,N,m)}}for(D=0,C=d.length;D<C;D++){F=d[D];if(F.name in c){A=c[F.name];x=A.length;while(x--){if(!A[x].parent){A.splice(x,1)}}for(x=0,r=F.callbacks.length;x<r;x++){F.callbacks[x](A,F.name,m)}}}}return J};if(g.remove_trailing_brs){f.addNodeFilter("br",function(n,m){var r,q=n.length,o,v=b.extend({},h.getBlockElements()),k=h.getNonEmptyElements(),t,s,p,u;v.body=1;for(r=0;r<q;r++){o=n[r];t=o.parent;if(v[o.parent.name]&&o===t.lastChild){p=o.prev;while(p){u=p.name;if(u!=="span"||p.attr("data-mce-type")!=="bookmark"){if(u!=="br"){break}if(u==="br"){o=null;break}}p=p.prev}if(o){o.remove();if(t.isEmpty(k)){elementRule=h.getElementRule(t.name);if(elementRule){if(elementRule.removeEmpty){t.remove()}else{if(elementRule.paddEmpty){t.empty().append(new b.html.Node("#text",3)).value="\u00a0"}}}}}}else{s=o;while(t.firstChild===s&&t.lastChild===s){s=t;if(v[t.name]){break}t=t.parent}if(s===t){textNode=new b.html.Node("#text",3);textNode.value="\u00a0";o.replace(textNode)}}}})}if(!g.allow_html_in_named_anchor){f.addAttributeFilter("id,name",function(k,l){var n=k.length,p,m,o,q;while(n--){q=k[n];if(q.name==="a"&&q.firstChild&&!q.attr("href")){o=q.parent;p=q.lastChild;do{m=p.prev;o.insert(p,q);p=m}while(p)}}})}}})(tinymce);tinymce.html.Writer=function(e){var c=[],a,b,d,f,g;e=e||{};a=e.indent;b=tinymce.makeMap(e.indent_before||"");d=tinymce.makeMap(e.indent_after||"");f=tinymce.html.Entities.getEncodeFunc(e.entity_encoding||"raw",e.entities);g=e.element_format=="html";return{start:function(m,k,p){var n,j,h,o;if(a&&b[m]&&c.length>0){o=c[c.length-1];if(o.length>0&&o!=="\n"){c.push("\n")}}c.push("<",m);if(k){for(n=0,j=k.length;n<j;n++){h=k[n];c.push(" ",h.name,'="',f(h.value,true),'"')}}if(!p||g){c[c.length]=">"}else{c[c.length]=" />"}if(p&&a&&d[m]&&c.length>0){o=c[c.length-1];if(o.length>0&&o!=="\n"){c.push("\n")}}},end:function(h){var i;c.push("</",h,">");if(a&&d[h]&&c.length>0){i=c[c.length-1];if(i.length>0&&i!=="\n"){c.push("\n")}}},text:function(i,h){if(i.length>0){c[c.length]=h?i:f(i)}},cdata:function(h){c.push("<![CDATA[",h,"]]>")},comment:function(h){c.push("<!--",h,"-->")},pi:function(h,i){if(i){c.push("<?",h," ",i,"?>")}else{c.push("<?",h,"?>")}if(a){c.push("\n")}},doctype:function(h){c.push("<!DOCTYPE",h,">",a?"\n":"")},reset:function(){c.length=0},getContent:function(){return c.join("").replace(/\n$/,"")}}};(function(a){a.html.Serializer=function(c,d){var b=this,e=new a.html.Writer(c);c=c||{};c.validate="validate" in c?c.validate:true;b.schema=d=d||new a.html.Schema();b.writer=e;b.serialize=function(h){var g,i;i=c.validate;g={3:function(k,j){e.text(k.value,k.raw)},8:function(j){e.comment(j.value)},7:function(j){e.pi(j.name,j.value)},10:function(j){e.doctype(j.value)},4:function(j){e.cdata(j.value)},11:function(j){if((j=j.firstChild)){do{f(j)}while(j=j.next)}}};e.reset();function f(k){var t=g[k.type],j,o,s,r,p,u,n,m,q;if(!t){j=k.name;o=k.shortEnded;s=k.attributes;if(i&&s&&s.length>1){u=[];u.map={};q=d.getElementRule(k.name);for(n=0,m=q.attributesOrder.length;n<m;n++){r=q.attributesOrder[n];if(r in s.map){p=s.map[r];u.map[r]=p;u.push({name:r,value:p})}}for(n=0,m=s.length;n<m;n++){r=s[n].name;if(!(r in u.map)){p=s.map[r];u.map[r]=p;u.push({name:r,value:p})}}s=u}e.start(k.name,s,o);if(!o){if((k=k.firstChild)){do{f(k)}while(k=k.next)}e.end(j)}}else{t(k)}}if(h.type==1&&!c.inner){f(h)}else{g[11](h)}return e.getContent()}}})(tinymce);tinymce.dom={};(function(b,h){var g=!!document.addEventListener;function c(k,j,l,i){if(k.addEventListener){k.addEventListener(j,l,i||false)}else{if(k.attachEvent){k.attachEvent("on"+j,l)}}}function e(k,j,l,i){if(k.removeEventListener){k.removeEventListener(j,l,i||false)}else{if(k.detachEvent){k.detachEvent("on"+j,l)}}}function a(n,l){var i,k=l||{};function j(){return false}function m(){return true}for(i in n){if(i!=="layerX"&&i!=="layerY"){k[i]=n[i]}}if(!k.target){k.target=k.srcElement||document}k.preventDefault=function(){k.isDefaultPrevented=m;if(n){if(n.preventDefault){n.preventDefault()}else{n.returnValue=false}}};k.stopPropagation=function(){k.isPropagationStopped=m;if(n){if(n.stopPropagation){n.stopPropagation()}else{n.cancelBubble=true}}};k.stopImmediatePropagation=function(){k.isImmediatePropagationStopped=m;k.stopPropagation()};if(!k.isDefaultPrevented){k.isDefaultPrevented=j;k.isPropagationStopped=j;k.isImmediatePropagationStopped=j}return k}function d(m,n,l){var k=m.document,j={type:"ready"};function i(){if(!l.domLoaded){l.domLoaded=true;n(j)}}if(k.readyState=="complete"){i();return}if(g){c(m,"DOMContentLoaded",i)}else{c(k,"readystatechange",function(){if(k.readyState==="complete"){e(k,"readystatechange",arguments.callee);i()}});if(k.documentElement.doScroll&&m===m.top){(function(){try{k.documentElement.doScroll("left")}catch(o){setTimeout(arguments.callee,0);return}i()})()}}c(m,"load",i)}function f(k){var q=this,p={},i,o,n,m,l;m="onmouseenter" in document.documentElement;n="onfocusin" in document.documentElement;l={mouseenter:"mouseover",mouseleave:"mouseout"};i=1;q.domLoaded=false;q.events=p;function j(t,x){var s,u,r,v;s=p[x][t.type];if(s){for(u=0,r=s.length;u<r;u++){v=s[u];if(v&&v.func.call(v.scope,t)===false){t.preventDefault()}if(t.isImmediatePropagationStopped()){return}}}}q.bind=function(x,A,D,E){var s,t,u,r,B,z,C,v=window;function y(F){j(a(F||v.event),s)}if(!x||x.nodeType===3||x.nodeType===8){return}if(!x[h]){s=i++;x[h]=s;p[s]={}}else{s=x[h];if(!p[s]){p[s]={}}}E=E||x;A=A.split(" ");u=A.length;while(u--){r=A[u];z=y;B=C=false;if(r==="DOMContentLoaded"){r="ready"}if((q.domLoaded||x.readyState=="complete")&&r==="ready"){q.domLoaded=true;D.call(E,a({type:r}));continue}if(!m){B=l[r];if(B){z=function(F){var H,G;H=F.currentTarget;G=F.relatedTarget;if(G&&H.contains){G=H.contains(G)}else{while(G&&G!==H){G=G.parentNode}}if(!G){F=a(F||v.event);F.type=F.type==="mouseout"?"mouseleave":"mouseenter";F.target=H;j(F,s)}}}}if(!n&&(r==="focusin"||r==="focusout")){C=true;B=r==="focusin"?"focus":"blur";z=function(F){F=a(F||v.event);F.type=F.type==="focus"?"focusin":"focusout";j(F,s)}}t=p[s][r];if(!t){p[s][r]=t=[{func:D,scope:E}];t.fakeName=B;t.capture=C;t.nativeHandler=z;if(!g){t.proxyHandler=k(s)}if(r==="ready"){d(x,z,q)}else{c(x,B||r,g?z:t.proxyHandler,C)}}else{t.push({func:D,scope:E})}}x=t=0;return D};q.unbind=function(x,z,A){var s,u,v,B,r,t;if(!x||x.nodeType===3||x.nodeType===8){return q}s=x[h];if(s){t=p[s];if(z){z=z.split(" ");v=z.length;while(v--){r=z[v];u=t[r];if(u){if(A){B=u.length;while(B--){if(u[B].func===A){u.splice(B,1)}}}if(!A||u.length===0){delete t[r];e(x,u.fakeName||r,g?u.nativeHandler:u.proxyHandler,u.capture)}}}}else{for(r in t){u=t[r];e(x,u.fakeName||r,g?u.nativeHandler:u.proxyHandler,u.capture)}t={}}for(r in t){return q}delete p[s];try{delete x[h]}catch(y){x[h]=null}}return q};q.fire=function(u,s,r){var v,t;if(!u||u.nodeType===3||u.nodeType===8){return q}t=a(null,r);t.type=s;do{v=u[h];if(v){j(t,v)}u=u.parentNode||u.ownerDocument||u.defaultView||u.parentWindow}while(u&&!t.isPropagationStopped());return q};q.clean=function(u){var s,r,t=q.unbind;if(!u||u.nodeType===3||u.nodeType===8){return q}if(u[h]){t(u)}if(!u.getElementsByTagName){u=u.document}if(u&&u.getElementsByTagName){t(u);r=u.getElementsByTagName("*");s=r.length;while(s--){u=r[s];if(u[h]){t(u)}}}return q};q.callNativeHandler=function(s,r){if(p){p[s][r.type].nativeHandler(r)}};q.destory=function(){p={}};q.add=function(v,s,u,t){if(typeof(v)==="string"){v=document.getElementById(v)}if(v&&v instanceof Array){var r=v.length;while(r--){q.add(v[r],s,u,t)}return}if(s==="init"){s="ready"}return q.bind(v,s instanceof Array?s.join(" "):s,u,t)};q.remove=function(v,s,u,t){if(!v){return q}if(typeof(v)==="string"){v=document.getElementById(v)}if(v instanceof Array){var r=v.length;while(r--){q.remove(v[r],s,u,t)}return q}return q.unbind(v,s instanceof Array?s.join(" "):s,u)};q.clear=function(r){if(typeof(r)==="string"){r=document.getElementById(r)}return q.clean(r)};q.cancel=function(r){if(r){q.prevent(r);q.stop(r)}return false};q.prevent=function(r){if(!r.preventDefault){r=a(r)}r.preventDefault();return false};q.stop=function(r){if(!r.stopPropagation){r=a(r)}r.stopPropagation();return false}}b.EventUtils=f;b.Event=new f(function(i){return function(j){tinymce.dom.Event.callNativeHandler(i,j)}});b.Event.bind(window,"ready",function(){});b=0})(tinymce.dom,"data-mce-expando");tinymce.dom.TreeWalker=function(a,c){var b=a;function d(i,f,e,j){var h,g;if(i){if(!j&&i[f]){return i[f]}if(i!=c){h=i[e];if(h){return h}for(g=i.parentNode;g&&g!=c;g=g.parentNode){h=g[e];if(h){return h}}}}}this.current=function(){return b};this.next=function(e){return(b=d(b,"firstChild","nextSibling",e))};this.prev=function(e){return(b=d(b,"lastChild","previousSibling",e))}};(function(e){var g=e.each,d=e.is,f=e.isWebKit,b=e.isIE,h=e.html.Entities,c=/^([a-z0-9],?)+$/i,a=/^[ \t\r\n]*$/;e.create("tinymce.dom.DOMUtils",{doc:null,root:null,files:null,pixelStyles:/^(top|left|bottom|right|width|height|borderWidth)$/,props:{"for":"htmlFor","class":"className",className:"className",checked:"checked",disabled:"disabled",maxlength:"maxLength",readonly:"readOnly",selected:"selected",value:"value",id:"id",name:"name",type:"type"},DOMUtils:function(o,l){var k=this,i,j,n;k.doc=o;k.win=window;k.files={};k.cssFlicker=false;k.counter=0;k.stdMode=!e.isIE||o.documentMode>=8;k.boxModel=!e.isIE||o.compatMode=="CSS1Compat"||k.stdMode;k.hasOuterHTML="outerHTML" in o.createElement("a");k.settings=l=e.extend({keep_values:false,hex_colors:1},l);k.schema=l.schema;k.styles=new e.html.Styles({url_converter:l.url_converter,url_converter_scope:l.url_converter_scope},l.schema);if(e.isIE6){try{o.execCommand("BackgroundImageCache",false,true)}catch(m){k.cssFlicker=true}}k.fixDoc(o);k.events=l.ownEvents?new e.dom.EventUtils(l.proxy):e.dom.Event;e.addUnload(k.destroy,k);n=l.schema?l.schema.getBlockElements():{};k.isBlock=function(q){if(!q){return false}var p=q.nodeType;if(p){return !!(p===1&&n[q.nodeName])}return !!n[q]}},fixDoc:function(k){var j=this.settings,i;if(b&&!e.isIE11&&j.schema){("abbr article aside audio canvas details figcaption figure footer header hgroup mark menu meter nav output progress section summary time video").replace(/\w+/g,function(l){k.createElement(l)});for(i in j.schema.getCustomElements()){k.createElement(i)}}},clone:function(k,i){var j=this,m,l;if(!b||e.isIE11||k.nodeType!==1||i){return k.cloneNode(i)}l=j.doc;if(!i){m=l.createElement(k.nodeName);g(j.getAttribs(k),function(n){j.setAttrib(m,n.nodeName,j.getAttrib(k,n.nodeName))});return m}return m.firstChild},getRoot:function(){var i=this,j=i.settings;return(j&&i.get(j.root_element))||i.doc.body},getViewPort:function(j){var k,i;j=!j?this.win:j;k=j.document;i=this.boxModel?k.documentElement:k.body;return{x:j.pageXOffset||i.scrollLeft,y:j.pageYOffset||i.scrollTop,w:j.innerWidth||i.clientWidth,h:j.innerHeight||i.clientHeight}},getRect:function(l){var k,i=this,j;l=i.get(l);k=i.getPos(l);j=i.getSize(l);return{x:k.x,y:k.y,w:j.w,h:j.h}},getSize:function(l){var j=this,i,k;l=j.get(l);i=j.getStyle(l,"width");k=j.getStyle(l,"height");if(i.indexOf("px")===-1){i=0}if(k.indexOf("px")===-1){k=0}return{w:parseInt(i,10)||l.offsetWidth||l.clientWidth,h:parseInt(k,10)||l.offsetHeight||l.clientHeight}},getParent:function(k,j,i){return this.getParents(k,j,i,false)},getParents:function(s,m,k,q){var j=this,i,l=j.settings,p=[];s=j.get(s);q=q===undefined;if(l.strict_root){k=k||j.getRoot()}if(d(m,"string")){i=m;if(m==="*"){m=function(o){return o.nodeType==1}}else{m=function(o){return j.is(o,i)}}}while(s){if(s==k||!s.nodeType||s.nodeType===9){break}if(!m||m(s)){if(q){p.push(s)}else{return s}}s=s.parentNode}return q?p:null},get:function(i){var j;if(i&&this.doc&&typeof(i)=="string"){j=i;i=this.doc.getElementById(i);if(i&&i.id!==j){return this.doc.getElementsByName(j)[1]}}return i},getNext:function(j,i){return this._findSib(j,i,"nextSibling")},getPrev:function(j,i){return this._findSib(j,i,"previousSibling")},select:function(k,j){var i=this;return e.dom.Sizzle(k,i.get(j)||i.get(i.settings.root_element)||i.doc,[])},is:function(l,j){var k;if(l.length===undefined){if(j==="*"){return l.nodeType==1}if(c.test(j)){j=j.toLowerCase().split(/,/);l=l.nodeName.toLowerCase();for(k=j.length-1;k>=0;k--){if(j[k]==l){return true}}return false}}return e.dom.Sizzle.matches(j,l.nodeType?[l]:l).length>0},add:function(l,o,i,k,m){var j=this;return this.run(l,function(r){var q,n;q=d(o,"string")?j.doc.createElement(o):o;j.setAttribs(q,i);if(k){if(k.nodeType){q.appendChild(k)}else{j.setHTML(q,k)}}return !m?r.appendChild(q):q})},create:function(k,i,j){return this.add(this.doc.createElement(k),k,i,j,1)},createHTML:function(q,i,m){var p="",l=this,j;p+="<"+q;for(j in i){if(i.hasOwnProperty(j)){p+=" "+j+'="'+l.encode(i[j])+'"'}}if(typeof(m)!="undefined"){return p+">"+m+"</"+q+">"}return p+" />"},remove:function(i,j){return this.run(i,function(l){var m,k=l.parentNode;if(!k){return null}if(j){while(m=l.firstChild){if(!e.isIE||m.nodeType!==3||m.nodeValue){k.insertBefore(m,l)}else{l.removeChild(m)}}}return k.removeChild(l)})},setStyle:function(l,i,j){var k=this;return k.run(l,function(o){var n,m;n=o.style;i=i.replace(/-(\D)/g,function(q,p){return p.toUpperCase()});if(k.pixelStyles.test(i)&&(e.is(j,"number")||/^[\-0-9\.]+$/.test(j))){j+="px"}switch(i){case"opacity":if(b&&!e.isIE11){n.filter=j===""?"":"alpha(opacity="+(j*100)+")";if(!l.currentStyle||!l.currentStyle.hasLayout){n.display="inline-block"}}n[i]=n["-moz-opacity"]=n["-khtml-opacity"]=j||"";break;case"float":(b&&!e.isIE11)?n.styleFloat=j:n.cssFloat=j;break;default:n[i]=j||""}if(k.settings.update_styles){k.setAttrib(o,"data-mce-style")}})},getStyle:function(l,i,k){l=this.get(l);if(!l){return}if(this.doc.defaultView&&k){i=i.replace(/[A-Z]/g,function(m){return"-"+m});try{return this.doc.defaultView.getComputedStyle(l,null).getPropertyValue(i)}catch(j){return null}}i=i.replace(/-(\D)/g,function(n,m){return m.toUpperCase()});if(i=="float"){i=b?"styleFloat":"cssFloat"}if(l.currentStyle&&k){return l.currentStyle[i]}return l.style?l.style[i]:undefined},setStyles:function(l,m){var j=this,k=j.settings,i;i=k.update_styles;k.update_styles=0;g(m,function(o,p){j.setStyle(l,p,o)});k.update_styles=i;if(k.update_styles){j.setAttrib(l,k.cssText)}},removeAllAttribs:function(i){return this.run(i,function(l){var k,j=l.attributes;for(k=j.length-1;k>=0;k--){l.removeAttributeNode(j.item(k))}})},setAttrib:function(k,l,i){var j=this;if(!k||!l){return}if(j.settings.strict){l=l.toLowerCase()}return this.run(k,function(p){var o=j.settings;var m=p.getAttribute(l);if(i!==null){switch(l){case"style":if(!d(i,"string")){g(i,function(q,r){j.setStyle(p,r,q)});return}if(o.keep_values){if(i&&!j._isRes(i)){p.setAttribute("data-mce-style",i,2)}else{p.removeAttribute("data-mce-style",2)}}p.style.cssText=i;break;case"class":p.className=i||"";break;case"src":case"href":if(o.keep_values){if(o.url_converter){i=o.url_converter.call(o.url_converter_scope||j,i,l,p)}j.setAttrib(p,"data-mce-"+l,i,2)}break;case"shape":p.setAttribute("data-mce-style",i);break}}if(d(i)&&i!==null&&i.length!==0){p.setAttribute(l,""+i,2)}else{p.removeAttribute(l,2)}if(tinyMCE.activeEditor&&m!=i){var n=tinyMCE.activeEditor;n.onSetAttrib.dispatch(n,p,l,i)}})},setAttribs:function(j,k){var i=this;return this.run(j,function(l){g(k,function(m,o){i.setAttrib(l,o,m)})})},getAttrib:function(m,o,k){var i,j=this,l;m=j.get(m);if(!m||m.nodeType!==1){return k===l?false:k}if(!d(k)){k=""}if(/^(src|href|style|coords|shape)$/.test(o)){i=m.getAttribute("data-mce-"+o);if(i){return i}}if(b&&j.props[o]){i=m[j.props[o]];i=i&&i.nodeValue?i.nodeValue:i}if(!i){i=m.getAttribute(o,2)}if(/^(checked|compact|declare|defer|disabled|ismap|multiple|nohref|noshade|nowrap|readonly|selected)$/.test(o)){if(m[j.props[o]]===true&&i===""){return o}return i?o:""}if(m.nodeName==="FORM"&&m.getAttributeNode(o)){return m.getAttributeNode(o).nodeValue}if(o==="style"){i=i||m.style.cssText;if(i){i=j.serializeStyle(j.parseStyle(i),m.nodeName);if(j.settings.keep_values&&!j._isRes(i)){m.setAttribute("data-mce-style",i)}}}if(f&&o==="class"&&i){i=i.replace(/(apple|webkit)\-[a-z\-]+/gi,"")}if(b){switch(o){case"rowspan":case"colspan":if(i===1){i=""}break;case"size":if(i==="+0"||i===20||i===0){i=""}break;case"width":case"height":case"vspace":case"checked":case"disabled":case"readonly":if(i===0){i=""}break;case"hspace":if(i===-1){i=""}break;case"maxlength":case"tabindex":if(i===32768||i===2147483647||i==="32768"){i=""}break;case"multiple":case"compact":case"noshade":case"nowrap":if(i===65535){return o}return k;case"shape":i=i.toLowerCase();break;default:if(o.indexOf("on")===0&&i){i=e._replace(/^function\s+\w+\(\)\s+\{\s+(.*)\s+\}$/,"$1",""+i)}}}return(i!==l&&i!==null&&i!=="")?""+i:k},getPos:function(q,l){var j=this,i=0,p=0,m,o=j.doc,k;q=j.get(q);l=l||o.body;if(q){if(q.getBoundingClientRect){q=q.getBoundingClientRect();m=j.boxModel?o.documentElement:o.body;i=q.left+(o.documentElement.scrollLeft||o.body.scrollLeft)-m.clientTop;p=q.top+(o.documentElement.scrollTop||o.body.scrollTop)-m.clientLeft;return{x:i,y:p}}k=q;while(k&&k!=l&&k.nodeType){i+=k.offsetLeft||0;p+=k.offsetTop||0;k=k.offsetParent}k=q.parentNode;while(k&&k!=l&&k.nodeType){i-=k.scrollLeft||0;p-=k.scrollTop||0;k=k.parentNode}}return{x:i,y:p}},parseStyle:function(i){return this.styles.parse(i)},serializeStyle:function(j,i){return this.styles.serialize(j,i)},addStyle:function(j){var k=this.doc,i;styleElm=k.getElementById("mceDefaultStyles");if(!styleElm){styleElm=k.createElement("style"),styleElm.id="mceDefaultStyles";styleElm.type="text/css";i=k.getElementsByTagName("head")[0];if(i.firstChild){i.insertBefore(styleElm,i.firstChild)}else{i.appendChild(styleElm)}}if(styleElm.styleSheet){styleElm.styleSheet.cssText+=j}else{styleElm.appendChild(k.createTextNode(j))}},loadCSS:function(i){var k=this,l=k.doc,j;if(!i){i=""}j=l.getElementsByTagName("head")[0];g(i.split(","),function(m){var n;if(k.files[m]){return}k.files[m]=true;n=k.create("link",{rel:"stylesheet",href:e._addVer(m)});if(b&&!e.isIE11&&l.documentMode&&l.recalc){n.onload=function(){if(l.recalc){l.recalc()}n.onload=null}}j.appendChild(n)})},addClass:function(i,j){return this.run(i,function(k){var l;if(!j){return 0}if(this.hasClass(k,j)){return k.className}l=this.removeClass(k,j);return k.className=(l!=""?(l+" "):"")+j})},removeClass:function(k,l){var i=this,j;return i.run(k,function(n){var m;if(i.hasClass(n,l)){if(!j){j=new RegExp("(^|\\s+)"+l+"(\\s+|$)","g")}m=n.className.replace(j," ");m=e.trim(m!=" "?m:"");n.className=m;if(!m){n.removeAttribute("class");n.removeAttribute("className")}return m}return n.className})},hasClass:function(j,i){j=this.get(j);if(!j||!i){return false}return(" "+j.className+" ").indexOf(" "+i+" ")!==-1},show:function(i){return this.setStyle(i,"display","block")},hide:function(i){return this.setStyle(i,"display","none")},isHidden:function(i){i=this.get(i);return !i||i.style.display=="none"||this.getStyle(i,"display")=="none"},uniqueId:function(i){return(!i?"mce_":i)+(this.counter++)},setHTML:function(k,j){var i=this;return i.run(k,function(m){if(b){while(m.firstChild){m.removeChild(m.firstChild)}try{m.innerHTML="<br />"+j;m.removeChild(m.firstChild)}catch(l){var n=i.create("div");n.innerHTML="<br />"+j;g(e.grep(n.childNodes),function(p,o){if(o&&m.canHaveHTML){m.appendChild(p)}})}}else{m.innerHTML=j}return j})},getOuterHTML:function(k){var j,i=this;k=i.get(k);if(!k){return null}if(k.nodeType===1&&i.hasOuterHTML){return k.outerHTML}j=(k.ownerDocument||i.doc).createElement("body");j.appendChild(k.cloneNode(true));return j.innerHTML},setOuterHTML:function(l,j,m){var i=this;function k(p,o,r){var s,q;q=r.createElement("body");q.innerHTML=o;s=q.lastChild;while(s){i.insertAfter(s.cloneNode(true),p);s=s.previousSibling}i.remove(p)}return this.run(l,function(o){o=i.get(o);if(o.nodeType==1){m=m||o.ownerDocument||i.doc;if(b){try{if(b&&o.nodeType==1){o.outerHTML=j}else{k(o,j,m)}}catch(n){k(o,j,m)}}else{k(o,j,m)}}})},decode:h.decode,encode:h.encodeAllRaw,insertAfter:function(i,j){j=this.get(j);return this.run(i,function(l){var k,m;k=j.parentNode;m=j.nextSibling;if(m){k.insertBefore(l,m)}else{k.appendChild(l)}return l})},replace:function(m,l,i){var j=this;if(d(l,"array")){m=m.cloneNode(true)}return j.run(l,function(k){if(i){g(e.grep(k.childNodes),function(n){m.appendChild(n)})}return k.parentNode.replaceChild(m,k)})},rename:function(l,i){var k=this,j;if(l.nodeName!=i.toUpperCase()){j=k.create(i);g(k.getAttribs(l),function(m){k.setAttrib(j,m.nodeName,k.getAttrib(l,m.nodeName))});k.replace(j,l,1)}return j||l},findCommonAncestor:function(k,i){var l=k,j;while(l){j=i;while(j&&l!=j){j=j.parentNode}if(l==j){break}l=l.parentNode}if(!l&&k.ownerDocument){return k.ownerDocument.documentElement}return l},toHex:function(i){var k=/^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*$/i.exec(i);function j(l){l=parseInt(l,10).toString(16);return l.length>1?l:"0"+l}if(k){i="#"+j(k[1])+j(k[2])+j(k[3]);return i}return i},getClasses:function(){var n=this,j=[],m,o={},p=n.settings.class_filter,l;if(n.classes){return n.classes}function q(i){g(i.imports,function(s){q(s)});g(i.cssRules||i.rules,function(t){switch(t.type||1){case 1:if(t.selectorText){g(t.selectorText.split(","),function(r){r=r.replace(/^\s*|\s*$|^\s\./g,"");if(/\.mce/.test(r)||!/\.[\w\-]+$/.test(r)){return}l=r;r=e._replace(/.*\.([a-z0-9_\-]+).*/i,"$1",r);if(p&&!(r=p(r,l))){return}if(!o[r]){j.push({"class":r});o[r]=1}})}break;case 3:try{q(t.styleSheet)}catch(s){}break}})}try{g(n.doc.styleSheets,q)}catch(k){}if(j.length>0){n.classes=j}return j},run:function(l,k,j){var i=this,m;if(i.doc&&typeof(l)==="string"){l=i.get(l)}if(!l){return false}j=j||this;if(!l.nodeType&&(l.length||l.length===0)){m=[];g(l,function(o,n){if(o){if(typeof(o)=="string"){o=i.doc.getElementById(o)}m.push(k.call(j,o,n))}});return m}return k.call(j,l)},getAttribs:function(j){var i;j=this.get(j);if(!j){return[]}if(b){i=[];if(j.nodeName=="OBJECT"){return j.attributes}if(j.nodeName==="OPTION"&&this.getAttrib(j,"selected")){i.push({specified:1,nodeName:"selected"})}j.cloneNode(false).outerHTML.replace(/<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi,"").replace(/[\w:\-]+/gi,function(k){i.push({specified:1,nodeName:k})});return i}return j.attributes},isEmpty:function(m,k){var r=this,o,n,q,j,l,p=0;m=m.firstChild;if(m){j=new e.dom.TreeWalker(m,m.parentNode);k=k||r.schema?r.schema.getNonEmptyElements():null;do{q=m.nodeType;if(q===1){if(m.getAttribute("data-mce-bogus")){continue}l=m.nodeName.toLowerCase();if(k&&k[l]){if(l==="br"){p++;continue}return false}n=r.getAttribs(m);o=m.attributes.length;while(o--){l=m.attributes[o].nodeName;if(l==="name"||l==="data-mce-bookmark"){return false}}}if(q==8){return false}if((q===3&&!a.test(m.nodeValue))){return false}}while(m=j.next())}return p<=1},destroy:function(j){var i=this;i.win=i.doc=i.root=i.events=i.frag=null;if(!j){e.removeUnload(i.destroy)}},createRng:function(){var i=this.doc;return i.createRange?i.createRange():new e.dom.Range(this)},nodeIndex:function(m,n){var i=0,k,l,j;if(m){for(k=m.nodeType,m=m.previousSibling,l=m;m;m=m.previousSibling){j=m.nodeType;if(n&&j==3){if(j==k||!m.nodeValue.length){continue}}i++;k=j}}return i},split:function(m,l,p){var q=this,i=q.createRng(),n,k,o;function j(v){var t,s=v.childNodes,u=v.nodeType;function x(A){var z=A.previousSibling&&A.previousSibling.nodeName=="SPAN";var y=A.nextSibling&&A.nextSibling.nodeName=="SPAN";return z&&y}if(u==1&&v.getAttribute("data-mce-type")=="bookmark"){return}for(t=s.length-1;t>=0;t--){j(s[t])}if(u!=9){if(u==3&&v.nodeValue.length>0){var r=e.trim(v.nodeValue).length;if(!q.isBlock(v.parentNode)||r>0||r===0&&x(v)){return}}else{if(u==1){s=v.childNodes;if(s.length==1&&s[0]&&s[0].nodeType==1&&s[0].getAttribute("data-mce-type")=="bookmark"){v.parentNode.insertBefore(s[0],v)}if(s.length||/^(br|hr|input|img)$/i.test(v.nodeName)){return}}}q.remove(v)}return v}if(m&&l){i.setStart(m.parentNode,q.nodeIndex(m));i.setEnd(l.parentNode,q.nodeIndex(l));n=i.extractContents();i=q.createRng();i.setStart(l.parentNode,q.nodeIndex(l)+1);i.setEnd(m.parentNode,q.nodeIndex(m)+1);k=i.extractContents();o=m.parentNode;o.insertBefore(j(n),m);if(p){o.replaceChild(p,l)}else{o.insertBefore(l,m)}o.insertBefore(j(k),m);q.remove(m);return p||l}},bind:function(l,i,k,j){return this.events.add(l,i,k,j||this)},unbind:function(k,i,j){return this.events.remove(k,i,j)},fire:function(k,j,i){return this.events.fire(k,j,i)},getContentEditable:function(j){var i;if(j.nodeType!=1){return null}i=j.getAttribute("data-mce-contenteditable");if(i&&i!=="inherit"){return i}return j.contentEditable!=="inherit"?j.contentEditable:null},_findSib:function(l,i,j){var k=this,m=i;if(l){if(d(m,"string")){m=function(n){return k.is(n,i)}}for(l=l[j];l;l=l[j]){if(m(l)){return l}}}return null},_isRes:function(i){return/^(top|left|bottom|right|width|height)/i.test(i)||/;\s*(top|left|bottom|right|width|height)/i.test(i)}});e.DOM=new e.dom.DOMUtils(document,{process_html:0})})(tinymce);(function(a){function b(c){var O=this,e=c.doc,U=0,F=1,j=2,E=true,S=false,W="startOffset",h="startContainer",Q="endContainer",A="endOffset",k=tinymce.extend,n=c.nodeIndex;k(O,{startContainer:e,startOffset:0,endContainer:e,endOffset:0,collapsed:E,commonAncestorContainer:e,START_TO_START:0,START_TO_END:1,END_TO_END:2,END_TO_START:3,setStart:q,setEnd:s,setStartBefore:g,setStartAfter:J,setEndBefore:K,setEndAfter:u,collapse:B,selectNode:y,selectNodeContents:G,compareBoundaryPoints:v,deleteContents:p,extractContents:I,cloneContents:d,insertNode:D,surroundContents:N,cloneRange:L,toStringIE:T});function x(){return e.createDocumentFragment()}function q(X,t){C(E,X,t)}function s(X,t){C(S,X,t)}function g(t){q(t.parentNode,n(t))}function J(t){q(t.parentNode,n(t)+1)}function K(t){s(t.parentNode,n(t))}function u(t){s(t.parentNode,n(t)+1)}function B(t){if(t){O[Q]=O[h];O[A]=O[W]}else{O[h]=O[Q];O[W]=O[A]}O.collapsed=E}function y(t){g(t);u(t)}function G(t){q(t,0);s(t,t.nodeType===1?t.childNodes.length:t.nodeValue.length)}function v(aa,t){var ad=O[h],Y=O[W],ac=O[Q],X=O[A],ab=t.startContainer,af=t.startOffset,Z=t.endContainer,ae=t.endOffset;if(aa===0){return H(ad,Y,ab,af)}if(aa===1){return H(ac,X,ab,af)}if(aa===2){return H(ac,X,Z,ae)}if(aa===3){return H(ad,Y,Z,ae)}}function p(){l(j)}function I(){return l(U)}function d(){return l(F)}function D(aa){var X=this[h],t=this[W],Z,Y;if((X.nodeType===3||X.nodeType===4)&&X.nodeValue){if(!t){X.parentNode.insertBefore(aa,X)}else{if(t>=X.nodeValue.length){c.insertAfter(aa,X)}else{Z=X.splitText(t);X.parentNode.insertBefore(aa,Z)}}}else{if(X.childNodes.length>0){Y=X.childNodes[t]}if(Y){X.insertBefore(aa,Y)}else{X.appendChild(aa)}}}function N(X){var t=O.extractContents();O.insertNode(X);X.appendChild(t);O.selectNode(X)}function L(){return k(new b(c),{startContainer:O[h],startOffset:O[W],endContainer:O[Q],endOffset:O[A],collapsed:O.collapsed,commonAncestorContainer:O.commonAncestorContainer})}function P(t,X){var Y;if(t.nodeType==3){return t}if(X<0){return t}Y=t.firstChild;while(Y&&X>0){--X;Y=Y.nextSibling}if(Y){return Y}return t}function m(){return(O[h]==O[Q]&&O[W]==O[A])}function H(Z,ab,X,aa){var ac,Y,t,ad,af,ae;if(Z==X){if(ab==aa){return 0}if(ab<aa){return -1}return 1}ac=X;while(ac&&ac.parentNode!=Z){ac=ac.parentNode}if(ac){Y=0;t=Z.firstChild;while(t!=ac&&Y<ab){Y++;t=t.nextSibling}if(ab<=Y){return -1}return 1}ac=Z;while(ac&&ac.parentNode!=X){ac=ac.parentNode}if(ac){Y=0;t=X.firstChild;while(t!=ac&&Y<aa){Y++;t=t.nextSibling}if(Y<aa){return -1}return 1}ad=c.findCommonAncestor(Z,X);af=Z;while(af&&af.parentNode!=ad){af=af.parentNode}if(!af){af=ad}ae=X;while(ae&&ae.parentNode!=ad){ae=ae.parentNode}if(!ae){ae=ad}if(af==ae){return 0}t=ad.firstChild;while(t){if(t==af){return -1}if(t==ae){return 1}t=t.nextSibling}}function C(X,aa,Z){var t,Y;if(X){O[h]=aa;O[W]=Z}else{O[Q]=aa;O[A]=Z}t=O[Q];while(t.parentNode){t=t.parentNode}Y=O[h];while(Y.parentNode){Y=Y.parentNode}if(Y==t){if(H(O[h],O[W],O[Q],O[A])>0){O.collapse(X)}}else{O.collapse(X)}O.collapsed=m();O.commonAncestorContainer=c.findCommonAncestor(O[h],O[Q])}function l(ad){var ac,Z=0,af=0,X,ab,Y,aa,t,ae;if(O[h]==O[Q]){return f(ad)}for(ac=O[Q],X=ac.parentNode;X;ac=X,X=X.parentNode){if(X==O[h]){return r(ac,ad)}++Z}for(ac=O[h],X=ac.parentNode;X;ac=X,X=X.parentNode){if(X==O[Q]){return V(ac,ad)}++af}ab=af-Z;Y=O[h];while(ab>0){Y=Y.parentNode;ab--}aa=O[Q];while(ab<0){aa=aa.parentNode;ab++}for(t=Y.parentNode,ae=aa.parentNode;t!=ae;t=t.parentNode,ae=ae.parentNode){Y=t;aa=ae}return o(Y,aa,ad)}function f(ac){var ae,af,t,Y,Z,ad,aa,X,ab;if(ac!=j){ae=x()}if(O[W]==O[A]){return ae}if(O[h].nodeType==3){af=O[h].nodeValue;t=af.substring(O[W],O[A]);if(ac!=F){Y=O[h];X=O[W];ab=O[A]-O[W];if(X===0&&ab>=Y.nodeValue.length-1){Y.parentNode.removeChild(Y)}else{Y.deleteData(X,ab)}O.collapse(E)}if(ac==j){return}if(t.length>0){ae.appendChild(e.createTextNode(t))}return ae}Y=P(O[h],O[W]);Z=O[A]-O[W];while(Y&&Z>0){ad=Y.nextSibling;aa=z(Y,ac);if(ae){ae.appendChild(aa)}--Z;Y=ad}if(ac!=F){O.collapse(E)}return ae}function r(ad,aa){var ac,ab,X,t,Z,Y;if(aa!=j){ac=x()}ab=i(ad,aa);if(ac){ac.appendChild(ab)}X=n(ad);t=X-O[W];if(t<=0){if(aa!=F){O.setEndBefore(ad);O.collapse(S)}return ac}ab=ad.previousSibling;while(t>0){Z=ab.previousSibling;Y=z(ab,aa);if(ac){ac.insertBefore(Y,ac.firstChild)}--t;ab=Z}if(aa!=F){O.setEndBefore(ad);O.collapse(S)}return ac}function V(ab,aa){var ad,X,ac,t,Z,Y;if(aa!=j){ad=x()}ac=R(ab,aa);if(ad){ad.appendChild(ac)}X=n(ab);++X;t=O[A]-X;ac=ab.nextSibling;while(ac&&t>0){Z=ac.nextSibling;Y=z(ac,aa);if(ad){ad.appendChild(Y)}--t;ac=Z}if(aa!=F){O.setStartAfter(ab);O.collapse(E)}return ad}function o(ab,t,ae){var Y,ag,aa,ac,ad,X,af,Z;if(ae!=j){ag=x()}Y=R(ab,ae);if(ag){ag.appendChild(Y)}aa=ab.parentNode;ac=n(ab);ad=n(t);++ac;X=ad-ac;af=ab.nextSibling;while(X>0){Z=af.nextSibling;Y=z(af,ae);if(ag){ag.appendChild(Y)}af=Z;--X}Y=i(t,ae);if(ag){ag.appendChild(Y)}if(ae!=F){O.setStartAfter(ab);O.collapse(E)}return ag}function i(ac,ad){var Y=P(O[Q],O[A]-1),ae,ab,aa,t,X,Z=Y!=O[Q];if(Y==ac){return M(Y,Z,S,ad)}ae=Y.parentNode;ab=M(ae,S,S,ad);while(ae){while(Y){aa=Y.previousSibling;t=M(Y,Z,S,ad);if(ad!=j){ab.insertBefore(t,ab.firstChild)}Z=E;Y=aa}if(ae==ac){return ab}Y=ae.previousSibling;ae=ae.parentNode;X=M(ae,S,S,ad);if(ad!=j){X.appendChild(ab)}ab=X}}function R(ac,ad){var Z=P(O[h],O[W]),aa=Z!=O[h],ae,ab,Y,t,X;if(Z==ac){return M(Z,aa,E,ad)}ae=Z.parentNode;ab=M(ae,S,E,ad);while(ae){while(Z){Y=Z.nextSibling;t=M(Z,aa,E,ad);if(ad!=j){ab.appendChild(t)}aa=E;Z=Y}if(ae==ac){return ab}Z=ae.nextSibling;ae=ae.parentNode;X=M(ae,S,E,ad);if(ad!=j){X.appendChild(ab)}ab=X}}function M(t,aa,ad,ae){var Z,Y,ab,X,ac;if(aa){return z(t,ae)}if(t.nodeType==3){Z=t.nodeValue;if(ad){X=O[W];Y=Z.substring(X);ab=Z.substring(0,X)}else{X=O[A];Y=Z.substring(0,X);ab=Z.substring(X)}if(ae!=F){t.nodeValue=ab}if(ae==j){return}ac=c.clone(t,S);ac.nodeValue=Y;return ac}if(ae==j){return}return c.clone(t,S)}function z(X,t){if(t!=j){return t==F?c.clone(X,E):X}X.parentNode.removeChild(X)}function T(){return c.create("body",null,d()).outerText}return O}a.Range=b;b.prototype.toString=function(){return this.toStringIE()}})(tinymce.dom);(function(){function a(d){var b=this,h=d.dom,c=true,f=false;function e(i,j){var k,t=0,q,n,m,l,o,r,p=-1,s;k=i.duplicate();k.collapse(j);s=k.parentElement();if(s.ownerDocument!==d.dom.doc){return}while(s.contentEditable==="false"){s=s.parentNode}if(!s.hasChildNodes()){return{node:s,inside:1}}m=s.children;q=m.length-1;while(t<=q){r=Math.floor((t+q)/2);l=m[r];k.moveToElementText(l);p=k.compareEndPoints(j?"StartToStart":"EndToEnd",i);if(p>0){q=r-1}else{if(p<0){t=r+1}else{return{node:l}}}}if(p<0){if(!l){k.moveToElementText(s);k.collapse(true);l=s;n=true}else{k.collapse(false)}o=0;while(k.compareEndPoints(j?"StartToStart":"StartToEnd",i)!==0){if(k.move("character",1)===0||s!=k.parentElement()){break}o++}}else{k.collapse(true);o=0;while(k.compareEndPoints(j?"StartToStart":"StartToEnd",i)!==0){if(k.move("character",-1)===0||s!=k.parentElement()){break}o++}}return{node:l,position:p,offset:o,inside:n}}function g(){var i=d.getRng(),r=h.createRng(),l,k,p,q,m,j;l=i.item?i.item(0):i.parentElement();if(l.ownerDocument!=h.doc){return r}k=d.isCollapsed();if(i.item){r.setStart(l.parentNode,h.nodeIndex(l));r.setEnd(r.startContainer,r.startOffset+1);return r}function o(A){var u=e(i,A),s,y,z=0,x,v,t;s=u.node;y=u.offset;if(u.inside&&!s.hasChildNodes()){r[A?"setStart":"setEnd"](s,0);return}if(y===v){r[A?"setStartBefore":"setEndAfter"](s);return}if(u.position<0){x=u.inside?s.firstChild:s.nextSibling;if(!x){r[A?"setStartAfter":"setEndAfter"](s);return}if(!y){if(x.nodeType==3){r[A?"setStart":"setEnd"](x,0)}else{r[A?"setStartBefore":"setEndBefore"](x)}return}while(x){t=x.nodeValue;z+=t.length;if(z>=y){s=x;z-=y;z=t.length-z;break}x=x.nextSibling}}else{x=s.previousSibling;if(!x){return r[A?"setStartBefore":"setEndBefore"](s)}if(!y){if(s.nodeType==3){r[A?"setStart":"setEnd"](x,s.nodeValue.length)}else{r[A?"setStartAfter":"setEndAfter"](x)}return}while(x){z+=x.nodeValue.length;if(z>=y){s=x;z-=y;break}x=x.previousSibling}}r[A?"setStart":"setEnd"](s,z)}try{o(true);if(!k){o()}}catch(n){if(n.number==-2147024809){m=b.getBookmark(2);p=i.duplicate();p.collapse(true);l=p.parentElement();if(!k){p=i.duplicate();p.collapse(false);q=p.parentElement();q.innerHTML=q.innerHTML}l.innerHTML=l.innerHTML;b.moveToBookmark(m);i=d.getRng();o(true);if(!k){o()}}else{throw n}}return r}this.getBookmark=function(m){var j=d.getRng(),o,i,l={};function n(u){var t,p,s,r,q=[];t=u.parentNode;p=h.getRoot().parentNode;while(t!=p&&t.nodeType!==9){s=t.children;r=s.length;while(r--){if(u===s[r]){q.push(r);break}}u=t;t=t.parentNode}return q}function k(q){var p;p=e(j,q);if(p){return{position:p.position,offset:p.offset,indexes:n(p.node),inside:p.inside}}}if(m===2){if(!j.item){l.start=k(true);if(!d.isCollapsed()){l.end=k()}}else{l.start={ctrl:true,indexes:n(j.item(0))}}}return l};this.moveToBookmark=function(k){var j,i=h.doc.body;function m(o){var r,q,n,p;r=h.getRoot();for(q=o.length-1;q>=0;q--){p=r.children;n=o[q];if(n<=p.length-1){r=p[n]}}return r}function l(r){var n=k[r?"start":"end"],q,p,o;if(n){q=n.position>0;p=i.createTextRange();p.moveToElementText(m(n.indexes));offset=n.offset;if(offset!==o){p.collapse(n.inside||q);p.moveStart("character",q?-offset:offset)}else{p.collapse(r)}j.setEndPoint(r?"StartToStart":"EndToStart",p);if(r){j.collapse(true)}}}if(k.start){if(k.start.ctrl){j=i.createControlRange();j.addElement(m(k.start.indexes));j.select()}else{j=i.createTextRange();l(true);l();j.select()}}};this.addRange=function(i){var n,l,k,p,v,q,t,s=d.dom.doc,m=s.body,r,u;function j(C){var y,B,x,A,z;x=h.create("a");y=C?k:v;B=C?p:q;A=n.duplicate();if(y==s||y==s.documentElement){y=m;B=0}if(y.nodeType==3){y.parentNode.insertBefore(x,y);A.moveToElementText(x);A.moveStart("character",B);h.remove(x);n.setEndPoint(C?"StartToStart":"EndToEnd",A)}else{z=y.childNodes;if(z.length){if(B>=z.length){h.insertAfter(x,z[z.length-1])}else{y.insertBefore(x,z[B])}A.moveToElementText(x)}else{if(y.canHaveHTML){y.innerHTML="<span>\uFEFF</span>";x=y.firstChild;A.moveToElementText(x);A.collapse(f)}}n.setEndPoint(C?"StartToStart":"EndToEnd",A);h.remove(x)}}k=i.startContainer;p=i.startOffset;v=i.endContainer;q=i.endOffset;n=m.createTextRange();if(k==v&&k.nodeType==1){if(p==q&&!k.hasChildNodes()){if(k.canHaveHTML){t=k.previousSibling;if(t&&!t.hasChildNodes()&&h.isBlock(t)){t.innerHTML="\uFEFF"}else{t=null}k.innerHTML="<span>\uFEFF</span><span>\uFEFF</span>";n.moveToElementText(k.lastChild);n.select();h.doc.selection.clear();k.innerHTML="";if(t){t.innerHTML=""}return}else{p=h.nodeIndex(k);k=k.parentNode}}if(p==q-1){try{u=k.childNodes[p];l=m.createControlRange();l.addElement(u);l.select();r=d.getRng();if(r.item&&u===r.item(0)){return}}catch(o){}}}j(true);j();n.select()};this.getRangeAt=g}tinymce.dom.TridentSelection=a})();(function(){var n=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,i="sizcache",o=0,r=Object.prototype.toString,h=false,g=true,q=/\\/g,u=/\r\n/g,x=/\W/;[0,0].sort(function(){g=false;return 0});var d=function(C,e,F,G){F=F||[];e=e||document;var I=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!C||typeof C!=="string"){return F}var z,K,N,y,J,M,L,E,B=true,A=d.isXML(e),D=[],H=C;do{n.exec("");z=n.exec(H);if(z){H=z[3];D.push(z[1]);if(z[2]){y=z[3];break}}}while(z);if(D.length>1&&j.exec(C)){if(D.length===2&&k.relative[D[0]]){K=s(D[0]+D[1],e,G)}else{K=k.relative[D[0]]?[e]:d(D.shift(),e);while(D.length){C=D.shift();if(k.relative[C]){C+=D.shift()}K=s(C,K,G)}}}else{if(!G&&D.length>1&&e.nodeType===9&&!A&&k.match.ID.test(D[0])&&!k.match.ID.test(D[D.length-1])){J=d.find(D.shift(),e,A);e=J.expr?d.filter(J.expr,J.set)[0]:J.set[0]}if(e){J=G?{expr:D.pop(),set:l(G)}:d.find(D.pop(),D.length===1&&(D[0]==="~"||D[0]==="+")&&e.parentNode?e.parentNode:e,A);K=J.expr?d.filter(J.expr,J.set):J.set;if(D.length>0){N=l(K)}else{B=false}while(D.length){M=D.pop();L=M;if(!k.relative[M]){M=""}else{L=D.pop()}if(L==null){L=e}k.relative[M](N,L,A)}}else{N=D=[]}}if(!N){N=K}if(!N){d.error(M||C)}if(r.call(N)==="[object Array]"){if(!B){F.push.apply(F,N)}else{if(e&&e.nodeType===1){for(E=0;N[E]!=null;E++){if(N[E]&&(N[E]===true||N[E].nodeType===1&&d.contains(e,N[E]))){F.push(K[E])}}}else{for(E=0;N[E]!=null;E++){if(N[E]&&N[E].nodeType===1){F.push(K[E])}}}}}else{l(N,F)}if(y){d(y,I,F,G);d.uniqueSort(F)}return F};d.uniqueSort=function(y){if(p){h=g;y.sort(p);if(h){for(var e=1;e<y.length;e++){if(y[e]===y[e-1]){y.splice(e--,1)}}}}return y};d.matches=function(e,y){return d(e,null,null,y)};d.matchesSelector=function(e,y){return d(y,null,null,[e]).length>0};d.find=function(E,e,F){var D,z,B,A,C,y;if(!E){return[]}for(z=0,B=k.order.length;z<B;z++){C=k.order[z];if((A=k.leftMatch[C].exec(E))){y=A[1];A.splice(1,1);if(y.substr(y.length-1)!=="\\"){A[1]=(A[1]||"").replace(q,"");D=k.find[C](A,e,F);if(D!=null){E=E.replace(k.match[C],"");break}}}}if(!D){D=typeof e.getElementsByTagName!=="undefined"?e.getElementsByTagName("*"):[]}return{set:D,expr:E}};d.filter=function(I,H,L,B){var D,e,G,N,K,y,A,C,J,z=I,M=[],F=H,E=H&&H[0]&&d.isXML(H[0]);while(I&&H.length){for(G in k.filter){if((D=k.leftMatch[G].exec(I))!=null&&D[2]){y=k.filter[G];A=D[1];e=false;D.splice(1,1);if(A.substr(A.length-1)==="\\"){continue}if(F===M){M=[]}if(k.preFilter[G]){D=k.preFilter[G](D,F,L,M,B,E);if(!D){e=N=true}else{if(D===true){continue}}}if(D){for(C=0;(K=F[C])!=null;C++){if(K){N=y(K,D,C,F);J=B^N;if(L&&N!=null){if(J){e=true}else{F[C]=false}}else{if(J){M.push(K);e=true}}}}}if(N!==undefined){if(!L){F=M}I=I.replace(k.match[G],"");if(!e){return[]}break}}}if(I===z){if(e==null){d.error(I)}else{break}}z=I}return F};d.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)};var b=d.getText=function(B){var z,A,e=B.nodeType,y="";if(e){if(e===1||e===9||e===11){if(typeof B.textContent==="string"){return B.textContent}else{if(typeof B.innerText==="string"){return B.innerText.replace(u,"")}else{for(B=B.firstChild;B;B=B.nextSibling){y+=b(B)}}}}else{if(e===3||e===4){return B.nodeValue}}}else{for(z=0;(A=B[z]);z++){if(A.nodeType!==8){y+=b(A)}}}return y};var k=d.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(e){return e.getAttribute("href")},type:function(e){return e.getAttribute("type")}},relative:{"+":function(D,y){var A=typeof y==="string",C=A&&!x.test(y),E=A&&!C;if(C){y=y.toLowerCase()}for(var z=0,e=D.length,B;z<e;z++){if((B=D[z])){while((B=B.previousSibling)&&B.nodeType!==1){}D[z]=E||B&&B.nodeName.toLowerCase()===y?B||false:B===y}}if(E){d.filter(y,D,true)}},">":function(D,y){var C,B=typeof y==="string",z=0,e=D.length;if(B&&!x.test(y)){y=y.toLowerCase();for(;z<e;z++){C=D[z];if(C){var A=C.parentNode;D[z]=A.nodeName.toLowerCase()===y?A:false}}}else{for(;z<e;z++){C=D[z];if(C){D[z]=B?C.parentNode:C.parentNode===y}}if(B){d.filter(y,D,true)}}},"":function(A,y,C){var B,z=o++,e=t;if(typeof y==="string"&&!x.test(y)){y=y.toLowerCase();B=y;e=a}e("parentNode",y,z,A,B,C)},"~":function(A,y,C){var B,z=o++,e=t;if(typeof y==="string"&&!x.test(y)){y=y.toLowerCase();B=y;e=a}e("previousSibling",y,z,A,B,C)}},find:{ID:function(y,z,A){if(typeof z.getElementById!=="undefined"&&!A){var e=z.getElementById(y[1]);return e&&e.parentNode?[e]:[]}},NAME:function(z,C){if(typeof C.getElementsByName!=="undefined"){var y=[],B=C.getElementsByName(z[1]);for(var A=0,e=B.length;A<e;A++){if(B[A].getAttribute("name")===z[1]){y.push(B[A])}}return y.length===0?null:y}},TAG:function(e,y){if(typeof y.getElementsByTagName!=="undefined"){return y.getElementsByTagName(e[1])}}},preFilter:{CLASS:function(A,y,z,e,D,E){A=" "+A[1].replace(q,"")+" ";if(E){return A}for(var B=0,C;(C=y[B])!=null;B++){if(C){if(D^(C.className&&(" "+C.className+" ").replace(/[\t\n\r]/g," ").indexOf(A)>=0)){if(!z){e.push(C)}}else{if(z){y[B]=false}}}}return false},ID:function(e){return e[1].replace(q,"")},TAG:function(y,e){return y[1].replace(q,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){d.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var y=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(y[1]+(y[2]||1))-0;e[3]=y[3]-0}else{if(e[2]){d.error(e[0])}}e[0]=o++;return e},ATTR:function(B,y,z,e,C,D){var A=B[1]=B[1].replace(q,"");if(!D&&k.attrMap[A]){B[1]=k.attrMap[A]}B[4]=(B[4]||B[5]||"").replace(q,"");if(B[2]==="~="){B[4]=" "+B[4]+" "}return B},PSEUDO:function(B,y,z,e,C){if(B[1]==="not"){if((n.exec(B[3])||"").length>1||/^\w/.test(B[3])){B[3]=d(B[3],null,null,y)}else{var A=d.filter(B[3],y,z,true^C);if(!z){e.push.apply(e,A)}return false}}else{if(k.match.POS.test(B[0])||k.match.CHILD.test(B[0])){return true}}return B},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(z,y,e){return !!d(e[3],z).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(z){var e=z.getAttribute("type"),y=z.type;return z.nodeName.toLowerCase()==="input"&&"text"===y&&(e===y||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(y){var e=y.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===y.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(y){var e=y.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===y.type},button:function(y){var e=y.nodeName.toLowerCase();return e==="input"&&"button"===y.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(y,e){return e===0},last:function(z,y,e,A){return y===A.length-1},even:function(y,e){return e%2===0},odd:function(y,e){return e%2===1},lt:function(z,y,e){return y<e[3]-0},gt:function(z,y,e){return y>e[3]-0},nth:function(z,y,e){return e[3]-0===y},eq:function(z,y,e){return e[3]-0===y}},filter:{PSEUDO:function(z,E,D,F){var e=E[1],y=k.filters[e];if(y){return y(z,D,E,F)}else{if(e==="contains"){return(z.textContent||z.innerText||b([z])||"").indexOf(E[3])>=0}else{if(e==="not"){var A=E[3];for(var C=0,B=A.length;C<B;C++){if(A[C]===z){return false}}return true}else{d.error(e)}}}},CHILD:function(z,B){var A,H,D,G,e,C,F,E=B[1],y=z;switch(E){case"only":case"first":while((y=y.previousSibling)){if(y.nodeType===1){return false}}if(E==="first"){return true}y=z;case"last":while((y=y.nextSibling)){if(y.nodeType===1){return false}}return true;case"nth":A=B[2];H=B[3];if(A===1&&H===0){return true}D=B[0];G=z.parentNode;if(G&&(G[i]!==D||!z.nodeIndex)){C=0;for(y=G.firstChild;y;y=y.nextSibling){if(y.nodeType===1){y.nodeIndex=++C}}G[i]=D}F=z.nodeIndex-H;if(A===0){return F===0}else{return(F%A===0&&F/A>=0)}}},ID:function(y,e){return y.nodeType===1&&y.getAttribute("id")===e},TAG:function(y,e){return(e==="*"&&y.nodeType===1)||!!y.nodeName&&y.nodeName.toLowerCase()===e},CLASS:function(y,e){return(" "+(y.className||y.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(C,A){var z=A[1],e=d.attr?d.attr(C,z):k.attrHandle[z]?k.attrHandle[z](C):C[z]!=null?C[z]:C.getAttribute(z),D=e+"",B=A[2],y=A[4];return e==null?B==="!=":!B&&d.attr?e!=null:B==="="?D===y:B==="*="?D.indexOf(y)>=0:B==="~="?(" "+D+" ").indexOf(y)>=0:!y?D&&e!==false:B==="!="?D!==y:B==="^="?D.indexOf(y)===0:B==="$="?D.substr(D.length-y.length)===y:B==="|="?D===y||D.substr(0,y.length+1)===y+"-":false},POS:function(B,y,z,C){var e=y[2],A=k.setFilters[e];if(A){return A(B,z,y,C)}}}};var j=k.match.POS,c=function(y,e){return"\\"+(e-0+1)};for(var f in k.match){k.match[f]=new RegExp(k.match[f].source+(/(?![^\[]*\])(?![^\(]*\))/.source));k.leftMatch[f]=new RegExp(/(^(?:.|\r|\n)*?)/.source+k.match[f].source.replace(/\\(\d+)/g,c))}k.match.globalPOS=j;var l=function(y,e){y=Array.prototype.slice.call(y,0);if(e){e.push.apply(e,y);return e}return y};try{Array.prototype.slice.call(document.documentElement.childNodes,0)[0].nodeType}catch(v){l=function(B,A){var z=0,y=A||[];if(r.call(B)==="[object Array]"){Array.prototype.push.apply(y,B)}else{if(typeof B.length==="number"){for(var e=B.length;z<e;z++){y.push(B[z])}}else{for(;B[z];z++){y.push(B[z])}}}return y}}var p,m;if(document.documentElement.compareDocumentPosition){p=function(y,e){if(y===e){h=true;return 0}if(!y.compareDocumentPosition||!e.compareDocumentPosition){return y.compareDocumentPosition?-1:1}return y.compareDocumentPosition(e)&4?-1:1}}else{p=function(F,E){if(F===E){h=true;return 0}else{if(F.sourceIndex&&E.sourceIndex){return F.sourceIndex-E.sourceIndex}}var C,y,z=[],e=[],B=F.parentNode,D=E.parentNode,G=B;if(B===D){return m(F,E)}else{if(!B){return -1}else{if(!D){return 1}}}while(G){z.unshift(G);G=G.parentNode}G=D;while(G){e.unshift(G);G=G.parentNode}C=z.length;y=e.length;for(var A=0;A<C&&A<y;A++){if(z[A]!==e[A]){return m(z[A],e[A])}}return A===C?m(F,e[A],-1):m(z[A],E,1)};m=function(y,e,z){if(y===e){return z}var A=y.nextSibling;while(A){if(A===e){return -1}A=A.nextSibling}return 1}}(function(){var y=document.createElement("div"),z="script"+(new Date()).getTime(),e=document.documentElement;y.innerHTML="<a name='"+z+"'/>";e.insertBefore(y,e.firstChild);if(document.getElementById(z)){k.find.ID=function(B,C,D){if(typeof C.getElementById!=="undefined"&&!D){var A=C.getElementById(B[1]);return A?A.id===B[1]||typeof A.getAttributeNode!=="undefined"&&A.getAttributeNode("id").nodeValue===B[1]?[A]:undefined:[]}};k.filter.ID=function(C,A){var B=typeof C.getAttributeNode!=="undefined"&&C.getAttributeNode("id");return C.nodeType===1&&B&&B.nodeValue===A}}e.removeChild(y);e=y=null})();(function(){var e=document.createElement("div");e.appendChild(document.createComment(""));if(e.getElementsByTagName("*").length>0){k.find.TAG=function(y,C){var B=C.getElementsByTagName(y[1]);if(y[1]==="*"){var A=[];for(var z=0;B[z];z++){if(B[z].nodeType===1){A.push(B[z])}}B=A}return B}}e.innerHTML="<a href='#'></a>";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){k.attrHandle.href=function(y){return y.getAttribute("href",2)}}e=null})();if(document.querySelectorAll){(function(){var e=d,A=document.createElement("div"),z="__sizzle__";A.innerHTML="<p class='TEST'></p>";if(A.querySelectorAll&&A.querySelectorAll(".TEST").length===0){return}d=function(L,C,G,K){C=C||document;if(!K&&!d.isXML(C)){var J=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(L);if(J&&(C.nodeType===1||C.nodeType===9)){if(J[1]){return l(C.getElementsByTagName(L),G)}else{if(J[2]&&k.find.CLASS&&C.getElementsByClassName){return l(C.getElementsByClassName(J[2]),G)}}}if(C.nodeType===9){if(L==="body"&&C.body){return l([C.body],G)}else{if(J&&J[3]){var F=C.getElementById(J[3]);if(F&&F.parentNode){if(F.id===J[3]){return l([F],G)}}else{return l([],G)}}}try{return l(C.querySelectorAll(L),G)}catch(H){}}else{if(C.nodeType===1&&C.nodeName.toLowerCase()!=="object"){var D=C,E=C.getAttribute("id"),B=E||z,N=C.parentNode,M=/^\s*[+~]/.test(L);if(!E){C.setAttribute("id",B)}else{B=B.replace(/'/g,"\\$&")}if(M&&N){C=C.parentNode}try{if(!M||N){return l(C.querySelectorAll("[id='"+B+"'] "+L),G)}}catch(I){}finally{if(!E){D.removeAttribute("id")}}}}}return e(L,C,G,K)};for(var y in e){d[y]=e[y]}A=null})()}(function(){var e=document.documentElement,z=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(z){var B=!z.call(document.createElement("div"),"div"),y=false;try{z.call(document.documentElement,"[test!='']:sizzle")}catch(A){y=true}d.matchesSelector=function(D,F){F=F.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!d.isXML(D)){try{if(y||!k.match.PSEUDO.test(F)&&!/!=/.test(F)){var C=z.call(D,F);if(C||!B||D.document&&D.document.nodeType!==11){return C}}}catch(E){}}return d(F,null,null,[D]).length>0}}})();(function(){var e=document.createElement("div");e.innerHTML="<div class='test e'></div><div class='test'></div>";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}k.order.splice(1,0,"CLASS");k.find.CLASS=function(y,z,A){if(typeof z.getElementsByClassName!=="undefined"&&!A){return z.getElementsByClassName(y[1])}};e=null})();function a(y,D,C,G,E,F){for(var A=0,z=G.length;A<z;A++){var e=G[A];if(e){var B=false;e=e[y];while(e){if(e[i]===C){B=G[e.sizset];break}if(e.nodeType===1&&!F){e[i]=C;e.sizset=A}if(e.nodeName.toLowerCase()===D){B=e;break}e=e[y]}G[A]=B}}}function t(y,D,C,G,E,F){for(var A=0,z=G.length;A<z;A++){var e=G[A];if(e){var B=false;e=e[y];while(e){if(e[i]===C){B=G[e.sizset];break}if(e.nodeType===1){if(!F){e[i]=C;e.sizset=A}if(typeof D!=="string"){if(e===D){B=true;break}}else{if(d.filter(D,[e]).length>0){B=e;break}}}e=e[y]}G[A]=B}}}if(document.documentElement.contains){d.contains=function(y,e){return y!==e&&(y.contains?y.contains(e):true)}}else{if(document.documentElement.compareDocumentPosition){d.contains=function(y,e){return !!(y.compareDocumentPosition(e)&16)}}else{d.contains=function(){return false}}}d.isXML=function(e){var y=(e?e.ownerDocument||e:0).documentElement;return y?y.nodeName!=="HTML":false};var s=function(z,e,D){var C,E=[],B="",F=e.nodeType?[e]:e;while((C=k.match.PSEUDO.exec(z))){B+=C[0];z=z.replace(k.match.PSEUDO,"")}z=k.relative[z]?z+"*":z;for(var A=0,y=F.length;A<y;A++){d(z,F[A],E,D)}return d.filter(B,E)};window.tinymce.dom.Sizzle=d})();(function(a){a.dom.Element=function(f,d){var b=this,e,c;b.settings=d=d||{};b.id=f;b.dom=e=d.dom||a.DOM;if(!a.isIE){c=e.get(b.id)}a.each(("getPos,getRect,getParent,add,setStyle,getStyle,setStyles,setAttrib,setAttribs,getAttrib,addClass,removeClass,hasClass,getOuterHTML,setOuterHTML,remove,show,hide,isHidden,setHTML,get").split(/,/),function(g){b[g]=function(){var h=[f],j;for(j=0;j<arguments.length;j++){h.push(arguments[j])}h=e[g].apply(e,h);b.update(g);return h}});a.extend(b,{on:function(i,h,g){return a.dom.Event.add(b.id,i,h,g)},getXY:function(){return{x:parseInt(b.getStyle("left")),y:parseInt(b.getStyle("top"))}},getSize:function(){var g=e.get(b.id);return{w:parseInt(b.getStyle("width")||g.clientWidth),h:parseInt(b.getStyle("height")||g.clientHeight)}},moveTo:function(g,h){b.setStyles({left:g,top:h})},moveBy:function(g,i){var h=b.getXY();b.moveTo(h.x+g,h.y+i)},resizeTo:function(g,i){b.setStyles({width:g,height:i})},resizeBy:function(g,j){var i=b.getSize();b.resizeTo(i.w+g,i.h+j)},update:function(h){var g;if(a.isIE6&&d.blocker){h=h||"";if(h.indexOf("get")===0||h.indexOf("has")===0||h.indexOf("is")===0){return}if(h=="remove"){e.remove(b.blocker);return}if(!b.blocker){b.blocker=e.uniqueId();g=e.add(d.container||e.getRoot(),"iframe",{id:b.blocker,style:"position:absolute;",frameBorder:0,src:'javascript:""'});e.setStyle(g,"opacity",0)}else{g=e.get(b.blocker)}e.setStyles(g,{left:b.getStyle("left",1),top:b.getStyle("top",1),width:b.getStyle("width",1),height:b.getStyle("height",1),display:b.getStyle("display",1),zIndex:parseInt(b.getStyle("zIndex",1)||0)-1})}}})}})(tinymce);(function(d){function f(g){return g.replace(/[\n\r]+/g,"")}var c=d.is,b=d.isIE,e=d.each,a=d.dom.TreeWalker;d.create("tinymce.dom.Selection",{Selection:function(k,j,i,h){var g=this;g.dom=k;g.win=j;g.serializer=i;g.editor=h;e(["onBeforeSetContent","onBeforeGetContent","onSetContent","onGetContent"],function(l){g[l]=new d.util.Dispatcher(g)});if(!g.win.getSelection){g.tridentSel=new d.dom.TridentSelection(g)}if(d.isIE&&!d.isIE11&&k.boxModel){this._fixIESelection()}d.addUnload(g.destroy,g)},setCursorLocation:function(i,j){var g=this;var h=g.dom.createRng();h.setStart(i,j);h.setEnd(i,j);g.setRng(h);g.collapse(false)},getContent:function(h){var g=this,i=g.getRng(),m=g.dom.create("body"),k=g.getSel(),j,l,o;h=h||{};j=l="";h.get=true;h.format=h.format||"html";h.forced_root_block="";g.onBeforeGetContent.dispatch(g,h);if(h.format=="text"){return g.isCollapsed()?"":(i.text||(k.toString?k.toString():""))}if(i.cloneContents){o=i.cloneContents();if(o){m.appendChild(o)}}else{if(c(i.item)||c(i.htmlText)){m.innerHTML="<br>"+(i.item?i.item(0).outerHTML:i.htmlText);m.removeChild(m.firstChild)}else{m.innerHTML=i.toString()}}if(/^\s/.test(m.innerHTML)){j=" "}if(/\s+$/.test(m.innerHTML)){l=" "}h.getInner=true;h.content=g.isCollapsed()?"":j+g.serializer.serialize(m,h)+l;g.onGetContent.dispatch(g,h);return h.content},setContent:function(h,j){var o=this,g=o.getRng(),k,l=o.win.document,n,m;j=j||{format:"html"};j.set=true;h=j.content=h;if(!j.no_events){o.onBeforeSetContent.dispatch(o,j)}h=j.content;if(g.insertNode){h+='<span id="__caret">_</span>';if(g.startContainer==l&&g.endContainer==l){l.body.innerHTML=h}else{g.deleteContents();if(l.body.childNodes.length===0){l.body.innerHTML=h}else{if(g.createContextualFragment){g.insertNode(g.createContextualFragment(h))}else{n=l.createDocumentFragment();m=l.createElement("div");n.appendChild(m);m.outerHTML=h;g.insertNode(n)}}}k=o.dom.get("__caret");g=l.createRange();g.setStartBefore(k);g.setEndBefore(k);o.setRng(g);o.dom.remove("__caret");try{o.setRng(g)}catch(i){}}else{if(g.item){l.execCommand("Delete",false,null);g=o.getRng()}if(/^\s+/.test(h)){g.pasteHTML('<span id="__mce_tmp">_</span>'+h);o.dom.remove("__mce_tmp")}else{g.pasteHTML(h)}}if(!j.no_events){o.onSetContent.dispatch(o,j)}},getStart:function(){var i=this,h=i.getRng(),j,g,l,k;if(h.duplicate||h.item){if(h.item){return h.item(0)}l=h.duplicate();l.collapse(1);j=l.parentElement();if(j.ownerDocument!==i.dom.doc){j=i.dom.getRoot()}g=k=h.parentElement();while(k=k.parentNode){if(k==j){j=g;break}}return j}else{j=h.startContainer;if(j.nodeType==1&&j.hasChildNodes()){j=j.childNodes[Math.min(j.childNodes.length-1,h.startOffset)]}if(j&&j.nodeType==3){return j.parentNode}return j}},getEnd:function(){var h=this,g=h.getRng(),j,i;if(g.duplicate||g.item){if(g.item){return g.item(0)}g=g.duplicate();g.collapse(0);j=g.parentElement();if(j.ownerDocument!==h.dom.doc){j=h.dom.getRoot()}if(j&&j.nodeName=="BODY"){return j.lastChild||j}return j}else{j=g.endContainer;i=g.endOffset;if(j.nodeType==1&&j.hasChildNodes()){j=j.childNodes[i>0?i-1:i]}if(j&&j.nodeType==3){return j.parentNode}return j}},getBookmark:function(s,v){var y=this,n=y.dom,h,k,j,o,i,p,q,m="\uFEFF",x;function g(z,A){var t=0;e(n.select(z),function(C,B){if(C==A){t=B}});return t}function u(t){function z(E){var A,D,C,B=E?"start":"end";A=t[B+"Container"];D=t[B+"Offset"];if(A.nodeType==1&&A.nodeName=="TR"){C=A.childNodes;A=C[Math.min(E?D:D-1,C.length-1)];if(A){D=E?0:A.childNodes.length;t["set"+(E?"Start":"End")](A,D)}}}z(true);z();return t}function l(){var z=y.getRng(true),t=n.getRoot(),A={};function B(E,J){var D=E[J?"startContainer":"endContainer"],I=E[J?"startOffset":"endOffset"],C=[],F,H,G=0;if(D.nodeType==3){if(v){for(F=D.previousSibling;F&&F.nodeType==3;F=F.previousSibling){I+=F.nodeValue.length}}C.push(I)}else{H=D.childNodes;if(I>=H.length&&H.length){G=1;I=Math.max(0,H.length-1)}C.push(y.dom.nodeIndex(H[I],v)+G)}for(;D&&D!=t;D=D.parentNode){C.push(y.dom.nodeIndex(D,v))}return C}A.start=B(z,true);if(!y.isCollapsed()){A.end=B(z)}return A}if(s==2){if(y.tridentSel){return y.tridentSel.getBookmark(s)}return l()}if(s){h=y.getRng();if(h.setStart){h={startContainer:h.startContainer,startOffset:h.startOffset,endContainer:h.endContainer,endOffset:h.endOffset}}return{rng:h}}h=y.getRng();j=n.uniqueId();o=tinyMCE.activeEditor.selection.isCollapsed();x="overflow:hidden;line-height:0px";if(h.duplicate||h.item){if(!h.item){k=h.duplicate();try{h.collapse();h.pasteHTML('<span data-mce-type="bookmark" id="'+j+'_start" style="'+x+'">'+m+"</span>");if(!o){k.collapse(false);h.moveToElementText(k.parentElement());if(h.compareEndPoints("StartToEnd",k)===0){k.move("character",-1)}k.pasteHTML('<span data-mce-type="bookmark" id="'+j+'_end" style="'+x+'">'+m+"</span>")}}catch(r){return null}}else{p=h.item(0);i=p.nodeName;return{name:i,index:g(i,p)}}}else{p=y.getNode();i=p.nodeName;if(i=="IMG"){return{name:i,index:g(i,p)}}k=u(h.cloneRange());if(!o){k.collapse(false);k.insertNode(n.create("span",{"data-mce-type":"bookmark",id:j+"_end",style:x},m))}h=u(h);h.collapse(true);h.insertNode(n.create("span",{"data-mce-type":"bookmark",id:j+"_start",style:x},m))}y.moveToBookmark({id:j,keep:1});return{id:j}},moveToBookmark:function(q){var v=this,n=v.dom,l,j,g,i,u,k,x,r,s;function h(C){var t=q[C?"start":"end"],z,A,B,y;if(t){B=t[0];for(A=u,z=t.length-1;z>=1;z--){y=A.childNodes;if(t[z]>y.length-1){return}A=y[t[z]]}if(A.nodeType===3){B=Math.min(t[0],A.nodeValue.length)}if(A.nodeType===1){B=Math.min(t[0],A.childNodes.length)}if(C){g.setStart(A,B)}else{g.setEnd(A,B)}}return true}function m(D){var y=n.get(q.id+"_"+D),C,t,A,B,z=q.keep;if(y){C=y.parentNode;if(D=="start"){if(!z){t=n.nodeIndex(y)}else{C=y.firstChild;t=1}k=x=C;r=s=t}else{if(!z){t=n.nodeIndex(y)}else{C=y.firstChild;t=1}x=C;s=t}if(!z){B=y.previousSibling;A=y.nextSibling;e(d.grep(y.childNodes),function(E){if(E.nodeType==3){E.nodeValue=E.nodeValue.replace(/\uFEFF/g,"")}});while(y=n.get(q.id+"_"+D)){n.remove(y,1)}if(B&&A&&B.nodeType==A.nodeType&&B.nodeType==3&&!d.isOpera){t=B.nodeValue.length;B.appendData(A.nodeValue);n.remove(A);if(D=="start"){k=x=B;r=s=t}else{x=B;s=t}}}}}function o(t){if(n.isBlock(t)&&!t.innerHTML&&!b){t.innerHTML='<br data-mce-bogus="1" />'}return t}if(q){if(q.start){g=n.createRng();u=n.getRoot();if(v.tridentSel){return v.tridentSel.moveToBookmark(q)}if(h(true)&&h()){v.setRng(g)}}else{if(q.id){m("start");m("end");if(k){g=n.createRng();g.setStart(o(k),r);g.setEnd(o(x),s);v.setRng(g)}}else{if(q.name){v.select(n.select(q.name)[q.index])}else{if(q.rng){g=q.rng;if(g.startContainer){i=v.dom.createRng();try{i.setStart(g.startContainer,g.startOffset);i.setEnd(g.endContainer,g.endOffset)}catch(p){}g=i}v.setRng(g)}}}}}},select:function(l,k){var j=this,m=j.dom,h=m.createRng(),g;function i(n,p){var o=new a(n,n);do{if(n.nodeType==3&&d.trim(n.nodeValue).length!==0){if(p){h.setStart(n,0)}else{h.setEnd(n,n.nodeValue.length)}return}if(n.nodeName=="BR"){if(p){h.setStartBefore(n)}else{h.setEndBefore(n)}return}}while(n=(p?o.next():o.prev()))}if(l){g=m.nodeIndex(l);h.setStart(l.parentNode,g);h.setEnd(l.parentNode,g+1);if(k){i(l,1);i(l)}j.setRng(h)}return l},isCollapsed:function(){var g=this,i=g.getRng(),h=g.getSel();if(!i||i.item){return false}if(i.compareEndPoints){return i.compareEndPoints("StartToEnd",i)===0}return !h||i.collapsed},collapse:function(g){var i=this,h=i.getRng(),j;if(h.item){j=h.item(0);h=i.win.document.body.createTextRange();h.moveToElementText(j)}h.collapse(!!g);i.setRng(h)},getSel:function(){var h=this,g=this.win;return g.getSelection?g.getSelection():g.document.selection},getRng:function(m){var h=this,j,g,l,k=h.win.document;if(m&&h.tridentSel){return h.tridentSel.getRangeAt(0)}try{if(j=h.getSel()){g=j.rangeCount>0?j.getRangeAt(0):(j.createRange?j.createRange():k.createRange())}}catch(i){}if(d.isIE&&!d.isIE11&&g&&g.setStart&&k.selection.createRange().item){l=k.selection.createRange().item(0);g=k.createRange();g.setStartBefore(l);g.setEndAfter(l)}if(!g){g=k.createRange?k.createRange():k.body.createTextRange()}if(g.setStart&&g.startContainer.nodeType===9&&g.collapsed){l=h.dom.getRoot();g.setStart(l,0);g.setEnd(l,0)}if(h.selectedRange&&h.explicitRange){if(g.compareBoundaryPoints(g.START_TO_START,h.selectedRange)===0&&g.compareBoundaryPoints(g.END_TO_END,h.selectedRange)===0){g=h.explicitRange}else{h.selectedRange=null;h.explicitRange=null}}return g},setRng:function(k,g){var j,i=this;if(!i.tridentSel){j=i.getSel();if(j){i.explicitRange=k;try{j.removeAllRanges()}catch(h){}j.addRange(k);if(g===false&&j.extend){j.collapse(k.endContainer,k.endOffset);j.extend(k.startContainer,k.startOffset)}i.selectedRange=j.rangeCount>0?j.getRangeAt(0):null}}else{if(k.cloneRange){try{i.tridentSel.addRange(k);return}catch(h){}}try{k.select()}catch(h){}}},setNode:function(h){var g=this;g.setContent(g.dom.getOuterHTML(h));return h},getNode:function(){var i=this,h=i.getRng(),j=i.getSel(),m,l=h.startContainer,g=h.endContainer;function k(q,o){var p=q;while(q&&q.nodeType===3&&q.length===0){q=o?q.nextSibling:q.previousSibling}return q||p}if(!h){return i.dom.getRoot()}if(h.setStart){m=h.commonAncestorContainer;if(!h.collapsed){if(h.startContainer==h.endContainer){if(h.endOffset-h.startOffset<2){if(h.startContainer.hasChildNodes()){m=h.startContainer.childNodes[h.startOffset]}}}if(l.nodeType===3&&g.nodeType===3){if(l.length===h.startOffset){l=k(l.nextSibling,true)}else{l=l.parentNode}if(h.endOffset===0){g=k(g.previousSibling,false)}else{g=g.parentNode}if(l&&l===g){return l}}}if(m&&m.nodeType==3){return m.parentNode}return m}return h.item?h.item(0):h.parentElement()},getSelectedBlocks:function(p,h){var o=this,k=o.dom,m,l,i,j=[];m=k.getParent(p||o.getStart(),k.isBlock);l=k.getParent(h||o.getEnd(),k.isBlock);if(m){j.push(m)}if(m&&l&&m!=l){i=m;var g=new a(m,k.getRoot());while((i=g.next())&&i!=l){if(k.isBlock(i)){j.push(i)}}}if(l&&m!=l){j.push(l)}return j},isForward:function(){var i=this.dom,g=this.getSel(),j,h;if(!g||g.anchorNode==null||g.focusNode==null){return true}j=i.createRng();j.setStart(g.anchorNode,g.anchorOffset);j.collapse(true);h=i.createRng();h.setStart(g.focusNode,g.focusOffset);h.collapse(true);return j.compareBoundaryPoints(j.START_TO_START,h)<=0},normalize:function(){var h=this,g,m,l,j,i;function k(p){var o,r,n,s=h.dom,u=s.getRoot(),q,t,v;function y(z,A){var B=new a(z,s.getParent(z.parentNode,s.isBlock)||u);while(z=B[A?"prev":"next"]()){if(z.nodeName==="BR"){return true}}}function x(B,z){var C,A;z=z||o;C=new a(z,s.getParent(z.parentNode,s.isBlock)||u);while(q=C[B?"prev":"next"]()){if(q.nodeType===3&&q.nodeValue.length>0){o=q;r=B?q.nodeValue.length:0;m=true;return}if(s.isBlock(q)||t[q.nodeName.toLowerCase()]){return}A=q}if(l&&A){o=A;m=true;r=0}}o=g[(p?"start":"end")+"Container"];r=g[(p?"start":"end")+"Offset"];t=s.schema.getNonEmptyElements();if(o.nodeType===9){o=s.getRoot();r=0}if(o===u){if(p){q=o.childNodes[r>0?r-1:0];if(q){v=q.nodeName.toLowerCase();if(t[q.nodeName]||q.nodeName=="TABLE"){return}}}if(o.hasChildNodes()){o=o.childNodes[Math.min(!p&&r>0?r-1:r,o.childNodes.length-1)];r=0;if(o.hasChildNodes()&&!/TABLE/.test(o.nodeName)){q=o;n=new a(o,u);do{if(q.nodeType===3&&q.nodeValue.length>0){r=p?0:q.nodeValue.length;o=q;m=true;break}if(t[q.nodeName.toLowerCase()]){r=s.nodeIndex(q);o=q.parentNode;if(q.nodeName=="IMG"&&!p){r++}m=true;break}}while(q=(p?n.next():n.prev()))}}}if(l){if(o.nodeType===3&&r===0){x(true)}if(o.nodeType===1){q=o.childNodes[r];if(q&&q.nodeName==="BR"&&!y(q)&&!y(q,true)){x(true,o.childNodes[r])}}}if(p&&!l&&o.nodeType===3&&r===o.nodeValue.length){x(false)}if(m){g["set"+(p?"Start":"End")](o,r)}}if(d.isIE){return}g=h.getRng();l=g.collapsed;k(true);if(!l){k()}if(m){if(l){g.collapse(true)}h.setRng(g,h.isForward())}},selectorChanged:function(g,j){var h=this,i;if(!h.selectorChangedData){h.selectorChangedData={};i={};h.editor.onNodeChange.addToTop(function(l,k,o){var p=h.dom,m=p.getParents(o,null,p.getRoot()),n={};e(h.selectorChangedData,function(r,q){e(m,function(s){if(p.is(s,q)){if(!i[q]){e(r,function(t){t(true,{node:s,selector:q,parents:m})});i[q]=r}n[q]=r;return false}})});e(i,function(r,q){if(!n[q]){delete i[q];e(r,function(s){s(false,{node:o,selector:q,parents:m})})}})})}if(!h.selectorChangedData[g]){h.selectorChangedData[g]=[]}h.selectorChangedData[g].push(j);return h},scrollIntoView:function(k){var j,h,g=this,i=g.dom;h=i.getViewPort(g.editor.getWin());j=i.getPos(k).y;if(j<h.y||j+25>h.y+h.h){g.editor.getWin().scrollTo(0,j<h.y?j:j-h.h+25)}},destroy:function(h){var g=this;g.win=null;if(!h){d.removeUnload(g.destroy)}},_fixIESelection:function(){var h=this.dom,n=h.doc,i=n.body,k,o,g;function j(p,s){var q=i.createTextRange();try{q.moveToPoint(p,s)}catch(r){q=null}return q}function m(q){var p;if(q.button){p=j(q.x,q.y);if(p){if(p.compareEndPoints("StartToStart",o)>0){p.setEndPoint("StartToStart",o)}else{p.setEndPoint("EndToEnd",o)}p.select()}}else{l()}}function l(){var p=n.selection.createRange();if(o&&!p.item&&p.compareEndPoints("StartToEnd",p)===0){o.select()}h.unbind(n,"mouseup",l);h.unbind(n,"mousemove",m);o=k=0}n.documentElement.unselectable=true;h.bind(n,["mousedown","contextmenu"],function(p){if(p.target.nodeName==="HTML"){if(k){l()}g=n.documentElement;if(g.scrollHeight>g.clientHeight){return}k=1;o=j(p.x,p.y);if(o){h.bind(n,"mouseup",l);h.bind(n,"mousemove",m);h.win.focus();o.select()}}})}})})(tinymce);(function(a){a.dom.Serializer=function(e,i,f){var h,b,d=a.isIE,g=a.each,c;if(!e.apply_source_formatting){e.indent=false}i=i||a.DOM;f=f||new a.html.Schema(e);e.entity_encoding=e.entity_encoding||"named";e.remove_trailing_brs="remove_trailing_brs" in e?e.remove_trailing_brs:true;h=new a.util.Dispatcher(self);b=new a.util.Dispatcher(self);c=new a.html.DomParser(e,f);c.addAttributeFilter("src,href,style",function(k,j){var o=k.length,l,q,n="data-mce-"+j,p=e.url_converter,r=e.url_converter_scope,m;while(o--){l=k[o];q=l.attributes.map[n];if(q!==m){l.attr(j,q.length>0?q:null);l.attr(n,null)}else{q=l.attributes.map[j];if(j==="style"){q=i.serializeStyle(i.parseStyle(q),l.name)}else{if(p){q=p.call(r,q,j,l.name)}}l.attr(j,q.length>0?q:null)}}});c.addAttributeFilter("class",function(j,k){var l=j.length,m,n;while(l--){m=j[l];n=m.attr("class").replace(/(?:^|\s)mce(Item\w+|Selected)(?!\S)/g,"");m.attr("class",n.length>0?n:null)}});c.addAttributeFilter("data-mce-type",function(j,l,k){var m=j.length,n;while(m--){n=j[m];if(n.attributes.map["data-mce-type"]==="bookmark"&&!k.cleanup){n.remove()}}});c.addAttributeFilter("data-mce-expando",function(j,l,k){var m=j.length;while(m--){j[m].attr(l,null)}});c.addNodeFilter("noscript",function(j){var k=j.length,l;while(k--){l=j[k].firstChild;if(l){l.value=a.html.Entities.decode(l.value)}}});c.addNodeFilter("script,style",function(k,l){var m=k.length,n,o;function j(p){return p.replace(/(<!--\[CDATA\[|\]\]-->)/g,"\n").replace(/^[\r\n]*|[\r\n]*$/g,"").replace(/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi,"").replace(/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g,"")}while(m--){n=k[m];o=n.firstChild?n.firstChild.value:"";if(l==="script"){n.attr("type",(n.attr("type")||"text/javascript").replace(/^mce\-/,""));if(o.length>0){n.firstChild.value="// <![CDATA[\n"+j(o)+"\n// ]]>"}}else{if(o.length>0){n.firstChild.value="<!--\n"+j(o)+"\n-->"}}}});c.addNodeFilter("#comment",function(j,k){var l=j.length,m;while(l--){m=j[l];if(m.value.indexOf("[CDATA[")===0){m.name="#cdata";m.type=4;m.value=m.value.replace(/^\[CDATA\[|\]\]$/g,"")}else{if(m.value.indexOf("mce:protected ")===0){m.name="#text";m.type=3;m.raw=true;m.value=unescape(m.value).substr(14)}}}});c.addNodeFilter("xml:namespace,input",function(j,k){var l=j.length,m;while(l--){m=j[l];if(m.type===7){m.remove()}else{if(m.type===1){if(k==="input"&&!("type" in m.attributes.map)){m.attr("type","text")}}}}});if(e.fix_list_elements){c.addNodeFilter("ul,ol",function(k,l){var m=k.length,n,j;while(m--){n=k[m];j=n.parent;if(j.name==="ul"||j.name==="ol"){if(n.prev&&n.prev.name==="li"){n.prev.append(n)}}}})}c.addAttributeFilter("data-mce-src,data-mce-href,data-mce-style",function(j,k){var l=j.length;while(l--){j[l].attr(k,null)}});return{schema:f,addNodeFilter:c.addNodeFilter,addAttributeFilter:c.addAttributeFilter,onPreProcess:h,onPostProcess:b,serialize:function(o,m){var l,p,k,j,n;if(d&&i.select("script,style,select,map").length>0){n=o.innerHTML;o=o.cloneNode(false);i.setHTML(o,n)}else{o=o.cloneNode(true)}l=o.ownerDocument.implementation;if(l.createHTMLDocument){p=l.createHTMLDocument("");g(o.nodeName=="BODY"?o.childNodes:[o],function(q){p.body.appendChild(p.importNode(q,true))});if(o.nodeName!="BODY"){o=p.body.firstChild}else{o=p.body}k=i.doc;i.doc=p}m=m||{};m.format=m.format||"html";if(!m.no_events){m.node=o;h.dispatch(self,m)}j=new a.html.Serializer(e,f);m.content=j.serialize(c.parse(a.trim(m.getInner?o.innerHTML:i.getOuterHTML(o)),m));if(!m.cleanup){m.content=m.content.replace(/\uFEFF/g,"")}if(!m.no_events){b.dispatch(self,m)}if(k){i.doc=k}m.node=null;return m.content},addRules:function(j){f.addValidElements(j)},setRules:function(j){f.setValidElements(j)}}}})(tinymce);(function(a){a.dom.ScriptLoader=function(h){var c=0,k=1,i=2,l={},j=[],e={},d=[],g=0,f;function b(m,v){var x=this,q=a.DOM,s,o,r,n;function p(){q.remove(n);if(s){s.onreadystatechange=s.onload=s=null}v()}function u(){if(typeof(console)!=="undefined"&&console.log){console.log("Failed to load: "+m)}}n=q.uniqueId();if(a.isIE6){o=new a.util.URI(m);r=location;if(o.host==r.hostname&&o.port==r.port&&(o.protocol+":")==r.protocol&&o.protocol.toLowerCase()!="file"){a.util.XHR.send({url:a._addVer(o.getURI()),success:function(y){var t=q.create("script",{type:"text/javascript"});t.text=y;document.getElementsByTagName("head")[0].appendChild(t);q.remove(t);p()},error:u});return}}s=document.createElement("script");s.id=n;s.type="text/javascript";s.src=a._addVer(m);if(!a.isIE||a.isIE11){s.onload=p}s.onerror=u;if(!a.isOpera){s.onreadystatechange=function(){var t=s.readyState;if(t=="complete"||t=="loaded"){p()}}}(document.getElementsByTagName("head")[0]||document.body).appendChild(s)}this.isDone=function(m){return l[m]==i};this.markDone=function(m){l[m]=i};this.add=this.load=function(m,q,n){var o,p=l[m];if(p==f){j.push(m);l[m]=c}if(q){if(!e[m]){e[m]=[]}e[m].push({func:q,scope:n||this})}};this.loadQueue=function(n,m){this.loadScripts(j,n,m)};this.loadScripts=function(m,q,p){var o;function n(r){a.each(e[r],function(s){s.func.call(s.scope)});e[r]=f}d.push({func:q,scope:p||this});o=function(){var r=a.grep(m);m.length=0;a.each(r,function(s){if(l[s]==i){n(s);return}if(l[s]!=k){l[s]=k;g++;b(s,function(){l[s]=i;g--;n(s);o()})}});if(!g){a.each(d,function(s){s.func.call(s.scope)});d.length=0}};o()}};a.ScriptLoader=new a.dom.ScriptLoader()})(tinymce);(function(a){a.dom.RangeUtils=function(c){var b="\uFEFF";this.walk=function(d,s){var i=d.startContainer,l=d.startOffset,t=d.endContainer,m=d.endOffset,j,g,o,h,r,q,e;e=c.select("td.mceSelected,th.mceSelected");if(e.length>0){a.each(e,function(u){s([u])});return}function f(u){var v;v=u[0];if(v.nodeType===3&&v===i&&l>=v.nodeValue.length){u.splice(0,1)}v=u[u.length-1];if(m===0&&u.length>0&&v===t&&v.nodeType===3){u.splice(u.length-1,1)}return u}function p(x,v,u){var y=[];for(;x&&x!=u;x=x[v]){y.push(x)}return y}function n(v,u){do{if(v.parentNode==u){return v}v=v.parentNode}while(v)}function k(x,v,y){var u=y?"nextSibling":"previousSibling";for(h=x,r=h.parentNode;h&&h!=v;h=r){r=h.parentNode;q=p(h==x?h:h[u],u);if(q.length){if(!y){q.reverse()}s(f(q))}}}if(i.nodeType==1&&i.hasChildNodes()){i=i.childNodes[l]}if(t.nodeType==1&&t.hasChildNodes()){t=t.childNodes[Math.min(m-1,t.childNodes.length-1)]}if(i==t){return s(f([i]))}j=c.findCommonAncestor(i,t);for(h=i;h;h=h.parentNode){if(h===t){return k(i,j,true)}if(h===j){break}}for(h=t;h;h=h.parentNode){if(h===i){return k(t,j)}if(h===j){break}}g=n(i,j)||i;o=n(t,j)||t;k(i,g,true);q=p(g==i?g:g.nextSibling,"nextSibling",o==t?o.nextSibling:o);if(q.length){s(f(q))}k(t,o)};this.split=function(e){var h=e.startContainer,d=e.startOffset,i=e.endContainer,g=e.endOffset;function f(j,k){return j.splitText(k)}if(h==i&&h.nodeType==3){if(d>0&&d<h.nodeValue.length){i=f(h,d);h=i.previousSibling;if(g>d){g=g-d;h=i=f(i,g).previousSibling;g=i.nodeValue.length;d=0}else{g=0}}}else{if(h.nodeType==3&&d>0&&d<h.nodeValue.length){h=f(h,d);d=0}if(i.nodeType==3&&g>0&&g<i.nodeValue.length){i=f(i,g).previousSibling;g=i.nodeValue.length}}return{startContainer:h,startOffset:d,endContainer:i,endOffset:g}}};a.dom.RangeUtils.compareRanges=function(c,b){if(c&&b){if(c.item||c.duplicate){if(c.item&&b.item&&c.item(0)===b.item(0)){return true}if(c.isEqual&&b.isEqual&&b.isEqual(c)){return true}}else{return c.startContainer==b.startContainer&&c.startOffset==b.startOffset}}return false}})(tinymce);(function(b){var a=b.dom.Event,c=b.each;b.create("tinymce.ui.KeyboardNavigation",{KeyboardNavigation:function(e,f){var q=this,n=e.root,m=e.items,o=e.enableUpDown,i=e.enableLeftRight||!e.enableUpDown,l=e.excludeFromTabOrder,k,h,p,d,g;f=f||b.DOM;k=function(r){g=r.target.id};h=function(r){f.setAttrib(r.target.id,"tabindex","-1")};d=function(r){var s=f.get(g);f.setAttrib(s,"tabindex","0");s.focus()};q.focus=function(){f.get(g).focus()};q.destroy=function(){c(m,function(s){var t=f.get(s.id);f.unbind(t,"focus",k);f.unbind(t,"blur",h)});var r=f.get(n);f.unbind(r,"focus",d);f.unbind(r,"keydown",p);m=f=n=q.focus=k=h=p=d=null;q.destroy=function(){}};q.moveFocus=function(v,s){var r=-1,u=q.controls,t;if(!g){return}c(m,function(y,x){if(y.id===g){r=x;return false}});r+=v;if(r<0){r=m.length-1}else{if(r>=m.length){r=0}}t=m[r];f.setAttrib(g,"tabindex","-1");f.setAttrib(t.id,"tabindex","0");f.get(t.id).focus();if(e.actOnFocus){e.onAction(t.id)}if(s){a.cancel(s)}};p=function(z){var v=37,u=39,y=38,A=40,r=27,t=14,s=13,x=32;switch(z.keyCode){case v:if(i){q.moveFocus(-1)}a.cancel(z);break;case u:if(i){q.moveFocus(1)}a.cancel(z);break;case y:if(o){q.moveFocus(-1)}a.cancel(z);break;case A:if(o){q.moveFocus(1)}a.cancel(z);break;case r:if(e.onCancel){e.onCancel();a.cancel(z)}break;case t:case s:case x:if(e.onAction){e.onAction(g);a.cancel(z)}break}};c(m,function(t,r){var s,u;if(!t.id){t.id=f.uniqueId("_mce_item_")}u=f.get(t.id);if(l){f.bind(u,"blur",h);s="-1"}else{s=(r===0?"0":"-1")}u.setAttribute("tabindex",s);f.bind(u,"focus",k)});if(m[0]){g=m[0].id}f.setAttrib(n,"tabindex","-1");var j=f.get(n);f.bind(j,"focus",d);f.bind(j,"keydown",p)}})})(tinymce);(function(c){var b=c.DOM,a=c.is;c.create("tinymce.ui.Control",{Control:function(f,e,d){this.id=f;this.settings=e=e||{};this.rendered=false;this.onRender=new c.util.Dispatcher(this);this.classPrefix="";this.scope=e.scope||this;this.disabled=0;this.active=0;this.editor=d},setAriaProperty:function(f,e){var d=b.get(this.id+"_aria")||b.get(this.id);if(d){b.setAttrib(d,"aria-"+f,!!e)}},focus:function(){b.get(this.id).focus()},setDisabled:function(d){if(d!=this.disabled){this.setAriaProperty("disabled",d);this.setState("Disabled",d);this.setState("Enabled",!d);this.disabled=d}},isDisabled:function(){return this.disabled},setActive:function(d){if(d!=this.active){this.setState("Active",d);this.active=d;this.setAriaProperty("pressed",d)}},isActive:function(){return this.active},setState:function(f,d){var e=b.get(this.id);f=this.classPrefix+f;if(d){b.addClass(e,f)}else{b.removeClass(e,f)}},isRendered:function(){return this.rendered},renderHTML:function(){},renderTo:function(d){b.setHTML(d,this.renderHTML())},postRender:function(){var e=this,d;if(a(e.disabled)){d=e.disabled;e.disabled=-1;e.setDisabled(d)}if(a(e.active)){d=e.active;e.active=-1;e.setActive(d)}},remove:function(){b.remove(this.id);this.destroy()},destroy:function(){c.dom.Event.clear(this.id)}})})(tinymce);tinymce.create("tinymce.ui.Container:tinymce.ui.Control",{Container:function(c,b,a){this.parent(c,b,a);this.controls=[];this.lookup={}},add:function(a){this.lookup[a.id]=a;this.controls.push(a);return a},get:function(a){return this.lookup[a]}});tinymce.create("tinymce.ui.Separator:tinymce.ui.Control",{Separator:function(b,a){this.parent(b,a);this.classPrefix="mceSeparator";this.setDisabled(true)},renderHTML:function(){return tinymce.DOM.createHTML("span",{"class":this.classPrefix,role:"separator","aria-orientation":"vertical",tabindex:"-1"})}});(function(d){var c=d.is,b=d.DOM,e=d.each,a=d.walk;d.create("tinymce.ui.MenuItem:tinymce.ui.Control",{MenuItem:function(g,f){this.parent(g,f);this.classPrefix="mceMenuItem"},setSelected:function(f){this.setState("Selected",f);this.setAriaProperty("checked",!!f);this.selected=f},isSelected:function(){return this.selected},postRender:function(){var f=this;f.parent();if(c(f.selected)){f.setSelected(f.selected)}}})})(tinymce);(function(d){var c=d.is,b=d.DOM,e=d.each,a=d.walk;d.create("tinymce.ui.Menu:tinymce.ui.MenuItem",{Menu:function(h,g){var f=this;f.parent(h,g);f.items={};f.collapsed=false;f.menuCount=0;f.onAddItem=new d.util.Dispatcher(this)},expand:function(g){var f=this;if(g){a(f,function(h){if(h.expand){h.expand()}},"items",f)}f.collapsed=false},collapse:function(g){var f=this;if(g){a(f,function(h){if(h.collapse){h.collapse()}},"items",f)}f.collapsed=true},isCollapsed:function(){return this.collapsed},add:function(f){if(!f.settings){f=new d.ui.MenuItem(f.id||b.uniqueId(),f)}this.onAddItem.dispatch(this,f);return this.items[f.id]=f},addSeparator:function(){return this.add({separator:true})},addMenu:function(f){if(!f.collapse){f=this.createMenu(f)}this.menuCount++;return this.add(f)},hasMenus:function(){return this.menuCount!==0},remove:function(f){delete this.items[f.id]},removeAll:function(){var f=this;a(f,function(g){if(g.removeAll){g.removeAll()}else{g.remove()}g.destroy()},"items",f);f.items={}},createMenu:function(g){var f=new d.ui.Menu(g.id||b.uniqueId(),g);f.onAddItem.add(this.onAddItem.dispatch,this.onAddItem);return f}})})(tinymce);(function(e){var d=e.is,c=e.DOM,f=e.each,a=e.dom.Event,b=e.dom.Element;e.create("tinymce.ui.DropMenu:tinymce.ui.Menu",{DropMenu:function(h,g){g=g||{};g.container=g.container||c.doc.body;g.offset_x=g.offset_x||0;g.offset_y=g.offset_y||0;g.vp_offset_x=g.vp_offset_x||0;g.vp_offset_y=g.vp_offset_y||0;if(d(g.icons)&&!g.icons){g["class"]+=" mceNoIcons"}this.parent(h,g);this.onShowMenu=new e.util.Dispatcher(this);this.onHideMenu=new e.util.Dispatcher(this);this.classPrefix="mceMenu"},createMenu:function(j){var h=this,i=h.settings,g;j.container=j.container||i.container;j.parent=h;j.constrain=j.constrain||i.constrain;j["class"]=j["class"]||i["class"];j.vp_offset_x=j.vp_offset_x||i.vp_offset_x;j.vp_offset_y=j.vp_offset_y||i.vp_offset_y;j.keyboard_focus=i.keyboard_focus;g=new e.ui.DropMenu(j.id||c.uniqueId(),j);g.onAddItem.add(h.onAddItem.dispatch,h.onAddItem);return g},focus:function(){var g=this;if(g.keyboardNav){g.keyboardNav.focus()}},update:function(){var i=this,j=i.settings,g=c.get("menu_"+i.id+"_tbl"),l=c.get("menu_"+i.id+"_co"),h,k;h=j.max_width?Math.min(g.offsetWidth,j.max_width):g.offsetWidth;k=j.max_height?Math.min(g.offsetHeight,j.max_height):g.offsetHeight;if(!c.boxModel){i.element.setStyles({width:h+2,height:k+2})}else{i.element.setStyles({width:h,height:k})}if(j.max_width){c.setStyle(l,"width",h)}if(j.max_height){c.setStyle(l,"height",k);if(g.clientHeight<j.max_height){c.setStyle(l,"overflow","hidden")}}},showMenu:function(p,n,r){var z=this,A=z.settings,o,g=c.getViewPort(),u,l,v,q,i=2,k,j,m=z.classPrefix;z.collapse(1);if(z.isMenuVisible){return}if(!z.rendered){o=c.add(z.settings.container,z.renderNode());f(z.items,function(h){h.postRender()});z.element=new b("menu_"+z.id,{blocker:1,container:A.container})}else{o=c.get("menu_"+z.id)}if(!e.isOpera){c.setStyles(o,{left:-65535,top:-65535})}c.show(o);z.update();p+=A.offset_x||0;n+=A.offset_y||0;g.w-=4;g.h-=4;if(A.constrain){u=o.clientWidth-i;l=o.clientHeight-i;v=g.x+g.w;q=g.y+g.h;if((p+A.vp_offset_x+u)>v){p=r?r-u:Math.max(0,(v-A.vp_offset_x)-u)}if((n+A.vp_offset_y+l)>q){n=Math.max(0,(q-A.vp_offset_y)-l)}}c.setStyles(o,{left:p,top:n});z.element.update();z.isMenuVisible=1;z.mouseClickFunc=a.add(o,"click",function(s){var h;s=s.target;if(s&&(s=c.getParent(s,"tr"))&&!c.hasClass(s,m+"ItemSub")){h=z.items[s.id];if(h.isDisabled()){return}k=z;while(k){if(k.hideMenu){k.hideMenu()}k=k.settings.parent}if(h.settings.onclick){h.settings.onclick(s)}return false}});if(z.hasMenus()){z.mouseOverFunc=a.add(o,"mouseover",function(x){var h,t,s;x=x.target;if(x&&(x=c.getParent(x,"tr"))){h=z.items[x.id];if(z.lastMenu){z.lastMenu.collapse(1)}if(h.isDisabled()){return}if(x&&c.hasClass(x,m+"ItemSub")){t=c.getRect(x);h.showMenu((t.x+t.w-i),t.y-i,t.x);z.lastMenu=h;c.addClass(c.get(h.id).firstChild,m+"ItemActive")}}})}a.add(o,"keydown",z._keyHandler,z);z.onShowMenu.dispatch(z);if(A.keyboard_focus){z._setupKeyboardNav()}},hideMenu:function(j){var g=this,i=c.get("menu_"+g.id),h;if(!g.isMenuVisible){return}if(g.keyboardNav){g.keyboardNav.destroy()}a.remove(i,"mouseover",g.mouseOverFunc);a.remove(i,"click",g.mouseClickFunc);a.remove(i,"keydown",g._keyHandler);c.hide(i);g.isMenuVisible=0;if(!j){g.collapse(1)}if(g.element){g.element.hide()}if(h=c.get(g.id)){c.removeClass(h.firstChild,g.classPrefix+"ItemActive")}g.onHideMenu.dispatch(g)},add:function(i){var g=this,h;i=g.parent(i);if(g.isRendered&&(h=c.get("menu_"+g.id))){g._add(c.select("tbody",h)[0],i)}return i},collapse:function(g){this.parent(g);this.hideMenu(1)},remove:function(g){c.remove(g.id);this.destroy();return this.parent(g)},destroy:function(){var g=this,h=c.get("menu_"+g.id);if(g.keyboardNav){g.keyboardNav.destroy()}a.remove(h,"mouseover",g.mouseOverFunc);a.remove(c.select("a",h),"focus",g.mouseOverFunc);a.remove(h,"click",g.mouseClickFunc);a.remove(h,"keydown",g._keyHandler);if(g.element){g.element.remove()}c.remove(h)},renderNode:function(){var i=this,j=i.settings,l,h,k,g;g=c.create("div",{role:"listbox",id:"menu_"+i.id,"class":j["class"],style:"position:absolute;left:0;top:0;z-index:200000;outline:0"});if(i.settings.parent){c.setAttrib(g,"aria-parent","menu_"+i.settings.parent.id)}k=c.add(g,"div",{role:"presentation",id:"menu_"+i.id+"_co","class":i.classPrefix+(j["class"]?" "+j["class"]:"")});i.element=new b("menu_"+i.id,{blocker:1,container:j.container});if(j.menu_line){c.add(k,"span",{"class":i.classPrefix+"Line"})}l=c.add(k,"table",{role:"presentation",id:"menu_"+i.id+"_tbl",border:0,cellPadding:0,cellSpacing:0});h=c.add(l,"tbody");f(i.items,function(m){i._add(h,m)});i.rendered=true;return g},_setupKeyboardNav:function(){var i,h,g=this;i=c.get("menu_"+g.id);h=c.select("a[role=option]","menu_"+g.id);h.splice(0,0,i);g.keyboardNav=new e.ui.KeyboardNavigation({root:"menu_"+g.id,items:h,onCancel:function(){g.hideMenu()},enableUpDown:true});i.focus()},_keyHandler:function(g){var h=this,i;switch(g.keyCode){case 37:if(h.settings.parent){h.hideMenu();h.settings.parent.focus();a.cancel(g)}break;case 39:if(h.mouseOverFunc){h.mouseOverFunc(g)}break}},_add:function(j,h){var i,q=h.settings,p,l,k,m=this.classPrefix,g;if(q.separator){l=c.add(j,"tr",{id:h.id,"class":m+"ItemSeparator"});c.add(l,"td",{"class":m+"ItemSeparator"});if(i=l.previousSibling){c.addClass(i,"mceLast")}return}i=l=c.add(j,"tr",{id:h.id,"class":m+"Item "+m+"ItemEnabled"});i=k=c.add(i,q.titleItem?"th":"td");i=p=c.add(i,"a",{id:h.id+"_aria",role:q.titleItem?"presentation":"option",href:"javascript:;",onclick:"return false;",onmousedown:"return false;"});if(q.parent){c.setAttrib(p,"aria-haspopup","true");c.setAttrib(p,"aria-owns","menu_"+h.id)}c.addClass(k,q["class"]);g=c.add(i,"span",{"class":"mceIcon"+(q.icon?" mce_"+q.icon:"")});if(q.icon_src){c.add(g,"img",{src:q.icon_src})}i=c.add(i,q.element||"span",{"class":"mceText",title:h.settings.title},h.settings.title);if(h.settings.style){if(typeof h.settings.style=="function"){h.settings.style=h.settings.style()}c.setAttrib(i,"style",h.settings.style)}if(j.childNodes.length==1){c.addClass(l,"mceFirst")}if((i=l.previousSibling)&&c.hasClass(i,m+"ItemSeparator")){c.addClass(l,"mceFirst")}if(h.collapse){c.addClass(l,m+"ItemSub")}if(i=l.previousSibling){c.removeClass(i,"mceLast")}c.addClass(l,"mceLast")}})})(tinymce);(function(b){var a=b.DOM;b.create("tinymce.ui.Button:tinymce.ui.Control",{Button:function(e,d,c){this.parent(e,d,c);this.classPrefix="mceButton"},renderHTML:function(){var f=this.classPrefix,e=this.settings,d,c;c=a.encode(e.label||"");d='<a role="button" id="'+this.id+'" href="javascript:;" class="'+f+" "+f+"Enabled "+e["class"]+(c?" "+f+"Labeled":"")+'" onmousedown="return false;" onclick="return false;" aria-labelledby="'+this.id+'_voice" title="'+a.encode(e.title)+'">';if(e.image&&!(this.editor&&this.editor.forcedHighContrastMode)){d+='<span class="mceIcon '+e["class"]+'"><img class="mceIcon" src="'+e.image+'" alt="'+a.encode(e.title)+'" /></span>'+(c?'<span class="'+f+'Label">'+c+"</span>":"")}else{d+='<span class="mceIcon '+e["class"]+'"></span>'+(c?'<span class="'+f+'Label">'+c+"</span>":"")}d+='<span class="mceVoiceLabel mceIconOnly" style="display: none;" id="'+this.id+'_voice">'+e.title+"</span>";d+="</a>";return d},postRender:function(){var d=this,e=d.settings,c;if(b.isIE&&d.editor){b.dom.Event.add(d.id,"mousedown",function(f){var g=d.editor.selection.getNode().nodeName;c=g==="IMG"?d.editor.selection.getBookmark():null})}b.dom.Event.add(d.id,"click",function(f){if(!d.isDisabled()){if(b.isIE&&d.editor&&c!==null){d.editor.selection.moveToBookmark(c)}return e.onclick.call(e.scope,f)}});b.dom.Event.add(d.id,"keydown",function(f){if(!d.isDisabled()&&f.keyCode==b.VK.SPACEBAR){b.dom.Event.cancel(f);return e.onclick.call(e.scope,f)}})}})})(tinymce);(function(e){var d=e.DOM,b=e.dom.Event,f=e.each,a=e.util.Dispatcher,c;e.create("tinymce.ui.ListBox:tinymce.ui.Control",{ListBox:function(j,i,g){var h=this;h.parent(j,i,g);h.items=[];h.onChange=new a(h);h.onPostRender=new a(h);h.onAdd=new a(h);h.onRenderMenu=new e.util.Dispatcher(this);h.classPrefix="mceListBox";h.marked={}},select:function(h){var g=this,j,i;g.marked={};if(h==c){return g.selectByIndex(-1)}if(h&&typeof(h)=="function"){i=h}else{i=function(k){return k==h}}if(h!=g.selectedValue){f(g.items,function(l,k){if(i(l.value)){j=1;g.selectByIndex(k);return false}});if(!j){g.selectByIndex(-1)}}},selectByIndex:function(g){var i=this,j,k,h;i.marked={};if(g!=i.selectedIndex){j=d.get(i.id+"_text");h=d.get(i.id+"_voiceDesc");k=i.items[g];if(k){i.selectedValue=k.value;i.selectedIndex=g;d.setHTML(j,d.encode(k.title));d.setHTML(h,i.settings.title+" - "+k.title);d.removeClass(j,"mceTitle");d.setAttrib(i.id,"aria-valuenow",k.title)}else{d.setHTML(j,d.encode(i.settings.title));d.setHTML(h,d.encode(i.settings.title));d.addClass(j,"mceTitle");i.selectedValue=i.selectedIndex=null;d.setAttrib(i.id,"aria-valuenow",i.settings.title)}j=0}},mark:function(g){this.marked[g]=true},add:function(j,g,i){var h=this;i=i||{};i=e.extend(i,{title:j,value:g});h.items.push(i);h.onAdd.dispatch(h,i)},getLength:function(){return this.items.length},renderHTML:function(){var j="",g=this,i=g.settings,k=g.classPrefix;j='<span role="listbox" aria-haspopup="true" aria-labelledby="'+g.id+'_voiceDesc" aria-describedby="'+g.id+'_voiceDesc"><table role="presentation" tabindex="0" id="'+g.id+'" cellpadding="0" cellspacing="0" class="'+k+" "+k+"Enabled"+(i["class"]?(" "+i["class"]):"")+'"><tbody><tr>';j+="<td>"+d.createHTML("span",{id:g.id+"_voiceDesc","class":"voiceLabel",style:"display:none;"},g.settings.title);j+=d.createHTML("a",{id:g.id+"_text",tabindex:-1,href:"javascript:;","class":"mceText",onclick:"return false;",onmousedown:"return false;"},d.encode(g.settings.title))+"</td>";j+="<td>"+d.createHTML("a",{id:g.id+"_open",tabindex:-1,href:"javascript:;","class":"mceOpen",onclick:"return false;",onmousedown:"return false;"},'<span><span style="display:none;" class="mceIconOnly" aria-hidden="true">\u25BC</span></span>')+"</td>";j+="</tr></tbody></table></span>";return j},showMenu:function(){var h=this,j,i=d.get(this.id),g;if(h.isDisabled()||h.items.length===0){return}if(h.menu&&h.menu.isMenuVisible){return h.hideMenu()}if(!h.isMenuRendered){h.renderMenu();h.isMenuRendered=true}j=d.getPos(i);g=h.menu;g.settings.offset_x=j.x;g.settings.offset_y=j.y;g.settings.keyboard_focus=!e.isOpera;f(h.items,function(k){if(g.items[k.id]){g.items[k.id].setSelected(0)}});f(h.items,function(k){if(g.items[k.id]&&h.marked[k.value]){g.items[k.id].setSelected(1)}if(k.value===h.selectedValue){g.items[k.id].setSelected(1)}});g.showMenu(0,i.clientHeight);b.add(d.doc,"mousedown",h.hideMenu,h);d.addClass(h.id,h.classPrefix+"Selected")},hideMenu:function(h){var g=this;if(g.menu&&g.menu.isMenuVisible){d.removeClass(g.id,g.classPrefix+"Selected");if(h&&h.type=="mousedown"&&(h.target.id==g.id+"_text"||h.target.id==g.id+"_open")){return}if(!h||!d.getParent(h.target,".mceMenu")){d.removeClass(g.id,g.classPrefix+"Selected");b.remove(d.doc,"mousedown",g.hideMenu,g);g.menu.hideMenu()}}},renderMenu:function(){var h=this,g;g=h.settings.control_manager.createDropMenu(h.id+"_menu",{menu_line:1,"class":h.classPrefix+"Menu mceNoIcons",max_width:250,max_height:150});g.onHideMenu.add(function(){h.hideMenu();h.focus()});g.add({title:h.settings.title,"class":"mceMenuItemTitle",onclick:function(){if(h.settings.onselect("")!==false){h.select("")}}});f(h.items,function(i){if(i.value===c){g.add({title:i.title,role:"option","class":"mceMenuItemTitle",onclick:function(){if(h.settings.onselect("")!==false){h.select("")}}})}else{i.id=d.uniqueId();i.role="option";i.onclick=function(){if(h.settings.onselect(i.value)!==false){h.select(i.value)}};g.add(i)}});h.onRenderMenu.dispatch(h,g);h.menu=g},postRender:function(){var g=this,h=g.classPrefix;b.add(g.id,"click",g.showMenu,g);b.add(g.id,"keydown",function(i){if(i.keyCode==32){g.showMenu(i);b.cancel(i)}});b.add(g.id,"focus",function(){if(!g._focused){g.keyDownHandler=b.add(g.id,"keydown",function(i){if(i.keyCode==40){g.showMenu();b.cancel(i)}});g.keyPressHandler=b.add(g.id,"keypress",function(j){var i;if(j.keyCode==13){i=g.selectedValue;g.selectedValue=null;b.cancel(j);g.settings.onselect(i)}})}g._focused=1});b.add(g.id,"blur",function(){b.remove(g.id,"keydown",g.keyDownHandler);b.remove(g.id,"keypress",g.keyPressHandler);g._focused=0});if(e.isIE6||!d.boxModel){b.add(g.id,"mouseover",function(){if(!d.hasClass(g.id,h+"Disabled")){d.addClass(g.id,h+"Hover")}});b.add(g.id,"mouseout",function(){if(!d.hasClass(g.id,h+"Disabled")){d.removeClass(g.id,h+"Hover")}})}g.onPostRender.dispatch(g,d.get(g.id))},destroy:function(){this.parent();b.clear(this.id+"_text");b.clear(this.id+"_open")}})})(tinymce);(function(e){var d=e.DOM,b=e.dom.Event,f=e.each,a=e.util.Dispatcher,c;e.create("tinymce.ui.NativeListBox:tinymce.ui.ListBox",{NativeListBox:function(h,g){this.parent(h,g);this.classPrefix="mceNativeListBox"},setDisabled:function(g){d.get(this.id).disabled=g;this.setAriaProperty("disabled",g)},isDisabled:function(){return d.get(this.id).disabled},select:function(h){var g=this,j,i;if(h==c){return g.selectByIndex(-1)}if(h&&typeof(h)=="function"){i=h}else{i=function(k){return k==h}}if(h!=g.selectedValue){f(g.items,function(l,k){if(i(l.value)){j=1;g.selectByIndex(k);return false}});if(!j){g.selectByIndex(-1)}}},selectByIndex:function(g){d.get(this.id).selectedIndex=g+1;this.selectedValue=this.items[g]?this.items[g].value:null},add:function(k,h,g){var j,i=this;g=g||{};g.value=h;if(i.isRendered()){d.add(d.get(this.id),"option",g,k)}j={title:k,value:h,attribs:g};i.items.push(j);i.onAdd.dispatch(i,j)},getLength:function(){return this.items.length},renderHTML:function(){var i,g=this;i=d.createHTML("option",{value:""},"-- "+g.settings.title+" --");f(g.items,function(h){i+=d.createHTML("option",{value:h.value},h.title)});i=d.createHTML("select",{id:g.id,"class":"mceNativeListBox","aria-labelledby":g.id+"_aria"},i);i+=d.createHTML("span",{id:g.id+"_aria",style:"display: none"},g.settings.title);return i},postRender:function(){var h=this,i,j=true;h.rendered=true;function g(l){var k=h.items[l.target.selectedIndex-1];if(k&&(k=k.value)){h.onChange.dispatch(h,k);if(h.settings.onselect){h.settings.onselect(k)}}}b.add(h.id,"change",g);b.add(h.id,"keydown",function(q){var n,p=37,m=39,l=38,r=40,k=13,o=32;b.remove(h.id,"change",i);j=false;n=b.add(h.id,"blur",function(){if(j){return}j=true;b.add(h.id,"change",g);b.remove(h.id,"blur",n)});if(q.keyCode==k||q.keyCode==o){g(q);return b.cancel(q)}else{if(q.keyCode==r||q.keyCode==l){q.stopImmediatePropagation()}}});h.onPostRender.dispatch(h,d.get(h.id))}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each;c.create("tinymce.ui.MenuButton:tinymce.ui.Button",{MenuButton:function(g,f,e){this.parent(g,f,e);this.onRenderMenu=new c.util.Dispatcher(this);f.menu_container=f.menu_container||b.doc.body},showMenu:function(){var g=this,j,i,h=b.get(g.id),f;if(g.isDisabled()){return}if(!g.isMenuRendered){g.renderMenu();g.isMenuRendered=true}if(g.isMenuVisible){return g.hideMenu()}j=b.getPos(g.settings.menu_container);i=b.getPos(h);f=g.menu;f.settings.offset_x=i.x;f.settings.offset_y=i.y;f.settings.vp_offset_x=i.x;f.settings.vp_offset_y=i.y;f.settings.keyboard_focus=g._focused;f.showMenu(0,h.firstChild.clientHeight);a.add(b.doc,"mousedown",g.hideMenu,g);g.setState("Selected",1);g.isMenuVisible=1},renderMenu:function(){var f=this,e;e=f.settings.control_manager.createDropMenu(f.id+"_menu",{menu_line:1,"class":this.classPrefix+"Menu",icons:f.settings.icons});e.onHideMenu.add(function(){f.hideMenu();f.focus()});f.onRenderMenu.dispatch(f,e);f.menu=e},hideMenu:function(g){var f=this;if(g&&g.type=="mousedown"&&b.getParent(g.target,function(h){return h.id===f.id||h.id===f.id+"_open"})){return}if(!g||!b.getParent(g.target,".mceMenu")){f.setState("Selected",0);a.remove(b.doc,"mousedown",f.hideMenu,f);if(f.menu){f.menu.hideMenu()}}f.isMenuVisible=0},postRender:function(){var e=this,f=e.settings;a.add(e.id,"click",function(){if(!e.isDisabled()){if(f.onclick){f.onclick(e.value)}e.showMenu()}})}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each;c.create("tinymce.ui.SplitButton:tinymce.ui.MenuButton",{SplitButton:function(g,f,e){this.parent(g,f,e);this.classPrefix="mceSplitButton"},renderHTML:function(){var i,f=this,g=f.settings,e;i="<tbody><tr>";if(g.image){e=b.createHTML("img ",{src:g.image,role:"presentation","class":"mceAction "+g["class"]})}else{e=b.createHTML("span",{"class":"mceAction "+g["class"]},"")}e+=b.createHTML("span",{"class":"mceVoiceLabel mceIconOnly",id:f.id+"_voice",style:"display:none;"},g.title);i+="<td >"+b.createHTML("a",{role:"button",id:f.id+"_action",tabindex:"-1",href:"javascript:;","class":"mceAction "+g["class"],onclick:"return false;",onmousedown:"return false;",title:g.title},e)+"</td>";e=b.createHTML("span",{"class":"mceOpen "+g["class"]},'<span style="display:none;" class="mceIconOnly" aria-hidden="true">\u25BC</span>');i+="<td >"+b.createHTML("a",{role:"button",id:f.id+"_open",tabindex:"-1",href:"javascript:;","class":"mceOpen "+g["class"],onclick:"return false;",onmousedown:"return false;",title:g.title},e)+"</td>";i+="</tr></tbody>";i=b.createHTML("table",{role:"presentation","class":"mceSplitButton mceSplitButtonEnabled "+g["class"],cellpadding:"0",cellspacing:"0",title:g.title},i);return b.createHTML("div",{id:f.id,role:"button",tabindex:"0","aria-labelledby":f.id+"_voice","aria-haspopup":"true"},i)},postRender:function(){var e=this,g=e.settings,f;if(g.onclick){f=function(h){if(!e.isDisabled()){g.onclick(e.value);a.cancel(h)}};a.add(e.id+"_action","click",f);a.add(e.id,["click","keydown"],function(h){var k=32,m=14,i=13,j=38,l=40;if((h.keyCode===32||h.keyCode===13||h.keyCode===14)&&!h.altKey&&!h.ctrlKey&&!h.metaKey){f();a.cancel(h)}else{if(h.type==="click"||h.keyCode===l){e.showMenu();a.cancel(h)}}})}a.add(e.id+"_open","click",function(h){e.showMenu();a.cancel(h)});a.add([e.id,e.id+"_open"],"focus",function(){e._focused=1});a.add([e.id,e.id+"_open"],"blur",function(){e._focused=0});if(c.isIE6||!b.boxModel){a.add(e.id,"mouseover",function(){if(!b.hasClass(e.id,"mceSplitButtonDisabled")){b.addClass(e.id,"mceSplitButtonHover")}});a.add(e.id,"mouseout",function(){if(!b.hasClass(e.id,"mceSplitButtonDisabled")){b.removeClass(e.id,"mceSplitButtonHover")}})}},destroy:function(){this.parent();a.clear(this.id+"_action");a.clear(this.id+"_open");a.clear(this.id)}})})(tinymce);(function(d){var c=d.DOM,a=d.dom.Event,b=d.is,e=d.each;d.create("tinymce.ui.ColorSplitButton:tinymce.ui.SplitButton",{ColorSplitButton:function(i,h,f){var g=this;g.parent(i,h,f);g.settings=h=d.extend({colors:"000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF",grid_width:8,default_color:"#888888"},g.settings);g.onShowMenu=new d.util.Dispatcher(g);g.onHideMenu=new d.util.Dispatcher(g);g.value=h.default_color},showMenu:function(){var f=this,g,j,i,h;if(f.isDisabled()){return}if(!f.isMenuRendered){f.renderMenu();f.isMenuRendered=true}if(f.isMenuVisible){return f.hideMenu()}i=c.get(f.id);c.show(f.id+"_menu");c.addClass(i,"mceSplitButtonSelected");h=c.getPos(i);c.setStyles(f.id+"_menu",{left:h.x,top:h.y+i.firstChild.clientHeight,zIndex:200000});i=0;a.add(c.doc,"mousedown",f.hideMenu,f);f.onShowMenu.dispatch(f);if(f._focused){f._keyHandler=a.add(f.id+"_menu","keydown",function(k){if(k.keyCode==27){f.hideMenu()}});c.select("a",f.id+"_menu")[0].focus()}f.keyboardNav=new d.ui.KeyboardNavigation({root:f.id+"_menu",items:c.select("a",f.id+"_menu"),onCancel:function(){f.hideMenu();f.focus()}});f.keyboardNav.focus();f.isMenuVisible=1},hideMenu:function(g){var f=this;if(f.isMenuVisible){if(g&&g.type=="mousedown"&&c.getParent(g.target,function(h){return h.id===f.id+"_open"})){return}if(!g||!c.getParent(g.target,".mceSplitButtonMenu")){c.removeClass(f.id,"mceSplitButtonSelected");a.remove(c.doc,"mousedown",f.hideMenu,f);a.remove(f.id+"_menu","keydown",f._keyHandler);c.hide(f.id+"_menu")}f.isMenuVisible=0;f.onHideMenu.dispatch();f.keyboardNav.destroy()}},renderMenu:function(){var p=this,h,k=0,q=p.settings,g,j,l,o,f;o=c.add(q.menu_container,"div",{role:"listbox",id:p.id+"_menu","class":q.menu_class+" "+q["class"],style:"position:absolute;left:0;top:-1000px;"});h=c.add(o,"div",{"class":q["class"]+" mceSplitButtonMenu"});c.add(h,"span",{"class":"mceMenuLine"});g=c.add(h,"table",{role:"presentation","class":"mceColorSplitMenu"});j=c.add(g,"tbody");k=0;e(b(q.colors,"array")?q.colors:q.colors.split(","),function(m){m=m.replace(/^#/,"");if(!k--){l=c.add(j,"tr");k=q.grid_width-1}g=c.add(l,"td");var i={href:"javascript:;",style:{backgroundColor:"#"+m},title:p.editor.getLang("colors."+m,m),"data-mce-color":"#"+m};if(!d.isIE){i.role="option"}g=c.add(g,"a",i);if(p.editor.forcedHighContrastMode){g=c.add(g,"canvas",{width:16,height:16,"aria-hidden":"true"});if(g.getContext&&(f=g.getContext("2d"))){f.fillStyle="#"+m;f.fillRect(0,0,16,16)}else{c.remove(g)}}});if(q.more_colors_func){g=c.add(j,"tr");g=c.add(g,"td",{colspan:q.grid_width,"class":"mceMoreColors"});g=c.add(g,"a",{role:"option",id:p.id+"_more",href:"javascript:;",onclick:"return false;","class":"mceMoreColors"},q.more_colors_title);a.add(g,"click",function(i){q.more_colors_func.call(q.more_colors_scope||this);return a.cancel(i)})}c.addClass(h,"mceColorSplitMenu");a.add(p.id+"_menu","mousedown",function(i){return a.cancel(i)});a.add(p.id+"_menu","click",function(i){var m;i=c.getParent(i.target,"a",j);if(i&&i.nodeName.toLowerCase()=="a"&&(m=i.getAttribute("data-mce-color"))){p.setColor(m)}return false});return o},setColor:function(f){this.displayColor(f);this.hideMenu();this.settings.onselect(f)},displayColor:function(g){var f=this;c.setStyle(f.id+"_preview","backgroundColor",g);f.value=g},postRender:function(){var f=this,g=f.id;f.parent();c.add(g+"_action","div",{id:g+"_preview","class":"mceColorPreview"});c.setStyle(f.id+"_preview","backgroundColor",f.value)},destroy:function(){var f=this;f.parent();a.clear(f.id+"_menu");a.clear(f.id+"_more");c.remove(f.id+"_menu");if(f.keyboardNav){f.keyboardNav.destroy()}}})})(tinymce);(function(b){var d=b.DOM,c=b.each,a=b.dom.Event;b.create("tinymce.ui.ToolbarGroup:tinymce.ui.Container",{renderHTML:function(){var f=this,i=[],e=f.controls,j=b.each,g=f.settings;i.push('<div id="'+f.id+'" role="group" aria-labelledby="'+f.id+'_voice">');i.push("<span role='application'>");i.push('<span id="'+f.id+'_voice" class="mceVoiceLabel" style="display:none;">'+d.encode(g.name)+"</span>");j(e,function(h){i.push(h.renderHTML())});i.push("</span>");i.push("</div>");return i.join("")},focus:function(){var e=this;d.get(e.id).focus()},postRender:function(){var f=this,e=[];c(f.controls,function(g){c(g.controls,function(h){if(h.id){e.push(h)}})});f.keyNav=new b.ui.KeyboardNavigation({root:f.id,items:e,onCancel:function(){if(b.isWebKit){d.get(f.editor.id+"_ifr").focus()}f.editor.focus()},excludeFromTabOrder:!f.settings.tab_focus_toolbar})},destroy:function(){var e=this;e.parent();e.keyNav.destroy();a.clear(e.id)}})})(tinymce);(function(a){var c=a.DOM,b=a.each;a.create("tinymce.ui.Toolbar:tinymce.ui.Container",{renderHTML:function(){var m=this,f="",j,k,n=m.settings,e,d,g,l;l=m.controls;for(e=0;e<l.length;e++){k=l[e];d=l[e-1];g=l[e+1];if(e===0){j="mceToolbarStart";if(k.Button){j+=" mceToolbarStartButton"}else{if(k.SplitButton){j+=" mceToolbarStartSplitButton"}else{if(k.ListBox){j+=" mceToolbarStartListBox"}}}f+=c.createHTML("td",{"class":j},c.createHTML("span",null,"<!-- IE -->"))}if(d&&k.ListBox){if(d.Button||d.SplitButton){f+=c.createHTML("td",{"class":"mceToolbarEnd"},c.createHTML("span",null,"<!-- IE -->"))}}if(c.stdMode){f+='<td style="position: relative">'+k.renderHTML()+"</td>"}else{f+="<td>"+k.renderHTML()+"</td>"}if(g&&k.ListBox){if(g.Button||g.SplitButton){f+=c.createHTML("td",{"class":"mceToolbarStart"},c.createHTML("span",null,"<!-- IE -->"))}}}j="mceToolbarEnd";if(k.Button){j+=" mceToolbarEndButton"}else{if(k.SplitButton){j+=" mceToolbarEndSplitButton"}else{if(k.ListBox){j+=" mceToolbarEndListBox"}}}f+=c.createHTML("td",{"class":j},c.createHTML("span",null,"<!-- IE -->"));return c.createHTML("table",{id:m.id,"class":"mceToolbar"+(n["class"]?" "+n["class"]:""),cellpadding:"0",cellspacing:"0",align:m.settings.align||"",role:"presentation",tabindex:"-1"},"<tbody><tr>"+f+"</tr></tbody>")}})})(tinymce);(function(b){var a=b.util.Dispatcher,c=b.each;b.create("tinymce.AddOnManager",{AddOnManager:function(){var d=this;d.items=[];d.urls={};d.lookup={};d.onAdd=new a(d)},get:function(d){if(this.lookup[d]){return this.lookup[d].instance}else{return undefined}},dependencies:function(e){var d;if(this.lookup[e]){d=this.lookup[e].dependencies}return d||[]},requireLangPack:function(e){var d=b.settings;if(d&&d.language&&d.language_load!==false){b.ScriptLoader.add(this.urls[e]+"/langs/"+d.language+".js")}},add:function(f,e,d){this.items.push(e);this.lookup[f]={instance:e,dependencies:d};this.onAdd.dispatch(this,f,e);return e},createUrl:function(d,e){if(typeof e==="object"){return e}else{return{prefix:d.prefix,resource:e,suffix:d.suffix}}},addComponents:function(f,d){var e=this.urls[f];b.each(d,function(g){b.ScriptLoader.add(e+"/"+g)})},load:function(j,f,d,h){var g=this,e=f;function i(){var k=g.dependencies(j);b.each(k,function(m){var l=g.createUrl(f,m);g.load(l.resource,l,undefined,undefined)});if(d){if(h){d.call(h)}else{d.call(b.ScriptLoader)}}}if(g.urls[j]){return}if(typeof f==="object"){e=f.prefix+f.resource+f.suffix}if(e.indexOf("/")!==0&&e.indexOf("://")==-1){e=b.baseURL+"/"+e}g.urls[j]=e.substring(0,e.lastIndexOf("/"));if(g.lookup[j]){i()}else{b.ScriptLoader.add(e,i,h)}}});b.PluginManager=new b.AddOnManager();b.ThemeManager=new b.AddOnManager()}(tinymce));(function(j){var g=j.each,d=j.extend,k=j.DOM,i=j.dom.Event,f=j.ThemeManager,b=j.PluginManager,e=j.explode,h=j.util.Dispatcher,a,c=0;j.documentBaseURL=window.location.href.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,"");if(!/[\/\\]$/.test(j.documentBaseURL)){j.documentBaseURL+="/"}j.baseURL=new j.util.URI(j.documentBaseURL).toAbsolute(j.baseURL);j.baseURI=new j.util.URI(j.baseURL);j.onBeforeUnload=new h(j);i.add(window,"beforeunload",function(l){j.onBeforeUnload.dispatch(j,l)});j.onAddEditor=new h(j);j.onRemoveEditor=new h(j);j.EditorManager=d(j,{editors:[],i18n:{},activeEditor:null,init:function(x){var v=this,o,n=j.ScriptLoader,u,l=[],r;function q(t){var s=t.id;if(!s){s=t.name;if(s&&!k.get(s)){s=t.name}else{s=k.uniqueId()}t.setAttribute("id",s)}return s}function m(z,A,t){var y=z[A];if(!y){return}if(j.is(y,"string")){t=y.replace(/\.\w+$/,"");t=t?j.resolve(t):0;y=j.resolve(y)}return y.apply(t||this,Array.prototype.slice.call(arguments,2))}function p(t,s){return s.constructor===RegExp?s.test(t.className):k.hasClass(t,s)}v.settings=x;i.bind(window,"ready",function(){var s,t;m(x,"onpageload");switch(x.mode){case"exact":s=x.elements||"";if(s.length>0){g(e(s),function(y){if(k.get(y)){r=new j.Editor(y,x);l.push(r);r.render(1)}else{g(document.forms,function(z){g(z.elements,function(A){if(A.name===y){y="mce_editor_"+c++;k.setAttrib(A,"id",y);r=new j.Editor(y,x);l.push(r);r.render(1)}})})}})}break;case"textareas":case"specific_textareas":g(k.select("textarea"),function(y){if(x.editor_deselector&&p(y,x.editor_deselector)){return}if(!x.editor_selector||p(y,x.editor_selector)){r=new j.Editor(q(y),x);l.push(r);r.render(1)}});break;default:if(x.types){g(x.types,function(y){g(k.select(y.selector),function(A){var z=new j.Editor(q(A),j.extend({},x,y));l.push(z);z.render(1)})})}else{if(x.selector){g(k.select(x.selector),function(z){var y=new j.Editor(q(z),x);l.push(y);y.render(1)})}}}if(x.oninit){s=t=0;g(l,function(y){t++;if(!y.initialized){y.onInit.add(function(){s++;if(s==t){m(x,"oninit")}})}else{s++}if(s==t){m(x,"oninit")}})}})},get:function(l){if(l===a){return this.editors}if(!this.editors.hasOwnProperty(l)){return a}return this.editors[l]},getInstanceById:function(l){return this.get(l)},add:function(m){var l=this,n=l.editors;n[m.id]=m;n.push(m);l._setActive(m);l.onAddEditor.dispatch(l,m);return m},remove:function(n){var m=this,l,o=m.editors;if(!o[n.id]){return null}delete o[n.id];for(l=0;l<o.length;l++){if(o[l]==n){o.splice(l,1);break}}if(m.activeEditor==n){m._setActive(o[0])}n.destroy();m.onRemoveEditor.dispatch(m,n);return n},execCommand:function(r,p,o){var q=this,n=q.get(o),l;function m(){n.destroy();l.detachEvent("onunload",m);l=l.tinyMCE=l.tinymce=null}switch(r){case"mceFocus":n.focus();return true;case"mceAddEditor":case"mceAddControl":if(!q.get(o)){new j.Editor(o,q.settings).render()}return true;case"mceAddFrameControl":l=o.window;l.tinyMCE=tinyMCE;l.tinymce=j;j.DOM.doc=l.document;j.DOM.win=l;n=new j.Editor(o.element_id,o);n.render();if(j.isIE&&!j.isIE11){l.attachEvent("onunload",m)}o.page_window=null;return true;case"mceRemoveEditor":case"mceRemoveControl":if(n){n.remove()}return true;case"mceToggleEditor":if(!n){q.execCommand("mceAddControl",0,o);return true}if(n.isHidden()){n.show()}else{n.hide()}return true}if(q.activeEditor){return q.activeEditor.execCommand(r,p,o)}return false},execInstanceCommand:function(p,o,n,m){var l=this.get(p);if(l){return l.execCommand(o,n,m)}return false},triggerSave:function(){g(this.editors,function(l){l.save()})},addI18n:function(n,q){var l,m=this.i18n;if(!j.is(n,"string")){g(n,function(r,p){g(r,function(t,s){g(t,function(v,u){if(s==="common"){m[p+"."+u]=v}else{m[p+"."+s+"."+u]=v}})})})}else{g(q,function(r,p){m[n+"."+p]=r})}},_setActive:function(l){this.selectedInstance=this.activeEditor=l}})})(tinymce);(function(k){var l=k.DOM,j=k.dom.Event,f=k.extend,i=k.each,a=k.isGecko,b=k.isIE,e=k.isWebKit,d=k.is,h=k.ThemeManager,c=k.PluginManager,g=k.explode;k.create("tinymce.Editor",{Editor:function(p,o){var m=this,n=true;m.settings=o=f({id:p,language:"en",theme:"advanced",skin:"default",delta_width:0,delta_height:0,popup_css:"",plugins:"",document_base_url:k.documentBaseURL,add_form_submit_trigger:n,submit_patch:n,add_unload_trigger:n,convert_urls:n,relative_urls:n,remove_script_host:n,table_inline_editing:false,object_resizing:n,accessibility_focus:n,doctype:k.isIE6?'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">':"<!DOCTYPE>",visual:n,font_size_style_values:"xx-small,x-small,small,medium,large,x-large,xx-large",font_size_legacy_values:"xx-small,small,medium,large,x-large,xx-large,300%",apply_source_formatting:n,directionality:"ltr",forced_root_block:"p",hidden_input:n,padd_empty_editor:n,render_ui:n,indentation:"30px",fix_table_elements:n,inline_styles:n,convert_fonts_to_spans:n,indent:"simple",indent_before:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,option,optgroup,datalist",indent_after:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,option,optgroup,datalist",validate:n,entity_encoding:"named",url_converter:m.convertURL,url_converter_scope:m,ie7_compat:n},o);m.id=m.editorId=p;m.isNotDirty=false;m.plugins={};m.documentBaseURI=new k.util.URI(o.document_base_url||k.documentBaseURL,{base_uri:tinyMCE.baseURI});m.baseURI=k.baseURI;m.contentCSS=[];m.contentStyles=[];m.setupEvents();m.execCommands={};m.queryStateCommands={};m.queryValueCommands={};m.execCallback("setup",m)},render:function(o){var p=this,q=p.settings,r=p.id,m=k.ScriptLoader;if(!j.domLoaded){j.add(window,"ready",function(){p.render()});return}tinyMCE.settings=q;if(!p.getElement()){return}if(k.isIDevice&&!k.isIOS5){return}if(!/TEXTAREA|INPUT/i.test(p.getElement().nodeName)&&q.hidden_input&&l.getParent(r,"form")){l.insertAfter(l.create("input",{type:"hidden",name:r}),r)}if(!q.content_editable){p.orgVisibility=p.getElement().style.visibility;p.getElement().style.visibility="hidden"}if(k.WindowManager){p.windowManager=new k.WindowManager(p)}if(q.encoding=="xml"){p.onGetContent.add(function(s,t){if(t.save){t.content=l.encode(t.content)}})}if(q.add_form_submit_trigger){p.onSubmit.addToTop(function(){if(p.initialized){p.save();p.isNotDirty=1}})}if(q.add_unload_trigger){p._beforeUnload=tinyMCE.onBeforeUnload.add(function(){if(p.initialized&&!p.destroyed&&!p.isHidden()){p.save({format:"raw",no_events:true})}})}k.addUnload(p.destroy,p);if(q.submit_patch){p.onBeforeRenderUI.add(function(){var s=p.getElement().form;if(!s){return}if(s._mceOldSubmit){return}if(!s.submit.nodeType&&!s.submit.length){p.formElement=s;s._mceOldSubmit=s.submit;s.submit=function(){k.triggerSave();p.isNotDirty=1;return p.formElement._mceOldSubmit(p.formElement)}}s=null})}function n(){if(q.language&&q.language_load!==false){m.add(k.baseURL+"/langs/"+q.language+".js")}if(q.theme&&typeof q.theme!="function"&&q.theme.charAt(0)!="-"&&!h.urls[q.theme]){h.load(q.theme,"themes/"+q.theme+"/editor_template"+k.suffix+".js")}i(g(q.plugins),function(t){if(t&&!c.urls[t]){if(t.charAt(0)=="-"){t=t.substr(1,t.length);var s=c.dependencies(t);i(s,function(v){var u={prefix:"plugins/",resource:v,suffix:"/editor_plugin"+k.suffix+".js"};v=c.createUrl(u,v);c.load(v.resource,v)})}else{if(t=="safari"){return}c.load(t,{prefix:"plugins/",resource:t,suffix:"/editor_plugin"+k.suffix+".js"})}}});m.loadQueue(function(){if(!p.removed){p.init()}})}n()},init:function(){var q,G=this,H=G.settings,D,y,z,C=G.getElement(),p,m,E,v,B,F,x,r=[];k.add(G);H.aria_label=H.aria_label||l.getAttrib(C,"aria-label",G.getLang("aria.rich_text_area"));if(H.theme){if(typeof H.theme!="function"){H.theme=H.theme.replace(/-/,"");p=h.get(H.theme);G.theme=new p();if(G.theme.init){G.theme.init(G,h.urls[H.theme]||k.documentBaseURL.replace(/\/$/,""))}}else{G.theme=H.theme}}function A(s){var t=c.get(s),o=c.urls[s]||k.documentBaseURL.replace(/\/$/,""),n;if(t&&k.inArray(r,s)===-1){i(c.dependencies(s),function(u){A(u)});n=new t(G,o);G.plugins[s]=n;if(n.init){n.init(G,o);r.push(s)}}}i(g(H.plugins.replace(/\-/g,"")),A);if(H.popup_css!==false){if(H.popup_css){H.popup_css=G.documentBaseURI.toAbsolute(H.popup_css)}else{H.popup_css=G.baseURI.toAbsolute("themes/"+H.theme+"/skins/"+H.skin+"/dialog.css")}}if(H.popup_css_add){H.popup_css+=","+G.documentBaseURI.toAbsolute(H.popup_css_add)}G.controlManager=new k.ControlManager(G);G.onBeforeRenderUI.dispatch(G,G.controlManager);if(H.render_ui&&G.theme){G.orgDisplay=C.style.display;if(typeof H.theme!="function"){D=H.width||C.style.width||C.offsetWidth;y=H.height||C.style.height||C.offsetHeight;z=H.min_height||100;F=/^[0-9\.]+(|px)$/i;if(F.test(""+D)){D=Math.max(parseInt(D,10)+(p.deltaWidth||0),100)}if(F.test(""+y)){y=Math.max(parseInt(y,10)+(p.deltaHeight||0),z)}p=G.theme.renderUI({targetNode:C,width:D,height:y,deltaWidth:H.delta_width,deltaHeight:H.delta_height});l.setStyles(p.sizeContainer||p.editorContainer,{width:D,height:y});y=(p.iframeHeight||y)+(typeof(y)=="number"?(p.deltaHeight||0):"");if(y<z){y=z}}else{p=H.theme(G,C);if(p.editorContainer.nodeType){p.editorContainer=p.editorContainer.id=p.editorContainer.id||G.id+"_parent"}if(p.iframeContainer.nodeType){p.iframeContainer=p.iframeContainer.id=p.iframeContainer.id||G.id+"_iframecontainer"}y=p.iframeHeight||C.offsetHeight;if(b){G.onInit.add(function(n){n.dom.bind(n.getBody(),"beforedeactivate keydown keyup",function(){n.bookmark=n.selection.getBookmark(1)})});G.onNodeChange.add(function(n){if(document.activeElement.id==n.id+"_ifr"){n.bookmark=n.selection.getBookmark(1)}})}}G.editorContainer=p.editorContainer}if(H.content_css){i(g(H.content_css),function(n){G.contentCSS.push(G.documentBaseURI.toAbsolute(n))})}if(H.content_style){G.contentStyles.push(H.content_style)}if(H.content_editable){C=q=p=null;return G.initContentBody()}if(document.domain&&location.hostname!=document.domain){k.relaxedDomain=document.domain}G.iframeHTML=H.doctype+'<html><head xmlns="http://www.w3.org/1999/xhtml">';if(H.document_base_url!=k.documentBaseURL){G.iframeHTML+='<base href="'+G.documentBaseURI.getURI()+'" />'}if(k.isIE8){if(H.ie7_compat){G.iframeHTML+='<meta http-equiv="X-UA-Compatible" content="IE=7" />'}else{G.iframeHTML+='<meta http-equiv="X-UA-Compatible" content="IE=edge" />'}}G.iframeHTML+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';for(x=0;x<G.contentCSS.length;x++){G.iframeHTML+='<link type="text/css" rel="stylesheet" href="'+G.contentCSS[x]+'" />'}G.contentCSS=[];v=H.body_id||"tinymce";if(v.indexOf("=")!=-1){v=G.getParam("body_id","","hash");v=v[G.id]||v}B=H.body_class||"";if(B.indexOf("=")!=-1){B=G.getParam("body_class","","hash");B=B[G.id]||""}G.iframeHTML+='</head><body id="'+v+'" class="mceContentBody '+B+'" onload="window.parent.tinyMCE.get(\''+G.id+"').onLoad.dispatch();\"><br></body></html>";if(k.relaxedDomain&&(b||(k.isOpera&&parseFloat(opera.version())<11))){E='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinyMCE.get("'+G.id+'");document.write(ed.iframeHTML);document.close();ed.initContentBody();})()'}q=l.add(p.iframeContainer,"iframe",{id:G.id+"_ifr",src:E||'javascript:""',frameBorder:"0",allowTransparency:"true",title:H.aria_label,style:{width:"100%",height:y,display:"block"}});G.contentAreaContainer=p.iframeContainer;if(p.editorContainer){l.get(p.editorContainer).style.display=G.orgDisplay}C.style.visibility=G.orgVisibility;l.get(G.id).style.display="none";l.setAttrib(G.id,"aria-hidden",true);if(!k.relaxedDomain||!E){G.initContentBody()}C=q=p=null},initContentBody:function(){var n=this,p=n.settings,q=l.get(n.id),r=n.getDoc(),o,m,s;if((!b||!k.relaxedDomain)&&!p.content_editable){r.open();r.write(n.iframeHTML);r.close();if(k.relaxedDomain){r.domain=k.relaxedDomain}}if(p.content_editable){l.addClass(q,"mceContentBody");n.contentDocument=r=p.content_document||document;n.contentWindow=p.content_window||window;n.bodyElement=q;p.content_document=p.content_window=null}m=n.getBody();m.disabled=true;if(!p.readonly){m.contentEditable=n.getParam("content_editable_state",true)}m.disabled=false;n.schema=new k.html.Schema(p);n.dom=new k.dom.DOMUtils(r,{keep_values:true,url_converter:n.convertURL,url_converter_scope:n,hex_colors:p.force_hex_style_colors,class_filter:p.class_filter,update_styles:true,root_element:p.content_editable?n.id:null,schema:n.schema});n.parser=new k.html.DomParser(p,n.schema);n.parser.addAttributeFilter("src,href,style",function(t,u){var v=t.length,y,A=n.dom,z,x;while(v--){y=t[v];z=y.attr(u);x="data-mce-"+u;if(!y.attributes.map[x]){if(u==="style"){y.attr(x,A.serializeStyle(A.parseStyle(z),y.name))}else{y.attr(x,n.convertURL(z,u,y.name))}}}});n.parser.addNodeFilter("script",function(t,u){var v=t.length,x;while(v--){x=t[v];x.attr("type","mce-"+(x.attr("type")||"text/javascript"))}});n.parser.addNodeFilter("#cdata",function(t,u){var v=t.length,x;while(v--){x=t[v];x.type=8;x.name="#comment";x.value="[CDATA["+x.value+"]]"}});n.parser.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div",function(u,v){var x=u.length,y,t=n.schema.getNonEmptyElements();while(x--){y=u[x];if(y.isEmpty(t)){y.empty().append(new k.html.Node("br",1)).shortEnded=true}}});n.serializer=new k.dom.Serializer(p,n.dom,n.schema);n.selection=new k.dom.Selection(n.dom,n.getWin(),n.serializer,n);n.formatter=new k.Formatter(n);n.undoManager=new k.UndoManager(n);n.forceBlocks=new k.ForceBlocks(n);n.enterKey=new k.EnterKey(n);n.editorCommands=new k.EditorCommands(n);n.onExecCommand.add(function(t,u){if(!/^(FontName|FontSize)$/.test(u)){n.nodeChanged()}});n.serializer.onPreProcess.add(function(t,u){return n.onPreProcess.dispatch(n,u,t)});n.serializer.onPostProcess.add(function(t,u){return n.onPostProcess.dispatch(n,u,t)});n.onPreInit.dispatch(n);if(!p.browser_spellcheck&&!p.gecko_spellcheck){r.body.spellcheck=false}if(!p.readonly){n.bindNativeEvents()}n.controlManager.onPostRender.dispatch(n,n.controlManager);n.onPostRender.dispatch(n);n.quirks=k.util.Quirks(n);if(p.directionality){m.dir=p.directionality}if(p.nowrap){m.style.whiteSpace="nowrap"}if(p.protect){n.onBeforeSetContent.add(function(t,u){i(p.protect,function(v){u.content=u.content.replace(v,function(x){return"<!--mce:protected "+escape(x)+"-->"})})})}n.onSetContent.add(function(){n.addVisual(n.getBody())});if(p.padd_empty_editor){n.onPostProcess.add(function(t,u){u.content=u.content.replace(/^(<p[^>]*>(&nbsp;|&#160;|\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/,"")})}n.load({initial:true,format:"html"});n.startContent=n.getContent({format:"raw"});n.initialized=true;n.onInit.dispatch(n);n.execCallback("setupcontent_callback",n.id,m,r);n.execCallback("init_instance_callback",n);n.focus(true);n.nodeChanged({initial:true});if(n.contentStyles.length>0){s="";i(n.contentStyles,function(t){s+=t+"\r\n"});n.dom.addStyle(s)}i(n.contentCSS,function(t){n.dom.loadCSS(t)});if(p.auto_focus){setTimeout(function(){var t=k.get(p.auto_focus);t.selection.select(t.getBody(),1);t.selection.collapse(1);t.getBody().focus();t.getWin().focus()},100)}q=r=m=null},focus:function(p){var o,u=this,t=u.selection,q=u.settings.content_editable,n,r,s=u.getDoc(),m;if(!p){if(u.bookmark){t.moveToBookmark(u.bookmark);u.bookmark=null}n=t.getRng();if(n.item){r=n.item(0)}u._refreshContentEditable();if(!q){u.getWin().focus()}if(k.isGecko||q){m=u.getBody();if(m.setActive&&!k.isIE11){m.setActive()}else{m.focus()}if(q){t.normalize()}}if(r&&r.ownerDocument==s){n=s.body.createControlRange();n.addElement(r);n.select()}}if(k.activeEditor!=u){if((o=k.activeEditor)!=null){o.onDeactivate.dispatch(o,u)}u.onActivate.dispatch(u,o)}k._setActive(u)},execCallback:function(q){var m=this,p=m.settings[q],o;if(!p){return}if(m.callbackLookup&&(o=m.callbackLookup[q])){p=o.func;o=o.scope}if(d(p,"string")){o=p.replace(/\.\w+$/,"");o=o?k.resolve(o):0;p=k.resolve(p);m.callbackLookup=m.callbackLookup||{};m.callbackLookup[q]={func:p,scope:o}}return p.apply(o||m,Array.prototype.slice.call(arguments,1))},translate:function(m){var o=this.settings.language||"en",n=k.i18n;if(!m){return""}return n[o+"."+m]||m.replace(/\{\#([^\}]+)\}/g,function(q,p){return n[o+"."+p]||"{#"+p+"}"})},getLang:function(o,m){return k.i18n[(this.settings.language||"en")+"."+o]||(d(m)?m:"{#"+o+"}")},getParam:function(t,q,m){var r=k.trim,p=d(this.settings[t])?this.settings[t]:q,s;if(m==="hash"){s={};if(d(p,"string")){i(p.indexOf("=")>0?p.split(/[;,](?![^=;,]*(?:[;,]|$))/):p.split(","),function(n){n=n.split("=");if(n.length>1){s[r(n[0])]=r(n[1])}else{s[r(n[0])]=r(n)}})}else{s=p}return s}return p},nodeChanged:function(q){var m=this,n=m.selection,p;if(m.initialized){q=q||{};p=n.getStart()||m.getBody();p=b&&p.ownerDocument!=m.getDoc()?m.getBody():p;q.parents=[];m.dom.getParent(p,function(o){if(o.nodeName=="BODY"){return true}q.parents.push(o)});m.onNodeChange.dispatch(m,q?q.controlManager||m.controlManager:m.controlManager,p,n.isCollapsed(),q)}},addButton:function(n,o){var m=this;m.buttons=m.buttons||{};m.buttons[n]=o},addCommand:function(m,o,n){this.execCommands[m]={func:o,scope:n||this}},addQueryStateHandler:function(m,o,n){this.queryStateCommands[m]={func:o,scope:n||this}},addQueryValueHandler:function(m,o,n){this.queryValueCommands[m]={func:o,scope:n||this}},addShortcut:function(o,q,m,p){var n=this,r;if(n.settings.custom_shortcuts===false){return false}n.shortcuts=n.shortcuts||{};if(d(m,"string")){r=m;m=function(){n.execCommand(r,false,null)}}if(d(m,"object")){r=m;m=function(){n.execCommand(r[0],r[1],r[2])}}i(g(o),function(s){var t={func:m,scope:p||this,desc:n.translate(q),alt:false,ctrl:false,shift:false};i(g(s,"+"),function(u){switch(u){case"alt":case"ctrl":case"shift":t[u]=true;break;default:t.charCode=u.charCodeAt(0);t.keyCode=u.toUpperCase().charCodeAt(0)}});n.shortcuts[(t.ctrl?"ctrl":"")+","+(t.alt?"alt":"")+","+(t.shift?"shift":"")+","+t.keyCode]=t});return true},execCommand:function(u,r,x,m){var p=this,q=0,v,n;if(!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(u)&&(!m||!m.skip_focus)){p.focus()}m=f({},m);p.onBeforeExecCommand.dispatch(p,u,r,x,m);if(m.terminate){return false}if(p.execCallback("execcommand_callback",p.id,p.selection.getNode(),u,r,x)){p.onExecCommand.dispatch(p,u,r,x,m);return true}if(v=p.execCommands[u]){n=v.func.call(v.scope,r,x);if(n!==true){p.onExecCommand.dispatch(p,u,r,x,m);return n}}i(p.plugins,function(o){if(o.execCommand&&o.execCommand(u,r,x)){p.onExecCommand.dispatch(p,u,r,x,m);q=1;return false}});if(q){return true}if(p.theme&&p.theme.execCommand&&p.theme.execCommand(u,r,x)){p.onExecCommand.dispatch(p,u,r,x,m);return true}if(p.editorCommands.execCommand(u,r,x)){p.onExecCommand.dispatch(p,u,r,x,m);return true}p.getDoc().execCommand(u,r,x);p.onExecCommand.dispatch(p,u,r,x,m)},queryCommandState:function(q){var n=this,r,p;if(n._isHidden()){return}if(r=n.queryStateCommands[q]){p=r.func.call(r.scope);if(p!==true){return p}}r=n.editorCommands.queryCommandState(q);if(r!==-1){return r}try{return this.getDoc().queryCommandState(q)}catch(m){}},queryCommandValue:function(r){var n=this,q,p;if(n._isHidden()){return}if(q=n.queryValueCommands[r]){p=q.func.call(q.scope);if(p!==true){return p}}q=n.editorCommands.queryCommandValue(r);if(d(q)){return q}try{return this.getDoc().queryCommandValue(r)}catch(m){}},show:function(){var m=this;l.show(m.getContainer());l.hide(m.id);m.load()},hide:function(){var m=this,n=m.getDoc();if(b&&n){n.execCommand("SelectAll")}m.save();l.hide(m.getContainer());l.setStyle(m.id,"display",m.orgDisplay)},isHidden:function(){return !l.isHidden(this.id)},setProgressState:function(m,n,p){this.onSetProgressState.dispatch(this,m,n,p);return m},load:function(q){var m=this,p=m.getElement(),n;if(p){q=q||{};q.load=true;n=m.setContent(d(p.value)?p.value:p.innerHTML,q);q.element=p;if(!q.no_events){m.onLoadContent.dispatch(m,q)}q.element=p=null;return n}},save:function(r){var m=this,q=m.getElement(),n,p;if(!q||!m.initialized){return}r=r||{};r.save=true;r.element=q;n=r.content=m.getContent(r);if(!r.no_events){m.onSaveContent.dispatch(m,r)}n=r.content;if(!/TEXTAREA|INPUT/i.test(q.nodeName)){q.innerHTML=n;if(p=l.getParent(m.id,"form")){i(p.elements,function(o){if(o.name==m.id){o.value=n;return false}})}}else{q.value=n}r.element=q=null;return n},setContent:function(r,p){var o=this,n,m=o.getBody(),q;p=p||{};p.format=p.format||"html";p.set=true;p.content=r;if(!p.no_events){o.onBeforeSetContent.dispatch(o,p)}r=p.content;if(!k.isIE&&(r.length===0||/^\s+$/.test(r))){q=o.settings.forced_root_block;if(q){r="<"+q+'><br data-mce-bogus="1"></'+q+">"}else{r='<br data-mce-bogus="1">'}m.innerHTML=r;o.selection.select(m,true);o.selection.collapse(true);return}if(p.format!=="raw"){r=new k.html.Serializer({},o.schema).serialize(o.parser.parse(r))}p.content=k.trim(r);o.dom.setHTML(m,p.content);if(!p.no_events){o.onSetContent.dispatch(o,p)}if(!o.settings.content_editable||document.activeElement===o.getBody()){o.selection.normalize()}return p.content},getContent:function(o){var n=this,p,m=n.getBody();o=o||{};o.format=o.format||"html";o.get=true;o.getInner=true;if(!o.no_events){n.onBeforeGetContent.dispatch(n,o)}if(o.format=="raw"){p=m.innerHTML}else{if(o.format=="text"){p=m.innerText||m.textContent}else{p=n.serializer.serialize(m,o)}}if(o.format!="text"){o.content=k.trim(p)}else{o.content=p}if(!o.no_events){n.onGetContent.dispatch(n,o)}return o.content},isDirty:function(){var m=this;return k.trim(m.startContent)!=k.trim(m.getContent({format:"raw",no_events:1}))&&!m.isNotDirty},getContainer:function(){var m=this;if(!m.container){m.container=l.get(m.editorContainer||m.id+"_parent")}return m.container},getContentAreaContainer:function(){return this.contentAreaContainer},getElement:function(){return l.get(this.settings.content_element||this.id)},getWin:function(){var m=this,n;if(!m.contentWindow){n=l.get(m.id+"_ifr");if(n){m.contentWindow=n.contentWindow}}return m.contentWindow},getDoc:function(){var m=this,n;if(!m.contentDocument){n=m.getWin();if(n){m.contentDocument=n.document}}return m.contentDocument},getBody:function(){return this.bodyElement||this.getDoc().body},convertURL:function(o,n,q){var m=this,p=m.settings;if(p.urlconverter_callback){return m.execCallback("urlconverter_callback",o,q,true,n)}if(!p.convert_urls||(q&&q.nodeName=="LINK")||o.indexOf("file:")===0){return o}if(p.relative_urls){return m.documentBaseURI.toRelative(o)}o=m.documentBaseURI.toAbsolute(o,p.remove_script_host);return o},addVisual:function(q){var n=this,o=n.settings,p=n.dom,m;q=q||n.getBody();if(!d(n.hasVisual)){n.hasVisual=o.visual}i(p.select("table,a",q),function(s){var r;switch(s.nodeName){case"TABLE":m=o.visual_table_class||"mceItemTable";r=p.getAttrib(s,"border");if(!r||r=="0"){if(n.hasVisual){p.addClass(s,m)}else{p.removeClass(s,m)}}return;case"A":if(!p.getAttrib(s,"href",false)){r=p.getAttrib(s,"name")||s.id;m="mceItemAnchor";if(r){if(n.hasVisual){p.addClass(s,m)}else{p.removeClass(s,m)}}}return}});n.onVisualAid.dispatch(n,q,n.hasVisual)},remove:function(){var m=this,o=m.getContainer(),n=m.getDoc();if(!m.removed){m.removed=1;if(b&&n){n.execCommand("SelectAll")}m.save();l.setStyle(m.id,"display",m.orgDisplay);if(!m.settings.content_editable){j.unbind(m.getWin());j.unbind(m.getDoc())}j.unbind(m.getBody());j.clear(o);m.execCallback("remove_instance_callback",m);m.onRemove.dispatch(m);m.onExecCommand.listeners=[];k.remove(m);l.remove(o)}},destroy:function(n){var m=this;if(m.destroyed){return}if(a){j.unbind(m.getDoc());j.unbind(m.getWin());j.unbind(m.getBody())}if(!n){k.removeUnload(m.destroy);tinyMCE.onBeforeUnload.remove(m._beforeUnload);if(m.theme&&m.theme.destroy){m.theme.destroy()}m.controlManager.destroy();m.selection.destroy();m.dom.destroy()}if(m.formElement){m.formElement.submit=m.formElement._mceOldSubmit;m.formElement._mceOldSubmit=null}m.contentAreaContainer=m.formElement=m.container=m.settings.content_element=m.bodyElement=m.contentDocument=m.contentWindow=null;if(m.selection){m.selection=m.selection.win=m.selection.dom=m.selection.dom.doc=null}m.destroyed=1},_refreshContentEditable:function(){var n=this,m,o;if(n._isHidden()){m=n.getBody();o=m.parentNode;o.removeChild(m);o.appendChild(m);m.focus()}},_isHidden:function(){var m;if(!a){return 0}m=this.selection.getSel();return(!m||!m.rangeCount||m.rangeCount===0)}})})(tinymce);(function(a){var b=a.each;a.Editor.prototype.setupEvents=function(){var c=this,d=c.settings;b(["onPreInit","onBeforeRenderUI","onPostRender","onLoad","onInit","onRemove","onActivate","onDeactivate","onClick","onEvent","onMouseUp","onMouseDown","onDblClick","onKeyDown","onKeyUp","onKeyPress","onContextMenu","onSubmit","onReset","onPaste","onPreProcess","onPostProcess","onBeforeSetContent","onBeforeGetContent","onSetContent","onGetContent","onLoadContent","onSaveContent","onNodeChange","onChange","onBeforeExecCommand","onExecCommand","onUndo","onRedo","onVisualAid","onSetProgressState","onSetAttrib"],function(e){c[e]=new a.util.Dispatcher(c)});if(d.cleanup_callback){c.onBeforeSetContent.add(function(e,f){f.content=e.execCallback("cleanup_callback","insert_to_editor",f.content,f)});c.onPreProcess.add(function(e,f){if(f.set){e.execCallback("cleanup_callback","insert_to_editor_dom",f.node,f)}if(f.get){e.execCallback("cleanup_callback","get_from_editor_dom",f.node,f)}});c.onPostProcess.add(function(e,f){if(f.set){f.content=e.execCallback("cleanup_callback","insert_to_editor",f.content,f)}if(f.get){f.content=e.execCallback("cleanup_callback","get_from_editor",f.content,f)}})}if(d.save_callback){c.onGetContent.add(function(e,f){if(f.save){f.content=e.execCallback("save_callback",e.id,f.content,e.getBody())}})}if(d.handle_event_callback){c.onEvent.add(function(f,g,h){if(c.execCallback("handle_event_callback",g,f,h)===false){g.preventDefault();g.stopPropagation()}})}if(d.handle_node_change_callback){c.onNodeChange.add(function(f,e,g){f.execCallback("handle_node_change_callback",f.id,g,-1,-1,true,f.selection.isCollapsed())})}if(d.save_callback){c.onSaveContent.add(function(e,g){var f=e.execCallback("save_callback",e.id,g.content,e.getBody());if(f){g.content=f}})}if(d.onchange_callback){c.onChange.add(function(f,e){f.execCallback("onchange_callback",f,e)})}};a.Editor.prototype.bindNativeEvents=function(){var l=this,f,d=l.settings,e=l.dom,h;h={mouseup:"onMouseUp",mousedown:"onMouseDown",click:"onClick",keyup:"onKeyUp",keydown:"onKeyDown",keypress:"onKeyPress",submit:"onSubmit",reset:"onReset",contextmenu:"onContextMenu",dblclick:"onDblClick",paste:"onPaste"};function c(i,m){var n=i.type;if(l.removed){return}if(l.onEvent.dispatch(l,i,m)!==false){l[h[i.fakeType||i.type]].dispatch(l,i,m)}}function j(i){l.focus(true)}function k(i,m){if(m.keyCode!=65||!a.VK.metaKeyPressed(m)){l.selection.normalize()}l.nodeChanged()}b(h,function(m,n){var i=d.content_editable?l.getBody():l.getDoc();switch(n){case"contextmenu":e.bind(i,n,c);break;case"paste":e.bind(l.getBody(),n,c);break;case"submit":case"reset":e.bind(l.getElement().form||a.DOM.getParent(l.id,"form"),n,c);break;default:e.bind(i,n,c)}});e.bind(d.content_editable?l.getBody():(a.isGecko?l.getDoc():l.getWin()),"focus",function(i){l.focus(true)});if(d.content_editable&&a.isOpera){e.bind(l.getBody(),"click",j);e.bind(l.getBody(),"keydown",j)}l.onMouseUp.add(k);l.onKeyUp.add(function(i,n){var m=n.keyCode;if((m>=33&&m<=36)||(m>=37&&m<=40)||m==13||m==45||m==46||m==8||(a.isMac&&(m==91||m==93))||n.ctrlKey){k(i,n)}});l.onReset.add(function(){l.setContent(l.startContent,{format:"raw"})});function g(m,i){if(m.altKey||m.ctrlKey||m.metaKey){b(l.shortcuts,function(n){var o=a.isMac?m.metaKey:m.ctrlKey;if(n.ctrl!=o||n.alt!=m.altKey||n.shift!=m.shiftKey){return}if(m.keyCode==n.keyCode||(m.charCode&&m.charCode==n.charCode)){m.preventDefault();if(i){n.func.call(n.scope)}return true}})}}l.onKeyUp.add(function(i,m){g(m)});l.onKeyPress.add(function(i,m){g(m)});l.onKeyDown.add(function(i,m){g(m,true)});if(a.isOpera){l.onClick.add(function(i,m){m.preventDefault()})}}})(tinymce);(function(d){var e=d.each,b,a=true,c=false;d.EditorCommands=function(n){var m=n.dom,p=n.selection,j={state:{},exec:{},value:{}},k=n.settings,q=n.formatter,o;function r(z,y,x){var v;z=z.toLowerCase();if(v=j.exec[z]){v(z,y,x);return a}return c}function l(x){var v;x=x.toLowerCase();if(v=j.state[x]){return v(x)}return -1}function h(x){var v;x=x.toLowerCase();if(v=j.value[x]){return v(x)}return c}function u(v,x){x=x||"exec";e(v,function(z,y){e(y.toLowerCase().split(","),function(A){j[x][A]=z})})}d.extend(this,{execCommand:r,queryCommandState:l,queryCommandValue:h,addCommands:u});function f(y,x,v){if(x===b){x=c}if(v===b){v=null}return n.getDoc().execCommand(y,x,v)}function t(v){return q.match(v)}function s(v,x){q.toggle(v,x?{value:x}:b)}function i(v){o=p.getBookmark(v)}function g(){p.moveToBookmark(o)}u({"mceResetDesignMode,mceBeginUndoLevel":function(){},"mceEndUndoLevel,mceAddUndoLevel":function(){n.undoManager.add()},"Cut,Copy,Paste":function(z){var y=n.getDoc(),v;try{f(z)}catch(x){v=a}if(v||!y.queryCommandSupported(z)){if(d.isGecko){n.windowManager.confirm(n.getLang("clipboard_msg"),function(A){if(A){open("http://www.mozilla.org/editor/midasdemo/securityprefs.html","_blank")}})}else{n.windowManager.alert(n.getLang("clipboard_no_support"))}}},unlink:function(v){if(p.isCollapsed()){p.select(p.getNode())}f(v);p.collapse(c)},"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(v){var x=v.substring(7);e("left,center,right,full".split(","),function(y){if(x!=y){q.remove("align"+y)}});s("align"+x);r("mceRepaint")},"InsertUnorderedList,InsertOrderedList":function(y){var v,x;f(y);v=m.getParent(p.getNode(),"ol,ul");if(v){x=v.parentNode;if(/^(H[1-6]|P|ADDRESS|PRE)$/.test(x.nodeName)){i();m.split(x,v);g()}}},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(v){s(v)},"ForeColor,HiliteColor,FontName":function(y,x,v){s(y,v)},FontSize:function(z,y,x){var v,A;if(x>=1&&x<=7){A=d.explode(k.font_size_style_values);v=d.explode(k.font_size_classes);if(v){x=v[x-1]||x}else{x=A[x-1]||x}}s(z,x)},RemoveFormat:function(v){q.remove(v)},mceBlockQuote:function(v){s("blockquote")},FormatBlock:function(y,x,v){return s(v||"p")},mceCleanup:function(){var v=p.getBookmark();n.setContent(n.getContent({cleanup:a}),{cleanup:a});p.moveToBookmark(v)},mceRemoveNode:function(z,y,x){var v=x||p.getNode();if(v!=n.getBody()){i();n.dom.remove(v,a);g()}},mceSelectNodeDepth:function(z,y,x){var v=0;m.getParent(p.getNode(),function(A){if(A.nodeType==1&&v++==x){p.select(A);return c}},n.getBody())},mceSelectNode:function(y,x,v){p.select(v)},mceInsertContent:function(B,I,K){var y,J,E,z,F,G,D,C,L,x,A,M,v,H;y=n.parser;J=new d.html.Serializer({},n.schema);v='<span id="mce_marker" data-mce-type="bookmark">\uFEFF</span>';G={content:K,format:"html"};p.onBeforeSetContent.dispatch(p,G);K=G.content;if(K.indexOf("{$caret}")==-1){K+="{$caret}"}K=K.replace(/\{\$caret\}/,v);if(!p.isCollapsed()){n.getDoc().execCommand("Delete",false,null)}E=p.getNode();G={context:E.nodeName.toLowerCase()};F=y.parse(K,G);A=F.lastChild;if(A.attr("id")=="mce_marker"){D=A;for(A=A.prev;A;A=A.walk(true)){if(A.type==3||!m.isBlock(A.name)){A.parent.insert(D,A,A.name==="br");break}}}if(!G.invalid){K=J.serialize(F);A=E.firstChild;M=E.lastChild;if(!A||(A===M&&A.nodeName==="BR")){m.setHTML(E,K)}else{p.setContent(K)}}else{p.setContent(v);E=p.getNode();z=n.getBody();if(E.nodeType==9){E=A=z}else{A=E}while(A!==z){E=A;A=A.parentNode}K=E==z?z.innerHTML:m.getOuterHTML(E);K=J.serialize(y.parse(K.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i,function(){return J.serialize(F)})));if(E==z){m.setHTML(z,K)}else{m.setOuterHTML(E,K)}}D=m.get("mce_marker");C=m.getRect(D);L=m.getViewPort(n.getWin());if((C.y+C.h>L.y+L.h||C.y<L.y)||(C.x>L.x+L.w||C.x<L.x)){H=d.isIE?n.getDoc().documentElement:n.getBody();H.scrollLeft=C.x;H.scrollTop=C.y-L.h+25}x=m.createRng();A=D.previousSibling;if(A&&A.nodeType==3){x.setStart(A,A.nodeValue.length)}else{x.setStartBefore(D);x.setEndBefore(D)}m.remove(D);p.setRng(x);p.onSetContent.dispatch(p,G);n.addVisual()},mceInsertRawHTML:function(y,x,v){p.setContent("tiny_mce_marker");n.setContent(n.getContent().replace(/tiny_mce_marker/g,function(){return v}))},mceToggleFormat:function(y,x,v){s(v)},mceSetContent:function(y,x,v){n.setContent(v)},"Indent,Outdent":function(z){var x,v,y;x=k.indentation;v=/[a-z%]+$/i.exec(x);x=parseInt(x);if(!l("InsertUnorderedList")&&!l("InsertOrderedList")){if(!k.forced_root_block&&!m.getParent(p.getNode(),m.isBlock)){q.apply("div")}e(p.getSelectedBlocks(),function(A){if(z=="outdent"){y=Math.max(0,parseInt(A.style.paddingLeft||0)-x);m.setStyle(A,"paddingLeft",y?y+v:"")}else{m.setStyle(A,"paddingLeft",(parseInt(A.style.paddingLeft||0)+x)+v)}})}else{f(z)}},mceRepaint:function(){var x;if(d.isGecko){try{i(a);if(p.getSel()){p.getSel().selectAllChildren(n.getBody())}p.collapse(a);g()}catch(v){}}},mceToggleFormat:function(y,x,v){q.toggle(v)},InsertHorizontalRule:function(){n.execCommand("mceInsertContent",false,"<hr />")},mceToggleVisualAid:function(){n.hasVisual=!n.hasVisual;n.addVisual()},mceReplaceContent:function(y,x,v){n.execCommand("mceInsertContent",false,v.replace(/\{\$selection\}/g,p.getContent({format:"text"})))},mceInsertLink:function(z,y,x){var v;if(typeof(x)=="string"){x={href:x}}v=m.getParent(p.getNode(),"a");x.href=x.href.replace(" ","%20");if(!v||!x.href){q.remove("link")}if(x.href){q.apply("link",x,v)}},selectAll:function(){var x=m.getRoot(),v=m.createRng();if(p.getRng().setStart){v.setStart(x,0);v.setEnd(x,x.childNodes.length);p.setRng(v)}else{f("SelectAll")}}});u({"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(z){var x="align"+z.substring(7);var v=p.isCollapsed()?[m.getParent(p.getNode(),m.isBlock)]:p.getSelectedBlocks();var y=d.map(v,function(A){return !!q.matchNode(A,x)});return d.inArray(y,a)!==-1},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(v){return t(v)},mceBlockQuote:function(){return t("blockquote")},Outdent:function(){var v;if(k.inline_styles){if((v=m.getParent(p.getStart(),m.isBlock))&&parseInt(v.style.paddingLeft)>0){return a}if((v=m.getParent(p.getEnd(),m.isBlock))&&parseInt(v.style.paddingLeft)>0){return a}}return l("InsertUnorderedList")||l("InsertOrderedList")||(!k.inline_styles&&!!m.getParent(p.getNode(),"BLOCKQUOTE"))},"InsertUnorderedList,InsertOrderedList":function(x){var v=m.getParent(p.getNode(),"ul,ol");return v&&(x==="insertunorderedlist"&&v.tagName==="UL"||x==="insertorderedlist"&&v.tagName==="OL")}},"state");u({"FontSize,FontName":function(y){var x=0,v;if(v=m.getParent(p.getNode(),"span")){if(y=="fontsize"){x=v.style.fontSize}else{x=v.style.fontFamily.replace(/, /g,",").replace(/[\'\"]/g,"").toLowerCase()}}return x}},"value");u({Undo:function(){n.undoManager.undo()},Redo:function(){n.undoManager.redo()}})}})(tinymce);(function(b){var a=b.util.Dispatcher;b.UndoManager=function(h){var l,i=0,e=[],g,k,j,f;function c(){return b.trim(h.getContent({format:"raw",no_events:1}).replace(/<span[^>]+data-mce-bogus[^>]+>[\u200B\uFEFF]+<\/span>/g,""))}function d(){l.typing=false;l.add()}onBeforeAdd=new a(l);k=new a(l);j=new a(l);f=new a(l);k.add(function(m,n){if(m.hasUndo()){return h.onChange.dispatch(h,n,m)}});j.add(function(m,n){return h.onUndo.dispatch(h,n,m)});f.add(function(m,n){return h.onRedo.dispatch(h,n,m)});h.onInit.add(function(){l.add()});h.onBeforeExecCommand.add(function(m,p,o,q,n){if(p!="Undo"&&p!="Redo"&&p!="mceRepaint"&&(!n||!n.skip_undo)){l.beforeChange()}});h.onExecCommand.add(function(m,p,o,q,n){if(p!="Undo"&&p!="Redo"&&p!="mceRepaint"&&(!n||!n.skip_undo)){l.add()}});h.onSaveContent.add(d);h.dom.bind(h.dom.getRoot(),"dragend",d);h.dom.bind(h.getBody(),"focusout",function(m){if(!h.removed&&l.typing){d()}});h.onKeyUp.add(function(m,o){var n=o.keyCode;if((n>=33&&n<=36)||(n>=37&&n<=40)||n==45||n==13||o.ctrlKey){d()}});h.onKeyDown.add(function(m,o){var n=o.keyCode;if((n>=33&&n<=36)||(n>=37&&n<=40)||n==45){if(l.typing){d()}return}if((n<16||n>20)&&n!=224&&n!=91&&!l.typing){l.beforeChange();l.typing=true;l.add()}});h.onMouseDown.add(function(m,n){if(l.typing){d()}});h.addShortcut("ctrl+z","undo_desc","Undo");h.addShortcut("ctrl+y","redo_desc","Redo");l={data:e,typing:false,onBeforeAdd:onBeforeAdd,onAdd:k,onUndo:j,onRedo:f,beforeChange:function(){g=h.selection.getBookmark(2,true)},add:function(p){var m,n=h.settings,o;p=p||{};p.content=c();l.onBeforeAdd.dispatch(l,p);o=e[i];if(o&&o.content==p.content){return null}if(e[i]){e[i].beforeBookmark=g}if(n.custom_undo_redo_levels){if(e.length>n.custom_undo_redo_levels){for(m=0;m<e.length-1;m++){e[m]=e[m+1]}e.length--;i=e.length}}p.bookmark=h.selection.getBookmark(2,true);if(i<e.length-1){e.length=i+1}e.push(p);i=e.length-1;l.onAdd.dispatch(l,p);h.isNotDirty=0;return p},undo:function(){var n,m;if(l.typing){l.add();l.typing=false}if(i>0){n=e[--i];h.setContent(n.content,{format:"raw"});h.selection.moveToBookmark(n.beforeBookmark);l.onUndo.dispatch(l,n)}return n},redo:function(){var m;if(i<e.length-1){m=e[++i];h.setContent(m.content,{format:"raw"});h.selection.moveToBookmark(m.bookmark);l.onRedo.dispatch(l,m)}return m},clear:function(){e=[];i=0;l.typing=false},hasUndo:function(){return i>0||this.typing},hasRedo:function(){return i<e.length-1&&!this.typing}};return l}})(tinymce);tinymce.ForceBlocks=function(c){var b=c.settings,e=c.dom,a=c.selection,d=c.schema.getBlockElements();function f(){var j=a.getStart(),h=c.getBody(),g,k,o,s,q,i,l,m=-16777215,p,r;if(!j||j.nodeType!==1||!b.forced_root_block){return}while(j&&j!=h){if(d[j.nodeName]){return}j=j.parentNode}g=a.getRng();if(g.setStart){k=g.startContainer;o=g.startOffset;s=g.endContainer;q=g.endOffset}else{if(g.item){j=g.item(0);g=c.getDoc().body.createTextRange();g.moveToElementText(j)}r=g.parentElement().ownerDocument===c.getDoc();tmpRng=g.duplicate();tmpRng.collapse(true);o=tmpRng.move("character",m)*-1;if(!tmpRng.collapsed){tmpRng=g.duplicate();tmpRng.collapse(false);q=(tmpRng.move("character",m)*-1)-o}}j=h.firstChild;while(j){if(j.nodeType===3||(j.nodeType==1&&!d[j.nodeName])){if(j.nodeType===3&&j.nodeValue.length==0){l=j;j=j.nextSibling;e.remove(l);continue}if(!i){i=e.create(b.forced_root_block);j.parentNode.insertBefore(i,j);p=true}l=j;j=j.nextSibling;i.appendChild(l)}else{i=null;j=j.nextSibling}}if(p){if(g.setStart){g.setStart(k,o);g.setEnd(s,q);a.setRng(g)}else{if(r){try{g=c.getDoc().body.createTextRange();g.moveToElementText(h);g.collapse(true);g.moveStart("character",o);if(q>0){g.moveEnd("character",q)}g.select()}catch(n){}}}c.nodeChanged()}}if(b.forced_root_block){c.onKeyUp.add(f);c.onNodeChange.add(f)}};(function(c){var b=c.DOM,a=c.dom.Event,d=c.each,e=c.extend;c.create("tinymce.ControlManager",{ControlManager:function(f,j){var h=this,g;j=j||{};h.editor=f;h.controls={};h.onAdd=new c.util.Dispatcher(h);h.onPostRender=new c.util.Dispatcher(h);h.prefix=j.prefix||f.id+"_";h._cls={};h.onPostRender.add(function(){d(h.controls,function(i){i.postRender()})})},get:function(f){return this.controls[this.prefix+f]||this.controls[f]},setActive:function(h,f){var g=null;if(g=this.get(h)){g.setActive(f)}return g},setDisabled:function(h,f){var g=null;if(g=this.get(h)){g.setDisabled(f)}return g},add:function(g){var f=this;if(g){f.controls[g.id]=g;f.onAdd.dispatch(g,f)}return g},createControl:function(j){var o,k,g,h=this,m=h.editor,n,f;if(!h.controlFactories){h.controlFactories=[];d(m.plugins,function(i){if(i.createControl){h.controlFactories.push(i)}})}n=h.controlFactories;for(k=0,g=n.length;k<g;k++){o=n[k].createControl(j,h);if(o){return h.add(o)}}if(j==="|"||j==="separator"){return h.createSeparator()}if(m.buttons&&(o=m.buttons[j])){return h.createButton(j,o)}return h.add(o)},createDropMenu:function(f,n,h){var m=this,i=m.editor,j,g,k,l;n=e({"class":"mceDropDown",constrain:i.settings.constrain_menus},n);n["class"]=n["class"]+" "+i.getParam("skin")+"Skin";if(k=i.getParam("skin_variant")){n["class"]+=" "+i.getParam("skin")+"Skin"+k.substring(0,1).toUpperCase()+k.substring(1)}n["class"]+=i.settings.directionality=="rtl"?" mceRtl":"";f=m.prefix+f;l=h||m._cls.dropmenu||c.ui.DropMenu;j=m.controls[f]=new l(f,n);j.onAddItem.add(function(r,q){var p=q.settings;p.title=i.getLang(p.title,p.title);if(!p.onclick){p.onclick=function(o){if(p.cmd){i.execCommand(p.cmd,p.ui||false,p.value)}}}});i.onRemove.add(function(){j.destroy()});if(c.isIE){j.onShowMenu.add(function(){i.focus();g=i.selection.getBookmark(1)});j.onHideMenu.add(function(){if(g){i.selection.moveToBookmark(g);g=0}})}return m.add(j)},createListBox:function(f,n,h){var l=this,j=l.editor,i,k,m;if(l.get(f)){return null}n.title=j.translate(n.title);n.scope=n.scope||j;if(!n.onselect){n.onselect=function(o){j.execCommand(n.cmd,n.ui||false,o||n.value)}}n=e({title:n.title,"class":"mce_"+f,scope:n.scope,control_manager:l},n);f=l.prefix+f;function g(o){return o.settings.use_accessible_selects&&!c.isGecko}if(j.settings.use_native_selects||g(j)){k=new c.ui.NativeListBox(f,n)}else{m=h||l._cls.listbox||c.ui.ListBox;k=new m(f,n,j)}l.controls[f]=k;if(c.isWebKit){k.onPostRender.add(function(p,o){a.add(o,"mousedown",function(){j.bookmark=j.selection.getBookmark(1)});a.add(o,"focus",function(){j.selection.moveToBookmark(j.bookmark);j.bookmark=null})})}if(k.hideMenu){j.onMouseDown.add(k.hideMenu,k)}return l.add(k)},createButton:function(m,i,l){var h=this,g=h.editor,j,k,f;if(h.get(m)){return null}i.title=g.translate(i.title);i.label=g.translate(i.label);i.scope=i.scope||g;if(!i.onclick&&!i.menu_button){i.onclick=function(){g.execCommand(i.cmd,i.ui||false,i.value)}}i=e({title:i.title,"class":"mce_"+m,unavailable_prefix:g.getLang("unavailable",""),scope:i.scope,control_manager:h},i);m=h.prefix+m;if(i.menu_button){f=l||h._cls.menubutton||c.ui.MenuButton;k=new f(m,i,g);g.onMouseDown.add(k.hideMenu,k)}else{f=h._cls.button||c.ui.Button;k=new f(m,i,g)}return h.add(k)},createMenuButton:function(h,f,g){f=f||{};f.menu_button=1;return this.createButton(h,f,g)},createSplitButton:function(m,i,l){var h=this,g=h.editor,j,k,f;if(h.get(m)){return null}i.title=g.translate(i.title);i.scope=i.scope||g;if(!i.onclick){i.onclick=function(n){g.execCommand(i.cmd,i.ui||false,n||i.value)}}if(!i.onselect){i.onselect=function(n){g.execCommand(i.cmd,i.ui||false,n||i.value)}}i=e({title:i.title,"class":"mce_"+m,scope:i.scope,control_manager:h},i);m=h.prefix+m;f=l||h._cls.splitbutton||c.ui.SplitButton;k=h.add(new f(m,i,g));g.onMouseDown.add(k.hideMenu,k);return k},createColorSplitButton:function(f,n,h){var l=this,j=l.editor,i,k,m,g;if(l.get(f)){return null}n.title=j.translate(n.title);n.scope=n.scope||j;if(!n.onclick){n.onclick=function(o){if(c.isIE){g=j.selection.getBookmark(1)}j.execCommand(n.cmd,n.ui||false,o||n.value)}}if(!n.onselect){n.onselect=function(o){j.execCommand(n.cmd,n.ui||false,o||n.value)}}n=e({title:n.title,"class":"mce_"+f,menu_class:j.getParam("skin")+"Skin",scope:n.scope,more_colors_title:j.getLang("more_colors")},n);f=l.prefix+f;m=h||l._cls.colorsplitbutton||c.ui.ColorSplitButton;k=new m(f,n,j);j.onMouseDown.add(k.hideMenu,k);j.onRemove.add(function(){k.destroy()});if(c.isIE){k.onShowMenu.add(function(){j.focus();g=j.selection.getBookmark(1)});k.onHideMenu.add(function(){if(g){j.selection.moveToBookmark(g);g=0}})}return l.add(k)},createToolbar:function(k,h,j){var i,g=this,f;k=g.prefix+k;f=j||g._cls.toolbar||c.ui.Toolbar;i=new f(k,h,g.editor);if(g.get(k)){return null}return g.add(i)},createToolbarGroup:function(k,h,j){var i,g=this,f;k=g.prefix+k;f=j||this._cls.toolbarGroup||c.ui.ToolbarGroup;i=new f(k,h,g.editor);if(g.get(k)){return null}return g.add(i)},createSeparator:function(g){var f=g||this._cls.separator||c.ui.Separator;return new f()},setControlType:function(g,f){return this._cls[g.toLowerCase()]=f},destroy:function(){d(this.controls,function(f){f.destroy()});this.controls=null}})})(tinymce);(function(d){var a=d.util.Dispatcher,e=d.each,c=d.isIE,b=d.isOpera;d.create("tinymce.WindowManager",{WindowManager:function(f){var g=this;g.editor=f;g.onOpen=new a(g);g.onClose=new a(g);g.params={};g.features={}},open:function(z,h){var v=this,k="",n,m,i=v.editor.settings.dialog_type=="modal",q,o,j,g=d.DOM.getViewPort(),r;z=z||{};h=h||{};o=b?g.w:screen.width;j=b?g.h:screen.height;z.name=z.name||"mc_"+new Date().getTime();z.width=parseInt(z.width||320);z.height=parseInt(z.height||240);z.resizable=true;z.left=z.left||parseInt(o/2)-(z.width/2);z.top=z.top||parseInt(j/2)-(z.height/2);h.inline=false;h.mce_width=z.width;h.mce_height=z.height;h.mce_auto_focus=z.auto_focus;if(i){if(c){z.center=true;z.help=false;z.dialogWidth=z.width+"px";z.dialogHeight=z.height+"px";z.scroll=z.scrollbars||false}}e(z,function(p,f){if(d.is(p,"boolean")){p=p?"yes":"no"}if(!/^(name|url)$/.test(f)){if(c&&i){k+=(k?";":"")+f+":"+p}else{k+=(k?",":"")+f+"="+p}}});v.features=z;v.params=h;v.onOpen.dispatch(v,z,h);r=z.url||z.file;r=d._addVer(r);try{if(c&&i){q=1;window.showModalDialog(r,window,k)}else{q=window.open(r,z.name,k)}}catch(l){}if(!q){alert(v.editor.getLang("popup_blocked"))}},close:function(f){f.close();this.onClose.dispatch(this)},createInstance:function(i,h,g,m,l,k){var j=d.resolve(i);return new j(h,g,m,l,k)},confirm:function(h,f,i,g){g=g||window;f.call(i||this,g.confirm(this._decode(this.editor.getLang(h,h))))},alert:function(h,f,j,g){var i=this;g=g||window;g.alert(i._decode(i.editor.getLang(h,h)));if(f){f.call(j||i)}},resizeBy:function(f,g,h){h.resizeBy(f,g)},_decode:function(f){return d.DOM.decode(f).replace(/\\n/g,"\n")}})}(tinymce));(function(a){a.Formatter=function(aa){var Q={},T=a.each,c=aa.dom,r=aa.selection,t=a.dom.TreeWalker,N=new a.dom.RangeUtils(c),d=aa.schema.isValidChild,A=a.isArray,H=c.isBlock,m=aa.settings.forced_root_block,s=c.nodeIndex,G="\uFEFF",e=/^(src|href|style)$/,X=false,C=true,P,D,x=c.getContentEditable;function I(ab){if(ab.nodeType){ab=ab.nodeName}return !!aa.schema.getTextBlockElements()[ab.toLowerCase()]}function n(ac,ab){return c.getParents(ac,ab,c.getRoot())}function b(ab){return ab.nodeType===1&&ab.id==="_mce_caret"}function j(){l({alignleft:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"left"},defaultBlock:"div"},{selector:"img,table",collapsed:false,styles:{"float":"left"}}],aligncenter:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"center"},defaultBlock:"div"},{selector:"img",collapsed:false,styles:{display:"block",marginLeft:"auto",marginRight:"auto"}},{selector:"table",collapsed:false,styles:{marginLeft:"auto",marginRight:"auto"}}],alignright:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"right"},defaultBlock:"div"},{selector:"img,table",collapsed:false,styles:{"float":"right"}}],alignfull:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"justify"},defaultBlock:"div"}],bold:[{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}},{inline:"b",remove:"all"}],italic:[{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}},{inline:"i",remove:"all"}],underline:[{inline:"span",styles:{textDecoration:"underline"},exact:true},{inline:"u",remove:"all"}],strikethrough:[{inline:"span",styles:{textDecoration:"line-through"},exact:true},{inline:"strike",remove:"all"}],forecolor:{inline:"span",styles:{color:"%value"},wrap_links:false},hilitecolor:{inline:"span",styles:{backgroundColor:"%value"},wrap_links:false},fontname:{inline:"span",styles:{fontFamily:"%value"}},fontsize:{inline:"span",styles:{fontSize:"%value"}},fontsize_class:{inline:"span",attributes:{"class":"%value"}},blockquote:{block:"blockquote",wrapper:1,remove:"all"},subscript:{inline:"sub"},superscript:{inline:"sup"},link:{inline:"a",selector:"a",remove:"all",split:true,deep:true,onmatch:function(ab){return true},onformat:function(ad,ab,ac){T(ac,function(af,ae){c.setAttrib(ad,ae,af)})}},removeformat:[{selector:"b,strong,em,i,font,u,strike",remove:"all",split:true,expand:false,block_expand:true,deep:true},{selector:"span",attributes:["style","class"],remove:"empty",split:true,expand:false,deep:true},{selector:"*",attributes:["style","class"],split:false,expand:false,deep:true}]});T("p h1 h2 h3 h4 h5 h6 div address pre div code dt dd samp".split(/\s/),function(ab){l(ab,{block:ab,remove:"all"})});l(aa.settings.formats)}function W(){aa.addShortcut("ctrl+b","bold_desc","Bold");aa.addShortcut("ctrl+i","italic_desc","Italic");aa.addShortcut("ctrl+u","underline_desc","Underline");for(var ab=1;ab<=6;ab++){aa.addShortcut("ctrl+"+ab,"",["FormatBlock",false,"h"+ab])}aa.addShortcut("ctrl+7","",["FormatBlock",false,"p"]);aa.addShortcut("ctrl+8","",["FormatBlock",false,"div"]);aa.addShortcut("ctrl+9","",["FormatBlock",false,"address"])}function V(ab){return ab?Q[ab]:Q}function l(ab,ac){if(ab){if(typeof(ab)!=="string"){T(ab,function(ae,ad){l(ad,ae)})}else{ac=ac.length?ac:[ac];T(ac,function(ad){if(ad.deep===D){ad.deep=!ad.selector}if(ad.split===D){ad.split=!ad.selector||ad.inline}if(ad.remove===D&&ad.selector&&!ad.inline){ad.remove="none"}if(ad.selector&&ad.inline){ad.mixed=true;ad.block_expand=true}if(typeof(ad.classes)==="string"){ad.classes=ad.classes.split(/\s+/)}});Q[ab]=ac}}}var i=function(ac){var ab;aa.dom.getParent(ac,function(ad){ab=aa.dom.getStyle(ad,"text-decoration");return ab&&ab!=="none"});return ab};var L=function(ab){var ac;if(ab.nodeType===1&&ab.parentNode&&ab.parentNode.nodeType===1){ac=i(ab.parentNode);if(aa.dom.getStyle(ab,"color")&&ac){aa.dom.setStyle(ab,"text-decoration",ac)}else{if(aa.dom.getStyle(ab,"textdecoration")===ac){aa.dom.setStyle(ab,"text-decoration",null)}}}};function Y(ae,al,ag){var ah=V(ae),am=ah[0],ak,ac,aj,ai=r.isCollapsed();function ab(aq,ap){ap=ap||am;if(aq){if(ap.onformat){ap.onformat(aq,ap,al,ag)}T(ap.styles,function(at,ar){c.setStyle(aq,ar,q(at,al))});T(ap.attributes,function(at,ar){c.setAttrib(aq,ar,q(at,al))});T(ap.classes,function(ar){ar=q(ar,al);if(!c.hasClass(aq,ar)){c.addClass(aq,ar)}})}}function af(){function ar(ay,aw){var ax=new t(aw);for(ag=ax.current();ag;ag=ax.prev()){if(ag.childNodes.length>1||ag==ay||ag.tagName=="BR"){return ag}}}var aq=aa.selection.getRng();var av=aq.startContainer;var ap=aq.endContainer;if(av!=ap&&aq.endOffset===0){var au=ar(av,ap);var at=au.nodeType==3?au.length:au.childNodes.length;aq.setEnd(au,at)}return aq}function ad(at,ay,aw,av,aq){var ap=[],ar=-1,ax,aA=-1,au=-1,az;T(at.childNodes,function(aC,aB){if(aC.nodeName==="UL"||aC.nodeName==="OL"){ar=aB;ax=aC;return false}});T(at.childNodes,function(aC,aB){if(aC.nodeName==="SPAN"&&c.getAttrib(aC,"data-mce-type")=="bookmark"){if(aC.id==ay.id+"_start"){aA=aB}else{if(aC.id==ay.id+"_end"){au=aB}}}});if(ar<=0||(aA<ar&&au>ar)){T(a.grep(at.childNodes),aq);return 0}else{az=c.clone(aw,X);T(a.grep(at.childNodes),function(aC,aB){if((aA<ar&&aB<ar)||(aA>ar&&aB>ar)){ap.push(aC);aC.parentNode.removeChild(aC)}});if(aA<ar){at.insertBefore(az,ax)}else{if(aA>ar){at.insertBefore(az,ax.nextSibling)}}av.push(az);T(ap,function(aB){az.appendChild(aB)});return az}}function an(aq,at,aw){var ap=[],av,ar,au=true;av=am.inline||am.block;ar=c.create(av);ab(ar);N.walk(aq,function(ax){var ay;function az(aA){var aF,aD,aB,aC,aE;aE=au;aF=aA.nodeName.toLowerCase();aD=aA.parentNode.nodeName.toLowerCase();if(aA.nodeType===1&&x(aA)){aE=au;au=x(aA)==="true";aC=true}if(g(aF,"br")){ay=0;if(am.block){c.remove(aA)}return}if(am.wrapper&&y(aA,ae,al)){ay=0;return}if(au&&!aC&&am.block&&!am.wrapper&&I(aF)){aA=c.rename(aA,av);ab(aA);ap.push(aA);ay=0;return}if(am.selector){T(ah,function(aG){if("collapsed" in aG&&aG.collapsed!==ai){return}if(c.is(aA,aG.selector)&&!b(aA)){ab(aA,aG);aB=true}});if(!am.inline||aB){ay=0;return}}if(au&&!aC&&d(av,aF)&&d(aD,av)&&!(!aw&&aA.nodeType===3&&aA.nodeValue.length===1&&aA.nodeValue.charCodeAt(0)===65279)&&!b(aA)&&(!am.inline||!H(aA))){if(!ay){ay=c.clone(ar,X);aA.parentNode.insertBefore(ay,aA);ap.push(ay)}ay.appendChild(aA)}else{if(aF=="li"&&at){ay=ad(aA,at,ar,ap,az)}else{ay=0;T(a.grep(aA.childNodes),az);if(aC){au=aE}ay=0}}}T(ax,az)});if(am.wrap_links===false){T(ap,function(ax){function ay(aC){var aB,aA,az;if(aC.nodeName==="A"){aA=c.clone(ar,X);ap.push(aA);az=a.grep(aC.childNodes);for(aB=0;aB<az.length;aB++){aA.appendChild(az[aB])}aC.appendChild(aA)}T(a.grep(aC.childNodes),ay)}ay(ax)})}T(ap,function(az){var ax;function aA(aC){var aB=0;T(aC.childNodes,function(aD){if(!f(aD)&&!K(aD)){aB++}});return aB}function ay(aB){var aD,aC;T(aB.childNodes,function(aE){if(aE.nodeType==1&&!K(aE)&&!b(aE)){aD=aE;return X}});if(aD&&h(aD,am)){aC=c.clone(aD,X);ab(aC);c.replace(aC,aB,C);c.remove(aD,1)}return aC||aB}ax=aA(az);if((ap.length>1||!H(az))&&ax===0){c.remove(az,1);return}if(am.inline||am.wrapper){if(!am.exact&&ax===1){az=ay(az)}T(ah,function(aB){T(c.select(aB.inline,az),function(aD){var aC;if(aB.wrap_links===false){aC=aD.parentNode;do{if(aC.nodeName==="A"){return}}while(aC=aC.parentNode)}Z(aB,al,aD,aB.exact?aD:null)})});if(y(az.parentNode,ae,al)){c.remove(az,1);az=0;return C}if(am.merge_with_parents){c.getParent(az.parentNode,function(aB){if(y(aB,ae,al)){c.remove(az,1);az=0;return C}})}if(az&&am.merge_siblings!==false){az=u(E(az),az);az=u(az,E(az,C))}}})}if(am){if(ag){if(ag.nodeType){ac=c.createRng();ac.setStartBefore(ag);ac.setEndAfter(ag);an(p(ac,ah),null,true)}else{an(ag,null,true)}}else{if(!ai||!am.inline||c.select("td.mceSelected,th.mceSelected").length){var ao=aa.selection.getNode();if(!m&&ah[0].defaultBlock&&!c.getParent(ao,c.isBlock)){Y(ah[0].defaultBlock)}aa.selection.setRng(af());ak=r.getBookmark();an(p(r.getRng(C),ah),ak);if(am.styles&&(am.styles.color||am.styles.textDecoration)){a.walk(ao,L,"childNodes");L(ao)}r.moveToBookmark(ak);R(r.getRng(C));aa.nodeChanged()}else{U("apply",ae,al)}}}}function B(ad,am,af){var ag=V(ad),ao=ag[0],ak,aj,ac,al=true;function ae(av){var au,at,ar,aq,ax,aw;if(av.nodeType===3){return}if(av.nodeType===1&&x(av)){ax=al;al=x(av)==="true";aw=true}au=a.grep(av.childNodes);if(al&&!aw){for(at=0,ar=ag.length;at<ar;at++){if(Z(ag[at],am,av,av)){break}}}if(ao.deep){if(au.length){for(at=0,ar=au.length;at<ar;at++){ae(au[at])}if(aw){al=ax}}}}function ah(aq){var ar;T(n(aq.parentNode).reverse(),function(at){var au;if(!ar&&at.id!="_start"&&at.id!="_end"){au=y(at,ad,am);if(au&&au.split!==false){ar=at}}});return ar}function ab(au,aq,aw,az){var aA,ay,ax,at,av,ar;if(au){ar=au.parentNode;for(aA=aq.parentNode;aA&&aA!=ar;aA=aA.parentNode){ay=c.clone(aA,X);for(av=0;av<ag.length;av++){if(Z(ag[av],am,ay,ay)){ay=0;break}}if(ay){if(ax){ay.appendChild(ax)}if(!at){at=ay}ax=ay}}if(az&&(!ao.mixed||!H(au))){aq=c.split(au,aq)}if(ax){aw.parentNode.insertBefore(ax,aw);at.appendChild(aw)}}return aq}function an(aq){return ab(ah(aq),aq,aq,true)}function ai(at){var ar=c.get(at?"_start":"_end"),aq=ar[at?"firstChild":"lastChild"];if(K(aq)){aq=aq[at?"firstChild":"lastChild"]}c.remove(ar,true);return aq}function ap(aq){var at,au,ar;aq=p(aq,ag,C);if(ao.split){at=M(aq,C);au=M(aq);if(at!=au){if(/^(TR|TD)$/.test(at.nodeName)&&at.firstChild){at=(at.nodeName=="TD"?at.firstChild:at.firstChild.firstChild)||at}at=S(at,"span",{id:"_start","data-mce-type":"bookmark"});au=S(au,"span",{id:"_end","data-mce-type":"bookmark"});an(at);an(au);at=ai(C);au=ai()}else{at=au=an(at)}aq.startContainer=at.parentNode;aq.startOffset=s(at);aq.endContainer=au.parentNode;aq.endOffset=s(au)+1}N.walk(aq,function(av){T(av,function(aw){ae(aw);if(aw.nodeType===1&&aa.dom.getStyle(aw,"text-decoration")==="underline"&&aw.parentNode&&i(aw.parentNode)==="underline"){Z({deep:false,exact:true,inline:"span",styles:{textDecoration:"underline"}},null,aw)}})})}if(af){if(af.nodeType){ac=c.createRng();ac.setStartBefore(af);ac.setEndAfter(af);ap(ac)}else{ap(af)}return}if(!r.isCollapsed()||!ao.inline||c.select("td.mceSelected,th.mceSelected").length){ak=r.getBookmark();ap(r.getRng(C));r.moveToBookmark(ak);if(ao.inline&&k(ad,am,r.getStart())){R(r.getRng(true))}aa.nodeChanged()}else{U("remove",ad,am)}}function F(ac,ae,ad){var ab=V(ac);if(k(ac,ae,ad)&&(!("toggle" in ab[0])||ab[0].toggle)){B(ac,ae,ad)}else{Y(ac,ae,ad)}}function y(ac,ab,ah,af){var ad=V(ab),ai,ag,ae;function aj(an,ap,aq){var am,ao,ak=ap[aq],al;if(ap.onmatch){return ap.onmatch(an,ap,aq)}if(ak){if(ak.length===D){for(am in ak){if(ak.hasOwnProperty(am)){if(aq==="attributes"){ao=c.getAttrib(an,am)}else{ao=O(an,am)}if(af&&!ao&&!ap.exact){return}if((!af||ap.exact)&&!g(ao,q(ak[am],ah))){return}}}}else{for(al=0;al<ak.length;al++){if(aq==="attributes"?c.getAttrib(an,ak[al]):O(an,ak[al])){return ap}}}}return ap}if(ad&&ac){for(ag=0;ag<ad.length;ag++){ai=ad[ag];if(h(ac,ai)&&aj(ac,ai,"attributes")&&aj(ac,ai,"styles")){if(ae=ai.classes){for(ag=0;ag<ae.length;ag++){if(!c.hasClass(ac,ae[ag])){return}}}return ai}}}}function k(ad,af,ae){var ac;function ab(ag){ag=c.getParent(ag,function(ah){return !!y(ah,ad,af,true)});return y(ag,ad,af)}if(ae){return ab(ae)}ae=r.getNode();if(ab(ae)){return C}ac=r.getStart();if(ac!=ae){if(ab(ac)){return C}}return X}function v(ai,ah){var af,ag=[],ae={},ad,ac,ab;af=r.getStart();c.getParent(af,function(al){var ak,aj;for(ak=0;ak<ai.length;ak++){aj=ai[ak];if(!ae[aj]&&y(al,aj,ah)){ae[aj]=true;ag.push(aj)}}},c.getRoot());return ag}function z(af){var ah=V(af),ae,ad,ag,ac,ab;if(ah){ae=r.getStart();ad=n(ae);for(ac=ah.length-1;ac>=0;ac--){ab=ah[ac].selector;if(!ab){return C}for(ag=ad.length-1;ag>=0;ag--){if(c.is(ad[ag],ab)){return C}}}}return X}function J(ab,ae,ac){var ad;if(!P){P={};ad={};aa.onNodeChange.addToTop(function(ag,af,ai){var ah=n(ai),aj={};T(P,function(ak,al){T(ah,function(am){if(y(am,al,{},ak.similar)){if(!ad[al]){T(ak,function(an){an(true,{node:am,format:al,parents:ah})});ad[al]=ak}aj[al]=ak;return false}})});T(ad,function(ak,al){if(!aj[al]){delete ad[al];T(ak,function(am){am(false,{node:ai,format:al,parents:ah})})}})})}T(ab.split(","),function(af){if(!P[af]){P[af]=[];P[af].similar=ac}P[af].push(ae)});return this}a.extend(this,{get:V,register:l,apply:Y,remove:B,toggle:F,match:k,matchAll:v,matchNode:y,canApply:z,formatChanged:J});j();W();function h(ab,ac){if(g(ab,ac.inline)){return C}if(g(ab,ac.block)){return C}if(ac.selector){return c.is(ab,ac.selector)}}function g(ac,ab){ac=ac||"";ab=ab||"";ac=""+(ac.nodeName||ac);ab=""+(ab.nodeName||ab);return ac.toLowerCase()==ab.toLowerCase()}function O(ac,ab){var ad=c.getStyle(ac,ab);if(ab=="color"||ab=="backgroundColor"){ad=c.toHex(ad)}if(ab=="fontWeight"&&ad==700){ad="bold"}return""+ad}function q(ab,ac){if(typeof(ab)!="string"){ab=ab(ac)}else{if(ac){ab=ab.replace(/%(\w+)/g,function(ae,ad){return ac[ad]||ae})}}return ab}function f(ab){return ab&&ab.nodeType===3&&/^([\t \r\n]+|)$/.test(ab.nodeValue)}function S(ad,ac,ab){var ae=c.create(ac,ab);ad.parentNode.insertBefore(ae,ad);ae.appendChild(ad);return ae}function p(ab,am,ae){var ap,an,ah,al,ad=ab.startContainer,ai=ab.startOffset,ar=ab.endContainer,ak=ab.endOffset;function ao(aA){var au,ax,az,aw,av,at;au=ax=aA?ad:ar;av=aA?"previousSibling":"nextSibling";at=c.getRoot();function ay(aB){return aB.nodeName=="BR"&&aB.getAttribute("data-mce-bogus")&&!aB.nextSibling}if(au.nodeType==3&&!f(au)){if(aA?ai>0:ak<au.nodeValue.length){return au}}for(;;){if(!am[0].block_expand&&H(ax)){return ax}for(aw=ax[av];aw;aw=aw[av]){if(!K(aw)&&!f(aw)&&!ay(aw)){return ax}}if(ax.parentNode==at){au=ax;break}ax=ax.parentNode}return au}function ag(at,au){if(au===D){au=at.nodeType===3?at.length:at.childNodes.length}while(at&&at.hasChildNodes()){at=at.childNodes[au];if(at){au=at.nodeType===3?at.length:at.childNodes.length}}return{node:at,offset:au}}if(ad.nodeType==1&&ad.hasChildNodes()){an=ad.childNodes.length-1;ad=ad.childNodes[ai>an?an:ai];if(ad.nodeType==3){ai=0}}if(ar.nodeType==1&&ar.hasChildNodes()){an=ar.childNodes.length-1;ar=ar.childNodes[ak>an?an:ak-1];if(ar.nodeType==3){ak=ar.nodeValue.length}}function aq(au){var at=au;while(at){if(at.nodeType===1&&x(at)){return x(at)==="false"?at:au}at=at.parentNode}return au}function aj(au,ay,aA){var ax,av,az,at;function aw(aC,aE){var aF,aB,aD=aC.nodeValue;if(typeof(aE)=="undefined"){aE=aA?aD.length:0}if(aA){aF=aD.lastIndexOf(" ",aE);aB=aD.lastIndexOf("\u00a0",aE);aF=aF>aB?aF:aB;if(aF!==-1&&!ae){aF++}}else{aF=aD.indexOf(" ",aE);aB=aD.indexOf("\u00a0",aE);aF=aF!==-1&&(aB===-1||aF<aB)?aF:aB}return aF}if(au.nodeType===3){az=aw(au,ay);if(az!==-1){return{container:au,offset:az}}at=au}ax=new t(au,c.getParent(au,H)||aa.getBody());while(av=ax[aA?"prev":"next"]()){if(av.nodeType===3){at=av;az=aw(av);if(az!==-1){return{container:av,offset:az}}}else{if(H(av)){break}}}if(at){if(aA){ay=0}else{ay=at.length}return{container:at,offset:ay}}}function af(au,at){var av,aw,ay,ax;if(au.nodeType==3&&au.nodeValue.length===0&&au[at]){au=au[at]}av=n(au);for(aw=0;aw<av.length;aw++){for(ay=0;ay<am.length;ay++){ax=am[ay];if("collapsed" in ax&&ax.collapsed!==ab.collapsed){continue}if(c.is(av[aw],ax.selector)){return av[aw]}}}return au}function ac(au,at,aw){var av;if(!am[0].wrapper){av=c.getParent(au,am[0].block)}if(!av){av=c.getParent(au.nodeType==3?au.parentNode:au,I)}if(av&&am[0].wrapper){av=n(av,"ul,ol").reverse()[0]||av}if(!av){av=au;while(av[at]&&!H(av[at])){av=av[at];if(g(av,"br")){break}}}return av||au}ad=aq(ad);ar=aq(ar);if(K(ad.parentNode)||K(ad)){ad=K(ad)?ad:ad.parentNode;ad=ad.nextSibling||ad;if(ad.nodeType==3){ai=0}}if(K(ar.parentNode)||K(ar)){ar=K(ar)?ar:ar.parentNode;ar=ar.previousSibling||ar;if(ar.nodeType==3){ak=ar.length}}if(am[0].inline){if(ab.collapsed){al=aj(ad,ai,true);if(al){ad=al.container;ai=al.offset}al=aj(ar,ak);if(al){ar=al.container;ak=al.offset}}ah=ag(ar,ak);if(ah.node){while(ah.node&&ah.offset===0&&ah.node.previousSibling){ah=ag(ah.node.previousSibling)}if(ah.node&&ah.offset>0&&ah.node.nodeType===3&&ah.node.nodeValue.charAt(ah.offset-1)===" "){if(ah.offset>1){ar=ah.node;ar.splitText(ah.offset-1)}}}}if(am[0].inline||am[0].block_expand){if(!am[0].inline||(ad.nodeType!=3||ai===0)){ad=ao(true)}if(!am[0].inline||(ar.nodeType!=3||ak===ar.nodeValue.length)){ar=ao()}}if(am[0].selector&&am[0].expand!==X&&!am[0].inline){ad=af(ad,"previousSibling");ar=af(ar,"nextSibling")}if(am[0].block||am[0].selector){ad=ac(ad,"previousSibling");ar=ac(ar,"nextSibling");if(am[0].block){if(!H(ad)){ad=ao(true)}if(!H(ar)){ar=ao()}}}if(ad.nodeType==1){ai=s(ad);ad=ad.parentNode}if(ar.nodeType==1){ak=s(ar)+1;ar=ar.parentNode}return{startContainer:ad,startOffset:ai,endContainer:ar,endOffset:ak}}function Z(ah,ag,ae,ab){var ad,ac,af;if(!h(ae,ah)){return X}if(ah.remove!="all"){T(ah.styles,function(aj,ai){aj=q(aj,ag);if(typeof(ai)==="number"){ai=aj;ab=0}if(!ab||g(O(ab,ai),aj)){c.setStyle(ae,ai,"")}af=1});if(af&&c.getAttrib(ae,"style")==""){ae.removeAttribute("style");ae.removeAttribute("data-mce-style")}T(ah.attributes,function(ak,ai){var aj;ak=q(ak,ag);if(typeof(ai)==="number"){ai=ak;ab=0}if(!ab||g(c.getAttrib(ab,ai),ak)){if(ai=="class"){ak=c.getAttrib(ae,ai);if(ak){aj="";T(ak.split(/\s+/),function(al){if(/mce\w+/.test(al)){aj+=(aj?" ":"")+al}});if(aj){c.setAttrib(ae,ai,aj);return}}}if(ai=="class"){ae.removeAttribute("className")}if(e.test(ai)){ae.removeAttribute("data-mce-"+ai)}ae.removeAttribute(ai)}});T(ah.classes,function(ai){ai=q(ai,ag);if(!ab||c.hasClass(ab,ai)){c.removeClass(ae,ai)}});ac=c.getAttribs(ae);for(ad=0;ad<ac.length;ad++){if(ac[ad].nodeName.indexOf("_")!==0){return X}}}if(ah.remove!="none"){o(ae,ah);return C}}function o(ad,ae){var ab=ad.parentNode,ac;function af(ah,ag,ai){ah=E(ah,ag,ai);return !ah||(ah.nodeName=="BR"||H(ah))}if(ae.block){if(!m){if(H(ad)&&!H(ab)){if(!af(ad,X)&&!af(ad.firstChild,C,1)){ad.insertBefore(c.create("br"),ad.firstChild)}if(!af(ad,C)&&!af(ad.lastChild,X,1)){ad.appendChild(c.create("br"))}}}else{if(ab==c.getRoot()){if(!ae.list_block||!g(ad,ae.list_block)){T(a.grep(ad.childNodes),function(ag){if(d(m,ag.nodeName.toLowerCase())){if(!ac){ac=S(ag,m)}else{ac.appendChild(ag)}}else{ac=0}})}}}}if(ae.selector&&ae.inline&&!g(ae.inline,ad)){return}c.remove(ad,1)}function E(ac,ab,ad){if(ac){ab=ab?"nextSibling":"previousSibling";for(ac=ad?ac:ac[ab];ac;ac=ac[ab]){if(ac.nodeType==1||!f(ac)){return ac}}}}function K(ab){return ab&&ab.nodeType==1&&ab.getAttribute("data-mce-type")=="bookmark"}function u(af,ae){var ab,ad,ac;function ah(ak,aj){if(ak.nodeName!=aj.nodeName){return X}function ai(am){var an={};T(c.getAttribs(am),function(ao){var ap=ao.nodeName.toLowerCase();if(ap.indexOf("_")!==0&&ap!=="style"){an[ap]=c.getAttrib(am,ap)}});return an}function al(ap,ao){var an,am;for(am in ap){if(ap.hasOwnProperty(am)){an=ao[am];if(an===D){return X}if(ap[am]!=an){return X}delete ao[am]}}for(am in ao){if(ao.hasOwnProperty(am)){return X}}return C}if(!al(ai(ak),ai(aj))){return X}if(!al(c.parseStyle(c.getAttrib(ak,"style")),c.parseStyle(c.getAttrib(aj,"style")))){return X}return C}function ag(aj,ai){for(ad=aj;ad;ad=ad[ai]){if(ad.nodeType==3&&ad.nodeValue.length!==0){return aj}if(ad.nodeType==1&&!K(ad)){return ad}}return aj}if(af&&ae){af=ag(af,"previousSibling");ae=ag(ae,"nextSibling");if(ah(af,ae)){for(ad=af.nextSibling;ad&&ad!=ae;){ac=ad;ad=ad.nextSibling;af.appendChild(ac)}c.remove(ae);T(a.grep(ae.childNodes),function(ai){af.appendChild(ai)});return af}}return ae}function M(ac,ag){var ab,af,ad,ae;ab=ac[ag?"startContainer":"endContainer"];af=ac[ag?"startOffset":"endOffset"];if(ab.nodeType==1){ad=ab.childNodes.length-1;if(!ag&&af){af--}ab=ab.childNodes[af>ad?ad:af]}if(ab.nodeType===3&&ag&&af>=ab.nodeValue.length){ab=new t(ab,aa.getBody()).next()||ab}if(ab.nodeType===3&&!ag&&af===0){ab=new t(ab,aa.getBody()).prev()||ab}return ab}function U(ak,ab,ai){var al="_mce_caret",ac=aa.settings.caret_debug;function ad(ap){var ao=c.create("span",{id:al,"data-mce-bogus":true,style:ac?"color:red":""});if(ap){ao.appendChild(aa.getDoc().createTextNode(G))}return ao}function aj(ap,ao){while(ap){if((ap.nodeType===3&&ap.nodeValue!==G)||ap.childNodes.length>1){return false}if(ao&&ap.nodeType===1){ao.push(ap)}ap=ap.firstChild}return true}function ag(ao){while(ao){if(ao.id===al){return ao}ao=ao.parentNode}}function af(ao){var ap;if(ao){ap=new t(ao,ao);for(ao=ap.current();ao;ao=ap.next()){if(ao.nodeType===3){return ao}}}}function ae(aq,ap){var ar,ao;if(!aq){aq=ag(r.getStart());if(!aq){while(aq=c.get(al)){ae(aq,false)}}}else{ao=r.getRng(true);if(aj(aq)){if(ap!==false){ao.setStartBefore(aq);ao.setEndBefore(aq)}c.remove(aq)}else{ar=af(aq);if(ar.nodeValue.charAt(0)===G){ar=ar.deleteData(0,1)}c.remove(aq,1)}r.setRng(ao)}}function ah(){var aq,ao,av,au,ar,ap,at;aq=r.getRng(true);au=aq.startOffset;ap=aq.startContainer;at=ap.nodeValue;ao=ag(r.getStart());if(ao){av=af(ao)}if(at&&au>0&&au<at.length&&/\w/.test(at.charAt(au))&&/\w/.test(at.charAt(au-1))){ar=r.getBookmark();aq.collapse(true);aq=p(aq,V(ab));aq=N.split(aq);Y(ab,ai,aq);r.moveToBookmark(ar)}else{if(!ao||av.nodeValue!==G){ao=ad(true);av=ao.firstChild;aq.insertNode(ao);au=1;Y(ab,ai,ao)}else{Y(ab,ai,ao)}r.setCursorLocation(av,au)}}function am(){var ao=r.getRng(true),ap,at,aw,av,aq,az,ay=[],au,ax;ap=ao.startContainer;at=ao.startOffset;aq=ap;if(ap.nodeType==3){if(at!=ap.nodeValue.length||ap.nodeValue===G){av=true}aq=aq.parentNode}while(aq){if(y(aq,ab,ai)){az=aq;break}if(aq.nextSibling){av=true}ay.push(aq);aq=aq.parentNode}if(!az){return}if(av){aw=r.getBookmark();ao.collapse(true);ao=p(ao,V(ab),true);ao=N.split(ao);B(ab,ai,ao);r.moveToBookmark(aw)}else{ax=ad();aq=ax;for(au=ay.length-1;au>=0;au--){aq.appendChild(c.clone(ay[au],false));aq=aq.firstChild}aq.appendChild(c.doc.createTextNode(G));aq=aq.firstChild;var ar=c.getParent(az,I);if(ar&&c.isEmpty(ar)){az.parentNode.replaceChild(ax,az)}else{c.insertAfter(ax,az)}r.setCursorLocation(aq,1);if(c.isEmpty(az)){c.remove(az)}}}function an(){var ap,ao,aq;ao=ag(r.getStart());if(ao&&!c.isEmpty(ao)){a.walk(ao,function(ar){if(ar.nodeType==1&&ar.id!==al&&!c.isEmpty(ar)){c.setAttrib(ar,"data-mce-bogus",null)}},"childNodes")}}if(!self._hasCaretEvents){aa.onBeforeGetContent.addToTop(function(){var ao=[],ap;if(aj(ag(r.getStart()),ao)){ap=ao.length;while(ap--){c.setAttrib(ao[ap],"data-mce-bogus","1")}}});a.each("onMouseUp onKeyUp".split(" "),function(ao){aa[ao].addToTop(function(){ae();an()})});aa.onKeyDown.addToTop(function(ao,aq){var ap=aq.keyCode;if(ap==8||ap==37||ap==39){ae(ag(r.getStart()))}an()});r.onSetContent.add(an);self._hasCaretEvents=true}if(ak=="apply"){ah()}else{am()}}function R(ac){var ab=ac.startContainer,ai=ac.startOffset,ae,ah,ag,ad,af;if(ab.nodeType==3&&ai>=ab.nodeValue.length){ai=s(ab);ab=ab.parentNode;ae=true}if(ab.nodeType==1){ad=ab.childNodes;ab=ad[Math.min(ai,ad.length-1)];ah=new t(ab,c.getParent(ab,c.isBlock));if(ai>ad.length-1||ae){ah.next()}for(ag=ah.current();ag;ag=ah.next()){if(ag.nodeType==3&&!f(ag)){af=c.create("a",null,G);ag.parentNode.insertBefore(af,ag);ac.setStart(ag,0);r.setRng(ac);c.remove(af);return}}}}}})(tinymce);tinymce.onAddEditor.add(function(e,a){var d,h,g,c=a.settings;function b(j,i){e.each(i,function(l,k){if(l){g.setStyle(j,k,l)}});g.rename(j,"span")}function f(i,j){g=i.dom;if(c.convert_fonts_to_spans){e.each(g.select("font,u,strike",j.node),function(k){d[k.nodeName.toLowerCase()](a.dom,k)})}}if(c.inline_styles){h=e.explode(c.font_size_legacy_values);d={font:function(j,i){b(i,{backgroundColor:i.style.backgroundColor,color:i.color,fontFamily:i.face,fontSize:h[parseInt(i.size,10)-1]})},u:function(j,i){b(i,{textDecoration:"underline"})},strike:function(j,i){b(i,{textDecoration:"line-through"})}};a.onPreProcess.add(f);a.onSetContent.add(f);a.onInit.add(function(){a.selection.onSetContent.add(f)})}});(function(b){var a=b.dom.TreeWalker;b.EnterKey=function(f){var i=f.dom,e=f.selection,d=f.settings,h=f.undoManager,c=f.schema.getNonEmptyElements();function g(B){var v=e.getRng(true),G,j,A,u,p,M,C,o,k,n,t,J,x,D;function E(N){return N&&i.isBlock(N)&&!/^(TD|TH|CAPTION|FORM)$/.test(N.nodeName)&&!/^(fixed|absolute)/i.test(N.style.position)&&i.getContentEditable(N)!=="true"}function F(O){var N;if(b.isIE&&!b.isIE11&&i.isBlock(O)){N=e.getRng();O.appendChild(i.create("span",null,"\u00a0"));e.select(O);O.lastChild.outerHTML="";e.setRng(N)}}function z(P){var O=P,Q=[],N;while(O=O.firstChild){if(i.isBlock(O)){return}if(O.nodeType==1&&!c[O.nodeName.toLowerCase()]){Q.push(O)}}N=Q.length;while(N--){O=Q[N];if(!O.hasChildNodes()||(O.firstChild==O.lastChild&&O.firstChild.nodeValue==="")){i.remove(O)}else{if(O.nodeName=="A"&&(O.innerText||O.textContent)===" "){i.remove(O)}}}}function m(O){var T,R,N,U,S,Q=O,P;N=i.createRng();if(O.hasChildNodes()){T=new a(O,O);while(R=T.current()){if(R.nodeType==3){N.setStart(R,0);N.setEnd(R,0);break}if(c[R.nodeName.toLowerCase()]){N.setStartBefore(R);N.setEndBefore(R);break}Q=R;R=T.next()}if(!R){N.setStart(Q,0);N.setEnd(Q,0)}}else{if(O.nodeName=="BR"){if(O.nextSibling&&i.isBlock(O.nextSibling)){if(!M||M<9){P=i.create("br");O.parentNode.insertBefore(P,O)}N.setStartBefore(O);N.setEndBefore(O)}else{N.setStartAfter(O);N.setEndAfter(O)}}else{N.setStart(O,0);N.setEnd(O,0)}}e.setRng(N);i.remove(P);S=i.getViewPort(f.getWin());U=i.getPos(O).y;if(U<S.y||U+25>S.y+S.h){f.getWin().scrollTo(0,U<S.y?U:U-S.h+25)}}function r(O){var P=A,R,Q,N;R=O||t=="TABLE"?i.create(O||x):p.cloneNode(false);N=R;if(d.keep_styles!==false){do{if(/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(P.nodeName)){if(P.id=="_mce_caret"){continue}Q=P.cloneNode(false);i.setAttrib(Q,"id","");if(R.hasChildNodes()){Q.appendChild(R.firstChild);R.appendChild(Q)}else{N=Q;R.appendChild(Q)}}}while(P=P.parentNode)}if(!b.isIE||b.isIE11){N.innerHTML='<br data-mce-bogus="1">'}return R}function q(Q){var P,O,N;if(A.nodeType==3&&(Q?u>0:u<A.nodeValue.length)){return false}if(A.parentNode==p&&D&&!Q){return true}if(Q&&A.nodeType==1&&A==p.firstChild){return true}if(A.nodeName==="TABLE"||(A.previousSibling&&A.previousSibling.nodeName=="TABLE")){return(D&&!Q)||(!D&&Q)}P=new a(A,p);if(A.nodeType==3){if(Q&&u==0){P.prev()}else{if(!Q&&u==A.nodeValue.length){P.next()}}}while(O=P.current()){if(O.nodeType===1){if(!O.getAttribute("data-mce-bogus")){N=O.nodeName.toLowerCase();if(c[N]&&N!=="br"){return false}}}else{if(O.nodeType===3&&!/^[ \t\r\n]*$/.test(O.nodeValue)){return false}}if(Q){P.prev()}else{P.next()}}return true}function l(N,T){var U,S,P,R,Q,O=x||"P";S=i.getParent(N,i.isBlock);if(!S||!E(S)){S=S||j;if(!S.hasChildNodes()){U=i.create(O);S.appendChild(U);v.setStart(U,0);v.setEnd(U,0);return U}R=N;while(R.parentNode!=S){R=R.parentNode}while(R&&!i.isBlock(R)){P=R;R=R.previousSibling}if(P){U=i.create(O);P.parentNode.insertBefore(U,P);R=P;while(R&&!i.isBlock(R)){Q=R.nextSibling;U.appendChild(R);R=Q}v.setStart(N,T);v.setEnd(N,T)}}return N}function H(){function N(P){var O=n[P?"firstChild":"lastChild"];while(O){if(O.nodeType==1){break}O=O[P?"nextSibling":"previousSibling"]}return O===p}o=x?r(x):i.create("BR");if(N(true)&&N()){i.replace(o,n)}else{if(N(true)){n.parentNode.insertBefore(o,n)}else{if(N()){i.insertAfter(o,n);F(o)}else{G=v.cloneRange();G.setStartAfter(p);G.setEndAfter(n);k=G.extractContents();i.insertAfter(k,n);i.insertAfter(o,n)}}}i.remove(p);m(o);h.add()}function y(){var O=new a(A,p),N;while(N=O.next()){if(c[N.nodeName.toLowerCase()]||N.length>0){return true}}}function L(){var P,O,N;if(A&&A.nodeType==3&&u>=A.nodeValue.length){if((!b.isIE||b.isIE11)&&!y()){P=i.create("br");v.insertNode(P);v.setStartAfter(P);v.setEndAfter(P);O=true}}P=i.create("br");v.insertNode(P);if((b.isIE&&!b.isIE11)&&t=="PRE"&&(!M||M<8)){P.parentNode.insertBefore(i.doc.createTextNode("\r"),P)}N=i.create("span",{},"&nbsp;");P.parentNode.insertBefore(N,P);e.scrollIntoView(N);i.remove(N);if(!O){v.setStartAfter(P);v.setEndAfter(P)}else{v.setStartBefore(P);v.setEndBefore(P)}e.setRng(v);h.add()}function s(N){do{if(N.nodeType===3){N.nodeValue=N.nodeValue.replace(/^[\r\n]+/,"")}N=N.firstChild}while(N)}function K(P){var N=i.getRoot(),O,Q;O=P;while(O!==N&&i.getContentEditable(O)!=="false"){if(i.getContentEditable(O)==="true"){Q=O}O=O.parentNode}return O!==N?Q:N}function I(O){var N;if(!b.isIE||b.isIE11){O.normalize();N=O.lastChild;if(!N||(/^(left|right)$/gi.test(i.getStyle(N,"float",true)))){i.add(O,"br")}}}if(!v.collapsed){f.execCommand("Delete");return}if(B.isDefaultPrevented()){return}A=v.startContainer;u=v.startOffset;x=(d.force_p_newlines?"p":"")||d.forced_root_block;x=x?x.toUpperCase():"";M=i.doc.documentMode;C=B.shiftKey;if(A.nodeType==1&&A.hasChildNodes()){D=u>A.childNodes.length-1;A=A.childNodes[Math.min(u,A.childNodes.length-1)]||A;if(D&&A.nodeType==3){u=A.nodeValue.length}else{u=0}}j=K(A);if(!j){return}h.beforeChange();if(!i.isBlock(j)&&j!=i.getRoot()){if(!x||C){L()}return}if((x&&!C)||(!x&&C)){A=l(A,u)}p=i.getParent(A,i.isBlock);n=p?i.getParent(p.parentNode,i.isBlock):null;t=p?p.nodeName.toUpperCase():"";J=n?n.nodeName.toUpperCase():"";if(J=="LI"&&!B.ctrlKey){p=n;t=J}if(t=="LI"){if(!x&&C){L();return}if(i.isEmpty(p)){if(/^(UL|OL|LI)$/.test(n.parentNode.nodeName)){return false}H();return}}if(t=="PRE"&&d.br_in_pre!==false){if(!C){L();return}}else{if((!x&&!C&&t!="LI")||(x&&C)){L();return}}x=x||"P";if(q()){if(/^(H[1-6]|PRE)$/.test(t)&&J!="HGROUP"){o=r(x)}else{o=r()}if(d.end_container_on_empty_block&&E(n)&&i.isEmpty(p)){o=i.split(n,p)}else{i.insertAfter(o,p)}m(o)}else{if(q(true)){o=p.parentNode.insertBefore(r(),p);F(o)}else{G=v.cloneRange();G.setEndAfter(p);k=G.extractContents();s(k);o=k.firstChild;i.insertAfter(k,p);z(o);I(p);m(o)}}i.setAttrib(o,"id","");h.add()}f.onKeyDown.add(function(k,j){if(j.keyCode==13){if(g(j)!==false){j.preventDefault()}}})}})(tinymce); \ No newline at end of file
diff --git a/program/js/tiny_mce/tiny_mce_popup.js b/program/js/tiny_mce/tiny_mce_popup.js
deleted file mode 100644
index 0808f8f9b..000000000
--- a/program/js/tiny_mce/tiny_mce_popup.js
+++ /dev/null
@@ -1,5 +0,0 @@
-
-// Uncomment and change this document.domain value if you are loading the script cross subdomains
-// document.domain = 'moxiecode.com';
-
-var tinymce=null,tinyMCEPopup,tinyMCE;tinyMCEPopup={init:function(){var b=this,a,c;a=b.getWin();tinymce=a.tinymce;tinyMCE=a.tinyMCE;b.editor=tinymce.EditorManager.activeEditor;b.params=b.editor.windowManager.params;b.features=b.editor.windowManager.features;b.dom=b.editor.windowManager.createInstance("tinymce.dom.DOMUtils",document,{ownEvents:true,proxy:tinyMCEPopup._eventProxy});b.dom.bind(window,"ready",b._onDOMLoaded,b);if(b.features.popup_css!==false){b.dom.loadCSS(b.features.popup_css||b.editor.settings.popup_css)}b.listeners=[];b.onInit={add:function(e,d){b.listeners.push({func:e,scope:d})}};b.isWindow=!b.getWindowArg("mce_inline");b.id=b.getWindowArg("mce_window_id");b.editor.windowManager.onOpen.dispatch(b.editor.windowManager,window)},getWin:function(){return(!window.frameElement&&window.dialogArguments)||opener||parent||top},getWindowArg:function(c,b){var a=this.params[c];return tinymce.is(a)?a:b},getParam:function(b,a){return this.editor.getParam(b,a)},getLang:function(b,a){return this.editor.getLang(b,a)},execCommand:function(d,c,e,b){b=b||{};b.skip_focus=1;this.restoreSelection();return this.editor.execCommand(d,c,e,b)},resizeToInnerSize:function(){var a=this;setTimeout(function(){var b=a.dom.getViewPort(window);a.editor.windowManager.resizeBy(a.getWindowArg("mce_width")-b.w,a.getWindowArg("mce_height")-b.h,a.id||window)},10)},executeOnLoad:function(s){this.onInit.add(function(){eval(s)})},storeSelection:function(){this.editor.windowManager.bookmark=tinyMCEPopup.editor.selection.getBookmark(1)},restoreSelection:function(){var a=tinyMCEPopup;if(!a.isWindow&&tinymce.isIE){a.editor.selection.moveToBookmark(a.editor.windowManager.bookmark)}},requireLangPack:function(){var b=this,a=b.getWindowArg("plugin_url")||b.getWindowArg("theme_url");if(a&&b.editor.settings.language&&b.features.translate_i18n!==false&&b.editor.settings.language_load!==false){a+="/langs/"+b.editor.settings.language+"_dlg.js";if(!tinymce.ScriptLoader.isDone(a)){document.write('<script type="text/javascript" src="'+tinymce._addVer(a)+'"><\/script>');tinymce.ScriptLoader.markDone(a)}}},pickColor:function(b,a){this.execCommand("mceColorPicker",true,{color:document.getElementById(a).value,func:function(e){document.getElementById(a).value=e;try{document.getElementById(a).onchange()}catch(d){}}})},openBrowser:function(a,c,b){tinyMCEPopup.restoreSelection();this.editor.execCallback("file_browser_callback",a,document.getElementById(a).value,c,window)},confirm:function(b,a,c){this.editor.windowManager.confirm(b,a,c,window)},alert:function(b,a,c){this.editor.windowManager.alert(b,a,c,window)},close:function(){var a=this;function b(){a.editor.windowManager.close(window);tinymce=tinyMCE=a.editor=a.params=a.dom=a.dom.doc=null}if(tinymce.isOpera){a.getWin().setTimeout(b,0)}else{b()}},_restoreSelection:function(a){var a=(a&&a.target)||window.event.srcElement;if(a.nodeName=="INPUT"&&(a.type=="submit"||a.type=="button")){tinyMCEPopup.restoreSelection()}},_onDOMLoaded:function(){var b=tinyMCEPopup,d=document.title,e,c,a;if(b.features.translate_i18n!==false){c=document.body.innerHTML;if(tinymce.isIE){c=c.replace(/ (value|title|alt)=([^"][^\s>]+)/gi,' $1="$2"')}document.dir=b.editor.getParam("directionality","");if((a=b.editor.translate(c))&&a!=c){document.body.innerHTML=a}if((a=b.editor.translate(d))&&a!=d){document.title=d=a}}if(!b.editor.getParam("browser_preferred_colors",false)||!b.isWindow){b.dom.addClass(document.body,"forceColors")}document.body.style.display="";if(tinymce.isIE&&!tinymce.isIE11){document.attachEvent("onmouseup",tinyMCEPopup._restoreSelection);b.dom.add(b.dom.select("head")[0],"base",{target:"_self"})}else{if(tinymce.isIE11){document.addEventListener("mouseup",tinyMCEPopup._restoreSelection,false)}}b.restoreSelection();b.resizeToInnerSize();if(!b.isWindow){b.editor.windowManager.setTitle(window,d)}else{window.focus()}if(!tinymce.isIE&&!b.isWindow){b.dom.bind(document,"focus",function(){b.editor.windowManager.focus(b.id)})}tinymce.each(b.dom.select("select"),function(f){f.onkeydown=tinyMCEPopup._accessHandler});tinymce.each(b.listeners,function(f){f.func.call(f.scope,b.editor)});if(b.getWindowArg("mce_auto_focus",true)){window.focus();tinymce.each(document.forms,function(g){tinymce.each(g.elements,function(f){if(b.dom.hasClass(f,"mceFocus")&&!f.disabled){f.focus();return false}})})}document.onkeyup=tinyMCEPopup._closeWinKeyHandler},_accessHandler:function(a){a=a||window.event;if(a.keyCode==13||a.keyCode==32){var b=a.target||a.srcElement;if(b.onchange){b.onchange()}return tinymce.dom.Event.cancel(a)}},_closeWinKeyHandler:function(a){a=a||window.event;if(a.keyCode==27){tinyMCEPopup.close()}},_eventProxy:function(a){return function(b){tinyMCEPopup.dom.events.callNativeHandler(a,b)}}};tinyMCEPopup.init(); \ No newline at end of file
diff --git a/program/js/tiny_mce/tiny_mce_src.js b/program/js/tiny_mce/tiny_mce_src.js
deleted file mode 100644
index 86b162b75..000000000
--- a/program/js/tiny_mce/tiny_mce_src.js
+++ /dev/null
@@ -1,19127 +0,0 @@
-// FILE IS GENERATED BY COMBINING THE SOURCES IN THE "classes" DIRECTORY SO DON'T MODIFY THIS FILE DIRECTLY
-(function(win) {
- var whiteSpaceRe = /^\s*|\s*$/g,
- undef, isRegExpBroken = 'B'.replace(/A(.)|B/, '$1') === '$1';
-
- var tinymce = {
- majorVersion : '3',
-
- minorVersion : '5.10',
-
- releaseDate : '2013-10-24',
-
- _init : function() {
- var t = this, d = document, na = navigator, ua = na.userAgent, i, nl, n, base, p, v;
-
- t.isIE11 = ua.indexOf('Trident/') != -1 && (ua.indexOf('rv:') != -1 || na.appName.indexOf('Netscape') != -1);
-
- t.isOpera = win.opera && opera.buildNumber;
-
- t.isWebKit = /WebKit/.test(ua);
-
- t.isIE = !t.isWebKit && !t.isOpera && (/MSIE/gi).test(ua) && (/Explorer/gi).test(na.appName) || t.isIE11;
-
- t.isIE6 = t.isIE && /MSIE [56]/.test(ua);
-
- t.isIE7 = t.isIE && /MSIE [7]/.test(ua);
-
- t.isIE8 = t.isIE && /MSIE [8]/.test(ua);
-
- t.isIE9 = t.isIE && /MSIE [9]/.test(ua);
-
- t.isGecko = !t.isWebKit && !t.isIE11 && /Gecko/.test(ua);
-
- t.isMac = ua.indexOf('Mac') != -1;
-
- t.isAir = /adobeair/i.test(ua);
-
- t.isIDevice = /(iPad|iPhone)/.test(ua);
-
- t.isIOS5 = t.isIDevice && ua.match(/AppleWebKit\/(\d*)/)[1]>=534;
-
- // TinyMCE .NET webcontrol might be setting the values for TinyMCE
- if (win.tinyMCEPreInit) {
- t.suffix = tinyMCEPreInit.suffix;
- t.baseURL = tinyMCEPreInit.base;
- t.query = tinyMCEPreInit.query;
- return;
- }
-
- // Get suffix and base
- t.suffix = '';
-
- // If base element found, add that infront of baseURL
- nl = d.getElementsByTagName('base');
- for (i=0; i<nl.length; i++) {
- v = nl[i].href;
- if (v) {
- // Host only value like http://site.com or http://site.com:8008
- if (/^https?:\/\/[^\/]+$/.test(v))
- v += '/';
-
- base = v ? v.match(/.*\//)[0] : ''; // Get only directory
- }
- }
-
- function getBase(n) {
- if (n.src && /tiny_mce(|_gzip|_jquery|_prototype|_full)(_dev|_src)?.js/.test(n.src)) {
- if (/_(src|dev)\.js/g.test(n.src))
- t.suffix = '_src';
-
- if ((p = n.src.indexOf('?')) != -1)
- t.query = n.src.substring(p + 1);
-
- t.baseURL = n.src.substring(0, n.src.lastIndexOf('/'));
-
- // If path to script is relative and a base href was found add that one infront
- // the src property will always be an absolute one on non IE browsers and IE 8
- // so this logic will basically only be executed on older IE versions
- if (base && t.baseURL.indexOf('://') == -1 && t.baseURL.indexOf('/') !== 0)
- t.baseURL = base + t.baseURL;
-
- return t.baseURL;
- }
-
- return null;
- };
-
- // Check document
- nl = d.getElementsByTagName('script');
- for (i=0; i<nl.length; i++) {
- if (getBase(nl[i]))
- return;
- }
-
- // Check head
- n = d.getElementsByTagName('head')[0];
- if (n) {
- nl = n.getElementsByTagName('script');
- for (i=0; i<nl.length; i++) {
- if (getBase(nl[i]))
- return;
- }
- }
-
- return;
- },
-
- is : function(o, t) {
- if (!t)
- return o !== undef;
-
- if (t == 'array' && tinymce.isArray(o))
- return true;
-
- return typeof(o) == t;
- },
-
- isArray: Array.isArray || function(obj) {
- return Object.prototype.toString.call(obj) === "[object Array]";
- },
-
- makeMap : function(items, delim, map) {
- var i;
-
- items = items || [];
- delim = delim || ',';
-
- if (typeof(items) == "string")
- items = items.split(delim);
-
- map = map || {};
-
- i = items.length;
- while (i--)
- map[items[i]] = {};
-
- return map;
- },
-
- each : function(o, cb, s) {
- var n, l;
-
- if (!o)
- return 0;
-
- s = s || o;
-
- if (o.length !== undef) {
- // Indexed arrays, needed for Safari
- for (n=0, l = o.length; n < l; n++) {
- if (cb.call(s, o[n], n, o) === false)
- return 0;
- }
- } else {
- // Hashtables
- for (n in o) {
- if (o.hasOwnProperty(n)) {
- if (cb.call(s, o[n], n, o) === false)
- return 0;
- }
- }
- }
-
- return 1;
- },
-
-
- map : function(a, f) {
- var o = [];
-
- tinymce.each(a, function(v) {
- o.push(f(v));
- });
-
- return o;
- },
-
- grep : function(a, f) {
- var o = [];
-
- tinymce.each(a, function(v) {
- if (!f || f(v))
- o.push(v);
- });
-
- return o;
- },
-
- inArray : function(a, v) {
- var i, l;
-
- if (a) {
- for (i = 0, l = a.length; i < l; i++) {
- if (a[i] === v)
- return i;
- }
- }
-
- return -1;
- },
-
- extend : function(obj, ext) {
- var i, l, name, args = arguments, value;
-
- for (i = 1, l = args.length; i < l; i++) {
- ext = args[i];
- for (name in ext) {
- if (ext.hasOwnProperty(name)) {
- value = ext[name];
-
- if (value !== undef) {
- obj[name] = value;
- }
- }
- }
- }
-
- return obj;
- },
-
-
- trim : function(s) {
- return (s ? '' + s : '').replace(whiteSpaceRe, '');
- },
-
- create : function(s, p, root) {
- var t = this, sp, ns, cn, scn, c, de = 0;
-
- // Parse : <prefix> <class>:<super class>
- s = /^((static) )?([\w.]+)(:([\w.]+))?/.exec(s);
- cn = s[3].match(/(^|\.)(\w+)$/i)[2]; // Class name
-
- // Create namespace for new class
- ns = t.createNS(s[3].replace(/\.\w+$/, ''), root);
-
- // Class already exists
- if (ns[cn])
- return;
-
- // Make pure static class
- if (s[2] == 'static') {
- ns[cn] = p;
-
- if (this.onCreate)
- this.onCreate(s[2], s[3], ns[cn]);
-
- return;
- }
-
- // Create default constructor
- if (!p[cn]) {
- p[cn] = function() {};
- de = 1;
- }
-
- // Add constructor and methods
- ns[cn] = p[cn];
- t.extend(ns[cn].prototype, p);
-
- // Extend
- if (s[5]) {
- sp = t.resolve(s[5]).prototype;
- scn = s[5].match(/\.(\w+)$/i)[1]; // Class name
-
- // Extend constructor
- c = ns[cn];
- if (de) {
- // Add passthrough constructor
- ns[cn] = function() {
- return sp[scn].apply(this, arguments);
- };
- } else {
- // Add inherit constructor
- ns[cn] = function() {
- this.parent = sp[scn];
- return c.apply(this, arguments);
- };
- }
- ns[cn].prototype[cn] = ns[cn];
-
- // Add super methods
- t.each(sp, function(f, n) {
- ns[cn].prototype[n] = sp[n];
- });
-
- // Add overridden methods
- t.each(p, function(f, n) {
- // Extend methods if needed
- if (sp[n]) {
- ns[cn].prototype[n] = function() {
- this.parent = sp[n];
- return f.apply(this, arguments);
- };
- } else {
- if (n != cn)
- ns[cn].prototype[n] = f;
- }
- });
- }
-
- // Add static methods
- t.each(p['static'], function(f, n) {
- ns[cn][n] = f;
- });
-
- if (this.onCreate)
- this.onCreate(s[2], s[3], ns[cn].prototype);
- },
-
- walk : function(o, f, n, s) {
- s = s || this;
-
- if (o) {
- if (n)
- o = o[n];
-
- tinymce.each(o, function(o, i) {
- if (f.call(s, o, i, n) === false)
- return false;
-
- tinymce.walk(o, f, n, s);
- });
- }
- },
-
- createNS : function(n, o) {
- var i, v;
-
- o = o || win;
-
- n = n.split('.');
- for (i=0; i<n.length; i++) {
- v = n[i];
-
- if (!o[v])
- o[v] = {};
-
- o = o[v];
- }
-
- return o;
- },
-
- resolve : function(n, o) {
- var i, l;
-
- o = o || win;
-
- n = n.split('.');
- for (i = 0, l = n.length; i < l; i++) {
- o = o[n[i]];
-
- if (!o)
- break;
- }
-
- return o;
- },
-
- addUnload : function(f, s) {
- var t = this, unload;
-
- unload = function() {
- var li = t.unloads, o, n;
-
- if (li) {
- // Call unload handlers
- for (n in li) {
- o = li[n];
-
- if (o && o.func)
- o.func.call(o.scope, 1); // Send in one arg to distinct unload and user destroy
- }
-
- // Detach unload function
- if (win.detachEvent) {
- win.detachEvent('onbeforeunload', fakeUnload);
- win.detachEvent('onunload', unload);
- } else if (win.removeEventListener)
- win.removeEventListener('unload', unload, false);
-
- // Destroy references
- t.unloads = o = li = w = unload = 0;
-
- // Run garbarge collector on IE
- if (win.CollectGarbage)
- CollectGarbage();
- }
- };
-
- function fakeUnload() {
- var d = document;
-
- function stop() {
- // Prevent memory leak
- d.detachEvent('onstop', stop);
-
- // Call unload handler
- if (unload)
- unload();
-
- d = 0;
- };
-
- // Is there things still loading, then do some magic
- if (d.readyState == 'interactive') {
- // Fire unload when the currently loading page is stopped
- if (d)
- d.attachEvent('onstop', stop);
-
- // Remove onstop listener after a while to prevent the unload function
- // to execute if the user presses cancel in an onbeforeunload
- // confirm dialog and then presses the browser stop button
- win.setTimeout(function() {
- if (d)
- d.detachEvent('onstop', stop);
- }, 0);
- }
- };
-
- f = {func : f, scope : s || this};
-
- if (!t.unloads) {
- // Attach unload handler
- if (win.attachEvent) {
- win.attachEvent('onunload', unload);
- win.attachEvent('onbeforeunload', fakeUnload);
- } else if (win.addEventListener)
- win.addEventListener('unload', unload, false);
-
- // Setup initial unload handler array
- t.unloads = [f];
- } else
- t.unloads.push(f);
-
- return f;
- },
-
- removeUnload : function(f) {
- var u = this.unloads, r = null;
-
- tinymce.each(u, function(o, i) {
- if (o && o.func == f) {
- u.splice(i, 1);
- r = f;
- return false;
- }
- });
-
- return r;
- },
-
- explode : function(s, d) {
- if (!s || tinymce.is(s, 'array')) {
- return s;
- }
-
- return tinymce.map(s.split(d || ','), tinymce.trim);
- },
-
- _addVer : function(u) {
- var v;
-
- if (!this.query)
- return u;
-
- v = (u.indexOf('?') == -1 ? '?' : '&') + this.query;
-
- if (u.indexOf('#') == -1)
- return u + v;
-
- return u.replace('#', v + '#');
- },
-
- // Fix function for IE 9 where regexps isn't working correctly
- // Todo: remove me once MS fixes the bug
- _replace : function(find, replace, str) {
- // On IE9 we have to fake $x replacement
- if (isRegExpBroken) {
- return str.replace(find, function() {
- var val = replace, args = arguments, i;
-
- for (i = 0; i < args.length - 2; i++) {
- if (args[i] === undef) {
- val = val.replace(new RegExp('\\$' + i, 'g'), '');
- } else {
- val = val.replace(new RegExp('\\$' + i, 'g'), args[i]);
- }
- }
-
- return val;
- });
- }
-
- return str.replace(find, replace);
- }
-
- };
-
- // Initialize the API
- tinymce._init();
-
- // Expose tinymce namespace to the global namespace (window)
- win.tinymce = win.tinyMCE = tinymce;
-
- // Describe the different namespaces
-
- })(window);
-
-
-
-tinymce.create('tinymce.util.Dispatcher', {
- scope : null,
- listeners : null,
- inDispatch: false,
-
- Dispatcher : function(scope) {
- this.scope = scope || this;
- this.listeners = [];
- },
-
- add : function(callback, scope) {
- this.listeners.push({cb : callback, scope : scope || this.scope});
-
- return callback;
- },
-
- addToTop : function(callback, scope) {
- var self = this, listener = {cb : callback, scope : scope || self.scope};
-
- // Create new listeners if addToTop is executed in a dispatch loop
- if (self.inDispatch) {
- self.listeners = [listener].concat(self.listeners);
- } else {
- self.listeners.unshift(listener);
- }
-
- return callback;
- },
-
- remove : function(callback) {
- var listeners = this.listeners, output = null;
-
- tinymce.each(listeners, function(listener, i) {
- if (callback == listener.cb) {
- output = listener;
- listeners.splice(i, 1);
- return false;
- }
- });
-
- return output;
- },
-
- dispatch : function() {
- var self = this, returnValue, args = arguments, i, listeners = self.listeners, listener;
-
- self.inDispatch = true;
-
- // Needs to be a real loop since the listener count might change while looping
- // And this is also more efficient
- for (i = 0; i < listeners.length; i++) {
- listener = listeners[i];
- returnValue = listener.cb.apply(listener.scope, args.length > 0 ? args : [listener.scope]);
-
- if (returnValue === false)
- break;
- }
-
- self.inDispatch = false;
-
- return returnValue;
- }
-
- });
-
-(function() {
- var each = tinymce.each;
-
- tinymce.create('tinymce.util.URI', {
- URI : function(u, s) {
- var t = this, o, a, b, base_url;
-
- // Trim whitespace
- u = tinymce.trim(u);
-
- // Default settings
- s = t.settings = s || {};
-
- // Strange app protocol that isn't http/https or local anchor
- // For example: mailto,skype,tel etc.
- if (/^([\w\-]+):([^\/]{2})/i.test(u) || /^\s*#/.test(u)) {
- t.source = u;
- return;
- }
-
- // Absolute path with no host, fake host and protocol
- if (u.indexOf('/') === 0 && u.indexOf('//') !== 0)
- u = (s.base_uri ? s.base_uri.protocol || 'http' : 'http') + '://mce_host' + u;
-
- // Relative path http:// or protocol relative //path
- if (!/^[\w\-]*:?\/\//.test(u)) {
- base_url = s.base_uri ? s.base_uri.path : new tinymce.util.URI(location.href).directory;
- u = ((s.base_uri && s.base_uri.protocol) || 'http') + '://mce_host' + t.toAbsPath(base_url, u);
- }
-
- // Parse URL (Credits goes to Steave, http://blog.stevenlevithan.com/archives/parseuri)
- u = u.replace(/@@/g, '(mce_at)'); // Zope 3 workaround, they use @@something
- u = /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(u);
- each(["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"], function(v, i) {
- var s = u[i];
-
- // Zope 3 workaround, they use @@something
- if (s)
- s = s.replace(/\(mce_at\)/g, '@@');
-
- t[v] = s;
- });
-
- b = s.base_uri;
- if (b) {
- if (!t.protocol)
- t.protocol = b.protocol;
-
- if (!t.userInfo)
- t.userInfo = b.userInfo;
-
- if (!t.port && t.host === 'mce_host')
- t.port = b.port;
-
- if (!t.host || t.host === 'mce_host')
- t.host = b.host;
-
- t.source = '';
- }
-
- //t.path = t.path || '/';
- },
-
- setPath : function(p) {
- var t = this;
-
- p = /^(.*?)\/?(\w+)?$/.exec(p);
-
- // Update path parts
- t.path = p[0];
- t.directory = p[1];
- t.file = p[2];
-
- // Rebuild source
- t.source = '';
- t.getURI();
- },
-
- toRelative : function(u) {
- var t = this, o;
-
- if (u === "./")
- return u;
-
- u = new tinymce.util.URI(u, {base_uri : t});
-
- // Not on same domain/port or protocol
- if ((u.host != 'mce_host' && t.host != u.host && u.host) || t.port != u.port || t.protocol != u.protocol)
- return u.getURI();
-
- var tu = t.getURI(), uu = u.getURI();
-
- // Allow usage of the base_uri when relative_urls = true
- if(tu == uu || (tu.charAt(tu.length - 1) == "/" && tu.substr(0, tu.length - 1) == uu))
- return tu;
-
- o = t.toRelPath(t.path, u.path);
-
- // Add query
- if (u.query)
- o += '?' + u.query;
-
- // Add anchor
- if (u.anchor)
- o += '#' + u.anchor;
-
- return o;
- },
-
- toAbsolute : function(u, nh) {
- u = new tinymce.util.URI(u, {base_uri : this});
-
- return u.getURI(this.host == u.host && this.protocol == u.protocol ? nh : 0);
- },
-
- toRelPath : function(base, path) {
- var items, bp = 0, out = '', i, l;
-
- // Split the paths
- base = base.substring(0, base.lastIndexOf('/'));
- base = base.split('/');
- items = path.split('/');
-
- if (base.length >= items.length) {
- for (i = 0, l = base.length; i < l; i++) {
- if (i >= items.length || base[i] != items[i]) {
- bp = i + 1;
- break;
- }
- }
- }
-
- if (base.length < items.length) {
- for (i = 0, l = items.length; i < l; i++) {
- if (i >= base.length || base[i] != items[i]) {
- bp = i + 1;
- break;
- }
- }
- }
-
- if (bp === 1)
- return path;
-
- for (i = 0, l = base.length - (bp - 1); i < l; i++)
- out += "../";
-
- for (i = bp - 1, l = items.length; i < l; i++) {
- if (i != bp - 1)
- out += "/" + items[i];
- else
- out += items[i];
- }
-
- return out;
- },
-
- toAbsPath : function(base, path) {
- var i, nb = 0, o = [], tr, outPath;
-
- // Split paths
- tr = /\/$/.test(path) ? '/' : '';
- base = base.split('/');
- path = path.split('/');
-
- // Remove empty chunks
- each(base, function(k) {
- if (k)
- o.push(k);
- });
-
- base = o;
-
- // Merge relURLParts chunks
- for (i = path.length - 1, o = []; i >= 0; i--) {
- // Ignore empty or .
- if (path[i].length === 0 || path[i] === ".")
- continue;
-
- // Is parent
- if (path[i] === '..') {
- nb++;
- continue;
- }
-
- // Move up
- if (nb > 0) {
- nb--;
- continue;
- }
-
- o.push(path[i]);
- }
-
- i = base.length - nb;
-
- // If /a/b/c or /
- if (i <= 0)
- outPath = o.reverse().join('/');
- else
- outPath = base.slice(0, i).join('/') + '/' + o.reverse().join('/');
-
- // Add front / if it's needed
- if (outPath.indexOf('/') !== 0)
- outPath = '/' + outPath;
-
- // Add traling / if it's needed
- if (tr && outPath.lastIndexOf('/') !== outPath.length - 1)
- outPath += tr;
-
- return outPath;
- },
-
- getURI : function(nh) {
- var s, t = this;
-
- // Rebuild source
- if (!t.source || nh) {
- s = '';
-
- if (!nh) {
- if (t.protocol)
- s += t.protocol + '://';
-
- if (t.userInfo)
- s += t.userInfo + '@';
-
- if (t.host)
- s += t.host;
-
- if (t.port)
- s += ':' + t.port;
- }
-
- if (t.path)
- s += t.path;
-
- if (t.query)
- s += '?' + t.query;
-
- if (t.anchor)
- s += '#' + t.anchor;
-
- t.source = s;
- }
-
- return t.source;
- }
- });
-})();
-
-(function() {
- var each = tinymce.each;
-
- tinymce.create('static tinymce.util.Cookie', {
- getHash : function(n) {
- var v = this.get(n), h;
-
- if (v) {
- each(v.split('&'), function(v) {
- v = v.split('=');
- h = h || {};
- h[unescape(v[0])] = unescape(v[1]);
- });
- }
-
- return h;
- },
-
- setHash : function(n, v, e, p, d, s) {
- var o = '';
-
- each(v, function(v, k) {
- o += (!o ? '' : '&') + escape(k) + '=' + escape(v);
- });
-
- this.set(n, o, e, p, d, s);
- },
-
- get : function(n) {
- var c = document.cookie, e, p = n + "=", b;
-
- // Strict mode
- if (!c)
- return;
-
- b = c.indexOf("; " + p);
-
- if (b == -1) {
- b = c.indexOf(p);
-
- if (b !== 0)
- return null;
- } else
- b += 2;
-
- e = c.indexOf(";", b);
-
- if (e == -1)
- e = c.length;
-
- return unescape(c.substring(b + p.length, e));
- },
-
- set : function(n, v, e, p, d, s) {
- document.cookie = n + "=" + escape(v) +
- ((e) ? "; expires=" + e.toGMTString() : "") +
- ((p) ? "; path=" + escape(p) : "") +
- ((d) ? "; domain=" + d : "") +
- ((s) ? "; secure" : "");
- },
-
- remove : function(name, path, domain) {
- var date = new Date();
-
- date.setTime(date.getTime() - 1000);
-
- this.set(name, '', date, path, domain);
- }
- });
-})();
-
-(function() {
- function serialize(o, quote) {
- var i, v, t, name;
-
- quote = quote || '"';
-
- if (o == null)
- return 'null';
-
- t = typeof o;
-
- if (t == 'string') {
- v = '\bb\tt\nn\ff\rr\""\'\'\\\\';
-
- return quote + o.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g, function(a, b) {
- // Make sure single quotes never get encoded inside double quotes for JSON compatibility
- if (quote === '"' && a === "'")
- return a;
-
- i = v.indexOf(b);
-
- if (i + 1)
- return '\\' + v.charAt(i + 1);
-
- a = b.charCodeAt().toString(16);
-
- return '\\u' + '0000'.substring(a.length) + a;
- }) + quote;
- }
-
- if (t == 'object') {
- if (o.hasOwnProperty && Object.prototype.toString.call(o) === '[object Array]') {
- for (i=0, v = '['; i<o.length; i++)
- v += (i > 0 ? ',' : '') + serialize(o[i], quote);
-
- return v + ']';
- }
-
- v = '{';
-
- for (name in o) {
- if (o.hasOwnProperty(name)) {
- v += typeof o[name] != 'function' ? (v.length > 1 ? ',' + quote : quote) + name + quote +':' + serialize(o[name], quote) : '';
- }
- }
-
- return v + '}';
- }
-
- return '' + o;
- };
-
- tinymce.util.JSON = {
- serialize: serialize,
-
- parse: function(s) {
- try {
- return eval('(' + s + ')');
- } catch (ex) {
- // Ignore
- }
- }
-
- };
-})();
-
-tinymce.create('static tinymce.util.XHR', {
- send : function(o) {
- var x, t, w = window, c = 0;
-
- function ready() {
- if (!o.async || x.readyState == 4 || c++ > 10000) {
- if (o.success && c < 10000 && x.status == 200)
- o.success.call(o.success_scope, '' + x.responseText, x, o);
- else if (o.error)
- o.error.call(o.error_scope, c > 10000 ? 'TIMED_OUT' : 'GENERAL', x, o);
-
- x = null;
- } else
- w.setTimeout(ready, 10);
- };
-
- // Default settings
- o.scope = o.scope || this;
- o.success_scope = o.success_scope || o.scope;
- o.error_scope = o.error_scope || o.scope;
- o.async = o.async === false ? false : true;
- o.data = o.data || '';
-
- function get(s) {
- x = 0;
-
- try {
- x = new ActiveXObject(s);
- } catch (ex) {
- }
-
- return x;
- };
-
- x = w.XMLHttpRequest ? new XMLHttpRequest() : get('Microsoft.XMLHTTP') || get('Msxml2.XMLHTTP');
-
- if (x) {
- if (x.overrideMimeType)
- x.overrideMimeType(o.content_type);
-
- x.open(o.type || (o.data ? 'POST' : 'GET'), o.url, o.async);
-
- if (o.content_type)
- x.setRequestHeader('Content-Type', o.content_type);
-
- x.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
-
- x.send(o.data);
-
- // Syncronous request
- if (!o.async)
- return ready();
-
- // Wait for response, onReadyStateChange can not be used since it leaks memory in IE
- t = w.setTimeout(ready, 10);
- }
- }
-});
-
-(function() {
- var extend = tinymce.extend, JSON = tinymce.util.JSON, XHR = tinymce.util.XHR;
-
- tinymce.create('tinymce.util.JSONRequest', {
- JSONRequest : function(s) {
- this.settings = extend({
- }, s);
- this.count = 0;
- },
-
- send : function(o) {
- var ecb = o.error, scb = o.success;
-
- o = extend(this.settings, o);
-
- o.success = function(c, x) {
- c = JSON.parse(c);
-
- if (typeof(c) == 'undefined') {
- c = {
- error : 'JSON Parse error.'
- };
- }
-
- if (c.error)
- ecb.call(o.error_scope || o.scope, c.error, x);
- else
- scb.call(o.success_scope || o.scope, c.result);
- };
-
- o.error = function(ty, x) {
- if (ecb)
- ecb.call(o.error_scope || o.scope, ty, x);
- };
-
- o.data = JSON.serialize({
- id : o.id || 'c' + (this.count++),
- method : o.method,
- params : o.params
- });
-
- // JSON content type for Ruby on rails. Bug: #1883287
- o.content_type = 'application/json';
-
- XHR.send(o);
- },
-
- 'static' : {
- sendRPC : function(o) {
- return new tinymce.util.JSONRequest().send(o);
- }
- }
- });
-}());
-(function(tinymce){
- tinymce.VK = {
- BACKSPACE: 8,
- DELETE: 46,
- DOWN: 40,
- ENTER: 13,
- LEFT: 37,
- RIGHT: 39,
- SPACEBAR: 32,
- TAB: 9,
- UP: 38,
-
- modifierPressed: function (e) {
- return e.shiftKey || e.ctrlKey || e.altKey;
- },
-
- metaKeyPressed: function(e) {
- // Check if ctrl or meta key is pressed also check if alt is false for Polish users
- return tinymce.isMac ? e.metaKey : e.ctrlKey && !e.altKey;
- }
- };
-})(tinymce);
-
-tinymce.util.Quirks = function(editor) {
- var VK = tinymce.VK, BACKSPACE = VK.BACKSPACE, DELETE = VK.DELETE, dom = editor.dom, selection = editor.selection,
- settings = editor.settings, parser = editor.parser, serializer = editor.serializer, each = tinymce.each;
-
- function setEditorCommandState(cmd, state) {
- try {
- editor.getDoc().execCommand(cmd, false, state);
- } catch (ex) {
- // Ignore
- }
- }
-
- function getDocumentMode() {
- var documentMode = editor.getDoc().documentMode;
-
- return documentMode ? documentMode : 6;
- };
-
- function isDefaultPrevented(e) {
- return e.isDefaultPrevented();
- };
-
- function cleanupStylesWhenDeleting() {
- function removeMergedFormatSpans(isDelete) {
- var rng, blockElm, wrapperElm, bookmark, container, offset, elm;
-
- function isAtStartOrEndOfElm() {
- if (container.nodeType == 3) {
- if (isDelete && offset == container.length) {
- return true;
- }
-
- if (!isDelete && offset === 0) {
- return true;
- }
- }
- }
-
- rng = selection.getRng();
- var tmpRng = [rng.startContainer, rng.startOffset, rng.endContainer, rng.endOffset];
-
- if (!rng.collapsed) {
- isDelete = true;
- }
-
- container = rng[(isDelete ? 'start' : 'end') + 'Container'];
- offset = rng[(isDelete ? 'start' : 'end') + 'Offset'];
-
- if (container.nodeType == 3) {
- blockElm = dom.getParent(rng.startContainer, dom.isBlock);
-
- // On delete clone the root span of the next block element
- if (isDelete) {
- blockElm = dom.getNext(blockElm, dom.isBlock);
- }
-
- if (blockElm && (isAtStartOrEndOfElm() || !rng.collapsed)) {
- // Wrap children of block in a EM and let WebKit stick is
- // runtime styles junk into that EM
- wrapperElm = dom.create('em', {'id': '__mceDel'});
-
- each(tinymce.grep(blockElm.childNodes), function(node) {
- wrapperElm.appendChild(node);
- });
-
- blockElm.appendChild(wrapperElm);
- }
- }
-
- // Do the backspace/delete action
- rng = dom.createRng();
- rng.setStart(tmpRng[0], tmpRng[1]);
- rng.setEnd(tmpRng[2], tmpRng[3]);
- selection.setRng(rng);
- editor.getDoc().execCommand(isDelete ? 'ForwardDelete' : 'Delete', false, null);
-
- // Remove temp wrapper element
- if (wrapperElm) {
- bookmark = selection.getBookmark();
-
- while (elm = dom.get('__mceDel')) {
- dom.remove(elm, true);
- }
-
- selection.moveToBookmark(bookmark);
- }
- }
-
- editor.onKeyDown.add(function(editor, e) {
- var isDelete;
-
- isDelete = e.keyCode == DELETE;
- if (!isDefaultPrevented(e) && (isDelete || e.keyCode == BACKSPACE) && !VK.modifierPressed(e)) {
- e.preventDefault();
- removeMergedFormatSpans(isDelete);
- }
- });
-
- editor.addCommand('Delete', function() {removeMergedFormatSpans();});
- };
-
- function emptyEditorWhenDeleting() {
- function serializeRng(rng) {
- var body = dom.create("body");
- var contents = rng.cloneContents();
- body.appendChild(contents);
- return selection.serializer.serialize(body, {format: 'html'});
- }
-
- function allContentsSelected(rng) {
- var selection = serializeRng(rng);
-
- var allRng = dom.createRng();
- allRng.selectNode(editor.getBody());
-
- var allSelection = serializeRng(allRng);
- return selection === allSelection;
- }
-
- editor.onKeyDown.add(function(editor, e) {
- var keyCode = e.keyCode, isCollapsed;
-
- // Empty the editor if it's needed for example backspace at <p><b>|</b></p>
- if (!isDefaultPrevented(e) && (keyCode == DELETE || keyCode == BACKSPACE)) {
- isCollapsed = editor.selection.isCollapsed();
-
- // Selection is collapsed but the editor isn't empty
- if (isCollapsed && !dom.isEmpty(editor.getBody())) {
- return;
- }
-
- // IE deletes all contents correctly when everything is selected
- if (tinymce.isIE && !isCollapsed) {
- return;
- }
-
- // Selection isn't collapsed but not all the contents is selected
- if (!isCollapsed && !allContentsSelected(editor.selection.getRng())) {
- return;
- }
-
- // Manually empty the editor
- editor.setContent('');
- editor.selection.setCursorLocation(editor.getBody(), 0);
- editor.nodeChanged();
- }
- });
- };
-
- function selectAll() {
- editor.onKeyDown.add(function(editor, e) {
- if (!isDefaultPrevented(e) && e.keyCode == 65 && VK.metaKeyPressed(e)) {
- e.preventDefault();
- editor.execCommand('SelectAll');
- }
- });
- };
-
- function inputMethodFocus() {
- if (!editor.settings.content_editable) {
- // Case 1 IME doesn't initialize if you focus the document
- dom.bind(editor.getDoc(), 'focusin', function(e) {
- selection.setRng(selection.getRng());
- });
-
- // Case 2 IME doesn't initialize if you click the documentElement it also doesn't properly fire the focusin event
- dom.bind(editor.getDoc(), 'mousedown', function(e) {
- if (e.target == editor.getDoc().documentElement) {
- editor.getWin().focus();
- selection.setRng(selection.getRng());
- }
- });
- }
- };
-
- function removeHrOnBackspace() {
- editor.onKeyDown.add(function(editor, e) {
- if (!isDefaultPrevented(e) && e.keyCode === BACKSPACE) {
- if (selection.isCollapsed() && selection.getRng(true).startOffset === 0) {
- var node = selection.getNode();
- var previousSibling = node.previousSibling;
-
- if (previousSibling && previousSibling.nodeName && previousSibling.nodeName.toLowerCase() === "hr") {
- dom.remove(previousSibling);
- tinymce.dom.Event.cancel(e);
- }
- }
- }
- })
- }
-
- function focusBody() {
- // Fix for a focus bug in FF 3.x where the body element
- // wouldn't get proper focus if the user clicked on the HTML element
- if (!Range.prototype.getClientRects) { // Detect getClientRects got introduced in FF 4
- editor.onMouseDown.add(function(editor, e) {
- if (!isDefaultPrevented(e) && e.target.nodeName === "HTML") {
- var body = editor.getBody();
-
- // Blur the body it's focused but not correctly focused
- body.blur();
-
- // Refocus the body after a little while
- setTimeout(function() {
- body.focus();
- }, 0);
- }
- });
- }
- };
-
- function selectControlElements() {
- editor.onClick.add(function(editor, e) {
- e = e.target;
-
- // Workaround for bug, http://bugs.webkit.org/show_bug.cgi?id=12250
- // WebKit can't even do simple things like selecting an image
- // Needs tobe the setBaseAndExtend or it will fail to select floated images
- if (/^(IMG|HR)$/.test(e.nodeName)) {
- selection.getSel().setBaseAndExtent(e, 0, e, 1);
- }
-
- if (e.nodeName == 'A' && dom.hasClass(e, 'mceItemAnchor')) {
- selection.select(e);
- }
-
- editor.nodeChanged();
- });
- };
-
- function removeStylesWhenDeletingAccrossBlockElements() {
- function getAttributeApplyFunction() {
- var template = dom.getAttribs(selection.getStart().cloneNode(false));
-
- return function() {
- var target = selection.getStart();
-
- if (target !== editor.getBody()) {
- dom.setAttrib(target, "style", null);
-
- each(template, function(attr) {
- target.setAttributeNode(attr.cloneNode(true));
- });
- }
- };
- }
-
- function isSelectionAcrossElements() {
- return !selection.isCollapsed() && dom.getParent(selection.getStart(), dom.isBlock) != dom.getParent(selection.getEnd(), dom.isBlock);
- }
-
- function blockEvent(editor, e) {
- e.preventDefault();
- return false;
- }
-
- editor.onKeyPress.add(function(editor, e) {
- var applyAttributes;
-
- if (!isDefaultPrevented(e) && (e.keyCode == 8 || e.keyCode == 46) && isSelectionAcrossElements()) {
- applyAttributes = getAttributeApplyFunction();
- editor.getDoc().execCommand('delete', false, null);
- applyAttributes();
- e.preventDefault();
- return false;
- }
- });
-
- dom.bind(editor.getDoc(), 'cut', function(e) {
- var applyAttributes;
-
- if (!isDefaultPrevented(e) && isSelectionAcrossElements()) {
- applyAttributes = getAttributeApplyFunction();
- editor.onKeyUp.addToTop(blockEvent);
-
- setTimeout(function() {
- applyAttributes();
- editor.onKeyUp.remove(blockEvent);
- }, 0);
- }
- });
- }
-
- function selectionChangeNodeChanged() {
- var lastRng, selectionTimer;
-
- dom.bind(editor.getDoc(), 'selectionchange', function() {
- if (selectionTimer) {
- clearTimeout(selectionTimer);
- selectionTimer = 0;
- }
-
- selectionTimer = window.setTimeout(function() {
- var rng = selection.getRng();
-
- // Compare the ranges to see if it was a real change or not
- if (!lastRng || !tinymce.dom.RangeUtils.compareRanges(rng, lastRng)) {
- editor.nodeChanged();
- lastRng = rng;
- }
- }, 50);
- });
- }
-
- function ensureBodyHasRoleApplication() {
- document.body.setAttribute("role", "application");
- }
-
- function disableBackspaceIntoATable() {
- editor.onKeyDown.add(function(editor, e) {
- if (!isDefaultPrevented(e) && e.keyCode === BACKSPACE) {
- if (selection.isCollapsed() && selection.getRng(true).startOffset === 0) {
- var previousSibling = selection.getNode().previousSibling;
- if (previousSibling && previousSibling.nodeName && previousSibling.nodeName.toLowerCase() === "table") {
- return tinymce.dom.Event.cancel(e);
- }
- }
- }
- })
- }
-
- function addNewLinesBeforeBrInPre() {
- // IE8+ rendering mode does the right thing with BR in PRE
- if (getDocumentMode() > 7) {
- return;
- }
-
- // Enable display: none in area and add a specific class that hides all BR elements in PRE to
- // avoid the caret from getting stuck at the BR elements while pressing the right arrow key
- setEditorCommandState('RespectVisibilityInDesign', true);
- editor.contentStyles.push('.mceHideBrInPre pre br {display: none}');
- dom.addClass(editor.getBody(), 'mceHideBrInPre');
-
- // Adds a \n before all BR elements in PRE to get them visual
- parser.addNodeFilter('pre', function(nodes, name) {
- var i = nodes.length, brNodes, j, brElm, sibling;
-
- while (i--) {
- brNodes = nodes[i].getAll('br');
- j = brNodes.length;
- while (j--) {
- brElm = brNodes[j];
-
- // Add \n before BR in PRE elements on older IE:s so the new lines get rendered
- sibling = brElm.prev;
- if (sibling && sibling.type === 3 && sibling.value.charAt(sibling.value - 1) != '\n') {
- sibling.value += '\n';
- } else {
- brElm.parent.insert(new tinymce.html.Node('#text', 3), brElm, true).value = '\n';
- }
- }
- }
- });
-
- // Removes any \n before BR elements in PRE since other browsers and in contentEditable=false mode they will be visible
- serializer.addNodeFilter('pre', function(nodes, name) {
- var i = nodes.length, brNodes, j, brElm, sibling;
-
- while (i--) {
- brNodes = nodes[i].getAll('br');
- j = brNodes.length;
- while (j--) {
- brElm = brNodes[j];
- sibling = brElm.prev;
- if (sibling && sibling.type == 3) {
- sibling.value = sibling.value.replace(/\r?\n$/, '');
- }
- }
- }
- });
- }
-
- function removePreSerializedStylesWhenSelectingControls() {
- dom.bind(editor.getBody(), 'mouseup', function(e) {
- var value, node = selection.getNode();
-
- // Moved styles to attributes on IMG eements
- if (node.nodeName == 'IMG') {
- // Convert style width to width attribute
- if (value = dom.getStyle(node, 'width')) {
- dom.setAttrib(node, 'width', value.replace(/[^0-9%]+/g, ''));
- dom.setStyle(node, 'width', '');
- }
-
- // Convert style height to height attribute
- if (value = dom.getStyle(node, 'height')) {
- dom.setAttrib(node, 'height', value.replace(/[^0-9%]+/g, ''));
- dom.setStyle(node, 'height', '');
- }
- }
- });
- }
-
- function keepInlineElementOnDeleteBackspace() {
- editor.onKeyDown.add(function(editor, e) {
- var isDelete, rng, container, offset, brElm, sibling, collapsed;
-
- isDelete = e.keyCode == DELETE;
- if (!isDefaultPrevented(e) && (isDelete || e.keyCode == BACKSPACE) && !VK.modifierPressed(e)) {
- rng = selection.getRng();
- container = rng.startContainer;
- offset = rng.startOffset;
- collapsed = rng.collapsed;
-
- // Override delete if the start container is a text node and is at the beginning of text or
- // just before/after the last character to be deleted in collapsed mode
- if (container.nodeType == 3 && container.nodeValue.length > 0 && ((offset === 0 && !collapsed) || (collapsed && offset === (isDelete ? 0 : 1)))) {
- // Edge case when deleting <p><b><img> |x</b></p>
- sibling = container.previousSibling;
- if (sibling && sibling.nodeName == "IMG") {
- return;
- }
-
- nonEmptyElements = editor.schema.getNonEmptyElements();
-
- // Prevent default logic since it's broken
- e.preventDefault();
-
- // Insert a BR before the text node this will prevent the containing element from being deleted/converted
- brElm = dom.create('br', {id: '__tmp'});
- container.parentNode.insertBefore(brElm, container);
-
- // Do the browser delete
- editor.getDoc().execCommand(isDelete ? 'ForwardDelete' : 'Delete', false, null);
-
- // Check if the previous sibling is empty after deleting for example: <p><b></b>|</p>
- container = selection.getRng().startContainer;
- sibling = container.previousSibling;
- if (sibling && sibling.nodeType == 1 && !dom.isBlock(sibling) && dom.isEmpty(sibling) && !nonEmptyElements[sibling.nodeName.toLowerCase()]) {
- dom.remove(sibling);
- }
-
- // Remove the temp element we inserted
- dom.remove('__tmp');
- }
- }
- });
- }
-
- function removeBlockQuoteOnBackSpace() {
- // Add block quote deletion handler
- editor.onKeyDown.add(function(editor, e) {
- var rng, container, offset, root, parent;
-
- if (isDefaultPrevented(e) || e.keyCode != VK.BACKSPACE) {
- return;
- }
-
- rng = selection.getRng();
- container = rng.startContainer;
- offset = rng.startOffset;
- root = dom.getRoot();
- parent = container;
-
- if (!rng.collapsed || offset !== 0) {
- return;
- }
-
- while (parent && parent.parentNode && parent.parentNode.firstChild == parent && parent.parentNode != root) {
- parent = parent.parentNode;
- }
-
- // Is the cursor at the beginning of a blockquote?
- if (parent.tagName === 'BLOCKQUOTE') {
- // Remove the blockquote
- editor.formatter.toggle('blockquote', null, parent);
-
- // Move the caret to the beginning of container
- rng = dom.createRng();
- rng.setStart(container, 0);
- rng.setEnd(container, 0);
- selection.setRng(rng);
- }
- });
- };
-
- function setGeckoEditingOptions() {
- function setOpts() {
- editor._refreshContentEditable();
-
- setEditorCommandState("StyleWithCSS", false);
- setEditorCommandState("enableInlineTableEditing", false);
-
- if (!settings.object_resizing) {
- setEditorCommandState("enableObjectResizing", false);
- }
- };
-
- if (!settings.readonly) {
- editor.onBeforeExecCommand.add(setOpts);
- editor.onMouseDown.add(setOpts);
- }
- };
-
- function addBrAfterLastLinks() {
- function fixLinks(editor, o) {
- each(dom.select('a'), function(node) {
- var parentNode = node.parentNode, root = dom.getRoot();
-
- if (parentNode.lastChild === node) {
- while (parentNode && !dom.isBlock(parentNode)) {
- if (parentNode.parentNode.lastChild !== parentNode || parentNode === root) {
- return;
- }
-
- parentNode = parentNode.parentNode;
- }
-
- dom.add(parentNode, 'br', {'data-mce-bogus' : 1});
- }
- });
- };
-
- editor.onExecCommand.add(function(editor, cmd) {
- if (cmd === 'CreateLink') {
- fixLinks(editor);
- }
- });
-
- editor.onSetContent.add(selection.onSetContent.add(fixLinks));
- };
-
- function setDefaultBlockType() {
- if (settings.forced_root_block) {
- editor.onInit.add(function() {
- setEditorCommandState('DefaultParagraphSeparator', settings.forced_root_block);
- });
- }
- }
-
- function removeGhostSelection() {
- function repaint(sender, args) {
- if (!sender || !args.initial) {
- editor.execCommand('mceRepaint');
- }
- };
-
- editor.onUndo.add(repaint);
- editor.onRedo.add(repaint);
- editor.onSetContent.add(repaint);
- };
-
- function deleteControlItemOnBackSpace() {
- editor.onKeyDown.add(function(editor, e) {
- var rng;
-
- if (!isDefaultPrevented(e) && e.keyCode == BACKSPACE) {
- rng = editor.getDoc().selection.createRange();
- if (rng && rng.item) {
- e.preventDefault();
- editor.undoManager.beforeChange();
- dom.remove(rng.item(0));
- editor.undoManager.add();
- }
- }
- });
- };
-
- function renderEmptyBlocksFix() {
- var emptyBlocksCSS;
-
- // IE10+
- if (getDocumentMode() >= 10) {
- emptyBlocksCSS = '';
- each('p div h1 h2 h3 h4 h5 h6'.split(' '), function(name, i) {
- emptyBlocksCSS += (i > 0 ? ',' : '') + name + ':empty';
- });
-
- editor.contentStyles.push(emptyBlocksCSS + '{padding-right: 1px !important}');
- }
- };
-
- function fakeImageResize() {
- var selectedElmX, selectedElmY, selectedElm, selectedElmGhost, selectedHandle, startX, startY, startW, startH, ratio,
- resizeHandles, width, height, rootDocument = document, editableDoc = editor.getDoc();
-
- if (!settings.object_resizing || settings.webkit_fake_resize === false) {
- return;
- }
-
- // Try disabling object resizing if WebKit implements resizing in the future
- setEditorCommandState("enableObjectResizing", false);
-
- // Details about each resize handle how to scale etc
- resizeHandles = {
- // Name: x multiplier, y multiplier, delta size x, delta size y
- n: [.5, 0, 0, -1],
- e: [1, .5, 1, 0],
- s: [.5, 1, 0, 1],
- w: [0, .5, -1, 0],
- nw: [0, 0, -1, -1],
- ne: [1, 0, 1, -1],
- se: [1, 1, 1, 1],
- sw : [0, 1, -1, 1]
- };
-
- function resizeElement(e) {
- var deltaX, deltaY;
-
- // Calc new width/height
- deltaX = e.screenX - startX;
- deltaY = e.screenY - startY;
-
- // Calc new size
- width = deltaX * selectedHandle[2] + startW;
- height = deltaY * selectedHandle[3] + startH;
-
- // Never scale down lower than 5 pixels
- width = width < 5 ? 5 : width;
- height = height < 5 ? 5 : height;
-
- // Constrain proportions when modifier key is pressed or if the nw, ne, sw, se corners are moved on an image
- if (VK.modifierPressed(e) || (selectedElm.nodeName == "IMG" && selectedHandle[2] * selectedHandle[3] !== 0)) {
- width = Math.round(height / ratio);
- height = Math.round(width * ratio);
- }
-
- // Update ghost size
- dom.setStyles(selectedElmGhost, {
- width: width,
- height: height
- });
-
- // Update ghost X position if needed
- if (selectedHandle[2] < 0 && selectedElmGhost.clientWidth <= width) {
- dom.setStyle(selectedElmGhost, 'left', selectedElmX + (startW - width));
- }
-
- // Update ghost Y position if needed
- if (selectedHandle[3] < 0 && selectedElmGhost.clientHeight <= height) {
- dom.setStyle(selectedElmGhost, 'top', selectedElmY + (startH - height));
- }
- }
-
- function endResize() {
- function setSizeProp(name, value) {
- if (value) {
- // Resize by using style or attribute
- if (selectedElm.style[name] || !editor.schema.isValid(selectedElm.nodeName.toLowerCase(), name)) {
- dom.setStyle(selectedElm, name, value);
- } else {
- dom.setAttrib(selectedElm, name, value);
- }
- }
- }
-
- // Set width/height properties
- setSizeProp('width', width);
- setSizeProp('height', height);
-
- dom.unbind(editableDoc, 'mousemove', resizeElement);
- dom.unbind(editableDoc, 'mouseup', endResize);
-
- if (rootDocument != editableDoc) {
- dom.unbind(rootDocument, 'mousemove', resizeElement);
- dom.unbind(rootDocument, 'mouseup', endResize);
- }
-
- // Remove ghost and update resize handle positions
- dom.remove(selectedElmGhost);
- showResizeRect(selectedElm);
- }
-
- function showResizeRect(targetElm) {
- var position, targetWidth, targetHeight;
-
- hideResizeRect();
-
- // Get position and size of target
- position = dom.getPos(targetElm);
- selectedElmX = position.x;
- selectedElmY = position.y;
- targetWidth = targetElm.offsetWidth;
- targetHeight = targetElm.offsetHeight;
-
- // Reset width/height if user selects a new image/table
- if (selectedElm != targetElm) {
- selectedElm = targetElm;
- width = height = 0;
- }
-
- each(resizeHandles, function(handle, name) {
- var handleElm;
-
- // Get existing or render resize handle
- handleElm = dom.get('mceResizeHandle' + name);
- if (!handleElm) {
- handleElm = dom.add(editableDoc.documentElement, 'div', {
- id: 'mceResizeHandle' + name,
- 'class': 'mceResizeHandle',
- style: 'cursor:' + name + '-resize; margin:0; padding:0'
- });
-
- dom.bind(handleElm, 'mousedown', function(e) {
- e.preventDefault();
-
- endResize();
-
- startX = e.screenX;
- startY = e.screenY;
- startW = selectedElm.clientWidth;
- startH = selectedElm.clientHeight;
- ratio = startH / startW;
- selectedHandle = handle;
-
- selectedElmGhost = selectedElm.cloneNode(true);
- dom.addClass(selectedElmGhost, 'mceClonedResizable');
- dom.setStyles(selectedElmGhost, {
- left: selectedElmX,
- top: selectedElmY,
- margin: 0
- });
-
- editableDoc.documentElement.appendChild(selectedElmGhost);
-
- dom.bind(editableDoc, 'mousemove', resizeElement);
- dom.bind(editableDoc, 'mouseup', endResize);
-
- if (rootDocument != editableDoc) {
- dom.bind(rootDocument, 'mousemove', resizeElement);
- dom.bind(rootDocument, 'mouseup', endResize);
- }
- });
- } else {
- dom.show(handleElm);
- }
-
- // Position element
- dom.setStyles(handleElm, {
- left: (targetWidth * handle[0] + selectedElmX) - (handleElm.offsetWidth / 2),
- top: (targetHeight * handle[1] + selectedElmY) - (handleElm.offsetHeight / 2)
- });
- });
-
- // Only add resize rectangle on WebKit and only on images
- if (!tinymce.isOpera && selectedElm.nodeName == "IMG") {
- selectedElm.setAttribute('data-mce-selected', '1');
- }
- }
-
- function hideResizeRect() {
- if (selectedElm) {
- selectedElm.removeAttribute('data-mce-selected');
- }
-
- for (var name in resizeHandles) {
- dom.hide('mceResizeHandle' + name);
- }
- }
-
- // Add CSS for resize handles, cloned element and selected
- editor.contentStyles.push(
- '.mceResizeHandle {' +
- 'position: absolute;' +
- 'border: 1px solid black;' +
- 'background: #FFF;' +
- 'width: 5px;' +
- 'height: 5px;' +
- 'z-index: 10000' +
- '}' +
- '.mceResizeHandle:hover {' +
- 'background: #000' +
- '}' +
- 'img[data-mce-selected] {' +
- 'outline: 1px solid black' +
- '}' +
- 'img.mceClonedResizable, table.mceClonedResizable {' +
- 'position: absolute;' +
- 'outline: 1px dashed black;' +
- 'opacity: .5;' +
- 'z-index: 10000' +
- '}'
- );
-
- function updateResizeRect() {
- var controlElm = dom.getParent(selection.getNode(), 'table,img');
-
- // Remove data-mce-selected from all elements since they might have been copied using Ctrl+c/v
- each(dom.select('img[data-mce-selected]'), function(img) {
- img.removeAttribute('data-mce-selected');
- });
-
- if (controlElm) {
- showResizeRect(controlElm);
- } else {
- hideResizeRect();
- }
- }
-
- // Show/hide resize rect when image is selected
- editor.onNodeChange.add(updateResizeRect);
-
- // Fixes WebKit quirk where it returns IMG on getNode if caret is after last image in container
- dom.bind(editableDoc, 'selectionchange', updateResizeRect);
-
- // Remove the internal attribute when serializing the DOM
- editor.serializer.addAttributeFilter('data-mce-selected', function(nodes, name) {
- var i = nodes.length;
-
- while (i--) {
- nodes[i].attr(name, null);
- }
- });
- }
-
- function keepNoScriptContents() {
- if (getDocumentMode() < 9) {
- parser.addNodeFilter('noscript', function(nodes) {
- var i = nodes.length, node, textNode;
-
- while (i--) {
- node = nodes[i];
- textNode = node.firstChild;
-
- if (textNode) {
- node.attr('data-mce-innertext', textNode.value);
- }
- }
- });
-
- serializer.addNodeFilter('noscript', function(nodes) {
- var i = nodes.length, node, textNode, value;
-
- while (i--) {
- node = nodes[i];
- textNode = nodes[i].firstChild;
-
- if (textNode) {
- textNode.value = tinymce.html.Entities.decode(textNode.value);
- } else {
- // Old IE can't retain noscript value so an attribute is used to store it
- value = node.attributes.map['data-mce-innertext'];
- if (value) {
- node.attr('data-mce-innertext', null);
- textNode = new tinymce.html.Node('#text', 3);
- textNode.value = value;
- textNode.raw = true;
- node.append(textNode);
- }
- }
- }
- });
- }
- }
-
- function bodyHeight() {
- editor.contentStyles.push('body {min-height: 100px}');
- editor.onClick.add(function(ed, e) {
- if (e.target.nodeName == 'HTML') {
- editor.execCommand('SelectAll');
- editor.selection.collapse(true);
- editor.nodeChanged();
- }
- });
- }
-
- // All browsers
- disableBackspaceIntoATable();
- removeBlockQuoteOnBackSpace();
- emptyEditorWhenDeleting();
-
- // WebKit
- if (tinymce.isWebKit) {
- keepInlineElementOnDeleteBackspace();
- cleanupStylesWhenDeleting();
- inputMethodFocus();
- selectControlElements();
- setDefaultBlockType();
-
- // iOS
- if (tinymce.isIDevice) {
- selectionChangeNodeChanged();
- } else {
- fakeImageResize();
- selectAll();
- }
- }
-
- // IE
- if (tinymce.isIE && !tinymce.isIE11) {
- removeHrOnBackspace();
- ensureBodyHasRoleApplication();
- addNewLinesBeforeBrInPre();
- removePreSerializedStylesWhenSelectingControls();
- deleteControlItemOnBackSpace();
- renderEmptyBlocksFix();
- keepNoScriptContents();
- }
-
- // IE 11+
- if (tinymce.isIE11) {
- bodyHeight();
- }
-
- // Gecko
- if (tinymce.isGecko && !tinymce.isIE11) {
- removeHrOnBackspace();
- focusBody();
- removeStylesWhenDeletingAccrossBlockElements();
- setGeckoEditingOptions();
- addBrAfterLastLinks();
- removeGhostSelection();
- }
-
- // Opera
- if (tinymce.isOpera) {
- fakeImageResize();
- }
-};
-(function(tinymce) {
- var namedEntities, baseEntities, reverseEntities,
- attrsCharsRegExp = /[&<>\"\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
- textCharsRegExp = /[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
- rawCharsRegExp = /[<>&\"\']/g,
- entityRegExp = /&(#x|#)?([\w]+);/g,
- asciiMap = {
- 128 : "\u20AC", 130 : "\u201A", 131 : "\u0192", 132 : "\u201E", 133 : "\u2026", 134 : "\u2020",
- 135 : "\u2021", 136 : "\u02C6", 137 : "\u2030", 138 : "\u0160", 139 : "\u2039", 140 : "\u0152",
- 142 : "\u017D", 145 : "\u2018", 146 : "\u2019", 147 : "\u201C", 148 : "\u201D", 149 : "\u2022",
- 150 : "\u2013", 151 : "\u2014", 152 : "\u02DC", 153 : "\u2122", 154 : "\u0161", 155 : "\u203A",
- 156 : "\u0153", 158 : "\u017E", 159 : "\u0178"
- };
-
- // Raw entities
- baseEntities = {
- '\"' : '&quot;', // Needs to be escaped since the YUI compressor would otherwise break the code
- "'" : '&#39;',
- '<' : '&lt;',
- '>' : '&gt;',
- '&' : '&amp;'
- };
-
- // Reverse lookup table for raw entities
- reverseEntities = {
- '&lt;' : '<',
- '&gt;' : '>',
- '&amp;' : '&',
- '&quot;' : '"',
- '&apos;' : "'"
- };
-
- // Decodes text by using the browser
- function nativeDecode(text) {
- var elm;
-
- elm = document.createElement("div");
- elm.innerHTML = text;
-
- return elm.textContent || elm.innerText || text;
- };
-
- // Build a two way lookup table for the entities
- function buildEntitiesLookup(items, radix) {
- var i, chr, entity, lookup = {};
-
- if (items) {
- items = items.split(',');
- radix = radix || 10;
-
- // Build entities lookup table
- for (i = 0; i < items.length; i += 2) {
- chr = String.fromCharCode(parseInt(items[i], radix));
-
- // Only add non base entities
- if (!baseEntities[chr]) {
- entity = '&' + items[i + 1] + ';';
- lookup[chr] = entity;
- lookup[entity] = chr;
- }
- }
-
- return lookup;
- }
- };
-
- // Unpack entities lookup where the numbers are in radix 32 to reduce the size
- namedEntities = buildEntitiesLookup(
- '50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,' +
- '5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,' +
- '5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,' +
- '5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,' +
- '68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,' +
- '6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,' +
- '6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,' +
- '75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,' +
- '7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,' +
- '7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,' +
- 'sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,' +
- 'st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,' +
- 't9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,' +
- 'tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,' +
- 'u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,' +
- '81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,' +
- '8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,' +
- '8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,' +
- '8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,' +
- '8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,' +
- 'nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,' +
- 'rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,' +
- 'Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,' +
- '80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,' +
- '811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro', 32);
-
- tinymce.html = tinymce.html || {};
-
- tinymce.html.Entities = {
- encodeRaw : function(text, attr) {
- return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function(chr) {
- return baseEntities[chr] || chr;
- });
- },
-
- encodeAllRaw : function(text) {
- return ('' + text).replace(rawCharsRegExp, function(chr) {
- return baseEntities[chr] || chr;
- });
- },
-
- encodeNumeric : function(text, attr) {
- return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function(chr) {
- // Multi byte sequence convert it to a single entity
- if (chr.length > 1)
- return '&#' + (((chr.charCodeAt(0) - 0xD800) * 0x400) + (chr.charCodeAt(1) - 0xDC00) + 0x10000) + ';';
-
- return baseEntities[chr] || '&#' + chr.charCodeAt(0) + ';';
- });
- },
-
- encodeNamed : function(text, attr, entities) {
- entities = entities || namedEntities;
-
- return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function(chr) {
- return baseEntities[chr] || entities[chr] || chr;
- });
- },
-
- getEncodeFunc : function(name, entities) {
- var Entities = tinymce.html.Entities;
-
- entities = buildEntitiesLookup(entities) || namedEntities;
-
- function encodeNamedAndNumeric(text, attr) {
- return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function(chr) {
- return baseEntities[chr] || entities[chr] || '&#' + chr.charCodeAt(0) + ';' || chr;
- });
- };
-
- function encodeCustomNamed(text, attr) {
- return Entities.encodeNamed(text, attr, entities);
- };
-
- // Replace + with , to be compatible with previous TinyMCE versions
- name = tinymce.makeMap(name.replace(/\+/g, ','));
-
- // Named and numeric encoder
- if (name.named && name.numeric)
- return encodeNamedAndNumeric;
-
- // Named encoder
- if (name.named) {
- // Custom names
- if (entities)
- return encodeCustomNamed;
-
- return Entities.encodeNamed;
- }
-
- // Numeric
- if (name.numeric)
- return Entities.encodeNumeric;
-
- // Raw encoder
- return Entities.encodeRaw;
- },
-
- decode : function(text) {
- return text.replace(entityRegExp, function(all, numeric, value) {
- if (numeric) {
- value = parseInt(value, numeric.length === 2 ? 16 : 10);
-
- // Support upper UTF
- if (value > 0xFFFF) {
- value -= 0x10000;
-
- return String.fromCharCode(0xD800 + (value >> 10), 0xDC00 + (value & 0x3FF));
- } else
- return asciiMap[value] || String.fromCharCode(value);
- }
-
- return reverseEntities[all] || namedEntities[all] || nativeDecode(all);
- });
- }
- };
-})(tinymce);
-
-tinymce.html.Styles = function(settings, schema) {
- var rgbRegExp = /rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,
- urlOrStrRegExp = /(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,
- styleRegExp = /\s*([^:]+):\s*([^;]+);?/g,
- trimRightRegExp = /\s+$/,
- urlColorRegExp = /rgb/,
- undef, i, encodingLookup = {}, encodingItems;
-
- settings = settings || {};
-
- encodingItems = '\\" \\\' \\; \\: ; : \uFEFF'.split(' ');
- for (i = 0; i < encodingItems.length; i++) {
- encodingLookup[encodingItems[i]] = '\uFEFF' + i;
- encodingLookup['\uFEFF' + i] = encodingItems[i];
- }
-
- function toHex(match, r, g, b) {
- function hex(val) {
- val = parseInt(val).toString(16);
-
- return val.length > 1 ? val : '0' + val; // 0 -> 00
- };
-
- return '#' + hex(r) + hex(g) + hex(b);
- };
-
- return {
- toHex : function(color) {
- return color.replace(rgbRegExp, toHex);
- },
-
- parse : function(css) {
- var styles = {}, matches, name, value, isEncoded, urlConverter = settings.url_converter, urlConverterScope = settings.url_converter_scope || this;
-
- function compress(prefix, suffix) {
- var top, right, bottom, left;
-
- // IE 11 will produce a border-image: none when getting the style attribute from <p style="border: 1px solid red"></p>
- // So lets asume it shouldn't be there
- if (styles['border-image'] === 'none') {
- delete styles['border-image'];
- }
-
- // Get values and check it it needs compressing
- top = styles[prefix + '-top' + suffix];
- if (!top)
- return;
-
- right = styles[prefix + '-right' + suffix];
- if (top != right)
- return;
-
- bottom = styles[prefix + '-bottom' + suffix];
- if (right != bottom)
- return;
-
- left = styles[prefix + '-left' + suffix];
- if (bottom != left)
- return;
-
- // Compress
- styles[prefix + suffix] = left;
- delete styles[prefix + '-top' + suffix];
- delete styles[prefix + '-right' + suffix];
- delete styles[prefix + '-bottom' + suffix];
- delete styles[prefix + '-left' + suffix];
- };
-
- function canCompress(key) {
- var value = styles[key], i;
-
- if (!value || value.indexOf(' ') < 0)
- return;
-
- value = value.split(' ');
- i = value.length;
- while (i--) {
- if (value[i] !== value[0])
- return false;
- }
-
- styles[key] = value[0];
-
- return true;
- };
-
- function compress2(target, a, b, c) {
- if (!canCompress(a))
- return;
-
- if (!canCompress(b))
- return;
-
- if (!canCompress(c))
- return;
-
- // Compress
- styles[target] = styles[a] + ' ' + styles[b] + ' ' + styles[c];
- delete styles[a];
- delete styles[b];
- delete styles[c];
- };
-
- // Encodes the specified string by replacing all \" \' ; : with _<num>
- function encode(str) {
- isEncoded = true;
-
- return encodingLookup[str];
- };
-
- // Decodes the specified string by replacing all _<num> with it's original value \" \' etc
- // It will also decode the \" \' if keep_slashes is set to fale or omitted
- function decode(str, keep_slashes) {
- if (isEncoded) {
- str = str.replace(/\uFEFF[0-9]/g, function(str) {
- return encodingLookup[str];
- });
- }
-
- if (!keep_slashes)
- str = str.replace(/\\([\'\";:])/g, "$1");
-
- return str;
- };
-
- function processUrl(match, url, url2, url3, str, str2) {
- str = str || str2;
-
- if (str) {
- str = decode(str);
-
- // Force strings into single quote format
- return "'" + str.replace(/\'/g, "\\'") + "'";
- }
-
- url = decode(url || url2 || url3);
-
- // Convert the URL to relative/absolute depending on config
- if (urlConverter)
- url = urlConverter.call(urlConverterScope, url, 'style');
-
- // Output new URL format
- return "url('" + url.replace(/\'/g, "\\'") + "')";
- };
-
- if (css) {
- // Encode \" \' % and ; and : inside strings so they don't interfere with the style parsing
- css = css.replace(/\\[\"\';:\uFEFF]/g, encode).replace(/\"[^\"]+\"|\'[^\']+\'/g, function(str) {
- return str.replace(/[;:]/g, encode);
- });
-
- // Parse styles
- while (matches = styleRegExp.exec(css)) {
- name = matches[1].replace(trimRightRegExp, '').toLowerCase();
- value = matches[2].replace(trimRightRegExp, '');
-
- if (name && value.length > 0) {
- // Opera will produce 700 instead of bold in their style values
- if (name === 'font-weight' && value === '700')
- value = 'bold';
- else if (name === 'color' || name === 'background-color') // Lowercase colors like RED
- value = value.toLowerCase();
-
- // Convert RGB colors to HEX
- value = value.replace(rgbRegExp, toHex);
-
- // Convert URLs and force them into url('value') format
- value = value.replace(urlOrStrRegExp, processUrl);
- styles[name] = isEncoded ? decode(value, true) : value;
- }
-
- styleRegExp.lastIndex = matches.index + matches[0].length;
- }
-
- // Compress the styles to reduce it's size for example IE will expand styles
- compress("border", "");
- compress("border", "-width");
- compress("border", "-color");
- compress("border", "-style");
- compress("padding", "");
- compress("margin", "");
- compress2('border', 'border-width', 'border-style', 'border-color');
-
- // Remove pointless border, IE produces these
- if (styles.border === 'medium none')
- delete styles.border;
- }
-
- return styles;
- },
-
- serialize : function(styles, element_name) {
- var css = '', name, value;
-
- function serializeStyles(name) {
- var styleList, i, l, value;
-
- styleList = schema.styles[name];
- if (styleList) {
- for (i = 0, l = styleList.length; i < l; i++) {
- name = styleList[i];
- value = styles[name];
-
- if (value !== undef && value.length > 0)
- css += (css.length > 0 ? ' ' : '') + name + ': ' + value + ';';
- }
- }
- };
-
- // Serialize styles according to schema
- if (element_name && schema && schema.styles) {
- // Serialize global styles and element specific styles
- serializeStyles('*');
- serializeStyles(element_name);
- } else {
- // Output the styles in the order they are inside the object
- for (name in styles) {
- value = styles[name];
-
- if (value !== undef && value.length > 0)
- css += (css.length > 0 ? ' ' : '') + name + ': ' + value + ';';
- }
- }
-
- return css;
- }
- };
-};
-
-(function(tinymce) {
- var mapCache = {}, makeMap = tinymce.makeMap, each = tinymce.each;
-
- function split(str, delim) {
- return str.split(delim || ',');
- };
-
- function unpack(lookup, data) {
- var key, elements = {};
-
- function replace(value) {
- return value.replace(/[A-Z]+/g, function(key) {
- return replace(lookup[key]);
- });
- };
-
- // Unpack lookup
- for (key in lookup) {
- if (lookup.hasOwnProperty(key))
- lookup[key] = replace(lookup[key]);
- }
-
- // Unpack and parse data into object map
- replace(data).replace(/#/g, '#text').replace(/(\w+)\[([^\]]+)\]\[([^\]]*)\]/g, function(str, name, attributes, children) {
- attributes = split(attributes, '|');
-
- elements[name] = {
- attributes : makeMap(attributes),
- attributesOrder : attributes,
- children : makeMap(children, '|', {'#comment' : {}})
- }
- });
-
- return elements;
- };
-
- function getHTML5() {
- var html5 = mapCache.html5;
-
- if (!html5) {
- html5 = mapCache.html5 = unpack({
- A : 'id|accesskey|class|dir|draggable|item|hidden|itemprop|role|spellcheck|style|subject|title|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup',
- B : '#|a|abbr|area|audio|b|bdo|br|button|canvas|cite|code|command|datalist|del|dfn|em|embed|i|iframe|img|input|ins|kbd|keygen|label|link|map|mark|meta|' +
- 'meter|noscript|object|output|progress|q|ruby|samp|script|select|small|span|strong|sub|sup|svg|textarea|time|var|video|wbr',
- C : '#|a|abbr|area|address|article|aside|audio|b|bdo|blockquote|br|button|canvas|cite|code|command|datalist|del|details|dfn|dialog|div|dl|em|embed|fieldset|' +
- 'figure|footer|form|h1|h2|h3|h4|h5|h6|header|hgroup|hr|i|iframe|img|input|ins|kbd|keygen|label|link|map|mark|menu|meta|meter|nav|noscript|ol|object|output|' +
- 'p|pre|progress|q|ruby|samp|script|section|select|small|span|strong|style|sub|sup|svg|table|textarea|time|ul|var|video'
- }, 'html[A|manifest][body|head]' +
- 'head[A][base|command|link|meta|noscript|script|style|title]' +
- 'title[A][#]' +
- 'base[A|href|target][]' +
- 'link[A|href|rel|media|type|sizes][]' +
- 'meta[A|http-equiv|name|content|charset][]' +
- 'style[A|type|media|scoped][#]' +
- 'script[A|charset|type|src|defer|async][#]' +
- 'noscript[A][C]' +
- 'body[A][C]' +
- 'section[A][C]' +
- 'nav[A][C]' +
- 'article[A][C]' +
- 'aside[A][C]' +
- 'h1[A][B]' +
- 'h2[A][B]' +
- 'h3[A][B]' +
- 'h4[A][B]' +
- 'h5[A][B]' +
- 'h6[A][B]' +
- 'hgroup[A][h1|h2|h3|h4|h5|h6]' +
- 'header[A][C]' +
- 'footer[A][C]' +
- 'address[A][C]' +
- 'p[A][B]' +
- 'br[A][]' +
- 'pre[A][B]' +
- 'dialog[A][dd|dt]' +
- 'blockquote[A|cite][C]' +
- 'ol[A|start|reversed][li]' +
- 'ul[A][li]' +
- 'li[A|value][C]' +
- 'dl[A][dd|dt]' +
- 'dt[A][B]' +
- 'dd[A][C]' +
- 'a[A|href|target|ping|rel|media|type][B]' +
- 'em[A][B]' +
- 'strong[A][B]' +
- 'small[A][B]' +
- 'cite[A][B]' +
- 'q[A|cite][B]' +
- 'dfn[A][B]' +
- 'abbr[A][B]' +
- 'code[A][B]' +
- 'var[A][B]' +
- 'samp[A][B]' +
- 'kbd[A][B]' +
- 'sub[A][B]' +
- 'sup[A][B]' +
- 'i[A][B]' +
- 'b[A][B]' +
- 'mark[A][B]' +
- 'progress[A|value|max][B]' +
- 'meter[A|value|min|max|low|high|optimum][B]' +
- 'time[A|datetime][B]' +
- 'ruby[A][B|rt|rp]' +
- 'rt[A][B]' +
- 'rp[A][B]' +
- 'bdo[A][B]' +
- 'span[A][B]' +
- 'ins[A|cite|datetime][B]' +
- 'del[A|cite|datetime][B]' +
- 'figure[A][C|legend|figcaption]' +
- 'figcaption[A][C]' +
- 'img[A|alt|src|height|width|usemap|ismap][]' +
- 'iframe[A|name|src|height|width|sandbox|seamless][]' +
- 'embed[A|src|height|width|type][]' +
- 'object[A|data|type|height|width|usemap|name|form|classid][param]' +
- 'param[A|name|value][]' +
- 'details[A|open][C|legend]' +
- 'command[A|type|label|icon|disabled|checked|radiogroup][]' +
- 'menu[A|type|label][C|li]' +
- 'legend[A][C|B]' +
- 'div[A][C]' +
- 'source[A|src|type|media][]' +
- 'audio[A|src|autobuffer|autoplay|loop|controls][source]' +
- 'video[A|src|autobuffer|autoplay|loop|controls|width|height|poster][source]' +
- 'hr[A][]' +
- 'form[A|accept-charset|action|autocomplete|enctype|method|name|novalidate|target][C]' +
- 'fieldset[A|disabled|form|name][C|legend]' +
- 'label[A|form|for][B]' +
- 'input[A|type|accept|alt|autocomplete|autofocus|checked|disabled|form|formaction|formenctype|formmethod|formnovalidate|formtarget|height|list|max|maxlength|min|' +
- 'multiple|pattern|placeholder|readonly|required|size|src|step|width|files|value|name][]' +
- 'button[A|autofocus|disabled|form|formaction|formenctype|formmethod|formnovalidate|formtarget|name|value|type][B]' +
- 'select[A|autofocus|disabled|form|multiple|name|size][option|optgroup]' +
- 'datalist[A][B|option]' +
- 'optgroup[A|disabled|label][option]' +
- 'option[A|disabled|selected|label|value][]' +
- 'textarea[A|autofocus|disabled|form|maxlength|name|placeholder|readonly|required|rows|cols|wrap][]' +
- 'keygen[A|autofocus|challenge|disabled|form|keytype|name][]' +
- 'output[A|for|form|name][B]' +
- 'canvas[A|width|height][]' +
- 'map[A|name][B|C]' +
- 'area[A|shape|coords|href|alt|target|media|rel|ping|type][]' +
- 'mathml[A][]' +
- 'svg[A][]' +
- 'table[A|border][caption|colgroup|thead|tfoot|tbody|tr]' +
- 'caption[A][C]' +
- 'colgroup[A|span][col]' +
- 'col[A|span][]' +
- 'thead[A][tr]' +
- 'tfoot[A][tr]' +
- 'tbody[A][tr]' +
- 'tr[A][th|td]' +
- 'th[A|headers|rowspan|colspan|scope][B]' +
- 'td[A|headers|rowspan|colspan][C]' +
- 'wbr[A][]'
- );
- }
-
- return html5;
- };
-
- function getHTML4() {
- var html4 = mapCache.html4;
-
- if (!html4) {
- // This is the XHTML 1.0 transitional elements with it's attributes and children packed to reduce it's size
- html4 = mapCache.html4 = unpack({
- Z : 'H|K|N|O|P',
- Y : 'X|form|R|Q',
- ZG : 'E|span|width|align|char|charoff|valign',
- X : 'p|T|div|U|W|isindex|fieldset|table',
- ZF : 'E|align|char|charoff|valign',
- W : 'pre|hr|blockquote|address|center|noframes',
- ZE : 'abbr|axis|headers|scope|rowspan|colspan|align|char|charoff|valign|nowrap|bgcolor|width|height',
- ZD : '[E][S]',
- U : 'ul|ol|dl|menu|dir',
- ZC : 'p|Y|div|U|W|table|br|span|bdo|object|applet|img|map|K|N|Q',
- T : 'h1|h2|h3|h4|h5|h6',
- ZB : 'X|S|Q',
- S : 'R|P',
- ZA : 'a|G|J|M|O|P',
- R : 'a|H|K|N|O',
- Q : 'noscript|P',
- P : 'ins|del|script',
- O : 'input|select|textarea|label|button',
- N : 'M|L',
- M : 'em|strong|dfn|code|q|samp|kbd|var|cite|abbr|acronym',
- L : 'sub|sup',
- K : 'J|I',
- J : 'tt|i|b|u|s|strike',
- I : 'big|small|font|basefont',
- H : 'G|F',
- G : 'br|span|bdo',
- F : 'object|applet|img|map|iframe',
- E : 'A|B|C',
- D : 'accesskey|tabindex|onfocus|onblur',
- C : 'onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup',
- B : 'lang|xml:lang|dir',
- A : 'id|class|style|title'
- }, 'script[id|charset|type|language|src|defer|xml:space][]' +
- 'style[B|id|type|media|title|xml:space][]' +
- 'object[E|declare|classid|codebase|data|type|codetype|archive|standby|width|height|usemap|name|tabindex|align|border|hspace|vspace][#|param|Y]' +
- 'param[id|name|value|valuetype|type][]' +
- 'p[E|align][#|S]' +
- 'a[E|D|charset|type|name|href|hreflang|rel|rev|shape|coords|target][#|Z]' +
- 'br[A|clear][]' +
- 'span[E][#|S]' +
- 'bdo[A|C|B][#|S]' +
- 'applet[A|codebase|archive|code|object|alt|name|width|height|align|hspace|vspace][#|param|Y]' +
- 'h1[E|align][#|S]' +
- 'img[E|src|alt|name|longdesc|width|height|usemap|ismap|align|border|hspace|vspace][]' +
- 'map[B|C|A|name][X|form|Q|area]' +
- 'h2[E|align][#|S]' +
- 'iframe[A|longdesc|name|src|frameborder|marginwidth|marginheight|scrolling|align|width|height][#|Y]' +
- 'h3[E|align][#|S]' +
- 'tt[E][#|S]' +
- 'i[E][#|S]' +
- 'b[E][#|S]' +
- 'u[E][#|S]' +
- 's[E][#|S]' +
- 'strike[E][#|S]' +
- 'big[E][#|S]' +
- 'small[E][#|S]' +
- 'font[A|B|size|color|face][#|S]' +
- 'basefont[id|size|color|face][]' +
- 'em[E][#|S]' +
- 'strong[E][#|S]' +
- 'dfn[E][#|S]' +
- 'code[E][#|S]' +
- 'q[E|cite][#|S]' +
- 'samp[E][#|S]' +
- 'kbd[E][#|S]' +
- 'var[E][#|S]' +
- 'cite[E][#|S]' +
- 'abbr[E][#|S]' +
- 'acronym[E][#|S]' +
- 'sub[E][#|S]' +
- 'sup[E][#|S]' +
- 'input[E|D|type|name|value|checked|disabled|readonly|size|maxlength|src|alt|usemap|onselect|onchange|accept|align][]' +
- 'select[E|name|size|multiple|disabled|tabindex|onfocus|onblur|onchange][optgroup|option]' +
- 'optgroup[E|disabled|label][option]' +
- 'option[E|selected|disabled|label|value][]' +
- 'textarea[E|D|name|rows|cols|disabled|readonly|onselect|onchange][]' +
- 'label[E|for|accesskey|onfocus|onblur][#|S]' +
- 'button[E|D|name|value|type|disabled][#|p|T|div|U|W|table|G|object|applet|img|map|K|N|Q]' +
- 'h4[E|align][#|S]' +
- 'ins[E|cite|datetime][#|Y]' +
- 'h5[E|align][#|S]' +
- 'del[E|cite|datetime][#|Y]' +
- 'h6[E|align][#|S]' +
- 'div[E|align][#|Y]' +
- 'ul[E|type|compact][li]' +
- 'li[E|type|value][#|Y]' +
- 'ol[E|type|compact|start][li]' +
- 'dl[E|compact][dt|dd]' +
- 'dt[E][#|S]' +
- 'dd[E][#|Y]' +
- 'menu[E|compact][li]' +
- 'dir[E|compact][li]' +
- 'pre[E|width|xml:space][#|ZA]' +
- 'hr[E|align|noshade|size|width][]' +
- 'blockquote[E|cite][#|Y]' +
- 'address[E][#|S|p]' +
- 'center[E][#|Y]' +
- 'noframes[E][#|Y]' +
- 'isindex[A|B|prompt][]' +
- 'fieldset[E][#|legend|Y]' +
- 'legend[E|accesskey|align][#|S]' +
- 'table[E|summary|width|border|frame|rules|cellspacing|cellpadding|align|bgcolor][caption|col|colgroup|thead|tfoot|tbody|tr]' +
- 'caption[E|align][#|S]' +
- 'col[ZG][]' +
- 'colgroup[ZG][col]' +
- 'thead[ZF][tr]' +
- 'tr[ZF|bgcolor][th|td]' +
- 'th[E|ZE][#|Y]' +
- 'form[E|action|method|name|enctype|onsubmit|onreset|accept|accept-charset|target][#|X|R|Q]' +
- 'noscript[E][#|Y]' +
- 'td[E|ZE][#|Y]' +
- 'tfoot[ZF][tr]' +
- 'tbody[ZF][tr]' +
- 'area[E|D|shape|coords|href|nohref|alt|target][]' +
- 'base[id|href|target][]' +
- 'body[E|onload|onunload|background|bgcolor|text|link|vlink|alink][#|Y]'
- );
- }
-
- return html4;
- };
-
- tinymce.html.Schema = function(settings) {
- var self = this, elements = {}, children = {}, patternElements = [], validStyles, schemaItems;
- var whiteSpaceElementsMap, selfClosingElementsMap, shortEndedElementsMap, boolAttrMap, blockElementsMap, nonEmptyElementsMap, customElementsMap = {};
-
- // Creates an lookup table map object for the specified option or the default value
- function createLookupTable(option, default_value, extend) {
- var value = settings[option];
-
- if (!value) {
- // Get cached default map or make it if needed
- value = mapCache[option];
-
- if (!value) {
- value = makeMap(default_value, ' ', makeMap(default_value.toUpperCase(), ' '));
- value = tinymce.extend(value, extend);
-
- mapCache[option] = value;
- }
- } else {
- // Create custom map
- value = makeMap(value, ',', makeMap(value.toUpperCase(), ' '));
- }
-
- return value;
- };
-
- settings = settings || {};
- schemaItems = settings.schema == "html5" ? getHTML5() : getHTML4();
-
- // Allow all elements and attributes if verify_html is set to false
- if (settings.verify_html === false)
- settings.valid_elements = '*[*]';
-
- // Build styles list
- if (settings.valid_styles) {
- validStyles = {};
-
- // Convert styles into a rule list
- each(settings.valid_styles, function(value, key) {
- validStyles[key] = tinymce.explode(value);
- });
- }
-
- // Setup map objects
- whiteSpaceElementsMap = createLookupTable('whitespace_elements', 'pre script noscript style textarea');
- selfClosingElementsMap = createLookupTable('self_closing_elements', 'colgroup dd dt li option p td tfoot th thead tr');
- shortEndedElementsMap = createLookupTable('short_ended_elements', 'area base basefont br col frame hr img input isindex link meta param embed source wbr');
- boolAttrMap = createLookupTable('boolean_attributes', 'checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls');
- nonEmptyElementsMap = createLookupTable('non_empty_elements', 'td th iframe video audio object script', shortEndedElementsMap);
- textBlockElementsMap = createLookupTable('text_block_elements', 'h1 h2 h3 h4 h5 h6 p div address pre form ' +
- 'blockquote center dir fieldset header footer article section hgroup aside nav figure');
- blockElementsMap = createLookupTable('block_elements', 'hr table tbody thead tfoot ' +
- 'th tr td li ol ul caption dl dt dd noscript menu isindex samp option datalist select optgroup', textBlockElementsMap);
-
- // Converts a wildcard expression string to a regexp for example *a will become /.*a/.
- function patternToRegExp(str) {
- return new RegExp('^' + str.replace(/([?+*])/g, '.$1') + '$');
- };
-
- // Parses the specified valid_elements string and adds to the current rules
- // This function is a bit hard to read since it's heavily optimized for speed
- function addValidElements(valid_elements) {
- var ei, el, ai, al, yl, matches, element, attr, attrData, elementName, attrName, attrType, attributes, attributesOrder,
- prefix, outputName, globalAttributes, globalAttributesOrder, transElement, key, childKey, value,
- elementRuleRegExp = /^([#+\-])?([^\[\/]+)(?:\/([^\[]+))?(?:\[([^\]]+)\])?$/,
- attrRuleRegExp = /^([!\-])?(\w+::\w+|[^=:<]+)?(?:([=:<])(.*))?$/,
- hasPatternsRegExp = /[*?+]/;
-
- if (valid_elements) {
- // Split valid elements into an array with rules
- valid_elements = split(valid_elements);
-
- if (elements['@']) {
- globalAttributes = elements['@'].attributes;
- globalAttributesOrder = elements['@'].attributesOrder;
- }
-
- // Loop all rules
- for (ei = 0, el = valid_elements.length; ei < el; ei++) {
- // Parse element rule
- matches = elementRuleRegExp.exec(valid_elements[ei]);
- if (matches) {
- // Setup local names for matches
- prefix = matches[1];
- elementName = matches[2];
- outputName = matches[3];
- attrData = matches[4];
-
- // Create new attributes and attributesOrder
- attributes = {};
- attributesOrder = [];
-
- // Create the new element
- element = {
- attributes : attributes,
- attributesOrder : attributesOrder
- };
-
- // Padd empty elements prefix
- if (prefix === '#')
- element.paddEmpty = true;
-
- // Remove empty elements prefix
- if (prefix === '-')
- element.removeEmpty = true;
-
- // Copy attributes from global rule into current rule
- if (globalAttributes) {
- for (key in globalAttributes)
- attributes[key] = globalAttributes[key];
-
- attributesOrder.push.apply(attributesOrder, globalAttributesOrder);
- }
-
- // Attributes defined
- if (attrData) {
- attrData = split(attrData, '|');
- for (ai = 0, al = attrData.length; ai < al; ai++) {
- matches = attrRuleRegExp.exec(attrData[ai]);
- if (matches) {
- attr = {};
- attrType = matches[1];
- attrName = matches[2].replace(/::/g, ':');
- prefix = matches[3];
- value = matches[4];
-
- // Required
- if (attrType === '!') {
- element.attributesRequired = element.attributesRequired || [];
- element.attributesRequired.push(attrName);
- attr.required = true;
- }
-
- // Denied from global
- if (attrType === '-') {
- delete attributes[attrName];
- attributesOrder.splice(tinymce.inArray(attributesOrder, attrName), 1);
- continue;
- }
-
- // Default value
- if (prefix) {
- // Default value
- if (prefix === '=') {
- element.attributesDefault = element.attributesDefault || [];
- element.attributesDefault.push({name: attrName, value: value});
- attr.defaultValue = value;
- }
-
- // Forced value
- if (prefix === ':') {
- element.attributesForced = element.attributesForced || [];
- element.attributesForced.push({name: attrName, value: value});
- attr.forcedValue = value;
- }
-
- // Required values
- if (prefix === '<')
- attr.validValues = makeMap(value, '?');
- }
-
- // Check for attribute patterns
- if (hasPatternsRegExp.test(attrName)) {
- element.attributePatterns = element.attributePatterns || [];
- attr.pattern = patternToRegExp(attrName);
- element.attributePatterns.push(attr);
- } else {
- // Add attribute to order list if it doesn't already exist
- if (!attributes[attrName])
- attributesOrder.push(attrName);
-
- attributes[attrName] = attr;
- }
- }
- }
- }
-
- // Global rule, store away these for later usage
- if (!globalAttributes && elementName == '@') {
- globalAttributes = attributes;
- globalAttributesOrder = attributesOrder;
- }
-
- // Handle substitute elements such as b/strong
- if (outputName) {
- element.outputName = elementName;
- elements[outputName] = element;
- }
-
- // Add pattern or exact element
- if (hasPatternsRegExp.test(elementName)) {
- element.pattern = patternToRegExp(elementName);
- patternElements.push(element);
- } else
- elements[elementName] = element;
- }
- }
- }
- };
-
- function setValidElements(valid_elements) {
- elements = {};
- patternElements = [];
-
- addValidElements(valid_elements);
-
- each(schemaItems, function(element, name) {
- children[name] = element.children;
- });
- };
-
- // Adds custom non HTML elements to the schema
- function addCustomElements(custom_elements) {
- var customElementRegExp = /^(~)?(.+)$/;
-
- if (custom_elements) {
- each(split(custom_elements), function(rule) {
- var matches = customElementRegExp.exec(rule),
- inline = matches[1] === '~',
- cloneName = inline ? 'span' : 'div',
- name = matches[2];
-
- children[name] = children[cloneName];
- customElementsMap[name] = cloneName;
-
- // If it's not marked as inline then add it to valid block elements
- if (!inline) {
- blockElementsMap[name.toUpperCase()] = {};
- blockElementsMap[name] = {};
- }
-
- // Add elements clone if needed
- if (!elements[name]) {
- elements[name] = elements[cloneName];
- }
-
- // Add custom elements at span/div positions
- each(children, function(element, child) {
- if (element[cloneName])
- element[name] = element[cloneName];
- });
- });
- }
- };
-
- // Adds valid children to the schema object
- function addValidChildren(valid_children) {
- var childRuleRegExp = /^([+\-]?)(\w+)\[([^\]]+)\]$/;
-
- if (valid_children) {
- each(split(valid_children), function(rule) {
- var matches = childRuleRegExp.exec(rule), parent, prefix;
-
- if (matches) {
- prefix = matches[1];
-
- // Add/remove items from default
- if (prefix)
- parent = children[matches[2]];
- else
- parent = children[matches[2]] = {'#comment' : {}};
-
- parent = children[matches[2]];
-
- each(split(matches[3], '|'), function(child) {
- if (prefix === '-')
- delete parent[child];
- else
- parent[child] = {};
- });
- }
- });
- }
- };
-
- function getElementRule(name) {
- var element = elements[name], i;
-
- // Exact match found
- if (element)
- return element;
-
- // No exact match then try the patterns
- i = patternElements.length;
- while (i--) {
- element = patternElements[i];
-
- if (element.pattern.test(name))
- return element;
- }
- };
-
- if (!settings.valid_elements) {
- // No valid elements defined then clone the elements from the schema spec
- each(schemaItems, function(element, name) {
- elements[name] = {
- attributes : element.attributes,
- attributesOrder : element.attributesOrder
- };
-
- children[name] = element.children;
- });
-
- // Switch these on HTML4
- if (settings.schema != "html5") {
- each(split('strong/b,em/i'), function(item) {
- item = split(item, '/');
- elements[item[1]].outputName = item[0];
- });
- }
-
- // Add default alt attribute for images
- elements.img.attributesDefault = [{name: 'alt', value: ''}];
-
- // Remove these if they are empty by default
- each(split('ol,ul,sub,sup,blockquote,span,font,a,table,tbody,tr,strong,em,b,i'), function(name) {
- if (elements[name]) {
- elements[name].removeEmpty = true;
- }
- });
-
- // Padd these by default
- each(split('p,h1,h2,h3,h4,h5,h6,th,td,pre,div,address,caption'), function(name) {
- elements[name].paddEmpty = true;
- });
- } else
- setValidElements(settings.valid_elements);
-
- addCustomElements(settings.custom_elements);
- addValidChildren(settings.valid_children);
- addValidElements(settings.extended_valid_elements);
-
- // Todo: Remove this when we fix list handling to be valid
- addValidChildren('+ol[ul|ol],+ul[ul|ol]');
-
- // Delete invalid elements
- if (settings.invalid_elements) {
- tinymce.each(tinymce.explode(settings.invalid_elements), function(item) {
- if (elements[item])
- delete elements[item];
- });
- }
-
- // If the user didn't allow span only allow internal spans
- if (!getElementRule('span'))
- addValidElements('span[!data-mce-type|*]');
-
- self.children = children;
-
- self.styles = validStyles;
-
- self.getBoolAttrs = function() {
- return boolAttrMap;
- };
-
- self.getBlockElements = function() {
- return blockElementsMap;
- };
-
- self.getTextBlockElements = function() {
- return textBlockElementsMap;
- };
-
- self.getShortEndedElements = function() {
- return shortEndedElementsMap;
- };
-
- self.getSelfClosingElements = function() {
- return selfClosingElementsMap;
- };
-
- self.getNonEmptyElements = function() {
- return nonEmptyElementsMap;
- };
-
- self.getWhiteSpaceElements = function() {
- return whiteSpaceElementsMap;
- };
-
- self.isValidChild = function(name, child) {
- var parent = children[name];
-
- return !!(parent && parent[child]);
- };
-
- self.isValid = function(name, attr) {
- var attrPatterns, i, rule = getElementRule(name);
-
- // Check if it's a valid element
- if (rule) {
- if (attr) {
- // Check if attribute name exists
- if (rule.attributes[attr]) {
- return true;
- }
-
- // Check if attribute matches a regexp pattern
- attrPatterns = rule.attributePatterns;
- if (attrPatterns) {
- i = attrPatterns.length;
- while (i--) {
- if (attrPatterns[i].pattern.test(name)) {
- return true;
- }
- }
- }
- } else {
- return true;
- }
- }
-
- // No match
- return false;
- };
-
- self.getElementRule = getElementRule;
-
- self.getCustomElements = function() {
- return customElementsMap;
- };
-
- self.addValidElements = addValidElements;
-
- self.setValidElements = setValidElements;
-
- self.addCustomElements = addCustomElements;
-
- self.addValidChildren = addValidChildren;
-
- self.elements = elements;
- };
-})(tinymce);
-
-(function(tinymce) {
- tinymce.html.SaxParser = function(settings, schema) {
- var self = this, noop = function() {};
-
- settings = settings || {};
- self.schema = schema = schema || new tinymce.html.Schema();
-
- if (settings.fix_self_closing !== false)
- settings.fix_self_closing = true;
-
- // Add handler functions from settings and setup default handlers
- tinymce.each('comment cdata text start end pi doctype'.split(' '), function(name) {
- if (name)
- self[name] = settings[name] || noop;
- });
-
- self.parse = function(html) {
- var self = this, matches, index = 0, value, endRegExp, stack = [], attrList, i, text, name, isInternalElement, removeInternalElements,
- shortEndedElements, fillAttrsMap, isShortEnded, validate, elementRule, isValidElement, attr, attribsValue, invalidPrefixRegExp,
- validAttributesMap, validAttributePatterns, attributesRequired, attributesDefault, attributesForced, selfClosing,
- tokenRegExp, attrRegExp, specialElements, attrValue, idCount = 0, decode = tinymce.html.Entities.decode, fixSelfClosing, isIE;
-
- function processEndTag(name) {
- var pos, i;
-
- // Find position of parent of the same type
- pos = stack.length;
- while (pos--) {
- if (stack[pos].name === name)
- break;
- }
-
- // Found parent
- if (pos >= 0) {
- // Close all the open elements
- for (i = stack.length - 1; i >= pos; i--) {
- name = stack[i];
-
- if (name.valid)
- self.end(name.name);
- }
-
- // Remove the open elements from the stack
- stack.length = pos;
- }
- };
-
- function parseAttribute(match, name, value, val2, val3) {
- var attrRule, i;
-
- name = name.toLowerCase();
- value = name in fillAttrsMap ? name : decode(value || val2 || val3 || ''); // Handle boolean attribute than value attribute
-
- // Validate name and value
- if (validate && !isInternalElement && name.indexOf('data-') !== 0) {
- attrRule = validAttributesMap[name];
-
- // Find rule by pattern matching
- if (!attrRule && validAttributePatterns) {
- i = validAttributePatterns.length;
- while (i--) {
- attrRule = validAttributePatterns[i];
- if (attrRule.pattern.test(name))
- break;
- }
-
- // No rule matched
- if (i === -1)
- attrRule = null;
- }
-
- // No attribute rule found
- if (!attrRule)
- return;
-
- // Validate value
- if (attrRule.validValues && !(value in attrRule.validValues))
- return;
- }
-
- // Add attribute to list and map
- attrList.map[name] = value;
- attrList.push({
- name: name,
- value: value
- });
- };
-
- // Precompile RegExps and map objects
- tokenRegExp = new RegExp('<(?:' +
- '(?:!--([\\w\\W]*?)-->)|' + // Comment
- '(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|' + // CDATA
- '(?:!DOCTYPE([\\w\\W]*?)>)|' + // DOCTYPE
- '(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|' + // PI
- '(?:\\/([^>]+)>)|' + // End element
- '(?:([A-Za-z0-9\\-\\:\\.]+)((?:\\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\\/|\\s+)>)' + // Start element
- ')', 'g');
-
- attrRegExp = /([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g;
- specialElements = {
- 'script' : /<\/script[^>]*>/gi,
- 'style' : /<\/style[^>]*>/gi,
- 'noscript' : /<\/noscript[^>]*>/gi
- };
-
- // Setup lookup tables for empty elements and boolean attributes
- shortEndedElements = schema.getShortEndedElements();
- selfClosing = settings.self_closing_elements || schema.getSelfClosingElements();
- fillAttrsMap = schema.getBoolAttrs();
- validate = settings.validate;
- removeInternalElements = settings.remove_internals;
- fixSelfClosing = settings.fix_self_closing;
- isIE = tinymce.isIE;
- invalidPrefixRegExp = /^:/;
-
- while (matches = tokenRegExp.exec(html)) {
- // Text
- if (index < matches.index)
- self.text(decode(html.substr(index, matches.index - index)));
-
- if (value = matches[6]) { // End element
- value = value.toLowerCase();
-
- // IE will add a ":" in front of elements it doesn't understand like custom elements or HTML5 elements
- if (isIE && invalidPrefixRegExp.test(value))
- value = value.substr(1);
-
- processEndTag(value);
- } else if (value = matches[7]) { // Start element
- value = value.toLowerCase();
-
- // IE will add a ":" in front of elements it doesn't understand like custom elements or HTML5 elements
- if (isIE && invalidPrefixRegExp.test(value))
- value = value.substr(1);
-
- isShortEnded = value in shortEndedElements;
-
- // Is self closing tag for example an <li> after an open <li>
- if (fixSelfClosing && selfClosing[value] && stack.length > 0 && stack[stack.length - 1].name === value)
- processEndTag(value);
-
- // Validate element
- if (!validate || (elementRule = schema.getElementRule(value))) {
- isValidElement = true;
-
- // Grab attributes map and patters when validation is enabled
- if (validate) {
- validAttributesMap = elementRule.attributes;
- validAttributePatterns = elementRule.attributePatterns;
- }
-
- // Parse attributes
- if (attribsValue = matches[8]) {
- isInternalElement = attribsValue.indexOf('data-mce-type') !== -1; // Check if the element is an internal element
-
- // If the element has internal attributes then remove it if we are told to do so
- if (isInternalElement && removeInternalElements)
- isValidElement = false;
-
- attrList = [];
- attrList.map = {};
-
- attribsValue.replace(attrRegExp, parseAttribute);
- } else {
- attrList = [];
- attrList.map = {};
- }
-
- // Process attributes if validation is enabled
- if (validate && !isInternalElement) {
- attributesRequired = elementRule.attributesRequired;
- attributesDefault = elementRule.attributesDefault;
- attributesForced = elementRule.attributesForced;
-
- // Handle forced attributes
- if (attributesForced) {
- i = attributesForced.length;
- while (i--) {
- attr = attributesForced[i];
- name = attr.name;
- attrValue = attr.value;
-
- if (attrValue === '{$uid}')
- attrValue = 'mce_' + idCount++;
-
- attrList.map[name] = attrValue;
- attrList.push({name: name, value: attrValue});
- }
- }
-
- // Handle default attributes
- if (attributesDefault) {
- i = attributesDefault.length;
- while (i--) {
- attr = attributesDefault[i];
- name = attr.name;
-
- if (!(name in attrList.map)) {
- attrValue = attr.value;
-
- if (attrValue === '{$uid}')
- attrValue = 'mce_' + idCount++;
-
- attrList.map[name] = attrValue;
- attrList.push({name: name, value: attrValue});
- }
- }
- }
-
- // Handle required attributes
- if (attributesRequired) {
- i = attributesRequired.length;
- while (i--) {
- if (attributesRequired[i] in attrList.map)
- break;
- }
-
- // None of the required attributes where found
- if (i === -1)
- isValidElement = false;
- }
-
- // Invalidate element if it's marked as bogus
- if (attrList.map['data-mce-bogus'])
- isValidElement = false;
- }
-
- if (isValidElement)
- self.start(value, attrList, isShortEnded);
- } else
- isValidElement = false;
-
- // Treat script, noscript and style a bit different since they may include code that looks like elements
- if (endRegExp = specialElements[value]) {
- endRegExp.lastIndex = index = matches.index + matches[0].length;
-
- if (matches = endRegExp.exec(html)) {
- if (isValidElement)
- text = html.substr(index, matches.index - index);
-
- index = matches.index + matches[0].length;
- } else {
- text = html.substr(index);
- index = html.length;
- }
-
- if (isValidElement && text.length > 0)
- self.text(text, true);
-
- if (isValidElement)
- self.end(value);
-
- tokenRegExp.lastIndex = index;
- continue;
- }
-
- // Push value on to stack
- if (!isShortEnded) {
- if (!attribsValue || attribsValue.indexOf('/') != attribsValue.length - 1)
- stack.push({name: value, valid: isValidElement});
- else if (isValidElement)
- self.end(value);
- }
- } else if (value = matches[1]) { // Comment
- self.comment(value);
- } else if (value = matches[2]) { // CDATA
- self.cdata(value);
- } else if (value = matches[3]) { // DOCTYPE
- self.doctype(value);
- } else if (value = matches[4]) { // PI
- self.pi(value, matches[5]);
- }
-
- index = matches.index + matches[0].length;
- }
-
- // Text
- if (index < html.length)
- self.text(decode(html.substr(index)));
-
- // Close any open elements
- for (i = stack.length - 1; i >= 0; i--) {
- value = stack[i];
-
- if (value.valid)
- self.end(value.name);
- }
- };
- }
-})(tinymce);
-
-(function(tinymce) {
- var whiteSpaceRegExp = /^[ \t\r\n]*$/, typeLookup = {
- '#text' : 3,
- '#comment' : 8,
- '#cdata' : 4,
- '#pi' : 7,
- '#doctype' : 10,
- '#document-fragment' : 11
- };
-
- // Walks the tree left/right
- function walk(node, root_node, prev) {
- var sibling, parent, startName = prev ? 'lastChild' : 'firstChild', siblingName = prev ? 'prev' : 'next';
-
- // Walk into nodes if it has a start
- if (node[startName])
- return node[startName];
-
- // Return the sibling if it has one
- if (node !== root_node) {
- sibling = node[siblingName];
-
- if (sibling)
- return sibling;
-
- // Walk up the parents to look for siblings
- for (parent = node.parent; parent && parent !== root_node; parent = parent.parent) {
- sibling = parent[siblingName];
-
- if (sibling)
- return sibling;
- }
- }
- };
-
- function Node(name, type) {
- this.name = name;
- this.type = type;
-
- if (type === 1) {
- this.attributes = [];
- this.attributes.map = {};
- }
- }
-
- tinymce.extend(Node.prototype, {
- replace : function(node) {
- var self = this;
-
- if (node.parent)
- node.remove();
-
- self.insert(node, self);
- self.remove();
-
- return self;
- },
-
- attr : function(name, value) {
- var self = this, attrs, i, undef;
-
- if (typeof name !== "string") {
- for (i in name)
- self.attr(i, name[i]);
-
- return self;
- }
-
- if (attrs = self.attributes) {
- if (value !== undef) {
- // Remove attribute
- if (value === null) {
- if (name in attrs.map) {
- delete attrs.map[name];
-
- i = attrs.length;
- while (i--) {
- if (attrs[i].name === name) {
- attrs = attrs.splice(i, 1);
- return self;
- }
- }
- }
-
- return self;
- }
-
- // Set attribute
- if (name in attrs.map) {
- // Set attribute
- i = attrs.length;
- while (i--) {
- if (attrs[i].name === name) {
- attrs[i].value = value;
- break;
- }
- }
- } else
- attrs.push({name: name, value: value});
-
- attrs.map[name] = value;
-
- return self;
- } else {
- return attrs.map[name];
- }
- }
- },
-
- clone : function() {
- var self = this, clone = new Node(self.name, self.type), i, l, selfAttrs, selfAttr, cloneAttrs;
-
- // Clone element attributes
- if (selfAttrs = self.attributes) {
- cloneAttrs = [];
- cloneAttrs.map = {};
-
- for (i = 0, l = selfAttrs.length; i < l; i++) {
- selfAttr = selfAttrs[i];
-
- // Clone everything except id
- if (selfAttr.name !== 'id') {
- cloneAttrs[cloneAttrs.length] = {name: selfAttr.name, value: selfAttr.value};
- cloneAttrs.map[selfAttr.name] = selfAttr.value;
- }
- }
-
- clone.attributes = cloneAttrs;
- }
-
- clone.value = self.value;
- clone.shortEnded = self.shortEnded;
-
- return clone;
- },
-
- wrap : function(wrapper) {
- var self = this;
-
- self.parent.insert(wrapper, self);
- wrapper.append(self);
-
- return self;
- },
-
- unwrap : function() {
- var self = this, node, next;
-
- for (node = self.firstChild; node; ) {
- next = node.next;
- self.insert(node, self, true);
- node = next;
- }
-
- self.remove();
- },
-
- remove : function() {
- var self = this, parent = self.parent, next = self.next, prev = self.prev;
-
- if (parent) {
- if (parent.firstChild === self) {
- parent.firstChild = next;
-
- if (next)
- next.prev = null;
- } else {
- prev.next = next;
- }
-
- if (parent.lastChild === self) {
- parent.lastChild = prev;
-
- if (prev)
- prev.next = null;
- } else {
- next.prev = prev;
- }
-
- self.parent = self.next = self.prev = null;
- }
-
- return self;
- },
-
- append : function(node) {
- var self = this, last;
-
- if (node.parent)
- node.remove();
-
- last = self.lastChild;
- if (last) {
- last.next = node;
- node.prev = last;
- self.lastChild = node;
- } else
- self.lastChild = self.firstChild = node;
-
- node.parent = self;
-
- return node;
- },
-
- insert : function(node, ref_node, before) {
- var parent;
-
- if (node.parent)
- node.remove();
-
- parent = ref_node.parent || this;
-
- if (before) {
- if (ref_node === parent.firstChild)
- parent.firstChild = node;
- else
- ref_node.prev.next = node;
-
- node.prev = ref_node.prev;
- node.next = ref_node;
- ref_node.prev = node;
- } else {
- if (ref_node === parent.lastChild)
- parent.lastChild = node;
- else
- ref_node.next.prev = node;
-
- node.next = ref_node.next;
- node.prev = ref_node;
- ref_node.next = node;
- }
-
- node.parent = parent;
-
- return node;
- },
-
- getAll : function(name) {
- var self = this, node, collection = [];
-
- for (node = self.firstChild; node; node = walk(node, self)) {
- if (node.name === name)
- collection.push(node);
- }
-
- return collection;
- },
-
- empty : function() {
- var self = this, nodes, i, node;
-
- // Remove all children
- if (self.firstChild) {
- nodes = [];
-
- // Collect the children
- for (node = self.firstChild; node; node = walk(node, self))
- nodes.push(node);
-
- // Remove the children
- i = nodes.length;
- while (i--) {
- node = nodes[i];
- node.parent = node.firstChild = node.lastChild = node.next = node.prev = null;
- }
- }
-
- self.firstChild = self.lastChild = null;
-
- return self;
- },
-
- isEmpty : function(elements) {
- var self = this, node = self.firstChild, i, name;
-
- if (node) {
- do {
- if (node.type === 1) {
- // Ignore bogus elements
- if (node.attributes.map['data-mce-bogus'])
- continue;
-
- // Keep empty elements like <img />
- if (elements[node.name])
- return false;
-
- // Keep elements with data attributes or name attribute like <a name="1"></a>
- i = node.attributes.length;
- while (i--) {
- name = node.attributes[i].name;
- if (name === "name" || name.indexOf('data-mce-') === 0)
- return false;
- }
- }
-
- // Keep comments
- if (node.type === 8)
- return false;
-
- // Keep non whitespace text nodes
- if ((node.type === 3 && !whiteSpaceRegExp.test(node.value)))
- return false;
- } while (node = walk(node, self));
- }
-
- return true;
- },
-
- walk : function(prev) {
- return walk(this, null, prev);
- }
- });
-
- tinymce.extend(Node, {
- create : function(name, attrs) {
- var node, attrName;
-
- // Create node
- node = new Node(name, typeLookup[name] || 1);
-
- // Add attributes if needed
- if (attrs) {
- for (attrName in attrs)
- node.attr(attrName, attrs[attrName]);
- }
-
- return node;
- }
- });
-
- tinymce.html.Node = Node;
-})(tinymce);
-
-(function(tinymce) {
- var Node = tinymce.html.Node;
-
- tinymce.html.DomParser = function(settings, schema) {
- var self = this, nodeFilters = {}, attributeFilters = [], matchedNodes = {}, matchedAttributes = {};
-
- settings = settings || {};
- settings.validate = "validate" in settings ? settings.validate : true;
- settings.root_name = settings.root_name || 'body';
- self.schema = schema = schema || new tinymce.html.Schema();
-
- function fixInvalidChildren(nodes) {
- var ni, node, parent, parents, newParent, currentNode, tempNode, childNode, i,
- childClone, nonEmptyElements, nonSplitableElements, textBlockElements, sibling, nextNode;
-
- nonSplitableElements = tinymce.makeMap('tr,td,th,tbody,thead,tfoot,table');
- nonEmptyElements = schema.getNonEmptyElements();
- textBlockElements = schema.getTextBlockElements();
-
- for (ni = 0; ni < nodes.length; ni++) {
- node = nodes[ni];
-
- // Already removed or fixed
- if (!node.parent || node.fixed)
- continue;
-
- // If the invalid element is a text block and the text block is within a parent LI element
- // Then unwrap the first text block and convert other sibling text blocks to LI elements similar to Word/Open Office
- if (textBlockElements[node.name] && node.parent.name == 'li') {
- // Move sibling text blocks after LI element
- sibling = node.next;
- while (sibling) {
- if (textBlockElements[sibling.name]) {
- sibling.name = 'li';
- sibling.fixed = true;
- node.parent.insert(sibling, node.parent);
- } else {
- break;
- }
-
- sibling = sibling.next;
- }
-
- // Unwrap current text block
- node.unwrap(node);
- continue;
- }
-
- // Get list of all parent nodes until we find a valid parent to stick the child into
- parents = [node];
- for (parent = node.parent; parent && !schema.isValidChild(parent.name, node.name) && !nonSplitableElements[parent.name]; parent = parent.parent)
- parents.push(parent);
-
- // Found a suitable parent
- if (parent && parents.length > 1) {
- // Reverse the array since it makes looping easier
- parents.reverse();
-
- // Clone the related parent and insert that after the moved node
- newParent = currentNode = self.filterNode(parents[0].clone());
-
- // Start cloning and moving children on the left side of the target node
- for (i = 0; i < parents.length - 1; i++) {
- if (schema.isValidChild(currentNode.name, parents[i].name)) {
- tempNode = self.filterNode(parents[i].clone());
- currentNode.append(tempNode);
- } else
- tempNode = currentNode;
-
- for (childNode = parents[i].firstChild; childNode && childNode != parents[i + 1]; ) {
- nextNode = childNode.next;
- tempNode.append(childNode);
- childNode = nextNode;
- }
-
- currentNode = tempNode;
- }
-
- if (!newParent.isEmpty(nonEmptyElements)) {
- parent.insert(newParent, parents[0], true);
- parent.insert(node, newParent);
- } else {
- parent.insert(node, parents[0], true);
- }
-
- // Check if the element is empty by looking through it's contents and special treatment for <p><br /></p>
- parent = parents[0];
- if (parent.isEmpty(nonEmptyElements) || parent.firstChild === parent.lastChild && parent.firstChild.name === 'br') {
- parent.empty().remove();
- }
- } else if (node.parent) {
- // If it's an LI try to find a UL/OL for it or wrap it
- if (node.name === 'li') {
- sibling = node.prev;
- if (sibling && (sibling.name === 'ul' || sibling.name === 'ul')) {
- sibling.append(node);
- continue;
- }
-
- sibling = node.next;
- if (sibling && (sibling.name === 'ul' || sibling.name === 'ul')) {
- sibling.insert(node, sibling.firstChild, true);
- continue;
- }
-
- node.wrap(self.filterNode(new Node('ul', 1)));
- continue;
- }
-
- // Try wrapping the element in a DIV
- if (schema.isValidChild(node.parent.name, 'div') && schema.isValidChild('div', node.name)) {
- node.wrap(self.filterNode(new Node('div', 1)));
- } else {
- // We failed wrapping it, then remove or unwrap it
- if (node.name === 'style' || node.name === 'script')
- node.empty().remove();
- else
- node.unwrap();
- }
- }
- }
- };
-
- self.filterNode = function(node) {
- var i, name, list;
-
- // Run element filters
- if (name in nodeFilters) {
- list = matchedNodes[name];
-
- if (list)
- list.push(node);
- else
- matchedNodes[name] = [node];
- }
-
- // Run attribute filters
- i = attributeFilters.length;
- while (i--) {
- name = attributeFilters[i].name;
-
- if (name in node.attributes.map) {
- list = matchedAttributes[name];
-
- if (list)
- list.push(node);
- else
- matchedAttributes[name] = [node];
- }
- }
-
- return node;
- };
-
- self.addNodeFilter = function(name, callback) {
- tinymce.each(tinymce.explode(name), function(name) {
- var list = nodeFilters[name];
-
- if (!list)
- nodeFilters[name] = list = [];
-
- list.push(callback);
- });
- };
-
- self.addAttributeFilter = function(name, callback) {
- tinymce.each(tinymce.explode(name), function(name) {
- var i;
-
- for (i = 0; i < attributeFilters.length; i++) {
- if (attributeFilters[i].name === name) {
- attributeFilters[i].callbacks.push(callback);
- return;
- }
- }
-
- attributeFilters.push({name: name, callbacks: [callback]});
- });
- };
-
- self.parse = function(html, args) {
- var parser, rootNode, node, nodes, i, l, fi, fl, list, name, validate,
- blockElements, startWhiteSpaceRegExp, invalidChildren = [], isInWhiteSpacePreservedElement,
- endWhiteSpaceRegExp, allWhiteSpaceRegExp, isAllWhiteSpaceRegExp, whiteSpaceElements, children, nonEmptyElements, rootBlockName;
-
- args = args || {};
- matchedNodes = {};
- matchedAttributes = {};
- blockElements = tinymce.extend(tinymce.makeMap('script,style,head,html,body,title,meta,param'), schema.getBlockElements());
- nonEmptyElements = schema.getNonEmptyElements();
- children = schema.children;
- validate = settings.validate;
- rootBlockName = "forced_root_block" in args ? args.forced_root_block : settings.forced_root_block;
-
- whiteSpaceElements = schema.getWhiteSpaceElements();
- startWhiteSpaceRegExp = /^[ \t\r\n]+/;
- endWhiteSpaceRegExp = /[ \t\r\n]+$/;
- allWhiteSpaceRegExp = /[ \t\r\n]+/g;
- isAllWhiteSpaceRegExp = /^[ \t\r\n]+$/;
-
- function addRootBlocks() {
- var node = rootNode.firstChild, next, rootBlockNode;
-
- while (node) {
- next = node.next;
-
- if (node.type == 3 || (node.type == 1 && node.name !== 'p' && !blockElements[node.name] && !node.attr('data-mce-type'))) {
- if (!rootBlockNode) {
- // Create a new root block element
- rootBlockNode = createNode(rootBlockName, 1);
- rootNode.insert(rootBlockNode, node);
- rootBlockNode.append(node);
- } else
- rootBlockNode.append(node);
- } else {
- rootBlockNode = null;
- }
-
- node = next;
- };
- };
-
- function createNode(name, type) {
- var node = new Node(name, type), list;
-
- if (name in nodeFilters) {
- list = matchedNodes[name];
-
- if (list)
- list.push(node);
- else
- matchedNodes[name] = [node];
- }
-
- return node;
- };
-
- function removeWhitespaceBefore(node) {
- var textNode, textVal, sibling;
-
- for (textNode = node.prev; textNode && textNode.type === 3; ) {
- textVal = textNode.value.replace(endWhiteSpaceRegExp, '');
-
- if (textVal.length > 0) {
- textNode.value = textVal;
- textNode = textNode.prev;
- } else {
- sibling = textNode.prev;
- textNode.remove();
- textNode = sibling;
- }
- }
- };
-
- function cloneAndExcludeBlocks(input) {
- var name, output = {};
-
- for (name in input) {
- if (name !== 'li' && name != 'p') {
- output[name] = input[name];
- }
- }
-
- return output;
- };
-
- parser = new tinymce.html.SaxParser({
- validate : validate,
-
- // Exclude P and LI from DOM parsing since it's treated better by the DOM parser
- self_closing_elements: cloneAndExcludeBlocks(schema.getSelfClosingElements()),
-
- cdata: function(text) {
- node.append(createNode('#cdata', 4)).value = text;
- },
-
- text: function(text, raw) {
- var textNode;
-
- // Trim all redundant whitespace on non white space elements
- if (!isInWhiteSpacePreservedElement) {
- text = text.replace(allWhiteSpaceRegExp, ' ');
-
- if (node.lastChild && blockElements[node.lastChild.name])
- text = text.replace(startWhiteSpaceRegExp, '');
- }
-
- // Do we need to create the node
- if (text.length !== 0) {
- textNode = createNode('#text', 3);
- textNode.raw = !!raw;
- node.append(textNode).value = text;
- }
- },
-
- comment: function(text) {
- node.append(createNode('#comment', 8)).value = text;
- },
-
- pi: function(name, text) {
- node.append(createNode(name, 7)).value = text;
- removeWhitespaceBefore(node);
- },
-
- doctype: function(text) {
- var newNode;
-
- newNode = node.append(createNode('#doctype', 10));
- newNode.value = text;
- removeWhitespaceBefore(node);
- },
-
- start: function(name, attrs, empty) {
- var newNode, attrFiltersLen, elementRule, textNode, attrName, text, sibling, parent;
-
- elementRule = validate ? schema.getElementRule(name) : {};
- if (elementRule) {
- newNode = createNode(elementRule.outputName || name, 1);
- newNode.attributes = attrs;
- newNode.shortEnded = empty;
-
- node.append(newNode);
-
- // Check if node is valid child of the parent node is the child is
- // unknown we don't collect it since it's probably a custom element
- parent = children[node.name];
- if (parent && children[newNode.name] && !parent[newNode.name])
- invalidChildren.push(newNode);
-
- attrFiltersLen = attributeFilters.length;
- while (attrFiltersLen--) {
- attrName = attributeFilters[attrFiltersLen].name;
-
- if (attrName in attrs.map) {
- list = matchedAttributes[attrName];
-
- if (list)
- list.push(newNode);
- else
- matchedAttributes[attrName] = [newNode];
- }
- }
-
- // Trim whitespace before block
- if (blockElements[name])
- removeWhitespaceBefore(newNode);
-
- // Change current node if the element wasn't empty i.e not <br /> or <img />
- if (!empty)
- node = newNode;
-
- // Check if we are inside a whitespace preserved element
- if (!isInWhiteSpacePreservedElement && whiteSpaceElements[name]) {
- isInWhiteSpacePreservedElement = true;
- }
- }
- },
-
- end: function(name) {
- var textNode, elementRule, text, sibling, tempNode;
-
- elementRule = validate ? schema.getElementRule(name) : {};
- if (elementRule) {
- if (blockElements[name]) {
- if (!isInWhiteSpacePreservedElement) {
- // Trim whitespace of the first node in a block
- textNode = node.firstChild;
- if (textNode && textNode.type === 3) {
- text = textNode.value.replace(startWhiteSpaceRegExp, '');
-
- // Any characters left after trim or should we remove it
- if (text.length > 0) {
- textNode.value = text;
- textNode = textNode.next;
- } else {
- sibling = textNode.next;
- textNode.remove();
- textNode = sibling;
- }
-
- // Remove any pure whitespace siblings
- while (textNode && textNode.type === 3) {
- text = textNode.value;
- sibling = textNode.next;
-
- if (text.length === 0 || isAllWhiteSpaceRegExp.test(text)) {
- textNode.remove();
- textNode = sibling;
- }
-
- textNode = sibling;
- }
- }
-
- // Trim whitespace of the last node in a block
- textNode = node.lastChild;
- if (textNode && textNode.type === 3) {
- text = textNode.value.replace(endWhiteSpaceRegExp, '');
-
- // Any characters left after trim or should we remove it
- if (text.length > 0) {
- textNode.value = text;
- textNode = textNode.prev;
- } else {
- sibling = textNode.prev;
- textNode.remove();
- textNode = sibling;
- }
-
- // Remove any pure whitespace siblings
- while (textNode && textNode.type === 3) {
- text = textNode.value;
- sibling = textNode.prev;
-
- if (text.length === 0 || isAllWhiteSpaceRegExp.test(text)) {
- textNode.remove();
- textNode = sibling;
- }
-
- textNode = sibling;
- }
- }
- }
-
- // Trim start white space
- // Removed due to: #5424
- /*textNode = node.prev;
- if (textNode && textNode.type === 3) {
- text = textNode.value.replace(startWhiteSpaceRegExp, '');
-
- if (text.length > 0)
- textNode.value = text;
- else
- textNode.remove();
- }*/
- }
-
- // Check if we exited a whitespace preserved element
- if (isInWhiteSpacePreservedElement && whiteSpaceElements[name]) {
- isInWhiteSpacePreservedElement = false;
- }
-
- // Handle empty nodes
- if (elementRule.removeEmpty || elementRule.paddEmpty) {
- if (node.isEmpty(nonEmptyElements)) {
- if (elementRule.paddEmpty)
- node.empty().append(new Node('#text', '3')).value = '\u00a0';
- else {
- // Leave nodes that have a name like <a name="name">
- if (!node.attributes.map.name && !node.attributes.map.id) {
- tempNode = node.parent;
- node.empty().remove();
- node = tempNode;
- return;
- }
- }
- }
- }
-
- node = node.parent;
- }
- }
- }, schema);
-
- rootNode = node = new Node(args.context || settings.root_name, 11);
-
- parser.parse(html);
-
- // Fix invalid children or report invalid children in a contextual parsing
- if (validate && invalidChildren.length) {
- if (!args.context)
- fixInvalidChildren(invalidChildren);
- else
- args.invalid = true;
- }
-
- // Wrap nodes in the root into block elements if the root is body
- if (rootBlockName && rootNode.name == 'body')
- addRootBlocks();
-
- // Run filters only when the contents is valid
- if (!args.invalid) {
- // Run node filters
- for (name in matchedNodes) {
- list = nodeFilters[name];
- nodes = matchedNodes[name];
-
- // Remove already removed children
- fi = nodes.length;
- while (fi--) {
- if (!nodes[fi].parent)
- nodes.splice(fi, 1);
- }
-
- for (i = 0, l = list.length; i < l; i++)
- list[i](nodes, name, args);
- }
-
- // Run attribute filters
- for (i = 0, l = attributeFilters.length; i < l; i++) {
- list = attributeFilters[i];
-
- if (list.name in matchedAttributes) {
- nodes = matchedAttributes[list.name];
-
- // Remove already removed children
- fi = nodes.length;
- while (fi--) {
- if (!nodes[fi].parent)
- nodes.splice(fi, 1);
- }
-
- for (fi = 0, fl = list.callbacks.length; fi < fl; fi++)
- list.callbacks[fi](nodes, list.name, args);
- }
- }
- }
-
- return rootNode;
- };
-
- // Remove <br> at end of block elements Gecko and WebKit injects BR elements to
- // make it possible to place the caret inside empty blocks. This logic tries to remove
- // these elements and keep br elements that where intended to be there intact
- if (settings.remove_trailing_brs) {
- self.addNodeFilter('br', function(nodes, name) {
- var i, l = nodes.length, node, blockElements = tinymce.extend({}, schema.getBlockElements()),
- nonEmptyElements = schema.getNonEmptyElements(), parent, lastParent, prev, prevName;
-
- // Remove brs from body element as well
- blockElements.body = 1;
-
- // Must loop forwards since it will otherwise remove all brs in <p>a<br><br><br></p>
- for (i = 0; i < l; i++) {
- node = nodes[i];
- parent = node.parent;
-
- if (blockElements[node.parent.name] && node === parent.lastChild) {
- // Loop all nodes to the left of the current node and check for other BR elements
- // excluding bookmarks since they are invisible
- prev = node.prev;
- while (prev) {
- prevName = prev.name;
-
- // Ignore bookmarks
- if (prevName !== "span" || prev.attr('data-mce-type') !== 'bookmark') {
- // Found a non BR element
- if (prevName !== "br")
- break;
-
- // Found another br it's a <br><br> structure then don't remove anything
- if (prevName === 'br') {
- node = null;
- break;
- }
- }
-
- prev = prev.prev;
- }
-
- if (node) {
- node.remove();
-
- // Is the parent to be considered empty after we removed the BR
- if (parent.isEmpty(nonEmptyElements)) {
- elementRule = schema.getElementRule(parent.name);
-
- // Remove or padd the element depending on schema rule
- if (elementRule) {
- if (elementRule.removeEmpty)
- parent.remove();
- else if (elementRule.paddEmpty)
- parent.empty().append(new tinymce.html.Node('#text', 3)).value = '\u00a0';
- }
- }
- }
- } else {
- // Replaces BR elements inside inline elements like <p><b><i><br></i></b></p> so they become <p><b><i>&nbsp;</i></b></p>
- lastParent = node;
- while (parent.firstChild === lastParent && parent.lastChild === lastParent) {
- lastParent = parent;
-
- if (blockElements[parent.name]) {
- break;
- }
-
- parent = parent.parent;
- }
-
- if (lastParent === parent) {
- textNode = new tinymce.html.Node('#text', 3);
- textNode.value = '\u00a0';
- node.replace(textNode);
- }
- }
- }
- });
- }
-
- // Force anchor names closed, unless the setting "allow_html_in_named_anchor" is explicitly included.
- if (!settings.allow_html_in_named_anchor) {
- self.addAttributeFilter('id,name', function(nodes, name) {
- var i = nodes.length, sibling, prevSibling, parent, node;
-
- while (i--) {
- node = nodes[i];
- if (node.name === 'a' && node.firstChild && !node.attr('href')) {
- parent = node.parent;
-
- // Move children after current node
- sibling = node.lastChild;
- do {
- prevSibling = sibling.prev;
- parent.insert(sibling, node);
- sibling = prevSibling;
- } while (sibling);
- }
- }
- });
- }
- }
-})(tinymce);
-
-tinymce.html.Writer = function(settings) {
- var html = [], indent, indentBefore, indentAfter, encode, htmlOutput;
-
- settings = settings || {};
- indent = settings.indent;
- indentBefore = tinymce.makeMap(settings.indent_before || '');
- indentAfter = tinymce.makeMap(settings.indent_after || '');
- encode = tinymce.html.Entities.getEncodeFunc(settings.entity_encoding || 'raw', settings.entities);
- htmlOutput = settings.element_format == "html";
-
- return {
- start: function(name, attrs, empty) {
- var i, l, attr, value;
-
- if (indent && indentBefore[name] && html.length > 0) {
- value = html[html.length - 1];
-
- if (value.length > 0 && value !== '\n')
- html.push('\n');
- }
-
- html.push('<', name);
-
- if (attrs) {
- for (i = 0, l = attrs.length; i < l; i++) {
- attr = attrs[i];
- html.push(' ', attr.name, '="', encode(attr.value, true), '"');
- }
- }
-
- if (!empty || htmlOutput)
- html[html.length] = '>';
- else
- html[html.length] = ' />';
-
- if (empty && indent && indentAfter[name] && html.length > 0) {
- value = html[html.length - 1];
-
- if (value.length > 0 && value !== '\n')
- html.push('\n');
- }
- },
-
- end: function(name) {
- var value;
-
- /*if (indent && indentBefore[name] && html.length > 0) {
- value = html[html.length - 1];
-
- if (value.length > 0 && value !== '\n')
- html.push('\n');
- }*/
-
- html.push('</', name, '>');
-
- if (indent && indentAfter[name] && html.length > 0) {
- value = html[html.length - 1];
-
- if (value.length > 0 && value !== '\n')
- html.push('\n');
- }
- },
-
- text: function(text, raw) {
- if (text.length > 0)
- html[html.length] = raw ? text : encode(text);
- },
-
- cdata: function(text) {
- html.push('<![CDATA[', text, ']]>');
- },
-
- comment: function(text) {
- html.push('<!--', text, '-->');
- },
-
- pi: function(name, text) {
- if (text)
- html.push('<?', name, ' ', text, '?>');
- else
- html.push('<?', name, '?>');
-
- if (indent)
- html.push('\n');
- },
-
- doctype: function(text) {
- html.push('<!DOCTYPE', text, '>', indent ? '\n' : '');
- },
-
- reset: function() {
- html.length = 0;
- },
-
- getContent: function() {
- return html.join('').replace(/\n$/, '');
- }
- };
-};
-
-(function(tinymce) {
- tinymce.html.Serializer = function(settings, schema) {
- var self = this, writer = new tinymce.html.Writer(settings);
-
- settings = settings || {};
- settings.validate = "validate" in settings ? settings.validate : true;
-
- self.schema = schema = schema || new tinymce.html.Schema();
- self.writer = writer;
-
- self.serialize = function(node) {
- var handlers, validate;
-
- validate = settings.validate;
-
- handlers = {
- // #text
- 3: function(node, raw) {
- writer.text(node.value, node.raw);
- },
-
- // #comment
- 8: function(node) {
- writer.comment(node.value);
- },
-
- // Processing instruction
- 7: function(node) {
- writer.pi(node.name, node.value);
- },
-
- // Doctype
- 10: function(node) {
- writer.doctype(node.value);
- },
-
- // CDATA
- 4: function(node) {
- writer.cdata(node.value);
- },
-
- // Document fragment
- 11: function(node) {
- if ((node = node.firstChild)) {
- do {
- walk(node);
- } while (node = node.next);
- }
- }
- };
-
- writer.reset();
-
- function walk(node) {
- var handler = handlers[node.type], name, isEmpty, attrs, attrName, attrValue, sortedAttrs, i, l, elementRule;
-
- if (!handler) {
- name = node.name;
- isEmpty = node.shortEnded;
- attrs = node.attributes;
-
- // Sort attributes
- if (validate && attrs && attrs.length > 1) {
- sortedAttrs = [];
- sortedAttrs.map = {};
-
- elementRule = schema.getElementRule(node.name);
- for (i = 0, l = elementRule.attributesOrder.length; i < l; i++) {
- attrName = elementRule.attributesOrder[i];
-
- if (attrName in attrs.map) {
- attrValue = attrs.map[attrName];
- sortedAttrs.map[attrName] = attrValue;
- sortedAttrs.push({name: attrName, value: attrValue});
- }
- }
-
- for (i = 0, l = attrs.length; i < l; i++) {
- attrName = attrs[i].name;
-
- if (!(attrName in sortedAttrs.map)) {
- attrValue = attrs.map[attrName];
- sortedAttrs.map[attrName] = attrValue;
- sortedAttrs.push({name: attrName, value: attrValue});
- }
- }
-
- attrs = sortedAttrs;
- }
-
- writer.start(node.name, attrs, isEmpty);
-
- if (!isEmpty) {
- if ((node = node.firstChild)) {
- do {
- walk(node);
- } while (node = node.next);
- }
-
- writer.end(name);
- }
- } else
- handler(node);
- }
-
- // Serialize element and treat all non elements as fragments
- if (node.type == 1 && !settings.inner)
- walk(node);
- else
- handlers[11](node);
-
- return writer.getContent();
- };
- }
-})(tinymce);
-
-// JSLint defined globals
-/*global tinymce:false, window:false */
-
-tinymce.dom = {};
-
-(function(namespace, expando) {
- var w3cEventModel = !!document.addEventListener;
-
- function addEvent(target, name, callback, capture) {
- if (target.addEventListener) {
- target.addEventListener(name, callback, capture || false);
- } else if (target.attachEvent) {
- target.attachEvent('on' + name, callback);
- }
- }
-
- function removeEvent(target, name, callback, capture) {
- if (target.removeEventListener) {
- target.removeEventListener(name, callback, capture || false);
- } else if (target.detachEvent) {
- target.detachEvent('on' + name, callback);
- }
- }
-
- function fix(original_event, data) {
- var name, event = data || {};
-
- // Dummy function that gets replaced on the delegation state functions
- function returnFalse() {
- return false;
- }
-
- // Dummy function that gets replaced on the delegation state functions
- function returnTrue() {
- return true;
- }
-
- // Copy all properties from the original event
- for (name in original_event) {
- // layerX/layerY is deprecated in Chrome and produces a warning
- if (name !== "layerX" && name !== "layerY") {
- event[name] = original_event[name];
- }
- }
-
- // Normalize target IE uses srcElement
- if (!event.target) {
- event.target = event.srcElement || document;
- }
-
- // Add preventDefault method
- event.preventDefault = function() {
- event.isDefaultPrevented = returnTrue;
-
- // Execute preventDefault on the original event object
- if (original_event) {
- if (original_event.preventDefault) {
- original_event.preventDefault();
- } else {
- original_event.returnValue = false; // IE
- }
- }
- };
-
- // Add stopPropagation
- event.stopPropagation = function() {
- event.isPropagationStopped = returnTrue;
-
- // Execute stopPropagation on the original event object
- if (original_event) {
- if (original_event.stopPropagation) {
- original_event.stopPropagation();
- } else {
- original_event.cancelBubble = true; // IE
- }
- }
- };
-
- // Add stopImmediatePropagation
- event.stopImmediatePropagation = function() {
- event.isImmediatePropagationStopped = returnTrue;
- event.stopPropagation();
- };
-
- // Add event delegation states
- if (!event.isDefaultPrevented) {
- event.isDefaultPrevented = returnFalse;
- event.isPropagationStopped = returnFalse;
- event.isImmediatePropagationStopped = returnFalse;
- }
-
- return event;
- }
-
- function bindOnReady(win, callback, event_utils) {
- var doc = win.document, event = {type: 'ready'};
-
- // Gets called when the DOM is ready
- function readyHandler() {
- if (!event_utils.domLoaded) {
- event_utils.domLoaded = true;
- callback(event);
- }
- }
-
- // Page already loaded then fire it directly
- if (doc.readyState == "complete") {
- readyHandler();
- return;
- }
-
- // Use W3C method
- if (w3cEventModel) {
- addEvent(win, 'DOMContentLoaded', readyHandler);
- } else {
- // Use IE method
- addEvent(doc, "readystatechange", function() {
- if (doc.readyState === "complete") {
- removeEvent(doc, "readystatechange", arguments.callee);
- readyHandler();
- }
- });
-
- // Wait until we can scroll, when we can the DOM is initialized
- if (doc.documentElement.doScroll && win === win.top) {
- (function() {
- try {
- // If IE is used, use the trick by Diego Perini licensed under MIT by request to the author.
- // http://javascript.nwbox.com/IEContentLoaded/
- doc.documentElement.doScroll("left");
- } catch (ex) {
- setTimeout(arguments.callee, 0);
- return;
- }
-
- readyHandler();
- })();
- }
- }
-
- // Fallback if any of the above methods should fail for some odd reason
- addEvent(win, 'load', readyHandler);
- }
-
- function EventUtils(proxy) {
- var self = this, events = {}, count, isFocusBlurBound, hasFocusIn, hasMouseEnterLeave, mouseEnterLeave;
-
- hasMouseEnterLeave = "onmouseenter" in document.documentElement;
- hasFocusIn = "onfocusin" in document.documentElement;
- mouseEnterLeave = {mouseenter: 'mouseover', mouseleave: 'mouseout'};
- count = 1;
-
- // State if the DOMContentLoaded was executed or not
- self.domLoaded = false;
- self.events = events;
-
- function executeHandlers(evt, id) {
- var callbackList, i, l, callback;
-
- callbackList = events[id][evt.type];
- if (callbackList) {
- for (i = 0, l = callbackList.length; i < l; i++) {
- callback = callbackList[i];
-
- // Check if callback exists might be removed if a unbind is called inside the callback
- if (callback && callback.func.call(callback.scope, evt) === false) {
- evt.preventDefault();
- }
-
- // Should we stop propagation to immediate listeners
- if (evt.isImmediatePropagationStopped()) {
- return;
- }
- }
- }
- }
-
- self.bind = function(target, names, callback, scope) {
- var id, callbackList, i, name, fakeName, nativeHandler, capture, win = window;
-
- // Native event handler function patches the event and executes the callbacks for the expando
- function defaultNativeHandler(evt) {
- executeHandlers(fix(evt || win.event), id);
- }
-
- // Don't bind to text nodes or comments
- if (!target || target.nodeType === 3 || target.nodeType === 8) {
- return;
- }
-
- // Create or get events id for the target
- if (!target[expando]) {
- id = count++;
- target[expando] = id;
- events[id] = {};
- } else {
- id = target[expando];
-
- if (!events[id]) {
- events[id] = {};
- }
- }
-
- // Setup the specified scope or use the target as a default
- scope = scope || target;
-
- // Split names and bind each event, enables you to bind multiple events with one call
- names = names.split(' ');
- i = names.length;
- while (i--) {
- name = names[i];
- nativeHandler = defaultNativeHandler;
- fakeName = capture = false;
-
- // Use ready instead of DOMContentLoaded
- if (name === "DOMContentLoaded") {
- name = "ready";
- }
-
- // DOM is already ready
- if ((self.domLoaded || target.readyState == 'complete') && name === "ready") {
- self.domLoaded = true;
- callback.call(scope, fix({type: name}));
- continue;
- }
-
- // Handle mouseenter/mouseleaver
- if (!hasMouseEnterLeave) {
- fakeName = mouseEnterLeave[name];
-
- if (fakeName) {
- nativeHandler = function(evt) {
- var current, related;
-
- current = evt.currentTarget;
- related = evt.relatedTarget;
-
- // Check if related is inside the current target if it's not then the event should be ignored since it's a mouseover/mouseout inside the element
- if (related && current.contains) {
- // Use contains for performance
- related = current.contains(related);
- } else {
- while (related && related !== current) {
- related = related.parentNode;
- }
- }
-
- // Fire fake event
- if (!related) {
- evt = fix(evt || win.event);
- evt.type = evt.type === 'mouseout' ? 'mouseleave' : 'mouseenter';
- evt.target = current;
- executeHandlers(evt, id);
- }
- };
- }
- }
-
- // Fake bubbeling of focusin/focusout
- if (!hasFocusIn && (name === "focusin" || name === "focusout")) {
- capture = true;
- fakeName = name === "focusin" ? "focus" : "blur";
- nativeHandler = function(evt) {
- evt = fix(evt || win.event);
- evt.type = evt.type === 'focus' ? 'focusin' : 'focusout';
- executeHandlers(evt, id);
- };
- }
-
- // Setup callback list and bind native event
- callbackList = events[id][name];
- if (!callbackList) {
- events[id][name] = callbackList = [{func: callback, scope: scope}];
- callbackList.fakeName = fakeName;
- callbackList.capture = capture;
-
- // Add the nativeHandler to the callback list so that we can later unbind it
- callbackList.nativeHandler = nativeHandler;
- if (!w3cEventModel) {
- callbackList.proxyHandler = proxy(id);
- }
-
- // Check if the target has native events support
- if (name === "ready") {
- bindOnReady(target, nativeHandler, self);
- } else {
- addEvent(target, fakeName || name, w3cEventModel ? nativeHandler : callbackList.proxyHandler, capture);
- }
- } else {
- // If it already has an native handler then just push the callback
- callbackList.push({func: callback, scope: scope});
- }
- }
-
- target = callbackList = 0; // Clean memory for IE
-
- return callback;
- };
-
- self.unbind = function(target, names, callback) {
- var id, callbackList, i, ci, name, eventMap;
-
- // Don't bind to text nodes or comments
- if (!target || target.nodeType === 3 || target.nodeType === 8) {
- return self;
- }
-
- // Unbind event or events if the target has the expando
- id = target[expando];
- if (id) {
- eventMap = events[id];
-
- // Specific callback
- if (names) {
- names = names.split(' ');
- i = names.length;
- while (i--) {
- name = names[i];
- callbackList = eventMap[name];
-
- // Unbind the event if it exists in the map
- if (callbackList) {
- // Remove specified callback
- if (callback) {
- ci = callbackList.length;
- while (ci--) {
- if (callbackList[ci].func === callback) {
- callbackList.splice(ci, 1);
- }
- }
- }
-
- // Remove all callbacks if there isn't a specified callback or there is no callbacks left
- if (!callback || callbackList.length === 0) {
- delete eventMap[name];
- removeEvent(target, callbackList.fakeName || name, w3cEventModel ? callbackList.nativeHandler : callbackList.proxyHandler, callbackList.capture);
- }
- }
- }
- } else {
- // All events for a specific element
- for (name in eventMap) {
- callbackList = eventMap[name];
- removeEvent(target, callbackList.fakeName || name, w3cEventModel ? callbackList.nativeHandler : callbackList.proxyHandler, callbackList.capture);
- }
-
- eventMap = {};
- }
-
- // Check if object is empty, if it isn't then we won't remove the expando map
- for (name in eventMap) {
- return self;
- }
-
- // Delete event object
- delete events[id];
-
- // Remove expando from target
- try {
- // IE will fail here since it can't delete properties from window
- delete target[expando];
- } catch (ex) {
- // IE will set it to null
- target[expando] = null;
- }
- }
-
- return self;
- };
-
- self.fire = function(target, name, args) {
- var id, event;
-
- // Don't bind to text nodes or comments
- if (!target || target.nodeType === 3 || target.nodeType === 8) {
- return self;
- }
-
- // Build event object by patching the args
- event = fix(null, args);
- event.type = name;
-
- do {
- // Found an expando that means there is listeners to execute
- id = target[expando];
- if (id) {
- executeHandlers(event, id);
- }
-
- // Walk up the DOM
- target = target.parentNode || target.ownerDocument || target.defaultView || target.parentWindow;
- } while (target && !event.isPropagationStopped());
-
- return self;
- };
-
- self.clean = function(target) {
- var i, children, unbind = self.unbind;
-
- // Don't bind to text nodes or comments
- if (!target || target.nodeType === 3 || target.nodeType === 8) {
- return self;
- }
-
- // Unbind any element on the specificed target
- if (target[expando]) {
- unbind(target);
- }
-
- // Target doesn't have getElementsByTagName it's probably a window object then use it's document to find the children
- if (!target.getElementsByTagName) {
- target = target.document;
- }
-
- // Remove events from each child element
- if (target && target.getElementsByTagName) {
- unbind(target);
-
- children = target.getElementsByTagName('*');
- i = children.length;
- while (i--) {
- target = children[i];
-
- if (target[expando]) {
- unbind(target);
- }
- }
- }
-
- return self;
- };
-
- self.callNativeHandler = function(id, evt) {
- if (events) {
- events[id][evt.type].nativeHandler(evt);
- }
- };
-
- self.destory = function() {
- events = {};
- };
-
- // Legacy function calls
-
- self.add = function(target, events, func, scope) {
- // Old API supported direct ID assignment
- if (typeof(target) === "string") {
- target = document.getElementById(target);
- }
-
- // Old API supported multiple targets
- if (target && target instanceof Array) {
- var i = target.length;
-
- while (i--) {
- self.add(target[i], events, func, scope);
- }
-
- return;
- }
-
- // Old API called ready init
- if (events === "init") {
- events = "ready";
- }
-
- return self.bind(target, events instanceof Array ? events.join(' ') : events, func, scope);
- };
-
- self.remove = function(target, events, func, scope) {
- if (!target) {
- return self;
- }
-
- // Old API supported direct ID assignment
- if (typeof(target) === "string") {
- target = document.getElementById(target);
- }
-
- // Old API supported multiple targets
- if (target instanceof Array) {
- var i = target.length;
-
- while (i--) {
- self.remove(target[i], events, func, scope);
- }
-
- return self;
- }
-
- return self.unbind(target, events instanceof Array ? events.join(' ') : events, func);
- };
-
- self.clear = function(target) {
- // Old API supported direct ID assignment
- if (typeof(target) === "string") {
- target = document.getElementById(target);
- }
-
- return self.clean(target);
- };
-
- self.cancel = function(e) {
- if (e) {
- self.prevent(e);
- self.stop(e);
- }
-
- return false;
- };
-
- self.prevent = function(e) {
- if (!e.preventDefault) {
- e = fix(e);
- }
-
- e.preventDefault();
-
- return false;
- };
-
- self.stop = function(e) {
- if (!e.stopPropagation) {
- e = fix(e);
- }
-
- e.stopPropagation();
-
- return false;
- };
- }
-
- namespace.EventUtils = EventUtils;
-
- namespace.Event = new EventUtils(function(id) {
- return function(evt) {
- tinymce.dom.Event.callNativeHandler(id, evt);
- };
- });
-
- // Bind ready event when tinymce script is loaded
- namespace.Event.bind(window, 'ready', function() {});
-
- namespace = 0;
-})(tinymce.dom, 'data-mce-expando'); // Namespace and expando
-
-tinymce.dom.TreeWalker = function(start_node, root_node) {
- var node = start_node;
-
- function findSibling(node, start_name, sibling_name, shallow) {
- var sibling, parent;
-
- if (node) {
- // Walk into nodes if it has a start
- if (!shallow && node[start_name])
- return node[start_name];
-
- // Return the sibling if it has one
- if (node != root_node) {
- sibling = node[sibling_name];
- if (sibling)
- return sibling;
-
- // Walk up the parents to look for siblings
- for (parent = node.parentNode; parent && parent != root_node; parent = parent.parentNode) {
- sibling = parent[sibling_name];
- if (sibling)
- return sibling;
- }
- }
- }
- };
-
- this.current = function() {
- return node;
- };
-
- this.next = function(shallow) {
- return (node = findSibling(node, 'firstChild', 'nextSibling', shallow));
- };
-
- this.prev = function(shallow) {
- return (node = findSibling(node, 'lastChild', 'previousSibling', shallow));
- };
-};
-
-(function(tinymce) {
- // Shorten names
- var each = tinymce.each,
- is = tinymce.is,
- isWebKit = tinymce.isWebKit,
- isIE = tinymce.isIE,
- Entities = tinymce.html.Entities,
- simpleSelectorRe = /^([a-z0-9],?)+$/i,
- whiteSpaceRegExp = /^[ \t\r\n]*$/;
-
- tinymce.create('tinymce.dom.DOMUtils', {
- doc : null,
- root : null,
- files : null,
- pixelStyles : /^(top|left|bottom|right|width|height|borderWidth)$/,
- props : {
- "for" : "htmlFor",
- "class" : "className",
- className : "className",
- checked : "checked",
- disabled : "disabled",
- maxlength : "maxLength",
- readonly : "readOnly",
- selected : "selected",
- value : "value",
- id : "id",
- name : "name",
- type : "type"
- },
-
- DOMUtils : function(d, s) {
- var t = this, globalStyle, name, blockElementsMap;
-
- t.doc = d;
- t.win = window;
- t.files = {};
- t.cssFlicker = false;
- t.counter = 0;
- t.stdMode = !tinymce.isIE || d.documentMode >= 8;
- t.boxModel = !tinymce.isIE || d.compatMode == "CSS1Compat" || t.stdMode;
- t.hasOuterHTML = "outerHTML" in d.createElement("a");
-
- t.settings = s = tinymce.extend({
- keep_values : false,
- hex_colors : 1
- }, s);
-
- t.schema = s.schema;
- t.styles = new tinymce.html.Styles({
- url_converter : s.url_converter,
- url_converter_scope : s.url_converter_scope
- }, s.schema);
-
- // Fix IE6SP2 flicker and check it failed for pre SP2
- if (tinymce.isIE6) {
- try {
- d.execCommand('BackgroundImageCache', false, true);
- } catch (e) {
- t.cssFlicker = true;
- }
- }
-
- t.fixDoc(d);
- t.events = s.ownEvents ? new tinymce.dom.EventUtils(s.proxy) : tinymce.dom.Event;
- tinymce.addUnload(t.destroy, t);
- blockElementsMap = s.schema ? s.schema.getBlockElements() : {};
-
- t.isBlock = function(node) {
- // Fix for #5446
- if (!node) {
- return false;
- }
-
- // This function is called in module pattern style since it might be executed with the wrong this scope
- var type = node.nodeType;
-
- // If it's a node then check the type and use the nodeName
- if (type)
- return !!(type === 1 && blockElementsMap[node.nodeName]);
-
- return !!blockElementsMap[node];
- };
- },
-
- fixDoc: function(doc) {
- var settings = this.settings, name;
-
- if (isIE && !tinymce.isIE11 && settings.schema) {
- // Add missing HTML 4/5 elements to IE
- ('abbr article aside audio canvas ' +
- 'details figcaption figure footer ' +
- 'header hgroup mark menu meter nav ' +
- 'output progress section summary ' +
- 'time video').replace(/\w+/g, function(name) {
- doc.createElement(name);
- });
-
- // Create all custom elements
- for (name in settings.schema.getCustomElements()) {
- doc.createElement(name);
- }
- }
- },
-
- clone: function(node, deep) {
- var self = this, clone, doc;
-
- // TODO: Add feature detection here in the future
- if (!isIE || tinymce.isIE11 || node.nodeType !== 1 || deep) {
- return node.cloneNode(deep);
- }
-
- doc = self.doc;
-
- // Make a HTML5 safe shallow copy
- if (!deep) {
- clone = doc.createElement(node.nodeName);
-
- // Copy attribs
- each(self.getAttribs(node), function(attr) {
- self.setAttrib(clone, attr.nodeName, self.getAttrib(node, attr.nodeName));
- });
-
- return clone;
- }
-/*
- // Setup HTML5 patched document fragment
- if (!self.frag) {
- self.frag = doc.createDocumentFragment();
- self.fixDoc(self.frag);
- }
-
- // Make a deep copy by adding it to the document fragment then removing it this removed the :section
- clone = doc.createElement('div');
- self.frag.appendChild(clone);
- clone.innerHTML = node.outerHTML;
- self.frag.removeChild(clone);
-*/
- return clone.firstChild;
- },
-
- getRoot : function() {
- var t = this, s = t.settings;
-
- return (s && t.get(s.root_element)) || t.doc.body;
- },
-
- getViewPort : function(w) {
- var d, b;
-
- w = !w ? this.win : w;
- d = w.document;
- b = this.boxModel ? d.documentElement : d.body;
-
- // Returns viewport size excluding scrollbars
- return {
- x : w.pageXOffset || b.scrollLeft,
- y : w.pageYOffset || b.scrollTop,
- w : w.innerWidth || b.clientWidth,
- h : w.innerHeight || b.clientHeight
- };
- },
-
- getRect : function(e) {
- var p, t = this, sr;
-
- e = t.get(e);
- p = t.getPos(e);
- sr = t.getSize(e);
-
- return {
- x : p.x,
- y : p.y,
- w : sr.w,
- h : sr.h
- };
- },
-
- getSize : function(e) {
- var t = this, w, h;
-
- e = t.get(e);
- w = t.getStyle(e, 'width');
- h = t.getStyle(e, 'height');
-
- // Non pixel value, then force offset/clientWidth
- if (w.indexOf('px') === -1)
- w = 0;
-
- // Non pixel value, then force offset/clientWidth
- if (h.indexOf('px') === -1)
- h = 0;
-
- return {
- w : parseInt(w, 10) || e.offsetWidth || e.clientWidth,
- h : parseInt(h, 10) || e.offsetHeight || e.clientHeight
- };
- },
-
- getParent : function(n, f, r) {
- return this.getParents(n, f, r, false);
- },
-
- getParents : function(n, f, r, c) {
- var t = this, na, se = t.settings, o = [];
-
- n = t.get(n);
- c = c === undefined;
-
- if (se.strict_root)
- r = r || t.getRoot();
-
- // Wrap node name as func
- if (is(f, 'string')) {
- na = f;
-
- if (f === '*') {
- f = function(n) {return n.nodeType == 1;};
- } else {
- f = function(n) {
- return t.is(n, na);
- };
- }
- }
-
- while (n) {
- if (n == r || !n.nodeType || n.nodeType === 9)
- break;
-
- if (!f || f(n)) {
- if (c)
- o.push(n);
- else
- return n;
- }
-
- n = n.parentNode;
- }
-
- return c ? o : null;
- },
-
- get : function(e) {
- var n;
-
- if (e && this.doc && typeof(e) == 'string') {
- n = e;
- e = this.doc.getElementById(e);
-
- // IE and Opera returns meta elements when they match the specified input ID, but getElementsByName seems to do the trick
- if (e && e.id !== n)
- return this.doc.getElementsByName(n)[1];
- }
-
- return e;
- },
-
- getNext : function(node, selector) {
- return this._findSib(node, selector, 'nextSibling');
- },
-
- getPrev : function(node, selector) {
- return this._findSib(node, selector, 'previousSibling');
- },
-
-
- select : function(pa, s) {
- var t = this;
-
- return tinymce.dom.Sizzle(pa, t.get(s) || t.get(t.settings.root_element) || t.doc, []);
- },
-
- is : function(n, selector) {
- var i;
-
- // If it isn't an array then try to do some simple selectors instead of Sizzle for to boost performance
- if (n.length === undefined) {
- // Simple all selector
- if (selector === '*')
- return n.nodeType == 1;
-
- // Simple selector just elements
- if (simpleSelectorRe.test(selector)) {
- selector = selector.toLowerCase().split(/,/);
- n = n.nodeName.toLowerCase();
-
- for (i = selector.length - 1; i >= 0; i--) {
- if (selector[i] == n)
- return true;
- }
-
- return false;
- }
- }
-
- return tinymce.dom.Sizzle.matches(selector, n.nodeType ? [n] : n).length > 0;
- },
-
-
- add : function(p, n, a, h, c) {
- var t = this;
-
- return this.run(p, function(p) {
- var e, k;
-
- e = is(n, 'string') ? t.doc.createElement(n) : n;
- t.setAttribs(e, a);
-
- if (h) {
- if (h.nodeType)
- e.appendChild(h);
- else
- t.setHTML(e, h);
- }
-
- return !c ? p.appendChild(e) : e;
- });
- },
-
- create : function(n, a, h) {
- return this.add(this.doc.createElement(n), n, a, h, 1);
- },
-
- createHTML : function(n, a, h) {
- var o = '', t = this, k;
-
- o += '<' + n;
-
- for (k in a) {
- if (a.hasOwnProperty(k))
- o += ' ' + k + '="' + t.encode(a[k]) + '"';
- }
-
- // A call to tinymce.is doesn't work for some odd reason on IE9 possible bug inside their JS runtime
- if (typeof(h) != "undefined")
- return o + '>' + h + '</' + n + '>';
-
- return o + ' />';
- },
-
- remove : function(node, keep_children) {
- return this.run(node, function(node) {
- var child, parent = node.parentNode;
-
- if (!parent)
- return null;
-
- if (keep_children) {
- while (child = node.firstChild) {
- // IE 8 will crash if you don't remove completely empty text nodes
- if (!tinymce.isIE || child.nodeType !== 3 || child.nodeValue)
- parent.insertBefore(child, node);
- else
- node.removeChild(child);
- }
- }
-
- return parent.removeChild(node);
- });
- },
-
- setStyle : function(n, na, v) {
- var t = this;
-
- return t.run(n, function(e) {
- var s, i;
-
- s = e.style;
-
- // Camelcase it, if needed
- na = na.replace(/-(\D)/g, function(a, b){
- return b.toUpperCase();
- });
-
- // Default px suffix on these
- if (t.pixelStyles.test(na) && (tinymce.is(v, 'number') || /^[\-0-9\.]+$/.test(v)))
- v += 'px';
-
- switch (na) {
- case 'opacity':
- // IE specific opacity
- if (isIE && ! tinymce.isIE11) {
- s.filter = v === '' ? '' : "alpha(opacity=" + (v * 100) + ")";
-
- if (!n.currentStyle || !n.currentStyle.hasLayout)
- s.display = 'inline-block';
- }
-
- // Fix for older browsers
- s[na] = s['-moz-opacity'] = s['-khtml-opacity'] = v || '';
- break;
-
- case 'float':
- (isIE && ! tinymce.isIE11) ? s.styleFloat = v : s.cssFloat = v;
- break;
-
- default:
- s[na] = v || '';
- }
-
- // Force update of the style data
- if (t.settings.update_styles)
- t.setAttrib(e, 'data-mce-style');
- });
- },
-
- getStyle : function(n, na, c) {
- n = this.get(n);
-
- if (!n)
- return;
-
- // Gecko
- if (this.doc.defaultView && c) {
- // Remove camelcase
- na = na.replace(/[A-Z]/g, function(a){
- return '-' + a;
- });
-
- try {
- return this.doc.defaultView.getComputedStyle(n, null).getPropertyValue(na);
- } catch (ex) {
- // Old safari might fail
- return null;
- }
- }
-
- // Camelcase it, if needed
- na = na.replace(/-(\D)/g, function(a, b){
- return b.toUpperCase();
- });
-
- if (na == 'float')
- na = isIE ? 'styleFloat' : 'cssFloat';
-
- // IE & Opera
- if (n.currentStyle && c)
- return n.currentStyle[na];
-
- return n.style ? n.style[na] : undefined;
- },
-
- setStyles : function(e, o) {
- var t = this, s = t.settings, ol;
-
- ol = s.update_styles;
- s.update_styles = 0;
-
- each(o, function(v, n) {
- t.setStyle(e, n, v);
- });
-
- // Update style info
- s.update_styles = ol;
- if (s.update_styles)
- t.setAttrib(e, s.cssText);
- },
-
- removeAllAttribs: function(e) {
- return this.run(e, function(e) {
- var i, attrs = e.attributes;
- for (i = attrs.length - 1; i >= 0; i--) {
- e.removeAttributeNode(attrs.item(i));
- }
- });
- },
-
- setAttrib : function(e, n, v) {
- var t = this;
-
- // Whats the point
- if (!e || !n)
- return;
-
- // Strict XML mode
- if (t.settings.strict)
- n = n.toLowerCase();
-
- return this.run(e, function(e) {
- var s = t.settings;
- var originalValue = e.getAttribute(n);
- if (v !== null) {
- switch (n) {
- case "style":
- if (!is(v, 'string')) {
- each(v, function(v, n) {
- t.setStyle(e, n, v);
- });
-
- return;
- }
-
- // No mce_style for elements with these since they might get resized by the user
- if (s.keep_values) {
- if (v && !t._isRes(v))
- e.setAttribute('data-mce-style', v, 2);
- else
- e.removeAttribute('data-mce-style', 2);
- }
-
- e.style.cssText = v;
- break;
-
- case "class":
- e.className = v || ''; // Fix IE null bug
- break;
-
- case "src":
- case "href":
- if (s.keep_values) {
- if (s.url_converter)
- v = s.url_converter.call(s.url_converter_scope || t, v, n, e);
-
- t.setAttrib(e, 'data-mce-' + n, v, 2);
- }
-
- break;
-
- case "shape":
- e.setAttribute('data-mce-style', v);
- break;
- }
- }
- if (is(v) && v !== null && v.length !== 0)
- e.setAttribute(n, '' + v, 2);
- else
- e.removeAttribute(n, 2);
-
- // fire onChangeAttrib event for attributes that have changed
- if (tinyMCE.activeEditor && originalValue != v) {
- var ed = tinyMCE.activeEditor;
- ed.onSetAttrib.dispatch(ed, e, n, v);
- }
- });
- },
-
- setAttribs : function(e, o) {
- var t = this;
-
- return this.run(e, function(e) {
- each(o, function(v, n) {
- t.setAttrib(e, n, v);
- });
- });
- },
-
- getAttrib : function(e, n, dv) {
- var v, t = this, undef;
-
- e = t.get(e);
-
- if (!e || e.nodeType !== 1)
- return dv === undef ? false : dv;
-
- if (!is(dv))
- dv = '';
-
- // Try the mce variant for these
- if (/^(src|href|style|coords|shape)$/.test(n)) {
- v = e.getAttribute("data-mce-" + n);
-
- if (v)
- return v;
- }
-
- if (isIE && t.props[n]) {
- v = e[t.props[n]];
- v = v && v.nodeValue ? v.nodeValue : v;
- }
-
- if (!v)
- v = e.getAttribute(n, 2);
-
- // Check boolean attribs
- if (/^(checked|compact|declare|defer|disabled|ismap|multiple|nohref|noshade|nowrap|readonly|selected)$/.test(n)) {
- if (e[t.props[n]] === true && v === '')
- return n;
-
- return v ? n : '';
- }
-
- // Inner input elements will override attributes on form elements
- if (e.nodeName === "FORM" && e.getAttributeNode(n))
- return e.getAttributeNode(n).nodeValue;
-
- if (n === 'style') {
- v = v || e.style.cssText;
-
- if (v) {
- v = t.serializeStyle(t.parseStyle(v), e.nodeName);
-
- if (t.settings.keep_values && !t._isRes(v))
- e.setAttribute('data-mce-style', v);
- }
- }
-
- // Remove Apple and WebKit stuff
- if (isWebKit && n === "class" && v)
- v = v.replace(/(apple|webkit)\-[a-z\-]+/gi, '');
-
- // Handle IE issues
- if (isIE) {
- switch (n) {
- case 'rowspan':
- case 'colspan':
- // IE returns 1 as default value
- if (v === 1)
- v = '';
-
- break;
-
- case 'size':
- // IE returns +0 as default value for size
- if (v === '+0' || v === 20 || v === 0)
- v = '';
-
- break;
-
- case 'width':
- case 'height':
- case 'vspace':
- case 'checked':
- case 'disabled':
- case 'readonly':
- if (v === 0)
- v = '';
-
- break;
-
- case 'hspace':
- // IE returns -1 as default value
- if (v === -1)
- v = '';
-
- break;
-
- case 'maxlength':
- case 'tabindex':
- // IE returns default value
- if (v === 32768 || v === 2147483647 || v === '32768')
- v = '';
-
- break;
-
- case 'multiple':
- case 'compact':
- case 'noshade':
- case 'nowrap':
- if (v === 65535)
- return n;
-
- return dv;
-
- case 'shape':
- v = v.toLowerCase();
- break;
-
- default:
- // IE has odd anonymous function for event attributes
- if (n.indexOf('on') === 0 && v)
- v = tinymce._replace(/^function\s+\w+\(\)\s+\{\s+(.*)\s+\}$/, '$1', '' + v);
- }
- }
-
- return (v !== undef && v !== null && v !== '') ? '' + v : dv;
- },
-
- getPos : function(n, ro) {
- var t = this, x = 0, y = 0, e, d = t.doc, r;
-
- n = t.get(n);
- ro = ro || d.body;
-
- if (n) {
- // Use getBoundingClientRect if it exists since it's faster than looping offset nodes
- if (n.getBoundingClientRect) {
- n = n.getBoundingClientRect();
- e = t.boxModel ? d.documentElement : d.body;
-
- // Add scroll offsets from documentElement or body since IE with the wrong box model will use d.body and so do WebKit
- // Also remove the body/documentelement clientTop/clientLeft on IE 6, 7 since they offset the position
- x = n.left + (d.documentElement.scrollLeft || d.body.scrollLeft) - e.clientTop;
- y = n.top + (d.documentElement.scrollTop || d.body.scrollTop) - e.clientLeft;
-
- return {x : x, y : y};
- }
-
- r = n;
- while (r && r != ro && r.nodeType) {
- x += r.offsetLeft || 0;
- y += r.offsetTop || 0;
- r = r.offsetParent;
- }
-
- r = n.parentNode;
- while (r && r != ro && r.nodeType) {
- x -= r.scrollLeft || 0;
- y -= r.scrollTop || 0;
- r = r.parentNode;
- }
- }
-
- return {x : x, y : y};
- },
-
- parseStyle : function(st) {
- return this.styles.parse(st);
- },
-
- serializeStyle : function(o, name) {
- return this.styles.serialize(o, name);
- },
-
- addStyle: function(cssText) {
- var doc = this.doc, head;
-
- // Create style element if needed
- styleElm = doc.getElementById('mceDefaultStyles');
- if (!styleElm) {
- styleElm = doc.createElement('style'),
- styleElm.id = 'mceDefaultStyles';
- styleElm.type = 'text/css';
-
- head = doc.getElementsByTagName('head')[0];
- if (head.firstChild) {
- head.insertBefore(styleElm, head.firstChild);
- } else {
- head.appendChild(styleElm);
- }
- }
-
- // Append style data to old or new style element
- if (styleElm.styleSheet) {
- styleElm.styleSheet.cssText += cssText;
- } else {
- styleElm.appendChild(doc.createTextNode(cssText));
- }
- },
-
- loadCSS : function(u) {
- var t = this, d = t.doc, head;
-
- if (!u)
- u = '';
-
- head = d.getElementsByTagName('head')[0];
-
- each(u.split(','), function(u) {
- var link;
-
- if (t.files[u])
- return;
-
- t.files[u] = true;
- link = t.create('link', {rel : 'stylesheet', href : tinymce._addVer(u)});
-
- // IE 8 has a bug where dynamically loading stylesheets would produce a 1 item remaining bug
- // This fix seems to resolve that issue by realcing the document ones a stylesheet finishes loading
- // It's ugly but it seems to work fine.
- if (isIE && !tinymce.isIE11 && d.documentMode && d.recalc) {
- link.onload = function() {
- if (d.recalc)
- d.recalc();
-
- link.onload = null;
- };
- }
-
- head.appendChild(link);
- });
- },
-
- addClass : function(e, c) {
- return this.run(e, function(e) {
- var o;
-
- if (!c)
- return 0;
-
- if (this.hasClass(e, c))
- return e.className;
-
- o = this.removeClass(e, c);
-
- return e.className = (o != '' ? (o + ' ') : '') + c;
- });
- },
-
- removeClass : function(e, c) {
- var t = this, re;
-
- return t.run(e, function(e) {
- var v;
-
- if (t.hasClass(e, c)) {
- if (!re)
- re = new RegExp("(^|\\s+)" + c + "(\\s+|$)", "g");
-
- v = e.className.replace(re, ' ');
- v = tinymce.trim(v != ' ' ? v : '');
-
- e.className = v;
-
- // Empty class attr
- if (!v) {
- e.removeAttribute('class');
- e.removeAttribute('className');
- }
-
- return v;
- }
-
- return e.className;
- });
- },
-
- hasClass : function(n, c) {
- n = this.get(n);
-
- if (!n || !c)
- return false;
-
- return (' ' + n.className + ' ').indexOf(' ' + c + ' ') !== -1;
- },
-
- show : function(e) {
- return this.setStyle(e, 'display', 'block');
- },
-
- hide : function(e) {
- return this.setStyle(e, 'display', 'none');
- },
-
- isHidden : function(e) {
- e = this.get(e);
-
- return !e || e.style.display == 'none' || this.getStyle(e, 'display') == 'none';
- },
-
- uniqueId : function(p) {
- return (!p ? 'mce_' : p) + (this.counter++);
- },
-
- setHTML : function(element, html) {
- var self = this;
-
- return self.run(element, function(element) {
- if (isIE) {
- // Remove all child nodes, IE keeps empty text nodes in DOM
- while (element.firstChild)
- element.removeChild(element.firstChild);
-
- try {
- // IE will remove comments from the beginning
- // unless you padd the contents with something
- element.innerHTML = '<br />' + html;
- element.removeChild(element.firstChild);
- } catch (ex) {
- // IE sometimes produces an unknown runtime error on innerHTML if it's an block element within a block element for example a div inside a p
- // This seems to fix this problem
-
- // Create new div with HTML contents and a BR infront to keep comments
- var newElement = self.create('div');
- newElement.innerHTML = '<br />' + html;
-
- // Add all children from div to target
- each (tinymce.grep(newElement.childNodes), function(node, i) {
- // Skip br element
- if (i && element.canHaveHTML)
- element.appendChild(node);
- });
- }
- } else
- element.innerHTML = html;
-
- return html;
- });
- },
-
- getOuterHTML : function(elm) {
- var doc, self = this;
-
- elm = self.get(elm);
-
- if (!elm)
- return null;
-
- if (elm.nodeType === 1 && self.hasOuterHTML)
- return elm.outerHTML;
-
- doc = (elm.ownerDocument || self.doc).createElement("body");
- doc.appendChild(elm.cloneNode(true));
-
- return doc.innerHTML;
- },
-
- setOuterHTML : function(e, h, d) {
- var t = this;
-
- function setHTML(e, h, d) {
- var n, tp;
-
- tp = d.createElement("body");
- tp.innerHTML = h;
-
- n = tp.lastChild;
- while (n) {
- t.insertAfter(n.cloneNode(true), e);
- n = n.previousSibling;
- }
-
- t.remove(e);
- };
-
- return this.run(e, function(e) {
- e = t.get(e);
-
- // Only set HTML on elements
- if (e.nodeType == 1) {
- d = d || e.ownerDocument || t.doc;
-
- if (isIE) {
- try {
- // Try outerHTML for IE it sometimes produces an unknown runtime error
- if (isIE && e.nodeType == 1)
- e.outerHTML = h;
- else
- setHTML(e, h, d);
- } catch (ex) {
- // Fix for unknown runtime error
- setHTML(e, h, d);
- }
- } else
- setHTML(e, h, d);
- }
- });
- },
-
- decode : Entities.decode,
-
- encode : Entities.encodeAllRaw,
-
- insertAfter : function(node, reference_node) {
- reference_node = this.get(reference_node);
-
- return this.run(node, function(node) {
- var parent, nextSibling;
-
- parent = reference_node.parentNode;
- nextSibling = reference_node.nextSibling;
-
- if (nextSibling)
- parent.insertBefore(node, nextSibling);
- else
- parent.appendChild(node);
-
- return node;
- });
- },
-
- replace : function(n, o, k) {
- var t = this;
-
- if (is(o, 'array'))
- n = n.cloneNode(true);
-
- return t.run(o, function(o) {
- if (k) {
- each(tinymce.grep(o.childNodes), function(c) {
- n.appendChild(c);
- });
- }
-
- return o.parentNode.replaceChild(n, o);
- });
- },
-
- rename : function(elm, name) {
- var t = this, newElm;
-
- if (elm.nodeName != name.toUpperCase()) {
- // Rename block element
- newElm = t.create(name);
-
- // Copy attribs to new block
- each(t.getAttribs(elm), function(attr_node) {
- t.setAttrib(newElm, attr_node.nodeName, t.getAttrib(elm, attr_node.nodeName));
- });
-
- // Replace block
- t.replace(newElm, elm, 1);
- }
-
- return newElm || elm;
- },
-
- findCommonAncestor : function(a, b) {
- var ps = a, pe;
-
- while (ps) {
- pe = b;
-
- while (pe && ps != pe)
- pe = pe.parentNode;
-
- if (ps == pe)
- break;
-
- ps = ps.parentNode;
- }
-
- if (!ps && a.ownerDocument)
- return a.ownerDocument.documentElement;
-
- return ps;
- },
-
- toHex : function(s) {
- var c = /^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*$/i.exec(s);
-
- function hex(s) {
- s = parseInt(s, 10).toString(16);
-
- return s.length > 1 ? s : '0' + s; // 0 -> 00
- };
-
- if (c) {
- s = '#' + hex(c[1]) + hex(c[2]) + hex(c[3]);
-
- return s;
- }
-
- return s;
- },
-
- getClasses : function() {
- var t = this, cl = [], i, lo = {}, f = t.settings.class_filter, ov;
-
- if (t.classes)
- return t.classes;
-
- function addClasses(s) {
- // IE style imports
- each(s.imports, function(r) {
- addClasses(r);
- });
-
- each(s.cssRules || s.rules, function(r) {
- // Real type or fake it on IE
- switch (r.type || 1) {
- // Rule
- case 1:
- if (r.selectorText) {
- each(r.selectorText.split(','), function(v) {
- v = v.replace(/^\s*|\s*$|^\s\./g, "");
-
- // Is internal or it doesn't contain a class
- if (/\.mce/.test(v) || !/\.[\w\-]+$/.test(v))
- return;
-
- // Remove everything but class name
- ov = v;
- v = tinymce._replace(/.*\.([a-z0-9_\-]+).*/i, '$1', v);
-
- // Filter classes
- if (f && !(v = f(v, ov)))
- return;
-
- if (!lo[v]) {
- cl.push({'class' : v});
- lo[v] = 1;
- }
- });
- }
- break;
-
- // Import
- case 3:
- try {
- addClasses(r.styleSheet);
- } catch (ex) {
- // Ignore
- }
-
- break;
- }
- });
- };
-
- try {
- each(t.doc.styleSheets, addClasses);
- } catch (ex) {
- // Ignore
- }
-
- if (cl.length > 0)
- t.classes = cl;
-
- return cl;
- },
-
- run : function(e, f, s) {
- var t = this, o;
-
- if (t.doc && typeof(e) === 'string')
- e = t.get(e);
-
- if (!e)
- return false;
-
- s = s || this;
- if (!e.nodeType && (e.length || e.length === 0)) {
- o = [];
-
- each(e, function(e, i) {
- if (e) {
- if (typeof(e) == 'string')
- e = t.doc.getElementById(e);
-
- o.push(f.call(s, e, i));
- }
- });
-
- return o;
- }
-
- return f.call(s, e);
- },
-
- getAttribs : function(n) {
- var o;
-
- n = this.get(n);
-
- if (!n)
- return [];
-
- if (isIE) {
- o = [];
-
- // Object will throw exception in IE
- if (n.nodeName == 'OBJECT')
- return n.attributes;
-
- // IE doesn't keep the selected attribute if you clone option elements
- if (n.nodeName === 'OPTION' && this.getAttrib(n, 'selected'))
- o.push({specified : 1, nodeName : 'selected'});
-
- // It's crazy that this is faster in IE but it's because it returns all attributes all the time
- n.cloneNode(false).outerHTML.replace(/<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi, '').replace(/[\w:\-]+/gi, function(a) {
- o.push({specified : 1, nodeName : a});
- });
-
- return o;
- }
-
- return n.attributes;
- },
-
- isEmpty : function(node, elements) {
- var self = this, i, attributes, type, walker, name, brCount = 0;
-
- node = node.firstChild;
- if (node) {
- walker = new tinymce.dom.TreeWalker(node, node.parentNode);
- elements = elements || self.schema ? self.schema.getNonEmptyElements() : null;
-
- do {
- type = node.nodeType;
-
- if (type === 1) {
- // Ignore bogus elements
- if (node.getAttribute('data-mce-bogus'))
- continue;
-
- // Keep empty elements like <img />
- name = node.nodeName.toLowerCase();
- if (elements && elements[name]) {
- // Ignore single BR elements in blocks like <p><br /></p> or <p><span><br /></span></p>
- if (name === 'br') {
- brCount++;
- continue;
- }
-
- return false;
- }
-
- // Keep elements with data-bookmark attributes or name attribute like <a name="1"></a>
- attributes = self.getAttribs(node);
- i = node.attributes.length;
- while (i--) {
- name = node.attributes[i].nodeName;
- if (name === "name" || name === 'data-mce-bookmark')
- return false;
- }
- }
-
- // Keep comment nodes
- if (type == 8)
- return false;
-
- // Keep non whitespace text nodes
- if ((type === 3 && !whiteSpaceRegExp.test(node.nodeValue)))
- return false;
- } while (node = walker.next());
- }
-
- return brCount <= 1;
- },
-
- destroy : function(s) {
- var t = this;
-
- t.win = t.doc = t.root = t.events = t.frag = null;
-
- // Manual destroy then remove unload handler
- if (!s)
- tinymce.removeUnload(t.destroy);
- },
-
- createRng : function() {
- var d = this.doc;
-
- return d.createRange ? d.createRange() : new tinymce.dom.Range(this);
- },
-
- nodeIndex : function(node, normalized) {
- var idx = 0, lastNodeType, lastNode, nodeType;
-
- if (node) {
- for (lastNodeType = node.nodeType, node = node.previousSibling, lastNode = node; node; node = node.previousSibling) {
- nodeType = node.nodeType;
-
- // Normalize text nodes
- if (normalized && nodeType == 3) {
- if (nodeType == lastNodeType || !node.nodeValue.length)
- continue;
- }
- idx++;
- lastNodeType = nodeType;
- }
- }
-
- return idx;
- },
-
- split : function(pe, e, re) {
- var t = this, r = t.createRng(), bef, aft, pa;
-
- // W3C valid browsers tend to leave empty nodes to the left/right side of the contents, this makes sense
- // but we don't want that in our code since it serves no purpose for the end user
- // For example if this is chopped:
- // <p>text 1<span><b>CHOP</b></span>text 2</p>
- // would produce:
- // <p>text 1<span></span></p><b>CHOP</b><p><span></span>text 2</p>
- // this function will then trim of empty edges and produce:
- // <p>text 1</p><b>CHOP</b><p>text 2</p>
- function trim(node) {
- var i, children = node.childNodes, type = node.nodeType;
-
- function surroundedBySpans(node) {
- var previousIsSpan = node.previousSibling && node.previousSibling.nodeName == 'SPAN';
- var nextIsSpan = node.nextSibling && node.nextSibling.nodeName == 'SPAN';
- return previousIsSpan && nextIsSpan;
- }
-
- if (type == 1 && node.getAttribute('data-mce-type') == 'bookmark')
- return;
-
- for (i = children.length - 1; i >= 0; i--)
- trim(children[i]);
-
- if (type != 9) {
- // Keep non whitespace text nodes
- if (type == 3 && node.nodeValue.length > 0) {
- // If parent element isn't a block or there isn't any useful contents for example "<p> </p>"
- // Also keep text nodes with only spaces if surrounded by spans.
- // eg. "<p><span>a</span> <span>b</span></p>" should keep space between a and b
- var trimmedLength = tinymce.trim(node.nodeValue).length;
- if (!t.isBlock(node.parentNode) || trimmedLength > 0 || trimmedLength === 0 && surroundedBySpans(node))
- return;
- } else if (type == 1) {
- // If the only child is a bookmark then move it up
- children = node.childNodes;
- if (children.length == 1 && children[0] && children[0].nodeType == 1 && children[0].getAttribute('data-mce-type') == 'bookmark')
- node.parentNode.insertBefore(children[0], node);
-
- // Keep non empty elements or img, hr etc
- if (children.length || /^(br|hr|input|img)$/i.test(node.nodeName))
- return;
- }
-
- t.remove(node);
- }
-
- return node;
- };
-
- if (pe && e) {
- // Get before chunk
- r.setStart(pe.parentNode, t.nodeIndex(pe));
- r.setEnd(e.parentNode, t.nodeIndex(e));
- bef = r.extractContents();
-
- // Get after chunk
- r = t.createRng();
- r.setStart(e.parentNode, t.nodeIndex(e) + 1);
- r.setEnd(pe.parentNode, t.nodeIndex(pe) + 1);
- aft = r.extractContents();
-
- // Insert before chunk
- pa = pe.parentNode;
- pa.insertBefore(trim(bef), pe);
-
- // Insert middle chunk
- if (re)
- pa.replaceChild(re, e);
- else
- pa.insertBefore(e, pe);
-
- // Insert after chunk
- pa.insertBefore(trim(aft), pe);
- t.remove(pe);
-
- return re || e;
- }
- },
-
- bind : function(target, name, func, scope) {
- return this.events.add(target, name, func, scope || this);
- },
-
- unbind : function(target, name, func) {
- return this.events.remove(target, name, func);
- },
-
- fire : function(target, name, evt) {
- return this.events.fire(target, name, evt);
- },
-
- // Returns the content editable state of a node
- getContentEditable: function(node) {
- var contentEditable;
-
- // Check type
- if (node.nodeType != 1) {
- return null;
- }
-
- // Check for fake content editable
- contentEditable = node.getAttribute("data-mce-contenteditable");
- if (contentEditable && contentEditable !== "inherit") {
- return contentEditable;
- }
-
- // Check for real content editable
- return node.contentEditable !== "inherit" ? node.contentEditable : null;
- },
-
-
- _findSib : function(node, selector, name) {
- var t = this, f = selector;
-
- if (node) {
- // If expression make a function of it using is
- if (is(f, 'string')) {
- f = function(node) {
- return t.is(node, selector);
- };
- }
-
- // Loop all siblings
- for (node = node[name]; node; node = node[name]) {
- if (f(node))
- return node;
- }
- }
-
- return null;
- },
-
- _isRes : function(c) {
- // Is live resizble element
- return /^(top|left|bottom|right|width|height)/i.test(c) || /;\s*(top|left|bottom|right|width|height)/i.test(c);
- }
-
- /*
- walk : function(n, f, s) {
- var d = this.doc, w;
-
- if (d.createTreeWalker) {
- w = d.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, false);
-
- while ((n = w.nextNode()) != null)
- f.call(s || this, n);
- } else
- tinymce.walk(n, f, 'childNodes', s);
- }
- */
-
- /*
- toRGB : function(s) {
- var c = /^\s*?#([0-9A-F]{2})([0-9A-F]{1,2})([0-9A-F]{2})?\s*?$/.exec(s);
-
- if (c) {
- // #FFF -> #FFFFFF
- if (!is(c[3]))
- c[3] = c[2] = c[1];
-
- return "rgb(" + parseInt(c[1], 16) + "," + parseInt(c[2], 16) + "," + parseInt(c[3], 16) + ")";
- }
-
- return s;
- }
- */
- });
-
- tinymce.DOM = new tinymce.dom.DOMUtils(document, {process_html : 0});
-})(tinymce);
-
-(function(ns) {
- // Range constructor
- function Range(dom) {
- var t = this,
- doc = dom.doc,
- EXTRACT = 0,
- CLONE = 1,
- DELETE = 2,
- TRUE = true,
- FALSE = false,
- START_OFFSET = 'startOffset',
- START_CONTAINER = 'startContainer',
- END_CONTAINER = 'endContainer',
- END_OFFSET = 'endOffset',
- extend = tinymce.extend,
- nodeIndex = dom.nodeIndex;
-
- extend(t, {
- // Inital states
- startContainer : doc,
- startOffset : 0,
- endContainer : doc,
- endOffset : 0,
- collapsed : TRUE,
- commonAncestorContainer : doc,
-
- // Range constants
- START_TO_START : 0,
- START_TO_END : 1,
- END_TO_END : 2,
- END_TO_START : 3,
-
- // Public methods
- setStart : setStart,
- setEnd : setEnd,
- setStartBefore : setStartBefore,
- setStartAfter : setStartAfter,
- setEndBefore : setEndBefore,
- setEndAfter : setEndAfter,
- collapse : collapse,
- selectNode : selectNode,
- selectNodeContents : selectNodeContents,
- compareBoundaryPoints : compareBoundaryPoints,
- deleteContents : deleteContents,
- extractContents : extractContents,
- cloneContents : cloneContents,
- insertNode : insertNode,
- surroundContents : surroundContents,
- cloneRange : cloneRange,
- toStringIE : toStringIE
- });
-
- function createDocumentFragment() {
- return doc.createDocumentFragment();
- };
-
- function setStart(n, o) {
- _setEndPoint(TRUE, n, o);
- };
-
- function setEnd(n, o) {
- _setEndPoint(FALSE, n, o);
- };
-
- function setStartBefore(n) {
- setStart(n.parentNode, nodeIndex(n));
- };
-
- function setStartAfter(n) {
- setStart(n.parentNode, nodeIndex(n) + 1);
- };
-
- function setEndBefore(n) {
- setEnd(n.parentNode, nodeIndex(n));
- };
-
- function setEndAfter(n) {
- setEnd(n.parentNode, nodeIndex(n) + 1);
- };
-
- function collapse(ts) {
- if (ts) {
- t[END_CONTAINER] = t[START_CONTAINER];
- t[END_OFFSET] = t[START_OFFSET];
- } else {
- t[START_CONTAINER] = t[END_CONTAINER];
- t[START_OFFSET] = t[END_OFFSET];
- }
-
- t.collapsed = TRUE;
- };
-
- function selectNode(n) {
- setStartBefore(n);
- setEndAfter(n);
- };
-
- function selectNodeContents(n) {
- setStart(n, 0);
- setEnd(n, n.nodeType === 1 ? n.childNodes.length : n.nodeValue.length);
- };
-
- function compareBoundaryPoints(h, r) {
- var sc = t[START_CONTAINER], so = t[START_OFFSET], ec = t[END_CONTAINER], eo = t[END_OFFSET],
- rsc = r.startContainer, rso = r.startOffset, rec = r.endContainer, reo = r.endOffset;
-
- // Check START_TO_START
- if (h === 0)
- return _compareBoundaryPoints(sc, so, rsc, rso);
-
- // Check START_TO_END
- if (h === 1)
- return _compareBoundaryPoints(ec, eo, rsc, rso);
-
- // Check END_TO_END
- if (h === 2)
- return _compareBoundaryPoints(ec, eo, rec, reo);
-
- // Check END_TO_START
- if (h === 3)
- return _compareBoundaryPoints(sc, so, rec, reo);
- };
-
- function deleteContents() {
- _traverse(DELETE);
- };
-
- function extractContents() {
- return _traverse(EXTRACT);
- };
-
- function cloneContents() {
- return _traverse(CLONE);
- };
-
- function insertNode(n) {
- var startContainer = this[START_CONTAINER],
- startOffset = this[START_OFFSET], nn, o;
-
- // Node is TEXT_NODE or CDATA
- if ((startContainer.nodeType === 3 || startContainer.nodeType === 4) && startContainer.nodeValue) {
- if (!startOffset) {
- // At the start of text
- startContainer.parentNode.insertBefore(n, startContainer);
- } else if (startOffset >= startContainer.nodeValue.length) {
- // At the end of text
- dom.insertAfter(n, startContainer);
- } else {
- // Middle, need to split
- nn = startContainer.splitText(startOffset);
- startContainer.parentNode.insertBefore(n, nn);
- }
- } else {
- // Insert element node
- if (startContainer.childNodes.length > 0)
- o = startContainer.childNodes[startOffset];
-
- if (o)
- startContainer.insertBefore(n, o);
- else
- startContainer.appendChild(n);
- }
- };
-
- function surroundContents(n) {
- var f = t.extractContents();
-
- t.insertNode(n);
- n.appendChild(f);
- t.selectNode(n);
- };
-
- function cloneRange() {
- return extend(new Range(dom), {
- startContainer : t[START_CONTAINER],
- startOffset : t[START_OFFSET],
- endContainer : t[END_CONTAINER],
- endOffset : t[END_OFFSET],
- collapsed : t.collapsed,
- commonAncestorContainer : t.commonAncestorContainer
- });
- };
-
- // Private methods
-
- function _getSelectedNode(container, offset) {
- var child;
-
- if (container.nodeType == 3 /* TEXT_NODE */)
- return container;
-
- if (offset < 0)
- return container;
-
- child = container.firstChild;
- while (child && offset > 0) {
- --offset;
- child = child.nextSibling;
- }
-
- if (child)
- return child;
-
- return container;
- };
-
- function _isCollapsed() {
- return (t[START_CONTAINER] == t[END_CONTAINER] && t[START_OFFSET] == t[END_OFFSET]);
- };
-
- function _compareBoundaryPoints(containerA, offsetA, containerB, offsetB) {
- var c, offsetC, n, cmnRoot, childA, childB;
-
- // In the first case the boundary-points have the same container. A is before B
- // if its offset is less than the offset of B, A is equal to B if its offset is
- // equal to the offset of B, and A is after B if its offset is greater than the
- // offset of B.
- if (containerA == containerB) {
- if (offsetA == offsetB)
- return 0; // equal
-
- if (offsetA < offsetB)
- return -1; // before
-
- return 1; // after
- }
-
- // In the second case a child node C of the container of A is an ancestor
- // container of B. In this case, A is before B if the offset of A is less than or
- // equal to the index of the child node C and A is after B otherwise.
- c = containerB;
- while (c && c.parentNode != containerA)
- c = c.parentNode;
-
- if (c) {
- offsetC = 0;
- n = containerA.firstChild;
-
- while (n != c && offsetC < offsetA) {
- offsetC++;
- n = n.nextSibling;
- }
-
- if (offsetA <= offsetC)
- return -1; // before
-
- return 1; // after
- }
-
- // In the third case a child node C of the container of B is an ancestor container
- // of A. In this case, A is before B if the index of the child node C is less than
- // the offset of B and A is after B otherwise.
- c = containerA;
- while (c && c.parentNode != containerB) {
- c = c.parentNode;
- }
-
- if (c) {
- offsetC = 0;
- n = containerB.firstChild;
-
- while (n != c && offsetC < offsetB) {
- offsetC++;
- n = n.nextSibling;
- }
-
- if (offsetC < offsetB)
- return -1; // before
-
- return 1; // after
- }
-
- // In the fourth case, none of three other cases hold: the containers of A and B
- // are siblings or descendants of sibling nodes. In this case, A is before B if
- // the container of A is before the container of B in a pre-order traversal of the
- // Ranges' context tree and A is after B otherwise.
- cmnRoot = dom.findCommonAncestor(containerA, containerB);
- childA = containerA;
-
- while (childA && childA.parentNode != cmnRoot)
- childA = childA.parentNode;
-
- if (!childA)
- childA = cmnRoot;
-
- childB = containerB;
- while (childB && childB.parentNode != cmnRoot)
- childB = childB.parentNode;
-
- if (!childB)
- childB = cmnRoot;
-
- if (childA == childB)
- return 0; // equal
-
- n = cmnRoot.firstChild;
- while (n) {
- if (n == childA)
- return -1; // before
-
- if (n == childB)
- return 1; // after
-
- n = n.nextSibling;
- }
- };
-
- function _setEndPoint(st, n, o) {
- var ec, sc;
-
- if (st) {
- t[START_CONTAINER] = n;
- t[START_OFFSET] = o;
- } else {
- t[END_CONTAINER] = n;
- t[END_OFFSET] = o;
- }
-
- // If one boundary-point of a Range is set to have a root container
- // other than the current one for the Range, the Range is collapsed to
- // the new position. This enforces the restriction that both boundary-
- // points of a Range must have the same root container.
- ec = t[END_CONTAINER];
- while (ec.parentNode)
- ec = ec.parentNode;
-
- sc = t[START_CONTAINER];
- while (sc.parentNode)
- sc = sc.parentNode;
-
- if (sc == ec) {
- // The start position of a Range is guaranteed to never be after the
- // end position. To enforce this restriction, if the start is set to
- // be at a position after the end, the Range is collapsed to that
- // position.
- if (_compareBoundaryPoints(t[START_CONTAINER], t[START_OFFSET], t[END_CONTAINER], t[END_OFFSET]) > 0)
- t.collapse(st);
- } else
- t.collapse(st);
-
- t.collapsed = _isCollapsed();
- t.commonAncestorContainer = dom.findCommonAncestor(t[START_CONTAINER], t[END_CONTAINER]);
- };
-
- function _traverse(how) {
- var c, endContainerDepth = 0, startContainerDepth = 0, p, depthDiff, startNode, endNode, sp, ep;
-
- if (t[START_CONTAINER] == t[END_CONTAINER])
- return _traverseSameContainer(how);
-
- for (c = t[END_CONTAINER], p = c.parentNode; p; c = p, p = p.parentNode) {
- if (p == t[START_CONTAINER])
- return _traverseCommonStartContainer(c, how);
-
- ++endContainerDepth;
- }
-
- for (c = t[START_CONTAINER], p = c.parentNode; p; c = p, p = p.parentNode) {
- if (p == t[END_CONTAINER])
- return _traverseCommonEndContainer(c, how);
-
- ++startContainerDepth;
- }
-
- depthDiff = startContainerDepth - endContainerDepth;
-
- startNode = t[START_CONTAINER];
- while (depthDiff > 0) {
- startNode = startNode.parentNode;
- depthDiff--;
- }
-
- endNode = t[END_CONTAINER];
- while (depthDiff < 0) {
- endNode = endNode.parentNode;
- depthDiff++;
- }
-
- // ascend the ancestor hierarchy until we have a common parent.
- for (sp = startNode.parentNode, ep = endNode.parentNode; sp != ep; sp = sp.parentNode, ep = ep.parentNode) {
- startNode = sp;
- endNode = ep;
- }
-
- return _traverseCommonAncestors(startNode, endNode, how);
- };
-
- function _traverseSameContainer(how) {
- var frag, s, sub, n, cnt, sibling, xferNode, start, len;
-
- if (how != DELETE)
- frag = createDocumentFragment();
-
- // If selection is empty, just return the fragment
- if (t[START_OFFSET] == t[END_OFFSET])
- return frag;
-
- // Text node needs special case handling
- if (t[START_CONTAINER].nodeType == 3 /* TEXT_NODE */) {
- // get the substring
- s = t[START_CONTAINER].nodeValue;
- sub = s.substring(t[START_OFFSET], t[END_OFFSET]);
-
- // set the original text node to its new value
- if (how != CLONE) {
- n = t[START_CONTAINER];
- start = t[START_OFFSET];
- len = t[END_OFFSET] - t[START_OFFSET];
-
- if (start === 0 && len >= n.nodeValue.length - 1) {
- n.parentNode.removeChild(n);
- } else {
- n.deleteData(start, len);
- }
-
- // Nothing is partially selected, so collapse to start point
- t.collapse(TRUE);
- }
-
- if (how == DELETE)
- return;
-
- if (sub.length > 0) {
- frag.appendChild(doc.createTextNode(sub));
- }
-
- return frag;
- }
-
- // Copy nodes between the start/end offsets.
- n = _getSelectedNode(t[START_CONTAINER], t[START_OFFSET]);
- cnt = t[END_OFFSET] - t[START_OFFSET];
-
- while (n && cnt > 0) {
- sibling = n.nextSibling;
- xferNode = _traverseFullySelected(n, how);
-
- if (frag)
- frag.appendChild( xferNode );
-
- --cnt;
- n = sibling;
- }
-
- // Nothing is partially selected, so collapse to start point
- if (how != CLONE)
- t.collapse(TRUE);
-
- return frag;
- };
-
- function _traverseCommonStartContainer(endAncestor, how) {
- var frag, n, endIdx, cnt, sibling, xferNode;
-
- if (how != DELETE)
- frag = createDocumentFragment();
-
- n = _traverseRightBoundary(endAncestor, how);
-
- if (frag)
- frag.appendChild(n);
-
- endIdx = nodeIndex(endAncestor);
- cnt = endIdx - t[START_OFFSET];
-
- if (cnt <= 0) {
- // Collapse to just before the endAncestor, which
- // is partially selected.
- if (how != CLONE) {
- t.setEndBefore(endAncestor);
- t.collapse(FALSE);
- }
-
- return frag;
- }
-
- n = endAncestor.previousSibling;
- while (cnt > 0) {
- sibling = n.previousSibling;
- xferNode = _traverseFullySelected(n, how);
-
- if (frag)
- frag.insertBefore(xferNode, frag.firstChild);
-
- --cnt;
- n = sibling;
- }
-
- // Collapse to just before the endAncestor, which
- // is partially selected.
- if (how != CLONE) {
- t.setEndBefore(endAncestor);
- t.collapse(FALSE);
- }
-
- return frag;
- };
-
- function _traverseCommonEndContainer(startAncestor, how) {
- var frag, startIdx, n, cnt, sibling, xferNode;
-
- if (how != DELETE)
- frag = createDocumentFragment();
-
- n = _traverseLeftBoundary(startAncestor, how);
- if (frag)
- frag.appendChild(n);
-
- startIdx = nodeIndex(startAncestor);
- ++startIdx; // Because we already traversed it
-
- cnt = t[END_OFFSET] - startIdx;
- n = startAncestor.nextSibling;
- while (n && cnt > 0) {
- sibling = n.nextSibling;
- xferNode = _traverseFullySelected(n, how);
-
- if (frag)
- frag.appendChild(xferNode);
-
- --cnt;
- n = sibling;
- }
-
- if (how != CLONE) {
- t.setStartAfter(startAncestor);
- t.collapse(TRUE);
- }
-
- return frag;
- };
-
- function _traverseCommonAncestors(startAncestor, endAncestor, how) {
- var n, frag, commonParent, startOffset, endOffset, cnt, sibling, nextSibling;
-
- if (how != DELETE)
- frag = createDocumentFragment();
-
- n = _traverseLeftBoundary(startAncestor, how);
- if (frag)
- frag.appendChild(n);
-
- commonParent = startAncestor.parentNode;
- startOffset = nodeIndex(startAncestor);
- endOffset = nodeIndex(endAncestor);
- ++startOffset;
-
- cnt = endOffset - startOffset;
- sibling = startAncestor.nextSibling;
-
- while (cnt > 0) {
- nextSibling = sibling.nextSibling;
- n = _traverseFullySelected(sibling, how);
-
- if (frag)
- frag.appendChild(n);
-
- sibling = nextSibling;
- --cnt;
- }
-
- n = _traverseRightBoundary(endAncestor, how);
-
- if (frag)
- frag.appendChild(n);
-
- if (how != CLONE) {
- t.setStartAfter(startAncestor);
- t.collapse(TRUE);
- }
-
- return frag;
- };
-
- function _traverseRightBoundary(root, how) {
- var next = _getSelectedNode(t[END_CONTAINER], t[END_OFFSET] - 1), parent, clonedParent, prevSibling, clonedChild, clonedGrandParent, isFullySelected = next != t[END_CONTAINER];
-
- if (next == root)
- return _traverseNode(next, isFullySelected, FALSE, how);
-
- parent = next.parentNode;
- clonedParent = _traverseNode(parent, FALSE, FALSE, how);
-
- while (parent) {
- while (next) {
- prevSibling = next.previousSibling;
- clonedChild = _traverseNode(next, isFullySelected, FALSE, how);
-
- if (how != DELETE)
- clonedParent.insertBefore(clonedChild, clonedParent.firstChild);
-
- isFullySelected = TRUE;
- next = prevSibling;
- }
-
- if (parent == root)
- return clonedParent;
-
- next = parent.previousSibling;
- parent = parent.parentNode;
-
- clonedGrandParent = _traverseNode(parent, FALSE, FALSE, how);
-
- if (how != DELETE)
- clonedGrandParent.appendChild(clonedParent);
-
- clonedParent = clonedGrandParent;
- }
- };
-
- function _traverseLeftBoundary(root, how) {
- var next = _getSelectedNode(t[START_CONTAINER], t[START_OFFSET]), isFullySelected = next != t[START_CONTAINER], parent, clonedParent, nextSibling, clonedChild, clonedGrandParent;
-
- if (next == root)
- return _traverseNode(next, isFullySelected, TRUE, how);
-
- parent = next.parentNode;
- clonedParent = _traverseNode(parent, FALSE, TRUE, how);
-
- while (parent) {
- while (next) {
- nextSibling = next.nextSibling;
- clonedChild = _traverseNode(next, isFullySelected, TRUE, how);
-
- if (how != DELETE)
- clonedParent.appendChild(clonedChild);
-
- isFullySelected = TRUE;
- next = nextSibling;
- }
-
- if (parent == root)
- return clonedParent;
-
- next = parent.nextSibling;
- parent = parent.parentNode;
-
- clonedGrandParent = _traverseNode(parent, FALSE, TRUE, how);
-
- if (how != DELETE)
- clonedGrandParent.appendChild(clonedParent);
-
- clonedParent = clonedGrandParent;
- }
- };
-
- function _traverseNode(n, isFullySelected, isLeft, how) {
- var txtValue, newNodeValue, oldNodeValue, offset, newNode;
-
- if (isFullySelected)
- return _traverseFullySelected(n, how);
-
- if (n.nodeType == 3 /* TEXT_NODE */) {
- txtValue = n.nodeValue;
-
- if (isLeft) {
- offset = t[START_OFFSET];
- newNodeValue = txtValue.substring(offset);
- oldNodeValue = txtValue.substring(0, offset);
- } else {
- offset = t[END_OFFSET];
- newNodeValue = txtValue.substring(0, offset);
- oldNodeValue = txtValue.substring(offset);
- }
-
- if (how != CLONE)
- n.nodeValue = oldNodeValue;
-
- if (how == DELETE)
- return;
-
- newNode = dom.clone(n, FALSE);
- newNode.nodeValue = newNodeValue;
-
- return newNode;
- }
-
- if (how == DELETE)
- return;
-
- return dom.clone(n, FALSE);
- };
-
- function _traverseFullySelected(n, how) {
- if (how != DELETE)
- return how == CLONE ? dom.clone(n, TRUE) : n;
-
- n.parentNode.removeChild(n);
- };
-
- function toStringIE() {
- return dom.create('body', null, cloneContents()).outerText;
- }
-
- return t;
- };
-
- ns.Range = Range;
-
- // Older IE versions doesn't let you override toString by it's constructor so we have to stick it in the prototype
- Range.prototype.toString = function() {
- return this.toStringIE();
- };
-})(tinymce.dom);
-
-(function() {
- function Selection(selection) {
- var self = this, dom = selection.dom, TRUE = true, FALSE = false;
-
- function getPosition(rng, start) {
- var checkRng, startIndex = 0, endIndex, inside,
- children, child, offset, index, position = -1, parent;
-
- // Setup test range, collapse it and get the parent
- checkRng = rng.duplicate();
- checkRng.collapse(start);
- parent = checkRng.parentElement();
-
- // Check if the selection is within the right document
- if (parent.ownerDocument !== selection.dom.doc)
- return;
-
- // IE will report non editable elements as it's parent so look for an editable one
- while (parent.contentEditable === "false") {
- parent = parent.parentNode;
- }
-
- // If parent doesn't have any children then return that we are inside the element
- if (!parent.hasChildNodes()) {
- return {node : parent, inside : 1};
- }
-
- // Setup node list and endIndex
- children = parent.children;
- endIndex = children.length - 1;
-
- // Perform a binary search for the position
- while (startIndex <= endIndex) {
- index = Math.floor((startIndex + endIndex) / 2);
-
- // Move selection to node and compare the ranges
- child = children[index];
- checkRng.moveToElementText(child);
- position = checkRng.compareEndPoints(start ? 'StartToStart' : 'EndToEnd', rng);
-
- // Before/after or an exact match
- if (position > 0) {
- endIndex = index - 1;
- } else if (position < 0) {
- startIndex = index + 1;
- } else {
- return {node : child};
- }
- }
-
- // Check if child position is before or we didn't find a position
- if (position < 0) {
- // No element child was found use the parent element and the offset inside that
- if (!child) {
- checkRng.moveToElementText(parent);
- checkRng.collapse(true);
- child = parent;
- inside = true;
- } else
- checkRng.collapse(false);
-
- // Walk character by character in text node until we hit the selected range endpoint, hit the end of document or parent isn't the right one
- // We need to walk char by char since rng.text or rng.htmlText will trim line endings
- offset = 0;
- while (checkRng.compareEndPoints(start ? 'StartToStart' : 'StartToEnd', rng) !== 0) {
- if (checkRng.move('character', 1) === 0 || parent != checkRng.parentElement()) {
- break;
- }
-
- offset++;
- }
- } else {
- // Child position is after the selection endpoint
- checkRng.collapse(true);
-
- // Walk character by character in text node until we hit the selected range endpoint, hit the end of document or parent isn't the right one
- offset = 0;
- while (checkRng.compareEndPoints(start ? 'StartToStart' : 'StartToEnd', rng) !== 0) {
- if (checkRng.move('character', -1) === 0 || parent != checkRng.parentElement()) {
- break;
- }
-
- offset++;
- }
- }
-
- return {node : child, position : position, offset : offset, inside : inside};
- };
-
- // Returns a W3C DOM compatible range object by using the IE Range API
- function getRange() {
- var ieRange = selection.getRng(), domRange = dom.createRng(), element, collapsed, tmpRange, element2, bookmark, fail;
-
- // If selection is outside the current document just return an empty range
- element = ieRange.item ? ieRange.item(0) : ieRange.parentElement();
- if (element.ownerDocument != dom.doc)
- return domRange;
-
- collapsed = selection.isCollapsed();
-
- // Handle control selection
- if (ieRange.item) {
- domRange.setStart(element.parentNode, dom.nodeIndex(element));
- domRange.setEnd(domRange.startContainer, domRange.startOffset + 1);
-
- return domRange;
- }
-
- function findEndPoint(start) {
- var endPoint = getPosition(ieRange, start), container, offset, textNodeOffset = 0, sibling, undef, nodeValue;
-
- container = endPoint.node;
- offset = endPoint.offset;
-
- if (endPoint.inside && !container.hasChildNodes()) {
- domRange[start ? 'setStart' : 'setEnd'](container, 0);
- return;
- }
-
- if (offset === undef) {
- domRange[start ? 'setStartBefore' : 'setEndAfter'](container);
- return;
- }
-
- if (endPoint.position < 0) {
- sibling = endPoint.inside ? container.firstChild : container.nextSibling;
-
- if (!sibling) {
- domRange[start ? 'setStartAfter' : 'setEndAfter'](container);
- return;
- }
-
- if (!offset) {
- if (sibling.nodeType == 3)
- domRange[start ? 'setStart' : 'setEnd'](sibling, 0);
- else
- domRange[start ? 'setStartBefore' : 'setEndBefore'](sibling);
-
- return;
- }
-
- // Find the text node and offset
- while (sibling) {
- nodeValue = sibling.nodeValue;
- textNodeOffset += nodeValue.length;
-
- // We are at or passed the position we where looking for
- if (textNodeOffset >= offset) {
- container = sibling;
- textNodeOffset -= offset;
- textNodeOffset = nodeValue.length - textNodeOffset;
- break;
- }
-
- sibling = sibling.nextSibling;
- }
- } else {
- // Find the text node and offset
- sibling = container.previousSibling;
-
- if (!sibling)
- return domRange[start ? 'setStartBefore' : 'setEndBefore'](container);
-
- // If there isn't any text to loop then use the first position
- if (!offset) {
- if (container.nodeType == 3)
- domRange[start ? 'setStart' : 'setEnd'](sibling, container.nodeValue.length);
- else
- domRange[start ? 'setStartAfter' : 'setEndAfter'](sibling);
-
- return;
- }
-
- while (sibling) {
- textNodeOffset += sibling.nodeValue.length;
-
- // We are at or passed the position we where looking for
- if (textNodeOffset >= offset) {
- container = sibling;
- textNodeOffset -= offset;
- break;
- }
-
- sibling = sibling.previousSibling;
- }
- }
-
- domRange[start ? 'setStart' : 'setEnd'](container, textNodeOffset);
- };
-
- try {
- // Find start point
- findEndPoint(true);
-
- // Find end point if needed
- if (!collapsed)
- findEndPoint();
- } catch (ex) {
- // IE has a nasty bug where text nodes might throw "invalid argument" when you
- // access the nodeValue or other properties of text nodes. This seems to happend when
- // text nodes are split into two nodes by a delete/backspace call. So lets detect it and try to fix it.
- if (ex.number == -2147024809) {
- // Get the current selection
- bookmark = self.getBookmark(2);
-
- // Get start element
- tmpRange = ieRange.duplicate();
- tmpRange.collapse(true);
- element = tmpRange.parentElement();
-
- // Get end element
- if (!collapsed) {
- tmpRange = ieRange.duplicate();
- tmpRange.collapse(false);
- element2 = tmpRange.parentElement();
- element2.innerHTML = element2.innerHTML;
- }
-
- // Remove the broken elements
- element.innerHTML = element.innerHTML;
-
- // Restore the selection
- self.moveToBookmark(bookmark);
-
- // Since the range has moved we need to re-get it
- ieRange = selection.getRng();
-
- // Find start point
- findEndPoint(true);
-
- // Find end point if needed
- if (!collapsed)
- findEndPoint();
- } else
- throw ex; // Throw other errors
- }
-
- return domRange;
- };
-
- this.getBookmark = function(type) {
- var rng = selection.getRng(), start, end, bookmark = {};
-
- function getIndexes(node) {
- var parent, root, children, i, indexes = [];
-
- parent = node.parentNode;
- root = dom.getRoot().parentNode;
-
- while (parent != root && parent.nodeType !== 9) {
- children = parent.children;
-
- i = children.length;
- while (i--) {
- if (node === children[i]) {
- indexes.push(i);
- break;
- }
- }
-
- node = parent;
- parent = parent.parentNode;
- }
-
- return indexes;
- };
-
- function getBookmarkEndPoint(start) {
- var position;
-
- position = getPosition(rng, start);
- if (position) {
- return {
- position : position.position,
- offset : position.offset,
- indexes : getIndexes(position.node),
- inside : position.inside
- };
- }
- };
-
- // Non ubstructive bookmark
- if (type === 2) {
- // Handle text selection
- if (!rng.item) {
- bookmark.start = getBookmarkEndPoint(true);
-
- if (!selection.isCollapsed())
- bookmark.end = getBookmarkEndPoint();
- } else
- bookmark.start = {ctrl : true, indexes : getIndexes(rng.item(0))};
- }
-
- return bookmark;
- };
-
- this.moveToBookmark = function(bookmark) {
- var rng, body = dom.doc.body;
-
- function resolveIndexes(indexes) {
- var node, i, idx, children;
-
- node = dom.getRoot();
- for (i = indexes.length - 1; i >= 0; i--) {
- children = node.children;
- idx = indexes[i];
-
- if (idx <= children.length - 1) {
- node = children[idx];
- }
- }
-
- return node;
- };
-
- function setBookmarkEndPoint(start) {
- var endPoint = bookmark[start ? 'start' : 'end'], moveLeft, moveRng, undef;
-
- if (endPoint) {
- moveLeft = endPoint.position > 0;
-
- moveRng = body.createTextRange();
- moveRng.moveToElementText(resolveIndexes(endPoint.indexes));
-
- offset = endPoint.offset;
- if (offset !== undef) {
- moveRng.collapse(endPoint.inside || moveLeft);
- moveRng.moveStart('character', moveLeft ? -offset : offset);
- } else
- moveRng.collapse(start);
-
- rng.setEndPoint(start ? 'StartToStart' : 'EndToStart', moveRng);
-
- if (start)
- rng.collapse(true);
- }
- };
-
- if (bookmark.start) {
- if (bookmark.start.ctrl) {
- rng = body.createControlRange();
- rng.addElement(resolveIndexes(bookmark.start.indexes));
- rng.select();
- } else {
- rng = body.createTextRange();
- setBookmarkEndPoint(true);
- setBookmarkEndPoint();
- rng.select();
- }
- }
- };
-
- this.addRange = function(rng) {
- var ieRng, ctrlRng, startContainer, startOffset, endContainer, endOffset, sibling,
- doc = selection.dom.doc, body = doc.body, nativeRng, ctrlElm;
-
- function setEndPoint(start) {
- var container, offset, marker, tmpRng, nodes;
-
- marker = dom.create('a');
- container = start ? startContainer : endContainer;
- offset = start ? startOffset : endOffset;
- tmpRng = ieRng.duplicate();
-
- if (container == doc || container == doc.documentElement) {
- container = body;
- offset = 0;
- }
-
- if (container.nodeType == 3) {
- container.parentNode.insertBefore(marker, container);
- tmpRng.moveToElementText(marker);
- tmpRng.moveStart('character', offset);
- dom.remove(marker);
- ieRng.setEndPoint(start ? 'StartToStart' : 'EndToEnd', tmpRng);
- } else {
- nodes = container.childNodes;
-
- if (nodes.length) {
- if (offset >= nodes.length) {
- dom.insertAfter(marker, nodes[nodes.length - 1]);
- } else {
- container.insertBefore(marker, nodes[offset]);
- }
-
- tmpRng.moveToElementText(marker);
- } else if (container.canHaveHTML) {
- // Empty node selection for example <div>|</div>
- // Setting innerHTML with a span marker then remove that marker seems to keep empty block elements open
- container.innerHTML = '<span>\uFEFF</span>';
- marker = container.firstChild;
- tmpRng.moveToElementText(marker);
- tmpRng.collapse(FALSE); // Collapse false works better than true for some odd reason
- }
-
- ieRng.setEndPoint(start ? 'StartToStart' : 'EndToEnd', tmpRng);
- dom.remove(marker);
- }
- }
-
- // Setup some shorter versions
- startContainer = rng.startContainer;
- startOffset = rng.startOffset;
- endContainer = rng.endContainer;
- endOffset = rng.endOffset;
- ieRng = body.createTextRange();
-
- // If single element selection then try making a control selection out of it
- if (startContainer == endContainer && startContainer.nodeType == 1) {
- // Trick to place the caret inside an empty block element like <p></p>
- if (startOffset == endOffset && !startContainer.hasChildNodes()) {
- if (startContainer.canHaveHTML) {
- // Check if previous sibling is an empty block if it is then we need to render it
- // IE would otherwise move the caret into the sibling instead of the empty startContainer see: #5236
- // Example this: <p></p><p>|</p> would become this: <p>|</p><p></p>
- sibling = startContainer.previousSibling;
- if (sibling && !sibling.hasChildNodes() && dom.isBlock(sibling)) {
- sibling.innerHTML = '\uFEFF';
- } else {
- sibling = null;
- }
-
- startContainer.innerHTML = '<span>\uFEFF</span><span>\uFEFF</span>';
- ieRng.moveToElementText(startContainer.lastChild);
- ieRng.select();
- dom.doc.selection.clear();
- startContainer.innerHTML = '';
-
- if (sibling) {
- sibling.innerHTML = '';
- }
- return;
- } else {
- startOffset = dom.nodeIndex(startContainer);
- startContainer = startContainer.parentNode;
- }
- }
-
- if (startOffset == endOffset - 1) {
- try {
- ctrlElm = startContainer.childNodes[startOffset];
- ctrlRng = body.createControlRange();
- ctrlRng.addElement(ctrlElm);
- ctrlRng.select();
-
- // Check if the range produced is on the correct element and is a control range
- // On IE 8 it will select the parent contentEditable container if you select an inner element see: #5398
- nativeRng = selection.getRng();
- if (nativeRng.item && ctrlElm === nativeRng.item(0)) {
- return;
- }
- } catch (ex) {
- // Ignore
- }
- }
- }
-
- // Set start/end point of selection
- setEndPoint(true);
- setEndPoint();
-
- // Select the new range and scroll it into view
- ieRng.select();
- };
-
- // Expose range method
- this.getRangeAt = getRange;
- };
-
- // Expose the selection object
- tinymce.dom.TridentSelection = Selection;
-})();
-
-
-/*
- * Sizzle CSS Selector Engine
- * Copyright, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- * More information: http://sizzlejs.com/
- */
-(function(){
-
-var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
- expando = "sizcache",
- done = 0,
- toString = Object.prototype.toString,
- hasDuplicate = false,
- baseHasDuplicate = true,
- rBackslash = /\\/g,
- rReturn = /\r\n/g,
- rNonWord = /\W/;
-
-// Here we check if the JavaScript engine is using some sort of
-// optimization where it does not always call our comparision
-// function. If that is the case, discard the hasDuplicate value.
-// Thus far that includes Google Chrome.
-[0, 0].sort(function() {
- baseHasDuplicate = false;
- return 0;
-});
-
-var Sizzle = function( selector, context, results, seed ) {
- results = results || [];
- context = context || document;
-
- var origContext = context;
-
- if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
- return [];
- }
-
- if ( !selector || typeof selector !== "string" ) {
- return results;
- }
-
- var m, set, checkSet, extra, ret, cur, pop, i,
- prune = true,
- contextXML = Sizzle.isXML( context ),
- parts = [],
- soFar = selector;
-
- // Reset the position of the chunker regexp (start from head)
- do {
- chunker.exec( "" );
- m = chunker.exec( soFar );
-
- if ( m ) {
- soFar = m[3];
-
- parts.push( m[1] );
-
- if ( m[2] ) {
- extra = m[3];
- break;
- }
- }
- } while ( m );
-
- if ( parts.length > 1 && origPOS.exec( selector ) ) {
-
- if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
- set = posProcess( parts[0] + parts[1], context, seed );
-
- } else {
- set = Expr.relative[ parts[0] ] ?
- [ context ] :
- Sizzle( parts.shift(), context );
-
- while ( parts.length ) {
- selector = parts.shift();
-
- if ( Expr.relative[ selector ] ) {
- selector += parts.shift();
- }
-
- set = posProcess( selector, set, seed );
- }
- }
-
- } else {
- // Take a shortcut and set the context if the root selector is an ID
- // (but not if it'll be faster if the inner selector is an ID)
- if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
- Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
-
- ret = Sizzle.find( parts.shift(), context, contextXML );
- context = ret.expr ?
- Sizzle.filter( ret.expr, ret.set )[0] :
- ret.set[0];
- }
-
- if ( context ) {
- ret = seed ?
- { expr: parts.pop(), set: makeArray(seed) } :
- Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
-
- set = ret.expr ?
- Sizzle.filter( ret.expr, ret.set ) :
- ret.set;
-
- if ( parts.length > 0 ) {
- checkSet = makeArray( set );
-
- } else {
- prune = false;
- }
-
- while ( parts.length ) {
- cur = parts.pop();
- pop = cur;
-
- if ( !Expr.relative[ cur ] ) {
- cur = "";
- } else {
- pop = parts.pop();
- }
-
- if ( pop == null ) {
- pop = context;
- }
-
- Expr.relative[ cur ]( checkSet, pop, contextXML );
- }
-
- } else {
- checkSet = parts = [];
- }
- }
-
- if ( !checkSet ) {
- checkSet = set;
- }
-
- if ( !checkSet ) {
- Sizzle.error( cur || selector );
- }
-
- if ( toString.call(checkSet) === "[object Array]" ) {
- if ( !prune ) {
- results.push.apply( results, checkSet );
-
- } else if ( context && context.nodeType === 1 ) {
- for ( i = 0; checkSet[i] != null; i++ ) {
- if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {
- results.push( set[i] );
- }
- }
-
- } else {
- for ( i = 0; checkSet[i] != null; i++ ) {
- if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
- results.push( set[i] );
- }
- }
- }
-
- } else {
- makeArray( checkSet, results );
- }
-
- if ( extra ) {
- Sizzle( extra, origContext, results, seed );
- Sizzle.uniqueSort( results );
- }
-
- return results;
-};
-
-Sizzle.uniqueSort = function( results ) {
- if ( sortOrder ) {
- hasDuplicate = baseHasDuplicate;
- results.sort( sortOrder );
-
- if ( hasDuplicate ) {
- for ( var i = 1; i < results.length; i++ ) {
- if ( results[i] === results[ i - 1 ] ) {
- results.splice( i--, 1 );
- }
- }
- }
- }
-
- return results;
-};
-
-Sizzle.matches = function( expr, set ) {
- return Sizzle( expr, null, null, set );
-};
-
-Sizzle.matchesSelector = function( node, expr ) {
- return Sizzle( expr, null, null, [node] ).length > 0;
-};
-
-Sizzle.find = function( expr, context, isXML ) {
- var set, i, len, match, type, left;
-
- if ( !expr ) {
- return [];
- }
-
- for ( i = 0, len = Expr.order.length; i < len; i++ ) {
- type = Expr.order[i];
-
- if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
- left = match[1];
- match.splice( 1, 1 );
-
- if ( left.substr( left.length - 1 ) !== "\\" ) {
- match[1] = (match[1] || "").replace( rBackslash, "" );
- set = Expr.find[ type ]( match, context, isXML );
-
- if ( set != null ) {
- expr = expr.replace( Expr.match[ type ], "" );
- break;
- }
- }
- }
- }
-
- if ( !set ) {
- set = typeof context.getElementsByTagName !== "undefined" ?
- context.getElementsByTagName( "*" ) :
- [];
- }
-
- return { set: set, expr: expr };
-};
-
-Sizzle.filter = function( expr, set, inplace, not ) {
- var match, anyFound,
- type, found, item, filter, left,
- i, pass,
- old = expr,
- result = [],
- curLoop = set,
- isXMLFilter = set && set[0] && Sizzle.isXML( set[0] );
-
- while ( expr && set.length ) {
- for ( type in Expr.filter ) {
- if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
- filter = Expr.filter[ type ];
- left = match[1];
-
- anyFound = false;
-
- match.splice(1,1);
-
- if ( left.substr( left.length - 1 ) === "\\" ) {
- continue;
- }
-
- if ( curLoop === result ) {
- result = [];
- }
-
- if ( Expr.preFilter[ type ] ) {
- match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
-
- if ( !match ) {
- anyFound = found = true;
-
- } else if ( match === true ) {
- continue;
- }
- }
-
- if ( match ) {
- for ( i = 0; (item = curLoop[i]) != null; i++ ) {
- if ( item ) {
- found = filter( item, match, i, curLoop );
- pass = not ^ found;
-
- if ( inplace && found != null ) {
- if ( pass ) {
- anyFound = true;
-
- } else {
- curLoop[i] = false;
- }
-
- } else if ( pass ) {
- result.push( item );
- anyFound = true;
- }
- }
- }
- }
-
- if ( found !== undefined ) {
- if ( !inplace ) {
- curLoop = result;
- }
-
- expr = expr.replace( Expr.match[ type ], "" );
-
- if ( !anyFound ) {
- return [];
- }
-
- break;
- }
- }
- }
-
- // Improper expression
- if ( expr === old ) {
- if ( anyFound == null ) {
- Sizzle.error( expr );
-
- } else {
- break;
- }
- }
-
- old = expr;
- }
-
- return curLoop;
-};
-
-Sizzle.error = function( msg ) {
- throw new Error( "Syntax error, unrecognized expression: " + msg );
-};
-
-var getText = Sizzle.getText = function( elem ) {
- var i, node,
- nodeType = elem.nodeType,
- ret = "";
-
- if ( nodeType ) {
- if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
- // Use textContent || innerText for elements
- if ( typeof elem.textContent === 'string' ) {
- return elem.textContent;
- } else if ( typeof elem.innerText === 'string' ) {
- // Replace IE's carriage returns
- return elem.innerText.replace( rReturn, '' );
- } else {
- // Traverse it's children
- for ( elem = elem.firstChild; elem; elem = elem.nextSibling) {
- ret += getText( elem );
- }
- }
- } else if ( nodeType === 3 || nodeType === 4 ) {
- return elem.nodeValue;
- }
- } else {
-
- // If no nodeType, this is expected to be an array
- for ( i = 0; (node = elem[i]); i++ ) {
- // Do not traverse comment nodes
- if ( node.nodeType !== 8 ) {
- ret += getText( node );
- }
- }
- }
- return ret;
-};
-
-var Expr = Sizzle.selectors = {
- order: [ "ID", "NAME", "TAG" ],
-
- match: {
- ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
- CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
- NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,
- ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,
- TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,
- CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,
- POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,
- PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
- },
-
- leftMatch: {},
-
- attrMap: {
- "class": "className",
- "for": "htmlFor"
- },
-
- attrHandle: {
- href: function( elem ) {
- return elem.getAttribute( "href" );
- },
- type: function( elem ) {
- return elem.getAttribute( "type" );
- }
- },
-
- relative: {
- "+": function(checkSet, part){
- var isPartStr = typeof part === "string",
- isTag = isPartStr && !rNonWord.test( part ),
- isPartStrNotTag = isPartStr && !isTag;
-
- if ( isTag ) {
- part = part.toLowerCase();
- }
-
- for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
- if ( (elem = checkSet[i]) ) {
- while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
-
- checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?
- elem || false :
- elem === part;
- }
- }
-
- if ( isPartStrNotTag ) {
- Sizzle.filter( part, checkSet, true );
- }
- },
-
- ">": function( checkSet, part ) {
- var elem,
- isPartStr = typeof part === "string",
- i = 0,
- l = checkSet.length;
-
- if ( isPartStr && !rNonWord.test( part ) ) {
- part = part.toLowerCase();
-
- for ( ; i < l; i++ ) {
- elem = checkSet[i];
-
- if ( elem ) {
- var parent = elem.parentNode;
- checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;
- }
- }
-
- } else {
- for ( ; i < l; i++ ) {
- elem = checkSet[i];
-
- if ( elem ) {
- checkSet[i] = isPartStr ?
- elem.parentNode :
- elem.parentNode === part;
- }
- }
-
- if ( isPartStr ) {
- Sizzle.filter( part, checkSet, true );
- }
- }
- },
-
- "": function(checkSet, part, isXML){
- var nodeCheck,
- doneName = done++,
- checkFn = dirCheck;
-
- if ( typeof part === "string" && !rNonWord.test( part ) ) {
- part = part.toLowerCase();
- nodeCheck = part;
- checkFn = dirNodeCheck;
- }
-
- checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML );
- },
-
- "~": function( checkSet, part, isXML ) {
- var nodeCheck,
- doneName = done++,
- checkFn = dirCheck;
-
- if ( typeof part === "string" && !rNonWord.test( part ) ) {
- part = part.toLowerCase();
- nodeCheck = part;
- checkFn = dirNodeCheck;
- }
-
- checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML );
- }
- },
-
- find: {
- ID: function( match, context, isXML ) {
- if ( typeof context.getElementById !== "undefined" && !isXML ) {
- var m = context.getElementById(match[1]);
- // Check parentNode to catch when Blackberry 4.6 returns
- // nodes that are no longer in the document #6963
- return m && m.parentNode ? [m] : [];
- }
- },
-
- NAME: function( match, context ) {
- if ( typeof context.getElementsByName !== "undefined" ) {
- var ret = [],
- results = context.getElementsByName( match[1] );
-
- for ( var i = 0, l = results.length; i < l; i++ ) {
- if ( results[i].getAttribute("name") === match[1] ) {
- ret.push( results[i] );
- }
- }
-
- return ret.length === 0 ? null : ret;
- }
- },
-
- TAG: function( match, context ) {
- if ( typeof context.getElementsByTagName !== "undefined" ) {
- return context.getElementsByTagName( match[1] );
- }
- }
- },
- preFilter: {
- CLASS: function( match, curLoop, inplace, result, not, isXML ) {
- match = " " + match[1].replace( rBackslash, "" ) + " ";
-
- if ( isXML ) {
- return match;
- }
-
- for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
- if ( elem ) {
- if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) {
- if ( !inplace ) {
- result.push( elem );
- }
-
- } else if ( inplace ) {
- curLoop[i] = false;
- }
- }
- }
-
- return false;
- },
-
- ID: function( match ) {
- return match[1].replace( rBackslash, "" );
- },
-
- TAG: function( match, curLoop ) {
- return match[1].replace( rBackslash, "" ).toLowerCase();
- },
-
- CHILD: function( match ) {
- if ( match[1] === "nth" ) {
- if ( !match[2] ) {
- Sizzle.error( match[0] );
- }
-
- match[2] = match[2].replace(/^\+|\s*/g, '');
-
- // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
- var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec(
- match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||
- !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
-
- // calculate the numbers (first)n+(last) including if they are negative
- match[2] = (test[1] + (test[2] || 1)) - 0;
- match[3] = test[3] - 0;
- }
- else if ( match[2] ) {
- Sizzle.error( match[0] );
- }
-
- // TODO: Move to normal caching system
- match[0] = done++;
-
- return match;
- },
-
- ATTR: function( match, curLoop, inplace, result, not, isXML ) {
- var name = match[1] = match[1].replace( rBackslash, "" );
-
- if ( !isXML && Expr.attrMap[name] ) {
- match[1] = Expr.attrMap[name];
- }
-
- // Handle if an un-quoted value was used
- match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" );
-
- if ( match[2] === "~=" ) {
- match[4] = " " + match[4] + " ";
- }
-
- return match;
- },
-
- PSEUDO: function( match, curLoop, inplace, result, not ) {
- if ( match[1] === "not" ) {
- // If we're dealing with a complex expression, or a simple one
- if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
- match[3] = Sizzle(match[3], null, null, curLoop);
-
- } else {
- var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
-
- if ( !inplace ) {
- result.push.apply( result, ret );
- }
-
- return false;
- }
-
- } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
- return true;
- }
-
- return match;
- },
-
- POS: function( match ) {
- match.unshift( true );
-
- return match;
- }
- },
-
- filters: {
- enabled: function( elem ) {
- return elem.disabled === false && elem.type !== "hidden";
- },
-
- disabled: function( elem ) {
- return elem.disabled === true;
- },
-
- checked: function( elem ) {
- return elem.checked === true;
- },
-
- selected: function( elem ) {
- // Accessing this property makes selected-by-default
- // options in Safari work properly
- if ( elem.parentNode ) {
- elem.parentNode.selectedIndex;
- }
-
- return elem.selected === true;
- },
-
- parent: function( elem ) {
- return !!elem.firstChild;
- },
-
- empty: function( elem ) {
- return !elem.firstChild;
- },
-
- has: function( elem, i, match ) {
- return !!Sizzle( match[3], elem ).length;
- },
-
- header: function( elem ) {
- return (/h\d/i).test( elem.nodeName );
- },
-
- text: function( elem ) {
- var attr = elem.getAttribute( "type" ), type = elem.type;
- // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
- // use getAttribute instead to test this case
- return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null );
- },
-
- radio: function( elem ) {
- return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type;
- },
-
- checkbox: function( elem ) {
- return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type;
- },
-
- file: function( elem ) {
- return elem.nodeName.toLowerCase() === "input" && "file" === elem.type;
- },
-
- password: function( elem ) {
- return elem.nodeName.toLowerCase() === "input" && "password" === elem.type;
- },
-
- submit: function( elem ) {
- var name = elem.nodeName.toLowerCase();
- return (name === "input" || name === "button") && "submit" === elem.type;
- },
-
- image: function( elem ) {
- return elem.nodeName.toLowerCase() === "input" && "image" === elem.type;
- },
-
- reset: function( elem ) {
- var name = elem.nodeName.toLowerCase();
- return (name === "input" || name === "button") && "reset" === elem.type;
- },
-
- button: function( elem ) {
- var name = elem.nodeName.toLowerCase();
- return name === "input" && "button" === elem.type || name === "button";
- },
-
- input: function( elem ) {
- return (/input|select|textarea|button/i).test( elem.nodeName );
- },
-
- focus: function( elem ) {
- return elem === elem.ownerDocument.activeElement;
- }
- },
- setFilters: {
- first: function( elem, i ) {
- return i === 0;
- },
-
- last: function( elem, i, match, array ) {
- return i === array.length - 1;
- },
-
- even: function( elem, i ) {
- return i % 2 === 0;
- },
-
- odd: function( elem, i ) {
- return i % 2 === 1;
- },
-
- lt: function( elem, i, match ) {
- return i < match[3] - 0;
- },
-
- gt: function( elem, i, match ) {
- return i > match[3] - 0;
- },
-
- nth: function( elem, i, match ) {
- return match[3] - 0 === i;
- },
-
- eq: function( elem, i, match ) {
- return match[3] - 0 === i;
- }
- },
- filter: {
- PSEUDO: function( elem, match, i, array ) {
- var name = match[1],
- filter = Expr.filters[ name ];
-
- if ( filter ) {
- return filter( elem, i, match, array );
-
- } else if ( name === "contains" ) {
- return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0;
-
- } else if ( name === "not" ) {
- var not = match[3];
-
- for ( var j = 0, l = not.length; j < l; j++ ) {
- if ( not[j] === elem ) {
- return false;
- }
- }
-
- return true;
-
- } else {
- Sizzle.error( name );
- }
- },
-
- CHILD: function( elem, match ) {
- var first, last,
- doneName, parent, cache,
- count, diff,
- type = match[1],
- node = elem;
-
- switch ( type ) {
- case "only":
- case "first":
- while ( (node = node.previousSibling) ) {
- if ( node.nodeType === 1 ) {
- return false;
- }
- }
-
- if ( type === "first" ) {
- return true;
- }
-
- node = elem;
-
- /* falls through */
- case "last":
- while ( (node = node.nextSibling) ) {
- if ( node.nodeType === 1 ) {
- return false;
- }
- }
-
- return true;
-
- case "nth":
- first = match[2];
- last = match[3];
-
- if ( first === 1 && last === 0 ) {
- return true;
- }
-
- doneName = match[0];
- parent = elem.parentNode;
-
- if ( parent && (parent[ expando ] !== doneName || !elem.nodeIndex) ) {
- count = 0;
-
- for ( node = parent.firstChild; node; node = node.nextSibling ) {
- if ( node.nodeType === 1 ) {
- node.nodeIndex = ++count;
- }
- }
-
- parent[ expando ] = doneName;
- }
-
- diff = elem.nodeIndex - last;
-
- if ( first === 0 ) {
- return diff === 0;
-
- } else {
- return ( diff % first === 0 && diff / first >= 0 );
- }
- }
- },
-
- ID: function( elem, match ) {
- return elem.nodeType === 1 && elem.getAttribute("id") === match;
- },
-
- TAG: function( elem, match ) {
- return (match === "*" && elem.nodeType === 1) || !!elem.nodeName && elem.nodeName.toLowerCase() === match;
- },
-
- CLASS: function( elem, match ) {
- return (" " + (elem.className || elem.getAttribute("class")) + " ")
- .indexOf( match ) > -1;
- },
-
- ATTR: function( elem, match ) {
- var name = match[1],
- result = Sizzle.attr ?
- Sizzle.attr( elem, name ) :
- Expr.attrHandle[ name ] ?
- Expr.attrHandle[ name ]( elem ) :
- elem[ name ] != null ?
- elem[ name ] :
- elem.getAttribute( name ),
- value = result + "",
- type = match[2],
- check = match[4];
-
- return result == null ?
- type === "!=" :
- !type && Sizzle.attr ?
- result != null :
- type === "=" ?
- value === check :
- type === "*=" ?
- value.indexOf(check) >= 0 :
- type === "~=" ?
- (" " + value + " ").indexOf(check) >= 0 :
- !check ?
- value && result !== false :
- type === "!=" ?
- value !== check :
- type === "^=" ?
- value.indexOf(check) === 0 :
- type === "$=" ?
- value.substr(value.length - check.length) === check :
- type === "|=" ?
- value === check || value.substr(0, check.length + 1) === check + "-" :
- false;
- },
-
- POS: function( elem, match, i, array ) {
- var name = match[2],
- filter = Expr.setFilters[ name ];
-
- if ( filter ) {
- return filter( elem, i, match, array );
- }
- }
- }
-};
-
-var origPOS = Expr.match.POS,
- fescape = function(all, num){
- return "\\" + (num - 0 + 1);
- };
-
-for ( var type in Expr.match ) {
- Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) );
- Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) );
-}
-// Expose origPOS
-// "global" as in regardless of relation to brackets/parens
-Expr.match.globalPOS = origPOS;
-
-var makeArray = function( array, results ) {
- array = Array.prototype.slice.call( array, 0 );
-
- if ( results ) {
- results.push.apply( results, array );
- return results;
- }
-
- return array;
-};
-
-// Perform a simple check to determine if the browser is capable of
-// converting a NodeList to an array using builtin methods.
-// Also verifies that the returned array holds DOM nodes
-// (which is not the case in the Blackberry browser)
-try {
- Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
-
-// Provide a fallback method if it does not work
-} catch( e ) {
- makeArray = function( array, results ) {
- var i = 0,
- ret = results || [];
-
- if ( toString.call(array) === "[object Array]" ) {
- Array.prototype.push.apply( ret, array );
-
- } else {
- if ( typeof array.length === "number" ) {
- for ( var l = array.length; i < l; i++ ) {
- ret.push( array[i] );
- }
-
- } else {
- for ( ; array[i]; i++ ) {
- ret.push( array[i] );
- }
- }
- }
-
- return ret;
- };
-}
-
-var sortOrder, siblingCheck;
-
-if ( document.documentElement.compareDocumentPosition ) {
- sortOrder = function( a, b ) {
- if ( a === b ) {
- hasDuplicate = true;
- return 0;
- }
-
- if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
- return a.compareDocumentPosition ? -1 : 1;
- }
-
- return a.compareDocumentPosition(b) & 4 ? -1 : 1;
- };
-
-} else {
- sortOrder = function( a, b ) {
- // The nodes are identical, we can exit early
- if ( a === b ) {
- hasDuplicate = true;
- return 0;
-
- // Fallback to using sourceIndex (in IE) if it's available on both nodes
- } else if ( a.sourceIndex && b.sourceIndex ) {
- return a.sourceIndex - b.sourceIndex;
- }
-
- var al, bl,
- ap = [],
- bp = [],
- aup = a.parentNode,
- bup = b.parentNode,
- cur = aup;
-
- // If the nodes are siblings (or identical) we can do a quick check
- if ( aup === bup ) {
- return siblingCheck( a, b );
-
- // If no parents were found then the nodes are disconnected
- } else if ( !aup ) {
- return -1;
-
- } else if ( !bup ) {
- return 1;
- }
-
- // Otherwise they're somewhere else in the tree so we need
- // to build up a full list of the parentNodes for comparison
- while ( cur ) {
- ap.unshift( cur );
- cur = cur.parentNode;
- }
-
- cur = bup;
-
- while ( cur ) {
- bp.unshift( cur );
- cur = cur.parentNode;
- }
-
- al = ap.length;
- bl = bp.length;
-
- // Start walking down the tree looking for a discrepancy
- for ( var i = 0; i < al && i < bl; i++ ) {
- if ( ap[i] !== bp[i] ) {
- return siblingCheck( ap[i], bp[i] );
- }
- }
-
- // We ended someplace up the tree so do a sibling check
- return i === al ?
- siblingCheck( a, bp[i], -1 ) :
- siblingCheck( ap[i], b, 1 );
- };
-
- siblingCheck = function( a, b, ret ) {
- if ( a === b ) {
- return ret;
- }
-
- var cur = a.nextSibling;
-
- while ( cur ) {
- if ( cur === b ) {
- return -1;
- }
-
- cur = cur.nextSibling;
- }
-
- return 1;
- };
-}
-
-// Check to see if the browser returns elements by name when
-// querying by getElementById (and provide a workaround)
-(function(){
- // We're going to inject a fake input element with a specified name
- var form = document.createElement("div"),
- id = "script" + (new Date()).getTime(),
- root = document.documentElement;
-
- form.innerHTML = "<a name='" + id + "'/>";
-
- // Inject it into the root element, check its status, and remove it quickly
- root.insertBefore( form, root.firstChild );
-
- // The workaround has to do additional checks after a getElementById
- // Which slows things down for other browsers (hence the branching)
- if ( document.getElementById( id ) ) {
- Expr.find.ID = function( match, context, isXML ) {
- if ( typeof context.getElementById !== "undefined" && !isXML ) {
- var m = context.getElementById(match[1]);
-
- return m ?
- m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ?
- [m] :
- undefined :
- [];
- }
- };
-
- Expr.filter.ID = function( elem, match ) {
- var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
-
- return elem.nodeType === 1 && node && node.nodeValue === match;
- };
- }
-
- root.removeChild( form );
-
- // release memory in IE
- root = form = null;
-})();
-
-(function(){
- // Check to see if the browser returns only elements
- // when doing getElementsByTagName("*")
-
- // Create a fake element
- var div = document.createElement("div");
- div.appendChild( document.createComment("") );
-
- // Make sure no comments are found
- if ( div.getElementsByTagName("*").length > 0 ) {
- Expr.find.TAG = function( match, context ) {
- var results = context.getElementsByTagName( match[1] );
-
- // Filter out possible comments
- if ( match[1] === "*" ) {
- var tmp = [];
-
- for ( var i = 0; results[i]; i++ ) {
- if ( results[i].nodeType === 1 ) {
- tmp.push( results[i] );
- }
- }
-
- results = tmp;
- }
-
- return results;
- };
- }
-
- // Check to see if an attribute returns normalized href attributes
- div.innerHTML = "<a href='#'></a>";
-
- if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
- div.firstChild.getAttribute("href") !== "#" ) {
-
- Expr.attrHandle.href = function( elem ) {
- return elem.getAttribute( "href", 2 );
- };
- }
-
- // release memory in IE
- div = null;
-})();
-
-if ( document.querySelectorAll ) {
- (function(){
- var oldSizzle = Sizzle,
- div = document.createElement("div"),
- id = "__sizzle__";
-
- div.innerHTML = "<p class='TEST'></p>";
-
- // Safari can't handle uppercase or unicode characters when
- // in quirks mode.
- if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
- return;
- }
-
- Sizzle = function( query, context, extra, seed ) {
- context = context || document;
-
- // Only use querySelectorAll on non-XML documents
- // (ID selectors don't work in non-HTML documents)
- if ( !seed && !Sizzle.isXML(context) ) {
- // See if we find a selector to speed up
- var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query );
-
- if ( match && (context.nodeType === 1 || context.nodeType === 9) ) {
- // Speed-up: Sizzle("TAG")
- if ( match[1] ) {
- return makeArray( context.getElementsByTagName( query ), extra );
-
- // Speed-up: Sizzle(".CLASS")
- } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {
- return makeArray( context.getElementsByClassName( match[2] ), extra );
- }
- }
-
- if ( context.nodeType === 9 ) {
- // Speed-up: Sizzle("body")
- // The body element only exists once, optimize finding it
- if ( query === "body" && context.body ) {
- return makeArray( [ context.body ], extra );
-
- // Speed-up: Sizzle("#ID")
- } else if ( match && match[3] ) {
- var elem = context.getElementById( match[3] );
-
- // Check parentNode to catch when Blackberry 4.6 returns
- // nodes that are no longer in the document #6963
- if ( elem && elem.parentNode ) {
- // Handle the case where IE and Opera return items
- // by name instead of ID
- if ( elem.id === match[3] ) {
- return makeArray( [ elem ], extra );
- }
-
- } else {
- return makeArray( [], extra );
- }
- }
-
- try {
- return makeArray( context.querySelectorAll(query), extra );
- } catch(qsaError) {}
-
- // qSA works strangely on Element-rooted queries
- // We can work around this by specifying an extra ID on the root
- // and working up from there (Thanks to Andrew Dupont for the technique)
- // IE 8 doesn't work on object elements
- } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
- var oldContext = context,
- old = context.getAttribute( "id" ),
- nid = old || id,
- hasParent = context.parentNode,
- relativeHierarchySelector = /^\s*[+~]/.test( query );
-
- if ( !old ) {
- context.setAttribute( "id", nid );
- } else {
- nid = nid.replace( /'/g, "\\$&" );
- }
- if ( relativeHierarchySelector && hasParent ) {
- context = context.parentNode;
- }
-
- try {
- if ( !relativeHierarchySelector || hasParent ) {
- return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra );
- }
-
- } catch(pseudoError) {
- } finally {
- if ( !old ) {
- oldContext.removeAttribute( "id" );
- }
- }
- }
- }
-
- return oldSizzle(query, context, extra, seed);
- };
-
- for ( var prop in oldSizzle ) {
- Sizzle[ prop ] = oldSizzle[ prop ];
- }
-
- // release memory in IE
- div = null;
- })();
-}
-
-(function(){
- var html = document.documentElement,
- matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector;
-
- if ( matches ) {
- // Check to see if it's possible to do matchesSelector
- // on a disconnected node (IE 9 fails this)
- var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ),
- pseudoWorks = false;
-
- try {
- // This should fail with an exception
- // Gecko does not error, returns false instead
- matches.call( document.documentElement, "[test!='']:sizzle" );
-
- } catch( pseudoError ) {
- pseudoWorks = true;
- }
-
- Sizzle.matchesSelector = function( node, expr ) {
- // Make sure that attribute selectors are quoted
- expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']");
-
- if ( !Sizzle.isXML( node ) ) {
- try {
- if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {
- var ret = matches.call( node, expr );
-
- // IE 9's matchesSelector returns false on disconnected nodes
- if ( ret || !disconnectedMatch ||
- // As well, disconnected nodes are said to be in a document
- // fragment in IE 9, so check for that
- node.document && node.document.nodeType !== 11 ) {
- return ret;
- }
- }
- } catch(e) {}
- }
-
- return Sizzle(expr, null, null, [node]).length > 0;
- };
- }
-})();
-
-(function(){
- var div = document.createElement("div");
-
- div.innerHTML = "<div class='test e'></div><div class='test'></div>";
-
- // Opera can't find a second classname (in 9.6)
- // Also, make sure that getElementsByClassName actually exists
- if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) {
- return;
- }
-
- // Safari caches class attributes, doesn't catch changes (in 3.2)
- div.lastChild.className = "e";
-
- if ( div.getElementsByClassName("e").length === 1 ) {
- return;
- }
-
- Expr.order.splice(1, 0, "CLASS");
- Expr.find.CLASS = function( match, context, isXML ) {
- if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
- return context.getElementsByClassName(match[1]);
- }
- };
-
- // release memory in IE
- div = null;
-})();
-
-function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
- for ( var i = 0, l = checkSet.length; i < l; i++ ) {
- var elem = checkSet[i];
-
- if ( elem ) {
- var match = false;
-
- elem = elem[dir];
-
- while ( elem ) {
- if ( elem[ expando ] === doneName ) {
- match = checkSet[elem.sizset];
- break;
- }
-
- if ( elem.nodeType === 1 && !isXML ){
- elem[ expando ] = doneName;
- elem.sizset = i;
- }
-
- if ( elem.nodeName.toLowerCase() === cur ) {
- match = elem;
- break;
- }
-
- elem = elem[dir];
- }
-
- checkSet[i] = match;
- }
- }
-}
-
-function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
- for ( var i = 0, l = checkSet.length; i < l; i++ ) {
- var elem = checkSet[i];
-
- if ( elem ) {
- var match = false;
-
- elem = elem[dir];
-
- while ( elem ) {
- if ( elem[ expando ] === doneName ) {
- match = checkSet[elem.sizset];
- break;
- }
-
- if ( elem.nodeType === 1 ) {
- if ( !isXML ) {
- elem[ expando ] = doneName;
- elem.sizset = i;
- }
-
- if ( typeof cur !== "string" ) {
- if ( elem === cur ) {
- match = true;
- break;
- }
-
- } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
- match = elem;
- break;
- }
- }
-
- elem = elem[dir];
- }
-
- checkSet[i] = match;
- }
- }
-}
-
-if ( document.documentElement.contains ) {
- Sizzle.contains = function( a, b ) {
- return a !== b && (a.contains ? a.contains(b) : true);
- };
-
-} else if ( document.documentElement.compareDocumentPosition ) {
- Sizzle.contains = function( a, b ) {
- return !!(a.compareDocumentPosition(b) & 16);
- };
-
-} else {
- Sizzle.contains = function() {
- return false;
- };
-}
-
-Sizzle.isXML = function( elem ) {
- // documentElement is verified for cases where it doesn't yet exist
- // (such as loading iframes in IE - #4833)
- var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;
-
- return documentElement ? documentElement.nodeName !== "HTML" : false;
-};
-
-var posProcess = function( selector, context, seed ) {
- var match,
- tmpSet = [],
- later = "",
- root = context.nodeType ? [context] : context;
-
- // Position selectors must be done after the filter
- // And so must :not(positional) so we move all PSEUDOs to the end
- while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
- later += match[0];
- selector = selector.replace( Expr.match.PSEUDO, "" );
- }
-
- selector = Expr.relative[selector] ? selector + "*" : selector;
-
- for ( var i = 0, l = root.length; i < l; i++ ) {
- Sizzle( selector, root[i], tmpSet, seed );
- }
-
- return Sizzle.filter( later, tmpSet );
-};
-
-// EXPOSE
-
-window.tinymce.dom.Sizzle = Sizzle;
-
-})();
-
-
-(function(tinymce) {
- tinymce.dom.Element = function(id, settings) {
- var t = this, dom, el;
-
- t.settings = settings = settings || {};
- t.id = id;
- t.dom = dom = settings.dom || tinymce.DOM;
-
- // Only IE leaks DOM references, this is a lot faster
- if (!tinymce.isIE)
- el = dom.get(t.id);
-
- tinymce.each(
- ('getPos,getRect,getParent,add,setStyle,getStyle,setStyles,' +
- 'setAttrib,setAttribs,getAttrib,addClass,removeClass,' +
- 'hasClass,getOuterHTML,setOuterHTML,remove,show,hide,' +
- 'isHidden,setHTML,get').split(/,/), function(k) {
- t[k] = function() {
- var a = [id], i;
-
- for (i = 0; i < arguments.length; i++)
- a.push(arguments[i]);
-
- a = dom[k].apply(dom, a);
- t.update(k);
-
- return a;
- };
- }
- );
-
- tinymce.extend(t, {
- on : function(n, f, s) {
- return tinymce.dom.Event.add(t.id, n, f, s);
- },
-
- getXY : function() {
- return {
- x : parseInt(t.getStyle('left')),
- y : parseInt(t.getStyle('top'))
- };
- },
-
- getSize : function() {
- var n = dom.get(t.id);
-
- return {
- w : parseInt(t.getStyle('width') || n.clientWidth),
- h : parseInt(t.getStyle('height') || n.clientHeight)
- };
- },
-
- moveTo : function(x, y) {
- t.setStyles({left : x, top : y});
- },
-
- moveBy : function(x, y) {
- var p = t.getXY();
-
- t.moveTo(p.x + x, p.y + y);
- },
-
- resizeTo : function(w, h) {
- t.setStyles({width : w, height : h});
- },
-
- resizeBy : function(w, h) {
- var s = t.getSize();
-
- t.resizeTo(s.w + w, s.h + h);
- },
-
- update : function(k) {
- var b;
-
- if (tinymce.isIE6 && settings.blocker) {
- k = k || '';
-
- // Ignore getters
- if (k.indexOf('get') === 0 || k.indexOf('has') === 0 || k.indexOf('is') === 0)
- return;
-
- // Remove blocker on remove
- if (k == 'remove') {
- dom.remove(t.blocker);
- return;
- }
-
- if (!t.blocker) {
- t.blocker = dom.uniqueId();
- b = dom.add(settings.container || dom.getRoot(), 'iframe', {id : t.blocker, style : 'position:absolute;', frameBorder : 0, src : 'javascript:""'});
- dom.setStyle(b, 'opacity', 0);
- } else
- b = dom.get(t.blocker);
-
- dom.setStyles(b, {
- left : t.getStyle('left', 1),
- top : t.getStyle('top', 1),
- width : t.getStyle('width', 1),
- height : t.getStyle('height', 1),
- display : t.getStyle('display', 1),
- zIndex : parseInt(t.getStyle('zIndex', 1) || 0) - 1
- });
- }
- }
- });
- };
-})(tinymce);
-
-(function(tinymce) {
- function trimNl(s) {
- return s.replace(/[\n\r]+/g, '');
- };
-
- // Shorten names
- var is = tinymce.is, isIE = tinymce.isIE, each = tinymce.each, TreeWalker = tinymce.dom.TreeWalker;
-
- tinymce.create('tinymce.dom.Selection', {
- Selection : function(dom, win, serializer, editor) {
- var t = this;
-
- t.dom = dom;
- t.win = win;
- t.serializer = serializer;
- t.editor = editor;
-
- // Add events
- each([
- 'onBeforeSetContent',
-
- 'onBeforeGetContent',
-
- 'onSetContent',
-
- 'onGetContent'
- ], function(e) {
- t[e] = new tinymce.util.Dispatcher(t);
- });
-
- // No W3C Range support
- if (!t.win.getSelection)
- t.tridentSel = new tinymce.dom.TridentSelection(t);
-
- if (tinymce.isIE && ! tinymce.isIE11 && dom.boxModel)
- this._fixIESelection();
-
- // Prevent leaks
- tinymce.addUnload(t.destroy, t);
- },
-
- setCursorLocation: function(node, offset) {
- var t = this; var r = t.dom.createRng();
- r.setStart(node, offset);
- r.setEnd(node, offset);
- t.setRng(r);
- t.collapse(false);
- },
- getContent : function(s) {
- var t = this, r = t.getRng(), e = t.dom.create("body"), se = t.getSel(), wb, wa, n;
-
- s = s || {};
- wb = wa = '';
- s.get = true;
- s.format = s.format || 'html';
- s.forced_root_block = '';
- t.onBeforeGetContent.dispatch(t, s);
-
- if (s.format == 'text')
- return t.isCollapsed() ? '' : (r.text || (se.toString ? se.toString() : ''));
-
- if (r.cloneContents) {
- n = r.cloneContents();
-
- if (n)
- e.appendChild(n);
- } else if (is(r.item) || is(r.htmlText)) {
- // IE will produce invalid markup if elements are present that
- // it doesn't understand like custom elements or HTML5 elements.
- // Adding a BR in front of the contents and then remoiving it seems to fix it though.
- e.innerHTML = '<br>' + (r.item ? r.item(0).outerHTML : r.htmlText);
- e.removeChild(e.firstChild);
- } else
- e.innerHTML = r.toString();
-
- // Keep whitespace before and after
- if (/^\s/.test(e.innerHTML))
- wb = ' ';
-
- if (/\s+$/.test(e.innerHTML))
- wa = ' ';
-
- s.getInner = true;
-
- s.content = t.isCollapsed() ? '' : wb + t.serializer.serialize(e, s) + wa;
- t.onGetContent.dispatch(t, s);
-
- return s.content;
- },
-
- setContent : function(content, args) {
- var self = this, rng = self.getRng(), caretNode, doc = self.win.document, frag, temp;
-
- args = args || {format : 'html'};
- args.set = true;
- content = args.content = content;
-
- // Dispatch before set content event
- if (!args.no_events)
- self.onBeforeSetContent.dispatch(self, args);
-
- content = args.content;
-
- if (rng.insertNode) {
- // Make caret marker since insertNode places the caret in the beginning of text after insert
- content += '<span id="__caret">_</span>';
-
- // Delete and insert new node
- if (rng.startContainer == doc && rng.endContainer == doc) {
- // WebKit will fail if the body is empty since the range is then invalid and it can't insert contents
- doc.body.innerHTML = content;
- } else {
- rng.deleteContents();
-
- if (doc.body.childNodes.length === 0) {
- doc.body.innerHTML = content;
- } else {
- // createContextualFragment doesn't exists in IE 9 DOMRanges
- if (rng.createContextualFragment) {
- rng.insertNode(rng.createContextualFragment(content));
- } else {
- // Fake createContextualFragment call in IE 9
- frag = doc.createDocumentFragment();
- temp = doc.createElement('div');
-
- frag.appendChild(temp);
- temp.outerHTML = content;
-
- rng.insertNode(frag);
- }
- }
- }
-
- // Move to caret marker
- caretNode = self.dom.get('__caret');
-
- // Make sure we wrap it compleatly, Opera fails with a simple select call
- rng = doc.createRange();
- rng.setStartBefore(caretNode);
- rng.setEndBefore(caretNode);
- self.setRng(rng);
-
- // Remove the caret position
- self.dom.remove('__caret');
-
- try {
- self.setRng(rng);
- } catch (ex) {
- // Might fail on Opera for some odd reason
- }
- } else {
- if (rng.item) {
- // Delete content and get caret text selection
- doc.execCommand('Delete', false, null);
- rng = self.getRng();
- }
-
- // Explorer removes spaces from the beginning of pasted contents
- if (/^\s+/.test(content)) {
- rng.pasteHTML('<span id="__mce_tmp">_</span>' + content);
- self.dom.remove('__mce_tmp');
- } else
- rng.pasteHTML(content);
- }
-
- // Dispatch set content event
- if (!args.no_events)
- self.onSetContent.dispatch(self, args);
- },
-
- getStart : function() {
- var self = this, rng = self.getRng(), startElement, parentElement, checkRng, node;
-
- if (rng.duplicate || rng.item) {
- // Control selection, return first item
- if (rng.item)
- return rng.item(0);
-
- // Get start element
- checkRng = rng.duplicate();
- checkRng.collapse(1);
- startElement = checkRng.parentElement();
- if (startElement.ownerDocument !== self.dom.doc) {
- startElement = self.dom.getRoot();
- }
-
- // Check if range parent is inside the start element, then return the inner parent element
- // This will fix issues when a single element is selected, IE would otherwise return the wrong start element
- parentElement = node = rng.parentElement();
- while (node = node.parentNode) {
- if (node == startElement) {
- startElement = parentElement;
- break;
- }
- }
-
- return startElement;
- } else {
- startElement = rng.startContainer;
-
- if (startElement.nodeType == 1 && startElement.hasChildNodes())
- startElement = startElement.childNodes[Math.min(startElement.childNodes.length - 1, rng.startOffset)];
-
- if (startElement && startElement.nodeType == 3)
- return startElement.parentNode;
-
- return startElement;
- }
- },
-
- getEnd : function() {
- var self = this, rng = self.getRng(), endElement, endOffset;
-
- if (rng.duplicate || rng.item) {
- if (rng.item)
- return rng.item(0);
-
- rng = rng.duplicate();
- rng.collapse(0);
- endElement = rng.parentElement();
- if (endElement.ownerDocument !== self.dom.doc) {
- endElement = self.dom.getRoot();
- }
-
- if (endElement && endElement.nodeName == 'BODY')
- return endElement.lastChild || endElement;
-
- return endElement;
- } else {
- endElement = rng.endContainer;
- endOffset = rng.endOffset;
-
- if (endElement.nodeType == 1 && endElement.hasChildNodes())
- endElement = endElement.childNodes[endOffset > 0 ? endOffset - 1 : endOffset];
-
- if (endElement && endElement.nodeType == 3)
- return endElement.parentNode;
-
- return endElement;
- }
- },
-
- getBookmark : function(type, normalized) {
- var t = this, dom = t.dom, rng, rng2, id, collapsed, name, element, index, chr = '\uFEFF', styles;
-
- function findIndex(name, element) {
- var index = 0;
-
- each(dom.select(name), function(node, i) {
- if (node == element)
- index = i;
- });
-
- return index;
- };
-
- function normalizeTableCellSelection(rng) {
- function moveEndPoint(start) {
- var container, offset, childNodes, prefix = start ? 'start' : 'end';
-
- container = rng[prefix + 'Container'];
- offset = rng[prefix + 'Offset'];
-
- if (container.nodeType == 1 && container.nodeName == "TR") {
- childNodes = container.childNodes;
- container = childNodes[Math.min(start ? offset : offset - 1, childNodes.length - 1)];
- if (container) {
- offset = start ? 0 : container.childNodes.length;
- rng['set' + (start ? 'Start' : 'End')](container, offset);
- }
- }
- };
-
- moveEndPoint(true);
- moveEndPoint();
-
- return rng;
- };
-
- function getLocation() {
- var rng = t.getRng(true), root = dom.getRoot(), bookmark = {};
-
- function getPoint(rng, start) {
- var container = rng[start ? 'startContainer' : 'endContainer'],
- offset = rng[start ? 'startOffset' : 'endOffset'], point = [], node, childNodes, after = 0;
-
- if (container.nodeType == 3) {
- if (normalized) {
- for (node = container.previousSibling; node && node.nodeType == 3; node = node.previousSibling)
- offset += node.nodeValue.length;
- }
-
- point.push(offset);
- } else {
- childNodes = container.childNodes;
-
- if (offset >= childNodes.length && childNodes.length) {
- after = 1;
- offset = Math.max(0, childNodes.length - 1);
- }
-
- point.push(t.dom.nodeIndex(childNodes[offset], normalized) + after);
- }
-
- for (; container && container != root; container = container.parentNode)
- point.push(t.dom.nodeIndex(container, normalized));
-
- return point;
- };
-
- bookmark.start = getPoint(rng, true);
-
- if (!t.isCollapsed())
- bookmark.end = getPoint(rng);
-
- return bookmark;
- };
-
- if (type == 2) {
- if (t.tridentSel)
- return t.tridentSel.getBookmark(type);
-
- return getLocation();
- }
-
- // Handle simple range
- if (type) {
- rng = t.getRng();
-
- if (rng.setStart) {
- rng = {
- startContainer: rng.startContainer,
- startOffset: rng.startOffset,
- endContainer: rng.endContainer,
- endOffset: rng.endOffset
- };
- }
-
- return {rng : rng};
- }
-
- rng = t.getRng();
- id = dom.uniqueId();
- collapsed = tinyMCE.activeEditor.selection.isCollapsed();
- styles = 'overflow:hidden;line-height:0px';
-
- // Explorer method
- if (rng.duplicate || rng.item) {
- // Text selection
- if (!rng.item) {
- rng2 = rng.duplicate();
-
- try {
- // Insert start marker
- rng.collapse();
- rng.pasteHTML('<span data-mce-type="bookmark" id="' + id + '_start" style="' + styles + '">' + chr + '</span>');
-
- // Insert end marker
- if (!collapsed) {
- rng2.collapse(false);
-
- // Detect the empty space after block elements in IE and move the end back one character <p></p>] becomes <p>]</p>
- rng.moveToElementText(rng2.parentElement());
- if (rng.compareEndPoints('StartToEnd', rng2) === 0)
- rng2.move('character', -1);
-
- rng2.pasteHTML('<span data-mce-type="bookmark" id="' + id + '_end" style="' + styles + '">' + chr + '</span>');
- }
- } catch (ex) {
- // IE might throw unspecified error so lets ignore it
- return null;
- }
- } else {
- // Control selection
- element = rng.item(0);
- name = element.nodeName;
-
- return {name : name, index : findIndex(name, element)};
- }
- } else {
- element = t.getNode();
- name = element.nodeName;
- if (name == 'IMG')
- return {name : name, index : findIndex(name, element)};
-
- // W3C method
- rng2 = normalizeTableCellSelection(rng.cloneRange());
-
- // Insert end marker
- if (!collapsed) {
- rng2.collapse(false);
- rng2.insertNode(dom.create('span', {'data-mce-type' : "bookmark", id : id + '_end', style : styles}, chr));
- }
-
- rng = normalizeTableCellSelection(rng);
- rng.collapse(true);
- rng.insertNode(dom.create('span', {'data-mce-type' : "bookmark", id : id + '_start', style : styles}, chr));
- }
-
- t.moveToBookmark({id : id, keep : 1});
-
- return {id : id};
- },
-
- moveToBookmark : function(bookmark) {
- var t = this, dom = t.dom, marker1, marker2, rng, rng2, root, startContainer, endContainer, startOffset, endOffset;
-
- function setEndPoint(start) {
- var point = bookmark[start ? 'start' : 'end'], i, node, offset, children;
-
- if (point) {
- offset = point[0];
-
- // Find container node
- for (node = root, i = point.length - 1; i >= 1; i--) {
- children = node.childNodes;
-
- if (point[i] > children.length - 1)
- return;
-
- node = children[point[i]];
- }
-
- // Move text offset to best suitable location
- if (node.nodeType === 3)
- offset = Math.min(point[0], node.nodeValue.length);
-
- // Move element offset to best suitable location
- if (node.nodeType === 1)
- offset = Math.min(point[0], node.childNodes.length);
-
- // Set offset within container node
- if (start)
- rng.setStart(node, offset);
- else
- rng.setEnd(node, offset);
- }
-
- return true;
- };
-
- function restoreEndPoint(suffix) {
- var marker = dom.get(bookmark.id + '_' + suffix), node, idx, next, prev, keep = bookmark.keep;
-
- if (marker) {
- node = marker.parentNode;
-
- if (suffix == 'start') {
- if (!keep) {
- idx = dom.nodeIndex(marker);
- } else {
- node = marker.firstChild;
- idx = 1;
- }
-
- startContainer = endContainer = node;
- startOffset = endOffset = idx;
- } else {
- if (!keep) {
- idx = dom.nodeIndex(marker);
- } else {
- node = marker.firstChild;
- idx = 1;
- }
-
- endContainer = node;
- endOffset = idx;
- }
-
- if (!keep) {
- prev = marker.previousSibling;
- next = marker.nextSibling;
-
- // Remove all marker text nodes
- each(tinymce.grep(marker.childNodes), function(node) {
- if (node.nodeType == 3)
- node.nodeValue = node.nodeValue.replace(/\uFEFF/g, '');
- });
-
- // Remove marker but keep children if for example contents where inserted into the marker
- // Also remove duplicated instances of the marker for example by a split operation or by WebKit auto split on paste feature
- while (marker = dom.get(bookmark.id + '_' + suffix))
- dom.remove(marker, 1);
-
- // If siblings are text nodes then merge them unless it's Opera since it some how removes the node
- // and we are sniffing since adding a lot of detection code for a browser with 3% of the market isn't worth the effort. Sorry, Opera but it's just a fact
- if (prev && next && prev.nodeType == next.nodeType && prev.nodeType == 3 && !tinymce.isOpera) {
- idx = prev.nodeValue.length;
- prev.appendData(next.nodeValue);
- dom.remove(next);
-
- if (suffix == 'start') {
- startContainer = endContainer = prev;
- startOffset = endOffset = idx;
- } else {
- endContainer = prev;
- endOffset = idx;
- }
- }
- }
- }
- };
-
- function addBogus(node) {
- // Adds a bogus BR element for empty block elements
- if (dom.isBlock(node) && !node.innerHTML && !isIE)
- node.innerHTML = '<br data-mce-bogus="1" />';
-
- return node;
- };
-
- if (bookmark) {
- if (bookmark.start) {
- rng = dom.createRng();
- root = dom.getRoot();
-
- if (t.tridentSel)
- return t.tridentSel.moveToBookmark(bookmark);
-
- if (setEndPoint(true) && setEndPoint()) {
- t.setRng(rng);
- }
- } else if (bookmark.id) {
- // Restore start/end points
- restoreEndPoint('start');
- restoreEndPoint('end');
-
- if (startContainer) {
- rng = dom.createRng();
- rng.setStart(addBogus(startContainer), startOffset);
- rng.setEnd(addBogus(endContainer), endOffset);
- t.setRng(rng);
- }
- } else if (bookmark.name) {
- t.select(dom.select(bookmark.name)[bookmark.index]);
- } else if (bookmark.rng) {
- rng = bookmark.rng;
-
- if (rng.startContainer) {
- rng2 = t.dom.createRng();
-
- try {
- rng2.setStart(rng.startContainer, rng.startOffset);
- rng2.setEnd(rng.endContainer, rng.endOffset);
- } catch (e) {
- // Might fail with index error
- }
-
- rng = rng2;
- }
-
- t.setRng(rng);
- }
- }
- },
-
- select : function(node, content) {
- var t = this, dom = t.dom, rng = dom.createRng(), idx;
-
- function setPoint(node, start) {
- var walker = new TreeWalker(node, node);
-
- do {
- // Text node
- if (node.nodeType == 3 && tinymce.trim(node.nodeValue).length !== 0) {
- if (start)
- rng.setStart(node, 0);
- else
- rng.setEnd(node, node.nodeValue.length);
-
- return;
- }
-
- // BR element
- if (node.nodeName == 'BR') {
- if (start)
- rng.setStartBefore(node);
- else
- rng.setEndBefore(node);
-
- return;
- }
- } while (node = (start ? walker.next() : walker.prev()));
- };
-
- if (node) {
- idx = dom.nodeIndex(node);
- rng.setStart(node.parentNode, idx);
- rng.setEnd(node.parentNode, idx + 1);
-
- // Find first/last text node or BR element
- if (content) {
- setPoint(node, 1);
- setPoint(node);
- }
-
- t.setRng(rng);
- }
-
- return node;
- },
-
- isCollapsed : function() {
- var t = this, r = t.getRng(), s = t.getSel();
-
- if (!r || r.item)
- return false;
-
- if (r.compareEndPoints)
- return r.compareEndPoints('StartToEnd', r) === 0;
-
- return !s || r.collapsed;
- },
-
- collapse : function(to_start) {
- var self = this, rng = self.getRng(), node;
-
- // Control range on IE
- if (rng.item) {
- node = rng.item(0);
- rng = self.win.document.body.createTextRange();
- rng.moveToElementText(node);
- }
-
- rng.collapse(!!to_start);
- self.setRng(rng);
- },
-
- getSel : function() {
- var t = this, w = this.win;
-
- return w.getSelection ? w.getSelection() : w.document.selection;
- },
-
- getRng : function(w3c) {
- var self = this, selection, rng, elm, doc = self.win.document;
-
- // Found tridentSel object then we need to use that one
- if (w3c && self.tridentSel) {
- return self.tridentSel.getRangeAt(0);
- }
-
- try {
- if (selection = self.getSel()) {
- rng = selection.rangeCount > 0 ? selection.getRangeAt(0) : (selection.createRange ? selection.createRange() : doc.createRange());
- }
- } catch (ex) {
- // IE throws unspecified error here if TinyMCE is placed in a frame/iframe
- }
-
- // We have W3C ranges and it's IE then fake control selection since IE9 doesn't handle that correctly yet
- if (tinymce.isIE && ! tinymce.isIE11 && rng && rng.setStart && doc.selection.createRange().item) {
- elm = doc.selection.createRange().item(0);
- rng = doc.createRange();
- rng.setStartBefore(elm);
- rng.setEndAfter(elm);
- }
-
- // No range found then create an empty one
- // This can occur when the editor is placed in a hidden container element on Gecko
- // Or on IE when there was an exception
- if (!rng) {
- rng = doc.createRange ? doc.createRange() : doc.body.createTextRange();
- }
-
- // If range is at start of document then move it to start of body
- if (rng.setStart && rng.startContainer.nodeType === 9 && rng.collapsed) {
- elm = self.dom.getRoot();
- rng.setStart(elm, 0);
- rng.setEnd(elm, 0);
- }
-
- if (self.selectedRange && self.explicitRange) {
- if (rng.compareBoundaryPoints(rng.START_TO_START, self.selectedRange) === 0 && rng.compareBoundaryPoints(rng.END_TO_END, self.selectedRange) === 0) {
- // Safari, Opera and Chrome only ever select text which causes the range to change.
- // This lets us use the originally set range if the selection hasn't been changed by the user.
- rng = self.explicitRange;
- } else {
- self.selectedRange = null;
- self.explicitRange = null;
- }
- }
-
- return rng;
- },
-
- setRng : function(r, forward) {
- var s, t = this;
-
- if (!t.tridentSel) {
- s = t.getSel();
-
- if (s) {
- t.explicitRange = r;
-
- try {
- s.removeAllRanges();
- } catch (ex) {
- // IE9 might throw errors here don't know why
- }
-
- s.addRange(r);
-
- // Forward is set to false and we have an extend function
- if (forward === false && s.extend) {
- s.collapse(r.endContainer, r.endOffset);
- s.extend(r.startContainer, r.startOffset);
- }
-
- // adding range isn't always successful so we need to check range count otherwise an exception can occur
- t.selectedRange = s.rangeCount > 0 ? s.getRangeAt(0) : null;
- }
- } else {
- // Is W3C Range
- if (r.cloneRange) {
- try {
- t.tridentSel.addRange(r);
- return;
- } catch (ex) {
- //IE9 throws an error here if called before selection is placed in the editor
- }
- }
-
- // Is IE specific range
- try {
- r.select();
- } catch (ex) {
- // Needed for some odd IE bug #1843306
- }
- }
- },
-
- setNode : function(n) {
- var t = this;
-
- t.setContent(t.dom.getOuterHTML(n));
-
- return n;
- },
-
- getNode : function() {
- var t = this, rng = t.getRng(), sel = t.getSel(), elm, start = rng.startContainer, end = rng.endContainer;
-
- function skipEmptyTextNodes(n, forwards) {
- var orig = n;
- while (n && n.nodeType === 3 && n.length === 0) {
- n = forwards ? n.nextSibling : n.previousSibling;
- }
- return n || orig;
- };
-
- // Range maybe lost after the editor is made visible again
- if (!rng)
- return t.dom.getRoot();
-
- if (rng.setStart) {
- elm = rng.commonAncestorContainer;
-
- // Handle selection a image or other control like element such as anchors
- if (!rng.collapsed) {
- if (rng.startContainer == rng.endContainer) {
- if (rng.endOffset - rng.startOffset < 2) {
- if (rng.startContainer.hasChildNodes())
- elm = rng.startContainer.childNodes[rng.startOffset];
- }
- }
-
- // If the anchor node is a element instead of a text node then return this element
- //if (tinymce.isWebKit && sel.anchorNode && sel.anchorNode.nodeType == 1)
- // return sel.anchorNode.childNodes[sel.anchorOffset];
-
- // Handle cases where the selection is immediately wrapped around a node and return that node instead of it's parent.
- // This happens when you double click an underlined word in FireFox.
- if (start.nodeType === 3 && end.nodeType === 3) {
- if (start.length === rng.startOffset) {
- start = skipEmptyTextNodes(start.nextSibling, true);
- } else {
- start = start.parentNode;
- }
- if (rng.endOffset === 0) {
- end = skipEmptyTextNodes(end.previousSibling, false);
- } else {
- end = end.parentNode;
- }
-
- if (start && start === end)
- return start;
- }
- }
-
- if (elm && elm.nodeType == 3)
- return elm.parentNode;
-
- return elm;
- }
-
- return rng.item ? rng.item(0) : rng.parentElement();
- },
-
- getSelectedBlocks : function(st, en) {
- var t = this, dom = t.dom, sb, eb, n, bl = [];
-
- sb = dom.getParent(st || t.getStart(), dom.isBlock);
- eb = dom.getParent(en || t.getEnd(), dom.isBlock);
-
- if (sb)
- bl.push(sb);
-
- if (sb && eb && sb != eb) {
- n = sb;
-
- var walker = new TreeWalker(sb, dom.getRoot());
- while ((n = walker.next()) && n != eb) {
- if (dom.isBlock(n))
- bl.push(n);
- }
- }
-
- if (eb && sb != eb)
- bl.push(eb);
-
- return bl;
- },
-
- isForward: function(){
- var dom = this.dom, sel = this.getSel(), anchorRange, focusRange;
-
- // No support for selection direction then always return true
- if (!sel || sel.anchorNode == null || sel.focusNode == null) {
- return true;
- }
-
- anchorRange = dom.createRng();
- anchorRange.setStart(sel.anchorNode, sel.anchorOffset);
- anchorRange.collapse(true);
-
- focusRange = dom.createRng();
- focusRange.setStart(sel.focusNode, sel.focusOffset);
- focusRange.collapse(true);
-
- return anchorRange.compareBoundaryPoints(anchorRange.START_TO_START, focusRange) <= 0;
- },
-
- normalize : function() {
- var self = this, rng, normalized, collapsed, node, sibling;
-
- function normalizeEndPoint(start) {
- var container, offset, walker, dom = self.dom, body = dom.getRoot(), node, nonEmptyElementsMap, nodeName;
-
- function hasBrBeforeAfter(node, left) {
- var walker = new TreeWalker(node, dom.getParent(node.parentNode, dom.isBlock) || body);
-
- while (node = walker[left ? 'prev' : 'next']()) {
- if (node.nodeName === "BR") {
- return true;
- }
- }
- };
-
- // Walks the dom left/right to find a suitable text node to move the endpoint into
- // It will only walk within the current parent block or body and will stop if it hits a block or a BR/IMG
- function findTextNodeRelative(left, startNode) {
- var walker, lastInlineElement;
-
- startNode = startNode || container;
- walker = new TreeWalker(startNode, dom.getParent(startNode.parentNode, dom.isBlock) || body);
-
- // Walk left until we hit a text node we can move to or a block/br/img
- while (node = walker[left ? 'prev' : 'next']()) {
- // Found text node that has a length
- if (node.nodeType === 3 && node.nodeValue.length > 0) {
- container = node;
- offset = left ? node.nodeValue.length : 0;
- normalized = true;
- return;
- }
-
- // Break if we find a block or a BR/IMG/INPUT etc
- if (dom.isBlock(node) || nonEmptyElementsMap[node.nodeName.toLowerCase()]) {
- return;
- }
-
- lastInlineElement = node;
- }
-
- // Only fetch the last inline element when in caret mode for now
- if (collapsed && lastInlineElement) {
- container = lastInlineElement;
- normalized = true;
- offset = 0;
- }
- };
-
- container = rng[(start ? 'start' : 'end') + 'Container'];
- offset = rng[(start ? 'start' : 'end') + 'Offset'];
- nonEmptyElementsMap = dom.schema.getNonEmptyElements();
-
- // If the container is a document move it to the body element
- if (container.nodeType === 9) {
- container = dom.getRoot();
- offset = 0;
- }
-
- // If the container is body try move it into the closest text node or position
- if (container === body) {
- // If start is before/after a image, table etc
- if (start) {
- node = container.childNodes[offset > 0 ? offset - 1 : 0];
- if (node) {
- nodeName = node.nodeName.toLowerCase();
- if (nonEmptyElementsMap[node.nodeName] || node.nodeName == "TABLE") {
- return;
- }
- }
- }
-
- // Resolve the index
- if (container.hasChildNodes()) {
- container = container.childNodes[Math.min(!start && offset > 0 ? offset - 1 : offset, container.childNodes.length - 1)];
- offset = 0;
-
- // Don't walk into elements that doesn't have any child nodes like a IMG
- if (container.hasChildNodes() && !/TABLE/.test(container.nodeName)) {
- // Walk the DOM to find a text node to place the caret at or a BR
- node = container;
- walker = new TreeWalker(container, body);
-
- do {
- // Found a text node use that position
- if (node.nodeType === 3 && node.nodeValue.length > 0) {
- offset = start ? 0 : node.nodeValue.length;
- container = node;
- normalized = true;
- break;
- }
-
- // Found a BR/IMG element that we can place the caret before
- if (nonEmptyElementsMap[node.nodeName.toLowerCase()]) {
- offset = dom.nodeIndex(node);
- container = node.parentNode;
-
- // Put caret after image when moving the end point
- if (node.nodeName == "IMG" && !start) {
- offset++;
- }
-
- normalized = true;
- break;
- }
- } while (node = (start ? walker.next() : walker.prev()));
- }
- }
- }
-
- // Lean the caret to the left if possible
- if (collapsed) {
- // So this: <b>x</b><i>|x</i>
- // Becomes: <b>x|</b><i>x</i>
- // Seems that only gecko has issues with this
- if (container.nodeType === 3 && offset === 0) {
- findTextNodeRelative(true);
- }
-
- // Lean left into empty inline elements when the caret is before a BR
- // So this: <i><b></b><i>|<br></i>
- // Becomes: <i><b>|</b><i><br></i>
- // Seems that only gecko has issues with this
- if (container.nodeType === 1) {
- node = container.childNodes[offset];
- if(node && node.nodeName === 'BR' && !hasBrBeforeAfter(node) && !hasBrBeforeAfter(node, true)) {
- findTextNodeRelative(true, container.childNodes[offset]);
- }
- }
- }
-
- // Lean the start of the selection right if possible
- // So this: x[<b>x]</b>
- // Becomes: x<b>[x]</b>
- if (start && !collapsed && container.nodeType === 3 && offset === container.nodeValue.length) {
- findTextNodeRelative(false);
- }
-
- // Set endpoint if it was normalized
- if (normalized)
- rng['set' + (start ? 'Start' : 'End')](container, offset);
- };
-
- // Normalize only on non IE browsers for now
- if (tinymce.isIE)
- return;
-
- rng = self.getRng();
- collapsed = rng.collapsed;
-
- // Normalize the end points
- normalizeEndPoint(true);
-
- if (!collapsed)
- normalizeEndPoint();
-
- // Set the selection if it was normalized
- if (normalized) {
- // If it was collapsed then make sure it still is
- if (collapsed) {
- rng.collapse(true);
- }
-
- //console.log(self.dom.dumpRng(rng));
- self.setRng(rng, self.isForward());
- }
- },
-
- selectorChanged: function(selector, callback) {
- var self = this, currentSelectors;
-
- if (!self.selectorChangedData) {
- self.selectorChangedData = {};
- currentSelectors = {};
-
- self.editor.onNodeChange.addToTop(function(ed, cm, node) {
- var dom = self.dom, parents = dom.getParents(node, null, dom.getRoot()), matchedSelectors = {};
-
- // Check for new matching selectors
- each(self.selectorChangedData, function(callbacks, selector) {
- each(parents, function(node) {
- if (dom.is(node, selector)) {
- if (!currentSelectors[selector]) {
- // Execute callbacks
- each(callbacks, function(callback) {
- callback(true, {node: node, selector: selector, parents: parents});
- });
-
- currentSelectors[selector] = callbacks;
- }
-
- matchedSelectors[selector] = callbacks;
- return false;
- }
- });
- });
-
- // Check if current selectors still match
- each(currentSelectors, function(callbacks, selector) {
- if (!matchedSelectors[selector]) {
- delete currentSelectors[selector];
-
- each(callbacks, function(callback) {
- callback(false, {node: node, selector: selector, parents: parents});
- });
- }
- });
- });
- }
-
- // Add selector listeners
- if (!self.selectorChangedData[selector]) {
- self.selectorChangedData[selector] = [];
- }
-
- self.selectorChangedData[selector].push(callback);
-
- return self;
- },
-
- scrollIntoView: function(elm) {
- var y, viewPort, self = this, dom = self.dom;
-
- viewPort = dom.getViewPort(self.editor.getWin());
- y = dom.getPos(elm).y;
- if (y < viewPort.y || y + 25 > viewPort.y + viewPort.h) {
- self.editor.getWin().scrollTo(0, y < viewPort.y ? y : y - viewPort.h + 25);
- }
- },
-
- destroy : function(manual) {
- var self = this;
-
- self.win = null;
-
- // Manual destroy then remove unload handler
- if (!manual)
- tinymce.removeUnload(self.destroy);
- },
-
- // IE has an issue where you can't select/move the caret by clicking outside the body if the document is in standards mode
- _fixIESelection : function() {
- var dom = this.dom, doc = dom.doc, body = doc.body, started, startRng, htmlElm;
-
- // Return range from point or null if it failed
- function rngFromPoint(x, y) {
- var rng = body.createTextRange();
-
- try {
- rng.moveToPoint(x, y);
- } catch (ex) {
- // IE sometimes throws and exception, so lets just ignore it
- rng = null;
- }
-
- return rng;
- };
-
- // Fires while the selection is changing
- function selectionChange(e) {
- var pointRng;
-
- // Check if the button is down or not
- if (e.button) {
- // Create range from mouse position
- pointRng = rngFromPoint(e.x, e.y);
-
- if (pointRng) {
- // Check if pointRange is before/after selection then change the endPoint
- if (pointRng.compareEndPoints('StartToStart', startRng) > 0)
- pointRng.setEndPoint('StartToStart', startRng);
- else
- pointRng.setEndPoint('EndToEnd', startRng);
-
- pointRng.select();
- }
- } else
- endSelection();
- }
-
- // Removes listeners
- function endSelection() {
- var rng = doc.selection.createRange();
-
- // If the range is collapsed then use the last start range
- if (startRng && !rng.item && rng.compareEndPoints('StartToEnd', rng) === 0)
- startRng.select();
-
- dom.unbind(doc, 'mouseup', endSelection);
- dom.unbind(doc, 'mousemove', selectionChange);
- startRng = started = 0;
- };
-
- // Make HTML element unselectable since we are going to handle selection by hand
- doc.documentElement.unselectable = true;
-
- // Detect when user selects outside BODY
- dom.bind(doc, ['mousedown', 'contextmenu'], function(e) {
- if (e.target.nodeName === 'HTML') {
- if (started)
- endSelection();
-
- // Detect vertical scrollbar, since IE will fire a mousedown on the scrollbar and have target set as HTML
- htmlElm = doc.documentElement;
- if (htmlElm.scrollHeight > htmlElm.clientHeight)
- return;
-
- started = 1;
- // Setup start position
- startRng = rngFromPoint(e.x, e.y);
- if (startRng) {
- // Listen for selection change events
- dom.bind(doc, 'mouseup', endSelection);
- dom.bind(doc, 'mousemove', selectionChange);
-
- dom.win.focus();
- startRng.select();
- }
- }
- });
- }
- });
-})(tinymce);
-
-(function(tinymce) {
- tinymce.dom.Serializer = function(settings, dom, schema) {
- var onPreProcess, onPostProcess, isIE = tinymce.isIE, each = tinymce.each, htmlParser;
-
- // Support the old apply_source_formatting option
- if (!settings.apply_source_formatting)
- settings.indent = false;
-
- // Default DOM and Schema if they are undefined
- dom = dom || tinymce.DOM;
- schema = schema || new tinymce.html.Schema(settings);
- settings.entity_encoding = settings.entity_encoding || 'named';
- settings.remove_trailing_brs = "remove_trailing_brs" in settings ? settings.remove_trailing_brs : true;
-
- onPreProcess = new tinymce.util.Dispatcher(self);
-
- onPostProcess = new tinymce.util.Dispatcher(self);
-
- htmlParser = new tinymce.html.DomParser(settings, schema);
-
- // Convert move data-mce-src, data-mce-href and data-mce-style into nodes or process them if needed
- htmlParser.addAttributeFilter('src,href,style', function(nodes, name) {
- var i = nodes.length, node, value, internalName = 'data-mce-' + name, urlConverter = settings.url_converter, urlConverterScope = settings.url_converter_scope, undef;
-
- while (i--) {
- node = nodes[i];
-
- value = node.attributes.map[internalName];
- if (value !== undef) {
- // Set external name to internal value and remove internal
- node.attr(name, value.length > 0 ? value : null);
- node.attr(internalName, null);
- } else {
- // No internal attribute found then convert the value we have in the DOM
- value = node.attributes.map[name];
-
- if (name === "style")
- value = dom.serializeStyle(dom.parseStyle(value), node.name);
- else if (urlConverter)
- value = urlConverter.call(urlConverterScope, value, name, node.name);
-
- node.attr(name, value.length > 0 ? value : null);
- }
- }
- });
-
- // Remove internal classes mceItem<..> or mceSelected
- htmlParser.addAttributeFilter('class', function(nodes, name) {
- var i = nodes.length, node, value;
-
- while (i--) {
- node = nodes[i];
- value = node.attr('class').replace(/(?:^|\s)mce(Item\w+|Selected)(?!\S)/g, '');
- node.attr('class', value.length > 0 ? value : null);
- }
- });
-
- // Remove bookmark elements
- htmlParser.addAttributeFilter('data-mce-type', function(nodes, name, args) {
- var i = nodes.length, node;
-
- while (i--) {
- node = nodes[i];
-
- if (node.attributes.map['data-mce-type'] === 'bookmark' && !args.cleanup)
- node.remove();
- }
- });
-
- // Remove expando attributes
- htmlParser.addAttributeFilter('data-mce-expando', function(nodes, name, args) {
- var i = nodes.length;
-
- while (i--) {
- nodes[i].attr(name, null);
- }
- });
-
- htmlParser.addNodeFilter('noscript', function(nodes) {
- var i = nodes.length, node;
-
- while (i--) {
- node = nodes[i].firstChild;
-
- if (node) {
- node.value = tinymce.html.Entities.decode(node.value);
- }
- }
- });
-
- // Force script into CDATA sections and remove the mce- prefix also add comments around styles
- htmlParser.addNodeFilter('script,style', function(nodes, name) {
- var i = nodes.length, node, value;
-
- function trim(value) {
- return value.replace(/(<!--\[CDATA\[|\]\]-->)/g, '\n')
- .replace(/^[\r\n]*|[\r\n]*$/g, '')
- .replace(/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi, '')
- .replace(/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g, '');
- };
-
- while (i--) {
- node = nodes[i];
- value = node.firstChild ? node.firstChild.value : '';
-
- if (name === "script") {
- // Remove mce- prefix from script elements
- node.attr('type', (node.attr('type') || 'text/javascript').replace(/^mce\-/, ''));
-
- if (value.length > 0)
- node.firstChild.value = '// <![CDATA[\n' + trim(value) + '\n// ]]>';
- } else {
- if (value.length > 0)
- node.firstChild.value = '<!--\n' + trim(value) + '\n-->';
- }
- }
- });
-
- // Convert comments to cdata and handle protected comments
- htmlParser.addNodeFilter('#comment', function(nodes, name) {
- var i = nodes.length, node;
-
- while (i--) {
- node = nodes[i];
-
- if (node.value.indexOf('[CDATA[') === 0) {
- node.name = '#cdata';
- node.type = 4;
- node.value = node.value.replace(/^\[CDATA\[|\]\]$/g, '');
- } else if (node.value.indexOf('mce:protected ') === 0) {
- node.name = "#text";
- node.type = 3;
- node.raw = true;
- node.value = unescape(node.value).substr(14);
- }
- }
- });
-
- htmlParser.addNodeFilter('xml:namespace,input', function(nodes, name) {
- var i = nodes.length, node;
-
- while (i--) {
- node = nodes[i];
- if (node.type === 7)
- node.remove();
- else if (node.type === 1) {
- if (name === "input" && !("type" in node.attributes.map))
- node.attr('type', 'text');
- }
- }
- });
-
- // Fix list elements, TODO: Replace this later
- if (settings.fix_list_elements) {
- htmlParser.addNodeFilter('ul,ol', function(nodes, name) {
- var i = nodes.length, node, parentNode;
-
- while (i--) {
- node = nodes[i];
- parentNode = node.parent;
-
- if (parentNode.name === 'ul' || parentNode.name === 'ol') {
- if (node.prev && node.prev.name === 'li') {
- node.prev.append(node);
- }
- }
- }
- });
- }
-
- // Remove internal data attributes
- htmlParser.addAttributeFilter('data-mce-src,data-mce-href,data-mce-style', function(nodes, name) {
- var i = nodes.length;
-
- while (i--) {
- nodes[i].attr(name, null);
- }
- });
-
- // Return public methods
- return {
- schema : schema,
-
- addNodeFilter : htmlParser.addNodeFilter,
-
- addAttributeFilter : htmlParser.addAttributeFilter,
-
- onPreProcess : onPreProcess,
-
- onPostProcess : onPostProcess,
-
- serialize : function(node, args) {
- var impl, doc, oldDoc, htmlSerializer, content;
-
- // Explorer won't clone contents of script and style and the
- // selected index of select elements are cleared on a clone operation.
- if (isIE && dom.select('script,style,select,map').length > 0) {
- content = node.innerHTML;
- node = node.cloneNode(false);
- dom.setHTML(node, content);
- } else
- node = node.cloneNode(true);
-
- // Nodes needs to be attached to something in WebKit/Opera
- // Older builds of Opera crashes if you attach the node to an document created dynamically
- // and since we can't feature detect a crash we need to sniff the acutal build number
- // This fix will make DOM ranges and make Sizzle happy!
- impl = node.ownerDocument.implementation;
- if (impl.createHTMLDocument) {
- // Create an empty HTML document
- doc = impl.createHTMLDocument("");
-
- // Add the element or it's children if it's a body element to the new document
- each(node.nodeName == 'BODY' ? node.childNodes : [node], function(node) {
- doc.body.appendChild(doc.importNode(node, true));
- });
-
- // Grab first child or body element for serialization
- if (node.nodeName != 'BODY')
- node = doc.body.firstChild;
- else
- node = doc.body;
-
- // set the new document in DOMUtils so createElement etc works
- oldDoc = dom.doc;
- dom.doc = doc;
- }
-
- args = args || {};
- args.format = args.format || 'html';
-
- // Pre process
- if (!args.no_events) {
- args.node = node;
- onPreProcess.dispatch(self, args);
- }
-
- // Setup serializer
- htmlSerializer = new tinymce.html.Serializer(settings, schema);
-
- // Parse and serialize HTML
- args.content = htmlSerializer.serialize(
- htmlParser.parse(tinymce.trim(args.getInner ? node.innerHTML : dom.getOuterHTML(node)), args)
- );
-
- // Replace all BOM characters for now until we can find a better solution
- if (!args.cleanup)
- args.content = args.content.replace(/\uFEFF/g, '');
-
- // Post process
- if (!args.no_events)
- onPostProcess.dispatch(self, args);
-
- // Restore the old document if it was changed
- if (oldDoc)
- dom.doc = oldDoc;
-
- args.node = null;
-
- return args.content;
- },
-
- addRules : function(rules) {
- schema.addValidElements(rules);
- },
-
- setRules : function(rules) {
- schema.setValidElements(rules);
- }
- };
- };
-})(tinymce);
-(function(tinymce) {
- tinymce.dom.ScriptLoader = function(settings) {
- var QUEUED = 0,
- LOADING = 1,
- LOADED = 2,
- states = {},
- queue = [],
- scriptLoadedCallbacks = {},
- queueLoadedCallbacks = [],
- loading = 0,
- undef;
-
- function loadScript(url, callback) {
- var t = this, dom = tinymce.DOM, elm, uri, loc, id;
-
- // Execute callback when script is loaded
- function done() {
- dom.remove(id);
-
- if (elm)
- elm.onreadystatechange = elm.onload = elm = null;
-
- callback();
- };
-
- function error() {
- // Report the error so it's easier for people to spot loading errors
- if (typeof(console) !== "undefined" && console.log)
- console.log("Failed to load: " + url);
-
- // We can't mark it as done if there is a load error since
- // A) We don't want to produce 404 errors on the server and
- // B) the onerror event won't fire on all browsers.
- // done();
- };
-
- id = dom.uniqueId();
-
- if (tinymce.isIE6) {
- uri = new tinymce.util.URI(url);
- loc = location;
-
- // If script is from same domain and we
- // use IE 6 then use XHR since it's more reliable
- if (uri.host == loc.hostname && uri.port == loc.port && (uri.protocol + ':') == loc.protocol && uri.protocol.toLowerCase() != 'file') {
- tinymce.util.XHR.send({
- url : tinymce._addVer(uri.getURI()),
- success : function(content) {
- // Create new temp script element
- var script = dom.create('script', {
- type : 'text/javascript'
- });
-
- // Evaluate script in global scope
- script.text = content;
- document.getElementsByTagName('head')[0].appendChild(script);
- dom.remove(script);
-
- done();
- },
-
- error : error
- });
-
- return;
- }
- }
-
- // Create new script element
- elm = document.createElement('script');
- elm.id = id;
- elm.type = 'text/javascript';
- elm.src = tinymce._addVer(url);
-
- // Add onload listener for non IE browsers since IE9
- // fires onload event before the script is parsed and executed
- if (!tinymce.isIE || tinymce.isIE11)
- elm.onload = done;
-
- // Add onerror event will get fired on some browsers but not all of them
- elm.onerror = error;
-
- // Opera 9.60 doesn't seem to fire the onreadystate event at correctly
- if (!tinymce.isOpera) {
- elm.onreadystatechange = function() {
- var state = elm.readyState;
-
- // Loaded state is passed on IE 6 however there
- // are known issues with this method but we can't use
- // XHR in a cross domain loading
- if (state == 'complete' || state == 'loaded')
- done();
- };
- }
-
- // Most browsers support this feature so we report errors
- // for those at least to help users track their missing plugins etc
- // todo: Removed since it produced error if the document is unloaded by navigating away, re-add it as an option
- /*elm.onerror = function() {
- alert('Failed to load: ' + url);
- };*/
-
- // Add script to document
- (document.getElementsByTagName('head')[0] || document.body).appendChild(elm);
- };
-
- this.isDone = function(url) {
- return states[url] == LOADED;
- };
-
- this.markDone = function(url) {
- states[url] = LOADED;
- };
-
- this.add = this.load = function(url, callback, scope) {
- var item, state = states[url];
-
- // Add url to load queue
- if (state == undef) {
- queue.push(url);
- states[url] = QUEUED;
- }
-
- if (callback) {
- // Store away callback for later execution
- if (!scriptLoadedCallbacks[url])
- scriptLoadedCallbacks[url] = [];
-
- scriptLoadedCallbacks[url].push({
- func : callback,
- scope : scope || this
- });
- }
- };
-
- this.loadQueue = function(callback, scope) {
- this.loadScripts(queue, callback, scope);
- };
-
- this.loadScripts = function(scripts, callback, scope) {
- var loadScripts;
-
- function execScriptLoadedCallbacks(url) {
- // Execute URL callback functions
- tinymce.each(scriptLoadedCallbacks[url], function(callback) {
- callback.func.call(callback.scope);
- });
-
- scriptLoadedCallbacks[url] = undef;
- };
-
- queueLoadedCallbacks.push({
- func : callback,
- scope : scope || this
- });
-
- loadScripts = function() {
- var loadingScripts = tinymce.grep(scripts);
-
- // Current scripts has been handled
- scripts.length = 0;
-
- // Load scripts that needs to be loaded
- tinymce.each(loadingScripts, function(url) {
- // Script is already loaded then execute script callbacks directly
- if (states[url] == LOADED) {
- execScriptLoadedCallbacks(url);
- return;
- }
-
- // Is script not loading then start loading it
- if (states[url] != LOADING) {
- states[url] = LOADING;
- loading++;
-
- loadScript(url, function() {
- states[url] = LOADED;
- loading--;
-
- execScriptLoadedCallbacks(url);
-
- // Load more scripts if they where added by the recently loaded script
- loadScripts();
- });
- }
- });
-
- // No scripts are currently loading then execute all pending queue loaded callbacks
- if (!loading) {
- tinymce.each(queueLoadedCallbacks, function(callback) {
- callback.func.call(callback.scope);
- });
-
- queueLoadedCallbacks.length = 0;
- }
- };
-
- loadScripts();
- };
- };
-
- // Global script loader
- tinymce.ScriptLoader = new tinymce.dom.ScriptLoader();
-})(tinymce);
-
-(function(tinymce) {
- tinymce.dom.RangeUtils = function(dom) {
- var INVISIBLE_CHAR = '\uFEFF';
-
- this.walk = function(rng, callback) {
- var startContainer = rng.startContainer,
- startOffset = rng.startOffset,
- endContainer = rng.endContainer,
- endOffset = rng.endOffset,
- ancestor, startPoint,
- endPoint, node, parent, siblings, nodes;
-
- // Handle table cell selection the table plugin enables
- // you to fake select table cells and perform formatting actions on them
- nodes = dom.select('td.mceSelected,th.mceSelected');
- if (nodes.length > 0) {
- tinymce.each(nodes, function(node) {
- callback([node]);
- });
-
- return;
- }
-
- function exclude(nodes) {
- var node;
-
- // First node is excluded
- node = nodes[0];
- if (node.nodeType === 3 && node === startContainer && startOffset >= node.nodeValue.length) {
- nodes.splice(0, 1);
- }
-
- // Last node is excluded
- node = nodes[nodes.length - 1];
- if (endOffset === 0 && nodes.length > 0 && node === endContainer && node.nodeType === 3) {
- nodes.splice(nodes.length - 1, 1);
- }
-
- return nodes;
- };
-
- function collectSiblings(node, name, end_node) {
- var siblings = [];
-
- for (; node && node != end_node; node = node[name])
- siblings.push(node);
-
- return siblings;
- };
-
- function findEndPoint(node, root) {
- do {
- if (node.parentNode == root)
- return node;
-
- node = node.parentNode;
- } while(node);
- };
-
- function walkBoundary(start_node, end_node, next) {
- var siblingName = next ? 'nextSibling' : 'previousSibling';
-
- for (node = start_node, parent = node.parentNode; node && node != end_node; node = parent) {
- parent = node.parentNode;
- siblings = collectSiblings(node == start_node ? node : node[siblingName], siblingName);
-
- if (siblings.length) {
- if (!next)
- siblings.reverse();
-
- callback(exclude(siblings));
- }
- }
- };
-
- // If index based start position then resolve it
- if (startContainer.nodeType == 1 && startContainer.hasChildNodes())
- startContainer = startContainer.childNodes[startOffset];
-
- // If index based end position then resolve it
- if (endContainer.nodeType == 1 && endContainer.hasChildNodes())
- endContainer = endContainer.childNodes[Math.min(endOffset - 1, endContainer.childNodes.length - 1)];
-
- // Same container
- if (startContainer == endContainer)
- return callback(exclude([startContainer]));
-
- // Find common ancestor and end points
- ancestor = dom.findCommonAncestor(startContainer, endContainer);
-
- // Process left side
- for (node = startContainer; node; node = node.parentNode) {
- if (node === endContainer)
- return walkBoundary(startContainer, ancestor, true);
-
- if (node === ancestor)
- break;
- }
-
- // Process right side
- for (node = endContainer; node; node = node.parentNode) {
- if (node === startContainer)
- return walkBoundary(endContainer, ancestor);
-
- if (node === ancestor)
- break;
- }
-
- // Find start/end point
- startPoint = findEndPoint(startContainer, ancestor) || startContainer;
- endPoint = findEndPoint(endContainer, ancestor) || endContainer;
-
- // Walk left leaf
- walkBoundary(startContainer, startPoint, true);
-
- // Walk the middle from start to end point
- siblings = collectSiblings(
- startPoint == startContainer ? startPoint : startPoint.nextSibling,
- 'nextSibling',
- endPoint == endContainer ? endPoint.nextSibling : endPoint
- );
-
- if (siblings.length)
- callback(exclude(siblings));
-
- // Walk right leaf
- walkBoundary(endContainer, endPoint);
- };
-
- this.split = function(rng) {
- var startContainer = rng.startContainer,
- startOffset = rng.startOffset,
- endContainer = rng.endContainer,
- endOffset = rng.endOffset;
-
- function splitText(node, offset) {
- return node.splitText(offset);
- };
-
- // Handle single text node
- if (startContainer == endContainer && startContainer.nodeType == 3) {
- if (startOffset > 0 && startOffset < startContainer.nodeValue.length) {
- endContainer = splitText(startContainer, startOffset);
- startContainer = endContainer.previousSibling;
-
- if (endOffset > startOffset) {
- endOffset = endOffset - startOffset;
- startContainer = endContainer = splitText(endContainer, endOffset).previousSibling;
- endOffset = endContainer.nodeValue.length;
- startOffset = 0;
- } else {
- endOffset = 0;
- }
- }
- } else {
- // Split startContainer text node if needed
- if (startContainer.nodeType == 3 && startOffset > 0 && startOffset < startContainer.nodeValue.length) {
- startContainer = splitText(startContainer, startOffset);
- startOffset = 0;
- }
-
- // Split endContainer text node if needed
- if (endContainer.nodeType == 3 && endOffset > 0 && endOffset < endContainer.nodeValue.length) {
- endContainer = splitText(endContainer, endOffset).previousSibling;
- endOffset = endContainer.nodeValue.length;
- }
- }
-
- return {
- startContainer : startContainer,
- startOffset : startOffset,
- endContainer : endContainer,
- endOffset : endOffset
- };
- };
-
- };
-
- tinymce.dom.RangeUtils.compareRanges = function(rng1, rng2) {
- if (rng1 && rng2) {
- // Compare native IE ranges
- if (rng1.item || rng1.duplicate) {
- // Both are control ranges and the selected element matches
- if (rng1.item && rng2.item && rng1.item(0) === rng2.item(0))
- return true;
-
- // Both are text ranges and the range matches
- if (rng1.isEqual && rng2.isEqual && rng2.isEqual(rng1))
- return true;
- } else {
- // Compare w3c ranges
- return rng1.startContainer == rng2.startContainer && rng1.startOffset == rng2.startOffset;
- }
- }
-
- return false;
- };
-})(tinymce);
-
-(function(tinymce) {
- var Event = tinymce.dom.Event, each = tinymce.each;
-
- tinymce.create('tinymce.ui.KeyboardNavigation', {
- KeyboardNavigation: function(settings, dom) {
- var t = this, root = settings.root, items = settings.items,
- enableUpDown = settings.enableUpDown, enableLeftRight = settings.enableLeftRight || !settings.enableUpDown,
- excludeFromTabOrder = settings.excludeFromTabOrder,
- itemFocussed, itemBlurred, rootKeydown, rootFocussed, focussedId;
-
- dom = dom || tinymce.DOM;
-
- itemFocussed = function(evt) {
- focussedId = evt.target.id;
- };
-
- itemBlurred = function(evt) {
- dom.setAttrib(evt.target.id, 'tabindex', '-1');
- };
-
- rootFocussed = function(evt) {
- var item = dom.get(focussedId);
- dom.setAttrib(item, 'tabindex', '0');
- item.focus();
- };
-
- t.focus = function() {
- dom.get(focussedId).focus();
- };
-
- t.destroy = function() {
- each(items, function(item) {
- var elm = dom.get(item.id);
-
- dom.unbind(elm, 'focus', itemFocussed);
- dom.unbind(elm, 'blur', itemBlurred);
- });
-
- var rootElm = dom.get(root);
- dom.unbind(rootElm, 'focus', rootFocussed);
- dom.unbind(rootElm, 'keydown', rootKeydown);
-
- items = dom = root = t.focus = itemFocussed = itemBlurred = rootKeydown = rootFocussed = null;
- t.destroy = function() {};
- };
-
- t.moveFocus = function(dir, evt) {
- var idx = -1, controls = t.controls, newFocus;
-
- if (!focussedId)
- return;
-
- each(items, function(item, index) {
- if (item.id === focussedId) {
- idx = index;
- return false;
- }
- });
-
- idx += dir;
- if (idx < 0) {
- idx = items.length - 1;
- } else if (idx >= items.length) {
- idx = 0;
- }
-
- newFocus = items[idx];
- dom.setAttrib(focussedId, 'tabindex', '-1');
- dom.setAttrib(newFocus.id, 'tabindex', '0');
- dom.get(newFocus.id).focus();
-
- if (settings.actOnFocus) {
- settings.onAction(newFocus.id);
- }
-
- if (evt)
- Event.cancel(evt);
- };
-
- rootKeydown = function(evt) {
- var DOM_VK_LEFT = 37, DOM_VK_RIGHT = 39, DOM_VK_UP = 38, DOM_VK_DOWN = 40, DOM_VK_ESCAPE = 27, DOM_VK_ENTER = 14, DOM_VK_RETURN = 13, DOM_VK_SPACE = 32;
-
- switch (evt.keyCode) {
- case DOM_VK_LEFT:
- if (enableLeftRight) t.moveFocus(-1);
- Event.cancel(evt);
- break;
-
- case DOM_VK_RIGHT:
- if (enableLeftRight) t.moveFocus(1);
- Event.cancel(evt);
- break;
-
- case DOM_VK_UP:
- if (enableUpDown) t.moveFocus(-1);
- Event.cancel(evt);
- break;
-
- case DOM_VK_DOWN:
- if (enableUpDown) t.moveFocus(1);
- Event.cancel(evt);
- break;
-
- case DOM_VK_ESCAPE:
- if (settings.onCancel) {
- settings.onCancel();
- Event.cancel(evt);
- }
- break;
-
- case DOM_VK_ENTER:
- case DOM_VK_RETURN:
- case DOM_VK_SPACE:
- if (settings.onAction) {
- settings.onAction(focussedId);
- Event.cancel(evt);
- }
- break;
- }
- };
-
- // Set up state and listeners for each item.
- each(items, function(item, idx) {
- var tabindex, elm;
-
- if (!item.id) {
- item.id = dom.uniqueId('_mce_item_');
- }
-
- elm = dom.get(item.id);
-
- if (excludeFromTabOrder) {
- dom.bind(elm, 'blur', itemBlurred);
- tabindex = '-1';
- } else {
- tabindex = (idx === 0 ? '0' : '-1');
- }
-
- elm.setAttribute('tabindex', tabindex);
- dom.bind(elm, 'focus', itemFocussed);
- });
-
- // Setup initial state for root element.
- if (items[0]){
- focussedId = items[0].id;
- }
-
- dom.setAttrib(root, 'tabindex', '-1');
-
- // Setup listeners for root element.
- var rootElm = dom.get(root);
- dom.bind(rootElm, 'focus', rootFocussed);
- dom.bind(rootElm, 'keydown', rootKeydown);
- }
- });
-})(tinymce);
-
-(function(tinymce) {
- // Shorten class names
- var DOM = tinymce.DOM, is = tinymce.is;
-
- tinymce.create('tinymce.ui.Control', {
- Control : function(id, s, editor) {
- this.id = id;
- this.settings = s = s || {};
- this.rendered = false;
- this.onRender = new tinymce.util.Dispatcher(this);
- this.classPrefix = '';
- this.scope = s.scope || this;
- this.disabled = 0;
- this.active = 0;
- this.editor = editor;
- },
-
- setAriaProperty : function(property, value) {
- var element = DOM.get(this.id + '_aria') || DOM.get(this.id);
- if (element) {
- DOM.setAttrib(element, 'aria-' + property, !!value);
- }
- },
-
- focus : function() {
- DOM.get(this.id).focus();
- },
-
- setDisabled : function(s) {
- if (s != this.disabled) {
- this.setAriaProperty('disabled', s);
-
- this.setState('Disabled', s);
- this.setState('Enabled', !s);
- this.disabled = s;
- }
- },
-
- isDisabled : function() {
- return this.disabled;
- },
-
- setActive : function(s) {
- if (s != this.active) {
- this.setState('Active', s);
- this.active = s;
- this.setAriaProperty('pressed', s);
- }
- },
-
- isActive : function() {
- return this.active;
- },
-
- setState : function(c, s) {
- var n = DOM.get(this.id);
-
- c = this.classPrefix + c;
-
- if (s)
- DOM.addClass(n, c);
- else
- DOM.removeClass(n, c);
- },
-
- isRendered : function() {
- return this.rendered;
- },
-
- renderHTML : function() {
- },
-
- renderTo : function(n) {
- DOM.setHTML(n, this.renderHTML());
- },
-
- postRender : function() {
- var t = this, b;
-
- // Set pending states
- if (is(t.disabled)) {
- b = t.disabled;
- t.disabled = -1;
- t.setDisabled(b);
- }
-
- if (is(t.active)) {
- b = t.active;
- t.active = -1;
- t.setActive(b);
- }
- },
-
- remove : function() {
- DOM.remove(this.id);
- this.destroy();
- },
-
- destroy : function() {
- tinymce.dom.Event.clear(this.id);
- }
- });
-})(tinymce);
-tinymce.create('tinymce.ui.Container:tinymce.ui.Control', {
- Container : function(id, s, editor) {
- this.parent(id, s, editor);
-
- this.controls = [];
-
- this.lookup = {};
- },
-
- add : function(c) {
- this.lookup[c.id] = c;
- this.controls.push(c);
-
- return c;
- },
-
- get : function(n) {
- return this.lookup[n];
- }
-});
-
-
-tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
- Separator : function(id, s) {
- this.parent(id, s);
- this.classPrefix = 'mceSeparator';
- this.setDisabled(true);
- },
-
- renderHTML : function() {
- return tinymce.DOM.createHTML('span', {'class' : this.classPrefix, role : 'separator', 'aria-orientation' : 'vertical', tabindex : '-1'});
- }
-});
-
-(function(tinymce) {
- var is = tinymce.is, DOM = tinymce.DOM, each = tinymce.each, walk = tinymce.walk;
-
- tinymce.create('tinymce.ui.MenuItem:tinymce.ui.Control', {
- MenuItem : function(id, s) {
- this.parent(id, s);
- this.classPrefix = 'mceMenuItem';
- },
-
- setSelected : function(s) {
- this.setState('Selected', s);
- this.setAriaProperty('checked', !!s);
- this.selected = s;
- },
-
- isSelected : function() {
- return this.selected;
- },
-
- postRender : function() {
- var t = this;
-
- t.parent();
-
- // Set pending state
- if (is(t.selected))
- t.setSelected(t.selected);
- }
- });
-})(tinymce);
-
-(function(tinymce) {
- var is = tinymce.is, DOM = tinymce.DOM, each = tinymce.each, walk = tinymce.walk;
-
- tinymce.create('tinymce.ui.Menu:tinymce.ui.MenuItem', {
- Menu : function(id, s) {
- var t = this;
-
- t.parent(id, s);
- t.items = {};
- t.collapsed = false;
- t.menuCount = 0;
- t.onAddItem = new tinymce.util.Dispatcher(this);
- },
-
- expand : function(d) {
- var t = this;
-
- if (d) {
- walk(t, function(o) {
- if (o.expand)
- o.expand();
- }, 'items', t);
- }
-
- t.collapsed = false;
- },
-
- collapse : function(d) {
- var t = this;
-
- if (d) {
- walk(t, function(o) {
- if (o.collapse)
- o.collapse();
- }, 'items', t);
- }
-
- t.collapsed = true;
- },
-
- isCollapsed : function() {
- return this.collapsed;
- },
-
- add : function(o) {
- if (!o.settings)
- o = new tinymce.ui.MenuItem(o.id || DOM.uniqueId(), o);
-
- this.onAddItem.dispatch(this, o);
-
- return this.items[o.id] = o;
- },
-
- addSeparator : function() {
- return this.add({separator : true});
- },
-
- addMenu : function(o) {
- if (!o.collapse)
- o = this.createMenu(o);
-
- this.menuCount++;
-
- return this.add(o);
- },
-
- hasMenus : function() {
- return this.menuCount !== 0;
- },
-
- remove : function(o) {
- delete this.items[o.id];
- },
-
- removeAll : function() {
- var t = this;
-
- walk(t, function(o) {
- if (o.removeAll)
- o.removeAll();
- else
- o.remove();
-
- o.destroy();
- }, 'items', t);
-
- t.items = {};
- },
-
- createMenu : function(o) {
- var m = new tinymce.ui.Menu(o.id || DOM.uniqueId(), o);
-
- m.onAddItem.add(this.onAddItem.dispatch, this.onAddItem);
-
- return m;
- }
- });
-})(tinymce);
-(function(tinymce) {
- var is = tinymce.is, DOM = tinymce.DOM, each = tinymce.each, Event = tinymce.dom.Event, Element = tinymce.dom.Element;
-
- tinymce.create('tinymce.ui.DropMenu:tinymce.ui.Menu', {
- DropMenu : function(id, s) {
- s = s || {};
- s.container = s.container || DOM.doc.body;
- s.offset_x = s.offset_x || 0;
- s.offset_y = s.offset_y || 0;
- s.vp_offset_x = s.vp_offset_x || 0;
- s.vp_offset_y = s.vp_offset_y || 0;
-
- if (is(s.icons) && !s.icons)
- s['class'] += ' mceNoIcons';
-
- this.parent(id, s);
- this.onShowMenu = new tinymce.util.Dispatcher(this);
- this.onHideMenu = new tinymce.util.Dispatcher(this);
- this.classPrefix = 'mceMenu';
- },
-
- createMenu : function(s) {
- var t = this, cs = t.settings, m;
-
- s.container = s.container || cs.container;
- s.parent = t;
- s.constrain = s.constrain || cs.constrain;
- s['class'] = s['class'] || cs['class'];
- s.vp_offset_x = s.vp_offset_x || cs.vp_offset_x;
- s.vp_offset_y = s.vp_offset_y || cs.vp_offset_y;
- s.keyboard_focus = cs.keyboard_focus;
- m = new tinymce.ui.DropMenu(s.id || DOM.uniqueId(), s);
-
- m.onAddItem.add(t.onAddItem.dispatch, t.onAddItem);
-
- return m;
- },
-
- focus : function() {
- var t = this;
- if (t.keyboardNav) {
- t.keyboardNav.focus();
- }
- },
-
- update : function() {
- var t = this, s = t.settings, tb = DOM.get('menu_' + t.id + '_tbl'), co = DOM.get('menu_' + t.id + '_co'), tw, th;
-
- tw = s.max_width ? Math.min(tb.offsetWidth, s.max_width) : tb.offsetWidth;
- th = s.max_height ? Math.min(tb.offsetHeight, s.max_height) : tb.offsetHeight;
-
- if (!DOM.boxModel)
- t.element.setStyles({width : tw + 2, height : th + 2});
- else
- t.element.setStyles({width : tw, height : th});
-
- if (s.max_width)
- DOM.setStyle(co, 'width', tw);
-
- if (s.max_height) {
- DOM.setStyle(co, 'height', th);
-
- if (tb.clientHeight < s.max_height)
- DOM.setStyle(co, 'overflow', 'hidden');
- }
- },
-
- showMenu : function(x, y, px) {
- var t = this, s = t.settings, co, vp = DOM.getViewPort(), w, h, mx, my, ot = 2, dm, tb, cp = t.classPrefix;
-
- t.collapse(1);
-
- if (t.isMenuVisible)
- return;
-
- if (!t.rendered) {
- co = DOM.add(t.settings.container, t.renderNode());
-
- each(t.items, function(o) {
- o.postRender();
- });
-
- t.element = new Element('menu_' + t.id, {blocker : 1, container : s.container});
- } else
- co = DOM.get('menu_' + t.id);
-
- // Move layer out of sight unless it's Opera since it scrolls to top of page due to an bug
- if (!tinymce.isOpera)
- DOM.setStyles(co, {left : -0xFFFF , top : -0xFFFF});
-
- DOM.show(co);
- t.update();
-
- x += s.offset_x || 0;
- y += s.offset_y || 0;
- vp.w -= 4;
- vp.h -= 4;
-
- // Move inside viewport if not submenu
- if (s.constrain) {
- w = co.clientWidth - ot;
- h = co.clientHeight - ot;
- mx = vp.x + vp.w;
- my = vp.y + vp.h;
-
- if ((x + s.vp_offset_x + w) > mx)
- x = px ? px - w : Math.max(0, (mx - s.vp_offset_x) - w);
-
- if ((y + s.vp_offset_y + h) > my)
- y = Math.max(0, (my - s.vp_offset_y) - h);
- }
-
- DOM.setStyles(co, {left : x , top : y});
- t.element.update();
-
- t.isMenuVisible = 1;
- t.mouseClickFunc = Event.add(co, 'click', function(e) {
- var m;
-
- e = e.target;
-
- if (e && (e = DOM.getParent(e, 'tr')) && !DOM.hasClass(e, cp + 'ItemSub')) {
- m = t.items[e.id];
-
- if (m.isDisabled())
- return;
-
- dm = t;
-
- while (dm) {
- if (dm.hideMenu)
- dm.hideMenu();
-
- dm = dm.settings.parent;
- }
-
- if (m.settings.onclick)
- m.settings.onclick(e);
-
- return false; // Cancel to fix onbeforeunload problem
- }
- });
-
- if (t.hasMenus()) {
- t.mouseOverFunc = Event.add(co, 'mouseover', function(e) {
- var m, r, mi;
-
- e = e.target;
- if (e && (e = DOM.getParent(e, 'tr'))) {
- m = t.items[e.id];
-
- if (t.lastMenu)
- t.lastMenu.collapse(1);
-
- if (m.isDisabled())
- return;
-
- if (e && DOM.hasClass(e, cp + 'ItemSub')) {
- //p = DOM.getPos(s.container);
- r = DOM.getRect(e);
- m.showMenu((r.x + r.w - ot), r.y - ot, r.x);
- t.lastMenu = m;
- DOM.addClass(DOM.get(m.id).firstChild, cp + 'ItemActive');
- }
- }
- });
- }
-
- Event.add(co, 'keydown', t._keyHandler, t);
-
- t.onShowMenu.dispatch(t);
-
- if (s.keyboard_focus) {
- t._setupKeyboardNav();
- }
- },
-
- hideMenu : function(c) {
- var t = this, co = DOM.get('menu_' + t.id), e;
-
- if (!t.isMenuVisible)
- return;
-
- if (t.keyboardNav) t.keyboardNav.destroy();
- Event.remove(co, 'mouseover', t.mouseOverFunc);
- Event.remove(co, 'click', t.mouseClickFunc);
- Event.remove(co, 'keydown', t._keyHandler);
- DOM.hide(co);
- t.isMenuVisible = 0;
-
- if (!c)
- t.collapse(1);
-
- if (t.element)
- t.element.hide();
-
- if (e = DOM.get(t.id))
- DOM.removeClass(e.firstChild, t.classPrefix + 'ItemActive');
-
- t.onHideMenu.dispatch(t);
- },
-
- add : function(o) {
- var t = this, co;
-
- o = t.parent(o);
-
- if (t.isRendered && (co = DOM.get('menu_' + t.id)))
- t._add(DOM.select('tbody', co)[0], o);
-
- return o;
- },
-
- collapse : function(d) {
- this.parent(d);
- this.hideMenu(1);
- },
-
- remove : function(o) {
- DOM.remove(o.id);
- this.destroy();
-
- return this.parent(o);
- },
-
- destroy : function() {
- var t = this, co = DOM.get('menu_' + t.id);
-
- if (t.keyboardNav) t.keyboardNav.destroy();
- Event.remove(co, 'mouseover', t.mouseOverFunc);
- Event.remove(DOM.select('a', co), 'focus', t.mouseOverFunc);
- Event.remove(co, 'click', t.mouseClickFunc);
- Event.remove(co, 'keydown', t._keyHandler);
-
- if (t.element)
- t.element.remove();
-
- DOM.remove(co);
- },
-
- renderNode : function() {
- var t = this, s = t.settings, n, tb, co, w;
-
- w = DOM.create('div', {role: 'listbox', id : 'menu_' + t.id, 'class' : s['class'], 'style' : 'position:absolute;left:0;top:0;z-index:200000;outline:0'});
- if (t.settings.parent) {
- DOM.setAttrib(w, 'aria-parent', 'menu_' + t.settings.parent.id);
- }
- co = DOM.add(w, 'div', {role: 'presentation', id : 'menu_' + t.id + '_co', 'class' : t.classPrefix + (s['class'] ? ' ' + s['class'] : '')});
- t.element = new Element('menu_' + t.id, {blocker : 1, container : s.container});
-
- if (s.menu_line)
- DOM.add(co, 'span', {'class' : t.classPrefix + 'Line'});
-
-// n = DOM.add(co, 'div', {id : 'menu_' + t.id + '_co', 'class' : 'mceMenuContainer'});
- n = DOM.add(co, 'table', {role: 'presentation', id : 'menu_' + t.id + '_tbl', border : 0, cellPadding : 0, cellSpacing : 0});
- tb = DOM.add(n, 'tbody');
-
- each(t.items, function(o) {
- t._add(tb, o);
- });
-
- t.rendered = true;
-
- return w;
- },
-
- // Internal functions
- _setupKeyboardNav : function(){
- var contextMenu, menuItems, t=this;
- contextMenu = DOM.get('menu_' + t.id);
- menuItems = DOM.select('a[role=option]', 'menu_' + t.id);
- menuItems.splice(0,0,contextMenu);
- t.keyboardNav = new tinymce.ui.KeyboardNavigation({
- root: 'menu_' + t.id,
- items: menuItems,
- onCancel: function() {
- t.hideMenu();
- },
- enableUpDown: true
- });
- contextMenu.focus();
- },
-
- _keyHandler : function(evt) {
- var t = this, e;
- switch (evt.keyCode) {
- case 37: // Left
- if (t.settings.parent) {
- t.hideMenu();
- t.settings.parent.focus();
- Event.cancel(evt);
- }
- break;
- case 39: // Right
- if (t.mouseOverFunc)
- t.mouseOverFunc(evt);
- break;
- }
- },
-
- _add : function(tb, o) {
- var n, s = o.settings, a, ro, it, cp = this.classPrefix, ic;
-
- if (s.separator) {
- ro = DOM.add(tb, 'tr', {id : o.id, 'class' : cp + 'ItemSeparator'});
- DOM.add(ro, 'td', {'class' : cp + 'ItemSeparator'});
-
- if (n = ro.previousSibling)
- DOM.addClass(n, 'mceLast');
-
- return;
- }
-
- n = ro = DOM.add(tb, 'tr', {id : o.id, 'class' : cp + 'Item ' + cp + 'ItemEnabled'});
- n = it = DOM.add(n, s.titleItem ? 'th' : 'td');
- n = a = DOM.add(n, 'a', {id: o.id + '_aria', role: s.titleItem ? 'presentation' : 'option', href : 'javascript:;', onclick : "return false;", onmousedown : 'return false;'});
-
- if (s.parent) {
- DOM.setAttrib(a, 'aria-haspopup', 'true');
- DOM.setAttrib(a, 'aria-owns', 'menu_' + o.id);
- }
-
- DOM.addClass(it, s['class']);
-// n = DOM.add(n, 'span', {'class' : 'item'});
-
- ic = DOM.add(n, 'span', {'class' : 'mceIcon' + (s.icon ? ' mce_' + s.icon : '')});
-
- if (s.icon_src)
- DOM.add(ic, 'img', {src : s.icon_src});
-
- n = DOM.add(n, s.element || 'span', {'class' : 'mceText', title : o.settings.title}, o.settings.title);
-
- if (o.settings.style) {
- if (typeof o.settings.style == "function")
- o.settings.style = o.settings.style();
-
- DOM.setAttrib(n, 'style', o.settings.style);
- }
-
- if (tb.childNodes.length == 1)
- DOM.addClass(ro, 'mceFirst');
-
- if ((n = ro.previousSibling) && DOM.hasClass(n, cp + 'ItemSeparator'))
- DOM.addClass(ro, 'mceFirst');
-
- if (o.collapse)
- DOM.addClass(ro, cp + 'ItemSub');
-
- if (n = ro.previousSibling)
- DOM.removeClass(n, 'mceLast');
-
- DOM.addClass(ro, 'mceLast');
- }
- });
-})(tinymce);
-(function(tinymce) {
- var DOM = tinymce.DOM;
-
- tinymce.create('tinymce.ui.Button:tinymce.ui.Control', {
- Button : function(id, s, ed) {
- this.parent(id, s, ed);
- this.classPrefix = 'mceButton';
- },
-
- renderHTML : function() {
- var cp = this.classPrefix, s = this.settings, h, l;
-
- l = DOM.encode(s.label || '');
- h = '<a role="button" id="' + this.id + '" href="javascript:;" class="' + cp + ' ' + cp + 'Enabled ' + s['class'] + (l ? ' ' + cp + 'Labeled' : '') +'" onmousedown="return false;" onclick="return false;" aria-labelledby="' + this.id + '_voice" title="' + DOM.encode(s.title) + '">';
- if (s.image && !(this.editor &&this.editor.forcedHighContrastMode) )
- h += '<span class="mceIcon ' + s['class'] + '"><img class="mceIcon" src="' + s.image + '" alt="' + DOM.encode(s.title) + '" /></span>' + (l ? '<span class="' + cp + 'Label">' + l + '</span>' : '');
- else
- h += '<span class="mceIcon ' + s['class'] + '"></span>' + (l ? '<span class="' + cp + 'Label">' + l + '</span>' : '');
-
- h += '<span class="mceVoiceLabel mceIconOnly" style="display: none;" id="' + this.id + '_voice">' + s.title + '</span>';
- h += '</a>';
- return h;
- },
-
- postRender : function() {
- var t = this, s = t.settings, imgBookmark;
-
- // In IE a large image that occupies the entire editor area will be deselected when a button is clicked, so
- // need to keep the selection in case the selection is lost
- if (tinymce.isIE && t.editor) {
- tinymce.dom.Event.add(t.id, 'mousedown', function(e) {
- var nodeName = t.editor.selection.getNode().nodeName;
- imgBookmark = nodeName === 'IMG' ? t.editor.selection.getBookmark() : null;
- });
- }
- tinymce.dom.Event.add(t.id, 'click', function(e) {
- if (!t.isDisabled()) {
- // restore the selection in case the selection is lost in IE
- if (tinymce.isIE && t.editor && imgBookmark !== null) {
- t.editor.selection.moveToBookmark(imgBookmark);
- }
- return s.onclick.call(s.scope, e);
- }
- });
- tinymce.dom.Event.add(t.id, 'keydown', function(e) {
- if (!t.isDisabled() && e.keyCode==tinymce.VK.SPACEBAR) {
- tinymce.dom.Event.cancel(e);
- return s.onclick.call(s.scope, e);
- }
- });
- }
- });
-})(tinymce);
-
-(function(tinymce) {
- var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, Dispatcher = tinymce.util.Dispatcher, undef;
-
- tinymce.create('tinymce.ui.ListBox:tinymce.ui.Control', {
- ListBox : function(id, s, ed) {
- var t = this;
-
- t.parent(id, s, ed);
-
- t.items = [];
-
- t.onChange = new Dispatcher(t);
-
- t.onPostRender = new Dispatcher(t);
-
- t.onAdd = new Dispatcher(t);
-
- t.onRenderMenu = new tinymce.util.Dispatcher(this);
-
- t.classPrefix = 'mceListBox';
- t.marked = {};
- },
-
- select : function(va) {
- var t = this, fv, f;
-
- t.marked = {};
-
- if (va == undef)
- return t.selectByIndex(-1);
-
- // Is string or number make function selector
- if (va && typeof(va)=="function")
- f = va;
- else {
- f = function(v) {
- return v == va;
- };
- }
-
- // Do we need to do something?
- if (va != t.selectedValue) {
- // Find item
- each(t.items, function(o, i) {
- if (f(o.value)) {
- fv = 1;
- t.selectByIndex(i);
- return false;
- }
- });
-
- if (!fv)
- t.selectByIndex(-1);
- }
- },
-
- selectByIndex : function(idx) {
- var t = this, e, o, label;
-
- t.marked = {};
-
- if (idx != t.selectedIndex) {
- e = DOM.get(t.id + '_text');
- label = DOM.get(t.id + '_voiceDesc');
- o = t.items[idx];
-
- if (o) {
- t.selectedValue = o.value;
- t.selectedIndex = idx;
- DOM.setHTML(e, DOM.encode(o.title));
- DOM.setHTML(label, t.settings.title + " - " + o.title);
- DOM.removeClass(e, 'mceTitle');
- DOM.setAttrib(t.id, 'aria-valuenow', o.title);
- } else {
- DOM.setHTML(e, DOM.encode(t.settings.title));
- DOM.setHTML(label, DOM.encode(t.settings.title));
- DOM.addClass(e, 'mceTitle');
- t.selectedValue = t.selectedIndex = null;
- DOM.setAttrib(t.id, 'aria-valuenow', t.settings.title);
- }
- e = 0;
- }
- },
-
- mark : function(value) {
- this.marked[value] = true;
- },
-
- add : function(n, v, o) {
- var t = this;
-
- o = o || {};
- o = tinymce.extend(o, {
- title : n,
- value : v
- });
-
- t.items.push(o);
- t.onAdd.dispatch(t, o);
- },
-
- getLength : function() {
- return this.items.length;
- },
-
- renderHTML : function() {
- var h = '', t = this, s = t.settings, cp = t.classPrefix;
-
- h = '<span role="listbox" aria-haspopup="true" aria-labelledby="' + t.id +'_voiceDesc" aria-describedby="' + t.id + '_voiceDesc"><table role="presentation" tabindex="0" id="' + t.id + '" cellpadding="0" cellspacing="0" class="' + cp + ' ' + cp + 'Enabled' + (s['class'] ? (' ' + s['class']) : '') + '"><tbody><tr>';
- h += '<td>' + DOM.createHTML('span', {id: t.id + '_voiceDesc', 'class': 'voiceLabel', style:'display:none;'}, t.settings.title);
- h += DOM.createHTML('a', {id : t.id + '_text', tabindex : -1, href : 'javascript:;', 'class' : 'mceText', onclick : "return false;", onmousedown : 'return false;'}, DOM.encode(t.settings.title)) + '</td>';
- h += '<td>' + DOM.createHTML('a', {id : t.id + '_open', tabindex : -1, href : 'javascript:;', 'class' : 'mceOpen', onclick : "return false;", onmousedown : 'return false;'}, '<span><span style="display:none;" class="mceIconOnly" aria-hidden="true">\u25BC</span></span>') + '</td>';
- h += '</tr></tbody></table></span>';
-
- return h;
- },
-
- showMenu : function() {
- var t = this, p2, e = DOM.get(this.id), m;
-
- if (t.isDisabled() || t.items.length === 0)
- return;
-
- if (t.menu && t.menu.isMenuVisible)
- return t.hideMenu();
-
- if (!t.isMenuRendered) {
- t.renderMenu();
- t.isMenuRendered = true;
- }
-
- p2 = DOM.getPos(e);
-
- m = t.menu;
- m.settings.offset_x = p2.x;
- m.settings.offset_y = p2.y;
- m.settings.keyboard_focus = !tinymce.isOpera; // Opera is buggy when it comes to auto focus
-
- // Select in menu
- each(t.items, function(o) {
- if (m.items[o.id]) {
- m.items[o.id].setSelected(0);
- }
- });
-
- each(t.items, function(o) {
- if (m.items[o.id] && t.marked[o.value]) {
- m.items[o.id].setSelected(1);
- }
-
- if (o.value === t.selectedValue) {
- m.items[o.id].setSelected(1);
- }
- });
-
- m.showMenu(0, e.clientHeight);
-
- Event.add(DOM.doc, 'mousedown', t.hideMenu, t);
- DOM.addClass(t.id, t.classPrefix + 'Selected');
-
- //DOM.get(t.id + '_text').focus();
- },
-
- hideMenu : function(e) {
- var t = this;
-
- if (t.menu && t.menu.isMenuVisible) {
- DOM.removeClass(t.id, t.classPrefix + 'Selected');
-
- // Prevent double toogles by canceling the mouse click event to the button
- if (e && e.type == "mousedown" && (e.target.id == t.id + '_text' || e.target.id == t.id + '_open'))
- return;
-
- if (!e || !DOM.getParent(e.target, '.mceMenu')) {
- DOM.removeClass(t.id, t.classPrefix + 'Selected');
- Event.remove(DOM.doc, 'mousedown', t.hideMenu, t);
- t.menu.hideMenu();
- }
- }
- },
-
- renderMenu : function() {
- var t = this, m;
-
- m = t.settings.control_manager.createDropMenu(t.id + '_menu', {
- menu_line : 1,
- 'class' : t.classPrefix + 'Menu mceNoIcons',
- max_width : 250,
- max_height : 150
- });
-
- m.onHideMenu.add(function() {
- t.hideMenu();
- t.focus();
- });
-
- m.add({
- title : t.settings.title,
- 'class' : 'mceMenuItemTitle',
- onclick : function() {
- if (t.settings.onselect('') !== false)
- t.select(''); // Must be runned after
- }
- });
-
- each(t.items, function(o) {
- // No value then treat it as a title
- if (o.value === undef) {
- m.add({
- title : o.title,
- role : "option",
- 'class' : 'mceMenuItemTitle',
- onclick : function() {
- if (t.settings.onselect('') !== false)
- t.select(''); // Must be runned after
- }
- });
- } else {
- o.id = DOM.uniqueId();
- o.role= "option";
- o.onclick = function() {
- if (t.settings.onselect(o.value) !== false)
- t.select(o.value); // Must be runned after
- };
-
- m.add(o);
- }
- });
-
- t.onRenderMenu.dispatch(t, m);
- t.menu = m;
- },
-
- postRender : function() {
- var t = this, cp = t.classPrefix;
-
- Event.add(t.id, 'click', t.showMenu, t);
- Event.add(t.id, 'keydown', function(evt) {
- if (evt.keyCode == 32) { // Space
- t.showMenu(evt);
- Event.cancel(evt);
- }
- });
- Event.add(t.id, 'focus', function() {
- if (!t._focused) {
- t.keyDownHandler = Event.add(t.id, 'keydown', function(e) {
- if (e.keyCode == 40) {
- t.showMenu();
- Event.cancel(e);
- }
- });
- t.keyPressHandler = Event.add(t.id, 'keypress', function(e) {
- var v;
- if (e.keyCode == 13) {
- // Fake select on enter
- v = t.selectedValue;
- t.selectedValue = null; // Needs to be null to fake change
- Event.cancel(e);
- t.settings.onselect(v);
- }
- });
- }
-
- t._focused = 1;
- });
- Event.add(t.id, 'blur', function() {
- Event.remove(t.id, 'keydown', t.keyDownHandler);
- Event.remove(t.id, 'keypress', t.keyPressHandler);
- t._focused = 0;
- });
-
- // Old IE doesn't have hover on all elements
- if (tinymce.isIE6 || !DOM.boxModel) {
- Event.add(t.id, 'mouseover', function() {
- if (!DOM.hasClass(t.id, cp + 'Disabled'))
- DOM.addClass(t.id, cp + 'Hover');
- });
-
- Event.add(t.id, 'mouseout', function() {
- if (!DOM.hasClass(t.id, cp + 'Disabled'))
- DOM.removeClass(t.id, cp + 'Hover');
- });
- }
-
- t.onPostRender.dispatch(t, DOM.get(t.id));
- },
-
- destroy : function() {
- this.parent();
-
- Event.clear(this.id + '_text');
- Event.clear(this.id + '_open');
- }
- });
-})(tinymce);
-
-(function(tinymce) {
- var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, Dispatcher = tinymce.util.Dispatcher, undef;
-
- tinymce.create('tinymce.ui.NativeListBox:tinymce.ui.ListBox', {
- NativeListBox : function(id, s) {
- this.parent(id, s);
- this.classPrefix = 'mceNativeListBox';
- },
-
- setDisabled : function(s) {
- DOM.get(this.id).disabled = s;
- this.setAriaProperty('disabled', s);
- },
-
- isDisabled : function() {
- return DOM.get(this.id).disabled;
- },
-
- select : function(va) {
- var t = this, fv, f;
-
- if (va == undef)
- return t.selectByIndex(-1);
-
- // Is string or number make function selector
- if (va && typeof(va)=="function")
- f = va;
- else {
- f = function(v) {
- return v == va;
- };
- }
-
- // Do we need to do something?
- if (va != t.selectedValue) {
- // Find item
- each(t.items, function(o, i) {
- if (f(o.value)) {
- fv = 1;
- t.selectByIndex(i);
- return false;
- }
- });
-
- if (!fv)
- t.selectByIndex(-1);
- }
- },
-
- selectByIndex : function(idx) {
- DOM.get(this.id).selectedIndex = idx + 1;
- this.selectedValue = this.items[idx] ? this.items[idx].value : null;
- },
-
- add : function(n, v, a) {
- var o, t = this;
-
- a = a || {};
- a.value = v;
-
- if (t.isRendered())
- DOM.add(DOM.get(this.id), 'option', a, n);
-
- o = {
- title : n,
- value : v,
- attribs : a
- };
-
- t.items.push(o);
- t.onAdd.dispatch(t, o);
- },
-
- getLength : function() {
- return this.items.length;
- },
-
- renderHTML : function() {
- var h, t = this;
-
- h = DOM.createHTML('option', {value : ''}, '-- ' + t.settings.title + ' --');
-
- each(t.items, function(it) {
- h += DOM.createHTML('option', {value : it.value}, it.title);
- });
-
- h = DOM.createHTML('select', {id : t.id, 'class' : 'mceNativeListBox', 'aria-labelledby': t.id + '_aria'}, h);
- h += DOM.createHTML('span', {id : t.id + '_aria', 'style': 'display: none'}, t.settings.title);
- return h;
- },
-
- postRender : function() {
- var t = this, ch, changeListenerAdded = true;
-
- t.rendered = true;
-
- function onChange(e) {
- var v = t.items[e.target.selectedIndex - 1];
-
- if (v && (v = v.value)) {
- t.onChange.dispatch(t, v);
-
- if (t.settings.onselect)
- t.settings.onselect(v);
- }
- };
-
- Event.add(t.id, 'change', onChange);
-
- // Accessibility keyhandler
- Event.add(t.id, 'keydown', function(e) {
- var bf, DOM_VK_LEFT = 37, DOM_VK_RIGHT = 39, DOM_VK_UP = 38, DOM_VK_DOWN = 40, DOM_VK_RETURN = 13, DOM_VK_SPACE = 32;
-
- Event.remove(t.id, 'change', ch);
- changeListenerAdded = false;
-
- bf = Event.add(t.id, 'blur', function() {
- if (changeListenerAdded) return;
- changeListenerAdded = true;
- Event.add(t.id, 'change', onChange);
- Event.remove(t.id, 'blur', bf);
- });
-
- if (e.keyCode == DOM_VK_RETURN || e.keyCode == DOM_VK_SPACE) {
- onChange(e);
- return Event.cancel(e);
- } else if (e.keyCode == DOM_VK_DOWN || e.keyCode == DOM_VK_UP) {
- // allow native implementation (navigate select element options)
- e.stopImmediatePropagation();
- }
- });
-
- t.onPostRender.dispatch(t, DOM.get(t.id));
- }
- });
-})(tinymce);
-
-(function(tinymce) {
- var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each;
-
- tinymce.create('tinymce.ui.MenuButton:tinymce.ui.Button', {
- MenuButton : function(id, s, ed) {
- this.parent(id, s, ed);
-
- this.onRenderMenu = new tinymce.util.Dispatcher(this);
-
- s.menu_container = s.menu_container || DOM.doc.body;
- },
-
- showMenu : function() {
- var t = this, p1, p2, e = DOM.get(t.id), m;
-
- if (t.isDisabled())
- return;
-
- if (!t.isMenuRendered) {
- t.renderMenu();
- t.isMenuRendered = true;
- }
-
- if (t.isMenuVisible)
- return t.hideMenu();
-
- p1 = DOM.getPos(t.settings.menu_container);
- p2 = DOM.getPos(e);
-
- m = t.menu;
- m.settings.offset_x = p2.x;
- m.settings.offset_y = p2.y;
- m.settings.vp_offset_x = p2.x;
- m.settings.vp_offset_y = p2.y;
- m.settings.keyboard_focus = t._focused;
- m.showMenu(0, e.firstChild.clientHeight);
-
- Event.add(DOM.doc, 'mousedown', t.hideMenu, t);
- t.setState('Selected', 1);
-
- t.isMenuVisible = 1;
- },
-
- renderMenu : function() {
- var t = this, m;
-
- m = t.settings.control_manager.createDropMenu(t.id + '_menu', {
- menu_line : 1,
- 'class' : this.classPrefix + 'Menu',
- icons : t.settings.icons
- });
-
- m.onHideMenu.add(function() {
- t.hideMenu();
- t.focus();
- });
-
- t.onRenderMenu.dispatch(t, m);
- t.menu = m;
- },
-
- hideMenu : function(e) {
- var t = this;
-
- // Prevent double toogles by canceling the mouse click event to the button
- if (e && e.type == "mousedown" && DOM.getParent(e.target, function(e) {return e.id === t.id || e.id === t.id + '_open';}))
- return;
-
- if (!e || !DOM.getParent(e.target, '.mceMenu')) {
- t.setState('Selected', 0);
- Event.remove(DOM.doc, 'mousedown', t.hideMenu, t);
- if (t.menu)
- t.menu.hideMenu();
- }
-
- t.isMenuVisible = 0;
- },
-
- postRender : function() {
- var t = this, s = t.settings;
-
- Event.add(t.id, 'click', function() {
- if (!t.isDisabled()) {
- if (s.onclick)
- s.onclick(t.value);
-
- t.showMenu();
- }
- });
- }
- });
-})(tinymce);
-
-(function(tinymce) {
- var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each;
-
- tinymce.create('tinymce.ui.SplitButton:tinymce.ui.MenuButton', {
- SplitButton : function(id, s, ed) {
- this.parent(id, s, ed);
- this.classPrefix = 'mceSplitButton';
- },
-
- renderHTML : function() {
- var h, t = this, s = t.settings, h1;
-
- h = '<tbody><tr>';
-
- if (s.image)
- h1 = DOM.createHTML('img ', {src : s.image, role: 'presentation', 'class' : 'mceAction ' + s['class']});
- else
- h1 = DOM.createHTML('span', {'class' : 'mceAction ' + s['class']}, '');
-
- h1 += DOM.createHTML('span', {'class': 'mceVoiceLabel mceIconOnly', id: t.id + '_voice', style: 'display:none;'}, s.title);
- h += '<td >' + DOM.createHTML('a', {role: 'button', id : t.id + '_action', tabindex: '-1', href : 'javascript:;', 'class' : 'mceAction ' + s['class'], onclick : "return false;", onmousedown : 'return false;', title : s.title}, h1) + '</td>';
-
- h1 = DOM.createHTML('span', {'class' : 'mceOpen ' + s['class']}, '<span style="display:none;" class="mceIconOnly" aria-hidden="true">\u25BC</span>');
- h += '<td >' + DOM.createHTML('a', {role: 'button', id : t.id + '_open', tabindex: '-1', href : 'javascript:;', 'class' : 'mceOpen ' + s['class'], onclick : "return false;", onmousedown : 'return false;', title : s.title}, h1) + '</td>';
-
- h += '</tr></tbody>';
- h = DOM.createHTML('table', { role: 'presentation', 'class' : 'mceSplitButton mceSplitButtonEnabled ' + s['class'], cellpadding : '0', cellspacing : '0', title : s.title}, h);
- return DOM.createHTML('div', {id : t.id, role: 'button', tabindex: '0', 'aria-labelledby': t.id + '_voice', 'aria-haspopup': 'true'}, h);
- },
-
- postRender : function() {
- var t = this, s = t.settings, activate;
-
- if (s.onclick) {
- activate = function(evt) {
- if (!t.isDisabled()) {
- s.onclick(t.value);
- Event.cancel(evt);
- }
- };
- Event.add(t.id + '_action', 'click', activate);
- Event.add(t.id, ['click', 'keydown'], function(evt) {
- var DOM_VK_SPACE = 32, DOM_VK_ENTER = 14, DOM_VK_RETURN = 13, DOM_VK_UP = 38, DOM_VK_DOWN = 40;
- if ((evt.keyCode === 32 || evt.keyCode === 13 || evt.keyCode === 14) && !evt.altKey && !evt.ctrlKey && !evt.metaKey) {
- activate();
- Event.cancel(evt);
- } else if (evt.type === 'click' || evt.keyCode === DOM_VK_DOWN) {
- t.showMenu();
- Event.cancel(evt);
- }
- });
- }
-
- Event.add(t.id + '_open', 'click', function (evt) {
- t.showMenu();
- Event.cancel(evt);
- });
- Event.add([t.id, t.id + '_open'], 'focus', function() {t._focused = 1;});
- Event.add([t.id, t.id + '_open'], 'blur', function() {t._focused = 0;});
-
- // Old IE doesn't have hover on all elements
- if (tinymce.isIE6 || !DOM.boxModel) {
- Event.add(t.id, 'mouseover', function() {
- if (!DOM.hasClass(t.id, 'mceSplitButtonDisabled'))
- DOM.addClass(t.id, 'mceSplitButtonHover');
- });
-
- Event.add(t.id, 'mouseout', function() {
- if (!DOM.hasClass(t.id, 'mceSplitButtonDisabled'))
- DOM.removeClass(t.id, 'mceSplitButtonHover');
- });
- }
- },
-
- destroy : function() {
- this.parent();
-
- Event.clear(this.id + '_action');
- Event.clear(this.id + '_open');
- Event.clear(this.id);
- }
- });
-})(tinymce);
-
-(function(tinymce) {
- var DOM = tinymce.DOM, Event = tinymce.dom.Event, is = tinymce.is, each = tinymce.each;
-
- tinymce.create('tinymce.ui.ColorSplitButton:tinymce.ui.SplitButton', {
- ColorSplitButton : function(id, s, ed) {
- var t = this;
-
- t.parent(id, s, ed);
-
- t.settings = s = tinymce.extend({
- colors : '000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF',
- grid_width : 8,
- default_color : '#888888'
- }, t.settings);
-
- t.onShowMenu = new tinymce.util.Dispatcher(t);
-
- t.onHideMenu = new tinymce.util.Dispatcher(t);
-
- t.value = s.default_color;
- },
-
- showMenu : function() {
- var t = this, r, p, e, p2;
-
- if (t.isDisabled())
- return;
-
- if (!t.isMenuRendered) {
- t.renderMenu();
- t.isMenuRendered = true;
- }
-
- if (t.isMenuVisible)
- return t.hideMenu();
-
- e = DOM.get(t.id);
- DOM.show(t.id + '_menu');
- DOM.addClass(e, 'mceSplitButtonSelected');
- p2 = DOM.getPos(e);
- DOM.setStyles(t.id + '_menu', {
- left : p2.x,
- top : p2.y + e.firstChild.clientHeight,
- zIndex : 200000
- });
- e = 0;
-
- Event.add(DOM.doc, 'mousedown', t.hideMenu, t);
- t.onShowMenu.dispatch(t);
-
- if (t._focused) {
- t._keyHandler = Event.add(t.id + '_menu', 'keydown', function(e) {
- if (e.keyCode == 27)
- t.hideMenu();
- });
-
- DOM.select('a', t.id + '_menu')[0].focus(); // Select first link
- }
-
- t.keyboardNav = new tinymce.ui.KeyboardNavigation({
- root: t.id + '_menu',
- items: DOM.select('a', t.id + '_menu'),
- onCancel: function() {
- t.hideMenu();
- t.focus();
- }
- });
-
- t.keyboardNav.focus();
- t.isMenuVisible = 1;
- },
-
- hideMenu : function(e) {
- var t = this;
-
- if (t.isMenuVisible) {
- // Prevent double toogles by canceling the mouse click event to the button
- if (e && e.type == "mousedown" && DOM.getParent(e.target, function(e) {return e.id === t.id + '_open';}))
- return;
-
- if (!e || !DOM.getParent(e.target, '.mceSplitButtonMenu')) {
- DOM.removeClass(t.id, 'mceSplitButtonSelected');
- Event.remove(DOM.doc, 'mousedown', t.hideMenu, t);
- Event.remove(t.id + '_menu', 'keydown', t._keyHandler);
- DOM.hide(t.id + '_menu');
- }
-
- t.isMenuVisible = 0;
- t.onHideMenu.dispatch();
- t.keyboardNav.destroy();
- }
- },
-
- renderMenu : function() {
- var t = this, m, i = 0, s = t.settings, n, tb, tr, w, context;
-
- w = DOM.add(s.menu_container, 'div', {role: 'listbox', id : t.id + '_menu', 'class' : s.menu_class + ' ' + s['class'], style : 'position:absolute;left:0;top:-1000px;'});
- m = DOM.add(w, 'div', {'class' : s['class'] + ' mceSplitButtonMenu'});
- DOM.add(m, 'span', {'class' : 'mceMenuLine'});
-
- n = DOM.add(m, 'table', {role: 'presentation', 'class' : 'mceColorSplitMenu'});
- tb = DOM.add(n, 'tbody');
-
- // Generate color grid
- i = 0;
- each(is(s.colors, 'array') ? s.colors : s.colors.split(','), function(c) {
- c = c.replace(/^#/, '');
-
- if (!i--) {
- tr = DOM.add(tb, 'tr');
- i = s.grid_width - 1;
- }
-
- n = DOM.add(tr, 'td');
- var settings = {
- href : 'javascript:;',
- style : {
- backgroundColor : '#' + c
- },
- 'title': t.editor.getLang('colors.' + c, c),
- 'data-mce-color' : '#' + c
- };
-
- // adding a proper ARIA role = button causes JAWS to read things incorrectly on IE.
- if (!tinymce.isIE ) {
- settings.role = 'option';
- }
-
- n = DOM.add(n, 'a', settings);
-
- if (t.editor.forcedHighContrastMode) {
- n = DOM.add(n, 'canvas', { width: 16, height: 16, 'aria-hidden': 'true' });
- if (n.getContext && (context = n.getContext("2d"))) {
- context.fillStyle = '#' + c;
- context.fillRect(0, 0, 16, 16);
- } else {
- // No point leaving a canvas element around if it's not supported for drawing on anyway.
- DOM.remove(n);
- }
- }
- });
-
- if (s.more_colors_func) {
- n = DOM.add(tb, 'tr');
- n = DOM.add(n, 'td', {colspan : s.grid_width, 'class' : 'mceMoreColors'});
- n = DOM.add(n, 'a', {role: 'option', id : t.id + '_more', href : 'javascript:;', onclick : 'return false;', 'class' : 'mceMoreColors'}, s.more_colors_title);
-
- Event.add(n, 'click', function(e) {
- s.more_colors_func.call(s.more_colors_scope || this);
- return Event.cancel(e); // Cancel to fix onbeforeunload problem
- });
- }
-
- DOM.addClass(m, 'mceColorSplitMenu');
-
- // Prevent IE from scrolling and hindering click to occur #4019
- Event.add(t.id + '_menu', 'mousedown', function(e) {return Event.cancel(e);});
-
- Event.add(t.id + '_menu', 'click', function(e) {
- var c;
-
- e = DOM.getParent(e.target, 'a', tb);
-
- if (e && e.nodeName.toLowerCase() == 'a' && (c = e.getAttribute('data-mce-color')))
- t.setColor(c);
-
- return false; // Prevent IE auto save warning
- });
-
- return w;
- },
-
- setColor : function(c) {
- this.displayColor(c);
- this.hideMenu();
- this.settings.onselect(c);
- },
-
- displayColor : function(c) {
- var t = this;
-
- DOM.setStyle(t.id + '_preview', 'backgroundColor', c);
-
- t.value = c;
- },
-
- postRender : function() {
- var t = this, id = t.id;
-
- t.parent();
- DOM.add(id + '_action', 'div', {id : id + '_preview', 'class' : 'mceColorPreview'});
- DOM.setStyle(t.id + '_preview', 'backgroundColor', t.value);
- },
-
- destroy : function() {
- var self = this;
-
- self.parent();
-
- Event.clear(self.id + '_menu');
- Event.clear(self.id + '_more');
- DOM.remove(self.id + '_menu');
-
- if (self.keyboardNav) {
- self.keyboardNav.destroy();
- }
- }
- });
-})(tinymce);
-
-(function(tinymce) {
-// Shorten class names
-var dom = tinymce.DOM, each = tinymce.each, Event = tinymce.dom.Event;
-tinymce.create('tinymce.ui.ToolbarGroup:tinymce.ui.Container', {
- renderHTML : function() {
- var t = this, h = [], controls = t.controls, each = tinymce.each, settings = t.settings;
-
- h.push('<div id="' + t.id + '" role="group" aria-labelledby="' + t.id + '_voice">');
- //TODO: ACC test this out - adding a role = application for getting the landmarks working well.
- h.push("<span role='application'>");
- h.push('<span id="' + t.id + '_voice" class="mceVoiceLabel" style="display:none;">' + dom.encode(settings.name) + '</span>');
- each(controls, function(toolbar) {
- h.push(toolbar.renderHTML());
- });
- h.push("</span>");
- h.push('</div>');
-
- return h.join('');
- },
-
- focus : function() {
- var t = this;
- dom.get(t.id).focus();
- },
-
- postRender : function() {
- var t = this, items = [];
-
- each(t.controls, function(toolbar) {
- each (toolbar.controls, function(control) {
- if (control.id) {
- items.push(control);
- }
- });
- });
-
- t.keyNav = new tinymce.ui.KeyboardNavigation({
- root: t.id,
- items: items,
- onCancel: function() {
- //Move focus if webkit so that navigation back will read the item.
- if (tinymce.isWebKit) {
- dom.get(t.editor.id+"_ifr").focus();
- }
- t.editor.focus();
- },
- excludeFromTabOrder: !t.settings.tab_focus_toolbar
- });
- },
-
- destroy : function() {
- var self = this;
-
- self.parent();
- self.keyNav.destroy();
- Event.clear(self.id);
- }
-});
-})(tinymce);
-
-(function(tinymce) {
-// Shorten class names
-var dom = tinymce.DOM, each = tinymce.each;
-tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
- renderHTML : function() {
- var t = this, h = '', c, co, s = t.settings, i, pr, nx, cl;
-
- cl = t.controls;
- for (i=0; i<cl.length; i++) {
- // Get current control, prev control, next control and if the control is a list box or not
- co = cl[i];
- pr = cl[i - 1];
- nx = cl[i + 1];
-
- // Add toolbar start
- if (i === 0) {
- c = 'mceToolbarStart';
-
- if (co.Button)
- c += ' mceToolbarStartButton';
- else if (co.SplitButton)
- c += ' mceToolbarStartSplitButton';
- else if (co.ListBox)
- c += ' mceToolbarStartListBox';
-
- h += dom.createHTML('td', {'class' : c}, dom.createHTML('span', null, '<!-- IE -->'));
- }
-
- // Add toolbar end before list box and after the previous button
- // This is to fix the o2k7 editor skins
- if (pr && co.ListBox) {
- if (pr.Button || pr.SplitButton)
- h += dom.createHTML('td', {'class' : 'mceToolbarEnd'}, dom.createHTML('span', null, '<!-- IE -->'));
- }
-
- // Render control HTML
-
- // IE 8 quick fix, needed to propertly generate a hit area for anchors
- if (dom.stdMode)
- h += '<td style="position: relative">' + co.renderHTML() + '</td>';
- else
- h += '<td>' + co.renderHTML() + '</td>';
-
- // Add toolbar start after list box and before the next button
- // This is to fix the o2k7 editor skins
- if (nx && co.ListBox) {
- if (nx.Button || nx.SplitButton)
- h += dom.createHTML('td', {'class' : 'mceToolbarStart'}, dom.createHTML('span', null, '<!-- IE -->'));
- }
- }
-
- c = 'mceToolbarEnd';
-
- if (co.Button)
- c += ' mceToolbarEndButton';
- else if (co.SplitButton)
- c += ' mceToolbarEndSplitButton';
- else if (co.ListBox)
- c += ' mceToolbarEndListBox';
-
- h += dom.createHTML('td', {'class' : c}, dom.createHTML('span', null, '<!-- IE -->'));
-
- return dom.createHTML('table', {id : t.id, 'class' : 'mceToolbar' + (s['class'] ? ' ' + s['class'] : ''), cellpadding : '0', cellspacing : '0', align : t.settings.align || '', role: 'presentation', tabindex: '-1'}, '<tbody><tr>' + h + '</tr></tbody>');
- }
-});
-})(tinymce);
-
-(function(tinymce) {
- var Dispatcher = tinymce.util.Dispatcher, each = tinymce.each;
-
- tinymce.create('tinymce.AddOnManager', {
- AddOnManager : function() {
- var self = this;
-
- self.items = [];
- self.urls = {};
- self.lookup = {};
- self.onAdd = new Dispatcher(self);
- },
-
- get : function(n) {
- if (this.lookup[n]) {
- return this.lookup[n].instance;
- } else {
- return undefined;
- }
- },
-
- dependencies : function(n) {
- var result;
- if (this.lookup[n]) {
- result = this.lookup[n].dependencies;
- }
- return result || [];
- },
-
- requireLangPack : function(n) {
- var s = tinymce.settings;
-
- if (s && s.language && s.language_load !== false)
- tinymce.ScriptLoader.add(this.urls[n] + '/langs/' + s.language + '.js');
- },
-
- add : function(id, o, dependencies) {
- this.items.push(o);
- this.lookup[id] = {instance:o, dependencies:dependencies};
- this.onAdd.dispatch(this, id, o);
-
- return o;
- },
- createUrl: function(baseUrl, dep) {
- if (typeof dep === "object") {
- return dep
- } else {
- return {prefix: baseUrl.prefix, resource: dep, suffix: baseUrl.suffix};
- }
- },
-
- addComponents: function(pluginName, scripts) {
- var pluginUrl = this.urls[pluginName];
- tinymce.each(scripts, function(script){
- tinymce.ScriptLoader.add(pluginUrl+"/"+script);
- });
- },
-
- load : function(n, u, cb, s) {
- var t = this, url = u;
-
- function loadDependencies() {
- var dependencies = t.dependencies(n);
- tinymce.each(dependencies, function(dep) {
- var newUrl = t.createUrl(u, dep);
- t.load(newUrl.resource, newUrl, undefined, undefined);
- });
- if (cb) {
- if (s) {
- cb.call(s);
- } else {
- cb.call(tinymce.ScriptLoader);
- }
- }
- }
-
- if (t.urls[n])
- return;
- if (typeof u === "object")
- url = u.prefix + u.resource + u.suffix;
-
- if (url.indexOf('/') !== 0 && url.indexOf('://') == -1)
- url = tinymce.baseURL + '/' + url;
-
- t.urls[n] = url.substring(0, url.lastIndexOf('/'));
-
- if (t.lookup[n]) {
- loadDependencies();
- } else {
- tinymce.ScriptLoader.add(url, loadDependencies, s);
- }
- }
- });
-
- // Create plugin and theme managers
- tinymce.PluginManager = new tinymce.AddOnManager();
- tinymce.ThemeManager = new tinymce.AddOnManager();
-}(tinymce));
-
-(function(tinymce) {
- // Shorten names
- var each = tinymce.each, extend = tinymce.extend,
- DOM = tinymce.DOM, Event = tinymce.dom.Event,
- ThemeManager = tinymce.ThemeManager, PluginManager = tinymce.PluginManager,
- explode = tinymce.explode,
- Dispatcher = tinymce.util.Dispatcher, undef, instanceCounter = 0;
-
- // Setup some URLs where the editor API is located and where the document is
- tinymce.documentBaseURL = window.location.href.replace(/[\?#].*$/, '').replace(/[\/\\][^\/]+$/, '');
- if (!/[\/\\]$/.test(tinymce.documentBaseURL))
- tinymce.documentBaseURL += '/';
-
- tinymce.baseURL = new tinymce.util.URI(tinymce.documentBaseURL).toAbsolute(tinymce.baseURL);
-
- tinymce.baseURI = new tinymce.util.URI(tinymce.baseURL);
-
- // Add before unload listener
- // This was required since IE was leaking memory if you added and removed beforeunload listeners
- // with attachEvent/detatchEvent so this only adds one listener and instances can the attach to the onBeforeUnload event
- tinymce.onBeforeUnload = new Dispatcher(tinymce);
-
- // Must be on window or IE will leak if the editor is placed in frame or iframe
- Event.add(window, 'beforeunload', function(e) {
- tinymce.onBeforeUnload.dispatch(tinymce, e);
- });
-
- tinymce.onAddEditor = new Dispatcher(tinymce);
-
- tinymce.onRemoveEditor = new Dispatcher(tinymce);
-
- tinymce.EditorManager = extend(tinymce, {
- editors : [],
-
- i18n : {},
-
- activeEditor : null,
-
- init : function(s) {
- var t = this, pl, sl = tinymce.ScriptLoader, e, el = [], ed;
-
- function createId(elm) {
- var id = elm.id;
-
- // Use element id, or unique name or generate a unique id
- if (!id) {
- id = elm.name;
-
- if (id && !DOM.get(id)) {
- id = elm.name;
- } else {
- // Generate unique name
- id = DOM.uniqueId();
- }
-
- elm.setAttribute('id', id);
- }
-
- return id;
- };
-
- function execCallback(se, n, s) {
- var f = se[n];
-
- if (!f)
- return;
-
- if (tinymce.is(f, 'string')) {
- s = f.replace(/\.\w+$/, '');
- s = s ? tinymce.resolve(s) : 0;
- f = tinymce.resolve(f);
- }
-
- return f.apply(s || this, Array.prototype.slice.call(arguments, 2));
- };
-
- function hasClass(n, c) {
- return c.constructor === RegExp ? c.test(n.className) : DOM.hasClass(n, c);
- };
-
- t.settings = s;
-
- // Legacy call
- Event.bind(window, 'ready', function() {
- var l, co;
-
- execCallback(s, 'onpageload');
-
- switch (s.mode) {
- case "exact":
- l = s.elements || '';
-
- if(l.length > 0) {
- each(explode(l), function(v) {
- if (DOM.get(v)) {
- ed = new tinymce.Editor(v, s);
- el.push(ed);
- ed.render(1);
- } else {
- each(document.forms, function(f) {
- each(f.elements, function(e) {
- if (e.name === v) {
- v = 'mce_editor_' + instanceCounter++;
- DOM.setAttrib(e, 'id', v);
-
- ed = new tinymce.Editor(v, s);
- el.push(ed);
- ed.render(1);
- }
- });
- });
- }
- });
- }
- break;
-
- case "textareas":
- case "specific_textareas":
- each(DOM.select('textarea'), function(elm) {
- if (s.editor_deselector && hasClass(elm, s.editor_deselector))
- return;
-
- if (!s.editor_selector || hasClass(elm, s.editor_selector)) {
- ed = new tinymce.Editor(createId(elm), s);
- el.push(ed);
- ed.render(1);
- }
- });
- break;
-
- default:
- if (s.types) {
- // Process type specific selector
- each(s.types, function(type) {
- each(DOM.select(type.selector), function(elm) {
- var editor = new tinymce.Editor(createId(elm), tinymce.extend({}, s, type));
- el.push(editor);
- editor.render(1);
- });
- });
- } else if (s.selector) {
- // Process global selector
- each(DOM.select(s.selector), function(elm) {
- var editor = new tinymce.Editor(createId(elm), s);
- el.push(editor);
- editor.render(1);
- });
- }
- }
-
- // Call onInit when all editors are initialized
- if (s.oninit) {
- l = co = 0;
-
- each(el, function(ed) {
- co++;
-
- if (!ed.initialized) {
- // Wait for it
- ed.onInit.add(function() {
- l++;
-
- // All done
- if (l == co)
- execCallback(s, 'oninit');
- });
- } else
- l++;
-
- // All done
- if (l == co)
- execCallback(s, 'oninit');
- });
- }
- });
- },
-
- get : function(id) {
- if (id === undef)
- return this.editors;
-
- if (!this.editors.hasOwnProperty(id))
- return undef;
-
- return this.editors[id];
- },
-
- getInstanceById : function(id) {
- return this.get(id);
- },
-
- add : function(editor) {
- var self = this, editors = self.editors;
-
- // Add named and index editor instance
- editors[editor.id] = editor;
- editors.push(editor);
-
- self._setActive(editor);
- self.onAddEditor.dispatch(self, editor);
-
-
- return editor;
- },
-
- remove : function(editor) {
- var t = this, i, editors = t.editors;
-
- // Not in the collection
- if (!editors[editor.id])
- return null;
-
- delete editors[editor.id];
-
- for (i = 0; i < editors.length; i++) {
- if (editors[i] == editor) {
- editors.splice(i, 1);
- break;
- }
- }
-
- // Select another editor since the active one was removed
- if (t.activeEditor == editor)
- t._setActive(editors[0]);
-
- editor.destroy();
- t.onRemoveEditor.dispatch(t, editor);
-
- return editor;
- },
-
- execCommand : function(c, u, v) {
- var t = this, ed = t.get(v), w;
-
- function clr() {
- ed.destroy();
- w.detachEvent('onunload', clr);
- w = w.tinyMCE = w.tinymce = null; // IE leak
- };
-
- // Manager commands
- switch (c) {
- case "mceFocus":
- ed.focus();
- return true;
-
- case "mceAddEditor":
- case "mceAddControl":
- if (!t.get(v))
- new tinymce.Editor(v, t.settings).render();
-
- return true;
-
- case "mceAddFrameControl":
- w = v.window;
-
- // Add tinyMCE global instance and tinymce namespace to specified window
- w.tinyMCE = tinyMCE;
- w.tinymce = tinymce;
-
- tinymce.DOM.doc = w.document;
- tinymce.DOM.win = w;
-
- ed = new tinymce.Editor(v.element_id, v);
- ed.render();
-
- // Fix IE memory leaks
- if (tinymce.isIE && ! tinymce.isIE11) {
- w.attachEvent('onunload', clr);
- }
-
- v.page_window = null;
-
- return true;
-
- case "mceRemoveEditor":
- case "mceRemoveControl":
- if (ed)
- ed.remove();
-
- return true;
-
- case 'mceToggleEditor':
- if (!ed) {
- t.execCommand('mceAddControl', 0, v);
- return true;
- }
-
- if (ed.isHidden())
- ed.show();
- else
- ed.hide();
-
- return true;
- }
-
- // Run command on active editor
- if (t.activeEditor)
- return t.activeEditor.execCommand(c, u, v);
-
- return false;
- },
-
- execInstanceCommand : function(id, c, u, v) {
- var ed = this.get(id);
-
- if (ed)
- return ed.execCommand(c, u, v);
-
- return false;
- },
-
- triggerSave : function() {
- each(this.editors, function(e) {
- e.save();
- });
- },
-
- addI18n : function(p, o) {
- var lo, i18n = this.i18n;
-
- if (!tinymce.is(p, 'string')) {
- each(p, function(o, lc) {
- each(o, function(o, g) {
- each(o, function(o, k) {
- if (g === 'common')
- i18n[lc + '.' + k] = o;
- else
- i18n[lc + '.' + g + '.' + k] = o;
- });
- });
- });
- } else {
- each(o, function(o, k) {
- i18n[p + '.' + k] = o;
- });
- }
- },
-
- // Private methods
-
- _setActive : function(editor) {
- this.selectedInstance = this.activeEditor = editor;
- }
- });
-})(tinymce);
-
-(function(tinymce) {
- // Shorten these names
- var DOM = tinymce.DOM, Event = tinymce.dom.Event, extend = tinymce.extend,
- each = tinymce.each, isGecko = tinymce.isGecko,
- isIE = tinymce.isIE, isWebKit = tinymce.isWebKit, is = tinymce.is,
- ThemeManager = tinymce.ThemeManager, PluginManager = tinymce.PluginManager,
- explode = tinymce.explode;
-
- tinymce.create('tinymce.Editor', {
- Editor : function(id, settings) {
- var self = this, TRUE = true;
-
- self.settings = settings = extend({
- id : id,
- language : 'en',
- theme : 'advanced',
- skin : 'default',
- delta_width : 0,
- delta_height : 0,
- popup_css : '',
- plugins : '',
- document_base_url : tinymce.documentBaseURL,
- add_form_submit_trigger : TRUE,
- submit_patch : TRUE,
- add_unload_trigger : TRUE,
- convert_urls : TRUE,
- relative_urls : TRUE,
- remove_script_host : TRUE,
- table_inline_editing : false,
- object_resizing : TRUE,
- accessibility_focus : TRUE,
- doctype : tinymce.isIE6 ? '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">' : '<!DOCTYPE>', // Use old doctype on IE 6 to avoid horizontal scroll
- visual : TRUE,
- font_size_style_values : 'xx-small,x-small,small,medium,large,x-large,xx-large',
- font_size_legacy_values : 'xx-small,small,medium,large,x-large,xx-large,300%', // See: http://www.w3.org/TR/CSS2/fonts.html#propdef-font-size
- apply_source_formatting : TRUE,
- directionality : 'ltr',
- forced_root_block : 'p',
- hidden_input : TRUE,
- padd_empty_editor : TRUE,
- render_ui : TRUE,
- indentation : '30px',
- fix_table_elements : TRUE,
- inline_styles : TRUE,
- convert_fonts_to_spans : TRUE,
- indent : 'simple',
- indent_before : 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,option,optgroup,datalist',
- indent_after : 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,option,optgroup,datalist',
- validate : TRUE,
- entity_encoding : 'named',
- url_converter : self.convertURL,
- url_converter_scope : self,
- ie7_compat : TRUE
- }, settings);
-
- self.id = self.editorId = id;
-
- self.isNotDirty = false;
-
- self.plugins = {};
-
- self.documentBaseURI = new tinymce.util.URI(settings.document_base_url || tinymce.documentBaseURL, {
- base_uri : tinyMCE.baseURI
- });
-
- self.baseURI = tinymce.baseURI;
-
- self.contentCSS = [];
-
- self.contentStyles = [];
-
- // Creates all events like onClick, onSetContent etc see Editor.Events.js for the actual logic
- self.setupEvents();
-
- // Internal command handler objects
- self.execCommands = {};
- self.queryStateCommands = {};
- self.queryValueCommands = {};
-
- // Call setup
- self.execCallback('setup', self);
- },
-
- render : function(nst) {
- var t = this, s = t.settings, id = t.id, sl = tinymce.ScriptLoader;
-
- // Page is not loaded yet, wait for it
- if (!Event.domLoaded) {
- Event.add(window, 'ready', function() {
- t.render();
- });
- return;
- }
-
- tinyMCE.settings = s;
-
- // Element not found, then skip initialization
- if (!t.getElement())
- return;
-
- // Is a iPad/iPhone and not on iOS5, then skip initialization. We need to sniff
- // here since the browser says it has contentEditable support but there is no visible caret.
- if (tinymce.isIDevice && !tinymce.isIOS5)
- return;
-
- // Add hidden input for non input elements inside form elements
- if (!/TEXTAREA|INPUT/i.test(t.getElement().nodeName) && s.hidden_input && DOM.getParent(id, 'form'))
- DOM.insertAfter(DOM.create('input', {type : 'hidden', name : id}), id);
-
- // Hide target element early to prevent content flashing
- if (!s.content_editable) {
- t.orgVisibility = t.getElement().style.visibility;
- t.getElement().style.visibility = 'hidden';
- }
-
- if (tinymce.WindowManager)
- t.windowManager = new tinymce.WindowManager(t);
-
- if (s.encoding == 'xml') {
- t.onGetContent.add(function(ed, o) {
- if (o.save)
- o.content = DOM.encode(o.content);
- });
- }
-
- if (s.add_form_submit_trigger) {
- t.onSubmit.addToTop(function() {
- if (t.initialized) {
- t.save();
- t.isNotDirty = 1;
- }
- });
- }
-
- if (s.add_unload_trigger) {
- t._beforeUnload = tinyMCE.onBeforeUnload.add(function() {
- if (t.initialized && !t.destroyed && !t.isHidden())
- t.save({format : 'raw', no_events : true});
- });
- }
-
- tinymce.addUnload(t.destroy, t);
-
- if (s.submit_patch) {
- t.onBeforeRenderUI.add(function() {
- var n = t.getElement().form;
-
- if (!n)
- return;
-
- // Already patched
- if (n._mceOldSubmit)
- return;
-
- // Check page uses id="submit" or name="submit" for it's submit button
- if (!n.submit.nodeType && !n.submit.length) {
- t.formElement = n;
- n._mceOldSubmit = n.submit;
- n.submit = function() {
- // Save all instances
- tinymce.triggerSave();
- t.isNotDirty = 1;
-
- return t.formElement._mceOldSubmit(t.formElement);
- };
- }
-
- n = null;
- });
- }
-
- // Load scripts
- function loadScripts() {
- if (s.language && s.language_load !== false)
- sl.add(tinymce.baseURL + '/langs/' + s.language + '.js');
-
- if (s.theme && typeof s.theme != "function" && s.theme.charAt(0) != '-' && !ThemeManager.urls[s.theme])
- ThemeManager.load(s.theme, 'themes/' + s.theme + '/editor_template' + tinymce.suffix + '.js');
-
- each(explode(s.plugins), function(p) {
- if (p &&!PluginManager.urls[p]) {
- if (p.charAt(0) == '-') {
- p = p.substr(1, p.length);
- var dependencies = PluginManager.dependencies(p);
- each(dependencies, function(dep) {
- var defaultSettings = {prefix:'plugins/', resource: dep, suffix:'/editor_plugin' + tinymce.suffix + '.js'};
- dep = PluginManager.createUrl(defaultSettings, dep);
- PluginManager.load(dep.resource, dep);
- });
- } else {
- // Skip safari plugin, since it is removed as of 3.3b1
- if (p == 'safari') {
- return;
- }
- PluginManager.load(p, {prefix:'plugins/', resource: p, suffix:'/editor_plugin' + tinymce.suffix + '.js'});
- }
- }
- });
-
- // Init when que is loaded
- sl.loadQueue(function() {
- if (!t.removed)
- t.init();
- });
- };
-
- loadScripts();
- },
-
- init : function() {
- var n, t = this, s = t.settings, w, h, mh, e = t.getElement(), o, ti, u, bi, bc, re, i, initializedPlugins = [];
-
- tinymce.add(t);
-
- s.aria_label = s.aria_label || DOM.getAttrib(e, 'aria-label', t.getLang('aria.rich_text_area'));
-
- if (s.theme) {
- if (typeof s.theme != "function") {
- s.theme = s.theme.replace(/-/, '');
- o = ThemeManager.get(s.theme);
- t.theme = new o();
-
- if (t.theme.init)
- t.theme.init(t, ThemeManager.urls[s.theme] || tinymce.documentBaseURL.replace(/\/$/, ''));
- } else {
- t.theme = s.theme;
- }
- }
-
- function initPlugin(p) {
- var c = PluginManager.get(p), u = PluginManager.urls[p] || tinymce.documentBaseURL.replace(/\/$/, ''), po;
- if (c && tinymce.inArray(initializedPlugins,p) === -1) {
- each(PluginManager.dependencies(p), function(dep){
- initPlugin(dep);
- });
- po = new c(t, u);
-
- t.plugins[p] = po;
-
- if (po.init) {
- po.init(t, u);
- initializedPlugins.push(p);
- }
- }
- }
-
- // Create all plugins
- each(explode(s.plugins.replace(/\-/g, '')), initPlugin);
-
- // Setup popup CSS path(s)
- if (s.popup_css !== false) {
- if (s.popup_css)
- s.popup_css = t.documentBaseURI.toAbsolute(s.popup_css);
- else
- s.popup_css = t.baseURI.toAbsolute("themes/" + s.theme + "/skins/" + s.skin + "/dialog.css");
- }
-
- if (s.popup_css_add)
- s.popup_css += ',' + t.documentBaseURI.toAbsolute(s.popup_css_add);
-
- t.controlManager = new tinymce.ControlManager(t);
-
- // Enables users to override the control factory
- t.onBeforeRenderUI.dispatch(t, t.controlManager);
-
- // Measure box
- if (s.render_ui && t.theme) {
- t.orgDisplay = e.style.display;
-
- if (typeof s.theme != "function") {
- w = s.width || e.style.width || e.offsetWidth;
- h = s.height || e.style.height || e.offsetHeight;
- mh = s.min_height || 100;
- re = /^[0-9\.]+(|px)$/i;
-
- if (re.test('' + w))
- w = Math.max(parseInt(w, 10) + (o.deltaWidth || 0), 100);
-
- if (re.test('' + h))
- h = Math.max(parseInt(h, 10) + (o.deltaHeight || 0), mh);
-
- // Render UI
- o = t.theme.renderUI({
- targetNode : e,
- width : w,
- height : h,
- deltaWidth : s.delta_width,
- deltaHeight : s.delta_height
- });
-
- // Resize editor
- DOM.setStyles(o.sizeContainer || o.editorContainer, {
- width : w,
- height : h
- });
-
- h = (o.iframeHeight || h) + (typeof(h) == 'number' ? (o.deltaHeight || 0) : '');
- if (h < mh)
- h = mh;
- } else {
- o = s.theme(t, e);
-
- // Convert element type to id:s
- if (o.editorContainer.nodeType) {
- o.editorContainer = o.editorContainer.id = o.editorContainer.id || t.id + "_parent";
- }
-
- // Convert element type to id:s
- if (o.iframeContainer.nodeType) {
- o.iframeContainer = o.iframeContainer.id = o.iframeContainer.id || t.id + "_iframecontainer";
- }
-
- // Use specified iframe height or the targets offsetHeight
- h = o.iframeHeight || e.offsetHeight;
-
- // Store away the selection when it's changed to it can be restored later with a editor.focus() call
- if (isIE) {
- t.onInit.add(function(ed) {
- ed.dom.bind(ed.getBody(), 'beforedeactivate keydown keyup', function() {
- ed.bookmark = ed.selection.getBookmark(1);
- });
- });
-
- t.onNodeChange.add(function(ed) {
- if (document.activeElement.id == ed.id + "_ifr") {
- ed.bookmark = ed.selection.getBookmark(1);
- }
- });
- }
- }
-
- t.editorContainer = o.editorContainer;
- }
-
- // Load specified content CSS last
- if (s.content_css) {
- each(explode(s.content_css), function(u) {
- t.contentCSS.push(t.documentBaseURI.toAbsolute(u));
- });
- }
-
- // Load specified content CSS last
- if (s.content_style) {
- t.contentStyles.push(s.content_style);
- }
-
- // Content editable mode ends here
- if (s.content_editable) {
- e = n = o = null; // Fix IE leak
- return t.initContentBody();
- }
-
- // User specified a document.domain value
- if (document.domain && location.hostname != document.domain)
- tinymce.relaxedDomain = document.domain;
-
- t.iframeHTML = s.doctype + '<html><head xmlns="http://www.w3.org/1999/xhtml">';
-
- // We only need to override paths if we have to
- // IE has a bug where it remove site absolute urls to relative ones if this is specified
- if (s.document_base_url != tinymce.documentBaseURL)
- t.iframeHTML += '<base href="' + t.documentBaseURI.getURI() + '" />';
-
- // IE8 doesn't support carets behind images setting ie7_compat would force IE8+ to run in IE7 compat mode.
- if (tinymce.isIE8) {
- if (s.ie7_compat)
- t.iframeHTML += '<meta http-equiv="X-UA-Compatible" content="IE=7" />';
- else
- t.iframeHTML += '<meta http-equiv="X-UA-Compatible" content="IE=edge" />';
- }
-
- t.iframeHTML += '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';
-
- // Load the CSS by injecting them into the HTML this will reduce "flicker"
- for (i = 0; i < t.contentCSS.length; i++) {
- t.iframeHTML += '<link type="text/css" rel="stylesheet" href="' + t.contentCSS[i] + '" />';
- }
-
- t.contentCSS = [];
-
- bi = s.body_id || 'tinymce';
- if (bi.indexOf('=') != -1) {
- bi = t.getParam('body_id', '', 'hash');
- bi = bi[t.id] || bi;
- }
-
- bc = s.body_class || '';
- if (bc.indexOf('=') != -1) {
- bc = t.getParam('body_class', '', 'hash');
- bc = bc[t.id] || '';
- }
-
- t.iframeHTML += '</head><body id="' + bi + '" class="mceContentBody ' + bc + '" onload="window.parent.tinyMCE.get(\'' + t.id + '\').onLoad.dispatch();"><br></body></html>';
-
- // Domain relaxing enabled, then set document domain
- if (tinymce.relaxedDomain && (isIE || (tinymce.isOpera && parseFloat(opera.version()) < 11))) {
- // We need to write the contents here in IE since multiple writes messes up refresh button and back button
- u = 'javascript:(function(){document.open();document.domain="' + document.domain + '";var ed = window.parent.tinyMCE.get("' + t.id + '");document.write(ed.iframeHTML);document.close();ed.initContentBody();})()';
- }
-
- // Create iframe
- // TODO: ACC add the appropriate description on this.
- n = DOM.add(o.iframeContainer, 'iframe', {
- id : t.id + "_ifr",
- src : u || 'javascript:""', // Workaround for HTTPS warning in IE6/7
- frameBorder : '0',
- allowTransparency : "true",
- title : s.aria_label,
- style : {
- width : '100%',
- height : h,
- display : 'block' // Important for Gecko to render the iframe correctly
- }
- });
-
- t.contentAreaContainer = o.iframeContainer;
-
- if (o.editorContainer) {
- DOM.get(o.editorContainer).style.display = t.orgDisplay;
- }
-
- // Restore visibility on target element
- e.style.visibility = t.orgVisibility;
-
- DOM.get(t.id).style.display = 'none';
- DOM.setAttrib(t.id, 'aria-hidden', true);
-
- if (!tinymce.relaxedDomain || !u)
- t.initContentBody();
-
- e = n = o = null; // Cleanup
- },
-
- initContentBody : function() {
- var self = this, settings = self.settings, targetElm = DOM.get(self.id), doc = self.getDoc(), html, body, contentCssText;
-
- // Setup iframe body
- if ((!isIE || !tinymce.relaxedDomain) && !settings.content_editable) {
- doc.open();
- doc.write(self.iframeHTML);
- doc.close();
-
- if (tinymce.relaxedDomain)
- doc.domain = tinymce.relaxedDomain;
- }
-
- if (settings.content_editable) {
- DOM.addClass(targetElm, 'mceContentBody');
- self.contentDocument = doc = settings.content_document || document;
- self.contentWindow = settings.content_window || window;
- self.bodyElement = targetElm;
-
- // Prevent leak in IE
- settings.content_document = settings.content_window = null;
- }
-
- // It will not steal focus while setting contentEditable
- body = self.getBody();
- body.disabled = true;
-
- if (!settings.readonly)
- body.contentEditable = self.getParam('content_editable_state', true);
-
- body.disabled = false;
-
- self.schema = new tinymce.html.Schema(settings);
-
- self.dom = new tinymce.dom.DOMUtils(doc, {
- keep_values : true,
- url_converter : self.convertURL,
- url_converter_scope : self,
- hex_colors : settings.force_hex_style_colors,
- class_filter : settings.class_filter,
- update_styles : true,
- root_element : settings.content_editable ? self.id : null,
- schema : self.schema
- });
-
- self.parser = new tinymce.html.DomParser(settings, self.schema);
-
- // Convert src and href into data-mce-src, data-mce-href and data-mce-style
- self.parser.addAttributeFilter('src,href,style', function(nodes, name) {
- var i = nodes.length, node, dom = self.dom, value, internalName;
-
- while (i--) {
- node = nodes[i];
- value = node.attr(name);
- internalName = 'data-mce-' + name;
-
- // Add internal attribute if we need to we don't on a refresh of the document
- if (!node.attributes.map[internalName]) {
- if (name === "style")
- node.attr(internalName, dom.serializeStyle(dom.parseStyle(value), node.name));
- else
- node.attr(internalName, self.convertURL(value, name, node.name));
- }
- }
- });
-
- // Keep scripts from executing
- self.parser.addNodeFilter('script', function(nodes, name) {
- var i = nodes.length, node;
-
- while (i--) {
- node = nodes[i];
- node.attr('type', 'mce-' + (node.attr('type') || 'text/javascript'));
- }
- });
-
- self.parser.addNodeFilter('#cdata', function(nodes, name) {
- var i = nodes.length, node;
-
- while (i--) {
- node = nodes[i];
- node.type = 8;
- node.name = '#comment';
- node.value = '[CDATA[' + node.value + ']]';
- }
- });
-
- self.parser.addNodeFilter('p,h1,h2,h3,h4,h5,h6,div', function(nodes, name) {
- var i = nodes.length, node, nonEmptyElements = self.schema.getNonEmptyElements();
-
- while (i--) {
- node = nodes[i];
-
- if (node.isEmpty(nonEmptyElements))
- node.empty().append(new tinymce.html.Node('br', 1)).shortEnded = true;
- }
- });
-
- self.serializer = new tinymce.dom.Serializer(settings, self.dom, self.schema);
-
- self.selection = new tinymce.dom.Selection(self.dom, self.getWin(), self.serializer, self);
-
- self.formatter = new tinymce.Formatter(self);
-
- self.undoManager = new tinymce.UndoManager(self);
-
- self.forceBlocks = new tinymce.ForceBlocks(self);
- self.enterKey = new tinymce.EnterKey(self);
- self.editorCommands = new tinymce.EditorCommands(self);
-
- self.onExecCommand.add(function(editor, command) {
- // Don't refresh the select lists until caret move
- if (!/^(FontName|FontSize)$/.test(command))
- self.nodeChanged();
- });
-
- // Pass through
- self.serializer.onPreProcess.add(function(se, o) {
- return self.onPreProcess.dispatch(self, o, se);
- });
-
- self.serializer.onPostProcess.add(function(se, o) {
- return self.onPostProcess.dispatch(self, o, se);
- });
-
- self.onPreInit.dispatch(self);
-
- if (!settings.browser_spellcheck && !settings.gecko_spellcheck)
- doc.body.spellcheck = false;
-
- if (!settings.readonly) {
- self.bindNativeEvents();
- }
-
- self.controlManager.onPostRender.dispatch(self, self.controlManager);
- self.onPostRender.dispatch(self);
-
- self.quirks = tinymce.util.Quirks(self);
-
- if (settings.directionality)
- body.dir = settings.directionality;
-
- if (settings.nowrap)
- body.style.whiteSpace = "nowrap";
-
- if (settings.protect) {
- self.onBeforeSetContent.add(function(ed, o) {
- each(settings.protect, function(pattern) {
- o.content = o.content.replace(pattern, function(str) {
- return '<!--mce:protected ' + escape(str) + '-->';
- });
- });
- });
- }
-
- // Add visual aids when new contents is added
- self.onSetContent.add(function() {
- self.addVisual(self.getBody());
- });
-
- // Remove empty contents
- if (settings.padd_empty_editor) {
- self.onPostProcess.add(function(ed, o) {
- o.content = o.content.replace(/^(<p[^>]*>(&nbsp;|&#160;|\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/, '');
- });
- }
-
- self.load({initial : true, format : 'html'});
- self.startContent = self.getContent({format : 'raw'});
-
- self.initialized = true;
-
- self.onInit.dispatch(self);
- self.execCallback('setupcontent_callback', self.id, body, doc);
- self.execCallback('init_instance_callback', self);
- self.focus(true);
- self.nodeChanged({initial : true});
-
- // Add editor specific CSS styles
- if (self.contentStyles.length > 0) {
- contentCssText = '';
-
- each(self.contentStyles, function(style) {
- contentCssText += style + "\r\n";
- });
-
- self.dom.addStyle(contentCssText);
- }
-
- // Load specified content CSS last
- each(self.contentCSS, function(url) {
- self.dom.loadCSS(url);
- });
-
- // Handle auto focus
- if (settings.auto_focus) {
- setTimeout(function () {
- var ed = tinymce.get(settings.auto_focus);
-
- ed.selection.select(ed.getBody(), 1);
- ed.selection.collapse(1);
- ed.getBody().focus();
- ed.getWin().focus();
- }, 100);
- }
-
- // Clean up references for IE
- targetElm = doc = body = null;
- },
-
- focus : function(skip_focus) {
- var oed, self = this, selection = self.selection, contentEditable = self.settings.content_editable, ieRng, controlElm, doc = self.getDoc(), body;
-
- if (!skip_focus) {
- if (self.bookmark) {
- selection.moveToBookmark(self.bookmark);
- self.bookmark = null;
- }
-
- // Get selected control element
- ieRng = selection.getRng();
- if (ieRng.item) {
- controlElm = ieRng.item(0);
- }
-
- self._refreshContentEditable();
-
- // Focus the window iframe
- if (!contentEditable) {
- self.getWin().focus();
- }
-
- // Focus the body as well since it's contentEditable
- if (tinymce.isGecko || contentEditable) {
- body = self.getBody();
-
- // Check for setActive since it doesn't scroll to the element
- if (body.setActive && ! tinymce.isIE11) {
- body.setActive();
- } else {
- body.focus();
- }
-
- if (contentEditable) {
- selection.normalize();
- }
- }
-
- // Restore selected control element
- // This is needed when for example an image is selected within a
- // layer a call to focus will then remove the control selection
- if (controlElm && controlElm.ownerDocument == doc) {
- ieRng = doc.body.createControlRange();
- ieRng.addElement(controlElm);
- ieRng.select();
- }
- }
-
- if (tinymce.activeEditor != self) {
- if ((oed = tinymce.activeEditor) != null)
- oed.onDeactivate.dispatch(oed, self);
-
- self.onActivate.dispatch(self, oed);
- }
-
- tinymce._setActive(self);
- },
-
- execCallback : function(n) {
- var t = this, f = t.settings[n], s;
-
- if (!f)
- return;
-
- // Look through lookup
- if (t.callbackLookup && (s = t.callbackLookup[n])) {
- f = s.func;
- s = s.scope;
- }
-
- if (is(f, 'string')) {
- s = f.replace(/\.\w+$/, '');
- s = s ? tinymce.resolve(s) : 0;
- f = tinymce.resolve(f);
- t.callbackLookup = t.callbackLookup || {};
- t.callbackLookup[n] = {func : f, scope : s};
- }
-
- return f.apply(s || t, Array.prototype.slice.call(arguments, 1));
- },
-
- translate : function(s) {
- var c = this.settings.language || 'en', i18n = tinymce.i18n;
-
- if (!s)
- return '';
-
- return i18n[c + '.' + s] || s.replace(/\{\#([^\}]+)\}/g, function(a, b) {
- return i18n[c + '.' + b] || '{#' + b + '}';
- });
- },
-
- getLang : function(n, dv) {
- return tinymce.i18n[(this.settings.language || 'en') + '.' + n] || (is(dv) ? dv : '{#' + n + '}');
- },
-
- getParam : function(n, dv, ty) {
- var tr = tinymce.trim, v = is(this.settings[n]) ? this.settings[n] : dv, o;
-
- if (ty === 'hash') {
- o = {};
-
- if (is(v, 'string')) {
- each(v.indexOf('=') > 0 ? v.split(/[;,](?![^=;,]*(?:[;,]|$))/) : v.split(','), function(v) {
- v = v.split('=');
-
- if (v.length > 1)
- o[tr(v[0])] = tr(v[1]);
- else
- o[tr(v[0])] = tr(v);
- });
- } else
- o = v;
-
- return o;
- }
-
- return v;
- },
-
- nodeChanged : function(o) {
- var self = this, selection = self.selection, node;
-
- // Fix for bug #1896577 it seems that this can not be fired while the editor is loading
- if (self.initialized) {
- o = o || {};
-
- // Get start node
- node = selection.getStart() || self.getBody();
- node = isIE && node.ownerDocument != self.getDoc() ? self.getBody() : node; // Fix for IE initial state
-
- // Get parents and add them to object
- o.parents = [];
- self.dom.getParent(node, function(node) {
- if (node.nodeName == 'BODY')
- return true;
-
- o.parents.push(node);
- });
-
- self.onNodeChange.dispatch(
- self,
- o ? o.controlManager || self.controlManager : self.controlManager,
- node,
- selection.isCollapsed(),
- o
- );
- }
- },
-
- addButton : function(name, settings) {
- var self = this;
-
- self.buttons = self.buttons || {};
- self.buttons[name] = settings;
- },
-
- addCommand : function(name, callback, scope) {
- this.execCommands[name] = {func : callback, scope : scope || this};
- },
-
- addQueryStateHandler : function(name, callback, scope) {
- this.queryStateCommands[name] = {func : callback, scope : scope || this};
- },
-
- addQueryValueHandler : function(name, callback, scope) {
- this.queryValueCommands[name] = {func : callback, scope : scope || this};
- },
-
- addShortcut : function(pa, desc, cmd_func, sc) {
- var t = this, c;
-
- if (t.settings.custom_shortcuts === false)
- return false;
-
- t.shortcuts = t.shortcuts || {};
-
- if (is(cmd_func, 'string')) {
- c = cmd_func;
-
- cmd_func = function() {
- t.execCommand(c, false, null);
- };
- }
-
- if (is(cmd_func, 'object')) {
- c = cmd_func;
-
- cmd_func = function() {
- t.execCommand(c[0], c[1], c[2]);
- };
- }
-
- each(explode(pa), function(pa) {
- var o = {
- func : cmd_func,
- scope : sc || this,
- desc : t.translate(desc),
- alt : false,
- ctrl : false,
- shift : false
- };
-
- each(explode(pa, '+'), function(v) {
- switch (v) {
- case 'alt':
- case 'ctrl':
- case 'shift':
- o[v] = true;
- break;
-
- default:
- o.charCode = v.charCodeAt(0);
- o.keyCode = v.toUpperCase().charCodeAt(0);
- }
- });
-
- t.shortcuts[(o.ctrl ? 'ctrl' : '') + ',' + (o.alt ? 'alt' : '') + ',' + (o.shift ? 'shift' : '') + ',' + o.keyCode] = o;
- });
-
- return true;
- },
-
- execCommand : function(cmd, ui, val, a) {
- var t = this, s = 0, o, st;
-
- if (!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(cmd) && (!a || !a.skip_focus))
- t.focus();
-
- a = extend({}, a);
- t.onBeforeExecCommand.dispatch(t, cmd, ui, val, a);
- if (a.terminate)
- return false;
-
- // Command callback
- if (t.execCallback('execcommand_callback', t.id, t.selection.getNode(), cmd, ui, val)) {
- t.onExecCommand.dispatch(t, cmd, ui, val, a);
- return true;
- }
-
- // Registred commands
- if (o = t.execCommands[cmd]) {
- st = o.func.call(o.scope, ui, val);
-
- // Fall through on true
- if (st !== true) {
- t.onExecCommand.dispatch(t, cmd, ui, val, a);
- return st;
- }
- }
-
- // Plugin commands
- each(t.plugins, function(p) {
- if (p.execCommand && p.execCommand(cmd, ui, val)) {
- t.onExecCommand.dispatch(t, cmd, ui, val, a);
- s = 1;
- return false;
- }
- });
-
- if (s)
- return true;
-
- // Theme commands
- if (t.theme && t.theme.execCommand && t.theme.execCommand(cmd, ui, val)) {
- t.onExecCommand.dispatch(t, cmd, ui, val, a);
- return true;
- }
-
- // Editor commands
- if (t.editorCommands.execCommand(cmd, ui, val)) {
- t.onExecCommand.dispatch(t, cmd, ui, val, a);
- return true;
- }
-
- // Browser commands
- t.getDoc().execCommand(cmd, ui, val);
- t.onExecCommand.dispatch(t, cmd, ui, val, a);
- },
-
- queryCommandState : function(cmd) {
- var t = this, o, s;
-
- // Is hidden then return undefined
- if (t._isHidden())
- return;
-
- // Registred commands
- if (o = t.queryStateCommands[cmd]) {
- s = o.func.call(o.scope);
-
- // Fall though on true
- if (s !== true)
- return s;
- }
-
- // Registred commands
- o = t.editorCommands.queryCommandState(cmd);
- if (o !== -1)
- return o;
-
- // Browser commands
- try {
- return this.getDoc().queryCommandState(cmd);
- } catch (ex) {
- // Fails sometimes see bug: 1896577
- }
- },
-
- queryCommandValue : function(c) {
- var t = this, o, s;
-
- // Is hidden then return undefined
- if (t._isHidden())
- return;
-
- // Registred commands
- if (o = t.queryValueCommands[c]) {
- s = o.func.call(o.scope);
-
- // Fall though on true
- if (s !== true)
- return s;
- }
-
- // Registred commands
- o = t.editorCommands.queryCommandValue(c);
- if (is(o))
- return o;
-
- // Browser commands
- try {
- return this.getDoc().queryCommandValue(c);
- } catch (ex) {
- // Fails sometimes see bug: 1896577
- }
- },
-
- show : function() {
- var self = this;
-
- DOM.show(self.getContainer());
- DOM.hide(self.id);
- self.load();
- },
-
- hide : function() {
- var self = this, doc = self.getDoc();
-
- // Fixed bug where IE has a blinking cursor left from the editor
- if (isIE && doc)
- doc.execCommand('SelectAll');
-
- // We must save before we hide so Safari doesn't crash
- self.save();
-
- // defer the call to hide to prevent an IE9 crash #4921
- DOM.hide(self.getContainer());
- DOM.setStyle(self.id, 'display', self.orgDisplay);
- },
-
- isHidden : function() {
- return !DOM.isHidden(this.id);
- },
-
- setProgressState : function(b, ti, o) {
- this.onSetProgressState.dispatch(this, b, ti, o);
-
- return b;
- },
-
- load : function(o) {
- var t = this, e = t.getElement(), h;
-
- if (e) {
- o = o || {};
- o.load = true;
-
- // Double encode existing entities in the value
- h = t.setContent(is(e.value) ? e.value : e.innerHTML, o);
- o.element = e;
-
- if (!o.no_events)
- t.onLoadContent.dispatch(t, o);
-
- o.element = e = null;
-
- return h;
- }
- },
-
- save : function(o) {
- var t = this, e = t.getElement(), h, f;
-
- if (!e || !t.initialized)
- return;
-
- o = o || {};
- o.save = true;
-
- o.element = e;
- h = o.content = t.getContent(o);
-
- if (!o.no_events)
- t.onSaveContent.dispatch(t, o);
-
- h = o.content;
-
- if (!/TEXTAREA|INPUT/i.test(e.nodeName)) {
- e.innerHTML = h;
-
- // Update hidden form element
- if (f = DOM.getParent(t.id, 'form')) {
- each(f.elements, function(e) {
- if (e.name == t.id) {
- e.value = h;
- return false;
- }
- });
- }
- } else
- e.value = h;
-
- o.element = e = null;
-
- return h;
- },
-
- setContent : function(content, args) {
- var self = this, rootNode, body = self.getBody(), forcedRootBlockName;
-
- // Setup args object
- args = args || {};
- args.format = args.format || 'html';
- args.set = true;
- args.content = content;
-
- // Do preprocessing
- if (!args.no_events)
- self.onBeforeSetContent.dispatch(self, args);
-
- content = args.content;
-
- // Padd empty content in Gecko and Safari. Commands will otherwise fail on the content
- // It will also be impossible to place the caret in the editor unless there is a BR element present
- if (!tinymce.isIE && (content.length === 0 || /^\s+$/.test(content))) {
- forcedRootBlockName = self.settings.forced_root_block;
- if (forcedRootBlockName)
- content = '<' + forcedRootBlockName + '><br data-mce-bogus="1"></' + forcedRootBlockName + '>';
- else
- content = '<br data-mce-bogus="1">';
-
- body.innerHTML = content;
- self.selection.select(body, true);
- self.selection.collapse(true);
- return;
- }
-
- // Parse and serialize the html
- if (args.format !== 'raw') {
- content = new tinymce.html.Serializer({}, self.schema).serialize(
- self.parser.parse(content)
- );
- }
-
- // Set the new cleaned contents to the editor
- args.content = tinymce.trim(content);
- self.dom.setHTML(body, args.content);
-
- // Do post processing
- if (!args.no_events)
- self.onSetContent.dispatch(self, args);
-
- // Don't normalize selection if the focused element isn't the body in content editable mode since it will steal focus otherwise
- if (!self.settings.content_editable || document.activeElement === self.getBody()) {
- self.selection.normalize();
- }
-
- return args.content;
- },
-
- getContent : function(args) {
- var self = this, content, body = self.getBody();
-
- // Setup args object
- args = args || {};
- args.format = args.format || 'html';
- args.get = true;
- args.getInner = true;
-
- // Do preprocessing
- if (!args.no_events)
- self.onBeforeGetContent.dispatch(self, args);
-
- // Get raw contents or by default the cleaned contents
- if (args.format == 'raw')
- content = body.innerHTML;
- else if (args.format == 'text')
- content = body.innerText || body.textContent;
- else
- content = self.serializer.serialize(body, args);
-
- // Trim whitespace in beginning/end of HTML
- if (args.format != 'text') {
- args.content = tinymce.trim(content);
- } else {
- args.content = content;
- }
-
- // Do post processing
- if (!args.no_events)
- self.onGetContent.dispatch(self, args);
-
- return args.content;
- },
-
- isDirty : function() {
- var self = this;
-
- return tinymce.trim(self.startContent) != tinymce.trim(self.getContent({format : 'raw', no_events : 1})) && !self.isNotDirty;
- },
-
- getContainer : function() {
- var self = this;
-
- if (!self.container)
- self.container = DOM.get(self.editorContainer || self.id + '_parent');
-
- return self.container;
- },
-
- getContentAreaContainer : function() {
- return this.contentAreaContainer;
- },
-
- getElement : function() {
- return DOM.get(this.settings.content_element || this.id);
- },
-
- getWin : function() {
- var self = this, elm;
-
- if (!self.contentWindow) {
- elm = DOM.get(self.id + "_ifr");
-
- if (elm)
- self.contentWindow = elm.contentWindow;
- }
-
- return self.contentWindow;
- },
-
- getDoc : function() {
- var self = this, win;
-
- if (!self.contentDocument) {
- win = self.getWin();
-
- if (win)
- self.contentDocument = win.document;
- }
-
- return self.contentDocument;
- },
-
- getBody : function() {
- return this.bodyElement || this.getDoc().body;
- },
-
- convertURL : function(url, name, elm) {
- var self = this, settings = self.settings;
-
- // Use callback instead
- if (settings.urlconverter_callback)
- return self.execCallback('urlconverter_callback', url, elm, true, name);
-
- // Don't convert link href since thats the CSS files that gets loaded into the editor also skip local file URLs
- if (!settings.convert_urls || (elm && elm.nodeName == 'LINK') || url.indexOf('file:') === 0)
- return url;
-
- // Convert to relative
- if (settings.relative_urls)
- return self.documentBaseURI.toRelative(url);
-
- // Convert to absolute
- url = self.documentBaseURI.toAbsolute(url, settings.remove_script_host);
-
- return url;
- },
-
- addVisual : function(elm) {
- var self = this, settings = self.settings, dom = self.dom, cls;
-
- elm = elm || self.getBody();
-
- if (!is(self.hasVisual))
- self.hasVisual = settings.visual;
-
- each(dom.select('table,a', elm), function(elm) {
- var value;
-
- switch (elm.nodeName) {
- case 'TABLE':
- cls = settings.visual_table_class || 'mceItemTable';
- value = dom.getAttrib(elm, 'border');
-
- if (!value || value == '0') {
- if (self.hasVisual)
- dom.addClass(elm, cls);
- else
- dom.removeClass(elm, cls);
- }
-
- return;
-
- case 'A':
- if (!dom.getAttrib(elm, 'href', false)) {
- value = dom.getAttrib(elm, 'name') || elm.id;
- cls = 'mceItemAnchor';
-
- if (value) {
- if (self.hasVisual)
- dom.addClass(elm, cls);
- else
- dom.removeClass(elm, cls);
- }
- }
-
- return;
- }
- });
-
- self.onVisualAid.dispatch(self, elm, self.hasVisual);
- },
-
- remove : function() {
- var self = this, elm = self.getContainer(), doc = self.getDoc();
-
- if (!self.removed) {
- self.removed = 1; // Cancels post remove event execution
-
- // Fixed bug where IE has a blinking cursor left from the editor
- if (isIE && doc)
- doc.execCommand('SelectAll');
-
- // We must save before we hide so Safari doesn't crash
- self.save();
-
- DOM.setStyle(self.id, 'display', self.orgDisplay);
-
- // Don't clear the window or document if content editable
- // is enabled since other instances might still be present
- if (!self.settings.content_editable) {
- Event.unbind(self.getWin());
- Event.unbind(self.getDoc());
- }
-
- Event.unbind(self.getBody());
- Event.clear(elm);
-
- self.execCallback('remove_instance_callback', self);
- self.onRemove.dispatch(self);
-
- // Clear all execCommand listeners this is required to avoid errors if the editor was removed inside another command
- self.onExecCommand.listeners = [];
-
- tinymce.remove(self);
- DOM.remove(elm);
- }
- },
-
- destroy : function(s) {
- var t = this;
-
- // One time is enough
- if (t.destroyed)
- return;
-
- // We must unbind on Gecko since it would otherwise produce the pesky "attempt to run compile-and-go script on a cleared scope" message
- if (isGecko) {
- Event.unbind(t.getDoc());
- Event.unbind(t.getWin());
- Event.unbind(t.getBody());
- }
-
- if (!s) {
- tinymce.removeUnload(t.destroy);
- tinyMCE.onBeforeUnload.remove(t._beforeUnload);
-
- // Manual destroy
- if (t.theme && t.theme.destroy)
- t.theme.destroy();
-
- // Destroy controls, selection and dom
- t.controlManager.destroy();
- t.selection.destroy();
- t.dom.destroy();
- }
-
- if (t.formElement) {
- t.formElement.submit = t.formElement._mceOldSubmit;
- t.formElement._mceOldSubmit = null;
- }
-
- t.contentAreaContainer = t.formElement = t.container = t.settings.content_element = t.bodyElement = t.contentDocument = t.contentWindow = null;
-
- if (t.selection)
- t.selection = t.selection.win = t.selection.dom = t.selection.dom.doc = null;
-
- t.destroyed = 1;
- },
-
- // Internal functions
-
- _refreshContentEditable : function() {
- var self = this, body, parent;
-
- // Check if the editor was hidden and the re-initalize contentEditable mode by removing and adding the body again
- if (self._isHidden()) {
- body = self.getBody();
- parent = body.parentNode;
-
- parent.removeChild(body);
- parent.appendChild(body);
-
- body.focus();
- }
- },
-
- _isHidden : function() {
- var s;
-
- if (!isGecko)
- return 0;
-
- // Weird, wheres that cursor selection?
- s = this.selection.getSel();
- return (!s || !s.rangeCount || s.rangeCount === 0);
- }
- });
-})(tinymce);
-(function(tinymce) {
- var each = tinymce.each;
-
- tinymce.Editor.prototype.setupEvents = function() {
- var self = this, settings = self.settings;
-
- // Add events to the editor
- each([
- 'onPreInit',
-
- 'onBeforeRenderUI',
-
- 'onPostRender',
-
- 'onLoad',
-
- 'onInit',
-
- 'onRemove',
-
- 'onActivate',
-
- 'onDeactivate',
-
- 'onClick',
-
- 'onEvent',
-
- 'onMouseUp',
-
- 'onMouseDown',
-
- 'onDblClick',
-
- 'onKeyDown',
-
- 'onKeyUp',
-
- 'onKeyPress',
-
- 'onContextMenu',
-
- 'onSubmit',
-
- 'onReset',
-
- 'onPaste',
-
- 'onPreProcess',
-
- 'onPostProcess',
-
- 'onBeforeSetContent',
-
- 'onBeforeGetContent',
-
- 'onSetContent',
-
- 'onGetContent',
-
- 'onLoadContent',
-
- 'onSaveContent',
-
- 'onNodeChange',
-
- 'onChange',
-
- 'onBeforeExecCommand',
-
- 'onExecCommand',
-
- 'onUndo',
-
- 'onRedo',
-
- 'onVisualAid',
-
- 'onSetProgressState',
-
- 'onSetAttrib'
- ], function(name) {
- self[name] = new tinymce.util.Dispatcher(self);
- });
-
- // Handle legacy cleanup_callback option
- if (settings.cleanup_callback) {
- self.onBeforeSetContent.add(function(ed, o) {
- o.content = ed.execCallback('cleanup_callback', 'insert_to_editor', o.content, o);
- });
-
- self.onPreProcess.add(function(ed, o) {
- if (o.set)
- ed.execCallback('cleanup_callback', 'insert_to_editor_dom', o.node, o);
-
- if (o.get)
- ed.execCallback('cleanup_callback', 'get_from_editor_dom', o.node, o);
- });
-
- self.onPostProcess.add(function(ed, o) {
- if (o.set)
- o.content = ed.execCallback('cleanup_callback', 'insert_to_editor', o.content, o);
-
- if (o.get)
- o.content = ed.execCallback('cleanup_callback', 'get_from_editor', o.content, o);
- });
- }
-
- // Handle legacy save_callback option
- if (settings.save_callback) {
- self.onGetContent.add(function(ed, o) {
- if (o.save)
- o.content = ed.execCallback('save_callback', ed.id, o.content, ed.getBody());
- });
- }
-
- // Handle legacy handle_event_callback option
- if (settings.handle_event_callback) {
- self.onEvent.add(function(ed, e, o) {
- if (self.execCallback('handle_event_callback', e, ed, o) === false) {
- e.preventDefault();
- e.stopPropagation();
- }
- });
- }
-
- // Handle legacy handle_node_change_callback option
- if (settings.handle_node_change_callback) {
- self.onNodeChange.add(function(ed, cm, n) {
- ed.execCallback('handle_node_change_callback', ed.id, n, -1, -1, true, ed.selection.isCollapsed());
- });
- }
-
- // Handle legacy save_callback option
- if (settings.save_callback) {
- self.onSaveContent.add(function(ed, o) {
- var h = ed.execCallback('save_callback', ed.id, o.content, ed.getBody());
-
- if (h)
- o.content = h;
- });
- }
-
- // Handle legacy onchange_callback option
- if (settings.onchange_callback) {
- self.onChange.add(function(ed, l) {
- ed.execCallback('onchange_callback', ed, l);
- });
- }
- };
-
- tinymce.Editor.prototype.bindNativeEvents = function() {
- // 'focus', 'blur', 'dblclick', 'beforedeactivate', submit, reset
- var self = this, i, settings = self.settings, dom = self.dom, nativeToDispatcherMap;
-
- nativeToDispatcherMap = {
- mouseup : 'onMouseUp',
- mousedown : 'onMouseDown',
- click : 'onClick',
- keyup : 'onKeyUp',
- keydown : 'onKeyDown',
- keypress : 'onKeyPress',
- submit : 'onSubmit',
- reset : 'onReset',
- contextmenu : 'onContextMenu',
- dblclick : 'onDblClick',
- paste : 'onPaste' // Doesn't work in all browsers yet
- };
-
- // Handler that takes a native event and sends it out to a dispatcher like onKeyDown
- function eventHandler(evt, args) {
- var type = evt.type;
-
- // Don't fire events when it's removed
- if (self.removed)
- return;
-
- // Sends the native event out to a global dispatcher then to the specific event dispatcher
- if (self.onEvent.dispatch(self, evt, args) !== false) {
- self[nativeToDispatcherMap[evt.fakeType || evt.type]].dispatch(self, evt, args);
- }
- };
-
- // Opera doesn't support focus event for contentEditable elements so we need to fake it
- function doOperaFocus(e) {
- self.focus(true);
- };
-
- function nodeChanged(ed, e) {
- // Normalize selection for example <b>a</b><i>|a</i> becomes <b>a|</b><i>a</i> except for Ctrl+A since it selects everything
- if (e.keyCode != 65 || !tinymce.VK.metaKeyPressed(e)) {
- self.selection.normalize();
- }
-
- self.nodeChanged();
- }
-
- // Add DOM events
- each(nativeToDispatcherMap, function(dispatcherName, nativeName) {
- var root = settings.content_editable ? self.getBody() : self.getDoc();
-
- switch (nativeName) {
- case 'contextmenu':
- dom.bind(root, nativeName, eventHandler);
- break;
-
- case 'paste':
- dom.bind(self.getBody(), nativeName, eventHandler);
- break;
-
- case 'submit':
- case 'reset':
- dom.bind(self.getElement().form || tinymce.DOM.getParent(self.id, 'form'), nativeName, eventHandler);
- break;
-
- default:
- dom.bind(root, nativeName, eventHandler);
- }
- });
-
- // Set the editor as active when focused
- dom.bind(settings.content_editable ? self.getBody() : (tinymce.isGecko ? self.getDoc() : self.getWin()), 'focus', function(e) {
- self.focus(true);
- });
-
- if (settings.content_editable && tinymce.isOpera) {
- dom.bind(self.getBody(), 'click', doOperaFocus);
- dom.bind(self.getBody(), 'keydown', doOperaFocus);
- }
-
- // Add node change handler
- self.onMouseUp.add(nodeChanged);
-
- self.onKeyUp.add(function(ed, e) {
- var keyCode = e.keyCode;
-
- if ((keyCode >= 33 && keyCode <= 36) || (keyCode >= 37 && keyCode <= 40) || keyCode == 13 || keyCode == 45 || keyCode == 46 || keyCode == 8 || (tinymce.isMac && (keyCode == 91 || keyCode == 93)) || e.ctrlKey)
- nodeChanged(ed, e);
- });
-
- // Add reset handler
- self.onReset.add(function() {
- self.setContent(self.startContent, {format : 'raw'});
- });
-
- // Add shortcuts
- function handleShortcut(e, execute) {
- if (e.altKey || e.ctrlKey || e.metaKey) {
- each(self.shortcuts, function(shortcut) {
- var ctrlState = tinymce.isMac ? e.metaKey : e.ctrlKey;
-
- if (shortcut.ctrl != ctrlState || shortcut.alt != e.altKey || shortcut.shift != e.shiftKey)
- return;
-
- if (e.keyCode == shortcut.keyCode || (e.charCode && e.charCode == shortcut.charCode)) {
- e.preventDefault();
-
- if (execute) {
- shortcut.func.call(shortcut.scope);
- }
-
- return true;
- }
- });
- }
- };
-
- self.onKeyUp.add(function(ed, e) {
- handleShortcut(e);
- });
-
- self.onKeyPress.add(function(ed, e) {
- handleShortcut(e);
- });
-
- self.onKeyDown.add(function(ed, e) {
- handleShortcut(e, true);
- });
-
- if (tinymce.isOpera) {
- self.onClick.add(function(ed, e) {
- e.preventDefault();
- });
- }
- };
-})(tinymce);
-(function(tinymce) {
- // Added for compression purposes
- var each = tinymce.each, undef, TRUE = true, FALSE = false;
-
- tinymce.EditorCommands = function(editor) {
- var dom = editor.dom,
- selection = editor.selection,
- commands = {state: {}, exec : {}, value : {}},
- settings = editor.settings,
- formatter = editor.formatter,
- bookmark;
-
- function execCommand(command, ui, value) {
- var func;
-
- command = command.toLowerCase();
- if (func = commands.exec[command]) {
- func(command, ui, value);
- return TRUE;
- }
-
- return FALSE;
- };
-
- function queryCommandState(command) {
- var func;
-
- command = command.toLowerCase();
- if (func = commands.state[command])
- return func(command);
-
- return -1;
- };
-
- function queryCommandValue(command) {
- var func;
-
- command = command.toLowerCase();
- if (func = commands.value[command])
- return func(command);
-
- return FALSE;
- };
-
- function addCommands(command_list, type) {
- type = type || 'exec';
-
- each(command_list, function(callback, command) {
- each(command.toLowerCase().split(','), function(command) {
- commands[type][command] = callback;
- });
- });
- };
-
- // Expose public methods
- tinymce.extend(this, {
- execCommand : execCommand,
- queryCommandState : queryCommandState,
- queryCommandValue : queryCommandValue,
- addCommands : addCommands
- });
-
- // Private methods
-
- function execNativeCommand(command, ui, value) {
- if (ui === undef)
- ui = FALSE;
-
- if (value === undef)
- value = null;
-
- return editor.getDoc().execCommand(command, ui, value);
- };
-
- function isFormatMatch(name) {
- return formatter.match(name);
- };
-
- function toggleFormat(name, value) {
- formatter.toggle(name, value ? {value : value} : undef);
- };
-
- function storeSelection(type) {
- bookmark = selection.getBookmark(type);
- };
-
- function restoreSelection() {
- selection.moveToBookmark(bookmark);
- };
-
- // Add execCommand overrides
- addCommands({
- // Ignore these, added for compatibility
- 'mceResetDesignMode,mceBeginUndoLevel' : function() {},
-
- // Add undo manager logic
- 'mceEndUndoLevel,mceAddUndoLevel' : function() {
- editor.undoManager.add();
- },
-
- 'Cut,Copy,Paste' : function(command) {
- var doc = editor.getDoc(), failed;
-
- // Try executing the native command
- try {
- execNativeCommand(command);
- } catch (ex) {
- // Command failed
- failed = TRUE;
- }
-
- // Present alert message about clipboard access not being available
- if (failed || !doc.queryCommandSupported(command)) {
- if (tinymce.isGecko) {
- editor.windowManager.confirm(editor.getLang('clipboard_msg'), function(state) {
- if (state)
- open('http://www.mozilla.org/editor/midasdemo/securityprefs.html', '_blank');
- });
- } else
- editor.windowManager.alert(editor.getLang('clipboard_no_support'));
- }
- },
-
- // Override unlink command
- unlink : function(command) {
- if (selection.isCollapsed())
- selection.select(selection.getNode());
-
- execNativeCommand(command);
- selection.collapse(FALSE);
- },
-
- // Override justify commands to use the text formatter engine
- 'JustifyLeft,JustifyCenter,JustifyRight,JustifyFull' : function(command) {
- var align = command.substring(7);
-
- // Remove all other alignments first
- each('left,center,right,full'.split(','), function(name) {
- if (align != name)
- formatter.remove('align' + name);
- });
-
- toggleFormat('align' + align);
- execCommand('mceRepaint');
- },
-
- // Override list commands to fix WebKit bug
- 'InsertUnorderedList,InsertOrderedList' : function(command) {
- var listElm, listParent;
-
- execNativeCommand(command);
-
- // WebKit produces lists within block elements so we need to split them
- // we will replace the native list creation logic to custom logic later on
- // TODO: Remove this when the list creation logic is removed
- listElm = dom.getParent(selection.getNode(), 'ol,ul');
- if (listElm) {
- listParent = listElm.parentNode;
-
- // If list is within a text block then split that block
- if (/^(H[1-6]|P|ADDRESS|PRE)$/.test(listParent.nodeName)) {
- storeSelection();
- dom.split(listParent, listElm);
- restoreSelection();
- }
- }
- },
-
- // Override commands to use the text formatter engine
- 'Bold,Italic,Underline,Strikethrough,Superscript,Subscript' : function(command) {
- toggleFormat(command);
- },
-
- // Override commands to use the text formatter engine
- 'ForeColor,HiliteColor,FontName' : function(command, ui, value) {
- toggleFormat(command, value);
- },
-
- FontSize : function(command, ui, value) {
- var fontClasses, fontSizes;
-
- // Convert font size 1-7 to styles
- if (value >= 1 && value <= 7) {
- fontSizes = tinymce.explode(settings.font_size_style_values);
- fontClasses = tinymce.explode(settings.font_size_classes);
-
- if (fontClasses)
- value = fontClasses[value - 1] || value;
- else
- value = fontSizes[value - 1] || value;
- }
-
- toggleFormat(command, value);
- },
-
- RemoveFormat : function(command) {
- formatter.remove(command);
- },
-
- mceBlockQuote : function(command) {
- toggleFormat('blockquote');
- },
-
- FormatBlock : function(command, ui, value) {
- return toggleFormat(value || 'p');
- },
-
- mceCleanup : function() {
- var bookmark = selection.getBookmark();
-
- editor.setContent(editor.getContent({cleanup : TRUE}), {cleanup : TRUE});
-
- selection.moveToBookmark(bookmark);
- },
-
- mceRemoveNode : function(command, ui, value) {
- var node = value || selection.getNode();
-
- // Make sure that the body node isn't removed
- if (node != editor.getBody()) {
- storeSelection();
- editor.dom.remove(node, TRUE);
- restoreSelection();
- }
- },
-
- mceSelectNodeDepth : function(command, ui, value) {
- var counter = 0;
-
- dom.getParent(selection.getNode(), function(node) {
- if (node.nodeType == 1 && counter++ == value) {
- selection.select(node);
- return FALSE;
- }
- }, editor.getBody());
- },
-
- mceSelectNode : function(command, ui, value) {
- selection.select(value);
- },
-
- mceInsertContent : function(command, ui, value) {
- var parser, serializer, parentNode, rootNode, fragment, args,
- marker, nodeRect, viewPortRect, rng, node, node2, bookmarkHtml, viewportBodyElement;
-
- //selection.normalize();
-
- // Setup parser and serializer
- parser = editor.parser;
- serializer = new tinymce.html.Serializer({}, editor.schema);
- bookmarkHtml = '<span id="mce_marker" data-mce-type="bookmark">\uFEFF</span>';
-
- // Run beforeSetContent handlers on the HTML to be inserted
- args = {content: value, format: 'html'};
- selection.onBeforeSetContent.dispatch(selection, args);
- value = args.content;
-
- // Add caret at end of contents if it's missing
- if (value.indexOf('{$caret}') == -1)
- value += '{$caret}';
-
- // Replace the caret marker with a span bookmark element
- value = value.replace(/\{\$caret\}/, bookmarkHtml);
-
- // Insert node maker where we will insert the new HTML and get it's parent
- if (!selection.isCollapsed())
- editor.getDoc().execCommand('Delete', false, null);
-
- parentNode = selection.getNode();
-
- // Parse the fragment within the context of the parent node
- args = {context : parentNode.nodeName.toLowerCase()};
- fragment = parser.parse(value, args);
-
- // Move the caret to a more suitable location
- node = fragment.lastChild;
- if (node.attr('id') == 'mce_marker') {
- marker = node;
-
- for (node = node.prev; node; node = node.walk(true)) {
- if (node.type == 3 || !dom.isBlock(node.name)) {
- node.parent.insert(marker, node, node.name === 'br');
- break;
- }
- }
- }
-
- // If parser says valid we can insert the contents into that parent
- if (!args.invalid) {
- value = serializer.serialize(fragment);
-
- // Check if parent is empty or only has one BR element then set the innerHTML of that parent
- node = parentNode.firstChild;
- node2 = parentNode.lastChild;
- if (!node || (node === node2 && node.nodeName === 'BR'))
- dom.setHTML(parentNode, value);
- else
- selection.setContent(value);
- } else {
- // If the fragment was invalid within that context then we need
- // to parse and process the parent it's inserted into
-
- // Insert bookmark node and get the parent
- selection.setContent(bookmarkHtml);
- parentNode = selection.getNode();
- rootNode = editor.getBody();
-
- // Opera will return the document node when selection is in root
- if (parentNode.nodeType == 9)
- parentNode = node = rootNode;
- else
- node = parentNode;
-
- // Find the ancestor just before the root element
- while (node !== rootNode) {
- parentNode = node;
- node = node.parentNode;
- }
-
- // Get the outer/inner HTML depending on if we are in the root and parser and serialize that
- value = parentNode == rootNode ? rootNode.innerHTML : dom.getOuterHTML(parentNode);
- value = serializer.serialize(
- parser.parse(
- // Need to replace by using a function since $ in the contents would otherwise be a problem
- value.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i, function() {
- return serializer.serialize(fragment);
- })
- )
- );
-
- // Set the inner/outer HTML depending on if we are in the root or not
- if (parentNode == rootNode)
- dom.setHTML(rootNode, value);
- else
- dom.setOuterHTML(parentNode, value);
- }
-
- marker = dom.get('mce_marker');
-
- // Scroll range into view scrollIntoView on element can't be used since it will scroll the main view port as well
- nodeRect = dom.getRect(marker);
- viewPortRect = dom.getViewPort(editor.getWin());
-
- // Check if node is out side the viewport if it is then scroll to it
- if ((nodeRect.y + nodeRect.h > viewPortRect.y + viewPortRect.h || nodeRect.y < viewPortRect.y) ||
- (nodeRect.x > viewPortRect.x + viewPortRect.w || nodeRect.x < viewPortRect.x)) {
- viewportBodyElement = tinymce.isIE ? editor.getDoc().documentElement : editor.getBody();
- viewportBodyElement.scrollLeft = nodeRect.x;
- viewportBodyElement.scrollTop = nodeRect.y - viewPortRect.h + 25;
- }
-
- // Move selection before marker and remove it
- rng = dom.createRng();
-
- // If previous sibling is a text node set the selection to the end of that node
- node = marker.previousSibling;
- if (node && node.nodeType == 3) {
- rng.setStart(node, node.nodeValue.length);
- } else {
- // If the previous sibling isn't a text node or doesn't exist set the selection before the marker node
- rng.setStartBefore(marker);
- rng.setEndBefore(marker);
- }
-
- // Remove the marker node and set the new range
- dom.remove(marker);
- selection.setRng(rng);
-
- // Dispatch after event and add any visual elements needed
- selection.onSetContent.dispatch(selection, args);
- editor.addVisual();
- },
-
- mceInsertRawHTML : function(command, ui, value) {
- selection.setContent('tiny_mce_marker');
- editor.setContent(editor.getContent().replace(/tiny_mce_marker/g, function() { return value }));
- },
-
- mceToggleFormat : function(command, ui, value) {
- toggleFormat(value);
- },
-
- mceSetContent : function(command, ui, value) {
- editor.setContent(value);
- },
-
- 'Indent,Outdent' : function(command) {
- var intentValue, indentUnit, value;
-
- // Setup indent level
- intentValue = settings.indentation;
- indentUnit = /[a-z%]+$/i.exec(intentValue);
- intentValue = parseInt(intentValue);
-
- if (!queryCommandState('InsertUnorderedList') && !queryCommandState('InsertOrderedList')) {
- // If forced_root_blocks is set to false we don't have a block to indent so lets create a div
- if (!settings.forced_root_block && !dom.getParent(selection.getNode(), dom.isBlock)) {
- formatter.apply('div');
- }
-
- each(selection.getSelectedBlocks(), function(element) {
- if (command == 'outdent') {
- value = Math.max(0, parseInt(element.style.paddingLeft || 0) - intentValue);
- dom.setStyle(element, 'paddingLeft', value ? value + indentUnit : '');
- } else
- dom.setStyle(element, 'paddingLeft', (parseInt(element.style.paddingLeft || 0) + intentValue) + indentUnit);
- });
- } else
- execNativeCommand(command);
- },
-
- mceRepaint : function() {
- var bookmark;
-
- if (tinymce.isGecko) {
- try {
- storeSelection(TRUE);
-
- if (selection.getSel())
- selection.getSel().selectAllChildren(editor.getBody());
-
- selection.collapse(TRUE);
- restoreSelection();
- } catch (ex) {
- // Ignore
- }
- }
- },
-
- mceToggleFormat : function(command, ui, value) {
- formatter.toggle(value);
- },
-
- InsertHorizontalRule : function() {
- editor.execCommand('mceInsertContent', false, '<hr />');
- },
-
- mceToggleVisualAid : function() {
- editor.hasVisual = !editor.hasVisual;
- editor.addVisual();
- },
-
- mceReplaceContent : function(command, ui, value) {
- editor.execCommand('mceInsertContent', false, value.replace(/\{\$selection\}/g, selection.getContent({format : 'text'})));
- },
-
- mceInsertLink : function(command, ui, value) {
- var anchor;
-
- if (typeof(value) == 'string')
- value = {href : value};
-
- anchor = dom.getParent(selection.getNode(), 'a');
-
- // Spaces are never valid in URLs and it's a very common mistake for people to make so we fix it here.
- value.href = value.href.replace(' ', '%20');
-
- // Remove existing links if there could be child links or that the href isn't specified
- if (!anchor || !value.href) {
- formatter.remove('link');
- }
-
- // Apply new link to selection
- if (value.href) {
- formatter.apply('link', value, anchor);
- }
- },
-
- selectAll : function() {
- var root = dom.getRoot(), rng = dom.createRng();
-
- // Old IE does a better job with selectall than new versions
- if (selection.getRng().setStart) {
- rng.setStart(root, 0);
- rng.setEnd(root, root.childNodes.length);
-
- selection.setRng(rng);
- } else {
- execNativeCommand('SelectAll');
- }
- }
- });
-
- // Add queryCommandState overrides
- addCommands({
- // Override justify commands
- 'JustifyLeft,JustifyCenter,JustifyRight,JustifyFull' : function(command) {
- var name = 'align' + command.substring(7);
- var nodes = selection.isCollapsed() ? [dom.getParent(selection.getNode(), dom.isBlock)] : selection.getSelectedBlocks();
- var matches = tinymce.map(nodes, function(node) {
- return !!formatter.matchNode(node, name);
- });
- return tinymce.inArray(matches, TRUE) !== -1;
- },
-
- 'Bold,Italic,Underline,Strikethrough,Superscript,Subscript' : function(command) {
- return isFormatMatch(command);
- },
-
- mceBlockQuote : function() {
- return isFormatMatch('blockquote');
- },
-
- Outdent : function() {
- var node;
-
- if (settings.inline_styles) {
- if ((node = dom.getParent(selection.getStart(), dom.isBlock)) && parseInt(node.style.paddingLeft) > 0)
- return TRUE;
-
- if ((node = dom.getParent(selection.getEnd(), dom.isBlock)) && parseInt(node.style.paddingLeft) > 0)
- return TRUE;
- }
-
- return queryCommandState('InsertUnorderedList') || queryCommandState('InsertOrderedList') || (!settings.inline_styles && !!dom.getParent(selection.getNode(), 'BLOCKQUOTE'));
- },
-
- 'InsertUnorderedList,InsertOrderedList' : function(command) {
- var list = dom.getParent(selection.getNode(), 'ul,ol');
- return list &&
- (command === 'insertunorderedlist' && list.tagName === 'UL'
- || command === 'insertorderedlist' && list.tagName === 'OL');
- }
- }, 'state');
-
- // Add queryCommandValue overrides
- addCommands({
- 'FontSize,FontName' : function(command) {
- var value = 0, parent;
-
- if (parent = dom.getParent(selection.getNode(), 'span')) {
- if (command == 'fontsize')
- value = parent.style.fontSize;
- else
- value = parent.style.fontFamily.replace(/, /g, ',').replace(/[\'\"]/g, '').toLowerCase();
- }
-
- return value;
- }
- }, 'value');
-
- // Add undo manager logic
- addCommands({
- Undo : function() {
- editor.undoManager.undo();
- },
-
- Redo : function() {
- editor.undoManager.redo();
- }
- });
- };
-})(tinymce);
-
-(function(tinymce) {
- var Dispatcher = tinymce.util.Dispatcher;
-
- tinymce.UndoManager = function(editor) {
- var self, index = 0, data = [], beforeBookmark, onAdd, onUndo, onRedo;
-
- function getContent() {
- // Remove whitespace before/after and remove pure bogus nodes
- return tinymce.trim(editor.getContent({format : 'raw', no_events : 1}).replace(/<span[^>]+data-mce-bogus[^>]+>[\u200B\uFEFF]+<\/span>/g, ''));
- };
-
- function addNonTypingUndoLevel() {
- self.typing = false;
- self.add();
- };
-
- // Create event instances
- onBeforeAdd = new Dispatcher(self);
- onAdd = new Dispatcher(self);
- onUndo = new Dispatcher(self);
- onRedo = new Dispatcher(self);
-
- // Pass though onAdd event from UndoManager to Editor as onChange
- onAdd.add(function(undoman, level) {
- if (undoman.hasUndo())
- return editor.onChange.dispatch(editor, level, undoman);
- });
-
- // Pass though onUndo event from UndoManager to Editor
- onUndo.add(function(undoman, level) {
- return editor.onUndo.dispatch(editor, level, undoman);
- });
-
- // Pass though onRedo event from UndoManager to Editor
- onRedo.add(function(undoman, level) {
- return editor.onRedo.dispatch(editor, level, undoman);
- });
-
- // Add initial undo level when the editor is initialized
- editor.onInit.add(function() {
- self.add();
- });
-
- // Get position before an execCommand is processed
- editor.onBeforeExecCommand.add(function(ed, cmd, ui, val, args) {
- if (cmd != 'Undo' && cmd != 'Redo' && cmd != 'mceRepaint' && (!args || !args.skip_undo)) {
- self.beforeChange();
- }
- });
-
- // Add undo level after an execCommand call was made
- editor.onExecCommand.add(function(ed, cmd, ui, val, args) {
- if (cmd != 'Undo' && cmd != 'Redo' && cmd != 'mceRepaint' && (!args || !args.skip_undo)) {
- self.add();
- }
- });
-
- // Add undo level on save contents, drag end and blur/focusout
- editor.onSaveContent.add(addNonTypingUndoLevel);
- editor.dom.bind(editor.dom.getRoot(), 'dragend', addNonTypingUndoLevel);
- editor.dom.bind(editor.getBody(), 'focusout', function(e) {
- if (!editor.removed && self.typing) {
- addNonTypingUndoLevel();
- }
- });
-
- editor.onKeyUp.add(function(editor, e) {
- var keyCode = e.keyCode;
-
- if ((keyCode >= 33 && keyCode <= 36) || (keyCode >= 37 && keyCode <= 40) || keyCode == 45 || keyCode == 13 || e.ctrlKey) {
- addNonTypingUndoLevel();
- }
- });
-
- editor.onKeyDown.add(function(editor, e) {
- var keyCode = e.keyCode;
-
- // Is caracter positon keys left,right,up,down,home,end,pgdown,pgup,enter
- if ((keyCode >= 33 && keyCode <= 36) || (keyCode >= 37 && keyCode <= 40) || keyCode == 45) {
- if (self.typing) {
- addNonTypingUndoLevel();
- }
-
- return;
- }
-
- // If key isn't shift,ctrl,alt,capslock,metakey
- if ((keyCode < 16 || keyCode > 20) && keyCode != 224 && keyCode != 91 && !self.typing) {
- self.beforeChange();
- self.typing = true;
- self.add();
- }
- });
-
- editor.onMouseDown.add(function(editor, e) {
- if (self.typing) {
- addNonTypingUndoLevel();
- }
- });
-
- // Add keyboard shortcuts for undo/redo keys
- editor.addShortcut('ctrl+z', 'undo_desc', 'Undo');
- editor.addShortcut('ctrl+y', 'redo_desc', 'Redo');
-
- self = {
- // Explose for debugging reasons
- data : data,
-
- typing : false,
-
- onBeforeAdd: onBeforeAdd,
-
- onAdd : onAdd,
-
- onUndo : onUndo,
-
- onRedo : onRedo,
-
- beforeChange : function() {
- beforeBookmark = editor.selection.getBookmark(2, true);
- },
-
- add : function(level) {
- var i, settings = editor.settings, lastLevel;
-
- level = level || {};
- level.content = getContent();
-
- self.onBeforeAdd.dispatch(self, level);
-
- // Add undo level if needed
- lastLevel = data[index];
- if (lastLevel && lastLevel.content == level.content)
- return null;
-
- // Set before bookmark on previous level
- if (data[index])
- data[index].beforeBookmark = beforeBookmark;
-
- // Time to compress
- if (settings.custom_undo_redo_levels) {
- if (data.length > settings.custom_undo_redo_levels) {
- for (i = 0; i < data.length - 1; i++)
- data[i] = data[i + 1];
-
- data.length--;
- index = data.length;
- }
- }
-
- // Get a non intrusive normalized bookmark
- level.bookmark = editor.selection.getBookmark(2, true);
-
- // Crop array if needed
- if (index < data.length - 1)
- data.length = index + 1;
-
- data.push(level);
- index = data.length - 1;
-
- self.onAdd.dispatch(self, level);
- editor.isNotDirty = 0;
-
- return level;
- },
-
- undo : function() {
- var level, i;
-
- if (self.typing) {
- self.add();
- self.typing = false;
- }
-
- if (index > 0) {
- level = data[--index];
-
- editor.setContent(level.content, {format : 'raw'});
- editor.selection.moveToBookmark(level.beforeBookmark);
-
- self.onUndo.dispatch(self, level);
- }
-
- return level;
- },
-
- redo : function() {
- var level;
-
- if (index < data.length - 1) {
- level = data[++index];
-
- editor.setContent(level.content, {format : 'raw'});
- editor.selection.moveToBookmark(level.bookmark);
-
- self.onRedo.dispatch(self, level);
- }
-
- return level;
- },
-
- clear : function() {
- data = [];
- index = 0;
- self.typing = false;
- },
-
- hasUndo : function() {
- return index > 0 || this.typing;
- },
-
- hasRedo : function() {
- return index < data.length - 1 && !this.typing;
- }
- };
-
- return self;
- };
-})(tinymce);
-
-tinymce.ForceBlocks = function(editor) {
- var settings = editor.settings, dom = editor.dom, selection = editor.selection, blockElements = editor.schema.getBlockElements();
-
- function addRootBlocks() {
- var node = selection.getStart(), rootNode = editor.getBody(), rng, startContainer, startOffset, endContainer, endOffset, rootBlockNode, tempNode, offset = -0xFFFFFF, wrapped, isInEditorDocument;
-
- if (!node || node.nodeType !== 1 || !settings.forced_root_block)
- return;
-
- // Check if node is wrapped in block
- while (node && node != rootNode) {
- if (blockElements[node.nodeName])
- return;
-
- node = node.parentNode;
- }
-
- // Get current selection
- rng = selection.getRng();
- if (rng.setStart) {
- startContainer = rng.startContainer;
- startOffset = rng.startOffset;
- endContainer = rng.endContainer;
- endOffset = rng.endOffset;
- } else {
- // Force control range into text range
- if (rng.item) {
- node = rng.item(0);
- rng = editor.getDoc().body.createTextRange();
- rng.moveToElementText(node);
- }
-
- isInEditorDocument = rng.parentElement().ownerDocument === editor.getDoc();
- tmpRng = rng.duplicate();
- tmpRng.collapse(true);
- startOffset = tmpRng.move('character', offset) * -1;
-
- if (!tmpRng.collapsed) {
- tmpRng = rng.duplicate();
- tmpRng.collapse(false);
- endOffset = (tmpRng.move('character', offset) * -1) - startOffset;
- }
- }
-
- // Wrap non block elements and text nodes
- node = rootNode.firstChild;
- while (node) {
- if (node.nodeType === 3 || (node.nodeType == 1 && !blockElements[node.nodeName])) {
- // Remove empty text nodes
- if (node.nodeType === 3 && node.nodeValue.length == 0) {
- tempNode = node;
- node = node.nextSibling;
- dom.remove(tempNode);
- continue;
- }
-
- if (!rootBlockNode) {
- rootBlockNode = dom.create(settings.forced_root_block);
- node.parentNode.insertBefore(rootBlockNode, node);
- wrapped = true;
- }
-
- tempNode = node;
- node = node.nextSibling;
- rootBlockNode.appendChild(tempNode);
- } else {
- rootBlockNode = null;
- node = node.nextSibling;
- }
- }
-
- if (wrapped) {
- if (rng.setStart) {
- rng.setStart(startContainer, startOffset);
- rng.setEnd(endContainer, endOffset);
- selection.setRng(rng);
- } else {
- // Only select if the previous selection was inside the document to prevent auto focus in quirks mode
- if (isInEditorDocument) {
- try {
- rng = editor.getDoc().body.createTextRange();
- rng.moveToElementText(rootNode);
- rng.collapse(true);
- rng.moveStart('character', startOffset);
-
- if (endOffset > 0)
- rng.moveEnd('character', endOffset);
-
- rng.select();
- } catch (ex) {
- // Ignore
- }
- }
- }
-
- editor.nodeChanged();
- }
- };
-
- // Force root blocks
- if (settings.forced_root_block) {
- editor.onKeyUp.add(addRootBlocks);
- editor.onNodeChange.add(addRootBlocks);
- }
-};
-
-(function(tinymce) {
- // Shorten names
- var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, extend = tinymce.extend;
-
- tinymce.create('tinymce.ControlManager', {
- ControlManager : function(ed, s) {
- var t = this, i;
-
- s = s || {};
- t.editor = ed;
- t.controls = {};
- t.onAdd = new tinymce.util.Dispatcher(t);
- t.onPostRender = new tinymce.util.Dispatcher(t);
- t.prefix = s.prefix || ed.id + '_';
- t._cls = {};
-
- t.onPostRender.add(function() {
- each(t.controls, function(c) {
- c.postRender();
- });
- });
- },
-
- get : function(id) {
- return this.controls[this.prefix + id] || this.controls[id];
- },
-
- setActive : function(id, s) {
- var c = null;
-
- if (c = this.get(id))
- c.setActive(s);
-
- return c;
- },
-
- setDisabled : function(id, s) {
- var c = null;
-
- if (c = this.get(id))
- c.setDisabled(s);
-
- return c;
- },
-
- add : function(c) {
- var t = this;
-
- if (c) {
- t.controls[c.id] = c;
- t.onAdd.dispatch(c, t);
- }
-
- return c;
- },
-
- createControl : function(name) {
- var ctrl, i, l, self = this, editor = self.editor, factories, ctrlName;
-
- // Build control factory cache
- if (!self.controlFactories) {
- self.controlFactories = [];
- each(editor.plugins, function(plugin) {
- if (plugin.createControl) {
- self.controlFactories.push(plugin);
- }
- });
- }
-
- // Create controls by asking cached factories
- factories = self.controlFactories;
- for (i = 0, l = factories.length; i < l; i++) {
- ctrl = factories[i].createControl(name, self);
-
- if (ctrl) {
- return self.add(ctrl);
- }
- }
-
- // Create sepearator
- if (name === "|" || name === "separator") {
- return self.createSeparator();
- }
-
- // Create control from button collection
- if (editor.buttons && (ctrl = editor.buttons[name])) {
- return self.createButton(name, ctrl);
- }
-
- return self.add(ctrl);
- },
-
- createDropMenu : function(id, s, cc) {
- var t = this, ed = t.editor, c, bm, v, cls;
-
- s = extend({
- 'class' : 'mceDropDown',
- constrain : ed.settings.constrain_menus
- }, s);
-
- s['class'] = s['class'] + ' ' + ed.getParam('skin') + 'Skin';
- if (v = ed.getParam('skin_variant'))
- s['class'] += ' ' + ed.getParam('skin') + 'Skin' + v.substring(0, 1).toUpperCase() + v.substring(1);
-
- s['class'] += ed.settings.directionality == "rtl" ? ' mceRtl' : '';
-
- id = t.prefix + id;
- cls = cc || t._cls.dropmenu || tinymce.ui.DropMenu;
- c = t.controls[id] = new cls(id, s);
- c.onAddItem.add(function(c, o) {
- var s = o.settings;
-
- s.title = ed.getLang(s.title, s.title);
-
- if (!s.onclick) {
- s.onclick = function(v) {
- if (s.cmd)
- ed.execCommand(s.cmd, s.ui || false, s.value);
- };
- }
- });
-
- ed.onRemove.add(function() {
- c.destroy();
- });
-
- // Fix for bug #1897785, #1898007
- if (tinymce.isIE) {
- c.onShowMenu.add(function() {
- // IE 8 needs focus in order to store away a range with the current collapsed caret location
- ed.focus();
-
- bm = ed.selection.getBookmark(1);
- });
-
- c.onHideMenu.add(function() {
- if (bm) {
- ed.selection.moveToBookmark(bm);
- bm = 0;
- }
- });
- }
-
- return t.add(c);
- },
-
- createListBox : function(id, s, cc) {
- var t = this, ed = t.editor, cmd, c, cls;
-
- if (t.get(id))
- return null;
-
- s.title = ed.translate(s.title);
- s.scope = s.scope || ed;
-
- if (!s.onselect) {
- s.onselect = function(v) {
- ed.execCommand(s.cmd, s.ui || false, v || s.value);
- };
- }
-
- s = extend({
- title : s.title,
- 'class' : 'mce_' + id,
- scope : s.scope,
- control_manager : t
- }, s);
-
- id = t.prefix + id;
-
-
- function useNativeListForAccessibility(ed) {
- return ed.settings.use_accessible_selects && !tinymce.isGecko
- }
-
- if (ed.settings.use_native_selects || useNativeListForAccessibility(ed))
- c = new tinymce.ui.NativeListBox(id, s);
- else {
- cls = cc || t._cls.listbox || tinymce.ui.ListBox;
- c = new cls(id, s, ed);
- }
-
- t.controls[id] = c;
-
- // Fix focus problem in Safari
- if (tinymce.isWebKit) {
- c.onPostRender.add(function(c, n) {
- // Store bookmark on mousedown
- Event.add(n, 'mousedown', function() {
- ed.bookmark = ed.selection.getBookmark(1);
- });
-
- // Restore on focus, since it might be lost
- Event.add(n, 'focus', function() {
- ed.selection.moveToBookmark(ed.bookmark);
- ed.bookmark = null;
- });
- });
- }
-
- if (c.hideMenu)
- ed.onMouseDown.add(c.hideMenu, c);
-
- return t.add(c);
- },
-
- createButton : function(id, s, cc) {
- var t = this, ed = t.editor, o, c, cls;
-
- if (t.get(id))
- return null;
-
- s.title = ed.translate(s.title);
- s.label = ed.translate(s.label);
- s.scope = s.scope || ed;
-
- if (!s.onclick && !s.menu_button) {
- s.onclick = function() {
- ed.execCommand(s.cmd, s.ui || false, s.value);
- };
- }
-
- s = extend({
- title : s.title,
- 'class' : 'mce_' + id,
- unavailable_prefix : ed.getLang('unavailable', ''),
- scope : s.scope,
- control_manager : t
- }, s);
-
- id = t.prefix + id;
-
- if (s.menu_button) {
- cls = cc || t._cls.menubutton || tinymce.ui.MenuButton;
- c = new cls(id, s, ed);
- ed.onMouseDown.add(c.hideMenu, c);
- } else {
- cls = t._cls.button || tinymce.ui.Button;
- c = new cls(id, s, ed);
- }
-
- return t.add(c);
- },
-
- createMenuButton : function(id, s, cc) {
- s = s || {};
- s.menu_button = 1;
-
- return this.createButton(id, s, cc);
- },
-
- createSplitButton : function(id, s, cc) {
- var t = this, ed = t.editor, cmd, c, cls;
-
- if (t.get(id))
- return null;
-
- s.title = ed.translate(s.title);
- s.scope = s.scope || ed;
-
- if (!s.onclick) {
- s.onclick = function(v) {
- ed.execCommand(s.cmd, s.ui || false, v || s.value);
- };
- }
-
- if (!s.onselect) {
- s.onselect = function(v) {
- ed.execCommand(s.cmd, s.ui || false, v || s.value);
- };
- }
-
- s = extend({
- title : s.title,
- 'class' : 'mce_' + id,
- scope : s.scope,
- control_manager : t
- }, s);
-
- id = t.prefix + id;
- cls = cc || t._cls.splitbutton || tinymce.ui.SplitButton;
- c = t.add(new cls(id, s, ed));
- ed.onMouseDown.add(c.hideMenu, c);
-
- return c;
- },
-
- createColorSplitButton : function(id, s, cc) {
- var t = this, ed = t.editor, cmd, c, cls, bm;
-
- if (t.get(id))
- return null;
-
- s.title = ed.translate(s.title);
- s.scope = s.scope || ed;
-
- if (!s.onclick) {
- s.onclick = function(v) {
- if (tinymce.isIE)
- bm = ed.selection.getBookmark(1);
-
- ed.execCommand(s.cmd, s.ui || false, v || s.value);
- };
- }
-
- if (!s.onselect) {
- s.onselect = function(v) {
- ed.execCommand(s.cmd, s.ui || false, v || s.value);
- };
- }
-
- s = extend({
- title : s.title,
- 'class' : 'mce_' + id,
- 'menu_class' : ed.getParam('skin') + 'Skin',
- scope : s.scope,
- more_colors_title : ed.getLang('more_colors')
- }, s);
-
- id = t.prefix + id;
- cls = cc || t._cls.colorsplitbutton || tinymce.ui.ColorSplitButton;
- c = new cls(id, s, ed);
- ed.onMouseDown.add(c.hideMenu, c);
-
- // Remove the menu element when the editor is removed
- ed.onRemove.add(function() {
- c.destroy();
- });
-
- // Fix for bug #1897785, #1898007
- if (tinymce.isIE) {
- c.onShowMenu.add(function() {
- // IE 8 needs focus in order to store away a range with the current collapsed caret location
- ed.focus();
- bm = ed.selection.getBookmark(1);
- });
-
- c.onHideMenu.add(function() {
- if (bm) {
- ed.selection.moveToBookmark(bm);
- bm = 0;
- }
- });
- }
-
- return t.add(c);
- },
-
- createToolbar : function(id, s, cc) {
- var c, t = this, cls;
-
- id = t.prefix + id;
- cls = cc || t._cls.toolbar || tinymce.ui.Toolbar;
- c = new cls(id, s, t.editor);
-
- if (t.get(id))
- return null;
-
- return t.add(c);
- },
-
- createToolbarGroup : function(id, s, cc) {
- var c, t = this, cls;
- id = t.prefix + id;
- cls = cc || this._cls.toolbarGroup || tinymce.ui.ToolbarGroup;
- c = new cls(id, s, t.editor);
-
- if (t.get(id))
- return null;
-
- return t.add(c);
- },
-
- createSeparator : function(cc) {
- var cls = cc || this._cls.separator || tinymce.ui.Separator;
-
- return new cls();
- },
-
- setControlType : function(n, c) {
- return this._cls[n.toLowerCase()] = c;
- },
-
- destroy : function() {
- each(this.controls, function(c) {
- c.destroy();
- });
-
- this.controls = null;
- }
- });
-})(tinymce);
-
-(function(tinymce) {
- var Dispatcher = tinymce.util.Dispatcher, each = tinymce.each, isIE = tinymce.isIE, isOpera = tinymce.isOpera;
-
- tinymce.create('tinymce.WindowManager', {
- WindowManager : function(ed) {
- var t = this;
-
- t.editor = ed;
- t.onOpen = new Dispatcher(t);
- t.onClose = new Dispatcher(t);
- t.params = {};
- t.features = {};
- },
-
- open : function(s, p) {
- var t = this, f = '', x, y, mo = t.editor.settings.dialog_type == 'modal', w, sw, sh, vp = tinymce.DOM.getViewPort(), u;
-
- // Default some options
- s = s || {};
- p = p || {};
- sw = isOpera ? vp.w : screen.width; // Opera uses windows inside the Opera window
- sh = isOpera ? vp.h : screen.height;
- s.name = s.name || 'mc_' + new Date().getTime();
- s.width = parseInt(s.width || 320);
- s.height = parseInt(s.height || 240);
- s.resizable = true;
- s.left = s.left || parseInt(sw / 2.0) - (s.width / 2.0);
- s.top = s.top || parseInt(sh / 2.0) - (s.height / 2.0);
- p.inline = false;
- p.mce_width = s.width;
- p.mce_height = s.height;
- p.mce_auto_focus = s.auto_focus;
-
- if (mo) {
- if (isIE) {
- s.center = true;
- s.help = false;
- s.dialogWidth = s.width + 'px';
- s.dialogHeight = s.height + 'px';
- s.scroll = s.scrollbars || false;
- }
- }
-
- // Build features string
- each(s, function(v, k) {
- if (tinymce.is(v, 'boolean'))
- v = v ? 'yes' : 'no';
-
- if (!/^(name|url)$/.test(k)) {
- if (isIE && mo)
- f += (f ? ';' : '') + k + ':' + v;
- else
- f += (f ? ',' : '') + k + '=' + v;
- }
- });
-
- t.features = s;
- t.params = p;
- t.onOpen.dispatch(t, s, p);
-
- u = s.url || s.file;
- u = tinymce._addVer(u);
-
- try {
- if (isIE && mo) {
- w = 1;
- window.showModalDialog(u, window, f);
- } else
- w = window.open(u, s.name, f);
- } catch (ex) {
- // Ignore
- }
-
- if (!w)
- alert(t.editor.getLang('popup_blocked'));
- },
-
- close : function(w) {
- w.close();
- this.onClose.dispatch(this);
- },
-
- createInstance : function(cl, a, b, c, d, e) {
- var f = tinymce.resolve(cl);
-
- return new f(a, b, c, d, e);
- },
-
- confirm : function(t, cb, s, w) {
- w = w || window;
-
- cb.call(s || this, w.confirm(this._decode(this.editor.getLang(t, t))));
- },
-
- alert : function(tx, cb, s, w) {
- var t = this;
-
- w = w || window;
- w.alert(t._decode(t.editor.getLang(tx, tx)));
-
- if (cb)
- cb.call(s || t);
- },
-
- resizeBy : function(dw, dh, win) {
- win.resizeBy(dw, dh);
- },
-
- // Internal functions
-
- _decode : function(s) {
- return tinymce.DOM.decode(s).replace(/\\n/g, '\n');
- }
- });
-}(tinymce));
-(function(tinymce) {
- tinymce.Formatter = function(ed) {
- var formats = {},
- each = tinymce.each,
- dom = ed.dom,
- selection = ed.selection,
- TreeWalker = tinymce.dom.TreeWalker,
- rangeUtils = new tinymce.dom.RangeUtils(dom),
- isValid = ed.schema.isValidChild,
- isArray = tinymce.isArray,
- isBlock = dom.isBlock,
- forcedRootBlock = ed.settings.forced_root_block,
- nodeIndex = dom.nodeIndex,
- INVISIBLE_CHAR = '\uFEFF',
- MCE_ATTR_RE = /^(src|href|style)$/,
- FALSE = false,
- TRUE = true,
- formatChangeData,
- undef,
- getContentEditable = dom.getContentEditable;
-
- function isTextBlock(name) {
- if (name.nodeType) {
- name = name.nodeName;
- }
-
- return !!ed.schema.getTextBlockElements()[name.toLowerCase()];
- }
-
- function getParents(node, selector) {
- return dom.getParents(node, selector, dom.getRoot());
- };
-
- function isCaretNode(node) {
- return node.nodeType === 1 && node.id === '_mce_caret';
- };
-
- function defaultFormats() {
- register({
- alignleft : [
- {selector : 'figure,p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'left'}, defaultBlock: 'div'},
- {selector : 'img,table', collapsed : false, styles : {'float' : 'left'}}
- ],
-
- aligncenter : [
- {selector : 'figure,p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'center'}, defaultBlock: 'div'},
- {selector : 'img', collapsed : false, styles : {display : 'block', marginLeft : 'auto', marginRight : 'auto'}},
- {selector : 'table', collapsed : false, styles : {marginLeft : 'auto', marginRight : 'auto'}}
- ],
-
- alignright : [
- {selector : 'figure,p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'right'}, defaultBlock: 'div'},
- {selector : 'img,table', collapsed : false, styles : {'float' : 'right'}}
- ],
-
- alignfull : [
- {selector : 'figure,p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'justify'}, defaultBlock: 'div'}
- ],
-
- bold : [
- {inline : 'strong', remove : 'all'},
- {inline : 'span', styles : {fontWeight : 'bold'}},
- {inline : 'b', remove : 'all'}
- ],
-
- italic : [
- {inline : 'em', remove : 'all'},
- {inline : 'span', styles : {fontStyle : 'italic'}},
- {inline : 'i', remove : 'all'}
- ],
-
- underline : [
- {inline : 'span', styles : {textDecoration : 'underline'}, exact : true},
- {inline : 'u', remove : 'all'}
- ],
-
- strikethrough : [
- {inline : 'span', styles : {textDecoration : 'line-through'}, exact : true},
- {inline : 'strike', remove : 'all'}
- ],
-
- forecolor : {inline : 'span', styles : {color : '%value'}, wrap_links : false},
- hilitecolor : {inline : 'span', styles : {backgroundColor : '%value'}, wrap_links : false},
- fontname : {inline : 'span', styles : {fontFamily : '%value'}},
- fontsize : {inline : 'span', styles : {fontSize : '%value'}},
- fontsize_class : {inline : 'span', attributes : {'class' : '%value'}},
- blockquote : {block : 'blockquote', wrapper : 1, remove : 'all'},
- subscript : {inline : 'sub'},
- superscript : {inline : 'sup'},
-
- link : {inline : 'a', selector : 'a', remove : 'all', split : true, deep : true,
- onmatch : function(node) {
- return true;
- },
-
- onformat : function(elm, fmt, vars) {
- each(vars, function(value, key) {
- dom.setAttrib(elm, key, value);
- });
- }
- },
-
- removeformat : [
- {selector : 'b,strong,em,i,font,u,strike', remove : 'all', split : true, expand : false, block_expand : true, deep : true},
- {selector : 'span', attributes : ['style', 'class'], remove : 'empty', split : true, expand : false, deep : true},
- {selector : '*', attributes : ['style', 'class'], split : false, expand : false, deep : true}
- ]
- });
-
- // Register default block formats
- each('p h1 h2 h3 h4 h5 h6 div address pre div code dt dd samp'.split(/\s/), function(name) {
- register(name, {block : name, remove : 'all'});
- });
-
- // Register user defined formats
- register(ed.settings.formats);
- };
-
- function addKeyboardShortcuts() {
- // Add some inline shortcuts
- ed.addShortcut('ctrl+b', 'bold_desc', 'Bold');
- ed.addShortcut('ctrl+i', 'italic_desc', 'Italic');
- ed.addShortcut('ctrl+u', 'underline_desc', 'Underline');
-
- // BlockFormat shortcuts keys
- for (var i = 1; i <= 6; i++) {
- ed.addShortcut('ctrl+' + i, '', ['FormatBlock', false, 'h' + i]);
- }
-
- ed.addShortcut('ctrl+7', '', ['FormatBlock', false, 'p']);
- ed.addShortcut('ctrl+8', '', ['FormatBlock', false, 'div']);
- ed.addShortcut('ctrl+9', '', ['FormatBlock', false, 'address']);
- };
-
- // Public functions
-
- function get(name) {
- return name ? formats[name] : formats;
- };
-
- function register(name, format) {
- if (name) {
- if (typeof(name) !== 'string') {
- each(name, function(format, name) {
- register(name, format);
- });
- } else {
- // Force format into array and add it to internal collection
- format = format.length ? format : [format];
-
- each(format, function(format) {
- // Set deep to false by default on selector formats this to avoid removing
- // alignment on images inside paragraphs when alignment is changed on paragraphs
- if (format.deep === undef)
- format.deep = !format.selector;
-
- // Default to true
- if (format.split === undef)
- format.split = !format.selector || format.inline;
-
- // Default to true
- if (format.remove === undef && format.selector && !format.inline)
- format.remove = 'none';
-
- // Mark format as a mixed format inline + block level
- if (format.selector && format.inline) {
- format.mixed = true;
- format.block_expand = true;
- }
-
- // Split classes if needed
- if (typeof(format.classes) === 'string')
- format.classes = format.classes.split(/\s+/);
- });
-
- formats[name] = format;
- }
- }
- };
-
- var getTextDecoration = function(node) {
- var decoration;
-
- ed.dom.getParent(node, function(n) {
- decoration = ed.dom.getStyle(n, 'text-decoration');
- return decoration && decoration !== 'none';
- });
-
- return decoration;
- };
-
- var processUnderlineAndColor = function(node) {
- var textDecoration;
- if (node.nodeType === 1 && node.parentNode && node.parentNode.nodeType === 1) {
- textDecoration = getTextDecoration(node.parentNode);
- if (ed.dom.getStyle(node, 'color') && textDecoration) {
- ed.dom.setStyle(node, 'text-decoration', textDecoration);
- } else if (ed.dom.getStyle(node, 'textdecoration') === textDecoration) {
- ed.dom.setStyle(node, 'text-decoration', null);
- }
- }
- };
-
- function apply(name, vars, node) {
- var formatList = get(name), format = formatList[0], bookmark, rng, i, isCollapsed = selection.isCollapsed();
-
- function setElementFormat(elm, fmt) {
- fmt = fmt || format;
-
- if (elm) {
- if (fmt.onformat) {
- fmt.onformat(elm, fmt, vars, node);
- }
-
- each(fmt.styles, function(value, name) {
- dom.setStyle(elm, name, replaceVars(value, vars));
- });
-
- each(fmt.attributes, function(value, name) {
- dom.setAttrib(elm, name, replaceVars(value, vars));
- });
-
- each(fmt.classes, function(value) {
- value = replaceVars(value, vars);
-
- if (!dom.hasClass(elm, value))
- dom.addClass(elm, value);
- });
- }
- };
- function adjustSelectionToVisibleSelection() {
- function findSelectionEnd(start, end) {
- var walker = new TreeWalker(end);
- for (node = walker.current(); node; node = walker.prev()) {
- if (node.childNodes.length > 1 || node == start || node.tagName == 'BR') {
- return node;
- }
- }
- };
-
- // Adjust selection so that a end container with a end offset of zero is not included in the selection
- // as this isn't visible to the user.
- var rng = ed.selection.getRng();
- var start = rng.startContainer;
- var end = rng.endContainer;
-
- if (start != end && rng.endOffset === 0) {
- var newEnd = findSelectionEnd(start, end);
- var endOffset = newEnd.nodeType == 3 ? newEnd.length : newEnd.childNodes.length;
-
- rng.setEnd(newEnd, endOffset);
- }
-
- return rng;
- }
-
- function applyStyleToList(node, bookmark, wrapElm, newWrappers, process){
- var nodes = [], listIndex = -1, list, startIndex = -1, endIndex = -1, currentWrapElm;
-
- // find the index of the first child list.
- each(node.childNodes, function(n, index) {
- if (n.nodeName === "UL" || n.nodeName === "OL") {
- listIndex = index;
- list = n;
- return false;
- }
- });
-
- // get the index of the bookmarks
- each(node.childNodes, function(n, index) {
- if (n.nodeName === "SPAN" && dom.getAttrib(n, "data-mce-type") == "bookmark") {
- if (n.id == bookmark.id + "_start") {
- startIndex = index;
- } else if (n.id == bookmark.id + "_end") {
- endIndex = index;
- }
- }
- });
-
- // if the selection spans across an embedded list, or there isn't an embedded list - handle processing normally
- if (listIndex <= 0 || (startIndex < listIndex && endIndex > listIndex)) {
- each(tinymce.grep(node.childNodes), process);
- return 0;
- } else {
- currentWrapElm = dom.clone(wrapElm, FALSE);
-
- // create a list of the nodes on the same side of the list as the selection
- each(tinymce.grep(node.childNodes), function(n, index) {
- if ((startIndex < listIndex && index < listIndex) || (startIndex > listIndex && index > listIndex)) {
- nodes.push(n);
- n.parentNode.removeChild(n);
- }
- });
-
- // insert the wrapping element either before or after the list.
- if (startIndex < listIndex) {
- node.insertBefore(currentWrapElm, list);
- } else if (startIndex > listIndex) {
- node.insertBefore(currentWrapElm, list.nextSibling);
- }
-
- // add the new nodes to the list.
- newWrappers.push(currentWrapElm);
-
- each(nodes, function(node) {
- currentWrapElm.appendChild(node);
- });
-
- return currentWrapElm;
- }
- };
-
- function applyRngStyle(rng, bookmark, node_specific) {
- var newWrappers = [], wrapName, wrapElm, contentEditable = true;
-
- // Setup wrapper element
- wrapName = format.inline || format.block;
- wrapElm = dom.create(wrapName);
- setElementFormat(wrapElm);
-
- rangeUtils.walk(rng, function(nodes) {
- var currentWrapElm;
-
- function process(node) {
- var nodeName, parentName, found, hasContentEditableState, lastContentEditable;
-
- lastContentEditable = contentEditable;
- nodeName = node.nodeName.toLowerCase();
- parentName = node.parentNode.nodeName.toLowerCase();
-
- // Node has a contentEditable value
- if (node.nodeType === 1 && getContentEditable(node)) {
- lastContentEditable = contentEditable;
- contentEditable = getContentEditable(node) === "true";
- hasContentEditableState = true; // We don't want to wrap the container only it's children
- }
-
- // Stop wrapping on br elements
- if (isEq(nodeName, 'br')) {
- currentWrapElm = 0;
-
- // Remove any br elements when we wrap things
- if (format.block)
- dom.remove(node);
-
- return;
- }
-
- // If node is wrapper type
- if (format.wrapper && matchNode(node, name, vars)) {
- currentWrapElm = 0;
- return;
- }
-
- // Can we rename the block
- if (contentEditable && !hasContentEditableState && format.block && !format.wrapper && isTextBlock(nodeName)) {
- node = dom.rename(node, wrapName);
- setElementFormat(node);
- newWrappers.push(node);
- currentWrapElm = 0;
- return;
- }
-
- // Handle selector patterns
- if (format.selector) {
- // Look for matching formats
- each(formatList, function(format) {
- // Check collapsed state if it exists
- if ('collapsed' in format && format.collapsed !== isCollapsed) {
- return;
- }
-
- if (dom.is(node, format.selector) && !isCaretNode(node)) {
- setElementFormat(node, format);
- found = true;
- }
- });
-
- // Continue processing if a selector match wasn't found and a inline element is defined
- if (!format.inline || found) {
- currentWrapElm = 0;
- return;
- }
- }
-
- // Is it valid to wrap this item
- if (contentEditable && !hasContentEditableState && isValid(wrapName, nodeName) && isValid(parentName, wrapName) &&
- !(!node_specific && node.nodeType === 3 && node.nodeValue.length === 1 && node.nodeValue.charCodeAt(0) === 65279) && !isCaretNode(node) && (!format.inline || !isBlock(node))) {
- // Start wrapping
- if (!currentWrapElm) {
- // Wrap the node
- currentWrapElm = dom.clone(wrapElm, FALSE);
- node.parentNode.insertBefore(currentWrapElm, node);
- newWrappers.push(currentWrapElm);
- }
-
- currentWrapElm.appendChild(node);
- } else if (nodeName == 'li' && bookmark) {
- // Start wrapping - if we are in a list node and have a bookmark, then we will always begin by wrapping in a new element.
- currentWrapElm = applyStyleToList(node, bookmark, wrapElm, newWrappers, process);
- } else {
- // Start a new wrapper for possible children
- currentWrapElm = 0;
-
- each(tinymce.grep(node.childNodes), process);
-
- if (hasContentEditableState) {
- contentEditable = lastContentEditable; // Restore last contentEditable state from stack
- }
-
- // End the last wrapper
- currentWrapElm = 0;
- }
- };
-
- // Process siblings from range
- each(nodes, process);
- });
-
- // Wrap links inside as well, for example color inside a link when the wrapper is around the link
- if (format.wrap_links === false) {
- each(newWrappers, function(node) {
- function process(node) {
- var i, currentWrapElm, children;
-
- if (node.nodeName === 'A') {
- currentWrapElm = dom.clone(wrapElm, FALSE);
- newWrappers.push(currentWrapElm);
-
- children = tinymce.grep(node.childNodes);
- for (i = 0; i < children.length; i++)
- currentWrapElm.appendChild(children[i]);
-
- node.appendChild(currentWrapElm);
- }
-
- each(tinymce.grep(node.childNodes), process);
- };
-
- process(node);
- });
- }
-
- // Cleanup
-
- each(newWrappers, function(node) {
- var childCount;
-
- function getChildCount(node) {
- var count = 0;
-
- each(node.childNodes, function(node) {
- if (!isWhiteSpaceNode(node) && !isBookmarkNode(node))
- count++;
- });
-
- return count;
- };
-
- function mergeStyles(node) {
- var child, clone;
-
- each(node.childNodes, function(node) {
- if (node.nodeType == 1 && !isBookmarkNode(node) && !isCaretNode(node)) {
- child = node;
- return FALSE; // break loop
- }
- });
-
- // If child was found and of the same type as the current node
- if (child && matchName(child, format)) {
- clone = dom.clone(child, FALSE);
- setElementFormat(clone);
-
- dom.replace(clone, node, TRUE);
- dom.remove(child, 1);
- }
-
- return clone || node;
- };
-
- childCount = getChildCount(node);
-
- // Remove empty nodes but only if there is multiple wrappers and they are not block
- // elements so never remove single <h1></h1> since that would remove the currrent empty block element where the caret is at
- if ((newWrappers.length > 1 || !isBlock(node)) && childCount === 0) {
- dom.remove(node, 1);
- return;
- }
-
- if (format.inline || format.wrapper) {
- // Merges the current node with it's children of similar type to reduce the number of elements
- if (!format.exact && childCount === 1)
- node = mergeStyles(node);
-
- // Remove/merge children
- each(formatList, function(format) {
- // Merge all children of similar type will move styles from child to parent
- // this: <span style="color:red"><b><span style="color:red; font-size:10px">text</span></b></span>
- // will become: <span style="color:red"><b><span style="font-size:10px">text</span></b></span>
- each(dom.select(format.inline, node), function(child) {
- var parent;
-
- // When wrap_links is set to false we don't want
- // to remove the format on children within links
- if (format.wrap_links === false) {
- parent = child.parentNode;
-
- do {
- if (parent.nodeName === 'A')
- return;
- } while (parent = parent.parentNode);
- }
-
- removeFormat(format, vars, child, format.exact ? child : null);
- });
- });
-
- // Remove child if direct parent is of same type
- if (matchNode(node.parentNode, name, vars)) {
- dom.remove(node, 1);
- node = 0;
- return TRUE;
- }
-
- // Look for parent with similar style format
- if (format.merge_with_parents) {
- dom.getParent(node.parentNode, function(parent) {
- if (matchNode(parent, name, vars)) {
- dom.remove(node, 1);
- node = 0;
- return TRUE;
- }
- });
- }
-
- // Merge next and previous siblings if they are similar <b>text</b><b>text</b> becomes <b>texttext</b>
- if (node && format.merge_siblings !== false) {
- node = mergeSiblings(getNonWhiteSpaceSibling(node), node);
- node = mergeSiblings(node, getNonWhiteSpaceSibling(node, TRUE));
- }
- }
- });
- };
-
- if (format) {
- if (node) {
- if (node.nodeType) {
- rng = dom.createRng();
- rng.setStartBefore(node);
- rng.setEndAfter(node);
- applyRngStyle(expandRng(rng, formatList), null, true);
- } else {
- applyRngStyle(node, null, true);
- }
- } else {
- if (!isCollapsed || !format.inline || dom.select('td.mceSelected,th.mceSelected').length) {
- // Obtain selection node before selection is unselected by applyRngStyle()
- var curSelNode = ed.selection.getNode();
-
- // If the formats have a default block and we can't find a parent block then start wrapping it with a DIV this is for forced_root_blocks: false
- // It's kind of a hack but people should be using the default block type P since all desktop editors work that way
- if (!forcedRootBlock && formatList[0].defaultBlock && !dom.getParent(curSelNode, dom.isBlock)) {
- apply(formatList[0].defaultBlock);
- }
-
- // Apply formatting to selection
- ed.selection.setRng(adjustSelectionToVisibleSelection());
- bookmark = selection.getBookmark();
- applyRngStyle(expandRng(selection.getRng(TRUE), formatList), bookmark);
-
- // Colored nodes should be underlined so that the color of the underline matches the text color.
- if (format.styles && (format.styles.color || format.styles.textDecoration)) {
- tinymce.walk(curSelNode, processUnderlineAndColor, 'childNodes');
- processUnderlineAndColor(curSelNode);
- }
-
- selection.moveToBookmark(bookmark);
- moveStart(selection.getRng(TRUE));
- ed.nodeChanged();
- } else
- performCaretAction('apply', name, vars);
- }
- }
- };
-
- function remove(name, vars, node) {
- var formatList = get(name), format = formatList[0], bookmark, i, rng, contentEditable = true;
-
- // Merges the styles for each node
- function process(node) {
- var children, i, l, localContentEditable, lastContentEditable, hasContentEditableState;
-
- // Skip on text nodes as they have neither format to remove nor children
- if (node.nodeType === 3) {
- return;
- }
-
- // Node has a contentEditable value
- if (node.nodeType === 1 && getContentEditable(node)) {
- lastContentEditable = contentEditable;
- contentEditable = getContentEditable(node) === "true";
- hasContentEditableState = true; // We don't want to wrap the container only it's children
- }
-
- // Grab the children first since the nodelist might be changed
- children = tinymce.grep(node.childNodes);
-
- // Process current node
- if (contentEditable && !hasContentEditableState) {
- for (i = 0, l = formatList.length; i < l; i++) {
- if (removeFormat(formatList[i], vars, node, node))
- break;
- }
- }
-
- // Process the children
- if (format.deep) {
- if (children.length) {
- for (i = 0, l = children.length; i < l; i++)
- process(children[i]);
-
- if (hasContentEditableState) {
- contentEditable = lastContentEditable; // Restore last contentEditable state from stack
- }
- }
- }
- };
-
- function findFormatRoot(container) {
- var formatRoot;
-
- // Find format root
- each(getParents(container.parentNode).reverse(), function(parent) {
- var format;
-
- // Find format root element
- if (!formatRoot && parent.id != '_start' && parent.id != '_end') {
- // Is the node matching the format we are looking for
- format = matchNode(parent, name, vars);
- if (format && format.split !== false)
- formatRoot = parent;
- }
- });
-
- return formatRoot;
- };
-
- function wrapAndSplit(format_root, container, target, split) {
- var parent, clone, lastClone, firstClone, i, formatRootParent;
-
- // Format root found then clone formats and split it
- if (format_root) {
- formatRootParent = format_root.parentNode;
-
- for (parent = container.parentNode; parent && parent != formatRootParent; parent = parent.parentNode) {
- clone = dom.clone(parent, FALSE);
-
- for (i = 0; i < formatList.length; i++) {
- if (removeFormat(formatList[i], vars, clone, clone)) {
- clone = 0;
- break;
- }
- }
-
- // Build wrapper node
- if (clone) {
- if (lastClone)
- clone.appendChild(lastClone);
-
- if (!firstClone)
- firstClone = clone;
-
- lastClone = clone;
- }
- }
-
- // Never split block elements if the format is mixed
- if (split && (!format.mixed || !isBlock(format_root)))
- container = dom.split(format_root, container);
-
- // Wrap container in cloned formats
- if (lastClone) {
- target.parentNode.insertBefore(lastClone, target);
- firstClone.appendChild(target);
- }
- }
-
- return container;
- };
-
- function splitToFormatRoot(container) {
- return wrapAndSplit(findFormatRoot(container), container, container, true);
- };
-
- function unwrap(start) {
- var node = dom.get(start ? '_start' : '_end'),
- out = node[start ? 'firstChild' : 'lastChild'];
-
- // If the end is placed within the start the result will be removed
- // So this checks if the out node is a bookmark node if it is it
- // checks for another more suitable node
- if (isBookmarkNode(out))
- out = out[start ? 'firstChild' : 'lastChild'];
-
- dom.remove(node, true);
-
- return out;
- };
-
- function removeRngStyle(rng) {
- var startContainer, endContainer, node;
-
- rng = expandRng(rng, formatList, TRUE);
-
- if (format.split) {
- startContainer = getContainer(rng, TRUE);
- endContainer = getContainer(rng);
-
- if (startContainer != endContainer) {
- // WebKit will render the table incorrectly if we wrap a TD in a SPAN so lets see if the can use the first child instead
- // This will happen if you tripple click a table cell and use remove formatting
- if (/^(TR|TD)$/.test(startContainer.nodeName) && startContainer.firstChild) {
- startContainer = (startContainer.nodeName == "TD" ? startContainer.firstChild : startContainer.firstChild.firstChild) || startContainer;
- }
-
- // Wrap start/end nodes in span element since these might be cloned/moved
- startContainer = wrap(startContainer, 'span', {id : '_start', 'data-mce-type' : 'bookmark'});
- endContainer = wrap(endContainer, 'span', {id : '_end', 'data-mce-type' : 'bookmark'});
-
- // Split start/end
- splitToFormatRoot(startContainer);
- splitToFormatRoot(endContainer);
-
- // Unwrap start/end to get real elements again
- startContainer = unwrap(TRUE);
- endContainer = unwrap();
- } else
- startContainer = endContainer = splitToFormatRoot(startContainer);
-
- // Update range positions since they might have changed after the split operations
- rng.startContainer = startContainer.parentNode;
- rng.startOffset = nodeIndex(startContainer);
- rng.endContainer = endContainer.parentNode;
- rng.endOffset = nodeIndex(endContainer) + 1;
- }
-
- // Remove items between start/end
- rangeUtils.walk(rng, function(nodes) {
- each(nodes, function(node) {
- process(node);
-
- // Remove parent span if it only contains text-decoration: underline, yet a parent node is also underlined.
- if (node.nodeType === 1 && ed.dom.getStyle(node, 'text-decoration') === 'underline' && node.parentNode && getTextDecoration(node.parentNode) === 'underline') {
- removeFormat({'deep': false, 'exact': true, 'inline': 'span', 'styles': {'textDecoration' : 'underline'}}, null, node);
- }
- });
- });
- };
-
- // Handle node
- if (node) {
- if (node.nodeType) {
- rng = dom.createRng();
- rng.setStartBefore(node);
- rng.setEndAfter(node);
- removeRngStyle(rng);
- } else {
- removeRngStyle(node);
- }
-
- return;
- }
-
- if (!selection.isCollapsed() || !format.inline || dom.select('td.mceSelected,th.mceSelected').length) {
- bookmark = selection.getBookmark();
- removeRngStyle(selection.getRng(TRUE));
- selection.moveToBookmark(bookmark);
-
- // Check if start element still has formatting then we are at: "<b>text|</b>text" and need to move the start into the next text node
- if (format.inline && match(name, vars, selection.getStart())) {
- moveStart(selection.getRng(true));
- }
-
- ed.nodeChanged();
- } else
- performCaretAction('remove', name, vars);
- };
-
- function toggle(name, vars, node) {
- var fmt = get(name);
-
- if (match(name, vars, node) && (!('toggle' in fmt[0]) || fmt[0].toggle))
- remove(name, vars, node);
- else
- apply(name, vars, node);
- };
-
- function matchNode(node, name, vars, similar) {
- var formatList = get(name), format, i, classes;
-
- function matchItems(node, format, item_name) {
- var key, value, items = format[item_name], i;
-
- // Custom match
- if (format.onmatch) {
- return format.onmatch(node, format, item_name);
- }
-
- // Check all items
- if (items) {
- // Non indexed object
- if (items.length === undef) {
- for (key in items) {
- if (items.hasOwnProperty(key)) {
- if (item_name === 'attributes')
- value = dom.getAttrib(node, key);
- else
- value = getStyle(node, key);
-
- if (similar && !value && !format.exact)
- return;
-
- if ((!similar || format.exact) && !isEq(value, replaceVars(items[key], vars)))
- return;
- }
- }
- } else {
- // Only one match needed for indexed arrays
- for (i = 0; i < items.length; i++) {
- if (item_name === 'attributes' ? dom.getAttrib(node, items[i]) : getStyle(node, items[i]))
- return format;
- }
- }
- }
-
- return format;
- };
-
- if (formatList && node) {
- // Check each format in list
- for (i = 0; i < formatList.length; i++) {
- format = formatList[i];
-
- // Name name, attributes, styles and classes
- if (matchName(node, format) && matchItems(node, format, 'attributes') && matchItems(node, format, 'styles')) {
- // Match classes
- if (classes = format.classes) {
- for (i = 0; i < classes.length; i++) {
- if (!dom.hasClass(node, classes[i]))
- return;
- }
- }
-
- return format;
- }
- }
- }
- };
-
- function match(name, vars, node) {
- var startNode;
-
- function matchParents(node) {
- // Find first node with similar format settings
- node = dom.getParent(node, function(node) {
- return !!matchNode(node, name, vars, true);
- });
-
- // Do an exact check on the similar format element
- return matchNode(node, name, vars);
- };
-
- // Check specified node
- if (node)
- return matchParents(node);
-
- // Check selected node
- node = selection.getNode();
- if (matchParents(node))
- return TRUE;
-
- // Check start node if it's different
- startNode = selection.getStart();
- if (startNode != node) {
- if (matchParents(startNode))
- return TRUE;
- }
-
- return FALSE;
- };
-
- function matchAll(names, vars) {
- var startElement, matchedFormatNames = [], checkedMap = {}, i, ni, name;
-
- // Check start of selection for formats
- startElement = selection.getStart();
- dom.getParent(startElement, function(node) {
- var i, name;
-
- for (i = 0; i < names.length; i++) {
- name = names[i];
-
- if (!checkedMap[name] && matchNode(node, name, vars)) {
- checkedMap[name] = true;
- matchedFormatNames.push(name);
- }
- }
- }, dom.getRoot());
-
- return matchedFormatNames;
- };
-
- function canApply(name) {
- var formatList = get(name), startNode, parents, i, x, selector;
-
- if (formatList) {
- startNode = selection.getStart();
- parents = getParents(startNode);
-
- for (x = formatList.length - 1; x >= 0; x--) {
- selector = formatList[x].selector;
-
- // Format is not selector based, then always return TRUE
- if (!selector)
- return TRUE;
-
- for (i = parents.length - 1; i >= 0; i--) {
- if (dom.is(parents[i], selector))
- return TRUE;
- }
- }
- }
-
- return FALSE;
- };
-
- function formatChanged(formats, callback, similar) {
- var currentFormats;
-
- // Setup format node change logic
- if (!formatChangeData) {
- formatChangeData = {};
- currentFormats = {};
-
- ed.onNodeChange.addToTop(function(ed, cm, node) {
- var parents = getParents(node), matchedFormats = {};
-
- // Check for new formats
- each(formatChangeData, function(callbacks, format) {
- each(parents, function(node) {
- if (matchNode(node, format, {}, callbacks.similar)) {
- if (!currentFormats[format]) {
- // Execute callbacks
- each(callbacks, function(callback) {
- callback(true, {node: node, format: format, parents: parents});
- });
-
- currentFormats[format] = callbacks;
- }
-
- matchedFormats[format] = callbacks;
- return false;
- }
- });
- });
-
- // Check if current formats still match
- each(currentFormats, function(callbacks, format) {
- if (!matchedFormats[format]) {
- delete currentFormats[format];
-
- each(callbacks, function(callback) {
- callback(false, {node: node, format: format, parents: parents});
- });
- }
- });
- });
- }
-
- // Add format listeners
- each(formats.split(','), function(format) {
- if (!formatChangeData[format]) {
- formatChangeData[format] = [];
- formatChangeData[format].similar = similar;
- }
-
- formatChangeData[format].push(callback);
- });
-
- return this;
- };
-
- // Expose to public
- tinymce.extend(this, {
- get : get,
- register : register,
- apply : apply,
- remove : remove,
- toggle : toggle,
- match : match,
- matchAll : matchAll,
- matchNode : matchNode,
- canApply : canApply,
- formatChanged: formatChanged
- });
-
- // Initialize
- defaultFormats();
- addKeyboardShortcuts();
-
- // Private functions
-
- function matchName(node, format) {
- // Check for inline match
- if (isEq(node, format.inline))
- return TRUE;
-
- // Check for block match
- if (isEq(node, format.block))
- return TRUE;
-
- // Check for selector match
- if (format.selector)
- return dom.is(node, format.selector);
- };
-
- function isEq(str1, str2) {
- str1 = str1 || '';
- str2 = str2 || '';
-
- str1 = '' + (str1.nodeName || str1);
- str2 = '' + (str2.nodeName || str2);
-
- return str1.toLowerCase() == str2.toLowerCase();
- };
-
- function getStyle(node, name) {
- var styleVal = dom.getStyle(node, name);
-
- // Force the format to hex
- if (name == 'color' || name == 'backgroundColor')
- styleVal = dom.toHex(styleVal);
-
- // Opera will return bold as 700
- if (name == 'fontWeight' && styleVal == 700)
- styleVal = 'bold';
-
- return '' + styleVal;
- };
-
- function replaceVars(value, vars) {
- if (typeof(value) != "string")
- value = value(vars);
- else if (vars) {
- value = value.replace(/%(\w+)/g, function(str, name) {
- return vars[name] || str;
- });
- }
-
- return value;
- };
-
- function isWhiteSpaceNode(node) {
- return node && node.nodeType === 3 && /^([\t \r\n]+|)$/.test(node.nodeValue);
- };
-
- function wrap(node, name, attrs) {
- var wrapper = dom.create(name, attrs);
-
- node.parentNode.insertBefore(wrapper, node);
- wrapper.appendChild(node);
-
- return wrapper;
- };
-
- function expandRng(rng, format, remove) {
- var sibling, lastIdx, leaf, endPoint,
- startContainer = rng.startContainer,
- startOffset = rng.startOffset,
- endContainer = rng.endContainer,
- endOffset = rng.endOffset;
-
- // This function walks up the tree if there is no siblings before/after the node
- function findParentContainer(start) {
- var container, parent, child, sibling, siblingName, root;
-
- container = parent = start ? startContainer : endContainer;
- siblingName = start ? 'previousSibling' : 'nextSibling';
- root = dom.getRoot();
-
- function isBogusBr(node) {
- return node.nodeName == "BR" && node.getAttribute('data-mce-bogus') && !node.nextSibling;
- };
-
- // If it's a text node and the offset is inside the text
- if (container.nodeType == 3 && !isWhiteSpaceNode(container)) {
- if (start ? startOffset > 0 : endOffset < container.nodeValue.length) {
- return container;
- }
- }
-
- for (;;) {
- // Stop expanding on block elements
- if (!format[0].block_expand && isBlock(parent))
- return parent;
-
- // Walk left/right
- for (sibling = parent[siblingName]; sibling; sibling = sibling[siblingName]) {
- if (!isBookmarkNode(sibling) && !isWhiteSpaceNode(sibling) && !isBogusBr(sibling)) {
- return parent;
- }
- }
-
- // Check if we can move up are we at root level or body level
- if (parent.parentNode == root) {
- container = parent;
- break;
- }
-
- parent = parent.parentNode;
- }
-
- return container;
- };
-
- // This function walks down the tree to find the leaf at the selection.
- // The offset is also returned as if node initially a leaf, the offset may be in the middle of the text node.
- function findLeaf(node, offset) {
- if (offset === undef)
- offset = node.nodeType === 3 ? node.length : node.childNodes.length;
- while (node && node.hasChildNodes()) {
- node = node.childNodes[offset];
- if (node)
- offset = node.nodeType === 3 ? node.length : node.childNodes.length;
- }
- return { node: node, offset: offset };
- }
-
- // If index based start position then resolve it
- if (startContainer.nodeType == 1 && startContainer.hasChildNodes()) {
- lastIdx = startContainer.childNodes.length - 1;
- startContainer = startContainer.childNodes[startOffset > lastIdx ? lastIdx : startOffset];
-
- if (startContainer.nodeType == 3)
- startOffset = 0;
- }
-
- // If index based end position then resolve it
- if (endContainer.nodeType == 1 && endContainer.hasChildNodes()) {
- lastIdx = endContainer.childNodes.length - 1;
- endContainer = endContainer.childNodes[endOffset > lastIdx ? lastIdx : endOffset - 1];
-
- if (endContainer.nodeType == 3)
- endOffset = endContainer.nodeValue.length;
- }
-
- // Expands the node to the closes contentEditable false element if it exists
- function findParentContentEditable(node) {
- var parent = node;
-
- while (parent) {
- if (parent.nodeType === 1 && getContentEditable(parent)) {
- return getContentEditable(parent) === "false" ? parent : node;
- }
-
- parent = parent.parentNode;
- }
-
- return node;
- };
-
- function findWordEndPoint(container, offset, start) {
- var walker, node, pos, lastTextNode;
-
- function findSpace(node, offset) {
- var pos, pos2, str = node.nodeValue;
-
- if (typeof(offset) == "undefined") {
- offset = start ? str.length : 0;
- }
-
- if (start) {
- pos = str.lastIndexOf(' ', offset);
- pos2 = str.lastIndexOf('\u00a0', offset);
- pos = pos > pos2 ? pos : pos2;
-
- // Include the space on remove to avoid tag soup
- if (pos !== -1 && !remove) {
- pos++;
- }
- } else {
- pos = str.indexOf(' ', offset);
- pos2 = str.indexOf('\u00a0', offset);
- pos = pos !== -1 && (pos2 === -1 || pos < pos2) ? pos : pos2;
- }
-
- return pos;
- };
-
- if (container.nodeType === 3) {
- pos = findSpace(container, offset);
-
- if (pos !== -1) {
- return {container : container, offset : pos};
- }
-
- lastTextNode = container;
- }
-
- // Walk the nodes inside the block
- walker = new TreeWalker(container, dom.getParent(container, isBlock) || ed.getBody());
- while (node = walker[start ? 'prev' : 'next']()) {
- if (node.nodeType === 3) {
- lastTextNode = node;
- pos = findSpace(node);
-
- if (pos !== -1) {
- return {container : node, offset : pos};
- }
- } else if (isBlock(node)) {
- break;
- }
- }
-
- if (lastTextNode) {
- if (start) {
- offset = 0;
- } else {
- offset = lastTextNode.length;
- }
-
- return {container: lastTextNode, offset: offset};
- }
- };
-
- function findSelectorEndPoint(container, sibling_name) {
- var parents, i, y, curFormat;
-
- if (container.nodeType == 3 && container.nodeValue.length === 0 && container[sibling_name])
- container = container[sibling_name];
-
- parents = getParents(container);
- for (i = 0; i < parents.length; i++) {
- for (y = 0; y < format.length; y++) {
- curFormat = format[y];
-
- // If collapsed state is set then skip formats that doesn't match that
- if ("collapsed" in curFormat && curFormat.collapsed !== rng.collapsed)
- continue;
-
- if (dom.is(parents[i], curFormat.selector))
- return parents[i];
- }
- }
-
- return container;
- };
-
- function findBlockEndPoint(container, sibling_name, sibling_name2) {
- var node;
-
- // Expand to block of similar type
- if (!format[0].wrapper)
- node = dom.getParent(container, format[0].block);
-
- // Expand to first wrappable block element or any block element
- if (!node)
- node = dom.getParent(container.nodeType == 3 ? container.parentNode : container, isTextBlock);
-
- // Exclude inner lists from wrapping
- if (node && format[0].wrapper)
- node = getParents(node, 'ul,ol').reverse()[0] || node;
-
- // Didn't find a block element look for first/last wrappable element
- if (!node) {
- node = container;
-
- while (node[sibling_name] && !isBlock(node[sibling_name])) {
- node = node[sibling_name];
-
- // Break on BR but include it will be removed later on
- // we can't remove it now since we need to check if it can be wrapped
- if (isEq(node, 'br'))
- break;
- }
- }
-
- return node || container;
- };
-
- // Expand to closest contentEditable element
- startContainer = findParentContentEditable(startContainer);
- endContainer = findParentContentEditable(endContainer);
-
- // Exclude bookmark nodes if possible
- if (isBookmarkNode(startContainer.parentNode) || isBookmarkNode(startContainer)) {
- startContainer = isBookmarkNode(startContainer) ? startContainer : startContainer.parentNode;
- startContainer = startContainer.nextSibling || startContainer;
-
- if (startContainer.nodeType == 3)
- startOffset = 0;
- }
-
- if (isBookmarkNode(endContainer.parentNode) || isBookmarkNode(endContainer)) {
- endContainer = isBookmarkNode(endContainer) ? endContainer : endContainer.parentNode;
- endContainer = endContainer.previousSibling || endContainer;
-
- if (endContainer.nodeType == 3)
- endOffset = endContainer.length;
- }
-
- if (format[0].inline) {
- if (rng.collapsed) {
- // Expand left to closest word boundery
- endPoint = findWordEndPoint(startContainer, startOffset, true);
- if (endPoint) {
- startContainer = endPoint.container;
- startOffset = endPoint.offset;
- }
-
- // Expand right to closest word boundery
- endPoint = findWordEndPoint(endContainer, endOffset);
- if (endPoint) {
- endContainer = endPoint.container;
- endOffset = endPoint.offset;
- }
- }
-
- // Avoid applying formatting to a trailing space.
- leaf = findLeaf(endContainer, endOffset);
- if (leaf.node) {
- while (leaf.node && leaf.offset === 0 && leaf.node.previousSibling)
- leaf = findLeaf(leaf.node.previousSibling);
-
- if (leaf.node && leaf.offset > 0 && leaf.node.nodeType === 3 &&
- leaf.node.nodeValue.charAt(leaf.offset - 1) === ' ') {
-
- if (leaf.offset > 1) {
- endContainer = leaf.node;
- endContainer.splitText(leaf.offset - 1);
- }
- }
- }
- }
-
- // Move start/end point up the tree if the leaves are sharp and if we are in different containers
- // Example * becomes !: !<p><b><i>*text</i><i>text*</i></b></p>!
- // This will reduce the number of wrapper elements that needs to be created
- // Move start point up the tree
- if (format[0].inline || format[0].block_expand) {
- if (!format[0].inline || (startContainer.nodeType != 3 || startOffset === 0)) {
- startContainer = findParentContainer(true);
- }
-
- if (!format[0].inline || (endContainer.nodeType != 3 || endOffset === endContainer.nodeValue.length)) {
- endContainer = findParentContainer();
- }
- }
-
- // Expand start/end container to matching selector
- if (format[0].selector && format[0].expand !== FALSE && !format[0].inline) {
- // Find new startContainer/endContainer if there is better one
- startContainer = findSelectorEndPoint(startContainer, 'previousSibling');
- endContainer = findSelectorEndPoint(endContainer, 'nextSibling');
- }
-
- // Expand start/end container to matching block element or text node
- if (format[0].block || format[0].selector) {
- // Find new startContainer/endContainer if there is better one
- startContainer = findBlockEndPoint(startContainer, 'previousSibling');
- endContainer = findBlockEndPoint(endContainer, 'nextSibling');
-
- // Non block element then try to expand up the leaf
- if (format[0].block) {
- if (!isBlock(startContainer))
- startContainer = findParentContainer(true);
-
- if (!isBlock(endContainer))
- endContainer = findParentContainer();
- }
- }
-
- // Setup index for startContainer
- if (startContainer.nodeType == 1) {
- startOffset = nodeIndex(startContainer);
- startContainer = startContainer.parentNode;
- }
-
- // Setup index for endContainer
- if (endContainer.nodeType == 1) {
- endOffset = nodeIndex(endContainer) + 1;
- endContainer = endContainer.parentNode;
- }
-
- // Return new range like object
- return {
- startContainer : startContainer,
- startOffset : startOffset,
- endContainer : endContainer,
- endOffset : endOffset
- };
- }
-
- function removeFormat(format, vars, node, compare_node) {
- var i, attrs, stylesModified;
-
- // Check if node matches format
- if (!matchName(node, format))
- return FALSE;
-
- // Should we compare with format attribs and styles
- if (format.remove != 'all') {
- // Remove styles
- each(format.styles, function(value, name) {
- value = replaceVars(value, vars);
-
- // Indexed array
- if (typeof(name) === 'number') {
- name = value;
- compare_node = 0;
- }
-
- if (!compare_node || isEq(getStyle(compare_node, name), value))
- dom.setStyle(node, name, '');
-
- stylesModified = 1;
- });
-
- // Remove style attribute if it's empty
- if (stylesModified && dom.getAttrib(node, 'style') == '') {
- node.removeAttribute('style');
- node.removeAttribute('data-mce-style');
- }
-
- // Remove attributes
- each(format.attributes, function(value, name) {
- var valueOut;
-
- value = replaceVars(value, vars);
-
- // Indexed array
- if (typeof(name) === 'number') {
- name = value;
- compare_node = 0;
- }
-
- if (!compare_node || isEq(dom.getAttrib(compare_node, name), value)) {
- // Keep internal classes
- if (name == 'class') {
- value = dom.getAttrib(node, name);
- if (value) {
- // Build new class value where everything is removed except the internal prefixed classes
- valueOut = '';
- each(value.split(/\s+/), function(cls) {
- if (/mce\w+/.test(cls))
- valueOut += (valueOut ? ' ' : '') + cls;
- });
-
- // We got some internal classes left
- if (valueOut) {
- dom.setAttrib(node, name, valueOut);
- return;
- }
- }
- }
-
- // IE6 has a bug where the attribute doesn't get removed correctly
- if (name == "class")
- node.removeAttribute('className');
-
- // Remove mce prefixed attributes
- if (MCE_ATTR_RE.test(name))
- node.removeAttribute('data-mce-' + name);
-
- node.removeAttribute(name);
- }
- });
-
- // Remove classes
- each(format.classes, function(value) {
- value = replaceVars(value, vars);
-
- if (!compare_node || dom.hasClass(compare_node, value))
- dom.removeClass(node, value);
- });
-
- // Check for non internal attributes
- attrs = dom.getAttribs(node);
- for (i = 0; i < attrs.length; i++) {
- if (attrs[i].nodeName.indexOf('_') !== 0)
- return FALSE;
- }
- }
-
- // Remove the inline child if it's empty for example <b> or <span>
- if (format.remove != 'none') {
- removeNode(node, format);
- return TRUE;
- }
- };
-
- function removeNode(node, format) {
- var parentNode = node.parentNode, rootBlockElm;
-
- function find(node, next, inc) {
- node = getNonWhiteSpaceSibling(node, next, inc);
-
- return !node || (node.nodeName == 'BR' || isBlock(node));
- };
-
- if (format.block) {
- if (!forcedRootBlock) {
- // Append BR elements if needed before we remove the block
- if (isBlock(node) && !isBlock(parentNode)) {
- if (!find(node, FALSE) && !find(node.firstChild, TRUE, 1))
- node.insertBefore(dom.create('br'), node.firstChild);
-
- if (!find(node, TRUE) && !find(node.lastChild, FALSE, 1))
- node.appendChild(dom.create('br'));
- }
- } else {
- // Wrap the block in a forcedRootBlock if we are at the root of document
- if (parentNode == dom.getRoot()) {
- if (!format.list_block || !isEq(node, format.list_block)) {
- each(tinymce.grep(node.childNodes), function(node) {
- if (isValid(forcedRootBlock, node.nodeName.toLowerCase())) {
- if (!rootBlockElm)
- rootBlockElm = wrap(node, forcedRootBlock);
- else
- rootBlockElm.appendChild(node);
- } else
- rootBlockElm = 0;
- });
- }
- }
- }
- }
-
- // Never remove nodes that isn't the specified inline element if a selector is specified too
- if (format.selector && format.inline && !isEq(format.inline, node))
- return;
-
- dom.remove(node, 1);
- };
-
- function getNonWhiteSpaceSibling(node, next, inc) {
- if (node) {
- next = next ? 'nextSibling' : 'previousSibling';
-
- for (node = inc ? node : node[next]; node; node = node[next]) {
- if (node.nodeType == 1 || !isWhiteSpaceNode(node))
- return node;
- }
- }
- };
-
- function isBookmarkNode(node) {
- return node && node.nodeType == 1 && node.getAttribute('data-mce-type') == 'bookmark';
- };
-
- function mergeSiblings(prev, next) {
- var marker, sibling, tmpSibling;
-
- function compareElements(node1, node2) {
- // Not the same name
- if (node1.nodeName != node2.nodeName)
- return FALSE;
-
- function getAttribs(node) {
- var attribs = {};
-
- each(dom.getAttribs(node), function(attr) {
- var name = attr.nodeName.toLowerCase();
-
- // Don't compare internal attributes or style
- if (name.indexOf('_') !== 0 && name !== 'style')
- attribs[name] = dom.getAttrib(node, name);
- });
-
- return attribs;
- };
-
- function compareObjects(obj1, obj2) {
- var value, name;
-
- for (name in obj1) {
- // Obj1 has item obj2 doesn't have
- if (obj1.hasOwnProperty(name)) {
- value = obj2[name];
-
- // Obj2 doesn't have obj1 item
- if (value === undef)
- return FALSE;
-
- // Obj2 item has a different value
- if (obj1[name] != value)
- return FALSE;
-
- // Delete similar value
- delete obj2[name];
- }
- }
-
- // Check if obj 2 has something obj 1 doesn't have
- for (name in obj2) {
- // Obj2 has item obj1 doesn't have
- if (obj2.hasOwnProperty(name))
- return FALSE;
- }
-
- return TRUE;
- };
-
- // Attribs are not the same
- if (!compareObjects(getAttribs(node1), getAttribs(node2)))
- return FALSE;
-
- // Styles are not the same
- if (!compareObjects(dom.parseStyle(dom.getAttrib(node1, 'style')), dom.parseStyle(dom.getAttrib(node2, 'style'))))
- return FALSE;
-
- return TRUE;
- };
-
- function findElementSibling(node, sibling_name) {
- for (sibling = node; sibling; sibling = sibling[sibling_name]) {
- if (sibling.nodeType == 3 && sibling.nodeValue.length !== 0)
- return node;
-
- if (sibling.nodeType == 1 && !isBookmarkNode(sibling))
- return sibling;
- }
-
- return node;
- };
-
- // Check if next/prev exists and that they are elements
- if (prev && next) {
- // If previous sibling is empty then jump over it
- prev = findElementSibling(prev, 'previousSibling');
- next = findElementSibling(next, 'nextSibling');
-
- // Compare next and previous nodes
- if (compareElements(prev, next)) {
- // Append nodes between
- for (sibling = prev.nextSibling; sibling && sibling != next;) {
- tmpSibling = sibling;
- sibling = sibling.nextSibling;
- prev.appendChild(tmpSibling);
- }
-
- // Remove next node
- dom.remove(next);
-
- // Move children into prev node
- each(tinymce.grep(next.childNodes), function(node) {
- prev.appendChild(node);
- });
-
- return prev;
- }
- }
-
- return next;
- };
-
- function getContainer(rng, start) {
- var container, offset, lastIdx, walker;
-
- container = rng[start ? 'startContainer' : 'endContainer'];
- offset = rng[start ? 'startOffset' : 'endOffset'];
-
- if (container.nodeType == 1) {
- lastIdx = container.childNodes.length - 1;
-
- if (!start && offset)
- offset--;
-
- container = container.childNodes[offset > lastIdx ? lastIdx : offset];
- }
-
- // If start text node is excluded then walk to the next node
- if (container.nodeType === 3 && start && offset >= container.nodeValue.length) {
- container = new TreeWalker(container, ed.getBody()).next() || container;
- }
-
- // If end text node is excluded then walk to the previous node
- if (container.nodeType === 3 && !start && offset === 0) {
- container = new TreeWalker(container, ed.getBody()).prev() || container;
- }
-
- return container;
- };
-
- function performCaretAction(type, name, vars) {
- var caretContainerId = '_mce_caret', debug = ed.settings.caret_debug;
-
- // Creates a caret container bogus element
- function createCaretContainer(fill) {
- var caretContainer = dom.create('span', {id: caretContainerId, 'data-mce-bogus': true, style: debug ? 'color:red' : ''});
-
- if (fill) {
- caretContainer.appendChild(ed.getDoc().createTextNode(INVISIBLE_CHAR));
- }
-
- return caretContainer;
- };
-
- function isCaretContainerEmpty(node, nodes) {
- while (node) {
- if ((node.nodeType === 3 && node.nodeValue !== INVISIBLE_CHAR) || node.childNodes.length > 1) {
- return false;
- }
-
- // Collect nodes
- if (nodes && node.nodeType === 1) {
- nodes.push(node);
- }
-
- node = node.firstChild;
- }
-
- return true;
- };
-
- // Returns any parent caret container element
- function getParentCaretContainer(node) {
- while (node) {
- if (node.id === caretContainerId) {
- return node;
- }
-
- node = node.parentNode;
- }
- };
-
- // Finds the first text node in the specified node
- function findFirstTextNode(node) {
- var walker;
-
- if (node) {
- walker = new TreeWalker(node, node);
-
- for (node = walker.current(); node; node = walker.next()) {
- if (node.nodeType === 3) {
- return node;
- }
- }
- }
- };
-
- // Removes the caret container for the specified node or all on the current document
- function removeCaretContainer(node, move_caret) {
- var child, rng;
-
- if (!node) {
- node = getParentCaretContainer(selection.getStart());
-
- if (!node) {
- while (node = dom.get(caretContainerId)) {
- removeCaretContainer(node, false);
- }
- }
- } else {
- rng = selection.getRng(true);
-
- if (isCaretContainerEmpty(node)) {
- if (move_caret !== false) {
- rng.setStartBefore(node);
- rng.setEndBefore(node);
- }
-
- dom.remove(node);
- } else {
- child = findFirstTextNode(node);
-
- if (child.nodeValue.charAt(0) === INVISIBLE_CHAR) {
- child = child.deleteData(0, 1);
- }
-
- dom.remove(node, 1);
- }
-
- selection.setRng(rng);
- }
- };
-
- // Applies formatting to the caret postion
- function applyCaretFormat() {
- var rng, caretContainer, textNode, offset, bookmark, container, text;
-
- rng = selection.getRng(true);
- offset = rng.startOffset;
- container = rng.startContainer;
- text = container.nodeValue;
-
- caretContainer = getParentCaretContainer(selection.getStart());
- if (caretContainer) {
- textNode = findFirstTextNode(caretContainer);
- }
-
- // Expand to word is caret is in the middle of a text node and the char before/after is a alpha numeric character
- if (text && offset > 0 && offset < text.length && /\w/.test(text.charAt(offset)) && /\w/.test(text.charAt(offset - 1))) {
- // Get bookmark of caret position
- bookmark = selection.getBookmark();
-
- // Collapse bookmark range (WebKit)
- rng.collapse(true);
-
- // Expand the range to the closest word and split it at those points
- rng = expandRng(rng, get(name));
- rng = rangeUtils.split(rng);
-
- // Apply the format to the range
- apply(name, vars, rng);
-
- // Move selection back to caret position
- selection.moveToBookmark(bookmark);
- } else {
- if (!caretContainer || textNode.nodeValue !== INVISIBLE_CHAR) {
- caretContainer = createCaretContainer(true);
- textNode = caretContainer.firstChild;
-
- rng.insertNode(caretContainer);
- offset = 1;
-
- apply(name, vars, caretContainer);
- } else {
- apply(name, vars, caretContainer);
- }
-
- // Move selection to text node
- selection.setCursorLocation(textNode, offset);
- }
- };
-
- function removeCaretFormat() {
- var rng = selection.getRng(true), container, offset, bookmark,
- hasContentAfter, node, formatNode, parents = [], i, caretContainer;
-
- container = rng.startContainer;
- offset = rng.startOffset;
- node = container;
-
- if (container.nodeType == 3) {
- if (offset != container.nodeValue.length || container.nodeValue === INVISIBLE_CHAR) {
- hasContentAfter = true;
- }
-
- node = node.parentNode;
- }
-
- while (node) {
- if (matchNode(node, name, vars)) {
- formatNode = node;
- break;
- }
-
- if (node.nextSibling) {
- hasContentAfter = true;
- }
-
- parents.push(node);
- node = node.parentNode;
- }
-
- // Node doesn't have the specified format
- if (!formatNode) {
- return;
- }
-
- // Is there contents after the caret then remove the format on the element
- if (hasContentAfter) {
- // Get bookmark of caret position
- bookmark = selection.getBookmark();
-
- // Collapse bookmark range (WebKit)
- rng.collapse(true);
-
- // Expand the range to the closest word and split it at those points
- rng = expandRng(rng, get(name), true);
- rng = rangeUtils.split(rng);
-
- // Remove the format from the range
- remove(name, vars, rng);
-
- // Move selection back to caret position
- selection.moveToBookmark(bookmark);
- } else {
- caretContainer = createCaretContainer();
-
- node = caretContainer;
- for (i = parents.length - 1; i >= 0; i--) {
- node.appendChild(dom.clone(parents[i], false));
- node = node.firstChild;
- }
-
- // Insert invisible character into inner most format element
- node.appendChild(dom.doc.createTextNode(INVISIBLE_CHAR));
- node = node.firstChild;
-
- var block = dom.getParent(formatNode, isTextBlock);
-
- if (block && dom.isEmpty(block)) {
- // Replace formatNode with caretContainer when removing format from empty block like <p><b>|</b></p>
- formatNode.parentNode.replaceChild(caretContainer, formatNode);
- } else {
- // Insert caret container after the formated node
- dom.insertAfter(caretContainer, formatNode);
- }
-
- // Move selection to text node
- selection.setCursorLocation(node, 1);
-
- // If the formatNode is empty, we can remove it safely.
- if (dom.isEmpty(formatNode)) {
- dom.remove(formatNode);
- }
- }
- };
-
- // Checks if the parent caret container node isn't empty if that is the case it
- // will remove the bogus state on all children that isn't empty
- function unmarkBogusCaretParents() {
- var i, caretContainer, node;
-
- caretContainer = getParentCaretContainer(selection.getStart());
- if (caretContainer && !dom.isEmpty(caretContainer)) {
- tinymce.walk(caretContainer, function(node) {
- if (node.nodeType == 1 && node.id !== caretContainerId && !dom.isEmpty(node)) {
- dom.setAttrib(node, 'data-mce-bogus', null);
- }
- }, 'childNodes');
- }
- };
-
- // Only bind the caret events once
- if (!self._hasCaretEvents) {
- // Mark current caret container elements as bogus when getting the contents so we don't end up with empty elements
- ed.onBeforeGetContent.addToTop(function() {
- var nodes = [], i;
-
- if (isCaretContainerEmpty(getParentCaretContainer(selection.getStart()), nodes)) {
- // Mark children
- i = nodes.length;
- while (i--) {
- dom.setAttrib(nodes[i], 'data-mce-bogus', '1');
- }
- }
- });
-
- // Remove caret container on mouse up and on key up
- tinymce.each('onMouseUp onKeyUp'.split(' '), function(name) {
- ed[name].addToTop(function() {
- removeCaretContainer();
- unmarkBogusCaretParents();
- });
- });
-
- // Remove caret container on keydown and it's a backspace, enter or left/right arrow keys
- ed.onKeyDown.addToTop(function(ed, e) {
- var keyCode = e.keyCode;
-
- if (keyCode == 8 || keyCode == 37 || keyCode == 39) {
- removeCaretContainer(getParentCaretContainer(selection.getStart()));
- }
-
- unmarkBogusCaretParents();
- });
-
- // Remove bogus state if they got filled by contents using editor.selection.setContent
- selection.onSetContent.add(unmarkBogusCaretParents);
-
- self._hasCaretEvents = true;
- }
-
- // Do apply or remove caret format
- if (type == "apply") {
- applyCaretFormat();
- } else {
- removeCaretFormat();
- }
- };
-
- function moveStart(rng) {
- var container = rng.startContainer,
- offset = rng.startOffset, isAtEndOfText,
- walker, node, nodes, tmpNode;
-
- // Convert text node into index if possible
- if (container.nodeType == 3 && offset >= container.nodeValue.length) {
- // Get the parent container location and walk from there
- offset = nodeIndex(container);
- container = container.parentNode;
- isAtEndOfText = true;
- }
-
- // Move startContainer/startOffset in to a suitable node
- if (container.nodeType == 1) {
- nodes = container.childNodes;
- container = nodes[Math.min(offset, nodes.length - 1)];
- walker = new TreeWalker(container, dom.getParent(container, dom.isBlock));
-
- // If offset is at end of the parent node walk to the next one
- if (offset > nodes.length - 1 || isAtEndOfText)
- walker.next();
-
- for (node = walker.current(); node; node = walker.next()) {
- if (node.nodeType == 3 && !isWhiteSpaceNode(node)) {
- // IE has a "neat" feature where it moves the start node into the closest element
- // we can avoid this by inserting an element before it and then remove it after we set the selection
- tmpNode = dom.create('a', null, INVISIBLE_CHAR);
- node.parentNode.insertBefore(tmpNode, node);
-
- // Set selection and remove tmpNode
- rng.setStart(node, 0);
- selection.setRng(rng);
- dom.remove(tmpNode);
-
- return;
- }
- }
- }
- };
- };
-})(tinymce);
-
-tinymce.onAddEditor.add(function(tinymce, ed) {
- var filters, fontSizes, dom, settings = ed.settings;
-
- function replaceWithSpan(node, styles) {
- tinymce.each(styles, function(value, name) {
- if (value)
- dom.setStyle(node, name, value);
- });
-
- dom.rename(node, 'span');
- };
-
- function convert(editor, params) {
- dom = editor.dom;
-
- if (settings.convert_fonts_to_spans) {
- tinymce.each(dom.select('font,u,strike', params.node), function(node) {
- filters[node.nodeName.toLowerCase()](ed.dom, node);
- });
- }
- };
-
- if (settings.inline_styles) {
- fontSizes = tinymce.explode(settings.font_size_legacy_values);
-
- filters = {
- font : function(dom, node) {
- replaceWithSpan(node, {
- backgroundColor : node.style.backgroundColor,
- color : node.color,
- fontFamily : node.face,
- fontSize : fontSizes[parseInt(node.size, 10) - 1]
- });
- },
-
- u : function(dom, node) {
- replaceWithSpan(node, {
- textDecoration : 'underline'
- });
- },
-
- strike : function(dom, node) {
- replaceWithSpan(node, {
- textDecoration : 'line-through'
- });
- }
- };
-
- ed.onPreProcess.add(convert);
- ed.onSetContent.add(convert);
-
- ed.onInit.add(function() {
- ed.selection.onSetContent.add(convert);
- });
- }
-});
-
-(function(tinymce) {
- var TreeWalker = tinymce.dom.TreeWalker;
-
- tinymce.EnterKey = function(editor) {
- var dom = editor.dom, selection = editor.selection, settings = editor.settings, undoManager = editor.undoManager, nonEmptyElementsMap = editor.schema.getNonEmptyElements();
-
- function handleEnterKey(evt) {
- var rng = selection.getRng(true), tmpRng, editableRoot, container, offset, parentBlock, documentMode, shiftKey,
- newBlock, fragment, containerBlock, parentBlockName, containerBlockName, newBlockName, isAfterLastNodeInContainer;
-
- // Returns true if the block can be split into two blocks or not
- function canSplitBlock(node) {
- return node &&
- dom.isBlock(node) &&
- !/^(TD|TH|CAPTION|FORM)$/.test(node.nodeName) &&
- !/^(fixed|absolute)/i.test(node.style.position) &&
- dom.getContentEditable(node) !== "true";
- };
-
- // Renders empty block on IE
- function renderBlockOnIE(block) {
- var oldRng;
-
- if (tinymce.isIE && !tinymce.isIE11 && dom.isBlock(block)) {
- oldRng = selection.getRng();
- block.appendChild(dom.create('span', null, '\u00a0'));
- selection.select(block);
- block.lastChild.outerHTML = '';
- selection.setRng(oldRng);
- }
- };
-
- // Remove the first empty inline element of the block so this: <p><b><em></em></b>x</p> becomes this: <p>x</p>
- function trimInlineElementsOnLeftSideOfBlock(block) {
- var node = block, firstChilds = [], i;
-
- // Find inner most first child ex: <p><i><b>*</b></i></p>
- while (node = node.firstChild) {
- if (dom.isBlock(node)) {
- return;
- }
-
- if (node.nodeType == 1 && !nonEmptyElementsMap[node.nodeName.toLowerCase()]) {
- firstChilds.push(node);
- }
- }
-
- i = firstChilds.length;
- while (i--) {
- node = firstChilds[i];
- if (!node.hasChildNodes() || (node.firstChild == node.lastChild && node.firstChild.nodeValue === '')) {
- dom.remove(node);
- } else {
- // Remove <a> </a> see #5381
- if (node.nodeName == "A" && (node.innerText || node.textContent) === ' ') {
- dom.remove(node);
- }
- }
- }
- };
-
- // Moves the caret to a suitable position within the root for example in the first non pure whitespace text node or before an image
- function moveToCaretPosition(root) {
- var walker, node, rng, y, viewPort, lastNode = root, tempElm;
-
- rng = dom.createRng();
-
- if (root.hasChildNodes()) {
- walker = new TreeWalker(root, root);
-
- while (node = walker.current()) {
- if (node.nodeType == 3) {
- rng.setStart(node, 0);
- rng.setEnd(node, 0);
- break;
- }
-
- if (nonEmptyElementsMap[node.nodeName.toLowerCase()]) {
- rng.setStartBefore(node);
- rng.setEndBefore(node);
- break;
- }
-
- lastNode = node;
- node = walker.next();
- }
-
- if (!node) {
- rng.setStart(lastNode, 0);
- rng.setEnd(lastNode, 0);
- }
- } else {
- if (root.nodeName == 'BR') {
- if (root.nextSibling && dom.isBlock(root.nextSibling)) {
- // Trick on older IE versions to render the caret before the BR between two lists
- if (!documentMode || documentMode < 9) {
- tempElm = dom.create('br');
- root.parentNode.insertBefore(tempElm, root);
- }
-
- rng.setStartBefore(root);
- rng.setEndBefore(root);
- } else {
- rng.setStartAfter(root);
- rng.setEndAfter(root);
- }
- } else {
- rng.setStart(root, 0);
- rng.setEnd(root, 0);
- }
- }
-
- selection.setRng(rng);
-
- // Remove tempElm created for old IE:s
- dom.remove(tempElm);
-
- viewPort = dom.getViewPort(editor.getWin());
-
- // scrollIntoView seems to scroll the parent window in most browsers now including FF 3.0b4 so it's time to stop using it and do it our selfs
- y = dom.getPos(root).y;
- if (y < viewPort.y || y + 25 > viewPort.y + viewPort.h) {
- editor.getWin().scrollTo(0, y < viewPort.y ? y : y - viewPort.h + 25); // Needs to be hardcoded to roughly one line of text if a huge text block is broken into two blocks
- }
- };
-
- // Creates a new block element by cloning the current one or creating a new one if the name is specified
- // This function will also copy any text formatting from the parent block and add it to the new one
- function createNewBlock(name) {
- var node = container, block, clonedNode, caretNode;
-
- block = name || parentBlockName == "TABLE" ? dom.create(name || newBlockName) : parentBlock.cloneNode(false);
- caretNode = block;
-
- // Clone any parent styles
- if (settings.keep_styles !== false) {
- do {
- if (/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(node.nodeName)) {
- // Never clone a caret containers
- if (node.id == '_mce_caret') {
- continue;
- }
-
- clonedNode = node.cloneNode(false);
- dom.setAttrib(clonedNode, 'id', ''); // Remove ID since it needs to be document unique
-
- if (block.hasChildNodes()) {
- clonedNode.appendChild(block.firstChild);
- block.appendChild(clonedNode);
- } else {
- caretNode = clonedNode;
- block.appendChild(clonedNode);
- }
- }
- } while (node = node.parentNode);
- }
-
- // BR is needed in empty blocks on non IE browsers
- if (!tinymce.isIE || tinymce.isIE11) {
- caretNode.innerHTML = '<br data-mce-bogus="1">';
- }
-
- return block;
- };
-
- // Returns true/false if the caret is at the start/end of the parent block element
- function isCaretAtStartOrEndOfBlock(start) {
- var walker, node, name;
-
- // Caret is in the middle of a text node like "a|b"
- if (container.nodeType == 3 && (start ? offset > 0 : offset < container.nodeValue.length)) {
- return false;
- }
-
- // If after the last element in block node edge case for #5091
- if (container.parentNode == parentBlock && isAfterLastNodeInContainer && !start) {
- return true;
- }
-
- // If the caret if before the first element in parentBlock
- if (start && container.nodeType == 1 && container == parentBlock.firstChild) {
- return true;
- }
-
- // Caret can be before/after a table
- if (container.nodeName === "TABLE" || (container.previousSibling && container.previousSibling.nodeName == "TABLE")) {
- return (isAfterLastNodeInContainer && !start) || (!isAfterLastNodeInContainer && start);
- }
-
- // Walk the DOM and look for text nodes or non empty elements
- walker = new TreeWalker(container, parentBlock);
-
- // If caret is in beginning or end of a text block then jump to the next/previous node
- if (container.nodeType == 3) {
- if (start && offset == 0) {
- walker.prev();
- } else if (!start && offset == container.nodeValue.length) {
- walker.next();
- }
- }
-
- while (node = walker.current()) {
- if (node.nodeType === 1) {
- // Ignore bogus elements
- if (!node.getAttribute('data-mce-bogus')) {
- // Keep empty elements like <img /> <input /> but not trailing br:s like <p>text|<br></p>
- name = node.nodeName.toLowerCase();
- if (nonEmptyElementsMap[name] && name !== 'br') {
- return false;
- }
- }
- } else if (node.nodeType === 3 && !/^[ \t\r\n]*$/.test(node.nodeValue)) {
- return false;
- }
-
- if (start) {
- walker.prev();
- } else {
- walker.next();
- }
- }
-
- return true;
- };
-
- // Wraps any text nodes or inline elements in the specified forced root block name
- function wrapSelfAndSiblingsInDefaultBlock(container, offset) {
- var newBlock, parentBlock, startNode, node, next, blockName = newBlockName || 'P';
-
- // Not in a block element or in a table cell or caption
- parentBlock = dom.getParent(container, dom.isBlock);
- if (!parentBlock || !canSplitBlock(parentBlock)) {
- parentBlock = parentBlock || editableRoot;
-
- if (!parentBlock.hasChildNodes()) {
- newBlock = dom.create(blockName);
- parentBlock.appendChild(newBlock);
- rng.setStart(newBlock, 0);
- rng.setEnd(newBlock, 0);
- return newBlock;
- }
-
- // Find parent that is the first child of parentBlock
- node = container;
- while (node.parentNode != parentBlock) {
- node = node.parentNode;
- }
-
- // Loop left to find start node start wrapping at
- while (node && !dom.isBlock(node)) {
- startNode = node;
- node = node.previousSibling;
- }
-
- if (startNode) {
- newBlock = dom.create(blockName);
- startNode.parentNode.insertBefore(newBlock, startNode);
-
- // Start wrapping until we hit a block
- node = startNode;
- while (node && !dom.isBlock(node)) {
- next = node.nextSibling;
- newBlock.appendChild(node);
- node = next;
- }
-
- // Restore range to it's past location
- rng.setStart(container, offset);
- rng.setEnd(container, offset);
- }
- }
-
- return container;
- };
-
- // Inserts a block or br before/after or in the middle of a split list of the LI is empty
- function handleEmptyListItem() {
- function isFirstOrLastLi(first) {
- var node = containerBlock[first ? 'firstChild' : 'lastChild'];
-
- // Find first/last element since there might be whitespace there
- while (node) {
- if (node.nodeType == 1) {
- break;
- }
-
- node = node[first ? 'nextSibling' : 'previousSibling'];
- }
-
- return node === parentBlock;
- };
-
- newBlock = newBlockName ? createNewBlock(newBlockName) : dom.create('BR');
-
- if (isFirstOrLastLi(true) && isFirstOrLastLi()) {
- // Is first and last list item then replace the OL/UL with a text block
- dom.replace(newBlock, containerBlock);
- } else if (isFirstOrLastLi(true)) {
- // First LI in list then remove LI and add text block before list
- containerBlock.parentNode.insertBefore(newBlock, containerBlock);
- } else if (isFirstOrLastLi()) {
- // Last LI in list then temove LI and add text block after list
- dom.insertAfter(newBlock, containerBlock);
- renderBlockOnIE(newBlock);
- } else {
- // Middle LI in list the split the list and insert a text block in the middle
- // Extract after fragment and insert it after the current block
- tmpRng = rng.cloneRange();
- tmpRng.setStartAfter(parentBlock);
- tmpRng.setEndAfter(containerBlock);
- fragment = tmpRng.extractContents();
- dom.insertAfter(fragment, containerBlock);
- dom.insertAfter(newBlock, containerBlock);
- }
-
- dom.remove(parentBlock);
- moveToCaretPosition(newBlock);
- undoManager.add();
- };
-
- // Walks the parent block to the right and look for any contents
- function hasRightSideContent() {
- var walker = new TreeWalker(container, parentBlock), node;
-
- while (node = walker.next()) {
- if (nonEmptyElementsMap[node.nodeName.toLowerCase()] || node.length > 0) {
- return true;
- }
- }
- }
-
- // Inserts a BR element if the forced_root_block option is set to false or empty string
- function insertBr() {
- var brElm, extraBr, marker;
-
- if (container && container.nodeType == 3 && offset >= container.nodeValue.length) {
- // Insert extra BR element at the end block elements
- if ((!tinymce.isIE || tinymce.isIE11) && !hasRightSideContent()) {
- brElm = dom.create('br');
- rng.insertNode(brElm);
- rng.setStartAfter(brElm);
- rng.setEndAfter(brElm);
- extraBr = true;
- }
- }
-
- brElm = dom.create('br');
- rng.insertNode(brElm);
-
- // Rendering modes below IE8 doesn't display BR elements in PRE unless we have a \n before it
- if ((tinymce.isIE && !tinymce.isIE11) && parentBlockName == 'PRE' && (!documentMode || documentMode < 8)) {
- brElm.parentNode.insertBefore(dom.doc.createTextNode('\r'), brElm);
- }
-
- // Insert temp marker and scroll to that
- marker = dom.create('span', {}, '&nbsp;');
- brElm.parentNode.insertBefore(marker, brElm);
- selection.scrollIntoView(marker);
- dom.remove(marker);
-
- if (!extraBr) {
- rng.setStartAfter(brElm);
- rng.setEndAfter(brElm);
- } else {
- rng.setStartBefore(brElm);
- rng.setEndBefore(brElm);
- }
-
- selection.setRng(rng);
- undoManager.add();
- };
-
- // Trims any linebreaks at the beginning of node user for example when pressing enter in a PRE element
- function trimLeadingLineBreaks(node) {
- do {
- if (node.nodeType === 3) {
- node.nodeValue = node.nodeValue.replace(/^[\r\n]+/, '');
- }
-
- node = node.firstChild;
- } while (node);
- };
-
- function getEditableRoot(node) {
- var root = dom.getRoot(), parent, editableRoot;
-
- // Get all parents until we hit a non editable parent or the root
- parent = node;
- while (parent !== root && dom.getContentEditable(parent) !== "false") {
- if (dom.getContentEditable(parent) === "true") {
- editableRoot = parent;
- }
-
- parent = parent.parentNode;
- }
-
- return parent !== root ? editableRoot : root;
- };
-
- // Adds a BR at the end of blocks that only contains an IMG or INPUT since these might be floated and then they won't expand the block
- function addBrToBlockIfNeeded(block) {
- var lastChild;
-
- // IE will render the blocks correctly other browsers needs a BR
- if (!tinymce.isIE || tinymce.isIE11) {
- block.normalize(); // Remove empty text nodes that got left behind by the extract
-
- // Check if the block is empty or contains a floated last child
- lastChild = block.lastChild;
- if (!lastChild || (/^(left|right)$/gi.test(dom.getStyle(lastChild, 'float', true)))) {
- dom.add(block, 'br');
- }
- }
- };
-
- // Delete any selected contents
- if (!rng.collapsed) {
- editor.execCommand('Delete');
- return;
- }
-
- // Event is blocked by some other handler for example the lists plugin
- if (evt.isDefaultPrevented()) {
- return;
- }
-
- // Setup range items and newBlockName
- container = rng.startContainer;
- offset = rng.startOffset;
- newBlockName = (settings.force_p_newlines ? 'p' : '') || settings.forced_root_block;
- newBlockName = newBlockName ? newBlockName.toUpperCase() : '';
- documentMode = dom.doc.documentMode;
- shiftKey = evt.shiftKey;
-
- // Resolve node index
- if (container.nodeType == 1 && container.hasChildNodes()) {
- isAfterLastNodeInContainer = offset > container.childNodes.length - 1;
- container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container;
- if (isAfterLastNodeInContainer && container.nodeType == 3) {
- offset = container.nodeValue.length;
- } else {
- offset = 0;
- }
- }
-
- // Get editable root node normaly the body element but sometimes a div or span
- editableRoot = getEditableRoot(container);
-
- // If there is no editable root then enter is done inside a contentEditable false element
- if (!editableRoot) {
- return;
- }
-
- undoManager.beforeChange();
-
- // If editable root isn't block nor the root of the editor
- if (!dom.isBlock(editableRoot) && editableRoot != dom.getRoot()) {
- if (!newBlockName || shiftKey) {
- insertBr();
- }
-
- return;
- }
-
- // Wrap the current node and it's sibling in a default block if it's needed.
- // for example this <td>text|<b>text2</b></td> will become this <td><p>text|<b>text2</p></b></td>
- // This won't happen if root blocks are disabled or the shiftKey is pressed
- if ((newBlockName && !shiftKey) || (!newBlockName && shiftKey)) {
- container = wrapSelfAndSiblingsInDefaultBlock(container, offset);
- }
-
- // Find parent block and setup empty block paddings
- parentBlock = dom.getParent(container, dom.isBlock);
- containerBlock = parentBlock ? dom.getParent(parentBlock.parentNode, dom.isBlock) : null;
-
- // Setup block names
- parentBlockName = parentBlock ? parentBlock.nodeName.toUpperCase() : ''; // IE < 9 & HTML5
- containerBlockName = containerBlock ? containerBlock.nodeName.toUpperCase() : ''; // IE < 9 & HTML5
-
- // Enter inside block contained within a LI then split or insert before/after LI
- if (containerBlockName == 'LI' && !evt.ctrlKey) {
- parentBlock = containerBlock;
- parentBlockName = containerBlockName;
- }
-
- // Handle enter in LI
- if (parentBlockName == 'LI') {
- if (!newBlockName && shiftKey) {
- insertBr();
- return;
- }
-
- // Handle enter inside an empty list item
- if (dom.isEmpty(parentBlock)) {
- // Let the list plugin or browser handle nested lists for now
- if (/^(UL|OL|LI)$/.test(containerBlock.parentNode.nodeName)) {
- return false;
- }
-
- handleEmptyListItem();
- return;
- }
- }
-
- // Don't split PRE tags but insert a BR instead easier when writing code samples etc
- if (parentBlockName == 'PRE' && settings.br_in_pre !== false) {
- if (!shiftKey) {
- insertBr();
- return;
- }
- } else {
- // If no root block is configured then insert a BR by default or if the shiftKey is pressed
- if ((!newBlockName && !shiftKey && parentBlockName != 'LI') || (newBlockName && shiftKey)) {
- insertBr();
- return;
- }
- }
-
- // Default block name if it's not configured
- newBlockName = newBlockName || 'P';
-
- // Insert new block before/after the parent block depending on caret location
- if (isCaretAtStartOrEndOfBlock()) {
- // If the caret is at the end of a header we produce a P tag after it similar to Word unless we are in a hgroup
- if (/^(H[1-6]|PRE)$/.test(parentBlockName) && containerBlockName != 'HGROUP') {
- newBlock = createNewBlock(newBlockName);
- } else {
- newBlock = createNewBlock();
- }
-
- // Split the current container block element if enter is pressed inside an empty inner block element
- if (settings.end_container_on_empty_block && canSplitBlock(containerBlock) && dom.isEmpty(parentBlock)) {
- // Split container block for example a BLOCKQUOTE at the current blockParent location for example a P
- newBlock = dom.split(containerBlock, parentBlock);
- } else {
- dom.insertAfter(newBlock, parentBlock);
- }
-
- moveToCaretPosition(newBlock);
- } else if (isCaretAtStartOrEndOfBlock(true)) {
- // Insert new block before
- newBlock = parentBlock.parentNode.insertBefore(createNewBlock(), parentBlock);
- renderBlockOnIE(newBlock);
- } else {
- // Extract after fragment and insert it after the current block
- tmpRng = rng.cloneRange();
- tmpRng.setEndAfter(parentBlock);
- fragment = tmpRng.extractContents();
- trimLeadingLineBreaks(fragment);
- newBlock = fragment.firstChild;
- dom.insertAfter(fragment, parentBlock);
- trimInlineElementsOnLeftSideOfBlock(newBlock);
- addBrToBlockIfNeeded(parentBlock);
- moveToCaretPosition(newBlock);
- }
-
- dom.setAttrib(newBlock, 'id', ''); // Remove ID since it needs to be document unique
- undoManager.add();
- }
-
- editor.onKeyDown.add(function(ed, evt) {
- if (evt.keyCode == 13) {
- if (handleEnterKey(evt) !== false) {
- evt.preventDefault();
- }
- }
- });
- };
-})(tinymce);
-
diff --git a/program/js/tiny_mce/utils/editable_selects.js b/program/js/tiny_mce/utils/editable_selects.js
deleted file mode 100644
index 4b920f3d1..000000000
--- a/program/js/tiny_mce/utils/editable_selects.js
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
- * editable_selects.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-var TinyMCE_EditableSelects = {
- editSelectElm : null,
-
- init : function() {
- var nl = document.getElementsByTagName("select"), i, d = document, o;
-
- for (i=0; i<nl.length; i++) {
- if (nl[i].className.indexOf('mceEditableSelect') != -1) {
- o = new Option(tinyMCEPopup.editor.translate('value'), '__mce_add_custom__');
-
- o.className = 'mceAddSelectValue';
-
- nl[i].options[nl[i].options.length] = o;
- nl[i].onchange = TinyMCE_EditableSelects.onChangeEditableSelect;
- }
- }
- },
-
- onChangeEditableSelect : function(e) {
- var d = document, ne, se = window.event ? window.event.srcElement : e.target;
-
- if (se.options[se.selectedIndex].value == '__mce_add_custom__') {
- ne = d.createElement("input");
- ne.id = se.id + "_custom";
- ne.name = se.name + "_custom";
- ne.type = "text";
-
- ne.style.width = se.offsetWidth + 'px';
- se.parentNode.insertBefore(ne, se);
- se.style.display = 'none';
- ne.focus();
- ne.onblur = TinyMCE_EditableSelects.onBlurEditableSelectInput;
- ne.onkeydown = TinyMCE_EditableSelects.onKeyDown;
- TinyMCE_EditableSelects.editSelectElm = se;
- }
- },
-
- onBlurEditableSelectInput : function() {
- var se = TinyMCE_EditableSelects.editSelectElm;
-
- if (se) {
- if (se.previousSibling.value != '') {
- addSelectValue(document.forms[0], se.id, se.previousSibling.value, se.previousSibling.value);
- selectByValue(document.forms[0], se.id, se.previousSibling.value);
- } else
- selectByValue(document.forms[0], se.id, '');
-
- se.style.display = 'inline';
- se.parentNode.removeChild(se.previousSibling);
- TinyMCE_EditableSelects.editSelectElm = null;
- }
- },
-
- onKeyDown : function(e) {
- e = e || window.event;
-
- if (e.keyCode == 13)
- TinyMCE_EditableSelects.onBlurEditableSelectInput();
- }
-};
diff --git a/program/js/tiny_mce/utils/form_utils.js b/program/js/tiny_mce/utils/form_utils.js
deleted file mode 100644
index 59da01399..000000000
--- a/program/js/tiny_mce/utils/form_utils.js
+++ /dev/null
@@ -1,210 +0,0 @@
-/**
- * form_utils.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-var themeBaseURL = tinyMCEPopup.editor.baseURI.toAbsolute('themes/' + tinyMCEPopup.getParam("theme"));
-
-function getColorPickerHTML(id, target_form_element) {
- var h = "", dom = tinyMCEPopup.dom;
-
- if (label = dom.select('label[for=' + target_form_element + ']')[0]) {
- label.id = label.id || dom.uniqueId();
- }
-
- h += '<a role="button" aria-labelledby="' + id + '_label" id="' + id + '_link" href="javascript:;" onclick="tinyMCEPopup.pickColor(event,\'' + target_form_element +'\');" onmousedown="return false;" class="pickcolor">';
- h += '<span id="' + id + '" title="' + tinyMCEPopup.getLang('browse') + '">&nbsp;<span id="' + id + '_label" class="mceVoiceLabel mceIconOnly" style="display:none;">' + tinyMCEPopup.getLang('browse') + '</span></span></a>';
-
- return h;
-}
-
-function updateColor(img_id, form_element_id) {
- document.getElementById(img_id).style.backgroundColor = document.forms[0].elements[form_element_id].value;
-}
-
-function setBrowserDisabled(id, state) {
- var img = document.getElementById(id);
- var lnk = document.getElementById(id + "_link");
-
- if (lnk) {
- if (state) {
- lnk.setAttribute("realhref", lnk.getAttribute("href"));
- lnk.removeAttribute("href");
- tinyMCEPopup.dom.addClass(img, 'disabled');
- } else {
- if (lnk.getAttribute("realhref"))
- lnk.setAttribute("href", lnk.getAttribute("realhref"));
-
- tinyMCEPopup.dom.removeClass(img, 'disabled');
- }
- }
-}
-
-function getBrowserHTML(id, target_form_element, type, prefix) {
- var option = prefix + "_" + type + "_browser_callback", cb, html;
-
- cb = tinyMCEPopup.getParam(option, tinyMCEPopup.getParam("file_browser_callback"));
-
- if (!cb)
- return "";
-
- html = "";
- html += '<a id="' + id + '_link" href="javascript:openBrowser(\'' + id + '\',\'' + target_form_element + '\', \'' + type + '\',\'' + option + '\');" onmousedown="return false;" class="browse">';
- html += '<span id="' + id + '" title="' + tinyMCEPopup.getLang('browse') + '">&nbsp;</span></a>';
-
- return html;
-}
-
-function openBrowser(img_id, target_form_element, type, option) {
- var img = document.getElementById(img_id);
-
- if (img.className != "mceButtonDisabled")
- tinyMCEPopup.openBrowser(target_form_element, type, option);
-}
-
-function selectByValue(form_obj, field_name, value, add_custom, ignore_case) {
- if (!form_obj || !form_obj.elements[field_name])
- return;
-
- if (!value)
- value = "";
-
- var sel = form_obj.elements[field_name];
-
- var found = false;
- for (var i=0; i<sel.options.length; i++) {
- var option = sel.options[i];
-
- if (option.value == value || (ignore_case && option.value.toLowerCase() == value.toLowerCase())) {
- option.selected = true;
- found = true;
- } else
- option.selected = false;
- }
-
- if (!found && add_custom && value != '') {
- var option = new Option(value, value);
- option.selected = true;
- sel.options[sel.options.length] = option;
- sel.selectedIndex = sel.options.length - 1;
- }
-
- return found;
-}
-
-function getSelectValue(form_obj, field_name) {
- var elm = form_obj.elements[field_name];
-
- if (elm == null || elm.options == null || elm.selectedIndex === -1)
- return "";
-
- return elm.options[elm.selectedIndex].value;
-}
-
-function addSelectValue(form_obj, field_name, name, value) {
- var s = form_obj.elements[field_name];
- var o = new Option(name, value);
- s.options[s.options.length] = o;
-}
-
-function addClassesToList(list_id, specific_option) {
- // Setup class droplist
- var styleSelectElm = document.getElementById(list_id);
- var styles = tinyMCEPopup.getParam('theme_advanced_styles', false);
- styles = tinyMCEPopup.getParam(specific_option, styles);
-
- if (styles) {
- var stylesAr = styles.split(';');
-
- for (var i=0; i<stylesAr.length; i++) {
- if (stylesAr != "") {
- var key, value;
-
- key = stylesAr[i].split('=')[0];
- value = stylesAr[i].split('=')[1];
-
- styleSelectElm.options[styleSelectElm.length] = new Option(key, value);
- }
- }
- } else {
- tinymce.each(tinyMCEPopup.editor.dom.getClasses(), function(o) {
- styleSelectElm.options[styleSelectElm.length] = new Option(o.title || o['class'], o['class']);
- });
- }
-}
-
-function isVisible(element_id) {
- var elm = document.getElementById(element_id);
-
- return elm && elm.style.display != "none";
-}
-
-function convertRGBToHex(col) {
- var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi");
-
- var rgb = col.replace(re, "$1,$2,$3").split(',');
- if (rgb.length == 3) {
- r = parseInt(rgb[0]).toString(16);
- g = parseInt(rgb[1]).toString(16);
- b = parseInt(rgb[2]).toString(16);
-
- r = r.length == 1 ? '0' + r : r;
- g = g.length == 1 ? '0' + g : g;
- b = b.length == 1 ? '0' + b : b;
-
- return "#" + r + g + b;
- }
-
- return col;
-}
-
-function convertHexToRGB(col) {
- if (col.indexOf('#') != -1) {
- col = col.replace(new RegExp('[^0-9A-F]', 'gi'), '');
-
- r = parseInt(col.substring(0, 2), 16);
- g = parseInt(col.substring(2, 4), 16);
- b = parseInt(col.substring(4, 6), 16);
-
- return "rgb(" + r + "," + g + "," + b + ")";
- }
-
- return col;
-}
-
-function trimSize(size) {
- return size.replace(/([0-9\.]+)(px|%|in|cm|mm|em|ex|pt|pc)/i, '$1$2');
-}
-
-function getCSSSize(size) {
- size = trimSize(size);
-
- if (size == "")
- return "";
-
- // Add px
- if (/^[0-9]+$/.test(size))
- size += 'px';
- // Sanity check, IE doesn't like broken values
- else if (!(/^[0-9\.]+(px|%|in|cm|mm|em|ex|pt|pc)$/i.test(size)))
- return "";
-
- return size;
-}
-
-function getStyle(elm, attrib, style) {
- var val = tinyMCEPopup.dom.getAttrib(elm, attrib);
-
- if (val != '')
- return '' + val;
-
- if (typeof(style) == 'undefined')
- style = attrib;
-
- return tinyMCEPopup.dom.getStyle(elm, style);
-}
diff --git a/program/js/tiny_mce/utils/mctabs.js b/program/js/tiny_mce/utils/mctabs.js
deleted file mode 100644
index 458ec86da..000000000
--- a/program/js/tiny_mce/utils/mctabs.js
+++ /dev/null
@@ -1,162 +0,0 @@
-/**
- * mctabs.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-function MCTabs() {
- this.settings = [];
- this.onChange = tinyMCEPopup.editor.windowManager.createInstance('tinymce.util.Dispatcher');
-};
-
-MCTabs.prototype.init = function(settings) {
- this.settings = settings;
-};
-
-MCTabs.prototype.getParam = function(name, default_value) {
- var value = null;
-
- value = (typeof(this.settings[name]) == "undefined") ? default_value : this.settings[name];
-
- // Fix bool values
- if (value == "true" || value == "false")
- return (value == "true");
-
- return value;
-};
-
-MCTabs.prototype.showTab =function(tab){
- tab.className = 'current';
- tab.setAttribute("aria-selected", true);
- tab.setAttribute("aria-expanded", true);
- tab.tabIndex = 0;
-};
-
-MCTabs.prototype.hideTab =function(tab){
- var t=this;
-
- tab.className = '';
- tab.setAttribute("aria-selected", false);
- tab.setAttribute("aria-expanded", false);
- tab.tabIndex = -1;
-};
-
-MCTabs.prototype.showPanel = function(panel) {
- panel.className = 'current';
- panel.setAttribute("aria-hidden", false);
-};
-
-MCTabs.prototype.hidePanel = function(panel) {
- panel.className = 'panel';
- panel.setAttribute("aria-hidden", true);
-};
-
-MCTabs.prototype.getPanelForTab = function(tabElm) {
- return tinyMCEPopup.dom.getAttrib(tabElm, "aria-controls");
-};
-
-MCTabs.prototype.displayTab = function(tab_id, panel_id, avoid_focus) {
- var panelElm, panelContainerElm, tabElm, tabContainerElm, selectionClass, nodes, i, t = this;
-
- tabElm = document.getElementById(tab_id);
-
- if (panel_id === undefined) {
- panel_id = t.getPanelForTab(tabElm);
- }
-
- panelElm= document.getElementById(panel_id);
- panelContainerElm = panelElm ? panelElm.parentNode : null;
- tabContainerElm = tabElm ? tabElm.parentNode : null;
- selectionClass = t.getParam('selection_class', 'current');
-
- if (tabElm && tabContainerElm) {
- nodes = tabContainerElm.childNodes;
-
- // Hide all other tabs
- for (i = 0; i < nodes.length; i++) {
- if (nodes[i].nodeName == "LI") {
- t.hideTab(nodes[i]);
- }
- }
-
- // Show selected tab
- t.showTab(tabElm);
- }
-
- if (panelElm && panelContainerElm) {
- nodes = panelContainerElm.childNodes;
-
- // Hide all other panels
- for (i = 0; i < nodes.length; i++) {
- if (nodes[i].nodeName == "DIV")
- t.hidePanel(nodes[i]);
- }
-
- if (!avoid_focus) {
- tabElm.focus();
- }
-
- // Show selected panel
- t.showPanel(panelElm);
- }
-};
-
-MCTabs.prototype.getAnchor = function() {
- var pos, url = document.location.href;
-
- if ((pos = url.lastIndexOf('#')) != -1)
- return url.substring(pos + 1);
-
- return "";
-};
-
-
-//Global instance
-var mcTabs = new MCTabs();
-
-tinyMCEPopup.onInit.add(function() {
- var tinymce = tinyMCEPopup.getWin().tinymce, dom = tinyMCEPopup.dom, each = tinymce.each;
-
- each(dom.select('div.tabs'), function(tabContainerElm) {
- var keyNav;
-
- dom.setAttrib(tabContainerElm, "role", "tablist");
-
- var items = tinyMCEPopup.dom.select('li', tabContainerElm);
- var action = function(id) {
- mcTabs.displayTab(id, mcTabs.getPanelForTab(id));
- mcTabs.onChange.dispatch(id);
- };
-
- each(items, function(item) {
- dom.setAttrib(item, 'role', 'tab');
- dom.bind(item, 'click', function(evt) {
- action(item.id);
- });
- });
-
- dom.bind(dom.getRoot(), 'keydown', function(evt) {
- if (evt.keyCode === 9 && evt.ctrlKey && !evt.altKey) { // Tab
- keyNav.moveFocus(evt.shiftKey ? -1 : 1);
- tinymce.dom.Event.cancel(evt);
- }
- });
-
- each(dom.select('a', tabContainerElm), function(a) {
- dom.setAttrib(a, 'tabindex', '-1');
- });
-
- keyNav = tinyMCEPopup.editor.windowManager.createInstance('tinymce.ui.KeyboardNavigation', {
- root: tabContainerElm,
- items: items,
- onAction: action,
- actOnFocus: true,
- enableLeftRight: true,
- enableUpDown: true
- }, tinyMCEPopup.dom);
- });
-}); \ No newline at end of file
diff --git a/program/js/tiny_mce/utils/validate.js b/program/js/tiny_mce/utils/validate.js
deleted file mode 100644
index 27cbfab81..000000000
--- a/program/js/tiny_mce/utils/validate.js
+++ /dev/null
@@ -1,252 +0,0 @@
-/**
- * validate.js
- *
- * Copyright 2009, Moxiecode Systems AB
- * Released under LGPL License.
- *
- * License: http://tinymce.moxiecode.com/license
- * Contributing: http://tinymce.moxiecode.com/contributing
- */
-
-/**
- // String validation:
-
- if (!Validator.isEmail('myemail'))
- alert('Invalid email.');
-
- // Form validation:
-
- var f = document.forms['myform'];
-
- if (!Validator.isEmail(f.myemail))
- alert('Invalid email.');
-*/
-
-var Validator = {
- isEmail : function(s) {
- return this.test(s, '^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+@[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$');
- },
-
- isAbsUrl : function(s) {
- return this.test(s, '^(news|telnet|nttp|file|http|ftp|https)://[-A-Za-z0-9\\.]+\\/?.*$');
- },
-
- isSize : function(s) {
- return this.test(s, '^[0-9.]+(%|in|cm|mm|em|ex|pt|pc|px)?$');
- },
-
- isId : function(s) {
- return this.test(s, '^[A-Za-z_]([A-Za-z0-9_])*$');
- },
-
- isEmpty : function(s) {
- var nl, i;
-
- if (s.nodeName == 'SELECT' && s.selectedIndex < 1)
- return true;
-
- if (s.type == 'checkbox' && !s.checked)
- return true;
-
- if (s.type == 'radio') {
- for (i=0, nl = s.form.elements; i<nl.length; i++) {
- if (nl[i].type == "radio" && nl[i].name == s.name && nl[i].checked)
- return false;
- }
-
- return true;
- }
-
- return new RegExp('^\\s*$').test(s.nodeType == 1 ? s.value : s);
- },
-
- isNumber : function(s, d) {
- return !isNaN(s.nodeType == 1 ? s.value : s) && (!d || !this.test(s, '^-?[0-9]*\\.[0-9]*$'));
- },
-
- test : function(s, p) {
- s = s.nodeType == 1 ? s.value : s;
-
- return s == '' || new RegExp(p).test(s);
- }
-};
-
-var AutoValidator = {
- settings : {
- id_cls : 'id',
- int_cls : 'int',
- url_cls : 'url',
- number_cls : 'number',
- email_cls : 'email',
- size_cls : 'size',
- required_cls : 'required',
- invalid_cls : 'invalid',
- min_cls : 'min',
- max_cls : 'max'
- },
-
- init : function(s) {
- var n;
-
- for (n in s)
- this.settings[n] = s[n];
- },
-
- validate : function(f) {
- var i, nl, s = this.settings, c = 0;
-
- nl = this.tags(f, 'label');
- for (i=0; i<nl.length; i++) {
- this.removeClass(nl[i], s.invalid_cls);
- nl[i].setAttribute('aria-invalid', false);
- }
-
- c += this.validateElms(f, 'input');
- c += this.validateElms(f, 'select');
- c += this.validateElms(f, 'textarea');
-
- return c == 3;
- },
-
- invalidate : function(n) {
- this.mark(n.form, n);
- },
-
- getErrorMessages : function(f) {
- var nl, i, s = this.settings, field, msg, values, messages = [], ed = tinyMCEPopup.editor;
- nl = this.tags(f, "label");
- for (i=0; i<nl.length; i++) {
- if (this.hasClass(nl[i], s.invalid_cls)) {
- field = document.getElementById(nl[i].getAttribute("for"));
- values = { field: nl[i].textContent };
- if (this.hasClass(field, s.min_cls, true)) {
- message = ed.getLang('invalid_data_min');
- values.min = this.getNum(field, s.min_cls);
- } else if (this.hasClass(field, s.number_cls)) {
- message = ed.getLang('invalid_data_number');
- } else if (this.hasClass(field, s.size_cls)) {
- message = ed.getLang('invalid_data_size');
- } else {
- message = ed.getLang('invalid_data');
- }
-
- message = message.replace(/{\#([^}]+)\}/g, function(a, b) {
- return values[b] || '{#' + b + '}';
- });
- messages.push(message);
- }
- }
- return messages;
- },
-
- reset : function(e) {
- var t = ['label', 'input', 'select', 'textarea'];
- var i, j, nl, s = this.settings;
-
- if (e == null)
- return;
-
- for (i=0; i<t.length; i++) {
- nl = this.tags(e.form ? e.form : e, t[i]);
- for (j=0; j<nl.length; j++) {
- this.removeClass(nl[j], s.invalid_cls);
- nl[j].setAttribute('aria-invalid', false);
- }
- }
- },
-
- validateElms : function(f, e) {
- var nl, i, n, s = this.settings, st = true, va = Validator, v;
-
- nl = this.tags(f, e);
- for (i=0; i<nl.length; i++) {
- n = nl[i];
-
- this.removeClass(n, s.invalid_cls);
-
- if (this.hasClass(n, s.required_cls) && va.isEmpty(n))
- st = this.mark(f, n);
-
- if (this.hasClass(n, s.number_cls) && !va.isNumber(n))
- st = this.mark(f, n);
-
- if (this.hasClass(n, s.int_cls) && !va.isNumber(n, true))
- st = this.mark(f, n);
-
- if (this.hasClass(n, s.url_cls) && !va.isAbsUrl(n))
- st = this.mark(f, n);
-
- if (this.hasClass(n, s.email_cls) && !va.isEmail(n))
- st = this.mark(f, n);
-
- if (this.hasClass(n, s.size_cls) && !va.isSize(n))
- st = this.mark(f, n);
-
- if (this.hasClass(n, s.id_cls) && !va.isId(n))
- st = this.mark(f, n);
-
- if (this.hasClass(n, s.min_cls, true)) {
- v = this.getNum(n, s.min_cls);
-
- if (isNaN(v) || parseInt(n.value) < parseInt(v))
- st = this.mark(f, n);
- }
-
- if (this.hasClass(n, s.max_cls, true)) {
- v = this.getNum(n, s.max_cls);
-
- if (isNaN(v) || parseInt(n.value) > parseInt(v))
- st = this.mark(f, n);
- }
- }
-
- return st;
- },
-
- hasClass : function(n, c, d) {
- return new RegExp('\\b' + c + (d ? '[0-9]+' : '') + '\\b', 'g').test(n.className);
- },
-
- getNum : function(n, c) {
- c = n.className.match(new RegExp('\\b' + c + '([0-9]+)\\b', 'g'))[0];
- c = c.replace(/[^0-9]/g, '');
-
- return c;
- },
-
- addClass : function(n, c, b) {
- var o = this.removeClass(n, c);
- n.className = b ? c + (o != '' ? (' ' + o) : '') : (o != '' ? (o + ' ') : '') + c;
- },
-
- removeClass : function(n, c) {
- c = n.className.replace(new RegExp("(^|\\s+)" + c + "(\\s+|$)"), ' ');
- return n.className = c != ' ' ? c : '';
- },
-
- tags : function(f, s) {
- return f.getElementsByTagName(s);
- },
-
- mark : function(f, n) {
- var s = this.settings;
-
- this.addClass(n, s.invalid_cls);
- n.setAttribute('aria-invalid', 'true');
- this.markLabels(f, n, s.invalid_cls);
-
- return false;
- },
-
- markLabels : function(f, n, ic) {
- var nl, i;
-
- nl = this.tags(f, "label");
- for (i=0; i<nl.length; i++) {
- if (nl[i].getAttribute("for") == n.id || nl[i].htmlFor == n.id)
- this.addClass(nl[i], ic);
- }
-
- return null;
- }
-};
diff --git a/program/js/tinymce/langs/ar.js b/program/js/tinymce/langs/ar.js
new file mode 100644
index 000000000..913f2a6a1
--- /dev/null
+++ b/program/js/tinymce/langs/ar.js
@@ -0,0 +1,180 @@
+tinymce.addI18n('ar',{
+"Cut": "\u0642\u0635",
+"Header 2": "\u0627\u0644\u0639\u0646\u0627\u0648\u064a\u0646 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0645\u062a\u0635\u0641\u062d\u0643 \u0644\u0627 \u064a\u062f\u0639\u0645 \u0627\u0644\u0648\u0635\u0648\u0644 \u0627\u0644\u0645\u0628\u0627\u0634\u0631 \u0625\u0644\u0649 \u0627\u0644\u062d\u0627\u0641\u0638\u0629. \u0627\u0644\u0631\u062c\u0627\u0621 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0627\u062e\u062a\u0635\u0627\u0631\u0627\u062a \u0644\u0648\u062d\u0629 \u0627\u0644\u0645\u0641\u0627\u062a\u064a\u062d Ctrl+X\/C\/V \u0628\u062f\u0644\u0627 \u0645\u0646 \u0630\u0644\u0643.",
+"Div": "Div",
+"Paste": "\u0644\u0635\u0642",
+"Close": "\u0625\u063a\u0644\u0627\u0642",
+"Font Family": "\u0639\u0627\u0626\u0644\u0629 \u0627\u0644\u062e\u0637",
+"Pre": "\u0628\u0627\u062f\u0626\u0629",
+"Align right": "\u0645\u062d\u0627\u0630\u0627\u0629 \u0627\u0644\u0646\u0635 \u0644\u0644\u064a\u0645\u064a\u0646",
+"New document": "\u0645\u0633\u062a\u0646\u062f \u062c\u062f\u064a\u062f",
+"Blockquote": "\u0639\u0644\u0627\u0645\u0627\u062a \u0627\u0644\u0627\u0642\u062a\u0628\u0627\u0633",
+"Numbered list": "\u062a\u0631\u0642\u064a\u0645",
+"Increase indent": "\u0632\u064a\u0627\u062f\u0629 \u0627\u0644\u0645\u0633\u0627\u0641\u0629 \u0627\u0644\u0628\u0627\u062f\u0626\u0629",
+"Formats": "\u0627\u0644\u062a\u0646\u0633\u064a\u0642\u0627\u062a",
+"Headers": "\u0627\u0644\u0639\u0646\u0627\u0648\u064a\u0646",
+"Select all": "\u062a\u062d\u062f\u064a\u062f \u0627\u0644\u0643\u0644",
+"Header 3": "\u0627\u0644\u0639\u0646\u0627\u0648\u064a\u0646 3",
+"Blocks": "\u0627\u0644\u0623\u0642\u0633\u0627\u0645",
+"Undo": "\u062a\u0631\u0627\u062c\u0639",
+"Strikethrough": "\u064a\u062a\u0648\u0633\u0637 \u062e\u0637",
+"Bullet list": "\u062a\u0639\u062f\u0627\u062f \u0646\u0642\u0637\u064a",
+"Header 1": "\u0627\u0644\u0639\u0646\u0627\u0648\u064a\u0646 1",
+"Superscript": "\u0645\u0631\u062a\u0641\u0639",
+"Clear formatting": "\u0645\u0633\u062d \u0627\u0644\u062a\u0646\u0633\u064a\u0642",
+"Font Sizes": "\u062d\u062c\u0645 \u0627\u0644\u062e\u0637",
+"Subscript": "\u0645\u0646\u062e\u0641\u0636",
+"Header 6": "\u0627\u0644\u0639\u0646\u0627\u0648\u064a\u0646 6",
+"Redo": "\u0625\u0639\u0627\u062f\u0629",
+"Paragraph": "\u0641\u0642\u0631\u0629",
+"Ok": "\u0645\u0648\u0627\u0641\u0642",
+"Bold": "\u063a\u0627\u0645\u0642",
+"Code": "\u0643\u0648\u062f",
+"Italic": "\u0645\u0627\u0626\u0644",
+"Align center": "\u062a\u0648\u0633\u064a\u0637",
+"Header 5": "\u0627\u0644\u0639\u0646\u0627\u0648\u064a\u0646 5",
+"Decrease indent": "\u0625\u0646\u0642\u0627\u0635 \u0627\u0644\u0645\u0633\u0627\u0641\u0629 \u0627\u0644\u0628\u0627\u062f\u0626\u0629",
+"Header 4": "\u0627\u0644\u0639\u0646\u0627\u0648\u064a\u0646 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0639\u0645\u0644\u064a\u0629 \u0627\u0644\u0644\u0635\u0642 \u0645\u0646 \u062d\u0627\u0644\u064a\u0627 \u0628\u0637\u0631\u064a\u0642\u0629 \u0627\u0644\u0646\u0635 \u0627\u0644\u0639\u0627\u062f\u064a. \u0633\u064a\u062a\u0645\u0643\u0646 \u0627\u0644\u0622\u0646 \u0645\u0646 \u0644\u0635\u0642 \u0643\u0644 \u0627\u0644\u0645\u062d\u062a\u0648\u064a\u0627\u062a \u0643\u0646\u0635 \u0639\u0627\u062f\u064a \u062d\u062a\u0649 \u062a\u0642\u0648\u0645 \u0628\u062a\u0639\u0637\u064a\u0644 \u0647\u0630\u0627 \u0627\u0644\u062e\u064a\u0627\u0631.",
+"Underline": "\u062a\u0633\u0637\u064a\u0631",
+"Cancel": "\u0625\u0644\u063a\u0627\u0621",
+"Justify": "\u0636\u0628\u0637",
+"Inline": "\u062e\u0644\u0627\u0644",
+"Copy": "\u0646\u0633\u062e",
+"Align left": "\u0645\u062d\u0627\u0630\u0627\u0629 \u0627\u0644\u0646\u0635 \u0644\u0644\u064a\u0633\u0627\u0631",
+"Visual aids": "\u0627\u0644\u0645\u0639\u064a\u0646\u0627\u062a \u0627\u0644\u0628\u0635\u0631\u064a\u0629",
+"Lower Greek": "\u062a\u0631\u0642\u064a\u0645 \u064a\u0648\u0646\u0627\u0646\u064a \u0635\u063a\u064a\u0631",
+"Square": "\u0645\u0631\u0628\u0639",
+"Default": "\u0627\u0644\u0627\u0641\u062a\u0631\u0627\u0636\u064a",
+"Lower Alpha": "\u062a\u0631\u0642\u064a\u0645 \u0623\u062e\u0631\u0641 \u0635\u063a\u064a\u0631\u0629",
+"Circle": "\u062f\u0627\u0626\u0631\u0629",
+"Disc": "\u0642\u0631\u0635",
+"Upper Alpha": "\u062a\u0631\u0642\u064a\u0645 \u0623\u062d\u0631\u0641 \u0643\u0628\u064a\u0631\u0629",
+"Upper Roman": "\u062a\u0631\u0642\u064a\u0645 \u0631\u0648\u0645\u0627\u0646\u064a \u0643\u0628\u064a\u0631",
+"Lower Roman": "\u062a\u0631\u0642\u064a\u0645 \u0631\u0648\u0645\u0627\u0646\u064a \u0635\u063a\u064a\u0631",
+"Name": "\u0627\u0644\u0627\u0633\u0645",
+"Anchor": "\u0645\u0631\u0633\u0627\u0629",
+"You have unsaved changes are you sure you want to navigate away?": "\u0644\u062f\u064a\u0643 \u062a\u063a\u064a\u064a\u0631\u0627\u062a \u0644\u0645 \u064a\u062a\u0645 \u062d\u0641\u0638\u0647\u0627 \u0647\u0644 \u0623\u0646\u062a \u0645\u062a\u0623\u0643\u062f \u0623\u0646\u0643 \u062a\u0631\u063a\u0628 \u0641\u064a \u0627\u0644\u0627\u0646\u062a\u0642\u0627\u0644 \u0628\u0639\u064a\u062f\u0627\u061f",
+"Restore last draft": "\u0627\u0633\u062a\u0639\u0627\u062f\u0629 \u0623\u062e\u0631 \u0645\u0633\u0648\u062f\u0629",
+"Special character": "\u0631\u0645\u0632",
+"Source code": "\u0634\u0641\u0631\u0629 \u0627\u0644\u0645\u0635\u062f\u0631",
+"Right to left": "\u0645\u0646 \u0627\u0644\u064a\u0645\u064a\u0646 \u0644\u0644\u064a\u0633\u0627\u0631",
+"Left to right": "\u0645\u0646 \u0627\u0644\u064a\u0633\u0627\u0631 \u0644\u0644\u064a\u0645\u064a\u0646",
+"Emoticons": "\u0627\u0644\u0631\u0645\u0648\u0632",
+"Robots": "\u0627\u0644\u0631\u0648\u0628\u0648\u062a\u0627\u062a",
+"Document properties": "\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u0645\u0633\u062a\u0646\u062f",
+"Title": "\u0627\u0644\u0639\u0646\u0648\u0627\u0646",
+"Keywords": "\u0643\u0644\u0645\u0627\u062a \u0627\u0644\u0628\u062d\u062b",
+"Encoding": "\u0627\u0644\u062a\u0631\u0645\u064a\u0632",
+"Description": "\u0627\u0644\u0648\u0635\u0641",
+"Author": "\u0627\u0644\u0643\u0627\u062a\u0628",
+"Fullscreen": "\u0645\u0644\u0621 \u0627\u0644\u0634\u0627\u0634\u0629",
+"Horizontal line": "\u062e\u0637 \u0623\u0641\u0642\u064a",
+"Horizontal space": "\u0645\u0633\u0627\u0641\u0629 \u0623\u0641\u0642\u064a\u0629",
+"Insert\/edit image": "\u0625\u062f\u0631\u0627\u062c\/\u062a\u062d\u0631\u064a\u0631 \u0635\u0648\u0631\u0629",
+"General": "\u0639\u0627\u0645",
+"Advanced": "\u062e\u0635\u0627\u0626\u0635 \u0645\u062a\u0642\u062f\u0645\u0647",
+"Source": "\u0627\u0644\u0645\u0635\u062f\u0631",
+"Border": "\u062d\u062f\u0648\u062f",
+"Constrain proportions": "\u0627\u0644\u062a\u0646\u0627\u0633\u0628",
+"Vertical space": "\u0645\u0633\u0627\u0641\u0629 \u0639\u0645\u0648\u062f\u064a\u0629",
+"Image description": "\u0648\u0635\u0641 \u0627\u0644\u0635\u0648\u0631\u0629",
+"Style": "\u0627\u0644\u0646\u0645\u0637 \/ \u0627\u0644\u0634\u0643\u0644",
+"Dimensions": "\u0627\u0644\u0623\u0628\u0639\u0627\u062f",
+"Insert image": "\u0625\u062f\u0631\u0627\u062c \u0635\u0648\u0631\u0629",
+"Insert date\/time": "\u0625\u062f\u0631\u0627\u062c \u062a\u0627\u0631\u064a\u062e\/\u0648\u0642\u062a",
+"Remove link": "\u062d\u0630\u0641 \u0627\u0644\u0631\u0627\u0628\u0637",
+"Url": "\u0627\u0644\u0639\u0646\u0648\u0627\u0646",
+"Text to display": "\u0627\u0644\u0646\u0635 \u0627\u0644\u0645\u0637\u0644\u0648\u0628 \u0639\u0631\u0636\u0647",
+"Anchors": "\u0645\u0631\u0633\u0627\u0629",
+"Insert link": "\u0625\u062f\u0631\u0627\u062c \u0631\u0627\u0628\u0637",
+"New window": "\u0646\u0627\u0641\u0630\u0629 \u062c\u062f\u064a\u062f\u0629",
+"None": "\u0628\u0644\u0627",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u0646\u062a\u0648\u0642\u0639 \u0627\u0646\u0643 \u0642\u0645\u062a \u0628\u0625\u062f\u0631\u0627\u062c \u0631\u0627\u0628\u0637 \u0644\u0645\u0648\u0642\u0639 \u062e\u0627\u0631\u062c\u064a. \u0647\u0644 \u062a\u0631\u064a\u062f \u0627\u0646 \u0646\u0636\u064a\u0641 \u0627\u0644\u0644\u0627\u062d\u0642\u0629 http:\/\/ \u0644\u0644\u0631\u0627\u0628\u0637 \u0627\u0644\u0630\u064a \u0627\u062f\u062e\u0644\u062a\u0647\u061f",
+"Target": "\u0627\u0644\u0625\u0637\u0627\u0631 \u0627\u0644\u0647\u062f\u0641",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u0627\u0644\u0631\u0627\u0628\u0637 \u0627\u0644\u0630\u064a \u0642\u0645\u062a \u0628\u0625\u062f\u0631\u0627\u062c\u0647 \u064a\u0634\u0627\u0628\u0647 \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0627\u0644\u0643\u062a\u0631\u0648\u0646\u064a. \u0647\u0644 \u062a\u0631\u064a\u062f \u0627\u0646 \u062a\u0636\u064a\u0641 \u0627\u0644\u0644\u0627\u062d\u0642\u0629 mailto: \u0645\u0639\u062a\u0628\u0631\u0627\u064b \u0647\u0630\u0627 \u0627\u0644\u0631\u0627\u0628\u0637 \u0628\u0631\u064a\u062f\u0627 \u0627\u0644\u0643\u062a\u0631\u0648\u0646\u064a\u0627\u064b\u061f",
+"Insert\/edit link": "\u0625\u062f\u0631\u0627\u062c\/\u062a\u062d\u0631\u064a\u0631 \u0631\u0627\u0628\u0637",
+"Insert\/edit video": "\u0625\u062f\u0631\u0627\u062c\/\u062a\u062d\u0631\u064a\u0631 \u0641\u064a\u062f\u064a\u0648",
+"Poster": "\u0645\u0644\u0635\u0642",
+"Alternative source": "\u0645\u0635\u062f\u0631 \u0628\u062f\u064a\u0644",
+"Paste your embed code below:": "\u0644\u0635\u0642 \u0643\u0648\u062f \u0627\u0644\u062a\u0636\u0645\u064a\u0646 \u0647\u0646\u0627:",
+"Insert video": "\u0625\u062f\u0631\u0627\u062c \u0641\u064a\u062f\u064a\u0648",
+"Embed": "\u062a\u0636\u0645\u064a\u0646",
+"Nonbreaking space": "\u0645\u0633\u0627\u0641\u0629 \u063a\u064a\u0631 \u0645\u0646\u0642\u0633\u0645\u0629",
+"Page break": "\u0641\u0627\u0635\u0644 \u0644\u0644\u0635\u0641\u062d\u0629",
+"Paste as text": "\u0644\u0635\u0642 \u0643\u0646\u0635",
+"Preview": "\u0645\u0639\u0627\u064a\u0646\u0629",
+"Print": "\u0637\u0628\u0627\u0639\u0629",
+"Save": "\u062d\u0641\u0638",
+"Could not find the specified string.": "\u062a\u0639\u0630\u0631 \u0627\u0644\u0639\u062b\u0648\u0631 \u0639\u0644\u0649 \u0627\u0644\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u062d\u062f\u062f\u0629",
+"Replace": "\u0627\u0633\u062a\u0628\u062f\u0627\u0644",
+"Next": "\u0627\u0644\u062a\u0627\u0644\u064a",
+"Whole words": "\u0645\u0637\u0627\u0628\u0642\u0629 \u0627\u0644\u0643\u0644\u0645\u0627\u062a \u0628\u0627\u0644\u0643\u0627\u0645\u0644",
+"Find and replace": "\u0628\u062d\u062b \u0648\u0627\u0633\u062a\u0628\u062f\u0627\u0644",
+"Replace with": "\u0627\u0633\u062a\u0628\u062f\u0627\u0644 \u0628\u0640",
+"Find": "\u0628\u062d\u062b",
+"Replace all": "\u0627\u0633\u062a\u0628\u062f\u0627\u0644 \u0627\u0644\u0643\u0644",
+"Match case": "\u0645\u0637\u0627\u0628\u0642\u0629 \u062d\u0627\u0644\u0629 \u0627\u0644\u0623\u062d\u0631\u0641",
+"Prev": "\u0627\u0644\u0633\u0627\u0628\u0642",
+"Spellcheck": "\u062a\u062f\u0642\u064a\u0642 \u0625\u0645\u0644\u0627\u0626\u064a",
+"Finish": "\u0627\u0646\u062a\u0647\u064a",
+"Ignore all": "\u062a\u062c\u0627\u0647\u0644 \u0627\u0644\u0643\u0644",
+"Ignore": "\u062a\u062c\u0627\u0647\u0644",
+"Insert row before": "\u0625\u062f\u0631\u0627\u062c \u0635\u0641 \u0644\u0644\u0623\u0639\u0644\u0649",
+"Rows": "\u0639\u062f\u062f \u0627\u0644\u0635\u0641\u0648\u0641",
+"Height": "\u0627\u0631\u062a\u0641\u0627\u0639",
+"Paste row after": "\u0644\u0635\u0642 \u0627\u0644\u0635\u0641 \u0644\u0644\u0623\u0633\u0641\u0644",
+"Alignment": "\u0645\u062d\u0627\u0630\u0627\u0629",
+"Column group": "\u0645\u062c\u0645\u0648\u0639\u0629 \u0639\u0645\u0648\u062f",
+"Row": "\u0635\u0641",
+"Insert column before": "\u0625\u062f\u0631\u0627\u062c \u0639\u0645\u0648\u062f \u0644\u0644\u064a\u0633\u0627\u0631",
+"Split cell": "\u062a\u0642\u0633\u064a\u0645 \u0627\u0644\u062e\u0644\u0627\u064a\u0627",
+"Cell padding": "\u062a\u0628\u0627\u0639\u062f \u0627\u0644\u062e\u0644\u064a\u0629",
+"Cell spacing": "\u0627\u0644\u0645\u0633\u0627\u0641\u0629 \u0628\u064a\u0646 \u0627\u0644\u062e\u0644\u0627\u064a\u0627",
+"Row type": "\u0646\u0648\u0639 \u0627\u0644\u0635\u0641",
+"Insert table": "\u0625\u062f\u0631\u0627\u062c \u062c\u062f\u0648\u0644",
+"Body": "\u0647\u064a\u0643\u0644",
+"Caption": "\u0634\u0631\u062d",
+"Footer": "\u062a\u0630\u064a\u064a\u0644",
+"Delete row": "\u062d\u0630\u0641 \u0635\u0641",
+"Paste row before": "\u0644\u0635\u0642 \u0627\u0644\u0635\u0641 \u0644\u0644\u0623\u0639\u0644\u0649",
+"Scope": "\u0627\u0644\u0645\u062c\u0627\u0644",
+"Delete table": "\u062d\u0630\u0641 \u062c\u062f\u0648\u0644",
+"Header cell": "\u0631\u0623\u0633 \u0627\u0644\u062e\u0644\u064a\u0629",
+"Column": "\u0639\u0645\u0648\u062f",
+"Cell": "\u062e\u0644\u064a\u0629",
+"Header": "\u0627\u0644\u0631\u0623\u0633",
+"Cell type": "\u0646\u0648\u0639 \u0627\u0644\u062e\u0644\u064a\u0629",
+"Copy row": "\u0646\u0633\u062e \u0627\u0644\u0635\u0641",
+"Row properties": "\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u0635\u0641",
+"Table properties": "\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u062c\u062f\u0648\u0644",
+"Row group": "\u0645\u062c\u0645\u0648\u0639\u0629 \u0635\u0641",
+"Right": "\u064a\u0645\u064a\u0646",
+"Insert column after": "\u0625\u062f\u0631\u0627\u062c \u0639\u0645\u0648\u062f \u0644\u0644\u064a\u0645\u064a\u0646",
+"Cols": "\u0639\u062f\u062f \u0627\u0644\u0623\u0639\u0645\u062f\u0629",
+"Insert row after": "\u0625\u062f\u0631\u0627\u062c \u0635\u0641 \u0644\u0644\u0623\u0633\u0641\u0644",
+"Width": "\u0639\u0631\u0636",
+"Cell properties": "\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u062e\u0644\u064a\u0629",
+"Left": "\u064a\u0633\u0627\u0631",
+"Cut row": "\u0642\u0635 \u0627\u0644\u0635\u0641",
+"Delete column": "\u062d\u0630\u0641 \u0639\u0645\u0648\u062f",
+"Center": "\u062a\u0648\u0633\u064a\u0637",
+"Merge cells": "\u062f\u0645\u062c \u062e\u0644\u0627\u064a\u0627",
+"Insert template": "\u0625\u062f\u0631\u0627\u062c \u0642\u0627\u0644\u0628",
+"Templates": "\u0642\u0648\u0627\u0644\u0628",
+"Background color": "\u0644\u0648\u0646 \u0627\u0644\u062e\u0644\u0641\u064a\u0629",
+"Text color": "\u0644\u0648\u0646 \u0627\u0644\u0646\u0635",
+"Show blocks": "\u0645\u0634\u0627\u0647\u062f\u0629 \u0627\u0644\u0643\u062a\u0644",
+"Show invisible characters": "\u0623\u0638\u0647\u0631 \u0627\u0644\u0623\u062d\u0631\u0641 \u0627\u0644\u063a\u064a\u0631 \u0645\u0631\u0626\u064a\u0629",
+"Words: {0}": "\u0627\u0644\u0643\u0644\u0645\u0627\u062a:{0}",
+"Insert": "\u0625\u062f\u0631\u0627\u062c",
+"File": "\u0645\u0644\u0641",
+"Edit": "\u062a\u062d\u0631\u064a\u0631",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u0645\u0646\u0637\u0642\u0629 \u0646\u0635 \u0645\u0646\u0633\u0642. \u0627\u0636\u063a\u0637 ALT-F9 \u0644\u0644\u0642\u0627\u0626\u0645\u0629. \u0627\u0636\u063a\u0637 ALT-F10 \u0644\u0634\u0631\u064a\u0637 \u0627\u0644\u0623\u062f\u0648\u0627\u062a. \u0627\u0636\u063a\u0637 ALT-0 \u0644\u0644\u062d\u0635\u0648\u0644 \u0639\u0644\u0649 \u0645\u0633\u0627\u0639\u062f\u0629",
+"Tools": "\u0623\u062f\u0627\u0648\u0627\u062a",
+"View": "\u0639\u0631\u0636",
+"Table": "\u062c\u062f\u0648\u0644",
+"Format": "\u062a\u0646\u0633\u064a\u0642",
+"_dir": "rtl"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/ar_SA.js b/program/js/tinymce/langs/ar_SA.js
new file mode 100644
index 000000000..9de8bff06
--- /dev/null
+++ b/program/js/tinymce/langs/ar_SA.js
@@ -0,0 +1,180 @@
+tinymce.addI18n('ar_SA',{
+"Cut": "\u0642\u0635",
+"Header 2": "Header 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0645\u062a\u0635\u0641\u062d\u0643 \u0644\u0627 \u064a\u062f\u0639\u0645 \u0627\u0644\u0648\u0635\u0648\u0644 \u0627\u0644\u0645\u0628\u0627\u0634\u0631 \u0625\u0644\u0649 \u0627\u0644\u062d\u0627\u0641\u0638\u0629. \u0627\u0644\u0631\u062c\u0627\u0621 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0627\u062e\u062a\u0635\u0627\u0631\u0627\u062a \u0644\u0648\u062d\u0629 \u0627\u0644\u0645\u0641\u0627\u062a\u064a\u062d Ctrl+X\/C\/V \u0628\u062f\u0644\u0627 \u0645\u0646 \u0630\u0644\u0643.",
+"Div": "Div",
+"Paste": "\u0644\u0635\u0642",
+"Close": "\u0623\u063a\u0644\u0642",
+"Font Family": "Font Family",
+"Pre": "Pre",
+"Align right": "Align right",
+"New document": "\u0645\u0644\u0641 \u062c\u062f\u064a\u062f",
+"Blockquote": "Blockquote",
+"Numbered list": "Numbered list",
+"Increase indent": "Increase indent",
+"Formats": "Formats",
+"Headers": "Headers",
+"Select all": "\u0623\u062e\u062a\u0631 \u0627\u0644\u0643\u0644",
+"Header 3": "Header 3",
+"Blocks": "Blocks",
+"Undo": "\u062a\u0631\u0627\u062c\u0639",
+"Strikethrough": "Strikethrough",
+"Bullet list": "Bullet list",
+"Header 1": "Header 1",
+"Superscript": "Superscript",
+"Clear formatting": "Clear formatting",
+"Font Sizes": "Font Sizes",
+"Subscript": "Subscript",
+"Header 6": "Header 6",
+"Redo": "Redo",
+"Paragraph": "Paragraph",
+"Ok": "Ok",
+"Bold": "Bold",
+"Code": "Code",
+"Italic": "Italic",
+"Align center": "Align center",
+"Header 5": "Header 5",
+"Decrease indent": "Decrease indent",
+"Header 4": "Header 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.",
+"Underline": "Underline",
+"Cancel": "\u0625\u0644\u063a\u0627\u0621",
+"Justify": "Justify",
+"Inline": "Inline",
+"Copy": "\u0646\u0633\u062e",
+"Align left": "Align left",
+"Visual aids": "Visual aids",
+"Lower Greek": "Lower Greek",
+"Square": "Square",
+"Default": "Default",
+"Lower Alpha": "Lower Alpha",
+"Circle": "Circle",
+"Disc": "Disc",
+"Upper Alpha": "Upper Alpha",
+"Upper Roman": "Upper Roman",
+"Lower Roman": "Lower Roman",
+"Name": "Name",
+"Anchor": "Anchor",
+"You have unsaved changes are you sure you want to navigate away?": "\u0644\u062f\u064a\u0643 \u062a\u063a\u064a\u064a\u0631\u0627\u062a \u0644\u0645 \u064a\u062a\u0645 \u062d\u0641\u0638\u0647\u0627 \u0647\u0644 \u0623\u0646\u062a \u0645\u062a\u0623\u0643\u062f \u0623\u0646\u0643 \u062a\u0631\u063a\u0628 \u0641\u064a \u0627\u0644\u0627\u0646\u062a\u0642\u0627\u0644 \u061f",
+"Restore last draft": "\u0627\u0633\u062a\u0639\u0627\u062f\u0629 \u0623\u062e\u0631 \u0645\u0633\u0648\u062f\u0629",
+"Special character": "Special character",
+"Source code": "Source code",
+"Right to left": "\u0645\u0646 \u0627\u0644\u064a\u0645\u064a\u0646 \u0625\u0644\u064a \u0627\u0644\u064a\u0633\u0627\u0631",
+"Left to right": "\u0645\u0646 \u0627\u0644\u064a\u0633\u0627\u0631 \u0625\u0644\u064a \u0627\u0644\u064a\u0645\u064a\u0646",
+"Emoticons": "\u0627\u0644\u0631\u0645\u0648\u0632",
+"Robots": "Robots",
+"Document properties": "\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u0645\u0633\u062a\u0646\u062f",
+"Title": "\u0639\u0646\u0648\u0627\u0646",
+"Keywords": "Keywords",
+"Encoding": "\u062a\u0631\u0645\u064a\u0632",
+"Description": "Description",
+"Author": "\u0627\u0644\u0643\u0627\u062a\u0628",
+"Fullscreen": "Fullscreen",
+"Horizontal line": "\u062e\u0637 \u0623\u0641\u0642\u064a",
+"Horizontal space": "Horizontal space",
+"Insert\/edit image": "Insert\/edit image",
+"General": "General",
+"Advanced": "Advanced",
+"Source": "Source",
+"Border": "Border",
+"Constrain proportions": "Constrain proportions",
+"Vertical space": "Vertical space",
+"Image description": "Image description",
+"Style": "Style",
+"Dimensions": "Dimensions",
+"Insert image": "Insert image",
+"Insert date\/time": "Insert date\/time",
+"Remove link": "Remove link",
+"Url": "Url",
+"Text to display": "Text to display",
+"Anchors": "Anchors",
+"Insert link": "Insert link",
+"New window": "New window",
+"None": "None",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?",
+"Target": "Target",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",
+"Insert\/edit link": "Insert\/edit link",
+"Insert\/edit video": "Insert\/edit video",
+"Poster": "Poster",
+"Alternative source": "Alternative source",
+"Paste your embed code below:": "Paste your embed code below:",
+"Insert video": "Insert video",
+"Embed": "Embed",
+"Nonbreaking space": "Nonbreaking space",
+"Page break": "Page break",
+"Paste as text": "Paste as text",
+"Preview": "\u0639\u0631\u0636",
+"Print": "\u0637\u0628\u0627\u0639\u0629",
+"Save": "\u062d\u0641\u0638",
+"Could not find the specified string.": "Could not find the specified string.",
+"Replace": "Replace",
+"Next": "Next",
+"Whole words": "Whole words",
+"Find and replace": "Find and replace",
+"Replace with": "Replace with",
+"Find": "Find",
+"Replace all": "Replace all",
+"Match case": "Match case",
+"Prev": "Prev",
+"Spellcheck": "Spellcheck",
+"Finish": "Finish",
+"Ignore all": "Ignore all",
+"Ignore": "Ignore",
+"Insert row before": "Insert row before",
+"Rows": "Rows",
+"Height": "Height",
+"Paste row after": "Paste row after",
+"Alignment": "Alignment",
+"Column group": "Column group",
+"Row": "Row",
+"Insert column before": "Insert column before",
+"Split cell": "Split cell",
+"Cell padding": "Cell padding",
+"Cell spacing": "Cell spacing",
+"Row type": "Row type",
+"Insert table": "Insert table",
+"Body": "Body",
+"Caption": "Caption",
+"Footer": "Footer",
+"Delete row": "Delete row",
+"Paste row before": "Paste row before",
+"Scope": "Scope",
+"Delete table": "Delete table",
+"Header cell": "Header cell",
+"Column": "Column",
+"Cell": "Cell",
+"Header": "Header",
+"Cell type": "Cell type",
+"Copy row": "Copy row",
+"Row properties": "Row properties",
+"Table properties": "Table properties",
+"Row group": "Row group",
+"Right": "Right",
+"Insert column after": "Insert column after",
+"Cols": "Cols",
+"Insert row after": "Insert row after",
+"Width": "Width",
+"Cell properties": "Cell properties",
+"Left": "Left",
+"Cut row": "Cut row",
+"Delete column": "Delete column",
+"Center": "Center",
+"Merge cells": "Merge cells",
+"Insert template": "Insert template",
+"Templates": "Templates",
+"Background color": "Background color",
+"Text color": "Text color",
+"Show blocks": "Show blocks",
+"Show invisible characters": "Show invisible characters",
+"Words: {0}": "Words: {0}",
+"Insert": "Insert",
+"File": "File",
+"Edit": "Edit",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help",
+"Tools": "Tools",
+"View": "View",
+"Table": "Table",
+"Format": "Format",
+"_dir": "rtl"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/az.js b/program/js/tinymce/langs/az.js
new file mode 100644
index 000000000..5b1882c1a
--- /dev/null
+++ b/program/js/tinymce/langs/az.js
@@ -0,0 +1,194 @@
+tinymce.addI18n('az',{
+"Cut": "K\u0259s",
+"Heading 5": "Ba\u015fl\u0131q 5",
+"Header 2": "Ba\u015fl\u0131q 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Sizin brauzeriniz m\u00fcbadil\u0259 buferin\u0259 birba\u015fa yolu d\u0259st\u0259kl\u0259mir. Z\u0259hm\u0259t olmasa, bunun yerin\u0259 klaviaturan\u0131n Ctrl+X\/C\/V d\u00fcym\u0259l\u0259rind\u0259n istifad\u0259 edin.",
+"Heading 4": "Ba\u015fl\u0131q 4",
+"Div": "Div",
+"Heading 2": "Ba\u015fl\u0131q 2",
+"Paste": "\u018flav\u0259 et",
+"Close": "Ba\u011fla",
+"Font Family": "Font stili",
+"Pre": "Pre",
+"Align right": "Sa\u011f t\u0259r\u0259f \u00fczr\u0259",
+"New document": "Yeni s\u0259n\u0259d",
+"Blockquote": "Sitat",
+"Numbered list": "N\u00f6mr\u0259l\u0259nmi\u015f siyah\u0131",
+"Heading 1": "Ba\u015fl\u0131q 1",
+"Headings": "Ba\u015fl\u0131qlar",
+"Increase indent": "Bo\u015flu\u011fu art\u0131r",
+"Formats": "Formatlar",
+"Headers": "Ba\u015fl\u0131qlar",
+"Select all": "Ham\u0131s\u0131n\u0131 se\u00e7",
+"Header 3": "Ba\u015fl\u0131q 3",
+"Blocks": "Bloklar",
+"Undo": "Geriy\u0259",
+"Strikethrough": "Silinmi\u015f",
+"Bullet list": "S\u0131ras\u0131z siyah\u0131",
+"Header 1": "Ba\u015fl\u0131q 1",
+"Superscript": "Yuxar\u0131 indeks",
+"Clear formatting": "Format\u0131 t\u0259mizl\u0259",
+"Font Sizes": "Font \u00f6l\u00e7\u00fcl\u0259ri",
+"Subscript": "A\u015fa\u011f\u0131 indeks",
+"Header 6": "Ba\u015fl\u0131q 6",
+"Redo": "\u0130r\u0259li",
+"Paragraph": "Paraqraf",
+"Ok": "Oldu",
+"Bold": "Qal\u0131n",
+"Code": "Kod",
+"Italic": "Maili",
+"Align center": "M\u0259rk\u0259z \u00fczr\u0259",
+"Header 5": "Ba\u015fl\u0131q 5",
+"Heading 6": "Ba\u015fl\u0131q 6",
+"Heading 3": "Ba\u015fl\u0131q 3",
+"Decrease indent": "Bo\u015flu\u011fu azalt",
+"Header 4": "Ba\u015fl\u0131q 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Hal-haz\u0131rda adi m\u0259tn rejimind\u0259 yerl\u0259\u015fdirilir. M\u0259zmun sad\u0259 m\u0259tn \u015f\u0259klind\u0259 yerl\u0259\u015fdiril\u0259c\u0259k, h\u0259l\u0259 bu se\u00e7imi d\u0259yi\u015fdirm\u0259.",
+"Underline": "Alt x\u0259ttli",
+"Cancel": "L\u0259\u011fv et",
+"Justify": "H\u0259r iki t\u0259r\u0259f \u00fczr\u0259",
+"Inline": "S\u0259tir i\u00e7i",
+"Copy": "K\u00f6\u00e7\u00fcr",
+"Align left": "Sol t\u0259r\u0259f \u00fczr\u0259",
+"Visual aids": "Konturlar\u0131 g\u00f6st\u0259r",
+"Lower Greek": "Ki\u00e7ik Yunan \u0259lifbas\u0131",
+"Square": "Sah\u0259",
+"Default": "\u018fvv\u0259ld\u0259n qurulmu\u015f",
+"Lower Alpha": "Ki\u00e7ik Alfa \u0259lifbas\u0131",
+"Circle": "Dair\u0259",
+"Disc": "Disk",
+"Upper Alpha": "B\u00f6y\u00fck Alfa \u0259lifbas\u0131",
+"Upper Roman": "B\u00f6y\u00fck Roma \u0259lifbas\u0131",
+"Lower Roman": "Ki\u00e7ik Roma \u0259lifbas\u0131",
+"Name": "Ad",
+"Anchor": "L\u00f6vb\u0259r",
+"You have unsaved changes are you sure you want to navigate away?": "Sizd\u0259 yadda saxlan\u0131lmayan d\u0259yi\u015fiklikl\u0259r var \u0259minsiniz ki, getm\u0259k ist\u0259yirsiniz?",
+"Restore last draft": "Son layih\u0259nin b\u0259rpas\u0131",
+"Special character": "X\u00fcsusi simvollar",
+"Source code": "M\u0259nb\u0259 kodu",
+"Right to left": "Sa\u011fdan sola",
+"Left to right": "Soldan sa\u011fa",
+"Emoticons": "T\u0259b\u0259ss\u00fcml\u0259r",
+"Robots": "Robotlar",
+"Document properties": "S\u0259n\u0259din x\u00fcsusiyy\u0259tl\u0259ri",
+"Title": "Ba\u015fl\u0131q",
+"Keywords": "A\u00e7ar s\u00f6zl\u0259r",
+"Encoding": "Kodla\u015fd\u0131rma",
+"Description": "T\u0259sviri",
+"Author": "M\u00fc\u0259llif",
+"Fullscreen": "Tam ekran rejimi",
+"Horizontal line": "Horizontal x\u0259tt",
+"Horizontal space": "Horizontal sah\u0259",
+"Insert\/edit image": "\u015e\u0259kilin \u0259lav\u0259\/redakt\u0259 edilm\u0259si",
+"General": "\u00dcmumi",
+"Advanced": "Geni\u015fl\u0259nmi\u015f",
+"Source": "M\u0259nb\u0259",
+"Border": "\u00c7\u0259r\u00e7iv\u0259",
+"Constrain proportions": "Nisb\u0259tl\u0259rin saxlan\u0131lmas\u0131",
+"Vertical space": "Vertikal sah\u0259",
+"Image description": "\u015e\u0259kilin t\u0259sviri",
+"Style": "Stil",
+"Dimensions": "\u00d6l\u00e7\u00fcl\u0259r",
+"Insert image": "\u015e\u0259kilin redakt\u0259 edilm\u0259si",
+"Insert date\/time": "G\u00fcn\/tarix \u0259lav\u0259 et",
+"Remove link": "Linki sil",
+"Url": "Linkin \u00fcnvan\u0131",
+"Text to display": "G\u00f6r\u00fcn\u0259n yaz\u0131n\u0131n t\u0259sviri",
+"Anchors": "L\u00f6vb\u0259rl\u0259r",
+"Insert link": "Linkin \u0259lav\u0259 edilm\u0259si",
+"New window": "Yeni p\u0259nc\u0259r\u0259d\u0259 a\u00e7\u0131ls\u0131n",
+"None": "Yoxdur",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Daxil etdiyiniz URL bir e-mail kimi g\u00f6r\u00fcn\u00fcr. \u018fg\u0259r t\u0259l\u0259b olunan mailto: prefix \u0259lav\u0259 etm\u0259k ist\u0259yirsiniz?",
+"Target": "H\u0259d\u0259f",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Daxil etdiyiniz URL bir e-mail kimi g\u00f6r\u00fcn\u00fcr. \u018fg\u0259r t\u0259l\u0259b olunan mailto: prefix \u0259lav\u0259 etm\u0259k ist\u0259yirsiniz?",
+"Insert\/edit link": "Linkin \u0259lav\u0259\/redakt\u0259 edilm\u0259si",
+"Insert\/edit video": "Videonun \u0259lav\u0259\/redakt\u0259 edilm\u0259si",
+"Poster": "Poster",
+"Alternative source": "Alternativ m\u0259nb\u0259",
+"Paste your embed code below:": "\u00d6z kodunuzu a\u015fa\u011f\u0131 \u0259lav\u0259 edin:",
+"Insert video": "Videonun \u0259lav\u0259 edilm\u0259si",
+"Embed": "\u018flav\u0259 etm\u0259k \u00fc\u00e7\u00fcn kod",
+"Nonbreaking space": "Q\u0131r\u0131lmaz sah\u0259",
+"Page break": "S\u0259hif\u0259nin q\u0131r\u0131lmas\u0131",
+"Paste as text": "M\u0259tn kimi \u0259lav\u0259 et",
+"Preview": "\u0130lkinbax\u0131\u015f",
+"Print": "\u00c7ap et",
+"Save": "Yadda saxla",
+"Could not find the specified string.": "G\u00f6st\u0259ril\u0259n s\u0259tiri tapmaq olmur",
+"Replace": "D\u0259yi\u015fdir",
+"Next": "N\u00f6vb\u0259ti",
+"Whole words": "Tam s\u00f6zl\u0259r",
+"Find and replace": "Tap v\u0259 d\u0259yi\u015fdir",
+"Replace with": "Bununla d\u0259yi\u015fdir",
+"Find": "Tap",
+"Replace all": "Ham\u0131s\u0131n\u0131 d\u0259yi\u015fdir",
+"Match case": "Registri n\u0259z\u0259r\u0259 al",
+"Prev": "\u018fvv\u0259lki",
+"Spellcheck": "Orfoqrafiyan\u0131 yoxla",
+"Finish": "Bitir",
+"Ignore all": "Ham\u0131s\u0131n\u0131 iqnorla",
+"Ignore": "\u0130qnorla",
+"Insert row before": "\u018fvv\u0259lin\u0259 s\u0259tir \u0259lav\u0259 et",
+"Rows": "S\u0259tirl\u0259r",
+"Height": "H\u00fcnd\u00fcrl\u00fcy\u00fc",
+"Paste row after": "Sonras\u0131na s\u0259tir \u0259lav\u0259 et",
+"Alignment": "D\u00fczl\u0259ndirm\u0259",
+"Column group": "S\u00fctunun qrupu",
+"Row": "S\u0259tir",
+"Insert column before": "\u018fvv\u0259lin\u0259 s\u0259tir \u0259lav\u0259 et",
+"Split cell": "H\u00fccr\u0259l\u0259rin say\u0131",
+"Cell padding": "H\u00fccr\u0259l\u0259rin sah\u0259l\u0259ri",
+"Cell spacing": "H\u00fccr\u0259l\u0259rin aras\u0131nda m\u0259saf\u0259",
+"Row type": "S\u0259tirin tipi",
+"Insert table": "S\u0259tir \u0259lav\u0259 et",
+"Body": "K\u00fctl\u0259",
+"Caption": "Ba\u015flan\u011f\u0131c",
+"Footer": "Son",
+"Delete row": "S\u0259tiri sil",
+"Paste row before": "\u018fvv\u0259lin\u0259 s\u0259tir \u0259lav\u0259 et",
+"Scope": "Sfera",
+"Delete table": "C\u0259dv\u0259li sil",
+"H Align": "H D\u00fczl\u0259ndir",
+"Top": "Yuxar\u0131",
+"Header cell": "H\u00fccr\u0259nin ba\u015fl\u0131\u011f\u0131",
+"Column": "S\u00fctun",
+"Row group": "S\u0259tirin qrupu",
+"Cell": "H\u00fccr\u0259",
+"Middle": "Orta",
+"Cell type": "H\u00fccr\u0259nin tipi",
+"Copy row": "S\u0259tiri k\u00f6\u00e7\u00fcr",
+"Row properties": "S\u0259tirin x\u00fcsusiyy\u0259tl\u0259ri",
+"Table properties": "C\u0259dv\u0259lin x\u00fcsusiyy\u0259tl\u0259ri",
+"Bottom": "A\u015fa\u011f\u0131",
+"V Align": "V D\u00fczl\u0259ndir",
+"Header": "Ba\u015fl\u0131q",
+"Right": "Sa\u011f t\u0259r\u0259f \u00fczr\u0259",
+"Insert column after": "\u018fvv\u0259lin\u0259 s\u00fctun \u0259lav\u0259 et",
+"Cols": "S\u00fctunlar",
+"Insert row after": "Sonras\u0131na s\u0259tir \u0259lav\u0259 et",
+"Width": "Eni",
+"Cell properties": "H\u00fccr\u0259nin x\u00fcsusiyy\u0259tl\u0259ri",
+"Left": "Sol t\u0259r\u0259f \u00fczr\u0259",
+"Cut row": "S\u0259tiri k\u0259s",
+"Delete column": "S\u00fctunu sil",
+"Center": "M\u0259rk\u0259z \u00fczr\u0259",
+"Merge cells": "H\u00fccr\u0259l\u0259ri birl\u0259\u015ftir",
+"Insert template": "\u015eablon \u0259lav\u0259 et",
+"Templates": "\u015eablonlar",
+"Background color": "Arxafon r\u0259ngi",
+"Custom...": "\u00c7\u0259kilm\u0259...",
+"Custom color": "\u00c7\u0259kilm\u0259 r\u0259ng",
+"No color": "R\u0259ngsiz",
+"Text color": "M\u0259tnin r\u0259ngi",
+"Show blocks": "Bloklar\u0131 g\u00f6st\u0259r",
+"Show invisible characters": "G\u00f6r\u00fcnm\u0259y\u0259n simvollar\u0131 g\u00f6st\u0259r",
+"Words: {0}": "S\u00f6zl\u0259r: {0}",
+"Insert": "\u018flav\u0259 et",
+"File": "Fayl",
+"Edit": "Redakt\u0259 et",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "B\u00f6y\u00fck m\u0259tn sah\u0259si \u0259lav\u0259 edilib. Menyu \u00fc\u00e7\u00fcn ALT-F9 d\u00fcym\u0259sini bas\u0131n. Al\u0259tl\u0259r paneli \u00fc\u00e7\u00fcn ALT-F10 d\u00fcym\u0259sini bas\u0131n. K\u00f6m\u0259k \u00fc\u00e7\u00fcn ALT-0 d\u00fcym\u0259l\u0259rin bas\u0131n.",
+"Tools": "Al\u0259tl\u0259r",
+"View": "G\u00f6r\u00fcn\u00fc\u015f",
+"Table": "C\u0259dv\u0259l",
+"Format": "Format"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/be.js b/program/js/tinymce/langs/be.js
new file mode 100644
index 000000000..ec4e13f16
--- /dev/null
+++ b/program/js/tinymce/langs/be.js
@@ -0,0 +1,197 @@
+tinymce.addI18n('be',{
+"Cut": "\u0412\u044b\u0440\u0430\u0437\u0430\u0446\u044c",
+"Heading 5": "\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 5",
+"Header 2": "\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0412\u0430\u0448 \u0431\u0440\u0430\u045e\u0437\u044d\u0440 \u043d\u0435 \u043f\u0430\u0434\u0442\u0440\u044b\u043c\u043b\u0456\u0432\u0430\u0435 \u043f\u0440\u0430\u043c\u044b \u0434\u043e\u0441\u0442\u0443\u043f \u0434\u0430 \u0431\u0443\u0444\u0435\u0440\u0430 \u0430\u0431\u043c\u0435\u043d\u0443. \u041a\u0430\u043b\u0456 \u043b\u0430\u0441\u043a\u0430, \u0432\u044b\u043a\u0430\u0440\u044b\u0441\u0442\u043e\u045e\u0432\u0430\u0439\u0446\u0435 \u043d\u0430\u0441\u0442\u0443\u043f\u043d\u044b\u044f \u0441\u043f\u0430\u043b\u0443\u0447\u044d\u043d\u043d\u044f \u043a\u043b\u0430\u0432\u0456\u0448: Ctrl + X\/C\/V.",
+"Heading 4": "\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 4",
+"Div": "\u0411\u043b\u043e\u043a",
+"Heading 2": "\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 2",
+"Paste": "\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c",
+"Close": "\u0417\u0430\u0447\u044b\u043d\u0456\u0446\u044c",
+"Font Family": "\u0428\u0440\u044b\u0444\u0442",
+"Pre": "\u041f\u0440\u0430\u0434\u0444\u0430\u0440\u043c\u0430\u0442\u0430\u0432\u0430\u043d\u043d\u0435",
+"Align right": "\u041f\u0430 \u043f\u0440\u0430\u0432\u044b\u043c \u043a\u0440\u0430\u0456",
+"New document": "\u041d\u043e\u0432\u044b \u0434\u0430\u043a\u0443\u043c\u0435\u043d\u0442",
+"Blockquote": "\u0426\u044b\u0442\u0430\u0442\u0430",
+"Numbered list": "\u041d\u0443\u043c\u0430\u0440\u0430\u0432\u0430\u043d\u044b \u0441\u043f\u0456\u0441",
+"Heading 1": "\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 1",
+"Headings": "\u0417\u0430\u0433\u0430\u043b\u043e\u045e\u043a\u0456",
+"Increase indent": "\u041f\u0430\u0432\u044f\u043b\u0456\u0447\u044b\u0446\u044c \u0432\u043e\u0434\u0441\u0442\u0443\u043f",
+"Formats": "\u0424\u0430\u0440\u043c\u0430\u0442",
+"Headers": "\u0417\u0430\u0433\u0430\u043b\u043e\u045e\u043a\u0456",
+"Select all": "\u0412\u044b\u043b\u0443\u0447\u044b\u0446\u044c \u0443\u0441\u0451",
+"Header 3": "\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 3",
+"Blocks": "\u0411\u043b\u043e\u043a\u0456",
+"Undo": "\u0412\u044f\u0440\u043d\u0443\u0446\u044c",
+"Strikethrough": "\u0417\u0430\u043a\u0440\u044d\u0441\u043b\u0435\u043d\u044b",
+"Bullet list": "\u041c\u0430\u0440\u043a\u0456\u0440\u0430\u0432\u0430\u043d\u044b \u0441\u043f\u0456\u0441",
+"Header 1": "\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 1",
+"Superscript": "\u0412\u0435\u0440\u0445\u043d\u0456 \u0456\u043d\u0434\u044d\u043a\u0441",
+"Clear formatting": "\u0410\u0447\u044b\u0441\u0446\u0456\u0446\u044c \u0444\u0430\u0440\u043c\u0430\u0442",
+"Font Sizes": "\u041f\u0430\u043c\u0435\u0440 \u0448\u0440\u044b\u0444\u0442\u0430",
+"Subscript": "\u041d\u0456\u0436\u043d\u0456 \u0456\u043d\u0434\u044d\u043a\u0441",
+"Header 6": "\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 6",
+"Redo": "\u0410\u0434\u043c\u044f\u043d\u0456\u0446\u044c",
+"Paragraph": "\u041f\u0430\u0440\u0430\u0433\u0440\u0430\u0444",
+"Ok": "Ok",
+"Bold": "\u0422\u043b\u0443\u0441\u0442\u044b",
+"Code": "\u041a\u043e\u0434",
+"Italic": "\u041a\u0443\u0440\u0441\u0456\u045e",
+"Align center": "\u041f\u0430 \u0446\u044d\u043d\u0442\u0440\u044b",
+"Header 5": "\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 5",
+"Heading 6": "\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 6",
+"Heading 3": "\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 3",
+"Decrease indent": "\u041f\u0430\u043c\u0435\u043d\u0448\u044b\u0446\u044c \u0432\u043e\u0434\u0441\u0442\u0443\u043f",
+"Header 4": "\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0423\u0441\u0442\u0430\u045e\u043a\u0430 \u0437\u0434\u0437\u044f\u0439\u0441\u043d\u044f\u0435\u0446\u0446\u0430 \u045e \u0432\u044b\u0433\u043b\u044f\u0434\u0437\u0435 \u043f\u0440\u043e\u0441\u0442\u0430\u0433\u0430 \u0442\u044d\u043a\u0441\u0442\u0443, \u043f\u0430\u043a\u0443\u043b\u044c \u043d\u0435 \u0430\u0434\u043a\u043b\u044e\u0447\u044b\u0446\u044c \u0434\u0430\u0434\u0437\u0435\u043d\u0443\u044e \u043e\u043f\u0446\u044b\u044e.",
+"Underline": "\u041f\u0430\u0434\u043a\u0440\u044d\u0441\u043b\u0435\u043d\u044b",
+"Cancel": "\u0410\u0434\u043c\u044f\u043d\u0456\u0446\u044c",
+"Justify": "\u041f\u0430 \u0448\u044b\u0440\u044b\u043d\u0456",
+"Inline": "\u0420\u0430\u0434\u043a\u043e\u0432\u044b",
+"Copy": "\u041a\u0430\u043f\u0456\u0440\u0430\u0432\u0430\u0446\u044c",
+"Align left": "\u041f\u0430 \u043b\u0435\u0432\u044b\u043c \u043a\u0440\u0430\u0456",
+"Visual aids": "\u041f\u0430\u043a\u0430\u0437\u0432\u0430\u0446\u044c \u043a\u043e\u043d\u0442\u0443\u0440\u044b",
+"Lower Greek": "\u041c\u0430\u043b\u044b\u044f \u0433\u0440\u044d\u0447\u0430\u0441\u043a\u0456\u044f \u043b\u0456\u0442\u0430\u0440\u044b",
+"Square": "\u041a\u0432\u0430\u0434\u0440\u0430\u0442\u044b",
+"Default": "\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b",
+"Lower Alpha": "\u041c\u0430\u043b\u044b\u044f \u043b\u0430\u0446\u0456\u043d\u0441\u043a\u0456\u044f \u043b\u0456\u0442\u0430\u0440\u044b",
+"Circle": "\u0410\u043a\u0440\u0443\u0436\u043d\u0430\u0441\u0446\u0456",
+"Disc": "\u041a\u0440\u0443\u0433\u0456",
+"Upper Alpha": "\u0417\u0430\u0433\u0430\u043b\u043e\u045e\u043d\u044b\u044f \u043b\u0430\u0446\u0456\u043d\u0441\u043a\u0456\u044f \u043b\u0456\u0442\u0430\u0440\u044b",
+"Upper Roman": "\u0417\u0430\u0433\u0430\u043b\u043e\u045e\u043d\u044b\u044f \u0440\u044b\u043c\u0441\u043a\u0456\u044f \u043b\u0456\u0447\u0431\u044b",
+"Lower Roman": "\u041c\u0430\u043b\u044b\u044f \u0440\u044b\u043c\u0441\u043a\u0456\u044f \u043b\u0456\u0447\u0431\u044b",
+"Name": "\u0406\u043c\u044f",
+"Anchor": "\u042f\u043a\u0430\u0440",
+"You have unsaved changes are you sure you want to navigate away?": "\u0423 \u0432\u0430\u0441 \u0451\u0441\u0446\u044c \u043d\u0435\u0437\u0430\u0445\u0430\u0432\u0430\u043d\u044b\u044f \u0437\u043c\u0435\u043d\u044b. \u0412\u044b \u045e\u043f\u044d\u045e\u043d\u0435\u043d\u044b\u044f, \u0448\u0442\u043e \u0445\u043e\u0447\u0430\u0446\u0435 \u0432\u044b\u0439\u0441\u0446\u0456?",
+"Restore last draft": "\u0410\u0434\u043d\u0430\u045e\u043b\u0435\u043d\u043d\u0435 \u0430\u043f\u043e\u0448\u043d\u044f\u0433\u0430 \u043f\u0440\u0430\u0435\u043a\u0442\u0430",
+"Special character": "\u0421\u043f\u0435\u0446\u044b\u044f\u043b\u044c\u043d\u044b\u044f \u0441\u0456\u043c\u0432\u0430\u043b\u044b",
+"Source code": "\u0417\u044b\u0445\u043e\u0434\u043d\u044b \u043a\u043e\u0434",
+"Color": "\u041a\u043e\u043b\u0435\u0440",
+"Right to left": "\u0421\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0435\u0432\u0430",
+"Left to right": "\u0417\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u0430",
+"Emoticons": "\u0414\u0430\u0434\u0430\u0446\u044c \u0441\u043c\u0430\u0439\u043b",
+"Robots": "\u0420\u043e\u0431\u0430\u0442\u044b",
+"Document properties": "\u0423\u043b\u0430\u0441\u0446\u0456\u0432\u0430\u0441\u0446\u0456 \u0434\u0430\u043a\u0443\u043c\u0435\u043d\u0442\u0430",
+"Title": "\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a",
+"Keywords": "\u041a\u043b\u044e\u0447\u0430\u0432\u044b\u044f \u0441\u043b\u043e\u0432\u044b",
+"Encoding": "\u041a\u0430\u0434\u044b\u0440\u043e\u045e\u043a\u0430",
+"Description": "\u0410\u043f\u0456\u0441\u0430\u043d\u043d\u0435",
+"Author": "\u0410\u045e\u0442\u0430\u0440",
+"Fullscreen": "\u041f\u043e\u045e\u043d\u0430\u044d\u043a\u0440\u0430\u043d\u043d\u044b \u0440\u044d\u0436\u044b\u043c",
+"Horizontal line": "\u0413\u0430\u0440\u044b\u0437\u0430\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u043b\u0456\u043d\u0456\u044f",
+"Horizontal space": "\u0413\u0430\u0440\u044b\u0437\u0430\u043d\u0442\u0430\u043b\u044c\u043d\u044b \u0456\u043d\u0442\u044d\u0440\u0432\u0430\u043b",
+"Insert\/edit image": "\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c\/\u0440\u044d\u0434\u0430\u0433\u0430\u0432\u0430\u0446\u044c \u0432\u044b\u044f\u0432\u0443",
+"General": "\u0410\u0433\u0443\u043b\u044c\u043d\u0430\u0435",
+"Advanced": "\u041f\u0430\u0448\u044b\u0440\u0430\u043d\u0430\u0435",
+"Source": "\u041a\u0440\u044b\u043d\u0456\u0446\u0430",
+"Border": "\u041c\u044f\u0436\u0430",
+"Constrain proportions": "\u0417\u0430\u0445\u0430\u0432\u0430\u0446\u044c \u043f\u0440\u0430\u043f\u043e\u0440\u0446\u044b\u0456",
+"Vertical space": "\u0412\u0435\u0440\u0442\u044b\u043a\u0430\u043b\u044c\u043d\u044b \u0456\u043d\u0442\u044d\u0440\u0432\u0430\u043b",
+"Image description": "\u0410\u043f\u0456\u0441\u0430\u043d\u043d\u0435 \u0432\u044b\u044f\u0432\u044b",
+"Style": "\u0421\u0442\u044b\u043b\u044c",
+"Dimensions": "\u041f\u0430\u043c\u0435\u0440",
+"Insert image": "\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c \u0432\u044b\u044f\u0432\u0443",
+"Insert date\/time": "\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c \u0434\u0430\u0442\u0443\/\u0447\u0430\u0441",
+"Remove link": "\u0412\u044b\u0434\u0430\u043b\u0456\u0446\u044c \u0441\u043f\u0430\u0441\u044b\u043b\u043a\u0443",
+"Url": "\u0410\u0434\u0440\u0430\u0441 \u0441\u043f\u0430\u0441\u044b\u043b\u043a\u0456",
+"Text to display": "\u0422\u044d\u043a\u0441\u0442 \u0441\u043f\u0430\u0441\u044b\u043b\u043a\u0456",
+"Anchors": "\u042f\u043a\u0430\u0440\u044b",
+"Insert link": "\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c \u0441\u043f\u0430\u0441\u044b\u043b\u043a\u0443",
+"New window": "\u0423 \u043d\u043e\u0432\u044b\u043c \u0430\u043a\u043d\u0435",
+"None": "\u041d\u044f\u043c\u0430",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u0423\u0432\u0435\u0434\u0437\u0435\u043d\u044b \u0430\u0434\u0440\u0430\u0441 \u043f\u0430\u0434\u043e\u0431\u043d\u044b \u043d\u0430 \u0437\u043d\u0435\u0448\u043d\u044e\u044e \u0441\u043f\u0430\u0441\u044b\u043b\u043a\u0443. \u0416\u0430\u0434\u0430\u0435\u0446\u0435 \u0434\u0430\u0434\u0430\u0446\u044c \u043d\u0435\u0430\u0431\u0445\u043e\u0434\u043d\u044b http:\/\/ \u043f\u0440\u044d\u0444\u0456\u043a\u0441?",
+"Target": "\u0410\u0434\u043a\u0440\u044b\u0432\u0430\u0446\u044c \u0441\u043f\u0430\u0441\u044b\u043b\u043a\u0443",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u0423\u0432\u0435\u0434\u0437\u0435\u043d\u044b \u0430\u0434\u0440\u0430\u0441 \u043f\u0430\u0434\u043e\u0431\u043d\u044b \u043d\u0430 \u0430\u0434\u0440\u0430\u0441 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0430\u0439 \u043f\u043e\u0448\u0442\u044b. \u0416\u0430\u0434\u0430\u0435\u0446\u0435 \u0434\u0430\u0434\u0430\u0446\u044c \u043d\u0435\u0430\u0431\u0445\u043e\u0434\u043d\u044b mailto: \u043f\u0440\u044d\u0444\u0456\u043a\u0441?",
+"Insert\/edit link": "\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c\/\u0440\u044d\u0434\u0430\u0433\u0430\u0432\u0430\u0446\u044c \u0441\u043f\u0430\u0441\u044b\u043b\u043a\u0443",
+"Insert\/edit video": "\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c\/\u0440\u044d\u0434\u0430\u0433\u0430\u0432\u0430\u0446\u044c \u0432\u0456\u0434\u044d\u0430",
+"Poster": "\u0412\u044b\u044f\u0432\u0430",
+"Alternative source": "\u0410\u043b\u044c\u0442\u044d\u0440\u043d\u0430\u0442\u044b\u045e\u043d\u0430\u044f \u043a\u0440\u044b\u043d\u0456\u0446\u0430",
+"Paste your embed code below:": "\u0423\u0441\u0442\u0430\u045e\u0446\u0435 \u0432\u0430\u0448 \u043a\u043e\u0434 \u043d\u0456\u0436\u044d\u0439:",
+"Insert video": "\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c \u0432\u0456\u0434\u044d\u0430",
+"Embed": "\u041a\u043e\u0434 \u0434\u043b\u044f \u045e\u0441\u0442\u0430\u045e\u043a\u0456",
+"Nonbreaking space": "\u041d\u0435\u043f\u0430\u0440\u044b\u045e\u043d\u044b \u043f\u0440\u0430\u0431\u0435\u043b",
+"Page break": "\u0420\u0430\u0437\u0440\u044b\u045e \u0441\u0442\u0430\u0440\u043e\u043d\u043a\u0456",
+"Paste as text": "\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c \u044f\u043a \u0442\u044d\u043a\u0441\u0442",
+"Preview": "\u041f\u0440\u0430\u0434\u043f\u0440\u0430\u0433\u043b\u044f\u0434",
+"Print": "\u0414\u0440\u0443\u043a",
+"Save": "\u0417\u0430\u0445\u0430\u0432\u0430\u0446\u044c",
+"Could not find the specified string.": "\u0417\u0430\u0434\u0430\u0434\u0437\u0435\u043d\u044b \u0440\u0430\u0434\u043e\u043a \u043d\u0435 \u0437\u043d\u043e\u0439\u0434\u0437\u0435\u043d\u044b",
+"Replace": "\u0417\u043c\u044f\u043d\u0456\u0446\u044c",
+"Next": "\u0423\u043d\u0456\u0437",
+"Whole words": "\u0421\u043b\u043e\u0432\u044b \u0446\u0430\u043b\u043a\u0430\u043c",
+"Find and replace": "\u041f\u043e\u0448\u0443\u043a \u0456 \u0437\u0430\u043c\u0435\u043d\u0430",
+"Replace with": "\u0417\u043c\u044f\u043d\u0456\u0446\u044c \u043d\u0430",
+"Find": "\u0417\u043d\u0430\u0439\u0441\u0446\u0456",
+"Replace all": "\u0417\u043c\u044f\u043d\u0456\u0446\u044c \u0443\u0441\u0435",
+"Match case": "\u0423\u043b\u0456\u0447\u0432\u0430\u0446\u044c \u0440\u044d\u0433\u0456\u0441\u0442\u0440",
+"Prev": "\u0423\u0432\u0435\u0440\u0445",
+"Spellcheck": "\u041f\u0440\u0430\u0432\u0435\u0440\u043a\u0430 \u043f\u0440\u0430\u0432\u0430\u043f\u0456\u0441\u0443",
+"Finish": "\u0421\u043a\u043e\u043d\u0447\u044b\u0446\u044c",
+"Ignore all": "\u0406\u0433\u043d\u0430\u0440\u0430\u0432\u0430\u0446\u044c \u0443\u0441\u0435",
+"Ignore": "\u0406\u0433\u043d\u0430\u0440\u0430\u0432\u0430\u0446\u044c",
+"Add to Dictionary": "\u0414\u0430\u0434\u0430\u0446\u044c \u0443 \u0441\u043b\u043e\u045e\u043d\u0456\u043a",
+"Insert row before": "\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c \u0440\u0430\u0434\u043e\u043a \u0437\u0432\u0435\u0440\u0445\u0443",
+"Rows": "\u0420\u0430\u0434\u043a\u0456",
+"Height": "\u0412\u044b\u0448\u044b\u043d\u044f",
+"Paste row after": "\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c \u0440\u0430\u0434\u043e\u043a \u0437\u043d\u0456\u0437\u0443",
+"Alignment": "\u0412\u044b\u0440\u0430\u045e\u043d\u043e\u045e\u0432\u0430\u043d\u043d\u0435",
+"Border color": "\u041a\u043e\u043b\u0435\u0440 \u043c\u044f\u0436\u044b",
+"Column group": "\u0413\u0440\u0443\u043f\u0430 \u0441\u043b\u0443\u043f\u043a\u043e\u045e",
+"Row": "\u0420\u0430\u0434\u043e\u043a",
+"Insert column before": "\u0414\u0430\u0434\u0430\u0446\u044c \u0441\u043b\u0443\u043f\u043e\u043a \u0437\u043b\u0435\u0432\u0430",
+"Split cell": "\u0420\u0430\u0437\u0431\u0456\u0446\u044c \u044f\u0447\u044d\u0439\u043a\u0443",
+"Cell padding": "\u0423\u043d\u0443\u0442\u0440\u0430\u043d\u044b \u0432\u043e\u0434\u0441\u0442\u0443\u043f",
+"Cell spacing": "\u0417\u043d\u0435\u0448\u043d\u0456 \u0432\u043e\u0434\u0441\u0442\u0443\u043f",
+"Row type": "\u0422\u044b\u043f \u0440\u0430\u0434\u043a\u0430",
+"Insert table": "\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c \u0442\u0430\u0431\u043b\u0456\u0446\u0443",
+"Body": "\u0426\u0435\u043b\u0430",
+"Caption": "\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a",
+"Footer": "\u041d\u0456\u0437",
+"Delete row": "\u0412\u044b\u0434\u0430\u043b\u0456\u0446\u044c \u0440\u0430\u0434\u043e\u043a",
+"Paste row before": "\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c \u0440\u0430\u0434\u043e\u043a \u0437\u0432\u0435\u0440\u0445\u0443",
+"Scope": "\u0421\u0444\u0435\u0440\u0430",
+"Delete table": "\u0412\u044b\u0434\u0430\u043b\u0456\u0446\u044c \u0442\u0430\u0431\u043b\u0456\u0446\u0443",
+"H Align": "\u0413\u0430\u0440. \u0432\u044b\u0440\u0430\u045e\u043d\u043e\u045e\u0432\u0430\u043d\u043d\u0435",
+"Top": "\u0412\u0435\u0440\u0445",
+"Header cell": "\u0417\u0430\u0433\u0430\u043b\u043e\u0432\u0430\u043a",
+"Column": "\u0421\u043b\u0443\u043f\u043e\u043a",
+"Row group": "\u0413\u0440\u0443\u043f\u0430 \u0440\u0430\u0434\u043a\u043e\u045e",
+"Cell": "\u042f\u0447\u044d\u0439\u043a\u0430",
+"Middle": "\u0421\u044f\u0440\u044d\u0434\u0437\u0456\u043d\u0430",
+"Cell type": "\u0422\u044b\u043f \u044f\u0447\u044d\u0439\u043a\u0456",
+"Copy row": "\u041a\u0430\u043f\u0456\u044f\u0432\u0430\u0446\u044c \u0440\u0430\u0434\u043e\u043a",
+"Row properties": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0440\u0430\u0434\u043a\u0430",
+"Table properties": "\u0423\u043b\u0430\u0441\u0446\u0456\u0432\u0430\u0441\u0446\u0456 \u0442\u0430\u0431\u043b\u0456\u0446\u044b",
+"Bottom": "\u041d\u0456\u0437",
+"V Align": "\u0412\u0435\u0440. \u0432\u044b\u0440\u0430\u045e\u043d\u043e\u045e\u0432\u0430\u043d\u043d\u0435",
+"Header": "\u0428\u0430\u043f\u043a\u0430",
+"Right": "\u041f\u0430 \u043f\u0440\u0430\u0432\u044b\u043c \u043a\u0440\u0430\u0456",
+"Insert column after": "\u0414\u0430\u0434\u0430\u0446\u044c \u0441\u043b\u0443\u043f\u043e\u043a \u0441\u043f\u0440\u0430\u0432\u0430",
+"Cols": "\u0421\u043b\u0443\u043f\u043a\u0456",
+"Insert row after": "\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c \u0440\u0430\u0434\u043e\u043a \u0437\u043d\u0456\u0437\u0443",
+"Width": "\u0428\u044b\u0440\u044b\u043d\u044f",
+"Cell properties": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u044f\u0447\u044d\u0439\u043a\u0456",
+"Left": "\u041f\u0430 \u043b\u0435\u0432\u044b\u043c \u043a\u0440\u0430\u0456",
+"Cut row": "\u0412\u044b\u0440\u0430\u0437\u0430\u0446\u044c \u0440\u0430\u0434\u043e\u043a",
+"Delete column": "\u0412\u044b\u0434\u0430\u043b\u0456\u0446\u044c \u0441\u043b\u0443\u043f\u043e\u043a",
+"Center": "\u041f\u0430 \u0446\u044d\u043d\u0442\u0440\u044b",
+"Merge cells": "\u0410\u0431'\u044f\u0434\u043d\u0430\u0446\u044c \u044f\u0447\u044d\u0439\u043a\u0456",
+"Insert template": "\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c \u0448\u0430\u0431\u043b\u043e\u043d",
+"Templates": "\u0428\u0430\u0431\u043b\u043e\u043d\u044b",
+"Background color": "\u041a\u043e\u043b\u0435\u0440 \u0444\u043e\u043d\u0443",
+"Custom...": "\u041a\u0430\u0440\u044b\u0441\u0442\u0430\u0446\u043a\u0456...",
+"Custom color": "\u041a\u0430\u0440\u044b\u0441\u0442\u0430\u0446\u043a\u0456 \u043a\u043e\u043b\u0435\u0440",
+"No color": "\u0411\u0435\u0437 \u043a\u043e\u043b\u0435\u0440\u0443",
+"Text color": "\u041a\u043e\u043b\u0435\u0440 \u0442\u044d\u043a\u0441\u0442\u0443",
+"Show blocks": "\u041f\u0430\u043a\u0430\u0437\u0432\u0430\u0446\u044c \u0431\u043b\u043e\u043a\u0456",
+"Show invisible characters": "\u041f\u0430\u043a\u0430\u0437\u0432\u0430\u0446\u044c \u043d\u044f\u0431\u0430\u0447\u043d\u044b\u044f \u0441\u0456\u043c\u0432\u0430\u043b\u044b",
+"Words: {0}": "\u041a\u043e\u043b\u044c\u043a\u0430\u0441\u0446\u044c \u0441\u043b\u043e\u045e: {0}",
+"Insert": "\u0423\u0441\u0442\u0430\u0432\u0456\u0446\u044c",
+"File": "\u0424\u0430\u0439\u043b",
+"Edit": "\u0417\u043c\u044f\u043d\u0456\u0446\u044c",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u0422\u044d\u043a\u0441\u0442\u0430\u0432\u0430\u0435 \u043f\u043e\u043b\u0435. \u041d\u0430\u0446\u0456\u0441\u043d\u0456\u0446\u0435 ALT-F9, \u043a\u0430\u0431 \u0432\u044b\u043a\u043b\u0456\u043a\u0430\u0446\u044c \u043c\u0435\u043d\u044e, ALT-F10 - \u043f\u0430\u043d\u044d\u043b\u044c \u043f\u0440\u044b\u043b\u0430\u0434\u0430\u045e, ALT-0 - \u0434\u043b\u044f \u0432\u044b\u043a\u043b\u0456\u043a\u0443 \u0434\u0430\u043f\u0430\u043c\u043e\u0433\u0456.",
+"Tools": "\u041f\u0440\u044b\u043b\u0430\u0434\u044b",
+"View": "\u0412\u044b\u0433\u043b\u044f\u0434",
+"Table": "\u0422\u0430\u0431\u043b\u0456\u0446\u0430",
+"Format": "\u0424\u0430\u0440\u043c\u0430\u0442"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/bg_BG.js b/program/js/tinymce/langs/bg_BG.js
new file mode 100644
index 000000000..dddfab49d
--- /dev/null
+++ b/program/js/tinymce/langs/bg_BG.js
@@ -0,0 +1,179 @@
+tinymce.addI18n('bg_BG',{
+"Cut": "\u0418\u0437\u0440\u044f\u0437\u0432\u0430\u043d\u0435",
+"Header 2": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0412\u0430\u0448\u0438\u044f\u0442 \u0431\u0440\u0430\u0443\u0437\u044a\u0440 \u043d\u0435 \u043f\u043e\u0434\u0434\u044a\u0440\u0436\u0430 \u0434\u0438\u0440\u0435\u043a\u0442\u0435\u043d \u0434\u043e\u0441\u0442\u044a\u043f \u0434\u043e \u043a\u043b\u0438\u043f\u0431\u043e\u0440\u0434\u0430. \u0412\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0432\u0430 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0439\u0442\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u043d\u0438\u0442\u0435 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 Ctrl+X (\u0437\u0430 \u0438\u0437\u0440\u044f\u0437\u0432\u0430\u043d\u0435), Ctrl+C (\u0437\u0430 \u043a\u043e\u043f\u0438\u0440\u0430\u043d\u0435) \u0438 Ctrl+V (\u0437\u0430 \u043f\u043e\u0441\u0442\u0430\u0432\u044f\u043d\u0435).",
+"Div": "\u0411\u043b\u043e\u043a",
+"Paste": "\u041f\u043e\u0441\u0442\u0430\u0432\u044f\u043d\u0435",
+"Close": "\u0417\u0430\u0442\u0432\u0430\u0440\u044f\u043d\u0435",
+"Font Family": "\u0428\u0440\u0438\u0444\u0442",
+"Pre": "\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u043d\u043e \u043e\u0444\u043e\u0440\u043c\u0435\u043d \u0442\u0435\u043a\u0441\u0442",
+"Align right": "\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435 \u043e\u0442\u0434\u044f\u0441\u043d\u043e",
+"New document": "\u041d\u043e\u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442",
+"Blockquote": "\u0426\u0438\u0442\u0430\u0442",
+"Numbered list": "\u041d\u043e\u043c\u0435\u0440\u0438\u0440\u0430\u043d \u0441\u043f\u0438\u0441\u044a\u043a",
+"Increase indent": "\u0423\u0432\u0435\u043b\u0438\u0447\u0430\u0432\u0430\u043d\u0435 \u043d\u0430 \u043e\u0442\u0441\u0442\u044a\u043f\u0430",
+"Formats": "\u0424\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0430\u043d\u0435",
+"Headers": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u044f",
+"Select all": "\u041c\u0430\u0440\u043a\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0446\u044f\u043b\u043e\u0442\u043e \u0441\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435",
+"Header 3": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 3",
+"Blocks": "\u0411\u043b\u043e\u043a\u043e\u0432\u0435",
+"Undo": "\u0412\u044a\u0440\u043d\u0438",
+"Strikethrough": "\u0417\u0430\u0447\u0435\u0440\u0442\u0430\u0432\u0430\u043d\u0435",
+"Bullet list": "\u0421\u043f\u0438\u0441\u044a\u043a \u0441 \u0432\u043e\u0434\u0430\u0447\u0438",
+"Header 1": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 1",
+"Superscript": "\u0413\u043e\u0440\u0435\u043d \u0438\u043d\u0434\u0435\u043a\u0441",
+"Clear formatting": "\u0418\u0437\u0447\u0438\u0441\u0442\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0430\u043d\u0435\u0442\u043e",
+"Font Sizes": "\u0420\u0430\u0437\u043c\u0435\u0440 \u043d\u0430 \u0448\u0440\u0438\u0444\u0442\u0430",
+"Subscript": "\u0414\u043e\u043b\u0435\u043d \u0438\u043d\u0434\u0435\u043a\u0441",
+"Header 6": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 6",
+"Redo": "\u041e\u0442\u043c\u0435\u043d\u0438",
+"Paragraph": "\u041f\u0430\u0440\u0430\u0433\u0440\u0430\u0444",
+"Ok": "\u0414\u043e\u0431\u0440\u0435",
+"Bold": "\u0423\u0434\u0435\u0431\u0435\u043b\u0435\u043d (\u043f\u043e\u043b\u0443\u0447\u0435\u0440)",
+"Code": "\u041a\u043e\u0434",
+"Italic": "\u041d\u0430\u043a\u043b\u043e\u043d\u0435\u043d (\u043a\u0443\u0440\u0441\u0438\u0432)",
+"Align center": "\u0426\u0435\u043d\u0442\u0440\u0438\u0440\u0430\u043d\u043e",
+"Header 5": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 5",
+"Decrease indent": "\u041d\u0430\u043c\u0430\u043b\u044f\u0432\u0430\u043d\u0435 \u043d\u0430 \u043e\u0442\u0441\u0442\u044a\u043f\u0430",
+"Header 4": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u041f\u043e\u0441\u0442\u0430\u0432\u044f\u043d\u0435\u0442\u043e \u0432 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0435 \u0432 \u043e\u0431\u0438\u043a\u043d\u043e\u0432\u0435\u043d \u0440\u0435\u0436\u0438\u043c. \u0421\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435\u0442\u043e \u0449\u0435 \u0431\u044a\u0434\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u0435\u043d\u043e \u043a\u0430\u0442\u043e \u043d\u0435\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0430\u043d \u0442\u0435\u043a\u0441\u0442, \u0434\u043e\u043a\u0430\u0442\u043e \u0438\u0437\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0442\u0430\u0437\u0438 \u043e\u043f\u0446\u0438\u044f.",
+"Underline": "\u041f\u043e\u0434\u0447\u0435\u0440\u0442\u0430\u043d",
+"Cancel": "\u041e\u0442\u043a\u0430\u0437",
+"Justify": "\u0414\u0432\u0443\u0441\u0442\u0440\u0430\u043d\u043d\u043e \u043f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435",
+"Inline": "\u041d\u0430 \u0435\u0434\u0438\u043d \u0440\u0435\u0434",
+"Copy": "\u041a\u043e\u043f\u0438\u0440\u0430\u043d\u0435",
+"Align left": "\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435 \u043e\u0442\u043b\u044f\u0432\u043e",
+"Visual aids": "\u0412\u0438\u0437\u0443\u0430\u043b\u043d\u043e \u043e\u0442\u043a\u0440\u043e\u044f\u0432\u0430\u043d\u0435 \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0438 \u0431\u0435\u0437 \u043a\u0430\u043d\u0442\u043e\u0432\u0435 (\u0440\u0430\u043c\u043a\u0438)",
+"Lower Greek": "\u041c\u0430\u043b\u043a\u0438 \u0433\u0440\u044a\u0446\u043a\u0438 \u0431\u0443\u043a\u0432\u0438",
+"Square": "\u0417\u0430\u043f\u044a\u043b\u043d\u0435\u043d\u0438 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438",
+"Default": "\u041f\u043e \u043f\u043e\u0434\u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043d\u0435",
+"Lower Alpha": "\u041c\u0430\u043b\u043a\u0438 \u0431\u0443\u043a\u0432\u0438",
+"Circle": "\u041e\u043a\u0440\u044a\u0436\u043d\u043e\u0441\u0442\u0438",
+"Disc": "\u041a\u0440\u044a\u0433\u0447\u0435\u0442\u0430",
+"Upper Alpha": "\u0413\u043b\u0430\u0432\u043d\u0438 \u0431\u0443\u043a\u0432\u0438",
+"Upper Roman": "\u0420\u0438\u043c\u0441\u043a\u0438 \u0447\u0438\u0441\u043b\u0430 \u0441 \u0433\u043b\u0430\u0432\u043d\u0438 \u0431\u0443\u043a\u0432\u0438",
+"Lower Roman": "\u0420\u0438\u043c\u0441\u043a\u0438 \u0447\u0438\u0441\u043b\u0430 \u0441 \u043c\u0430\u043b\u043a\u0438 \u0431\u0443\u043a\u0432\u0438",
+"Name": "\u041d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435",
+"Anchor": "\u041a\u043e\u0442\u0432\u0430 (\u0432\u0440\u044a\u0437\u043a\u0430 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430)",
+"You have unsaved changes are you sure you want to navigate away?": "\u0412 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0438\u043c\u0430 \u043d\u0435\u0437\u0430\u043f\u0430\u0437\u0435\u043d\u0438 \u043f\u0440\u043e\u043c\u0435\u043d\u0438. \u0429\u0435 \u043f\u0440\u043e\u0434\u044a\u043b\u0436\u0438\u0442\u0435 \u043b\u0438?",
+"Restore last draft": "\u0412\u044a\u0437\u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0432\u0430\u043d\u0435 \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0430\u0442\u0430 \u0447\u0435\u0440\u043d\u043e\u0432\u0430",
+"Special character": "\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u0435\u043d \u0437\u043d\u0430\u043a",
+"Source code": "\u0418\u0437\u0445\u043e\u0434\u0435\u043d \u043a\u043e\u0434 \u043d\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0432 HTML",
+"Right to left": "\u041e\u0442\u0434\u044f\u0441\u043d\u043e \u043d\u0430\u043b\u044f\u0432\u043e",
+"Left to right": "\u041e\u0442\u043b\u044f\u0432\u043e \u043d\u0430\u0434\u044f\u0441\u043d\u043e",
+"Emoticons": "\u0415\u043c\u043e\u0442\u0438\u043a\u043e\u043d\u0438",
+"Robots": "\u0420\u043e\u0431\u043e\u0442\u0438 \u043d\u0430 \u0443\u0435\u0431 \u0442\u044a\u0440\u0441\u0430\u0447\u043a\u0438",
+"Document properties": "\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430",
+"Title": "\u041d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435",
+"Keywords": "\u041a\u043b\u044e\u0447\u043e\u0432\u0438 \u0434\u0443\u043c\u0438",
+"Encoding": "\u041a\u043e\u0434\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0437\u043d\u0430\u0446\u0438\u0442\u0435",
+"Description": "\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435",
+"Author": "\u0410\u0432\u0442\u043e\u0440",
+"Fullscreen": "\u041d\u0430 \u0446\u044f\u043b \u0435\u043a\u0440\u0430\u043d",
+"Horizontal line": "\u0425\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u043d\u0430 \u0447\u0435\u0440\u0442\u0430",
+"Horizontal space": "\u0425\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e",
+"Insert\/edit image": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435\/\u043a\u043e\u0440\u0435\u043a\u0446\u0438\u044f \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430",
+"General": "\u041e\u0431\u0449\u043e",
+"Advanced": "\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e",
+"Source": "\u0410\u0434\u0440\u0435\u0441",
+"Border": "\u041a\u0430\u043d\u0442 (\u0440\u0430\u043c\u043a\u0430)",
+"Constrain proportions": "\u0417\u0430\u0432\u0430\u0437\u043d\u0430\u0432\u0435 \u043d\u0430 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u0438\u0442\u0435",
+"Vertical space": "\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e",
+"Image description": "\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u0442\u0430",
+"Style": "\u0421\u0442\u0438\u043b",
+"Dimensions": "\u0420\u0430\u0437\u043c\u0435\u0440",
+"Insert image": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",
+"Insert date\/time": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0434\u0430\u0442\u0430\/\u0447\u0430\u0441",
+"Remove link": "\u041f\u0440\u0435\u043c\u0430\u0445\u0432\u0430\u043d\u0435 \u043d\u0430 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430",
+"Url": "\u0410\u0434\u0440\u0435\u0441 (URL)",
+"Text to display": "\u0422\u0435\u043a\u0441\u0442",
+"Anchors": "\u041a\u043e\u0442\u0432\u0438",
+"Insert link": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430 (\u043b\u0438\u043d\u043a)",
+"New window": "\u0412 \u043d\u043e\u0432 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446 (\u043f\u043e\u0434\u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446)",
+"None": "\u0411\u0435\u0437",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?",
+"Target": "\u0426\u0435\u043b \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",
+"Insert\/edit link": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435\/\u043a\u043e\u0440\u0435\u043a\u0446\u0438\u044f \u043d\u0430 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430 (\u043b\u0438\u043d\u043a)",
+"Insert\/edit video": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435\/\u043a\u043e\u0440\u0435\u043a\u0446\u0438\u044f \u043d\u0430 \u0432\u0438\u0434\u0435\u043e",
+"Poster": "\u041f\u043e\u0441\u0442\u0435\u0440",
+"Alternative source": "\u0410\u043b\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0435\u043d \u0430\u0434\u0440\u0435\u0441",
+"Paste your embed code below:": "\u041f\u043e\u0441\u0442\u0430\u0432\u0435\u0442\u0435 \u043a\u043e\u0434\u0430 \u0437\u0430 \u0432\u0433\u0440\u0430\u0436\u0434\u0430\u043d\u0435 \u0432 \u043f\u043e\u043b\u0435\u0442\u043e \u043f\u043e-\u0434\u043e\u043b\u0443:",
+"Insert video": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0432\u0438\u0434\u0435\u043e",
+"Embed": "\u0412\u0433\u0440\u0430\u0436\u0434\u0430\u043d\u0435",
+"Nonbreaking space": "\u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b",
+"Page break": "\u041d\u043e\u0432\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430",
+"Paste as text": "\u041f\u043e\u0441\u0442\u0430\u0432\u0438 \u043a\u0430\u0442\u043e \u0442\u0435\u043a\u0441\u0442",
+"Preview": "\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u0435\u043d \u0438\u0437\u0433\u043b\u0435\u0434",
+"Print": "\u041f\u0435\u0447\u0430\u0442",
+"Save": "\u0421\u044a\u0445\u0440\u0430\u043d\u044f\u0432\u0430\u043d\u0435",
+"Could not find the specified string.": "\u0422\u044a\u0440\u0441\u0435\u043d\u0438\u044f\u0442 \u0442\u0435\u043a\u0441\u0442 \u043d\u0435 \u0435 \u043d\u0430\u043c\u0435\u0440\u0435\u043d.",
+"Replace": "\u0417\u0430\u043c\u044f\u043d\u0430",
+"Next": "\u0421\u043b\u0435\u0434\u0432\u0430\u0449",
+"Whole words": "\u0421\u0430\u043c\u043e \u0446\u0435\u043b\u0438 \u0434\u0443\u043c\u0438",
+"Find and replace": "\u0422\u044a\u0440\u0441\u0435\u043d\u0435 \u0438 \u0437\u0430\u043c\u044f\u043d\u0430",
+"Replace with": "\u0417\u0430\u043c\u044f\u043d\u0430 \u0441",
+"Find": "\u0422\u044a\u0440\u0441\u0435\u043d\u0435 \u0437\u0430",
+"Replace all": "\u0417\u0430\u043c\u044f\u043d\u0430 \u043d\u0430 \u0432\u0441\u0438\u0447\u043a\u0438 \u0441\u0440\u0435\u0449\u0430\u043d\u0438\u044f",
+"Match case": "\u0421\u044a\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u043d\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u044a\u0440\u0430 (\u043c\u0430\u043b\u043a\u0438\/\u0433\u043b\u0430\u0432\u043d\u0438 \u0431\u0443\u043a\u0432\u0438)",
+"Prev": "\u041f\u0440\u0435\u0434\u0438\u0448\u0435\u043d",
+"Spellcheck": "\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u043f\u0440\u0430\u0432\u043e\u043f\u0438\u0441\u0430",
+"Finish": "\u041a\u0440\u0430\u0439",
+"Ignore all": "\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0432\u0441\u0438\u0447\u043a\u043e",
+"Ignore": "\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u0430\u043d\u0435",
+"Insert row before": "\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435 \u043d\u0430 \u0440\u0435\u0434 \u043f\u0440\u0435\u0434\u0438",
+"Rows": "\u0420\u0435\u0434\u043e\u0432\u0435",
+"Height": "\u0412\u0438\u0441\u043e\u0447\u0438\u043d\u0430",
+"Paste row after": "\u041f\u043e\u0441\u0442\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0440\u0435\u0434 \u0441\u043b\u0435\u0434",
+"Alignment": "\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435",
+"Column group": "Column group",
+"Row": "\u0420\u0435\u0434",
+"Insert column before": "\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435 \u043d\u0430 \u043a\u043e\u043b\u043e\u043d\u0430 \u043f\u0440\u0435\u0434\u0438",
+"Split cell": "\u0420\u0430\u0437\u0434\u0435\u043b\u044f\u043d\u0435 \u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0430",
+"Cell padding": "\u0420\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u043e \u0441\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435\u0442\u043e",
+"Cell spacing": "\u0420\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u043a\u043b\u0435\u0442\u043a\u0438\u0442\u0435",
+"Row type": "\u0422\u0438\u043f \u043d\u0430 \u0440\u0435\u0434\u0430",
+"Insert table": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430",
+"Body": "\u0421\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435 (body)",
+"Caption": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0437\u0430\u0433\u043b\u0430\u0432\u0438\u0435 \u043f\u0440\u0435\u0434\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430",
+"Footer": "\u0414\u043e\u043b\u0435\u043d \u043a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b (footer)",
+"Delete row": "\u0418\u0437\u0442\u0440\u0438\u0432\u0430\u043d\u0435 \u043d\u0430 \u0440\u0435\u0434\u0430",
+"Paste row before": "\u041f\u043e\u0441\u0442\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0440\u0435\u0434 \u043f\u0440\u0435\u0434\u0438",
+"Scope": "\u041e\u0431\u0445\u0432\u0430\u0442",
+"Delete table": "\u0418\u0437\u0442\u0440\u0438\u0432\u0430\u043d\u0435 \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430",
+"Header cell": "\u0417\u0430\u0433\u043b\u0430\u0432\u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0430 (\u0430\u043d\u0442\u0435\u0442\u043a\u0430)",
+"Column": "\u041a\u043e\u043b\u043e\u043d\u0430",
+"Cell": "\u041a\u043b\u0435\u0442\u043a\u0430",
+"Header": "\u0413\u043e\u0440\u0435\u043d \u043a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b (header)",
+"Cell type": "\u0422\u0438\u043f \u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0430\u0442\u0430",
+"Copy row": "\u041a\u043e\u043f\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0440\u0435\u0434",
+"Row properties": "\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430 \u0440\u0435\u0434\u0430",
+"Table properties": "\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430",
+"Row group": "Row group",
+"Right": "\u0414\u044f\u0441\u043d\u043e",
+"Insert column after": "\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435 \u043d\u0430 \u043a\u043e\u043b\u043e\u043d\u0430 \u0441\u043b\u0435\u0434",
+"Cols": "\u041a\u043e\u043b\u043e\u043d\u0438",
+"Insert row after": "\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435 \u043d\u0430 \u0440\u0435\u0434 \u0441\u043b\u0435\u0434",
+"Width": "\u0428\u0438\u0440\u0438\u043d\u0430",
+"Cell properties": "\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0430\u0442\u0430",
+"Left": "\u041b\u044f\u0432\u043e",
+"Cut row": "\u0418\u0437\u0440\u044f\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 \u0440\u0435\u0434",
+"Delete column": "\u0418\u0437\u0442\u0440\u0438\u0432\u0430\u043d\u0435 \u043d\u0430 \u043a\u043e\u043b\u043e\u043d\u0430\u0442\u0430",
+"Center": "\u0426\u0435\u043d\u0442\u0440\u0438\u0440\u0430\u043d\u043e",
+"Merge cells": "\u0421\u043b\u0438\u0432\u0430\u043d\u0435 \u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0438\u0442\u0435",
+"Insert template": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0448\u0430\u0431\u043b\u043e\u043d",
+"Templates": "\u0428\u0430\u0431\u043b\u043e\u043d\u0438",
+"Background color": "\u0424\u043e\u043d\u043e\u0432 \u0446\u0432\u044f\u0442",
+"Text color": "\u0426\u0432\u044f\u0442 \u043d\u0430 \u0448\u0440\u0438\u0444\u0442\u0430",
+"Show blocks": "\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 \u0431\u043b\u043e\u043a\u043e\u0432\u0435\u0442\u0435",
+"Show invisible characters": "\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 \u043d\u0435\u043f\u0435\u0447\u0430\u0442\u0430\u0435\u043c\u0438 \u0437\u043d\u0430\u0446\u0438",
+"Words: {0}": "\u0411\u0440\u043e\u0439 \u0434\u0443\u043c\u0438: {0}",
+"Insert": "\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435",
+"File": "\u0424\u0430\u0439\u043b",
+"Edit": "\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u043d\u0435",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u041f\u043e\u043b\u0435 \u0437\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0430\u043d \u0442\u0435\u043a\u0441\u0442. \u041d\u0430\u0442\u0438\u0441\u043d\u0435\u0442\u0435 Alt+F9 \u0437\u0430 \u043c\u0435\u043d\u044e; Alt+F10 \u0437\u0430 \u043b\u0435\u043d\u0442\u0430 \u0441 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0438; Alt+0 \u0437\u0430 \u043f\u043e\u043c\u043e\u0449.",
+"Tools": "\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0438",
+"View": "\u0418\u0437\u0433\u043b\u0435\u0434",
+"Table": "\u0422\u0430\u0431\u043b\u0438\u0446\u0430",
+"Format": "\u0424\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0430\u043d\u0435"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/bn_BD.js b/program/js/tinymce/langs/bn_BD.js
new file mode 100644
index 000000000..5751e0c33
--- /dev/null
+++ b/program/js/tinymce/langs/bn_BD.js
@@ -0,0 +1,179 @@
+tinymce.addI18n('bn_BD',{
+"Cut": "\u0995\u09b0\u09cd\u09a4\u09a8",
+"Header 2": "\u09b9\u09c7\u09a1\u09be\u09b0 \u09e8",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.",
+"Div": "\u09a1\u09bf\u09ad",
+"Paste": "\u0986\u099f\u0995\u09c7 \u09a6\u09bf\u09a8",
+"Close": "\u09ac\u09a8\u09cd\u09a7",
+"Font Family": "Font Family",
+"Pre": "Pre",
+"Align right": "Align right",
+"New document": "\u09a8\u09a4\u09c1\u09a8 \u09a6\u09b8\u09cd\u09a4\u09be\u09ac\u09c7\u099c",
+"Blockquote": "Blockquote",
+"Numbered list": "Numbered list",
+"Increase indent": "Increase indent",
+"Formats": "Formats",
+"Headers": "\u09b9\u09c7\u09a1\u09be\u09b0 \u09b8\u09ae\u09c1\u09b9",
+"Select all": "\u09b8\u09ac \u09a8\u09bf\u09b0\u09cd\u09ac\u09be\u099a\u09a8 \u0995\u09b0\u09c1\u09a8",
+"Header 3": "\u09b9\u09c7\u09a1\u09be\u09b0 \u09e9",
+"Blocks": "Blocks",
+"Undo": "\u09aa\u09c2\u09b0\u09cd\u09ac\u09be\u09ac\u09b8\u09cd\u09a5\u09be\u09af\u09bc \u09ab\u09bf\u09b0\u09c1\u09a8",
+"Strikethrough": "\u09b8\u09cd\u099f\u09cd\u09b0\u09be\u0987\u0995\u09a5\u09cd\u09b0\u09c1",
+"Bullet list": "Bullet list",
+"Header 1": "\u09b9\u09c7\u09a1\u09be\u09b0 \u09e7",
+"Superscript": "\u098a\u09b0\u09cd\u09a7\u09cd\u09ac\u09b2\u09bf\u09aa\u09bf",
+"Clear formatting": "Clear formatting",
+"Font Sizes": "Font Sizes",
+"Subscript": "\u09a8\u09bf\u09ae\u09cd\u09a8\u09b2\u09bf\u09aa\u09bf",
+"Header 6": "\u09b9\u09c7\u09a1\u09be\u09b0 \u09ec",
+"Redo": "\u09aa\u09c1\u09a8\u09b0\u09be\u09af\u09bc \u0995\u09b0\u09c1\u09a8",
+"Paragraph": "Paragraph",
+"Ok": "\u09a0\u09bf\u0995 \u0986\u099b\u09c7",
+"Bold": "Bold",
+"Code": "Code",
+"Italic": "\u09a4\u09bf\u09b0\u09cd\u09af\u0995",
+"Align center": "Align center",
+"Header 5": "\u09b9\u09c7\u09a1\u09be\u09b0 \u09eb",
+"Decrease indent": "Decrease indent",
+"Header 4": "\u09b9\u09c7\u09a1\u09be\u09b0 \u09ea",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.",
+"Underline": "\u09a8\u09bf\u09ae\u09cd\u09a8\u09b0\u09c7\u0996\u09be",
+"Cancel": "\u09ac\u09be\u09a4\u09bf\u09b2",
+"Justify": "Justify",
+"Inline": "Inline",
+"Copy": "\u0985\u09a8\u09c1\u0995\u09b0\u09a3",
+"Align left": "Align left",
+"Visual aids": "Visual aids",
+"Lower Greek": "Lower Greek",
+"Square": "Square",
+"Default": "Default",
+"Lower Alpha": "Lower Alpha",
+"Circle": "Circle",
+"Disc": "Disc",
+"Upper Alpha": "Upper Alpha",
+"Upper Roman": "Upper Roman",
+"Lower Roman": "Lower Roman",
+"Name": "Name",
+"Anchor": "Anchor",
+"You have unsaved changes are you sure you want to navigate away?": "You have unsaved changes are you sure you want to navigate away?",
+"Restore last draft": "Restore last draft",
+"Special character": "Special character",
+"Source code": "Source code",
+"Right to left": "Right to left",
+"Left to right": "Left to right",
+"Emoticons": "Emoticons",
+"Robots": "Robots",
+"Document properties": "Document properties",
+"Title": "Title",
+"Keywords": "Keywords",
+"Encoding": "Encoding",
+"Description": "Description",
+"Author": "Author",
+"Fullscreen": "Fullscreen",
+"Horizontal line": "Horizontal line",
+"Horizontal space": "Horizontal space",
+"Insert\/edit image": "Insert\/edit image",
+"General": "General",
+"Advanced": "Advanced",
+"Source": "Source",
+"Border": "Border",
+"Constrain proportions": "Constrain proportions",
+"Vertical space": "Vertical space",
+"Image description": "Image description",
+"Style": "Style",
+"Dimensions": "Dimensions",
+"Insert image": "Insert image",
+"Insert date\/time": "Insert date\/time",
+"Remove link": "Remove link",
+"Url": "Url",
+"Text to display": "Text to display",
+"Anchors": "Anchors",
+"Insert link": "Insert link",
+"New window": "New window",
+"None": "None",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?",
+"Target": "Target",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",
+"Insert\/edit link": "Insert\/edit link",
+"Insert\/edit video": "Insert\/edit video",
+"Poster": "Poster",
+"Alternative source": "Alternative source",
+"Paste your embed code below:": "Paste your embed code below:",
+"Insert video": "Insert video",
+"Embed": "Embed",
+"Nonbreaking space": "Nonbreaking space",
+"Page break": "Page break",
+"Paste as text": "Paste as text",
+"Preview": "Preview",
+"Print": "Print",
+"Save": "Save",
+"Could not find the specified string.": "Could not find the specified string.",
+"Replace": "Replace",
+"Next": "Next",
+"Whole words": "Whole words",
+"Find and replace": "Find and replace",
+"Replace with": "Replace with",
+"Find": "Find",
+"Replace all": "Replace all",
+"Match case": "Match case",
+"Prev": "Prev",
+"Spellcheck": "Spellcheck",
+"Finish": "Finish",
+"Ignore all": "Ignore all",
+"Ignore": "Ignore",
+"Insert row before": "Insert row before",
+"Rows": "Rows",
+"Height": "Height",
+"Paste row after": "Paste row after",
+"Alignment": "Alignment",
+"Column group": "Column group",
+"Row": "Row",
+"Insert column before": "Insert column before",
+"Split cell": "Split cell",
+"Cell padding": "Cell padding",
+"Cell spacing": "Cell spacing",
+"Row type": "Row type",
+"Insert table": "Insert table",
+"Body": "Body",
+"Caption": "Caption",
+"Footer": "Footer",
+"Delete row": "Delete row",
+"Paste row before": "Paste row before",
+"Scope": "Scope",
+"Delete table": "Delete table",
+"Header cell": "Header cell",
+"Column": "Column",
+"Cell": "Cell",
+"Header": "Header",
+"Cell type": "Cell type",
+"Copy row": "Copy row",
+"Row properties": "Row properties",
+"Table properties": "Table properties",
+"Row group": "Row group",
+"Right": "Right",
+"Insert column after": "Insert column after",
+"Cols": "Cols",
+"Insert row after": "Insert row after",
+"Width": "Width",
+"Cell properties": "Cell properties",
+"Left": "Left",
+"Cut row": "Cut row",
+"Delete column": "Delete column",
+"Center": "Center",
+"Merge cells": "Merge cells",
+"Insert template": "Insert template",
+"Templates": "Templates",
+"Background color": "Background color",
+"Text color": "Text color",
+"Show blocks": "Show blocks",
+"Show invisible characters": "Show invisible characters",
+"Words: {0}": "Words: {0}",
+"Insert": "Insert",
+"File": "File",
+"Edit": "Edit",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help",
+"Tools": "Tools",
+"View": "View",
+"Table": "Table",
+"Format": "Format"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/bs.js b/program/js/tinymce/langs/bs.js
new file mode 100644
index 000000000..aa78cbf2d
--- /dev/null
+++ b/program/js/tinymce/langs/bs.js
@@ -0,0 +1,186 @@
+tinymce.addI18n('bs',{
+"Cut": "Izre\u017ei",
+"Heading 5": "Naslov 5",
+"Header 2": "Zaglavlje 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Va\u0161 browser ne podr\u017eava direktan pristup me\u0111umemoriji. Molimo vas da koristite pre\u010dice Ctrl+X\/C\/V na tastaturi.",
+"Heading 4": "Naslov 4",
+"Div": "Div",
+"Heading 2": "Naslov 2",
+"Paste": "Zalijepi",
+"Close": "Zatvori",
+"Font Family": "Familija fonta",
+"Pre": "Pre",
+"Align right": "Poravnaj desno",
+"New document": "Novi dokument",
+"Blockquote": "Blok citat",
+"Numbered list": "Numerisana lista",
+"Heading 1": "Naslov 1",
+"Headings": "Naslovi",
+"Increase indent": "Pove\u0107aj uvlaku",
+"Formats": "Formati",
+"Headers": "Zaglavlja",
+"Select all": "Ozna\u010di sve",
+"Header 3": "Zaglavlje 3",
+"Blocks": "Blokovi",
+"Undo": "Nazad",
+"Strikethrough": "Precrtano",
+"Bullet list": "Bullet lista",
+"Header 1": "Zaglavlje 1",
+"Superscript": "Eksponent",
+"Clear formatting": "Poni\u0161ti formatiranje",
+"Font Sizes": "Veli\u010dine fonta",
+"Subscript": "Indeks",
+"Header 6": "Zaglavlje 6",
+"Redo": "Naprijed",
+"Paragraph": "Paragraf",
+"Ok": "U redu",
+"Bold": "Podebljano",
+"Code": "Kod",
+"Italic": "Nakrivljen",
+"Align center": "Centriraj",
+"Header 5": "Zaglavlje 5",
+"Heading 6": "Naslov 6",
+"Heading 3": "Naslov 3",
+"Decrease indent": "Smanji uvlaku",
+"Header 4": "Zaglavlje 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Lijepljenje je sada u modu obi\u010dnog teksta. Sadr\u017eaj \u0107e sada biti zalijepljen kao obi\u010dni tekst sve dok ovu opciju ne ugasite.",
+"Underline": "Podvu\u010deno",
+"Cancel": "Otka\u017ei",
+"Justify": "Obostrano poravnanje",
+"Inline": "U liniji",
+"Copy": "Kopiraj",
+"Align left": "Poravnaj lijevo",
+"Visual aids": "Vizualna pomo\u0107",
+"Lower Greek": "Mala gr\u010dka slova",
+"Square": "Kvadrat",
+"Default": "Po\u010detno",
+"Lower Alpha": "Mala slova",
+"Circle": "Krug",
+"Disc": "Disk",
+"Upper Alpha": "Velika slova",
+"Upper Roman": "Velika rimska slova",
+"Lower Roman": "Mala rimska slova",
+"Name": "Ime",
+"Anchor": "Anchor",
+"You have unsaved changes are you sure you want to navigate away?": "Niste sa\u010duvali izmjene. Jeste li sigurni da \u017eelite napustiti stranicu?",
+"Restore last draft": "Vrati posljednju skicu",
+"Special character": "Specijalni znak",
+"Source code": "Izvorni kod",
+"Right to left": "S desna na lijevo",
+"Left to right": "S lijeva na desno",
+"Emoticons": "Smajliji",
+"Robots": "Roboti",
+"Document properties": "Svojstva dokumenta",
+"Title": "Naslov",
+"Keywords": "Klju\u010dne rije\u010di",
+"Encoding": "Kodiranje",
+"Description": "Opis",
+"Author": "Autor",
+"Fullscreen": "Cijeli ekran",
+"Horizontal line": "Vodoravna linija",
+"Horizontal space": "Horizontalni razmak",
+"Insert\/edit image": "Umetni\/uredi sliku",
+"General": "Op\u0107enito",
+"Advanced": "Napredno",
+"Source": "Izvor",
+"Border": "Okvir",
+"Constrain proportions": "Ograni\u010di proporcije",
+"Vertical space": "Vertikalni razmak",
+"Image description": "Opis slike",
+"Style": "Stil",
+"Dimensions": "Dimenzije",
+"Insert image": "Umetni sliku",
+"Insert date\/time": "Umetni datum\/vrijeme",
+"Remove link": "Ukloni link",
+"Url": "URL",
+"Text to display": "Tekst za prikaz",
+"Anchors": "Anchori",
+"Insert link": "Umetni link",
+"New window": "Novi prozor",
+"None": "Ni\u0161ta",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Izgleda je URL koji ste upisali vanjski link. \u017delite li da dodate obavezni http:\/\/ prefiks?",
+"Target": "Odredi\u0161te",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Izgleda da je URL koji ste upisali ustvari email adresa. \u017delite li da dodate obavezni mailto: prefiks?",
+"Insert\/edit link": "Umetni\/uredi link",
+"Insert\/edit video": "Umetni\/uredi video",
+"Poster": "Objavio",
+"Alternative source": "Alternativni izvor",
+"Paste your embed code below:": "Zalijepite va\u0161 ugradbeni kod ispod:",
+"Insert video": "Umetni video",
+"Embed": "Ugradi",
+"Nonbreaking space": "Neprijelomni razmak",
+"Page break": "Prijelom stranice",
+"Paste as text": "Zalijepi kao tekst",
+"Preview": "Pregled",
+"Print": "\u0160tampaj",
+"Save": "Sa\u010duvaj",
+"Could not find the specified string.": "Tra\u017eeni string nije prona\u0111en.",
+"Replace": "Zamijeni",
+"Next": "Sljede\u0107e",
+"Whole words": "Cijele rije\u010di",
+"Find and replace": "Prona\u0111i i zamijeni",
+"Replace with": "Zamijena sa",
+"Find": "Prona\u0111i",
+"Replace all": "Zamijeni sve",
+"Match case": "Razlikuj mala i velika slova",
+"Prev": "Prethodno",
+"Spellcheck": "Provjera pravopisa",
+"Finish": "Zavr\u0161i",
+"Ignore all": "Zanemari sve",
+"Ignore": "Zanemari",
+"Insert row before": "Umetni red iznad",
+"Rows": "Redovi",
+"Height": "Visina",
+"Paste row after": "Zalijepi red iznad",
+"Alignment": "Poravnanje",
+"Column group": "Grupa kolone",
+"Row": "Red",
+"Insert column before": "Umetni kolonu iznad",
+"Split cell": "Podijeli \u0107eliju",
+"Cell padding": "Ispunjenje \u0107elije",
+"Cell spacing": "Razmak \u0107elija",
+"Row type": "Vrsta reda",
+"Insert table": "Umetni tabelu",
+"Body": "Tijelo",
+"Caption": "Natpis",
+"Footer": "Podno\u017eje",
+"Delete row": "Obri\u0161i red",
+"Paste row before": "Zalijepi red ispod",
+"Scope": "Opseg",
+"Delete table": "Obri\u0161i tabelu",
+"Header cell": "\u0106elija zaglavlja",
+"Column": "Kolona",
+"Cell": "\u0106elija",
+"Header": "Zaglavlje",
+"Cell type": "Vrsta \u0107elije",
+"Copy row": "Kopiraj red",
+"Row properties": "Svojstva reda",
+"Table properties": "Svojstva tabele",
+"Row group": "Grupa reda",
+"Right": "Desno",
+"Insert column after": "Umetni kolonu ispod",
+"Cols": "Kolone",
+"Insert row after": "Umetni red ispod",
+"Width": "\u0160irina",
+"Cell properties": "Svojstva \u0107elije",
+"Left": "Lijevo",
+"Cut row": "Izre\u017ei red",
+"Delete column": "Obri\u0161i kolonu",
+"Center": "Centrirano",
+"Merge cells": "Spoji \u0107elije",
+"Insert template": "Umetni predlo\u017eak",
+"Templates": "Predlo\u0161ci",
+"Background color": "Boja pozadine",
+"Text color": "Boja tekst",
+"Show blocks": "Prika\u017ei blokove",
+"Show invisible characters": "Prika\u017ei nevidljive znakove",
+"Words: {0}": "Rije\u010di: {0}",
+"Insert": "Umetni",
+"File": "Datoteka",
+"Edit": "Uredi",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Oblast za ure\u0111ivanje teksta. Pritisnite ALT-F9 za meni. Pritisnite ALT-F10 za prikaz alatne trake. Pritisnite ALT-0 za pomo\u0107.",
+"Tools": "Alati",
+"View": "Pregled",
+"Table": "Tabela",
+"Format": "Formatiranje"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/ca.js b/program/js/tinymce/langs/ca.js
new file mode 100644
index 000000000..7d7f7f7f7
--- /dev/null
+++ b/program/js/tinymce/langs/ca.js
@@ -0,0 +1,197 @@
+tinymce.addI18n('ca',{
+"Cut": "Retalla",
+"Heading 5": "Encap\u00e7alament 5",
+"Header 2": "Cap\u00e7alera 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "El vostre navegador no suporta l'acc\u00e9s directe al portaobjectes. Si us plau, feu servir les dreceres de teclat Ctrl+X\/C\/V.",
+"Heading 4": "Encap\u00e7alament 4",
+"Div": "Div",
+"Heading 2": "Encap\u00e7alament 2",
+"Paste": "Enganxa",
+"Close": "Tanca",
+"Font Family": "Fam\u00edlia de la font",
+"Pre": "Pre",
+"Align right": "Aliniat a la dreta",
+"New document": "Nou document",
+"Blockquote": "Cita",
+"Numbered list": "Llista enumerada",
+"Heading 1": "Encap\u00e7alament 1",
+"Headings": "Encap\u00e7alaments",
+"Increase indent": "Augmentar sagnat",
+"Formats": "Formats",
+"Headers": "Cap\u00e7aleres",
+"Select all": "Seleccionar-ho tot",
+"Header 3": "Cap\u00e7alera 3",
+"Blocks": "Blocs",
+"Undo": "Desfer",
+"Strikethrough": "Ratllat",
+"Bullet list": "Llista no ordenada",
+"Header 1": "Cap\u00e7alera 1",
+"Superscript": "Super\u00edndex",
+"Clear formatting": "Eliminar format",
+"Font Sizes": "Mides de la font",
+"Subscript": "Sub\u00edndex",
+"Header 6": "Cap\u00e7alera 6",
+"Redo": "Refer",
+"Paragraph": "Par\u00e0graf",
+"Ok": "Acceptar",
+"Bold": "Negreta",
+"Code": "Codi",
+"Italic": "Cursiva",
+"Align center": "Centrat",
+"Header 5": "Cap\u00e7alera 5",
+"Heading 6": "Encap\u00e7alament 6",
+"Heading 3": "Encap\u00e7alament 3",
+"Decrease indent": "Disminuir sagnat",
+"Header 4": "Cap\u00e7alera 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Enganxar ara est\u00e0 en mode text pla. Els continguts s'enganxaran com a text pla fins que desactivis aquesta opci\u00f3. ",
+"Underline": "Subratllat",
+"Cancel": "Cancel\u00b7la",
+"Justify": "Justificat",
+"Inline": "En l\u00ednia",
+"Copy": "Copia",
+"Align left": "Aliniat a l'esquerra",
+"Visual aids": "Assist\u00e8ncia visual",
+"Lower Greek": "Grec menor",
+"Square": "Quadrat",
+"Default": "Per defecte",
+"Lower Alpha": "Alfa menor",
+"Circle": "Cercle",
+"Disc": "Disc",
+"Upper Alpha": "Alfa major",
+"Upper Roman": "Roman major",
+"Lower Roman": "Roman menor",
+"Name": "Nom",
+"Anchor": "\u00c0ncora",
+"You have unsaved changes are you sure you want to navigate away?": "Teniu canvis sense desar, esteu segur que voleu deixar-ho ara?",
+"Restore last draft": "Restaurar l'\u00faltim esborrany",
+"Special character": "Car\u00e0cter especial",
+"Source code": "Codi font",
+"Color": "Color",
+"Right to left": "De dreta a esquerra",
+"Left to right": "D'esquerra a dreta",
+"Emoticons": "Emoticones",
+"Robots": "Robots",
+"Document properties": "Propietats del document",
+"Title": "T\u00edtol",
+"Keywords": "Paraules clau",
+"Encoding": "Codificaci\u00f3",
+"Description": "Descripci\u00f3",
+"Author": "Autor",
+"Fullscreen": "Pantalla completa",
+"Horizontal line": "L\u00ednia horitzontal",
+"Horizontal space": "Espai horitzontal",
+"Insert\/edit image": "Inserir\/editar imatge",
+"General": "General",
+"Advanced": "Avan\u00e7at",
+"Source": "Font",
+"Border": "Vora",
+"Constrain proportions": "Mantenir proporcions",
+"Vertical space": "Espai vertical",
+"Image description": "Descripci\u00f3 de la imatge",
+"Style": "Estil",
+"Dimensions": "Dimensions",
+"Insert image": "Inserir imatge",
+"Insert date\/time": "Inserir data\/hora",
+"Remove link": "Treure enlla\u00e7",
+"Url": "URL",
+"Text to display": "Text per mostrar",
+"Anchors": "\u00c0ncores",
+"Insert link": "Inserir enlla\u00e7",
+"New window": "Finestra nova",
+"None": "Cap",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "L'URL que has escrit sembla un enlla\u00e7 extern. Vols afegir-li el prefix obligatori http:\/\/ ?",
+"Target": "Dest\u00ed",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "L'URL que has escrit sembla una adre\u00e7a de correu electr\u00f2nic. Vols afegir-li el prefix obligatori mailto: ?",
+"Insert\/edit link": "Inserir\/editar enlla\u00e7",
+"Insert\/edit video": "Inserir\/editar v\u00eddeo",
+"Poster": "P\u00f3ster",
+"Alternative source": "Font alternativa",
+"Paste your embed code below:": "Enganxau el codi a sota:",
+"Insert video": "Inserir v\u00eddeo",
+"Embed": "Incloure",
+"Nonbreaking space": "Espai fixe",
+"Page break": "Salt de p\u00e0gina",
+"Paste as text": "Enganxar com a text",
+"Preview": "Previsualitzaci\u00f3",
+"Print": "Imprimir",
+"Save": "Desa",
+"Could not find the specified string.": "No es pot trobar el text especificat.",
+"Replace": "Rempla\u00e7ar",
+"Next": "Seg\u00fcent",
+"Whole words": "Paraules senceres",
+"Find and replace": "Buscar i rempla\u00e7ar",
+"Replace with": "Rempla\u00e7ar amb",
+"Find": "Buscar",
+"Replace all": "Rempla\u00e7ar-ho tot",
+"Match case": "Coincidir maj\u00fascules",
+"Prev": "Anterior",
+"Spellcheck": "Comprovar ortrografia",
+"Finish": "Finalitzar",
+"Ignore all": "Ignorar tots",
+"Ignore": "Ignorar",
+"Add to Dictionary": "Afegir al diccionari",
+"Insert row before": "Inserir fila a sobre",
+"Rows": "Files",
+"Height": "Al\u00e7ada",
+"Paste row after": "Enganxar fila a sota",
+"Alignment": "Aliniament",
+"Border color": "Color de vora",
+"Column group": "Grup de columna",
+"Row": "Fila",
+"Insert column before": "Inserir columna abans",
+"Split cell": "Dividir cel\u00b7les",
+"Cell padding": "Marge intern",
+"Cell spacing": "Espai entre cel\u00b7les",
+"Row type": "Tipus de fila",
+"Insert table": "Inserir taula",
+"Body": "Cos",
+"Caption": "Encap\u00e7alament",
+"Footer": "Peu",
+"Delete row": "Esborrar fila",
+"Paste row before": "Enganxar fila a sobre",
+"Scope": "\u00c0mbit",
+"Delete table": "Esborrar taula",
+"H Align": "Al\u00edniament H",
+"Top": "Superior",
+"Header cell": "Cel\u00b7la de cap\u00e7alera",
+"Column": "Columna",
+"Row group": "Grup de fila",
+"Cell": "Cel\u00b7la",
+"Middle": "Mitj\u00e0",
+"Cell type": "Tipus de cel\u00b7la",
+"Copy row": "Copiar fila",
+"Row properties": "Propietats de fila",
+"Table properties": "Propietats de taula",
+"Bottom": "Inferior",
+"V Align": "Al\u00edniament V",
+"Header": "Cap\u00e7alera",
+"Right": "A la dreta",
+"Insert column after": "Inserir columna despr\u00e9s",
+"Cols": "Cols",
+"Insert row after": "Inserir fila a sota",
+"Width": "Amplada",
+"Cell properties": "Propietats de cel\u00b7la",
+"Left": "A l'esquerra",
+"Cut row": "Retallar fila",
+"Delete column": "Esborrar columna",
+"Center": "Centrat",
+"Merge cells": "Fusionar cel\u00b7les",
+"Insert template": "Inserir plantilla",
+"Templates": "Plantilles",
+"Background color": "Color del fons",
+"Custom...": "Personalitzar...",
+"Custom color": "Personalitzar el color",
+"No color": "Sense color",
+"Text color": "Color del text",
+"Show blocks": "Mostrar blocs",
+"Show invisible characters": "Mostrar car\u00e0cters invisibles",
+"Words: {0}": "Paraules: {0}",
+"Insert": "Inserir",
+"File": "Arxiu",
+"Edit": "Edici\u00f3",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u00c0rea de text amb format. Premeu ALT-F9 per mostrar el men\u00fa, ALT F10 per la barra d'eines i ALT-0 per ajuda.",
+"Tools": "Eines",
+"View": "Veure",
+"Table": "Taula",
+"Format": "Format"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/cs.js b/program/js/tinymce/langs/cs.js
new file mode 100644
index 000000000..1bd64ceed
--- /dev/null
+++ b/program/js/tinymce/langs/cs.js
@@ -0,0 +1,196 @@
+tinymce.addI18n('cs',{
+"Cut": "Vyjmout",
+"Heading 5": "Nadpis 5",
+"Header 2": "Nadpis 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "V\u00e1\u0161 prohl\u00ed\u017ee\u010d nepodporuje p\u0159\u00edm\u00fd p\u0159\u00edstup do schr\u00e1nky. Pou\u017eijte pros\u00edm kl\u00e1vesov\u00e9 zkratky Ctrl+X\/C\/V.",
+"Heading 4": "Nadpis 4",
+"Div": "Div (blok)",
+"Heading 2": "Nadpis 2",
+"Paste": "Vlo\u017eit",
+"Close": "Zav\u0159\u00edt",
+"Font Family": "Typ p\u00edsma",
+"Pre": "Pre (p\u0159edform\u00e1tov\u00e1no)",
+"Align right": "Zarovnat vpravo",
+"New document": "Nov\u00fd dokument",
+"Blockquote": "Citace",
+"Numbered list": "\u010c\u00edslov\u00e1n\u00ed",
+"Heading 1": "Nadpis 1",
+"Headings": "Nadpisy",
+"Increase indent": "Zv\u011bt\u0161it odsazen\u00ed",
+"Formats": "Form\u00e1ty",
+"Headers": "Nadpisy",
+"Select all": "Vybrat v\u0161e",
+"Header 3": "Nadpis 3",
+"Blocks": "Blokov\u00e9 zobrazen\u00ed (block)",
+"Undo": "Zp\u011bt",
+"Strikethrough": "P\u0159e\u0161rktnut\u00e9",
+"Bullet list": "Odr\u00e1\u017eky",
+"Header 1": "Nadpis 1",
+"Superscript": "Horn\u00ed index",
+"Clear formatting": "Vymazat form\u00e1tov\u00e1n\u00ed",
+"Font Sizes": "Velikost p\u00edsma",
+"Subscript": "Doln\u00ed index",
+"Header 6": "Nadpis 6",
+"Redo": "Znovu",
+"Paragraph": "Odstavec",
+"Ok": "OK",
+"Bold": "Tu\u010dn\u00e9",
+"Code": "Code (k\u00f3d)",
+"Italic": "Kurz\u00edva",
+"Align center": "Zarovnat na st\u0159ed",
+"Header 5": "Nadpis 5",
+"Heading 6": "Nadpis 6",
+"Heading 3": "Nadpis 3",
+"Decrease indent": "Zmen\u0161it odsazen\u00ed",
+"Header 4": "Nadpis 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Je zapnuto vkl\u00e1d\u00e1n\u00ed \u010dist\u00e9ho textu. Dokud nebude tato volba vypnuta, bude ve\u0161ker\u00fd obsah vlo\u017een jako \u010dist\u00fd text.",
+"Underline": "Podtr\u017een\u00e9",
+"Cancel": "Zru\u0161it",
+"Justify": "Zarovnat do bloku",
+"Inline": "\u0158\u00e1dkov\u00e9 zobrazen\u00ed (inline)",
+"Copy": "Kop\u00edrovat",
+"Align left": "Zarovnat vlevo",
+"Visual aids": "Vizu\u00e1ln\u00ed pom\u016fcky",
+"Lower Greek": "Mal\u00e9 p\u00edsmenkov\u00e1n\u00ed",
+"Square": "\u010ctvere\u010dek",
+"Default": "V\u00fdchoz\u00ed",
+"Lower Alpha": "Norm\u00e1ln\u00ed \u010d\u00edslov\u00e1n\u00ed",
+"Circle": "Kole\u010dko",
+"Disc": "Punt\u00edk",
+"Upper Alpha": "velk\u00e9 p\u00edsmenkov\u00e1n\u00ed",
+"Upper Roman": "\u0158\u00edmsk\u00e9 \u010d\u00edslice",
+"Lower Roman": "Mal\u00e9 \u0159\u00edmsk\u00e9 \u010d\u00edslice",
+"Name": "N\u00e1zev",
+"Anchor": "Kotva",
+"You have unsaved changes are you sure you want to navigate away?": "M\u00e1te neulo\u017een\u00e9 zm\u011bny. Opravdu chcete opustit str\u00e1nku?",
+"Restore last draft": "Obnovit posledn\u00ed koncept",
+"Special character": "Speci\u00e1ln\u00ed znak",
+"Source code": "Zdrojov\u00fd k\u00f3d",
+"Color": "Barva",
+"Right to left": "Zprava doleva",
+"Left to right": "Zleva doprava",
+"Emoticons": "Emotikony",
+"Robots": "Roboti",
+"Document properties": "Vlastnosti dokumentu",
+"Title": "Titulek",
+"Keywords": "Kl\u00ed\u010dov\u00e1 slova",
+"Encoding": "K\u00f3dov\u00e1n\u00ed",
+"Description": "Popis",
+"Author": "Autor",
+"Fullscreen": "Na celou obrazovku",
+"Horizontal line": "Vodorovn\u00e1 \u010d\u00e1ra",
+"Horizontal space": "Horizont\u00e1ln\u00ed mezera",
+"Insert\/edit image": "Vlo\u017eit \/ upravit obr\u00e1zek",
+"General": "Obecn\u00e9",
+"Advanced": "Pokro\u010dil\u00e9",
+"Source": "Url",
+"Border": "R\u00e1me\u010dek",
+"Constrain proportions": "Zachovat proporce",
+"Vertical space": "Vertik\u00e1ln\u00ed mezera",
+"Image description": "Popis obr\u00e1zku",
+"Style": "Styl",
+"Dimensions": "Rozm\u011bry",
+"Insert image": "Vlo\u017eit obr\u00e1zek",
+"Insert date\/time": "Vlo\u017eit datum \/ \u010das",
+"Remove link": "Odstranit odkaz",
+"Url": "Odkaz",
+"Text to display": "Text k zobrazen\u00ed",
+"Anchors": "Kotvy",
+"Insert link": "Vlo\u017eit odkaz",
+"New window": "Nov\u00e9 okno",
+"None": "\u017d\u00e1dn\u00e9",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Zadan\u00e9 URL vypad\u00e1 jako odkaz na jin\u00fd web. Chcete doplnit povinn\u00fd prefix http:\/\/?",
+"Target": "C\u00edl",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Zadan\u00e9 URL vypad\u00e1 jako e-mailov\u00e1 adresa. Chcete doplnit povinn\u00fd prefix mailto:?",
+"Insert\/edit link": "Vlo\u017eit \/ upravit odkaz",
+"Insert\/edit video": "Vlo\u017eit \/ upravit video",
+"Poster": "N\u00e1hled",
+"Alternative source": "Alternativn\u00ed zdroj",
+"Paste your embed code below:": "Vlo\u017ete k\u00f3d pro vlo\u017een\u00ed n\u00ed\u017ee:",
+"Insert video": "Vlo\u017eit video",
+"Embed": "Vlo\u017eit",
+"Nonbreaking space": "Pevn\u00e1 mezera",
+"Page break": "Konec str\u00e1nky",
+"Paste as text": "Vlo\u017eit jako \u010dist\u00fd text",
+"Preview": "N\u00e1hled",
+"Print": "Tisk",
+"Save": "Ulo\u017eit",
+"Could not find the specified string.": "Zadan\u00fd \u0159et\u011bzec nebyl nalezen.",
+"Replace": "Nahradit",
+"Next": "Dal\u0161\u00ed",
+"Whole words": "Pouze cel\u00e1 slova",
+"Find and replace": "Naj\u00edt a nahradit",
+"Replace with": "Nahradit za",
+"Find": "Naj\u00edt",
+"Replace all": "Nahradit v\u0161e",
+"Match case": "Rozli\u0161ovat mal\u00e1 a velk\u00e1 p\u00edsmena",
+"Prev": "P\u0159edchoz\u00ed",
+"Spellcheck": "Kontrola pravopisu",
+"Finish": "Ukon\u010dit",
+"Ignore all": "Ignorovat v\u0161e",
+"Ignore": "Ignorovat",
+"Add to Dictionary": "P\u0159idat do slovn\u00edku",
+"Insert row before": "Vlo\u017eit \u0159\u00e1dek nad",
+"Rows": "\u0158\u00e1dek",
+"Height": "V\u00fd\u0161ka",
+"Paste row after": "Vlo\u017eit \u0159\u00e1dek pod",
+"Alignment": "Zarovn\u00e1n\u00ed",
+"Column group": "Skupina sloupc\u016f",
+"Row": "\u0158\u00e1dek",
+"Insert column before": "Vlo\u017eit sloupec vlevo",
+"Split cell": "Rozd\u011blit bu\u0148ky",
+"Cell padding": "Vnit\u0159n\u00ed okraj bun\u011bk",
+"Cell spacing": "Vn\u011bj\u0161\u00ed okraj bun\u011bk",
+"Row type": "Typ \u0159\u00e1dku",
+"Insert table": "Vlo\u017eit tabulku",
+"Body": "T\u011blo",
+"Caption": "Nadpis",
+"Footer": "Pati\u010dka",
+"Delete row": "Smazat \u0159\u00e1dek",
+"Paste row before": "Vlo\u017eit \u0159\u00e1dek nad",
+"Scope": "Rozsah",
+"Delete table": "Smazat tabulku",
+"H Align": "Horizont\u00e1ln\u00ed zarovn\u00e1n\u00ed",
+"Top": "Nahoru",
+"Header cell": "Hlavi\u010dkov\u00e1 bu\u0148ka",
+"Column": "Sloupec",
+"Row group": "Skupina \u0159\u00e1dk\u016f",
+"Cell": "Bu\u0148ka",
+"Middle": "Uprost\u0159ed",
+"Cell type": "Typ bu\u0148ky",
+"Copy row": "Kop\u00edrovat \u0159\u00e1dek",
+"Row properties": "Vlastnosti \u0159\u00e1dku",
+"Table properties": "Vlastnosti tabulky",
+"Bottom": "Dol\u016f",
+"V Align": "Vertik\u00e1ln\u00ed zarovn\u00e1n\u00ed",
+"Header": "Hlavi\u010dka",
+"Right": "Vpravo",
+"Insert column after": "Vlo\u017eit sloupec vpravo",
+"Cols": "Sloupc\u016f",
+"Insert row after": "Vlo\u017eit \u0159\u00e1dek pod",
+"Width": "\u0160\u00ed\u0159ka",
+"Cell properties": "Vlastnosti bu\u0148ky",
+"Left": "Vlevo",
+"Cut row": "Vyjmout \u0159\u00e1dek",
+"Delete column": "Smazat sloupec",
+"Center": "Na st\u0159ed",
+"Merge cells": "Slou\u010dit bu\u0148ky",
+"Insert template": "Vlo\u017eit \u0161ablonu",
+"Templates": "\u0160ablony",
+"Background color": "Barva pozad\u00ed",
+"Custom...": "Vlastn\u00ed...",
+"Custom color": "Vlastn\u00ed barva",
+"No color": "Bez barvy",
+"Text color": "Barva p\u00edsma",
+"Show blocks": "Uk\u00e1zat bloky",
+"Show invisible characters": "Zobrazit speci\u00e1ln\u00ed znaky",
+"Words: {0}": "Po\u010det slov: {0}",
+"Insert": "Vlo\u017eit",
+"File": "Soubor",
+"Edit": "\u00dapravy",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Editor. Stiskn\u011bte ALT-F9 pro menu, ALT-F10 pro n\u00e1strojovou li\u0161tu a ALT-0 pro n\u00e1pov\u011bdu.",
+"Tools": "N\u00e1stroje",
+"View": "Zobrazit",
+"Table": "Tabulka",
+"Format": "Form\u00e1t"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/cy.js b/program/js/tinymce/langs/cy.js
new file mode 100644
index 000000000..0d1a9a534
--- /dev/null
+++ b/program/js/tinymce/langs/cy.js
@@ -0,0 +1,179 @@
+tinymce.addI18n('cy',{
+"Cut": "Torri",
+"Header 2": "Pennawd 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Dyw eich porwr ddim yn cynnal mynediad uniongyrchol i'r clipfwrdd. Defnyddiwch yr allweddau llwybr brys Ctrl+X\/C\/V yn lle 'ny.",
+"Div": "Div",
+"Paste": "Gludo",
+"Close": "Cau",
+"Font Family": "Teulu Ffont",
+"Pre": "Pre",
+"Align right": "Aliniad dde",
+"New document": "Dogfen newydd",
+"Blockquote": "Dyfyniad bloc",
+"Numbered list": "Rhestr rifol",
+"Increase indent": "Cynyddu mewnoliad",
+"Formats": "Fformatiau",
+"Headers": "Penawdau",
+"Select all": "Dewis popeth",
+"Header 3": "Pennawd 3",
+"Blocks": "Blociau",
+"Undo": "Dadwneud",
+"Strikethrough": "Llinell drwodd",
+"Bullet list": "Rhestr fwled",
+"Header 1": "Pennawd 1",
+"Superscript": "Uwchsgript",
+"Clear formatting": "Clirio fformatio",
+"Font Sizes": "Meintiau Ffont",
+"Subscript": "Is-sgript",
+"Header 6": "Pennawd 6",
+"Redo": "AIlwneud",
+"Paragraph": "Paragraff",
+"Ok": "Iawn",
+"Bold": "Bras",
+"Code": "Cod",
+"Italic": "Italig",
+"Align center": "Aliniad canol",
+"Header 5": "Pennawd 5",
+"Decrease indent": "Lleinhau mewnoliad",
+"Header 4": "Pennawd 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Mae gludo o fewn modd testun plaen. Caiff y cynnwys ei ludo ar ffurf destun plaen tan gaiff yr opsiwn ei doglo bant.",
+"Underline": "Tanlinellu",
+"Cancel": "Canslo",
+"Justify": "Unioni",
+"Inline": "Mewn llinell",
+"Copy": "Cop\u00efo",
+"Align left": "Aliniad chwith",
+"Visual aids": "Cymorth gweledol",
+"Lower Greek": "Groeg Is",
+"Square": "Sgw\u00e2r",
+"Default": "Diofyn",
+"Lower Alpha": "Alffa Is",
+"Circle": "Cylch",
+"Disc": "Disg",
+"Upper Alpha": "Alffa Uwch",
+"Upper Roman": "Rhufeinig Uwch",
+"Lower Roman": "Rhufeinig Is",
+"Name": "Enw",
+"Anchor": "Angor",
+"You have unsaved changes are you sure you want to navigate away?": "Mae newidiadau heb eu cadw - ydych chi wir am symud i ffwrdd?",
+"Restore last draft": "Adfer y drafft olaf",
+"Special character": "Nod arbennig",
+"Source code": "Cod gwreiddiol",
+"Right to left": "Dde i'r chwith",
+"Left to right": "Chwith i'r dde",
+"Emoticons": "Gwenogluniau",
+"Robots": "Robotiaid",
+"Document properties": "Priodweddau'r ddogfen",
+"Title": "Teitl",
+"Keywords": "Allweddeiriau",
+"Encoding": "Amgodiad",
+"Description": "Disgrifiad",
+"Author": "Awdur",
+"Fullscreen": "Sgrin llawn",
+"Horizontal line": "Llinell lorweddol",
+"Horizontal space": "Gofod llorweddol",
+"Insert\/edit image": "Mewnosod\/golygu delwedd",
+"General": "Cyffredinol",
+"Advanced": "Uwch",
+"Source": "Ffynhonnell",
+"Border": "Ymyl",
+"Constrain proportions": "Gorfodi cyfrannedd",
+"Vertical space": "Gofod fertigol",
+"Image description": "Disgrifiad y ddelwedd",
+"Style": "Arddull",
+"Dimensions": "Dimensiynau",
+"Insert image": "Mewnosod delwedd",
+"Insert date\/time": "Mewnosod dyddiad\/amser",
+"Remove link": "Tynnu dolen",
+"Url": "Url",
+"Text to display": "Testun i'w ddangos",
+"Anchors": "Angorau",
+"Insert link": "Mewnosod dolen",
+"New window": "Ffenest newydd",
+"None": "Dim",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Mae'n debyg taw dolen allanol yw'r URL hwn. Ydych chi am ychwanegu'r rhagosodiad http:\/\/ ?",
+"Target": "Targed",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Mae'n debyg taw cyfeiriad ebost yw'r URL hwn. Ydych chi am ychwanegu'r rhagosodiad mailto:?",
+"Insert\/edit link": "Mewnosod\/golygu dolen",
+"Insert\/edit video": "Mewnosod\/golygu fideo",
+"Poster": "Poster",
+"Alternative source": "Ffynhonnell amgen",
+"Paste your embed code below:": "Gludwch eich cod mewnosod isod:",
+"Insert video": "Mewnosod fideo",
+"Embed": "Mewnosod",
+"Nonbreaking space": "Bwlch heb dorri",
+"Page break": "Toriad tudalen",
+"Paste as text": "Gludo fel testun",
+"Preview": "Rhagolwg",
+"Print": "Argraffu",
+"Save": "Cadw",
+"Could not find the specified string.": "Methu ffeindio'r llinyn hwnnw.",
+"Replace": "Amnewid",
+"Next": "Nesaf",
+"Whole words": "Geiriau cyfan",
+"Find and replace": "Chwilio ac amnewid",
+"Replace with": "Amnewid gyda",
+"Find": "Chwilio",
+"Replace all": "Amnewid pob",
+"Match case": "Cydweddu'r un c\u00eas",
+"Prev": "Cynt",
+"Spellcheck": "Sillafydd",
+"Finish": "Gorffen",
+"Ignore all": "Amwybyddu pob",
+"Ignore": "Anwybyddu",
+"Insert row before": "Mewnosod rhes cyn",
+"Rows": "Rhesi",
+"Height": "Uchder",
+"Paste row after": "Gludo rhes ar \u00f4l",
+"Alignment": "Aliniad",
+"Column group": "Gr\u0175p colofn",
+"Row": "Rhes",
+"Insert column before": "Mewnosod colofn cyn",
+"Split cell": "Hollti celloedd",
+"Cell padding": "Padio cell",
+"Cell spacing": "Bylchiau cell",
+"Row type": "Math y rhes",
+"Insert table": "Mewnosod tabl",
+"Body": "Corff",
+"Caption": "Pennawd",
+"Footer": "Troedyn",
+"Delete row": "Dileu rhes",
+"Paste row before": "Gludo rhes cyn",
+"Scope": "Sgop",
+"Delete table": "Dileu'r tabl",
+"Header cell": "Cell bennawd",
+"Column": "Colofn",
+"Cell": "Cell",
+"Header": "Pennyn",
+"Cell type": "Math y gell",
+"Copy row": "Cop\u00efo rhes",
+"Row properties": "Priodweddau rhes",
+"Table properties": "Priodweddau tabl",
+"Row group": "Gr\u0175p rhes",
+"Right": "Dde",
+"Insert column after": "Mewnosod colofn ar \u00f4l",
+"Cols": "Col'u",
+"Insert row after": "Mewnosod rhes ar \u00f4l",
+"Width": "Lled",
+"Cell properties": "Priodweddau'r gell",
+"Left": "Chwith",
+"Cut row": "Torri rhes",
+"Delete column": "Dileu colofn",
+"Center": "Canol",
+"Merge cells": "Cyfuno celloedd",
+"Insert template": "Mewnosod templed",
+"Templates": "Templedi",
+"Background color": "Lliw cefndir",
+"Text color": "Lliw testun",
+"Show blocks": "Dangos blociau",
+"Show invisible characters": "Dangos nodau anweledig",
+"Words: {0}": "Geiriau: {0}",
+"Insert": "Mewnosod",
+"File": "Ffeil",
+"Edit": "Golygu",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Ardal Testun Uwch. Pwyswch ALT-F9 ar gyfer y ddewislen, Pwyswch ALT-F10 ar gyfer y bar offer. Pwyswch ALT-0 am gymorth",
+"Tools": "Offer",
+"View": "Dangos",
+"Table": "Tabl",
+"Format": "Fformat"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/da.js b/program/js/tinymce/langs/da.js
new file mode 100644
index 000000000..7fe99e231
--- /dev/null
+++ b/program/js/tinymce/langs/da.js
@@ -0,0 +1,197 @@
+tinymce.addI18n('da',{
+"Cut": "Klip",
+"Heading 5": "Overskrift 5",
+"Header 2": "Overskrift 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Din browser underst\u00f8tter ikke direkte adgang til clipboard. Benyt Ctrl+X\/C\/ keybord shortcuts i stedet for.",
+"Heading 4": "Overskrift 4",
+"Div": "Div",
+"Heading 2": "Overskrift 2",
+"Paste": "Inds\u00e6t",
+"Close": "Luk",
+"Font Family": "Skrifttype",
+"Pre": "Pre",
+"Align right": "H\u00f8jrejusteret",
+"New document": "Nyt dokument",
+"Blockquote": "Indrykning",
+"Numbered list": "Nummerering",
+"Heading 1": "Overskrift 1",
+"Headings": "Overskrifter",
+"Increase indent": "For\u00f8g indrykning",
+"Formats": "Formater",
+"Headers": "Overskrifter",
+"Select all": "V\u00e6lg alle",
+"Header 3": "Overskrift 3",
+"Blocks": "Blokke",
+"Undo": "Fortryd",
+"Strikethrough": "Gennemstreg",
+"Bullet list": "Punkt tegn",
+"Header 1": "Overskrift 1",
+"Superscript": "H\u00e6vet",
+"Clear formatting": "Nulstil formattering",
+"Font Sizes": "Skriftst\u00f8rrelse",
+"Subscript": "S\u00e6nket",
+"Header 6": "Overskrift 6",
+"Redo": "Genopret",
+"Paragraph": "S\u00e6tning",
+"Ok": "Ok",
+"Bold": "Fed",
+"Code": "Code",
+"Italic": "Kursiv",
+"Align center": "Centreret",
+"Header 5": "Overskrift 5",
+"Heading 6": "Overskrift 6",
+"Heading 3": "Overskrift 3",
+"Decrease indent": "Formindsk indrykning",
+"Header 4": "Overskrift 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "S\u00e6t ind er indstillet til at inds\u00e6tte som ren tekst. Indhold bliver nu indsat uden formatering indtil du \u00e6ndrer indstillingen.",
+"Underline": "Understreg",
+"Cancel": "Fortryd",
+"Justify": "Justering",
+"Inline": "Inline",
+"Copy": "Kopier",
+"Align left": "Venstrejusteret",
+"Visual aids": "Visuel hj\u00e6lp",
+"Lower Greek": "Lower Gr\u00e6sk",
+"Square": "Kvadrat",
+"Default": "Standard",
+"Lower Alpha": "Lower Alpha",
+"Circle": "Cirkel",
+"Disc": "Disk",
+"Upper Alpha": "Upper Alpha",
+"Upper Roman": "Upper Roman",
+"Lower Roman": "Lower Roman",
+"Name": "Navn",
+"Anchor": "Anchor",
+"You have unsaved changes are you sure you want to navigate away?": "Du har ikke gemte \u00e6ndringer. Er du sikker p\u00e5 at du vil forts\u00e6tte?",
+"Restore last draft": "Genopret sidste kladde",
+"Special character": "Specielle tegn",
+"Source code": "Kildekode",
+"Color": "Farve",
+"Right to left": "H\u00f8jre til venstre",
+"Left to right": "Venstre til h\u00f8jre",
+"Emoticons": "Emot-ikoner",
+"Robots": "Robotter",
+"Document properties": "Dokument egenskaber",
+"Title": "Titel",
+"Keywords": "S\u00f8geord",
+"Encoding": "Kodning",
+"Description": "Beskrivelse",
+"Author": "Forfatter",
+"Fullscreen": "Fuldsk\u00e6rm",
+"Horizontal line": "Vandret linie",
+"Horizontal space": "Vandret afstand",
+"Insert\/edit image": "Inds\u00e6t\/ret billede",
+"General": "Generet",
+"Advanced": "Avanceret",
+"Source": "Kilde",
+"Border": "Kant",
+"Constrain proportions": "Behold propertioner",
+"Vertical space": "Lodret afstand",
+"Image description": "Billede beskrivelse",
+"Style": "Stil",
+"Dimensions": "Dimensioner",
+"Insert image": "Inds\u00e6t billede",
+"Insert date\/time": "Inds\u00e6t dato\/klokkeslet",
+"Remove link": "Fjern link",
+"Url": "Url",
+"Text to display": "Vis tekst",
+"Anchors": "Ankre",
+"Insert link": "Inds\u00e6t link",
+"New window": "Nyt vindue",
+"None": "Ingen",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "URLen som du angav ser ud til at v\u00e6re et eksternt link. \u00d8nsker du at tilf\u00f8je det kr\u00e6vede prefiks http:\/\/ ?",
+"Target": "Target",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "URLen som du angav ser ud til at v\u00e6re en email adresse. \u00d8nsker du at tilf\u00f8je det kr\u00e6vede prefiks mailto:",
+"Insert\/edit link": "Inds\u00e6t\/ret link",
+"Insert\/edit video": "Inds\u00e6t\/ret video",
+"Poster": "Poster",
+"Alternative source": "Alternativ kilde",
+"Paste your embed code below:": "Inds\u00e6t din embed kode herunder:",
+"Insert video": "Inds\u00e6t video",
+"Embed": "Integrer",
+"Nonbreaking space": "H\u00e5rdt mellemrum",
+"Page break": "Sideskift",
+"Paste as text": "Inds\u00e6t som ren tekst",
+"Preview": "Forh\u00e5ndsvisning",
+"Print": "Udskriv",
+"Save": "Gem",
+"Could not find the specified string.": "Kunne ikke finde s\u00f8getekst",
+"Replace": "Erstat",
+"Next": "N\u00e6ste",
+"Whole words": "Hele ord",
+"Find and replace": "Find og erstat",
+"Replace with": "Erstat med",
+"Find": "Find",
+"Replace all": "Erstat alt",
+"Match case": "STORE og sm\u00e5 bogstaver",
+"Prev": "Forrige",
+"Spellcheck": "Stavekontrol",
+"Finish": "F\u00e6rdig",
+"Ignore all": "Ignorer alt",
+"Ignore": "Ignorer",
+"Add to Dictionary": "Tilf\u00f8j til ordbog",
+"Insert row before": "Inds\u00e6t r\u00e6kke f\u00f8r",
+"Rows": "R\u00e6kker",
+"Height": "H\u00f8jde",
+"Paste row after": "Inds\u00e6t r\u00e6kke efter",
+"Alignment": "Tilpasning",
+"Border color": "Kant farve",
+"Column group": "Kolonne gruppe",
+"Row": "R\u00e6kke",
+"Insert column before": "Inds\u00e6t kolonne f\u00f8r",
+"Split cell": "Split celle",
+"Cell padding": "Celle padding",
+"Cell spacing": "Celle afstand",
+"Row type": "R\u00e6kke type",
+"Insert table": "Inds\u00e6t tabel",
+"Body": "Krop",
+"Caption": "Tekst",
+"Footer": "Sidefod",
+"Delete row": "Slet r\u00e6kke",
+"Paste row before": "Inds\u00e6t r\u00e6kke f\u00f8r",
+"Scope": "Anvendelsesomr\u00e5de",
+"Delete table": "Slet tabel",
+"H Align": "H juster",
+"Top": "Top",
+"Header cell": "Sidehoved celle",
+"Column": "Kolonne",
+"Row group": "R\u00e6kke gruppe",
+"Cell": "Celle",
+"Middle": "Midt",
+"Cell type": "Celle type",
+"Copy row": "Kopier r\u00e6kke",
+"Row properties": "R\u00e6kke egenskaber",
+"Table properties": "Tabel egenskaber",
+"Bottom": "Bund",
+"V Align": "V juster",
+"Header": "Sidehoved",
+"Right": "H\u00f8jre",
+"Insert column after": "Inds\u00e6t kolonne efter",
+"Cols": "Kolonne",
+"Insert row after": "Inds\u00e6t r\u00e6kke efter",
+"Width": "Bredde",
+"Cell properties": "Celle egenskaber",
+"Left": "Venstre",
+"Cut row": "Klip r\u00e6kke",
+"Delete column": "Slet kolonne",
+"Center": "Centrering",
+"Merge cells": "Flet celler",
+"Insert template": "Inds\u00e6t skabelon",
+"Templates": "Skabeloner",
+"Background color": "Baggrunds farve",
+"Custom...": "Brugerdefineret...",
+"Custom color": "Brugerdefineret farve",
+"No color": "Ingen farve",
+"Text color": "Tekst farve",
+"Show blocks": "Vis klokke",
+"Show invisible characters": "Vis usynlige tegn",
+"Words: {0}": "Ord: {0}",
+"Insert": "Inds\u00e6t",
+"File": "Fil",
+"Edit": "Rediger",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text omr\u00e5de. Tryk ALT-F9 for menu. Tryk ALT-F10 for toolbar. Tryk ALT-0 for hj\u00e6lp",
+"Tools": "V\u00e6rkt\u00f8j",
+"View": "Vis",
+"Table": "Tabel",
+"Format": "Format"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/de.js b/program/js/tinymce/langs/de.js
new file mode 100644
index 000000000..ef3142d1d
--- /dev/null
+++ b/program/js/tinymce/langs/de.js
@@ -0,0 +1,197 @@
+tinymce.addI18n('de',{
+"Cut": "Ausschneiden",
+"Heading 5": "\u00dcberschrift 5",
+"Header 2": "\u00dcberschrift 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Ihr Browser unterst\u00fctzt leider keinen direkten Zugriff auf die Zwischenablage. Bitte benutzen Sie die Strg + X \/ C \/ V Tastenkombinationen.",
+"Heading 4": "\u00dcberschrift 4",
+"Div": "Textblock",
+"Heading 2": "\u00dcberschrift 2",
+"Paste": "Einf\u00fcgen",
+"Close": "Schlie\u00dfen",
+"Font Family": "Schriftart",
+"Pre": "Vorformatierter Text",
+"Align right": "Rechtsb\u00fcndig ausrichten",
+"New document": "Neues Dokument",
+"Blockquote": "Zitat",
+"Numbered list": "Nummerierte Liste",
+"Heading 1": "\u00dcberschrift 1",
+"Headings": "\u00dcberschriften",
+"Increase indent": "Einzug vergr\u00f6\u00dfern",
+"Formats": "Formate",
+"Headers": "\u00dcberschriften",
+"Select all": "Alles ausw\u00e4hlen",
+"Header 3": "\u00dcberschrift 3",
+"Blocks": "Absatzformate",
+"Undo": "R\u00fcckg\u00e4ngig",
+"Strikethrough": "Durchgestrichen",
+"Bullet list": "Aufz\u00e4hlung",
+"Header 1": "\u00dcberschrift 1",
+"Superscript": "Hochgestellt",
+"Clear formatting": "Formatierung entfernen",
+"Font Sizes": "Schriftgr\u00f6\u00dfe",
+"Subscript": "Tiefgestellt",
+"Header 6": "\u00dcberschrift 6",
+"Redo": "Wiederholen",
+"Paragraph": "Absatz",
+"Ok": "Ok",
+"Bold": "Fett",
+"Code": "Quelltext",
+"Italic": "Kursiv",
+"Align center": "Zentriert ausrichten",
+"Header 5": "\u00dcberschrift 5",
+"Heading 6": "\u00dcberschrift 6",
+"Heading 3": "\u00dcberschrift 3",
+"Decrease indent": "Einzug verkleinern",
+"Header 4": "\u00dcberschrift 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Einf\u00fcgen ist nun im einfachen Textmodus. Inhalte werden ab jetzt als unformatierter Text eingef\u00fcgt, bis Sie diese Einstellung wieder ausschalten!",
+"Underline": "Unterstrichen",
+"Cancel": "Abbrechen",
+"Justify": "Blocksatz",
+"Inline": "Zeichenformate",
+"Copy": "Kopieren",
+"Align left": "Linksb\u00fcndig ausrichten",
+"Visual aids": "Visuelle Hilfen",
+"Lower Greek": "Griechische Kleinbuchstaben",
+"Square": "Quadrat",
+"Default": "Standard",
+"Lower Alpha": "Kleinbuchstaben",
+"Circle": "Kreis",
+"Disc": "Punkt",
+"Upper Alpha": "Gro\u00dfbuchstaben",
+"Upper Roman": "R\u00f6mische Zahlen (Gro\u00dfbuchstaben)",
+"Lower Roman": "R\u00f6mische Zahlen (Kleinbuchstaben)",
+"Name": "Name",
+"Anchor": "Textmarke",
+"You have unsaved changes are you sure you want to navigate away?": "Die \u00c4nderungen wurden noch nicht gespeichert, sind Sie sicher, dass Sie diese Seite verlassen wollen?",
+"Restore last draft": "Letzten Entwurf wiederherstellen",
+"Special character": "Sonderzeichen",
+"Source code": "Quelltext",
+"Color": "Farbe",
+"Right to left": "Von rechts nach links",
+"Left to right": "Von links nach rechts",
+"Emoticons": "Emoticons",
+"Robots": "Robots",
+"Document properties": "Dokumenteigenschaften",
+"Title": "Titel",
+"Keywords": "Sch\u00fcsselw\u00f6rter",
+"Encoding": "Zeichenkodierung",
+"Description": "Beschreibung",
+"Author": "Verfasser",
+"Fullscreen": "Vollbild",
+"Horizontal line": "Horizontale Linie",
+"Horizontal space": "Horizontaler Abstand",
+"Insert\/edit image": "Bild einf\u00fcgen\/bearbeiten",
+"General": "Allgemein",
+"Advanced": "Erweitert",
+"Source": "Quelle",
+"Border": "Rahmen",
+"Constrain proportions": "Seitenverh\u00e4ltnis beibehalten",
+"Vertical space": "Vertikaler Abstand",
+"Image description": "Bildbeschreibung",
+"Style": "Stil",
+"Dimensions": "Abmessungen",
+"Insert image": "Bild einf\u00fcgen",
+"Insert date\/time": "Datum\/Uhrzeit einf\u00fcgen ",
+"Remove link": "Link entfernen",
+"Url": "URL",
+"Text to display": "Anzuzeigender Text",
+"Anchors": "Textmarken",
+"Insert link": "Link einf\u00fcgen",
+"New window": "Neues Fenster",
+"None": "Keine",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Diese Adresse scheint ein externer Link zu sein. M\u00f6chten Sie das dazu ben\u00f6tigte \"http:\/\/\" voranstellen?",
+"Target": "Ziel",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Diese Adresse scheint eine E-Mail-Adresse zu sein. M\u00f6chten Sie das dazu ben\u00f6tigte \"mailto:\" voranstellen?",
+"Insert\/edit link": "Link einf\u00fcgen\/bearbeiten",
+"Insert\/edit video": "Video einf\u00fcgen\/bearbeiten",
+"Poster": "Poster",
+"Alternative source": "Alternative Quelle",
+"Paste your embed code below:": "F\u00fcgen Sie Ihren Einbettungscode hier ein:",
+"Insert video": "Video einf\u00fcgen",
+"Embed": "Einbetten",
+"Nonbreaking space": "Gesch\u00fctztes Leerzeichen",
+"Page break": "Seitenumbruch",
+"Paste as text": "Als Text einf\u00fcgen",
+"Preview": "Vorschau",
+"Print": "Drucken",
+"Save": "Speichern",
+"Could not find the specified string.": "Die Zeichenfolge wurde nicht gefunden.",
+"Replace": "Ersetzen",
+"Next": "Weiter",
+"Whole words": "Nur ganze W\u00f6rter",
+"Find and replace": "Suchen und ersetzen",
+"Replace with": "Ersetzen durch",
+"Find": "Suchen",
+"Replace all": "Alles ersetzen",
+"Match case": "Gro\u00df-\/Kleinschreibung beachten",
+"Prev": "Zur\u00fcck",
+"Spellcheck": "Rechtschreibpr\u00fcfung",
+"Finish": "Ende",
+"Ignore all": "Alles Ignorieren",
+"Ignore": "Ignorieren",
+"Add to Dictionary": "Zum W\u00f6rterbuch hinzuf\u00fcgen",
+"Insert row before": "Neue Zeile davor einf\u00fcgen ",
+"Rows": "Zeilen",
+"Height": "H\u00f6he",
+"Paste row after": "Zeile danach einf\u00fcgen",
+"Alignment": "Ausrichtung",
+"Border color": "Rahmenfarbe",
+"Column group": "Spaltengruppe",
+"Row": "Zeile",
+"Insert column before": "Neue Spalte davor einf\u00fcgen",
+"Split cell": "Zelle aufteilen",
+"Cell padding": "Zelleninnenabstand",
+"Cell spacing": "Zellenabstand",
+"Row type": "Zeilentyp",
+"Insert table": "Tabelle einf\u00fcgen",
+"Body": "Inhalt",
+"Caption": "Beschriftung",
+"Footer": "Fu\u00dfzeile",
+"Delete row": "Zeile l\u00f6schen",
+"Paste row before": "Zeile davor einf\u00fcgen",
+"Scope": "G\u00fcltigkeitsbereich",
+"Delete table": "Tabelle l\u00f6schen",
+"H Align": "Horizontale Ausrichtung",
+"Top": "Oben",
+"Header cell": "Kopfzelle",
+"Column": "Spalte",
+"Row group": "Zeilengruppe",
+"Cell": "Zelle",
+"Middle": "Mitte",
+"Cell type": "Zellentyp",
+"Copy row": "Zeile kopieren",
+"Row properties": "Zeileneigenschaften",
+"Table properties": "Tabelleneigenschaften",
+"Bottom": "Unten",
+"V Align": "Vertikale Ausrichtung",
+"Header": "Kopfzeile",
+"Right": "Rechtsb\u00fcndig",
+"Insert column after": "Neue Spalte danach einf\u00fcgen",
+"Cols": "Spalten",
+"Insert row after": "Neue Zeile danach einf\u00fcgen",
+"Width": "Breite",
+"Cell properties": "Zelleneigenschaften",
+"Left": "Linksb\u00fcndig",
+"Cut row": "Zeile ausschneiden",
+"Delete column": "Spalte l\u00f6schen",
+"Center": "Zentriert",
+"Merge cells": "Zellen verbinden",
+"Insert template": "Vorlage einf\u00fcgen ",
+"Templates": "Vorlagen",
+"Background color": "Hintergrundfarbe",
+"Custom...": "Benutzerdefiniert...",
+"Custom color": "Benutzerdefinierte Farbe",
+"No color": "Keine Farbe",
+"Text color": "Textfarbe",
+"Show blocks": " Bl\u00f6cke anzeigen",
+"Show invisible characters": "Unsichtbare Zeichen anzeigen",
+"Words: {0}": "W\u00f6rter: {0}",
+"Insert": "Einf\u00fcgen",
+"File": "Datei",
+"Edit": "Bearbeiten",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich-Text- Area. Dr\u00fccken Sie ALT-F9 f\u00fcr das Men\u00fc. Dr\u00fccken Sie ALT-F10 f\u00fcr Symbolleiste. Dr\u00fccken Sie ALT-0 f\u00fcr Hilfe",
+"Tools": "Werkzeuge",
+"View": "Ansicht",
+"Table": "Tabelle",
+"Format": "Format"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/de_AT.js b/program/js/tinymce/langs/de_AT.js
new file mode 100644
index 000000000..b36856516
--- /dev/null
+++ b/program/js/tinymce/langs/de_AT.js
@@ -0,0 +1,197 @@
+tinymce.addI18n('de_AT',{
+"Cut": "Ausschneiden",
+"Heading 5": "\u00dcberschrift 5",
+"Header 2": "\u00dcberschrift 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Ihr Browser unterst\u00fctzt keinen direkten Zugriff auf die Zwischenablage. Bitte nutzen Sie die Tastaturk\u00fcrzel Strg+X\/C\/V stattdessen.",
+"Heading 4": "\u00dcberschrift 4",
+"Div": "Block (div)",
+"Heading 2": "\u00dcberschrift 2",
+"Paste": "Einf\u00fcgen",
+"Close": "Schlie\u00dfen",
+"Font Family": "Schriftart",
+"Pre": "Vorformatierter Text (pre)",
+"Align right": "Rechtsb\u00fcndig",
+"New document": "Neues Dokument",
+"Blockquote": "Zitat (blockquote)",
+"Numbered list": "Sortierte Liste",
+"Heading 1": "\u00dcberschrift 1",
+"Headings": "\u00dcberschriften",
+"Increase indent": "Einr\u00fccken",
+"Formats": "Formate",
+"Headers": "\u00dcberschriften",
+"Select all": "Alles ausw\u00e4hlen",
+"Header 3": "\u00dcberschrift 3",
+"Blocks": "Bl\u00f6cke",
+"Undo": "R\u00fcckg\u00e4ngig",
+"Strikethrough": "Durchgestrichen",
+"Bullet list": "Unsortierte Liste",
+"Header 1": "\u00dcberschrift 1",
+"Superscript": "Hochgestellt",
+"Clear formatting": "Formatierungen zur\u00fccksetzen",
+"Font Sizes": "Schriftgr\u00f6\u00dfen",
+"Subscript": "Tiefgestellt",
+"Header 6": "\u00dcberschrift 6",
+"Redo": "Wiederholen",
+"Paragraph": "Absatz (p)",
+"Ok": "Ok",
+"Bold": "Fett",
+"Code": "Code (code)",
+"Italic": "Kursiv",
+"Align center": "Zentriert",
+"Header 5": "\u00dcberschrift 5",
+"Heading 6": "\u00dcberschrift 6",
+"Heading 3": "\u00dcberschrift 3",
+"Decrease indent": "Ausr\u00fccken",
+"Header 4": "\u00dcberschrift 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Alle Texte werden nun ohne Formatierung eingef\u00fcgt, bis diese Einstellung wieder ge\u00e4ndert wird.",
+"Underline": "Unterstrichen",
+"Cancel": "Abbrechen",
+"Justify": "Blocksatz",
+"Inline": "Inline",
+"Copy": "Kopieren",
+"Align left": "Linksb\u00fcndig",
+"Visual aids": "Hilfslinien und unsichtbare Elemente einblenden",
+"Lower Greek": "Griechische Kleinbuchstaben",
+"Square": "Quadrat",
+"Default": "Standard",
+"Lower Alpha": "Kleinbuchstaben",
+"Circle": "Kreis",
+"Disc": "Gef\u00fcllter Kreis",
+"Upper Alpha": "Gro\u00dfbuchstaben",
+"Upper Roman": "R\u00f6mische Zahlen (Gro\u00dfbuchstaben)",
+"Lower Roman": "R\u00f6mische Zahlen (Kleinbuchstaben)",
+"Name": "Name",
+"Anchor": "Anker",
+"You have unsaved changes are you sure you want to navigate away?": "Sie haben ungespeicherte \u00c4nderungen. Sind Sie sicher, dass Sie die Seite verlassen wollen?",
+"Restore last draft": "Letzten Entwurf wiederherstellen.",
+"Special character": "Sonderzeichen",
+"Source code": "Quelltext",
+"Color": "Farbe",
+"Right to left": "Rechts nach links",
+"Left to right": "Links nach rechts",
+"Emoticons": "Emoticons",
+"Robots": "Suchmaschinen",
+"Document properties": "Dokumenteigenschaften",
+"Title": "Titel",
+"Keywords": "Schl\u00fcsselw\u00f6rter",
+"Encoding": "Enkodierung",
+"Description": "Beschreibung",
+"Author": "Autor",
+"Fullscreen": "Vollbild",
+"Horizontal line": "Horizontale Trennlinie",
+"Horizontal space": "Horizontaler Abstand",
+"Insert\/edit image": "Bild einf\u00fcgen\/bearbeiten",
+"General": "Allgemein",
+"Advanced": "Erweitert",
+"Source": "Adresse",
+"Border": "Rahmen",
+"Constrain proportions": "Seitenverh\u00e4ltnis beibehalten",
+"Vertical space": "Vertikaler Abstand",
+"Image description": "Bildbeschreibung",
+"Style": "Format",
+"Dimensions": "Ausma\u00dfe",
+"Insert image": "Bild einf\u00fcgen",
+"Insert date\/time": "Zeit\/Datum einf\u00fcgen",
+"Remove link": "Link entfernen",
+"Url": "Url",
+"Text to display": "Angezeigter Text",
+"Anchors": "Anker",
+"Insert link": "Link einf\u00fcgen",
+"New window": "Neues Fenster",
+"None": "Keine",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Die eingegebene URL scheint eine externe Web-Adresse zu sein. Soll das notwendige \"http:\/\/\"-Pr\u00e4fix hinzugef\u00fcgt werden?",
+"Target": "Ziel",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Die eingegebene URL scheint eine E-Mail-Adresse zu sein. Soll das notwendige \"mailto:\"-Pr\u00e4fix hinzugef\u00fcgt werden?",
+"Insert\/edit link": "Link einf\u00fcgen\/bearbeiten",
+"Insert\/edit video": "Video einf\u00fcgen\/bearbeiten",
+"Poster": "Poster",
+"Alternative source": "Alternative Quelle",
+"Paste your embed code below:": "F\u00fcgen unten Sie Ihren Quellcode zum einbetten ein",
+"Insert video": "Video einf\u00fcgen",
+"Embed": "Einbetten",
+"Nonbreaking space": "gesch\u00fctztes Leerzeichen",
+"Page break": "Seitenumbruch",
+"Paste as text": "Als Text einf\u00fcgen",
+"Preview": "Vorschau",
+"Print": "Drucken",
+"Save": "Speichern",
+"Could not find the specified string.": "Keine \u00dcbereinstimmung gefunden",
+"Replace": "Ersetzen",
+"Next": "N\u00e4chstes",
+"Whole words": "Vollst\u00e4ndige W\u00f6rter",
+"Find and replace": "Suchen und ersetzen",
+"Replace with": "Ersetzen durch",
+"Find": "Suchen",
+"Replace all": "Alle ersetzen",
+"Match case": "Gro\u00df-\/Kleinschreibung beachten",
+"Prev": "Vorheriges",
+"Spellcheck": "Rechtschreibung \u00fcberpr\u00fcfen",
+"Finish": "Fertig",
+"Ignore all": "Alle ignorieren",
+"Ignore": "Ignorieren",
+"Add to Dictionary": "Zum W\u00f6rterbuch hinzuf\u00fcgen",
+"Insert row before": "Neue Zeile oberhalb einf\u00fcgen",
+"Rows": "Zeilen",
+"Height": "H\u00f6he",
+"Paste row after": "Zeile unterhalb einf\u00fcgen",
+"Alignment": "Ausrichtung",
+"Border color": "Rahmenfarbe",
+"Column group": "Spaltengruppe",
+"Row": "Zeile",
+"Insert column before": "Neue Spalte links einf\u00fcgen",
+"Split cell": "Verbundene Zellen trennen",
+"Cell padding": "Abstand innerhalb der Zellen",
+"Cell spacing": "Zellenabstand",
+"Row type": "Zeilentyp",
+"Insert table": "Tabelle einf\u00fcgen",
+"Body": "Tabellenk\u00f6rper",
+"Caption": "Beschriftung der Tabelle",
+"Footer": "Tabellenfu\u00df",
+"Delete row": "Zeile l\u00f6schen",
+"Paste row before": "Zeile oberhalb einf\u00fcgen",
+"Scope": "Geltungsbereich",
+"Delete table": "Tabelle l\u00f6schen",
+"H Align": "Ausrichtung H",
+"Top": "Oben",
+"Header cell": "\u00dcberschrift",
+"Column": "Spalte",
+"Row group": "Zeilengruppe",
+"Cell": "Zelle",
+"Middle": "Mitte",
+"Cell type": "Zellentyp",
+"Copy row": "Zeile kopieren",
+"Row properties": "Zeileneigenschaften",
+"Table properties": "Tabelleneigenschaften",
+"Bottom": "Unten",
+"V Align": "Ausrichtung V",
+"Header": "Tabellen\u00fcberschrift",
+"Right": "Rechts",
+"Insert column after": "Neue Spalte rechts einf\u00fcgen",
+"Cols": "Spalten",
+"Insert row after": "Neue Zeile unterhalb einf\u00fcgen",
+"Width": "Breite",
+"Cell properties": "Zelleneigenschaften",
+"Left": "Links",
+"Cut row": "Zeile ausschneiden",
+"Delete column": "Spalte l\u00f6schen",
+"Center": "Zentriert",
+"Merge cells": "Zellen vereinen",
+"Insert template": "Vorlage einf\u00fcgen",
+"Templates": "Vorlagen",
+"Background color": "Hintergrundfarbe",
+"Custom...": "Benutzerdefiniert...",
+"Custom color": "Benutzerdefinierte Farbe",
+"No color": "Keine Farbe",
+"Text color": "Textfarbe",
+"Show blocks": "Blockelemente einblenden",
+"Show invisible characters": "Unsichtbare Zeichen einblenden",
+"Words: {0}": "W\u00f6rter: {0}",
+"Insert": "Einf\u00fcgen",
+"File": "Datei",
+"Edit": "Bearbeiten",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text Area. Dr\u00fccken Sie ALT-F9 f\u00fcr das Men\u00fc. Dr\u00fccken Sie ALT-F10 f\u00fcr die Werkzeugleiste. Dr\u00fccken Sie ALT-0 f\u00fcr Hilfe",
+"Tools": "Extras",
+"View": "Ansicht",
+"Table": "Tabelle",
+"Format": "Format"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/dv.js b/program/js/tinymce/langs/dv.js
new file mode 100644
index 000000000..081c715c0
--- /dev/null
+++ b/program/js/tinymce/langs/dv.js
@@ -0,0 +1,192 @@
+tinymce.addI18n('dv',{
+"Cut": "\u0786\u07a6\u0793\u07b0",
+"Heading 5": "\u0780\u07ac\u0791\u07a8\u0782\u07b0 5",
+"Header 2": "\u0780\u07ac\u0791\u07a7 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0786\u07b0\u078d\u07a8\u0795\u07b0\u0784\u07af\u0791\u07b0 \u0784\u07ad\u0782\u07aa\u0782\u07b0 \u0786\u07aa\u0783\u07aa\u0789\u07aa\u078e\u07ac \u0780\u07aa\u0787\u07b0\u078b\u07a6\u060c \u0784\u07b0\u0783\u07af\u0792\u07a6\u0783\u0787\u07a6\u0786\u07aa\u0782\u07b0 \u0782\u07aa\u078b\u07ad! Ctrl+X\/C\/V \u0784\u07ad\u0782\u07aa\u0782\u07b0 \u0786\u07aa\u0783\u07ad!",
+"Heading 4": "\u0780\u07ac\u0791\u07a8\u0782\u07b0 4",
+"Div": "\u0791\u07a6\u0787\u07a8\u0788\u07b0",
+"Heading 2": "\u0780\u07ac\u0791\u07a8\u0782\u07b0 2",
+"Paste": "\u0795\u07ad\u0790\u07b0\u0793\u07b0",
+"Close": "\u0782\u07a8\u0787\u07b0\u0788\u07a7",
+"Font Family": "\u078a\u07ae\u0782\u07b0\u0793\u07b0",
+"Pre": "\u0795\u07b0\u0783\u07a9",
+"Align right": "\u0786\u07a6\u0782\u07a7\u078c\u07a6\u0781\u07b0 \u0796\u07a6\u0787\u07b0\u0790\u07a7",
+"New document": "\u0787\u07a7 \u0791\u07ae\u0786\u07a8\u0787\u07aa\u0789\u07ac\u0782\u07b0\u0793\u07b0",
+"Blockquote": "\u0784\u07b0\u078d\u07ae\u0786\u07b0-\u0786\u07af\u0793\u07b0",
+"Numbered list": "\u0782\u07a6\u0782\u07b0\u0784\u07a6\u0783\u07aa \u078d\u07a8\u0790\u07b0\u0793\u07b0",
+"Heading 1": "\u0780\u07ac\u0791\u07a8\u0782\u07b0 1",
+"Headings": "\u0780\u07ac\u0791\u07a8\u0782\u07b0",
+"Increase indent": "\u078b\u07aa\u0783\u07aa\u0789\u07a8\u0782\u07b0 \u0784\u07ae\u0791\u07aa\u0786\u07aa\u0783\u07ad",
+"Formats": "\u078a\u07af\u0789\u07ac\u0793\u07b0\u078c\u07a6\u0787\u07b0",
+"Headers": "\u0780\u07ac\u0791\u07a7\u078c\u07a6\u0787\u07b0",
+"Select all": "\u0790\u07ac\u078d\u07ac\u0786\u07b0\u0793\u07b0 \u0787\u07af\u078d\u07b0",
+"Header 3": "\u0780\u07ac\u0791\u07a7 3",
+"Blocks": "\u0784\u07b0\u078d\u07ae\u0786\u07b0\u078c\u07a6\u0787\u07b0",
+"Undo": "\u0787\u07a6\u0782\u07b0\u0791\u07ab",
+"Strikethrough": "\u0789\u07ac\u078b\u07aa \u0783\u07ae\u0782\u078e\u07ae",
+"Bullet list": "\u0784\u07aa\u078d\u07ac\u0793\u07b0 \u078d\u07a8\u0790\u07b0\u0793\u07b0",
+"Header 1": "\u0780\u07ac\u0791\u07a7 1",
+"Superscript": "\u0789\u07a6\u078c\u07a9\u0787\u07a6\u0786\u07aa\u0783\u07aa",
+"Clear formatting": "\u078a\u07af\u0789\u07ac\u0793\u07b0\u078c\u07a6\u0787\u07b0 \u078a\u07ae\u0780\u07ad",
+"Font Sizes": "\u078a\u07ae\u0782\u07b0\u0793\u07b0 \u0790\u07a6\u0787\u07a8\u0792\u07b0",
+"Subscript": "\u078c\u07a8\u0783\u07a9\u0787\u07a6\u0786\u07aa\u0783\u07aa",
+"Header 6": "\u0780\u07ac\u0791\u07a7 6",
+"Redo": "\u0783\u07a9\u0791\u07ab",
+"Paragraph": "\u0795\u07ac\u0783\u07ac\u078e\u07b0\u0783\u07a7\u078a\u07b0",
+"Ok": "\u0787\u07af\u0786\u07ad",
+"Bold": "\u0784\u07af\u078d\u07b0\u0791\u07b0",
+"Code": "\u0786\u07af\u0791\u07b0",
+"Italic": "\u0787\u07a8\u0793\u07a6\u078d\u07a8\u0786\u07b0",
+"Align center": "\u0789\u07ac\u078b\u07a6\u0781\u07b0 \u0796\u07a6\u0787\u07b0\u0790\u07a7",
+"Header 5": "\u0780\u07ac\u0791\u07a7 5",
+"Heading 6": "\u0780\u07ac\u0791\u07a8\u0782\u07b0 6",
+"Heading 3": "\u0780\u07ac\u0791\u07a8\u0782\u07b0 3",
+"Decrease indent": "\u078b\u07aa\u0783\u07aa\u0789\u07a8\u0782\u07b0 \u0786\u07aa\u0791\u07a6\u0786\u07aa\u0783\u07ad",
+"Header 4": "\u0780\u07ac\u0791\u07a7 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0795\u07ad\u0790\u07b0\u0793\u07b0 \u0786\u07aa\u0783\u07ac\u0788\u07ad\u0782\u07a9 \u0795\u07b0\u078d\u07ac\u0787\u07a8\u0782\u07b0\u0786\u07ae\u0781\u07b0! \u0784\u07a6\u078b\u07a6\u078d\u07aa \u0786\u07aa\u0783\u07ac\u0787\u07b0\u0788\u07aa\u0789\u07a6\u0781\u07b0 \u0789\u07a8 \u0787\u07ae\u0795\u07b0\u079d\u07a6\u0782\u07b0 \u0787\u07ae\u078a\u07b0 \u0786\u07ae\u0781\u07b0\u078d\u07a6\u0787\u07b0\u0788\u07a7!",
+"Underline": "\u078b\u07a6\u0781\u07aa\u0783\u07ae\u0782\u078e\u07aa",
+"Cancel": "\u0786\u07ac\u0782\u07b0\u0790\u07a6\u078d\u07b0",
+"Justify": "\u0787\u07ac\u0787\u07b0\u0788\u07a6\u0783\u07aa \u0786\u07aa\u0783\u07ad",
+"Inline": "\u0787\u07a8\u0782\u07b0\u078d\u07a6\u0787\u07a8\u0782\u07b0",
+"Copy": "\u0786\u07ae\u0795\u07a9",
+"Align left": "\u0788\u07a7\u078c\u07a6\u0781\u07b0 \u0796\u07a6\u0787\u07b0\u0790\u07a7",
+"Visual aids": "\u0788\u07a8\u079d\u07aa\u0787\u07a6\u078d\u07b0 \u0787\u07ac\u0787\u07a8\u0791\u07b0\u0790\u07b0",
+"Lower Greek": "\u078d\u07af\u0788\u07a6\u0783 \u078e\u07b0\u0783\u07a9\u0786\u07b0",
+"Square": "\u078e\u07ae\u0785\u07a8",
+"Default": "\u0791\u07a8\u078a\u07af\u078d\u07b0\u0793\u07b0",
+"Lower Alpha": "\u078d\u07af\u0788\u07a6\u0783 \u0787\u07a6\u078d\u07b0\u078a\u07a7",
+"Circle": "\u0784\u07ae\u0785\u07aa",
+"Disc": "\u0788\u07a6\u0781\u07b0\u0784\u07aa\u0783\u07aa",
+"Upper Alpha": "\u0787\u07a6\u0795\u07a7 \u0787\u07a6\u078d\u07b0\u078a\u07a7",
+"Upper Roman": "\u0787\u07a6\u0795\u07a7 \u0783\u07af\u0789\u07a6\u0782\u07b0",
+"Lower Roman": "\u078d\u07af\u0788\u07a6\u0783 \u0783\u07af\u0789\u07a6\u0782\u07b0",
+"Name": "\u0782\u07a6\u0782\u07b0",
+"Anchor": "\u0787\u07ac\u0782\u07b0\u0786\u07a6\u0783",
+"You have unsaved changes are you sure you want to navigate away?": "\u0784\u07a6\u078b\u07a6\u078d\u07aa\u078c\u07a6\u0787\u07b0 \u0790\u07ad\u0788\u07b0 \u0782\u07aa\u0786\u07ae\u0781\u07b0 \u078b\u07ab\u0786\u07ae\u0781\u07b0\u078d\u07a6\u0782\u07b0\u0788\u07a9\u078c\u07a6\u061f",
+"Restore last draft": "\u078a\u07a6\u0780\u07aa\u078e\u07ac \u0791\u07b0\u0783\u07a7\u078a\u07b0\u0793\u07b0 \u0783\u07ac\u0790\u07b0\u0793\u07af \u0786\u07aa\u0783\u07ad",
+"Special character": "\u079a\u07a7\u0787\u07b0\u0790\u07a6 \u0787\u07a6\u0786\u07aa\u0783\u07aa\u078c\u07a6\u0787\u07b0",
+"Source code": "\u0789\u07a6\u0790\u07b0\u078b\u07a6\u0783\u07aa",
+"Right to left": "\u0786\u07a6\u0782\u07a7\u078c\u07aa\u0782\u07b0 \u0788\u07a7\u078c\u07a6\u0781\u07b0",
+"Left to right": "\u0788\u07a7\u078c\u07aa\u0782\u07b0 \u0786\u07a6\u0782\u07a7\u078c\u07a6\u0781\u07b0",
+"Emoticons": "\u079d\u07aa\u0787\u07ab\u0783\u07aa \u078a\u07ae\u0793\u07af",
+"Robots": "\u0783\u07af\u0784\u07ae\u0793\u07b0\u0790\u07b0",
+"Document properties": "\u0791\u07ae\u0786\u07a8\u0787\u07aa\u0789\u07ac\u0782\u07b0\u0793\u07b0\u078e\u07ac \u0790\u07a8\u078a\u07a6\u078c\u07a6\u0787\u07b0",
+"Title": "\u0793\u07a6\u0787\u07a8\u0793\u07a6\u078d\u07b0",
+"Keywords": "\u0786\u07a9\u0788\u07af\u0791\u07b0\u078c\u07a6\u0787\u07b0",
+"Encoding": "\u0787\u07ac\u0782\u07b0\u0786\u07af\u0791\u07a8\u0782\u07b0",
+"Description": "\u078c\u07a6\u078a\u07b0\u0790\u07a9\u078d\u07aa",
+"Author": "\u0788\u07ac\u0783\u07a8\u078a\u07a6\u0783\u07a7\u078c\u07b0",
+"Fullscreen": "\u078a\u07aa\u078d\u07b0\u0790\u07b0\u0786\u07b0\u0783\u07a9\u0782\u07b0",
+"Horizontal line": "\u0780\u07aa\u0783\u07a6\u0790\u07b0 \u0783\u07ae\u0782\u078e\u07aa",
+"Horizontal space": "\u0780\u07ae\u0783\u07a8\u0792\u07af\u0782\u07b0\u0793\u07a6\u078d\u07b0 \u0790\u07b0\u0795\u07ad\u0790\u07b0",
+"Insert\/edit image": "\u078a\u07ae\u0793\u07af\u078d\u07aa\u0782\u07b0\/\u0784\u07a6\u078b\u07a6\u078d\u07aa\u0786\u07aa\u0783\u07aa\u0782\u07b0",
+"General": "\u0787\u07a7\u0782\u07b0\u0789\u07aa",
+"Advanced": "\u0787\u07ac\u0791\u07b0\u0788\u07a7\u0782\u07b0\u0790\u07b0\u0791\u07b0",
+"Source": "\u0789\u07a6\u0790\u07b0\u078b\u07a6\u0783\u07aa",
+"Border": "\u0784\u07af\u0791\u07a6\u0783\u07aa",
+"Constrain proportions": "\u0788\u07a6\u0792\u07a6\u0782\u07b0 \u0780\u07a8\u078a\u07a6\u0780\u07a6\u0787\u07b0\u0793\u07a7",
+"Vertical space": "\u0788\u07a7\u0793\u07a8\u0786\u07a6\u078d\u07b0 \u0790\u07b0\u0795\u07ad\u0790\u07b0",
+"Image description": "\u078a\u07ae\u0793\u07af\u078e\u07ac \u078c\u07a6\u078a\u07b0\u0790\u07a9\u078d\u07aa",
+"Style": "\u0790\u07b0\u0793\u07a6\u0787\u07a8\u078d\u07b0",
+"Dimensions": "\u0789\u07a8\u0782\u07b0\u078c\u07a6\u0787\u07b0",
+"Insert image": "\u078a\u07ae\u0793\u07af \u0787\u07a8\u0782\u07b0\u0790\u07a7\u0793\u07b0 \u0786\u07aa\u0783\u07ad",
+"Insert date\/time": "\u0788\u07a6\u078e\u07aa\u078c\u07aa\/\u078c\u07a7\u0783\u07a9\u079a\u07b0 \u078d\u07aa\u0782\u07b0",
+"Remove link": "\u078d\u07a8\u0782\u07b0\u0786\u07b0 \u078a\u07ae\u0780\u07ad",
+"Url": "\u0794\u07ab.\u0787\u07a7\u0783\u07b0.\u0787\u07ac\u078d\u07b0",
+"Text to display": "\u078b\u07a6\u0787\u07b0\u0786\u07a6\u0782\u07b0\u0788\u07a9 \u0787\u07a8\u0784\u07a7\u0783\u07a7\u078c\u07b0",
+"Anchors": "\u0787\u07ac\u0782\u07b0\u0786\u07a6\u0783\u078c\u07a6\u0787\u07b0",
+"Insert link": "\u078d\u07a8\u0782\u07b0\u0786\u07b0 \u078d\u07aa\u0782\u07b0",
+"New window": "\u0787\u07a7 \u0788\u07a8\u0782\u07b0\u0791\u07af\u0787\u07a6\u0786\u07a6\u0781\u07b0",
+"None": "\u0782\u07ae\u0782\u07b0",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u078c\u07a8\u0794\u07a6 \u078d\u07a8\u0794\u07aa\u0787\u07b0\u0788\u07a9 \u0787\u07ac\u0780\u07ac\u0782\u07b0 \u0790\u07a6\u0787\u07a8\u0793\u07ac\u0787\u07b0\u078e\u07ac \u078d\u07a8\u0782\u07b0\u0786\u07ac\u0787\u07b0\u0786\u07a6\u0789\u07aa\u0782\u07b0 \u0787\u07ac\u0797\u07b0.\u0793\u07a9.\u0793\u07a9.\u0795\u07a9 \u0786\u07aa\u0783\u07a8\u0787\u07a6\u0781\u07b0 \u0787\u07a8\u078c\u07aa\u0783\u07aa \u0786\u07aa\u0783\u07a6\u0782\u07b0\u078c\u07af\u061f",
+"Target": "\u0793\u07a7\u078e\u07ac\u0793\u07b0",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u0789\u07ac\u0787\u07a8\u078d\u07b0\u0793\u07ab - \u0786\u07aa\u0783\u07a8\u0787\u07a6\u0781\u07b0 \u0787\u07a8\u078c\u07aa\u0783\u07aa\u0786\u07aa\u0783\u07a6\u0787\u07b0\u0788\u07a6\u0782\u07b0 \u0784\u07ad\u0782\u07aa\u0782\u07b0\u078a\u07aa\u0785\u07aa\u078c\u07af\u061f",
+"Insert\/edit link": "\u078d\u07a8\u0782\u07b0\u0786\u07b0 \u078d\u07aa\u0782\u07b0\/\u0784\u07a6\u078b\u07a6\u078d\u07aa \u078e\u07ac\u0782\u07a6\u0787\u07aa\u0782\u07b0",
+"Insert\/edit video": "\u0788\u07a9\u0791\u07a8\u0787\u07af \u078d\u07aa\u0782\u07b0\/\u0784\u07a6\u078b\u07a6\u078d\u07aa \u078e\u07ac\u0782\u07a6\u0787\u07aa\u0782\u07b0",
+"Poster": "\u0795\u07af\u0790\u07b0\u0793\u07a6\u0783",
+"Alternative source": "\u0787\u07a6\u078d\u07b0\u0793\u07a6\u0782\u07ad\u0793\u07a8\u0788\u07b0 \u0790\u07af\u0790\u07b0",
+"Paste your embed code below:": "\u0787\u07ac\u0789\u07b0\u0784\u07ac\u0791\u07b0 \u0786\u07af\u0791\u07b0 \u078c\u07a8\u0783\u07a9\u078e\u07a6\u0787\u07a8 \u0795\u07ad\u0790\u07b0\u0793\u07b0 \u0786\u07aa\u0783\u07ad",
+"Insert video": "\u0788\u07a9\u0791\u07a8\u0787\u07af \u078d\u07aa\u0782\u07b0",
+"Embed": "\u0787\u07ac\u0789\u07b0\u0784\u07ac\u0791\u07b0",
+"Nonbreaking space": "\u0782\u07ae\u0782\u07b0 \u0784\u07b0\u0783\u07ad\u0786\u07a8\u0782\u07b0 \u0790\u07b0\u0795\u07ad\u0790\u07b0",
+"Page break": "\u0795\u07ad\u0796\u07b0 \u0784\u07b0\u0783\u07ad\u0786\u07b0",
+"Paste as text": "\u0793\u07ac\u0786\u07b0\u0790\u07b0\u0793\u07b0 \u078e\u07ae\u078c\u07a6\u0781\u07b0 \u0795\u07ad\u0790\u07b0\u0793\u07b0 \u0786\u07aa\u0783\u07ad",
+"Preview": "\u0795\u07b0\u0783\u07a9\u0788\u07a8\u0787\u07aa",
+"Print": "\u0795\u07b0\u0783\u07a8\u0782\u07b0\u0793\u07b0 \u0786\u07aa\u0783\u07ad",
+"Save": "\u0790\u07ad\u0788\u07b0 \u0786\u07aa\u0783\u07ad",
+"Could not find the specified string.": "\u078c\u07a8\u0794\u07a6 \u0780\u07af\u0787\u07b0\u078b\u07a6\u0788\u07a7 \u078d\u07a6\u078a\u07aa\u0792\u07ac\u0787\u07b0 \u0782\u07aa\u078a\u07ac\u0782\u07aa\u0782\u07aa",
+"Replace": "\u0784\u07a6\u078b\u07a6\u078d\u07aa \u0786\u07aa\u0783\u07ad",
+"Next": "\u078a\u07a6\u0780\u07a6\u078c\u07a6\u0781\u07b0",
+"Whole words": "\u0784\u07a6\u0790\u07b0\u078c\u07a6\u0787\u07b0 \u0787\u07ac\u0787\u07b0\u0786\u07ae\u0781\u07b0",
+"Find and replace": "\u0780\u07af\u078b\u07aa\u0789\u07a6\u0781\u07b0\u078a\u07a6\u0780\u07aa \u0784\u07a6\u078b\u07a6\u078d\u07aa \u0786\u07aa\u0783\u07aa\u0782\u07b0",
+"Replace with": "\u0784\u07a6\u078b\u07a6\u078d\u07aa\u078e\u07a6\u0787\u07a8 \u0784\u07ad\u0782\u07aa\u0782\u07b0 \u0786\u07aa\u0783\u07a7\u0782\u07a9",
+"Find": "\u0780\u07af\u078b\u07a7",
+"Replace all": "\u0780\u07aa\u0783\u07a8\u0780\u07a7 \u0787\u07ac\u0787\u07b0\u0797\u07ac\u0787\u07b0 \u0784\u07a6\u078b\u07a6\u078d\u07aa \u0786\u07aa\u0783\u07ad",
+"Match case": "\u0786\u07ad\u0790\u07b0 \u0787\u07a6\u0781\u07b0 \u0784\u07a6\u078d\u07a7",
+"Prev": "\u0786\u07aa\u0783\u07a8\u0787\u07a6\u0781\u07b0",
+"Spellcheck": "\u0786\u07aa\u0781\u07b0 \u0780\u07af\u078b\u07a7",
+"Finish": "\u0782\u07a8\u0782\u07b0\u0789\u07a7",
+"Ignore all": "\u0780\u07aa\u0783\u07a8\u0780\u07a7 \u0787\u07ac\u0787\u07b0\u0797\u07ac\u0787\u07b0 \u078b\u07ab\u0786\u07ae\u0781\u07b0\u078d\u07a7",
+"Ignore": "\u078b\u07ab\u0786\u07ae\u0781\u07b0\u078d\u07a7",
+"Add to Dictionary": "\u0783\u07a6\u078b\u07a9\u078a\u07a6\u0781\u07b0 \u0787\u07a8\u078c\u07aa\u0783\u07aa\u0786\u07aa\u0783\u07ad",
+"Insert row before": "\u0786\u07aa\u0783\u07a8\u0787\u07a6\u0781\u07b0 \u0783\u07af\u0787\u07ac\u0787\u07b0 \u0787\u07a8\u078c\u07aa\u0783\u07aa \u0786\u07aa\u0783\u07ad",
+"Rows": "\u0783\u07af",
+"Height": "\u078b\u07a8\u078e\u07aa\u0789\u07a8\u0782\u07b0",
+"Paste row after": "\u078a\u07a6\u0780\u07a6\u078c\u07a6\u0781\u07b0 \u0783\u07af \u0795\u07ad\u0790\u07b0\u0793\u07b0 \u0786\u07aa\u0783\u07ad",
+"Alignment": "\u0787\u07ac\u078d\u07a6\u0787\u07a8\u0782\u07b0\u0789\u07ac\u0782\u07b0\u0793\u07b0",
+"Column group": "\u0786\u07ae\u078d\u07a6\u0789\u07b0 \u078e\u07b0\u0783\u07ab\u0795\u07b0",
+"Row": "\u0783\u07af",
+"Insert column before": "\u0786\u07aa\u0783\u07a8\u0787\u07a6\u0781\u07b0 \u0786\u07ae\u078d\u07a6\u0789\u07ac\u0787\u07b0 \u0787\u07a8\u078c\u07aa\u0783\u07aa \u0786\u07aa\u0783\u07ad",
+"Split cell": "\u0790\u07ac\u078d\u07b0 \u0788\u07a6\u0786\u07a8\u0786\u07aa\u0783\u07ad",
+"Cell padding": "\u0790\u07ac\u078d\u07b0 \u0795\u07ac\u0791\u07a8\u0782\u07b0",
+"Cell spacing": "\u0790\u07ac\u078d\u07b0 \u0790\u07b0\u0795\u07ad\u0790\u07a8\u0782\u07b0\u078e",
+"Row type": "\u0783\u07af\u078e\u07ac \u0788\u07a6\u0787\u07b0\u078c\u07a6\u0783\u07aa",
+"Insert table": "\u0793\u07ad\u0784\u07a6\u078d\u07b0 \u078d\u07aa\u0782\u07b0",
+"Body": "\u0784\u07ae\u0791\u07a9",
+"Caption": "\u0786\u07ac\u0795\u07b0\u079d\u07a6\u0782\u07b0",
+"Footer": "\u078a\u07ab\u0793\u07a6\u0783",
+"Delete row": "\u0783\u07af \u078a\u07ae\u0780\u07ad",
+"Paste row before": "\u0786\u07aa\u0783\u07a8\u0787\u07a6\u0781\u07b0 \u0783\u07af \u0795\u07ad\u0790\u07b0\u0793\u07b0 \u0786\u07aa\u0783\u07ad",
+"Scope": "\u0790\u07b0\u0786\u07af\u0795\u07b0",
+"Delete table": "\u0793\u07ad\u0784\u07a6\u078d\u07b0 \u078a\u07ae\u0780\u07ad",
+"H Align": "\u0780\u07aa\u0783\u07a6\u0790\u07b0 \u0787\u07ac\u078d\u07a6\u0787\u07a8\u0782\u07b0",
+"Top": "\u0789\u07a6\u078c\u07a8",
+"Header cell": "\u0780\u07ac\u0791\u07a7 \u0790\u07ac\u078d\u07b0",
+"Column": "\u0786\u07ae\u078d\u07a6\u0789\u07b0",
+"Row group": "\u0783\u07af \u078e\u07b0\u0783\u07ab\u0795\u07b0",
+"Cell": "\u0790\u07ac\u078d\u07b0",
+"Middle": "\u0789\u07ac\u078b\u07aa",
+"Cell type": "\u0790\u07ac\u078d\u07b0\u078e\u07ac \u0788\u07a6\u0787\u07b0\u078c\u07a6\u0783\u07aa",
+"Copy row": "\u0783\u07af \u0786\u07ae\u0795\u07a9\u0786\u07aa\u0783\u07ad",
+"Row properties": "\u0783\u07af\u078e\u07ac \u0790\u07a8\u078a\u07a6\u078c\u07a6\u0787\u07b0",
+"Table properties": "\u0793\u07ad\u0784\u07a6\u078d\u07b0\u078e\u07ac \u0790\u07a8\u078a\u07a6\u078c\u07a6\u0787\u07b0",
+"Bottom": "\u078c\u07a8\u0783\u07a8",
+"V Align": "\u078b\u07a8\u078e\u07a6\u0781\u07b0 \u0787\u07ac\u078d\u07a6\u0787\u07a8\u0782\u07b0",
+"Header": "\u0780\u07ac\u0791\u07a7",
+"Right": "\u0786\u07a6\u0782\u07a7\u078c\u07a6\u0781\u07b0",
+"Insert column after": "\u078a\u07a6\u0780\u07a6\u078c\u07a6\u0781\u07b0 \u0786\u07ae\u078d\u07a6\u0789\u07ac\u0787\u07b0 \u0787\u07a8\u078c\u07aa\u0783\u07aa \u0786\u07aa\u0783\u07ad",
+"Cols": "\u0786\u07ae\u078d\u07a6\u0789\u07b0",
+"Insert row after": "\u078a\u07a6\u0780\u07a6\u078c\u07a6\u0781\u07b0 \u0783\u07af\u0787\u07ac\u0787\u07b0 \u0787\u07a8\u078c\u07aa\u0783\u07aa \u0786\u07aa\u0783\u07ad",
+"Width": "\u078a\u07aa\u0785\u07a7\u0789\u07a8\u0782\u07b0",
+"Cell properties": "\u0790\u07ac\u078d\u07b0\u078e\u07ac \u0790\u07a8\u078a\u07a6\u078c\u07a6\u0787\u07b0",
+"Left": "\u0788\u07a7\u078c\u07a6\u0781\u07b0",
+"Cut row": "\u0783\u07af \u0786\u07a6\u0793\u07b0\u0786\u07aa\u0783\u07ad",
+"Delete column": "\u0786\u07ae\u078d\u07a6\u0789\u07b0 \u078a\u07ae\u0780\u07ad",
+"Center": "\u0789\u07ac\u078b\u07a6\u0781\u07b0",
+"Merge cells": "\u0790\u07ac\u078d\u07b0 \u0787\u07ac\u0787\u07b0\u0786\u07aa\u0783\u07ad",
+"Insert template": "\u0793\u07ac\u0789\u07b0\u0795\u07b0\u078d\u07ad\u0793\u07b0 \u0787\u07a8\u0782\u07b0\u0790\u07a7\u0793\u07b0 \u0786\u07aa\u0783\u07aa\u0782\u07b0",
+"Templates": "\u0793\u07ac\u0789\u07b0\u0795\u07b0\u078d\u07ad\u0793\u07b0\u078c\u07a6\u0787\u07b0",
+"Background color": "\u0784\u07ac\u0786\u07b0\u078e\u07b0\u0783\u07a6\u0787\u07aa\u0782\u07b0\u0791\u07b0\u078e\u07ac \u0786\u07aa\u078d\u07a6",
+"Text color": "\u0787\u07a6\u0786\u07aa\u0783\u07aa\u078e\u07ac \u0786\u07aa\u078d\u07a6",
+"Show blocks": "\u0784\u07b0\u078d\u07ae\u0786\u07b0\u078c\u07a6\u0787\u07b0 \u078b\u07a6\u0787\u07b0\u0786\u07a7",
+"Show invisible characters": "\u0782\u07aa\u078a\u07ac\u0782\u07b0\u0782\u07a6 \u0787\u07a6\u0786\u07aa\u0783\u07aa\u078c\u07a6\u0787\u07b0 \u078b\u07a6\u0787\u07b0\u0786\u07a7",
+"Words: {0}": "\u0784\u07a6\u0790\u07b0: {0}",
+"Insert": "\u0787\u07a8\u0782\u07b0\u0790\u07a7\u0793\u07b0",
+"File": "\u078a\u07a6\u0787\u07a8\u078d\u07b0",
+"Edit": "\u0784\u07a6\u078b\u07a6\u078d\u07aa \u078e\u07ac\u0782\u07a6\u0787\u07aa\u0782\u07b0",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u0783\u07a8\u0797\u07b0 \u0793\u07ac\u0786\u07b0\u0790\u07b0\u0793\u07b0 \u0787\u07ad\u0783\u07a8\u0787\u07a7. \u0789\u07ac\u0782\u07ab \u0780\u07af\u078b\u07aa\u0789\u07a6\u0781\u07b0 ALT-F9. \u0793\u07ab\u078d\u07b0\u0784\u07a6\u0783 \u0780\u07af\u078b\u07aa\u0789\u07a6\u0781\u07b0 ALT-F10. \u0787\u07ac\u0780\u07a9 \u0780\u07af\u078b\u07aa\u0789\u07a6\u0781\u07b0 ALT-0",
+"Tools": "\u0793\u07ab\u078d\u07b0\u078c\u07a6\u0787\u07b0",
+"View": "\u0788\u07a8\u0787\u07aa",
+"Table": "\u0793\u07ad\u0784\u07a6\u078d\u07b0",
+"Format": "\u078a\u07af\u0789\u07ac\u0793\u07b0"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/el.js b/program/js/tinymce/langs/el.js
new file mode 100644
index 000000000..0f14563d7
--- /dev/null
+++ b/program/js/tinymce/langs/el.js
@@ -0,0 +1,197 @@
+tinymce.addI18n('el',{
+"Cut": "\u0391\u03c0\u03bf\u03ba\u03bf\u03c0\u03ae",
+"Heading 5": "\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 5",
+"Header 2": "\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u039f \u03c0\u03b5\u03c1\u03b9\u03b7\u03b3\u03b7\u03c4\u03ae\u03c2 \u03c3\u03b1\u03c2 \u03b4\u03b5\u03bd \u03c5\u03c0\u03bf\u03c3\u03c4\u03b7\u03c1\u03af\u03b6\u03b5\u03b9 \u03ac\u03bc\u03b5\u03c3\u03b7 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03c3\u03c4\u03bf \u03c0\u03c1\u03cc\u03c7\u03b5\u03b9\u03c1\u03bf. \u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03c4\u03b5 \u03c4\u03b9\u03c2 \u03c3\u03c5\u03bd\u03c4\u03bf\u03bc\u03b5\u03cd\u03c3\u03b5\u03b9\u03c2 \u03c0\u03bb\u03b7\u03ba\u03c4\u03c1\u03bf\u03bb\u03bf\u03b3\u03af\u03bf\u03c5 Ctrl+X\/C\/V.",
+"Heading 4": "\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 4",
+"Div": "Div",
+"Heading 2": "\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 2",
+"Paste": "\u0395\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7",
+"Close": "\u039a\u03bb\u03b5\u03af\u03c3\u03b9\u03bc\u03bf",
+"Font Family": "\u0393\u03c1\u03b1\u03bc\u03bc\u03b1\u03c4\u03bf\u03c3\u03b5\u03b9\u03c1\u03ac",
+"Pre": "Pre",
+"Align right": "\u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7 \u03b4\u03b5\u03be\u03b9\u03ac",
+"New document": "\u039d\u03ad\u03bf \u03ad\u03b3\u03b3\u03c1\u03b1\u03c6\u03bf",
+"Blockquote": "\u03a0\u03b5\u03c1\u03b9\u03bf\u03c7\u03ae \u03c0\u03b1\u03c1\u03ac\u03b8\u03b5\u03c3\u03b7\u03c2",
+"Numbered list": "\u0391\u03c1\u03b9\u03b8\u03bc\u03b7\u03bc\u03ad\u03bd\u03b7 \u03bb\u03af\u03c3\u03c4\u03b1",
+"Heading 1": "\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 1",
+"Headings": "\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b5\u03c2",
+"Increase indent": "\u0391\u03cd\u03be\u03b7\u03c3\u03b7 \u03b5\u03c3\u03bf\u03c7\u03ae\u03c2",
+"Formats": "\u039c\u03bf\u03c1\u03c6\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7",
+"Headers": "\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b5\u03c2",
+"Select all": "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03cc\u03bb\u03c9\u03bd",
+"Header 3": "\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 3",
+"Blocks": "\u03a4\u03bc\u03ae\u03bc\u03b1\u03c4\u03b1",
+"Undo": "\u0391\u03bd\u03b1\u03af\u03c1\u03b5\u03c3\u03b7",
+"Strikethrough": "\u0394\u03b9\u03b1\u03ba\u03c1\u03b9\u03c4\u03ae \u03b4\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae",
+"Bullet list": "\u039b\u03af\u03c3\u03c4\u03b1 \u03bc\u03b5 \u03ba\u03bf\u03c5\u03ba\u03ba\u03af\u03b4\u03b5\u03c2",
+"Header 1": "\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 1",
+"Superscript": "\u0395\u03ba\u03b8\u03ad\u03c4\u03b7\u03c2",
+"Clear formatting": "\u0391\u03c0\u03b1\u03bb\u03bf\u03b9\u03c6\u03ae \u03bc\u03bf\u03c1\u03c6\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7\u03c2",
+"Font Sizes": "\u039c\u03ad\u03b3\u03b5\u03b8\u03bf\u03c2",
+"Subscript": "\u0394\u03b5\u03af\u03ba\u03c4\u03b7\u03c2",
+"Header 6": "\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 6",
+"Redo": "\u0395\u03c0\u03b1\u03bd\u03ac\u03bb\u03b7\u03c8\u03b7",
+"Paragraph": "\u03a0\u03b1\u03c1\u03ac\u03b3\u03c1\u03b1\u03c6\u03bf\u03c2",
+"Ok": "\u0395\u03bd\u03c4\u03ac\u03be\u03b5\u03b9",
+"Bold": "\u0388\u03bd\u03c4\u03bf\u03bd\u03b7",
+"Code": "\u039a\u03ce\u03b4\u03b9\u03ba\u03b1\u03c2",
+"Italic": "\u03a0\u03bb\u03ac\u03b3\u03b9\u03b1",
+"Align center": "\u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7 \u03c3\u03c4\u03bf \u03ba\u03ad\u03bd\u03c4\u03c1\u03bf",
+"Header 5": "\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 5",
+"Heading 6": "\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 6",
+"Heading 3": "\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 3",
+"Decrease indent": "\u039c\u03b5\u03af\u03c9\u03c3\u03b7 \u03b5\u03c3\u03bf\u03c7\u03ae\u03c2",
+"Header 4": "\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0397 \u03b5\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7 \u03b5\u03af\u03bd\u03b1\u03b9 \u03c4\u03ce\u03c1\u03b1 \u03c3\u03b5 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03b1\u03c0\u03bb\u03bf\u03cd \u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5. \u03a4\u03b1 \u03c0\u03b5\u03c1\u03b9\u03b5\u03c7\u03cc\u03bc\u03b5\u03bd\u03b1 \u03bc\u03b9\u03b1\u03c2 \u03b5\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7\u03c2 \u03b8\u03b1 \u03b5\u03c0\u03b9\u03ba\u03bf\u03bb\u03bb\u03bf\u03cd\u03bd\u03c4\u03b1\u03b9 \u03c9\u03c2 \u03b1\u03c0\u03bb\u03cc \u03ba\u03b5\u03af\u03bc\u03b5\u03bd\u03bf \u03cc\u03c3\u03bf \u03b7 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03b1\u03c5\u03c4\u03ae \u03c0\u03b1\u03c1\u03b1\u03bc\u03ad\u03bd\u03b5\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03ae.",
+"Underline": "\u03a5\u03c0\u03bf\u03b3\u03c1\u03ac\u03bc\u03bc\u03b9\u03c3\u03b7",
+"Cancel": "\u0391\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7",
+"Justify": "\u03a0\u03bb\u03ae\u03c1\u03b7\u03c2 \u03c3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7",
+"Inline": "\u0395\u03bd\u03c3\u03c9\u03bc\u03b1\u03c4\u03c9\u03bc\u03ad\u03bd\u03b7",
+"Copy": "\u0391\u03bd\u03c4\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae",
+"Align left": "\u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7 \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac",
+"Visual aids": "O\u03c0\u03c4\u03b9\u03ba\u03ac \u03b2\u03bf\u03b7\u03b8\u03ae\u03bc\u03b1\u03c4\u03b1 ",
+"Lower Greek": "\u03a0\u03b5\u03b6\u03ac \u03b5\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac",
+"Square": "\u03a4\u03b5\u03c4\u03c1\u03ac\u03b3\u03c9\u03bd\u03bf",
+"Default": "\u03a0\u03c1\u03bf\u03ba\u03b1\u03b8\u03bf\u03c1\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf",
+"Lower Alpha": "\u03a0\u03b5\u03b6\u03ac \u03bb\u03b1\u03c4\u03b9\u03bd\u03b9\u03ba\u03ac",
+"Circle": "\u039a\u03cd\u03ba\u03bb\u03bf\u03c2",
+"Disc": "\u0394\u03af\u03c3\u03ba\u03bf\u03c2",
+"Upper Alpha": "\u039a\u03b5\u03c6\u03b1\u03bb\u03b1\u03af\u03b1 \u03bb\u03b1\u03c4\u03b9\u03bd\u03b9\u03ba\u03ac",
+"Upper Roman": "\u039a\u03b5\u03c6\u03b1\u03bb\u03b1\u03af\u03b1 \u03c1\u03c9\u03bc\u03b1\u03ca\u03ba\u03ac",
+"Lower Roman": "\u03a0\u03b5\u03b6\u03ac \u03c1\u03c9\u03bc\u03b1\u03ca\u03ba\u03ac",
+"Name": "\u038c\u03bd\u03bf\u03bc\u03b1",
+"Anchor": "\u0391\u03b3\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7",
+"You have unsaved changes are you sure you want to navigate away?": "\u0388\u03c7\u03b5\u03c4\u03b5 \u03bc\u03b7 \u03b1\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03c5\u03bc\u03ad\u03bd\u03b5\u03c2 \u03b1\u03bb\u03bb\u03b1\u03b3\u03ad\u03c2. \u0395\u03af\u03c3\u03c4\u03b5 \u03b2\u03ad\u03b2\u03b1\u03b9\u03bf\u03b9 \u03cc\u03c4\u03b9 \u03b8\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03c6\u03cd\u03b3\u03b5\u03c4\u03b5 \u03b1\u03c0\u03cc \u03c4\u03b7\u03bd \u03c3\u03b5\u03bb\u03af\u03b4\u03b1;",
+"Restore last draft": "\u0395\u03c0\u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac \u03c4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03bf\u03c5 \u03c3\u03c7\u03b5\u03b4\u03af\u03bf\u03c5",
+"Special character": "\u0395\u03b9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03ae\u03c1\u03b1\u03c2",
+"Source code": "\u03a0\u03b7\u03b3\u03b1\u03af\u03bf\u03c2 \u03ba\u03ce\u03b4\u03b9\u03ba\u03b1\u03c2",
+"Color": "\u03a7\u03c1\u03ce\u03bc\u03b1",
+"Right to left": "\u0391\u03c0\u03cc \u03b4\u03b5\u03be\u03b9\u03ac \u03c0\u03c1\u03bf\u03c2 \u03c4\u03b1 \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac",
+"Left to right": "\u0391\u03c0\u03cc \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac \u03c0\u03c1\u03bf\u03c2 \u03c4\u03b1 \u03b4\u03b5\u03be\u03b9\u03ac",
+"Emoticons": "\u03a6\u03b1\u03c4\u03c3\u03bf\u03cd\u03bb\u03b5\u03c2",
+"Robots": "\u03a1\u03bf\u03bc\u03c0\u03cc\u03c4",
+"Document properties": "\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 \u03b5\u03b3\u03b3\u03c1\u03ac\u03c6\u03bf\u03c5",
+"Title": "\u03a4\u03af\u03c4\u03bb\u03bf\u03c2",
+"Keywords": "\u039b\u03ad\u03be\u03b5\u03b9\u03c2 \u03ba\u03bb\u03b5\u03b9\u03b4\u03b9\u03ac",
+"Encoding": "\u039a\u03c9\u03b4\u03b9\u03ba\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7",
+"Description": "\u03a0\u03b5\u03c1\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae",
+"Author": "\u03a3\u03c5\u03bd\u03c4\u03ac\u03ba\u03c4\u03b7\u03c2",
+"Fullscreen": "\u03a0\u03bb\u03ae\u03c1\u03b7\u03c2 \u03bf\u03b8\u03cc\u03bd\u03b7",
+"Horizontal line": "\u039f\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03b1 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae",
+"Horizontal space": "\u039f\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03bf \u03b4\u03b9\u03ac\u03c3\u03c4\u03b7\u03bc\u03b1",
+"Insert\/edit image": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae\/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2",
+"General": "\u0393\u03b5\u03bd\u03b9\u03ba\u03ac",
+"Advanced": "\u0393\u03b9\u03b1 \u03a0\u03c1\u03bf\u03c7\u03c9\u03c1\u03b7\u03bc\u03ad\u03bd\u03bf\u03c5\u03c2",
+"Source": "\u03a0\u03b7\u03b3\u03ae",
+"Border": "\u03a0\u03bb\u03b1\u03af\u03c3\u03b9\u03bf",
+"Constrain proportions": "\u03a0\u03b5\u03c1\u03b9\u03bf\u03c1\u03b9\u03c3\u03bc\u03cc\u03c2 \u03b1\u03bd\u03b1\u03bb\u03bf\u03b3\u03b9\u03ce\u03bd",
+"Vertical space": "\u039a\u03ac\u03b8\u03b5\u03c4\u03bf \u03b4\u03b9\u03ac\u03c3\u03c4\u03b7\u03bc\u03b1",
+"Image description": "\u03a0\u03b5\u03c1\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2",
+"Style": "\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7",
+"Dimensions": "\u0394\u03b9\u03b1\u03c3\u03c4\u03ac\u03c3\u03b5\u03b9\u03c2",
+"Insert image": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2",
+"Insert date\/time": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03b7\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1\u03c2\/\u03ce\u03c1\u03b1\u03c2",
+"Remove link": "\u0391\u03c6\u03b1\u03af\u03c1\u03b5\u03c3\u03b7 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5",
+"Url": "URL",
+"Text to display": "\u039a\u03b5\u03af\u03bc\u03b5\u03bd\u03bf \u03b3\u03b9\u03b1 \u03b5\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7",
+"Anchors": "\u0386\u03b3\u03ba\u03c5\u03c1\u03b5\u03c2",
+"Insert link": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5",
+"New window": "\u039d\u03ad\u03bf \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf",
+"None": "\u039a\u03b1\u03bc\u03af\u03b1",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u0397 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 URL \u03c0\u03bf\u03c5 \u03b5\u03b9\u03c3\u03ac\u03c7\u03b8\u03b7\u03ba\u03b5 \u03c0\u03b9\u03b8\u03b1\u03bd\u03ce\u03c2 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03be\u03c9\u03c4\u03b5\u03c1\u03b9\u03ba\u03cc\u03c2 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf\u03c2. \u0398\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03c0\u03c1\u03bf\u03c3\u03b8\u03ad\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf \u03b1\u03c0\u03b1\u03b9\u03c4\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf \u03c0\u03c1\u03cc\u03b8\u03b7\u03bc\u03b1 http:\/\/;",
+"Target": "\u03a0\u03c1\u03bf\u03bf\u03c1\u03b9\u03c3\u03bc\u03cc\u03c2",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u0397 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 URL \u03c0\u03bf\u03c5 \u03b5\u03b9\u03c3\u03ac\u03c7\u03b8\u03b7\u03ba\u03b5 \u03c0\u03b9\u03b8\u03b1\u03bd\u03ce\u03c2 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 email. \u0398\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03c0\u03c1\u03bf\u03c3\u03b8\u03ad\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf \u03b1\u03c0\u03b1\u03b9\u03c4\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf \u03c0\u03c1\u03cc\u03b8\u03b7\u03bc\u03b1 mailto:;",
+"Insert\/edit link": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae\/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5",
+"Insert\/edit video": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae\/\u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03b2\u03af\u03bd\u03c4\u03b5\u03bf",
+"Poster": "\u0391\u03c6\u03af\u03c3\u03b1",
+"Alternative source": "\u0395\u03bd\u03b1\u03bb\u03bb\u03b1\u03ba\u03c4\u03b9\u03ba\u03ae \u03c0\u03c1\u03bf\u03ad\u03bb\u03b5\u03c5\u03c3\u03b7",
+"Paste your embed code below:": "\u0395\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03bf\u03bd \u03b5\u03bd\u03c3\u03c9\u03bc\u03b1\u03c4\u03c9\u03bc\u03ad\u03bd\u03bf \u03ba\u03ce\u03b4\u03b9\u03ba\u03b1 \u03c0\u03b1\u03c1\u03b1\u03ba\u03ac\u03c4\u03c9:",
+"Insert video": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03b2\u03af\u03bd\u03c4\u03b5\u03bf",
+"Embed": "\u0395\u03bd\u03c3\u03c9\u03bc\u03ac\u03c4\u03c9\u03c3\u03b7",
+"Nonbreaking space": "\u039a\u03b5\u03bd\u03cc \u03c7\u03c9\u03c1\u03af\u03c2 \u03b4\u03b9\u03b1\u03ba\u03bf\u03c0\u03ae",
+"Page break": "\u0391\u03bb\u03bb\u03b1\u03b3\u03ae \u03c3\u03b5\u03bb\u03af\u03b4\u03b1\u03c2",
+"Paste as text": "\u0395\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7 \u03c9\u03c2 \u03ba\u03b5\u03af\u03bc\u03b5\u03bd\u03bf",
+"Preview": "\u03a0\u03c1\u03bf\u03b5\u03c0\u03b9\u03c3\u03ba\u03cc\u03c0\u03b7\u03c3\u03b7",
+"Print": "\u0395\u03ba\u03c4\u03cd\u03c0\u03c9\u03c3\u03b7",
+"Save": "\u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7",
+"Could not find the specified string.": "\u0394\u03b5\u03bd \u03ae\u03c4\u03b1\u03bd \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae \u03b7 \u03b5\u03cd\u03c1\u03b5\u03c3\u03b7 \u03c4\u03bf\u03c5 \u03ba\u03b1\u03b8\u03bf\u03c1\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf\u03c5 \u03b1\u03bb\u03c6\u03b1\u03c1\u03b9\u03b8\u03bc\u03b7\u03c4\u03b9\u03ba\u03bf\u03cd.",
+"Replace": "\u0391\u03bd\u03c4\u03b9\u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7",
+"Next": "\u0395\u03c0\u03cc\u03bc.",
+"Whole words": "\u039f\u03bb\u03cc\u03ba\u03bb\u03b7\u03c1\u03b5\u03c2 \u03bb\u03ad\u03be\u03b5\u03b9\u03c2",
+"Find and replace": "\u0395\u03cd\u03c1\u03b5\u03c3\u03b7 \u03ba\u03b1\u03b9 \u03b1\u03bd\u03c4\u03b9\u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7",
+"Replace with": "\u0391\u03bd\u03c4\u03b9\u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7 \u03bc\u03b5",
+"Find": "\u0395\u03cd\u03c1\u03b5\u03c3\u03b7",
+"Replace all": "\u0391\u03bd\u03c4\u03b9\u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7 \u03cc\u03bb\u03c9\u03bd",
+"Match case": "\u03a4\u03b1\u03af\u03c1\u03b9\u03b1\u03c3\u03bc\u03b1 \u03c0\u03b5\u03b6\u03ce\u03bd\/\u03ba\u03b5\u03c6\u03b1\u03bb\u03b1\u03af\u03c9\u03bd",
+"Prev": "\u03a0\u03c1\u03bf\u03b7\u03b3.",
+"Spellcheck": "\u039f\u03c1\u03b8\u03bf\u03b3\u03c1\u03b1\u03c6\u03b9\u03ba\u03cc\u03c2 \u03ad\u03bb\u03b5\u03b3\u03c7\u03bf\u03c2 ",
+"Finish": "\u03a4\u03ad\u03bb\u03bf\u03c2",
+"Ignore all": "\u03a0\u03b1\u03c1\u03ac\u03b2\u03bb\u03b5\u03c8\u03b7 \u03cc\u03bb\u03c9\u03bd",
+"Ignore": "\u03a0\u03b1\u03c1\u03ac\u03b2\u03bb\u03b5\u03c8\u03b7",
+"Add to Dictionary": "\u03a0\u03c1\u03bf\u03c3\u03b8\u03ae\u03ba\u03b7 \u03c3\u03c4\u03bf \u039b\u03b5\u03be\u03b9\u03ba\u03cc",
+"Insert row before": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2 \u03b5\u03c0\u03ac\u03bd\u03c9",
+"Rows": "\u0393\u03c1\u03b1\u03bc\u03bc\u03ad\u03c2",
+"Height": "\u038e\u03c8\u03bf\u03c2",
+"Paste row after": "\u0395\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2 \u03ba\u03ac\u03c4\u03c9",
+"Alignment": "\u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7",
+"Border color": "\u03a7\u03c1\u03ce\u03bc\u03b1 \u03c0\u03bb\u03b1\u03b9\u03c3\u03af\u03bf\u03c5",
+"Column group": "\u039f\u03bc\u03ac\u03b4\u03b1 \u03c3\u03c4\u03b7\u03bb\u03ce\u03bd",
+"Row": "\u0393\u03c1\u03b1\u03bc\u03bc\u03ae",
+"Insert column before": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03c3\u03c4\u03ae\u03bb\u03b7\u03c2 \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac",
+"Split cell": "\u0394\u03b9\u03b1\u03af\u03c1\u03b5\u03c3\u03b7 \u03ba\u03b5\u03bb\u03b9\u03bf\u03cd",
+"Cell padding": "\u0391\u03bd\u03b1\u03c0\u03bb\u03ae\u03c1\u03c9\u03c3\u03b7 \u03ba\u03b5\u03bb\u03b9\u03ce\u03bd",
+"Cell spacing": "\u0391\u03c0\u03cc\u03c3\u03c4\u03b1\u03c3\u03b7 \u03ba\u03b5\u03bb\u03b9\u03ce\u03bd",
+"Row type": "\u03a4\u03cd\u03c0\u03bf\u03c2 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2",
+"Insert table": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03c0\u03af\u03bd\u03b1\u03ba\u03b1",
+"Body": "\u03a3\u03ce\u03bc\u03b1",
+"Caption": "\u039b\u03b5\u03b6\u03ac\u03bd\u03c4\u03b1",
+"Footer": "\u03a5\u03c0\u03bf\u03c3\u03ad\u03bb\u03b9\u03b4\u03bf",
+"Delete row": "\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2",
+"Paste row before": "\u0395\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2 \u03b5\u03c0\u03ac\u03bd\u03c9",
+"Scope": "\u0388\u03ba\u03c4\u03b1\u03c3\u03b7",
+"Delete table": "\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae \u03c0\u03af\u03bd\u03b1\u03ba\u03b1",
+"H Align": "\u039f\u03c1. \u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7",
+"Top": "\u039a\u03bf\u03c1\u03c5\u03c6\u03ae",
+"Header cell": "\u039a\u03b5\u03bb\u03af-\u03ba\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1",
+"Column": "\u03a3\u03c4\u03ae\u03bb\u03b7",
+"Row group": "\u039f\u03bc\u03ac\u03b4\u03b1 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ce\u03bd",
+"Cell": "\u039a\u03b5\u03bb\u03af",
+"Middle": "\u039c\u03ad\u03c3\u03b7",
+"Cell type": "\u03a4\u03cd\u03c0\u03bf\u03c2 \u03ba\u03b5\u03bb\u03b9\u03bf\u03cd",
+"Copy row": "\u0391\u03bd\u03c4\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2",
+"Row properties": "\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2",
+"Table properties": "\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 \u03c0\u03af\u03bd\u03b1\u03ba\u03b1",
+"Bottom": "\u039a\u03ac\u03c4\u03c9",
+"V Align": "\u039a. \u03a3\u03c4\u03bf\u03af\u03c7\u03b9\u03c3\u03b7",
+"Header": "\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1",
+"Right": "\u0394\u03b5\u03be\u03b9\u03ac",
+"Insert column after": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03c3\u03c4\u03ae\u03bb\u03b7\u03c2 \u03b4\u03b5\u03be\u03b9\u03ac",
+"Cols": "\u03a3\u03c4\u03ae\u03bb\u03b5\u03c2",
+"Insert row after": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2 \u03ba\u03ac\u03c4\u03c9",
+"Width": "\u03a0\u03bb\u03ac\u03c4\u03bf\u03c2",
+"Cell properties": "\u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 \u03ba\u03b5\u03bb\u03b9\u03bf\u03cd",
+"Left": "\u0391\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac",
+"Cut row": "\u0391\u03c0\u03bf\u03ba\u03bf\u03c0\u03ae \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2",
+"Delete column": "\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae \u03c3\u03c4\u03ae\u03bb\u03b7\u03c2",
+"Center": "\u039a\u03b5\u03bd\u03c4\u03c1\u03b1\u03c1\u03b9\u03c3\u03bc\u03ad\u03bd\u03b7",
+"Merge cells": "\u03a3\u03c5\u03b3\u03c7\u03ce\u03bd\u03b5\u03c5\u03c3\u03b7 \u03ba\u03b5\u03bb\u03b9\u03ce\u03bd",
+"Insert template": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03c0\u03c1\u03bf\u03c4\u03cd\u03c0\u03bf\u03c5 ",
+"Templates": "\u03a0\u03c1\u03cc\u03c4\u03c5\u03c0\u03b1",
+"Background color": "\u03a7\u03c1\u03ce\u03bc\u03b1 \u03c6\u03cc\u03bd\u03c4\u03bf\u03c5",
+"Custom...": "\u03a0\u03c1\u03bf\u03c3\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae...",
+"Custom color": "\u03a0\u03c1\u03bf\u03c3\u03b1\u03c1\u03bc\u03bf\u03c3\u03bc\u03ad\u03bd\u03bf \u03c7\u03c1\u03ce\u03bc\u03b1",
+"No color": "\u03a7\u03c9\u03c1\u03af\u03c2 \u03c7\u03c1\u03ce\u03bc\u03b1",
+"Text color": "\u03a7\u03c1\u03ce\u03bc\u03b1 \u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5 ",
+"Show blocks": "\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03c4\u03bc\u03b7\u03bc\u03ac\u03c4\u03c9\u03bd",
+"Show invisible characters": "\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03ba\u03c1\u03c5\u03c6\u03ce\u03bd \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03ae\u03c1\u03c9\u03bd",
+"Words: {0}": "\u039b\u03ad\u03be\u03b5\u03b9\u03c2: {0}",
+"Insert": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae",
+"File": "\u0391\u03c1\u03c7\u03b5\u03af\u03bf",
+"Edit": "\u0395\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u03b1",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u03a0\u03b5\u03c1\u03b9\u03bf\u03c7\u03ae \u0395\u03bc\u03c0\u03bb\u03bf\u03c5\u03c4\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf \u039a\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5. \u03a0\u03b1\u03c4\u03ae\u03c3\u03c4\u03b5 ALT-F9 \u03b3\u03b9\u03b1 \u03c4\u03bf \u03bc\u03b5\u03bd\u03bf\u03cd. \u03a0\u03b1\u03c4\u03ae\u03c3\u03c4\u03b5 ALT-F10 \u03b3\u03b9\u03b1 \u03c4\u03b7 \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae \u03b5\u03c1\u03b3\u03b1\u03bb\u03b5\u03af\u03c9\u03bd. \u03a0\u03b1\u03c4\u03ae\u03c3\u03c4\u03b5 ALT-0 \u03b3\u03b9\u03b1 \u03b2\u03bf\u03ae\u03b8\u03b5\u03b9\u03b1",
+"Tools": "\u0395\u03c1\u03b3\u03b1\u03bb\u03b5\u03af\u03b1",
+"View": "\u03a0\u03c1\u03bf\u03b2\u03bf\u03bb\u03ae",
+"Table": "\u03a0\u03af\u03bd\u03b1\u03ba\u03b1\u03c2",
+"Format": "\u039c\u03bf\u03c1\u03c6\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/en_CA.js b/program/js/tinymce/langs/en_CA.js
new file mode 100644
index 000000000..c91f2821e
--- /dev/null
+++ b/program/js/tinymce/langs/en_CA.js
@@ -0,0 +1,191 @@
+tinymce.addI18n('en_CA',{
+"Cut": "Cut",
+"Heading 5": "Heading 5",
+"Header 2": "Header 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.",
+"Heading 4": "Heading 4",
+"Div": "Div",
+"Heading 2": "Heading 2",
+"Paste": "Paste",
+"Close": "Close",
+"Font Family": "Font Family",
+"Pre": "Pre",
+"Align right": "Align right",
+"New document": "New document",
+"Blockquote": "Blockquote",
+"Numbered list": "Numbered list",
+"Heading 1": "Heading 1",
+"Headings": "Headings",
+"Increase indent": "Increase indent",
+"Formats": "Formats",
+"Headers": "Headers",
+"Select all": "Select all",
+"Header 3": "Header 3",
+"Blocks": "Blocks",
+"Undo": "Undo",
+"Strikethrough": "Strikethrough",
+"Bullet list": "Bullet list",
+"Header 1": "Header 1",
+"Superscript": "Superscript",
+"Clear formatting": "Clear formatting",
+"Font Sizes": "Font Sizes",
+"Subscript": "Subscript",
+"Header 6": "Header 6",
+"Redo": "Redo",
+"Paragraph": "Paragraph",
+"Ok": "Ok",
+"Bold": "Bold",
+"Code": "Code",
+"Italic": "Italic",
+"Align center": "Align center",
+"Header 5": "Header 5",
+"Heading 6": "Heading 6",
+"Heading 3": "Heading 3",
+"Decrease indent": "Decrease indent",
+"Header 4": "Header 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.",
+"Underline": "Underline",
+"Cancel": "Cancel",
+"Justify": "Justify",
+"Inline": "Inline",
+"Copy": "Copy",
+"Align left": "Align left",
+"Visual aids": "Visual aids",
+"Lower Greek": "Lower Greek",
+"Square": "Square",
+"Default": "Default",
+"Lower Alpha": "Lower Alpha",
+"Circle": "Circle",
+"Disc": "Disc",
+"Upper Alpha": "Upper Alpha",
+"Upper Roman": "Upper Roman",
+"Lower Roman": "Lower Roman",
+"Name": "Name",
+"Anchor": "Anchor",
+"You have unsaved changes are you sure you want to navigate away?": "You have unsaved changes are you sure you want to navigate away?",
+"Restore last draft": "Restore last draft",
+"Special character": "Special character",
+"Source code": "Source code",
+"Right to left": "Right to left",
+"Left to right": "Left to right",
+"Emoticons": "Emoticons",
+"Robots": "Robots",
+"Document properties": "Document properties",
+"Title": "Title",
+"Keywords": "Keywords",
+"Encoding": "Encoding",
+"Description": "Description",
+"Author": "Author",
+"Fullscreen": "Fullscreen",
+"Horizontal line": "Horizontal line",
+"Horizontal space": "Horizontal space",
+"Insert\/edit image": "Insert\/edit image",
+"General": "General",
+"Advanced": "Advanced",
+"Source": "Source",
+"Border": "Border",
+"Constrain proportions": "Constrain proportions",
+"Vertical space": "Vertical space",
+"Image description": "Image description",
+"Style": "Style",
+"Dimensions": "Dimensions",
+"Insert image": "Insert image",
+"Insert date\/time": "Insert date\/time",
+"Remove link": "Remove link",
+"Url": "Url",
+"Text to display": "Text to display",
+"Anchors": "Anchors",
+"Insert link": "Insert link",
+"New window": "New window",
+"None": "None",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?",
+"Target": "Target",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",
+"Insert\/edit link": "Insert\/edit link",
+"Insert\/edit video": "Insert\/edit video",
+"Poster": "Poster",
+"Alternative source": "Alternative source",
+"Paste your embed code below:": "Paste your embed code below:",
+"Insert video": "Insert video",
+"Embed": "Embed",
+"Nonbreaking space": "Nonbreaking space",
+"Page break": "Page break",
+"Paste as text": "Paste as text",
+"Preview": "Preview",
+"Print": "Print",
+"Save": "Save",
+"Could not find the specified string.": "Could not find the specified string.",
+"Replace": "Replace",
+"Next": "Next",
+"Whole words": "Whole words",
+"Find and replace": "Find and replace",
+"Replace with": "Replace with",
+"Find": "Find",
+"Replace all": "Replace all",
+"Match case": "Match case",
+"Prev": "Prev",
+"Spellcheck": "Spellcheck",
+"Finish": "Finish",
+"Ignore all": "Ignore all",
+"Ignore": "Ignore",
+"Insert row before": "Insert row before",
+"Rows": "Rows",
+"Height": "Height",
+"Paste row after": "Paste row after",
+"Alignment": "Alignment",
+"Column group": "Column group",
+"Row": "Row",
+"Insert column before": "Insert column before",
+"Split cell": "Split cell",
+"Cell padding": "Cell padding",
+"Cell spacing": "Cell spacing",
+"Row type": "Row type",
+"Insert table": "Insert table",
+"Body": "Body",
+"Caption": "Caption",
+"Footer": "Footer",
+"Delete row": "Delete row",
+"Paste row before": "Paste row before",
+"Scope": "Scope",
+"Delete table": "Delete table",
+"H Align": "H Align",
+"Top": "Top",
+"Header cell": "Header cell",
+"Column": "Column",
+"Row group": "Row group",
+"Cell": "Cell",
+"Middle": "Middle",
+"Cell type": "Cell type",
+"Copy row": "Copy row",
+"Row properties": "Row properties",
+"Table properties": "Table properties",
+"Bottom": "Bottom",
+"V Align": "V Align",
+"Header": "Header",
+"Right": "Right",
+"Insert column after": "Insert column after",
+"Cols": "Cols",
+"Insert row after": "Insert row after",
+"Width": "Width",
+"Cell properties": "Cell properties",
+"Left": "Left",
+"Cut row": "Cut row",
+"Delete column": "Delete column",
+"Center": "Center",
+"Merge cells": "Merge cells",
+"Insert template": "Insert template",
+"Templates": "Templates",
+"Background color": "Background colour",
+"Text color": "Text colour",
+"Show blocks": "Show blocks",
+"Show invisible characters": "Show invisible characters",
+"Words: {0}": "Words: {0}",
+"Insert": "Insert",
+"File": "File",
+"Edit": "Edit",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help",
+"Tools": "Tools",
+"View": "View",
+"Table": "Table",
+"Format": "Format"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/en_GB.js b/program/js/tinymce/langs/en_GB.js
new file mode 100644
index 000000000..a588b8874
--- /dev/null
+++ b/program/js/tinymce/langs/en_GB.js
@@ -0,0 +1,179 @@
+tinymce.addI18n('en_GB',{
+"Cut": "Cut",
+"Header 2": "Header 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.",
+"Div": "Div",
+"Paste": "Paste",
+"Close": "Close",
+"Font Family": "Font Family",
+"Pre": "Pre",
+"Align right": "Align right",
+"New document": "New document",
+"Blockquote": "Blockquote",
+"Numbered list": "Numbered list",
+"Increase indent": "Increase indent",
+"Formats": "Formats",
+"Headers": "Headers",
+"Select all": "Select all",
+"Header 3": "Header 3",
+"Blocks": "Blocks",
+"Undo": "Undo",
+"Strikethrough": "Strike-through",
+"Bullet list": "Bullet list",
+"Header 1": "Header 1",
+"Superscript": "Superscript",
+"Clear formatting": "Clear formatting",
+"Font Sizes": "Font Sizes",
+"Subscript": "Subscript",
+"Header 6": "Header 6",
+"Redo": "Redo",
+"Paragraph": "Paragraph",
+"Ok": "Ok",
+"Bold": "Bold",
+"Code": "Code",
+"Italic": "Italic",
+"Align center": "Align centre",
+"Header 5": "Header 5",
+"Decrease indent": "Decrease indent",
+"Header 4": "Header 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.",
+"Underline": "Underline",
+"Cancel": "Cancel",
+"Justify": "Justify",
+"Inline": "Inline",
+"Copy": "Copy",
+"Align left": "Align left",
+"Visual aids": "Visual aids",
+"Lower Greek": "Lower Greek",
+"Square": "Square",
+"Default": "Default",
+"Lower Alpha": "Lower Alpha",
+"Circle": "Circle",
+"Disc": "Disc",
+"Upper Alpha": "Upper Alpha",
+"Upper Roman": "Upper Roman",
+"Lower Roman": "Lower Roman",
+"Name": "Name",
+"Anchor": "Anchor",
+"You have unsaved changes are you sure you want to navigate away?": "You have unsaved changes are you sure you want to navigate away?",
+"Restore last draft": "Restore last draft",
+"Special character": "Special character",
+"Source code": "Source code",
+"Right to left": "Right to left",
+"Left to right": "Left to right",
+"Emoticons": "Emoticons",
+"Robots": "Robots",
+"Document properties": "Document properties",
+"Title": "Title",
+"Keywords": "Keywords",
+"Encoding": "Encoding",
+"Description": "Description",
+"Author": "Author",
+"Fullscreen": "Full-screen",
+"Horizontal line": "Horizontal line",
+"Horizontal space": "Horizontal space",
+"Insert\/edit image": "Insert\/edit image",
+"General": "General",
+"Advanced": "Advanced",
+"Source": "Source",
+"Border": "Border",
+"Constrain proportions": "Constrain proportions",
+"Vertical space": "Vertical space",
+"Image description": "Image description",
+"Style": "Style",
+"Dimensions": "Dimensions",
+"Insert image": "Insert image",
+"Insert date\/time": "Insert date\/time",
+"Remove link": "Remove link",
+"Url": "URL",
+"Text to display": "Text to display",
+"Anchors": "Anchors",
+"Insert link": "Insert link",
+"New window": "New window",
+"None": "None",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?",
+"Target": "Target",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",
+"Insert\/edit link": "Insert\/edit link",
+"Insert\/edit video": "Insert\/edit video",
+"Poster": "Poster",
+"Alternative source": "Alternative source",
+"Paste your embed code below:": "Paste your embed code below:",
+"Insert video": "Insert video",
+"Embed": "Embed",
+"Nonbreaking space": "Non-breaking space",
+"Page break": "Page break",
+"Paste as text": "Paste as text",
+"Preview": "Preview",
+"Print": "Print",
+"Save": "Save",
+"Could not find the specified string.": "Could not find the specified string.",
+"Replace": "Replace",
+"Next": "Next",
+"Whole words": "Whole words",
+"Find and replace": "Find and replace",
+"Replace with": "Replace with",
+"Find": "Find",
+"Replace all": "Replace all",
+"Match case": "Match case",
+"Prev": "Prev",
+"Spellcheck": "Spell-check",
+"Finish": "Finish",
+"Ignore all": "Ignore all",
+"Ignore": "Ignore",
+"Insert row before": "Insert row before",
+"Rows": "Rows",
+"Height": "Height",
+"Paste row after": "Paste row after",
+"Alignment": "Alignment",
+"Column group": "Column group",
+"Row": "Row",
+"Insert column before": "Insert column before",
+"Split cell": "Split cell",
+"Cell padding": "Cell padding",
+"Cell spacing": "Cell spacing",
+"Row type": "Row type",
+"Insert table": "Insert table",
+"Body": "Body",
+"Caption": "Caption",
+"Footer": "Footer",
+"Delete row": "Delete row",
+"Paste row before": "Paste row before",
+"Scope": "Scope",
+"Delete table": "Delete table",
+"Header cell": "Header cell",
+"Column": "Column",
+"Cell": "Cell",
+"Header": "Header",
+"Cell type": "Cell type",
+"Copy row": "Copy row",
+"Row properties": "Row properties",
+"Table properties": "Table properties",
+"Row group": "Row group",
+"Right": "Right",
+"Insert column after": "Insert column after",
+"Cols": "Cols",
+"Insert row after": "Insert row after",
+"Width": "Width",
+"Cell properties": "Cell properties",
+"Left": "Left",
+"Cut row": "Cut row",
+"Delete column": "Delete column",
+"Center": "Centre",
+"Merge cells": "Merge cells",
+"Insert template": "Insert template",
+"Templates": "Templates",
+"Background color": "Background colour",
+"Text color": "Text colour",
+"Show blocks": "Show blocks",
+"Show invisible characters": "Show invisible characters",
+"Words: {0}": "Words: {0}",
+"Insert": "Insert",
+"File": "File",
+"Edit": "Edit",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help",
+"Tools": "Tools",
+"View": "View",
+"Table": "Table",
+"Format": "Format"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/es.js b/program/js/tinymce/langs/es.js
new file mode 100644
index 000000000..9eb060ba5
--- /dev/null
+++ b/program/js/tinymce/langs/es.js
@@ -0,0 +1,197 @@
+tinymce.addI18n('es',{
+"Cut": "Cortar",
+"Heading 5": "Encabezado 5",
+"Header 2": "Encabezado 2 ",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Tu navegador no soporta acceso directo al portapapeles. Por favor usa las teclas Crtl+X\/C\/V de tu teclado",
+"Heading 4": "Encabezado 4",
+"Div": "Capa",
+"Heading 2": "Encabezado 2",
+"Paste": "Pegar",
+"Close": "Cerrar",
+"Font Family": "Familia de fuentes",
+"Pre": "Pre",
+"Align right": "Alinear a la derecha",
+"New document": "Nuevo documento",
+"Blockquote": "Bloque de cita",
+"Numbered list": "Lista numerada",
+"Heading 1": "Encabezado 1",
+"Headings": "Encabezados",
+"Increase indent": "Incrementar sangr\u00eda",
+"Formats": "Formatos",
+"Headers": "Encabezados",
+"Select all": "Seleccionar todo",
+"Header 3": "Encabezado 3",
+"Blocks": "Bloques",
+"Undo": "Deshacer",
+"Strikethrough": "Tachado",
+"Bullet list": "Lista de vi\u00f1etas",
+"Header 1": "Encabezado 1",
+"Superscript": "Super\u00edndice",
+"Clear formatting": "Limpiar formato",
+"Font Sizes": "Tama\u00f1os de fuente",
+"Subscript": "Sub\u00edndice",
+"Header 6": "Encabezado 6",
+"Redo": "Rehacer",
+"Paragraph": "P\u00e1rrafo",
+"Ok": "Ok",
+"Bold": "Negrita",
+"Code": "C\u00f3digo",
+"Italic": "It\u00e1lica",
+"Align center": "Alinear al centro",
+"Header 5": "Encabezado 5 ",
+"Heading 6": "Encabezado 6",
+"Heading 3": "Encabezado 3",
+"Decrease indent": "Disminuir sangr\u00eda",
+"Header 4": "Encabezado 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Pegar est\u00e1 ahora en modo de texto plano. El contenido se pegar\u00e1 como texto plano hasta que desactive esta opci\u00f3n.",
+"Underline": "Subrayado",
+"Cancel": "Cancelar",
+"Justify": "Justificar",
+"Inline": "en l\u00ednea",
+"Copy": "Copiar",
+"Align left": "Alinear a la izquierda",
+"Visual aids": "Ayudas visuales",
+"Lower Greek": "Inferior Griega",
+"Square": "Cuadrado",
+"Default": "Por defecto",
+"Lower Alpha": "Inferior Alfa",
+"Circle": "C\u00edrculo",
+"Disc": "Disco",
+"Upper Alpha": "Superior Alfa",
+"Upper Roman": "Superior Romana",
+"Lower Roman": "Inferior Romana",
+"Name": "Nombre",
+"Anchor": "Ancla",
+"You have unsaved changes are you sure you want to navigate away?": "Tiene cambios sin guardar. \u00bfEst\u00e1 seguro de que quiere salir?",
+"Restore last draft": "Restaurar el \u00faltimo borrador",
+"Special character": "Car\u00e1cter especial",
+"Source code": "C\u00f3digo fuente",
+"Color": "Color",
+"Right to left": "De derecha a izquierda",
+"Left to right": "De izquierda a derecha",
+"Emoticons": "Emoticonos",
+"Robots": "Robots",
+"Document properties": "Propiedades del documento",
+"Title": "T\u00edtulo",
+"Keywords": "Palabras clave",
+"Encoding": "Codificaci\u00f3n",
+"Description": "Descripci\u00f3n",
+"Author": "Autor",
+"Fullscreen": "Pantalla completa",
+"Horizontal line": "L\u00ednea horizontal",
+"Horizontal space": "Espacio horizontal",
+"Insert\/edit image": "Insertar\/editar imagen",
+"General": "General",
+"Advanced": "Avanzado",
+"Source": "Fuente",
+"Border": "Borde",
+"Constrain proportions": "Restringir proporciones",
+"Vertical space": "Espacio vertical",
+"Image description": "Descripci\u00f3n de la imagen",
+"Style": "Estilo",
+"Dimensions": "Dimensiones",
+"Insert image": "Insertar imagen",
+"Insert date\/time": "Insertar fecha\/hora",
+"Remove link": "Quitar enlace",
+"Url": "URL",
+"Text to display": "Texto para mostrar",
+"Anchors": "Anclas",
+"Insert link": "Insertar enlace",
+"New window": "Nueva ventana",
+"None": "Ninguno",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "El enlace que has introducido no parece ser una enlace externo. Quieres a\u00f1adir el prefijo necesario http:\/\/ ?",
+"Target": "Destino",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "El enlace que has introducido no parece ser una direcci\u00f3n de correo electr\u00f3nico. Quieres a\u00f1adir el prefijo necesario mailto: ?",
+"Insert\/edit link": "Insertar\/editar enlace",
+"Insert\/edit video": "Insertar\/editar video",
+"Poster": "Miniatura",
+"Alternative source": "Fuente alternativa",
+"Paste your embed code below:": "Pega tu c\u00f3digo embebido debajo",
+"Insert video": "Insertar video",
+"Embed": "Incrustado",
+"Nonbreaking space": "Espacio fijo",
+"Page break": "Salto de p\u00e1gina",
+"Paste as text": "Pegar como texto",
+"Preview": "Previsualizar",
+"Print": "Imprimir",
+"Save": "Guardar",
+"Could not find the specified string.": "No se encuentra la cadena de texto especificada",
+"Replace": "Reemplazar",
+"Next": "Siguiente",
+"Whole words": "Palabras completas",
+"Find and replace": "Buscar y reemplazar",
+"Replace with": "Reemplazar con",
+"Find": "Buscar",
+"Replace all": "Reemplazar todo",
+"Match case": "Coincidencia exacta",
+"Prev": "Anterior",
+"Spellcheck": "Corrector ortogr\u00e1fico",
+"Finish": "Finalizar",
+"Ignore all": "Ignorar todos",
+"Ignore": "Ignorar",
+"Add to Dictionary": "A\u00f1adir al Diccionario",
+"Insert row before": "Insertar fila antes",
+"Rows": "Filas",
+"Height": "Alto",
+"Paste row after": "Pegar la fila despu\u00e9s",
+"Alignment": "Alineaci\u00f3n",
+"Border color": "Color del borde",
+"Column group": "Grupo de columnas",
+"Row": "Fila",
+"Insert column before": "Insertar columna antes",
+"Split cell": "Dividir celdas",
+"Cell padding": "Relleno de celda",
+"Cell spacing": "Espacio entre celdas",
+"Row type": "Tipo de fila",
+"Insert table": "Insertar tabla",
+"Body": "Cuerpo",
+"Caption": "Subt\u00edtulo",
+"Footer": "Pie de p\u00e1gina",
+"Delete row": "Eliminar fila",
+"Paste row before": "Pegar la fila antes",
+"Scope": "\u00c1mbito",
+"Delete table": "Eliminar tabla",
+"H Align": "Alineamiento Horizontal",
+"Top": "Arriba",
+"Header cell": "Celda de la cebecera",
+"Column": "Columna",
+"Row group": "Grupo de filas",
+"Cell": "Celda",
+"Middle": "Centro",
+"Cell type": "Tipo de celda",
+"Copy row": "Copiar fila",
+"Row properties": "Propiedades de la fila",
+"Table properties": "Propiedades de la tabla",
+"Bottom": "Abajo",
+"V Align": "Alineamiento Vertical",
+"Header": "Cabecera",
+"Right": "Derecha",
+"Insert column after": "Insertar columna despu\u00e9s",
+"Cols": "Columnas",
+"Insert row after": "Insertar fila despu\u00e9s ",
+"Width": "Ancho",
+"Cell properties": "Propiedades de la celda",
+"Left": "Izquierda",
+"Cut row": "Cortar fila",
+"Delete column": "Eliminar columna",
+"Center": "Centrado",
+"Merge cells": "Combinar celdas",
+"Insert template": "Insertar plantilla",
+"Templates": "Plantillas",
+"Background color": "Color de fondo",
+"Custom...": "Personalizar...",
+"Custom color": "Color personalizado",
+"No color": "Sin color",
+"Text color": "Color del texto",
+"Show blocks": "Mostrar bloques",
+"Show invisible characters": "Mostrar caracteres invisibles",
+"Words: {0}": "Palabras: {0}",
+"Insert": "Insertar",
+"File": "Archivo",
+"Edit": "Editar",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u00c1rea de texto enriquecido. Pulse ALT-F9 para el menu. Pulse ALT-F10 para la barra de herramientas. Pulse ALT-0 para ayuda",
+"Tools": "Herramientas",
+"View": "Ver",
+"Table": "Tabla",
+"Format": "Formato"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/et.js b/program/js/tinymce/langs/et.js
new file mode 100644
index 000000000..752cc59f6
--- /dev/null
+++ b/program/js/tinymce/langs/et.js
@@ -0,0 +1,179 @@
+tinymce.addI18n('et',{
+"Cut": "L\u00f5ika",
+"Header 2": "Pealkiri 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Sinu veebilehitseja ei toeta otsest ligip\u00e4\u00e4su l\u00f5ikelauale. Palun kasuta selle asemel klaviatuuri kiirk\u00e4sklusi Ctrl+X\/C\/V.",
+"Div": "Sektsioon",
+"Paste": "Kleebi",
+"Close": "Sulge",
+"Font Family": "Kirjastiilid",
+"Pre": "Eelvormindatud",
+"Align right": "Joonda paremale",
+"New document": "Uus dokument",
+"Blockquote": "Plokktsitaat",
+"Numbered list": "J\u00e4rjestatud loend",
+"Increase indent": "Suurenda taanet",
+"Formats": "Vormingud",
+"Headers": "P\u00e4ised",
+"Select all": "Vali k\u00f5ik",
+"Header 3": "Pealkiri 3",
+"Blocks": "Plokid",
+"Undo": "V\u00f5ta tagasi",
+"Strikethrough": "L\u00e4bikriipsutatud",
+"Bullet list": "J\u00e4rjestamata loend",
+"Header 1": "Pealkiri 1",
+"Superscript": "\u00dclaindeks",
+"Clear formatting": "Puhasta vorming",
+"Font Sizes": "Kirja suurused",
+"Subscript": "Alaindeks",
+"Header 6": "Pealkiri 6",
+"Redo": "Tee uuesti",
+"Paragraph": "L\u00f5ik",
+"Ok": "Ok",
+"Bold": "Rasvane",
+"Code": "Kood",
+"Italic": "Kaldkiri",
+"Align center": "Joonda keskele",
+"Header 5": "Pealkiri 5",
+"Decrease indent": "V\u00e4henda taanet",
+"Header 4": "Pealkiri 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Asetamine on n\u00fc\u00fcd tekstire\u017eiimis. Sisu asetatakse n\u00fc\u00fcd lihttekstina, kuni sa l\u00fclitad selle valiku v\u00e4lja.",
+"Underline": "Allakriipsutatud",
+"Cancel": "Katkesta",
+"Justify": "Joonda r\u00f6\u00f6pselt",
+"Inline": "Reasisene",
+"Copy": "Kopeeri",
+"Align left": "Joonda vasakule",
+"Visual aids": "N\u00e4itevahendid",
+"Lower Greek": "Kreeka v\u00e4iket\u00e4hed (\u03b1, \u03b2, \u03b3)",
+"Square": "Ruut",
+"Default": "Vaikimisi",
+"Lower Alpha": "V\u00e4iket\u00e4hed (a, b, c)",
+"Circle": "Ring",
+"Disc": "Ketas",
+"Upper Alpha": "Suurt\u00e4hed (A, B, C)",
+"Upper Roman": "Rooma suurt\u00e4hed (I, II, III)",
+"Lower Roman": "Rooma v\u00e4iket\u00e4hed (i, ii, iii)",
+"Name": "Nimi",
+"Anchor": "Ankur",
+"You have unsaved changes are you sure you want to navigate away?": "Sul on salvestamata muudatusi. Oled Sa kindel, et soovid mujale navigeeruda?",
+"Restore last draft": "Taasta viimane mustand",
+"Special character": "Erim\u00e4rk",
+"Source code": "L\u00e4htekood",
+"Right to left": "Paremalt vasakule",
+"Left to right": "Vasakult paremale",
+"Emoticons": "Emotikonid",
+"Robots": "Robotid",
+"Document properties": "Dokumendi omadused",
+"Title": "Pealkiri",
+"Keywords": "M\u00e4rks\u00f5nad",
+"Encoding": "M\u00e4rgistik",
+"Description": "Kirjeldus",
+"Author": "Autor",
+"Fullscreen": "T\u00e4isekraan",
+"Horizontal line": "Horisontaaljoon",
+"Horizontal space": "Reavahe",
+"Insert\/edit image": "Lisa\/muuda pilt",
+"General": "\u00dcldine",
+"Advanced": "T\u00e4iendavad seaded",
+"Source": "Allikas",
+"Border": "\u00c4\u00e4ris",
+"Constrain proportions": "S\u00e4ilita kuvasuhe",
+"Vertical space": "P\u00fcstine vahe",
+"Image description": "Pildi kirjeldus",
+"Style": "Stiil",
+"Dimensions": "M\u00f5\u00f5tmed",
+"Insert image": "Lisa pilt",
+"Insert date\/time": "Lisa kuup\u00e4ev\/kellaaeg",
+"Remove link": "Eemalda link",
+"Url": "Viide (url)",
+"Text to display": "Kuvatav tekst",
+"Anchors": "Ankrud",
+"Insert link": "Lisa link",
+"New window": "Uus aken",
+"None": "Puudub",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?",
+"Target": "Sihtm\u00e4rk",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",
+"Insert\/edit link": "Lisa\/muuda link",
+"Insert\/edit video": "Lisa\/muuda video",
+"Poster": "Lisaja",
+"Alternative source": "Teine allikas",
+"Paste your embed code below:": "Kleebi oma manustamiskood siia alla:",
+"Insert video": "Lisa video",
+"Embed": "Manusta",
+"Nonbreaking space": "T\u00fchim\u00e4rk (nbsp)",
+"Page break": "Lehevahetus",
+"Paste as text": "Aseta tekstina",
+"Preview": "Eelvaade",
+"Print": "Tr\u00fcki",
+"Save": "Salvesta",
+"Could not find the specified string.": "Ei suutnud leida etteantud s\u00f5net.",
+"Replace": "Asenda",
+"Next": "J\u00e4rg",
+"Whole words": "Terviks\u00f5nad",
+"Find and replace": "Otsi ja asenda",
+"Replace with": "Asendus",
+"Find": "Otsi",
+"Replace all": "Asenda k\u00f5ik",
+"Match case": "Erista suur- ja v\u00e4iket\u00e4hti",
+"Prev": "Eelm",
+"Spellcheck": "\u00d5igekirja kontroll",
+"Finish": "L\u00f5peta",
+"Ignore all": "Eira k\u00f5iki",
+"Ignore": "Eira",
+"Insert row before": "Lisa rida enne",
+"Rows": "Read",
+"Height": "K\u00f5rgus",
+"Paste row after": "Kleebi rida j\u00e4rele",
+"Alignment": "Joondus",
+"Column group": "Veergude r\u00fchm",
+"Row": "Rida",
+"Insert column before": "Lisa tulp enne",
+"Split cell": "T\u00fckelda lahter",
+"Cell padding": "Lahtri sisu ja tabeli \u00e4\u00e4rise vahe",
+"Cell spacing": "Lahtrivahe",
+"Row type": "Rea t\u00fc\u00fcp",
+"Insert table": "Lisa tabel",
+"Body": "P\u00f5hiosa",
+"Caption": "Alapealkiri",
+"Footer": "Jalus",
+"Delete row": "Kustuta rida",
+"Paste row before": "Kleebi rida enne",
+"Scope": "Ulatus",
+"Delete table": "Kustuta tabel",
+"Header cell": "P\u00e4islahter",
+"Column": "Tulp",
+"Cell": "Lahter",
+"Header": "P\u00e4is",
+"Cell type": "Lahtri t\u00fc\u00fcp",
+"Copy row": "Kopeeri rida",
+"Row properties": "Rea omadused",
+"Table properties": "Tabeli omadused",
+"Row group": "Ridade r\u00fchm",
+"Right": "Paremal",
+"Insert column after": "Lisa tulp j\u00e4rele",
+"Cols": "Veerud",
+"Insert row after": "Lisa rida j\u00e4rele",
+"Width": "Laius",
+"Cell properties": "Lahtri omadused",
+"Left": "Vasakul",
+"Cut row": "L\u00f5ika rida",
+"Delete column": "Kustuta tulp",
+"Center": "Keskel",
+"Merge cells": "\u00dchenda lahtrid",
+"Insert template": "Lisa mall",
+"Templates": "Mallid",
+"Background color": "Tausta v\u00e4rv",
+"Text color": "Teksti v\u00e4rv",
+"Show blocks": "N\u00e4ita plokke",
+"Show invisible characters": "N\u00e4ita peidetud m\u00e4rke",
+"Words: {0}": "S\u00f5nu: {0}",
+"Insert": "Sisesta",
+"File": "Fail",
+"Edit": "Muuda",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rikastatud teksti ala. Men\u00fc\u00fc jaoks vajuta ALT-F9. T\u00f6\u00f6riistariba jaoks vajuta ALT-F10. Abi saamiseks vajuta ALT-0.",
+"Tools": "T\u00f6\u00f6riistad",
+"View": "Vaade",
+"Table": "Tabel",
+"Format": "Vorming"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/eu.js b/program/js/tinymce/langs/eu.js
new file mode 100644
index 000000000..88bed1a4c
--- /dev/null
+++ b/program/js/tinymce/langs/eu.js
@@ -0,0 +1,191 @@
+tinymce.addI18n('eu',{
+"Cut": "Ebaki",
+"Heading 5": "5. izenburua",
+"Header 2": "2 Goiburua",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Zure nabigatzaileak ez du arbela zuzenean erabiltzeko euskarririk. Mesedez erabili CTRL+X\/C\/V teklatuko lasterbideak.",
+"Heading 4": "4. izenburua",
+"Div": "Div",
+"Heading 2": "2. izenburua",
+"Paste": "Itsatsi",
+"Close": "Itxi",
+"Font Family": "Letra-tipo familia",
+"Pre": "Pre",
+"Align right": "Lerrokatu eskuinean",
+"New document": "Dokumentu berria",
+"Blockquote": "Blockquote",
+"Numbered list": "Zerrenda zenbatua",
+"Heading 1": "1. izenburua",
+"Headings": "Izenburuak",
+"Increase indent": "Handitu koska",
+"Formats": "Formatuak",
+"Headers": "Goiburuak",
+"Select all": "Hautatu dena",
+"Header 3": "3 Goiburua",
+"Blocks": "Blokeak",
+"Undo": "Desegin",
+"Strikethrough": "Marratua",
+"Bullet list": "Bulet zerrenda",
+"Header 1": "1 Goiburua",
+"Superscript": "Goi-indize",
+"Clear formatting": "Garbitu formatua",
+"Font Sizes": "Letra-tamainuak",
+"Subscript": "Azpiindize",
+"Header 6": "6 Goiburua",
+"Redo": "Berregin",
+"Paragraph": "Parrafoa",
+"Ok": "Ondo",
+"Bold": "Lodia",
+"Code": "Kodea",
+"Italic": "Etzana",
+"Align center": "Lerrokatu horizontalki erdian",
+"Header 5": "5 Goiburua",
+"Heading 6": "6. izenburua",
+"Heading 3": "3. izenburua",
+"Decrease indent": "Txikitu koska",
+"Header 4": "4 Goiburua",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Itsatsi testu arrunt moduan dago orain. Edukiak testu arruntak bezala itsatsiko dira aukera hau itzaltzen duzunera arte.",
+"Underline": "Azpimarratua",
+"Cancel": "Ezeztatu",
+"Justify": "Justifikatuta",
+"Inline": "Lerroan",
+"Copy": "Kopiatu",
+"Align left": "Lerrokatu ezkerrean",
+"Visual aids": "Laguntza bisualak",
+"Lower Greek": "Behe grekoa",
+"Square": "Karratua",
+"Default": "Lehenetstia",
+"Lower Alpha": "Behe alfa",
+"Circle": "Zirkulua",
+"Disc": "Diskoa",
+"Upper Alpha": "Goi alfa",
+"Upper Roman": "Goi erromatarra",
+"Lower Roman": "Behe erromatarra",
+"Name": "Izena",
+"Anchor": "Esteka",
+"You have unsaved changes are you sure you want to navigate away?": "Gorde gabeko aldaketak dituzu, zihur zaude hemendik irten nahi duzula?",
+"Restore last draft": "Leheneratu azken zirriborroa",
+"Special character": "Karaktere bereziak",
+"Source code": "Iturburu-kodea",
+"Right to left": "Eskuinetik ezkerrera",
+"Left to right": "Ezkerretik eskuinera",
+"Emoticons": "Irrifartxoak",
+"Robots": "Robotak",
+"Document properties": "Dokumentuaren propietateak",
+"Title": "Titulua",
+"Keywords": "Hitz gakoak",
+"Encoding": "Encoding",
+"Description": "Deskribapena",
+"Author": "Egilea",
+"Fullscreen": "Pantaila osoa",
+"Horizontal line": "Marra horizontala",
+"Horizontal space": "Hutsune horizontala",
+"Insert\/edit image": "Irudia txertatu\/editatu",
+"General": "Orokorra",
+"Advanced": "Aurreratua",
+"Source": "Iturburua",
+"Border": "Ertza",
+"Constrain proportions": "Zerraditu proportzioak",
+"Vertical space": "Hutsune bertikala",
+"Image description": "Irudiaren deskribapena",
+"Style": "Estiloa",
+"Dimensions": "Neurriak",
+"Insert image": "Irudia txertatu",
+"Insert date\/time": "Data\/ordua txertatu",
+"Remove link": "Kendu esteka",
+"Url": "Url",
+"Text to display": "Bistaratzeko testua",
+"Anchors": "Estekak",
+"Insert link": "Esteka txertatu",
+"New window": "Lehio berria",
+"None": "Bat ere ez",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Sartu duzun URL-ak kanpoko esteka dela dirudi. Nahi duzu dagokion http:\/\/ aurrizkia gehitzea?",
+"Target": "Target",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Sartu duzun URL-ak e-posta helbidea dela dirudi. Nahi duzu dagokion mailto: aurrizkia gehitzea?",
+"Insert\/edit link": "Esteka txertatu\/editatu",
+"Insert\/edit video": "Bideoa txertatu\/editatu",
+"Poster": "Poster-a",
+"Alternative source": "Iturburu alternatiboa",
+"Paste your embed code below:": "Itsatsi hemen zure enkapsulatzeko kodea:",
+"Insert video": "Bideoa txertatu",
+"Embed": "Kapsulatu",
+"Nonbreaking space": "Zuriune zatiezina",
+"Page break": "Orrialde-jauzia",
+"Paste as text": "Itsatsi testu bezala",
+"Preview": "Aurrebista",
+"Print": "Inprimatu",
+"Save": "Gorde",
+"Could not find the specified string.": "Ezin izan da zehaztutako katea aurkitu.",
+"Replace": "Ordeztu",
+"Next": "Hurrengoa",
+"Whole words": "hitz osoak",
+"Find and replace": "Bilatu eta ordeztu",
+"Replace with": "Honekin ordeztu",
+"Find": "Bilatu",
+"Replace all": "Ordeztu dena",
+"Match case": "Maiuskula\/minuskula",
+"Prev": "Aurrekoa",
+"Spellcheck": "Egiaztapenak",
+"Finish": "Amaitu",
+"Ignore all": "Ez ikusi guztia",
+"Ignore": "Ez ikusi",
+"Insert row before": "Txertatu errenkada aurretik",
+"Rows": "Errenkadak",
+"Height": "Altuera",
+"Paste row after": "Itsatsi errenkada ostean",
+"Alignment": "Lerrokatzea",
+"Column group": "Zutabe taldea",
+"Row": "Errenkada",
+"Insert column before": "Txertatu zutabe aurretik",
+"Split cell": "Banatu gelaxkak",
+"Cell padding": "Gelaxken betegarria",
+"Cell spacing": "Gelaxka arteko tartea",
+"Row type": "Lerro mota",
+"Insert table": "Txertatu taula",
+"Body": "Gorputza",
+"Caption": "Epigrafea",
+"Footer": "Oina",
+"Delete row": "Ezabatu errenkada",
+"Paste row before": "Itsatsi errenkada aurretik",
+"Scope": "Esparrua",
+"Delete table": "Taula ezabatu",
+"H Align": "Lerrokatze horizontala",
+"Top": "Goian",
+"Header cell": "Goiburuko gelaxka",
+"Column": "Zutabea",
+"Row group": "Lerro taldea",
+"Cell": "Gelaxka",
+"Middle": "Erdian",
+"Cell type": "Gelaxka mota",
+"Copy row": "Kopiatu errenkada",
+"Row properties": "Errenkadaren propietateak",
+"Table properties": "Taularen propietateak",
+"Bottom": "Behean",
+"V Align": "Lerrokatze bertikala",
+"Header": "Goiburua",
+"Right": "Eskuina",
+"Insert column after": "Txertatu zutabea ostean",
+"Cols": "Zutabeak",
+"Insert row after": "Txertatu errenkada ostean",
+"Width": "Zabalera",
+"Cell properties": "Gelaxkaren propietateak",
+"Left": "Ezkerra",
+"Cut row": "Ebaki errenkada",
+"Delete column": "Ezabatu zutabea",
+"Center": "Erdia",
+"Merge cells": "Batu gelaxkak",
+"Insert template": "Txertatu txantiloia",
+"Templates": "Txantiloiak",
+"Background color": "Atzeko kolorea",
+"Text color": "Testuaren kolorea",
+"Show blocks": "Erakutsi blokeak",
+"Show invisible characters": "Erakutsi karaktere izkutuak",
+"Words: {0}": "Hitzak: {0}",
+"Insert": "Sartu",
+"File": "Fitxategia",
+"Edit": "Editatu",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Testu aberastuko area. Sakatu ALT-F9 menurako. Sakatu ALT-F10 tresna-barrarako. Sakatu ALT-0 laguntzarako",
+"Tools": "Tresnak",
+"View": "Ikusi",
+"Table": "Taula",
+"Format": "Formatua"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/fa.js b/program/js/tinymce/langs/fa.js
new file mode 100644
index 000000000..385c0ab64
--- /dev/null
+++ b/program/js/tinymce/langs/fa.js
@@ -0,0 +1,180 @@
+tinymce.addI18n('fa',{
+"Cut": "\u0628\u0631\u062f\u0627\u0634\u062a\u0646",
+"Header 2": "\u0633\u0631\u200c\u0635\u0641\u062d\u0647 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0645\u0631\u0648\u0631\u06af\u0631 \u0634\u0645\u0627 \u0627\u0632 \u062f\u0633\u062a\u0631\u0633\u06cc \u0645\u0633\u062a\u0642\u06cc\u0645 \u0628\u0647 \u062d\u0627\u0641\u0638\u0647 \u06a9\u067e\u06cc \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0646\u0645\u06cc \u06a9\u0646\u062f. \u0644\u0637\u0641\u0627 \u0627\u0632 \u06a9\u0644\u06cc\u062f \u0647\u0627\u06cc Ctrl+X\/C\/V \u062f\u0631 \u06a9\u06cc\u0628\u0648\u0631\u062f \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.",
+"Div": "\u062a\u06af \u0628\u062e\u0634 - Div",
+"Paste": "\u0686\u0633\u0628\u0627\u0646\u062f\u0646",
+"Close": "\u0628\u0633\u062a\u0646",
+"Font Family": "\u0641\u0648\u0646\u062a",
+"Pre": "\u062a\u06af \u062a\u0628\u062f\u06cc\u0644 \u0628\u0647 \u0645\u062a\u0646 \u0633\u0627\u062f\u0647 - Pre",
+"Align right": "\u0631\u0627\u0633\u062a \u0686\u06cc\u0646",
+"New document": "\u0633\u0646\u062f \u062c\u062f\u06cc\u062f",
+"Blockquote": "\u062a\u06af \u0646\u0642\u0644 \u0642\u0648\u0644 - Blockquote",
+"Numbered list": "\u0644\u06cc\u0633\u062a \u0634\u0645\u0627\u0631\u0647 \u0627\u06cc",
+"Increase indent": "\u0627\u0641\u0632\u0627\u06cc\u0634 \u062a\u0648 \u0631\u0641\u062a\u06af\u06cc",
+"Formats": "\u0642\u0627\u0644\u0628",
+"Headers": "\u0633\u0631\u200c\u0635\u0641\u062d\u0647\u200c\u0647\u0627",
+"Select all": "\u0627\u0646\u062a\u062e\u0627\u0628 \u0647\u0645\u0647",
+"Header 3": "\u0633\u0631\u200c\u0635\u0641\u062d\u0647 3",
+"Blocks": "\u0628\u0644\u0648\u06a9",
+"Undo": "\t\n\u0628\u0627\u0637\u0644 \u06a9\u0631\u062f\u0646",
+"Strikethrough": "\u062e\u0637 \u062e\u0648\u0631\u062f\u0647",
+"Bullet list": "\u0644\u06cc\u0633\u062a \u062f\u0627\u06cc\u0631\u0647 \u0627\u06cc",
+"Header 1": "\u0633\u0631\u200c\u0635\u0641\u062d\u0647 1",
+"Superscript": "\u0628\u0627\u0644\u0627\u0646\u0648\u06cc\u0633 - \u062d\u0627\u0644\u062a \u062a\u0648\u0627\u0646",
+"Clear formatting": "\u067e\u0627\u06a9 \u06a9\u0631\u062f\u0646 \u0642\u0627\u0644\u0628 \u0628\u0646\u062f\u06cc",
+"Font Sizes": "\u0627\u0646\u062f\u0627\u0632\u0647 \u0641\u0648\u0646\u062a",
+"Subscript": "\u0632\u06cc\u0631 \u0646\u0648\u06cc\u0633 - \u062d\u0627\u0644\u062a \u0627\u0646\u062f\u06cc\u0633",
+"Header 6": "\u0633\u0631\u200c\u0635\u0641\u062d\u0647 6",
+"Redo": "\u0627\u0646\u062c\u0627\u0645 \u062f\u0648\u0628\u0627\u0631\u0647",
+"Paragraph": "\u062a\u06af \u067e\u0627\u0631\u0627\u06af\u0631\u0627\u0641 - Paragraph",
+"Ok": "\u0628\u0627\u0634\u0647",
+"Bold": "\u062f\u0631\u0634\u062a",
+"Code": "\u062a\u06af \u06a9\u062f - Code",
+"Italic": "\u062e\u0637 \u06a9\u062c",
+"Align center": "\u0648\u0633\u0637 \u0686\u06cc\u0646",
+"Header 5": "\u0633\u0631\u200c\u0635\u0641\u062d\u0647 5",
+"Decrease indent": "\u06a9\u0627\u0647\u0634 \u062a\u0648 \u0631\u0641\u062a\u06af\u06cc",
+"Header 4": "\u0633\u0631\u200c\u0635\u0641\u062d\u0647 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u0647\u0645 \u0627\u06a9\u0646\u0648\u0646 \u062f\u0631 \u062d\u0627\u0644\u062a \u0645\u062a\u0646 \u0633\u0627\u062f\u0647 \u0627\u0633\u062a. \u062a\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a \u0631\u0627 \u063a\u06cc\u0631\u200c\u0641\u0639\u0627\u0644 \u0646\u06a9\u0646\u06cc\u062f\u060c \u0645\u062d\u062a\u0648\u0627 \u062f\u0631 \u062d\u0627\u0644\u062a \u0645\u062a\u0646 \u0633\u0627\u062f\u0647 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.",
+"Underline": "\u062e\u0637 \u0632\u06cc\u0631",
+"Cancel": "\u0644\u063a\u0648",
+"Justify": "\u0645\u0633\u0627\u0648\u06cc \u0627\u0632 \u0637\u0631\u0641\u06cc\u0646",
+"Inline": "\u062e\u0637\u06cc",
+"Copy": "\u06a9\u067e\u06cc",
+"Align left": "\u0686\u067e \u0686\u06cc\u0646",
+"Visual aids": "\u06a9\u0645\u06a9 \u0647\u0627\u06cc \u0628\u0635\u0631\u06cc",
+"Lower Greek": "\u06cc\u0648\u0646\u0627\u0646\u06cc \u06a9\u0648\u0686\u06a9",
+"Square": "\u0645\u0631\u0628\u0639",
+"Default": "\u067e\u06cc\u0634\u0641\u0631\u0636",
+"Lower Alpha": "\u0622\u0644\u0641\u0627\u0621 \u06a9\u0648\u0686\u06a9",
+"Circle": "\u062f\u0627\u06cc\u0631\u0647",
+"Disc": "\u062f\u06cc\u0633\u06a9",
+"Upper Alpha": "\u0622\u0644\u0641\u0627\u0621 \u0628\u0632\u0631\u06af",
+"Upper Roman": "\u0631\u0648\u0645\u06cc \u0628\u0632\u0631\u06af",
+"Lower Roman": "\u0631\u0648\u0645\u06cc \u06a9\u0648\u0686\u06a9",
+"Name": "\u0646\u0627\u0645",
+"Anchor": "\u0644\u0646\u06af\u0631 - \u0644\u06cc\u0646\u06a9",
+"You have unsaved changes are you sure you want to navigate away?": "\u0634\u0645\u0627 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0630\u062e\u06cc\u0631\u0647 \u0646\u0634\u062f\u0647 \u0627\u06cc \u062f\u0627\u0631\u06cc\u062f\u060c \u0622\u06cc\u0627 \u0645\u0637\u0645\u0626\u0646\u06cc\u062f \u06a9\u0647 \u0645\u06cc\u062e\u0648\u0627\u0647\u06cc\u062f \u0627\u0632 \u0627\u06cc\u0646 \u0635\u0641\u062d\u0647 \u0628\u0631\u0648\u06cc\u062f\u061f",
+"Restore last draft": "\u0628\u0627\u0632\u06af\u0631\u062f\u0627\u0646\u062f\u0646 \u0622\u062e\u0631\u06cc\u0646 \u067e\u06cc\u0634 \u0646\u0648\u06cc\u0633",
+"Special character": "\u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u0647\u0627\u06cc \u062e\u0627\u0635",
+"Source code": "\u06a9\u062f \u0645\u0646\u0628\u0639",
+"Right to left": "\u0631\u0627\u0633\u062a \u0628\u0647 \u0686\u067e",
+"Left to right": "\u0686\u067e \u0628\u0647 \u0631\u0627\u0633\u062a",
+"Emoticons": "\u0634\u06a9\u0644\u06a9\u200c\u0647\u0627",
+"Robots": "\u0631\u0628\u0627\u062a\u200c\u0647\u0627",
+"Document properties": "\u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u0633\u0646\u062f",
+"Title": "\u0639\u0646\u0648\u0627\u0646",
+"Keywords": "\u06a9\u0644\u0645\u0627\u062a \u06a9\u0644\u06cc\u062f\u06cc",
+"Encoding": "\u06a9\u062f \u06af\u0630\u0627\u0631\u06cc",
+"Description": "\u062a\u0648\u0636\u06cc\u062d\u0627\u062a",
+"Author": "\u0646\u0648\u06cc\u0633\u0646\u062f\u0647",
+"Fullscreen": "\u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647",
+"Horizontal line": "\u062e\u0637 \u0627\u0641\u0642\u06cc",
+"Horizontal space": "\u0641\u0636\u0627\u06cc \u0627\u0641\u0642\u06cc",
+"Insert\/edit image": "\u0627\u0636\u0627\u0641\u0647\/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0631\u062f\u0646 \u062a\u0635\u0648\u06cc\u0631",
+"General": "\u0639\u0645\u0648\u0645\u06cc",
+"Advanced": "\u067e\u06cc\u0634\u0631\u0641\u062a\u0647",
+"Source": "\u0645\u0646\u0628\u0639",
+"Border": "\u062d\u0627\u0634\u06cc\u0647",
+"Constrain proportions": "\u062d\u0641\u0638 \u062a\u0646\u0627\u0633\u0628",
+"Vertical space": "\u0641\u0636\u0627\u06cc \u0639\u0645\u0648\u062f\u06cc",
+"Image description": "\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0639\u06a9\u0633",
+"Style": "\u0633\u0628\u06a9",
+"Dimensions": "\u0627\u0628\u0639\u0627\u062f",
+"Insert image": "\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u062a\u0635\u0648\u06cc\u0631",
+"Insert date\/time": "\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u062a\u0627\u0631\u06cc\u062e\/\u0632\u0645\u0627\u0646",
+"Remove link": "\u062d\u0630\u0641 \u0644\u06cc\u0646\u06a9",
+"Url": "\u0627\u062f\u0631\u0633 \u0644\u06cc\u0646\u06a9",
+"Text to display": "\u0645\u062a\u0646 \u0628\u0631\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634",
+"Anchors": "\u0644\u0646\u06af\u0631 - \u0644\u06cc\u0646\u06a9 \u062f\u0627\u062e\u0644 \u0635\u0641\u062d\u0647",
+"Insert link": "\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0644\u06cc\u0646\u06a9",
+"New window": "\u067e\u0646\u062c\u0631\u0647 \u062c\u062f\u06cc\u062f",
+"None": "\u0647\u06cc\u0686 \u06a9\u062f\u0627\u0645",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?",
+"Target": "\u0646\u062d\u0648\u0647 \u0628\u0627\u0632 \u0634\u062f\u0646 \u062f\u0631 \u0645\u0631\u0648\u0631\u06af\u0631",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",
+"Insert\/edit link": "\u0627\u0636\u0627\u0641\u0647\/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0631\u062f\u0646 \u0644\u06cc\u0646\u06a9",
+"Insert\/edit video": "\u0627\u0636\u0627\u0641\u0647\/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0631\u062f\u0646 \u0641\u0627\u06cc\u0644 \u062a\u0635\u0648\u06cc\u0631\u06cc",
+"Poster": "\u067e\u0648\u0633\u062a\u0631",
+"Alternative source": "\u0645\u0646\u0628\u0639 \u062f\u06cc\u06af\u0631",
+"Paste your embed code below:": "\u06a9\u062f \u062e\u0648\u062f \u0631\u0627 \u0628\u0631\u0627\u06cc \u062c\u0627 \u062f\u0627\u062f\u0646 \u062f\u0631 \u0633\u0627\u06cc\u062a - embed - \u060c \u062f\u0631 \u0632\u06cc\u0631 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f:",
+"Insert video": "\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0641\u0627\u06cc\u0644 \u062a\u0635\u0648\u06cc\u0631\u06cc",
+"Embed": "\u062c\u0627 \u062f\u0627\u062f\u0646",
+"Nonbreaking space": "\u0641\u0636\u0627\u06cc \u063a\u06cc\u0631 \u0634\u06a9\u0633\u062a\u0646",
+"Page break": "\u0634\u06a9\u0633\u062a\u0646 \u0635\u0641\u062d\u0647",
+"Paste as text": "\u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062a\u0646",
+"Preview": "\u067e\u06cc\u0634 \u0646\u0645\u0627\u06cc\u0634",
+"Print": "\u0686\u0627\u067e",
+"Save": "\u0630\u062e\u06cc\u0631\u0647",
+"Could not find the specified string.": "\u0631\u0634\u062a\u0647 \u0645\u062a\u0646\u06cc \u0645\u0648\u0631\u062f \u0646\u0638\u0631 \u067e\u06cc\u062f\u0627 \u0646\u0634\u062f.",
+"Replace": "\u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0631\u062f\u0646",
+"Next": "\u0628\u0639\u062f\u06cc",
+"Whole words": "\u0647\u0645\u0647 \u06a9\u0644\u0645\u0647\u200c\u0647\u0627",
+"Find and replace": "\u062c\u0633\u062a\u200c\u0648\u200c\u062c\u0648 \u0648 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0631\u062f\u0646",
+"Replace with": "\u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0631\u062f\u0646 \u0628\u0627",
+"Find": "\u062c\u0633\u062a\u200c\u0648\u200c\u062c\u0648",
+"Replace all": "\u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0631\u062f\u0646 \u0647\u0645\u0647",
+"Match case": "\u062d\u0633\u0627\u0633 \u0628\u0647 \u062d\u0631\u0648\u0641 \u06a9\u0648\u0686\u06a9 \u0648 \u0628\u0632\u0631\u06af",
+"Prev": "\u0642\u0628\u0644\u06cc",
+"Spellcheck": "\u0628\u0631\u0631\u0633\u06cc \u0627\u0645\u0644\u0627\u06cc\u06cc",
+"Finish": "\u067e\u0627\u06cc\u0627\u0646",
+"Ignore all": "\u0646\u0627\u062f\u06cc\u062f\u0647 \u06af\u0631\u0641\u062a\u0646 \u0647\u0645\u0647",
+"Ignore": "\u0646\u0627\u062f\u06cc\u062f\u0647 \u06af\u0631\u0641\u062a\u0646",
+"Insert row before": "\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0633\u0637\u0631 \u062c\u062f\u06cc\u062f \u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646 \u0633\u0637\u0631",
+"Rows": "\u062a\u0639\u062f\u0627\u062f \u0633\u0637\u0631\u200c\u0647\u0627",
+"Height": "\u0627\u0631\u062a\u0641\u0627\u0639",
+"Paste row after": "\u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u0633\u0637\u0631\u060c \u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646 \u0633\u0637\u0631",
+"Alignment": "\u0631\u062f\u06cc\u0641 \u0628\u0646\u062f\u06cc \u0646\u0648\u0634\u062a\u0647",
+"Column group": "\u06af\u0631\u0648\u0647 \u0633\u062a\u0648\u0646",
+"Row": "\u0633\u0637\u0631",
+"Insert column before": "\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0633\u062a\u0648\u0646 \u062c\u062f\u06cc\u062f \u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646 \u0633\u062a\u0648\u0646",
+"Split cell": "\u062a\u0642\u0633\u06cc\u0645 \u0633\u0644\u0648\u0644 \u062c\u062f\u0648\u0644",
+"Cell padding": "\u062d\u0627\u0634\u06cc\u0647 \u0633\u0644\u0648\u0644 \u0647\u0627",
+"Cell spacing": "\u0641\u0627\u0635\u0644\u0647\u200c\u06cc \u0628\u06cc\u0646 \u0633\u0644\u0648\u0644 \u0647\u0627",
+"Row type": "\u0646\u0648\u0639 \u0633\u0637\u0631",
+"Insert table": "\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u062c\u062f\u0648\u0644",
+"Body": "\u0628\u062f\u0646\u0647",
+"Caption": "\u0639\u0646\u0648\u0627\u0646",
+"Footer": "\u067e\u0627\u0646\u0648\u06cc\u0633",
+"Delete row": "\u062d\u0630\u0641 \u0633\u0637\u0631",
+"Paste row before": "\u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u0633\u0637\u0631\u060c \u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646 \u0633\u0637\u0631",
+"Scope": "\u0645\u062d\u062f\u0648\u062f\u0647\u200c\u06cc \u0639\u0646\u0648\u0627\u0646",
+"Delete table": "\u062d\u0630\u0641 \u062c\u062f\u0648\u0644",
+"Header cell": "\u0633\u0631\u0622\u06cc\u0646\u062f \u0633\u0644\u0648\u0644",
+"Column": "\u0633\u062a\u0648\u0646",
+"Cell": "\u0633\u0644\u0648\u0644",
+"Header": "\u0633\u0631\u0622\u06cc\u0646\u062f",
+"Cell type": "\u0646\u0648\u0639 \u0633\u0644\u0648\u0644",
+"Copy row": "\u06a9\u067e\u06cc \u0633\u0637\u0631",
+"Row properties": "\u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u0633\u0637\u0631",
+"Table properties": "\u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u062c\u062f\u0648\u0644",
+"Row group": "\u06af\u0631\u0648\u0647 \u0633\u0637\u0631",
+"Right": "\u0631\u0627\u0633\u062a",
+"Insert column after": "\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0633\u062a\u0648\u0646 \u062c\u062f\u06cc\u062f \u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646 \u0633\u062a\u0648\u0646",
+"Cols": "\u062a\u0639\u062f\u0627\u062f \u0633\u062a\u0648\u0646\u200c\u0647\u0627",
+"Insert row after": "\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0633\u0637\u0631 \u062c\u062f\u06cc\u062f \u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646 \u0633\u0637\u0631",
+"Width": "\u0639\u0631\u0636",
+"Cell properties": "\u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u0633\u0644\u0648\u0644",
+"Left": "\u0686\u067e",
+"Cut row": "\u0628\u0631\u0634 \u0633\u0637\u0631",
+"Delete column": "\u062d\u0630\u0641 \u0633\u062a\u0648\u0646",
+"Center": "\u0648\u0633\u0637",
+"Merge cells": "\u0627\u062f\u063a\u0627\u0645 \u0633\u0644\u0648\u0644\u200c\u0647\u0627",
+"Insert template": "\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0627\u0644\u06af\u0648",
+"Templates": "\u0627\u0644\u06af\u0648\u200c\u0647\u0627",
+"Background color": "\u0631\u0646\u06af \u0632\u0645\u06cc\u0646\u0647 \u0645\u062a\u0646",
+"Text color": "\u0631\u0646\u06af \u0645\u062a\u0646",
+"Show blocks": "\u0646\u0645\u0627\u06cc\u0634 \u0628\u062e\u0634\u200c\u0647\u0627",
+"Show invisible characters": "\u0646\u0645\u0627\u06cc\u0634 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631\u0647\u0627\u06cc \u063a\u06cc\u0631 \u0642\u0627\u0628\u0644 \u0686\u0627\u067e",
+"Words: {0}": "\u06a9\u0644\u0645\u0627\u062a : {0}",
+"Insert": "\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646",
+"File": "\u067e\u0631\u0648\u0646\u062f\u0647",
+"Edit": "\u0648\u06cc\u0631\u0627\u06cc\u0634",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631 \u067e\u06cc\u0634\u0631\u0641\u062a\u0647\u200c\u06cc \u0645\u062a\u0646. \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0645\u0646\u0648 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc ALT-F9\u060c \u0646\u0648\u0627\u0631 \u0627\u0628\u0632\u0627\u0631 ALT-F10 \u0648 \u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647\u200c\u06cc \u0631\u0627\u0647\u0646\u0645\u0627 ALT-0 \u0631\u0627 \u0641\u0634\u0627\u0631 \u062f\u0647\u06cc\u062f.",
+"Tools": "\u0627\u0628\u0632\u0627\u0631\u0647\u0627",
+"View": "\u0646\u0645\u0627\u06cc\u0634",
+"Table": "\u062c\u062f\u0648\u0644",
+"Format": "\u0642\u0627\u0644\u0628",
+"_dir": "rtl"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/fi.js b/program/js/tinymce/langs/fi.js
new file mode 100644
index 000000000..1130943e5
--- /dev/null
+++ b/program/js/tinymce/langs/fi.js
@@ -0,0 +1,194 @@
+tinymce.addI18n('fi',{
+"Cut": "Leikkaa",
+"Heading 5": "Otsikko 5",
+"Header 2": "Otsikko 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Selaimesi ei tue leikekirjan suoraa k\u00e4ytt\u00e4mist\u00e4. Ole hyv\u00e4 ja k\u00e4yt\u00e4 n\u00e4pp\u00e4imist\u00f6n Ctrl+X ja Ctrl+V n\u00e4pp\u00e4inyhdistelmi\u00e4.",
+"Heading 4": "Otsikko 4",
+"Div": "Div",
+"Heading 2": "Otsikko 2",
+"Paste": "Liit\u00e4",
+"Close": "Sulje",
+"Font Family": "Fontti",
+"Pre": "Esimuotoiltu",
+"Align right": "Tasaa oikealle",
+"New document": "Uusi dokumentti",
+"Blockquote": "Lainauslohko",
+"Numbered list": "J\u00e4rjestetty lista",
+"Heading 1": "Otsikko 1",
+"Headings": "Otsikot",
+"Increase indent": "Loitonna",
+"Formats": "Muotoilut",
+"Headers": "Otsikot",
+"Select all": "Valitse kaikki",
+"Header 3": "Otsikko 3",
+"Blocks": "Lohkot",
+"Undo": "Peru",
+"Strikethrough": "Yliviivaus",
+"Bullet list": "J\u00e4rjest\u00e4m\u00e4t\u00f6n lista",
+"Header 1": "Otsikko 1",
+"Superscript": "Yl\u00e4indeksi",
+"Clear formatting": "Poista muotoilu",
+"Font Sizes": "Fonttikoko",
+"Subscript": "Alaindeksi",
+"Header 6": "Otsikko 6",
+"Redo": "Tee uudelleen",
+"Paragraph": "Kappale",
+"Ok": "Ok",
+"Bold": "Lihavointi",
+"Code": "Koodi",
+"Italic": "Kursivointi",
+"Align center": "Keskit\u00e4",
+"Header 5": "Otsikko 5",
+"Heading 6": "Otsikko 6",
+"Heading 3": "Otsikko 3",
+"Decrease indent": "Sisenn\u00e4",
+"Header 4": "Otsikko 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Liitt\u00e4minen on nyt pelk\u00e4n tekstin -tilassa. Sis\u00e4ll\u00f6t liitet\u00e4\u00e4n nyt pelkk\u00e4n\u00e4 tekstin\u00e4, kunnes otat vaihtoehdon pois k\u00e4yt\u00f6st\u00e4.",
+"Underline": "Alleviivaus",
+"Cancel": "Peruuta",
+"Justify": "Tasaa",
+"Inline": "Samalla rivill\u00e4",
+"Copy": "Kopioi",
+"Align left": "Tasaa vasemmalle",
+"Visual aids": "Visuaaliset neuvot",
+"Lower Greek": "pienet kirjaimet: \u03b1, \u03b2, \u03b3",
+"Square": "Neli\u00f6",
+"Default": "Oletus",
+"Lower Alpha": "pienet kirjaimet: a, b, c",
+"Circle": "Pallo",
+"Disc": "Ympyr\u00e4",
+"Upper Alpha": "isot kirjaimet: A, B, C",
+"Upper Roman": "isot kirjaimet: I, II, III",
+"Lower Roman": "pienet kirjaimet: i, ii, iii",
+"Name": "Nimi",
+"Anchor": "Ankkuri",
+"You have unsaved changes are you sure you want to navigate away?": "Sinulla on tallentamattomia muutoksia, haluatko varmasti siirty\u00e4 toiselle sivulle?",
+"Restore last draft": "Palauta aiempi luonnos",
+"Special character": "Erikoismerkki",
+"Source code": "L\u00e4hdekoodi",
+"Color": "V\u00e4ri",
+"Right to left": "Oikealta vasemmalle",
+"Left to right": "Vasemmalta oikealle",
+"Emoticons": "Hymi\u00f6t",
+"Robots": "Robotit",
+"Document properties": "Dokumentin ominaisuudet",
+"Title": "Otsikko",
+"Keywords": "Avainsanat",
+"Encoding": "Merkist\u00f6",
+"Description": "Kuvaus",
+"Author": "Tekij\u00e4",
+"Fullscreen": "Koko ruutu",
+"Horizontal line": "Vaakasuora viiva",
+"Horizontal space": "Horisontaalinen tila",
+"Insert\/edit image": "Lis\u00e4\u00e4\/muokkaa kuva",
+"General": "Yleiset",
+"Advanced": "Lis\u00e4asetukset",
+"Source": "L\u00e4hde",
+"Border": "Reunus",
+"Constrain proportions": "S\u00e4ilyt\u00e4 mittasuhteet",
+"Vertical space": "Vertikaalinen tila",
+"Image description": "Kuvaus",
+"Style": "Tyyli",
+"Dimensions": "Mittasuhteet",
+"Insert image": "Lis\u00e4\u00e4 kuva",
+"Insert date\/time": "Lis\u00e4\u00e4 p\u00e4iv\u00e4m\u00e4\u00e4r\u00e4 tai aika",
+"Remove link": "Poista linkki",
+"Url": "Osoite",
+"Text to display": "N\u00e4ytett\u00e4v\u00e4 teksti",
+"Anchors": "Ankkurit",
+"Insert link": "Lis\u00e4\u00e4 linkki",
+"New window": "Uusi ikkuna",
+"None": "Ei mit\u00e4\u00e4n",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Antamasi osoite n\u00e4ytt\u00e4\u00e4 olevan ulkoinen linkki. Haluatko lis\u00e4t\u00e4 osoitteeseen vaaditun http:\/\/ -etuliitteen?",
+"Target": "Kohde",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Antamasi osoite n\u00e4ytt\u00e4\u00e4 olevan s\u00e4hk\u00f6postiosoite. Haluatko lis\u00e4t\u00e4 osoitteeseen vaaditun mailto: -etuliitteen?",
+"Insert\/edit link": "Lis\u00e4\u00e4 tai muokkaa linkki",
+"Insert\/edit video": "Lis\u00e4\u00e4\/muokkaa video",
+"Poster": "L\u00e4hett\u00e4j\u00e4",
+"Alternative source": "Vaihtoehtoinen l\u00e4hde",
+"Paste your embed code below:": "Liit\u00e4 upotuskoodisi alapuolelle:",
+"Insert video": "Lis\u00e4\u00e4 video",
+"Embed": "Upota",
+"Nonbreaking space": "Sitova v\u00e4lily\u00f6nti",
+"Page break": "Sivunvaihto",
+"Paste as text": "Liit\u00e4 tekstin\u00e4",
+"Preview": "Esikatselu",
+"Print": "Tulosta",
+"Save": "Tallenna",
+"Could not find the specified string.": "Haettua merkkijonoa ei l\u00f6ytynyt.",
+"Replace": "Korvaa",
+"Next": "Seur.",
+"Whole words": "Koko sanat",
+"Find and replace": "Etsi ja korvaa",
+"Replace with": "Korvaa",
+"Find": "Etsi",
+"Replace all": "Korvaa kaikki",
+"Match case": "Erota isot ja pienet kirjaimet",
+"Prev": "Edel.",
+"Spellcheck": "Oikolue",
+"Finish": "Lopeta",
+"Ignore all": "\u00c4l\u00e4 huomioi mit\u00e4\u00e4n",
+"Ignore": "\u00c4l\u00e4 huomioi",
+"Add to Dictionary": "Lis\u00e4\u00e4 sanakirjaan",
+"Insert row before": "Lis\u00e4\u00e4 rivi ennen",
+"Rows": "Rivit",
+"Height": "Korkeus",
+"Paste row after": "Liit\u00e4 rivi j\u00e4lkeen",
+"Alignment": "Tasaus",
+"Border color": "Reunuksen v\u00e4ri",
+"Column group": "Sarakeryhm\u00e4",
+"Row": "Rivi",
+"Insert column before": "Lis\u00e4\u00e4 rivi ennen",
+"Split cell": "Jaa solu",
+"Cell padding": "Solun tyhj\u00e4 tila",
+"Cell spacing": "Solun v\u00e4li",
+"Row type": "Rivityyppi",
+"Insert table": "Lis\u00e4\u00e4 taulukko",
+"Body": "Runko",
+"Caption": "Seloste",
+"Footer": "Alaosa",
+"Delete row": "Poista rivi",
+"Paste row before": "Liit\u00e4 rivi ennen",
+"Scope": "Laajuus",
+"Delete table": "Poista taulukko",
+"H Align": "H tasaus",
+"Top": "Yl\u00e4reuna",
+"Header cell": "Otsikkosolu",
+"Column": "Sarake",
+"Row group": "Riviryhm\u00e4",
+"Cell": "Solu",
+"Middle": "Keskikohta",
+"Cell type": "Solun tyyppi",
+"Copy row": "Kopioi rivi",
+"Row properties": "Rivin ominaisuudet",
+"Table properties": "Taulukon ominaisuudet",
+"Bottom": "Alareuna",
+"V Align": "V tasaus",
+"Header": "Otsikko",
+"Right": "Oikea",
+"Insert column after": "Lis\u00e4\u00e4 rivi j\u00e4lkeen",
+"Cols": "Sarakkeet",
+"Insert row after": "Lis\u00e4\u00e4 rivi j\u00e4lkeen",
+"Width": "Leveys",
+"Cell properties": "Solun ominaisuudet",
+"Left": "Vasen",
+"Cut row": "Leikkaa rivi",
+"Delete column": "Poista sarake",
+"Center": "Keskell\u00e4",
+"Merge cells": "Yhdist\u00e4 solut",
+"Insert template": "Lis\u00e4\u00e4 pohja",
+"Templates": "Pohjat",
+"Background color": "Taustan v\u00e4ri",
+"Text color": "Tekstin v\u00e4ri",
+"Show blocks": "N\u00e4yt\u00e4 lohkot",
+"Show invisible characters": "N\u00e4yt\u00e4 n\u00e4kym\u00e4tt\u00f6m\u00e4t merkit",
+"Words: {0}": "Sanat: {0}",
+"Insert": "Lis\u00e4\u00e4",
+"File": "Tiedosto",
+"Edit": "Muokkaa",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rikastetun tekstin alue. Paina ALT-F9 valikkoon. Paina ALT-F10 ty\u00f6kaluriviin. Paina ALT-0 ohjeeseen.",
+"Tools": "Ty\u00f6kalut",
+"View": "N\u00e4yt\u00e4",
+"Table": "Taulukko",
+"Format": "Muotoilu"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/fo.js b/program/js/tinymce/langs/fo.js
new file mode 100644
index 000000000..ad64ec815
--- /dev/null
+++ b/program/js/tinymce/langs/fo.js
@@ -0,0 +1,179 @@
+tinymce.addI18n('fo',{
+"Cut": "Klipp",
+"Header 2": "Header 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "T\u00edn kagi hevur ikki beinlei\u00f0is atgongd til setibor\u00f0i\u00f0. Vinarliga br\u00faka CTRL+X\/C\/V snarvegirnar \u00edsta\u00f0in.",
+"Div": "Div",
+"Paste": "L\u00edma",
+"Close": "Lat aftur",
+"Font Family": "Font Family",
+"Pre": "Pre",
+"Align right": "H\u00f8gra stilla",
+"New document": "N\u00fdtt skjal",
+"Blockquote": "Blockquote",
+"Numbered list": "Tal listi",
+"Increase indent": "vaks inndr\u00e1tt",
+"Formats": "Sni\u00f0",
+"Headers": "Headers",
+"Select all": "Vel alt",
+"Header 3": "Header 3",
+"Blocks": "Blocks",
+"Undo": "Angra ger",
+"Strikethrough": "Strika \u00edgj\u00f8gnum",
+"Bullet list": "Punkt listi",
+"Header 1": "Header 1",
+"Superscript": "H\u00e1skrift",
+"Clear formatting": "Strika sni\u00f0",
+"Font Sizes": "Font Sizes",
+"Subscript": "L\u00e1gskrift",
+"Header 6": "Header 6",
+"Redo": "Ger aftur",
+"Paragraph": "Paragraph",
+"Ok": "Ok",
+"Bold": "Feit",
+"Code": "Code",
+"Italic": "Sk\u00e1ktekstur",
+"Align center": "Mi\u00f0set",
+"Header 5": "Header 5",
+"Decrease indent": "Minka inndr\u00e1tt",
+"Header 4": "Header 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.",
+"Underline": "Undirstrika",
+"Cancel": "\u00d3gilda",
+"Justify": "L\u00edka breddar",
+"Inline": "Inline",
+"Copy": "Avrita",
+"Align left": "Vinstra stilla",
+"Visual aids": "Sj\u00f3nhj\u00e1lp",
+"Lower Greek": "L\u00edti Grikskt",
+"Square": "Fj\u00f3rhyrningur",
+"Default": "Forsettur",
+"Lower Alpha": "L\u00edti Alfa",
+"Circle": "Ringur",
+"Disc": "Skiva",
+"Upper Alpha": "St\u00f3rt Alfa",
+"Upper Roman": "St\u00f3rt R\u00f3mverskt",
+"Lower Roman": "L\u00edti R\u00f3mverskt",
+"Name": "Navn",
+"Anchor": "Akker",
+"You have unsaved changes are you sure you want to navigate away?": "T\u00fa hevur ikki goymdar broytingar. Ert t\u00fa v\u00edsur \u00ed at t\u00fa vilt halda fram?",
+"Restore last draft": "Endurskapa seinasta uppkast",
+"Special character": "Serst\u00f8k tekn",
+"Source code": "keldukoda",
+"Right to left": "H\u00f8gra til vinstra",
+"Left to right": "Vinstra til h\u00f8gra",
+"Emoticons": "Emotikonur",
+"Robots": "Robottar",
+"Document properties": "Skjal eginleikar",
+"Title": "Heiti",
+"Keywords": "Leitior\u00f0",
+"Encoding": "Koding",
+"Description": "L\u00fdsing",
+"Author": "H\u00f8vundur",
+"Fullscreen": "Fullan sk\u00edggja",
+"Horizontal line": "Vatnr\u00f8tt linja",
+"Horizontal space": "Vatnr\u00e6tt fr\u00e1st\u00f8\u00f0a",
+"Insert\/edit image": "Innset\/r\u00e6tta mynd",
+"General": "Vanligt",
+"Advanced": "Framkomi",
+"Source": "Kelda",
+"Border": "Rammi",
+"Constrain proportions": "Var\u00f0veit lutfall",
+"Vertical space": "Loddr\u00e6t fr\u00e1st\u00f8\u00f0a",
+"Image description": "L\u00fdsing av mynd",
+"Style": "St\u00edlur",
+"Dimensions": "St\u00f8dd",
+"Insert image": "Insert image",
+"Insert date\/time": "Innset dag\/t\u00ed\u00f0",
+"Remove link": "Remove link",
+"Url": "Url",
+"Text to display": "Tekstur at v\u00edsa",
+"Anchors": "Anchors",
+"Insert link": "Innset leinkju",
+"New window": "N\u00fdggjan glugga",
+"None": "Eingin",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?",
+"Target": "M\u00e1l",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",
+"Insert\/edit link": "Innset\/r\u00e6tta leinkju",
+"Insert\/edit video": "Innset\/r\u00e6tta kykmynd",
+"Poster": "Uppslag",
+"Alternative source": "Onnur kelda",
+"Paste your embed code below:": "Innset ta\u00f0 kodu, sum skal leggjast inn \u00ed, ni\u00f0anfyri:",
+"Insert video": "Innset kykmynd",
+"Embed": "Legg inn \u00ed",
+"Nonbreaking space": "Hart millumr\u00fam",
+"Page break": "S\u00ed\u00f0uskift",
+"Paste as text": "Paste as text",
+"Preview": "V\u00eds frammanundan",
+"Print": "Prenta",
+"Save": "Goym",
+"Could not find the specified string.": "Kundi ikki finna leititekst",
+"Replace": "Set \u00edsta\u00f0in",
+"Next": "N\u00e6sta",
+"Whole words": "Heil or\u00f0",
+"Find and replace": "Finn og set \u00edsta\u00f0in",
+"Replace with": "Set \u00edsta\u00f0in",
+"Find": "Finn",
+"Replace all": "Set \u00edsta\u00f0in fyri \u00f8ll",
+"Match case": "ST\u00d3RIR og l\u00edtlir b\u00f3kstavir",
+"Prev": "Fyrra",
+"Spellcheck": "R\u00e6ttstavari",
+"Finish": "Enda",
+"Ignore all": "Leyp alt um",
+"Ignore": "Leyp um",
+"Insert row before": "Innset ra\u00f0 \u00e1\u00f0renn",
+"Rows": "R\u00f8\u00f0",
+"Height": "H\u00e6dd",
+"Paste row after": "L\u00edma ra\u00f0 aftan\u00e1",
+"Alignment": "Stilling",
+"Column group": "Teig b\u00f3lkur",
+"Row": "Ra\u00f0",
+"Insert column before": "Innset teig \u00e1\u00f0renn",
+"Split cell": "Syndra puntar",
+"Cell padding": "Punt fylling",
+"Cell spacing": "Punt fr\u00e1st\u00f8\u00f0a",
+"Row type": "Ra\u00f0 slag",
+"Insert table": "Innset talvu",
+"Body": "Likam",
+"Caption": "Tekstur",
+"Footer": "F\u00f3tur",
+"Delete row": "Skrika ra\u00f0",
+"Paste row before": "L\u00edma ra\u00f0 \u00e1\u00f0renn",
+"Scope": "N\u00fdtslu\u00f8ki",
+"Delete table": "Strika talvu",
+"Header cell": "H\u00f8vd puntur",
+"Column": "Teigur",
+"Cell": "Puntur",
+"Header": "H\u00f8vd",
+"Cell type": "Punt slag",
+"Copy row": "Avrita ra\u00f0",
+"Row properties": "Ra\u00f0 eginleikar",
+"Table properties": "Talvu eginleikar",
+"Row group": "Ra\u00f0 b\u00f3lkur",
+"Right": "H\u00f8gra",
+"Insert column after": "Innset teig aftan\u00e1",
+"Cols": "Teigar",
+"Insert row after": "Innset ra\u00f0 aftan\u00e1",
+"Width": "Breidd",
+"Cell properties": "Punt eginleikar",
+"Left": "Vinstra",
+"Cut row": "Klipp ra\u00f0",
+"Delete column": "Strika teig",
+"Center": "Mi\u00f0a",
+"Merge cells": "Fl\u00e6tta puntar",
+"Insert template": "Innset form",
+"Templates": "Formur",
+"Background color": "Bakgrundslitur",
+"Text color": "Tekst litur",
+"Show blocks": "V\u00eds blokkar",
+"Show invisible characters": "V\u00eds \u00f3sj\u00f3nlig tekn",
+"Words: {0}": "Or\u00f0: {0}",
+"Insert": "Innset",
+"File": "F\u00edla",
+"Edit": "Ritstj\u00f3rna",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "R\u00edkt Tekst \u00d8ki. Tr\u00fdst ALT-F9 fyri valmynd. Tr\u00fdst ALT-F10 fyri ambo\u00f0slinju. Tr\u00fdst ALT-0 fyri hj\u00e1lp",
+"Tools": "Ambo\u00f0",
+"View": "V\u00eds",
+"Table": "Talva",
+"Format": "Smi\u00f0"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/fr_FR.js b/program/js/tinymce/langs/fr_FR.js
new file mode 100644
index 000000000..5e0e17d56
--- /dev/null
+++ b/program/js/tinymce/langs/fr_FR.js
@@ -0,0 +1,184 @@
+tinymce.addI18n('fr_FR',{
+"Cut": "Couper",
+"Header 2": "Titre 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Votre navigateur ne supporte pas la copie directe. Merci d'utiliser les touches Ctrl+X\/C\/V.",
+"Div": "Div",
+"Paste": "Coller",
+"Close": "Fermer",
+"Font Family": "Polices de caract\u00e8res",
+"Pre": "Pre",
+"Align right": "Aligner \u00e0 droite",
+"New document": "Nouveau document",
+"Blockquote": "Citation",
+"Numbered list": "Num\u00e9rotation",
+"Increase indent": "Augmenter le retrait",
+"Formats": "Formats",
+"Headers": "Titres",
+"Select all": "Tout s\u00e9lectionner",
+"Header 3": "Titre 3",
+"Blocks": "Blocs",
+"Undo": "Annuler",
+"Strikethrough": "Barr\u00e9",
+"Bullet list": "Puces",
+"Header 1": "Titre 1",
+"Superscript": "Exposant",
+"Clear formatting": "Effacer la mise en forme",
+"Font Sizes": "Tailles de la police",
+"Subscript": "Indice",
+"Header 6": "Titre 6",
+"Redo": "R\u00e9tablir",
+"Paragraph": "Paragraphe",
+"Ok": "Ok",
+"Bold": "Gras",
+"Code": "Code",
+"Italic": "Italique",
+"Align center": "Aligner au centre",
+"Header 5": "Titre 5",
+"Decrease indent": "Diminuer le retrait",
+"Header 4": "Titre 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Le presse-papiers est maintenant en mode \"texte plein\". Les contenus seront coll\u00e9s sans retenir les formatages jusqu'\u00e0 ce que vous d\u00e9sactiviez cette option.",
+"Underline": "Soulign\u00e9",
+"Cancel": "Annuler",
+"Justify": "Justifi\u00e9",
+"Inline": "En ligne",
+"Copy": "Copier",
+"Align left": "Aligner \u00e0 gauche",
+"Visual aids": "Aides visuelle",
+"Lower Greek": "Grec minuscule",
+"Square": "Carr\u00e9",
+"Default": "Par d\u00e9faut",
+"Lower Alpha": "Alpha minuscule",
+"Circle": "Cercle",
+"Disc": "Disque",
+"Upper Alpha": "Alpha majuscule",
+"Upper Roman": "Romain majuscule",
+"Lower Roman": "Romain minuscule",
+"Name": "Nom",
+"Anchor": "Ancre",
+"You have unsaved changes are you sure you want to navigate away?": "Vous avez des modifications non enregistr\u00e9es, \u00eates-vous s\u00fbr de quitter la page?",
+"Restore last draft": "Restaurer le dernier brouillon",
+"Special character": "Caract\u00e8res sp\u00e9ciaux",
+"Source code": "Code source",
+"Right to left": "Droite \u00e0 gauche",
+"Left to right": "Gauche \u00e0 droite",
+"Emoticons": "Emotic\u00f4nes",
+"Robots": "Robots",
+"Document properties": "Propri\u00e9t\u00e9 du document",
+"Title": "Titre",
+"Keywords": "Mots-cl\u00e9s",
+"Encoding": "Encodage",
+"Description": "Description",
+"Author": "Auteur",
+"Fullscreen": "Plein \u00e9cran",
+"Horizontal line": "Ligne horizontale",
+"Horizontal space": "Espacement horizontal",
+"Insert\/edit image": "Ins\u00e9rer\/\u00e9diter une image",
+"General": "G\u00e9n\u00e9ral",
+"Advanced": "Avanc\u00e9",
+"Source": "Source",
+"Border": "Bordure",
+"Constrain proportions": "Contraindre les proportions",
+"Vertical space": "Espacement vertical",
+"Image description": "Description de l'image",
+"Style": "Style",
+"Dimensions": "Dimensions",
+"Insert image": "Ins\u00e9rer une image",
+"Insert date\/time": "Ins\u00e9rer date\/heure",
+"Remove link": "Enlever le lien",
+"Url": "Url",
+"Text to display": "Texte \u00e0 afficher",
+"Anchors": "Ancres",
+"Insert link": "Ins\u00e9rer un lien",
+"New window": "Nouvelle fen\u00eatre",
+"None": "n\/a",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "L'URL que vous avez entr\u00e9e semble \u00eatre un lien externe. Voulez-vous ajouter le pr\u00e9fixe http:\/\/ n\u00e9cessaire?",
+"Target": "Cible",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "L'URL que vous avez entr\u00e9e semble \u00eatre une adresse e-mail. Voulez-vous ajouter le pr\u00e9fixe mailto: n\u00e9cessaire?",
+"Insert\/edit link": "Ins\u00e9rer\/\u00e9diter un lien",
+"Insert\/edit video": "Ins\u00e9rer\/\u00e9diter une vid\u00e9o",
+"Poster": "Publier",
+"Alternative source": "Source alternative",
+"Paste your embed code below:": "Collez votre code d'int\u00e9gration ci-dessous :",
+"Insert video": "Ins\u00e9rer une vid\u00e9o",
+"Embed": "Ins\u00e9rer",
+"Nonbreaking space": "Espace ins\u00e9cable",
+"Page break": "Saut de page",
+"Paste as text": "Coller comme texte",
+"Preview": "Pr\u00e9visualiser",
+"Print": "Imprimer",
+"Save": "Enregistrer",
+"Could not find the specified string.": "Impossible de trouver la cha\u00eene sp\u00e9cifi\u00e9e.",
+"Replace": "Remplacer",
+"Next": "Suiv",
+"Whole words": "Mots entiers",
+"Find and replace": "Trouver et remplacer",
+"Replace with": "Remplacer par",
+"Find": "Chercher",
+"Replace all": "Tout remplacer",
+"Match case": "Respecter la casse",
+"Prev": "Pr\u00e9c ",
+"Spellcheck": "V\u00e9rification orthographique",
+"Finish": "Finie",
+"Ignore all": "Tout ignorer",
+"Ignore": "Ignorer",
+"Insert row before": "Ins\u00e9rer une ligne avant",
+"Rows": "Lignes",
+"Height": "Hauteur",
+"Paste row after": "Coller la ligne apr\u00e8s",
+"Alignment": "Alignement",
+"Column group": "Groupe de colonnes",
+"Row": "Ligne",
+"Insert column before": "Ins\u00e9rer une colonne avant",
+"Split cell": "Diviser la cellule",
+"Cell padding": "Espacement interne cellule",
+"Cell spacing": "Espacement inter-cellulles",
+"Row type": "Type de ligne",
+"Insert table": "Ins\u00e9rer un tableau",
+"Body": "Corps",
+"Caption": "Titre",
+"Footer": "Pied",
+"Delete row": "Effacer la ligne",
+"Paste row before": "Coller la ligne avant",
+"Scope": "Etendue",
+"Delete table": "Supprimer le tableau",
+"H Align": "Alignement H",
+"Top": "Haut",
+"Header cell": "Cellule d'en-t\u00eate",
+"Column": "Colonne",
+"Row group": "Groupe de lignes",
+"Cell": "Cellule",
+"Middle": "Milieu",
+"Cell type": "Type de cellule",
+"Copy row": "Copier la ligne",
+"Row properties": "Propri\u00e9t\u00e9s de la ligne",
+"Table properties": "Propri\u00e9t\u00e9s du tableau",
+"Bottom": "Bas",
+"V Align": "Alignement V",
+"Header": "En-t\u00eate",
+"Right": "Droite",
+"Insert column after": "Ins\u00e9rer une colonne apr\u00e8s",
+"Cols": "Colonnes",
+"Insert row after": "Ins\u00e9rer une ligne apr\u00e8s",
+"Width": "Largeur",
+"Cell properties": "Propri\u00e9t\u00e9s de la cellule",
+"Left": "Gauche",
+"Cut row": "Couper la ligne",
+"Delete column": "Effacer la colonne",
+"Center": "Centr\u00e9",
+"Merge cells": "Fusionner les cellules",
+"Insert template": "Ajouter un th\u00e8me",
+"Templates": "Th\u00e8mes",
+"Background color": "Couleur d'arri\u00e8re-plan",
+"Text color": "Couleur du texte",
+"Show blocks": "Afficher les blocs",
+"Show invisible characters": "Afficher les caract\u00e8res invisibles",
+"Words: {0}": "Mots : {0}",
+"Insert": "Ins\u00e9rer",
+"File": "Fichier",
+"Edit": "Editer",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Zone Texte Riche. Appuyer sur ALT-F9 pour le menu. Appuyer sur ALT-F10 pour la barre d'outils. Appuyer sur ALT-0 pour de l'aide.",
+"Tools": "Outils",
+"View": "Voir",
+"Table": "Tableau",
+"Format": "Format"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/gd.js b/program/js/tinymce/langs/gd.js
new file mode 100644
index 000000000..b2663557e
--- /dev/null
+++ b/program/js/tinymce/langs/gd.js
@@ -0,0 +1,179 @@
+tinymce.addI18n('gd',{
+"Cut": "Gearr \u00e0s",
+"Header 2": "Bann-cinn 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Chan eil am brabhsair agad a' cur taic ri inntrigeadh d\u00ecreach dhan st\u00f2r-bh\u00f2rd. Cleachd ath-ghoiridean a' mheur-chl\u00e0ir, Ctrl+X\/V\/V 'nan \u00e0ite.",
+"Div": "Div",
+"Paste": "Cuir ann",
+"Close": "D\u00f9in",
+"Font Family": "Teaghlach a' chrutha-chl\u00f2",
+"Pre": "Pre",
+"Align right": "Co-thaobhaich ris an l\u00e0imh dheas",
+"New document": "Sgr\u00ecobhainn \u00f9r",
+"Blockquote": "Bloc-luaidh",
+"Numbered list": "Liosta \u00e0ireamhaichte",
+"Increase indent": "Meudaich an eag",
+"Formats": "F\u00f2rmatan",
+"Headers": "Bannan-cinn",
+"Select all": "Tagh na h-uile",
+"Header 3": "Bann-cinn 3",
+"Blocks": "Blocaichean",
+"Undo": "Neo-dh\u00e8an",
+"Strikethrough": "Loidhne troimhe",
+"Bullet list": "Liosta pheilearaichte",
+"Header 1": "Bann-cinn 1",
+"Superscript": "Os-sgr\u00ecobhte",
+"Clear formatting": "Falamhaich am f\u00f2rmatadh",
+"Font Sizes": "Meudan nan cruthan-chl\u00f2",
+"Subscript": "Bun-sgr\u00ecobhte",
+"Header 6": "Bann-cinn 6",
+"Redo": "Ath-dh\u00e8an",
+"Paragraph": "Paragraf",
+"Ok": "Ceart ma-th\u00e0",
+"Bold": "Trom",
+"Code": "C\u00f2d",
+"Italic": "Eadailteach",
+"Align center": "Co-thaobhaich ris a' mheadhan",
+"Header 5": "Bann-cinn 5",
+"Decrease indent": "Lughdaich an eag",
+"Header 4": "Bann-cinn 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Ma chuireas tu rud ann a-nis, th\u00e8id an t-susbaint a chur ann mar theacsa lom gus an cuir thu dheth an roghainn seo a-rithist.",
+"Underline": "Fo-loidhne",
+"Cancel": "Sguir dheth",
+"Justify": "Blocaich",
+"Inline": "Taobh a-staigh na loidhne",
+"Copy": "D\u00e8an lethbhreac",
+"Align left": "Co-thaobhaich ris an l\u00e0imh chl\u00ec",
+"Visual aids": "Taic l\u00e8irsinne",
+"Lower Greek": "Litrichean Greugach beaga",
+"Square": "Ce\u00e0rnag",
+"Default": "Bun-roghainn",
+"Lower Alpha": "Aibidileach is beag",
+"Circle": "Cearcall",
+"Disc": "Diosga",
+"Upper Alpha": "Aibidileach is m\u00f2r",
+"Upper Roman": "\u00c0ireamhan R\u00f2manach is m\u00f2r",
+"Lower Roman": "\u00c0ireamhan R\u00f2manach is beag",
+"Name": "Ainm",
+"Anchor": "Acair",
+"You have unsaved changes are you sure you want to navigate away?": "Tha atharraichean gun s\u00e0bhaladh agad, a bheil thu cinnteach gu bheil thu airson gluasad air falbh?",
+"Restore last draft": "Aisig an dreach mu dheireadh",
+"Special character": "Caractar s\u00f2nraichte",
+"Source code": "An c\u00f2d t\u00f9sail",
+"Right to left": "Deas gu cl\u00ec",
+"Left to right": "Cl\u00ec gu deas",
+"Emoticons": "Samhlaidhean-gn\u00f9ise",
+"Robots": "Robotairean",
+"Document properties": "Roghainnean na sgr\u00ecobhainne",
+"Title": "Tiotal",
+"Keywords": "Faclan-luirg",
+"Encoding": "C\u00f2dachadh",
+"Description": "Tuairisgeul",
+"Author": "\u00d9ghdar",
+"Fullscreen": "L\u00e0n-sgr\u00ecn",
+"Horizontal line": "Loidhne ch\u00f2mhnard",
+"Horizontal space": "\u00c0ite c\u00f2mhnard",
+"Insert\/edit image": "Cuir a-steach\/Deasaich an dealbh",
+"General": "Coitcheann",
+"Advanced": "Adhartach",
+"Source": "T\u00f9s",
+"Border": "Iomall",
+"Constrain proportions": "Cuingich na co-r\u00e8irean",
+"Vertical space": "\u00c0ite inghearach",
+"Image description": "Tuairisgeul an deilbh",
+"Style": "Stoidhle",
+"Dimensions": "Meudachd",
+"Insert image": "Cuir a-steach dealbh",
+"Insert date\/time": "Cuir a-steach ceann-l\u00e0\/\u00e0m",
+"Remove link": "Thoir air falbh an ceangal",
+"Url": "URL",
+"Text to display": "An teacsa a th\u00e8id a shealltainn",
+"Anchors": "Acraichean",
+"Insert link": "Cuir a-steach ceangal",
+"New window": "Uinneag \u00f9r",
+"None": "Chan eil gin",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Tha coltas gu bheil an URL a chuir thu a-steach 'na cheangal ris an taobh a-muigh. A bheil thu airson an ro-leasachan http:\/\/ a chur ris? Tha feum air.",
+"Target": "Targaid",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Tha coltas gu bheil an URL a chuir thu a-steach 'na she\u00f2ladh puist-d. A bheil thu airson an ro-leasachan mailto: a chur ris? Tha feum air.",
+"Insert\/edit link": "Cuir a-steach\/Deasaich an ceangal",
+"Insert\/edit video": "Cuir a-steach\/Deasaich a' video",
+"Poster": "P\u00f2stair",
+"Alternative source": "Roghainn eile de th\u00f9s",
+"Paste your embed code below:": "Cuir an c\u00f2d leabachaidh agad a-steach gu h-\u00ecosal:",
+"Insert video": "Cuir a-steach video",
+"Embed": "Leabaich",
+"Nonbreaking space": "Be\u00e0rn neo-bhristidh",
+"Page break": "Briseadh-duilleige",
+"Paste as text": "Cuir ann mar theacsa",
+"Preview": "Ro-shealladh",
+"Print": "Cl\u00f2-bhuail",
+"Save": "S\u00e0bhail",
+"Could not find the specified string.": "Cha b' urrainn dhuinn na dh'iarr thu a lorg.",
+"Replace": "Cuir 'na \u00e0ite",
+"Next": "Air adhart",
+"Whole words": "Faclan sl\u00e0na",
+"Find and replace": "Lorg is cuir 'na \u00e0ite",
+"Replace with": "Cuir na leanas 'na \u00e0ite",
+"Find": "Lorg",
+"Replace all": "Cuir an \u00e0ite na h-uile",
+"Match case": "Maids litrichean m\u00f2ra 's beaga",
+"Prev": "Air ais",
+"Spellcheck": "Dearbhaich an litreachadh",
+"Finish": "Cr\u00ecochnaich",
+"Ignore all": "Leig seachad na h-uile",
+"Ignore": "Leig seachad",
+"Insert row before": "Cuir a-steach r\u00e0gh roimhe",
+"Rows": "R\u00e0ghan",
+"Height": "\u00c0irde",
+"Paste row after": "Cuir ann r\u00e0gh 'na dh\u00e8idh",
+"Alignment": "Co-thaobhadh",
+"Column group": "Buidheann cholbhan",
+"Row": "R\u00e0gh",
+"Insert column before": "Cuir a-steach colbh roimhe",
+"Split cell": "Sgoilt an cealla",
+"Cell padding": "Padadh nan ceallan",
+"Cell spacing": "Be\u00e0rnadh nan ceallan",
+"Row type": "Se\u00f2rsa an r\u00e0igh",
+"Insert table": "Cuir a-steach cl\u00e0r",
+"Body": "Bodhaig",
+"Caption": "Caipsean",
+"Footer": "Bann-coise",
+"Delete row": "Sguab \u00e0s an r\u00e0gh",
+"Paste row before": "Cuir ann r\u00e0gh roimhe",
+"Scope": "Sg\u00f2p",
+"Delete table": "Sguab \u00e0s an cl\u00e0r",
+"Header cell": "Cealla a' bhanna-chinn",
+"Column": "Colbh",
+"Cell": "Cealla",
+"Header": "Bann-cinn",
+"Cell type": "Se\u00f2rsa a' chealla",
+"Copy row": "D\u00e8an lethbhreac dhen r\u00e0gh",
+"Row properties": "Roghainnean an r\u00e0igh",
+"Table properties": "Roghainnean a' chl\u00e0ir",
+"Row group": "Buidheann r\u00e0ghan",
+"Right": "Deas",
+"Insert column after": "Cuir a-steach colbh 'na dh\u00e8idh",
+"Cols": "Colbhan",
+"Insert row after": "Cuir a-steach r\u00e0gh 'na dh\u00e8idh",
+"Width": "Leud",
+"Cell properties": "Roghainnean a' chealla",
+"Left": "Cl\u00ec",
+"Cut row": "Gearr \u00e0s an r\u00e0gh",
+"Delete column": "Sguab \u00e0s an colbh",
+"Center": "Meadhan",
+"Merge cells": "Co-aonaich na ceallan",
+"Insert template": "Cuir a-steach teamplaid",
+"Templates": "Teamplaidean",
+"Background color": "Dath a\u2019 ch\u00f9laibh",
+"Text color": "Dath an teacsa",
+"Show blocks": "Seall na blocaichean",
+"Show invisible characters": "Seall na caractaran do-fhaicsinneach",
+"Words: {0}": "Faclan: {0}",
+"Insert": "Cuir a-steach",
+"File": "Faidhle",
+"Edit": "Deasaich",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Raon Rich Text. Br\u00f9th ALT-F9 airson a' chl\u00e0ir-thaice. Br\u00f9th ALT-F10 airson a' bh\u00e0r-inneal. Br\u00f9th ALT-0 airson na cobharach.",
+"Tools": "Innealan",
+"View": "Sealladh",
+"Table": "Cl\u00e0r",
+"Format": "F\u00f2rmat"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/gl.js b/program/js/tinymce/langs/gl.js
new file mode 100644
index 000000000..f12006aab
--- /dev/null
+++ b/program/js/tinymce/langs/gl.js
@@ -0,0 +1,191 @@
+tinymce.addI18n('gl',{
+"Cut": "Cortar",
+"Heading 5": "T\u00edtulo 5",
+"Header 2": "Cabeceira 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "O seu navegador non admite o acceso directo ao portapapeis. Empregue os atallos de teclado Ctrl+X\/C\/V no seu canto.",
+"Heading 4": "T\u00edtulo 4",
+"Div": "Div",
+"Heading 2": "T\u00edtulo 2",
+"Paste": "Pegar",
+"Close": "Pechar",
+"Font Family": "Tipo de letra",
+"Pre": "Pre",
+"Align right": "Ali\u00f1ar \u00e1 dereita",
+"New document": "Novo documento",
+"Blockquote": "Bloque entre comi\u00f1as",
+"Numbered list": "Lista numerada",
+"Heading 1": "T\u00edtulo 1",
+"Headings": "T\u00edtulo",
+"Increase indent": "Aumentar a sangr\u00eda",
+"Formats": "Formatos",
+"Headers": "Cabeceiras",
+"Select all": "Seleccionar todo",
+"Header 3": "Cabeceira 3",
+"Blocks": "Bloques",
+"Undo": "Desfacer",
+"Strikethrough": "Riscado",
+"Bullet list": "Lista de vi\u00f1etas",
+"Header 1": "Cabeceira 1",
+"Superscript": "Super\u00edndice",
+"Clear formatting": "Limpar o formato",
+"Font Sizes": "Tama\u00f1o da letra",
+"Subscript": "Sub\u00edndice",
+"Header 6": "Cabeceira 6",
+"Redo": "Refacer",
+"Paragraph": "Par\u00e1grafo",
+"Ok": "Aceptar",
+"Bold": "Negra",
+"Code": "C\u00f3digo",
+"Italic": "Cursiva",
+"Align center": "Ali\u00f1ar ao centro",
+"Header 5": "Cabeceira 5",
+"Heading 6": "T\u00edtulo 6",
+"Heading 3": "T\u00edtulo 3",
+"Decrease indent": "Reducir a sangr\u00eda",
+"Header 4": "Cabeceira 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Neste momento o pegado est\u00e1 definido en modo de texto simple. Os contidos p\u00e9garanse como texto sen formato ata que se active esta opci\u00f3n.",
+"Underline": "Subli\u00f1ado",
+"Cancel": "Cancelar",
+"Justify": "Xustificar",
+"Inline": "En li\u00f1a",
+"Copy": "Copiar",
+"Align left": "Ali\u00f1ar \u00e1 esquerda",
+"Visual aids": "Axudas visuais",
+"Lower Greek": "Grega min\u00fascula",
+"Square": "Cadrado",
+"Default": "Predeterminada",
+"Lower Alpha": "Alfa min\u00fascula",
+"Circle": "Circulo",
+"Disc": "Disco",
+"Upper Alpha": "Alfa mai\u00fascula",
+"Upper Roman": "Romana mai\u00fascula",
+"Lower Roman": "Romana min\u00fascula",
+"Name": "Nome",
+"Anchor": "Ancoraxe",
+"You have unsaved changes are you sure you want to navigate away?": "Ten cambios sen gardar. Confirma que quere sa\u00edr?",
+"Restore last draft": "Restaurar o \u00faltimo borrador",
+"Special character": "Car\u00e1cter especial",
+"Source code": "C\u00f3digo fonte",
+"Right to left": "De dereita a esquerda",
+"Left to right": "De esquerda a dereita",
+"Emoticons": "Emoticonas",
+"Robots": "Robots",
+"Document properties": "Propiedades do documento",
+"Title": "T\u00edtulo",
+"Keywords": "Palabras clave",
+"Encoding": "Codificaci\u00f3n",
+"Description": "Descrici\u00f3n",
+"Author": "Autor",
+"Fullscreen": "Pantalla completa",
+"Horizontal line": "Li\u00f1a horizontal",
+"Horizontal space": "Espazo horizontal",
+"Insert\/edit image": "Inserir\/editar imaxe",
+"General": "Xeral",
+"Advanced": "Avanzado",
+"Source": "Orixe",
+"Border": "Bordo",
+"Constrain proportions": "Restrinxir as proporci\u00f3ns",
+"Vertical space": "Espazo vertical",
+"Image description": "Descrici\u00f3n da imaxe",
+"Style": "Estilo",
+"Dimensions": "Dimensi\u00f3ns",
+"Insert image": "Inserir imaxe",
+"Insert date\/time": "Inserir data\/hora",
+"Remove link": "Retirar a ligaz\u00f3n",
+"Url": "URL",
+"Text to display": "Texto que amosar",
+"Anchors": "Ancoraxes",
+"Insert link": "Inserir ligaz\u00f3n",
+"New window": "Nova xanela",
+"None": "Ning\u00fan",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "O URL que introduciu semella seren unha ligaz\u00f3n externa. Quere engadirlle o prefixo http:\/\/ requirido?",
+"Target": "Destino",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "O URL que introduciu semella seren un enderezo de correo. Quere engadirlle o prefixo mailto: requirido?",
+"Insert\/edit link": "Inserir\/editar ligaz\u00f3n",
+"Insert\/edit video": "Inserir\/editar v\u00eddeo",
+"Poster": "Cartel",
+"Alternative source": "Orixe alternativa",
+"Paste your embed code below:": "Pegue embaixo o c\u00f3digo integrado:",
+"Insert video": "Inserir v\u00eddeo",
+"Embed": "Integrado",
+"Nonbreaking space": "Espazo irromp\u00edbel",
+"Page break": "Quebra de p\u00e1xina",
+"Paste as text": "Pegar como texto",
+"Preview": "Vista previa",
+"Print": "Imprimir",
+"Save": "Gardar",
+"Could not find the specified string.": "Non foi pos\u00edbel atopar a cadea de texto especificada.",
+"Replace": "Substitu\u00edr",
+"Next": "Seguinte",
+"Whole words": "Palabras completas",
+"Find and replace": "Buscar e substitu\u00edr",
+"Replace with": "Substitu\u00edr con",
+"Find": "Buscar",
+"Replace all": "Substitu\u00edr todo",
+"Match case": "Distinguir mai\u00fasculas",
+"Prev": "Anterior",
+"Spellcheck": "Corrector ortogr\u00e1fico",
+"Finish": "Rematar",
+"Ignore all": "Ignorar todo",
+"Ignore": "Ignorar",
+"Insert row before": "Inserir unha fila enriba",
+"Rows": "Filas",
+"Height": "Alto",
+"Paste row after": "Pegar fila enriba",
+"Alignment": "Ali\u00f1amento",
+"Column group": "Grupo de columnas",
+"Row": "Fila",
+"Insert column before": "Inserir columna \u00e1 esquerda",
+"Split cell": "Dividir celas",
+"Cell padding": "Marxe interior da cela",
+"Cell spacing": "Marxe entre celas",
+"Row type": "Tipo de fila",
+"Insert table": "Inserir t\u00e1boa",
+"Body": "Corpo",
+"Caption": "Subt\u00edtulo",
+"Footer": "Rodap\u00e9",
+"Delete row": "Eliminar fila",
+"Paste row before": "Pegar fila embaixo",
+"Scope": "\u00c1mbito",
+"Delete table": "Eliminar t\u00e1boa",
+"H Align": "Ali\u00f1amento H",
+"Top": "Arriba",
+"Header cell": "Cela de cabeceira",
+"Column": "Columna",
+"Row group": "Grupo de filas",
+"Cell": "Cela",
+"Middle": "Medio",
+"Cell type": "Tipo de cela",
+"Copy row": "Copiar fila",
+"Row properties": "Propiedades das filas",
+"Table properties": "Propiedades da t\u00e1boa",
+"Bottom": "Abaixo",
+"V Align": "Ali\u00f1amento V",
+"Header": "Cabeceira",
+"Right": "Dereita",
+"Insert column after": "Inserir columna \u00e1 dereita",
+"Cols": "Cols.",
+"Insert row after": "Inserir unha fila embaixo",
+"Width": "Largo",
+"Cell properties": "Propiedades da cela",
+"Left": "Esquerda",
+"Cut row": "Cortar fila",
+"Delete column": "Eliminar columna",
+"Center": "Centro",
+"Merge cells": "Combinar celas",
+"Insert template": "Inserir modelo",
+"Templates": "Modelos",
+"Background color": "Cor do fondo",
+"Text color": "Cor do texto",
+"Show blocks": "Amosar os bloques",
+"Show invisible characters": "Amosar caracteres invis\u00edbeis",
+"Words: {0}": "Palabras: {0}",
+"Insert": "Inserir",
+"File": "Ficheiro",
+"Edit": "Editar",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u00c1rea de texto mellorado. Prema ALT-F9 para o men\u00fa. Prema ALT-F10 para a barra de ferramentas. Prema ALT-0 para a axuda",
+"Tools": "Ferramentas",
+"View": "Ver",
+"Table": "T\u00e1boa",
+"Format": "Formato"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/he_IL.js b/program/js/tinymce/langs/he_IL.js
new file mode 100644
index 000000000..659e4b3cb
--- /dev/null
+++ b/program/js/tinymce/langs/he_IL.js
@@ -0,0 +1,180 @@
+tinymce.addI18n('he_IL',{
+"Cut": "\u05d2\u05d6\u05d5\u05e8",
+"Header 2": "\u05db\u05d5\u05ea\u05e8\u05ea 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u05d4\u05d3\u05e4\u05d3\u05e4\u05df \u05e9\u05dc\u05da \u05d0\u05d9\u05e0\u05d5 \u05de\u05d0\u05e4\u05e9\u05e8 \u05d2\u05d9\u05e9\u05d4 \u05d9\u05e9\u05d9\u05e8\u05d4 \u05dc\u05dc\u05d5\u05d7. \u05d0\u05e0\u05d0 \u05d4\u05e9\u05ea\u05de\u05e9 \u05d1\u05e7\u05d9\u05e6\u05d5\u05e8\u05d9 \u05d4\u05de\u05e7\u05dc\u05d3\u05ea Ctrl+X\/C\/V \u05d1\u05de\u05e7\u05d5\u05dd.",
+"Div": "\u05de\u05e7\u05d8\u05e2 \u05e7\u05d5\u05d3 Div",
+"Paste": "\u05d4\u05d3\u05d1\u05e7",
+"Close": "\u05e1\u05d2\u05d5\u05e8",
+"Font Family": "\u05e1\u05d5\u05d2 \u05d2\u05d5\u05e4\u05df",
+"Pre": "\u05e7\u05d8\u05e2 \u05de\u05e7\u05d3\u05d9\u05dd Pre",
+"Align right": "\u05d9\u05d9\u05e9\u05e8 \u05dc\u05e9\u05de\u05d0\u05dc",
+"New document": "\u05de\u05e1\u05de\u05da \u05d7\u05d3\u05e9",
+"Blockquote": "\u05de\u05e7\u05d8\u05e2 \u05e6\u05d9\u05d8\u05d5\u05d8",
+"Numbered list": "\u05e8\u05e9\u05d9\u05de\u05d4 \u05de\u05de\u05d5\u05e1\u05e4\u05e8\u05ea",
+"Increase indent": "\u05d4\u05d2\u05d3\u05dc \u05d4\u05d6\u05d7\u05d4",
+"Formats": "\u05e4\u05d5\u05e8\u05de\u05d8\u05d9\u05dd",
+"Headers": "\u05db\u05d5\u05ea\u05e8\u05d5\u05ea",
+"Select all": "\u05d1\u05d7\u05e8 \u05d4\u05db\u05dc",
+"Header 3": "\u05db\u05d5\u05ea\u05e8\u05ea 3",
+"Blocks": "\u05de\u05d1\u05e0\u05d9\u05dd",
+"Undo": "\u05d1\u05d8\u05dc \u05e4\u05e2\u05d5\u05dc\u05d4",
+"Strikethrough": "\u05e7\u05d5 \u05d7\u05d5\u05e6\u05d4",
+"Bullet list": "\u05e8\u05e9\u05d9\u05de\u05ea \u05ea\u05d1\u05dc\u05d9\u05d8\u05d9\u05dd",
+"Header 1": "\u05db\u05d5\u05ea\u05e8\u05ea 1",
+"Superscript": "\u05db\u05ea\u05d1 \u05e2\u05d9\u05dc\u05d9",
+"Clear formatting": "\u05e0\u05e7\u05d4 \u05e4\u05d5\u05e8\u05de\u05d8\u05d9\u05dd",
+"Font Sizes": "\u05d2\u05d5\u05d3\u05dc \u05d2\u05d5\u05e4\u05df",
+"Subscript": "\u05db\u05ea\u05d1 \u05ea\u05d7\u05ea\u05d9",
+"Header 6": "\u05db\u05d5\u05ea\u05e8\u05ea 6",
+"Redo": "\u05d1\u05e6\u05e2 \u05e9\u05d5\u05d1",
+"Paragraph": "\u05e4\u05d9\u05e1\u05e7\u05d4",
+"Ok": "\u05d0\u05d9\u05e9\u05d5\u05e8",
+"Bold": "\u05de\u05d5\u05d3\u05d2\u05e9",
+"Code": "\u05e7\u05d5\u05d3",
+"Italic": "\u05e0\u05d8\u05d5\u05d9",
+"Align center": "\u05de\u05e8\u05db\u05d6",
+"Header 5": "\u05db\u05d5\u05ea\u05e8\u05ea 5",
+"Decrease indent": "\u05d4\u05e7\u05d8\u05df \u05d4\u05d6\u05d7\u05d4",
+"Header 4": "\u05db\u05d5\u05ea\u05e8\u05ea 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u05d4\u05d3\u05d1\u05e7\u05d4 \u05d1\u05de\u05e6\u05d1 \u05d8\u05e7\u05e1\u05d8 \u05e8\u05d2\u05d9\u05dc. \u05ea\u05db\u05e0\u05d9\u05dd \u05d9\u05d5\u05d3\u05d1\u05e7\u05d5 \u05de\u05e2\u05ea\u05d4 \u05db\u05d8\u05e7\u05e1\u05d8 \u05e8\u05d2\u05d9\u05dc \u05e2\u05d3 \u05e9\u05ea\u05db\u05d1\u05d4 \u05d0\u05e4\u05e9\u05e8\u05d5\u05ea \u05d6\u05d5.",
+"Underline": "\u05e7\u05d5 \u05ea\u05d7\u05ea\u05d9",
+"Cancel": "\u05d1\u05d8\u05dc",
+"Justify": "\u05de\u05ea\u05d7 \u05dc\u05e6\u05d3\u05d3\u05d9\u05dd",
+"Inline": "\u05d1\u05d2\u05d5\u05e3 \u05d4\u05d8\u05e7\u05e1\u05d8",
+"Copy": "\u05d4\u05e2\u05ea\u05e7",
+"Align left": "\u05d9\u05d9\u05e9\u05e8 \u05dc\u05e9\u05de\u05d0\u05dc",
+"Visual aids": "\u05e2\u05d6\u05e8\u05d9\u05dd \u05d7\u05d6\u05d5\u05ea\u05d9\u05d9\u05dd",
+"Lower Greek": "\u05d0\u05d5\u05ea\u05d9\u05d5\u05ea \u05d9\u05d5\u05d5\u05e0\u05d9\u05d5\u05ea \u05e7\u05d8\u05e0\u05d5\u05ea",
+"Square": "\u05e8\u05d9\u05d1\u05d5\u05e2",
+"Default": "\u05d1\u05e8\u05d9\u05e8\u05ea \u05de\u05d7\u05d3\u05dc",
+"Lower Alpha": "\u05d0\u05d5\u05ea\u05d9\u05d5\u05ea \u05d0\u05e0\u05d2\u05dc\u05d9\u05d5\u05ea \u05e7\u05d8\u05e0\u05d5\u05ea",
+"Circle": "\u05e2\u05d9\u05d2\u05d5\u05dc",
+"Disc": "\u05d7\u05d9\u05e9\u05d5\u05e7",
+"Upper Alpha": "\u05d0\u05d5\u05ea\u05d9\u05d5\u05ea \u05d0\u05e0\u05d2\u05dc\u05d9\u05d5\u05ea \u05d2\u05d3\u05d5\u05dc\u05d5\u05ea",
+"Upper Roman": "\u05e1\u05e4\u05e8\u05d5\u05ea \u05e8\u05d5\u05de\u05d9\u05d5\u05ea \u05d2\u05d3\u05d5\u05dc\u05d5\u05ea",
+"Lower Roman": "\u05e1\u05e4\u05e8\u05d5\u05ea \u05e8\u05d5\u05de\u05d9\u05d5\u05ea \u05e7\u05d8\u05e0\u05d5\u05ea",
+"Name": "\u05e9\u05dd",
+"Anchor": "\u05de\u05e7\u05d5\u05dd \u05e2\u05d9\u05d2\u05d5\u05df",
+"You have unsaved changes are you sure you want to navigate away?": "\u05d4\u05e9\u05d9\u05e0\u05d5\u05d9\u05d9\u05dd \u05dc\u05d0 \u05e0\u05e9\u05de\u05e8\u05d5. \u05d1\u05d8\u05d5\u05d7 \u05e9\u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05e6\u05d0\u05ea \u05de\u05d4\u05d3\u05e3?",
+"Restore last draft": "\u05e9\u05d7\u05d6\u05e8 \u05d8\u05d9\u05d5\u05d8\u05d4 \u05d0\u05d7\u05e8\u05d5\u05e0\u05d4",
+"Special character": "\u05ea\u05d5\u05d5\u05d9\u05dd \u05de\u05d9\u05d5\u05d7\u05d3\u05d9\u05dd",
+"Source code": "\u05e7\u05d5\u05d3 \u05de\u05e7\u05d5\u05e8",
+"Right to left": "\u05de\u05d9\u05de\u05d9\u05df \u05dc\u05e9\u05de\u05d0\u05dc",
+"Left to right": "\u05de\u05e9\u05de\u05d0\u05dc \u05dc\u05d9\u05de\u05d9\u05df",
+"Emoticons": "\u05de\u05d7\u05d5\u05d5\u05ea",
+"Robots": "\u05e8\u05d5\u05d1\u05d5\u05d8\u05d9\u05dd",
+"Document properties": "\u05de\u05d0\u05e4\u05d9\u05d9\u05e0\u05d9 \u05de\u05e1\u05de\u05da",
+"Title": "\u05db\u05d5\u05ea\u05e8\u05ea",
+"Keywords": "\u05de\u05d9\u05dc\u05d5\u05ea \u05de\u05e4\u05ea\u05d7",
+"Encoding": "\u05e7\u05d9\u05d3\u05d5\u05d3",
+"Description": "\u05ea\u05d9\u05d0\u05d5\u05e8",
+"Author": "\u05de\u05d7\u05d1\u05e8",
+"Fullscreen": "\u05de\u05e1\u05da \u05de\u05dc\u05d0",
+"Horizontal line": "\u05e7\u05d5 \u05d0\u05d5\u05e4\u05e7\u05d9",
+"Horizontal space": "\u05de\u05e8\u05d5\u05d5\u05d7 \u05d0\u05d5\u05e4\u05e7\u05d9",
+"Insert\/edit image": "\u05d4\u05db\u05e0\u05e1\/\u05e2\u05e8\u05d5\u05da \u05ea\u05de\u05d5\u05e0\u05d4",
+"General": "\u05db\u05dc\u05dc\u05d9",
+"Advanced": "\u05de\u05ea\u05e7\u05d3\u05dd",
+"Source": "\u05de\u05e7\u05d5\u05e8",
+"Border": "\u05de\u05e1\u05d2\u05e8\u05ea",
+"Constrain proportions": "\u05d4\u05d2\u05d1\u05dc\u05ea \u05e4\u05e8\u05d5\u05e4\u05d5\u05e8\u05e6\u05d9\u05d5\u05ea",
+"Vertical space": "\u05de\u05e8\u05d5\u05d5\u05d7 \u05d0\u05e0\u05db\u05d9",
+"Image description": "\u05ea\u05d9\u05d0\u05d5\u05e8 \u05d4\u05ea\u05de\u05d5\u05e0\u05d4",
+"Style": "\u05e1\u05d2\u05e0\u05d5\u05df",
+"Dimensions": "\u05de\u05d9\u05de\u05d3\u05d9\u05dd",
+"Insert image": "\u05d4\u05db\u05e0\u05e1 \u05ea\u05de\u05d5\u05e0\u05d4",
+"Insert date\/time": "\u05d4\u05db\u05e0\u05e1 \u05ea\u05d0\u05e8\u05d9\u05da\/\u05e9\u05e2\u05d4",
+"Remove link": "\u05de\u05d7\u05e7 \u05e7\u05d9\u05e9\u05d5\u05e8",
+"Url": "\u05db\u05ea\u05d5\u05d1\u05ea \u05e7\u05d9\u05e9\u05d5\u05e8",
+"Text to display": "\u05d8\u05e7\u05e1\u05d8 \u05dc\u05d4\u05e6\u05d2\u05d4",
+"Anchors": "\u05e2\u05d5\u05d2\u05e0\u05d9\u05dd",
+"Insert link": "\u05d4\u05db\u05e0\u05e1 \u05e7\u05d9\u05e9\u05d5\u05e8",
+"New window": "\u05d7\u05dc\u05d5\u05df \u05d7\u05d3\u05e9",
+"None": "\u05dc\u05dc\u05d0",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?",
+"Target": "\u05de\u05d8\u05e8\u05d4",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",
+"Insert\/edit link": "\u05d4\u05db\u05e0\u05e1\/\u05e2\u05e8\u05d5\u05da \u05e7\u05d9\u05e9\u05d5\u05e8",
+"Insert\/edit video": "\u05d4\u05db\u05e0\u05e1\/\u05e2\u05e8\u05d5\u05da \u05e1\u05e8\u05d8\u05d5\u05df",
+"Poster": "\u05e4\u05d5\u05e1\u05d8\u05e8",
+"Alternative source": "\u05de\u05e7\u05d5\u05e8 \u05de\u05e9\u05e0\u05d9",
+"Paste your embed code below:": "\u05d4\u05d3\u05d1\u05e7 \u05e7\u05d5\u05d3 \u05d4\u05d8\u05de\u05e2\u05d4 \u05de\u05ea\u05d7\u05ea:",
+"Insert video": "\u05d4\u05db\u05e0\u05e1 \u05e1\u05e8\u05d8\u05d5\u05df",
+"Embed": "\u05d4\u05d8\u05de\u05e2",
+"Nonbreaking space": "\u05e8\u05d5\u05d5\u05d7 (\u05dc\u05dc\u05d0 \u05e9\u05d1\u05d9\u05e8\u05ea \u05e9\u05d5\u05e8\u05d4)",
+"Page break": "\u05d3\u05e3 \u05d7\u05d3\u05e9",
+"Paste as text": "\u05d4\u05d3\u05d1\u05e7 \u05db\u05d8\u05e7\u05e1\u05d8",
+"Preview": "\u05ea\u05e6\u05d5\u05d2\u05d4 \u05de\u05e7\u05d3\u05d9\u05de\u05d4",
+"Print": "\u05d4\u05d3\u05e4\u05e1",
+"Save": "\u05e9\u05de\u05d9\u05e8\u05d4",
+"Could not find the specified string.": "\u05de\u05d7\u05e8\u05d5\u05d6\u05ea \u05dc\u05d0 \u05e0\u05de\u05e6\u05d0\u05d4",
+"Replace": "\u05d4\u05d7\u05dc\u05e3",
+"Next": "\u05d4\u05d1\u05d0",
+"Whole words": "\u05de\u05d9\u05dc\u05d4 \u05e9\u05dc\u05de\u05d4",
+"Find and replace": "\u05d7\u05e4\u05e9 \u05d5\u05d4\u05d7\u05dc\u05e3",
+"Replace with": "\u05d4\u05d7\u05dc\u05e3 \u05d1",
+"Find": "\u05d7\u05e4\u05e9",
+"Replace all": "\u05d4\u05d7\u05dc\u05e3 \u05d4\u05db\u05dc",
+"Match case": "\u05d4\u05d1\u05d7\u05df \u05d1\u05d9\u05df \u05d0\u05d5\u05ea\u05d9\u05d5\u05ea \u05e7\u05d8\u05e0\u05d5\u05ea \u05dc\u05d2\u05d3\u05d5\u05dc\u05d5\u05ea",
+"Prev": "\u05e7\u05d5\u05d3\u05dd",
+"Spellcheck": "\u05d1\u05d5\u05d3\u05e7 \u05d0\u05d9\u05d5\u05ea",
+"Finish": "\u05e1\u05d9\u05d9\u05dd",
+"Ignore all": "\u05d4\u05ea\u05e2\u05dc\u05dd \u05de\u05d4\u05db\u05dc",
+"Ignore": "\u05d4\u05ea\u05e2\u05dc\u05dd",
+"Insert row before": "\u05d4\u05d5\u05e1\u05e3 \u05e9\u05d5\u05e8\u05d4 \u05dc\u05e4\u05e0\u05d9",
+"Rows": "\u05e9\u05d5\u05e8\u05d5\u05ea",
+"Height": "\u05d2\u05d5\u05d1\u05d4",
+"Paste row after": "\u05d4\u05e2\u05ea\u05e7 \u05e9\u05d5\u05e8\u05d4 \u05d0\u05d7\u05e8\u05d9",
+"Alignment": "\u05d9\u05d9\u05e9\u05d5\u05e8",
+"Column group": "\u05e7\u05d9\u05d1\u05d5\u05e5 \u05e2\u05de\u05d5\u05d3\u05d5\u05ea",
+"Row": "\u05e9\u05d5\u05e8\u05d4",
+"Insert column before": "\u05d4\u05e2\u05ea\u05e7 \u05e2\u05de\u05d5\u05d3\u05d4 \u05dc\u05e4\u05e0\u05d9",
+"Split cell": "\u05e4\u05e6\u05dc \u05ea\u05d0",
+"Cell padding": "\u05e9\u05d5\u05dc\u05d9\u05d9\u05dd \u05e4\u05e0\u05d9\u05de\u05d9\u05d9\u05dd \u05dc\u05ea\u05d0",
+"Cell spacing": "\u05e9\u05d5\u05dc\u05d9\u05d9\u05dd \u05d7\u05d9\u05e6\u05d5\u05e0\u05d9\u05dd \u05dc\u05ea\u05d0",
+"Row type": "\u05e1\u05d5\u05d2 \u05e9\u05d5\u05e8\u05d4",
+"Insert table": "\u05d4\u05db\u05e0\u05e1 \u05d8\u05d1\u05dc\u05d4",
+"Body": "\u05d2\u05d5\u05e3 \u05d4\u05d8\u05d1\u05dc\u05d0",
+"Caption": "\u05db\u05d9\u05ea\u05d5\u05d1",
+"Footer": "\u05db\u05d5\u05ea\u05e8\u05ea \u05ea\u05d7\u05ea\u05d5\u05e0\u05d4",
+"Delete row": "\u05de\u05d7\u05e7 \u05e9\u05d5\u05e8\u05d4",
+"Paste row before": "\u05d4\u05d3\u05d1\u05e7 \u05e9\u05d5\u05e8\u05d4 \u05dc\u05e4\u05e0\u05d9",
+"Scope": "\u05d4\u05d9\u05e7\u05e3",
+"Delete table": "\u05de\u05d7\u05e7 \u05d8\u05d1\u05dc\u05d4",
+"Header cell": "\u05db\u05d5\u05ea\u05e8\u05ea \u05dc\u05ea\u05d0",
+"Column": "\u05e2\u05de\u05d5\u05d3\u05d4",
+"Cell": "\u05ea\u05d0",
+"Header": "\u05db\u05d5\u05ea\u05e8\u05ea",
+"Cell type": "\u05e1\u05d5\u05d2 \u05ea\u05d0",
+"Copy row": "\u05d4\u05e2\u05ea\u05e7 \u05e9\u05d5\u05e8\u05d4",
+"Row properties": "\u05de\u05d0\u05e4\u05d9\u05d9\u05e0\u05d9 \u05e9\u05d5\u05e8\u05d4",
+"Table properties": "\u05de\u05d0\u05e4\u05d9\u05d9\u05e0\u05d9 \u05d8\u05d1\u05dc\u05d4",
+"Row group": "\u05e7\u05d9\u05d1\u05d5\u05e5 \u05e9\u05d5\u05e8\u05d5\u05ea",
+"Right": "\u05d9\u05de\u05d9\u05df",
+"Insert column after": "\u05d4\u05e2\u05ea\u05e7 \u05e2\u05de\u05d5\u05d3\u05d4 \u05d0\u05d7\u05e8\u05d9",
+"Cols": "\u05e2\u05de\u05d5\u05d3\u05d5\u05ea",
+"Insert row after": "\u05d4\u05d5\u05e1\u05e3 \u05e9\u05d5\u05e8\u05d4 \u05d0\u05d7\u05e8\u05d9",
+"Width": "\u05e8\u05d5\u05d7\u05d1",
+"Cell properties": "\u05de\u05d0\u05e4\u05d9\u05d9\u05e0\u05d9 \u05ea\u05d0",
+"Left": "\u05e9\u05de\u05d0\u05dc",
+"Cut row": "\u05d2\u05d6\u05d5\u05e8 \u05e9\u05d5\u05e8\u05d4",
+"Delete column": "\u05de\u05d7\u05e7 \u05e2\u05de\u05d5\u05d3\u05d4",
+"Center": "\u05de\u05e8\u05db\u05d6",
+"Merge cells": "\u05de\u05d6\u05d2 \u05ea\u05d0\u05d9\u05dd",
+"Insert template": "\u05d4\u05db\u05e0\u05e1 \u05ea\u05d1\u05e0\u05d9\u05ea",
+"Templates": "\u05ea\u05d1\u05e0\u05d9\u05d5\u05ea",
+"Background color": "\u05e6\u05d1\u05e2 \u05e8\u05e7\u05e2",
+"Text color": "\u05e6\u05d1\u05e2 \u05d4\u05db\u05ea\u05d1",
+"Show blocks": "\u05d4\u05e6\u05d2 \u05ea\u05d9\u05d1\u05d5\u05ea",
+"Show invisible characters": "\u05d4\u05e6\u05d2 \u05ea\u05d5\u05d5\u05d9\u05dd \u05dc\u05d0 \u05e0\u05e8\u05d0\u05d9\u05dd",
+"Words: {0}": "\u05de\u05d9\u05dc\u05d9\u05dd: {0}",
+"Insert": "\u05d4\u05d5\u05e1\u05e4\u05d4",
+"File": "\u05e7\u05d5\u05d1\u05e5",
+"Edit": "\u05e2\u05e8\u05d9\u05db\u05d4",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u05ea\u05d9\u05d1\u05ea \u05e2\u05e8\u05d9\u05db\u05d4 \u05d7\u05db\u05de\u05d4. \u05dc\u05d7\u05e5 Alt-F9 \u05dc\u05ea\u05e4\u05e8\u05d9\u05d8. Alt-F10 \u05dc\u05ea\u05e6\u05d5\u05d2\u05ea \u05db\u05e4\u05ea\u05d5\u05e8\u05d9\u05dd, Alt-0 \u05dc\u05e2\u05d6\u05e8\u05d4",
+"Tools": "\u05db\u05dc\u05d9\u05dd",
+"View": "\u05ea\u05e6\u05d5\u05d2\u05d4",
+"Table": "\u05d8\u05d1\u05dc\u05d4",
+"Format": "\u05e4\u05d5\u05e8\u05de\u05d8",
+"_dir": "rtl"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/hr.js b/program/js/tinymce/langs/hr.js
new file mode 100644
index 000000000..1e2466b17
--- /dev/null
+++ b/program/js/tinymce/langs/hr.js
@@ -0,0 +1,179 @@
+tinymce.addI18n('hr',{
+"Cut": "Izre\u017ei",
+"Header 2": "Zaglavlje 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Va\u0161 preglednik ne podr\u017eava direktan pristup me\u0111uspremniku. Molimo Vas da umjesto toga koristite tipkovni\u010dke kratice Ctrl+X\/C\/V.",
+"Div": "DIV",
+"Paste": "Zalijepi",
+"Close": "Zatvori",
+"Font Family": "Font Family",
+"Pre": "PRE",
+"Align right": "Poravnaj desno",
+"New document": "Novi dokument",
+"Blockquote": "BLOCKQUOTE",
+"Numbered list": "Numerirana lista",
+"Increase indent": "Pove\u0107aj uvla\u010denje",
+"Formats": "Formati",
+"Headers": "Zaglavlja",
+"Select all": "Ozna\u010di sve",
+"Header 3": "Zaglavlje 3",
+"Blocks": "Blokovi",
+"Undo": "Poni\u0161ti",
+"Strikethrough": "Crta kroz sredinu",
+"Bullet list": "Lista",
+"Header 1": "Zaglavlje 1",
+"Superscript": "Natpis",
+"Clear formatting": "Ukloni oblikovanje",
+"Font Sizes": "Font Sizes",
+"Subscript": "Potpis",
+"Header 6": "Zaglavlje 6",
+"Redo": "Vrati",
+"Paragraph": "Paragraf",
+"Ok": "Uredu",
+"Bold": "Masna",
+"Code": "CODE oznaka",
+"Italic": "Kurziv",
+"Align center": "Poravnaj po sredini",
+"Header 5": "Zaglavlje 5",
+"Decrease indent": "Smanji uvla\u010denje",
+"Header 4": "Zaglavlje 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Akcija zalijepi od sada lijepi \u010disti tekst. Sadr\u017eaj \u0107e biti zaljepljen kao \u010disti tekst sve dok ne isklju\u010dite ovu opciju.",
+"Underline": "Crta ispod",
+"Cancel": "Odustani",
+"Justify": "Obostrano poravnanje",
+"Inline": "Unutarnje",
+"Copy": "Kopiraj",
+"Align left": "Poravnaj lijevo",
+"Visual aids": "Vizualna pomo\u0107",
+"Lower Greek": "Mala gr\u010dka slova",
+"Square": "Kvadrat",
+"Default": "Zadano",
+"Lower Alpha": "Mala slova",
+"Circle": "Krug",
+"Disc": "To\u010dka",
+"Upper Alpha": "Velika slova",
+"Upper Roman": "Velika rimska slova",
+"Lower Roman": "Mala rimska slova",
+"Name": "Ime",
+"Anchor": "Sidro",
+"You have unsaved changes are you sure you want to navigate away?": "Postoje ne pohranjene izmjene, jeste li sigurni da \u017eelite oti\u0107i?",
+"Restore last draft": "Vrati posljednju skicu",
+"Special character": "Poseban znak",
+"Source code": "Izvorni kod",
+"Right to left": "S desna na lijevo",
+"Left to right": "S lijeva na desno",
+"Emoticons": "Emotikoni",
+"Robots": "Roboti pretra\u017eiva\u010da",
+"Document properties": "Svojstva dokumenta",
+"Title": "Naslov",
+"Keywords": "Klju\u010dne rije\u010di",
+"Encoding": "Kodna stranica",
+"Description": "Opis",
+"Author": "Autor",
+"Fullscreen": "Cijeli ekran",
+"Horizontal line": "Horizontalna linija",
+"Horizontal space": "Horizontalan razmak",
+"Insert\/edit image": "Umetni\/izmijeni sliku",
+"General": "Op\u0107enito",
+"Advanced": "Napredno",
+"Source": "Izvor",
+"Border": "Rub",
+"Constrain proportions": "Zadr\u017ei proporcije",
+"Vertical space": "Okomit razmak",
+"Image description": "Opis slike",
+"Style": "Stil",
+"Dimensions": "Dimenzije",
+"Insert image": "Umetni sliku",
+"Insert date\/time": "Umetni datum\/vrijeme",
+"Remove link": "Ukloni poveznicu",
+"Url": "Url",
+"Text to display": "Tekst za prikaz",
+"Anchors": "Kra\u0107e poveznice",
+"Insert link": "Umetni poveznicu",
+"New window": "Novi prozor",
+"None": "Ni\u0161ta",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?",
+"Target": "Meta",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",
+"Insert\/edit link": "Umetni\/izmijeni poveznicu",
+"Insert\/edit video": "Umetni\/izmijeni video",
+"Poster": "Poster",
+"Alternative source": "Alternativni izvor",
+"Paste your embed code below:": "Umetnite va\u0161 kod za ugradnju ispod:",
+"Insert video": "Umetni video",
+"Embed": "Ugradi",
+"Nonbreaking space": "Neprekidaju\u0107i razmak",
+"Page break": "Prijelom stranice",
+"Paste as text": "Zalijepi kao tekst",
+"Preview": "Pregled",
+"Print": "Ispis",
+"Save": "Spremi",
+"Could not find the specified string.": "Tra\u017eeni tekst nije prona\u0111en",
+"Replace": "Zamijeni",
+"Next": "Slijede\u0107i",
+"Whole words": "Cijele rije\u010di",
+"Find and replace": "Prona\u0111i i zamijeni",
+"Replace with": "Zamijeni s",
+"Find": "Tra\u017ei",
+"Replace all": "Zamijeni sve",
+"Match case": "Pazi na mala i velika slova",
+"Prev": "Prethodni",
+"Spellcheck": "Provjeri pravopis",
+"Finish": "Zavr\u0161i",
+"Ignore all": "Zanemari sve",
+"Ignore": "Zanemari",
+"Insert row before": "Umetni redak prije",
+"Rows": "Redci",
+"Height": "Visina",
+"Paste row after": "Zalijepi redak nakon",
+"Alignment": "Poravnanje",
+"Column group": "Grupirani stupci",
+"Row": "Redak",
+"Insert column before": "Umetni stupac prije",
+"Split cell": "Razdvoji polja",
+"Cell padding": "Razmak unutar polja",
+"Cell spacing": "Razmak izme\u0111u polja",
+"Row type": "Vrsta redka",
+"Insert table": "Umetni tablicu",
+"Body": "Sadr\u017eaj",
+"Caption": "Natpis",
+"Footer": "Podno\u017eje",
+"Delete row": "Izbri\u0161i redak",
+"Paste row before": "Zalijepi redak prije",
+"Scope": "Doseg",
+"Delete table": "Izbri\u0161i tablicu",
+"Header cell": "Polje zaglavlja",
+"Column": "Stupac",
+"Cell": "Polje",
+"Header": "Zaglavlje",
+"Cell type": "Vrsta polja",
+"Copy row": "Kopiraj redak",
+"Row properties": "Svojstva redka",
+"Table properties": "Svojstva tablice",
+"Row group": "Grupirani redci",
+"Right": "Desno",
+"Insert column after": "Umetni stupac nakon",
+"Cols": "Stupci",
+"Insert row after": "Umetni redak nakon",
+"Width": "\u0160irina",
+"Cell properties": "Svojstva polja",
+"Left": "Lijevo",
+"Cut row": "Izre\u017ei redak",
+"Delete column": "Izbri\u0161i stupac",
+"Center": "Sredina",
+"Merge cells": "Spoji polja",
+"Insert template": "Umetni predlo\u017eak",
+"Templates": "Predlo\u0161ci",
+"Background color": "Boja pozadine",
+"Text color": "Boja teksta",
+"Show blocks": "Prika\u017ei blokove",
+"Show invisible characters": "Prika\u017ei nevidljive znakove",
+"Words: {0}": "Rije\u010di: {0}",
+"Insert": "Umetni",
+"File": "Datoteka",
+"Edit": "Izmijeni",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Pritisni ALT-F9 za izbornik. Pritisni ALT-F10 za alatnu traku. Pritisni ALT-0 za pomo\u0107",
+"Tools": "Alati",
+"View": "Pogled",
+"Table": "Tablica",
+"Format": "Oblikuj"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/hu_HU.js b/program/js/tinymce/langs/hu_HU.js
new file mode 100644
index 000000000..743216f6a
--- /dev/null
+++ b/program/js/tinymce/langs/hu_HU.js
@@ -0,0 +1,197 @@
+tinymce.addI18n('hu_HU',{
+"Cut": "Kiv\u00e1g\u00e1s",
+"Heading 5": "Fejl\u00e9c 5",
+"Header 2": "C\u00edmsor 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "A b\u00f6ng\u00e9sz\u0151d nem t\u00e1mogatja a k\u00f6zvetlen hozz\u00e1f\u00e9r\u00e9st a v\u00e1g\u00f3laphoz. K\u00e9rlek haszn\u00e1ld a Ctrl+X\/C\/V billenty\u0171ket.",
+"Heading 4": "Fejl\u00e9c 4",
+"Div": "Div",
+"Heading 2": "Fejl\u00e9c 2",
+"Paste": "Beilleszt\u00e9s",
+"Close": "Bez\u00e1r",
+"Font Family": "Bet\u0171t\u00edpus",
+"Pre": "El\u0151",
+"Align right": "Jobbra igaz\u00edt",
+"New document": "\u00daj dokumentum",
+"Blockquote": "Id\u00e9zetblokk",
+"Numbered list": "Sz\u00e1moz\u00e1s",
+"Heading 1": "Fejl\u00e9c 1",
+"Headings": "Fejl\u00e9cek",
+"Increase indent": "Beh\u00faz\u00e1s n\u00f6vel\u00e9se",
+"Formats": "Form\u00e1tumok",
+"Headers": "C\u00edmsorok",
+"Select all": "Minden kijel\u00f6l\u00e9se",
+"Header 3": "C\u00edmsor 3",
+"Blocks": "Blokkok",
+"Undo": "Visszavon\u00e1s",
+"Strikethrough": "\u00c1th\u00fazott",
+"Bullet list": "Felsorol\u00e1s",
+"Header 1": "C\u00edmsor 1",
+"Superscript": "Fels\u0151 index",
+"Clear formatting": "Form\u00e1z\u00e1s t\u00f6rl\u00e9se",
+"Font Sizes": "Bet\u0171m\u00e9retek",
+"Subscript": "Als\u00f3 index",
+"Header 6": "C\u00edmsor 6",
+"Redo": "Ism\u00e9t",
+"Paragraph": "Bekezd\u00e9s",
+"Ok": "Rendben",
+"Bold": "F\u00e9lk\u00f6v\u00e9r",
+"Code": "K\u00f3d",
+"Italic": "D\u0151lt",
+"Align center": "K\u00f6z\u00e9pre z\u00e1r",
+"Header 5": "C\u00edmsor 5",
+"Heading 6": "Fejl\u00e9c 6",
+"Heading 3": "Fejl\u00e9c 3",
+"Decrease indent": "Beh\u00faz\u00e1s cs\u00f6kkent\u00e9se",
+"Header 4": "C\u00edmsor 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Beilleszt\u00e9s mostant\u00f3l egyszer\u0171 sz\u00f6veg m\u00f3dban. A tartalmak mostant\u00f3l egyszer\u0171 sz\u00f6vegk\u00e9nt lesznek beillesztve, am\u00edg nem kapcsolod ki ezt az opci\u00f3t.",
+"Underline": "Al\u00e1h\u00fazott",
+"Cancel": "M\u00e9gse",
+"Justify": "Sorkiz\u00e1r\u00e1s",
+"Inline": "Vonalon bel\u00fcl",
+"Copy": "M\u00e1sol\u00e1s",
+"Align left": "Balra igaz\u00edt",
+"Visual aids": "Vizu\u00e1lis seg\u00e9deszk\u00f6z\u00f6k",
+"Lower Greek": "Kis g\u00f6r\u00f6g sz\u00e1m",
+"Square": "N\u00e9gyzet",
+"Default": "Alap\u00e9rtelmezett",
+"Lower Alpha": "Kisbet\u0171",
+"Circle": "K\u00f6r",
+"Disc": "Pont",
+"Upper Alpha": "Nagybet\u0171",
+"Upper Roman": "Nagy r\u00f3mai sz\u00e1m",
+"Lower Roman": "Kis r\u00f3mai sz\u00e1m",
+"Name": "N\u00e9v",
+"Anchor": "Horgony",
+"You have unsaved changes are you sure you want to navigate away?": "Nem mentett m\u00f3dos\u00edt\u00e1said vannak, biztos hogy el akarsz navig\u00e1lni?",
+"Restore last draft": "Utols\u00f3 piszkozat vissza\u00e1ll\u00edt\u00e1sa",
+"Special character": "Speci\u00e1lis karakter",
+"Source code": "Forr\u00e1sk\u00f3d",
+"Color": "Sz\u00edn",
+"Right to left": "Jobbr\u00f3l balra",
+"Left to right": "Balr\u00f3l jobbra",
+"Emoticons": "Vigyorok",
+"Robots": "Robotok",
+"Document properties": "Dokumentum tulajdons\u00e1gai",
+"Title": "C\u00edm",
+"Keywords": "Kulcsszavak",
+"Encoding": "K\u00f3dol\u00e1s",
+"Description": "Le\u00edr\u00e1s",
+"Author": "Szerz\u0151",
+"Fullscreen": "Teljes k\u00e9perny\u0151",
+"Horizontal line": "V\u00edzszintes vonal",
+"Horizontal space": "Horizont\u00e1lis hely",
+"Insert\/edit image": "K\u00e9p beilleszt\u00e9se\/szerkeszt\u00e9se",
+"General": "\u00c1ltal\u00e1nos",
+"Advanced": "Halad\u00f3",
+"Source": "Forr\u00e1s",
+"Border": "Szeg\u00e9ly",
+"Constrain proportions": "M\u00e9retar\u00e1ny",
+"Vertical space": "Vertik\u00e1lis hely",
+"Image description": "K\u00e9p le\u00edr\u00e1sa",
+"Style": "St\u00edlus",
+"Dimensions": "M\u00e9retek",
+"Insert image": "K\u00e9p besz\u00far\u00e1sa",
+"Insert date\/time": "D\u00e1tum\/id\u0151 beilleszt\u00e9se",
+"Remove link": "Hivatkoz\u00e1s t\u00f6rl\u00e9se",
+"Url": "Url",
+"Text to display": "Megjelen\u0151 sz\u00f6veg",
+"Anchors": "Horgonyok",
+"Insert link": "Link beilleszt\u00e9se",
+"New window": "\u00daj ablak",
+"None": "Nincs",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Az URL amit megadt\u00e1l k\u00fcls\u0151 c\u00edmnek t\u0171nik. Szeretn\u00e9d hozz\u00e1adni a sz\u00fcks\u00e9ges http:\/\/ el\u0151tagot?",
+"Target": "C\u00e9l",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Az URL amit megadt\u00e1l email c\u00edmnek t\u0171nik. Szeretn\u00e9d hozz\u00e1adni a sz\u00fcks\u00e9ges mailto: el\u0151tagot?",
+"Insert\/edit link": "Link beilleszt\u00e9se\/szerkeszt\u00e9se",
+"Insert\/edit video": "Vide\u00f3 beilleszt\u00e9se\/szerkeszt\u00e9se",
+"Poster": "El\u0151n\u00e9zeti k\u00e9p",
+"Alternative source": "Alternat\u00edv forr\u00e1s",
+"Paste your embed code below:": "Illeszd be a be\u00e1gyaz\u00f3 k\u00f3dot alulra:",
+"Insert video": "Vide\u00f3 beilleszt\u00e9se",
+"Embed": "Be\u00e1gyaz\u00e1s",
+"Nonbreaking space": "Nem t\u00f6rhet\u0151 hely",
+"Page break": "Oldalt\u00f6r\u00e9s",
+"Paste as text": "Beilleszt\u00e9s sz\u00f6vegk\u00e9nt",
+"Preview": "El\u0151n\u00e9zet",
+"Print": "Nyomtat\u00e1s",
+"Save": "Ment\u00e9s",
+"Could not find the specified string.": "A be\u00edrt kifejez\u00e9s nem tal\u00e1lhat\u00f3.",
+"Replace": "Csere",
+"Next": "K\u00f6vetkez\u0151",
+"Whole words": "Csak ha ez a teljes sz\u00f3",
+"Find and replace": "Keres\u00e9s \u00e9s csere",
+"Replace with": "Csere erre",
+"Find": "Keres\u00e9s",
+"Replace all": "Az \u00f6sszes cser\u00e9je",
+"Match case": "Kis \u00e9s nagybet\u0171k megk\u00fcl\u00f6nb\u00f6ztet\u00e9se",
+"Prev": "El\u0151z\u0151",
+"Spellcheck": "Helyes\u00edr\u00e1s ellen\u0151rz\u00e9s",
+"Finish": "Befejez\u00e9s",
+"Ignore all": "Mindent figyelmen k\u00edv\u00fcl hagy",
+"Ignore": "Figyelmen k\u00edv\u00fcl hagy",
+"Add to Dictionary": "Sz\u00f3t\u00e1rhoz ad",
+"Insert row before": "Sor besz\u00far\u00e1sa el\u00e9",
+"Rows": "Sorok",
+"Height": "Magass\u00e1g",
+"Paste row after": "Sor beilleszt\u00e9se m\u00f6g\u00e9",
+"Alignment": "Igaz\u00edt\u00e1s",
+"Border color": "Szeg\u00e9ly sz\u00edne",
+"Column group": "Oszlop csoport",
+"Row": "Sor",
+"Insert column before": "Oszlop besz\u00far\u00e1sa el\u00e9",
+"Split cell": "Cell\u00e1k sz\u00e9tv\u00e1laszt\u00e1sa",
+"Cell padding": "Cella m\u00e9rete",
+"Cell spacing": "Cell\u00e1k t\u00e1vols\u00e1ga",
+"Row type": "Sor t\u00edpus",
+"Insert table": "T\u00e1bl\u00e1zat beilleszt\u00e9se",
+"Body": "Sz\u00f6vegt\u00f6rzs",
+"Caption": "Felirat",
+"Footer": "L\u00e1bl\u00e9c",
+"Delete row": "Sor t\u00f6rl\u00e9se",
+"Paste row before": "Sor beilleszt\u00e9se el\u00e9",
+"Scope": "Hat\u00f3k\u00f6r",
+"Delete table": "T\u00e1bl\u00e1zat t\u00f6rl\u00e9se",
+"H Align": "V\u00edzszintes igaz\u00edt\u00e1s",
+"Top": "Fel\u00fcl",
+"Header cell": "Fejl\u00e9c cella",
+"Column": "Oszlop",
+"Row group": "Sor csoport",
+"Cell": "Cella",
+"Middle": "K\u00f6z\u00e9pen",
+"Cell type": "Cella t\u00edpusa",
+"Copy row": "Sor m\u00e1sol\u00e1sa",
+"Row properties": "Sor tulajdons\u00e1gai",
+"Table properties": "T\u00e1bl\u00e1zat tulajdons\u00e1gok",
+"Bottom": "Alul",
+"V Align": "F\u00fcgg\u0151leges igaz\u00edt\u00e1s",
+"Header": "Fejl\u00e9c",
+"Right": "Jobb",
+"Insert column after": "Oszlop besz\u00far\u00e1sa m\u00f6g\u00e9",
+"Cols": "Oszlopok",
+"Insert row after": "Sor besz\u00far\u00e1sa m\u00f6g\u00e9",
+"Width": "Sz\u00e9less\u00e9g",
+"Cell properties": "Cella tulajdons\u00e1gok",
+"Left": "Bal",
+"Cut row": "Sor kiv\u00e1g\u00e1sa",
+"Delete column": "Oszlop t\u00f6rl\u00e9se",
+"Center": "K\u00f6z\u00e9p",
+"Merge cells": "Cell\u00e1k egyes\u00edt\u00e9se",
+"Insert template": "Sablon beilleszt\u00e9se",
+"Templates": "Sablonok",
+"Background color": "H\u00e1tt\u00e9r sz\u00edn",
+"Custom...": "Egy\u00e9ni...",
+"Custom color": "Egy\u00e9ni sz\u00edn",
+"No color": "Nincs sz\u00edn",
+"Text color": "Sz\u00f6veg sz\u00edne",
+"Show blocks": "Blokkok mutat\u00e1sa",
+"Show invisible characters": "L\u00e1thatatlan karakterek mutat\u00e1sa",
+"Words: {0}": "Szavak: {0}",
+"Insert": "Beilleszt\u00e9s",
+"File": "F\u00e1jl",
+"Edit": "Szerkeszt\u00e9s",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text ter\u00fclet. Nyomj ALT-F9-et a men\u00fch\u00f6z. Nyomj ALT-F10-et az eszk\u00f6zt\u00e1rhoz. Nyomj ALT-0-t a s\u00fag\u00f3hoz",
+"Tools": "Eszk\u00f6z\u00f6k",
+"View": "N\u00e9zet",
+"Table": "T\u00e1bl\u00e1zat",
+"Format": "Form\u00e1tum"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/hy.js b/program/js/tinymce/langs/hy.js
new file mode 100644
index 000000000..6916a02d9
--- /dev/null
+++ b/program/js/tinymce/langs/hy.js
@@ -0,0 +1,179 @@
+tinymce.addI18n('hy',{
+"Cut": "\u053f\u057f\u0580\u0565\u056c",
+"Header 2": "\u054e\u0565\u0580\u0576\u0561\u0563\u056b\u0580 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0541\u0565\u0580 \u0562\u0580\u0561\u0578\u0582\u0566\u0565\u0580\u0568 \u0579\u056b \u0561\u057a\u0561\u0570\u0578\u057e\u0578\u0582\u0574 \u0561\u0576\u0574\u056b\u057b\u0561\u056f\u0561\u0576 \u0565\u056c\u0584 \u0583\u0578\u056d\u0561\u0576\u0561\u056f\u0574\u0561\u0576 \u0562\u0578\u0582\u0586\u0565\u0580\u056b\u0576\u0589 \u053d\u0576\u0564\u0580\u0578\u0582\u0574 \u0565\u0576\u0584 \u0585\u0563\u057f\u057e\u0565\u056c Ctrl+X\/C\/V \u057d\u057f\u0565\u0572\u0576\u0565\u0580\u056b\u0581\u0589",
+"Div": "Div",
+"Paste": "\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c",
+"Close": "\u0553\u0561\u056f\u0565\u056c",
+"Font Family": "\u054f\u0561\u057c\u0561\u057f\u0565\u057d\u0561\u056f",
+"Pre": "Pre",
+"Align right": "\u0531\u057b\u0561\u056f\u0578\u0572\u0574\u0575\u0561 \u0570\u0561\u057e\u0561\u057d\u0561\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576",
+"New document": "\u0546\u0578\u0580 \u0583\u0561\u057d\u057f\u0561\u0569\u0578\u0582\u0572\u0569",
+"Blockquote": "\u0544\u0565\u057b\u0562\u0565\u0580\u0578\u0582\u0574",
+"Numbered list": "\u0540\u0561\u0574\u0561\u0580\u0561\u056f\u0561\u056c\u057e\u0561\u056e \u0581\u0578\u0582\u0581\u0561\u056f",
+"Increase indent": "\u0544\u0565\u056e\u0561\u0581\u0576\u0565\u056c \u0571\u0561\u056d \u0565\u0566\u0580\u056b \u0570\u0565\u057c\u0561\u057e\u0578\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576\u0568",
+"Formats": "\u0556\u0578\u0580\u0574\u0561\u057f\u0576\u0565\u0580",
+"Headers": "\u054e\u0565\u0580\u0576\u0561\u0563\u0580\u0565\u0580",
+"Select all": "\u0546\u0577\u0565\u056c \u0562\u0578\u056c\u0578\u0580\u0568",
+"Header 3": "\u054e\u0565\u0580\u0576\u0561\u0563\u056b\u0580 3",
+"Blocks": "\u0532\u056c\u0578\u056f\u0576\u0565\u0580",
+"Undo": "\u0546\u0561\u056d\u0578\u0580\u0564 \u0584\u0561\u0575\u056c",
+"Strikethrough": "\u0531\u0580\u057f\u0561\u0563\u056e\u057e\u0561\u056e",
+"Bullet list": "\u0549\u0570\u0561\u0574\u0561\u0580\u0561\u056f\u0561\u056c\u057e\u0561\u056e \u0581\u0578\u0582\u0581\u0561\u056f",
+"Header 1": "\u054e\u0565\u0580\u0576\u0561\u0563\u056b\u0580 1",
+"Superscript": "\u054e\u0565\u0580\u056b\u0576 \u056b\u0576\u0564\u0565\u0584\u057d",
+"Clear formatting": "\u0544\u0561\u0584\u0580\u0565\u056c \u0586\u0578\u0580\u0574\u0561\u057f\u0561\u057e\u0578\u0580\u0578\u0582\u0574\u0568",
+"Font Sizes": "\u054f\u0561\u057c\u056b \u0579\u0561\u0583",
+"Subscript": "\u054d\u057f\u0578\u0580\u056b\u0576 \u056b\u0576\u0564\u0565\u0584\u057d",
+"Header 6": "\u054e\u0565\u0580\u0576\u0561\u0563\u056b\u0580 6",
+"Redo": "\u0540\u0561\u057b\u0578\u0580\u0564 \u0584\u0561\u0575\u056c",
+"Paragraph": "\u054a\u0561\u0580\u0562\u0565\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576",
+"Ok": "Ok",
+"Bold": "\u0539\u0561\u057e\u0561\u057f\u0561\u057c",
+"Code": "\u053f\u0578\u0564",
+"Italic": "\u0547\u0565\u0572\u0561\u057f\u0561\u057c",
+"Align center": "\u053f\u0565\u0576\u057f\u0580\u0578\u0576\u0561\u056f\u0561\u0576 \u0570\u0561\u057e\u0561\u057d\u0561\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576",
+"Header 5": "\u054e\u0565\u0580\u0576\u0561\u0563\u056b\u0580 5",
+"Decrease indent": "\u0553\u0578\u0584\u0580\u0561\u0581\u0576\u0565\u056c \u0571\u0561\u056d \u0565\u0566\u0580\u056b \u0570\u0565\u057c\u0561\u057e\u0578\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576\u0568",
+"Header 4": "\u054e\u0565\u0580\u0576\u0561\u0563\u056b\u0580 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u054f\u0565\u0584\u057d\u057f\u056b \u057f\u0565\u0572\u0561\u0564\u0580\u0578\u0582\u0574\u0568 \u056f\u0561\u057f\u0561\u0580\u057e\u0565\u056c\u0578\u0582 \u0567 \u0570\u0561\u057d\u0561\u0580\u0561\u056f \u057f\u0565\u0584\u057d\u057f\u056b \u057c\u0565\u056a\u056b\u0574\u0578\u057e\u0589 \u054a\u0561\u057f\u0573\u0565\u0576\u057e\u0561\u056e \u057f\u0565\u0584\u057d\u057f\u0568 \u057f\u0565\u0572\u0561\u0564\u0580\u057e\u0565\u056c\u0578\u0582 \u0567 \u0570\u0561\u057d\u0561\u0580\u0561\u056f \u057f\u0565\u0584\u057d\u057f\u056b \u0571\u0587\u0578\u057e \u0574\u056b\u0576\u0579\u0587 \u0561\u0575\u057d \u057c\u0565\u056a\u056b\u0574\u056b \u0561\u0576\u057b\u0561\u057f\u0578\u0582\u0574\u0568\u0589",
+"Underline": "\u0538\u0576\u0564\u0563\u056e\u057e\u0561\u056e",
+"Cancel": "\u0553\u0561\u056f\u0565\u056c",
+"Justify": "\u0535\u0580\u056f\u056f\u0578\u0572\u0574\u0561\u0576\u056b \u0570\u0561\u057e\u0561\u057d\u0561\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576",
+"Inline": "\u054f\u0578\u0572\u0561\u0575\u056b\u0576",
+"Copy": "\u054a\u0561\u057f\u0573\u0565\u0576\u0565\u056c",
+"Align left": "\u0541\u0561\u056d\u0561\u056f\u0578\u0572\u0574\u0575\u0561 \u0570\u0561\u057e\u0561\u057d\u0561\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576",
+"Visual aids": "\u0551\u0578\u0582\u0581\u0561\u0564\u0580\u0565\u056c \u056f\u0578\u0576\u057f\u0578\u0582\u0580\u0576\u0565\u0580\u0568",
+"Lower Greek": "\u0553\u0578\u0584\u0580\u0561\u057f\u0561\u057c \u0570\u0578\u0582\u0576\u0561\u056f\u0561\u0576 \u057f\u0561\u057c\u0565\u0580",
+"Square": "\u0554\u0561\u057c\u0561\u056f\u0578\u0582\u057d\u056b",
+"Default": "\u054d\u057f\u0561\u0576\u0564\u0561\u0580\u057f",
+"Lower Alpha": "\u0553\u0578\u0584\u0580\u0561\u057f\u0561\u057c \u056c\u0561\u057f\u056b\u0576\u0561\u056f\u0561\u0576 \u057f\u0561\u057c\u0565\u0580",
+"Circle": "\u0547\u0580\u057b\u0561\u0576",
+"Disc": "\u053f\u056c\u0578\u0580",
+"Upper Alpha": "\u0544\u0565\u056e\u0561\u057f\u0561\u057c \u056c\u0561\u057f\u056b\u0576\u0565\u0580\u0565\u0576 \u057f\u0561\u057c\u0565\u0580",
+"Upper Roman": "\u0544\u0565\u056e\u0561\u057f\u0561\u057c \u0570\u057c\u0578\u0574\u0565\u0561\u056f\u0561\u0576 \u0569\u057e\u0565\u0580",
+"Lower Roman": "\u0553\u0578\u0584\u0580\u0561\u057f\u0561\u057c \u0570\u057c\u0578\u0574\u0565\u0561\u056f\u0561\u0576 \u0569\u057e\u0565\u0580",
+"Name": "\u0531\u0576\u0578\u0582\u0576",
+"Anchor": "\u053d\u0561\u0580\u056b\u057d\u056d",
+"You have unsaved changes are you sure you want to navigate away?": "\u053f\u0561\u0576 \u0579\u057a\u0561\u0570\u057a\u0561\u0576\u057e\u0561\u056e \u0583\u0578\u0583\u0578\u056d\u0578\u0582\u0569\u0575\u0578\u0582\u0576\u0576\u0565\u0580\u0589 \u0534\u0578\u0582\u0584 \u056b\u0580\u0578\u055e\u0584 \u0578\u0582\u0566\u0578\u0582\u0574 \u0565\u0584 \u0564\u0578\u0582\u0580\u057d \u0563\u0561\u056c",
+"Restore last draft": "\u054e\u0565\u0580\u0561\u056f\u0561\u0576\u0563\u0576\u0565\u056c \u057e\u0565\u0580\u057b\u056b\u0576 \u0576\u0561\u056d\u0561\u0563\u056b\u056e\u0568",
+"Special character": "\u0540\u0561\u057f\u0578\u0582\u056f \u057d\u056b\u0574\u057e\u0578\u056c\u0576\u0565\u0580",
+"Source code": "\u053e\u0580\u0561\u0563\u0580\u0561\u0575\u056b\u0576 \u056f\u0578\u0564",
+"Right to left": "\u0531\u057b\u056b\u0581 \u0571\u0561\u056d",
+"Left to right": "\u0541\u0561\u056d\u056b\u0581 \u0561\u057b",
+"Emoticons": "\u054d\u0574\u0561\u0575\u056c\u056b\u056f\u0576\u0565\u0580",
+"Robots": "Robots",
+"Document properties": "\u0553\u0561\u057d\u057f\u0561\u0569\u0572\u0569\u056b \u0570\u0561\u057f\u056f\u0578\u0582\u0569\u0575\u0578\u0582\u0576\u0576\u0565\u0580\u0568",
+"Title": "\u054e\u0565\u0580\u0576\u0561\u0563\u056b\u0580",
+"Keywords": "\u0548\u0580\u0578\u0576\u0578\u0572\u0561\u056f\u0561\u0576 \u0562\u0561\u057c\u0565\u0580",
+"Encoding": "\u053f\u0578\u0564\u0561\u057e\u0578\u0580\u0578\u0582\u0574",
+"Description": "\u0546\u056f\u0561\u0580\u0561\u0563\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576",
+"Author": "\u0540\u0565\u0572\u056b\u0576\u0561\u056f",
+"Fullscreen": "\u0531\u0574\u0562\u0578\u0572\u057b \u0567\u056f\u0580\u0561\u0576\u0578\u057e",
+"Horizontal line": "\u0540\u0578\u0580\u056b\u0566\u0578\u0576\u0561\u056f\u0561\u0576 \u0563\u056b\u056e",
+"Horizontal space": "\u0540\u0578\u0580\u056b\u0566\u0578\u0576\u0561\u056f\u0561\u0576 \u057f\u0561\u0580\u0561\u056e\u0578\u0582\u0569\u0575\u0578\u0582\u0576",
+"Insert\/edit image": "\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c\/\u056d\u0574\u0562\u0561\u0563\u0580\u0565\u056c \u0576\u056f\u0561\u0580",
+"General": "\u0533\u056c\u056d\u0561\u057e\u0578\u0580",
+"Advanced": "\u053c\u0580\u0561\u0581\u0578\u0582\u0581\u056b\u0579",
+"Source": "\u0546\u056f\u0561\u0580\u056b \u0570\u0561\u057d\u0581\u0565",
+"Border": "\u0535\u0566\u0580\u0561\u0563\u056b\u056e",
+"Constrain proportions": "\u054a\u0561\u0570\u057a\u0561\u0576\u0565\u056c \u0574\u0561\u0577\u057f\u0561\u0562\u0561\u057e\u0578\u0580\u0578\u0582\u0574\u0568",
+"Vertical space": "\u0548\u0582\u0572\u0572\u0561\u0570\u0561\u0575\u0561\u0581 \u057f\u0561\u0580\u0561\u056e\u0578\u0582\u0569\u0575\u0578\u0582\u0576",
+"Image description": "\u0546\u056f\u0561\u0580\u0561\u0563\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576",
+"Style": "\u0548\u0573",
+"Dimensions": "\u0549\u0561\u0583\u0565\u0580",
+"Insert image": "\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c \u0576\u056f\u0561\u0580",
+"Insert date\/time": "\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c \u0561\u0574\u057d\u0561\u0569\u056b\u057e\/\u056a\u0561\u0574\u0561\u0576\u0561\u056f",
+"Remove link": "\u054b\u0576\u057b\u0565\u056c \u0570\u0572\u0578\u0582\u0574\u0568",
+"Url": "Url",
+"Text to display": "\u0540\u0572\u0574\u0561\u0576 \u057f\u0565\u0584\u057d\u057f",
+"Anchors": "\u053d\u0561\u0580\u056b\u057d\u056d\u0576\u0565\u0580",
+"Insert link": "\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c \u0570\u0572\u0578\u0582\u0574",
+"New window": "\u0546\u0578\u0580 \u057a\u0561\u057f\u0578\u0582\u0570\u0561\u0576",
+"None": "\u0548\u0579\u056b\u0576\u0579",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?",
+"Target": "\u0539\u056b\u0580\u0561\u056d",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",
+"Insert\/edit link": "\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c\/\u056d\u0574\u0562\u0561\u0563\u0580\u0565\u056c \u0570\u0572\u0578\u0582\u0574",
+"Insert\/edit video": "\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c\/\u056d\u0574\u0562\u0561\u0563\u0580\u0565\u056c \u057e\u056b\u0564\u0565\u0578",
+"Poster": "\u054a\u0561\u057d\u057f\u0561\u057c",
+"Alternative source": "\u0531\u0575\u056c\u0568\u0576\u057f\u0580\u0561\u0576\u0584\u0561\u0575\u056b\u0576 \u056f\u0578\u0564",
+"Paste your embed code below:": "\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u0584 \u0541\u0565\u0580 \u056f\u0578\u0564\u0568 \u0561\u0575\u057d\u057f\u0565\u0572\u055d",
+"Insert video": "\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c \u057e\u056b\u0564\u0565\u0578",
+"Embed": "\u054f\u0565\u0572\u0561\u0564\u0580\u057e\u0578\u0572 \u056f\u0578\u0564",
+"Nonbreaking space": "\u0531\u057c\u0561\u0576\u0581 \u0576\u0578\u0580 \u057f\u0578\u0572\u056b \u0562\u0561\u0581\u0561\u057f",
+"Page break": "\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c \u0567\u057b\u056b \u0561\u0576\u057b\u0561\u057f\u056b\u0579",
+"Paste as text": "\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c \u0578\u0580\u057a\u0565\u057d \u057f\u0565\u0584\u057d\u057f",
+"Preview": "\u0546\u0561\u056d\u0576\u0561\u056f\u0561\u0576 \u0564\u056b\u057f\u0578\u0582\u0574",
+"Print": "\u054f\u057a\u0565\u056c",
+"Save": "\u054a\u0561\u0570\u057a\u0561\u0576\u0565\u056c",
+"Could not find the specified string.": "\u0546\u0577\u057e\u0561\u056e \u057f\u0565\u0584\u057d\u057f\u0568 \u0579\u056b \u0563\u057f\u0576\u057e\u0565\u056c",
+"Replace": "\u0553\u0578\u056d\u0561\u0580\u056b\u0576\u0565\u056c",
+"Next": "\u0540\u0561\u057b\u0578\u0580\u0564",
+"Whole words": "\u0532\u0561\u057c\u0565\u0580\u0568 \u0561\u0574\u0562\u0578\u0572\u057b\u0578\u0582\u0569\u0575\u0561\u0574\u0562",
+"Find and replace": "\u0553\u0576\u057f\u0580\u0565\u056c \u0587 \u0583\u0578\u056d\u0561\u0580\u056b\u0576\u0565\u056c",
+"Replace with": "\u0553\u0578\u056d\u0561\u0580\u056b\u0576\u0565\u056c",
+"Find": "\u0553\u0576\u057f\u0580\u0565\u056c",
+"Replace all": "\u0553\u0578\u056d\u0561\u0580\u056b\u0576\u0565\u056c \u0562\u0578\u056c\u0578\u0580\u0568",
+"Match case": "\u0540\u0561\u0577\u057e\u056b \u0561\u057c\u0576\u0565\u056c \u057c\u0565\u0563\u056b\u057d\u057f\u0578\u0580\u0568",
+"Prev": "\u0546\u0561\u056d\u0578\u0580\u0564",
+"Spellcheck": "\u0548\u0582\u0572\u0572\u0561\u0563\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576",
+"Finish": "\u0531\u057e\u0561\u0580\u057f\u0565\u056c",
+"Ignore all": "\u0531\u0576\u057f\u0565\u057d\u0565\u056c \u0562\u0578\u056c\u0578\u0580\u0568",
+"Ignore": "\u0531\u0576\u057f\u0565\u057d\u0565\u056c",
+"Insert row before": "\u0531\u057e\u0565\u056c\u0561\u0581\u0576\u0565\u056c \u057f\u0578\u0572 \u057e\u0565\u0580\u0587\u0578\u0582\u0574",
+"Rows": "\u054f\u0578\u0572\u0565\u0580",
+"Height": "\u0532\u0561\u0580\u0571\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576",
+"Paste row after": "\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c \u057f\u0578\u0572\u0568 \u0576\u0565\u0580\u0584\u0587\u0578\u0582\u0574",
+"Alignment": "\u0540\u0561\u057e\u0561\u057d\u0561\u0580\u0565\u0581\u0578\u0582\u0574",
+"Column group": "\u054d\u0575\u0578\u0582\u0576\u0575\u0561\u056f\u0576\u0565\u0580\u056b \u056d\u0578\u0582\u0574\u0562",
+"Row": "\u054f\u0578\u0572",
+"Insert column before": "\u0531\u057e\u0565\u056c\u0561\u0581\u0576\u0565\u056c \u0576\u0578\u0580 \u057d\u0575\u0578\u0582\u0576 \u0571\u0561\u056d\u056b\u0581",
+"Split cell": "\u0532\u0561\u056a\u0561\u0576\u0565\u056c \u057e\u0561\u0576\u0564\u0561\u056f\u0568",
+"Cell padding": "\u0546\u0565\u0580\u0584\u056b\u0576 \u057f\u0561\u0580\u0561\u056e\u0578\u0582\u0569\u0575\u0578\u0582\u0576",
+"Cell spacing": "\u0531\u0580\u057f\u0561\u0584\u056b\u0576 \u057f\u0561\u0580\u0561\u056e\u0578\u0582\u0569\u0575\u0578\u0582\u0576",
+"Row type": "\u054f\u0578\u0572\u056b \u057f\u056b\u057a",
+"Insert table": "\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c \u0561\u0572\u0575\u0578\u0582\u057d\u0561\u056f",
+"Body": "\u054a\u0561\u0580\u0578\u0582\u0576\u0561\u056f\u0578\u0582\u0569\u0575\u0578\u0582\u0576",
+"Caption": "\u054e\u0565\u0580\u0576\u0561\u0563\u056b\u0580",
+"Footer": "\u0531\u0572\u0575\u0578\u0582\u057d\u0561\u056f\u056b \u057d\u057f\u0578\u0580\u056b\u0576 \u0570\u0561\u057f\u057e\u0561\u056e",
+"Delete row": "\u054b\u0576\u057b\u0565\u056c \u057f\u0578\u0572\u0568",
+"Paste row before": "\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c \u057f\u0578\u0572\u0568 \u057e\u0565\u0580\u0587\u0578\u0582\u0574",
+"Scope": "Scope",
+"Delete table": "\u054b\u0576\u057b\u0565\u056c \u0561\u0572\u0575\u0578\u0582\u057d\u0561\u056f\u0568",
+"Header cell": "\u054e\u0565\u0580\u0576\u0561\u0563\u0580\u056b \u057e\u0561\u0576\u0564\u0561\u056f\u0576\u0565\u0580",
+"Column": "\u054d\u0575\u0578\u0582\u0576\u0575\u0561\u056f",
+"Cell": "\u054e\u0561\u0576\u0564\u0561\u056f",
+"Header": "\u054e\u0565\u0580\u0576\u0561\u0563\u056b\u0580",
+"Cell type": "\u054e\u0561\u0576\u0564\u0561\u056f\u056b \u057f\u056b\u057a",
+"Copy row": "\u054a\u0561\u057f\u0573\u0565\u0576\u0565\u056c \u057f\u0578\u0572\u0568",
+"Row properties": "\u054f\u0578\u0572\u056b \u0570\u0561\u057f\u056f\u0578\u0582\u0569\u0575\u0578\u0582\u0576\u0576\u0565\u0580\u0568",
+"Table properties": "\u0531\u0572\u0575\u0578\u0582\u057d\u0561\u056f\u056b \u0570\u0561\u057f\u056f\u0578\u0582\u0569\u0575\u0578\u0582\u0576\u0576\u0565\u0580\u0568",
+"Row group": "\u054f\u0578\u0572\u0565\u0580\u056b \u056d\u0578\u0582\u0574\u0562",
+"Right": "\u0531\u057b",
+"Insert column after": "\u0531\u057e\u0565\u056c\u0561\u0581\u0576\u0565\u056c \u0576\u0578\u0580 \u057d\u0575\u0578\u0582\u0576 \u0561\u057b\u056b\u0581",
+"Cols": "\u054d\u0575\u0578\u0582\u0576\u0575\u0561\u056f\u0576\u0565\u0580",
+"Insert row after": "\u0531\u057e\u0565\u056c\u0561\u0581\u0576\u0565\u056c \u057f\u0578\u0572 \u0576\u0565\u0580\u0584\u0587\u0578\u0582\u0574",
+"Width": "\u053c\u0561\u0575\u0576\u0578\u0582\u0569\u0575\u0578\u0582\u0576",
+"Cell properties": "\u054e\u0561\u0576\u0564\u0561\u056f\u056b \u0570\u0561\u057f\u056f\u0578\u0582\u0569\u0575\u0578\u0582\u0576\u0576\u0565\u0580\u0568",
+"Left": "\u0541\u0561\u056d",
+"Cut row": "\u053f\u057f\u0580\u0565\u056c \u057f\u0578\u0572\u0568",
+"Delete column": "\u0541\u0576\u057b\u0565\u056c \u057d\u0575\u0578\u0582\u0576\u0568",
+"Center": "\u053f\u0565\u0576\u057f\u0580\u0578\u0576",
+"Merge cells": "\u0544\u056b\u0561\u057e\u0578\u0580\u0565\u056c \u057e\u0561\u0576\u0564\u0561\u056f\u0576\u0565\u0580\u0568",
+"Insert template": "\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c \u0571\u0587\u0561\u0576\u0574\u0578\u0582\u0577",
+"Templates": "\u0541\u0587\u0561\u0576\u0574\u0578\u0582\u0577\u0576\u0565\u0580",
+"Background color": "\u0556\u0578\u0576\u056b \u0563\u0578\u0582\u0575\u0576",
+"Text color": "\u054f\u0561\u057c\u056b \u0563\u0578\u0582\u0575\u0576",
+"Show blocks": "\u0551\u0578\u0582\u0581\u0561\u0564\u0580\u0565\u056c \u0562\u056c\u0578\u056f\u0576\u0565\u0580\u0568",
+"Show invisible characters": "\u0551\u0578\u0582\u0575\u0581 \u057f\u0561\u056c \u0561\u0576\u057f\u0565\u057d\u0561\u0576\u0565\u056c\u056b \u057d\u056b\u0574\u057e\u0578\u056c\u0576\u0565\u0580\u0568",
+"Words: {0}": "\u0532\u0561\u057c\u0565\u0580\u056b \u0584\u0561\u0576\u0561\u056f: {0}",
+"Insert": "\u054f\u0565\u0572\u0561\u0564\u0580\u0565\u056c",
+"File": "\u0556\u0561\u0575\u056c",
+"Edit": "\u053d\u0574\u0562\u0561\u0563\u0580\u0565\u056c",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u054f\u0565\u0584\u057d\u057f\u0561\u0575\u056b\u0576 \u0564\u0561\u0577\u057f\u0589 \u054d\u0565\u0572\u0574\u0565\u0584 ALT-F9 \u0574\u0565\u0576\u0575\u0578\u0582\u056b \u0570\u0561\u0574\u0561\u0580\u0589 ALT-F10 \u0563\u0578\u0580\u056e\u056b\u0584\u0576\u0565\u0580\u056b \u057e\u0561\u0570\u0561\u0576\u0561\u056f\u0589 \u054d\u0565\u0572\u0574\u0565\u0584 ALT-0 \u0585\u0563\u0576\u0578\u0582\u0569\u0575\u0561\u0576 \u0570\u0561\u0574\u0561\u0580",
+"Tools": "\u0533\u0578\u0580\u056e\u056b\u0584\u0576\u0565\u0580",
+"View": "\u054f\u0565\u057d\u0584",
+"Table": "\u0531\u0572\u0575\u0578\u0582\u057d\u0561\u056f",
+"Format": "\u0556\u0578\u0580\u0574\u0561\u057f"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/id.js b/program/js/tinymce/langs/id.js
new file mode 100644
index 000000000..61fb09456
--- /dev/null
+++ b/program/js/tinymce/langs/id.js
@@ -0,0 +1,186 @@
+tinymce.addI18n('id',{
+"Cut": "Penggal",
+"Heading 5": "Judul 5",
+"Header 2": "Header 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Browser anda tidak mendukung akses langsung ke clipboard. Silahkan gunakan Ctrl+X\/C\/V dari keyboard.",
+"Heading 4": "Judul 4",
+"Div": "Div",
+"Heading 2": "Judul 2",
+"Paste": "Tempel",
+"Close": "Tutup",
+"Font Family": "Jenis Huruf",
+"Pre": "Pre",
+"Align right": "Rata kanan",
+"New document": "Dokumen baru",
+"Blockquote": "Kutipan",
+"Numbered list": "list nomor",
+"Heading 1": "Judul 1",
+"Headings": "Judul",
+"Increase indent": "Tambah inden",
+"Formats": "Format",
+"Headers": "Header",
+"Select all": "Pilih semua",
+"Header 3": "Header 3",
+"Blocks": "Blok",
+"Undo": "Batal",
+"Strikethrough": "Coret",
+"Bullet list": "list simbol",
+"Header 1": "Header 1",
+"Superscript": "Superskrip",
+"Clear formatting": "Hapus format",
+"Font Sizes": "Ukuran Huruf",
+"Subscript": "Subskrip",
+"Header 6": "Header 6",
+"Redo": "Ulang",
+"Paragraph": "Paragraf",
+"Ok": "Ok",
+"Bold": "Tebal",
+"Code": "Code",
+"Italic": "Miring",
+"Align center": "Rate tengah",
+"Header 5": "Header 5",
+"Heading 6": "Judul 6",
+"Heading 3": "Judul 3",
+"Decrease indent": "Turunkan inden",
+"Header 4": "Header 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.",
+"Underline": "Garis bawah",
+"Cancel": "Batal",
+"Justify": "Justifi",
+"Inline": "Inline",
+"Copy": "Salin",
+"Align left": "Rate kiri",
+"Visual aids": "Alat bantu visual",
+"Lower Greek": "Lower Yunani",
+"Square": "Kotak",
+"Default": "Bawaan",
+"Lower Alpha": "Lower Alpha",
+"Circle": "Lingkaran",
+"Disc": "Cakram",
+"Upper Alpha": "Upper Alpha",
+"Upper Roman": "Upper Roman",
+"Lower Roman": "Lower Roman",
+"Name": "Nama",
+"Anchor": "Anjar",
+"You have unsaved changes are you sure you want to navigate away?": "Anda memiliki perubahan yang belum disimpan, yakin ingin beralih ?",
+"Restore last draft": "Muat kembali draft sebelumnya",
+"Special character": "Spesial karakter",
+"Source code": "Kode sumber",
+"Right to left": "Kanan ke kiri",
+"Left to right": "Kiri ke kanan",
+"Emoticons": "Emotikon",
+"Robots": "Robot",
+"Document properties": "Properti dokumwn",
+"Title": "Judul",
+"Keywords": "Kata kunci",
+"Encoding": "Enkoding",
+"Description": "Description",
+"Author": "Penulis",
+"Fullscreen": "Layar penuh",
+"Horizontal line": "Horizontal line",
+"Horizontal space": "Horizontal space",
+"Insert\/edit image": "Insert\/edit image",
+"General": "General",
+"Advanced": "Advanced",
+"Source": "Source",
+"Border": "Border",
+"Constrain proportions": "Constrain proportions",
+"Vertical space": "Vertical space",
+"Image description": "Image description",
+"Style": "Style",
+"Dimensions": "Dimensions",
+"Insert image": "Insert image",
+"Insert date\/time": "Insert date\/time",
+"Remove link": "Remove link",
+"Url": "Url",
+"Text to display": "Text to display",
+"Anchors": "Anchors",
+"Insert link": "Insert link",
+"New window": "New window",
+"None": "None",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?",
+"Target": "Target",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",
+"Insert\/edit link": "Insert\/edit link",
+"Insert\/edit video": "Insert\/edit video",
+"Poster": "Poster",
+"Alternative source": "Alternative source",
+"Paste your embed code below:": "Paste your embed code below:",
+"Insert video": "Insert video",
+"Embed": "Embed",
+"Nonbreaking space": "Nonbreaking space",
+"Page break": "Page break",
+"Paste as text": "Paste as text",
+"Preview": "Preview",
+"Print": "Print",
+"Save": "Save",
+"Could not find the specified string.": "Could not find the specified string.",
+"Replace": "Replace",
+"Next": "Next",
+"Whole words": "Whole words",
+"Find and replace": "Find and replace",
+"Replace with": "Replace with",
+"Find": "Find",
+"Replace all": "Replace all",
+"Match case": "Match case",
+"Prev": "Prev",
+"Spellcheck": "Spellcheck",
+"Finish": "Finish",
+"Ignore all": "Ignore all",
+"Ignore": "Ignore",
+"Insert row before": "Insert row before",
+"Rows": "Rows",
+"Height": "Height",
+"Paste row after": "Paste row after",
+"Alignment": "Alignment",
+"Column group": "Column group",
+"Row": "Row",
+"Insert column before": "Insert column before",
+"Split cell": "Split cell",
+"Cell padding": "Cell padding",
+"Cell spacing": "Cell spacing",
+"Row type": "Row type",
+"Insert table": "Insert table",
+"Body": "Body",
+"Caption": "Caption",
+"Footer": "Footer",
+"Delete row": "Delete row",
+"Paste row before": "Paste row before",
+"Scope": "Scope",
+"Delete table": "Delete table",
+"Header cell": "Header cell",
+"Column": "Column",
+"Cell": "Cell",
+"Header": "Header",
+"Cell type": "Cell type",
+"Copy row": "Copy row",
+"Row properties": "Row properties",
+"Table properties": "Table properties",
+"Row group": "Row group",
+"Right": "Right",
+"Insert column after": "Insert column after",
+"Cols": "Cols",
+"Insert row after": "Insert row after",
+"Width": "Width",
+"Cell properties": "Cell properties",
+"Left": "Left",
+"Cut row": "Cut row",
+"Delete column": "Delete column",
+"Center": "Center",
+"Merge cells": "Merge cells",
+"Insert template": "Insert template",
+"Templates": "Templates",
+"Background color": "Background color",
+"Text color": "Text color",
+"Show blocks": "Show blocks",
+"Show invisible characters": "Show invisible characters",
+"Words: {0}": "Words: {0}",
+"Insert": "Insert",
+"File": "File",
+"Edit": "Edit",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help",
+"Tools": "Tools",
+"View": "View",
+"Table": "Table",
+"Format": "Format"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/is_IS.js b/program/js/tinymce/langs/is_IS.js
new file mode 100644
index 000000000..61be70663
--- /dev/null
+++ b/program/js/tinymce/langs/is_IS.js
@@ -0,0 +1,179 @@
+tinymce.addI18n('is_IS',{
+"Cut": "Skera",
+"Header 2": "Fyrirs\u00f6gn 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Vafrinn \u00feinn sty\u00f0ur ekki beinann a\u00f0gang a\u00f0 klippibor\u00f0inu. Nota\u00f0u Ctrl-X\/C\/V \u00e1 lyklabor\u00f0inu \u00ed sta\u00f0inn.",
+"Div": "Div",
+"Paste": "L\u00edma",
+"Close": "Loka",
+"Font Family": "Letur fj\u00f6lskylda",
+"Pre": "\u00d3st\u00edla\u00f0",
+"Align right": "H\u00e6grijafna",
+"New document": "N\u00fdtt skjal",
+"Blockquote": "Blokk",
+"Numbered list": "N\u00famera\u00f0ur listi",
+"Increase indent": "Auka inndr\u00e1tt",
+"Formats": "Sni\u00f0m\u00e1t",
+"Headers": "Fyrirsagnir",
+"Select all": "Velja allt",
+"Header 3": "Fyrirs\u00f6gn 3",
+"Blocks": "Blokkir",
+"Undo": "Afturkalla",
+"Strikethrough": "Yfirstrika\u00f0",
+"Bullet list": "K\u00falu listi",
+"Header 1": "Fyrirs\u00f6gn 1",
+"Superscript": "Uppskrift",
+"Clear formatting": "Hreinsa sni\u00f0",
+"Font Sizes": "Leturst\u00e6r\u00f0",
+"Subscript": "Ni\u00f0urskrifa\u00f0",
+"Header 6": "Fyrirs\u00f6gn 6",
+"Redo": "Endurkalla",
+"Paragraph": "M\u00e1lsgrein",
+"Ok": "Sta\u00f0festa",
+"Bold": "Feitletra\u00f0",
+"Code": "K\u00f3\u00f0i",
+"Italic": "Skr\u00e1letra\u00f0",
+"Align center": "Mi\u00f0jujafna",
+"Header 5": "Fyrirs\u00f6gn 5",
+"Decrease indent": "Minnka inndr\u00e1tt",
+"Header 4": "Fyrirs\u00f6gn 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "L\u00edming er \u00ed l\u00e1tlausum ham. Innihald ver\u00f0ur l\u00edmt sem l\u00e1tlaus texti \u00feanga\u00f0 til \u00fe\u00fa afvirkjar \u00feennan m\u00f6guleika.",
+"Underline": "Undirstrika\u00f0",
+"Cancel": "H\u00e6tta vi\u00f0",
+"Justify": "Jafna",
+"Inline": "Inndregi\u00f0",
+"Copy": "Afrita",
+"Align left": "Vinstrijafna",
+"Visual aids": "Sj\u00f3nr\u00e6n hj\u00e1lp",
+"Lower Greek": "L\u00e1gstafir Gr\u00edskir",
+"Square": "Ferningur",
+"Default": "Sj\u00e1lfgefi\u00f0",
+"Lower Alpha": "L\u00e1gstafir Alpha",
+"Circle": "Hringur",
+"Disc": "Diskur",
+"Upper Alpha": "H\u00e1stafir Alpha",
+"Upper Roman": "H\u00e1stafir R\u00f3mverskir",
+"Lower Roman": "L\u00e1gstafir R\u00f3mverskir",
+"Name": "Nafn",
+"Anchor": "Akkeri",
+"You have unsaved changes are you sure you want to navigate away?": "\u00dea\u00f0 eru \u00f3vista\u00f0ar breytingar, ertu viss um a\u00f0 \u00fe\u00fa viljir vafra \u00ed burtu?",
+"Restore last draft": "Endurkalla s\u00ed\u00f0asta uppkast",
+"Special character": "S\u00e9rstakir stafir",
+"Source code": "Frumk\u00f3\u00f0i",
+"Right to left": "H\u00e6gri til vinstri",
+"Left to right": "Vinstri til h\u00e6gri",
+"Emoticons": "Tilfinningar",
+"Robots": "Leitarv\u00e9lar",
+"Document properties": "Eigindi skjals",
+"Title": "Titill",
+"Keywords": "Lykilor\u00f0",
+"Encoding": "Umbreyting",
+"Description": "L\u00fdsing",
+"Author": "H\u00f6fundur",
+"Fullscreen": "Fylla skj\u00e1",
+"Horizontal line": "L\u00e1r\u00e9tt l\u00edna",
+"Horizontal space": "L\u00e1r\u00e9tt bil",
+"Insert\/edit image": "Setja inn\/breyta mynd",
+"General": "Almennt",
+"Advanced": "\u00cdtarlegt",
+"Source": "Sl\u00f3\u00f0i",
+"Border": "Rammi",
+"Constrain proportions": "Halda hlutf\u00f6llum",
+"Vertical space": "L\u00f3\u00f0r\u00e9tt bil",
+"Image description": "L\u00fdsing myndar",
+"Style": "St\u00edll",
+"Dimensions": "Hlutf\u00f6ll",
+"Insert image": "Setja inn mynd",
+"Insert date\/time": "Setja inn dagsetningu\/t\u00edma",
+"Remove link": "Fjarl\u00e6gja hlekk",
+"Url": "Veffang",
+"Text to display": "Texti til a\u00f0 s\u00fdna",
+"Anchors": "Akkeri",
+"Insert link": "Setja inn hlekk",
+"New window": "N\u00fdr gluggi",
+"None": "Ekkert",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?",
+"Target": "Mi\u00f0",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",
+"Insert\/edit link": "Setja inn\/breyta hlekk",
+"Insert\/edit video": "Setja inn\/fjarl\u00e6gja myndband",
+"Poster": "Plakat",
+"Alternative source": "Valkv\u00e6\u00f0ur frumk\u00f3\u00f0i",
+"Paste your embed code below:": "L\u00edma frumk\u00f3\u00f0a fyrir ne\u00f0an:",
+"Insert video": "Setja inn myndband",
+"Embed": "Hengja vi\u00f0",
+"Nonbreaking space": "Bil sem brotnar ekki",
+"Page break": "S\u00ed\u00f0ubrot",
+"Paste as text": "L\u00edma sem texta",
+"Preview": "Forsko\u00f0un",
+"Print": "Prenta",
+"Save": "Vista",
+"Could not find the specified string.": "Fann ekki umbe\u00f0inn streng.",
+"Replace": "Skipta \u00fat",
+"Next": "N\u00e6sti",
+"Whole words": "Heil or\u00f0",
+"Find and replace": "Finna og skipta \u00fat",
+"Replace with": "Skipta \u00fat me\u00f0",
+"Find": "Finna",
+"Replace all": "Skipta \u00f6llum \u00fat",
+"Match case": "Samanbur\u00f0ur",
+"Prev": "Fyrri",
+"Spellcheck": "Villuleit",
+"Finish": "Lj\u00faka",
+"Ignore all": "Hunsa allt",
+"Ignore": "Hunsa",
+"Insert row before": "Setja inn r\u00f6\u00f0 fyrir framan",
+"Rows": "Ra\u00f0ir",
+"Height": "H\u00e6\u00f0",
+"Paste row after": "L\u00edma r\u00f6\u00f0 fyrir aftan",
+"Alignment": "J\u00f6fnun",
+"Column group": "H\u00f3pur d\u00e1lks",
+"Row": "R\u00f6\u00f0",
+"Insert column before": "Setja inn d\u00e1lk fyrir framan",
+"Split cell": "Deila reiti",
+"Cell padding": "R\u00fdmi reits",
+"Cell spacing": "Bil \u00ed reit",
+"Row type": "Tegund ra\u00f0ar",
+"Insert table": "Setja inn t\u00f6flu",
+"Body": "Innihald",
+"Caption": "Titill",
+"Footer": "Ne\u00f0anm\u00e1l",
+"Delete row": "Ey\u00f0a r\u00f6\u00f0",
+"Paste row before": "L\u00edma r\u00f6\u00f0 fyrir framan",
+"Scope": "Gildissvi\u00f0",
+"Delete table": "Ey\u00f0a t\u00f6flu",
+"Header cell": "Reitarhaus",
+"Column": "D\u00e1lkur",
+"Cell": "Reitur",
+"Header": "Fyrirs\u00f6gn",
+"Cell type": "Tegund reits",
+"Copy row": "Afrita r\u00f6\u00f0",
+"Row properties": "Stillingar ra\u00f0ar",
+"Table properties": "Stillingar t\u00f6flu",
+"Row group": "H\u00f3pur ra\u00f0ar",
+"Right": "H\u00e6gri",
+"Insert column after": "Setja inn d\u00e1lk fyrir aftan",
+"Cols": "D\u00e1lkar",
+"Insert row after": "Setja inn r\u00f6\u00f0 fyrir aftan",
+"Width": "Breidd",
+"Cell properties": "Stillingar reits",
+"Left": "Vinstri",
+"Cut row": "Klippa r\u00f6\u00f0",
+"Delete column": "Ey\u00f0a d\u00e1lki",
+"Center": "Mi\u00f0ja",
+"Merge cells": "Sameina reiti",
+"Insert template": "Setja inn sni\u00f0m\u00e1t",
+"Templates": "Sni\u00f0m\u00e1t",
+"Background color": "Bakgrunnslitur",
+"Text color": "Litur texta",
+"Show blocks": "S\u00fdna kubba",
+"Show invisible characters": "S\u00fdna \u00f3s\u00fdnilega stafi",
+"Words: {0}": "Or\u00f0: {0}",
+"Insert": "Setja inn",
+"File": "Skjal",
+"Edit": "Breyta",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Textasv\u00e6\u00f0i \u00ed \u00edtarham. \u00ddttu \u00e1 ALT-F9 fyrir valmynd. \u00ddttu \u00e1 ALT-F10 fyrir t\u00f3lastiku. \u00ddttu \u00e1 ALT-0 fyrir a\u00f0sto\u00f0.",
+"Tools": "T\u00f3l",
+"View": "Sko\u00f0a",
+"Table": "Tafla",
+"Format": "Sni\u00f0"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/it.js b/program/js/tinymce/langs/it.js
new file mode 100644
index 000000000..b4a1544a7
--- /dev/null
+++ b/program/js/tinymce/langs/it.js
@@ -0,0 +1,179 @@
+tinymce.addI18n('it',{
+"Cut": "Taglia",
+"Header 2": "Header 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Il tuo browser non supporta l'accesso diretto negli Appunti. Per favore usa i tasti di scelta rapida Ctrl+X\/C\/V.",
+"Div": "Div",
+"Paste": "Incolla",
+"Close": "Chiudi",
+"Font Family": "Famiglia font",
+"Pre": "Pre",
+"Align right": "Allinea a Destra",
+"New document": "Nuovo Documento",
+"Blockquote": "Blockquote",
+"Numbered list": "Elenchi Numerati",
+"Increase indent": "Aumenta Rientro",
+"Formats": "Formattazioni",
+"Headers": "Intestazioni",
+"Select all": "Seleziona Tutto",
+"Header 3": "Intestazione 3",
+"Blocks": "Blocchi",
+"Undo": "Indietro",
+"Strikethrough": "Barrato",
+"Bullet list": "Elenchi Puntati",
+"Header 1": "Intestazione 1",
+"Superscript": "Apice",
+"Clear formatting": "Cancella Formattazione",
+"Font Sizes": "Dimensioni font",
+"Subscript": "Pedice",
+"Header 6": "Intestazione 6",
+"Redo": "Ripeti",
+"Paragraph": "Paragrafo",
+"Ok": "Ok",
+"Bold": "Grassetto",
+"Code": "Codice",
+"Italic": "Corsivo",
+"Align center": "Allinea al Cento",
+"Header 5": "Intestazione 5",
+"Decrease indent": "Riduci Rientro",
+"Header 4": "Intestazione 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Incolla \u00e8 in modalit\u00e0 testo normale. I contenuti sono incollati come testo normale se non disattivi l'opzione.",
+"Underline": "Sottolineato",
+"Cancel": "Cancella",
+"Justify": "Giustifica",
+"Inline": "Inlinea",
+"Copy": "Copia",
+"Align left": "Allinea a Sinistra",
+"Visual aids": "Elementi Visivi",
+"Lower Greek": "Greek Minore",
+"Square": "Quadrato",
+"Default": "Default",
+"Lower Alpha": "Alpha Minore",
+"Circle": "Cerchio",
+"Disc": "Disco",
+"Upper Alpha": "Alpha Superiore",
+"Upper Roman": "Roman Superiore",
+"Lower Roman": "Roman Minore",
+"Name": "Nome",
+"Anchor": "Fissa",
+"You have unsaved changes are you sure you want to navigate away?": "Non hai salvato delle modifiche, sei sicuro di andartene?",
+"Restore last draft": "Ripristina l'ultima bozza.",
+"Special character": "Carattere Speciale",
+"Source code": "Codice Sorgente",
+"Right to left": "Da Destra a Sinistra",
+"Left to right": "Da Sinistra a Destra",
+"Emoticons": "Emoction",
+"Robots": "Robot",
+"Document properties": "Propriet\u00e0 Documento",
+"Title": "Titolo",
+"Keywords": "Parola Chiave",
+"Encoding": "Codifica",
+"Description": "Descrizione",
+"Author": "Autore",
+"Fullscreen": "Schermo Intero",
+"Horizontal line": "Linea Orizzontale",
+"Horizontal space": "Spazio Orizzontale",
+"Insert\/edit image": "Aggiungi\/Modifica Immagine",
+"General": "Generale",
+"Advanced": "Avanzato",
+"Source": "Fonte",
+"Border": "Bordo",
+"Constrain proportions": "Mantieni Proporzioni",
+"Vertical space": "Spazio Verticale",
+"Image description": "Descrizione Immagine",
+"Style": "Stile",
+"Dimensions": "Dimenzioni",
+"Insert image": "Inserisci immagine",
+"Insert date\/time": "Inserisci Data\/Ora",
+"Remove link": "Rimuovi link",
+"Url": "Url",
+"Text to display": "Testo da Visualizzare",
+"Anchors": "Anchors",
+"Insert link": "Inserisci il Link",
+"New window": "Nuova Finestra",
+"None": "No",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "L'URL inserito sembra essere un collegamento esterno. Vuoi aggiungere il prefisso necessario http:\/\/?",
+"Target": "Target",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "L'URL inserito sembra essere un indirizzo email. Vuoi aggiungere il prefisso necessario mailto:?",
+"Insert\/edit link": "Inserisci\/Modifica Link",
+"Insert\/edit video": "Inserisci\/Modifica Video",
+"Poster": "Anteprima",
+"Alternative source": "Alternativo",
+"Paste your embed code below:": "Incolla il codice d'incorporamento qui:",
+"Insert video": "Inserisci Video",
+"Embed": "Incorporare",
+"Nonbreaking space": "Spazio unificatore",
+"Page break": "Interruzione di pagina",
+"Paste as text": "incolla come testo",
+"Preview": "Anteprima",
+"Print": "Stampa",
+"Save": "Salva",
+"Could not find the specified string.": "Impossibile trovare la parola specifica.",
+"Replace": "Sostituisci",
+"Next": "Successivo",
+"Whole words": "Parole Sbagliate",
+"Find and replace": "Trova e Sostituisci",
+"Replace with": "Sostituisci Con",
+"Find": "Trova",
+"Replace all": "Sostituisci Tutto",
+"Match case": "Maiuscole\/Minuscole ",
+"Prev": "Precedente",
+"Spellcheck": "Controllo ortografico",
+"Finish": "Termina",
+"Ignore all": "Ignora Tutto",
+"Ignore": "Ignora",
+"Insert row before": "Inserisci una Riga Prima",
+"Rows": "Righe",
+"Height": "Altezza",
+"Paste row after": "Incolla una Riga Dopo",
+"Alignment": "Allineamento",
+"Column group": "Gruppo di Colonne",
+"Row": "Riga",
+"Insert column before": "Inserisci una Colonna Prima",
+"Split cell": "Dividi Cella",
+"Cell padding": "Padding della Cella",
+"Cell spacing": "Spaziatura della Cella",
+"Row type": "Tipo di Riga",
+"Insert table": "Inserisci Tabella",
+"Body": "Body",
+"Caption": "Didascalia",
+"Footer": "Footer",
+"Delete row": "Cancella Riga",
+"Paste row before": "Incolla una Riga Prima",
+"Scope": "Campo",
+"Delete table": "Cancella Tabella",
+"Header cell": "cella d'intestazione",
+"Column": "Colonna",
+"Cell": "Cella",
+"Header": "Header",
+"Cell type": "Tipo di Cella",
+"Copy row": "Copia Riga",
+"Row properties": "Propriet\u00e0 della Riga",
+"Table properties": "Propiet\u00e0 della Tabella",
+"Row group": "Gruppo di Righe",
+"Right": "Destra",
+"Insert column after": "Inserisci una Colonna Dopo",
+"Cols": "Colonne",
+"Insert row after": "Inserisci una Riga Dopo",
+"Width": "Larghezza",
+"Cell properties": "Propiet\u00e0 della Cella",
+"Left": "Sinistra",
+"Cut row": "Taglia Riga",
+"Delete column": "Cancella Colonna",
+"Center": "Centro",
+"Merge cells": "Unisci Cella",
+"Insert template": "Inserisci Template",
+"Templates": "Template",
+"Background color": "Colore Background",
+"Text color": "Colore Testo",
+"Show blocks": "Mostra Blocchi",
+"Show invisible characters": "Mostra Caratteri Invisibili",
+"Words: {0}": "Parole: {0}",
+"Insert": "Inserisci",
+"File": "File",
+"Edit": "Modifica",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text Area. Premi ALT-F9 per il men\u00f9. Premi ALT-F10 per la barra degli strumenti. Premi ALT-0 per l'aiuto.",
+"Tools": "Strumenti",
+"View": "Visualiza",
+"Table": "Tabella",
+"Format": "Formato"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/ja.js b/program/js/tinymce/langs/ja.js
new file mode 100644
index 000000000..b40719fbc
--- /dev/null
+++ b/program/js/tinymce/langs/ja.js
@@ -0,0 +1,197 @@
+tinymce.addI18n('ja',{
+"Cut": "\u5207\u308a\u53d6\u308a",
+"Heading 5": "\u898b\u51fa\u3057 5",
+"Header 2": "\u30d8\u30c3\u30c0\u30fc 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u304a\u4f7f\u3044\u306e\u30d6\u30e9\u30a6\u30b6\u3067\u306f\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u6a5f\u80fd\u3092\u5229\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002\u30ad\u30fc\u30dc\u30fc\u30c9\u306e\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8\uff08Ctrl+X, Ctrl+C, Ctrl+V\uff09\u3092\u304a\u4f7f\u3044\u4e0b\u3055\u3044\u3002",
+"Heading 4": "\u898b\u51fa\u3057 4",
+"Div": "Div",
+"Heading 2": "\u898b\u51fa\u3057 2",
+"Paste": "\u8cbc\u308a\u4ed8\u3051",
+"Close": "\u9589\u3058\u308b",
+"Font Family": "\u30d5\u30a9\u30f3\u30c8\u30d5\u30a1\u30df\u30ea\u30fc",
+"Pre": "Pre",
+"Align right": "\u53f3\u5bc4\u305b",
+"New document": "\u65b0\u898f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8",
+"Blockquote": "\u5f15\u7528",
+"Numbered list": "\u756a\u53f7\u4ed8\u304d\u7b87\u6761\u66f8\u304d",
+"Heading 1": "\u898b\u51fa\u3057 1",
+"Headings": "\u898b\u51fa\u3057",
+"Increase indent": "\u30a4\u30f3\u30c7\u30f3\u30c8\u3092\u5897\u3084\u3059",
+"Formats": "\u66f8\u5f0f",
+"Headers": "\u30d8\u30c3\u30c0\u30fc",
+"Select all": "\u5168\u3066\u3092\u9078\u629e",
+"Header 3": "\u30d8\u30c3\u30c0\u30fc 3",
+"Blocks": "\u30d6\u30ed\u30c3\u30af",
+"Undo": "\u5143\u306b\u623b\u3059",
+"Strikethrough": "\u53d6\u308a\u6d88\u3057\u7dda",
+"Bullet list": "\u7b87\u6761\u66f8\u304d",
+"Header 1": "\u30d8\u30c3\u30c0\u30fc 1",
+"Superscript": "\u4e0a\u4ed8\u304d\u6587\u5b57",
+"Clear formatting": "\u66f8\u5f0f\u3092\u30af\u30ea\u30a2",
+"Font Sizes": "\u30d5\u30a9\u30f3\u30c8\u30b5\u30a4\u30ba",
+"Subscript": "\u4e0b\u4ed8\u304d\u6587\u5b57",
+"Header 6": "\u30d8\u30c3\u30c0\u30fc 6",
+"Redo": "\u3084\u308a\u76f4\u3059",
+"Paragraph": "\u6bb5\u843d",
+"Ok": "OK",
+"Bold": "\u592a\u5b57",
+"Code": "\u30b3\u30fc\u30c9",
+"Italic": "\u659c\u4f53",
+"Align center": "\u4e2d\u592e\u63c3\u3048",
+"Header 5": "\u30d8\u30c3\u30c0\u30fc 5",
+"Heading 6": "\u898b\u51fa\u3057 6",
+"Heading 3": "\u898b\u51fa\u3057 3",
+"Decrease indent": "\u30a4\u30f3\u30c7\u30f3\u30c8\u3092\u6e1b\u3089\u3059",
+"Header 4": "\u30d8\u30c3\u30c0\u30fc 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u8cbc\u308a\u4ed8\u3051\u306f\u73fe\u5728\u30d7\u30ec\u30fc\u30f3\u30c6\u30ad\u30b9\u30c8\u30e2\u30fc\u30c9\u3067\u3059\u3002\u3053\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u30aa\u30d5\u306b\u3057\u306a\u3044\u9650\u308a\u5185\u5bb9\u306f\u30d7\u30ec\u30fc\u30f3\u30c6\u30ad\u30b9\u30c8\u3068\u3057\u3066\u8cbc\u308a\u4ed8\u3051\u3089\u308c\u307e\u3059\u3002",
+"Underline": "\u4e0b\u7dda",
+"Cancel": "\u30ad\u30e3\u30f3\u30bb\u30eb",
+"Justify": "\u4e21\u7aef\u63c3\u3048",
+"Inline": "\u30a4\u30f3\u30e9\u30a4\u30f3",
+"Copy": "\u30b3\u30d4\u30fc",
+"Align left": "\u5de6\u5bc4\u305b",
+"Visual aids": "\u8868\u306e\u67a0\u7dda\u3092\u70b9\u7dda\u3067\u8868\u793a",
+"Lower Greek": "\u5c0f\u6587\u5b57\u306e\u30ae\u30ea\u30b7\u30e3\u6587\u5b57",
+"Square": "\u56db\u89d2",
+"Default": "\u30c7\u30d5\u30a9\u30eb\u30c8",
+"Lower Alpha": "\u5c0f\u6587\u5b57\u306e\u30a2\u30eb\u30d5\u30a1\u30d9\u30c3\u30c8",
+"Circle": "\u5186",
+"Disc": "\u70b9",
+"Upper Alpha": "\u5927\u6587\u5b57\u306e\u30a2\u30eb\u30d5\u30a1\u30d9\u30c3\u30c8",
+"Upper Roman": "\u5927\u6587\u5b57\u306e\u30ed\u30fc\u30de\u6570\u5b57",
+"Lower Roman": "\u5c0f\u6587\u5b57\u306e\u30ed\u30fc\u30de\u6570\u5b57",
+"Name": "\u30a2\u30f3\u30ab\u30fc\u540d",
+"Anchor": "\u30a2\u30f3\u30ab\u30fc\uff08\u30ea\u30f3\u30af\u306e\u5230\u9054\u70b9\uff09",
+"You have unsaved changes are you sure you want to navigate away?": "\u307e\u3060\u4fdd\u5b58\u3057\u3066\u3044\u306a\u3044\u5909\u66f4\u304c\u3042\u308a\u307e\u3059\u304c\u3001\u672c\u5f53\u306b\u3053\u306e\u30da\u30fc\u30b8\u3092\u96e2\u308c\u307e\u3059\u304b\uff1f",
+"Restore last draft": "\u524d\u56de\u306e\u4e0b\u66f8\u304d\u3092\u5fa9\u6d3b\u3055\u305b\u308b",
+"Special character": "\u7279\u6b8a\u6587\u5b57",
+"Source code": "\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9",
+"Color": "\u30ab\u30e9\u30fc",
+"Right to left": "\u53f3\u304b\u3089\u5de6",
+"Left to right": "\u5de6\u304b\u3089\u53f3",
+"Emoticons": "\u7d75\u6587\u5b57",
+"Robots": "\u30ed\u30dc\u30c3\u30c4",
+"Document properties": "\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u30d7\u30ed\u30d1\u30c6\u30a3",
+"Title": "\u30bf\u30a4\u30c8\u30eb",
+"Keywords": "\u30ad\u30fc\u30ef\u30fc\u30c9",
+"Encoding": "\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0",
+"Description": "\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u5185\u5bb9",
+"Author": "\u8457\u8005",
+"Fullscreen": "\u5168\u753b\u9762\u8868\u793a",
+"Horizontal line": "\u6c34\u5e73\u7f6b\u7dda",
+"Horizontal space": "\u6a2a\u65b9\u5411\u306e\u4f59\u767d",
+"Insert\/edit image": "\u753b\u50cf\u306e\u633f\u5165\u30fb\u7de8\u96c6",
+"General": "\u4e00\u822c",
+"Advanced": "\u8a73\u7d30\u8a2d\u5b9a",
+"Source": "\u753b\u50cf\u306e\u30bd\u30fc\u30b9",
+"Border": "\u67a0\u7dda",
+"Constrain proportions": "\u7e26\u6a2a\u6bd4\u3092\u4fdd\u6301\u3059\u308b",
+"Vertical space": "\u7e26\u65b9\u5411\u306e\u4f59\u767d",
+"Image description": "\u753b\u50cf\u306e\u8aac\u660e\u6587",
+"Style": "\u30b9\u30bf\u30a4\u30eb",
+"Dimensions": "\u753b\u50cf\u30b5\u30a4\u30ba\uff08\u6a2a\u30fb\u7e26\uff09",
+"Insert image": "\u753b\u50cf\u306e\u633f\u5165",
+"Insert date\/time": "\u65e5\u4ed8\u30fb\u6642\u523b",
+"Remove link": "\u30ea\u30f3\u30af\u306e\u524a\u9664",
+"Url": "\u30ea\u30f3\u30af\u5148URL",
+"Text to display": "\u30ea\u30f3\u30af\u5143\u30c6\u30ad\u30b9\u30c8",
+"Anchors": "\u30a2\u30f3\u30ab\u30fc\uff08\u30ea\u30f3\u30af\u306e\u5230\u9054\u70b9\uff09",
+"Insert link": "\u30ea\u30f3\u30af",
+"New window": "\u65b0\u898f\u30a6\u30a3\u30f3\u30c9\u30a6",
+"None": "\u306a\u3057",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u5165\u529b\u3055\u308c\u305fURL\u306f\u5916\u90e8\u30ea\u30f3\u30af\u306e\u3088\u3046\u3067\u3059\u3002\u300chttp:\/\/\u300d\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u3092\u8ffd\u52a0\u3057\u307e\u3059\u304b\uff1f",
+"Target": "\u30bf\u30fc\u30b2\u30c3\u30c8\u5c5e\u6027",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u5165\u529b\u3055\u308c\u305f\u5024\u306f\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306e\u3088\u3046\u3067\u3059\u3002\u300cmailto:\u300d\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u3092\u8ffd\u52a0\u3057\u307e\u3059\u304b\uff1f",
+"Insert\/edit link": "\u30ea\u30f3\u30af\u306e\u633f\u5165\u30fb\u7de8\u96c6",
+"Insert\/edit video": "\u52d5\u753b\u306e\u633f\u5165\u30fb\u7de8\u96c6",
+"Poster": "\u4ee3\u66ff\u753b\u50cf\u306e\u5834\u6240",
+"Alternative source": "\u4ee3\u66ff\u52d5\u753b\u306e\u5834\u6240",
+"Paste your embed code below:": "\u57cb\u3081\u8fbc\u307f\u7528\u30b3\u30fc\u30c9\u3092\u4e0b\u8a18\u306b\u8cbc\u308a\u4ed8\u3051\u3066\u304f\u3060\u3055\u3044\u3002",
+"Insert video": "\u52d5\u753b",
+"Embed": "\u57cb\u3081\u8fbc\u307f",
+"Nonbreaking space": "\u56fa\u5b9a\u30b9\u30da\u30fc\u30b9\uff08&nbsp;\uff09",
+"Page break": "\u30da\u30fc\u30b8\u533a\u5207\u308a",
+"Paste as text": "\u30c6\u30ad\u30b9\u30c8\u3068\u3057\u3066\u8cbc\u308a\u4ed8\u3051",
+"Preview": "\u30d7\u30ec\u30d3\u30e5\u30fc",
+"Print": "\u5370\u5237",
+"Save": "\u4fdd\u5b58",
+"Could not find the specified string.": "\u304a\u63a2\u3057\u306e\u6587\u5b57\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002",
+"Replace": "\u7f6e\u304d\u63db\u3048",
+"Next": "\u6b21",
+"Whole words": "\u5358\u8a9e\u5358\u4f4d\u3067\u691c\u7d22\u3059\u308b",
+"Find and replace": "\u691c\u7d22\u3068\u7f6e\u304d\u63db\u3048",
+"Replace with": "\u7f6e\u304d\u63db\u3048\u308b\u6587\u5b57",
+"Find": "\u691c\u7d22",
+"Replace all": "\u5168\u3066\u3092\u7f6e\u304d\u63db\u3048\u308b",
+"Match case": "\u5927\u6587\u5b57\u30fb\u5c0f\u6587\u5b57\u3092\u533a\u5225\u3059\u308b",
+"Prev": "\u524d",
+"Spellcheck": "\u30b9\u30da\u30eb\u30c1\u30a7\u30c3\u30af",
+"Finish": "\u7d42\u4e86",
+"Ignore all": "\u5168\u3066\u3092\u7121\u8996",
+"Ignore": "\u7121\u8996",
+"Add to Dictionary": "\u8f9e\u66f8\u306b\u8ffd\u52a0",
+"Insert row before": "\u4e0a\u5074\u306b\u884c\u3092\u633f\u5165",
+"Rows": "\u884c\u6570",
+"Height": "\u9ad8\u3055",
+"Paste row after": "\u4e0b\u5074\u306b\u884c\u3092\u8cbc\u308a\u4ed8\u3051",
+"Alignment": "\u914d\u7f6e",
+"Border color": "\u67a0\u7dda\u306e\u8272",
+"Column group": "\u5217\u30b0\u30eb\u30fc\u30d7",
+"Row": "\u884c",
+"Insert column before": "\u5de6\u5074\u306b\u5217\u3092\u633f\u5165",
+"Split cell": "\u30bb\u30eb\u306e\u5206\u5272",
+"Cell padding": "\u30bb\u30eb\u5185\u4f59\u767d\uff08\u30d1\u30c7\u30a3\u30f3\u30b0\uff09",
+"Cell spacing": "\u30bb\u30eb\u306e\u9593\u9694",
+"Row type": "\u884c\u30bf\u30a4\u30d7",
+"Insert table": "\u8868\u306e\u633f\u5165",
+"Body": "\u30dc\u30c7\u30a3\u30fc",
+"Caption": "\u8868\u984c",
+"Footer": "\u30d5\u30c3\u30bf\u30fc",
+"Delete row": "\u884c\u306e\u524a\u9664",
+"Paste row before": "\u4e0a\u5074\u306b\u884c\u3092\u8cbc\u308a\u4ed8\u3051",
+"Scope": "\u30b9\u30b3\u30fc\u30d7",
+"Delete table": "\u8868\u306e\u524a\u9664",
+"H Align": "\u6c34\u5e73\u65b9\u5411\u306e\u914d\u7f6e",
+"Top": "\u4e0a",
+"Header cell": "\u30d8\u30c3\u30c0\u30fc\u30bb\u30eb",
+"Column": "\u5217",
+"Row group": "\u884c\u30b0\u30eb\u30fc\u30d7",
+"Cell": "\u30bb\u30eb",
+"Middle": "\u4e2d\u592e",
+"Cell type": "\u30bb\u30eb\u30bf\u30a4\u30d7",
+"Copy row": "\u884c\u306e\u30b3\u30d4\u30fc",
+"Row properties": "\u884c\u306e\u8a73\u7d30\u8a2d\u5b9a",
+"Table properties": "\u8868\u306e\u8a73\u7d30\u8a2d\u5b9a",
+"Bottom": "\u4e0b",
+"V Align": "\u5782\u76f4\u65b9\u5411\u306e\u914d\u7f6e",
+"Header": "\u30d8\u30c3\u30c0\u30fc",
+"Right": "\u53f3\u5bc4\u305b",
+"Insert column after": "\u53f3\u5074\u306b\u5217\u3092\u633f\u5165",
+"Cols": "\u5217\u6570",
+"Insert row after": "\u4e0b\u5074\u306b\u884c\u3092\u633f\u5165",
+"Width": "\u5e45",
+"Cell properties": "\u30bb\u30eb\u306e\u8a73\u7d30\u8a2d\u5b9a",
+"Left": "\u5de6\u5bc4\u305b",
+"Cut row": "\u884c\u306e\u5207\u308a\u53d6\u308a",
+"Delete column": "\u5217\u306e\u524a\u9664",
+"Center": "\u4e2d\u592e\u63c3\u3048",
+"Merge cells": "\u30bb\u30eb\u306e\u7d50\u5408",
+"Insert template": "\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u633f\u5165",
+"Templates": "\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u540d",
+"Background color": "\u80cc\u666f\u8272",
+"Custom...": "\u30ab\u30b9\u30bf\u30e0...",
+"Custom color": "\u30ab\u30b9\u30bf\u30e0\u30ab\u30e9\u30fc",
+"No color": "\u30ab\u30e9\u30fc\u306a\u3057",
+"Text color": "\u6587\u5b57\u306e\u8272",
+"Show blocks": "\u6587\u7ae0\u306e\u533a\u5207\u308a\u3092\u70b9\u7dda\u3067\u8868\u793a",
+"Show invisible characters": "\u4e0d\u53ef\u8996\u6587\u5b57\u3092\u8868\u793a",
+"Words: {0}": "\u5358\u8a9e\u6570: {0}",
+"Insert": "\u633f\u5165",
+"File": "\u30d5\u30a1\u30a4\u30eb",
+"Edit": "\u7de8\u96c6",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u66f8\u5f0f\u4ed8\u304d\u30c6\u30ad\u30b9\u30c8\u306e\u7de8\u96c6\u753b\u9762\u3002ALT-F9\u3067\u30e1\u30cb\u30e5\u30fc\u3001ALT-F10\u3067\u30c4\u30fc\u30eb\u30d0\u30fc\u3001ALT-0\u3067\u30d8\u30eb\u30d7\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002",
+"Tools": "\u30c4\u30fc\u30eb",
+"View": "\u8868\u793a",
+"Table": "\u8868",
+"Format": "\u66f8\u5f0f"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/ka_GE.js b/program/js/tinymce/langs/ka_GE.js
new file mode 100644
index 000000000..38f4836d3
--- /dev/null
+++ b/program/js/tinymce/langs/ka_GE.js
@@ -0,0 +1,179 @@
+tinymce.addI18n('ka_GE',{
+"Cut": "\u10d0\u10db\u10dd\u10ed\u10e0\u10d0",
+"Header 2": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u10d7\u10e5\u10d5\u10d4\u10dc \u10d1\u10e0\u10d0\u10e3\u10d6\u10d4\u10e0\u10e1 \u10d0\u10e0 \u10d0\u10e5\u10d5\u10e1 \u10d1\u10e3\u10e4\u10e0\u10e2\u10e8\u10d8 \u10e8\u10d4\u10ee\u10ec\u10d4\u10d5\u10d8\u10e1 \u10db\u10ee\u10d0\u10e0\u10d3\u10d0\u10ed\u10d4\u10e0\u10d0. \u10d2\u10d7\u10ee\u10dd\u10d5\u10d7 \u10e1\u10d0\u10dc\u10d0\u10ea\u10d5\u10da\u10dd\u10d3 \u10d8\u10e1\u10d0\u10e0\u10d2\u10d4\u10d1\u10da\u10dd\u10d7 Ctrl+X\/C\/V \u10db\u10d0\u10da\u10e1\u10d0\u10ee\u10db\u10dd\u10d1\u10d8 \u10d9\u10dd\u10db\u10d1\u10d8\u10dc\u10d0\u10ea\u10d8\u10d4\u10d1\u10d8\u10d7.",
+"Div": "\u10d2\u10d0\u10dc\u10d0\u10ec\u10d8\u10da\u10d4\u10d1\u10d0",
+"Paste": "\u10e9\u10d0\u10e1\u10db\u10d0",
+"Close": "\u10d3\u10d0\u10ee\u10e3\u10e0\u10d5\u10d0",
+"Font Family": "Font Family",
+"Pre": "\u10de\u10e0\u10d4\u10e4\u10dd\u10e0\u10db\u10d0\u10e2\u10d8",
+"Align right": "\u10d2\u10d0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4 \u10db\u10d0\u10e0\u10ef\u10d5\u10dc\u10d8\u10d5",
+"New document": "\u10d0\u10ee\u10d0\u10da\u10d8 \u10d3\u10dd\u10d9\u10e3\u10db\u10d4\u10dc\u10e2\u10d8",
+"Blockquote": "\u10d1\u10da\u10dd\u10d9\u10d8\u10e0\u10d4\u10d1\u10e3\u10da\u10d8 \u10ea\u10d8\u10e2\u10d0\u10e2\u10d0",
+"Numbered list": "\u10d3\u10d0\u10dc\u10dd\u10db\u10e0\u10d8\u10da\u10d8 \u10e1\u10d8\u10d0",
+"Increase indent": "\u10d0\u10d1\u10d6\u10d0\u10ea\u10d8\u10e1 \u10d2\u10d0\u10d6\u10e0\u10d3\u10d0",
+"Formats": "\u10e4\u10dd\u10e0\u10db\u10d0\u10e2\u10d4\u10d1\u10d8",
+"Headers": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d4\u10d1\u10d8",
+"Select all": "\u10e7\u10d5\u10d4\u10da\u10d0\u10e1 \u10db\u10dd\u10e6\u10dc\u10d8\u10e8\u10d5\u10dc\u10d0",
+"Header 3": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8 3",
+"Blocks": "\u10d1\u10da\u10dd\u10d9\u10d4\u10d1\u10d8",
+"Undo": "\u10d3\u10d0\u10d1\u10e0\u10e3\u10dc\u10d4\u10d1\u10d0",
+"Strikethrough": "\u10e8\u10e3\u10d0 \u10ee\u10d0\u10d6\u10d8",
+"Bullet list": "\u10d1\u10e3\u10da\u10d4\u10e2 \u10e1\u10d8\u10d0",
+"Header 1": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8 1",
+"Superscript": "\u10d6\u10d4\u10d3\u10d0 \u10d8\u10dc\u10d3\u10d4\u10e5\u10e1\u10d8",
+"Clear formatting": "\u10e4\u10dd\u10e0\u10db\u10d0\u10e2\u10d8\u10e0\u10d4\u10d1\u10d8\u10e1 \u10d2\u10d0\u10e1\u10e3\u10e4\u10d7\u10d0\u10d5\u10d4\u10d1\u10d0",
+"Font Sizes": "Font Sizes",
+"Subscript": "\u10e5\u10d5\u10d4\u10d3\u10d0 \u10d8\u10dc\u10d3\u10d4\u10e5\u10e1\u10d8",
+"Header 6": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8 6",
+"Redo": "\u10d2\u10d0\u10db\u10d4\u10dd\u10e0\u10d4\u10d1\u10d0",
+"Paragraph": "\u10de\u10d0\u10e0\u10d0\u10d2\u10e0\u10d0\u10e4\u10d8",
+"Ok": "\u10d9\u10d0\u10e0\u10d2\u10d8",
+"Bold": "\u10db\u10d9\u10d5\u10d4\u10d7\u10e0\u10d8",
+"Code": "\u10d9\u10dd\u10d3\u10d8",
+"Italic": "\u10d3\u10d0\u10ee\u10e0\u10d8\u10da\u10d8",
+"Align center": "\u10d2\u10d0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4 \u10ea\u10d4\u10dc\u10e2\u10e0\u10e8\u10d8",
+"Header 5": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8 5",
+"Decrease indent": "\u10d0\u10d1\u10d6\u10d0\u10ea\u10d8\u10e1 \u10e8\u10d4\u10db\u10ea\u10d8\u10e0\u10d4\u10d1\u10d0",
+"Header 4": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.",
+"Underline": "\u10e5\u10d5\u10d4\u10d3\u10d0 \u10ee\u10d0\u10d6\u10d8",
+"Cancel": "\u10d2\u10d0\u10e3\u10e5\u10db\u10d4\u10d1\u10d0",
+"Justify": "\u10d2\u10d0\u10db\u10d0\u10e0\u10d7\u10e3\u10da\u10d8",
+"Inline": "\u10ee\u10d0\u10d6\u10e8\u10d8\u10d3\u10d0",
+"Copy": "\u10d9\u10dd\u10de\u10d8\u10e0\u10d4\u10d1\u10d0",
+"Align left": "\u10d2\u10d0\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4 \u10db\u10d0\u10e0\u10ea\u10ee\u10dc\u10d8\u10d5",
+"Visual aids": "\u10d5\u10d8\u10d6\u10e3\u10d0\u10da\u10d8\u10d6\u10d0\u10ea\u10d8\u10d0",
+"Lower Greek": "\u10d3\u10d0\u10d1\u10d0\u10da\u10d8 \u10d1\u10d4\u10e0\u10eb\u10dc\u10e3\u10da\u10d8",
+"Square": "\u10d9\u10d5\u10d0\u10d3\u10e0\u10d0\u10e2\u10d8",
+"Default": "\u10e1\u10e2\u10d0\u10dc\u10d3\u10d0\u10e0\u10e2\u10e3\u10da\u10d8",
+"Lower Alpha": "\u10d3\u10d0\u10d1\u10d0\u10da\u10d8 \u10d0\u10da\u10e4\u10d0",
+"Circle": "\u10ec\u10e0\u10d4",
+"Disc": "\u10d3\u10d8\u10e1\u10d9\u10d8",
+"Upper Alpha": "\u10db\u10d0\u10e6\u10d0\u10da\u10d8 \u10d0\u10da\u10e4\u10d0",
+"Upper Roman": "\u10db\u10d0\u10e6\u10d0\u10da\u10d8 \u10e0\u10dd\u10db\u10d0\u10e3\u10da\u10d8",
+"Lower Roman": "\u10d3\u10d0\u10d1\u10d0\u10da\u10d8 \u10e0\u10dd\u10db\u10d0\u10e3\u10da\u10d8",
+"Name": "\u10e1\u10d0\u10ee\u10d4\u10da\u10d8",
+"Anchor": "\u10e6\u10e3\u10d6\u10d0",
+"You have unsaved changes are you sure you want to navigate away?": "\u10d7\u10e5\u10d5\u10d4\u10dc \u10d2\u10d0\u10e5\u10d5\u10d7 \u10e8\u10d4\u10e3\u10dc\u10d0\u10ee\u10d0\u10d5\u10d8 \u10e8\u10d4\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d4\u10d1\u10d8, \u10d3\u10d0\u10e0\u10ec\u10db\u10e3\u10dc\u10d4\u10d1\u10e3\u10da\u10d8 \u10ee\u10d0\u10d7 \u10e0\u10dd\u10db \u10e1\u10ee\u10d5\u10d0\u10d2\u10d0\u10dc \u10d2\u10d0\u10d3\u10d0\u10e1\u10d5\u10da\u10d0 \u10d2\u10e1\u10e3\u10e0\u10d7?",
+"Restore last draft": "\u10d1\u10dd\u10da\u10dd\u10e1 \u10e8\u10d4\u10dc\u10d0\u10ee\u10e3\u10da\u10d8\u10e1 \u10d0\u10e6\u10d3\u10d2\u10d4\u10dc\u10d0",
+"Special character": "\u10e1\u10de\u10d4\u10ea\u10d8\u10d0\u10da\u10e3\u10e0\u10d8 \u10e1\u10d8\u10db\u10d1\u10dd\u10da\u10dd",
+"Source code": "\u10ec\u10e7\u10d0\u10e0\u10dd\u10e1 \u10d9\u10dd\u10d3\u10d8",
+"Right to left": "\u10db\u10d0\u10e0\u10ef\u10d5\u10dc\u10d8\u10d3\u10d0\u10dc \u10db\u10d0\u10e0\u10ea\u10ee\u10dc\u10d8\u10d5",
+"Left to right": "\u10db\u10d0\u10e0\u10ea\u10ee\u10dc\u10d8\u10d3\u10d0\u10dc \u10db\u10d0\u10e0\u10ef\u10d5\u10dc\u10d8\u10d5",
+"Emoticons": "\u10e1\u10db\u10d0\u10d8\u10da\u10d8\u10d9\u10d4\u10d1\u10d8",
+"Robots": "\u10e0\u10dd\u10d1\u10dd\u10d4\u10d1\u10d8",
+"Document properties": "\u10d3\u10dd\u10d9\u10e3\u10db\u10d4\u10dc\u10e2\u10d8\u10e1 \u10d7\u10d5\u10d8\u10e1\u10d4\u10d1\u10d4\u10d1\u10d8",
+"Title": "\u10e1\u10d0\u10d7\u10d0\u10e3\u10e0\u10d8",
+"Keywords": "\u10e1\u10d0\u10d9\u10d5\u10d0\u10dc\u10eb\u10dd \u10e1\u10d8\u10e2\u10e7\u10d5\u10d4\u10d1\u10d8",
+"Encoding": "\u10d9\u10dd\u10d3\u10d8\u10e0\u10d4\u10d1\u10d0",
+"Description": "\u10d0\u10ee\u10ec\u10d4\u10e0\u10d0",
+"Author": "\u10d0\u10d5\u10e2\u10dd\u10e0\u10d8",
+"Fullscreen": "\u10e1\u10d0\u10d5\u10e1\u10d4 \u10d4\u10d9\u10e0\u10d0\u10dc\u10d8",
+"Horizontal line": "\u10f0\u10dd\u10e0\u10d8\u10d6\u10dd\u10dc\u10e2\u10d0\u10da\u10e3\u10e0\u10d8 \u10ee\u10d0\u10d6\u10d8",
+"Horizontal space": "\u10f0\u10dd\u10e0\u10d8\u10d6\u10dd\u10dc\u10e2\u10d0\u10da\u10e3\u10e0\u10d8 \u10e1\u10d8\u10d5\u10e0\u10ea\u10d4",
+"Insert\/edit image": "\u10e9\u10d0\u10e1\u10d5\u10d8\/\u10e8\u10d4\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4 \u10e1\u10e3\u10e0\u10d0\u10d7\u10d8",
+"General": "\u10db\u10d7\u10d0\u10d5\u10d0\u10e0\u10d8",
+"Advanced": "\u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d8\u10d7\u10d8",
+"Source": "\u10d1\u10db\u10e3\u10da\u10d8",
+"Border": "\u10e1\u10d0\u10d6\u10e6\u10d5\u10d0\u10e0\u10d8",
+"Constrain proportions": "\u10de\u10e0\u10dd\u10de\u10dd\u10e0\u10ea\u10d8\u10d8\u10e1 \u10d3\u10d0\u10ea\u10d5\u10d0",
+"Vertical space": "\u10d5\u10d4\u10e0\u10e2\u10d8\u10d9\u10d0\u10da\u10e3\u10e0\u10d8 \u10e1\u10d8\u10d5\u10e0\u10ea\u10d4",
+"Image description": "\u10e1\u10e3\u10e0\u10d0\u10d7\u10d8\u10e1 \u10d3\u10d0\u10ee\u10d0\u10e1\u10d8\u10d0\u10d7\u10d4\u10d1\u10d0",
+"Style": "\u10e1\u10e2\u10d8\u10da\u10d8",
+"Dimensions": "\u10d2\u10d0\u10dc\u10d6\u10dd\u10db\u10d8\u10da\u10d4\u10d1\u10d0",
+"Insert image": "\u10e1\u10e3\u10e0\u10d0\u10d7\u10d8\u10e1 \u10e9\u10d0\u10e1\u10db\u10d0",
+"Insert date\/time": "\u10d7\u10d0\u10e0\u10d8\u10e6\u10d8\/\u10d3\u10e0\u10dd\u10d8\u10e1 \u10e9\u10d0\u10e1\u10db\u10d0",
+"Remove link": "Remove link",
+"Url": "Url",
+"Text to display": "\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8",
+"Anchors": "Anchors",
+"Insert link": "\u10d1\u10db\u10e3\u10da\u10d8\u10e1 \u10e9\u10d0\u10e1\u10db\u10d0",
+"New window": "\u10d0\u10ee\u10d0\u10da \u10e4\u10d0\u10dc\u10ef\u10d0\u10e0\u10d0\u10e8\u10d8",
+"None": "\u10d0\u10e0\u10ea\u10d4\u10e0\u10d7\u10d8",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?",
+"Target": "\u10d2\u10d0\u10ee\u10e1\u10dc\u10d0",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",
+"Insert\/edit link": "\u10d1\u10db\u10e3\u10da\u10d8\u10e1 \u10e9\u10d0\u10e1\u10db\u10d0\/\u10e0\u10d4\u10d3\u10d0\u10e5\u10e2\u10d8\u10e0\u10d4\u10d0",
+"Insert\/edit video": "\u10d5\u10d8\u10d3\u10d4\u10dd\u10e1 \u10e9\u10d0\u10e1\u10db\u10d0\/\u10e0\u10d4\u10d3\u10d0\u10e5\u10e2\u10d8\u10e0\u10d4\u10d1\u10d0",
+"Poster": "\u10de\u10da\u10d0\u10d9\u10d0\u10e2\u10d8",
+"Alternative source": "\u10d0\u10da\u10e2\u10d4\u10e0\u10dc\u10d0\u10e2\u10d8\u10e3\u10da\u10d8 \u10ec\u10e7\u10d0\u10e0\u10dd",
+"Paste your embed code below:": "\u10d0\u10e5 \u10e9\u10d0\u10e1\u10d5\u10d8\u10d7 \u10d7\u10e5\u10d5\u10d4\u10dc\u10d8 \u10d9\u10dd\u10d3\u10d8:",
+"Insert video": "\u10d5\u10d8\u10d3\u10d4\u10dd\u10e1 \u10e9\u10d0\u10e1\u10db\u10d0",
+"Embed": "\u10e9\u10d0\u10e8\u10d4\u10dc\u10d4\u10d1\u10d0",
+"Nonbreaking space": "\u10e3\u10ec\u10e7\u10d5\u10d4\u10e2\u10d8 \u10e1\u10d8\u10d5\u10e0\u10ea\u10d4",
+"Page break": "\u10d2\u10d5\u10d4\u10e0\u10d3\u10d8\u10e1 \u10d2\u10d0\u10ec\u10e7\u10d5\u10d4\u10e2\u10d0",
+"Paste as text": "Paste as text",
+"Preview": "\u10ec\u10d8\u10dc\u10d0\u10e1\u10ec\u10d0\u10e0 \u10dc\u10d0\u10ee\u10d5\u10d0",
+"Print": "\u10d0\u10db\u10dd\u10d1\u10d4\u10ed\u10d5\u10d3\u10d0",
+"Save": "\u10e8\u10d4\u10dc\u10d0\u10ee\u10d5\u10d0",
+"Could not find the specified string.": "\u10db\u10dd\u10ea\u10d4\u10db\u10e3\u10da\u10d8 \u10e9\u10d0\u10dc\u10d0\u10ec\u10d4\u10e0\u10d8 \u10d5\u10d4\u10e0 \u10db\u10dd\u10d8\u10eb\u10d4\u10d1\u10dc\u10d0.",
+"Replace": "\u10e8\u10d4\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d0",
+"Next": "\u10e8\u10d4\u10db\u10d3\u10d4\u10d2\u10d8",
+"Whole words": "\u10e1\u10e0\u10e3\u10da\u10d8 \u10e1\u10d8\u10e2\u10e7\u10d5\u10d4\u10d1\u10d8",
+"Find and replace": "\u10db\u10dd\u10eb\u10d4\u10d1\u10dc\u10d4 \u10d3\u10d0 \u10e8\u10d4\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4",
+"Replace with": "\u10e8\u10d4\u10e1\u10d0\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d4\u10da\u10d8 \u10e1\u10d8\u10e2\u10e7\u10d5\u10d0",
+"Find": "\u10eb\u10d4\u10d1\u10dc\u10d0",
+"Replace all": "\u10e7\u10d5\u10d4\u10da\u10d0\u10e1 \u10e8\u10d4\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d0",
+"Match case": "\u10d3\u10d0\u10d0\u10db\u10d7\u10ee\u10d5\u10d8\u10d4 \u10d0\u10e1\u10dd\u10d4\u10d1\u10d8\u10e1 \u10d6\u10dd\u10db\u10d0",
+"Prev": "\u10ec\u10d8\u10dc\u10d0",
+"Spellcheck": "\u10db\u10d0\u10e0\u10d7\u10da\u10ec\u10d4\u10e0\u10d8\u10e1 \u10e8\u10d4\u10db\u10dd\u10ec\u10db\u10d4\u10d1\u10d0",
+"Finish": "\u10e4\u10d8\u10dc\u10d8\u10e8\u10d8",
+"Ignore all": "\u10e7\u10d5\u10d4\u10da\u10d0\u10e1 \u10d8\u10d2\u10dc\u10dd\u10e0\u10d8\u10e0\u10d4\u10d1\u10d0",
+"Ignore": "\u10d8\u10d2\u10dc\u10dd\u10e0\u10d8\u10e0\u10d4\u10d1\u10d0",
+"Insert row before": "\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10d7\u10d0\u10d5\u10e8\u10d8 \u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0",
+"Rows": "\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d4\u10d1\u10d8",
+"Height": "\u10e1\u10d8\u10db\u10d0\u10e6\u10da\u10d4",
+"Paste row after": "\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10d1\u10dd\u10da\u10dd\u10e8\u10d8 \u10e9\u10d0\u10e1\u10db\u10d0",
+"Alignment": "\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d0",
+"Column group": "\u10e1\u10d5\u10d4\u10e2\u10d8\u10e1 \u10ef\u10d2\u10e3\u10e4\u10d8",
+"Row": "\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8",
+"Insert column before": "\u10e1\u10d5\u10d4\u10e2\u10d8\u10e1 \u10d7\u10d0\u10d5\u10e8\u10d8 \u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0",
+"Split cell": "\u10e3\u10ef\u10e0\u10d8\u10e1 \u10d2\u10d0\u10e7\u10dd\u10e4\u10d0",
+"Cell padding": "\u10e3\u10ef\u10e0\u10d8\u10e1 \u10e4\u10d0\u10e0\u10d7\u10dd\u10d1\u10d8",
+"Cell spacing": "\u10e3\u10ef\u10e0\u10d8\u10e1 \u10d3\u10d0\u10e8\u10dd\u10e0\u10d4\u10d1\u10d0",
+"Row type": "\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10e2\u10d8\u10de\u10d8",
+"Insert table": "\u10ea\u10ee\u10e0\u10d8\u10da\u10d8\u10e1 \u10e9\u10d0\u10e1\u10db\u10d0",
+"Body": "\u10e2\u10d0\u10dc\u10d8",
+"Caption": "\u10ec\u10d0\u10e0\u10ec\u10d4\u10e0\u10d0",
+"Footer": "\u10eb\u10d8\u10e0\u10d8",
+"Delete row": "\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10ec\u10d0\u10e8\u10da\u10d0",
+"Paste row before": "\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10d7\u10d0\u10d5\u10e8\u10d8 \u10e9\u10d0\u10e1\u10db\u10d0",
+"Scope": "\u10e9\u10d0\u10e0\u10e9\u10dd",
+"Delete table": "\u10ea\u10ee\u10e0\u10d8\u10da\u10d8\u10e1 \u10ec\u10d0\u10e8\u10da\u10d0",
+"Header cell": "\u10d7\u10d0\u10d5\u10d8\u10e1 \u10e3\u10ef\u10e0\u10d0",
+"Column": "\u10e1\u10d5\u10d4\u10e2\u10d8",
+"Cell": "\u10e3\u10ef\u10e0\u10d0",
+"Header": "\u10d7\u10d0\u10d5\u10d8",
+"Cell type": "\u10e3\u10ef\u10e0\u10d8\u10e1 \u10e2\u10d8\u10de\u10d8",
+"Copy row": "\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10d9\u10dd\u10de\u10d8\u10e0\u10d4\u10d1\u10d0",
+"Row properties": "\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10d7\u10d5\u10d8\u10e1\u10d4\u10d1\u10d4\u10d1\u10d8",
+"Table properties": "\u10ea\u10ee\u10e0\u10d8\u10da\u10d8\u10e1 \u10d7\u10d5\u10d8\u10e1\u10d4\u10d1\u10d4\u10d1\u10d8",
+"Row group": "\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10ef\u10d2\u10e3\u10e4\u10d8",
+"Right": "\u10db\u10d0\u10e0\u10ef\u10d5\u10dc\u10d8\u10d5",
+"Insert column after": "\u10e1\u10d5\u10d4\u10e2\u10d8\u10e1 \u10d1\u10dd\u10da\u10dd\u10e8\u10d8 \u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0",
+"Cols": "\u10e1\u10d5\u10d4\u10e2\u10d4\u10d1\u10d8",
+"Insert row after": "\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10d1\u10dd\u10da\u10dd\u10e8\u10d8 \u10d3\u10d0\u10db\u10d0\u10e2\u10d4\u10d1\u10d0",
+"Width": "\u10e1\u10d8\u10d2\u10d0\u10dc\u10d4",
+"Cell properties": "\u10e3\u10ef\u10e0\u10d8\u10e1 \u10d7\u10d5\u10d8\u10e1\u10d4\u10d1\u10d4\u10d1\u10d8",
+"Left": "\u10db\u10d0\u10e0\u10ea\u10ee\u10dc\u10d8\u10d5",
+"Cut row": "\u10e1\u10e2\u10e0\u10d8\u10e5\u10dd\u10dc\u10d8\u10e1 \u10d0\u10db\u10dd\u10ed\u10e0\u10d0",
+"Delete column": "\u10e1\u10d5\u10d4\u10e2\u10d8\u10e1 \u10ec\u10d0\u10e8\u10da\u10d0",
+"Center": "\u10ea\u10d4\u10dc\u10e2\u10e0\u10e8\u10d8",
+"Merge cells": "\u10e3\u10ef\u10e0\u10d4\u10d1\u10d8\u10e1 \u10d2\u10d0\u10d4\u10e0\u10d7\u10d8\u10d0\u10dc\u10d4\u10d1\u10d0",
+"Insert template": "\u10e8\u10d0\u10d1\u10da\u10dd\u10dc\u10d8\u10e1 \u10e9\u10d0\u10e1\u10db\u10d0",
+"Templates": "\u10e8\u10d0\u10d1\u10da\u10dd\u10dc\u10d4\u10d1\u10d8",
+"Background color": "\u10e3\u10d9\u10d0\u10dc\u10d0 \u10e4\u10d4\u10e0\u10d8",
+"Text color": "\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1 \u10e4\u10d4\u10e0\u10d8",
+"Show blocks": "\u10d1\u10da\u10dd\u10d9\u10d4\u10d1\u10d8\u10e1 \u10e9\u10d5\u10d4\u10dc\u10d4\u10d1\u10d0",
+"Show invisible characters": "\u10e3\u10ee\u10d8\u10da\u10d0\u10d5\u10d8 \u10e1\u10d8\u10db\u10d1\u10dd\u10da\u10dd\u10d4\u10d1\u10d8\u10e1 \u10e9\u10d5\u10d4\u10dc\u10d4\u10d1\u10d0",
+"Words: {0}": "\u10e1\u10d8\u10e2\u10e7\u10d5\u10d4\u10d1\u10d8: {0}",
+"Insert": "\u10e9\u10d0\u10e1\u10db\u10d0",
+"File": "\u10e4\u10d0\u10d8\u10da\u10d8",
+"Edit": "\u10e8\u10d4\u10e1\u10ec\u10dd\u10e0\u10d4\u10d1\u10d0",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u10e2\u10d4\u10e5\u10e1\u10e2\u10d8\u10e1 \u10e4\u10d0\u10e0\u10d7\u10d8. \u10d3\u10d0\u10d0\u10ed\u10d8\u10e0\u10d4\u10d7 ALT-F9\u10e1 \u10db\u10d4\u10dc\u10d8\u10e3\u10e1 \u10d2\u10d0\u10db\u10dd\u10e1\u10d0\u10eb\u10d0\u10ee\u10d4\u10d1\u10da\u10d0\u10d3. \u10d3\u10d0\u10d0\u10ed\u10d8\u10e0\u10d4\u10d7 ALT-F10\u10e1 \u10de\u10d0\u10dc\u10d4\u10da\u10d8\u10e1\u10d7\u10d5\u10d8\u10e1. \u10d3\u10d0\u10d0\u10ed\u10d8\u10e0\u10d4\u10d7 ALT-0\u10e1 \u10d3\u10d0\u10ee\u10db\u10d0\u10e0\u10d4\u10d1\u10d8\u10e1\u10d7\u10d5\u10d8\u10e1",
+"Tools": "\u10d8\u10d0\u10e0\u10d0\u10e6\u10d4\u10d1\u10d8",
+"View": "\u10dc\u10d0\u10ee\u10d5\u10d0",
+"Table": "\u10ea\u10ee\u10e0\u10d8\u10da\u10d8",
+"Format": "\u10e4\u10dd\u10e0\u10db\u10d0\u10e2\u10d8"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/kk.js b/program/js/tinymce/langs/kk.js
new file mode 100644
index 000000000..45e3398e2
--- /dev/null
+++ b/program/js/tinymce/langs/kk.js
@@ -0,0 +1,179 @@
+tinymce.addI18n('kk',{
+"Cut": "\u049a\u0438\u044b\u043f \u0430\u043b\u0443",
+"Header 2": "\u0422\u0430\u049b\u044b\u0440\u044b\u043f\u0448\u0430 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0411\u0440\u0430\u0443\u0437\u0435\u0440\u0456\u04a3\u0456\u0437 \u0430\u043b\u043c\u0430\u0441\u0443 \u0431\u0443\u0444\u0435\u0440\u0456\u043d\u0435 \u0442\u0456\u043a\u0435\u043b\u0435\u0439 \u049b\u0430\u0442\u044b\u043d\u0430\u0439 \u0430\u043b\u043c\u0430\u0439\u0434\u044b. Ctrl+X\/C\/V \u043f\u0435\u0440\u043d\u0435\u043b\u0435\u0440 \u0442\u0456\u0440\u043a\u0435\u0441\u0456\u043c\u0456\u043d \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u04a3\u044b\u0437.",
+"Div": "Div",
+"Paste": "\u049a\u043e\u044e",
+"Close": "\u0416\u0430\u0431\u0443",
+"Font Family": "\u049a\u0430\u0440\u0456\u043f\u0442\u0435\u0440 \u0442\u043e\u0431\u044b",
+"Pre": "Pre",
+"Align right": "\u041e\u04a3\u0493\u0430 \u043e\u0440\u043d\u0430\u043b\u0430\u0441\u0442\u044b\u0440\u0443",
+"New document": "\u0416\u0430\u04a3\u0430 \u049b\u04b1\u0436\u0430\u0442",
+"Blockquote": "\u0414\u04d9\u0439\u0435\u043a\u0441\u04e9\u0437",
+"Numbered list": "\u041d\u04e9\u043c\u0456\u0440\u043b\u0435\u043d\u0433\u0435\u043d \u0442\u0456\u0437\u0456\u043c",
+"Increase indent": "\u0428\u0435\u0433\u0456\u043d\u0456\u0441\u0442\u0456 \u0430\u0440\u0442\u0442\u044b\u0440\u0443",
+"Formats": "\u0424\u043e\u0440\u043c\u0430\u0442\u0442\u0430\u0440",
+"Headers": "\u0422\u0430\u049b\u044b\u0440\u044b\u043f\u0448\u0430",
+"Select all": "\u0411\u0430\u0440\u043b\u044b\u0493\u044b\u043d \u0442\u0430\u04a3\u0434\u0430\u0443",
+"Header 3": "\u0422\u0430\u049b\u044b\u0440\u044b\u043f\u0448\u0430 3",
+"Blocks": "\u0411\u043b\u043e\u043a\u0442\u0435\u043a\u0442\u0435\u0441 (Block)",
+"Undo": "\u0411\u043e\u043b\u0434\u044b\u0440\u043c\u0430\u0443",
+"Strikethrough": "\u0411\u0435\u043b\u0456\u043d\u0435\u043d \u0441\u044b\u0437\u044b\u043b\u0493\u0430\u043d",
+"Bullet list": "\u0422\u0430\u04a3\u0431\u0430\u043b\u0430\u043d\u0493\u0430\u043d \u0442\u0456\u0437\u0456\u043c",
+"Header 1": "\u0422\u0430\u049b\u044b\u0440\u044b\u043f\u0448\u0430 1",
+"Superscript": "\u04ae\u0441\u0442\u0456\u04a3\u0433\u0456 \u0438\u043d\u0434\u0435\u043a\u0441",
+"Clear formatting": "\u0424\u043e\u0440\u043c\u0430\u0442\u0442\u0430\u0443\u0434\u0430\u043d \u0442\u0430\u0437\u0430\u0440\u0442\u0443",
+"Font Sizes": "\u049a\u0430\u0440\u0456\u043f\u0442\u0435\u0440 \u04e9\u043b\u0448\u0435\u043c\u0456",
+"Subscript": "\u0410\u0441\u0442\u044b\u04a3\u0493\u044b \u0438\u043d\u0434\u0435\u043a\u0441",
+"Header 6": "\u0422\u0430\u049b\u044b\u0440\u044b\u043f\u0448\u0430 6",
+"Redo": "\u049a\u0430\u0439\u0442\u0430\u0440\u0443",
+"Paragraph": "\u0410\u0431\u0437\u0430\u0446",
+"Ok": "\u041e\u041a",
+"Bold": "\u0416\u0443\u0430\u043d",
+"Code": "\u041a\u043e\u0434",
+"Italic": "\u041a\u04e9\u043b\u0431\u0435\u0443",
+"Align center": "\u041e\u0440\u0442\u0430\u0441\u044b\u043d\u0430 \u043e\u0440\u043d\u0430\u043b\u0430\u0441\u0442\u044b\u0440\u0443",
+"Header 5": "\u0422\u0430\u049b\u044b\u0440\u044b\u043f\u0448\u0430 5",
+"Decrease indent": "\u0428\u0435\u0433\u0456\u043d\u0456\u0441\u0442\u0456 \u043a\u0435\u043c\u0456\u0442\u0443",
+"Header 4": "\u0422\u0430\u049b\u044b\u0440\u044b\u043f\u0448\u0430 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u041e\u0441\u044b \u043e\u043f\u0446\u0438\u044f \u04e9\u0448\u0456\u0440\u0456\u043b\u043c\u0435\u0433\u0435\u043d\u0448\u0435, \u0431\u0443\u0444\u0435\u0440\u0434\u0435\u0433\u0456 \u043c\u04d9\u0442\u0456\u043d \u043a\u04d9\u0434\u0456\u043c\u0433\u0456 \u043c\u04d9\u0442\u0456\u043d \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u049b\u043e\u0439\u044b\u043b\u0430\u0434\u044b.",
+"Underline": "\u0410\u0441\u0442\u044b \u0441\u044b\u0437\u044b\u043b\u0493\u0430\u043d",
+"Cancel": "\u0411\u0430\u0441 \u0442\u0430\u0440\u0442\u0443",
+"Justify": "\u0422\u043e\u043b\u0442\u044b\u0440\u0443",
+"Inline": "\u041a\u0456\u0440\u0456\u0441\u0442\u0456\u0440\u0456\u043b\u0433\u0435\u043d (Inline)",
+"Copy": "\u041a\u04e9\u0448\u0456\u0440\u0443",
+"Align left": "\u0421\u043e\u043b\u0493\u0430 \u043e\u0440\u043d\u0430\u043b\u0430\u0441\u0442\u044b\u0440\u0443",
+"Visual aids": "\u041a\u04e9\u043c\u0435\u043a\u0448\u0456 \u0431\u0435\u043b\u0433\u0456\u043b\u0435\u0440",
+"Lower Greek": "\u041a\u0456\u0448\u0456 \u0433\u0440\u0435\u043a \u04d9\u0440\u0456\u043f\u0442\u0435\u0440\u0456",
+"Square": "\u0428\u0430\u0440\u0448\u044b",
+"Default": "\u04d8\u0434\u0435\u043f\u043a\u0456",
+"Lower Alpha": "\u041a\u0456\u0448\u0456 \u04d9\u0440\u0456\u043f\u0442\u0435\u0440",
+"Circle": "\u0428\u0435\u04a3\u0431\u0435\u0440",
+"Disc": "\u0414\u0438\u0441\u043a",
+"Upper Alpha": "\u0411\u0430\u0441 \u04d9\u0440\u0456\u043f\u0442\u0435\u0440",
+"Upper Roman": "\u0411\u0430\u0441 \u0440\u0438\u043c \u0446\u0438\u0444\u0440\u043b\u0430\u0440\u044b",
+"Lower Roman": "\u041a\u0456\u0448\u0456 \u0440\u0438\u043c \u0446\u0438\u0444\u0440\u043b\u0430\u0440\u044b",
+"Name": "\u0410\u0442\u044b",
+"Anchor": "\u0411\u0435\u0442\u0431\u0435\u043b\u0433\u0456",
+"You have unsaved changes are you sure you want to navigate away?": "\u0421\u0430\u049b\u0442\u0430\u043b\u043c\u0430\u0493\u0430\u043d \u04e9\u0437\u0433\u0435\u0440\u0456\u0441\u0442\u0435\u0440 \u0431\u0430\u0440. \u0421\u0456\u0437 \u0448\u044b\u043d\u044b\u043c\u0435\u043d \u0431\u0430\u0441\u049b\u0430 \u0436\u0435\u0440\u0433\u0435 \u043a\u0435\u0442\u0443\u0434\u0456 \u049b\u0430\u043b\u0430\u0439\u0441\u044b\u0437 \u0431\u0430?",
+"Restore last draft": "\u0421\u043e\u04a3\u0493\u044b \u0441\u0430\u049b\u0442\u0430\u043b\u0493\u0430\u043d\u0434\u044b \u049b\u0430\u043b\u043f\u044b\u043d\u0430 \u043a\u0435\u043b\u0442\u0456\u0440\u0443",
+"Special character": "\u0410\u0440\u043d\u0430\u0439\u044b \u0442\u0430\u04a3\u0431\u0430",
+"Source code": "\u0411\u0430\u0441\u0442\u0430\u043f\u049b\u044b \u043a\u043e\u0434",
+"Right to left": "\u041e\u04a3\u043d\u0430\u043d \u0441\u043e\u043b\u0493\u0430",
+"Left to right": "\u0421\u043e\u043b\u0434\u0430\u043d \u043e\u04a3\u0493\u0430",
+"Emoticons": "\u0421\u043c\u0430\u0439\u043b\u0438\u043a\u0442\u0430\u0440",
+"Robots": "Meta-robots",
+"Document properties": "\u049a\u04b1\u0436\u0430\u0442 \u0441\u0438\u043f\u0430\u0442\u0442\u0430\u0440\u044b",
+"Title": "\u0410\u0442\u0430\u0443\u044b",
+"Keywords": "Meta-keywords",
+"Encoding": "Meta-charset",
+"Description": "\u0421\u0438\u043f\u0430\u0442\u0442\u0430\u043c\u0430\u0441\u044b",
+"Author": "Meta-author",
+"Fullscreen": "\u0422\u043e\u043b\u044b\u049b \u044d\u043a\u0440\u0430\u043d",
+"Horizontal line": "\u041a\u04e9\u043b\u0434\u0435\u043d\u0435\u04a3 \u0441\u044b\u0437\u044b\u049b",
+"Horizontal space": "\u041a\u04e9\u043b\u0434\u0435\u043d\u0435\u04a3\u0456\u043d\u0435\u043d \u049b\u0430\u043b\u0430\u0442\u044b\u043d \u043e\u0440\u044b\u043d",
+"Insert\/edit image": "\u0421\u0443\u0440\u0435\u0442 \u043a\u0456\u0440\u0456\u0441\u0442\u0456\u0440\u0443\/\u0442\u04af\u0437\u0435\u0442\u0443",
+"General": "\u0416\u0430\u043b\u043f\u044b",
+"Advanced": "\u049a\u043e\u0441\u044b\u043c\u0448\u0430",
+"Source": "\u0410\u0434\u0440\u0435\u0441\u0456",
+"Border": "\u0416\u0438\u0435\u0433\u0456",
+"Constrain proportions": "\u041f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u044f\u043b\u0430\u0440\u0434\u044b \u0441\u0430\u049b\u0442\u0430\u0443",
+"Vertical space": "\u0422\u0456\u043a \u043a\u0435\u04a3\u0434\u0456\u0433\u0456",
+"Image description": "\u0421\u0443\u0440\u0435\u0442 \u0441\u0438\u043f\u0430\u0442\u0442\u0430\u043c\u0430\u0441\u044b",
+"Style": "\u0421\u0442\u0438\u043b\u0456",
+"Dimensions": "\u04e8\u043b\u0448\u0435\u043c\u0434\u0435\u0440\u0456",
+"Insert image": "\u0421\u0443\u0440\u0435\u0442 \u043a\u0456\u0440\u0456\u0441\u0442\u0456\u0440\u0443",
+"Insert date\/time": "\u041a\u04af\u043d\/\u0443\u0430\u049b\u044b\u0442 \u043a\u0456\u0440\u0456\u0441\u0442\u0456\u0440\u0443",
+"Remove link": "\u0421\u0456\u043b\u0442\u0435\u043c\u0435\u043d\u0456 \u0430\u043b\u044b\u043f \u0442\u0430\u0441\u0442\u0430\u0443",
+"Url": "URL-\u0430\u0434\u0440\u0435\u0441\u0456",
+"Text to display": "\u041a\u04e9\u0440\u0441\u0435\u0442\u0456\u043b\u0435\u0442\u0456\u043d \u043c\u04d9\u0442\u0456\u043d",
+"Anchors": "\u0421\u0456\u043b\u0442\u0435\u043c\u0435\u043b\u0435\u0440",
+"Insert link": "\u0421\u0456\u043b\u0442\u0435\u043c\u0435 \u043a\u0456\u0440\u0456\u0441\u0442\u0456\u0440\u0443",
+"New window": "\u0416\u0430\u04a3\u0430 \u0442\u0435\u0440\u0435\u0437\u0435",
+"None": "\u0416\u043e\u049b",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?",
+"Target": "\u0410\u0448\u044b\u043b\u0430\u0442\u044b\u043d \u0436\u0435\u0440\u0456",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",
+"Insert\/edit link": "\u0421\u0456\u043b\u0442\u0435\u043c\u0435 \u043a\u0456\u0440\u0456\u0441\u0442\u0456\u0440\u0443\/\u0442\u04af\u0437\u0435\u0442\u0443",
+"Insert\/edit video": "\u0412\u0438\u0434\u0435\u043e \u043a\u0456\u0440\u0456\u0441\u0442\u0456\u0440\u0443\/\u0442\u04af\u0437\u0435\u0442\u0443",
+"Poster": "\u041f\u043e\u0441\u0442\u0435\u0440\u0456",
+"Alternative source": "\u049a\u043e\u0441\u044b\u043c\u0448\u0430 \u0430\u0434\u0440\u0435\u0441\u0456",
+"Paste your embed code below:": "\u0422\u04e9\u043c\u0435\u043d\u0434\u0435\u0433\u0456 \u043a\u043e\u0434\u0442\u044b \u043a\u04e9\u0448\u0456\u0440\u0456\u043f \u0430\u043b\u044b\u043f, \u049b\u043e\u0439\u044b\u04a3\u044b\u0437:",
+"Insert video": "\u0412\u0438\u0434\u0435\u043e \u043a\u0456\u0440\u0456\u0441\u0442\u0456\u0440\u0443",
+"Embed": "\u0415\u043d\u0434\u0456\u0440\u0443",
+"Nonbreaking space": "\u04ae\u0437\u0434\u0456\u043a\u0441\u0456\u0437 \u0431\u043e\u0441 \u043e\u0440\u044b\u043d",
+"Page break": "\u0411\u0435\u0442 \u04af\u0437\u0456\u043b\u0456\u043c\u0456",
+"Paste as text": "\u041c\u04d9\u0442\u0456\u043d \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u049b\u043e\u044e",
+"Preview": "\u0410\u043b\u0434\u044b\u043d-\u0430\u043b\u0430 \u049b\u0430\u0440\u0430\u0443",
+"Print": "\u0411\u0430\u0441\u044b\u043f \u0448\u044b\u0493\u0430\u0440\u0443",
+"Save": "\u0421\u0430\u049b\u0442\u0430\u0443",
+"Could not find the specified string.": "\u041a\u04e9\u0440\u0441\u0435\u0442\u0456\u043b\u0433\u0435\u043d \u0436\u043e\u043b \u0442\u0430\u0431\u044b\u043b\u043c\u0430\u0434\u044b.",
+"Replace": "\u0410\u0443\u044b\u0441\u0442\u044b\u0440\u0443",
+"Next": "\u041a\u0435\u043b\u0435\u0441\u0456",
+"Whole words": "\u0422\u04b1\u0442\u0430\u0441 \u0441\u04e9\u0437\u0434\u0435\u0440",
+"Find and replace": "\u0422\u0430\u0431\u0443 \u0436\u04d9\u043d\u0435 \u0430\u0443\u044b\u0441\u0442\u044b\u0440\u0443",
+"Replace with": "\u0410\u0443\u044b\u0441\u0442\u044b\u0440\u0430\u0442\u044b\u043d \u043c\u04d9\u0442\u0456\u043d",
+"Find": "\u0422\u0430\u0431\u044b\u043b\u0430\u0442\u044b\u043d \u043c\u04d9\u0442\u0456\u043d",
+"Replace all": "\u0411\u0430\u0440\u043b\u044b\u0493\u044b\u043d \u0430\u0443\u044b\u0441\u0442\u044b\u0440\u0443",
+"Match case": "\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0434\u0456 \u0435\u0441\u043a\u0435\u0440\u0443",
+"Prev": "\u0410\u043b\u0434\u044b\u04a3\u0493\u044b",
+"Spellcheck": "\u0415\u043c\u043b\u0435 \u0442\u0435\u043a\u0441\u0435\u0440\u0443",
+"Finish": "\u0410\u044f\u049b\u0442\u0430\u0443",
+"Ignore all": "\u0415\u0448\u049b\u0430\u0439\u0441\u044b\u0441\u044b\u043d \u0435\u043b\u0435\u043c\u0435\u0443",
+"Ignore": "\u0415\u043b\u0435\u043c\u0435\u0443",
+"Insert row before": "\u04ae\u0441\u0442\u0456\u043d\u0435 \u0436\u043e\u043b \u049b\u043e\u0441\u0443",
+"Rows": "\u0416\u043e\u043b\u044b",
+"Height": "\u0411\u0438\u0456\u043a\u0442\u0456\u0433\u0456",
+"Paste row after": "\u0416\u043e\u043b\u0434\u044b\u04a3 \u0430\u0441\u0442\u044b\u043d\u0430 \u049b\u043e\u044e",
+"Alignment": "\u041e\u0440\u043d\u0430\u043b\u0430\u0441\u0443\u044b",
+"Column group": "\u0411\u0430\u0493\u0430\u043d \u0442\u043e\u0431\u044b",
+"Row": "\u0416\u043e\u043b",
+"Insert column before": "\u0410\u043b\u0434\u044b\u043d\u0430 \u0431\u0430\u0493\u0430\u043d \u049b\u043e\u0441\u0443",
+"Split cell": "\u04b0\u044f\u0448\u044b\u049b\u0442\u044b \u0431\u04e9\u043b\u0443",
+"Cell padding": "\u04b0\u044f\u0448\u044b\u049b \u043a\u0435\u04a3\u0434\u0456\u0433\u0456",
+"Cell spacing": "\u04b0\u044f\u0448\u044b\u049b \u0430\u0440\u0430\u043b\u044b\u0493\u044b",
+"Row type": "\u0416\u043e\u043b \u0442\u0438\u043f\u0456",
+"Insert table": "\u041a\u0435\u0441\u0442\u0435 \u043a\u0456\u0440\u0456\u0441\u0442\u0456\u0440\u0443",
+"Body": "\u041d\u0435\u0433\u0456\u0437\u0433\u0456 \u0431\u04e9\u043b\u0456\u0433\u0456",
+"Caption": "\u0410\u0442\u0430\u0443\u044b",
+"Footer": "\u0410\u044f\u049b \u0436\u0430\u0493\u044b",
+"Delete row": "\u0416\u043e\u043b\u0434\u044b \u0436\u043e\u044e",
+"Paste row before": "\u0416\u043e\u043b\u0434\u044b\u04a3 \u04af\u0441\u0442\u0456\u043d\u0435 \u049b\u043e\u044e",
+"Scope": "\u0410\u0443\u043c\u0430\u0493\u044b",
+"Delete table": "\u041a\u0435\u0441\u0442\u0435\u043d\u0456 \u0436\u043e\u044e",
+"Header cell": "\u0422\u0430\u049b\u044b\u0440\u044b\u043f\u0448\u0430 \u04b1\u044f\u0448\u044b\u049b",
+"Column": "\u0411\u0430\u0493\u0430\u043d",
+"Cell": "\u04b0\u044f\u0448\u044b\u049b",
+"Header": "\u0411\u0430\u0441 \u0436\u0430\u0493\u044b",
+"Cell type": "\u04b0\u044f\u0448\u044b\u049b \u0442\u0438\u043f\u0456",
+"Copy row": "\u0416\u043e\u043b\u0434\u044b \u043a\u04e9\u0448\u0456\u0440\u0443",
+"Row properties": "\u0416\u043e\u043b \u0441\u0438\u043f\u0430\u0442\u0442\u0430\u0440\u044b",
+"Table properties": "\u041a\u0435\u0441\u0442\u0435 \u0441\u0438\u043f\u0430\u0442\u0442\u0430\u0440\u044b",
+"Row group": "\u0416\u043e\u043b \u0442\u043e\u0431\u044b",
+"Right": "\u041e\u04a3\u0493\u0430",
+"Insert column after": "\u0410\u0440\u0442\u044b\u043d\u0430 \u0431\u0430\u0493\u0430\u043d \u049b\u043e\u0441\u0443",
+"Cols": "\u0411\u0430\u0493\u0430\u043d\u044b",
+"Insert row after": "\u0410\u0441\u0442\u044b\u043d\u0430 \u0436\u043e\u043b \u049b\u043e\u0441\u0443",
+"Width": "\u04b0\u0437\u044b\u043d\u0434\u044b\u0493\u044b",
+"Cell properties": "\u04b0\u044f\u0448\u044b\u049b \u0441\u0438\u043f\u0430\u0442\u0442\u0430\u0440\u044b",
+"Left": "\u0421\u043e\u043b\u0493\u0430",
+"Cut row": "\u0416\u043e\u043b\u0434\u044b \u049b\u0438\u044b\u043f \u0430\u043b\u0443",
+"Delete column": "\u0411\u0430\u0493\u0430\u043d\u0434\u044b \u0436\u043e\u044e",
+"Center": "\u041e\u0440\u0442\u0430\u0441\u044b\u043d\u0430",
+"Merge cells": "\u04b0\u044f\u0448\u044b\u049b\u0442\u0430\u0440\u0434\u044b \u0431\u0456\u0440\u0456\u043a\u0442\u0456\u0440\u0443",
+"Insert template": "\u04ae\u043b\u0433\u0456 \u043a\u0456\u0440\u0456\u0441\u0442\u0456\u0440\u0443",
+"Templates": "\u04ae\u043b\u0433\u0456\u043b\u0435\u0440",
+"Background color": "\u04e8\u04a3\u0456\u043d\u0456\u04a3 \u0442\u04af\u0441\u0456",
+"Text color": "\u041c\u04d9\u0442\u0456\u043d \u0442\u04af\u0441\u0456",
+"Show blocks": "\u0411\u043b\u043e\u043a\u0442\u0430\u0440\u0434\u044b \u043a\u04e9\u0440\u0441\u0435\u0442\u0443",
+"Show invisible characters": "\u041a\u04e9\u0440\u0456\u043d\u0431\u0435\u0439\u0442\u0456\u043d \u0442\u0430\u04a3\u0431\u0430\u043b\u0430\u0440\u0434\u044b \u043a\u04e9\u0440\u0441\u0435\u0442\u0443",
+"Words: {0}": "\u0421\u04e9\u0437 \u0441\u0430\u043d\u044b: {0}",
+"Insert": "\u041a\u0456\u0440\u0456\u0441\u0442\u0456\u0440\u0443",
+"File": "\u0424\u0430\u0439\u043b",
+"Edit": "\u0422\u04af\u0437\u0435\u0442\u0443",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u0424\u043e\u0440\u043c\u0430\u0442\u0442\u0430\u043b\u0493\u0430\u043d \u043c\u04d9\u0442\u0456\u043d \u0430\u0443\u043c\u0430\u0493\u044b. \u041c\u0435\u043d\u044e \u043a\u04e9\u0440\u0441\u0435\u0442\u0443 \u04af\u0448\u0456\u043d ALT-F9 \u0431\u0430\u0441\u044b\u04a3\u044b\u0437. \u049a\u04b1\u0440\u0430\u043b\u0434\u0430\u0440 \u043f\u0430\u043d\u0435\u043b\u0456\u043d \u043a\u04e9\u0440\u0441\u0435\u0442\u0443 \u04af\u0448\u0456\u043d ALT-F10 \u0431\u0430\u0441\u044b\u04a3\u044b\u0437. \u041a\u04e9\u043c\u0435\u043a \u0430\u043b\u0443 \u04af\u0448\u0456\u043d ALT-0 \u0431\u0430\u0441\u044b\u04a3\u044b\u0437.",
+"Tools": "\u049a\u04b1\u0440\u0430\u043b\u0434\u0430\u0440",
+"View": "\u041a\u04e9\u0440\u0456\u043d\u0456\u0441",
+"Table": "\u041a\u0435\u0441\u0442\u0435",
+"Format": "\u0424\u043e\u0440\u043c\u0430\u0442"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/km_KH.js b/program/js/tinymce/langs/km_KH.js
new file mode 100644
index 000000000..9446d4df5
--- /dev/null
+++ b/program/js/tinymce/langs/km_KH.js
@@ -0,0 +1,197 @@
+tinymce.addI18n('km_KH',{
+"Cut": "\u1780\u17b6\u178f\u17cb",
+"Heading 5": "\u1780\u17d2\u1794\u17b6\u179b 5",
+"Header 2": "\u1780\u17d2\u1794\u17b6\u179b 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u1780\u1798\u17d2\u1798\u179c\u17b7\u1792\u17b8\u200b\u17a2\u17ca\u17b8\u1793\u1792\u17ba\u178e\u17b7\u178f\u200b\u179a\u1794\u179f\u17cb\u200b\u17a2\u17d2\u1793\u1780\u200b\u1798\u17b7\u1793\u200b\u17a2\u17b6\u1785\u200b\u1785\u17bc\u179b\u200b\u1795\u17d2\u1791\u17b6\u179b\u17cb\u200b\u1791\u17c5\u200b\u1780\u17b6\u1793\u17cb\u200b\u1780\u17d2\u178a\u17b6\u179a\u200b\u178f\u1798\u17d2\u1794\u17c0\u178f\u200b\u1781\u17d2\u1791\u17b6\u179f\u17cb\u200b\u17a1\u17be\u1799\u17d4 \u179f\u17bc\u1798\u200b\u1794\u17d2\u179a\u17be Ctrl+X\/C\/V \u179b\u17be\u200b\u1780\u17d2\u178a\u17b6\u179a\u200b\u1785\u17bb\u1785\u200b\u1787\u17c6\u1793\u17bd\u179f\u200b\u179c\u17b7\u1789\u17d4",
+"Heading 4": "\u1780\u17d2\u1794\u17b6\u179b 4",
+"Div": "Div",
+"Heading 2": "\u1780\u17d2\u1794\u17b6\u179b 2",
+"Paste": "\u1794\u17b7\u1791\u200b\u1797\u17d2\u1787\u17b6\u1794\u17cb",
+"Close": "\u1794\u17b7\u1791",
+"Font Family": "\u1796\u17bb\u1798\u17d2\u1796\u200b\u17a2\u1780\u17d2\u179f\u179a",
+"Pre": "Pre",
+"Align right": "\u178f\u1798\u17d2\u179a\u17b9\u1798\u200b\u1791\u17c5\u200b\u179f\u17d2\u178a\u17b6\u17c6",
+"New document": "\u17af\u1780\u179f\u17b6\u179a\u200b\u17a2\u178f\u17d2\u1790\u1794\u1791\u200b\u1790\u17d2\u1798\u17b8",
+"Blockquote": "\u1794\u17d2\u179b\u1780\u17cb\u200b\u1796\u17b6\u1780\u17d2\u1799\u200b\u179f\u1798\u17d2\u179a\u1784\u17cb",
+"Numbered list": "\u1794\u1789\u17d2\u1787\u17b8\u200b\u1787\u17b6\u200b\u179b\u17c1\u1781",
+"Heading 1": "\u1780\u17d2\u1794\u17b6\u179b 1",
+"Headings": "\u1780\u17d2\u1794\u17b6\u179b",
+"Increase indent": "\u1781\u17b7\u178f\u200b\u1794\u1793\u17d2\u1791\u17b6\u178f\u17cb\u200b\u1785\u17bc\u179b",
+"Formats": "\u1791\u1798\u17d2\u179a\u1784\u17cb",
+"Headers": "\u1780\u17d2\u1794\u17b6\u179b",
+"Select all": "\u1787\u17d2\u179a\u17be\u179f\u200b\u1791\u17b6\u17c6\u1784\u200b\u17a2\u179f\u17cb",
+"Header 3": "\u1780\u17d2\u1794\u17b6\u179b 3",
+"Blocks": "\u1794\u17d2\u179b\u1780\u17cb",
+"Undo": "\u1798\u17b7\u1793\u200b\u1792\u17d2\u179c\u17be\u200b\u179c\u17b7\u1789",
+"Strikethrough": "\u1782\u17bc\u179f\u200b\u1794\u1793\u17d2\u1791\u17b6\u178f\u17cb\u200b\u1780\u178e\u17d2\u178a\u17b6\u179b",
+"Bullet list": "\u1794\u1789\u17d2\u1787\u17b8\u200b\u1787\u17b6\u200b\u1785\u17c6\u178e\u17bb\u1785",
+"Header 1": "\u1780\u17d2\u1794\u17b6\u179b 1",
+"Superscript": "\u17a2\u1780\u17d2\u179f\u179a\u200b\u178f\u17bc\u1785\u200b\u179b\u17be",
+"Clear formatting": "\u179f\u1798\u17d2\u17a2\u17b6\u178f\u200b\u1791\u1798\u17d2\u179a\u1784\u17cb",
+"Font Sizes": "\u1791\u17c6\u17a0\u17c6\u200b\u17a2\u1780\u17d2\u179f\u179a",
+"Subscript": "\u17a2\u1780\u17d2\u179f\u179a\u200b\u178f\u17bc\u1785\u200b\u1780\u17d2\u179a\u17c4\u1798",
+"Header 6": "\u1780\u17d2\u1794\u17b6\u179b 6",
+"Redo": "\u1792\u17d2\u179c\u17be\u200b\u179c\u17b7\u1789",
+"Paragraph": "\u1780\u178b\u17b6\u1781\u178e\u17d2\u178c",
+"Ok": "\u1796\u17d2\u179a\u1798",
+"Bold": "\u178a\u17b7\u178f",
+"Code": "\u1780\u17bc\u178a",
+"Italic": "\u1791\u17d2\u179a\u17c1\u178f",
+"Align center": "\u178f\u1798\u17d2\u179a\u17b9\u1798\u200b\u1791\u17c5\u200b\u1780\u178e\u17d2\u178a\u17b6\u179b",
+"Header 5": "\u1780\u17d2\u1794\u17b6\u179b 5",
+"Heading 6": "\u1780\u17d2\u1794\u17b6\u179b 6",
+"Heading 3": "\u1780\u17d2\u1794\u17b6\u179b 3",
+"Decrease indent": "\u1781\u17b7\u178f\u200b\u1794\u1793\u17d2\u1791\u17b6\u178f\u17cb\u200b\u1785\u17c1\u1789",
+"Header 4": "\u1780\u17d2\u1794\u17b6\u179b 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u1780\u17b6\u179a\u200b\u1794\u17b7\u1791\u200b\u1797\u17d2\u1787\u17b6\u1794\u17cb\u200b\u1796\u17c1\u179b\u200b\u1793\u17c1\u17c7 \u179f\u17d2\u1790\u17b7\u178f\u200b\u1780\u17d2\u1793\u17bb\u1784\u200b\u1794\u17c2\u1794\u200b\u1795\u17c2\u1793\u200b\u17a2\u1780\u17d2\u179f\u179a\u200b\u1792\u1798\u17d2\u1798\u178f\u17b6\u17d4 \u1794\u1785\u17d2\u1785\u17bb\u1794\u17d2\u1794\u1793\u17d2\u1793\u200b\u1793\u17c1\u17c7 \u1798\u17b6\u178f\u17b7\u1780\u17b6\u200b\u1791\u17b6\u17c6\u1784\u200b\u17a1\u17b6\u1799\u200b\u1793\u17b9\u1784\u200b\u178f\u17d2\u179a\u17bc\u179c\u200b\u1794\u17b6\u1793\u200b\u1794\u17b7\u1791\u200b\u1797\u17d2\u1787\u17b6\u1794\u17cb\u200b\u1787\u17b6\u200b\u17a2\u1780\u17d2\u179f\u179a\u200b\u1792\u1798\u17d2\u1798\u178f\u17b6 \u179b\u17bb\u17c7\u178f\u17d2\u179a\u17b6\u200b\u178f\u17c2\u200b\u17a2\u17d2\u1793\u1780\u200b\u1794\u17b7\u1791\u200b\u1787\u1798\u17d2\u179a\u17be\u179f\u200b\u1793\u17c1\u17c7\u17d4",
+"Underline": "\u1782\u17bc\u179f\u200b\u1794\u1793\u17d2\u1791\u17b6\u178f\u17cb\u200b\u1796\u17b8\u200b\u1780\u17d2\u179a\u17c4\u1798",
+"Cancel": "\u1794\u17c4\u17c7\u200b\u1794\u1784\u17cb",
+"Justify": "\u178f\u1798\u17d2\u179a\u17b9\u1798\u200b\u1796\u17c1\u1789",
+"Inline": "\u1780\u17d2\u1793\u17bb\u1784\u200b\u1794\u1793\u17d2\u1791\u17b6\u178f\u17cb",
+"Copy": "\u1785\u1798\u17d2\u179b\u1784",
+"Align left": "\u178f\u1798\u17d2\u179a\u17b9\u1798\u200b\u1791\u17c5\u200b\u1786\u17d2\u179c\u17c1\u1784",
+"Visual aids": "\u1791\u17b7\u178a\u17d2\u178b\u1797\u17b6\u1796\u200b\u1787\u17c6\u1793\u17bd\u1799",
+"Lower Greek": "\u179b\u17c1\u1781\u200b\u1780\u17d2\u179a\u17b7\u1780\u200b\u178f\u17bc\u1785",
+"Square": "\u1787\u17d2\u179a\u17bb\u1784",
+"Default": "\u179b\u17c6\u1793\u17b6\u17c6\u200b\u178a\u17be\u1798",
+"Lower Alpha": "\u17a2\u1780\u17d2\u179f\u179a\u200b\u178f\u17bc\u1785",
+"Circle": "\u1798\u17bc\u179b",
+"Disc": "\u1790\u17b6\u179f",
+"Upper Alpha": "\u17a2\u1780\u17d2\u179f\u179a\u200b\u1792\u17c6",
+"Upper Roman": "\u179b\u17c1\u1781\u200b\u179a\u17c9\u17bc\u1798\u17c9\u17b6\u17c6\u1784\u200b\u1792\u17c6",
+"Lower Roman": "\u179b\u17c1\u1781\u200b\u179a\u17c9\u17bc\u1798\u17c9\u17b6\u17c6\u1784\u200b\u178f\u17bc\u1785",
+"Name": "\u1788\u17d2\u1798\u17c4\u17c7",
+"Anchor": "\u1799\u17bb\u1790\u17d2\u1780\u17b6",
+"You have unsaved changes are you sure you want to navigate away?": "\u1798\u17b6\u1793\u200b\u1794\u1793\u17d2\u179b\u17b6\u179f\u17cb\u200b\u1794\u17d2\u178a\u17bc\u179a\u200b\u1798\u17b7\u1793\u200b\u1791\u17b6\u1793\u17cb\u200b\u1794\u17b6\u1793\u200b\u179a\u1780\u17d2\u179f\u17b6\u200b\u1791\u17bb\u1780\u17d4 \u178f\u17be\u200b\u17a2\u17d2\u1793\u1780\u200b\u1796\u17b7\u178f\u200b\u1787\u17b6\u200b\u1785\u1784\u17cb\u200b\u1785\u17b6\u1780\u200b\u1785\u17c1\u1789\u200b\u1796\u17b8\u1791\u17b8\u1793\u17c1\u17c7\u200b\u1798\u17c2\u1793\u1791\u17c1?",
+"Restore last draft": "\u179f\u17d2\u178a\u17b6\u179a\u200b\u179f\u17c1\u1785\u1780\u17d2\u178a\u17b8\u200b\u1796\u17d2\u179a\u17b6\u1784\u200b\u1796\u17b8\u200b\u1798\u17bb\u1793",
+"Special character": "\u178f\u17bd\u200b\u17a2\u1780\u17d2\u179f\u179a\u200b\u1796\u17b7\u179f\u17c1\u179f",
+"Source code": "\u17a2\u1780\u17d2\u179f\u179a\u200b\u1780\u17bc\u178a",
+"Color": "\u1796\u178e\u17cc",
+"Right to left": "\u179f\u17d2\u178a\u17b6\u17c6\u200b\u1791\u17c5\u200b\u1786\u17d2\u179c\u17c1\u1784",
+"Left to right": "\u1786\u17d2\u179c\u17c1\u1784\u200b\u1791\u17c5\u200b\u179f\u17d2\u178a\u17b6\u17c6",
+"Emoticons": "\u179a\u17bc\u1794\u200b\u179f\u1789\u17d2\u1789\u17b6\u178e\u200b\u17a2\u17b6\u179a\u1798\u17d2\u1798\u178e\u17cd",
+"Robots": "\u179a\u17bc\u1794\u1799\u1793\u17d2\u178f",
+"Document properties": "\u179b\u1780\u17d2\u1781\u178e\u17c8\u200b\u179f\u1798\u17d2\u1794\u178f\u17d2\u178f\u17b7\u200b\u17af\u1780\u179f\u17b6\u179a",
+"Title": "\u1785\u17c6\u178e\u1784\u200b\u1787\u17be\u1784",
+"Keywords": "\u1796\u17b6\u1780\u17d2\u1799\u200b\u1782\u1793\u17d2\u179b\u17b9\u17c7",
+"Encoding": "\u1780\u17b6\u179a\u200b\u17a2\u17ca\u17b8\u1793\u1780\u17bc\u178a",
+"Description": "\u179f\u17c1\u1785\u1780\u17d2\u178a\u17b8\u200b\u17a2\u1792\u17b7\u1794\u17d2\u1794\u17b6\u1799",
+"Author": "\u17a2\u17d2\u1793\u1780\u200b\u1793\u17b7\u1796\u1793\u17d2\u1792",
+"Fullscreen": "\u1796\u17c1\u1789\u200b\u17a2\u17c1\u1780\u17d2\u179a\u1784\u17cb",
+"Horizontal line": "\u1794\u1793\u17d2\u1791\u17b6\u178f\u17cb\u200b\u178a\u17c1\u1780",
+"Horizontal space": "\u179b\u17c6\u17a0\u200b\u1795\u17d2\u178a\u17c1\u1780",
+"Insert\/edit image": "\u1794\u1789\u17d2\u1785\u17bc\u179b\/\u1780\u17c2 \u179a\u17bc\u1794\u200b\u1797\u17b6\u1796",
+"General": "\u1791\u17bc\u1791\u17c5",
+"Advanced": "\u1780\u1798\u17d2\u179a\u17b7\u178f\u200b\u1781\u17d2\u1796\u179f\u17cb",
+"Source": "\u1794\u17d2\u179a\u1797\u1796",
+"Border": "\u179f\u17ca\u17bb\u1798",
+"Constrain proportions": " \u1794\u1784\u17d2\u1781\u17c6\u200b\u17b2\u17d2\u1799\u200b\u1798\u17b6\u1793\u200b\u179f\u1798\u17b6\u1798\u17b6\u178f\u17d2\u179a",
+"Vertical space": "\u179b\u17c6\u17a0\u200b\u1794\u1789\u17d2\u1788\u179a",
+"Image description": "\u179f\u17c1\u1785\u1780\u17d2\u178a\u17b8\u200b\u17a2\u1792\u17b7\u1794\u17d2\u1794\u17b6\u1799\u200b\u1796\u17b8\u200b\u179a\u17bc\u1794",
+"Style": "\u179a\u1785\u1793\u17b6\u1794\u1790",
+"Dimensions": "\u179c\u17b7\u1798\u17b6\u178f\u17d2\u179a",
+"Insert image": "\u1794\u1789\u17d2\u1785\u17bc\u179b\u200b\u179a\u17bc\u1794\u200b\u1797\u17b6\u1796",
+"Insert date\/time": "\u1794\u1789\u17d2\u1785\u17bc\u179b\u200b\u1780\u17b6\u179b\u200b\u1794\u179a\u17b7\u1785\u17d2\u1786\u17c1\u1791\/\u1798\u17c9\u17c4\u1784",
+"Remove link": "\u178a\u1780\u200b\u178f\u17c6\u178e\u200b\u1785\u17c1\u1789",
+"Url": "Url",
+"Text to display": "\u17a2\u1780\u17d2\u179f\u179a\u200b\u178f\u17d2\u179a\u17bc\u179c\u200b\u1794\u1784\u17d2\u17a0\u17b6\u1789",
+"Anchors": "\u1799\u17bb\u1790\u17d2\u1780\u17b6",
+"Insert link": "\u1794\u1789\u17d2\u1785\u17bc\u179b\u200b\u178f\u17c6\u178e",
+"New window": "\u1795\u17d2\u1791\u17b6\u17c6\u1784\u200b\u179c\u17b8\u1793\u178a\u17bc\u200b\u1790\u17d2\u1798\u17b8",
+"None": "\u1798\u17b7\u1793\u200b\u1798\u17b6\u1793",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u17a2\u17d2\u1793\u1780\u200b\u1794\u17b6\u1793\u200b\u1794\u1789\u17d2\u1785\u17bc\u179b URL \u178a\u17c2\u179b\u200b\u1787\u17b6\u200b\u178f\u17c6\u178e\u200b\u1791\u17c5\u200b\u1781\u17b6\u1784\u200b\u1780\u17d2\u179a\u17c5\u17d4 \u178f\u17be\u200b\u17a2\u17d2\u1793\u1780\u200b\u1785\u1784\u17cb\u200b\u1794\u1793\u17d2\u1790\u17c2\u1798\u200b\u1794\u17bb\u1796\u17d2\u179c\u1794\u200b\u1791 http:\/\/ \u178a\u17c2\u179a\u200b\u17ac\u1791\u17c1?",
+"Target": "\u1791\u17b7\u179f\u178a\u17c5",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u17a2\u17d2\u1793\u1780\u200b\u1794\u17b6\u1793\u200b\u1794\u1789\u17d2\u1785\u17bc\u179b URL \u178a\u17c2\u179b\u200b\u1798\u17b6\u1793\u200b\u179f\u178e\u17d2\u178b\u17b6\u1793\u200b\u178a\u17bc\u1785\u200b\u17a2\u17b6\u179f\u1799\u178a\u17d2\u178b\u17b6\u1793\u200b\u17a2\u17ca\u17b8\u1798\u17c2\u179b\u17d4 \u178f\u17be\u200b\u17a2\u17d2\u1793\u1780\u200b\u1785\u1784\u17cb\u200b\u1794\u1793\u17d2\u1790\u17c2\u1798\u200b\u1794\u17bb\u1796\u17d2\u179c\u1794\u200b\u1791 mailto: \u178a\u17c2\u179a\u200b\u17ac\u1791\u17c1?",
+"Insert\/edit link": "\u1794\u1789\u17d2\u1785\u17bc\u179b\/\u1780\u17c2 \u178f\u17c6\u178e",
+"Insert\/edit video": "\u1794\u1789\u17d2\u1785\u17bc\u179b\/\u1780\u17c2 \u179c\u17b8\u178a\u17c1\u17a2\u17bc",
+"Poster": "\u17a2\u17d2\u1793\u1780\u200b\u1795\u17d2\u179f\u17b6\u1799",
+"Alternative source": "\u1794\u17d2\u179a\u1797\u1796\u200b\u178a\u1791\u17c3\u200b\u1791\u17c0\u178f",
+"Paste your embed code below:": "\u1794\u17b7\u1791\u200b\u1797\u17d2\u1787\u17b6\u1794\u17cb\u200b\u1780\u17bc\u178a\u200b\u1794\u1784\u17d2\u1780\u1794\u17cb\u200b\u1793\u17c5\u200b\u1781\u17b6\u1784\u200b\u1780\u17d2\u179a\u17c4\u1798:",
+"Insert video": "\u1794\u1789\u17d2\u1785\u17bc\u179b\u200b\u179c\u17b8\u178a\u17c1\u17a2\u17bc",
+"Embed": "\u1794\u1784\u17d2\u1780\u1794\u17cb",
+"Nonbreaking space": "\u178a\u17c6\u178e\u1780\u200b\u1783\u17d2\u179b\u17b6\u200b\u1798\u17b7\u1793\u200b\u1794\u17c6\u1794\u17c2\u1780",
+"Page break": "\u1794\u17c6\u1794\u17c2\u1780\u200b\u1791\u17c6\u1796\u17d0\u179a",
+"Paste as text": "\u1794\u17b7\u1791\u200b\u1797\u17d2\u1787\u17b6\u1794\u17cb\u200b\u1787\u17b6\u200b\u17a2\u1780\u17d2\u179f\u179a",
+"Preview": "\u1798\u17be\u179b\u200b\u1787\u17b6\u200b\u1798\u17bb\u1793",
+"Print": "\u1794\u17c4\u17c7\u200b\u1796\u17bb\u1798\u17d2\u1796",
+"Save": "\u179a\u1780\u17d2\u179f\u17b6\u200b\u1791\u17bb\u1780",
+"Could not find the specified string.": "\u1798\u17b7\u1793\u200b\u17a2\u17b6\u1785\u200b\u179a\u1780\u200b\u1783\u17be\u1789\u200b\u1781\u17d2\u179f\u17c2\u200b\u17a2\u1780\u17d2\u179f\u179a\u200b\u178a\u17c2\u179b\u200b\u1794\u17b6\u1793\u200b\u1780\u17c6\u178e\u178f\u17cb\u17d4",
+"Replace": "\u1787\u17c6\u1793\u17bd\u179f",
+"Next": "\u1798\u17bb\u1781",
+"Whole words": "\u1796\u17b6\u1780\u17d2\u1799\u200b\u1791\u17b6\u17c6\u1784\u200b\u1798\u17bc\u179b",
+"Find and replace": "\u179f\u17d2\u179c\u17c2\u1784\u200b\u179a\u1780\u200b\u1793\u17b7\u1784\u200b\u1787\u17c6\u1793\u17bd\u179f",
+"Replace with": "\u1787\u17c6\u1793\u17bd\u179f\u200b\u178a\u17c4\u1799",
+"Find": "\u179f\u17d2\u179c\u17c2\u1784\u200b\u179a\u1780",
+"Replace all": "\u1787\u17c6\u1793\u17bd\u179f\u200b\u1791\u17b6\u17c6\u1784\u200b\u17a2\u179f\u17cb",
+"Match case": "\u1780\u179a\u178e\u17b8\u200b\u178a\u17c6\u178e\u17bc\u1785",
+"Prev": "\u1780\u17d2\u179a\u17c4\u1799",
+"Spellcheck": "\u1796\u17b7\u1793\u17b7\u178f\u17d2\u1799\u200b\u17a2\u1780\u17d2\u1781\u179a\u17b6\u179c\u17b7\u179a\u17bb\u1791\u17d2\u1792",
+"Finish": "\u1794\u1789\u17d2\u1785\u1794\u17cb",
+"Ignore all": "\u1798\u17b7\u1793\u200b\u17a2\u17be\u1796\u17be\u200b\u1791\u17b6\u17c6\u1784\u200b\u17a2\u179f\u17cb",
+"Ignore": "\u1798\u17b7\u1793\u200b\u17a2\u17be\u200b\u1796\u17be",
+"Add to Dictionary": "\u1794\u1793\u17d2\u1790\u17c2\u1798\u200b\u1791\u17c5\u200b\u179c\u1785\u1793\u17b6\u1793\u17bb\u1780\u17d2\u179a\u1798",
+"Insert row before": "\u1794\u1789\u17d2\u1785\u17bc\u179b\u200b\u1788\u17bd\u179a\u200b\u178a\u17c1\u1780\u200b\u1796\u17b8\u200b\u1798\u17bb\u1781",
+"Rows": "\u1787\u17bd\u179a\u200b\u178a\u17c1\u1780",
+"Height": "\u1780\u1798\u17d2\u1796\u179f\u17cb",
+"Paste row after": "\u1794\u17b7\u1791\u200b\u1797\u17d2\u1787\u17b6\u1794\u17cb\u200b\u1787\u17bd\u179a\u200b\u178a\u17c1\u1780\u200b\u1796\u17b8\u200b\u1780\u17d2\u179a\u17c4\u1799",
+"Alignment": "\u1780\u17b6\u179a\u200b\u178f\u1798\u17d2\u179a\u17b9\u1798",
+"Border color": "\u1796\u178e\u17cc\u200b\u179f\u17ca\u17bb\u1798",
+"Column group": "\u1780\u17d2\u179a\u17bb\u1798\u200b\u1787\u17bd\u179a\u200b\u1788\u179a",
+"Row": "\u1787\u17bd\u179a\u200b\u178a\u17c1\u1780",
+"Insert column before": "\u1794\u1789\u17d2\u1785\u17bc\u179b\u200b\u1787\u17bd\u179a\u200b\u1788\u179a\u200b\u1796\u17b8\u200b\u1798\u17bb\u1781",
+"Split cell": "\u1789\u17c2\u1780\u200b\u1780\u17d2\u179a\u17a1\u17b6",
+"Cell padding": "\u1785\u1793\u17d2\u179b\u17c4\u17c7\u200b\u1780\u17d2\u179a\u17a1\u17b6",
+"Cell spacing": "\u1782\u1798\u17d2\u179b\u17b6\u178f\u200b\u1780\u17d2\u179a\u17a1\u17b6",
+"Row type": "\u1794\u17d2\u179a\u1797\u17c1\u1791\u200b\u1787\u17bd\u179a\u200b\u178a\u17c1\u1780",
+"Insert table": "\u1794\u1789\u17d2\u1785\u17bc\u179b\u200b\u178f\u17b6\u179a\u17b6\u1784",
+"Body": "\u178f\u17bd\u200b\u179f\u17c1\u1785\u1780\u17d2\u178a\u17b8",
+"Caption": "\u1785\u17c6\u178e\u1784\u200b\u1787\u17be\u1784",
+"Footer": "\u1794\u178b\u1798\u200b\u1780\u1790\u17b6",
+"Delete row": "\u179b\u17bb\u1794\u200b\u1787\u17bd\u179a\u200b\u178a\u17c1\u1780",
+"Paste row before": "\u1794\u17b7\u1791\u200b\u1797\u17d2\u1787\u17b6\u1794\u17cb\u200b\u1787\u17bd\u179a\u200b\u178a\u17c1\u1780\u200b\u1796\u17b8\u200b\u1798\u17bb\u1781",
+"Scope": "\u179c\u17b7\u179f\u17b6\u179b\u200b\u1797\u17b6\u1796",
+"Delete table": "\u179b\u17bb\u1794\u200b\u178f\u17b6\u179a\u17b6\u1784",
+"H Align": "\u1780\u17b6\u179a\u200b\u178f\u1798\u17d2\u179a\u17b9\u1798\u200b\u1795\u17d2\u178a\u17c1\u1780",
+"Top": "\u179b\u17be",
+"Header cell": "\u1780\u17d2\u179a\u17a1\u17b6\u200b\u1785\u17c6\u178e\u1784\u200b\u1787\u17be\u1784",
+"Column": "\u1787\u17bd\u179a\u200b\u1788\u179a",
+"Row group": "\u1780\u17d2\u179a\u17bb\u1798\u200b\u1787\u17bd\u179a\u200b\u178a\u17c1\u1780",
+"Cell": "\u1780\u17d2\u179a\u17a1\u17b6",
+"Middle": "\u1780\u178e\u17d2\u178a\u17b6\u179b",
+"Cell type": "\u1794\u17d2\u179a\u1797\u17c1\u1791\u200b\u1780\u17d2\u179a\u17a1\u17b6",
+"Copy row": "\u1785\u1798\u17d2\u179b\u1784\u200b\u1787\u17bd\u179a\u200b\u178a\u17c1\u1780",
+"Row properties": "\u179b\u1780\u17d2\u1781\u178e\u17c8\u200b\u1787\u17bd\u179a\u200b\u178a\u17c1\u1780",
+"Table properties": "\u179b\u1780\u17d2\u1781\u178e\u17c8\u200b\u178f\u17b6\u179a\u17b6\u1784",
+"Bottom": "\u1780\u17d2\u179a\u17c4\u1798",
+"V Align": "\u1780\u17b6\u179a\u200b\u178f\u1798\u17d2\u179a\u17b9\u1798\u200b\u1794\u1789\u17d2\u1788\u179a",
+"Header": "\u1785\u17c6\u178e\u1784\u200b\u1787\u17be\u1784",
+"Right": "\u179f\u17d2\u178a\u17b6\u17c6",
+"Insert column after": "\u1794\u1789\u17d2\u1787\u17bc\u179b\u200b\u1787\u17bd\u179a\u200b\u178a\u17c1\u1780\u200b\u1796\u17b8\u200b\u1780\u17d2\u179a\u17c4\u1799",
+"Cols": "\u1787\u17bd\u179a\u200b\u1788\u179a",
+"Insert row after": "\u1794\u1789\u17d2\u1785\u17bc\u179b\u200b\u1787\u17bd\u179a\u200b\u178a\u17c1\u1780\u200b\u1796\u17b8\u200b\u1780\u17d2\u179a\u17c4\u1799",
+"Width": "\u1791\u1791\u17b9\u1784",
+"Cell properties": "\u179b\u1780\u17d2\u1781\u178e\u17c8\u200b\u1780\u17d2\u179a\u17a1\u17b6",
+"Left": "\u1786\u17d2\u179c\u17c1\u1784",
+"Cut row": "\u1780\u17b6\u178f\u17cb\u200b\u1787\u17bd\u179a\u200b\u178a\u17c1\u1780",
+"Delete column": "\u179b\u17bb\u1794\u200b\u1787\u17bd\u179a\u200b\u1788\u179a",
+"Center": "\u1780\u178e\u17d2\u178a\u17b6\u179b",
+"Merge cells": "\u1794\u1789\u17d2\u1785\u17bc\u179b\u200b\u1780\u17d2\u179a\u17a1\u17b6\u200b\u1785\u17bc\u179b\u200b\u1782\u17d2\u1793\u17b6",
+"Insert template": "\u1794\u1789\u17d2\u1785\u17bc\u179b\u200b\u1796\u17bb\u1798\u17d2\u1796\u200b\u1782\u1798\u17d2\u179a\u17bc",
+"Templates": "\u1796\u17bb\u1798\u17d2\u1796\u200b\u1782\u1798\u17d2\u179a\u17bc",
+"Background color": "\u1796\u178e\u17cc\u200b\u1795\u17d2\u1791\u17c3\u200b\u1780\u17d2\u179a\u17c4\u1799",
+"Custom...": "\u1795\u17d2\u1791\u17b6\u179b\u17cb\u200b\u1781\u17d2\u179b\u17bd\u1793...",
+"Custom color": "\u1796\u178e\u17cc\u200b\u1795\u17d2\u1791\u17b6\u179b\u17cb\u200b\u1781\u17d2\u179b\u17bd\u1793",
+"No color": "\u1782\u17d2\u1798\u17b6\u1793\u200b\u1796\u178e\u17cc",
+"Text color": "\u1796\u178e\u17cc\u200b\u17a2\u1780\u17d2\u179f\u179a",
+"Show blocks": "\u1794\u1784\u17d2\u17a0\u17b6\u1789\u200b\u1794\u17d2\u179b\u17bb\u1780",
+"Show invisible characters": "\u1794\u1784\u17d2\u17a0\u17b6\u1789\u200b\u178f\u17bd\u200b\u17a2\u1780\u17d2\u179f\u179a\u200b\u1780\u17c6\u1794\u17b6\u17c6\u1784",
+"Words: {0}": "\u1796\u17b6\u1780\u17d2\u1799: {0}",
+"Insert": "\u1794\u1789\u17d2\u1785\u17bc\u179b",
+"File": "\u17af\u1780\u179f\u17b6\u179a",
+"Edit": "\u1780\u17c2\u1794\u17d2\u179a\u17c2",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u1791\u17b8\u178f\u17b6\u17c6\u1784\u200b\u17a2\u1780\u17d2\u179f\u179a\u200b\u179f\u17c6\u1794\u17bc\u179a\u1794\u17c2\u1794\u17d4 \u1785\u17bb\u1785 ALT-F9 \u179f\u1798\u17d2\u179a\u17b6\u1794\u17cb\u200b\u1798\u17c9\u17ba\u1793\u17bb\u1799\u17d4 \u1785\u17bb\u1785 ALT-F10 \u179f\u1798\u17d2\u179a\u17b6\u1794\u17cb\u200b\u179a\u1794\u17b6\u179a\u200b\u17a7\u1794\u1780\u179a\u178e\u17cd\u17d4 \u1785\u17bb\u1785 ALT-0 \u179f\u1798\u17d2\u179a\u17b6\u1794\u17cb\u200b\u1787\u17c6\u1793\u17bd\u1799\u17d4",
+"Tools": "\u17a7\u1794\u1780\u179a\u178e\u17cd",
+"View": "\u1791\u17b7\u178a\u17d2\u178b\u1797\u17b6\u1796",
+"Table": "\u178f\u17b6\u179a\u17b6\u1784",
+"Format": "\u1791\u1798\u17d2\u179a\u1784\u17cb"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/ko_KR.js b/program/js/tinymce/langs/ko_KR.js
new file mode 100644
index 000000000..bccdfbd30
--- /dev/null
+++ b/program/js/tinymce/langs/ko_KR.js
@@ -0,0 +1,186 @@
+tinymce.addI18n('ko_KR',{
+"Cut": "\uc798\ub77c\ub0b4\uae30",
+"Heading 5": "\uc81c\ubaa9 5",
+"Header 2": "\uc81c\ubaa9 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\ube0c\ub77c\uc6b0\uc838\uac00 \ud074\ub9bd\ubcf4\ub4dc \uc811\uadfc\uc744 \ud5c8\uc6a9\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. Ctrl+X\/C\/V \ud0a4\ub97c \uc774\uc6a9\ud574 \uc8fc\uc138\uc694.",
+"Heading 4": "\uc81c\ubaa9 4",
+"Div": "\uad6c\ubd84",
+"Heading 2": "\uc81c\ubaa9 2",
+"Paste": "\ubd99\uc5ec\ub123\uae30",
+"Close": "\ub2eb\uae30",
+"Font Family": "\uae00\uaf34",
+"Pre": "Pre",
+"Align right": "\uc624\ub978\ucabd\uc815\ub82c",
+"New document": "\uc0c8 \ubb38\uc11c",
+"Blockquote": "\uad6c\ud68d",
+"Numbered list": "\uc22b\uc790\ub9ac\uc2a4\ud2b8",
+"Heading 1": "\uc81c\ubaa9 1",
+"Headings": "\uc81c\ubaa9",
+"Increase indent": "\ub4e4\uc5ec\uc4f0\uae30",
+"Formats": "\ud3ec\ub9f7",
+"Headers": "\uc2a4\ud0c0\uc77c",
+"Select all": "\uc804\uccb4\uc120\ud0dd",
+"Header 3": "\uc81c\ubaa9 3",
+"Blocks": "\ube14\ub85d \uc124\uc815",
+"Undo": "\uc2e4\ud589\ucde8\uc18c",
+"Strikethrough": "\ucde8\uc18c\uc120",
+"Bullet list": "\uc810\ub9ac\uc2a4\ud2b8",
+"Header 1": "\uc81c\ubaa9 1",
+"Superscript": "\uc717\ucca8\uc790",
+"Clear formatting": "\ud3ec\ub9f7\ucd08\uae30\ud654",
+"Font Sizes": "\ud3f0\ud2b8 \uc0ac\uc774\uc988",
+"Subscript": "\uc544\ub798\ucca8\uc790",
+"Header 6": "\uc81c\ubaa9 6",
+"Redo": "\ub2e4\uc2dc\uc2e4\ud589",
+"Paragraph": "\ub2e8\ub77d",
+"Ok": "\ud655\uc778",
+"Bold": "\uad75\uac8c",
+"Code": "\ucf54\ub4dc",
+"Italic": "\uae30\uc6b8\uc784\uaf34",
+"Align center": "\uac00\uc6b4\ub370\uc815\ub82c",
+"Header 5": "\uc81c\ubaa9 5",
+"Heading 6": "\uc81c\ubaa9 6",
+"Heading 3": "\uc81c\ubaa9 3",
+"Decrease indent": "\ub0b4\uc5b4\uc4f0\uae30",
+"Header 4": "\uc81c\ubaa9 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\uc2a4\ud0c0\uc77c\ubcf5\uc0ac \ub044\uae30. \uc774 \uc635\uc158\uc744 \ub044\uae30 \uc804\uc5d0\ub294 \ubcf5\uc0ac \uc2dc, \uc2a4\ud0c0\uc77c\uc774 \ubcf5\uc0ac\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.",
+"Underline": "\ubc11\uc904",
+"Cancel": "\ucde8\uc18c",
+"Justify": "\uc591\ucabd\uc815\ub82c",
+"Inline": "\ub77c\uc778 \uc124\uc815",
+"Copy": "\ubcf5\uc0ac\ud558\uae30",
+"Align left": "\uc67c\ucabd\uc815\ub82c",
+"Visual aids": "\uc2dc\uac01\uad50\uc7ac",
+"Lower Greek": "\uadf8\ub9ac\uc2a4\uc5b4 \uc18c\ubb38\uc790",
+"Square": "\uc0ac\uac01",
+"Default": "\uae30\ubcf8",
+"Lower Alpha": "\uc54c\ud30c\ubcb3 \uc18c\ubb38\uc790",
+"Circle": "\uc6d0",
+"Disc": "\uc6d0\ubc18",
+"Upper Alpha": "\uc54c\ud30c\ubcb3 \uc18c\ubb38\uc790",
+"Upper Roman": "\ub85c\ub9c8\uc790 \ub300\ubb38\uc790",
+"Lower Roman": "\ub85c\ub9c8\uc790 \uc18c\ubb38\uc790",
+"Name": "\uc774\ub984",
+"Anchor": "\uc575\ucee4",
+"You have unsaved changes are you sure you want to navigate away?": "\uc800\uc7a5\ud558\uc9c0 \uc54a\uc740 \uc815\ubcf4\uac00 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ud398\uc774\uc9c0\ub97c \ubc97\uc5b4\ub098\uc2dc\uaca0\uc2b5\ub2c8\uae4c?",
+"Restore last draft": "\ub9c8\uc9c0\ub9c9 \ucd08\uc548 \ubcf5\uc6d0",
+"Special character": "\ud2b9\uc218\ubb38\uc790",
+"Source code": "\uc18c\uc2a4\ucf54\ub4dc",
+"Right to left": "\uc624\ub978\ucabd\uc5d0\uc11c \uc67c\ucabd",
+"Left to right": "\uc67c\ucabd\uc5d0\uc11c \uc624\ub978\ucabd",
+"Emoticons": "\uc774\ubaa8\ud2f0\ucf58",
+"Robots": "\ub85c\ubd07",
+"Document properties": "\ubb38\uc11c \uc18d\uc131",
+"Title": "\uc81c\ubaa9",
+"Keywords": "\ud0a4\uc6cc\ub4dc",
+"Encoding": "\uc778\ucf54\ub529",
+"Description": "\uc124\uba85",
+"Author": "\uc800\uc790",
+"Fullscreen": "\uc804\uccb4\ud654\uba74",
+"Horizontal line": "\uac00\ub85c",
+"Horizontal space": "\uc218\ud3c9 \uacf5\ubc31",
+"Insert\/edit image": "\uc774\ubbf8\uc9c0 \uc0bd\uc785\/\uc218\uc815",
+"General": "\uc77c\ubc18",
+"Advanced": "\uace0\uae09",
+"Source": "\uc18c\uc2a4",
+"Border": "\ud14c\ub450\ub9ac",
+"Constrain proportions": "\uc791\uc5c5 \uc81c\ud55c",
+"Vertical space": "\uc218\uc9c1 \uacf5\ubc31",
+"Image description": "\uc774\ubbf8\uc9c0 \uc124\uba85",
+"Style": "\uc2a4\ud0c0\uc77c",
+"Dimensions": "\ud06c\uae30",
+"Insert image": "\uc774\ubbf8\uc9c0 \uc0bd\uc785",
+"Insert date\/time": "\ub0a0\uc9dc\/\uc2dc\uac04\uc0bd\uc785",
+"Remove link": "\ub9c1\ud06c\uc0ad\uc81c",
+"Url": "\uc8fc\uc18c",
+"Text to display": "\ubcf8\ubb38",
+"Anchors": "\ucc45\uac08\ud53c",
+"Insert link": "\ub9c1\ud06c \uc0bd\uc785 ",
+"New window": "\uc0c8\ucc3d",
+"None": "\uc5c6\uc74c",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?",
+"Target": "\ub300\uc0c1",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",
+"Insert\/edit link": "\ub9c1\ud06c \uc0bd\uc785\/\uc218\uc815",
+"Insert\/edit video": "\ube44\ub514\uc624 \uc0bd\uc785\/\uc218\uc815",
+"Poster": "\ud3ec\uc2a4\ud130",
+"Alternative source": "\ub300\uccb4 \uc18c\uc2a4",
+"Paste your embed code below:": "\uc544\ub798\uc5d0 \ucf54\ub4dc\ub97c \ubd99\uc5ec\ub123\uc73c\uc138\uc694:",
+"Insert video": "\ube44\ub514\uc624 \uc0bd\uc785",
+"Embed": "\uc0bd\uc785",
+"Nonbreaking space": "\ub744\uc5b4\uc4f0\uae30",
+"Page break": "\ud398\uc774\uc9c0 \uad6c\ubd84\uc790",
+"Paste as text": "\ud14d\uc2a4\ud2b8\ub85c \ubd99\uc5ec\ub123\uae30",
+"Preview": "\ubbf8\ub9ac\ubcf4\uae30",
+"Print": "\ucd9c\ub825",
+"Save": "\uc800\uc7a5",
+"Could not find the specified string.": "\ubb38\uc790\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.",
+"Replace": "\uad50\uccb4",
+"Next": "\ub2e4\uc74c",
+"Whole words": "\uc804\uccb4 \ub2e8\uc5b4",
+"Find and replace": "\ucc3e\uc544\uc11c \uad50\uccb4",
+"Replace with": "\uad50\uccb4",
+"Find": "\ucc3e\uae30",
+"Replace all": "\uc804\uccb4 \uad50\uccb4",
+"Match case": "\ub300\uc18c\ubb38\uc790 \uc77c\uce58",
+"Prev": "\uc774\uc804",
+"Spellcheck": "\ubb38\ubc95\uccb4\ud06c",
+"Finish": "\uc644\ub8cc",
+"Ignore all": "\uc804\uccb4\ubb34\uc2dc",
+"Ignore": "\ubb34\uc2dc",
+"Insert row before": "\uc774\uc804\uc5d0 \ud589 \uc0bd\uc785",
+"Rows": "\ud589",
+"Height": "\ub192\uc774",
+"Paste row after": "\ub2e4\uc74c\uc5d0 \ud589 \ubd99\uc5ec\ub123\uae30",
+"Alignment": "\uc815\ub82c",
+"Column group": "\uc5f4 \uadf8\ub8f9",
+"Row": "\uc5f4",
+"Insert column before": "\uc774\uc804\uc5d0 \ud589 \uc0bd\uc785",
+"Split cell": "\uc140 \ub098\ub204\uae30",
+"Cell padding": "\uc140 \uc548\ucabd \uc5ec\ubc31",
+"Cell spacing": "\uc140 \uac04\uaca9",
+"Row type": "\ud589 \ud0c0\uc785",
+"Insert table": "\ud14c\uc774\ube14 \uc0bd\uc785",
+"Body": "\ubc14\ub514",
+"Caption": "\ucea1\uc158",
+"Footer": "\ud478\ud130",
+"Delete row": "\ud589 \uc9c0\uc6b0\uae30",
+"Paste row before": "\uc774\uc804\uc5d0 \ud589 \ubd99\uc5ec\ub123\uae30",
+"Scope": "\ubc94\uc704",
+"Delete table": "\ud14c\uc774\ube14 \uc0ad\uc81c",
+"Header cell": "\ud5e4\ub354 \uc140",
+"Column": "\ud589",
+"Cell": "\uc140",
+"Header": "\ud5e4\ub354",
+"Cell type": "\uc140 \ud0c0\uc785",
+"Copy row": "\ud589 \ubcf5\uc0ac",
+"Row properties": "\ud589 \uc18d\uc131",
+"Table properties": "\ud14c\uc774\ube14 \uc18d\uc131",
+"Row group": "\ud589 \uadf8\ub8f9",
+"Right": "\uc624\ub978\ucabd",
+"Insert column after": "\ub2e4\uc74c\uc5d0 \uc5f4 \uc0bd\uc785",
+"Cols": "\uc5f4",
+"Insert row after": "\ub2e4\uc74c\uc5d0 \ud589 \uc0bd\uc785",
+"Width": "\ub113\uc774",
+"Cell properties": "\uc140 \uc18d",
+"Left": "\uc67c\ucabd",
+"Cut row": "\ud589 \uc798\ub77c\ub0b4\uae30",
+"Delete column": "\uc5f4 \uc9c0\uc6b0\uae30",
+"Center": "\uac00\uc6b4\ub370",
+"Merge cells": "\uc140 \ud569\uce58\uae30",
+"Insert template": "\ud15c\ud50c\ub9bf \uc0bd\uc785",
+"Templates": "\ud15c\ud50c\ub9bf",
+"Background color": "\ubc30\uacbd\uc0c9",
+"Text color": "\ubb38\uc790 \uc0c9\uae54",
+"Show blocks": "\ube14\ub7ed \ubcf4\uc5ec\uc8fc\uae30",
+"Show invisible characters": "\uc548\ubcf4\uc774\ub294 \ubb38\uc790 \ubcf4\uc774\uae30",
+"Words: {0}": "\ub2e8\uc5b4: {0}",
+"Insert": "\uc0bd\uc785",
+"File": "\ud30c\uc77c",
+"Edit": "\uc218\uc815",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\uc11c\uc2dd \uc788\ub294 \ud14d\uc2a4\ud2b8 \ud3b8\uc9d1\uae30 \uc785\ub2c8\ub2e4. ALT-F9\ub97c \ub204\ub974\uba74 \uba54\ub274, ALT-F10\ub97c \ub204\ub974\uba74 \ud234\ubc14, ALT-0\uc744 \ub204\ub974\uba74 \ub3c4\uc6c0\ub9d0\uc744 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4.",
+"Tools": "\ub3c4\uad6c",
+"View": "\ubcf4\uae30",
+"Table": "\ud14c\uc774\ube14",
+"Format": "\ud3ec\ub9f7"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/lb.js b/program/js/tinymce/langs/lb.js
new file mode 100644
index 000000000..7780e33e3
--- /dev/null
+++ b/program/js/tinymce/langs/lb.js
@@ -0,0 +1,180 @@
+tinymce.addI18n('lb',{
+"Cut": "Ausschneiden",
+"Header 2": "Titel 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "D\u00e4i Web-Browser \u00ebnnerst\u00ebtzt keen direkten Acc\u00e8s op d'Zw\u00ebschenaplag. Benotz w.e.gl. CTRL+C fir den ausgewielten Text ze kop\u00e9ieren an CTRL+V fir en anzepechen.",
+"Div": "DIV",
+"Paste": "Apechen",
+"Close": "Zoumaachen",
+"Font Family": "Schr\u00ebft-Famill",
+"Pre": "PRE",
+"Align right": "Riets align\u00e9iert",
+"New document": "Neit Dokument",
+"Blockquote": "Zitat",
+"Numbered list": "Nummer\u00e9iert L\u00ebscht",
+"Increase indent": "Ident\u00e9ierung vergr\u00e9isseren",
+"Formats": "Formater",
+"Headers": "Titelen",
+"Select all": "Alles auswielen",
+"Header 3": "Titel 3",
+"Blocks": "Bl\u00e9ck",
+"Undo": "R\u00e9ckg\u00e4ngeg maachen",
+"Strikethrough": "Duerchgestrach",
+"Bullet list": "Opzielung",
+"Header 1": "Titel 1",
+"Superscript": "H\u00e9ichgestallt",
+"Clear formatting": "Format\u00e9ierung l\u00e4schen",
+"Font Sizes": "Schr\u00ebft-Gr\u00e9issten",
+"Subscript": "Erofgestallt",
+"Header 6": "Titel 6",
+"Redo": "Widderhuelen",
+"Paragraph": "Paragraph",
+"Ok": "Okee",
+"Bold": "Fett",
+"Code": "CODE",
+"Italic": "Kursiv",
+"Align center": "Zentr\u00e9iert",
+"Header 5": "Titel 5",
+"Decrease indent": "Ident\u00e9ierung verklengeren",
+"Header 4": "Titel 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\"Apechen\" ass elo am Textmodus. Inhalter ginn elo ouni Format\u00e9ierungen agepecht bis du d\u00ebs Optioun ausm\u00e9chs.",
+"Underline": "\u00cbnnerstrach",
+"Cancel": "Ofbriechen",
+"Justify": "Blocksaz",
+"Inline": "Inline",
+"Copy": "Kop\u00e9ieren",
+"Align left": "L\u00e9nks align\u00e9iert",
+"Visual aids": "Visuell H\u00ebllefen",
+"Lower Greek": "Klengt griichescht Alphabet",
+"Square": "Quadrat",
+"Default": "Standard",
+"Lower Alpha": "Klengt Alphabet",
+"Circle": "Krees",
+"Disc": "Scheif",
+"Upper Alpha": "Grousst Alphabet",
+"Upper Roman": "Grousst r\u00e9imescht Alphabet",
+"Lower Roman": "Klengt r\u00e9imescht Alphabet",
+"Name": "Numm",
+"Anchor": "Anker",
+"You have unsaved changes are you sure you want to navigate away?": "Du hues ongesp\u00e4ichert \u00c4nnerungen. W\u00eblls du s\u00e9cher ewechnavig\u00e9ieren?",
+"Restore last draft": "Leschten Entworf er\u00ebm zr\u00e9cksetzen",
+"Special character": "Speziell Zeechen",
+"Source code": "Quelltext",
+"Right to left": "Vu riets no l\u00e9nks",
+"Left to right": "Vu l\u00e9nks no riets",
+"Emoticons": "Smileyen",
+"Robots": "Robotter",
+"Document properties": "Eegeschafte vum Dokument",
+"Title": "Titel",
+"Keywords": "Schl\u00ebsselwierder",
+"Encoding": "Cod\u00e9ierung",
+"Description": "Beschreiwung",
+"Author": "Auteur",
+"Fullscreen": "Vollbildschierm",
+"Horizontal line": "Horizontal Linn",
+"Horizontal space": "Horizontalen Espace",
+"Insert\/edit image": "Bild af\u00fcgen\/\u00e4nneren",
+"General": "Allgemeng",
+"Advanced": "Erweidert",
+"Source": "Quell",
+"Border": "Rand",
+"Constrain proportions": "Proportioune b\u00e4ibehalen",
+"Vertical space": "Vertikalen Espace",
+"Image description": "Bildbeschreiwung",
+"Style": "Stil",
+"Dimensions": "Dimensiounen",
+"Insert image": "Bild af\u00fcgen",
+"Insert date\/time": "Datum\/Z\u00e4it drasetzen",
+"Remove link": "Link l\u00e4schen",
+"Url": "URL",
+"Text to display": "Text deen unzeweisen ass",
+"Anchors": "Ankeren",
+"Insert link": "Link drasetzen",
+"New window": "Nei F\u00ebnster",
+"None": "Keen",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "D'URL d\u00e9i s du aginn hues sch\u00e9ngt en externe Link ze sinn. W\u00eblls du den \"http:\/\/\"-Pr\u00e4fix dob\u00e4isetzen?",
+"Target": "Zil",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "D'URL d\u00e9i s du aginn hues sch\u00e9ngt eng Email-Adress ze sinn. W\u00eblls du de \"mailto:\"-Pr\u00e4fix dob\u00e4isetzen?",
+"Insert\/edit link": "Link drasetzen\/\u00e4nneren",
+"Insert\/edit video": "Video drasetzen\/\u00e4nneren",
+"Poster": "Pouster",
+"Alternative source": "Alternativ Quell",
+"Paste your embed code below:": "Abannungscode hei apechen:",
+"Insert video": "Video drasetzen",
+"Embed": "Abannen",
+"Nonbreaking space": "Net\u00ebmbriechenden Espace",
+"Page break": "S\u00e4iten\u00ebmbroch",
+"Paste as text": "Als Text apechen",
+"Preview": "Kucken",
+"Print": "Dr\u00e9cken",
+"Save": "Sp\u00e4icheren",
+"Could not find the specified string.": "Den Text konnt net fonnt ginn.",
+"Replace": "Ersetzen",
+"Next": "Weider",
+"Whole words": "Ganz Wierder",
+"Find and replace": "Fannen an ersetzen",
+"Replace with": "Ersetze mat",
+"Find": "Fannen",
+"Replace all": "All ersetzen",
+"Match case": "Grouss-\/Klengschreiwung respekt\u00e9ieren",
+"Prev": "Zr\u00e9ck",
+"Spellcheck": "Verbesseren",
+"Finish": "Ofschl\u00e9issen",
+"Ignore all": "All ignor\u00e9ieren",
+"Ignore": "Ignor\u00e9ieren",
+"Add to Dictionary": "An den Dictionnaire androen",
+"Insert row before": "Rei virdrun drasetzen",
+"Rows": "Reien",
+"Height": "H\u00e9icht",
+"Paste row after": "Rei herno apechen",
+"Alignment": "Align\u00e9ierung",
+"Column group": "Kolonnegrupp",
+"Row": "Rei",
+"Insert column before": "Kolonn virdrun drasetzen",
+"Split cell": "Zell opspl\u00e9cken",
+"Cell padding": "Zellenopf\u00ebllung",
+"Cell spacing": "Zellenofstand",
+"Row type": "Reientyp",
+"Insert table": "Tabell drasetzen",
+"Body": "Kierper",
+"Caption": "Beschr\u00ebftung",
+"Footer": "Fouss",
+"Delete row": "Rei l\u00e4schen",
+"Paste row before": "Rei virdrun apechen",
+"Scope": "Ber\u00e4ich",
+"Delete table": "Tabell l\u00e4schen",
+"Header cell": "Kappzell",
+"Column": "Kolonn",
+"Cell": "Zell",
+"Header": "Kapp",
+"Cell type": "Zellentyp",
+"Copy row": "Rei kop\u00e9ieren",
+"Row properties": "Eegeschafte vu Reien",
+"Table properties": "Eegeschafte vun Tabellen",
+"Row group": "Reiegrupp",
+"Right": "Riets",
+"Insert column after": "Kolonn herno drasetzen",
+"Cols": "Kolonnen",
+"Insert row after": "Rei herno drasetzen",
+"Width": "Breet",
+"Cell properties": "Eegeschafte vun Zellen",
+"Left": "L\u00e9nks",
+"Cut row": "Rei ausschneiden",
+"Delete column": "Kolonn l\u00e4schen",
+"Center": "M\u00ebtt",
+"Merge cells": "Zelle fusion\u00e9ieren",
+"Insert template": "Virlag drasetzen",
+"Templates": "Virlagen",
+"Background color": "Hanndergrondfaarf",
+"Text color": "Textfaarf",
+"Show blocks": "Bl\u00e9ck weisen",
+"Show invisible characters": "Onsiichtbar Zeeche weisen",
+"Words: {0}": "Wierder: {0}",
+"Insert": "Drasetzen",
+"File": "Fichier",
+"Edit": "\u00c4nneren",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Ber\u00e4ich fir format\u00e9ierten Text. Dr\u00e9ck ALT+F9 fir de Men\u00fc. Dr\u00e9ck ALT+F10 fir d'Geschirleescht. Dr\u00e9ck ALT+0 fir d'H\u00ebllef.",
+"Tools": "Geschir",
+"View": "Kucken",
+"Table": "Tabell",
+"Format": "Format"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/lt.js b/program/js/tinymce/langs/lt.js
new file mode 100644
index 000000000..411a71f89
--- /dev/null
+++ b/program/js/tinymce/langs/lt.js
@@ -0,0 +1,186 @@
+tinymce.addI18n('lt',{
+"Cut": "I\u0161kirpti",
+"Heading 5": "Antra\u0161t\u0117 5",
+"Header 2": "Antra\u0161t\u0117 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Nar\u0161ykl\u0117s nustatymai neleid\u017eia redaktoriui tiesiogiai pasiekti laikinosios atminties. Pra\u0161ome naudoti klaviat\u016bros klavi\u0161us Ctrl+X\/C\/V.",
+"Heading 4": "Antra\u0161t\u0117 4",
+"Div": "Div",
+"Heading 2": "Antra\u0161t\u0117 2",
+"Paste": "\u012ed\u0117ti",
+"Close": "U\u017edaryti",
+"Font Family": "\u0160riftas",
+"Pre": "Pre",
+"Align right": "Lygiuoti de\u0161in\u0117je",
+"New document": "Naujas dokumentas",
+"Blockquote": "Citata",
+"Numbered list": "Skaitmeninis s\u0105ra\u0161as",
+"Heading 1": "Antra\u0161t\u0117 1",
+"Headings": "Antra\u0161t\u0117s",
+"Increase indent": "Didinti \u012ftrauk\u0105",
+"Formats": "Formatai",
+"Headers": "Antra\u0161t\u0117s",
+"Select all": "Pa\u017eym\u0117ti visk\u0105",
+"Header 3": "Antra\u0161t\u0117 3",
+"Blocks": "Blokai",
+"Undo": "Atstatyti",
+"Strikethrough": "Perbrauktas",
+"Bullet list": "\u017denklinimo s\u0105ra\u0161as",
+"Header 1": "Antra\u0161t\u0117 1",
+"Superscript": "Vir\u0161utinis indeksas",
+"Clear formatting": "Naikinti formatavim\u0105",
+"Font Sizes": "\u0160rifto dyd\u017eiai",
+"Subscript": "Apatinis indeksas",
+"Header 6": "Antra\u0161t\u0117 6",
+"Redo": "Gr\u0105\u017einti",
+"Paragraph": "Paragrafas",
+"Ok": "Gerai",
+"Bold": "Pary\u0161kintas",
+"Code": "Kodas",
+"Italic": "Kursyvinis",
+"Align center": "Centruoti",
+"Header 5": "Antra\u0161t\u0117 5",
+"Heading 6": "Antra\u0161t\u0117 6",
+"Heading 3": "Antra\u0161t\u0117 3",
+"Decrease indent": "Ma\u017einti \u012ftrauk\u0105",
+"Header 4": "Antra\u0161t\u0117 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Dabar \u012fterpiama paprastojo teksto re\u017eimu. Kol \u0161i parinktis \u012fjungta, turinys bus \u012fterptas kaip paprastas tekstas.",
+"Underline": "Pabrauktas",
+"Cancel": "Atsisakyti",
+"Justify": "I\u0161d\u0117styti per vis\u0105 plot\u012f",
+"Inline": "Inline",
+"Copy": "Kopijuoti",
+"Align left": "Lygiuoti kair\u0117je",
+"Visual aids": "Vaizdin\u0117s priemon\u0117s",
+"Lower Greek": "Ma\u017eosios graik\u0173",
+"Square": "Kvadratas",
+"Default": "Pagrindinis",
+"Lower Alpha": "Ma\u017eosios raid\u0117s",
+"Circle": "Apskritimas",
+"Disc": "Diskas",
+"Upper Alpha": "Did\u017eiosios raid\u0117s",
+"Upper Roman": "Did\u017eiosios rom\u0117n\u0173",
+"Lower Roman": "Ma\u017eosios rom\u0117n\u0173",
+"Name": "Pavadinimas",
+"Anchor": "\u017dym\u0117",
+"You have unsaved changes are you sure you want to navigate away?": "Turite nei\u0161saugot\u0173 pakeitim\u0173! Ar tikrai norite i\u0161eiti?",
+"Restore last draft": "Atstatyti paskutin\u012f projekt\u0105",
+"Special character": "Specialus simbolis",
+"Source code": "Pirminis \u0161altinis",
+"Right to left": "I\u0161 de\u0161in\u0117s \u012f kair\u0119",
+"Left to right": "I\u0161 kair\u0117s \u012f de\u0161in\u0119",
+"Emoticons": "Jaustukai",
+"Robots": "Robotai",
+"Document properties": "Dokumento savyb\u0117s",
+"Title": "Pavadinimas",
+"Keywords": "\u017dymos",
+"Encoding": "Kodavimas",
+"Description": "Apra\u0161as",
+"Author": "Autorius",
+"Fullscreen": "Visas ekranas",
+"Horizontal line": "Horizontali linija",
+"Horizontal space": "Horizontalus tarpas",
+"Insert\/edit image": "\u012eterpti|Tvarkyti paveiksl\u0117l\u012f",
+"General": "Bendra",
+"Advanced": "I\u0161pl\u0117stas",
+"Source": "Pirmin\u0117 nuoroda",
+"Border": "R\u0117melis",
+"Constrain proportions": "Laikytis proporcij\u0173",
+"Vertical space": "Vertikalus tarpas",
+"Image description": "Paveiksl\u0117lio apra\u0161as",
+"Style": "Stilius",
+"Dimensions": "Matmenys",
+"Insert image": "\u012eterpti paveiksl\u0117l\u012f",
+"Insert date\/time": "\u012eterpti dat\u0105\/laik\u0105",
+"Remove link": "\u0160alinti nuorod\u0105",
+"Url": "Nuoroda",
+"Text to display": "Rodomas tekstas",
+"Anchors": "\u017dym\u0117",
+"Insert link": "\u012eterpti nuorod\u0105",
+"New window": "Naujas langas",
+"None": "Nieko",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Atrodo, kad \u012fved\u0117te nuotolin\u0119 nuorod\u0105. Ar norite prie\u0161 j\u0105 \u012fvesti reikalaujam\u0105 \u201ehttp:\/\/\u201c?",
+"Target": "Tikslin\u0117 nuoroda",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Atrodo, kad \u012fvesta nuoroda yra elektroninio pa\u0161to adresas. Ar prad\u017eioje norite \u012fvesti reikalaujam\u0105 \u201emailto:\u201c?",
+"Insert\/edit link": "\u012eterpti\/taisyti nuorod\u0105",
+"Insert\/edit video": "\u012eterpti\/tvarkyti video",
+"Poster": "Plakatas",
+"Alternative source": "Alternatyvus \u0161altinis",
+"Paste your embed code below:": "\u012eterpkite kod\u0105 \u017eemiau:",
+"Insert video": "\u012eterpti video",
+"Embed": "\u012eterpti",
+"Nonbreaking space": "Nepertraukiamos vietos",
+"Page break": "Puslapio skirtukas",
+"Paste as text": "\u012eklijuoti kaip tekst\u0105",
+"Preview": "Per\u017ei\u016bra",
+"Print": "Spausdinti",
+"Save": "I\u0161saugoti",
+"Could not find the specified string.": "Nepavyko rasti nurodytos eilut\u0117s.",
+"Replace": "Pakeisti",
+"Next": "Sekantis",
+"Whole words": "Visus \u017eod\u017eius",
+"Find and replace": "Surasti ir pakeisti",
+"Replace with": "Kuo pakeisti",
+"Find": "Ie\u0161koti",
+"Replace all": "Pakeisti visk\u0105",
+"Match case": "Atitinkamus",
+"Prev": "Ankstesnis",
+"Spellcheck": "Ra\u0161ybos tikrinimas",
+"Finish": "Baigti",
+"Ignore all": "Ignoruoti visk\u0105",
+"Ignore": "Ignoruoti",
+"Insert row before": "\u012eterpti eilut\u0119 prie\u0161",
+"Rows": "Eilut\u0117s",
+"Height": "Auk\u0161tis",
+"Paste row after": "\u012ed\u0117ti eilut\u0119 po",
+"Alignment": "Lygiavimas",
+"Column group": "Stulpeli\u0173 grup\u0117",
+"Row": "Eilut\u0117s",
+"Insert column before": "\u012eterpti stulpel\u012f prie\u0161",
+"Split cell": "Skaidyti langelius",
+"Cell padding": "Tarpas nuo langelio iki teksto",
+"Cell spacing": "Tarpas tarp langeli\u0173",
+"Row type": "Eilu\u010di\u0173 tipas",
+"Insert table": "\u012eterpti lentel\u0119",
+"Body": "Turinys",
+"Caption": "Antra\u0161t\u0117",
+"Footer": "Apa\u010dia",
+"Delete row": "Naikinti eilut\u0119",
+"Paste row before": "\u012ed\u0117ti eilut\u0119 prie\u0161",
+"Scope": "Strukt\u016bra",
+"Delete table": "\u0160alinti lentel\u0119",
+"Header cell": "Antra\u0161t\u0117s langelis",
+"Column": "Stulpelis",
+"Cell": "Langeliai",
+"Header": "Antra\u0161t\u0117",
+"Cell type": "Langelio tipas",
+"Copy row": "Kopijuoti eilut\u0119",
+"Row properties": "Eilut\u0117s savyb\u0117s",
+"Table properties": "Lentel\u0117s savyb\u0117s",
+"Row group": "Eilu\u010di\u0173 grup\u0117",
+"Right": "De\u0161in\u0117",
+"Insert column after": "\u012eterpti stulpel\u012f po",
+"Cols": "Stulpeliai",
+"Insert row after": "\u012eterpti eilut\u0119 po",
+"Width": "Plotis",
+"Cell properties": "Langelio savyb\u0117s",
+"Left": "Kair\u0117",
+"Cut row": "I\u0161kirpti eilut\u0119",
+"Delete column": "Naikinti stulpel\u012f",
+"Center": "Centras",
+"Merge cells": "Sujungti langelius",
+"Insert template": "\u012eterpti \u0161ablon\u0105",
+"Templates": "\u0160ablonai",
+"Background color": "Fono spalva",
+"Text color": "Teksto spalva",
+"Show blocks": "Rodyti blokus",
+"Show invisible characters": "Rodyti nematomus simbolius",
+"Words: {0}": "\u017dod\u017eiai: {0}",
+"Insert": "\u012eterpti",
+"File": "Failas",
+"Edit": "Redaguoti",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Suformatuoto teksto laukas. D\u0117l meniu spauskite ALT-F9. U\u017eduo\u010di\u0173 juostos \u012fjungimui spauskite ALT-F10. Pagalbai - spauskite ALT-0.",
+"Tools": "\u012erankiai",
+"View": "Per\u017ei\u016bra",
+"Table": "Lentel\u0117",
+"Format": "Formatas"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/lv.js b/program/js/tinymce/langs/lv.js
new file mode 100644
index 000000000..7de369052
--- /dev/null
+++ b/program/js/tinymce/langs/lv.js
@@ -0,0 +1,197 @@
+tinymce.addI18n('lv',{
+"Cut": "Izgriezt",
+"Heading 5": "5.l\u012bme\u0146a virsraksts",
+"Header 2": "Otr\u0101 l\u012bme\u0146a virsraksts",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "J\u016bsu p\u0101rl\u016bkprogramma neatbalsta piek\u013cuvi starpliktuvei. L\u016bdzu izmantojiet Ctrl+X\/C\/V klaviat\u016bras sa\u012bsnes.",
+"Heading 4": "4.l\u012bme\u0146a virsraksts",
+"Div": "Div elements",
+"Heading 2": "2.l\u012bme\u0146a virsraksts",
+"Paste": "Iel\u012bm\u0113t",
+"Close": "Aizv\u0113rt",
+"Font Family": "Fontu saime",
+"Pre": "Pre elements",
+"Align right": "L\u012bdzin\u0101t pa labi",
+"New document": "Jauns dokuments",
+"Blockquote": "Cit\u0101ts",
+"Numbered list": "Numur\u0113ts saraksts",
+"Heading 1": "1. l\u012bme\u0146a virsraksts",
+"Headings": "Virsraksti",
+"Increase indent": "Palielin\u0101t atk\u0101pi",
+"Formats": "Form\u0101ti",
+"Headers": "Virsraksti",
+"Select all": "Iez\u012bm\u0113t",
+"Header 3": "Tre\u0161\u0101 l\u012bme\u0146a virsraksts",
+"Blocks": "Bloka elements",
+"Undo": "Atsaukt",
+"Strikethrough": "P\u0101rsv\u012btrot",
+"Bullet list": "Nenumuer\u0113ts saraksts",
+"Header 1": "Pirm\u0101 l\u012bme\u0146a virsraksts",
+"Superscript": "Aug\u0161raksts",
+"Clear formatting": "No\u0146emt format\u0113jumu",
+"Font Sizes": "Fonta izm\u0113ri",
+"Subscript": "Apak\u0161raksts",
+"Header 6": "Sest\u0101 l\u012bme\u0146a virsraksts",
+"Redo": "Atcelt atsauk\u0161anu",
+"Paragraph": "Paragr\u0101fs",
+"Ok": "Labi",
+"Bold": "Treknraksts",
+"Code": "Koda elements",
+"Italic": "Kurs\u012bvs",
+"Align center": "Centr\u0113t",
+"Header 5": "Piekt\u0101 l\u012bme\u0146a virsraksts",
+"Heading 6": "6.l\u012bme\u0146a virsraksts",
+"Heading 3": "3.l\u012bme\u0146a virsraksts",
+"Decrease indent": "Samazin\u0101t atk\u0101pi",
+"Header 4": "Ceturt\u0101 l\u012bme\u0146a virsraksts",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Iel\u012bm\u0113\u0161ana tagad ir vienk\u0101r\u0161teksta re\u017e\u012bm\u0101. Saturs tiks iel\u012bm\u0113ts k\u0101 vienk\u0101r\u0161teksts, l\u012bdz \u0161\u012b opcija tiks atsl\u0113gta.",
+"Underline": "Pasv\u012btrot",
+"Cancel": "Atcelt",
+"Justify": "L\u012bdzin\u0101t abas malas",
+"Inline": "Rindi\u0146as elements",
+"Copy": "Kop\u0113t",
+"Align left": "L\u012bdzin\u0101t pa kreisi",
+"Visual aids": "Uzskates l\u012bdzek\u013ci",
+"Lower Greek": "Grie\u0137u mazie burti",
+"Square": "Kvadr\u0101ts",
+"Default": "Noklus\u0113juma",
+"Lower Alpha": "Lat\u012b\u0146u mazie burti",
+"Circle": "Aplis",
+"Disc": "Disks",
+"Upper Alpha": "Lat\u012b\u0146u lielie burti",
+"Upper Roman": "Romie\u0161u lielie burti",
+"Lower Roman": "Romie\u0161u mazie burti",
+"Name": "V\u0101rds",
+"Anchor": "Enkurelements",
+"You have unsaved changes are you sure you want to navigate away?": "Jums ir nesaglab\u0101tas izmai\u0146as, esat dro\u0161s, ka v\u0113laties doties prom",
+"Restore last draft": "Atjaunot p\u0113d\u0113jo melnrakstu",
+"Special character": "\u012apa\u0161ais simbols",
+"Source code": "Pirmkods",
+"Color": "Kr\u0101sa",
+"Right to left": "No lab\u0101s uz kreiso",
+"Left to right": "No kreis\u0101s uz labo",
+"Emoticons": "Emocijas",
+"Robots": "Programmas",
+"Document properties": "Dokumenta uzst\u0101d\u012bjumi",
+"Title": "Nosaukums",
+"Keywords": "Atsl\u0113gv\u0101rdi",
+"Encoding": "Kod\u0113jums",
+"Description": "Apraksts",
+"Author": "Autors",
+"Fullscreen": "Pilnekr\u0101na re\u017e\u012bms",
+"Horizontal line": "Horizont\u0101la l\u012bnija",
+"Horizontal space": "Horizont\u0101l\u0101 vieta",
+"Insert\/edit image": "Ievietot\/labot att\u0113lu",
+"General": "Visp\u0101r\u012bgi",
+"Advanced": "Papildus",
+"Source": "Avots",
+"Border": "Apmale",
+"Constrain proportions": "Saglab\u0101t malu attiec\u012bbu",
+"Vertical space": "Vertik\u0101l\u0101 vieta",
+"Image description": "Att\u0113la apraksts",
+"Style": "Stils",
+"Dimensions": "Izm\u0113ri",
+"Insert image": "Ievietot att\u0113lu",
+"Insert date\/time": "Ievietot datumu\/laiku",
+"Remove link": "No\u0146emt saiti",
+"Url": "Adrese",
+"Text to display": "Teksts",
+"Anchors": "Enkurelements",
+"Insert link": "Ievietot saiti",
+"New window": "Jauns logs",
+"None": "Nek\u0101",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Liekas, ka ievad\u012bt\u0101 adrese ir \u0101r\u0113ja saite. Vai v\u0113lieties pievienot nepiecie\u0161amo http:\/\/ pried\u0113kli?",
+"Target": "M\u0113r\u0137is",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Liekas, ka ievad\u012bt\u0101 adrese ir e-pasts. Vai v\u0113lieties pievienot nepiecie\u0161amo mailto: pried\u0113kli?",
+"Insert\/edit link": "Ievietot\/labot saiti",
+"Insert\/edit video": "Ievietot\/redi\u0123\u0113t video",
+"Poster": "Att\u0113ls",
+"Alternative source": "Alternat\u012bvs avots",
+"Paste your embed code below:": "Iekop\u0113jiet embed kodu zem\u0101k:",
+"Insert video": "Ievietot video",
+"Embed": "Embed",
+"Nonbreaking space": "L\u012bnij-nedalo\u0161s atstarpes simbols",
+"Page break": "P\u0101rnest jaun\u0101 lap\u0101",
+"Paste as text": "Iel\u012bm\u0113t k\u0101 tekstu",
+"Preview": "Priek\u0161skat\u012bjums",
+"Print": "Print\u0113t",
+"Save": "Saglab\u0101t",
+"Could not find the specified string.": "Mekl\u0113tais teksts netika atrasts",
+"Replace": "Aizvietot",
+"Next": "N\u0101ko\u0161ais",
+"Whole words": "Pilnus v\u0101rdus",
+"Find and replace": "Mekl\u0113t un aizvietot",
+"Replace with": "Aizvietot ar",
+"Find": "Mekl\u0113t",
+"Replace all": "Aizvietot visu",
+"Match case": "Re\u0123istrj\u016bt\u012bgs",
+"Prev": "Iepriek\u0161\u0113jais",
+"Spellcheck": "Pareizrakst\u012bbas p\u0101rbaude",
+"Finish": "Beigt",
+"Ignore all": "Ignor\u0113t visu",
+"Ignore": "Ignor\u0113t",
+"Add to Dictionary": "Pievienot v\u0101rdn\u012bcai",
+"Insert row before": "Ievietot rindu pirms",
+"Rows": "Rindas",
+"Height": "Augstums",
+"Paste row after": "Iel\u012bm\u0113t rindu p\u0113c",
+"Alignment": "L\u012bdzin\u0101jums",
+"Border color": "Apmales kr\u0101sa",
+"Column group": "Kolonnu grupa",
+"Row": "Rinda",
+"Insert column before": "Ievietot kolonu pirms",
+"Split cell": "Sadal\u012bt \u0161\u016bnas",
+"Cell padding": "\u0160\u016bnas atstatumi",
+"Cell spacing": "\u0160\u016bnu atstarpes",
+"Row type": "Rindas tips",
+"Insert table": "Ievietot tabulu",
+"Body": "\u0136ermenis",
+"Caption": "Virsraksts",
+"Footer": "K\u0101jene",
+"Delete row": "Dz\u0113st rindu",
+"Paste row before": "Iel\u012bm\u0113t rindu pirms",
+"Scope": "Apgabals",
+"Delete table": "Dz\u0113st tabulu",
+"H Align": "Horizont\u0101lais novietojums",
+"Top": "Aug\u0161\u0101",
+"Header cell": "Galvenes \u0161\u016bna",
+"Column": "Kolona",
+"Row group": "Rindu grupa",
+"Cell": "\u0160\u016bna",
+"Middle": "Vid\u016b",
+"Cell type": "\u0160\u016bnas tips",
+"Copy row": "Kop\u0113t rindu",
+"Row properties": "Rindas uzst\u0101d\u012bjumi",
+"Table properties": "Tabulas uzst\u0101d\u012bjumi",
+"Bottom": "Apak\u0161\u0101",
+"V Align": "Vertik\u0101lais novietojums",
+"Header": "Galvene",
+"Right": "Pa labi",
+"Insert column after": "Ievietot kolonu p\u0113c",
+"Cols": "Kolonas",
+"Insert row after": "Ievietot rindu p\u0113c",
+"Width": "Platums",
+"Cell properties": "\u0160\u016bnas uzst\u0101d\u012bjumi",
+"Left": "Pa kreisi",
+"Cut row": "Izgriezt rindu",
+"Delete column": "Dz\u0113st kolonu",
+"Center": "Centr\u0113t",
+"Merge cells": "Apvienot \u0161\u016bnas",
+"Insert template": "Ievietot \u0161ablonu",
+"Templates": "\u0160abloni",
+"Background color": "Fona kr\u0101sa",
+"Custom...": "Izv\u0113les...",
+"Custom color": "Kr\u0101sa p\u0113c izv\u0113les",
+"No color": "Bez kr\u0101sas",
+"Text color": "Teksta kr\u0101sa",
+"Show blocks": "R\u0101d\u012bt blokus",
+"Show invisible characters": "R\u0101d\u012bt neredzam\u0101s rakstz\u012bmes",
+"Words: {0}": "V\u0101rdi: {0}",
+"Insert": "Ievietot",
+"File": "Fails",
+"Edit": "Labot",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Vizu\u0101li redi\u0123\u0113jama teksta apgabals. Nospiediet ALT-F9 izv\u0113lnei, ALT-F10 r\u012bkjoslai vai ALT-0 pal\u012bdz\u012bbai.",
+"Tools": "R\u012bki",
+"View": "Skat\u012bt",
+"Table": "Tabula",
+"Format": "Form\u0101ts"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/ml.js b/program/js/tinymce/langs/ml.js
new file mode 100644
index 000000000..34cf203a8
--- /dev/null
+++ b/program/js/tinymce/langs/ml.js
@@ -0,0 +1,179 @@
+tinymce.addI18n('ml',{
+"Cut": "\u0d2e\u0d41\u0d31\u0d3f\u0d2f\u0d4d\u0d15\u0d4d\u0d15\u0d41\u0d15 ",
+"Header 2": "Header 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.",
+"Div": "Div",
+"Paste": "\u0d12\u0d1f\u0d4d\u0d1f\u0d3f\u0d2f\u0d4d\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Close": "\u0d05\u0d1f\u0d2f\u0d4d\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Font Family": "Font Family",
+"Pre": "Pre",
+"Align right": "\u0d35\u0d32\u0d24\u0d4d\u0d24\u0d4b\u0d1f\u0d4d\u0d1f\u0d41\u0d4d",
+"New document": "\u0d2a\u0d41\u0d24\u0d3f\u0d2f \u0d30\u0d1a\u0d28",
+"Blockquote": "Blockquote",
+"Numbered list": "\u0d0e\u0d23\u0d4d\u0d23\u0d2e\u0d3f\u0d1f\u0d4d\u0d1f \u0d2a\u0d1f\u0d4d\u0d1f\u0d3f\u0d15",
+"Increase indent": "\u0d35\u0d3f\u0d1f\u0d35\u0d41\u0d4d \u0d15\u0d42\u0d1f\u0d4d\u0d1f\u0d41\u0d15",
+"Formats": "Formats",
+"Headers": "Headers",
+"Select all": "\u0d0e\u0d32\u0d4d\u0d32\u0d3e\u0d02",
+"Header 3": "Header 3",
+"Blocks": "Blocks",
+"Undo": "\u0d35\u0d47\u0d23\u0d4d\u0d1f",
+"Strikethrough": "\u0d35\u0d46\u0d1f\u0d4d\u0d1f\u0d41\u0d15",
+"Bullet list": "\u0d05\u0d1f\u0d2f\u0d3e\u0d33\u0d2e\u0d3f\u0d1f\u0d4d\u0d1f \u0d2a\u0d1f\u0d4d\u0d1f\u0d3f\u0d15",
+"Header 1": "Header 1",
+"Superscript": "\u0d38\u0d42\u0d2a\u0d4d\u0d2a\u0d30\u0d4d\u200d\u0d38\u0d4d\u0d15\u0d4d\u0d30\u0d3f\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d4d",
+"Clear formatting": "\u0d35\u0d46\u0d1f\u0d3f\u0d2a\u0d4d\u0d2a\u0d3e\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Font Sizes": "Font Sizes",
+"Subscript": "\u0d38\u0d2c\u0d4d\u200c\u0d38\u0d4d\u0d15\u0d4d\u0d30\u0d3f\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d4d",
+"Header 6": "Header 6",
+"Redo": "\u0d35\u0d40\u0d23\u0d4d\u0d1f\u0d41\u0d02",
+"Paragraph": "Paragraph",
+"Ok": "\u0d36\u0d30\u0d3f",
+"Bold": "\u0d15\u0d28\u0d24\u0d4d\u0d24",
+"Code": "Code",
+"Italic": "\u0d1a\u0d46\u0d30\u0d3f\u0d1e\u0d4d\u0d1e",
+"Align center": "\u0d28\u0d1f\u0d41\u0d35\u0d3f\u0d32\u0d4b\u0d1f\u0d4d\u0d1f\u0d41\u0d4d",
+"Header 5": "Header 5",
+"Decrease indent": "\u0d35\u0d3f\u0d1f\u0d35\u0d41\u0d4d \u0d15\u0d41\u0d31\u0d2f\u0d4d\u0d15\u0d4d\u0d15\u0d41\u0d15 ",
+"Header 4": "Header 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.",
+"Underline": "\u0d05\u0d1f\u0d3f\u0d35\u0d30",
+"Cancel": "\u0d31\u0d26\u0d4d\u0d26\u0d3e\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Justify": "\u0d38\u0d28\u0d4d\u0d24\u0d41\u0d32\u0d3f\u0d24\u0d2e\u0d3e\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Inline": "Inline",
+"Copy": "\u0d2a\u0d15\u0d30\u0d4d\u200d\u0d24\u0d4d\u0d24\u0d41\u0d15",
+"Align left": "\u0d07\u0d1f\u0d24\u0d4d\u0d24\u0d4b\u0d1f\u0d4d\u0d1f\u0d41\u0d4d",
+"Visual aids": "\u0d26\u0d43\u0d36\u0d4d\u0d2f\u0d38\u0d39\u0d3e\u0d2f\u0d3f\u0d15\u0d33\u0d4d\u200d",
+"Lower Greek": "Lower Greek",
+"Square": "Square",
+"Default": "Default",
+"Lower Alpha": "Lower Alpha",
+"Circle": "Circle",
+"Disc": "Disc",
+"Upper Alpha": "Upper Alpha",
+"Upper Roman": "Upper Roman",
+"Lower Roman": "Lower Roman",
+"Name": "Name",
+"Anchor": "Anchor",
+"You have unsaved changes are you sure you want to navigate away?": "You have unsaved changes are you sure you want to navigate away?",
+"Restore last draft": "Restore last draft",
+"Special character": "Special character",
+"Source code": "Source code",
+"Right to left": "Right to left",
+"Left to right": "Left to right",
+"Emoticons": "Emoticons",
+"Robots": "Robots",
+"Document properties": "Document properties",
+"Title": "Title",
+"Keywords": "Keywords",
+"Encoding": "Encoding",
+"Description": "Description",
+"Author": "Author",
+"Fullscreen": "Fullscreen",
+"Horizontal line": "Horizontal line",
+"Horizontal space": "Horizontal space",
+"Insert\/edit image": "Insert\/edit image",
+"General": "General",
+"Advanced": "Advanced",
+"Source": "Source",
+"Border": "Border",
+"Constrain proportions": "Constrain proportions",
+"Vertical space": "Vertical space",
+"Image description": "Image description",
+"Style": "Style",
+"Dimensions": "Dimensions",
+"Insert image": "Insert image",
+"Insert date\/time": "Insert date\/time",
+"Remove link": "Remove link",
+"Url": "Url",
+"Text to display": "Text to display",
+"Anchors": "Anchors",
+"Insert link": "Insert link",
+"New window": "New window",
+"None": "None",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?",
+"Target": "Target",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",
+"Insert\/edit link": "Insert\/edit link",
+"Insert\/edit video": "Insert\/edit video",
+"Poster": "Poster",
+"Alternative source": "Alternative source",
+"Paste your embed code below:": "Paste your embed code below:",
+"Insert video": "Insert video",
+"Embed": "Embed",
+"Nonbreaking space": "Nonbreaking space",
+"Page break": "Page break",
+"Paste as text": "Paste as text",
+"Preview": "Preview",
+"Print": "Print",
+"Save": "Save",
+"Could not find the specified string.": "Could not find the specified string.",
+"Replace": "Replace",
+"Next": "Next",
+"Whole words": "Whole words",
+"Find and replace": "Find and replace",
+"Replace with": "Replace with",
+"Find": "Find",
+"Replace all": "Replace all",
+"Match case": "Match case",
+"Prev": "Prev",
+"Spellcheck": "Spellcheck",
+"Finish": "Finish",
+"Ignore all": "Ignore all",
+"Ignore": "Ignore",
+"Insert row before": "Insert row before",
+"Rows": "Rows",
+"Height": "Height",
+"Paste row after": "Paste row after",
+"Alignment": "Alignment",
+"Column group": "Column group",
+"Row": "Row",
+"Insert column before": "Insert column before",
+"Split cell": "Split cell",
+"Cell padding": "Cell padding",
+"Cell spacing": "Cell spacing",
+"Row type": "Row type",
+"Insert table": "Insert table",
+"Body": "Body",
+"Caption": "Caption",
+"Footer": "Footer",
+"Delete row": "Delete row",
+"Paste row before": "Paste row before",
+"Scope": "Scope",
+"Delete table": "Delete table",
+"Header cell": "Header cell",
+"Column": "Column",
+"Cell": "Cell",
+"Header": "Header",
+"Cell type": "Cell type",
+"Copy row": "Copy row",
+"Row properties": "Row properties",
+"Table properties": "Table properties",
+"Row group": "Row group",
+"Right": "Right",
+"Insert column after": "Insert column after",
+"Cols": "Cols",
+"Insert row after": "Insert row after",
+"Width": "Width",
+"Cell properties": "Cell properties",
+"Left": "Left",
+"Cut row": "Cut row",
+"Delete column": "Delete column",
+"Center": "Center",
+"Merge cells": "Merge cells",
+"Insert template": "Insert template",
+"Templates": "Templates",
+"Background color": "Background color",
+"Text color": "Text color",
+"Show blocks": "Show blocks",
+"Show invisible characters": "Show invisible characters",
+"Words: {0}": "Words: {0}",
+"Insert": "Insert",
+"File": "File",
+"Edit": "Edit",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help",
+"Tools": "Tools",
+"View": "View",
+"Table": "Table",
+"Format": "Format"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/ml_IN.js b/program/js/tinymce/langs/ml_IN.js
new file mode 100644
index 000000000..607e03e9e
--- /dev/null
+++ b/program/js/tinymce/langs/ml_IN.js
@@ -0,0 +1,179 @@
+tinymce.addI18n('ml_IN',{
+"Cut": "\u0d2e\u0d41\u0d31\u0d3f\u0d2f\u0d4d\u0d15\u0d4d\u0d15\u0d41\u0d15 ",
+"Header 2": "\u0d24\u0d32\u0d15\u0d4d\u0d15\u0d46\u0d1f\u0d4d\u0d1f\u0d4d\u200c2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0d28\u0d3f\u0d19\u0d4d\u0d19\u0d33\u0d41\u0d1f\u0d46 \u0d2c\u0d4d\u0d30\u0d4c\u0d38\u0d30\u0d4d\u200d \u0d15\u0d4d\u0d32\u0d3f\u0d2a\u0d4d\u0d2a\u0d4d\u0d2c\u0d4b\u0d30\u0d4d\u200d\u0d21\u0d3f\u0d32\u0d47\u0d15\u0d4d\u0d15\u0d4d \u0d2a\u0d4d\u0d30\u0d35\u0d47\u0d36\u0d28\u0d02 \u0d28\u0d32\u0d4d\u200d\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d3f\u0d32\u0d4d\u0d32. \u0d26\u0d2f\u0d35\u0d41 \u0d1a\u0d46\u0d2f\u0d4d\u0d24 CTRL+X\/C\/V \u0d37\u0d4b\u0d30\u0d4d\u200d\u0d1f\u0d4d\u0d1f\u0d4d\u0d15\u0d1f\u0d4d\u0d1f\u0d41\u0d15\u0d33\u0d4d\u200d \u0d09\u0d2a\u0d2f\u0d4b\u0d17\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Div": "\u0d21\u0d3f\u0d35\u0d4d",
+"Paste": "\u0d12\u0d1f\u0d4d\u0d1f\u0d3f\u0d2f\u0d4d\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Close": "\u0d05\u0d1f\u0d2f\u0d4d\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Font Family": "\u0d2b\u0d4b\u0d23\u0d4d\u0d1f\u0d4d \u0d15\u0d41\u0d1f\u0d41\u0d02\u0d2c\u0d02",
+"Pre": "\u0d2a\u0d4d\u0d30\u0d40",
+"Align right": "\u0d35\u0d32\u0d24\u0d4d\u0d24\u0d4b\u0d1f\u0d4d\u0d1f\u0d41\u0d4d \u0d2a\u0d3f\u0d1f\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"New document": "\u0d2a\u0d41\u0d24\u0d3f\u0d2f \u0d30\u0d1a\u0d28",
+"Blockquote": "\u0d15\u0d42\u0d1f\u0d4d\u0d1f\u0d09\u0d26\u0d4d\u0d27\u0d30\u0d23\u0d3f",
+"Numbered list": "\u0d0e\u0d23\u0d4d\u0d23\u0d2e\u0d3f\u0d1f\u0d4d\u0d1f \u0d2a\u0d1f\u0d4d\u0d1f\u0d3f\u0d15",
+"Increase indent": "\u0d35\u0d3f\u0d1f\u0d35\u0d41\u0d4d \u0d15\u0d42\u0d1f\u0d4d\u0d1f\u0d41\u0d15",
+"Formats": "\u0d15\u0d46\u0d1f\u0d4d\u0d1f\u0d41\u0d02\u0d2e\u0d1f\u0d4d\u0d1f\u0d41\u0d02",
+"Headers": "\u0d24\u0d32\u0d15\u0d4d\u0d15\u0d46\u0d1f\u0d4d\u0d1f\u0d41\u0d15\u0d33\u0d4d\u200d",
+"Select all": "\u0d0e\u0d32\u0d4d\u0d32\u0d3e\u0d02 \u0d24\u0d3f\u0d30\u0d1e\u0d4d\u0d1e\u0d46\u0d1f\u0d41\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Header 3": "\u0d24\u0d32\u0d15\u0d4d\u0d15\u0d46\u0d1f\u0d4d\u0d1f\u0d4d\u200c3",
+"Blocks": "\u0d15\u0d42\u0d1f\u0d4d\u0d1f\u0d02",
+"Undo": "\u0d1a\u0d46\u0d2f\u0d4d\u0d24\u0d24\u0d4d \u0d24\u0d3f\u0d30\u0d3f\u0d1a\u0d4d\u0d1a\u0d46\u0d1f\u0d41\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Strikethrough": "\u0d35\u0d46\u0d1f\u0d4d\u0d1f\u0d41\u0d15",
+"Bullet list": "\u0d05\u0d1f\u0d2f\u0d3e\u0d33\u0d2e\u0d3f\u0d1f\u0d4d\u0d1f \u0d2a\u0d1f\u0d4d\u0d1f\u0d3f\u0d15",
+"Header 1": "\u0d24\u0d32\u0d15\u0d4d\u0d15\u0d46\u0d1f\u0d4d\u0d1f\u0d4d\u200c1",
+"Superscript": "\u0d38\u0d42\u0d2a\u0d4d\u0d2a\u0d30\u0d4d\u200d\u0d38\u0d4d\u0d15\u0d4d\u0d30\u0d3f\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d4d",
+"Clear formatting": "\u0d35\u0d46\u0d1f\u0d3f\u0d2a\u0d4d\u0d2a\u0d3e\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Font Sizes": "\u0d2b\u0d4b\u0d23\u0d4d\u0d1f\u0d4d \u0d35\u0d32\u0d3f\u0d2a\u0d4d\u0d2a\u0d19\u0d4d\u0d19\u0d33\u0d4d\u200d",
+"Subscript": "\u0d38\u0d2c\u0d4d\u200c\u0d38\u0d4d\u0d15\u0d4d\u0d30\u0d3f\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d4d",
+"Header 6": "\u0d24\u0d32\u0d15\u0d4d\u0d15\u0d46\u0d1f\u0d4d\u0d1f\u0d4d\u200c6",
+"Redo": "\u0d35\u0d40\u0d23\u0d4d\u0d1f\u0d41\u0d02 \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d15",
+"Paragraph": "\u0d16\u0d23\u0d4d\u200c\u0d21\u0d3f\u0d15",
+"Ok": "\u0d36\u0d30\u0d3f",
+"Bold": "\u0d15\u0d28\u0d2a\u0d4d\u0d2a\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Code": "\u0d15\u0d4b\u0d21\u0d4d",
+"Italic": "\u0d1a\u0d46\u0d30\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Align center": "\u0d28\u0d1f\u0d41\u0d35\u0d3f\u0d32\u0d4b\u0d1f\u0d4d\u0d1f\u0d41\u0d4d \u0d2a\u0d3f\u0d1f\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Header 5": "\u0d24\u0d32\u0d15\u0d4d\u0d15\u0d46\u0d1f\u0d4d\u0d1f\u0d4d\u200c5",
+"Decrease indent": "\u0d35\u0d3f\u0d1f\u0d35\u0d41\u0d4d \u0d15\u0d41\u0d31\u0d2f\u0d4d\u0d15\u0d4d\u0d15\u0d41\u0d15 ",
+"Header 4": "\u0d24\u0d32\u0d15\u0d4d\u0d15\u0d46\u0d1f\u0d4d\u0d1f\u0d4d\u200c4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0d12\u0d1f\u0d4d\u0d1f\u0d3f\u0d2a\u0d4d\u0d2a\u0d4d \u0d07\u0d2a\u0d4d\u0d2a\u0d4b\u0d33\u0d4d\u200d \u0d32\u0d33\u0d3f\u0d24\u0d2e\u0d3e\u0d2f \u0d1f\u0d46\u0d15\u0d4d\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d4d\u200c \u0d06\u0d2f\u0d3f\u0d1f\u0d4d\u0d1f\u0d3e\u0d23\u0d4d. \u0d28\u0d3f\u0d19\u0d4d\u0d19\u0d33\u0d4d\u200d \u0d08 \u0d38\u0d57\u0d15\u0d30\u0d4d\u0d2f\u0d02 \u0d2e\u0d3e\u0d31\u0d4d\u0d31\u0d41\u0d28\u0d4d\u0d28\u0d24\u0d4d \u0d35\u0d30\u0d46 \u0d09\u0d33\u0d4d\u0d33\u0d1f\u0d15\u0d4d\u0d15\u0d02 \u0d32\u0d33\u0d3f\u0d24 \u0d1f\u0d46\u0d15\u0d4d\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d4d\u200c \u0d06\u0d2f\u0d3f\u0d1f\u0d4d\u0d1f\u0d3e\u0d2f\u0d3f\u0d30\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d02 \u0d12\u0d1f\u0d4d\u0d1f\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d24\u0d4d. ",
+"Underline": "\u0d05\u0d1f\u0d3f\u0d35\u0d30\u0d2f\u0d3f\u0d1f\u0d41\u0d15",
+"Cancel": "\u0d31\u0d26\u0d4d\u0d26\u0d3e\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Justify": "\u0d38\u0d28\u0d4d\u0d24\u0d41\u0d32\u0d3f\u0d24\u0d2e\u0d3e\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Inline": "\u0d35\u0d30\u0d3f\u0d2f\u0d3f\u0d32\u0d4d\u200d",
+"Copy": "\u0d2a\u0d15\u0d30\u0d4d\u200d\u0d24\u0d4d\u0d24\u0d41\u0d15",
+"Align left": "\u0d07\u0d1f\u0d24\u0d4d\u0d24\u0d4b\u0d1f\u0d4d\u0d1f\u0d41\u0d4d \u0d2a\u0d3f\u0d1f\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Visual aids": "\u0d26\u0d43\u0d36\u0d4d\u0d2f\u0d38\u0d39\u0d3e\u0d2f\u0d3f\u0d15\u0d33\u0d4d\u200d",
+"Lower Greek": "\u0d1a\u0d46\u0d31\u0d3f\u0d2f \u0d17\u0d4d\u0d30\u0d40\u0d15\u0d4d\u0d15\u0d4d\u200c \u0d05\u0d15\u0d4d\u0d37\u0d30\u0d19\u0d4d\u0d19\u0d33\u0d4d\u200d",
+"Square": "\u0d38\u0d2e\u0d1a\u0d24\u0d41\u0d30\u0d02",
+"Default": "\u0d09\u0d2a\u0d47\u0d15\u0d4d\u0d37",
+"Lower Alpha": "\u0d1a\u0d46\u0d31\u0d3f\u0d2f \u0d05\u0d15\u0d4d\u0d37\u0d30\u0d19\u0d4d\u0d19\u0d33\u0d4d\u200d",
+"Circle": "\u0d35\u0d1f\u0d4d\u0d1f\u0d02",
+"Disc": "\u0d1a\u0d15\u0d4d\u0d30\u0d02",
+"Upper Alpha": "\u0d35\u0d32\u0d3f\u0d2f \u0d06\u0d32\u0d4d\u0d2b\u0d3e \u0d05\u0d15\u0d4d\u0d37\u0d30\u0d19\u0d4d\u0d19\u0d33\u0d4d\u200d",
+"Upper Roman": "\u0d35\u0d32\u0d3f\u0d2f \u0d31\u0d4b\u0d2e\u0d28\u0d4d\u200d \u0d05\u0d15\u0d4d\u0d37\u0d30\u0d19\u0d4d\u0d19\u0d33\u0d4d\u200d",
+"Lower Roman": "\u0d1a\u0d46\u0d31\u0d3f\u0d2f \u0d31\u0d4b\u0d2e\u0d28\u0d4d\u200d \u0d05\u0d15\u0d4d\u0d37\u0d30\u0d19\u0d4d\u0d19\u0d33\u0d4d\u200d",
+"Name": "\u0d2a\u0d47\u0d30\u0d4d",
+"Anchor": "\u0d28\u0d19\u0d4d\u0d15\u0d42\u0d30\u0d02",
+"You have unsaved changes are you sure you want to navigate away?": "\u0d30\u0d15\u0d4d\u0d37\u0d2a\u0d4d\u0d2a\u0d46\u0d1f\u0d41\u0d24\u0d4d\u0d24\u0d3e\u0d24\u0d4d\u0d24 \u0d2e\u0d3e\u0d31\u0d4d\u0d31\u0d19\u0d4d\u0d19\u0d33\u0d4d\u200d \u0d28\u0d3f\u0d32\u0d28\u0d3f\u0d32\u0d4d\u200d\u0d15\u0d4d\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d41. \u0d2a\u0d41\u0d31\u0d24\u0d4d\u0d24\u0d41 \u0d15\u0d1f\u0d15\u0d4d\u0d15\u0d23\u0d4b?",
+"Restore last draft": "\u0d2a\u0d34\u0d2f \u0d21\u0d4d\u0d30\u0d3e\u0d2b\u0d4d\u0d31\u0d4d\u0d31\u0d4d\u200c \u0d24\u0d3f\u0d30\u0d3f\u0d1a\u0d4d\u0d1a\u0d41 \u0d15\u0d4a\u0d23\u0d4d\u0d1f\u0d4d \u0d35\u0d30\u0d3f\u0d15",
+"Special character": "\u0d2a\u0d4d\u0d30\u0d24\u0d4d\u0d2f\u0d47\u0d15\u0d3e\u0d15\u0d4d\u0d37\u0d30\u0d19\u0d4d\u0d19\u0d33\u0d4d\u200d",
+"Source code": "\u0d38\u0d4b\u0d34\u0d4d\u0d38\u0d4d \u0d15\u0d4b\u0d21\u0d4d",
+"Right to left": "\u0d35\u0d32\u0d24\u0d4d\u0d24\u0d41 \u0d28\u0d3f\u0d28\u0d4d\u0d28\u0d41\u0d02 \u0d07\u0d1f\u0d24\u0d4d\u0d24\u0d47\u0d15\u0d4d\u0d15\u0d4d",
+"Left to right": "\u0d07\u0d1f\u0d24\u0d4d\u0d24\u0d4d \u0d28\u0d3f\u0d28\u0d4d\u0d28\u0d41\u0d02 \u0d35\u0d32\u0d24\u0d4d\u0d24\u0d47\u0d15\u0d4d\u0d15\u0d4d",
+"Emoticons": "\u0d1a\u0d3f\u0d39\u0d4d\u0d28 \u0d2d\u0d3e\u0d37",
+"Robots": "\u0d2f\u0d28\u0d4d\u0d24\u0d4d\u0d30\u0d2e\u0d28\u0d41\u0d37\u0d4d\u0d2f\u0d28\u0d4d\u200d",
+"Document properties": "\u0d21\u0d4b\u0d15\u0d4d\u0d15\u0d41\u0d2e\u0d46\u0d28\u0d4d\u0d31\u0d4d \u0d17\u0d41\u0d23\u0d35\u0d3f\u0d36\u0d47\u0d37\u0d19\u0d4d\u0d19\u0d33\u0d4d\u200d",
+"Title": "\u0d24\u0d32\u0d15\u0d4d\u0d15\u0d46\u0d1f\u0d4d\u0d1f\u0d4d",
+"Keywords": "\u0d38\u0d42\u0d1a\u0d15\u0d2a\u0d26\u0d19\u0d4d\u0d19\u0d33\u0d4d\u200d",
+"Encoding": "\u0d0e\u0d7b\u0d15\u0d4b\u0d21\u0d3f\u0d02\u0d17\u0d4d",
+"Description": "\u0d35\u0d3f\u0d35\u0d30\u0d23\u0d02",
+"Author": "\u0d32\u0d47\u0d16\u0d15\u0d28\u0d4d\u200d",
+"Fullscreen": "\u0d2b\u0d41\u0d33\u0d4d\u200d\u0d38\u0d4d\u0d15\u0d4d\u0d30\u0d40\u0d28\u0d4d\u200d",
+"Horizontal line": "\u0d36\u0d3e\u0d16\u0d3e\u0d2a\u0d3e\u0d24",
+"Horizontal space": "\u0d24\u0d3f\u0d30\u0d36\u0d4d\u0d1a\u0d40\u0d28\u0d2e\u0d3e\u0d2f \u0d36\u0d42\u0d28\u0d4d\u0d2f\u0d38\u0d4d\u0d25\u0d32\u0d02",
+"Insert\/edit image": "\u0d1a\u0d3f\u0d24\u0d4d\u0d30\u0d19\u0d4d\u0d19\u0d33\u0d4d\u200d \u0d1a\u0d47\u0d30\u0d4d\u200d\u0d15\u0d4d\u0d15\u0d41\u0d15\/ \u0d24\u0d3f\u0d30\u0d41\u0d24\u0d4d\u0d24\u0d41\u0d15",
+"General": "\u0d2a\u0d4a\u0d24\u0d41\u0d35\u0d3e\u0d2f",
+"Advanced": "\u0d2a\u0d41\u0d30\u0d47\u0d3e\u0d17\u0d2e\u0d3f\u0d1a\u0d4d\u0d1a",
+"Source": "\u0d09\u0d31\u0d35\u0d3f\u0d1f\u0d02",
+"Border": "\u0d05\u0d24\u0d3f\u0d30\u0d4d",
+"Constrain proportions": "\u0d28\u0d3f\u0d30\u0d4d\u200d\u0d2c\u0d28\u0d4d\u0d27\u0d3e\u0d28\u0d41\u0d2a\u0d3e\u0d24\u0d02",
+"Vertical space": "\u0d32\u0d02\u0d2c\u0d2e\u0d3e\u0d28\u0d2e\u0d3e\u0d2f \u0d36\u0d42\u0d28\u0d4d\u0d2f\u0d38\u0d4d\u0d25\u0d32\u0d02",
+"Image description": "\u0d1a\u0d3f\u0d24\u0d4d\u0d30 \u0d35\u0d3f\u0d35\u0d30\u0d23\u0d02",
+"Style": "\u0d36\u0d48\u0d32\u0d3f",
+"Dimensions": "\u0d05\u0d33\u0d35\u0d41\u0d15\u0d33\u0d4d\u200d",
+"Insert image": "\u0d1a\u0d3f\u0d24\u0d4d\u0d30\u0d19\u0d4d\u0d19\u0d33\u0d4d\u200d \u0d1a\u0d47\u0d30\u0d4d\u200d\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Insert date\/time": "\u0d38\u0d2e\u0d2f\u0d02\/\u0d24\u0d40\u0d2f\u0d24\u0d3f \u0d1a\u0d47\u0d30\u0d4d\u200d\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Remove link": "\u0d15\u0d23\u0d4d\u0d23\u0d3f \u0d12\u0d34\u0d3f\u0d35\u0d3e\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Url": "\u0d2f\u0d42\u0d06\u0d30\u0d4d\u200d\u0d0e\u0d32\u0d4d\u200d",
+"Text to display": "\u0d15\u0d3e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d3e\u0d28\u0d41\u0d33\u0d4d\u0d33 \u0d05\u0d15\u0d4d\u0d37\u0d30\u0d19\u0d4d\u0d19\u0d33\u0d4d\u200d",
+"Anchors": "\u0d28\u0d19\u0d4d\u0d15\u0d42\u0d30\u0d19\u0d4d\u0d19\u0d7e",
+"Insert link": "\u0d15\u0d23\u0d4d\u0d23\u0d3f \u0d1a\u0d47\u0d30\u0d4d\u200d\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"New window": "\u0d2a\u0d41\u0d24\u0d3f\u0d2f \u0d1c\u0d3e\u0d32\u0d15\u0d02",
+"None": "\u0d12\u0d28\u0d4d\u0d28\u0d41\u0d2e\u0d3f\u0d32\u0d4d\u0d32",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?",
+"Target": "\u0d32\u0d15\u0d4d\u0d37\u0d4d\u0d2f\u0d02",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",
+"Insert\/edit link": "\u0d15\u0d23\u0d4d\u0d23\u0d3f \u0d1a\u0d47\u0d30\u0d4d\u200d\u0d15\u0d4d\u0d15\u0d41\u0d15\/ \u0d15\u0d23\u0d4d\u0d23\u0d3f \u0d24\u0d3f\u0d30\u0d41\u0d24\u0d4d\u0d24\u0d41\u0d15",
+"Insert\/edit video": "\u0d35\u0d40\u0d21\u0d3f\u0d2f\u0d4b \u0d1a\u0d46\u0d30\u0d4d\u200d\u0d15\u0d4d\u0d15\u0d41\u0d15\/\u0d35\u0d40\u0d21\u0d3f\u0d2f\u0d4b \u0d24\u0d3f\u0d30\u0d41\u0d24\u0d4d\u0d24\u0d41\u0d15",
+"Poster": "\u0d1a\u0d3f\u0d24\u0d4d\u0d30\u0d02",
+"Alternative source": "\u0d07\u0d24\u0d30 \u0d38\u0d4d\u0d30\u0d4b\u0d24\u0d38\u0d4d\u0d38\u0d4d\u200c",
+"Paste your embed code below:": "\u0d28\u0d3f\u0d19\u0d33\u0d41\u0d1f\u0d46 \u0d0e\u0d02\u0d2c\u0d21\u0d4d \u0d15\u0d4b\u0d21\u0d4d \u0d12\u0d1f\u0d4d\u0d1f\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Insert video": "\u0d35\u0d40\u0d21\u0d3f\u0d2f\u0d4b \u0d1a\u0d47\u0d30\u0d4d\u200d\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Embed": "\u0d0e\u0d02\u0d2c\u0d46\u0d21\u0d4d\u200c",
+"Nonbreaking space": "\u0d2d\u0d02\u0d17\u0d2e\u0d3f\u0d32\u0d4d\u0d32\u0d3e\u0d24\u0d4d\u0d24 \u0d36\u0d42\u0d28\u0d4d\u0d2f\u0d38\u0d4d\u0d25\u0d32\u0d02",
+"Page break": "\u0d24\u0d3e\u0d33\u0d4d\u200d \u0d2d\u0d02\u0d17\u0d02",
+"Paste as text": "\u0d1f\u0d46\u0d15\u0d4d\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d4d\u200c \u0d06\u0d2f\u0d3f \u0d12\u0d1f\u0d4d\u0d1f\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Preview": "\u0d15\u0d30\u0d1f\u0d41\u0d2a\u0d24\u0d3f\u0d2a\u0d4d\u0d2a\u0d4d",
+"Print": "\u0d05\u0d1a\u0d4d\u0d1a\u0d1f\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Save": "\u0d30\u0d15\u0d4d\u0d37\u0d2a\u0d4d\u0d2a\u0d46\u0d1f\u0d41\u0d24\u0d4d\u0d24\u0d41\u0d15",
+"Could not find the specified string.": "\u0d09\u0d26\u0d4d\u0d26\u0d47\u0d36\u0d3f\u0d1a\u0d4d\u0d1a \u0d35\u0d3e\u0d1a\u0d15\u0d02 \u0d15\u0d23\u0d4d\u0d1f\u0d41\u0d2a\u0d3f\u0d1f\u0d3f\u0d15\u0d4d\u0d15\u0d3e\u0d28\u0d3e\u0d2f\u0d3f\u0d32\u0d4d\u0d32.",
+"Replace": "\u0d2e\u0d3e\u0d31\u0d4d\u0d31\u0d3f\u0d35\u0d2f\u0d4d\u200c\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Next": "\u0d2e\u0d41\u0d28\u0d4d\u0d28\u0d4b\u0d1f\u0d4d\u0d1f\u0d4d",
+"Whole words": "\u0d0e\u0d32\u0d4d\u0d32\u0d3e \u0d35\u0d3e\u0d15\u0d4d\u0d15\u0d41\u0d15\u0d33\u0d41\u0d02",
+"Find and replace": "\u0d15\u0d23\u0d4d\u0d1f\u0d41\u0d2a\u0d3f\u0d1f\u0d3f\u0d1a\u0d4d\u0d1a\u0d41 \u0d2e\u0d3e\u0d31\u0d4d\u0d31\u0d3f\u0d35\u0d2f\u0d4d\u200c\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Replace with": "\u0d2e\u0d31\u0d4d\u0d31\u0d4a\u0d28\u0d4d\u0d28\u0d3f\u0d28\u0d4b\u0d1f\u0d4d \u0d2e\u0d3e\u0d31\u0d4d\u0d31\u0d3f\u0d35\u0d2f\u0d4d\u200c\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Find": "\u0d24\u0d3f\u0d30\u0d2f\u0d41\u0d15",
+"Replace all": "\u0d0e\u0d32\u0d4d\u0d32\u0d3e\u0d02 \u0d2e\u0d3e\u0d31\u0d4d\u0d31\u0d3f\u0d35\u0d2f\u0d4d\u200c\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Match case": "\u0d24\u0d41\u0d32\u0d4d\u0d2f\u0d2e\u0d3e\u0d2f\u0d24\u0d4d",
+"Prev": "\u0d2a\u0d3f\u0d28\u0d4d\u0d28\u0d4b\u0d1f\u0d4d\u0d1f\u0d4d",
+"Spellcheck": "\u0d05\u0d15\u0d4d\u0d37\u0d30\u0d35\u0d3f\u0d28\u0d4d\u0d2f\u0d3e\u0d38\u0d02 \u0d2a\u0d30\u0d3f\u0d36\u0d4b\u0d27\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Finish": "\u0d05\u0d35\u0d38\u0d3e\u0d28\u0d3f\u0d2a\u0d4d\u0d2a\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Ignore all": "\u0d0e\u0d32\u0d4d\u0d32\u0d3e\u0d02 \u0d05\u0d35\u0d17\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Ignore": "\u0d05\u0d35\u0d17\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Insert row before": "\u0d2e\u0d41\u0d2e\u0d4d\u0d2a\u0d3f\u0d32\u0d4d\u200d \u0d2a\u0d41\u0d24\u0d3f\u0d2f \u0d28\u0d3f\u0d30 \u0d1a\u0d47\u0d30\u0d4d\u200d\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Rows": "\u0d28\u0d3f\u0d30\u0d15\u0d33\u0d4d\u200d",
+"Height": "\u0d09\u0d2f\u0d30\u0d02",
+"Paste row after": "\u0d28\u0d3f\u0d30 \u0d36\u0d47\u0d37\u0d02 \u0d12\u0d1f\u0d4d\u0d1f\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Alignment": "\u0d05\u0d23\u0d3f\u0d28\u0d3f\u0d30\u0d24\u0d4d\u0d24\u0d41\u0d15",
+"Column group": "\u0d35\u0d30\u0d3f \u0d17\u0d23\u0d02",
+"Row": "\u0d28\u0d3f\u0d30",
+"Insert column before": "\u0d2e\u0d41\u0d2e\u0d4d\u0d2a\u0d3f\u0d32\u0d4d\u200d \u0d2a\u0d41\u0d24\u0d3f\u0d2f \u0d35\u0d30\u0d3f \u0d1a\u0d47\u0d30\u0d4d\u200d\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Split cell": "\u0d05\u0d31\u0d15\u0d33\u0d4d\u200d \u0d35\u0d3f\u0d2d\u0d1c\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Cell padding": "\u0d05\u0d31 \u0d2a\u0d3e\u0d21\u0d3f\u0d02\u0d17\u0d4d",
+"Cell spacing": "\u0d05\u0d31\u0d15\u0d33\u0d4d\u200d \u0d24\u0d2e\u0d4d\u0d2e\u0d3f\u0d32\u0d41\u0d33\u0d4d\u0d33 \u0d05\u0d15\u0d32\u0d02",
+"Row type": "\u0d28\u0d3f\u0d30 \u0d2e\u0d3e\u0d24\u0d43\u0d15",
+"Insert table": "\u0d2a\u0d1f\u0d4d\u0d1f\u0d3f\u0d15 \u0d1a\u0d47\u0d30\u0d4d\u200d\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Body": "\u0d36\u0d30\u0d40\u0d30\u0d02",
+"Caption": "\u0d24\u0d32\u0d35\u0d3e\u0d1a\u0d15\u0d02",
+"Footer": "\u0d05\u0d1f\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d31\u0d3f\u0d2a\u0d4d\u0d2a\u0d4d\u200c",
+"Delete row": "\u0d28\u0d3f\u0d30 \u0d24\u0d1f\u0d4d\u0d1f\u0d3f\u0d15\u0d33\u0d2f\u0d41\u0d15",
+"Paste row before": "\u0d28\u0d3f\u0d30 \u0d2e\u0d41\u0d2e\u0d4d\u0d2a\u0d3e\u0d2f\u0d3f \u0d12\u0d1f\u0d4d\u0d1f\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Scope": "\u0d35\u0d4d\u0d2f\u0d3e\u0d2a\u0d4d\u200c\u0d24\u0d3f",
+"Delete table": "\u0d2a\u0d1f\u0d4d\u0d1f\u0d3f\u0d15 \u0d15\u0d33\u0d2f\u0d41\u0d15",
+"Header cell": "\u0d24\u0d32 \u0d05\u0d31",
+"Column": "\u0d35\u0d30\u0d3f",
+"Cell": "\u0d05\u0d31",
+"Header": "\u0d24\u0d32\u0d15\u0d4d\u0d15\u0d46\u0d1f\u0d4d\u0d1f\u0d4d\u200c",
+"Cell type": "\u0d05\u0d31\u0d2f\u0d41\u0d1f\u0d46 \u0d2e\u0d3e\u0d24\u0d43\u0d15",
+"Copy row": "\u0d28\u0d3f\u0d30 \u0d2a\u0d15\u0d30\u0d4d\u200d\u0d24\u0d4d\u0d24\u0d41\u0d15",
+"Row properties": "\u0d28\u0d3f\u0d30\u0d2f\u0d41\u0d1f\u0d46 \u0d38\u0d4d\u0d35\u0d2d\u0d3e\u0d35\u0d19\u0d4d\u0d19\u0d33\u0d4d\u200d",
+"Table properties": "\u0d2a\u0d1f\u0d4d\u0d1f\u0d3f\u0d15\u0d2f\u0d41\u0d1f\u0d46 \u0d38\u0d4d\u0d35\u0d2d\u0d3e\u0d35\u0d19\u0d4d\u0d19\u0d33\u0d4d\u200d",
+"Row group": "\u0d28\u0d3f\u0d30 \u0d17\u0d23\u0d02",
+"Right": "\u0d35\u0d32\u0d24\u0d4d",
+"Insert column after": "\u0d2a\u0d3f\u0d31\u0d15\u0d3f\u0d32\u0d4d\u200d \u0d2a\u0d41\u0d24\u0d3f\u0d2f \u0d35\u0d30\u0d3f \u0d1a\u0d47\u0d30\u0d4d\u200d\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Cols": "\u0d35\u0d30\u0d3f\u0d15\u0d33\u0d4d\u200d",
+"Insert row after": "\u0d2a\u0d3f\u0d31\u0d15\u0d3f\u0d32\u0d4d\u200d \u0d2a\u0d41\u0d24\u0d3f\u0d2f \u0d28\u0d3f\u0d30 \u0d1a\u0d47\u0d30\u0d4d\u200d\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Width": "\u0d28\u0d40\u0d33\u0d02",
+"Cell properties": "\u0d05\u0d31\u0d2f\u0d41\u0d1f\u0d46 \u0d38\u0d4d\u0d35\u0d2d\u0d3e\u0d35\u0d19\u0d4d\u0d19\u0d33\u0d4d\u200d",
+"Left": "\u0d07\u0d1f\u0d24\u0d4d",
+"Cut row": "\u0d28\u0d3f\u0d30 \u0d35\u0d46\u0d1f\u0d4d\u0d1f\u0d3f\u0d2e\u0d3e\u0d31\u0d4d\u0d31\u0d41\u0d15",
+"Delete column": "\u0d35\u0d30\u0d3f \u0d24\u0d1f\u0d4d\u0d1f\u0d3f\u0d15\u0d33\u0d2f\u0d41\u0d15",
+"Center": "\u0d28\u0d1f\u0d41\u0d35\u0d3f\u0d32\u0d4d\u200d",
+"Merge cells": "\u0d05\u0d31\u0d15\u0d33\u0d4d\u200d \u0d15\u0d42\u0d1f\u0d4d\u0d1f\u0d3f\u0d2f\u0d4b\u0d1c\u0d3f\u0d2a\u0d4d\u0d2a\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Insert template": "\u0d05\u0d1a\u0d4d\u0d1a\u0d41\u0d15\u0d33\u0d4d\u200d \u0d1a\u0d47\u0d30\u0d4d\u200d\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Templates": "\u0d05\u0d1a\u0d4d\u0d1a\u0d41\u0d15\u0d33\u0d4d\u200d",
+"Background color": "\u0d2a\u0d36\u0d4d\u0d1a\u0d3e\u0d24\u0d4d\u0d24\u0d32 \u0d28\u0d3f\u0d31\u0d02",
+"Text color": "\u0d05\u0d15\u0d4d\u0d37\u0d30 \u0d28\u0d3f\u0d31\u0d02",
+"Show blocks": "\u0d2c\u0d4d\u0d32\u0d4b\u0d15\u0d4d\u0d15\u0d41\u0d15\u0d33\u0d4d\u200d \u0d15\u0d3e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Show invisible characters": "\u0d05\u0d26\u0d43\u0d36\u0d4d\u0d2f\u0d2e\u0d3e\u0d2f \u0d05\u0d15\u0d4d\u0d37\u0d30\u0d19\u0d4d\u0d19\u0d33\u0d4d\u200d \u0d15\u0d3e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"Words: {0}": "\u0d35\u0d3e\u0d15\u0d4d\u0d15\u0d41\u0d15\u0d33\u0d4d\u200d: {0}",
+"Insert": "\u0d2a\u0d24\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15",
+"File": "\u0d2b\u0d2f\u0d32\u0d4d\u200d",
+"Edit": "\u0d24\u0d3f\u0d30\u0d41\u0d24\u0d4d\u0d24\u0d41\u0d15",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u0d31\u0d3f\u0d1a\u0d4d\u0d1a\u0d4d \u0d1f\u0d46\u0d15\u0d4d\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d4d\u200c \u0d2e\u0d47\u0d16\u0d32. \u0d35\u0d3f\u0d37\u0d2f \u0d2a\u0d1f\u0d4d\u0d1f\u0d3f\u0d15 \u0d15\u0d4d\u0d15\u0d3e\u0d2f\u0d3f ALT-F9 \u0d05\u0d2e\u0d30\u0d4d\u0d24\u0d4d\u0d24\u0d41\u0d15. \u0d09\u0d2a\u0d15\u0d30\u0d23 \u0d2a\u0d1f\u0d4d\u0d1f\u0d3f\u0d15\u0d15\u0d4d\u0d15\u0d3e\u0d2f\u0d3f ALT-F10 \u0d05\u0d2e\u0d30\u0d4d\u200d\u0d24\u0d4d\u0d24\u0d41\u0d15. \u0d38\u0d39\u0d3e\u0d2f\u0d24\u0d4d\u0d24\u0d3f\u0d28\u0d41 ALT-0 \u0d09\u0d02",
+"Tools": "\u0d09\u0d2a\u0d15\u0d30\u0d23\u0d19\u0d4d\u0d19\u0d33\u0d4d\u200d ",
+"View": "\u0d26\u0d30\u0d4d\u200d\u0d36\u0d28\u0d02",
+"Table": "\u0d2a\u0d1f\u0d4d\u0d1f\u0d3f\u0d15",
+"Format": "\u0d15\u0d46\u0d1f\u0d4d\u0d1f\u0d41\u0d02\u0d2e\u0d1f\u0d4d\u0d1f\u0d41\u0d02"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/mn_MN.js b/program/js/tinymce/langs/mn_MN.js
new file mode 100644
index 000000000..03549e170
--- /dev/null
+++ b/program/js/tinymce/langs/mn_MN.js
@@ -0,0 +1,179 @@
+tinymce.addI18n('mn_MN',{
+"Cut": "\u041e\u0433\u0442\u043b\u043e\u0445",
+"Header 2": "Header 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.",
+"Div": "Div",
+"Paste": "\u0425\u0443\u0443\u043b\u0431\u0430\u0440 \u0431\u0443\u0443\u043b\u0433\u0430\u0445",
+"Close": "Close",
+"Font Family": "Font Family",
+"Pre": "Pre",
+"Align right": "Align right",
+"New document": "\u0428\u0438\u043d\u044d \u0431\u0430\u0440\u0438\u043c\u0442",
+"Blockquote": "Blockquote",
+"Numbered list": "Numbered list",
+"Increase indent": "Increase indent",
+"Formats": "Formats",
+"Headers": "Headers",
+"Select all": "\u0411\u04af\u0433\u0434\u0438\u0439\u0433 \u0441\u043e\u043d\u0433\u043e\u0445",
+"Header 3": "Header 3",
+"Blocks": "Blocks",
+"Undo": "\u04ae\u0439\u043b\u0434\u043b\u0438\u0439\u0433 \u0431\u0443\u0446\u0430\u0430\u0445",
+"Strikethrough": "\u0414\u0443\u043d\u0434\u0443\u0443\u0440 \u0437\u0443\u0440\u0430\u0430\u0441",
+"Bullet list": "Bullet list",
+"Header 1": "Header 1",
+"Superscript": "\u0417\u044d\u0440\u044d\u0433",
+"Clear formatting": "\u0424\u043e\u0440\u043c\u0430\u0442\u043b\u0430\u043b\u044b\u0433 \u0430\u0440\u0438\u043b\u0433\u0430\u0445",
+"Font Sizes": "Font Sizes",
+"Subscript": "\u0418\u043d\u0434\u0435\u043a\u0441",
+"Header 6": "Header 6",
+"Redo": "\u0414\u0430\u0445\u0438\u043d \u0445\u0438\u0439\u0445",
+"Paragraph": "Paragraph",
+"Ok": "\u041e\u043a",
+"Bold": "\u0422\u043e\u0434",
+"Code": "Code",
+"Italic": "\u041d\u0430\u043b\u0443\u0443",
+"Align center": "\u0422\u04e9\u0432\u0434 \u0437\u044d\u0440\u044d\u0433\u0446\u04af\u04af\u043b\u044d\u0445",
+"Header 5": "Header 5",
+"Decrease indent": "Decrease indent",
+"Header 4": "Header 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.",
+"Underline": "\u0414\u043e\u043e\u0433\u0443\u0443\u0440 \u0437\u0443\u0440\u0430\u0430\u0441",
+"Cancel": "\u0411\u043e\u043b\u0438\u0445",
+"Justify": "Justify",
+"Inline": "Inline",
+"Copy": "\u0425\u0443\u0443\u043b\u0430\u0445",
+"Align left": "\u0417\u04af\u04af\u043d\u0434 \u0437\u044d\u0440\u044d\u0433\u0446\u04af\u04af\u043b\u044d\u0445",
+"Visual aids": "\u0412\u0438\u0437\u0443\u0430\u043b \u0442\u0443\u0441\u043b\u0430\u043c\u0436",
+"Lower Greek": "Lower Greek",
+"Square": "Square",
+"Default": "Default",
+"Lower Alpha": "Lower Alpha",
+"Circle": "Circle",
+"Disc": "Disc",
+"Upper Alpha": "Upper Alpha",
+"Upper Roman": "Upper Roman",
+"Lower Roman": "Lower Roman",
+"Name": "Name",
+"Anchor": "Anchor",
+"You have unsaved changes are you sure you want to navigate away?": "You have unsaved changes are you sure you want to navigate away?",
+"Restore last draft": "Restore last draft",
+"Special character": "Special character",
+"Source code": "Source code",
+"Right to left": "Right to left",
+"Left to right": "Left to right",
+"Emoticons": "Emoticons",
+"Robots": "Robots",
+"Document properties": "Document properties",
+"Title": "Title",
+"Keywords": "Keywords",
+"Encoding": "Encoding",
+"Description": "Description",
+"Author": "Author",
+"Fullscreen": "Fullscreen",
+"Horizontal line": "Horizontal line",
+"Horizontal space": "Horizontal space",
+"Insert\/edit image": "Insert\/edit image",
+"General": "General",
+"Advanced": "Advanced",
+"Source": "Source",
+"Border": "Border",
+"Constrain proportions": "Constrain proportions",
+"Vertical space": "Vertical space",
+"Image description": "Image description",
+"Style": "Style",
+"Dimensions": "Dimensions",
+"Insert image": "Insert image",
+"Insert date\/time": "Insert date\/time",
+"Remove link": "Remove link",
+"Url": "Url",
+"Text to display": "Text to display",
+"Anchors": "Anchors",
+"Insert link": "Insert link",
+"New window": "New window",
+"None": "None",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?",
+"Target": "Target",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",
+"Insert\/edit link": "Insert\/edit link",
+"Insert\/edit video": "Insert\/edit video",
+"Poster": "Poster",
+"Alternative source": "Alternative source",
+"Paste your embed code below:": "Paste your embed code below:",
+"Insert video": "Insert video",
+"Embed": "Embed",
+"Nonbreaking space": "Nonbreaking space",
+"Page break": "Page break",
+"Paste as text": "Paste as text",
+"Preview": "Preview",
+"Print": "Print",
+"Save": "Save",
+"Could not find the specified string.": "Could not find the specified string.",
+"Replace": "Replace",
+"Next": "Next",
+"Whole words": "Whole words",
+"Find and replace": "Find and replace",
+"Replace with": "Replace with",
+"Find": "Find",
+"Replace all": "Replace all",
+"Match case": "Match case",
+"Prev": "Prev",
+"Spellcheck": "Spellcheck",
+"Finish": "Finish",
+"Ignore all": "Ignore all",
+"Ignore": "Ignore",
+"Insert row before": "Insert row before",
+"Rows": "Rows",
+"Height": "Height",
+"Paste row after": "Paste row after",
+"Alignment": "Alignment",
+"Column group": "Column group",
+"Row": "Row",
+"Insert column before": "Insert column before",
+"Split cell": "Split cell",
+"Cell padding": "Cell padding",
+"Cell spacing": "Cell spacing",
+"Row type": "Row type",
+"Insert table": "Insert table",
+"Body": "Body",
+"Caption": "Caption",
+"Footer": "Footer",
+"Delete row": "Delete row",
+"Paste row before": "Paste row before",
+"Scope": "Scope",
+"Delete table": "Delete table",
+"Header cell": "Header cell",
+"Column": "Column",
+"Cell": "Cell",
+"Header": "Header",
+"Cell type": "Cell type",
+"Copy row": "Copy row",
+"Row properties": "Row properties",
+"Table properties": "Table properties",
+"Row group": "Row group",
+"Right": "Right",
+"Insert column after": "Insert column after",
+"Cols": "Cols",
+"Insert row after": "Insert row after",
+"Width": "Width",
+"Cell properties": "Cell properties",
+"Left": "Left",
+"Cut row": "Cut row",
+"Delete column": "Delete column",
+"Center": "Center",
+"Merge cells": "Merge cells",
+"Insert template": "Insert template",
+"Templates": "Templates",
+"Background color": "Background color",
+"Text color": "Text color",
+"Show blocks": "Show blocks",
+"Show invisible characters": "Show invisible characters",
+"Words: {0}": "Words: {0}",
+"Insert": "Insert",
+"File": "File",
+"Edit": "Edit",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help",
+"Tools": "Tools",
+"View": "View",
+"Table": "Table",
+"Format": "Format"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/nb_NO.js b/program/js/tinymce/langs/nb_NO.js
new file mode 100644
index 000000000..2dccdc57a
--- /dev/null
+++ b/program/js/tinymce/langs/nb_NO.js
@@ -0,0 +1,197 @@
+tinymce.addI18n('nb_NO',{
+"Cut": "Klipp ut",
+"Heading 5": "Overskrift 5",
+"Header 2": "Overskrift 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Nettleseren din st\u00f8tter ikke direkte tilgang til utklippsboken. Bruk istedet tastatur-snarveiene Ctrl+X\/C\/V, eller Cmd+X\/C\/V p\u00e5 Mac.",
+"Heading 4": "Overskrift 4",
+"Div": "Delblokk <div>",
+"Heading 2": "Overskrift 2",
+"Paste": "Lim inn",
+"Close": "Lukk",
+"Font Family": "Skriftsnitt",
+"Pre": "Definert <pre>",
+"Align right": "H\u00f8yrejustert",
+"New document": "Nytt dokument",
+"Blockquote": "Sitatblokk <blockquote>",
+"Numbered list": "Nummerliste",
+"Heading 1": "Overskrift 1",
+"Headings": "Overskrifter",
+"Increase indent": "\u00d8k innrykk",
+"Formats": "Stiler",
+"Headers": "Overskrifter",
+"Select all": "Marker alt",
+"Header 3": "Overskrift 3",
+"Blocks": "Blokker",
+"Undo": "Angre",
+"Strikethrough": "Gjennomstreket",
+"Bullet list": "Punktliste",
+"Header 1": "Overskrift 1",
+"Superscript": "Hevet skrift",
+"Clear formatting": "Fjern formateringer",
+"Font Sizes": "St\u00f8rrelse",
+"Subscript": "Senket skrift",
+"Header 6": "Overskrift 6",
+"Redo": "Utf\u00f8r likevel",
+"Paragraph": "Avsnitt <p>",
+"Ok": "OK",
+"Bold": "Halvfet",
+"Code": "Kode <code>",
+"Italic": "Kursiv",
+"Align center": "Midtstilt",
+"Header 5": "Overskrift 5",
+"Heading 6": "Overskrift 6",
+"Heading 3": "Overskrift 3",
+"Decrease indent": "Reduser innrykk",
+"Header 4": "Overskrift 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Lim inn er n\u00e5 i ren-tekst modus. Kopiert innhold vil bli limt inn som ren tekst inntil du sl\u00e5r av dette valget.",
+"Underline": "Understreket",
+"Cancel": "Avbryt",
+"Justify": "Juster alle linjer",
+"Inline": "Innkapslet <span>",
+"Copy": "Kopier",
+"Align left": "Venstrejustert",
+"Visual aids": "Visuelle hjelpemidler",
+"Lower Greek": "Greske minuskler",
+"Square": "Fylt firkant",
+"Default": "Normal",
+"Lower Alpha": "Minuskler",
+"Circle": "\u00c5pen sirkel",
+"Disc": "Fylt sirkel",
+"Upper Alpha": "Versaler",
+"Upper Roman": "Romerske versaler",
+"Lower Roman": "Romerske minuskler",
+"Name": "Navn",
+"Anchor": "Anker",
+"You have unsaved changes are you sure you want to navigate away?": "Du har ikke arkivert endringene. Vil du fortsette uten \u00e5 arkivere?",
+"Restore last draft": "Gjenopprett siste utkast",
+"Special character": "Spesialtegn",
+"Source code": "Kildekode",
+"Color": "Farge",
+"Right to left": "H\u00f8yre til venstre",
+"Left to right": "Venstre til h\u00f8yre",
+"Emoticons": "Hum\u00f8rfjes",
+"Robots": "Roboter",
+"Document properties": "Dokumentegenskaper",
+"Title": "Tittel",
+"Keywords": "N\u00f8kkelord",
+"Encoding": "Tegnkoding",
+"Description": "Beskrivelse",
+"Author": "Forfatter",
+"Fullscreen": "Fullskjerm",
+"Horizontal line": "Horisontal linje",
+"Horizontal space": "Horisontal marg",
+"Insert\/edit image": "Sett inn\/endre bilde",
+"General": "Generelt",
+"Advanced": "Avansert",
+"Source": "Bildelenke",
+"Border": "Ramme",
+"Constrain proportions": "Behold proporsjoner",
+"Vertical space": "Vertikal marg",
+"Image description": "Bildebeskrivelse",
+"Style": "Stil",
+"Dimensions": "Dimensjoner",
+"Insert image": "Sett inn bilde",
+"Insert date\/time": "Sett inn dato\/tid",
+"Remove link": "Fjern lenke",
+"Url": "Url",
+"Text to display": "Tekst som skal vises",
+"Anchors": "Anker",
+"Insert link": "Sett inn lenke",
+"New window": "Nytt vindu",
+"None": "Ingen",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Oppgitt URL ser ut til \u00e5 v\u00e6re en e-postadresse. \u00d8nsker du \u00e5 sette inn p\u00e5krevd mailto:-prefiks foran e-postadressen?",
+"Target": "M\u00e5l",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Oppgitte URL ser ut til \u00e5 v\u00e6re en epost-adresse. \u00d8nsker du \u00e5 sette inn p\u00e5krevet mailto: prefiks forran epost-adressen?",
+"Insert\/edit link": "Sett inn\/endre lenke",
+"Insert\/edit video": "Sett inn\/rediger video",
+"Poster": "Plakatbilde",
+"Alternative source": "Alternativ kilde",
+"Paste your embed code below:": "Lim inn inkluderings-koden nedenfor",
+"Insert video": "Sett inn video",
+"Embed": "Inkluder",
+"Nonbreaking space": "Hardt mellomrom",
+"Page break": "Sideskifte",
+"Paste as text": "Lim inn som tekst",
+"Preview": "Forh\u00e5ndsvisning",
+"Print": "Skriv ut",
+"Save": "Arkiver",
+"Could not find the specified string.": "Kunne ikke finne den spesifiserte teksten",
+"Replace": "Erstatt",
+"Next": "Neste",
+"Whole words": "Hele ord",
+"Find and replace": "Finn og erstatt",
+"Replace with": "Erstatt med",
+"Find": "Finn",
+"Replace all": "Erstatt alle",
+"Match case": "Match store og sm\u00e5 bokstaver",
+"Prev": "Forrige",
+"Spellcheck": "Stavekontroll",
+"Finish": "Avslutt",
+"Ignore all": "Ignorer alle",
+"Ignore": "Ignorer",
+"Add to Dictionary": "Legg til i ordliste",
+"Insert row before": "Sett inn rad f\u00f8r",
+"Rows": "Rader",
+"Height": "H\u00f8yde",
+"Paste row after": "Lim inn rad etter",
+"Alignment": "Justering",
+"Border color": "Rammefarge",
+"Column group": "Kolonnegruppe",
+"Row": "Rad",
+"Insert column before": "Sett inn kolonne f\u00f8r",
+"Split cell": "Splitt celle",
+"Cell padding": "Cellemarg",
+"Cell spacing": "Celleavstand",
+"Row type": "Rad-type",
+"Insert table": "Sett inn tabell",
+"Body": "Br\u00f8dtekst",
+"Caption": "Tittel",
+"Footer": "Bunntekst",
+"Delete row": "Slett rad",
+"Paste row before": "Lim inn rad f\u00f8r",
+"Scope": "Omfang",
+"Delete table": "Slett tabell",
+"H Align": "H Justering",
+"Top": "Topp",
+"Header cell": "Topptekst-celle",
+"Column": "Kolonne",
+"Row group": "Radgruppe",
+"Cell": "Celle",
+"Middle": "Midten",
+"Cell type": "Celletype",
+"Copy row": "Kopier rad",
+"Row properties": "Rad egenskaper",
+"Table properties": "Tabell egenskaper",
+"Bottom": "Bunn",
+"V Align": "V Justering",
+"Header": "Topptekst",
+"Right": "H\u00f8yre",
+"Insert column after": "Sett inn kolonne etter",
+"Cols": "Kolonner",
+"Insert row after": "Sett in rad etter",
+"Width": "Bredde",
+"Cell properties": "Celle egenskaper",
+"Left": "Venstre",
+"Cut row": "Klipp ut rad",
+"Delete column": "Slett kolonne",
+"Center": "Midtstilt",
+"Merge cells": "Sl\u00e5 sammen celler",
+"Insert template": "Sett inn mal",
+"Templates": "Maler",
+"Background color": "Bakgrunnsfarge",
+"Custom...": "Tilpass...",
+"Custom color": "Tilpasset farge",
+"No color": "Ingen farge",
+"Text color": "Tekstfarge",
+"Show blocks": "Vis blokker",
+"Show invisible characters": "Vis skjulte tegn",
+"Words: {0}": "Antall ord: {0}",
+"Insert": "Sett inn",
+"File": "Arkiv",
+"Edit": "Rediger",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Tekstredigering. Tast ALT-F9 for meny. Tast ALT-F10 for verkt\u00f8ys-rader. Tast ALT-0 for hjelp.",
+"Tools": "Verkt\u00f8y",
+"View": "Vis",
+"Table": "Tabell",
+"Format": "Format"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/nl.js b/program/js/tinymce/langs/nl.js
new file mode 100644
index 000000000..a70fd3a99
--- /dev/null
+++ b/program/js/tinymce/langs/nl.js
@@ -0,0 +1,191 @@
+tinymce.addI18n('nl',{
+"Cut": "Knippen",
+"Heading 5": "Kop 5",
+"Header 2": "Kop 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Uw browser ondersteunt geen toegang tot het clipboard. Gelieve ctrl+X\/C\/V sneltoetsen te gebruiken.",
+"Heading 4": "Kop 4",
+"Div": "Div",
+"Heading 2": "Kop 2",
+"Paste": "Plakken",
+"Close": "Sluiten",
+"Font Family": "Lettertype",
+"Pre": "Pre",
+"Align right": "Rechts uitlijnen",
+"New document": "Nieuw document",
+"Blockquote": "Quote",
+"Numbered list": "Nummering",
+"Heading 1": "Kop 1",
+"Headings": "Koppen",
+"Increase indent": "Inspringen vergroten",
+"Formats": "Opmaak",
+"Headers": "Kopteksten",
+"Select all": "Alles selecteren",
+"Header 3": "Kop 3",
+"Blocks": "Blok",
+"Undo": "Ongedaan maken",
+"Strikethrough": "Doorhalen",
+"Bullet list": "Opsommingsteken",
+"Header 1": "Kop 1",
+"Superscript": "Superscript",
+"Clear formatting": "Opmaak verwijderen",
+"Font Sizes": "Letter grootte",
+"Subscript": "Subscript",
+"Header 6": "Kop 6",
+"Redo": "Opnieuw",
+"Paragraph": "Paragraaf",
+"Ok": "Ok\u00e9",
+"Bold": "Vet",
+"Code": "Code",
+"Italic": "Schuin",
+"Align center": "Centreren",
+"Header 5": "Kop 5",
+"Heading 6": "Kop 6",
+"Heading 3": "Kop 3",
+"Decrease indent": "Inspringen verkleinen",
+"Header 4": "Kop 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Plakken gebeurt nu als platte tekst. Tekst wordt nu ingevoegd zonder opmaak tot deze optie uitgeschakeld wordt.",
+"Underline": "Onderstreept",
+"Cancel": "Annuleren",
+"Justify": "Uitlijnen",
+"Inline": "Inlijn",
+"Copy": "Kopi\u00ebren",
+"Align left": "Links uitlijnen",
+"Visual aids": "Hulpmiddelen",
+"Lower Greek": "Griekse letters",
+"Square": "Vierkant",
+"Default": "Standaard",
+"Lower Alpha": "Kleine letters",
+"Circle": "Cirkel",
+"Disc": "Bolletje",
+"Upper Alpha": "Hoofdletters",
+"Upper Roman": "Romeinse cijfers groot",
+"Lower Roman": "Romeinse cijfers klein",
+"Name": "Naam",
+"Anchor": "Anker",
+"You have unsaved changes are you sure you want to navigate away?": "U hebt niet alles opgeslagen bent u zeker dat u de pagina wenst te verlaten?",
+"Restore last draft": "Herstel het laatste concept",
+"Special character": "Speciale karakters",
+"Source code": "Broncode",
+"Right to left": "Rechts naar links",
+"Left to right": "Links naar rechts",
+"Emoticons": "Emoticons",
+"Robots": "Robots",
+"Document properties": "Document eigenschappen",
+"Title": "Titel",
+"Keywords": "Sleutelwoorden",
+"Encoding": "Codering",
+"Description": "Omschrijving",
+"Author": "Auteur",
+"Fullscreen": "Volledig scherm",
+"Horizontal line": "Horizontale lijn",
+"Horizontal space": "Horizontale ruimte",
+"Insert\/edit image": "afbeelding invoegen\/bewerken",
+"General": "Algemeen",
+"Advanced": "Geavanceerd",
+"Source": "Bron",
+"Border": "Rand",
+"Constrain proportions": "Verhoudingen behouden",
+"Vertical space": "Verticale ruimte",
+"Image description": "Afbeelding omschrijving",
+"Style": "Stijl",
+"Dimensions": "Afmetingen",
+"Insert image": "Afbeelding invoegen",
+"Insert date\/time": "Voeg datum\/tijd in",
+"Remove link": "Link verwijderen",
+"Url": "Url",
+"Text to display": "Linktekst",
+"Anchors": "Anker",
+"Insert link": "Hyperlink invoegen",
+"New window": "Nieuw venster",
+"None": "Geen",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "De ingegeven URL verwijst naar een extern adres. Wil je er de \"http:\/\/\" aan toevoegen?",
+"Target": "Doel",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "De ingegeven URL is een email adres. Wil je er de \"mailto\" aan toevoegen?",
+"Insert\/edit link": "Hyperlink invoegen\/bewerken",
+"Insert\/edit video": "Video invoegen\/bewerken",
+"Poster": "Poster",
+"Alternative source": "Alternatieve bron",
+"Paste your embed code below:": "Plak u in te sluiten code hieronder:",
+"Insert video": "Video invoegen",
+"Embed": "Insluiten",
+"Nonbreaking space": "Vaste spatie invoegen",
+"Page break": "Pagina einde",
+"Paste as text": "Plakken als tekst",
+"Preview": "Voorbeeld",
+"Print": "Print",
+"Save": "Opslaan",
+"Could not find the specified string.": "Geen resultaten gevonden",
+"Replace": "Vervangen",
+"Next": "Volgende",
+"Whole words": "Alleen hele woorden",
+"Find and replace": "Zoek en vervang",
+"Replace with": "Vervangen door",
+"Find": "Zoeken",
+"Replace all": "Alles vervangen",
+"Match case": "Identieke hoofd\/kleine letters",
+"Prev": "Vorige",
+"Spellcheck": "Spellingscontrole",
+"Finish": "Einde",
+"Ignore all": "Alles negeren",
+"Ignore": "Negeren",
+"Insert row before": "Voeg rij boven toe",
+"Rows": "Rijen",
+"Height": "Hoogte",
+"Paste row after": "Plak rij onder",
+"Alignment": "Uitlijning",
+"Column group": "Kolomgroep",
+"Row": "Rij",
+"Insert column before": "Voeg kolom in voor",
+"Split cell": "Cel splitsen",
+"Cell padding": "Ruimte binnen cel",
+"Cell spacing": "Celruimte",
+"Row type": "Rijtype",
+"Insert table": "Tabel invoegen",
+"Body": "Body",
+"Caption": "Onderschrift",
+"Footer": "Voettekst",
+"Delete row": "Verwijder rij",
+"Paste row before": "Plak rij boven",
+"Scope": "Bereik",
+"Delete table": "Verwijder tabel",
+"H Align": "Links uitlijnen",
+"Top": "Bovenaan",
+"Header cell": "Kopcel",
+"Column": "Kolom",
+"Row group": "Rijgroep",
+"Cell": "Cel",
+"Middle": "Centreren",
+"Cell type": "Celtype",
+"Copy row": "Kopieer rij",
+"Row properties": "Rij eigenschappen",
+"Table properties": "Tabel eigenschappen",
+"Bottom": "Onderaan",
+"V Align": "Boven uitlijnen",
+"Header": "Koptekst",
+"Right": "Rechts",
+"Insert column after": "Voeg kolom in na",
+"Cols": "Kolommen",
+"Insert row after": "Voeg rij onder toe",
+"Width": "Breedte",
+"Cell properties": "Cel eigenschappen",
+"Left": "Links",
+"Cut row": "Knip rij",
+"Delete column": "Verwijder kolom",
+"Center": "Midden",
+"Merge cells": "Cellen samenvoegen",
+"Insert template": "Sjabloon invoegen",
+"Templates": "Sjablonen",
+"Background color": "Achtergrondkleur",
+"Text color": "Tekstkleur",
+"Show blocks": "Blokken tonen",
+"Show invisible characters": "Onzichtbare karakters tonen",
+"Words: {0}": "Woorden: {0}",
+"Insert": "Invoegen",
+"File": "Bestand",
+"Edit": "Bewerken",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text Area. Druk ALT-F9 voor het menu. Druk ALT-F10 voor de toolbar. Druk ALT-0 voor help.",
+"Tools": "Gereedschap",
+"View": "Beeld",
+"Table": "Tabel",
+"Format": "Opmaak"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/pl.js b/program/js/tinymce/langs/pl.js
new file mode 100644
index 000000000..dbbd1970a
--- /dev/null
+++ b/program/js/tinymce/langs/pl.js
@@ -0,0 +1,191 @@
+tinymce.addI18n('pl',{
+"Cut": "Wytnij",
+"Heading 5": "Nag\u0142\u00f3wek 5",
+"Header 2": "Nag\u0142\u00f3wek 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Twoja przegl\u0105darka nie obs\u0142uguje bezpo\u015bredniego dost\u0119pu do schowka. U\u017cyj zamiast tego kombinacji klawiszy Ctrl+X\/C\/V.",
+"Heading 4": "Nag\u0142\u00f3wek 4",
+"Div": "Div",
+"Heading 2": "Nag\u0142\u00f3wek 2",
+"Paste": "Wklej",
+"Close": "Zamknij",
+"Font Family": "Kr\u00f3j czcionki",
+"Pre": "Sformatowany tekst",
+"Align right": "Wyr\u00f3wnaj do prawej",
+"New document": "Nowy dokument",
+"Blockquote": "Blok cytatu",
+"Numbered list": "Lista numerowana",
+"Heading 1": "Nag\u0142\u00f3wek 1",
+"Headings": "Nag\u0142\u00f3wki",
+"Increase indent": "Zwi\u0119ksz wci\u0119cie",
+"Formats": "Formaty",
+"Headers": "Nag\u0142\u00f3wki",
+"Select all": "Zaznacz wszystko",
+"Header 3": "Nag\u0142\u00f3wek 3",
+"Blocks": "Bloki",
+"Undo": "Cofnij",
+"Strikethrough": "Przekre\u015blenie",
+"Bullet list": "Lista wypunktowana",
+"Header 1": "Nag\u0142\u00f3wek 1",
+"Superscript": "Indeks g\u00f3rny",
+"Clear formatting": "Wyczy\u015b\u0107 formatowanie",
+"Font Sizes": "Rozmiar czcionki",
+"Subscript": "Indeks dolny",
+"Header 6": "Nag\u0142\u00f3wek 6",
+"Redo": "Pon\u00f3w",
+"Paragraph": "Akapit",
+"Ok": "Ok",
+"Bold": "Pogrubienie",
+"Code": "Kod \u017ar\u00f3d\u0142owy",
+"Italic": "Kursywa",
+"Align center": "Wyr\u00f3wnaj do \u015brodka",
+"Header 5": "Nag\u0142\u00f3wek 5",
+"Heading 6": "Nag\u0142\u00f3wek 6",
+"Heading 3": "Nag\u0142\u00f3wek 3",
+"Decrease indent": "Zmniejsz wci\u0119cie",
+"Header 4": "Nag\u0142\u00f3wek 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Wklejanie jest w trybie tekstowym. Zawarto\u015b\u0107 zostanie wklejona jako zwyk\u0142y tekst dop\u00f3ki nie wy\u0142\u0105czysz tej opcji.",
+"Underline": "Podkre\u015blenie",
+"Cancel": "Anuluj",
+"Justify": "Do lewej i prawej",
+"Inline": "W tek\u015bcie",
+"Copy": "Kopiuj",
+"Align left": "Wyr\u00f3wnaj do lewej",
+"Visual aids": "Pomoce wizualne",
+"Lower Greek": "Ma\u0142e greckie",
+"Square": "Kwadrat",
+"Default": "Domy\u015blne",
+"Lower Alpha": "Ma\u0142e litery",
+"Circle": "K\u00f3\u0142ko",
+"Disc": "Dysk",
+"Upper Alpha": "Wielkie litery",
+"Upper Roman": "Wielkie rzymskie",
+"Lower Roman": "Ma\u0142e rzymskie",
+"Name": "Nazwa",
+"Anchor": "Kotwica",
+"You have unsaved changes are you sure you want to navigate away?": "Masz niezapisane zmiany. Czy na pewno chcesz opu\u015bci\u0107 stron\u0119?",
+"Restore last draft": "Przywr\u00f3\u0107 ostatni szkic",
+"Special character": "Znak specjalny",
+"Source code": "Kod \u017ar\u00f3d\u0142owy",
+"Right to left": "Od prawej do lewej",
+"Left to right": "Od lewej do prawej",
+"Emoticons": "Emotikony",
+"Robots": "Roboty",
+"Document properties": "W\u0142a\u015bciwo\u015bci dokumentu",
+"Title": "Tytu\u0142",
+"Keywords": "S\u0142owa kluczowe",
+"Encoding": "Kodowanie",
+"Description": "Opis",
+"Author": "Autor",
+"Fullscreen": "Pe\u0142ny ekran",
+"Horizontal line": "Pozioma linia",
+"Horizontal space": "Odst\u0119p poziomy",
+"Insert\/edit image": "Wstaw\/edytuj obrazek",
+"General": "Og\u00f3lne",
+"Advanced": "Zaawansowane",
+"Source": "\u0179r\u00f3d\u0142o",
+"Border": "Ramka",
+"Constrain proportions": "Zachowaj proporcje",
+"Vertical space": "Odst\u0119p pionowy",
+"Image description": "Opis obrazka",
+"Style": "Styl",
+"Dimensions": "Wymiary",
+"Insert image": "Wstaw obrazek",
+"Insert date\/time": "Wstaw dat\u0119\/czas",
+"Remove link": "Usu\u0144 link",
+"Url": "Url",
+"Text to display": "Tekst do wy\u015bwietlenia",
+"Anchors": "Kotwice",
+"Insert link": "Wstaw link",
+"New window": "Nowe okno",
+"None": "\u017baden",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "URL, kt\u00f3ry wprowadzi\u0142e\u015b wygl\u0105da na link zewn\u0119trzny. Czy chcesz doda\u0107 http:\/\/ jako prefiks?",
+"Target": "Cel",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "URL, kt\u00f3ry wprowadzi\u0142e\u015b wygl\u0105da na adres e-mail. Czy chcesz doda\u0107 mailto: jako prefiks?",
+"Insert\/edit link": "Wstaw\/edytuj link",
+"Insert\/edit video": "Wstaw\/edytuj wideo",
+"Poster": "Plakat",
+"Alternative source": "Alternatywne \u017ar\u00f3d\u0142o",
+"Paste your embed code below:": "Wklej tutaj kod do osadzenia:",
+"Insert video": "Wstaw wideo",
+"Embed": "Osad\u017a",
+"Nonbreaking space": "Nie\u0142amliwa spacja",
+"Page break": "Podzia\u0142 strony",
+"Paste as text": "Wklej jako zwyk\u0142y tekst",
+"Preview": "Podgl\u0105d",
+"Print": "Drukuj",
+"Save": "Zapisz",
+"Could not find the specified string.": "Nie znaleziono szukanego tekstu.",
+"Replace": "Zamie\u0144",
+"Next": "Nast.",
+"Whole words": "Ca\u0142e s\u0142owa",
+"Find and replace": "Znajd\u017a i zamie\u0144",
+"Replace with": "Zamie\u0144 na",
+"Find": "Znajd\u017a",
+"Replace all": "Zamie\u0144 wszystko",
+"Match case": "Dopasuj wielko\u015b\u0107 liter",
+"Prev": "Poprz.",
+"Spellcheck": "Sprawdzanie pisowni",
+"Finish": "Zako\u0144cz",
+"Ignore all": "Ignoruj wszystko",
+"Ignore": "Ignoruj",
+"Insert row before": "Wstaw wiersz przed",
+"Rows": "Wiersz.",
+"Height": "Wysoko\u015b\u0107",
+"Paste row after": "Wklej wiersz po",
+"Alignment": "Wyr\u00f3wnanie",
+"Column group": "Grupa kolumn",
+"Row": "Wiersz",
+"Insert column before": "Wstaw kolumn\u0119 przed",
+"Split cell": "Podziel kom\u00f3rk\u0119",
+"Cell padding": "Dope\u0142nienie kom\u00f3rki",
+"Cell spacing": "Odst\u0119py kom\u00f3rek",
+"Row type": "Typ wiersza",
+"Insert table": "Wstaw tabel\u0119",
+"Body": "Tre\u015b\u0107",
+"Caption": "Tytu\u0142",
+"Footer": "Stopka",
+"Delete row": "Usu\u0144 wiersz",
+"Paste row before": "Wklej wiersz przed",
+"Scope": "Kontekst",
+"Delete table": "Usu\u0144 tabel\u0119",
+"H Align": "Wyr\u00f3wnanie w pionie",
+"Top": "G\u00f3ra",
+"Header cell": "Kom\u00f3rka nag\u0142\u00f3wka",
+"Column": "Kolumna",
+"Row group": "Grupa wierszy",
+"Cell": "Kom\u00f3rka",
+"Middle": "\u015arodek",
+"Cell type": "Typ kom\u00f3rki",
+"Copy row": "Kopiuj wiersz",
+"Row properties": "W\u0142a\u015bciwo\u015bci wiersza",
+"Table properties": "W\u0142a\u015bciwo\u015bci tabeli",
+"Bottom": "D\u00f3\u0142",
+"V Align": "Wyr\u00f3wnanie w poziomie",
+"Header": "Nag\u0142\u00f3wek",
+"Right": "Prawo",
+"Insert column after": "Wstaw kolumn\u0119 po",
+"Cols": "Kol.",
+"Insert row after": "Wstaw wiersz po",
+"Width": "Szeroko\u015b\u0107",
+"Cell properties": "W\u0142a\u015bciwo\u015bci kom\u00f3rki",
+"Left": "Lewo",
+"Cut row": "Wytnij wiersz",
+"Delete column": "Usu\u0144 kolumn\u0119",
+"Center": "\u015arodek",
+"Merge cells": "\u0141\u0105cz kom\u00f3rki",
+"Insert template": "Wstaw szablon",
+"Templates": "Szablony",
+"Background color": "Kolor t\u0142a",
+"Text color": "Kolor tekstu",
+"Show blocks": "Poka\u017c bloki",
+"Show invisible characters": "Poka\u017c niewidoczne znaki",
+"Words: {0}": "S\u0142\u00f3w: {0}",
+"Insert": "Wstaw",
+"File": "Plik",
+"Edit": "Edycja",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Obszar Edycji. ALT-F9 - menu. ALT-F10 - pasek narz\u0119dzi. ALT-0 - pomoc",
+"Tools": "Narz\u0119dzia",
+"View": "Widok",
+"Table": "Tabela",
+"Format": "Format"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/pt_BR.js b/program/js/tinymce/langs/pt_BR.js
new file mode 100644
index 000000000..37adbdc41
--- /dev/null
+++ b/program/js/tinymce/langs/pt_BR.js
@@ -0,0 +1,191 @@
+tinymce.addI18n('pt_BR',{
+"Cut": "Recortar",
+"Heading 5": "Cabe\u00e7alho 5",
+"Header 2": "Cabe\u00e7alho 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Seu navegador n\u00e3o suporta acesso direto \u00e0 \u00e1rea de transfer\u00eancia. Por favor use os atalhos Ctrl+X - C - V do teclado",
+"Heading 4": "Cabe\u00e7alho 4",
+"Div": "Div",
+"Heading 2": "Cabe\u00e7alho 2",
+"Paste": "Colar",
+"Close": "Fechar",
+"Font Family": "Fonte",
+"Pre": "Pre",
+"Align right": "Alinhar \u00e0 direita",
+"New document": "Novo documento",
+"Blockquote": "Aspas",
+"Numbered list": "Lista ordenada",
+"Heading 1": "Cabe\u00e7alho 1",
+"Headings": "Cabe\u00e7alhos",
+"Increase indent": "Aumentar recuo",
+"Formats": "Formatos",
+"Headers": "Cabe\u00e7alhos",
+"Select all": "Selecionar tudo",
+"Header 3": "Cabe\u00e7alho 3",
+"Blocks": "Blocos",
+"Undo": "Desfazer",
+"Strikethrough": "Riscar",
+"Bullet list": "Lista n\u00e3o ordenada",
+"Header 1": "Cabe\u00e7alho 1",
+"Superscript": "Sobrescrever",
+"Clear formatting": "Limpar formata\u00e7\u00e3o",
+"Font Sizes": "Tamanho",
+"Subscript": "Subscrever",
+"Header 6": "Cabe\u00e7alho 6",
+"Redo": "Refazer",
+"Paragraph": "Par\u00e1grafo",
+"Ok": "Ok",
+"Bold": "Negrito",
+"Code": "C\u00f3digo",
+"Italic": "It\u00e1lico",
+"Align center": "Centralizar",
+"Header 5": "Cabe\u00e7alho 5",
+"Heading 6": "Cabe\u00e7alho 6",
+"Heading 3": "Cabe\u00e7alho 3",
+"Decrease indent": "Diminuir recuo",
+"Header 4": "Cabe\u00e7alho 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "O comando colar est\u00e1 agora em modo texto plano. O conte\u00fado ser\u00e1 colado como texto plano at\u00e9 voc\u00ea desligar esta op\u00e7\u00e3o.",
+"Underline": "Sublinhar",
+"Cancel": "Cancelar",
+"Justify": "Justificar",
+"Inline": "Em linha",
+"Copy": "Copiar",
+"Align left": "Alinhar \u00e0 esquerda",
+"Visual aids": "Ajuda visual",
+"Lower Greek": "\u03b1. \u03b2. \u03b3. ...",
+"Square": "Quadrado",
+"Default": "Padr\u00e3o",
+"Lower Alpha": "a. b. c. ...",
+"Circle": "C\u00edrculo",
+"Disc": "Disco",
+"Upper Alpha": "A. B. C. ...",
+"Upper Roman": "I. II. III. ...",
+"Lower Roman": "i. ii. iii. ...",
+"Name": "Nome",
+"Anchor": "\u00c2ncora",
+"You have unsaved changes are you sure you want to navigate away?": "Voc\u00ea tem mudan\u00e7as n\u00e3o salvas. Voc\u00ea tem certeza que deseja sair?",
+"Restore last draft": "Restaurar \u00faltimo rascunho",
+"Special character": "Caracteres especiais",
+"Source code": "C\u00f3digo fonte",
+"Right to left": "Da direita para a esquerda",
+"Left to right": "Da esquerda para a direita",
+"Emoticons": "Emoticons",
+"Robots": "Rob\u00f4s",
+"Document properties": "Propriedades do documento",
+"Title": "T\u00edtulo",
+"Keywords": "Palavras-chave",
+"Encoding": "Codifica\u00e7\u00e3o",
+"Description": "Descri\u00e7\u00e3o",
+"Author": "Autor",
+"Fullscreen": "Tela cheia",
+"Horizontal line": "Linha horizontal",
+"Horizontal space": "Espa\u00e7amento horizontal",
+"Insert\/edit image": "Inserir\/editar imagem",
+"General": "Geral",
+"Advanced": "Avan\u00e7ado",
+"Source": "Endere\u00e7o da imagem",
+"Border": "Borda",
+"Constrain proportions": "Manter propor\u00e7\u00f5es",
+"Vertical space": "Espa\u00e7amento vertical",
+"Image description": "Inserir descri\u00e7\u00e3o",
+"Style": "Estilo",
+"Dimensions": "Dimens\u00f5es",
+"Insert image": "Inserir imagem",
+"Insert date\/time": "Inserir data\/hora",
+"Remove link": "Remover link",
+"Url": "Url",
+"Text to display": "Texto para mostrar",
+"Anchors": "\u00c2ncoras",
+"Insert link": "Inserir link",
+"New window": "Nova janela",
+"None": "Nenhum",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "A URL que voc\u00ea informou parece ser um link externo. Deseja incluir o prefixo http:\/\/?",
+"Target": "Alvo",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "A URL que voc\u00ea informou parece ser um endere\u00e7o de email. Deseja incluir o prefixo mailto:?",
+"Insert\/edit link": "Inserir\/editar link",
+"Insert\/edit video": "Inserir\/editar v\u00eddeo",
+"Poster": "Autor",
+"Alternative source": "Fonte alternativa",
+"Paste your embed code below:": "Insira o c\u00f3digo de incorpora\u00e7\u00e3o abaixo:",
+"Insert video": "Inserir v\u00eddeo",
+"Embed": "Incorporar",
+"Nonbreaking space": "Espa\u00e7o n\u00e3o separ\u00e1vel",
+"Page break": "Quebra de p\u00e1gina",
+"Paste as text": "Colar como texto",
+"Preview": "Pr\u00e9-visualizar",
+"Print": "Imprimir",
+"Save": "Salvar",
+"Could not find the specified string.": "N\u00e3o foi poss\u00edvel encontrar o termo especificado",
+"Replace": "Substituir",
+"Next": "Pr\u00f3ximo",
+"Whole words": "Palavras inteiras",
+"Find and replace": "Localizar e substituir",
+"Replace with": "Substituir por",
+"Find": "Localizar",
+"Replace all": "Substituir tudo",
+"Match case": "Diferenciar mai\u00fasculas e min\u00fasculas",
+"Prev": "Anterior",
+"Spellcheck": "Corretor ortogr\u00e1fico",
+"Finish": "Finalizar",
+"Ignore all": "Ignorar tudo",
+"Ignore": "Ignorar",
+"Insert row before": "Inserir linha antes",
+"Rows": "Linhas",
+"Height": "Altura",
+"Paste row after": "Colar linha depois",
+"Alignment": "Alinhamento",
+"Column group": "Agrupar coluna",
+"Row": "Linha",
+"Insert column before": "Inserir coluna antes",
+"Split cell": "Dividir c\u00e9lula",
+"Cell padding": "Espa\u00e7amento interno da c\u00e9lula",
+"Cell spacing": "Espa\u00e7amento da c\u00e9lula",
+"Row type": "Tipo de linha",
+"Insert table": "Inserir tabela",
+"Body": "Corpo",
+"Caption": "Legenda",
+"Footer": "Rodap\u00e9",
+"Delete row": "Excluir linha",
+"Paste row before": "Colar linha antes",
+"Scope": "Escopo",
+"Delete table": "Excluir tabela",
+"H Align": "Alinhamento H",
+"Top": "Superior",
+"Header cell": "C\u00e9lula cabe\u00e7alho",
+"Column": "Coluna",
+"Row group": "Agrupar linha",
+"Cell": "C\u00e9lula",
+"Middle": "Meio",
+"Cell type": "Tipo de c\u00e9lula",
+"Copy row": "Copiar linha",
+"Row properties": "Propriedades da linha",
+"Table properties": "Propriedades da tabela",
+"Bottom": "Inferior",
+"V Align": "Alinhamento V",
+"Header": "Cabe\u00e7alho",
+"Right": "Direita",
+"Insert column after": "Inserir coluna depois",
+"Cols": "Colunas",
+"Insert row after": "Inserir linha depois",
+"Width": "Largura",
+"Cell properties": "Propriedades da c\u00e9lula",
+"Left": "Esquerdo",
+"Cut row": "Recortar linha",
+"Delete column": "Excluir coluna",
+"Center": "Centro",
+"Merge cells": "Agrupar c\u00e9lulas",
+"Insert template": "Inserir modelo",
+"Templates": "Modelos",
+"Background color": "Cor do fundo",
+"Text color": "Cor do texto",
+"Show blocks": "Mostrar blocos",
+"Show invisible characters": "Exibir caracteres invis\u00edveis",
+"Words: {0}": "Palavras: {0}",
+"Insert": "Inserir",
+"File": "Arquivo",
+"Edit": "Editar",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u00c1rea de texto formatado. Pressione ALT-F9 para exibir o menu, ALT-F10 para exibir a barra de ferramentas ou ALT-0 para exibir a ajuda",
+"Tools": "Ferramentas",
+"View": "Visualizar",
+"Table": "Tabela",
+"Format": "Formatar"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/pt_PT.js b/program/js/tinymce/langs/pt_PT.js
new file mode 100644
index 000000000..61fd44eeb
--- /dev/null
+++ b/program/js/tinymce/langs/pt_PT.js
@@ -0,0 +1,197 @@
+tinymce.addI18n('pt_PT',{
+"Cut": "Cortar",
+"Heading 5": "Cabe\u00e7alho 5",
+"Header 2": "Cabe\u00e7alho 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "O seu navegador n\u00e3o suporta acesso directo \u00e0 \u00e1rea de transfer\u00eancia. Por favor use os atalhos Ctrl+X\/C\/V do seu teclado.",
+"Heading 4": "Cabe\u00e7alho 4",
+"Div": "Div",
+"Heading 2": "Cabe\u00e7alho 2",
+"Paste": "Colar",
+"Close": "Fechar",
+"Font Family": "Fam\u00edlia da Fonte",
+"Pre": "Pre",
+"Align right": "Alinhar \u00e0 direita",
+"New document": "Novo documento",
+"Blockquote": "Bloco de cita\u00e7\u00e3o",
+"Numbered list": "Lista numerada",
+"Heading 1": "Cabe\u00e7alho 1",
+"Headings": "Cabe\u00e7alhos",
+"Increase indent": "Aumentar avan\u00e7o",
+"Formats": "Formatos",
+"Headers": "Cabe\u00e7alhos",
+"Select all": "Seleccionar tudo",
+"Header 3": "Cabe\u00e7alho 3",
+"Blocks": "Blocos",
+"Undo": "Anular",
+"Strikethrough": "Rasurado",
+"Bullet list": "Lista com marcadores",
+"Header 1": "Cabe\u00e7alho 1",
+"Superscript": "Superior \u00e0 linha",
+"Clear formatting": "Limpar formata\u00e7\u00e3o",
+"Font Sizes": "Tamanhos da Fonte",
+"Subscript": "Inferior \u00e0 linha",
+"Header 6": "Cabe\u00e7alho 6",
+"Redo": "Restaurar",
+"Paragraph": "Par\u00e1grafo",
+"Ok": "Ok",
+"Bold": "Negrito",
+"Code": "C\u00f3digo",
+"Italic": "It\u00e1lico",
+"Align center": "Alinhar ao centro",
+"Header 5": "Cabe\u00e7alho 5",
+"Heading 6": "Cabe\u00e7alho 6",
+"Heading 3": "Cabe\u00e7alho 3",
+"Decrease indent": "Diminuir avan\u00e7o",
+"Header 4": "Cabe\u00e7alho 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "O comando colar est\u00e1 em modo de texto simples. O conte\u00fado ser\u00e1 colado como texto simples at\u00e9 desativar esta op\u00e7\u00e3o.",
+"Underline": "Sublinhado",
+"Cancel": "Cancelar",
+"Justify": "Justificado",
+"Inline": "Inline",
+"Copy": "Copiar",
+"Align left": "Alinhar \u00e0 esquerda",
+"Visual aids": "Ajuda visual",
+"Lower Greek": "\\u03b1. \\u03b2. \\u03b3. ...",
+"Square": "Quadrado",
+"Default": "Padr\u00e3o",
+"Lower Alpha": "a. b. c. ...",
+"Circle": "C\u00edrculo",
+"Disc": "Disco",
+"Upper Alpha": "A. B. C. ...",
+"Upper Roman": "I. II. III. ...",
+"Lower Roman": "i. ii. iii. ...",
+"Name": "Nome",
+"Anchor": "\u00c2ncora",
+"You have unsaved changes are you sure you want to navigate away?": "Existem altera\u00e7\u00f5es que ainda n\u00e3o foram guardadas. Tem a certeza que pretende sair?",
+"Restore last draft": "Restaurar o \u00faltimo rascunho",
+"Special character": "Car\u00e1cter especial",
+"Source code": "C\u00f3digo fonte",
+"Color": "Cor",
+"Right to left": "Da direita para a esquerda",
+"Left to right": "Da esquerda para a direita",
+"Emoticons": "Emo\u00e7\u00f5es",
+"Robots": "Rob\u00f4s",
+"Document properties": "Propriedades do documento",
+"Title": "T\u00edtulo",
+"Keywords": "Palavras-chave",
+"Encoding": "Codifica\u00e7\u00e3o",
+"Description": "Descri\u00e7\u00e3o",
+"Author": "Autor",
+"Fullscreen": "Ecr\u00e3 completo",
+"Horizontal line": "Linha horizontal",
+"Horizontal space": "Espa\u00e7amento horizontal",
+"Insert\/edit image": "Inserir\/editar imagem",
+"General": "Geral",
+"Advanced": "Avan\u00e7ado",
+"Source": "Localiza\u00e7\u00e3o",
+"Border": "Contorno",
+"Constrain proportions": "Manter propor\u00e7\u00f5es",
+"Vertical space": "Espa\u00e7amento vertical",
+"Image description": "Descri\u00e7\u00e3o da imagem",
+"Style": "Estilo",
+"Dimensions": "Dimens\u00f5es",
+"Insert image": "Inserir imagem",
+"Insert date\/time": "Inserir data\/hora",
+"Remove link": "Remover liga\u00e7\u00e3o",
+"Url": "Url",
+"Text to display": "Texto a exibir",
+"Anchors": "\u00c2ncora",
+"Insert link": "Inserir liga\u00e7\u00e3o",
+"New window": "Nova janela",
+"None": "Nenhum",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "O URL que indicou parece ser um endere\u00e7o web. Quer adicionar o prefixo http:\/\/ como \u00e9 necess\u00e1rio?",
+"Target": "Alvo",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "O URL que indicou parece ser um endere\u00e7o de email. Quer adicionar o prefixo mailto: como \u00e9 necess\u00e1rio?",
+"Insert\/edit link": "Inserir\/editar liga\u00e7\u00e3o",
+"Insert\/edit video": "Inserir\/editar v\u00eddeo",
+"Poster": "Autor",
+"Alternative source": "Localiza\u00e7\u00e3o alternativa",
+"Paste your embed code below:": "Insira, abaixo, o seu c\u00f3digo de incorpora\u00e7\u00e3o:",
+"Insert video": "Inserir v\u00eddeo",
+"Embed": "Incorporar",
+"Nonbreaking space": "Espa\u00e7o n\u00e3o quebr\u00e1vel",
+"Page break": "Quebra de p\u00e1gina",
+"Paste as text": "Colar como texto",
+"Preview": "Pr\u00e9-visualizar",
+"Print": "Imprimir",
+"Save": "Guardar",
+"Could not find the specified string.": "N\u00e3o foi poss\u00edvel localizar o termo especificado.",
+"Replace": "Substituir",
+"Next": "Pr\u00f3ximo",
+"Whole words": "Palavras completas",
+"Find and replace": "Pesquisar e substituir",
+"Replace with": "Substituir por",
+"Find": "Pesquisar",
+"Replace all": "Substituir tudo",
+"Match case": "Diferenciar mai\u00fasculas e min\u00fasculas",
+"Prev": "Anterior",
+"Spellcheck": "Corretor ortogr\u00e1fico",
+"Finish": "Concluir",
+"Ignore all": "Ignorar tudo",
+"Ignore": "Ignorar",
+"Add to Dictionary": "Adicionar ao Dicion\u00e1rio",
+"Insert row before": "Inserir linha antes",
+"Rows": "Linhas",
+"Height": "Altura",
+"Paste row after": "Colar linha depois",
+"Alignment": "Alinhamento",
+"Border color": "Cor de contorno",
+"Column group": "Agrupar coluna",
+"Row": "Linha",
+"Insert column before": "Inserir coluna antes",
+"Split cell": "Dividir c\u00e9lula",
+"Cell padding": "Espa\u00e7amento interno da c\u00e9lula",
+"Cell spacing": "Espa\u00e7amento entre c\u00e9lulas",
+"Row type": "Tipo de linha",
+"Insert table": "Inserir tabela",
+"Body": "Corpo",
+"Caption": "Legenda",
+"Footer": "Rodap\u00e9",
+"Delete row": "Eliminar linha",
+"Paste row before": "Colar linha antes",
+"Scope": "Escopo",
+"Delete table": "Eliminar tabela",
+"H Align": "Alinhamento H",
+"Top": "Topo",
+"Header cell": "Cabe\u00e7alho da c\u00e9lula",
+"Column": "Coluna",
+"Row group": "Agrupar linha",
+"Cell": "C\u00e9lula",
+"Middle": "Meio",
+"Cell type": "Tipo de c\u00e9lula",
+"Copy row": "Copiar linha",
+"Row properties": "Propriedades da linha",
+"Table properties": "Propriedades da tabela",
+"Bottom": "Fundo",
+"V Align": "Alinhamento V",
+"Header": "Cabe\u00e7alho",
+"Right": "Direita",
+"Insert column after": "Inserir coluna depois",
+"Cols": "Colunas",
+"Insert row after": "Inserir linha depois",
+"Width": "Largura",
+"Cell properties": "Propriedades da c\u00e9lula",
+"Left": "Esquerda",
+"Cut row": "Cortar linha",
+"Delete column": "Eliminar coluna",
+"Center": "Centro",
+"Merge cells": "Unir c\u00e9lulas",
+"Insert template": "Inserir modelo",
+"Templates": "Modelos",
+"Background color": "Cor de fundo",
+"Custom...": "Personalizada...",
+"Custom color": "Cor personalizada",
+"No color": "Sem cor",
+"Text color": "Cor do texto",
+"Show blocks": "Mostrar blocos",
+"Show invisible characters": "Mostrar caracteres invis\u00edveis",
+"Words: {0}": "Palavras: {0}",
+"Insert": "Inserir",
+"File": "Ficheiro",
+"Edit": "Editar",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u00c1rea de texto formatado. Pressione ALT-F9 para exibir o menu. Pressione ALT-F10 para exibir a barra de ferramentas. Pressione ALT-0 para exibir a ajuda",
+"Tools": "Ferramentas",
+"View": "Ver",
+"Table": "Tabela",
+"Format": "Formatar"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/ro.js b/program/js/tinymce/langs/ro.js
new file mode 100644
index 000000000..cf897b107
--- /dev/null
+++ b/program/js/tinymce/langs/ro.js
@@ -0,0 +1,197 @@
+tinymce.addI18n('ro',{
+"Cut": "Decupeaz\u0103",
+"Heading 5": "Titlu 5",
+"Header 2": "Antet 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Browserul dumneavoastr\u0103 nu support\u0103 acces direct la clipboard. Folosi\u0163i combina\u0163ile de tastatur\u0103 Ctrl+X\/C\/V.",
+"Heading 4": "Titlu 4",
+"Div": "Div",
+"Heading 2": "Titlu 2",
+"Paste": "Lipe\u015fte",
+"Close": "\u00cenchide",
+"Font Family": "Font",
+"Pre": "Pre",
+"Align right": "Aliniere la dreapta",
+"New document": "Document nou",
+"Blockquote": "Men\u0163iune bloc",
+"Numbered list": "List\u0103 ordonat\u0103",
+"Heading 1": "Titlu 1",
+"Headings": "Titluri",
+"Increase indent": "Indenteaz\u0103",
+"Formats": "Formate",
+"Headers": "Antete",
+"Select all": "Selecteaz\u0103 tot",
+"Header 3": "Antet 3",
+"Blocks": "Blocuri",
+"Undo": "Reexecut\u0103",
+"Strikethrough": "T\u0103iat",
+"Bullet list": "List\u0103 neordonat\u0103",
+"Header 1": "Antet 1",
+"Superscript": "Superscript",
+"Clear formatting": "\u015eterge format\u0103rile",
+"Font Sizes": "Dimensiune font",
+"Subscript": "Subscript",
+"Header 6": "Antet 6",
+"Redo": "Dezexecut\u0103",
+"Paragraph": "Paragraf",
+"Ok": "Ok",
+"Bold": "\u00cengro\u015fat",
+"Code": "Cod",
+"Italic": "Italic",
+"Align center": "Centrare",
+"Header 5": "Antet 5",
+"Heading 6": "Titlu 6",
+"Heading 3": "Titlu 3",
+"Decrease indent": "De-indenteaz\u0103",
+"Header 4": "Antet 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Functia \"lipe\u015fte\" este acum \u00een modul text simplu. Continutul va fi acum inserat ca text simplu p\u00e2n\u0103 c\u00e2nd aceast\u0103 op\u021biune va fi dezactivat.",
+"Underline": "Subliniat",
+"Cancel": "Anuleaz\u0103",
+"Justify": "Aliniere pe toat\u0103 l\u0103\u021bimea",
+"Inline": "Inline",
+"Copy": "Copiaz\u0103",
+"Align left": "Aliniere la st\u00e2nga",
+"Visual aids": "Ajutor vizual",
+"Lower Greek": "Minuscule Grecesti",
+"Square": "P\u0103trat",
+"Default": "Implicit",
+"Lower Alpha": "Minuscule Alfanumerice",
+"Circle": "Cerc",
+"Disc": "Disc",
+"Upper Alpha": "Majuscule Alfanumerice",
+"Upper Roman": "Majuscule Romane",
+"Lower Roman": "Minuscule Romane",
+"Name": "Nume",
+"Anchor": "Ancor\u0103",
+"You have unsaved changes are you sure you want to navigate away?": "Ave\u021bi modific\u0103ri nesalvate! Sunte\u0163i sigur c\u0103 dori\u0163i s\u0103 ie\u015fiti?",
+"Restore last draft": "Restaurare la ultima salvare",
+"Special character": "Caractere speciale",
+"Source code": "Codul surs\u0103",
+"Color": "Culoare",
+"Right to left": "Dreapta la st\u00e2nga",
+"Left to right": "St\u00e2nga la dreapta",
+"Emoticons": "Emoticoane",
+"Robots": "Robo\u021bi",
+"Document properties": "Propriet\u0103\u021bi document",
+"Title": "Titlu",
+"Keywords": "Cuvinte cheie",
+"Encoding": "Codare",
+"Description": "Descriere",
+"Author": "Autor",
+"Fullscreen": "Pe tot ecranul",
+"Horizontal line": "Linie orizontal\u0103",
+"Horizontal space": "Spa\u021biul orizontal",
+"Insert\/edit image": "Inserare\/editarea imaginilor",
+"General": "General",
+"Advanced": "Avansat",
+"Source": "Surs\u0103",
+"Border": "Bordur\u0103",
+"Constrain proportions": "Constr\u00e2nge propor\u021biile",
+"Vertical space": "Spa\u021biul vertical",
+"Image description": "Descrierea imaginii",
+"Style": "Stil",
+"Dimensions": "Dimensiuni",
+"Insert image": "Inserare imagine",
+"Insert date\/time": "Insereaz\u0103 data\/ora",
+"Remove link": "\u0218terge link-ul",
+"Url": "Url",
+"Text to display": "Text de afi\u0219at",
+"Anchors": "Ancor\u0103",
+"Insert link": "Inserare link",
+"New window": "Fereastr\u0103 nou\u0103",
+"None": "Nici unul",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "URL-ul introdus pare s\u0103 fie o adres\u0103 web. Dori\u021bi s\u0103 ad\u0103uga\u021bi prefixul http:\/\/ ?",
+"Target": "\u021aint\u0103",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "URL-ul introdus pare s\u0103 fie o adres\u0103 de e-mail. Dori\u021bi s\u0103 ad\u0103uga\u021bi prefixul mailto: ?",
+"Insert\/edit link": "Inserare\/editare link",
+"Insert\/edit video": "Inserare\/editare video",
+"Poster": "Poster",
+"Alternative source": "Surs\u0103 alternativ\u0103",
+"Paste your embed code below:": "Insera\u021bi codul:",
+"Insert video": "Inserare video",
+"Embed": "Embed",
+"Nonbreaking space": "Spa\u021biu neseparator",
+"Page break": "\u00centrerupere de pagin\u0103",
+"Paste as text": "Lipe\u015fte ca text",
+"Preview": "Previzualizare",
+"Print": "Tip\u0103re\u0219te",
+"Save": "Salveaz\u0103",
+"Could not find the specified string.": "Nu am putut g\u0103si \u0219irul specificat.",
+"Replace": "\u00cenlocuie\u015fte",
+"Next": "Precedent",
+"Whole words": "Doar cuv\u00eentul \u00eentreg",
+"Find and replace": "Caut\u0103 \u015fi \u00eenlocuie\u015fte",
+"Replace with": "\u00cenlocuie\u015fte cu",
+"Find": "Caut\u0103",
+"Replace all": "\u00cenlocuie\u015fte toate",
+"Match case": "Distinge majuscule\/minuscule",
+"Prev": "Anterior",
+"Spellcheck": "Verificarea ortografic\u0103",
+"Finish": "Finalizeaz\u0103",
+"Ignore all": "Ignor\u0103 toate",
+"Ignore": "Ignor\u0103",
+"Add to Dictionary": "Adaug\u0103 \u00een Dic\u021bionar",
+"Insert row before": "Insereaz\u0103 \u00eenainte de linie",
+"Rows": "Linii",
+"Height": "\u00cen\u0103l\u0163ime",
+"Paste row after": "Lipe\u015fte linie dup\u0103",
+"Alignment": "Aliniament",
+"Border color": "Culoare bordur\u0103",
+"Column group": "Grup de coloane",
+"Row": "Linie",
+"Insert column before": "Insereaza \u00eenainte de coloan\u0103",
+"Split cell": "\u00cemp\u0103r\u021birea celulelor",
+"Cell padding": "Spa\u021biere",
+"Cell spacing": "Spa\u021biere celule",
+"Row type": "Tip de linie",
+"Insert table": "Insereaz\u0103 tabel\u0103",
+"Body": "Corp",
+"Caption": "Titlu",
+"Footer": "Subsol",
+"Delete row": "\u0218terge linia",
+"Paste row before": "Lipe\u015fte \u00eenainte de linie",
+"Scope": "Domeniu",
+"Delete table": "\u0218terge tabel\u0103",
+"H Align": "Aliniere H",
+"Top": "Sus",
+"Header cell": "Antet celul\u0103",
+"Column": "Coloan\u0103",
+"Row group": "Grup de linii",
+"Cell": "Celul\u0103",
+"Middle": "Mijloc",
+"Cell type": "Tip celul\u0103",
+"Copy row": "Copiaz\u0103 linie",
+"Row properties": "Propriet\u0103\u021bi linie",
+"Table properties": "Propriet\u0103\u021bi tabel\u0103",
+"Bottom": "Jos",
+"V Align": "Aliniere V",
+"Header": "Antet",
+"Right": "Dreapta",
+"Insert column after": "Insereaza dup\u0103 coloan\u0103",
+"Cols": "Coloane",
+"Insert row after": "Insereaz\u0103 dup\u0103 linie",
+"Width": "L\u0103\u0163ime",
+"Cell properties": "Propriet\u0103\u021bi celul\u0103",
+"Left": "St\u00e2nga",
+"Cut row": "Taie linie",
+"Delete column": "\u0218terge coloana",
+"Center": "Centru",
+"Merge cells": "\u00cembinarea celulelor",
+"Insert template": "Insereaz\u0103 \u0219ablon",
+"Templates": "\u015eabloane",
+"Background color": "Culoare fundal",
+"Custom...": "Personalizat...",
+"Custom color": "Culoare personalizat\u0103",
+"No color": "F\u0103r\u0103 culoare",
+"Text color": "Culoare text",
+"Show blocks": "Afi\u0219are blocuri",
+"Show invisible characters": "Afi\u0219are caractere invizibile",
+"Words: {0}": "Cuvinte: {0}",
+"Insert": "Insereaz\u0103",
+"File": "Fil\u0103",
+"Edit": "Editeaz\u0103",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Zon\u0103 cu Rich Text. Apas\u0103 ALT-F9 pentru meniu. Apas\u0103 ALT-F10 pentru bara de unelte. Apas\u0103 ALT-0 pentru ajutor",
+"Tools": "Unelte",
+"View": "Vezi",
+"Table": "Tabel\u0103",
+"Format": "Formateaz\u0103"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/ru.js b/program/js/tinymce/langs/ru.js
new file mode 100644
index 000000000..fdd38210f
--- /dev/null
+++ b/program/js/tinymce/langs/ru.js
@@ -0,0 +1,196 @@
+tinymce.addI18n('ru',{
+"Cut": "\u0412\u044b\u0440\u0435\u0437\u0430\u0442\u044c",
+"Heading 5": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 5",
+"Header 2": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0412\u0430\u0448 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u044f\u043c\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0431\u0443\u0444\u0435\u0440\u0443 \u043e\u0431\u043c\u0435\u043d\u0430. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0432\u0438\u0448: Ctrl+X\/C\/V.",
+"Heading 4": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 4",
+"Div": "\u0411\u043b\u043e\u043a",
+"Heading 2": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 2",
+"Paste": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c",
+"Close": "\u0417\u0430\u043a\u0440\u044b\u0442\u044c",
+"Font Family": "\u0428\u0440\u0438\u0444\u0442",
+"Pre": "\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435",
+"Align right": "\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
+"New document": "\u041d\u043e\u0432\u044b\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442",
+"Blockquote": "\u0426\u0438\u0442\u0430\u0442\u0430",
+"Numbered list": "\u041d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a",
+"Heading 1": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 1",
+"Headings": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438",
+"Increase indent": "\u0423\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043e\u0442\u0441\u0442\u0443\u043f",
+"Formats": "\u0424\u043e\u0440\u043c\u0430\u0442",
+"Headers": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438",
+"Select all": "\u0412\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0432\u0441\u0435",
+"Header 3": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 3",
+"Blocks": "\u0411\u043b\u043e\u043a\u0438",
+"Undo": "\u0412\u0435\u0440\u043d\u0443\u0442\u044c",
+"Strikethrough": "\u0417\u0430\u0447\u0435\u0440\u043a\u043d\u0443\u0442\u044b\u0439",
+"Bullet list": "\u041c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a",
+"Header 1": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 1",
+"Superscript": "\u0412\u0435\u0440\u0445\u043d\u0438\u0439 \u0438\u043d\u0434\u0435\u043a\u0441",
+"Clear formatting": "\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u0442",
+"Font Sizes": "\u0420\u0430\u0437\u043c\u0435\u0440 \u0448\u0440\u0438\u0444\u0442\u0430",
+"Subscript": "\u041d\u0438\u0436\u043d\u0438\u0439 \u0438\u043d\u0434\u0435\u043a\u0441",
+"Header 6": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 6",
+"Redo": "\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c",
+"Paragraph": "\u041f\u0430\u0440\u0430\u0433\u0440\u0430\u0444",
+"Ok": "\u041e\u043a",
+"Bold": "\u041f\u043e\u043b\u0443\u0436\u0438\u0440\u043d\u044b\u0439",
+"Code": "\u041a\u043e\u0434",
+"Italic": "\u041a\u0443\u0440\u0441\u0438\u0432",
+"Align center": "\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443",
+"Header 5": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 5",
+"Heading 6": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 6",
+"Heading 3": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 3",
+"Decrease indent": "\u0423\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u043e\u0442\u0441\u0442\u0443\u043f",
+"Header 4": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0412\u0441\u0442\u0430\u0432\u043a\u0430 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430, \u043f\u043e\u043a\u0430 \u043d\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u0443\u044e \u043e\u043f\u0446\u0438\u044e.",
+"Underline": "\u041f\u043e\u0434\u0447\u0435\u0440\u043a\u043d\u0443\u0442\u044b\u0439",
+"Cancel": "\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c",
+"Justify": "\u041f\u043e \u0448\u0438\u0440\u0438\u043d\u0435",
+"Inline": "\u0421\u0442\u0440\u043e\u0447\u043d\u044b\u0435",
+"Copy": "\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c",
+"Align left": "\u041f\u043e \u043b\u0435\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
+"Visual aids": "\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0443\u0440\u044b",
+"Lower Greek": "\u0421\u0442\u0440\u043e\u0447\u043d\u044b\u0435 \u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0438\u0435 \u0431\u0443\u043a\u0432\u044b",
+"Square": "\u041a\u0432\u0430\u0434\u0440\u0430\u0442\u044b",
+"Default": "\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439",
+"Lower Alpha": "\u0421\u0442\u0440\u043e\u0447\u043d\u044b\u0435 \u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0438\u0435 \u0431\u0443\u043a\u0432\u044b",
+"Circle": "\u041e\u043a\u0440\u0443\u0436\u043d\u043e\u0441\u0442\u0438",
+"Disc": "\u041a\u0440\u0443\u0433\u0438",
+"Upper Alpha": "\u0417\u0430\u0433\u043b\u0430\u0432\u043d\u044b\u0435 \u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0438\u0435 \u0431\u0443\u043a\u0432\u044b",
+"Upper Roman": "\u0417\u0430\u0433\u043b\u0430\u0432\u043d\u044b\u0435 \u0440\u0438\u043c\u0441\u043a\u0438\u0435 \u0446\u0438\u0444\u0440\u044b",
+"Lower Roman": "\u0421\u0442\u0440\u043e\u0447\u043d\u044b\u0435 \u0440\u0438\u043c\u0441\u043a\u0438\u0435 \u0446\u0438\u0444\u0440\u044b",
+"Name": "\u0418\u043c\u044f",
+"Anchor": "\u042f\u043a\u043e\u0440\u044c",
+"You have unsaved changes are you sure you want to navigate away?": "\u0423 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f. \u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0439\u0442\u0438?",
+"Restore last draft": "\u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430",
+"Special character": "\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b",
+"Source code": "\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434",
+"Color": "\u0426\u0432\u0435\u0442",
+"Right to left": "\u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0435\u0432\u043e",
+"Left to right": "\u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e",
+"Emoticons": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043c\u0430\u0439\u043b",
+"Robots": "\u0420\u043e\u0431\u043e\u0442\u044b",
+"Document properties": "\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430",
+"Title": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
+"Keywords": "\u041a\u043b\u044e\u0447\u0438\u0432\u044b\u0435 \u0441\u043b\u043e\u0432\u0430",
+"Encoding": "\u041a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430",
+"Description": "\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435",
+"Author": "\u0410\u0432\u0442\u043e\u0440",
+"Fullscreen": "\u041f\u043e\u043b\u043d\u043e\u044d\u043a\u0440\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c",
+"Horizontal line": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u043b\u0438\u043d\u0438\u044f",
+"Horizontal space": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b",
+"Insert\/edit image": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c\/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",
+"General": "\u041e\u0431\u0449\u0435\u0435",
+"Advanced": "\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435",
+"Source": "\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a",
+"Border": "\u0420\u0430\u043c\u043a\u0430",
+"Constrain proportions": "\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u0438",
+"Vertical space": "\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b",
+"Image description": "\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f",
+"Style": "\u0421\u0442\u0438\u043b\u044c",
+"Dimensions": "\u0420\u0430\u0437\u043c\u0435\u0440",
+"Insert image": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",
+"Insert date\/time": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0434\u0430\u0442\u0443\/\u0432\u0440\u0435\u043c\u044f",
+"Remove link": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443",
+"Url": "\u0410\u0434\u0440\u0435\u0441 \u0441\u0441\u044b\u043b\u043a\u0438",
+"Text to display": "\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0439 \u0442\u0435\u043a\u0441\u0442",
+"Anchors": "\u042f\u043a\u043e\u0440\u044f",
+"Insert link": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443",
+"New window": "\u0412 \u043d\u043e\u0432\u043e\u043c \u043e\u043a\u043d\u0435",
+"None": "\u041d\u0435\u0442",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u0412\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0439 URL \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u0441\u0441\u044b\u043b\u043a\u043e\u0439. \u0412\u044b \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u00abhttp:\/\/\u00bb?",
+"Target": "\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u0412\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0439 URL \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u043c \u0430\u0434\u0440\u0435\u0441\u043e\u043c \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b. \u0412\u044b \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u00abmailto:\u00bb?",
+"Insert\/edit link": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c\/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443",
+"Insert\/edit video": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c\/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0438\u0434\u0435\u043e",
+"Poster": "\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",
+"Alternative source": "\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a",
+"Paste your embed code below:": "\u0412\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0432\u0430\u0448 \u043a\u043e\u0434 \u043d\u0438\u0436\u0435:",
+"Insert video": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0438\u0434\u0435\u043e",
+"Embed": "\u041a\u043e\u0434 \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438",
+"Nonbreaking space": "\u041d\u0435\u0440\u0430\u0437\u0440\u044b\u0432\u043d\u044b\u0439 \u043f\u0440\u043e\u0431\u0435\u043b",
+"Page break": "\u0420\u0430\u0437\u0440\u044b\u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b",
+"Paste as text": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u0430\u043a \u0442\u0435\u043a\u0441\u0442",
+"Preview": "\u041f\u0440\u0435\u0434\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440",
+"Print": "\u041f\u0435\u0447\u0430\u0442\u044c",
+"Save": "\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c",
+"Could not find the specified string.": "\u0417\u0430\u0434\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430",
+"Replace": "\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c",
+"Next": "\u0412\u043d\u0438\u0437",
+"Whole words": "\u0421\u043b\u043e\u0432\u043e \u0446\u0435\u043b\u0438\u043a\u043e\u043c",
+"Find and replace": "\u041f\u043e\u0438\u0441\u043a \u0438 \u0437\u0430\u043c\u0435\u043d\u0430",
+"Replace with": "\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430",
+"Find": "\u041d\u0430\u0439\u0442\u0438",
+"Replace all": "\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u0441\u0435",
+"Match case": "\u0423\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0440\u0435\u0433\u0438\u0441\u0442\u0440",
+"Prev": "\u0412\u0432\u0435\u0440\u0445",
+"Spellcheck": "\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435",
+"Finish": "\u0417\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u044c",
+"Ignore all": "\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435",
+"Ignore": "\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c",
+"Add to Dictionary": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u0441\u043b\u043e\u0432\u0430\u0440\u044c",
+"Insert row before": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0443\u0441\u0442\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u0432\u0435\u0440\u0445\u0443",
+"Rows": "\u0421\u0442\u0440\u043e\u043a\u0438",
+"Height": "\u0412\u044b\u0441\u043e\u0442\u0430",
+"Paste row after": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u043d\u0438\u0437\u0443",
+"Alignment": "\u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435",
+"Column group": "\u0413\u0440\u0443\u043f\u043f\u0430 \u043a\u043e\u043b\u043e\u043d\u043e\u043a",
+"Row": "\u0421\u0442\u0440\u043e\u043a\u0430",
+"Insert column before": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0441\u043b\u0435\u0432\u0430",
+"Split cell": "\u0420\u0430\u0437\u0431\u0438\u0442\u044c \u044f\u0447\u0435\u0439\u043a\u0443",
+"Cell padding": "\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u043e\u0442\u0441\u0442\u0443\u043f",
+"Cell spacing": "\u0412\u043d\u0435\u0448\u043d\u0438\u0439 \u043e\u0442\u0441\u0442\u0443\u043f",
+"Row type": "\u0422\u0438\u043f \u0441\u0442\u0440\u043e\u043a\u0438",
+"Insert table": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443",
+"Body": "\u0422\u0435\u043b\u043e",
+"Caption": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
+"Footer": "\u041d\u0438\u0437",
+"Delete row": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443",
+"Paste row before": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u0432\u0435\u0440\u0445\u0443",
+"Scope": "Scope",
+"Delete table": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443",
+"H Align": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435",
+"Top": "\u041f\u043e \u0432\u0435\u0440\u0445\u0443",
+"Header cell": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
+"Column": "\u0421\u0442\u043e\u043b\u0431\u0435\u0446",
+"Row group": "\u0413\u0440\u0443\u043f\u043f\u0430 \u0441\u0442\u0440\u043e\u043a",
+"Cell": "\u042f\u0447\u0435\u0439\u043a\u0430",
+"Middle": "\u041f\u043e \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435",
+"Cell type": "\u0422\u0438\u043f \u044f\u0447\u0435\u0439\u043a\u0438",
+"Copy row": "\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443",
+"Row properties": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u0442\u0440\u043e\u043a\u0438",
+"Table properties": "\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u044b",
+"Bottom": "\u041f\u043e \u043d\u0438\u0437\u0443",
+"V Align": "\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435",
+"Header": "\u0428\u0430\u043f\u043a\u0430",
+"Right": "\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
+"Insert column after": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0441\u043f\u0440\u0430\u0432\u0430",
+"Cols": "\u0421\u0442\u043e\u043b\u0431\u0446\u044b",
+"Insert row after": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0443\u0441\u0442\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u043d\u0438\u0437\u0443",
+"Width": "\u0428\u0438\u0440\u0438\u043d\u0430",
+"Cell properties": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u044f\u0447\u0435\u0439\u043a\u0438",
+"Left": "\u041f\u043e \u043b\u0435\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
+"Cut row": "\u0412\u044b\u0440\u0435\u0437\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443",
+"Delete column": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0435\u0446",
+"Center": "\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443",
+"Merge cells": "\u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u044f\u0447\u0435\u0439\u043a\u0438",
+"Insert template": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d",
+"Templates": "\u0428\u0430\u0431\u043b\u043e\u043d\u044b",
+"Background color": "\u0426\u0432\u0435\u0442 \u0444\u043e\u043d\u0430",
+"Custom...": "\u0412\u044b\u0431\u0440\u0430\u0442\u044c\u2026",
+"Custom color": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0446\u0432\u0435\u0442",
+"No color": "\u0411\u0435\u0437 \u0446\u0432\u0435\u0442\u0430",
+"Text color": "\u0426\u0432\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u0430",
+"Show blocks": "\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0431\u043b\u043e\u043a\u0438",
+"Show invisible characters": "\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b",
+"Words: {0}": "\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u043b\u043e\u0432: {0}",
+"Insert": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c",
+"File": "\u0424\u0430\u0439\u043b",
+"Edit": "\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u0422\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435. \u041d\u0430\u0436\u043c\u0438\u0442\u0435 ALT-F9 \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043c\u0435\u043d\u044e, ALT-F10 \u043f\u0430\u043d\u0435\u043b\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, ALT-0 \u0434\u043b\u044f \u0432\u044b\u0437\u043e\u0432\u0430 \u043f\u043e\u043c\u043e\u0449\u0438.",
+"Tools": "\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b",
+"View": "\u0412\u0438\u0434",
+"Table": "\u0422\u0430\u0431\u043b\u0438\u0446\u0430",
+"Format": "\u0424\u043e\u0440\u043c\u0430\u0442"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/si_LK.js b/program/js/tinymce/langs/si_LK.js
new file mode 100644
index 000000000..10aeb5a83
--- /dev/null
+++ b/program/js/tinymce/langs/si_LK.js
@@ -0,0 +1,179 @@
+tinymce.addI18n('si_LK',{
+"Cut": "\u0d9a\u0db4\u0db1\u0dca\u0db1",
+"Header 2": "Header 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0d9c\u0dca\u200d\u0dbb\u0dcf\u0dc4\u0d9a \u0db4\u0dd4\u0dc0\u0dbb\u0dd4\u0dc0\u0da7 \u0d8d\u0da2\u0dd4 \u0db4\u0dca\u200d\u0dbb\u0dc0\u0dda\u0dc1\u0dba\u0d9a\u0dca \u0dbd\u0db6\u0dcf\u0daf\u0dd3\u0db8\u0da7 \u0d94\u0db6\u0d9c\u0dda \u0db6\u0dca\u200d\u0dbb\u0dc0\u0dd4\u0dc3\u0dbb\u0dba \u0dc3\u0dc4\u0dba\u0d9a\u0dca \u0db1\u0ddc\u0daf\u0d9a\u0dca\u0dc0\u0dba\u0dd3. \u0d9a\u0dbb\u0dd4\u0dab\u0dcf\u0d9a\u0dbb \u0d92\u0dc0\u0dd9\u0db1\u0dd4\u0dc0\u0da7 Ctrl+X\/C\/V \u0dba\u0db1 \u0dba\u0dad\u0dd4\u0dbb\u0dd4\u0db4\u0dd4\u0dc0\u0dbb\u0dd4 \u0d9a\u0dd9\u0da7\u0dd2\u0db8\u0d9f \u0db7\u0dcf\u0dc0\u0dd2\u0dad\u0dcf \u0d9a\u0dbb\u0db1\u0dca\u0db1.",
+"Div": "Div",
+"Paste": "\u0d85\u0dbd\u0dc0\u0db1\u0dca\u0db1",
+"Close": "\u0dc0\u0dc3\u0db1\u0dca\u0db1",
+"Font Family": "Font Family",
+"Pre": "Pre",
+"Align right": "\u0daf\u0d9a\u0dd4\u0dab\u0dd4\u0db4\u0dc3\u0da7 \u0db4\u0dd9\u0dc5\u0d9c\u0dc3\u0dca\u0dc0\u0db1\u0dca\u0db1",
+"New document": "\u0db1\u0dc0 \u0dbd\u0dda\u0d9b\u0db1\u0dba\u0d9a\u0dca",
+"Blockquote": "Blockquote",
+"Numbered list": "\u0d85\u0d82\u0d9a\u0db1\u0dba \u0d9a\u0dbd \u0dbd\u0dd0\u0dba\u0dd2\u0dc3\u0dca\u0dad\u0dd4\u0dc0",
+"Increase indent": "\u0dc0\u0dd0\u0da9\u0dd2\u0dc0\u0db1 \u0d91\u0db6\u0dd4\u0db8",
+"Formats": "\u0d86\u0d9a\u0dd8\u0dad\u0dd2",
+"Headers": "Headers",
+"Select all": "\u0dc3\u0dd2\u0dba\u0dbd\u0dca\u0dbd \u0dad\u0ddd\u0dbb\u0db1\u0dca\u0db1",
+"Header 3": "Header 3",
+"Blocks": "Blocks",
+"Undo": "\u0db1\u0dd2\u0dc2\u0dca\u0db4\u0dca\u200d\u0dbb\u0db7\u0dcf \u0d9a\u0dbb\u0db1\u0dc0\u0dcf",
+"Strikethrough": "\u0db8\u0dd0\u0daf\u0dd2 \u0d89\u0dbb\u0dd0\u0dad\u0dd2",
+"Bullet list": "\u0dbd\u0dd0\u0dba\u0dd2\u0dc3\u0dca\u0dad\u0dd4\u0dc0",
+"Header 1": "Header 1",
+"Superscript": "\u0d8b\u0da9\u0dd4\u0dbd\u0d9a\u0dd4\u0dab\u0dd4",
+"Clear formatting": "\u0db4\u0dd0\u0dc4\u0dd0\u0daf\u0dd2\u0dbd\u0dd2 \u0d86\u0d9a\u0dd8\u0dad\u0dd2\u0d9a\u0dbb\u0dab\u0dba",
+"Font Sizes": "Font Sizes",
+"Subscript": "\u0dba\u0da7\u0dd2\u0dbd\u0d9a\u0dd4\u0dab\u0dd4",
+"Header 6": "Header 6",
+"Redo": "\t\u0db1\u0dd0\u0dc0\u0dad \u0d9a\u0dbb\u0db1\u0dca\u0db1",
+"Paragraph": "Paragraph",
+"Ok": "\u0d85\u0db1\u0dd4\u0db8\u0dad \u0d9a\u0dbb\u0db1\u0dca\u0db1",
+"Bold": "\u0db4\u0dd0\u0dc4\u0dd0\u0daf\u0dd2\u0dbd\u0dd2 \u0dc3\u0dda \u0db4\u0dd9\u0db1\u0dd9\u0db1",
+"Code": "Code",
+"Italic": "\u0d87\u0dbd\u0d9a\u0dd4\u0dbb\u0dd4",
+"Align center": "\u0db8\u0dd0\u0daf\u0dd2 \u0d9a\u0ddc\u0da7 \u0db4\u0dd9\u0dc5\u0d9c\u0dc3\u0dca\u0dc0\u0db1\u0dca\u0db1",
+"Header 5": "Header 5",
+"Decrease indent": "\u0d85\u0da9\u0dd4\u0dc0\u0db1 \u0d91\u0db6\u0dd4\u0db8",
+"Header 4": "Header 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.",
+"Underline": "\u0dba\u0da7\u0dd2\u0db1\u0dca \u0d89\u0dbb\u0d9a\u0dca \u0d85\u0db3\u0dd2\u0db1\u0dca\u0db1",
+"Cancel": "\u0d85\u0dc4\u0ddd\u0dc3\u0dd2 \u0d9a\u0dbb\u0db1\u0dca\u0db1",
+"Justify": "\u0dc3\u0db8\u0dc0 \u0db4\u0dd9\u0dc5\u0d9c\u0dc3\u0dca\u0dc0\u0db1\u0dca\u0db1",
+"Inline": "Inline",
+"Copy": "\u0db4\u0dd2\u0da7\u0db4\u0dad\u0dca \u0d9a\u0dbb\u0db1\u0dca\u0db1",
+"Align left": "\u0dc0\u0db8\u0dca\u0db4\u0dc3\u0da7 \u0db4\u0dd9\u0dc5\u0d9c\u0dc3\u0dca\u0dc0\u0db1\u0dca\u0db1",
+"Visual aids": "\u0daf\u0dd8\u0dc1\u0dca\u200d\u0dba\u0dcf\u0db0\u0dcf\u0dbb",
+"Lower Greek": "\u0d9a\u0dd4\u0da9\u0dcf \u0d9c\u0dca\u200d\u0dbb\u0dd3\u0d9a ",
+"Square": "\u0d9a\u0ddc\u0da7\u0dd4\u0dc0",
+"Default": "\u0db4\u0dd9\u0dbb\u0db1\u0dd2\u0db8\u0dd2\u0dba ",
+"Lower Alpha": "\u0d9a\u0dd4\u0da9\u0dcf \u0d87\u0dbd\u0dca\u0dc6\u0dcf ",
+"Circle": "\u0dc0\u0d9a\u0dca\u200d\u0dbb\u0dba",
+"Disc": "\u0dad\u0dd0\u0da7\u0dd2\u0dba ",
+"Upper Alpha": "\u0dc0\u0dd2\u0dc1\u0dcf\u0dbd \u0d87\u0dbd\u0dca\u0dc6\u0dcf ",
+"Upper Roman": "\u0dc0\u0dd2\u0dc1\u0dcf\u0dbd \u0dbb\u0ddd\u0db8\u0dcf\u0db1\u0dd4 ",
+"Lower Roman": "\u0d9a\u0dd4\u0da9\u0dcf \u0dbb\u0ddd\u0db8\u0dcf\u0db1\u0dd4 ",
+"Name": "\u0db1\u0dcf\u0db8\u0dba ",
+"Anchor": "\u0d87\u0db1\u0dca\u0d9a\u0dbb\u0dba",
+"You have unsaved changes are you sure you want to navigate away?": "\u0d94\u0db6\u0d9c\u0dda \u0dc3\u0dd4\u0dbb\u0d9a\u0dd2\u0db1 \u0db1\u0ddc\u0dbd\u0daf \u0dc0\u0dd9\u0db1\u0dc3\u0dca\u0d9a\u0dd2\u0dbb\u0dd3\u0db8\u0dca \u0d87\u0dad,\u0d94\u0db6\u0da7 \u0dc0\u0dd2\u0dc1\u0dca\u0dc0\u0dcf\u0dc3\u0daf \u0d89\u0dc0\u0dad\u0da7 \u0dba\u0dcf\u0dba\u0dd4\u0dad\u0dd4\u0dba\u0dd2 \u0d9a\u0dd2\u0dba\u0dcf?",
+"Restore last draft": "\u0d85\u0dc0\u0dc3\u0dcf\u0db1\u0dba\u0da7 \u0db7\u0dcf\u0dc0\u0dd2\u0dad\u0dcf\u0d9a\u0dc5 \u0d9a\u0dd9\u0da7\u0dd4\u0db8\u0dca\u0db4\u0dad \u0db4\u0dd2\u0dc5\u0dd2\u0db1\u0d9c\u0db1\u0dca\u0db1 ",
+"Special character": "\u0dc0\u0dd2\u0dc1\u0dda\u0dc2 \u0d85\u0db1\u0dd4\u0dbd\u0d9a\u0dd4\u0dab ",
+"Source code": "\u0db8\u0dd6\u0dbd \u0d9a\u0dda\u0dad\u0dba ",
+"Right to left": "\u0daf\u0d9a\u0dd4\u0dab\u0dd4\u0db4\u0dc3 \u0dc3\u0dd2\u0da7 \u0dc0\u0db8\u0dca\u0db4\u0dc3\u0da7 ",
+"Left to right": "\u0dc0\u0db8\u0dca\u0db4\u0dc3 \u0dc3\u0dd2\u0da7 \u0daf\u0d9a\u0dd4\u0db1\u0dd4\u0db4\u0dc3\u0da7 ",
+"Emoticons": "\u0db7\u0dcf\u0dc0 \u0db1\u0dd2\u0dbb\u0dd4\u0db4\u0d9a",
+"Robots": "\u0dbb\u0ddc\u0db6\u0ddd",
+"Document properties": "\u0dbd\u0dda\u0d9b\u0db1\u0dba\u0dda \u0d9c\u0dd4\u0dab\u0dcf\u0d82\u0d9c ",
+"Title": "\u0db8\u0dcf\u0dad\u0dd8\u0d9a\u0dcf\u0dc0",
+"Keywords": "\u0db8\u0dd6\u0dbd \u0db4\u0daf\u0dba ",
+"Encoding": "\u0d9a\u0dda\u0dad\u0db1\u0dba",
+"Description": "\u0dc0\u0dd2\u0dc3\u0dca\u0dad\u0dbb\u0dba ",
+"Author": "\u0d9a\u0dad\u0dd8 ",
+"Fullscreen": "\u0db4\u0dd6\u0dbb\u0dca\u0dab \u0dad\u0dd2\u0dbb\u0dba ",
+"Horizontal line": "\u0dad\u0dd2\u0dbb\u0dc3\u0dca \u0d89\u0dbb ",
+"Horizontal space": "\u0dad\u0dd2\u0dbb\u0dc3\u0dca \u0dc4\u0dd2\u0dc3\u0dca \u0d89\u0da9",
+"Insert\/edit image": "\u0db4\u0dd2\u0db1\u0dca\u0dad\u0dd4\u0dbb\u0dba \u0d87\u0dad\u0dd4\u0dbd\u0dca\u0d9a\u0dbb\u0db1\u0dca\u0db1 \/ \u0dc3\u0d9a\u0dc3\u0dca\u0d9a\u0dbb\u0db1\u0dca\u0db1 ",
+"General": "\u0db4\u0ddc\u0daf\u0dd4",
+"Advanced": "\u0db4\u0dca\u200d\u0dbb\u0d9c\u0dad",
+"Source": "\u0db8\u0dd6\u0dbd\u0dba ",
+"Border": "\u0dc3\u0dd3\u0db8\u0dcf\u0dc0 ",
+"Constrain proportions": "\u0dc3\u0d82\u0dbb\u0ddd\u0daf\u0d9a \u0db4\u0dca\u200d\u0dbb\u0db8\u0dcf\u0dab\u0db1",
+"Vertical space": "\u0dc3\u0dd2\u0dbb\u0dc3\u0dca \u0dc4\u0dd2\u0dc3\u0dca \u0d89\u0da9",
+"Image description": "\u0db4\u0dd2\u0db1\u0dca\u0dad\u0dd4\u0dbb\u0dba\u0dda \u0dc0\u0dd2\u0dc3\u0dca\u0dad\u0dbb\u0dba ",
+"Style": "\u0dc0\u0dd2\u0dbd\u0dcf\u0dc3\u0dba",
+"Dimensions": "\u0db8\u0dcf\u0db1",
+"Insert image": "Insert image",
+"Insert date\/time": "\u0daf\u0dd2\u0db1\u0dba \/ \u0dc0\u0dda\u0dbd\u0dcf\u0dc0 \u0d87\u0dad\u0dd4\u0dbd\u0dca\u0d9a\u0dbb\u0db1\u0dca\u0db1",
+"Remove link": "Remove link",
+"Url": "Url",
+"Text to display": "\u0db4\u0dd9\u0dc5 - \u0dc3\u0d82\u0daf\u0dbb\u0dca\u0dc1\u0d9a\u0dba",
+"Anchors": "Anchors",
+"Insert link": "\u0dc3\u0db6\u0dd0\u0db3\u0dd2\u0dba \u0d87\u0dad\u0dd4\u0dbd\u0dca\u0d9a\u0dbb\u0db1\u0dca\u0db1",
+"New window": "\u0db1\u0dc0 \u0d9a\u0dc0\u0dd4\u0dc5\u0dd4\u0dc0\u0d9a\u0dca",
+"None": "\u0d9a\u0dd2\u0dc3\u0dd2\u0dc0\u0d9a\u0dca \u0db1\u0dd0\u0dad",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?",
+"Target": "\u0d89\u0dbd\u0d9a\u0dca\u0d9a\u0dba",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",
+"Insert\/edit link": "\u0dc3\u0db6\u0dd0\u0db3\u0dd2\u0dba \u0d87\u0dad\u0dd4\u0dbd\u0dca\u0d9a\u0dbb\u0db1\u0dca\u0db1 \/ \u0dc0\u0dd9\u0db1\u0dc3\u0dca\u0d9a\u0dbb\u0db1\u0dca\u0db1",
+"Insert\/edit video": "\u0dc0\u0dd3\u0da9\u0dd2\u0dba\u0ddd\u0dc0 \u0d87\u0dad\u0dd4\u0dbd\u0dca\u0d9a\u0dbb\u0db1\u0dca\u0db1 \/ \u0dc0\u0dd9\u0db1\u0dc3\u0dca\u0d9a\u0dbb\u0db1\u0dca\u0db1",
+"Poster": "\u0db4\u0ddd\u0dc3\u0dca\u0da7\u0dbb\u0dba",
+"Alternative source": "\u0dc0\u0dd2\u0d9a\u0dbd\u0dca\u0db4 \u0db8\u0dd6\u0dbd\u0dba",
+"Paste your embed code below:": "\u0d94\u0db6\u0d9c\u0dda \u0d9a\u0dcf\u0dc0\u0dd0\u0daf\u0dca\u0daf\u0dd6 \u0d9a\u0dda\u0dad\u0dba \u0db4\u0dc4\u0dad\u0dd2\u0db1\u0dca \u0daf\u0db8\u0db1\u0dca\u0db1",
+"Insert video": "\u0dc0\u0dd3\u0da9\u0dd2\u0dba\u0ddd\u0dc0 \u0d87\u0dad\u0dd4\u0dbd\u0dca\u0d9a\u0dbb\u0db1\u0dca\u0db1",
+"Embed": "\u0d9a\u0dcf\u0dc0\u0daf\u0dca\u0daf\u0db1\u0dca\u0db1",
+"Nonbreaking space": "\u0db1\u0ddc\u0d9a\u0dd0\u0da9\u0dd4\u0dab\u0dd4 \u0dc4\u0dd2\u0dc3\u0dca \u0d89\u0dbb",
+"Page break": "\u0db4\u0dd2\u0da7\u0dd4 \u0d9a\u0da9\u0db1\u0dba",
+"Paste as text": "Paste as text",
+"Preview": "\u0db4\u0dd9\u0dbb\u0daf\u0dc3\u0dd4\u0db1",
+"Print": "\u0db8\u0dd4\u0daf\u0dca\u200d\u0dbb\u0dab\u0dba \u0d9a\u0dbb\u0db1\u0dca\u0db1",
+"Save": "\u0dc3\u0dd4\u0dbb\u0d9a\u0dd2\u0db1\u0dca\u0db1",
+"Could not find the specified string.": "\u0db1\u0dd2\u0dbb\u0dd6\u0db4\u0dd2\u0dad \u0d85\u0db1\u0dd4\u0dbd\u0d9a\u0dd4\u0dab\u0dd4 \u0dc0\u0dd0\u0dbd \u0dc3\u0ddc\u0dba\u0dcf \u0d9c\u0dad \u0db1\u0ddc\u0dc4\u0dd0\u0d9a\u0dd2 \u0dc0\u0dd2\u0dba",
+"Replace": "\u0db4\u0dca\u200d\u0dbb\u0dad\u0dd2\u0dc3\u0dca\u0dae\u0dcf\u0db4\u0db1\u0dba \u0d9a\u0dbb\u0db1\u0dca\u0db1",
+"Next": "\u0db4\u0dc3\u0dd4",
+"Whole words": "\u0dc3\u0db8\u0dc3\u0dca\u0dad \u0db4\u0daf",
+"Find and replace": "\u0dc3\u0ddc\u0dba\u0dcf \u0db4\u0dc3\u0dd4\u0dc0 \u0db4\u0dca\u200d\u0dbb\u0dad\u0dd2\u0dc3\u0dca\u0dae\u0dcf\u0db4\u0db1\u0dba \u0d9a\u0dbb\u0db1\u0dca\u0db1",
+"Replace with": "\u0db8\u0dd9\u0dba \u0dc3\u0db8\u0d9f \u0db4\u0dca\u200d\u0dbb\u0dad\u0dd2\u0dc3\u0dca\u0dae\u0dcf\u0db4\u0db1\u0dba \u0d9a\u0dbb\u0db1\u0dca\u0db1",
+"Find": "\u0dc3\u0ddc\u0dba\u0db1\u0dca\u0db1",
+"Replace all": "\u0dc3\u0dd2\u0dba\u0dbd\u0dca\u0dbd\u0db8 \u0db4\u0dca\u200d\u0dbb\u0dad\u0dd2\u0dc3\u0dca\u0dae\u0dcf\u0db4\u0db1\u0dba \u0d9a\u0dbb\u0db1\u0dca\u0db1",
+"Match case": "\u0d9a\u0dcf\u0dbb\u0dab\u0dba \u0d9c\u0dbd\u0db4\u0db1\u0dca\u0db1",
+"Prev": "\u0db4\u0dd9\u0dbb",
+"Spellcheck": "\u0d85\u0d9a\u0dca\u0dc2\u0dbb \u0dc0\u0dd2\u0db1\u0dca\u200d\u0dba\u0dcf\u0dc3\u0dba \u0db4\u0dbb\u0dd3\u0d9a\u0dca\u0dc2\u0dcf \u0d9a\u0dbb \u0db6\u0dd0\u0dbd\u0dd3\u0db8",
+"Finish": "\u0d85\u0dc0\u0dc3\u0db1\u0dca",
+"Ignore all": "\u0dc3\u0dd2\u0dba\u0dbd\u0dca\u0dbd\u0db8 \u0db1\u0ddc\u0dc3\u0dbd\u0d9a\u0dcf \u0dc4\u0dbb\u0dd2\u0db1\u0dca\u0db1",
+"Ignore": "\u0db1\u0ddc\u0dc3\u0dbd\u0d9a\u0dcf \u0dc4\u0dd0\u0dbb\u0dd3\u0db8",
+"Insert row before": "\u0db8\u0dda \u0dad\u0dd0\u0db1\u0da7 \u0db4\u0dd9\u0dbb \u0db4\u0dda\u0dc5\u0dd2\u0dba\u0d9a\u0dca \u0d91\u0d9a\u0dca \u0d9a\u0dbb\u0db1\u0dca\u0db1",
+"Rows": "\u0db4\u0dda\u0dc5\u0dd2",
+"Height": "\u0d8b\u0dc3 ",
+"Paste row after": "\u0db8\u0dda \u0dad\u0dd0\u0db1\u0da7 \u0db4\u0dc3\u0dd4 \u0db4\u0dda\u0dc5\u0dd2\u0dba \u0d85\u0db8\u0dd4\u0dab\u0db1\u0dca\u0db1 ",
+"Alignment": "\u0db4\u0dd9\u0dc5 \u0d9c\u0dd0\u0dc3\u0dd4\u0db8",
+"Column group": "\u0dad\u0dd3\u0dbb\u0dd4 \u0d9a\u0dcf\u0dab\u0dca\u0da9\u0dba",
+"Row": "\u0db4\u0dda\u0dc5\u0dd2\u0dba ",
+"Insert column before": "\u0db8\u0dda \u0dad\u0dd0\u0db1\u0da7 \u0db4\u0dd9\u0dbb \u0dad\u0dd3\u0dbb\u0dd4\u0dc0 \u0d91\u0d9a\u0dca \u0d9a\u0dbb\u0db1\u0dca\u0db1",
+"Split cell": "\u0d9a\u0ddc\u0da7\u0dd4 \u0dc0\u0dd9\u0db1\u0dca\u0d9a\u0dbb\u0db1\u0dca\u0db1 ",
+"Cell padding": "\u0d9a\u0ddc\u0da7\u0dd4\u0dc0\u0dd9\u0dc4\u0dd2 \u0db4\u0dd2\u0dbb\u0dc0\u0dd4\u0db8",
+"Cell spacing": "\u0d9a\u0ddc\u0da7\u0dd4\u0dc0\u0dd9\u0dc4\u0dd2 \u0d89\u0da9 \u0dc3\u0dd3\u0db8\u0dcf\u0dc0 ",
+"Row type": "\u0db4\u0dda\u0dc5\u0dd2\u0dba\u0dd9\u0dc4\u0dd2 \u0dc0\u0dbb\u0dca\u0d9c\u0dba",
+"Insert table": "\u0dc0\u0d9c\u0dd4\u0dc0\u0da7 \u0d87\u0dad\u0dd4\u0dbd\u0dca \u0d9a\u0dbb\u0db1\u0dca\u0db1 ",
+"Body": "\u0db4\u0dca\u200d\u0dbb\u0db0\u0dcf\u0db1 \u0d9a\u0ddc\u0da7\u0dc3",
+"Caption": "\u0dba\u0da7\u0dd2 \u0dbd\u0dd2\u0dba\u0db8\u0db1 ",
+"Footer": "\u0db4\u0dcf\u0daf\u0d9a\u0dba",
+"Delete row": "\u0db4\u0dda\u0dc5\u0dd2\u0dba \u0db8\u0d9a\u0db1\u0dca\u0db1 ",
+"Paste row before": "\u0db8\u0dda \u0dad\u0dd0\u0db1\u0da7 \u0db4\u0dd9\u0dbb \u0db4\u0dda\u0dc5\u0dd2\u0dba \u0d85\u0db8\u0dd4\u0dab\u0db1\u0dca\u0db1 ",
+"Scope": "\u0dc0\u0dd2\u0dc2\u0dba\u0db4\u0dae\u0dba",
+"Delete table": "\u0dc0\u0d9c\u0dd4\u0dc0 \u0db8\u0d9a\u0db1\u0dca\u0db1 ",
+"Header cell": "\u0dc1\u0dd3\u0dbb\u0dca\u0dc2 \u0d9a\u0ddc\u0da7\u0dd4\u0dc0",
+"Column": "\u0dad\u0dd3\u0dbb\u0dd4\u0dc0",
+"Cell": "\u0d9a\u0ddc\u0da7\u0dd4\u0dc0 ",
+"Header": "\u0dc1\u0dd3\u0dbb\u0dca\u0dc2\u0d9a\u0dba",
+"Cell type": "\u0d9a\u0ddc\u0da7\u0dd4\u0dc0\u0dd9\u0dc4\u0dd2 \u0dc0\u0dbb\u0dca\u0d9c\u0dba",
+"Copy row": "\u0db4\u0dda\u0dc5\u0dd2\u0dba \u0db4\u0dd2\u0da7\u0db4\u0dad\u0dca \u0d9a\u0dbb\u0d9c\u0db1\u0dca\u0db1 ",
+"Row properties": "\u0db4\u0dda\u0dc5\u0dd2\u0dba\u0dd9\u0dc4\u0dd2 \u0d9c\u0dd4\u0dab\u0dcf\u0d82\u0d9c ",
+"Table properties": "\u0dc0\u0d9c\u0dd4\u0dc0\u0dd9\u0dc4\u0dd2 \u0d9c\u0dd4\u0dab\u0dcf\u0d82\u0d9c ",
+"Row group": "\u0db4\u0dda\u0dc5\u0dd2 \u0d9a\u0dcf\u0dab\u0dca\u0da9\u0dba",
+"Right": "\u0daf\u0d9a\u0dd4\u0dab",
+"Insert column after": "\u0db8\u0dda \u0dad\u0dd0\u0db1\u0da7 \u0db4\u0dc3\u0dd4 \u0dad\u0dd3\u0dbb\u0dd4\u0dc0 \u0d91\u0d9a\u0dca \u0d9a\u0dbb\u0db1\u0dca\u0db1 ",
+"Cols": "\u0dad\u0dd3\u0dbb\u0dd4 ",
+"Insert row after": "\u0db8\u0dda \u0dad\u0dd0\u0db1\u0da7 \u0db4\u0dc3\u0dd4 \u0db4\u0dda\u0dc5\u0dd2\u0dba\u0d9a\u0dca \u0d91\u0d9a\u0dca \u0d9a\u0dbb\u0db1\u0dca\u0db1 ",
+"Width": "\u0db4\u0dc5\u0dbd",
+"Cell properties": "\u0d9a\u0ddc\u0da7\u0dd4\u0dc0\u0dd9\u0dc4\u0dd2 \u0d9c\u0dd4\u0dab\u0dcf\u0d82\u0d9c ",
+"Left": "\u0dc0\u0db8",
+"Cut row": "\u0db4\u0dda\u0dc5\u0dd2\u0dba \u0d9a\u0db4\u0dcf\u0d9c\u0db1\u0dca\u0db1 ",
+"Delete column": "\u0dad\u0dd3\u0dbb\u0dd4\u0dc0 \u0db8\u0d9a\u0db1\u0dca\u0db1 ",
+"Center": "\u0db8\u0dd0\u0daf",
+"Merge cells": "\u0d9a\u0ddc\u0da7\u0dd4 \u0d91\u0d9a\u0dca \u0d9a\u0dbb\u0db1\u0dca\u0db1 ",
+"Insert template": "\u0d85\u0da0\u0dca\u0da0\u0dd4\u0dc0 \u0d87\u0dad\u0dd4\u0dbd\u0dca \u0d9a\u0dbb\u0db1\u0dca\u0db1",
+"Templates": "\u0d85\u0da0\u0dca\u0da0\u0dd4",
+"Background color": "\u0db4\u0dc3\u0dd4\u0db6\u0dd2\u0db8\u0dd9\u0dc4\u0dd2 \u0dc0\u0dbb\u0dca\u0dab\u0dba",
+"Text color": "\u0db4\u0dd9\u0dc5 \u0dc3\u0da7\u0dc4\u0db1\u0dda \u0dc0\u0dbb\u0dca\u0dab\u0dba",
+"Show blocks": "\u0d9a\u0ddc\u0da7\u0dc3\u0dca \u0db4\u0dd9\u0db1\u0dca\u0dc0\u0db1\u0dca\u0db1",
+"Show invisible characters": "\u0db1\u0ddc\u0db4\u0dd9\u0db1\u0dd9\u0db1 \u0d85\u0db1\u0dd4\u0dbd\u0d9a\u0dd4\u0dab\u0dd4 \u0db4\u0dd9\u0db1\u0dca\u0dc0\u0db1\u0dca\u0db1",
+"Words: {0}": "\u0dc0\u0da0\u0db1: {0}",
+"Insert": "\u0d91\u0d9a\u0dca \u0d9a\u0dbb\u0db1\u0dca\u0db1",
+"File": "\u0d9c\u0ddc\u0db1\u0dd4\u0dc0",
+"Edit": "\u0dc3\u0d9a\u0dc3\u0db1\u0dca\u0db1",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u0db4\u0dd9\u0dc5 \u0dc3\u0da7\u0dc4\u0db1\u0dca \u0db6\u0dc4\u0dd4\u0dbd \u0db4\u0dca\u200d\u0dbb\u0daf\u0dda\u0dc1\u0dba. \u0db8\u0dd9\u0db1\u0dd4\u0dc0 \u0dc3\u0db3\u0dc4\u0dcf ALT-F9 \u0d94\u0db6\u0db1\u0dca\u0db1. \u0db8\u0dd9\u0dc0\u0dbd\u0db8\u0dca \u0dad\u0dd3\u0dbb\u0dd4\u0dc0 \u0dc3\u0db3\u0dc4\u0dcf ALT-F10 \u0d94\u0db6\u0db1\u0dca\u0db1. \u0dc3\u0dc4\u0dba \u0dbd\u0db6\u0dcf\u0d9c\u0dd0\u0db1\u0dd3\u0db8 \u0dc3\u0db3\u0dc4\u0dcf ALT-0 \u0d94\u0db6\u0db1\u0dca\u0db1.",
+"Tools": "\u0db8\u0dd9\u0dc0\u0dbd\u0db8\u0dca",
+"View": "\u0db4\u0dd9\u0db1\u0dca\u0dc0\u0db1\u0dca\u0db1",
+"Table": "\u0dc0\u0d9c\u0dd4\u0dc0",
+"Format": "\u0dc4\u0dd0\u0da9\u0dad\u0dbd\u0dba"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/sk.js b/program/js/tinymce/langs/sk.js
new file mode 100644
index 000000000..fbf5ed4dd
--- /dev/null
+++ b/program/js/tinymce/langs/sk.js
@@ -0,0 +1,197 @@
+tinymce.addI18n('sk',{
+"Cut": "Vystrihn\u00fa\u0165",
+"Heading 5": "Nadpis 5",
+"Header 2": "Nadpis 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "V\u00e1\u0161 prehliada\u010d nepodporuje priamy pr\u00edstup do schr\u00e1nky. Pou\u017eite kl\u00e1vesov\u00e9 skratky Ctrl+X\/C\/V.",
+"Heading 4": "Nadpis 4",
+"Div": "Blok",
+"Heading 2": "Nadpis 2",
+"Paste": "Vlo\u017ei\u0165",
+"Close": "Zatvori\u0165",
+"Font Family": "P\u00edsmo",
+"Pre": "Preform\u00e1tovan\u00fd",
+"Align right": "Zarovna\u0165 vpravo",
+"New document": "Nov\u00fd dokument",
+"Blockquote": "Cit\u00e1cia",
+"Numbered list": "\u010c\u00edslovan\u00fd zoznam",
+"Heading 1": "Nadpis 1",
+"Headings": "Nadpisy",
+"Increase indent": "Zv\u00e4\u010d\u0161i\u0165 odsadenie",
+"Formats": "Form\u00e1ty",
+"Headers": "Nadpisy",
+"Select all": "Ozna\u010di\u0165 v\u0161etko",
+"Header 3": "Nadpis 3",
+"Blocks": "Bloky",
+"Undo": "Vr\u00e1ti\u0165",
+"Strikethrough": "Pre\u010diarknut\u00e9",
+"Bullet list": "Odr\u00e1\u017eky",
+"Header 1": "Nadpis 1",
+"Superscript": "Horn\u00fd index",
+"Clear formatting": "Vymaza\u0165 form\u00e1tovanie",
+"Font Sizes": "Ve\u013ekos\u0165 p\u00edsma",
+"Subscript": "Spodn\u00fd index",
+"Header 6": "Nadpis 6",
+"Redo": "Znova",
+"Paragraph": "Odsek",
+"Ok": "Ok",
+"Bold": "Tu\u010dn\u00e9",
+"Code": "K\u00f3d",
+"Italic": "Kurz\u00edva",
+"Align center": "Zarovna\u0165 na stred",
+"Header 5": "Nadpis 5",
+"Heading 6": "Nadpis 6",
+"Heading 3": "Nadpis 3",
+"Decrease indent": "Zmen\u0161i\u0165 odsadenie",
+"Header 4": "Nadpis 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Vkladanie je v m\u00f3de neform\u00e1tovan\u00e9ho textu. Vkladan\u00fd obsah bude vlo\u017een\u00fd ako neform\u00e1tovan\u00fd, a\u017e pok\u00fdm t\u00fato mo\u017enos\u0165 nevypnete.",
+"Underline": "Pod\u010diarknut\u00e9",
+"Cancel": "Zru\u0161i\u0165",
+"Justify": "Zarovna\u0165",
+"Inline": "\u0160t\u00fdly",
+"Copy": "Kop\u00edrova\u0165",
+"Align left": "Zarovna\u0165 v\u013eavo",
+"Visual aids": "Vizu\u00e1lne pom\u00f4cky",
+"Lower Greek": "Mal\u00e9 gr\u00e9cke p\u00edsmen\u00e1",
+"Square": "\u0160tvorec",
+"Default": "V\u00fdchodzie",
+"Lower Alpha": "Mal\u00e9 p\u00edsmen\u00e1",
+"Circle": "Kruh",
+"Disc": "Disk",
+"Upper Alpha": "Ve\u013ek\u00e9 p\u00edsmen\u00e1",
+"Upper Roman": "Ve\u013ek\u00e9 r\u00edmske \u010d\u00edslice",
+"Lower Roman": "Mal\u00e9 r\u00edmske \u010d\u00edslice",
+"Name": "N\u00e1zov",
+"Anchor": "Odkaz",
+"You have unsaved changes are you sure you want to navigate away?": "M\u00e1te neulo\u017een\u00e9 zmeny, naozaj chcete opusti\u0165 str\u00e1nku?",
+"Restore last draft": "Obnovi\u0165 posledn\u00fd koncept",
+"Special character": "\u0160peci\u00e1lny znak",
+"Source code": "Zdrojov\u00fd k\u00f3d",
+"Color": "Farba",
+"Right to left": "Sprava do\u013eava",
+"Left to right": "Z\u013eava doprava",
+"Emoticons": "Smajl\u00edci",
+"Robots": "Preh\u013ead\u00e1vacie roboty",
+"Document properties": "Vlastnosti dokumentu",
+"Title": "Nadpis",
+"Keywords": "K\u013e\u00fa\u010dov\u00e9 slov\u00e1",
+"Encoding": "K\u00f3dovanie",
+"Description": "Popis",
+"Author": "Autor",
+"Fullscreen": "Na cel\u00fa obrazovku",
+"Horizontal line": "Horizont\u00e1lna \u010diara",
+"Horizontal space": "Horizont\u00e1lny priestor",
+"Insert\/edit image": "Vlo\u017ei\u0165\/upravi\u0165 obr\u00e1zok",
+"General": "Hlavn\u00e9",
+"Advanced": "Pokro\u010dil\u00e9",
+"Source": "Zdroj",
+"Border": "Or\u00e1movanie",
+"Constrain proportions": "Vymedzen\u00e9 proporcie",
+"Vertical space": "Vertik\u00e1lny priestor",
+"Image description": "Popis obr\u00e1zku",
+"Style": "\u0160t\u00fdl",
+"Dimensions": "Rozmery",
+"Insert image": "Vlo\u017ei\u0165 obr\u00e1zok",
+"Insert date\/time": "Vlo\u017ei\u0165 d\u00e1tum\/\u010das",
+"Remove link": "Odstr\u00e1ni\u0165 odkaz",
+"Url": "Url",
+"Text to display": "Zobrazen\u00fd text",
+"Anchors": "Kotvy",
+"Insert link": "Vlo\u017ei\u0165 odkaz",
+"New window": "Nov\u00e9 okno",
+"None": "\u017diadne",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "URL adresa ktor\u00fa ste zadali vyzer\u00e1 ako extern\u00fd link. Chcete prida\u0165 vy\u017eadovan\u00fa http:\/\/ predponu?",
+"Target": "Cie\u013e",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "URL, ktor\u00fa ste vlo\u017eili je pravdepodobne emailov\u00e1 adresa. \u017del\u00e1te si prida\u0165 vy\u017eadov\u00fa mailto: predponu?",
+"Insert\/edit link": "Vlo\u017ei\u0165\/upravi\u0165 odkaz",
+"Insert\/edit video": "Vlo\u017ei\u0165\/upravi\u0165 video",
+"Poster": "Uk\u00e1\u017eka",
+"Alternative source": "Alternat\u00edvny zdroj",
+"Paste your embed code below:": "Vlo\u017ete k\u00f3d pre vlo\u017eenie na str\u00e1nku:",
+"Insert video": "Vlo\u017ei\u0165 video",
+"Embed": "Vlo\u017een\u00e9",
+"Nonbreaking space": "Nedelite\u013en\u00e1 medzera",
+"Page break": "Zalomenie str\u00e1nky",
+"Paste as text": "Vlo\u017ei\u0165 ako text",
+"Preview": "N\u00e1h\u013ead",
+"Print": "Tla\u010di\u0165",
+"Save": "Ulo\u017ei\u0165",
+"Could not find the specified string.": "Zadan\u00fd re\u0165azec sa nena\u0161iel.",
+"Replace": "Nahradi\u0165",
+"Next": "Nasleduj\u00face",
+"Whole words": "Cel\u00e9 slov\u00e1",
+"Find and replace": "Vyh\u013eada\u0165 a nahradi\u0165",
+"Replace with": "Nahradi\u0165 za",
+"Find": "H\u013eada\u0165",
+"Replace all": "Nahradi\u0165 v\u0161etko",
+"Match case": "Rozli\u0161ova\u0165 ve\u013ek\u00e9\/mal\u00e9",
+"Prev": "Predch\u00e1dzaj\u00face",
+"Spellcheck": "Kontrola pravopisu",
+"Finish": "Dokon\u010di\u0165",
+"Ignore all": "Ignorova\u0165 v\u0161etko",
+"Ignore": "Ignorova\u0165",
+"Add to Dictionary": "Prida\u0165 do slovn\u00edka",
+"Insert row before": "Vlo\u017ei\u0165 nov\u00fd riadok pred",
+"Rows": "Riadky",
+"Height": "V\u00fd\u0161ka",
+"Paste row after": "Vlo\u017ei\u0165 riadok za",
+"Alignment": "Zarovnanie",
+"Border color": "Farba or\u00e1movania",
+"Column group": "Skupina st\u013apcov",
+"Row": "Riadok",
+"Insert column before": "Prida\u0165 nov\u00fd st\u013apec pred",
+"Split cell": "Rozdeli\u0165 bunku",
+"Cell padding": "Odsadenie v bunk\u00e1ch",
+"Cell spacing": "Priestor medzi bunkami",
+"Row type": "Typ riadku",
+"Insert table": "Vlo\u017ei\u0165 tabu\u013eku",
+"Body": "Telo",
+"Caption": "Popisok",
+"Footer": "P\u00e4ti\u010dka",
+"Delete row": "Zmaza\u0165 riadok",
+"Paste row before": "Vlo\u017ei\u0165 riadok pred",
+"Scope": "Oblas\u0165",
+"Delete table": "Zmaza\u0165 tabu\u013eku",
+"H Align": "Horizont\u00e1lne zarovnanie",
+"Top": "Vrch",
+"Header cell": "Bunka z\u00e1hlavia",
+"Column": "St\u013apec",
+"Row group": "Skupina riadkov",
+"Cell": "Bunka",
+"Middle": "Stred",
+"Cell type": "Typ bunky",
+"Copy row": "Kop\u00edrova\u0165 riadok",
+"Row properties": "Vlastnosti riadku",
+"Table properties": "Nastavenia tabu\u013eky",
+"Bottom": "Spodok",
+"V Align": "Vertik\u00e1lne zarovnanie",
+"Header": "Z\u00e1hlavie",
+"Right": "Vpravo",
+"Insert column after": "Prida\u0165 nov\u00fd st\u013apec za",
+"Cols": "St\u013apce",
+"Insert row after": "Vlo\u017ei\u0165 nov\u00fd riadok za",
+"Width": "\u0160\u00edrka",
+"Cell properties": "Vlastnosti bunky",
+"Left": "V\u013eavo",
+"Cut row": "Vystrihn\u00fa\u0165 riadok",
+"Delete column": "Vymaza\u0165 st\u013apec",
+"Center": "Na stred",
+"Merge cells": "Spoji\u0165 bunky",
+"Insert template": "Vlo\u017ei\u0165 \u0161abl\u00f3nu",
+"Templates": "\u0160abl\u00f3ny",
+"Background color": "Farba pozadia",
+"Custom...": "Vlastn\u00e1...",
+"Custom color": "Vlastn\u00e1 farba",
+"No color": "Bez farby",
+"Text color": "Farba textu",
+"Show blocks": "Zobrazi\u0165 bloky",
+"Show invisible characters": "Zobrazi\u0165 skryt\u00e9 znaky",
+"Words: {0}": "Slov: {0}",
+"Insert": "Vlo\u017ei\u0165",
+"File": "S\u00fabor",
+"Edit": "Upravi\u0165",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Textov\u00e9 pole. Stla\u010dte ALT-F9 pre zobrazenie menu, ALT-F10 pre zobrazenie panela n\u00e1strojov, ALT-0 pre n\u00e1povedu.",
+"Tools": "N\u00e1stroje",
+"View": "Zobrazi\u0165",
+"Table": "Tabu\u013eka",
+"Format": "Form\u00e1t"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/sl_SI.js b/program/js/tinymce/langs/sl_SI.js
new file mode 100644
index 000000000..b4a71dfd6
--- /dev/null
+++ b/program/js/tinymce/langs/sl_SI.js
@@ -0,0 +1,179 @@
+tinymce.addI18n('sl_SI',{
+"Cut": "Izre\u017ei",
+"Header 2": "Naslov 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Varnostne nastavitve brskalnika ne dopu\u0161\u010dajo direktnega dostopa do odlo\u017ei\u0161\u010da. Uporabite kombinacijo tipk Ctrl+X\/C\/V na tipkovnici.",
+"Div": "Div",
+"Paste": "Prilepi",
+"Close": "Zapri",
+"Font Family": "Dru\u017eina tipografije",
+"Pre": "Predformat",
+"Align right": "Desna poravnava",
+"New document": "Nov dokument",
+"Blockquote": "Zamik besedila",
+"Numbered list": "O\u0161tevil\u010den seznam",
+"Increase indent": "Pove\u010daj zamik",
+"Formats": "Oblika",
+"Headers": "Naslovi",
+"Select all": "Izberi vse",
+"Header 3": "Naslov 3",
+"Blocks": "Grupe",
+"Undo": "Razveljavi",
+"Strikethrough": "Pre\u010drtano",
+"Bullet list": "Ozna\u010den seznam",
+"Header 1": "Naslov 1",
+"Superscript": "Nadpisano",
+"Clear formatting": "Odstrani oblikovanje",
+"Font Sizes": "Velikosti tipografije",
+"Subscript": "Podpisano",
+"Header 6": "Naslov 6",
+"Redo": "Ponovi",
+"Paragraph": "Odstavek",
+"Ok": "V redu",
+"Bold": "Krepko",
+"Code": "Koda",
+"Italic": "Le\u017ee\u010de",
+"Align center": "Sredinska poravnava",
+"Header 5": "Naslov 5",
+"Decrease indent": "Zmanj\u0161aj zamik",
+"Header 4": "Naslov 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Odlagali\u0161\u010de je zdaj v tekstovnem na\u010dinu. Vsebina bo preslikana kot golo besedilo brez oblike, dokler te mo\u017enosti ne izklju\u010dite.",
+"Underline": "Pod\u010drtano",
+"Cancel": "Prekli\u010di",
+"Justify": "Obojestranska poravnava",
+"Inline": "Med besedilom",
+"Copy": "Kopiraj",
+"Align left": "Leva poravnava",
+"Visual aids": "Vizualni pripomo\u010dki",
+"Lower Greek": "Male gr\u0161ke \u010drke",
+"Square": "Kvadratek",
+"Default": "Privzeto",
+"Lower Alpha": "Male tiskane \u010drke",
+"Circle": "Pikica",
+"Disc": "Kroglica",
+"Upper Alpha": "Velike tiskane \u010drke",
+"Upper Roman": "Velike rimske \u0161tevilke",
+"Lower Roman": "Male rimske \u0161tevilke",
+"Name": "Naziv zaznamka",
+"Anchor": "Zaznamek",
+"You have unsaved changes are you sure you want to navigate away?": "Imate neshranjene spremembe. Ste prepri\u010dati, da \u017eelite zapustiti stran?",
+"Restore last draft": "Obnovi zadnji osnutek",
+"Special character": "Posebni znaki",
+"Source code": "Izvorna koda",
+"Right to left": "Od desne proti levi",
+"Left to right": "Od leve proti desni",
+"Emoticons": "Sme\u0161ki",
+"Robots": "Robotki",
+"Document properties": "Lastnosti dokumenta",
+"Title": "Naslov",
+"Keywords": "Klju\u010dne besede",
+"Encoding": "Kodiranje",
+"Description": "Opis",
+"Author": "Avtor",
+"Fullscreen": "\u010cez cel zaslon",
+"Horizontal line": "Vodoravna \u010drta",
+"Horizontal space": "Vodoravni prostor",
+"Insert\/edit image": "Vstavi\/uredi sliko",
+"General": "Splo\u0161no",
+"Advanced": "Napredno",
+"Source": "Pot",
+"Border": "Obroba",
+"Constrain proportions": "Obdr\u017ei razmerje",
+"Vertical space": "Navpi\u010dni prostor",
+"Image description": "Opis slike",
+"Style": "Slog",
+"Dimensions": "Dimenzije",
+"Insert image": "Vnesi sliko",
+"Insert date\/time": "Vstavi datum\/\u010das",
+"Remove link": "Odstrani povezavo",
+"Url": "Povezava",
+"Text to display": "Prikazno besedilo",
+"Anchors": "Sidra",
+"Insert link": "Vstavi povezavo",
+"New window": "Novo okno",
+"None": "Brez",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?",
+"Target": "Cilj",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",
+"Insert\/edit link": "Vstavi\/uredi povezavo",
+"Insert\/edit video": "Vstavi\/uredi video",
+"Poster": "Poster",
+"Alternative source": "Nadomestni vir",
+"Paste your embed code below:": "Prilepite kodo za vdelavo:",
+"Insert video": "Vstavi video",
+"Embed": "Vdelaj",
+"Nonbreaking space": "Nedeljivi presledek",
+"Page break": "Prelom strani",
+"Paste as text": "Vnesi kot besedilo",
+"Preview": "Predogled",
+"Print": "Natisni",
+"Save": "Shrani",
+"Could not find the specified string.": "Iskanje ni vrnilo rezultatov.",
+"Replace": "Zamenjaj",
+"Next": "Naprej",
+"Whole words": "Cele besede",
+"Find and replace": "Poi\u0161\u010di in zamenjaj",
+"Replace with": "Zamenjaj z",
+"Find": "I\u0161\u010di",
+"Replace all": "Zamenjaj vse",
+"Match case": "Ujemanje malih in velikih \u010drk",
+"Prev": "Nazaj",
+"Spellcheck": "Preverjanje \u010drkovanja",
+"Finish": "Zaklju\u010di",
+"Ignore all": "Prezri vse",
+"Ignore": "Prezri",
+"Insert row before": "Vstavi vrstico pred",
+"Rows": "Vrstice",
+"Height": "Vi\u0161ina",
+"Paste row after": "Prilepi vrstico za",
+"Alignment": "Poravnava",
+"Column group": "Grupiranje stolpcev",
+"Row": "Vrstica",
+"Insert column before": "Vstavi stolpec pred",
+"Split cell": "Razdeli celico",
+"Cell padding": "Polnilo med celicami",
+"Cell spacing": "Razmik med celicami",
+"Row type": "Tip vrstice",
+"Insert table": "Vstavi tabelo",
+"Body": "Vsebina",
+"Caption": "Naslov",
+"Footer": "Noga",
+"Delete row": "Izbri\u0161i vrstico",
+"Paste row before": "Prilepi vrstico pred",
+"Scope": "Obseg",
+"Delete table": "Izbri\u0161i tabelo",
+"Header cell": "Celica glave",
+"Column": "Stolpec",
+"Cell": "Celica",
+"Header": "Glava",
+"Cell type": "Tip celice",
+"Copy row": "Kopiraj vrstico",
+"Row properties": "Lastnosti vrstice",
+"Table properties": "Lastnosti tabele",
+"Row group": "Grupiranje vrstic",
+"Right": "Desno",
+"Insert column after": "Vstavi stolpec za",
+"Cols": "Stolpci",
+"Insert row after": "Vstavi vrstico za",
+"Width": "\u0160irina",
+"Cell properties": "Lastnosti celice",
+"Left": "Levo",
+"Cut row": "Izre\u017ei vrstico",
+"Delete column": "Izbri\u0161i stolpec",
+"Center": "Sredinsko",
+"Merge cells": "Zdru\u017ei celice",
+"Insert template": "Vstavi predlogo",
+"Templates": "Predloge",
+"Background color": "Barva ozadja",
+"Text color": "Barva besedila",
+"Show blocks": "Prika\u017ei bloke",
+"Show invisible characters": "Prika\u017ei skrite znake",
+"Words: {0}": "Besed: {0}",
+"Insert": "Vstavi",
+"File": "Datoteka",
+"Edit": "Uredi",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Bogato besedilo. Pritisnite ALT-F9 za meni. Pritisnite ALT-F10 za orodno vrstico. Pritisnite ALT-0 za pomo\u010d",
+"Tools": "Orodja",
+"View": "Pogled",
+"Table": "Tabela",
+"Format": "Oblika"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/sr.js b/program/js/tinymce/langs/sr.js
new file mode 100644
index 000000000..ef7240453
--- /dev/null
+++ b/program/js/tinymce/langs/sr.js
@@ -0,0 +1,179 @@
+tinymce.addI18n('sr',{
+"Cut": "Iseci",
+"Header 2": "Zaglavlje 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Va\u0161 pretra\u017eiva\u010d nepodr\u017eava direktan pristup prenosu.Koristite Ctrl+X\/C\/V pre\u010dice na tastaturi",
+"Div": "Div",
+"Paste": "Nalepi",
+"Close": "Zatvori",
+"Font Family": "Vrsta fonta",
+"Pre": "Pre",
+"Align right": "Poravnano desno",
+"New document": "Novi dokument",
+"Blockquote": "Navodnici",
+"Numbered list": "Numerisana lista",
+"Increase indent": "Pove\u0107aj uvla\u010denje",
+"Formats": "Formatiraj",
+"Headers": "Zaglavlje",
+"Select all": "Obele\u017ei sve",
+"Header 3": "Zaglavlje 3",
+"Blocks": "Blokovi",
+"Undo": "Nazad",
+"Strikethrough": "Precrtan",
+"Bullet list": "Lista nabrajanja",
+"Header 1": "Zaglavlje 1",
+"Superscript": "Natpis",
+"Clear formatting": "Brisanje formatiranja",
+"Font Sizes": "Veli\u010dine fontova",
+"Subscript": "Potpisan",
+"Header 6": "Zaglavlje 6",
+"Redo": "Napred",
+"Paragraph": "Paragraf",
+"Ok": "Ok",
+"Bold": "Podebljan",
+"Code": "Kod",
+"Italic": "isko\u0161en",
+"Align center": "Poravnano centar",
+"Header 5": "Zaglavlje 5",
+"Decrease indent": "Smanji uvla\u010denje",
+"Header 4": "Zaglavlje 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Nalepiti je sada u obi\u010dnom text modu.Sadr\u017eaj \u0107e biti nalepljen kao obi\u010dan tekst dok ne ugasite ovu opciju.",
+"Underline": "Podvu\u010den",
+"Cancel": "Opozovi",
+"Justify": "Poravnanje",
+"Inline": "U liniji",
+"Copy": "Kopiraj",
+"Align left": "Poravnano levo",
+"Visual aids": "Vizuelna pomagala",
+"Lower Greek": "Ni\u017ei gr\u010dki",
+"Square": "Kvadrat",
+"Default": "Podrazumevano",
+"Lower Alpha": "Donja Alpha",
+"Circle": "Krug",
+"Disc": "Disk",
+"Upper Alpha": "Gornji Alpha",
+"Upper Roman": "Gornji Roman",
+"Lower Roman": "Donji Roman",
+"Name": "Ime",
+"Anchor": "Sidro",
+"You have unsaved changes are you sure you want to navigate away?": "Imate nesa\u010duvane promene dali ste sigurni da \u017eelite da iza\u0111ete?",
+"Restore last draft": "Vrati poslednji nacrt",
+"Special character": "Specijalni karakter",
+"Source code": "Izvorni kod",
+"Right to left": "Sa desne na levu",
+"Left to right": "Sa leve na desnu",
+"Emoticons": "Smajliji",
+"Robots": "Roboti",
+"Document properties": "Postavke dokumenta",
+"Title": "Naslov",
+"Keywords": "Klju\u010dne re\u010di",
+"Encoding": "Kodiranje",
+"Description": "Opis",
+"Author": "Autor",
+"Fullscreen": "Pun ekran",
+"Horizontal line": "Horizontalna linija",
+"Horizontal space": "Horizontalni razmak",
+"Insert\/edit image": "Ubaci\/Promeni sliku",
+"General": "Op\u0161te",
+"Advanced": "Napredno",
+"Source": "Izvor",
+"Border": "Okvir",
+"Constrain proportions": "Ograni\u010dene proporcije",
+"Vertical space": "Vertikalni razmak",
+"Image description": "Opis slike",
+"Style": "Stil",
+"Dimensions": "Dimenzije",
+"Insert image": "Ubaci sliku",
+"Insert date\/time": "Ubaci datum\/vreme",
+"Remove link": "Ukloni link",
+"Url": "Url",
+"Text to display": "Tekst za prikaz",
+"Anchors": "sidro",
+"Insert link": "Ubaci vezu",
+"New window": "Novi prozor",
+"None": "Ni\u0161ta",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?",
+"Target": "Meta",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",
+"Insert\/edit link": "Ubaci\/promeni vezu",
+"Insert\/edit video": "Ubaci\/promeni video",
+"Poster": "Poster",
+"Alternative source": "Alternativni izvor",
+"Paste your embed code below:": "Nalepite ugra\u0111eni kod ispod:",
+"Insert video": "Ubaci video",
+"Embed": "Ugra\u0111eno",
+"Nonbreaking space": "bez ramaka",
+"Page break": "Lomljenje stranice",
+"Paste as text": "Nalepi kao tekst",
+"Preview": "Pregled",
+"Print": "\u0160tampanje",
+"Save": "Sa\u010duvati",
+"Could not find the specified string.": "Nije mogu\u0107e prona\u0107i navedeni niz.",
+"Replace": "Zameni",
+"Next": "Slede\u0107i",
+"Whole words": "Cele re\u010di",
+"Find and replace": "Na\u0111i i zameni",
+"Replace with": "Zameni sa",
+"Find": "Na\u0111i",
+"Replace all": "Zameni sve",
+"Match case": "Predmet za upore\u0111ivanje",
+"Prev": "Prethodni",
+"Spellcheck": "Provera pravopisa",
+"Finish": "Kraj",
+"Ignore all": "Ignori\u0161i sve",
+"Ignore": "ignori\u0161i",
+"Insert row before": "Ubaci red pre",
+"Rows": "Redovi",
+"Height": "Visina",
+"Paste row after": "Nalepi red posle",
+"Alignment": "Svrstavanje",
+"Column group": "Grupa kolone",
+"Row": "Red",
+"Insert column before": "Ubaci kolonu pre",
+"Split cell": "Razdvoji \u0107elije",
+"Cell padding": "Razmak \u0107elije",
+"Cell spacing": "Prostor \u0107elije",
+"Row type": "Tip reda",
+"Insert table": "ubaci tabelu",
+"Body": "Telo",
+"Caption": "Natpis",
+"Footer": "Podno\u017eje",
+"Delete row": "Obri\u0161i red",
+"Paste row before": "Nalepi red pre",
+"Scope": "Obim",
+"Delete table": "Obri\u0161i tabelu",
+"Header cell": "Visina \u0107elije",
+"Column": "Kolona",
+"Cell": "\u0106elija",
+"Header": "Zaglavlje",
+"Cell type": "Tip \u0107elije",
+"Copy row": "Kopiraj red",
+"Row properties": "Postavke reda",
+"Table properties": "Postavke tabele",
+"Row group": "Grupa reda",
+"Right": "Desno",
+"Insert column after": "Ubaci kolonu posle",
+"Cols": "Kolone",
+"Insert row after": "Ubaci red posle",
+"Width": "\u0160irina",
+"Cell properties": "Postavke \u0107elije",
+"Left": "Levo",
+"Cut row": "Iseci red",
+"Delete column": "Obri\u0161i kolonu",
+"Center": "Centar",
+"Merge cells": "Spoji \u0107elije",
+"Insert template": "Ubaci \u0161ablon",
+"Templates": "\u0160abloni",
+"Background color": "Boja pozadine",
+"Text color": "Boja tekst",
+"Show blocks": "Prikaz blokova",
+"Show invisible characters": "Prika\u017ei nevidljive karaktere",
+"Words: {0}": "Re\u010di:{0}",
+"Insert": "Umetni",
+"File": "Datoteka",
+"Edit": "Ure\u0111ivanje",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Oboga\u0107en tekst. Pritisni te ALT-F9 za meni.Pritisnite ALT-F10 za traku sa alatkama.Pritisnite ALT-0 za pomo\u0107",
+"Tools": "Alatke",
+"View": "Prikaz",
+"Table": "Tabela",
+"Format": "Format"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/sv_SE.js b/program/js/tinymce/langs/sv_SE.js
new file mode 100644
index 000000000..5a9e49070
--- /dev/null
+++ b/program/js/tinymce/langs/sv_SE.js
@@ -0,0 +1,197 @@
+tinymce.addI18n('sv_SE',{
+"Cut": "Klipp ut",
+"Heading 5": "Rubrik 5",
+"Header 2": "Rubrik 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Din browser st\u00f6djer inte direkt \u00e5tkomst till klippboken. V\u00e4nligen anv\u00e4nd kortkommandona Ctrl+X\/C\/V i st\u00e4llet.",
+"Heading 4": "Rubrik 4",
+"Div": "Div",
+"Heading 2": "Rubrik 2",
+"Paste": "Klistra in",
+"Close": "St\u00e4ng",
+"Font Family": "Teckensnitt",
+"Pre": "F\u00f6rformaterad",
+"Align right": "H\u00f6gerst\u00e4ll",
+"New document": "Nytt dokument",
+"Blockquote": "Blockcitat",
+"Numbered list": "Nummerlista",
+"Heading 1": "Rubrik 1",
+"Headings": "Rubriker",
+"Increase indent": "\u00d6ka indrag",
+"Formats": "Format",
+"Headers": "Rubriker",
+"Select all": "Markera allt",
+"Header 3": "Rubrik 3",
+"Blocks": "Block",
+"Undo": "\u00c5ngra",
+"Strikethrough": "Genomstruken",
+"Bullet list": "Punktlista",
+"Header 1": "Rubrik 1",
+"Superscript": "Upph\u00f6jd text",
+"Clear formatting": "Avformatera",
+"Font Sizes": "Storlek",
+"Subscript": "Neds\u00e4nkt text",
+"Header 6": "Rubrik 6",
+"Redo": "G\u00f6r om",
+"Paragraph": "Br\u00f6dtext",
+"Ok": "Ok",
+"Bold": "Fetstil",
+"Code": "Kod",
+"Italic": "Kursiv stil",
+"Align center": "Centrera",
+"Header 5": "Rubrik 5",
+"Heading 6": "Rubrik 6",
+"Heading 3": "Rubrik 3",
+"Decrease indent": "Minska indrag",
+"Header 4": "Rubrik 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Klistra in \u00e4r nu i textl\u00e4ge. Inneh\u00e5ll kommer att konverteras till text tills du sl\u00e5r av detta l\u00e4ge.",
+"Underline": "Understruken",
+"Cancel": "Avbryt",
+"Justify": "Justera",
+"Inline": "Inline",
+"Copy": "Kopiera",
+"Align left": "V\u00e4nsterst\u00e4ll",
+"Visual aids": "Visuella hj\u00e4lpmedel",
+"Lower Greek": "Grekiska gemener",
+"Square": "Fyrkant",
+"Default": "Original",
+"Lower Alpha": "Gemener",
+"Circle": "Cirkel",
+"Disc": "Disk",
+"Upper Alpha": "Versaler",
+"Upper Roman": "Romerska versaler",
+"Lower Roman": "Romerska gemener",
+"Name": "Namn",
+"Anchor": "Ankare",
+"You have unsaved changes are you sure you want to navigate away?": "Du har f\u00f6r\u00e4ndringar som du inte har sparat. \u00c4r du s\u00e4ker p\u00e5 att du vill navigera vidare?",
+"Restore last draft": "\u00c5terst\u00e4ll senaste utkast",
+"Special character": "Specialtecken",
+"Source code": "K\u00e4llkod",
+"Color": "F\u00e4rg",
+"Right to left": "H\u00f6ger till v\u00e4nster",
+"Left to right": "V\u00e4nster till h\u00f6ger",
+"Emoticons": "Emoticons",
+"Robots": "Robotar",
+"Document properties": "Dokumentegenskaper",
+"Title": "Titel",
+"Keywords": "Nyckelord",
+"Encoding": "Encoding",
+"Description": "Beskrivning",
+"Author": "F\u00f6rfattare",
+"Fullscreen": "Fullsk\u00e4rm",
+"Horizontal line": "Horisontell linje",
+"Horizontal space": "Horisontellt utrymme",
+"Insert\/edit image": "Infoga\/redigera bild",
+"General": "Generella",
+"Advanced": "Avancerat",
+"Source": "K\u00e4lla",
+"Border": "Ram",
+"Constrain proportions": "Begr\u00e4nsa proportioner",
+"Vertical space": "Vertikaltutrymme",
+"Image description": "Bildbeskrivning",
+"Style": "Stil",
+"Dimensions": "Dimensioner",
+"Insert image": "Infoga bild",
+"Insert date\/time": "Infoga datum\/tid",
+"Remove link": "Ta bort l\u00e4nk",
+"Url": "Url",
+"Text to display": "Text att visa",
+"Anchors": "Bokm\u00e4rken",
+"Insert link": "Infoga l\u00e4nk",
+"New window": "Nytt f\u00f6nster",
+"None": "Ingen",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Urlen du angav verkar vara en extern l\u00e4nk. Vill du l\u00e4gga till http:\/\/ prefixet?",
+"Target": "M\u00e5l",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Urlen du angav verkar vara en epost adress. Vill du l\u00e4gga till ett mailto: prefix?",
+"Insert\/edit link": "Infoga\/redigera l\u00e4nk",
+"Insert\/edit video": "Infoga\/redigera video",
+"Poster": "Affish",
+"Alternative source": "Alternativ k\u00e4lla",
+"Paste your embed code below:": "Klistra in din inb\u00e4ddningskod nedan:",
+"Insert video": "Infoga video",
+"Embed": "Inb\u00e4ddning",
+"Nonbreaking space": "Avbrottsfritt mellanrum",
+"Page break": "Sydbrytning",
+"Paste as text": "Klistra in som text",
+"Preview": "F\u00f6rhandsgranska",
+"Print": "Skriv ut",
+"Save": "Spara",
+"Could not find the specified string.": "Kunde inte hitta den specifierade st\u00e4ngen.",
+"Replace": "Ers\u00e4tt",
+"Next": "N\u00e4sta",
+"Whole words": "Hela ord",
+"Find and replace": "S\u00f6k och ers\u00e4tt",
+"Replace with": "Ers\u00e4tt med",
+"Find": "S\u00f6k",
+"Replace all": "Ers\u00e4tt alla",
+"Match case": "Matcha gemener\/versaler",
+"Prev": "F\u00f6reg\u00e5ende",
+"Spellcheck": "R\u00e4ttstava",
+"Finish": "Avsluta",
+"Ignore all": "Ignorera alla",
+"Ignore": "Ignorera",
+"Add to Dictionary": "L\u00e4gg till i ordlista",
+"Insert row before": "Infoga rad f\u00f6re",
+"Rows": "Rader",
+"Height": "H\u00f6jd",
+"Paste row after": "Klistra in rad efter",
+"Alignment": "Justering",
+"Border color": "Ramf\u00e4rg",
+"Column group": "Kolumngrupp",
+"Row": "Rad",
+"Insert column before": "Infoga kollumn f\u00f6re",
+"Split cell": "Bryt is\u00e4r celler",
+"Cell padding": "Cellpaddning",
+"Cell spacing": "Cellmellanrum",
+"Row type": "Radtyp",
+"Insert table": "Infoga tabell",
+"Body": "Kropp",
+"Caption": "Rubrik",
+"Footer": "Fot",
+"Delete row": "Radera rad",
+"Paste row before": "Klista in rad f\u00f6re",
+"Scope": "Omf\u00e5ng",
+"Delete table": "Radera tabell",
+"H Align": "H-justering",
+"Top": "Toppen",
+"Header cell": "Huvudcell",
+"Column": "Kolumn",
+"Row group": "Radgrupp",
+"Cell": "Cell",
+"Middle": "Mitten",
+"Cell type": "Celltyp",
+"Copy row": "Kopiera rad",
+"Row properties": "Radegenskaper",
+"Table properties": "Tabellegenskaper",
+"Bottom": "Botten",
+"V Align": "V-justering",
+"Header": "Huvud",
+"Right": "H\u00f6ger",
+"Insert column after": "Infoga kolumn efter",
+"Cols": "Kolumner",
+"Insert row after": "Infoga rad efter",
+"Width": "Bredd",
+"Cell properties": "Cellegenskaper",
+"Left": "V\u00e4nster",
+"Cut row": "Klipp ut rad",
+"Delete column": "Radera kolumn",
+"Center": "Centrum",
+"Merge cells": "Sammanfoga celler",
+"Insert template": "Infoga mall",
+"Templates": "Mallar",
+"Background color": "Bakgrundsf\u00e4rg",
+"Custom...": "Anpassad...",
+"Custom color": "Anpassad f\u00e4rg",
+"No color": "Ingen f\u00e4rg",
+"Text color": "Textf\u00e4rg",
+"Show blocks": "Visa block",
+"Show invisible characters": "Visa onsynliga tecken",
+"Words: {0}": "Ord: {0}",
+"Insert": "Infoga",
+"File": "Fil",
+"Edit": "Redigera",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Textredigerare. Tryck ALT-F9 f\u00f6r menyn. Tryck ALT-F10 f\u00f6r verktygsrader. Tryck ALT-0 f\u00f6r hj\u00e4lp.",
+"Tools": "Verktyg",
+"View": "Visa",
+"Table": "Tabell",
+"Format": "Format"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/ta.js b/program/js/tinymce/langs/ta.js
new file mode 100644
index 000000000..09f22166f
--- /dev/null
+++ b/program/js/tinymce/langs/ta.js
@@ -0,0 +1,197 @@
+tinymce.addI18n('ta',{
+"Cut": "\u0bb5\u0bc6\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
+"Heading 5": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 5",
+"Header 2": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0ba8\u0b95\u0bb2\u0b95\u0ba4\u0bcd\u0ba4\u0bbf\u0bb1\u0bcd\u0b95\u0bc1 \u0ba8\u0bc7\u0bb0\u0b9f\u0bbf \u0b85\u0ba3\u0bc1\u0b95\u0bb2\u0bc8 \u0ba4\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b89\u0bb2\u0bbe\u0bb5\u0bbf \u0b86\u0ba4\u0bb0\u0bbf\u0b95\u0bcd\u0b95\u0bb5\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8. \u0b86\u0b95\u0bb5\u0bc7 \u0bb5\u0bbf\u0b9a\u0bc8\u0baa\u0bcd\u0baa\u0bb2\u0b95\u0bc8 \u0b95\u0bc1\u0bb1\u0bc1\u0b95\u0bcd\u0b95\u0bc1\u0bb5\u0bb4\u0bbf\u0b95\u0bb3\u0bbe\u0ba9 Ctrl+X\/C\/V \u0b87\u0bb5\u0bb1\u0bcd\u0bb1\u0bc8 \u0ba4\u0baf\u0bb5\u0bc1 \u0b9a\u0bc6\u0baf\u0bcd\u0ba4\u0bc1 \u0baa\u0baf\u0ba9\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95.",
+"Heading 4": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 4",
+"Div": "\u0baa\u0bbf\u0bb0\u0bbf\u0bb5\u0bc1 (Div)",
+"Heading 2": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 2",
+"Paste": "\u0b92\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
+"Close": "\u0bae\u0bc2\u0b9f\u0bc1\u0b95",
+"Font Family": "\u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0bb0\u0bc1 \u0b95\u0bc1\u0b9f\u0bc1\u0bae\u0bcd\u0baa\u0bae\u0bcd",
+"Pre": "\u0bae\u0bc1\u0ba9\u0bcd \u0bb5\u0b9f\u0bbf\u0bb5\u0bae\u0bc8\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1 (Pre)",
+"Align right": "\u0bb5\u0bb2\u0ba4\u0bc1 \u0b9a\u0bc0\u0bb0\u0bae\u0bc8",
+"New document": "\u0baa\u0bc1\u0ba4\u0bbf\u0baf \u0b86\u0bb5\u0ba3\u0bae\u0bcd",
+"Blockquote": "\u0ba4\u0bca\u0b95\u0bc1\u0ba4\u0bbf \u0bae\u0bc7\u0bb1\u0bcd\u0b95\u0bcb\u0bb3\u0bcd",
+"Numbered list": "\u0b8e\u0ba3\u0bcd\u0ba3\u0bbf\u0b9f\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f \u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baf\u0bb2\u0bcd",
+"Heading 1": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 1",
+"Headings": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
+"Increase indent": "\u0b89\u0bb3\u0bcd\u0ba4\u0bb3\u0bcd\u0bb3\u0bc1\u0ba4\u0bb2\u0bc8 \u0b85\u0ba4\u0bbf\u0b95\u0bb0\u0bbf\u0b95\u0bcd\u0b95",
+"Formats": "\u0bb5\u0b9f\u0bbf\u0bb5\u0bae\u0bc8\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
+"Headers": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
+"Select all": "\u0b85\u0ba9\u0bc8\u0ba4\u0bcd\u0ba4\u0bc8\u0baf\u0bc1\u0bae\u0bcd \u0ba4\u0bc7\u0bb0\u0bcd\u0bb5\u0bc1 \u0b9a\u0bc6\u0baf\u0bcd\u0b95",
+"Header 3": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 3",
+"Blocks": "\u0ba4\u0bca\u0b95\u0bc1\u0ba4\u0bbf\u0b95\u0bb3\u0bcd",
+"Undo": "\u0bae\u0bc1\u0ba9\u0bcd\u0b9a\u0bc6\u0baf\u0bb2\u0bc8 \u0ba8\u0bc0\u0b95\u0bcd\u0b95\u0bc1\u0b95",
+"Strikethrough": "\u0ba8\u0b9f\u0bc1\u0b95\u0bcd\u0b95\u0bcb\u0b9f\u0bc1",
+"Bullet list": "\u0baa\u0bca\u0b9f\u0bcd\u0b9f\u0bbf\u0b9f\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f \u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baf\u0bb2\u0bcd",
+"Header 1": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 1",
+"Superscript": "\u0bae\u0bc7\u0bb2\u0bcd\u0b92\u0b9f\u0bcd\u0b9f\u0bc1",
+"Clear formatting": "\u0bb5\u0b9f\u0bbf\u0bb5\u0bae\u0bc8\u0baa\u0bcd\u0baa\u0bc8 \u0b85\u0bb4\u0bbf\u0b95\u0bcd\u0b95",
+"Font Sizes": "\u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0bb0\u0bc1 \u0b85\u0bb3\u0bb5\u0bc1\u0b95\u0bb3\u0bcd",
+"Subscript": "\u0b95\u0bc0\u0bb4\u0bcd\u0b92\u0b9f\u0bcd\u0b9f\u0bc1",
+"Header 6": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 6",
+"Redo": "\u0bae\u0bc0\u0ba3\u0bcd\u0b9f\u0bc1\u0bae\u0bcd \u0b9a\u0bc6\u0baf\u0bcd\u0b95",
+"Paragraph": "\u0baa\u0ba4\u0bcd\u0ba4\u0bbf",
+"Ok": "\u0b9a\u0bb0\u0bbf",
+"Bold": "\u0ba4\u0b9f\u0bbf\u0baa\u0bcd\u0baa\u0bc1",
+"Code": "\u0b95\u0bc1\u0bb1\u0bbf\u0baf\u0bc0\u0b9f\u0bc1",
+"Italic": "\u0b9a\u0bbe\u0baf\u0bcd\u0bb5\u0bc1",
+"Align center": "\u0bae\u0bc8\u0baf \u0b9a\u0bc0\u0bb0\u0bae\u0bc8",
+"Header 5": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 5",
+"Heading 6": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 6",
+"Heading 3": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 3",
+"Decrease indent": "\u0b89\u0bb3\u0bcd\u0ba4\u0bb3\u0bcd\u0bb3\u0bc1\u0ba4\u0bb2\u0bc8 \u0b95\u0bc1\u0bb1\u0bc8\u0b95\u0bcd\u0b95",
+"Header 4": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0b87\u0baf\u0bb2\u0bcd\u0baa\u0bc1 \u0b89\u0bb0\u0bc8 \u0bae\u0bc1\u0bb1\u0bc8\u0bae\u0bc8\u0baf\u0bbf\u0bb2\u0bcd \u0ba4\u0bb1\u0bcd\u0baa\u0bcb\u0ba4\u0bc1 \u0b92\u0b9f\u0bcd\u0b9f\u0bc1\u0ba4\u0bb2\u0bcd \u0b89\u0bb3\u0bcd\u0bb3\u0ba4\u0bc1. \u0ba4\u0bbe\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b87\u0ba8\u0bcd\u0ba4 \u0bb5\u0bbf\u0bb0\u0bc1\u0baa\u0bcd\u0baa\u0bc8 \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0bae\u0bcd \u0bb5\u0bb0\u0bc8 \u0b89\u0bb3\u0bcd\u0bb3\u0b9f\u0b95\u0bcd\u0b95\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b87\u0baf\u0bb2\u0bcd\u0baa\u0bc1 \u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b95 \u0b92\u0b9f\u0bcd\u0b9f\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0bae\u0bcd.",
+"Underline": "\u0b85\u0b9f\u0bbf\u0b95\u0bcd\u0b95\u0bcb\u0b9f\u0bc1",
+"Cancel": "\u0bb0\u0ba4\u0bcd\u0ba4\u0bc1 \u0b9a\u0bc6\u0baf\u0bcd\u0b95",
+"Justify": "\u0ba8\u0bc7\u0bb0\u0bcd\u0ba4\u0bcd\u0ba4\u0bbf \u0b9a\u0bc6\u0baf\u0bcd\u0b95",
+"Inline": "\u0b89\u0bb3\u0bcd\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8",
+"Copy": "\u0ba8\u0b95\u0bb2\u0bc6\u0b9f\u0bc1\u0b95\u0bcd\u0b95",
+"Align left": "\u0b87\u0b9f\u0ba4\u0bc1 \u0b9a\u0bc0\u0bb0\u0bae\u0bc8",
+"Visual aids": "\u0b95\u0bbe\u0b9f\u0bcd\u0b9a\u0bbf\u0ba4\u0bcd \u0ba4\u0bc1\u0ba3\u0bc8\u0baf\u0ba9\u0bcd\u0b95\u0bb3\u0bcd",
+"Lower Greek": "\u0b95\u0bc0\u0bb4\u0bcd \u0b95\u0bbf\u0bb0\u0bc7\u0b95\u0bcd\u0b95\u0bae\u0bcd",
+"Square": "\u0b9a\u0ba4\u0bc1\u0bb0\u0bae\u0bcd",
+"Default": "\u0b89\u0bb3\u0bcd\u0bb3\u0bbf\u0bb0\u0bc1\u0baa\u0bcd\u0baa\u0bc1",
+"Lower Alpha": "\u0b95\u0bc0\u0bb4\u0bcd \u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1",
+"Circle": "\u0bb5\u0b9f\u0bcd\u0b9f\u0bae\u0bcd",
+"Disc": "\u0bb5\u0b9f\u0bcd\u0b9f\u0bc1",
+"Upper Alpha": "\u0bae\u0bc7\u0bb2\u0bcd \u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1",
+"Upper Roman": "\u0bae\u0bc7\u0bb2\u0bcd \u0bb0\u0bcb\u0bae\u0bbe\u0ba9\u0bbf\u0baf\u0bae\u0bcd",
+"Lower Roman": "\u0b95\u0bc0\u0bb4\u0bcd \u0bb0\u0bcb\u0bae\u0bbe\u0ba9\u0bbf\u0baf\u0bae\u0bcd",
+"Name": "\u0baa\u0bc6\u0baf\u0bb0\u0bcd",
+"Anchor": "\u0ba8\u0b99\u0bcd\u0b95\u0bc2\u0bb0\u0bae\u0bcd",
+"You have unsaved changes are you sure you want to navigate away?": "\u0b9a\u0bc7\u0bae\u0bbf\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bbe\u0ba4 \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b89\u0bb3\u0bcd\u0bb3\u0ba9; \u0ba4\u0bbe\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b89\u0bb1\u0bc1\u0ba4\u0bbf\u0baf\u0bbe\u0b95 \u0bb5\u0bc6\u0bb3\u0bbf\u0baf\u0bc7\u0bb1 \u0bb5\u0bbf\u0bb0\u0bc1\u0bae\u0bcd\u0baa\u0bc1\u0b95\u0bbf\u0bb1\u0bc0\u0bb0\u0bcd\u0b95\u0bbe\u0bb3\u0bbe?",
+"Restore last draft": "\u0b95\u0b9f\u0ba8\u0bcd\u0ba4 \u0bb5\u0bb0\u0bc8\u0bb5\u0bc8 \u0bae\u0bc0\u0b9f\u0bcd\u0b9f\u0bc6\u0b9f\u0bc1\u0b95\u0bcd\u0b95",
+"Special character": "\u0b9a\u0bbf\u0bb1\u0baa\u0bcd\u0baa\u0bc1 \u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0bb0\u0bc1",
+"Source code": "\u0bae\u0bc2\u0bb2 \u0b95\u0bc1\u0bb1\u0bbf\u0baf\u0bc0\u0b9f\u0bc1",
+"Color": "\u0ba8\u0bbf\u0bb1\u0bae\u0bcd",
+"Right to left": "\u0bb5\u0bb2\u0bae\u0bbf\u0bb0\u0bc1\u0ba8\u0bcd\u0ba4\u0bc1 \u0b87\u0b9f\u0bae\u0bcd",
+"Left to right": "\u0b87\u0b9f\u0bae\u0bbf\u0bb0\u0bc1\u0ba8\u0bcd\u0ba4\u0bc1 \u0bb5\u0bb2\u0bae\u0bcd",
+"Emoticons": "\u0b89\u0ba3\u0bb0\u0bcd\u0b9a\u0bcd\u0b9a\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bbf\u0bae\u0b99\u0bcd\u0b95\u0bb3\u0bcd",
+"Robots": "\u0baa\u0bca\u0bb1\u0bbf\u0baf\u0ba9\u0bcd\u0b95\u0bb3\u0bcd (Robots)",
+"Document properties": "\u0b86\u0bb5\u0ba3\u0ba4\u0bcd\u0ba4\u0bbf\u0ba9\u0bcd \u0baa\u0ba3\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
+"Title": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1",
+"Keywords": "\u0bae\u0bc1\u0ba4\u0ba9\u0bcd\u0bae\u0bc8\u0b9a\u0bcd\u0b9a\u0bca\u0bb1\u0bcd\u0b95\u0bb3\u0bcd",
+"Encoding": "\u0b95\u0bc1\u0bb1\u0bbf\u0baf\u0bc0\u0b9f\u0bbe\u0b95\u0bcd\u0b95\u0bae\u0bcd",
+"Description": "\u0bb5\u0bbf\u0bb5\u0bb0\u0bae\u0bcd",
+"Author": "\u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bbe\u0bb3\u0bb0\u0bcd",
+"Fullscreen": "\u0bae\u0bc1\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bbf\u0bb0\u0bc8",
+"Horizontal line": "\u0b95\u0bbf\u0b9f\u0bc8 \u0b95\u0bcb\u0b9f\u0bc1",
+"Horizontal space": "\u0b95\u0bbf\u0b9f\u0bc8\u0bae\u0b9f\u0bcd\u0b9f \u0b87\u0b9f\u0bc8\u0bb5\u0bc6\u0bb3\u0bbf",
+"Insert\/edit image": "\u0baa\u0b9f\u0ba4\u0bcd\u0ba4\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95\/\u0ba4\u0bca\u0b95\u0bc1\u0b95\u0bcd\u0b95",
+"General": "\u0baa\u0bca\u0ba4\u0bc1",
+"Advanced": "\u0bae\u0bc7\u0bae\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1",
+"Source": "\u0bae\u0bc2\u0bb2\u0bae\u0bcd",
+"Border": "\u0b95\u0bb0\u0bc8",
+"Constrain proportions": "\u0bb5\u0bbf\u0b95\u0bbf\u0ba4\u0bbe\u0b9a\u0bcd\u0b9a\u0bbe\u0bb0\u0ba4\u0bcd\u0ba4\u0bbf\u0bb2\u0bcd \u0b95\u0b9f\u0bcd\u0b9f\u0bc1\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95",
+"Vertical space": "\u0ba8\u0bc6\u0b9f\u0bc1\u0ba4\u0bb3 \u0b87\u0b9f\u0bc8\u0bb5\u0bc6\u0bb3\u0bbf",
+"Image description": "\u0baa\u0b9f \u0bb5\u0bbf\u0bb5\u0bb0\u0bae\u0bcd",
+"Style": "\u0baa\u0bbe\u0ba3\u0bbf",
+"Dimensions": "\u0baa\u0bb0\u0bbf\u0bae\u0bbe\u0ba3\u0b99\u0bcd\u0b95\u0bb3\u0bcd",
+"Insert image": "\u0baa\u0b9f\u0ba4\u0bcd\u0ba4\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"Insert date\/time": "\u0ba4\u0bc7\u0ba4\u0bbf\/\u0ba8\u0bc7\u0bb0\u0bae\u0bcd \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"Remove link": "\u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc8 \u0b85\u0b95\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
+"Url": "\u0b87\u0ba3\u0bc8\u0baf\u0bae\u0bc1\u0b95\u0bb5\u0bb0\u0bbf",
+"Text to display": "\u0b95\u0bbe\u0b9f\u0bcd\u0b9a\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4 \u0bb5\u0bc7\u0ba3\u0bcd\u0b9f\u0bbf\u0baf \u0b89\u0bb0\u0bc8",
+"Anchors": "\u0ba8\u0b99\u0bcd\u0b95\u0bc2\u0bb0\u0b99\u0bcd\u0b95\u0bb3\u0bcd",
+"Insert link": "\u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"New window": "\u0baa\u0bc1\u0ba4\u0bbf\u0baf \u0b9a\u0bbe\u0bb3\u0bb0\u0bae\u0bcd",
+"None": "\u0b8f\u0ba4\u0bc1\u0bae\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u0ba4\u0bbe\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b89\u0bb3\u0bcd\u0bb3\u0bbf\u0b9f\u0bcd\u0b9f \u0b87\u0ba3\u0bc8\u0baf\u0bae\u0bc1\u0b95\u0bb5\u0bb0\u0bbf (URL) \u0b92\u0bb0\u0bc1 \u0bb5\u0bc6\u0bb3\u0bbf\u0baa\u0bcd\u0baa\u0bc1\u0bb1 \u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc1 (external link) \u0baa\u0bcb\u0bb2\u0bcd \u0ba4\u0bcb\u0ba9\u0bcd\u0bb1\u0bc1\u0b95\u0bbf\u0bb1\u0ba4\u0bc1. \u0ba4\u0bc7\u0bb5\u0bc8\u0baf\u0bbe\u0ba9 http:\/\/ \u0bae\u0bc1\u0ba9\u0bcd-\u0b92\u0b9f\u0bcd\u0b9f\u0bc8\u0ba4\u0bcd (prefix) \u0ba4\u0bbe\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b9a\u0bc7\u0bb0\u0bcd\u0b95\u0bcd\u0b95 \u0bb5\u0bc7\u0ba3\u0bcd\u0b9f\u0bc1\u0bae\u0bbe?",
+"Target": "\u0b87\u0bb2\u0b95\u0bcd\u0b95\u0bc1",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u0ba4\u0bbe\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b89\u0bb3\u0bcd\u0bb3\u0bbf\u0b9f\u0bcd\u0b9f \u0b87\u0ba3\u0bc8\u0baf\u0bae\u0bc1\u0b95\u0bb5\u0bb0\u0bbf (URL) \u0b92\u0bb0\u0bc1 \u0bae\u0bbf\u0ba9\u0bcd-\u0b85\u0b9e\u0bcd\u0b9a\u0bb2\u0bcd \u0bae\u0bc1\u0b95\u0bb5\u0bb0\u0bbf \u0baa\u0bcb\u0bb2\u0bcd \u0ba4\u0bcb\u0ba9\u0bcd\u0bb1\u0bc1\u0b95\u0bbf\u0bb1\u0ba4\u0bc1. \u0ba4\u0bc7\u0bb5\u0bc8\u0baf\u0bbe\u0ba9 mailto: \u0bae\u0bc1\u0ba9\u0bcd-\u0b92\u0b9f\u0bcd\u0b9f\u0bc8\u0ba4\u0bcd (prefix) \u0ba4\u0bbe\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b9a\u0bc7\u0bb0\u0bcd\u0b95\u0bcd\u0b95 \u0bb5\u0bc7\u0ba3\u0bcd\u0b9f\u0bc1\u0bae\u0bbe?",
+"Insert\/edit link": "\u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95\/\u0ba4\u0bca\u0b95\u0bc1\u0b95\u0bcd\u0b95",
+"Insert\/edit video": "\u0b95\u0bbe\u0ba3\u0bca\u0bb3\u0bbf\u0baf\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95\/\u0ba4\u0bca\u0b95\u0bc1\u0b95\u0bcd\u0b95",
+"Poster": "\u0b9a\u0bc1\u0bb5\u0bb0\u0bca\u0b9f\u0bcd\u0b9f\u0bbf",
+"Alternative source": "\u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1 \u0bae\u0bc2\u0bb2\u0bae\u0bcd",
+"Paste your embed code below:": "\u0ba4\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b89\u0b9f\u0bcd\u0baa\u0bc6\u0bbe\u0ba4\u0bbf \u0b95\u0bc1\u0bb1\u0bbf\u0baf\u0bc0\u0b9f\u0bcd\u0b9f\u0bc8 \u0b95\u0bc0\u0bb4\u0bc7 \u0b92\u0b9f\u0bcd\u0b9f\u0bb5\u0bc1\u0bae\u0bcd:",
+"Insert video": "\u0b95\u0bbe\u0ba3\u0bca\u0bb3\u0bbf\u0baf\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"Embed": "\u0b89\u0b9f\u0bcd\u0baa\u0bca\u0ba4\u0bbf",
+"Nonbreaking space": "\u0baa\u0bbf\u0bb0\u0bbf\u0baf\u0bbe\u0ba4 \u0b87\u0b9f\u0bc8\u0bb5\u0bc6\u0bb3\u0bbf",
+"Page break": "\u0baa\u0b95\u0bcd\u0b95 \u0baa\u0bbf\u0bb0\u0bbf\u0baa\u0bcd\u0baa\u0bc1",
+"Paste as text": "\u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b95 \u0b92\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
+"Preview": "\u0bae\u0bc1\u0ba9\u0bcd\u0ba8\u0bcb\u0b95\u0bcd\u0b95\u0bc1",
+"Print": "\u0b85\u0b9a\u0bcd\u0b9a\u0bbf\u0b9f\u0bc1\u0b95",
+"Save": "\u0b9a\u0bc7\u0bae\u0bbf\u0b95\u0bcd\u0b95",
+"Could not find the specified string.": "\u0b95\u0bc1\u0bb1\u0bbf\u0baa\u0bcd\u0baa\u0bbf\u0b9f\u0bcd\u0b9f \u0b9a\u0bb0\u0bae\u0bcd \u0b95\u0ba3\u0bcd\u0b9f\u0bc1\u0baa\u0bbf\u0b9f\u0bbf\u0b95\u0bcd\u0b95 \u0bae\u0bc1\u0b9f\u0bbf\u0baf\u0bb5\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8",
+"Replace": "\u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
+"Next": "\u0b85\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4",
+"Whole words": "\u0bae\u0bc1\u0bb4\u0bc1 \u0b9a\u0bca\u0bb1\u0bcd\u0b95\u0bb3\u0bcd",
+"Find and replace": "\u0b95\u0ba3\u0bcd\u0b9f\u0bc1\u0baa\u0bbf\u0b9f\u0bbf\u0ba4\u0bcd\u0ba4\u0bc1 \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
+"Replace with": "\u0b87\u0ba4\u0ba9\u0bc1\u0b9f\u0ba9\u0bcd \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
+"Find": "\u0b95\u0ba3\u0bcd\u0b9f\u0bc1\u0baa\u0bbf\u0b9f\u0bbf\u0b95\u0bcd\u0b95",
+"Replace all": "\u0b85\u0ba9\u0bc8\u0ba4\u0bcd\u0ba4\u0bc8\u0baf\u0bc1\u0bae\u0bcd \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
+"Match case": "\u0bb5\u0b9f\u0bbf\u0bb5\u0ba4\u0bcd\u0ba4\u0bc8 \u0baa\u0bca\u0bb0\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95",
+"Prev": "\u0bae\u0bc1\u0ba8\u0bcd\u0ba4\u0bc8\u0baf",
+"Spellcheck": "\u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0baa\u0bcd\u0baa\u0bbf\u0bb4\u0bc8\u0baf\u0bc8 \u0b9a\u0bb0\u0bbf\u0baa\u0bbe\u0bb0\u0bcd\u0b95\u0bcd\u0b95",
+"Finish": "\u0bae\u0bc1\u0b9f\u0bbf\u0b95\u0bcd\u0b95",
+"Ignore all": "\u0b85\u0ba9\u0bc8\u0ba4\u0bcd\u0ba4\u0bc8\u0baf\u0bc1\u0bae\u0bcd \u0baa\u0bc1\u0bb1\u0b95\u0bcd\u0b95\u0ba3\u0bbf\u0b95\u0bcd\u0b95",
+"Ignore": "\u0baa\u0bc1\u0bb1\u0b95\u0bcd\u0b95\u0ba3\u0bbf\u0b95\u0bcd\u0b95",
+"Add to Dictionary": "\u0b85\u0b95\u0bb0\u0bbe\u0ba4\u0bbf\u0baf\u0bbf\u0bb2\u0bcd \u0b9a\u0bc7\u0bb0\u0bcd\u0b95\u0bcd\u0b95",
+"Insert row before": "\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1 \u0bae\u0bc1\u0ba9\u0bcd \u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"Rows": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0b95\u0bb3\u0bcd",
+"Height": "\u0b89\u0baf\u0bb0\u0bae\u0bcd",
+"Paste row after": "\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1 \u0baa\u0bbf\u0ba9\u0bcd \u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bc8 \u0b92\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
+"Alignment": "\u0b9a\u0bc0\u0bb0\u0bae\u0bc8\u0bb5\u0bc1",
+"Border color": "\u0b95\u0bb0\u0bc8\u0baf\u0bbf\u0ba9\u0bcd \u0ba8\u0bbf\u0bb1\u0bae\u0bcd",
+"Column group": "\u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0b95\u0bc1\u0bb4\u0bc1",
+"Row": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8",
+"Insert column before": "\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1 \u0bae\u0bc1\u0ba9\u0bcd \u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"Split cell": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8\u0b95\u0bb3\u0bc8 \u0baa\u0bbf\u0bb0\u0bbf\u0b95\u0bcd\u0b95",
+"Cell padding": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8 \u0ba8\u0bbf\u0bb0\u0baa\u0bcd\u0baa\u0bb2\u0bcd",
+"Cell spacing": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8 \u0b87\u0b9f\u0bc8\u0bb5\u0bc6\u0bb3\u0bbf",
+"Row type": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0bb5\u0b95\u0bc8",
+"Insert table": "\u0b85\u0b9f\u0bcd\u0b9f\u0bb5\u0ba3\u0bc8\u0baf\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"Body": "\u0b89\u0b9f\u0bb2\u0bcd",
+"Caption": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1",
+"Footer": "\u0b85\u0b9f\u0bbf\u0b95\u0bcd\u0b95\u0bc1\u0bb1\u0bbf\u0baa\u0bcd\u0baa\u0bc1",
+"Delete row": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bc8 \u0ba8\u0bc0\u0b95\u0bcd\u0b95\u0bc1\u0b95",
+"Paste row before": "\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1 \u0bae\u0bc1\u0ba9\u0bcd \u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bc8 \u0b92\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
+"Scope": "\u0bb5\u0bb0\u0bc8\u0baf\u0bc6\u0bb2\u0bcd\u0bb2\u0bc8",
+"Delete table": "\u0b85\u0b9f\u0bcd\u0b9f\u0bb5\u0ba3\u0bc8\u0baf\u0bc8 \u0ba8\u0bc0\u0b95\u0bcd\u0b95\u0bc1\u0b95",
+"H Align": "\u0b95\u0bbf (H) \u0b9a\u0bc0\u0bb0\u0bae\u0bc8",
+"Top": "\u0bae\u0bc7\u0bb2\u0bcd",
+"Header cell": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 \u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8",
+"Column": "\u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8",
+"Row group": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0b95\u0bc1\u0bb4\u0bc1",
+"Cell": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8",
+"Middle": "\u0ba8\u0b9f\u0bc1",
+"Cell type": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8 \u0bb5\u0b95\u0bc8",
+"Copy row": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bc8 \u0ba8\u0b95\u0bb2\u0bc6\u0b9f\u0bc1\u0b95\u0bcd\u0b95",
+"Row properties": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0baa\u0ba3\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
+"Table properties": "\u0b85\u0b9f\u0bcd\u0b9f\u0bb5\u0ba3\u0bc8 \u0baa\u0ba3\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
+"Bottom": "\u0b95\u0bc0\u0bb4\u0bcd",
+"V Align": "\u0b9a\u0bc6 (V) \u0b9a\u0bc0\u0bb0\u0bae\u0bc8",
+"Header": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1",
+"Right": "\u0bb5\u0bb2\u0bae\u0bcd",
+"Insert column after": "\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1 \u0baa\u0bbf\u0ba9\u0bcd \u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"Cols": "\u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0b95\u0bb3\u0bcd",
+"Insert row after": "\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1 \u0baa\u0bbf\u0ba9\u0bcd \u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"Width": "\u0b85\u0b95\u0bb2\u0bae\u0bcd",
+"Cell properties": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8 \u0baa\u0ba3\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
+"Left": "\u0b87\u0b9f\u0bae\u0bcd",
+"Cut row": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bc8 \u0bb5\u0bc6\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
+"Delete column": "\u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bc8 \u0ba8\u0bc0\u0b95\u0bcd\u0b95\u0bc1\u0b95",
+"Center": "\u0bae\u0bc8\u0baf\u0bae\u0bcd",
+"Merge cells": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8\u0b95\u0bb3\u0bc8 \u0b9a\u0bc7\u0bb0\u0bcd\u0b95\u0bcd\u0b95",
+"Insert template": "\u0bb5\u0bbe\u0bb0\u0bcd\u0baa\u0bcd\u0baa\u0bc1\u0bb0\u0bc1\u0bb5\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"Templates": "\u0bb5\u0bbe\u0bb0\u0bcd\u0baa\u0bcd\u0baa\u0bc1\u0bb0\u0bc1\u0b95\u0bcd\u0b95\u0bb3\u0bcd",
+"Background color": "\u0baa\u0bbf\u0ba9\u0bcd\u0ba9\u0ba3\u0bbf \u0ba8\u0bbf\u0bb1\u0bae\u0bcd",
+"Custom...": "\u0ba4\u0ba9\u0bbf\u0baa\u0bcd\u0baa\u0baf\u0ba9\u0bcd...",
+"Custom color": "\u0ba4\u0ba9\u0bbf\u0baa\u0bcd\u0baa\u0baf\u0ba9\u0bcd \u0ba8\u0bbf\u0bb1\u0bae\u0bcd",
+"No color": "\u0ba8\u0bbf\u0bb1\u0bae\u0bcd \u0b87\u0bb2\u0bcd\u0bb2\u0bc8",
+"Text color": "\u0b89\u0bb0\u0bc8\u0baf\u0bbf\u0ba9\u0bcd \u0ba8\u0bbf\u0bb1\u0bae\u0bcd",
+"Show blocks": "\u0ba4\u0bca\u0b95\u0bc1\u0ba4\u0bbf\u0b95\u0bb3\u0bc8 \u0b95\u0bbe\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
+"Show invisible characters": "\u0b95\u0ba3\u0bcd\u0ba3\u0bc1\u0b95\u0bcd\u0b95\u0bc1\u0ba4\u0bcd \u0ba4\u0bc6\u0bb0\u0bbf\u0baf\u0bbe\u0ba4 \u0b89\u0bb0\u0bc1\u0b95\u0bcd\u0b95\u0bb3\u0bc8 \u0b95\u0bbe\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
+"Words: {0}": "\u0b9a\u0bca\u0bb1\u0bcd\u0b95\u0bb3\u0bcd: {0}",
+"Insert": "\u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"File": "\u0b95\u0bcb\u0baa\u0bcd\u0baa\u0bc1",
+"Edit": "\u0ba4\u0bca\u0b95\u0bc1\u0b95\u0bcd\u0b95",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u0b89\u0baf\u0bb0\u0bcd \u0b89\u0bb0\u0bc8 \u0baa\u0b95\u0bc1\u0ba4\u0bbf. \u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0b95\u0bcd\u0b95\u0bc1 ALT-F9 , \u0b95\u0bb0\u0bc1\u0bb5\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0bc8\u0b95\u0bcd\u0b95\u0bc1 ALT-F10 , \u0b89\u0ba4\u0bb5\u0bbf\u0b95\u0bcd\u0b95\u0bc1 ALT-0",
+"Tools": "\u0b95\u0bb0\u0bc1\u0bb5\u0bbf\u0b95\u0bb3\u0bcd",
+"View": "\u0ba8\u0bcb\u0b95\u0bcd\u0b95\u0bc1\u0b95",
+"Table": "\u0b85\u0b9f\u0bcd\u0b9f\u0bb5\u0ba3\u0bc8",
+"Format": "\u0bb5\u0b9f\u0bbf\u0bb5\u0bae\u0bc8\u0baa\u0bcd\u0baa\u0bc1"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/ta_IN.js b/program/js/tinymce/langs/ta_IN.js
new file mode 100644
index 000000000..af6cbfe88
--- /dev/null
+++ b/program/js/tinymce/langs/ta_IN.js
@@ -0,0 +1,197 @@
+tinymce.addI18n('ta_IN',{
+"Cut": "\u0bb5\u0bc6\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
+"Heading 5": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 5",
+"Header 2": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0ba8\u0b95\u0bb2\u0b95\u0ba4\u0bcd\u0ba4\u0bbf\u0bb1\u0bcd\u0b95\u0bc1 \u0ba8\u0bc7\u0bb0\u0b9f\u0bbf \u0b85\u0ba3\u0bc1\u0b95\u0bb2\u0bc8 \u0ba4\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b89\u0bb2\u0bbe\u0bb5\u0bbf \u0b86\u0ba4\u0bb0\u0bbf\u0b95\u0bcd\u0b95\u0bb5\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8. \u0b86\u0b95\u0bb5\u0bc7 \u0bb5\u0bbf\u0b9a\u0bc8\u0baa\u0bcd\u0baa\u0bb2\u0b95\u0bc8 \u0b95\u0bc1\u0bb1\u0bc1\u0b95\u0bcd\u0b95\u0bc1\u0bb5\u0bb4\u0bbf\u0b95\u0bb3\u0bbe\u0ba9 Ctrl+X\/C\/V \u0b87\u0bb5\u0bb1\u0bcd\u0bb1\u0bc8 \u0ba4\u0baf\u0bb5\u0bc1 \u0b9a\u0bc6\u0baf\u0bcd\u0ba4\u0bc1 \u0baa\u0baf\u0ba9\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95.",
+"Heading 4": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 4",
+"Div": "\u0baa\u0bbf\u0bb0\u0bbf\u0bb5\u0bc1 (Div)",
+"Heading 2": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 2",
+"Paste": "\u0b92\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
+"Close": "\u0bae\u0bc2\u0b9f\u0bc1\u0b95",
+"Font Family": "\u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0bb0\u0bc1 \u0b95\u0bc1\u0b9f\u0bc1\u0bae\u0bcd\u0baa\u0bae\u0bcd",
+"Pre": "\u0bae\u0bc1\u0ba9\u0bcd \u0bb5\u0b9f\u0bbf\u0bb5\u0bae\u0bc8\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1 (Pre)",
+"Align right": "\u0bb5\u0bb2\u0ba4\u0bc1 \u0b9a\u0bc0\u0bb0\u0bae\u0bc8",
+"New document": "\u0baa\u0bc1\u0ba4\u0bbf\u0baf \u0b86\u0bb5\u0ba3\u0bae\u0bcd",
+"Blockquote": "\u0ba4\u0bca\u0b95\u0bc1\u0ba4\u0bbf \u0bae\u0bc7\u0bb1\u0bcd\u0b95\u0bcb\u0bb3\u0bcd",
+"Numbered list": "\u0b8e\u0ba3\u0bcd\u0ba3\u0bbf\u0b9f\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f \u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baf\u0bb2\u0bcd",
+"Heading 1": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 1",
+"Headings": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
+"Increase indent": "\u0b89\u0bb3\u0bcd\u0ba4\u0bb3\u0bcd\u0bb3\u0bc1\u0ba4\u0bb2\u0bc8 \u0b85\u0ba4\u0bbf\u0b95\u0bb0\u0bbf\u0b95\u0bcd\u0b95",
+"Formats": "\u0bb5\u0b9f\u0bbf\u0bb5\u0bae\u0bc8\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
+"Headers": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
+"Select all": "\u0b85\u0ba9\u0bc8\u0ba4\u0bcd\u0ba4\u0bc8\u0baf\u0bc1\u0bae\u0bcd \u0ba4\u0bc7\u0bb0\u0bcd\u0bb5\u0bc1 \u0b9a\u0bc6\u0baf\u0bcd\u0b95",
+"Header 3": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 3",
+"Blocks": "\u0ba4\u0bca\u0b95\u0bc1\u0ba4\u0bbf\u0b95\u0bb3\u0bcd",
+"Undo": "\u0bae\u0bc1\u0ba9\u0bcd\u0b9a\u0bc6\u0baf\u0bb2\u0bc8 \u0ba8\u0bc0\u0b95\u0bcd\u0b95\u0bc1\u0b95",
+"Strikethrough": "\u0ba8\u0b9f\u0bc1\u0b95\u0bcd\u0b95\u0bcb\u0b9f\u0bc1",
+"Bullet list": "\u0baa\u0bca\u0b9f\u0bcd\u0b9f\u0bbf\u0b9f\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f \u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baf\u0bb2\u0bcd",
+"Header 1": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 1",
+"Superscript": "\u0bae\u0bc7\u0bb2\u0bcd\u0b92\u0b9f\u0bcd\u0b9f\u0bc1",
+"Clear formatting": "\u0bb5\u0b9f\u0bbf\u0bb5\u0bae\u0bc8\u0baa\u0bcd\u0baa\u0bc8 \u0b85\u0bb4\u0bbf\u0b95\u0bcd\u0b95",
+"Font Sizes": "\u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0bb0\u0bc1 \u0b85\u0bb3\u0bb5\u0bc1\u0b95\u0bb3\u0bcd",
+"Subscript": "\u0b95\u0bc0\u0bb4\u0bcd\u0b92\u0b9f\u0bcd\u0b9f\u0bc1",
+"Header 6": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 6",
+"Redo": "\u0bae\u0bc0\u0ba3\u0bcd\u0b9f\u0bc1\u0bae\u0bcd \u0b9a\u0bc6\u0baf\u0bcd\u0b95",
+"Paragraph": "\u0baa\u0ba4\u0bcd\u0ba4\u0bbf",
+"Ok": "\u0b9a\u0bb0\u0bbf",
+"Bold": "\u0ba4\u0b9f\u0bbf\u0baa\u0bcd\u0baa\u0bc1",
+"Code": "\u0b95\u0bc1\u0bb1\u0bbf\u0baf\u0bc0\u0b9f\u0bc1",
+"Italic": "\u0b9a\u0bbe\u0baf\u0bcd\u0bb5\u0bc1",
+"Align center": "\u0bae\u0bc8\u0baf \u0b9a\u0bc0\u0bb0\u0bae\u0bc8",
+"Header 5": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 5",
+"Heading 6": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 6",
+"Heading 3": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 3",
+"Decrease indent": "\u0b89\u0bb3\u0bcd\u0ba4\u0bb3\u0bcd\u0bb3\u0bc1\u0ba4\u0bb2\u0bc8 \u0b95\u0bc1\u0bb1\u0bc8\u0b95\u0bcd\u0b95",
+"Header 4": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0b87\u0baf\u0bb2\u0bcd\u0baa\u0bc1 \u0b89\u0bb0\u0bc8 \u0bae\u0bc1\u0bb1\u0bc8\u0bae\u0bc8\u0baf\u0bbf\u0bb2\u0bcd \u0ba4\u0bb1\u0bcd\u0baa\u0bcb\u0ba4\u0bc1 \u0b92\u0b9f\u0bcd\u0b9f\u0bc1\u0ba4\u0bb2\u0bcd \u0b89\u0bb3\u0bcd\u0bb3\u0ba4\u0bc1. \u0ba4\u0bbe\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b87\u0ba8\u0bcd\u0ba4 \u0bb5\u0bbf\u0bb0\u0bc1\u0baa\u0bcd\u0baa\u0bc8 \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0bae\u0bcd \u0bb5\u0bb0\u0bc8 \u0b89\u0bb3\u0bcd\u0bb3\u0b9f\u0b95\u0bcd\u0b95\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b87\u0baf\u0bb2\u0bcd\u0baa\u0bc1 \u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b95 \u0b92\u0b9f\u0bcd\u0b9f\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0bae\u0bcd.",
+"Underline": "\u0b85\u0b9f\u0bbf\u0b95\u0bcd\u0b95\u0bcb\u0b9f\u0bc1",
+"Cancel": "\u0bb0\u0ba4\u0bcd\u0ba4\u0bc1 \u0b9a\u0bc6\u0baf\u0bcd\u0b95",
+"Justify": "\u0ba8\u0bc7\u0bb0\u0bcd\u0ba4\u0bcd\u0ba4\u0bbf \u0b9a\u0bc6\u0baf\u0bcd\u0b95",
+"Inline": "\u0b89\u0bb3\u0bcd\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8",
+"Copy": "\u0ba8\u0b95\u0bb2\u0bc6\u0b9f\u0bc1\u0b95\u0bcd\u0b95",
+"Align left": "\u0b87\u0b9f\u0ba4\u0bc1 \u0b9a\u0bc0\u0bb0\u0bae\u0bc8",
+"Visual aids": "\u0b95\u0bbe\u0b9f\u0bcd\u0b9a\u0bbf\u0ba4\u0bcd \u0ba4\u0bc1\u0ba3\u0bc8\u0baf\u0ba9\u0bcd\u0b95\u0bb3\u0bcd",
+"Lower Greek": "\u0b95\u0bc0\u0bb4\u0bcd \u0b95\u0bbf\u0bb0\u0bc7\u0b95\u0bcd\u0b95\u0bae\u0bcd",
+"Square": "\u0b9a\u0ba4\u0bc1\u0bb0\u0bae\u0bcd",
+"Default": "\u0b89\u0bb3\u0bcd\u0bb3\u0bbf\u0bb0\u0bc1\u0baa\u0bcd\u0baa\u0bc1",
+"Lower Alpha": "\u0b95\u0bc0\u0bb4\u0bcd \u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1",
+"Circle": "\u0bb5\u0b9f\u0bcd\u0b9f\u0bae\u0bcd",
+"Disc": "\u0bb5\u0b9f\u0bcd\u0b9f\u0bc1",
+"Upper Alpha": "\u0bae\u0bc7\u0bb2\u0bcd \u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1",
+"Upper Roman": "\u0bae\u0bc7\u0bb2\u0bcd \u0bb0\u0bcb\u0bae\u0bbe\u0ba9\u0bbf\u0baf\u0bae\u0bcd",
+"Lower Roman": "\u0b95\u0bc0\u0bb4\u0bcd \u0bb0\u0bcb\u0bae\u0bbe\u0ba9\u0bbf\u0baf\u0bae\u0bcd",
+"Name": "\u0baa\u0bc6\u0baf\u0bb0\u0bcd",
+"Anchor": "\u0ba8\u0b99\u0bcd\u0b95\u0bc2\u0bb0\u0bae\u0bcd",
+"You have unsaved changes are you sure you want to navigate away?": "\u0b9a\u0bc7\u0bae\u0bbf\u0b95\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0b9f\u0bbe\u0ba4 \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b89\u0bb3\u0bcd\u0bb3\u0ba9; \u0ba4\u0bbe\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b89\u0bb1\u0bc1\u0ba4\u0bbf\u0baf\u0bbe\u0b95 \u0bb5\u0bc6\u0bb3\u0bbf\u0baf\u0bc7\u0bb1 \u0bb5\u0bbf\u0bb0\u0bc1\u0bae\u0bcd\u0baa\u0bc1\u0b95\u0bbf\u0bb1\u0bc0\u0bb0\u0bcd\u0b95\u0bbe\u0bb3\u0bbe?",
+"Restore last draft": "\u0b95\u0b9f\u0ba8\u0bcd\u0ba4 \u0bb5\u0bb0\u0bc8\u0bb5\u0bc8 \u0bae\u0bc0\u0b9f\u0bcd\u0b9f\u0bc6\u0b9f\u0bc1\u0b95\u0bcd\u0b95",
+"Special character": "\u0b9a\u0bbf\u0bb1\u0baa\u0bcd\u0baa\u0bc1 \u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0bb0\u0bc1",
+"Source code": "\u0bae\u0bc2\u0bb2 \u0b95\u0bc1\u0bb1\u0bbf\u0baf\u0bc0\u0b9f\u0bc1",
+"Color": "\u0ba8\u0bbf\u0bb1\u0bae\u0bcd",
+"Right to left": "\u0bb5\u0bb2\u0bae\u0bbf\u0bb0\u0bc1\u0ba8\u0bcd\u0ba4\u0bc1 \u0b87\u0b9f\u0bae\u0bcd",
+"Left to right": "\u0b87\u0b9f\u0bae\u0bbf\u0bb0\u0bc1\u0ba8\u0bcd\u0ba4\u0bc1 \u0bb5\u0bb2\u0bae\u0bcd",
+"Emoticons": "\u0b89\u0ba3\u0bb0\u0bcd\u0b9a\u0bcd\u0b9a\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bbf\u0bae\u0b99\u0bcd\u0b95\u0bb3\u0bcd",
+"Robots": "\u0baa\u0bca\u0bb1\u0bbf\u0baf\u0ba9\u0bcd\u0b95\u0bb3\u0bcd (Robots)",
+"Document properties": "\u0b86\u0bb5\u0ba3\u0ba4\u0bcd\u0ba4\u0bbf\u0ba9\u0bcd \u0baa\u0ba3\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
+"Title": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1",
+"Keywords": "\u0bae\u0bc1\u0ba4\u0ba9\u0bcd\u0bae\u0bc8\u0b9a\u0bcd\u0b9a\u0bca\u0bb1\u0bcd\u0b95\u0bb3\u0bcd",
+"Encoding": "\u0b95\u0bc1\u0bb1\u0bbf\u0baf\u0bc0\u0b9f\u0bbe\u0b95\u0bcd\u0b95\u0bae\u0bcd",
+"Description": "\u0bb5\u0bbf\u0bb5\u0bb0\u0bae\u0bcd",
+"Author": "\u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bbe\u0bb3\u0bb0\u0bcd",
+"Fullscreen": "\u0bae\u0bc1\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bbf\u0bb0\u0bc8",
+"Horizontal line": "\u0b95\u0bbf\u0b9f\u0bc8 \u0b95\u0bcb\u0b9f\u0bc1",
+"Horizontal space": "\u0b95\u0bbf\u0b9f\u0bc8\u0bae\u0b9f\u0bcd\u0b9f \u0b87\u0b9f\u0bc8\u0bb5\u0bc6\u0bb3\u0bbf",
+"Insert\/edit image": "\u0baa\u0b9f\u0ba4\u0bcd\u0ba4\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95\/\u0ba4\u0bca\u0b95\u0bc1\u0b95\u0bcd\u0b95",
+"General": "\u0baa\u0bca\u0ba4\u0bc1",
+"Advanced": "\u0bae\u0bc7\u0bae\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1",
+"Source": "\u0bae\u0bc2\u0bb2\u0bae\u0bcd",
+"Border": "\u0b95\u0bb0\u0bc8",
+"Constrain proportions": "\u0bb5\u0bbf\u0b95\u0bbf\u0ba4\u0bbe\u0b9a\u0bcd\u0b9a\u0bbe\u0bb0\u0ba4\u0bcd\u0ba4\u0bbf\u0bb2\u0bcd \u0b95\u0b9f\u0bcd\u0b9f\u0bc1\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95",
+"Vertical space": "\u0ba8\u0bc6\u0b9f\u0bc1\u0ba4\u0bb3 \u0b87\u0b9f\u0bc8\u0bb5\u0bc6\u0bb3\u0bbf",
+"Image description": "\u0baa\u0b9f \u0bb5\u0bbf\u0bb5\u0bb0\u0bae\u0bcd",
+"Style": "\u0baa\u0bbe\u0ba3\u0bbf",
+"Dimensions": "\u0baa\u0bb0\u0bbf\u0bae\u0bbe\u0ba3\u0b99\u0bcd\u0b95\u0bb3\u0bcd",
+"Insert image": "\u0baa\u0b9f\u0ba4\u0bcd\u0ba4\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"Insert date\/time": "\u0ba4\u0bc7\u0ba4\u0bbf\/\u0ba8\u0bc7\u0bb0\u0bae\u0bcd \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"Remove link": "\u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc8 \u0b85\u0b95\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
+"Url": "\u0b87\u0ba3\u0bc8\u0baf\u0bae\u0bc1\u0b95\u0bb5\u0bb0\u0bbf",
+"Text to display": "\u0b95\u0bbe\u0b9f\u0bcd\u0b9a\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4 \u0bb5\u0bc7\u0ba3\u0bcd\u0b9f\u0bbf\u0baf \u0b89\u0bb0\u0bc8",
+"Anchors": "\u0ba8\u0b99\u0bcd\u0b95\u0bc2\u0bb0\u0b99\u0bcd\u0b95\u0bb3\u0bcd",
+"Insert link": "\u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"New window": "\u0baa\u0bc1\u0ba4\u0bbf\u0baf \u0b9a\u0bbe\u0bb3\u0bb0\u0bae\u0bcd",
+"None": "\u0b8f\u0ba4\u0bc1\u0bae\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u0ba4\u0bbe\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b89\u0bb3\u0bcd\u0bb3\u0bbf\u0b9f\u0bcd\u0b9f \u0b87\u0ba3\u0bc8\u0baf\u0bae\u0bc1\u0b95\u0bb5\u0bb0\u0bbf (URL) \u0b92\u0bb0\u0bc1 \u0bb5\u0bc6\u0bb3\u0bbf\u0baa\u0bcd\u0baa\u0bc1\u0bb1 \u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc1 (external link) \u0baa\u0bcb\u0bb2\u0bcd \u0ba4\u0bcb\u0ba9\u0bcd\u0bb1\u0bc1\u0b95\u0bbf\u0bb1\u0ba4\u0bc1. \u0ba4\u0bc7\u0bb5\u0bc8\u0baf\u0bbe\u0ba9 http:\/\/ \u0bae\u0bc1\u0ba9\u0bcd-\u0b92\u0b9f\u0bcd\u0b9f\u0bc8\u0ba4\u0bcd (prefix) \u0ba4\u0bbe\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b9a\u0bc7\u0bb0\u0bcd\u0b95\u0bcd\u0b95 \u0bb5\u0bc7\u0ba3\u0bcd\u0b9f\u0bc1\u0bae\u0bbe?",
+"Target": "\u0b87\u0bb2\u0b95\u0bcd\u0b95\u0bc1",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u0ba4\u0bbe\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b89\u0bb3\u0bcd\u0bb3\u0bbf\u0b9f\u0bcd\u0b9f \u0b87\u0ba3\u0bc8\u0baf\u0bae\u0bc1\u0b95\u0bb5\u0bb0\u0bbf (URL) \u0b92\u0bb0\u0bc1 \u0bae\u0bbf\u0ba9\u0bcd-\u0b85\u0b9e\u0bcd\u0b9a\u0bb2\u0bcd \u0bae\u0bc1\u0b95\u0bb5\u0bb0\u0bbf \u0baa\u0bcb\u0bb2\u0bcd \u0ba4\u0bcb\u0ba9\u0bcd\u0bb1\u0bc1\u0b95\u0bbf\u0bb1\u0ba4\u0bc1. \u0ba4\u0bc7\u0bb5\u0bc8\u0baf\u0bbe\u0ba9 mailto: \u0bae\u0bc1\u0ba9\u0bcd-\u0b92\u0b9f\u0bcd\u0b9f\u0bc8\u0ba4\u0bcd (prefix) \u0ba4\u0bbe\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b9a\u0bc7\u0bb0\u0bcd\u0b95\u0bcd\u0b95 \u0bb5\u0bc7\u0ba3\u0bcd\u0b9f\u0bc1\u0bae\u0bbe?",
+"Insert\/edit link": "\u0b87\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95\/\u0ba4\u0bca\u0b95\u0bc1\u0b95\u0bcd\u0b95",
+"Insert\/edit video": "\u0b95\u0bbe\u0ba3\u0bca\u0bb3\u0bbf\u0baf\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95\/\u0ba4\u0bca\u0b95\u0bc1\u0b95\u0bcd\u0b95",
+"Poster": "\u0b9a\u0bc1\u0bb5\u0bb0\u0bca\u0b9f\u0bcd\u0b9f\u0bbf",
+"Alternative source": "\u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1 \u0bae\u0bc2\u0bb2\u0bae\u0bcd",
+"Paste your embed code below:": "\u0ba4\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b89\u0b9f\u0bcd\u0baa\u0bc6\u0bbe\u0ba4\u0bbf \u0b95\u0bc1\u0bb1\u0bbf\u0baf\u0bc0\u0b9f\u0bcd\u0b9f\u0bc8 \u0b95\u0bc0\u0bb4\u0bc7 \u0b92\u0b9f\u0bcd\u0b9f\u0bb5\u0bc1\u0bae\u0bcd:",
+"Insert video": "\u0b95\u0bbe\u0ba3\u0bca\u0bb3\u0bbf\u0baf\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"Embed": "\u0b89\u0b9f\u0bcd\u0baa\u0bca\u0ba4\u0bbf",
+"Nonbreaking space": "\u0baa\u0bbf\u0bb0\u0bbf\u0baf\u0bbe\u0ba4 \u0b87\u0b9f\u0bc8\u0bb5\u0bc6\u0bb3\u0bbf",
+"Page break": "\u0baa\u0b95\u0bcd\u0b95 \u0baa\u0bbf\u0bb0\u0bbf\u0baa\u0bcd\u0baa\u0bc1",
+"Paste as text": "\u0b89\u0bb0\u0bc8\u0baf\u0bbe\u0b95 \u0b92\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
+"Preview": "\u0bae\u0bc1\u0ba9\u0bcd\u0ba8\u0bcb\u0b95\u0bcd\u0b95\u0bc1",
+"Print": "\u0b85\u0b9a\u0bcd\u0b9a\u0bbf\u0b9f\u0bc1\u0b95",
+"Save": "\u0b9a\u0bc7\u0bae\u0bbf\u0b95\u0bcd\u0b95",
+"Could not find the specified string.": "\u0b95\u0bc1\u0bb1\u0bbf\u0baa\u0bcd\u0baa\u0bbf\u0b9f\u0bcd\u0b9f \u0b9a\u0bb0\u0bae\u0bcd \u0b95\u0ba3\u0bcd\u0b9f\u0bc1\u0baa\u0bbf\u0b9f\u0bbf\u0b95\u0bcd\u0b95 \u0bae\u0bc1\u0b9f\u0bbf\u0baf\u0bb5\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8",
+"Replace": "\u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
+"Next": "\u0b85\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4",
+"Whole words": "\u0bae\u0bc1\u0bb4\u0bc1 \u0b9a\u0bca\u0bb1\u0bcd\u0b95\u0bb3\u0bcd",
+"Find and replace": "\u0b95\u0ba3\u0bcd\u0b9f\u0bc1\u0baa\u0bbf\u0b9f\u0bbf\u0ba4\u0bcd\u0ba4\u0bc1 \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
+"Replace with": "\u0b87\u0ba4\u0ba9\u0bc1\u0b9f\u0ba9\u0bcd \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
+"Find": "\u0b95\u0ba3\u0bcd\u0b9f\u0bc1\u0baa\u0bbf\u0b9f\u0bbf\u0b95\u0bcd\u0b95",
+"Replace all": "\u0b85\u0ba9\u0bc8\u0ba4\u0bcd\u0ba4\u0bc8\u0baf\u0bc1\u0bae\u0bcd \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\u0b95",
+"Match case": "\u0bb5\u0b9f\u0bbf\u0bb5\u0ba4\u0bcd\u0ba4\u0bc8 \u0baa\u0bca\u0bb0\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95",
+"Prev": "\u0bae\u0bc1\u0ba8\u0bcd\u0ba4\u0bc8\u0baf",
+"Spellcheck": "\u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0baa\u0bcd\u0baa\u0bbf\u0bb4\u0bc8\u0baf\u0bc8 \u0b9a\u0bb0\u0bbf\u0baa\u0bbe\u0bb0\u0bcd\u0b95\u0bcd\u0b95",
+"Finish": "\u0bae\u0bc1\u0b9f\u0bbf\u0b95\u0bcd\u0b95",
+"Ignore all": "\u0b85\u0ba9\u0bc8\u0ba4\u0bcd\u0ba4\u0bc8\u0baf\u0bc1\u0bae\u0bcd \u0baa\u0bc1\u0bb1\u0b95\u0bcd\u0b95\u0ba3\u0bbf\u0b95\u0bcd\u0b95",
+"Ignore": "\u0baa\u0bc1\u0bb1\u0b95\u0bcd\u0b95\u0ba3\u0bbf\u0b95\u0bcd\u0b95",
+"Add to Dictionary": "\u0b85\u0b95\u0bb0\u0bbe\u0ba4\u0bbf\u0baf\u0bbf\u0bb2\u0bcd \u0b9a\u0bc7\u0bb0\u0bcd\u0b95\u0bcd\u0b95",
+"Insert row before": "\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1 \u0bae\u0bc1\u0ba9\u0bcd \u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"Rows": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0b95\u0bb3\u0bcd",
+"Height": "\u0b89\u0baf\u0bb0\u0bae\u0bcd",
+"Paste row after": "\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1 \u0baa\u0bbf\u0ba9\u0bcd \u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bc8 \u0b92\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
+"Alignment": "\u0b9a\u0bc0\u0bb0\u0bae\u0bc8\u0bb5\u0bc1",
+"Border color": "\u0b95\u0bb0\u0bc8\u0baf\u0bbf\u0ba9\u0bcd \u0ba8\u0bbf\u0bb1\u0bae\u0bcd",
+"Column group": "\u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0b95\u0bc1\u0bb4\u0bc1",
+"Row": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8",
+"Insert column before": "\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1 \u0bae\u0bc1\u0ba9\u0bcd \u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"Split cell": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8\u0b95\u0bb3\u0bc8 \u0baa\u0bbf\u0bb0\u0bbf\u0b95\u0bcd\u0b95",
+"Cell padding": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8 \u0ba8\u0bbf\u0bb0\u0baa\u0bcd\u0baa\u0bb2\u0bcd",
+"Cell spacing": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8 \u0b87\u0b9f\u0bc8\u0bb5\u0bc6\u0bb3\u0bbf",
+"Row type": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0bb5\u0b95\u0bc8",
+"Insert table": "\u0b85\u0b9f\u0bcd\u0b9f\u0bb5\u0ba3\u0bc8\u0baf\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"Body": "\u0b89\u0b9f\u0bb2\u0bcd",
+"Caption": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1",
+"Footer": "\u0b85\u0b9f\u0bbf\u0b95\u0bcd\u0b95\u0bc1\u0bb1\u0bbf\u0baa\u0bcd\u0baa\u0bc1",
+"Delete row": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bc8 \u0ba8\u0bc0\u0b95\u0bcd\u0b95\u0bc1\u0b95",
+"Paste row before": "\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1 \u0bae\u0bc1\u0ba9\u0bcd \u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bc8 \u0b92\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
+"Scope": "\u0bb5\u0bb0\u0bc8\u0baf\u0bc6\u0bb2\u0bcd\u0bb2\u0bc8",
+"Delete table": "\u0b85\u0b9f\u0bcd\u0b9f\u0bb5\u0ba3\u0bc8\u0baf\u0bc8 \u0ba8\u0bc0\u0b95\u0bcd\u0b95\u0bc1\u0b95",
+"H Align": "\u0b95\u0bbf (H) \u0b87\u0b9a\u0bc8\u0bb5\u0bc1",
+"Top": "\u0bae\u0bc7\u0bb2\u0bcd",
+"Header cell": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1 \u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8",
+"Column": "\u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8",
+"Row group": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0b95\u0bc1\u0bb4\u0bc1",
+"Cell": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8",
+"Middle": "\u0ba8\u0b9f\u0bc1",
+"Cell type": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8 \u0bb5\u0b95\u0bc8",
+"Copy row": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bc8 \u0ba8\u0b95\u0bb2\u0bc6\u0b9f\u0bc1\u0b95\u0bcd\u0b95",
+"Row properties": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8 \u0baa\u0ba3\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
+"Table properties": "\u0b85\u0b9f\u0bcd\u0b9f\u0bb5\u0ba3\u0bc8 \u0baa\u0ba3\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
+"Bottom": "\u0bae\u0bc7\u0bb2\u0bcd",
+"V Align": "\u0b9a\u0bc6 (V) \u0b87\u0b9a\u0bc8\u0bb5\u0bc1",
+"Header": "\u0ba4\u0bb2\u0bc8\u0baa\u0bcd\u0baa\u0bc1",
+"Right": "\u0bb5\u0bb2\u0bae\u0bcd",
+"Insert column after": "\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1 \u0baa\u0bbf\u0ba9\u0bcd \u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"Cols": "\u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0b95\u0bb3\u0bcd",
+"Insert row after": "\u0b87\u0ba4\u0bb1\u0bcd\u0b95\u0bc1 \u0baa\u0bbf\u0ba9\u0bcd \u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"Width": "\u0b85\u0b95\u0bb2\u0bae\u0bcd",
+"Cell properties": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8 \u0baa\u0ba3\u0bcd\u0baa\u0bc1\u0b95\u0bb3\u0bcd",
+"Left": "\u0b87\u0b9f\u0bae\u0bcd",
+"Cut row": "\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bc8 \u0bb5\u0bc6\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
+"Delete column": "\u0ba8\u0bc6\u0b9f\u0bc1\u0bb5\u0bb0\u0bbf\u0b9a\u0bc8\u0baf\u0bc8 \u0ba8\u0bc0\u0b95\u0bcd\u0b95\u0bc1\u0b95",
+"Center": "\u0bae\u0bc8\u0baf\u0bae\u0bcd",
+"Merge cells": "\u0b9a\u0bbf\u0bb1\u0bcd\u0bb1\u0bb1\u0bc8\u0b95\u0bb3\u0bc8 \u0b9a\u0bc7\u0bb0\u0bcd\u0b95\u0bcd\u0b95",
+"Insert template": "\u0bb5\u0bbe\u0bb0\u0bcd\u0baa\u0bcd\u0baa\u0bc1\u0bb0\u0bc1\u0bb5\u0bc8 \u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"Templates": "\u0bb5\u0bbe\u0bb0\u0bcd\u0baa\u0bcd\u0baa\u0bc1\u0bb0\u0bc1\u0b95\u0bcd\u0b95\u0bb3\u0bcd",
+"Background color": "\u0baa\u0bbf\u0ba9\u0bcd\u0ba9\u0ba3\u0bbf \u0ba8\u0bbf\u0bb1\u0bae\u0bcd",
+"Custom...": "\u0ba4\u0ba9\u0bbf\u0baa\u0bcd\u0baa\u0baf\u0ba9\u0bcd...",
+"Custom color": "\u0ba4\u0ba9\u0bbf\u0baa\u0bcd\u0baa\u0baf\u0ba9\u0bcd \u0ba8\u0bbf\u0bb1\u0bae\u0bcd",
+"No color": "\u0ba8\u0bbf\u0bb1\u0bae\u0bcd \u0b87\u0bb2\u0bcd\u0bb2\u0bc8",
+"Text color": "\u0b89\u0bb0\u0bc8\u0baf\u0bbf\u0ba9\u0bcd \u0ba8\u0bbf\u0bb1\u0bae\u0bcd",
+"Show blocks": "\u0ba4\u0bca\u0b95\u0bc1\u0ba4\u0bbf\u0b95\u0bb3\u0bc8 \u0b95\u0bbe\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
+"Show invisible characters": "\u0b95\u0ba3\u0bcd\u0ba3\u0bc1\u0b95\u0bcd\u0b95\u0bc1\u0ba4\u0bcd \u0ba4\u0bc6\u0bb0\u0bbf\u0baf\u0bbe\u0ba4 \u0b89\u0bb0\u0bc1\u0b95\u0bcd\u0b95\u0bb3\u0bc8 \u0b95\u0bbe\u0b9f\u0bcd\u0b9f\u0bc1\u0b95",
+"Words: {0}": "\u0b9a\u0bca\u0bb1\u0bcd\u0b95\u0bb3\u0bcd: {0}",
+"Insert": "\u0b9a\u0bc6\u0bb0\u0bc1\u0b95\u0bc1\u0b95",
+"File": "\u0b95\u0bcb\u0baa\u0bcd\u0baa\u0bc1",
+"Edit": "\u0ba4\u0bca\u0b95\u0bc1\u0b95\u0bcd\u0b95",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u0b89\u0baf\u0bb0\u0bcd \u0b89\u0bb0\u0bc8 \u0baa\u0b95\u0bc1\u0ba4\u0bbf. \u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0b95\u0bcd\u0b95\u0bc1 ALT-F9 , \u0b95\u0bb0\u0bc1\u0bb5\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0bc8\u0b95\u0bcd\u0b95\u0bc1 ALT-F10 , \u0b89\u0ba4\u0bb5\u0bbf\u0b95\u0bcd\u0b95\u0bc1 ALT-0",
+"Tools": "\u0b95\u0bb0\u0bc1\u0bb5\u0bbf\u0b95\u0bb3\u0bcd",
+"View": "\u0ba8\u0bcb\u0b95\u0bcd\u0b95\u0bc1\u0b95",
+"Table": "\u0b85\u0b9f\u0bcd\u0b9f\u0bb5\u0ba3\u0bc8",
+"Format": "\u0bb5\u0b9f\u0bbf\u0bb5\u0bae\u0bc8\u0baa\u0bcd\u0baa\u0bc1"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/tg.js b/program/js/tinymce/langs/tg.js
new file mode 100644
index 000000000..defffc95f
--- /dev/null
+++ b/program/js/tinymce/langs/tg.js
@@ -0,0 +1,191 @@
+tinymce.addI18n('tg',{
+"Cut": "\u0411\u0443\u0440\u0438\u0434\u0430\u043d",
+"Heading 5": "\u0421\u0430\u0440\u043b\u0430\u0432\u04b3\u0430\u0438 5",
+"Header 2": "\u0421\u0430\u0440\u043b\u0430\u0432\u04b3\u0430\u0438 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0411\u0430\u0440\u0438 \u0448\u0443\u0441\u0445\u0430\u0431\u0430\u0440\u0434\u043e\u0440\u0438 \u043a\u0430\u0440\u0434\u0430\u043d Ctrl+X\/C\/V \u0438\u0441\u0442\u0438\u0444\u043e\u0434\u0430 \u043a\u0443\u043d\u0435\u0434",
+"Heading 4": "\u0421\u0430\u0440\u043b\u0430\u0432\u04b3\u0430\u0438 4",
+"Div": "Div",
+"Heading 2": "\u0421\u0430\u0440\u043b\u0430\u0432\u04b3\u0430\u0438 2",
+"Paste": "\u0413\u0443\u0437\u043e\u0448\u0442\u0430\u043d",
+"Close": "\u041c\u0430\u04b3\u043a\u0430\u043c \u043a\u0430\u0440\u0434\u0430\u043d",
+"Font Family": "\u0428\u0440\u0438\u0444\u0442",
+"Pre": "Pre",
+"Align right": "\u0420\u043e\u0441\u0442 \u043a\u0430\u0440\u0434\u0430\u043d \u0430\u0437 \u0440\u043e\u0441\u0442",
+"New document": "\u04b2\u0443\u04b7\u04b7\u0430\u0442\u0438 \u043d\u0430\u0432",
+"Blockquote": "\u041d\u043e\u0445\u0443\u043d\u0430\u043a",
+"Numbered list": "\u0420\u0443\u0439\u0445\u0430\u0442\u0438 \u0431\u043e \u0442\u0430\u0440\u0442\u0438\u0431",
+"Heading 1": "\u0421\u0430\u0440\u043b\u0430\u0432\u04b3\u0430\u0438 1",
+"Headings": "\u0421\u0430\u0440\u043b\u0430\u0432\u04b3\u0430\u04b3\u043e",
+"Increase indent": "\u0410\u0431\u0437\u0430\u0441\u0442\u0440\u043e \u0432\u0430\u0441\u0435\u044a \u043a\u0430\u0440\u0434\u0430\u043d",
+"Formats": "\u0424\u0430\u0440\u043c\u0430\u0442\u04b3\u043e",
+"Headers": "\u0421\u0430\u0440\u043b\u0430\u0432\u04b3\u0430\u04b3\u043e",
+"Select all": "\u0418\u043d\u0442\u0438\u0445\u043e\u0431\u0438 \u043a\u0443\u043b\u043b\u0438",
+"Header 3": "\u0421\u0430\u0440\u043b\u0430\u0432\u04b3\u0430\u0438 3",
+"Blocks": "\u0425\u0430\u0442\u0438 \u0431\u043b\u043e\u043a\u04e3",
+"Undo": "\u0411\u043e\u0437 \u0433\u0430\u0440\u0434\u043e\u043d\u0438\u0434\u0430\u043d",
+"Strikethrough": "\u0410\u0437 \u043c\u043e\u0431\u0430\u0439\u043d\u0430\u0448 \u0445\u0430\u0442 \u043a\u0430\u0448\u0438\u0434\u0430\u043d",
+"Bullet list": "\u0420\u0443\u0439\u0445\u0430\u0442\u0438 \u0431\u0435 \u0442\u0430\u0440\u0442\u0438\u0431",
+"Header 1": "\u0421\u0430\u0440\u043b\u0430\u0432\u04b3\u0430\u0438 1",
+"Superscript": "\u0410\u0437 \u0445\u0430\u0442 \u0431\u043e\u043b\u043e\u0442\u0430\u0440",
+"Clear formatting": "\u0424\u043e\u0440\u043c\u0430\u0442\u04b3\u043e\u0440\u043e \u0431\u0435\u043a\u043e\u0440 \u043a\u0430\u0440\u0434\u0430\u043d",
+"Font Sizes": "\u04b2\u0430\u04b7\u043c\u0438 \u0448\u0440\u0438\u0444\u0442",
+"Subscript": "\u0410\u0437 \u0445\u0430\u0442 \u043f\u043e\u0451\u043d\u0442\u0430\u0440",
+"Header 6": "\u0421\u0430\u0440\u043b\u0430\u0432\u04b3\u0430\u0438 6",
+"Redo": "\u0411\u0435\u043a\u043e\u0440 \u043a\u0430\u0440\u0434\u0430\u043d",
+"Paragraph": "\u0410\u0431\u0437\u0430\u0441\u0442",
+"Ok": "\u041e\u043a",
+"Bold": "\u0492\u0430\u0444\u0441",
+"Code": "Code",
+"Italic": "\u0418\u0442\u0430\u043b\u0438\u043a",
+"Align center": "\u0420\u043e\u0441\u0442 \u043a\u0430\u0440\u0434\u0430\u043d \u0430\u0437 \u043c\u043e\u0431\u0430\u0439\u043d",
+"Header 5": "\u0421\u0430\u0440\u043b\u0430\u0432\u04b3\u0430\u0438 5",
+"Heading 6": "\u0421\u0430\u0440\u043b\u0430\u0432\u04b3\u0430\u0438 6",
+"Heading 3": "\u0421\u0430\u0440\u043b\u0430\u0432\u04b3\u0430\u0438 3",
+"Decrease indent": "\u0410\u0431\u0437\u0430\u0441\u0442\u0440\u043e \u0445\u0443\u0440\u0434 \u043a\u0430\u0440\u0434\u0430\u043d",
+"Header 4": "\u0421\u0430\u0440\u043b\u0430\u0432\u04b3\u0430\u0438 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0422\u043e \u043e\u043d \u0437\u0430\u043c\u043e\u043d\u0435, \u043a\u0438 \u0438\u043d \u0445\u043e\u043c\u0443\u0448 \u0430\u0441\u0442, \u04b3\u0430\u043c\u0447\u0443\u043d \u043c\u0430\u043d\u0442 \u0432\u043e\u0440\u0438\u0434 \u043a\u0443\u043d\u0435\u0434.",
+"Underline": "\u0414\u0430\u0440 \u0442\u0430\u0433\u0430\u0448 \u0445\u0430\u0442 \u043a\u0430\u0448\u0438\u0434\u0430\u043d",
+"Cancel": "\u0411\u0435\u043a\u043e\u0440 \u043a\u0430\u0440\u0434\u0430\u043d",
+"Justify": "\u0410\u0437 \u04b3\u0430\u0440 \u0434\u0443 \u0442\u0430\u0440\u0430\u0444 \u0440\u043e\u0441\u0442 \u043a\u0430\u0440\u0434\u0430\u043d",
+"Inline": "\u0414\u0430\u0440 \u044f\u043a \u0445\u0430\u0442",
+"Copy": "\u041d\u0443\u0441\u0445\u0430\u0431\u043e\u0440\u0434\u043e\u043d\u0438 \u043a\u0430\u0440\u0434\u0430\u043d",
+"Align left": "\u0420\u043e\u0441 \u043a\u0430\u0440\u0434\u0430\u043d \u0430\u0437 \u0447\u0430\u043f",
+"Visual aids": "\u041a\u0443\u043c\u043c\u0430\u043a\u0438 \u0430\u0451\u043d\u04e3",
+"Lower Greek": "\u0425\u0443\u0440\u0434\u0438 \u042e\u043d\u043e\u043d\u04e3",
+"Square": "\u0427\u043e\u0440\u043a\u0443\u043d\u04b7\u0430",
+"Default": "\u0411\u043e \u0442\u0430\u0440\u0437\u0438 \u0445\u043e\u043c\u0443\u0448\u04e3",
+"Lower Alpha": "\u0425\u0443\u0440\u0434\u0438 \u044e\u043d\u043e\u043d\u04e3",
+"Circle": "\u0414\u043e\u0438\u0440\u0430",
+"Disc": "\u0414\u0438\u0441\u043a",
+"Upper Alpha": "\u041a\u0430\u043b\u043e\u043d\u0438 \u044e\u043d\u043e\u043d\u04e3",
+"Upper Roman": "\u041a\u0430\u043b\u043e\u043d\u0438 \u0440\u043e\u043c\u0430\u043d\u04e3",
+"Lower Roman": "\u0425\u0443\u0440\u0434\u0438 \u0440\u043e\u043c\u0430\u043d\u04e3",
+"Name": "\u041d\u043e\u043c",
+"Anchor": "\u041b\u0430\u043d\u0433\u0430\u0440",
+"You have unsaved changes are you sure you want to navigate away?": "\u0422\u0430\u0493\u0438\u0440\u043e\u0442\u04b3\u043e\u0438 \u043a\u0430\u0440\u0434\u0430\u0430\u0442\u043e\u043d\u0440\u043e \u0442\u043e \u04b3\u043e\u043b \u043d\u0438\u0433\u043e\u04b3 \u043d\u0430\u0434\u043e\u0448\u0442\u0430\u0435\u0434!\n\u041e\u0451 \u0448\u0443\u043c\u043e \u0434\u0430\u0440 \u04b3\u0430\u049b\u0438\u049b\u0430\u0442 \u043c\u0435\u0445\u043e\u04b3\u0435\u0434 \u043a\u0438 \u0431\u0430 \u0434\u0438\u0433\u0430\u0440 \u049b\u0438\u0441\u043c \u0433\u0443\u0437\u0430\u0440\u0435\u0434?",
+"Restore last draft": "\u0422\u0430\u0493\u0438\u0440\u043e\u0442\u04b3\u043e\u0438 \u043e\u0445\u0438\u0440\u0438\u043d\u0440\u043e \u0431\u0435\u043a\u043e\u0440 \u043a\u0443\u043d",
+"Special character": "\u0420\u0430\u043c\u0437\u04b3\u043e\u0438 \u043c\u0430\u0445\u0441\u0443\u0441",
+"Source code": "\u041a\u043e\u0434\u0438 \u0430\u0441\u043b\u0438",
+"Right to left": "\u0410\u0437 \u0440\u043e\u0441\u0442 \u0431\u0430 \u0447\u0430\u043f",
+"Left to right": "\u0410\u0437 \u0447\u0430\u043f \u0431\u0430 \u0440\u043e\u0441\u0442",
+"Emoticons": "\u042d\u04b3\u0441\u043e\u0441\u04b3\u043e",
+"Robots": "Robots",
+"Document properties": "\u04b2\u043e\u043b\u0430\u0442\u0438 \u04b3\u0443\u04b7\u04b7\u0430\u0442",
+"Title": "\u0421\u0430\u0440\u043b\u0430\u0432\u04b3\u0430",
+"Keywords": "\u041a\u0430\u043b\u0438\u043c\u0430\u04b3\u043e\u0438 \u043c\u0443\u0442\u0430\u043d\u043e\u0441\u0438\u0431",
+"Encoding": "\u0411\u043e \u0440\u0430\u043c\u0437 \u0433\u0430\u0440\u0434\u043e\u043d\u0438\u0434\u0430\u043d",
+"Description": "\u041c\u0430\u044a\u043b\u0443\u043c\u043e\u0442\u0438 \u043c\u0443\u0445\u0442\u0430\u0441\u0430\u0440",
+"Author": "\u041c\u0443\u0430\u043b\u043b\u0438\u0444",
+"Fullscreen": "\u041a\u0430\u043b\u043e\u043d \u043a\u0430\u0440\u0434\u0430\u043d",
+"Horizontal line": "\u0425\u0430\u0442\u0438 \u0443\u0444\u0443\u049b\u04e3",
+"Horizontal space": "\u0424\u043e\u0441\u0438\u043b\u0430\u0438 \u0443\u0444\u0443\u049b\u04e3",
+"Insert\/edit image": "\u0412\u043e\u0440\u0438\u0434\/\u0422\u0430\u0493\u0438\u0440\u0438 \u0440\u0430\u0441\u043c",
+"General": "\u041e\u0434\u0434\u0438",
+"Advanced": "\u041c\u0443\u0442\u0430\u0440\u0430\u049b\u0438",
+"Source": "\u041c\u0430\u043a\u043e\u043d\u0438 \u0430\u0441\u043e\u0441\u04e3",
+"Border": "\u04b2\u0443\u0434\u0443\u0434",
+"Constrain proportions": "\u0427\u0435\u043d\u0430\u043a\u04b3\u043e\u0438 \u043c\u0430\u04b7\u0431\u0443\u0440\u0438",
+"Vertical space": "\u0424\u043e\u0441\u0438\u043b\u0430\u0438 \u0430\u043c\u0443\u0434\u04e3",
+"Image description": "\u041c\u0430\u044a\u043b\u0443\u043c\u043e\u0442\u0438 \u043c\u0443\u0445\u0442\u0430\u0441\u0430\u0440",
+"Style": "\u0421\u0442\u0438\u043b",
+"Dimensions": "\u0427\u0435\u043d\u0430\u043a\u04b3\u043e",
+"Insert image": "\u0420\u0430\u0441\u043c \u0432\u043e\u0440\u0438\u0434 \u043a\u0430\u0440\u0434\u0430\u043d",
+"Insert date\/time": "\u0412\u043e\u0440\u0438\u0434\u0438 \u0420\u04ef\u0437\/\u0421\u043e\u0430\u0442",
+"Remove link": "\u041d\u0435\u0441\u0442 \u043a\u0430\u0440\u0434\u0430\u043d\u0438 \u0438\u0441\u0442\u0438\u043d\u043e\u0434",
+"Url": "Url",
+"Text to display": "\u041c\u0430\u0442\u043d \u0431\u0430\u0440\u043e\u0438 \u043c\u0430\u043d\u0437\u0443\u0440",
+"Anchors": "\u041b\u0430\u043d\u0433\u0430\u0440",
+"Insert link": "\u0418\u0441\u0442\u0438\u043d\u043e\u0434 \u0433\u0443\u0437\u043e\u0448\u0442\u0430\u043d",
+"New window": "\u0422\u0438\u0440\u0435\u0437\u0430\u0438 \u043d\u0430\u0432",
+"None": "\u04b2\u0435\u04b7 \u0447\u0438\u0437",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "URL \u0430\u0434\u0440\u0435\u0441\u0435, \u043a\u0438 \u0448\u0443\u043c\u043e \u0432\u043e\u0440\u0438\u0434 \u043a\u0430\u0440\u0434\u0435\u0434 \u0438\u0441\u0442\u0438\u043d\u043e\u0434 \u0430\u0441\u0442. \u041f\u0440\u0435\u0444\u0438\u043a\u0441\u0438 http:\/\/: \u0438\u043b\u043e\u0432\u0430 \u043a\u0443\u043d\u0430\u043c?",
+"Target": "\u041d\u0438\u0448\u043e\u043d\u0430",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "URL \u0430\u0434\u0440\u0435\u0441\u0435, \u043a\u0438 \u0448\u0443\u043c\u043e \u0432\u043e\u0440\u0438\u0434 \u043a\u0430\u0440\u0434\u0435\u0434 Email \u0430\u0434\u0440\u0435\u0441 \u0430\u0441\u0442. \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0438 mailto: \u0438\u043b\u043e\u0432\u0430 \u043a\u0443\u043d\u0430\u043c",
+"Insert\/edit link": "\u0412\u043e\u0440\u0438\u0434\/\u0442\u0430\u0493\u0438\u0440 \u0434\u043e\u0434\u0430\u043d\u0438 \u0438\u0441\u0442\u0438\u043d\u043e\u0434",
+"Insert\/edit video": "\u0412\u043e\u0440\u0438\u0434\/\u0442\u0430\u0493\u0438\u0440\u0438 \u0432\u0438\u0434\u0435\u043e",
+"Poster": "\u042d\u044a\u043b\u043e\u043d\u043d\u043e\u043c\u0430",
+"Alternative source": "\u0421\u0430\u0440\u0447\u0430\u0448\u043c\u0430\u0438 \u0430\u043b\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u04e3",
+"Paste your embed code below:": "embed \u043a\u043e\u0434\u0440\u043e \u0438\u043d\u04b7\u043e \u0432\u043e\u0440\u0438\u0434 \u043a\u0443\u043d\u0435\u0434",
+"Insert video": "\u0412\u043e\u0440\u0438\u0434\u0438 \u0432\u0438\u0434\u0435\u043e",
+"Embed": "Embed",
+"Nonbreaking space": "\u0411\u0435\u0444\u043e\u0441\u0438\u043b\u0430",
+"Page break": "\u0421\u0430\u04b3\u0438\u0444\u0430\u0440\u043e \u0448\u0438\u043a\u0430\u0441\u0442\u0430\u043d",
+"Paste as text": "\u0413\u0443\u0437\u043e\u0448\u0442\u0430\u043d \u04b3\u0430\u043c\u0447\u0443 \u043c\u0430\u0442\u043d",
+"Preview": "\u041c\u0430\u043d\u0437\u0443\u0440",
+"Print": "\u0427\u043e\u043f \u043a\u0430\u0440\u0434\u0430\u043d",
+"Save": "\u041d\u0438\u0433\u043e\u04b3 \u0434\u043e\u0448\u0442\u0430\u043d",
+"Could not find the specified string.": "\u0425\u0430\u0442\u0438 \u0434\u0430\u0440\u0445\u043e\u0441\u0442\u0448\u0443\u0434\u0430\u0440\u043e \u0451\u0444\u0442\u0430 \u043d\u0430\u0442\u0430\u0432\u043e\u043d\u0438\u0441\u0442\u0430\u043c",
+"Replace": "\u0422\u0430\u0493\u0438\u0440",
+"Next": "\u041e\u044f\u043d\u0434\u0430",
+"Whole words": "\u041a\u0430\u043b\u0438\u043c\u0430\u04b3\u043e\u0438 \u043f\u0443\u0440\u0440\u0430",
+"Find and replace": "\u0401\u0444\u0442\u0430\u043d \u0432\u0430 \u0442\u0430\u0493\u0438\u0440 \u0434\u043e\u0434\u0430\u043d",
+"Replace with": "\u0422\u0430\u0493\u0438\u0440 \u0431\u0430",
+"Find": "\u0401\u0444\u0442\u0430\u043d",
+"Replace all": "\u0422\u0430\u0493\u0438\u0440\u0438 \u04b3\u0430\u043c\u0430\u0430\u0448",
+"Match case": "\u041c\u0443\u0432\u043e\u0444\u0438\u049b\u0430\u0442",
+"Prev": "\u0413\u0443\u0437\u0430\u0448\u0442\u0430",
+"Spellcheck": "\u0422\u0430\u0444\u0442\u0438\u0448\u0438 \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u04e3",
+"Finish": "\u0422\u0430\u043c\u043e\u043c",
+"Ignore all": "\u0410\u04b3\u0430\u043c\u0438\u044f\u0442 \u043d\u0430\u0434\u043e\u0434\u0430\u043d \u0431\u0430 \u04b3\u0430\u043c\u043c\u0430\u0448",
+"Ignore": "\u0410\u04b3\u0430\u043c\u0438\u044f\u0442 \u043d\u0430\u0434\u043e\u0434\u0430\u043d",
+"Insert row before": "\u0425\u0430\u0442 \u0432\u043e\u0440\u0438\u0434 \u043a\u0430\u0440\u0434\u0430\u043d \u043f\u0435\u0448 \u0430\u0437",
+"Rows": "\u0425\u0430\u0442\u04b3\u043e",
+"Height": "\u0411\u0430\u043b\u0430\u043d\u0434\u0438",
+"Paste row after": "\u0425\u0430\u0442 \u0433\u0443\u0437\u043e\u0448\u0442\u0430\u043d \u043f\u0430\u0441 \u0430\u0437",
+"Alignment": "\u0420\u043e\u0441\u0442 \u043a\u0430\u0440\u0434\u0430\u043d",
+"Column group": "\u0413\u0443\u0440\u0443\u04b3\u0438 \u0441\u0443\u0442\u0443\u043d",
+"Row": "\u0425\u0430\u0442",
+"Insert column before": "\u0421\u0443\u0442\u0443\u043d \u0432\u043e\u0440\u0438\u0434 \u043a\u0430\u0440\u0434\u0430\u043d \u043f\u0435\u0448 \u0430\u0437",
+"Split cell": "\u0421\u04ef\u0440\u043e\u0445\u0438\u04b3\u043e\u0440\u043e \u0431\u0443\u0440\u0438\u0434\u0430\u043d",
+"Cell padding": "\u0424\u043e\u0441\u0438\u043b\u0430\u0438 \u0434\u0430\u0440\u0443\u043d\u0430",
+"Cell spacing": "\u0424\u043e\u0441\u0438\u043b\u0430\u0438 \u0431\u0435\u0440\u0443\u043d\u0430",
+"Row type": "\u041d\u0430\u043c\u0443\u0434\u0438 \u0445\u0430\u0442",
+"Insert table": "\u0412\u043e\u0440\u0438\u0434 \u043a\u0430\u0440\u0434\u0430\u043d\u0438 \u04b7\u0430\u0434\u0432\u0430\u043b",
+"Body": "\u049a\u0438\u0441\u043c\u0438 \u0430\u0441\u043b\u0438",
+"Caption": "\u0421\u0430\u0440\u043b\u0430\u0432\u04b3\u0430",
+"Footer": "\u049a\u0438\u0441\u043c\u0438 \u043f\u043e\u0451\u043d\u0438",
+"Delete row": "\u041d\u0435\u0441\u0442 \u043a\u0430\u0440\u0434\u0430\u043d\u0438 \u0445\u0430\u0442",
+"Paste row before": "\u0425\u0430\u0442 \u0433\u0443\u0437\u043e\u0448\u0442\u0430\u043d \u043f\u0435\u0448 \u0430\u0437",
+"Scope": "Scope",
+"Delete table": "\u041d\u0435\u0441\u0442 \u043a\u0430\u0440\u0434\u0430\u043d\u0438 \u04b7\u0430\u0434\u0432\u0430\u043b",
+"H Align": "\u0410\u0437 \u0431\u043e\u043b\u043e \u0431\u0430 \u043f\u043e\u0451\u043d",
+"Top": "\u0411\u043e\u043b\u043e",
+"Header cell": "\u0421\u0430\u0440\u043b\u0430\u0432\u04b3\u0430",
+"Column": "\u0421\u0443\u0442\u0443\u043d",
+"Row group": "\u0413\u0443\u0440\u0443\u04b3\u0438 \u0445\u0430\u0442\u04b3\u043e",
+"Cell": "\u0421\u04ef\u0440\u043e\u0445",
+"Middle": "\u041c\u043e\u0431\u0430\u0439\u043d",
+"Cell type": "\u041d\u0430\u043c\u0443\u0434\u0438 \u0441\u0443\u0440\u043e\u0445\u04e3",
+"Copy row": "\u041d\u0443\u0441\u0445\u0430\u0431\u043e\u0440\u0434\u043e\u0440\u0438\u0438 \u0445\u0430\u0442",
+"Row properties": "\u0425\u0443\u0441\u0443\u0441\u0438\u044f\u0442\u0438 \u0445\u0430\u0442",
+"Table properties": "\u0425\u0443\u0441\u0443\u0441\u0438\u044f\u0442\u0438 \u04b7\u0430\u0434\u0432\u0430\u043b",
+"Bottom": "\u041f\u043e\u0451\u043d",
+"V Align": "\u0410\u0437 \u0447\u0430\u043f \u0431\u0430 \u0440\u043e\u0441\u0442",
+"Header": "\u049a\u0438\u0441\u043c\u0438 \u0431\u043e\u043b\u043e\u0438",
+"Right": "\u0420\u043e\u0441\u0442",
+"Insert column after": "\u0421\u0443\u0442\u0443\u043d \u0432\u043e\u0440\u0438\u0434 \u043a\u0430\u0440\u0434\u0430\u043d \u043f\u0430\u0441 \u0430\u0437",
+"Cols": "\u0421\u0443\u0442\u0443\u043d\u04b3\u043e",
+"Insert row after": "\u0425\u0430\u0442 \u0432\u043e\u0440\u0438\u0434 \u043a\u0430\u0440\u0434\u0430\u043d \u043f\u0430\u0441 \u0430\u0437",
+"Width": "\u041f\u0430\u04b3\u043d\u0438",
+"Cell properties": "\u0425\u0443\u0441\u0443\u0441\u0438\u044f\u0442\u0438 \u0441\u04ef\u0440\u043e\u0445",
+"Left": "\u0427\u0430\u043f",
+"Cut row": "\u0411\u0443\u0440\u0438\u0434\u0430\u043d\u0438 \u0445\u0430\u0442",
+"Delete column": "\u041d\u0435\u0441\u0442 \u043a\u0430\u0440\u0434\u0430\u043d\u0438 \u0441\u0443\u0442\u0443\u043d",
+"Center": "\u041c\u0430\u0440\u043a\u0430\u0437",
+"Merge cells": "\u0421\u04ef\u0440\u043e\u0445\u0438\u04b3\u043e\u0440\u043e \u044f\u043a\u04b7\u043e\u044f \u043a\u0430\u0440\u0434\u0430\u043d",
+"Insert template": "\u0412\u043e\u0440\u0438\u0434\u0438 \u049b\u043e\u043b\u0430\u0431",
+"Templates": "\u049a\u043e\u043b\u0430\u0431",
+"Background color": "\u0420\u0430\u043d\u0433\u0438 \u043f\u0443\u0448\u0442\u0438 \u043c\u0430\u0442\u043d",
+"Text color": "\u0420\u0430\u043d\u0433\u0438 \u043c\u0430\u0442\u043d",
+"Show blocks": "\u041d\u0438\u0448\u043e\u043d \u0434\u043e\u0434\u0430\u043d\u0438 \u0433\u0443\u0440\u0443\u04b3\u04b3\u043e",
+"Show invisible characters": "\u0420\u0430\u043c\u0437\u04b3\u043e\u0438 \u043c\u0430\u0445\u0441\u0443\u0441\u0440\u043e \u043d\u0438\u0448\u043e\u043d \u0434\u043e\u0434\u0430\u043d",
+"Words: {0}": "\u041a\u043b\u0438\u043c\u0430\u04b3\u043e: {0}",
+"Insert": "\u0412\u043e\u0440\u0438\u0434",
+"File": "\u0424\u0430\u0439\u043b",
+"Edit": "\u0422\u0430\u0493\u0438\u0440\u043e\u0442",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u041c\u0435\u043d\u044e ALT-F9. \u0410\u0441\u0431\u043e\u0431\u04b3\u043e ALT-F10. \u041a\u0443\u043c\u043c\u0430\u043a ALT-0",
+"Tools": "\u0410\u0441\u0431\u043e\u0431\u04b3\u043e",
+"View": "\u041c\u0430\u043d\u0437\u0443\u0440 \u043a\u0430\u0440\u0434\u0430\u043d",
+"Table": "\u04b6\u0430\u0434\u0432\u0430\u043b",
+"Format": "\u0424\u043e\u0440\u043c\u0430\u0442"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/th_TH.js b/program/js/tinymce/langs/th_TH.js
new file mode 100644
index 000000000..845046f5b
--- /dev/null
+++ b/program/js/tinymce/langs/th_TH.js
@@ -0,0 +1,179 @@
+tinymce.addI18n('th_TH',{
+"Cut": "\u0e15\u0e31\u0e14",
+"Header 2": "\u0e2a\u0e48\u0e27\u0e19\u0e2b\u0e31\u0e27 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0e40\u0e1a\u0e23\u0e32\u0e27\u0e4c\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e44\u0e21\u0e48\u0e2a\u0e19\u0e31\u0e1a\u0e2a\u0e19\u0e38\u0e19\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07\u0e42\u0e14\u0e22\u0e15\u0e23\u0e07\u0e44\u0e1b\u0e22\u0e31\u0e07\u0e04\u0e25\u0e34\u0e1b\u0e1a\u0e2d\u0e23\u0e4c\u0e14 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e43\u0e0a\u0e49\u0e41\u0e1b\u0e49\u0e19\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e25\u0e31\u0e14 Ctrl+X\/C\/V \u0e41\u0e17\u0e19",
+"Div": "Div",
+"Paste": "\u0e27\u0e32\u0e07",
+"Close": "\u0e1b\u0e34\u0e14",
+"Font Family": "\u0e15\u0e23\u0e30\u0e01\u0e39\u0e25\u0e41\u0e1a\u0e1a\u0e2d\u0e31\u0e01\u0e29\u0e23",
+"Pre": "\u0e01\u0e48\u0e2d\u0e19",
+"Align right": "\u0e08\u0e31\u0e14\u0e0a\u0e34\u0e14\u0e02\u0e27\u0e32",
+"New document": "\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e43\u0e2b\u0e21\u0e48",
+"Blockquote": "\u0e22\u0e01\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e17\u0e31\u0e49\u0e07\u0e22\u0e48\u0e2d\u0e2b\u0e19\u0e49\u0e32",
+"Numbered list": "\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e40\u0e25\u0e02",
+"Increase indent": "\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e01\u0e32\u0e23\u0e40\u0e22\u0e37\u0e49\u0e2d\u0e07",
+"Formats": "\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a",
+"Headers": "\u0e2a\u0e48\u0e27\u0e19\u0e2b\u0e31\u0e27",
+"Select all": "\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14",
+"Header 3": "\u0e2a\u0e48\u0e27\u0e19\u0e2b\u0e31\u0e27 3",
+"Blocks": "\u0e1a\u0e25\u0e47\u0e2d\u0e01",
+"Undo": "\u0e40\u0e25\u0e34\u0e01\u0e17\u0e33",
+"Strikethrough": "\u0e02\u0e35\u0e14\u0e17\u0e31\u0e1a",
+"Bullet list": "\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e2a\u0e31\u0e0d\u0e25\u0e31\u0e01\u0e29\u0e13\u0e4c\u0e2b\u0e31\u0e27\u0e02\u0e49\u0e2d\u0e22\u0e48\u0e2d\u0e22",
+"Header 1": "\u0e2a\u0e48\u0e27\u0e19\u0e2b\u0e31\u0e27 1",
+"Superscript": "\u0e15\u0e31\u0e27\u0e22\u0e01",
+"Clear formatting": "\u0e25\u0e49\u0e32\u0e07\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a",
+"Font Sizes": "\u0e02\u0e19\u0e32\u0e14\u0e41\u0e1a\u0e1a\u0e2d\u0e31\u0e01\u0e29\u0e23",
+"Subscript": "\u0e15\u0e31\u0e27\u0e2b\u0e49\u0e2d\u0e22",
+"Header 6": "\u0e2a\u0e48\u0e27\u0e19\u0e2b\u0e31\u0e27 6",
+"Redo": "\u0e17\u0e4d\u0e32\u0e0b\u0e49\u0e33",
+"Paragraph": "\u0e22\u0e48\u0e2d\u0e2b\u0e19\u0e49\u0e32",
+"Ok": "\u0e15\u0e01\u0e25\u0e07",
+"Bold": "\u0e15\u0e31\u0e27\u0e2b\u0e19\u0e32",
+"Code": "\u0e42\u0e04\u0e49\u0e14",
+"Italic": "\u0e15\u0e31\u0e27\u0e40\u0e2d\u0e35\u0e22\u0e07",
+"Align center": "\u0e08\u0e31\u0e14\u0e01\u0e36\u0e48\u0e07\u0e01\u0e25\u0e32\u0e07",
+"Header 5": "\u0e2a\u0e48\u0e27\u0e19\u0e2b\u0e31\u0e27 5",
+"Decrease indent": "\u0e25\u0e14\u0e01\u0e32\u0e23\u0e40\u0e22\u0e37\u0e49\u0e2d\u0e07",
+"Header 4": "\u0e2a\u0e48\u0e27\u0e19\u0e2b\u0e31\u0e27 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0e01\u0e32\u0e23\u0e27\u0e32\u0e07\u0e15\u0e2d\u0e19\u0e19\u0e35\u0e49\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e42\u0e2b\u0e21\u0e14\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e18\u0e23\u0e23\u0e21\u0e14\u0e32 \u0e40\u0e19\u0e37\u0e49\u0e2d\u0e2b\u0e32\u0e08\u0e30\u0e16\u0e39\u0e01\u0e27\u0e32\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e18\u0e23\u0e23\u0e21\u0e14\u0e32\u0e08\u0e19\u0e01\u0e27\u0e48\u0e32\u0e04\u0e38\u0e13\u0e08\u0e30\u0e1b\u0e34\u0e14\u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e19\u0e35\u0e49",
+"Underline": "\u0e02\u0e35\u0e14\u0e40\u0e2a\u0e49\u0e19\u0e43\u0e15\u0e49",
+"Cancel": "\u0e22\u0e01\u0e40\u0e25\u0e34\u0e01",
+"Justify": "\u0e40\u0e15\u0e47\u0e21\u0e41\u0e19\u0e27",
+"Inline": "\u0e41\u0e1a\u0e1a\u0e2d\u0e34\u0e19\u0e44\u0e25\u0e19\u0e4c",
+"Copy": "\u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01",
+"Align left": "\u0e08\u0e31\u0e14\u0e0a\u0e34\u0e14\u0e0b\u0e49\u0e32\u0e22",
+"Visual aids": "\u0e17\u0e31\u0e28\u0e19\u0e39\u0e1b\u0e01\u0e23\u0e13\u0e4c",
+"Lower Greek": "\u0e01\u0e23\u0e35\u0e01\u0e17\u0e35\u0e48\u0e15\u0e48\u0e33\u0e01\u0e27\u0e48\u0e32",
+"Square": "\u0e08\u0e31\u0e15\u0e38\u0e23\u0e31\u0e2a",
+"Default": "\u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19",
+"Lower Alpha": "\u0e2d\u0e31\u0e25\u0e1f\u0e32\u0e17\u0e35\u0e48\u0e15\u0e48\u0e33\u0e01\u0e27\u0e48\u0e32",
+"Circle": "\u0e27\u0e07\u0e01\u0e25\u0e21",
+"Disc": "\u0e14\u0e34\u0e2a\u0e01\u0e4c",
+"Upper Alpha": "\u0e2d\u0e31\u0e25\u0e1f\u0e32\u0e17\u0e35\u0e48\u0e2a\u0e39\u0e07\u0e01\u0e27\u0e48\u0e32",
+"Upper Roman": "\u0e42\u0e23\u0e21\u0e31\u0e19\u0e17\u0e35\u0e48\u0e2a\u0e39\u0e07\u0e01\u0e27\u0e48\u0e32",
+"Lower Roman": "\u0e42\u0e23\u0e21\u0e31\u0e19\u0e17\u0e35\u0e48\u0e15\u0e48\u0e33\u0e01\u0e27\u0e48\u0e32",
+"Name": "\u0e0a\u0e37\u0e48\u0e2d",
+"Anchor": "\u0e08\u0e38\u0e14\u0e22\u0e36\u0e14",
+"You have unsaved changes are you sure you want to navigate away?": "\u0e04\u0e38\u0e13\u0e21\u0e35\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01 \u0e04\u0e38\u0e13\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e08\u0e30\u0e2d\u0e2d\u0e01\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48?",
+"Restore last draft": "\u0e04\u0e37\u0e19\u0e04\u0e48\u0e32\u0e41\u0e1a\u0e1a\u0e23\u0e48\u0e32\u0e07\u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14",
+"Special character": "\u0e2d\u0e31\u0e01\u0e02\u0e23\u0e30\u0e1e\u0e34\u0e40\u0e28\u0e29",
+"Source code": "\u0e42\u0e04\u0e49\u0e14\u0e15\u0e49\u0e19\u0e09\u0e1a\u0e31\u0e1a",
+"Right to left": "\u0e02\u0e27\u0e32\u0e44\u0e1b\u0e0b\u0e49\u0e32\u0e22",
+"Left to right": "\u0e0b\u0e49\u0e32\u0e22\u0e44\u0e1b\u0e02\u0e27\u0e32",
+"Emoticons": "\u0e2d\u0e34\u0e42\u0e21\u0e15\u0e34\u0e04\u0e2d\u0e19",
+"Robots": "\u0e2b\u0e38\u0e48\u0e19\u0e22\u0e19\u0e15\u0e4c",
+"Document properties": "\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e02\u0e2d\u0e07\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23",
+"Title": "\u0e0a\u0e37\u0e48\u0e2d\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07",
+"Keywords": "\u0e04\u0e33\u0e2a\u0e33\u0e04\u0e31\u0e0d",
+"Encoding": "\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e23\u0e2b\u0e31\u0e2a",
+"Description": "\u0e04\u0e33\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22",
+"Author": "\u0e1c\u0e39\u0e49\u0e40\u0e02\u0e35\u0e22\u0e19",
+"Fullscreen": "\u0e40\u0e15\u0e47\u0e21\u0e08\u0e2d",
+"Horizontal line": "\u0e40\u0e2a\u0e49\u0e19\u0e41\u0e19\u0e27\u0e19\u0e2d\u0e19",
+"Horizontal space": "\u0e0a\u0e48\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e07\u0e41\u0e19\u0e27\u0e19\u0e2d\u0e19",
+"Insert\/edit image": "\u0e41\u0e17\u0e23\u0e01\/\u0e41\u0e01\u0e49\u0e44\u0e02\u0e23\u0e39\u0e1b",
+"General": "\u0e17\u0e31\u0e48\u0e27\u0e44\u0e1b",
+"Advanced": "\u0e02\u0e31\u0e49\u0e19\u0e2a\u0e39\u0e07",
+"Source": "\u0e41\u0e2b\u0e25\u0e48\u0e07\u0e17\u0e35\u0e48\u0e21\u0e32",
+"Border": "\u0e40\u0e2a\u0e49\u0e19\u0e02\u0e2d\u0e1a",
+"Constrain proportions": "\u0e08\u0e33\u0e01\u0e31\u0e14\u0e2a\u0e31\u0e14\u0e2a\u0e48\u0e27\u0e19",
+"Vertical space": "\u0e0a\u0e48\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e07\u0e41\u0e19\u0e27\u0e15\u0e31\u0e49\u0e07",
+"Image description": "\u0e04\u0e33\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22\u0e23\u0e39\u0e1b",
+"Style": "\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a",
+"Dimensions": "\u0e02\u0e19\u0e32\u0e14",
+"Insert image": "\u0e41\u0e17\u0e23\u0e01\u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e",
+"Insert date\/time": "\u0e41\u0e17\u0e23\u0e01\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\/\u0e40\u0e27\u0e25\u0e32",
+"Remove link": "\u0e40\u0e2d\u0e32\u0e25\u0e34\u0e07\u0e01\u0e4c\u0e2d\u0e2d\u0e01",
+"Url": "URL",
+"Text to display": "\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e17\u0e35\u0e48\u0e08\u0e30\u0e41\u0e2a\u0e14\u0e07",
+"Anchors": "\u0e08\u0e38\u0e14\u0e22\u0e36\u0e14",
+"Insert link": "\u0e41\u0e17\u0e23\u0e01\u0e25\u0e34\u0e07\u0e01\u0e4c",
+"New window": "\u0e40\u0e1b\u0e34\u0e14\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e48\u0e32\u0e07\u0e43\u0e2b\u0e21\u0e48",
+"None": "\u0e44\u0e21\u0e48\u0e21\u0e35",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?",
+"Target": "\u0e40\u0e1b\u0e49\u0e32\u0e2b\u0e21\u0e32\u0e22",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",
+"Insert\/edit link": "\u0e41\u0e17\u0e23\u0e01\/\u0e41\u0e01\u0e49\u0e44\u0e02\u0e25\u0e34\u0e07\u0e01\u0e4c",
+"Insert\/edit video": "\u0e41\u0e17\u0e23\u0e01\/\u0e41\u0e01\u0e49\u0e44\u0e02\u0e27\u0e34\u0e14\u0e35\u0e42\u0e2d",
+"Poster": "\u0e42\u0e1b\u0e2a\u0e40\u0e15\u0e2d\u0e23\u0e4c",
+"Alternative source": "\u0e41\u0e2b\u0e25\u0e48\u0e07\u0e17\u0e35\u0e48\u0e21\u0e32\u0e2a\u0e33\u0e23\u0e2d\u0e07",
+"Paste your embed code below:": "\u0e27\u0e32\u0e07\u0e42\u0e04\u0e49\u0e14\u0e1d\u0e31\u0e07\u0e15\u0e31\u0e27\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07:",
+"Insert video": "\u0e41\u0e17\u0e23\u0e01\u0e27\u0e34\u0e14\u0e35\u0e42\u0e2d",
+"Embed": "\u0e1d\u0e31\u0e07",
+"Nonbreaking space": "\u0e0a\u0e48\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e07\u0e44\u0e21\u0e48\u0e41\u0e22\u0e01",
+"Page break": "\u0e15\u0e31\u0e27\u0e41\u0e1a\u0e48\u0e07\u0e2b\u0e19\u0e49\u0e32",
+"Paste as text": "\u0e27\u0e32\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21",
+"Preview": "\u0e41\u0e2a\u0e14\u0e07\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07",
+"Print": "\u0e1e\u0e34\u0e21\u0e1e\u0e4c",
+"Save": "\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01",
+"Could not find the specified string.": "\u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e2a\u0e15\u0e23\u0e34\u0e07\u0e17\u0e35\u0e48\u0e23\u0e30\u0e1a\u0e38",
+"Replace": "\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48",
+"Next": "\u0e16\u0e31\u0e14\u0e44\u0e1b",
+"Whole words": "\u0e17\u0e31\u0e49\u0e07\u0e04\u0e33",
+"Find and replace": "\u0e04\u0e49\u0e19\u0e2b\u0e32\u0e41\u0e25\u0e30\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48",
+"Replace with": "\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e14\u0e49\u0e27\u0e22",
+"Find": "\u0e04\u0e49\u0e19\u0e2b\u0e32",
+"Replace all": "\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14",
+"Match case": "\u0e15\u0e23\u0e07\u0e15\u0e32\u0e21\u0e15\u0e31\u0e27\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e43\u0e2b\u0e0d\u0e48-\u0e40\u0e25\u0e47\u0e01",
+"Prev": "\u0e01\u0e48\u0e2d\u0e19\u0e2b\u0e19\u0e49\u0e32",
+"Spellcheck": "\u0e15\u0e23\u0e27\u0e08\u0e01\u0e32\u0e23\u0e2a\u0e30\u0e01\u0e14",
+"Finish": "\u0e40\u0e2a\u0e23\u0e47\u0e08\u0e2a\u0e34\u0e49\u0e19",
+"Ignore all": "\u0e25\u0e30\u0e40\u0e27\u0e49\u0e19\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14",
+"Ignore": "\u0e25\u0e30\u0e40\u0e27\u0e49\u0e19",
+"Insert row before": "\u0e41\u0e17\u0e23\u0e01\u0e41\u0e16\u0e27\u0e14\u0e49\u0e32\u0e19\u0e1a\u0e19",
+"Rows": "\u0e41\u0e16\u0e27",
+"Height": "\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e39\u0e07",
+"Paste row after": "\u0e27\u0e32\u0e07\u0e41\u0e16\u0e27\u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07",
+"Alignment": "\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e41\u0e19\u0e27",
+"Column group": "\u0e01\u0e25\u0e38\u0e48\u0e21\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c",
+"Row": "\u0e41\u0e16\u0e27",
+"Insert column before": "\u0e41\u0e17\u0e23\u0e01\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c\u0e02\u0e49\u0e32\u0e07\u0e2b\u0e19\u0e49\u0e32",
+"Split cell": "\u0e41\u0e22\u0e01\u0e40\u0e0b\u0e25\u0e25\u0e4c",
+"Cell padding": "\u0e0a\u0e48\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e07\u0e20\u0e32\u0e22\u0e43\u0e19\u0e40\u0e0b\u0e25\u0e25\u0e4c",
+"Cell spacing": "\u0e0a\u0e48\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e07\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e40\u0e0b\u0e25\u0e25\u0e4c",
+"Row type": "\u0e0a\u0e19\u0e34\u0e14\u0e02\u0e2d\u0e07\u0e41\u0e16\u0e27",
+"Insert table": "\u0e41\u0e17\u0e23\u0e01\u0e15\u0e32\u0e23\u0e32\u0e07",
+"Body": "\u0e40\u0e19\u0e37\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21",
+"Caption": "\u0e1b\u0e49\u0e32\u0e22\u0e04\u0e33\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22",
+"Footer": "\u0e2a\u0e48\u0e27\u0e19\u0e17\u0e49\u0e32\u0e22",
+"Delete row": "\u0e25\u0e1a\u0e41\u0e16\u0e27",
+"Paste row before": "\u0e27\u0e32\u0e07\u0e41\u0e16\u0e27\u0e14\u0e49\u0e32\u0e19\u0e1a\u0e19",
+"Scope": "\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15",
+"Delete table": "\u0e25\u0e1a\u0e15\u0e32\u0e23\u0e32\u0e07",
+"Header cell": "\u0e40\u0e0b\u0e25\u0e25\u0e4c\u0e2a\u0e48\u0e27\u0e19\u0e2b\u0e31\u0e27",
+"Column": "\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c",
+"Cell": "\u0e40\u0e0b\u0e25\u0e25\u0e4c",
+"Header": "\u0e2a\u0e48\u0e27\u0e19\u0e2b\u0e31\u0e27",
+"Cell type": "\u0e0a\u0e19\u0e34\u0e14\u0e02\u0e2d\u0e07\u0e40\u0e0b\u0e25\u0e25\u0e4c",
+"Copy row": "\u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01\u0e41\u0e16\u0e27",
+"Row properties": "\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e02\u0e2d\u0e07\u0e41\u0e16\u0e27",
+"Table properties": "\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e02\u0e2d\u0e07\u0e15\u0e32\u0e23\u0e32\u0e07",
+"Row group": "\u0e01\u0e25\u0e38\u0e48\u0e21\u0e41\u0e16\u0e27",
+"Right": "\u0e02\u0e27\u0e32",
+"Insert column after": "\u0e41\u0e17\u0e23\u0e01\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c\u0e02\u0e49\u0e32\u0e07\u0e2b\u0e25\u0e31\u0e07",
+"Cols": "\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c",
+"Insert row after": "\u0e41\u0e17\u0e23\u0e01\u0e41\u0e16\u0e27\u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07",
+"Width": "\u0e04\u0e27\u0e32\u0e21\u0e01\u0e27\u0e49\u0e32\u0e07",
+"Cell properties": "\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e02\u0e2d\u0e07\u0e40\u0e0b\u0e25\u0e25\u0e4c",
+"Left": "\u0e0b\u0e49\u0e32\u0e22",
+"Cut row": "\u0e15\u0e31\u0e14\u0e41\u0e16\u0e27",
+"Delete column": "\u0e25\u0e1a\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c",
+"Center": "\u0e01\u0e36\u0e48\u0e07\u0e01\u0e25\u0e32\u0e07",
+"Merge cells": "\u0e1c\u0e2a\u0e32\u0e19\u0e40\u0e0b\u0e25\u0e25\u0e4c",
+"Insert template": "\u0e41\u0e17\u0e23\u0e01\u0e41\u0e21\u0e48\u0e41\u0e1a\u0e1a",
+"Templates": "\u0e41\u0e21\u0e48\u0e41\u0e1a\u0e1a",
+"Background color": "\u0e2a\u0e35\u0e1e\u0e37\u0e49\u0e19\u0e2b\u0e25\u0e31\u0e07",
+"Text color": "\u0e2a\u0e35\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21",
+"Show blocks": "\u0e41\u0e2a\u0e14\u0e07\u0e1a\u0e25\u0e47\u0e2d\u0e01",
+"Show invisible characters": "\u0e41\u0e2a\u0e14\u0e07\u0e15\u0e31\u0e27\u0e2d\u0e31\u0e01\u0e29\u0e23\u0e17\u0e35\u0e48\u0e21\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e40\u0e2b\u0e47\u0e19",
+"Words: {0}": "\u0e04\u0e33: {0}",
+"Insert": "\u0e41\u0e17\u0e23\u0e01",
+"File": "\u0e44\u0e1f\u0e25\u0e4c",
+"Edit": "\u0e41\u0e01\u0e49\u0e44\u0e02",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48 Rich Text \u0e01\u0e14 ALT-F9 \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e40\u0e21\u0e19\u0e39 \u0e01\u0e14 ALT-F10 \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e41\u0e16\u0e1a\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d \u0e01\u0e14 ALT-0 \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e0a\u0e48\u0e27\u0e22\u0e40\u0e2b\u0e25\u0e37\u0e2d",
+"Tools": "\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d",
+"View": "\u0e21\u0e38\u0e21\u0e21\u0e2d\u0e07",
+"Table": "\u0e15\u0e32\u0e23\u0e32\u0e07",
+"Format": "\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/tr_TR.js b/program/js/tinymce/langs/tr_TR.js
new file mode 100644
index 000000000..d6ec992e8
--- /dev/null
+++ b/program/js/tinymce/langs/tr_TR.js
@@ -0,0 +1,192 @@
+tinymce.addI18n('tr_TR',{
+"Cut": "Kes",
+"Heading 5": "Ba\u015fl\u0131k 5",
+"Header 2": "Ba\u015fl\u0131k 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Taray\u0131c\u0131n\u0131z panoya direk eri\u015fimi desteklemiyor. L\u00fctfen Ctrl+X\/C\/V klavye k\u0131sayollar\u0131n\u0131 kullan\u0131n.",
+"Heading 4": "Ba\u015fl\u0131k 4",
+"Div": "Div",
+"Heading 2": "Ba\u015fl\u0131k 2",
+"Paste": "Yap\u0131\u015ft\u0131r",
+"Close": "Kapat",
+"Font Family": "Yaz\u0131tipi Ailesi",
+"Pre": "\u00d6n",
+"Align right": "Sa\u011fa hizala",
+"New document": "Yeni dok\u00fcman",
+"Blockquote": "Al\u0131nt\u0131",
+"Numbered list": "S\u0131ral\u0131 liste",
+"Heading 1": "Ba\u015fl\u0131k 1",
+"Headings": "Ba\u015fl\u0131klar",
+"Increase indent": "Girintiyi art\u0131r",
+"Formats": "Bi\u00e7imler",
+"Headers": "Ba\u015fl\u0131klar",
+"Select all": "T\u00fcm\u00fcn\u00fc se\u00e7",
+"Header 3": "Ba\u015fl\u0131k 3",
+"Blocks": "Bloklar",
+"Undo": "Geri Al",
+"Strikethrough": "\u00dcst\u00fc \u00e7izili",
+"Bullet list": "S\u0131ras\u0131z liste",
+"Header 1": "Ba\u015fl\u0131k 1",
+"Superscript": "\u00dcst simge",
+"Clear formatting": "Bi\u00e7imi temizle",
+"Font Sizes": "Yaz\u0131tipi B\u00fcy\u00fckl\u00fc\u011f\u00fc",
+"Subscript": "Alt simge",
+"Header 6": "Ba\u015fl\u0131k 6",
+"Redo": "Yinele",
+"Paragraph": "Paragraf",
+"Ok": "Tamam",
+"Bold": "Kal\u0131n",
+"Code": "Kod",
+"Italic": "\u0130talik",
+"Align center": "Ortala",
+"Header 5": "Ba\u015fl\u0131k 5",
+"Heading 6": "Ba\u015fl\u0131k 6",
+"Heading 3": "Ba\u015fl\u0131k 3",
+"Decrease indent": "Girintiyi azalt",
+"Header 4": "Ba\u015fl\u0131k 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "D\u00fcz metin modunda yap\u0131\u015ft\u0131r. Bu se\u00e7ene\u011fi kapatana kadar i\u00e7erikler d\u00fcz metin olarak yap\u0131\u015ft\u0131r\u0131l\u0131r.",
+"Underline": "Alt\u0131 \u00e7izili",
+"Cancel": "\u0130ptal",
+"Justify": "\u0130ki yana yasla",
+"Inline": "Sat\u0131r i\u00e7i",
+"Copy": "Kopyala",
+"Align left": "Sola hizala",
+"Visual aids": "G\u00f6rsel ara\u00e7lar",
+"Lower Greek": "K\u00fc\u00e7\u00fck Yunan alfabesi",
+"Square": "Kare",
+"Default": "Varsay\u0131lan",
+"Lower Alpha": "K\u00fc\u00e7\u00fck ABC",
+"Circle": "Daire",
+"Disc": "Disk",
+"Upper Alpha": "B\u00fcy\u00fck ABC",
+"Upper Roman": "B\u00fcy\u00fck Roman alfabesi",
+"Lower Roman": "K\u00fc\u00e7\u00fck Roman alfabesi",
+"Name": "\u0130sim",
+"Anchor": "\u00c7apa",
+"You have unsaved changes are you sure you want to navigate away?": "Kaydedilmemi\u015f de\u011fi\u015fiklikler var, sayfadan ayr\u0131lmak istedi\u011finize emin misiniz?",
+"Restore last draft": "Son tasla\u011f\u0131 kurtar",
+"Special character": "\u00d6zel karakter",
+"Source code": "Kaynak kodu",
+"Right to left": "Sa\u011fdan sola",
+"Left to right": "Soldan sa\u011fa",
+"Emoticons": "G\u00fcl\u00fcc\u00fckler",
+"Robots": "Robotlar",
+"Document properties": "Dok\u00fcman \u00f6zellikleri",
+"Title": "Ba\u015fl\u0131k",
+"Keywords": "Anahtar kelimeler",
+"Encoding": "Kodlama",
+"Description": "A\u00e7\u0131klama",
+"Author": "Yazar",
+"Fullscreen": "Tam ekran",
+"Horizontal line": "Yatay \u00e7izgi",
+"Horizontal space": "Yatay bo\u015fluk",
+"Insert\/edit image": "Resim ekle\/d\u00fczenle",
+"General": "Genel",
+"Advanced": "Geli\u015fmi\u015f",
+"Source": "Kaynak",
+"Border": "\u00c7er\u00e7eve",
+"Constrain proportions": "En - Boy oran\u0131n\u0131 koru",
+"Vertical space": "Dikey bo\u015fluk",
+"Image description": "Resim a\u00e7\u0131klamas\u0131",
+"Style": "Stil",
+"Dimensions": "Boyutlar",
+"Insert image": "Resim ekle",
+"Insert date\/time": "Tarih \/ Zaman ekle",
+"Remove link": "Ba\u011flant\u0131y\u0131 kald\u0131r",
+"Url": "Url",
+"Text to display": "G\u00f6r\u00fcnen yaz\u0131",
+"Anchors": "\u00c7apalar",
+"Insert link": "Ba\u011flant\u0131 ekle",
+"New window": "Yeni pencere",
+"None": "Hi\u00e7biri",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Girdi\u011finiz URL bir d\u0131\u015f ba\u011flant\u0131 gibi g\u00f6z\u00fck\u00fcyor. Gerekli olan http:\/\/ \u00f6nekini eklemek ister misiniz?",
+"Target": "Hedef",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Girdi\u011finiz URL bir eposta adresi gibi g\u00f6z\u00fck\u00fcyor. Gerekli olan mailto: \u00f6nekini eklemek ister misiniz?",
+"Insert\/edit link": "Ba\u011flant\u0131 ekle\/d\u00fczenle",
+"Insert\/edit video": "Video ekle\/d\u00fczenle",
+"Poster": "Poster",
+"Alternative source": "Alternatif kaynak",
+"Paste your embed code below:": "Medya g\u00f6mme kodunu buraya yap\u0131\u015ft\u0131r:",
+"Insert video": "Video ekle",
+"Embed": "G\u00f6mme",
+"Nonbreaking space": "B\u00f6l\u00fcnemez bo\u015fluk",
+"Page break": "Sayfa sonu",
+"Paste as text": "Metin olarak yap\u0131\u015ft\u0131r",
+"Preview": "\u00d6nizleme",
+"Print": "Yazd\u0131r",
+"Save": "Kaydet",
+"Could not find the specified string.": "Herhangi bir sonu\u00e7 bulunamad\u0131.",
+"Replace": "De\u011fi\u015ftir",
+"Next": "Sonraki",
+"Whole words": "Tam s\u00f6zc\u00fckler",
+"Find and replace": "Bul ve de\u011fi\u015ftir",
+"Replace with": "Bununla de\u011fi\u015ftir",
+"Find": "Bul",
+"Replace all": "T\u00fcm\u00fcn\u00fc de\u011fi\u015ftir",
+"Match case": "B\u00fcy\u00fck \/ K\u00fc\u00e7\u00fck harfe duyarl\u0131",
+"Prev": "\u00d6nceki",
+"Spellcheck": "Yaz\u0131m denetimi",
+"Finish": "Bitir",
+"Ignore all": "T\u00fcm\u00fcn\u00fc yoksay",
+"Ignore": "Yoksay",
+"Add to Dictionary": "S\u00f6zl\u00fc\u011fe ekle",
+"Insert row before": "\u00d6ncesine yeni sat\u0131r ekle",
+"Rows": "Sat\u0131rlar",
+"Height": "Y\u00fckseklik",
+"Paste row after": "Sonras\u0131na sat\u0131r yap\u0131\u015ft\u0131r",
+"Alignment": "Hizalama",
+"Column group": "S\u00fctun grubu",
+"Row": "Sat\u0131r",
+"Insert column before": "\u00d6ncesine yeni s\u00fctun ekle",
+"Split cell": "H\u00fccreleri ay\u0131r",
+"Cell padding": "H\u00fccre i\u00e7 bo\u015flu\u011fu",
+"Cell spacing": "H\u00fccre aral\u0131\u011f\u0131",
+"Row type": "Sat\u0131r tipi",
+"Insert table": "Tablo ekle",
+"Body": "G\u00f6vde",
+"Caption": "Ba\u015fl\u0131k",
+"Footer": "Alt",
+"Delete row": "Sat\u0131r\u0131 sil",
+"Paste row before": "\u00d6ncesine sat\u0131r yap\u0131\u015ft\u0131r",
+"Scope": "Kapsam",
+"Delete table": "Tabloyu sil",
+"H Align": "Yatay Hizalama",
+"Top": "\u00dcst",
+"Header cell": "Ba\u015fl\u0131k h\u00fccresi",
+"Column": "S\u00fctun",
+"Row group": "Sat\u0131r grubu",
+"Cell": "H\u00fccre",
+"Middle": "Orta",
+"Cell type": "H\u00fccre tipi",
+"Copy row": "Sat\u0131r\u0131 kopyala",
+"Row properties": "Sat\u0131r \u00f6zellikleri",
+"Table properties": "Tablo \u00f6zellikleri",
+"Bottom": "Alt",
+"V Align": "Dikey Hizalama",
+"Header": "Ba\u015fl\u0131k",
+"Right": "Sa\u011f",
+"Insert column after": "Sonras\u0131na yeni s\u00fctun ekle",
+"Cols": "S\u00fctunlar",
+"Insert row after": "Sonras\u0131na yeni sat\u0131r ekle",
+"Width": "Geni\u015flik",
+"Cell properties": "H\u00fccre \u00f6zellikleri",
+"Left": "Sol",
+"Cut row": "Sat\u0131r\u0131 kes",
+"Delete column": "S\u00fctunu sil",
+"Center": "Orta",
+"Merge cells": "H\u00fccreleri birle\u015ftir",
+"Insert template": "\u015eablon ekle",
+"Templates": "\u015eablonlar",
+"Background color": "Arkaplan rengi",
+"Text color": "Yaz\u0131 rengi",
+"Show blocks": "Bloklar\u0131 g\u00f6r\u00fcnt\u00fcle",
+"Show invisible characters": "G\u00f6r\u00fcnmez karakterleri g\u00f6ster",
+"Words: {0}": "Kelime: {0}",
+"Insert": "Ekle",
+"File": "Dosya",
+"Edit": "D\u00fczenle",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Zengin Metin Alan\u0131. Men\u00fc i\u00e7in ALT-F9 k\u0131sayolunu kullan\u0131n. Ara\u00e7 \u00e7ubu\u011fu i\u00e7in ALT-F10 k\u0131sayolunu kullan\u0131n. Yard\u0131m i\u00e7in ALT-0 k\u0131sayolunu kullan\u0131n.",
+"Tools": "Ara\u00e7lar",
+"View": "G\u00f6r\u00fcnt\u00fcle",
+"Table": "Tablo",
+"Format": "Bi\u00e7im"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/tt.js b/program/js/tinymce/langs/tt.js
new file mode 100644
index 000000000..04081d7ad
--- /dev/null
+++ b/program/js/tinymce/langs/tt.js
@@ -0,0 +1,197 @@
+tinymce.addI18n('tt',{
+"Cut": "\u041a\u0438\u0441\u0435\u043f \u0430\u043b\u0443",
+"Heading 5": "\u0411\u0430\u0448\u043b\u0430\u043c 5",
+"Header 2": "\u0411\u0430\u0448\u043b\u0430\u043c 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0411\u0440\u0430\u0443\u0437\u0435\u0440\u044b\u0433\u044b\u0437 \u0430\u043b\u043c\u0430\u0448\u0443 \u0431\u0443\u0444\u0435\u0440\u044b\u043d\u0430 \u043a\u0435\u0440\u04af \u043c\u04e9\u043c\u043a\u0438\u043d\u043b\u0435\u0433\u0435 \u0431\u0435\u043b\u04d9\u043d \u0442\u04d9\u044d\u043c\u0438\u043d \u0438\u0442\u0435\u043b\u043c\u04d9\u0433\u04d9\u043d. \u0410\u043b\u043c\u0430\u0448\u043a\u0430 Ctrl+X\/C\/V \u043a\u0443\u043b\u043b\u0430\u043d\u044b\u0433\u044b\u0437.",
+"Heading 4": "\u0411\u0430\u0448\u043b\u0430\u043c 4",
+"Div": "Div",
+"Heading 2": "\u0411\u0430\u0448\u043b\u0430\u043c 2",
+"Paste": "\u04e8\u0441\u0442\u04d9\u04af",
+"Close": "\u042f\u0431\u044b\u0440\u0433\u0430",
+"Font Family": "\u0428\u0440\u0438\u0444\u0442 \u0442\u04e9\u0440\u0435",
+"Pre": "\u0410\u043b\u0434\u0430\u043d \u0444\u043e\u0440\u043c\u0430\u0442\u043b\u0430\u043d\u0433\u0430\u043d \u0442\u0435\u043a\u0441\u0442",
+"Align right": "\u0423\u04a3 \u044f\u043a \u043a\u044b\u0440\u044b\u0439\u0434\u0430\u043d \u0442\u0438\u0433\u0435\u0437\u043b\u04d9\u04af",
+"New document": "\u042f\u04a3\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442",
+"Blockquote": "\u0426\u0438\u0442\u0430\u0442\u0430",
+"Numbered list": "\u041d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u044f",
+"Heading 1": "\u0411\u0430\u0448\u043b\u0430\u043c 1",
+"Headings": "\u0411\u0430\u0448\u043b\u0430\u043c\u043b\u0430\u0440",
+"Increase indent": "\u041e\u0442\u0441\u0442\u0443\u043f\u043d\u044b \u0430\u0440\u0442\u0442\u044b\u0440\u0443",
+"Formats": "\u0424\u043e\u0440\u043c\u0430\u0442\u043b\u0430\u0440",
+"Headers": "\u0411\u0430\u0448\u043b\u0430\u043c\u043b\u0430\u0440",
+"Select all": "\u0411\u0430\u0440\u044b\u0441\u044b\u043d \u0441\u0430\u0439\u043b\u0430\u0443",
+"Header 3": "\u0411\u0430\u0448\u043b\u0430\u043c 3",
+"Blocks": "\u0411\u043b\u043e\u043a\u043b\u0430\u0440",
+"Undo": "\u041a\u0430\u0439\u0442\u0430\u0440\u0443",
+"Strikethrough": "\u0421\u044b\u0437\u044b\u043b\u0433\u0430\u043d",
+"Bullet list": "\u041c\u0430\u0440\u043a\u0435\u0440\u043b\u0430\u0440",
+"Header 1": "\u0411\u0430\u0448\u043b\u0430\u043c 1",
+"Superscript": "\u04e8\u0441\u043a\u0435 \u0438\u043d\u0434\u0435\u043a\u0441",
+"Clear formatting": "\u0424\u043e\u0440\u043c\u0430\u0442\u043b\u0430\u0443\u043d\u044b \u0447\u0438\u0441\u0442\u0430\u0440\u0442\u0443",
+"Font Sizes": "\u0428\u0440\u0438\u0444\u0442 \u0437\u0443\u0440\u043b\u044b\u043a\u043b\u0430\u0440\u044b",
+"Subscript": "\u0410\u0441\u043a\u044b \u0438\u043d\u0434\u0435\u043a\u0441",
+"Header 6": "\u0411\u0430\u0448\u043b\u0430\u043c 6",
+"Redo": "\u041a\u0430\u0431\u0430\u0442\u043b\u0430\u0443",
+"Paragraph": "\u041f\u0430\u0440\u0430\u0433\u0440\u0430\u0444",
+"Ok": "\u0422\u04d9\u043c\u0430\u043c",
+"Bold": "\u041a\u0430\u043b\u044b\u043d",
+"Code": "\u041a\u043e\u0434",
+"Italic": "\u041a\u0443\u0440\u0441\u0438\u0432",
+"Align center": "\u04ae\u0437\u04d9\u043a\u043a\u04d9 \u0442\u0438\u0433\u0435\u0437\u043b\u04d9\u04af",
+"Header 5": "\u0411\u0430\u0448\u043b\u0430\u043c 5",
+"Heading 6": "\u0411\u0430\u0448\u043b\u0430\u043c 6",
+"Heading 3": "\u0411\u0430\u0448\u043b\u0430\u043c 3",
+"Decrease indent": "\u041e\u0442\u0441\u0442\u0443\u043f\u043d\u044b \u043a\u0435\u0447\u0435\u0440\u04d9\u0439\u0442\u04af",
+"Header 4": "\u0411\u0430\u0448\u043b\u0430\u043c 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u04e8\u0441\u0442\u04d9\u04af \u0444\u043e\u0440\u043c\u0430\u0442\u043b\u0430\u0443\u0441\u044b\u0437 \u0442\u0435\u043a\u0441\u0442 \u0440\u0435\u0436\u0438\u043c\u044b\u043d\u0434\u0430. \u04d8\u043b\u0435\u0433\u0435 \u04af\u0437\u043b\u0435\u043a\u043d\u0435 \u0441\u04af\u043d\u0434\u0435\u0440\u0433\u04d9\u043d\u0447\u0435 \u0442\u0435\u043a\u0441\u0442 \u0444\u043e\u0440\u043c\u0430\u0442\u043b\u0430\u0443\u0441\u044b\u0437 \u04e9\u0441\u0442\u04d9\u043b\u0435\u0440.",
+"Underline": "\u0410\u0441\u0442\u044b\u043d\u0430 \u0441\u044b\u0437\u044b\u043b\u0433\u0430\u043d",
+"Cancel": "\u0411\u0430\u0448 \u0442\u0430\u0440\u0442\u0443",
+"Justify": "\u041a\u0438\u04a3\u043b\u0435\u043a\u043a\u04d9 \u043a\u0430\u0440\u0430\u043f \u0442\u0438\u0433\u0435\u0437\u043b\u04d9\u04af",
+"Inline": "\u042e\u043b \u0445\u04d9\u0440\u0435\u0444\u043b\u04d9\u0440\u0435",
+"Copy": "\u041a\u04af\u0447\u0435\u0440\u043c\u04d9\u043b\u04d9\u04af",
+"Align left": "\u0421\u0443\u043b \u044f\u043a \u043a\u044b\u0440\u044b\u0439\u0434\u0430\u043d \u0442\u0438\u0433\u0435\u0437\u043b\u04d9\u04af",
+"Visual aids": "\u041a\u04af\u0440\u0441\u04d9\u0442\u043c\u04d9 \u04d9\u0441\u0431\u0430\u043f\u043b\u0430\u0440",
+"Lower Greek": "\u0413\u0440\u0435\u043a \u044e\u043b \u0445\u04d9\u0440\u0435\u0444\u0435",
+"Square": "\u0428\u0430\u043a\u043c\u0430\u043a",
+"Default": "\u04d8\u04af\u0432\u04d9\u043b\u0433\u0435 \u043a\u04e9\u0439\u043b\u04d9\u04af\u043b\u04d9\u0440",
+"Lower Alpha": "\u0410\u043b\u044c\u0444\u0430 \u044e\u043b \u0445\u04d9\u0440\u0435\u0444\u0435",
+"Circle": "\u0422\u04af\u0433\u0259\u0440\u0259\u043a",
+"Disc": "\u0414\u0438\u0441\u043a",
+"Upper Alpha": "\u0410\u043b\u044c\u0444\u0430 \u0431\u0430\u0448 \u0445\u04d9\u0440\u0435\u0444\u0435",
+"Upper Roman": "\u0420\u0438\u043c \u0431\u0430\u0448 \u0445\u04d9\u0440\u0435\u0444\u0435",
+"Lower Roman": "\u0420\u0438\u043c \u044e\u043b \u0445\u04d9\u0440\u0435\u0444\u0435",
+"Name": "\u0418\u0441\u0435\u043c",
+"Anchor": "\u042f\u043a\u043e\u0440\u044c",
+"You have unsaved changes are you sure you want to navigate away?": "\u0421\u0430\u043a\u043b\u0430\u043d\u043c\u0430\u0433\u0430\u043d \u04af\u0437\u0433\u04d9\u0440\u0435\u0448\u043b\u04d9\u0440 \u0431\u0430\u0440. \u0421\u0435\u0437 \u0447\u044b\u043d\u043d\u0430\u043d \u0434\u0430 \u0447\u044b\u0433\u0430\u0440\u0433\u0430 \u0442\u0435\u043b\u0438\u0441\u0435\u0437\u043c\u0435?",
+"Restore last draft": "\u0421\u043e\u04a3\u0433\u044b \u043a\u0430\u0440\u0430\u043b\u0430\u043c\u0430\u043d\u044b \u043a\u0430\u0439\u0442\u0430\u0440\u0443",
+"Special character": "\u041c\u0430\u0445\u0441\u0443\u0441 \u0441\u0438\u043c\u0432\u043e\u043b",
+"Source code": "\u0427\u044b\u0433\u0430\u043d\u0430\u043a \u043a\u043e\u0434",
+"Color": "\u0422\u04e9\u0441",
+"Right to left": "\u0423\u04a3\u043d\u0430\u043d \u0441\u0443\u043b\u0433\u0430 \u044f\u0437\u044b\u043b\u044b\u0448",
+"Left to right": "\u0421\u0443\u043b\u0434\u0430\u043d \u0443\u04a3\u0433\u0430 \u044f\u0437\u044b\u043b\u044b\u0448",
+"Emoticons": "\u0421\u043c\u0430\u0439\u043b\u043b\u0430\u0440",
+"Robots": "\u0420\u043e\u0431\u043e\u0442\u043b\u0430\u0440",
+"Document properties": "\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u04af\u0437\u043b\u0435\u043a\u043b\u04d9\u0440\u0435",
+"Title": "\u0418\u0441\u0435\u043c",
+"Keywords": "\u0422\u04e9\u043f \u0441\u04af\u0437\u043b\u04d9\u0440",
+"Encoding": "\u041a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430",
+"Description": "\u0422\u0430\u0441\u0432\u0438\u0440\u043b\u0430\u043c\u0430",
+"Author": "\u0410\u0432\u0442\u043e\u0440",
+"Fullscreen": "\u0422\u0443\u043b\u044b \u044d\u043a\u0440\u0430\u043d\u0434\u0430",
+"Horizontal line": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c \u0441\u044b\u0437\u044b\u043a",
+"Horizontal space": "\u042f\u0442\u043c\u0430 \u0430\u0440\u0430",
+"Insert\/edit image": "\u0420\u04d9\u0441\u0435\u043c \u04e9\u0441\u0442\u04d9\u04af\/\u04af\u0437\u0433\u04d9\u0440\u0442\u04af",
+"General": "\u0413\u043e\u043c\u0443\u043c\u0438",
+"Advanced": "\u041a\u0438\u04a3\u04d9\u0439\u0442\u0435\u043b\u0433\u04d9\u043d \u043a\u04e9\u0439\u043b\u04d9\u04af\u043b\u04d9\u0440",
+"Source": "\u0427\u044b\u0433\u0430\u043d\u0430\u043a",
+"Border": "\u0427\u0438\u043a",
+"Constrain proportions": "\u0427\u0438\u043a\u043b\u04d9\u043c\u04d9\u043b\u04d9\u0440 \u043f\u0440\u043e\u043f\u0440\u043e\u0440\u0446\u0438\u044f\u043b\u04d9\u0440\u0435",
+"Vertical space": "\u0410\u0441\u043c\u0430 \u0430\u0440\u0430",
+"Image description": "\u0422\u0430\u0441\u0432\u0438\u0440\u043b\u0430\u043c\u0430",
+"Style": "\u0421\u0442\u0438\u043b\u044c",
+"Dimensions": "\u04ae\u043b\u0447\u04d9\u043d\u0435\u0448\u043b\u04d9\u0440",
+"Insert image": "\u0420\u04d9\u0441\u0435\u043c \u04e9\u0441\u0442\u04d9\u04af",
+"Insert date\/time": "\u0414\u0430\u0442\u0430\/\u0432\u0430\u043a\u044b\u0442 \u04e9\u0441\u0442\u04d9\u04af",
+"Remove link": "\u0421\u044b\u043b\u0442\u0430\u043b\u0430\u043c\u0430\u043d\u044b \u0431\u0435\u0442\u0435\u0440\u04af",
+"Url": "\u0421\u044b\u043b\u0442\u0430\u043b\u0430\u043c\u0430",
+"Text to display": "\u041a\u04af\u0440\u0441\u04d9\u0442\u0435\u043b\u0433\u04d9\u043d \u0442\u0435\u043a\u0441\u0442",
+"Anchors": "\u042f\u043a\u043e\u0440\u044c\u043b\u04d9\u0440",
+"Insert link": "\u0421\u044b\u043b\u0442\u0430\u043b\u0430\u043c\u0430 \u04e9\u0441\u0442\u04d9\u04af",
+"New window": "\u042f\u04a3\u0430 \u0442\u04d9\u0440\u04d9\u0437\u04d9",
+"None": "\u04ba\u0438\u0447\u0431\u0435\u0440",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u04e8\u0441\u0442\u04d9\u043b\u0433\u04d9\u043d URL \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d \u043f\u043e\u0447\u0442\u0430 \u0430\u0434\u0440\u0435\u0441\u044b \u0431\u0443\u043b\u0441\u0430 \u043a\u0438\u0440\u04d9\u043a. \u0417\u0430\u0440\u0443\u0440\u0438 mailto: \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u04e9\u0441\u0442\u04d9\u043b\u0441\u0435\u043d\u043c\u0435?",
+"Target": "\u041c\u0430\u043a\u0441\u0430\u0442",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u04e8\u0441\u0442\u04d9\u043b\u0433\u04d9\u043d URL \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d \u043f\u043e\u0447\u0442\u0430 \u0430\u0434\u0440\u0435\u0441\u044b \u0431\u0443\u043b\u0441\u0430 \u043a\u0438\u0440\u04d9\u043a. \u0417\u0430\u0440\u0443\u0440\u0438 mailto: \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u04e9\u0441\u0442\u04d9\u043b\u0441\u0435\u043d\u043c\u0435?",
+"Insert\/edit link": "\u0421\u044b\u043b\u0442\u0430\u043b\u0430\u043c\u0430 \u04e9\u0441\u0442\u04d9\u04af\/\u04af\u0437\u0433\u04d9\u0440\u0442\u04af",
+"Insert\/edit video": "\u0412\u0438\u0434\u0435\u043e \u04e9\u0441\u0442\u04d9\u04af\/\u04af\u0437\u0433\u04d9\u0440\u0442\u04af",
+"Poster": "\u041f\u043e\u0441\u0442\u0435\u0440",
+"Alternative source": "\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432 \u0447\u044b\u0433\u0430\u043d\u0430\u043a",
+"Paste your embed code below:": "\u042d\u0447\u0435\u043d\u04d9 \u0441\u0430\u043b\u044b\u043d\u0433\u0430\u043d \u043a\u043e\u0434\u043d\u044b \u0442\u04af\u0431\u04d9\u043d\u0440\u04d9\u043a \u04e9\u0441\u0442\u04d9\u0433\u0435\u0437:",
+"Insert video": "\u0412\u0438\u0434\u0435\u043e \u04e9\u0441\u0442\u04d9\u04af",
+"Embed": "\u042d\u0447\u0435\u043d\u04d9 \u0441\u0430\u043b\u0443",
+"Nonbreaking space": "\u04e8\u0437\u0435\u043b\u043c\u04d9\u0441 \u0431\u0443\u0448\u043b\u044b\u043a",
+"Page break": "\u0411\u0438\u0442 \u0431\u04af\u043b\u0433\u0435\u0447\u0435",
+"Paste as text": "\u0424\u043e\u0440\u043c\u0430\u0442\u043b\u0430\u0443\u0441\u044b\u0437 \u0442\u0435\u043a\u0441\u0442 \u04e9\u0441\u0442\u04d9\u04af",
+"Preview": "\u041a\u0430\u0440\u0430\u043f \u0430\u043b\u0443",
+"Print": "\u0411\u0430\u0441\u0442\u044b\u0440\u0443",
+"Save": "\u0421\u0430\u043a\u043b\u0430\u0443",
+"Could not find the specified string.": "\u042d\u0437\u043b\u04d9\u043d\u0433\u04d9\u043d \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0442\u0430\u0431\u044b\u043b\u043c\u0430\u0434\u044b.",
+"Replace": "\u0410\u043b\u043c\u0430\u0448\u0442\u044b\u0440\u0443",
+"Next": "\u041a\u0438\u043b\u04d9\u0441\u0435",
+"Whole words": "\u0421\u04af\u0437\u043b\u04d9\u0440\u043d\u0435 \u0442\u0443\u043b\u044b\u0441\u044b\u043d\u0447\u0430 \u0433\u044b\u043d\u0430 \u044d\u0437\u043b\u04d9\u04af",
+"Find and replace": "\u042d\u0437\u043b\u04d9\u043f \u0442\u0430\u0431\u0443 \u04bb\u04d9\u043c \u0430\u043b\u043c\u0430\u0448\u0442\u044b\u0440\u0443",
+"Replace with": "\u041d\u04d9\u0440\u0441\u04d9\u0433\u04d9 \u0430\u043b\u043c\u0430\u0448\u0442\u044b\u0440\u0443",
+"Find": "\u042d\u0437\u043b\u04d9\u04af",
+"Replace all": "\u0411\u0430\u0440\u044b\u0441\u044b\u043d \u0434\u0430 \u0430\u043b\u043c\u0430\u0448\u0442\u044b\u0440\u0443",
+"Match case": "\u0411\u0430\u0448 \u04bb\u04d9\u043c \u044e\u043b \u0445\u04d9\u0440\u0435\u0444\u043b\u04d9\u0440\u0435\u043d \u0438\u0441\u04d9\u043f\u043a\u04d9 \u0430\u043b\u0443",
+"Prev": "\u0410\u043b\u0434\u0430\u0433\u044b",
+"Spellcheck": "\u0414\u04e9\u0440\u0435\u0441 \u044f\u0437\u044b\u043b\u044b\u0448",
+"Finish": "\u0422\u04d9\u043c\u0430\u043c",
+"Ignore all": "\u0411\u0430\u0440\u044b\u0441\u044b\u043d \u0434\u0430 \u043a\u0430\u043b\u0434\u044b\u0440\u0443",
+"Ignore": "\u0418\u0433\u044a\u0442\u0438\u0431\u0430\u0440\u0441\u044b\u0437 \u043a\u0430\u043b\u0434\u044b\u0440\u0443",
+"Add to Dictionary": "\u0421\u04af\u0437\u043b\u0435\u043a\u043a\u04d9 \u04e9\u0441\u0442\u04d9\u04af",
+"Insert row before": "\u04e8\u0441\u0442\u04d9\u043d \u044e\u043b\u043b\u0430\u0440 \u04e9\u0441\u0442\u04d9\u04af",
+"Rows": "\u042e\u043b\u043b\u0430\u0440",
+"Height": "\u0411\u0438\u0435\u043a\u043b\u0435\u043a",
+"Paste row after": "\u042e\u043b\u043d\u044b \u0430\u0441\u0442\u0430\u043d \u04e9\u0441\u0442\u04d9\u04af",
+"Alignment": "\u0422\u0438\u0433\u0435\u0437\u043b\u04d9\u04af",
+"Border color": "\u0427\u0438\u043a \u0442\u04e9\u0441\u0435",
+"Column group": "\u0411\u0430\u0433\u0430\u043d\u0430\u043b\u0430\u0440 \u0433\u0440\u0443\u043f\u043f\u0430\u0441\u044b",
+"Row": "\u042e\u043b",
+"Insert column before": "\u0421\u0443\u043b\u0434\u0430\u043d \u0431\u0430\u0433\u0430\u043d\u0430\u043b\u0430\u0440 \u04e9\u0441\u0442\u04d9\u04af",
+"Split cell": "\u041a\u04af\u0437\u04d9\u043d\u04d9\u043a\u043d\u0435 \u0431\u04af\u043b\u04af",
+"Cell padding": "\u041a\u04af\u0437\u04d9\u043d\u04d9\u043a\u043d\u0435 \u0442\u0443\u0442\u044b\u0440\u0443",
+"Cell spacing": "\u041a\u04af\u0437\u04d9\u043d\u04d9\u043a\u043b\u04d9\u0440 \u0430\u0440\u0430\u0441\u044b",
+"Row type": "\u042e\u043b \u0442\u04e9\u0440\u0435",
+"Insert table": "\u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u04e9\u0441\u0442\u04d9\u04af",
+"Body": "\u0411\u04d9\u0434\u04d9\u043d",
+"Caption": "\u0418\u0441\u0435\u043c",
+"Footer": "\u0410\u0441\u043a\u044b \u04e9\u043b\u0435\u0448",
+"Delete row": "\u042e\u043b\u043d\u044b \u0431\u0435\u0442\u0435\u0440\u04af",
+"Paste row before": "\u042e\u043b\u043d\u044b \u04e9\u0441\u0442\u04d9\u043d \u04e9\u0441\u0442\u04d9\u04af",
+"Scope": "\u04e8\u043b\u043a\u04d9",
+"Delete table": "\u0422\u0430\u0431\u043b\u0438\u0446\u0430\u043d\u044b \u0431\u0435\u0442\u0435\u0440\u04af",
+"H Align": "\u042f\u0442\u043c\u0430 \u0442\u0438\u0433\u0435\u0437\u043b\u04d9\u04af",
+"Top": "\u04e8\u0441\u043a\u04d9",
+"Header cell": "\u0411\u0430\u0448 \u043a\u04af\u0437\u04d9\u043d\u04d9\u043a",
+"Column": "\u0411\u0430\u0433\u0430\u043d\u0430",
+"Row group": "\u042e\u043b\u043b\u0430\u0440 \u0433\u0440\u0443\u043f\u043f\u0430\u0441\u044b",
+"Cell": "\u041a\u04af\u0437\u04d9\u043d\u04d9\u043a",
+"Middle": "\u0423\u0440\u0442\u0430\u0433\u0430",
+"Cell type": "\u041a\u04af\u0437\u04d9\u043d\u04d9\u043a \u0442\u04e9\u0440\u0435",
+"Copy row": "\u042e\u043b\u043d\u044b \u043a\u04af\u0447\u0435\u0440\u043c\u04d9\u043b\u04d9\u04af",
+"Row properties": "\u042e\u043b \u04af\u0437\u043b\u0435\u043a\u043b\u04d9\u0440\u0435",
+"Table properties": "\u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u04af\u0437\u043b\u0435\u043a\u043b\u04d9\u0440\u0435",
+"Bottom": "\u0410\u0441\u043a\u0430",
+"V Align": "\u0410\u0441\u043c\u0430 \u0442\u0438\u0433\u0435\u0437\u043b\u04d9\u04af",
+"Header": "\u04e8\u0441\u043a\u0435 \u04e9\u043b\u0435\u0448",
+"Right": "\u0423\u04a3",
+"Insert column after": "\u0423\u04a3\u043d\u0430\u043d \u0431\u0430\u0433\u0430\u043d\u0430\u043b\u0430\u0440 \u04e9\u0441\u0442\u04d9\u04af",
+"Cols": "\u0411\u0430\u0433\u0430\u043d\u0430\u043b\u0430\u0440",
+"Insert row after": "\u0410\u0441\u0442\u0430\u043d \u044e\u043b\u043b\u0430\u0440 \u04e9\u0441\u0442\u04d9\u04af",
+"Width": "\u041a\u0438\u04a3\u043b\u0435\u043a",
+"Cell properties": "\u041a\u04af\u0437\u04d9\u043d\u04d9\u043a \u04af\u0437\u043b\u0435\u043a\u043b\u04d9\u0440\u0435",
+"Left": "\u0421\u0443\u043b",
+"Cut row": "\u042e\u043b\u043d\u044b \u043a\u0438\u0441\u0435\u043f \u0430\u043b\u0443",
+"Delete column": "\u0411\u0430\u0433\u0430\u043d\u0430\u043d\u044b \u0431\u0435\u0442\u0435\u0440\u04af",
+"Center": "\u04ae\u0437\u04d9\u043a",
+"Merge cells": "\u041a\u04af\u0437\u04d9\u043d\u04d9\u043a\u043b\u04d9\u0440\u043d\u0435 \u0431\u0435\u0440\u043b\u04d9\u0448\u0442\u0435\u0440\u04af",
+"Insert template": "\u0428\u0430\u0431\u043b\u043e\u043d \u04e9\u0441\u0442\u04d9\u04af",
+"Templates": "\u0428\u0430\u0431\u043b\u043e\u043d\u043d\u0430\u0440",
+"Background color": "\u0424\u043e\u043d \u0442\u04e9\u0441\u0435",
+"Custom...": "\u04ae\u0437\u0435\u043d\u0447\u04d9\u043b\u0435\u043a\u043b\u0435...",
+"Custom color": "\u04ae\u0437\u0435\u043d\u0447\u04d9\u043b\u0435\u043a\u043b\u0435 \u0442\u04e9\u0441",
+"No color": "\u0422\u04e9\u0441\u0441\u0435\u0437",
+"Text color": "\u0422\u0435\u043a\u0441\u0442 \u0442\u04e9\u0441\u0435",
+"Show blocks": "\u0411\u043b\u043e\u043a\u043b\u0430\u0440\u043d\u044b \u043a\u04af\u0440\u0441\u04d9\u0442\u04af",
+"Show invisible characters": "\u042f\u0448\u0435\u0440\u0435\u043d \u0441\u0438\u043c\u0432\u043e\u043b\u043b\u0430\u0440\u043d\u044b \u043a\u04af\u0440\u0441\u04d9\u0442\u04af",
+"Words: {0}": "\u0421\u04af\u0437\u043b\u04d9\u0440: {0}",
+"Insert": "\u04e8\u0441\u0442\u04d9\u04af",
+"File": "\u0424\u0430\u0439\u043b",
+"Edit": "\u0422\u04e9\u043f",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u0424\u043e\u0440\u043c\u0430\u0442\u043b\u0430\u0443\u043b\u044b \u0442\u0435\u043a\u0441\u0442 \u04e9\u043b\u043a\u04d9\u0441\u0435. \u041c\u0435\u043d\u044e\u0433\u0430 \u043a\u0435\u0440\u0435\u0440 \u04e9\u0447\u0435\u043d ALT-F9 \u0431\u0430\u0441\u044b\u0433\u044b\u0437. \u041a\u043e\u0440\u0430\u043b\u043b\u0430\u0440 \u043f\u0430\u043d\u0435\u043b\u0435\u043d\u04d9 \u043a\u04af\u0447\u0435\u0440 \u04e9\u0447\u0435\u043d ALT-F10 \u0431\u0430\u0441\u044b\u0433\u044b\u0437. \u042f\u0440\u0434\u04d9\u043c \u04e9\u0447\u0435\u043d ALT-0 \u0431\u0430\u0441\u044b\u0433\u044b\u0437.",
+"Tools": "\u041a\u043e\u0440\u0430\u043b\u043b\u0430\u0440",
+"View": "\u041a\u04af\u0440\u0435\u043d\u0435\u0448",
+"Table": "\u0422\u0430\u0431\u043b\u0438\u0446\u0430",
+"Format": "\u0424\u043e\u0440\u043c\u0430\u0442\u043b\u0430\u0443"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/ug.js b/program/js/tinymce/langs/ug.js
new file mode 100644
index 000000000..0247821cd
--- /dev/null
+++ b/program/js/tinymce/langs/ug.js
@@ -0,0 +1,189 @@
+tinymce.addI18n('ug',{
+"Cut": "\u0643\u06d0\u0633\u0649\u0634",
+"Header 2": "\u062a\u06d0\u0645\u0627 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0633\u0649\u0632\u0646\u0649\u06ad \u062a\u0648\u0631 \u0643\u06c6\u0631\u06af\u06c8\u0686\u0649\u06ad\u0649\u0632 \u0642\u0649\u064a\u0649\u067e \u0686\u0627\u067e\u0644\u0627\u0634 \u062a\u0627\u062e\u062a\u0649\u0633\u0649 \u0632\u0649\u064a\u0627\u0631\u06d5\u062a \u0642\u0649\u0644\u0649\u0634\u0646\u0649 \u0642\u0648\u0644\u0644\u0649\u0645\u0627\u064a\u062f\u06c7. Ctrl+X\/C\/V \u062a\u06d0\u0632\u0644\u06d5\u062a\u0645\u06d5 \u0643\u0648\u0646\u06c7\u067e\u0643\u0649\u0633\u0649 \u0626\u0627\u0631\u0642\u0649\u0644\u0649\u0642 \u0643\u06d0\u0633\u0649\u067e \u0686\u0627\u067e\u0644\u0627\u0634 \u0645\u06d5\u0634\u063a\u06c7\u0644\u0627\u062a\u0649 \u0642\u0649\u0644\u0649\u06ad.",
+"Div": "Div",
+"Paste": "\u0686\u0627\u067e\u0644\u0627\u0634",
+"Close": "\u062a\u0627\u0642\u0627\u0634",
+"Font Family": "Font Family",
+"Pre": "Pre",
+"Align right": "\u0626\u0648\u06ad\u063a\u0627 \u062a\u0648\u063a\u06c7\u0631\u0644\u0627\u0634",
+"New document": "\u064a\u06d0\u06ad\u0649 \u06be\u06c6\u062c\u062c\u06d5\u062a \u0642\u06c7\u0631\u06c7\u0634",
+"Blockquote": "\u0626\u06d5\u0633\u0643\u06d5\u0631\u062a\u0649\u0634",
+"Numbered list": "\u0633\u0627\u0646\u0644\u0649\u0642 \u062a\u0649\u0632\u0649\u0645\u0644\u0649\u0643",
+"Increase indent": "\u0643\u06d5\u064a\u0646\u0649\u06af\u06d5 \u0633\u06c8\u0631\u06c8\u0634",
+"Formats": "\u0641\u0648\u0631\u0645\u0627\u062a",
+"Headers": "Headers",
+"Select all": "\u06be\u06d5\u0645\u0645\u0649\u0646\u0649 \u062a\u0627\u0644\u0644\u0627\u0634",
+"Header 3": "\u062a\u06d0\u0645\u0627 3",
+"Blocks": "Blocks",
+"Undo": "\u0626\u0627\u0631\u0642\u0649\u063a\u0627 \u064a\u06d0\u0646\u0649\u0634",
+"Strikethrough": "\u0626\u06c6\u0686\u06c8\u0631\u06c8\u0634 \u0633\u0649\u0632\u0649\u0642\u0649",
+"Bullet list": "\u0628\u06d5\u0644\u06af\u06d5 \u062a\u0649\u0632\u0649\u0645\u0644\u0649\u0643",
+"Header 1": "\u062a\u06d0\u0645\u0627 1",
+"Superscript": "\u0626\u06c8\u0633\u062a\u06c8\u0646\u0643\u0649 \u0628\u06d5\u0644\u06af\u06d5",
+"Clear formatting": "\u0641\u0648\u0631\u0645\u0627\u062a\u0646\u0649 \u062a\u0627\u0632\u0644\u0627\u0634",
+"Font Sizes": "Font Sizes",
+"Subscript": "\u0626\u0627\u0633\u062a\u0649\u0646\u0642\u0649 \u0628\u06d5\u0644\u06af\u06d5",
+"Header 6": "\u062a\u06d0\u0645\u0627 6",
+"Redo": "\u0642\u0627\u064a\u062a\u0627 \u0642\u0649\u0644\u0649\u0634",
+"Paragraph": "\u067e\u0627\u0631\u0627\u06af\u0649\u0631\u0627 \u0641",
+"Ok": "\u062c\u06d5\u0632\u0649\u0645\u0644\u06d5\u0634",
+"Bold": "\u062a\u0648\u0645",
+"Code": "Code",
+"Italic": "\u064a\u0627\u0646\u062a\u06c7",
+"Align center": "\u0645\u06d5\u0631\u0643\u06d5\u0632\u06af\u06d5 \u062a\u0648\u063a\u06c7\u0631\u0644\u0627\u0634",
+"Header 5": "\u062a\u06d0\u0645\u0627 5",
+"Decrease indent": "\u0626\u0627\u0644\u062f\u0649\u063a\u0627 \u0633\u06c8\u0631\u06c8\u0634",
+"Header 4": "\u062a\u06d0\u0645\u0627 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u06be\u0627\u0632\u0649\u0631 \u0686\u0627\u067e\u0644\u0649\u0633\u0649\u06ad\u0649\u0632 \u0633\u0627\u067e \u062a\u06d0\u0643\u0649\u0634 \u0645\u06d5\u0632\u0645\u06c7\u0646\u0649 \u0686\u0627\u067e\u0644\u0649\u0646\u0649\u062f\u06c7. \u062a\u06d0\u0643\u0649\u0634 \u0634\u06d5\u0643\u0644\u0649\u062f\u06d5 \u0686\u0627\u067e\u0644\u0627\u0634 \u062a\u06d5\u06ad\u0634\u0649\u0643\u0649\u0646\u0649 \u062a\u0627\u0642\u0649\u06cb\u06d5\u062a\u0643\u06d5\u0646\u06af\u06d5 \u0642\u06d5\u062f\u06d5\u0631.",
+"Underline": "\u0626\u0627\u0633\u062a\u0649 \u0633\u0649\u0632\u0649\u0642",
+"Cancel": "\u0642\u0627\u0644\u062f\u06c7\u0631\u06c7\u0634",
+"Justify": "\u0626\u0649\u0643\u0643\u0649 \u064a\u0627\u0646\u063a\u0627 \u062a\u0648\u063a\u06c7\u0631\u0644\u0627\u0634",
+"Inline": "Inline",
+"Copy": "\u0643\u06c6\u0686\u06c8\u0631\u06c8\u0634",
+"Align left": "\u0633\u0648\u0644\u063a\u0627 \u062a\u0648\u063a\u0631\u0649\u0644\u0627\u0634",
+"Visual aids": "\u0626\u06d5\u0633\u0643\u06d5\u0631\u062a\u0649\u0634",
+"Lower Greek": "\u06af\u0631\u06d0\u062a\u0633\u0649\u064a\u0649\u0686\u06d5 \u0643\u0649\u0686\u0649\u0643 \u064a\u06d0\u0632\u0649\u0644\u0649\u0634\u0649",
+"Square": "\u0643\u06cb\u0627\u062f\u0631\u0627\u062a",
+"Default": "\u0633\u06c8\u0643\u06c8\u062a",
+"Lower Alpha": "\u0626\u0649\u0646\u06af\u0649\u0644\u0649\u0632\u0686\u06d5 \u0643\u0649\u0686\u0649\u0643 \u064a\u06d0\u0632\u0649\u0644\u0649\u0634\u0649",
+"Circle": "\u0686\u06d5\u0645\u0628\u06d5\u0631",
+"Disc": "\u062f\u06d0\u0633\u0643\u0627",
+"Upper Alpha": "\u0626\u0649\u0646\u06af\u0649\u0644\u0649\u0632\u0686\u06d5 \u0686\u0648\u06ad \u064a\u06d0\u0632\u0649\u0644\u0649\u0634\u0649",
+"Upper Roman": "\u0631\u0649\u0645\u0686\u06d5 \u0686\u0648\u06ad \u064a\u06d0\u0632\u0649\u0644\u0649\u0634\u0649",
+"Lower Roman": "\u0631\u0649\u0645\u0686\u06d5 \u0643\u0649\u0686\u0649\u0643 \u064a\u06d0\u0632\u0649\u0644\u0649\u0634\u0649",
+"Name": "\u0646\u0627\u0645\u0649",
+"Anchor": "\u0626\u06c7\u0644\u0627\u0646\u0645\u0627",
+"You have unsaved changes are you sure you want to navigate away?": "\u0633\u0649\u0632 \u062a\u06d0\u062e\u0649 \u0645\u06d5\u0632\u0645\u06c7\u0646\u0646\u0649 \u0633\u0627\u0642\u0644\u0649\u0645\u0649\u062f\u0649\u06ad\u0649\u0632\u060c \u0626\u0627\u064a\u0631\u0649\u0644\u0627\u0645\u0633\u0649\u0632\u061f",
+"Restore last draft": "\u0626\u0627\u062e\u0649\u0631\u0642\u0649 \u0643\u06c7\u067e\u0649\u064a\u0649\u06af\u06d5 \u0642\u0627\u064a\u062a\u0649\u0634",
+"Special character": "\u0626\u0627\u0644\u0627\u06be\u0649\u062f\u06d5 \u0628\u06d5\u0644\u06af\u0649\u0644\u06d5\u0631",
+"Source code": "\u0626\u06d5\u0633\u0644\u0649 \u0643\u0648\u062f\u0649",
+"Right to left": "\u0626\u0648\u06ad\u062f\u0649\u0646 \u0633\u0648\u0644\u063a\u0627",
+"Left to right": "\u0633\u0648\u0644\u062f\u0649\u0646 \u0626\u0648\u06ad\u063a\u0627 ",
+"Emoticons": "\u0686\u0649\u0631\u0627\u064a \u0626\u0649\u067e\u0627\u062f\u06d5",
+"Robots": "\u0645\u0627\u0634\u0649\u0646\u0627 \u0626\u0627\u062f\u06d5\u0645",
+"Document properties": "\u06be\u06c6\u062c\u062c\u06d5\u062a \u062e\u0627\u0633\u0644\u0649\u0642\u0649",
+"Title": "\u062a\u06d0\u0645\u0627",
+"Keywords": "\u06be\u0627\u0644\u0642\u0649\u0644\u0649\u0642 \u0633\u06c6\u0632",
+"Encoding": "\u0643\u0648\u062f\u0644\u0627\u0634",
+"Description": "\u062a\u06d5\u0633\u0649\u06cb\u0649\u0631",
+"Author": "\u0626\u06c7\u0644\u0627\u0646\u0645\u0627",
+"Fullscreen": "\u067e\u06c8\u062a\u06c8\u0646 \u0626\u06d0\u0643\u0631\u0627\u0646",
+"Horizontal line": "\u06af\u0648\u0631\u0632\u0649\u0646\u062a\u0627\u0644 \u0642\u06c7\u0631",
+"Horizontal space": "\u06af\u0648\u0631\u0632\u0649\u0646\u062a\u0627\u0644 \u0628\u0648\u0634\u0644\u06c7\u0642",
+"Insert\/edit image": "\u0631\u06d5\u0633\u0649\u0645 \u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634 \u064a\u0627\u0643\u0649 \u062a\u06d5\u06be\u0631\u0649\u0631\u0644\u06d5\u0634",
+"General": "\u0626\u0627\u062f\u06d5\u062a\u062a\u0649\u0643\u0649",
+"Advanced": "\u0626\u0627\u0644\u0627\u06be\u0649\u062f\u06d5",
+"Source": "\u0645\u06d5\u0646\u0628\u06d5",
+"Border": "\u064a\u0627\u0642\u0627",
+"Constrain proportions": "\u0626\u06d0\u06af\u0649\u0632\u0644\u0649\u0643-\u0643\u06d5\u06ad\u0644\u0649\u0643 \u0646\u0649\u0633\u067e\u0649\u062a\u0649\u0646\u0649 \u0633\u0627\u0642\u0644\u0627\u0634",
+"Vertical space": "\u06cb\u06d0\u0631\u062a\u0649\u0643\u0627\u0644 \u0628\u0648\u0634\u0644\u06c7\u0642",
+"Image description": "\u0631\u06d5\u0633\u0649\u0645 \u062a\u06d5\u0633\u06cb\u0649\u0631\u0649",
+"Style": "\u0626\u06c7\u0633\u0644\u06c7\u067e",
+"Dimensions": "\u0686\u0648\u06ad-\u0643\u0649\u0686\u0649\u0643",
+"Insert image": "\u0631\u06d5\u0633\u0649\u0645 \u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
+"Insert date\/time": "\u0686\u0649\u0633\u0644\u0627\/\u06cb\u0627\u0642\u0649\u062a \u0643\u0649\u0631\u06af\u06c8\u0632\u06c8\u0634",
+"Remove link": "Remove link",
+"Url": "\u0626\u0627\u062f\u0631\u0649\u0633",
+"Text to display": "\u0643\u06c6\u0631\u06c8\u0646\u0649\u062f\u0649\u063a\u0627\u0646 \u0645\u06d5\u0632\u0645\u06c7\u0646",
+"Anchors": "Anchors",
+"Insert link": "\u0626\u06c7\u0644\u0649\u0646\u0649\u0634 \u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
+"New window": "\u064a\u06d0\u06ad\u0649 \u0643\u06c6\u0632\u0646\u06d5\u0643",
+"None": "\u064a\u0648\u0642",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?",
+"Target": "\u0646\u0649\u0634\u0627\u0646",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",
+"Insert\/edit link": "\u0626\u06c7\u0644\u0649\u0646\u0649\u0634 \u0642\u06c7\u0633\u062a\u06c7\u0631\u06c7\u0634\/\u062a\u06d5\u06be\u0631\u0649\u0631\u0644\u06d5\u0634",
+"Insert\/edit video": "\u0633\u0649\u0646 \u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634\/\u062a\u06d5\u06be\u0631\u0649\u0631\u0644\u06d5\u0634",
+"Poster": "\u064a\u0648\u0644\u0644\u0649\u063a\u06c7\u0686\u0649",
+"Alternative source": "\u062a\u06d5\u0633\u06cb\u0649\u0631\u0649",
+"Paste your embed code below:": "\u0642\u0649\u0633\u062a\u06c7\u0631\u0645\u0627\u0642\u0686\u0649 \u0628\u0648\u0644\u063a\u0627\u0646 \u0643\u0648\u062f\u0646\u0649 \u0686\u0627\u067e\u0644\u0627\u06ad",
+"Insert video": "\u0633\u0649\u0646 \u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
+"Embed": "\u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
+"Nonbreaking space": "\u0628\u0648\u0634\u0644\u06c7\u0642",
+"Page break": "\u0628\u06d5\u062a \u0626\u0627\u062e\u0649\u0631\u0644\u0627\u0634\u062a\u06c7\u0631\u06c7\u0634",
+"Paste as text": "\u062a\u06d0\u0643\u0649\u0634 \u0634\u06d5\u0643\u0644\u0649\u062f\u06d5 \u0686\u0627\u067e\u0644\u0627\u0634",
+"Preview": "\u0643\u06c6\u0631\u06c8\u0634",
+"Print": "\u0628\u0627\u0633\u0645\u0627\u0642 ",
+"Save": "\u0633\u0627\u0642\u0644\u0627\u0634",
+"Could not find the specified string.": "\u0626\u0649\u0632\u062f\u0649\u0645\u06d5\u0643\u0686\u0649 \u0628\u0648\u0644\u063a\u0627\u0646 \u0645\u06d5\u0632\u0645\u06c7\u0646\u0646\u0649 \u062a\u0627\u067e\u0627\u0644\u0645\u0649\u062f\u0649.",
+"Replace": "\u0626\u0627\u0644\u0645\u0627\u0634\u062a\u06c7\u0631\u06c7\u0634",
+"Next": "\u0643\u06d0\u064a\u0649\u0646\u0643\u0649\u0633\u0649",
+"Whole words": "\u062a\u0648\u0644\u06c7\u0642 \u0645\u0627\u0633\u0644\u0627\u0634\u062a\u06c7\u0631\u06c7\u0634",
+"Find and replace": "\u0626\u0649\u0632\u062f\u06d5\u0634 \u06cb\u06d5 \u0626\u0627\u0644\u0645\u0627\u0634\u062a\u06c7\u0631\u06c7\u0634",
+"Replace with": "\u0626\u0627\u0644\u0645\u0627\u0634\u062a\u06c7\u0631\u06c7\u0634",
+"Find": "\u0626\u0649\u0632\u062f\u06d5\u0634",
+"Replace all": "\u06be\u06d5\u0645\u0645\u0649\u0646\u0649 \u0626\u0627\u0644\u0645\u0627\u0634\u062a\u06c7\u0631\u06c7\u0634",
+"Match case": "\u0686\u0648\u06ad \u0643\u0649\u0686\u0649\u0643 \u06be\u06d5\u0631\u0649\u067e\u0646\u0649 \u067e\u06d5\u0631\u0649\u0642\u0644\u06d5\u0646\u062f\u06c8\u0631\u06c8\u0634",
+"Prev": "\u0626\u0627\u0644\u062f\u0649\u0646\u0642\u0649\u0633\u0649",
+"Spellcheck": "\u0626\u0649\u0645\u0644\u0627 \u062a\u06d5\u0643\u0634\u06c8\u0631\u06c8\u0634",
+"Finish": "\u0626\u0627\u062e\u0649\u0631\u0644\u0627\u0634\u062a\u06c7\u0631\u06c7\u0634",
+"Ignore all": "\u06be\u06d5\u0645\u0645\u0649\u0646\u0649 \u0626\u06c6\u062a\u0643\u06c8\u0632\u06c8\u0634",
+"Ignore": "\u0626\u06c6\u062a\u0643\u06c8\u0632\u06c8\u0634",
+"Add to Dictionary": "\u0644\u06c7\u063a\u06d5\u062a \u0642\u0648\u0634\u06c7\u0634",
+"Insert row before": "\u0626\u0627\u0644\u062f\u0649\u063a\u0627 \u0642\u06c7\u0631 \u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
+"Rows": "\u0642\u06c7\u0631",
+"Height": "\u0626\u06d0\u06af\u0649\u0632\u0644\u0649\u0643\u0649",
+"Paste row after": "\u0642\u06c7\u0631 \u0643\u06d5\u064a\u0646\u0649\u06af\u06d5 \u0686\u0627\u067e\u0644\u0627\u0634",
+"Alignment": "\u064a\u06c6\u0644\u0649\u0646\u0649\u0634\u0649",
+"Border color": "\u0631\u0627\u0645\u0643\u0627 \u0631\u06d5\u06ad\u06af\u0649",
+"Column group": "\u0631\u06d5\u062a \u06af\u06c7\u0631\u06c7\u067e\u067e\u0649\u0633\u0649",
+"Row": "\u0642\u06c7\u0631",
+"Insert column before": "\u0631\u06d5\u062a \u0626\u0627\u0644\u062f\u0649\u063a\u0627 \u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
+"Split cell": "\u0643\u0627\u062a\u06d5\u0643 \u067e\u0627\u0631\u0686\u0649\u0644\u0627\u0634",
+"Cell padding": "\u0643\u0627\u062a\u06d5\u0643 \u0626\u0649\u0686\u0643\u0649 \u0626\u0627\u0631\u0649\u0644\u0649\u0642\u0649",
+"Cell spacing": "\u0643\u0627\u062a\u06d5\u0643 \u0633\u0649\u0631\u062a\u0642\u0649 \u0626\u0627\u0631\u0649\u0644\u0649\u0642\u0649",
+"Row type": "\u0642\u06c7\u0631 \u062a\u0649\u067e\u0649",
+"Insert table": "\u062c\u06d5\u062f\u06cb\u06d5\u0644 \u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
+"Body": "\u0628\u06d5\u062f\u0649\u0646\u0649",
+"Caption": "\u0686\u06c8\u0634\u06d5\u0646\u062f\u06c8\u0631\u06c8\u0634",
+"Footer": "\u067e\u06c7\u062a\u0649",
+"Delete row": "\u0642\u06c7\u0631 \u0626\u06c6\u0686\u06c8\u0631\u06c8\u0634",
+"Paste row before": "\u0642\u06c7\u0631 \u0626\u0627\u0644\u062f\u0649\u063a\u0627 \u0686\u0627\u067e\u0644\u0627\u0634",
+"Scope": "\u062f\u0627\u0626\u0649\u0631\u06d5",
+"Delete table": "\u062c\u06d5\u062f\u06cb\u06d5\u0644 \u0626\u06c6\u0686\u06c8\u0631\u0634",
+"H Align": "\u06af\u0648\u0631\u0632\u0649\u0646\u062a\u0627\u0644 \u062a\u0648\u063a\u0631\u0649\u0644\u0627\u0634",
+"Top": "\u0626\u06c8\u0633\u062a\u0649",
+"Header cell": "\u0628\u0627\u0634 \u0643\u0627\u062a\u06d5\u0643",
+"Column": "\u0631\u06d5\u062a",
+"Row group": "\u0642\u06c7\u0631 \u06af\u06c7\u0631\u06c7\u067e\u067e\u0649\u0633\u0649",
+"Cell": "\u0643\u0627\u062a\u06d5\u0643",
+"Middle": "\u0626\u0648\u062a\u062a\u06c7\u0631\u0633\u0649",
+"Cell type": "\u0643\u0627\u062a\u06d5\u0643 \u062a\u0649\u067e\u0649",
+"Copy row": "\u0642\u06c7\u0631 \u0643\u06c6\u0686\u06c8\u0631\u06c8\u0634",
+"Row properties": "\u0642\u06c7\u0631 \u062e\u0627\u0633\u0644\u0649\u0642\u0649",
+"Table properties": "\u062c\u06d5\u062f\u06cb\u06d5\u0644 \u062e\u0627\u0633\u0644\u0649\u0642\u0649",
+"Bottom": "\u0626\u0627\u0633\u062a\u0649",
+"V Align": "\u06cb\u06d0\u0631\u062a\u0649\u0643\u0627\u0644 \u062a\u0648\u063a\u0631\u0649\u0644\u0627\u0634",
+"Header": "\u0628\u06d0\u0634\u0649",
+"Right": "\u0626\u0648\u06ad",
+"Insert column after": "\u0631\u06d5\u062a \u0643\u06d5\u064a\u0646\u0649\u06af\u06d5 \u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
+"Cols": "\u0631\u06d5\u062a",
+"Insert row after": "\u0626\u0627\u0631\u0642\u0649\u063a\u0627 \u0642\u06c7\u0631 \u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
+"Width": "\u0643\u06d5\u06ad\u0644\u0649\u0643\u0649",
+"Cell properties": "\u0643\u0627\u062a\u06d5\u0643 \u062e\u0627\u0633\u0644\u0649\u0642\u0649",
+"Left": "\u0633\u0648\u0644",
+"Cut row": "\u0642\u06c7\u0631 \u0643\u06d0\u0633\u0649\u0634",
+"Delete column": "\u0631\u06d5\u062a \u0626\u06c6\u0686\u06c8\u0631\u06c8\u0634",
+"Center": "\u0645\u06d5\u0631\u0643\u06d5\u0632",
+"Merge cells": "\u0643\u0627\u062a\u06d5\u0643 \u0628\u0649\u0631\u0644\u06d5\u0634\u062a\u06c8\u0631\u06c8\u0634",
+"Insert template": "\u0626\u06c8\u0644\u06af\u06d5 \u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
+"Templates": "\u0626\u06c8\u0644\u06af\u0649\u0644\u06d5\u0631",
+"Background color": "\u0626\u0627\u0631\u0642\u0627 \u0631\u06d5\u06ad\u06af\u0649",
+"Custom...": "\u0626\u0649\u062e\u062a\u0649\u064a\u0627\u0631\u0649",
+"Custom color": "\u0626\u0649\u062e\u062a\u0649\u064a\u0627\u0631\u0649 \u0631\u06d5\u06ad",
+"No color": "\u0631\u06d5\u06ad \u064a\u0648\u0642",
+"Text color": "\u062e\u06d5\u062a \u0631\u06d5\u06ad\u06af\u0649",
+"Show blocks": "\u0631\u0627\u064a\u0648\u0646 \u0643\u06c6\u0631\u0633\u0649\u062a\u0649\u0634",
+"Show invisible characters": "\u0643\u06c6\u0631\u06c8\u0646\u0645\u06d5\u064a\u062f\u0649\u063a\u0627\u0646 \u06be\u06d5\u0631\u0649\u067e\u0644\u06d5\u0631\u0646\u0649 \u0643\u06c6\u0631\u0633\u0649\u062a\u0649\u0634",
+"Words: {0}": "\u0633\u06c6\u0632: {0}",
+"Insert": "\u0642\u0649\u0633\u062a\u06c7\u0631\u06c7\u0634",
+"File": "\u06be\u06c6\u062c\u062c\u06d5\u062a",
+"Edit": "\u062a\u06d5\u06be\u0631\u0649\u0631\u0644\u06d5\u0634",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help",
+"Tools": "\u0642\u06c7\u0631\u0627\u0644",
+"View": "\u0643\u06c6\u0631\u06c8\u0634",
+"Table": "\u062c\u06d5\u062f\u06cb\u06d5\u0644",
+"Format": "\u0641\u0648\u0631\u0645\u0627\u062a"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/uk.js b/program/js/tinymce/langs/uk.js
new file mode 100644
index 000000000..3efbc93e2
--- /dev/null
+++ b/program/js/tinymce/langs/uk.js
@@ -0,0 +1,197 @@
+tinymce.addI18n('uk',{
+"Cut": "\u0412\u0438\u0440\u0456\u0437\u0430\u0442\u0438",
+"Heading 5": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 5",
+"Header 2": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0412\u0430\u0448 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0435 \u043f\u0456\u0434\u0442\u0440\u0438\u043c\u0443\u0454 \u043f\u0440\u044f\u043c\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0434\u043e \u0431\u0443\u0444\u0435\u0440\u0443 \u043e\u0431\u043c\u0456\u043d\u0443. \u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0439\u0442\u0435 Ctrl+X\/C\/V \u0437\u0430\u043c\u0456\u0441\u0442\u044c \u0441\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044f \u043a\u043b\u0430\u0432\u0456\u0448.",
+"Heading 4": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 4",
+"Div": "\u0411\u043b\u043e\u043a",
+"Heading 2": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 2",
+"Paste": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438",
+"Close": "\u0417\u0430\u043a\u0440\u0438\u0442\u0438",
+"Font Family": "\u0428\u0440\u0438\u0444\u0442 \u0437\u043c\u0456\u0441\u0442\u0443",
+"Pre": "\u041f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u0454 \u0444\u043e\u0440\u043c\u0430\u0442\u0443\u0432\u0430\u043d\u043d\u044f",
+"Align right": "\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
+"New document": "\u041d\u043e\u0432\u0438\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442",
+"Blockquote": "\u0426\u0438\u0442\u0430\u0442\u0430",
+"Numbered list": "\u041d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a",
+"Heading 1": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 1",
+"Headings": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
+"Increase indent": "\u0417\u0431\u0456\u043b\u044c\u0448\u0438\u0442\u0438 \u0432\u0456\u0434\u0441\u0442\u0443\u043f",
+"Formats": "\u0424\u043e\u0440\u043c\u0430\u0442\u0438",
+"Headers": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438",
+"Select all": "\u0412\u0438\u0434\u0456\u043b\u0438\u0442\u0438 \u0432\u0441\u0435",
+"Header 3": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 3",
+"Blocks": "\u0411\u043b\u043e\u043a\u0438",
+"Undo": "\u0412\u0456\u0434\u043c\u0456\u043d\u0438\u0442\u0438",
+"Strikethrough": "\u0417\u0430\u043a\u0440\u0435\u0441\u043b\u0435\u043d\u0438\u0439",
+"Bullet list": "\u041d\u0435\u043d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a",
+"Header 1": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 1",
+"Superscript": "\u0412\u0435\u0440\u0445\u043d\u0456\u0439 \u0456\u043d\u0434\u0435\u043a\u0441",
+"Clear formatting": "\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0443\u0432\u0430\u043d\u043d\u044f",
+"Font Sizes": "\u0420\u043e\u0437\u043c\u0456\u0440 \u0448\u0440\u0438\u0444\u0442\u0443",
+"Subscript": "\u041d\u0438\u0436\u043d\u0456\u0439 \u0456\u043d\u0434\u0435\u043a\u0441",
+"Header 6": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 6",
+"Redo": "\u041f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u0438",
+"Paragraph": "\u041f\u0430\u0440\u0430\u0433\u0440\u0430\u0444",
+"Ok": "\u0413\u0430\u0440\u0430\u0437\u0434",
+"Bold": "\u0416\u0438\u0440\u043d\u0438\u0439",
+"Code": "\u041a\u043e\u0434",
+"Italic": "\u041a\u0443\u0440\u0441\u0438\u0432",
+"Align center": "\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443",
+"Header 5": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 5",
+"Heading 6": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 6",
+"Heading 3": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 3",
+"Decrease indent": "\u0417\u043c\u0435\u043d\u0448\u0438\u0442\u0438\u0442\u0438 \u0432\u0456\u0434\u0441\u0442\u0443\u043f",
+"Header 4": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0412\u0441\u0442\u0430\u0432\u043a\u0430 \u0437\u0434\u0456\u0439\u0441\u043d\u044e\u0454\u0442\u044c\u0441\u044f \u0443 \u0432\u0438\u0433\u043b\u044f\u0434\u0456 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0443, \u043f\u043e\u043a\u0438 \u043d\u0435 \u0432\u0456\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0438 \u0434\u0430\u043d\u0443 \u043e\u043f\u0446\u0456\u044e.",
+"Underline": "\u041f\u0456\u0434\u043a\u0440\u0435\u0441\u043b\u0435\u043d\u0438\u0439",
+"Cancel": "\u0412\u0456\u0434\u043c\u0456\u043d\u0438\u0442\u0438",
+"Justify": "\u0412\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f",
+"Inline": "\u0412\u0431\u0443\u0434\u043e\u0432\u0430\u043d\u0456",
+"Copy": "\u041a\u043e\u043f\u0456\u044e\u0432\u0430\u0442\u0438",
+"Align left": "\u041f\u043e \u043b\u0456\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
+"Visual aids": "\u041d\u0430\u043e\u0447\u043d\u0456 \u043f\u0440\u0438\u043b\u0430\u0434\u0434\u044f",
+"Lower Greek": "\u041c\u0430\u043b\u0456 \u0433\u0440\u0435\u0446\u044c\u043a\u0456 \u0431\u0443\u043a\u0432\u0438",
+"Square": "\u041a\u0432\u0430\u0434\u0440\u0430\u0442\u0438",
+"Default": "\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0438\u0439",
+"Lower Alpha": "\u041c\u0430\u043b\u0456 \u043b\u0430\u0442\u0438\u043d\u0441\u044c\u043a\u0456 \u0431\u0443\u043a\u0432\u0438",
+"Circle": "\u041e\u043a\u0440\u0443\u0436\u043d\u043e\u0441\u0442\u0456",
+"Disc": "\u041a\u0440\u0443\u0433\u0438",
+"Upper Alpha": "\u0412\u0435\u043b\u0438\u043a\u0456 \u043b\u0430\u0442\u0438\u043d\u0441\u044c\u043a\u0456 \u0431\u0443\u043a\u0432\u0438",
+"Upper Roman": "\u0420\u0438\u043c\u0441\u044c\u043a\u0456 \u0446\u0438\u0444\u0440\u0438",
+"Lower Roman": "\u041c\u0430\u043b\u0456 \u0440\u0438\u043c\u0441\u044c\u043a\u0456 \u0446\u0438\u0444\u0440\u0438",
+"Name": "\u041d\u0430\u0437\u0432\u0430",
+"Anchor": "\u042f\u043a\u0456\u0440",
+"You have unsaved changes are you sure you want to navigate away?": "\u0423 \u0412\u0430\u0441 \u0454 \u043d\u0435\u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u0456 \u0437\u043c\u0456\u043d\u0438. \u0412\u0438 \u0432\u043f\u0435\u0432\u043d\u0435\u043d\u0456, \u0449\u043e \u0445\u043e\u0447\u0435\u0442\u0435 \u043f\u0456\u0442\u0438?",
+"Restore last draft": "\u0412\u0456\u0434\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f \u043e\u0441\u0442\u0430\u043d\u043d\u044c\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0443",
+"Special character": "\u0421\u043f\u0435\u0446\u0456\u0430\u043b\u044c\u043d\u0456 \u0441\u0438\u043c\u0432\u043e\u043b\u0438",
+"Source code": "\u0412\u0438\u0445\u0456\u0434\u043d\u0438\u0439 \u043a\u043e\u0434",
+"Color": "\u043a\u043e\u043b\u0456\u0440",
+"Right to left": "\u0421\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0456\u0432\u043e",
+"Left to right": "\u0417\u043b\u0456\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e",
+"Emoticons": "\u0415\u043c\u043e\u0446\u0456\u0457",
+"Robots": "\u0420\u043e\u0431\u043e\u0442\u0438",
+"Document properties": "\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430",
+"Title": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
+"Keywords": "\u041a\u043b\u044e\u0447\u043e\u0432\u0456 \u0441\u043b\u043e\u0432\u0430",
+"Encoding": "\u041a\u043e\u0434\u0443\u0432\u0430\u043d\u043d\u044f",
+"Description": "\u041e\u043f\u0438\u0441",
+"Author": "\u0410\u0432\u0442\u043e\u0440",
+"Fullscreen": "\u041f\u043e\u0432\u043d\u043e\u0435\u043a\u0440\u0430\u043d\u043d\u0438\u0439 \u0440\u0435\u0436\u0438\u043c",
+"Horizontal line": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0430 \u043b\u0456\u043d\u0456\u044f",
+"Horizontal space": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0438\u0439 \u0456\u043d\u0442\u0435\u0440\u0432\u0430\u043b",
+"Insert\/edit image": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438\/\u0437\u043c\u0456\u043d\u0438\u0442\u0438 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
+"General": "\u0417\u0430\u0433\u0430\u043b\u044c\u043d\u0456",
+"Advanced": "\u0420\u043e\u0437\u0448\u0438\u0440\u0435\u043d\u0456",
+"Source": "\u0414\u0436\u0435\u0440\u0435\u043b\u043e",
+"Border": "\u041c\u0435\u0436\u0430",
+"Constrain proportions": "\u0417\u0431\u0435\u0440\u0456\u0433\u0430\u0442\u0438 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0456\u0457",
+"Vertical space": "\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0438\u0439 \u0456\u043d\u0442\u0435\u0440\u0432\u0430\u043b",
+"Image description": "\u041e\u043f\u0438\u0441 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
+"Style": "\u0421\u0442\u0438\u043b\u044c",
+"Dimensions": "\u0420\u043e\u0437\u043c\u0456\u0440",
+"Insert image": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
+"Insert date\/time": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0434\u0430\u0442\u0443\/\u0447\u0430\u0441",
+"Remove link": "\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",
+"Url": "\u0410\u0434\u0440\u0435\u0441\u0430 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",
+"Text to display": "\u0422\u0435\u043a\u0441\u0442 \u0434\u043b\u044f \u0432\u0456\u0434\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
+"Anchors": "\u042f\u043a\u043e\u0440\u0456",
+"Insert link": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",
+"New window": "\u0423 \u043d\u043e\u0432\u043e\u043c\u0443 \u0432\u0456\u043a\u043d\u0456",
+"None": "\u041d\u0456",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u0421\u0445\u043e\u0436\u0435, \u0449\u043e \u0432\u0438 \u0432\u0432\u0435\u043b\u0438 \u0437\u043e\u0432\u043d\u0456\u0448\u043d\u0454 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f. \u0412\u0438 \u0431\u0430\u0436\u0430\u0454\u0442\u0435 \u0434\u043e\u0434\u0430\u0442\u0438 http:\/\/ \u043f\u0440\u0435\u0444\u0456\u043a\u0441?",
+"Target": "\u0412\u0456\u0434\u043a\u0440\u0438\u0432\u0430\u0442\u0438 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u0421\u0445\u043e\u0436\u0435, \u0449\u043e \u0432\u0438 \u0432\u0432\u0435\u043b\u0438 \u0430\u0434\u0440\u0435\u0441\u0443 \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0457 \u043f\u043e\u0448\u0442\u0438. \u0412\u0438 \u0431\u0430\u0436\u0430\u0454\u0442\u0435 \u0434\u043e\u0434\u0430\u0442\u0438 mailto: \u043f\u0440\u0435\u0444\u0456\u043a\u0441?",
+"Insert\/edit link": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438\/\u0440\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",
+"Insert\/edit video": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438\/\u0440\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0432\u0456\u0434\u0435\u043e",
+"Poster": "\u0417\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
+"Alternative source": "\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u0435 \u0434\u0436\u0435\u0440\u0435\u043b\u043e",
+"Paste your embed code below:": "\u0412\u0441\u0442\u0430\u0432\u0442\u0435 \u0432\u0430\u0448 \u043a\u043e\u0434 \u043d\u0438\u0436\u0447\u0435:",
+"Insert video": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0432\u0456\u0434\u0435\u043e",
+"Embed": "\u041a\u043e\u0434 \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438",
+"Nonbreaking space": "\u041d\u0435\u0440\u043e\u0437\u0440\u0438\u0432\u043d\u0438\u0439 \u043f\u0440\u043e\u0431\u0456\u043b",
+"Page break": "\u0420\u043e\u0437\u0440\u0438\u0432 \u0441\u0442\u043e\u0440\u0456\u043d\u043a\u0438",
+"Paste as text": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u044f\u043a \u0442\u0435\u043a\u0441\u0442",
+"Preview": "\u041f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u0456\u0439 \u043f\u0435\u0440\u0435\u0433\u043b\u044f\u0434",
+"Print": "\u0414\u0440\u0443\u043a\u0443\u0432\u0430\u0442\u0438",
+"Save": "\u0417\u0431\u0435\u0440\u0435\u0433\u0442\u0438",
+"Could not find the specified string.": "\u0412\u043a\u0430\u0437\u0430\u043d\u0438\u0439 \u0440\u044f\u0434\u043e\u043a \u043d\u0435 \u0437\u043d\u0430\u0439\u0434\u0435\u043d\u043e",
+"Replace": "\u0417\u0430\u043c\u0456\u043d\u0438\u0442\u0438",
+"Next": "\u0412\u043d\u0438\u0437",
+"Whole words": "\u0426\u0456\u043b\u0456 \u0441\u043b\u043e\u0432\u0430",
+"Find and replace": "\u041f\u043e\u0448\u0443\u043a \u0456 \u0437\u0430\u043c\u0456\u043d\u0430",
+"Replace with": "\u0417\u0430\u043c\u0456\u043d\u0438\u0442\u0438 \u043d\u0430",
+"Find": "\u0417\u043d\u0430\u0439\u0442\u0438",
+"Replace all": "\u0417\u0430\u043c\u0456\u043d\u0438\u0442\u0438 \u0432\u0441\u0435",
+"Match case": "\u0412\u0440\u0430\u0445\u043e\u0432\u0443\u0432\u0430\u0442\u0438 \u0440\u0435\u0433\u0456\u0441\u0442\u0440",
+"Prev": "\u0412\u0433\u043e\u0440\u0443",
+"Spellcheck": "\u041f\u0435\u0440\u0435\u0432\u0456\u0440\u043a\u0430 \u043e\u0440\u0444\u043e\u0433\u0440\u0430\u0444\u0456\u0457",
+"Finish": "\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0438",
+"Ignore all": "\u0406\u0433\u043d\u043e\u0440\u0443\u0432\u0430\u0442\u0438 \u0432\u0441\u0435",
+"Ignore": "\u0406\u0433\u043d\u043e\u0440\u0443\u0432\u0430\u0442\u0438",
+"Add to Dictionary": "\u0414\u043e\u0434\u0430\u0442\u0438 \u0434\u043e \u0421\u043b\u043e\u0432\u043d\u0438\u043a\u0430",
+"Insert row before": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u043f\u043e\u0440\u043e\u0436\u043d\u0456\u0439 \u0440\u044f\u0434\u043e\u043a \u0437\u0432\u0435\u0440\u0445\u0443",
+"Rows": "\u0420\u044f\u0434\u043a\u0438",
+"Height": "\u0412\u0438\u0441\u043e\u0442\u0430",
+"Paste row after": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0440\u044f\u0434\u043e\u043a \u0437\u043d\u0438\u0437\u0443",
+"Alignment": "\u0412\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f",
+"Border color": "\u043a\u043e\u043b\u0456\u0440 \u0440\u0430\u043c\u043a\u0438",
+"Column group": "\u0413\u0440\u0443\u043f\u0430 \u0441\u0442\u043e\u0432\u043f\u0446\u0456\u0432",
+"Row": "\u0420\u044f\u0434\u043e\u043a",
+"Insert column before": "\u0414\u043e\u0434\u0430\u0442\u0438 \u0441\u0442\u043e\u0432\u043f\u0435\u0446\u044c \u043b\u0456\u0432\u043e\u0440\u0443\u0447",
+"Split cell": "\u0420\u043e\u0437\u0431\u0438\u0442\u0438 \u043a\u043e\u043c\u0456\u0440\u043a\u0443",
+"Cell padding": "\u041f\u043e\u043b\u044f \u043a\u043e\u043c\u0456\u0440\u043e\u043a",
+"Cell spacing": "\u0412\u0456\u0434\u0441\u0442\u0430\u043d\u044c \u043c\u0456\u0436 \u043a\u043e\u043c\u0456\u0440\u043a\u0430\u043c\u0438",
+"Row type": "\u0422\u0438\u043f \u0440\u044f\u0434\u043a\u0430",
+"Insert table": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044e",
+"Body": "\u0422\u0456\u043b\u043e",
+"Caption": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
+"Footer": "\u041d\u0438\u0436\u043d\u0456\u0439 \u043a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b",
+"Delete row": "\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u0440\u044f\u0434\u043e\u043a",
+"Paste row before": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0440\u044f\u0434\u043e\u043a \u0437\u0432\u0435\u0440\u0445\u0443",
+"Scope": "\u0421\u0444\u0435\u0440\u0430",
+"Delete table": "\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044e",
+"H Align": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0435 \u0432\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f",
+"Top": "\u041f\u043e \u0432\u0435\u0440\u0445\u043d\u044c\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
+"Header cell": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
+"Column": "\u0421\u0442\u043e\u0432\u043f\u0435\u0446\u044c",
+"Row group": "\u0413\u0440\u0443\u043f\u0430 \u0440\u044f\u0434\u043a\u0456\u0432",
+"Cell": "\u041a\u043e\u043c\u0456\u0440\u043a\u0430",
+"Middle": "\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443",
+"Cell type": "\u0422\u0438\u043f \u043a\u043e\u043c\u0456\u0440\u043a\u0438",
+"Copy row": "\u041a\u043e\u043f\u0456\u044e\u0432\u0430\u0442\u0438 \u0440\u044f\u0434\u043e\u043a",
+"Row properties": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438 \u0440\u044f\u0434\u043a\u0430",
+"Table properties": "\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u0442\u0430\u0431\u043b\u0438\u0446\u0456",
+"Bottom": "\u041f\u043e \u043d\u0438\u0436\u043d\u044c\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
+"V Align": "\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0435 \u0432\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f",
+"Header": "\u0412\u0435\u0440\u0445\u043d\u0456\u0439 \u043a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b",
+"Right": "\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
+"Insert column after": "\u0414\u043e\u0434\u0430\u0442\u0438 \u0441\u0442\u043e\u0432\u043f\u0435\u0446\u044c \u043f\u0440\u0430\u0432\u043e\u0440\u0443\u0447",
+"Cols": "\u0421\u0442\u043e\u0432\u043f\u0446\u0456",
+"Insert row after": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u043f\u043e\u0440\u043e\u0436\u043d\u0456\u0439 \u0440\u044f\u0434\u043e\u043a \u0437\u043d\u0438\u0437\u0443",
+"Width": "\u0428\u0438\u0440\u0438\u043d\u0430",
+"Cell properties": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438 \u043a\u043e\u043c\u0456\u0440\u043a\u0438",
+"Left": "\u041f\u043e \u043b\u0456\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
+"Cut row": "\u0412\u0438\u0440\u0456\u0437\u0430\u0442\u0438 \u0440\u044f\u0434\u043e\u043a",
+"Delete column": "\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u0441\u0442\u043e\u0432\u043f\u0435\u0446\u044c",
+"Center": "\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443",
+"Merge cells": "\u041e\u0431'\u0454\u0434\u043d\u0430\u0442\u0438 \u043a\u043e\u043c\u0456\u0440\u043a\u0438",
+"Insert template": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0448\u0430\u0431\u043b\u043e\u043d",
+"Templates": "\u0428\u0430\u0431\u043b\u043e\u043d\u0438",
+"Background color": "\u041a\u043e\u043b\u0456\u0440 \u0444\u043e\u043d\u0443",
+"Custom...": "\u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044c\u043a\u0438\u0439",
+"Custom color": "\u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044c\u043a\u0438\u0439 \u043a\u043e\u043b\u0456\u0440",
+"No color": "\u0431\u0435\u0437 \u043a\u043e\u043b\u044c\u043e\u0440\u0443",
+"Text color": "\u041a\u043e\u043b\u0456\u0440 \u0442\u0435\u043a\u0441\u0442\u0443",
+"Show blocks": "\u041f\u043e\u043a\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u0431\u043b\u043e\u043a\u0438",
+"Show invisible characters": "\u041f\u043e\u043a\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u0456 \u0441\u0438\u043c\u0432\u043e\u043b\u0438",
+"Words: {0}": "\u041a\u0456\u043b\u044c\u043a\u0456\u0441\u0442\u044c \u0441\u043b\u0456\u0432: {0}",
+"Insert": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438",
+"File": "\u0424\u0430\u0439\u043b",
+"Edit": "\u0417\u043c\u0456\u043d\u0438\u0442\u0438",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u0422\u0435\u043a\u0441\u0442\u043e\u0432\u0435 \u043f\u043e\u043b\u0435. \u041d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c ALT-F9 \u0449\u043e\u0431 \u0432\u0438\u043a\u043b\u0438\u043a\u0430\u0442\u0438 \u043c\u0435\u043d\u044e, ALT-F10 \u043f\u0430\u043d\u0435\u043b\u044c \u0456\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0456\u0432, ALT-0 \u0434\u043b\u044f \u0432\u0438\u043a\u043b\u0438\u043a\u0443 \u0434\u043e\u043f\u043e\u043c\u043e\u0433\u0438.",
+"Tools": "\u0406\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0438",
+"View": "\u0412\u0438\u0433\u043b\u044f\u0434",
+"Table": "\u0422\u0430\u0431\u043b\u0438\u0446\u044f",
+"Format": "\u0424\u043e\u0440\u043c\u0430\u0442"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/uk_UA.js b/program/js/tinymce/langs/uk_UA.js
new file mode 100644
index 000000000..95380a6ac
--- /dev/null
+++ b/program/js/tinymce/langs/uk_UA.js
@@ -0,0 +1,191 @@
+tinymce.addI18n('uk_UA',{
+"Cut": "\u0412\u0438\u0440\u0456\u0437\u0430\u0442\u0438",
+"Heading 5": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 5",
+"Header 2": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0412\u0430\u0448 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0435 \u043f\u0456\u0434\u0442\u0440\u0438\u043c\u0443\u0454 \u043f\u0440\u044f\u043c\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0434\u043e \u0431\u0443\u0444\u0435\u0440\u0430 \u043e\u0431\u043c\u0456\u043d\u0443. \u0417\u0430\u043c\u0456\u0441\u0442\u044c \u0446\u044c\u043e\u0433\u043e \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0439\u0442\u0435 \u043f\u043e\u0454\u0434\u043d\u0430\u043d\u043d\u044f \u043a\u043b\u0430\u0432\u0456\u0448 Ctrl + X\/C\/V.",
+"Heading 4": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 4",
+"Div": "Div",
+"Heading 2": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 2",
+"Paste": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438",
+"Close": "\u0417\u0430\u043a\u0440\u0438\u0442\u0438",
+"Font Family": "\u0428\u0440\u0438\u0444\u0442",
+"Pre": "Pre",
+"Align right": "\u041f\u0440\u0430\u0432\u043e\u0440\u0443\u0447",
+"New document": "\u041d\u043e\u0432\u0438\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442",
+"Blockquote": "\u0426\u0438\u0442\u0430\u0442\u0430",
+"Numbered list": "\u041f\u0440\u043e\u043d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a",
+"Heading 1": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 1",
+"Headings": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
+"Increase indent": "\u0417\u0431\u0456\u043b\u044c\u0448\u0438\u0442\u0438 \u0432\u0456\u0434\u0441\u0442\u0443\u043f",
+"Formats": "\u0424\u043e\u0440\u043c\u0430\u0442\u0438",
+"Headers": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438",
+"Select all": "\u0412\u0438\u0431\u0435\u0440\u0456\u0442\u044c \u0443\u0441\u0435",
+"Header 3": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 3",
+"Blocks": "\u0411\u043b\u043e\u043a\u0438",
+"Undo": "\u0412\u0456\u0434\u043c\u0456\u043d\u0438\u0442\u0438",
+"Strikethrough": "\u041f\u0435\u0440\u0435\u043a\u0440\u0435\u0441\u043b\u0435\u043d\u0438\u0439",
+"Bullet list": "\u041c\u0430\u0440\u043a\u0456\u0440\u043e\u0432\u0430\u043d\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a",
+"Header 1": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 1",
+"Superscript": "\u0412\u0435\u0440\u0445\u043d\u0456\u0439 \u0456\u043d\u0434\u0435\u043a\u0441",
+"Clear formatting": "\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0443\u0432\u0430\u043d\u043d\u044f",
+"Font Sizes": "\u0420\u043e\u0437\u043c\u0456\u0440 \u0448\u0440\u0438\u0444\u0442\u0430",
+"Subscript": "\u0406\u043d\u0434\u0435\u043a\u0441",
+"Header 6": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 6",
+"Redo": "\u0412\u0456\u0434\u043d\u043e\u0432\u0438\u0442\u0438",
+"Paragraph": "\u0410\u0431\u0437\u0430\u0446",
+"Ok": "Ok",
+"Bold": "\u0416\u0438\u0440\u043d\u0438\u0439",
+"Code": "\u041a\u043e\u0434",
+"Italic": "\u041a\u0443\u0440\u0441\u0438\u0432",
+"Align center": "\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443",
+"Header 5": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 5",
+"Heading 6": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 6",
+"Heading 3": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 3",
+"Decrease indent": "\u0417\u043c\u0435\u043d\u0448\u0438\u0442\u0438 \u0432\u0456\u0434\u0441\u0442\u0443\u043f",
+"Header 4": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0412\u0441\u0442\u0430\u0432\u043a\u0430 \u0437\u0430\u0440\u0430\u0437 \u0432 \u0440\u0435\u0436\u0438\u043c\u0456 \u0437\u0432\u0438\u0447\u0430\u0439\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0443. \u0417\u043c\u0456\u0441\u0442 \u0431\u0443\u0434\u0435 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u044f\u043a \u043f\u0440\u043e\u0441\u0442\u0438\u0439 \u0442\u0435\u043a\u0441\u0442, \u043f\u043e\u043a\u0438 \u0412\u0438 \u043d\u0435 \u0432\u0438\u043c\u043a\u043d\u0435\u0442\u0435 \u0446\u044e \u043e\u043f\u0446\u0456\u044e.",
+"Underline": "\u041f\u0456\u0434\u043a\u0440\u0435\u0441\u043b\u0435\u043d\u0438\u0439",
+"Cancel": "\u0412\u0456\u0434\u043c\u0456\u043d\u0438\u0442\u0438",
+"Justify": "\u0412\u0438\u0440\u0456\u0432\u043d\u044f\u0442\u0438",
+"Inline": "\u0412\u0431\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0439",
+"Copy": "\u041a\u043e\u043f\u0456\u044e\u0432\u0430\u0442\u0438",
+"Align left": "\u041b\u0456\u0432\u043e\u0440\u0443\u0447",
+"Visual aids": "\u0412\u0456\u0437\u0443\u0430\u043b\u044c\u043d\u0456 \u0437\u0430\u0441\u043e\u0431\u0438",
+"Lower Greek": "\u041c\u0430\u043b\u0456 \u0433\u0440\u0435\u0446\u044c\u043a\u0456 \u043b\u0456\u0442\u0435\u0440\u0438",
+"Square": "\u041a\u0432\u0430\u0434\u0440\u0430\u0442",
+"Default": "\u0423\u043c\u043e\u0432\u0447\u0430\u043d\u043d\u044f",
+"Lower Alpha": "\u041d\u0438\u0436\u043d\u0456\u0439 \u0440\u0435\u0433\u0456\u0441\u0442\u0440",
+"Circle": "\u041a\u043e\u043b\u043e",
+"Disc": "\u0414\u0438\u0441\u043a",
+"Upper Alpha": "\u0412\u0435\u0440\u0445\u043d\u0456\u0439 \u0440\u0435\u0433\u0456\u0441\u0442\u0440",
+"Upper Roman": "\u0420\u0438\u043c\u0441\u044c\u043a\u0456 \u0446\u0438\u0444\u0440\u0438 \u0443 \u0432\u0435\u0440\u0445\u043d\u044c\u043e\u043c\u0443 \u0440\u0435\u0433\u0456\u0441\u0442\u0440\u0456",
+"Lower Roman": "\u0420\u0438\u043c\u0441\u044c\u043a\u0456 \u0446\u0438\u0444\u0440\u0438 \u0443 \u043d\u0438\u0436\u043d\u044c\u043e\u043c\u0443 \u0440\u0435\u0433\u0456\u0441\u0442\u0440\u0456",
+"Name": "\u0406\u043c'\u044f",
+"Anchor": "\u041f\u0440\u0438\u0432'\u044f\u0437\u043a\u0430",
+"You have unsaved changes are you sure you want to navigate away?": "\u0423 \u0432\u0430\u0441 \u0454 \u043d\u0435\u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u0456 \u0437\u043c\u0456\u043d\u0438. \u0412\u0438 \u0432\u043f\u0435\u0432\u043d\u0435\u043d\u0456, \u0449\u043e \u0445\u043e\u0447\u0435\u0442\u0435 \u043f\u0456\u0442\u0438 ?",
+"Restore last draft": "\u0412\u0456\u0434\u043d\u043e\u0432\u0438\u0442\u0438 \u043e\u0441\u0442\u0430\u043d\u043d\u0456\u0439 \u043f\u0440\u043e\u0435\u043a\u0442",
+"Special character": "\u0421\u043f\u0435\u0446\u0456\u0430\u043b\u044c\u043d\u0438\u0439 \u0441\u0438\u043c\u0432\u043e\u043b",
+"Source code": "\u0414\u0436\u0435\u0440\u0435\u043b\u043e",
+"Right to left": "\u0421\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0456\u0432\u043e",
+"Left to right": "\u0417\u043b\u0456\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e",
+"Emoticons": "\u0421\u043c\u0430\u0439\u043b\u0438",
+"Robots": "\u0420\u043e\u0431\u043e\u0442\u0438",
+"Document properties": "\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0443",
+"Title": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
+"Keywords": "\u041a\u043b\u044e\u0447\u043e\u0432\u0456 \u0441\u043b\u043e\u0432\u0430",
+"Encoding": "\u041a\u043e\u0434\u0443\u0432\u0430\u043d\u043d\u044f",
+"Description": "\u041e\u043f\u0438\u0441",
+"Author": "\u0410\u0432\u0442\u043e\u0440",
+"Fullscreen": "\u041d\u0430 \u0432\u0435\u0441\u044c \u0435\u043a\u0440\u0430\u043d",
+"Horizontal line": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0430 \u043b\u0456\u043d\u0456\u044f",
+"Horizontal space": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0438\u0439 \u043f\u0440\u043e\u043f\u0443\u0441\u043a",
+"Insert\/edit image": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438\/\u0440\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
+"General": "\u0417\u0430\u0433\u0430\u043b\u044c\u043d\u0435",
+"Advanced": "\u0414\u043e\u0434\u0430\u0442\u043a\u043e\u0432\u043e",
+"Source": "\u0414\u0436\u0435\u0440\u0435\u043b\u043e",
+"Border": "\u041c\u0435\u0436\u0430",
+"Constrain proportions": "\u0417\u0431\u0435\u0440\u0456\u0433\u0430\u0442\u0438 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0456\u0457",
+"Vertical space": "\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0438\u0439 \u043f\u0440\u043e\u043f\u0443\u0441\u043a",
+"Image description": "\u041e\u043f\u0438\u0441 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
+"Style": "\u0421\u0442\u0438\u043b\u044c",
+"Dimensions": "\u0420\u043e\u0437\u043c\u0456\u0440",
+"Insert image": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
+"Insert date\/time": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0434\u0430\u0442\u0443\/\u0447\u0430\u0441",
+"Remove link": "\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",
+"Url": "URL",
+"Text to display": "\u0422\u0435\u043a\u0441\u0442 \u0434\u043b\u044f \u0432\u0456\u0434\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f",
+"Anchors": "\u042f\u043a\u043e\u0440\u044f",
+"Insert link": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",
+"New window": "\u041d\u043e\u0432\u0435 \u0432\u0456\u043a\u043d\u043e",
+"None": "\u041d\u0456",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u0421\u0445\u043e\u0436\u0435, \u0449\u043e \u0432\u0438 \u0432\u0432\u0435\u043b\u0438 \u0437\u043e\u0432\u043d\u0456\u0448\u043d\u0454 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f. \u0412\u0438 \u0431\u0430\u0436\u0430\u0454\u0442\u0435 \u0434\u043e\u0434\u0430\u0442\u0438 http:\/\/ \u043f\u0440\u0435\u0444\u0456\u043a\u0441?",
+"Target": "\u041c\u0435\u0442\u0430",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u0421\u0445\u043e\u0436\u0435, \u0449\u043e \u0432\u0438 \u0432\u0432\u0435\u043b\u0438 \u0430\u0434\u0440\u0435\u0441\u0443 \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0457 \u043f\u043e\u0448\u0442\u0438. \u0412\u0438 \u0431\u0430\u0436\u0430\u0454\u0442\u0435 \u0434\u043e\u0434\u0430\u0442\u0438 mailto: \u043f\u0440\u0435\u0444\u0456\u043a\u0441?",
+"Insert\/edit link": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438\/\u0440\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f",
+"Insert\/edit video": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438\/\u0440\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0432\u0456\u0434\u0435\u043e",
+"Poster": "\u041f\u043b\u0430\u043a\u0430\u0442",
+"Alternative source": "\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u0435 \u0434\u0436\u0435\u0440\u0435\u043b\u043e",
+"Paste your embed code below:": "\u0412\u0441\u0442\u0430\u0432\u0442\u0435 \u0432\u0430\u0448 \u043a\u043e\u0434 \u043d\u0438\u0436\u0447\u0435:",
+"Insert video": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0432\u0456\u0434\u0435\u043e",
+"Embed": "\u0412\u043f\u0440\u043e\u0432\u0430\u0434\u0438\u0442\u0438",
+"Nonbreaking space": "\u041d\u0435\u0440\u043e\u0437\u0440\u0438\u0432\u043d\u0438\u0439 \u043f\u0440\u043e\u043f\u0443\u0441\u043a",
+"Page break": "\u0420\u043e\u0437\u0440\u0438\u0432 \u0441\u0442\u043e\u0440\u0456\u043d\u043a\u0438",
+"Paste as text": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u044f\u043a \u0442\u0435\u043a\u0441\u0442",
+"Preview": "\u041f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u0456\u0439 \u043f\u0435\u0440\u0435\u0433\u043b\u044f\u0434",
+"Print": "\u0414\u0440\u0443\u043a",
+"Save": "\u0417\u0431\u0435\u0440\u0435\u0433\u0442\u0438",
+"Could not find the specified string.": "\u041d\u0435 \u0432\u0434\u0430\u043b\u043e\u0441\u044f \u0437\u043d\u0430\u0439\u0442\u0438 \u0437\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0440\u044f\u0434\u043e\u043a.",
+"Replace": "\u0417\u0430\u043c\u0456\u043d\u0438\u0442\u0438",
+"Next": "\u041d\u0430\u0441\u0442\u0443\u043f\u043d\u0438\u0439",
+"Whole words": "\u0426\u0456\u043b\u0456 \u0441\u043b\u043e\u0432\u0430",
+"Find and replace": "\u0417\u043d\u0430\u0439\u0442\u0438 \u0456 \u0437\u0430\u043c\u0456\u043d\u0438\u0442\u0438",
+"Replace with": "\u0417\u0430\u043c\u0456\u043d\u0438\u0442\u0438 \u043d\u0430",
+"Find": "\u0417\u043d\u0430\u0439\u0442\u0438",
+"Replace all": "\u0417\u0430\u043c\u0456\u043d\u0438\u0442\u0438 \u0432\u0441\u0435",
+"Match case": "\u0417 \u0443\u0440\u0430\u0445\u0443\u0432\u0430\u043d\u043d\u044f\u043c \u0440\u0435\u0433\u0456\u0441\u0442\u0440\u0443",
+"Prev": "\u041f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u0456\u0439",
+"Spellcheck": "\u041f\u0435\u0440\u0435\u0432\u0456\u0440\u043a\u0430 \u043e\u0440\u0444\u043e\u0433\u0440\u0430\u0444\u0456\u0457",
+"Finish": "\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0438",
+"Ignore all": "\u0406\u0433\u043d\u043e\u0440\u0443\u0432\u0430\u0442\u0438 \u0443\u0441\u0435",
+"Ignore": "\u0406\u0433\u043d\u043e\u0440\u0443\u0432\u0430\u0442\u0438",
+"Insert row before": "\u0412\u0441\u0442\u0430\u0432\u0442\u0435 \u0440\u044f\u0434\u043e\u043a \u043f\u0435\u0440\u0435\u0434",
+"Rows": "\u0420\u044f\u0434\u043a\u0438",
+"Height": "\u0412\u0438\u0441\u043e\u0442\u0430",
+"Paste row after": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0440\u044f\u0434\u043e\u043a \u043f\u0456\u0441\u043b\u044f",
+"Alignment": "\u0412\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f",
+"Column group": "\u0413\u0440\u0443\u043f\u0430 \u0441\u0442\u043e\u0432\u043f\u0446\u0456\u0432",
+"Row": "\u0420\u044f\u0434\u043e\u043a",
+"Insert column before": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0441\u0442\u043e\u0432\u043f\u0435\u0446\u044c \u043f\u0435\u0440\u0435\u0434",
+"Split cell": "\u0420\u043e\u0437\u0431\u0438\u0442\u0438 \u043a\u043e\u043c\u0456\u0440\u043a\u0443",
+"Cell padding": "\u0417\u0430\u043f\u043e\u0432\u043d\u0435\u043d\u043d\u044f \u043a\u043e\u043c\u0456\u0440\u043e\u043a",
+"Cell spacing": "\u0406\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043c\u0456\u0436 \u043a\u043e\u043c\u0456\u0440\u043a\u0430\u043c\u0438",
+"Row type": "\u0422\u0438\u043f \u0440\u044f\u0434\u043a\u0430",
+"Insert table": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044e",
+"Body": "\u0422\u0456\u043b\u043e",
+"Caption": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",
+"Footer": "\u041d\u0438\u0436\u043d\u0456\u0439 \u043a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b",
+"Delete row": "\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u0440\u044f\u0434\u043e\u043a",
+"Paste row before": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0440\u044f\u0434\u043e\u043a \u043f\u0435\u0440\u0435\u0434",
+"Scope": "\u0423 \u043c\u0435\u0436\u0430\u0445",
+"Delete table": "\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044e",
+"H Align": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0435 \u0432\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f",
+"Top": "\u041f\u043e \u0432\u0435\u0440\u0445\u043d\u044c\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
+"Header cell": "\u041a\u043e\u043c\u0456\u0440\u043a\u0430 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0443",
+"Column": "\u0421\u0442\u043e\u0432\u043f\u0435\u0446\u044c",
+"Row group": "\u0413\u0440\u0443\u043f\u0430 \u0440\u044f\u0434\u043a\u0456\u0432",
+"Cell": "\u041a\u043e\u043c\u0456\u0440\u043a\u0430",
+"Middle": "\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443",
+"Cell type": "\u0422\u0438\u043f \u043a\u043e\u043c\u0456\u0440\u043a\u0438",
+"Copy row": "\u041a\u043e\u043f\u0456\u044e\u0432\u0430\u0442\u0438 \u0440\u044f\u0434\u043e\u043a",
+"Row properties": "\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u0440\u044f\u0434\u043a\u0430",
+"Table properties": "\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u0442\u0430\u0431\u043b\u0438\u0446\u0456",
+"Bottom": "\u041f\u043e \u043d\u0438\u0436\u043d\u044c\u043e\u043c\u0443 \u043a\u0440\u0430\u044e",
+"V Align": "\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0435 \u0432\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f",
+"Header": "\u0412\u0435\u0440\u0445\u043d\u0456\u0439 \u043a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b",
+"Right": "\u041f\u0440\u0430\u0432\u043e\u0440\u0443\u0447",
+"Insert column after": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0441\u0442\u043e\u0432\u043f\u0435\u0446\u044c \u043f\u0456\u0441\u043b\u044f",
+"Cols": "\u0421\u0442\u043e\u0432\u043f\u0446\u0456",
+"Insert row after": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0440\u044f\u0434\u043e\u043a \u043f\u0456\u0441\u043b\u044f",
+"Width": "\u0428\u0438\u0440\u0438\u043d\u0430",
+"Cell properties": "\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u043a\u043e\u043c\u0456\u0440\u043a\u0438",
+"Left": "\u041b\u0456\u0432\u043e\u0440\u0443\u0447",
+"Cut row": "\u0412\u0438\u0440\u0456\u0437\u0430\u0442\u0438 \u0440\u044f\u0434\u043e\u043a",
+"Delete column": "\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u0441\u0442\u043e\u0432\u043f\u0435\u0446\u044c",
+"Center": "\u0426\u0435\u043d\u0442\u0440",
+"Merge cells": "\u041e\u0431'\u0454\u0434\u043d\u0430\u0442\u0438 \u043a\u043e\u043c\u0456\u0440\u043a\u0438",
+"Insert template": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0448\u0430\u0431\u043b\u043e\u043d",
+"Templates": "\u0428\u0430\u0431\u043b\u043e\u043d\u0438",
+"Background color": "\u041a\u043e\u043b\u0456\u0440 \u0444\u043e\u043d\u0443",
+"Text color": "\u041a\u043e\u043b\u0456\u0440 \u0442\u0435\u043a\u0441\u0442\u0443",
+"Show blocks": "\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u0438 \u0431\u043b\u043e\u043a\u0438",
+"Show invisible characters": "\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u0438 \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u0456 \u0441\u0438\u043c\u0432\u043e\u043b\u0438",
+"Words: {0}": "\u0421\u043b\u043e\u0432\u0430: {0}",
+"Insert": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438",
+"File": "\u0424\u0430\u0439\u043b",
+"Edit": "\u041f\u0440\u0430\u0432\u043a\u0430",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u041e\u0431\u043b\u0430\u0441\u0442\u044c Rich \u0442\u0435\u043a\u0441\u0442\u0443. \u041d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c ALT-F9 - \u043c\u0435\u043d\u044e. \u041d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c ALT-F10 - \u043f\u0430\u043d\u0435\u043b\u044c \u0456\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0456\u0432. \u041d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c ALT-0 - \u0434\u043e\u0432\u0456\u0434\u043a\u0430",
+"Tools": "\u0406\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0438",
+"View": "\u0412\u0438\u0434",
+"Table": "\u0422\u0430\u0431\u043b\u0438\u0446\u044f",
+"Format": "\u0424\u043e\u0440\u043c\u0430\u0442"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/vi.js b/program/js/tinymce/langs/vi.js
new file mode 100644
index 000000000..3b41ea76c
--- /dev/null
+++ b/program/js/tinymce/langs/vi.js
@@ -0,0 +1,179 @@
+tinymce.addI18n('vi',{
+"Cut": "C\u1eaft",
+"Header 2": "Ti\u00eau \u0111\u1ec1 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Tr\u00ecnh duy\u1ec7t c\u1ee7a b\u1ea1n kh\u00f4ng h\u1ed7 tr\u1ee3 truy c\u1eadp truy c\u1eadp b\u1ed9 nh\u1edb \u1ea3o, vui l\u00f2ng s\u1eed d\u1ee5ng c\u00e1c t\u1ed5 h\u1ee3p ph\u00edm Ctrl + X, C, V.",
+"Div": "Khung",
+"Paste": "D\u00e1n",
+"Close": "\u0110\u00f3ng L\u1ea1i",
+"Font Family": "Font Family",
+"Pre": "\u0110\u1ecbnh d\u1ea1ng",
+"Align right": "Canh ph\u1ea3i",
+"New document": "T\u1ea1o t\u00e0i li\u1ec7u m\u1edbi",
+"Blockquote": "\u0110o\u1ea1n Tr\u00edch D\u1eabn",
+"Numbered list": "Danh s\u00e1ch d\u1ea1ng s\u1ed1",
+"Increase indent": "T\u0103ng kho\u1ea3ng c\u00e1ch d\u00f2ng",
+"Formats": "\u0110\u1ecbnh d\u1ea1ng",
+"Headers": "\u0110\u1ea7u trang",
+"Select all": "Ch\u1ecdn t\u1ea5t c\u1ea3",
+"Header 3": "Ti\u00eau \u0111\u1ec1 3",
+"Blocks": "Bao",
+"Undo": "H\u1ee7y thao t\u00e1c",
+"Strikethrough": "G\u1ea1ch ngang",
+"Bullet list": "Danh s\u00e1ch d\u1ea1ng bi\u1ec3u t\u01b0\u1ee3ng",
+"Header 1": "Ti\u00eau \u0111\u1ec1 1",
+"Superscript": "K\u00fd t\u1ef1 m\u0169",
+"Clear formatting": "L\u01b0\u1ee3c b\u1ecf ph\u1ea7n hi\u1ec7u \u1ee9ng",
+"Font Sizes": "Font Sizes",
+"Subscript": "K\u00fd t\u1ef1 th\u1ea5p",
+"Header 6": "Ti\u00eau \u0111\u1ec1 6",
+"Redo": "L\u00e0m l\u1ea1i",
+"Paragraph": "\u0110o\u1ea1n v\u0103n",
+"Ok": "\u0110\u1ed3ng \u00dd",
+"Bold": "In \u0111\u1eadm",
+"Code": "M\u00e3",
+"Italic": "In nghi\u00eang",
+"Align center": "Canh gi\u1eefa",
+"Header 5": "Ti\u00eau \u0111\u1ec1 5",
+"Decrease indent": "Th\u1ee5t l\u00f9i d\u00f2ng",
+"Header 4": "Ti\u00eau \u0111\u1ec1 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Ch\u1ee9c n\u0103ng D\u00e1n \u0111ang trong tr\u1ea1ng th\u00e1i v\u0103n b\u1ea3n \u0111\u01a1n gi\u1ea3n. N\u1ed9i dung s\u1ebd \u0111\u01b0\u1ee3c d\u00e1n d\u01b0\u1edbi d\u1ea1ng v\u0103n b\u1ea3n thu\u1ea7n, kh\u00f4ng c\u00f3 \u0111\u1ecbnh d\u1ea1ng.",
+"Underline": "G\u1ea1ch d\u01b0\u1edbi",
+"Cancel": "Hu\u1ef7 B\u1ecf",
+"Justify": "Canh \u0111\u1ec1u hai b\u00ean",
+"Inline": "C\u00f9ng d\u00f2ng",
+"Copy": "Sao ch\u00e9p",
+"Align left": "Canh tr\u00e1i",
+"Visual aids": "M\u1edf khung so\u1ea1n th\u1ea3o",
+"Lower Greek": "S\u1ed1 hy l\u1ea1p th\u01b0\u1eddng",
+"Square": "\u00d4 vu\u00f4ng",
+"Default": "M\u1eb7c \u0111\u1ecbnh",
+"Lower Alpha": "K\u00fd t\u1ef1 th\u01b0\u1eddng",
+"Circle": "H\u00ecnh tr\u00f2n",
+"Disc": "H\u00ecnh tr\u00f2n d\u1ea1ng m\u1ecfng",
+"Upper Alpha": "K\u00fd t\u1ef1 hoa",
+"Upper Roman": "S\u1ed1 la m\u00e3 hoa",
+"Lower Roman": "S\u1ed1 la m\u00e3 th\u01b0\u1eddng",
+"Name": "T\u00ean",
+"Anchor": "Neo",
+"You have unsaved changes are you sure you want to navigate away?": "B\u1ea1n ch\u01b0a l\u01b0u thay \u0111\u1ed5i b\u1ea1n c\u00f3 ch\u1eafc b\u1ea1n mu\u1ed1n di chuy\u1ec3n \u0111i?",
+"Restore last draft": "Kh\u00f4i ph\u1ee5c b\u1ea3n g\u1ea7n nh\u1ea5t",
+"Special character": "K\u00fd t\u1ef1 \u0111\u1eb7c bi\u1ec7t",
+"Source code": "M\u00e3 ngu\u1ed3n",
+"Right to left": "Ph\u1ea3i sang tr\u00e1i",
+"Left to right": "Tr\u00e1i sang ph\u1ea3i",
+"Emoticons": "Bi\u1ec3u t\u01b0\u1ee3ng c\u1ea3m x\u00fac",
+"Robots": "Robots",
+"Document properties": "Thu\u1ed9c t\u00ednh t\u00e0i li\u1ec7u",
+"Title": "Ti\u00eau \u0111\u1ec1",
+"Keywords": "T\u1eeb kh\u00f3a",
+"Encoding": "M\u00e3 h\u00f3a",
+"Description": "Description",
+"Author": "T\u00e1c gi\u1ea3",
+"Fullscreen": "To\u00e0n m\u00e0n h\u00ecnh",
+"Horizontal line": "K\u1ebb ngang",
+"Horizontal space": "N\u1eb1m ngang",
+"Insert\/edit image": "Ch\u00e8n\/s\u1eeda \u1ea3nh",
+"General": "Chung",
+"Advanced": "N\u00e2ng cao",
+"Source": "Ngu\u1ed3n",
+"Border": "\u0110\u01b0\u1eddng vi\u1ec1n",
+"Constrain proportions": "T\u1ef7 l\u1ec7 h\u1ea1n ch\u1ebf",
+"Vertical space": "N\u1eb1m d\u1ecdc",
+"Image description": "M\u00f4 t\u1ea3 \u1ea3nh",
+"Style": "Ki\u1ec3u",
+"Dimensions": "K\u00edch th\u01b0\u1edbc",
+"Insert image": "Ch\u00e8n \u1ea3nh",
+"Insert date\/time": "Ch\u00e8n ng\u00e0y\/th\u00e1ng",
+"Remove link": "B\u1ecf li\u00ean k\u1ebft",
+"Url": "Url",
+"Text to display": "N\u1ed9i dung hi\u1ec3n th\u1ecb",
+"Anchors": "Anchors",
+"Insert link": "Ch\u00e8n li\u00ean k\u1ebft",
+"New window": "C\u1eeda s\u1ed5 m\u1edbi",
+"None": "Kh\u00f4ng",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?",
+"Target": "\u0110\u00edch",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",
+"Insert\/edit link": "Ch\u00e8n\/s\u1eeda li\u00ean k\u1ebft",
+"Insert\/edit video": "Ch\u00e8n\/s\u1eeda video",
+"Poster": "Ng\u01b0\u1eddi g\u1eedi",
+"Alternative source": "Ngu\u1ed3n thay th\u1ebf",
+"Paste your embed code below:": "D\u00e1n m\u00e3 nh\u00fang c\u1ee7a b\u1ea1n d\u01b0\u1edbi \u0111\u00e2y:",
+"Insert video": "Ch\u00e8n video",
+"Embed": "Nh\u00fang",
+"Nonbreaking space": "Nonbreaking space",
+"Page break": "Ng\u1eaft trang",
+"Paste as text": "D\u00e1n \u0111o\u1ea1n v\u0103n b\u1ea3n",
+"Preview": "Xem th\u1eed",
+"Print": "In",
+"Save": "L\u01b0u",
+"Could not find the specified string.": "Could not find the specified string.",
+"Replace": "Replace",
+"Next": "Next",
+"Whole words": "To\u00e0n b\u1ed9 t\u1eeb",
+"Find and replace": "Find and replace",
+"Replace with": "Replace with",
+"Find": "Find",
+"Replace all": "Thay t\u1ea5t c\u1ea3",
+"Match case": "Match case",
+"Prev": "Tr\u01b0\u1edbc",
+"Spellcheck": "Ki\u1ec3m tra ch\u00ednh t\u1ea3",
+"Finish": "Ho\u00e0n t\u1ea5t",
+"Ignore all": "B\u1ecf qua t\u1ea5t",
+"Ignore": "B\u1ecf qua",
+"Insert row before": "Th\u00eam d\u00f2ng ph\u00eda tr\u00ean",
+"Rows": "D\u00f2ng",
+"Height": "\u0110\u1ed9 Cao",
+"Paste row after": "D\u00e1n v\u00e0o ph\u00eda sau, d\u01b0\u1edbi",
+"Alignment": "Canh ch\u1ec9nh",
+"Column group": "Gom nh\u00f3m c\u1ed9t",
+"Row": "D\u00f2ng",
+"Insert column before": "Th\u00eam c\u1ed9t b\u00ean tr\u00e1i",
+"Split cell": "Chia c\u1eaft \u00f4",
+"Cell padding": "Kho\u1ea3ng c\u00e1ch trong \u00f4",
+"Cell spacing": "Kho\u1ea3ng c\u00e1ch \u00f4",
+"Row type": "Th\u1ec3 lo\u1ea1i d\u00f2ng",
+"Insert table": "Th\u00eam b\u1ea3ng",
+"Body": "N\u1ed9i dung",
+"Caption": "Ti\u00eau \u0111\u1ec1",
+"Footer": "Ch\u00e2n",
+"Delete row": "Xo\u00e1 d\u00f2ng",
+"Paste row before": "D\u00e1n v\u00e0o ph\u00eda tr\u01b0\u1edbc, tr\u00ean",
+"Scope": "Quy\u1ec1n",
+"Delete table": "Xo\u00e1 b\u1ea3ng",
+"Header cell": "Ti\u00eau \u0111\u1ec1 \u00f4",
+"Column": "C\u1ed9t",
+"Cell": "\u00d4",
+"Header": "Ti\u00eau \u0111\u1ec1",
+"Cell type": "Lo\u1ea1i \u00f4",
+"Copy row": "Sao ch\u00e9p d\u00f2ng",
+"Row properties": "Thu\u1ed9c t\u00ednh d\u00f2ng",
+"Table properties": "Thu\u1ed9c t\u00ednh b\u1ea3ng",
+"Row group": "Gom nh\u00f3m d\u00f2ng",
+"Right": "Ph\u1ea3i",
+"Insert column after": "Th\u00eam c\u1ed9t b\u00ean ph\u1ea3i",
+"Cols": "C\u1ed9t",
+"Insert row after": "Th\u00eam d\u00f2ng ph\u00eda d\u01b0\u1edbi",
+"Width": "\u0110\u1ed9 R\u1ed9ng",
+"Cell properties": "Thu\u1ed9c t\u00ednh \u00f4",
+"Left": "Tr\u00e1i",
+"Cut row": "C\u1eaft d\u00f2ng",
+"Delete column": "Xo\u00e1 c\u1ed9t",
+"Center": "Gi\u1eefa",
+"Merge cells": "Tr\u1ed9n \u00f4",
+"Insert template": "Insert template",
+"Templates": "Templates",
+"Background color": "M\u00e0u n\u1ec1n",
+"Text color": "M\u00e0u v\u0103n b\u1ea3n",
+"Show blocks": "Show blocks",
+"Show invisible characters": "Hi\u1ec3n th\u1ecb k\u00fd t\u1ef1 \u1ea9n",
+"Words: {0}": "Words: {0}",
+"Insert": "Insert",
+"File": "File",
+"Edit": "Edit",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help",
+"Tools": "Tools",
+"View": "View",
+"Table": "Table",
+"Format": "Format"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/vi_VN.js b/program/js/tinymce/langs/vi_VN.js
new file mode 100644
index 000000000..2357ac585
--- /dev/null
+++ b/program/js/tinymce/langs/vi_VN.js
@@ -0,0 +1,197 @@
+tinymce.addI18n('vi_VN',{
+"Cut": "C\u1eaft",
+"Heading 5": "Ti\u00eau \u0111\u1ec1 5",
+"Header 2": "Ti\u00eau \u0111\u1ec1 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Tr\u00ecnh duy\u1ec7t c\u1ee7a b\u1ea1n kh\u00f4ng h\u1ed7 tr\u1ee3 truy c\u1eadp clipboard, vui l\u00f2ng s\u1eed d\u1ee5ng c\u00e1c t\u1ed5 h\u1ee3p Ctrl + X, C, V.",
+"Heading 4": "Ti\u00eau \u0111\u1ec1 4",
+"Div": "Khung",
+"Heading 2": "Ti\u00eau \u0111\u1ec1 2",
+"Paste": "D\u00e1n",
+"Close": "\u0110\u00f3ng",
+"Font Family": "Ph\u00f4ng",
+"Pre": "\u0110\u1ecbnh d\u1ea1ng",
+"Align right": "Canh ph\u1ea3i",
+"New document": "T\u1ea1o t\u00e0i li\u1ec7u m\u1edbi",
+"Blockquote": "Tr\u00edch",
+"Numbered list": "Danh s\u00e1ch s\u1ed1",
+"Heading 1": "Ti\u00eau \u0111\u1ec1 1",
+"Headings": "Ti\u00eau \u0111\u1ec1",
+"Increase indent": "L\u00f9i v\u00e0o",
+"Formats": "\u0110\u1ecbnh d\u1ea1ng",
+"Headers": "\u0110\u1ea7u trang",
+"Select all": "Ch\u1ecdn t\u1ea5t c\u1ea3",
+"Header 3": "Ti\u00eau \u0111\u1ec1 3",
+"Blocks": "Bao",
+"Undo": "Hu\u1ef7 thao t\u00e1c",
+"Strikethrough": "G\u1ea1ch ngang",
+"Bullet list": "D\u1ea5u \u0111\u1ea7u d\u00f2ng",
+"Header 1": "Ti\u00eau \u0111\u1ec1 1",
+"Superscript": "Tr\u00ean d\u00f2ng",
+"Clear formatting": "Xo\u00e1 \u0111\u1ecbnh d\u1ea1ng",
+"Font Sizes": "K\u00edch th\u01b0\u1edbc ph\u00f4ng",
+"Subscript": "D\u01b0\u1edbi d\u00f2ng",
+"Header 6": "Ti\u00eau \u0111\u1ec1 6",
+"Redo": "Ho\u00e0n t\u00e1t",
+"Paragraph": "\u0110o\u1ea1n v\u0103n",
+"Ok": "OK",
+"Bold": "T\u00f4 \u0111\u1eadm",
+"Code": "M\u00e3",
+"Italic": "In nghi\u00eang",
+"Align center": "Canh gi\u1eefa",
+"Header 5": "Ti\u00eau \u0111\u1ec1 5",
+"Heading 6": "Ti\u00eau \u0111\u1ec1 6",
+"Heading 3": "Ti\u00eau \u0111\u1ec1 3",
+"Decrease indent": "L\u00f9i ra",
+"Header 4": "Ti\u00eau \u0111\u1ec1 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "D\u00e1n b\u00e2y gi\u1edd l\u00e0 \u1edf ch\u1ebf \u0111\u1ed9 v\u0103n b\u1ea3n \u0111\u01a1n gi\u1ea3n. N\u1ed9i dung s\u1ebd \u0111\u01b0\u1ee3c d\u00e1n nh\u01b0 \u0111\u1ed3ng b\u1eb1ng v\u0103n b\u1ea3n cho \u0111\u1ebfn khi b\u1ea1n chuy\u1ec3n \u0111\u1ed5i t\u00f9y ch\u1ecdn n\u00e0y.",
+"Underline": "G\u1ea1ch d\u01b0\u1edbi",
+"Cancel": "Hu\u1ef7",
+"Justify": "Canh \u0111\u1ec1u hai b\u00ean",
+"Inline": "C\u00f9ng d\u00f2ng",
+"Copy": "Ch\u00e9p",
+"Align left": "Canh tr\u00e1i",
+"Visual aids": "Hi\u1ec7n khung so\u1ea1n th\u1ea3o",
+"Lower Greek": "S\u1ed1 hy l\u1ea1p th\u01b0\u1eddng",
+"Square": "\u00d4 vu\u00f4ng",
+"Default": "Ng\u1ea7m \u0111\u1ecbnh",
+"Lower Alpha": "K\u00fd t\u1ef1 th\u01b0\u1eddng",
+"Circle": "H\u00ecnh tr\u00f2n",
+"Disc": "H\u00ecnh tr\u00f2n m\u1ecfng",
+"Upper Alpha": "K\u00fd t\u1ef1 hoa",
+"Upper Roman": "S\u1ed1 la m\u00e3 hoa",
+"Lower Roman": "S\u1ed1 la m\u00e3 th\u01b0\u1eddng",
+"Name": "T\u00ean",
+"Anchor": "Neo",
+"You have unsaved changes are you sure you want to navigate away?": "B\u1ea1n ch\u01b0a l\u01b0u c\u00e1c thay \u0111\u1ed5i, b\u1ea1n c\u00f3 th\u1eadt s\u1ef1 mu\u1ed1n \u0111\u00f3ng ?",
+"Restore last draft": "Ph\u1ee5c h\u1ed3i b\u1ea3n l\u01b0u g\u1ea7n nh\u1ea5t",
+"Special character": "K\u00fd t\u1ef1 \u0111\u1eb7c bi\u1ec7t",
+"Source code": "M\u00e3 ngu\u1ed3n",
+"Color": "M\u00e0u",
+"Right to left": "Ph\u1ea3i sang tr\u00e1i",
+"Left to right": "Tr\u00e1i sang ph\u1ea3i",
+"Emoticons": "Bi\u1ec3u t\u01b0\u1ee3ng c\u1ea3m x\u00fac",
+"Robots": "Robots",
+"Document properties": "Thu\u1ed9c t\u00ednh t\u00e0i li\u1ec7u",
+"Title": "Ti\u00eau \u0111\u1ec1",
+"Keywords": "T\u1eeb kho\u00e1",
+"Encoding": "M\u00e3 ho\u00e1",
+"Description": "Mi\u00eau t\u1ea3",
+"Author": "Neo",
+"Fullscreen": "\u0110\u1ea7y m\u00e0n h\u00ecnh",
+"Horizontal line": "G\u1ea1ch ngang",
+"Horizontal space": "Kho\u1ea3ng c\u00e1ch ngang",
+"Insert\/edit image": "Th\u00eam \/ s\u1eeda h\u00ecnh \u1ea3nh",
+"General": "T\u1ed5ng h\u1ee3p",
+"Advanced": "N\u00e2ng cao",
+"Source": "Ngu\u1ed3n",
+"Border": "\u0110\u01b0\u1eddng vi\u1ec1n",
+"Constrain proportions": "H\u1ea1n ch\u1ebf t\u1ef7 l\u1ec7",
+"Vertical space": "Kho\u1ea3ng c\u00e1ch d\u1ecdc",
+"Image description": "Mi\u00eau t\u1ea3 h\u00ecnh \u1ea3nh",
+"Style": "Ki\u1ec3u",
+"Dimensions": "K\u00edch th\u01b0\u1edbc",
+"Insert image": "Ch\u00e8n \u1ea3nh",
+"Insert date\/time": "Th\u00eam ng\u00e0y \/ gi\u1edd",
+"Remove link": "Xo\u00e1 li\u00ean k\u1ebft",
+"Url": "Li\u00ean k\u1ebft",
+"Text to display": "Ch\u1eef hi\u1ec3n th\u1ecb",
+"Anchors": "Ghim",
+"Insert link": "Th\u00eam li\u00ean k\u1ebft",
+"New window": "C\u1eeda s\u1ed5 m\u1edbi",
+"None": "Kh\u00f4ng",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "URL b\u1ea1n nh\u1eadp v\u00e0o c\u00f3 v\u1ebb l\u00e0 m\u1ed9t li\u00ean k\u1ebft b\u00ean ngo\u00e0i. B\u1ea1n c\u00f3 mu\u1ed1n th\u00eam ti\u1ec1n t\u1ed1 http:\/\/ c\u1ea7n thi\u1ebft?",
+"Target": "M\u1ee5c ti\u00eau",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "URL b\u1ea1n nh\u1eadp v\u00e0o c\u00f3 v\u1ebb l\u00e0 m\u1ed9t \u0111\u1ecba ch\u1ec9 email. B\u1ea1n c\u00f3 mu\u1ed1n th\u00eam c\u00e1c y\u00eau c\u1ea7u mailto: ti\u1ec1n t\u1ed1?",
+"Insert\/edit link": "Th\u00eam \/ s\u1eeda li\u00ean k\u1ebft",
+"Insert\/edit video": "Th\u00eam \/ s\u1eeda video",
+"Poster": "Ng\u01b0\u1eddi \u0111\u0103ng",
+"Alternative source": "Ngu\u1ed3n thay th\u1ebf",
+"Paste your embed code below:": "D\u00e1n m\u00e3 embed v\u00e0o:",
+"Insert video": "Th\u00eam video",
+"Embed": "Embed",
+"Nonbreaking space": "Kh\u00f4ng ng\u1eaft kho\u1ea3ng",
+"Page break": "Ng\u1eaft trang",
+"Paste as text": "D\u00e1n nh\u01b0 v\u0103n b\u1ea3n",
+"Preview": "Xem tr\u01b0\u1edbc",
+"Print": "In",
+"Save": "L\u01b0u",
+"Could not find the specified string.": "Kh\u00f4ng t\u00ecm th\u1ea5y chu\u1ed7i y\u00eau c\u1ea7u",
+"Replace": "Thay th\u1ebf",
+"Next": "Sau",
+"Whole words": "T\u1ea5t c\u1ea3 \u0111o\u1ea1n",
+"Find and replace": "T\u00ecm v\u00e0 thay th\u1ebf",
+"Replace with": "Thay th\u1ebf b\u1eb1ng",
+"Find": "T\u00ecm",
+"Replace all": "Thay th\u1ebf t\u1ea5t c\u1ea3",
+"Match case": "Ph\u00e2n bi\u1ec7t hoa th\u01b0\u1eddng",
+"Prev": "Tr\u01b0\u1edbc",
+"Spellcheck": "Ki\u1ec3m tra ch\u00ednh t\u1ea3",
+"Finish": "Ho\u00e0n t\u1ea5t",
+"Ignore all": "L\u1edd t\u1ea5t c\u1ea3",
+"Ignore": "L\u1edd qua",
+"Add to Dictionary": "Th\u00eam v\u00e0o t\u1eeb \u0111i\u1ec3n",
+"Insert row before": "Th\u00eam d\u00f2ng ph\u00eda tr\u00ean",
+"Rows": "D\u00f2ng",
+"Height": "Cao",
+"Paste row after": "D\u00e1n v\u00e0o ph\u00eda sau, d\u01b0\u1edbi",
+"Alignment": "Canh ch\u1ec9nh",
+"Border color": "M\u00e0u vi\u1ec1n",
+"Column group": "Nh\u00f3m c\u1ed9t",
+"Row": "D\u00f2ng",
+"Insert column before": "Th\u00eam c\u1ed9t b\u00ean tr\u00e1i",
+"Split cell": "Chia \u00f4",
+"Cell padding": "Kho\u1ea3ng c\u00e1ch trong \u00f4",
+"Cell spacing": "Kho\u1ea3ng c\u00e1ch \u00f4",
+"Row type": "Lo\u1ea1i d\u00f2ng",
+"Insert table": "Th\u00eam b\u1ea3ng",
+"Body": "N\u1ed9i dung",
+"Caption": "Ti\u00eau \u0111\u1ec1",
+"Footer": "Ch\u00e2n",
+"Delete row": "Xo\u00e1 d\u00f2ng",
+"Paste row before": "D\u00e1n v\u00e0o ph\u00eda tr\u01b0\u1edbc, tr\u00ean",
+"Scope": "Quy\u1ec1n",
+"Delete table": "Xo\u00e1 b\u1ea3ng",
+"H Align": "X\u1ebfp ngang",
+"Top": "\u0110\u1ec9nh",
+"Header cell": "Ti\u00eau \u0111\u1ec1 \u00f4",
+"Column": "C\u1ed9t",
+"Row group": "Nh\u00f3m d\u00f2ng",
+"Cell": "\u00d4",
+"Middle": "Gi\u1eefa",
+"Cell type": "Lo\u1ea1i \u00f4",
+"Copy row": "Ch\u00e9p d\u00f2ng",
+"Row properties": "Thu\u1ed9c t\u00ednh d\u00f2ng",
+"Table properties": "Thu\u1ed9c t\u00ednh b\u1ea3ng",
+"Bottom": "\u0110\u00e1y",
+"V Align": "X\u1ebfp d\u1ecdc",
+"Header": "Ti\u00eau \u0111\u1ec1",
+"Right": "Ph\u1ea3i",
+"Insert column after": "Th\u00eam c\u1ed9t b\u00ean ph\u1ea3i",
+"Cols": "C\u1ed9t",
+"Insert row after": "Th\u00eam d\u00f2ng ph\u00eda d\u01b0\u1edbi",
+"Width": "R\u1ed9ng",
+"Cell properties": "Thu\u1ed9c t\u00ednh \u00f4",
+"Left": "Tr\u00e1i",
+"Cut row": "C\u1eaft d\u00f2ng",
+"Delete column": "Xo\u00e1 c\u1ed9t",
+"Center": "Gi\u1eefa",
+"Merge cells": "N\u1ed1i \u00f4",
+"Insert template": "Th\u00eam m\u1eabu",
+"Templates": "M\u1eabu",
+"Background color": "M\u00e0u n\u1ec1n",
+"Custom...": "T\u00f9y ch\u1ecdn...",
+"Custom color": "M\u00e0u t\u00f9y ch\u1ecdn",
+"No color": "Kh\u00f4ng m\u00e1u",
+"Text color": "M\u00e0u ch\u1eef",
+"Show blocks": "Hi\u1ec3n th\u1ecb kh\u1ed1i",
+"Show invisible characters": "Hi\u1ec3n th\u1ecb c\u00e1c k\u00fd t\u1ef1 \u1ea9n",
+"Words: {0}": "T\u1eeb: {0}",
+"Insert": "Th\u00eam",
+"File": "T\u1eadp tin",
+"Edit": "S\u1eeda",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Khu v\u1ef1c so\u1ea1n th\u1ea3o. Nh\u1ea5n ALT-F9 \u0111\u1ec3 hi\u1ec7n menu, ALT-F10 \u0111\u1ec3 hi\u1ec7n thanh c\u00f4ng c\u1ee5. C\u1ea7n tr\u1ee3 gi\u00fap nh\u1ea5n ALT-0",
+"Tools": "C\u00f4ng c\u1ee5",
+"View": "Xem",
+"Table": "B\u1ea3ng",
+"Format": "\u0110\u1ecbnh d\u1ea1ng"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/zh_CN.js b/program/js/tinymce/langs/zh_CN.js
new file mode 100644
index 000000000..712222a55
--- /dev/null
+++ b/program/js/tinymce/langs/zh_CN.js
@@ -0,0 +1,197 @@
+tinymce.addI18n('zh_CN',{
+"Cut": "\u526a\u5207",
+"Heading 5": "\u6807\u98985",
+"Header 2": "\u6807\u98982",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u4f60\u7684\u6d4f\u89c8\u5668\u4e0d\u652f\u6301\u5bf9\u526a\u8d34\u677f\u7684\u8bbf\u95ee\uff0c\u8bf7\u4f7f\u7528Ctrl+X\/C\/V\u952e\u8fdb\u884c\u590d\u5236\u7c98\u8d34\u3002",
+"Heading 4": "\u6807\u98984",
+"Div": "Div\u533a\u5757",
+"Heading 2": "\u6807\u98982",
+"Paste": "\u7c98\u8d34",
+"Close": "\u5173\u95ed",
+"Font Family": "\u5b57\u4f53",
+"Pre": "\u9884\u683c\u5f0f\u6587\u672c",
+"Align right": "\u53f3\u5bf9\u9f50",
+"New document": "\u65b0\u6587\u6863",
+"Blockquote": "\u5f15\u7528",
+"Numbered list": "\u7f16\u53f7\u5217\u8868",
+"Heading 1": "\u6807\u98981",
+"Headings": "\u6807\u9898",
+"Increase indent": "\u589e\u52a0\u7f29\u8fdb",
+"Formats": "\u683c\u5f0f",
+"Headers": "\u6807\u9898",
+"Select all": "\u5168\u9009",
+"Header 3": "\u6807\u98983",
+"Blocks": "\u533a\u5757",
+"Undo": "\u64a4\u6d88",
+"Strikethrough": "\u5220\u9664\u7ebf",
+"Bullet list": "\u9879\u76ee\u7b26\u53f7",
+"Header 1": "\u6807\u98981",
+"Superscript": "\u4e0a\u6807",
+"Clear formatting": "\u6e05\u9664\u683c\u5f0f",
+"Font Sizes": "\u5b57\u53f7",
+"Subscript": "\u4e0b\u6807",
+"Header 6": "\u6807\u98986",
+"Redo": "\u91cd\u590d",
+"Paragraph": "\u6bb5\u843d",
+"Ok": "\u786e\u5b9a",
+"Bold": "\u7c97\u4f53",
+"Code": "\u4ee3\u7801",
+"Italic": "\u659c\u4f53",
+"Align center": "\u5c45\u4e2d",
+"Header 5": "\u6807\u98985",
+"Heading 6": "\u6807\u98986",
+"Heading 3": "\u6807\u98983",
+"Decrease indent": "\u51cf\u5c11\u7f29\u8fdb",
+"Header 4": "\u6807\u98984",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u5f53\u524d\u4e3a\u7eaf\u6587\u672c\u7c98\u8d34\u6a21\u5f0f\uff0c\u518d\u6b21\u70b9\u51fb\u53ef\u4ee5\u56de\u5230\u666e\u901a\u7c98\u8d34\u6a21\u5f0f\u3002",
+"Underline": "\u4e0b\u5212\u7ebf",
+"Cancel": "\u53d6\u6d88",
+"Justify": "\u4e24\u7aef\u5bf9\u9f50",
+"Inline": "\u6587\u672c",
+"Copy": "\u590d\u5236",
+"Align left": "\u5de6\u5bf9\u9f50",
+"Visual aids": "\u7f51\u683c\u7ebf",
+"Lower Greek": "\u5c0f\u5199\u5e0c\u814a\u5b57\u6bcd",
+"Square": "\u65b9\u5757",
+"Default": "\u9ed8\u8ba4",
+"Lower Alpha": "\u5c0f\u5199\u82f1\u6587\u5b57\u6bcd",
+"Circle": "\u7a7a\u5fc3\u5706",
+"Disc": "\u5b9e\u5fc3\u5706",
+"Upper Alpha": "\u5927\u5199\u82f1\u6587\u5b57\u6bcd",
+"Upper Roman": "\u5927\u5199\u7f57\u9a6c\u5b57\u6bcd",
+"Lower Roman": "\u5c0f\u5199\u7f57\u9a6c\u5b57\u6bcd",
+"Name": "\u540d\u79f0",
+"Anchor": "\u951a\u70b9",
+"You have unsaved changes are you sure you want to navigate away?": "\u4f60\u8fd8\u6709\u6587\u6863\u5c1a\u672a\u4fdd\u5b58\uff0c\u786e\u5b9a\u8981\u79bb\u5f00\uff1f",
+"Restore last draft": "\u6062\u590d\u4e0a\u6b21\u7684\u8349\u7a3f",
+"Special character": "\u7279\u6b8a\u7b26\u53f7",
+"Source code": "\u6e90\u4ee3\u7801",
+"Color": "\u989c\u8272",
+"Right to left": "\u4ece\u53f3\u5230\u5de6",
+"Left to right": "\u4ece\u5de6\u5230\u53f3",
+"Emoticons": "\u8868\u60c5",
+"Robots": "\u673a\u5668\u4eba",
+"Document properties": "\u6587\u6863\u5c5e\u6027",
+"Title": "\u6807\u9898",
+"Keywords": "\u5173\u952e\u8bcd",
+"Encoding": "\u7f16\u7801",
+"Description": "\u63cf\u8ff0",
+"Author": "\u4f5c\u8005",
+"Fullscreen": "\u5168\u5c4f",
+"Horizontal line": "\u6c34\u5e73\u5206\u5272\u7ebf",
+"Horizontal space": "\u6c34\u5e73\u8fb9\u8ddd",
+"Insert\/edit image": "\u63d2\u5165\/\u7f16\u8f91\u56fe\u7247",
+"General": "\u666e\u901a",
+"Advanced": "\u9ad8\u7ea7",
+"Source": "\u5730\u5740",
+"Border": "\u8fb9\u6846",
+"Constrain proportions": "\u4fdd\u6301\u7eb5\u6a2a\u6bd4",
+"Vertical space": "\u5782\u76f4\u8fb9\u8ddd",
+"Image description": "\u56fe\u7247\u63cf\u8ff0",
+"Style": "\u6837\u5f0f",
+"Dimensions": "\u5927\u5c0f",
+"Insert image": "\u63d2\u5165\u56fe\u7247",
+"Insert date\/time": "\u63d2\u5165\u65e5\u671f\/\u65f6\u95f4",
+"Remove link": "\u5220\u9664\u94fe\u63a5",
+"Url": "\u5730\u5740",
+"Text to display": "\u663e\u793a\u6587\u5b57",
+"Anchors": "\u951a\u70b9",
+"Insert link": "\u63d2\u5165\u94fe\u63a5",
+"New window": "\u5728\u65b0\u7a97\u53e3\u6253\u5f00",
+"None": "\u65e0",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u5c5e\u4e8e\u5916\u90e8\u94fe\u63a5\uff0c\u9700\u8981\u52a0\u4e0ahttp:\/\/:\u524d\u7f00\u5417\uff1f",
+"Target": "\u6253\u5f00\u65b9\u5f0f",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u8c8c\u4f3c\u662f\u90ae\u4ef6\u5730\u5740\uff0c\u9700\u8981\u52a0\u4e0amailto:\u524d\u7f00\u5417\uff1f",
+"Insert\/edit link": "\u63d2\u5165\/\u7f16\u8f91\u94fe\u63a5",
+"Insert\/edit video": "\u63d2\u5165\/\u7f16\u8f91\u89c6\u9891",
+"Poster": "\u5c01\u9762",
+"Alternative source": "\u955c\u50cf",
+"Paste your embed code below:": "\u5c06\u5185\u5d4c\u4ee3\u7801\u7c98\u8d34\u5728\u4e0b\u9762:",
+"Insert video": "\u63d2\u5165\u89c6\u9891",
+"Embed": "\u5185\u5d4c",
+"Nonbreaking space": "\u4e0d\u95f4\u65ad\u7a7a\u683c",
+"Page break": "\u5206\u9875\u7b26",
+"Paste as text": "\u7c98\u8d34\u4e3a\u6587\u672c",
+"Preview": "\u9884\u89c8",
+"Print": "\u6253\u5370",
+"Save": "\u4fdd\u5b58",
+"Could not find the specified string.": "\u672a\u627e\u5230\u641c\u7d22\u5185\u5bb9.",
+"Replace": "\u66ff\u6362",
+"Next": "\u4e0b\u4e00\u4e2a",
+"Whole words": "\u5168\u5b57\u5339\u914d",
+"Find and replace": "\u67e5\u627e\u548c\u66ff\u6362",
+"Replace with": "\u66ff\u6362\u4e3a",
+"Find": "\u67e5\u627e",
+"Replace all": "\u5168\u90e8\u66ff\u6362",
+"Match case": "\u533a\u5206\u5927\u5c0f\u5199",
+"Prev": "\u4e0a\u4e00\u4e2a",
+"Spellcheck": "\u62fc\u5199\u68c0\u67e5",
+"Finish": "\u5b8c\u6210",
+"Ignore all": "\u5168\u90e8\u5ffd\u7565",
+"Ignore": "\u5ffd\u7565",
+"Add to Dictionary": "\u6dfb\u52a0\u5230\u5b57\u5178",
+"Insert row before": "\u5728\u4e0a\u65b9\u63d2\u5165",
+"Rows": "\u884c",
+"Height": "\u9ad8",
+"Paste row after": "\u7c98\u8d34\u5230\u4e0b\u65b9",
+"Alignment": "\u5bf9\u9f50\u65b9\u5f0f",
+"Border color": "\u8fb9\u6846\u989c\u8272",
+"Column group": "\u5217\u7ec4",
+"Row": "\u884c",
+"Insert column before": "\u5728\u5de6\u4fa7\u63d2\u5165",
+"Split cell": "\u62c6\u5206\u5355\u5143\u683c",
+"Cell padding": "\u5355\u5143\u683c\u5185\u8fb9\u8ddd",
+"Cell spacing": "\u5355\u5143\u683c\u5916\u95f4\u8ddd",
+"Row type": "\u884c\u7c7b\u578b",
+"Insert table": "\u63d2\u5165\u8868\u683c",
+"Body": "\u8868\u4f53",
+"Caption": "\u6807\u9898",
+"Footer": "\u8868\u5c3e",
+"Delete row": "\u5220\u9664\u884c",
+"Paste row before": "\u7c98\u8d34\u5230\u4e0a\u65b9",
+"Scope": "\u8303\u56f4",
+"Delete table": "\u5220\u9664\u8868\u683c",
+"H Align": "\u6c34\u5e73\u5bf9\u9f50",
+"Top": "\u9876\u90e8\u5bf9\u9f50",
+"Header cell": "\u8868\u5934\u5355\u5143\u683c",
+"Column": "\u5217",
+"Row group": "\u884c\u7ec4",
+"Cell": "\u5355\u5143\u683c",
+"Middle": "\u5782\u76f4\u5c45\u4e2d",
+"Cell type": "\u5355\u5143\u683c\u7c7b\u578b",
+"Copy row": "\u590d\u5236\u884c",
+"Row properties": "\u884c\u5c5e\u6027",
+"Table properties": "\u8868\u683c\u5c5e\u6027",
+"Bottom": "\u5e95\u90e8\u5bf9\u9f50",
+"V Align": "\u5782\u76f4\u5bf9\u9f50",
+"Header": "\u8868\u5934",
+"Right": "\u53f3\u5bf9\u9f50",
+"Insert column after": "\u5728\u53f3\u4fa7\u63d2\u5165",
+"Cols": "\u5217",
+"Insert row after": "\u5728\u4e0b\u65b9\u63d2\u5165",
+"Width": "\u5bbd",
+"Cell properties": "\u5355\u5143\u683c\u5c5e\u6027",
+"Left": "\u5de6\u5bf9\u9f50",
+"Cut row": "\u526a\u5207\u884c",
+"Delete column": "\u5220\u9664\u5217",
+"Center": "\u5c45\u4e2d",
+"Merge cells": "\u5408\u5e76\u5355\u5143\u683c",
+"Insert template": "\u63d2\u5165\u6a21\u677f",
+"Templates": "\u6a21\u677f",
+"Background color": "\u80cc\u666f\u8272",
+"Custom...": "\u81ea\u5b9a\u4e49...",
+"Custom color": "\u81ea\u5b9a\u4e49\u989c\u8272",
+"No color": "\u65e0",
+"Text color": "\u6587\u5b57\u989c\u8272",
+"Show blocks": "\u663e\u793a\u533a\u5757\u8fb9\u6846",
+"Show invisible characters": "\u663e\u793a\u4e0d\u53ef\u89c1\u5b57\u7b26",
+"Words: {0}": "\u5b57\u6570\uff1a{0}",
+"Insert": "\u63d2\u5165",
+"File": "\u6587\u4ef6",
+"Edit": "\u7f16\u8f91",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u5728\u7f16\u8f91\u533a\u6309ALT-F9\u6253\u5f00\u83dc\u5355\uff0c\u6309ALT-F10\u6253\u5f00\u5de5\u5177\u680f\uff0c\u6309ALT-0\u67e5\u770b\u5e2e\u52a9",
+"Tools": "\u5de5\u5177",
+"View": "\u89c6\u56fe",
+"Table": "\u8868\u683c",
+"Format": "\u683c\u5f0f"
+}); \ No newline at end of file
diff --git a/program/js/tinymce/langs/zh_TW.js b/program/js/tinymce/langs/zh_TW.js
new file mode 100644
index 000000000..c131cf1e2
--- /dev/null
+++ b/program/js/tinymce/langs/zh_TW.js
@@ -0,0 +1,186 @@
+tinymce.addI18n('zh_TW',{
+"Cut": "\u526a\u4e0b",
+"Heading 5": "\u6a19\u984c 5",
+"Header 2": "\u6a19\u984c 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u60a8\u7684\u700f\u89bd\u5668\u4e0d\u652f\u63f4\u5b58\u53d6\u526a\u8cbc\u7c3f\uff0c\u53ef\u4ee5\u4f7f\u7528\u5feb\u901f\u9375 Ctrl + X\/C\/V \u4ee3\u66ff\u526a\u4e0b\u3001\u8907\u88fd\u8207\u8cbc\u4e0a\u3002",
+"Heading 4": "\u6a19\u984c 4",
+"Div": "Div",
+"Heading 2": "\u6a19\u984c 2",
+"Paste": "\u8cbc\u4e0a",
+"Close": "\u95dc\u9589",
+"Font Family": "\u5b57\u9ad4",
+"Pre": "Pre",
+"Align right": "\u7f6e\u53f3\u5c0d\u9f4a",
+"New document": "\u65b0\u6587\u4ef6",
+"Blockquote": "\u5f15\u7528",
+"Numbered list": "\u6578\u5b57\u6e05\u55ae",
+"Heading 1": "\u6a19\u984c 1",
+"Headings": "\u6a19\u984c",
+"Increase indent": "\u589e\u52a0\u7e2e\u6392",
+"Formats": "\u683c\u5f0f",
+"Headers": "\u6a19\u984c",
+"Select all": "\u5168\u9078",
+"Header 3": "\u6a19\u984c 3",
+"Blocks": "\u5340\u584a",
+"Undo": "\u5fa9\u539f",
+"Strikethrough": "\u522a\u9664\u7dda",
+"Bullet list": "\u9805\u76ee\u6e05\u55ae",
+"Header 1": "\u6a19\u984c 1",
+"Superscript": "\u4e0a\u6a19",
+"Clear formatting": "\u6e05\u9664\u683c\u5f0f",
+"Font Sizes": "\u5b57\u578b\u5927\u5c0f",
+"Subscript": "\u4e0b\u6a19",
+"Header 6": "\u6a19\u984c 6",
+"Redo": "\u53d6\u6d88\u5fa9\u539f",
+"Paragraph": "\u6bb5\u843d",
+"Ok": "\u78ba\u5b9a",
+"Bold": "\u7c97\u9ad4",
+"Code": "\u7a0b\u5f0f\u78bc",
+"Italic": "\u659c\u9ad4",
+"Align center": "\u7f6e\u4e2d\u5c0d\u9f4a",
+"Header 5": "\u6a19\u984c 5",
+"Heading 6": "\u6a19\u984c 6",
+"Heading 3": "\u6a19\u984c 3",
+"Decrease indent": "\u6e1b\u5c11\u7e2e\u6392",
+"Header 4": "\u6a19\u984c 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u76ee\u524d\u5c07\u4ee5\u7d14\u6587\u5b57\u7684\u6a21\u5f0f\u8cbc\u4e0a\uff0c\u60a8\u53ef\u4ee5\u518d\u9ede\u9078\u4e00\u6b21\u53d6\u6d88\u3002",
+"Underline": "\u5e95\u7dda",
+"Cancel": "\u53d6\u6d88",
+"Justify": "\u5de6\u53f3\u5c0d\u9f4a",
+"Inline": "Inline",
+"Copy": "\u8907\u88fd",
+"Align left": "\u7f6e\u5de6\u5c0d\u9f4a",
+"Visual aids": "\u5c0f\u5e6b\u624b",
+"Lower Greek": "\u5e0c\u81d8\u5b57\u6bcd",
+"Square": "\u6b63\u65b9\u5f62",
+"Default": "\u9810\u8a2d",
+"Lower Alpha": "\u5c0f\u5beb\u82f1\u6587\u5b57\u6bcd",
+"Circle": "\u7a7a\u5fc3\u5713",
+"Disc": "\u5be6\u5fc3\u5713",
+"Upper Alpha": "\u5927\u5beb\u82f1\u6587\u5b57\u6bcd",
+"Upper Roman": "\u5927\u5beb\u7f85\u99ac\u6578\u5b57",
+"Lower Roman": "\u5c0f\u5beb\u7f85\u99ac\u6578\u5b57",
+"Name": "\u540d\u7a31",
+"Anchor": "\u52a0\u5165\u9328\u9ede",
+"You have unsaved changes are you sure you want to navigate away?": "\u7de8\u8f2f\u5c1a\u672a\u88ab\u5132\u5b58\uff0c\u4f60\u78ba\u5b9a\u8981\u96e2\u958b\uff1f",
+"Restore last draft": "\u8f09\u5165\u4e0a\u4e00\u6b21\u7de8\u8f2f\u7684\u8349\u7a3f",
+"Special character": "\u7279\u6b8a\u5b57\u5143",
+"Source code": "\u539f\u59cb\u78bc",
+"Right to left": "\u5f9e\u53f3\u5230\u5de6",
+"Left to right": "\u5f9e\u5de6\u5230\u53f3",
+"Emoticons": "\u8868\u60c5",
+"Robots": "\u6a5f\u5668\u4eba",
+"Document properties": "\u6587\u4ef6\u7684\u5c6c\u6027",
+"Title": "\u6a19\u984c",
+"Keywords": "\u95dc\u9375\u5b57",
+"Encoding": "\u7de8\u78bc",
+"Description": "\u63cf\u8ff0",
+"Author": "\u4f5c\u8005",
+"Fullscreen": "\u5168\u87a2\u5e55",
+"Horizontal line": "\u6c34\u5e73\u7dda",
+"Horizontal space": "\u5bec\u5ea6",
+"Insert\/edit image": "\u63d2\u5165\/\u7de8\u8f2f \u5716\u7247",
+"General": "\u4e00\u822c",
+"Advanced": "\u9032\u968e",
+"Source": "\u5716\u7247\u7db2\u5740",
+"Border": "\u908a\u6846",
+"Constrain proportions": "\u7b49\u6bd4\u4f8b\u7e2e\u653e",
+"Vertical space": "\u9ad8\u5ea6",
+"Image description": "\u5716\u7247\u63cf\u8ff0",
+"Style": "\u6a23\u5f0f",
+"Dimensions": "\u5c3a\u5bf8",
+"Insert image": "\u63d2\u5165\u5716\u7247",
+"Insert date\/time": "\u63d2\u5165 \u65e5\u671f\/\u6642\u9593",
+"Remove link": "\u79fb\u9664\u9023\u7d50",
+"Url": "\u7db2\u5740",
+"Text to display": "\u986f\u793a\u6587\u5b57",
+"Anchors": "\u52a0\u5165\u9328\u9ede",
+"Insert link": "\u63d2\u5165\u9023\u7d50",
+"New window": "\u53e6\u958b\u8996\u7a97",
+"None": "\u7121",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?",
+"Target": "\u958b\u555f\u65b9\u5f0f",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",
+"Insert\/edit link": "\u63d2\u5165\/\u7de8\u8f2f\u9023\u7d50",
+"Insert\/edit video": "\u63d2\u4ef6\/\u7de8\u8f2f \u5f71\u97f3",
+"Poster": "\u9810\u89bd\u5716\u7247",
+"Alternative source": "\u66ff\u4ee3\u5f71\u97f3",
+"Paste your embed code below:": "\u8acb\u5c07\u60a8\u7684\u5d4c\u5165\u5f0f\u7a0b\u5f0f\u78bc\u8cbc\u5728\u4e0b\u9762:",
+"Insert video": "\u63d2\u5165\u5f71\u97f3",
+"Embed": "\u5d4c\u5165\u78bc",
+"Nonbreaking space": "\u4e0d\u5206\u884c\u7684\u7a7a\u683c",
+"Page break": "\u5206\u9801",
+"Paste as text": "\u4ee5\u7d14\u6587\u5b57\u8cbc\u4e0a",
+"Preview": "\u9810\u89bd",
+"Print": "\u5217\u5370",
+"Save": "\u5132\u5b58",
+"Could not find the specified string.": "\u7121\u6cd5\u67e5\u8a62\u5230\u6b64\u7279\u5b9a\u5b57\u4e32",
+"Replace": "\u66ff\u63db",
+"Next": "\u4e0b\u4e00\u500b",
+"Whole words": "\u6574\u500b\u55ae\u5b57",
+"Find and replace": "\u5c0b\u627e\u53ca\u53d6\u4ee3",
+"Replace with": "\u66f4\u63db",
+"Find": "\u641c\u5c0b",
+"Replace all": "\u66ff\u63db\u5168\u90e8",
+"Match case": "\u76f8\u5339\u914d\u6848\u4ef6",
+"Prev": "\u4e0a\u4e00\u500b",
+"Spellcheck": "\u62fc\u5b57\u6aa2\u67e5",
+"Finish": "\u5b8c\u6210",
+"Ignore all": "\u5ffd\u7565\u6240\u6709",
+"Ignore": "\u5ffd\u7565",
+"Insert row before": "\u63d2\u5165\u5217\u5728...\u4e4b\u524d",
+"Rows": "\u5217",
+"Height": "\u9ad8\u5ea6",
+"Paste row after": "\u8cbc\u4e0a\u5217\u5728...\u4e4b\u5f8c",
+"Alignment": "\u5c0d\u9f4a",
+"Column group": "\u6b04\u4f4d\u7fa4\u7d44",
+"Row": "\u5217",
+"Insert column before": "\u63d2\u5165\u6b04\u4f4d\u5728...\u4e4b\u524d",
+"Split cell": "\u5206\u5272\u5132\u5b58\u683c",
+"Cell padding": "\u5132\u5b58\u683c\u7684\u908a\u8ddd",
+"Cell spacing": "\u5132\u5b58\u683c\u5f97\u9593\u8ddd",
+"Row type": "\u884c\u7684\u985e\u578b",
+"Insert table": "\u63d2\u5165\u8868\u683c",
+"Body": "\u4e3b\u9ad4",
+"Caption": "\u8868\u683c\u6a19\u984c",
+"Footer": "\u9801\u5c3e",
+"Delete row": "\u522a\u9664\u5217",
+"Paste row before": "\u8cbc\u4e0a\u5217\u5728...\u4e4b\u524d",
+"Scope": "\u7bc4\u570d",
+"Delete table": "\u522a\u9664\u8868\u683c",
+"Header cell": "\u6a19\u982d\u5132\u5b58\u683c",
+"Column": "\u884c",
+"Cell": "\u5132\u5b58\u683c",
+"Header": "\u6a19\u982d",
+"Cell type": "\u5132\u5b58\u683c\u7684\u985e\u578b",
+"Copy row": "\u8907\u88fd\u5217",
+"Row properties": "\u5217\u5c6c\u6027",
+"Table properties": "\u8868\u683c\u5c6c\u6027",
+"Row group": "\u5217\u7fa4\u7d44",
+"Right": "\u53f3\u908a",
+"Insert column after": "\u63d2\u5165\u6b04\u4f4d\u5728...\u4e4b\u5f8c",
+"Cols": "\u6b04\u4f4d\u6bb5",
+"Insert row after": "\u63d2\u5165\u5217\u5728...\u4e4b\u5f8c",
+"Width": "\u5bec\u5ea6",
+"Cell properties": "\u5132\u5b58\u683c\u5c6c\u6027",
+"Left": "\u5de6\u908a",
+"Cut row": "\u526a\u4e0b\u5217",
+"Delete column": "\u522a\u9664\u884c",
+"Center": "\u4e2d\u9593",
+"Merge cells": "\u5408\u4f75\u5132\u5b58\u683c",
+"Insert template": "\u63d2\u5165\u6a23\u7248",
+"Templates": "\u6a23\u7248",
+"Background color": "\u80cc\u666f\u984f\u8272",
+"Text color": "\u6587\u5b57\u984f\u8272",
+"Show blocks": "\u986f\u793a\u5340\u584a\u8cc7\u8a0a",
+"Show invisible characters": "\u986f\u793a\u96b1\u85cf\u5b57\u5143",
+"Words: {0}": "\u5b57\u6578\uff1a{0}",
+"Insert": "\u63d2\u5165",
+"File": "\u6a94\u6848",
+"Edit": "\u7de8\u8f2f",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u8c50\u5bcc\u7684\u6587\u672c\u5340\u57df\u3002\u6309ALT-F9\u524d\u5f80\u4e3b\u9078\u55ae\u3002\u6309ALT-F10\u547c\u53eb\u5de5\u5177\u6b04\u3002\u6309ALT-0\u5c0b\u6c42\u5e6b\u52a9",
+"Tools": "\u5de5\u5177",
+"View": "\u6aa2\u8996",
+"Table": "\u8868\u683c",
+"Format": "\u683c\u5f0f"
+}); \ No newline at end of file
diff --git a/program/js/tiny_mce/license.txt b/program/js/tinymce/license.txt
index 5a2534299..1837b0acb 100644
--- a/program/js/tiny_mce/license.txt
+++ b/program/js/tinymce/license.txt
@@ -1,504 +1,504 @@
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 2.1, February 1999
-
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the Lesser GPL. It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
- This license, the Lesser General Public License, applies to some
-specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it. You
-can use it too, but we suggest you first think carefuly about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations below.
-
- When we speak of free software, we are referring to freedom of use,
-not price. Our General Public Licenses are designed to make sure that
-you have the freedom to distribute copies of free software (and charge
-for this service if you wish); that you receive source code or can get
-it if you want it; that you can change the software and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
- To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights. These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
- For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you. You must make sure that they, too, receive or can get the source
-code. If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it. And you must show them these terms so they know their rights.
-
- We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
- To protect each distributor, we want to make it very clear that
-there is no warranty for the free library. Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-
- Finally, software patents pose a constant threat to the existence of
-any free program. We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder. Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
- Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License. This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License. We use
-this license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
- When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library. The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom. The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
- We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License. It also provides other free software developers Less
-of an advantage over competing non-free programs. These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries. However, the Lesser license provides advantages in certain
-special circumstances.
-
- For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it becomes
-a de-facto standard. To achieve this, non-free programs must be
-allowed to use the library. A more frequent case is that a free
-library does the same job as widely used non-free libraries. In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
- In other cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software. For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
- Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
- The precise terms and conditions for copying, distribution and
-modification follow. Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library". The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-
- GNU LESSER GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
- A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
- The "Library", below, refers to any such software library or work
-which has been distributed under these terms. A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language. (Hereinafter, translation is
-included without limitation in the term "modification".)
-
- "Source code" for a work means the preferred form of the work for
-making modifications to it. For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
- Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it). Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-
- 1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
- You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
- 2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) The modified work must itself be a software library.
-
- b) You must cause the files modified to carry prominent notices
- stating that you changed the files and the date of any change.
-
- c) You must cause the whole of the work to be licensed at no
- charge to all third parties under the terms of this License.
-
- d) If a facility in the modified Library refers to a function or a
- table of data to be supplied by an application program that uses
- the facility, other than as an argument passed when the facility
- is invoked, then you must make a good faith effort to ensure that,
- in the event an application does not supply such function or
- table, the facility still operates, and performs whatever part of
- its purpose remains meaningful.
-
- (For example, a function in a library to compute square roots has
- a purpose that is entirely well-defined independent of the
- application. Therefore, Subsection 2d requires that any
- application-supplied function or table used by this function must
- be optional: if the application does not supply it, the square
- root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library. To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License. (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.) Do not make any other change in
-these notices.
-
- Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
- This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
- 4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
- If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library". Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
- However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library". The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
- When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library. The
-threshold for this to be true is not precisely defined by law.
-
- If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work. (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
- Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
- 6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
- You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License. You must supply a copy of this License. If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License. Also, you must do one
-of these things:
-
- a) Accompany the work with the complete corresponding
- machine-readable source code for the Library including whatever
- changes were used in the work (which must be distributed under
- Sections 1 and 2 above); and, if the work is an executable linked
- with the Library, with the complete machine-readable "work that
- uses the Library", as object code and/or source code, so that the
- user can modify the Library and then relink to produce a modified
- executable containing the modified Library. (It is understood
- that the user who changes the contents of definitions files in the
- Library will not necessarily be able to recompile the application
- to use the modified definitions.)
-
- b) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (1) uses at run time a
- copy of the library already present on the user's computer system,
- rather than copying library functions into the executable, and (2)
- will operate properly with a modified version of the library, if
- the user installs one, as long as the modified version is
- interface-compatible with the version that the work was made with.
-
- c) Accompany the work with a written offer, valid for at
- least three years, to give the same user the materials
- specified in Subsection 6a, above, for a charge no more
- than the cost of performing this distribution.
-
- d) If distribution of the work is made by offering access to copy
- from a designated place, offer equivalent access to copy the above
- specified materials from the same place.
-
- e) Verify that the user has already received a copy of these
- materials or that you have already sent this user a copy.
-
- For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it. However, as a special exception,
-the materials to be distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
- It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system. Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
- 7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
- a) Accompany the combined library with a copy of the same work
- based on the Library, uncombined with any other library
- facilities. This must be distributed under the terms of the
- Sections above.
-
- b) Give prominent notice with the combined library of the fact
- that part of it is a work based on the Library, and explaining
- where to find the accompanying uncombined form of the same work.
-
- 8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License. Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License. However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
- 9. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Library or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
- 10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties with
-this License.
-
- 11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all. For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded. In such case, this License incorporates the limitation as if
-written in the body of this License.
-
- 13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation. If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
- 14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission. For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this. Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
- NO WARRANTY
-
- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Libraries
-
- If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change. You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms of the
-ordinary General Public License).
-
- To apply these terms, attach the following notices to the library. It is
-safest to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least the
-"copyright" line and a pointer to where the full notice is found.
-
- <one line to give the library's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the library, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the
- library `Frob' (a library for tweaking knobs) written by James Random Hacker.
-
- <signature of Ty Coon>, 1 April 1990
- Ty Coon, President of Vice
-
-That's all there is to it!
-
-
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL. It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it. You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+ When we speak of free software, we are referring to freedom of use,
+not price. Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+ To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights. These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ To protect each distributor, we want to make it very clear that
+there is no warranty for the free library. Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+ Finally, software patents pose a constant threat to the existence of
+any free program. We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder. Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+ Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License. This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License. We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+ When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library. The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom. The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+ We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License. It also provides other free software developers Less
+of an advantage over competing non-free programs. These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries. However, the Lesser license provides advantages in certain
+special circumstances.
+
+ For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard. To achieve this, non-free programs must be
+allowed to use the library. A more frequent case is that a free
+library does the same job as widely used non-free libraries. In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+ In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software. For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+ Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+ 6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (1) uses at run time a
+ copy of the library already present on the user's computer system,
+ rather than copying library functions into the executable, and (2)
+ will operate properly with a modified version of the library, if
+ the user installs one, as long as the modified version is
+ interface-compatible with the version that the work was made with.
+
+ c) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ d) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ e) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library. It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the library's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
+
+
diff --git a/program/js/tinymce/plugins/advlist/plugin.min.js b/program/js/tinymce/plugins/advlist/plugin.min.js
new file mode 100644
index 000000000..e734b1a05
--- /dev/null
+++ b/program/js/tinymce/plugins/advlist/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("advlist",function(t){function e(t,e){var n=[];return tinymce.each(e.split(/[ ,]/),function(t){n.push({text:t.replace(/\-/g," ").replace(/\b\w/g,function(t){return t.toUpperCase()}),data:"default"==t?"":t})}),n}function n(e,n){var o,l=t.dom,a=t.selection;o=l.getParent(a.getNode(),"ol,ul"),o&&o.nodeName==e&&n!==!1||t.execCommand("UL"==e?"InsertUnorderedList":"InsertOrderedList"),n=n===!1?i[e]:n,i[e]=n,o=l.getParent(a.getNode(),"ol,ul"),o&&n&&(l.setStyle(o,"listStyleType",n),o.removeAttribute("data-mce-style")),t.focus()}function o(e){var n=t.dom.getStyle(t.dom.getParent(t.selection.getNode(),"ol,ul"),"listStyleType")||"";e.control.items().each(function(t){t.active(t.settings.data===n)})}var l,a,i={};l=e("OL",t.getParam("advlist_number_styles","default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman")),a=e("UL",t.getParam("advlist_bullet_styles","default,circle,disc,square")),t.addButton("numlist",{type:"splitbutton",tooltip:"Numbered list",menu:l,onshow:o,onselect:function(t){n("OL",t.control.settings.data)},onclick:function(){n("OL",!1)}}),t.addButton("bullist",{type:"splitbutton",tooltip:"Bullet list",menu:a,onshow:o,onselect:function(t){n("UL",t.control.settings.data)},onclick:function(){n("UL",!1)}})}); \ No newline at end of file
diff --git a/program/js/tinymce/plugins/anchor/plugin.min.js b/program/js/tinymce/plugins/anchor/plugin.min.js
new file mode 100644
index 000000000..fec2a76f7
--- /dev/null
+++ b/program/js/tinymce/plugins/anchor/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("anchor",function(n){function e(){var e=n.selection.getNode(),t="";"A"==e.tagName&&(t=e.name||e.id||""),n.windowManager.open({title:"Anchor",body:{type:"textbox",name:"name",size:40,label:"Name",value:t},onsubmit:function(e){n.execCommand("mceInsertContent",!1,n.dom.createHTML("a",{id:e.data.name}))}})}n.addButton("anchor",{icon:"anchor",tooltip:"Anchor",onclick:e,stateSelector:"a:not([href])"}),n.addMenuItem("anchor",{icon:"anchor",text:"Anchor",context:"insert",onclick:e})}); \ No newline at end of file
diff --git a/program/js/tinymce/plugins/autolink/plugin.min.js b/program/js/tinymce/plugins/autolink/plugin.min.js
new file mode 100644
index 000000000..10bc71731
--- /dev/null
+++ b/program/js/tinymce/plugins/autolink/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("autolink",function(n){function t(n){o(n,-1,"(",!0)}function e(n){o(n,0,"",!0)}function i(n){o(n,-1,"",!1)}function o(n,t,e){function i(n,t){if(0>t&&(t=0),3==n.nodeType){var e=n.data.length;t>e&&(t=e)}return t}function o(n,t){f.setStart(n,i(n,t))}function r(n,t){f.setEnd(n,i(n,t))}var f,d,a,s,c,l,u,g,h,C;if(f=n.selection.getRng(!0).cloneRange(),f.startOffset<5){if(g=f.endContainer.previousSibling,!g){if(!f.endContainer.firstChild||!f.endContainer.firstChild.nextSibling)return;g=f.endContainer.firstChild.nextSibling}if(h=g.length,o(g,h),r(g,h),f.endOffset<5)return;d=f.endOffset,s=g}else{if(s=f.endContainer,3!=s.nodeType&&s.firstChild){for(;3!=s.nodeType&&s.firstChild;)s=s.firstChild;3==s.nodeType&&(o(s,0),r(s,s.nodeValue.length))}d=1==f.endOffset?2:f.endOffset-1-t}a=d;do o(s,d>=2?d-2:0),r(s,d>=1?d-1:0),d-=1,C=f.toString();while(" "!=C&&""!==C&&160!=C.charCodeAt(0)&&d-2>=0&&C!=e);f.toString()==e||160==f.toString().charCodeAt(0)?(o(s,d),r(s,a),d+=1):0===f.startOffset?(o(s,0),r(s,a)):(o(s,d),r(s,a)),l=f.toString(),"."==l.charAt(l.length-1)&&r(s,a-1),l=f.toString(),u=l.match(/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|(?:mailto:)?[A-Z0-9._%+\-]+@)(.+)$/i),u&&("www."==u[1]?u[1]="http://www.":/@$/.test(u[1])&&!/^mailto:/.test(u[1])&&(u[1]="mailto:"+u[1]),c=n.selection.getBookmark(),n.selection.setRng(f),n.execCommand("createlink",!1,u[1]+u[2]),n.selection.moveToBookmark(c),n.nodeChanged())}var r;return n.on("keydown",function(t){return 13==t.keyCode?i(n):void 0}),tinymce.Env.ie?void n.on("focus",function(){if(!r){r=!0;try{n.execCommand("AutoUrlDetect",!1,!0)}catch(t){}}}):(n.on("keypress",function(e){return 41==e.keyCode?t(n):void 0}),void n.on("keyup",function(t){return 32==t.keyCode?e(n):void 0}))}); \ No newline at end of file
diff --git a/program/js/tinymce/plugins/autoresize/plugin.min.js b/program/js/tinymce/plugins/autoresize/plugin.min.js
new file mode 100644
index 000000000..dc88d852d
--- /dev/null
+++ b/program/js/tinymce/plugins/autoresize/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("autoresize",function(e){function t(){return e.plugins.fullscreen&&e.plugins.fullscreen.isFullscreen()}function i(o){var r,s,g,m,l,d,u,h,f,c,_,p,y=tinymce.DOM;if(s=e.getDoc()){if(g=s.body,m=s.documentElement,l=n.autoresize_min_height,!g||o&&"setcontent"===o.type&&o.initial||t())return void(g&&m&&(g.style.overflowY="auto",m.style.overflowY="auto"));u=e.dom.getStyle(g,"margin-top",!0),h=e.dom.getStyle(g,"margin-bottom",!0),f=e.dom.getStyle(g,"padding-top",!0),c=e.dom.getStyle(g,"padding-bottom",!0),_=e.dom.getStyle(g,"border-top-width",!0),p=e.dom.getStyle(g,"border-bottom-width",!0),d=g.offsetHeight+parseInt(u,10)+parseInt(h,10)+parseInt(f,10)+parseInt(c,10)+parseInt(_,10)+parseInt(p,10),(isNaN(d)||0>=d)&&(d=tinymce.Env.ie?g.scrollHeight:tinymce.Env.webkit&&0===g.clientHeight?0:g.offsetHeight),d>n.autoresize_min_height&&(l=d),n.autoresize_max_height&&d>n.autoresize_max_height?(l=n.autoresize_max_height,g.style.overflowY="auto",m.style.overflowY="auto"):(g.style.overflowY="hidden",m.style.overflowY="hidden",g.scrollTop=0),l!==a&&(r=l-a,y.setStyle(e.iframeElement,"height",l+"px"),a=l,tinymce.isWebKit&&0>r&&i(o))}}function o(e,t,n){setTimeout(function(){i({}),e--?o(e,t,n):n&&n()},t)}var n=e.settings,a=0;e.settings.inline||(n.autoresize_min_height=parseInt(e.getParam("autoresize_min_height",e.getElement().offsetHeight),10),n.autoresize_max_height=parseInt(e.getParam("autoresize_max_height",0),10),e.on("init",function(){var t=e.getParam("autoresize_overflow_padding",1);e.dom.setStyles(e.getBody(),{paddingBottom:e.getParam("autoresize_bottom_margin",50),paddingLeft:t,paddingRight:t})}),e.on("nodechange setcontent keyup FullscreenStateChanged",i),e.getParam("autoresize_on_init",!0)&&e.on("init",function(){o(20,100,function(){o(5,1e3)})}),e.addCommand("mceAutoResize",i))}); \ No newline at end of file
diff --git a/program/js/tinymce/plugins/autosave/plugin.min.js b/program/js/tinymce/plugins/autosave/plugin.min.js
new file mode 100644
index 000000000..b7b438d6c
--- /dev/null
+++ b/program/js/tinymce/plugins/autosave/plugin.min.js
@@ -0,0 +1 @@
+tinymce._beforeUnloadHandler=function(){var e;return tinymce.each(tinymce.editors,function(t){t.plugins.autosave&&t.plugins.autosave.storeDraft(),!e&&t.isDirty()&&t.getParam("autosave_ask_before_unload",!0)&&(e=t.translate("You have unsaved changes are you sure you want to navigate away?"))}),e},tinymce.PluginManager.add("autosave",function(e){function t(e,t){var n={s:1e3,m:6e4};return e=/^(\d+)([ms]?)$/.exec(""+(e||t)),(e[2]?n[e[2]]:1)*parseInt(e,10)}function n(){var e=parseInt(v.getItem(c+"time"),10)||0;return(new Date).getTime()-e>m.autosave_retention?(a(!1),!1):!0}function a(t){v.removeItem(c+"draft"),v.removeItem(c+"time"),t!==!1&&e.fire("RemoveDraft")}function r(){!f()&&e.isDirty()&&(v.setItem(c+"draft",e.getContent({format:"raw",no_events:!0})),v.setItem(c+"time",(new Date).getTime()),e.fire("StoreDraft"))}function o(){n()&&(e.setContent(v.getItem(c+"draft"),{format:"raw"}),e.fire("RestoreDraft"))}function i(){d||(setInterval(function(){e.removed||r()},m.autosave_interval),d=!0)}function s(){var t=this;t.disabled(!n()),e.on("StoreDraft RestoreDraft RemoveDraft",function(){t.disabled(!n())}),i()}function u(){e.undoManager.beforeChange(),o(),a(),e.undoManager.add()}function f(t){var n=e.settings.forced_root_block;return t=tinymce.trim("undefined"==typeof t?e.getBody().innerHTML:t),""===t||new RegExp("^<"+n+"[^>]*>(( |&nbsp;|[ ]|<br[^>]*>)+?|)</"+n+">|<br>$","i").test(t)}var c,d,m=e.settings,v=tinymce.util.LocalStorage;c=m.autosave_prefix||"tinymce-autosave-{path}{query}-{id}-",c=c.replace(/\{path\}/g,document.location.pathname),c=c.replace(/\{query\}/g,document.location.search),c=c.replace(/\{id\}/g,e.id),m.autosave_interval=t(m.autosave_interval,"30s"),m.autosave_retention=t(m.autosave_retention,"20m"),e.addButton("restoredraft",{title:"Restore last draft",onclick:u,onPostRender:s}),e.addMenuItem("restoredraft",{text:"Restore last draft",onclick:u,onPostRender:s,context:"file"}),e.settings.autosave_restore_when_empty!==!1&&(e.on("init",function(){n()&&f()&&o()}),e.on("saveContent",function(){a()})),window.onbeforeunload=tinymce._beforeUnloadHandler,this.hasDraft=n,this.storeDraft=r,this.restoreDraft=o,this.removeDraft=a,this.isEmpty=f}); \ No newline at end of file
diff --git a/program/js/tinymce/plugins/bbcode/plugin.min.js b/program/js/tinymce/plugins/bbcode/plugin.min.js
new file mode 100644
index 000000000..78c37cd19
--- /dev/null
+++ b/program/js/tinymce/plugins/bbcode/plugin.min.js
@@ -0,0 +1 @@
+!function(){tinymce.create("tinymce.plugins.BBCodePlugin",{init:function(o){var e=this,t=o.getParam("bbcode_dialect","punbb").toLowerCase();o.on("beforeSetContent",function(o){o.content=e["_"+t+"_bbcode2html"](o.content)}),o.on("postProcess",function(o){o.set&&(o.content=e["_"+t+"_bbcode2html"](o.content)),o.get&&(o.content=e["_"+t+"_html2bbcode"](o.content))})},getInfo:function(){return{longname:"BBCode Plugin",author:"Moxiecode Systems AB",authorurl:"http://www.tinymce.com",infourl:"http://www.tinymce.com/wiki.php/Plugin:bbcode"}},_punbb_html2bbcode:function(o){function e(e,t){o=o.replace(e,t)}return o=tinymce.trim(o),e(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]"),e(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),e(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),e(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),e(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),e(/<span style=\"color: ?(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]"),e(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]"),e(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]"),e(/<font>(.*?)<\/font>/gi,"$1"),e(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]"),e(/<span class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]"),e(/<span class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]"),e(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]"),e(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]"),e(/<em class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]"),e(/<em class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]"),e(/<u class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]"),e(/<u class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]"),e(/<\/(strong|b)>/gi,"[/b]"),e(/<(strong|b)>/gi,"[b]"),e(/<\/(em|i)>/gi,"[/i]"),e(/<(em|i)>/gi,"[i]"),e(/<\/u>/gi,"[/u]"),e(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]"),e(/<u>/gi,"[u]"),e(/<blockquote[^>]*>/gi,"[quote]"),e(/<\/blockquote>/gi,"[/quote]"),e(/<br \/>/gi,"\n"),e(/<br\/>/gi,"\n"),e(/<br>/gi,"\n"),e(/<p>/gi,""),e(/<\/p>/gi,"\n"),e(/&nbsp;|\u00a0/gi," "),e(/&quot;/gi,'"'),e(/&lt;/gi,"<"),e(/&gt;/gi,">"),e(/&amp;/gi,"&"),o},_punbb_bbcode2html:function(o){function e(e,t){o=o.replace(e,t)}return o=tinymce.trim(o),e(/\n/gi,"<br />"),e(/\[b\]/gi,"<strong>"),e(/\[\/b\]/gi,"</strong>"),e(/\[i\]/gi,"<em>"),e(/\[\/i\]/gi,"</em>"),e(/\[u\]/gi,"<u>"),e(/\[\/u\]/gi,"</u>"),e(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,'<a href="$1">$2</a>'),e(/\[url\](.*?)\[\/url\]/gi,'<a href="$1">$1</a>'),e(/\[img\](.*?)\[\/img\]/gi,'<img src="$1" />'),e(/\[color=(.*?)\](.*?)\[\/color\]/gi,'<font color="$1">$2</font>'),e(/\[code\](.*?)\[\/code\]/gi,'<span class="codeStyle">$1</span>&nbsp;'),e(/\[quote.*?\](.*?)\[\/quote\]/gi,'<span class="quoteStyle">$1</span>&nbsp;'),o}}),tinymce.PluginManager.add("bbcode",tinymce.plugins.BBCodePlugin)}(); \ No newline at end of file
diff --git a/program/js/tinymce/plugins/charmap/plugin.min.js b/program/js/tinymce/plugins/charmap/plugin.min.js
new file mode 100644
index 000000000..46fce44be
--- /dev/null
+++ b/program/js/tinymce/plugins/charmap/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("charmap",function(e){function a(){function a(e){for(;e;){if("TD"==e.nodeName)return e;e=e.parentNode}}var t,r,o,n;t='<table role="presentation" cellspacing="0" class="mce-charmap"><tbody>';var l=25;for(o=0;10>o;o++){for(t+="<tr>",r=0;l>r;r++){var s=i[o*l+r];t+='<td title="'+s[1]+'"><div tabindex="-1" title="'+s[1]+'" role="button">'+(s?String.fromCharCode(parseInt(s[0],10)):"&nbsp;")+"</div></td>"}t+="</tr>"}t+="</tbody></table>";var c={type:"container",html:t,onclick:function(a){var i=a.target;"TD"==i.tagName&&(i=i.firstChild),"DIV"==i.tagName&&(e.execCommand("mceInsertContent",!1,i.firstChild.data),a.ctrlKey||n.close())},onmouseover:function(e){var i=a(e.target);i&&n.find("#preview").text(i.firstChild.firstChild.data)}};n=e.windowManager.open({title:"Special character",spacing:10,padding:10,items:[c,{type:"label",name:"preview",text:" ",style:"font-size: 40px; text-align: center",border:1,minWidth:100,minHeight:80}],buttons:[{text:"Close",onclick:function(){n.close()}}]})}var i=[["160","no-break space"],["38","ampersand"],["34","quotation mark"],["162","cent sign"],["8364","euro sign"],["163","pound sign"],["165","yen sign"],["169","copyright sign"],["174","registered sign"],["8482","trade mark sign"],["8240","per mille sign"],["181","micro sign"],["183","middle dot"],["8226","bullet"],["8230","three dot leader"],["8242","minutes / feet"],["8243","seconds / inches"],["167","section sign"],["182","paragraph sign"],["223","sharp s / ess-zed"],["8249","single left-pointing angle quotation mark"],["8250","single right-pointing angle quotation mark"],["171","left pointing guillemet"],["187","right pointing guillemet"],["8216","left single quotation mark"],["8217","right single quotation mark"],["8220","left double quotation mark"],["8221","right double quotation mark"],["8218","single low-9 quotation mark"],["8222","double low-9 quotation mark"],["60","less-than sign"],["62","greater-than sign"],["8804","less-than or equal to"],["8805","greater-than or equal to"],["8211","en dash"],["8212","em dash"],["175","macron"],["8254","overline"],["164","currency sign"],["166","broken bar"],["168","diaeresis"],["161","inverted exclamation mark"],["191","turned question mark"],["710","circumflex accent"],["732","small tilde"],["176","degree sign"],["8722","minus sign"],["177","plus-minus sign"],["247","division sign"],["8260","fraction slash"],["215","multiplication sign"],["185","superscript one"],["178","superscript two"],["179","superscript three"],["188","fraction one quarter"],["189","fraction one half"],["190","fraction three quarters"],["402","function / florin"],["8747","integral"],["8721","n-ary sumation"],["8734","infinity"],["8730","square root"],["8764","similar to"],["8773","approximately equal to"],["8776","almost equal to"],["8800","not equal to"],["8801","identical to"],["8712","element of"],["8713","not an element of"],["8715","contains as member"],["8719","n-ary product"],["8743","logical and"],["8744","logical or"],["172","not sign"],["8745","intersection"],["8746","union"],["8706","partial differential"],["8704","for all"],["8707","there exists"],["8709","diameter"],["8711","backward difference"],["8727","asterisk operator"],["8733","proportional to"],["8736","angle"],["180","acute accent"],["184","cedilla"],["170","feminine ordinal indicator"],["186","masculine ordinal indicator"],["8224","dagger"],["8225","double dagger"],["192","A - grave"],["193","A - acute"],["194","A - circumflex"],["195","A - tilde"],["196","A - diaeresis"],["197","A - ring above"],["198","ligature AE"],["199","C - cedilla"],["200","E - grave"],["201","E - acute"],["202","E - circumflex"],["203","E - diaeresis"],["204","I - grave"],["205","I - acute"],["206","I - circumflex"],["207","I - diaeresis"],["208","ETH"],["209","N - tilde"],["210","O - grave"],["211","O - acute"],["212","O - circumflex"],["213","O - tilde"],["214","O - diaeresis"],["216","O - slash"],["338","ligature OE"],["352","S - caron"],["217","U - grave"],["218","U - acute"],["219","U - circumflex"],["220","U - diaeresis"],["221","Y - acute"],["376","Y - diaeresis"],["222","THORN"],["224","a - grave"],["225","a - acute"],["226","a - circumflex"],["227","a - tilde"],["228","a - diaeresis"],["229","a - ring above"],["230","ligature ae"],["231","c - cedilla"],["232","e - grave"],["233","e - acute"],["234","e - circumflex"],["235","e - diaeresis"],["236","i - grave"],["237","i - acute"],["238","i - circumflex"],["239","i - diaeresis"],["240","eth"],["241","n - tilde"],["242","o - grave"],["243","o - acute"],["244","o - circumflex"],["245","o - tilde"],["246","o - diaeresis"],["248","o slash"],["339","ligature oe"],["353","s - caron"],["249","u - grave"],["250","u - acute"],["251","u - circumflex"],["252","u - diaeresis"],["253","y - acute"],["254","thorn"],["255","y - diaeresis"],["913","Alpha"],["914","Beta"],["915","Gamma"],["916","Delta"],["917","Epsilon"],["918","Zeta"],["919","Eta"],["920","Theta"],["921","Iota"],["922","Kappa"],["923","Lambda"],["924","Mu"],["925","Nu"],["926","Xi"],["927","Omicron"],["928","Pi"],["929","Rho"],["931","Sigma"],["932","Tau"],["933","Upsilon"],["934","Phi"],["935","Chi"],["936","Psi"],["937","Omega"],["945","alpha"],["946","beta"],["947","gamma"],["948","delta"],["949","epsilon"],["950","zeta"],["951","eta"],["952","theta"],["953","iota"],["954","kappa"],["955","lambda"],["956","mu"],["957","nu"],["958","xi"],["959","omicron"],["960","pi"],["961","rho"],["962","final sigma"],["963","sigma"],["964","tau"],["965","upsilon"],["966","phi"],["967","chi"],["968","psi"],["969","omega"],["8501","alef symbol"],["982","pi symbol"],["8476","real part symbol"],["978","upsilon - hook symbol"],["8472","Weierstrass p"],["8465","imaginary part"],["8592","leftwards arrow"],["8593","upwards arrow"],["8594","rightwards arrow"],["8595","downwards arrow"],["8596","left right arrow"],["8629","carriage return"],["8656","leftwards double arrow"],["8657","upwards double arrow"],["8658","rightwards double arrow"],["8659","downwards double arrow"],["8660","left right double arrow"],["8756","therefore"],["8834","subset of"],["8835","superset of"],["8836","not a subset of"],["8838","subset of or equal to"],["8839","superset of or equal to"],["8853","circled plus"],["8855","circled times"],["8869","perpendicular"],["8901","dot operator"],["8968","left ceiling"],["8969","right ceiling"],["8970","left floor"],["8971","right floor"],["9001","left-pointing angle bracket"],["9002","right-pointing angle bracket"],["9674","lozenge"],["9824","black spade suit"],["9827","black club suit"],["9829","black heart suit"],["9830","black diamond suit"],["8194","en space"],["8195","em space"],["8201","thin space"],["8204","zero width non-joiner"],["8205","zero width joiner"],["8206","left-to-right mark"],["8207","right-to-left mark"],["173","soft hyphen"]];e.addButton("charmap",{icon:"charmap",tooltip:"Special character",onclick:a}),e.addMenuItem("charmap",{icon:"charmap",text:"Special character",onclick:a,context:"insert"})}); \ No newline at end of file
diff --git a/program/js/tinymce/plugins/code/plugin.min.js b/program/js/tinymce/plugins/code/plugin.min.js
new file mode 100644
index 000000000..6aaecd9ac
--- /dev/null
+++ b/program/js/tinymce/plugins/code/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("code",function(e){function o(){var o=e.windowManager.open({title:"Source code",body:{type:"textbox",name:"code",multiline:!0,minWidth:e.getParam("code_dialog_width",600),minHeight:e.getParam("code_dialog_height",Math.min(tinymce.DOM.getViewPort().h-200,500)),spellcheck:!1,style:"direction: ltr; text-align: left"},onSubmit:function(o){e.focus(),e.undoManager.transact(function(){e.setContent(o.data.code)}),e.selection.setCursorLocation(),e.nodeChanged()}});o.find("#code").value(e.getContent({source_view:!0}))}e.addCommand("mceCodeEditor",o),e.addButton("code",{icon:"code",tooltip:"Source code",onclick:o}),e.addMenuItem("code",{icon:"code",text:"Source code",context:"tools",onclick:o})}); \ No newline at end of file
diff --git a/program/js/tinymce/plugins/colorpicker/plugin.min.js b/program/js/tinymce/plugins/colorpicker/plugin.min.js
new file mode 100644
index 000000000..d50c7cc45
--- /dev/null
+++ b/program/js/tinymce/plugins/colorpicker/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("colorpicker",function(e){function n(n,a){function i(e){var n=new tinymce.util.Color(e),a=n.toRgb();l.fromJSON({r:a.r,g:a.g,b:a.b,hex:n.toHex().substr(1)}),t(n.toHex())}function t(e){l.find("#preview")[0].getEl().style.background=e}var l=e.windowManager.open({title:"Color",items:{type:"container",layout:"flex",direction:"row",align:"stretch",padding:5,spacing:10,items:[{type:"colorpicker",value:a,onchange:function(){var e=this.rgb();l&&(l.find("#r").value(e.r),l.find("#g").value(e.g),l.find("#b").value(e.b),l.find("#hex").value(this.value().substr(1)),t(this.value()))}},{type:"form",padding:0,labelGap:5,defaults:{type:"textbox",size:7,value:"0",flex:1,spellcheck:!1,onchange:function(){var e,n,a=l.find("colorpicker")[0];return e=this.name(),n=this.value(),"hex"==e?(n="#"+n,i(n),void a.value(n)):(n={r:l.find("#r").value(),g:l.find("#g").value(),b:l.find("#b").value()},a.value(n),void i(n))}},items:[{name:"r",label:"R",autofocus:1},{name:"g",label:"G"},{name:"b",label:"B"},{name:"hex",label:"#",value:"000000"},{name:"preview",type:"container",border:1}]}]},onSubmit:function(){n("#"+this.toJSON().hex)}});i(a)}e.settings.color_picker_callback||(e.settings.color_picker_callback=n)}); \ No newline at end of file
diff --git a/program/js/tinymce/plugins/contextmenu/plugin.min.js b/program/js/tinymce/plugins/contextmenu/plugin.min.js
new file mode 100644
index 000000000..e21978e85
--- /dev/null
+++ b/program/js/tinymce/plugins/contextmenu/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("contextmenu",function(e){var t,n=e.settings.contextmenu_never_use_native;e.on("contextmenu",function(o){var i,c=e.getDoc();if(!o.ctrlKey||n){if(o.preventDefault(),tinymce.Env.mac&&tinymce.Env.webkit&&2==o.button&&c.caretRangeFromPoint&&e.selection.setRng(c.caretRangeFromPoint(o.x,o.y)),i=e.settings.contextmenu||"link image inserttable | cell row column deletetable",t)t.show();else{var a=[];tinymce.each(i.split(/[ ,]/),function(t){var n=e.menuItems[t];"|"==t&&(n={text:t}),n&&(n.shortcut="",a.push(n))});for(var r=0;r<a.length;r++)"|"==a[r].text&&(0===r||r==a.length-1)&&a.splice(r,1);t=new tinymce.ui.Menu({items:a,context:"contextmenu"}).addClass("contextmenu").renderTo(),e.on("remove",function(){t.remove(),t=null})}var m={x:o.pageX,y:o.pageY};e.inline||(m=tinymce.DOM.getPos(e.getContentAreaContainer()),m.x+=o.clientX,m.y+=o.clientY),t.moveTo(m.x,m.y)}})}); \ No newline at end of file
diff --git a/program/js/tinymce/plugins/directionality/plugin.min.js b/program/js/tinymce/plugins/directionality/plugin.min.js
new file mode 100644
index 000000000..2994eb676
--- /dev/null
+++ b/program/js/tinymce/plugins/directionality/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("directionality",function(t){function e(e){var i,n=t.dom,r=t.selection.getSelectedBlocks();r.length&&(i=n.getAttrib(r[0],"dir"),tinymce.each(r,function(t){n.getParent(t.parentNode,"*[dir='"+e+"']",n.getRoot())||(i!=e?n.setAttrib(t,"dir",e):n.setAttrib(t,"dir",null))}),t.nodeChanged())}function i(t){var e=[];return tinymce.each("h1 h2 h3 h4 h5 h6 div p".split(" "),function(i){e.push(i+"[dir="+t+"]")}),e.join(",")}t.addCommand("mceDirectionLTR",function(){e("ltr")}),t.addCommand("mceDirectionRTL",function(){e("rtl")}),t.addButton("ltr",{title:"Left to right",cmd:"mceDirectionLTR",stateSelector:i("ltr")}),t.addButton("rtl",{title:"Right to left",cmd:"mceDirectionRTL",stateSelector:i("rtl")})}); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/emotions/img/smiley-cool.gif b/program/js/tinymce/plugins/emoticons/img/smiley-cool.gif
index ba90cc36f..ba90cc36f 100644
--- a/program/js/tiny_mce/plugins/emotions/img/smiley-cool.gif
+++ b/program/js/tinymce/plugins/emoticons/img/smiley-cool.gif
Binary files differ
diff --git a/program/js/tiny_mce/plugins/emotions/img/smiley-cry.gif b/program/js/tinymce/plugins/emoticons/img/smiley-cry.gif
index 74d897a4f..74d897a4f 100644
--- a/program/js/tiny_mce/plugins/emotions/img/smiley-cry.gif
+++ b/program/js/tinymce/plugins/emoticons/img/smiley-cry.gif
Binary files differ
diff --git a/program/js/tiny_mce/plugins/emotions/img/smiley-embarassed.gif b/program/js/tinymce/plugins/emoticons/img/smiley-embarassed.gif
index 963a96b8a..963a96b8a 100644
--- a/program/js/tiny_mce/plugins/emotions/img/smiley-embarassed.gif
+++ b/program/js/tinymce/plugins/emoticons/img/smiley-embarassed.gif
Binary files differ
diff --git a/program/js/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif b/program/js/tinymce/plugins/emoticons/img/smiley-foot-in-mouth.gif
index c7cf1011d..c7cf1011d 100644
--- a/program/js/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif
+++ b/program/js/tinymce/plugins/emoticons/img/smiley-foot-in-mouth.gif
Binary files differ
diff --git a/program/js/tiny_mce/plugins/emotions/img/smiley-frown.gif b/program/js/tinymce/plugins/emoticons/img/smiley-frown.gif
index 716f55e16..716f55e16 100644
--- a/program/js/tiny_mce/plugins/emotions/img/smiley-frown.gif
+++ b/program/js/tinymce/plugins/emoticons/img/smiley-frown.gif
Binary files differ
diff --git a/program/js/tiny_mce/plugins/emotions/img/smiley-innocent.gif b/program/js/tinymce/plugins/emoticons/img/smiley-innocent.gif
index 334d49e0e..334d49e0e 100644
--- a/program/js/tiny_mce/plugins/emotions/img/smiley-innocent.gif
+++ b/program/js/tinymce/plugins/emoticons/img/smiley-innocent.gif
Binary files differ
diff --git a/program/js/tiny_mce/plugins/emotions/img/smiley-kiss.gif b/program/js/tinymce/plugins/emoticons/img/smiley-kiss.gif
index 4efd549ed..4efd549ed 100644
--- a/program/js/tiny_mce/plugins/emotions/img/smiley-kiss.gif
+++ b/program/js/tinymce/plugins/emoticons/img/smiley-kiss.gif
Binary files differ
diff --git a/program/js/tiny_mce/plugins/emotions/img/smiley-laughing.gif b/program/js/tinymce/plugins/emoticons/img/smiley-laughing.gif
index 82c5b182e..82c5b182e 100644
--- a/program/js/tiny_mce/plugins/emotions/img/smiley-laughing.gif
+++ b/program/js/tinymce/plugins/emoticons/img/smiley-laughing.gif
Binary files differ
diff --git a/program/js/tiny_mce/plugins/emotions/img/smiley-money-mouth.gif b/program/js/tinymce/plugins/emoticons/img/smiley-money-mouth.gif
index ca2451e10..ca2451e10 100644
--- a/program/js/tiny_mce/plugins/emotions/img/smiley-money-mouth.gif
+++ b/program/js/tinymce/plugins/emoticons/img/smiley-money-mouth.gif
Binary files differ
diff --git a/program/js/tiny_mce/plugins/emotions/img/smiley-sealed.gif b/program/js/tinymce/plugins/emoticons/img/smiley-sealed.gif
index fe66220c2..fe66220c2 100644
--- a/program/js/tiny_mce/plugins/emotions/img/smiley-sealed.gif
+++ b/program/js/tinymce/plugins/emoticons/img/smiley-sealed.gif
Binary files differ
diff --git a/program/js/tiny_mce/plugins/emotions/img/smiley-smile.gif b/program/js/tinymce/plugins/emoticons/img/smiley-smile.gif
index fd27edfaa..fd27edfaa 100644
--- a/program/js/tiny_mce/plugins/emotions/img/smiley-smile.gif
+++ b/program/js/tinymce/plugins/emoticons/img/smiley-smile.gif
Binary files differ
diff --git a/program/js/tiny_mce/plugins/emotions/img/smiley-surprised.gif b/program/js/tinymce/plugins/emoticons/img/smiley-surprised.gif
index 0cc9bb71c..0cc9bb71c 100644
--- a/program/js/tiny_mce/plugins/emotions/img/smiley-surprised.gif
+++ b/program/js/tinymce/plugins/emoticons/img/smiley-surprised.gif
Binary files differ
diff --git a/program/js/tiny_mce/plugins/emotions/img/smiley-tongue-out.gif b/program/js/tinymce/plugins/emoticons/img/smiley-tongue-out.gif
index 2075dc160..2075dc160 100644
--- a/program/js/tiny_mce/plugins/emotions/img/smiley-tongue-out.gif
+++ b/program/js/tinymce/plugins/emoticons/img/smiley-tongue-out.gif
Binary files differ
diff --git a/program/js/tiny_mce/plugins/emotions/img/smiley-undecided.gif b/program/js/tinymce/plugins/emoticons/img/smiley-undecided.gif
index bef7e2573..bef7e2573 100644
--- a/program/js/tiny_mce/plugins/emotions/img/smiley-undecided.gif
+++ b/program/js/tinymce/plugins/emoticons/img/smiley-undecided.gif
Binary files differ
diff --git a/program/js/tiny_mce/plugins/emotions/img/smiley-wink.gif b/program/js/tinymce/plugins/emoticons/img/smiley-wink.gif
index 0631c7616..0631c7616 100644
--- a/program/js/tiny_mce/plugins/emotions/img/smiley-wink.gif
+++ b/program/js/tinymce/plugins/emoticons/img/smiley-wink.gif
Binary files differ
diff --git a/program/js/tiny_mce/plugins/emotions/img/smiley-yell.gif b/program/js/tinymce/plugins/emoticons/img/smiley-yell.gif
index 648e6e879..648e6e879 100644
--- a/program/js/tiny_mce/plugins/emotions/img/smiley-yell.gif
+++ b/program/js/tinymce/plugins/emoticons/img/smiley-yell.gif
Binary files differ
diff --git a/program/js/tinymce/plugins/emoticons/plugin.min.js b/program/js/tinymce/plugins/emoticons/plugin.min.js
new file mode 100644
index 000000000..737083f9c
--- /dev/null
+++ b/program/js/tinymce/plugins/emoticons/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("emoticons",function(t,e){function a(){var t;return t='<table role="list" class="mce-grid">',tinymce.each(i,function(a){t+="<tr>",tinymce.each(a,function(a){var i=e+"/img/smiley-"+a+".gif";t+='<td><a href="#" data-mce-url="'+i+'" data-mce-alt="'+a+'" tabindex="-1" role="option" aria-label="'+a+'"><img src="'+i+'" style="width: 18px; height: 18px" role="presentation" /></a></td>'}),t+="</tr>"}),t+="</table>"}var i=[["cool","cry","embarassed","foot-in-mouth"],["frown","innocent","kiss","laughing"],["money-mouth","sealed","smile","surprised"],["tongue-out","undecided","wink","yell"]];t.addButton("emoticons",{type:"panelbutton",panel:{role:"application",autohide:!0,html:a,onclick:function(e){var a=t.dom.getParent(e.target,"a");a&&(t.insertContent('<img src="'+a.getAttribute("data-mce-url")+'" alt="'+a.getAttribute("data-mce-alt")+'" />'),this.hide())}},tooltip:"Emoticons"})}); \ No newline at end of file
diff --git a/program/js/tinymce/plugins/fullpage/plugin.min.js b/program/js/tinymce/plugins/fullpage/plugin.min.js
new file mode 100644
index 000000000..c0dfa2d3d
--- /dev/null
+++ b/program/js/tinymce/plugins/fullpage/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("fullpage",function(e){function t(){var t=n();e.windowManager.open({title:"Document properties",data:t,defaults:{type:"textbox",size:40},body:[{name:"title",label:"Title"},{name:"keywords",label:"Keywords"},{name:"description",label:"Description"},{name:"robots",label:"Robots"},{name:"author",label:"Author"},{name:"docencoding",label:"Encoding"}],onSubmit:function(e){l(tinymce.extend(t,e.data))}})}function n(){function t(e,t){var n=e.attr(t);return n||""}var n,l,a=i(),r={};return r.fontface=e.getParam("fullpage_default_fontface",""),r.fontsize=e.getParam("fullpage_default_fontsize",""),n=a.firstChild,7==n.type&&(r.xml_pi=!0,l=/encoding="([^"]+)"/.exec(n.value),l&&(r.docencoding=l[1])),n=a.getAll("#doctype")[0],n&&(r.doctype="<!DOCTYPE"+n.value+">"),n=a.getAll("title")[0],n&&n.firstChild&&(r.title=n.firstChild.value),s(a.getAll("meta"),function(e){var t,n=e.attr("name"),l=e.attr("http-equiv");n?r[n.toLowerCase()]=e.attr("content"):"Content-Type"==l&&(t=/charset\s*=\s*(.*)\s*/gi.exec(e.attr("content")),t&&(r.docencoding=t[1]))}),n=a.getAll("html")[0],n&&(r.langcode=t(n,"lang")||t(n,"xml:lang")),r.stylesheets=[],tinymce.each(a.getAll("link"),function(e){"stylesheet"==e.attr("rel")&&r.stylesheets.push(e.attr("href"))}),n=a.getAll("body")[0],n&&(r.langdir=t(n,"dir"),r.style=t(n,"style"),r.visited_color=t(n,"vlink"),r.link_color=t(n,"link"),r.active_color=t(n,"alink")),r}function l(t){function n(e,t,n){e.attr(t,n?n:void 0)}function l(e){r.firstChild?r.insert(e,r.firstChild):r.append(e)}var a,r,o,d,u,g=e.dom;a=i(),r=a.getAll("head")[0],r||(d=a.getAll("html")[0],r=new m("head",1),d.firstChild?d.insert(r,d.firstChild,!0):d.append(r)),d=a.firstChild,t.xml_pi?(u='version="1.0"',t.docencoding&&(u+=' encoding="'+t.docencoding+'"'),7!=d.type&&(d=new m("xml",7),a.insert(d,a.firstChild,!0)),d.value=u):d&&7==d.type&&d.remove(),d=a.getAll("#doctype")[0],t.doctype?(d||(d=new m("#doctype",10),t.xml_pi?a.insert(d,a.firstChild):l(d)),d.value=t.doctype.substring(9,t.doctype.length-1)):d&&d.remove(),d=null,s(a.getAll("meta"),function(e){"Content-Type"==e.attr("http-equiv")&&(d=e)}),t.docencoding?(d||(d=new m("meta",1),d.attr("http-equiv","Content-Type"),d.shortEnded=!0,l(d)),d.attr("content","text/html; charset="+t.docencoding)):d&&d.remove(),d=a.getAll("title")[0],t.title?(d?d.empty():(d=new m("title",1),l(d)),d.append(new m("#text",3)).value=t.title):d&&d.remove(),s("keywords,description,author,copyright,robots".split(","),function(e){var n,i,r=a.getAll("meta"),o=t[e];for(n=0;n<r.length;n++)if(i=r[n],i.attr("name")==e)return void(o?i.attr("content",o):i.remove());o&&(d=new m("meta",1),d.attr("name",e),d.attr("content",o),d.shortEnded=!0,l(d))});var f={};tinymce.each(a.getAll("link"),function(e){"stylesheet"==e.attr("rel")&&(f[e.attr("href")]=e)}),tinymce.each(t.stylesheets,function(e){f[e]||(d=new m("link",1),d.attr({rel:"stylesheet",text:"text/css",href:e}),d.shortEnded=!0,l(d)),delete f[e]}),tinymce.each(f,function(e){e.remove()}),d=a.getAll("body")[0],d&&(n(d,"dir",t.langdir),n(d,"style",t.style),n(d,"vlink",t.visited_color),n(d,"link",t.link_color),n(d,"alink",t.active_color),g.setAttribs(e.getBody(),{style:t.style,dir:t.dir,vLink:t.visited_color,link:t.link_color,aLink:t.active_color})),d=a.getAll("html")[0],d&&(n(d,"lang",t.langcode),n(d,"xml:lang",t.langcode)),r.firstChild||r.remove(),o=new tinymce.html.Serializer({validate:!1,indent:!0,apply_source_formatting:!0,indent_before:"head,html,body,meta,title,script,link,style",indent_after:"head,html,body,meta,title,script,link,style"}).serialize(a),c=o.substring(0,o.indexOf("</body>"))}function i(){return new tinymce.html.DomParser({validate:!1,root_name:"#document"}).parse(c)}function a(t){function n(e){return e.replace(/<\/?[A-Z]+/g,function(e){return e.toLowerCase()})}var l,a,o,m,u=t.content,g="",f=e.dom;if(!t.selection&&!("raw"==t.format&&c||t.source_view&&e.getParam("fullpage_hide_in_source_view"))){0!==u.length||t.source_view||(u=tinymce.trim(c)+"\n"+tinymce.trim(u)+"\n"+tinymce.trim(d)),u=u.replace(/<(\/?)BODY/gi,"<$1body"),l=u.indexOf("<body"),-1!=l?(l=u.indexOf(">",l),c=n(u.substring(0,l+1)),a=u.indexOf("</body",l),-1==a&&(a=u.length),t.content=u.substring(l+1,a),d=n(u.substring(a))):(c=r(),d="\n</body>\n</html>"),o=i(),s(o.getAll("style"),function(e){e.firstChild&&(g+=e.firstChild.value)}),m=o.getAll("body")[0],m&&f.setAttribs(e.getBody(),{style:m.attr("style")||"",dir:m.attr("dir")||"",vLink:m.attr("vlink")||"",link:m.attr("link")||"",aLink:m.attr("alink")||""}),f.remove("fullpage_styles");var y=e.getDoc().getElementsByTagName("head")[0];g&&(f.add(y,"style",{id:"fullpage_styles"},g),m=f.get("fullpage_styles"),m.styleSheet&&(m.styleSheet.cssText=g));var h={};tinymce.each(y.getElementsByTagName("link"),function(e){"stylesheet"==e.rel&&e.getAttribute("data-mce-fullpage")&&(h[e.href]=e)}),tinymce.each(o.getAll("link"),function(e){var t=e.attr("href");h[t]||"stylesheet"!=e.attr("rel")||f.add(y,"link",{rel:"stylesheet",text:"text/css",href:t,"data-mce-fullpage":"1"}),delete h[t]}),tinymce.each(h,function(e){e.parentNode.removeChild(e)})}}function r(){var t,n="",l="";return e.getParam("fullpage_default_xml_pi")&&(n+='<?xml version="1.0" encoding="'+e.getParam("fullpage_default_encoding","ISO-8859-1")+'" ?>\n'),n+=e.getParam("fullpage_default_doctype","<!DOCTYPE html>"),n+="\n<html>\n<head>\n",(t=e.getParam("fullpage_default_title"))&&(n+="<title>"+t+"</title>\n"),(t=e.getParam("fullpage_default_encoding"))&&(n+='<meta http-equiv="Content-Type" content="text/html; charset='+t+'" />\n'),(t=e.getParam("fullpage_default_font_family"))&&(l+="font-family: "+t+";"),(t=e.getParam("fullpage_default_font_size"))&&(l+="font-size: "+t+";"),(t=e.getParam("fullpage_default_text_color"))&&(l+="color: "+t+";"),n+="</head>\n<body"+(l?' style="'+l+'"':"")+">\n"}function o(t){t.selection||t.source_view&&e.getParam("fullpage_hide_in_source_view")||(t.content=tinymce.trim(c)+"\n"+tinymce.trim(t.content)+"\n"+tinymce.trim(d))}var c,d,s=tinymce.each,m=tinymce.html.Node;e.addCommand("mceFullPageProperties",t),e.addButton("fullpage",{title:"Document properties",cmd:"mceFullPageProperties"}),e.addMenuItem("fullpage",{text:"Document properties",cmd:"mceFullPageProperties",context:"file"}),e.on("BeforeSetContent",a),e.on("GetContent",o)}); \ No newline at end of file
diff --git a/program/js/tinymce/plugins/fullscreen/plugin.min.js b/program/js/tinymce/plugins/fullscreen/plugin.min.js
new file mode 100644
index 000000000..1bb1940dd
--- /dev/null
+++ b/program/js/tinymce/plugins/fullscreen/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("fullscreen",function(e){function t(){var e,t,n=window,i=document,l=i.body;return l.offsetWidth&&(e=l.offsetWidth,t=l.offsetHeight),n.innerWidth&&n.innerHeight&&(e=n.innerWidth,t=n.innerHeight),{w:e,h:t}}function n(){function n(){d.setStyle(a,"height",t().h-(h.clientHeight-a.clientHeight))}var u,h,a,f,m=document.body,g=document.documentElement;s=!s,h=e.getContainer(),u=h.style,a=e.getContentAreaContainer().firstChild,f=a.style,s?(i=f.width,l=f.height,f.width=f.height="100%",c=u.width,o=u.height,u.width=u.height="",d.addClass(m,"mce-fullscreen"),d.addClass(g,"mce-fullscreen"),d.addClass(h,"mce-fullscreen"),d.bind(window,"resize",n),n(),r=n):(f.width=i,f.height=l,c&&(u.width=c),o&&(u.height=o),d.removeClass(m,"mce-fullscreen"),d.removeClass(g,"mce-fullscreen"),d.removeClass(h,"mce-fullscreen"),d.unbind(window,"resize",r)),e.fire("FullscreenStateChanged",{state:s})}var i,l,r,c,o,s=!1,d=tinymce.DOM;return e.settings.inline?void 0:(e.on("init",function(){e.addShortcut("Ctrl+Alt+F","",n)}),e.on("remove",function(){r&&d.unbind(window,"resize",r)}),e.addCommand("mceFullScreen",n),e.addMenuItem("fullscreen",{text:"Fullscreen",shortcut:"Ctrl+Alt+F",selectable:!0,onClick:n,onPostRender:function(){var t=this;e.on("FullscreenStateChanged",function(e){t.active(e.state)})},context:"view"}),e.addButton("fullscreen",{tooltip:"Fullscreen",shortcut:"Ctrl+Alt+F",onClick:n,onPostRender:function(){var t=this;e.on("FullscreenStateChanged",function(e){t.active(e.state)})}}),{isFullscreen:function(){return s}})}); \ No newline at end of file
diff --git a/program/js/tinymce/plugins/hr/plugin.min.js b/program/js/tinymce/plugins/hr/plugin.min.js
new file mode 100644
index 000000000..e5ff6f316
--- /dev/null
+++ b/program/js/tinymce/plugins/hr/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("hr",function(n){n.addCommand("InsertHorizontalRule",function(){n.execCommand("mceInsertContent",!1,"<hr />")}),n.addButton("hr",{icon:"hr",tooltip:"Horizontal line",cmd:"InsertHorizontalRule"}),n.addMenuItem("hr",{icon:"hr",text:"Horizontal line",cmd:"InsertHorizontalRule",context:"insert"})}); \ No newline at end of file
diff --git a/program/js/tinymce/plugins/image/plugin.min.js b/program/js/tinymce/plugins/image/plugin.min.js
new file mode 100644
index 000000000..14e5bbd96
--- /dev/null
+++ b/program/js/tinymce/plugins/image/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("image",function(e){function t(e,t){function i(e,i){n.parentNode&&n.parentNode.removeChild(n),t({width:e,height:i})}var n=document.createElement("img");n.onload=function(){i(n.clientWidth,n.clientHeight)},n.onerror=function(){i()};var a=n.style;a.visibility="hidden",a.position="fixed",a.bottom=a.left=0,a.width=a.height="auto",document.body.appendChild(n),n.src=e}function i(e,t,i){function n(e,i){return i=i||[],tinymce.each(e,function(e){var a={text:e.text||e.title};e.menu?a.menu=n(e.menu):(a.value=e.value,t(a)),i.push(a)}),i}return n(e,i||[])}function n(t){return function(){var i=e.settings.image_list;"string"==typeof i?tinymce.util.XHR.send({url:i,success:function(e){t(tinymce.util.JSON.parse(e))}}):"function"==typeof i?i(t):t(i)}}function a(n){function a(){var e,t,i,n;e=c.find("#width")[0],t=c.find("#height")[0],e&&t&&(i=e.value(),n=t.value(),c.find("#constrain")[0].checked()&&d&&u&&i&&n&&(d!=i?(n=Math.round(i/d*n),t.value(n)):(i=Math.round(n/u*i),e.value(i))),d=i,u=n)}function l(){function t(t){function i(){t.onload=t.onerror=null,e.selection&&(e.selection.select(t),e.nodeChanged())}t.onload=function(){m.width||m.height||!y||p.setAttribs(t,{width:t.clientWidth,height:t.clientHeight}),i()},t.onerror=i}s(),a(),m=tinymce.extend(m,c.toJSON()),m.alt||(m.alt=""),""===m.width&&(m.width=null),""===m.height&&(m.height=null),m.style||(m.style=null),m={src:m.src,alt:m.alt,width:m.width,height:m.height,style:m.style,"class":m["class"]},e.undoManager.transact(function(){return m.src?(f?p.setAttribs(f,m):(m.id="__mcenew",e.focus(),e.selection.setContent(p.createHTML("img",m)),f=p.get("__mcenew"),p.setAttrib(f,"id",null)),void t(f)):void(f&&(p.remove(f),e.focus(),e.nodeChanged()))})}function o(e){return e&&(e=e.replace(/px$/,"")),e}function r(i){var n=i.meta||{};g&&g.value(e.convertURL(this.value(),"src")),tinymce.each(n,function(e,t){c.find("#"+t).value(e)}),n.width||n.height||t(this.value(),function(e){e.width&&e.height&&y&&(d=e.width,u=e.height,c.find("#width").value(d),c.find("#height").value(u))})}function s(){function t(e){return e.length>0&&/^[0-9]+$/.test(e)&&(e+="px"),e}if(e.settings.image_advtab){var i=c.toJSON(),n=p.parseStyle(i.style);delete n.margin,n["margin-top"]=n["margin-bottom"]=t(i.vspace),n["margin-left"]=n["margin-right"]=t(i.hspace),n["border-width"]=t(i.border),c.find("#style").value(p.serializeStyle(p.parseStyle(p.serializeStyle(n))))}}var c,d,u,g,h,m={},p=e.dom,f=e.selection.getNode(),y=e.settings.image_dimensions!==!1;d=p.getAttrib(f,"width"),u=p.getAttrib(f,"height"),"IMG"!=f.nodeName||f.getAttribute("data-mce-object")||f.getAttribute("data-mce-placeholder")?f=null:m={src:p.getAttrib(f,"src"),alt:p.getAttrib(f,"alt"),"class":p.getAttrib(f,"class"),width:d,height:u},n&&(g={type:"listbox",label:"Image list",values:i(n,function(t){t.value=e.convertURL(t.value||t.url,"src")},[{text:"None",value:""}]),value:m.src&&e.convertURL(m.src,"src"),onselect:function(e){var t=c.find("#alt");(!t.value()||e.lastControl&&t.value()==e.lastControl.text())&&t.value(e.control.text()),c.find("#src").value(e.control.value()).fire("change")},onPostRender:function(){g=this}}),e.settings.image_class_list&&(h={name:"class",type:"listbox",label:"Class",values:i(e.settings.image_class_list,function(t){t.value&&(t.textStyle=function(){return e.formatter.getCssText({inline:"img",classes:[t.value]})})})});var b=[{name:"src",type:"filepicker",filetype:"image",label:"Source",autofocus:!0,onchange:r},g];e.settings.image_description!==!1&&b.push({name:"alt",type:"textbox",label:"Image description"}),y&&b.push({type:"container",label:"Dimensions",layout:"flex",direction:"row",align:"center",spacing:5,items:[{name:"width",type:"textbox",maxLength:5,size:3,onchange:a,ariaLabel:"Width"},{type:"label",text:"x"},{name:"height",type:"textbox",maxLength:5,size:3,onchange:a,ariaLabel:"Height"},{name:"constrain",type:"checkbox",checked:!0,text:"Constrain proportions"}]}),b.push(h),e.settings.image_advtab?(f&&(m.hspace=o(f.style.marginLeft||f.style.marginRight),m.vspace=o(f.style.marginTop||f.style.marginBottom),m.border=o(f.style.borderWidth),m.style=e.dom.serializeStyle(e.dom.parseStyle(e.dom.getAttrib(f,"style")))),c=e.windowManager.open({title:"Insert/edit image",data:m,bodyType:"tabpanel",body:[{title:"General",type:"form",items:b},{title:"Advanced",type:"form",pack:"start",items:[{label:"Style",name:"style",type:"textbox"},{type:"form",layout:"grid",packV:"start",columns:2,padding:0,alignH:["left","right"],defaults:{type:"textbox",maxWidth:50,onchange:s},items:[{label:"Vertical space",name:"vspace"},{label:"Horizontal space",name:"hspace"},{label:"Border",name:"border"}]}]}],onSubmit:l})):c=e.windowManager.open({title:"Insert/edit image",data:m,body:b,onSubmit:l})}e.addButton("image",{icon:"image",tooltip:"Insert/edit image",onclick:n(a),stateSelector:"img:not([data-mce-object],[data-mce-placeholder])"}),e.addMenuItem("image",{icon:"image",text:"Insert image",onclick:n(a),context:"insert",prependToContext:!0}),e.addCommand("mceImage",n(a))}); \ No newline at end of file
diff --git a/program/js/tinymce/plugins/importcss/plugin.min.js b/program/js/tinymce/plugins/importcss/plugin.min.js
new file mode 100644
index 000000000..5dd1d4435
--- /dev/null
+++ b/program/js/tinymce/plugins/importcss/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("importcss",function(t){function e(t){return"string"==typeof t?function(e){return-1!==e.indexOf(t)}:t instanceof RegExp?function(e){return t.test(e)}:t}function n(e,n){function i(t,e){var c,o=t.href;if(o&&n(o,e)){s(t.imports,function(t){i(t,!0)});try{c=t.cssRules||t.rules}catch(a){}s(c,function(t){t.styleSheet?i(t.styleSheet,!0):t.selectorText&&s(t.selectorText.split(","),function(t){r.push(tinymce.trim(t))})})}}var r=[],c={};s(t.contentCSS,function(t){c[t]=!0}),n||(n=function(t,e){return e||c[t]});try{s(e.styleSheets,function(t){i(t)})}catch(o){}return r}function i(e){var n,i=/^(?:([a-z0-9\-_]+))?(\.[a-z0-9_\-\.]+)$/i.exec(e);if(i){var r=i[1],s=i[2].substr(1).split(".").join(" "),c=tinymce.makeMap("a,img");return i[1]?(n={title:e},t.schema.getTextBlockElements()[r]?n.block=r:t.schema.getBlockElements()[r]||c[r.toLowerCase()]?n.selector=r:n.inline=r):i[2]&&(n={inline:"span",title:e.substr(1),classes:s}),t.settings.importcss_merge_classes!==!1?n.classes=s:n.attributes={"class":s},n}}var r=this,s=tinymce.each;t.on("renderFormatsMenu",function(c){var o=t.settings,a={},l=o.importcss_selector_converter||i,f=e(o.importcss_selector_filter),m=c.control;t.settings.importcss_append||m.items().remove();var u=[];tinymce.each(o.importcss_groups,function(t){t=tinymce.extend({},t),t.filter=e(t.filter),u.push(t)}),s(n(c.doc||t.getDoc(),e(o.importcss_file_filter)),function(e){if(-1===e.indexOf(".mce-")&&!a[e]&&(!f||f(e))){var n,i=l.call(r,e);if(i){var s=i.name||tinymce.DOM.uniqueId();if(u)for(var c=0;c<u.length;c++)if(!u[c].filter||u[c].filter(e)){u[c].item||(u[c].item={text:u[c].title,menu:[]}),n=u[c].item.menu;break}t.formatter.register(s,i);var o=tinymce.extend({},m.settings.itemDefaults,{text:i.title,format:s});n?n.push(o):m.add(o)}a[e]=!0}}),s(u,function(t){m.add(t.item)}),c.control.renderNew()}),r.convertSelectorToFormat=i}); \ No newline at end of file
diff --git a/program/js/tinymce/plugins/insertdatetime/plugin.min.js b/program/js/tinymce/plugins/insertdatetime/plugin.min.js
new file mode 100644
index 000000000..6b170087a
--- /dev/null
+++ b/program/js/tinymce/plugins/insertdatetime/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("insertdatetime",function(e){function t(t,a){function n(e,t){if(e=""+e,e.length<t)for(var a=0;a<t-e.length;a++)e="0"+e;return e}return a=a||new Date,t=t.replace("%D","%m/%d/%Y"),t=t.replace("%r","%I:%M:%S %p"),t=t.replace("%Y",""+a.getFullYear()),t=t.replace("%y",""+a.getYear()),t=t.replace("%m",n(a.getMonth()+1,2)),t=t.replace("%d",n(a.getDate(),2)),t=t.replace("%H",""+n(a.getHours(),2)),t=t.replace("%M",""+n(a.getMinutes(),2)),t=t.replace("%S",""+n(a.getSeconds(),2)),t=t.replace("%I",""+((a.getHours()+11)%12+1)),t=t.replace("%p",""+(a.getHours()<12?"AM":"PM")),t=t.replace("%B",""+e.translate(m[a.getMonth()])),t=t.replace("%b",""+e.translate(c[a.getMonth()])),t=t.replace("%A",""+e.translate(d[a.getDay()])),t=t.replace("%a",""+e.translate(i[a.getDay()])),t=t.replace("%%","%")}function a(a){var n=t(a);if(e.settings.insertdatetime_element){var r;r=t(/%[HMSIp]/.test(a)?"%Y-%m-%dT%H:%M":"%Y-%m-%d"),n='<time datetime="'+r+'">'+n+"</time>";var i=e.dom.getParent(e.selection.getStart(),"time");if(i)return void e.dom.setOuterHTML(i,n)}e.insertContent(n)}var n,r,i="Sun Mon Tue Wed Thu Fri Sat Sun".split(" "),d="Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(" "),c="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),m="January February March April May June July August September October November December".split(" "),u=[];e.addCommand("mceInsertDate",function(){a(e.getParam("insertdatetime_dateformat",e.translate("%Y-%m-%d")))}),e.addCommand("mceInsertTime",function(){a(e.getParam("insertdatetime_timeformat",e.translate("%H:%M:%S")))}),e.addButton("insertdatetime",{type:"splitbutton",title:"Insert date/time",onclick:function(){a(n||r)},menu:u}),tinymce.each(e.settings.insertdatetime_formats||["%H:%M:%S","%Y-%m-%d","%I:%M:%S %p","%D"],function(e){r||(r=e),u.push({text:t(e),onclick:function(){n=e,a(e)}})}),e.addMenuItem("insertdatetime",{icon:"date",text:"Insert date/time",menu:u,context:"insert"})}); \ No newline at end of file
diff --git a/program/js/tinymce/plugins/layer/plugin.min.js b/program/js/tinymce/plugins/layer/plugin.min.js
new file mode 100644
index 000000000..f10029274
--- /dev/null
+++ b/program/js/tinymce/plugins/layer/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("layer",function(e){function t(e){do if(e.className&&-1!=e.className.indexOf("mceItemLayer"))return e;while(e=e.parentNode)}function o(t){var o=e.dom;tinymce.each(o.select("div,p",t),function(e){/^(absolute|relative|fixed)$/i.test(e.style.position)&&(e.hasVisual?o.addClass(e,"mceItemVisualAid"):o.removeClass(e,"mceItemVisualAid"),o.addClass(e,"mceItemLayer"))})}function d(o){var d,n,a=[],i=t(e.selection.getNode()),s=-1,l=-1;for(n=[],tinymce.walk(e.getBody(),function(e){1==e.nodeType&&/^(absolute|relative|static)$/i.test(e.style.position)&&n.push(e)},"childNodes"),d=0;d<n.length;d++)a[d]=n[d].style.zIndex?parseInt(n[d].style.zIndex,10):0,0>s&&n[d]==i&&(s=d);if(0>o){for(d=0;d<a.length;d++)if(a[d]<a[s]){l=d;break}l>-1?(n[s].style.zIndex=a[l],n[l].style.zIndex=a[s]):a[s]>0&&(n[s].style.zIndex=a[s]-1)}else{for(d=0;d<a.length;d++)if(a[d]>a[s]){l=d;break}l>-1?(n[s].style.zIndex=a[l],n[l].style.zIndex=a[s]):n[s].style.zIndex=a[s]+1}e.execCommand("mceRepaint")}function n(){var t=e.dom,o=t.getPos(t.getParent(e.selection.getNode(),"*")),d=e.getBody();e.dom.add(d,"div",{style:{position:"absolute",left:o.x,top:o.y>20?o.y:20,width:100,height:100},"class":"mceItemVisualAid mceItemLayer"},e.selection.getContent()||e.getLang("layer.content")),tinymce.Env.ie&&t.setHTML(d,d.innerHTML)}function a(){var o=t(e.selection.getNode());o||(o=e.dom.getParent(e.selection.getNode(),"DIV,P,IMG")),o&&("absolute"==o.style.position.toLowerCase()?(e.dom.setStyles(o,{position:"",left:"",top:"",width:"",height:""}),e.dom.removeClass(o,"mceItemVisualAid"),e.dom.removeClass(o,"mceItemLayer")):(o.style.left||(o.style.left="20px"),o.style.top||(o.style.top="20px"),o.style.width||(o.style.width=o.width?o.width+"px":"100px"),o.style.height||(o.style.height=o.height?o.height+"px":"100px"),o.style.position="absolute",e.dom.setAttrib(o,"data-mce-style",""),e.addVisual(e.getBody())),e.execCommand("mceRepaint"),e.nodeChanged())}e.addCommand("mceInsertLayer",n),e.addCommand("mceMoveForward",function(){d(1)}),e.addCommand("mceMoveBackward",function(){d(-1)}),e.addCommand("mceMakeAbsolute",function(){a()}),e.addButton("moveforward",{title:"layer.forward_desc",cmd:"mceMoveForward"}),e.addButton("movebackward",{title:"layer.backward_desc",cmd:"mceMoveBackward"}),e.addButton("absolute",{title:"layer.absolute_desc",cmd:"mceMakeAbsolute"}),e.addButton("insertlayer",{title:"layer.insertlayer_desc",cmd:"mceInsertLayer"}),e.on("init",function(){tinymce.Env.ie&&e.getDoc().execCommand("2D-Position",!1,!0)}),e.on("mouseup",function(o){var d=t(o.target);d&&e.dom.setAttrib(d,"data-mce-style","")}),e.on("mousedown",function(o){var d,n=o.target,a=e.getDoc();tinymce.Env.gecko&&(t(n)?"on"!==a.designMode&&(a.designMode="on",n=a.body,d=n.parentNode,d.removeChild(n),d.appendChild(n)):"on"==a.designMode&&(a.designMode="off"))}),e.on("NodeChange",o)}); \ No newline at end of file
diff --git a/program/js/tinymce/plugins/legacyoutput/plugin.min.js b/program/js/tinymce/plugins/legacyoutput/plugin.min.js
new file mode 100644
index 000000000..f2002165b
--- /dev/null
+++ b/program/js/tinymce/plugins/legacyoutput/plugin.min.js
@@ -0,0 +1 @@
+!function(e){e.on("AddEditor",function(e){e.editor.settings.inline_styles=!1}),e.PluginManager.add("legacyoutput",function(t,n,i){t.on("init",function(){var n="p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img",i=e.explode(t.settings.font_size_style_values),a=t.schema;t.formatter.register({alignleft:{selector:n,attributes:{align:"left"}},aligncenter:{selector:n,attributes:{align:"center"}},alignright:{selector:n,attributes:{align:"right"}},alignjustify:{selector:n,attributes:{align:"justify"}},bold:[{inline:"b",remove:"all"},{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}}],italic:[{inline:"i",remove:"all"},{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}}],underline:[{inline:"u",remove:"all"},{inline:"span",styles:{textDecoration:"underline"},exact:!0}],strikethrough:[{inline:"strike",remove:"all"},{inline:"span",styles:{textDecoration:"line-through"},exact:!0}],fontname:{inline:"font",attributes:{face:"%value"}},fontsize:{inline:"font",attributes:{size:function(t){return e.inArray(i,t.value)+1}}},forecolor:{inline:"font",attributes:{color:"%value"}},hilitecolor:{inline:"font",styles:{backgroundColor:"%value"}}}),e.each("b,i,u,strike".split(","),function(e){a.addValidElements(e+"[*]")}),a.getElementRule("font")||a.addValidElements("font[face|size|color|style]"),e.each(n.split(","),function(e){var t=a.getElementRule(e);t&&(t.attributes.align||(t.attributes.align={},t.attributesOrder.push("align")))})}),t.addButton("fontsizeselect",function(){var e=[],n="8pt=1 10pt=2 12pt=3 14pt=4 18pt=5 24pt=6 36pt=7",i=t.settings.fontsize_formats||n;return t.$.each(i.split(" "),function(t,n){var i=n,a=n,o=n.split("=");o.length>1&&(i=o[0],a=o[1]),e.push({text:i,value:a})}),{type:"listbox",text:"Font Sizes",tooltip:"Font Sizes",values:e,fixedWidth:!0,onPostRender:function(){var e=this;t.on("NodeChange",function(){var n;n=t.dom.getParent(t.selection.getNode(),"font"),e.value(n?n.size:"")})},onclick:function(e){e.control.settings.value&&t.execCommand("FontSize",!1,e.control.settings.value)}}}),t.addButton("fontselect",function(){function e(e){e=e.replace(/;$/,"").split(";");for(var t=e.length;t--;)e[t]=e[t].split("=");return e}var n="Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",a=[],o=e(t.settings.font_formats||n);return i.each(o,function(e,t){a.push({text:{raw:t[0]},value:t[1],textStyle:-1==t[1].indexOf("dings")?"font-family:"+t[1]:""})}),{type:"listbox",text:"Font Family",tooltip:"Font Family",values:a,fixedWidth:!0,onPostRender:function(){var e=this;t.on("NodeChange",function(){var n;n=t.dom.getParent(t.selection.getNode(),"font"),e.value(n?n.face:"")})},onselect:function(e){e.control.settings.value&&t.execCommand("FontName",!1,e.control.settings.value)}}})})}(tinymce); \ No newline at end of file
diff --git a/program/js/tinymce/plugins/link/plugin.min.js b/program/js/tinymce/plugins/link/plugin.min.js
new file mode 100644
index 000000000..703d61617
--- /dev/null
+++ b/program/js/tinymce/plugins/link/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("link",function(t){function e(e){return function(){var n=t.settings.link_list;"string"==typeof n?tinymce.util.XHR.send({url:n,success:function(t){e(tinymce.util.JSON.parse(t))}}):"function"==typeof n?n(e):e(n)}}function n(t,e,n){function i(t,n){return n=n||[],tinymce.each(t,function(t){var l={text:t.text||t.title};t.menu?l.menu=i(t.menu):(l.value=t.value,e&&e(l)),n.push(l)}),n}return i(t,n||[])}function i(e){function i(t){var e=f.find("#text");(!e.value()||t.lastControl&&e.value()==t.lastControl.text())&&e.value(t.control.text()),f.find("#href").value(t.control.value())}function l(e){var n=[];return tinymce.each(t.dom.select("a:not([href])"),function(t){var i=t.name||t.id;i&&n.push({text:i,value:"#"+i,selected:-1!=e.indexOf("#"+i)})}),n.length?(n.unshift({text:"None",value:""}),{name:"anchor",type:"listbox",label:"Anchors",values:n,onselect:i}):void 0}function a(){!c&&0===y.text.length&&d&&this.parent().parent().find("#text")[0].value(this.value())}function o(e){var n=e.meta||{};x&&x.value(t.convertURL(this.value(),"href")),tinymce.each(e.meta,function(t,e){f.find("#"+e).value(t)}),n.text||a.call(this)}function r(t){var e=b.getContent();if(/</.test(e)&&(!/^<a [^>]+>[^<]+<\/a>$/.test(e)||-1==e.indexOf("href=")))return!1;if(t){var n,i=t.childNodes;if(0===i.length)return!1;for(n=i.length-1;n>=0;n--)if(3!=i[n].nodeType)return!1}return!0}var s,u,c,f,d,g,x,v,h,m,p,k,y={},b=t.selection,_=t.dom;s=b.getNode(),u=_.getParent(s,"a[href]"),d=r(),y.text=c=u?u.innerText||u.textContent:b.getContent({format:"text"}),y.href=u?_.getAttrib(u,"href"):"",(k=_.getAttrib(u,"target"))?y.target=k:t.settings.default_link_target&&(y.target=t.settings.default_link_target),(k=_.getAttrib(u,"rel"))&&(y.rel=k),(k=_.getAttrib(u,"class"))&&(y["class"]=k),(k=_.getAttrib(u,"title"))&&(y.title=k),d&&(g={name:"text",type:"textbox",size:40,label:"Text to display",onchange:function(){y.text=this.value()}}),e&&(x={type:"listbox",label:"Link list",values:n(e,function(e){e.value=t.convertURL(e.value||e.url,"href")},[{text:"None",value:""}]),onselect:i,value:t.convertURL(y.href,"href"),onPostRender:function(){x=this}}),t.settings.target_list!==!1&&(t.settings.target_list||(t.settings.target_list=[{text:"None",value:""},{text:"New window",value:"_blank"}]),h={name:"target",type:"listbox",label:"Target",values:n(t.settings.target_list)}),t.settings.rel_list&&(v={name:"rel",type:"listbox",label:"Rel",values:n(t.settings.rel_list)}),t.settings.link_class_list&&(m={name:"class",type:"listbox",label:"Class",values:n(t.settings.link_class_list,function(e){e.value&&(e.textStyle=function(){return t.formatter.getCssText({inline:"a",classes:[e.value]})})})}),t.settings.link_title!==!1&&(p={name:"title",type:"textbox",label:"Title",value:y.title}),f=t.windowManager.open({title:"Insert link",data:y,body:[{name:"href",type:"filepicker",filetype:"file",size:40,autofocus:!0,label:"Url",onchange:o,onkeyup:a},g,p,l(y.href),x,v,h,m],onSubmit:function(e){function n(e,n){var i=t.selection.getRng();window.setTimeout(function(){t.windowManager.confirm(e,function(e){t.selection.setRng(i),n(e)})},0)}function i(){var e={href:l,target:y.target?y.target:null,rel:y.rel?y.rel:null,"class":y["class"]?y["class"]:null,title:y.title?y.title:null};u?(t.focus(),d&&y.text!=c&&("innerText"in u?u.innerText=y.text:u.textContent=y.text),_.setAttribs(u,e),b.select(u),t.undoManager.add()):d?t.insertContent(_.createHTML("a",e,_.encode(y.text))):t.execCommand("mceInsertLink",!1,e)}var l;return y=tinymce.extend(y,e.data),(l=y.href)?l.indexOf("@")>0&&-1==l.indexOf("//")&&-1==l.indexOf("mailto:")?void n("The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",function(t){t&&(l="mailto:"+l),i()}):/^\s*www\./i.test(l)?void n("The URL you entered seems to be an external link. Do you want to add the required http:// prefix?",function(t){t&&(l="http://"+l),i()}):void i():void t.execCommand("unlink")}})}t.addButton("link",{icon:"link",tooltip:"Insert/edit link",shortcut:"Ctrl+K",onclick:e(i),stateSelector:"a[href]"}),t.addButton("unlink",{icon:"unlink",tooltip:"Remove link",cmd:"unlink",stateSelector:"a[href]"}),t.addShortcut("Ctrl+K","",e(i)),t.addCommand("mceLink",e(i)),this.showDialog=i,t.addMenuItem("link",{icon:"link",text:"Insert link",shortcut:"Ctrl+K",onclick:e(i),stateSelector:"a[href]",context:"insert",prependToContext:!0})}); \ No newline at end of file
diff --git a/program/js/tinymce/plugins/lists/plugin.min.js b/program/js/tinymce/plugins/lists/plugin.min.js
new file mode 100644
index 000000000..cf0e600dd
--- /dev/null
+++ b/program/js/tinymce/plugins/lists/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("lists",function(e){function t(e){return e&&/^(OL|UL|DL)$/.test(e.nodeName)}function n(e){return e.parentNode.firstChild==e}function r(e){return e.parentNode.lastChild==e}function a(t){return t&&!!e.schema.getTextBlockElements()[t.nodeName]}var o=this;e.on("init",function(){function i(e){function t(t){var r,a,o;a=e[t?"startContainer":"endContainer"],o=e[t?"startOffset":"endOffset"],1==a.nodeType&&(r=y.create("span",{"data-mce-type":"bookmark"}),a.hasChildNodes()?(o=Math.min(o,a.childNodes.length-1),t?a.insertBefore(r,a.childNodes[o]):y.insertAfter(r,a.childNodes[o])):a.appendChild(r),a=r,o=0),n[t?"startContainer":"endContainer"]=a,n[t?"startOffset":"endOffset"]=o}var n={};return t(!0),e.collapsed||t(),n}function d(e){function t(t){function n(e){for(var t=e.parentNode.firstChild,n=0;t;){if(t==e)return n;(1!=t.nodeType||"bookmark"!=t.getAttribute("data-mce-type"))&&n++,t=t.nextSibling}return-1}var r,a,o;r=o=e[t?"startContainer":"endContainer"],a=e[t?"startOffset":"endOffset"],r&&(1==r.nodeType&&(a=n(r),r=r.parentNode,y.remove(o)),e[t?"startContainer":"endContainer"]=r,e[t?"startOffset":"endOffset"]=a)}t(!0),t();var n=y.createRng();n.setStart(e.startContainer,e.startOffset),e.endContainer&&n.setEnd(e.endContainer,e.endOffset),k.setRng(n)}function s(t,n){var r,a,o,i=y.createFragment(),d=e.schema.getBlockElements();if(e.settings.forced_root_block&&(n=n||e.settings.forced_root_block),n&&(a=y.create(n),a.tagName===e.settings.forced_root_block&&y.setAttribs(a,e.settings.forced_root_block_attrs),i.appendChild(a)),t)for(;r=t.firstChild;){var s=r.nodeName;o||"SPAN"==s&&"bookmark"==r.getAttribute("data-mce-type")||(o=!0),d[s]?(i.appendChild(r),a=null):n?(a||(a=y.create(n),i.appendChild(a)),a.appendChild(r)):i.appendChild(r)}return e.settings.forced_root_block?o||tinymce.Env.ie&&!(tinymce.Env.ie>10)||a.appendChild(y.create("br",{"data-mce-bogus":"1"})):i.appendChild(y.create("br")),i}function f(){return tinymce.grep(k.getSelectedBlocks(),function(e){return/^(LI|DT|DD)$/.test(e.nodeName)})}function l(e,t,n){var r,a,o=y.select('span[data-mce-type="bookmark"]',e);n=n||s(t),r=y.createRng(),r.setStartAfter(t),r.setEndAfter(e),a=r.extractContents(),y.isEmpty(a)||y.insertAfter(a,e),y.insertAfter(n,e),y.isEmpty(t.parentNode)&&(tinymce.each(o,function(e){t.parentNode.parentNode.insertBefore(e,t.parentNode)}),y.remove(t.parentNode)),y.remove(t)}function c(e){var n,r;if(n=e.nextSibling,n&&t(n)&&n.nodeName==e.nodeName){for(;r=n.firstChild;)e.appendChild(r);y.remove(n)}if(n=e.previousSibling,n&&t(n)&&n.nodeName==e.nodeName){for(;r=n.firstChild;)e.insertBefore(r,e.firstChild);y.remove(n)}}function p(e){tinymce.each(tinymce.grep(y.select("ol,ul",e)),function(e){var n,r=e.parentNode;"LI"==r.nodeName&&r.firstChild==e&&(n=r.previousSibling,n&&"LI"==n.nodeName&&(n.appendChild(e),y.isEmpty(r)&&y.remove(r))),t(r)&&(n=r.previousSibling,n&&"LI"==n.nodeName&&n.appendChild(e))})}function m(e){function a(e){y.isEmpty(e)&&y.remove(e)}var o,i=e.parentNode,d=i.parentNode;return"DD"==e.nodeName?(y.rename(e,"DT"),!0):n(e)&&r(e)?("LI"==d.nodeName?(y.insertAfter(e,d),a(d),y.remove(i)):t(d)?y.remove(i,!0):(d.insertBefore(s(e),i),y.remove(i)),!0):n(e)?("LI"==d.nodeName?(y.insertAfter(e,d),e.appendChild(i),a(d)):t(d)?d.insertBefore(e,i):(d.insertBefore(s(e),i),y.remove(e)),!0):r(e)?("LI"==d.nodeName?y.insertAfter(e,d):t(d)?y.insertAfter(e,i):(y.insertAfter(s(e),i),y.remove(e)),!0):("LI"==d.nodeName?(i=d,o=s(e,"LI")):o=t(d)?s(e,"LI"):s(e),l(i,e,o),p(i.parentNode),!0)}function u(e){function n(n,r){var a;if(t(n)){for(;a=e.lastChild.firstChild;)r.appendChild(a);y.remove(n)}}var r,a;return"DT"==e.nodeName?(y.rename(e,"DD"),!0):(r=e.previousSibling,r&&t(r)?(r.appendChild(e),!0):r&&"LI"==r.nodeName&&t(r.lastChild)?(r.lastChild.appendChild(e),n(e.lastChild,r.lastChild),!0):(r=e.nextSibling,r&&t(r)?(r.insertBefore(e,r.firstChild),!0):r&&"LI"==r.nodeName&&t(e.lastChild)?!1:(r=e.previousSibling,r&&"LI"==r.nodeName?(a=y.create(e.parentNode.nodeName),r.appendChild(a),a.appendChild(e),n(e.lastChild,a),!0):!1)))}function h(){var t=f();if(t.length){for(var n=i(k.getRng(!0)),r=0;r<t.length&&(u(t[r])||0!==r);r++);return d(n),e.nodeChanged(),!0}}function v(){var t=f();if(t.length){var n,r,a=i(k.getRng(!0)),o=e.getBody();for(n=t.length;n--;)for(var s=t[n].parentNode;s&&s!=o;){for(r=t.length;r--;)if(t[r]===s){t.splice(n,1);break}s=s.parentNode}for(n=0;n<t.length&&(m(t[n])||0!==n);n++);return d(a),e.nodeChanged(),!0}}function C(n){function r(){function t(e){var t,n;for(t=o[e?"startContainer":"endContainer"],n=o[e?"startOffset":"endOffset"],1==t.nodeType&&(t=t.childNodes[Math.min(n,t.childNodes.length-1)]||t);t.parentNode!=i;){if(a(t))return t;if(/^(TD|TH)$/.test(t.parentNode.nodeName))return t;t=t.parentNode}return t}for(var n,r=[],i=e.getBody(),d=t(!0),s=t(),f=[],l=d;l&&(f.push(l),l!=s);l=l.nextSibling);return tinymce.each(f,function(e){if(a(e))return r.push(e),void(n=null);if(y.isBlock(e)||"BR"==e.nodeName)return"BR"==e.nodeName&&y.remove(e),void(n=null);var t=e.nextSibling;return tinymce.dom.BookmarkManager.isBookmarkNode(e)&&(a(t)||!t&&e.parentNode==i)?void(n=null):(n||(n=y.create("p"),e.parentNode.insertBefore(n,e),r.push(n)),void n.appendChild(e))}),r}var o=k.getRng(!0),s=i(o),f="LI";n=n.toUpperCase(),"DL"==n&&(f="DT"),tinymce.each(r(),function(e){var r,a;a=e.previousSibling,a&&t(a)&&a.nodeName==n?(r=a,e=y.rename(e,f),a.appendChild(e)):(r=y.create(n),e.parentNode.insertBefore(r,e),r.appendChild(e),e=y.rename(e,f)),c(r)}),d(s)}function g(){var n=i(k.getRng(!0)),r=e.getBody();tinymce.each(f(),function(e){var n,a;if(y.isEmpty(e))return void m(e);for(n=e;n&&n!=r;n=n.parentNode)t(n)&&(a=n);l(a,e)}),d(n)}function N(e){var t=y.getParent(k.getStart(),"OL,UL,DL");if(t)if(t.nodeName==e)g(e);else{var n=i(k.getRng(!0));c(y.rename(t,e)),d(n)}else C(e)}function L(t){return function(){var n=y.getParent(e.selection.getStart(),"UL,OL,DL");return n&&n.nodeName==t}}var y=e.dom,k=e.selection;o.backspaceDelete=function(e){function n(e,t){var n=e.startContainer,r=e.startOffset;if(3==n.nodeType&&(t?r<n.data.length:r>0))return n;for(var a=new tinymce.dom.TreeWalker(e.startContainer);n=a[t?"next":"prev"]();)if(3==n.nodeType&&n.data.length>0)return n}function r(e,n){var r,a,o=e.parentNode;for(t(n.lastChild)&&(a=n.lastChild),r=n.lastChild,r&&"BR"==r.nodeName&&e.hasChildNodes()&&y.remove(r);r=e.firstChild;)n.appendChild(r);a&&n.appendChild(a),y.remove(e),y.isEmpty(o)&&y.remove(o)}if(k.isCollapsed()){var a=y.getParent(k.getStart(),"LI");if(a){var o=k.getRng(!0),s=y.getParent(n(o,e),"LI");if(s&&s!=a){var f=i(o);return e?r(s,a):r(a,s),d(f),!0}if(!s&&!e&&g(a.parentNode.nodeName))return!0}}},e.addCommand("Indent",function(){return h()?void 0:!0}),e.addCommand("Outdent",function(){return v()?void 0:!0}),e.addCommand("InsertUnorderedList",function(){N("UL")}),e.addCommand("InsertOrderedList",function(){N("OL")}),e.addCommand("InsertDefinitionList",function(){N("DL")}),e.addQueryStateHandler("InsertUnorderedList",L("UL")),e.addQueryStateHandler("InsertOrderedList",L("OL")),e.addQueryStateHandler("InsertDefinitionList",L("DL")),e.on("keydown",function(t){9==t.keyCode&&e.dom.getParent(e.selection.getStart(),"LI,DT,DD")&&(t.preventDefault(),t.shiftKey?v():h())})}),e.addButton("indent",{icon:"indent",title:"Increase indent",cmd:"Indent",onPostRender:function(){var t=this;e.on("nodechange",function(){for(var r=e.selection.getSelectedBlocks(),a=!1,o=0,i=r.length;!a&&i>o;o++){var d=r[o].nodeName;a="LI"==d&&n(r[o])||"UL"==d||"OL"==d||"DD"==d}t.disabled(a)})}}),e.on("keydown",function(e){e.keyCode==tinymce.util.VK.BACKSPACE?o.backspaceDelete()&&e.preventDefault():e.keyCode==tinymce.util.VK.DELETE&&o.backspaceDelete(!0)&&e.preventDefault()})}); \ No newline at end of file
diff --git a/program/js/tinymce/plugins/media/moxieplayer.swf b/program/js/tinymce/plugins/media/moxieplayer.swf
new file mode 100644
index 000000000..19c771bea
--- /dev/null
+++ b/program/js/tinymce/plugins/media/moxieplayer.swf
Binary files differ
diff --git a/program/js/tinymce/plugins/media/plugin.min.js b/program/js/tinymce/plugins/media/plugin.min.js
new file mode 100644
index 000000000..f61509a9c
--- /dev/null
+++ b/program/js/tinymce/plugins/media/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("media",function(e,t){function i(e){return-1!=e.indexOf(".mp3")?"audio/mpeg":-1!=e.indexOf(".wav")?"audio/wav":-1!=e.indexOf(".mp4")?"video/mp4":-1!=e.indexOf(".webm")?"video/webm":-1!=e.indexOf(".ogg")?"video/ogg":-1!=e.indexOf(".swf")?"application/x-shockwave-flash":""}function r(t){var i=e.settings.media_scripts;if(i)for(var r=0;r<i.length;r++)if(-1!==t.indexOf(i[r].filter))return i[r]}function o(){function t(e){var t,i,a,c;t=r.find("#width")[0],i=r.find("#height")[0],a=t.value(),c=i.value(),r.find("#constrain")[0].checked()&&o&&m&&a&&c&&(e.control==t?(c=Math.round(a/o*c),i.value(c)):(a=Math.round(c/m*a),t.value(a))),o=a,m=c}function i(){u=n(this.value()),this.parent().parent().fromJSON(u)}var r,o,m,u,l=[{name:"source1",type:"filepicker",filetype:"media",size:40,autofocus:!0,label:"Source",onchange:function(e){tinymce.each(e.meta,function(e,t){r.find("#"+t).value(e)})}}];e.settings.media_alt_source!==!1&&l.push({name:"source2",type:"filepicker",filetype:"media",size:40,label:"Alternative source"}),e.settings.media_poster!==!1&&l.push({name:"poster",type:"filepicker",filetype:"image",size:40,label:"Poster"}),e.settings.media_dimensions!==!1&&l.push({type:"container",label:"Dimensions",layout:"flex",align:"center",spacing:5,items:[{name:"width",type:"textbox",maxLength:3,size:3,onchange:t},{type:"label",text:"x"},{name:"height",type:"textbox",maxLength:3,size:3,onchange:t},{name:"constrain",type:"checkbox",checked:!0,text:"Constrain proportions"}]}),u=s(e.selection.getNode()),o=u.width,m=u.height;var h={id:"mcemediasource",type:"textbox",flex:1,name:"embed",value:a(),multiline:!0,label:"Source"};h[d]=i,r=e.windowManager.open({title:"Insert/edit video",data:u,bodyType:"tabpanel",body:[{title:"General",type:"form",onShowTab:function(){u=n(this.next().find("#embed").value()),this.fromJSON(u)},items:l},{title:"Embed",type:"panel",layout:"flex",direction:"column",align:"stretch",padding:10,spacing:10,onShowTab:function(){this.find("#embed").value(c(this.parent().toJSON()))},items:[{type:"label",text:"Paste your embed code below:",forId:"mcemediasource"},h]}],onSubmit:function(){var t,i,r,o;for(t=e.dom.select("img[data-mce-object]"),e.insertContent(c(this.toJSON())),i=e.dom.select("img[data-mce-object]"),r=0;r<t.length;r++)for(o=i.length-1;o>=0;o--)t[r]==i[o]&&i.splice(o,1);e.selection.select(i[0]),e.nodeChanged()}})}function a(){var t=e.selection.getNode();return t.getAttribute("data-mce-object")?e.selection.getContent():void 0}function c(o){var a="";if(!o.source1&&(tinymce.extend(o,n(o.embed)),!o.source1))return"";if(o.source2||(o.source2=""),o.poster||(o.poster=""),o.source1=e.convertURL(o.source1,"source"),o.source2=e.convertURL(o.source2,"source"),o.source1mime=i(o.source1),o.source2mime=i(o.source2),o.poster=e.convertURL(o.poster,"poster"),o.flashPlayerUrl=e.convertURL(t+"/moxieplayer.swf","movie"),tinymce.each(u,function(e){var t,i,r;if(t=e.regex.exec(o.source1)){for(r=e.url,i=0;t[i];i++)r=r.replace("$"+i,function(){return t[i]});o.source1=r,o.type=e.type,o.width=o.width||e.w,o.height=o.height||e.h}}),o.embed)a=m(o.embed,o,!0);else{var c=r(o.source1);c&&(o.type="script",o.width=c.width,o.height=c.height),o.width=o.width||300,o.height=o.height||150,tinymce.each(o,function(t,i){o[i]=e.dom.encode(t)}),"iframe"==o.type?a+='<iframe src="'+o.source1+'" width="'+o.width+'" height="'+o.height+'"></iframe>':"application/x-shockwave-flash"==o.source1mime?(a+='<object data="'+o.source1+'" width="'+o.width+'" height="'+o.height+'" type="application/x-shockwave-flash">',o.poster&&(a+='<img src="'+o.poster+'" width="'+o.width+'" height="'+o.height+'" />'),a+="</object>"):-1!=o.source1mime.indexOf("audio")?e.settings.audio_template_callback?a=e.settings.audio_template_callback(o):a+='<audio controls="controls" src="'+o.source1+'">'+(o.source2?'\n<source src="'+o.source2+'"'+(o.source2mime?' type="'+o.source2mime+'"':"")+" />\n":"")+"</audio>":"script"==o.type?a+='<script src="'+o.source1+'"></script>':a=e.settings.video_template_callback?e.settings.video_template_callback(o):'<video width="'+o.width+'" height="'+o.height+'"'+(o.poster?' poster="'+o.poster+'"':"")+' controls="controls">\n<source src="'+o.source1+'"'+(o.source1mime?' type="'+o.source1mime+'"':"")+" />\n"+(o.source2?'<source src="'+o.source2+'"'+(o.source2mime?' type="'+o.source2mime+'"':"")+" />\n":"")+"</video>"}return a}function n(e){var t={};return new tinymce.html.SaxParser({validate:!1,allow_conditional_comments:!0,special:"script,noscript",start:function(e,i){if(t.source1||"param"!=e||(t.source1=i.map.movie),("iframe"==e||"object"==e||"embed"==e||"video"==e||"audio"==e)&&(t.type||(t.type=e),t=tinymce.extend(i.map,t)),"script"==e){var o=r(i.map.src);if(!o)return;t={type:"script",source1:i.map.src,width:o.width,height:o.height}}"source"==e&&(t.source1?t.source2||(t.source2=i.map.src):t.source1=i.map.src),"img"!=e||t.poster||(t.poster=i.map.src)}}).parse(e),t.source1=t.source1||t.src||t.data,t.source2=t.source2||"",t.poster=t.poster||"",t}function s(t){return t.getAttribute("data-mce-object")?n(e.serializer.serialize(t,{selection:!0})):{}}function m(e,t,i){function r(e,t){var i,r,o,a;for(i in t)if(o=""+t[i],e.map[i])for(r=e.length;r--;)a=e[r],a.name==i&&(o?(e.map[i]=o,a.value=o):(delete e.map[i],e.splice(r,1)));else o&&(e.push({name:i,value:o}),e.map[i]=o)}var o,a=new tinymce.html.Writer,c=0;return new tinymce.html.SaxParser({validate:!1,allow_conditional_comments:!0,special:"script,noscript",comment:function(e){a.comment(e)},cdata:function(e){a.cdata(e)},text:function(e,t){a.text(e,t)},start:function(e,n,s){switch(e){case"video":case"object":case"embed":case"img":case"iframe":r(n,{width:t.width,height:t.height})}if(i)switch(e){case"video":r(n,{poster:t.poster,src:""}),t.source2&&r(n,{src:""});break;case"iframe":r(n,{src:t.source1});break;case"source":if(c++,2>=c&&(r(n,{src:t["source"+c],type:t["source"+c+"mime"]}),!t["source"+c]))return;break;case"img":if(!t.poster)return;o=!0}a.start(e,n,s)},end:function(e){if("video"==e&&i)for(var n=1;2>=n;n++)if(t["source"+n]){var s=[];s.map={},n>c&&(r(s,{src:t["source"+n],type:t["source"+n+"mime"]}),a.start("source",s,!0))}if(t.poster&&"object"==e&&i&&!o){var m=[];m.map={},r(m,{src:t.poster,width:t.width,height:t.height}),a.start("img",m,!0)}a.end(e)}},new tinymce.html.Schema({})).parse(e),a.getContent()}var u=[{regex:/youtu\.be\/([\w\-.]+)/,type:"iframe",w:425,h:350,url:"//www.youtube.com/embed/$1"},{regex:/youtube\.com(.+)v=([^&]+)/,type:"iframe",w:425,h:350,url:"//www.youtube.com/embed/$2"},{regex:/vimeo\.com\/([0-9]+)/,type:"iframe",w:425,h:350,url:"//player.vimeo.com/video/$1?title=0&byline=0&portrait=0&color=8dc7dc"},{regex:/vimeo\.com\/(.*)\/([0-9]+)/,type:"iframe",w:425,h:350,url:"//player.vimeo.com/video/$2?title=0&amp;byline=0"},{regex:/maps\.google\.([a-z]{2,3})\/maps\/(.+)msid=(.+)/,type:"iframe",w:425,h:350,url:'//maps.google.com/maps/ms?msid=$2&output=embed"'}],d=tinymce.Env.ie&&tinymce.Env.ie<=8?"onChange":"onInput";e.on("ResolveName",function(e){var t;1==e.target.nodeType&&(t=e.target.getAttribute("data-mce-object"))&&(e.name=t)}),e.on("preInit",function(){var t=e.schema.getSpecialElements();tinymce.each("video audio iframe object".split(" "),function(e){t[e]=new RegExp("</"+e+"[^>]*>","gi")});var i=e.schema.getBoolAttrs();tinymce.each("webkitallowfullscreen mozallowfullscreen allowfullscreen".split(" "),function(e){i[e]={}}),e.parser.addNodeFilter("iframe,video,audio,object,embed,script",function(t,i){for(var o,a,c,n,s,m,u,d,l=t.length;l--;)if(a=t[l],a.parent&&("script"!=a.name||(d=r(a.attr("src"))))){for(c=new tinymce.html.Node("img",1),c.shortEnded=!0,d&&(d.width&&a.attr("width",d.width.toString()),d.height&&a.attr("height",d.height.toString())),m=a.attributes,o=m.length;o--;)n=m[o].name,s=m[o].value,"width"!==n&&"height"!==n&&"style"!==n&&(("data"==n||"src"==n)&&(s=e.convertURL(s,n)),c.attr("data-mce-p-"+n,s));u=a.firstChild&&a.firstChild.value,u&&(c.attr("data-mce-html",escape(u)),c.firstChild=null),c.attr({width:a.attr("width")||"300",height:a.attr("height")||("audio"==i?"30":"150"),style:a.attr("style"),src:tinymce.Env.transparentSrc,"data-mce-object":i,"class":"mce-object mce-object-"+i}),a.replace(c)}}),e.serializer.addAttributeFilter("data-mce-object",function(e,t){for(var i,r,o,a,c,n,s,m=e.length;m--;)if(i=e[m],i.parent){for(s=i.attr(t),r=new tinymce.html.Node(s,1),"audio"!=s&&"script"!=s&&r.attr({width:i.attr("width"),height:i.attr("height")}),r.attr({style:i.attr("style")}),a=i.attributes,o=a.length;o--;){var u=a[o].name;0===u.indexOf("data-mce-p-")&&r.attr(u.substr(11),a[o].value)}"script"==s&&r.attr("type","text/javascript"),c=i.attr("data-mce-html"),c&&(n=new tinymce.html.Node("#text",3),n.raw=!0,n.value=unescape(c),r.append(n)),i.replace(r)}})}),e.on("ObjectSelected",function(e){var t=e.target.getAttribute("data-mce-object");("audio"==t||"script"==t)&&e.preventDefault()}),e.on("objectResized",function(e){var t,i=e.target;i.getAttribute("data-mce-object")&&(t=i.getAttribute("data-mce-html"),t&&(t=unescape(t),i.setAttribute("data-mce-html",escape(m(t,{width:e.width,height:e.height})))))}),e.addButton("media",{tooltip:"Insert/edit video",onclick:o,stateSelector:["img[data-mce-object=video]","img[data-mce-object=iframe]"]}),e.addMenuItem("media",{icon:"media",text:"Insert video",onclick:o,context:"insert",prependToContext:!0})}); \ No newline at end of file
diff --git a/program/js/tinymce/plugins/nonbreaking/plugin.min.js b/program/js/tinymce/plugins/nonbreaking/plugin.min.js
new file mode 100644
index 000000000..4bef21aae
--- /dev/null
+++ b/program/js/tinymce/plugins/nonbreaking/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("nonbreaking",function(n){var e=n.getParam("nonbreaking_force_tab");if(n.addCommand("mceNonBreaking",function(){n.insertContent(n.plugins.visualchars&&n.plugins.visualchars.state?'<span class="mce-nbsp">&nbsp;</span>':"&nbsp;"),n.dom.setAttrib(n.dom.select("span.mce-nbsp"),"data-mce-bogus","1")}),n.addButton("nonbreaking",{title:"Nonbreaking space",cmd:"mceNonBreaking"}),n.addMenuItem("nonbreaking",{text:"Nonbreaking space",cmd:"mceNonBreaking",context:"insert"}),e){var a=+e>1?+e:3;n.on("keydown",function(e){if(9==e.keyCode){if(e.shiftKey)return;e.preventDefault();for(var t=0;a>t;t++)n.execCommand("mceNonBreaking")}})}}); \ No newline at end of file
diff --git a/program/js/tinymce/plugins/noneditable/plugin.min.js b/program/js/tinymce/plugins/noneditable/plugin.min.js
new file mode 100644
index 000000000..aa642de8c
--- /dev/null
+++ b/program/js/tinymce/plugins/noneditable/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("noneditable",function(e){function t(e){var t;if(1===e.nodeType){if(t=e.getAttribute(u),t&&"inherit"!==t)return t;if(t=e.contentEditable,"inherit"!==t)return t}return null}function n(e){for(var n;e;){if(n=t(e))return"false"===n?e:null;e=e.parentNode}}function r(){function r(e){for(;e;){if(e.id===g)return e;e=e.parentNode}}function a(e){var t;if(e)for(t=new f(e,e),e=t.current();e;e=t.next())if(3===e.nodeType)return e}function i(n,r){var a,i;return"false"===t(n)&&u.isBlock(n)?void s.select(n):(i=u.createRng(),"true"===t(n)&&(n.firstChild||n.appendChild(e.getDoc().createTextNode(" ")),n=n.firstChild,r=!0),a=u.create("span",{id:g,"data-mce-bogus":!0},m),r?n.parentNode.insertBefore(a,n):u.insertAfter(a,n),i.setStart(a.firstChild,1),i.collapse(!0),s.setRng(i),a)}function o(e){var t,n,i,o;if(e)t=s.getRng(!0),t.setStartBefore(e),t.setEndBefore(e),n=a(e),n&&n.nodeValue.charAt(0)==m&&(n=n.deleteData(0,1)),u.remove(e,!0),s.setRng(t);else for(i=r(s.getStart());(e=u.get(g))&&e!==o;)i!==e&&(n=a(e),n&&n.nodeValue.charAt(0)==m&&(n=n.deleteData(0,1)),u.remove(e,!0)),o=e}function l(){function e(e,n){var r,a,i,o,l;if(r=d.startContainer,a=d.startOffset,3==r.nodeType){if(l=r.nodeValue.length,a>0&&l>a||(n?a==l:0===a))return}else{if(!(a<r.childNodes.length))return n?null:e;var u=!n&&a>0?a-1:a;r=r.childNodes[u],r.hasChildNodes()&&(r=r.firstChild)}for(i=new f(r,e);o=i[n?"prev":"next"]();){if(3===o.nodeType&&o.nodeValue.length>0)return;if("true"===t(o))return o}return e}var r,a,l,d,u;o(),l=s.isCollapsed(),r=n(s.getStart()),a=n(s.getEnd()),(r||a)&&(d=s.getRng(!0),l?(r=r||a,(u=e(r,!0))?i(u,!0):(u=e(r,!1))?i(u,!1):s.select(r)):(d=s.getRng(!0),r&&d.setStartBefore(r),a&&d.setEndAfter(a),s.setRng(d)))}function d(a){function i(e,t){for(;e=e[t?"previousSibling":"nextSibling"];)if(3!==e.nodeType||e.nodeValue.length>0)return e}function d(e,t){s.select(e),s.collapse(t)}function g(a){function i(e){for(var t=d;t;){if(t===e)return;t=t.parentNode}u.remove(e),l()}function o(){var r,o,l=e.schema.getNonEmptyElements();for(o=new tinymce.dom.TreeWalker(d,e.getBody());(r=a?o.prev():o.next())&&!l[r.nodeName.toLowerCase()]&&!(3===r.nodeType&&tinymce.trim(r.nodeValue).length>0);)if("false"===t(r))return i(r),!0;return n(r)?!0:!1}var f,d,c,g;if(s.isCollapsed()){if(f=s.getRng(!0),d=f.startContainer,c=f.startOffset,d=r(d)||d,g=n(d))return i(g),!1;if(3==d.nodeType&&(a?c>0:c<d.nodeValue.length))return!0;if(1==d.nodeType&&(d=d.childNodes[c]||d),o())return!1}return!0}var m,p,v,E,h=a.keyCode;if(v=s.getStart(),E=s.getEnd(),m=n(v)||n(E),m&&(112>h||h>124)&&h!=c.DELETE&&h!=c.BACKSPACE){if((tinymce.isMac?a.metaKey:a.ctrlKey)&&(67==h||88==h||86==h))return;if(a.preventDefault(),h==c.LEFT||h==c.RIGHT){var y=h==c.LEFT;if(e.dom.isBlock(m)){var T=y?m.previousSibling:m.nextSibling,C=new f(T,T),b=y?C.prev():C.next();d(b,!y)}else d(m,y)}}else if(h==c.LEFT||h==c.RIGHT||h==c.BACKSPACE||h==c.DELETE){if(p=r(v)){if(h==c.LEFT||h==c.BACKSPACE)if(m=i(p,!0),m&&"false"===t(m)){if(a.preventDefault(),h!=c.LEFT)return void u.remove(m);d(m,!0)}else o(p);if(h==c.RIGHT||h==c.DELETE)if(m=i(p),m&&"false"===t(m)){if(a.preventDefault(),h!=c.RIGHT)return void u.remove(m);d(m,!1)}else o(p)}if((h==c.BACKSPACE||h==c.DELETE)&&!g(h==c.BACKSPACE))return a.preventDefault(),!1}}var u=e.dom,s=e.selection,g="mce_noneditablecaret",m="";e.on("mousedown",function(n){var r=e.selection.getNode();"false"===t(r)&&r==n.target&&l()}),e.on("mouseup keyup",l),e.on("keydown",d)}function a(t){var n=l.length,r=t.content,a=tinymce.trim(o);if("raw"!=t.format){for(;n--;)r=r.replace(l[n],function(t){var n=arguments,i=n[n.length-2];return i>0&&'"'==r.charAt(i-1)?t:'<span class="'+a+'" data-mce-content="'+e.dom.encode(n[0])+'">'+e.dom.encode("string"==typeof n[1]?n[1]:n[0])+"</span>"});t.content=r}}var i,o,l,f=tinymce.dom.TreeWalker,d="contenteditable",u="data-mce-"+d,c=tinymce.util.VK;i=" "+tinymce.trim(e.getParam("noneditable_editable_class","mceEditable"))+" ",o=" "+tinymce.trim(e.getParam("noneditable_noneditable_class","mceNonEditable"))+" ",l=e.getParam("noneditable_regexp"),l&&!l.length&&(l=[l]),e.on("PreInit",function(){r(),l&&e.on("BeforeSetContent",a),e.parser.addAttributeFilter("class",function(e){for(var t,n,r=e.length;r--;)n=e[r],t=" "+n.attr("class")+" ",-1!==t.indexOf(i)?n.attr(u,"true"):-1!==t.indexOf(o)&&n.attr(u,"false")}),e.serializer.addAttributeFilter(u,function(e){for(var t,n=e.length;n--;)t=e[n],l&&t.attr("data-mce-content")?(t.name="#text",t.type=3,t.raw=!0,t.value=t.attr("data-mce-content")):(t.attr(d,null),t.attr(u,null))}),e.parser.addAttributeFilter(d,function(e){for(var t,n=e.length;n--;)t=e[n],t.attr(u,t.attr(d)),t.attr(d,null)})}),e.on("drop",function(e){n(e.target)&&e.preventDefault()})}); \ No newline at end of file
diff --git a/program/js/tinymce/plugins/pagebreak/plugin.min.js b/program/js/tinymce/plugins/pagebreak/plugin.min.js
new file mode 100644
index 000000000..e232c05d3
--- /dev/null
+++ b/program/js/tinymce/plugins/pagebreak/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("pagebreak",function(e){var a="mce-pagebreak",t=e.getParam("pagebreak_separator","<!-- pagebreak -->"),n=new RegExp(t.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g,function(e){return"\\"+e}),"gi"),r='<img src="'+tinymce.Env.transparentSrc+'" class="'+a+'" data-mce-resize="false" />';e.addCommand("mcePageBreak",function(){e.insertContent(e.settings.pagebreak_split_block?"<p>"+r+"</p>":r)}),e.addButton("pagebreak",{title:"Page break",cmd:"mcePageBreak"}),e.addMenuItem("pagebreak",{text:"Page break",icon:"pagebreak",cmd:"mcePageBreak",context:"insert"}),e.on("ResolveName",function(t){"IMG"==t.target.nodeName&&e.dom.hasClass(t.target,a)&&(t.name="pagebreak")}),e.on("click",function(t){t=t.target,"IMG"===t.nodeName&&e.dom.hasClass(t,a)&&e.selection.select(t)}),e.on("BeforeSetContent",function(e){e.content=e.content.replace(n,r)}),e.on("PreInit",function(){e.serializer.addNodeFilter("img",function(a){for(var n,r,c=a.length;c--;)if(n=a[c],r=n.attr("class"),r&&-1!==r.indexOf("mce-pagebreak")){var o=n.parent;if(e.schema.getBlockElements()[o.name]&&e.settings.pagebreak_split_block){o.type=3,o.value=t,o.raw=!0,n.remove();continue}n.type=3,n.value=t,n.raw=!0}})})}); \ No newline at end of file
diff --git a/program/js/tinymce/plugins/paste/plugin.min.js b/program/js/tinymce/plugins/paste/plugin.min.js
new file mode 100644
index 000000000..159f0cd8e
--- /dev/null
+++ b/program/js/tinymce/plugins/paste/plugin.min.js
@@ -0,0 +1 @@
+!function(e,t){"use strict";function n(e,t){for(var n,i=[],r=0;r<e.length;++r){if(n=s[e[r]]||a(e[r]),!n)throw"module definition dependecy not found: "+e[r];i.push(n)}t.apply(null,i)}function i(e,i,r){if("string"!=typeof e)throw"invalid module definition, module id must be defined and be a string";if(i===t)throw"invalid module definition, dependencies must be specified";if(r===t)throw"invalid module definition, definition function must be specified";n(i,function(){s[e]=r.apply(null,arguments)})}function r(e){return!!s[e]}function a(t){for(var n=e,i=t.split(/[.\/]/),r=0;r<i.length;++r){if(!n[i[r]])return;n=n[i[r]]}return n}function o(n){for(var i=0;i<n.length;i++){for(var r=e,a=n[i],o=a.split(/[.\/]/),l=0;l<o.length-1;++l)r[o[l]]===t&&(r[o[l]]={}),r=r[o[l]];r[o[o.length-1]]=s[a]}}var s={},l="tinymce/pasteplugin/Utils",c="tinymce/util/Tools",u="tinymce/html/DomParser",d="tinymce/html/Schema",f="tinymce/pasteplugin/Clipboard",p="tinymce/Env",m="tinymce/util/VK",g="tinymce/pasteplugin/WordFilter",v="tinymce/html/Serializer",h="tinymce/html/Node",b="tinymce/pasteplugin/Quirks",y="tinymce/pasteplugin/Plugin",w="tinymce/PluginManager";i(l,[c,u,d],function(e,t,n){function i(t,n){return e.each(n,function(e){t=e.constructor==RegExp?t.replace(e,""):t.replace(e[0],e[1])}),t}function r(r){function a(e){var t=e.name,n=e;if("br"===t)return void(l+="\n");if(c[t]&&(l+=" "),u[t])return void(l+=" ");if(3==e.type&&(l+=e.value),!e.shortEnded&&(e=e.firstChild))do a(e);while(e=e.next);d[t]&&n.next&&(l+="\n","p"==t&&(l+="\n"))}var o=new n,s=new t({},o),l="",c=o.getShortEndedElements(),u=e.makeMap("script noscript style textarea video audio iframe object"," "),d=o.getBlockElements();return r=i(r,[/<!\[[^\]]+\]>/g]),a(s.parse(r)),l}function a(e){function t(e,t,n){return t||n?"\xa0":" "}return e=i(e,[/^[\s\S]*<body[^>]*>\s*|\s*<\/body[^>]*>[\s\S]*$/g,/<!--StartFragment-->|<!--EndFragment-->/g,[/( ?)<span class="Apple-converted-space">\u00a0<\/span>( ?)/g,t],/<br>$/i])}return{filter:i,innerText:r,trimHtml:a}}),i(f,[p,m,l],function(e,t,n){return function(i){function r(e){var t,n=i.dom;if(t=i.fire("BeforePastePreProcess",{content:e}),t=i.fire("PastePreProcess",t),e=t.content,!t.isDefaultPrevented()){if(i.hasEventListeners("PastePostProcess")&&!t.isDefaultPrevented()){var r=n.add(i.getBody(),"div",{style:"display:none"},e);t=i.fire("PastePostProcess",{node:r}),n.remove(r),e=t.node.innerHTML}t.isDefaultPrevented()||i.insertContent(e,{merge:i.settings.paste_merge_formats!==!1})}}function a(e){e=i.dom.encode(e).replace(/\r\n/g,"\n");var t=i.dom.getParent(i.selection.getStart(),i.dom.isBlock),a=i.settings.forced_root_block,o;a&&(o=i.dom.createHTML(a,i.settings.forced_root_block_attrs),o=o.substr(0,o.length-3)+">"),t&&/^(PRE|DIV)$/.test(t.nodeName)||!a?e=n.filter(e,[[/\n/g,"<br>"]]):(e=n.filter(e,[[/\n\n/g,"</p>"+o],[/^(.*<\/p>)(<p>)$/,o+"$1"],[/\n/g,"<br />"]]),-1!=e.indexOf("<p>")&&(e=o+e)),r(e)}function o(){var t=i.dom,n=i.getBody(),r=i.dom.getViewPort(i.getWin()),a=r.y,o=20,s;if(y=i.selection.getRng(),i.inline&&(s=i.selection.getScrollContainer(),s&&s.scrollTop>0&&(a=s.scrollTop)),y.getClientRects){var l=y.getClientRects();if(l.length)o=a+(l[0].top-t.getPos(n).y);else{o=a;var c=y.startContainer;c&&(3==c.nodeType&&c.parentNode!=n&&(c=c.parentNode),1==c.nodeType&&(o=t.getPos(c,s||n).y))}}b=t.add(i.getBody(),"div",{id:"mcepastebin",contentEditable:!0,"data-mce-bogus":"all",style:"position: absolute; top: "+o+"px;width: 10px; height: 10px; overflow: hidden; opacity: 0"},P),(e.ie||e.gecko)&&t.setStyle(b,"left","rtl"==t.getStyle(n,"direction",!0)?65535:-65535),t.bind(b,"beforedeactivate focusin focusout",function(e){e.stopPropagation()}),b.focus(),i.selection.select(b,!0)}function s(){if(b){for(var e;e=i.dom.get("mcepastebin");)i.dom.remove(e),i.dom.unbind(e);y&&i.selection.setRng(y)}b=y=null}function l(){var e="",t,n,r,a;for(t=i.dom.select("div[id=mcepastebin]"),n=0;n<t.length;n++)r=t[n],r.firstChild&&"mcepastebin"==r.firstChild.id&&(r=r.firstChild),a=r.innerHTML,e!=P&&(e+=a);return e}function c(e){var t={};if(e){if(e.getData){var n=e.getData("Text");n&&n.length>0&&(t["text/plain"]=n)}if(e.types)for(var i=0;i<e.types.length;i++){var r=e.types[i];t[r]=e.getData(r)}}return t}function u(e){return c(e.clipboardData||i.getDoc().dataTransfer)}function d(e,t){function n(n){function a(){t&&(i.selection.setRng(t),t=null),r('<img src="'+l.result+'">')}var o,s,l;if(n)for(o=0;o<n.length;o++)if(s=n[o],/^image\/(jpeg|png|gif)$/.test(s.type))return l=new FileReader,l.onload=a,l.readAsDataURL(s.getAsFile?s.getAsFile():s),e.preventDefault(),!0}var a=e.clipboardData||e.dataTransfer;return i.settings.paste_data_images&&a?n(a.items)||n(a.files):void 0}function f(e){var t=e.clipboardData;return-1!=navigator.userAgent.indexOf("Android")&&t&&t.items&&0===t.items.length}function p(e){var t=i.getDoc(),n,r;if(t.caretPositionFromPoint)r=t.caretPositionFromPoint(e.clientX,e.clientY),n=t.createRange(),n.setStart(r.offsetNode,r.offset),n.collapse(!0);else if(t.caretRangeFromPoint)n=t.caretRangeFromPoint(e.clientX,e.clientY);else if(t.body.createTextRange){n=t.body.createTextRange();try{n.moveToPoint(e.clientX,e.clientY),n.collapse(!0)}catch(a){n.collapse(e.clientY<t.body.clientHeight)}}return n}function m(e,t){return t in e&&e[t].length>0}function g(e){return t.metaKeyPressed(e)&&86==e.keyCode||e.shiftKey&&45==e.keyCode}function v(){i.on("keydown",function(t){function n(e){g(e)&&!e.isDefaultPrevented()&&s()}if(g(t)&&!t.isDefaultPrevented()){if(_=t.shiftKey&&86==t.keyCode,_&&e.webkit&&-1!=navigator.userAgent.indexOf("Version/"))return;if(t.stopImmediatePropagation(),w=(new Date).getTime(),e.ie&&_)return t.preventDefault(),void i.fire("paste",{ieFake:!0});s(),o(),i.once("keyup",n),i.once("paste",function(){i.off("keyup",n)})}}),i.on("paste",function(t){var c=u(t),p=(new Date).getTime()-w<1e3,g="text"==h.pasteFormat||_;return _=!1,t.isDefaultPrevented()||f(t)?void s():d(t)?void s():(p||t.preventDefault(),!e.ie||p&&!t.ieFake||(o(),i.dom.bind(b,"paste",function(e){e.stopPropagation()}),i.getDoc().execCommand("Paste",!1,null),c["text/html"]=l()),void setTimeout(function(){var e;return m(c,"text/html")?e=c["text/html"]:(e=l(),e==P&&(g=!0)),e=n.trimHtml(e),b&&b.firstChild&&"mcepastebin"===b.firstChild.id&&(g=!0),s(),e.length||(g=!0),g&&(e=m(c,"text/plain")&&-1==e.indexOf("</p>")?c["text/plain"]:n.innerText(e)),e==P?void(p||i.windowManager.alert("Please use Ctrl+V/Cmd+V keyboard shortcuts to paste contents.")):void(g?a(e):r(e))},0))}),i.on("dragstart dragend",function(e){x="dragstart"==e.type}),i.on("drop",function(e){var t=p(e);if(!e.isDefaultPrevented()&&!x&&!d(e,t)&&t&&i.settings.paste_filter_drop!==!1){var o=c(e.dataTransfer),s=o["mce-internal"]||o["text/html"]||o["text/plain"];s&&(e.preventDefault(),i.undoManager.transact(function(){o["mce-internal"]&&i.execCommand("Delete"),i.selection.setRng(t),s=n.trimHtml(s),o["text/html"]?r(s):a(s)}))}}),i.on("dragover dragend",function(e){var t,n=e.dataTransfer;if(i.settings.paste_data_images&&n)for(t=0;t<n.types.length;t++)if("Files"==n.types[t])return e.preventDefault(),!1})}var h=this,b,y,w=0,x=!1,P="%MCEPASTEBIN%",_;h.pasteHtml=r,h.pasteText=a,i.on("preInit",function(){v(),i.parser.addNodeFilter("img",function(t){if(!i.settings.paste_data_images)for(var n=t.length;n--;){var r=t[n].attributes.map.src;r&&/^(data:image|webkit\-fake\-url)/.test(r)&&(t[n].attr("data-mce-object")||r===e.transparentSrc||t[n].remove())}})})}}),i(g,[c,u,d,v,h,l],function(e,t,n,i,r,a){function o(e){return/<font face="Times New Roman"|class="?Mso|style="[^"]*\bmso-|style='[^'']*\bmso-|w:WordDocument/i.test(e)||/class="OutlineElement/.test(e)||/id="?docs\-internal\-guid\-/.test(e)}function s(t){var n,i;return i=[/^[IVXLMCD]{1,2}\.[ \u00a0]/,/^[ivxlmcd]{1,2}\.[ \u00a0]/,/^[a-z]{1,2}[\.\)][ \u00a0]/,/^[A-Z]{1,2}[\.\)][ \u00a0]/,/^[0-9]+\.[ \u00a0]/,/^[\u3007\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d]+\.[ \u00a0]/,/^[\u58f1\u5f10\u53c2\u56db\u4f0d\u516d\u4e03\u516b\u4e5d\u62fe]+\.[ \u00a0]/],t=t.replace(/^[\u00a0 ]+/,""),e.each(i,function(e){return e.test(t)?(n=!0,!1):void 0}),n}function l(e){return/^[\s\u00a0]*[\u2022\u00b7\u00a7\u00d8\u25CF]\s*/.test(e)}function c(c){var u=c.settings;c.on("BeforePastePreProcess",function(d){function f(e){function t(e){var n="";if(3===e.type)return e.value;if(e=e.firstChild)do n+=t(e);while(e=e.next);return n}function n(e,t){if(3===e.type&&t.test(e.value))return e.value=e.value.replace(t,""),!1;if(e=e.firstChild)do if(!n(e,t))return!1;while(e=e.next);return!0}function i(e){if(e._listIgnore)return void e.remove();if(e=e.firstChild)do i(e);while(e=e.next)}function a(e,t,a){var s=e._listLevel||u;s!=u&&(u>s?o&&(o=o.parent.parent):(c=o,o=null)),o&&o.name==t?o.append(e):(c=c||o,o=new r(t,1),a>1&&o.attr("start",""+a),e.wrap(o)),e.name="li",s>u&&c&&c.lastChild.append(o),u=s,i(e),n(e,/^\u00a0+/),n(e,/^\s*([\u2022\u00b7\u00a7\u00d8\u25CF]|\w+\.)/),n(e,/^\u00a0+/)}for(var o,c,u=1,d=e.getAll("p"),f=0;f<d.length;f++)if(e=d[f],"p"==e.name&&e.firstChild){var p=t(e);if(l(p)){a(e,"ul");continue}if(s(p)){var m=/([0-9])\./.exec(p),g=1;m&&(g=parseInt(m[1],10)),a(e,"ol",g);continue}if(e._listLevel){a(e,"ul",1);continue}o=null}}function p(t,n){var i={},a,o=c.dom.parseStyle(n);return e.each(o,function(e,r){switch(r){case"mso-list":a=/\w+ \w+([0-9]+)/i.exec(n),a&&(t._listLevel=parseInt(a[1],10)),/Ignore/i.test(e)&&t.firstChild&&(t._listIgnore=!0,t.firstChild._listIgnore=!0);break;case"horiz-align":r="text-align";break;case"vert-align":r="vertical-align";break;case"font-color":case"mso-foreground":r="color";break;case"mso-background":case"mso-highlight":r="background";break;case"font-weight":case"font-style":return void("normal"!=e&&(i[r]=e));case"mso-element":if(/^(comment|comment-list)$/i.test(e))return void t.remove()}return 0===r.indexOf("mso-comment")?void t.remove():void(0!==r.indexOf("mso-")&&("all"==g||v&&v[r])&&(i[r]=e))}),/(bold)/i.test(i["font-weight"])&&(delete i["font-weight"],t.wrap(new r("b",1))),/(italic)/i.test(i["font-style"])&&(delete i["font-style"],t.wrap(new r("i",1))),i=c.dom.serializeStyle(i,t.name),i?i:null}var m=d.content,g,v;if(g=u.paste_retain_style_properties,g&&(v=e.makeMap(g.split(/[, ]/))),u.paste_enable_default_filters!==!1&&o(d.content)){d.wordContent=!0,m=a.filter(m,[/<!--[\s\S]+?-->/gi,/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,[/<(\/?)s>/gi,"<$1strike>"],[/&nbsp;/gi,"\xa0"],[/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,function(e,t){return t.length>0?t.replace(/./," ").slice(Math.floor(t.length/2)).split("").join("\xa0"):""}]]);var h=u.paste_word_valid_elements;h||(h="-strong/b,-em/i,-span,-p,-ol,-ul,-li,-h1,-h2,-h3,-h4,-h5,-h6,-p/div,-table[width],-tr,-td[colspan|rowspan|width],-th,-thead,-tfoot,-tbody,-a[href|name],sub,sup,strike,br,del");var b=new n({valid_elements:h,valid_children:"-li[p]"});e.each(b.elements,function(e){e.attributes["class"]||(e.attributes["class"]={},e.attributesOrder.push("class")),e.attributes.style||(e.attributes.style={},e.attributesOrder.push("style"))});var y=new t({},b);y.addAttributeFilter("style",function(e){for(var t=e.length,n;t--;)n=e[t],n.attr("style",p(n,n.attr("style"))),"span"==n.name&&n.parent&&!n.attributes.length&&n.unwrap()}),y.addAttributeFilter("class",function(e){for(var t=e.length,n,i;t--;)n=e[t],i=n.attr("class"),/^(MsoCommentReference|MsoCommentText|msoDel|MsoCaption)$/i.test(i)&&n.remove(),n.attr("class",null)}),y.addNodeFilter("del",function(e){for(var t=e.length;t--;)e[t].remove()}),y.addNodeFilter("a",function(e){for(var t=e.length,n,i,r;t--;)if(n=e[t],i=n.attr("href"),r=n.attr("name"),i&&-1!=i.indexOf("#_msocom_"))n.remove();else if(i&&0===i.indexOf("file://")&&(i=i.split("#")[1],i&&(i="#"+i)),i||r){if(r&&!/^_?(?:toc|edn|ftn)/i.test(r)){n.unwrap();continue}n.attr({href:i,name:r})}else n.unwrap()});var w=y.parse(m);f(w),d.content=new i({},b).serialize(w)}})}return c.isWordContent=o,c}),i(b,[p,c,g,l],function(e,t,n,i){return function(r){function a(e){r.on("BeforePastePreProcess",function(t){t.content=e(t.content)})}function o(e){if(!n.isWordContent(e))return e;var a=[];t.each(r.schema.getBlockElements(),function(e,t){a.push(t)});var o=new RegExp("(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*(<\\/?("+a.join("|")+")[^>]*>)(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*","g");return e=i.filter(e,[[o,"$1"]]),e=i.filter(e,[[/<br><br>/g,"<BR><BR>"],[/<br>/g," "],[/<BR><BR>/g,"<br>"]])}function s(e){if(n.isWordContent(e))return e;var t=r.settings.paste_webkit_styles;if(r.settings.paste_remove_styles_if_webkit===!1||"all"==t)return e;if(t&&(t=t.split(/[, ]/)),t){var i=r.dom,a=r.selection.getNode();e=e.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,function(e,n,r,o){var s=i.parseStyle(r,"span"),l={};if("none"===t)return n+o;for(var c=0;c<t.length;c++){var u=s[t[c]],d=i.getStyle(a,t[c],!0);/color/.test(t[c])&&(u=i.toHex(u),d=i.toHex(d)),d!=u&&(l[t[c]]=u)}return l=i.serializeStyle(l,"span"),l?n+' style="'+l+'"'+o:n+o})}else e=e.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,"$1$3");return e=e.replace(/(<[^>]+) data-mce-style="([^"]+)"([^>]*>)/gi,function(e,t,n,i){return t+' style="'+n+'"'+i})}e.webkit&&a(s),e.ie&&a(o)}}),i(y,[w,f,g,b],function(e,t,n,i){var r;e.add("paste",function(e){function a(){"text"==s.pasteFormat?(this.active(!1),s.pasteFormat="html"):(s.pasteFormat="text",this.active(!0),r||(e.windowManager.alert("Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off."),r=!0))}var o=this,s,l=e.settings;o.clipboard=s=new t(e),o.quirks=new i(e),o.wordFilter=new n(e),e.settings.paste_as_text&&(o.clipboard.pasteFormat="text"),l.paste_preprocess&&e.on("PastePreProcess",function(e){l.paste_preprocess.call(o,o,e)}),l.paste_postprocess&&e.on("PastePostProcess",function(e){l.paste_postprocess.call(o,o,e)}),e.addCommand("mceInsertClipboardContent",function(e,t){t.content&&o.clipboard.pasteHtml(t.content),t.text&&o.clipboard.pasteText(t.text)}),e.paste_block_drop&&e.on("dragend dragover draggesture dragdrop drop drag",function(e){e.preventDefault(),e.stopPropagation()}),e.settings.paste_data_images||e.on("drop",function(e){var t=e.dataTransfer;t&&t.files&&t.files.length>0&&e.preventDefault()}),e.addButton("pastetext",{icon:"pastetext",tooltip:"Paste as text",onclick:a,active:"text"==o.clipboard.pasteFormat}),e.addMenuItem("pastetext",{text:"Paste as text",selectable:!0,active:s.pasteFormat,onclick:a})})}),o([l,g])}(this); \ No newline at end of file
diff --git a/program/js/tinymce/plugins/preview/plugin.min.js b/program/js/tinymce/plugins/preview/plugin.min.js
new file mode 100644
index 000000000..23e70acb1
--- /dev/null
+++ b/program/js/tinymce/plugins/preview/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("preview",function(e){var t=e.settings,i=!tinymce.Env.ie;e.addCommand("mcePreview",function(){e.windowManager.open({title:"Preview",width:parseInt(e.getParam("plugin_preview_width","650"),10),height:parseInt(e.getParam("plugin_preview_height","500"),10),html:'<iframe src="javascript:\'\'" frameborder="0"'+(i?' sandbox="allow-scripts"':"")+"></iframe>",buttons:{text:"Close",onclick:function(){this.parent().parent().close()}},onPostRender:function(){var n,a="";a+='<base href="'+e.documentBaseURI.getURI()+'">',tinymce.each(e.contentCSS,function(t){a+='<link type="text/css" rel="stylesheet" href="'+e.documentBaseURI.toAbsolute(t)+'">'});var r=t.body_id||"tinymce";-1!=r.indexOf("=")&&(r=e.getParam("body_id","","hash"),r=r[e.id]||r);var d=t.body_class||"";-1!=d.indexOf("=")&&(d=e.getParam("body_class","","hash"),d=d[e.id]||"");var o=e.settings.directionality?' dir="'+e.settings.directionality+'"':"";if(n="<!DOCTYPE html><html><head>"+a+'</head><body id="'+r+'" class="mce-content-body '+d+'"'+o+">"+e.getContent()+"</body></html>",i)this.getEl("body").firstChild.src="data:text/html;charset=utf-8,"+encodeURIComponent(n);else{var s=this.getEl("body").firstChild.contentWindow.document;s.open(),s.write(n),s.close()}}})}),e.addButton("preview",{title:"Preview",cmd:"mcePreview"}),e.addMenuItem("preview",{text:"Preview",cmd:"mcePreview",context:"view"})}); \ No newline at end of file
diff --git a/program/js/tinymce/plugins/print/plugin.min.js b/program/js/tinymce/plugins/print/plugin.min.js
new file mode 100644
index 000000000..abc37b5fd
--- /dev/null
+++ b/program/js/tinymce/plugins/print/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("print",function(t){t.addCommand("mcePrint",function(){t.getWin().print()}),t.addButton("print",{title:"Print",cmd:"mcePrint"}),t.addShortcut("Ctrl+P","","mcePrint"),t.addMenuItem("print",{text:"Print",cmd:"mcePrint",icon:"print",shortcut:"Ctrl+P",context:"file"})}); \ No newline at end of file
diff --git a/program/js/tinymce/plugins/save/plugin.min.js b/program/js/tinymce/plugins/save/plugin.min.js
new file mode 100644
index 000000000..07fcb1bf2
--- /dev/null
+++ b/program/js/tinymce/plugins/save/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("save",function(e){function a(){var a;return a=tinymce.DOM.getParent(e.id,"form"),!e.getParam("save_enablewhendirty",!0)||e.isDirty()?(tinymce.triggerSave(),e.getParam("save_onsavecallback")?void(e.execCallback("save_onsavecallback",e)&&(e.startContent=tinymce.trim(e.getContent({format:"raw"})),e.nodeChanged())):void(a?(e.isNotDirty=!0,(!a.onsubmit||a.onsubmit())&&("function"==typeof a.submit?a.submit():e.windowManager.alert("Error: Form submit field collision.")),e.nodeChanged()):e.windowManager.alert("Error: No form element found."))):void 0}function n(){var a=tinymce.trim(e.startContent);return e.getParam("save_oncancelcallback")?void e.execCallback("save_oncancelcallback",e):(e.setContent(a),e.undoManager.clear(),void e.nodeChanged())}function t(){var a=this;e.on("nodeChange",function(){a.disabled(e.getParam("save_enablewhendirty",!0)&&!e.isDirty())})}e.addCommand("mceSave",a),e.addCommand("mceCancel",n),e.addButton("save",{icon:"save",text:"Save",cmd:"mceSave",disabled:!0,onPostRender:t}),e.addButton("cancel",{text:"Cancel",icon:!1,cmd:"mceCancel",disabled:!0,onPostRender:t}),e.addShortcut("ctrl+s","","mceSave")}); \ No newline at end of file
diff --git a/program/js/tinymce/plugins/searchreplace/plugin.min.js b/program/js/tinymce/plugins/searchreplace/plugin.min.js
new file mode 100644
index 000000000..367c6bd01
--- /dev/null
+++ b/program/js/tinymce/plugins/searchreplace/plugin.min.js
@@ -0,0 +1 @@
+!function(){function e(e,t,n,a,r){function i(e,t){if(t=t||0,!e[0])throw"findAndReplaceDOMText cannot handle zero-length matches";var n=e.index;if(t>0){var a=e[t];if(!a)throw"Invalid capture group";n+=e[0].indexOf(a),e[0]=a}return[n,n+e[0].length,[e[0]]]}function d(e){var t;if(3===e.nodeType)return e.data;if(h[e.nodeName]&&!u[e.nodeName])return"";if(t="",(u[e.nodeName]||m[e.nodeName])&&(t+="\n"),e=e.firstChild)do t+=d(e);while(e=e.nextSibling);return t}function o(e,t,n){var a,r,i,d,o=[],l=0,c=e,s=t.shift(),f=0;e:for(;;){if((u[c.nodeName]||m[c.nodeName])&&l++,3===c.nodeType&&(!r&&c.length+l>=s[1]?(r=c,d=s[1]-l):a&&o.push(c),!a&&c.length+l>s[0]&&(a=c,i=s[0]-l),l+=c.length),a&&r){if(c=n({startNode:a,startNodeIndex:i,endNode:r,endNodeIndex:d,innerNodes:o,match:s[2],matchIndex:f}),l-=r.length-d,a=null,r=null,o=[],s=t.shift(),f++,!s)break}else{if((!h[c.nodeName]||u[c.nodeName])&&c.firstChild){c=c.firstChild;continue}if(c.nextSibling){c=c.nextSibling;continue}}for(;;){if(c.nextSibling){c=c.nextSibling;break}if(c.parentNode===e)break e;c=c.parentNode}}}function l(e){var t;if("function"!=typeof e){var n=e.nodeType?e:f.createElement(e);t=function(e,t){var a=n.cloneNode(!1);return a.setAttribute("data-mce-index",t),e&&a.appendChild(f.createTextNode(e)),a}}else t=e;return function(e){var n,a,r,i=e.startNode,d=e.endNode,o=e.matchIndex;if(i===d){var l=i;r=l.parentNode,e.startNodeIndex>0&&(n=f.createTextNode(l.data.substring(0,e.startNodeIndex)),r.insertBefore(n,l));var c=t(e.match[0],o);return r.insertBefore(c,l),e.endNodeIndex<l.length&&(a=f.createTextNode(l.data.substring(e.endNodeIndex)),r.insertBefore(a,l)),l.parentNode.removeChild(l),c}n=f.createTextNode(i.data.substring(0,e.startNodeIndex)),a=f.createTextNode(d.data.substring(e.endNodeIndex));for(var s=t(i.data.substring(e.startNodeIndex),o),u=[],h=0,m=e.innerNodes.length;m>h;++h){var g=e.innerNodes[h],p=t(g.data,o);g.parentNode.replaceChild(p,g),u.push(p)}var x=t(d.data.substring(0,e.endNodeIndex),o);return r=i.parentNode,r.insertBefore(n,i),r.insertBefore(s,i),r.removeChild(i),r=d.parentNode,r.insertBefore(x,d),r.insertBefore(a,d),r.removeChild(d),x}}var c,s,f,u,h,m,g=[],p=0;if(f=t.ownerDocument,u=r.getBlockElements(),h=r.getWhiteSpaceElements(),m=r.getShortEndedElements(),s=d(t)){if(e.global)for(;c=e.exec(s);)g.push(i(c,a));else c=s.match(e),g.push(i(c,a));return g.length&&(p=g.length,o(t,g,l(n))),p}}function t(t){function n(){function e(){r.statusbar.find("#next").disabled(!d(s+1).length),r.statusbar.find("#prev").disabled(!d(s-1).length)}function n(){tinymce.ui.MessageBox.alert("Could not find the specified string.",function(){r.find("#find")[0].focus()})}var a={},r=tinymce.ui.Factory.create({type:"window",layout:"flex",pack:"center",align:"center",onClose:function(){t.focus(),c.done()},onSubmit:function(t){var i,o,l,f;return t.preventDefault(),o=r.find("#case").checked(),f=r.find("#words").checked(),l=r.find("#find").value(),l.length?a.text==l&&a.caseState==o&&a.wholeWord==f?0===d(s+1).length?void n():(c.next(),void e()):(i=c.find(l,o,f),i||n(),r.statusbar.items().slice(1).disabled(0===i),e(),void(a={text:l,caseState:o,wholeWord:f})):(c.done(!1),void r.statusbar.items().slice(1).disabled(!0))},buttons:[{text:"Find",onclick:function(){r.submit()}},{text:"Replace",disabled:!0,onclick:function(){c.replace(r.find("#replace").value())||(r.statusbar.items().slice(1).disabled(!0),s=-1,a={})}},{text:"Replace all",disabled:!0,onclick:function(){c.replace(r.find("#replace").value(),!0,!0),r.statusbar.items().slice(1).disabled(!0),a={}}},{type:"spacer",flex:1},{text:"Prev",name:"prev",disabled:!0,onclick:function(){c.prev(),e()}},{text:"Next",name:"next",disabled:!0,onclick:function(){c.next(),e()}}],title:"Find and replace",items:{type:"form",padding:20,labelGap:30,spacing:10,items:[{type:"textbox",name:"find",size:40,label:"Find",value:t.selection.getNode().src},{type:"textbox",name:"replace",size:40,label:"Replace with"},{type:"checkbox",name:"case",text:"Match case",label:" "},{type:"checkbox",name:"words",text:"Whole words",label:" "}]}}).renderTo().reflow()}function a(e){var t=e.getAttribute("data-mce-index");return"number"==typeof t?""+t:t}function r(n){var a,r;return r=t.dom.create("span",{"data-mce-bogus":1}),r.className="mce-match-marker",a=t.getBody(),c.done(!1),e(n,a,r,!1,t.schema)}function i(e){var t=e.parentNode;e.firstChild&&t.insertBefore(e.firstChild,e),e.parentNode.removeChild(e)}function d(e){var n,r=[];if(n=tinymce.toArray(t.getBody().getElementsByTagName("span")),n.length)for(var i=0;i<n.length;i++){var d=a(n[i]);null!==d&&d.length&&d===e.toString()&&r.push(n[i])}return r}function o(e){var n=s,a=t.dom;e=e!==!1,e?n++:n--,a.removeClass(d(s),"mce-match-marker-selected");var r=d(n);return r.length?(a.addClass(d(n),"mce-match-marker-selected"),t.selection.scrollIntoView(r[0]),n):-1}function l(e){e.parentNode.removeChild(e)}var c=this,s=-1;c.init=function(e){e.addMenuItem("searchreplace",{text:"Find and replace",shortcut:"Ctrl+F",onclick:n,separator:"before",context:"edit"}),e.addButton("searchreplace",{tooltip:"Find and replace",shortcut:"Ctrl+F",onclick:n}),e.addCommand("SearchReplace",n),e.shortcuts.add("Ctrl+F","",n)},c.find=function(e,t,n){e=e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),e=n?"\\b"+e+"\\b":e;var a=r(new RegExp(e,t?"g":"gi"));return a&&(s=-1,s=o(!0)),a},c.next=function(){var e=o(!0);-1!==e&&(s=e)},c.prev=function(){var e=o(!1);-1!==e&&(s=e)},c.replace=function(e,n,r){var o,f,u,h,m,g,p=s;for(n=n!==!1,u=t.getBody(),f=tinymce.toArray(u.getElementsByTagName("span")),o=0;o<f.length;o++){var x=a(f[o]);if(null!==x&&x.length)if(h=m=parseInt(x,10),r||h===s){for(e.length?(f[o].firstChild.nodeValue=e,i(f[o])):l(f[o]);f[++o];)if(h=a(f[o]),null!==x&&x.length){if(h!==m){o--;break}l(f[o])}n&&p--}else m>s&&f[o].setAttribute("data-mce-index",m-1)}return t.undoManager.add(),s=p,n?(g=d(p+1).length>0,c.next()):(g=d(p-1).length>0,c.prev()),!r&&g},c.done=function(e){var n,r,d,o;for(r=tinymce.toArray(t.getBody().getElementsByTagName("span")),n=0;n<r.length;n++){var l=a(r[n]);null!==l&&l.length&&(l===s.toString()&&(d||(d=r[n].firstChild),o=r[n].firstChild),i(r[n]))}if(d&&o){var c=t.dom.createRng();return c.setStart(d,0),c.setEnd(o,o.data.length),e!==!1&&t.selection.setRng(c),c}}}tinymce.PluginManager.add("searchreplace",t)}(); \ No newline at end of file
diff --git a/program/js/tinymce/plugins/spellchecker/plugin.min.js b/program/js/tinymce/plugins/spellchecker/plugin.min.js
new file mode 100644
index 000000000..6069a8b3a
--- /dev/null
+++ b/program/js/tinymce/plugins/spellchecker/plugin.min.js
@@ -0,0 +1 @@
+!function(e,t){"use strict";function n(e,t){for(var n,r=[],i=0;i<e.length;++i){if(n=s[e[i]]||o(e[i]),!n)throw"module definition dependecy not found: "+e[i];r.push(n)}t.apply(null,r)}function r(e,r,i){if("string"!=typeof e)throw"invalid module definition, module id must be defined and be a string";if(r===t)throw"invalid module definition, dependencies must be specified";if(i===t)throw"invalid module definition, definition function must be specified";n(r,function(){s[e]=i.apply(null,arguments)})}function i(e){return!!s[e]}function o(t){for(var n=e,r=t.split(/[.\/]/),i=0;i<r.length;++i){if(!n[r[i]])return;n=n[r[i]]}return n}function a(n){for(var r=0;r<n.length;r++){for(var i=e,o=n[r],a=o.split(/[.\/]/),l=0;l<a.length-1;++l)i[a[l]]===t&&(i[a[l]]={}),i=i[a[l]];i[a[a.length-1]]=s[o]}}var s={},l="tinymce/spellcheckerplugin/DomTextMatcher",c="tinymce/spellcheckerplugin/Plugin",u="tinymce/PluginManager",d="tinymce/util/Tools",f="tinymce/ui/Menu",p="tinymce/dom/DOMUtils",m="tinymce/util/XHR",h="tinymce/util/URI",g="tinymce/util/JSON";r(l,[],function(){return function(e,t){function n(e,t){if(!e[0])throw"findAndReplaceDOMText cannot handle zero-length matches";return{start:e.index,end:e.index+e[0].length,text:e[0],data:t}}function r(e){var t;if(3===e.nodeType)return e.data;if(N[e.nodeName]&&!k[e.nodeName])return"";if(t="",(k[e.nodeName]||E[e.nodeName])&&(t+="\n"),e=e.firstChild)do t+=r(e);while(e=e.nextSibling);return t}function i(e,t,n){var r,i,o,a,s=[],l=0,c=e,u,d=0;t=t.slice(0),t.sort(function(e,t){return e.start-t.start}),u=t.shift();e:for(;;){if((k[c.nodeName]||E[c.nodeName])&&l++,3===c.nodeType&&(!i&&c.length+l>=u.end?(i=c,a=u.end-l):r&&s.push(c),!r&&c.length+l>u.start&&(r=c,o=u.start-l),l+=c.length),r&&i){if(c=n({startNode:r,startNodeIndex:o,endNode:i,endNodeIndex:a,innerNodes:s,match:u.text,matchIndex:d}),l-=i.length-a,r=null,i=null,s=[],u=t.shift(),d++,!u)break}else{if((!N[c.nodeName]||k[c.nodeName])&&c.firstChild){c=c.firstChild;continue}if(c.nextSibling){c=c.nextSibling;continue}}for(;;){if(c.nextSibling){c=c.nextSibling;break}if(c.parentNode===e)break e;c=c.parentNode}}}function o(e){function t(t,n){var r=x[n];r.stencil||(r.stencil=e(r));var i=r.stencil.cloneNode(!1);return i.setAttribute("data-mce-index",n),t&&i.appendChild(_.doc.createTextNode(t)),i}return function(e){var n,r,i,o=e.startNode,a=e.endNode,s=e.matchIndex,l=_.doc;if(o===a){var c=o;i=c.parentNode,e.startNodeIndex>0&&(n=l.createTextNode(c.data.substring(0,e.startNodeIndex)),i.insertBefore(n,c));var u=t(e.match,s);return i.insertBefore(u,c),e.endNodeIndex<c.length&&(r=l.createTextNode(c.data.substring(e.endNodeIndex)),i.insertBefore(r,c)),c.parentNode.removeChild(c),u}n=l.createTextNode(o.data.substring(0,e.startNodeIndex)),r=l.createTextNode(a.data.substring(e.endNodeIndex));for(var d=t(o.data.substring(e.startNodeIndex),s),f=[],p=0,m=e.innerNodes.length;m>p;++p){var h=e.innerNodes[p],g=t(h.data,s);h.parentNode.replaceChild(g,h),f.push(g)}var v=t(a.data.substring(0,e.endNodeIndex),s);return i=o.parentNode,i.insertBefore(n,o),i.insertBefore(d,o),i.removeChild(o),i=a.parentNode,i.insertBefore(v,a),i.insertBefore(r,a),i.removeChild(a),v}}function a(e){var t=e.parentNode;t.insertBefore(e.firstChild,e),e.parentNode.removeChild(e)}function s(t){var n=e.getElementsByTagName("*"),r=[];t="number"==typeof t?""+t:null;for(var i=0;i<n.length;i++){var o=n[i],a=o.getAttribute("data-mce-index");null!==a&&a.length&&(a===t||null===t)&&r.push(o)}return r}function l(e){for(var t=x.length;t--;)if(x[t]===e)return t;return-1}function c(e){var t=[];return u(function(n,r){e(n,r)&&t.push(n)}),x=t,this}function u(e){for(var t=0,n=x.length;n>t&&e(x[t],t)!==!1;t++);return this}function d(t){return x.length&&i(e,x,o(t)),this}function f(e,t){if(w&&e.global)for(;C=e.exec(w);)x.push(n(C,t));return this}function p(e){var t,n=s(e?l(e):null);for(t=n.length;t--;)a(n[t]);return this}function m(e){return x[e.getAttribute("data-mce-index")]}function h(e){return s(l(e))[0]}function g(e,t,n){return x.push({start:e,end:e+t,text:w.substr(e,t),data:n}),this}function v(e){var n=s(l(e)),r=t.dom.createRng();return r.setStartBefore(n[0]),r.setEndAfter(n[n.length-1]),r}function y(e,n){var r=v(e);return r.deleteContents(),n.length>0&&r.insertNode(t.dom.doc.createTextNode(n)),r}function b(){return x.splice(0,x.length),p(),this}var C,x=[],w,_=t.dom,k,N,E;return k=t.schema.getBlockElements(),N=t.schema.getWhiteSpaceElements(),E=t.schema.getShortEndedElements(),w=r(e),{text:w,matches:x,each:u,filter:c,reset:b,matchFromElement:m,elementFromMatch:h,find:f,add:g,wrap:d,unwrap:p,replace:y,rangeFromMatch:v,indexOf:l}}}),r(c,[l,u,d,f,p,m,h,g],function(e,t,n,r,i,o,a,s){t.add("spellchecker",function(t,l){function c(){return E.textMatcher||(E.textMatcher=new e(t.getBody(),t)),E.textMatcher}function u(e,t){var r=[];return n.each(t,function(e){r.push({selectable:!0,text:e.name,data:e.value})}),r}function d(e){for(var t in e)return!1;return!0}function f(e,o){var a=[],s=S[e];n.each(s,function(e){a.push({text:e,onclick:function(){t.insertContent(t.dom.encode(e)),t.dom.remove(o),v()}})}),a.push({text:"-"}),B&&a.push({text:"Add to Dictionary",onclick:function(){y(e,o)}}),a.push.apply(a,[{text:"Ignore",onclick:function(){b(e,o)}},{text:"Ignore all",onclick:function(){b(e,o,!0)}}]),R=new r({items:a,context:"contextmenu",onautohide:function(e){-1!=e.target.className.indexOf("spellchecker")&&e.preventDefault()},onhide:function(){R.remove(),R=null}}),R.renderTo(document.body);var l=i.DOM.getPos(t.getContentAreaContainer()),c=t.dom.getPos(o[0]),u=t.dom.getRoot();"BODY"==u.nodeName?(c.x-=u.ownerDocument.documentElement.scrollLeft||u.scrollLeft,c.y-=u.ownerDocument.documentElement.scrollTop||u.scrollTop):(c.x-=u.scrollLeft,c.y-=u.scrollTop),l.x+=c.x,l.y+=c.y,R.moveTo(l.x,l.y+o[0].offsetHeight)}function p(){return t.getParam("spellchecker_wordchar_pattern")||new RegExp('[^\\s!"#$%&()*+,-./:;<=>?@[\\]^_{|}`\xa7\xa9\xab\xae\xb1\xb6\xb7\xb8\xbb\xbc\xbd\xbe\xbf\xd7\xf7\xa4\u201d\u201c\u201e\xa0\u2002\u2003\u2009]+',"g")}function m(e,t,r,i){var c={method:e},u="";"spellcheck"==e&&(c.text=t,c.lang=A.spellchecker_language),"addToDictionary"==e&&(c.word=t),n.each(c,function(e,t){u&&(u+="&"),u+=t+"="+encodeURIComponent(e)}),o.send({url:new a(l).toAbsolute(A.spellchecker_rpc_url),type:"post",content_type:"application/x-www-form-urlencoded",data:u,success:function(e){e=s.parse(e),e?e.error?i(e.error):r(e):i("Sever response wasn't proper JSON.")},error:function(e,t){i("Spellchecker request error: "+t.status)}})}function h(e,t,n,r){var i=A.spellchecker_callback||m;i.call(E,e,t,n,r)}function g(){function e(e){t.windowManager.alert(e),t.setProgressState(!1),C()}return T?void C():(C(),T=!0,t.setProgressState(!0),h("spellcheck",c().text,k,e),void t.focus())}function v(){t.dom.select("span.mce-spellchecker-word").length||C()}function y(e,n){t.setProgressState(!0),h("addToDictionary",e,function(){t.setProgressState(!1),t.dom.remove(n,!0),v()},function(e){t.windowManager.alert(e),t.setProgressState(!1)})}function b(e,r,i){t.selection.collapse(),i?n.each(t.dom.select("span.mce-spellchecker-word"),function(n){n.getAttribute("data-mce-word")==e&&t.dom.remove(n,!0)}):t.dom.remove(r,!0),v()}function C(){c().reset(),E.textMatcher=null,T&&(T=!1,t.fire("SpellcheckEnd"))}function x(e){var t=e.getAttribute("data-mce-index");return"number"==typeof t?""+t:t}function w(e){var r,i=[];if(r=n.toArray(t.getBody().getElementsByTagName("span")),r.length)for(var o=0;o<r.length;o++){var a=x(r[o]);null!==a&&a.length&&a===e.toString()&&i.push(r[o])}return i}function _(e){var t=A.spellchecker_language;e.control.items().each(function(e){e.active(e.settings.data===t)})}function k(e){var n;return e.words?(B=!!e.dictionary,n=e.words):n=e,t.setProgressState(!1),d(n)?(t.windowManager.alert("No misspellings found"),void(T=!1)):(S=n,c().find(p()).filter(function(e){return!!n[e.text]}).wrap(function(e){return t.dom.create("span",{"class":"mce-spellchecker-word","data-mce-bogus":1,"data-mce-word":e.text})}),void t.fire("SpellcheckStart"),void(T=1))}var N,E=this,S,T,R,A=t.settings,B,D=A.spellchecker_languages||"English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr_FR,German=de,Italian=it,Polish=pl,Portuguese=pt_BR,Spanish=es,Swedish=sv";N=u("Language",n.map(D.split(","),function(e){return e=e.split("="),{name:e[0],value:e[1]}})),t.on("click",function(e){var n=e.target;if("mce-spellchecker-word"==n.className){e.preventDefault();var r=w(x(n));if(r.length>0){var i=t.dom.createRng();i.setStartBefore(r[0]),i.setEndAfter(r[r.length-1]),t.selection.setRng(i),f(n.getAttribute("data-mce-word"),r)}}}),t.addMenuItem("spellchecker",{text:"Spellcheck",context:"tools",onclick:g,selectable:!0,onPostRender:function(){var e=this;t.on("SpellcheckStart SpellcheckEnd",function(){e.active(T)})}});var P={tooltip:"Spellcheck",onclick:g,onPostRender:function(){var e=this;t.on("SpellcheckStart SpellcheckEnd",function(){e.active(T)})}};N.length>1&&(P.type="splitbutton",P.menu=N,P.onshow=_,P.onselect=function(e){A.spellchecker_language=e.control.settings.data}),t.addButton("spellchecker",P),t.addCommand("mceSpellCheck",g),t.on("remove",function(){R&&(R.remove(),R=null)}),t.on("change",v),this.getTextMatcher=c,this.getWordCharPattern=p,this.markErrors=k,this.getLanguage=function(){return A.spellchecker_language},A.spellchecker_language=A.spellchecker_language||A.language||"en"})}),a([l])}(this); \ No newline at end of file
diff --git a/program/js/tinymce/plugins/tabfocus/plugin.min.js b/program/js/tinymce/plugins/tabfocus/plugin.min.js
new file mode 100644
index 000000000..68fe35e35
--- /dev/null
+++ b/program/js/tinymce/plugins/tabfocus/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("tabfocus",function(e){function n(e){9!==e.keyCode||e.ctrlKey||e.altKey||e.metaKey||e.preventDefault()}function t(n){function t(n){function t(e){return"BODY"===e.nodeName||"hidden"!=e.type&&"none"!=e.style.display&&"hidden"!=e.style.visibility&&t(e.parentNode)}function r(e){return e.tabIndex||"INPUT"==e.nodeName||"TEXTAREA"==e.nodeName}function c(e){return!r(e)&&"-1"!=e.getAttribute("tabindex")&&t(e)}if(u=i.select(":input:enabled,*[tabindex]:not(iframe)"),o(u,function(n,t){return n.id==e.id?(a=t,!1):void 0}),n>0){for(d=a+1;d<u.length;d++)if(c(u[d]))return u[d]}else for(d=a-1;d>=0;d--)if(c(u[d]))return u[d];return null}var a,u,c,d;if(!(9!==n.keyCode||n.ctrlKey||n.altKey||n.metaKey)&&(c=r(e.getParam("tab_focus",e.getParam("tabfocus_elements",":prev,:next"))),1==c.length&&(c[1]=c[0],c[0]=":prev"),u=n.shiftKey?":prev"==c[0]?t(-1):i.get(c[0]):":next"==c[1]?t(1):i.get(c[1]))){var y=tinymce.get(u.id||u.name);u.id&&y?y.focus():window.setTimeout(function(){tinymce.Env.webkit||window.focus(),u.focus()},10),n.preventDefault()}}var i=tinymce.DOM,o=tinymce.each,r=tinymce.explode;e.on("init",function(){e.inline&&tinymce.DOM.setAttrib(e.getBody(),"tabIndex",null)}),e.on("keyup",n),tinymce.Env.gecko?e.on("keypress keydown",t):e.on("keydown",t)}); \ No newline at end of file
diff --git a/program/js/tinymce/plugins/table/plugin.min.js b/program/js/tinymce/plugins/table/plugin.min.js
new file mode 100644
index 000000000..768caaf5a
--- /dev/null
+++ b/program/js/tinymce/plugins/table/plugin.min.js
@@ -0,0 +1 @@
+!function(e,t){"use strict";function n(e,t){for(var n,r=[],i=0;i<e.length;++i){if(n=s[e[i]]||o(e[i]),!n)throw"module definition dependecy not found: "+e[i];r.push(n)}t.apply(null,r)}function r(e,r,i){if("string"!=typeof e)throw"invalid module definition, module id must be defined and be a string";if(r===t)throw"invalid module definition, dependencies must be specified";if(i===t)throw"invalid module definition, definition function must be specified";n(r,function(){s[e]=i.apply(null,arguments)})}function i(e){return!!s[e]}function o(t){for(var n=e,r=t.split(/[.\/]/),i=0;i<r.length;++i){if(!n[r[i]])return;n=n[r[i]]}return n}function a(n){for(var r=0;r<n.length;r++){for(var i=e,o=n[r],a=o.split(/[.\/]/),l=0;l<a.length-1;++l)i[a[l]]===t&&(i[a[l]]={}),i=i[a[l]];i[a[a.length-1]]=s[o]}}var s={},l="tinymce/tableplugin/TableGrid",c="tinymce/util/Tools",u="tinymce/Env",d="tinymce/tableplugin/Quirks",f="tinymce/util/VK",p="tinymce/tableplugin/CellSelection",m="tinymce/dom/TreeWalker",h="tinymce/tableplugin/Dialogs",g="tinymce/tableplugin/Plugin",v="tinymce/PluginManager";r(l,[c,u],function(e,n){function r(e,t){return parseInt(e.getAttribute(t)||1,10)}var i=e.each;return function(o,a){function s(){var e=0;B=[],D=0,i(["thead","tbody","tfoot"],function(t){var n=O.select("> "+t+" tr",a);i(n,function(n,o){o+=e,i(O.select("> td, > th",n),function(e,n){var i,a,s,l;if(B[o])for(;B[o][n];)n++;for(s=r(e,"rowspan"),l=r(e,"colspan"),a=o;o+s>a;a++)for(B[a]||(B[a]=[]),i=n;n+l>i;i++)B[a][i]={part:t,real:a==o&&i==n,elm:e,rowspan:s,colspan:l};D=Math.max(D,n+1)})}),e+=n.length})}function l(e,t){return e=e.cloneNode(t),e.removeAttribute("id"),e}function c(e,t){var n;return n=B[t],n?n[e]:void 0}function u(e,t,n){e&&(n=parseInt(n,10),1===n?e.removeAttribute(t,1):e.setAttribute(t,n,1))}function d(e){return e&&(O.hasClass(e.elm,"mce-item-selected")||e==H)}function f(){var e=[];return i(a.rows,function(t){i(t.cells,function(n){return O.hasClass(n,"mce-item-selected")||H&&n==H.elm?(e.push(t),!1):void 0})}),e}function p(){var e=O.createRng();e.setStartAfter(a),e.setEndAfter(a),L.setRng(e),O.remove(a)}function m(t){var r,a={};return o.settings.table_clone_elements!==!1&&(a=e.makeMap((o.settings.table_clone_elements||"strong em b i span font h1 h2 h3 h4 h5 h6 p div").toUpperCase(),/[ ,]/)),e.walk(t,function(e){var o;return 3==e.nodeType?(i(O.getParents(e.parentNode,null,t).reverse(),function(e){a[e.nodeName]&&(e=l(e,!1),r?o&&o.appendChild(e):r=o=e,o=e)}),o&&(o.innerHTML=n.ie?"&nbsp;":'<br data-mce-bogus="1" />'),!1):void 0},"childNodes"),t=l(t,!1),u(t,"rowSpan",1),u(t,"colSpan",1),r?t.appendChild(r):(!n.ie||n.ie>10)&&(t.innerHTML='<br data-mce-bogus="1" />'),t}function h(){var e=O.createRng(),t;return i(O.select("tr",a),function(e){0===e.cells.length&&O.remove(e)}),0===O.select("tr",a).length?(e.setStartBefore(a),e.setEndBefore(a),L.setRng(e),void O.remove(a)):(i(O.select("thead,tbody,tfoot",a),function(e){0===e.rows.length&&O.remove(e)}),s(),void(M&&(t=B[Math.min(B.length-1,M.y)],t&&(L.select(t[Math.min(t.length-1,M.x)].elm,!0),L.collapse(!0)))))}function g(e,t,n,r){var i,o,a,s,l;for(i=B[t][e].elm.parentNode,a=1;n>=a;a++)if(i=O.getNext(i,"tr")){for(o=e;o>=0;o--)if(l=B[t+a][o].elm,l.parentNode==i){for(s=1;r>=s;s++)O.insertAfter(m(l),l);break}if(-1==o)for(s=1;r>=s;s++)i.insertBefore(m(i.cells[0]),i.cells[0])}}function v(){i(B,function(e,t){i(e,function(e,n){var i,o,a;if(d(e)&&(e=e.elm,i=r(e,"colspan"),o=r(e,"rowspan"),i>1||o>1)){for(u(e,"rowSpan",1),u(e,"colSpan",1),a=0;i-1>a;a++)O.insertAfter(m(e),e);g(n,t,o-1,i)}})})}function y(t,n,r){var o,a,l,f,p,m,g,y,b,C,x;if(t?(o=k(t),a=o.x,l=o.y,f=a+(n-1),p=l+(r-1)):(M=P=null,i(B,function(e,t){i(e,function(e,n){d(e)&&(M||(M={x:n,y:t}),P={x:n,y:t})})}),M&&(a=M.x,l=M.y,f=P.x,p=P.y)),y=c(a,l),b=c(f,p),y&&b&&y.part==b.part){for(v(),s(),y=c(a,l).elm,u(y,"colSpan",f-a+1),u(y,"rowSpan",p-l+1),g=l;p>=g;g++)for(m=a;f>=m;m++)B[g]&&B[g][m]&&(t=B[g][m].elm,t!=y&&(C=e.grep(t.childNodes),i(C,function(e){y.appendChild(e)}),C.length&&(C=e.grep(y.childNodes),x=0,i(C,function(e){"BR"==e.nodeName&&O.getAttrib(e,"data-mce-bogus")&&x++<C.length-1&&y.removeChild(e)})),O.remove(t)));h()}}function b(e){var n,o,a,s,c,f,p,h,g;if(i(B,function(t,r){return i(t,function(t){return d(t)&&(t=t.elm,c=t.parentNode,f=l(c,!1),n=r,e)?!1:void 0}),e?!n:void 0}),n!==t){for(s=0;s<B[0].length;s++)if(B[n][s]&&(o=B[n][s].elm,o!=a)){if(e){if(n>0&&B[n-1][s]&&(h=B[n-1][s].elm,g=r(h,"rowSpan"),g>1)){u(h,"rowSpan",g+1);continue}}else if(g=r(o,"rowspan"),g>1){u(o,"rowSpan",g+1);continue}p=m(o),u(p,"colSpan",o.colSpan),f.appendChild(p),a=o}f.hasChildNodes()&&(e?c.parentNode.insertBefore(f,c):O.insertAfter(f,c))}}function C(e){var t,n;i(B,function(n){return i(n,function(n,r){return d(n)&&(t=r,e)?!1:void 0}),e?!t:void 0}),i(B,function(i,o){var a,s,l;i[t]&&(a=i[t].elm,a!=n&&(l=r(a,"colspan"),s=r(a,"rowspan"),1==l?e?(a.parentNode.insertBefore(m(a),a),g(t,o,s-1,l)):(O.insertAfter(m(a),a),g(t,o,s-1,l)):u(a,"colSpan",a.colSpan+1),n=a))})}function x(){var t=[];i(B,function(n){i(n,function(n,o){d(n)&&-1===e.inArray(t,o)&&(i(B,function(e){var t=e[o].elm,n;n=r(t,"colSpan"),n>1?u(t,"colSpan",n-1):O.remove(t)}),t.push(o))})}),h()}function w(){function e(e){var t,n;i(e.cells,function(e){var n=r(e,"rowSpan");n>1&&(u(e,"rowSpan",n-1),t=k(e),g(t.x,t.y,1,1))}),t=k(e.cells[0]),i(B[t.y],function(e){var t;e=e.elm,e!=n&&(t=r(e,"rowSpan"),1>=t?O.remove(e):u(e,"rowSpan",t-1),n=e)})}var t;t=f(),i(t.reverse(),function(t){e(t)}),h()}function _(){var e=f();return O.remove(e),h(),e}function E(){var e=f();return i(e,function(t,n){e[n]=l(t,!0)}),e}function N(e,t){var n=f(),r=n[t?0:n.length-1],o=r.cells.length;e&&(i(B,function(e){var t;return o=0,i(e,function(e){e.real&&(o+=e.colspan),e.elm.parentNode==r&&(t=1)}),t?!1:void 0}),t||e.reverse(),i(e,function(e){var n,i=e.cells.length,a;for(n=0;i>n;n++)a=e.cells[n],u(a,"colSpan",1),u(a,"rowSpan",1);for(n=i;o>n;n++)e.appendChild(m(e.cells[i-1]));for(n=o;i>n;n++)O.remove(e.cells[n]);t?r.parentNode.insertBefore(e,r):O.insertAfter(e,r)}),O.removeClass(O.select("td.mce-item-selected,th.mce-item-selected"),"mce-item-selected"))}function k(e){var t;return i(B,function(n,r){return i(n,function(n,i){return n.elm==e?(t={x:i,y:r},!1):void 0}),!t}),t}function S(e){M=k(e)}function T(){var e,t;return e=t=0,i(B,function(n,r){i(n,function(n,i){var o,a;d(n)&&(n=B[r][i],i>e&&(e=i),r>t&&(t=r),n.real&&(o=n.colspan-1,a=n.rowspan-1,o&&i+o>e&&(e=i+o),a&&r+a>t&&(t=r+a)))})}),{x:e,y:t}}function R(e){var t,n,r,i,o,a,s,l,c,u;if(P=k(e),M&&P){for(t=Math.min(M.x,P.x),n=Math.min(M.y,P.y),r=Math.max(M.x,P.x),i=Math.max(M.y,P.y),o=r,a=i,u=n;a>=u;u++)e=B[u][t],e.real||t-(e.colspan-1)<t&&(t-=e.colspan-1);for(c=t;o>=c;c++)e=B[n][c],e.real||n-(e.rowspan-1)<n&&(n-=e.rowspan-1);for(u=n;i>=u;u++)for(c=t;r>=c;c++)e=B[u][c],e.real&&(s=e.colspan-1,l=e.rowspan-1,s&&c+s>o&&(o=c+s),l&&u+l>a&&(a=u+l));for(O.removeClass(O.select("td.mce-item-selected,th.mce-item-selected"),"mce-item-selected"),u=n;a>=u;u++)for(c=t;o>=c;c++)B[u][c]&&O.addClass(B[u][c].elm,"mce-item-selected")}}function A(e,t){var n,r,i;n=k(e),r=n.y*D+n.x;do{if(r+=t,i=c(r%D,Math.floor(r/D)),!i)break;if(i.elm!=e)return L.select(i.elm,!0),O.isEmpty(i.elm)&&L.collapse(!0),!0}while(i.elm==e);return!1}var B,D,M,P,H,L=o.selection,O=L.dom;a=a||O.getParent(L.getStart(),"table"),s(),H=O.getParent(L.getStart(),"th,td"),H&&(M=k(H),P=T(),H=c(M.x,M.y)),e.extend(this,{deleteTable:p,split:v,merge:y,insertRow:b,insertCol:C,deleteCols:x,deleteRows:w,cutRows:_,copyRows:E,pasteRows:N,getPos:k,setStartCell:S,setEndCell:R,moveRelIdx:A,refresh:s})}}),r(d,[f,u,c],function(e,t,n){function r(e,t){return parseInt(e.getAttribute(t)||1,10)}var i=n.each;return function(n){function o(){function t(t){function o(e,r){var i=e?"previousSibling":"nextSibling",o=n.dom.getParent(r,"tr"),s=o[i];if(s)return g(n,r,s,e),t.preventDefault(),!0;var u=n.dom.getParent(o,"table"),d=o.parentNode,f=d.nodeName.toLowerCase();if("tbody"===f||f===(e?"tfoot":"thead")){var p=a(e,u,d,"tbody");if(null!==p)return l(e,p,r)}return c(e,o,i,u)}function a(e,t,r,i){var o=n.dom.select(">"+i,t),a=o.indexOf(r);if(e&&0===a||!e&&a===o.length-1)return s(e,t);if(-1===a){var l="thead"===r.tagName.toLowerCase()?0:o.length-1;return o[l]}return o[a+(e?-1:1)]}function s(e,t){var r=e?"thead":"tfoot",i=n.dom.select(">"+r,t);return 0!==i.length?i[0]:null}function l(e,r,i){var o=u(r,e);return o&&g(n,i,o,e),t.preventDefault(),!0}function c(e,r,i,a){var s=a[i];if(s)return d(s),!0;var l=n.dom.getParent(a,"td,th");if(l)return o(e,l,t);var c=u(r,!e);return d(c),t.preventDefault(),!1}function u(e,t){var r=e&&e[t?"lastChild":"firstChild"];return r&&"BR"===r.nodeName?n.dom.getParent(r,"td,th"):r}function d(e){n.selection.setCursorLocation(e,0)}function f(){return b==e.UP||b==e.DOWN}function p(e){var t=e.selection.getNode(),n=e.dom.getParent(t,"tr");return null!==n}function m(e){for(var t=0,n=e;n.previousSibling;)n=n.previousSibling,t+=r(n,"colspan");return t}function h(e,t){var n=0,o=0;return i(e.children,function(e,i){return n+=r(e,"colspan"),o=i,n>t?!1:void 0}),o}function g(e,t,r,i){var o=m(n.dom.getParent(t,"td,th")),a=h(r,o),s=r.childNodes[a],l=u(s,i);d(l||s)}function v(e){var t=n.selection.getNode(),r=n.dom.getParent(t,"td,th"),i=n.dom.getParent(e,"td,th");return r&&r!==i&&y(r,i)}function y(e,t){return n.dom.getParent(e,"TABLE")===n.dom.getParent(t,"TABLE")}var b=t.keyCode;if(f()&&p(n)){var C=n.selection.getNode();setTimeout(function(){v(C)&&o(!t.shiftKey&&b===e.UP,C,t)},0)}}n.on("KeyDown",function(e){t(e)})}function a(){function e(e,t){var n=t.ownerDocument,r=n.createRange(),i;return r.setStartBefore(t),r.setEnd(e.endContainer,e.endOffset),i=n.createElement("body"),i.appendChild(r.cloneContents()),0===i.innerHTML.replace(/<(br|img|object|embed|input|textarea)[^>]*>/gi,"-").replace(/<[^>]+>/g,"").length}n.on("KeyDown",function(t){var r,i,o=n.dom;(37==t.keyCode||38==t.keyCode)&&(r=n.selection.getRng(),i=o.getParent(r.startContainer,"table"),i&&n.getBody().firstChild==i&&e(r,i)&&(r=o.createRng(),r.setStartBefore(i),r.setEndBefore(i),n.selection.setRng(r),t.preventDefault()))})}function s(){n.on("KeyDown SetContent VisualAid",function(){var e;for(e=n.getBody().lastChild;e;e=e.previousSibling)if(3==e.nodeType){if(e.nodeValue.length>0)break}else if(1==e.nodeType&&("BR"==e.tagName||!e.getAttribute("data-mce-bogus")))break;e&&"TABLE"==e.nodeName&&(n.settings.forced_root_block?n.dom.add(n.getBody(),n.settings.forced_root_block,n.settings.forced_root_block_attrs,t.ie&&t.ie<11?"&nbsp;":'<br data-mce-bogus="1" />'):n.dom.add(n.getBody(),"br",{"data-mce-bogus":"1"}))}),n.on("PreProcess",function(e){var t=e.node.lastChild;t&&("BR"==t.nodeName||1==t.childNodes.length&&("BR"==t.firstChild.nodeName||"\xa0"==t.firstChild.nodeValue))&&t.previousSibling&&"TABLE"==t.previousSibling.nodeName&&n.dom.remove(t)})}function l(){function e(e,t,n,r){var i=3,o=e.dom.getParent(t.startContainer,"TABLE"),a,s,l;return o&&(a=o.parentNode),s=t.startContainer.nodeType==i&&0===t.startOffset&&0===t.endOffset&&r&&("TR"==n.nodeName||n==a),l=("TD"==n.nodeName||"TH"==n.nodeName)&&!r,s||l}function t(){var t=n.selection.getRng(),r=n.selection.getNode(),i=n.dom.getParent(t.startContainer,"TD,TH");if(e(n,t,r,i)){i||(i=r);for(var o=i.lastChild;o.lastChild;)o=o.lastChild;3==o.nodeType&&(t.setEnd(o,o.data.length),n.selection.setRng(t))}}n.on("KeyDown",function(){t()}),n.on("MouseDown",function(e){2!=e.button&&t()})}function c(){n.on("keydown",function(t){if((t.keyCode==e.DELETE||t.keyCode==e.BACKSPACE)&&!t.isDefaultPrevented()){var r=n.dom.getParent(n.selection.getStart(),"table");if(r){for(var i=n.dom.select("td,th",r),o=i.length;o--;)if(!n.dom.hasClass(i[o],"mce-item-selected"))return;t.preventDefault(),n.execCommand("mceTableDelete")}}})}c(),t.webkit&&(o(),l()),t.gecko&&(a(),s()),t.ie>10&&(a(),s())}}),r(p,[l,m,c],function(e,t,n){return function(r){function i(e){r.getBody().style.webkitUserSelect="",(e||u)&&(r.dom.removeClass(r.dom.select("td.mce-item-selected,th.mce-item-selected"),"mce-item-selected"),u=!1)}function o(t){var n,i,o=t.target;if(!d&&l&&(s||o!=l)&&("TD"==o.nodeName||"TH"==o.nodeName)){i=a.getParent(o,"table"),i==c&&(s||(s=new e(r,i),s.setStartCell(l),r.getBody().style.webkitUserSelect="none"),s.setEndCell(o),u=!0),n=r.selection.getSel();try{n.removeAllRanges?n.removeAllRanges():n.empty()}catch(f){}t.preventDefault()}}var a=r.dom,s,l,c,u=!0,d;return r.on("MouseDown",function(e){2==e.button||d||(i(),l=a.getParent(e.target,"td,th"),c=a.getParent(l,"table"))}),r.on("mouseover",o),r.on("remove",function(){a.unbind(r.getDoc(),"mouseover",o)}),r.on("MouseUp",function(){function e(e,r){var o=new t(e,e);do{if(3==e.nodeType&&0!==n.trim(e.nodeValue).length)return void(r?i.setStart(e,0):i.setEnd(e,e.nodeValue.length));if("BR"==e.nodeName)return void(r?i.setStartBefore(e):i.setEndBefore(e))}while(e=r?o.next():o.prev())}var i,o=r.selection,u,d,f,p;if(l){if(s&&(r.getBody().style.webkitUserSelect=""),u=a.select("td.mce-item-selected,th.mce-item-selected"),u.length>0){i=a.createRng(),f=u[0],i.setStartBefore(f),i.setEndAfter(f),e(f,1),d=new t(f,a.getParent(u[0],"table"));do if("TD"==f.nodeName||"TH"==f.nodeName){if(!a.hasClass(f,"mce-item-selected"))break;p=f}while(f=d.next());e(p),o.setRng(i)}r.nodeChanged(),l=s=c=null}}),r.on("KeyUp Drop SetContent",function(e){i("setcontent"==e.type),l=s=c=null,d=!1}),r.on("ObjectResizeStart ObjectResized",function(e){d="objectresized"!=e.type}),{clear:i}}}),r(h,[c,u],function(e,t){var n=e.each;return function(r){function i(){var e=this,t=r.settings.color_picker_callback;t&&t.call(r,function(t){e.value(t).fire("change")},e.value())}function o(e){return{title:"Advanced",type:"form",defaults:{onchange:function(){d(e,this.parents().reverse()[0],"style"==this.name())}},items:[{label:"Style",name:"style",type:"textbox"},{type:"form",padding:0,formItemDefaults:{layout:"grid",alignH:["start","right"]},defaults:{size:7},items:[{label:"Border color",type:"colorbox",name:"borderColor",onaction:i},{label:"Background color",type:"colorbox",name:"backgroundColor",onaction:i}]}]}}function a(e){return e?e.replace(/px$/,""):""}function s(e){return/^[0-9]+$/.test(e)&&(e+="px"),e}function l(e){n("left center right".split(" "),function(t){r.formatter.remove("align"+t,{},e)})}function c(e){n("top middle bottom".split(" "),function(t){r.formatter.remove("valign"+t,{},e)})}function u(t,n,r){function i(t,r){return r=r||[],e.each(t,function(e){var t={text:e.text||e.title};e.menu?t.menu=i(e.menu):(t.value=e.value,n&&n(t)),r.push(t)}),r}return i(t,r||[])}function d(e,t,n){var r=t.toJSON(),i=e.parseStyle(r.style);n?(t.find("#borderColor").value(i["border-color"]||"")[0].fire("change"),t.find("#backgroundColor").value(i["background-color"]||"")[0].fire("change")):(i["border-color"]=r.borderColor,i["background-color"]=r.backgroundColor),t.find("#style").value(e.serializeStyle(e.parseStyle(e.serializeStyle(i))))}function f(e,t,n){var r=e.parseStyle(e.getAttrib(n,"style"));r["border-color"]&&(t.borderColor=r["border-color"]),r["background-color"]&&(t.backgroundColor=r["background-color"]),t.style=e.serializeStyle(r)}var p=this;p.tableProps=function(){p.table(!0)},p.table=function(i){function c(){var n;d(p,this),y=e.extend(y,this.toJSON()),e.each("backgroundColor borderColor".split(" "),function(e){delete y[e]}),y["class"]===!1&&delete y["class"],r.undoManager.transact(function(){m||(m=r.plugins.table.insertTable(y.cols||1,y.rows||1)),r.dom.setAttribs(m,{cellspacing:y.cellspacing,cellpadding:y.cellpadding,border:y.border,style:y.style,"class":y["class"]}),p.getAttrib(m,"width")?p.setAttrib(m,"width",a(y.width)):p.setStyle(m,"width",s(y.width)),p.setStyle(m,"height",s(y.height)),n=p.select("caption",m)[0],n&&!y.caption&&p.remove(n),!n&&y.caption&&(n=p.create("caption"),n.innerHTML=t.ie?"\xa0":'<br data-mce-bogus="1"/>',m.insertBefore(n,m.firstChild)),l(m),y.align&&r.formatter.apply("align"+y.align,{},m),r.focus(),r.addVisual()})}var p=r.dom,m,h,g,v,y={},b;i===!0?(m=p.getParent(r.selection.getStart(),"table"),m&&(y={width:a(p.getStyle(m,"width")||p.getAttrib(m,"width")),height:a(p.getStyle(m,"height")||p.getAttrib(m,"height")),cellspacing:m?p.getAttrib(m,"cellspacing"):"",cellpadding:m?p.getAttrib(m,"cellpadding"):"",border:m?p.getAttrib(m,"border"):"",caption:!!p.select("caption",m)[0],"class":p.getAttrib(m,"class")},n("left center right".split(" "),function(e){r.formatter.matchNode(m,"align"+e)&&(y.align=e)}))):(h={label:"Cols",name:"cols"},g={label:"Rows",name:"rows"}),r.settings.table_class_list&&(y["class"]&&(y["class"]=y["class"].replace(/\s*mce\-item\-table\s*/g,"")),v={name:"class",type:"listbox",label:"Class",values:u(r.settings.table_class_list,function(e){e.value&&(e.textStyle=function(){return r.formatter.getCssText({block:"table",classes:[e.value]})})})}),b={type:"form",layout:"flex",direction:"column",labelGapCalc:"children",padding:0,items:[{type:"form",labelGapCalc:!1,padding:0,layout:"grid",columns:2,defaults:{type:"textbox",maxWidth:50},items:[h,g,{label:"Width",name:"width"},{label:"Height",name:"height"},{label:"Cell spacing",name:"cellspacing"},{label:"Cell padding",name:"cellpadding"},{label:"Border",name:"border"},{label:"Caption",name:"caption",type:"checkbox"}]},{label:"Alignment",name:"align",type:"listbox",text:"None",values:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]},v]},r.settings.table_adv_tab!==!1?(f(p,y,m),r.windowManager.open({title:"Table properties",data:y,bodyType:"tabpanel",body:[{title:"General",type:"form",items:b},o(p)],onsubmit:c})):r.windowManager.open({title:"Table properties",data:y,body:b,onsubmit:c})},p.merge=function(e,t){r.windowManager.open({title:"Merge cells",body:[{label:"Cols",name:"cols",type:"textbox",value:"1",size:10},{label:"Rows",name:"rows",type:"textbox",value:"1",size:10}],onsubmit:function(){var n=this.toJSON();r.undoManager.transact(function(){e.merge(t,n.cols,n.rows)})}})},p.cell=function(){function t(){d(i,this),m=e.extend(m,this.toJSON()),r.undoManager.transact(function(){n(g,function(e){r.dom.setAttribs(e,{scope:m.scope,style:m.style,"class":m["class"]}),r.dom.setStyles(e,{width:s(m.width),height:s(m.height)}),m.type&&e.nodeName.toLowerCase()!=m.type&&(e=i.rename(e,m.type)),l(e),m.align&&r.formatter.apply("align"+m.align,{},e),c(e),m.valign&&r.formatter.apply("valign"+m.valign,{},e)}),r.focus()})}var i=r.dom,p,m,h,g=[];if(g=r.dom.select("td.mce-item-selected,th.mce-item-selected"),p=r.dom.getParent(r.selection.getStart(),"td,th"),!g.length&&p&&g.push(p),p=p||g[0]){m={width:a(i.getStyle(p,"width")||i.getAttrib(p,"width")),height:a(i.getStyle(p,"height")||i.getAttrib(p,"height")),scope:i.getAttrib(p,"scope"),"class":i.getAttrib(p,"class")},m.type=p.nodeName.toLowerCase(),n("left center right".split(" "),function(e){r.formatter.matchNode(p,"align"+e)&&(m.align=e)}),n("top middle bottom".split(" "),function(e){r.formatter.matchNode(p,"valign"+e)&&(m.valign=e)}),r.settings.table_cell_class_list&&(h={name:"class",type:"listbox",label:"Class",values:u(r.settings.table_cell_class_list,function(e){e.value&&(e.textStyle=function(){return r.formatter.getCssText({block:"td",classes:[e.value]})})})});var v={type:"form",layout:"flex",direction:"column",labelGapCalc:"children",padding:0,items:[{type:"form",layout:"grid",columns:2,labelGapCalc:!1,padding:0,defaults:{type:"textbox",maxWidth:50},items:[{label:"Width",name:"width"},{label:"Height",name:"height"},{label:"Cell type",name:"type",type:"listbox",text:"None",minWidth:90,maxWidth:null,values:[{text:"Cell",value:"td"},{text:"Header cell",value:"th"}]},{label:"Scope",name:"scope",type:"listbox",text:"None",minWidth:90,maxWidth:null,values:[{text:"None",value:""},{text:"Row",value:"row"},{text:"Column",value:"col"},{text:"Row group",value:"rowgroup"},{text:"Column group",value:"colgroup"}]},{label:"H Align",name:"align",type:"listbox",text:"None",minWidth:90,maxWidth:null,values:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]},{label:"V Align",name:"valign",type:"listbox",text:"None",minWidth:90,maxWidth:null,values:[{text:"None",value:""},{text:"Top",value:"top"},{text:"Middle",value:"middle"},{text:"Bottom",value:"bottom"}]}]},h]};r.settings.table_cell_adv_tab!==!1?(f(i,m,p),r.windowManager.open({title:"Cell properties",bodyType:"tabpanel",data:m,body:[{title:"General",type:"form",items:v},o(i)],onsubmit:t})):r.windowManager.open({title:"Cell properties",data:m,items:v,onsubmit:t})}},p.row=function(){function t(){var t,o,a;d(i,this),g=e.extend(g,this.toJSON()),r.undoManager.transact(function(){var e=g.type;n(v,function(n){r.dom.setAttribs(n,{scope:g.scope,style:g.style,"class":g["class"]}),r.dom.setStyles(n,{height:s(g.height)}),e!=n.parentNode.nodeName.toLowerCase()&&(t=i.getParent(n,"table"),o=n.parentNode,a=i.select(e,t)[0],a||(a=i.create(e),t.firstChild?t.insertBefore(a,t.firstChild):t.appendChild(a)),a.appendChild(n),o.hasChildNodes()||i.remove(o)),l(n),g.align&&r.formatter.apply("align"+g.align,{},n)}),r.focus()})}var i=r.dom,c,p,m,h,g,v=[],y;c=r.dom.getParent(r.selection.getStart(),"table"),p=r.dom.getParent(r.selection.getStart(),"td,th"),n(c.rows,function(e){n(e.cells,function(t){return i.hasClass(t,"mce-item-selected")||t==p?(v.push(e),!1):void 0})}),m=v[0],m&&(g={height:a(i.getStyle(m,"height")||i.getAttrib(m,"height")),scope:i.getAttrib(m,"scope"),"class":i.getAttrib(m,"class")},g.type=m.parentNode.nodeName.toLowerCase(),n("left center right".split(" "),function(e){r.formatter.matchNode(m,"align"+e)&&(g.align=e)}),r.settings.table_row_class_list&&(h={name:"class",type:"listbox",label:"Class",values:u(r.settings.table_row_class_list,function(e){e.value&&(e.textStyle=function(){return r.formatter.getCssText({block:"tr",classes:[e.value]})})})}),y={type:"form",columns:2,padding:0,defaults:{type:"textbox"},items:[{type:"listbox",name:"type",label:"Row type",text:"None",maxWidth:null,values:[{text:"Header",value:"thead"},{text:"Body",value:"tbody"},{text:"Footer",value:"tfoot"}]},{type:"listbox",name:"align",label:"Alignment",text:"None",maxWidth:null,values:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]},{label:"Height",name:"height"},h]},r.settings.table_row_adv_tab!==!1?(f(i,g,m),r.windowManager.open({title:"Row properties",data:g,bodyType:"tabpanel",body:[{title:"General",type:"form",items:y},o(i)],onsubmit:t})):r.windowManager.open({title:"Row properties",data:g,body:y,onsubmit:t}))}}}),r(g,[l,d,p,h,c,m,u,v],function(e,t,n,r,i,o,a,s){function l(i){function o(e){return function(){i.execCommand(e)}}function s(e,t){var n,r,o,s;for(o='<table id="__mce"><tbody>',n=0;t>n;n++){for(o+="<tr>",r=0;e>r;r++)o+="<td>"+(a.ie?" ":"<br>")+"</td>";o+="</tr>"}return o+="</tbody></table>",i.undoManager.transact(function(){i.insertContent(o),s=i.dom.get("__mce"),i.dom.setAttrib(s,"id",null),i.dom.setAttribs(s,i.settings.table_default_attributes||{}),i.dom.setStyles(s,i.settings.table_default_styles||{})}),s}function l(e,t){function n(){e.disabled(!i.dom.getParent(i.selection.getStart(),t)),i.selection.selectorChanged(t,function(t){e.disabled(!t)})}i.initialized?n():i.on("init",n)}function u(){l(this,"table")}function d(){l(this,"td,th")}function f(){var e="";e='<table role="grid" class="mce-grid mce-grid-border" aria-readonly="true">';for(var t=0;10>t;t++){e+="<tr>";for(var n=0;10>n;n++)e+='<td role="gridcell" tabindex="-1"><a id="mcegrid'+(10*t+n)+'" href="#" data-mce-x="'+n+'" data-mce-y="'+t+'"></a></td>';e+="</tr>"}return e+="</table>",e+='<div class="mce-text-center" role="presentation">1 x 1</div>'}function p(e,t,n){var r=n.getEl().getElementsByTagName("table")[0],o,a,s,l,c,u=n.isRtl()||"tl-tr"==n.parent().rel;for(r.nextSibling.innerHTML=e+1+" x "+(t+1),u&&(e=9-e),a=0;10>a;a++)for(o=0;10>o;o++)l=r.rows[a].childNodes[o].firstChild,c=(u?o>=e:e>=o)&&t>=a,i.dom.toggleClass(l,"mce-active",c),c&&(s=l);return s.parentNode}var m,h=this,g=new r(i);i.settings.table_grid===!1?i.addMenuItem("inserttable",{text:"Insert table",icon:"table",context:"table",onclick:g.table}):i.addMenuItem("inserttable",{text:"Insert table",icon:"table",context:"table",ariaHideMenu:!0,onclick:function(e){e.aria&&(this.parent().hideAll(),e.stopImmediatePropagation(),g.table())},onshow:function(){p(0,0,this.menu.items()[0])},onhide:function(){var e=this.menu.items()[0].getEl().getElementsByTagName("a");i.dom.removeClass(e,"mce-active"),i.dom.addClass(e[0],"mce-active")},menu:[{type:"container",html:f(),onPostRender:function(){this.lastX=this.lastY=0},onmousemove:function(e){var t=e.target,n,r;"A"==t.tagName.toUpperCase()&&(n=parseInt(t.getAttribute("data-mce-x"),10),r=parseInt(t.getAttribute("data-mce-y"),10),(this.isRtl()||"tl-tr"==this.parent().rel)&&(n=9-n),(n!==this.lastX||r!==this.lastY)&&(p(n,r,e.control),this.lastX=n,this.lastY=r))},onclick:function(e){var t=this;"A"==e.target.tagName.toUpperCase()&&(e.preventDefault(),e.stopPropagation(),t.parent().cancel(),i.undoManager.transact(function(){s(t.lastX+1,t.lastY+1)}),i.addVisual())}}]}),i.addMenuItem("tableprops",{text:"Table properties",context:"table",onPostRender:u,onclick:g.tableProps}),i.addMenuItem("deletetable",{text:"Delete table",context:"table",onPostRender:u,cmd:"mceTableDelete"}),i.addMenuItem("cell",{separator:"before",text:"Cell",context:"table",menu:[{text:"Cell properties",onclick:o("mceTableCellProps"),onPostRender:d},{text:"Merge cells",onclick:o("mceTableMergeCells"),onPostRender:d},{text:"Split cell",onclick:o("mceTableSplitCells"),onPostRender:d}]}),i.addMenuItem("row",{text:"Row",context:"table",menu:[{text:"Insert row before",onclick:o("mceTableInsertRowBefore"),onPostRender:d},{text:"Insert row after",onclick:o("mceTableInsertRowAfter"),onPostRender:d},{text:"Delete row",onclick:o("mceTableDeleteRow"),onPostRender:d},{text:"Row properties",onclick:o("mceTableRowProps"),onPostRender:d},{text:"-"},{text:"Cut row",onclick:o("mceTableCutRow"),onPostRender:d},{text:"Copy row",onclick:o("mceTableCopyRow"),onPostRender:d},{text:"Paste row before",onclick:o("mceTablePasteRowBefore"),onPostRender:d},{text:"Paste row after",onclick:o("mceTablePasteRowAfter"),onPostRender:d}]}),i.addMenuItem("column",{text:"Column",context:"table",menu:[{text:"Insert column before",onclick:o("mceTableInsertColBefore"),onPostRender:d},{text:"Insert column after",onclick:o("mceTableInsertColAfter"),onPostRender:d},{text:"Delete column",onclick:o("mceTableDeleteCol"),onPostRender:d}]});var v=[];c("inserttable tableprops deletetable | cell row column".split(" "),function(e){v.push("|"==e?{text:"-"}:i.menuItems[e])}),i.addButton("table",{type:"menubutton",title:"Table",menu:v}),a.isIE||i.on("click",function(e){e=e.target,"TABLE"===e.nodeName&&(i.selection.select(e),i.nodeChanged())}),h.quirks=new t(i),i.on("Init",function(){h.cellSelection=new n(i)}),c({mceTableSplitCells:function(e){e.split()},mceTableMergeCells:function(e){var t;t=i.dom.getParent(i.selection.getStart(),"th,td"),i.dom.select("td.mce-item-selected,th.mce-item-selected").length?e.merge():g.merge(e,t)},mceTableInsertRowBefore:function(e){e.insertRow(!0)},mceTableInsertRowAfter:function(e){e.insertRow()},mceTableInsertColBefore:function(e){e.insertCol(!0)},mceTableInsertColAfter:function(e){e.insertCol()},mceTableDeleteCol:function(e){e.deleteCols()},mceTableDeleteRow:function(e){e.deleteRows()},mceTableCutRow:function(e){m=e.cutRows()},mceTableCopyRow:function(e){m=e.copyRows()},mceTablePasteRowBefore:function(e){e.pasteRows(m,!0)},mceTablePasteRowAfter:function(e){e.pasteRows(m)},mceTableDelete:function(e){e.deleteTable()}},function(t,n){i.addCommand(n,function(){var n=new e(i);n&&(t(n),i.execCommand("mceRepaint"),h.cellSelection.clear())})}),c({mceInsertTable:g.table,mceTableProps:function(){g.table(!0)},mceTableRowProps:g.row,mceTableCellProps:g.cell},function(e,t){i.addCommand(t,function(t,n){e(n)})}),i.settings.table_tab_navigation!==!1&&i.on("keydown",function(t){var n,r,o;9==t.keyCode&&(n=i.dom.getParent(i.selection.getStart(),"th,td"),n&&(t.preventDefault(),r=new e(i),o=t.shiftKey?-1:1,i.undoManager.transact(function(){!r.moveRelIdx(n,o)&&o>0&&(r.insertRow(),r.refresh(),r.moveRelIdx(n,o))})))}),h.insertTable=s}var c=i.each;s.add("table",l)}),a([])}(this); \ No newline at end of file
diff --git a/program/js/tinymce/plugins/template/plugin.min.js b/program/js/tinymce/plugins/template/plugin.min.js
new file mode 100644
index 000000000..cee38af3f
--- /dev/null
+++ b/program/js/tinymce/plugins/template/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("template",function(e){function t(t){return function(){var a=e.settings.templates;"string"==typeof a?tinymce.util.XHR.send({url:a,success:function(e){t(tinymce.util.JSON.parse(e))}}):t(a)}}function a(t){function a(t){function a(t){if(-1==t.indexOf("<html>")){var a="";tinymce.each(e.contentCSS,function(t){a+='<link type="text/css" rel="stylesheet" href="'+e.documentBaseURI.toAbsolute(t)+'">'}),t="<!DOCTYPE html><html><head>"+a+"</head><body>"+t+"</body></html>"}t=r(t,"template_preview_replace_values");var l=n.find("iframe")[0].getEl().contentWindow.document;l.open(),l.write(t),l.close()}var c=t.control.value();c.url?tinymce.util.XHR.send({url:c.url,success:function(e){l=e,a(l)}}):(l=c.content,a(l)),n.find("#description")[0].text(t.control.value().description)}var n,l,i=[];return t&&0!==t.length?(tinymce.each(t,function(e){i.push({selected:!i.length,text:e.title,value:{url:e.url,content:e.content,description:e.description}})}),n=e.windowManager.open({title:"Insert template",layout:"flex",direction:"column",align:"stretch",padding:15,spacing:10,items:[{type:"form",flex:0,padding:0,items:[{type:"container",label:"Templates",items:{type:"listbox",label:"Templates",name:"template",values:i,onselect:a}}]},{type:"label",name:"description",label:"Description",text:" "},{type:"iframe",flex:1,border:1}],onsubmit:function(){c(!1,l)},width:e.getParam("template_popup_width",600),height:e.getParam("template_popup_height",500)}),void n.find("listbox")[0].fire("select")):void e.windowManager.alert("No templates defined")}function n(t,a){function n(e,t){if(e=""+e,e.length<t)for(var a=0;a<t-e.length;a++)e="0"+e;return e}var l="Sun Mon Tue Wed Thu Fri Sat Sun".split(" "),r="Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(" "),c="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),i="January February March April May June July August September October November December".split(" ");return a=a||new Date,t=t.replace("%D","%m/%d/%Y"),t=t.replace("%r","%I:%M:%S %p"),t=t.replace("%Y",""+a.getFullYear()),t=t.replace("%y",""+a.getYear()),t=t.replace("%m",n(a.getMonth()+1,2)),t=t.replace("%d",n(a.getDate(),2)),t=t.replace("%H",""+n(a.getHours(),2)),t=t.replace("%M",""+n(a.getMinutes(),2)),t=t.replace("%S",""+n(a.getSeconds(),2)),t=t.replace("%I",""+((a.getHours()+11)%12+1)),t=t.replace("%p",""+(a.getHours()<12?"AM":"PM")),t=t.replace("%B",""+e.translate(i[a.getMonth()])),t=t.replace("%b",""+e.translate(c[a.getMonth()])),t=t.replace("%A",""+e.translate(r[a.getDay()])),t=t.replace("%a",""+e.translate(l[a.getDay()])),t=t.replace("%%","%")}function l(t){var a=e.dom,n=e.getParam("template_replace_values");i(a.select("*",t),function(e){i(n,function(t,l){a.hasClass(e,l)&&"function"==typeof n[l]&&n[l](e)})})}function r(t,a){return i(e.getParam(a),function(e,a){"function"!=typeof e&&(t=t.replace(new RegExp("\\{\\$"+a+"\\}","g"),e))}),t}function c(t,a){function c(e,t){return new RegExp("\\b"+t+"\\b","g").test(e.className)}var o,s,p=e.dom,m=e.selection.getContent();a=r(a,"template_replace_values"),o=p.create("div",null,a),s=p.select(".mceTmpl",o),s&&s.length>0&&(o=p.create("div",null),o.appendChild(s[0].cloneNode(!0))),i(p.select("*",o),function(t){c(t,e.getParam("template_cdate_classes","cdate").replace(/\s+/g,"|"))&&(t.innerHTML=n(e.getParam("template_cdate_format",e.getLang("template.cdate_format")))),c(t,e.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))&&(t.innerHTML=n(e.getParam("template_mdate_format",e.getLang("template.mdate_format")))),c(t,e.getParam("template_selected_content_classes","selcontent").replace(/\s+/g,"|"))&&(t.innerHTML=m)}),l(o),e.execCommand("mceInsertContent",!1,o.innerHTML),e.addVisual()}var i=tinymce.each;e.addCommand("mceInsertTemplate",c),e.addButton("template",{title:"Insert template",onclick:t(a)}),e.addMenuItem("template",{text:"Insert template",onclick:t(a),context:"insert"}),e.on("PreProcess",function(t){var a=e.dom;i(a.select("div",t.node),function(t){a.hasClass(t,"mceTmpl")&&(i(a.select("*",t),function(t){a.hasClass(t,e.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))&&(t.innerHTML=n(e.getParam("template_mdate_format",e.getLang("template.mdate_format"))))}),l(t))})})}); \ No newline at end of file
diff --git a/program/js/tinymce/plugins/textcolor/plugin.min.js b/program/js/tinymce/plugins/textcolor/plugin.min.js
new file mode 100644
index 000000000..e95134752
--- /dev/null
+++ b/program/js/tinymce/plugins/textcolor/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("textcolor",function(t){function e(e){var o;return t.dom.getParents(t.selection.getStart(),function(t){var r;(r=t.style["forecolor"==e?"color":"background-color"])&&(o=r)}),o}function o(){var e,o,r=[];for(o=t.settings.textcolor_map||["000000","Black","993300","Burnt orange","333300","Dark olive","003300","Dark green","003366","Dark azure","000080","Navy Blue","333399","Indigo","333333","Very dark gray","800000","Maroon","FF6600","Orange","808000","Olive","008000","Green","008080","Teal","0000FF","Blue","666699","Grayish blue","808080","Gray","FF0000","Red","FF9900","Amber","99CC00","Yellow green","339966","Sea green","33CCCC","Turquoise","3366FF","Royal blue","800080","Purple","999999","Medium gray","FF00FF","Magenta","FFCC00","Gold","FFFF00","Yellow","00FF00","Lime","00FFFF","Aqua","00CCFF","Sky blue","993366","Red violet","FFFFFF","White","FF99CC","Pink","FFCC99","Peach","FFFF99","Light yellow","CCFFCC","Pale green","CCFFFF","Pale cyan","99CCFF","Light sky blue","CC99FF","Plum"],e=0;e<o.length;e+=2)r.push({text:o[e+1],color:"#"+o[e]});return r}function r(){function e(t,e){var o="transparent"==t;return'<td class="mce-grid-cell'+(o?" mce-colorbtn-trans":"")+'"><div id="'+m+"-"+F++ +'" data-mce-color="'+(t?t:"")+'" role="option" tabIndex="-1" style="'+(t?"background-color: "+t:"")+'" title="'+tinymce.translate(e)+'">'+(o?"&#215;":"")+"</div></td>"}var r,l,a,n,c,d,u,g=this,m=g._id,F=0;for(r=o(),r.push({text:tinymce.translate("No color"),color:"transparent"}),a='<table class="mce-grid mce-grid-border mce-colorbutton-grid" role="list" cellspacing="0"><tbody>',n=r.length-1,d=0;s>d;d++){for(a+="<tr>",c=0;i>c;c++)u=d*i+c,u>n?a+="<td></td>":(l=r[u],a+=e(l.color,l.text));a+="</tr>"}if(t.settings.color_picker_callback){for(a+='<tr><td colspan="'+i+'" class="mce-custom-color-btn"><div id="'+m+'-c" class="mce-widget mce-btn mce-btn-small mce-btn-flat" role="button" tabindex="-1" aria-labelledby="'+m+'-c" style="width: 100%"><button type="button" role="presentation" tabindex="-1">'+tinymce.translate("Custom...")+"</button></div></td></tr>",a+="<tr>",c=0;i>c;c++)a+=e("","Custom color");a+="</tr>"}return a+="</tbody></table>"}function l(e,o){t.focus(),t.formatter.apply(e,{value:o}),t.nodeChanged()}function a(e){t.focus(),t.formatter.remove(e,{value:null},null,!0),t.nodeChanged()}function n(o){function r(t){s.hidePanel(),s.color(t),l(s.settings.format,t)}function n(t,e){t.style.background=e,t.setAttribute("data-mce-color",e)}var c,s=this.parent();if(tinymce.DOM.getParent(o.target,".mce-custom-color-btn")&&(s.hidePanel(),t.settings.color_picker_callback.call(t,function(t){var e,o,l,a=s.panel.getEl().getElementsByTagName("table")[0];for(e=tinymce.map(a.rows[a.rows.length-1].childNodes,function(t){return t.firstChild}),l=0;l<e.length&&(o=e[l],o.getAttribute("data-mce-color"));l++);if(l==i)for(l=0;i-1>l;l++)n(e[l],e[l+1].getAttribute("data-mce-color"));n(o,t),r(t)},e(s.settings.format))),c=o.target.getAttribute("data-mce-color")){if(this.lastId&&document.getElementById(this.lastId).setAttribute("aria-selected",!1),o.target.setAttribute("aria-selected",!0),this.lastId=o.target.id,"transparent"==c)return a(s.settings.format),void s.hidePanel();r(c)}else null!==c&&s.hidePanel()}function c(){var t=this;t._color&&l(t.settings.format,t._color)}var i,s;s=t.settings.textcolor_rows||5,i=t.settings.textcolor_cols||8,t.addButton("forecolor",{type:"colorbutton",tooltip:"Text color",format:"forecolor",panel:{role:"application",ariaRemember:!0,html:r,onclick:n},onclick:c}),t.addButton("backcolor",{type:"colorbutton",tooltip:"Background color",format:"hilitecolor",panel:{role:"application",ariaRemember:!0,html:r,onclick:n},onclick:c})}); \ No newline at end of file
diff --git a/program/js/tinymce/plugins/visualblocks/css/visualblocks.css b/program/js/tinymce/plugins/visualblocks/css/visualblocks.css
new file mode 100644
index 000000000..0c998c281
--- /dev/null
+++ b/program/js/tinymce/plugins/visualblocks/css/visualblocks.css
@@ -0,0 +1,135 @@
+.mce-visualblocks p {
+ padding-top: 10px;
+ border: 1px dashed #BBB;
+ margin-left: 3px;
+ background: transparent no-repeat url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7);
+}
+
+.mce-visualblocks h1 {
+ padding-top: 10px;
+ border: 1px dashed #BBB;
+ margin-left: 3px;
+ background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==);
+}
+
+.mce-visualblocks h2 {
+ padding-top: 10px;
+ border: 1px dashed #BBB;
+ margin-left: 3px;
+ background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==);
+}
+
+.mce-visualblocks h3 {
+ padding-top: 10px;
+ border: 1px dashed #BBB;
+ margin-left: 3px;
+ background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7);
+}
+
+.mce-visualblocks h4 {
+ padding-top: 10px;
+ border: 1px dashed #BBB;
+ margin-left: 3px;
+ background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==);
+}
+
+.mce-visualblocks h5 {
+ padding-top: 10px;
+ border: 1px dashed #BBB;
+ margin-left: 3px;
+ background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==);
+}
+
+.mce-visualblocks h6 {
+ padding-top: 10px;
+ border: 1px dashed #BBB;
+ margin-left: 3px;
+ background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==);
+}
+
+.mce-visualblocks div {
+ padding-top: 10px;
+ border: 1px dashed #BBB;
+ margin-left: 3px;
+ background: transparent no-repeat url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7);
+}
+
+.mce-visualblocks section {
+ padding-top: 10px;
+ border: 1px dashed #BBB;
+ margin: 0 0 1em 3px;
+ background: transparent no-repeat url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=);
+}
+
+.mce-visualblocks article {
+ padding-top: 10px;
+ border: 1px dashed #BBB;
+ margin: 0 0 1em 3px;
+ background: transparent no-repeat url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7);
+}
+
+.mce-visualblocks blockquote {
+ padding-top: 10px;
+ border: 1px dashed #BBB;
+ background: transparent no-repeat url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7);
+}
+
+.mce-visualblocks address {
+ padding-top: 10px;
+ border: 1px dashed #BBB;
+ margin: 0 0 1em 3px;
+ background: transparent no-repeat url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=);
+}
+
+.mce-visualblocks pre {
+ padding-top: 10px;
+ border: 1px dashed #BBB;
+ margin-left: 3px;
+ background: transparent no-repeat url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==);
+}
+
+.mce-visualblocks figure {
+ padding-top: 10px;
+ border: 1px dashed #BBB;
+ margin: 0 0 1em 3px;
+ background: transparent no-repeat url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7);
+}
+
+.mce-visualblocks hgroup {
+ padding-top: 10px;
+ border: 1px dashed #BBB;
+ margin: 0 0 1em 3px;
+ background: transparent no-repeat url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7);
+}
+
+.mce-visualblocks aside {
+ padding-top: 10px;
+ border: 1px dashed #BBB;
+ margin: 0 0 1em 3px;
+ background: transparent no-repeat url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=);
+}
+
+.mce-visualblocks figcaption {
+ border: 1px dashed #BBB;
+}
+
+.mce-visualblocks ul {
+ padding-top: 10px;
+ border: 1px dashed #BBB;
+ margin: 0 0 1em 3px;
+ background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)
+}
+
+.mce-visualblocks ol {
+ padding-top: 10px;
+ border: 1px dashed #BBB;
+ margin: 0 0 1em 3px;
+ background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==);
+}
+
+.mce-visualblocks dl {
+ padding-top: 10px;
+ border: 1px dashed #BBB;
+ margin: 0 0 1em 3px;
+ background: transparent no-repeat url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==);
+}
diff --git a/program/js/tinymce/plugins/visualblocks/plugin.min.js b/program/js/tinymce/plugins/visualblocks/plugin.min.js
new file mode 100644
index 000000000..8c48ed06a
--- /dev/null
+++ b/program/js/tinymce/plugins/visualblocks/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("visualblocks",function(e,s){function o(){var s=this;s.active(a),e.on("VisualBlocks",function(){s.active(e.dom.hasClass(e.getBody(),"mce-visualblocks"))})}var l,t,a;window.NodeList&&(e.addCommand("mceVisualBlocks",function(){var o,c=e.dom;l||(l=c.uniqueId(),o=c.create("link",{id:l,rel:"stylesheet",href:s+"/css/visualblocks.css"}),e.getDoc().getElementsByTagName("head")[0].appendChild(o)),e.on("PreviewFormats AfterPreviewFormats",function(s){a&&c.toggleClass(e.getBody(),"mce-visualblocks","afterpreviewformats"==s.type)}),c.toggleClass(e.getBody(),"mce-visualblocks"),a=e.dom.hasClass(e.getBody(),"mce-visualblocks"),t&&t.active(c.hasClass(e.getBody(),"mce-visualblocks")),e.fire("VisualBlocks")}),e.addButton("visualblocks",{title:"Show blocks",cmd:"mceVisualBlocks",onPostRender:o}),e.addMenuItem("visualblocks",{text:"Show blocks",cmd:"mceVisualBlocks",onPostRender:o,selectable:!0,context:"view",prependToContext:!0}),e.on("init",function(){e.settings.visualblocks_default_state&&e.execCommand("mceVisualBlocks",!1,null,{skip_focus:!0})}),e.on("remove",function(){e.dom.removeClass(e.getBody(),"mce-visualblocks")}))}); \ No newline at end of file
diff --git a/program/js/tinymce/plugins/visualchars/plugin.min.js b/program/js/tinymce/plugins/visualchars/plugin.min.js
new file mode 100644
index 000000000..fc7e109b7
--- /dev/null
+++ b/program/js/tinymce/plugins/visualchars/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("visualchars",function(e){function a(a){var t,s,i,r,c,d,l=e.getBody(),m=e.selection;if(n=!n,o.state=n,e.fire("VisualChars",{state:n}),a&&(d=m.getBookmark()),n)for(s=[],tinymce.walk(l,function(e){3==e.nodeType&&e.nodeValue&&-1!=e.nodeValue.indexOf(" ")&&s.push(e)},"childNodes"),i=0;i<s.length;i++){for(r=s[i].nodeValue,r=r.replace(/(\u00a0)/g,'<span data-mce-bogus="1" class="mce-nbsp">$1</span>'),c=e.dom.create("div",null,r);t=c.lastChild;)e.dom.insertAfter(t,s[i]);e.dom.remove(s[i])}else for(s=e.dom.select("span.mce-nbsp",l),i=s.length-1;i>=0;i--)e.dom.remove(s[i],1);m.moveToBookmark(d)}function t(){var a=this;e.on("VisualChars",function(e){a.active(e.state)})}var n,o=this;e.addCommand("mceVisualChars",a),e.addButton("visualchars",{title:"Show invisible characters",cmd:"mceVisualChars",onPostRender:t}),e.addMenuItem("visualchars",{text:"Show invisible characters",cmd:"mceVisualChars",onPostRender:t,selectable:!0,context:"view",prependToContext:!0}),e.on("beforegetcontent",function(e){n&&"raw"!=e.format&&!e.draft&&(n=!0,a(!1))})}); \ No newline at end of file
diff --git a/program/js/tinymce/plugins/wordcount/plugin.min.js b/program/js/tinymce/plugins/wordcount/plugin.min.js
new file mode 100644
index 000000000..1fd1518c8
--- /dev/null
+++ b/program/js/tinymce/plugins/wordcount/plugin.min.js
@@ -0,0 +1 @@
+tinymce.PluginManager.add("wordcount",function(e){function t(){e.theme.panel.find("#wordcount").text(["Words: {0}",a.getCount()])}var n,o,a=this;n=e.getParam("wordcount_countregex",/[\w\u2019\x27\-\u00C0-\u1FFF]+/g),o=e.getParam("wordcount_cleanregex",/[0-9.(),;:!?%#$?\x27\x22_+=\\\/\-]*/g),e.on("init",function(){var n=e.theme.panel&&e.theme.panel.find("#statusbar")[0];n&&window.setTimeout(function(){n.insert({type:"label",name:"wordcount",text:["Words: {0}",a.getCount()],classes:"wordcount",disabled:e.settings.readonly},0),e.on("setcontent beforeaddundo",t),e.on("keyup",function(e){32==e.keyCode&&t()})},0)}),a.getCount=function(){var t=e.getContent({format:"raw"}),a=0;if(t){t=t.replace(/\.\.\./g," "),t=t.replace(/<.[^<>]*?>/g," ").replace(/&nbsp;|&#160;/gi," "),t=t.replace(/(\w+)(&#?[a-z0-9]+;)+(\w+)/i,"$1$3").replace(/&.+?;/g," "),t=t.replace(o,"");var r=t.match(n);r&&(a=r.length)}return a}}); \ No newline at end of file
diff --git a/program/js/tinymce/roundcube/browser.css b/program/js/tinymce/roundcube/browser.css
new file mode 100644
index 000000000..0993af845
--- /dev/null
+++ b/program/js/tinymce/roundcube/browser.css
@@ -0,0 +1,90 @@
+/* This file contains the CSS data for media file selector of TinyMCE */
+#image-selector-list {
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 152px;
+ height: 100%;
+ overflow-x: hidden;
+ overflow-y: auto;
+}
+
+#image-selector-form {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ right: 0;
+ width: 150px;
+ border: 0;
+ border: 1px solid #FFF;
+ border-left: 1px solid #DDD;
+ text-align: center;
+ padding-top: 10px;
+}
+
+#image-upload-button {
+ width: 80%;
+ height: 30px;
+}
+
+#image-upload-button span {
+ position: absolute;
+ width: 100%;
+ text-align: center;
+ line-height: 30px;
+}
+
+#image-selector-list li {
+ line-height: 80px;
+ padding: 2px 0 2px 3px;
+ cursor: pointer;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+#image-selector-list li:hover,
+#image-selector-list li:focus {
+ background-color: #F0F0F0;
+}
+
+#image-selector-list ul li img {
+ vertical-align: middle;
+ max-height: 80px;
+}
+
+#image-selector-list ul li span.name {
+ vertical-align: middle;
+ font-weight: bold;
+ padding-left: 10px;
+}
+
+#image-selector-list ul li span.img {
+ height: 80px;
+ width: 80px;
+ text-align: center;
+ display: inline-block;
+ overflow: hidden;
+ line-height: 80px;
+}
+
+#image-selector-form.droptarget.hover,
+#image-selector-form.droptarget.active {
+ border: 1px solid #019bc6;
+ box-shadow: 0 0 3px 2px rgba(71,135,177, 0.5);
+ -moz-box-shadow: 0 0 3px 2px rgba(71,135,177, 0.5);
+ -webkit-box-shadow: 0 0 3px 2px rgba(71,135,177, 0.5);
+}
+
+#image-selector-form.droptarget.hover {
+ background-color: #d9ecf4;
+ box-shadow: 0 0 5px 2px rgba(71,135,177, 0.9);
+ -moz-box-shadow: 0 0 5px 2px rgba(71,135,177, 0.9);
+ -webkit-box-shadow: 0 0 5px 2px rgba(71,135,177, 0.9);
+}
+
+div.mce-abs-end div.hint {
+ line-height: 50px;
+ padding-left: 10px;
+ color: #999;
+ text-shadow: 0 1px 1px #FFF;
+}
diff --git a/skins/classic/editor_content.css b/program/js/tinymce/roundcube/content.css
index aabed07b5..67480ab77 100644
--- a/skins/classic/editor_content.css
+++ b/program/js/tinymce/roundcube/content.css
@@ -12,20 +12,15 @@ body {
margin-top: 2px;
}
-pre
-{
+div.pre {
margin: 0;
padding: 0;
- white-space: -moz-pre-wrap !important;
- white-space: pre-wrap !important;
- white-space: pre;
- word-wrap: break-word; /* IE (and Safari) */
+ font-family: monospace;
}
blockquote
{
- padding-left: 5px;
border-left: #1010ff 2px solid;
- margin-left: 5px;
- width: 100%;
+ margin: 0;
+ padding: 0 0.4em;
}
diff --git a/program/js/tinymce/roundcube/video.png b/program/js/tinymce/roundcube/video.png
new file mode 100644
index 000000000..faf657000
--- /dev/null
+++ b/program/js/tinymce/roundcube/video.png
Binary files differ
diff --git a/program/js/tinymce/skins/lightgray/content.inline.min.css b/program/js/tinymce/skins/lightgray/content.inline.min.css
new file mode 100644
index 000000000..9f194f6a6
--- /dev/null
+++ b/program/js/tinymce/skins/lightgray/content.inline.min.css
@@ -0,0 +1 @@
+.mce-object{border:1px dotted #3A3A3A;background:#d5d5d5 url(img/object.gif) no-repeat center}.mce-pagebreak{cursor:default;display:block;border:0;width:100%;height:5px;border:1px dashed #666;margin-top:15px;page-break-before:always}@media print{.mce-pagebreak{border:0px}}.mce-item-anchor{cursor:default;display:inline-block;-webkit-user-select:all;-webkit-user-modify:read-only;-moz-user-select:all;-moz-user-modify:read-only;user-select:all;user-modify:read-only;width:9px !important;height:9px !important;border:1px dotted #3A3A3A;background:#d5d5d5 url(img/anchor.gif) no-repeat center}.mce-nbsp{background:#AAA}hr{cursor:default}.mce-match-marker{background:#AAA;color:#fff}.mce-match-marker-selected{background:#3399ff;color:#fff}.mce-spellchecker-word{border-bottom:2px solid #F00;cursor:default}.mce-spellchecker-grammar{border-bottom:2px solid #008000;cursor:default}.mce-item-table,.mce-item-table td,.mce-item-table th,.mce-item-table caption{border:1px dashed #BBB}td.mce-item-selected,th.mce-item-selected{background-color:#3399ff !important}.mce-edit-focus{outline:1px dotted #333} \ No newline at end of file
diff --git a/program/js/tinymce/skins/lightgray/content.min.css b/program/js/tinymce/skins/lightgray/content.min.css
new file mode 100644
index 000000000..ea08c6896
--- /dev/null
+++ b/program/js/tinymce/skins/lightgray/content.min.css
@@ -0,0 +1 @@
+body{background-color:#FFFFFF;color:#000000;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:11px;scrollbar-3dlight-color:#F0F0EE;scrollbar-arrow-color:#676662;scrollbar-base-color:#F0F0EE;scrollbar-darkshadow-color:#DDDDDD;scrollbar-face-color:#E0E0DD;scrollbar-highlight-color:#F0F0EE;scrollbar-shadow-color:#F0F0EE;scrollbar-track-color:#F5F5F5}td,th{font-family:Verdana,Arial,Helvetica,sans-serif;font-size:11px}.mce-object{border:1px dotted #3A3A3A;background:#d5d5d5 url(img/object.gif) no-repeat center}.mce-pagebreak{cursor:default;display:block;border:0;width:100%;height:5px;border:1px dashed #666;margin-top:15px;page-break-before:always}@media print{.mce-pagebreak{border:0px}}.mce-item-anchor{cursor:default;display:inline-block;-webkit-user-select:all;-webkit-user-modify:read-only;-moz-user-select:all;-moz-user-modify:read-only;user-select:all;user-modify:read-only;width:9px !important;height:9px !important;border:1px dotted #3A3A3A;background:#d5d5d5 url(img/anchor.gif) no-repeat center}.mce-nbsp{background:#AAA}hr{cursor:default}.mce-match-marker{background:#AAA;color:#fff}.mce-match-marker-selected{background:#3399ff;color:#fff}.mce-spellchecker-word{border-bottom:2px solid #F00;cursor:default}.mce-spellchecker-grammar{border-bottom:2px solid #008000;cursor:default}.mce-item-table,.mce-item-table td,.mce-item-table th,.mce-item-table caption{border:1px dashed #BBB}td.mce-item-selected,th.mce-item-selected{background-color:#3399ff !important}.mce-edit-focus{outline:1px dotted #333} \ No newline at end of file
diff --git a/program/js/tinymce/skins/lightgray/fonts/readme.md b/program/js/tinymce/skins/lightgray/fonts/readme.md
new file mode 100644
index 000000000..fa5d63946
--- /dev/null
+++ b/program/js/tinymce/skins/lightgray/fonts/readme.md
@@ -0,0 +1 @@
+Icons are generated and provided by the http://icomoon.io service.
diff --git a/program/js/tinymce/skins/lightgray/fonts/tinymce-small.dev.svg b/program/js/tinymce/skins/lightgray/fonts/tinymce-small.dev.svg
new file mode 100644
index 000000000..578b86954
--- /dev/null
+++ b/program/js/tinymce/skins/lightgray/fonts/tinymce-small.dev.svg
@@ -0,0 +1,175 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG font generated by IcoMoon.
+<iconset grid="16"></iconset>
+</metadata>
+<defs>
+<font id="tinymce-small" horiz-adv-x="512" >
+<font-face units-per-em="512" ascent="480" descent="-32" />
+<missing-glyph horiz-adv-x="512" />
+<glyph class="hidden" unicode="&#xf000;" d="M0,480L 512 -32L0 -32 z" horiz-adv-x="0" />
+<glyph unicode="&#xe020;" d="M 352,64l0,18.502 c 75.674,30.814, 128,96.91, 128,173.498c0,106.039-100.288,192-224,192S 32,362.039, 32,256
+ c0-76.588, 52.327-142.684, 128-173.498L 160,64 L 64,64 l-32,48l0-112 l 160,0 L 192,111.406 c-50.45,25.681-85.333,80.77-85.333,144.594
+ c0,88.366, 66.859,160, 149.333,160c 82.474,0, 149.333-71.634, 149.333-160c0-63.824-34.883-118.913-85.333-144.594L 320,0 l 160,0 L 480,112 l-32-48
+ L 352,64 z" />
+<glyph unicode="&#xe013;" d="M 128,448l0-448 l 128,128l 128-128L 384,448 L 128,448 z M 352,85.255l-96,96l-96-96L 160,416 l 192,0 L 352,85.255 z" />
+<glyph unicode="&#xe012;" d="M 463.637,364.892l-66.745,66.744C 386.34,442.188, 372.276,448, 357.293,448s-29.047-5.812-39.598-16.363l-82.746-82.745
+ c-21.834-21.834-21.834-57.362,0-79.196l 1.373-1.373l 33.941,33.941l-1.373,1.373c-3.066,3.066-3.066,8.247,0,11.313l 82.746,82.746
+ C 353.641,399.7, 356.040,400, 357.292,400s 3.651-0.299, 5.656-2.305l 66.745-66.744c 3.066-3.067, 3.066-8.249, 0.001-11.314l-82.747-82.747
+ c-2.004-2.004-4.403-2.304-5.655-2.304s-3.651,0.3-5.656,2.306l-1.373,1.373l-33.94-33.942l 1.371-1.371
+ c 10.553-10.554, 24.615-16.364, 39.6-16.364s 29.047,5.812, 39.598,16.363l 82.747,82.746C 485.47,307.53, 485.47,343.057, 463.637,364.892
+ zM 275.678,179.678l-33.941-33.941l 1.373-1.373c 2.004-2.004, 2.305-4.403, 2.305-5.655c0-1.253-0.299-3.651-2.303-5.657
+ l-82.747-82.745c-2.005-2.005-4.405-2.305-5.657-2.305s-3.652,0.3-5.657,2.305L 82.305,117.050C 80.3,119.055, 80,121.455, 80,122.707
+ s 0.299,3.65, 2.305,5.656l 82.745,82.744c 2.005,2.006, 4.405,2.306, 5.657,2.306s 3.652-0.3, 5.657-2.306l 1.373-1.371l 33.941,33.94
+ l-1.373,1.373c-10.552,10.552-24.615,16.363-39.598,16.363s-29.046-5.812-39.598-16.363l-82.744-82.743
+ C 37.812,151.754, 32,137.689, 32,122.707s 5.812-29.047, 16.363-39.599l 66.745-66.745C 125.661,5.812, 139.724,0, 154.707,0
+ s 29.046,5.812, 39.598,16.363l 82.747,82.746c 10.552,10.552, 16.361,24.615, 16.361,39.598s-5.812,29.047-16.363,39.598
+ L 275.678,179.678zM 400,61c-4.862,0-9.725,1.854-13.435,5.565l-64,63.999c-7.422,7.42-7.422,19.449,0,26.869
+ c 7.42,7.422, 19.448,7.422, 26.868,0l 64-64c 7.422-7.42, 7.422-19.448,0-26.868C 409.725,62.854, 404.862,61, 400,61zM 304,0c-8.837,0-16,7.163-16,16l0,64 c0,8.837, 7.163,16, 16,16s 16-7.163, 16-16l0-64 C 320,7.163, 312.837,0, 304,0zM 464,160l-64,0 c-8.837,0-16,7.163-16,16s 7.163,16, 16,16l 64,0 c 8.837,0, 16-7.163, 16-16S 472.837,160, 464,160zM 112,387c 4.862,0, 9.725-1.854, 13.435-5.565l 64-64c 7.421-7.42, 7.421-19.449,0-26.869c-7.42-7.422-19.449-7.422-26.869,0
+ l-64,64c-7.421,7.42-7.421,19.449,0,26.869C 102.275,385.146, 107.138,387, 112,387zM 208,448c 8.837,0, 16-7.163, 16-16l0-64 c0-8.837-7.163-16-16-16s-16,7.163-16,16L 192,432 C 192,440.837, 199.163,448, 208,448zM 48,288l 64,0 c 8.837,0, 16-7.163, 16-16s-7.163-16-16-16L 48,256 c-8.837,0-16,7.163-16,16S 39.163,288, 48,288z" />
+<glyph unicode="&#xe011;" d="M 463.637,364.892l-66.745,66.744C 386.34,442.188, 372.276,448, 357.293,448s-29.047-5.812-39.598-16.363l-82.746-82.745
+ c-21.834-21.834-21.834-57.362,0-79.196l 1.373-1.373l 33.941,33.941l-1.373,1.373c-3.066,3.066-3.066,8.247,0,11.313l 82.746,82.746
+ C 353.641,399.7, 356.040,400, 357.292,400s 3.651-0.299, 5.656-2.305l 66.745-66.744c 3.066-3.067, 3.066-8.249, 0.001-11.314l-82.747-82.747
+ c-2.004-2.004-4.403-2.304-5.655-2.304s-3.651,0.3-5.656,2.306l-1.373,1.373l-33.94-33.942l 1.371-1.371
+ c 10.553-10.554, 24.615-16.364, 39.6-16.364s 29.047,5.812, 39.598,16.363l 82.747,82.746C 485.47,307.53, 485.47,343.057, 463.637,364.892
+ zM 275.678,179.678l-33.941-33.941l 1.373-1.373c 2.004-2.004, 2.305-4.403, 2.305-5.655c0-1.253-0.299-3.651-2.303-5.657
+ l-82.747-82.745c-2.005-2.005-4.405-2.305-5.657-2.305s-3.652,0.3-5.657,2.305L 82.305,117.050C 80.3,119.055, 80,121.455, 80,122.707
+ s 0.299,3.65, 2.305,5.656l 82.745,82.744c 2.005,2.006, 4.405,2.306, 5.657,2.306s 3.652-0.3, 5.657-2.306l 1.373-1.371l 33.941,33.94
+ l-1.373,1.373c-10.552,10.552-24.615,16.363-39.598,16.363s-29.046-5.812-39.598-16.363l-82.744-82.743
+ C 37.812,151.754, 32,137.689, 32,122.707s 5.812-29.047, 16.363-39.599l 66.745-66.745C 125.661,5.812, 139.724,0, 154.707,0
+ s 29.046,5.812, 39.598,16.363l 82.747,82.746c 10.552,10.552, 16.361,24.615, 16.361,39.598s-5.812,29.047-16.363,39.598
+ L 275.678,179.678zM 176,125c-4.862,0-9.725,1.855-13.435,5.564c-7.42,7.42-7.42,19.449,0,26.869l 160,160c 7.42,7.42, 19.448,7.42, 26.868,0
+ c 7.422-7.42, 7.422-19.45,0-26.87l-160-160C 185.725,126.855, 180.862,125, 176,125z" />
+<glyph unicode="&#xe010;" d="M 288,339.337L 288,448 l 168.001-168L 288,112L 288,223.048 C 92.547,227.633, 130.5,99.5, 160,0C 16,160, 53.954,345.437, 288,339.337z" />
+<glyph unicode="&#xe00f;" d="M 352,0c 29.5,99.5, 67.453,227.633-128,223.048L 224,112 L 55.999,280L 224,448l0-108.663 C 458.046,345.437, 496,160, 352,0z" />
+<glyph unicode="&#xe00e;" d="M 128.214,267.637c 52.9,0, 95.786-45.585, 95.786-101.819C 224,109.586, 181.114,64, 128.214,64
+ c-52.901,0-95.786,45.585-95.786,101.818L 32,180.364C 32,292.829, 117.77,384, 223.572,384l0-58.182 c-36.55,0-70.913-15.13-96.758-42.602
+ c-4.977-5.289-9.517-10.917-13.612-16.828C 118.094,267.208, 123.105,267.637, 128.214,267.637zM 384.214,267.637c 52.9,0, 95.786-45.585, 95.786-101.819C 480,109.586, 437.114,64, 384.214,64
+ c-52.901,0-95.786,45.585-95.786,101.818L 288,180.364C 288,292.829, 373.77,384, 479.572,384l0-58.182 c-36.55,0-70.913-15.13-96.758-42.602
+ c-4.978-5.289-9.518-10.917-13.612-16.828C 374.094,267.208, 379.105,267.637, 384.214,267.637z" />
+<glyph unicode="&#xe00c;" d="M 32,384L 480,384L 480,320L 32,320zM 192,192L 480,192L 480,128L 192,128zM 192,288L 480,288L 480,224L 192,224zM 32,96L 480,96L 480,32L 32,32zM 32,288L 144,208L 32,128 z" />
+<glyph unicode="&#xe00d;" d="M 32,384L 480,384L 480,320L 32,320zM 32,192L 320,192L 320,128L 32,128zM 32,288L 320,288L 320,224L 32,224zM 32,96L 480,96L 480,32L 32,32zM 480,288L 368,208L 480,128 z" />
+<glyph unicode="&#xe00b;" d="M 192,416L 480,416L 480,352L 192,352zM 192,256L 480,256L 480,192L 192,192zM 192,96L 480,96L 480,32L 192,32zM 160,215L 160,288L 128,288L 128,448L 64,448L 64,416L 96,416L 96,288L 64,288L 64,256L 128,256L 128,231L 64,201L 64,128L 128,128L 128,96L 64,96L 64,64L 128,64L 128,32L 64,32L 64,0L 160,0L 160,160L 96,160L 96,185 z" />
+<glyph unicode="&#xe00a;" d="M 192,416L 480,416L 480,352L 192,352zM 192,256L 480,256L 480,192L 192,192zM 192,96L 480,96L 480,32L 192,32zM 64,384A32,32 2700 1 1 128,384A32,32 2700 1 1 64,384zM 64,224A32,32 2700 1 1 128,224A32,32 2700 1 1 64,224zM 64,64A32,32 2700 1 1 128,64A32,32 2700 1 1 64,64z" />
+<glyph unicode="&#xe009;" d="M 444,288l-28,0 L 416,416 l 32,0 L 448,448 L 288,448 l0-32 l 32,0 l0-128 L 192,288 L 192,416 l 32,0 L 224,448 L 64,448 l0-32 l 32,0 l0-128 L 68,288 c-19.8,0-36-16.2-36-36l0-216 c0-19.8, 16.2-36, 36-36l 120,0
+ c 19.8,0, 36,16.2, 36,36L 224,192 l 64,0 l0-156 c0-19.8, 16.2-36, 36-36l 120,0 c 19.8,0, 36,16.2, 36,36L 480,252 C 480,271.8, 463.8,288, 444,288z M 174,32L 82,32
+ c-9.9,0-18,7.2-18,16s 8.1,16, 18,16l 92,0 c 9.9,0, 18-7.2, 18-16S 183.9,32, 174,32z M 272,224l-32,0 c-8.8,0-16,7.2-16,16s 7.2,16, 16,16l 32,0
+ c 8.8,0, 16-7.2, 16-16S 280.8,224, 272,224z M 430,32l-92,0 c-9.9,0-18,7.2-18,16s 8.1,16, 18,16l 92,0 c 9.9,0, 18-7.2, 18-16S 439.9,32, 430,32z" />
+<glyph unicode="&#xe008;" d="M 352,288l0,80 c0,8.8-7.2,16-16,16l-80,0 L 256,416 c0,17.6-14.4,32-32,32l-64,0 c-17.602,0-32-14.4-32-32l0-32 L 48,384 c-8.801,0-16-7.2-16-16l0-256
+ c0-8.8, 7.199-16, 16-16l 112,0 l0-96 l 192,0 l 96,96L 448,288 L 352,288 z M 160,415.943c 0.017,0.019, 0.036,0.039, 0.057,0.057l 63.884,0
+ c 0.021-0.018, 0.041-0.038, 0.059-0.057L 224,384 l-64,0 L 160,415.943 L 160,415.943z M 96,320l0,32 l 192,0 l0-32 L 96,320 z M 352,45.255L 352,96 l 50.745,0 L 352,45.255z
+ M 416,128l-96,0 l0-96 L 192,32 L 192,256 l 224,0 L 416,128 z" />
+<glyph unicode="&#xe031;" d="M 416,320l-96,0 l0,32 l-96,96L 32,448 l0-352 l 192,0 l0-96 l 288,0 L 512,224 L 416,320z M 416,274.745L 466.745,224L 416,224 L 416,274.745 z M 224,402.745L 274.745,352
+ L 224,352 L 224,402.745 z M 64,416l 128,0 l0-96 l 96,0 l0-192 L 64,128 L 64,416 z M 480,32L 256,32 l0,64 l 64,0 L 320,288 l 64,0 l0-96 l 96,0 L 480,32 z" />
+<glyph unicode="&#xe007;" d="M 432.204,144.934c-23.235,23.235-53.469,34.002-80.541,31.403L 320,208l 96,96c0,0, 64,64,0,128L 256,272L 96,432
+ c-64-64,0-128,0-128l 96-96l-31.663-31.663c-27.072,2.599-57.305-8.169-80.54-31.403c-37.49-37.49-42.556-93.209-11.313-124.45
+ c 31.241-31.241, 86.96-26.177, 124.45,11.313c 23.235,23.234, 34.001,53.469, 31.403,80.54L 256,144l 31.664-31.664
+ c-2.598-27.072, 8.168-57.305, 31.403-80.539c 37.489-37.49, 93.209-42.556, 124.449-11.313
+ C 474.76,51.725, 469.694,107.443, 432.204,144.934z M 176.562,100.711c-1.106-12.166-7.51-24.913-17.57-34.973
+ C 147.886,54.631, 133.452,48, 120.383,48c-5.262,0-12.649,1.114-17.958,6.424c-10.703,10.702-8.688,36.566, 11.313,56.568
+ c 11.106,11.107, 25.54,17.738, 38.609,17.738c 5.262,0, 12.649-1.114, 17.958-6.424C 176.861,115.751, 177.040,105.962, 176.562,100.711z
+ M 256,176c-17.673,0-32,14.327-32,32s 14.327,32, 32,32s 32-14.327, 32-32S 273.673,176, 256,176z M 409.576,54.424
+ c-5.31-5.31-12.696-6.424-17.958-6.424c-13.069,0-27.503,6.631-38.609,17.738c-10.061,10.060-16.464,22.807-17.569,34.973
+ c-0.479,5.251-0.3,15.040, 6.257,21.596c 5.309,5.311, 12.695,6.424, 17.958,6.424c 13.068,0, 27.503-6.631, 38.608-17.737
+ C 418.265,90.99, 420.279,65.126, 409.576,54.424z" />
+<glyph unicode="&#xe006;" d="M 32,384L 480,384L 480,320L 32,320zM 32,192L 480,192L 480,128L 32,128zM 32,288L 480,288L 480,224L 32,224zM 32,96L 480,96L 480,32L 32,32z" />
+<glyph unicode="&#xe004;" d="M 32,384L 480,384L 480,320L 32,320zM 32,192L 480,192L 480,128L 32,128zM 128,288L 384,288L 384,224L 128,224zM 128,96L 384,96L 384,32L 128,32z" />
+<glyph unicode="&#xe005;" d="M 32,384L 480,384L 480,320L 32,320zM 32,192L 480,192L 480,128L 32,128zM 192,288L 480,288L 480,224L 192,224zM 192,96L 480,96L 480,32L 192,32z" />
+<glyph unicode="&#xe003;" d="M 32,384L 480,384L 480,320L 32,320zM 32,192L 480,192L 480,128L 32,128zM 32,288L 320,288L 320,224L 32,224zM 32,96L 320,96L 320,32L 32,32z" />
+<glyph unicode="&#xe02d;" d="M 480,224l-4.571,0 L 347.062,224 c-25.039,17.71-57.215,27.43-91.062,27.43c-44.603,0-82.286,25.121-82.286,54.856
+ c0,29.735, 37.683,54.857, 82.286,54.857c 37.529,0, 70.154-17.788, 79.56-41.143l 56.508,0 c-3.965,25.322-18.79,48.984-42.029,66.413
+ C 324.599,405.493, 291.201,416, 256,416c-35.202,0-68.598-10.507-94.037-29.587c-27.394-20.545-43.106-49.751-43.106-80.127
+ s 15.712-59.582, 43.106-80.127c 0.978-0.733, 1.971-1.449, 2.973-2.158L 36.571,224.001 L 32,224.001 l0-32 l 256.266,0 c 29.104-8.553, 50.021-28.135, 50.021-50.286
+ c0-29.734-37.684-54.855-82.286-54.855c-37.53,0-70.154,17.787-79.559,41.143l-56.508,0 c 3.965-25.32, 18.791-48.984, 42.030-66.413
+ C 187.402,42.508, 220.798,32, 256,32c 35.201,0, 68.599,10.508, 94.037,29.587c 27.395,20.545, 43.104,49.751, 43.104,80.127
+ c0,17.649-5.327,34.896-15.147,50.286L 480,192 L 480,224 z" />
+<glyph unicode="&#xe02c;" d="M 96,64l 288,0 l0-32 L 96,32 L 96,64 zM 320,416l0-192 c0-15.656-7.35-30.812-20.695-42.676C 283.834,167.573, 262.771,160, 240,160c-22.772,0-43.834,7.573-59.304,21.324
+ C 167.35,193.188, 160,208.344, 160,224L 160,416 L 96,416 l0-192 c0-70.691, 64.471-128, 144-128c 79.529,0, 144,57.309, 144,128L 384,416 L 320,416 z" />
+<glyph unicode="&#xe02b;" d="M 416,416l0-32 l-72,0 L 216,64l 72,0 l0-32 L 64,32 l0,32 l 72,0 L 264,384l-72,0 L 192,416 L 416,416 z" />
+<glyph unicode="&#xe02a;" d="M 312.721,232.909C 336.758,251.984, 352,280.337, 352,312c0,57.438-50.145,104-112,104L 128,416 l0-384 l 144,0
+ c 61.856,0, 112,46.562, 112,104C 384,180.098, 354.441,217.781, 312.721,232.909z M 192,328c0,13.255, 10.745,24, 24,24l 33.602,0
+ C 270.809,352, 288,330.51, 288,304s-17.191-48-38.398-48L 192,256 L 192,328 z M 273.6,96L 216,96 c-13.255,0-24,10.745-24,24l0,72 l 81.6,0
+ c 21.209,0, 38.4-21.49, 38.4-48S 294.809,96, 273.6,96z" />
+<glyph unicode="&#xe001;" d="M 425.373,358.627l-66.746,66.745C 346.183,437.818, 321.6,448, 304,448L 96,448 c-17.6,0-32-14.4-32-32l0-384 c0-17.6, 14.4-32, 32-32l 320,0
+ c 17.6,0, 32,14.4, 32,32L 448,304 C 448,321.6, 437.817,346.182, 425.373,358.627z M 402.745,336.001c 3.396-3.398, 6.896-9.581, 9.447-16.001L 320,320
+ L 320,412.193 c 6.42-2.55, 12.602-6.050, 16-9.448L 402.745,336.001z M 415.942,32L 96.057,32 c-0.020,0.017-0.041,0.038-0.057,0.058L 96,415.943
+ c 0.017,0.020, 0.038,0.041, 0.057,0.057L 288,416 l0-128 l 128,0 l0-255.942 C 415.983,32.038, 415.962,32.017, 415.942,32z" />
+<glyph unicode="&#xe000;" d="M 480,40L 480,335.969 L 368.031,448L 72,448 c-22.091,0-40-17.908-40-40l0-368 c0-22.092, 17.909-40, 40-40l 368,0
+ C 462.092,0, 480,17.908, 480,40z M 288,384l 32,0 l0-96 l-32,0 L 288,384 z M 352,64L 160,64 L 160,191.941 c 0.017,0.021, 0.038,0.041, 0.058,0.059l 191.885,0
+ c 0.020-0.018, 0.041-0.038, 0.058-0.059L 352,64L 352,64z M 416,64l-32,0 L 384,192 c0,17.6-14.4,32-32,32L 160,224 c-17.6,0-32-14.4-32-32l0-128 L 96,64 L 96,384
+ l 32,0 l0-96 c0-17.6, 14.4-32, 32-32l 160,0 c 17.6,0, 32,14.4, 32,32l0,85.505 l 64-64.036L 416,64 z" />
+<glyph unicode="&#xe01b;" d="M 32,384l0-352 l 448,0 L 480,384 L 32,384 z M 192,160l0,64 l 128,0 l0-64 L 192,160 z M 320,128l0-64 L 192,64 l0,64 L 320,128 z M 320,320l0-64 L 192,256 l0,64 L 320,320 z M 160,320l0-64 L 64,256 l0,64 L 160,320
+ z M 64,224l 96,0 l0-64 L 64,160 L 64,224 z M 352,224l 96,0 l0-64 l-96,0 L 352,224 z M 352,256l0,64 l 96,0 l0-64 L 352,256 z M 64,128l 96,0 l0-64 L 64,64 L 64,128 z M 352,64l0,64 l 96,0 l0-64 L 352,64 z" />
+<glyph unicode="&#xe021;" d="M 256,410c 49.683,0, 96.391-19.347, 131.521-54.478S 442,273.683, 442,224s-19.348-96.391-54.479-131.521S 305.683,38, 256,38
+ s-96.391,19.348-131.522,54.479S 70,174.317, 70,224s 19.347,96.391, 54.478,131.522S 206.317,410, 256,410 M 256,448
+ C 132.288,448, 32,347.712, 32,224s 100.288-224, 224-224s 224,100.288, 224,224S 379.712,448, 256,448L 256,448zM 160,288A32,32 2700 1 1 224,288A32,32 2700 1 1 160,288zM 288,288A32,32 2700 1 1 352,288A32,32 2700 1 1 288,288zM 256,152c-50.92,0-96.28,18.437-125.583,47.164C 141.98,140.36, 193.806,96, 256,96c 62.194,0, 114.020,44.36, 125.584,103.164
+ C 352.28,170.437, 306.92,152, 256,152z" />
+<glyph unicode="&#xe023;" d="M 240,288L 144,384L 208,448L 32,448L 32,272L 96,336L 192,240 zM 320,240L 416,336L 480,272L 480,448L 304,448L 368,384L 272,288 zM 272,160L 368,64L 304,0L 480,0L 480,176L 416,112L 320,208 zM 192,208L 96,112L 32,176L 32,0L 208,0L 144,64L 240,160 z" />
+<glyph unicode="&#xe01c;" d="M 32,256L 480,256L 480,192L 32,192z" />
+<glyph unicode="&#xe01d;" d="M 32,96l 256,0 l0-64 L 32,32 L 32,96 z M 384,384L 273.721,384 l-91.883-256l-66.144,0 l 91.881,256L 96,384 L 96,448 l 288,0 L 384,384 z M 464.887,32L 400,96.887
+ L 335.113,32L 304,63.113L 368.887,128L 304,192.887L 335.113,224L 400,159.113L 464.887,224L 496,192.887L 431.113,128L 496,63.113
+ L 464.887,32z" />
+<glyph unicode="&#xe022;" d="M 128,416l 256,0 l0-64 L 128,352 L 128,416 z M 448,320L 64,320 c-17.6,0-32-14.4-32-32l0-128 c0-17.6, 14.398-32, 32-32l 64,0 l0-96 l 256,0 l0,96 l 64,0
+ c 17.6,0, 32,14.4, 32,32L 480,288 C 480,305.6, 465.6,320, 448,320z M 352,64L 160,64 L 160,192 l 192,0 L 352,64 z M 455.2,272c0-12.813-10.387-23.2-23.199-23.2
+ S 408.8,259.187, 408.8,272s 10.389,23.2, 23.201,23.2C 444.814,295.2, 455.2,284.813, 455.2,272z" />
+<glyph unicode="&#xe02e;" d="M 192,416c-61.856,0-112-50.144-112-112s 50.144-112, 112-112l0-160 l 64,0 L 256,352 l 32,0 l0-320 l 64,0 L 352,352 l 64,0 L 416,416 L 192,416 z" />
+<glyph unicode="&#xe02f;" d="M 224,416c-61.856,0-112-50.144-112-112s 50.144-112, 112-112l0-160 l 64,0 L 288,352 l 32,0 l0-320 l 64,0 L 384,352 l 64,0 L 448,416 L 224,416 zM 32,32L 144,128L 32,224 z" />
+<glyph unicode="&#xe030;" d="M 160,416C 98.144,416, 48,365.856, 48,304s 50.144-112, 112-112l0-160 l 64,0 L 224,352 l 32,0 l0-320 l 64,0 L 320,352 l 64,0 L 384,416 L 160,416 zM 480,224L 368,128L 480,32 z" />
+<glyph unicode="&#xe026;" d="M 256,288L 320,288L 320,256L 256,256zM 256,96L 320,96L 320,64L 256,64zM 288,192L 352,192L 352,160L 288,160zM 384,192L 384,96L 352,96L 352,64L 416,64L 416,192 zM 192,192L 256,192L 256,160L 192,160zM 160,96L 224,96L 224,64L 160,64zM 160,288L 224,288L 224,256L 160,256zM 96,384L 96,256L 128,256L 128,352L 160,352L 160,384 zM 352,256L 416,256L 416,384L 384,384L 384,288L 352,288 zM 32,448l0-448 l 448,0 L 480,448 L 32,448 z M 448,32L 64,32 L 64,416 l 384,0 L 448,32 zM 96,192L 96,64L 128,64L 128,160L 160,160L 160,192 zM 288,384L 352,384L 352,352L 288,352zM 192,384L 256,384L 256,352L 192,352z" />
+<glyph unicode="&#xe027;" d="M 408,448l 8-192L 96,256 l 8,192l 16,0 l 8-160l 256,0 l 8,160L 408,448 z M 104,0l-8,160l 320,0 l-8-160l-16,0 l-8,128L 128,128 l-8-128L 104,0 zM 32,224L 96,224L 96,192L 32,192zM 128,224L 192,224L 192,192L 128,192zM 224,224L 288,224L 288,192L 224,192zM 320,224L 384,224L 384,192L 320,192zM 416,224L 480,224L 480,192L 416,192z" />
+<glyph unicode="&#xe024;" d="M 480,416L 480,448 l-96,0 c-17.601,0-32-14.4-32-32l0-160 c0-7.928, 2.929-15.201, 7.748-20.807L 208,105l-71,74l-41-35l 112-144l 208,224l 64,0
+ l0,32 l-96,0 L 384,416 L 480,416 zM 128,224l 32,0 L 160,416 c0,17.6-14.4,32-32,32L 64,448 c-17.6,0-32-14.4-32-32l0-192 l 32,0 l0,96 l 64,0 L 128,224 z M 64,352L 64,416 l 64,0 l0-64 L 64,352 zM 320,256l0,48 c0,17.6-4.4,32-22,32c 17.6,0, 22,14.4, 22,32L 320,416 c0,17.6-14.4,32-32,32l-96,0 l0-224 l 96,0 C 305.6,224, 320,238.4, 320,256z
+ M 224,416l 64,0 l0-64 l-64,0 L 224,416 z M 224,320l 64,0 l0-64 l-64,0 L 224,320 z" />
+<glyph unicode="&#xe025;" d="M 224,224l-64,0 l0,64 l 64,0 l0,64 l 64,0 l0-64 l 64,0 l0-64 l-64,0 l0-64 l-64,0 L 224,224 z M 480,192l0-160 L 32,32 L 32,192 l 64,0 l0-96 l 320,0 l0,96 L 480,192 z" />
+<glyph unicode="&#xe017;" d="M 208,128L 112,224L 208,320L 176,352L 48,224L 176,96 zM 336,352L 304,320L 400,224L 304,128L 336,96L 464,224 z" />
+<glyph unicode="&#xe016;" d="M 224,128l 64,0 l0-64 l-64,0 L 224,128 z M 352,352c 17.673,0, 32-14.327, 32-32l0-83 l-114-77l-46,0 l0,32 l 96,64l0,32 L 160,288 l0,64 L 352,352 z M 256,448
+ c-59.833,0-116.083-23.3-158.392-65.608C 55.301,340.083, 32,283.833, 32,224c0-59.832, 23.301-116.084, 65.608-158.392
+ C 139.917,23.3, 196.167,0, 256,0c 59.832,0, 116.084,23.3, 158.392,65.608C 456.7,107.916, 480,164.168, 480,224
+ c0,59.833-23.3,116.083-65.608,158.392C 372.084,424.7, 315.832,448, 256,448z" />
+<glyph unicode="&#xe014;" d="M 448,416L 64,416 c-17.6,0-32-14.4-32-32l0-320 c0-17.6, 14.4-32, 32-32l 384,0 c 17.6,0, 32,14.4, 32,32L 480,384 C 480,401.6, 465.6,416, 448,416z
+ M 448,64.058c-0.006-0.007-0.015-0.014-0.021-0.021L 352,224l-80-64L 160,304L 64.016,64.042c-0.005,0.005-0.011,0.011-0.016,0.016
+ L 64,383.943 c 0.017,0.020, 0.038,0.041, 0.057,0.057l 383.885,0 c 0.020-0.017, 0.041-0.038, 0.058-0.058L 448,64.058 zM 320,304A48,48 2700 1 1 416,304A48,48 2700 1 1 320,304z" />
+<glyph unicode="&#xe015;" d="M 448,416L 64,416 c-17.6,0-32-14.4-32-32l0-320 c0-17.6, 14.4-32, 32-32l 384,0 c 17.6,0, 32,14.4, 32,32L 480,384 C 480,401.6, 465.6,416, 448,416z
+ M 128,64L 64,64 l0,64 l 64,0 L 128,64 z M 128,192L 64,192 l0,64 l 64,0 L 128,192 z M 128,320L 64,320 L 64,384 l 64,0 L 128,320 z M 352,64L 160,64 L 160,384 l 192,0 L 352,64 z M 448,64l-64,0 l0,64 l 64,0 L 448,64 z
+ M 448,192l-64,0 l0,64 l 64,0 L 448,192 z M 448,320l-64,0 L 384,384 l 64,0 L 448,320 zM 192,320L 192,128L 336,224 z" />
+<glyph unicode="&#xe018;" d="M 38.899,327.688l 40.707-25.441C 105.007,342.804, 144,373.974, 190.21,389.37l-15.183,45.547
+ C 118.153,415.968, 70.163,377.604, 38.899,327.688zM 336.973,434.917L 321.79,389.37c 46.211-15.396, 85.202-46.566, 110.604-87.124l 40.706,25.441
+ C 441.837,377.604, 393.847,415.968, 336.973,434.917zM 303.987,127.996c-2.404,0-4.846,0.545-7.143,1.693L 224,166.111L 224,272 c0,8.836, 7.164,16, 16,16s 16-7.164, 16-16l0-86.111
+ l 55.155-27.578c 7.903-3.951, 11.107-13.562, 7.155-21.466C 315.508,131.238, 309.856,127.997, 303.987,127.996zM 256,384C 149.961,384, 64,298.039, 64,192c0-106.039, 85.961-192, 192-192c 106.039,0, 192,85.961, 192,192
+ C 448,298.039, 362.039,384, 256,384z M 256,48c-79.529,0-144,64.471-144,144c0,79.529, 64.471,144, 144,144c 79.529,0, 144-64.471, 144-144
+ C 400,112.471, 335.529,48, 256,48z" />
+<glyph unicode="&#xe019;" d="M 32,252.127c 22.659,24.96, 48.581,46.18, 76.636,62.562C 153.802,341.061, 204.759,355, 256,355
+ c 51.24,0, 102.198-13.939, 147.363-40.312c 28.056-16.382, 53.978-37.602, 76.637-62.562l0,58.716
+ c-16.505,14.059-34.062,26.57-52.434,37.297C 375.063,378.796, 315.737,395, 256,395s-119.064-16.204-171.567-46.86
+ C 66.062,337.413, 48.505,324.901, 32,310.842L 32,252.127 zM 256,320c-91.598,0-172.919-50.278-224-128c 51.081-77.724, 132.402-128, 224-128c 91.598,0, 172.919,50.276, 224,128
+ C 428.919,269.722, 347.598,320, 256,320z M 256,224c0-17.673-14.327-32-32-32s-32,14.327-32,32c0,17.674, 14.327,32, 32,32
+ S 256,241.674, 256,224z M 364.033,131.669C 330.316,111.982, 293.969,102, 256,102s-74.316,9.982-108.033,29.669
+ C 122.19,146.721, 98.659,167.324, 78.91,192c 19.749,24.675, 43.28,45.279, 69.058,60.33c 6.638,3.876, 13.379,7.37, 20.213,10.491
+ C 162.925,250.95, 160,237.817, 160,224c0-53.020, 42.981-96, 96-96c 53.020,0, 96,42.98, 96,96c0,13.817-2.925,26.95-8.18,38.821
+ c 6.834-3.122, 13.575-6.615, 20.213-10.491c 25.777-15.051, 49.308-35.655, 69.058-60.33
+ C 413.342,167.324, 389.811,146.721, 364.033,131.669z" />
+<glyph unicode="&#xe01a;" d="M 325.584,338.083C 313.278,379.064, 311.146,384, 272,384l-32,0 c-39.809,0-41.332-5.076-54.209-48c0-0.001,0-0.001-0.001-0.002
+ L 113.791,96l 56.818,0 l 28.8,96l 113.183,0 l 28.8-96l 56.815,0 L 325.584,338.083z M 218.609,256l 19.2,68c 5.043,16.809, 18.19,15, 18.19,15
+ s 13.147,1.809, 18.19-15l 0.002,0 l 19.2-68L 218.609,256 z" />
+<glyph unicode="&#xe028;" d="M 288,448 C 411.712,448 512,347.712 512,224 C 512,100.288 411.712,0 288,0 L 288,48 C 335.012,48 379.209,66.307 412.451,99.549 C 445.693,132.791 464,176.988 464,224 C 464,271.011 445.693,315.209 412.451,348.451 C 379.209,381.693 335.012,400 288,400 C 240.989,400 196.791,381.693 163.549,348.451 C 137.979,322.882 121.258,290.828 114.896,256 L 208,256 L 96,128 L -16,256 L 66.285,256 C 81.815,364.551 175.154,448 288,448 ZM 384,256 L 384,192 L 256,192 L 256,352 L 320,352 L 320,256 Z" />
+<glyph unicode="&#xe002;" d="M 512,183.771l0,80.458 l-79.572,7.957c-4.093,15.021-10.044,29.274-17.605,42.49l 52.298,63.919L 410.595,435.12l-63.918-52.298
+ c-13.217,7.562-27.471,13.513-42.491,17.604L 296.229,480l-80.458,0 l-7.957-79.573c-15.021-4.093-29.274-10.043-42.49-17.604
+ L 101.405,435.12L 44.88,378.595l 52.298-63.918c-7.562-13.216-13.513-27.47-17.605-42.49L0,264.229l0-80.458 l 79.573-7.957
+ c 4.093-15.021, 10.043-29.274, 17.605-42.491L 44.88,69.405l 56.524-56.524l 63.919,52.298c 13.216-7.562, 27.47-13.514, 42.49-17.605
+ L 215.771-32l 80.458,0 l 7.957,79.572c 15.021,4.093, 29.274,10.044, 42.491,17.605l 63.918-52.298l 56.524,56.524l-52.298,63.918
+ c 7.562,13.217, 13.514,27.471, 17.605,42.49L 512,183.771z M 352,192l-64-64l-64,0 l-64,64l0,64 l 64,64l 64,0 l 64-64L 352,192 z" />
+<glyph unicode="&#xe01f;" d="M 384,377 L 384,352 L 448,352 L 448,320 L 352,320 L 352,393 L 416,423 L 416,448 L 352,448 L 352,480 L 448,480 L 448,407 ZM 338,352L 270,352L 176,258L 82,352L 14,352L 142,224L 14,96L 82,96L 176,190L 270,96L 338,96L 210,224 z" />
+<glyph unicode="&#xe01e;" d="M 384,25 L 384,0 L 448,0 L 448-32 L 352-32 L 352,41 L 416,71 L 416,96 L 352,96 L 352,128 L 448,128 L 448,55 ZM 338,352L 270,352L 176,258L 82,352L 14,352L 142,224L 14,96L 82,96L 176,190L 270,96L 338,96L 210,224 z" />
+<glyph unicode="&#xe035;" d="M 352,288l0,80 c0,8.8-7.2,16-16,16l-80,0 L 256,416 c0,17.6-14.4,32-32,32l-64,0 c-17.602,0-32-14.4-32-32l0-32 L 48,384 c-8.801,0-16-7.2-16-16
+ l0-256 c0-8.8, 7.199-16, 16-16l 112,0 l0-96 l 288,0 L 448,288 L 352,288 z M 160,415.943c 0.017,0.019, 0.036,0.039, 0.057,0.057l 63.884,0
+ c 0.021-0.018, 0.041-0.038, 0.059-0.057L 224,384 l-64,0 L 160,415.943 z M 96,320l0,32 l 192,0 l0-32 L 96,320 z M 416,32L 192,32 L 192,256 l 224,0 L 416,32 zM 224,224L 224,160L 240,160L 256,192L 288,192L 288,96L 264,96L 264,64L 344,64L 344,96L 320,96L 320,192L 352,192L 368,160L 384,160L 384,224 z" data-tags="pastetext" />
+<glyph unicode="&#xe032;" d="M 384,352L 416,352L 416,320L 384,320zM 320,288L 352,288L 352,256L 320,256zM 320,224L 352,224L 352,192L 320,192zM 320,160L 352,160L 352,128L 320,128zM 256,224L 288,224L 288,192L 256,192zM 256,160L 288,160L 288,128L 256,128zM 192,160L 224,160L 224,128L 192,128zM 384,288L 416,288L 416,256L 384,256zM 384,224L 416,224L 416,192L 384,192zM 384,160L 416,160L 416,128L 384,128zM 384,96L 416,96L 416,64L 384,64zM 320,96L 352,96L 352,64L 320,64zM 256,96L 288,96L 288,64L 256,64zM 192,96L 224,96L 224,64L 192,64zM 128,96L 160,96L 160,64L 128,64z" data-tags="resize, dots" />
+<glyph unicode="&#xe034;" d="M 464,416L 256,416L 240,448L 64,448L 32,384L 480,384 zM 420.17,128L 464,128 l 16,224L 32,352 l 32-320l 178.040,0 C 189.599,50.888, 152,101.133, 152,160c0,74.991, 61.009,136, 136,136
+ c 74.99,0, 136-61.009, 136-136C 424,149.161, 422.689,138.425, 420.17,128zM 437.498,55.125l-67.248,55.346C 378.977,124.932, 384,141.878, 384,160c0,53.020-42.98,96-96,96s-96-42.98-96-96
+ s 42.98-96, 96-96c 18.122,0, 35.069,5.023, 49.529,13.75l 55.346-67.248c 11.481-13.339, 31.059-14.070, 43.503-1.626l 2.746,2.746
+ C 451.568,24.066, 450.837,43.644, 437.498,55.125z M 288,98c-34.242,0-62,27.758-62,62s 27.758,62, 62,62s 62-27.758, 62-62
+ S 322.242,98, 288,98z" data-tags="browse" />
+<glyph unicode="&#x20;" horiz-adv-x="256" />
+</font></defs></svg> \ No newline at end of file
diff --git a/program/js/tinymce/skins/lightgray/fonts/tinymce-small.eot b/program/js/tinymce/skins/lightgray/fonts/tinymce-small.eot
new file mode 100644
index 000000000..60e2d2e5c
--- /dev/null
+++ b/program/js/tinymce/skins/lightgray/fonts/tinymce-small.eot
Binary files differ
diff --git a/program/js/tinymce/skins/lightgray/fonts/tinymce-small.svg b/program/js/tinymce/skins/lightgray/fonts/tinymce-small.svg
new file mode 100644
index 000000000..930c48dce
--- /dev/null
+++ b/program/js/tinymce/skins/lightgray/fonts/tinymce-small.svg
@@ -0,0 +1,62 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>Generated by IcoMoon</metadata>
+<defs>
+<font id="tinymce-small" horiz-adv-x="512">
+<font-face units-per-em="512" ascent="480" descent="-32" />
+<missing-glyph horiz-adv-x="512" />
+<glyph unicode="&#x20;" d="" horiz-adv-x="256" />
+<glyph unicode="&#xe000;" d="M480 40v295.969l-111.969 112.031h-296.031c-22.091 0-40-17.908-40-40v-368c0-22.092 17.909-40 40-40h368c22.092 0 40 17.908 40 40zM288 384h32v-96h-32v96zM352 64h-192v127.941c0.017 0.021 0.038 0.041 0.058 0.059h191.885c0.020-0.018 0.041-0.038 0.058-0.059l-0.001-127.941zM416 64h-32v128c0 17.6-14.4 32-32 32h-192c-17.6 0-32-14.4-32-32v-128h-32v320h32v-96c0-17.6 14.4-32 32-32h160c17.6 0 32 14.4 32 32v85.505l64-64.036v-245.469z" />
+<glyph unicode="&#xe001;" d="M425.373 358.627l-66.746 66.745c-12.444 12.446-37.027 22.628-54.627 22.628h-208c-17.6 0-32-14.4-32-32v-384c0-17.6 14.4-32 32-32h320c17.6 0 32 14.4 32 32v272c0 17.6-10.183 42.182-22.627 54.627zM402.745 336.001c3.396-3.398 6.896-9.581 9.447-16.001h-92.192v92.193c6.42-2.55 12.602-6.050 16-9.448l66.745-66.744zM415.942 32h-319.885c-0.020 0.017-0.041 0.038-0.057 0.058v383.885c0.017 0.020 0.038 0.041 0.057 0.057h191.943v-128h128v-255.942c-0.017-0.020-0.038-0.041-0.058-0.058z" />
+<glyph unicode="&#xe002;" d="M512 183.771v80.458l-79.572 7.957c-4.093 15.021-10.044 29.274-17.605 42.49l52.298 63.919-56.526 56.525-63.918-52.298c-13.217 7.562-27.471 13.513-42.491 17.604l-7.957 79.574h-80.458l-7.957-79.573c-15.021-4.093-29.274-10.043-42.49-17.604l-63.919 52.297-56.525-56.525 52.298-63.918c-7.562-13.216-13.513-27.47-17.605-42.49l-79.573-7.958v-80.458l79.573-7.957c4.093-15.021 10.043-29.274 17.605-42.491l-52.298-63.918 56.524-56.524 63.919 52.298c13.216-7.562 27.47-13.514 42.49-17.605l7.958-79.574h80.458l7.957 79.572c15.021 4.093 29.274 10.044 42.491 17.605l63.918-52.298 56.524 56.524-52.298 63.918c7.562 13.217 13.514 27.471 17.605 42.49l79.574 7.96zM352 192l-64-64h-64l-64 64v64l64 64h64l64-64v-64z" />
+<glyph unicode="&#xe003;" d="M32 384h448v-64h-448zM32 192h448v-64h-448zM32 288h288v-64h-288zM32 96h288v-64h-288z" />
+<glyph unicode="&#xe004;" d="M32 384h448v-64h-448zM32 192h448v-64h-448zM128 288h256v-64h-256zM128 96h256v-64h-256z" />
+<glyph unicode="&#xe005;" d="M32 384h448v-64h-448zM32 192h448v-64h-448zM192 288h288v-64h-288zM192 96h288v-64h-288z" />
+<glyph unicode="&#xe006;" d="M32 384h448v-64h-448zM32 192h448v-64h-448zM32 288h448v-64h-448zM32 96h448v-64h-448z" />
+<glyph unicode="&#xe007;" d="M432.204 144.934c-23.235 23.235-53.469 34.002-80.541 31.403l-31.663 31.663 96 96c0 0 64 64 0 128l-160-160-160 160c-64-64 0-128 0-128l96-96-31.663-31.663c-27.072 2.599-57.305-8.169-80.54-31.403-37.49-37.49-42.556-93.209-11.313-124.45 31.241-31.241 86.96-26.177 124.45 11.313 23.235 23.234 34.001 53.469 31.403 80.54l31.663 31.663 31.664-31.664c-2.598-27.072 8.168-57.305 31.403-80.539 37.489-37.49 93.209-42.556 124.449-11.313 31.244 31.241 26.178 86.959-11.312 124.45zM176.562 100.711c-1.106-12.166-7.51-24.913-17.57-34.973-11.106-11.107-25.54-17.738-38.609-17.738-5.262 0-12.649 1.114-17.958 6.424-10.703 10.702-8.688 36.566 11.313 56.568 11.106 11.107 25.54 17.738 38.609 17.738 5.262 0 12.649-1.114 17.958-6.424 6.556-6.555 6.735-16.344 6.257-21.595zM256 176c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zM409.576 54.424c-5.31-5.31-12.696-6.424-17.958-6.424-13.069 0-27.503 6.631-38.609 17.738-10.061 10.060-16.464 22.807-17.569 34.973-0.479 5.251-0.3 15.040 6.257 21.596 5.309 5.311 12.695 6.424 17.958 6.424 13.068 0 27.503-6.631 38.608-17.737 20.002-20.004 22.016-45.868 11.313-56.57z" />
+<glyph unicode="&#xe008;" d="M352 288v80c0 8.8-7.2 16-16 16h-80v32c0 17.6-14.4 32-32 32h-64c-17.602 0-32-14.4-32-32v-32h-80c-8.801 0-16-7.2-16-16v-256c0-8.8 7.199-16 16-16h112v-96h192l96 96v192h-96zM160 415.943c0.017 0.019 0.036 0.039 0.057 0.057h63.884c0.021-0.018 0.041-0.038 0.059-0.057v-31.943h-64v31.943zM96 320v32h192v-32h-192zM352 45.255v50.745h50.745l-50.745-50.745zM416 128h-96v-96h-128v224h224v-128z" />
+<glyph unicode="&#xe009;" d="M444 288h-28v128h32v32h-160v-32h32v-128h-128v128h32v32h-160v-32h32v-128h-28c-19.8 0-36-16.2-36-36v-216c0-19.8 16.2-36 36-36h120c19.8 0 36 16.2 36 36v156h64v-156c0-19.8 16.2-36 36-36h120c19.8 0 36 16.2 36 36v216c0 19.8-16.2 36-36 36zM174 32h-92c-9.9 0-18 7.2-18 16s8.1 16 18 16h92c9.9 0 18-7.2 18-16s-8.1-16-18-16zM272 224h-32c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16zM430 32h-92c-9.9 0-18 7.2-18 16s8.1 16 18 16h92c9.9 0 18-7.2 18-16s-8.1-16-18-16z" />
+<glyph unicode="&#xe00a;" d="M192 416h288v-64h-288zM192 256h288v-64h-288zM192 96h288v-64h-288zM64 384c0-17.673 14.327-32 32-32s32 14.327 32 32c0 17.673-14.327 32-32 32-17.673 0-32-14.327-32-32zM64 224c0-17.673 14.327-32 32-32s32 14.327 32 32c0 17.673-14.327 32-32 32-17.673 0-32-14.327-32-32zM64 64c0-17.673 14.327-32 32-32s32 14.327 32 32c0 17.673-14.327 32-32 32-17.673 0-32-14.327-32-32z" />
+<glyph unicode="&#xe00b;" d="M192 416h288v-64h-288zM192 256h288v-64h-288zM192 96h288v-64h-288zM160 215v73h-32v160h-64v-32h32v-128h-32v-32h64v-25l-64-30v-73h64v-32h-64v-32h64v-32h-64v-32h96v160h-64v25z" />
+<glyph unicode="&#xe00c;" d="M32 384h448v-64h-448zM192 192h288v-64h-288zM192 288h288v-64h-288zM32 96h448v-64h-448zM32 288l112-80-112-80z" />
+<glyph unicode="&#xe00d;" d="M32 384h448v-64h-448zM32 192h288v-64h-288zM32 288h288v-64h-288zM32 96h448v-64h-448zM480 288l-112-80 112-80z" />
+<glyph unicode="&#xe00e;" d="M128.214 267.637c52.9 0 95.786-45.585 95.786-101.819 0-56.232-42.886-101.818-95.786-101.818-52.901 0-95.786 45.585-95.786 101.818l-0.428 14.546c0 112.465 85.77 203.636 191.572 203.636v-58.182c-36.55 0-70.913-15.13-96.758-42.602-4.977-5.289-9.517-10.917-13.612-16.828 4.892 0.82 9.903 1.249 15.012 1.249zM384.214 267.637c52.9 0 95.786-45.585 95.786-101.819 0-56.232-42.886-101.818-95.786-101.818-52.901 0-95.786 45.585-95.786 101.818l-0.428 14.546c0 112.465 85.77 203.636 191.572 203.636v-58.182c-36.55 0-70.913-15.13-96.758-42.602-4.978-5.289-9.518-10.917-13.612-16.828 4.892 0.82 9.903 1.249 15.012 1.249z" />
+<glyph unicode="&#xe00f;" d="M352 0c29.5 99.5 67.453 227.633-128 223.048v-111.048l-168.001 168 168.001 168v-108.663c234.046 6.1 272-179.337 128-339.337z" />
+<glyph unicode="&#xe010;" d="M288 339.337v108.663l168.001-168-168.001-168v111.048c-195.453 4.585-157.5-123.548-128-223.048-144 160-106.046 345.437 128 339.337z" />
+<glyph unicode="&#xe011;" d="M463.637 364.892l-66.745 66.744c-10.552 10.552-24.616 16.364-39.599 16.364s-29.047-5.812-39.598-16.363l-82.746-82.745c-21.834-21.834-21.834-57.362 0-79.196l1.373-1.373 33.941 33.941-1.373 1.373c-3.066 3.066-3.066 8.247 0 11.313l82.746 82.746c2.005 2.004 4.404 2.304 5.656 2.304s3.651-0.299 5.656-2.305l66.745-66.744c3.066-3.067 3.066-8.249 0.001-11.314l-82.747-82.747c-2.004-2.004-4.403-2.304-5.655-2.304s-3.651 0.3-5.656 2.306l-1.373 1.373-33.94-33.942 1.371-1.371c10.553-10.554 24.615-16.364 39.6-16.364s29.047 5.812 39.598 16.363l82.747 82.746c21.831 21.833 21.831 57.36-0.002 79.195zM275.678 179.678l-33.941-33.941 1.373-1.373c2.004-2.004 2.305-4.403 2.305-5.655 0-1.253-0.299-3.651-2.303-5.657l-82.747-82.745c-2.005-2.005-4.405-2.305-5.657-2.305s-3.652 0.3-5.657 2.305l-66.746 66.743c-2.005 2.005-2.305 4.405-2.305 5.657s0.299 3.65 2.305 5.656l82.745 82.744c2.005 2.006 4.405 2.306 5.657 2.306s3.652-0.3 5.657-2.306l1.373-1.371 33.941 33.94-1.373 1.373c-10.552 10.552-24.615 16.363-39.598 16.363s-29.046-5.812-39.598-16.363l-82.744-82.743c-10.553-10.552-16.365-24.617-16.365-39.599s5.812-29.047 16.363-39.599l66.745-66.745c10.553-10.551 24.616-16.363 39.599-16.363s29.046 5.812 39.598 16.363l82.747 82.746c10.552 10.552 16.361 24.615 16.361 39.598s-5.812 29.047-16.363 39.598l-1.372 1.373zM176 125c-4.862 0-9.725 1.855-13.435 5.564-7.42 7.42-7.42 19.449 0 26.869l160 160c7.42 7.42 19.448 7.42 26.868 0 7.422-7.42 7.422-19.45 0-26.87l-160-160c-3.708-3.708-8.571-5.563-13.433-5.563z" />
+<glyph unicode="&#xe012;" d="M463.637 364.892l-66.745 66.744c-10.552 10.552-24.616 16.364-39.599 16.364s-29.047-5.812-39.598-16.363l-82.746-82.745c-21.834-21.834-21.834-57.362 0-79.196l1.373-1.373 33.941 33.941-1.373 1.373c-3.066 3.066-3.066 8.247 0 11.313l82.746 82.746c2.005 2.004 4.404 2.304 5.656 2.304s3.651-0.299 5.656-2.305l66.745-66.744c3.066-3.067 3.066-8.249 0.001-11.314l-82.747-82.747c-2.004-2.004-4.403-2.304-5.655-2.304s-3.651 0.3-5.656 2.306l-1.373 1.373-33.94-33.942 1.371-1.371c10.553-10.554 24.615-16.364 39.6-16.364s29.047 5.812 39.598 16.363l82.747 82.746c21.831 21.833 21.831 57.36-0.002 79.195zM275.678 179.678l-33.941-33.941 1.373-1.373c2.004-2.004 2.305-4.403 2.305-5.655 0-1.253-0.299-3.651-2.303-5.657l-82.747-82.745c-2.005-2.005-4.405-2.305-5.657-2.305s-3.652 0.3-5.657 2.305l-66.746 66.743c-2.005 2.005-2.305 4.405-2.305 5.657s0.299 3.65 2.305 5.656l82.745 82.744c2.005 2.006 4.405 2.306 5.657 2.306s3.652-0.3 5.657-2.306l1.373-1.371 33.941 33.94-1.373 1.373c-10.552 10.552-24.615 16.363-39.598 16.363s-29.046-5.812-39.598-16.363l-82.744-82.743c-10.553-10.552-16.365-24.617-16.365-39.599s5.812-29.047 16.363-39.599l66.745-66.745c10.553-10.551 24.616-16.363 39.599-16.363s29.046 5.812 39.598 16.363l82.747 82.746c10.552 10.552 16.361 24.615 16.361 39.598s-5.812 29.047-16.363 39.598l-1.372 1.373zM400 61c-4.862 0-9.725 1.854-13.435 5.565l-64 63.999c-7.422 7.42-7.422 19.449 0 26.869 7.42 7.422 19.448 7.422 26.868 0l64-64c7.422-7.42 7.422-19.448 0-26.868-3.708-3.711-8.571-5.565-13.433-5.565zM304 0c-8.837 0-16 7.163-16 16v64c0 8.837 7.163 16 16 16s16-7.163 16-16v-64c0-8.837-7.163-16-16-16zM464 160h-64c-8.837 0-16 7.163-16 16s7.163 16 16 16h64c8.837 0 16-7.163 16-16s-7.163-16-16-16zM112 387c4.862 0 9.725-1.854 13.435-5.565l64-64c7.421-7.42 7.421-19.449 0-26.869-7.42-7.422-19.449-7.422-26.869 0l-64 64c-7.421 7.42-7.421 19.449 0 26.869 3.709 3.711 8.572 5.565 13.434 5.565zM208 448c8.837 0 16-7.163 16-16v-64c0-8.837-7.163-16-16-16s-16 7.163-16 16v64c0 8.837 7.163 16 16 16zM48 288h64c8.837 0 16-7.163 16-16s-7.163-16-16-16h-64c-8.837 0-16 7.163-16 16s7.163 16 16 16z" />
+<glyph unicode="&#xe013;" d="M128 448v-448l128 128 128-128v448h-256zM352 85.255l-96 96-96-96v330.745h192v-330.745z" />
+<glyph unicode="&#xe014;" d="M448 416h-384c-17.6 0-32-14.4-32-32v-320c0-17.6 14.4-32 32-32h384c17.6 0 32 14.4 32 32v320c0 17.6-14.4 32-32 32zM448 64.058c-0.006-0.007-0.015-0.014-0.021-0.021l-95.979 159.963-80-64-112 144-95.984-239.958c-0.005 0.005-0.011 0.011-0.016 0.016v319.885c0.017 0.020 0.038 0.041 0.057 0.057h383.885c0.020-0.017 0.041-0.038 0.058-0.058v-319.884zM320 304c0-26.51 21.49-48 48-48s48 21.49 48 48c0 26.51-21.49 48-48 48-26.51 0-48-21.49-48-48z" />
+<glyph unicode="&#xe015;" d="M448 416h-384c-17.6 0-32-14.4-32-32v-320c0-17.6 14.4-32 32-32h384c17.6 0 32 14.4 32 32v320c0 17.6-14.4 32-32 32zM128 64h-64v64h64v-64zM128 192h-64v64h64v-64zM128 320h-64v64h64v-64zM352 64h-192v320h192v-320zM448 64h-64v64h64v-64zM448 192h-64v64h64v-64zM448 320h-64v64h64v-64zM192 320v-192l144 96z" />
+<glyph unicode="&#xe016;" d="M224 128h64v-64h-64v64zM352 352c17.673 0 32-14.327 32-32v-83l-114-77h-46v32l96 64v32h-160v64h192zM256 448c-59.833 0-116.083-23.3-158.392-65.608-42.307-42.309-65.608-98.559-65.608-158.392 0-59.832 23.301-116.084 65.608-158.392 42.309-42.308 98.559-65.608 158.392-65.608 59.832 0 116.084 23.3 158.392 65.608 42.308 42.308 65.608 98.56 65.608 158.392 0 59.833-23.3 116.083-65.608 158.392-42.308 42.308-98.56 65.608-158.392 65.608z" />
+<glyph unicode="&#xe017;" d="M208 128l-96 96 96 96-32 32-128-128 128-128zM336 352l-32-32 96-96-96-96 32-32 128 128z" />
+<glyph unicode="&#xe018;" d="M38.899 327.688l40.707-25.441c25.401 40.557 64.394 71.727 110.604 87.123l-15.183 45.547c-56.874-18.949-104.864-57.313-136.128-107.229zM336.973 434.917l-15.183-45.547c46.211-15.396 85.202-46.566 110.604-87.124l40.706 25.441c-31.263 49.917-79.253 88.281-136.127 107.23zM303.987 127.996c-2.404 0-4.846 0.545-7.143 1.693l-72.844 36.422v105.889c0 8.836 7.164 16 16 16s16-7.164 16-16v-86.111l55.155-27.578c7.903-3.951 11.107-13.562 7.155-21.466-2.802-5.607-8.454-8.848-14.323-8.849zM256 384c-106.039 0-192-85.961-192-192s85.961-192 192-192c106.039 0 192 85.961 192 192 0 106.039-85.961 192-192 192zM256 48c-79.529 0-144 64.471-144 144s64.471 144 144 144c79.529 0 144-64.471 144-144 0-79.529-64.471-144-144-144z" />
+<glyph unicode="&#xe019;" d="M32 252.127c22.659 24.96 48.581 46.18 76.636 62.562 45.166 26.372 96.123 40.311 147.364 40.311 51.24 0 102.198-13.939 147.363-40.312 28.056-16.382 53.978-37.602 76.637-62.562v58.716c-16.505 14.059-34.062 26.57-52.434 37.297-52.503 30.657-111.829 46.861-171.566 46.861s-119.064-16.204-171.567-46.86c-18.371-10.727-35.928-23.239-52.433-37.298v-58.715zM256 320c-91.598 0-172.919-50.278-224-128 51.081-77.724 132.402-128 224-128 91.598 0 172.919 50.276 224 128-51.081 77.722-132.402 128-224 128zM256 224c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.674 14.327 32 32 32s32-14.326 32-32zM364.033 131.669c-33.717-19.687-70.064-29.669-108.033-29.669s-74.316 9.982-108.033 29.669c-25.777 15.052-49.308 35.655-69.057 60.331 19.749 24.675 43.28 45.279 69.058 60.33 6.638 3.876 13.379 7.37 20.213 10.491-5.256-11.871-8.181-25.004-8.181-38.821 0-53.020 42.981-96 96-96 53.020 0 96 42.98 96 96 0 13.817-2.925 26.95-8.18 38.821 6.834-3.122 13.575-6.615 20.213-10.491 25.777-15.051 49.308-35.655 69.058-60.33-19.749-24.676-43.28-45.279-69.058-60.331z" />
+<glyph unicode="&#xe01a;" d="M325.584 338.083c-12.306 40.981-14.438 45.917-53.584 45.917h-32c-39.809 0-41.332-5.076-54.209-48 0-0.001 0-0.001-0.001-0.002l-71.999-239.998h56.818l28.8 96h113.183l28.8-96h56.815l-72.623 242.083zM218.609 256l19.2 68c5.043 16.809 18.19 15 18.19 15s13.147 1.809 18.19-15h0.002l19.2-68h-74.782z" />
+<glyph unicode="&#xe01b;" d="M32 384v-352h448v352h-448zM192 160v64h128v-64h-128zM320 128v-64h-128v64h128zM320 320v-64h-128v64h128zM160 320v-64h-96v64h96zM64 224h96v-64h-96v64zM352 224h96v-64h-96v64zM352 256v64h96v-64h-96zM64 128h96v-64h-96v64zM352 64v64h96v-64h-96z" />
+<glyph unicode="&#xe01c;" d="M32 256h448v-64h-448z" />
+<glyph unicode="&#xe01d;" d="M32 96h256v-64h-256v64zM384 384h-110.279l-91.883-256h-66.144l91.881 256h-111.575v64h288v-64zM464.887 32l-64.887 64.887-64.887-64.887-31.113 31.113 64.887 64.887-64.887 64.887 31.113 31.113 64.887-64.887 64.887 64.887 31.113-31.113-64.887-64.887 64.887-64.887-31.113-31.113z" />
+<glyph unicode="&#xe01e;" d="M384 25v-25h64v-32h-96v73l64 30v25h-64v32h96v-73zM338 352h-68l-94-94-94 94h-68l128-128-128-128h68l94 94 94-94h68l-128 128z" />
+<glyph unicode="&#xe01f;" d="M384 377v-25h64v-32h-96v73l64 30v25h-64v32h96v-73zM338 352h-68l-94-94-94 94h-68l128-128-128-128h68l94 94 94-94h68l-128 128z" />
+<glyph unicode="&#xe020;" d="M352 64v18.502c75.674 30.814 128 96.91 128 173.498 0 106.039-100.288 192-224 192s-224-85.961-224-192c0-76.588 52.327-142.684 128-173.498v-18.502h-96l-32 48v-112h160v111.406c-50.45 25.681-85.333 80.77-85.333 144.594 0 88.366 66.859 160 149.333 160 82.474 0 149.333-71.634 149.333-160 0-63.824-34.883-118.913-85.333-144.594v-111.406h160v112l-32-48h-96z" />
+<glyph unicode="&#xe021;" d="M256 410c49.683 0 96.391-19.347 131.521-54.478s54.479-81.839 54.479-131.522-19.348-96.391-54.479-131.521-81.838-54.479-131.521-54.479-96.391 19.348-131.522 54.479-54.478 81.838-54.478 131.521 19.347 96.391 54.478 131.522 81.839 54.478 131.522 54.478zM256 448c-123.712 0-224-100.288-224-224s100.288-224 224-224 224 100.288 224 224-100.288 224-224 224v0zM160 288c0-17.673 14.327-32 32-32s32 14.327 32 32c0 17.673-14.327 32-32 32-17.673 0-32-14.327-32-32zM288 288c0-17.673 14.327-32 32-32s32 14.327 32 32c0 17.673-14.327 32-32 32-17.673 0-32-14.327-32-32zM256 152c-50.92 0-96.28 18.437-125.583 47.164 11.563-58.804 63.389-103.164 125.583-103.164 62.194 0 114.020 44.36 125.584 103.164-29.304-28.727-74.664-47.164-125.584-47.164z" />
+<glyph unicode="&#xe022;" d="M128 416h256v-64h-256v64zM448 320h-384c-17.6 0-32-14.4-32-32v-128c0-17.6 14.398-32 32-32h64v-96h256v96h64c17.6 0 32 14.4 32 32v128c0 17.6-14.4 32-32 32zM352 64h-192v128h192v-128zM455.2 272c0-12.813-10.387-23.2-23.199-23.2s-23.201 10.387-23.201 23.2 10.389 23.2 23.201 23.2c12.813 0 23.199-10.387 23.199-23.2z" />
+<glyph unicode="&#xe023;" d="M240 288l-96 96 64 64h-176v-176l64 64 96-96zM320 240l96 96 64-64v176h-176l64-64-96-96zM272 160l96-96-64-64h176v176l-64-64-96 96zM192 208l-96-96-64 64v-176h176l-64 64 96 96z" />
+<glyph unicode="&#xe024;" d="M480 416v32h-96c-17.601 0-32-14.4-32-32v-160c0-7.928 2.929-15.201 7.748-20.807l-151.748-130.193-71 74-41-35 112-144 208 224h64v32h-96v160h96zM128 224h32v192c0 17.6-14.4 32-32 32h-64c-17.6 0-32-14.4-32-32v-192h32v96h64v-96zM64 352v64h64v-64h-64zM320 256v48c0 17.6-4.4 32-22 32 17.6 0 22 14.4 22 32v48c0 17.6-14.4 32-32 32h-96v-224h96c17.6 0 32 14.4 32 32zM224 416h64v-64h-64v64zM224 320h64v-64h-64v64z" />
+<glyph unicode="&#xe025;" d="M224 224h-64v64h64v64h64v-64h64v-64h-64v-64h-64v64zM480 192v-160h-448v160h64v-96h320v96h64z" />
+<glyph unicode="&#xe026;" d="M256 288h64v-32h-64zM256 96h64v-32h-64zM288 192h64v-32h-64zM384 192v-96h-32v-32h64v128zM192 192h64v-32h-64zM160 96h64v-32h-64zM160 288h64v-32h-64zM96 384v-128h32v96h32v32zM352 256h64v128h-32v-96h-32zM32 448v-448h448v448h-448zM448 32h-384v384h384v-384zM96 192v-128h32v96h32v32zM288 384h64v-32h-64zM192 384h64v-32h-64z" />
+<glyph unicode="&#xe027;" d="M408 448l8-192h-320l8 192h16l8-160h256l8 160h16zM104 0l-8 160h320l-8-160h-16l-8 128h-256l-8-128h-16zM32 224h64v-32h-64zM128 224h64v-32h-64zM224 224h64v-32h-64zM320 224h64v-32h-64zM416 224h64v-32h-64z" />
+<glyph unicode="&#xe028;" d="M288 448c123.712 0 224-100.288 224-224s-100.288-224-224-224v48c47.012 0 91.209 18.307 124.451 51.549 33.242 33.242 51.549 77.439 51.549 124.451 0 47.011-18.307 91.209-51.549 124.451-33.242 33.242-77.439 51.549-124.451 51.549-47.011 0-91.209-18.307-124.451-51.549-25.57-25.569-42.291-57.623-48.653-92.451h93.104l-112-128-112 128h82.285c15.53 108.551 108.869 192 221.715 192zM384 256v-64h-128v160h64v-96z" />
+<glyph unicode="&#xe02a;" d="M312.721 232.909c24.037 19.075 39.279 47.428 39.279 79.091 0 57.438-50.145 104-112 104h-112v-384h144c61.856 0 112 46.562 112 104 0 44.098-29.559 81.781-71.279 96.909zM192 328c0 13.255 10.745 24 24 24h33.602c21.207 0 38.398-21.49 38.398-48s-17.191-48-38.398-48h-57.602v72zM273.6 96h-57.6c-13.255 0-24 10.745-24 24v72h81.6c21.209 0 38.4-21.49 38.4-48s-17.191-48-38.4-48z" />
+<glyph unicode="&#xe02b;" d="M416 416v-32h-72l-128-320h72v-32h-224v32h72l128 320h-72v32h224z" />
+<glyph unicode="&#xe02c;" d="M96 64h288v-32h-288v32zM320 416v-192c0-15.656-7.35-30.812-20.695-42.676-15.471-13.751-36.534-21.324-59.305-21.324-22.772 0-43.834 7.573-59.304 21.324-13.346 11.864-20.696 27.020-20.696 42.676v192h-64v-192c0-70.691 64.471-128 144-128s144 57.309 144 128v192h-64z" />
+<glyph unicode="&#xe02d;" d="M480 224h-132.938c-25.039 17.71-57.215 27.43-91.062 27.43-44.603 0-82.286 25.121-82.286 54.856 0 29.735 37.683 54.857 82.286 54.857 37.529 0 70.154-17.788 79.56-41.143h56.508c-3.965 25.322-18.79 48.984-42.029 66.413-25.44 19.080-58.838 29.587-94.039 29.587-35.202 0-68.598-10.507-94.037-29.587-27.394-20.545-43.106-49.751-43.106-80.127s15.712-59.582 43.106-80.127c0.978-0.733 1.971-1.449 2.973-2.158h-132.936v-32h256.266c29.104-8.553 50.021-28.135 50.021-50.286 0-29.734-37.684-54.855-82.286-54.855-37.53 0-70.154 17.787-79.559 41.143h-56.508c3.965-25.32 18.791-48.984 42.030-66.413 25.438-19.082 58.834-29.59 94.036-29.59 35.201 0 68.599 10.508 94.037 29.587 27.395 20.545 43.104 49.751 43.104 80.127 0 17.649-5.327 34.896-15.147 50.286h102.006v32z" />
+<glyph unicode="&#xe02e;" d="M192 416c-61.856 0-112-50.144-112-112s50.144-112 112-112v-160h64v320h32v-320h64v320h64v64h-224z" />
+<glyph unicode="&#xe02f;" d="M224 416c-61.856 0-112-50.144-112-112s50.144-112 112-112v-160h64v320h32v-320h64v320h64v64h-224zM32 32l112 96-112 96z" />
+<glyph unicode="&#xe030;" d="M160 416c-61.856 0-112-50.144-112-112s50.144-112 112-112v-160h64v320h32v-320h64v320h64v64h-224zM480 224l-112-96 112-96z" />
+<glyph unicode="&#xe031;" d="M416 320h-96v32l-96 96h-192v-352h192v-96h288v224l-96 96zM416 274.745l50.745-50.745h-50.745v50.745zM224 402.745l50.745-50.745h-50.745v50.745zM64 416h128v-96h96v-192h-224v288zM480 32h-224v64h64v192h64v-96h96v-160z" />
+<glyph unicode="&#xe032;" d="M384 352h32v-32h-32zM320 288h32v-32h-32zM320 224h32v-32h-32zM320 160h32v-32h-32zM256 224h32v-32h-32zM256 160h32v-32h-32zM192 160h32v-32h-32zM384 288h32v-32h-32zM384 224h32v-32h-32zM384 160h32v-32h-32zM384 96h32v-32h-32zM320 96h32v-32h-32zM256 96h32v-32h-32zM192 96h32v-32h-32zM128 96h32v-32h-32z" />
+<glyph unicode="&#xe034;" d="M464 416h-208l-16 32h-176l-32-64h448zM420.17 128h43.83l16 224h-448l32-320h178.040c-52.441 18.888-90.040 69.133-90.040 128 0 74.991 61.009 136 136 136 74.99 0 136-61.009 136-136 0-10.839-1.311-21.575-3.83-32zM437.498 55.125l-67.248 55.346c8.727 14.461 13.75 31.407 13.75 49.529 0 53.020-42.98 96-96 96s-96-42.98-96-96 42.98-96 96-96c18.122 0 35.069 5.023 49.529 13.75l55.346-67.248c11.481-13.339 31.059-14.070 43.503-1.626l2.746 2.746c12.444 12.444 11.713 32.022-1.626 43.503zM288 98c-34.242 0-62 27.758-62 62s27.758 62 62 62 62-27.758 62-62-27.758-62-62-62z" />
+<glyph unicode="&#xe035;" d="M352 288v80c0 8.8-7.2 16-16 16h-80v32c0 17.6-14.4 32-32 32h-64c-17.602 0-32-14.4-32-32v-32h-80c-8.801 0-16-7.2-16-16v-256c0-8.8 7.199-16 16-16h112v-96h288v288h-96zM160 415.943c0.017 0.019 0.036 0.039 0.057 0.057h63.884c0.021-0.018 0.041-0.038 0.059-0.057v-31.943h-64v31.943zM96 320v32h192v-32h-192zM416 32h-224v224h224v-224zM224 224v-64h16l16 32h32v-96h-24v-32h80v32h-24v96h32l16-32h16v64z" />
+</font></defs></svg> \ No newline at end of file
diff --git a/program/js/tinymce/skins/lightgray/fonts/tinymce-small.ttf b/program/js/tinymce/skins/lightgray/fonts/tinymce-small.ttf
new file mode 100644
index 000000000..afc6ec458
--- /dev/null
+++ b/program/js/tinymce/skins/lightgray/fonts/tinymce-small.ttf
Binary files differ
diff --git a/program/js/tinymce/skins/lightgray/fonts/tinymce-small.woff b/program/js/tinymce/skins/lightgray/fonts/tinymce-small.woff
new file mode 100644
index 000000000..fa72c74b4
--- /dev/null
+++ b/program/js/tinymce/skins/lightgray/fonts/tinymce-small.woff
Binary files differ
diff --git a/program/js/tinymce/skins/lightgray/fonts/tinymce.dev.svg b/program/js/tinymce/skins/lightgray/fonts/tinymce.dev.svg
new file mode 100644
index 000000000..c87b8cd1a
--- /dev/null
+++ b/program/js/tinymce/skins/lightgray/fonts/tinymce.dev.svg
@@ -0,0 +1,153 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG font generated by IcoMoon.
+<iconset grid="16"></iconset>
+</metadata>
+<defs>
+<font id="tinymce" horiz-adv-x="512" >
+<font-face units-per-em="512" ascent="480" descent="-32" />
+<missing-glyph horiz-adv-x="512" />
+<glyph class="hidden" unicode="&#xf000;" d="M0,480L 512 -32L0 -32 z" horiz-adv-x="0" />
+<glyph unicode="&#xe034;" d="M 464,416L 256,416L 240,448L 64,448L 32,384L 480,384 zM 452.17,128l 37.43,0 L 512,352L0,352 l 32-320l 242.040,0 C 221.599,50.888, 184,101.133, 184,160c0,74.991, 61.009,136, 136,136
+ c 74.99,0, 136-61.009, 136-136C 456,149.161, 454.689,138.425, 452.17,128zM 501.498,23.125l-99.248,87.346C 410.977,124.931, 416,141.878, 416,160c0,53.020-42.98,96-96,96s-96-42.98-96-96
+ s 42.98-96, 96-96c 18.122,0, 35.069,5.023, 49.529,13.75l 87.346-99.248c 11.481-13.339, 31.059-14.070, 43.503-1.626l 2.746,2.746
+ C 515.568-7.934, 514.837,11.644, 501.498,23.125z M 320,98c-34.242,0-62,27.758-62,62s 27.758,62, 62,62s 62-27.758, 62-62
+ S 354.242,98, 320,98z" />
+<glyph unicode="&#xe032;" d="M 384,352L 416,352L 416,320L 384,320zM 320,288L 352,288L 352,256L 320,256zM 320,224L 352,224L 352,192L 320,192zM 320,160L 352,160L 352,128L 320,128zM 256,224L 288,224L 288,192L 256,192zM 256,160L 288,160L 288,128L 256,128zM 192,160L 224,160L 224,128L 192,128zM 384,288L 416,288L 416,256L 384,256zM 384,224L 416,224L 416,192L 384,192zM 384,160L 416,160L 416,128L 384,128zM 384,96L 416,96L 416,64L 384,64zM 320,96L 352,96L 352,64L 320,64zM 256,96L 288,96L 288,64L 256,64zM 192,96L 224,96L 224,64L 192,64zM 128,96L 160,96L 160,64L 128,64z" data-tags="resize, dots" />
+<glyph unicode="&#xe031;" d="M 416,352l-96,0 L 320,384 L 224,480L0,480 l0-384 l 192,0 l0-128 l 320,0 L 512,256 L 416,352z M 416,306.745L 466.745,256L 416,256 L 416,306.745 z M 224,434.745L 274.745,384L 224,384
+ L 224,434.745 z M 32,448l 160,0 l0-96 l 96,0 l0-224 L 32,128 L 32,448 z M 480,0L 224,0 l0,96 l 96,0 L 320,320 l 64,0 l0-96 l 96,0 L 480,0 z" data-tags="copy" />
+<glyph unicode="&#xe030;" d="M 128,448 L 384,448 L 384,384 L 320,384 L 320,0 L 256,0 L 256,384 L 192,384 L 192,0 L 128,0 L 128,224 C 66.144,224 16,274.144 16,336 C 16,397.856 66.144,448 128,448 ZM 480,32L 352,144L 480,256 z" data-tags="rtl" />
+<glyph unicode="&#xe02f;" d="M 224,448 L 480,448 L 480,384 L 416,384 L 416,0 L 352,0 L 352,384 L 288,384 L 288,0 L 224,0 L 224,224 C 162.144,224 112,274.144 112,336 C 112,397.856 162.144,448 224,448 ZM 32,256L 160,144L 32,32 z" data-tags="ltr" />
+<glyph unicode="&#xe02e;" d="M 192,448 L 448,448 L 448,384 L 384,384 L 384,0 L 320,0 L 320,384 L 256,384 L 256,0 L 192,0 L 192,224 C 130.144,224 80,274.144 80,336 C 80,397.856 130.144,448 192,448 Z" data-tags="visualchars" />
+<glyph unicode="&#xe02d;" d="M 365.71,221.482 C 397.67,197.513 416,163.439 416,128 C 416,92.561 397.67,58.487 365.71,34.518 C 336.031,12.259 297.068,0 256,0 C 214.931,0 175.969,12.259 146.29,34.518 C 114.33,58.487 96,92.561 96,128 L 160,128 C 160,93.309 203.963,64 256,64 C 308.037,64 352,93.309 352,128 C 352,162.691 308.037,192 256,192 C 214.931,192 175.969,204.259 146.29,226.518 C 114.33,250.488 96,284.561 96,320 C 96,355.439 114.33,389.512 146.29,413.482 C 175.969,435.741 214.931,448 256,448 C 297.068,448 336.031,435.741 365.71,413.482 C 397.67,389.512 416,355.439 416,320 L 352,320 C 352,354.691 308.037,384 256,384 C 203.963,384 160,354.691 160,320 C 160,285.309 203.963,256 256,256 C 297.068,256 336.031,243.741 365.71,221.482 ZM0,224L 512,224L 512,192L0,192z" data-tags="strikethrough" />
+<glyph unicode="&#xe02c;" d="M 352,448 L 416,448 L 416,240 C 416,160.471 344.366,96 256,96 C 167.635,96 96,160.471 96,240 L 96,448 L 160,448 L 160,240 C 160,219.917 169.119,200.648 185.677,185.747 C 204.125,169.145 229.1,160 256,160 C 282.9,160 307.875,169.145 326.323,185.747 C 342.881,200.648 352,219.917 352,240 L 352,448 ZM 96,64L 416,64L 416,0L 96,0z" data-tags="underline" />
+<glyph unicode="&#xe02b;" d="M 448,448 L 448,416 L 384,416 L 224,32 L 288,32 L 288,0 L 64,0 L 64,32 L 128,32 L 288,416 L 224,416 L 224,448 Z" data-tags="italic" />
+<glyph unicode="&#xe02a;" d="M 353.94,237.674C 372.689,259.945, 384,288.678, 384,320c0,70.58-57.421,128-128,128l-64,0 l-64,0 L 96,448 l0-448 l 32,0 l 64,0 l 96,0
+ c 70.579,0, 128,57.421, 128,128C 416,174.478, 391.101,215.248, 353.94,237.674z M 192,384l 50.75,0 c 27.984,0, 50.75-28.71, 50.75-64
+ s-22.766-64-50.75-64L 192,256 L 192,384 z M 271.5,64L 192,64 L 192,192 l 79.5,0 c 29.225,0, 53-28.71, 53-64S 300.725,64, 271.5,64z" data-tags="bold0" />
+<glyph unicode="&#xe029;" d="M 192,64L 288,64L 288-32L 192-32zM 400,448 C 426.51,448 448,426.51 448,400 L 448,256 L 288,160 L 288,96 L 192,96 L 192,192 L 352,288 L 352,352 L 96,352 L 96,448 L 400,448 Z" />
+<glyph unicode="&#xe028;" d="M 288,448 C 411.712,448 512,347.712 512,224 C 512,100.288 411.712,0 288,0 L 288,48 C 335.012,48 379.209,66.307 412.451,99.549 C 445.693,132.791 464,176.988 464,224 C 464,271.011 445.693,315.209 412.451,348.451 C 379.209,381.693 335.012,400 288,400 C 240.989,400 196.791,381.693 163.549,348.451 C 137.979,322.882 121.258,290.828 114.896,256 L 208,256 L 96,128 L -16,256 L 66.285,256 C 81.815,364.551 175.154,448 288,448 ZM 384,256 L 384,192 L 256,192 L 256,352 L 320,352 L 320,256 Z" data-tags="restoredraft" />
+<glyph unicode="&#xe027;" d="M0,224L 64,224L 64,192L0,192zM 96,224L 192,224L 192,192L 96,192zM 224,224L 288,224L 288,192L 224,192zM 320,224L 416,224L 416,192L 320,192zM 448,224L 512,224L 512,192L 448,192zM 440,480 L 448,256 L 64,256 L 72,480 L 88,480 L 96,288 L 416,288 L 424,480 ZM 72-32 L 64,160 L 448,160 L 440-32 L 424-32 L 416,128 L 96,128 L 88-32 Z" data-tags="pagebreak" />
+<glyph unicode="&#xe026;" d="M 192,384L 256,384L 256,352L 192,352zM 288,384L 352,384L 352,352L 288,352zM 448,384 L 448,256 L 352,256 L 352,288 L 416,288 L 416,352 L 384,352 L 384,384 ZM 160,288L 224,288L 224,256L 160,256zM 256,288L 320,288L 320,256L 256,256zM 96,352 L 96,288 L 128,288 L 128,256 L 64,256 L 64,384 L 160,384 L 160,352 ZM 192,192L 256,192L 256,160L 192,160zM 288,192L 352,192L 352,160L 288,160zM 448,192 L 448,64 L 352,64 L 352,96 L 416,96 L 416,160 L 384,160 L 384,192 ZM 160,96L 224,96L 224,64L 160,64zM 256,96L 320,96L 320,64L 256,64zM 96,160 L 96,96 L 128,96 L 128,64 L 64,64 L 64,192 L 160,192 L 160,160 ZM 480,448 L 32,448 L 32,0 L 480,0 L 480,448 Z M 512,480 L 512,480 L 512-32 L 0-32 L 0,480 L 512,480 Z" data-tags="template" />
+<glyph unicode="&#xe025;" d="M 224,192 L 128,192 L 128,256 L 224,256 L 224,352 L 288,352 L 288,256 L 384,256 L 384,192 L 288,192 L 288,96 L 224,96 ZM 512,160 L 512-32 L 0-32 L 0,160 L 64,160 L 64,32 L 448,32 L 448,160 Z" data-tags="nonbreaking" />
+<glyph unicode="&#xe024;" d="M 64,352l 64,0 l0-96 l 32,0 L 160,448 c0,17.6-14.4,32-32,32L 64,480 C 46.4,480, 32,465.6, 32,448l0-192 l 32,0 L 64,352 z M 64,448l 64,0 l0-64 L 64,384 L 64,448 z M 480,448L 480,480 l-96,0
+ c-17.601,0-32-14.4-32-32l0-160 c0-17.6, 14.399-32, 32-32l 96,0 l0,32 l-96,0 L 384,448 L 480,448 z M 320,400L 320,448 c0,17.6-14.4,32-32,32l-96,0 l0-224 l 96,0
+ c 17.6,0, 32,14.4, 32,32l0,48 c0,17.6-4.4,32-22,32C 315.6,368, 320,382.4, 320,400z M 288,288l-64,0 l0,64 l 64,0 L 288,288 z M 288,384l-64,0 L 224,448 l 64,0 L 288,384 zM 416,192 L 208-32 L 96,112 L 137,147 L 208,73 L 384,224 Z" data-tags="spellchecker" />
+<glyph unicode="&#xe023;" d="M 512,480 L 512,288 L 442.87,357.13 L 336.87,251.13 L 283.13,304.87 L 389.13,410.87 L 320,480 ZM 122.87,410.87 L 228.87,304.87 L 175.13,251.13 L 69.13,357.13 L 0,288 L 0,480 L 192,480 ZM 442.87,90.87 L 512,160 L 512-32 L 320-32 L 389.13,37.13 L 283.13,143.13 L 336.87,196.87 ZM 228.87,143.13 L 122.87,37.13 L 192-32 L 0-32 L 0,160 L 69.13,90.87 L 175.13,196.87 Z" data-tags="fullscreen" />
+<glyph unicode="&#xe022;" d="M 128,448L 384,448L 384,384L 128,384zM 480,352L 32,352 C 14.4,352,0,337.6,0,320l0-160 c0-17.6, 14.398-32, 32-32l 96,0 l0-128 l 256,0 L 384,128 l 96,0 c 17.6,0, 32,14.4, 32,32L 512,320
+ C 512,337.6, 497.6,352, 480,352z M 352,32L 160,32 L 160,192 l 192,0 L 352,32 z M 487.2,304c0-12.813-10.387-23.2-23.199-23.2
+ c-12.813,0-23.201,10.387-23.201,23.2s 10.388,23.2, 23.201,23.2C 476.814,327.2, 487.2,316.813, 487.2,304z" data-tags="print" />
+<glyph unicode="&#xe021;" d="M 256,480C 114.615,480,0,365.386,0,224c0-141.385, 114.614-256, 256-256c 141.385,0, 256,114.615, 256,256
+ C 512,365.386, 397.385,480, 256,480z M 256,8c-119.293,0-216,96.706-216,216c0,119.293, 96.707,216, 216,216c 119.295,0, 216-96.707, 216-216
+ C 472,104.706, 375.295,8, 256,8z M 192,320c0-17.673-14.327-32-32-32s-32,14.327-32,32s 14.327,32, 32,32S 192,337.673, 192,320z
+ M 384,320c0-17.673-14.326-32-32-32s-32,14.327-32,32s 14.326,32, 32,32S 384,337.673, 384,320zM 256,154 C 326.537,154 387.344,182.766 415.231,215.596 C 404.795,129.986 337.087,64 256,64 C 174.941,64 107.251,130.013 96.778,215.584 C 124.671,182.761 185.471,154 256,154 Z" data-tags="emoticons" />
+<glyph unicode="&#xe020;" d="M 352,32 L 480,32 L 512,96 L 512-32 L 320-32 L 320,75.107 C 385.556,103.349 432,173.688 432,256 C 432,363.216 353.201,447.133 256,447.133 C 158.797,447.133 80,363.217 80,256 C 80,173.688 126.443,103.349 192,75.107 L 192-32 L 0-32 L 0,96 L 32,32 L 160,32 L 160,48.295 C 66.185,81.525 0,161.996 0,256 C 0,379.712 114.615,480 256,480 C 397.385,480 512,379.712 512,256 C 512,161.996 445.815,81.525 352,48.295 L 352,32 Z" data-tags="charmap" />
+<glyph unicode="&#xe01f;" d="M 384,377 L 384,352 L 448,352 L 448,320 L 352,320 L 352,393 L 416,423 L 416,448 L 352,448 L 352,480 L 448,480 L 448,407 ZM 338,352L 270,352L 176,258L 82,352L 14,352L 142,224L 14,96L 82,96L 176,190L 270,96L 338,96L 210,224 z" data-tags="sup" />
+<glyph unicode="&#xe01e;" d="M 384,25 L 384,0 L 448,0 L 448-32 L 352-32 L 352,41 L 416,71 L 416,96 L 352,96 L 352,128 L 448,128 L 448,55 ZM 338,352L 270,352L 176,258L 82,352L 14,352L 142,224L 14,96L 82,96L 176,190L 270,96L 338,96L 210,224 z" data-tags="sub" />
+<glyph unicode="&#xe01d;" d="M0,32L 288,32L 288-32L0-32zM 96,480L 448,480L 448,416L 96,416zM 138.694,64 L 241.038,456.082 L 302.963,439.918 L 204.838,64 ZM 464.887-32 L 400,32.887 L 335.113-32 L 304-0.887 L 368.887,64 L 304,128.887 L 335.113,160 L 400,95.113 L 464.887,160 L 496,128.887 L 431.113,64 L 496-0.887 Z" data-tags="removeformat" />
+<glyph unicode="&#xe01c;" d="M0,256L 512,256L 512,192L0,192z" data-tags="hr" />
+<glyph unicode="&#xe01b;" d="M0,448l0-448 l 512,0 L 512,448 L0,448 z M 192,160l0,96 l 128,0 l0-96 L 192,160 z M 320,128l0-96 L 192,32 l0,96 L 320,128 z M 320,384l0-96 L 192,288 L 192,384 L 320,384 z M 160,384l0-96 L 32,288 L 32,384 L 160,384 z
+ M 32,256l 128,0 l0-96 L 32,160 L 32,256 z M 352,256l 128,0 l0-96 L 352,160 L 352,256 z M 352,288L 352,384 l 128,0 l0-96 L 352,288 z M 32,128l 128,0 l0-96 L 32,32 L 32,128 z M 352,32l0,96 l 128,0 l0-96 L 352,32 z" data-tags="table" />
+<glyph unicode="&#xe01a;" d="M 161.009,64l 28.8,96l 132.382,0 l 28.8-96l 56.816,0 L 311.809,384L 200.191,384 l-96-320L 161.009,64 z M 237.809,320l 36.382,0 l 28.8-96l-93.982,0
+ L 237.809,320z" data-tags="forecolor" />
+<glyph unicode="&#xe019;" d="M 256,320C 151.316,320, 58.378,269.722,0,192c 58.378-77.723, 151.316-128, 256-128c 104.684,0, 197.622,50.277, 256,128
+ C 453.622,269.722, 360.684,320, 256,320z M 224,256c 17.673,0, 32-14.327, 32-32s-14.327-32-32-32s-32,14.327-32,32S 206.327,256, 224,256z
+ M 386.808,127.352c-19.824-10.129-40.826-17.931-62.423-23.188C 302.141,98.746, 279.134,96, 256,96
+ c-23.133,0-46.141,2.746-68.384,8.162c-21.597,5.259-42.599,13.061-62.423,23.188c-31.51,16.101-60.111,38.205-83.82,64.649
+ c 23.709,26.444, 52.31,48.55, 83.82,64.649c 16.168,8.261, 33.121,14.973, 50.541,20.020C 165.79,261.547, 160,243.451, 160,224
+ c0-53.020, 42.981-96, 96-96c 53.019,0, 96,42.98, 96,96c0,19.451-5.791,37.547-15.733,52.67c 17.419-5.048, 34.372-11.76, 50.541-20.021
+ c 31.511-16.099, 60.109-38.204, 83.819-64.649C 446.917,165.557, 418.318,143.45, 386.808,127.352z M 430.459,358.139
+ C 376.099,385.916, 317.403,400, 256,400c-61.403,0-120.099-14.084-174.459-41.861C 52.155,343.123, 24.675,324.187,0,302.101l0-54.603
+ c 27.669,29.283, 60.347,53.877, 96.097,72.145C 145.907,345.095, 199.706,358, 256,358s 110.093-12.905, 159.902-38.358
+ c 35.751-18.268, 68.429-42.862, 96.098-72.145L 512,302.1 C 487.325,324.187, 459.846,343.123, 430.459,358.139z" data-tags="preview" />
+<glyph unicode="&#xe018;" d="M 256,384C 149.962,384, 64,298.039, 64,192s 85.961-192, 192-192c 106.037,0, 192,85.961, 192,192S 362.037,384, 256,384z
+ M 357.822,90.177C 330.626,62.979, 294.464,48, 256,48s-74.625,14.979-101.823,42.177C 126.979,117.374, 112,153.536, 112,192
+ s 14.979,74.625, 42.177,101.823C 181.375,321.021, 217.536,336, 256,336s 74.626-14.979, 101.821-42.177
+ C 385.022,266.625, 400,230.464, 400,192S 385.021,117.374, 357.822,90.177zM 162.965,378.069l-21.47,42.939C 92.058,396.24, 51.76,355.942, 26.992,306.504l 42.938-21.47
+ C 90.054,325.202, 122.796,357.945, 162.965,378.069zM 442.067,285.035l 42.939,21.469C 460.24,355.942, 419.943,396.24, 370.504,421.008l-21.472-42.939
+ C 389.201,357.945, 421.944,325.203, 442.067,285.035zM 256,288l-32,0 l0-96 c0-5.055, 2.35-9.555, 6.011-12.486l-0.006-0.008l 80-64l 19.988,24.988L 256,199.689L 256,288 z" data-tags="inserttime" />
+<glyph unicode="&#xe017;" d="M 160,352L 32,224L 160,96L 224,96L 96,224L 224,352 zM 352,352L 288,352L 416,224L 288,96L 352,96L 480,224 z" data-tags="code" />
+<glyph unicode="&#xe016;" d="M 224,128L 288,128L 288,64L 224,64zM 352,352 C 369.673,352 384,337.673 384,320 L 384,224 L 288,160 L 224,160 L 224,192 L 320,256 L 320,288 L 160,288 L 160,352 L 352,352 ZM 256,432 C 200.441,432 148.208,410.364 108.922,371.078 C 69.636,331.792 48,279.559 48,224 C 48,168.441 69.636,116.208 108.922,76.922 C 148.208,37.636 200.441,16 256,16 C 311.559,16 363.792,37.636 403.078,76.922 C 442.364,116.208 464,168.441 464,224 C 464,279.559 442.364,331.792 403.078,371.078 C 363.792,410.364 311.559,432 256,432 Z M 256,480 L 256,480 C 397.385,480 512,365.385 512,224 C 512,82.615 397.385-32 256-32 C 114.615-32 0,82.615 0,224 C 0,365.385 114.615,480 256,480 Z" data-tags="help" />
+<glyph unicode="&#xe015;" d="M0,416l0-384 l 512,0 L 512,416 L0,416 z M 96,64L 32,64 l0,64 l 64,0 L 96,64 z M 96,192L 32,192 l0,64 l 64,0 L 96,192 z M 96,320L 32,320 L 32,384 l 64,0 L 96,320 z M 384,64L 128,64 L 128,384 l 256,0 L 384,64 z
+ M 480,64l-64,0 l0,64 l 64,0 L 480,64 z M 480,192l-64,0 l0,64 l 64,0 L 480,192 z M 480,320l-64,0 L 416,384 l 64,0 L 480,320 zM 192,320L 192,128L 320,224 z" data-tags="media" />
+<glyph unicode="&#xe014;" d="M0,416l0-416 l 512,0 L 512,416 L0,416 z M 480,32L 32,32 L 32,384 l 448,0 L 480,32 zM 352,304A48,48 3060 1 0 448,304A48,48 3060 1 0 352,304zM 448,64 L 64,64 L 160,320 L 288,160 L 352,208 Z" data-tags="image" />
+<glyph unicode="&#xe013;" d="M 96,480l0-512 l 160,160l 160-160L 416,480 L 96,480 z M 384,45.255l-128,128l-128-128L 128,448 l 256,0 L 384,45.255 z" data-tags="anchor" />
+<glyph unicode="&#xe012;" d="M 238.444,142.443c 2.28-4.524, 3.495-9.579, 3.495-14.848c0-8.808-3.372-17.029-9.496-23.154l-81.69-81.69
+ c-6.124-6.124-14.348-9.496-23.154-9.496s-17.030,3.372-23.154,9.496l-49.69,49.69c-6.124,6.125-9.496,14.348-9.496,23.154
+ s 3.372,17.030, 9.496,23.154l 81.69,81.691c 6.124,6.123, 14.348,9.496, 23.154,9.496c 5.269,0, 10.322-1.215, 14.848-3.494l 32.669,32.668
+ c-13.935,10.705-30.72,16.080-47.517,16.080c-19.993,0-39.986-7.583-55.154-22.751l-81.69-81.691
+ c-30.335-30.335-30.335-79.975,0-110.309l 49.69-49.691c 15.167-15.166, 35.16-22.75, 55.153-22.75
+ c 19.994,0, 39.987,7.584, 55.154,22.751l 81.69,81.69c 27.91,27.91, 30.119,72.149, 6.672,102.673L 238.444,142.443zM 489.248,407.558l-49.69,49.691C 424.391,472.417, 404.398,480, 384.404,480c-19.993,0-39.985-7.583-55.153-22.751l-81.691-81.691
+ c-27.91-27.91-30.119-72.149-6.671-102.671l 32.669,32.67c-2.279,4.525-3.494,9.58-3.494,14.847c0,8.808, 3.372,17.030, 9.496,23.154
+ l 81.691,81.691c 6.123,6.124, 14.347,9.497, 23.153,9.497c 8.808,0, 17.030-3.373, 23.154-9.497l 49.69-49.691
+ c 6.124-6.124, 9.496-14.347, 9.496-23.154c0-8.807-3.372-17.030-9.496-23.154l-81.69-81.691c-6.124-6.124-14.347-9.496-23.154-9.496
+ c-5.268,0-10.322,1.215-14.848,3.495l-32.669-32.669c 13.936-10.705, 30.72-16.080, 47.517-16.080c 19.994,0, 39.987,7.584, 55.154,22.752
+ l 81.69,81.69C 519.584,327.584, 519.584,377.223, 489.248,407.558zM 116.684,340.688L 20.687,436.685L 43.315,459.313L 139.312,363.316zM 192,480L 224,480L 224,384L 192,384zM0,288L 96,288L 96,256L0,256zM 395.316,107.312L 491.314,11.314L 468.686-11.314L 372.688,84.684zM 288,64L 320,64L 320-32L 288-32zM 416,192L 512,192L 512,160L 416,160z" data-tags="unlink" />
+<glyph unicode="&#xe011;" d="M 160,128c 8.8-8.8, 23.637-8.363, 32.971,0.971L 351.030,287.029C 360.364,296.363, 360.8,311.2, 352,320
+ s-23.637,8.363-32.971-0.971L 160.971,160.971C 151.637,151.637, 151.2,136.8, 160,128zM 238.444,142.444c 2.28-4.525, 3.495-9.58, 3.495-14.848c0-8.808-3.372-17.030-9.496-23.154l-81.691-81.691
+ c-6.124-6.124-14.347-9.496-23.154-9.496s-17.030,3.372-23.154,9.496l-49.691,49.691c-6.124,6.124-9.496,14.347-9.496,23.154
+ s 3.372,17.030, 9.496,23.154l 81.691,81.691c 6.124,6.124, 14.347,9.497, 23.154,9.497c 5.268,0, 10.322-1.215, 14.848-3.495l 32.669,32.669
+ c-13.935,10.705-30.72,16.080-47.517,16.080c-19.993,0-39.986-7.583-55.154-22.751l-81.691-81.691
+ c-30.335-30.335-30.335-79.974,0-110.309l 49.691-49.691C 87.611-24.416, 107.604-32, 127.597-32
+ c 19.994,0, 39.987,7.584, 55.154,22.751l 81.691,81.691c 27.91,27.91, 30.119,72.149, 6.672,102.672L 238.444,142.444zM 489.249,407.558l-49.691,49.691C 424.391,472.417, 404.398,480, 384.404,480c-19.993,0-39.986-7.583-55.154-22.751l-81.691-81.691
+ c-27.91-27.91-30.119-72.149-6.671-102.671l 32.669,32.67c-2.279,4.525-3.494,9.58-3.494,14.847c0,8.808, 3.372,17.030, 9.496,23.154
+ l 81.691,81.691c 6.124,6.124, 14.347,9.497, 23.154,9.497s 17.030-3.373, 23.154-9.497l 49.691-49.691
+ c 6.124-6.124, 9.496-14.347, 9.496-23.154s-3.372-17.030-9.496-23.154l-81.691-81.691c-6.124-6.124-14.347-9.496-23.154-9.496
+ c-5.268,0-10.322,1.215-14.848,3.495l-32.669-32.669c 13.936-10.705, 30.72-16.080, 47.517-16.080c 19.994,0, 39.987,7.584, 55.154,22.751
+ l 81.691,81.691C 519.584,327.584, 519.584,377.223, 489.249,407.558z" data-tags="link" />
+<glyph unicode="&#xe010;" d="M 288,355.814L 288,480 l 192-192L 288,96L 288,222.912 C 64.625,228.153, 74.206,71.016, 131.070-32
+ C-9.286,119.707, 20.52,362.785, 288,355.814z" data-tags="redo" />
+<glyph unicode="&#xe00f;" d="M 380.931-32C 437.794,71.016, 447.375,228.153, 224,222.912L 224,96 L 32,288L 224,480l0-124.186
+ C 491.481,362.785, 521.285,119.707, 380.931-32z" data-tags="undo" />
+<glyph unicode="&#xe00e;" d="M 112.5,256 C 174.356,256 224.5,205.855 224.5,144 C 224.5,82.144 174.356,32 112.5,32 C 50.644,32 0.5,82.144 0.5,144 L 0,160 C 0,283.712 100.288,384 224,384 L 224,320 C 181.263,320 141.083,303.357 110.863,273.137 C 105.046,267.319 99.737,261.129 94.948,254.627 C 100.667,255.527 106.528,256 112.5,256 ZM 400.5,256 C 462.355,256 512.5,205.855 512.5,144 C 512.5,82.144 462.355,32 400.5,32 C 338.645,32 288.5,82.144 288.5,144 L 288,160 C 288,283.712 388.288,384 512,384 L 512,320 C 469.263,320 429.083,303.357 398.863,273.137 C 393.045,267.319 387.736,261.129 382.947,254.627 C 388.667,255.527 394.527,256 400.5,256 Z" data-tags="blockquote" />
+<glyph unicode="&#xe00d;" d="M0,448L 512,448L 512,384L0,384zM 192,352L 512,352L 512,288L 192,288zM 192,256L 512,256L 512,192L 192,192zM 192,160L 512,160L 512,96L 192,96zM0,64L 512,64L 512,0L0,0zM 128,320 L 128,128 L 0,224 Z" data-tags="outdent" />
+<glyph unicode="&#xe00c;" d="M0,448L 512,448L 512,384L0,384zM 192,352L 512,352L 512,288L 192,288zM 192,256L 512,256L 512,192L 192,192zM 192,160L 512,160L 512,96L 192,96zM0,64L 512,64L 512,0L0,0zM 0,128 L 0,320 L 128,224 Z" data-tags="indent" />
+<glyph unicode="&#xe00b;" d="M 192,64L 512,64L 512,0L 192,0zM 192,256L 512,256L 512,192L 192,192zM 192,448L 512,448L 512,384L 192,384zM 96,480 L 96,352 L 64,352 L 64,448 L 32,448 L 32,480 ZM 64,217 L 64,192 L 128,192 L 128,160 L 32,160 L 32,233 L 96,263 L 96,288 L 32,288 L 32,320 L 128,320 L 128,247 ZM 128,128 L 128-32 L 32-32 L 32,0 L 96,0 L 96,32 L 32,32 L 32,64 L 96,64 L 96,96 L 32,96 L 32,128 Z" data-tags="numlist" />
+<glyph unicode="&#xe00a;" d="M 192,448l 320,0 l0-64 L 192,384 L 192,448 z M 192,256l 320,0 l0-64 L 192,192 L 192,256 z M 192,64l 320,0 l0-64 L 192,0 L 192,64 zM0,416A64,64 3060 1 0 128,416A64,64 3060 1 0 0,416zM0,224A64,64 3060 1 0 128,224A64,64 3060 1 0 0,224zM0,32A64,64 3060 1 0 128,32A64,64 3060 1 0 0,32z" data-tags="bullist" />
+<glyph unicode="&#xe009;" d="M 32,480L 224,480L 224,448L 32,448zM 288,480L 480,480L 480,448L 288,448zM 476,320l-28,0 L 448,448 L 320,448 l0-128 L 192,320 L 192,448 L 64,448 l0-128 L 36,320 c-19.8,0-36-16.2-36-36l0-280 c0-19.8, 16.2-36, 36-36l 152,0 c 19.8,0, 36,16.2, 36,36L 224,192 l 64,0
+ l0-188 c0-19.8, 16.2-36, 36-36l 152,0 c 19.8,0, 36,16.2, 36,36L 512,284 C 512,303.8, 495.8,320, 476,320z M 174,0L 50,0 c-9.9,0-18,7.2-18,16
+ s 8.1,16, 18,16l 124,0 c 9.9,0, 18-7.2, 18-16S 183.9,0, 174,0z M 272,224l-32,0 c-8.8,0-16,7.2-16,16s 7.2,16, 16,16l 32,0 c 8.8,0, 16-7.2, 16-16
+ S 280.8,224, 272,224z M 462,0L 338,0 c-9.9,0-18,7.2-18,16s 8.1,16, 18,16l 124,0 c 9.9,0, 18-7.2, 18-16S 471.9,0, 462,0z" data-tags="searchreplace" />
+<glyph unicode="&#xe008;" d="M 416,320L 416,400 c0,8.8-7.2,16-16,16L 288,416 L 288,448 c0,17.6-14.4,32-32,32l-64,0 c-17.602,0-32-14.4-32-32l0-32 L 48,416 c-8.801,0-16-7.2-16-16l0-320
+ c0-8.8, 7.199-16, 16-16l 144,0 l0-96 l 224,0 l 96,96L 512,320 L 416,320 z M 192,447.943c 0.017,0.019, 0.036,0.039, 0.057,0.057l 63.884,0
+ c 0.021-0.018, 0.041-0.038, 0.059-0.057L 256,416 l-64,0 L 192,447.943 z M 96,352L 96,384 l 256,0 l0-32 L 96,352 z M 416,13.255L 416,64 l 50.745,0 L 416,13.255z M 480,96l-96,0 l0-96
+ L 224,0 L 224,288 l 256,0 L 480,96 z" data-tags="paste" />
+<glyph unicode="&#xe007;" d="M 445.387,125.423c-22.827,22.778-51.864,34.536-78.973,34.536l-14.556,0 l-31.952,32.004l 127.81,128.019
+ c 31.952,32.005, 31.952,96.014,0,128.019L 256.001,255.973L 64.285,448c-31.952-32.004-31.952-96.014,0-128.019l 127.811-128.017
+ l-31.953-32.004l-14.557,0 c-27.11,0-56.146-11.759-78.974-34.538c-40.811-40.721-46.325-101.242-12.315-135.175
+ C 69.282-24.704, 89.441-32, 110.795-32c 27.108,0, 56.145,11.757, 78.973,34.536c 26.792,26.732, 38.371,62, 33.542,92.674l 32.692,32.744
+ l 32.688-32.744c-4.828-30.674, 6.753-65.941, 33.542-92.674C 345.063-20.243, 374.098-32, 401.206-32
+ c 21.354,0, 41.512,7.296, 56.497,22.248C 491.713,24.181, 486.197,84.702, 445.387,125.423z M 176.512,57.231
+ c-3.849-8.941-9.505-17.173-16.813-24.463c-7.318-7.302-15.586-12.959-24.574-16.812c-8.066-3.458-16.48-5.284-24.331-5.284
+ c-7.573,0-18.306,1.701-26.431,9.806c-8.068,8.052-9.76,18.659-9.76,26.144c0,7.771, 1.821,16.105, 5.263,24.106
+ c 3.85,8.942, 9.507,17.173, 16.813,24.463c 7.317,7.303, 15.586,12.957, 24.575,16.812c 8.067,3.457, 16.48,5.284, 24.332,5.284
+ c 7.573,0, 18.306-1.7, 26.429-9.807c 8.067-8.049, 9.761-18.658, 9.761-26.142C 181.777,73.567, 179.957,65.23, 176.512,57.231z
+ M 256.002,146.702c-24.957,0-45.188,20.266-45.188,45.263c0,24.996, 20.231,45.26, 45.188,45.26s 45.186-20.264, 45.186-45.26
+ C 301.188,166.966, 280.958,146.702, 256.002,146.702z M 427.636,20.479c-8.124-8.104-18.856-9.806-26.43-9.806
+ c-7.852,0-16.265,1.826-24.333,5.284c-8.986,3.853-17.254,9.51-24.571,16.812c-7.307,7.29-12.963,15.521-16.813,24.463
+ c-3.443,7.999-5.263,16.336-5.263,24.106c0,7.483, 1.692,18.094, 9.76,26.143c 8.123,8.104, 18.856,9.807, 26.43,9.807
+ c 7.85,0, 16.265-1.827, 24.33-5.284c 8.989-3.854, 17.258-9.509, 24.575-16.812c 7.305-7.29, 12.962-15.521, 16.813-24.463
+ c 3.442-7.999, 5.263-16.335, 5.263-24.106C 437.396,39.138, 435.702,28.53, 427.636,20.479z" data-tags="cut" />
+<glyph unicode="&#xe006;" d="M0,448L 512,448L 512,384L0,384zM0,352L 512,352L 512,288L0,288zM0,256L 512,256L 512,192L0,192zM0,160L 512,160L 512,96L0,96zM0,64L 512,64L 512,0L0,0z" data-tags="alignjustify" />
+<glyph unicode="&#xe005;" d="M0,448L 512,448L 512,384L0,384zM 192,352L 512,352L 512,288L 192,288zM 192,160L 512,160L 512,96L 192,96zM0,256L 512,256L 512,192L0,192zM0,64L 512,64L 512,0L0,0z" data-tags="alignright" />
+<glyph unicode="&#xe004;" d="M0,448L 512,448L 512,384L0,384zM 96,352L 416,352L 416,288L 96,288zM 96,160L 416,160L 416,96L 96,96zM0,256L 512,256L 512,192L0,192zM0,64L 512,64L 512,0L0,0z" data-tags="aligncenter" />
+<glyph unicode="&#xe003;" d="M0,448L 512,448L 512,384L0,384zM0,352L 320,352L 320,288L0,288zM0,160L 320,160L 320,96L0,96zM0,256L 512,256L 512,192L0,192zM0,64L 512,64L 512,0L0,0z" data-tags="alignleft" />
+<glyph unicode="&#xe002;" d="M 512,183.771l0,80.458 l-79.572,7.957c-4.093,15.021-10.044,29.274-17.605,42.49l 52.298,63.919L 410.595,435.12l-63.918-52.298
+ c-13.217,7.562-27.471,13.513-42.491,17.604L 296.229,480l-80.458,0 l-7.957-79.573c-15.021-4.093-29.274-10.043-42.49-17.604
+ L 101.405,435.12L 44.88,378.595l 52.298-63.918c-7.562-13.216-13.513-27.47-17.605-42.49L0,264.229l0-80.458 l 79.573-7.957
+ c 4.093-15.021, 10.043-29.274, 17.605-42.491L 44.88,69.405l 56.524-56.524l 63.919,52.298c 13.216-7.562, 27.47-13.514, 42.49-17.605
+ L 215.771-32l 80.458,0 l 7.957,79.572c 15.021,4.093, 29.274,10.044, 42.491,17.605l 63.918-52.298l 56.524,56.524l-52.298,63.918
+ c 7.562,13.217, 13.514,27.471, 17.605,42.49L 512,183.771z M 352,192l-64-64l-64,0 l-64,64l0,64 l 64,64l 64,0 l 64-64L 352,192 z" data-tags="fullpage" />
+<glyph unicode="&#xe001;" d="M 451.716,380.285l-71.432,71.431C 364.728,467.272, 334,480, 312,480L 72,480 C 50,480, 32,462, 32,440l0-432 c0-22, 18-40, 40-40l 368,0 c 22,0, 40,18, 40,40
+ L 480,312 C 480,334, 467.272,364.729, 451.716,380.285z M 429.089,357.657c 1.565-1.565, 3.125-3.487, 4.64-5.657L 352,352 L 352,433.728
+ c 2.17-1.515, 4.092-3.075, 5.657-4.64L 429.089,357.657z M 448,8c0-4.336-3.664-8-8-8L 72,0 c-4.336,0-8,3.664-8,8L 64,440 c0,4.336, 3.664,8, 8,8
+ l 240,0 c 2.416,0, 5.127-0.305, 8-0.852L 320,320 l 127.148,0 c 0.547-2.873, 0.852-5.583, 0.852-8L 448,8 z" data-tags="newdocument" />
+<glyph unicode="&#xe000;" d="M 448,480L0,480 l0-512 l 512,0 L 512,416 L 448,480z M 256,416l 64,0 l0-128 l-64,0 L 256,416 z M 448,32L 64,32 L 64,416 l 32,0 l0-160 l 288,0 L 384,416 l 37.489,0 L 448,389.491L 448,32 z" data-tags="save" />
+<glyph unicode="&#xe033;" d="M 64,208L 208,64L 448,304L 384,368L 208,192L 128,272 z" />
+<glyph unicode="&#xe035;" d="M 256,224L 256,160L 272,160L 288,192L 320,192L 320,64L 296,64L 296,32L 408,32L 408,64L 384,64L 384,192L 416,192L 432,160L 448,160L 448,224 zM 416,320L 416,400 c0,8.8-7.2,16-16,16L 288,416 L 288,448 c0,17.6-14.4,32-32,32l-64,0 c-17.602,0-32-14.4-32-32l0-32 L 48,416 c-8.801,0-16-7.2-16-16l0-320
+ c0-8.8, 7.199-16, 16-16l 144,0 l0-96 l 320,0 L 512,320 L 416,320 z M 192,447.943c 0.017,0.019, 0.036,0.039, 0.057,0.057l 63.884,0
+ c 0.021-0.018, 0.041-0.038, 0.059-0.057L 256,416 l-64,0 L 192,447.943 z M 96,352L 96,384 l 256,0 l0-32 L 96,352 z M 480,0L 224,0 L 224,288 l 256,0 L 480,0 z" data-tags="pastetext" />
+<glyph unicode="&#x20;" horiz-adv-x="256" />
+</font></defs></svg> \ No newline at end of file
diff --git a/program/js/tinymce/skins/lightgray/fonts/tinymce.eot b/program/js/tinymce/skins/lightgray/fonts/tinymce.eot
new file mode 100644
index 000000000..c1085bfd2
--- /dev/null
+++ b/program/js/tinymce/skins/lightgray/fonts/tinymce.eot
Binary files differ
diff --git a/program/js/tinymce/skins/lightgray/fonts/tinymce.svg b/program/js/tinymce/skins/lightgray/fonts/tinymce.svg
new file mode 100644
index 000000000..feb9ba38d
--- /dev/null
+++ b/program/js/tinymce/skins/lightgray/fonts/tinymce.svg
@@ -0,0 +1,63 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>Generated by IcoMoon</metadata>
+<defs>
+<font id="tinymce" horiz-adv-x="512">
+<font-face units-per-em="512" ascent="480" descent="-32" />
+<missing-glyph horiz-adv-x="512" />
+<glyph unicode="&#x20;" d="" horiz-adv-x="256" />
+<glyph unicode="&#xe000;" d="M448 480h-448v-512h512v448l-64 64zM256 416h64v-128h-64v128zM448 32h-384v384h32v-160h288v160h37.489l26.511-26.509v-357.491z" />
+<glyph unicode="&#xe001;" d="M451.716 380.285l-71.432 71.431c-15.556 15.556-46.284 28.284-68.284 28.284h-240c-22 0-40-18-40-40v-432c0-22 18-40 40-40h368c22 0 40 18 40 40v304c0 22-12.728 52.729-28.284 68.285zM429.089 357.657c1.565-1.565 3.125-3.487 4.64-5.657h-81.729v81.728c2.17-1.515 4.092-3.075 5.657-4.64l71.432-71.431zM448 8c0-4.336-3.664-8-8-8h-368c-4.336 0-8 3.664-8 8v432c0 4.336 3.664 8 8 8h240c2.416 0 5.127-0.305 8-0.852v-127.148h127.148c0.547-2.873 0.852-5.583 0.852-8v-304z" />
+<glyph unicode="&#xe002;" d="M512 183.771v80.458l-79.572 7.957c-4.093 15.021-10.044 29.274-17.605 42.49l52.298 63.919-56.526 56.525-63.918-52.298c-13.217 7.562-27.471 13.513-42.491 17.604l-7.957 79.574h-80.458l-7.957-79.573c-15.021-4.093-29.274-10.043-42.49-17.604l-63.919 52.297-56.525-56.525 52.298-63.918c-7.562-13.216-13.513-27.47-17.605-42.49l-79.573-7.958v-80.458l79.573-7.957c4.093-15.021 10.043-29.274 17.605-42.491l-52.298-63.918 56.524-56.524 63.919 52.298c13.216-7.562 27.47-13.514 42.49-17.605l7.958-79.574h80.458l7.957 79.572c15.021 4.093 29.274 10.044 42.491 17.605l63.918-52.298 56.524 56.524-52.298 63.918c7.562 13.217 13.514 27.471 17.605 42.49l79.574 7.96zM352 192l-64-64h-64l-64 64v64l64 64h64l64-64v-64z" />
+<glyph unicode="&#xe003;" d="M0 448h512v-64h-512zM0 352h320v-64h-320zM0 160h320v-64h-320zM0 256h512v-64h-512zM0 64h512v-64h-512z" />
+<glyph unicode="&#xe004;" d="M0 448h512v-64h-512zM96 352h320v-64h-320zM96 160h320v-64h-320zM0 256h512v-64h-512zM0 64h512v-64h-512z" />
+<glyph unicode="&#xe005;" d="M0 448h512v-64h-512zM192 352h320v-64h-320zM192 160h320v-64h-320zM0 256h512v-64h-512zM0 64h512v-64h-512z" />
+<glyph unicode="&#xe006;" d="M0 448h512v-64h-512zM0 352h512v-64h-512zM0 256h512v-64h-512zM0 160h512v-64h-512zM0 64h512v-64h-512z" />
+<glyph unicode="&#xe007;" d="M445.387 125.423c-22.827 22.778-51.864 34.536-78.973 34.536h-14.556l-31.952 32.004 127.81 128.019c31.952 32.005 31.952 96.014 0 128.019l-191.715-192.028-191.716 192.027c-31.952-32.004-31.952-96.014 0-128.019l127.811-128.017-31.953-32.004h-14.557c-27.11 0-56.146-11.759-78.974-34.538-40.811-40.721-46.325-101.242-12.315-135.175 14.985-14.951 35.144-22.247 56.498-22.247 27.108 0 56.145 11.757 78.973 34.536 26.792 26.732 38.371 62 33.542 92.674l32.692 32.744 32.688-32.744c-4.828-30.674 6.753-65.941 33.542-92.674 22.831-22.779 51.866-34.536 78.974-34.536 21.354 0 41.512 7.296 56.497 22.248 34.010 33.933 28.494 94.454-12.316 135.175zM176.512 57.231c-3.849-8.941-9.505-17.173-16.813-24.463-7.318-7.302-15.586-12.959-24.574-16.812-8.066-3.458-16.48-5.284-24.331-5.284-7.573 0-18.306 1.701-26.431 9.806-8.068 8.052-9.76 18.659-9.76 26.144 0 7.771 1.821 16.105 5.263 24.106 3.85 8.942 9.507 17.173 16.813 24.463 7.317 7.303 15.586 12.957 24.575 16.812 8.067 3.457 16.48 5.284 24.332 5.284 7.573 0 18.306-1.7 26.429-9.807 8.067-8.049 9.761-18.658 9.761-26.142 0.001-7.771-1.819-16.108-5.264-24.107zM256.002 146.702c-24.957 0-45.188 20.266-45.188 45.263 0 24.996 20.231 45.26 45.188 45.26s45.186-20.264 45.186-45.26c0-24.999-20.23-45.263-45.186-45.263zM427.636 20.479c-8.124-8.104-18.856-9.806-26.43-9.806-7.852 0-16.265 1.826-24.333 5.284-8.986 3.853-17.254 9.51-24.571 16.812-7.307 7.29-12.963 15.521-16.813 24.463-3.443 7.999-5.263 16.336-5.263 24.106 0 7.483 1.692 18.094 9.76 26.143 8.123 8.104 18.856 9.807 26.43 9.807 7.85 0 16.265-1.827 24.33-5.284 8.989-3.854 17.258-9.509 24.575-16.812 7.305-7.29 12.962-15.521 16.813-24.463 3.442-7.999 5.263-16.335 5.263-24.106-0.001-7.485-1.695-18.093-9.761-26.144z" />
+<glyph unicode="&#xe008;" d="M416 320v80c0 8.8-7.2 16-16 16h-112v32c0 17.6-14.4 32-32 32h-64c-17.602 0-32-14.4-32-32v-32h-112c-8.801 0-16-7.2-16-16v-320c0-8.8 7.199-16 16-16h144v-96h224l96 96v256h-96zM192 447.943c0.017 0.019 0.036 0.039 0.057 0.057h63.884c0.021-0.018 0.041-0.038 0.059-0.057v-31.943h-64v31.943zM96 352v32h256v-32h-256zM416 13.255v50.745h50.745l-50.745-50.745zM480 96h-96v-96h-160v288h256v-192z" />
+<glyph unicode="&#xe009;" d="M32 480h192v-32h-192zM288 480h192v-32h-192zM476 320h-28v128h-128v-128h-128v128h-128v-128h-28c-19.8 0-36-16.2-36-36v-280c0-19.8 16.2-36 36-36h152c19.8 0 36 16.2 36 36v188h64v-188c0-19.8 16.2-36 36-36h152c19.8 0 36 16.2 36 36v280c0 19.8-16.2 36-36 36zM174 0h-124c-9.9 0-18 7.2-18 16s8.1 16 18 16h124c9.9 0 18-7.2 18-16s-8.1-16-18-16zM272 224h-32c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16zM462 0h-124c-9.9 0-18 7.2-18 16s8.1 16 18 16h124c9.9 0 18-7.2 18-16s-8.1-16-18-16z" />
+<glyph unicode="&#xe00a;" d="M192 448h320v-64h-320v64zM192 256h320v-64h-320v64zM192 64h320v-64h-320v64zM0 416c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64zM0 224c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64zM0 32c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64z" />
+<glyph unicode="&#xe00b;" d="M192 64h320v-64h-320zM192 256h320v-64h-320zM192 448h320v-64h-320zM96 480v-128h-32v96h-32v32zM64 217v-25h64v-32h-96v73l64 30v25h-64v32h96v-73zM128 128v-160h-96v32h64v32h-64v32h64v32h-64v32z" />
+<glyph unicode="&#xe00c;" d="M0 448h512v-64h-512zM192 352h320v-64h-320zM192 256h320v-64h-320zM192 160h320v-64h-320zM0 64h512v-64h-512zM0 128v192l128-96z" />
+<glyph unicode="&#xe00d;" d="M0 448h512v-64h-512zM192 352h320v-64h-320zM192 256h320v-64h-320zM192 160h320v-64h-320zM0 64h512v-64h-512zM128 320v-192l-128 96z" />
+<glyph unicode="&#xe00e;" d="M112.5 256c61.856 0 112-50.145 112-112 0-61.856-50.144-112-112-112-61.856 0-112 50.144-112 112l-0.5 16c0 123.712 100.288 224 224 224v-64c-42.737 0-82.917-16.643-113.137-46.863-5.817-5.818-11.126-12.008-15.915-18.51 5.719 0.9 11.58 1.373 17.552 1.373zM400.5 256c61.855 0 112-50.145 112-112 0-61.856-50.145-112-112-112-61.855 0-112 50.144-112 112l-0.5 16c0 123.712 100.288 224 224 224v-64c-42.737 0-82.917-16.643-113.137-46.863-5.818-5.818-11.127-12.008-15.916-18.51 5.72 0.9 11.58 1.373 17.553 1.373z" />
+<glyph unicode="&#xe00f;" d="M380.931-32c56.863 103.016 66.444 260.153-156.931 254.912v-126.912l-192 192 192 192v-124.186c267.481 6.971 297.285-236.107 156.931-387.814z" />
+<glyph unicode="&#xe010;" d="M288 355.814v124.186l192-192-192-192v126.912c-223.375 5.241-213.794-151.896-156.93-254.912-140.356 151.707-110.55 394.785 156.93 387.814z" />
+<glyph unicode="&#xe011;" d="M160 128c8.8-8.8 23.637-8.363 32.971 0.971l158.059 158.058c9.334 9.334 9.77 24.171 0.97 32.971s-23.637 8.363-32.971-0.971l-158.058-158.058c-9.334-9.334-9.771-24.171-0.971-32.971zM238.444 142.444c2.28-4.525 3.495-9.58 3.495-14.848 0-8.808-3.372-17.030-9.496-23.154l-81.691-81.691c-6.124-6.124-14.347-9.496-23.154-9.496s-17.030 3.372-23.154 9.496l-49.691 49.691c-6.124 6.124-9.496 14.347-9.496 23.154s3.372 17.030 9.496 23.154l81.691 81.691c6.124 6.124 14.347 9.497 23.154 9.497 5.268 0 10.322-1.215 14.848-3.495l32.669 32.669c-13.935 10.705-30.72 16.080-47.517 16.080-19.993 0-39.986-7.583-55.154-22.751l-81.691-81.691c-30.335-30.335-30.335-79.974 0-110.309l49.691-49.691c15.167-15.166 35.16-22.75 55.153-22.75 19.994 0 39.987 7.584 55.154 22.751l81.691 81.691c27.91 27.91 30.119 72.149 6.672 102.672l-32.67-32.67zM489.249 407.558l-49.691 49.691c-15.167 15.168-35.16 22.751-55.154 22.751-19.993 0-39.986-7.583-55.154-22.751l-81.691-81.691c-27.91-27.91-30.119-72.149-6.671-102.671l32.669 32.67c-2.279 4.525-3.494 9.58-3.494 14.847 0 8.808 3.372 17.030 9.496 23.154l81.691 81.691c6.124 6.124 14.347 9.497 23.154 9.497s17.030-3.373 23.154-9.497l49.691-49.691c6.124-6.124 9.496-14.347 9.496-23.154s-3.372-17.030-9.496-23.154l-81.691-81.691c-6.124-6.124-14.347-9.496-23.154-9.496-5.268 0-10.322 1.215-14.848 3.495l-32.669-32.669c13.936-10.705 30.72-16.080 47.517-16.080 19.994 0 39.987 7.584 55.154 22.751l81.691 81.691c30.335 30.333 30.335 79.972 0 110.307z" />
+<glyph unicode="&#xe012;" d="M238.444 142.443c2.28-4.524 3.495-9.579 3.495-14.848 0-8.808-3.372-17.029-9.496-23.154l-81.69-81.69c-6.124-6.124-14.348-9.496-23.154-9.496s-17.030 3.372-23.154 9.496l-49.69 49.69c-6.124 6.125-9.496 14.348-9.496 23.154s3.372 17.030 9.496 23.154l81.69 81.691c6.124 6.123 14.348 9.496 23.154 9.496 5.269 0 10.322-1.215 14.848-3.494l32.669 32.668c-13.935 10.705-30.72 16.080-47.517 16.080-19.993 0-39.986-7.583-55.154-22.751l-81.69-81.691c-30.335-30.335-30.335-79.975 0-110.309l49.69-49.691c15.167-15.166 35.16-22.75 55.153-22.75 19.994 0 39.987 7.584 55.154 22.751l81.69 81.69c27.91 27.91 30.119 72.149 6.672 102.673l-32.67-32.669zM489.248 407.558l-49.69 49.691c-15.167 15.168-35.16 22.751-55.154 22.751-19.993 0-39.985-7.583-55.153-22.751l-81.691-81.691c-27.91-27.91-30.119-72.149-6.671-102.671l32.669 32.67c-2.279 4.525-3.494 9.58-3.494 14.847 0 8.808 3.372 17.030 9.496 23.154l81.691 81.691c6.123 6.124 14.347 9.497 23.153 9.497 8.808 0 17.030-3.373 23.154-9.497l49.69-49.691c6.124-6.124 9.496-14.347 9.496-23.154s-3.372-17.030-9.496-23.154l-81.69-81.691c-6.124-6.124-14.347-9.496-23.154-9.496-5.268 0-10.322 1.215-14.848 3.495l-32.669-32.669c13.936-10.705 30.72-16.080 47.517-16.080 19.994 0 39.987 7.584 55.154 22.752l81.69 81.69c30.336 30.333 30.336 79.972 0 110.307zM116.684 340.688l-95.997 95.997 22.628 22.628 95.997-95.997zM192 480h32v-96h-32zM0 288h96v-32h-96zM395.316 107.312l95.998-95.998-22.628-22.628-95.998 95.998zM288 64h32v-96h-32zM416 192h96v-32h-96z" />
+<glyph unicode="&#xe013;" d="M96 480v-512l160 160 160-160v512h-320zM384 45.255l-128 128-128-128v402.745h256v-402.745z" />
+<glyph unicode="&#xe014;" d="M0 416v-416h512v416h-512zM480 32h-448v352h448v-352zM352 304c0 26.51 21.49 48 48 48s48-21.49 48-48c0-26.51-21.49-48-48-48-26.51 0-48 21.49-48 48zM448 64h-384l96 256 128-160 64 48z" />
+<glyph unicode="&#xe015;" d="M0 416v-384h512v384h-512zM96 64h-64v64h64v-64zM96 192h-64v64h64v-64zM96 320h-64v64h64v-64zM384 64h-256v320h256v-320zM480 64h-64v64h64v-64zM480 192h-64v64h64v-64zM480 320h-64v64h64v-64zM192 320v-192l128 96z" />
+<glyph unicode="&#xe016;" d="M224 128h64v-64h-64zM352 352c17.673 0 32-14.327 32-32v-96l-96-64h-64v32l96 64v32h-160v64h192zM256 432c-55.559 0-107.792-21.636-147.078-60.922s-60.922-91.519-60.922-147.078c0-55.559 21.636-107.792 60.922-147.078 39.286-39.286 91.519-60.922 147.078-60.922 55.559 0 107.792 21.636 147.078 60.922 39.286 39.286 60.922 91.519 60.922 147.078 0 55.559-21.636 107.792-60.922 147.078-39.286 39.286-91.519 60.922-147.078 60.922zM256 480v0c141.385 0 256-114.615 256-256s-114.615-256-256-256c-141.385 0-256 114.615-256 256 0 141.385 114.615 256 256 256z" />
+<glyph unicode="&#xe017;" d="M160 352l-128-128 128-128h64l-128 128 128 128zM352 352h-64l128-128-128-128h64l128 128z" />
+<glyph unicode="&#xe018;" d="M256 384c-106.038 0-192-85.961-192-192s85.961-192 192-192c106.037 0 192 85.961 192 192s-85.963 192-192 192zM357.822 90.177c-27.196-27.198-63.358-42.177-101.822-42.177s-74.625 14.979-101.823 42.177c-27.198 27.197-42.177 63.359-42.177 101.823s14.979 74.625 42.177 101.823c27.198 27.198 63.359 42.177 101.823 42.177s74.626-14.979 101.821-42.177c27.201-27.198 42.179-63.359 42.179-101.823s-14.979-74.626-42.178-101.823zM162.965 378.069l-21.47 42.939c-49.437-24.768-89.735-65.066-114.503-114.504l42.938-21.47c20.124 40.168 52.866 72.911 93.035 93.035zM442.067 285.035l42.939 21.469c-24.766 49.438-65.063 89.736-114.502 114.504l-21.472-42.939c40.169-20.124 72.912-52.866 93.035-93.034zM256 288h-32v-96c0-5.055 2.35-9.555 6.011-12.486l-0.006-0.008 80-64 19.988 24.988-73.993 59.195v88.311z" />
+<glyph unicode="&#xe019;" d="M256 320c-104.684 0-197.622-50.278-256-128 58.378-77.723 151.316-128 256-128 104.684 0 197.622 50.277 256 128-58.378 77.722-151.316 128-256 128zM224 256c17.673 0 32-14.327 32-32s-14.327-32-32-32-32 14.327-32 32 14.327 32 32 32zM386.808 127.352c-19.824-10.129-40.826-17.931-62.423-23.188-22.244-5.418-45.251-8.164-68.385-8.164-23.133 0-46.141 2.746-68.384 8.162-21.597 5.259-42.599 13.061-62.423 23.188-31.51 16.101-60.111 38.205-83.82 64.649 23.709 26.444 52.31 48.55 83.82 64.649 16.168 8.261 33.121 14.973 50.541 20.020-9.944-15.121-15.734-33.217-15.734-52.668 0-53.020 42.981-96 96-96 53.019 0 96 42.98 96 96 0 19.451-5.791 37.547-15.733 52.67 17.419-5.048 34.372-11.76 50.541-20.021 31.511-16.099 60.109-38.204 83.819-64.649-23.71-26.443-52.309-48.55-83.819-64.648zM430.459 358.139c-54.36 27.777-113.056 41.861-174.459 41.861-61.403 0-120.099-14.084-174.459-41.861-29.386-15.016-56.866-33.952-81.541-56.038v-54.603c27.669 29.283 60.347 53.877 96.097 72.145 49.81 25.452 103.609 38.357 159.903 38.357s110.093-12.905 159.902-38.358c35.751-18.268 68.429-42.862 96.098-72.145v54.603c-24.675 22.087-52.154 41.023-81.541 56.039z" />
+<glyph unicode="&#xe01a;" d="M161.009 64l28.8 96h132.382l28.8-96h56.816l-95.998 320h-111.618l-96-320h56.818zM237.809 320h36.382l28.8-96h-93.982l28.8 96z" />
+<glyph unicode="&#xe01b;" d="M0 448v-448h512v448h-512zM192 160v96h128v-96h-128zM320 128v-96h-128v96h128zM320 384v-96h-128v96h128zM160 384v-96h-128v96h128zM32 256h128v-96h-128v96zM352 256h128v-96h-128v96zM352 288v96h128v-96h-128zM32 128h128v-96h-128v96zM352 32v96h128v-96h-128z" />
+<glyph unicode="&#xe01c;" d="M0 256h512v-64h-512z" />
+<glyph unicode="&#xe01d;" d="M0 32h288v-64h-288zM96 480h352v-64h-352zM138.694 64l102.344 392.082 61.925-16.164-98.125-375.918zM464.887-32l-64.887 64.887-64.887-64.887-31.113 31.113 64.887 64.887-64.887 64.887 31.113 31.113 64.887-64.887 64.887 64.887 31.113-31.113-64.887-64.887 64.887-64.887z" />
+<glyph unicode="&#xe01e;" d="M384 25v-25h64v-32h-96v73l64 30v25h-64v32h96v-73zM338 352h-68l-94-94-94 94h-68l128-128-128-128h68l94 94 94-94h68l-128 128z" />
+<glyph unicode="&#xe01f;" d="M384 377v-25h64v-32h-96v73l64 30v25h-64v32h96v-73zM338 352h-68l-94-94-94 94h-68l128-128-128-128h68l94 94 94-94h68l-128 128z" />
+<glyph unicode="&#xe020;" d="M352 32h128l32 64v-128h-192v107.107c65.556 28.242 112 98.581 112 180.893 0 107.216-78.799 191.133-176 191.133-97.203 0-176-83.916-176-191.133 0-82.312 46.443-152.651 112-180.893v-107.107h-192v128l32-64h128v16.295c-93.815 33.23-160 113.701-160 207.705 0 123.712 114.615 224 256 224 141.385 0 256-100.288 256-224 0-94.004-66.185-174.475-160-207.705v-16.295z" />
+<glyph unicode="&#xe021;" d="M256 480c-141.385 0-256-114.614-256-256 0-141.385 114.614-256 256-256 141.385 0 256 114.615 256 256 0 141.386-114.615 256-256 256zM256 8c-119.293 0-216 96.706-216 216 0 119.293 96.707 216 216 216 119.295 0 216-96.707 216-216 0-119.294-96.705-216-216-216zM192 320c0-17.673-14.327-32-32-32s-32 14.327-32 32 14.327 32 32 32 32-14.327 32-32zM384 320c0-17.673-14.326-32-32-32s-32 14.327-32 32 14.326 32 32 32 32-14.327 32-32zM256 154c70.537 0 131.344 28.766 159.231 61.596-10.436-85.61-78.144-151.596-159.231-151.596-81.059 0-148.749 66.013-159.222 151.584 27.893-32.823 88.693-61.584 159.222-61.584z" />
+<glyph unicode="&#xe022;" d="M128 448h256v-64h-256zM480 352h-448c-17.6 0-32-14.4-32-32v-160c0-17.6 14.398-32 32-32h96v-128h256v128h96c17.6 0 32 14.4 32 32v160c0 17.6-14.4 32-32 32zM352 32h-192v160h192v-160zM487.2 304c0-12.813-10.387-23.2-23.199-23.2-12.813 0-23.201 10.387-23.201 23.2s10.388 23.2 23.201 23.2c12.813 0 23.199-10.387 23.199-23.2z" />
+<glyph unicode="&#xe023;" d="M512 480v-192l-69.13 69.13-106-106-53.74 53.74 106 106-69.13 69.13zM122.87 410.87l106-106-53.74-53.74-106 106-69.13-69.13v192h192zM442.87 90.87l69.13 69.13v-192h-192l69.13 69.13-106 106 53.74 53.74zM228.87 143.13l-106-106 69.13-69.13h-192v192l69.13-69.13 106 106z" />
+<glyph unicode="&#xe024;" d="M64 352h64v-96h32v192c0 17.6-14.4 32-32 32h-64c-17.6 0-32-14.4-32-32v-192h32v96zM64 448h64v-64h-64v64zM480 448v32h-96c-17.601 0-32-14.4-32-32v-160c0-17.6 14.399-32 32-32h96v32h-96v160h96zM320 400v48c0 17.6-14.4 32-32 32h-96v-224h96c17.6 0 32 14.4 32 32v48c0 17.6-4.4 32-22 32 17.6 0 22 14.4 22 32zM288 288h-64v64h64v-64zM288 384h-64v64h64v-64zM416 192l-208-224-112 144 41 35 71-74 176 151z" />
+<glyph unicode="&#xe025;" d="M224 192h-96v64h96v96h64v-96h96v-64h-96v-96h-64zM512 160v-192h-512v192h64v-128h384v128z" />
+<glyph unicode="&#xe026;" d="M192 384h64v-32h-64zM288 384h64v-32h-64zM448 384v-128h-96v32h64v64h-32v32zM160 288h64v-32h-64zM256 288h64v-32h-64zM96 352v-64h32v-32h-64v128h96v-32zM192 192h64v-32h-64zM288 192h64v-32h-64zM448 192v-128h-96v32h64v64h-32v32zM160 96h64v-32h-64zM256 96h64v-32h-64zM96 160v-64h32v-32h-64v128h96v-32zM480 448h-448v-448h448v448zM512 480v0-512h-512v512h512z" />
+<glyph unicode="&#xe027;" d="M0 224h64v-32h-64zM96 224h96v-32h-96zM224 224h64v-32h-64zM320 224h96v-32h-96zM448 224h64v-32h-64zM440 480l8-224h-384l8 224h16l8-192h320l8 192zM72-32l-8 192h384l-8-192h-16l-8 160h-320l-8-160z" />
+<glyph unicode="&#xe028;" d="M288 448c123.712 0 224-100.288 224-224s-100.288-224-224-224v48c47.012 0 91.209 18.307 124.451 51.549 33.242 33.242 51.549 77.439 51.549 124.451 0 47.011-18.307 91.209-51.549 124.451-33.242 33.242-77.439 51.549-124.451 51.549-47.011 0-91.209-18.307-124.451-51.549-25.57-25.569-42.291-57.623-48.653-92.451h93.104l-112-128-112 128h82.285c15.53 108.551 108.869 192 221.715 192zM384 256v-64h-128v160h64v-96z" />
+<glyph unicode="&#xe02a;" d="M353.94 237.674c18.749 22.271 30.060 51.004 30.060 82.326 0 70.58-57.421 128-128 128h-160v-448h192c70.579 0 128 57.421 128 128 0 46.478-24.899 87.248-62.060 109.674zM192 384h50.75c27.984 0 50.75-28.71 50.75-64s-22.766-64-50.75-64h-50.75v128zM271.5 64h-79.5v128h79.5c29.225 0 53-28.71 53-64s-23.775-64-53-64z" />
+<glyph unicode="&#xe02b;" d="M448 448v-32h-64l-160-384h64v-32h-224v32h64l160 384h-64v32z" />
+<glyph unicode="&#xe02c;" d="M352 448h64v-208c0-79.529-71.634-144-160-144-88.365 0-160 64.471-160 144v208h64v-208c0-20.083 9.119-39.352 25.677-54.253 18.448-16.602 43.423-25.747 70.323-25.747 26.9 0 51.875 9.145 70.323 25.747 16.558 14.901 25.677 34.17 25.677 54.253v208zM96 64h320v-64h-320z" />
+<glyph unicode="&#xe02d;" d="M365.71 221.482c31.96-23.969 50.29-58.043 50.29-93.482s-18.33-69.513-50.29-93.482c-29.679-22.259-68.642-34.518-109.71-34.518-41.069 0-80.031 12.259-109.71 34.518-31.96 23.969-50.29 58.043-50.29 93.482h64c0-34.691 43.963-64 96-64s96 29.309 96 64c0 34.691-43.963 64-96 64-41.069 0-80.031 12.259-109.71 34.518-31.96 23.97-50.29 58.043-50.29 93.482 0 35.439 18.33 69.512 50.29 93.482 29.679 22.259 68.641 34.518 109.71 34.518 41.068 0 80.031-12.259 109.71-34.518 31.96-23.97 50.29-58.043 50.29-93.482h-64c0 34.691-43.963 64-96 64-52.037 0-96-29.309-96-64 0-34.691 43.963-64 96-64 41.068 0 80.031-12.259 109.71-34.518zM0 224h512v-32h-512z" />
+<glyph unicode="&#xe02e;" d="M192 448h256v-64h-64v-384h-64v384h-64v-384h-64v224c-61.856 0-112 50.144-112 112s50.144 112 112 112z" />
+<glyph unicode="&#xe02f;" d="M224 448h256v-64h-64v-384h-64v384h-64v-384h-64v224c-61.856 0-112 50.144-112 112s50.144 112 112 112zM32 256l128-112-128-112z" />
+<glyph unicode="&#xe030;" d="M128 448h256v-64h-64v-384h-64v384h-64v-384h-64v224c-61.856 0-112 50.144-112 112s50.144 112 112 112zM480 32l-128 112 128 112z" />
+<glyph unicode="&#xe031;" d="M416 352h-96v32l-96 96h-224v-384h192v-128h320v288l-96 96zM416 306.745l50.745-50.745h-50.745v50.745zM224 434.745l50.745-50.745h-50.745v50.745zM32 448h160v-96h96v-224h-256v320zM480 0h-256v96h96v224h64v-96h96v-224z" />
+<glyph unicode="&#xe032;" d="M384 352h32v-32h-32zM320 288h32v-32h-32zM320 224h32v-32h-32zM320 160h32v-32h-32zM256 224h32v-32h-32zM256 160h32v-32h-32zM192 160h32v-32h-32zM384 288h32v-32h-32zM384 224h32v-32h-32zM384 160h32v-32h-32zM384 96h32v-32h-32zM320 96h32v-32h-32zM256 96h32v-32h-32zM192 96h32v-32h-32zM128 96h32v-32h-32z" />
+<glyph unicode="&#xe033;" d="M64 208l144-144 240 240-64 64-176-176-80 80z" />
+<glyph unicode="&#xe034;" d="M464 416h-208l-16 32h-176l-32-64h448zM452.17 128h37.43l22.4 224h-512l32-320h242.040c-52.441 18.888-90.040 69.133-90.040 128 0 74.991 61.009 136 136 136 74.99 0 136-61.009 136-136 0-10.839-1.311-21.575-3.83-32zM501.498 23.125l-99.248 87.346c8.727 14.46 13.75 31.407 13.75 49.529 0 53.020-42.98 96-96 96s-96-42.98-96-96 42.98-96 96-96c18.122 0 35.069 5.023 49.529 13.75l87.346-99.248c11.481-13.339 31.059-14.070 43.503-1.626l2.746 2.746c12.444 12.444 11.713 32.022-1.626 43.503zM320 98c-34.242 0-62 27.758-62 62s27.758 62 62 62 62-27.758 62-62-27.758-62-62-62z" />
+<glyph unicode="&#xe035;" d="M256 224v-64h16l16 32h32v-128h-24v-32h112v32h-24v128h32l16-32h16v64zM416 320v80c0 8.8-7.2 16-16 16h-112v32c0 17.6-14.4 32-32 32h-64c-17.602 0-32-14.4-32-32v-32h-112c-8.801 0-16-7.2-16-16v-320c0-8.8 7.199-16 16-16h144v-96h320v352h-96zM192 447.943c0.017 0.019 0.036 0.039 0.057 0.057h63.884c0.021-0.018 0.041-0.038 0.059-0.057v-31.943h-64v31.943zM96 352v32h256v-32h-256zM480 0h-256v288h256v-288z" />
+</font></defs></svg> \ No newline at end of file
diff --git a/program/js/tinymce/skins/lightgray/fonts/tinymce.ttf b/program/js/tinymce/skins/lightgray/fonts/tinymce.ttf
new file mode 100644
index 000000000..58103c2b6
--- /dev/null
+++ b/program/js/tinymce/skins/lightgray/fonts/tinymce.ttf
Binary files differ
diff --git a/program/js/tinymce/skins/lightgray/fonts/tinymce.woff b/program/js/tinymce/skins/lightgray/fonts/tinymce.woff
new file mode 100644
index 000000000..ad1ae396a
--- /dev/null
+++ b/program/js/tinymce/skins/lightgray/fonts/tinymce.woff
Binary files differ
diff --git a/program/js/tinymce/skins/lightgray/img/anchor.gif b/program/js/tinymce/skins/lightgray/img/anchor.gif
new file mode 100644
index 000000000..606348c7f
--- /dev/null
+++ b/program/js/tinymce/skins/lightgray/img/anchor.gif
Binary files differ
diff --git a/program/js/tinymce/skins/lightgray/img/loader.gif b/program/js/tinymce/skins/lightgray/img/loader.gif
new file mode 100644
index 000000000..c69e93723
--- /dev/null
+++ b/program/js/tinymce/skins/lightgray/img/loader.gif
Binary files differ
diff --git a/program/js/tinymce/skins/lightgray/img/object.gif b/program/js/tinymce/skins/lightgray/img/object.gif
new file mode 100644
index 000000000..cccd7f023
--- /dev/null
+++ b/program/js/tinymce/skins/lightgray/img/object.gif
Binary files differ
diff --git a/program/js/tiny_mce/themes/advanced/img/trans.gif b/program/js/tinymce/skins/lightgray/img/trans.gif
index 388486517..388486517 100644
--- a/program/js/tiny_mce/themes/advanced/img/trans.gif
+++ b/program/js/tinymce/skins/lightgray/img/trans.gif
Binary files differ
diff --git a/program/js/tinymce/skins/lightgray/skin.ie7.min.css b/program/js/tinymce/skins/lightgray/skin.ie7.min.css
new file mode 100644
index 000000000..f2ca5b927
--- /dev/null
+++ b/program/js/tinymce/skins/lightgray/skin.ie7.min.css
@@ -0,0 +1 @@
+.mce-container,.mce-container *,.mce-widget,.mce-widget *,.mce-reset{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:#333;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;-webkit-tap-highlight-color:transparent;line-height:normal;font-weight:normal;text-align:left;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;direction:ltr;max-width:none}.mce-widget button{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.mce-container *[unselectable]{-moz-user-select:none;-webkit-user-select:none;-o-user-select:none;user-select:none}.mce-fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.mce-fade.mce-in{opacity:1}.mce-tinymce{visibility:inherit !important;position:relative}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;height:100%;z-index:100}div.mce-fullscreen{position:fixed;top:0;left:0;width:100%;height:auto}.mce-tinymce{display:block;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.mce-wordcount{position:absolute;top:0;right:0;padding:8px}div.mce-edit-area{background:#FFF;filter:none}.mce-statusbar{position:relative}.mce-statusbar .mce-container-body{position:relative}.mce-fullscreen .mce-resizehandle{display:none}.mce-charmap{border-collapse:collapse}.mce-charmap td{cursor:default;border:1px solid #9e9e9e;width:20px;height:20px;line-height:20px;text-align:center;vertical-align:middle;padding:2px}.mce-charmap td div{text-align:center}.mce-charmap td:hover{background:#d9d9d9}.mce-grid td.mce-grid-cell div{border:1px solid #d6d6d6;width:15px;height:15px;margin:0px;cursor:pointer}.mce-grid td.mce-grid-cell div:focus{border-color:#a1a1a1}.mce-grid td.mce-grid-cell div[disabled]{cursor:not-allowed}.mce-grid{border-spacing:2px;border-collapse:separate}.mce-grid a{display:block;border:1px solid transparent}.mce-grid a:hover,.mce-grid a:focus{border-color:#a1a1a1}.mce-grid-border{margin:0 4px 0 4px}.mce-grid-border a{border-color:#d6d6d6;width:13px;height:13px}.mce-grid-border a:hover,.mce-grid-border a.mce-active{border-color:#a1a1a1;background:#c8def4}.mce-text-center{text-align:center}div.mce-tinymce-inline{width:100%;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-colorbtn-trans div{text-align:center;vertical-align:middle;font-weight:bold;font-size:20px;line-height:16px;color:#707070}.mce-toolbar-grp{padding-bottom:2px}.mce-toolbar-grp .mce-flow-layout-item{margin-bottom:0}.mce-rtl .mce-wordcount{left:0;right:auto}.mce-container,.mce-container-body{display:block}.mce-autoscroll{overflow:hidden}.mce-scrollbar{position:absolute;width:7px;height:100%;top:2px;right:2px;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-scrollbar-h{top:auto;right:auto;left:2px;bottom:2px;width:100%;height:7px}.mce-scrollbar-thumb{position:absolute;background-color:#000;border:1px solid #888;border-color:rgba(85,85,85,0.6);width:5px;height:100%;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.mce-scrollbar-h .mce-scrollbar-thumb{width:100%;height:5px}.mce-scrollbar:hover,.mce-scrollbar.mce-active{background-color:#AAA;opacity:.6;filter:alpha(opacity=60);zoom:1;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.mce-scroll{position:relative}.mce-panel{border:0 solid #9e9e9e;background-color:#f0f0f0;background-image:-moz-linear-gradient(top, #fdfdfd, #ddd);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fdfdfd), to(#ddd));background-image:-webkit-linear-gradient(top, #fdfdfd, #ddd);background-image:-o-linear-gradient(top, #fdfdfd, #ddd);background-image:linear-gradient(to bottom, #fdfdfd, #ddd);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffdfdfd', endColorstr='#ffdddddd', GradientType=0);zoom:1}.mce-floatpanel{position:absolute;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2)}.mce-floatpanel.mce-fixed{position:fixed}.mce-floatpanel .mce-arrow,.mce-floatpanel .mce-arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.mce-floatpanel .mce-arrow{border-width:11px}.mce-floatpanel .mce-arrow:after{border-width:10px;content:""}.mce-floatpanel.mce-popover{filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);top:0;left:0;background:#fff;border:1px solid #9e9e9e;border:1px solid rgba(0,0,0,0.25)}.mce-floatpanel.mce-popover.mce-bottom{margin-top:10px;*margin-top:0}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#9e9e9e;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow:after{top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.mce-floatpanel.mce-popover.mce-bottom.mce-start{margin-left:-22px}.mce-floatpanel.mce-popover.mce-bottom.mce-start>.mce-arrow{left:20px}.mce-floatpanel.mce-popover.mce-bottom.mce-end{margin-left:22px}.mce-floatpanel.mce-popover.mce-bottom.mce-end>.mce-arrow{right:10px;left:auto}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;background:#fff;height:100%}div.mce-fullscreen{position:fixed;top:0;left:0}#mce-modal-block{opacity:0;filter:alpha(opacity=0);zoom:1;position:fixed;left:0;top:0;width:100%;height:100%;background:#000}#mce-modal-block.mce-in{opacity:.3;filter:alpha(opacity=30);zoom:1}.mce-window-move{cursor:move}.mce-window{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;background:#fff;position:fixed;top:0;left:0;opacity:0;-webkit-transition:opacity 150ms ease-in;transition:opacity 150ms ease-in}.mce-window.mce-in{opacity:1}.mce-window-head{padding:9px 15px;border-bottom:1px solid #c5c5c5;position:relative}.mce-window-head .mce-close{position:absolute;right:15px;top:9px;font-size:20px;font-weight:bold;line-height:20px;color:#858585;cursor:pointer;height:20px;overflow:hidden}.mce-close:hover{color:#adadad}.mce-window-head .mce-title{line-height:20px;font-size:20px;font-weight:bold;text-rendering:optimizelegibility;padding-right:10px}.mce-window .mce-container-body{display:block}.mce-foot{display:block;background-color:#fff;border-top:1px solid #c5c5c5;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.mce-window-head .mce-dragh{position:absolute;top:0;left:0;cursor:move;width:90%;height:100%}.mce-window iframe{width:100%;height:100%}.mce-window.mce-fullscreen,.mce-window.mce-fullscreen .mce-foot{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.mce-rtl .mce-window-head .mce-close{position:absolute;right:auto;left:15px}.mce-rtl .mce-window-head .mce-dragh{left:auto;right:0}.mce-rtl .mce-window-head .mce-title{direction:rtl;text-align:right}.mce-abs-layout{position:relative}body .mce-abs-layout-item,.mce-abs-end{position:absolute}.mce-abs-end{width:1px;height:1px}.mce-container-body.mce-abs-layout{overflow:hidden}.mce-tooltip{position:absolute;padding:5px;opacity:.8;filter:alpha(opacity=80);zoom:1}.mce-tooltip-inner{font-size:11px;background-color:#000;color:#fff;max-width:200px;padding:5px 8px 4px 8px;text-align:center;white-space:normal}.mce-tooltip-inner{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.mce-tooltip-inner{-webkit-box-shadow:0 0 5px #000000;-moz-box-shadow:0 0 5px #000000;box-shadow:0 0 5px #000000}.mce-tooltip-arrow{position:absolute;width:0;height:0;line-height:0;border:5px dashed #000}.mce-tooltip-arrow-n{border-bottom-color:#000}.mce-tooltip-arrow-s{border-top-color:#000}.mce-tooltip-arrow-e{border-left-color:#000}.mce-tooltip-arrow-w{border-right-color:#000}.mce-tooltip-nw,.mce-tooltip-sw{margin-left:-14px}.mce-tooltip-n .mce-tooltip-arrow{top:0px;left:50%;margin-left:-5px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-nw .mce-tooltip-arrow{top:0;left:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-ne .mce-tooltip-arrow{top:0;right:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-s .mce-tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-sw .mce-tooltip-arrow{bottom:0;left:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-se .mce-tooltip-arrow{bottom:0;right:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-e .mce-tooltip-arrow{right:0;top:50%;margin-top:-5px;border-left-style:solid;border-right:none;border-top-color:transparent;border-bottom-color:transparent}.mce-tooltip-w .mce-tooltip-arrow{left:0;top:50%;margin-top:-5px;border-right-style:solid;border-left:none;border-top-color:transparent;border-bottom-color:transparent}.mce-btn{border:1px solid #b1b1b1;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25) rgba(0,0,0,0.25);position:relative;text-shadow:0 1px 1px rgba(255,255,255,0.75);display:inline-block;*display:inline;*zoom:1;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);background-color:#f0f0f0;background-image:-moz-linear-gradient(top, #fff, #d9d9d9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fff), to(#d9d9d9));background-image:-webkit-linear-gradient(top, #fff, #d9d9d9);background-image:-o-linear-gradient(top, #fff, #d9d9d9);background-image:linear-gradient(to bottom, #fff, #d9d9d9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffd9d9d9', GradientType=0);zoom:1}.mce-btn:hover,.mce-btn:focus{color:#333;background-color:#e3e3e3;background-image:-moz-linear-gradient(top, #f2f2f2, #ccc);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#ccc));background-image:-webkit-linear-gradient(top, #f2f2f2, #ccc);background-image:-o-linear-gradient(top, #f2f2f2, #ccc);background-image:linear-gradient(to bottom, #f2f2f2, #ccc);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffcccccc', GradientType=0);zoom:1}.mce-btn.mce-disabled button,.mce-btn.mce-disabled:hover button{cursor:default;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-btn.mce-active,.mce-btn.mce-active:hover{background-color:#d6d6d6;background-image:-moz-linear-gradient(top, #e6e6e6, #c0c0c0);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#e6e6e6), to(#c0c0c0));background-image:-webkit-linear-gradient(top, #e6e6e6, #c0c0c0);background-image:-o-linear-gradient(top, #e6e6e6, #c0c0c0);background-image:linear-gradient(to bottom, #e6e6e6, #c0c0c0);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe6e6e6', endColorstr='#ffc0c0c0', GradientType=0);zoom:1;-webkit-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05)}.mce-btn:active{background-color:#d6d6d6;background-image:-moz-linear-gradient(top, #e6e6e6, #c0c0c0);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#e6e6e6), to(#c0c0c0));background-image:-webkit-linear-gradient(top, #e6e6e6, #c0c0c0);background-image:-o-linear-gradient(top, #e6e6e6, #c0c0c0);background-image:linear-gradient(to bottom, #e6e6e6, #c0c0c0);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe6e6e6', endColorstr='#ffc0c0c0', GradientType=0);zoom:1;-webkit-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05)}.mce-btn button{padding:4px 10px;font-size:14px;line-height:20px;*line-height:16px;cursor:pointer;color:#333;text-align:center;overflow:visible;-webkit-appearance:none}.mce-btn button::-moz-focus-inner{border:0;padding:0}.mce-btn i{text-shadow:1px 1px #fff}.mce-primary{min-width:50px;color:#fff;border:1px solid #b1b1b1;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25) rgba(0,0,0,0.25);background-color:#006dcc;background-image:-moz-linear-gradient(top, #08c, #04c);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#08c), to(#04c));background-image:-webkit-linear-gradient(top, #08c, #04c);background-image:-o-linear-gradient(top, #08c, #04c);background-image:linear-gradient(to bottom, #08c, #04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);zoom:1}.mce-primary:hover,.mce-primary:focus{background-color:#005fb3;background-image:-moz-linear-gradient(top, #0077b3, #003cb3);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0077b3), to(#003cb3));background-image:-webkit-linear-gradient(top, #0077b3, #003cb3);background-image:-o-linear-gradient(top, #0077b3, #003cb3);background-image:linear-gradient(to bottom, #0077b3, #003cb3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0077b3', endColorstr='#ff003cb3', GradientType=0);zoom:1}.mce-primary.mce-disabled button,.mce-primary.mce-disabled:hover button{cursor:default;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-primary.mce-active,.mce-primary.mce-active:hover,.mce-primary:not(.mce-disabled):active{background-color:#005299;background-image:-moz-linear-gradient(top, #069, #039);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#069), to(#039));background-image:-webkit-linear-gradient(top, #069, #039);background-image:-o-linear-gradient(top, #069, #039);background-image:linear-gradient(to bottom, #069, #039);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff006699', endColorstr='#ff003399', GradientType=0);zoom:1;-webkit-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05)}.mce-primary button,.mce-primary button i{color:#fff;text-shadow:1px 1px #333}.mce-btn-large button{padding:9px 14px;font-size:16px;line-height:normal;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.mce-btn-large i{margin-top:2px}.mce-btn-small button{padding:1px 5px;font-size:12px;*padding-bottom:2px}.mce-btn-small i{line-height:20px;vertical-align:top;*line-height:18px}.mce-btn .mce-caret{margin-top:8px;margin-left:0}.mce-btn-small .mce-caret{margin-top:8px;margin-left:0}.mce-caret{display:inline-block;*display:inline;*zoom:1;width:0;height:0;vertical-align:top;border-top:4px solid #333;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.mce-disabled .mce-caret{border-top-color:#aaa}.mce-caret.mce-up{border-bottom:4px solid #333;border-top:0}.mce-btn-flat{border:0;background:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;filter:none}.mce-btn-flat:hover,.mce-btn-flat.mce-active,.mce-btn-flat:focus,.mce-btn-flat:active{border:0;background:#e6e6e6;filter:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-rtl .mce-btn button{direction:rtl}.mce-btn-group .mce-btn{border-width:1px 0 1px 0;margin:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.mce-btn-group .mce-first{border-left:1px solid #b1b1b1;border-left:1px solid rgba(0,0,0,0.25);-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.mce-btn-group .mce-last{border-right:1px solid #b1b1b1;border-right:1px solid rgba(0,0,0,0.1);-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.mce-btn-group .mce-first.mce-last{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.mce-btn-group .mce-btn.mce-flow-layout-item{margin:0}.mce-checkbox{cursor:pointer}i.mce-i-checkbox{margin:0 3px 0 0;border:1px solid #c5c5c5;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);background-color:#f0f0f0;background-image:-moz-linear-gradient(top, #fff, #d9d9d9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fff), to(#d9d9d9));background-image:-webkit-linear-gradient(top, #fff, #d9d9d9);background-image:-o-linear-gradient(top, #fff, #d9d9d9);background-image:linear-gradient(to bottom, #fff, #d9d9d9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffd9d9d9', GradientType=0);zoom:1;text-indent:-10em;*font-size:0;*line-height:0;*text-indent:0;overflow:hidden}.mce-checked i.mce-i-checkbox{color:#333;font-size:16px;line-height:16px;text-indent:0}.mce-checkbox:focus i.mce-i-checkbox,.mce-checkbox.mce-focus i.mce-i-checkbox{border:1px solid rgba(82,168,236,0.8);-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.65);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.65);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.65)}.mce-checkbox.mce-disabled .mce-label,.mce-checkbox.mce-disabled i.mce-i-checkbox{color:#acacac}.mce-rtl .mce-checkbox{direction:rtl;text-align:right}.mce-rtl i.mce-i-checkbox{margin:0 0 0 3px}.mce-combobox{display:inline-block;*display:inline;*zoom:1;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);*height:32px}.mce-combobox input{border:1px solid #c5c5c5;border-right-color:#c5c5c5;height:28px}.mce-combobox.mce-disabled input{color:#adadad}.mce-combobox.mce-has-open input{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.mce-combobox .mce-btn{border-left:0;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.mce-combobox button{padding-right:8px;padding-left:8px}.mce-combobox.mce-disabled .mce-btn button{cursor:default;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-colorbox i{border:1px solid #c5c5c5;width:14px;height:14px}.mce-colorbutton .mce-ico{position:relative}.mce-colorbutton-grid{margin:4px}.mce-colorbutton button{padding-right:4px}.mce-colorbutton .mce-preview{padding-right:3px;display:block;position:absolute;left:50%;top:50%;margin-left:-14px;margin-top:7px;background:gray;width:13px;height:2px;overflow:hidden}.mce-colorbutton.mce-btn-small .mce-preview{margin-left:-16px;padding-right:0;width:16px}.mce-colorbutton .mce-open{padding-left:4px;border-left:1px solid transparent;border-right:1px solid transparent}.mce-colorbutton:hover .mce-open{border-left-color:#bdbdbd;border-right-color:#bdbdbd}.mce-colorbutton.mce-btn-small .mce-open{padding:0 3px 0 3px}.mce-rtl .mce-colorbutton{direction:rtl}.mce-rtl .mce-colorbutton .mce-preview{margin-left:0;padding-right:0;padding-left:4px;margin-right:-14px}.mce-rtl .mce-colorbutton.mce-btn-small .mce-preview{margin-left:0;padding-right:0;margin-right:-17px;padding-left:0}.mce-rtl .mce-colorbutton button{padding-right:10px;padding-left:10px}.mce-rtl .mce-colorbutton .mce-open{padding-left:4px;padding-right:4px}.mce-colorpicker{position:relative;width:250px;height:220px}.mce-colorpicker-sv{position:absolute;top:0;left:0;width:90%;height:100%;border:1px solid #c5c5c5;cursor:crosshair;overflow:hidden}.mce-colorpicker-h-chunk{width:100%}.mce-colorpicker-overlay1,.mce-colorpicker-overlay2{width:100%;height:100%;position:absolute;top:0;left:0}.mce-colorpicker-overlay1{filter:progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#ffffff', endColorstr='#00ffffff');-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr='#ffffff', endColorstr='#00ffffff')";background:linear-gradient(to right, #fff, rgba(255,255,255,0))}.mce-colorpicker-overlay2{filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#00000000', endColorstr='#000000');-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#00000000', endColorstr='#000000')";background:linear-gradient(to bottom, rgba(0,0,0,0), #000)}.mce-colorpicker-selector1{background:none;position:absolute;width:12px;height:12px;margin:-8px 0 0 -8px;border:1px solid black;border-radius:50%}.mce-colorpicker-selector2{position:absolute;width:10px;height:10px;border:1px solid white;border-radius:50%}.mce-colorpicker-h{position:absolute;top:0;right:0;width:6.5%;height:100%;border:1px solid #c5c5c5;cursor:crosshair}.mce-colorpicker-h-marker{margin-top:-4px;position:absolute;top:0;left:-1px;width:100%;border:1px solid #333;background:#fff;height:4px;z-index:100}.mce-path{display:inline-block;*display:inline;*zoom:1;padding:8px;white-space:normal}.mce-path .mce-txt{display:inline-block;padding-right:3px}.mce-path .mce-path-body{display:inline-block}.mce-path-item{display:inline-block;*display:inline;*zoom:1;cursor:pointer;color:#333}.mce-path-item:hover{text-decoration:underline}.mce-path-item:focus{background:#666;color:#fff}.mce-path .mce-divider{display:inline}.mce-disabled .mce-path-item{color:#aaa}.mce-rtl .mce-path{direction:rtl}.mce-fieldset{border:0 solid #9E9E9E;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.mce-fieldset>.mce-container-body{margin-top:-15px}.mce-fieldset-title{margin-left:5px;padding:0 5px 0 5px}.mce-fit-layout{display:inline-block;*display:inline;*zoom:1}.mce-fit-layout-item{position:absolute}.mce-flow-layout-item{display:inline-block;*display:inline;*zoom:1}.mce-flow-layout-item{margin:2px 0 2px 2px}.mce-flow-layout-item.mce-last{margin-right:2px}.mce-flow-layout{white-space:normal}.mce-tinymce-inline .mce-flow-layout{white-space:nowrap}.mce-rtl .mce-flow-layout{text-align:right;direction:rtl}.mce-rtl .mce-flow-layout-item{margin:2px 2px 2px 0}.mce-rtl .mce-flow-layout-item.mce-last{margin-left:2px}.mce-iframe{border:0 solid #9e9e9e;width:100%;height:100%}.mce-label{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 1px rgba(255,255,255,0.75);overflow:hidden}.mce-label.mce-autoscroll{overflow:auto}.mce-label.mce-disabled{color:#aaa}.mce-label.mce-multiline{white-space:pre-wrap}.mce-label.mce-error{color:#a00}.mce-rtl .mce-label{text-align:right;direction:rtl}.mce-menubar .mce-menubtn{border-color:transparent;background:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;filter:none}.mce-menubar{border:1px solid #c4c4c4}.mce-menubar .mce-menubtn button span{color:#333}.mce-menubar .mce-caret{border-top-color:#333}.mce-menubar .mce-menubtn:hover,.mce-menubar .mce-menubtn.mce-active,.mce-menubar .mce-menubtn:focus{border-color:transparent;background:#e6e6e6;filter:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-menubtn span{color:#333;margin-right:2px;line-height:20px;*line-height:16px}.mce-menubtn.mce-btn-small span{font-size:12px}.mce-menubtn.mce-fixed-width span{display:inline-block;overflow-x:hidden;text-overflow:ellipsis;width:90px}.mce-menubtn.mce-fixed-width.mce-btn-small span{width:70px}.mce-menubtn .mce-caret{*margin-top:6px}.mce-rtl .mce-menubtn button{direction:rtl;text-align:right}.mce-listbox button{text-align:left;padding-right:20px;position:relative}.mce-listbox .mce-caret{position:absolute;margin-top:-2px;right:8px;top:50%}.mce-rtl .mce-listbox .mce-caret{right:auto;left:8px}.mce-rtl .mce-listbox button{padding-right:10px;padding-left:20px}.mce-menu-item{display:block;padding:6px 15px 6px 12px;clear:both;font-weight:normal;line-height:20px;color:#333;white-space:nowrap;cursor:pointer;line-height:normal;border-left:4px solid transparent;margin-bottom:1px}.mce-menu-item .mce-ico,.mce-menu-item .mce-text{color:#333}.mce-menu-item.mce-disabled .mce-text,.mce-menu-item.mce-disabled .mce-ico{color:#adadad}.mce-menu-item:hover .mce-text,.mce-menu-item.mce-selected .mce-text,.mce-menu-item:focus .mce-text{color:#fff}.mce-menu-item:hover .mce-ico,.mce-menu-item.mce-selected .mce-ico,.mce-menu-item:focus .mce-ico{color:#fff}.mce-menu-item.mce-disabled:hover{background:#ccc}.mce-menu-shortcut{display:inline-block;color:#adadad}.mce-menu-shortcut{display:inline-block;*display:inline;*zoom:1;padding:0 15px 0 20px}.mce-menu-item:hover .mce-menu-shortcut,.mce-menu-item.mce-selected .mce-menu-shortcut,.mce-menu-item:focus .mce-menu-shortcut{color:#fff}.mce-menu-item .mce-caret{margin-top:4px;*margin-top:3px;margin-right:6px;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:4px solid #333}.mce-menu-item.mce-selected .mce-caret,.mce-menu-item:focus .mce-caret,.mce-menu-item:hover .mce-caret{border-left-color:#fff}.mce-menu-align .mce-menu-shortcut{*margin-top:-2px}.mce-menu-align .mce-menu-shortcut,.mce-menu-align .mce-caret{position:absolute;right:0}.mce-menu-item.mce-active i{visibility:visible}.mce-menu-item-normal.mce-active{background-color:#c8def4}.mce-menu-item-preview.mce-active{border-left:5px solid #aaa}.mce-menu-item-normal.mce-active .mce-text{color:#333}.mce-menu-item-normal.mce-active:hover .mce-text,.mce-menu-item-normal.mce-active:hover .mce-ico{color:#fff}.mce-menu-item-normal.mce-active:focus .mce-text,.mce-menu-item-normal.mce-active:focus .mce-ico{color:#fff}.mce-menu-item:hover,.mce-menu-item.mce-selected,.mce-menu-item:focus{text-decoration:none;color:#fff;background-color:#0081c2;background-image:-moz-linear-gradient(top, #08c, #0077b3);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#08c), to(#0077b3));background-image:-webkit-linear-gradient(top, #08c, #0077b3);background-image:-o-linear-gradient(top, #08c, #0077b3);background-image:linear-gradient(to bottom, #08c, #0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);zoom:1}div.mce-menu .mce-menu-item-sep,.mce-menu-item-sep:hover{border:0;padding:0;height:1px;margin:9px 1px;overflow:hidden;background:#cbcbcb;border-bottom:1px solid #fff;cursor:default;filter:none}.mce-menu.mce-rtl{direction:rtl}.mce-rtl .mce-menu-item{text-align:right;direction:rtl;padding:6px 12px 6px 15px}.mce-menu-align.mce-rtl .mce-menu-shortcut,.mce-menu-align.mce-rtl .mce-caret{right:auto;left:0}.mce-rtl .mce-menu-item .mce-caret{margin-left:6px;margin-right:0;border-right:4px solid #333;border-left:0}.mce-rtl .mce-menu-item.mce-selected .mce-caret,.mce-rtl .mce-menu-item:focus .mce-caret,.mce-rtl .mce-menu-item:hover .mce-caret{border-left-color:transparent;border-right-color:#fff}.mce-menu{position:absolute;left:0;top:0;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;z-index:1000;padding:5px 0 5px 0;margin:2px 0 0;min-width:160px;background:#fff;border:1px solid #989898;border:1px solid rgba(0,0,0,0.2);z-index:1002;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);max-height:400px;overflow:auto;overflow-x:hidden}.mce-menu i{display:none}.mce-menu-has-icons i{display:inline-block;*display:inline}.mce-menu-sub-tr-tl{margin:-6px 0 0 -1px}.mce-menu-sub-br-bl{margin:6px 0 0 -1px}.mce-menu-sub-tl-tr{margin:-6px 0 0 1px}.mce-menu-sub-bl-br{margin:6px 0 0 1px}.mce-container-body .mce-resizehandle{position:absolute;right:0;bottom:0;width:16px;height:16px;visibility:visible;cursor:s-resize;margin:0}.mce-container-body .mce-resizehandle-both{cursor:se-resize}i.mce-i-resize{color:#333}.mce-spacer{visibility:hidden}.mce-splitbtn .mce-open{border-left:1px solid transparent;border-right:1px solid transparent}.mce-splitbtn:hover .mce-open{border-left-color:#bdbdbd;border-right-color:#bdbdbd}.mce-splitbtn button{padding-right:4px}.mce-splitbtn .mce-open{padding-left:4px}.mce-splitbtn .mce-open.mce-active{-webkit-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05)}.mce-splitbtn.mce-btn-small .mce-open{padding:0 3px 0 3px}.mce-rtl .mce-splitbtn{direction:rtl;text-align:right}.mce-rtl .mce-splitbtn button{padding-right:10px;padding-left:10px}.mce-rtl .mce-splitbtn .mce-open{padding-left:4px;padding-right:4px}.mce-stack-layout-item{display:block}.mce-tabs{display:block;border-bottom:1px solid #c5c5c5}.mce-tab{display:inline-block;*display:inline;*zoom:1;border:1px solid #c5c5c5;border-width:0 1px 0 0;background:#e3e3e3;padding:8px;text-shadow:0 1px 1px rgba(255,255,255,0.75);height:13px;cursor:pointer}.mce-tab:hover{background:#fdfdfd}.mce-tab.mce-active{background:#fdfdfd;border-bottom-color:transparent;margin-bottom:-1px;height:14px}.mce-rtl .mce-tabs{text-align:right;direction:rtl}.mce-rtl .mce-tab{border-width:0 0 0 1px}.mce-textbox{background:#fff;border:1px solid #c5c5c5;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);display:inline-block;-webkit-transition:border linear .2s, box-shadow linear .2s;transition:border linear .2s, box-shadow linear .2s;height:28px;resize:none;padding:0 4px 0 4px;white-space:pre-wrap;*white-space:pre;color:#333}.mce-textbox:focus,.mce-textbox.mce-focus{border-color:rgba(82,168,236,0.8);-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.65);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.65);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.65)}.mce-placeholder .mce-textbox{color:#aaa}.mce-textbox.mce-multiline{padding:4px}.mce-textbox.mce-disabled{color:#adadad}.mce-rtl .mce-textbox{text-align:right;direction:rtl}.mce-throbber{position:absolute;top:0;left:0;width:100%;height:100%;opacity:.6;filter:alpha(opacity=60);zoom:1;background:#fff url('img/loader.gif') no-repeat center center}.mce-throbber-inline{position:static;height:50px}@font-face{font-family:'tinymce';src:url('fonts/tinymce.eot');src:url('fonts/tinymce.eot?#iefix') format('embedded-opentype'),url('fonts/tinymce.woff') format('woff'),url('fonts/tinymce.ttf') format('truetype'),url('fonts/tinymce.svg#tinymce') format('svg');font-weight:normal;font-style:normal}@font-face{font-family:'tinymce-small';src:url('fonts/tinymce-small.eot');src:url('fonts/tinymce-small.eot?#iefix') format('embedded-opentype'),url('fonts/tinymce-small.woff') format('woff'),url('fonts/tinymce-small.ttf') format('truetype'),url('fonts/tinymce-small.svg#tinymce') format('svg');font-weight:normal;font-style:normal}.mce-ico{font-family:'tinymce';font-style:normal;font-weight:normal;font-size:16px;line-height:16px;vertical-align:text-top;-webkit-font-smoothing:antialiased;display:inline-block;background:transparent center center;width:16px;height:16px;color:#333;-ie7-icon:' '}.mce-btn-small .mce-ico{font-family:'tinymce-small'}.mce-ico,i.mce-i-checkbox{zoom:expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = this.currentStyle['-ie7-icon'].substr(1, 1) + '&nbsp;')}.mce-i-save{-ie7-icon:"\e000"}.mce-i-newdocument{-ie7-icon:"\e001"}.mce-i-fullpage{-ie7-icon:"\e002"}.mce-i-alignleft{-ie7-icon:"\e003"}.mce-i-aligncenter{-ie7-icon:"\e004"}.mce-i-alignright{-ie7-icon:"\e005"}.mce-i-alignjustify{-ie7-icon:"\e006"}.mce-i-cut{-ie7-icon:"\e007"}.mce-i-paste{-ie7-icon:"\e008"}.mce-i-searchreplace{-ie7-icon:"\e009"}.mce-i-bullist{-ie7-icon:"\e00a"}.mce-i-numlist{-ie7-icon:"\e00b"}.mce-i-indent{-ie7-icon:"\e00c"}.mce-i-outdent{-ie7-icon:"\e00d"}.mce-i-blockquote{-ie7-icon:"\e00e"}.mce-i-undo{-ie7-icon:"\e00f"}.mce-i-redo{-ie7-icon:"\e010"}.mce-i-link{-ie7-icon:"\e011"}.mce-i-unlink{-ie7-icon:"\e012"}.mce-i-anchor{-ie7-icon:"\e013"}.mce-i-image{-ie7-icon:"\e014"}.mce-i-media{-ie7-icon:"\e015"}.mce-i-help{-ie7-icon:"\e016"}.mce-i-code{-ie7-icon:"\e017"}.mce-i-insertdatetime{-ie7-icon:"\e018"}.mce-i-preview{-ie7-icon:"\e019"}.mce-i-forecolor{-ie7-icon:"\e01a"}.mce-i-backcolor{-ie7-icon:"\e01a"}.mce-i-table{-ie7-icon:"\e01b"}.mce-i-hr{-ie7-icon:"\e01c"}.mce-i-removeformat{-ie7-icon:"\e01d"}.mce-i-subscript{-ie7-icon:"\e01e"}.mce-i-superscript{-ie7-icon:"\e01f"}.mce-i-charmap{-ie7-icon:"\e020"}.mce-i-emoticons{-ie7-icon:"\e021"}.mce-i-print{-ie7-icon:"\e022"}.mce-i-fullscreen{-ie7-icon:"\e023"}.mce-i-spellchecker{-ie7-icon:"\e024"}.mce-i-nonbreaking{-ie7-icon:"\e025"}.mce-i-template{-ie7-icon:"\e026"}.mce-i-pagebreak{-ie7-icon:"\e027"}.mce-i-restoredraft{-ie7-icon:"\e028"}.mce-i-untitled{-ie7-icon:"\e029"}.mce-i-bold{-ie7-icon:"\e02a"}.mce-i-italic{-ie7-icon:"\e02b"}.mce-i-underline{-ie7-icon:"\e02c"}.mce-i-strikethrough{-ie7-icon:"\e02d"}.mce-i-visualchars{-ie7-icon:"\e02e"}.mce-i-ltr{-ie7-icon:"\e02f"}.mce-i-rtl{-ie7-icon:"\e030"}.mce-i-copy{-ie7-icon:"\e031"}.mce-i-resize{-ie7-icon:"\e032"}.mce-i-browse{-ie7-icon:"\e034"}.mce-i-pastetext{-ie7-icon:"\e035"}.mce-i-checkbox,.mce-i-selected{-ie7-icon:"\e033"}.mce-i-selected{visibility:hidden}.mce-i-backcolor{background:#BBB} \ No newline at end of file
diff --git a/program/js/tinymce/skins/lightgray/skin.min.css b/program/js/tinymce/skins/lightgray/skin.min.css
new file mode 100644
index 000000000..872959bce
--- /dev/null
+++ b/program/js/tinymce/skins/lightgray/skin.min.css
@@ -0,0 +1 @@
+.mce-container,.mce-container *,.mce-widget,.mce-widget *,.mce-reset{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:#333;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;-webkit-tap-highlight-color:transparent;line-height:normal;font-weight:normal;text-align:left;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;direction:ltr;max-width:none}.mce-widget button{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.mce-container *[unselectable]{-moz-user-select:none;-webkit-user-select:none;-o-user-select:none;user-select:none}.mce-fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.mce-fade.mce-in{opacity:1}.mce-tinymce{visibility:inherit !important;position:relative}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;height:100%;z-index:100}div.mce-fullscreen{position:fixed;top:0;left:0;width:100%;height:auto}.mce-tinymce{display:block;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}.mce-wordcount{position:absolute;top:0;right:0;padding:8px}div.mce-edit-area{background:#FFF;filter:none}.mce-statusbar{position:relative}.mce-statusbar .mce-container-body{position:relative}.mce-fullscreen .mce-resizehandle{display:none}.mce-charmap{border-collapse:collapse}.mce-charmap td{cursor:default;border:1px solid #9e9e9e;width:20px;height:20px;line-height:20px;text-align:center;vertical-align:middle;padding:2px}.mce-charmap td div{text-align:center}.mce-charmap td:hover{background:#d9d9d9}.mce-grid td.mce-grid-cell div{border:1px solid #d6d6d6;width:15px;height:15px;margin:0px;cursor:pointer}.mce-grid td.mce-grid-cell div:focus{border-color:#a1a1a1}.mce-grid td.mce-grid-cell div[disabled]{cursor:not-allowed}.mce-grid{border-spacing:2px;border-collapse:separate}.mce-grid a{display:block;border:1px solid transparent}.mce-grid a:hover,.mce-grid a:focus{border-color:#a1a1a1}.mce-grid-border{margin:0 4px 0 4px}.mce-grid-border a{border-color:#d6d6d6;width:13px;height:13px}.mce-grid-border a:hover,.mce-grid-border a.mce-active{border-color:#a1a1a1;background:#c8def4}.mce-text-center{text-align:center}div.mce-tinymce-inline{width:100%;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-colorbtn-trans div{text-align:center;vertical-align:middle;font-weight:bold;font-size:20px;line-height:16px;color:#707070}.mce-toolbar-grp{padding-bottom:2px}.mce-toolbar-grp .mce-flow-layout-item{margin-bottom:0}.mce-rtl .mce-wordcount{left:0;right:auto}.mce-container,.mce-container-body{display:block}.mce-autoscroll{overflow:hidden}.mce-scrollbar{position:absolute;width:7px;height:100%;top:2px;right:2px;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-scrollbar-h{top:auto;right:auto;left:2px;bottom:2px;width:100%;height:7px}.mce-scrollbar-thumb{position:absolute;background-color:#000;border:1px solid #888;border-color:rgba(85,85,85,0.6);width:5px;height:100%;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.mce-scrollbar-h .mce-scrollbar-thumb{width:100%;height:5px}.mce-scrollbar:hover,.mce-scrollbar.mce-active{background-color:#AAA;opacity:.6;filter:alpha(opacity=60);zoom:1;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.mce-scroll{position:relative}.mce-panel{border:0 solid #9e9e9e;background-color:#f0f0f0;background-image:-moz-linear-gradient(top, #fdfdfd, #ddd);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fdfdfd), to(#ddd));background-image:-webkit-linear-gradient(top, #fdfdfd, #ddd);background-image:-o-linear-gradient(top, #fdfdfd, #ddd);background-image:linear-gradient(to bottom, #fdfdfd, #ddd);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffdfdfd', endColorstr='#ffdddddd', GradientType=0);zoom:1}.mce-floatpanel{position:absolute;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2)}.mce-floatpanel.mce-fixed{position:fixed}.mce-floatpanel .mce-arrow,.mce-floatpanel .mce-arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.mce-floatpanel .mce-arrow{border-width:11px}.mce-floatpanel .mce-arrow:after{border-width:10px;content:""}.mce-floatpanel.mce-popover{filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);top:0;left:0;background:#fff;border:1px solid #9e9e9e;border:1px solid rgba(0,0,0,0.25)}.mce-floatpanel.mce-popover.mce-bottom{margin-top:10px;*margin-top:0}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#9e9e9e;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow:after{top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.mce-floatpanel.mce-popover.mce-bottom.mce-start{margin-left:-22px}.mce-floatpanel.mce-popover.mce-bottom.mce-start>.mce-arrow{left:20px}.mce-floatpanel.mce-popover.mce-bottom.mce-end{margin-left:22px}.mce-floatpanel.mce-popover.mce-bottom.mce-end>.mce-arrow{right:10px;left:auto}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;background:#fff;height:100%}div.mce-fullscreen{position:fixed;top:0;left:0}#mce-modal-block{opacity:0;filter:alpha(opacity=0);zoom:1;position:fixed;left:0;top:0;width:100%;height:100%;background:#000}#mce-modal-block.mce-in{opacity:.3;filter:alpha(opacity=30);zoom:1}.mce-window-move{cursor:move}.mce-window{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;background:#fff;position:fixed;top:0;left:0;opacity:0;-webkit-transition:opacity 150ms ease-in;transition:opacity 150ms ease-in}.mce-window.mce-in{opacity:1}.mce-window-head{padding:9px 15px;border-bottom:1px solid #c5c5c5;position:relative}.mce-window-head .mce-close{position:absolute;right:15px;top:9px;font-size:20px;font-weight:bold;line-height:20px;color:#858585;cursor:pointer;height:20px;overflow:hidden}.mce-close:hover{color:#adadad}.mce-window-head .mce-title{line-height:20px;font-size:20px;font-weight:bold;text-rendering:optimizelegibility;padding-right:10px}.mce-window .mce-container-body{display:block}.mce-foot{display:block;background-color:#fff;border-top:1px solid #c5c5c5;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.mce-window-head .mce-dragh{position:absolute;top:0;left:0;cursor:move;width:90%;height:100%}.mce-window iframe{width:100%;height:100%}.mce-window.mce-fullscreen,.mce-window.mce-fullscreen .mce-foot{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.mce-rtl .mce-window-head .mce-close{position:absolute;right:auto;left:15px}.mce-rtl .mce-window-head .mce-dragh{left:auto;right:0}.mce-rtl .mce-window-head .mce-title{direction:rtl;text-align:right}.mce-abs-layout{position:relative}body .mce-abs-layout-item,.mce-abs-end{position:absolute}.mce-abs-end{width:1px;height:1px}.mce-container-body.mce-abs-layout{overflow:hidden}.mce-tooltip{position:absolute;padding:5px;opacity:.8;filter:alpha(opacity=80);zoom:1}.mce-tooltip-inner{font-size:11px;background-color:#000;color:#fff;max-width:200px;padding:5px 8px 4px 8px;text-align:center;white-space:normal}.mce-tooltip-inner{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.mce-tooltip-inner{-webkit-box-shadow:0 0 5px #000000;-moz-box-shadow:0 0 5px #000000;box-shadow:0 0 5px #000000}.mce-tooltip-arrow{position:absolute;width:0;height:0;line-height:0;border:5px dashed #000}.mce-tooltip-arrow-n{border-bottom-color:#000}.mce-tooltip-arrow-s{border-top-color:#000}.mce-tooltip-arrow-e{border-left-color:#000}.mce-tooltip-arrow-w{border-right-color:#000}.mce-tooltip-nw,.mce-tooltip-sw{margin-left:-14px}.mce-tooltip-n .mce-tooltip-arrow{top:0px;left:50%;margin-left:-5px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-nw .mce-tooltip-arrow{top:0;left:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-ne .mce-tooltip-arrow{top:0;right:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-s .mce-tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-sw .mce-tooltip-arrow{bottom:0;left:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-se .mce-tooltip-arrow{bottom:0;right:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-e .mce-tooltip-arrow{right:0;top:50%;margin-top:-5px;border-left-style:solid;border-right:none;border-top-color:transparent;border-bottom-color:transparent}.mce-tooltip-w .mce-tooltip-arrow{left:0;top:50%;margin-top:-5px;border-right-style:solid;border-left:none;border-top-color:transparent;border-bottom-color:transparent}.mce-btn{border:1px solid #b1b1b1;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25) rgba(0,0,0,0.25);position:relative;text-shadow:0 1px 1px rgba(255,255,255,0.75);display:inline-block;*display:inline;*zoom:1;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);background-color:#f0f0f0;background-image:-moz-linear-gradient(top, #fff, #d9d9d9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fff), to(#d9d9d9));background-image:-webkit-linear-gradient(top, #fff, #d9d9d9);background-image:-o-linear-gradient(top, #fff, #d9d9d9);background-image:linear-gradient(to bottom, #fff, #d9d9d9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffd9d9d9', GradientType=0);zoom:1}.mce-btn:hover,.mce-btn:focus{color:#333;background-color:#e3e3e3;background-image:-moz-linear-gradient(top, #f2f2f2, #ccc);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#ccc));background-image:-webkit-linear-gradient(top, #f2f2f2, #ccc);background-image:-o-linear-gradient(top, #f2f2f2, #ccc);background-image:linear-gradient(to bottom, #f2f2f2, #ccc);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffcccccc', GradientType=0);zoom:1}.mce-btn.mce-disabled button,.mce-btn.mce-disabled:hover button{cursor:default;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-btn.mce-active,.mce-btn.mce-active:hover{background-color:#d6d6d6;background-image:-moz-linear-gradient(top, #e6e6e6, #c0c0c0);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#e6e6e6), to(#c0c0c0));background-image:-webkit-linear-gradient(top, #e6e6e6, #c0c0c0);background-image:-o-linear-gradient(top, #e6e6e6, #c0c0c0);background-image:linear-gradient(to bottom, #e6e6e6, #c0c0c0);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe6e6e6', endColorstr='#ffc0c0c0', GradientType=0);zoom:1;-webkit-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05)}.mce-btn:active{background-color:#d6d6d6;background-image:-moz-linear-gradient(top, #e6e6e6, #c0c0c0);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#e6e6e6), to(#c0c0c0));background-image:-webkit-linear-gradient(top, #e6e6e6, #c0c0c0);background-image:-o-linear-gradient(top, #e6e6e6, #c0c0c0);background-image:linear-gradient(to bottom, #e6e6e6, #c0c0c0);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe6e6e6', endColorstr='#ffc0c0c0', GradientType=0);zoom:1;-webkit-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05)}.mce-btn button{padding:4px 10px;font-size:14px;line-height:20px;*line-height:16px;cursor:pointer;color:#333;text-align:center;overflow:visible;-webkit-appearance:none}.mce-btn button::-moz-focus-inner{border:0;padding:0}.mce-btn i{text-shadow:1px 1px #fff}.mce-primary{min-width:50px;color:#fff;border:1px solid #b1b1b1;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25) rgba(0,0,0,0.25);background-color:#006dcc;background-image:-moz-linear-gradient(top, #08c, #04c);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#08c), to(#04c));background-image:-webkit-linear-gradient(top, #08c, #04c);background-image:-o-linear-gradient(top, #08c, #04c);background-image:linear-gradient(to bottom, #08c, #04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);zoom:1}.mce-primary:hover,.mce-primary:focus{background-color:#005fb3;background-image:-moz-linear-gradient(top, #0077b3, #003cb3);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0077b3), to(#003cb3));background-image:-webkit-linear-gradient(top, #0077b3, #003cb3);background-image:-o-linear-gradient(top, #0077b3, #003cb3);background-image:linear-gradient(to bottom, #0077b3, #003cb3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0077b3', endColorstr='#ff003cb3', GradientType=0);zoom:1}.mce-primary.mce-disabled button,.mce-primary.mce-disabled:hover button{cursor:default;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-primary.mce-active,.mce-primary.mce-active:hover,.mce-primary:not(.mce-disabled):active{background-color:#005299;background-image:-moz-linear-gradient(top, #069, #039);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#069), to(#039));background-image:-webkit-linear-gradient(top, #069, #039);background-image:-o-linear-gradient(top, #069, #039);background-image:linear-gradient(to bottom, #069, #039);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff006699', endColorstr='#ff003399', GradientType=0);zoom:1;-webkit-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05)}.mce-primary button,.mce-primary button i{color:#fff;text-shadow:1px 1px #333}.mce-btn-large button{padding:9px 14px;font-size:16px;line-height:normal;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.mce-btn-large i{margin-top:2px}.mce-btn-small button{padding:1px 5px;font-size:12px;*padding-bottom:2px}.mce-btn-small i{line-height:20px;vertical-align:top;*line-height:18px}.mce-btn .mce-caret{margin-top:8px;margin-left:0}.mce-btn-small .mce-caret{margin-top:8px;margin-left:0}.mce-caret{display:inline-block;*display:inline;*zoom:1;width:0;height:0;vertical-align:top;border-top:4px solid #333;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.mce-disabled .mce-caret{border-top-color:#aaa}.mce-caret.mce-up{border-bottom:4px solid #333;border-top:0}.mce-btn-flat{border:0;background:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;filter:none}.mce-btn-flat:hover,.mce-btn-flat.mce-active,.mce-btn-flat:focus,.mce-btn-flat:active{border:0;background:#e6e6e6;filter:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-rtl .mce-btn button{direction:rtl}.mce-btn-group .mce-btn{border-width:1px 0 1px 0;margin:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.mce-btn-group .mce-first{border-left:1px solid #b1b1b1;border-left:1px solid rgba(0,0,0,0.25);-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.mce-btn-group .mce-last{border-right:1px solid #b1b1b1;border-right:1px solid rgba(0,0,0,0.1);-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.mce-btn-group .mce-first.mce-last{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.mce-btn-group .mce-btn.mce-flow-layout-item{margin:0}.mce-checkbox{cursor:pointer}i.mce-i-checkbox{margin:0 3px 0 0;border:1px solid #c5c5c5;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);background-color:#f0f0f0;background-image:-moz-linear-gradient(top, #fff, #d9d9d9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fff), to(#d9d9d9));background-image:-webkit-linear-gradient(top, #fff, #d9d9d9);background-image:-o-linear-gradient(top, #fff, #d9d9d9);background-image:linear-gradient(to bottom, #fff, #d9d9d9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffd9d9d9', GradientType=0);zoom:1;text-indent:-10em;*font-size:0;*line-height:0;*text-indent:0;overflow:hidden}.mce-checked i.mce-i-checkbox{color:#333;font-size:16px;line-height:16px;text-indent:0}.mce-checkbox:focus i.mce-i-checkbox,.mce-checkbox.mce-focus i.mce-i-checkbox{border:1px solid rgba(82,168,236,0.8);-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.65);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.65);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.65)}.mce-checkbox.mce-disabled .mce-label,.mce-checkbox.mce-disabled i.mce-i-checkbox{color:#acacac}.mce-rtl .mce-checkbox{direction:rtl;text-align:right}.mce-rtl i.mce-i-checkbox{margin:0 0 0 3px}.mce-combobox{display:inline-block;*display:inline;*zoom:1;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);*height:32px}.mce-combobox input{border:1px solid #c5c5c5;border-right-color:#c5c5c5;height:28px}.mce-combobox.mce-disabled input{color:#adadad}.mce-combobox.mce-has-open input{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.mce-combobox .mce-btn{border-left:0;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.mce-combobox button{padding-right:8px;padding-left:8px}.mce-combobox.mce-disabled .mce-btn button{cursor:default;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-colorbox i{border:1px solid #c5c5c5;width:14px;height:14px}.mce-colorbutton .mce-ico{position:relative}.mce-colorbutton-grid{margin:4px}.mce-colorbutton button{padding-right:4px}.mce-colorbutton .mce-preview{padding-right:3px;display:block;position:absolute;left:50%;top:50%;margin-left:-14px;margin-top:7px;background:gray;width:13px;height:2px;overflow:hidden}.mce-colorbutton.mce-btn-small .mce-preview{margin-left:-16px;padding-right:0;width:16px}.mce-colorbutton .mce-open{padding-left:4px;border-left:1px solid transparent;border-right:1px solid transparent}.mce-colorbutton:hover .mce-open{border-left-color:#bdbdbd;border-right-color:#bdbdbd}.mce-colorbutton.mce-btn-small .mce-open{padding:0 3px 0 3px}.mce-rtl .mce-colorbutton{direction:rtl}.mce-rtl .mce-colorbutton .mce-preview{margin-left:0;padding-right:0;padding-left:4px;margin-right:-14px}.mce-rtl .mce-colorbutton.mce-btn-small .mce-preview{margin-left:0;padding-right:0;margin-right:-17px;padding-left:0}.mce-rtl .mce-colorbutton button{padding-right:10px;padding-left:10px}.mce-rtl .mce-colorbutton .mce-open{padding-left:4px;padding-right:4px}.mce-colorpicker{position:relative;width:250px;height:220px}.mce-colorpicker-sv{position:absolute;top:0;left:0;width:90%;height:100%;border:1px solid #c5c5c5;cursor:crosshair;overflow:hidden}.mce-colorpicker-h-chunk{width:100%}.mce-colorpicker-overlay1,.mce-colorpicker-overlay2{width:100%;height:100%;position:absolute;top:0;left:0}.mce-colorpicker-overlay1{filter:progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#ffffff', endColorstr='#00ffffff');-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr='#ffffff', endColorstr='#00ffffff')";background:linear-gradient(to right, #fff, rgba(255,255,255,0))}.mce-colorpicker-overlay2{filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#00000000', endColorstr='#000000');-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#00000000', endColorstr='#000000')";background:linear-gradient(to bottom, rgba(0,0,0,0), #000)}.mce-colorpicker-selector1{background:none;position:absolute;width:12px;height:12px;margin:-8px 0 0 -8px;border:1px solid black;border-radius:50%}.mce-colorpicker-selector2{position:absolute;width:10px;height:10px;border:1px solid white;border-radius:50%}.mce-colorpicker-h{position:absolute;top:0;right:0;width:6.5%;height:100%;border:1px solid #c5c5c5;cursor:crosshair}.mce-colorpicker-h-marker{margin-top:-4px;position:absolute;top:0;left:-1px;width:100%;border:1px solid #333;background:#fff;height:4px;z-index:100}.mce-path{display:inline-block;*display:inline;*zoom:1;padding:8px;white-space:normal}.mce-path .mce-txt{display:inline-block;padding-right:3px}.mce-path .mce-path-body{display:inline-block}.mce-path-item{display:inline-block;*display:inline;*zoom:1;cursor:pointer;color:#333}.mce-path-item:hover{text-decoration:underline}.mce-path-item:focus{background:#666;color:#fff}.mce-path .mce-divider{display:inline}.mce-disabled .mce-path-item{color:#aaa}.mce-rtl .mce-path{direction:rtl}.mce-fieldset{border:0 solid #9E9E9E;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.mce-fieldset>.mce-container-body{margin-top:-15px}.mce-fieldset-title{margin-left:5px;padding:0 5px 0 5px}.mce-fit-layout{display:inline-block;*display:inline;*zoom:1}.mce-fit-layout-item{position:absolute}.mce-flow-layout-item{display:inline-block;*display:inline;*zoom:1}.mce-flow-layout-item{margin:2px 0 2px 2px}.mce-flow-layout-item.mce-last{margin-right:2px}.mce-flow-layout{white-space:normal}.mce-tinymce-inline .mce-flow-layout{white-space:nowrap}.mce-rtl .mce-flow-layout{text-align:right;direction:rtl}.mce-rtl .mce-flow-layout-item{margin:2px 2px 2px 0}.mce-rtl .mce-flow-layout-item.mce-last{margin-left:2px}.mce-iframe{border:0 solid #9e9e9e;width:100%;height:100%}.mce-label{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 1px rgba(255,255,255,0.75);overflow:hidden}.mce-label.mce-autoscroll{overflow:auto}.mce-label.mce-disabled{color:#aaa}.mce-label.mce-multiline{white-space:pre-wrap}.mce-label.mce-error{color:#a00}.mce-rtl .mce-label{text-align:right;direction:rtl}.mce-menubar .mce-menubtn{border-color:transparent;background:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;filter:none}.mce-menubar{border:1px solid #c4c4c4}.mce-menubar .mce-menubtn button span{color:#333}.mce-menubar .mce-caret{border-top-color:#333}.mce-menubar .mce-menubtn:hover,.mce-menubar .mce-menubtn.mce-active,.mce-menubar .mce-menubtn:focus{border-color:transparent;background:#e6e6e6;filter:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-menubtn span{color:#333;margin-right:2px;line-height:20px;*line-height:16px}.mce-menubtn.mce-btn-small span{font-size:12px}.mce-menubtn.mce-fixed-width span{display:inline-block;overflow-x:hidden;text-overflow:ellipsis;width:90px}.mce-menubtn.mce-fixed-width.mce-btn-small span{width:70px}.mce-menubtn .mce-caret{*margin-top:6px}.mce-rtl .mce-menubtn button{direction:rtl;text-align:right}.mce-listbox button{text-align:left;padding-right:20px;position:relative}.mce-listbox .mce-caret{position:absolute;margin-top:-2px;right:8px;top:50%}.mce-rtl .mce-listbox .mce-caret{right:auto;left:8px}.mce-rtl .mce-listbox button{padding-right:10px;padding-left:20px}.mce-menu-item{display:block;padding:6px 15px 6px 12px;clear:both;font-weight:normal;line-height:20px;color:#333;white-space:nowrap;cursor:pointer;line-height:normal;border-left:4px solid transparent;margin-bottom:1px}.mce-menu-item .mce-ico,.mce-menu-item .mce-text{color:#333}.mce-menu-item.mce-disabled .mce-text,.mce-menu-item.mce-disabled .mce-ico{color:#adadad}.mce-menu-item:hover .mce-text,.mce-menu-item.mce-selected .mce-text,.mce-menu-item:focus .mce-text{color:#fff}.mce-menu-item:hover .mce-ico,.mce-menu-item.mce-selected .mce-ico,.mce-menu-item:focus .mce-ico{color:#fff}.mce-menu-item.mce-disabled:hover{background:#ccc}.mce-menu-shortcut{display:inline-block;color:#adadad}.mce-menu-shortcut{display:inline-block;*display:inline;*zoom:1;padding:0 15px 0 20px}.mce-menu-item:hover .mce-menu-shortcut,.mce-menu-item.mce-selected .mce-menu-shortcut,.mce-menu-item:focus .mce-menu-shortcut{color:#fff}.mce-menu-item .mce-caret{margin-top:4px;*margin-top:3px;margin-right:6px;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:4px solid #333}.mce-menu-item.mce-selected .mce-caret,.mce-menu-item:focus .mce-caret,.mce-menu-item:hover .mce-caret{border-left-color:#fff}.mce-menu-align .mce-menu-shortcut{*margin-top:-2px}.mce-menu-align .mce-menu-shortcut,.mce-menu-align .mce-caret{position:absolute;right:0}.mce-menu-item.mce-active i{visibility:visible}.mce-menu-item-normal.mce-active{background-color:#c8def4}.mce-menu-item-preview.mce-active{border-left:5px solid #aaa}.mce-menu-item-normal.mce-active .mce-text{color:#333}.mce-menu-item-normal.mce-active:hover .mce-text,.mce-menu-item-normal.mce-active:hover .mce-ico{color:#fff}.mce-menu-item-normal.mce-active:focus .mce-text,.mce-menu-item-normal.mce-active:focus .mce-ico{color:#fff}.mce-menu-item:hover,.mce-menu-item.mce-selected,.mce-menu-item:focus{text-decoration:none;color:#fff;background-color:#0081c2;background-image:-moz-linear-gradient(top, #08c, #0077b3);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#08c), to(#0077b3));background-image:-webkit-linear-gradient(top, #08c, #0077b3);background-image:-o-linear-gradient(top, #08c, #0077b3);background-image:linear-gradient(to bottom, #08c, #0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);zoom:1}div.mce-menu .mce-menu-item-sep,.mce-menu-item-sep:hover{border:0;padding:0;height:1px;margin:9px 1px;overflow:hidden;background:#cbcbcb;border-bottom:1px solid #fff;cursor:default;filter:none}.mce-menu.mce-rtl{direction:rtl}.mce-rtl .mce-menu-item{text-align:right;direction:rtl;padding:6px 12px 6px 15px}.mce-menu-align.mce-rtl .mce-menu-shortcut,.mce-menu-align.mce-rtl .mce-caret{right:auto;left:0}.mce-rtl .mce-menu-item .mce-caret{margin-left:6px;margin-right:0;border-right:4px solid #333;border-left:0}.mce-rtl .mce-menu-item.mce-selected .mce-caret,.mce-rtl .mce-menu-item:focus .mce-caret,.mce-rtl .mce-menu-item:hover .mce-caret{border-left-color:transparent;border-right-color:#fff}.mce-menu{position:absolute;left:0;top:0;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;z-index:1000;padding:5px 0 5px 0;margin:2px 0 0;min-width:160px;background:#fff;border:1px solid #989898;border:1px solid rgba(0,0,0,0.2);z-index:1002;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);max-height:400px;overflow:auto;overflow-x:hidden}.mce-menu i{display:none}.mce-menu-has-icons i{display:inline-block;*display:inline}.mce-menu-sub-tr-tl{margin:-6px 0 0 -1px}.mce-menu-sub-br-bl{margin:6px 0 0 -1px}.mce-menu-sub-tl-tr{margin:-6px 0 0 1px}.mce-menu-sub-bl-br{margin:6px 0 0 1px}.mce-container-body .mce-resizehandle{position:absolute;right:0;bottom:0;width:16px;height:16px;visibility:visible;cursor:s-resize;margin:0}.mce-container-body .mce-resizehandle-both{cursor:se-resize}i.mce-i-resize{color:#333}.mce-spacer{visibility:hidden}.mce-splitbtn .mce-open{border-left:1px solid transparent;border-right:1px solid transparent}.mce-splitbtn:hover .mce-open{border-left-color:#bdbdbd;border-right-color:#bdbdbd}.mce-splitbtn button{padding-right:4px}.mce-splitbtn .mce-open{padding-left:4px}.mce-splitbtn .mce-open.mce-active{-webkit-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05)}.mce-splitbtn.mce-btn-small .mce-open{padding:0 3px 0 3px}.mce-rtl .mce-splitbtn{direction:rtl;text-align:right}.mce-rtl .mce-splitbtn button{padding-right:10px;padding-left:10px}.mce-rtl .mce-splitbtn .mce-open{padding-left:4px;padding-right:4px}.mce-stack-layout-item{display:block}.mce-tabs{display:block;border-bottom:1px solid #c5c5c5}.mce-tab{display:inline-block;*display:inline;*zoom:1;border:1px solid #c5c5c5;border-width:0 1px 0 0;background:#e3e3e3;padding:8px;text-shadow:0 1px 1px rgba(255,255,255,0.75);height:13px;cursor:pointer}.mce-tab:hover{background:#fdfdfd}.mce-tab.mce-active{background:#fdfdfd;border-bottom-color:transparent;margin-bottom:-1px;height:14px}.mce-rtl .mce-tabs{text-align:right;direction:rtl}.mce-rtl .mce-tab{border-width:0 0 0 1px}.mce-textbox{background:#fff;border:1px solid #c5c5c5;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);display:inline-block;-webkit-transition:border linear .2s, box-shadow linear .2s;transition:border linear .2s, box-shadow linear .2s;height:28px;resize:none;padding:0 4px 0 4px;white-space:pre-wrap;*white-space:pre;color:#333}.mce-textbox:focus,.mce-textbox.mce-focus{border-color:rgba(82,168,236,0.8);-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.65);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.65);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.65)}.mce-placeholder .mce-textbox{color:#aaa}.mce-textbox.mce-multiline{padding:4px}.mce-textbox.mce-disabled{color:#adadad}.mce-rtl .mce-textbox{text-align:right;direction:rtl}.mce-throbber{position:absolute;top:0;left:0;width:100%;height:100%;opacity:.6;filter:alpha(opacity=60);zoom:1;background:#fff url('img/loader.gif') no-repeat center center}.mce-throbber-inline{position:static;height:50px}@font-face{font-family:'tinymce';src:url('fonts/tinymce.eot');src:url('fonts/tinymce.eot?#iefix') format('embedded-opentype'),url('fonts/tinymce.woff') format('woff'),url('fonts/tinymce.ttf') format('truetype'),url('fonts/tinymce.svg#tinymce') format('svg');font-weight:normal;font-style:normal}@font-face{font-family:'tinymce-small';src:url('fonts/tinymce-small.eot');src:url('fonts/tinymce-small.eot?#iefix') format('embedded-opentype'),url('fonts/tinymce-small.woff') format('woff'),url('fonts/tinymce-small.ttf') format('truetype'),url('fonts/tinymce-small.svg#tinymce') format('svg');font-weight:normal;font-style:normal}.mce-ico{font-family:'tinymce',Arial;font-style:normal;font-weight:normal;font-variant:normal;font-size:16px;line-height:16px;speak:none;vertical-align:text-top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;background:transparent center center;background-size:cover;width:16px;height:16px;color:#333}.mce-btn-small .mce-ico{font-family:'tinymce-small',Arial}.mce-i-save:before{content:"\e000"}.mce-i-newdocument:before{content:"\e001"}.mce-i-fullpage:before{content:"\e002"}.mce-i-alignleft:before{content:"\e003"}.mce-i-aligncenter:before{content:"\e004"}.mce-i-alignright:before{content:"\e005"}.mce-i-alignjustify:before{content:"\e006"}.mce-i-cut:before{content:"\e007"}.mce-i-paste:before{content:"\e008"}.mce-i-searchreplace:before{content:"\e009"}.mce-i-bullist:before{content:"\e00a"}.mce-i-numlist:before{content:"\e00b"}.mce-i-indent:before{content:"\e00c"}.mce-i-outdent:before{content:"\e00d"}.mce-i-blockquote:before{content:"\e00e"}.mce-i-undo:before{content:"\e00f"}.mce-i-redo:before{content:"\e010"}.mce-i-link:before{content:"\e011"}.mce-i-unlink:before{content:"\e012"}.mce-i-anchor:before{content:"\e013"}.mce-i-image:before{content:"\e014"}.mce-i-media:before{content:"\e015"}.mce-i-help:before{content:"\e016"}.mce-i-code:before{content:"\e017"}.mce-i-insertdatetime:before{content:"\e018"}.mce-i-preview:before{content:"\e019"}.mce-i-forecolor:before{content:"\e01a"}.mce-i-backcolor:before{content:"\e01a"}.mce-i-table:before{content:"\e01b"}.mce-i-hr:before{content:"\e01c"}.mce-i-removeformat:before{content:"\e01d"}.mce-i-subscript:before{content:"\e01e"}.mce-i-superscript:before{content:"\e01f"}.mce-i-charmap:before{content:"\e020"}.mce-i-emoticons:before{content:"\e021"}.mce-i-print:before{content:"\e022"}.mce-i-fullscreen:before{content:"\e023"}.mce-i-spellchecker:before{content:"\e024"}.mce-i-nonbreaking:before{content:"\e025"}.mce-i-template:before{content:"\e026"}.mce-i-pagebreak:before{content:"\e027"}.mce-i-restoredraft:before{content:"\e028"}.mce-i-untitled:before{content:"\e029"}.mce-i-bold:before{content:"\e02a"}.mce-i-italic:before{content:"\e02b"}.mce-i-underline:before{content:"\e02c"}.mce-i-strikethrough:before{content:"\e02d"}.mce-i-visualchars:before{content:"\e02e"}.mce-i-visualblocks:before{content:"\e02e"}.mce-i-ltr:before{content:"\e02f"}.mce-i-rtl:before{content:"\e030"}.mce-i-copy:before{content:"\e031"}.mce-i-resize:before{content:"\e032"}.mce-i-browse:before{content:"\e034"}.mce-i-pastetext:before{content:"\e035"}.mce-i-checkbox:before,.mce-i-selected:before{content:"\e033"}.mce-i-selected{visibility:hidden}i.mce-i-backcolor{text-shadow:none;background:#bbb} \ No newline at end of file
diff --git a/program/js/tinymce/themes/modern/theme.min.js b/program/js/tinymce/themes/modern/theme.min.js
new file mode 100644
index 000000000..ea84b66b6
--- /dev/null
+++ b/program/js/tinymce/themes/modern/theme.min.js
@@ -0,0 +1 @@
+tinymce.ThemeManager.add("modern",function(e){function t(){function t(t){var n,o=[];if(t)return d(t.split(/[ ,]/),function(t){function i(){var i=e.selection;"bullist"==r&&i.selectorChanged("ul > li",function(e,i){for(var n,o=i.parents.length;o--&&(n=i.parents[o].nodeName,"OL"!=n&&"UL"!=n););t.active(e&&"UL"==n)}),"numlist"==r&&i.selectorChanged("ol > li",function(e,i){for(var n,o=i.parents.length;o--&&(n=i.parents[o].nodeName,"OL"!=n&&"UL"!=n););t.active(e&&"OL"==n)}),t.settings.stateSelector&&i.selectorChanged(t.settings.stateSelector,function(e){t.active(e)},!0),t.settings.disabledStateSelector&&i.selectorChanged(t.settings.disabledStateSelector,function(e){t.disabled(e)})}var r;"|"==t?n=null:c.has(t)?(t={type:t},u.toolbar_items_size&&(t.size=u.toolbar_items_size),o.push(t),n=null):(n||(n={type:"buttongroup",items:[]},o.push(n)),e.buttons[t]&&(r=t,t=e.buttons[r],"function"==typeof t&&(t=t()),t.type=t.type||"button",u.toolbar_items_size&&(t.size=u.toolbar_items_size),t=c.create(t),n.items.push(t),e.initialized?i():e.on("init",i)))}),i.push({type:"toolbar",layout:"flow",items:o}),!0}var i=[];if(tinymce.isArray(u.toolbar)){if(0===u.toolbar.length)return;tinymce.each(u.toolbar,function(e,t){u["toolbar"+(t+1)]=e}),delete u.toolbar}for(var n=1;10>n&&t(u["toolbar"+n]);n++);return i.length||u.toolbar===!1||t(u.toolbar||f),i.length?{type:"panel",layout:"stack",classes:"toolbar-grp",ariaRoot:!0,ariaRemember:!0,items:i}:void 0}function i(){function t(t){var i;return"|"==t?{text:"|"}:i=e.menuItems[t]}function i(i){var n,o,r,a,s;if(s=tinymce.makeMap((u.removed_menuitems||"").split(/[ ,]/)),u.menu?(o=u.menu[i],a=!0):o=h[i],o){n={text:o.title},r=[],d((o.items||"").split(/[ ,]/),function(e){var i=t(e);i&&!s[e]&&r.push(t(e))}),a||d(e.menuItems,function(e){e.context==i&&("before"==e.separator&&r.push({text:"|"}),e.prependToContext?r.unshift(e):r.push(e),"after"==e.separator&&r.push({text:"|"}))});for(var l=0;l<r.length;l++)"|"==r[l].text&&(0===l||l==r.length-1)&&r.splice(l,1);if(n.menu=r,!n.menu.length)return null}return n}var n,o=[],r=[];if(u.menu)for(n in u.menu)r.push(n);else for(n in h)r.push(n);for(var a="string"==typeof u.menubar?u.menubar.split(/[ ,]/):r,s=0;s<a.length;s++){var l=a[s];l=i(l),l&&o.push(l)}return o}function n(t){function i(e){var i=t.find(e)[0];i&&i.focus(!0)}e.shortcuts.add("Alt+F9","",function(){i("menubar")}),e.shortcuts.add("Alt+F10","",function(){i("toolbar")}),e.shortcuts.add("Alt+F11","",function(){i("elementpath")}),t.on("cancel",function(){e.focus()})}function o(t,i){function n(e){return{width:e.clientWidth,height:e.clientHeight}}var o,r,a,s;o=e.getContainer(),r=e.getContentAreaContainer().firstChild,a=n(o),s=n(r),null!==t&&(t=Math.max(u.min_width||100,t),t=Math.min(u.max_width||65535,t),m.setStyle(o,"width",t+(a.width-s.width)),m.setStyle(r,"width",t)),i=Math.max(u.min_height||100,i),i=Math.min(u.max_height||65535,i),m.setStyle(r,"height",i),e.fire("ResizeEditor")}function r(t,i){var n=e.getContentAreaContainer();l.resizeTo(n.clientWidth+t,n.clientHeight+i)}function a(o){function r(){if(h&&h.moveRel&&h.visible()&&!h._fixed){var t=e.selection.getScrollContainer(),i=e.getBody(),n=0,o=0;if(t){var r=m.getPos(i),a=m.getPos(t);n=Math.max(0,a.x-r.x),o=Math.max(0,a.y-r.y)}h.fixed(!1).moveRel(i,e.rtl?["tr-br","br-tr"]:["tl-bl","bl-tl","tr-br"]).moveBy(n,o)}}function a(){h&&(h.show(),r(),m.addClass(e.getBody(),"mce-edit-focus"))}function s(){h&&(h.hide(),m.removeClass(e.getBody(),"mce-edit-focus"))}function d(){return h?void(h.visible()||a()):(h=l.panel=c.create({type:f?"panel":"floatpanel",role:"application",classes:"tinymce tinymce-inline",layout:"flex",direction:"column",align:"stretch",autohide:!1,autofix:!0,fixed:!!f,border:1,items:[u.menubar===!1?null:{type:"menubar",border:"0 0 1 0",items:i()},t()]}),e.fire("BeforeRenderUI"),h.renderTo(f||document.body).reflow(),n(h),a(),e.on("nodeChange",r),e.on("activate",a),e.on("deactivate",s),void e.nodeChanged())}var h,f;return u.fixed_toolbar_container&&(f=m.select(u.fixed_toolbar_container)[0]),u.content_editable=!0,e.on("focus",function(){o.skinUiCss?tinymce.DOM.styleSheetLoader.load(o.skinUiCss,d,d):d()}),e.on("blur hide",s),e.on("remove",function(){h&&(h.remove(),h=null)}),o.skinUiCss&&tinymce.DOM.styleSheetLoader.load(o.skinUiCss),{}}function s(r){var a,s,d;return r.skinUiCss&&tinymce.DOM.loadCSS(r.skinUiCss),a=l.panel=c.create({type:"panel",role:"application",classes:"tinymce",style:"visibility: hidden",layout:"stack",border:1,items:[u.menubar===!1?null:{type:"menubar",border:"0 0 1 0",items:i()},t(),{type:"panel",name:"iframe",layout:"stack",classes:"edit-area",html:"",border:"1 0 0 0"}]}),u.resize!==!1&&(s={type:"resizehandle",direction:u.resize,onResizeStart:function(){var t=e.getContentAreaContainer().firstChild;d={width:t.clientWidth,height:t.clientHeight}},onResize:function(e){"both"==u.resize?o(d.width+e.deltaX,d.height+e.deltaY):o(null,d.height+e.deltaY)}}),u.statusbar!==!1&&a.add({type:"panel",name:"statusbar",classes:"statusbar",layout:"flow",border:"1 0 0 0",ariaRoot:!0,items:[{type:"elementpath"},s]}),u.readonly&&a.find("*").disabled(!0),e.fire("BeforeRenderUI"),a.renderBefore(r.targetNode).reflow(),u.width&&tinymce.DOM.setStyle(a.getEl(),"width",u.width),e.on("remove",function(){a.remove(),a=null}),n(a),{iframeContainer:a.find("#iframe")[0].getEl(),editorContainer:a.getEl()}}var l=this,u=e.settings,c=tinymce.ui.Factory,d=tinymce.each,m=tinymce.DOM,h={file:{title:"File",items:"newdocument"},edit:{title:"Edit",items:"undo redo | cut copy paste pastetext | selectall"},insert:{title:"Insert",items:"|"},view:{title:"View",items:"visualaid |"},format:{title:"Format",items:"bold italic underline strikethrough superscript subscript | formats | removeformat"},table:{title:"Table"},tools:{title:"Tools"}},f="undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image";l.renderUI=function(t){var i=u.skin!==!1?u.skin||"lightgray":!1;if(i){var n=u.skin_url;n=n?e.documentBaseURI.toAbsolute(n):tinymce.baseURL+"/skins/"+i,t.skinUiCss=tinymce.Env.documentMode<=7?n+"/skin.ie7.min.css":n+"/skin.min.css",e.contentCSS.push(n+"/content"+(e.inline?".inline":"")+".min.css")}return e.on("ProgressState",function(e){l.throbber=l.throbber||new tinymce.ui.Throbber(l.panel.getEl("body")),e.state?l.throbber.show(e.time):l.throbber.hide()}),u.inline?a(t):s(t)},l.resizeTo=o,l.resizeBy=r}); \ No newline at end of file
diff --git a/program/js/tinymce/tinymce.min.js b/program/js/tinymce/tinymce.min.js
new file mode 100644
index 000000000..9d52fe043
--- /dev/null
+++ b/program/js/tinymce/tinymce.min.js
@@ -0,0 +1,11 @@
+// 4.1.3 (2014-07-29)
+!function(e,t){"use strict";function n(e,t){for(var n,r=[],i=0;i<e.length;++i){if(n=s[e[i]]||o(e[i]),!n)throw"module definition dependecy not found: "+e[i];r.push(n)}t.apply(null,r)}function r(e,r,i){if("string"!=typeof e)throw"invalid module definition, module id must be defined and be a string";if(r===t)throw"invalid module definition, dependencies must be specified";if(i===t)throw"invalid module definition, definition function must be specified";n(r,function(){s[e]=i.apply(null,arguments)})}function i(e){return!!s[e]}function o(t){for(var n=e,r=t.split(/[.\/]/),i=0;i<r.length;++i){if(!n[r[i]])return;n=n[r[i]]}return n}function a(n){for(var r=0;r<n.length;r++){for(var i=e,o=n[r],a=o.split(/[.\/]/),l=0;l<a.length-1;++l)i[a[l]]===t&&(i[a[l]]={}),i=i[a[l]];i[a[a.length-1]]=s[o]}}var s={},l="tinymce/dom/EventUtils",c="tinymce/dom/Sizzle",u="tinymce/util/Tools",d="tinymce/Env",f="tinymce/dom/DomQuery",p="tinymce/html/Styles",h="tinymce/dom/TreeWalker",m="tinymce/dom/Range",g="tinymce/html/Entities",v="tinymce/dom/StyleSheetLoader",y="tinymce/dom/DOMUtils",b="tinymce/dom/ScriptLoader",C="tinymce/AddOnManager",x="tinymce/dom/RangeUtils",w="tinymce/NodeChange",_="tinymce/html/Node",E="tinymce/html/Schema",N="tinymce/html/SaxParser",k="tinymce/html/DomParser",S="tinymce/html/Writer",T="tinymce/html/Serializer",R="tinymce/dom/Serializer",A="tinymce/dom/TridentSelection",B="tinymce/util/VK",D="tinymce/dom/ControlSelection",L="tinymce/dom/BookmarkManager",H="tinymce/dom/Selection",M="tinymce/dom/ElementUtils",P="tinymce/fmt/Preview",O="tinymce/Formatter",I="tinymce/UndoManager",F="tinymce/EnterKey",z="tinymce/ForceBlocks",W="tinymce/EditorCommands",V="tinymce/util/URI",U="tinymce/util/Class",$="tinymce/util/EventDispatcher",q="tinymce/ui/Selector",j="tinymce/ui/Collection",Y="tinymce/ui/DomUtils",K="tinymce/ui/Control",G="tinymce/ui/Factory",X="tinymce/ui/KeyboardNavigation",J="tinymce/ui/Container",Q="tinymce/ui/DragHelper",Z="tinymce/ui/Scrollable",et="tinymce/ui/Panel",tt="tinymce/ui/Movable",nt="tinymce/ui/Resizable",rt="tinymce/ui/FloatPanel",it="tinymce/ui/Window",ot="tinymce/ui/MessageBox",at="tinymce/WindowManager",st="tinymce/util/Quirks",lt="tinymce/util/Observable",ct="tinymce/EditorObservable",ut="tinymce/Shortcuts",dt="tinymce/Editor",ft="tinymce/util/I18n",pt="tinymce/FocusManager",ht="tinymce/EditorManager",mt="tinymce/LegacyInput",gt="tinymce/util/XHR",vt="tinymce/util/JSON",yt="tinymce/util/JSONRequest",bt="tinymce/util/JSONP",Ct="tinymce/util/LocalStorage",xt="tinymce/Compat",wt="tinymce/ui/Layout",_t="tinymce/ui/AbsoluteLayout",Et="tinymce/ui/Tooltip",Nt="tinymce/ui/Widget",kt="tinymce/ui/Button",St="tinymce/ui/ButtonGroup",Tt="tinymce/ui/Checkbox",Rt="tinymce/ui/ComboBox",At="tinymce/ui/ColorBox",Bt="tinymce/ui/PanelButton",Dt="tinymce/ui/ColorButton",Lt="tinymce/util/Color",Ht="tinymce/ui/ColorPicker",Mt="tinymce/ui/Path",Pt="tinymce/ui/ElementPath",Ot="tinymce/ui/FormItem",It="tinymce/ui/Form",Ft="tinymce/ui/FieldSet",zt="tinymce/ui/FilePicker",Wt="tinymce/ui/FitLayout",Vt="tinymce/ui/FlexLayout",Ut="tinymce/ui/FlowLayout",$t="tinymce/ui/FormatControls",qt="tinymce/ui/GridLayout",jt="tinymce/ui/Iframe",Yt="tinymce/ui/Label",Kt="tinymce/ui/Toolbar",Gt="tinymce/ui/MenuBar",Xt="tinymce/ui/MenuButton",Jt="tinymce/ui/ListBox",Qt="tinymce/ui/MenuItem",Zt="tinymce/ui/Menu",en="tinymce/ui/Radio",tn="tinymce/ui/ResizeHandle",nn="tinymce/ui/Spacer",rn="tinymce/ui/SplitButton",on="tinymce/ui/StackLayout",an="tinymce/ui/TabPanel",sn="tinymce/ui/TextBox",ln="tinymce/ui/Throbber";r(l,[],function(){function e(e,t,n,r){e.addEventListener?e.addEventListener(t,n,r||!1):e.attachEvent&&e.attachEvent("on"+t,n)}function t(e,t,n,r){e.removeEventListener?e.removeEventListener(t,n,r||!1):e.detachEvent&&e.detachEvent("on"+t,n)}function n(e,t){function n(){return!1}function r(){return!0}var i,o=t||{},l;for(i in e)s[i]||(o[i]=e[i]);if(o.target||(o.target=o.srcElement||document),e&&a.test(e.type)&&e.pageX===l&&e.clientX!==l){var c=o.target.ownerDocument||document,u=c.documentElement,d=c.body;o.pageX=e.clientX+(u&&u.scrollLeft||d&&d.scrollLeft||0)-(u&&u.clientLeft||d&&d.clientLeft||0),o.pageY=e.clientY+(u&&u.scrollTop||d&&d.scrollTop||0)-(u&&u.clientTop||d&&d.clientTop||0)}return o.preventDefault=function(){o.isDefaultPrevented=r,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},o.stopPropagation=function(){o.isPropagationStopped=r,e&&(e.stopPropagation?e.stopPropagation():e.cancelBubble=!0)},o.stopImmediatePropagation=function(){o.isImmediatePropagationStopped=r,o.stopPropagation()},o.isDefaultPrevented||(o.isDefaultPrevented=n,o.isPropagationStopped=n,o.isImmediatePropagationStopped=n),o}function r(n,r,i){function o(){i.domLoaded||(i.domLoaded=!0,r(c))}function a(){("complete"===l.readyState||"interactive"===l.readyState&&l.body)&&(t(l,"readystatechange",a),o())}function s(){try{l.documentElement.doScroll("left")}catch(e){return void setTimeout(s,0)}o()}var l=n.document,c={type:"ready"};return i.domLoaded?void r(c):(l.addEventListener?"complete"===l.readyState?o():e(n,"DOMContentLoaded",o):(e(l,"readystatechange",a),l.documentElement.doScroll&&n.self===n.top&&s()),void e(n,"load",o))}function i(){function i(e,t){var n,r,i,o,a=s[t];if(n=a&&a[e.type])for(r=0,i=n.length;i>r;r++)if(o=n[r],o&&o.func.call(o.scope,e)===!1&&e.preventDefault(),e.isImmediatePropagationStopped())return}var a=this,s={},l,c,u,d,f;c=o+(+new Date).toString(32),d="onmouseenter"in document.documentElement,u="onfocusin"in document.documentElement,f={mouseenter:"mouseover",mouseleave:"mouseout"},l=1,a.domLoaded=!1,a.events=s,a.bind=function(t,o,p,h){function m(e){i(n(e||_.event),g)}var g,v,y,b,C,x,w,_=window;if(t&&3!==t.nodeType&&8!==t.nodeType){for(t[c]?g=t[c]:(g=l++,t[c]=g,s[g]={}),h=h||t,o=o.split(" "),y=o.length;y--;)b=o[y],x=m,C=w=!1,"DOMContentLoaded"===b&&(b="ready"),a.domLoaded&&"ready"===b&&"complete"==t.readyState?p.call(h,n({type:b})):(d||(C=f[b],C&&(x=function(e){var t,r;if(t=e.currentTarget,r=e.relatedTarget,r&&t.contains)r=t.contains(r);else for(;r&&r!==t;)r=r.parentNode;r||(e=n(e||_.event),e.type="mouseout"===e.type?"mouseleave":"mouseenter",e.target=t,i(e,g))})),u||"focusin"!==b&&"focusout"!==b||(w=!0,C="focusin"===b?"focus":"blur",x=function(e){e=n(e||_.event),e.type="focus"===e.type?"focusin":"focusout",i(e,g)}),v=s[g][b],v?"ready"===b&&a.domLoaded?p({type:b}):v.push({func:p,scope:h}):(s[g][b]=v=[{func:p,scope:h}],v.fakeName=C,v.capture=w,v.nativeHandler=x,"ready"===b?r(t,x,a):e(t,C||b,x,w)));return t=v=0,p}},a.unbind=function(e,n,r){var i,o,l,u,d,f;if(!e||3===e.nodeType||8===e.nodeType)return a;if(i=e[c]){if(f=s[i],n){for(n=n.split(" "),l=n.length;l--;)if(d=n[l],o=f[d]){if(r)for(u=o.length;u--;)if(o[u].func===r){var p=o.nativeHandler,h=o.fakeName,m=o.capture;o=o.slice(0,u).concat(o.slice(u+1)),o.nativeHandler=p,o.fakeName=h,o.capture=m,f[d]=o}r&&0!==o.length||(delete f[d],t(e,o.fakeName||d,o.nativeHandler,o.capture))}}else{for(d in f)o=f[d],t(e,o.fakeName||d,o.nativeHandler,o.capture);f={}}for(d in f)return a;delete s[i];try{delete e[c]}catch(g){e[c]=null}}return a},a.fire=function(e,t,r){var o;if(!e||3===e.nodeType||8===e.nodeType)return a;r=n(null,r),r.type=t,r.target=e;do o=e[c],o&&i(r,o),e=e.parentNode||e.ownerDocument||e.defaultView||e.parentWindow;while(e&&!r.isPropagationStopped());return a},a.clean=function(e){var t,n,r=a.unbind;if(!e||3===e.nodeType||8===e.nodeType)return a;if(e[c]&&r(e),e.getElementsByTagName||(e=e.document),e&&e.getElementsByTagName)for(r(e),n=e.getElementsByTagName("*"),t=n.length;t--;)e=n[t],e[c]&&r(e);return a},a.destroy=function(){s={}},a.cancel=function(e){return e&&(e.preventDefault(),e.stopImmediatePropagation()),!1}}var o="mce-data-",a=/^(?:mouse|contextmenu)|click/,s={keyLocation:1,layerX:1,layerY:1,returnValue:1};return i.Event=new i,i.Event.bind(window,"ready",function(){}),i}),r(c,[],function(){function e(e,t,n,r){var i,o,a,s,l,c,d,p,h,m;if((t?t.ownerDocument||t:z)!==D&&B(t),t=t||D,n=n||[],!e||"string"!=typeof e)return n;if(1!==(s=t.nodeType)&&9!==s)return[];if(H&&!r){if(i=vt.exec(e))if(a=i[1]){if(9===s){if(o=t.getElementById(a),!o||!o.parentNode)return n;if(o.id===a)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(a))&&I(t,o)&&o.id===a)return n.push(o),n}else{if(i[2])return Z.apply(n,t.getElementsByTagName(e)),n;if((a=i[3])&&x.getElementsByClassName)return Z.apply(n,t.getElementsByClassName(a)),n}if(x.qsa&&(!M||!M.test(e))){if(p=d=F,h=t,m=9===s&&e,1===s&&"object"!==t.nodeName.toLowerCase()){for(c=N(e),(d=t.getAttribute("id"))?p=d.replace(bt,"\\$&"):t.setAttribute("id",p),p="[id='"+p+"'] ",l=c.length;l--;)c[l]=p+f(c[l]);h=yt.test(e)&&u(t.parentNode)||t,m=c.join(",")}if(m)try{return Z.apply(n,h.querySelectorAll(m)),n}catch(g){}finally{d||t.removeAttribute("id")}}}return S(e.replace(st,"$1"),t,n,r)}function n(){function e(n,r){return t.push(n+" ")>w.cacheLength&&delete e[t.shift()],e[n+" "]=r}var t=[];return e}function r(e){return e[F]=!0,e}function i(e){var t=D.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function o(e,t){for(var n=e.split("|"),r=e.length;r--;)w.attrHandle[n[r]]=t}function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||K)-(~e.sourceIndex||K);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function s(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function l(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function c(e){return r(function(t){return t=+t,r(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function u(e){return e&&typeof e.getElementsByTagName!==Y&&e}function d(){}function f(e){for(var t=0,n=e.length,r="";n>t;t++)r+=e[t].value;return r}function p(e,t,n){var r=t.dir,i=n&&"parentNode"===r,o=V++;return t.first?function(t,n,o){for(;t=t[r];)if(1===t.nodeType||i)return e(t,n,o)}:function(t,n,a){var s,l,c=[W,o];if(a){for(;t=t[r];)if((1===t.nodeType||i)&&e(t,n,a))return!0}else for(;t=t[r];)if(1===t.nodeType||i){if(l=t[F]||(t[F]={}),(s=l[r])&&s[0]===W&&s[1]===o)return c[2]=s[2];if(l[r]=c,c[2]=e(t,n,a))return!0}}}function h(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function m(t,n,r){for(var i=0,o=n.length;o>i;i++)e(t,n[i],r);return r}function g(e,t,n,r,i){for(var o,a=[],s=0,l=e.length,c=null!=t;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),c&&t.push(s));return a}function v(e,t,n,i,o,a){return i&&!i[F]&&(i=v(i)),o&&!o[F]&&(o=v(o,a)),r(function(r,a,s,l){var c,u,d,f=[],p=[],h=a.length,v=r||m(t||"*",s.nodeType?[s]:s,[]),y=!e||!r&&t?v:g(v,f,e,s,l),b=n?o||(r?e:h||i)?[]:a:y;if(n&&n(y,b,s,l),i)for(c=g(b,p),i(c,[],s,l),u=c.length;u--;)(d=c[u])&&(b[p[u]]=!(y[p[u]]=d));if(r){if(o||e){if(o){for(c=[],u=b.length;u--;)(d=b[u])&&c.push(y[u]=d);o(null,b=[],c,l)}for(u=b.length;u--;)(d=b[u])&&(c=o?tt.call(r,d):f[u])>-1&&(r[c]=!(a[c]=d))}}else b=g(b===a?b.splice(h,b.length):b),o?o(null,a,b,l):Z.apply(a,b)})}function y(e){for(var t,n,r,i=e.length,o=w.relative[e[0].type],a=o||w.relative[" "],s=o?1:0,l=p(function(e){return e===t},a,!0),c=p(function(e){return tt.call(t,e)>-1},a,!0),u=[function(e,n,r){return!o&&(r||n!==T)||((t=n).nodeType?l(e,n,r):c(e,n,r))}];i>s;s++)if(n=w.relative[e[s].type])u=[p(h(u),n)];else{if(n=w.filter[e[s].type].apply(null,e[s].matches),n[F]){for(r=++s;i>r&&!w.relative[e[r].type];r++);return v(s>1&&h(u),s>1&&f(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(st,"$1"),n,r>s&&y(e.slice(s,r)),i>r&&y(e=e.slice(r)),i>r&&f(e))}u.push(n)}return h(u)}function b(t,n){var i=n.length>0,o=t.length>0,a=function(r,a,s,l,c){var u,d,f,p=0,h="0",m=r&&[],v=[],y=T,b=r||o&&w.find.TAG("*",c),C=W+=null==y?1:Math.random()||.1,x=b.length;for(c&&(T=a!==D&&a);h!==x&&null!=(u=b[h]);h++){if(o&&u){for(d=0;f=t[d++];)if(f(u,a,s)){l.push(u);break}c&&(W=C)}i&&((u=!f&&u)&&p--,r&&m.push(u))}if(p+=h,i&&h!==p){for(d=0;f=n[d++];)f(m,v,a,s);if(r){if(p>0)for(;h--;)m[h]||v[h]||(v[h]=J.call(l));v=g(v)}Z.apply(l,v),c&&!r&&v.length>0&&p+n.length>1&&e.uniqueSort(l)}return c&&(W=C,T=y),m};return i?r(a):a}var C,x,w,_,E,N,k,S,T,R,A,B,D,L,H,M,P,O,I,F="sizzle"+-new Date,z=window.document,W=0,V=0,U=n(),$=n(),q=n(),j=function(e,t){return e===t&&(A=!0),0},Y=typeof t,K=1<<31,G={}.hasOwnProperty,X=[],J=X.pop,Q=X.push,Z=X.push,et=X.slice,tt=X.indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(this[t]===e)return t;return-1},nt="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",rt="[\\x20\\t\\r\\n\\f]",it="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",ot="\\["+rt+"*("+it+")(?:"+rt+"*([*^$|!~]?=)"+rt+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+it+"))|)"+rt+"*\\]",at=":("+it+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+ot+")*)|.*)\\)|)",st=new RegExp("^"+rt+"+|((?:^|[^\\\\])(?:\\\\.)*)"+rt+"+$","g"),lt=new RegExp("^"+rt+"*,"+rt+"*"),ct=new RegExp("^"+rt+"*([>+~]|"+rt+")"+rt+"*"),ut=new RegExp("="+rt+"*([^\\]'\"]*?)"+rt+"*\\]","g"),dt=new RegExp(at),ft=new RegExp("^"+it+"$"),pt={ID:new RegExp("^#("+it+")"),CLASS:new RegExp("^\\.("+it+")"),TAG:new RegExp("^("+it+"|[*])"),ATTR:new RegExp("^"+ot),PSEUDO:new RegExp("^"+at),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+rt+"*(even|odd|(([+-]|)(\\d*)n|)"+rt+"*(?:([+-]|)"+rt+"*(\\d+)|))"+rt+"*\\)|)","i"),bool:new RegExp("^(?:"+nt+")$","i"),needsContext:new RegExp("^"+rt+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+rt+"*((?:-\\d)?\\d*)"+rt+"*\\)|)(?=[^-]|$)","i")},ht=/^(?:input|select|textarea|button)$/i,mt=/^h\d$/i,gt=/^[^{]+\{\s*\[native \w/,vt=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,yt=/[+~]/,bt=/'|\\/g,Ct=new RegExp("\\\\([\\da-f]{1,6}"+rt+"?|("+rt+")|.)","ig"),xt=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)};try{Z.apply(X=et.call(z.childNodes),z.childNodes),X[z.childNodes.length].nodeType}catch(wt){Z={apply:X.length?function(e,t){Q.apply(e,et.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}x=e.support={},E=e.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},B=e.setDocument=function(e){var t,n=e?e.ownerDocument||e:z,r=n.defaultView;return n!==D&&9===n.nodeType&&n.documentElement?(D=n,L=n.documentElement,H=!E(n),r&&r!==r.top&&(r.addEventListener?r.addEventListener("unload",function(){B()},!1):r.attachEvent&&r.attachEvent("onunload",function(){B()})),x.attributes=i(function(e){return e.className="i",!e.getAttribute("className")}),x.getElementsByTagName=i(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),x.getElementsByClassName=gt.test(n.getElementsByClassName),x.getById=i(function(e){return L.appendChild(e).id=F,!n.getElementsByName||!n.getElementsByName(F).length}),x.getById?(w.find.ID=function(e,t){if(typeof t.getElementById!==Y&&H){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},w.filter.ID=function(e){var t=e.replace(Ct,xt);return function(e){return e.getAttribute("id")===t}}):(delete w.find.ID,w.filter.ID=function(e){var t=e.replace(Ct,xt);return function(e){var n=typeof e.getAttributeNode!==Y&&e.getAttributeNode("id");return n&&n.value===t}}),w.find.TAG=x.getElementsByTagName?function(e,t){return typeof t.getElementsByTagName!==Y?t.getElementsByTagName(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},w.find.CLASS=x.getElementsByClassName&&function(e,t){return H?t.getElementsByClassName(e):void 0},P=[],M=[],(x.qsa=gt.test(n.querySelectorAll))&&(i(function(e){e.innerHTML="<select msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&M.push("[*^$]="+rt+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||M.push("\\["+rt+"*(?:value|"+nt+")"),e.querySelectorAll(":checked").length||M.push(":checked")}),i(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&M.push("name"+rt+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||M.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),M.push(",.*:")})),(x.matchesSelector=gt.test(O=L.matches||L.webkitMatchesSelector||L.mozMatchesSelector||L.oMatchesSelector||L.msMatchesSelector))&&i(function(e){x.disconnectedMatch=O.call(e,"div"),O.call(e,"[s!='']:x"),P.push("!=",at)}),M=M.length&&new RegExp(M.join("|")),P=P.length&&new RegExp(P.join("|")),t=gt.test(L.compareDocumentPosition),I=t||gt.test(L.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return A=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r?r:(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&r||!x.sortDetached&&t.compareDocumentPosition(e)===r?e===n||e.ownerDocument===z&&I(z,e)?-1:t===n||t.ownerDocument===z&&I(z,t)?1:R?tt.call(R,e)-tt.call(R,t):0:4&r?-1:1)}:function(e,t){if(e===t)return A=!0,0;var r,i=0,o=e.parentNode,s=t.parentNode,l=[e],c=[t];if(!o||!s)return e===n?-1:t===n?1:o?-1:s?1:R?tt.call(R,e)-tt.call(R,t):0;if(o===s)return a(e,t);for(r=e;r=r.parentNode;)l.unshift(r);for(r=t;r=r.parentNode;)c.unshift(r);for(;l[i]===c[i];)i++;return i?a(l[i],c[i]):l[i]===z?-1:c[i]===z?1:0},n):D},e.matches=function(t,n){return e(t,null,null,n)},e.matchesSelector=function(t,n){if((t.ownerDocument||t)!==D&&B(t),n=n.replace(ut,"='$1']"),!(!x.matchesSelector||!H||P&&P.test(n)||M&&M.test(n)))try{var r=O.call(t,n);if(r||x.disconnectedMatch||t.document&&11!==t.document.nodeType)return r}catch(i){}return e(n,D,null,[t]).length>0},e.contains=function(e,t){return(e.ownerDocument||e)!==D&&B(e),I(e,t)},e.attr=function(e,n){(e.ownerDocument||e)!==D&&B(e);var r=w.attrHandle[n.toLowerCase()],i=r&&G.call(w.attrHandle,n.toLowerCase())?r(e,n,!H):t;return i!==t?i:x.attributes||!H?e.getAttribute(n):(i=e.getAttributeNode(n))&&i.specified?i.value:null},e.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},e.uniqueSort=function(e){var t,n=[],r=0,i=0;if(A=!x.detectDuplicates,R=!x.sortStable&&e.slice(0),e.sort(j),A){for(;t=e[i++];)t===e[i]&&(r=n.push(i));for(;r--;)e.splice(n[r],1)}return R=null,e},_=e.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=_(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r++];)n+=_(t);return n},w=e.selectors={cacheLength:50,createPseudo:r,match:pt,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Ct,xt),e[3]=(e[3]||e[4]||e[5]||"").replace(Ct,xt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||e.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&e.error(t[0]),t},PSEUDO:function(e){var t,n=!e[6]&&e[2];return pt.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&dt.test(n)&&(t=N(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Ct,xt).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=U[e+" "];return t||(t=new RegExp("(^|"+rt+")"+e+"("+rt+"|$)"))&&U(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==Y&&e.getAttribute("class")||"")})},ATTR:function(t,n,r){return function(i){var o=e.attr(i,t);return null==o?"!="===n:n?(o+="","="===n?o===r:"!="===n?o!==r:"^="===n?r&&0===o.indexOf(r):"*="===n?r&&o.indexOf(r)>-1:"$="===n?r&&o.slice(-r.length)===r:"~="===n?(" "+o+" ").indexOf(r)>-1:"|="===n?o===r||o.slice(0,r.length+1)===r+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var c,u,d,f,p,h,m=o!==a?"nextSibling":"previousSibling",g=t.parentNode,v=s&&t.nodeName.toLowerCase(),y=!l&&!s;if(g){if(o){for(;m;){for(d=t;d=d[m];)if(s?d.nodeName.toLowerCase()===v:1===d.nodeType)return!1;h=m="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?g.firstChild:g.lastChild],a&&y){for(u=g[F]||(g[F]={}),c=u[e]||[],p=c[0]===W&&c[1],f=c[0]===W&&c[2],d=p&&g.childNodes[p];d=++p&&d&&d[m]||(f=p=0)||h.pop();)if(1===d.nodeType&&++f&&d===t){u[e]=[W,p,f];break}}else if(y&&(c=(t[F]||(t[F]={}))[e])&&c[0]===W)f=c[1];else for(;(d=++p&&d&&d[m]||(f=p=0)||h.pop())&&((s?d.nodeName.toLowerCase()!==v:1!==d.nodeType)||!++f||(y&&((d[F]||(d[F]={}))[e]=[W,f]),d!==t)););return f-=i,f===r||f%r===0&&f/r>=0}}},PSEUDO:function(t,n){var i,o=w.pseudos[t]||w.setFilters[t.toLowerCase()]||e.error("unsupported pseudo: "+t);return o[F]?o(n):o.length>1?(i=[t,t,"",n],w.setFilters.hasOwnProperty(t.toLowerCase())?r(function(e,t){for(var r,i=o(e,n),a=i.length;a--;)r=tt.call(e,i[a]),e[r]=!(t[r]=i[a])}):function(e){return o(e,0,i)}):o}},pseudos:{not:r(function(e){var t=[],n=[],i=k(e.replace(st,"$1"));return i[F]?r(function(e,t,n,r){for(var o,a=i(e,null,r,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,r,o){return t[0]=e,i(t,null,o,n),!n.pop()}}),has:r(function(t){return function(n){return e(t,n).length>0}}),contains:r(function(e){return e=e.replace(Ct,xt),function(t){return(t.textContent||t.innerText||_(t)).indexOf(e)>-1}}),lang:r(function(t){return ft.test(t||"")||e.error("unsupported lang: "+t),t=t.replace(Ct,xt).toLowerCase(),function(e){var n;do if(n=H?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return n=n.toLowerCase(),n===t||0===n.indexOf(t+"-");while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=window.location&&window.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===L},focus:function(e){return e===D.activeElement&&(!D.hasFocus||D.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!w.pseudos.empty(e)},header:function(e){return mt.test(e.nodeName)},input:function(e){return ht.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:c(function(){return[0]}),last:c(function(e,t){return[t-1]}),eq:c(function(e,t,n){return[0>n?n+t:n]}),even:c(function(e,t){for(var n=0;t>n;n+=2)e.push(n);return e}),odd:c(function(e,t){for(var n=1;t>n;n+=2)e.push(n);return e}),lt:c(function(e,t,n){for(var r=0>n?n+t:n;--r>=0;)e.push(r);return e}),gt:c(function(e,t,n){for(var r=0>n?n+t:n;++r<t;)e.push(r);return e})}},w.pseudos.nth=w.pseudos.eq;for(C in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})w.pseudos[C]=s(C);for(C in{submit:!0,reset:!0})w.pseudos[C]=l(C);return d.prototype=w.filters=w.pseudos,w.setFilters=new d,N=e.tokenize=function(t,n){var r,i,o,a,s,l,c,u=$[t+" "];if(u)return n?0:u.slice(0);for(s=t,l=[],c=w.preFilter;s;){(!r||(i=lt.exec(s)))&&(i&&(s=s.slice(i[0].length)||s),l.push(o=[])),r=!1,(i=ct.exec(s))&&(r=i.shift(),o.push({value:r,type:i[0].replace(st," ")}),s=s.slice(r.length));for(a in w.filter)!(i=pt[a].exec(s))||c[a]&&!(i=c[a](i))||(r=i.shift(),o.push({value:r,type:a,matches:i}),s=s.slice(r.length));if(!r)break}return n?s.length:s?e.error(t):$(t,l).slice(0)},k=e.compile=function(e,t){var n,r=[],i=[],o=q[e+" "];if(!o){for(t||(t=N(e)),n=t.length;n--;)o=y(t[n]),o[F]?r.push(o):i.push(o);o=q(e,b(i,r)),o.selector=e}return o},S=e.select=function(e,t,n,r){var i,o,a,s,l,c="function"==typeof e&&e,d=!r&&N(e=c.selector||e);if(n=n||[],1===d.length){if(o=d[0]=d[0].slice(0),o.length>2&&"ID"===(a=o[0]).type&&x.getById&&9===t.nodeType&&H&&w.relative[o[1].type]){if(t=(w.find.ID(a.matches[0].replace(Ct,xt),t)||[])[0],!t)return n;c&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(i=pt.needsContext.test(e)?0:o.length;i--&&(a=o[i],!w.relative[s=a.type]);)if((l=w.find[s])&&(r=l(a.matches[0].replace(Ct,xt),yt.test(o[0].type)&&u(t.parentNode)||t))){if(o.splice(i,1),e=r.length&&f(o),!e)return Z.apply(n,r),n;break}}return(c||k(e,d))(r,t,!H,n,yt.test(e)&&u(t.parentNode)||t),n},x.sortStable=F.split("").sort(j).join("")===F,x.detectDuplicates=!!A,B(),x.sortDetached=i(function(e){return 1&e.compareDocumentPosition(D.createElement("div"))}),i(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||o("type|href|height|width",function(e,t,n){return n?void 0:e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),x.attributes&&i(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||o("value",function(e,t,n){return n||"input"!==e.nodeName.toLowerCase()?void 0:e.defaultValue}),i(function(e){return null==e.getAttribute("disabled")})||o(nt,function(e,t,n){var r;return n?void 0:e[t]===!0?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),e}),r(u,[],function(){function e(e){return null===e||e===t?"":(""+e).replace(m,"")}function n(e,n){return n?"array"==n&&g(e)?!0:typeof e==n:e!==t}function r(e){var t=e,n,r;if(!g(e))for(t=[],n=0,r=e.length;r>n;n++)t[n]=e[n];return t}function i(e,t,n){var r;for(e=e||[],t=t||",","string"==typeof e&&(e=e.split(t)),n=n||{},r=e.length;r--;)n[e[r]]={};return n}function o(e,n,r){var i,o;if(!e)return 0;if(r=r||e,e.length!==t){for(i=0,o=e.length;o>i;i++)if(n.call(r,e[i],i,e)===!1)return 0}else for(i in e)if(e.hasOwnProperty(i)&&n.call(r,e[i],i,e)===!1)return 0;return 1}function a(e,t){var n=[];return o(e,function(e){n.push(t(e))}),n}function s(e,t){var n=[];return o(e,function(e){(!t||t(e))&&n.push(e)}),n}function l(e,t,n){var r=this,i,o,a,s,l,c=0;if(e=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(e),a=e[3].match(/(^|\.)(\w+)$/i)[2],o=r.createNS(e[3].replace(/\.\w+$/,""),n),!o[a]){if("static"==e[2])return o[a]=t,void(this.onCreate&&this.onCreate(e[2],e[3],o[a]));t[a]||(t[a]=function(){},c=1),o[a]=t[a],r.extend(o[a].prototype,t),e[5]&&(i=r.resolve(e[5]).prototype,s=e[5].match(/\.(\w+)$/i)[1],l=o[a],o[a]=c?function(){return i[s].apply(this,arguments)}:function(){return this.parent=i[s],l.apply(this,arguments)},o[a].prototype[a]=o[a],r.each(i,function(e,t){o[a].prototype[t]=i[t]}),r.each(t,function(e,t){i[t]?o[a].prototype[t]=function(){return this.parent=i[t],e.apply(this,arguments)}:t!=a&&(o[a].prototype[t]=e)})),r.each(t["static"],function(e,t){o[a][t]=e})}}function c(e,t){var n,r;if(e)for(n=0,r=e.length;r>n;n++)if(e[n]===t)return n;return-1}function u(e,n){var r,i,o,a=arguments,s;for(r=1,i=a.length;i>r;r++){n=a[r];for(o in n)n.hasOwnProperty(o)&&(s=n[o],s!==t&&(e[o]=s))}return e}function d(e,t,n,r){r=r||this,e&&(n&&(e=e[n]),o(e,function(e,i){return t.call(r,e,i,n)===!1?!1:void d(e,t,n,r)}))}function f(e,t){var n,r;for(t=t||window,e=e.split("."),n=0;n<e.length;n++)r=e[n],t[r]||(t[r]={}),t=t[r];return t}function p(e,t){var n,r;for(t=t||window,e=e.split("."),n=0,r=e.length;r>n&&(t=t[e[n]],t);n++);return t}function h(t,r){return!t||n(t,"array")?t:a(t.split(r||","),e)}var m=/^\s*|\s*$/g,g=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};return{trim:e,isArray:g,is:n,toArray:r,makeMap:i,each:o,map:a,grep:s,inArray:c,extend:u,create:l,walk:d,createNS:f,resolve:p,explode:h}}),r(d,[],function(){var e=navigator,t=e.userAgent,n,r,i,o,a,s,l;n=window.opera&&window.opera.buildNumber,r=/WebKit/.test(t),i=!r&&!n&&/MSIE/gi.test(t)&&/Explorer/gi.test(e.appName),i=i&&/MSIE (\w+)\./.exec(t)[1],o=-1==t.indexOf("Trident/")||-1==t.indexOf("rv:")&&-1==e.appName.indexOf("Netscape")?!1:11,i=i||o,a=!r&&!o&&/Gecko/.test(t),s=-1!=t.indexOf("Mac"),l=/(iPad|iPhone)/.test(t);var c=!l||t.match(/AppleWebKit\/(\d*)/)[1]>=534;return{opera:n,webkit:r,ie:i,gecko:a,mac:s,iOS:l,contentEditable:c,transparentSrc:"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",caretAfter:8!=i,range:window.getSelection&&"Range"in window,documentMode:i?document.documentMode||7:10}}),r(f,[l,c,u,d],function(e,n,r,i){function o(e){return"undefined"!=typeof e}function a(e){return"string"==typeof e}function s(e,t){var n,r,i;for(t=t||x,i=t.createElement("div"),n=t.createDocumentFragment(),i.innerHTML=e;r=i.firstChild;)n.appendChild(r);return n}function l(e,t,n,r){var i;if(a(t))t=s(t,g(e[0]));else if(t.length&&!t.nodeType){if(t=d.makeArray(t),r)for(i=t.length-1;i>=0;i--)l(e,t[i],n,r);else for(i=0;i<t.length;i++)l(e,t[i],n,r);return e}if(t.nodeType)for(i=e.length;i--;)n.call(e[i],t);return e}function c(e,t){return e&&t&&-1!==(" "+e.className+" ").indexOf(" "+t+" ")}function u(e,t,n){var r,i;return t=d(t)[0],e.each(function(){var e=this;n&&r==e.parentNode?i.appendChild(e):(r=e.parentNode,i=t.cloneNode(!1),e.parentNode.insertBefore(i,e),i.appendChild(e))}),e}function d(e,t){return new d.fn.init(e,t)}function f(e,t){var n;if(t.indexOf)return t.indexOf(e);for(n=t.length;n--;)if(t[n]===e)return n;return-1}function p(e){return null===e||e===k?"":(""+e).replace(L,"")}function h(e,t){var n,r,i,o,a;if(e)if(n=e.length,n===o){for(r in e)if(e.hasOwnProperty(r)&&(a=e[r],t.call(a,r,a)===!1))break}else for(i=0;n>i&&(a=e[i],t.call(a,i,a)!==!1);i++);return e}function m(e,t){var n=[];return h(e,function(e,r){t(r,e)&&n.push(r)}),n}function g(e){return e?9==e.nodeType?e:e.ownerDocument:x}function v(e,n,r){var i=[],o=e[n];for("string"!=typeof r&&r instanceof d&&(r=r[0]);o&&9!==o.nodeType;){if(r!==t){if(o===r)break;if("string"==typeof r&&d(o).is(r))break}1===o.nodeType&&i.push(o),o=o[n]}return i}function y(e,n,r,i){var o=[];for(i instanceof d&&(i=i[0]);e;e=e[n])if(!r||e.nodeType===r){if(i!==t){if(e===i)break;if("string"==typeof i&&d(e).is(i))break}o.push(e)}return o}function b(e,t,n){for(e=e[t];e;e=e[t])if(e.nodeType==n)return e;return null}function C(e,t,n){h(n,function(n,r){e[n]=e[n]||{},e[n][t]=r})}var x=document,w=Array.prototype.push,_=Array.prototype.slice,E=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,N=e.Event,k,S=r.makeMap("fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom"," "),T=r.makeMap("checked compact declare defer disabled ismap multiple nohref noshade nowrap readonly selected"," "),R={"for":"htmlFor","class":"className",readonly:"readOnly"},A={"float":"cssFloat"},B={},D={},L=/^\s*|\s*$/g;return d.fn=d.prototype={constructor:d,selector:"",context:null,length:0,init:function(e,t){var n=this,r,i;if(!e)return n;if(e.nodeType)return n.context=n[0]=e,n.length=1,n;if(t&&t.nodeType)n.context=t;else{if(t)return d(e).attr(t);n.context=t=document}if(a(e)){if(n.selector=e,r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:E.exec(e),!r)return d(t).find(e);if(r[1])for(i=s(e,g(t)).firstChild;i;)w.call(n,i),i=i.nextSibling;else{if(i=g(t).getElementById(r[2]),!i)return n;if(i.id!==r[2])return n.find(e);n.length=1,n[0]=i}}else this.add(e,!1);return n},toArray:function(){return r.toArray(this)},add:function(e,t){var n=this,r,i;if(a(e))return n.add(d(e));if(e.nodeType)return n.add([e]);if(t!==!1)for(r=d.unique(n.toArray().concat(d.makeArray(e))),n.length=r.length,i=0;i<r.length;i++)n[i]=r[i];else w.apply(n,d.makeArray(e));
+return n},attr:function(e,t){var n=this,r;if("object"==typeof e)h(e,function(e,t){n.attr(e,t)});else{if(!o(t)){if(n[0]&&1===n[0].nodeType){if(r=B[e],r&&r.get)return r.get(n[0],e);if(T[e])return n.prop(e)?e:k;t=n[0].getAttribute(e,2),null===t&&(t=k)}return t}this.each(function(){var n;if(1===this.nodeType){if(n=B[e],n&&n.set)return void n.set(this,t);null===t?this.removeAttribute(e,2):this.setAttribute(e,t,2)}})}return n},removeAttr:function(e){return this.attr(e,null)},prop:function(e,t){var n=this;if(e=R[e]||e,"object"==typeof e)h(e,function(e,t){n.prop(e,t)});else{if(!o(t))return n[0]&&n[0].nodeType&&e in n[0]?n[0][e]:t;this.each(function(){1==this.nodeType&&(this[e]=t)})}return n},css:function(e,t){function n(e){return e.replace(/-(\D)/g,function(e,t){return t.toUpperCase()})}function r(e){return e.replace(/[A-Z]/g,function(e){return"-"+e})}var i=this,a,s;if("object"==typeof e)h(e,function(e,t){i.css(e,t)});else if(o(t))e=n(e),"number"!=typeof t||S[e]||(t+="px"),i.each(function(){var n=this.style;if(s=D[e],s&&s.set)return void s.set(this,t);try{this.style[A[e]||e]=t}catch(i){}(null===t||""===t)&&(n.removeProperty?n.removeProperty(r(e)):n.removeAttribute(e))});else{if(a=i[0],s=D[e],s&&s.get)return s.get(a);if(a.ownerDocument.defaultView)try{return a.ownerDocument.defaultView.getComputedStyle(a,null).getPropertyValue(r(e))}catch(l){return k}else if(a.currentStyle)return a.currentStyle[n(e)]}return i},remove:function(){for(var e=this,t,n=this.length;n--;)t=e[n],N.clean(t),t.parentNode&&t.parentNode.removeChild(t);return this},empty:function(){for(var e=this,t,n=this.length;n--;)for(t=e[n];t.firstChild;)t.removeChild(t.firstChild);return this},html:function(e){var t=this,n;if(o(e)){n=t.length;try{for(;n--;)t[n].innerHTML=e}catch(r){d(t[n]).empty().append(e)}return t}return t[0]?t[0].innerHTML:""},text:function(e){var t=this,n;if(o(e)){for(n=t.length;n--;)"innerText"in t[n]?t[n].innerText=e:t[0].textContent=e;return t}return t[0]?t[0].innerText||t[0].textContent:""},append:function(){return l(this,arguments,function(e){1===this.nodeType&&this.appendChild(e)})},prepend:function(){return l(this,arguments,function(e){1===this.nodeType&&this.insertBefore(e,this.firstChild)},!0)},before:function(){var e=this;return e[0]&&e[0].parentNode?l(e,arguments,function(e){this.parentNode.insertBefore(e,this)}):e},after:function(){var e=this;return e[0]&&e[0].parentNode?l(e,arguments,function(e){this.parentNode.insertBefore(e,this.nextSibling)},!0):e},appendTo:function(e){return d(e).append(this),this},prependTo:function(e){return d(e).prepend(this),this},replaceWith:function(e){return this.before(e).remove()},wrap:function(e){return u(this,e)},wrapAll:function(e){return u(this,e,!0)},wrapInner:function(e){return this.each(function(){d(this).contents().wrapAll(e)}),this},unwrap:function(){return this.parent().each(function(){d(this).replaceWith(this.childNodes)})},clone:function(){var e=[];return this.each(function(){e.push(this.cloneNode(!0))}),d(e)},addClass:function(e){return this.toggleClass(e,!0)},removeClass:function(e){return this.toggleClass(e,!1)},toggleClass:function(e,t){var n=this;return"string"!=typeof e?n:(-1!==e.indexOf(" ")?h(e.split(" "),function(){n.toggleClass(this,t)}):n.each(function(n,r){var i,o;o=c(r,e),o!==t&&(i=r.className,o?r.className=p((" "+i+" ").replace(" "+e+" "," ")):r.className+=i?" "+e:e)}),n)},hasClass:function(e){return c(this[0],e)},each:function(e){return h(this,e)},on:function(e,t){return this.each(function(){N.bind(this,e,t)})},off:function(e,t){return this.each(function(){N.unbind(this,e,t)})},trigger:function(e){return this.each(function(){"object"==typeof e?N.fire(this,e.type,e):N.fire(this,e)})},show:function(){return this.css("display","")},hide:function(){return this.css("display","none")},slice:function(){return new d(_.apply(this,arguments))},eq:function(e){return-1===e?this.slice(e):this.slice(e,+e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},find:function(e){var t,n,r=[];for(t=0,n=this.length;n>t;t++)d.find(e,this[t],r);return d(r)},filter:function(e){return d("function"==typeof e?m(this.toArray(),function(t,n){return e(n,t)}):d.filter(e,this.toArray()))},closest:function(e){var t=[];return e instanceof d&&(e=e[0]),this.each(function(n,r){for(;r;){if("string"==typeof e&&d(r).is(e)){t.push(r);break}if(r==e){t.push(r);break}r=r.parentNode}}),d(t)},offset:function(e){var t,n,r,i=0,o=0,a;return e?this.css(e):(t=this[0],t&&(n=t.ownerDocument,r=n.documentElement,t.getBoundingClientRect&&(a=t.getBoundingClientRect(),i=a.left+(r.scrollLeft||n.body.scrollLeft)-r.clientLeft,o=a.top+(r.scrollTop||n.body.scrollTop)-r.clientTop)),{left:i,top:o})},push:w,sort:[].sort,splice:[].splice},r.extend(d,{extend:r.extend,makeArray:r.toArray,inArray:f,isArray:r.isArray,each:h,trim:p,grep:m,find:n,expr:n.selectors,unique:n.uniqueSort,text:n.getText,contains:n.contains,filter:function(e,t,n){return n&&(e=":not("+e+")"),t=1===t.length?d.find.matchesSelector(t[0],e)?[t[0]]:[]:d.find.matches(e,t)}}),h({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return v(e,"parentNode")},next:function(e){return b(e,"nextSibling",1)},prev:function(e){return b(e,"previousSibling",1)},children:function(e){return y(e.firstChild,"nextSibling",1)},contents:function(e){return r.toArray(("iframe"===e.nodeName?e.contentDocument||e.contentWindow.document:e).childNodes)}},function(e,t){d.fn[e]=function(n){var r=this,i=[];return r.each(function(){var e=t.call(i,this,n,i);e&&(d.isArray(e)?i.push.apply(i,e):i.push(e))}),this.length>1&&(i=d.unique(i),0===e.indexOf("parents")&&(i=i.reverse())),i=d(i),n?i.filter(n):i}}),h({parentsUntil:function(e,t){return v(e,"parentNode",t)},nextUntil:function(e,t){return y(e,"nextSibling",1,t).slice(1)},prevUntil:function(e,t){return y(e,"previousSibling",1,t).slice(1)}},function(e,t){d.fn[e]=function(n,r){var i=this,o=[];return i.each(function(){var e=t.call(o,this,n,o);e&&(d.isArray(e)?o.push.apply(o,e):o.push(e))}),this.length>1&&(o=d.unique(o),(0===e.indexOf("parents")||"prevUntil"===e)&&(o=o.reverse())),o=d(o),r?o.filter(r):o}}),d.fn.is=function(e){return!!e&&this.filter(e).length>0},d.fn.init.prototype=d.fn,d.overrideDefaults=function(e){function t(r,i){return n=n||e(),0===arguments.length&&(r=n.element),i||(i=n.context),new t.fn.init(r,i)}var n;return d.extend(t,this),t},i.ie&&i.ie<8&&(C(B,"get",{maxlength:function(e){var t=e.maxLength;return 2147483647===t?k:t},size:function(e){var t=e.size;return 20===t?k:t},"class":function(e){return e.className},style:function(e){var t=e.style.cssText;return 0===t.length?k:t}}),C(B,"set",{"class":function(e,t){e.className=t},style:function(e,t){e.style.cssText=t}})),i.ie&&i.ie<9&&(A["float"]="styleFloat",C(D,"set",{opacity:function(e,t){var n=e.style;null===t||""===t?n.removeAttribute("filter"):(n.zoom=1,n.filter="alpha(opacity="+100*t+")")}})),d.attrHooks=B,d.cssHooks=D,d}),r(p,[],function(){return function(e,t){function n(e,t,n,r){function i(e){return e=parseInt(e,10).toString(16),e.length>1?e:"0"+e}return"#"+i(t)+i(n)+i(r)}var r=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,i=/(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,o=/\s*([^:]+):\s*([^;]+);?/g,a=/\s+$/,s,l,c={},u,d,f,p="\ufeff";for(e=e||{},t&&(d=t.getValidStyles(),f=t.getInvalidStyles()),u=("\\\" \\' \\; \\: ; : "+p).split(" "),l=0;l<u.length;l++)c[u[l]]=p+l,c[p+l]=u[l];return{toHex:function(e){return e.replace(r,n)},parse:function(t){function s(e,t,n){var r,i,o,a;if(r=m[e+"-top"+t],r&&(i=m[e+"-right"+t],i&&(o=m[e+"-bottom"+t],o&&(a=m[e+"-left"+t])))){var s=[r,i,o,a];for(l=s.length-1;l--&&s[l]===s[l+1];);l>-1&&n||(m[e+t]=-1==l?s[0]:s.join(" "),delete m[e+"-top"+t],delete m[e+"-right"+t],delete m[e+"-bottom"+t],delete m[e+"-left"+t])}}function u(e){var t=m[e],n;if(t){for(t=t.split(" "),n=t.length;n--;)if(t[n]!==t[0])return!1;return m[e]=t[0],!0}}function d(e,t,n,r){u(t)&&u(n)&&u(r)&&(m[e]=m[t]+" "+m[n]+" "+m[r],delete m[t],delete m[n],delete m[r])}function f(e){return b=!0,c[e]}function p(e,t){return b&&(e=e.replace(/\uFEFF[0-9]/g,function(e){return c[e]})),t||(e=e.replace(/\\([\'\";:])/g,"$1")),e}function h(t,n,r,i,o,a){if(o=o||a)return o=p(o),"'"+o.replace(/\'/g,"\\'")+"'";if(n=p(n||r||i),!e.allow_script_urls){var s=n.replace(/[\s\r\n]+/,"");if(/(java|vb)script:/i.test(s))return"";if(!e.allow_svg_data_urls&&/^data:image\/svg/i.test(s))return""}return C&&(n=C.call(x,n,"style")),"url('"+n.replace(/\'/g,"\\'")+"')"}var m={},g,v,y,b,C=e.url_converter,x=e.url_converter_scope||this;if(t){for(t=t.replace(/[\u0000-\u001F]/g,""),t=t.replace(/\\[\"\';:\uFEFF]/g,f).replace(/\"[^\"]+\"|\'[^\']+\'/g,function(e){return e.replace(/[;:]/g,f)});g=o.exec(t);){if(v=g[1].replace(a,"").toLowerCase(),y=g[2].replace(a,""),y=y.replace(/\\[0-9a-f]+/g,function(e){return String.fromCharCode(parseInt(e.substr(1),16))}),v&&y.length>0){if(!e.allow_script_urls&&("behavior"==v||/expression\s*\(|\/\*|\*\//.test(y)))continue;"font-weight"===v&&"700"===y?y="bold":("color"===v||"background-color"===v)&&(y=y.toLowerCase()),y=y.replace(r,n),y=y.replace(i,h),m[v]=b?p(y,!0):y}o.lastIndex=g.index+g[0].length}s("border","",!0),s("border","-width"),s("border","-color"),s("border","-style"),s("padding",""),s("margin",""),d("border","border-width","border-style","border-color"),"medium none"===m.border&&delete m.border,"none"===m["border-image"]&&delete m["border-image"]}return m},serialize:function(e,t){function n(t){var n,r,o,a;if(n=d[t])for(r=0,o=n.length;o>r;r++)t=n[r],a=e[t],a!==s&&a.length>0&&(i+=(i.length>0?" ":"")+t+": "+a+";")}function r(e,t){var n;return n=f["*"],n&&n[e]?!1:(n=f[t],n&&n[e]?!1:!0)}var i="",o,a;if(t&&d)n("*"),n(t);else for(o in e)a=e[o],a!==s&&a.length>0&&(!f||r(o,t))&&(i+=(i.length>0?" ":"")+o+": "+a+";");return i}}}}),r(h,[],function(){return function(e,t){function n(e,n,r,i){var o,a;if(e){if(!i&&e[n])return e[n];if(e!=t){if(o=e[r])return o;for(a=e.parentNode;a&&a!=t;a=a.parentNode)if(o=a[r])return o}}}var r=e;this.current=function(){return r},this.next=function(e){return r=n(r,"firstChild","nextSibling",e)},this.prev=function(e){return r=n(r,"lastChild","previousSibling",e)}}}),r(m,[u],function(e){function t(n){function r(){return M.createDocumentFragment()}function i(e,t){_(F,e,t)}function o(e,t){_(z,e,t)}function a(e){i(e.parentNode,j(e))}function s(e){i(e.parentNode,j(e)+1)}function l(e){o(e.parentNode,j(e))}function c(e){o(e.parentNode,j(e)+1)}function u(e){e?(H[U]=H[V],H[$]=H[W]):(H[V]=H[U],H[W]=H[$]),H.collapsed=F}function d(e){a(e),c(e)}function f(e){i(e,0),o(e,1===e.nodeType?e.childNodes.length:e.nodeValue.length)}function p(e,t){var n=H[V],r=H[W],i=H[U],o=H[$],a=t.startContainer,s=t.startOffset,l=t.endContainer,c=t.endOffset;return 0===e?w(n,r,a,s):1===e?w(i,o,a,s):2===e?w(i,o,l,c):3===e?w(n,r,l,c):void 0}function h(){E(I)}function m(){return E(P)}function g(){return E(O)}function v(e){var t=this[V],r=this[W],i,o;3!==t.nodeType&&4!==t.nodeType||!t.nodeValue?(t.childNodes.length>0&&(o=t.childNodes[r]),o?t.insertBefore(e,o):3==t.nodeType?n.insertAfter(e,t):t.appendChild(e)):r?r>=t.nodeValue.length?n.insertAfter(e,t):(i=t.splitText(r),t.parentNode.insertBefore(e,i)):t.parentNode.insertBefore(e,t)}function y(e){var t=H.extractContents();H.insertNode(e),e.appendChild(t),H.selectNode(e)}function b(){return q(new t(n),{startContainer:H[V],startOffset:H[W],endContainer:H[U],endOffset:H[$],collapsed:H.collapsed,commonAncestorContainer:H.commonAncestorContainer})}function C(e,t){var n;if(3==e.nodeType)return e;if(0>t)return e;for(n=e.firstChild;n&&t>0;)--t,n=n.nextSibling;return n?n:e}function x(){return H[V]==H[U]&&H[W]==H[$]}function w(e,t,r,i){var o,a,s,l,c,u;if(e==r)return t==i?0:i>t?-1:1;for(o=r;o&&o.parentNode!=e;)o=o.parentNode;if(o){for(a=0,s=e.firstChild;s!=o&&t>a;)a++,s=s.nextSibling;return a>=t?-1:1}for(o=e;o&&o.parentNode!=r;)o=o.parentNode;if(o){for(a=0,s=r.firstChild;s!=o&&i>a;)a++,s=s.nextSibling;return i>a?-1:1}for(l=n.findCommonAncestor(e,r),c=e;c&&c.parentNode!=l;)c=c.parentNode;for(c||(c=l),u=r;u&&u.parentNode!=l;)u=u.parentNode;if(u||(u=l),c==u)return 0;for(s=l.firstChild;s;){if(s==c)return-1;if(s==u)return 1;s=s.nextSibling}}function _(e,t,r){var i,o;for(e?(H[V]=t,H[W]=r):(H[U]=t,H[$]=r),i=H[U];i.parentNode;)i=i.parentNode;for(o=H[V];o.parentNode;)o=o.parentNode;o==i?w(H[V],H[W],H[U],H[$])>0&&H.collapse(e):H.collapse(e),H.collapsed=x(),H.commonAncestorContainer=n.findCommonAncestor(H[V],H[U])}function E(e){var t,n=0,r=0,i,o,a,s,l,c;if(H[V]==H[U])return N(e);for(t=H[U],i=t.parentNode;i;t=i,i=i.parentNode){if(i==H[V])return k(t,e);++n}for(t=H[V],i=t.parentNode;i;t=i,i=i.parentNode){if(i==H[U])return S(t,e);++r}for(o=r-n,a=H[V];o>0;)a=a.parentNode,o--;for(s=H[U];0>o;)s=s.parentNode,o++;for(l=a.parentNode,c=s.parentNode;l!=c;l=l.parentNode,c=c.parentNode)a=l,s=c;return T(a,s,e)}function N(e){var t,n,i,o,a,s,l,c,u;if(e!=I&&(t=r()),H[W]==H[$])return t;if(3==H[V].nodeType){if(n=H[V].nodeValue,i=n.substring(H[W],H[$]),e!=O&&(o=H[V],c=H[W],u=H[$]-H[W],0===c&&u>=o.nodeValue.length-1?o.parentNode.removeChild(o):o.deleteData(c,u),H.collapse(F)),e==I)return;return i.length>0&&t.appendChild(M.createTextNode(i)),t}for(o=C(H[V],H[W]),a=H[$]-H[W];o&&a>0;)s=o.nextSibling,l=D(o,e),t&&t.appendChild(l),--a,o=s;return e!=O&&H.collapse(F),t}function k(e,t){var n,i,o,a,s,l;if(t!=I&&(n=r()),i=R(e,t),n&&n.appendChild(i),o=j(e),a=o-H[W],0>=a)return t!=O&&(H.setEndBefore(e),H.collapse(z)),n;for(i=e.previousSibling;a>0;)s=i.previousSibling,l=D(i,t),n&&n.insertBefore(l,n.firstChild),--a,i=s;return t!=O&&(H.setEndBefore(e),H.collapse(z)),n}function S(e,t){var n,i,o,a,s,l;for(t!=I&&(n=r()),o=A(e,t),n&&n.appendChild(o),i=j(e),++i,a=H[$]-i,o=e.nextSibling;o&&a>0;)s=o.nextSibling,l=D(o,t),n&&n.appendChild(l),--a,o=s;return t!=O&&(H.setStartAfter(e),H.collapse(F)),n}function T(e,t,n){var i,o,a,s,l,c,u;for(n!=I&&(o=r()),i=A(e,n),o&&o.appendChild(i),a=j(e),s=j(t),++a,l=s-a,c=e.nextSibling;l>0;)u=c.nextSibling,i=D(c,n),o&&o.appendChild(i),c=u,--l;return i=R(t,n),o&&o.appendChild(i),n!=O&&(H.setStartAfter(e),H.collapse(F)),o}function R(e,t){var n=C(H[U],H[$]-1),r,i,o,a,s,l=n!=H[U];if(n==e)return B(n,l,z,t);for(r=n.parentNode,i=B(r,z,z,t);r;){for(;n;)o=n.previousSibling,a=B(n,l,z,t),t!=I&&i.insertBefore(a,i.firstChild),l=F,n=o;if(r==e)return i;n=r.previousSibling,r=r.parentNode,s=B(r,z,z,t),t!=I&&s.appendChild(i),i=s}}function A(e,t){var n=C(H[V],H[W]),r=n!=H[V],i,o,a,s,l;if(n==e)return B(n,r,F,t);for(i=n.parentNode,o=B(i,z,F,t);i;){for(;n;)a=n.nextSibling,s=B(n,r,F,t),t!=I&&o.appendChild(s),r=F,n=a;if(i==e)return o;n=i.nextSibling,i=i.parentNode,l=B(i,z,F,t),t!=I&&l.appendChild(o),o=l}}function B(e,t,r,i){var o,a,s,l,c;if(t)return D(e,i);if(3==e.nodeType){if(o=e.nodeValue,r?(l=H[W],a=o.substring(l),s=o.substring(0,l)):(l=H[$],a=o.substring(0,l),s=o.substring(l)),i!=O&&(e.nodeValue=s),i==I)return;return c=n.clone(e,z),c.nodeValue=a,c}if(i!=I)return n.clone(e,z)}function D(e,t){return t!=I?t==O?n.clone(e,F):e:void e.parentNode.removeChild(e)}function L(){return n.create("body",null,g()).outerText}var H=this,M=n.doc,P=0,O=1,I=2,F=!0,z=!1,W="startOffset",V="startContainer",U="endContainer",$="endOffset",q=e.extend,j=n.nodeIndex;return q(H,{startContainer:M,startOffset:0,endContainer:M,endOffset:0,collapsed:F,commonAncestorContainer:M,START_TO_START:0,START_TO_END:1,END_TO_END:2,END_TO_START:3,setStart:i,setEnd:o,setStartBefore:a,setStartAfter:s,setEndBefore:l,setEndAfter:c,collapse:u,selectNode:d,selectNodeContents:f,compareBoundaryPoints:p,deleteContents:h,extractContents:m,cloneContents:g,insertNode:v,surroundContents:y,cloneRange:b,toStringIE:L}),H}return t.prototype.toString=function(){return this.toStringIE()},t}),r(g,[u],function(e){function t(e){var t;return t=document.createElement("div"),t.innerHTML=e,t.textContent||t.innerText||e}function n(e,t){var n,r,i,a={};if(e){for(e=e.split(","),t=t||10,n=0;n<e.length;n+=2)r=String.fromCharCode(parseInt(e[n],t)),o[r]||(i="&"+e[n+1]+";",a[r]=i,a[i]=r);return a}}var r=e.makeMap,i,o,a,s=/[&<>\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,l=/[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,c=/[<>&\"\']/g,u=/&(#x|#)?([\w]+);/g,d={128:"\u20ac",130:"\u201a",131:"\u0192",132:"\u201e",133:"\u2026",134:"\u2020",135:"\u2021",136:"\u02c6",137:"\u2030",138:"\u0160",139:"\u2039",140:"\u0152",142:"\u017d",145:"\u2018",146:"\u2019",147:"\u201c",148:"\u201d",149:"\u2022",150:"\u2013",151:"\u2014",152:"\u02dc",153:"\u2122",154:"\u0161",155:"\u203a",156:"\u0153",158:"\u017e",159:"\u0178"};o={'"':"&quot;","'":"&#39;","<":"&lt;",">":"&gt;","&":"&amp;","`":"&#96;"},a={"&lt;":"<","&gt;":">","&amp;":"&","&quot;":'"',"&apos;":"'"},i=n("50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro",32);var f={encodeRaw:function(e,t){return e.replace(t?s:l,function(e){return o[e]||e})},encodeAllRaw:function(e){return(""+e).replace(c,function(e){return o[e]||e})},encodeNumeric:function(e,t){return e.replace(t?s:l,function(e){return e.length>1?"&#"+(1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536)+";":o[e]||"&#"+e.charCodeAt(0)+";"})},encodeNamed:function(e,t,n){return n=n||i,e.replace(t?s:l,function(e){return o[e]||n[e]||e})},getEncodeFunc:function(e,t){function a(e,n){return e.replace(n?s:l,function(e){return o[e]||t[e]||"&#"+e.charCodeAt(0)+";"||e})}function c(e,n){return f.encodeNamed(e,n,t)}return t=n(t)||i,e=r(e.replace(/\+/g,",")),e.named&&e.numeric?a:e.named?t?c:f.encodeNamed:e.numeric?f.encodeNumeric:f.encodeRaw},decode:function(e){return e.replace(u,function(e,n,r){return n?(r=parseInt(r,2===n.length?16:10),r>65535?(r-=65536,String.fromCharCode(55296+(r>>10),56320+(1023&r))):d[r]||String.fromCharCode(r)):a[e]||i[e]||t(e)})}};return f}),r(v,[],function(){return function(e,t){function n(t){e.getElementsByTagName("head")[0].appendChild(t)}function r(t,r,s){function l(){for(var e=v.passed,t=e.length;t--;)e[t]();v.status=2,v.passed=[],v.failed=[]}function c(){for(var e=v.failed,t=e.length;t--;)e[t]();v.status=3,v.passed=[],v.failed=[]}function u(){var e=navigator.userAgent.match(/WebKit\/(\d*)/);return!!(e&&e[1]<536)}function d(e,t){e()||((new Date).getTime()-g<a?window.setTimeout(t,0):c())}function f(){d(function(){for(var t=e.styleSheets,n,r=t.length,i;r--;)if(n=t[r],i=n.ownerNode?n.ownerNode:n.owningElement,i&&i.id===h.id)return l(),!0},f)}function p(){d(function(){try{var e=m.sheet.cssRules;return l(),!!e}catch(t){}},p)}var h,m,g,v;if(o[t]?v=o[t]:(v={passed:[],failed:[]},o[t]=v),r&&v.passed.push(r),s&&v.failed.push(s),1!=v.status){if(2==v.status)return void l();if(3==v.status)return void c();if(v.status=1,h=e.createElement("link"),h.rel="stylesheet",h.type="text/css",h.id="u"+i++,h.async=!1,h.defer=!1,g=(new Date).getTime(),"onload"in h&&!u())h.onload=f,h.onerror=c;else{if(navigator.userAgent.indexOf("Firefox")>0)return m=e.createElement("style"),m.textContent='@import "'+t+'"',p(),void n(m);f()}n(h),h.href=t}}var i=0,o={},a;t=t||{},a=t.maxLoadTime||5e3,this.load=r}}),r(y,[c,f,p,l,h,m,g,d,u,v],function(e,n,r,i,o,a,s,l,c,u){function d(e,t){var n={},r=t.keep_values,i;return i={set:function(n,r,i){t.url_converter&&(r=t.url_converter.call(t.url_converter_scope||e,r,i,n[0])),n.attr("data-mce-"+i,r).attr(i,r)},get:function(e,t){return e.attr("data-mce-"+t)||e.attr(t)}},n={style:{set:function(e,t){return null!==t&&"object"==typeof t?void e.css(t):(r&&e.attr("data-mce-style",t),void e.attr("style",t))},get:function(t){var n=t.attr("data-mce-style")||t.attr("style");return n=e.serializeStyle(e.parseStyle(n),t[0].nodeName)}}},r&&(n.href=n.src=i),n}function f(e,t){var o=this,a;o.doc=e,o.win=window,o.files={},o.counter=0,o.stdMode=!v||e.documentMode>=8,o.boxModel=!v||"CSS1Compat"==e.compatMode||o.stdMode,o.styleSheetLoader=new u(e),o.boundEvents=[],o.settings=t=t||{},o.schema=t.schema,o.styles=new r({url_converter:t.url_converter,url_converter_scope:t.url_converter_scope},t.schema),o.fixDoc(e),o.events=t.ownEvents?new i(t.proxy):i.Event,o.attrHooks=d(o,t),a=t.schema?t.schema.getBlockElements():{},o.$=n.overrideDefaults(function(){return{context:e,element:o.getRoot()}}),o.isBlock=function(e){if(!e)return!1;var t=e.nodeType;return t?!(1!==t||!a[e.nodeName]):!!a[e]}}var p=c.each,h=c.is,m=c.grep,g=c.trim,v=l.ie,y=/^([a-z0-9],?)+$/i,b=/^[ \t\r\n]*$/;return f.prototype={$$:function(e){return"string"==typeof e&&(e=this.get(e)),this.$(e)},root:null,fixDoc:function(e){var t=this.settings,n;if(v&&t.schema){"abbr article aside audio canvas details figcaption figure footer header hgroup mark menu meter nav output progress section summary time video".replace(/\w+/g,function(t){e.createElement(t)});for(n in t.schema.getCustomElements())e.createElement(n)}},clone:function(e,t){var n=this,r,i;return!v||1!==e.nodeType||t?e.cloneNode(t):(i=n.doc,t?r.firstChild:(r=i.createElement(e.nodeName),p(n.getAttribs(e),function(t){n.setAttrib(r,t.nodeName,n.getAttrib(e,t.nodeName))}),r))},getRoot:function(){var e=this;return e.settings.root_element||e.doc.body},getViewPort:function(e){var t,n;return e=e?e:this.win,t=e.document,n=this.boxModel?t.documentElement:t.body,{x:e.pageXOffset||n.scrollLeft,y:e.pageYOffset||n.scrollTop,w:e.innerWidth||n.clientWidth,h:e.innerHeight||n.clientHeight}},getRect:function(e){var t=this,n,r;return e=t.get(e),n=t.getPos(e),r=t.getSize(e),{x:n.x,y:n.y,w:r.w,h:r.h}},getSize:function(e){var t=this,n,r;return e=t.get(e),n=t.getStyle(e,"width"),r=t.getStyle(e,"height"),-1===n.indexOf("px")&&(n=0),-1===r.indexOf("px")&&(r=0),{w:parseInt(n,10)||e.offsetWidth||e.clientWidth,h:parseInt(r,10)||e.offsetHeight||e.clientHeight}},getParent:function(e,t,n){return this.getParents(e,t,n,!1)},getParents:function(e,n,r,i){var o=this,a,s=[];for(e=o.get(e),i=i===t,r=r||("BODY"!=o.getRoot().nodeName?o.getRoot().parentNode:null),h(n,"string")&&(a=n,n="*"===n?function(e){return 1==e.nodeType}:function(e){return o.is(e,a)});e&&e!=r&&e.nodeType&&9!==e.nodeType;){if(!n||n(e)){if(!i)return e;s.push(e)}e=e.parentNode}return i?s:null},get:function(e){var t;return e&&this.doc&&"string"==typeof e&&(t=e,e=this.doc.getElementById(e),e&&e.id!==t)?this.doc.getElementsByName(t)[1]:e},getNext:function(e,t){return this._findSib(e,t,"nextSibling")},getPrev:function(e,t){return this._findSib(e,t,"previousSibling")},select:function(t,n){var r=this;return e(t,r.get(n)||r.settings.root_element||r.doc,[])},is:function(n,r){var i;if(n.length===t){if("*"===r)return 1==n.nodeType;if(y.test(r)){for(r=r.toLowerCase().split(/,/),n=n.nodeName.toLowerCase(),i=r.length-1;i>=0;i--)if(r[i]==n)return!0;return!1}}if(n.nodeType&&1!=n.nodeType)return!1;var o=n.nodeType?[n]:n;return e(r,o[0].ownerDocument||o[0],null,o).length>0},add:function(e,t,n,r,i){var o=this;return this.run(e,function(e){var a;return a=h(t,"string")?o.doc.createElement(t):t,o.setAttribs(a,n),r&&(r.nodeType?a.appendChild(r):o.setHTML(a,r)),i?a:e.appendChild(a)})},create:function(e,t,n){return this.add(this.doc.createElement(e),e,t,n,1)},createHTML:function(e,t,n){var r="",i;r+="<"+e;for(i in t)t.hasOwnProperty(i)&&null!==t[i]&&"undefined"!=typeof t[i]&&(r+=" "+i+'="'+this.encode(t[i])+'"');return"undefined"!=typeof n?r+">"+n+"</"+e+">":r+" />"},createFragment:function(e){var t,n,r=this.doc,i;for(i=r.createElement("div"),t=r.createDocumentFragment(),e&&(i.innerHTML=e);n=i.firstChild;)t.appendChild(n);return t},remove:function(e,t){return e=this.$$(e),t?e.each(function(){for(var e;e=this.firstChild;)3==e.nodeType&&0===e.data.length?this.removeChild(e):this.parentNode.insertBefore(e,this)}).remove():e.remove(),e.length>1?e.toArray():e[0]},setStyle:function(e,t,n){e=this.$$(e).css(t,n),this.settings.update_styles&&e.attr("data-mce-style",null)},getStyle:function(e,n,r){return e=this.$$(e),r?e.css(n):(n=n.replace(/-(\D)/g,function(e,t){return t.toUpperCase()}),"float"==n&&(n=v?"styleFloat":"cssFloat"),e[0]&&e[0].style?e[0].style[n]:t)},setStyles:function(e,t){this.$$(e).css(t)},removeAllAttribs:function(e){return this.run(e,function(e){var t,n=e.attributes;for(t=n.length-1;t>=0;t--)e.removeAttributeNode(n.item(t))})},setAttrib:function(e,t,n){var r=this,i,o,a=r.settings;""===n&&(n=null),e=r.$$(e),i=e.attr(t),e.length&&(o=r.attrHooks[t],o&&o.set?o.set(e,n,t):e.attr(t,n),i!=n&&a.onSetAttrib&&a.onSetAttrib({attrElm:e,attrName:t,attrValue:n}))},setAttribs:function(e,t){var n=this;n.$$(e).each(function(e,r){p(t,function(e,t){n.setAttrib(r,t,e)})})},getAttrib:function(e,t,n){var r=this,i,o;return e=r.$$(e),e.length&&(i=r.attrHooks[t],o=i&&i.get?i.get(e,t):e.attr(t)),"undefined"==typeof o&&(o=n||""),o},getPos:function(e,t){var r=this,i=0,o=0,a,s=r.doc,l=s.body,c;if(e=r.get(e),t=t||l,e){if(t===l&&e.getBoundingClientRect&&"static"===n(l).css("position"))return c=e.getBoundingClientRect(),t=r.boxModel?s.documentElement:l,i=c.left+(s.documentElement.scrollLeft||l.scrollLeft)-t.clientLeft,o=c.top+(s.documentElement.scrollTop||l.scrollTop)-t.clientTop,{x:i,y:o};for(a=e;a&&a!=t&&a.nodeType;)i+=a.offsetLeft||0,o+=a.offsetTop||0,a=a.offsetParent;for(a=e.parentNode;a&&a!=t&&a.nodeType;)i-=a.scrollLeft||0,o-=a.scrollTop||0,a=a.parentNode}return{x:i,y:o}},parseStyle:function(e){return this.styles.parse(e)},serializeStyle:function(e,t){return this.styles.serialize(e,t)},addStyle:function(e){var t=this,n=t.doc,r,i;if(t!==f.DOM&&n===document){var o=f.DOM.addedStyles;if(o=o||[],o[e])return;o[e]=!0,f.DOM.addedStyles=o}i=n.getElementById("mceDefaultStyles"),i||(i=n.createElement("style"),i.id="mceDefaultStyles",i.type="text/css",r=n.getElementsByTagName("head")[0],r.firstChild?r.insertBefore(i,r.firstChild):r.appendChild(i)),i.styleSheet?i.styleSheet.cssText+=e:i.appendChild(n.createTextNode(e))},loadCSS:function(e){var t=this,n=t.doc,r;return t!==f.DOM&&n===document?void f.DOM.loadCSS(e):(e||(e=""),r=n.getElementsByTagName("head")[0],void p(e.split(","),function(e){var i;t.files[e]||(t.files[e]=!0,i=t.create("link",{rel:"stylesheet",href:e}),v&&n.documentMode&&n.recalc&&(i.onload=function(){n.recalc&&n.recalc(),i.onload=null}),r.appendChild(i))}))},addClass:function(e,t){this.$$(e).addClass(t)},removeClass:function(e,t){this.toggleClass(e,t,!1)},hasClass:function(e,t){return this.$$(e).hasClass(t)},toggleClass:function(e,t,r){this.$$(e).toggleClass(t,r).each(function(){""===this.className&&n(this).attr("class",null)})},show:function(e){this.$$(e).show()},hide:function(e){this.$$(e).hide()},isHidden:function(e){return"none"==this.$$(e).css("display")},uniqueId:function(e){return(e?e:"mce_")+this.counter++},setHTML:function(e,t){e=this.$$(e),v?e.each(function(e,r){if(r.canHaveHTML!==!1){for(;r.firstChild;)r.removeChild(r.firstChild);try{r.innerHTML="<br>"+t,r.removeChild(r.firstChild)}catch(i){n("<div>").html("<br>"+t).contents().slice(1).appendTo(r)}return t}}):e.html(t)},getOuterHTML:function(e){return e=this.get(e),1==e.nodeType?e.outerHTML:n("<div>").append(n(e).clone()).html()},setOuterHTML:function(e,t){var r=this;r.$$(e).each(function(){try{this.outerHTML=t}catch(e){r.remove(n(this).html(t),!0)}})},decode:s.decode,encode:s.encodeAllRaw,insertAfter:function(e,t){return t=this.get(t),this.run(e,function(e){var n,r;return n=t.parentNode,r=t.nextSibling,r?n.insertBefore(e,r):n.appendChild(e),e})},replace:function(e,t,n){var r=this;return r.run(t,function(t){return h(t,"array")&&(e=e.cloneNode(!0)),n&&p(m(t.childNodes),function(t){e.appendChild(t)}),t.parentNode.replaceChild(e,t)})},rename:function(e,t){var n=this,r;return e.nodeName!=t.toUpperCase()&&(r=n.create(t),p(n.getAttribs(e),function(t){n.setAttrib(r,t.nodeName,n.getAttrib(e,t.nodeName))}),n.replace(r,e,1)),r||e},findCommonAncestor:function(e,t){for(var n=e,r;n;){for(r=t;r&&n!=r;)r=r.parentNode;if(n==r)break;n=n.parentNode}return!n&&e.ownerDocument?e.ownerDocument.documentElement:n},toHex:function(e){return this.styles.toHex(c.trim(e))},run:function(e,t,n){var r=this,i;return"string"==typeof e&&(e=r.get(e)),e?(n=n||this,e.nodeType||!e.length&&0!==e.length?t.call(n,e):(i=[],p(e,function(e,o){e&&("string"==typeof e&&(e=r.get(e)),i.push(t.call(n,e,o)))}),i)):!1},getAttribs:function(e){var t;if(e=this.get(e),!e)return[];if(v){if(t=[],"OBJECT"==e.nodeName)return e.attributes;"OPTION"===e.nodeName&&this.getAttrib(e,"selected")&&t.push({specified:1,nodeName:"selected"});var n=/<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi;return e.cloneNode(!1).outerHTML.replace(n,"").replace(/[\w:\-]+/gi,function(e){t.push({specified:1,nodeName:e})}),t}return e.attributes},isEmpty:function(e,t){var n=this,r,i,a,s,l,c=0;if(e=e.firstChild){s=new o(e,e.parentNode),t=t||n.schema?n.schema.getNonEmptyElements():null;do{if(a=e.nodeType,1===a){if(e.getAttribute("data-mce-bogus"))continue;if(l=e.nodeName.toLowerCase(),t&&t[l]){if("br"===l){c++;continue}return!1}for(i=n.getAttribs(e),r=i.length;r--;)if(l=i[r].nodeName,"name"===l||"data-mce-bookmark"===l)return!1}if(8==a)return!1;if(3===a&&!b.test(e.nodeValue))return!1}while(e=s.next())}return 1>=c},createRng:function(){var e=this.doc;return e.createRange?e.createRange():new a(this)},nodeIndex:function(e,t){var n=0,r,i;if(e)for(r=e.nodeType,e=e.previousSibling;e;e=e.previousSibling)i=e.nodeType,(!t||3!=i||i!=r&&e.nodeValue.length)&&(n++,r=i);return n},split:function(e,t,n){function r(e){function t(e){var t=e.previousSibling&&"SPAN"==e.previousSibling.nodeName,n=e.nextSibling&&"SPAN"==e.nextSibling.nodeName;return t&&n}var n,o=e.childNodes,a=e.nodeType;if(1!=a||"bookmark"!=e.getAttribute("data-mce-type")){for(n=o.length-1;n>=0;n--)r(o[n]);if(9!=a){if(3==a&&e.nodeValue.length>0){var s=g(e.nodeValue).length;if(!i.isBlock(e.parentNode)||s>0||0===s&&t(e))return}else if(1==a&&(o=e.childNodes,1==o.length&&o[0]&&1==o[0].nodeType&&"bookmark"==o[0].getAttribute("data-mce-type")&&e.parentNode.insertBefore(o[0],e),o.length||/^(br|hr|input|img)$/i.test(e.nodeName)))return;i.remove(e)}return e
+}}var i=this,o=i.createRng(),a,s,l;return e&&t?(o.setStart(e.parentNode,i.nodeIndex(e)),o.setEnd(t.parentNode,i.nodeIndex(t)),a=o.extractContents(),o=i.createRng(),o.setStart(t.parentNode,i.nodeIndex(t)+1),o.setEnd(e.parentNode,i.nodeIndex(e)+1),s=o.extractContents(),l=e.parentNode,l.insertBefore(r(a),e),n?l.replaceChild(n,t):l.insertBefore(t,e),l.insertBefore(r(s),e),i.remove(e),n||t):void 0},bind:function(e,t,n,r){var i=this;if(c.isArray(e)){for(var o=e.length;o--;)e[o]=i.bind(e[o],t,n,r);return e}return!i.settings.collect||e!==i.doc&&e!==i.win||i.boundEvents.push([e,t,n,r]),i.events.bind(e,t,n,r||i)},unbind:function(e,t,n){var r=this,i;if(c.isArray(e)){for(i=e.length;i--;)e[i]=r.unbind(e[i],t,n);return e}if(r.boundEvents&&(e===r.doc||e===r.win))for(i=r.boundEvents.length;i--;){var o=r.boundEvents[i];e!=o[0]||t&&t!=o[1]||n&&n!=o[2]||this.events.unbind(o[0],o[1],o[2])}return this.events.unbind(e,t,n)},fire:function(e,t,n){return this.events.fire(e,t,n)},getContentEditable:function(e){var t;return e&&1==e.nodeType?(t=e.getAttribute("data-mce-contenteditable"),t&&"inherit"!==t?t:"inherit"!==e.contentEditable?e.contentEditable:null):null},getContentEditableParent:function(e){for(var t=this.getRoot(),n=null;e&&e!==t&&(n=this.getContentEditable(e),null===n);e=e.parentNode);return n},destroy:function(){var t=this;if(t.boundEvents){for(var n=t.boundEvents.length;n--;){var r=t.boundEvents[n];this.events.unbind(r[0],r[1],r[2])}t.boundEvents=null}e.setDocument&&e.setDocument(),t.win=t.doc=t.root=t.events=t.frag=null},isChildOf:function(e,t){for(;e;){if(t===e)return!0;e=e.parentNode}return!1},dumpRng:function(e){return"startContainer: "+e.startContainer.nodeName+", startOffset: "+e.startOffset+", endContainer: "+e.endContainer.nodeName+", endOffset: "+e.endOffset},_findSib:function(e,t,n){var r=this,i=t;if(e)for("string"==typeof i&&(i=function(e){return r.is(e,t)}),e=e[n];e;e=e[n])if(i(e))return e;return null}},f.DOM=new f(document),f}),r(b,[y,u],function(e,t){function n(){function e(e,t){function n(){o.remove(s),a&&(a.onreadystatechange=a.onload=a=null),t()}function i(){"undefined"!=typeof console&&console.log&&console.log("Failed to load: "+e)}var o=r,a,s;s=o.uniqueId(),a=document.createElement("script"),a.id=s,a.type="text/javascript",a.src=e,"onreadystatechange"in a?a.onreadystatechange=function(){/loaded|complete/.test(a.readyState)&&n()}:a.onload=n,a.onerror=i,(document.getElementsByTagName("head")[0]||document.body).appendChild(a)}var t=0,n=1,a=2,s={},l=[],c={},u=[],d=0,f;this.isDone=function(e){return s[e]==a},this.markDone=function(e){s[e]=a},this.add=this.load=function(e,n,r){var i=s[e];i==f&&(l.push(e),s[e]=t),n&&(c[e]||(c[e]=[]),c[e].push({func:n,scope:r||this}))},this.loadQueue=function(e,t){this.loadScripts(l,e,t)},this.loadScripts=function(t,r,l){function p(e){i(c[e],function(e){e.func.call(e.scope)}),c[e]=f}var h;u.push({func:r,scope:l||this}),(h=function(){var r=o(t);t.length=0,i(r,function(t){return s[t]==a?void p(t):void(s[t]!=n&&(s[t]=n,d++,e(t,function(){s[t]=a,d--,p(t),h()})))}),d||(i(u,function(e){e.func.call(e.scope)}),u.length=0)})()}}var r=e.DOM,i=t.each,o=t.grep;return n.ScriptLoader=new n,n}),r(C,[b,u],function(e,n){function r(){var e=this;e.items=[],e.urls={},e.lookup={}}var i=n.each;return r.prototype={get:function(e){return this.lookup[e]?this.lookup[e].instance:t},dependencies:function(e){var t;return this.lookup[e]&&(t=this.lookup[e].dependencies),t||[]},requireLangPack:function(t,n){var i=r.language;if(i&&r.languageLoad!==!1){if(n)if(n=","+n+",",-1!=n.indexOf(","+i.substr(0,2)+","))i=i.substr(0,2);else if(-1==n.indexOf(","+i+","))return;e.ScriptLoader.add(this.urls[t]+"/langs/"+i+".js")}},add:function(e,t,n){return this.items.push(t),this.lookup[e]={instance:t,dependencies:n},t},createUrl:function(e,t){return"object"==typeof t?t:{prefix:e.prefix,resource:t,suffix:e.suffix}},addComponents:function(t,n){var r=this.urls[t];i(n,function(t){e.ScriptLoader.add(r+"/"+t)})},load:function(n,o,a,s){function l(){var r=c.dependencies(n);i(r,function(e){var n=c.createUrl(o,e);c.load(n.resource,n,t,t)}),a&&a.call(s?s:e)}var c=this,u=o;c.urls[n]||("object"==typeof o&&(u=o.prefix+o.resource+o.suffix),0!==u.indexOf("/")&&-1==u.indexOf("://")&&(u=r.baseURL+"/"+u),c.urls[n]=u.substring(0,u.lastIndexOf("/")),c.lookup[n]?l():e.ScriptLoader.add(u,l,s))}},r.PluginManager=new r,r.ThemeManager=new r,r}),r(x,[u,h],function(e,t){function n(e,t){var n=e.childNodes;return t--,t>n.length-1?t=n.length-1:0>t&&(t=0),n[t]||e}function r(e){this.walk=function(t,r){function o(e){var t;return t=e[0],3===t.nodeType&&t===c&&u>=t.nodeValue.length&&e.splice(0,1),t=e[e.length-1],0===f&&e.length>0&&t===d&&3===t.nodeType&&e.splice(e.length-1,1),e}function a(e,t,n){for(var r=[];e&&e!=n;e=e[t])r.push(e);return r}function s(e,t){do{if(e.parentNode==t)return e;e=e.parentNode}while(e)}function l(e,t,n){var i=n?"nextSibling":"previousSibling";for(g=e,v=g.parentNode;g&&g!=t;g=v)v=g.parentNode,y=a(g==e?g:g[i],i),y.length&&(n||y.reverse(),r(o(y)))}var c=t.startContainer,u=t.startOffset,d=t.endContainer,f=t.endOffset,p,h,m,g,v,y,b;if(b=e.select("td.mce-item-selected,th.mce-item-selected"),b.length>0)return void i(b,function(e){r([e])});if(1==c.nodeType&&c.hasChildNodes()&&(c=c.childNodes[u]),1==d.nodeType&&d.hasChildNodes()&&(d=n(d,f)),c==d)return r(o([c]));for(p=e.findCommonAncestor(c,d),g=c;g;g=g.parentNode){if(g===d)return l(c,p,!0);if(g===p)break}for(g=d;g;g=g.parentNode){if(g===c)return l(d,p);if(g===p)break}h=s(c,p)||c,m=s(d,p)||d,l(c,h,!0),y=a(h==c?h:h.nextSibling,"nextSibling",m==d?m.nextSibling:m),y.length&&r(o(y)),l(d,m)},this.split=function(e){function t(e,t){return e.splitText(t)}var n=e.startContainer,r=e.startOffset,i=e.endContainer,o=e.endOffset;return n==i&&3==n.nodeType?r>0&&r<n.nodeValue.length&&(i=t(n,r),n=i.previousSibling,o>r?(o-=r,n=i=t(i,o).previousSibling,o=i.nodeValue.length,r=0):o=0):(3==n.nodeType&&r>0&&r<n.nodeValue.length&&(n=t(n,r),r=0),3==i.nodeType&&o>0&&o<i.nodeValue.length&&(i=t(i,o).previousSibling,o=i.nodeValue.length)),{startContainer:n,startOffset:r,endContainer:i,endOffset:o}},this.normalize=function(n){function r(r){function a(n,r){for(var i=new t(n,e.getParent(n.parentNode,e.isBlock)||f);n=i[r?"prev":"next"]();)if("BR"===n.nodeName)return!0}function s(e,t){return e.previousSibling&&e.previousSibling.nodeName==t}function l(n,r){var a,s,l;if(r=r||c,l=e.getParent(r.parentNode,e.isBlock)||f,n&&"BR"==r.nodeName&&g&&e.isEmpty(l))return c=r.parentNode,u=e.nodeIndex(r),void(i=!0);for(a=new t(r,l);p=a[n?"prev":"next"]();){if("false"===e.getContentEditableParent(p))return;if(3===p.nodeType&&p.nodeValue.length>0)return c=p,u=n?p.nodeValue.length:0,void(i=!0);if(e.isBlock(p)||h[p.nodeName.toLowerCase()])return;s=p}o&&s&&(c=s,i=!0,u=0)}var c,u,d,f=e.getRoot(),p,h,m,g;if(c=n[(r?"start":"end")+"Container"],u=n[(r?"start":"end")+"Offset"],g=1==c.nodeType&&u===c.childNodes.length,h=e.schema.getNonEmptyElements(),m=r,1==c.nodeType&&u>c.childNodes.length-1&&(m=!1),9===c.nodeType&&(c=e.getRoot(),u=0),c===f){if(m&&(p=c.childNodes[u>0?u-1:0],p&&(h[p.nodeName]||"TABLE"==p.nodeName)))return;if(c.hasChildNodes()&&(u=Math.min(!m&&u>0?u-1:u,c.childNodes.length-1),c=c.childNodes[u],u=0,c.hasChildNodes()&&!/TABLE/.test(c.nodeName))){p=c,d=new t(c,f);do{if(3===p.nodeType&&p.nodeValue.length>0){u=m?0:p.nodeValue.length,c=p,i=!0;break}if(h[p.nodeName.toLowerCase()]){u=e.nodeIndex(p),c=p.parentNode,"IMG"!=p.nodeName||m||u++,i=!0;break}}while(p=m?d.next():d.prev())}}o&&(3===c.nodeType&&0===u&&l(!0),1===c.nodeType&&(p=c.childNodes[u],p||(p=c.childNodes[u-1]),!p||"BR"!==p.nodeName||s(p,"A")||a(p)||a(p,!0)||l(!0,p))),m&&!o&&3===c.nodeType&&u===c.nodeValue.length&&l(!1),i&&n["set"+(r?"Start":"End")](c,u)}var i,o;return o=n.collapsed,r(!0),o||r(),i&&o&&n.collapse(!0),i}}var i=e.each;return r.compareRanges=function(e,t){if(e&&t){if(!e.item&&!e.duplicate)return e.startContainer==t.startContainer&&e.startOffset==t.startOffset;if(e.item&&t.item&&e.item(0)===t.item(0))return!0;if(e.isEqual&&t.isEqual&&t.isEqual(e))return!0}return!1},r}),r(w,[x],function(e){return function(t){function n(e){var n,r;if(r=t.$(e).parentsUntil(t.getBody()).add(e),r.length===i.length){for(n=r.length;n>=0&&r[n]===i[n];n--);if(-1===n)return i=r,!0}return i=r,!1}var r,i=[];"onselectionchange"in t.getDoc()||t.on("NodeChange Click MouseUp KeyUp Focus",function(n){var i,o;i=t.selection.getRng(),o={startContainer:i.startContainer,startOffset:i.startOffset,endContainer:i.endContainer,endOffset:i.endOffset},"nodechange"!=n.type&&e.compareRanges(o,r)||t.fire("SelectionChange"),r=o}),t.on("contextmenu",function(){t.fire("SelectionChange")}),t.on("SelectionChange",function(){var e=t.selection.getStart(!0);!n(e)&&t.dom.isChildOf(e,t.getBody())&&t.nodeChanged({selectionChange:!0})}),t.on("MouseUp",function(e){e.isDefaultPrevented()||t.nodeChanged()}),this.nodeChanged=function(e){var n=t.selection,r,i,o;!t.initialized||t.settings.disable_nodechange||t.settings.readonly||(o=t.getBody(),r=n.getStart()||o,r=r.ownerDocument!=t.getDoc()?t.getBody():r,"IMG"==r.nodeName&&n.isCollapsed()&&(r=r.parentNode),i=[],t.dom.getParent(r,function(e){return e===o?!0:void i.push(e)}),e=e||{},e.element=r,e.parents=i,t.fire("NodeChange",e))}}}),r(_,[],function(){function e(e,t,n){var r,i,o=n?"lastChild":"firstChild",a=n?"prev":"next";if(e[o])return e[o];if(e!==t){if(r=e[a])return r;for(i=e.parent;i&&i!==t;i=i.parent)if(r=i[a])return r}}function t(e,t){this.name=e,this.type=t,1===t&&(this.attributes=[],this.attributes.map={})}var n=/^[ \t\r\n]*$/,r={"#text":3,"#comment":8,"#cdata":4,"#pi":7,"#doctype":10,"#document-fragment":11};return t.prototype={replace:function(e){var t=this;return e.parent&&e.remove(),t.insert(e,t),t.remove(),t},attr:function(e,t){var n=this,r,i,o;if("string"!=typeof e){for(i in e)n.attr(i,e[i]);return n}if(r=n.attributes){if(t!==o){if(null===t){if(e in r.map)for(delete r.map[e],i=r.length;i--;)if(r[i].name===e)return r=r.splice(i,1),n;return n}if(e in r.map){for(i=r.length;i--;)if(r[i].name===e){r[i].value=t;break}}else r.push({name:e,value:t});return r.map[e]=t,n}return r.map[e]}},clone:function(){var e=this,n=new t(e.name,e.type),r,i,o,a,s;if(o=e.attributes){for(s=[],s.map={},r=0,i=o.length;i>r;r++)a=o[r],"id"!==a.name&&(s[s.length]={name:a.name,value:a.value},s.map[a.name]=a.value);n.attributes=s}return n.value=e.value,n.shortEnded=e.shortEnded,n},wrap:function(e){var t=this;return t.parent.insert(e,t),e.append(t),t},unwrap:function(){var e=this,t,n;for(t=e.firstChild;t;)n=t.next,e.insert(t,e,!0),t=n;e.remove()},remove:function(){var e=this,t=e.parent,n=e.next,r=e.prev;return t&&(t.firstChild===e?(t.firstChild=n,n&&(n.prev=null)):r.next=n,t.lastChild===e?(t.lastChild=r,r&&(r.next=null)):n.prev=r,e.parent=e.next=e.prev=null),e},append:function(e){var t=this,n;return e.parent&&e.remove(),n=t.lastChild,n?(n.next=e,e.prev=n,t.lastChild=e):t.lastChild=t.firstChild=e,e.parent=t,e},insert:function(e,t,n){var r;return e.parent&&e.remove(),r=t.parent||this,n?(t===r.firstChild?r.firstChild=e:t.prev.next=e,e.prev=t.prev,e.next=t,t.prev=e):(t===r.lastChild?r.lastChild=e:t.next.prev=e,e.next=t.next,e.prev=t,t.next=e),e.parent=r,e},getAll:function(t){var n=this,r,i=[];for(r=n.firstChild;r;r=e(r,n))r.name===t&&i.push(r);return i},empty:function(){var t=this,n,r,i;if(t.firstChild){for(n=[],i=t.firstChild;i;i=e(i,t))n.push(i);for(r=n.length;r--;)i=n[r],i.parent=i.firstChild=i.lastChild=i.next=i.prev=null}return t.firstChild=t.lastChild=null,t},isEmpty:function(t){var r=this,i=r.firstChild,o,a;if(i)do{if(1===i.type){if(i.attributes.map["data-mce-bogus"])continue;if(t[i.name])return!1;for(o=i.attributes.length;o--;)if(a=i.attributes[o].name,"name"===a||0===a.indexOf("data-mce-"))return!1}if(8===i.type)return!1;if(3===i.type&&!n.test(i.value))return!1}while(i=e(i,r));return!0},walk:function(t){return e(this,null,t)}},t.create=function(e,n){var i,o;if(i=new t(e,r[e]||1),n)for(o in n)i.attr(o,n[o]);return i},t}),r(E,[u],function(e){function t(e,t){return e?e.split(t||" "):[]}function n(e){function n(e,n,r){function i(e,t){var n={},r,i;for(r=0,i=e.length;i>r;r++)n[e[r]]=t||{};return n}var s,c,u,d=arguments;for(r=r||[],n=n||"","string"==typeof r&&(r=t(r)),c=3;c<d.length;c++)"string"==typeof d[c]&&(d[c]=t(d[c])),r.push.apply(r,d[c]);for(e=t(e),s=e.length;s--;)u=[].concat(l,t(n)),a[e[s]]={attributes:i(u),attributesOrder:u,children:i(r,o)}}function r(e,n){var r,i,o,s;for(e=t(e),r=e.length,n=t(n);r--;)for(i=a[e[r]],o=0,s=n.length;s>o;o++)i.attributes[n[o]]={},i.attributesOrder.push(n[o])}var a={},l,c,u,d,f,p;return i[e]?i[e]:(l=t("id accesskey class dir lang style tabindex title"),c=t("address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul"),u=t("a abbr b bdo br button cite code del dfn em embed i iframe img input ins kbd label map noscript object q s samp script select small span strong sub sup textarea u var #text #comment"),"html4"!=e&&(l.push.apply(l,t("contenteditable contextmenu draggable dropzone hidden spellcheck translate")),c.push.apply(c,t("article aside details dialog figure header footer hgroup section nav")),u.push.apply(u,t("audio canvas command datalist mark meter output progress time wbr video ruby bdi keygen"))),"html5-strict"!=e&&(l.push("xml:lang"),p=t("acronym applet basefont big font strike tt"),u.push.apply(u,p),s(p,function(e){n(e,"",u)}),f=t("center dir isindex noframes"),c.push.apply(c,f),d=[].concat(c,u),s(f,function(e){n(e,"",d)})),d=d||[].concat(c,u),n("html","manifest","head body"),n("head","","base command link meta noscript script style title"),n("title hr noscript br"),n("base","href target"),n("link","href rel media hreflang type sizes hreflang"),n("meta","name http-equiv content charset"),n("style","media type scoped"),n("script","src async defer type charset"),n("body","onafterprint onbeforeprint onbeforeunload onblur onerror onfocus onhashchange onload onmessage onoffline ononline onpagehide onpageshow onpopstate onresize onscroll onstorage onunload",d),n("address dt dd div caption","",d),n("h1 h2 h3 h4 h5 h6 pre p abbr code var samp kbd sub sup i b u bdo span legend em strong small s cite dfn","",u),n("blockquote","cite",d),n("ol","reversed start type","li"),n("ul","","li"),n("li","value",d),n("dl","","dt dd"),n("a","href target rel media hreflang type",u),n("q","cite",u),n("ins del","cite datetime",d),n("img","src alt usemap ismap width height"),n("iframe","src name width height",d),n("embed","src type width height"),n("object","data type typemustmatch name usemap form width height",d,"param"),n("param","name value"),n("map","name",d,"area"),n("area","alt coords shape href target rel media hreflang type"),n("table","border","caption colgroup thead tfoot tbody tr"+("html4"==e?" col":"")),n("colgroup","span","col"),n("col","span"),n("tbody thead tfoot","","tr"),n("tr","","td th"),n("td","colspan rowspan headers",d),n("th","colspan rowspan headers scope abbr",d),n("form","accept-charset action autocomplete enctype method name novalidate target",d),n("fieldset","disabled form name",d,"legend"),n("label","form for",u),n("input","accept alt autocomplete checked dirname disabled form formaction formenctype formmethod formnovalidate formtarget height list max maxlength min multiple name pattern readonly required size src step type value width"),n("button","disabled form formaction formenctype formmethod formnovalidate formtarget name type value","html4"==e?d:u),n("select","disabled form multiple name required size","option optgroup"),n("optgroup","disabled label","option"),n("option","disabled label selected value"),n("textarea","cols dirname disabled form maxlength name readonly required rows wrap"),n("menu","type label",d,"li"),n("noscript","",d),"html4"!=e&&(n("wbr"),n("ruby","",u,"rt rp"),n("figcaption","",d),n("mark rt rp summary bdi","",u),n("canvas","width height",d),n("video","src crossorigin poster preload autoplay mediagroup loop muted controls width height buffered",d,"track source"),n("audio","src crossorigin preload autoplay mediagroup loop muted controls buffered volume",d,"track source"),n("source","src type media"),n("track","kind src srclang label default"),n("datalist","",u,"option"),n("article section nav aside header footer","",d),n("hgroup","","h1 h2 h3 h4 h5 h6"),n("figure","",d,"figcaption"),n("time","datetime",u),n("dialog","open",d),n("command","type label icon disabled checked radiogroup command"),n("output","for form name",u),n("progress","value max",u),n("meter","value min max low high optimum",u),n("details","open",d,"summary"),n("keygen","autofocus challenge disabled form keytype name")),"html5-strict"!=e&&(r("script","language xml:space"),r("style","xml:space"),r("object","declare classid code codebase codetype archive standby align border hspace vspace"),r("embed","align name hspace vspace"),r("param","valuetype type"),r("a","charset name rev shape coords"),r("br","clear"),r("applet","codebase archive code object alt name width height align hspace vspace"),r("img","name longdesc align border hspace vspace"),r("iframe","longdesc frameborder marginwidth marginheight scrolling align"),r("font basefont","size color face"),r("input","usemap align"),r("select","onchange"),r("textarea"),r("h1 h2 h3 h4 h5 h6 div p legend caption","align"),r("ul","type compact"),r("li","type"),r("ol dl menu dir","compact"),r("pre","width xml:space"),r("hr","align noshade size width"),r("isindex","prompt"),r("table","summary width frame rules cellspacing cellpadding align bgcolor"),r("col","width align char charoff valign"),r("colgroup","width align char charoff valign"),r("thead","align char charoff valign"),r("tr","align char charoff valign bgcolor"),r("th","axis align char charoff valign nowrap bgcolor width height"),r("form","accept"),r("td","abbr axis scope align char charoff valign nowrap bgcolor width height"),r("tfoot","align char charoff valign"),r("tbody","align char charoff valign"),r("area","nohref"),r("body","background bgcolor text link vlink alink")),"html4"!=e&&(r("input button select textarea","autofocus"),r("input textarea","placeholder"),r("a","download"),r("link script img","crossorigin"),r("iframe","sandbox seamless allowfullscreen")),s(t("a form meter progress dfn"),function(e){a[e]&&delete a[e].children[e]}),delete a.caption.children.table,i[e]=a,a)}function r(e,t){var n;return e&&(n={},"string"==typeof e&&(e={"*":e}),s(e,function(e,r){n[r]="map"==t?a(e,/[, ]/):c(e,/[, ]/)})),n}var i={},o={},a=e.makeMap,s=e.each,l=e.extend,c=e.explode,u=e.inArray;return function(e){function o(t,n,r){var o=e[t];return o?o=a(o,/[, ]/,a(o.toUpperCase(),/[, ]/)):(o=i[t],o||(o=a(n," ",a(n.toUpperCase()," ")),o=l(o,r),i[t]=o)),o}function d(e){return new RegExp("^"+e.replace(/([?+*])/g,".$1")+"$")}function f(e){var n,r,i,o,s,l,c,f,p,h,m,g,v,b,x,w,_,E,N,k=/^([#+\-])?([^\[!\/]+)(?:\/([^\[!]+))?(?:(!?)\[([^\]]+)\])?$/,S=/^([!\-])?(\w+::\w+|[^=:<]+)?(?:([=:<])(.*))?$/,T=/[*?+]/;if(e)for(e=t(e,","),y["@"]&&(w=y["@"].attributes,_=y["@"].attributesOrder),n=0,r=e.length;r>n;n++)if(s=k.exec(e[n])){if(b=s[1],p=s[2],x=s[3],f=s[5],g={},v=[],l={attributes:g,attributesOrder:v},"#"===b&&(l.paddEmpty=!0),"-"===b&&(l.removeEmpty=!0),"!"===s[4]&&(l.removeEmptyAttrs=!0),w){for(E in w)g[E]=w[E];v.push.apply(v,_)}if(f)for(f=t(f,"|"),i=0,o=f.length;o>i;i++)if(s=S.exec(f[i])){if(c={},m=s[1],h=s[2].replace(/::/g,":"),b=s[3],N=s[4],"!"===m&&(l.attributesRequired=l.attributesRequired||[],l.attributesRequired.push(h),c.required=!0),"-"===m){delete g[h],v.splice(u(v,h),1);continue}b&&("="===b&&(l.attributesDefault=l.attributesDefault||[],l.attributesDefault.push({name:h,value:N}),c.defaultValue=N),":"===b&&(l.attributesForced=l.attributesForced||[],l.attributesForced.push({name:h,value:N}),c.forcedValue=N),"<"===b&&(c.validValues=a(N,"?"))),T.test(h)?(l.attributePatterns=l.attributePatterns||[],c.pattern=d(h),l.attributePatterns.push(c)):(g[h]||v.push(h),g[h]=c)}w||"@"!=p||(w=g,_=v),x&&(l.outputName=p,y[x]=l),T.test(p)?(l.pattern=d(p),C.push(l)):y[p]=l}}function p(e){y={},C=[],f(e),s(_,function(e,t){b[t]=e.children})}function h(e){var n=/^(~)?(.+)$/;e&&(i.text_block_elements=i.block_elements=null,s(t(e,","),function(e){var t=n.exec(e),r="~"===t[1],i=r?"span":"div",o=t[2];if(b[o]=b[i],L[o]=i,r||(R[o.toUpperCase()]={},R[o]={}),!y[o]){var a=y[i];a=l({},a),delete a.removeEmptyAttrs,delete a.removeEmpty,y[o]=a}s(b,function(e,t){e[i]&&(b[t]=e=l({},b[t]),e[o]=e[i])})}))}function m(e){var n=/^([+\-]?)(\w+)\[([^\]]+)\]$/;e&&s(t(e,","),function(e){var r=n.exec(e),i,o;r&&(o=r[1],i=o?b[r[2]]:b[r[2]]={"#comment":{}},i=b[r[2]],s(t(r[3],"|"),function(e){"-"===o?(b[r[2]]=i=l({},b[r[2]]),delete i[e]):i[e]={}}))})}function g(e){var t=y[e],n;if(t)return t;for(n=C.length;n--;)if(t=C[n],t.pattern.test(e))return t}var v=this,y={},b={},C=[],x,w,_,E,N,k,S,T,R,A,B,D,L={},H={};e=e||{},_=n(e.schema),e.verify_html===!1&&(e.valid_elements="*[*]"),x=r(e.valid_styles),w=r(e.invalid_styles,"map"),T=r(e.valid_classes,"map"),E=o("whitespace_elements","pre script noscript style textarea video audio iframe object"),N=o("self_closing_elements","colgroup dd dt li option p td tfoot th thead tr"),k=o("short_ended_elements","area base basefont br col frame hr img input isindex link meta param embed source wbr track"),S=o("boolean_attributes","checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls"),A=o("non_empty_elements","td th iframe video audio object script",k),B=o("text_block_elements","h1 h2 h3 h4 h5 h6 p div address pre form blockquote center dir fieldset header footer article section hgroup aside nav figure"),R=o("block_elements","hr table tbody thead tfoot th tr td li ol ul caption dl dt dd noscript menu isindex option datalist select optgroup",B),D=o("text_inline_elements","span strong b em i font strike u var cite dfn code mark q sup sub samp"),s((e.special||"script noscript style textarea").split(" "),function(e){H[e]=new RegExp("</"+e+"[^>]*>","gi")}),e.valid_elements?p(e.valid_elements):(s(_,function(e,t){y[t]={attributes:e.attributes,attributesOrder:e.attributesOrder},b[t]=e.children}),"html5"!=e.schema&&s(t("strong/b em/i"),function(e){e=t(e,"/"),y[e[1]].outputName=e[0]}),y.img.attributesDefault=[{name:"alt",value:""}],s(t("ol ul sub sup blockquote span font a table tbody tr strong em b i"),function(e){y[e]&&(y[e].removeEmpty=!0)}),s(t("p h1 h2 h3 h4 h5 h6 th td pre div address caption"),function(e){y[e].paddEmpty=!0}),s(t("span"),function(e){y[e].removeEmptyAttrs=!0})),h(e.custom_elements),m(e.valid_children),f(e.extended_valid_elements),m("+ol[ul|ol],+ul[ul|ol]"),e.invalid_elements&&s(c(e.invalid_elements),function(e){y[e]&&delete y[e]}),g("span")||f("span[!data-mce-type|*]"),v.children=b,v.getValidStyles=function(){return x},v.getInvalidStyles=function(){return w},v.getValidClasses=function(){return T},v.getBoolAttrs=function(){return S},v.getBlockElements=function(){return R},v.getTextBlockElements=function(){return B},v.getTextInlineElements=function(){return D},v.getShortEndedElements=function(){return k},v.getSelfClosingElements=function(){return N},v.getNonEmptyElements=function(){return A},v.getWhiteSpaceElements=function(){return E},v.getSpecialElements=function(){return H},v.isValidChild=function(e,t){var n=b[e];return!(!n||!n[t])},v.isValid=function(e,t){var n,r,i=g(e);if(i){if(!t)return!0;if(i.attributes[t])return!0;if(n=i.attributePatterns)for(r=n.length;r--;)if(n[r].pattern.test(e))return!0}return!1},v.getElementRule=g,v.getCustomElements=function(){return L},v.addValidElements=f,v.setValidElements=p,v.addCustomElements=h,v.addValidChildren=m,v.elements=y}}),r(N,[E,g,u],function(e,t,n){function r(e,t,n){var r=1,i,o,a,s;for(s=e.getShortEndedElements(),a=/<([!?\/])?([A-Za-z0-9\-_\:\.]+)((?:\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\/|\s+)>/g,a.lastIndex=i=n;o=a.exec(t);){if(i=a.lastIndex,"/"===o[1])r--;else if(!o[1]){if(o[2]in s)continue;r++}if(0===r)break}return i}function i(i,a){function s(){}var l=this;i=i||{},l.schema=a=a||new e,i.fix_self_closing!==!1&&(i.fix_self_closing=!0),o("comment cdata text start end pi doctype".split(" "),function(e){e&&(l[e]=i[e]||s)}),l.parse=function(e){function o(e){var t,n;for(t=p.length;t--&&p[t].name!==e;);if(t>=0){for(n=p.length-1;n>=t;n--)e=p[n],e.valid&&l.end(e.name);p.length=t}}function s(e,t,n,r,o){var a,s,l=/[\s\u0000-\u001F]+/g;if(t=t.toLowerCase(),n=t in x?t:z(n||r||o||""),_&&!y&&0!==t.indexOf("data-")){if(a=T[t],!a&&R){for(s=R.length;s--&&(a=R[s],!a.pattern.test(t)););-1===s&&(a=null)}if(!a)return;if(a.validValues&&!(n in a.validValues))return}if(V[t]&&!i.allow_script_urls){var c=n.replace(l,"");try{c=decodeURIComponent(c)}catch(u){c=unescape(c)}if(U.test(c))return;if(!i.allow_html_data_urls&&$.test(c)&&!/^data:image\//i.test(c))return}h.map[t]=n,h.push({name:t,value:n})}var l=this,c,u=0,d,f,p=[],h,m,g,v,y,b,C,x,w,_,E,N,k,S,T,R,A,B,D,L,H,M,P,O,I,F=0,z=t.decode,W,V=n.makeMap("src,href,data,background,formaction,poster"),U=/((java|vb)script|mhtml):/i,$=/^data:/i;for(M=new RegExp("<(?:(?:!--([\\w\\W]*?)-->)|(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|(?:!DOCTYPE([\\w\\W]*?)>)|(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|(?:\\/([^>]+)>)|(?:([A-Za-z0-9\\-_\\:\\.]+)((?:\\s+[^\"'>]+(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>]*))*|\\/|\\s+)>))","g"),P=/([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g,C=a.getShortEndedElements(),H=i.self_closing_elements||a.getSelfClosingElements(),x=a.getBoolAttrs(),_=i.validate,b=i.remove_internals,W=i.fix_self_closing,O=a.getSpecialElements();c=M.exec(e);){if(u<c.index&&l.text(z(e.substr(u,c.index-u))),d=c[6])d=d.toLowerCase(),":"===d.charAt(0)&&(d=d.substr(1)),o(d);else if(d=c[7]){if(d=d.toLowerCase(),":"===d.charAt(0)&&(d=d.substr(1)),w=d in C,W&&H[d]&&p.length>0&&p[p.length-1].name===d&&o(d),!_||(E=a.getElementRule(d))){if(N=!0,_&&(T=E.attributes,R=E.attributePatterns),(S=c[8])?(y=-1!==S.indexOf("data-mce-type"),y&&b&&(N=!1),h=[],h.map={},S.replace(P,s)):(h=[],h.map={}),_&&!y){if(A=E.attributesRequired,B=E.attributesDefault,D=E.attributesForced,L=E.removeEmptyAttrs,L&&!h.length&&(N=!1),D)for(m=D.length;m--;)k=D[m],v=k.name,I=k.value,"{$uid}"===I&&(I="mce_"+F++),h.map[v]=I,h.push({name:v,value:I});if(B)for(m=B.length;m--;)k=B[m],v=k.name,v in h.map||(I=k.value,"{$uid}"===I&&(I="mce_"+F++),h.map[v]=I,h.push({name:v,value:I}));if(A){for(m=A.length;m--&&!(A[m]in h.map););-1===m&&(N=!1)}if(k=h.map["data-mce-bogus"]){if("all"===k){u=r(a,e,M.lastIndex),M.lastIndex=u;continue}N=!1}}N&&l.start(d,h,w)}else N=!1;if(f=O[d]){f.lastIndex=u=c.index+c[0].length,(c=f.exec(e))?(N&&(g=e.substr(u,c.index-u)),u=c.index+c[0].length):(g=e.substr(u),u=e.length),N&&(g.length>0&&l.text(g,!0),l.end(d)),M.lastIndex=u;continue}w||(S&&S.indexOf("/")==S.length-1?N&&l.end(d):p.push({name:d,valid:N}))}else(d=c[1])?(">"===d.charAt(0)&&(d=" "+d),i.allow_conditional_comments||"[if"!==d.substr(0,3)||(d=" "+d),l.comment(d)):(d=c[2])?l.cdata(d):(d=c[3])?l.doctype(d):(d=c[4])&&l.pi(d,c[5]);u=c.index+c[0].length}for(u<e.length&&l.text(z(e.substr(u))),m=p.length-1;m>=0;m--)d=p[m],d.valid&&l.end(d.name)}}var o=n.each;return i.findEndTag=r,i}),r(k,[_,E,N,u],function(e,t,n,r){var i=r.makeMap,o=r.each,a=r.explode,s=r.extend;return function(r,l){function c(t){var n,r,o,a,s,c,d,f,p,h,m,g,v,y;for(m=i("tr,td,th,tbody,thead,tfoot,table"),h=l.getNonEmptyElements(),g=l.getTextBlockElements(),n=0;n<t.length;n++)if(r=t[n],r.parent&&!r.fixed)if(g[r.name]&&"li"==r.parent.name){for(v=r.next;v&&g[v.name];)v.name="li",v.fixed=!0,r.parent.insert(v,r.parent),v=v.next;r.unwrap(r)}else{for(a=[r],o=r.parent;o&&!l.isValidChild(o.name,r.name)&&!m[o.name];o=o.parent)a.push(o);if(o&&a.length>1){for(a.reverse(),s=c=u.filterNode(a[0].clone()),p=0;p<a.length-1;p++){for(l.isValidChild(c.name,a[p].name)?(d=u.filterNode(a[p].clone()),c.append(d)):d=c,f=a[p].firstChild;f&&f!=a[p+1];)y=f.next,d.append(f),f=y;c=d}s.isEmpty(h)?o.insert(r,a[0],!0):(o.insert(s,a[0],!0),o.insert(r,s)),o=a[0],(o.isEmpty(h)||o.firstChild===o.lastChild&&"br"===o.firstChild.name)&&o.empty().remove()}else if(r.parent){if("li"===r.name){if(v=r.prev,v&&("ul"===v.name||"ul"===v.name)){v.append(r);continue}if(v=r.next,v&&("ul"===v.name||"ul"===v.name)){v.insert(r,v.firstChild,!0);continue}r.wrap(u.filterNode(new e("ul",1)));continue}l.isValidChild(r.parent.name,"div")&&l.isValidChild("div",r.name)?r.wrap(u.filterNode(new e("div",1))):"style"===r.name||"script"===r.name?r.empty().remove():r.unwrap()}}}var u=this,d={},f=[],p={},h={};r=r||{},r.validate="validate"in r?r.validate:!0,r.root_name=r.root_name||"body",u.schema=l=l||new t,u.filterNode=function(e){var t,n,r;n in d&&(r=p[n],r?r.push(e):p[n]=[e]),t=f.length;for(;t--;)n=f[t].name,n in e.attributes.map&&(r=h[n],r?r.push(e):h[n]=[e]);return e},u.addNodeFilter=function(e,t){o(a(e),function(e){var n=d[e];n||(d[e]=n=[]),n.push(t)})},u.addAttributeFilter=function(e,t){o(a(e),function(e){var n;for(n=0;n<f.length;n++)if(f[n].name===e)return void f[n].callbacks.push(t);f.push({name:e,callbacks:[t]})})},u.parse=function(t,o){function a(){function e(e){e&&(t=e.firstChild,t&&3==t.type&&(t.value=t.value.replace(R,"")),t=e.lastChild,t&&3==t.type&&(t.value=t.value.replace(D,"")))}var t=y.firstChild,n,i;if(l.isValidChild(y.name,I.toLowerCase())){for(;t;)n=t.next,3==t.type||1==t.type&&"p"!==t.name&&!T[t.name]&&!t.attr("data-mce-type")?i?i.append(t):(i=u(I,1),i.attr(r.forced_root_block_attrs),y.insert(i,t),i.append(t)):(e(i),i=null),t=n;e(i)}}function u(t,n){var r=new e(t,n),i;return t in d&&(i=p[t],i?i.push(r):p[t]=[r]),r}function m(e){var t,n,r;for(t=e.prev;t&&3===t.type;)n=t.value.replace(D,""),n.length>0?(t.value=n,t=t.prev):(r=t.prev,t.remove(),t=r)}function g(e){var t,n={};for(t in e)"li"!==t&&"p"!=t&&(n[t]=e[t]);return n}var v,y,b,C,x,w,_,E,N,k,S,T,R,A=[],B,D,L,H,M,P,O,I;if(o=o||{},p={},h={},T=s(i("script,style,head,html,body,title,meta,param"),l.getBlockElements()),O=l.getNonEmptyElements(),P=l.children,S=r.validate,I="forced_root_block"in o?o.forced_root_block:r.forced_root_block,M=l.getWhiteSpaceElements(),R=/^[ \t\r\n]+/,D=/[ \t\r\n]+$/,L=/[ \t\r\n]+/g,H=/^[ \t\r\n]+$/,v=new n({validate:S,allow_script_urls:r.allow_script_urls,allow_conditional_comments:r.allow_conditional_comments,self_closing_elements:g(l.getSelfClosingElements()),cdata:function(e){b.append(u("#cdata",4)).value=e},text:function(e,t){var n;B||(e=e.replace(L," "),b.lastChild&&T[b.lastChild.name]&&(e=e.replace(R,""))),0!==e.length&&(n=u("#text",3),n.raw=!!t,b.append(n).value=e)},comment:function(e){b.append(u("#comment",8)).value=e},pi:function(e,t){b.append(u(e,7)).value=t,m(b)},doctype:function(e){var t;t=b.append(u("#doctype",10)),t.value=e,m(b)},start:function(e,t,n){var r,i,o,a,s;if(o=S?l.getElementRule(e):{}){for(r=u(o.outputName||e,1),r.attributes=t,r.shortEnded=n,b.append(r),s=P[b.name],s&&P[r.name]&&!s[r.name]&&A.push(r),i=f.length;i--;)a=f[i].name,a in t.map&&(N=h[a],N?N.push(r):h[a]=[r]);T[e]&&m(r),n||(b=r),!B&&M[e]&&(B=!0)}},end:function(t){var n,r,i,o,a;if(r=S?l.getElementRule(t):{}){if(T[t]&&!B){if(n=b.firstChild,n&&3===n.type)if(i=n.value.replace(R,""),i.length>0)n.value=i,n=n.next;else for(o=n.next,n.remove(),n=o;n&&3===n.type;)i=n.value,o=n.next,(0===i.length||H.test(i))&&(n.remove(),n=o),n=o;if(n=b.lastChild,n&&3===n.type)if(i=n.value.replace(D,""),i.length>0)n.value=i,n=n.prev;else for(o=n.prev,n.remove(),n=o;n&&3===n.type;)i=n.value,o=n.prev,(0===i.length||H.test(i))&&(n.remove(),n=o),n=o}if(B&&M[t]&&(B=!1),(r.removeEmpty||r.paddEmpty)&&b.isEmpty(O))if(r.paddEmpty)b.empty().append(new e("#text","3")).value="\xa0";else if(!b.attributes.map.name&&!b.attributes.map.id)return a=b.parent,b.unwrap(),void(b=a);b=b.parent}}},l),y=b=new e(o.context||r.root_name,11),v.parse(t),S&&A.length&&(o.context?o.invalid=!0:c(A)),I&&("body"==y.name||o.isRootContent)&&a(),!o.invalid){for(k in p){for(N=d[k],C=p[k],_=C.length;_--;)C[_].parent||C.splice(_,1);for(x=0,w=N.length;w>x;x++)N[x](C,k,o)}for(x=0,w=f.length;w>x;x++)if(N=f[x],N.name in h){for(C=h[N.name],_=C.length;_--;)C[_].parent||C.splice(_,1);
+for(_=0,E=N.callbacks.length;E>_;_++)N.callbacks[_](C,N.name,o)}}return y},r.remove_trailing_brs&&u.addNodeFilter("br",function(t){var n,r=t.length,i,o=s({},l.getBlockElements()),a=l.getNonEmptyElements(),c,u,d,f,p,h;for(o.body=1,n=0;r>n;n++)if(i=t[n],c=i.parent,o[i.parent.name]&&i===c.lastChild){for(d=i.prev;d;){if(f=d.name,"span"!==f||"bookmark"!==d.attr("data-mce-type")){if("br"!==f)break;if("br"===f){i=null;break}}d=d.prev}i&&(i.remove(),c.isEmpty(a)&&(p=l.getElementRule(c.name),p&&(p.removeEmpty?c.remove():p.paddEmpty&&(c.empty().append(new e("#text",3)).value="\xa0"))))}else{for(u=i;c&&c.firstChild===u&&c.lastChild===u&&(u=c,!o[c.name]);)c=c.parent;u===c&&(h=new e("#text",3),h.value="\xa0",i.replace(h))}}),r.allow_html_in_named_anchor||u.addAttributeFilter("id,name",function(e){for(var t=e.length,n,r,i,o;t--;)if(o=e[t],"a"===o.name&&o.firstChild&&!o.attr("href")){i=o.parent,n=o.lastChild;do r=n.prev,i.insert(n,o),n=r;while(n)}}),r.validate&&l.getValidClasses()&&u.addAttributeFilter("class",function(e){for(var t=e.length,n,r,i,o,a,s=l.getValidClasses(),c,u;t--;){for(n=e[t],r=n.attr("class").split(" "),a="",i=0;i<r.length;i++)o=r[i],u=!1,c=s["*"],c&&c[o]&&(u=!0),c=s[n.name],u||!c||c[o]||(u=!0),u&&(a&&(a+=" "),a+=o);a.length||(a=null),n.attr("class",a)}})}}),r(S,[g,u],function(e,t){var n=t.makeMap;return function(t){var r=[],i,o,a,s,l;return t=t||{},i=t.indent,o=n(t.indent_before||""),a=n(t.indent_after||""),s=e.getEncodeFunc(t.entity_encoding||"raw",t.entities),l="html"==t.element_format,{start:function(e,t,n){var c,u,d,f;if(i&&o[e]&&r.length>0&&(f=r[r.length-1],f.length>0&&"\n"!==f&&r.push("\n")),r.push("<",e),t)for(c=0,u=t.length;u>c;c++)d=t[c],r.push(" ",d.name,'="',s(d.value,!0),'"');r[r.length]=!n||l?">":" />",n&&i&&a[e]&&r.length>0&&(f=r[r.length-1],f.length>0&&"\n"!==f&&r.push("\n"))},end:function(e){var t;r.push("</",e,">"),i&&a[e]&&r.length>0&&(t=r[r.length-1],t.length>0&&"\n"!==t&&r.push("\n"))},text:function(e,t){e.length>0&&(r[r.length]=t?e:s(e))},cdata:function(e){r.push("<![CDATA[",e,"]]>")},comment:function(e){r.push("<!--",e,"-->")},pi:function(e,t){t?r.push("<?",e," ",t,"?>"):r.push("<?",e,"?>"),i&&r.push("\n")},doctype:function(e){r.push("<!DOCTYPE",e,">",i?"\n":"")},reset:function(){r.length=0},getContent:function(){return r.join("").replace(/\n$/,"")}}}}),r(T,[S,E],function(e,t){return function(n,r){var i=this,o=new e(n);n=n||{},n.validate="validate"in n?n.validate:!0,i.schema=r=r||new t,i.writer=o,i.serialize=function(e){function t(e){var n=i[e.type],s,l,c,u,d,f,p,h,m;if(n)n(e);else{if(s=e.name,l=e.shortEnded,c=e.attributes,a&&c&&c.length>1){for(f=[],f.map={},m=r.getElementRule(e.name),p=0,h=m.attributesOrder.length;h>p;p++)u=m.attributesOrder[p],u in c.map&&(d=c.map[u],f.map[u]=d,f.push({name:u,value:d}));for(p=0,h=c.length;h>p;p++)u=c[p].name,u in f.map||(d=c.map[u],f.map[u]=d,f.push({name:u,value:d}));c=f}if(o.start(e.name,c,l),!l){if(e=e.firstChild)do t(e);while(e=e.next);o.end(s)}}}var i,a;return a=n.validate,i={3:function(e){o.text(e.value,e.raw)},8:function(e){o.comment(e.value)},7:function(e){o.pi(e.name,e.value)},10:function(e){o.doctype(e.value)},4:function(e){o.cdata(e.value)},11:function(e){if(e=e.firstChild)do t(e);while(e=e.next)}},o.reset(),1!=e.type||n.inner?i[11](e):t(e),o.getContent()}}}),r(R,[y,k,g,T,_,E,d,u],function(e,t,n,r,i,o,a,s){var l=s.each,c=s.trim,u=e.DOM;return function(e,i){var s,d,f;return i&&(s=i.dom,d=i.schema),s=s||u,d=d||new o(e),e.entity_encoding=e.entity_encoding||"named",e.remove_trailing_brs="remove_trailing_brs"in e?e.remove_trailing_brs:!0,f=new t(e,d),f.addAttributeFilter("data-mce-tabindex",function(e,t){for(var n=e.length,r;n--;)r=e[n],r.attr("tabindex",r.attributes.map["data-mce-tabindex"]),r.attr(t,null)}),f.addAttributeFilter("src,href,style",function(t,n){for(var r=t.length,i,o,a="data-mce-"+n,l=e.url_converter,c=e.url_converter_scope,u;r--;)i=t[r],o=i.attributes.map[a],o!==u?(i.attr(n,o.length>0?o:null),i.attr(a,null)):(o=i.attributes.map[n],"style"===n?o=s.serializeStyle(s.parseStyle(o),i.name):l&&(o=l.call(c,o,n,i.name)),i.attr(n,o.length>0?o:null))}),f.addAttributeFilter("class",function(e){for(var t=e.length,n,r;t--;)n=e[t],r=n.attr("class"),r&&(r=n.attr("class").replace(/(?:^|\s)mce-item-\w+(?!\S)/g,""),n.attr("class",r.length>0?r:null))}),f.addAttributeFilter("data-mce-type",function(e,t,n){for(var r=e.length,i;r--;)i=e[r],"bookmark"!==i.attributes.map["data-mce-type"]||n.cleanup||i.remove()}),f.addNodeFilter("noscript",function(e){for(var t=e.length,r;t--;)r=e[t].firstChild,r&&(r.value=n.decode(r.value))}),f.addNodeFilter("script,style",function(e,t){function n(e){return e.replace(/(<!--\[CDATA\[|\]\]-->)/g,"\n").replace(/^[\r\n]*|[\r\n]*$/g,"").replace(/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi,"").replace(/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g,"")}for(var r=e.length,i,o,a;r--;)i=e[r],o=i.firstChild?i.firstChild.value:"","script"===t?(a=i.attr("type"),a&&i.attr("type","mce-no/type"==a?null:a.replace(/^mce\-/,"")),o.length>0&&(i.firstChild.value="// <![CDATA[\n"+n(o)+"\n// ]]>")):o.length>0&&(i.firstChild.value="<!--\n"+n(o)+"\n-->")}),f.addNodeFilter("#comment",function(e){for(var t=e.length,n;t--;)n=e[t],0===n.value.indexOf("[CDATA[")?(n.name="#cdata",n.type=4,n.value=n.value.replace(/^\[CDATA\[|\]\]$/g,"")):0===n.value.indexOf("mce:protected ")&&(n.name="#text",n.type=3,n.raw=!0,n.value=unescape(n.value).substr(14))}),f.addNodeFilter("xml:namespace,input",function(e,t){for(var n=e.length,r;n--;)r=e[n],7===r.type?r.remove():1===r.type&&("input"!==t||"type"in r.attributes.map||r.attr("type","text"))}),e.fix_list_elements&&f.addNodeFilter("ul,ol",function(e){for(var t=e.length,n,r;t--;)n=e[t],r=n.parent,("ul"===r.name||"ol"===r.name)&&n.prev&&"li"===n.prev.name&&n.prev.append(n)}),f.addAttributeFilter("data-mce-src,data-mce-href,data-mce-style,data-mce-selected,data-mce-expando,data-mce-type,data-mce-resize",function(e,t){for(var n=e.length;n--;)e[n].attr(t,null)}),{schema:d,addNodeFilter:f.addNodeFilter,addAttributeFilter:f.addAttributeFilter,serialize:function(t,n){var i=this,o,u,p,h,m;return a.ie&&s.select("script,style,select,map").length>0?(m=t.innerHTML,t=t.cloneNode(!1),s.setHTML(t,m)):t=t.cloneNode(!0),o=t.ownerDocument.implementation,o.createHTMLDocument&&(u=o.createHTMLDocument(""),l("BODY"==t.nodeName?t.childNodes:[t],function(e){u.body.appendChild(u.importNode(e,!0))}),t="BODY"!=t.nodeName?u.body.firstChild:u.body,p=s.doc,s.doc=u),n=n||{},n.format=n.format||"html",n.selection&&(n.forced_root_block=""),n.no_events||(n.node=t,i.onPreProcess(n)),h=new r(e,d),n.content=h.serialize(f.parse(c(n.getInner?t.innerHTML:s.getOuterHTML(t)),n)),n.cleanup||(n.content=n.content.replace(/\uFEFF/g,"")),n.no_events||i.onPostProcess(n),p&&(s.doc=p),n.node=null,n.content},addRules:function(e){d.addValidElements(e)},setRules:function(e){d.setValidElements(e)},onPreProcess:function(e){i&&i.fire("PreProcess",e)},onPostProcess:function(e){i&&i.fire("PostProcess",e)}}}}),r(A,[],function(){function e(e){function t(t,n){var r,i=0,o,a,s,l,c,u,d=-1,f;if(r=t.duplicate(),r.collapse(n),f=r.parentElement(),f.ownerDocument===e.dom.doc){for(;"false"===f.contentEditable;)f=f.parentNode;if(!f.hasChildNodes())return{node:f,inside:1};for(s=f.children,o=s.length-1;o>=i;)if(u=Math.floor((i+o)/2),l=s[u],r.moveToElementText(l),d=r.compareEndPoints(n?"StartToStart":"EndToEnd",t),d>0)o=u-1;else{if(!(0>d))return{node:l};i=u+1}if(0>d)for(l?r.collapse(!1):(r.moveToElementText(f),r.collapse(!0),l=f,a=!0),c=0;0!==r.compareEndPoints(n?"StartToStart":"StartToEnd",t)&&0!==r.move("character",1)&&f==r.parentElement();)c++;else for(r.collapse(!0),c=0;0!==r.compareEndPoints(n?"StartToStart":"StartToEnd",t)&&0!==r.move("character",-1)&&f==r.parentElement();)c++;return{node:l,position:d,offset:c,inside:a}}}function n(){function n(e){var n=t(o,e),r,i,s=0,l,c,u;if(r=n.node,i=n.offset,n.inside&&!r.hasChildNodes())return void a[e?"setStart":"setEnd"](r,0);if(i===c)return void a[e?"setStartBefore":"setEndAfter"](r);if(n.position<0){if(l=n.inside?r.firstChild:r.nextSibling,!l)return void a[e?"setStartAfter":"setEndAfter"](r);if(!i)return void(3==l.nodeType?a[e?"setStart":"setEnd"](l,0):a[e?"setStartBefore":"setEndBefore"](l));for(;l;){if(3==l.nodeType&&(u=l.nodeValue,s+=u.length,s>=i)){r=l,s-=i,s=u.length-s;break}l=l.nextSibling}}else{if(l=r.previousSibling,!l)return a[e?"setStartBefore":"setEndBefore"](r);if(!i)return void(3==r.nodeType?a[e?"setStart":"setEnd"](l,r.nodeValue.length):a[e?"setStartAfter":"setEndAfter"](l));for(;l;){if(3==l.nodeType&&(s+=l.nodeValue.length,s>=i)){r=l,s-=i;break}l=l.previousSibling}}a[e?"setStart":"setEnd"](r,s)}var o=e.getRng(),a=i.createRng(),s,l,c,u,d;if(s=o.item?o.item(0):o.parentElement(),s.ownerDocument!=i.doc)return a;if(l=e.isCollapsed(),o.item)return a.setStart(s.parentNode,i.nodeIndex(s)),a.setEnd(a.startContainer,a.startOffset+1),a;try{n(!0),l||n()}catch(f){if(-2147024809!=f.number)throw f;d=r.getBookmark(2),c=o.duplicate(),c.collapse(!0),s=c.parentElement(),l||(c=o.duplicate(),c.collapse(!1),u=c.parentElement(),u.innerHTML=u.innerHTML),s.innerHTML=s.innerHTML,r.moveToBookmark(d),o=e.getRng(),n(!0),l||n()}return a}var r=this,i=e.dom,o=!1;this.getBookmark=function(n){function r(e){var t,n,r,o,a=[];for(t=e.parentNode,n=i.getRoot().parentNode;t!=n&&9!==t.nodeType;){for(r=t.children,o=r.length;o--;)if(e===r[o]){a.push(o);break}e=t,t=t.parentNode}return a}function o(e){var n;return n=t(a,e),n?{position:n.position,offset:n.offset,indexes:r(n.node),inside:n.inside}:void 0}var a=e.getRng(),s={};return 2===n&&(a.item?s.start={ctrl:!0,indexes:r(a.item(0))}:(s.start=o(!0),e.isCollapsed()||(s.end=o()))),s},this.moveToBookmark=function(e){function t(e){var t,n,r,o;for(t=i.getRoot(),n=e.length-1;n>=0;n--)o=t.children,r=e[n],r<=o.length-1&&(t=o[r]);return t}function n(n){var i=e[n?"start":"end"],a,s,l,c;i&&(a=i.position>0,s=o.createTextRange(),s.moveToElementText(t(i.indexes)),c=i.offset,c!==l?(s.collapse(i.inside||a),s.moveStart("character",a?-c:c)):s.collapse(n),r.setEndPoint(n?"StartToStart":"EndToStart",s),n&&r.collapse(!0))}var r,o=i.doc.body;e.start&&(e.start.ctrl?(r=o.createControlRange(),r.addElement(t(e.start.indexes)),r.select()):(r=o.createTextRange(),n(!0),n(),r.select()))},this.addRange=function(t){function n(e){var t,n,a,d,h;a=i.create("a"),t=e?s:c,n=e?l:u,d=r.duplicate(),(t==f||t==f.documentElement)&&(t=p,n=0),3==t.nodeType?(t.parentNode.insertBefore(a,t),d.moveToElementText(a),d.moveStart("character",n),i.remove(a),r.setEndPoint(e?"StartToStart":"EndToEnd",d)):(h=t.childNodes,h.length?(n>=h.length?i.insertAfter(a,h[h.length-1]):t.insertBefore(a,h[n]),d.moveToElementText(a)):t.canHaveHTML&&(t.innerHTML="<span>&#xFEFF;</span>",a=t.firstChild,d.moveToElementText(a),d.collapse(o)),r.setEndPoint(e?"StartToStart":"EndToEnd",d),i.remove(a))}var r,a,s,l,c,u,d,f=e.dom.doc,p=f.body,h,m;if(s=t.startContainer,l=t.startOffset,c=t.endContainer,u=t.endOffset,r=p.createTextRange(),s==c&&1==s.nodeType){if(l==u&&!s.hasChildNodes()){if(s.canHaveHTML)return d=s.previousSibling,d&&!d.hasChildNodes()&&i.isBlock(d)?d.innerHTML="&#xFEFF;":d=null,s.innerHTML="<span>&#xFEFF;</span><span>&#xFEFF;</span>",r.moveToElementText(s.lastChild),r.select(),i.doc.selection.clear(),s.innerHTML="",void(d&&(d.innerHTML=""));l=i.nodeIndex(s),s=s.parentNode}if(l==u-1)try{if(m=s.childNodes[l],a=p.createControlRange(),a.addElement(m),a.select(),h=e.getRng(),h.item&&m===h.item(0))return}catch(g){}}n(!0),n(),r.select()},this.getRangeAt=n}return e}),r(B,[d],function(e){return{BACKSPACE:8,DELETE:46,DOWN:40,ENTER:13,LEFT:37,RIGHT:39,SPACEBAR:32,TAB:9,UP:38,modifierPressed:function(e){return e.shiftKey||e.ctrlKey||e.altKey},metaKeyPressed:function(t){return e.mac?t.metaKey:t.ctrlKey&&!t.altKey}}}),r(D,[B,u,d],function(e,t,n){return function(r,i){function o(e){var t=i.settings.object_resizing;return t===!1||n.iOS?!1:("string"!=typeof t&&(t="table,img,div"),"false"===e.getAttribute("data-mce-resize")?!1:i.dom.is(e,t))}function a(t){var n,r,o,a,s;n=t.screenX-T,r=t.screenY-R,P=n*k[2]+D,O=r*k[3]+L,P=5>P?5:P,O=5>O?5:O,o="IMG"==w.nodeName&&i.settings.resize_img_proportional!==!1?!e.modifierPressed(t):e.modifierPressed(t)||"IMG"==w.nodeName&&k[2]*k[3]!==0,o&&(W(n)>W(r)?(O=V(P*H),P=V(O/H)):(P=V(O/H),O=V(P*H))),C.setStyles(_,{width:P,height:O}),a=k.startPos.x+n,s=k.startPos.y+r,a=a>0?a:0,s=s>0?s:0,C.setStyles(E,{left:a,top:s,display:"block"}),E.innerHTML=P+" &times; "+O,k[2]<0&&_.clientWidth<=P&&C.setStyle(_,"left",A+(D-P)),k[3]<0&&_.clientHeight<=O&&C.setStyle(_,"top",B+(L-O)),n=U.scrollWidth-$,r=U.scrollHeight-q,n+r!==0&&C.setStyles(E,{left:a-n,top:s-r}),M||(i.fire("ObjectResizeStart",{target:w,width:D,height:L}),M=!0)}function s(){function e(e,t){t&&(w.style[e]||!i.schema.isValid(w.nodeName.toLowerCase(),e)?C.setStyle(w,e,t):C.setAttrib(w,e,t))}M=!1,e("width",P),e("height",O),C.unbind(I,"mousemove",a),C.unbind(I,"mouseup",s),F!=I&&(C.unbind(F,"mousemove",a),C.unbind(F,"mouseup",s)),C.remove(_),C.remove(E),z&&"TABLE"!=w.nodeName||l(w),i.fire("ObjectResized",{target:w,width:P,height:O}),C.setAttrib(w,"style",C.getAttrib(w,"style")),i.nodeChanged()}function l(e,t,r){var l,u,d,f,p;g(),l=C.getPos(e,U),A=l.x,B=l.y,p=e.getBoundingClientRect(),u=p.width||p.right-p.left,d=p.height||p.bottom-p.top,w!=e&&(m(),w=e,P=O=0),f=i.fire("ObjectSelected",{target:e}),o(e)&&!f.isDefaultPrevented()?x(N,function(e,i){function o(t){T=t.screenX,R=t.screenY,D=w.clientWidth,L=w.clientHeight,H=L/D,k=e,e.startPos={x:u*e[0]+A,y:d*e[1]+B},$=U.scrollWidth,q=U.scrollHeight,_=w.cloneNode(!0),C.addClass(_,"mce-clonedresizable"),C.setAttrib(_,"data-mce-bogus","all"),_.contentEditable=!1,_.unSelectabe=!0,C.setStyles(_,{left:A,top:B,margin:0}),_.removeAttribute("data-mce-selected"),U.appendChild(_),C.bind(I,"mousemove",a),C.bind(I,"mouseup",s),F!=I&&(C.bind(F,"mousemove",a),C.bind(F,"mouseup",s)),E=C.add(U,"div",{"class":"mce-resize-helper","data-mce-bogus":"all"},D+" &times; "+L)}var l,c;return t?void(i==t&&o(r)):(l=C.get("mceResizeHandle"+i),l?C.show(l):(c=U,l=C.add(c,"div",{id:"mceResizeHandle"+i,"data-mce-bogus":"all","class":"mce-resizehandle",unselectable:!0,style:"cursor:"+i+"-resize; margin:0; padding:0"}),n.ie&&(l.contentEditable=!1)),e.elm||(C.bind(l,"mousedown",function(e){e.stopImmediatePropagation(),e.preventDefault(),o(e)}),e.elm=l),void C.setStyles(l,{left:u*e[0]+A-l.offsetWidth/2,top:d*e[1]+B-l.offsetHeight/2}))}):c(),w.setAttribute("data-mce-selected","1")}function c(){var e,t;g(),w&&w.removeAttribute("data-mce-selected");for(e in N)t=C.get("mceResizeHandle"+e),t&&(C.unbind(t),C.remove(t))}function u(e){function t(e,t){if(e)do if(e===t)return!0;while(e=e.parentNode)}var n,i;return x(C.select("img[data-mce-selected],hr[data-mce-selected]"),function(e){e.removeAttribute("data-mce-selected")}),i="mousedown"==e.type?e.target:r.getNode(),i=C.$(i).closest(z?"table":"table,img,hr")[0],t(i,U)&&(v(),n=r.getStart(!0),t(n,i)&&t(r.getEnd(!0),i)&&(!z||i!=n&&"IMG"!==n.nodeName))?void l(i):void c()}function d(e,t,n){e&&e.attachEvent&&e.attachEvent("on"+t,n)}function f(e,t,n){e&&e.detachEvent&&e.detachEvent("on"+t,n)}function p(e){var t=e.srcElement,n,r,o,a,s,c,u;n=t.getBoundingClientRect(),c=S.clientX-n.left,u=S.clientY-n.top;for(r in N)if(o=N[r],a=t.offsetWidth*o[0],s=t.offsetHeight*o[1],W(a-c)<8&&W(s-u)<8){k=o;break}M=!0,i.fire("ObjectResizeStart",{target:w,width:w.clientWidth,height:w.clientHeight}),i.getDoc().selection.empty(),l(t,r,S)}function h(e){var t=e.srcElement;if(t!=w){if(i.fire("ObjectSelected",{target:t}),m(),0===t.id.indexOf("mceResizeHandle"))return void(e.returnValue=!1);("IMG"==t.nodeName||"TABLE"==t.nodeName)&&(c(),w=t,d(t,"resizestart",p))}}function m(){f(w,"resizestart",p)}function g(){for(var e in N){var t=N[e];t.elm&&(C.unbind(t.elm),delete t.elm)}}function v(){try{i.getDoc().execCommand("enableObjectResizing",!1,!1)}catch(e){}}function y(e){var t;if(z){t=I.body.createControlRange();try{return t.addElement(e),t.select(),!0}catch(n){}}}function b(){w=_=null,z&&(m(),f(U,"controlselect",h))}var C=i.dom,x=t.each,w,_,E,N,k,S,T,R,A,B,D,L,H,M,P,O,I=i.getDoc(),F=document,z=n.ie&&n.ie<11,W=Math.abs,V=Math.round,U=i.getBody(),$,q;N={n:[.5,0,0,-1],e:[1,.5,1,0],s:[.5,1,0,1],w:[0,.5,-1,0],nw:[0,0,-1,-1],ne:[1,0,1,-1],se:[1,1,1,1],sw:[0,1,-1,1]};var j=".mce-content-body";return i.contentStyles.push(j+" div.mce-resizehandle {position: absolute;border: 1px solid black;background: #FFF;width: 5px;height: 5px;z-index: 10000}"+j+" .mce-resizehandle:hover {background: #000}"+j+" img[data-mce-selected], hr[data-mce-selected] {outline: 1px solid black;resize: none}"+j+" .mce-clonedresizable {position: absolute;"+(n.gecko?"":"outline: 1px dashed black;")+"opacity: .5;filter: alpha(opacity=50);z-index: 10000}"+j+" .mce-resize-helper {background-color: #555;background-color: rgba(0,0,0,0.75);border-radius: 3px;border: 1px;color: white;display: none;font-family: sans-serif;font-size: 12px;white-space: nowrap;line-height: 14px;margin: 5px 10px;padding: 5px;position: absolute;z-index: 10001}"),i.on("init",function(){z?(i.on("ObjectResized",function(e){"TABLE"!=e.target.nodeName&&(c(),y(e.target))}),d(U,"controlselect",h),i.on("mousedown",function(e){S=e})):(v(),n.ie>=11&&(i.on("mouseup",function(e){var t=e.target.nodeName;!M&&/^(TABLE|IMG|HR)$/.test(t)&&(i.selection.select(e.target,"TABLE"==t),i.nodeChanged())}),i.dom.bind(U,"mscontrolselect",function(e){/^(TABLE|IMG|HR)$/.test(e.target.nodeName)&&(e.preventDefault(),"IMG"==e.target.tagName&&window.setTimeout(function(){i.selection.select(e.target)},0))}))),i.on("nodechange ResizeEditor",u),i.on("keydown keyup",function(e){w&&"TABLE"==w.nodeName&&u(e)}),i.on("hide",c)}),i.on("remove",g),{isResizable:o,showResizeRect:l,hideResizeRect:c,updateResizeRect:u,controlSelect:y,destroy:b}}}),r(L,[d,u],function(e,t){function n(n){var r=n.dom;this.getBookmark=function(e,i){function o(e,n){var i=0;return t.each(r.select(e),function(e,t){e==n&&(i=t)}),i}function a(e){function t(t){var n,r,i,o=t?"start":"end";n=e[o+"Container"],r=e[o+"Offset"],1==n.nodeType&&"TR"==n.nodeName&&(i=n.childNodes,n=i[Math.min(t?r:r-1,i.length-1)],n&&(r=t?0:n.childNodes.length,e["set"+(t?"Start":"End")](n,r)))}return t(!0),t(),e}function s(){function e(e,t){var n=e[t?"startContainer":"endContainer"],a=e[t?"startOffset":"endOffset"],s=[],l,c,u=0;if(3==n.nodeType){if(i)for(l=n.previousSibling;l&&3==l.nodeType;l=l.previousSibling)a+=l.nodeValue.length;s.push(a)}else c=n.childNodes,a>=c.length&&c.length&&(u=1,a=Math.max(0,c.length-1)),s.push(r.nodeIndex(c[a],i)+u);for(;n&&n!=o;n=n.parentNode)s.push(r.nodeIndex(n,i));return s}var t=n.getRng(!0),o=r.getRoot(),a={};return a.start=e(t,!0),n.isCollapsed()||(a.end=e(t)),a}var l,c,u,d,f,p,h="&#xFEFF;",m;if(2==e)return p=n.getNode(),f=p?p.nodeName:null,"IMG"==f?{name:f,index:o(f,p)}:n.tridentSel?n.tridentSel.getBookmark(e):s();if(e)return{rng:n.getRng()};if(l=n.getRng(),u=r.uniqueId(),d=n.isCollapsed(),m="overflow:hidden;line-height:0px",l.duplicate||l.item){if(l.item)return p=l.item(0),f=p.nodeName,{name:f,index:o(f,p)};c=l.duplicate();try{l.collapse(),l.pasteHTML('<span data-mce-type="bookmark" id="'+u+'_start" style="'+m+'">'+h+"</span>"),d||(c.collapse(!1),l.moveToElementText(c.parentElement()),0===l.compareEndPoints("StartToEnd",c)&&c.move("character",-1),c.pasteHTML('<span data-mce-type="bookmark" id="'+u+'_end" style="'+m+'">'+h+"</span>"))}catch(g){return null}}else{if(p=n.getNode(),f=p.nodeName,"IMG"==f)return{name:f,index:o(f,p)};c=a(l.cloneRange()),d||(c.collapse(!1),c.insertNode(r.create("span",{"data-mce-type":"bookmark",id:u+"_end",style:m},h))),l=a(l),l.collapse(!0),l.insertNode(r.create("span",{"data-mce-type":"bookmark",id:u+"_start",style:m},h))}return n.moveToBookmark({id:u,keep:1}),{id:u}},this.moveToBookmark=function(i){function o(e){var t=i[e?"start":"end"],n,r,o,a;if(t){for(o=t[0],r=c,n=t.length-1;n>=1;n--){if(a=r.childNodes,t[n]>a.length-1)return;r=a[t[n]]}3===r.nodeType&&(o=Math.min(t[0],r.nodeValue.length)),1===r.nodeType&&(o=Math.min(t[0],r.childNodes.length)),e?l.setStart(r,o):l.setEnd(r,o)}return!0}function a(n){var o=r.get(i.id+"_"+n),a,s,l,c,h=i.keep;if(o&&(a=o.parentNode,"start"==n?(h?(a=o.firstChild,s=1):s=r.nodeIndex(o),u=d=a,f=p=s):(h?(a=o.firstChild,s=1):s=r.nodeIndex(o),d=a,p=s),!h)){for(c=o.previousSibling,l=o.nextSibling,t.each(t.grep(o.childNodes),function(e){3==e.nodeType&&(e.nodeValue=e.nodeValue.replace(/\uFEFF/g,""))});o=r.get(i.id+"_"+n);)r.remove(o,1);c&&l&&c.nodeType==l.nodeType&&3==c.nodeType&&!e.opera&&(s=c.nodeValue.length,c.appendData(l.nodeValue),r.remove(l),"start"==n?(u=d=c,f=p=s):(d=c,p=s))}}function s(t){return!r.isBlock(t)||t.innerHTML||e.ie||(t.innerHTML='<br data-mce-bogus="1" />'),t}var l,c,u,d,f,p;if(i)if(i.start){if(l=r.createRng(),c=r.getRoot(),n.tridentSel)return n.tridentSel.moveToBookmark(i);o(!0)&&o()&&n.setRng(l)}else i.id?(a("start"),a("end"),u&&(l=r.createRng(),l.setStart(s(u),f),l.setEnd(s(d),p),n.setRng(l))):i.name?n.select(r.select(i.name)[i.index]):i.rng&&n.setRng(i.rng)}}return n.isBookmarkNode=function(e){return e&&"SPAN"===e.tagName&&"bookmark"===e.getAttribute("data-mce-type")},n}),r(H,[h,A,D,x,L,d,u],function(e,n,r,i,o,a,s){function l(e,t,i,a){var s=this;s.dom=e,s.win=t,s.serializer=i,s.editor=a,s.bookmarkManager=new o(s),s.controlSelection=new r(s,a),s.win.getSelection||(s.tridentSel=new n(s))}var c=s.each,u=s.trim,d=a.ie;return l.prototype={setCursorLocation:function(e,t){var n=this,r=n.dom.createRng();e?(r.setStart(e,t),r.setEnd(e,t),n.setRng(r),n.collapse(!1)):(n._moveEndPoint(r,n.editor.getBody(),!0),n.setRng(r))},getContent:function(e){var n=this,r=n.getRng(),i=n.dom.create("body"),o=n.getSel(),a,s,l;return e=e||{},a=s="",e.get=!0,e.format=e.format||"html",e.selection=!0,n.editor.fire("BeforeGetContent",e),"text"==e.format?n.isCollapsed()?"":r.text||(o.toString?o.toString():""):(r.cloneContents?(l=r.cloneContents(),l&&i.appendChild(l)):r.item!==t||r.htmlText!==t?(i.innerHTML="<br>"+(r.item?r.item(0).outerHTML:r.htmlText),i.removeChild(i.firstChild)):i.innerHTML=r.toString(),/^\s/.test(i.innerHTML)&&(a=" "),/\s+$/.test(i.innerHTML)&&(s=" "),e.getInner=!0,e.content=n.isCollapsed()?"":a+n.serializer.serialize(i,e)+s,n.editor.fire("GetContent",e),e.content)},setContent:function(e,t){var n=this,r=n.getRng(),i,o=n.win.document,a,s;if(t=t||{format:"html"},t.set=!0,t.selection=!0,e=t.content=e,t.no_events||n.editor.fire("BeforeSetContent",t),e=t.content,r.insertNode){e+='<span id="__caret">_</span>',r.startContainer==o&&r.endContainer==o?o.body.innerHTML=e:(r.deleteContents(),0===o.body.childNodes.length?o.body.innerHTML=e:r.createContextualFragment?r.insertNode(r.createContextualFragment(e)):(a=o.createDocumentFragment(),s=o.createElement("div"),a.appendChild(s),s.outerHTML=e,r.insertNode(a))),i=n.dom.get("__caret"),r=o.createRange(),r.setStartBefore(i),r.setEndBefore(i),n.setRng(r),n.dom.remove("__caret");try{n.setRng(r)}catch(l){}}else r.item&&(o.execCommand("Delete",!1,null),r=n.getRng()),/^\s+/.test(e)?(r.pasteHTML('<span id="__mce_tmp">_</span>'+e),n.dom.remove("__mce_tmp")):r.pasteHTML(e);t.no_events||n.editor.fire("SetContent",t)},getStart:function(e){var t=this,n=t.getRng(),r,i,o,a;if(n.duplicate||n.item){if(n.item)return n.item(0);for(o=n.duplicate(),o.collapse(1),r=o.parentElement(),r.ownerDocument!==t.dom.doc&&(r=t.dom.getRoot()),i=a=n.parentElement();a=a.parentNode;)if(a==r){r=i;break}return r}return r=n.startContainer,1==r.nodeType&&r.hasChildNodes()&&(e&&n.collapsed||(r=r.childNodes[Math.min(r.childNodes.length-1,n.startOffset)])),r&&3==r.nodeType?r.parentNode:r},getEnd:function(e){var t=this,n=t.getRng(),r,i;return n.duplicate||n.item?n.item?n.item(0):(n=n.duplicate(),n.collapse(0),r=n.parentElement(),r.ownerDocument!==t.dom.doc&&(r=t.dom.getRoot()),r&&"BODY"==r.nodeName?r.lastChild||r:r):(r=n.endContainer,i=n.endOffset,1==r.nodeType&&r.hasChildNodes()&&(e&&n.collapsed||(r=r.childNodes[i>0?i-1:i])),r&&3==r.nodeType?r.parentNode:r)},getBookmark:function(e,t){return this.bookmarkManager.getBookmark(e,t)},moveToBookmark:function(e){return this.bookmarkManager.moveToBookmark(e)},select:function(e,t){var n=this,r=n.dom,i=r.createRng(),o;if(n.lastFocusBookmark=null,e){if(!t&&n.controlSelection.controlSelect(e))return;o=r.nodeIndex(e),i.setStart(e.parentNode,o),i.setEnd(e.parentNode,o+1),t&&(n._moveEndPoint(i,e,!0),n._moveEndPoint(i,e)),n.setRng(i)}return e},isCollapsed:function(){var e=this,t=e.getRng(),n=e.getSel();return!t||t.item?!1:t.compareEndPoints?0===t.compareEndPoints("StartToEnd",t):!n||t.collapsed},collapse:function(e){var t=this,n=t.getRng(),r;n.item&&(r=n.item(0),n=t.win.document.body.createTextRange(),n.moveToElementText(r)),n.collapse(!!e),t.setRng(n)},getSel:function(){var e=this.win;return e.getSelection?e.getSelection():e.document.selection},getRng:function(e){function t(e,t,n){try{return t.compareBoundaryPoints(e,n)}catch(r){return-1}}var n=this,r,i,o,a=n.win.document,s;if(!e&&n.lastFocusBookmark){var l=n.lastFocusBookmark;return l.startContainer?(i=a.createRange(),i.setStart(l.startContainer,l.startOffset),i.setEnd(l.endContainer,l.endOffset)):i=l,i}if(e&&n.tridentSel)return n.tridentSel.getRangeAt(0);try{(r=n.getSel())&&(i=r.rangeCount>0?r.getRangeAt(0):r.createRange?r.createRange():a.createRange())}catch(c){}if(d&&i&&i.setStart&&a.selection){try{s=a.selection.createRange()}catch(c){}s&&s.item&&(o=s.item(0),i=a.createRange(),i.setStartBefore(o),i.setEndAfter(o))}return i||(i=a.createRange?a.createRange():a.body.createTextRange()),i.setStart&&9===i.startContainer.nodeType&&i.collapsed&&(o=n.dom.getRoot(),i.setStart(o,0),i.setEnd(o,0)),n.selectedRange&&n.explicitRange&&(0===t(i.START_TO_START,i,n.selectedRange)&&0===t(i.END_TO_END,i,n.selectedRange)?i=n.explicitRange:(n.selectedRange=null,n.explicitRange=null)),i},setRng:function(e,t){var n=this,r;if(e.select)try{e.select()}catch(i){}else if(n.tridentSel){if(e.cloneRange)try{return void n.tridentSel.addRange(e)}catch(i){}}else if(r=n.getSel()){n.explicitRange=e;try{r.removeAllRanges(),r.addRange(e)}catch(i){}t===!1&&r.extend&&(r.collapse(e.endContainer,e.endOffset),r.extend(e.startContainer,e.startOffset)),n.selectedRange=r.rangeCount>0?r.getRangeAt(0):null}},setNode:function(e){var t=this;return t.setContent(t.dom.getOuterHTML(e)),e},getNode:function(){function e(e,t){for(var n=e;e&&3===e.nodeType&&0===e.length;)e=t?e.nextSibling:e.previousSibling;return e||n}var t=this,n=t.getRng(),r,i=n.startContainer,o=n.endContainer,a=n.startOffset,s=n.endOffset,l=t.dom.getRoot();return n?n.setStart?(r=n.commonAncestorContainer,!n.collapsed&&(i==o&&2>s-a&&i.hasChildNodes()&&(r=i.childNodes[a]),3===i.nodeType&&3===o.nodeType&&(i=i.length===a?e(i.nextSibling,!0):i.parentNode,o=0===s?e(o.previousSibling,!1):o.parentNode,i&&i===o))?i:r&&3==r.nodeType?r.parentNode:r):(r=n.item?n.item(0):n.parentElement(),r.ownerDocument!==t.win.document&&(r=l),r):l},getSelectedBlocks:function(t,n){var r=this,i=r.dom,o,a,s=[];if(a=i.getRoot(),t=i.getParent(t||r.getStart(),i.isBlock),n=i.getParent(n||r.getEnd(),i.isBlock),t&&t!=a&&s.push(t),t&&n&&t!=n){o=t;for(var l=new e(t,a);(o=l.next())&&o!=n;)i.isBlock(o)&&s.push(o)}return n&&t!=n&&n!=a&&s.push(n),s},isForward:function(){var e=this.dom,t=this.getSel(),n,r;return t&&t.anchorNode&&t.focusNode?(n=e.createRng(),n.setStart(t.anchorNode,t.anchorOffset),n.collapse(!0),r=e.createRng(),r.setStart(t.focusNode,t.focusOffset),r.collapse(!0),n.compareBoundaryPoints(n.START_TO_START,r)<=0):!0},normalize:function(){var e=this,t=e.getRng();return!d&&new i(e.dom).normalize(t)&&e.setRng(t,e.isForward()),t},selectorChanged:function(e,t){var n=this,r;return n.selectorChangedData||(n.selectorChangedData={},r={},n.editor.on("NodeChange",function(e){var t=e.element,i=n.dom,o=i.getParents(t,null,i.getRoot()),a={};c(n.selectorChangedData,function(e,t){c(o,function(n){return i.is(n,t)?(r[t]||(c(e,function(e){e(!0,{node:n,selector:t,parents:o})}),r[t]=e),a[t]=e,!1):void 0})}),c(r,function(e,n){a[n]||(delete r[n],c(e,function(e){e(!1,{node:t,selector:n,parents:o})}))})})),n.selectorChangedData[e]||(n.selectorChangedData[e]=[]),n.selectorChangedData[e].push(t),n},getScrollContainer:function(){for(var e,t=this.dom.getRoot();t&&"BODY"!=t.nodeName;){if(t.scrollHeight>t.clientHeight){e=t;break}t=t.parentNode}return e},scrollIntoView:function(e){function t(e){for(var t=0,n=0,r=e;r&&r.nodeType;)t+=r.offsetLeft||0,n+=r.offsetTop||0,r=r.offsetParent;return{x:t,y:n}}var n,r,i=this,o=i.dom,a=o.getRoot(),s,l;if("BODY"!=a.nodeName){var c=i.getScrollContainer();if(c)return n=t(e).y-t(c).y,l=c.clientHeight,s=c.scrollTop,void((s>n||n+25>s+l)&&(c.scrollTop=s>n?n:n-l+25))}r=o.getViewPort(i.editor.getWin()),n=o.getPos(e).y,s=r.y,l=r.h,(n<r.y||n+25>s+l)&&i.editor.getWin().scrollTo(0,s>n?n:n-l+25)},_moveEndPoint:function(t,n,r){var i=n,o=new e(n,i),s=this.dom.schema.getNonEmptyElements();do{if(3==n.nodeType&&0!==u(n.nodeValue).length)return void(r?t.setStart(n,0):t.setEnd(n,n.nodeValue.length));if(s[n.nodeName]&&!/^(TD|TH)$/.test(n.nodeName))return void(r?t.setStartBefore(n):"BR"==n.nodeName?t.setEndBefore(n):t.setEndAfter(n));if(a.ie&&a.ie<11&&this.dom.isBlock(n)&&this.dom.isEmpty(n))return void(r?t.setStart(n,0):t.setEnd(n,0))}while(n=r?o.next():o.prev());"BODY"==i.nodeName&&(r?t.setStart(i,0):t.setEnd(i,i.childNodes.length))},destroy:function(){this.win=null,this.controlSelection.destroy()}},l}),r(M,[L,u],function(e,t){function n(t){this.compare=function(n,i){function o(e){var n={};return r(t.getAttribs(e),function(r){var i=r.nodeName.toLowerCase();0!==i.indexOf("_")&&"style"!==i&&"data-mce-style"!==i&&(n[i]=t.getAttrib(e,i))}),n}function a(e,t){var n,r;for(r in e)if(e.hasOwnProperty(r)){if(n=t[r],"undefined"==typeof n)return!1;if(e[r]!=n)return!1;delete t[r]}for(r in t)if(t.hasOwnProperty(r))return!1;return!0}return n.nodeName!=i.nodeName?!1:a(o(n),o(i))&&a(t.parseStyle(t.getAttrib(n,"style")),t.parseStyle(t.getAttrib(i,"style")))?!e.isBookmarkNode(n)&&!e.isBookmarkNode(i):!1}}var r=t.each;return n}),r(P,[u],function(e){function t(e,t){function r(e){return e.replace(/%(\w+)/g,"")}var i,o,a=e.dom,s="",l,c;if(c=e.settings.preview_styles,c===!1)return"";if(c||(c="font-family font-size font-weight font-style text-decoration text-transform color background-color border border-radius outline text-shadow"),"string"==typeof t){if(t=e.formatter.get(t),!t)return;t=t[0]}return i=t.block||t.inline||"span",o=a.create(i),n(t.styles,function(e,t){e=r(e),e&&a.setStyle(o,t,e)}),n(t.attributes,function(e,t){e=r(e),e&&a.setAttrib(o,t,e)}),n(t.classes,function(e){e=r(e),a.hasClass(o,e)||a.addClass(o,e)}),e.fire("PreviewFormats"),a.setStyles(o,{position:"absolute",left:-65535}),e.getBody().appendChild(o),l=a.getStyle(e.getBody(),"fontSize",!0),l=/px$/.test(l)?parseInt(l,10):0,n(c.split(" "),function(t){var n=a.getStyle(o,t,!0);if(!("background-color"==t&&/transparent|rgba\s*\([^)]+,\s*0\)/.test(n)&&(n=a.getStyle(e.getBody(),t,!0),"#ffffff"==a.toHex(n).toLowerCase())||"color"==t&&"#000000"==a.toHex(n).toLowerCase())){if("font-size"==t&&/em|%$/.test(n)){if(0===l)return;n=parseFloat(n,10)/(/%$/.test(n)?100:1),n=n*l+"px"}"border"==t&&n&&(s+="padding:0 2px;"),s+=t+":"+n+";"}}),e.fire("AfterPreviewFormats"),a.remove(o),s}var n=e.each;return{getCssText:t}}),r(O,[h,x,L,M,u,P],function(e,t,n,r,i,o){return function(a){function s(e){return e.nodeType&&(e=e.nodeName),!!a.schema.getTextBlockElements()[e.toLowerCase()]}function l(e,t){return V.getParents(e,t,V.getRoot())}function c(e){return 1===e.nodeType&&"_mce_caret"===e.id}function u(){p({valigntop:[{selector:"td,th",styles:{verticalAlign:"top"}}],valignmiddle:[{selector:"td,th",styles:{verticalAlign:"middle"}}],valignbottom:[{selector:"td,th",styles:{verticalAlign:"bottom"}}],alignleft:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"left"},defaultBlock:"div"},{selector:"img,table",collapsed:!1,styles:{"float":"left"}}],aligncenter:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"center"},defaultBlock:"div"},{selector:"img",collapsed:!1,styles:{display:"block",marginLeft:"auto",marginRight:"auto"}},{selector:"table",collapsed:!1,styles:{marginLeft:"auto",marginRight:"auto"}}],alignright:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"right"},defaultBlock:"div"},{selector:"img,table",collapsed:!1,styles:{"float":"right"}}],alignjustify:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"justify"},defaultBlock:"div"}],bold:[{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}},{inline:"b",remove:"all"}],italic:[{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}},{inline:"i",remove:"all"}],underline:[{inline:"span",styles:{textDecoration:"underline"},exact:!0},{inline:"u",remove:"all"}],strikethrough:[{inline:"span",styles:{textDecoration:"line-through"},exact:!0},{inline:"strike",remove:"all"}],forecolor:{inline:"span",styles:{color:"%value"},links:!0,remove_similar:!0},hilitecolor:{inline:"span",styles:{backgroundColor:"%value"},links:!0,remove_similar:!0},fontname:{inline:"span",styles:{fontFamily:"%value"}},fontsize:{inline:"span",styles:{fontSize:"%value"}},fontsize_class:{inline:"span",attributes:{"class":"%value"}},blockquote:{block:"blockquote",wrapper:1,remove:"all"},subscript:{inline:"sub"},superscript:{inline:"sup"},code:{inline:"code"},link:{inline:"a",selector:"a",remove:"all",split:!0,deep:!0,onmatch:function(){return!0
+},onformat:function(e,t,n){ot(n,function(t,n){V.setAttrib(e,n,t)})}},removeformat:[{selector:"b,strong,em,i,font,u,strike,sub,sup,dfn,code,samp,kbd,var,cite,mark,q",remove:"all",split:!0,expand:!1,block_expand:!0,deep:!0},{selector:"span",attributes:["style","class"],remove:"empty",split:!0,expand:!1,deep:!0},{selector:"*",attributes:["style","class"],split:!1,expand:!1,deep:!0}]}),ot("p h1 h2 h3 h4 h5 h6 div address pre div dt dd samp".split(/\s/),function(e){p(e,{block:e,remove:"all"})}),p(a.settings.formats)}function d(){a.addShortcut("ctrl+b","bold_desc","Bold"),a.addShortcut("ctrl+i","italic_desc","Italic"),a.addShortcut("ctrl+u","underline_desc","Underline");for(var e=1;6>=e;e++)a.addShortcut("ctrl+"+e,"",["FormatBlock",!1,"h"+e]);a.addShortcut("ctrl+7","",["FormatBlock",!1,"p"]),a.addShortcut("ctrl+8","",["FormatBlock",!1,"div"]),a.addShortcut("ctrl+9","",["FormatBlock",!1,"address"])}function f(e){return e?W[e]:W}function p(e,t){e&&("string"!=typeof e?ot(e,function(e,t){p(t,e)}):(t=t.length?t:[t],ot(t,function(e){e.deep===et&&(e.deep=!e.selector),e.split===et&&(e.split=!e.selector||e.inline),e.remove===et&&e.selector&&!e.inline&&(e.remove="none"),e.selector&&e.inline&&(e.mixed=!0,e.block_expand=!0),"string"==typeof e.classes&&(e.classes=e.classes.split(/\s+/))}),W[e]=t))}function h(e){var t;return a.dom.getParent(e,function(e){return t=a.dom.getStyle(e,"text-decoration"),t&&"none"!==t}),t}function m(e){var t;1===e.nodeType&&e.parentNode&&1===e.parentNode.nodeType&&(t=h(e.parentNode),a.dom.getStyle(e,"color")&&t?a.dom.setStyle(e,"text-decoration",t):a.dom.getStyle(e,"textdecoration")===t&&a.dom.setStyle(e,"text-decoration",null))}function g(t,n,r){function i(e,t){if(t=t||d,e){if(t.onformat&&t.onformat(e,t,n,r),ot(t.styles,function(t,r){V.setStyle(e,r,R(t,n))}),t.styles){var i=V.getAttrib(e,"style");i&&e.setAttribute("data-mce-style",i)}ot(t.attributes,function(t,r){V.setAttrib(e,r,R(t,n))}),ot(t.classes,function(t){t=R(t,n),V.hasClass(e,t)||V.addClass(e,t)})}}function o(){function t(t,n){var i=new e(n);for(r=i.current();r;r=i.prev())if(r.childNodes.length>1||r==t||"BR"==r.tagName)return r}var n=a.selection.getRng(),i=n.startContainer,o=n.endContainer;if(i!=o&&0===n.endOffset){var s=t(i,o),l=3==s.nodeType?s.length:s.childNodes.length;n.setEnd(s,l)}return n}function l(e,r,o){var a=[],l,f,p=!0;l=d.inline||d.block,f=V.create(l),i(f),$.walk(e,function(e){function r(e){var m,g,y,C,x;return x=p,m=e.nodeName.toLowerCase(),g=e.parentNode.nodeName.toLowerCase(),1===e.nodeType&&tt(e)&&(x=p,p="true"===tt(e),C=!0),k(m,"br")?(h=0,void(d.block&&V.remove(e))):d.wrapper&&b(e,t,n)?void(h=0):p&&!C&&d.block&&!d.wrapper&&s(m)&&q(g,l)?(e=V.rename(e,l),i(e),a.push(e),void(h=0)):d.selector&&(ot(u,function(t){"collapsed"in t&&t.collapsed!==v||V.is(e,t.selector)&&!c(e)&&(i(e,t),y=!0)}),!d.inline||y)?void(h=0):void(!p||C||!q(l,m)||!q(g,l)||!o&&3===e.nodeType&&1===e.nodeValue.length&&65279===e.nodeValue.charCodeAt(0)||c(e)||d.inline&&j(e)?(h=0,ot(at(e.childNodes),r),C&&(p=x),h=0):(h||(h=V.clone(f,J),e.parentNode.insertBefore(h,e),a.push(h)),h.appendChild(e)))}var h;ot(e,r)}),d.links===!0&&ot(a,function(e){function t(e){"A"===e.nodeName&&i(e,d),ot(at(e.childNodes),t)}t(e)}),ot(a,function(e){function r(e){var t=0;return ot(e.childNodes,function(e){A(e)||it(e)||t++}),t}function o(e){var t,n;return ot(e.childNodes,function(e){return 1!=e.nodeType||it(e)||c(e)?void 0:(t=e,J)}),t&&!it(t)&&N(t,d)&&(n=V.clone(t,J),i(n),V.replace(n,e,Q),V.remove(t,1)),n||e}var s;if(s=r(e),(a.length>1||!j(e))&&0===s)return void V.remove(e,1);if(d.inline||d.wrapper){if(d.exact||1!==s||(e=o(e)),ot(u,function(t){ot(V.select(t.inline,e),function(e){it(e)||H(t,n,e,t.exact?e:null)})}),b(e.parentNode,t,n))return V.remove(e,1),e=0,Q;d.merge_with_parents&&V.getParent(e.parentNode,function(r){return b(r,t,n)?(V.remove(e,1),e=0,Q):void 0}),e&&d.merge_siblings!==!1&&(e=O(P(e),e),e=O(e,P(e,Q)))}})}var u=f(t),d=u[0],p,h,v=!r&&U.isCollapsed();if(d)if(r)r.nodeType?(h=V.createRng(),h.setStartBefore(r),h.setEndAfter(r),l(D(h,u),null,!0)):l(r,null,!0);else if(v&&d.inline&&!V.select("td.mce-item-selected,th.mce-item-selected").length)F("apply",t,n);else{var y=a.selection.getNode();Y||!u[0].defaultBlock||V.getParent(y,V.isBlock)||g(u[0].defaultBlock),a.selection.setRng(o()),p=U.getBookmark(),l(D(U.getRng(Q),u),p),d.styles&&(d.styles.color||d.styles.textDecoration)&&(st(y,m,"childNodes"),m(y)),U.moveToBookmark(p),z(U.getRng(Q)),a.nodeChanged()}}function v(e,t,n,r){function i(e){var n,r,o,a,s;if(1===e.nodeType&&tt(e)&&(a=y,y="true"===tt(e),s=!0),n=at(e.childNodes),y&&!s)for(r=0,o=p.length;o>r&&!H(p[r],t,e,e);r++);if(m.deep&&n.length){for(r=0,o=n.length;o>r;r++)i(n[r]);s&&(y=a)}}function o(n){var i;return ot(l(n.parentNode).reverse(),function(n){var o;i||"_start"==n.id||"_end"==n.id||(o=b(n,e,t,r),o&&o.split!==!1&&(i=n))}),i}function s(e,n,r,i){var o,a,s,l,c,u;if(e){for(u=e.parentNode,o=n.parentNode;o&&o!=u;o=o.parentNode){for(a=V.clone(o,J),c=0;c<p.length;c++)if(H(p[c],t,a,a)){a=0;break}a&&(s&&a.appendChild(s),l||(l=a),s=a)}!i||m.mixed&&j(e)||(n=V.split(e,n)),s&&(r.parentNode.insertBefore(s,r),l.appendChild(r))}return n}function c(e){return s(o(e),e,e,!0)}function u(e){var t=V.get(e?"_start":"_end"),n=t[e?"firstChild":"lastChild"];return it(n)&&(n=n[e?"firstChild":"lastChild"]),V.remove(t,!0),n}function d(e){var t,n,r=e.commonAncestorContainer;e=D(e,p,Q),m.split&&(t=I(e,Q),n=I(e),t!=n?(/^(TR|TH|TD)$/.test(t.nodeName)&&t.firstChild&&(t="TR"==t.nodeName?t.firstChild.firstChild||t:t.firstChild||t),r&&/^T(HEAD|BODY|FOOT|R)$/.test(r.nodeName)&&/^(TH|TD)$/.test(n.nodeName)&&n.firstChild&&(n=n.firstChild||n),t=B(t,"span",{id:"_start","data-mce-type":"bookmark"}),n=B(n,"span",{id:"_end","data-mce-type":"bookmark"}),c(t),c(n),t=u(Q),n=u()):t=n=c(t),e.startContainer=t.parentNode,e.startOffset=K(t),e.endContainer=n.parentNode,e.endOffset=K(n)+1),$.walk(e,function(e){ot(e,function(e){i(e),1===e.nodeType&&"underline"===a.dom.getStyle(e,"text-decoration")&&e.parentNode&&"underline"===h(e.parentNode)&&H({deep:!1,exact:!0,inline:"span",styles:{textDecoration:"underline"}},null,e)})})}var p=f(e),m=p[0],g,v,y=!0;return n?void(n.nodeType?(v=V.createRng(),v.setStartBefore(n),v.setEndAfter(n),d(v)):d(n)):void(U.isCollapsed()&&m.inline&&!V.select("td.mce-item-selected,th.mce-item-selected").length?F("remove",e,t,r):(g=U.getBookmark(),d(U.getRng(Q)),U.moveToBookmark(g),m.inline&&C(e,t,U.getStart())&&z(U.getRng(!0)),a.nodeChanged()))}function y(e,t,n){var r=f(e);!C(e,t,n)||"toggle"in r[0]&&!r[0].toggle?g(e,t,n):v(e,t,n)}function b(e,t,n,r){function i(e,t,i){var o,a,s=t[i],l;if(t.onmatch)return t.onmatch(e,t,i);if(s)if(s.length===et){for(o in s)if(s.hasOwnProperty(o)){if(a="attributes"===i?V.getAttrib(e,o):S(e,o),r&&!a&&!t.exact)return;if((!r||t.exact)&&!k(a,T(R(s[o],n),o)))return}}else for(l=0;l<s.length;l++)if("attributes"===i?V.getAttrib(e,s[l]):S(e,s[l]))return t;return t}var o=f(t),a,s,l;if(o&&e)for(s=0;s<o.length;s++)if(a=o[s],N(e,a)&&i(e,a,"attributes")&&i(e,a,"styles")){if(l=a.classes)for(s=0;s<l.length;s++)if(!V.hasClass(e,l[s]))return;return a}}function C(e,t,n){function r(n){var r=V.getRoot();return n===r?!1:(n=V.getParent(n,function(n){return n.parentNode===r||!!b(n,e,t,!0)}),b(n,e,t))}var i;return n?r(n):(n=U.getNode(),r(n)?Q:(i=U.getStart(),i!=n&&r(i)?Q:J))}function x(e,t){var n,r=[],i={};return n=U.getStart(),V.getParent(n,function(n){var o,a;for(o=0;o<e.length;o++)a=e[o],!i[a]&&b(n,a,t)&&(i[a]=!0,r.push(a))},V.getRoot()),r}function w(e){var t=f(e),n,r,i,o,a;if(t)for(n=U.getStart(),r=l(n),o=t.length-1;o>=0;o--){if(a=t[o].selector,!a||t[o].defaultBlock)return Q;for(i=r.length-1;i>=0;i--)if(V.is(r[i],a))return Q}return J}function _(e,t,n){var r;return Z||(Z={},r={},a.on("NodeChange",function(e){var t=l(e.element),n={};t=i.grep(t,function(e){return 1==e.nodeType&&!e.getAttribute("data-mce-bogus")}),ot(Z,function(e,i){ot(t,function(o){return b(o,i,{},e.similar)?(r[i]||(ot(e,function(e){e(!0,{node:o,format:i,parents:t})}),r[i]=e),n[i]=e,!1):void 0})}),ot(r,function(i,o){n[o]||(delete r[o],ot(i,function(n){n(!1,{node:e.element,format:o,parents:t})}))})})),ot(e.split(","),function(e){Z[e]||(Z[e]=[],Z[e].similar=n),Z[e].push(t)}),this}function E(e){return o.getCssText(a,e)}function N(e,t){return k(e,t.inline)?Q:k(e,t.block)?Q:t.selector?1==e.nodeType&&V.is(e,t.selector):void 0}function k(e,t){return e=e||"",t=t||"",e=""+(e.nodeName||e),t=""+(t.nodeName||t),e.toLowerCase()==t.toLowerCase()}function S(e,t){return T(V.getStyle(e,t),t)}function T(e,t){return("color"==t||"backgroundColor"==t)&&(e=V.toHex(e)),"fontWeight"==t&&700==e&&(e="bold"),"fontFamily"==t&&(e=e.replace(/[\'\"]/g,"").replace(/,\s+/g,",")),""+e}function R(e,t){return"string"!=typeof e?e=e(t):t&&(e=e.replace(/%(\w+)/g,function(e,n){return t[n]||e})),e}function A(e){return e&&3===e.nodeType&&/^([\t \r\n]+|)$/.test(e.nodeValue)}function B(e,t,n){var r=V.create(t,n);return e.parentNode.insertBefore(r,e),r.appendChild(e),r}function D(t,n,r){function i(e){function t(e){return"BR"==e.nodeName&&e.getAttribute("data-mce-bogus")&&!e.nextSibling}var r,i,o,a,s;if(r=i=e?g:y,a=e?"previousSibling":"nextSibling",s=V.getRoot(),3==r.nodeType&&!A(r)&&(e?v>0:b<r.nodeValue.length))return r;for(;;){if(!n[0].block_expand&&j(i))return i;for(o=i[a];o;o=o[a])if(!it(o)&&!A(o)&&!t(o))return i;if(i.parentNode==s){r=i;break}i=i.parentNode}return r}function o(e,t){for(t===et&&(t=3===e.nodeType?e.length:e.childNodes.length);e&&e.hasChildNodes();)e=e.childNodes[t],e&&(t=3===e.nodeType?e.length:e.childNodes.length);return{node:e,offset:t}}function c(e){for(var t=e;t;){if(1===t.nodeType&&tt(t))return"false"===tt(t)?t:e;t=t.parentNode}return e}function u(t,n,i){function o(e,t){var n,o,a=e.nodeValue;return"undefined"==typeof t&&(t=i?a.length:0),i?(n=a.lastIndexOf(" ",t),o=a.lastIndexOf("\xa0",t),n=n>o?n:o,-1===n||r||n++):(n=a.indexOf(" ",t),o=a.indexOf("\xa0",t),n=-1!==n&&(-1===o||o>n)?n:o),n}var s,l,c,u;if(3===t.nodeType){if(c=o(t,n),-1!==c)return{container:t,offset:c};u=t}for(s=new e(t,V.getParent(t,j)||a.getBody());l=s[i?"prev":"next"]();)if(3===l.nodeType){if(u=l,c=o(l),-1!==c)return{container:l,offset:c}}else if(j(l))break;return u?(n=i?0:u.length,{container:u,offset:n}):void 0}function d(e,r){var i,o,a,s;for(3==e.nodeType&&0===e.nodeValue.length&&e[r]&&(e=e[r]),i=l(e),o=0;o<i.length;o++)for(a=0;a<n.length;a++)if(s=n[a],!("collapsed"in s&&s.collapsed!==t.collapsed)&&V.is(i[o],s.selector))return i[o];return e}function f(e,t){var r,i=V.getRoot();if(n[0].wrapper||(r=V.getParent(e,n[0].block,i)),r||(r=V.getParent(3==e.nodeType?e.parentNode:e,function(e){return e!=i&&s(e)})),r&&n[0].wrapper&&(r=l(r,"ul,ol").reverse()[0]||r),!r)for(r=e;r[t]&&!j(r[t])&&(r=r[t],!k(r,"br")););return r||e}var p,h,m,g=t.startContainer,v=t.startOffset,y=t.endContainer,b=t.endOffset;if(1==g.nodeType&&g.hasChildNodes()&&(p=g.childNodes.length-1,g=g.childNodes[v>p?p:v],3==g.nodeType&&(v=0)),1==y.nodeType&&y.hasChildNodes()&&(p=y.childNodes.length-1,y=y.childNodes[b>p?p:b-1],3==y.nodeType&&(b=y.nodeValue.length)),g=c(g),y=c(y),(it(g.parentNode)||it(g))&&(g=it(g)?g:g.parentNode,g=g.nextSibling||g,3==g.nodeType&&(v=0)),(it(y.parentNode)||it(y))&&(y=it(y)?y:y.parentNode,y=y.previousSibling||y,3==y.nodeType&&(b=y.length)),n[0].inline&&(t.collapsed&&(m=u(g,v,!0),m&&(g=m.container,v=m.offset),m=u(y,b),m&&(y=m.container,b=m.offset)),h=o(y,b),h.node)){for(;h.node&&0===h.offset&&h.node.previousSibling;)h=o(h.node.previousSibling);h.node&&h.offset>0&&3===h.node.nodeType&&" "===h.node.nodeValue.charAt(h.offset-1)&&h.offset>1&&(y=h.node,y.splitText(h.offset-1))}return(n[0].inline||n[0].block_expand)&&(n[0].inline&&3==g.nodeType&&0!==v||(g=i(!0)),n[0].inline&&3==y.nodeType&&b!==y.nodeValue.length||(y=i())),n[0].selector&&n[0].expand!==J&&!n[0].inline&&(g=d(g,"previousSibling"),y=d(y,"nextSibling")),(n[0].block||n[0].selector)&&(g=f(g,"previousSibling"),y=f(y,"nextSibling"),n[0].block&&(j(g)||(g=i(!0)),j(y)||(y=i()))),1==g.nodeType&&(v=K(g),g=g.parentNode),1==y.nodeType&&(b=K(y)+1,y=y.parentNode),{startContainer:g,startOffset:v,endContainer:y,endOffset:b}}function L(e,t){return t.links&&"A"==e.tagName}function H(e,t,n,r){var i,o,a;if(!N(n,e)&&!L(n,e))return J;if("all"!=e.remove)for(ot(e.styles,function(i,o){i=T(R(i,t),o),"number"==typeof o&&(o=i,r=0),(e.remove_similar||!r||k(S(r,o),i))&&V.setStyle(n,o,""),a=1}),a&&""===V.getAttrib(n,"style")&&(n.removeAttribute("style"),n.removeAttribute("data-mce-style")),ot(e.attributes,function(e,i){var o;if(e=R(e,t),"number"==typeof i&&(i=e,r=0),!r||k(V.getAttrib(r,i),e)){if("class"==i&&(e=V.getAttrib(n,i),e&&(o="",ot(e.split(/\s+/),function(e){/mce\w+/.test(e)&&(o+=(o?" ":"")+e)}),o)))return void V.setAttrib(n,i,o);"class"==i&&n.removeAttribute("className"),X.test(i)&&n.removeAttribute("data-mce-"+i),n.removeAttribute(i)}}),ot(e.classes,function(e){e=R(e,t),(!r||V.hasClass(r,e))&&V.removeClass(n,e)}),o=V.getAttribs(n),i=0;i<o.length;i++)if(0!==o[i].nodeName.indexOf("_"))return J;return"none"!=e.remove?(M(n,e),Q):void 0}function M(e,t){function n(e,t,n){return e=P(e,t,n),!e||"BR"==e.nodeName||j(e)}var r=e.parentNode,i;t.block&&(Y?r==V.getRoot()&&(t.list_block&&k(e,t.list_block)||ot(at(e.childNodes),function(e){q(Y,e.nodeName.toLowerCase())?i?i.appendChild(e):(i=B(e,Y),V.setAttribs(i,a.settings.forced_root_block_attrs)):i=0})):j(e)&&!j(r)&&(n(e,J)||n(e.firstChild,Q,1)||e.insertBefore(V.create("br"),e.firstChild),n(e,Q)||n(e.lastChild,J,1)||e.appendChild(V.create("br")))),t.selector&&t.inline&&!k(t.inline,e)||V.remove(e,1)}function P(e,t,n){if(e)for(t=t?"nextSibling":"previousSibling",e=n?e:e[t];e;e=e[t])if(1==e.nodeType||!A(e))return e}function O(e,t){function n(e,t){for(i=e;i;i=i[t]){if(3==i.nodeType&&0!==i.nodeValue.length)return e;if(1==i.nodeType&&!it(i))return i}return e}var i,o,a=new r(V);if(e&&t&&(e=n(e,"previousSibling"),t=n(t,"nextSibling"),a.compare(e,t))){for(i=e.nextSibling;i&&i!=t;)o=i,i=i.nextSibling,e.appendChild(o);return V.remove(t),ot(at(t.childNodes),function(t){e.appendChild(t)}),e}return t}function I(t,n){var r,i,o;return r=t[n?"startContainer":"endContainer"],i=t[n?"startOffset":"endOffset"],1==r.nodeType&&(o=r.childNodes.length-1,!n&&i&&i--,r=r.childNodes[i>o?o:i]),3===r.nodeType&&n&&i>=r.nodeValue.length&&(r=new e(r,a.getBody()).next()||r),3!==r.nodeType||n||0!==i||(r=new e(r,a.getBody()).prev()||r),r}function F(t,n,r,i){function o(e){var t=V.create("span",{id:y,"data-mce-bogus":!0,style:C?"color:red":""});return e&&t.appendChild(a.getDoc().createTextNode(G)),t}function l(e,t){for(;e;){if(3===e.nodeType&&e.nodeValue!==G||e.childNodes.length>1)return!1;t&&1===e.nodeType&&t.push(e),e=e.firstChild}return!0}function c(e){for(;e;){if(e.id===y)return e;e=e.parentNode}}function u(t){var n;if(t)for(n=new e(t,t),t=n.current();t;t=n.next())if(3===t.nodeType)return t}function d(e,t){var n,r;if(e)r=U.getRng(!0),l(e)?(t!==!1&&(r.setStartBefore(e),r.setEndBefore(e)),V.remove(e)):(n=u(e),n.nodeValue.charAt(0)===G&&(n.deleteData(0,1),r.startContainer==n&&r.startOffset--,r.endContainer==n&&r.endOffset--),V.remove(e,1)),U.setRng(r);else if(e=c(U.getStart()),!e)for(;e=V.get(y);)d(e,!1)}function p(){var e,t,i,a,s,l,d;e=U.getRng(!0),a=e.startOffset,l=e.startContainer,d=l.nodeValue,t=c(U.getStart()),t&&(i=u(t)),d&&a>0&&a<d.length&&/\w/.test(d.charAt(a))&&/\w/.test(d.charAt(a-1))?(s=U.getBookmark(),e.collapse(!0),e=D(e,f(n)),e=$.split(e),g(n,r,e),U.moveToBookmark(s)):(t&&i.nodeValue===G?g(n,r,t):(t=o(!0),i=t.firstChild,e.insertNode(t),a=1,g(n,r,t)),U.setCursorLocation(i,a))}function h(){var e=U.getRng(!0),t,a,l,c,u,d,p=[],h,m;for(t=e.startContainer,a=e.startOffset,u=t,3==t.nodeType&&(a!=t.nodeValue.length&&(c=!0),u=u.parentNode);u;){if(b(u,n,r,i)){d=u;break}u.nextSibling&&(c=!0),p.push(u),u=u.parentNode}if(d)if(c)l=U.getBookmark(),e.collapse(!0),e=D(e,f(n),!0),e=$.split(e),v(n,r,e),U.moveToBookmark(l);else{for(m=o(),u=m,h=p.length-1;h>=0;h--)u.appendChild(V.clone(p[h],!1)),u=u.firstChild;u.appendChild(V.doc.createTextNode(G)),u=u.firstChild;var g=V.getParent(d,s);g&&V.isEmpty(g)?d.parentNode.replaceChild(m,d):V.insertAfter(m,d),U.setCursorLocation(u,1),V.isEmpty(d)&&V.remove(d)}}function m(){var e;e=c(U.getStart()),e&&!V.isEmpty(e)&&st(e,function(e){1!=e.nodeType||e.id===y||V.isEmpty(e)||V.setAttrib(e,"data-mce-bogus",null)},"childNodes")}var y="_mce_caret",C=a.settings.caret_debug;a._hasCaretEvents||(rt=function(){var e=[],t;if(l(c(U.getStart()),e))for(t=e.length;t--;)V.setAttrib(e[t],"data-mce-bogus","1")},nt=function(e){var t=e.keyCode;d(),(8==t||37==t||39==t)&&d(c(U.getStart())),m()},a.on("SetContent",function(e){e.selection&&m()}),a._hasCaretEvents=!0),"apply"==t?p():h()}function z(t){var n=t.startContainer,r=t.startOffset,i,o,a,s,l;if(3==n.nodeType&&r>=n.nodeValue.length&&(r=K(n),n=n.parentNode,i=!0),1==n.nodeType)for(s=n.childNodes,n=s[Math.min(r,s.length-1)],o=new e(n,V.getParent(n,V.isBlock)),(r>s.length-1||i)&&o.next(),a=o.current();a;a=o.next())if(3==a.nodeType&&!A(a))return l=V.create("a",{"data-mce-bogus":"all"},G),a.parentNode.insertBefore(l,a),t.setStart(a,0),U.setRng(t),void V.remove(l)}var W={},V=a.dom,U=a.selection,$=new t(V),q=a.schema.isValidChild,j=V.isBlock,Y=a.settings.forced_root_block,K=V.nodeIndex,G="\ufeff",X=/^(src|href|style)$/,J=!1,Q=!0,Z,et,tt=V.getContentEditable,nt,rt,it=n.isBookmarkNode,ot=i.each,at=i.grep,st=i.walk,lt=i.extend;lt(this,{get:f,register:p,apply:g,remove:v,toggle:y,match:C,matchAll:x,matchNode:b,canApply:w,formatChanged:_,getCssText:E}),u(),d(),a.on("BeforeGetContent",function(e){rt&&"raw"!=e.format&&rt()}),a.on("mouseup keydown",function(e){nt&&nt(e)})}}),r(I,[d,u,N],function(e,t,n){var r=t.trim,i;return i=new RegExp(["<span[^>]+data-mce-bogus[^>]+>[\u200b\ufeff]+<\\/span>",'\\s?data-mce-selected="[^"]+"'].join("|"),"gi"),function(t){function o(){var e=r(t.getContent({format:"raw",no_events:1})),o=/<(\w+) [^>]*data-mce-bogus="all"[^>]*>/g,a,s,l,c,u,d=t.schema;for(e=e.replace(i,""),u=d.getShortEndedElements();c=o.exec(e);)s=o.lastIndex,l=c[0].length,a=u[c[1]]?s:n.findEndTag(d,e,s),e=e.substring(0,s-l)+e.substring(a),o.lastIndex=s-l;return e}function a(e){s.typing=!1,s.add({},e)}var s=this,l=0,c=[],u,d,f=0;return t.on("init",function(){s.add()}),t.on("BeforeExecCommand",function(e){var t=e.command;"Undo"!=t&&"Redo"!=t&&"mceRepaint"!=t&&s.beforeChange()}),t.on("ExecCommand",function(e){var t=e.command;"Undo"!=t&&"Redo"!=t&&"mceRepaint"!=t&&a(e)}),t.on("ObjectResizeStart",function(){s.beforeChange()}),t.on("SaveContent ObjectResized blur",a),t.on("DragEnd",a),t.on("KeyUp",function(n){var r=n.keyCode;(r>=33&&36>=r||r>=37&&40>=r||45==r||13==r||n.ctrlKey)&&(a(),t.nodeChanged()),(46==r||8==r||e.mac&&(91==r||93==r))&&t.nodeChanged(),d&&s.typing&&(t.isDirty()||(t.isNotDirty=!c[0]||o()==c[0].content,t.isNotDirty||t.fire("change",{level:c[0],lastLevel:null})),t.fire("TypingUndo"),d=!1,t.nodeChanged())}),t.on("KeyDown",function(e){var t=e.keyCode;return t>=33&&36>=t||t>=37&&40>=t||45==t?void(s.typing&&a(e)):void((16>t||t>20)&&224!=t&&91!=t&&!s.typing&&(s.beforeChange(),s.typing=!0,s.add({},e),d=!0))}),t.on("MouseDown",function(e){s.typing&&a(e)}),t.addShortcut("ctrl+z","","Undo"),t.addShortcut("ctrl+y,ctrl+shift+z","","Redo"),t.on("AddUndo Undo Redo ClearUndos",function(e){e.isDefaultPrevented()||t.nodeChanged()}),s={data:c,typing:!1,beforeChange:function(){f||(u=t.selection.getBookmark(2,!0))},add:function(e,n){var r,i=t.settings,a;if(e=e||{},e.content=o(),f||t.removed)return null;if(a=c[l],t.fire("BeforeAddUndo",{level:e,lastLevel:a,originalEvent:n}).isDefaultPrevented())return null;if(a&&a.content==e.content)return null;if(c[l]&&(c[l].beforeBookmark=u),i.custom_undo_redo_levels&&c.length>i.custom_undo_redo_levels){for(r=0;r<c.length-1;r++)c[r]=c[r+1];c.length--,l=c.length}e.bookmark=t.selection.getBookmark(2,!0),l<c.length-1&&(c.length=l+1),c.push(e),l=c.length-1;var s={level:e,lastLevel:a,originalEvent:n};return t.fire("AddUndo",s),l>0&&(t.isNotDirty=!1,t.fire("change",s)),e},undo:function(){var e;return s.typing&&(s.add(),s.typing=!1),l>0&&(e=c[--l],0===l&&(t.isNotDirty=!0),t.setContent(e.content,{format:"raw"}),t.selection.moveToBookmark(e.beforeBookmark),t.fire("undo",{level:e})),e},redo:function(){var e;return l<c.length-1&&(e=c[++l],t.setContent(e.content,{format:"raw"}),t.selection.moveToBookmark(e.bookmark),t.fire("redo",{level:e})),e},clear:function(){c=[],l=0,s.typing=!1,t.fire("ClearUndos")},hasUndo:function(){return l>0||s.typing&&c[0]&&o()!=c[0].content},hasRedo:function(){return l<c.length-1&&!this.typing},transact:function(e){s.beforeChange();try{f++,e()}finally{f--}s.add()}}}}),r(F,[h,x,d],function(e,t,n){var r=n.ie&&n.ie<11;return function(i){function o(o){function f(e){return e&&a.isBlock(e)&&!/^(TD|TH|CAPTION|FORM)$/.test(e.nodeName)&&!/^(fixed|absolute)/i.test(e.style.position)&&"true"!==a.getContentEditable(e)}function p(e){var t;a.isBlock(e)&&(t=s.getRng(),e.appendChild(a.create("span",null,"\xa0")),s.select(e),e.lastChild.outerHTML="",s.setRng(t))}function h(e){var t=e,n=[],r;if(t){for(;t=t.firstChild;){if(a.isBlock(t))return;1!=t.nodeType||d[t.nodeName.toLowerCase()]||n.push(t)}for(r=n.length;r--;)t=n[r],!t.hasChildNodes()||t.firstChild==t.lastChild&&""===t.firstChild.nodeValue?a.remove(t):"A"==t.nodeName&&" "===(t.innerText||t.textContent)&&a.remove(t)}}function m(t){function r(e){for(;e;){if(1==e.nodeType||3==e.nodeType&&e.data&&/[\r\n\s]/.test(e.data))return e;e=e.nextSibling}}var i,o,l,c=t,u;if(t){if(n.ie&&n.ie<9&&A&&A.firstChild&&A.firstChild==A.lastChild&&"BR"==A.firstChild.tagName&&a.remove(A.firstChild),/^(LI|DT|DD)$/.test(t.nodeName)){var f=r(t.firstChild);f&&/^(UL|OL|DL)$/.test(f.nodeName)&&t.insertBefore(a.doc.createTextNode("\xa0"),t.firstChild)}if(l=a.createRng(),n.ie||t.normalize(),t.hasChildNodes()){for(i=new e(t,t);o=i.current();){if(3==o.nodeType){l.setStart(o,0),l.setEnd(o,0);break}if(d[o.nodeName.toLowerCase()]){l.setStartBefore(o),l.setEndBefore(o);break}c=o,o=i.next()}o||(l.setStart(c,0),l.setEnd(c,0))}else"BR"==t.nodeName?t.nextSibling&&a.isBlock(t.nextSibling)?((!B||9>B)&&(u=a.create("br"),t.parentNode.insertBefore(u,t)),l.setStartBefore(t),l.setEndBefore(t)):(l.setStartAfter(t),l.setEndAfter(t)):(l.setStart(t,0),l.setEnd(t,0));s.setRng(l),a.remove(u),s.scrollIntoView(t)}}function g(e){var t=l.forced_root_block;t&&t.toLowerCase()===e.tagName.toLowerCase()&&a.setAttribs(e,l.forced_root_block_attrs)}function v(e){var t=T,n,i,o,s=u.getTextInlineElements();if(e||"TABLE"==P?(n=a.create(e||I),g(n)):n=A.cloneNode(!1),o=n,l.keep_styles!==!1)do if(s[t.nodeName]){if("_mce_caret"==t.id)continue;i=t.cloneNode(!1),a.setAttrib(i,"id",""),n.hasChildNodes()?(i.appendChild(n.firstChild),n.appendChild(i)):(o=i,n.appendChild(i))}while(t=t.parentNode);return r||(o.innerHTML='<br data-mce-bogus="1">'),n}function y(t){var n,r,i;if(3==T.nodeType&&(t?R>0:R<T.nodeValue.length))return!1;if(T.parentNode==A&&F&&!t)return!0;if(t&&1==T.nodeType&&T==A.firstChild)return!0;if("TABLE"===T.nodeName||T.previousSibling&&"TABLE"==T.previousSibling.nodeName)return F&&!t||!F&&t;for(n=new e(T,A),3==T.nodeType&&(t&&0===R?n.prev():t||R!=T.nodeValue.length||n.next());r=n.current();){if(1===r.nodeType){if(!r.getAttribute("data-mce-bogus")&&(i=r.nodeName.toLowerCase(),d[i]&&"br"!==i))return!1}else if(3===r.nodeType&&!/^[ \t\r\n]*$/.test(r.nodeValue))return!1;t?n.prev():n.next()}return!0}function b(e,t){var n,r,o,s,l,c,d=I||"P";if(r=a.getParent(e,a.isBlock),c=i.getBody().nodeName.toLowerCase(),!r||!f(r)){if(r=r||S,!r.hasChildNodes())return n=a.create(d),g(n),r.appendChild(n),N.setStart(n,0),N.setEnd(n,0),n;for(s=e;s.parentNode!=r;)s=s.parentNode;for(;s&&!a.isBlock(s);)o=s,s=s.previousSibling;if(o&&u.isValidChild(c,d.toLowerCase())){for(n=a.create(d),g(n),o.parentNode.insertBefore(n,o),s=o;s&&!a.isBlock(s);)l=s.nextSibling,n.appendChild(s),s=l;N.setStart(e,t),N.setEnd(e,t)}}return e}function C(){function e(e){for(var t=M[e?"firstChild":"lastChild"];t&&1!=t.nodeType;)t=t[e?"nextSibling":"previousSibling"];return t===A}function t(){var e=M.parentNode;return/^(LI|DT|DD)$/.test(e.nodeName)?e:M}var n=M.parentNode.nodeName;/^(OL|UL|LI)$/.test(n)&&(I="LI"),L=I?v(I):a.create("BR"),e(!0)&&e()?"LI"==n?a.insertAfter(L,t()):a.replace(L,M):e(!0)?"LI"==n?(a.insertAfter(L,t()),L.appendChild(a.doc.createTextNode(" ")),L.appendChild(M)):M.parentNode.insertBefore(L,M):e()?(a.insertAfter(L,t()),p(L)):(M=t(),k=N.cloneRange(),k.setStartAfter(A),k.setEndAfter(M),H=k.extractContents(),"LI"==I&&"LI"==H.firstChild.nodeName?(L=H.firstChild,a.insertAfter(H,M)):(a.insertAfter(H,M),a.insertAfter(L,M))),a.remove(A),m(L),c.add()}function x(){i.execCommand("InsertLineBreak",!1,o)}function w(e){do 3===e.nodeType&&(e.nodeValue=e.nodeValue.replace(/^[\r\n]+/,"")),e=e.firstChild;while(e)}function _(e){var t=a.getRoot(),n,r;for(n=e;n!==t&&"false"!==a.getContentEditable(n);)"true"===a.getContentEditable(n)&&(r=n),n=n.parentNode;return n!==t?r:t}function E(e){var t;r||(e.normalize(),t=e.lastChild,(!t||/^(left|right)$/gi.test(a.getStyle(t,"float",!0)))&&a.add(e,"br"))}var N,k,S,T,R,A,B,D,L,H,M,P,O,I,F;if(N=s.getRng(!0),!o.isDefaultPrevented()){if(!N.collapsed)return void i.execCommand("Delete");if(new t(a).normalize(N),T=N.startContainer,R=N.startOffset,I=(l.force_p_newlines?"p":"")||l.forced_root_block,I=I?I.toUpperCase():"",B=a.doc.documentMode,D=o.shiftKey,1==T.nodeType&&T.hasChildNodes()&&(F=R>T.childNodes.length-1,T=T.childNodes[Math.min(R,T.childNodes.length-1)]||T,R=F&&3==T.nodeType?T.nodeValue.length:0),S=_(T)){if(c.beforeChange(),!a.isBlock(S)&&S!=a.getRoot())return void((!I||D)&&x());if((I&&!D||!I&&D)&&(T=b(T,R)),A=a.getParent(T,a.isBlock),M=A?a.getParent(A.parentNode,a.isBlock):null,P=A?A.nodeName.toUpperCase():"",O=M?M.nodeName.toUpperCase():"","LI"!=O||o.ctrlKey||(A=M,P=O),/^(LI|DT|DD)$/.test(P)){if(!I&&D)return void x();if(a.isEmpty(A))return void C()}if("PRE"==P&&l.br_in_pre!==!1){if(!D)return void x()}else if(!I&&!D&&"LI"!=P||I&&D)return void x();I&&A===i.getBody()||(I=I||"P",y()?(L=/^(H[1-6]|PRE|FIGURE)$/.test(P)&&"HGROUP"!=O?v(I):v(),l.end_container_on_empty_block&&f(M)&&a.isEmpty(A)?L=a.split(M,A):a.insertAfter(L,A),m(L)):y(!0)?(L=A.parentNode.insertBefore(v(),A),p(L),m(A)):(k=N.cloneRange(),k.setEndAfter(A),H=k.extractContents(),w(H),L=H.firstChild,a.insertAfter(H,A),h(L),E(A),m(L)),a.setAttrib(L,"id",""),i.fire("NewBlock",{newBlock:L}),c.add())}}}var a=i.dom,s=i.selection,l=i.settings,c=i.undoManager,u=i.schema,d=u.getNonEmptyElements();i.on("keydown",function(e){13==e.keyCode&&o(e)!==!1&&e.preventDefault()})}}),r(z,[],function(){return function(e){function t(){var t=i.getStart(),s=e.getBody(),l,c,u,d,f,p,h,m=-16777215,g,v,y,b,C;if(C=n.forced_root_block,t&&1===t.nodeType&&C){for(;t&&t!=s;){if(a[t.nodeName])return;t=t.parentNode}if(l=i.getRng(),l.setStart){c=l.startContainer,u=l.startOffset,d=l.endContainer,f=l.endOffset;try{v=e.getDoc().activeElement===s}catch(x){}}else l.item&&(t=l.item(0),l=e.getDoc().body.createTextRange(),l.moveToElementText(t)),v=l.parentElement().ownerDocument===e.getDoc(),y=l.duplicate(),y.collapse(!0),u=-1*y.move("character",m),y.collapsed||(y=l.duplicate(),y.collapse(!1),f=-1*y.move("character",m)-u);for(t=s.firstChild,b=s.nodeName.toLowerCase();t;)if((3===t.nodeType||1==t.nodeType&&!a[t.nodeName])&&o.isValidChild(b,C.toLowerCase())){if(3===t.nodeType&&0===t.nodeValue.length){h=t,t=t.nextSibling,r.remove(h);continue}p||(p=r.create(C,e.settings.forced_root_block_attrs),t.parentNode.insertBefore(p,t),g=!0),h=t,t=t.nextSibling,p.appendChild(h)}else p=null,t=t.nextSibling;if(g&&v){if(l.setStart)l.setStart(c,u),l.setEnd(d,f),i.setRng(l);else try{l=e.getDoc().body.createTextRange(),l.moveToElementText(s),l.collapse(!0),l.moveStart("character",u),f>0&&l.moveEnd("character",f),l.select()}catch(x){}e.nodeChanged()}}}var n=e.settings,r=e.dom,i=e.selection,o=e.schema,a=o.getBlockElements();n.forced_root_block&&e.on("NodeChange",t)}}),r(W,[T,d,u,M,x,h],function(e,n,r,i,o,a){var s=r.each,l=r.extend,c=r.map,u=r.inArray,d=r.explode,f=n.gecko,p=n.ie,h=n.ie&&n.ie<11,m=!0,g=!1;return function(r){function v(e,t,n){var r;return e=e.toLowerCase(),(r=T.exec[e])?(r(e,t,n),m):g}function y(e){var t;return e=e.toLowerCase(),(t=T.state[e])?t(e):-1}function b(e){var t;return e=e.toLowerCase(),(t=T.value[e])?t(e):g}function C(e,t){t=t||"exec",s(e,function(e,n){s(n.toLowerCase().split(","),function(n){T[t][n]=e})})}function x(e,n,i){return n===t&&(n=g),i===t&&(i=null),r.getDoc().execCommand(e,n,i)}function w(e){return A.match(e)}function _(e,n){A.toggle(e,n?{value:n}:t),r.nodeChanged()}function E(e){B=S.getBookmark(e)}function N(){S.moveToBookmark(B)}var k=r.dom,S=r.selection,T={state:{},exec:{},value:{}},R=r.settings,A=r.formatter,B;l(this,{execCommand:v,queryCommandState:y,queryCommandValue:b,addCommands:C}),C({"mceResetDesignMode,mceBeginUndoLevel":function(){},"mceEndUndoLevel,mceAddUndoLevel":function(){r.undoManager.add()},"Cut,Copy,Paste":function(e){var t=r.getDoc(),i;try{x(e)}catch(o){i=m}if(i||!t.queryCommandSupported(e)){var a=r.translate("Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X/C/V keyboard shortcuts instead.");n.mac&&(a=a.replace(/Ctrl\+/g,"\u2318+")),r.windowManager.alert(a)}},unlink:function(){if(S.isCollapsed()){var e=S.getNode();return void("A"==e.tagName&&r.dom.remove(e,!0))}A.remove("link")},"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(e){var t=e.substring(7);"full"==t&&(t="justify"),s("left,center,right,justify".split(","),function(e){t!=e&&A.remove("align"+e)}),_("align"+t),v("mceRepaint")},"InsertUnorderedList,InsertOrderedList":function(e){var t,n;x(e),t=k.getParent(S.getNode(),"ol,ul"),t&&(n=t.parentNode,/^(H[1-6]|P|ADDRESS|PRE)$/.test(n.nodeName)&&(E(),k.split(n,t),N()))},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){_(e)},"ForeColor,HiliteColor,FontName":function(e,t,n){_(e,n)},FontSize:function(e,t,n){var r,i;n>=1&&7>=n&&(i=d(R.font_size_style_values),r=d(R.font_size_classes),n=r?r[n-1]||n:i[n-1]||n),_(e,n)},RemoveFormat:function(e){A.remove(e)},mceBlockQuote:function(){_("blockquote")},FormatBlock:function(e,t,n){return _(n||"p")},mceCleanup:function(){var e=S.getBookmark();r.setContent(r.getContent({cleanup:m}),{cleanup:m}),S.moveToBookmark(e)},mceRemoveNode:function(e,t,n){var i=n||S.getNode();i!=r.getBody()&&(E(),r.dom.remove(i,m),N())},mceSelectNodeDepth:function(e,t,n){var i=0;k.getParent(S.getNode(),function(e){return 1==e.nodeType&&i++==n?(S.select(e),g):void 0},r.getBody())},mceSelectNode:function(e,t,n){S.select(n)},mceInsertContent:function(t,n,o){function a(e){function t(e){return r[e]&&3==r[e].nodeType}var n,r,i;return n=S.getRng(!0),r=n.startContainer,i=n.startOffset,3==r.nodeType&&(i>0?e=e.replace(/^&nbsp;/," "):t("previousSibling")||(e=e.replace(/^ /,"&nbsp;")),i<r.length?e=e.replace(/&nbsp;(<br>|)$/," "):t("nextSibling")||(e=e.replace(/(&nbsp;| )(<br>|)$/,"&nbsp;"))),e}function l(e){if(w)for(b=e.firstChild;b;b=b.walk(!0))_[b.name]&&b.attr("data-mce-new","true")}function c(){if(w){var e=r.getBody(),t=new i(k);s(k.select("*[data-mce-new]"),function(n){n.removeAttribute("data-mce-new");for(var r=n.parentNode;r&&r!=e;r=r.parentNode)t.compare(r,n)&&k.remove(n,!0)})}}var u,d,f,h,m,g,v,y,b,C,x,w,_=r.schema.getTextInlineElements();"string"!=typeof o&&(w=o.merge,o=o.content),/^ | $/.test(o)&&(o=a(o)),u=r.parser,d=new e({},r.schema),x='<span id="mce_marker" data-mce-type="bookmark">&#xFEFF;&#200B;</span>',g={content:o,format:"html",selection:!0},r.fire("BeforeSetContent",g),o=g.content,-1==o.indexOf("{$caret}")&&(o+="{$caret}"),o=o.replace(/\{\$caret\}/,x),y=S.getRng();var E=y.startContainer||(y.parentElement?y.parentElement():null),N=r.getBody();E===N&&S.isCollapsed()&&k.isBlock(N.firstChild)&&k.isEmpty(N.firstChild)&&(y=k.createRng(),y.setStart(N.firstChild,0),y.setEnd(N.firstChild,0),S.setRng(y)),S.isCollapsed()||r.getDoc().execCommand("Delete",!1,null),f=S.getNode();var T={context:f.nodeName.toLowerCase()};if(m=u.parse(o,T),l(m),b=m.lastChild,"mce_marker"==b.attr("id"))for(v=b,b=b.prev;b;b=b.walk(!0))if(3==b.type||!k.isBlock(b.name)){b.parent.insert(v,b,"br"===b.name);
+break}if(T.invalid){for(S.setContent(x),f=S.getNode(),h=r.getBody(),9==f.nodeType?f=b=h:b=f;b!==h;)f=b,b=b.parentNode;o=f==h?h.innerHTML:k.getOuterHTML(f),o=d.serialize(u.parse(o.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i,function(){return d.serialize(m)}))),f==h?k.setHTML(h,o):k.setOuterHTML(f,o)}else o=d.serialize(m),b=f.firstChild,C=f.lastChild,!b||b===C&&"BR"===b.nodeName?k.setHTML(f,o):S.setContent(o);c(),v=k.get("mce_marker"),S.scrollIntoView(v),y=k.createRng(),b=v.previousSibling,b&&3==b.nodeType?(y.setStart(b,b.nodeValue.length),p||(C=v.nextSibling,C&&3==C.nodeType&&(b.appendData(C.data),C.parentNode.removeChild(C)))):(y.setStartBefore(v),y.setEndBefore(v)),k.remove(v),S.setRng(y),r.fire("SetContent",g),r.addVisual()},mceInsertRawHTML:function(e,t,n){S.setContent("tiny_mce_marker"),r.setContent(r.getContent().replace(/tiny_mce_marker/g,function(){return n}))},mceToggleFormat:function(e,t,n){_(n)},mceSetContent:function(e,t,n){r.setContent(n)},"Indent,Outdent":function(e){var t,n,i;t=R.indentation,n=/[a-z%]+$/i.exec(t),t=parseInt(t,10),y("InsertUnorderedList")||y("InsertOrderedList")?x(e):(R.forced_root_block||k.getParent(S.getNode(),k.isBlock)||A.apply("div"),s(S.getSelectedBlocks(),function(o){if("LI"!=o.nodeName){var a=r.getParam("indent_use_margin",!1)?"margin":"padding";a+="rtl"==k.getStyle(o,"direction",!0)?"Right":"Left","outdent"==e?(i=Math.max(0,parseInt(o.style[a]||0,10)-t),k.setStyle(o,a,i?i+n:"")):(i=parseInt(o.style[a]||0,10)+t+n,k.setStyle(o,a,i))}}))},mceRepaint:function(){if(f)try{E(m),S.getSel()&&S.getSel().selectAllChildren(r.getBody()),S.collapse(m),N()}catch(e){}},InsertHorizontalRule:function(){r.execCommand("mceInsertContent",!1,"<hr />")},mceToggleVisualAid:function(){r.hasVisual=!r.hasVisual,r.addVisual()},mceReplaceContent:function(e,t,n){r.execCommand("mceInsertContent",!1,n.replace(/\{\$selection\}/g,S.getContent({format:"text"})))},mceInsertLink:function(e,t,n){var r;"string"==typeof n&&(n={href:n}),r=k.getParent(S.getNode(),"a"),n.href=n.href.replace(" ","%20"),r&&n.href||A.remove("link"),n.href&&A.apply("link",n,r)},selectAll:function(){var e=k.getRoot(),t;S.getRng().setStart?(t=k.createRng(),t.setStart(e,0),t.setEnd(e,e.childNodes.length),S.setRng(t)):(t=S.getRng(),t.item||(t.moveToElementText(e),t.select()))},"delete":function(){x("Delete");var e=r.getBody();k.isEmpty(e)&&(r.setContent(""),e.firstChild&&k.isBlock(e.firstChild)?r.selection.setCursorLocation(e.firstChild,0):r.selection.setCursorLocation(e,0))},mceNewDocument:function(){r.setContent("")},InsertLineBreak:function(e,t,n){function i(){for(var e=new a(p,v),t,n=r.schema.getNonEmptyElements();t=e.next();)if(n[t.nodeName.toLowerCase()]||t.length>0)return!0}var s=n,l,c,u,d=S.getRng(!0);new o(k).normalize(d);var f=d.startOffset,p=d.startContainer;if(1==p.nodeType&&p.hasChildNodes()){var g=f>p.childNodes.length-1;p=p.childNodes[Math.min(f,p.childNodes.length-1)]||p,f=g&&3==p.nodeType?p.nodeValue.length:0}var v=k.getParent(p,k.isBlock),y=v?v.nodeName.toUpperCase():"",b=v?k.getParent(v.parentNode,k.isBlock):null,C=b?b.nodeName.toUpperCase():"",x=s&&s.ctrlKey;"LI"!=C||x||(v=b,y=C),p&&3==p.nodeType&&f>=p.nodeValue.length&&(h||i()||(l=k.create("br"),d.insertNode(l),d.setStartAfter(l),d.setEndAfter(l),c=!0)),l=k.create("br"),d.insertNode(l);var w=k.doc.documentMode;return h&&"PRE"==y&&(!w||8>w)&&l.parentNode.insertBefore(k.doc.createTextNode("\r"),l),u=k.create("span",{},"&nbsp;"),l.parentNode.insertBefore(u,l),S.scrollIntoView(u),k.remove(u),c?(d.setStartBefore(l),d.setEndBefore(l)):(d.setStartAfter(l),d.setEndAfter(l)),S.setRng(d),r.undoManager.add(),m}}),C({"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(e){var t="align"+e.substring(7),n=S.isCollapsed()?[k.getParent(S.getNode(),k.isBlock)]:S.getSelectedBlocks(),r=c(n,function(e){return!!A.matchNode(e,t)});return-1!==u(r,m)},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){return w(e)},mceBlockQuote:function(){return w("blockquote")},Outdent:function(){var e;if(R.inline_styles){if((e=k.getParent(S.getStart(),k.isBlock))&&parseInt(e.style.paddingLeft,10)>0)return m;if((e=k.getParent(S.getEnd(),k.isBlock))&&parseInt(e.style.paddingLeft,10)>0)return m}return y("InsertUnorderedList")||y("InsertOrderedList")||!R.inline_styles&&!!k.getParent(S.getNode(),"BLOCKQUOTE")},"InsertUnorderedList,InsertOrderedList":function(e){var t=k.getParent(S.getNode(),"ul,ol");return t&&("insertunorderedlist"===e&&"UL"===t.tagName||"insertorderedlist"===e&&"OL"===t.tagName)}},"state"),C({"FontSize,FontName":function(e){var t=0,n;return(n=k.getParent(S.getNode(),"span"))&&(t="fontsize"==e?n.style.fontSize:n.style.fontFamily.replace(/, /g,",").replace(/[\'\"]/g,"").toLowerCase()),t}},"value"),C({Undo:function(){r.undoManager.undo()},Redo:function(){r.undoManager.redo()}})}}),r(V,[u],function(e){function t(e,o){var a=this,s,l;if(e=r(e),o=a.settings=o||{},s=o.base_uri,/^([\w\-]+):([^\/]{2})/i.test(e)||/^\s*#/.test(e))return void(a.source=e);var c=0===e.indexOf("//");0!==e.indexOf("/")||c||(e=(s?s.protocol||"http":"http")+"://mce_host"+e),/^[\w\-]*:?\/\//.test(e)||(l=o.base_uri?o.base_uri.path:new t(location.href).directory,""===o.base_uri.protocol?e="//mce_host"+a.toAbsPath(l,e):(e=/([^#?]*)([#?]?.*)/.exec(e),e=(s&&s.protocol||"http")+"://mce_host"+a.toAbsPath(l,e[1])+e[2])),e=e.replace(/@@/g,"(mce_at)"),e=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(e),n(i,function(t,n){var r=e[n];r&&(r=r.replace(/\(mce_at\)/g,"@@")),a[t]=r}),s&&(a.protocol||(a.protocol=s.protocol),a.userInfo||(a.userInfo=s.userInfo),a.port||"mce_host"!==a.host||(a.port=s.port),a.host&&"mce_host"!==a.host||(a.host=s.host),a.source=""),c&&(a.protocol="")}var n=e.each,r=e.trim,i="source protocol authority userInfo user password host port relative path directory file query anchor".split(" "),o={ftp:21,http:80,https:443,mailto:25};return t.prototype={setPath:function(e){var t=this;e=/^(.*?)\/?(\w+)?$/.exec(e),t.path=e[0],t.directory=e[1],t.file=e[2],t.source="",t.getURI()},toRelative:function(e){var n=this,r;if("./"===e)return e;if(e=new t(e,{base_uri:n}),"mce_host"!=e.host&&n.host!=e.host&&e.host||n.port!=e.port||n.protocol!=e.protocol&&""!==e.protocol)return e.getURI();var i=n.getURI(),o=e.getURI();return i==o||"/"==i.charAt(i.length-1)&&i.substr(0,i.length-1)==o?i:(r=n.toRelPath(n.path,e.path),e.query&&(r+="?"+e.query),e.anchor&&(r+="#"+e.anchor),r)},toAbsolute:function(e,n){return e=new t(e,{base_uri:this}),e.getURI(n&&this.isSameOrigin(e))},isSameOrigin:function(e){if(this.host==e.host&&this.protocol==e.protocol){if(this.port==e.port)return!0;var t=o[this.protocol];if(t&&(this.port||t)==(e.port||t))return!0}return!1},toRelPath:function(e,t){var n,r=0,i="",o,a;if(e=e.substring(0,e.lastIndexOf("/")),e=e.split("/"),n=t.split("/"),e.length>=n.length)for(o=0,a=e.length;a>o;o++)if(o>=n.length||e[o]!=n[o]){r=o+1;break}if(e.length<n.length)for(o=0,a=n.length;a>o;o++)if(o>=e.length||e[o]!=n[o]){r=o+1;break}if(1===r)return t;for(o=0,a=e.length-(r-1);a>o;o++)i+="../";for(o=r-1,a=n.length;a>o;o++)i+=o!=r-1?"/"+n[o]:n[o];return i},toAbsPath:function(e,t){var r,i=0,o=[],a,s;for(a=/\/$/.test(t)?"/":"",e=e.split("/"),t=t.split("/"),n(e,function(e){e&&o.push(e)}),e=o,r=t.length-1,o=[];r>=0;r--)0!==t[r].length&&"."!==t[r]&&(".."!==t[r]?i>0?i--:o.push(t[r]):i++);return r=e.length-i,s=0>=r?o.reverse().join("/"):e.slice(0,r).join("/")+"/"+o.reverse().join("/"),0!==s.indexOf("/")&&(s="/"+s),a&&s.lastIndexOf("/")!==s.length-1&&(s+=a),s},getURI:function(e){var t,n=this;return(!n.source||e)&&(t="",e||(t+=n.protocol?n.protocol+"://":"//",n.userInfo&&(t+=n.userInfo+"@"),n.host&&(t+=n.host),n.port&&(t+=":"+n.port)),n.path&&(t+=n.path),n.query&&(t+="?"+n.query),n.anchor&&(t+="#"+n.anchor),n.source=t),n.source}},t}),r(U,[u],function(e){function t(){}var n=e.each,r=e.extend,i,o;return t.extend=i=function(e){function t(){var e,t,n,r=this;if(!o&&(r.init&&r.init.apply(r,arguments),t=r.Mixins))for(e=t.length;e--;)n=t[e],n.init&&n.init.apply(r,arguments)}function a(){return this}function s(e,t){return function(){var n=this,r=n._super,i;return n._super=c[e],i=t.apply(n,arguments),n._super=r,i}}var l=this,c=l.prototype,u,d,f;o=!0,u=new l,o=!1,e.Mixins&&(n(e.Mixins,function(t){t=t;for(var n in t)"init"!==n&&(e[n]=t[n])}),c.Mixins&&(e.Mixins=c.Mixins.concat(e.Mixins))),e.Methods&&n(e.Methods.split(","),function(t){e[t]=a}),e.Properties&&n(e.Properties.split(","),function(t){var n="_"+t;e[t]=function(e){var t=this,r;return e!==r?(t[n]=e,t):t[n]}}),e.Statics&&n(e.Statics,function(e,n){t[n]=e}),e.Defaults&&c.Defaults&&(e.Defaults=r({},c.Defaults,e.Defaults));for(d in e)f=e[d],u[d]="function"==typeof f&&c[d]?s(d,f):f;return t.prototype=u,t.constructor=t,t.extend=i,t},t}),r($,[u],function(e){function t(e){function t(){return!1}function n(){return!0}function r(r,i){var a,s,l,d;if(r=r.toLowerCase(),i=i||{},i.type=r,i.target||(i.target=c),i.preventDefault||(i.preventDefault=function(){i.isDefaultPrevented=n},i.stopPropagation=function(){i.isPropagationStopped=n},i.stopImmediatePropagation=function(){i.isImmediatePropagationStopped=n},i.isDefaultPrevented=t,i.isPropagationStopped=t,i.isImmediatePropagationStopped=t),e.beforeFire&&e.beforeFire(i),a=u[r])for(s=0,l=a.length;l>s;s++){if(a[s]=d=a[s],d.once&&o(r,d),i.isImmediatePropagationStopped())return i.stopPropagation(),i;if(d.call(c,i)===!1)return i.preventDefault(),i}return i}function i(e,n,r){var i,o,a;if(n===!1&&(n=t),n)for(o=e.toLowerCase().split(" "),a=o.length;a--;)e=o[a],i=u[e],i||(i=u[e]=[],d(e,!0)),r?i.unshift(n):i.push(n);return l}function o(e,t){var n,r,i,o,a;if(e)for(o=e.toLowerCase().split(" "),n=o.length;n--;){if(e=o[n],r=u[e],!e){for(i in u)d(i,!1),delete u[i];return l}if(r){if(t)for(a=r.length;a--;)r[a]===t&&(r=r.slice(0,a).concat(r.slice(a+1)),u[e]=r);else r.length=0;r.length||(d(e,!1),delete u[e])}}else{for(e in u)d(e,!1);u={}}return l}function a(e,t,n){return t.once=!0,i(e,t,n)}function s(e){return e=e.toLowerCase(),!(!u[e]||0===u[e].length)}var l=this,c,u={},d;e=e||{},c=e.scope||l,d=e.toggleEvent||t,l.fire=r,l.on=i,l.off=o,l.once=a,l.has=s}var n=e.makeMap("focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange mouseout mouseenter mouseleave wheel keydown keypress keyup input contextmenu dragstart dragend dragover draggesture dragdrop drop drag submit compositionstart compositionend compositionupdate touchstart touchend"," ");return t.isNative=function(e){return!!n[e.toLowerCase()]},t}),r(q,[U],function(e){function t(e){for(var t=[],n=e.length,r;n--;)r=e[n],r.__checked||(t.push(r),r.__checked=1);for(n=t.length;n--;)delete t[n].__checked;return t}var n=/^([\w\\*]+)?(?:#([\w\\]+))?(?:\.([\w\\\.]+))?(?:\[\@?([\w\\]+)([\^\$\*!~]?=)([\w\\]+)\])?(?:\:(.+))?/i,r=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,i=/^\s*|\s*$/g,o,a=e.extend({init:function(e){function t(e){return e?(e=e.toLowerCase(),function(t){return"*"===e||t.type===e}):void 0}function o(e){return e?function(t){return t._name===e}:void 0}function a(e){return e?(e=e.split("."),function(t){for(var n=e.length;n--;)if(!t.hasClass(e[n]))return!1;return!0}):void 0}function s(e,t,n){return e?function(r){var i=r[e]?r[e]():"";return t?"="===t?i===n:"*="===t?i.indexOf(n)>=0:"~="===t?(" "+i+" ").indexOf(" "+n+" ")>=0:"!="===t?i!=n:"^="===t?0===i.indexOf(n):"$="===t?i.substr(i.length-n.length)===n:!1:!!n}:void 0}function l(e){var t;return e?(e=/(?:not\((.+)\))|(.+)/i.exec(e),e[1]?(t=u(e[1],[]),function(e){return!d(e,t)}):(e=e[2],function(t,n,r){return"first"===e?0===n:"last"===e?n===r-1:"even"===e?n%2===0:"odd"===e?n%2===1:t[e]?t[e]():!1})):void 0}function c(e,r,c){function u(e){e&&r.push(e)}var d;return d=n.exec(e.replace(i,"")),u(t(d[1])),u(o(d[2])),u(a(d[3])),u(s(d[4],d[5],d[6])),u(l(d[7])),r.psuedo=!!d[7],r.direct=c,r}function u(e,t){var n=[],i,o,a;do if(r.exec(""),o=r.exec(e),o&&(e=o[3],n.push(o[1]),o[2])){i=o[3];break}while(o);for(i&&u(i,t),e=[],a=0;a<n.length;a++)">"!=n[a]&&e.push(c(n[a],[],">"===n[a-1]));return t.push(e),t}var d=this.match;this._selectors=u(e,[])},match:function(e,t){var n,r,i,o,a,s,l,c,u,d,f,p,h;for(t=t||this._selectors,n=0,r=t.length;r>n;n++){for(a=t[n],o=a.length,h=e,p=0,i=o-1;i>=0;i--)for(c=a[i];h;){if(c.psuedo)for(f=h.parent().items(),u=d=f.length;u--&&f[u]!==h;);for(s=0,l=c.length;l>s;s++)if(!c[s](h,u,d)){s=l+1;break}if(s===l){p++;break}if(i===o-1)break;h=h.parent()}if(p===o)return!0}return!1},find:function(e){function n(e,t,i){var o,a,s,l,c,u=t[i];for(o=0,a=e.length;a>o;o++){for(c=e[o],s=0,l=u.length;l>s;s++)if(!u[s](c,o,a)){s=l+1;break}if(s===l)i==t.length-1?r.push(c):c.items&&n(c.items(),t,i+1);else if(u.direct)return;c.items&&n(c.items(),t,i)}}var r=[],i,s,l=this._selectors;if(e.items){for(i=0,s=l.length;s>i;i++)n(e.items(),l[i],0);s>1&&(r=t(r))}return o||(o=a.Collection),new o(r)}});return a}),r(j,[u,q,U],function(e,t,n){var r,i,o=Array.prototype.push,a=Array.prototype.slice;return i={length:0,init:function(e){e&&this.add(e)},add:function(t){var n=this;return e.isArray(t)?o.apply(n,t):t instanceof r?n.add(t.toArray()):o.call(n,t),n},set:function(e){var t=this,n=t.length,r;for(t.length=0,t.add(e),r=t.length;n>r;r++)delete t[r];return t},filter:function(e){var n=this,i,o,a=[],s,l;for("string"==typeof e?(e=new t(e),l=function(t){return e.match(t)}):l=e,i=0,o=n.length;o>i;i++)s=n[i],l(s)&&a.push(s);return new r(a)},slice:function(){return new r(a.apply(this,arguments))},eq:function(e){return-1===e?this.slice(e):this.slice(e,+e+1)},each:function(t){return e.each(this,t),this},toArray:function(){return e.toArray(this)},indexOf:function(e){for(var t=this,n=t.length;n--&&t[n]!==e;);return n},reverse:function(){return new r(e.toArray(this).reverse())},hasClass:function(e){return this[0]?this[0].hasClass(e):!1},prop:function(e,t){var n=this,r,i;return t!==r?(n.each(function(n){n[e]&&n[e](t)}),n):(i=n[0],i&&i[e]?i[e]():void 0)},exec:function(t){var n=this,r=e.toArray(arguments).slice(1);return n.each(function(e){e[t]&&e[t].apply(e,r)}),n},remove:function(){for(var e=this.length;e--;)this[e].remove();return this}},e.each("fire on off show hide addClass removeClass append prepend before after reflow".split(" "),function(t){i[t]=function(){var n=e.toArray(arguments);return this.each(function(e){t in e&&e[t].apply(e,n)}),this}}),e.each("text name disabled active selected checked visible parent value data".split(" "),function(e){i[e]=function(t){return this.prop(e,t)}}),r=n.extend(i),t.Collection=r,r}),r(Y,[u,y],function(e,t){var n=0;return{id:function(){return"mceu_"+n++},createFragment:function(e){return t.DOM.createFragment(e)},getWindowSize:function(){return t.DOM.getViewPort()},getSize:function(e){var t,n;if(e.getBoundingClientRect){var r=e.getBoundingClientRect();t=Math.max(r.width||r.right-r.left,e.offsetWidth),n=Math.max(r.height||r.bottom-r.bottom,e.offsetHeight)}else t=e.offsetWidth,n=e.offsetHeight;return{width:t,height:n}},getPos:function(e,n){return t.DOM.getPos(e,n)},getViewPort:function(e){return t.DOM.getViewPort(e)},get:function(e){return document.getElementById(e)},addClass:function(e,n){return t.DOM.addClass(e,n)},removeClass:function(e,n){return t.DOM.removeClass(e,n)},hasClass:function(e,n){return t.DOM.hasClass(e,n)},toggleClass:function(e,n,r){return t.DOM.toggleClass(e,n,r)},css:function(e,n,r){return t.DOM.setStyle(e,n,r)},on:function(e,n,r,i){return t.DOM.bind(e,n,r,i)},off:function(e,n,r){return t.DOM.unbind(e,n,r)},fire:function(e,n,r){return t.DOM.fire(e,n,r)},innerHtml:function(e,n){t.DOM.setHTML(e,n)}}}),r(K,[U,u,$,j,Y],function(e,t,n,r,i){function o(e){return e._eventDispatcher||(e._eventDispatcher=new n({scope:e,toggleEvent:function(t,r){r&&n.isNative(t)&&(e._nativeEvents||(e._nativeEvents={}),e._nativeEvents[t]=!0,e._rendered&&e.bindPendingEvents())}})),e._eventDispatcher}var a="onmousewheel"in document,s=!1,l="mce-",c=e.extend({Statics:{classPrefix:l},isRtl:function(){return c.rtl},classPrefix:l,init:function(e){var n=this,r,o;if(n.settings=e=t.extend({},n.Defaults,e),n._id=e.id||i.id(),n._text=n._name="",n._width=n._height=0,n._aria={role:e.role},this._elmCache={},r=e.classes)for(r=r.split(" "),r.map={},o=r.length;o--;)r.map[r[o]]=!0;n._classes=r||[],n.visible(!0),t.each("title text width height name classes visible disabled active value".split(" "),function(t){var r=e[t],i;r!==i?n[t](r):n["_"+t]===i&&(n["_"+t]=!1)}),n.on("click",function(){return n.disabled()?!1:void 0}),e.classes&&t.each(e.classes.split(" "),function(e){n.addClass(e)}),n.settings=e,n._borderBox=n.parseBox(e.border),n._paddingBox=n.parseBox(e.padding),n._marginBox=n.parseBox(e.margin),e.hidden&&n.hide()},Properties:"parent,title,text,width,height,disabled,active,name,value",Methods:"renderHtml",getContainerElm:function(){return document.body},getParentCtrl:function(e){for(var t,n=this.getRoot().controlIdLookup;e&&n&&!(t=n[e.id]);)e=e.parentNode;return t},parseBox:function(e){var t,n=10;if(e)return"number"==typeof e?(e=e||0,{top:e,left:e,bottom:e,right:e}):(e=e.split(" "),t=e.length,1===t?e[1]=e[2]=e[3]=e[0]:2===t?(e[2]=e[0],e[3]=e[1]):3===t&&(e[3]=e[1]),{top:parseInt(e[0],n)||0,right:parseInt(e[1],n)||0,bottom:parseInt(e[2],n)||0,left:parseInt(e[3],n)||0})},borderBox:function(){return this._borderBox},paddingBox:function(){return this._paddingBox},marginBox:function(){return this._marginBox},measureBox:function(e,t){function n(t){var n=document.defaultView;return n?(t=t.replace(/[A-Z]/g,function(e){return"-"+e}),n.getComputedStyle(e,null).getPropertyValue(t)):e.currentStyle[t]}function r(e){var t=parseFloat(n(e),10);return isNaN(t)?0:t}return{top:r(t+"TopWidth"),right:r(t+"RightWidth"),bottom:r(t+"BottomWidth"),left:r(t+"LeftWidth")}},initLayoutRect:function(){var e=this,t=e.settings,n,r,o=e.getEl(),a,s,l,c,u,d,f,p;n=e._borderBox=e._borderBox||e.measureBox(o,"border"),e._paddingBox=e._paddingBox||e.measureBox(o,"padding"),e._marginBox=e._marginBox||e.measureBox(o,"margin"),p=i.getSize(o),d=t.minWidth,f=t.minHeight,l=d||p.width,c=f||p.height,a=t.width,s=t.height,u=t.autoResize,u="undefined"!=typeof u?u:!a&&!s,a=a||l,s=s||c;var h=n.left+n.right,m=n.top+n.bottom,g=t.maxWidth||65535,v=t.maxHeight||65535;return e._layoutRect=r={x:t.x||0,y:t.y||0,w:a,h:s,deltaW:h,deltaH:m,contentW:a-h,contentH:s-m,innerW:a-h,innerH:s-m,startMinWidth:d||0,startMinHeight:f||0,minW:Math.min(l,g),minH:Math.min(c,v),maxW:g,maxH:v,autoResize:u,scrollW:0},e._lastLayoutRect={},r},layoutRect:function(e){var t=this,n=t._layoutRect,r,i,o,a,s,l;return n||(n=t.initLayoutRect()),e?(o=n.deltaW,a=n.deltaH,e.x!==s&&(n.x=e.x),e.y!==s&&(n.y=e.y),e.minW!==s&&(n.minW=e.minW),e.minH!==s&&(n.minH=e.minH),i=e.w,i!==s&&(i=i<n.minW?n.minW:i,i=i>n.maxW?n.maxW:i,n.w=i,n.innerW=i-o),i=e.h,i!==s&&(i=i<n.minH?n.minH:i,i=i>n.maxH?n.maxH:i,n.h=i,n.innerH=i-a),i=e.innerW,i!==s&&(i=i<n.minW-o?n.minW-o:i,i=i>n.maxW-o?n.maxW-o:i,n.innerW=i,n.w=i+o),i=e.innerH,i!==s&&(i=i<n.minH-a?n.minH-a:i,i=i>n.maxH-a?n.maxH-a:i,n.innerH=i,n.h=i+a),e.contentW!==s&&(n.contentW=e.contentW),e.contentH!==s&&(n.contentH=e.contentH),r=t._lastLayoutRect,(r.x!==n.x||r.y!==n.y||r.w!==n.w||r.h!==n.h)&&(l=c.repaintControls,l&&l.map&&!l.map[t._id]&&(l.push(t),l.map[t._id]=!0),r.x=n.x,r.y=n.y,r.w=n.w,r.h=n.h),t):n},repaint:function(){var e=this,t,n,r,i,o=0,a=0,s,l;l=document.createRange?function(e){return e}:Math.round,t=e.getEl().style,r=e._layoutRect,s=e._lastRepaintRect||{},i=e._borderBox,o=i.left+i.right,a=i.top+i.bottom,r.x!==s.x&&(t.left=l(r.x)+"px",s.x=r.x),r.y!==s.y&&(t.top=l(r.y)+"px",s.y=r.y),r.w!==s.w&&(t.width=l(r.w-o)+"px",s.w=r.w),r.h!==s.h&&(t.height=l(r.h-a)+"px",s.h=r.h),e._hasBody&&r.innerW!==s.innerW&&(n=e.getEl("body").style,n.width=l(r.innerW)+"px",s.innerW=r.innerW),e._hasBody&&r.innerH!==s.innerH&&(n=n||e.getEl("body").style,n.height=l(r.innerH)+"px",s.innerH=r.innerH),e._lastRepaintRect=s,e.fire("repaint",{},!1)},on:function(e,t){function n(e){var t,n;return"string"!=typeof e?e:function(i){return t||r.parentsAndSelf().each(function(r){var i=r.settings.callbacks;return i&&(t=i[e])?(n=r,!1):void 0}),t.call(n,i)}}var r=this;return o(r).on(e,n(t)),r},off:function(e,t){return o(this).off(e,t),this},fire:function(e,t,n){var r=this;if(t=t||{},t.control||(t.control=r),t=o(r).fire(e,t),n!==!1&&r.parent)for(var i=r.parent();i&&!t.isPropagationStopped();)i.fire(e,t,!1),i=i.parent();return t},hasEventListeners:function(e){return o(this).has(e)},parents:function(e){var t=this,n,i=new r;for(n=t.parent();n;n=n.parent())i.add(n);return e&&(i=i.filter(e)),i},parentsAndSelf:function(e){return new r(this).add(this.parents(e))},next:function(){var e=this.parent().items();return e[e.indexOf(this)+1]},prev:function(){var e=this.parent().items();return e[e.indexOf(this)-1]},findCommonAncestor:function(e,t){for(var n;e;){for(n=t;n&&e!=n;)n=n.parent();if(e==n)break;e=e.parent()}return e},hasClass:function(e,t){var n=this._classes[t||"control"];return e=this.classPrefix+e,n&&!!n.map[e]},addClass:function(e,t){var n=this,r,i;return e=this.classPrefix+e,r=n._classes[t||"control"],r||(r=[],r.map={},n._classes[t||"control"]=r),r.map[e]||(r.map[e]=e,r.push(e),n._rendered&&(i=n.getEl(t),i&&(i.className=r.join(" ")))),n},removeClass:function(e,t){var n=this,r,i,o;if(e=this.classPrefix+e,r=n._classes[t||"control"],r&&r.map[e])for(delete r.map[e],i=r.length;i--;)r[i]===e&&r.splice(i,1);return n._rendered&&(o=n.getEl(t),o&&(o.className=r.join(" "))),n},toggleClass:function(e,t,n){var r=this;return t?r.addClass(e,n):r.removeClass(e,n),r},classes:function(e){var t=this._classes[e||"control"];return t?t.join(" "):""},innerHtml:function(e){return i.innerHtml(this.getEl(),e),this},getEl:function(e){var t=e?this._id+"-"+e:this._id;return this._elmCache[t]||(this._elmCache[t]=i.get(t)),this._elmCache[t]},visible:function(e){var t=this,n;return"undefined"!=typeof e?(t._visible!==e&&(t._rendered&&(t.getEl().style.display=e?"":"none"),t._visible=e,n=t.parent(),n&&(n._lastRect=null),t.fire(e?"show":"hide")),t):t._visible},show:function(){return this.visible(!0)},hide:function(){return this.visible(!1)},focus:function(){try{this.getEl().focus()}catch(e){}return this},blur:function(){return this.getEl().blur(),this},aria:function(e,t){var n=this,r=n.getEl(n.ariaTarget);return"undefined"==typeof t?n._aria[e]:(n._aria[e]=t,n._rendered&&r.setAttribute("role"==e?e:"aria-"+e,t),n)},encode:function(e,t){return t!==!1&&(e=this.translate(e)),(e||"").replace(/[&<>"]/g,function(e){return"&#"+e.charCodeAt(0)+";"})},translate:function(e){return c.translate?c.translate(e):e},before:function(e){var t=this,n=t.parent();return n&&n.insert(e,n.items().indexOf(t),!0),t},after:function(e){var t=this,n=t.parent();return n&&n.insert(e,n.items().indexOf(t)),t},remove:function(){var e=this,t=e.getEl(),n=e.parent(),r,o;if(e.items){var a=e.items().toArray();for(o=a.length;o--;)a[o].remove()}n&&n.items&&(r=[],n.items().each(function(t){t!==e&&r.push(t)}),n.items().set(r),n._lastRect=null),e._eventsRoot&&e._eventsRoot==e&&i.off(t);var s=e.getRoot().controlIdLookup;return s&&delete s[e._id],t&&t.parentNode&&t.parentNode.removeChild(t),e._rendered=!1,e},renderBefore:function(e){var t=this;return e.parentNode.insertBefore(i.createFragment(t.renderHtml()),e),t.postRender(),t},renderTo:function(e){var t=this;return e=e||t.getContainerElm(),e.appendChild(i.createFragment(t.renderHtml())),t.postRender(),t},postRender:function(){var e=this,t=e.settings,n,r,o,a,s;for(a in t)0===a.indexOf("on")&&e.on(a.substr(2),t[a]);if(e._eventsRoot){for(o=e.parent();!s&&o;o=o.parent())s=o._eventsRoot;if(s)for(a in s._nativeEvents)e._nativeEvents[a]=!0}e.bindPendingEvents(),t.style&&(n=e.getEl(),n&&(n.setAttribute("style",t.style),n.style.cssText=t.style)),e._visible||i.css(e.getEl(),"display","none"),e.settings.border&&(r=e.borderBox(),i.css(e.getEl(),{"border-top-width":r.top,"border-right-width":r.right,"border-bottom-width":r.bottom,"border-left-width":r.left}));var l=e.getRoot();l.controlIdLookup||(l.controlIdLookup={}),l.controlIdLookup[e._id]=e;for(var c in e._aria)e.aria(c,e._aria[c]);e.fire("postrender",{},!1)},scrollIntoView:function(e){function t(e,t){var n,r,i=e;for(n=r=0;i&&i!=t&&i.nodeType;)n+=i.offsetLeft||0,r+=i.offsetTop||0,i=i.offsetParent;return{x:n,y:r}}var n=this.getEl(),r=n.parentNode,i,o,a,s,l,c,u=t(n,r);return i=u.x,o=u.y,a=n.offsetWidth,s=n.offsetHeight,l=r.clientWidth,c=r.clientHeight,"end"==e?(i-=l-a,o-=c-s):"center"==e&&(i-=l/2-a/2,o-=c/2-s/2),r.scrollLeft=i,r.scrollTop=o,this},bindPendingEvents:function(){function e(e){var t=o.getParentCtrl(e.target);t&&t.fire(e.type,e)}function t(){var e=d._lastHoverCtrl;e&&(e.fire("mouseleave",{target:e.getEl()}),e.parents().each(function(e){e.fire("mouseleave",{target:e.getEl()})}),d._lastHoverCtrl=null)}function n(e){var t=o.getParentCtrl(e.target),n=d._lastHoverCtrl,r=0,i,a,s;if(t!==n){if(d._lastHoverCtrl=t,a=t.parents().toArray().reverse(),a.push(t),n){for(s=n.parents().toArray().reverse(),s.push(n),r=0;r<s.length&&a[r]===s[r];r++);for(i=s.length-1;i>=r;i--)n=s[i],n.fire("mouseleave",{target:n.getEl()})}for(i=r;i<a.length;i++)t=a[i],t.fire("mouseenter",{target:t.getEl()})}}function r(e){e.preventDefault(),"mousewheel"==e.type?(e.deltaY=-1/40*e.wheelDelta,e.wheelDeltaX&&(e.deltaX=-1/40*e.wheelDeltaX)):(e.deltaX=0,e.deltaY=e.detail),e=o.fire("wheel",e)}var o=this,l,c,u,d,f,p;if(o._rendered=!0,f=o._nativeEvents){for(u=o.parents().toArray(),u.unshift(o),l=0,c=u.length;!d&&c>l;l++)d=u[l]._eventsRoot;for(d||(d=u[u.length-1]||o),o._eventsRoot=d,c=l,l=0;c>l;l++)u[l]._eventsRoot=d;var h=d._delegates;h||(h=d._delegates={});for(p in f){if(!f)return!1;"wheel"!==p||s?("mouseenter"===p||"mouseleave"===p?d._hasMouseEnter||(i.on(d.getEl(),"mouseleave",t),i.on(d.getEl(),"mouseover",n),d._hasMouseEnter=1):h[p]||(i.on(d.getEl(),p,e),h[p]=!0),f[p]=!1):a?i.on(o.getEl(),"mousewheel",r):i.on(o.getEl(),"DOMMouseScroll",r)}}},getRoot:function(){for(var e=this,t,n=[];e;){if(e.rootControl){t=e.rootControl;break}n.push(e),t=e,e=e.parent()}t||(t=this);for(var r=n.length;r--;)n[r].rootControl=t;return t},reflow:function(){return this.repaint(),this}});return c}),r(G,[],function(){var e={},t;return{add:function(t,n){e[t.toLowerCase()]=n},has:function(t){return!!e[t.toLowerCase()]},create:function(n,r){var i,o,a;if(!t){a=tinymce.ui;for(o in a)e[o.toLowerCase()]=a[o];t=!0}if("string"==typeof n?(r=r||{},r.type=n):(r=n,n=r.type),n=n.toLowerCase(),i=e[n],!i)throw new Error("Could not find control by type: "+n);return i=new i(r),i.type=n,i}}}),r(X,[],function(){return function(e){function t(e){return e=e||b,e&&e.getAttribute("role")}function n(e){for(var n,r=e||b;r=r.parentNode;)if(n=t(r))return n}function r(e){var t=b;return t?t.getAttribute("aria-"+e):void 0}function i(e){var t=e.tagName.toUpperCase();return"INPUT"==t||"TEXTAREA"==t}function o(e){return i(e)&&!e.hidden?!0:/^(button|menuitem|checkbox|tab|menuitemcheckbox|option|gridcell)$/.test(t(e))?!0:!1}function a(e){function t(e){if(1==e.nodeType&&"none"!=e.style.display){o(e)&&n.push(e);for(var r=0;r<e.childNodes.length;r++)t(e.childNodes[r])}}var n=[];return t(e||y.getEl()),n}function s(e){var t,n;e=e||C,n=e.parents().toArray(),n.unshift(e);for(var r=0;r<n.length&&(t=n[r],!t.settings.ariaRoot);r++);return t}function l(e){var t=s(e),n=a(t.getEl());t.settings.ariaRemember&&"lastAriaIndex"in t?c(t.lastAriaIndex,n):c(0,n)}function c(e,t){return 0>e?e=t.length-1:e>=t.length&&(e=0),t[e]&&t[e].focus(),e}function u(e,t){var n=-1,r=s();t=t||a(r.getEl());for(var i=0;i<t.length;i++)t[i]===b&&(n=i);n+=e,r.lastAriaIndex=c(n,t)}function d(){var e=n();"tablist"==e?u(-1,a(b.parentNode)):C.parent().submenu?g():u(-1)}function f(){var e=t(),i=n();"tablist"==i?u(1,a(b.parentNode)):"menuitem"==e&&"menu"==i&&r("haspopup")?v():u(1)}function p(){u(-1)}function h(){var e=t(),i=n();"menuitem"==e&&"menubar"==i?v():"button"==e&&r("haspopup")?v({key:"down"}):u(1)}function m(e){var t=n();if("tablist"==t){var r=a(C.getEl("body"))[0];r&&r.focus()}else u(e.shiftKey?-1:1)}function g(){C.fire("cancel")}function v(e){e=e||{},C.fire("click",{target:b,aria:e})}var y=e.root,b,C;try{b=document.activeElement}catch(x){b=document.body}return C=y.getParentCtrl(b),y.on("keydown",function(e){function t(e,t){i(b)||t(e)!==!1&&e.preventDefault()}if(!e.isDefaultPrevented())switch(e.keyCode){case 37:t(e,d);break;case 39:t(e,f);break;case 38:t(e,p);break;case 40:t(e,h);break;case 27:g();break;case 14:case 13:case 32:t(e,v);break;case 9:m(e)!==!1&&e.preventDefault()}}),y.on("focusin",function(e){b=e.target,C=e.control}),{focusFirst:l}}}),r(J,[K,j,q,G,X,u,Y],function(e,t,n,r,i,o,a){var s={};return e.extend({layout:"",innerClass:"container-inner",init:function(e){var n=this;n._super(e),e=n.settings,n._fixed=e.fixed,n._items=new t,n.isRtl()&&n.addClass("rtl"),n.addClass("container"),n.addClass("container-body","body"),e.containerCls&&n.addClass(e.containerCls),n._layout=r.create((e.layout||n.layout)+"layout"),n.settings.items&&n.add(n.settings.items),n._hasBody=!0},items:function(){return this._items},find:function(e){return e=s[e]=s[e]||new n(e),e.find(this)},add:function(e){var t=this;return t.items().add(t.create(e)).parent(t),t},focus:function(e){var t=this,n,r,i;return e&&(r=t.keyboardNav||t.parents().eq(-1)[0].keyboardNav)?void r.focusFirst(t):(i=t.find("*"),t.statusbar&&i.add(t.statusbar.items()),i.each(function(e){return e.settings.autofocus?(n=null,!1):void(e.canFocus&&(n=n||e))}),n&&n.focus(),t)},replace:function(e,t){for(var n,r=this.items(),i=r.length;i--;)if(r[i]===e){r[i]=t;break}i>=0&&(n=t.getEl(),n&&n.parentNode.removeChild(n),n=e.getEl(),n&&n.parentNode.removeChild(n)),t.parent(this)},create:function(t){var n=this,i,a=[];return o.isArray(t)||(t=[t]),o.each(t,function(t){t&&(t instanceof e||("string"==typeof t&&(t={type:t}),i=o.extend({},n.settings.defaults,t),t.type=i.type=i.type||t.type||n.settings.defaultType||(i.defaults?i.defaults.type:null),t=r.create(i)),a.push(t))}),a},renderNew:function(){var e=this;return e.items().each(function(t,n){var r,i;t.parent(e),t._rendered||(r=e.getEl("body"),i=a.createFragment(t.renderHtml()),r.hasChildNodes()&&n<=r.childNodes.length-1?r.insertBefore(i,r.childNodes[n]):r.appendChild(i),t.postRender())}),e._layout.applyClasses(e),e._lastRect=null,e},append:function(e){return this.add(e).renderNew()},prepend:function(e){var t=this;return t.items().set(t.create(e).concat(t.items().toArray())),t.renderNew()},insert:function(e,t,n){var r=this,i,o,a;return e=r.create(e),i=r.items(),!n&&t<i.length-1&&(t+=1),t>=0&&t<i.length&&(o=i.slice(0,t).toArray(),a=i.slice(t).toArray(),i.set(o.concat(e,a))),r.renderNew()},fromJSON:function(e){var t=this;for(var n in e)t.find("#"+n).value(e[n]);return t},toJSON:function(){var e=this,t={};return e.find("*").each(function(e){var n=e.name(),r=e.value();n&&"undefined"!=typeof r&&(t[n]=r)}),t},preRender:function(){},renderHtml:function(){var e=this,t=e._layout,n=this.settings.role;return e.preRender(),t.preRender(e),'<div id="'+e._id+'" class="'+e.classes()+'"'+(n?' role="'+this.settings.role+'"':"")+'><div id="'+e._id+'-body" class="'+e.classes("body")+'">'+(e.settings.html||"")+t.renderHtml(e)+"</div></div>"},postRender:function(){var e=this,t;return e.items().exec("postRender"),e._super(),e._layout.postRender(e),e._rendered=!0,e.settings.style&&a.css(e.getEl(),e.settings.style),e.settings.border&&(t=e.borderBox(),a.css(e.getEl(),{"border-top-width":t.top,"border-right-width":t.right,"border-bottom-width":t.bottom,"border-left-width":t.left})),e.parent()||(e.keyboardNav=new i({root:e})),e},initLayoutRect:function(){var e=this,t=e._super();return e._layout.recalc(e),t},recalc:function(){var e=this,t=e._layoutRect,n=e._lastRect;return n&&n.w==t.w&&n.h==t.h?void 0:(e._layout.recalc(e),t=e.layoutRect(),e._lastRect={x:t.x,y:t.y,w:t.w,h:t.h},!0)},reflow:function(){var t;if(this.visible()){for(e.repaintControls=[],e.repaintControls.map={},this.recalc(),t=e.repaintControls.length;t--;)e.repaintControls[t].repaint();
+"flow"!==this.settings.layout&&"stack"!==this.settings.layout&&this.repaint(),e.repaintControls=[]}return this}})}),r(Q,[Y],function(e){function t(){var e=document,t,n,r,i,o,a,s,l,c=Math.max;return t=e.documentElement,n=e.body,r=c(t.scrollWidth,n.scrollWidth),i=c(t.clientWidth,n.clientWidth),o=c(t.offsetWidth,n.offsetWidth),a=c(t.scrollHeight,n.scrollHeight),s=c(t.clientHeight,n.clientHeight),l=c(t.offsetHeight,n.offsetHeight),{width:o>r?i:r,height:l>a?s:a}}return function(n,r){function i(){return a.getElementById(r.handle||n)}var o,a=document,s,l,c,u,d,f;r=r||{},l=function(n){var l=t(),p,h;n.preventDefault(),s=n.button,p=i(),d=n.screenX,f=n.screenY,h=window.getComputedStyle?window.getComputedStyle(p,null).getPropertyValue("cursor"):p.runtimeStyle.cursor,o=a.createElement("div"),e.css(o,{position:"absolute",top:0,left:0,width:l.width,height:l.height,zIndex:2147483647,opacity:1e-4,cursor:h}),a.body.appendChild(o),e.on(a,"mousemove",u),e.on(a,"mouseup",c),r.start(n)},u=function(e){return e.button!==s?c(e):(e.deltaX=e.screenX-d,e.deltaY=e.screenY-f,e.preventDefault(),void r.drag(e))},c=function(t){e.off(a,"mousemove",u),e.off(a,"mouseup",c),o.parentNode.removeChild(o),r.stop&&r.stop(t)},this.destroy=function(){e.off(i())},e.on(i(),"mousedown",l)}}),r(Z,[Y,Q],function(e,t){return{init:function(){var e=this;e.on("repaint",e.renderScroll)},renderScroll:function(){function n(){function t(t,a,s,l,c,u){var d,f,p,h,m,g,v,y,b;if(f=i.getEl("scroll"+t)){if(y=a.toLowerCase(),b=s.toLowerCase(),i.getEl("absend")&&e.css(i.getEl("absend"),y,i.layoutRect()[l]-1),!c)return void e.css(f,"display","none");e.css(f,"display","block"),d=i.getEl("body"),p=i.getEl("scroll"+t+"t"),h=d["client"+s]-2*o,h-=n&&r?f["client"+u]:0,m=d["scroll"+s],g=h/m,v={},v[y]=d["offset"+a]+o,v[b]=h,e.css(f,v),v={},v[y]=d["scroll"+a]*g,v[b]=h*g,e.css(p,v)}}var n,r,a;a=i.getEl("body"),n=a.scrollWidth>a.clientWidth,r=a.scrollHeight>a.clientHeight,t("h","Left","Width","contentW",n,"Height"),t("v","Top","Height","contentH",r,"Width")}function r(){function n(n,r,a,s,l){var c,u=i._id+"-scroll"+n,d=i.classPrefix;i.getEl().appendChild(e.createFragment('<div id="'+u+'" class="'+d+"scrollbar "+d+"scrollbar-"+n+'"><div id="'+u+'t" class="'+d+'scrollbar-thumb"></div></div>')),i.draghelper=new t(u+"t",{start:function(){c=i.getEl("body")["scroll"+r],e.addClass(e.get(u),d+"active")},drag:function(e){var t,u,d,f,p=i.layoutRect();u=p.contentW>p.innerW,d=p.contentH>p.innerH,f=i.getEl("body")["client"+a]-2*o,f-=u&&d?i.getEl("scroll"+n)["client"+l]:0,t=f/i.getEl("body")["scroll"+a],i.getEl("body")["scroll"+r]=c+e["delta"+s]/t},stop:function(){e.removeClass(e.get(u),d+"active")}})}i.addClass("scroll"),n("v","Top","Height","Y","Width"),n("h","Left","Width","X","Height")}var i=this,o=2;i.settings.autoScroll&&(i._hasScroll||(i._hasScroll=!0,r(),i.on("wheel",function(e){var t=i.getEl("body");t.scrollLeft+=10*(e.deltaX||0),t.scrollTop+=10*e.deltaY,n()}),e.on(i.getEl("body"),"scroll",n)),n())}}}),r(et,[J,Z],function(e,t){return e.extend({Defaults:{layout:"fit",containerCls:"panel"},Mixins:[t],renderHtml:function(){var e=this,t=e._layout,n=e.settings.html;return e.preRender(),t.preRender(e),"undefined"==typeof n?n='<div id="'+e._id+'-body" class="'+e.classes("body")+'">'+t.renderHtml(e)+"</div>":("function"==typeof n&&(n=n.call(e)),e._hasBody=!1),'<div id="'+e._id+'" class="'+e.classes()+'" hidefocus="1" tabindex="-1" role="group">'+(e._preBodyHtml||"")+n+"</div>"}})}),r(tt,[Y],function(e){function t(t,n,r){var i,o,a,s,l,c,u,d,f,p;return f=e.getViewPort(),o=e.getPos(n),a=o.x,s=o.y,t._fixed&&(a-=f.x,s-=f.y),i=t.getEl(),p=e.getSize(i),l=p.width,c=p.height,p=e.getSize(n),u=p.width,d=p.height,r=(r||"").split(""),"b"===r[0]&&(s+=d),"r"===r[1]&&(a+=u),"c"===r[0]&&(s+=Math.round(d/2)),"c"===r[1]&&(a+=Math.round(u/2)),"b"===r[3]&&(s-=c),"r"===r[4]&&(a-=l),"c"===r[3]&&(s-=Math.round(c/2)),"c"===r[4]&&(a-=Math.round(l/2)),{x:a,y:s,w:l,h:c}}return{testMoveRel:function(n,r){for(var i=e.getViewPort(),o=0;o<r.length;o++){var a=t(this,n,r[o]);if(this._fixed){if(a.x>0&&a.x+a.w<i.w&&a.y>0&&a.y+a.h<i.h)return r[o]}else if(a.x>i.x&&a.x+a.w<i.w+i.x&&a.y>i.y&&a.y+a.h<i.h+i.y)return r[o]}return r[0]},moveRel:function(e,n){"string"!=typeof n&&(n=this.testMoveRel(e,n));var r=t(this,e,n);return this.moveTo(r.x,r.y)},moveBy:function(e,t){var n=this,r=n.layoutRect();return n.moveTo(r.x+e,r.y+t),n},moveTo:function(t,n){function r(e,t,n){return 0>e?0:e+n>t?(e=t-n,0>e?0:e):e}var i=this;if(i.settings.constrainToViewport){var o=e.getViewPort(window),a=i.layoutRect();t=r(t,o.w+o.x,a.w),n=r(n,o.h+o.y,a.h)}return i._rendered?i.layoutRect({x:t,y:n}).repaint():(i.settings.x=t,i.settings.y=n),i.fire("move",{x:t,y:n}),i}}}),r(nt,[Y],function(e){return{resizeToContent:function(){this._layoutRect.autoResize=!0,this._lastRect=null,this.reflow()},resizeTo:function(t,n){if(1>=t||1>=n){var r=e.getWindowSize();t=1>=t?t*r.w:t,n=1>=n?n*r.h:n}return this._layoutRect.autoResize=!1,this.layoutRect({minW:t,minH:n,w:t,h:n}).reflow()},resizeBy:function(e,t){var n=this,r=n.layoutRect();return n.resizeTo(r.w+e,r.h+t)}}}),r(rt,[et,tt,nt,Y],function(e,t,n,r){function i(){function e(e,t){for(;e;){if(e==t)return!0;e=e.parent()}}c||(c=function(t){if(2!=t.button)for(var n=f.length;n--;){var r=f[n],i=r.getParentCtrl(t.target);if(r.settings.autohide){if(i&&(e(i,r)||r.parent()===i))continue;t=r.fire("autohide",{target:t.target}),t.isDefaultPrevented()||r.hide()}}},r.on(document,"click",c))}function o(){u||(u=function(){var e;for(e=f.length;e--;)s(f[e])},r.on(window,"scroll",u))}function a(){if(!d){var e=document.documentElement,t=e.clientWidth,n=e.clientHeight;d=function(){document.all&&t==e.clientWidth&&n==e.clientHeight||(t=e.clientWidth,n=e.clientHeight,m.hideAll())},r.on(window,"resize",d)}}function s(e){function t(t,n){for(var r,i=0;i<f.length;i++)if(f[i]!=e)for(r=f[i].parent();r&&(r=r.parent());)r==e&&f[i].fixed(t).moveBy(0,n).repaint()}var n=r.getViewPort().y;e.settings.autofix&&(e._fixed?e._autoFixY>n&&(e.fixed(!1).layoutRect({y:e._autoFixY}).repaint(),t(!1,e._autoFixY-n)):(e._autoFixY=e.layoutRect().y,e._autoFixY<n&&(e.fixed(!0).layoutRect({y:0}).repaint(),t(!0,n-e._autoFixY))))}function l(e){var t;for(t=f.length;t--;)f[t]===e&&f.splice(t,1);for(t=p.length;t--;)p[t]===e&&p.splice(t,1)}var c,u,d,f=[],p=[],h,m=e.extend({Mixins:[t,n],init:function(e){function t(){var e,t=m.zIndex||65535,i;if(p.length)for(e=0;e<p.length;e++)p[e].modal&&(t++,i=p[e]),p[e].getEl().style.zIndex=t,p[e].zIndex=t,t++;var o=document.getElementById(n.classPrefix+"modal-block");i?r.css(o,"z-index",i.zIndex-1):o&&(o.parentNode.removeChild(o),h=!1),m.currentZIndex=t}var n=this;n._super(e),n._eventsRoot=n,n.addClass("floatpanel"),e.autohide&&(i(),a(),f.push(n)),e.autofix&&(o(),n.on("move",function(){s(this)})),n.on("postrender show",function(e){if(e.control==n){var i,o=n.classPrefix;n.modal&&!h&&(i=r.createFragment('<div id="'+o+'modal-block" class="'+o+"reset "+o+'fade"></div>'),i=i.firstChild,n.getContainerElm().appendChild(i),setTimeout(function(){r.addClass(i,o+"in"),r.addClass(n.getEl(),o+"in")},0),h=!0),p.push(n),t()}}),n.on("close hide",function(e){if(e.control==n){for(var r=p.length;r--;)p[r]===n&&p.splice(r,1);t()}}),n.on("show",function(){n.parents().each(function(e){return e._fixed?(n.fixed(!0),!1):void 0})}),e.popover&&(n._preBodyHtml='<div class="'+n.classPrefix+'arrow"></div>',n.addClass("popover").addClass("bottom").addClass(n.isRtl()?"end":"start"))},fixed:function(e){var t=this;if(t._fixed!=e){if(t._rendered){var n=r.getViewPort();e?t.layoutRect().y-=n.y:t.layoutRect().y+=n.y}t.toggleClass("fixed",e),t._fixed=e}return t},show:function(){var e=this,t,n=e._super();for(t=f.length;t--&&f[t]!==e;);return-1===t&&f.push(e),n},hide:function(){return l(this),this._super()},hideAll:function(){m.hideAll()},close:function(){var e=this;return e.fire("close"),e.remove()},remove:function(){l(this),this._super()},postRender:function(){var e=this;return e.settings.bodyRole&&this.getEl("body").setAttribute("role",e.settings.bodyRole),e._super()}});return m.hideAll=function(){for(var e=f.length;e--;){var t=f[e];t&&t.settings.autohide&&(t.hide(),f.splice(e,1))}},m}),r(it,[rt,et,Y,Q],function(e,t,n,r){var i=e.extend({modal:!0,Defaults:{border:1,layout:"flex",containerCls:"panel",role:"dialog",callbacks:{submit:function(){this.fire("submit",{data:this.toJSON()})},close:function(){this.close()}}},init:function(e){var n=this;n._super(e),n.isRtl()&&n.addClass("rtl"),n.addClass("window"),n._fixed=!0,e.buttons&&(n.statusbar=new t({layout:"flex",border:"1 0 0 0",spacing:3,padding:10,align:"center",pack:n.isRtl()?"start":"end",defaults:{type:"button"},items:e.buttons}),n.statusbar.addClass("foot"),n.statusbar.parent(n)),n.on("click",function(e){-1!=e.target.className.indexOf(n.classPrefix+"close")&&n.close()}),n.on("cancel",function(){n.close()}),n.aria("describedby",n.describedBy||n._id+"-none"),n.aria("label",e.title),n._fullscreen=!1},recalc:function(){var e=this,t=e.statusbar,r,i,o,a;e._fullscreen&&(e.layoutRect(n.getWindowSize()),e.layoutRect().contentH=e.layoutRect().innerH),e._super(),r=e.layoutRect(),e.settings.title&&!e._fullscreen&&(i=r.headerW,i>r.w&&(o=r.x-Math.max(0,i/2),e.layoutRect({w:i,x:o}),a=!0)),t&&(t.layoutRect({w:e.layoutRect().innerW}).recalc(),i=t.layoutRect().minW+r.deltaW,i>r.w&&(o=r.x-Math.max(0,i-r.w),e.layoutRect({w:i,x:o}),a=!0)),a&&e.recalc()},initLayoutRect:function(){var e=this,t=e._super(),r=0,i;if(e.settings.title&&!e._fullscreen){i=e.getEl("head");var o=n.getSize(i);t.headerW=o.width,t.headerH=o.height,r+=t.headerH}e.statusbar&&(r+=e.statusbar.layoutRect().h),t.deltaH+=r,t.minH+=r,t.h+=r;var a=n.getWindowSize();return t.x=Math.max(0,a.w/2-t.w/2),t.y=Math.max(0,a.h/2-t.h/2),t},renderHtml:function(){var e=this,t=e._layout,n=e._id,r=e.classPrefix,i=e.settings,o="",a="",s=i.html;return e.preRender(),t.preRender(e),i.title&&(o='<div id="'+n+'-head" class="'+r+'window-head"><div id="'+n+'-title" class="'+r+'title">'+e.encode(i.title)+'</div><button type="button" class="'+r+'close" aria-hidden="true">\xd7</button><div id="'+n+'-dragh" class="'+r+'dragh"></div></div>'),i.url&&(s='<iframe src="'+i.url+'" tabindex="-1"></iframe>'),"undefined"==typeof s&&(s=t.renderHtml(e)),e.statusbar&&(a=e.statusbar.renderHtml()),'<div id="'+n+'" class="'+e.classes()+'" hidefocus="1"><div class="'+e.classPrefix+'reset" role="application">'+o+'<div id="'+n+'-body" class="'+e.classes("body")+'">'+s+"</div>"+a+"</div></div>"},fullscreen:function(e){var t=this,r=document.documentElement,i,o=t.classPrefix,a;if(e!=t._fullscreen)if(n.on(window,"resize",function(){var e;if(t._fullscreen)if(i)t._timer||(t._timer=setTimeout(function(){var e=n.getWindowSize();t.moveTo(0,0).resizeTo(e.w,e.h),t._timer=0},50));else{e=(new Date).getTime();var r=n.getWindowSize();t.moveTo(0,0).resizeTo(r.w,r.h),(new Date).getTime()-e>50&&(i=!0)}}),a=t.layoutRect(),t._fullscreen=e,e){t._initial={x:a.x,y:a.y,w:a.w,h:a.h},t._borderBox=t.parseBox("0"),t.getEl("head").style.display="none",a.deltaH-=a.headerH+2,n.addClass(r,o+"fullscreen"),n.addClass(document.body,o+"fullscreen"),t.addClass("fullscreen");var s=n.getWindowSize();t.moveTo(0,0).resizeTo(s.w,s.h)}else t._borderBox=t.parseBox(t.settings.border),t.getEl("head").style.display="",a.deltaH+=a.headerH,n.removeClass(r,o+"fullscreen"),n.removeClass(document.body,o+"fullscreen"),t.removeClass("fullscreen"),t.moveTo(t._initial.x,t._initial.y).resizeTo(t._initial.w,t._initial.h);return t.reflow()},postRender:function(){var e=this,t;setTimeout(function(){e.addClass("in")},0),e._super(),e.statusbar&&e.statusbar.postRender(),e.focus(),this.dragHelper=new r(e._id+"-dragh",{start:function(){t={x:e.layoutRect().x,y:e.layoutRect().y}},drag:function(n){e.moveTo(t.x+n.deltaX,t.y+n.deltaY)}}),e.on("submit",function(t){t.isDefaultPrevented()||e.close()})},submit:function(){return this.fire("submit",{data:this.toJSON()})},remove:function(){var e=this,t=e.classPrefix;e.dragHelper.destroy(),e._super(),e.statusbar&&this.statusbar.remove(),e._fullscreen&&(n.removeClass(document.documentElement,t+"fullscreen"),n.removeClass(document.body,t+"fullscreen"))},getContentWindow:function(){var e=this.getEl().getElementsByTagName("iframe")[0];return e?e.contentWindow:null}});return i}),r(ot,[it],function(e){var t=e.extend({init:function(e){e={border:1,padding:20,layout:"flex",pack:"center",align:"center",containerCls:"panel",autoScroll:!0,buttons:{type:"button",text:"Ok",action:"ok"},items:{type:"label",multiline:!0,maxWidth:500,maxHeight:200}},this._super(e)},Statics:{OK:1,OK_CANCEL:2,YES_NO:3,YES_NO_CANCEL:4,msgBox:function(n){function r(e,t,n){return{type:"button",text:e,subtype:n?"primary":"",onClick:function(e){e.control.parents()[1].close(),o(t)}}}var i,o=n.callback||function(){};switch(n.buttons){case t.OK_CANCEL:i=[r("Ok",!0,!0),r("Cancel",!1)];break;case t.YES_NO:case t.YES_NO_CANCEL:i=[r("Yes",1,!0),r("No",0)],n.buttons==t.YES_NO_CANCEL&&i.push(r("Cancel",-1));break;default:i=[r("Ok",!0,!0)]}return new e({padding:20,x:n.x,y:n.y,minWidth:300,minHeight:100,layout:"flex",pack:"center",align:"center",buttons:i,title:n.title,role:"alertdialog",items:{type:"label",multiline:!0,maxWidth:500,maxHeight:200,text:n.text},onPostRender:function(){this.aria("describedby",this.items()[0]._id)},onClose:n.onClose,onCancel:function(){o(!1)}}).renderTo(document.body).reflow()},alert:function(e,n){return"string"==typeof e&&(e={text:e}),e.callback=n,t.msgBox(e)},confirm:function(e,n){return"string"==typeof e&&(e={text:e}),e.callback=n,e.buttons=t.OK_CANCEL,t.msgBox(e)}}});return t}),r(at,[it,ot],function(e,t){return function(n){function r(){return o.length?o[o.length-1]:void 0}var i=this,o=[];i.windows=o,n.on("remove",function(){for(var e=o.length;e--;)o[e].close()}),i.open=function(t,r){var i;return n.editorManager.activeEditor=n,t.title=t.title||" ",t.url=t.url||t.file,t.url&&(t.width=parseInt(t.width||320,10),t.height=parseInt(t.height||240,10)),t.body&&(t.items={defaults:t.defaults,type:t.bodyType||"form",items:t.body}),t.url||t.buttons||(t.buttons=[{text:"Ok",subtype:"primary",onclick:function(){i.find("form")[0].submit()}},{text:"Cancel",onclick:function(){i.close()}}]),i=new e(t),o.push(i),i.on("close",function(){for(var e=o.length;e--;)o[e]===i&&o.splice(e,1);n.focus()}),t.data&&i.on("postRender",function(){this.find("*").each(function(e){var n=e.name();n in t.data&&e.value(t.data[n])})}),i.features=t||{},i.params=r||{},n.nodeChanged(),i.renderTo().reflow()},i.alert=function(e,r,i){t.alert(e,function(){r?r.call(i||this):n.focus()})},i.confirm=function(e,n,r){t.confirm(e,function(e){n.call(r||this,e)})},i.close=function(){r()&&r().close()},i.getParams=function(){return r()?r().params:null},i.setParams=function(e){r()&&(r().params=e)},i.getWindows=function(){return o}}}),r(st,[B,x,_,g,d,u],function(e,t,n,r,i,o){return function(a){function s(e,t){try{a.getDoc().execCommand(e,!1,t)}catch(n){}}function l(){var e=a.getDoc().documentMode;return e?e:6}function c(e){return e.isDefaultPrevented()}function u(){function t(e){var t=new i(function(){});o.each(a.getBody().getElementsByTagName("*"),function(e){"SPAN"==e.tagName&&e.setAttribute("mce-data-marked",1),!e.hasAttribute("data-mce-style")&&e.hasAttribute("style")&&a.dom.setAttrib(e,"style",a.dom.getAttrib(e,"style"))}),t.observe(a.getDoc(),{childList:!0,attributes:!0,subtree:!0,attributeFilter:["style"]}),a.getDoc().execCommand(e?"ForwardDelete":"Delete",!1,null);var n=a.selection.getRng(),r=n.startContainer.parentNode;o.each(t.takeRecords(),function(e){if(q.isChildOf(e.target,a.getBody())){if("style"==e.attributeName){var t=e.target.getAttribute("data-mce-style");t?e.target.setAttribute("style",t):e.target.removeAttribute("style")}o.each(e.addedNodes,function(e){if("SPAN"==e.nodeName&&!e.getAttribute("mce-data-marked")){var t,i;e==r&&(t=n.startOffset,i=e.firstChild),q.remove(e,!0),i&&(n.setStart(i,t),n.setEnd(i,t),a.selection.setRng(n))}})}}),t.disconnect(),o.each(a.dom.select("span[mce-data-marked]"),function(e){e.removeAttribute("mce-data-marked")})}var n=a.getDoc(),r="data:text/mce-internal,",i=window.MutationObserver,s,l;i||(s=!0,i=function(){function e(e){var t=e.relatedNode||e.target;n.push({target:t,addedNodes:[t]})}function t(e){var t=e.relatedNode||e.target;n.push({target:t,attributeName:e.attrName})}var n=[],r;this.observe=function(n){r=n,r.addEventListener("DOMSubtreeModified",e,!1),r.addEventListener("DOMNodeInsertedIntoDocument",e,!1),r.addEventListener("DOMNodeInserted",e,!1),r.addEventListener("DOMAttrModified",t,!1)},this.disconnect=function(){r.removeEventListener("DOMSubtreeModified",e,!1),r.removeEventListener("DOMNodeInsertedIntoDocument",e,!1),r.removeEventListener("DOMNodeInserted",e,!1),r.removeEventListener("DOMAttrModified",t,!1)},this.takeRecords=function(){return n}}),a.on("keydown",function(n){var r=n.keyCode==$,i=e.metaKeyPressed(n);if(!c(n)&&(r||n.keyCode==U)){var o=a.selection.getRng(),s=o.startContainer,l=o.startOffset;if(!i&&o.collapsed&&3==s.nodeType&&(r?l<s.data.length:l>0))return;n.preventDefault(),i&&a.selection.getSel().modify("extend",r?"forward":"backward","word"),t(r)}}),a.on("keypress",function(n){c(n)||j.isCollapsed()||!n.charCode||e.metaKeyPressed(n)||(n.preventDefault(),t(!0),a.selection.setContent(String.fromCharCode(n.charCode)))}),a.addCommand("Delete",function(){t()}),a.addCommand("ForwardDelete",function(){t(!0)}),s||(a.on("dragstart",function(e){var t;a.selection.isCollapsed()&&"IMG"==e.target.tagName&&j.select(e.target),l=j.getRng(),t=a.selection.getContent(),t.length>0&&e.dataTransfer.setData("URL","data:text/mce-internal,"+escape(t))}),a.on("drop",function(e){if(!c(e)){var i=e.dataTransfer.getData("URL");if(!i||-1==i.indexOf(r)||!n.caretRangeFromPoint)return;i=unescape(i.substr(r.length)),n.caretRangeFromPoint&&(e.preventDefault(),window.setTimeout(function(){var r=n.caretRangeFromPoint(e.x,e.y);l&&(j.setRng(l),l=null),t(),j.setRng(r),a.insertContent(i)},0))}}),a.on("cut",function(e){!c(e)&&e.clipboardData&&(e.preventDefault(),e.clipboardData.clearData(),e.clipboardData.setData("text/html",a.selection.getContent()),e.clipboardData.setData("text/plain",a.selection.getContent({format:"text"})),t(!0))}))}function d(){function e(e){var t=q.create("body"),n=e.cloneContents();return t.appendChild(n),j.serializer.serialize(t,{format:"html"})}function n(n){if(!n.setStart){if(n.item)return!1;var r=n.duplicate();return r.moveToElementText(a.getBody()),t.compareRanges(n,r)}var i=e(n),o=q.createRng();o.selectNode(a.getBody());var s=e(o);return i===s}a.on("keydown",function(e){var t=e.keyCode,r,i;if(!c(e)&&(t==$||t==U)){if(r=a.selection.isCollapsed(),i=a.getBody(),r&&!q.isEmpty(i))return;if(!r&&!n(a.selection.getRng()))return;e.preventDefault(),a.setContent(""),i.firstChild&&q.isBlock(i.firstChild)?a.selection.setCursorLocation(i.firstChild,0):a.selection.setCursorLocation(i,0),a.nodeChanged()}})}function f(){a.on("keydown",function(t){!c(t)&&65==t.keyCode&&e.metaKeyPressed(t)&&(t.preventDefault(),a.execCommand("SelectAll"))})}function p(){a.settings.content_editable||(q.bind(a.getDoc(),"focusin",function(){j.setRng(j.getRng())}),q.bind(a.getDoc(),"mousedown",function(e){e.target==a.getDoc().documentElement&&(a.getBody().focus(),j.setRng(j.getRng()))}))}function h(){a.on("keydown",function(e){if(!c(e)&&e.keyCode===U){if(!a.getBody().getElementsByTagName("hr").length)return;if(j.isCollapsed()&&0===j.getRng(!0).startOffset){var t=j.getNode(),n=t.previousSibling;if("HR"==t.nodeName)return q.remove(t),void e.preventDefault();n&&n.nodeName&&"hr"===n.nodeName.toLowerCase()&&(q.remove(n),e.preventDefault())}}})}function m(){window.Range.prototype.getClientRects||a.on("mousedown",function(e){if(!c(e)&&"HTML"===e.target.nodeName){var t=a.getBody();t.blur(),setTimeout(function(){t.focus()},0)}})}function g(){a.on("click",function(e){e=e.target,/^(IMG|HR)$/.test(e.nodeName)&&j.getSel().setBaseAndExtent(e,0,e,1),"A"==e.nodeName&&q.hasClass(e,"mce-item-anchor")&&j.select(e)})}function v(){function e(){var e=q.getAttribs(j.getStart().cloneNode(!1));return function(){var t=j.getStart();t!==a.getBody()&&(q.setAttrib(t,"style",null),V(e,function(e){t.setAttributeNode(e.cloneNode(!0))}))}}function t(){return!j.isCollapsed()&&q.getParent(j.getStart(),q.isBlock)!=q.getParent(j.getEnd(),q.isBlock)}a.on("keypress",function(n){var r;return c(n)||8!=n.keyCode&&46!=n.keyCode||!t()?void 0:(r=e(),a.getDoc().execCommand("delete",!1,null),r(),n.preventDefault(),!1)}),q.bind(a.getDoc(),"cut",function(n){var r;!c(n)&&t()&&(r=e(),setTimeout(function(){r()},0))})}function y(){document.body.setAttribute("role","application")}function b(){a.on("keydown",function(e){if(!c(e)&&e.keyCode===U&&j.isCollapsed()&&0===j.getRng(!0).startOffset){var t=j.getNode().previousSibling;if(t&&t.nodeName&&"table"===t.nodeName.toLowerCase())return e.preventDefault(),!1}})}function C(){l()>7||(s("RespectVisibilityInDesign",!0),a.contentStyles.push(".mceHideBrInPre pre br {display: none}"),q.addClass(a.getBody(),"mceHideBrInPre"),K.addNodeFilter("pre",function(e){for(var t=e.length,r,i,o,a;t--;)for(r=e[t].getAll("br"),i=r.length;i--;)o=r[i],a=o.prev,a&&3===a.type&&"\n"!=a.value.charAt(a.value-1)?a.value+="\n":o.parent.insert(new n("#text",3),o,!0).value="\n"}),G.addNodeFilter("pre",function(e){for(var t=e.length,n,r,i,o;t--;)for(n=e[t].getAll("br"),r=n.length;r--;)i=n[r],o=i.prev,o&&3==o.type&&(o.value=o.value.replace(/\r?\n$/,""))}))}function x(){q.bind(a.getBody(),"mouseup",function(){var e,t=j.getNode();"IMG"==t.nodeName&&((e=q.getStyle(t,"width"))&&(q.setAttrib(t,"width",e.replace(/[^0-9%]+/g,"")),q.setStyle(t,"width","")),(e=q.getStyle(t,"height"))&&(q.setAttrib(t,"height",e.replace(/[^0-9%]+/g,"")),q.setStyle(t,"height","")))})}function w(){a.on("keydown",function(t){var n,r,i,o,s;if(!c(t)&&t.keyCode==e.BACKSPACE&&(n=j.getRng(),r=n.startContainer,i=n.startOffset,o=q.getRoot(),s=r,n.collapsed&&0===i)){for(;s&&s.parentNode&&s.parentNode.firstChild==s&&s.parentNode!=o;)s=s.parentNode;"BLOCKQUOTE"===s.tagName&&(a.formatter.toggle("blockquote",null,s),n=q.createRng(),n.setStart(r,0),n.setEnd(r,0),j.setRng(n))}})}function _(){function e(){a._refreshContentEditable(),s("StyleWithCSS",!1),s("enableInlineTableEditing",!1),Y.object_resizing||s("enableObjectResizing",!1)}Y.readonly||a.on("BeforeExecCommand MouseDown",e)}function E(){function e(){V(q.select("a"),function(e){var t=e.parentNode,n=q.getRoot();if(t.lastChild===e){for(;t&&!q.isBlock(t);){if(t.parentNode.lastChild!==t||t===n)return;t=t.parentNode}q.add(t,"br",{"data-mce-bogus":1})}})}a.on("SetContent ExecCommand",function(t){("setcontent"==t.type||"mceInsertLink"===t.command)&&e()})}function N(){Y.forced_root_block&&a.on("init",function(){s("DefaultParagraphSeparator",Y.forced_root_block)})}function k(){a.on("Undo Redo SetContent",function(e){e.initial||a.execCommand("mceRepaint")})}function S(){a.on("keydown",function(e){var t;c(e)||e.keyCode!=U||(t=a.getDoc().selection.createRange(),t&&t.item&&(e.preventDefault(),a.undoManager.beforeChange(),q.remove(t.item(0)),a.undoManager.add()))})}function T(){var e;l()>=10&&(e="",V("p div h1 h2 h3 h4 h5 h6".split(" "),function(t,n){e+=(n>0?",":"")+t+":empty"}),a.contentStyles.push(e+"{padding-right: 1px !important}"))}function R(){l()<9&&(K.addNodeFilter("noscript",function(e){for(var t=e.length,n,r;t--;)n=e[t],r=n.firstChild,r&&n.attr("data-mce-innertext",r.value)}),G.addNodeFilter("noscript",function(e){for(var t=e.length,i,o,a;t--;)i=e[t],o=e[t].firstChild,o?o.value=r.decode(o.value):(a=i.attributes.map["data-mce-innertext"],a&&(i.attr("data-mce-innertext",null),o=new n("#text",3),o.value=a,o.raw=!0,i.append(o)))}))}function A(){function e(e,t){var n=i.createTextRange();try{n.moveToPoint(e,t)}catch(r){n=null}return n}function t(t){var r;t.button?(r=e(t.x,t.y),r&&(r.compareEndPoints("StartToStart",a)>0?r.setEndPoint("StartToStart",a):r.setEndPoint("EndToEnd",a),r.select())):n()}function n(){var e=r.selection.createRange();a&&!e.item&&0===e.compareEndPoints("StartToEnd",e)&&a.select(),q.unbind(r,"mouseup",n),q.unbind(r,"mousemove",t),a=o=0}var r=q.doc,i=r.body,o,a,s;r.documentElement.unselectable=!0,q.bind(r,"mousedown contextmenu",function(i){if("HTML"===i.target.nodeName){if(o&&n(),s=r.documentElement,s.scrollHeight>s.clientHeight)return;o=1,a=e(i.x,i.y),a&&(q.bind(r,"mouseup",n),q.bind(r,"mousemove",t),q.getRoot().focus(),a.select())}})}function B(){a.on("keyup focusin mouseup",function(t){65==t.keyCode&&e.metaKeyPressed(t)||j.normalize()},!0)}function D(){a.contentStyles.push("img:-moz-broken {-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}")}function L(){a.inline||a.on("keydown",function(){document.activeElement==document.body&&a.getWin().focus()})}function H(){a.inline||(a.contentStyles.push("body {min-height: 150px}"),a.on("click",function(e){"HTML"==e.target.nodeName&&(a.getBody().focus(),a.selection.normalize(),a.nodeChanged())}))}function M(){i.mac&&a.on("keydown",function(t){!e.metaKeyPressed(t)||37!=t.keyCode&&39!=t.keyCode||(t.preventDefault(),a.selection.getSel().modify("move",37==t.keyCode?"backward":"forward","word"))})}function P(){s("AutoUrlDetect",!1)}function O(){a.inline||a.on("focus blur beforegetcontent",function(){var e=a.dom.create("br");a.getBody().appendChild(e),e.parentNode.removeChild(e)},!0)}function I(){a.on("click",function(e){var t=e.target;do if("A"===t.tagName)return void e.preventDefault();while(t=t.parentNode)}),a.contentStyles.push(".mce-content-body {-webkit-touch-callout: none}")}function F(){a.on("touchstart",function(e){var t,n,r,i;t=e.target,n=(new Date).getTime(),i=e.changedTouches,!i||i.length>1||(r=i[0],a.once("touchend",function(e){var i=e.changedTouches[0],o;(new Date).getTime()-n>500||Math.abs(r.clientX-i.clientX)>5||Math.abs(r.clientY-i.clientY)>5||(o={target:t},V("pageX pageY clientX clientY screenX screenY".split(" "),function(e){o[e]=i[e]}),o=a.fire("click",o))}))})}function z(){a.on("init",function(){a.dom.bind(a.getBody(),"submit",function(e){e.preventDefault()})})}function W(){K.addNodeFilter("br",function(e){for(var t=e.length;t--;)"Apple-interchange-newline"==e[t].attr("class")&&e[t].remove()})}var V=o.each,U=e.BACKSPACE,$=e.DELETE,q=a.dom,j=a.selection,Y=a.settings,K=a.parser,G=a.serializer,X=i.gecko,J=i.ie,Q=i.webkit;w(),d(),B(),Q&&(u(),p(),g(),N(),z(),b(),W(),F(),i.iOS?(L(),H(),I()):f()),J&&i.ie<11&&(h(),y(),C(),x(),S(),T(),R(),A()),i.ie>=11&&(H(),O(),b()),i.ie&&(f(),P()),X&&(h(),m(),v(),_(),E(),k(),D(),M(),b())}}),r(lt,[$],function(e){function t(t){return t._eventDispatcher||(t._eventDispatcher=new e({scope:t,toggleEvent:function(n,r){e.isNative(n)&&t.toggleNativeEvent&&t.toggleNativeEvent(n,r)}})),t._eventDispatcher}return{fire:function(e,n,r){var i=this;if(i.removed&&"remove"!==e)return n;if(n=t(i).fire(e,n,r),r!==!1&&i.parent)for(var o=i.parent();o&&!n.isPropagationStopped();)o.fire(e,n,!1),o=o.parent();return n},on:function(e,n,r){return t(this).on(e,n,r)},off:function(e,n){return t(this).off(e,n)},once:function(e,n){return t(this).once(e,n)},hasEventListeners:function(e){return t(this).has(e)}}}),r(ct,[lt,y,u],function(e,t,n){function r(e,t){return"selectionchange"==t?e.getDoc():!e.inline&&/^mouse|click|contextmenu|drop|dragover|dragend/.test(t)?e.getDoc().documentElement:e.settings.event_root?(e.eventRoot||(e.eventRoot=o.select(e.settings.event_root)[0]),e.eventRoot):e.getBody()}function i(e,t){var n=r(e,t),i;if(e.delegates||(e.delegates={}),!e.delegates[t])if(e.settings.event_root){if(a||(a={},e.editorManager.on("removeEditor",function(){var t;if(!e.editorManager.activeEditor&&a){for(t in a)e.dom.unbind(r(e,t));a=null}})),a[t])return;i=function(n){for(var r=n.target,i=e.editorManager.editors,a=i.length;a--;){var s=i[a].getBody();(s===r||o.isChildOf(r,s))&&(i[a].hidden||i[a].fire(t,n))}},a[t]=i,o.bind(n,t,i)}else i=function(n){e.hidden||e.fire(t,n)},o.bind(n,t,i),e.delegates[t]=i}var o=t.DOM,a,s={bindPendingEventDelegates:function(){var e=this;n.each(e._pendingNativeEvents,function(t){i(e,t)})},toggleNativeEvent:function(e,t){var n=this;n.settings.readonly||"focus"!=e&&"blur"!=e&&(t?n.initialized?i(n,e):n._pendingNativeEvents?n._pendingNativeEvents.push(e):n._pendingNativeEvents=[e]:n.initialized&&(n.dom.unbind(r(n,e),e,n.delegates[e]),delete n.delegates[e]))},unbindAllNativeEvents:function(){var e=this,t;if(e.delegates){for(t in e.delegates)e.dom.unbind(r(e,t),t,e.delegates[t]);delete e.delegates}e.inline||(e.getBody().onload=null,e.dom.unbind(e.getWin()),e.dom.unbind(e.getDoc())),e.dom.unbind(e.getBody()),e.dom.unbind(e.getContainer())}};return s=n.extend({},e,s)}),r(ut,[u,d],function(e,t){var n=e.each,r=e.explode,i={f9:120,f10:121,f11:122};return function(o){var a=this,s={};o.on("keyup keypress keydown",function(e){(e.altKey||e.ctrlKey||e.metaKey)&&n(s,function(n){var r=t.mac?e.metaKey:e.ctrlKey;if(n.ctrl==r&&n.alt==e.altKey&&n.shift==e.shiftKey)return e.keyCode==n.keyCode||e.charCode&&e.charCode==n.charCode?(e.preventDefault(),"keydown"==e.type&&n.func.call(n.scope),!0):void 0})}),a.add=function(t,a,l,c){var u;return u=l,"string"==typeof l?l=function(){o.execCommand(u,!1,null)}:e.isArray(u)&&(l=function(){o.execCommand(u[0],u[1],u[2])}),n(r(t.toLowerCase()),function(e){var t={func:l,scope:c||o,desc:o.translate(a),alt:!1,ctrl:!1,shift:!1};n(r(e,"+"),function(e){switch(e){case"alt":case"ctrl":case"shift":t[e]=!0;break;default:/^[0-9]{2,}$/.test(e)?t.keyCode=parseInt(e,10):(t.charCode=e.charCodeAt(0),t.keyCode=i[e]||e.toUpperCase().charCodeAt(0))}}),s[(t.ctrl?"ctrl":"")+","+(t.alt?"alt":"")+","+(t.shift?"shift":"")+","+t.keyCode]=t}),!0}}}),r(dt,[y,f,C,w,_,R,T,H,O,I,F,z,W,V,b,l,at,E,k,st,d,u,ct,ut],function(e,n,r,i,o,a,s,l,c,u,d,f,p,h,m,g,v,y,b,C,x,w,_,E){function N(e,t,i){var o=this,a,s;a=o.documentBaseUrl=i.documentBaseURL,s=i.baseURI,o.settings=t=R({id:e,theme:"modern",delta_width:0,delta_height:0,popup_css:"",plugins:"",document_base_url:a,add_form_submit_trigger:!0,submit_patch:!0,add_unload_trigger:!0,convert_urls:!0,relative_urls:!0,remove_script_host:!0,object_resizing:!0,doctype:"<!DOCTYPE html>",visual:!0,font_size_style_values:"xx-small,x-small,small,medium,large,x-large,xx-large",font_size_legacy_values:"xx-small,small,medium,large,x-large,xx-large,300%",forced_root_block:"p",hidden_input:!0,padd_empty_editor:!0,render_ui:!0,indentation:"30px",inline_styles:!0,convert_fonts_to_spans:!0,indent:"simple",indent_before:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,option,optgroup,datalist",indent_after:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,option,optgroup,datalist",validate:!0,entity_encoding:"named",url_converter:o.convertURL,url_converter_scope:o,ie7_compat:!0},t),r.language=t.language||"en",r.languageLoad=t.language_load,r.baseURL=i.baseURL,o.id=t.id=e,o.isNotDirty=!0,o.plugins={},o.documentBaseURI=new h(t.document_base_url||a,{base_uri:s}),o.baseURI=s,o.contentCSS=[],o.contentStyles=[],o.shortcuts=new E(o),o.execCommands={},o.queryStateCommands={},o.queryValueCommands={},o.loadedCSS={},t.target&&(o.targetElm=t.target),o.suffix=i.suffix,o.editorManager=i,o.inline=t.inline,i.fire("SetupEditor",o),o.execCallback("setup",o),o.$=n.overrideDefaults(function(){return{context:o.inline?o.getBody():o.getDoc(),element:o.getBody()}})}var k=e.DOM,S=r.ThemeManager,T=r.PluginManager,R=w.extend,A=w.each,B=w.explode,D=w.inArray,L=w.trim,H=w.resolve,M=g.Event,P=x.gecko,O=x.ie;return N.prototype={render:function(){function e(){k.unbind(window,"ready",e),n.render()}function t(){var e=m.ScriptLoader;if(r.language&&"en"!=r.language&&!r.language_url&&(r.language_url=n.editorManager.baseURL+"/langs/"+r.language+".js"),r.language_url&&e.add(r.language_url),r.theme&&"function"!=typeof r.theme&&"-"!=r.theme.charAt(0)&&!S.urls[r.theme]){var t=r.theme_url;t=t?n.documentBaseURI.toAbsolute(t):"themes/"+r.theme+"/theme"+o+".js",S.load(r.theme,t)}w.isArray(r.plugins)&&(r.plugins=r.plugins.join(" ")),A(r.external_plugins,function(e,t){T.load(t,e),r.plugins+=" "+t
+}),A(r.plugins.split(/[ ,]/),function(e){if(e=L(e),e&&!T.urls[e])if("-"==e.charAt(0)){e=e.substr(1,e.length);var t=T.dependencies(e);A(t,function(e){var t={prefix:"plugins/",resource:e,suffix:"/plugin"+o+".js"};e=T.createUrl(t,e),T.load(e.resource,e)})}else T.load(e,{prefix:"plugins/",resource:e,suffix:"/plugin"+o+".js"})}),e.loadQueue(function(){n.removed||n.init()})}var n=this,r=n.settings,i=n.id,o=n.suffix;if(!M.domLoaded)return void k.bind(window,"ready",e);if(n.getElement()&&x.contentEditable){r.inline?n.inline=!0:(n.orgVisibility=n.getElement().style.visibility,n.getElement().style.visibility="hidden");var a=n.getElement().form||k.getParent(i,"form");a&&(n.formElement=a,r.hidden_input&&!/TEXTAREA|INPUT/i.test(n.getElement().nodeName)&&(k.insertAfter(k.create("input",{type:"hidden",name:i}),i),n.hasHiddenInput=!0),n.formEventDelegate=function(e){n.fire(e.type,e)},k.bind(a,"submit reset",n.formEventDelegate),n.on("reset",function(){n.setContent(n.startContent,{format:"raw"})}),!r.submit_patch||a.submit.nodeType||a.submit.length||a._mceOldSubmit||(a._mceOldSubmit=a.submit,a.submit=function(){return n.editorManager.triggerSave(),n.isNotDirty=!0,a._mceOldSubmit(a)})),n.windowManager=new v(n),"xml"==r.encoding&&n.on("GetContent",function(e){e.save&&(e.content=k.encode(e.content))}),r.add_form_submit_trigger&&n.on("submit",function(){n.initialized&&n.save()}),r.add_unload_trigger&&(n._beforeUnload=function(){!n.initialized||n.destroyed||n.isHidden()||n.save({format:"raw",no_events:!0,set_dirty:!1})},n.editorManager.on("BeforeUnload",n._beforeUnload)),t()}},init:function(){function e(n){var r=T.get(n),i,o;i=T.urls[n]||t.documentBaseUrl.replace(/\/$/,""),n=L(n),r&&-1===D(m,n)&&(A(T.dependencies(n),function(t){e(t)}),o=new r(t,i,t.$),t.plugins[n]=o,o.init&&(o.init(t,i),m.push(n)))}var t=this,n=t.settings,r=t.getElement(),i,o,a,s,l,c,u,d,f,p,h,m=[];if(t.rtl=this.editorManager.i18n.rtl,t.editorManager.add(t),n.aria_label=n.aria_label||k.getAttrib(r,"aria-label",t.getLang("aria.rich_text_area")),n.theme&&("function"!=typeof n.theme?(n.theme=n.theme.replace(/-/,""),c=S.get(n.theme),t.theme=new c(t,S.urls[n.theme]),t.theme.init&&t.theme.init(t,S.urls[n.theme]||t.documentBaseUrl.replace(/\/$/,""),t.$)):t.theme=n.theme),A(n.plugins.replace(/\-/g,"").split(/[ ,]/),e),n.render_ui&&t.theme&&(t.orgDisplay=r.style.display,"function"!=typeof n.theme?(i=n.width||r.style.width||r.offsetWidth,o=n.height||r.style.height||r.offsetHeight,a=n.min_height||100,p=/^[0-9\.]+(|px)$/i,p.test(""+i)&&(i=Math.max(parseInt(i,10),100)),p.test(""+o)&&(o=Math.max(parseInt(o,10),a)),l=t.theme.renderUI({targetNode:r,width:i,height:o,deltaWidth:n.delta_width,deltaHeight:n.delta_height}),n.content_editable||(o=(l.iframeHeight||o)+("number"==typeof o?l.deltaHeight||0:""),a>o&&(o=a))):(l=n.theme(t,r),l.editorContainer.nodeType&&(l.editorContainer=l.editorContainer.id=l.editorContainer.id||t.id+"_parent"),l.iframeContainer.nodeType&&(l.iframeContainer=l.iframeContainer.id=l.iframeContainer.id||t.id+"_iframecontainer"),o=l.iframeHeight||r.offsetHeight),t.editorContainer=l.editorContainer),n.content_css&&A(B(n.content_css),function(e){t.contentCSS.push(t.documentBaseURI.toAbsolute(e))}),n.content_style&&t.contentStyles.push(n.content_style),n.content_editable)return r=s=l=null,t.initContentBody();for(t.iframeHTML=n.doctype+"<html><head>",n.document_base_url!=t.documentBaseUrl&&(t.iframeHTML+='<base href="'+t.documentBaseURI.getURI()+'" />'),!x.caretAfter&&n.ie7_compat&&(t.iframeHTML+='<meta http-equiv="X-UA-Compatible" content="IE=7" />'),t.iframeHTML+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />',h=0;h<t.contentCSS.length;h++){var g=t.contentCSS[h];t.iframeHTML+='<link type="text/css" rel="stylesheet" href="'+g+'" />',t.loadedCSS[g]=!0}d=n.body_id||"tinymce",-1!=d.indexOf("=")&&(d=t.getParam("body_id","","hash"),d=d[t.id]||d),f=n.body_class||"",-1!=f.indexOf("=")&&(f=t.getParam("body_class","","hash"),f=f[t.id]||""),t.iframeHTML+='</head><body id="'+d+'" class="mce-content-body '+f+'" data-id="'+t.id+'"><br></body></html>';var v='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinymce.get("'+t.id+'");document.write(ed.iframeHTML);document.close();ed.initContentBody(true);})()';document.domain!=location.hostname&&(u=v);var y=k.create("iframe",{id:t.id+"_ifr",frameBorder:"0",allowTransparency:"true",title:t.editorManager.translate("Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help"),style:{width:"100%",height:o,display:"block"}});if(y.onload=function(){y.onload=null,t.fire("load")},k.setAttrib("src",u||'javascript:""'),t.contentAreaContainer=l.iframeContainer,t.iframeElement=y,s=k.add(l.iframeContainer,y),O)try{t.getDoc()}catch(b){s.src=u=v}l.editorContainer&&(k.get(l.editorContainer).style.display=t.orgDisplay,t.hidden=k.isHidden(l.editorContainer)),t.getElement().style.display="none",k.setAttrib(t.id,"aria-hidden",!0),u||t.initContentBody(),r=s=l=null},initContentBody:function(t){var n=this,r=n.settings,s=n.getElement(),h=n.getDoc(),m,g;r.inline||(n.getElement().style.visibility=n.orgVisibility),t||r.content_editable||(h.open(),h.write(n.iframeHTML),h.close()),r.content_editable&&(n.on("remove",function(){var e=this.getBody();k.removeClass(e,"mce-content-body"),k.removeClass(e,"mce-edit-focus"),k.setAttrib(e,"contentEditable",null)}),k.addClass(s,"mce-content-body"),n.contentDocument=h=r.content_document||document,n.contentWindow=r.content_window||window,n.bodyElement=s,r.content_document=r.content_window=null,r.root_name=s.nodeName.toLowerCase()),m=n.getBody(),m.disabled=!0,r.readonly||(n.inline&&"static"==k.getStyle(m,"position",!0)&&(m.style.position="relative"),m.contentEditable=n.getParam("content_editable_state",!0)),m.disabled=!1,n.schema=new y(r),n.dom=new e(h,{keep_values:!0,url_converter:n.convertURL,url_converter_scope:n,hex_colors:r.force_hex_style_colors,class_filter:r.class_filter,update_styles:!0,root_element:n.inline?n.getBody():null,collect:r.content_editable,schema:n.schema,onSetAttrib:function(e){n.fire("SetAttrib",e)}}),n.parser=new b(r,n.schema),n.parser.addAttributeFilter("src,href,style,tabindex",function(e,t){for(var r=e.length,i,o=n.dom,a,s;r--;)i=e[r],a=i.attr(t),s="data-mce-"+t,i.attributes.map[s]||("style"===t?(a=o.serializeStyle(o.parseStyle(a),i.name),a.length||(a=null),i.attr(s,a),i.attr(t,a)):"tabindex"===t?(i.attr(s,a),i.attr(t,null)):i.attr(s,n.convertURL(a,t,i.name)))}),n.parser.addNodeFilter("script",function(e){for(var t=e.length,n;t--;)n=e[t],n.attr("type","mce-"+(n.attr("type")||"no/type"))}),n.parser.addNodeFilter("#cdata",function(e){for(var t=e.length,n;t--;)n=e[t],n.type=8,n.name="#comment",n.value="[CDATA["+n.value+"]]"}),n.parser.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div",function(e){for(var t=e.length,r,i=n.schema.getNonEmptyElements();t--;)r=e[t],r.isEmpty(i)&&(r.append(new o("br",1)).shortEnded=!0)}),n.serializer=new a(r,n),n.selection=new l(n.dom,n.getWin(),n.serializer,n),n.formatter=new c(n),n.undoManager=new u(n),n.forceBlocks=new f(n),n.enterKey=new d(n),n.editorCommands=new p(n),n._nodeChangeDispatcher=new i(n),n.fire("PreInit"),r.browser_spellcheck||r.gecko_spellcheck||(h.body.spellcheck=!1,k.setAttrib(m,"spellcheck","false")),n.fire("PostRender"),n.quirks=new C(n),r.directionality&&(m.dir=r.directionality),r.nowrap&&(m.style.whiteSpace="nowrap"),r.protect&&n.on("BeforeSetContent",function(e){A(r.protect,function(t){e.content=e.content.replace(t,function(e){return"<!--mce:protected "+escape(e)+"-->"})})}),n.on("SetContent",function(){n.addVisual(n.getBody())}),r.padd_empty_editor&&n.on("PostProcess",function(e){e.content=e.content.replace(/^(<p[^>]*>(&nbsp;|&#160;|\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/,"")}),n.load({initial:!0,format:"html"}),n.startContent=n.getContent({format:"raw"}),n.initialized=!0,n.bindPendingEventDelegates(),n.fire("init"),n.focus(!0),n.nodeChanged({initial:!0}),n.execCallback("init_instance_callback",n),n.contentStyles.length>0&&(g="",A(n.contentStyles,function(e){g+=e+"\r\n"}),n.dom.addStyle(g)),A(n.contentCSS,function(e){n.loadedCSS[e]||(n.dom.loadCSS(e),n.loadedCSS[e]=!0)}),r.auto_focus&&setTimeout(function(){var e;e=r.auto_focus===!0?n:n.editorManager.get(r.auto_focus),e.focus()},100),s=h=m=null},focus:function(e){var t,n=this,r=n.selection,i=n.settings.content_editable,o,a,s=n.getDoc(),l;if(!e){if(o=r.getRng(),o.item&&(a=o.item(0)),n._refreshContentEditable(),i||(x.opera||n.getBody().focus(),n.getWin().focus()),P||i){if(l=n.getBody(),l.setActive)try{l.setActive()}catch(c){l.focus()}else l.focus();i&&r.normalize()}a&&a.ownerDocument==s&&(o=s.body.createControlRange(),o.addElement(a),o.select())}n.editorManager.activeEditor!=n&&((t=n.editorManager.activeEditor)&&t.fire("deactivate",{relatedTarget:n}),n.fire("activate",{relatedTarget:t})),n.editorManager.activeEditor=n},execCallback:function(e){var t=this,n=t.settings[e],r;if(n)return t.callbackLookup&&(r=t.callbackLookup[e])&&(n=r.func,r=r.scope),"string"==typeof n&&(r=n.replace(/\.\w+$/,""),r=r?H(r):0,n=H(n),t.callbackLookup=t.callbackLookup||{},t.callbackLookup[e]={func:n,scope:r}),n.apply(r||t,Array.prototype.slice.call(arguments,1))},translate:function(e){var t=this.settings.language||"en",n=this.editorManager.i18n;return e?n.data[t+"."+e]||e.replace(/\{\#([^\}]+)\}/g,function(e,r){return n.data[t+"."+r]||"{#"+r+"}"}):""},getLang:function(e,n){return this.editorManager.i18n.data[(this.settings.language||"en")+"."+e]||(n!==t?n:"{#"+e+"}")},getParam:function(e,t,n){var r=e in this.settings?this.settings[e]:t,i;return"hash"===n?(i={},"string"==typeof r?A(r.split(r.indexOf("=")>0?/[;,](?![^=;,]*(?:[;,]|$))/:","),function(e){e=e.split("="),i[L(e[0])]=L(e.length>1?e[1]:e)}):i=r,i):r},nodeChanged:function(e){this._nodeChangeDispatcher.nodeChanged(e)},addButton:function(e,t){var n=this;t.cmd&&(t.onclick=function(){n.execCommand(t.cmd)}),t.text||t.icon||(t.icon=e),n.buttons=n.buttons||{},t.tooltip=t.tooltip||t.title,n.buttons[e]=t},addMenuItem:function(e,t){var n=this;t.cmd&&(t.onclick=function(){n.execCommand(t.cmd)}),n.menuItems=n.menuItems||{},n.menuItems[e]=t},addCommand:function(e,t,n){this.execCommands[e]={func:t,scope:n||this}},addQueryStateHandler:function(e,t,n){this.queryStateCommands[e]={func:t,scope:n||this}},addQueryValueHandler:function(e,t,n){this.queryValueCommands[e]={func:t,scope:n||this}},addShortcut:function(e,t,n,r){this.shortcuts.add(e,t,n,r)},execCommand:function(e,t,n,r){var i=this,o=0,a;if(/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(e)||r&&r.skip_focus||i.focus(),r=R({},r),r=i.fire("BeforeExecCommand",{command:e,ui:t,value:n}),r.isDefaultPrevented())return!1;if((a=i.execCommands[e])&&a.func.call(a.scope,t,n)!==!0)return i.fire("ExecCommand",{command:e,ui:t,value:n}),!0;if(A(i.plugins,function(r){return r.execCommand&&r.execCommand(e,t,n)?(i.fire("ExecCommand",{command:e,ui:t,value:n}),o=!0,!1):void 0}),o)return o;if(i.theme&&i.theme.execCommand&&i.theme.execCommand(e,t,n))return i.fire("ExecCommand",{command:e,ui:t,value:n}),!0;if(i.editorCommands.execCommand(e,t,n))return i.fire("ExecCommand",{command:e,ui:t,value:n}),!0;try{o=i.getDoc().execCommand(e,t,n)}catch(s){}return o?(i.fire("ExecCommand",{command:e,ui:t,value:n}),!0):!1},queryCommandState:function(e){var t=this,n,r;if(!t._isHidden()){if((n=t.queryStateCommands[e])&&(r=n.func.call(n.scope),r===!0||r===!1))return r;if(r=t.editorCommands.queryCommandState(e),-1!==r)return r;try{return t.getDoc().queryCommandState(e)}catch(i){}}},queryCommandValue:function(e){var n=this,r,i;if(!n._isHidden()){if((r=n.queryValueCommands[e])&&(i=r.func.call(r.scope),i!==!0))return i;if(i=n.editorCommands.queryCommandValue(e),i!==t)return i;try{return n.getDoc().queryCommandValue(e)}catch(o){}}},show:function(){var e=this;e.hidden&&(e.hidden=!1,e.inline?e.getBody().contentEditable=!0:(k.show(e.getContainer()),k.hide(e.id)),e.load(),e.fire("show"))},hide:function(){var e=this,t=e.getDoc();e.hidden||(O&&t&&!e.inline&&t.execCommand("SelectAll"),e.save(),e.inline?(e.getBody().contentEditable=!1,e==e.editorManager.focusedEditor&&(e.editorManager.focusedEditor=null)):(k.hide(e.getContainer()),k.setStyle(e.id,"display",e.orgDisplay)),e.hidden=!0,e.fire("hide"))},isHidden:function(){return!!this.hidden},setProgressState:function(e,t){this.fire("ProgressState",{state:e,time:t})},load:function(e){var n=this,r=n.getElement(),i;return r?(e=e||{},e.load=!0,i=n.setContent(r.value!==t?r.value:r.innerHTML,e),e.element=r,e.no_events||n.fire("LoadContent",e),e.element=r=null,i):void 0},save:function(e){var t=this,n=t.getElement(),r,i;if(n&&t.initialized)return e=e||{},e.save=!0,e.element=n,r=e.content=t.getContent(e),e.no_events||t.fire("SaveContent",e),r=e.content,/TEXTAREA|INPUT/i.test(n.nodeName)?n.value=r:(t.inline||(n.innerHTML=r),(i=k.getParent(t.id,"form"))&&A(i.elements,function(e){return e.name==t.id?(e.value=r,!1):void 0})),e.element=n=null,e.set_dirty!==!1&&(t.isNotDirty=!0),r},setContent:function(e,t){var n=this,r=n.getBody(),i;return t=t||{},t.format=t.format||"html",t.set=!0,t.content=e,t.no_events||n.fire("BeforeSetContent",t),e=t.content,0===e.length||/^\s+$/.test(e)?(i=n.settings.forced_root_block,i&&n.schema.isValidChild(r.nodeName.toLowerCase(),i.toLowerCase())?(e=O&&11>O?"":'<br data-mce-bogus="1">',e=n.dom.createHTML(i,n.settings.forced_root_block_attrs,e)):O||(e='<br data-mce-bogus="1">'),n.dom.setHTML(r,e),n.fire("SetContent",t)):("raw"!==t.format&&(e=new s({},n.schema).serialize(n.parser.parse(e,{isRootContent:!0}))),t.content=L(e),n.dom.setHTML(r,t.content),t.no_events||n.fire("SetContent",t)),t.content},getContent:function(e){var t=this,n,r=t.getBody();return e=e||{},e.format=e.format||"html",e.get=!0,e.getInner=!0,e.no_events||t.fire("BeforeGetContent",e),n="raw"==e.format?r.innerHTML:"text"==e.format?r.innerText||r.textContent:t.serializer.serialize(r,e),e.content="text"!=e.format?L(n):n,e.no_events||t.fire("GetContent",e),e.content},insertContent:function(e,t){t&&(e=R({content:e},t)),this.execCommand("mceInsertContent",!1,e)},isDirty:function(){return!this.isNotDirty},getContainer:function(){var e=this;return e.container||(e.container=k.get(e.editorContainer||e.id+"_parent")),e.container},getContentAreaContainer:function(){return this.contentAreaContainer},getElement:function(){return this.targetElm||(this.targetElm=k.get(this.id)),this.targetElm},getWin:function(){var e=this,t;return e.contentWindow||(t=e.iframeElement,t&&(e.contentWindow=t.contentWindow)),e.contentWindow},getDoc:function(){var e=this,t;return e.contentDocument||(t=e.getWin(),t&&(e.contentDocument=t.document)),e.contentDocument},getBody:function(){return this.bodyElement||this.getDoc().body},convertURL:function(e,t,n){var r=this,i=r.settings;return i.urlconverter_callback?r.execCallback("urlconverter_callback",e,n,!0,t):!i.convert_urls||n&&"LINK"==n.nodeName||0===e.indexOf("file:")||0===e.length?e:i.relative_urls?r.documentBaseURI.toRelative(e):e=r.documentBaseURI.toAbsolute(e,i.remove_script_host)},addVisual:function(e){var n=this,r=n.settings,i=n.dom,o;e=e||n.getBody(),n.hasVisual===t&&(n.hasVisual=r.visual),A(i.select("table,a",e),function(e){var t;switch(e.nodeName){case"TABLE":return o=r.visual_table_class||"mce-item-table",t=i.getAttrib(e,"border"),void(t&&"0"!=t||!n.hasVisual?i.removeClass(e,o):i.addClass(e,o));case"A":return void(i.getAttrib(e,"href",!1)||(t=i.getAttrib(e,"name")||e.id,o=r.visual_anchor_class||"mce-item-anchor",t&&n.hasVisual?i.addClass(e,o):i.removeClass(e,o)))}}),n.fire("VisualAid",{element:e,hasVisual:n.hasVisual})},remove:function(){var e=this;e.removed||(e.save(),e.removed=1,e.unbindAllNativeEvents(),e.hasHiddenInput&&k.remove(e.getElement().nextSibling),e.inline||(O&&10>O&&e.getDoc().execCommand("SelectAll",!1,null),k.setStyle(e.id,"display",e.orgDisplay),e.getBody().onload=null),e.fire("remove"),e.editorManager.remove(e),k.remove(e.getContainer()),e.destroy())},destroy:function(e){var t=this,n;if(!t.destroyed){if(!e&&!t.removed)return void t.remove();e||(t.editorManager.off("beforeunload",t._beforeUnload),t.theme&&t.theme.destroy&&t.theme.destroy(),t.selection.destroy(),t.dom.destroy()),n=t.formElement,n&&(n._mceOldSubmit&&(n.submit=n._mceOldSubmit,n._mceOldSubmit=null),k.unbind(n,"submit reset",t.formEventDelegate)),t.contentAreaContainer=t.formElement=t.container=t.editorContainer=null,t.bodyElement=t.contentDocument=t.contentWindow=null,t.iframeElement=t.targetElm=null,t.selection&&(t.selection=t.selection.win=t.selection.dom=t.selection.dom.doc=null),t.destroyed=1}},_refreshContentEditable:function(){var e=this,t,n;e._isHidden()&&(t=e.getBody(),n=t.parentNode,n.removeChild(t),n.appendChild(t),t.focus())},_isHidden:function(){var e;return P?(e=this.selection.getSel(),!e||!e.rangeCount||0===e.rangeCount):0}},R(N.prototype,_),N}),r(ft,[],function(){var e={};return{rtl:!1,add:function(t,n){for(var r in n)e[r]=n[r];this.rtl=this.rtl||"rtl"===e._dir},translate:function(t){if("undefined"==typeof t)return t;if("string"!=typeof t&&t.raw)return t.raw;if(t.push){var n=t.slice(1);t=(e[t[0]]||t[0]).replace(/\{([^\}]+)\}/g,function(e,t){return n[t]})}return e[t]||t},data:e}}),r(pt,[y,d],function(e,t){function n(e){function s(){try{return document.activeElement}catch(e){return document.body}}function l(e,t){if(t&&t.startContainer){if(!e.isChildOf(t.startContainer,e.getRoot())||!e.isChildOf(t.endContainer,e.getRoot()))return;return{startContainer:t.startContainer,startOffset:t.startOffset,endContainer:t.endContainer,endOffset:t.endOffset}}return t}function c(e,t){var n;return t.startContainer?(n=e.getDoc().createRange(),n.setStart(t.startContainer,t.startOffset),n.setEnd(t.endContainer,t.endOffset)):n=t,n}function u(e){return!!a.getParent(e,n.isEditorUIElement)}function d(n){var d=n.editor;d.on("init",function(){(d.inline||t.ie)&&("onbeforedeactivate"in document&&t.ie<9?d.dom.bind(d.getBody(),"beforedeactivate",function(){try{d.lastRng=d.selection.getRng()}catch(e){}}):d.on("nodechange mouseup keyup",function(e){var t=s();"nodechange"==e.type&&e.selectionChange||(t&&t.id==d.id+"_ifr"&&(t=d.getBody()),d.dom.isChildOf(t,d.getBody())&&(d.lastRng=d.selection.getRng()))}),t.webkit&&!r&&(r=function(){var t=e.activeEditor;if(t&&t.selection){var n=t.selection.getRng();n&&!n.collapsed&&(d.lastRng=n)}},a.bind(document,"selectionchange",r)))}),d.on("setcontent",function(){d.lastRng=null}),d.on("mousedown",function(){d.selection.lastFocusBookmark=null}),d.on("focusin",function(){var t=e.focusedEditor;d.selection.lastFocusBookmark&&(d.selection.setRng(c(d,d.selection.lastFocusBookmark)),d.selection.lastFocusBookmark=null),t!=d&&(t&&t.fire("blur",{focusedEditor:d}),e.activeEditor=d,e.focusedEditor=d,d.fire("focus",{blurredEditor:t}),d.focus(!0)),d.lastRng=null}),d.on("focusout",function(){window.setTimeout(function(){var t=e.focusedEditor;u(s())||t!=d||(d.fire("blur",{focusedEditor:null}),e.focusedEditor=null,d.selection&&(d.selection.lastFocusBookmark=null))},0)}),i||(i=function(t){var n=e.activeEditor;n&&t.target.ownerDocument==document&&(n.selection&&t.target!=n.getBody()&&(n.selection.lastFocusBookmark=l(n.dom,n.lastRng)),u(t.target)||e.focusedEditor!=n||(n.fire("blur",{focusedEditor:null}),e.focusedEditor=null))},a.bind(document,"focusin",i)),d.inline&&!o&&(o=function(t){var n=e.activeEditor;if(n.inline&&!n.dom.isChildOf(t.target,n.getBody())){var r=n.selection.getRng();r.collapsed||(n.lastRng=r)}},a.bind(document,"mouseup",o))}function f(t){e.focusedEditor==t.editor&&(e.focusedEditor=null),e.activeEditor||(a.unbind(document,"selectionchange",r),a.unbind(document,"focusin",i),a.unbind(document,"mouseup",o),r=i=o=null)}e.on("AddEditor",d),e.on("RemoveEditor",f)}var r,i,o,a=e.DOM;return n.isEditorUIElement=function(e){return-1!==e.className.toString().indexOf("mce-")},n}),r(ht,[dt,f,y,V,d,u,lt,ft,pt],function(e,t,n,r,i,o,a,s,l){function c(e){var t=v.editors,n;delete t[e.id];for(var r=0;r<t.length;r++)if(t[r]==e){t.splice(r,1),n=!0;break}return v.activeEditor==e&&(v.activeEditor=t[0]),v.focusedEditor==e&&(v.focusedEditor=null),n}function u(e){return e&&!(e.getContainer()||e.getBody()).parentNode&&(c(e),e.unbindAllNativeEvents(),e.destroy(!0),e=null),e}var d=n.DOM,f=o.explode,p=o.each,h=o.extend,m=0,g,v;return v={$:t,majorVersion:"4",minorVersion:"1.3",releaseDate:"2014-07-29",editors:[],i18n:s,activeEditor:null,setup:function(){var e=this,t,n,i="",o,a;if(n=document.location.href,/^[^:]+:\/\/\/?[^\/]+\//.test(n)&&(n=n.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,""),/[\/\\]$/.test(n)||(n+="/")),o=window.tinymce||window.tinyMCEPreInit)t=o.base||o.baseURL,i=o.suffix;else{for(var s=document.getElementsByTagName("script"),c=0;c<s.length;c++)if(a=s[c].src,/tinymce(\.full|\.jquery|)(\.min|\.dev|)\.js/.test(a)){-1!=a.indexOf(".min")&&(i=".min"),t=a.substring(0,a.lastIndexOf("/"));break}!t&&document.currentScript&&(a=document.currentScript.src,-1!=a.indexOf(".min")&&(i=".min"),t=a.substring(0,a.lastIndexOf("/")))}e.baseURL=new r(n).toAbsolute(t),e.documentBaseURL=n,e.baseURI=new r(e.baseURL),e.suffix=i,e.focusManager=new l(e)},init:function(t){function n(e){var t=e.id;return t||(t=e.name,t=t&&!d.get(t)?e.name:d.uniqueId(),e.setAttribute("id",t)),t}function r(t,n,r){if(!u(s.get(t))){var i=new e(t,n,s);i.targetElm=i.targetElm||r,l.push(i),i.render()}}function i(e){var n=t[e];if(n)return n.apply(s,Array.prototype.slice.call(arguments,2))}function o(e,t){return t.constructor===RegExp?t.test(e.className):d.hasClass(e,t)}function a(){var u,g;if(d.unbind(window,"ready",a),i("onpageload"),t.types)return void p(t.types,function(e){p(d.select(e.selector),function(i){r(n(i),h({},t,e),i)})});if(t.selector)return void p(d.select(t.selector),function(e){r(n(e),t,e)});switch(t.target&&r(n(t.target),t),t.mode){case"exact":u=t.elements||"",u.length>0&&p(f(u),function(n){d.get(n)?(c=new e(n,t,s),l.push(c),c.render()):p(document.forms,function(e){p(e.elements,function(e){e.name===n&&(n="mce_editor_"+m++,d.setAttrib(e,"id",n),r(n,t,e))})})});break;case"textareas":case"specific_textareas":p(d.select("textarea"),function(e){t.editor_deselector&&o(e,t.editor_deselector)||(!t.editor_selector||o(e,t.editor_selector))&&r(n(e),t,e)})}t.oninit&&(u=g=0,p(l,function(e){g++,e.initialized?u++:e.on("init",function(){u++,u==g&&i("oninit")}),u==g&&i("oninit")}))}var s=this,l=[],c;s.settings=t,d.bind(window,"ready",a)},get:function(e){return arguments.length?e in this.editors?this.editors[e]:null:this.editors},add:function(e){var t=this,n=t.editors;return n[e.id]=e,n.push(e),t.activeEditor=e,t.fire("AddEditor",{editor:e}),g||(g=function(){t.fire("BeforeUnload")},d.bind(window,"beforeunload",g)),e},createEditor:function(t,n){return this.add(new e(t,n,this))},remove:function(e){var t=this,n,r=t.editors,i;{if(e)return"string"==typeof e?(e=e.selector||e,void p(d.select(e),function(e){i=r[e.id],i&&t.remove(i)})):(i=e,r[i.id]?(c(i)&&t.fire("RemoveEditor",{editor:i}),r.length||d.unbind(window,"beforeunload",g),i.remove(),i):null);for(n=r.length-1;n>=0;n--)t.remove(r[n])}},execCommand:function(t,n,r){var i=this,o=i.get(r);switch(t){case"mceAddEditor":return i.get(r)||new e(r,i.settings,i).render(),!0;case"mceRemoveEditor":return o&&o.remove(),!0;case"mceToggleEditor":return o?(o.isHidden()?o.show():o.hide(),!0):(i.execCommand("mceAddEditor",0,r),!0)}return i.activeEditor?i.activeEditor.execCommand(t,n,r):!1},triggerSave:function(){p(this.editors,function(e){e.save()})},addI18n:function(e,t){s.add(e,t)},translate:function(e){return s.translate(e)}},h(v,a),v.setup(),window.tinymce=window.tinyMCE=v,v}),r(mt,[ht,u],function(e,t){var n=t.each,r=t.explode;e.on("AddEditor",function(e){var t=e.editor;t.on("preInit",function(){function e(e,t){n(t,function(t,n){t&&s.setStyle(e,n,t)}),s.rename(e,"span")}function i(e){s=t.dom,l.convert_fonts_to_spans&&n(s.select("font,u,strike",e.node),function(e){o[e.nodeName.toLowerCase()](s,e)})}var o,a,s,l=t.settings;l.inline_styles&&(a=r(l.font_size_legacy_values),o={font:function(t,n){e(n,{backgroundColor:n.style.backgroundColor,color:n.color,fontFamily:n.face,fontSize:a[parseInt(n.size,10)-1]})},u:function(t,n){e(n,{textDecoration:"underline"})},strike:function(t,n){e(n,{textDecoration:"line-through"})}},t.on("PreProcess SetContent",i))})})}),r(gt,[lt,u],function(e,t){var n={send:function(e){function t(){!e.async||4==r.readyState||i++>1e4?(e.success&&1e4>i&&200==r.status?e.success.call(e.success_scope,""+r.responseText,r,e):e.error&&e.error.call(e.error_scope,i>1e4?"TIMED_OUT":"GENERAL",r,e),r=null):setTimeout(t,10)}var r,i=0;if(e.scope=e.scope||this,e.success_scope=e.success_scope||e.scope,e.error_scope=e.error_scope||e.scope,e.async=e.async===!1?!1:!0,e.data=e.data||"",r=new XMLHttpRequest){if(r.overrideMimeType&&r.overrideMimeType(e.content_type),r.open(e.type||(e.data?"POST":"GET"),e.url,e.async),e.crossDomain&&(r.withCredentials=!0),e.content_type&&r.setRequestHeader("Content-Type",e.content_type),r.setRequestHeader("X-Requested-With","XMLHttpRequest"),r=n.fire("beforeSend",{xhr:r,settings:e}).xhr,r.send(e.data),!e.async)return t();setTimeout(t,10)}}};return t.extend(n,e),n}),r(vt,[],function(){function e(t,n){var r,i,o,a;if(n=n||'"',null===t)return"null";if(o=typeof t,"string"==o)return i="\bb t\nn\ff\rr\"\"''\\\\",n+t.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g,function(e,t){return'"'===n&&"'"===e?e:(r=i.indexOf(t),r+1?"\\"+i.charAt(r+1):(e=t.charCodeAt().toString(16),"\\u"+"0000".substring(e.length)+e))})+n;if("object"==o){if(t.hasOwnProperty&&"[object Array]"===Object.prototype.toString.call(t)){for(r=0,i="[";r<t.length;r++)i+=(r>0?",":"")+e(t[r],n);return i+"]"}i="{";for(a in t)t.hasOwnProperty(a)&&(i+="function"!=typeof t[a]?(i.length>1?","+n:n)+a+n+":"+e(t[a],n):"");return i+"}"}return""+t}return{serialize:e,parse:function(e){try{return window[String.fromCharCode(101)+"val"]("("+e+")")}catch(t){}}}}),r(yt,[vt,gt,u],function(e,t,n){function r(e){this.settings=i({},e),this.count=0}var i=n.extend;return r.sendRPC=function(e){return(new r).send(e)},r.prototype={send:function(n){var r=n.error,o=n.success;n=i(this.settings,n),n.success=function(t,i){t=e.parse(t),"undefined"==typeof t&&(t={error:"JSON Parse error."}),t.error?r.call(n.error_scope||n.scope,t.error,i):o.call(n.success_scope||n.scope,t.result)},n.error=function(e,t){r&&r.call(n.error_scope||n.scope,e,t)},n.data=e.serialize({id:n.id||"c"+this.count++,method:n.method,params:n.params}),n.content_type="application/json",t.send(n)}},r}),r(bt,[y],function(e){return{callbacks:{},count:0,send:function(n){var r=this,i=e.DOM,o=n.count!==t?n.count:r.count,a="tinymce_jsonp_"+o;r.callbacks[o]=function(e){i.remove(a),delete r.callbacks[o],n.callback(e)},i.add(i.doc.body,"script",{id:a,src:n.url,type:"text/javascript"}),r.count++}}}),r(Ct,[],function(){function e(){s=[];for(var e in a)s.push(e);i.length=s.length}function n(){function n(e){var n,r;return r=e!==t?u+e:i.indexOf(",",u),-1===r||r>i.length?null:(n=i.substring(u,r),u=r+1,n)}var r,i,s,u=0;if(a={},c){o.load(l),i=o.getAttribute(l)||"";do{var d=n();if(null===d)break;if(r=n(parseInt(d,32)||0),null!==r){if(d=n(),null===d)break;s=n(parseInt(d,32)||0),r&&(a[r]=s)}}while(null!==r);e()}}function r(){var t,n="";if(c){for(var r in a)t=a[r],n+=(n?",":"")+r.length.toString(32)+","+r+","+t.length.toString(32)+","+t;o.setAttribute(l,n);try{o.save(l)}catch(i){}e()}}var i,o,a,s,l,c;try{if(window.localStorage)return localStorage}catch(u){}return l="tinymce",o=document.documentElement,c=!!o.addBehavior,c&&o.addBehavior("#default#userData"),i={key:function(e){return s[e]},getItem:function(e){return e in a?a[e]:null},setItem:function(e,t){a[e]=""+t,r()},removeItem:function(e){delete a[e],r()},clear:function(){a={},r()}},n(),i}),r(xt,[y,l,b,C,u,d],function(e,t,n,r,i,o){var a=window.tinymce;return a.DOM=e.DOM,a.ScriptLoader=n.ScriptLoader,a.PluginManager=r.PluginManager,a.ThemeManager=r.ThemeManager,a.dom=a.dom||{},a.dom.Event=t.Event,i.each(i,function(e,t){a[t]=e}),i.each("isOpera isWebKit isIE isGecko isMac".split(" "),function(e){a[e]=o[e.substr(2).toLowerCase()]}),{}}),r(wt,[U,u],function(e,t){return e.extend({Defaults:{firstControlClass:"first",lastControlClass:"last"},init:function(e){this.settings=t.extend({},this.Defaults,e)},preRender:function(e){e.addClass(this.settings.containerClass,"body")},applyClasses:function(e){var t=this,n=t.settings,r,i,o;r=e.items().filter(":visible"),i=n.firstControlClass,o=n.lastControlClass,r.each(function(e){e.removeClass(i).removeClass(o),n.controlClass&&e.addClass(n.controlClass)}),r.eq(0).addClass(i),r.eq(-1).addClass(o)},renderHtml:function(e){var t=this,n=t.settings,r,i="";return r=e.items(),r.eq(0).addClass(n.firstControlClass),r.eq(-1).addClass(n.lastControlClass),r.each(function(e){n.controlClass&&e.addClass(n.controlClass),i+=e.renderHtml()}),i},recalc:function(){},postRender:function(){}})}),r(_t,[wt],function(e){return e.extend({Defaults:{containerClass:"abs-layout",controlClass:"abs-layout-item"},recalc:function(e){e.items().filter(":visible").each(function(e){var t=e.settings;e.layoutRect({x:t.x,y:t.y,w:t.w,h:t.h}),e.recalc&&e.recalc()})},renderHtml:function(e){return'<div id="'+e._id+'-absend" class="'+e.classPrefix+'abs-end"></div>'+this._super(e)}})}),r(Et,[K,tt],function(e,t){return e.extend({Mixins:[t],Defaults:{classes:"widget tooltip tooltip-n"},text:function(e){var t=this;return"undefined"!=typeof e?(t._value=e,t._rendered&&(t.getEl().lastChild.innerHTML=t.encode(e)),t):t._value},renderHtml:function(){var e=this,t=e.classPrefix;return'<div id="'+e._id+'" class="'+e.classes()+'" role="presentation"><div class="'+t+'tooltip-arrow"></div><div class="'+t+'tooltip-inner">'+e.encode(e._text)+"</div></div>"},repaint:function(){var e=this,t,n;t=e.getEl().style,n=e._layoutRect,t.left=n.x+"px",t.top=n.y+"px",t.zIndex=131070}})}),r(Nt,[K,Et],function(e,t){var n,r=e.extend({init:function(e){var t=this;t._super(e),e=t.settings,t.canFocus=!0,e.tooltip&&r.tooltips!==!1&&(t.on("mouseenter",function(n){var r=t.tooltip().moveTo(-65535);if(n.control==t){var i=r.text(e.tooltip).show().testMoveRel(t.getEl(),["bc-tc","bc-tl","bc-tr"]);r.toggleClass("tooltip-n","bc-tc"==i),r.toggleClass("tooltip-nw","bc-tl"==i),r.toggleClass("tooltip-ne","bc-tr"==i),r.moveRel(t.getEl(),i)}else r.hide()}),t.on("mouseleave mousedown click",function(){t.tooltip().hide()})),t.aria("label",e.ariaLabel||e.tooltip)},tooltip:function(){return n||(n=new t({type:"tooltip"}),n.renderTo()),n},active:function(e){var t=this,n;return e!==n&&(t.aria("pressed",e),t.toggleClass("active",e)),t._super(e)},disabled:function(e){var t=this,n;return e!==n&&(t.aria("disabled",e),t.toggleClass("disabled",e)),t._super(e)},postRender:function(){var e=this,t=e.settings;e._rendered=!0,e._super(),e.parent()||!t.width&&!t.height||(e.initLayoutRect(),e.repaint()),t.autofocus&&e.focus()},remove:function(){this._super(),n&&(n.remove(),n=null)}});return r}),r(kt,[Nt],function(e){return e.extend({Defaults:{classes:"widget btn",role:"button"},init:function(e){var t=this,n;t.on("click mousedown",function(e){e.preventDefault()}),t._super(e),n=e.size,e.subtype&&t.addClass(e.subtype),n&&t.addClass("btn-"+n)},icon:function(e){var t=this,n=t.classPrefix;if("undefined"==typeof e)return t.settings.icon;if(t.settings.icon=e,e=e?n+"ico "+n+"i-"+t.settings.icon:"",t._rendered){var r=t.getEl().firstChild,i=r.getElementsByTagName("i")[0];e?(i&&i==r.firstChild||(i=document.createElement("i"),r.insertBefore(i,r.firstChild)),i.className=e):i&&r.removeChild(i),t.text(t._text)}return t},repaint:function(){var e=this.getEl().firstChild.style;e.width=e.height="100%",this._super()},text:function(e){var t=this;if(t._rendered){var n=t.getEl().lastChild.lastChild;n&&(n.data=t.translate(e))}return t._super(e)},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix,r=e.settings.icon,i;return i=e.settings.image,i?(r="none","string"!=typeof i&&(i=window.getSelection?i[0]:i[1]),i=" style=\"background-image: url('"+i+"')\""):i="",r=e.settings.icon?n+"ico "+n+"i-"+r:"",'<div id="'+t+'" class="'+e.classes()+'" tabindex="-1" aria-labelledby="'+t+'"><button role="presentation" type="button" tabindex="-1">'+(r?'<i class="'+r+'"'+i+"></i>":"")+(e._text?(r?"\xa0":"")+e.encode(e._text):"")+"</button></div>"
+}})}),r(St,[J],function(e){return e.extend({Defaults:{defaultType:"button",role:"group"},renderHtml:function(){var e=this,t=e._layout;return e.addClass("btn-group"),e.preRender(),t.preRender(e),'<div id="'+e._id+'" class="'+e.classes()+'"><div id="'+e._id+'-body">'+(e.settings.html||"")+t.renderHtml(e)+"</div></div>"}})}),r(Tt,[Nt],function(e){return e.extend({Defaults:{classes:"checkbox",role:"checkbox",checked:!1},init:function(e){var t=this;t._super(e),t.on("click mousedown",function(e){e.preventDefault()}),t.on("click",function(e){e.preventDefault(),t.disabled()||t.checked(!t.checked())}),t.checked(t.settings.checked)},checked:function(e){var t=this;return"undefined"!=typeof e?(e?t.addClass("checked"):t.removeClass("checked"),t._checked=e,t.aria("checked",e),t):t._checked},value:function(e){return this.checked(e)},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix;return'<div id="'+t+'" class="'+e.classes()+'" unselectable="on" aria-labelledby="'+t+'-al" tabindex="-1"><i class="'+n+"ico "+n+'i-checkbox"></i><span id="'+t+'-al" class="'+n+'label">'+e.encode(e._text)+"</span></div>"}})}),r(Rt,[Nt,G,Y],function(e,t,n){return e.extend({init:function(e){var t=this;t._super(e),t.addClass("combobox"),t.subinput=!0,t.ariaTarget="inp",e=t.settings,e.menu=e.menu||e.values,e.menu&&(e.icon="caret"),t.on("click",function(n){for(var r=n.target,i=t.getEl();r&&r!=i;)r.id&&-1!=r.id.indexOf("-open")&&(t.fire("action"),e.menu&&(t.showMenu(),n.aria&&t.menu.items()[0].focus())),r=r.parentNode}),t.on("keydown",function(e){"INPUT"==e.target.nodeName&&13==e.keyCode&&t.parents().reverse().each(function(n){return e.preventDefault(),t.fire("change"),n.hasEventListeners("submit")&&n.toJSON?(n.fire("submit",{data:n.toJSON()}),!1):void 0})}),e.placeholder&&(t.addClass("placeholder"),t.on("focusin",function(){t._hasOnChange||(n.on(t.getEl("inp"),"change",function(){t.fire("change")}),t._hasOnChange=!0),t.hasClass("placeholder")&&(t.getEl("inp").value="",t.removeClass("placeholder"))}),t.on("focusout",function(){0===t.value().length&&(t.getEl("inp").value=e.placeholder,t.addClass("placeholder"))}))},showMenu:function(){var e=this,n=e.settings,r;e.menu||(r=n.menu||[],r.length?r={type:"menu",items:r}:r.type=r.type||"menu",e.menu=t.create(r).parent(e).renderTo(e.getContainerElm()),e.fire("createmenu"),e.menu.reflow(),e.menu.on("cancel",function(t){t.control===e.menu&&e.focus()}),e.menu.on("show hide",function(t){t.control.items().each(function(t){t.active(t.value()==e.value())})}).fire("show"),e.menu.on("select",function(t){e.value(t.control.value())}),e.on("focusin",function(t){"INPUT"==t.target.tagName.toUpperCase()&&e.menu.hide()}),e.aria("expanded",!0)),e.menu.show(),e.menu.layoutRect({w:e.layoutRect().w}),e.menu.moveRel(e.getEl(),e.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"])},value:function(e){var t=this;return"undefined"!=typeof e?(t._value=e,t.removeClass("placeholder"),t._rendered&&(t.getEl("inp").value=e),t):t._rendered?(e=t.getEl("inp").value,e!=t.settings.placeholder?e:""):t._value},disabled:function(e){var t=this;return t._rendered&&"undefined"!=typeof e&&(t.getEl("inp").disabled=e),t._super(e)},focus:function(){this.getEl("inp").focus()},repaint:function(){var e=this,t=e.getEl(),r=e.getEl("open"),i=e.layoutRect(),o,a;o=r?i.w-n.getSize(r).width-10:i.w-10;var s=document;return s.all&&(!s.documentMode||s.documentMode<=8)&&(a=e.layoutRect().h-2+"px"),n.css(t.firstChild,{width:o,lineHeight:a}),e._super(),e},postRender:function(){var e=this;return n.on(this.getEl("inp"),"change",function(){e.fire("change")}),e._super()},remove:function(){n.off(this.getEl("inp")),this._super()},renderHtml:function(){var e=this,t=e._id,n=e.settings,r=e.classPrefix,i=n.value||n.placeholder||"",o,a,s="",l="";return"spellcheck"in n&&(l+=' spellcheck="'+n.spellcheck+'"'),n.maxLength&&(l+=' maxlength="'+n.maxLength+'"'),n.size&&(l+=' size="'+n.size+'"'),n.subtype&&(l+=' type="'+n.subtype+'"'),e.disabled()&&(l+=' disabled="disabled"'),o=n.icon,o&&"caret"!=o&&(o=r+"ico "+r+"i-"+n.icon),a=e._text,(o||a)&&(s='<div id="'+t+'-open" class="'+r+"btn "+r+'open" tabIndex="-1" role="button"><button id="'+t+'-action" type="button" hidefocus="1" tabindex="-1">'+("caret"!=o?'<i class="'+o+'"></i>':'<i class="'+r+'caret"></i>')+(a?(o?" ":"")+a:"")+"</button></div>",e.addClass("has-open")),'<div id="'+t+'" class="'+e.classes()+'"><input id="'+t+'-inp" class="'+r+"textbox "+r+'placeholder" value="'+i+'" hidefocus="1"'+l+" />"+s+"</div>"}})}),r(At,[Rt],function(e){return e.extend({init:function(e){var t=this;e.spellcheck=!1,e.icon="none",t._super(e),t.addClass("colorbox"),t.on("change keyup postrender",function(){t.repaintColor(t.value())})},repaintColor:function(e){this.getEl().getElementsByTagName("i")[0].style.background=e},value:function(e){var t=this;return"undefined"!=typeof e&&t._rendered&&t.repaintColor(e),t._super(e)}})}),r(Bt,[kt,rt],function(e,t){return e.extend({showPanel:function(){var e=this,n=e.settings;if(e.active(!0),e.panel)e.panel.show();else{var r=n.panel;r.type&&(r={layout:"grid",items:r}),r.role=r.role||"dialog",r.popover=!0,r.autohide=!0,r.ariaRoot=!0,e.panel=new t(r).on("hide",function(){e.active(!1)}).on("cancel",function(t){t.stopPropagation(),e.focus(),e.hidePanel()}).parent(e).renderTo(e.getContainerElm()),e.panel.fire("show"),e.panel.reflow()}e.panel.moveRel(e.getEl(),n.popoverAlign||(e.isRtl()?["bc-tr","bc-tc"]:["bc-tl","bc-tc"]))},hidePanel:function(){var e=this;e.panel&&e.panel.hide()},postRender:function(){var e=this;return e.aria("haspopup",!0),e.on("click",function(t){t.control===e&&(e.panel&&e.panel.visible()?e.hidePanel():(e.showPanel(),e.panel.focus(!!t.aria)))}),e._super()},remove:function(){return this.panel&&(this.panel.remove(),this.panel=null),this._super()}})}),r(Dt,[Bt,y],function(e,t){var n=t.DOM;return e.extend({init:function(e){this._super(e),this.addClass("colorbutton")},color:function(e){return e?(this._color=e,this.getEl("preview").style.backgroundColor=e,this):this._color},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix,r=e.settings.icon?n+"ico "+n+"i-"+e.settings.icon:"",i=e.settings.image?" style=\"background-image: url('"+e.settings.image+"')\"":"";return'<div id="'+t+'" class="'+e.classes()+'" role="button" tabindex="-1" aria-haspopup="true"><button role="presentation" hidefocus="1" type="button" tabindex="-1">'+(r?'<i class="'+r+'"'+i+"></i>":"")+'<span id="'+t+'-preview" class="'+n+'preview"></span>'+(e._text?(r?" ":"")+e._text:"")+'</button><button type="button" class="'+n+'open" hidefocus="1" tabindex="-1"> <i class="'+n+'caret"></i></button></div>'},postRender:function(){var e=this,t=e.settings.onclick;return e.on("click",function(r){r.aria&&"down"==r.aria.key||r.control!=e||n.getParent(r.target,"."+e.classPrefix+"open")||(r.stopImmediatePropagation(),t.call(e,r))}),delete e.settings.onclick,e._super()}})}),r(Lt,[],function(){function e(e){function i(e,i,o){var a,s,l,c,u,d;return a=0,s=0,l=0,e/=255,i/=255,o/=255,u=t(e,t(i,o)),d=n(e,n(i,o)),u==d?(l=u,{h:0,s:0,v:100*l}):(c=e==u?i-o:o==u?e-i:o-e,a=e==u?3:o==u?1:5,a=60*(a-c/(d-u)),s=(d-u)/d,l=d,{h:r(a),s:r(100*s),v:r(100*l)})}function o(e,i,o){var a,s,l,c;if(e=(parseInt(e,10)||0)%360,i=parseInt(i,10)/100,o=parseInt(o,10)/100,i=n(0,t(i,1)),o=n(0,t(o,1)),0===i)return void(d=f=p=r(255*o));switch(a=e/60,s=o*i,l=s*(1-Math.abs(a%2-1)),c=o-s,Math.floor(a)){case 0:d=s,f=l,p=0;break;case 1:d=l,f=s,p=0;break;case 2:d=0,f=s,p=l;break;case 3:d=0,f=l,p=s;break;case 4:d=l,f=0,p=s;break;case 5:d=s,f=0,p=l;break;default:d=f=p=0}d=r(255*(d+c)),f=r(255*(f+c)),p=r(255*(p+c))}function a(){function e(e){return e=parseInt(e,10).toString(16),e.length>1?e:"0"+e}return"#"+e(d)+e(f)+e(p)}function s(){return{r:d,g:f,b:p}}function l(){return i(d,f,p)}function c(e){var t;return"object"==typeof e?"r"in e?(d=e.r,f=e.g,p=e.b):"v"in e&&o(e.h,e.s,e.v):(t=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)[^\)]*\)/gi.exec(e))?(d=parseInt(t[1],10),f=parseInt(t[2],10),p=parseInt(t[3],10)):(t=/#([0-F]{2})([0-F]{2})([0-F]{2})/gi.exec(e))?(d=parseInt(t[1],16),f=parseInt(t[2],16),p=parseInt(t[3],16)):(t=/#([0-F])([0-F])([0-F])/gi.exec(e))&&(d=parseInt(t[1]+t[1],16),f=parseInt(t[2]+t[2],16),p=parseInt(t[3]+t[3],16)),d=0>d?0:d>255?255:d,f=0>f?0:f>255?255:f,p=0>p?0:p>255?255:p,u}var u=this,d=0,f=0,p=0;e&&c(e),u.toRgb=s,u.toHsv=l,u.toHex=a,u.parse=c}var t=Math.min,n=Math.max,r=Math.round;return e}),r(Ht,[Nt,Q,Y,Lt],function(e,t,n,r){return e.extend({Defaults:{classes:"widget colorpicker"},init:function(e){this._super(e)},postRender:function(){function e(e,t){var r=n.getPos(e),i,o;return i=t.pageX-r.x,o=t.pageY-r.y,i=Math.max(0,Math.min(i/e.clientWidth,1)),o=Math.max(0,Math.min(o/e.clientHeight,1)),{x:i,y:o}}function i(e,t){var i=(360-e.h)/360;n.css(d,{top:100*i+"%"}),t||n.css(p,{left:e.s+"%",top:100-e.v+"%"}),f.style.background=new r({s:100,v:100,h:e.h}).toHex(),s.color().parse({s:e.s,v:e.v,h:e.h})}function o(t){var n;n=e(f,t),c.s=100*n.x,c.v=100*(1-n.y),i(c),s.fire("change")}function a(t){var n;n=e(u,t),c=l.toHsv(),c.h=360*(1-n.y),i(c,!0),s.fire("change")}var s=this,l=s.color(),c,u,d,f,p;u=s.getEl("h"),d=s.getEl("hp"),f=s.getEl("sv"),p=s.getEl("svp"),s._repaint=function(){c=l.toHsv(),i(c)},s._super(),s._svdraghelper=new t(s._id+"-sv",{start:o,drag:o}),s._hdraghelper=new t(s._id+"-h",{start:a,drag:a}),s._repaint()},rgb:function(){return this.color().toRgb()},value:function(e){var t=this;return arguments.length?(t.color().parse(e),void(t._rendered&&t._repaint())):t.color().toHex()},color:function(){return this._color||(this._color=new r),this._color},renderHtml:function(){function e(){var e,t,n="",i,a;for(i="filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=",a=o.split(","),e=0,t=a.length-1;t>e;e++)n+='<div class="'+r+'colorpicker-h-chunk" style="height:'+100/t+"%;"+i+a[e]+",endColorstr="+a[e+1]+");-ms-"+i+a[e]+",endColorstr="+a[e+1]+')"></div>';return n}var t=this,n=t._id,r=t.classPrefix,i,o="#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000",a="background: -ms-linear-gradient(top,"+o+");background: linear-gradient(to bottom,"+o+");";return i='<div id="'+n+'-h" class="'+r+'colorpicker-h" style="'+a+'">'+e()+'<div id="'+n+'-hp" class="'+r+'colorpicker-h-marker"></div></div>','<div id="'+n+'" class="'+t.classes()+'"><div id="'+n+'-sv" class="'+r+'colorpicker-sv"><div class="'+r+'colorpicker-overlay1"><div class="'+r+'colorpicker-overlay2"><div id="'+n+'-svp" class="'+r+'colorpicker-selector1"><div class="'+r+'colorpicker-selector2"></div></div></div></div></div>'+i+"</div>"}})}),r(Mt,[Nt],function(e){return e.extend({init:function(e){var t=this;e.delimiter||(e.delimiter="\xbb"),t._super(e),t.addClass("path"),t.canFocus=!0,t.on("click",function(e){var n,r=e.target;(n=r.getAttribute("data-index"))&&t.fire("select",{value:t.data()[n],index:n})})},focus:function(){var e=this;return e.getEl().firstChild.focus(),e},data:function(e){var t=this;return"undefined"!=typeof e?(t._data=e,t.update(),t):t._data},update:function(){this.innerHtml(this._getPathHtml())},postRender:function(){var e=this;e._super(),e.data(e.settings.data)},renderHtml:function(){var e=this;return'<div id="'+e._id+'" class="'+e.classes()+'">'+e._getPathHtml()+"</div>"},_getPathHtml:function(){var e=this,t=e._data||[],n,r,i="",o=e.classPrefix;for(n=0,r=t.length;r>n;n++)i+=(n>0?'<div class="'+o+'divider" aria-hidden="true"> '+e.settings.delimiter+" </div>":"")+'<div role="button" class="'+o+"path-item"+(n==r-1?" "+o+"last":"")+'" data-index="'+n+'" tabindex="-1" id="'+e._id+"-"+n+'" aria-level="'+n+'">'+t[n].name+"</div>";return i||(i='<div class="'+o+'path-item">\xa0</div>'),i}})}),r(Pt,[Mt,ht],function(e,t){return e.extend({postRender:function(){function e(e){if(1===e.nodeType){if("BR"==e.nodeName||e.getAttribute("data-mce-bogus"))return!0;if("bookmark"===e.getAttribute("data-mce-type"))return!0}return!1}var n=this,r=t.activeEditor;return n.on("select",function(e){r.focus(),r.selection.select(this.data()[e.index].element),r.nodeChanged()}),r.on("nodeChange",function(t){for(var i=[],o=t.parents,a=o.length;a--;)if(1==o[a].nodeType&&!e(o[a])){var s=r.fire("ResolveName",{name:o[a].nodeName.toLowerCase(),target:o[a]});if(s.isDefaultPrevented()||i.push({name:s.name,element:o[a]}),s.isPropagationStopped())break}n.data(i)}),n._super()}})}),r(Ot,[J],function(e){return e.extend({Defaults:{layout:"flex",align:"center",defaults:{flex:1}},renderHtml:function(){var e=this,t=e._layout,n=e.classPrefix;return e.addClass("formitem"),t.preRender(e),'<div id="'+e._id+'" class="'+e.classes()+'" hidefocus="1" tabindex="-1">'+(e.settings.title?'<div id="'+e._id+'-title" class="'+n+'title">'+e.settings.title+"</div>":"")+'<div id="'+e._id+'-body" class="'+e.classes("body")+'">'+(e.settings.html||"")+t.renderHtml(e)+"</div></div>"}})}),r(It,[J,Ot,u],function(e,t,n){return e.extend({Defaults:{containerCls:"form",layout:"flex",direction:"column",align:"stretch",flex:1,padding:20,labelGap:30,spacing:10,callbacks:{submit:function(){this.submit()}}},preRender:function(){var e=this,r=e.items();e.settings.formItemDefaults||(e.settings.formItemDefaults={layout:"flex",autoResize:"overflow",defaults:{flex:1}}),r.each(function(r){var i,o=r.settings.label;o&&(i=new t(n.extend({items:{type:"label",id:r._id+"-l",text:o,flex:0,forId:r._id,disabled:r.disabled()}},e.settings.formItemDefaults)),i.type="formitem",r.aria("labelledby",r._id+"-l"),"undefined"==typeof r.settings.flex&&(r.settings.flex=1),e.replace(r,i),i.add(r))})},recalcLabels:function(){var e=this,t=0,n=[],r,i,o;if(e.settings.labelGapCalc!==!1)for(o="children"==e.settings.labelGapCalc?e.find("formitem"):e.items(),o.filter("formitem").each(function(e){var r=e.items()[0],i=r.getEl().clientWidth;t=i>t?i:t,n.push(r)}),i=e.settings.labelGap||0,r=n.length;r--;)n[r].settings.minWidth=t+i},visible:function(e){var t=this._super(e);return e===!0&&this._rendered&&this.recalcLabels(),t},submit:function(){return this.fire("submit",{data:this.toJSON()})},postRender:function(){var e=this;e._super(),e.recalcLabels(),e.fromJSON(e.settings.data)}})}),r(Ft,[It],function(e){return e.extend({Defaults:{containerCls:"fieldset",layout:"flex",direction:"column",align:"stretch",flex:1,padding:"25 15 5 15",labelGap:30,spacing:10,border:1},renderHtml:function(){var e=this,t=e._layout,n=e.classPrefix;return e.preRender(),t.preRender(e),'<fieldset id="'+e._id+'" class="'+e.classes()+'" hidefocus="1" tabindex="-1">'+(e.settings.title?'<legend id="'+e._id+'-title" class="'+n+'fieldset-title">'+e.settings.title+"</legend>":"")+'<div id="'+e._id+'-body" class="'+e.classes("body")+'">'+(e.settings.html||"")+t.renderHtml(e)+"</div></fieldset>"}})}),r(zt,[Rt,u],function(e,t){return e.extend({init:function(e){var n=this,r=tinymce.activeEditor,i=r.settings,o,a,s;e.spellcheck=!1,s=i.file_picker_types||i.file_browser_callback_types,s&&(s=t.makeMap(s,/[, ]/)),(!s||s[e.filetype])&&(a=i.file_picker_callback,!a||s&&!s[e.filetype]?(a=i.file_browser_callback,!a||s&&!s[e.filetype]||(o=function(){a(n.getEl("inp").id,n.value(),e.filetype,window)})):o=function(){var i=n.fire("beforecall").meta;i=t.extend({filetype:e.filetype},i),a.call(r,function(e,t){n.value(e).fire("change",{meta:t})},n.value(),i)}),o&&(e.icon="browse",e.onaction=o),n._super(e)}})}),r(Wt,[_t],function(e){return e.extend({recalc:function(e){var t=e.layoutRect(),n=e.paddingBox();e.items().filter(":visible").each(function(e){e.layoutRect({x:n.left,y:n.top,w:t.innerW-n.right-n.left,h:t.innerH-n.top-n.bottom}),e.recalc&&e.recalc()})}})}),r(Vt,[_t],function(e){return e.extend({recalc:function(e){var t,n,r,i,o,a,s,l,c,u,d,f,p,h,m,g,v=[],y,b,C,x,w,_,E,N,k,S,T,R,A,B,D,L,H,M,P,O,I,F,z=Math.max,W=Math.min;for(r=e.items().filter(":visible"),i=e.layoutRect(),o=e._paddingBox,a=e.settings,f=e.isRtl()?a.direction||"row-reversed":a.direction,s=a.align,l=e.isRtl()?a.pack||"end":a.pack,c=a.spacing||0,("row-reversed"==f||"column-reverse"==f)&&(r=r.set(r.toArray().reverse()),f=f.split("-")[0]),"column"==f?(k="y",E="h",N="minH",S="maxH",R="innerH",T="top",A="deltaH",B="contentH",P="left",H="w",D="x",L="innerW",M="minW",O="right",I="deltaW",F="contentW"):(k="x",E="w",N="minW",S="maxW",R="innerW",T="left",A="deltaW",B="contentW",P="top",H="h",D="y",L="innerH",M="minH",O="bottom",I="deltaH",F="contentH"),d=i[R]-o[T]-o[T],_=u=0,t=0,n=r.length;n>t;t++)p=r[t],h=p.layoutRect(),m=p.settings,g=m.flex,d-=n-1>t?c:0,g>0&&(u+=g,h[S]&&v.push(p),h.flex=g),d-=h[N],y=o[P]+h[M]+o[O],y>_&&(_=y);if(x={},x[N]=0>d?i[N]-d+i[A]:i[R]-d+i[A],x[M]=_+i[I],x[B]=i[R]-d,x[F]=_,x.minW=W(x.minW,i.maxW),x.minH=W(x.minH,i.maxH),x.minW=z(x.minW,i.startMinWidth),x.minH=z(x.minH,i.startMinHeight),!i.autoResize||x.minW==i.minW&&x.minH==i.minH){for(C=d/u,t=0,n=v.length;n>t;t++)p=v[t],h=p.layoutRect(),b=h[S],y=h[N]+h.flex*C,y>b?(d-=h[S]-h[N],u-=h.flex,h.flex=0,h.maxFlexSize=b):h.maxFlexSize=0;for(C=d/u,w=o[T],x={},0===u&&("end"==l?w=d+o[T]:"center"==l?(w=Math.round(i[R]/2-(i[R]-d)/2)+o[T],0>w&&(w=o[T])):"justify"==l&&(w=o[T],c=Math.floor(d/(r.length-1)))),x[D]=o[P],t=0,n=r.length;n>t;t++)p=r[t],h=p.layoutRect(),y=h.maxFlexSize||h[N],"center"===s?x[D]=Math.round(i[L]/2-h[H]/2):"stretch"===s?(x[H]=z(h[M]||0,i[L]-o[P]-o[O]),x[D]=o[P]):"end"===s&&(x[D]=i[L]-h[H]-o.top),h.flex>0&&(y+=h.flex*C),x[E]=y,x[k]=w,p.layoutRect(x),p.recalc&&p.recalc(),w+=y+c}else if(x.w=x.minW,x.h=x.minH,e.layoutRect(x),this.recalc(e),null===e._lastRect){var V=e.parent();V&&(V._lastRect=null,V.recalc())}}})}),r(Ut,[wt],function(e){return e.extend({Defaults:{containerClass:"flow-layout",controlClass:"flow-layout-item",endClass:"break"},recalc:function(e){e.items().filter(":visible").each(function(e){e.recalc&&e.recalc()})}})}),r($t,[K,Nt,rt,u,ht,d],function(e,t,n,r,i,o){function a(e){function t(t,n){return function(){var r=this;e.on("nodeChange",function(i){var o=e.formatter,a=null;s(i.parents,function(e){return s(t,function(t){return n?o.matchNode(e,n,{value:t.value})&&(a=t.value):o.matchNode(e,t.value)&&(a=t.value),a?!1:void 0}),a?!1:void 0}),r.value(a)})}}function r(e){e=e.replace(/;$/,"").split(";");for(var t=e.length;t--;)e[t]=e[t].split("=");return e}function i(){function t(e){var n=[];if(e)return s(e,function(e){var o={text:e.title,icon:e.icon};if(e.items)o.menu=t(e.items);else{var a=e.format||"custom"+r++;e.format||(e.name=a,i.push(e)),o.format=a,o.cmd=e.cmd}n.push(o)}),n}function n(){var n;return n=t(e.settings.style_formats_merge?e.settings.style_formats?o.concat(e.settings.style_formats):o:e.settings.style_formats||o)}var r=0,i=[],o=[{title:"Headings",items:[{title:"Heading 1",format:"h1"},{title:"Heading 2",format:"h2"},{title:"Heading 3",format:"h3"},{title:"Heading 4",format:"h4"},{title:"Heading 5",format:"h5"},{title:"Heading 6",format:"h6"}]},{title:"Inline",items:[{title:"Bold",icon:"bold",format:"bold"},{title:"Italic",icon:"italic",format:"italic"},{title:"Underline",icon:"underline",format:"underline"},{title:"Strikethrough",icon:"strikethrough",format:"strikethrough"},{title:"Superscript",icon:"superscript",format:"superscript"},{title:"Subscript",icon:"subscript",format:"subscript"},{title:"Code",icon:"code",format:"code"}]},{title:"Blocks",items:[{title:"Paragraph",format:"p"},{title:"Blockquote",format:"blockquote"},{title:"Div",format:"div"},{title:"Pre",format:"pre"}]},{title:"Alignment",items:[{title:"Left",icon:"alignleft",format:"alignleft"},{title:"Center",icon:"aligncenter",format:"aligncenter"},{title:"Right",icon:"alignright",format:"alignright"},{title:"Justify",icon:"alignjustify",format:"alignjustify"}]}];return e.on("init",function(){s(i,function(t){e.formatter.register(t.name,t)})}),{type:"menu",items:n(),onPostRender:function(t){e.fire("renderFormatsMenu",{control:t.control})},itemDefaults:{preview:!0,textStyle:function(){return this.settings.format?e.formatter.getCssText(this.settings.format):void 0},onPostRender:function(){var t=this;t.parent().on("show",function(){var n,r;n=t.settings.format,n&&(t.disabled(!e.formatter.canApply(n)),t.active(e.formatter.match(n))),r=t.settings.cmd,r&&t.active(e.queryCommandState(r))})},onclick:function(){this.settings.format&&l(this.settings.format),this.settings.cmd&&e.execCommand(this.settings.cmd)}}}}function o(t){return function(){function n(){return e.undoManager?e.undoManager[t]():!1}var r=this;t="redo"==t?"hasRedo":"hasUndo",r.disabled(!n()),e.on("Undo Redo AddUndo TypingUndo ClearUndos",function(){r.disabled(!n())})}}function a(){var t=this;e.on("VisualAid",function(e){t.active(e.hasVisual)}),t.active(e.hasVisual)}function l(t){t.control&&(t=t.control.value()),t&&e.execCommand("mceToggleFormat",!1,t)}var c;c=i(),s({bold:"Bold",italic:"Italic",underline:"Underline",strikethrough:"Strikethrough",subscript:"Subscript",superscript:"Superscript"},function(t,n){e.addButton(n,{tooltip:t,onPostRender:function(){var t=this;e.formatter?e.formatter.formatChanged(n,function(e){t.active(e)}):e.on("init",function(){e.formatter.formatChanged(n,function(e){t.active(e)})})},onclick:function(){l(n)}})}),s({outdent:["Decrease indent","Outdent"],indent:["Increase indent","Indent"],cut:["Cut","Cut"],copy:["Copy","Copy"],paste:["Paste","Paste"],help:["Help","mceHelp"],selectall:["Select all","SelectAll"],removeformat:["Clear formatting","RemoveFormat"],visualaid:["Visual aids","mceToggleVisualAid"],newdocument:["New document","mceNewDocument"]},function(t,n){e.addButton(n,{tooltip:t[0],cmd:t[1]})}),s({blockquote:["Blockquote","mceBlockQuote"],numlist:["Numbered list","InsertOrderedList"],bullist:["Bullet list","InsertUnorderedList"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"],alignleft:["Align left","JustifyLeft"],aligncenter:["Align center","JustifyCenter"],alignright:["Align right","JustifyRight"],alignjustify:["Justify","JustifyFull"]},function(t,n){e.addButton(n,{tooltip:t[0],cmd:t[1],onPostRender:function(){var t=this;e.formatter?e.formatter.formatChanged(n,function(e){t.active(e)}):e.on("init",function(){e.formatter.formatChanged(n,function(e){t.active(e)})})}})}),e.addButton("undo",{tooltip:"Undo",onPostRender:o("undo"),cmd:"undo"}),e.addButton("redo",{tooltip:"Redo",onPostRender:o("redo"),cmd:"redo"}),e.addMenuItem("newdocument",{text:"New document",shortcut:"Ctrl+N",icon:"newdocument",cmd:"mceNewDocument"}),e.addMenuItem("undo",{text:"Undo",icon:"undo",shortcut:"Ctrl+Z",onPostRender:o("undo"),cmd:"undo"}),e.addMenuItem("redo",{text:"Redo",icon:"redo",shortcut:"Ctrl+Y",onPostRender:o("redo"),cmd:"redo"}),e.addMenuItem("visualaid",{text:"Visual aids",selectable:!0,onPostRender:a,cmd:"mceToggleVisualAid"}),s({cut:["Cut","Cut","Ctrl+X"],copy:["Copy","Copy","Ctrl+C"],paste:["Paste","Paste","Ctrl+V"],selectall:["Select all","SelectAll","Ctrl+A"],bold:["Bold","Bold","Ctrl+B"],italic:["Italic","Italic","Ctrl+I"],underline:["Underline","Underline"],strikethrough:["Strikethrough","Strikethrough"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"],removeformat:["Clear formatting","RemoveFormat"]},function(t,n){e.addMenuItem(n,{text:t[0],icon:n,shortcut:t[2],cmd:t[1]})}),e.on("mousedown",function(){n.hideAll()}),e.addButton("styleselect",{type:"menubutton",text:"Formats",menu:c}),e.addButton("formatselect",function(){var n=[],i=r(e.settings.block_formats||"Paragraph=p;Address=address;Pre=pre;Heading 1=h1;Heading 2=h2;Heading 3=h3;Heading 4=h4;Heading 5=h5;Heading 6=h6");return s(i,function(t){n.push({text:t[0],value:t[1],textStyle:function(){return e.formatter.getCssText(t[1])}})}),{type:"listbox",text:i[0][0],values:n,fixedWidth:!0,onselect:l,onPostRender:t(n)}}),e.addButton("fontselect",function(){var n="Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",i=[],o=r(e.settings.font_formats||n);return s(o,function(e){i.push({text:{raw:e[0]},value:e[1],textStyle:-1==e[1].indexOf("dings")?"font-family:"+e[1]:""})}),{type:"listbox",text:"Font Family",tooltip:"Font Family",values:i,fixedWidth:!0,onPostRender:t(i,"fontname"),onselect:function(t){t.control.settings.value&&e.execCommand("FontName",!1,t.control.settings.value)}}}),e.addButton("fontsizeselect",function(){var n=[],r="8pt 10pt 12pt 14pt 18pt 24pt 36pt",i=e.settings.fontsize_formats||r;return s(i.split(" "),function(e){var t=e,r=e,i=e.split("=");i.length>1&&(t=i[0],r=i[1]),n.push({text:t,value:r})}),{type:"listbox",text:"Font Sizes",tooltip:"Font Sizes",values:n,fixedWidth:!0,onPostRender:t(n,"fontsize"),onclick:function(t){t.control.settings.value&&e.execCommand("FontSize",!1,t.control.settings.value)}}}),e.addMenuItem("formats",{text:"Formats",menu:c})}var s=r.each;i.on("AddEditor",function(t){t.editor.rtl&&(e.rtl=!0),a(t.editor)}),e.translate=function(e){return i.translate(e)},t.tooltips=!o.iOS}),r(qt,[_t],function(e){return e.extend({recalc:function(e){var t=e.settings,n,r,i,o,a,s,l,c,u,d,f,p,h,m,g,v,y,b,C,x,w,_,E=[],N=[],k,S,T,R,A,B;t=e.settings,i=e.items().filter(":visible"),o=e.layoutRect(),r=t.columns||Math.ceil(Math.sqrt(i.length)),n=Math.ceil(i.length/r),y=t.spacingH||t.spacing||0,b=t.spacingV||t.spacing||0,C=t.alignH||t.align,x=t.alignV||t.align,g=e._paddingBox,A="reverseRows"in t?t.reverseRows:e.isRtl(),C&&"string"==typeof C&&(C=[C]),x&&"string"==typeof x&&(x=[x]);for(d=0;r>d;d++)E.push(0);for(f=0;n>f;f++)N.push(0);for(f=0;n>f;f++)for(d=0;r>d&&(u=i[f*r+d],u);d++)c=u.layoutRect(),k=c.minW,S=c.minH,E[d]=k>E[d]?k:E[d],N[f]=S>N[f]?S:N[f];for(T=o.innerW-g.left-g.right,w=0,d=0;r>d;d++)w+=E[d]+(d>0?y:0),T-=(d>0?y:0)+E[d];for(R=o.innerH-g.top-g.bottom,_=0,f=0;n>f;f++)_+=N[f]+(f>0?b:0),R-=(f>0?b:0)+N[f];if(w+=g.left+g.right,_+=g.top+g.bottom,l={},l.minW=w+(o.w-o.innerW),l.minH=_+(o.h-o.innerH),l.contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH,l.minW=Math.min(l.minW,o.maxW),l.minH=Math.min(l.minH,o.maxH),l.minW=Math.max(l.minW,o.startMinWidth),l.minH=Math.max(l.minH,o.startMinHeight),!o.autoResize||l.minW==o.minW&&l.minH==o.minH){o.autoResize&&(l=e.layoutRect(l),l.contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH);var D;D="start"==t.packV?0:R>0?Math.floor(R/n):0;var L=0,H=t.flexWidths;if(H)for(d=0;d<H.length;d++)L+=H[d];else L=r;var M=T/L;for(d=0;r>d;d++)E[d]+=H?H[d]*M:M;for(h=g.top,f=0;n>f;f++){for(p=g.left,s=N[f]+D,d=0;r>d&&(B=A?f*r+r-1-d:f*r+d,u=i[B],u);d++)m=u.settings,c=u.layoutRect(),a=Math.max(E[d],c.startMinWidth),c.x=p,c.y=h,v=m.alignH||(C?C[d]||C[0]:null),"center"==v?c.x=p+a/2-c.w/2:"right"==v?c.x=p+a-c.w:"stretch"==v&&(c.w=a),v=m.alignV||(x?x[d]||x[0]:null),"center"==v?c.y=h+s/2-c.h/2:"bottom"==v?c.y=h+s-c.h:"stretch"==v&&(c.h=s),u.layoutRect(c),p+=a+y,u.recalc&&u.recalc();h+=s+b}}else if(l.w=l.minW,l.h=l.minH,e.layoutRect(l),this.recalc(e),null===e._lastRect){var P=e.parent();P&&(P._lastRect=null,P.recalc())}}})}),r(jt,[Nt],function(e){return e.extend({renderHtml:function(){var e=this;return e.addClass("iframe"),e.canFocus=!1,'<iframe id="'+e._id+'" class="'+e.classes()+'" tabindex="-1" src="'+(e.settings.url||"javascript:''")+'" frameborder="0"></iframe>'},src:function(e){this.getEl().src=e},html:function(e,t){var n=this,r=this.getEl().contentWindow.document.body;return r?(r.innerHTML=e,t&&t()):setTimeout(function(){n.html(e)},0),this}})}),r(Yt,[Nt,Y],function(e,t){return e.extend({init:function(e){var t=this;t._super(e),t.addClass("widget"),t.addClass("label"),t.canFocus=!1,e.multiline&&t.addClass("autoscroll"),e.strong&&t.addClass("strong")},initLayoutRect:function(){var e=this,n=e._super();if(e.settings.multiline){var r=t.getSize(e.getEl());r.width>n.maxW&&(n.minW=n.maxW,e.addClass("multiline")),e.getEl().style.width=n.minW+"px",n.startMinH=n.h=n.minH=Math.min(n.maxH,t.getSize(e.getEl()).height)}return n},repaint:function(){var e=this;return e.settings.multiline||(e.getEl().style.lineHeight=e.layoutRect().h+"px"),e._super()},text:function(e){var t=this;return t._rendered&&e&&this.innerHtml(t.encode(e)),t._super(e)},renderHtml:function(){var e=this,t=e.settings.forId;return'<label id="'+e._id+'" class="'+e.classes()+'"'+(t?' for="'+t+'"':"")+">"+e.encode(e._text)+"</label>"}})}),r(Kt,[J],function(e){return e.extend({Defaults:{role:"toolbar",layout:"flow"},init:function(e){var t=this;t._super(e),t.addClass("toolbar")},postRender:function(){var e=this;return e.items().addClass("toolbar-item"),e._super()}})}),r(Gt,[Kt],function(e){return e.extend({Defaults:{role:"menubar",containerCls:"menubar",ariaRoot:!0,defaults:{type:"menubutton"}}})}),r(Xt,[kt,G,Gt],function(e,t,n){function r(e,t){for(;e;){if(t===e)return!0;e=e.parentNode}return!1}var i=e.extend({init:function(e){var t=this;t._renderOpen=!0,t._super(e),t.addClass("menubtn"),e.fixedWidth&&t.addClass("fixed-width"),t.aria("haspopup",!0),t.hasPopup=!0},showMenu:function(){var e=this,n=e.settings,r;return e.menu&&e.menu.visible()?e.hideMenu():(e.menu||(r=n.menu||[],r.length?r={type:"menu",items:r}:r.type=r.type||"menu",e.menu=t.create(r).parent(e).renderTo(),e.fire("createmenu"),e.menu.reflow(),e.menu.on("cancel",function(t){t.control.parent()===e.menu&&(t.stopPropagation(),e.focus(),e.hideMenu())}),e.menu.on("select",function(){e.focus()}),e.menu.on("show hide",function(t){t.control==e.menu&&e.activeMenu("show"==t.type),e.aria("expanded","show"==t.type)}).fire("show")),e.menu.show(),e.menu.layoutRect({w:e.layoutRect().w}),void e.menu.moveRel(e.getEl(),e.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"]))},hideMenu:function(){var e=this;e.menu&&(e.menu.items().each(function(e){e.hideMenu&&e.hideMenu()}),e.menu.hide())},activeMenu:function(e){this.toggleClass("active",e)},renderHtml:function(){var e=this,t=e._id,r=e.classPrefix,i=e.settings.icon?r+"ico "+r+"i-"+e.settings.icon:"";return e.aria("role",e.parent()instanceof n?"menuitem":"button"),'<div id="'+t+'" class="'+e.classes()+'" tabindex="-1" aria-labelledby="'+t+'"><button id="'+t+'-open" role="presentation" type="button" tabindex="-1">'+(i?'<i class="'+i+'"></i>':"")+"<span>"+(e._text?(i?"\xa0":"")+e.encode(e._text):"")+'</span> <i class="'+r+'caret"></i></button></div>'},postRender:function(){var e=this;return e.on("click",function(t){t.control===e&&r(t.target,e.getEl())&&(e.showMenu(),t.aria&&e.menu.items()[0].focus())}),e.on("mouseenter",function(t){var n=t.control,r=e.parent(),o;n&&r&&n instanceof i&&n.parent()==r&&(r.items().filter("MenuButton").each(function(e){e.hideMenu&&e!=n&&(e.menu&&e.menu.visible()&&(o=!0),e.hideMenu())}),o&&(n.focus(),n.showMenu()))}),e._super()},text:function(e){var t=this,n,r;if(t._rendered)for(r=t.getEl("open").getElementsByTagName("span"),n=0;n<r.length;n++)r[n].innerHTML=(t.settings.icon&&e?"\xa0":"")+t.encode(e);return this._super(e)},remove:function(){this._super(),this.menu&&this.menu.remove()}});return i}),r(Jt,[Xt],function(e){return e.extend({init:function(e){function t(r){for(var a=0;a<r.length;a++){if(i=r[a].selected||e.value===r[a].value){o=o||r[a].text,n._value=r[a].value;break}r[a].menu&&t(r[a].menu)}}var n=this,r,i,o,a;n._values=r=e.values,r&&("undefined"!=typeof e.value&&t(r),!i&&r.length>0&&(o=r[0].text,n._value=r[0].value),e.menu=r),e.text=e.text||o||r[0].text,n._super(e),n.addClass("listbox"),n.on("select",function(t){var r=t.control;a&&(t.lastControl=a),e.multiple?r.active(!r.active()):n.value(t.control.settings.value),a=r})},value:function(e){function t(e,n){e.items().each(function(e){i=e.value()===n,i&&(o=o||e.text()),e.active(i),e.menu&&t(e.menu,n)})}function n(t){for(var r=0;r<t.length;r++)i=t[r].value==e,i&&(o=o||t[r].text),t[r].active=i,t[r].menu&&n(t[r].menu)}var r=this,i,o,a;return"undefined"!=typeof e&&(r.menu?t(r.menu,e):(a=r.settings.menu,n(a)),r.text(o||this.settings.text)),r._super(e)}})}),r(Qt,[Nt,G,d],function(e,t,n){return e.extend({Defaults:{border:0,role:"menuitem"},init:function(e){var t=this;
+t.hasPopup=!0,t._super(e),e=t.settings,t.addClass("menu-item"),e.menu&&t.addClass("menu-item-expand"),e.preview&&t.addClass("menu-item-preview"),("-"===t._text||"|"===t._text)&&(t.addClass("menu-item-sep"),t.aria("role","separator"),t._text="-"),e.selectable&&(t.aria("role","menuitemcheckbox"),t.addClass("menu-item-checkbox"),e.icon="selected"),e.preview||e.selectable||t.addClass("menu-item-normal"),t.on("mousedown",function(e){e.preventDefault()}),e.menu&&!e.ariaHideMenu&&t.aria("haspopup",!0)},hasMenus:function(){return!!this.settings.menu},showMenu:function(){var e=this,n=e.settings,r,i=e.parent();if(i.items().each(function(t){t!==e&&t.hideMenu()}),n.menu){r=e.menu,r?r.show():(r=n.menu,r.length?r={type:"menu",items:r}:r.type=r.type||"menu",i.settings.itemDefaults&&(r.itemDefaults=i.settings.itemDefaults),r=e.menu=t.create(r).parent(e).renderTo(),r.reflow(),r.on("cancel",function(t){t.stopPropagation(),e.focus(),r.hide()}),r.on("show hide",function(e){e.control.items().each(function(e){e.active(e.settings.selected)})}).fire("show"),r.on("hide",function(t){t.control===r&&e.removeClass("selected")}),r.submenu=!0),r._parentMenu=i,r.addClass("menu-sub");var o=r.testMoveRel(e.getEl(),e.isRtl()?["tl-tr","bl-br","tr-tl","br-bl"]:["tr-tl","br-bl","tl-tr","bl-br"]);r.moveRel(e.getEl(),o),r.rel=o,o="menu-sub-"+o,r.removeClass(r._lastRel),r.addClass(o),r._lastRel=o,e.addClass("selected"),e.aria("expanded",!0)}},hideMenu:function(){var e=this;return e.menu&&(e.menu.items().each(function(e){e.hideMenu&&e.hideMenu()}),e.menu.hide(),e.aria("expanded",!1)),e},renderHtml:function(){var e=this,t=e._id,r=e.settings,i=e.classPrefix,o=e.encode(e._text),a=e.settings.icon,s="",l=r.shortcut;return a&&e.parent().addClass("menu-has-icons"),r.image&&(a="none",s=" style=\"background-image: url('"+r.image+"')\""),l&&n.mac&&(l=l.replace(/ctrl\+alt\+/i,"&#x2325;&#x2318;"),l=l.replace(/ctrl\+/i,"&#x2318;"),l=l.replace(/alt\+/i,"&#x2325;"),l=l.replace(/shift\+/i,"&#x21E7;")),a=i+"ico "+i+"i-"+(e.settings.icon||"none"),'<div id="'+t+'" class="'+e.classes()+'" tabindex="-1">'+("-"!==o?'<i class="'+a+'"'+s+"></i>\xa0":"")+("-"!==o?'<span id="'+t+'-text" class="'+i+'text">'+o+"</span>":"")+(l?'<div id="'+t+'-shortcut" class="'+i+'menu-shortcut">'+l+"</div>":"")+(r.menu?'<div class="'+i+'caret"></div>':"")+"</div>"},postRender:function(){var e=this,t=e.settings,n=t.textStyle;if("function"==typeof n&&(n=n.call(this)),n){var r=e.getEl("text");r&&r.setAttribute("style",n)}return e.on("mouseenter click",function(n){n.control===e&&(t.menu||"click"!==n.type?(e.showMenu(),n.aria&&e.menu.focus(!0)):(e.fire("select"),e.parent().hideAll()))}),e._super(),e},active:function(e){return"undefined"!=typeof e&&this.aria("checked",e),this._super(e)},remove:function(){this._super(),this.menu&&this.menu.remove()}})}),r(Zt,[rt,Qt,u],function(e,t,n){var r=e.extend({Defaults:{defaultType:"menuitem",border:1,layout:"stack",role:"application",bodyRole:"menu",ariaRoot:!0},init:function(e){var t=this;if(e.autohide=!0,e.constrainToViewport=!0,e.itemDefaults)for(var r=e.items,i=r.length;i--;)r[i]=n.extend({},e.itemDefaults,r[i]);t._super(e),t.addClass("menu")},repaint:function(){return this.toggleClass("menu-align",!0),this._super(),this.getEl().style.height="",this.getEl("body").style.height="",this},cancel:function(){var e=this;e.hideAll(),e.fire("select")},hideAll:function(){var e=this;return this.find("menuitem").exec("hideMenu"),e._super()},preRender:function(){var e=this;return e.items().each(function(t){var n=t.settings;return n.icon||n.selectable?(e._hasIcons=!0,!1):void 0}),e._super()}});return r}),r(en,[Tt],function(e){return e.extend({Defaults:{classes:"radio",role:"radio"}})}),r(tn,[Nt,Q],function(e,t){return e.extend({renderHtml:function(){var e=this,t=e.classPrefix;return e.addClass("resizehandle"),"both"==e.settings.direction&&e.addClass("resizehandle-both"),e.canFocus=!1,'<div id="'+e._id+'" class="'+e.classes()+'"><i class="'+t+"ico "+t+'i-resize"></i></div>'},postRender:function(){var e=this;e._super(),e.resizeDragHelper=new t(this._id,{start:function(){e.fire("ResizeStart")},drag:function(t){"both"!=e.settings.direction&&(t.deltaX=0),e.fire("Resize",t)},stop:function(){e.fire("ResizeEnd")}})},remove:function(){return this.resizeDragHelper&&this.resizeDragHelper.destroy(),this._super()}})}),r(nn,[Nt],function(e){return e.extend({renderHtml:function(){var e=this;return e.addClass("spacer"),e.canFocus=!1,'<div id="'+e._id+'" class="'+e.classes()+'"></div>'}})}),r(rn,[Xt,Y],function(e,t){return e.extend({Defaults:{classes:"widget btn splitbtn",role:"button"},repaint:function(){var e=this,n=e.getEl(),r=e.layoutRect(),i,o;return e._super(),i=n.firstChild,o=n.lastChild,t.css(i,{width:r.w-t.getSize(o).width,height:r.h-2}),t.css(o,{height:r.h-2}),e},activeMenu:function(e){var n=this;t.toggleClass(n.getEl().lastChild,n.classPrefix+"active",e)},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix,r=e.settings.icon?n+"ico "+n+"i-"+e.settings.icon:"";return'<div id="'+t+'" class="'+e.classes()+'" role="button" tabindex="-1"><button type="button" hidefocus="1" tabindex="-1">'+(r?'<i class="'+r+'"></i>':"")+(e._text?(r?" ":"")+e._text:"")+'</button><button type="button" class="'+n+'open" hidefocus="1" tabindex="-1">'+(e._menuBtnText?(r?"\xa0":"")+e._menuBtnText:"")+' <i class="'+n+'caret"></i></button></div>'},postRender:function(){var e=this,t=e.settings.onclick;return e.on("click",function(e){var n=e.target;if(e.control==this)for(;n;){if(e.aria&&"down"!=e.aria.key||"BUTTON"==n.nodeName&&-1==n.className.indexOf("open"))return e.stopImmediatePropagation(),void t.call(this,e);n=n.parentNode}}),delete e.settings.onclick,e._super()}})}),r(on,[Ut],function(e){return e.extend({Defaults:{containerClass:"stack-layout",controlClass:"stack-layout-item",endClass:"break"}})}),r(an,[et,Y],function(e,t){return e.extend({Defaults:{layout:"absolute",defaults:{type:"panel"}},activateTab:function(e){var n;this.activeTabId&&(n=this.getEl(this.activeTabId),t.removeClass(n,this.classPrefix+"active"),n.setAttribute("aria-selected","false")),this.activeTabId="t"+e,n=this.getEl("t"+e),n.setAttribute("aria-selected","true"),t.addClass(n,this.classPrefix+"active"),this.items()[e].show().fire("showtab"),this.reflow(),this.items().each(function(t,n){e!=n&&t.hide()})},renderHtml:function(){var e=this,t=e._layout,n="",r=e.classPrefix;return e.preRender(),t.preRender(e),e.items().each(function(t,i){var o=e._id+"-t"+i;t.aria("role","tabpanel"),t.aria("labelledby",o),n+='<div id="'+o+'" class="'+r+'tab" unselectable="on" role="tab" aria-controls="'+t._id+'" aria-selected="false" tabIndex="-1">'+e.encode(t.settings.title)+"</div>"}),'<div id="'+e._id+'" class="'+e.classes()+'" hidefocus="1" tabindex="-1"><div id="'+e._id+'-head" class="'+r+'tabs" role="tablist">'+n+'</div><div id="'+e._id+'-body" class="'+e.classes("body")+'">'+t.renderHtml(e)+"</div></div>"},postRender:function(){var e=this;e._super(),e.settings.activeTab=e.settings.activeTab||0,e.activateTab(e.settings.activeTab),this.on("click",function(t){var n=t.target.parentNode;if(t.target.parentNode.id==e._id+"-head")for(var r=n.childNodes.length;r--;)n.childNodes[r]==t.target&&e.activateTab(r)})},initLayoutRect:function(){var e=this,n,r,i;r=t.getSize(e.getEl("head")).width,r=0>r?0:r,i=0,e.items().each(function(e){r=Math.max(r,e.layoutRect().minW),i=Math.max(i,e.layoutRect().minH)}),e.items().each(function(e){e.settings.x=0,e.settings.y=0,e.settings.w=r,e.settings.h=i,e.layoutRect({x:0,y:0,w:r,h:i})});var o=t.getSize(e.getEl("head")).height;return e.settings.minWidth=r,e.settings.minHeight=i+o,n=e._super(),n.deltaH+=o,n.innerH=n.h-n.deltaH,n}})}),r(sn,[Nt,Y],function(e,t){return e.extend({init:function(e){var t=this;t._super(e),t._value=e.value||"",t.addClass("textbox"),e.multiline?t.addClass("multiline"):t.on("keydown",function(e){13==e.keyCode&&t.parents().reverse().each(function(t){return e.preventDefault(),t.hasEventListeners("submit")&&t.toJSON?(t.fire("submit",{data:t.toJSON()}),!1):void 0})})},disabled:function(e){var t=this;return t._rendered&&"undefined"!=typeof e&&(t.getEl().disabled=e),t._super(e)},value:function(e){var t=this;return"undefined"!=typeof e?(t._value=e,t._rendered&&(t.getEl().value=e),t):t._rendered?t.getEl().value:t._value},repaint:function(){var e=this,t,n,r,i=0,o=0,a;t=e.getEl().style,n=e._layoutRect,a=e._lastRepaintRect||{};var s=document;return!e.settings.multiline&&s.all&&(!s.documentMode||s.documentMode<=8)&&(t.lineHeight=n.h-o+"px"),r=e._borderBox,i=r.left+r.right+8,o=r.top+r.bottom+(e.settings.multiline?8:0),n.x!==a.x&&(t.left=n.x+"px",a.x=n.x),n.y!==a.y&&(t.top=n.y+"px",a.y=n.y),n.w!==a.w&&(t.width=n.w-i+"px",a.w=n.w),n.h!==a.h&&(t.height=n.h-o+"px",a.h=n.h),e._lastRepaintRect=a,e.fire("repaint",{},!1),e},renderHtml:function(){var e=this,t=e._id,n=e.settings,r=e.encode(e._value,!1),i="";return"spellcheck"in n&&(i+=' spellcheck="'+n.spellcheck+'"'),n.maxLength&&(i+=' maxlength="'+n.maxLength+'"'),n.size&&(i+=' size="'+n.size+'"'),n.subtype&&(i+=' type="'+n.subtype+'"'),e.disabled()&&(i+=' disabled="disabled"'),n.multiline?'<textarea id="'+t+'" class="'+e.classes()+'" '+(n.rows?' rows="'+n.rows+'"':"")+' hidefocus="1"'+i+">"+r+"</textarea>":'<input id="'+t+'" class="'+e.classes()+'" value="'+r+'" hidefocus="1"'+i+" />"},postRender:function(){var e=this;return t.on(e.getEl(),"change",function(t){e.fire("change",t)}),e._super()},remove:function(){t.off(this.getEl()),this._super()}})}),r(ln,[Y,K],function(e,t){return function(n,r){var i=this,o,a=t.classPrefix;i.show=function(t){return i.hide(),o=!0,window.setTimeout(function(){o&&n.appendChild(e.createFragment('<div class="'+a+"throbber"+(r?" "+a+"throbber-inline":"")+'"></div>'))},t||0),i},i.hide=function(){var e=n.lastChild;return e&&-1!=e.className.indexOf("throbber")&&e.parentNode.removeChild(e),o=!1,i}}}),a([l,c,u,d,f,p,h,m,g,y,b,C,_,E,N,k,S,T,R,A,B,D,L,H,M,O,I,F,z,W,V,U,$,q,j,Y,K,G,X,J,Q,Z,et,tt,nt,rt,it,ot,at,st,lt,ct,ut,dt,ft,pt,ht,mt,gt,vt,yt,bt,Ct,xt,wt,_t,Et,Nt,kt,St,Tt,Rt,At,Bt,Dt,Lt,Ht,Mt,Pt,Ot,It,Ft,zt,Wt,Vt,Ut,$t,qt,jt,Yt,Kt,Gt,Xt,Jt,Qt,Zt,en,tn,nn,rn,on,an,sn,ln])}(this); \ No newline at end of file
diff --git a/program/js/treelist.js b/program/js/treelist.js
index 353eb6be7..a7cd7cd43 100644
--- a/program/js/treelist.js
+++ b/program/js/treelist.js
@@ -44,7 +44,11 @@ function rcube_treelist_widget(node, p)
scroll_delay: 500,
scroll_step: 5,
scroll_speed: 20,
- check_droptarget: function(node){ return !node.virtual }
+ save_state: false,
+ keyboard: true,
+ tabexit: true,
+ parent_focus: false,
+ check_droptarget: function(node) { return !node.virtual; }
}, p || {});
var container = $(node),
@@ -52,6 +56,9 @@ function rcube_treelist_widget(node, p)
indexbyid = {},
selection = null,
drag_active = false,
+ search_active = false,
+ last_search = '',
+ has_focus = false,
box_coords = {},
item_coords = [],
autoexpand_timer,
@@ -59,6 +66,13 @@ function rcube_treelist_widget(node, p)
body_scroll_top = 0,
list_scroll_top = 0,
scroll_timer,
+ searchfield,
+ tree_state,
+ ui_droppable,
+ ui_draggable,
+ draggable_opts,
+ droppable_opts,
+ list_id = (container.attr('id') || p.id_prefix || '0'),
me = this;
@@ -73,11 +87,16 @@ function rcube_treelist_widget(node, p)
this.drag_start = drag_start;
this.drag_end = drag_end;
this.intersects = intersects;
+ this.droppable = droppable;
+ this.draggable = draggable;
this.update = update_node;
this.insert = insert;
this.remove = remove;
this.get_item = get_item;
+ this.get_node = get_node;
this.get_selection = get_selection;
+ this.is_search = is_search;
+ this.reset_search = reset_search;
/////// startup code (constructor)
@@ -97,7 +116,11 @@ function rcube_treelist_widget(node, p)
e.stopPropagation();
});
- container.on('click', 'li', function(e){
+ container.on('click', 'li', function(e) {
+ // do not select record on checkbox/input click
+ if ($(e.target).is('input'))
+ return true;
+
var node = p.selectable ? indexbyid[dom2id($(this))] : null;
if (node && !node.virtual) {
select(node.id);
@@ -105,6 +128,77 @@ function rcube_treelist_widget(node, p)
}
});
+ // mute clicks on virtual folder links (they need tabindex="0" in order to be selectable by keyboard)
+ container.on('mousedown', 'a', function(e) {
+ var link = $(e.target), node = indexbyid[dom2id(link.closest('li'))];
+ if (node && node.virtual && !link.attr('href')) {
+ e.preventDefault();
+ e.stopPropagation();
+ return false;
+ }
+ });
+
+ // activate search function
+ if (p.searchbox) {
+ searchfield = $(p.searchbox).on('keyup', function(e) {
+ var key = rcube_event.get_keycode(e),
+ mod = rcube_event.get_modifier(e);
+
+ switch (key) {
+ case 9: // tab
+ break;
+
+ case 13: // enter
+ search(this.value, true);
+ return rcube_event.cancel(e);
+
+ case 27: // escape
+ reset_search();
+ break;
+
+ case 38: // arrow up
+ case 37: // left
+ case 39: // right
+ case 40: // arrow down
+ return; // ignore arrow keys
+
+ default:
+ search(this.value, false);
+ break;
+ }
+ }).attr('autocomplete', 'off');
+
+ // find the reset button for this search field
+ searchfield.parent().find('a.reset').click(function(e) {
+ reset_search();
+ return false;
+ })
+ }
+
+ container.on('focusin', function(e){
+ // TODO: only accept focus on virtual nodes from keyboard events
+ has_focus = true;
+ })
+ .on('focusout', function(e){
+ has_focus = false;
+ });
+
+ container.attr('role', 'tree');
+
+ $(document.body)
+ .bind('keydown', keypress);
+
+ // catch focus when clicking the list container area
+ if (p.parent_focus) {
+ container.parent(':not(body)').click(function(e) {
+ if (!has_focus && selection) {
+ $(get_item(selection)).find(':focusable').first().focus();
+ }
+ else if (!has_focus) {
+ container.children('li:has(:focusable)').first().find(':focusable').first().focus();
+ }
+ });
+ }
/////// private methods
@@ -126,6 +220,7 @@ function rcube_treelist_widget(node, p)
}
me.triggerEvent(node.collapsed ? 'collapse' : 'expand', node);
+ save_state(id, node.collapsed);
}
}
@@ -154,15 +249,24 @@ function rcube_treelist_widget(node, p)
function select(id)
{
if (selection) {
- id2dom(selection).removeClass('selected');
+ id2dom(selection, true).removeClass('selected').removeAttr('aria-selected');
+ if (search_active)
+ id2dom(selection).removeClass('selected').removeAttr('aria-selected');
selection = null;
}
- var li = id2dom(id);
+ if (!id)
+ return;
+
+ var li = id2dom(id, true);
if (li.length) {
- li.addClass('selected');
+ li.addClass('selected').attr('aria-selected', 'true');
selection = id;
// TODO: expand all parent nodes if collapsed
+
+ if (search_active)
+ id2dom(id).addClass('selected').attr('aria-selected', 'true');
+
scroll_to_node(li);
}
@@ -180,9 +284,17 @@ function rcube_treelist_widget(node, p)
/**
* Return the DOM element of the list item with the given ID
*/
- function get_item(id)
+ function get_node(id)
+ {
+ return indexbyid[id];
+ }
+
+ /**
+ * Return the DOM element of the list item with the given ID
+ */
+ function get_item(id, real)
{
- return id2dom(id).get(0);
+ return id2dom(id, real).get(0);
}
/**
@@ -191,13 +303,27 @@ function rcube_treelist_widget(node, p)
function insert(node, parent_id, sort)
{
var li, parent_li,
- parent_node = parent_id ? indexbyid[parent_id] : null;
+ parent_node = parent_id ? indexbyid[parent_id] : null
+ search_ = search_active;
+
+ // ignore, already exists
+ if (indexbyid[node.id]) {
+ return;
+ }
+
+ // apply saved state
+ state = get_state(node.id, node.collapsed);
+ if (state !== undefined) {
+ node.collapsed = state;
+ }
// insert as child of an existing node
if (parent_node) {
+ node.level = parent_node.level + 1;
if (!parent_node.children)
parent_node.children = [];
+ search_active = false;
parent_node.children.push(node);
parent_li = id2dom(parent_id);
@@ -210,9 +336,25 @@ function rcube_treelist_widget(node, p)
// append new node to parent's child list
li = render_node(node, parent_li.children('ul').first());
}
+
+ // list is in search mode
+ if (search_) {
+ search_active = search_;
+
+ // add clone to current search results (top level)
+ if (!li.is(':visible')) {
+ $('<li>')
+ .attr('id', li.attr('id') + '--xsR')
+ .attr('class', li.attr('class'))
+ .addClass('searchresult__')
+ .append(li.children().first().clone(true, true))
+ .appendTo(container);
+ }
+ }
}
// insert at top level
else {
+ node.level = 0;
data.push(node);
li = render_node(node, container);
}
@@ -229,14 +371,32 @@ function rcube_treelist_widget(node, p)
*/
function update_node(id, updates, sort)
{
- var li, node = indexbyid[id];
+ var li, parent_ul, parent_node, old_parent,
+ node = indexbyid[id];
if (node) {
li = id2dom(id);
+ parent_ul = li.parent();
+
+ if (updates.id || updates.html || updates.children || updates.classes || updates.parent) {
+ if (updates.parent && (parent_node = indexbyid[updates.parent])) {
+ // remove reference from old parent's child list
+ if (parent_ul.closest('li').length && (old_parent = indexbyid[dom2id(parent_ul.closest('li'))])) {
+ old_parent.children = $.grep(old_parent.children, function(elem, i){ return elem.id != node.id; });
+ }
+
+ // append to new parent node
+ parent_ul = id2dom(updates.parent).children('ul').first();
+ if (!parent_node.children)
+ parent_node.children = [];
+ parent_node.children.push(node);
+ }
+ else if (updates.parent !== undefined) {
+ parent_ul = container;
+ }
- if (updates.id || updates.html || updates.children || updates.classes) {
$.extend(node, updates);
- render_node(node, li.parent(), li);
+ li = render_node(node, parent_ul, li);
}
if (node.id != id) {
@@ -276,7 +436,7 @@ function rcube_treelist_widget(node, p)
if (sibling) {
li.insertAfter(sibling);
}
- else if (first.id != myid) {
+ else if (first && first.id != myid) {
li.insertBefore(first);
}
@@ -292,7 +452,7 @@ function rcube_treelist_widget(node, p)
var node, li;
if (node = indexbyid[id]) {
- li = id2dom(id);
+ li = id2dom(id, true);
li.remove();
node.deleted = true;
@@ -309,7 +469,7 @@ function rcube_treelist_widget(node, p)
*/
function update_data()
{
- data = walk_list(container);
+ data = walk_list(container, 0);
}
/**
@@ -318,6 +478,7 @@ function rcube_treelist_widget(node, p)
function update_dom(node)
{
var li = id2dom(node.id);
+ li.attr('aria-expanded', node.collapsed ? 'false' : 'true');
li.children('ul').first()[(node.collapsed ? 'hide' : 'show')]();
li.children('div.treetoggle').removeClass('collapsed expanded').addClass(node.collapsed ? 'collapsed' : 'expanded');
me.triggerEvent('toggle', node);
@@ -326,7 +487,7 @@ function rcube_treelist_widget(node, p)
/**
*
*/
- function reset()
+ function reset(keep_content)
{
select('');
@@ -334,7 +495,112 @@ function rcube_treelist_widget(node, p)
indexbyid = {};
drag_active = false;
- container.html('');
+ if (keep_content) {
+ if (draggable_opts) {
+ if (ui_draggable)
+ draggable('destroy');
+ draggable(draggable_opts);
+ }
+
+ if (droppable_opts) {
+ if (ui_droppable)
+ droppable('destroy');
+ droppable(droppable_opts);
+ }
+
+ update_data();
+ }
+ else {
+ container.html('');
+ }
+
+ reset_search();
+ }
+
+ /**
+ *
+ */
+ function search(q, enter)
+ {
+ q = String(q).toLowerCase();
+
+ if (!q.length)
+ return reset_search();
+ else if (q == last_search && !enter)
+ return 0;
+
+ var hits = [];
+ var search_tree = function(items) {
+ $.each(items, function(i, node) {
+ var li, sli;
+ if (!node.virtual && !node.deleted && String(node.text).toLowerCase().indexOf(q) >= 0 && hits.indexOf(node.id) < 0) {
+ li = id2dom(node.id);
+
+ // skip already filtered nodes
+ if (li.data('filtered'))
+ return;
+
+ sli = $('<li>')
+ .attr('id', li.attr('id') + '--xsR')
+ .attr('class', li.attr('class'))
+ .addClass('searchresult__')
+ // append all elements like links and inputs, but not sub-trees
+ .append(li.children(':not(div.treetoggle,ul)').clone(true, true))
+ .appendTo(container);
+ hits.push(node.id);
+ }
+
+ if (node.children && node.children.length) {
+ search_tree(node.children);
+ }
+ });
+ };
+
+ // reset old search results
+ if (search_active) {
+ $(container).children('li.searchresult__').remove();
+ search_active = false;
+ }
+
+ // hide all list items
+ $(container).children('li').hide().removeClass('selected');
+
+ // search recursively in tree (to keep sorting order)
+ search_tree(data);
+ search_active = true;
+ last_search = q;
+
+ me.triggerEvent('search', { query: q, last: last_search, count: hits.length, ids: hits, execute: enter||false });
+
+ return hits.count;
+ }
+
+ /**
+ *
+ */
+ function reset_search()
+ {
+ if (searchfield)
+ searchfield.val('');
+
+ $(container).children('li.searchresult__').remove();
+ $(container).children('li').filter(function() { return !$(this).data('filtered'); }).show();
+
+ search_active = false;
+
+ me.triggerEvent('search', { query: false, last: last_search });
+ last_search = '';
+
+ if (selection)
+ select(selection);
+ }
+
+ /**
+ *
+ */
+ function is_search()
+ {
+ return search_active;
}
/**
@@ -350,6 +616,7 @@ function rcube_treelist_widget(node, p)
// render child nodes
for (var i=0; i < data.length; i++) {
+ data[i].level = 0;
render_node(data[i], container);
}
@@ -366,10 +633,15 @@ function rcube_treelist_widget(node, p)
var li = $('<li>')
.attr('id', p.id_prefix + (p.id_encode ? p.id_encode(node.id) : node.id))
- .addClass((node.classes || []).join(' '));
+ .attr('role', 'treeitem')
+ .addClass((node.classes || []).join(' '))
+ .data('id', node.id);
- if (replace)
+ if (replace) {
replace.replaceWith(li);
+ if (parent)
+ li.appendTo(parent);
+ }
else
li.appendTo(parent);
@@ -378,6 +650,9 @@ function rcube_treelist_widget(node, p)
else if (typeof node.html == 'object')
li.append(node.html);
+ if (!node.text)
+ node.text = li.children().first().text();
+
if (node.virtual)
li.addClass('virtual');
if (node.id == selection)
@@ -385,12 +660,14 @@ function rcube_treelist_widget(node, p)
// add child list and toggle icon
if (node.children && node.children.length) {
+ li.attr('aria-expanded', node.collapsed ? 'false' : 'true');
$('<div class="treetoggle '+(node.collapsed ? 'collapsed' : 'expanded') + '">&nbsp;</div>').appendTo(li);
- var ul = $('<ul>').appendTo(li).attr('class', node.childlistclass);
+ var ul = $('<ul>').appendTo(li).attr('class', node.childlistclass).attr('role', 'group');
if (node.collapsed)
ul.hide();
for (var i=0; i < node.children.length; i++) {
+ node.children[i].level = node.level + 1;
render_node(node.children[i], ul);
}
}
@@ -402,17 +679,19 @@ function rcube_treelist_widget(node, p)
* Recursively walk the DOM tree and build an internal data structure
* representing the skeleton of this tree list.
*/
- function walk_list(ul)
+ function walk_list(ul, level)
{
var result = [];
ul.children('li').each(function(i,e){
- var li = $(e), sublist = li.children('ul');
+ var state, li = $(e), sublist = li.children('ul');
var node = {
id: dom2id(li),
- classes: li.attr('class').split(' '),
+ classes: String(li.attr('class')).split(' '),
virtual: li.hasClass('virtual'),
+ level: level,
html: li.children().first().get(0).outerHTML,
- children: walk_list(sublist)
+ text: li.children().first().text(),
+ children: walk_list(sublist, level+1)
}
if (sublist.length) {
@@ -420,14 +699,39 @@ function rcube_treelist_widget(node, p)
}
if (node.children.length) {
node.collapsed = sublist.css('display') == 'none';
+
+ // apply saved state
+ state = get_state(node.id, node.collapsed);
+ if (state !== undefined) {
+ node.collapsed = state;
+ sublist[(state?'hide':'show')]();
+ }
+
+ if (!li.children('div.treetoggle').length)
+ $('<div class="treetoggle '+(node.collapsed ? 'collapsed' : 'expanded') + '">&nbsp;</div>').appendTo(li);
+
+ li.attr('aria-expanded', node.collapsed ? 'false' : 'true');
}
if (li.hasClass('selected')) {
+ li.attr('aria-selected', 'true');
selection = node.id;
}
+ li.data('id', node.id);
+
+ // declare list item as treeitem
+ li.attr('role', 'treeitem').attr('aria-level', node.level+1);
+
+ // allow virtual nodes to receive focus
+ if (node.virtual) {
+ li.children('a:first').attr('tabindex', '0');
+ }
+
result.push(node);
indexbyid[node.id] = node;
- })
+ });
+
+ ul.attr('role', level == 0 ? 'tree' : 'group');
return result;
}
@@ -450,17 +754,19 @@ function rcube_treelist_widget(node, p)
*/
function dom2id(li)
{
- var domid = li.attr('id').replace(new RegExp('^' + (p.id_prefix) || '%'), '');
+ var domid = String(li.attr('id')).replace(new RegExp('^' + (p.id_prefix) || '%'), '').replace(/--xsR$/, '');
return p.id_decode ? p.id_decode(domid) : domid;
}
/**
* Get the <li> element for the given node ID
*/
- function id2dom(id)
+ function id2dom(id, real)
{
- var domid = p.id_encode ? p.id_encode(id) : id;
- return $('#' + p.id_prefix + domid);
+ var domid = p.id_encode ? p.id_encode(id) : id,
+ suffix = search_active && !real ? '--xsR' : '';
+
+ return $('#' + p.id_prefix + domid + suffix, container);
}
/**
@@ -476,6 +782,124 @@ function rcube_treelist_widget(node, p)
scroller.scrollTop(rel_offset + current_offset);
}
+ /**
+ * Save node collapse state to localStorage
+ */
+ function save_state(id, collapsed)
+ {
+ if (p.save_state && window.rcmail) {
+ var key = 'treelist-' + list_id;
+ if (!tree_state) {
+ tree_state = rcmail.local_storage_get_item(key, {});
+ }
+
+ if (tree_state[id] != collapsed) {
+ tree_state[id] = collapsed;
+ rcmail.local_storage_set_item(key, tree_state);
+ }
+ }
+ }
+
+ /**
+ * Read node collapse state from localStorage
+ */
+ function get_state(id)
+ {
+ if (p.save_state && window.rcmail) {
+ if (!tree_state) {
+ tree_state = rcmail.local_storage_get_item('treelist-' + list_id, {});
+ }
+ return tree_state[id];
+ }
+
+ return undefined;
+ }
+
+ /**
+ * Handler for keyboard events on treelist
+ */
+ function keypress(e)
+ {
+ var target = e.target || {},
+ keyCode = rcube_event.get_keycode(e);
+
+ if (!has_focus || target.nodeName == 'INPUT' && keyCode != 38 && keyCode != 40 || target.nodeName == 'TEXTAREA' || target.nodeName == 'SELECT')
+ return true;
+
+ switch (keyCode) {
+ case 38:
+ case 40:
+ case 63232: // 'up', in safari keypress
+ case 63233: // 'down', in safari keypress
+ var li = p.keyboard ? container.find(':focus').closest('li') : [];
+ if (li.length) {
+ focus_next(li, (mod = keyCode == 38 || keyCode == 63232 ? -1 : 1));
+ }
+ return rcube_event.cancel(e);
+
+ case 37: // Left arrow key
+ case 39: // Right arrow key
+ var id, node, li = container.find(':focus').closest('li');
+ if (li.length) {
+ id = dom2id(li);
+ node = indexbyid[id];
+ if (node && node.children.length && node.collapsed != (keyCode == 37))
+ toggle(id, rcube_event.get_modifier(e) == SHIFT_KEY); // toggle subtree
+ }
+ return false;
+
+ case 9: // Tab
+ if (p.keyboard && p.tabexit) {
+ // jump to last/first item to move focus away from the treelist widget by tab
+ var limit = rcube_event.get_modifier(e) == SHIFT_KEY ? 'first' : 'last';
+ focus_noscroll(container.find('li[role=treeitem]:has(a)')[limit]().find('a:'+limit));
+ }
+ break;
+ }
+
+ return true;
+ }
+
+ function focus_next(li, dir, from_child)
+ {
+ var mod = dir < 0 ? 'prev' : 'next',
+ next = li[mod](), limit, parent;
+
+ if (dir > 0 && !from_child && li.children('ul[role=group]:visible').length) {
+ li.children('ul').children('li:first').find('a:first').focus();
+ }
+ else if (dir < 0 && !from_child && next.children('ul[role=group]:visible').length) {
+ next.children('ul').children('li:last').find('a:first').focus();
+ }
+ else if (next.length && next.find('a:first').focus().length) {
+ // focused
+ }
+ else {
+ parent = li.parent().closest('li[role=treeitem]');
+ if (parent.length)
+ if (dir < 0) {
+ parent.find('a:first').focus();
+ }
+ else {
+ focus_next(parent, dir, true);
+ }
+ }
+ }
+
+ /**
+ * Focus the given element without scrolling the list container
+ */
+ function focus_noscroll(elem)
+ {
+ if (elem.length) {
+ var frame = container.parent().get(0) || { scrollTop:0 },
+ y = frame.scrollTop || frame.scrollY;
+ elem.focus();
+ frame.scrollTop = y;
+ }
+ }
+
+
///// drag & drop support
/**
@@ -484,6 +908,11 @@ function rcube_treelist_widget(node, p)
*/
function drag_start()
{
+ if (drag_active)
+ return;
+
+ drag_active = true;
+
var li, item, height,
pos = container.offset();
@@ -491,7 +920,6 @@ function rcube_treelist_widget(node, p)
list_scroll_top = container.parent().scrollTop();
pos.top += list_scroll_top;
- drag_active = true;
box_coords = {
x1: pos.left,
y1: pos.top,
@@ -554,6 +982,9 @@ function rcube_treelist_widget(node, p)
*/
function drag_end()
{
+ if (!drag_active)
+ return;
+
drag_active = false;
scroll_timer = null;
@@ -584,7 +1015,7 @@ function rcube_treelist_widget(node, p)
}
/**
- * Determine if the given mouse coords intersect the list and one if its items
+ * Determine if the given mouse coords intersect the list and one of its items
*/
function intersects(mouse, highlight)
{
@@ -598,13 +1029,14 @@ function rcube_treelist_widget(node, p)
// no intersection with list bounding box
if (mouse.x < box_coords.x1 || mouse.x >= box_coords.x2 || mouse.top < box_coords.y1 || mouse.top >= box_coords.y2) {
// TODO: optimize performance for this operation
- $('li.droptarget', container).removeClass('droptarget');
+ if (highlight)
+ $('li.droptarget', container).removeClass('droptarget');
return result;
}
// check intersection with visible list items
- var pos, node;
- for (var id in item_coords) {
+ var id, pos, node;
+ for (id in item_coords) {
pos = item_coords[id];
if (mouse.x >= pos.x1 && mouse.x < pos.x2 && mouse.top >= pos.y1 && mouse.top < pos.y2) {
node = indexbyid[id];
@@ -619,6 +1051,8 @@ function rcube_treelist_widget(node, p)
expand(autoexpand_item);
drag_start(); // re-calculate item coords
autoexpand_item = null;
+ if (ui_droppable)
+ $.ui.ddmanager.prepareOffsets($.ui.ddmanager.current, null);
}, p.autoexpand);
}
else if (autoexpand_timer && autoexpand_item != id) {
@@ -647,6 +1081,94 @@ function rcube_treelist_widget(node, p)
return result;
}
+
+ /**
+ * Wrapper for jQuery.UI.droppable() activation on this widget
+ *
+ * @param object Options as passed to regular .droppable() function
+ */
+ function droppable(opts)
+ {
+ if (!opts) opts = {};
+
+ if ($.type(opts) == 'string') {
+ if (opts == 'destroy') {
+ ui_droppable = null;
+ }
+ $('li:not(.virtual)', container).droppable(opts);
+ return this;
+ }
+
+ droppable_opts = opts;
+
+ var my_opts = $.extend({
+ greedy: true,
+ tolerance: 'pointer',
+ hoverClass: 'droptarget',
+ addClasses: false
+ }, opts);
+
+ my_opts.activate = function(e, ui) {
+ drag_start();
+ ui_droppable = ui;
+ if (opts.activate)
+ opts.activate(e, ui);
+ };
+
+ my_opts.deactivate = function(e, ui) {
+ drag_end();
+ ui_droppable = null;
+ if (opts.deactivate)
+ opts.deactivate(e, ui);
+ };
+
+ my_opts.over = function(e, ui) {
+ intersects(rcube_event.get_mouse_pos(e), false);
+ if (opts.over)
+ opts.over(e, ui);
+ };
+
+ $('li:not(.virtual)', container).droppable(my_opts);
+
+ return this;
+ }
+
+ /**
+ * Wrapper for jQuery.UI.draggable() activation on this widget
+ *
+ * @param object Options as passed to regular .draggable() function
+ */
+ function draggable(opts)
+ {
+ if (!opts) opts = {};
+
+ if ($.type(opts) == 'string') {
+ if (opts == 'destroy') {
+ ui_draggable = null;
+ }
+ $('li:not(.virtual)', container).draggable(opts);
+ return this;
+ }
+
+ draggable_opts = opts;
+
+ var my_opts = $.extend({
+ appendTo: 'body',
+ revert: 'invalid',
+ iframeFix: true,
+ addClasses: false,
+ cursorAt: {left: -20, top: 5},
+ create: function(e, ui) { ui_draggable = ui; },
+ helper: function(e) {
+ return $('<div>').attr('id', 'rcmdraglayer')
+ .text($.trim($(e.target).first().text()));
+ }
+ }, opts);
+
+ $('li:not(.virtual)', container).draggable(my_opts);
+
+ return this;
+ }
}
// use event processing functions from Roundcube's rcube_event_engine
diff --git a/program/lib/Auth/SASL.php b/program/lib/Auth/SASL.php
deleted file mode 100644
index 5bd6eb096..000000000
--- a/program/lib/Auth/SASL.php
+++ /dev/null
@@ -1,125 +0,0 @@
-<?php
-// +-----------------------------------------------------------------------+
-// | Copyright (c) 2002-2003 Richard Heyes |
-// | All rights reserved. |
-// | |
-// | Redistribution and use in source and binary forms, with or without |
-// | modification, are permitted provided that the following conditions |
-// | are met: |
-// | |
-// | o Redistributions of source code must retain the above copyright |
-// | notice, this list of conditions and the following disclaimer. |
-// | o Redistributions in binary form must reproduce the above copyright |
-// | notice, this list of conditions and the following disclaimer in the |
-// | documentation and/or other materials provided with the distribution.|
-// | o The names of the authors may not be used to endorse or promote |
-// | products derived from this software without specific prior written |
-// | permission. |
-// | |
-// | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
-// | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
-// | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
-// | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
-// | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
-// | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
-// | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
-// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
-// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
-// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
-// | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
-// | |
-// +-----------------------------------------------------------------------+
-// | Author: Richard Heyes <richard@php.net> |
-// +-----------------------------------------------------------------------+
-//
-// $Id$
-
-/**
-* Client implementation of various SASL mechanisms
-*
-* @author Richard Heyes <richard@php.net>
-* @access public
-* @version 1.0
-* @package Auth_SASL
-*/
-
-require_once('PEAR.php');
-
-class Auth_SASL
-{
- /**
- * Factory class. Returns an object of the request
- * type.
- *
- * @param string $type One of: Anonymous
- * Plain
- * CramMD5
- * DigestMD5
- * SCRAM-* (any mechanism of the SCRAM family)
- * Types are not case sensitive
- */
- function &factory($type)
- {
- switch (strtolower($type)) {
- case 'anonymous':
- $filename = 'Auth/SASL/Anonymous.php';
- $classname = 'Auth_SASL_Anonymous';
- break;
-
- case 'login':
- $filename = 'Auth/SASL/Login.php';
- $classname = 'Auth_SASL_Login';
- break;
-
- case 'plain':
- $filename = 'Auth/SASL/Plain.php';
- $classname = 'Auth_SASL_Plain';
- break;
-
- case 'external':
- $filename = 'Auth/SASL/External.php';
- $classname = 'Auth_SASL_External';
- break;
-
- case 'crammd5':
- // $msg = 'Deprecated mechanism name. Use IANA-registered name: CRAM-MD5.';
- // trigger_error($msg, E_USER_DEPRECATED);
- case 'cram-md5':
- $filename = 'Auth/SASL/CramMD5.php';
- $classname = 'Auth_SASL_CramMD5';
- break;
-
- case 'digestmd5':
- // $msg = 'Deprecated mechanism name. Use IANA-registered name: DIGEST-MD5.';
- // trigger_error($msg, E_USER_DEPRECATED);
- case 'digest-md5':
- // $msg = 'DIGEST-MD5 is a deprecated SASL mechanism as per RFC-6331. Using it could be a security risk.';
- // trigger_error($msg, E_USER_NOTICE);
- $filename = 'Auth/SASL/DigestMD5.php';
- $classname = 'Auth_SASL_DigestMD5';
- break;
-
- default:
- $scram = '/^SCRAM-(.{1,9})$/i';
- if (preg_match($scram, $type, $matches))
- {
- $hash = $matches[1];
- $filename = dirname(__FILE__) .'/SASL/SCRAM.php';
- $classname = 'Auth_SASL_SCRAM';
- $parameter = $hash;
- break;
- }
- return PEAR::raiseError('Invalid SASL mechanism type');
- break;
- }
-
- require_once($filename);
- if (isset($parameter))
- $obj = new $classname($parameter);
- else
- $obj = new $classname();
- return $obj;
- }
-}
-
-?>
diff --git a/program/lib/Auth/SASL/Anonymous.php b/program/lib/Auth/SASL/Anonymous.php
deleted file mode 100644
index 081190936..000000000
--- a/program/lib/Auth/SASL/Anonymous.php
+++ /dev/null
@@ -1,71 +0,0 @@
-<?php
-// +-----------------------------------------------------------------------+
-// | Copyright (c) 2002-2003 Richard Heyes |
-// | All rights reserved. |
-// | |
-// | Redistribution and use in source and binary forms, with or without |
-// | modification, are permitted provided that the following conditions |
-// | are met: |
-// | |
-// | o Redistributions of source code must retain the above copyright |
-// | notice, this list of conditions and the following disclaimer. |
-// | o Redistributions in binary form must reproduce the above copyright |
-// | notice, this list of conditions and the following disclaimer in the |
-// | documentation and/or other materials provided with the distribution.|
-// | o The names of the authors may not be used to endorse or promote |
-// | products derived from this software without specific prior written |
-// | permission. |
-// | |
-// | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
-// | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
-// | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
-// | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
-// | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
-// | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
-// | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
-// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
-// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
-// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
-// | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
-// | |
-// +-----------------------------------------------------------------------+
-// | Author: Richard Heyes <richard@php.net> |
-// +-----------------------------------------------------------------------+
-//
-// $Id$
-
-/**
-* Implmentation of ANONYMOUS SASL mechanism
-*
-* @author Richard Heyes <richard@php.net>
-* @access public
-* @version 1.0
-* @package Auth_SASL
-*/
-
-require_once('Auth/SASL/Common.php');
-
-class Auth_SASL_Anonymous extends Auth_SASL_Common
-{
- /**
- * Not much to do here except return the token supplied.
- * No encoding, hashing or encryption takes place for this
- * mechanism, simply one of:
- * o An email address
- * o An opaque string not containing "@" that can be interpreted
- * by the sysadmin
- * o Nothing
- *
- * We could have some logic here for the second option, but this
- * would by no means create something interpretable.
- *
- * @param string $token Optional email address or string to provide
- * as trace information.
- * @return string The unaltered input token
- */
- function getResponse($token = '')
- {
- return $token;
- }
-}
-?> \ No newline at end of file
diff --git a/program/lib/Auth/SASL/Common.php b/program/lib/Auth/SASL/Common.php
deleted file mode 100644
index d8c5610d1..000000000
--- a/program/lib/Auth/SASL/Common.php
+++ /dev/null
@@ -1,105 +0,0 @@
-<?php
-// +-----------------------------------------------------------------------+
-// | Copyright (c) 2002-2003 Richard Heyes |
-// | All rights reserved. |
-// | |
-// | Redistribution and use in source and binary forms, with or without |
-// | modification, are permitted provided that the following conditions |
-// | are met: |
-// | |
-// | o Redistributions of source code must retain the above copyright |
-// | notice, this list of conditions and the following disclaimer. |
-// | o Redistributions in binary form must reproduce the above copyright |
-// | notice, this list of conditions and the following disclaimer in the |
-// | documentation and/or other materials provided with the distribution.|
-// | o The names of the authors may not be used to endorse or promote |
-// | products derived from this software without specific prior written |
-// | permission. |
-// | |
-// | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
-// | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
-// | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
-// | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
-// | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
-// | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
-// | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
-// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
-// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
-// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
-// | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
-// | |
-// +-----------------------------------------------------------------------+
-// | Author: Richard Heyes <richard@php.net> |
-// +-----------------------------------------------------------------------+
-//
-// $Id$
-
-/**
-* Common functionality to SASL mechanisms
-*
-* @author Richard Heyes <richard@php.net>
-* @access public
-* @version 1.0
-* @package Auth_SASL
-*/
-
-class Auth_SASL_Common
-{
- /**
- * Function which implements HMAC MD5 digest
- *
- * @param string $key The secret key
- * @param string $data The data to hash
- * @param bool $raw_output Whether the digest is returned in binary or hexadecimal format.
- *
- * @return string The HMAC-MD5 digest
- */
- function _HMAC_MD5($key, $data, $raw_output = FALSE)
- {
- if (strlen($key) > 64) {
- $key = pack('H32', md5($key));
- }
-
- if (strlen($key) < 64) {
- $key = str_pad($key, 64, chr(0));
- }
-
- $k_ipad = substr($key, 0, 64) ^ str_repeat(chr(0x36), 64);
- $k_opad = substr($key, 0, 64) ^ str_repeat(chr(0x5C), 64);
-
- $inner = pack('H32', md5($k_ipad . $data));
- $digest = md5($k_opad . $inner, $raw_output);
-
- return $digest;
- }
-
- /**
- * Function which implements HMAC-SHA-1 digest
- *
- * @param string $key The secret key
- * @param string $data The data to hash
- * @param bool $raw_output Whether the digest is returned in binary or hexadecimal format.
- * @return string The HMAC-SHA-1 digest
- * @author Jehan <jehan.marmottard@gmail.com>
- * @access protected
- */
- protected function _HMAC_SHA1($key, $data, $raw_output = FALSE)
- {
- if (strlen($key) > 64) {
- $key = sha1($key, TRUE);
- }
-
- if (strlen($key) < 64) {
- $key = str_pad($key, 64, chr(0));
- }
-
- $k_ipad = substr($key, 0, 64) ^ str_repeat(chr(0x36), 64);
- $k_opad = substr($key, 0, 64) ^ str_repeat(chr(0x5C), 64);
-
- $inner = pack('H40', sha1($k_ipad . $data));
- $digest = sha1($k_opad . $inner, $raw_output);
-
- return $digest;
- }
-}
-?>
diff --git a/program/lib/Auth/SASL/CramMD5.php b/program/lib/Auth/SASL/CramMD5.php
deleted file mode 100644
index d3fbf179b..000000000
--- a/program/lib/Auth/SASL/CramMD5.php
+++ /dev/null
@@ -1,68 +0,0 @@
-<?php
-// +-----------------------------------------------------------------------+
-// | Copyright (c) 2002-2003 Richard Heyes |
-// | All rights reserved. |
-// | |
-// | Redistribution and use in source and binary forms, with or without |
-// | modification, are permitted provided that the following conditions |
-// | are met: |
-// | |
-// | o Redistributions of source code must retain the above copyright |
-// | notice, this list of conditions and the following disclaimer. |
-// | o Redistributions in binary form must reproduce the above copyright |
-// | notice, this list of conditions and the following disclaimer in the |
-// | documentation and/or other materials provided with the distribution.|
-// | o The names of the authors may not be used to endorse or promote |
-// | products derived from this software without specific prior written |
-// | permission. |
-// | |
-// | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
-// | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
-// | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
-// | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
-// | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
-// | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
-// | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
-// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
-// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
-// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
-// | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
-// | |
-// +-----------------------------------------------------------------------+
-// | Author: Richard Heyes <richard@php.net> |
-// +-----------------------------------------------------------------------+
-//
-// $Id$
-
-/**
-* Implmentation of CRAM-MD5 SASL mechanism
-*
-* @author Richard Heyes <richard@php.net>
-* @access public
-* @version 1.0
-* @package Auth_SASL
-*/
-
-require_once('Auth/SASL/Common.php');
-
-class Auth_SASL_CramMD5 extends Auth_SASL_Common
-{
- /**
- * Implements the CRAM-MD5 SASL mechanism
- * This DOES NOT base64 encode the return value,
- * you will need to do that yourself.
- *
- * @param string $user Username
- * @param string $pass Password
- * @param string $challenge The challenge supplied by the server.
- * this should be already base64_decoded.
- *
- * @return string The string to pass back to the server, of the form
- * "<user> <digest>". This is NOT base64_encoded.
- */
- function getResponse($user, $pass, $challenge)
- {
- return $user . ' ' . $this->_HMAC_MD5($pass, $challenge);
- }
-}
-?> \ No newline at end of file
diff --git a/program/lib/Auth/SASL/DigestMD5.php b/program/lib/Auth/SASL/DigestMD5.php
deleted file mode 100644
index 07007b7c9..000000000
--- a/program/lib/Auth/SASL/DigestMD5.php
+++ /dev/null
@@ -1,197 +0,0 @@
-<?php
-// +-----------------------------------------------------------------------+
-// | Copyright (c) 2002-2003 Richard Heyes |
-// | All rights reserved. |
-// | |
-// | Redistribution and use in source and binary forms, with or without |
-// | modification, are permitted provided that the following conditions |
-// | are met: |
-// | |
-// | o Redistributions of source code must retain the above copyright |
-// | notice, this list of conditions and the following disclaimer. |
-// | o Redistributions in binary form must reproduce the above copyright |
-// | notice, this list of conditions and the following disclaimer in the |
-// | documentation and/or other materials provided with the distribution.|
-// | o The names of the authors may not be used to endorse or promote |
-// | products derived from this software without specific prior written |
-// | permission. |
-// | |
-// | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
-// | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
-// | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
-// | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
-// | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
-// | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
-// | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
-// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
-// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
-// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
-// | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
-// | |
-// +-----------------------------------------------------------------------+
-// | Author: Richard Heyes <richard@php.net> |
-// +-----------------------------------------------------------------------+
-//
-// $Id$
-
-/**
-* Implmentation of DIGEST-MD5 SASL mechanism
-*
-* @author Richard Heyes <richard@php.net>
-* @access public
-* @version 1.0
-* @package Auth_SASL
-*/
-
-require_once('Auth/SASL/Common.php');
-
-class Auth_SASL_DigestMD5 extends Auth_SASL_Common
-{
- /**
- * Provides the (main) client response for DIGEST-MD5
- * requires a few extra parameters than the other
- * mechanisms, which are unavoidable.
- *
- * @param string $authcid Authentication id (username)
- * @param string $pass Password
- * @param string $challenge The digest challenge sent by the server
- * @param string $hostname The hostname of the machine you're connecting to
- * @param string $service The servicename (eg. imap, pop, acap etc)
- * @param string $authzid Authorization id (username to proxy as)
- * @return string The digest response (NOT base64 encoded)
- * @access public
- */
- function getResponse($authcid, $pass, $challenge, $hostname, $service, $authzid = '')
- {
- $challenge = $this->_parseChallenge($challenge);
- $authzid_string = '';
- if ($authzid != '') {
- $authzid_string = ',authzid="' . $authzid . '"';
- }
-
- if (!empty($challenge)) {
- $cnonce = $this->_getCnonce();
- $digest_uri = sprintf('%s/%s', $service, $hostname);
- $response_value = $this->_getResponseValue($authcid, $pass, $challenge['realm'], $challenge['nonce'], $cnonce, $digest_uri, $authzid);
-
- if ($challenge['realm']) {
- return sprintf('username="%s",realm="%s"' . $authzid_string .
-',nonce="%s",cnonce="%s",nc=00000001,qop=auth,digest-uri="%s",response=%s,maxbuf=%d', $authcid, $challenge['realm'], $challenge['nonce'], $cnonce, $digest_uri, $response_value, $challenge['maxbuf']);
- } else {
- return sprintf('username="%s"' . $authzid_string . ',nonce="%s",cnonce="%s",nc=00000001,qop=auth,digest-uri="%s",response=%s,maxbuf=%d', $authcid, $challenge['nonce'], $cnonce, $digest_uri, $response_value, $challenge['maxbuf']);
- }
- } else {
- return PEAR::raiseError('Invalid digest challenge');
- }
- }
-
- /**
- * Parses and verifies the digest challenge*
- *
- * @param string $challenge The digest challenge
- * @return array The parsed challenge as an assoc
- * array in the form "directive => value".
- * @access private
- */
- function _parseChallenge($challenge)
- {
- $tokens = array();
- while (preg_match('/^([a-z-]+)=("[^"]+(?<!\\\)"|[^,]+)/i', $challenge, $matches)) {
-
- // Ignore these as per rfc2831
- if ($matches[1] == 'opaque' OR $matches[1] == 'domain') {
- $challenge = substr($challenge, strlen($matches[0]) + 1);
- continue;
- }
-
- // Allowed multiple "realm" and "auth-param"
- if (!empty($tokens[$matches[1]]) AND ($matches[1] == 'realm' OR $matches[1] == 'auth-param')) {
- if (is_array($tokens[$matches[1]])) {
- $tokens[$matches[1]][] = preg_replace('/^"(.*)"$/', '\\1', $matches[2]);
- } else {
- $tokens[$matches[1]] = array($tokens[$matches[1]], preg_replace('/^"(.*)"$/', '\\1', $matches[2]));
- }
-
- // Any other multiple instance = failure
- } elseif (!empty($tokens[$matches[1]])) {
- $tokens = array();
- break;
-
- } else {
- $tokens[$matches[1]] = preg_replace('/^"(.*)"$/', '\\1', $matches[2]);
- }
-
- // Remove the just parsed directive from the challenge
- $challenge = substr($challenge, strlen($matches[0]) + 1);
- }
-
- /**
- * Defaults and required directives
- */
- // Realm
- if (empty($tokens['realm'])) {
- $tokens['realm'] = "";
- }
-
- // Maxbuf
- if (empty($tokens['maxbuf'])) {
- $tokens['maxbuf'] = 65536;
- }
-
- // Required: nonce, algorithm
- if (empty($tokens['nonce']) OR empty($tokens['algorithm'])) {
- return array();
- }
-
- return $tokens;
- }
-
- /**
- * Creates the response= part of the digest response
- *
- * @param string $authcid Authentication id (username)
- * @param string $pass Password
- * @param string $realm Realm as provided by the server
- * @param string $nonce Nonce as provided by the server
- * @param string $cnonce Client nonce
- * @param string $digest_uri The digest-uri= value part of the response
- * @param string $authzid Authorization id
- * @return string The response= part of the digest response
- * @access private
- */
- function _getResponseValue($authcid, $pass, $realm, $nonce, $cnonce, $digest_uri, $authzid = '')
- {
- if ($authzid == '') {
- $A1 = sprintf('%s:%s:%s', pack('H32', md5(sprintf('%s:%s:%s', $authcid, $realm, $pass))), $nonce, $cnonce);
- } else {
- $A1 = sprintf('%s:%s:%s:%s', pack('H32', md5(sprintf('%s:%s:%s', $authcid, $realm, $pass))), $nonce, $cnonce, $authzid);
- }
- $A2 = 'AUTHENTICATE:' . $digest_uri;
- return md5(sprintf('%s:%s:00000001:%s:auth:%s', md5($A1), $nonce, $cnonce, md5($A2)));
- }
-
- /**
- * Creates the client nonce for the response
- *
- * @return string The cnonce value
- * @access private
- */
- function _getCnonce()
- {
- if (@file_exists('/dev/urandom') && $fd = @fopen('/dev/urandom', 'r')) {
- return base64_encode(fread($fd, 32));
-
- } elseif (@file_exists('/dev/random') && $fd = @fopen('/dev/random', 'r')) {
- return base64_encode(fread($fd, 32));
-
- } else {
- $str = '';
- for ($i=0; $i<32; $i++) {
- $str .= chr(mt_rand(0, 255));
- }
-
- return base64_encode($str);
- }
- }
-}
-?>
diff --git a/program/lib/Auth/SASL/External.php b/program/lib/Auth/SASL/External.php
deleted file mode 100644
index c5ae25e75..000000000
--- a/program/lib/Auth/SASL/External.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-// +-----------------------------------------------------------------------+
-// | Copyright (c) 2008 Christoph Schulz |
-// | All rights reserved. |
-// | |
-// | Redistribution and use in source and binary forms, with or without |
-// | modification, are permitted provided that the following conditions |
-// | are met: |
-// | |
-// | o Redistributions of source code must retain the above copyright |
-// | notice, this list of conditions and the following disclaimer. |
-// | o Redistributions in binary form must reproduce the above copyright |
-// | notice, this list of conditions and the following disclaimer in the |
-// | documentation and/or other materials provided with the distribution.|
-// | o The names of the authors may not be used to endorse or promote |
-// | products derived from this software without specific prior written |
-// | permission. |
-// | |
-// | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
-// | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
-// | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
-// | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
-// | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
-// | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
-// | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
-// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
-// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
-// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
-// | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
-// | |
-// +-----------------------------------------------------------------------+
-// | Author: Christoph Schulz <develop@kristov.de> |
-// +-----------------------------------------------------------------------+
-//
-// $Id$
-
-/**
-* Implmentation of EXTERNAL SASL mechanism
-*
-* @author Christoph Schulz <develop@kristov.de>
-* @access public
-* @version 1.0.3
-* @package Auth_SASL
-*/
-
-require_once('Auth/SASL/Common.php');
-
-class Auth_SASL_External extends Auth_SASL_Common
-{
- /**
- * Returns EXTERNAL response
- *
- * @param string $authcid Authentication id (username)
- * @param string $pass Password
- * @param string $authzid Autorization id
- * @return string EXTERNAL Response
- */
- function getResponse($authcid, $pass, $authzid = '')
- {
- return $authzid;
- }
-}
-?>
diff --git a/program/lib/Auth/SASL/Login.php b/program/lib/Auth/SASL/Login.php
deleted file mode 100644
index 918daeedd..000000000
--- a/program/lib/Auth/SASL/Login.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-// +-----------------------------------------------------------------------+
-// | Copyright (c) 2002-2003 Richard Heyes |
-// | All rights reserved. |
-// | |
-// | Redistribution and use in source and binary forms, with or without |
-// | modification, are permitted provided that the following conditions |
-// | are met: |
-// | |
-// | o Redistributions of source code must retain the above copyright |
-// | notice, this list of conditions and the following disclaimer. |
-// | o Redistributions in binary form must reproduce the above copyright |
-// | notice, this list of conditions and the following disclaimer in the |
-// | documentation and/or other materials provided with the distribution.|
-// | o The names of the authors may not be used to endorse or promote |
-// | products derived from this software without specific prior written |
-// | permission. |
-// | |
-// | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
-// | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
-// | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
-// | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
-// | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
-// | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
-// | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
-// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
-// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
-// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
-// | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
-// | |
-// +-----------------------------------------------------------------------+
-// | Author: Richard Heyes <richard@php.net> |
-// +-----------------------------------------------------------------------+
-//
-// $Id$
-
-/**
-* This is technically not a SASL mechanism, however
-* it's used by Net_Sieve, Net_Cyrus and potentially
-* other protocols , so here is a good place to abstract
-* it.
-*
-* @author Richard Heyes <richard@php.net>
-* @access public
-* @version 1.0
-* @package Auth_SASL
-*/
-
-require_once('Auth/SASL/Common.php');
-
-class Auth_SASL_Login extends Auth_SASL_Common
-{
- /**
- * Pseudo SASL LOGIN mechanism
- *
- * @param string $user Username
- * @param string $pass Password
- * @return string LOGIN string
- */
- function getResponse($user, $pass)
- {
- return sprintf('LOGIN %s %s', $user, $pass);
- }
-}
-?> \ No newline at end of file
diff --git a/program/lib/Auth/SASL/Plain.php b/program/lib/Auth/SASL/Plain.php
deleted file mode 100644
index 57894d042..000000000
--- a/program/lib/Auth/SASL/Plain.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-// +-----------------------------------------------------------------------+
-// | Copyright (c) 2002-2003 Richard Heyes |
-// | All rights reserved. |
-// | |
-// | Redistribution and use in source and binary forms, with or without |
-// | modification, are permitted provided that the following conditions |
-// | are met: |
-// | |
-// | o Redistributions of source code must retain the above copyright |
-// | notice, this list of conditions and the following disclaimer. |
-// | o Redistributions in binary form must reproduce the above copyright |
-// | notice, this list of conditions and the following disclaimer in the |
-// | documentation and/or other materials provided with the distribution.|
-// | o The names of the authors may not be used to endorse or promote |
-// | products derived from this software without specific prior written |
-// | permission. |
-// | |
-// | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
-// | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
-// | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
-// | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
-// | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
-// | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
-// | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
-// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
-// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
-// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
-// | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
-// | |
-// +-----------------------------------------------------------------------+
-// | Author: Richard Heyes <richard@php.net> |
-// +-----------------------------------------------------------------------+
-//
-// $Id$
-
-/**
-* Implmentation of PLAIN SASL mechanism
-*
-* @author Richard Heyes <richard@php.net>
-* @access public
-* @version 1.0
-* @package Auth_SASL
-*/
-
-require_once('Auth/SASL/Common.php');
-
-class Auth_SASL_Plain extends Auth_SASL_Common
-{
- /**
- * Returns PLAIN response
- *
- * @param string $authcid Authentication id (username)
- * @param string $pass Password
- * @param string $authzid Autorization id
- * @return string PLAIN Response
- */
- function getResponse($authcid, $pass, $authzid = '')
- {
- return $authzid . chr(0) . $authcid . chr(0) . $pass;
- }
-}
-?>
diff --git a/program/lib/Auth/SASL/SCRAM.php b/program/lib/Auth/SASL/SCRAM.php
deleted file mode 100644
index cbca500e4..000000000
--- a/program/lib/Auth/SASL/SCRAM.php
+++ /dev/null
@@ -1,306 +0,0 @@
-<?php
-// +-----------------------------------------------------------------------+
-// | Copyright (c) 2011 Jehan |
-// | All rights reserved. |
-// | |
-// | Redistribution and use in source and binary forms, with or without |
-// | modification, are permitted provided that the following conditions |
-// | are met: |
-// | |
-// | o Redistributions of source code must retain the above copyright |
-// | notice, this list of conditions and the following disclaimer. |
-// | o Redistributions in binary form must reproduce the above copyright |
-// | notice, this list of conditions and the following disclaimer in the |
-// | documentation and/or other materials provided with the distribution.|
-// | o The names of the authors may not be used to endorse or promote |
-// | products derived from this software without specific prior written |
-// | permission. |
-// | |
-// | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
-// | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
-// | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
-// | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
-// | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
-// | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
-// | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
-// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
-// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
-// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
-// | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
-// | |
-// +-----------------------------------------------------------------------+
-// | Author: Jehan <jehan.marmottard@gmail.com |
-// +-----------------------------------------------------------------------+
-//
-// $Id$
-
-/**
-* Implementation of SCRAM-* SASL mechanisms.
-* SCRAM mechanisms have 3 main steps (initial response, response to the server challenge, then server signature
-* verification) which keep state-awareness. Therefore a single class instanciation must be done and reused for the whole
-* authentication process.
-*
-* @author Jehan <jehan.marmottard@gmail.com>
-* @access public
-* @version 1.0
-* @package Auth_SASL
-*/
-
-require_once('Auth/SASL/Common.php');
-
-class Auth_SASL_SCRAM extends Auth_SASL_Common
-{
- /**
- * Construct a SCRAM-H client where 'H' is a cryptographic hash function.
- *
- * @param string $hash The name cryptographic hash function 'H' as registered by IANA in the "Hash Function Textual
- * Names" registry.
- * @link http://www.iana.org/assignments/hash-function-text-names/hash-function-text-names.xml "Hash Function Textual
- * Names"
- * format of core PHP hash function.
- * @access public
- */
- function __construct($hash)
- {
- // Though I could be strict, I will actually also accept the naming used in the PHP core hash framework.
- // For instance "sha1" is accepted, while the registered hash name should be "SHA-1".
- $hash = strtolower($hash);
- $hashes = array('md2' => 'md2',
- 'md5' => 'md5',
- 'sha-1' => 'sha1',
- 'sha1' => 'sha1',
- 'sha-224' > 'sha224',
- 'sha224' > 'sha224',
- 'sha-256' => 'sha256',
- 'sha256' => 'sha256',
- 'sha-384' => 'sha384',
- 'sha384' => 'sha384',
- 'sha-512' => 'sha512',
- 'sha512' => 'sha512');
- if (function_exists('hash_hmac') && isset($hashes[$hash]))
- {
- $this->hash = create_function('$data', 'return hash("' . $hashes[$hash] . '", $data, TRUE);');
- $this->hmac = create_function('$key,$str,$raw', 'return hash_hmac("' . $hashes[$hash] . '", $str, $key, $raw);');
- }
- elseif ($hash == 'md5')
- {
- $this->hash = create_function('$data', 'return md5($data, true);');
- $this->hmac = array($this, '_HMAC_MD5');
- }
- elseif (in_array($hash, array('sha1', 'sha-1')))
- {
- $this->hash = create_function('$data', 'return sha1($data, true);');
- $this->hmac = array($this, '_HMAC_SHA1');
- }
- else
- return PEAR::raiseError('Invalid SASL mechanism type');
- }
-
- /**
- * Provides the (main) client response for SCRAM-H.
- *
- * @param string $authcid Authentication id (username)
- * @param string $pass Password
- * @param string $challenge The challenge sent by the server.
- * If the challenge is NULL or an empty string, the result will be the "initial response".
- * @param string $authzid Authorization id (username to proxy as)
- * @return string|false The response (binary, NOT base64 encoded)
- * @access public
- */
- public function getResponse($authcid, $pass, $challenge = NULL, $authzid = NULL)
- {
- $authcid = $this->_formatName($authcid);
- if (empty($authcid))
- {
- return false;
- }
- if (!empty($authzid))
- {
- $authzid = $this->_formatName($authzid);
- if (empty($authzid))
- {
- return false;
- }
- }
-
- if (empty($challenge))
- {
- return $this->_generateInitialResponse($authcid, $authzid);
- }
- else
- {
- return $this->_generateResponse($challenge, $pass);
- }
-
- }
-
- /**
- * Prepare a name for inclusion in a SCRAM response.
- *
- * @param string $username a name to be prepared.
- * @return string the reformated name.
- * @access private
- */
- private function _formatName($username)
- {
- // TODO: prepare through the SASLprep profile of the stringprep algorithm.
- // See RFC-4013.
-
- $username = str_replace('=', '=3D', $username);
- $username = str_replace(',', '=2C', $username);
- return $username;
- }
-
- /**
- * Generate the initial response which can be either sent directly in the first message or as a response to an empty
- * server challenge.
- *
- * @param string $authcid Prepared authentication identity.
- * @param string $authzid Prepared authorization identity.
- * @return string The SCRAM response to send.
- * @access private
- */
- private function _generateInitialResponse($authcid, $authzid)
- {
- $init_rep = '';
- $gs2_cbind_flag = 'n,'; // TODO: support channel binding.
- $this->gs2_header = $gs2_cbind_flag . (!empty($authzid)? 'a=' . $authzid : '') . ',';
-
- // I must generate a client nonce and "save" it for later comparison on second response.
- $this->cnonce = $this->_getCnonce();
- // XXX: in the future, when mandatory and/or optional extensions are defined in any updated RFC,
- // this message can be updated.
- $this->first_message_bare = 'n=' . $authcid . ',r=' . $this->cnonce;
- return $this->gs2_header . $this->first_message_bare;
- }
-
- /**
- * Parses and verifies a non-empty SCRAM challenge.
- *
- * @param string $challenge The SCRAM challenge
- * @return string|false The response to send; false in case of wrong challenge or if an initial response has not
- * been generated first.
- * @access private
- */
- private function _generateResponse($challenge, $password)
- {
- // XXX: as I don't support mandatory extension, I would fail on them.
- // And I simply ignore any optional extension.
- $server_message_regexp = "#^r=([\x21-\x2B\x2D-\x7E]+),s=((?:[A-Za-z0-9/+]{4})*(?:[A-Za-z0-9]{3}=|[A-Xa-z0-9]{2}==)?),i=([0-9]*)(,[A-Za-z]=[^,])*$#";
- if (!isset($this->cnonce, $this->gs2_header)
- || !preg_match($server_message_regexp, $challenge, $matches))
- {
- return false;
- }
- $nonce = $matches[1];
- $salt = base64_decode($matches[2]);
- if (!$salt)
- {
- // Invalid Base64.
- return false;
- }
- $i = intval($matches[3]);
-
- $cnonce = substr($nonce, 0, strlen($this->cnonce));
- if ($cnonce <> $this->cnonce)
- {
- // Invalid challenge! Are we under attack?
- return false;
- }
-
- $channel_binding = 'c=' . base64_encode($this->gs2_header); // TODO: support channel binding.
- $final_message = $channel_binding . ',r=' . $nonce; // XXX: no extension.
-
- // TODO: $password = $this->normalize($password); // SASLprep profile of stringprep.
- $saltedPassword = $this->hi($password, $salt, $i);
- $this->saltedPassword = $saltedPassword;
- $clientKey = call_user_func($this->hmac, $saltedPassword, "Client Key", TRUE);
- $storedKey = call_user_func($this->hash, $clientKey, TRUE);
- $authMessage = $this->first_message_bare . ',' . $challenge . ',' . $final_message;
- $this->authMessage = $authMessage;
- $clientSignature = call_user_func($this->hmac, $storedKey, $authMessage, TRUE);
- $clientProof = $clientKey ^ $clientSignature;
- $proof = ',p=' . base64_encode($clientProof);
-
- return $final_message . $proof;
- }
-
- /**
- * SCRAM has also a server verification step. On a successful outcome, it will send additional data which must
- * absolutely be checked against this function. If this fails, the entity which we are communicating with is probably
- * not the server as it has not access to your ServerKey.
- *
- * @param string $data The additional data sent along a successful outcome.
- * @return bool Whether the server has been authenticated.
- * If false, the client must close the connection and consider to be under a MITM attack.
- * @access public
- */
- public function processOutcome($data)
- {
- $verifier_regexp = '#^v=((?:[A-Za-z0-9/+]{4})*(?:[A-Za-z0-9]{3}=|[A-Xa-z0-9]{2}==)?)$#';
- if (!isset($this->saltedPassword, $this->authMessage)
- || !preg_match($verifier_regexp, $data, $matches))
- {
- // This cannot be an outcome, you never sent the challenge's response.
- return false;
- }
-
- $verifier = $matches[1];
- $proposed_serverSignature = base64_decode($verifier);
- $serverKey = call_user_func($this->hmac, $this->saltedPassword, "Server Key", true);
- $serverSignature = call_user_func($this->hmac, $serverKey, $this->authMessage, TRUE);
- return ($proposed_serverSignature === $serverSignature);
- }
-
- /**
- * Hi() call, which is essentially PBKDF2 (RFC-2898) with HMAC-H() as the pseudorandom function.
- *
- * @param string $str The string to hash.
- * @param string $hash The hash value.
- * @param int $i The iteration count.
- * @access private
- */
- private function hi($str, $salt, $i)
- {
- $int1 = "\0\0\0\1";
- $ui = call_user_func($this->hmac, $str, $salt . $int1, true);
- $result = $ui;
- for ($k = 1; $k < $i; $k++)
- {
- $ui = call_user_func($this->hmac, $str, $ui, true);
- $result = $result ^ $ui;
- }
- return $result;
- }
-
-
- /**
- * Creates the client nonce for the response
- *
- * @return string The cnonce value
- * @access private
- * @author Richard Heyes <richard@php.net>
- */
- private function _getCnonce()
- {
- // TODO: I reused the nonce function from the DigestMD5 class.
- // I should probably make this a protected function in Common.
- if (@file_exists('/dev/urandom') && $fd = @fopen('/dev/urandom', 'r')) {
- return base64_encode(fread($fd, 32));
-
- } elseif (@file_exists('/dev/random') && $fd = @fopen('/dev/random', 'r')) {
- return base64_encode(fread($fd, 32));
-
- } else {
- $str = '';
- for ($i=0; $i<32; $i++) {
- $str .= chr(mt_rand(0, 255));
- }
-
- return base64_encode($str);
- }
- }
-
-}
-
-?>
diff --git a/program/lib/Crypt/GPG.php b/program/lib/Crypt/GPG.php
deleted file mode 100644
index 5c2231289..000000000
--- a/program/lib/Crypt/GPG.php
+++ /dev/null
@@ -1,2386 +0,0 @@
-<?php
-
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * Crypt_GPG is a package to use GPG from PHP
- *
- * This package provides an object oriented interface to GNU Privacy
- * Guard (GPG). It requires the GPG executable to be on the system.
- *
- * Though GPG can support symmetric-key cryptography, this package is intended
- * only to facilitate public-key cryptography.
- *
- * This file contains the main GPG class. The class in this file lets you
- * encrypt, decrypt, sign and verify data; import and delete keys; and perform
- * other useful GPG tasks.
- *
- * Example usage:
- * <code>
- * <?php
- * // encrypt some data
- * $gpg = new Crypt_GPG();
- * $gpg->addEncryptKey($mySecretKeyId);
- * $encryptedData = $gpg->encrypt($data);
- * ?>
- * </code>
- *
- * PHP version 5
- *
- * LICENSE:
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of the
- * License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Nathan Fredrickson <nathan@silverorange.com>
- * @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2005-2013 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version CVS: $Id$
- * @link http://pear.php.net/package/Crypt_GPG
- * @link http://pear.php.net/manual/en/package.encryption.crypt-gpg.php
- * @link http://www.gnupg.org/
- */
-
-/**
- * Base class for GPG methods
- */
-require_once 'Crypt/GPGAbstract.php';
-
-/**
- * Signature handler class
- */
-require_once 'Crypt/GPG/VerifyStatusHandler.php';
-
-/**
- * Decryption handler class
- */
-require_once 'Crypt/GPG/DecryptStatusHandler.php';
-
-// {{{ class Crypt_GPG
-
-/**
- * A class to use GPG from PHP
- *
- * This class provides an object oriented interface to GNU Privacy Guard (GPG).
- *
- * Though GPG can support symmetric-key cryptography, this class is intended
- * only to facilitate public-key cryptography.
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Nathan Fredrickson <nathan@silverorange.com>
- * @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2005-2013 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link http://pear.php.net/package/Crypt_GPG
- * @link http://www.gnupg.org/
- */
-class Crypt_GPG extends Crypt_GPGAbstract
-{
- // {{{ class constants for data signing modes
-
- /**
- * Signing mode for normal signing of data. The signed message will not
- * be readable without special software.
- *
- * This is the default signing mode.
- *
- * @see Crypt_GPG::sign()
- * @see Crypt_GPG::signFile()
- */
- const SIGN_MODE_NORMAL = 1;
-
- /**
- * Signing mode for clearsigning data. Clearsigned signatures are ASCII
- * armored data and are readable without special software. If the signed
- * message is unencrypted, the message will still be readable. The message
- * text will be in the original encoding.
- *
- * @see Crypt_GPG::sign()
- * @see Crypt_GPG::signFile()
- */
- const SIGN_MODE_CLEAR = 2;
-
- /**
- * Signing mode for creating a detached signature. When using detached
- * signatures, only the signature data is returned. The original message
- * text may be distributed separately from the signature data. This is
- * useful for miltipart/signed email messages as per
- * {@link http://www.ietf.org/rfc/rfc3156.txt RFC 3156}.
- *
- * @see Crypt_GPG::sign()
- * @see Crypt_GPG::signFile()
- */
- const SIGN_MODE_DETACHED = 3;
-
- // }}}
- // {{{ class constants for fingerprint formats
-
- /**
- * No formatting is performed.
- *
- * Example: C3BC615AD9C766E5A85C1F2716D27458B1BBA1C4
- *
- * @see Crypt_GPG::getFingerprint()
- */
- const FORMAT_NONE = 1;
-
- /**
- * Fingerprint is formatted in the format used by the GnuPG gpg command's
- * default output.
- *
- * Example: C3BC 615A D9C7 66E5 A85C 1F27 16D2 7458 B1BB A1C4
- *
- * @see Crypt_GPG::getFingerprint()
- */
- const FORMAT_CANONICAL = 2;
-
- /**
- * Fingerprint is formatted in the format used when displaying X.509
- * certificates
- *
- * Example: C3:BC:61:5A:D9:C7:66:E5:A8:5C:1F:27:16:D2:74:58:B1:BB:A1:C4
- *
- * @see Crypt_GPG::getFingerprint()
- */
- const FORMAT_X509 = 3;
-
- // }}}
- // {{{ class constants for boolean options
-
- /**
- * Use to specify ASCII armored mode for returned data
- */
- const ARMOR_ASCII = true;
-
- /**
- * Use to specify binary mode for returned data
- */
- const ARMOR_BINARY = false;
-
- /**
- * Use to specify that line breaks in signed text should be normalized
- */
- const TEXT_NORMALIZED = true;
-
- /**
- * Use to specify that line breaks in signed text should not be normalized
- */
- const TEXT_RAW = false;
-
- // }}}
- // {{{ protected class properties
-
- /**
- * Engine used to control the GPG subprocess
- *
- * @var Crypt_GPG_Engine
- *
- * @see Crypt_GPG::setEngine()
- */
- protected $engine = null;
-
- /**
- * Keys used to encrypt
- *
- * The array is of the form:
- * <code>
- * array(
- * $key_id => array(
- * 'fingerprint' => $fingerprint,
- * 'passphrase' => null
- * )
- * );
- * </code>
- *
- * @var array
- * @see Crypt_GPG::addEncryptKey()
- * @see Crypt_GPG::clearEncryptKeys()
- */
- protected $encryptKeys = array();
-
- /**
- * Keys used to decrypt
- *
- * The array is of the form:
- * <code>
- * array(
- * $key_id => array(
- * 'fingerprint' => $fingerprint,
- * 'passphrase' => $passphrase
- * )
- * );
- * </code>
- *
- * @var array
- * @see Crypt_GPG::addSignKey()
- * @see Crypt_GPG::clearSignKeys()
- */
- protected $signKeys = array();
-
- /**
- * Keys used to sign
- *
- * The array is of the form:
- * <code>
- * array(
- * $key_id => array(
- * 'fingerprint' => $fingerprint,
- * 'passphrase' => $passphrase
- * )
- * );
- * </code>
- *
- * @var array
- * @see Crypt_GPG::addDecryptKey()
- * @see Crypt_GPG::clearDecryptKeys()
- */
- protected $decryptKeys = array();
-
- // }}}
- // {{{ importKey()
-
- /**
- * Imports a public or private key into the keyring
- *
- * Keys may be removed from the keyring using
- * {@link Crypt_GPG::deletePublicKey()} or
- * {@link Crypt_GPG::deletePrivateKey()}.
- *
- * @param string $data the key data to be imported.
- *
- * @return array an associative array containing the following elements:
- * - <kbd>fingerprint</kbd> - the fingerprint of the
- * imported key,
- * - <kbd>public_imported</kbd> - the number of public
- * keys imported,
- * - <kbd>public_unchanged</kbd> - the number of unchanged
- * public keys,
- * - <kbd>private_imported</kbd> - the number of private
- * keys imported,
- * - <kbd>private_unchanged</kbd> - the number of unchanged
- * private keys.
- *
- * @throws Crypt_GPG_NoDataException if the key data is missing or if the
- * data is is not valid key data.
- *
- * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
- * Use the <kbd>debug</kbd> option and file a bug report if these
- * exceptions occur.
- */
- public function importKey($data)
- {
- return $this->_importKey($data, false);
- }
-
- // }}}
- // {{{ importKeyFile()
-
- /**
- * Imports a public or private key file into the keyring
- *
- * Keys may be removed from the keyring using
- * {@link Crypt_GPG::deletePublicKey()} or
- * {@link Crypt_GPG::deletePrivateKey()}.
- *
- * @param string $filename the key file to be imported.
- *
- * @return array an associative array containing the following elements:
- * - <kbd>fingerprint</kbd> - the fingerprint of the
- * imported key,
- * - <kbd>public_imported</kbd> - the number of public
- * keys imported,
- * - <kbd>public_unchanged</kbd> - the number of unchanged
- * public keys,
- * - <kbd>private_imported</kbd> - the number of private
- * keys imported,
- * - <kbd>private_unchanged</kbd> - the number of unchanged
- * private keys.
- * private keys.
- *
- * @throws Crypt_GPG_NoDataException if the key data is missing or if the
- * data is is not valid key data.
- *
- * @throws Crypt_GPG_FileException if the key file is not readable.
- *
- * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
- * Use the <kbd>debug</kbd> option and file a bug report if these
- * exceptions occur.
- */
- public function importKeyFile($filename)
- {
- return $this->_importKey($filename, true);
- }
-
- // }}}
- // {{{ exportPublicKey()
-
- /**
- * Exports a public key from the keyring
- *
- * The exported key remains on the keyring. To delete the public key, use
- * {@link Crypt_GPG::deletePublicKey()}.
- *
- * If more than one key fingerprint is available for the specified
- * <kbd>$keyId</kbd> (for example, if you use a non-unique uid) only the
- * first public key is exported.
- *
- * @param string $keyId either the full uid of the public key, the email
- * part of the uid of the public key or the key id of
- * the public key. For example,
- * "Test User (example) <test@example.com>",
- * "test@example.com" or a hexadecimal string.
- * @param boolean $armor optional. If true, ASCII armored data is returned;
- * otherwise, binary data is returned. Defaults to
- * true.
- *
- * @return string the public key data.
- *
- * @throws Crypt_GPG_KeyNotFoundException if a public key with the given
- * <kbd>$keyId</kbd> is not found.
- *
- * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
- * Use the <kbd>debug</kbd> option and file a bug report if these
- * exceptions occur.
- */
- public function exportPublicKey($keyId, $armor = true)
- {
- $fingerprint = $this->getFingerprint($keyId);
-
- if ($fingerprint === null) {
- throw new Crypt_GPG_KeyNotFoundException(
- 'Public key not found: ' . $keyId,
- self::ERROR_KEY_NOT_FOUND,
- $keyId
- );
- }
-
- $keyData = '';
- $operation = '--export ' . escapeshellarg($fingerprint);
- $arguments = ($armor) ? array('--armor') : array();
-
- $this->engine->reset();
- $this->engine->setOutput($keyData);
- $this->engine->setOperation($operation, $arguments);
- $this->engine->run();
-
- $code = $this->engine->getErrorCode();
-
- if ($code !== self::ERROR_NONE) {
- throw new Crypt_GPG_Exception(
- 'Unknown error exporting public key. Please use the ' .
- '\'debug\' option when creating the Crypt_GPG object, and ' .
- 'file a bug report at ' . self::BUG_URI,
- $code
- );
- }
-
- return $keyData;
- }
-
- // }}}
- // {{{ deletePublicKey()
-
- /**
- * Deletes a public key from the keyring
- *
- * If more than one key fingerprint is available for the specified
- * <kbd>$keyId</kbd> (for example, if you use a non-unique uid) only the
- * first public key is deleted.
- *
- * The private key must be deleted first or an exception will be thrown.
- * See {@link Crypt_GPG::deletePrivateKey()}.
- *
- * @param string $keyId either the full uid of the public key, the email
- * part of the uid of the public key or the key id of
- * the public key. For example,
- * "Test User (example) <test@example.com>",
- * "test@example.com" or a hexadecimal string.
- *
- * @return void
- *
- * @throws Crypt_GPG_KeyNotFoundException if a public key with the given
- * <kbd>$keyId</kbd> is not found.
- *
- * @throws Crypt_GPG_DeletePrivateKeyException if the specified public key
- * has an associated private key on the keyring. The private key
- * must be deleted first.
- *
- * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
- * Use the <kbd>debug</kbd> option and file a bug report if these
- * exceptions occur.
- */
- public function deletePublicKey($keyId)
- {
- $fingerprint = $this->getFingerprint($keyId);
-
- if ($fingerprint === null) {
- throw new Crypt_GPG_KeyNotFoundException(
- 'Public key not found: ' . $keyId,
- self::ERROR_KEY_NOT_FOUND,
- $keyId
- );
- }
-
- $operation = '--delete-key ' . escapeshellarg($fingerprint);
- $arguments = array(
- '--batch',
- '--yes'
- );
-
- $this->engine->reset();
- $this->engine->setOperation($operation, $arguments);
- $this->engine->run();
-
- $code = $this->engine->getErrorCode();
-
- switch ($code) {
- case self::ERROR_NONE:
- break;
- case self::ERROR_DELETE_PRIVATE_KEY:
- throw new Crypt_GPG_DeletePrivateKeyException(
- 'Private key must be deleted before public key can be ' .
- 'deleted.',
- $code,
- $keyId
- );
- default:
- throw new Crypt_GPG_Exception(
- 'Unknown error deleting public key. Please use the ' .
- '\'debug\' option when creating the Crypt_GPG object, and ' .
- 'file a bug report at ' . self::BUG_URI,
- $code
- );
- }
- }
-
- // }}}
- // {{{ deletePrivateKey()
-
- /**
- * Deletes a private key from the keyring
- *
- * If more than one key fingerprint is available for the specified
- * <kbd>$keyId</kbd> (for example, if you use a non-unique uid) only the
- * first private key is deleted.
- *
- * Calls GPG with the <kbd>--delete-secret-key</kbd> command.
- *
- * @param string $keyId either the full uid of the private key, the email
- * part of the uid of the private key or the key id of
- * the private key. For example,
- * "Test User (example) <test@example.com>",
- * "test@example.com" or a hexadecimal string.
- *
- * @return void
- *
- * @throws Crypt_GPG_KeyNotFoundException if a private key with the given
- * <kbd>$keyId</kbd> is not found.
- *
- * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
- * Use the <kbd>debug</kbd> option and file a bug report if these
- * exceptions occur.
- */
- public function deletePrivateKey($keyId)
- {
- $fingerprint = $this->getFingerprint($keyId);
-
- if ($fingerprint === null) {
- throw new Crypt_GPG_KeyNotFoundException(
- 'Private key not found: ' . $keyId,
- self::ERROR_KEY_NOT_FOUND,
- $keyId
- );
- }
-
- $operation = '--delete-secret-key ' . escapeshellarg($fingerprint);
- $arguments = array(
- '--batch',
- '--yes'
- );
-
- $this->engine->reset();
- $this->engine->setOperation($operation, $arguments);
- $this->engine->run();
-
- $code = $this->engine->getErrorCode();
-
- switch ($code) {
- case self::ERROR_NONE:
- break;
- case self::ERROR_KEY_NOT_FOUND:
- throw new Crypt_GPG_KeyNotFoundException(
- 'Private key not found: ' . $keyId,
- $code,
- $keyId
- );
- default:
- throw new Crypt_GPG_Exception(
- 'Unknown error deleting private key. Please use the ' .
- '\'debug\' option when creating the Crypt_GPG object, and ' .
- 'file a bug report at ' . self::BUG_URI,
- $code
- );
- }
- }
-
- // }}}
- // {{{ getKeys()
-
- /**
- * Gets the available keys in the keyring
- *
- * Calls GPG with the <kbd>--list-keys</kbd> command and grabs keys. See
- * the first section of <b>doc/DETAILS</b> in the
- * {@link http://www.gnupg.org/download/ GPG package} for a detailed
- * description of how the GPG command output is parsed.
- *
- * @param string $keyId optional. Only keys with that match the specified
- * pattern are returned. The pattern may be part of
- * a user id, a key id or a key fingerprint. If not
- * specified, all keys are returned.
- *
- * @return array an array of {@link Crypt_GPG_Key} objects. If no keys
- * match the specified <kbd>$keyId</kbd> an empty array is
- * returned.
- *
- * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
- * Use the <kbd>debug</kbd> option and file a bug report if these
- * exceptions occur.
- *
- * @see Crypt_GPG_Key
- */
- public function getKeys($keyId = '')
- {
- return parent::_getKeys($keyId);
- }
-
- // }}}
- // {{{ getFingerprint()
-
- /**
- * Gets a key fingerprint from the keyring
- *
- * If more than one key fingerprint is available (for example, if you use
- * a non-unique user id) only the first key fingerprint is returned.
- *
- * Calls the GPG <kbd>--list-keys</kbd> command with the
- * <kbd>--with-fingerprint</kbd> option to retrieve a public key
- * fingerprint.
- *
- * @param string $keyId either the full user id of the key, the email
- * part of the user id of the key, or the key id of
- * the key. For example,
- * "Test User (example) <test@example.com>",
- * "test@example.com" or a hexadecimal string.
- * @param integer $format optional. How the fingerprint should be formatted.
- * Use {@link Crypt_GPG::FORMAT_X509} for X.509
- * certificate format,
- * {@link Crypt_GPG::FORMAT_CANONICAL} for the format
- * used by GnuPG output and
- * {@link Crypt_GPG::FORMAT_NONE} for no formatting.
- * Defaults to <code>Crypt_GPG::FORMAT_NONE</code>.
- *
- * @return string the fingerprint of the key, or null if no fingerprint
- * is found for the given <kbd>$keyId</kbd>.
- *
- * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
- * Use the <kbd>debug</kbd> option and file a bug report if these
- * exceptions occur.
- */
- public function getFingerprint($keyId, $format = self::FORMAT_NONE)
- {
- $output = '';
- $operation = '--list-keys ' . escapeshellarg($keyId);
- $arguments = array(
- '--with-colons',
- '--with-fingerprint'
- );
-
- $this->engine->reset();
- $this->engine->setOutput($output);
- $this->engine->setOperation($operation, $arguments);
- $this->engine->run();
-
- $code = $this->engine->getErrorCode();
-
- switch ($code) {
- case self::ERROR_NONE:
- case self::ERROR_KEY_NOT_FOUND:
- // ignore not found key errors
- break;
- default:
- throw new Crypt_GPG_Exception(
- 'Unknown error getting key fingerprint. Please use the ' .
- '\'debug\' option when creating the Crypt_GPG object, and ' .
- 'file a bug report at ' . self::BUG_URI,
- $code
- );
- }
-
- $fingerprint = null;
-
- $lines = explode(PHP_EOL, $output);
- foreach ($lines as $line) {
- if (substr($line, 0, 3) == 'fpr') {
- $lineExp = explode(':', $line);
- $fingerprint = $lineExp[9];
-
- switch ($format) {
- case self::FORMAT_CANONICAL:
- $fingerprintExp = str_split($fingerprint, 4);
- $format = '%s %s %s %s %s %s %s %s %s %s';
- $fingerprint = vsprintf($format, $fingerprintExp);
- break;
-
- case self::FORMAT_X509:
- $fingerprintExp = str_split($fingerprint, 2);
- $fingerprint = implode(':', $fingerprintExp);
- break;
- }
-
- break;
- }
- }
-
- return $fingerprint;
- }
-
- // }}}
- // {{{ encrypt()
-
- /**
- * Encrypts string data
- *
- * Data is ASCII armored by default but may optionally be returned as
- * binary.
- *
- * @param string $data the data to be encrypted.
- * @param boolean $armor optional. If true, ASCII armored data is returned;
- * otherwise, binary data is returned. Defaults to
- * true.
- *
- * @return string the encrypted data.
- *
- * @throws Crypt_GPG_KeyNotFoundException if no encryption key is specified.
- * See {@link Crypt_GPG::addEncryptKey()}.
- *
- * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
- * Use the <kbd>debug</kbd> option and file a bug report if these
- * exceptions occur.
- *
- * @sensitive $data
- */
- public function encrypt($data, $armor = self::ARMOR_ASCII)
- {
- return $this->_encrypt($data, false, null, $armor);
- }
-
- // }}}
- // {{{ encryptFile()
-
- /**
- * Encrypts a file
- *
- * Encrypted data is ASCII armored by default but may optionally be saved
- * as binary.
- *
- * @param string $filename the filename of the file to encrypt.
- * @param string $encryptedFile optional. The filename of the file in
- * which to store the encrypted data. If null
- * or unspecified, the encrypted data is
- * returned as a string.
- * @param boolean $armor optional. If true, ASCII armored data is
- * returned; otherwise, binary data is
- * returned. Defaults to true.
- *
- * @return void|string if the <kbd>$encryptedFile</kbd> parameter is null,
- * a string containing the encrypted data is returned.
- *
- * @throws Crypt_GPG_KeyNotFoundException if no encryption key is specified.
- * See {@link Crypt_GPG::addEncryptKey()}.
- *
- * @throws Crypt_GPG_FileException if the output file is not writeable or
- * if the input file is not readable.
- *
- * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
- * Use the <kbd>debug</kbd> option and file a bug report if these
- * exceptions occur.
- */
- public function encryptFile(
- $filename,
- $encryptedFile = null,
- $armor = self::ARMOR_ASCII
- ) {
- return $this->_encrypt($filename, true, $encryptedFile, $armor);
- }
-
- // }}}
- // {{{ encryptAndSign()
-
- /**
- * Encrypts and signs data
- *
- * Data is encrypted and signed in a single pass.
- *
- * NOTE: Until GnuPG version 1.4.10, it was not possible to verify
- * encrypted-signed data without decrypting it at the same time. If you try
- * to use {@link Crypt_GPG::verify()} method on encrypted-signed data with
- * earlier GnuPG versions, you will get an error. Please use
- * {@link Crypt_GPG::decryptAndVerify()} to verify encrypted-signed data.
- *
- * @param string $data the data to be encrypted and signed.
- * @param boolean $armor optional. If true, ASCII armored data is returned;
- * otherwise, binary data is returned. Defaults to
- * true.
- *
- * @return string the encrypted signed data.
- *
- * @throws Crypt_GPG_KeyNotFoundException if no encryption key is specified
- * or if no signing key is specified. See
- * {@link Crypt_GPG::addEncryptKey()} and
- * {@link Crypt_GPG::addSignKey()}.
- *
- * @throws Crypt_GPG_BadPassphraseException if a specified passphrase is
- * incorrect or if a required passphrase is not specified.
- *
- * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
- * Use the <kbd>debug</kbd> option and file a bug report if these
- * exceptions occur.
- *
- * @see Crypt_GPG::decryptAndVerify()
- */
- public function encryptAndSign($data, $armor = self::ARMOR_ASCII)
- {
- return $this->_encryptAndSign($data, false, null, $armor);
- }
-
- // }}}
- // {{{ encryptAndSignFile()
-
- /**
- * Encrypts and signs a file
- *
- * The file is encrypted and signed in a single pass.
- *
- * NOTE: Until GnuPG version 1.4.10, it was not possible to verify
- * encrypted-signed files without decrypting them at the same time. If you
- * try to use {@link Crypt_GPG::verify()} method on encrypted-signed files
- * with earlier GnuPG versions, you will get an error. Please use
- * {@link Crypt_GPG::decryptAndVerifyFile()} to verify encrypted-signed
- * files.
- *
- * @param string $filename the name of the file containing the data to
- * be encrypted and signed.
- * @param string $signedFile optional. The name of the file in which the
- * encrypted, signed data should be stored. If
- * null or unspecified, the encrypted, signed
- * data is returned as a string.
- * @param boolean $armor optional. If true, ASCII armored data is
- * returned; otherwise, binary data is returned.
- * Defaults to true.
- *
- * @return void|string if the <kbd>$signedFile</kbd> parameter is null, a
- * string containing the encrypted, signed data is
- * returned.
- *
- * @throws Crypt_GPG_KeyNotFoundException if no encryption key is specified
- * or if no signing key is specified. See
- * {@link Crypt_GPG::addEncryptKey()} and
- * {@link Crypt_GPG::addSignKey()}.
- *
- * @throws Crypt_GPG_BadPassphraseException if a specified passphrase is
- * incorrect or if a required passphrase is not specified.
- *
- * @throws Crypt_GPG_FileException if the output file is not writeable or
- * if the input file is not readable.
- *
- * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
- * Use the <kbd>debug</kbd> option and file a bug report if these
- * exceptions occur.
- *
- * @see Crypt_GPG::decryptAndVerifyFile()
- */
- public function encryptAndSignFile(
- $filename,
- $signedFile = null,
- $armor = self::ARMOR_ASCII
- ) {
- return $this->_encryptAndSign($filename, true, $signedFile, $armor);
- }
-
- // }}}
- // {{{ decrypt()
-
- /**
- * Decrypts string data
- *
- * This method assumes the required private key is available in the keyring
- * and throws an exception if the private key is not available. To add a
- * private key to the keyring, use the {@link Crypt_GPG::importKey()} or
- * {@link Crypt_GPG::importKeyFile()} methods.
- *
- * @param string $encryptedData the data to be decrypted.
- *
- * @return string the decrypted data.
- *
- * @throws Crypt_GPG_KeyNotFoundException if the private key needed to
- * decrypt the data is not in the user's keyring.
- *
- * @throws Crypt_GPG_NoDataException if specified data does not contain
- * GPG encrypted data.
- *
- * @throws Crypt_GPG_BadPassphraseException if a required passphrase is
- * incorrect or if a required passphrase is not specified. See
- * {@link Crypt_GPG::addDecryptKey()}.
- *
- * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
- * Use the <kbd>debug</kbd> option and file a bug report if these
- * exceptions occur.
- */
- public function decrypt($encryptedData)
- {
- return $this->_decrypt($encryptedData, false, null);
- }
-
- // }}}
- // {{{ decryptFile()
-
- /**
- * Decrypts a file
- *
- * This method assumes the required private key is available in the keyring
- * and throws an exception if the private key is not available. To add a
- * private key to the keyring, use the {@link Crypt_GPG::importKey()} or
- * {@link Crypt_GPG::importKeyFile()} methods.
- *
- * @param string $encryptedFile the name of the encrypted file data to
- * decrypt.
- * @param string $decryptedFile optional. The name of the file to which the
- * decrypted data should be written. If null
- * or unspecified, the decrypted data is
- * returned as a string.
- *
- * @return void|string if the <kbd>$decryptedFile</kbd> parameter is null,
- * a string containing the decrypted data is returned.
- *
- * @throws Crypt_GPG_KeyNotFoundException if the private key needed to
- * decrypt the data is not in the user's keyring.
- *
- * @throws Crypt_GPG_NoDataException if specified data does not contain
- * GPG encrypted data.
- *
- * @throws Crypt_GPG_BadPassphraseException if a required passphrase is
- * incorrect or if a required passphrase is not specified. See
- * {@link Crypt_GPG::addDecryptKey()}.
- *
- * @throws Crypt_GPG_FileException if the output file is not writeable or
- * if the input file is not readable.
- *
- * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
- * Use the <kbd>debug</kbd> option and file a bug report if these
- * exceptions occur.
- */
- public function decryptFile($encryptedFile, $decryptedFile = null)
- {
- return $this->_decrypt($encryptedFile, true, $decryptedFile);
- }
-
- // }}}
- // {{{ decryptAndVerify()
-
- /**
- * Decrypts and verifies string data
- *
- * This method assumes the required private key is available in the keyring
- * and throws an exception if the private key is not available. To add a
- * private key to the keyring, use the {@link Crypt_GPG::importKey()} or
- * {@link Crypt_GPG::importKeyFile()} methods.
- *
- * @param string $encryptedData the encrypted, signed data to be decrypted
- * and verified.
- *
- * @return array two element array. The array has an element 'data'
- * containing the decrypted data and an element
- * 'signatures' containing an array of
- * {@link Crypt_GPG_Signature} objects for the signed data.
- *
- * @throws Crypt_GPG_KeyNotFoundException if the private key needed to
- * decrypt the data is not in the user's keyring.
- *
- * @throws Crypt_GPG_NoDataException if specified data does not contain
- * GPG encrypted data.
- *
- * @throws Crypt_GPG_BadPassphraseException if a required passphrase is
- * incorrect or if a required passphrase is not specified. See
- * {@link Crypt_GPG::addDecryptKey()}.
- *
- * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
- * Use the <kbd>debug</kbd> option and file a bug report if these
- * exceptions occur.
- */
- public function decryptAndVerify($encryptedData)
- {
- return $this->_decryptAndVerify($encryptedData, false, null);
- }
-
- // }}}
- // {{{ decryptAndVerifyFile()
-
- /**
- * Decrypts and verifies a signed, encrypted file
- *
- * This method assumes the required private key is available in the keyring
- * and throws an exception if the private key is not available. To add a
- * private key to the keyring, use the {@link Crypt_GPG::importKey()} or
- * {@link Crypt_GPG::importKeyFile()} methods.
- *
- * @param string $encryptedFile the name of the signed, encrypted file to
- * to decrypt and verify.
- * @param string $decryptedFile optional. The name of the file to which the
- * decrypted data should be written. If null
- * or unspecified, the decrypted data is
- * returned in the results array.
- *
- * @return array two element array. The array has an element 'data'
- * containing the decrypted data and an element
- * 'signatures' containing an array of
- * {@link Crypt_GPG_Signature} objects for the signed data.
- * If the decrypted data is written to a file, the 'data'
- * element is null.
- *
- * @throws Crypt_GPG_KeyNotFoundException if the private key needed to
- * decrypt the data is not in the user's keyring.
- *
- * @throws Crypt_GPG_NoDataException if specified data does not contain
- * GPG encrypted data.
- *
- * @throws Crypt_GPG_BadPassphraseException if a required passphrase is
- * incorrect or if a required passphrase is not specified. See
- * {@link Crypt_GPG::addDecryptKey()}.
- *
- * @throws Crypt_GPG_FileException if the output file is not writeable or
- * if the input file is not readable.
- *
- * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
- * Use the <kbd>debug</kbd> option and file a bug report if these
- * exceptions occur.
- */
- public function decryptAndVerifyFile($encryptedFile, $decryptedFile = null)
- {
- return $this->_decryptAndVerify($encryptedFile, true, $decryptedFile);
- }
-
- // }}}
- // {{{ sign()
-
- /**
- * Signs data
- *
- * Data may be signed using any one of the three available signing modes:
- * - {@link Crypt_GPG::SIGN_MODE_NORMAL}
- * - {@link Crypt_GPG::SIGN_MODE_CLEAR}
- * - {@link Crypt_GPG::SIGN_MODE_DETACHED}
- *
- * @param string $data the data to be signed.
- * @param boolean $mode optional. The data signing mode to use. Should
- * be one of {@link Crypt_GPG::SIGN_MODE_NORMAL},
- * {@link Crypt_GPG::SIGN_MODE_CLEAR} or
- * {@link Crypt_GPG::SIGN_MODE_DETACHED}. If not
- * specified, defaults to
- * <kbd>Crypt_GPG::SIGN_MODE_NORMAL</kbd>.
- * @param boolean $armor optional. If true, ASCII armored data is
- * returned; otherwise, binary data is returned.
- * Defaults to true. This has no effect if the
- * mode <kbd>Crypt_GPG::SIGN_MODE_CLEAR</kbd> is
- * used.
- * @param boolean $textmode optional. If true, line-breaks in signed data
- * are normalized. Use this option when signing
- * e-mail, or for greater compatibility between
- * systems with different line-break formats.
- * Defaults to false. This has no effect if the
- * mode <kbd>Crypt_GPG::SIGN_MODE_CLEAR</kbd> is
- * used as clear-signing always uses textmode.
- *
- * @return string the signed data, or the signature data if a detached
- * signature is requested.
- *
- * @throws Crypt_GPG_KeyNotFoundException if no signing key is specified.
- * See {@link Crypt_GPG::addSignKey()}.
- *
- * @throws Crypt_GPG_BadPassphraseException if a specified passphrase is
- * incorrect or if a required passphrase is not specified.
- *
- * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
- * Use the <kbd>debug</kbd> option and file a bug report if these
- * exceptions occur.
- */
- public function sign(
- $data,
- $mode = self::SIGN_MODE_NORMAL,
- $armor = self::ARMOR_ASCII,
- $textmode = self::TEXT_RAW
- ) {
- return $this->_sign($data, false, null, $mode, $armor, $textmode);
- }
-
- // }}}
- // {{{ signFile()
-
- /**
- * Signs a file
- *
- * The file may be signed using any one of the three available signing
- * modes:
- * - {@link Crypt_GPG::SIGN_MODE_NORMAL}
- * - {@link Crypt_GPG::SIGN_MODE_CLEAR}
- * - {@link Crypt_GPG::SIGN_MODE_DETACHED}
- *
- * @param string $filename the name of the file containing the data to
- * be signed.
- * @param string $signedFile optional. The name of the file in which the
- * signed data should be stored. If null or
- * unspecified, the signed data is returned as a
- * string.
- * @param boolean $mode optional. The data signing mode to use. Should
- * be one of {@link Crypt_GPG::SIGN_MODE_NORMAL},
- * {@link Crypt_GPG::SIGN_MODE_CLEAR} or
- * {@link Crypt_GPG::SIGN_MODE_DETACHED}. If not
- * specified, defaults to
- * <kbd>Crypt_GPG::SIGN_MODE_NORMAL</kbd>.
- * @param boolean $armor optional. If true, ASCII armored data is
- * returned; otherwise, binary data is returned.
- * Defaults to true. This has no effect if the
- * mode <kbd>Crypt_GPG::SIGN_MODE_CLEAR</kbd> is
- * used.
- * @param boolean $textmode optional. If true, line-breaks in signed data
- * are normalized. Use this option when signing
- * e-mail, or for greater compatibility between
- * systems with different line-break formats.
- * Defaults to false. This has no effect if the
- * mode <kbd>Crypt_GPG::SIGN_MODE_CLEAR</kbd> is
- * used as clear-signing always uses textmode.
- *
- * @return void|string if the <kbd>$signedFile</kbd> parameter is null, a
- * string containing the signed data (or the signature
- * data if a detached signature is requested) is
- * returned.
- *
- * @throws Crypt_GPG_KeyNotFoundException if no signing key is specified.
- * See {@link Crypt_GPG::addSignKey()}.
- *
- * @throws Crypt_GPG_BadPassphraseException if a specified passphrase is
- * incorrect or if a required passphrase is not specified.
- *
- * @throws Crypt_GPG_FileException if the output file is not writeable or
- * if the input file is not readable.
- *
- * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
- * Use the <kbd>debug</kbd> option and file a bug report if these
- * exceptions occur.
- */
- public function signFile(
- $filename,
- $signedFile = null,
- $mode = self::SIGN_MODE_NORMAL,
- $armor = self::ARMOR_ASCII,
- $textmode = self::TEXT_RAW
- ) {
- return $this->_sign(
- $filename,
- true,
- $signedFile,
- $mode,
- $armor,
- $textmode
- );
- }
-
- // }}}
- // {{{ verify()
-
- /**
- * Verifies signed data
- *
- * The {@link Crypt_GPG::decrypt()} method may be used to get the original
- * message if the signed data is not clearsigned and does not use a
- * detached signature.
- *
- * @param string $signedData the signed data to be verified.
- * @param string $signature optional. If verifying data signed using a
- * detached signature, this must be the detached
- * signature data. The data that was signed is
- * specified in <kbd>$signedData</kbd>.
- *
- * @return array an array of {@link Crypt_GPG_Signature} objects for the
- * signed data. For each signature that is valid, the
- * {@link Crypt_GPG_Signature::isValid()} will return true.
- *
- * @throws Crypt_GPG_NoDataException if the provided data is not signed
- * data.
- *
- * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
- * Use the <kbd>debug</kbd> option and file a bug report if these
- * exceptions occur.
- *
- * @see Crypt_GPG_Signature
- */
- public function verify($signedData, $signature = '')
- {
- return $this->_verify($signedData, false, $signature);
- }
-
- // }}}
- // {{{ verifyFile()
-
- /**
- * Verifies a signed file
- *
- * The {@link Crypt_GPG::decryptFile()} method may be used to get the
- * original message if the signed data is not clearsigned and does not use
- * a detached signature.
- *
- * @param string $filename the signed file to be verified.
- * @param string $signature optional. If verifying a file signed using a
- * detached signature, this must be the detached
- * signature data. The file that was signed is
- * specified in <kbd>$filename</kbd>.
- *
- * @return array an array of {@link Crypt_GPG_Signature} objects for the
- * signed data. For each signature that is valid, the
- * {@link Crypt_GPG_Signature::isValid()} will return true.
- *
- * @throws Crypt_GPG_NoDataException if the provided data is not signed
- * data.
- *
- * @throws Crypt_GPG_FileException if the input file is not readable.
- *
- * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
- * Use the <kbd>debug</kbd> option and file a bug report if these
- * exceptions occur.
- *
- * @see Crypt_GPG_Signature
- */
- public function verifyFile($filename, $signature = '')
- {
- return $this->_verify($filename, true, $signature);
- }
-
- // }}}
- // {{{ addDecryptKey()
-
- /**
- * Adds a key to use for decryption
- *
- * @param mixed $key the key to use. This may be a key identifier,
- * user id, fingerprint, {@link Crypt_GPG_Key} or
- * {@link Crypt_GPG_SubKey}. The key must be able
- * to encrypt.
- * @param string $passphrase optional. The passphrase of the key required
- * for decryption.
- *
- * @return Crypt_GPG the current object, for fluent interface.
- *
- * @see Crypt_GPG::decrypt()
- * @see Crypt_GPG::decryptFile()
- * @see Crypt_GPG::clearDecryptKeys()
- * @see Crypt_GPG::_addKey()
- * @see Crypt_GPG_DecryptStatusHandler
- *
- * @sensitive $passphrase
- */
- public function addDecryptKey($key, $passphrase = null)
- {
- $this->_addKey($this->decryptKeys, true, false, $key, $passphrase);
- return $this;
- }
-
- // }}}
- // {{{ addEncryptKey()
-
- /**
- * Adds a key to use for encryption
- *
- * @param mixed $key the key to use. This may be a key identifier, user id
- * user id, fingerprint, {@link Crypt_GPG_Key} or
- * {@link Crypt_GPG_SubKey}. The key must be able to
- * encrypt.
- *
- * @return Crypt_GPG the current object, for fluent interface.
- *
- * @see Crypt_GPG::encrypt()
- * @see Crypt_GPG::encryptFile()
- * @see Crypt_GPG::clearEncryptKeys()
- * @see Crypt_GPG::_addKey()
- */
- public function addEncryptKey($key)
- {
- $this->_addKey($this->encryptKeys, true, false, $key);
- return $this;
- }
-
- // }}}
- // {{{ addSignKey()
-
- /**
- * Adds a key to use for signing
- *
- * @param mixed $key the key to use. This may be a key identifier,
- * user id, fingerprint, {@link Crypt_GPG_Key} or
- * {@link Crypt_GPG_SubKey}. The key must be able
- * to sign.
- * @param string $passphrase optional. The passphrase of the key required
- * for signing.
- *
- * @return Crypt_GPG the current object, for fluent interface.
- *
- * @see Crypt_GPG::sign()
- * @see Crypt_GPG::signFile()
- * @see Crypt_GPG::clearSignKeys()
- * @see Crypt_GPG::handleSignStatus()
- * @see Crypt_GPG::_addKey()
- *
- * @sensitive $passphrase
- */
- public function addSignKey($key, $passphrase = null)
- {
- $this->_addKey($this->signKeys, false, true, $key, $passphrase);
- return $this;
- }
-
- // }}}
- // {{{ clearDecryptKeys()
-
- /**
- * Clears all decryption keys
- *
- * @return Crypt_GPG the current object, for fluent interface.
- *
- * @see Crypt_GPG::decrypt()
- * @see Crypt_GPG::addDecryptKey()
- */
- public function clearDecryptKeys()
- {
- $this->decryptKeys = array();
- return $this;
- }
-
- // }}}
- // {{{ clearEncryptKeys()
-
- /**
- * Clears all encryption keys
- *
- * @return Crypt_GPG the current object, for fluent interface.
- *
- * @see Crypt_GPG::encrypt()
- * @see Crypt_GPG::addEncryptKey()
- */
- public function clearEncryptKeys()
- {
- $this->encryptKeys = array();
- return $this;
- }
-
- // }}}
- // {{{ clearSignKeys()
-
- /**
- * Clears all signing keys
- *
- * @return Crypt_GPG the current object, for fluent interface.
- *
- * @see Crypt_GPG::sign()
- * @see Crypt_GPG::addSignKey()
- */
- public function clearSignKeys()
- {
- $this->signKeys = array();
- return $this;
- }
-
- // }}}
- // {{{ handleSignStatus()
-
- /**
- * Handles the status output from GPG for the sign operation
- *
- * This method is responsible for sending the passphrase commands when
- * required by the {@link Crypt_GPG::sign()} method. See <b>doc/DETAILS</b>
- * in the {@link http://www.gnupg.org/download/ GPG distribution} for
- * detailed information on GPG's status output.
- *
- * @param string $line the status line to handle.
- *
- * @return void
- *
- * @see Crypt_GPG::sign()
- */
- public function handleSignStatus($line)
- {
- $tokens = explode(' ', $line);
- switch ($tokens[0]) {
- case 'NEED_PASSPHRASE':
- $subKeyId = $tokens[1];
- if (array_key_exists($subKeyId, $this->signKeys)) {
- $passphrase = $this->signKeys[$subKeyId]['passphrase'];
- $this->engine->sendCommand($passphrase);
- } else {
- $this->engine->sendCommand('');
- }
- break;
- }
- }
-
- // }}}
- // {{{ handleImportKeyStatus()
-
- /**
- * Handles the status output from GPG for the import operation
- *
- * This method is responsible for building the result array that is
- * returned from the {@link Crypt_GPG::importKey()} method. See
- * <b>doc/DETAILS</b> in the
- * {@link http://www.gnupg.org/download/ GPG distribution} for detailed
- * information on GPG's status output.
- *
- * @param string $line the status line to handle.
- * @param array &$result the current result array being processed.
- *
- * @return void
- *
- * @see Crypt_GPG::importKey()
- * @see Crypt_GPG::importKeyFile()
- * @see Crypt_GPG_Engine::addStatusHandler()
- */
- public function handleImportKeyStatus($line, array &$result)
- {
- $tokens = explode(' ', $line);
- switch ($tokens[0]) {
- case 'IMPORT_OK':
- $result['fingerprint'] = $tokens[2];
- break;
-
- case 'IMPORT_RES':
- $result['public_imported'] = intval($tokens[3]);
- $result['public_unchanged'] = intval($tokens[5]);
- $result['private_imported'] = intval($tokens[11]);
- $result['private_unchanged'] = intval($tokens[12]);
- break;
- }
- }
-
- // }}}
- // {{{ _addKey()
-
- /**
- * Adds a key to one of the internal key arrays
- *
- * This handles resolving full key objects from the provided
- * <kbd>$key</kbd> value.
- *
- * @param array &$array the array to which the key should be added.
- * @param boolean $encrypt whether or not the key must be able to
- * encrypt.
- * @param boolean $sign whether or not the key must be able to sign.
- * @param mixed $key the key to add. This may be a key identifier,
- * user id, fingerprint, {@link Crypt_GPG_Key} or
- * {@link Crypt_GPG_SubKey}.
- * @param string $passphrase optional. The passphrase associated with the
- * key.
- *
- * @return void
- *
- * @sensitive $passphrase
- */
- protected function _addKey(array &$array, $encrypt, $sign, $key,
- $passphrase = null
- ) {
- $subKeys = array();
-
- if (is_scalar($key)) {
- $keys = $this->getKeys($key);
- if (count($keys) == 0) {
- throw new Crypt_GPG_KeyNotFoundException(
- 'Key "' . $key . '" not found.',
- 0,
- $key
- );
- }
- $key = $keys[0];
- }
-
- if ($key instanceof Crypt_GPG_Key) {
- if ($encrypt && !$key->canEncrypt()) {
- throw new InvalidArgumentException(
- 'Key "' . $key . '" cannot encrypt.'
- );
- }
-
- if ($sign && !$key->canSign()) {
- throw new InvalidArgumentException(
- 'Key "' . $key . '" cannot sign.'
- );
- }
-
- foreach ($key->getSubKeys() as $subKey) {
- $canEncrypt = $subKey->canEncrypt();
- $canSign = $subKey->canSign();
- if ( ($encrypt && $sign && $canEncrypt && $canSign)
- || ($encrypt && !$sign && $canEncrypt)
- || (!$encrypt && $sign && $canSign)
- ) {
- // We add all subkeys that meet the requirements because we
- // were not told which subkey is required.
- $subKeys[] = $subKey;
- }
- }
- } elseif ($key instanceof Crypt_GPG_SubKey) {
- $subKeys[] = $key;
- }
-
- if (count($subKeys) === 0) {
- throw new InvalidArgumentException(
- 'Key "' . $key . '" is not in a recognized format.'
- );
- }
-
- foreach ($subKeys as $subKey) {
- if ($encrypt && !$subKey->canEncrypt()) {
- throw new InvalidArgumentException(
- 'Key "' . $key . '" cannot encrypt.'
- );
- }
-
- if ($sign && !$subKey->canSign()) {
- throw new InvalidArgumentException(
- 'Key "' . $key . '" cannot sign.'
- );
- }
-
- $array[$subKey->getId()] = array(
- 'fingerprint' => $subKey->getFingerprint(),
- 'passphrase' => $passphrase
- );
- }
- }
-
- // }}}
- // {{{ _setPinEntryEnv()
-
- /**
- * Sets the PINENTRY_USER_DATA environment variable with the currently
- * added keys and passphrases
- *
- * Keys and pasphrases are stored as an indexed array of associative
- * arrays that is JSON encoded to a flat string.
- *
- * For GnuPG 2.x this is how passphrases are passed. For GnuPG 1.x the
- * environment variable is set but not used.
- *
- * @param array $keys the internal key array to use.
- *
- * @return void
- */
- protected function _setPinEntryEnv(array $keys)
- {
- $envKeys = array();
- foreach ($keys as $id => $key) {
- $envKeys[] = array(
- 'keyId' => $id,
- 'fingerprint' => $key['fingerprint'],
- 'passphrase' => $key['passphrase']
- );
- }
- $envKeys = json_encode($envKeys);
- $_ENV['PINENTRY_USER_DATA'] = $envKeys;
- }
-
- // }}}
- // {{{ _importKey()
-
- /**
- * Imports a public or private key into the keyring
- *
- * @param string $key the key to be imported.
- * @param boolean $isFile whether or not the input is a filename.
- *
- * @return array an associative array containing the following elements:
- * - <kbd>fingerprint</kbd> - the fingerprint of the
- * imported key,
- * - <kbd>public_imported</kbd> - the number of public
- * keys imported,
- * - <kbd>public_unchanged</kbd> - the number of unchanged
- * public keys,
- * - <kbd>private_imported</kbd> - the number of private
- * keys imported,
- * - <kbd>private_unchanged</kbd> - the number of unchanged
- * private keys.
- *
- * @throws Crypt_GPG_NoDataException if the key data is missing or if the
- * data is is not valid key data.
- *
- * @throws Crypt_GPG_FileException if the key file is not readable.
- *
- * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
- * Use the <kbd>debug</kbd> option and file a bug report if these
- * exceptions occur.
- */
- protected function _importKey($key, $isFile)
- {
- $result = array();
-
- if ($isFile) {
- $input = @fopen($key, 'rb');
- if ($input === false) {
- throw new Crypt_GPG_FileException(
- 'Could not open key file "' . $key . '" for importing.',
- 0,
- $key
- );
- }
- } else {
- $input = strval($key);
- if ($input == '') {
- throw new Crypt_GPG_NoDataException(
- 'No valid GPG key data found.',
- self::ERROR_NO_DATA
- );
- }
- }
-
- $arguments = array();
- $version = $this->engine->getVersion();
-
- if ( version_compare($version, '1.0.5', 'ge')
- && version_compare($version, '1.0.7', 'lt')
- ) {
- $arguments[] = '--allow-secret-key-import';
- }
-
- $this->engine->reset();
- $this->engine->addStatusHandler(
- array($this, 'handleImportKeyStatus'),
- array(&$result)
- );
-
- $this->engine->setOperation('--import', $arguments);
- $this->engine->setInput($input);
- $this->engine->run();
-
- if ($isFile) {
- fclose($input);
- }
-
- $code = $this->engine->getErrorCode();
-
- switch ($code) {
- case self::ERROR_DUPLICATE_KEY:
- case self::ERROR_NONE:
- // ignore duplicate key import errors
- break;
- case self::ERROR_NO_DATA:
- throw new Crypt_GPG_NoDataException(
- 'No valid GPG key data found.',
- $code
- );
- default:
- throw new Crypt_GPG_Exception(
- 'Unknown error importing GPG key. Please use the \'debug\' ' .
- 'option when creating the Crypt_GPG object, and file a bug ' .
- 'report at ' . self::BUG_URI,
- $code
- );
- }
-
- return $result;
- }
-
- // }}}
- // {{{ _encrypt()
-
- /**
- * Encrypts data
- *
- * @param string $data the data to encrypt.
- * @param boolean $isFile whether or not the data is a filename.
- * @param string $outputFile the filename of the file in which to store
- * the encrypted data. If null, the encrypted
- * data is returned as a string.
- * @param boolean $armor if true, ASCII armored data is returned;
- * otherwise, binary data is returned.
- *
- * @return void|string if the <kbd>$outputFile</kbd> parameter is null, a
- * string containing the encrypted data is returned.
- *
- * @throws Crypt_GPG_KeyNotFoundException if no encryption key is specified.
- * See {@link Crypt_GPG::addEncryptKey()}.
- *
- * @throws Crypt_GPG_FileException if the output file is not writeable or
- * if the input file is not readable.
- *
- * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
- * Use the <kbd>debug</kbd> option and file a bug report if these
- * exceptions occur.
- */
- protected function _encrypt($data, $isFile, $outputFile, $armor)
- {
- if (count($this->encryptKeys) === 0) {
- throw new Crypt_GPG_KeyNotFoundException(
- 'No encryption keys specified.'
- );
- }
-
- if ($isFile) {
- $input = @fopen($data, 'rb');
- if ($input === false) {
- throw new Crypt_GPG_FileException(
- 'Could not open input file "' . $data .
- '" for encryption.',
- 0,
- $data
- );
- }
- } else {
- $input = strval($data);
- }
-
- if ($outputFile === null) {
- $output = '';
- } else {
- $output = @fopen($outputFile, 'wb');
- if ($output === false) {
- if ($isFile) {
- fclose($input);
- }
- throw new Crypt_GPG_FileException(
- 'Could not open output file "' . $outputFile .
- '" for storing encrypted data.',
- 0,
- $outputFile
- );
- }
- }
-
- $arguments = ($armor) ? array('--armor') : array();
- foreach ($this->encryptKeys as $key) {
- $arguments[] = '--recipient ' . escapeshellarg($key['fingerprint']);
- }
-
- $this->engine->reset();
- $this->engine->setInput($input);
- $this->engine->setOutput($output);
- $this->engine->setOperation('--encrypt', $arguments);
- $this->engine->run();
-
- if ($isFile) {
- fclose($input);
- }
-
- if ($outputFile !== null) {
- fclose($output);
- }
-
- $code = $this->engine->getErrorCode();
-
- if ($code !== self::ERROR_NONE) {
- throw new Crypt_GPG_Exception(
- 'Unknown error encrypting data. Please use the \'debug\' ' .
- 'option when creating the Crypt_GPG object, and file a bug ' .
- 'report at ' . self::BUG_URI,
- $code
- );
- }
-
- if ($outputFile === null) {
- return $output;
- }
- }
-
- // }}}
- // {{{ _decrypt()
-
- /**
- * Decrypts data
- *
- * @param string $data the data to be decrypted.
- * @param boolean $isFile whether or not the data is a filename.
- * @param string $outputFile the name of the file to which the decrypted
- * data should be written. If null, the decrypted
- * data is returned as a string.
- *
- * @return void|string if the <kbd>$outputFile</kbd> parameter is null, a
- * string containing the decrypted data is returned.
- *
- * @throws Crypt_GPG_KeyNotFoundException if the private key needed to
- * decrypt the data is not in the user's keyring.
- *
- * @throws Crypt_GPG_NoDataException if specified data does not contain
- * GPG encrypted data.
- *
- * @throws Crypt_GPG_BadPassphraseException if a required passphrase is
- * incorrect or if a required passphrase is not specified. See
- * {@link Crypt_GPG::addDecryptKey()}.
- *
- * @throws Crypt_GPG_FileException if the output file is not writeable or
- * if the input file is not readable.
- *
- * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
- * Use the <kbd>debug</kbd> option and file a bug report if these
- * exceptions occur.
- */
- protected function _decrypt($data, $isFile, $outputFile)
- {
- if ($isFile) {
- $input = @fopen($data, 'rb');
- if ($input === false) {
- throw new Crypt_GPG_FileException(
- 'Could not open input file "' . $data .
- '" for decryption.',
- 0,
- $data
- );
- }
- } else {
- $input = strval($data);
- if ($input == '') {
- throw new Crypt_GPG_NoDataException(
- 'Cannot decrypt data. No PGP encrypted data was found in '.
- 'the provided data.',
- self::ERROR_NO_DATA
- );
- }
- }
-
- if ($outputFile === null) {
- $output = '';
- } else {
- $output = @fopen($outputFile, 'wb');
- if ($output === false) {
- if ($isFile) {
- fclose($input);
- }
- throw new Crypt_GPG_FileException(
- 'Could not open output file "' . $outputFile .
- '" for storing decrypted data.',
- 0,
- $outputFile
- );
- }
- }
-
- $handler = new Crypt_GPG_DecryptStatusHandler(
- $this->engine,
- $this->decryptKeys
- );
-
- // If using gpg-agent, set the decrypt pins used by the pinentry
- $this->_setPinEntryEnv($this->decryptKeys);
-
- $this->engine->reset();
- $this->engine->addStatusHandler(array($handler, 'handle'));
- $this->engine->setOperation('--decrypt');
- $this->engine->setInput($input);
- $this->engine->setOutput($output);
- $this->engine->run();
-
- if ($isFile) {
- fclose($input);
- }
-
- if ($outputFile !== null) {
- fclose($output);
- }
-
- // if there was any problem decrypting the data, the handler will
- // deal with it here.
- $handler->throwException();
-
- if ($outputFile === null) {
- return $output;
- }
- }
-
- // }}}
- // {{{ _sign()
-
- /**
- * Signs data
- *
- * @param string $data the data to be signed.
- * @param boolean $isFile whether or not the data is a filename.
- * @param string $outputFile the name of the file in which the signed data
- * should be stored. If null, the signed data is
- * returned as a string.
- * @param boolean $mode the data signing mode to use. Should be one of
- * {@link Crypt_GPG::SIGN_MODE_NORMAL},
- * {@link Crypt_GPG::SIGN_MODE_CLEAR} or
- * {@link Crypt_GPG::SIGN_MODE_DETACHED}.
- * @param boolean $armor if true, ASCII armored data is returned;
- * otherwise, binary data is returned. This has
- * no effect if the mode
- * <kbd>Crypt_GPG::SIGN_MODE_CLEAR</kbd> is
- * used.
- * @param boolean $textmode if true, line-breaks in signed data be
- * normalized. Use this option when signing
- * e-mail, or for greater compatibility between
- * systems with different line-break formats.
- * Defaults to false. This has no effect if the
- * mode <kbd>Crypt_GPG::SIGN_MODE_CLEAR</kbd> is
- * used as clear-signing always uses textmode.
- *
- * @return void|string if the <kbd>$outputFile</kbd> parameter is null, a
- * string containing the signed data (or the signature
- * data if a detached signature is requested) is
- * returned.
- *
- * @throws Crypt_GPG_KeyNotFoundException if no signing key is specified.
- * See {@link Crypt_GPG::addSignKey()}.
- *
- * @throws Crypt_GPG_BadPassphraseException if a specified passphrase is
- * incorrect or if a required passphrase is not specified.
- *
- * @throws Crypt_GPG_FileException if the output file is not writeable or
- * if the input file is not readable.
- *
- * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
- * Use the <kbd>debug</kbd> option and file a bug report if these
- * exceptions occur.
- */
- protected function _sign($data, $isFile, $outputFile, $mode, $armor,
- $textmode
- ) {
- if (count($this->signKeys) === 0) {
- throw new Crypt_GPG_KeyNotFoundException(
- 'No signing keys specified.'
- );
- }
-
- if ($isFile) {
- $input = @fopen($data, 'rb');
- if ($input === false) {
- throw new Crypt_GPG_FileException(
- 'Could not open input file "' . $data . '" for signing.',
- 0,
- $data
- );
- }
- } else {
- $input = strval($data);
- }
-
- if ($outputFile === null) {
- $output = '';
- } else {
- $output = @fopen($outputFile, 'wb');
- if ($output === false) {
- if ($isFile) {
- fclose($input);
- }
- throw new Crypt_GPG_FileException(
- 'Could not open output file "' . $outputFile .
- '" for storing signed data.',
- 0,
- $outputFile
- );
- }
- }
-
- switch ($mode) {
- case self::SIGN_MODE_DETACHED:
- $operation = '--detach-sign';
- break;
- case self::SIGN_MODE_CLEAR:
- $operation = '--clearsign';
- break;
- case self::SIGN_MODE_NORMAL:
- default:
- $operation = '--sign';
- break;
- }
-
- $arguments = array();
-
- if ($armor) {
- $arguments[] = '--armor';
- }
- if ($textmode) {
- $arguments[] = '--textmode';
- }
-
- foreach ($this->signKeys as $key) {
- $arguments[] = '--local-user ' .
- escapeshellarg($key['fingerprint']);
- }
-
- // If using gpg-agent, set the sign pins used by the pinentry
- $this->_setPinEntryEnv($this->signKeys);
-
- $this->engine->reset();
- $this->engine->addStatusHandler(array($this, 'handleSignStatus'));
- $this->engine->setInput($input);
- $this->engine->setOutput($output);
- $this->engine->setOperation($operation, $arguments);
- $this->engine->run();
-
- if ($isFile) {
- fclose($input);
- }
-
- if ($outputFile !== null) {
- fclose($output);
- }
-
- $code = $this->engine->getErrorCode();
-
- switch ($code) {
- case self::ERROR_NONE:
- break;
- case self::ERROR_KEY_NOT_FOUND:
- throw new Crypt_GPG_KeyNotFoundException(
- 'Cannot sign data. Private key not found. Import the '.
- 'private key before trying to sign data.',
- $code,
- $this->engine->getErrorKeyId()
- );
- case self::ERROR_BAD_PASSPHRASE:
- throw new Crypt_GPG_BadPassphraseException(
- 'Cannot sign data. Incorrect passphrase provided.',
- $code
- );
- case self::ERROR_MISSING_PASSPHRASE:
- throw new Crypt_GPG_BadPassphraseException(
- 'Cannot sign data. No passphrase provided.',
- $code
- );
- default:
- throw new Crypt_GPG_Exception(
- 'Unknown error signing data. Please use the \'debug\' option ' .
- 'when creating the Crypt_GPG object, and file a bug report ' .
- 'at ' . self::BUG_URI,
- $code
- );
- }
-
- if ($outputFile === null) {
- return $output;
- }
- }
-
- // }}}
- // {{{ _encryptAndSign()
-
- /**
- * Encrypts and signs data
- *
- * @param string $data the data to be encrypted and signed.
- * @param boolean $isFile whether or not the data is a filename.
- * @param string $outputFile the name of the file in which the encrypted,
- * signed data should be stored. If null, the
- * encrypted, signed data is returned as a
- * string.
- * @param boolean $armor if true, ASCII armored data is returned;
- * otherwise, binary data is returned.
- *
- * @return void|string if the <kbd>$outputFile</kbd> parameter is null, a
- * string containing the encrypted, signed data is
- * returned.
- *
- * @throws Crypt_GPG_KeyNotFoundException if no encryption key is specified
- * or if no signing key is specified. See
- * {@link Crypt_GPG::addEncryptKey()} and
- * {@link Crypt_GPG::addSignKey()}.
- *
- * @throws Crypt_GPG_BadPassphraseException if a specified passphrase is
- * incorrect or if a required passphrase is not specified.
- *
- * @throws Crypt_GPG_FileException if the output file is not writeable or
- * if the input file is not readable.
- *
- * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
- * Use the <kbd>debug</kbd> option and file a bug report if these
- * exceptions occur.
- */
- protected function _encryptAndSign($data, $isFile, $outputFile, $armor)
- {
- if (count($this->signKeys) === 0) {
- throw new Crypt_GPG_KeyNotFoundException(
- 'No signing keys specified.'
- );
- }
-
- if (count($this->encryptKeys) === 0) {
- throw new Crypt_GPG_KeyNotFoundException(
- 'No encryption keys specified.'
- );
- }
-
-
- if ($isFile) {
- $input = @fopen($data, 'rb');
- if ($input === false) {
- throw new Crypt_GPG_FileException(
- 'Could not open input file "' . $data .
- '" for encrypting and signing.',
- 0,
- $data
- );
- }
- } else {
- $input = strval($data);
- }
-
- if ($outputFile === null) {
- $output = '';
- } else {
- $output = @fopen($outputFile, 'wb');
- if ($output === false) {
- if ($isFile) {
- fclose($input);
- }
- throw new Crypt_GPG_FileException(
- 'Could not open output file "' . $outputFile .
- '" for storing encrypted, signed data.',
- 0,
- $outputFile
- );
- }
- }
-
- $arguments = ($armor) ? array('--armor') : array();
-
- foreach ($this->signKeys as $key) {
- $arguments[] = '--local-user ' .
- escapeshellarg($key['fingerprint']);
- }
-
- // If using gpg-agent, set the sign pins used by the pinentry
- $this->_setPinEntryEnv($this->signKeys);
-
- foreach ($this->encryptKeys as $key) {
- $arguments[] = '--recipient ' . escapeshellarg($key['fingerprint']);
- }
-
- $this->engine->reset();
- $this->engine->addStatusHandler(array($this, 'handleSignStatus'));
- $this->engine->setInput($input);
- $this->engine->setOutput($output);
- $this->engine->setOperation('--encrypt --sign', $arguments);
- $this->engine->run();
-
- if ($isFile) {
- fclose($input);
- }
-
- if ($outputFile !== null) {
- fclose($output);
- }
-
- $code = $this->engine->getErrorCode();
-
- switch ($code) {
- case self::ERROR_NONE:
- break;
- case self::ERROR_KEY_NOT_FOUND:
- throw new Crypt_GPG_KeyNotFoundException(
- 'Cannot sign encrypted data. Private key not found. Import '.
- 'the private key before trying to sign the encrypted data.',
- $code,
- $this->engine->getErrorKeyId()
- );
- case self::ERROR_BAD_PASSPHRASE:
- throw new Crypt_GPG_BadPassphraseException(
- 'Cannot sign encrypted data. Incorrect passphrase provided.',
- $code
- );
- case self::ERROR_MISSING_PASSPHRASE:
- throw new Crypt_GPG_BadPassphraseException(
- 'Cannot sign encrypted data. No passphrase provided.',
- $code
- );
- default:
- throw new Crypt_GPG_Exception(
- 'Unknown error encrypting and signing data. Please use the ' .
- '\'debug\' option when creating the Crypt_GPG object, and ' .
- 'file a bug report at ' . self::BUG_URI,
- $code
- );
- }
-
- if ($outputFile === null) {
- return $output;
- }
- }
-
- // }}}
- // {{{ _verify()
-
- /**
- * Verifies data
- *
- * @param string $data the signed data to be verified.
- * @param boolean $isFile whether or not the data is a filename.
- * @param string $signature if verifying a file signed using a detached
- * signature, this must be the detached signature
- * data. Otherwise, specify ''.
- *
- * @return array an array of {@link Crypt_GPG_Signature} objects for the
- * signed data.
- *
- * @throws Crypt_GPG_NoDataException if the provided data is not signed
- * data.
- *
- * @throws Crypt_GPG_FileException if the input file is not readable.
- *
- * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
- * Use the <kbd>debug</kbd> option and file a bug report if these
- * exceptions occur.
- *
- * @see Crypt_GPG_Signature
- */
- protected function _verify($data, $isFile, $signature)
- {
- if ($signature == '') {
- $operation = '--verify';
- $arguments = array();
- } else {
- // Signed data goes in FD_MESSAGE, detached signature data goes in
- // FD_INPUT.
- $operation = '--verify - "-&' . Crypt_GPG_Engine::FD_MESSAGE. '"';
- $arguments = array('--enable-special-filenames');
- }
-
- $handler = new Crypt_GPG_VerifyStatusHandler();
-
- if ($isFile) {
- $input = @fopen($data, 'rb');
- if ($input === false) {
- throw new Crypt_GPG_FileException(
- 'Could not open input file "' . $data . '" for verifying.',
- 0,
- $data
- );
- }
- } else {
- $input = strval($data);
- if ($input == '') {
- throw new Crypt_GPG_NoDataException(
- 'No valid signature data found.',
- self::ERROR_NO_DATA
- );
- }
- }
-
- $this->engine->reset();
- $this->engine->addStatusHandler(array($handler, 'handle'));
-
- if ($signature == '') {
- // signed or clearsigned data
- $this->engine->setInput($input);
- } else {
- // detached signature
- $this->engine->setInput($signature);
- $this->engine->setMessage($input);
- }
-
- $this->engine->setOperation($operation, $arguments);
- $this->engine->run();
-
- if ($isFile) {
- fclose($input);
- }
-
- $code = $this->engine->getErrorCode();
-
- switch ($code) {
- case self::ERROR_NONE:
- case self::ERROR_BAD_SIGNATURE:
- break;
- case self::ERROR_NO_DATA:
- throw new Crypt_GPG_NoDataException(
- 'No valid signature data found.',
- $code
- );
- case self::ERROR_KEY_NOT_FOUND:
- throw new Crypt_GPG_KeyNotFoundException(
- 'Public key required for data verification not in keyring.',
- $code,
- $this->engine->getErrorKeyId()
- );
- default:
- throw new Crypt_GPG_Exception(
- 'Unknown error validating signature details. Please use the ' .
- '\'debug\' option when creating the Crypt_GPG object, and ' .
- 'file a bug report at ' . self::BUG_URI,
- $code
- );
- }
-
- return $handler->getSignatures();
- }
-
- // }}}
- // {{{ _decryptAndVerify()
-
- /**
- * Decrypts and verifies encrypted, signed data
- *
- * @param string $data the encrypted signed data to be decrypted and
- * verified.
- * @param boolean $isFile whether or not the data is a filename.
- * @param string $outputFile the name of the file to which the decrypted
- * data should be written. If null, the decrypted
- * data is returned in the results array.
- *
- * @return array two element array. The array has an element 'data'
- * containing the decrypted data and an element
- * 'signatures' containing an array of
- * {@link Crypt_GPG_Signature} objects for the signed data.
- * If the decrypted data is written to a file, the 'data'
- * element is null.
- *
- * @throws Crypt_GPG_KeyNotFoundException if the private key needed to
- * decrypt the data is not in the user's keyring or it the public
- * key needed for verification is not in the user's keyring.
- *
- * @throws Crypt_GPG_NoDataException if specified data does not contain
- * GPG signed, encrypted data.
- *
- * @throws Crypt_GPG_BadPassphraseException if a required passphrase is
- * incorrect or if a required passphrase is not specified. See
- * {@link Crypt_GPG::addDecryptKey()}.
- *
- * @throws Crypt_GPG_FileException if the output file is not writeable or
- * if the input file is not readable.
- *
- * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
- * Use the <kbd>debug</kbd> option and file a bug report if these
- * exceptions occur.
- *
- * @see Crypt_GPG_Signature
- */
- protected function _decryptAndVerify($data, $isFile, $outputFile)
- {
- if ($isFile) {
- $input = @fopen($data, 'rb');
- if ($input === false) {
- throw new Crypt_GPG_FileException(
- 'Could not open input file "' . $data .
- '" for decrypting and verifying.',
- 0,
- $data
- );
- }
- } else {
- $input = strval($data);
- if ($input == '') {
- throw new Crypt_GPG_NoDataException(
- 'No valid encrypted signed data found.',
- self::ERROR_NO_DATA
- );
- }
- }
-
- if ($outputFile === null) {
- $output = '';
- } else {
- $output = @fopen($outputFile, 'wb');
- if ($output === false) {
- if ($isFile) {
- fclose($input);
- }
- throw new Crypt_GPG_FileException(
- 'Could not open output file "' . $outputFile .
- '" for storing decrypted data.',
- 0,
- $outputFile
- );
- }
- }
-
- $verifyHandler = new Crypt_GPG_VerifyStatusHandler();
-
- $decryptHandler = new Crypt_GPG_DecryptStatusHandler(
- $this->engine,
- $this->decryptKeys
- );
-
- // If using gpg-agent, set the decrypt pins used by the pinentry
- $this->_setPinEntryEnv($this->decryptKeys);
-
- $this->engine->reset();
- $this->engine->addStatusHandler(array($verifyHandler, 'handle'));
- $this->engine->addStatusHandler(array($decryptHandler, 'handle'));
- $this->engine->setInput($input);
- $this->engine->setOutput($output);
- $this->engine->setOperation('--decrypt');
- $this->engine->run();
-
- if ($isFile) {
- fclose($input);
- }
-
- if ($outputFile !== null) {
- fclose($output);
- }
-
- $return = array(
- 'data' => null,
- 'signatures' => $verifyHandler->getSignatures()
- );
-
- // if there was any problem decrypting the data, the handler will
- // deal with it here.
- try {
- $decryptHandler->throwException();
- } catch (Exception $e) {
- if ($e instanceof Crypt_GPG_KeyNotFoundException) {
- throw new Crypt_GPG_KeyNotFoundException(
- 'Public key required for data verification not in ',
- 'the keyring. Either no suitable private decryption key ' .
- 'is in the keyring or the public key required for data ' .
- 'verification is not in the keyring. Import a suitable ' .
- 'key before trying to decrypt and verify this data.',
- self::ERROR_KEY_NOT_FOUND,
- $this->engine->getErrorKeyId()
- );
- }
-
- if ($e instanceof Crypt_GPG_NoDataException) {
- throw new Crypt_GPG_NoDataException(
- 'Cannot decrypt and verify data. No PGP encrypted data ' .
- 'was found in the provided data.',
- self::ERROR_NO_DATA
- );
- }
-
- throw $e;
- }
-
- if ($outputFile === null) {
- $return['data'] = $output;
- }
-
- return $return;
- }
-
- // }}}
-}
-
-// }}}
-
-?>
diff --git a/program/lib/Crypt/GPG/ByteUtils.php b/program/lib/Crypt/GPG/ByteUtils.php
deleted file mode 100644
index 342905471..000000000
--- a/program/lib/Crypt/GPG/ByteUtils.php
+++ /dev/null
@@ -1,105 +0,0 @@
-<?php
-
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * A class for performing byte-wise string operations
- *
- * GPG I/O streams are managed using bytes rather than characters.
- *
- * PHP version 5
- *
- * LICENSE:
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of the
- * License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2013 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version CVS: $Id$
- * @link http://pear.php.net/package/Crypt_GPG
- */
-
-// {{{ class Crypt_GPG_ByteUtils
-
-/**
- * A class for performing byte-wise string operations
- *
- * GPG I/O streams are managed using bytes rather than characters. This class
- * requires the mbstring extension to be available.
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2013 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link http://pear.php.net/package/Crypt_GPG
- * @link http://php.net/mbstring
- */
-class Crypt_GPG_ByteUtils
-{
- // {{{ strlen()
-
- /**
- * Gets the length of a string in bytes
- *
- * This is used for stream-based communication with the GPG subprocess.
- *
- * @param string $string the string for which to get the length.
- *
- * @return integer the length of the string in bytes.
- */
- public static function strlen($string)
- {
- return mb_strlen($string, '8bit');
- }
-
- // }}}
- // {{{ substr()
-
- /**
- * Gets the substring of a string in bytes
- *
- * This is used for stream-based communication with the GPG subprocess.
- *
- * @param string $string the input string.
- * @param integer $start the starting point at which to get the substring.
- * @param integer $length optional. The length of the substring.
- *
- * @return string the extracted part of the string. Unlike the default PHP
- * <kbd>substr()</kbd> function, the returned value is
- * always a string and never false.
- */
- public static function substr($string, $start, $length = null)
- {
- if ($length === null) {
- return mb_substr(
- $string,
- $start,
- self::strlen($string) - $start, '8bit'
- );
- }
-
- return mb_substr($string, $start, $length, '8bit');
- }
-
- // }}}
-}
-
-// }}}
-
-?>
diff --git a/program/lib/Crypt/GPG/DecryptStatusHandler.php b/program/lib/Crypt/GPG/DecryptStatusHandler.php
deleted file mode 100644
index 67c0dd74b..000000000
--- a/program/lib/Crypt/GPG/DecryptStatusHandler.php
+++ /dev/null
@@ -1,344 +0,0 @@
-<?php
-
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * Crypt_GPG is a package to use GnuPG from PHP
- *
- * This file contains an object that handles GnuPG's status output for the
- * decrypt operation.
- *
- * PHP version 5
- *
- * LICENSE:
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of the
- * License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2008-2013 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version CVS: $Id$
- * @link http://pear.php.net/package/Crypt_GPG
- * @link http://www.gnupg.org/
- */
-
-/**
- * Crypt_GPG base class
- */
-require_once 'Crypt/GPG.php';
-
-/**
- * Crypt_GPG exception classes
- */
-require_once 'Crypt/GPG/Exceptions.php';
-
-
-/**
- * Status line handler for the decrypt operation
- *
- * This class is used internally by Crypt_GPG and does not need be used
- * directly. See the {@link Crypt_GPG} class for end-user API.
- *
- * This class is responsible for sending the passphrase commands when required
- * by the {@link Crypt_GPG::decrypt()} method. See <b>doc/DETAILS</b> in the
- * {@link http://www.gnupg.org/download/ GnuPG distribution} for detailed
- * information on GnuPG's status output for the decrypt operation.
- *
- * This class is also responsible for parsing error status and throwing a
- * meaningful exception in the event that decryption fails.
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2008-2013 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link http://pear.php.net/package/Crypt_GPG
- * @link http://www.gnupg.org/
- */
-class Crypt_GPG_DecryptStatusHandler
-{
- // {{{ protected properties
-
- /**
- * Keys used to decrypt
- *
- * The array is of the form:
- * <code>
- * array(
- * $key_id => array(
- * 'fingerprint' => $fingerprint,
- * 'passphrase' => $passphrase
- * )
- * );
- * </code>
- *
- * @var array
- */
- protected $keys = array();
-
- /**
- * Engine used to which passphrases are passed
- *
- * @var Crypt_GPG_Engine
- */
- protected $engine = null;
-
- /**
- * The id of the current sub-key used for decryption
- *
- * @var string
- */
- protected $currentSubKey = '';
-
- /**
- * Whether or not decryption succeeded
- *
- * If the message is only signed (compressed) and not encrypted, this is
- * always true. If the message is encrypted, this flag is set to false
- * until we know the decryption succeeded.
- *
- * @var boolean
- */
- protected $decryptionOkay = true;
-
- /**
- * Whether or not there was no data for decryption
- *
- * @var boolean
- */
- protected $noData = false;
-
- /**
- * Keys for which the passhprase is missing
- *
- * This contains primary user ids indexed by sub-key id and is used to
- * create helpful exception messages.
- *
- * @var array
- */
- protected $missingPassphrases = array();
-
- /**
- * Keys for which the passhprase is incorrect
- *
- * This contains primary user ids indexed by sub-key id and is used to
- * create helpful exception messages.
- *
- * @var array
- */
- protected $badPassphrases = array();
-
- /**
- * Keys that can be used to decrypt the data but are missing from the
- * keychain
- *
- * This is an array with both the key and value being the sub-key id of
- * the missing keys.
- *
- * @var array
- */
- protected $missingKeys = array();
-
- // }}}
- // {{{ __construct()
-
- /**
- * Creates a new decryption status handler
- *
- * @param Crypt_GPG_Engine $engine the GPG engine to which passphrases are
- * passed.
- * @param array $keys the decryption keys to use.
- */
- public function __construct(Crypt_GPG_Engine $engine, array $keys)
- {
- $this->engine = $engine;
- $this->keys = $keys;
- }
-
- // }}}
- // {{{ handle()
-
- /**
- * Handles a status line
- *
- * @param string $line the status line to handle.
- *
- * @return void
- */
- public function handle($line)
- {
- $tokens = explode(' ', $line);
- switch ($tokens[0]) {
- case 'ENC_TO':
- // Now we know the message is encrypted. Set flag to check if
- // decryption succeeded.
- $this->decryptionOkay = false;
-
- // this is the new key message
- $this->currentSubKeyId = $tokens[1];
- break;
-
- case 'NEED_PASSPHRASE':
- // send passphrase to the GPG engine
- $subKeyId = $tokens[1];
- if (array_key_exists($subKeyId, $this->keys)) {
- $passphrase = $this->keys[$subKeyId]['passphrase'];
- $this->engine->sendCommand($passphrase);
- } else {
- $this->engine->sendCommand('');
- }
- break;
-
- case 'USERID_HINT':
- // remember the user id for pretty exception messages
- $this->badPassphrases[$tokens[1]]
- = implode(' ', array_splice($tokens, 2));
-
- break;
-
- case 'GOOD_PASSPHRASE':
- // if we got a good passphrase, remove the key from the list of
- // bad passphrases.
- unset($this->badPassphrases[$this->currentSubKeyId]);
- break;
-
- case 'MISSING_PASSPHRASE':
- $this->missingPassphrases[$this->currentSubKeyId]
- = $this->currentSubKeyId;
-
- break;
-
- case 'NO_SECKEY':
- // note: this message is also received if there are multiple
- // recipients and a previous key had a correct passphrase.
- $this->missingKeys[$tokens[1]] = $tokens[1];
- break;
-
- case 'NODATA':
- $this->noData = true;
- break;
-
- case 'DECRYPTION_OKAY':
- // If the message is encrypted, this is the all-clear signal.
- $this->decryptionOkay = true;
- break;
- }
- }
-
- // }}}
- // {{{ throwException()
-
- /**
- * Takes the final status of the decrypt operation and throws an
- * appropriate exception
- *
- * If decryption was successful, no exception is thrown.
- *
- * @return void
- *
- * @throws Crypt_GPG_KeyNotFoundException if the private key needed to
- * decrypt the data is not in the user's keyring.
- *
- * @throws Crypt_GPG_NoDataException if specified data does not contain
- * GPG encrypted data.
- *
- * @throws Crypt_GPG_BadPassphraseException if a required passphrase is
- * incorrect or if a required passphrase is not specified. See
- * {@link Crypt_GPG::addDecryptKey()}.
- *
- * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
- * Use the <i>debug</i> option and file a bug report if these
- * exceptions occur.
- */
- public function throwException()
- {
- $code = Crypt_GPG::ERROR_NONE;
-
- if (!$this->decryptionOkay) {
- if (count($this->badPassphrases) > 0) {
- $code = Crypt_GPG::ERROR_BAD_PASSPHRASE;
- } elseif (count($this->missingKeys) > 0) {
- $code = Crypt_GPG::ERROR_KEY_NOT_FOUND;
- } else {
- $code = Crypt_GPG::ERROR_UNKNOWN;
- }
- } elseif ($this->noData) {
- $code = Crypt_GPG::ERROR_NO_DATA;
- }
-
- switch ($code) {
- case Crypt_GPG::ERROR_NONE:
- break;
-
- case Crypt_GPG::ERROR_KEY_NOT_FOUND:
- if (count($this->missingKeys) > 0) {
- $keyId = reset($this->missingKeys);
- } else {
- $keyId = '';
- }
- throw new Crypt_GPG_KeyNotFoundException(
- 'Cannot decrypt data. No suitable private key is in the ' .
- 'keyring. Import a suitable private key before trying to ' .
- 'decrypt this data.',
- $code,
- $keyId
- );
- case Crypt_GPG::ERROR_BAD_PASSPHRASE:
- $badPassphrases = array_diff_key(
- $this->badPassphrases,
- $this->missingPassphrases
- );
-
- $missingPassphrases = array_intersect_key(
- $this->badPassphrases,
- $this->missingPassphrases
- );
-
- $message = 'Cannot decrypt data.';
- if (count($badPassphrases) > 0) {
- $message = ' Incorrect passphrase provided for keys: "' .
- implode('", "', $badPassphrases) . '".';
- }
- if (count($missingPassphrases) > 0) {
- $message = ' No passphrase provided for keys: "' .
- implode('", "', $badPassphrases) . '".';
- }
-
- throw new Crypt_GPG_BadPassphraseException(
- $message,
- $code,
- $badPassphrases,
- $missingPassphrases
- );
- case Crypt_GPG::ERROR_NO_DATA:
- throw new Crypt_GPG_NoDataException(
- 'Cannot decrypt data. No PGP encrypted data was found in '.
- 'the provided data.',
- $code
- );
- default:
- throw new Crypt_GPG_Exception(
- 'Unknown error decrypting data.',
- $code
- );
- }
- }
-
- // }}}
-}
-
-?>
diff --git a/program/lib/Crypt/GPG/Engine.php b/program/lib/Crypt/GPG/Engine.php
deleted file mode 100644
index 601541443..000000000
--- a/program/lib/Crypt/GPG/Engine.php
+++ /dev/null
@@ -1,2006 +0,0 @@
-<?php
-
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * Crypt_GPG is a package to use GPG from PHP
- *
- * This file contains an engine that handles GPG subprocess control and I/O.
- * PHP's process manipulation functions are used to handle the GPG subprocess.
- *
- * PHP version 5
- *
- * LICENSE:
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of the
- * License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Nathan Fredrickson <nathan@silverorange.com>
- * @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2005-2013 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version CVS: $Id$
- * @link http://pear.php.net/package/Crypt_GPG
- * @link http://www.gnupg.org/
- */
-
-/**
- * Crypt_GPG base class.
- */
-require_once 'Crypt/GPG.php';
-
-/**
- * GPG exception classes.
- */
-require_once 'Crypt/GPG/Exceptions.php';
-
-/**
- * Byte string operations.
- */
-require_once 'Crypt/GPG/ByteUtils.php';
-
-/**
- * Process control methods.
- */
-require_once 'Crypt/GPG/ProcessControl.php';
-
-/**
- * Standard PEAR exception is used if GPG binary is not found.
- */
-require_once 'PEAR/Exception.php';
-
-// {{{ class Crypt_GPG_Engine
-
-/**
- * Native PHP Crypt_GPG I/O engine
- *
- * This class is used internally by Crypt_GPG and does not need be used
- * directly. See the {@link Crypt_GPG} class for end-user API.
- *
- * This engine uses PHP's native process control functions to directly control
- * the GPG process. The GPG executable is required to be on the system.
- *
- * All data is passed to the GPG subprocess using file descriptors. This is the
- * most secure method of passing data to the GPG subprocess.
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Nathan Fredrickson <nathan@silverorange.com>
- * @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2005-2013 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link http://pear.php.net/package/Crypt_GPG
- * @link http://www.gnupg.org/
- */
-class Crypt_GPG_Engine
-{
- // {{{ constants
-
- /**
- * Size of data chunks that are sent to and retrieved from the IPC pipes.
- *
- * PHP reads 8192 bytes. If this is set to less than 8192, PHP reads 8192
- * and buffers the rest so we might as well just read 8192.
- *
- * Using values other than 8192 also triggers PHP bugs.
- *
- * @see http://bugs.php.net/bug.php?id=35224
- */
- const CHUNK_SIZE = 8192;
-
- /**
- * Standard input file descriptor. This is used to pass data to the GPG
- * process.
- */
- const FD_INPUT = 0;
-
- /**
- * Standard output file descriptor. This is used to receive normal output
- * from the GPG process.
- */
- const FD_OUTPUT = 1;
-
- /**
- * Standard output file descriptor. This is used to receive error output
- * from the GPG process.
- */
- const FD_ERROR = 2;
-
- /**
- * GPG status output file descriptor. The status file descriptor outputs
- * detailed information for many GPG commands. See the second section of
- * the file <b>doc/DETAILS</b> in the
- * {@link http://www.gnupg.org/download/ GPG package} for a detailed
- * description of GPG's status output.
- */
- const FD_STATUS = 3;
-
- /**
- * Command input file descriptor. This is used for methods requiring
- * passphrases.
- */
- const FD_COMMAND = 4;
-
- /**
- * Extra message input file descriptor. This is used for passing signed
- * data when verifying a detached signature.
- */
- const FD_MESSAGE = 5;
-
- /**
- * Minimum version of GnuPG that is supported.
- */
- const MIN_VERSION = '1.0.2';
-
- // }}}
- // {{{ private class properties
-
- /**
- * Whether or not to use debugging mode
- *
- * When set to true, every GPG command is echoed before it is run. Sensitive
- * data is always handled using pipes and is not specified as part of the
- * command. As a result, sensitive data is never displayed when debug is
- * enabled. Sensitive data includes private key data and passphrases.
- *
- * Debugging is off by default.
- *
- * @var boolean
- * @see Crypt_GPG_Engine::__construct()
- */
- private $_debug = false;
-
- /**
- * Location of GPG binary
- *
- * @var string
- * @see Crypt_GPG_Engine::__construct()
- * @see Crypt_GPG_Engine::_getBinary()
- */
- private $_binary = '';
-
- /**
- * Location of GnuPG agent binary
- *
- * Only used for GnuPG 2.x
- *
- * @var string
- * @see Crypt_GPG_Engine::__construct()
- * @see Crypt_GPG_Engine::_getAgent()
- */
- private $_agent = '';
-
- /**
- * Directory containing the GPG key files
- *
- * This property only contains the path when the <i>homedir</i> option
- * is specified in the constructor.
- *
- * @var string
- * @see Crypt_GPG_Engine::__construct()
- */
- private $_homedir = '';
-
- /**
- * File path of the public keyring
- *
- * This property only contains the file path when the <i>public_keyring</i>
- * option is specified in the constructor.
- *
- * If the specified file path starts with <kbd>~/</kbd>, the path is
- * relative to the <i>homedir</i> if specified, otherwise to
- * <kbd>~/.gnupg</kbd>.
- *
- * @var string
- * @see Crypt_GPG_Engine::__construct()
- */
- private $_publicKeyring = '';
-
- /**
- * File path of the private (secret) keyring
- *
- * This property only contains the file path when the <i>private_keyring</i>
- * option is specified in the constructor.
- *
- * If the specified file path starts with <kbd>~/</kbd>, the path is
- * relative to the <i>homedir</i> if specified, otherwise to
- * <kbd>~/.gnupg</kbd>.
- *
- * @var string
- * @see Crypt_GPG_Engine::__construct()
- */
- private $_privateKeyring = '';
-
- /**
- * File path of the trust database
- *
- * This property only contains the file path when the <i>trust_db</i>
- * option is specified in the constructor.
- *
- * If the specified file path starts with <kbd>~/</kbd>, the path is
- * relative to the <i>homedir</i> if specified, otherwise to
- * <kbd>~/.gnupg</kbd>.
- *
- * @var string
- * @see Crypt_GPG_Engine::__construct()
- */
- private $_trustDb = '';
-
- /**
- * Array of pipes used for communication with the GPG binary
- *
- * This is an array of file descriptor resources.
- *
- * @var array
- */
- private $_pipes = array();
-
- /**
- * Array of pipes used for communication with the gpg-agent binary
- *
- * This is an array of file descriptor resources.
- *
- * @var array
- */
- private $_agentPipes = array();
-
- /**
- * Array of currently opened pipes
- *
- * This array is used to keep track of remaining opened pipes so they can
- * be closed when the GPG subprocess is finished. This array is a subset of
- * the {@link Crypt_GPG_Engine::$_pipes} array and contains opened file
- * descriptor resources.
- *
- * @var array
- * @see Crypt_GPG_Engine::_closePipe()
- */
- private $_openPipes = array();
-
- /**
- * A handle for the GPG process
- *
- * @var resource
- */
- private $_process = null;
-
- /**
- * A handle for the gpg-agent process
- *
- * @var resource
- */
- private $_agentProcess = null;
-
- /**
- * GPG agent daemon socket and PID for running gpg-agent
- *
- * @var string
- */
- private $_agentInfo = null;
-
- /**
- * Whether or not the operating system is Darwin (OS X)
- *
- * @var boolean
- */
- private $_isDarwin = false;
-
- /**
- * Commands to be sent to GPG's command input stream
- *
- * @var string
- * @see Crypt_GPG_Engine::sendCommand()
- */
- private $_commandBuffer = '';
-
- /**
- * Array of status line handlers
- *
- * @var array
- * @see Crypt_GPG_Engine::addStatusHandler()
- */
- private $_statusHandlers = array();
-
- /**
- * Array of error line handlers
- *
- * @var array
- * @see Crypt_GPG_Engine::addErrorHandler()
- */
- private $_errorHandlers = array();
-
- /**
- * The error code of the current operation
- *
- * @var integer
- * @see Crypt_GPG_Engine::getErrorCode()
- */
- private $_errorCode = Crypt_GPG::ERROR_NONE;
-
- /**
- * File related to the error code of the current operation
- *
- * @var string
- * @see Crypt_GPG_Engine::getErrorFilename()
- */
- private $_errorFilename = '';
-
- /**
- * Key id related to the error code of the current operation
- *
- * @var string
- * @see Crypt_GPG_Engine::getErrorKeyId()
- */
- private $_errorkeyId = '';
-
- /**
- * The number of currently needed passphrases
- *
- * If this is not zero when the GPG command is completed, the error code is
- * set to {@link Crypt_GPG::ERROR_MISSING_PASSPHRASE}.
- *
- * @var integer
- */
- private $_needPassphrase = 0;
-
- /**
- * The input source
- *
- * This is data to send to GPG. Either a string or a stream resource.
- *
- * @var string|resource
- * @see Crypt_GPG_Engine::setInput()
- */
- private $_input = null;
-
- /**
- * The extra message input source
- *
- * Either a string or a stream resource.
- *
- * @var string|resource
- * @see Crypt_GPG_Engine::setMessage()
- */
- private $_message = null;
-
- /**
- * The output location
- *
- * This is where the output from GPG is sent. Either a string or a stream
- * resource.
- *
- * @var string|resource
- * @see Crypt_GPG_Engine::setOutput()
- */
- private $_output = '';
-
- /**
- * The GPG operation to execute
- *
- * @var string
- * @see Crypt_GPG_Engine::setOperation()
- */
- private $_operation;
-
- /**
- * Arguments for the current operation
- *
- * @var array
- * @see Crypt_GPG_Engine::setOperation()
- */
- private $_arguments = array();
-
- /**
- * The version number of the GPG binary
- *
- * @var string
- * @see Crypt_GPG_Engine::getVersion()
- */
- private $_version = '';
-
- // }}}
- // {{{ __construct()
-
- /**
- * Creates a new GPG engine
- *
- * Available options are:
- *
- * - <kbd>string homedir</kbd> - the directory where the GPG
- * keyring files are stored. If not
- * specified, Crypt_GPG uses the
- * default of <kbd>~/.gnupg</kbd>.
- * - <kbd>string publicKeyring</kbd> - the file path of the public
- * keyring. Use this if the public
- * keyring is not in the homedir, or
- * if the keyring is in a directory
- * not writable by the process
- * invoking GPG (like Apache). Then
- * you can specify the path to the
- * keyring with this option
- * (/foo/bar/pubring.gpg), and specify
- * a writable directory (like /tmp)
- * using the <i>homedir</i> option.
- * - <kbd>string privateKeyring</kbd> - the file path of the private
- * keyring. Use this if the private
- * keyring is not in the homedir, or
- * if the keyring is in a directory
- * not writable by the process
- * invoking GPG (like Apache). Then
- * you can specify the path to the
- * keyring with this option
- * (/foo/bar/secring.gpg), and specify
- * a writable directory (like /tmp)
- * using the <i>homedir</i> option.
- * - <kbd>string trustDb</kbd> - the file path of the web-of-trust
- * database. Use this if the trust
- * database is not in the homedir, or
- * if the database is in a directory
- * not writable by the process
- * invoking GPG (like Apache). Then
- * you can specify the path to the
- * trust database with this option
- * (/foo/bar/trustdb.gpg), and specify
- * a writable directory (like /tmp)
- * using the <i>homedir</i> option.
- * - <kbd>string binary</kbd> - the location of the GPG binary. If
- * not specified, the driver attempts
- * to auto-detect the GPG binary
- * location using a list of known
- * default locations for the current
- * operating system. The option
- * <kbd>gpgBinary</kbd> is a
- * deprecated alias for this option.
- * - <kbd>string agent</kbd> - the location of the GnuPG agent
- * binary. The gpg-agent is only
- * used for GnuPG 2.x. If not
- * specified, the engine attempts
- * to auto-detect the gpg-agent
- * binary location using a list of
- * know default locations for the
- * current operating system.
- * - <kbd>boolean debug</kbd> - whether or not to use debug mode.
- * When debug mode is on, all
- * communication to and from the GPG
- * subprocess is logged. This can be
- * useful to diagnose errors when
- * using Crypt_GPG.
- *
- * @param array $options optional. An array of options used to create the
- * GPG object. All options are optional and are
- * represented as key-value pairs.
- *
- * @throws Crypt_GPG_FileException if the <kbd>homedir</kbd> does not exist
- * and cannot be created. This can happen if <kbd>homedir</kbd> is
- * not specified, Crypt_GPG is run as the web user, and the web
- * user has no home directory. This exception is also thrown if any
- * of the options <kbd>publicKeyring</kbd>,
- * <kbd>privateKeyring</kbd> or <kbd>trustDb</kbd> options are
- * specified but the files do not exist or are are not readable.
- * This can happen if the user running the Crypt_GPG process (for
- * example, the Apache user) does not have permission to read the
- * files.
- *
- * @throws PEAR_Exception if the provided <kbd>binary</kbd> is invalid, or
- * if no <kbd>binary</kbd> is provided and no suitable binary could
- * be found.
- *
- * @throws PEAR_Exception if the provided <kbd>agent</kbd> is invalid, or
- * if no <kbd>agent</kbd> is provided and no suitable gpg-agent
- * cound be found.
- */
- public function __construct(array $options = array())
- {
- $this->_isDarwin = (strncmp(strtoupper(PHP_OS), 'DARWIN', 6) === 0);
-
- // get homedir
- if (array_key_exists('homedir', $options)) {
- $this->_homedir = (string)$options['homedir'];
- } else {
- if (extension_loaded('posix')) {
- // note: this requires the package OS dep exclude 'windows'
- $info = posix_getpwuid(posix_getuid());
- $this->_homedir = $info['dir'].'/.gnupg';
- } else {
- if (isset($_SERVER['HOME'])) {
- $this->_homedir = $_SERVER['HOME'];
- } else {
- $this->_homedir = getenv('HOME');
- }
- }
-
- if ($this->_homedir === false) {
- throw new Crypt_GPG_FileException(
- 'Could not locate homedir. Please specify the homedir ' .
- 'to use with the \'homedir\' option when instantiating ' .
- 'the Crypt_GPG object.'
- );
- }
- }
-
- // attempt to create homedir if it does not exist
- if (!is_dir($this->_homedir)) {
- if (@mkdir($this->_homedir, 0777, true)) {
- // Set permissions on homedir. Parent directories are created
- // with 0777, homedir is set to 0700.
- chmod($this->_homedir, 0700);
- } else {
- throw new Crypt_GPG_FileException(
- 'The \'homedir\' "' . $this->_homedir . '" is not ' .
- 'readable or does not exist and cannot be created. This ' .
- 'can happen if \'homedir\' is not specified in the ' .
- 'Crypt_GPG options, Crypt_GPG is run as the web user, ' .
- 'and the web user has no home directory.',
- 0,
- $this->_homedir
- );
- }
- }
-
- // check homedir permissions (See Bug #19833)
- if (!is_executable($this->_homedir)) {
- throw new Crypt_GPG_FileException(
- 'The \'homedir\' "' . $this->_homedir . '" is not enterable ' .
- 'by the current user. Please check the permissions on your ' .
- 'homedir and make sure the current user can both enter and ' .
- 'write to the directory.',
- 0,
- $this->_homedir
- );
- }
- if (!is_writeable($this->_homedir)) {
- throw new Crypt_GPG_FileException(
- 'The \'homedir\' "' . $this->_homedir . '" is not writable ' .
- 'by the current user. Please check the permissions on your ' .
- 'homedir and make sure the current user can both enter and ' .
- 'write to the directory.',
- 0,
- $this->_homedir
- );
- }
-
- // get binary
- if (array_key_exists('binary', $options)) {
- $this->_binary = (string)$options['binary'];
- } elseif (array_key_exists('gpgBinary', $options)) {
- // deprecated alias
- $this->_binary = (string)$options['gpgBinary'];
- } else {
- $this->_binary = $this->_getBinary();
- }
-
- if ($this->_binary == '' || !is_executable($this->_binary)) {
- throw new PEAR_Exception(
- 'GPG binary not found. If you are sure the GPG binary is ' .
- 'installed, please specify the location of the GPG binary ' .
- 'using the \'binary\' driver option.'
- );
- }
-
- // get agent
- if (array_key_exists('agent', $options)) {
- $this->_agent = (string)$options['agent'];
- } else {
- $this->_agent = $this->_getAgent();
- }
-
- if ($this->_agent == '' || !is_executable($this->_agent)) {
- throw new PEAR_Exception(
- 'gpg-agent binary not found. If you are sure the gpg-agent ' .
- 'is installed, please specify the location of the gpg-agent ' .
- 'binary using the \'agent\' driver option.'
- );
- }
-
- /*
- * Note:
- *
- * Normally, GnuPG expects keyrings to be in the homedir and expects
- * to be able to write temporary files in the homedir. Sometimes,
- * keyrings are not in the homedir, or location of the keyrings does
- * not allow writing temporary files. In this case, the <i>homedir</i>
- * option by itself is not enough to specify the keyrings because GnuPG
- * can not write required temporary files. Additional options are
- * provided so you can specify the location of the keyrings separately
- * from the homedir.
- */
-
- // get public keyring
- if (array_key_exists('publicKeyring', $options)) {
- $this->_publicKeyring = (string)$options['publicKeyring'];
- if (!is_readable($this->_publicKeyring)) {
- throw new Crypt_GPG_FileException('The \'publicKeyring\' "' .
- $this->_publicKeyring . '" does not exist or is ' .
- 'not readable. Check the location and ensure the file ' .
- 'permissions are correct.', 0, $this->_publicKeyring);
- }
- }
-
- // get private keyring
- if (array_key_exists('privateKeyring', $options)) {
- $this->_privateKeyring = (string)$options['privateKeyring'];
- if (!is_readable($this->_privateKeyring)) {
- throw new Crypt_GPG_FileException('The \'privateKeyring\' "' .
- $this->_privateKeyring . '" does not exist or is ' .
- 'not readable. Check the location and ensure the file ' .
- 'permissions are correct.', 0, $this->_privateKeyring);
- }
- }
-
- // get trust database
- if (array_key_exists('trustDb', $options)) {
- $this->_trustDb = (string)$options['trustDb'];
- if (!is_readable($this->_trustDb)) {
- throw new Crypt_GPG_FileException('The \'trustDb\' "' .
- $this->_trustDb . '" does not exist or is not readable. ' .
- 'Check the location and ensure the file permissions are ' .
- 'correct.', 0, $this->_trustDb);
- }
- }
-
- if (array_key_exists('debug', $options)) {
- $this->_debug = (boolean)$options['debug'];
- }
- }
-
- // }}}
- // {{{ __destruct()
-
- /**
- * Closes open GPG subprocesses when this object is destroyed
- *
- * Subprocesses should never be left open by this class unless there is
- * an unknown error and unexpected script termination occurs.
- */
- public function __destruct()
- {
- $this->_closeSubprocess();
- }
-
- // }}}
- // {{{ addErrorHandler()
-
- /**
- * Adds an error handler method
- *
- * The method is run every time a new error line is received from the GPG
- * subprocess. The handler method must accept the error line to be handled
- * as its first parameter.
- *
- * @param callback $callback the callback method to use.
- * @param array $args optional. Additional arguments to pass as
- * parameters to the callback method.
- *
- * @return void
- */
- public function addErrorHandler($callback, array $args = array())
- {
- $this->_errorHandlers[] = array(
- 'callback' => $callback,
- 'args' => $args
- );
- }
-
- // }}}
- // {{{ addStatusHandler()
-
- /**
- * Adds a status handler method
- *
- * The method is run every time a new status line is received from the
- * GPG subprocess. The handler method must accept the status line to be
- * handled as its first parameter.
- *
- * @param callback $callback the callback method to use.
- * @param array $args optional. Additional arguments to pass as
- * parameters to the callback method.
- *
- * @return void
- */
- public function addStatusHandler($callback, array $args = array())
- {
- $this->_statusHandlers[] = array(
- 'callback' => $callback,
- 'args' => $args
- );
- }
-
- // }}}
- // {{{ sendCommand()
-
- /**
- * Sends a command to the GPG subprocess over the command file-descriptor
- * pipe
- *
- * @param string $command the command to send.
- *
- * @return void
- *
- * @sensitive $command
- */
- public function sendCommand($command)
- {
- if (array_key_exists(self::FD_COMMAND, $this->_openPipes)) {
- $this->_commandBuffer .= $command . PHP_EOL;
- }
- }
-
- // }}}
- // {{{ reset()
-
- /**
- * Resets the GPG engine, preparing it for a new operation
- *
- * @return void
- *
- * @see Crypt_GPG_Engine::run()
- * @see Crypt_GPG_Engine::setOperation()
- */
- public function reset()
- {
- $this->_operation = '';
- $this->_arguments = array();
- $this->_input = null;
- $this->_message = null;
- $this->_output = '';
- $this->_errorCode = Crypt_GPG::ERROR_NONE;
- $this->_needPassphrase = 0;
- $this->_commandBuffer = '';
-
- $this->_statusHandlers = array();
- $this->_errorHandlers = array();
-
- $this->addStatusHandler(array($this, '_handleErrorStatus'));
- $this->addErrorHandler(array($this, '_handleErrorError'));
-
- if ($this->_debug) {
- $this->addStatusHandler(array($this, '_handleDebugStatus'));
- $this->addErrorHandler(array($this, '_handleDebugError'));
- }
- }
-
- // }}}
- // {{{ run()
-
- /**
- * Runs the current GPG operation
- *
- * This creates and manages the GPG subprocess.
- *
- * The operation must be set with {@link Crypt_GPG_Engine::setOperation()}
- * before this method is called.
- *
- * @return void
- *
- * @throws Crypt_GPG_InvalidOperationException if no operation is specified.
- *
- * @see Crypt_GPG_Engine::reset()
- * @see Crypt_GPG_Engine::setOperation()
- */
- public function run()
- {
- if ($this->_operation === '') {
- throw new Crypt_GPG_InvalidOperationException('No GPG operation ' .
- 'specified. Use Crypt_GPG_Engine::setOperation() before ' .
- 'calling Crypt_GPG_Engine::run().');
- }
-
- $this->_openSubprocess();
- $this->_process();
- $this->_closeSubprocess();
- }
-
- // }}}
- // {{{ getErrorCode()
-
- /**
- * Gets the error code of the last executed operation
- *
- * This value is only meaningful after {@link Crypt_GPG_Engine::run()} has
- * been executed.
- *
- * @return integer the error code of the last executed operation.
- */
- public function getErrorCode()
- {
- return $this->_errorCode;
- }
-
- // }}}
- // {{{ getErrorFilename()
-
- /**
- * Gets the file related to the error code of the last executed operation
- *
- * This value is only meaningful after {@link Crypt_GPG_Engine::run()} has
- * been executed. If there is no file related to the error, an empty string
- * is returned.
- *
- * @return string the file related to the error code of the last executed
- * operation.
- */
- public function getErrorFilename()
- {
- return $this->_errorFilename;
- }
-
- // }}}
- // {{{ getErrorKeyId()
-
- /**
- * Gets the key id related to the error code of the last executed operation
- *
- * This value is only meaningful after {@link Crypt_GPG_Engine::run()} has
- * been executed. If there is no key id related to the error, an empty
- * string is returned.
- *
- * @return string the key id related to the error code of the last executed
- * operation.
- */
- public function getErrorKeyId()
- {
- return $this->_errorKeyId;
- }
-
- // }}}
- // {{{ setInput()
-
- /**
- * Sets the input source for the current GPG operation
- *
- * @param string|resource &$input either a reference to the string
- * containing the input data or an open
- * stream resource containing the input
- * data.
- *
- * @return void
- */
- public function setInput(&$input)
- {
- $this->_input =& $input;
- }
-
- // }}}
- // {{{ setMessage()
-
- /**
- * Sets the message source for the current GPG operation
- *
- * Detached signature data should be specified here.
- *
- * @param string|resource &$message either a reference to the string
- * containing the message data or an open
- * stream resource containing the message
- * data.
- *
- * @return void
- */
- public function setMessage(&$message)
- {
- $this->_message =& $message;
- }
-
- // }}}
- // {{{ setOutput()
-
- /**
- * Sets the output destination for the current GPG operation
- *
- * @param string|resource &$output either a reference to the string in
- * which to store GPG output or an open
- * stream resource to which the output data
- * should be written.
- *
- * @return void
- */
- public function setOutput(&$output)
- {
- $this->_output =& $output;
- }
-
- // }}}
- // {{{ setOperation()
-
- /**
- * Sets the operation to perform
- *
- * @param string $operation the operation to perform. This should be one
- * of GPG's operations. For example,
- * <kbd>--encrypt</kbd>, <kbd>--decrypt</kbd>,
- * <kbd>--sign</kbd>, etc.
- * @param array $arguments optional. Additional arguments for the GPG
- * subprocess. See the GPG manual for specific
- * values.
- *
- * @return void
- *
- * @see Crypt_GPG_Engine::reset()
- * @see Crypt_GPG_Engine::run()
- */
- public function setOperation($operation, array $arguments = array())
- {
- $this->_operation = $operation;
- $this->_arguments = $arguments;
- }
-
- // }}}
- // {{{ getVersion()
-
- /**
- * Gets the version of the GnuPG binary
- *
- * @return string a version number string containing the version of GnuPG
- * being used. This value is suitable to use with PHP's
- * version_compare() function.
- *
- * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
- * Use the <kbd>debug</kbd> option and file a bug report if these
- * exceptions occur.
- *
- * @throws Crypt_GPG_UnsupportedException if the provided binary is not
- * GnuPG or if the GnuPG version is less than 1.0.2.
- */
- public function getVersion()
- {
- if ($this->_version == '') {
-
- $options = array(
- 'homedir' => $this->_homedir,
- 'binary' => $this->_binary,
- 'debug' => $this->_debug
- );
-
- $engine = new self($options);
- $info = '';
-
- // Set a garbage version so we do not end up looking up the version
- // recursively.
- $engine->_version = '1.0.0';
-
- $engine->reset();
- $engine->setOutput($info);
- $engine->setOperation('--version');
- $engine->run();
-
- $code = $this->getErrorCode();
-
- if ($code !== Crypt_GPG::ERROR_NONE) {
- throw new Crypt_GPG_Exception(
- 'Unknown error getting GnuPG version information. Please ' .
- 'use the \'debug\' option when creating the Crypt_GPG ' .
- 'object, and file a bug report at ' . Crypt_GPG::BUG_URI,
- $code);
- }
-
- $matches = array();
- $expression = '#gpg \(GnuPG[A-Za-z0-9/]*?\) (\S+)#';
-
- if (preg_match($expression, $info, $matches) === 1) {
- $this->_version = $matches[1];
- } else {
- throw new Crypt_GPG_Exception(
- 'No GnuPG version information provided by the binary "' .
- $this->_binary . '". Are you sure it is GnuPG?');
- }
-
- if (version_compare($this->_version, self::MIN_VERSION, 'lt')) {
- throw new Crypt_GPG_Exception(
- 'The version of GnuPG being used (' . $this->_version .
- ') is not supported by Crypt_GPG. The minimum version ' .
- 'required by Crypt_GPG is ' . self::MIN_VERSION);
- }
- }
-
-
- return $this->_version;
- }
-
- // }}}
- // {{{ _handleErrorStatus()
-
- /**
- * Handles error values in the status output from GPG
- *
- * This method is responsible for setting the
- * {@link Crypt_GPG_Engine::$_errorCode}. See <b>doc/DETAILS</b> in the
- * {@link http://www.gnupg.org/download/ GPG distribution} for detailed
- * information on GPG's status output.
- *
- * @param string $line the status line to handle.
- *
- * @return void
- */
- private function _handleErrorStatus($line)
- {
- $tokens = explode(' ', $line);
- switch ($tokens[0]) {
- case 'BAD_PASSPHRASE':
- $this->_errorCode = Crypt_GPG::ERROR_BAD_PASSPHRASE;
- break;
-
- case 'MISSING_PASSPHRASE':
- $this->_errorCode = Crypt_GPG::ERROR_MISSING_PASSPHRASE;
- break;
-
- case 'NODATA':
- $this->_errorCode = Crypt_GPG::ERROR_NO_DATA;
- break;
-
- case 'DELETE_PROBLEM':
- if ($tokens[1] == '1') {
- $this->_errorCode = Crypt_GPG::ERROR_KEY_NOT_FOUND;
- break;
- } elseif ($tokens[1] == '2') {
- $this->_errorCode = Crypt_GPG::ERROR_DELETE_PRIVATE_KEY;
- break;
- }
- break;
-
- case 'IMPORT_RES':
- if ($tokens[12] > 0) {
- $this->_errorCode = Crypt_GPG::ERROR_DUPLICATE_KEY;
- }
- break;
-
- case 'NO_PUBKEY':
- case 'NO_SECKEY':
- $this->_errorKeyId = $tokens[1];
- $this->_errorCode = Crypt_GPG::ERROR_KEY_NOT_FOUND;
- break;
-
- case 'NEED_PASSPHRASE':
- $this->_needPassphrase++;
- break;
-
- case 'GOOD_PASSPHRASE':
- $this->_needPassphrase--;
- break;
-
- case 'EXPSIG':
- case 'EXPKEYSIG':
- case 'REVKEYSIG':
- case 'BADSIG':
- $this->_errorCode = Crypt_GPG::ERROR_BAD_SIGNATURE;
- break;
-
- }
- }
-
- // }}}
- // {{{ _handleErrorError()
-
- /**
- * Handles error values in the error output from GPG
- *
- * This method is responsible for setting the
- * {@link Crypt_GPG_Engine::$_errorCode}.
- *
- * @param string $line the error line to handle.
- *
- * @return void
- */
- private function _handleErrorError($line)
- {
- if ($this->_errorCode === Crypt_GPG::ERROR_NONE) {
- $pattern = '/no valid OpenPGP data found/';
- if (preg_match($pattern, $line) === 1) {
- $this->_errorCode = Crypt_GPG::ERROR_NO_DATA;
- }
- }
-
- if ($this->_errorCode === Crypt_GPG::ERROR_NONE) {
- $pattern = '/No secret key|secret key not available/';
- if (preg_match($pattern, $line) === 1) {
- $this->_errorCode = Crypt_GPG::ERROR_KEY_NOT_FOUND;
- }
- }
-
- if ($this->_errorCode === Crypt_GPG::ERROR_NONE) {
- $pattern = '/No public key|public key not found/';
- if (preg_match($pattern, $line) === 1) {
- $this->_errorCode = Crypt_GPG::ERROR_KEY_NOT_FOUND;
- }
- }
-
- if ($this->_errorCode === Crypt_GPG::ERROR_NONE) {
- $matches = array();
- $pattern = '/can\'t (?:access|open) `(.*?)\'/';
- if (preg_match($pattern, $line, $matches) === 1) {
- $this->_errorFilename = $matches[1];
- $this->_errorCode = Crypt_GPG::ERROR_FILE_PERMISSIONS;
- }
- }
- }
-
- // }}}
- // {{{ _handleDebugStatus()
-
- /**
- * Displays debug output for status lines
- *
- * @param string $line the status line to handle.
- *
- * @return void
- */
- private function _handleDebugStatus($line)
- {
- $this->_debug('STATUS: ' . $line);
- }
-
- // }}}
- // {{{ _handleDebugError()
-
- /**
- * Displays debug output for error lines
- *
- * @param string $line the error line to handle.
- *
- * @return void
- */
- private function _handleDebugError($line)
- {
- $this->_debug('ERROR: ' . $line);
- }
-
- // }}}
- // {{{ _process()
-
- /**
- * Performs internal streaming operations for the subprocess using either
- * strings or streams as input / output points
- *
- * This is the main I/O loop for streaming to and from the GPG subprocess.
- *
- * The implementation of this method is verbose mainly for performance
- * reasons. Adding streams to a lookup array and looping the array inside
- * the main I/O loop would be siginficantly slower for large streams.
- *
- * @return void
- *
- * @throws Crypt_GPG_Exception if there is an error selecting streams for
- * reading or writing. If this occurs, please file a bug report at
- * http://pear.php.net/bugs/report.php?package=Crypt_GPG.
- */
- private function _process()
- {
- $this->_debug('BEGIN PROCESSING');
-
- $this->_commandBuffer = ''; // buffers input to GPG
- $messageBuffer = ''; // buffers input to GPG
- $inputBuffer = ''; // buffers input to GPG
- $outputBuffer = ''; // buffers output from GPG
- $statusBuffer = ''; // buffers output from GPG
- $errorBuffer = ''; // buffers output from GPG
- $inputComplete = false; // input stream is completely buffered
- $messageComplete = false; // message stream is completely buffered
-
- if (is_string($this->_input)) {
- $inputBuffer = $this->_input;
- $inputComplete = true;
- }
-
- if (is_string($this->_message)) {
- $messageBuffer = $this->_message;
- $messageComplete = true;
- }
-
- if (is_string($this->_output)) {
- $outputBuffer =& $this->_output;
- }
-
- // convenience variables
- $fdInput = $this->_pipes[self::FD_INPUT];
- $fdOutput = $this->_pipes[self::FD_OUTPUT];
- $fdError = $this->_pipes[self::FD_ERROR];
- $fdStatus = $this->_pipes[self::FD_STATUS];
- $fdCommand = $this->_pipes[self::FD_COMMAND];
- $fdMessage = $this->_pipes[self::FD_MESSAGE];
-
- // select loop delay in milliseconds
- $delay = 0;
-
- while (true) {
-
- $inputStreams = array();
- $outputStreams = array();
- $exceptionStreams = array();
-
- // set up input streams
- if (is_resource($this->_input) && !$inputComplete) {
- if (feof($this->_input)) {
- $inputComplete = true;
- } else {
- $inputStreams[] = $this->_input;
- }
- }
-
- // close GPG input pipe if there is no more data
- if ($inputBuffer == '' && $inputComplete) {
- $this->_debug('=> closing GPG input pipe');
- $this->_closePipe(self::FD_INPUT);
- }
-
- if (is_resource($this->_message) && !$messageComplete) {
- if (feof($this->_message)) {
- $messageComplete = true;
- } else {
- $inputStreams[] = $this->_message;
- }
- }
-
- // close GPG message pipe if there is no more data
- if ($messageBuffer == '' && $messageComplete) {
- $this->_debug('=> closing GPG message pipe');
- $this->_closePipe(self::FD_MESSAGE);
- }
-
- if (!feof($fdOutput)) {
- $inputStreams[] = $fdOutput;
- }
-
- if (!feof($fdStatus)) {
- $inputStreams[] = $fdStatus;
- }
-
- if (!feof($fdError)) {
- $inputStreams[] = $fdError;
- }
-
- // set up output streams
- if ($outputBuffer != '' && is_resource($this->_output)) {
- $outputStreams[] = $this->_output;
- }
-
- if ($this->_commandBuffer != '' && is_resource($fdCommand)) {
- $outputStreams[] = $fdCommand;
- }
-
- if ($messageBuffer != '' && is_resource($fdMessage)) {
- $outputStreams[] = $fdMessage;
- }
-
- if ($inputBuffer != '' && is_resource($fdInput)) {
- $outputStreams[] = $fdInput;
- }
-
- // no streams left to read or write, we're all done
- if (count($inputStreams) === 0 && count($outputStreams) === 0) {
- break;
- }
-
- $this->_debug('selecting streams');
-
- $ready = stream_select(
- $inputStreams,
- $outputStreams,
- $exceptionStreams,
- null
- );
-
- $this->_debug('=> got ' . $ready);
-
- if ($ready === false) {
- throw new Crypt_GPG_Exception(
- 'Error selecting stream for communication with GPG ' .
- 'subprocess. Please file a bug report at: ' .
- 'http://pear.php.net/bugs/report.php?package=Crypt_GPG');
- }
-
- if ($ready === 0) {
- throw new Crypt_GPG_Exception(
- 'stream_select() returned 0. This can not happen! Please ' .
- 'file a bug report at: ' .
- 'http://pear.php.net/bugs/report.php?package=Crypt_GPG');
- }
-
- // write input (to GPG)
- if (in_array($fdInput, $outputStreams, true)) {
- $this->_debug('GPG is ready for input');
-
- $chunk = Crypt_GPG_ByteUtils::substr(
- $inputBuffer,
- 0,
- self::CHUNK_SIZE
- );
-
- $length = Crypt_GPG_ByteUtils::strlen($chunk);
-
- $this->_debug(
- '=> about to write ' . $length . ' bytes to GPG input'
- );
-
- $length = fwrite($fdInput, $chunk, $length);
- if ($length === 0) {
- // If we wrote 0 bytes it was either EAGAIN or EPIPE. Since
- // the pipe was seleted for writing, we assume it was EPIPE.
- // There's no way to get the actual erorr code in PHP. See
- // PHP Bug #39598. https://bugs.php.net/bug.php?id=39598
- $this->_debug('=> broken pipe on GPG input');
- $this->_debug('=> closing pipe GPG input');
- $this->_closePipe(self::FD_INPUT);
- } else {
- $this->_debug('=> wrote ' . $length . ' bytes');
- $inputBuffer = Crypt_GPG_ByteUtils::substr(
- $inputBuffer,
- $length
- );
- }
- }
-
- // read input (from PHP stream)
- if (in_array($this->_input, $inputStreams, true)) {
- $this->_debug('input stream is ready for reading');
- $this->_debug(
- '=> about to read ' . self::CHUNK_SIZE .
- ' bytes from input stream'
- );
-
- $chunk = fread($this->_input, self::CHUNK_SIZE);
- $length = Crypt_GPG_ByteUtils::strlen($chunk);
- $inputBuffer .= $chunk;
-
- $this->_debug('=> read ' . $length . ' bytes');
- }
-
- // write message (to GPG)
- if (in_array($fdMessage, $outputStreams, true)) {
- $this->_debug('GPG is ready for message data');
-
- $chunk = Crypt_GPG_ByteUtils::substr(
- $messageBuffer,
- 0,
- self::CHUNK_SIZE
- );
-
- $length = Crypt_GPG_ByteUtils::strlen($chunk);
-
- $this->_debug(
- '=> about to write ' . $length . ' bytes to GPG message'
- );
-
- $length = fwrite($fdMessage, $chunk, $length);
- if ($length === 0) {
- // If we wrote 0 bytes it was either EAGAIN or EPIPE. Since
- // the pipe was seleted for writing, we assume it was EPIPE.
- // There's no way to get the actual erorr code in PHP. See
- // PHP Bug #39598. https://bugs.php.net/bug.php?id=39598
- $this->_debug('=> broken pipe on GPG message');
- $this->_debug('=> closing pipe GPG message');
- $this->_closePipe(self::FD_MESSAGE);
- } else {
- $this->_debug('=> wrote ' . $length . ' bytes');
- $messageBuffer = Crypt_GPG_ByteUtils::substr(
- $messageBuffer,
- $length
- );
- }
- }
-
- // read message (from PHP stream)
- if (in_array($this->_message, $inputStreams, true)) {
- $this->_debug('message stream is ready for reading');
- $this->_debug(
- '=> about to read ' . self::CHUNK_SIZE .
- ' bytes from message stream'
- );
-
- $chunk = fread($this->_message, self::CHUNK_SIZE);
- $length = Crypt_GPG_ByteUtils::strlen($chunk);
- $messageBuffer .= $chunk;
-
- $this->_debug('=> read ' . $length . ' bytes');
- }
-
- // read output (from GPG)
- if (in_array($fdOutput, $inputStreams, true)) {
- $this->_debug('GPG output stream ready for reading');
- $this->_debug(
- '=> about to read ' . self::CHUNK_SIZE .
- ' bytes from GPG output'
- );
-
- $chunk = fread($fdOutput, self::CHUNK_SIZE);
- $length = Crypt_GPG_ByteUtils::strlen($chunk);
- $outputBuffer .= $chunk;
-
- $this->_debug('=> read ' . $length . ' bytes');
- }
-
- // write output (to PHP stream)
- if (in_array($this->_output, $outputStreams, true)) {
- $this->_debug('output stream is ready for data');
-
- $chunk = Crypt_GPG_ByteUtils::substr(
- $outputBuffer,
- 0,
- self::CHUNK_SIZE
- );
-
- $length = Crypt_GPG_ByteUtils::strlen($chunk);
-
- $this->_debug(
- '=> about to write ' . $length . ' bytes to output stream'
- );
-
- $length = fwrite($this->_output, $chunk, $length);
-
- $this->_debug('=> wrote ' . $length . ' bytes');
-
- $outputBuffer = Crypt_GPG_ByteUtils::substr(
- $outputBuffer,
- $length
- );
- }
-
- // read error (from GPG)
- if (in_array($fdError, $inputStreams, true)) {
- $this->_debug('GPG error stream ready for reading');
- $this->_debug(
- '=> about to read ' . self::CHUNK_SIZE .
- ' bytes from GPG error'
- );
-
- $chunk = fread($fdError, self::CHUNK_SIZE);
- $length = Crypt_GPG_ByteUtils::strlen($chunk);
- $errorBuffer .= $chunk;
-
- $this->_debug('=> read ' . $length . ' bytes');
-
- // pass lines to error handlers
- while (($pos = strpos($errorBuffer, PHP_EOL)) !== false) {
- $line = Crypt_GPG_ByteUtils::substr($errorBuffer, 0, $pos);
- foreach ($this->_errorHandlers as $handler) {
- array_unshift($handler['args'], $line);
- call_user_func_array(
- $handler['callback'],
- $handler['args']
- );
-
- array_shift($handler['args']);
- }
- $errorBuffer = Crypt_GPG_ByteUtils::substr(
- $errorBuffer,
- $pos + Crypt_GPG_ByteUtils::strlen(PHP_EOL)
- );
- }
- }
-
- // read status (from GPG)
- if (in_array($fdStatus, $inputStreams, true)) {
- $this->_debug('GPG status stream ready for reading');
- $this->_debug(
- '=> about to read ' . self::CHUNK_SIZE .
- ' bytes from GPG status'
- );
-
- $chunk = fread($fdStatus, self::CHUNK_SIZE);
- $length = Crypt_GPG_ByteUtils::strlen($chunk);
- $statusBuffer .= $chunk;
-
- $this->_debug('=> read ' . $length . ' bytes');
-
- // pass lines to status handlers
- while (($pos = strpos($statusBuffer, PHP_EOL)) !== false) {
- $line = Crypt_GPG_ByteUtils::substr($statusBuffer, 0, $pos);
- // only pass lines beginning with magic prefix
- if (Crypt_GPG_ByteUtils::substr($line, 0, 9) == '[GNUPG:] ') {
- $line = Crypt_GPG_ByteUtils::substr($line, 9);
- foreach ($this->_statusHandlers as $handler) {
- array_unshift($handler['args'], $line);
- call_user_func_array(
- $handler['callback'],
- $handler['args']
- );
-
- array_shift($handler['args']);
- }
- }
- $statusBuffer = Crypt_GPG_ByteUtils::substr(
- $statusBuffer,
- $pos + Crypt_GPG_ByteUtils::strlen(PHP_EOL)
- );
- }
- }
-
- // write command (to GPG)
- if (in_array($fdCommand, $outputStreams, true)) {
- $this->_debug('GPG is ready for command data');
-
- // send commands
- $chunk = Crypt_GPG_ByteUtils::substr(
- $this->_commandBuffer,
- 0,
- self::CHUNK_SIZE
- );
-
- $length = Crypt_GPG_ByteUtils::strlen($chunk);
-
- $this->_debug(
- '=> about to write ' . $length . ' bytes to GPG command'
- );
-
- $length = fwrite($fdCommand, $chunk, $length);
- if ($length === 0) {
- // If we wrote 0 bytes it was either EAGAIN or EPIPE. Since
- // the pipe was seleted for writing, we assume it was EPIPE.
- // There's no way to get the actual erorr code in PHP. See
- // PHP Bug #39598. https://bugs.php.net/bug.php?id=39598
- $this->_debug('=> broken pipe on GPG command');
- $this->_debug('=> closing pipe GPG command');
- $this->_closePipe(self::FD_COMMAND);
- } else {
- $this->_debug('=> wrote ' . $length);
- $this->_commandBuffer = Crypt_GPG_ByteUtils::substr(
- $this->_commandBuffer,
- $length
- );
- }
- }
-
- if (count($outputStreams) === 0 || count($inputStreams) === 0) {
- // we have an I/O imbalance, increase the select loop delay
- // to smooth things out
- $delay += 10;
- } else {
- // things are running smoothly, decrease the delay
- $delay -= 8;
- $delay = max(0, $delay);
- }
-
- if ($delay > 0) {
- usleep($delay);
- }
-
- } // end loop while streams are open
-
- $this->_debug('END PROCESSING');
- }
-
- // }}}
- // {{{ _openSubprocess()
-
- /**
- * Opens an internal GPG subprocess for the current operation
- *
- * Opens a GPG subprocess, then connects the subprocess to some pipes. Sets
- * the private class property {@link Crypt_GPG_Engine::$_process} to
- * the new subprocess.
- *
- * @return void
- *
- * @throws Crypt_GPG_OpenSubprocessException if the subprocess could not be
- * opened.
- *
- * @see Crypt_GPG_Engine::setOperation()
- * @see Crypt_GPG_Engine::_closeSubprocess()
- * @see Crypt_GPG_Engine::$_process
- */
- private function _openSubprocess()
- {
- $version = $this->getVersion();
-
- // Binary operations will not work on Windows with PHP < 5.2.6. This is
- // in case stream_select() ever works on Windows.
- $rb = (version_compare(PHP_VERSION, '5.2.6') < 0) ? 'r' : 'rb';
- $wb = (version_compare(PHP_VERSION, '5.2.6') < 0) ? 'w' : 'wb';
-
- $env = $_ENV;
-
- // Newer versions of GnuPG return localized results. Crypt_GPG only
- // works with English, so set the locale to 'C' for the subprocess.
- $env['LC_ALL'] = 'C';
-
- // If using GnuPG 2.x start the gpg-agent
- if (version_compare($version, '2.0.0', 'ge')) {
- $agentCommandLine = $this->_agent;
-
- $agentArguments = array(
- '--options /dev/null', // ignore any saved options
- '--csh', // output is easier to parse
- '--keep-display', // prevent passing --display to pinentry
- '--no-grab',
- '--ignore-cache-for-signing',
- '--pinentry-touch-file /dev/null',
- '--disable-scdaemon',
- '--no-use-standard-socket',
- '--pinentry-program ' . escapeshellarg($this->_getPinEntry())
- );
-
- if ($this->_homedir) {
- $agentArguments[] = '--homedir ' .
- escapeshellarg($this->_homedir);
- }
-
-
- $agentCommandLine .= ' ' . implode(' ', $agentArguments)
- . ' --daemon';
-
- $agentDescriptorSpec = array(
- self::FD_INPUT => array('pipe', $rb), // stdin
- self::FD_OUTPUT => array('pipe', $wb), // stdout
- self::FD_ERROR => array('pipe', $wb) // stderr
- );
-
- $this->_debug('OPENING GPG-AGENT SUBPROCESS WITH THE FOLLOWING COMMAND:');
- $this->_debug($agentCommandLine);
-
- $this->_agentProcess = proc_open(
- $agentCommandLine,
- $agentDescriptorSpec,
- $this->_agentPipes,
- null,
- $env,
- array('binary_pipes' => true)
- );
-
- if (!is_resource($this->_agentProcess)) {
- throw new Crypt_GPG_OpenSubprocessException(
- 'Unable to open gpg-agent subprocess.',
- 0,
- $agentCommandLine
- );
- }
-
- // Get GPG_AGENT_INFO and set environment variable for gpg process.
- // This is a blocking read, but is only 1 line.
- $agentInfo = fread(
- $this->_agentPipes[self::FD_OUTPUT],
- self::CHUNK_SIZE
- );
-
- $agentInfo = explode(' ', $agentInfo, 3);
- $this->_agentInfo = $agentInfo[2];
- $env['GPG_AGENT_INFO'] = $this->_agentInfo;
-
- // gpg-agent daemon is started, we can close the launching process
- $this->_closeAgentLaunchProcess();
- }
-
- $commandLine = $this->_binary;
-
- $defaultArguments = array(
- '--status-fd ' . escapeshellarg(self::FD_STATUS),
- '--command-fd ' . escapeshellarg(self::FD_COMMAND),
- '--no-secmem-warning',
- '--no-tty',
- '--no-default-keyring', // ignored if keying files are not specified
- '--no-options' // prevent creation of ~/.gnupg directory
- );
-
- if (version_compare($version, '1.0.7', 'ge')) {
- if (version_compare($version, '2.0.0', 'lt')) {
- $defaultArguments[] = '--no-use-agent';
- }
- $defaultArguments[] = '--no-permission-warning';
- }
-
- if (version_compare($version, '1.4.2', 'ge')) {
- $defaultArguments[] = '--exit-on-status-write-error';
- }
-
- if (version_compare($version, '1.3.2', 'ge')) {
- $defaultArguments[] = '--trust-model always';
- } else {
- $defaultArguments[] = '--always-trust';
- }
-
- $arguments = array_merge($defaultArguments, $this->_arguments);
-
- if ($this->_homedir) {
- $arguments[] = '--homedir ' . escapeshellarg($this->_homedir);
-
- // the random seed file makes subsequent actions faster so only
- // disable it if we have to.
- if (!is_writeable($this->_homedir)) {
- $arguments[] = '--no-random-seed-file';
- }
- }
-
- if ($this->_publicKeyring) {
- $arguments[] = '--keyring ' . escapeshellarg($this->_publicKeyring);
- }
-
- if ($this->_privateKeyring) {
- $arguments[] = '--secret-keyring ' .
- escapeshellarg($this->_privateKeyring);
- }
-
- if ($this->_trustDb) {
- $arguments[] = '--trustdb-name ' . escapeshellarg($this->_trustDb);
- }
-
- $commandLine .= ' ' . implode(' ', $arguments) . ' ' .
- $this->_operation;
-
- $descriptorSpec = array(
- self::FD_INPUT => array('pipe', $rb), // stdin
- self::FD_OUTPUT => array('pipe', $wb), // stdout
- self::FD_ERROR => array('pipe', $wb), // stderr
- self::FD_STATUS => array('pipe', $wb), // status
- self::FD_COMMAND => array('pipe', $rb), // command
- self::FD_MESSAGE => array('pipe', $rb) // message
- );
-
- $this->_debug('OPENING GPG SUBPROCESS WITH THE FOLLOWING COMMAND:');
- $this->_debug($commandLine);
-
- $this->_process = proc_open(
- $commandLine,
- $descriptorSpec,
- $this->_pipes,
- null,
- $env,
- array('binary_pipes' => true)
- );
-
- if (!is_resource($this->_process)) {
- throw new Crypt_GPG_OpenSubprocessException(
- 'Unable to open GPG subprocess.', 0, $commandLine);
- }
-
- // Set streams as non-blocking. See Bug #18618.
- foreach ($this->_pipes as $pipe) {
- stream_set_blocking($pipe, 0);
- }
-
- $this->_openPipes = $this->_pipes;
- $this->_errorCode = Crypt_GPG::ERROR_NONE;
- }
-
- // }}}
- // {{{ _closeSubprocess()
-
- /**
- * Closes a the internal GPG subprocess
- *
- * Closes the internal GPG subprocess. Sets the private class property
- * {@link Crypt_GPG_Engine::$_process} to null.
- *
- * @return void
- *
- * @see Crypt_GPG_Engine::_openSubprocess()
- * @see Crypt_GPG_Engine::$_process
- */
- private function _closeSubprocess()
- {
- // clear PINs from environment if they were set
- $_ENV['PINENTRY_USER_DATA'] = null;
-
- if (is_resource($this->_process)) {
- $this->_debug('CLOSING GPG SUBPROCESS');
-
- // close remaining open pipes
- foreach (array_keys($this->_openPipes) as $pipeNumber) {
- $this->_closePipe($pipeNumber);
- }
-
- $exitCode = proc_close($this->_process);
-
- if ($exitCode != 0) {
- $this->_debug(
- '=> subprocess returned an unexpected exit code: ' .
- $exitCode
- );
-
- if ($this->_errorCode === Crypt_GPG::ERROR_NONE) {
- if ($this->_needPassphrase > 0) {
- $this->_errorCode = Crypt_GPG::ERROR_MISSING_PASSPHRASE;
- } else {
- $this->_errorCode = Crypt_GPG::ERROR_UNKNOWN;
- }
- }
- }
-
- $this->_process = null;
- $this->_pipes = array();
- }
-
- $this->_closeAgentLaunchProcess();
-
- if ($this->_agentInfo !== null) {
- $this->_debug('STOPPING GPG-AGENT DAEMON');
-
- $parts = explode(':', $this->_agentInfo, 3);
- $pid = $parts[1];
- $process = new Crypt_GPG_ProcessControl($pid);
-
- // terminate agent daemon
- $process->terminate();
-
- while ($process->isRunning()) {
- usleep(10000); // 10 ms
- $process->terminate();
- }
-
- $this->_agentInfo = null;
-
- $this->_debug('GPG-AGENT DAEMON STOPPED');
- }
- }
-
- // }}}
- // {{ _closeAgentLaunchProcess()
-
- private function _closeAgentLaunchProcess()
- {
- if (is_resource($this->_agentProcess)) {
- $this->_debug('CLOSING GPG-AGENT LAUNCH PROCESS');
-
- // close agent pipes
- foreach ($this->_agentPipes as $pipe) {
- fflush($pipe);
- fclose($pipe);
- }
-
- // close agent launching process
- proc_close($this->_agentProcess);
-
- $this->_agentProcess = null;
- $this->_agentPipes = array();
-
- $this->_debug('GPG-AGENT LAUNCH PROCESS CLOSED');
- }
- }
-
- // }}
- // {{{ _closePipe()
-
- /**
- * Closes an opened pipe used to communicate with the GPG subprocess
- *
- * If the pipe is already closed, it is ignored. If the pipe is open, it
- * is flushed and then closed.
- *
- * @param integer $pipeNumber the file descriptor number of the pipe to
- * close.
- *
- * @return void
- */
- private function _closePipe($pipeNumber)
- {
- $pipeNumber = intval($pipeNumber);
- if (array_key_exists($pipeNumber, $this->_openPipes)) {
- fflush($this->_openPipes[$pipeNumber]);
- fclose($this->_openPipes[$pipeNumber]);
- unset($this->_openPipes[$pipeNumber]);
- }
- }
-
- // }}}
- // {{{ _getBinary()
-
- /**
- * Gets the name of the GPG binary for the current operating system
- *
- * This method is called if the '<kbd>binary</kbd>' option is <i>not</i>
- * specified when creating this driver.
- *
- * @return string the name of the GPG binary for the current operating
- * system. If no suitable binary could be found, an empty
- * string is returned.
- */
- private function _getBinary()
- {
- $binary = '';
-
- if ($this->_isDarwin) {
- $binaryFiles = array(
- '/opt/local/bin/gpg', // MacPorts
- '/usr/local/bin/gpg', // Mac GPG
- '/sw/bin/gpg', // Fink
- '/usr/bin/gpg'
- );
- } else {
- $binaryFiles = array(
- '/usr/bin/gpg',
- '/usr/local/bin/gpg'
- );
- }
-
- foreach ($binaryFiles as $binaryFile) {
- if (is_executable($binaryFile)) {
- $binary = $binaryFile;
- break;
- }
- }
-
- return $binary;
- }
-
- // }}}
- // {{ _getAgent()
-
- private function _getAgent()
- {
- $agent = '';
-
- if ($this->_isDarwin) {
- $agentFiles = array(
- '/opt/local/bin/gpg-agent', // MacPorts
- '/usr/local/bin/gpg-agent', // Mac GPG
- '/sw/bin/gpg-agent', // Fink
- '/usr/bin/gpg-agent'
- );
- } else {
- $agentFiles = array(
- '/usr/bin/gpg-agent',
- '/usr/local/bin/gpg-agent'
- );
- }
-
- foreach ($agentFiles as $agentFile) {
- if (is_executable($agentFile)) {
- $agent = $agentFile;
- break;
- }
- }
-
- return $agent;
- }
-
- // }}
- // {{ _getPinEntry()
-
- private function _getPinEntry()
- {
- // Check if we're running directly from git or if we're using a
- // PEAR-packaged version
- $pinEntry = '@bin-dir@' . DIRECTORY_SEPARATOR . 'crypt-gpg-pinentry';
-
- if ($pinEntry[0] === '@') {
- $pinEntry = dirname(__FILE__) . DIRECTORY_SEPARATOR . '..'
- . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'scripts'
- . DIRECTORY_SEPARATOR . 'crypt-gpg-pinentry';
- }
-
- return $pinEntry;
- }
-
- // }}
- // {{{ _debug()
-
- /**
- * Displays debug text if debugging is turned on
- *
- * Debugging text is prepended with a debug identifier and echoed to stdout.
- *
- * @param string $text the debugging text to display.
- *
- * @return void
- */
- private function _debug($text)
- {
- if ($this->_debug) {
- if (php_sapi_name() === 'cli') {
- foreach (explode(PHP_EOL, $text) as $line) {
- echo "Crypt_GPG DEBUG: ", $line, PHP_EOL;
- }
- } else {
- // running on a web server, format debug output nicely
- foreach (explode(PHP_EOL, $text) as $line) {
- echo "Crypt_GPG DEBUG: <strong>", $line,
- '</strong><br />', PHP_EOL;
- }
- }
- }
- }
-
- // }}}
-}
-
-// }}}
-
-?>
diff --git a/program/lib/Crypt/GPG/Exceptions.php b/program/lib/Crypt/GPG/Exceptions.php
deleted file mode 100644
index 0ca917db6..000000000
--- a/program/lib/Crypt/GPG/Exceptions.php
+++ /dev/null
@@ -1,598 +0,0 @@
-<?php
-
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * Various exception handling classes for Crypt_GPG
- *
- * Crypt_GPG provides an object oriented interface to GNU Privacy
- * Guard (GPG). It requires the GPG executable to be on the system.
- *
- * This file contains various exception classes used by the Crypt_GPG package.
- *
- * PHP version 5
- *
- * LICENSE:
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of the
- * License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Nathan Fredrickson <nathan@silverorange.com>
- * @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2005-2011 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version CVS: $Id$
- * @link http://pear.php.net/package/Crypt_GPG
- */
-
-/**
- * PEAR Exception handler and base class
- */
-require_once 'PEAR/Exception.php';
-
-// {{{ class Crypt_GPG_Exception
-
-/**
- * An exception thrown by the Crypt_GPG package
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2005 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link http://pear.php.net/package/Crypt_GPG
- */
-class Crypt_GPG_Exception extends PEAR_Exception
-{
-}
-
-// }}}
-// {{{ class Crypt_GPG_FileException
-
-/**
- * An exception thrown when a file is used in ways it cannot be used
- *
- * For example, if an output file is specified and the file is not writeable, or
- * if an input file is specified and the file is not readable, this exception
- * is thrown.
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2007-2008 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link http://pear.php.net/package/Crypt_GPG
- */
-class Crypt_GPG_FileException extends Crypt_GPG_Exception
-{
- // {{{ private class properties
-
- /**
- * The name of the file that caused this exception
- *
- * @var string
- */
- private $_filename = '';
-
- // }}}
- // {{{ __construct()
-
- /**
- * Creates a new Crypt_GPG_FileException
- *
- * @param string $message an error message.
- * @param integer $code a user defined error code.
- * @param string $filename the name of the file that caused this exception.
- */
- public function __construct($message, $code = 0, $filename = '')
- {
- $this->_filename = $filename;
- parent::__construct($message, $code);
- }
-
- // }}}
- // {{{ getFilename()
-
- /**
- * Returns the filename of the file that caused this exception
- *
- * @return string the filename of the file that caused this exception.
- *
- * @see Crypt_GPG_FileException::$_filename
- */
- public function getFilename()
- {
- return $this->_filename;
- }
-
- // }}}
-}
-
-// }}}
-// {{{ class Crypt_GPG_OpenSubprocessException
-
-/**
- * An exception thrown when the GPG subprocess cannot be opened
- *
- * This exception is thrown when the {@link Crypt_GPG_Engine} tries to open a
- * new subprocess and fails.
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2005 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link http://pear.php.net/package/Crypt_GPG
- */
-class Crypt_GPG_OpenSubprocessException extends Crypt_GPG_Exception
-{
- // {{{ private class properties
-
- /**
- * The command used to try to open the subprocess
- *
- * @var string
- */
- private $_command = '';
-
- // }}}
- // {{{ __construct()
-
- /**
- * Creates a new Crypt_GPG_OpenSubprocessException
- *
- * @param string $message an error message.
- * @param integer $code a user defined error code.
- * @param string $command the command that was called to open the
- * new subprocess.
- *
- * @see Crypt_GPG::_openSubprocess()
- */
- public function __construct($message, $code = 0, $command = '')
- {
- $this->_command = $command;
- parent::__construct($message, $code);
- }
-
- // }}}
- // {{{ getCommand()
-
- /**
- * Returns the contents of the internal _command property
- *
- * @return string the command used to open the subprocess.
- *
- * @see Crypt_GPG_OpenSubprocessException::$_command
- */
- public function getCommand()
- {
- return $this->_command;
- }
-
- // }}}
-}
-
-// }}}
-// {{{ class Crypt_GPG_InvalidOperationException
-
-/**
- * An exception thrown when an invalid GPG operation is attempted
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2008 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link http://pear.php.net/package/Crypt_GPG
- */
-class Crypt_GPG_InvalidOperationException extends Crypt_GPG_Exception
-{
- // {{{ private class properties
-
- /**
- * The attempted operation
- *
- * @var string
- */
- private $_operation = '';
-
- // }}}
- // {{{ __construct()
-
- /**
- * Creates a new Crypt_GPG_OpenSubprocessException
- *
- * @param string $message an error message.
- * @param integer $code a user defined error code.
- * @param string $operation the operation.
- */
- public function __construct($message, $code = 0, $operation = '')
- {
- $this->_operation = $operation;
- parent::__construct($message, $code);
- }
-
- // }}}
- // {{{ getOperation()
-
- /**
- * Returns the contents of the internal _operation property
- *
- * @return string the attempted operation.
- *
- * @see Crypt_GPG_InvalidOperationException::$_operation
- */
- public function getOperation()
- {
- return $this->_operation;
- }
-
- // }}}
-}
-
-// }}}
-// {{{ class Crypt_GPG_KeyNotFoundException
-
-/**
- * An exception thrown when Crypt_GPG fails to find the key for various
- * operations
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2005 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link http://pear.php.net/package/Crypt_GPG
- */
-class Crypt_GPG_KeyNotFoundException extends Crypt_GPG_Exception
-{
- // {{{ private class properties
-
- /**
- * The key identifier that was searched for
- *
- * @var string
- */
- private $_keyId = '';
-
- // }}}
- // {{{ __construct()
-
- /**
- * Creates a new Crypt_GPG_KeyNotFoundException
- *
- * @param string $message an error message.
- * @param integer $code a user defined error code.
- * @param string $keyId the key identifier of the key.
- */
- public function __construct($message, $code = 0, $keyId= '')
- {
- $this->_keyId = $keyId;
- parent::__construct($message, $code);
- }
-
- // }}}
- // {{{ getKeyId()
-
- /**
- * Gets the key identifier of the key that was not found
- *
- * @return string the key identifier of the key that was not found.
- */
- public function getKeyId()
- {
- return $this->_keyId;
- }
-
- // }}}
-}
-
-// }}}
-// {{{ class Crypt_GPG_NoDataException
-
-/**
- * An exception thrown when Crypt_GPG cannot find valid data for various
- * operations
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2006 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link http://pear.php.net/package/Crypt_GPG
- */
-class Crypt_GPG_NoDataException extends Crypt_GPG_Exception
-{
-}
-
-// }}}
-// {{{ class Crypt_GPG_BadPassphraseException
-
-/**
- * An exception thrown when a required passphrase is incorrect or missing
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2006-2008 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link http://pear.php.net/package/Crypt_GPG
- */
-class Crypt_GPG_BadPassphraseException extends Crypt_GPG_Exception
-{
- // {{{ private class properties
-
- /**
- * Keys for which the passhprase is missing
- *
- * This contains primary user ids indexed by sub-key id.
- *
- * @var array
- */
- private $_missingPassphrases = array();
-
- /**
- * Keys for which the passhprase is incorrect
- *
- * This contains primary user ids indexed by sub-key id.
- *
- * @var array
- */
- private $_badPassphrases = array();
-
- // }}}
- // {{{ __construct()
-
- /**
- * Creates a new Crypt_GPG_BadPassphraseException
- *
- * @param string $message an error message.
- * @param integer $code a user defined error code.
- * @param string $badPassphrases an array containing user ids of keys
- * for which the passphrase is incorrect.
- * @param string $missingPassphrases an array containing user ids of keys
- * for which the passphrase is missing.
- */
- public function __construct($message, $code = 0,
- array $badPassphrases = array(), array $missingPassphrases = array()
- ) {
- $this->_badPassphrases = $badPassphrases;
- $this->_missingPassphrases = $missingPassphrases;
-
- parent::__construct($message, $code);
- }
-
- // }}}
- // {{{ getBadPassphrases()
-
- /**
- * Gets keys for which the passhprase is incorrect
- *
- * @return array an array of keys for which the passphrase is incorrect.
- * The array contains primary user ids indexed by the sub-key
- * id.
- */
- public function getBadPassphrases()
- {
- return $this->_badPassphrases;
- }
-
- // }}}
- // {{{ getMissingPassphrases()
-
- /**
- * Gets keys for which the passhprase is missing
- *
- * @return array an array of keys for which the passphrase is missing.
- * The array contains primary user ids indexed by the sub-key
- * id.
- */
- public function getMissingPassphrases()
- {
- return $this->_missingPassphrases;
- }
-
- // }}}
-}
-
-// }}}
-// {{{ class Crypt_GPG_DeletePrivateKeyException
-
-/**
- * An exception thrown when an attempt is made to delete public key that has an
- * associated private key on the keyring
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2008 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link http://pear.php.net/package/Crypt_GPG
- */
-class Crypt_GPG_DeletePrivateKeyException extends Crypt_GPG_Exception
-{
- // {{{ private class properties
-
- /**
- * The key identifier the deletion attempt was made upon
- *
- * @var string
- */
- private $_keyId = '';
-
- // }}}
- // {{{ __construct()
-
- /**
- * Creates a new Crypt_GPG_DeletePrivateKeyException
- *
- * @param string $message an error message.
- * @param integer $code a user defined error code.
- * @param string $keyId the key identifier of the public key that was
- * attempted to delete.
- *
- * @see Crypt_GPG::deletePublicKey()
- */
- public function __construct($message, $code = 0, $keyId = '')
- {
- $this->_keyId = $keyId;
- parent::__construct($message, $code);
- }
-
- // }}}
- // {{{ getKeyId()
-
- /**
- * Gets the key identifier of the key that was not found
- *
- * @return string the key identifier of the key that was not found.
- */
- public function getKeyId()
- {
- return $this->_keyId;
- }
-
- // }}}
-}
-
-// }}}
-// {{{ class Crypt_GPG_KeyNotCreatedException
-
-/**
- * An exception thrown when an attempt is made to generate a key and the
- * attempt fails
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2011 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link http://pear.php.net/package/Crypt_GPG
- */
-class Crypt_GPG_KeyNotCreatedException extends Crypt_GPG_Exception
-{
-}
-
-// }}}
-// {{{ class Crypt_GPG_InvalidKeyParamsException
-
-/**
- * An exception thrown when an attempt is made to generate a key and the
- * key parameters set on the key generator are invalid
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2011 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link http://pear.php.net/package/Crypt_GPG
- */
-class Crypt_GPG_InvalidKeyParamsException extends Crypt_GPG_Exception
-{
- // {{{ private class properties
-
- /**
- * The key algorithm
- *
- * @var integer
- */
- private $_algorithm = 0;
-
- /**
- * The key size
- *
- * @var integer
- */
- private $_size = 0;
-
- /**
- * The key usage
- *
- * @var integer
- */
- private $_usage = 0;
-
- // }}}
- // {{{ __construct()
-
- /**
- * Creates a new Crypt_GPG_InvalidKeyParamsException
- *
- * @param string $message an error message.
- * @param integer $code a user defined error code.
- * @param string $algorithm the key algorithm.
- * @param string $size the key size.
- * @param string $usage the key usage.
- */
- public function __construct(
- $message,
- $code = 0,
- $algorithm = 0,
- $size = 0,
- $usage = 0
- ) {
- parent::__construct($message, $code);
-
- $this->_algorithm = $algorithm;
- $this->_size = $size;
- $this->_usage = $usage;
- }
-
- // }}}
- // {{{ getAlgorithm()
-
- /**
- * Gets the key algorithm
- *
- * @return integer the key algorithm.
- */
- public function getAlgorithm()
- {
- return $this->_algorithm;
- }
-
- // }}}
- // {{{ getSize()
-
- /**
- * Gets the key size
- *
- * @return integer the key size.
- */
- public function getSize()
- {
- return $this->_size;
- }
-
- // }}}
- // {{{ getUsage()
-
- /**
- * Gets the key usage
- *
- * @return integer the key usage.
- */
- public function getUsage()
- {
- return $this->_usage;
- }
-
- // }}}
-}
-
-// }}}
-
-?>
diff --git a/program/lib/Crypt/GPG/Key.php b/program/lib/Crypt/GPG/Key.php
deleted file mode 100644
index 6ecb538bc..000000000
--- a/program/lib/Crypt/GPG/Key.php
+++ /dev/null
@@ -1,223 +0,0 @@
-<?php
-
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * Contains a class representing GPG keys
- *
- * PHP version 5
- *
- * LICENSE:
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of the
- * License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2008-2010 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version CVS: $Id$
- * @link http://pear.php.net/package/Crypt_GPG
- */
-
-/**
- * Sub-key class definition
- */
-require_once 'Crypt/GPG/SubKey.php';
-
-/**
- * User id class definition
- */
-require_once 'Crypt/GPG/UserId.php';
-
-// {{{ class Crypt_GPG_Key
-
-/**
- * A data class for GPG key information
- *
- * This class is used to store the results of the {@link Crypt_GPG::getKeys()}
- * method.
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2008-2010 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link http://pear.php.net/package/Crypt_GPG
- * @see Crypt_GPG::getKeys()
- */
-class Crypt_GPG_Key
-{
- // {{{ class properties
-
- /**
- * The user ids associated with this key
- *
- * This is an array of {@link Crypt_GPG_UserId} objects.
- *
- * @var array
- *
- * @see Crypt_GPG_Key::addUserId()
- * @see Crypt_GPG_Key::getUserIds()
- */
- private $_userIds = array();
-
- /**
- * The subkeys of this key
- *
- * This is an array of {@link Crypt_GPG_SubKey} objects.
- *
- * @var array
- *
- * @see Crypt_GPG_Key::addSubKey()
- * @see Crypt_GPG_Key::getSubKeys()
- */
- private $_subKeys = array();
-
- // }}}
- // {{{ getSubKeys()
-
- /**
- * Gets the sub-keys of this key
- *
- * @return array the sub-keys of this key.
- *
- * @see Crypt_GPG_Key::addSubKey()
- */
- public function getSubKeys()
- {
- return $this->_subKeys;
- }
-
- // }}}
- // {{{ getUserIds()
-
- /**
- * Gets the user ids of this key
- *
- * @return array the user ids of this key.
- *
- * @see Crypt_GPG_Key::addUserId()
- */
- public function getUserIds()
- {
- return $this->_userIds;
- }
-
- // }}}
- // {{{ getPrimaryKey()
-
- /**
- * Gets the primary sub-key of this key
- *
- * The primary key is the first added sub-key.
- *
- * @return Crypt_GPG_SubKey the primary sub-key of this key.
- */
- public function getPrimaryKey()
- {
- $primary_key = null;
- if (count($this->_subKeys) > 0) {
- $primary_key = $this->_subKeys[0];
- }
- return $primary_key;
- }
-
- // }}}
- // {{{ canSign()
-
- /**
- * Gets whether or not this key can sign data
- *
- * This key can sign data if any sub-key of this key can sign data.
- *
- * @return boolean true if this key can sign data and false if this key
- * cannot sign data.
- */
- public function canSign()
- {
- $canSign = false;
- foreach ($this->_subKeys as $subKey) {
- if ($subKey->canSign()) {
- $canSign = true;
- break;
- }
- }
- return $canSign;
- }
-
- // }}}
- // {{{ canEncrypt()
-
- /**
- * Gets whether or not this key can encrypt data
- *
- * This key can encrypt data if any sub-key of this key can encrypt data.
- *
- * @return boolean true if this key can encrypt data and false if this
- * key cannot encrypt data.
- */
- public function canEncrypt()
- {
- $canEncrypt = false;
- foreach ($this->_subKeys as $subKey) {
- if ($subKey->canEncrypt()) {
- $canEncrypt = true;
- break;
- }
- }
- return $canEncrypt;
- }
-
- // }}}
- // {{{ addSubKey()
-
- /**
- * Adds a sub-key to this key
- *
- * The first added sub-key will be the primary key of this key.
- *
- * @param Crypt_GPG_SubKey $subKey the sub-key to add.
- *
- * @return Crypt_GPG_Key the current object, for fluent interface.
- */
- public function addSubKey(Crypt_GPG_SubKey $subKey)
- {
- $this->_subKeys[] = $subKey;
- return $this;
- }
-
- // }}}
- // {{{ addUserId()
-
- /**
- * Adds a user id to this key
- *
- * @param Crypt_GPG_UserId $userId the user id to add.
- *
- * @return Crypt_GPG_Key the current object, for fluent interface.
- */
- public function addUserId(Crypt_GPG_UserId $userId)
- {
- $this->_userIds[] = $userId;
- return $this;
- }
-
- // }}}
-}
-
-// }}}
-
-?>
diff --git a/program/lib/Crypt/GPG/KeyGenerator.php b/program/lib/Crypt/GPG/KeyGenerator.php
deleted file mode 100644
index f59c0ee3a..000000000
--- a/program/lib/Crypt/GPG/KeyGenerator.php
+++ /dev/null
@@ -1,790 +0,0 @@
-<?php
-
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * Crypt_GPG is a package to use GPG from PHP
- *
- * This file contains an object that handles GnuPG key generation.
- *
- * PHP version 5
- *
- * LICENSE:
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of the
- * License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2011-2013 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version CVS: $Id:$
- * @link http://pear.php.net/package/Crypt_GPG
- * @link http://www.gnupg.org/
- */
-
-/**
- * Base class for GPG methods
- */
-require_once 'Crypt/GPGAbstract.php';
-
-/**
- * Status output handler for key generation
- */
-require_once 'Crypt/GPG/KeyGeneratorStatusHandler.php';
-
-/**
- * Error output handler for key generation
- */
-require_once 'Crypt/GPG/KeyGeneratorErrorHandler.php';
-
-// {{{ class Crypt_GPG_KeyGenerator
-
-/**
- * GnuPG key generator
- *
- * This class provides an object oriented interface for generating keys with
- * the GNU Privacy Guard (GPG).
- *
- * Secure key generation requires true random numbers, and as such can be slow.
- * If the operating system runs out of entropy, key generation will block until
- * more entropy is available.
- *
- * If quick key generation is important, a hardware entropy generator, or an
- * entropy gathering daemon may be installed. For example, administrators of
- * Debian systems may want to install the 'randomsound' package.
- *
- * This class uses the experimental automated key generation support available
- * in GnuPG. See <b>doc/DETAILS</b> in the
- * {@link http://www.gnupg.org/download/ GPG distribution} for detailed
- * information on the key generation format.
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Nathan Fredrickson <nathan@silverorange.com>
- * @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2005-2013 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link http://pear.php.net/package/Crypt_GPG
- * @link http://www.gnupg.org/
- */
-class Crypt_GPG_KeyGenerator extends Crypt_GPGAbstract
-{
- // {{{ protected properties
-
- /**
- * The expiration date of generated keys
- *
- * @var integer
- *
- * @see Crypt_GPG_KeyGenerator::setExpirationDate()
- */
- protected $expirationDate = 0;
-
- /**
- * The passphrase of generated keys
- *
- * @var string
- *
- * @see Crypt_GPG_KeyGenerator::setPassphrase()
- */
- protected $passphrase = '';
-
- /**
- * The algorithm for generated primary keys
- *
- * @var integer
- *
- * @see Crypt_GPG_KeyGenerator::setKeyParams()
- */
- protected $keyAlgorithm = Crypt_GPG_SubKey::ALGORITHM_DSA;
-
- /**
- * The size of generated primary keys
- *
- * @var integer
- *
- * @see Crypt_GPG_KeyGenerator::setKeyParams()
- */
- protected $keySize = 1024;
-
- /**
- * The usages of generated primary keys
- *
- * This is a bitwise combination of the usage constants in
- * {@link Crypt_GPG_SubKey}.
- *
- * @var integer
- *
- * @see Crypt_GPG_KeyGenerator::setKeyParams()
- */
- protected $keyUsage = 6; // USAGE_SIGN | USAGE_CERTIFY
-
- /**
- * The algorithm for generated sub-keys
- *
- * @var integer
- *
- * @see Crypt_GPG_KeyGenerator::setSubKeyParams()
- */
- protected $subKeyAlgorithm = Crypt_GPG_SubKey::ALGORITHM_ELGAMAL_ENC;
-
- /**
- * The size of generated sub-keys
- *
- * @var integer
- *
- * @see Crypt_GPG_KeyGenerator::setSubKeyParams()
- */
- protected $subKeySize = 2048;
-
- /**
- * The usages of generated sub-keys
- *
- * This is a bitwise combination of the usage constants in
- * {@link Crypt_GPG_SubKey}.
- *
- * @var integer
- *
- * @see Crypt_GPG_KeyGenerator::setSubKeyParams()
- */
- protected $subKeyUsage = Crypt_GPG_SubKey::USAGE_ENCRYPT;
-
- /**
- * The GnuPG status handler to use for key generation
- *
- * @var Crypt_GPG_KeyGeneratorStatusHandler
- *
- * @see Crypt_GPG_KeyGenerator::setStatusHandler()
- */
- protected $statusHandler = null;
-
- /**
- * The GnuPG error handler to use for key generation
- *
- * @var Crypt_GPG_KeyGeneratorErrorHandler
- *
- * @see Crypt_GPG_KeyGenerator::setErrorHandler()
- */
- protected $errorHandler = null;
-
- // }}}
- // {{{ __construct()
-
- /**
- * Creates a new GnuPG key generator
- *
- * Available options are:
- *
- * - <kbd>string homedir</kbd> - the directory where the GPG
- * keyring files are stored. If not
- * specified, Crypt_GPG uses the
- * default of <kbd>~/.gnupg</kbd>.
- * - <kbd>string publicKeyring</kbd> - the file path of the public
- * keyring. Use this if the public
- * keyring is not in the homedir, or
- * if the keyring is in a directory
- * not writable by the process
- * invoking GPG (like Apache). Then
- * you can specify the path to the
- * keyring with this option
- * (/foo/bar/pubring.gpg), and specify
- * a writable directory (like /tmp)
- * using the <i>homedir</i> option.
- * - <kbd>string privateKeyring</kbd> - the file path of the private
- * keyring. Use this if the private
- * keyring is not in the homedir, or
- * if the keyring is in a directory
- * not writable by the process
- * invoking GPG (like Apache). Then
- * you can specify the path to the
- * keyring with this option
- * (/foo/bar/secring.gpg), and specify
- * a writable directory (like /tmp)
- * using the <i>homedir</i> option.
- * - <kbd>string trustDb</kbd> - the file path of the web-of-trust
- * database. Use this if the trust
- * database is not in the homedir, or
- * if the database is in a directory
- * not writable by the process
- * invoking GPG (like Apache). Then
- * you can specify the path to the
- * trust database with this option
- * (/foo/bar/trustdb.gpg), and specify
- * a writable directory (like /tmp)
- * using the <i>homedir</i> option.
- * - <kbd>string binary</kbd> - the location of the GPG binary. If
- * not specified, the driver attempts
- * to auto-detect the GPG binary
- * location using a list of known
- * default locations for the current
- * operating system. The option
- * <kbd>gpgBinary</kbd> is a
- * deprecated alias for this option.
- * - <kbd>string agent</kbd> - the location of the GnuPG agent
- * binary. The gpg-agent is only
- * used for GnuPG 2.x. If not
- * specified, the engine attempts
- * to auto-detect the gpg-agent
- * binary location using a list of
- * know default locations for the
- * current operating system.
- * - <kbd>boolean debug</kbd> - whether or not to use debug mode.
- * When debug mode is on, all
- * communication to and from the GPG
- * subprocess is logged. This can be
- *
- * @param array $options optional. An array of options used to create the
- * GPG object. All options are optional and are
- * represented as key-value pairs.
- *
- * @throws Crypt_GPG_FileException if the <kbd>homedir</kbd> does not exist
- * and cannot be created. This can happen if <kbd>homedir</kbd> is
- * not specified, Crypt_GPG is run as the web user, and the web
- * user has no home directory. This exception is also thrown if any
- * of the options <kbd>publicKeyring</kbd>,
- * <kbd>privateKeyring</kbd> or <kbd>trustDb</kbd> options are
- * specified but the files do not exist or are are not readable.
- * This can happen if the user running the Crypt_GPG process (for
- * example, the Apache user) does not have permission to read the
- * files.
- *
- * @throws PEAR_Exception if the provided <kbd>binary</kbd> is invalid, or
- * if no <kbd>binary</kbd> is provided and no suitable binary could
- * be found.
- *
- * @throws PEAR_Exception if the provided <kbd>agent</kbd> is invalid, or
- * if no <kbd>agent</kbd> is provided and no suitable gpg-agent
- * cound be found.
- */
- public function __construct(array $options = array())
- {
- parent::__construct($options);
-
- $this->statusHandler = new Crypt_GPG_KeyGeneratorStatusHandler();
- $this->errorHandler = new Crypt_GPG_KeyGeneratorErrorHandler();
- }
-
- // }}}
- // {{{ setExpirationDate()
-
- /**
- * Sets the expiration date of generated keys
- *
- * @param string|integer $date either a string that may be parsed by
- * PHP's strtotime() function, or an integer
- * timestamp representing the number of seconds
- * since the UNIX epoch. This date must be at
- * least one date in the future. Keys that
- * expire in the past may not be generated. Use
- * an expiration date of 0 for keys that do not
- * expire.
- *
- * @throws InvalidArgumentException if the date is not a valid format, or
- * if the date is not at least one day in
- * the future, or if the date is greater
- * than 2038-01-19T03:14:07.
- *
- * @return Crypt_GPG_KeyGenerator the current object, for fluent interface.
- */
- public function setExpirationDate($date)
- {
- if (is_int($date) || ctype_digit(strval($date))) {
- $expirationDate = intval($date);
- } else {
- $expirationDate = strtotime($date);
- }
-
- if ($expirationDate === false) {
- throw new InvalidArgumentException(
- sprintf(
- 'Invalid expiration date format: "%s". Please use a ' .
- 'format compatible with PHP\'s strtotime().',
- $date
- )
- );
- }
-
- if ($expirationDate !== 0 && $expirationDate < time() + 86400) {
- throw new InvalidArgumentException(
- 'Expiration date must be at least a day in the future.'
- );
- }
-
- // GnuPG suffers from the 2038 bug
- if ($expirationDate > 2147483647) {
- throw new InvalidArgumentException(
- 'Expiration date must not be greater than 2038-01-19T03:14:07.'
- );
- }
-
- $this->expirationDate = $expirationDate;
-
- return $this;
- }
-
- // }}}
- // {{{ setPassphrase()
-
- /**
- * Sets the passphrase of generated keys
- *
- * @param string $passphrase the passphrase to use for generated keys. Use
- * null or an empty string for no passphrase.
- *
- * @return Crypt_GPG_KeyGenerator the current object, for fluent interface.
- */
- public function setPassphrase($passphrase)
- {
- $this->passphrase = strval($passphrase);
- return $this;
- }
-
- // }}}
- // {{{ setKeyParams()
-
- /**
- * Sets the parameters for the primary key of generated key-pairs
- *
- * @param integer $algorithm the algorithm used by the key. This should be
- * one of the Crypt_GPG_SubKey::ALGORITHM_*
- * constants.
- * @param integer $size optional. The size of the key. Different
- * algorithms have different size requirements.
- * If not specified, the default size for the
- * specified algorithm will be used. If an
- * invalid key size is used, GnuPG will do its
- * best to round it to a valid size.
- * @param integer $usage optional. A bitwise combination of key usages.
- * If not specified, the primary key will be used
- * only to sign and certify. This is the default
- * behavior of GnuPG in interactive mode. Use
- * the Crypt_GPG_SubKey::USAGE_* constants here.
- * The primary key may be used to certify even
- * if the certify usage is not specified.
- *
- * @return Crypt_GPG_KeyGenerator the current object, for fluent interface.
- */
- public function setKeyParams($algorithm, $size = 0, $usage = 0)
- {
- $apgorithm = intval($algorithm);
-
- if ($algorithm === Crypt_GPG_SubKey::ALGORITHM_ELGAMAL_ENC) {
- throw new Crypt_GPG_InvalidKeyParamsException(
- 'Primary key algorithm must be capable of signing. The ' .
- 'Elgamal algorithm can only encrypt.',
- 0,
- $algorithm,
- $size,
- $usage
- );
- }
-
- if ($size != 0) {
- $size = intval($size);
- }
-
- if ($usage != 0) {
- $usage = intval($usage);
- }
-
- $usageEncrypt = Crypt_GPG_SubKey::USAGE_ENCRYPT;
-
- if ( $algorithm === Crypt_GPG_SubKey::ALGORITHM_DSA
- && ($usage & $usageEncrypt) === $usageEncrypt
- ) {
- throw new Crypt_GPG_InvalidKeyParamsException(
- 'The DSA algorithm is not capable of encrypting. Please ' .
- 'specify a different algorithm or do not include encryption ' .
- 'as a usage for the primary key.',
- 0,
- $algorithm,
- $size,
- $usage
- );
- }
-
- $this->keyAlgorithm = $algorithm;
-
- if ($size != 0) {
- $this->keySize = $size;
- }
-
- if ($usage != 0) {
- $this->keyUsage = $usage;
- }
-
- return $this;
- }
-
- // }}}
- // {{{ setSubKeyParams()
-
- /**
- * Sets the parameters for the sub-key of generated key-pairs
- *
- * @param integer $algorithm the algorithm used by the key. This should be
- * one of the Crypt_GPG_SubKey::ALGORITHM_*
- * constants.
- * @param integer $size optional. The size of the key. Different
- * algorithms have different size requirements.
- * If not specified, the default size for the
- * specified algorithm will be used. If an
- * invalid key size is used, GnuPG will do its
- * best to round it to a valid size.
- * @param integer $usage optional. A bitwise combination of key usages.
- * If not specified, the sub-key will be used
- * only to encrypt. This is the default behavior
- * of GnuPG in interactive mode. Use the
- * Crypt_GPG_SubKey::USAGE_* constants here.
- *
- * @return Crypt_GPG_KeyGenerator the current object, for fluent interface.
- */
- public function setSubKeyParams($algorithm, $size = '', $usage = 0)
- {
- $apgorithm = intval($algorithm);
-
- if ($size != 0) {
- $size = intval($size);
- }
-
- if ($usage != 0) {
- $usage = intval($usage);
- }
-
- $usageSign = Crypt_GPG_SubKey::USAGE_SIGN;
-
- if ( $algorithm === Crypt_GPG_SubKey::ALGORITHM_ELGAMAL_ENC
- && ($usage & $usageSign) === $usageSign
- ) {
- throw new Crypt_GPG_InvalidKeyParamsException(
- 'The Elgamal algorithm is not capable of signing. Please ' .
- 'specify a different algorithm or do not include signing ' .
- 'as a usage for the sub-key.',
- 0,
- $algorithm,
- $size,
- $usage
- );
- }
-
- $usageEncrypt = Crypt_GPG_SubKey::USAGE_ENCRYPT;
-
- if ( $algorithm === Crypt_GPG_SubKey::ALGORITHM_DSA
- && ($usage & $usageEncrypt) === $usageEncrypt
- ) {
- throw new Crypt_GPG_InvalidKeyParamsException(
- 'The DSA algorithm is not capable of encrypting. Please ' .
- 'specify a different algorithm or do not include encryption ' .
- 'as a usage for the sub-key.',
- 0,
- $algorithm,
- $size,
- $usage
- );
- }
-
- $this->subKeyAlgorithm = $algorithm;
-
- if ($size != 0) {
- $this->subKeySize = $size;
- }
-
- if ($usage != 0) {
- $this->subKeyUsage = $usage;
- }
-
- return $this;
- }
-
- // }}}
- // {{{ setStatusHandler()
-
- /**
- * Sets the status handler to use for key generation
- *
- * Normally this method does not need to be used. It provides a means for
- * dependency injection.
- *
- * @param Crypt_GPG_KeyStatusHandler $handler the key status handler to
- * use.
- *
- * @return Crypt_GPG_KeyGenerator the current object, for fluent interface.
- */
- public function setStatusHandler(
- Crypt_GPG_KeyGeneratorStatusHandler $handler
- ) {
- $this->statusHandler = $handler;
- return $this;
- }
-
- // }}}
- // {{{ setErrorHandler()
-
- /**
- * Sets the error handler to use for key generation
- *
- * Normally this method does not need to be used. It provides a means for
- * dependency injection.
- *
- * @param Crypt_GPG_KeyErrorHandler $handler the key error handler to
- * use.
- *
- * @return Crypt_GPG_KeyGenerator the current object, for fluent interface.
- */
- public function setErrorHandler(
- Crypt_GPG_KeyGeneratorErrorHandler $handler
- ) {
- $this->errorHandler = $handler;
- return $this;
- }
-
- // }}}
- // {{{ generateKey()
-
- /**
- * Generates a new key-pair in the current keyring
- *
- * Secure key generation requires true random numbers, and as such can be
- * solw. If the operating system runs out of entropy, key generation will
- * block until more entropy is available.
- *
- * If quick key generation is important, a hardware entropy generator, or
- * an entropy gathering daemon may be installed. For example,
- * administrators of Debian systems may want to install the 'randomsound'
- * package.
- *
- * @param string|Crypt_GPG_UserId $name either a {@link Crypt_GPG_UserId}
- * object, or a string containing
- * the name of the user id.
- * @param string $email optional. If <i>$name</i> is
- * specified as a string, this is
- * the email address of the user id.
- * @param string $comment optional. If <i>$name</i> is
- * specified as a string, this is
- * the comment of the user id.
- *
- * @return Crypt_GPG_Key the newly generated key.
- *
- * @throws Crypt_GPG_KeyNotCreatedException if the key parameters are
- * incorrect, if an unknown error occurs during key generation, or
- * if the newly generated key is not found in the keyring.
- *
- * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
- * Use the <kbd>debug</kbd> option and file a bug report if these
- * exceptions occur.
- */
- public function generateKey($name, $email = '', $comment = '')
- {
- $handle = uniqid('key', true);
-
- $userId = $this->getUserId($name, $email, $comment);
-
- $keyParams = array(
- 'Key-Type' => $this->keyAlgorithm,
- 'Key-Length' => $this->keySize,
- 'Key-Usage' => $this->getUsage($this->keyUsage),
- 'Subkey-Type' => $this->subKeyAlgorithm,
- 'Subkey-Length' => $this->subKeySize,
- 'Subkey-Usage' => $this->getUsage($this->subKeyUsage),
- 'Name-Real' => $userId->getName(),
- 'Handle' => $handle,
- );
-
- if ($this->expirationDate != 0) {
- // GnuPG only accepts granularity of days
- $expirationDate = date('Y-m-d', $this->expirationDate);
- $keyParams['Expire-Date'] = $expirationDate;
- }
-
- if ($this->passphrase != '') {
- $keyParams['Passphrase'] = $this->passphrase;
- }
-
- if ($userId->getEmail() != '') {
- $keyParams['Name-Email'] = $userId->getEmail();
- }
-
- if ($userId->getComment() != '') {
- $keyParams['Name-Comment'] = $userId->getComment();
- }
-
-
- $keyParamsFormatted = array();
- foreach ($keyParams as $name => $value) {
- $keyParamsFormatted[] = $name . ': ' . $value;
- }
-
- $input = implode("\n", $keyParamsFormatted) . "\n%commit\n";
-
- $statusHandler = clone $this->statusHandler;
- $statusHandler->setHandle($handle);
-
- $errorHandler = clone $this->errorHandler;
-
- $this->engine->reset();
- $this->engine->addStatusHandler(array($statusHandler, 'handle'));
- $this->engine->addErrorHandler(array($errorHandler, 'handle'));
- $this->engine->setInput($input);
- $this->engine->setOutput($output);
- $this->engine->setOperation('--gen-key', array('--batch'));
- $this->engine->run();
-
- $code = $errorHandler->getErrorCode();
- switch ($code) {
- case self::ERROR_BAD_KEY_PARAMS:
- switch ($errorHandler->getLineNumber()) {
- case 1:
- throw new Crypt_GPG_InvalidKeyParamsException(
- 'Invalid primary key algorithm specified.',
- 0,
- $this->keyAlgorithm,
- $this->keySize,
- $this->keyUsage
- );
- case 4:
- throw new Crypt_GPG_InvalidKeyParamsException(
- 'Invalid sub-key algorithm specified.',
- 0,
- $this->subKeyAlgorithm,
- $this->subKeySize,
- $this->subKeyUsage
- );
- default:
- throw new Crypt_GPG_InvalidKeyParamsException(
- 'Invalid key algorithm specified.'
- );
- }
- }
-
- $code = $this->engine->getErrorCode();
-
- switch ($code) {
- case self::ERROR_NONE:
- break;
- default:
- throw new Crypt_GPG_Exception(
- 'Unknown error generating key-pair. Please use the \'debug\' ' .
- 'option when creating the Crypt_GPG object, and file a bug ' .
- 'report at ' . self::BUG_URI,
- $code
- );
- }
-
- $code = $statusHandler->getErrorCode();
-
- switch ($code) {
- case self::ERROR_NONE:
- break;
- case self::ERROR_KEY_NOT_CREATED:
- throw new Crypt_GPG_KeyNotCreatedException(
- 'Unable to create new key-pair. Invalid key parameters. ' .
- 'Make sure the specified key algorithms and sizes are ' .
- 'correct.',
- $code
- );
- }
-
- $fingerprint = $statusHandler->getKeyFingerprint();
- $keys = $this->_getKeys($fingerprint);
-
- if (count($keys) === 0) {
- throw new Crypt_GPG_KeyNotCreatedException(
- sprintf(
- 'Newly created key "%s" not found in keyring.',
- $fingerprint
- )
- );
- }
-
- return $keys[0];
- }
-
- // }}}
- // {{{ getUsage()
-
- /**
- * Builds a GnuPG key usage string suitable for key generation
- *
- * See <b>doc/DETAILS</b> in the
- * {@link http://www.gnupg.org/download/ GPG distribution} for detailed
- * information on the key usage format.
- *
- * @param integer $usage a bitwise combination of the key usages. This is
- * a combination of the Crypt_GPG_SubKey::USAGE_*
- * constants.
- *
- * @return string the key usage string.
- */
- protected function getUsage($usage)
- {
- $map = array(
- Crypt_GPG_SubKey::USAGE_ENCRYPT => 'encrypt',
- Crypt_GPG_SubKey::USAGE_SIGN => 'sign',
- Crypt_GPG_SubKey::USAGE_CERTIFY => 'cert',
- Crypt_GPG_SubKey::USAGE_AUTHENTICATION => 'auth',
- );
-
- // cert is always used for primary keys and does not need to be
- // specified
- $usage &= ~Crypt_GPG_SubKey::USAGE_CERTIFY;
-
- $usageArray = array();
-
- foreach ($map as $key => $value) {
- if (($usage & $key) === $key) {
- $usageArray[] = $value;
- }
- }
-
- return implode(',', $usageArray);
- }
-
- // }}}
- // {{{ getUserId()
-
- /**
- * Gets a user id object from parameters
- *
- * @param string|Crypt_GPG_UserId $name either a {@link Crypt_GPG_UserId}
- * object, or a string containing
- * the name of the user id.
- * @param string $email optional. If <i>$name</i> is
- * specified as a string, this is
- * the email address of the user id.
- * @param string $comment optional. If <i>$name</i> is
- * specified as a string, this is
- * the comment of the user id.
- *
- * @return Crypt_GPG_UserId a user id object for the specified parameters.
- */
- protected function getUserId($name, $email = '', $comment = '')
- {
- if ($name instanceof Crypt_GPG_UserId) {
- $userId = $name;
- } else {
- $userId = new Crypt_GPG_UserId();
- $userId->setName($name)->setEmail($email)->setComment($comment);
- }
-
- return $userId;
- }
-
- // }}}
-}
-
-// }}}
-
-?>
diff --git a/program/lib/Crypt/GPG/KeyGeneratorErrorHandler.php b/program/lib/Crypt/GPG/KeyGeneratorErrorHandler.php
deleted file mode 100644
index ad9ebf395..000000000
--- a/program/lib/Crypt/GPG/KeyGeneratorErrorHandler.php
+++ /dev/null
@@ -1,121 +0,0 @@
-<?php
-
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * Crypt_GPG is a package to use GPG from PHP
- *
- * This file contains an object that handles GPG's error output for the
- * key generation operation.
- *
- * PHP version 5
- *
- * LICENSE:
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of the
- * License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2011-2013 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version CVS: $Id:$
- * @link http://pear.php.net/package/Crypt_GPG
- * @link http://www.gnupg.org/
- */
-
-/**
- * Error line handler for the key generation operation
- *
- * This class is used internally by Crypt_GPG and does not need be used
- * directly. See the {@link Crypt_GPG} class for end-user API.
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2011-2013 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link http://pear.php.net/package/Crypt_GPG
- * @link http://www.gnupg.org/
- */
-class Crypt_GPG_KeyGeneratorErrorHandler
-{
- // {{{ protected properties
-
- /**
- * Error code (if any) caused by key generation
- *
- * @var integer
- */
- protected $errorCode = Crypt_GPG::ERROR_NONE;
-
- /**
- * Line number at which the error occurred
- *
- * @var integer
- */
- protected $lineNumber = null;
-
- // }}}
- // {{{ handle()
-
- /**
- * Handles an error line
- *
- * @param string $line the error line to handle.
- *
- * @return void
- */
- public function handle($line)
- {
- $matches = array();
- $pattern = '/:([0-9]+): invalid algorithm$/';
- if (preg_match($pattern, $line, $matches) === 1) {
- $this->errorCode = Crypt_GPG::ERROR_BAD_KEY_PARAMS;
- $this->lineNumber = intval($matches[1]);
- }
- }
-
- // }}}
- // {{{ getErrorCode()
-
- /**
- * Gets the error code resulting from key gneration
- *
- * @return integer the error code resulting from key generation.
- */
- public function getErrorCode()
- {
- return $this->errorCode;
- }
-
- // }}}
- // {{{ getLineNumber()
-
- /**
- * Gets the line number at which the error occurred
- *
- * @return integer the line number at which the error occurred. Null if
- * no error occurred.
- */
- public function getLineNumber()
- {
- return $this->lineNumber;
- }
-
- // }}}
-}
-
-?>
diff --git a/program/lib/Crypt/GPG/KeyGeneratorStatusHandler.php b/program/lib/Crypt/GPG/KeyGeneratorStatusHandler.php
deleted file mode 100644
index 8b4c85c7a..000000000
--- a/program/lib/Crypt/GPG/KeyGeneratorStatusHandler.php
+++ /dev/null
@@ -1,173 +0,0 @@
-<?php
-
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * Crypt_GPG is a package to use GPG from PHP
- *
- * This file contains an object that handles GPG's status output for the
- * key generation operation.
- *
- * PHP version 5
- *
- * LICENSE:
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of the
- * License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2011-2013 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version CVS: $Id:$
- * @link http://pear.php.net/package/Crypt_GPG
- * @link http://www.gnupg.org/
- */
-
-/**
- * Status line handler for the key generation operation
- *
- * This class is used internally by Crypt_GPG and does not need be used
- * directly. See the {@link Crypt_GPG} class for end-user API.
- *
- * This class is responsible for parsing the final key fingerprint from the
- * status output and for updating the key generation progress file. See
- * <b>doc/DETAILS</b> in the
- * {@link http://www.gnupg.org/download/ GPG distribution} for detailed
- * information on GPG's status output for the batch key generation operation.
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2011-2013 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link http://pear.php.net/package/Crypt_GPG
- * @link http://www.gnupg.org/
- */
-class Crypt_GPG_KeyGeneratorStatusHandler
-{
- // {{{ protected properties
-
- /**
- * The key fingerprint
- *
- * Ths key fingerprint is emitted by GPG after the key generation is
- * complete.
- *
- * @var string
- */
- protected $keyFingerprint = '';
-
- /**
- * The unique key handle used by this handler
- *
- * The key handle is used to track GPG status output for a particular key
- * before the key has its own identifier.
- *
- * @var string
- *
- * @see Crypt_GPG_KeyGeneratorStatusHandler::setHandle()
- */
- protected $handle = '';
-
- /**
- * Error code (if any) caused by key generation
- *
- * @var integer
- */
- protected $errorCode = Crypt_GPG::ERROR_NONE;
-
- // }}}
- // {{{ setHandle()
-
- /**
- * Sets the unique key handle used by this handler
- *
- * The key handle is used to track GPG status output for a particular key
- * before the key has its own identifier.
- *
- * @param string $handle the key handle this status handle will use.
- *
- * @return Crypt_GPG_KeyGeneratorStatusHandler the current object, for
- * fluent interface.
- */
- public function setHandle($handle)
- {
- $this->handle = strval($handle);
- return $this;
- }
-
- // }}}
- // {{{ handle()
-
- /**
- * Handles a status line
- *
- * @param string $line the status line to handle.
- *
- * @return void
- */
- public function handle($line)
- {
- $tokens = explode(' ', $line);
- switch ($tokens[0]) {
- case 'KEY_CREATED':
- if ($tokens[3] == $this->handle) {
- $this->keyFingerprint = $tokens[2];
- }
- break;
-
- case 'KEY_NOT_CREATED':
- if ($tokens[1] == $this->handle) {
- $this->errorCode = Crypt_GPG::ERROR_KEY_NOT_CREATED;
- }
- break;
-
- case 'PROGRESS':
- // todo: at some point, support reporting status async
- break;
- }
- }
-
- // }}}
- // {{{ getKeyFingerprint()
-
- /**
- * Gets the key fingerprint parsed by this handler
- *
- * @return array the key fingerprint parsed by this handler.
- */
- public function getKeyFingerprint()
- {
- return $this->keyFingerprint;
- }
-
- // }}}
- // {{{ getErrorCode()
-
- /**
- * Gets the error code resulting from key gneration
- *
- * @return integer the error code resulting from key generation.
- */
- public function getErrorCode()
- {
- return $this->errorCode;
- }
-
- // }}}
-}
-
-?>
diff --git a/program/lib/Crypt/GPG/PinEntry.php b/program/lib/Crypt/GPG/PinEntry.php
deleted file mode 100644
index c09703617..000000000
--- a/program/lib/Crypt/GPG/PinEntry.php
+++ /dev/null
@@ -1,875 +0,0 @@
-<?php
-
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * Contains a class implementing automatic pinentry for gpg-agent
- *
- * PHP version 5
- *
- * LICENSE:
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of the
- * License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2013 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version CVS: $Id$
- * @link http://pear.php.net/package/Crypt_GPG
- */
-
-/**
- * CLI user-interface and parser.
- */
-require_once 'Console/CommandLine.php';
-
-// {{{ class Crypt_GPG_PinEntry
-
-/**
- * A command-line dummy pinentry program for use with gpg-agent and Crypt_GPG
- *
- * This pinentry receives passphrases through en environment variable and
- * automatically enters the PIN in response to gpg-agent requests. No user-
- * interaction required.
- *
- * Thie pinentry can be run independently for testing and debugging with the
- * following syntax:
- *
- * <pre>
- * Usage:
- * crypt-gpg-pinentry [options]
- *
- * Options:
- * -l log, --log=log Optional location to log pinentry activity.
- * -v, --verbose Sets verbosity level. Use multiples for more detail
- * (e.g. "-vv").
- * -h, --help show this help message and exit
- * --version show the program version and exit
- * </pre>
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2013 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link http://pear.php.net/package/Crypt_GPG
- * @see Crypt_GPG::getKeys()
- */
-class Crypt_GPG_PinEntry
-{
- // {{{ class constants
-
- /**
- * Verbosity level for showing no output.
- */
- const VERBOSITY_NONE = 0;
-
- /**
- * Verbosity level for showing error output.
- */
- const VERBOSITY_ERRORS = 1;
-
- /**
- * Verbosity level for showing all output, including Assuan protocol
- * messages.
- */
- const VERBOSITY_ALL = 2;
-
- /**
- * Length of buffer for reading lines from the Assuan server.
- *
- * PHP reads 8192 bytes. If this is set to less than 8192, PHP reads 8192
- * and buffers the rest so we might as well just read 8192.
- *
- * Using values other than 8192 also triggers PHP bugs.
- *
- * @see http://bugs.php.net/bug.php?id=35224
- */
- const CHUNK_SIZE = 8192;
-
- // }}}
- // {{{ protected properties
-
- /**
- * File handle for the input stream
- *
- * @var resource
- */
- protected $stdin = null;
-
- /**
- * File handle for the output stream
- *
- * @var resource
- */
- protected $stdout = null;
-
- /**
- * File handle for the log file if a log file is used
- *
- * @var resource
- */
- protected $logFile = null;
-
- /**
- * Whether or not this pinentry is finished and is exiting
- *
- * @var boolean
- */
- protected $moribund = false;
-
- /**
- * Verbosity level
- *
- * One of:
- * - {@link Crypt_GPG_PinEntry::VERBOSITY_NONE},
- * - {@link Crypt_GPG_PinEntry::VERBOSITY_ERRORS}, or
- * - {@link Crypt_GPG_PinEntry::VERBOSITY_ALL}
- *
- * @var integer
- */
- protected $verbosity = self::VERBOSITY_NONE;
-
- /**
- * The command-line interface parser for this pinentry
- *
- * @var Console_CommandLine
- *
- * @see Crypt_GPG_PinEntry::getParser()
- */
- protected $parser = null;
-
- /**
- * PINs to be entered by this pinentry
- *
- * An indexed array of associative arrays in the form:
- * <code>
- * <?php
- * array(
- * array(
- * 'keyId' => $keyId,
- * 'passphrase' => $passphrase
- * ),
- * ...
- * );
- * ?>
- * </code>
- *
- * This array is parsed from the environment variable
- * <kbd>PINENTRY_USER_DATA</kbd>.
- *
- * @var array
- *
- * @see Crypt_GPG_PinEntry::initPinsFromENV()
- */
- protected $pins = array();
-
- /**
- * PINs that have been tried for the current PIN
- *
- * This is an associative array indexed by the key identifier with
- * values being the same as elements in the {@link Crypt_GPG_PinEntry::$pins}
- * array.
- *
- * @var array
- */
- protected $triedPins = array();
-
- /**
- * The PIN currently being requested by the Assuan server
- *
- * If set, this is an associative array in the form:
- * <code>
- * <?php
- * array(
- * 'keyId' => $shortKeyId,
- * 'userId' => $userIdString
- * );
- * ?>
- * </code>
- *
- * @var array|null
- */
- protected $currentPin = null;
-
- // }}}
- // {{{ __invoke()
-
- /**
- * Runs this pinentry
- *
- * @return void
- */
- public function __invoke()
- {
- $this->parser = $this->getCommandLineParser();
-
- try {
- $result = $this->parser->parse();
-
- $this->setVerbosity($result->options['verbose']);
- $this->setLogFilename($result->options['log']);
-
- $this->connect();
- $this->initPinsFromENV();
-
- while (($line = fgets($this->stdin, self::CHUNK_SIZE)) !== false) {
- $this->parseCommand(mb_substr($line, 0, -1, '8bit'));
- if ($this->moribund) {
- break;
- }
- }
-
- $this->disconnect();
-
- } catch (Console_CommandLineException $e) {
- $this->log($e->getMessage() . PHP_EOL, slf::VERBOSITY_ERRORS);
- exit(1);
- } catch (Exception $e) {
- $this->log($e->getMessage() . PHP_EOL, self::VERBOSITY_ERRORS);
- $this->log($e->getTraceAsString() . PHP_EOL, self::VERBOSITY_ERRORS);
- exit(1);
- }
- }
-
- // }}}
- // {{{ setVerbosity()
-
- /**
- * Sets the verbosity of logging for this pinentry
- *
- * Verbosity levels are:
- *
- * - {@link Crypt_GPG_PinEntry::VERBOSITY_NONE} - no logging.
- * - {@link Crypt_GPG_PinEntry::VERBOSITY_ERRORS} - log errors only.
- * - {@link Crypt_GPG_PinEntry::VERBOSITY_ALL} - log everything, including
- * the assuan protocol.
- *
- * @param integer $verbosity the level of verbosity of this pinentry.
- *
- * @return Crypt_GPG_PinEntry the current object, for fluent interface.
- */
- public function setVerbosity($verbosity)
- {
- $this->verbosity = (integer)$verbosity;
- return $this;
- }
-
- // }}}
- // {{{ setLogFilename()
-
- /**
- * Sets the log file location
- *
- * @param string $filename the new log filename to use. If an empty string
- * is used, file-based logging is disabled.
- *
- * @return Crypt_GPG_PinEntry the current object, for fluent interface.
- */
- public function setLogFilename($filename)
- {
- if (is_resource($this->logFile)) {
- fflush($this->logFile);
- fclose($this->logFile);
- $this->logFile = null;
- }
-
- if ($filename != '') {
- if (($this->logFile = fopen($filename, 'w')) === false) {
- $this->log(
- 'Unable to open log file "' . $filename . '" '
- . 'for writing.' . PHP_EOL,
- self::VERBOSITY_ERRORS
- );
- exit(1);
- } else {
- stream_set_write_buffer($this->logFile, 0);
- }
- }
-
- return $this;
- }
-
- // }}}
- // {{{ getUIXML()
-
- /**
- * Gets the CLI user-interface definition for this pinentry
- *
- * Detects whether or not this package is PEAR-installed and appropriately
- * locates the XML UI definition.
- *
- * @return string the location of the CLI user-interface definition XML.
- */
- protected function getUIXML()
- {
- $dir = '@data-dir@' . DIRECTORY_SEPARATOR
- . '@package-name@' . DIRECTORY_SEPARATOR . 'data';
-
- // Check if we're running directly from a git checkout or if we're
- // running from a PEAR-packaged version.
- if ($dir[0] == '@') {
- $dir = dirname(__FILE__) . DIRECTORY_SEPARATOR . '..'
- . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'data';
- }
-
- return $dir . DIRECTORY_SEPARATOR . 'pinentry-cli.xml';
- }
-
- // }}}
- // {{{ getCommandLineParser()
-
- /**
- * Gets the CLI parser for this pinentry
- *
- * @return Console_CommandLine the CLI parser for this pinentry.
- */
- protected function getCommandLineParser()
- {
- return Console_CommandLine::fromXmlFile($this->getUIXML());
- }
-
- // }}}
- // {{{ log()
-
- /**
- * Logs a message at the specified verbosity level
- *
- * If a log file is used, the message is written to the log. Otherwise,
- * the message is sent to STDERR.
- *
- * @param string $data the message to log.
- * @param integer $level the verbosity level above which the message should
- * be logged.
- *
- * @return Crypt_GPG_PinEntry the current object, for fluent interface.
- */
- protected function log($data, $level)
- {
- if ($this->verbosity >= $level) {
- if (is_resource($this->logFile)) {
- fwrite($this->logFile, $data);
- fflush($this->logFile);
- } else {
- $this->parser->outputter->stderr($data);
- }
- }
-
- return $this;
- }
-
- // }}}
- // {{{ connect()
-
- /**
- * Connects this pinentry to the assuan server
- *
- * Opens I/O streams and sends initial handshake.
- *
- * @return Crypt_GPG_PinEntry the current object, for fluent interface.
- */
- protected function connect()
- {
- // Binary operations will not work on Windows with PHP < 5.2.6.
- $rb = (version_compare(PHP_VERSION, '5.2.6') < 0) ? 'r' : 'rb';
- $wb = (version_compare(PHP_VERSION, '5.2.6') < 0) ? 'w' : 'wb';
-
- $this->stdin = fopen('php://stdin', $rb);
- $this->stdout = fopen('php://stdout', $wb);
-
- if (function_exists('stream_set_read_buffer')) {
- stream_set_read_buffer($this->stdin, 0);
- }
- stream_set_write_buffer($this->stdout, 0);
-
- // initial handshake
- $this->send($this->getOK('Crypt_GPG pinentry ready and waiting'));
-
- return $this;
- }
-
- // }}}
- // {{{ parseCommand()
-
- /**
- * Parses an assuan command and performs the appropriate action
- *
- * Documentation of the assuan commands for pinentry is limited to
- * non-existent. Most of these commands were taken from the C source code
- * to gpg-agent and pinentry.
- *
- * Additional context was provided by using strace -f when calling the
- * gpg-agent.
- *
- * @param string $line the assuan command line to parse
- *
- * @return Crypt_GPG_PinEntry the current object, for fluent interface.
- */
- protected function parseCommand($line)
- {
- $this->log('<- ' . $line . PHP_EOL, self::VERBOSITY_ALL);
-
- $parts = explode(' ', $line, 2);
-
- $command = $parts[0];
-
- if (count($parts) === 2) {
- $data = $parts[1];
- } else {
- $data = null;
- }
-
- switch ($command) {
- case 'SETDESC':
- return $this->sendSetDescription($data);
-
- case 'SETPROMPT':
- case 'SETERROR':
- case 'SETOK':
- case 'SETNOTOK':
- case 'SETCANCEL':
- case 'SETQUALITYBAR':
- case 'SETQUALITYBAR_TT':
- case 'OPTION':
- return $this->sendNotImplementedOK();
-
- case 'MESSAGE':
- return $this->sendMessage();
-
- case 'CONFIRM':
- return $this->sendConfirm();
-
- case 'GETINFO':
- return $this->sendGetInfo($data);
-
- case 'GETPIN':
- return $this->sendGetPin($data);
-
- case 'RESET':
- return $this->sendReset();
-
- case 'BYE':
- return $this->sendBye();
- }
- }
-
- // }}}
- // {{{ initPinsFromENV()
-
- /**
- * Initializes the PINs to be entered by this pinentry from the environment
- * variable PINENTRY_USER_DATA
- *
- * The PINs are parsed from a JSON-encoded string.
- *
- * @return Crypt_GPG_PinEntry the current object, for fluent interface.
- */
- protected function initPinsFromENV()
- {
- if (($userData = getenv('PINENTRY_USER_DATA')) !== false) {
- $pins = json_decode($userData, true);
- if ($pins === null) {
- $this->log(
- '-- failed to parse user data' . PHP_EOL,
- self::VERBOSITY_ERRORS
- );
- } else {
- $this->pins = $pins;
- $this->log(
- '-- got user data [not showing passphrases]' . PHP_EOL,
- self::VERBOSITY_ALL
- );
- }
- }
-
- return $this;
- }
-
- // }}}
- // {{{ disconnect()
-
- /**
- * Disconnects this pinentry from the Assuan server
- *
- * @return Crypt_GPG_PinEntry the current object, for fluent interface.
- */
- protected function disconnect()
- {
- $this->log('-- disconnecting' . PHP_EOL, self::VERBOSITY_ALL);
-
- fflush($this->stdout);
- fclose($this->stdout);
- fclose($this->stdin);
-
- $this->stdin = null;
- $this->stdout = null;
-
- $this->log('-- disconnected' . PHP_EOL, self::VERBOSITY_ALL);
-
- if (is_resource($this->logFile)) {
- fflush($this->logFile);
- fclose($this->logFile);
- $this->logFile = null;
- }
-
- return $this;
- }
-
- // }}}
- // {{{ sendNotImplementedOK()
-
- /**
- * Sends an OK response for a not implemented feature
- *
- * @return Crypt_GPG_PinEntry the current object, for fluent interface.
- */
- protected function sendNotImplementedOK()
- {
- return $this->send($this->getOK());
- }
-
- // }}}
- // {{{ sendSetDescription()
-
- /**
- * Parses the currently requested key identifier and user identifier from
- * the description passed to this pinentry
- *
- * @param string $text the raw description sent from gpg-agent.
- *
- * @return Crypt_GPG_PinEntry the current object, for fluent interface.
- */
- protected function sendSetDescription($text)
- {
- $text = rawurldecode($text);
- $matches = array();
- // TODO: handle user id with quotation marks
- $exp = '/\n"(.+)"\n.*\sID ([A-Z0-9]+),\n/mu';
- if (preg_match($exp, $text, $matches) === 1) {
- $userId = $matches[1];
- $keyId = $matches[2];
-
- // only reset tried pins for new requested pin
- if ( $this->currentPin === null
- || $this->currentPin['keyId'] !== $keyId
- ) {
- $this->currentPin = array(
- 'userId' => $userId,
- 'keyId' => $keyId
- );
- $this->triedPins = array();
- $this->log(
- '-- looking for PIN for ' . $keyId . PHP_EOL,
- self::VERBOSITY_ALL
- );
- }
- }
-
- return $this->send($this->getOK());
- }
-
- // }}}
- // {{{ sendConfirm()
-
- /**
- * Tells the assuan server the PIN entry was confirmed (not cancelled)
- * by pressing the fake 'close' button
- *
- * @return Crypt_GPG_PinEntry the current object, for fluent interface.
- */
- protected function sendConfirm()
- {
- return $this->sendButtonInfo('close');
- }
-
- // }}}
- // {{{ sendMessage()
-
- /**
- * Tells the assuan server that any requested pop-up messages were confirmed
- * by pressing the fake 'close' button
- *
- * @return Crypt_GPG_PinEntry the current object, for fluent interface.
- */
- protected function sendMessage()
- {
- return $this->sendButtonInfo('close');
- }
-
- // }}}
- // {{{ sendButtonInfo()
-
- /**
- * Sends information about pressed buttons to the assuan server
- *
- * This is used to fake a user-interface for this pinentry.
- *
- * @param string $text the button status to send.
- *
- * @return Crypt_GPG_PinEntry the current object, for fluent interface.
- */
- protected function sendButtonInfo($text)
- {
- return $this->send('BUTTON_INFO ' . $text . "\n");
- }
-
- // }}}
- // {{{ sendGetPin()
-
- /**
- * Sends the PIN value for the currently requested key
- *
- * @return Crypt_GPG_PinEntry the current object, for fluent interface.
- */
- protected function sendGetPin()
- {
- $foundPin = '';
-
- if (is_array($this->currentPin)) {
- $keyIdLength = mb_strlen($this->currentPin['keyId'], '8bit');
-
- // search for the pin
- foreach ($this->pins as $pin) {
- // only check pins we haven't tried
- if (!isset($this->triedPins[$pin['keyId']])) {
-
- // get last X characters of key identifier to compare
- $keyId = mb_substr(
- $pin['keyId'],
- -$keyIdLength,
- mb_strlen($pin['keyId'], '8bit'),
- '8bit'
- );
-
- if ($keyId === $this->currentPin['keyId']) {
- $foundPin = $pin['passphrase'];
- $this->triedPins[$pin['keyId']] = $pin;
- break;
- }
- }
- }
- }
-
- return $this
- ->send($this->getData($foundPin))
- ->send($this->getOK());
- }
-
- // }}}
- // {{{ sendGetInfo()
-
- /**
- * Sends information about this pinentry
- *
- * @param string $data the information requested by the assuan server.
- * Currently only 'pid' is supported. Other requests
- * return no information.
- *
- * @return Crypt_GPG_PinEntry the current object, for fluent interface.
- */
- protected function sendGetInfo($data)
- {
- $parts = explode(' ', $data, 2);
- $command = reset($parts);
-
- switch ($command) {
- case 'pid':
- return $this->sendGetInfoPID();
- default:
- return $this->send($this->getOK());
- }
-
- return $this;
- }
- // }}}
- // {{{ sendGetInfoPID()
-
- /**
- * Sends the PID of this pinentry to the assuan server
- *
- * @return Crypt_GPG_PinEntry the current object, for fluent interface.
- */
- protected function sendGetInfoPID()
- {
- return $this
- ->send($this->getData(getmypid()))
- ->send($this->getOK());
- }
-
- // }}}
- // {{{ sendBye()
-
- /**
- * Flags this pinentry for disconnection and sends an OK response
- *
- * @return Crypt_GPG_PinEntry the current object, for fluent interface.
- */
- protected function sendBye()
- {
- $return = $this->send($this->getOK('closing connection'));
- $this->moribund = true;
- return $return;
- }
-
- // }}}
- // {{{ sendReset()
-
- /**
- * Resets this pinentry and sends an OK response
- *
- * @return Crypt_GPG_PinEntry the current object, for fluent interface.
- */
- protected function sendReset()
- {
- $this->currentPin = null;
- $this->triedPins = array();
- return $this->send($this->getOK());
- }
-
- // }}}
- // {{{ getOK()
-
- /**
- * Gets an OK response to send to the assuan server
- *
- * @param string $data an optional message to include with the OK response.
- *
- * @return string the OK response.
- */
- protected function getOK($data = null)
- {
- $return = 'OK';
-
- if ($data) {
- $return .= ' ' . $data;
- }
-
- return $return . "\n";
- }
-
- // }}}
- // {{{ getData()
-
- /**
- * Gets data ready to send to the assuan server
- *
- * Data is appropriately escaped and long lines are wrapped.
- *
- * @param string $data the data to send to the assuan server.
- *
- * @return string the properly escaped, formatted data.
- *
- * @see http://www.gnupg.org/documentation/manuals/assuan/Server-responses.html
- */
- protected function getData($data)
- {
- // Escape data. Only %, \n and \r need to be escaped but other
- // values are allowed to be escaped. See
- // http://www.gnupg.org/documentation/manuals/assuan/Server-responses.html
- $data = rawurlencode($data);
- $data = $this->getWordWrappedData($data, 'D');
- return $data;
- }
-
- // }}}
- // {{{ getComment()
-
- /**
- * Gets a comment ready to send to the assuan server
- *
- * @param string $data the comment to send to the assuan server.
- *
- * @return string the properly formatted comment.
- *
- * @see http://www.gnupg.org/documentation/manuals/assuan/Server-responses.html
- */
- protected function getComment($data)
- {
- return $this->getWordWrappedData($data, '#');
- }
-
- // }}}
- // {{{ getWordWrappedData()
-
- /**
- * Wraps strings at 1,000 bytes without splitting UTF-8 multibyte
- * characters
- *
- * Each line is prepended with the specified line prefix. Wrapped lines
- * are automatically appended with \ characters.
- *
- * Protocol strings are UTF-8 but maximum line length is 1,000 bytes.
- * <kbd>mb_strcut()</kbd> is used so we can limit line length by bytes
- * and not split characters across multiple lines.
- *
- * @param string $data the data to wrap.
- * @param string $prefix a single character to use as the line prefix. For
- * example, 'D' or '#'.
- *
- * @return string the word-wrapped, prefixed string.
- *
- * @see http://www.gnupg.org/documentation/manuals/assuan/Server-responses.html
- */
- protected function getWordWrappedData($data, $prefix)
- {
- $lines = array();
-
- do {
- if (mb_strlen($data, '8bit') > 997) {
- $line = $prefix . ' ' . mb_strcut($data, 0, 996, 'utf-8') . "\\\n";
- $lines[] = $line;
- $lineLength = mb_strlen($line, '8bit') - 1;
- $dataLength = mb_substr($data, '8bit');
- $data = mb_substr(
- $data,
- $lineLength,
- $dataLength - $lineLength,
- '8bit'
- );
- } else {
- $lines[] = $prefix . ' ' . $data . "\n";
- $data = '';
- }
- } while ($data != '');
-
- return implode('', $lines);
- }
-
- // }}}
- // {{{ send()
-
- /**
- * Sends raw data to the assuan server
- *
- * @param string $data the data to send.
- *
- * @return Crypt_GPG_PinEntry the current object, for fluent interface.
- */
- protected function send($data)
- {
- $this->log('-> ' . $data, self::VERBOSITY_ALL);
- fwrite($this->stdout, $data);
- fflush($this->stdout);
- return $this;
- }
-
- // }}}
-}
-
-// }}}
-
-?>
diff --git a/program/lib/Crypt/GPG/ProcessControl.php b/program/lib/Crypt/GPG/ProcessControl.php
deleted file mode 100644
index d6dae0325..000000000
--- a/program/lib/Crypt/GPG/ProcessControl.php
+++ /dev/null
@@ -1,150 +0,0 @@
-<?php
-
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * A class for monitoring and terminating processes
- *
- * PHP version 5
- *
- * LICENSE:
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of the
- * License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2013 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version CVS: $Id$
- * @link http://pear.php.net/package/Crypt_GPG
- */
-
-// {{{ class Crypt_GPG_ProcessControl
-
-/**
- * A class for monitoring and terminating processes by PID
- *
- * This is used to safely terminate the gpg-agent for GnuPG 2.x. This class
- * is limited in its abilities and can only check if a PID is running and
- * send a PID SIGTERM.
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2013 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link http://pear.php.net/package/Crypt_GPG
- */
-class Crypt_GPG_ProcessControl
-{
- // {{{ protected properties
-
- /**
- * The PID (process identifier) being monitored
- *
- * @var integer
- */
- protected $pid;
-
- // }}}
- // {{{ __construct()
-
- /**
- * Creates a new process controller from the given PID (process identifier)
- *
- * @param integer $pid the PID (process identifier).
- */
- public function __construct($pid)
- {
- $this->pid = $pid;
- }
-
- // }}}
- // {{{ public function getPid()
-
- /**
- * Gets the PID (process identifier) being controlled
- *
- * @return integer the PID being controlled.
- */
- public function getPid()
- {
- return $this->pid;
- }
-
- // }}}
- // {{{ isRunning()
-
- /**
- * Checks if the process is running
- *
- * Uses <kbd>ps</kbd> on UNIX-like systems and <kbd>tasklist</kbd> on
- * Windows.
- *
- * @return boolean true if the process is running, false if not.
- */
- public function isRunning()
- {
- $running = false;
-
- if (PHP_OS === 'WINNT') {
- $command = 'tasklist /fo csv /nh /fi '
- . escapeshellarg('PID eq ' . $this->pid);
-
- $result = exec($command);
- $parts = explode(',', $result);
- $running = (count($parts) > 1 && trim($parts[1], '"') == $this->pid);
- } else {
- $result = exec('ps -p ' . escapeshellarg($this->pid) . ' -o pid=');
- $running = (trim($result) == $this->pid);
- }
-
- return $running;
- }
-
- // }}}
- // {{{ terminate()
-
- /**
- * Ends the process gracefully
- *
- * The signal SIGTERM is sent to the process. The gpg-agent process will
- * end gracefully upon receiving the SIGTERM signal. Upon 3 consecutive
- * SIGTERM signals the gpg-agent will forcefully shut down.
- *
- * If the <kbd>posix</kbd> extension is available, <kbd>posix_kill()</kbd>
- * is used. Otherwise <kbd>kill</kbd> is used on UNIX-like systems and
- * <kbd>taskkill</kbd> is used in Windows.
- *
- * @return void
- */
- public function terminate()
- {
- if (function_exists('posix_kill')) {
- posix_kill($this->pid, 15);
- } elseif (PHP_OS === 'WINNT') {
- exec('taskkill /PID ' . escapeshellarg($this->pid));
- } else {
- exec('kill -15 ' . escapeshellarg($this->pid));
- }
- }
-
- // }}}
-}
-
-// }}}
-
-?>
diff --git a/program/lib/Crypt/GPG/Signature.php b/program/lib/Crypt/GPG/Signature.php
deleted file mode 100644
index 1d28a1188..000000000
--- a/program/lib/Crypt/GPG/Signature.php
+++ /dev/null
@@ -1,427 +0,0 @@
-<?php
-
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * A class representing GPG signatures
- *
- * This file contains a data class representing a GPG signature.
- *
- * PHP version 5
- *
- * LICENSE:
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of the
- * License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Nathan Fredrickson <nathan@silverorange.com>
- * @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2005-2013 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version CVS: $Id$
- * @link http://pear.php.net/package/Crypt_GPG
- */
-
-/**
- * User id class definition
- */
-require_once 'Crypt/GPG/UserId.php';
-
-// {{{ class Crypt_GPG_Signature
-
-/**
- * A class for GPG signature information
- *
- * This class is used to store the results of the Crypt_GPG::verify() method.
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Nathan Fredrickson <nathan@silverorange.com>
- * @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2005-2013 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link http://pear.php.net/package/Crypt_GPG
- * @see Crypt_GPG::verify()
- */
-class Crypt_GPG_Signature
-{
- // {{{ class properties
-
- /**
- * A base64-encoded string containing a unique id for this signature if
- * this signature has been verified as ok
- *
- * This id is used to prevent replay attacks and is not present for all
- * types of signatures.
- *
- * @var string
- */
- private $_id = '';
-
- /**
- * The fingerprint of the key used to create the signature
- *
- * @var string
- */
- private $_keyFingerprint = '';
-
- /**
- * The id of the key used to create the signature
- *
- * @var string
- */
- private $_keyId = '';
-
- /**
- * The creation date of this signature
- *
- * This is a Unix timestamp.
- *
- * @var integer
- */
- private $_creationDate = 0;
-
- /**
- * The expiration date of the signature
- *
- * This is a Unix timestamp. If this signature does not expire, this will
- * be zero.
- *
- * @var integer
- */
- private $_expirationDate = 0;
-
- /**
- * The user id associated with this signature
- *
- * @var Crypt_GPG_UserId
- */
- private $_userId = null;
-
- /**
- * Whether or not this signature is valid
- *
- * @var boolean
- */
- private $_isValid = false;
-
- // }}}
- // {{{ __construct()
-
- /**
- * Creates a new signature
- *
- * Signatures can be initialized from an array of named values. Available
- * names are:
- *
- * - <kbd>string id</kbd> - the unique id of this signature.
- * - <kbd>string fingerprint</kbd> - the fingerprint of the key used to
- * create the signature. The fingerprint
- * should not contain formatting
- * characters.
- * - <kbd>string keyId</kbd> - the id of the key used to create the
- * the signature.
- * - <kbd>integer creation</kbd> - the date the signature was created.
- * This is a UNIX timestamp.
- * - <kbd>integer expiration</kbd> - the date the signature expired. This
- * is a UNIX timestamp. If the signature
- * does not expire, use 0.
- * - <kbd>boolean valid</kbd> - whether or not the signature is valid.
- * - <kbd>string userId</kbd> - the user id associated with the
- * signature. This may also be a
- * {@link Crypt_GPG_UserId} object.
- *
- * @param Crypt_GPG_Signature|array $signature optional. Either an existing
- * signature object, which is copied; or an array of initial values.
- */
- public function __construct($signature = null)
- {
- // copy from object
- if ($signature instanceof Crypt_GPG_Signature) {
- $this->_id = $signature->_id;
- $this->_keyFingerprint = $signature->_keyFingerprint;
- $this->_keyId = $signature->_keyId;
- $this->_creationDate = $signature->_creationDate;
- $this->_expirationDate = $signature->_expirationDate;
- $this->_isValid = $signature->_isValid;
-
- if ($signature->_userId instanceof Crypt_GPG_UserId) {
- $this->_userId = clone $signature->_userId;
- }
- }
-
- // initialize from array
- if (is_array($signature)) {
- if (array_key_exists('id', $signature)) {
- $this->setId($signature['id']);
- }
-
- if (array_key_exists('fingerprint', $signature)) {
- $this->setKeyFingerprint($signature['fingerprint']);
- }
-
- if (array_key_exists('keyId', $signature)) {
- $this->setKeyId($signature['keyId']);
- }
-
- if (array_key_exists('creation', $signature)) {
- $this->setCreationDate($signature['creation']);
- }
-
- if (array_key_exists('expiration', $signature)) {
- $this->setExpirationDate($signature['expiration']);
- }
-
- if (array_key_exists('valid', $signature)) {
- $this->setValid($signature['valid']);
- }
-
- if (array_key_exists('userId', $signature)) {
- $userId = new Crypt_GPG_UserId($signature['userId']);
- $this->setUserId($userId);
- }
- }
- }
-
- // }}}
- // {{{ getId()
-
- /**
- * Gets the id of this signature
- *
- * @return string a base64-encoded string containing a unique id for this
- * signature. This id is used to prevent replay attacks and
- * is not present for all types of signatures.
- */
- public function getId()
- {
- return $this->_id;
- }
-
- // }}}
- // {{{ getKeyFingerprint()
-
- /**
- * Gets the fingerprint of the key used to create this signature
- *
- * @return string the fingerprint of the key used to create this signature.
- */
- public function getKeyFingerprint()
- {
- return $this->_keyFingerprint;
- }
-
- // }}}
- // {{{ getKeyId()
-
- /**
- * Gets the id of the key used to create this signature
- *
- * Whereas the fingerprint of the signing key may not always be available
- * (for example if the signature is bad), the id should always be
- * available.
- *
- * @return string the id of the key used to create this signature.
- */
- public function getKeyId()
- {
- return $this->_keyId;
- }
-
- // }}}
- // {{{ getCreationDate()
-
- /**
- * Gets the creation date of this signature
- *
- * @return integer the creation date of this signature. This is a Unix
- * timestamp.
- */
- public function getCreationDate()
- {
- return $this->_creationDate;
- }
-
- // }}}
- // {{{ getExpirationDate()
-
- /**
- * Gets the expiration date of the signature
- *
- * @return integer the expiration date of this signature. This is a Unix
- * timestamp. If this signature does not expire, this will
- * be zero.
- */
- public function getExpirationDate()
- {
- return $this->_expirationDate;
- }
-
- // }}}
- // {{{ getUserId()
-
- /**
- * Gets the user id associated with this signature
- *
- * @return Crypt_GPG_UserId the user id associated with this signature.
- */
- public function getUserId()
- {
- return $this->_userId;
- }
-
- // }}}
- // {{{ isValid()
-
- /**
- * Gets whether or no this signature is valid
- *
- * @return boolean true if this signature is valid and false if it is not.
- */
- public function isValid()
- {
- return $this->_isValid;
- }
-
- // }}}
- // {{{ setId()
-
- /**
- * Sets the id of this signature
- *
- * @param string $id a base64-encoded string containing a unique id for
- * this signature.
- *
- * @return Crypt_GPG_Signature the current object, for fluent interface.
- *
- * @see Crypt_GPG_Signature::getId()
- */
- public function setId($id)
- {
- $this->_id = strval($id);
- return $this;
- }
-
- // }}}
- // {{{ setKeyFingerprint()
-
- /**
- * Sets the key fingerprint of this signature
- *
- * @param string $fingerprint the key fingerprint of this signature. This
- * is the fingerprint of the primary key used to
- * create this signature.
- *
- * @return Crypt_GPG_Signature the current object, for fluent interface.
- */
- public function setKeyFingerprint($fingerprint)
- {
- $this->_keyFingerprint = strval($fingerprint);
- return $this;
- }
-
- // }}}
- // {{{ setKeyId()
-
- /**
- * Sets the key id of this signature
- *
- * @param string $id the key id of this signature. This is the id of the
- * primary key used to create this signature.
- *
- * @return Crypt_GPG_Signature the current object, for fluent interface.
- */
- public function setKeyId($id)
- {
- $this->_keyId = strval($id);
- return $this;
- }
-
- // }}}
- // {{{ setCreationDate()
-
- /**
- * Sets the creation date of this signature
- *
- * @param integer $creationDate the creation date of this signature. This
- * is a Unix timestamp.
- *
- * @return Crypt_GPG_Signature the current object, for fluent interface.
- */
- public function setCreationDate($creationDate)
- {
- $this->_creationDate = intval($creationDate);
- return $this;
- }
-
- // }}}
- // {{{ setExpirationDate()
-
- /**
- * Sets the expiration date of this signature
- *
- * @param integer $expirationDate the expiration date of this signature.
- * This is a Unix timestamp. Specify zero if
- * this signature does not expire.
- *
- * @return Crypt_GPG_Signature the current object, for fluent interface.
- */
- public function setExpirationDate($expirationDate)
- {
- $this->_expirationDate = intval($expirationDate);
- return $this;
- }
-
- // }}}
- // {{{ setUserId()
-
- /**
- * Sets the user id associated with this signature
- *
- * @param Crypt_GPG_UserId $userId the user id associated with this
- * signature.
- *
- * @return Crypt_GPG_Signature the current object, for fluent interface.
- */
- public function setUserId(Crypt_GPG_UserId $userId)
- {
- $this->_userId = $userId;
- return $this;
- }
-
- // }}}
- // {{{ setValid()
-
- /**
- * Sets whether or not this signature is valid
- *
- * @param boolean $isValid true if this signature is valid and false if it
- * is not.
- *
- * @return Crypt_GPG_Signature the current object, for fluent interface.
- */
- public function setValid($isValid)
- {
- $this->_isValid = ($isValid) ? true : false;
- return $this;
- }
-
- // }}}
-}
-
-// }}}
-
-?>
diff --git a/program/lib/Crypt/GPG/SubKey.php b/program/lib/Crypt/GPG/SubKey.php
deleted file mode 100644
index 59245cac1..000000000
--- a/program/lib/Crypt/GPG/SubKey.php
+++ /dev/null
@@ -1,672 +0,0 @@
-<?php
-
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * Contains a class representing GPG sub-keys and constants for GPG algorithms
- *
- * PHP version 5
- *
- * LICENSE:
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of the
- * License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Michael Gauthier <mike@silverorange.com>
- * @author Nathan Fredrickson <nathan@silverorange.com>
- * @copyright 2005-2010 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version CVS: $Id$
- * @link http://pear.php.net/package/Crypt_GPG
- */
-
-// {{{ class Crypt_GPG_SubKey
-
-/**
- * A class for GPG sub-key information
- *
- * This class is used to store the results of the {@link Crypt_GPG::getKeys()}
- * method. Sub-key objects are members of a {@link Crypt_GPG_Key} object.
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Michael Gauthier <mike@silverorange.com>
- * @author Nathan Fredrickson <nathan@silverorange.com>
- * @copyright 2005-2010 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link http://pear.php.net/package/Crypt_GPG
- * @see Crypt_GPG::getKeys()
- * @see Crypt_GPG_Key::getSubKeys()
- */
-class Crypt_GPG_SubKey
-{
- // {{{ algorithm class constants
-
- /**
- * RSA encryption algorithm.
- */
- const ALGORITHM_RSA = 1;
-
- /**
- * Elgamal encryption algorithm (encryption only).
- */
- const ALGORITHM_ELGAMAL_ENC = 16;
-
- /**
- * DSA encryption algorithm (sometimes called DH, sign only).
- */
- const ALGORITHM_DSA = 17;
-
- /**
- * Elgamal encryption algorithm (signage and encryption - should not be
- * used).
- */
- const ALGORITHM_ELGAMAL_ENC_SGN = 20;
-
- // }}}
- // {{{ usage class constants
-
- /**
- * Key can be used to encrypt
- */
- const USAGE_ENCRYPT = 1;
-
- /**
- * Key can be used to sign
- */
- const USAGE_SIGN = 2;
-
- /**
- * Key can be used to certify other keys
- */
- const USAGE_CERTIFY = 4;
-
- /**
- * Key can be used for authentication
- */
- const USAGE_AUTHENTICATION = 8;
-
- // }}}
- // {{{ class properties
-
- /**
- * The id of this sub-key
- *
- * @var string
- */
- private $_id = '';
-
- /**
- * The algorithm used to create this sub-key
- *
- * The value is one of the Crypt_GPG_SubKey::ALGORITHM_* constants.
- *
- * @var integer
- */
- private $_algorithm = 0;
-
- /**
- * The fingerprint of this sub-key
- *
- * @var string
- */
- private $_fingerprint = '';
-
- /**
- * Length of this sub-key in bits
- *
- * @var integer
- */
- private $_length = 0;
-
- /**
- * Date this sub-key was created
- *
- * This is a Unix timestamp.
- *
- * @var integer
- */
- private $_creationDate = 0;
-
- /**
- * Date this sub-key expires
- *
- * This is a Unix timestamp. If this sub-key does not expire, this will be
- * zero.
- *
- * @var integer
- */
- private $_expirationDate = 0;
-
- /**
- * Whether or not this sub-key can sign data
- *
- * @var boolean
- */
- private $_canSign = false;
-
- /**
- * Whether or not this sub-key can encrypt data
- *
- * @var boolean
- */
- private $_canEncrypt = false;
-
- /**
- * Whether or not the private key for this sub-key exists in the keyring
- *
- * @var boolean
- */
- private $_hasPrivate = false;
-
- /**
- * Whether or not this sub-key is revoked
- *
- * @var boolean
- */
- private $_isRevoked = false;
-
- // }}}
- // {{{ __construct()
-
- /**
- * Creates a new sub-key object
- *
- * Sub-keys can be initialized from an array of named values. Available
- * names are:
- *
- * - <kbd>string id</kbd> - the key id of the sub-key.
- * - <kbd>integer algorithm</kbd> - the encryption algorithm of the
- * sub-key.
- * - <kbd>string fingerprint</kbd> - the fingerprint of the sub-key. The
- * fingerprint should not contain
- * formatting characters.
- * - <kbd>integer length</kbd> - the length of the sub-key in bits.
- * - <kbd>integer creation</kbd> - the date the sub-key was created.
- * This is a UNIX timestamp.
- * - <kbd>integer expiration</kbd> - the date the sub-key expires. This
- * is a UNIX timestamp. If the sub-key
- * does not expire, use 0.
- * - <kbd>boolean canSign</kbd> - whether or not the sub-key can be
- * used to sign data.
- * - <kbd>boolean canEncrypt</kbd> - whether or not the sub-key can be
- * used to encrypt data.
- * - <kbd>boolean hasPrivate</kbd> - whether or not the private key for
- * the sub-key exists in the keyring.
- * - <kbd>boolean isRevoked</kbd> - whether or not this sub-key is
- * revoked.
- *
- * @param Crypt_GPG_SubKey|string|array $key optional. Either an existing
- * sub-key object, which is copied; a sub-key string, which is
- * parsed; or an array of initial values.
- */
- public function __construct($key = null)
- {
- // parse from string
- if (is_string($key)) {
- $key = self::parse($key);
- }
-
- // copy from object
- if ($key instanceof Crypt_GPG_SubKey) {
- $this->_id = $key->_id;
- $this->_algorithm = $key->_algorithm;
- $this->_fingerprint = $key->_fingerprint;
- $this->_length = $key->_length;
- $this->_creationDate = $key->_creationDate;
- $this->_expirationDate = $key->_expirationDate;
- $this->_canSign = $key->_canSign;
- $this->_canEncrypt = $key->_canEncrypt;
- $this->_hasPrivate = $key->_hasPrivate;
- $this->_isRevoked = $key->_isRevoked;
- }
-
- // initialize from array
- if (is_array($key)) {
- if (array_key_exists('id', $key)) {
- $this->setId($key['id']);
- }
-
- if (array_key_exists('algorithm', $key)) {
- $this->setAlgorithm($key['algorithm']);
- }
-
- if (array_key_exists('fingerprint', $key)) {
- $this->setFingerprint($key['fingerprint']);
- }
-
- if (array_key_exists('length', $key)) {
- $this->setLength($key['length']);
- }
-
- if (array_key_exists('creation', $key)) {
- $this->setCreationDate($key['creation']);
- }
-
- if (array_key_exists('expiration', $key)) {
- $this->setExpirationDate($key['expiration']);
- }
-
- if (array_key_exists('canSign', $key)) {
- $this->setCanSign($key['canSign']);
- }
-
- if (array_key_exists('canEncrypt', $key)) {
- $this->setCanEncrypt($key['canEncrypt']);
- }
-
- if (array_key_exists('hasPrivate', $key)) {
- $this->setHasPrivate($key['hasPrivate']);
- }
-
- if (array_key_exists('isRevoked', $key)) {
- $this->setRevoked($key['isRevoked']);
- }
- }
- }
-
- // }}}
- // {{{ getId()
-
- /**
- * Gets the id of this sub-key
- *
- * @return string the id of this sub-key.
- */
- public function getId()
- {
- return $this->_id;
- }
-
- // }}}
- // {{{ getAlgorithm()
-
- /**
- * Gets the algorithm used by this sub-key
- *
- * The algorithm should be one of the Crypt_GPG_SubKey::ALGORITHM_*
- * constants.
- *
- * @return integer the algorithm used by this sub-key.
- */
- public function getAlgorithm()
- {
- return $this->_algorithm;
- }
-
- // }}}
- // {{{ getCreationDate()
-
- /**
- * Gets the creation date of this sub-key
- *
- * This is a Unix timestamp.
- *
- * @return integer the creation date of this sub-key.
- */
- public function getCreationDate()
- {
- return $this->_creationDate;
- }
-
- // }}}
- // {{{ getExpirationDate()
-
- /**
- * Gets the date this sub-key expires
- *
- * This is a Unix timestamp. If this sub-key does not expire, this will be
- * zero.
- *
- * @return integer the date this sub-key expires.
- */
- public function getExpirationDate()
- {
- return $this->_expirationDate;
- }
-
- // }}}
- // {{{ getFingerprint()
-
- /**
- * Gets the fingerprint of this sub-key
- *
- * @return string the fingerprint of this sub-key.
- */
- public function getFingerprint()
- {
- return $this->_fingerprint;
- }
-
- // }}}
- // {{{ getLength()
-
- /**
- * Gets the length of this sub-key in bits
- *
- * @return integer the length of this sub-key in bits.
- */
- public function getLength()
- {
- return $this->_length;
- }
-
- // }}}
- // {{{ canSign()
-
- /**
- * Gets whether or not this sub-key can sign data
- *
- * @return boolean true if this sub-key can sign data and false if this
- * sub-key can not sign data.
- */
- public function canSign()
- {
- return $this->_canSign;
- }
-
- // }}}
- // {{{ canEncrypt()
-
- /**
- * Gets whether or not this sub-key can encrypt data
- *
- * @return boolean true if this sub-key can encrypt data and false if this
- * sub-key can not encrypt data.
- */
- public function canEncrypt()
- {
- return $this->_canEncrypt;
- }
-
- // }}}
- // {{{ hasPrivate()
-
- /**
- * Gets whether or not the private key for this sub-key exists in the
- * keyring
- *
- * @return boolean true the private key for this sub-key exists in the
- * keyring and false if it does not.
- */
- public function hasPrivate()
- {
- return $this->_hasPrivate;
- }
-
- // }}}
- // {{{ isRevoked()
-
- /**
- * Gets whether or not this sub-key is revoked
- *
- * @return boolean true if this sub-key is revoked and false if it is not.
- */
- public function isRevoked()
- {
- return $this->_isRevoked;
- }
-
- // }}}
- // {{{ setCreationDate()
-
- /**
- * Sets the creation date of this sub-key
- *
- * The creation date is a Unix timestamp.
- *
- * @param integer $creationDate the creation date of this sub-key.
- *
- * @return Crypt_GPG_SubKey the current object, for fluent interface.
- */
- public function setCreationDate($creationDate)
- {
- $this->_creationDate = intval($creationDate);
- return $this;
- }
-
- // }}}
- // {{{ setExpirationDate()
-
- /**
- * Sets the expiration date of this sub-key
- *
- * The expiration date is a Unix timestamp. Specify zero if this sub-key
- * does not expire.
- *
- * @param integer $expirationDate the expiration date of this sub-key.
- *
- * @return Crypt_GPG_SubKey the current object, for fluent interface.
- */
- public function setExpirationDate($expirationDate)
- {
- $this->_expirationDate = intval($expirationDate);
- return $this;
- }
-
- // }}}
- // {{{ setId()
-
- /**
- * Sets the id of this sub-key
- *
- * @param string $id the id of this sub-key.
- *
- * @return Crypt_GPG_SubKey the current object, for fluent interface.
- */
- public function setId($id)
- {
- $this->_id = strval($id);
- return $this;
- }
-
- // }}}
- // {{{ setAlgorithm()
-
- /**
- * Sets the algorithm used by this sub-key
- *
- * @param integer $algorithm the algorithm used by this sub-key.
- *
- * @return Crypt_GPG_SubKey the current object, for fluent interface.
- */
- public function setAlgorithm($algorithm)
- {
- $this->_algorithm = intval($algorithm);
- return $this;
- }
-
- // }}}
- // {{{ setFingerprint()
-
- /**
- * Sets the fingerprint of this sub-key
- *
- * @param string $fingerprint the fingerprint of this sub-key.
- *
- * @return Crypt_GPG_SubKey the current object, for fluent interface.
- */
- public function setFingerprint($fingerprint)
- {
- $this->_fingerprint = strval($fingerprint);
- return $this;
- }
-
- // }}}
- // {{{ setLength()
-
- /**
- * Sets the length of this sub-key in bits
- *
- * @param integer $length the length of this sub-key in bits.
- *
- * @return Crypt_GPG_SubKey the current object, for fluent interface.
- */
- public function setLength($length)
- {
- $this->_length = intval($length);
- return $this;
- }
-
- // }}}
- // {{{ setCanSign()
-
- /**
- * Sets whether of not this sub-key can sign data
- *
- * @param boolean $canSign true if this sub-key can sign data and false if
- * it can not.
- *
- * @return Crypt_GPG_SubKey the current object, for fluent interface.
- */
- public function setCanSign($canSign)
- {
- $this->_canSign = ($canSign) ? true : false;
- return $this;
- }
-
- // }}}
- // {{{ setCanEncrypt()
-
- /**
- * Sets whether of not this sub-key can encrypt data
- *
- * @param boolean $canEncrypt true if this sub-key can encrypt data and
- * false if it can not.
- *
- * @return Crypt_GPG_SubKey the current object, for fluent interface.
- */
- public function setCanEncrypt($canEncrypt)
- {
- $this->_canEncrypt = ($canEncrypt) ? true : false;
- return $this;
- }
-
- // }}}
- // {{{ setHasPrivate()
-
- /**
- * Sets whether of not the private key for this sub-key exists in the
- * keyring
- *
- * @param boolean $hasPrivate true if the private key for this sub-key
- * exists in the keyring and false if it does
- * not.
- *
- * @return Crypt_GPG_SubKey the current object, for fluent interface.
- */
- public function setHasPrivate($hasPrivate)
- {
- $this->_hasPrivate = ($hasPrivate) ? true : false;
- return $this;
- }
-
- // }}}
- // {{{ setRevoked()
-
- /**
- * Sets whether or not this sub-key is revoked
- *
- * @param boolean $isRevoked whether or not this sub-key is revoked.
- *
- * @return Crypt_GPG_SubKey the current object, for fluent interface.
- */
- public function setRevoked($isRevoked)
- {
- $this->_isRevoked = ($isRevoked) ? true : false;
- return $this;
- }
-
- // }}}
- // {{{ parse()
-
- /**
- * Parses a sub-key object from a sub-key string
- *
- * See <b>doc/DETAILS</b> in the
- * {@link http://www.gnupg.org/download/ GPG distribution} for information
- * on how the sub-key string is parsed.
- *
- * @param string $string the string containing the sub-key.
- *
- * @return Crypt_GPG_SubKey the sub-key object parsed from the string.
- */
- public static function parse($string)
- {
- $tokens = explode(':', $string);
-
- $subKey = new Crypt_GPG_SubKey();
-
- $subKey->setId($tokens[4]);
- $subKey->setLength($tokens[2]);
- $subKey->setAlgorithm($tokens[3]);
- $subKey->setCreationDate(self::_parseDate($tokens[5]));
- $subKey->setExpirationDate(self::_parseDate($tokens[6]));
-
- if ($tokens[1] == 'r') {
- $subKey->setRevoked(true);
- }
-
- if (strpos($tokens[11], 's') !== false) {
- $subKey->setCanSign(true);
- }
-
- if (strpos($tokens[11], 'e') !== false) {
- $subKey->setCanEncrypt(true);
- }
-
- return $subKey;
- }
-
- // }}}
- // {{{ _parseDate()
-
- /**
- * Parses a date string as provided by GPG into a UNIX timestamp
- *
- * @param string $string the date string.
- *
- * @return integer the UNIX timestamp corresponding to the provided date
- * string.
- */
- private static function _parseDate($string)
- {
- if ($string == '') {
- $timestamp = 0;
- } else {
- // all times are in UTC according to GPG documentation
- $timeZone = new DateTimeZone('UTC');
-
- if (strpos($string, 'T') === false) {
- // interpret as UNIX timestamp
- $string = '@' . $string;
- }
-
- $date = new DateTime($string, $timeZone);
-
- // convert to UNIX timestamp
- $timestamp = intval($date->format('U'));
- }
-
- return $timestamp;
- }
-
- // }}}
-}
-
-// }}}
-
-?>
diff --git a/program/lib/Crypt/GPG/UserId.php b/program/lib/Crypt/GPG/UserId.php
deleted file mode 100644
index a367bceb3..000000000
--- a/program/lib/Crypt/GPG/UserId.php
+++ /dev/null
@@ -1,373 +0,0 @@
-<?php
-
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * Contains a data class representing a GPG user id
- *
- * PHP version 5
- *
- * LICENSE:
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of the
- * License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2008-2010 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version CVS: $Id$
- * @link http://pear.php.net/package/Crypt_GPG
- */
-
-// {{{ class Crypt_GPG_UserId
-
-/**
- * A class for GPG user id information
- *
- * This class is used to store the results of the {@link Crypt_GPG::getKeys()}
- * method. User id objects are members of a {@link Crypt_GPG_Key} object.
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2008-2010 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link http://pear.php.net/package/Crypt_GPG
- * @see Crypt_GPG::getKeys()
- * @see Crypt_GPG_Key::getUserIds()
- */
-class Crypt_GPG_UserId
-{
- // {{{ class properties
-
- /**
- * The name field of this user id
- *
- * @var string
- */
- private $_name = '';
-
- /**
- * The comment field of this user id
- *
- * @var string
- */
- private $_comment = '';
-
- /**
- * The email field of this user id
- *
- * @var string
- */
- private $_email = '';
-
- /**
- * Whether or not this user id is revoked
- *
- * @var boolean
- */
- private $_isRevoked = false;
-
- /**
- * Whether or not this user id is valid
- *
- * @var boolean
- */
- private $_isValid = true;
-
- // }}}
- // {{{ __construct()
-
- /**
- * Creates a new user id
- *
- * User ids can be initialized from an array of named values. Available
- * names are:
- *
- * - <kbd>string name</kbd> - the name field of the user id.
- * - <kbd>string comment</kbd> - the comment field of the user id.
- * - <kbd>string email</kbd> - the email field of the user id.
- * - <kbd>boolean valid</kbd> - whether or not the user id is valid.
- * - <kbd>boolean revoked</kbd> - whether or not the user id is revoked.
- *
- * @param Crypt_GPG_UserId|string|array $userId optional. Either an
- * existing user id object, which is copied; a user id string, which
- * is parsed; or an array of initial values.
- */
- public function __construct($userId = null)
- {
- // parse from string
- if (is_string($userId)) {
- $userId = self::parse($userId);
- }
-
- // copy from object
- if ($userId instanceof Crypt_GPG_UserId) {
- $this->_name = $userId->_name;
- $this->_comment = $userId->_comment;
- $this->_email = $userId->_email;
- $this->_isRevoked = $userId->_isRevoked;
- $this->_isValid = $userId->_isValid;
- }
-
- // initialize from array
- if (is_array($userId)) {
- if (array_key_exists('name', $userId)) {
- $this->setName($userId['name']);
- }
-
- if (array_key_exists('comment', $userId)) {
- $this->setComment($userId['comment']);
- }
-
- if (array_key_exists('email', $userId)) {
- $this->setEmail($userId['email']);
- }
-
- if (array_key_exists('revoked', $userId)) {
- $this->setRevoked($userId['revoked']);
- }
-
- if (array_key_exists('valid', $userId)) {
- $this->setValid($userId['valid']);
- }
- }
- }
-
- // }}}
- // {{{ getName()
-
- /**
- * Gets the name field of this user id
- *
- * @return string the name field of this user id.
- */
- public function getName()
- {
- return $this->_name;
- }
-
- // }}}
- // {{{ getComment()
-
- /**
- * Gets the comments field of this user id
- *
- * @return string the comments field of this user id.
- */
- public function getComment()
- {
- return $this->_comment;
- }
-
- // }}}
- // {{{ getEmail()
-
- /**
- * Gets the email field of this user id
- *
- * @return string the email field of this user id.
- */
- public function getEmail()
- {
- return $this->_email;
- }
-
- // }}}
- // {{{ isRevoked()
-
- /**
- * Gets whether or not this user id is revoked
- *
- * @return boolean true if this user id is revoked and false if it is not.
- */
- public function isRevoked()
- {
- return $this->_isRevoked;
- }
-
- // }}}
- // {{{ isValid()
-
- /**
- * Gets whether or not this user id is valid
- *
- * @return boolean true if this user id is valid and false if it is not.
- */
- public function isValid()
- {
- return $this->_isValid;
- }
-
- // }}}
- // {{{ __toString()
-
- /**
- * Gets a string representation of this user id
- *
- * The string is formatted as:
- * <b><kbd>name (comment) <email-address></kbd></b>.
- *
- * @return string a string representation of this user id.
- */
- public function __toString()
- {
- $components = array();
-
- if (strlen($this->_name) > 0) {
- $components[] = $this->_name;
- }
-
- if (strlen($this->_comment) > 0) {
- $components[] = '(' . $this->_comment . ')';
- }
-
- if (strlen($this->_email) > 0) {
- $components[] = '<' . $this->_email. '>';
- }
-
- return implode(' ', $components);
- }
-
- // }}}
- // {{{ setName()
-
- /**
- * Sets the name field of this user id
- *
- * @param string $name the name field of this user id.
- *
- * @return Crypt_GPG_UserId the current object, for fluent interface.
- */
- public function setName($name)
- {
- $this->_name = strval($name);
- return $this;
- }
-
- // }}}
- // {{{ setComment()
-
- /**
- * Sets the comment field of this user id
- *
- * @param string $comment the comment field of this user id.
- *
- * @return Crypt_GPG_UserId the current object, for fluent interface.
- */
- public function setComment($comment)
- {
- $this->_comment = strval($comment);
- return $this;
- }
-
- // }}}
- // {{{ setEmail()
-
- /**
- * Sets the email field of this user id
- *
- * @param string $email the email field of this user id.
- *
- * @return Crypt_GPG_UserId the current object, for fluent interface.
- */
- public function setEmail($email)
- {
- $this->_email = strval($email);
- return $this;
- }
-
- // }}}
- // {{{ setRevoked()
-
- /**
- * Sets whether or not this user id is revoked
- *
- * @param boolean $isRevoked whether or not this user id is revoked.
- *
- * @return Crypt_GPG_UserId the current object, for fluent interface.
- */
- public function setRevoked($isRevoked)
- {
- $this->_isRevoked = ($isRevoked) ? true : false;
- return $this;
- }
-
- // }}}
- // {{{ setValid()
-
- /**
- * Sets whether or not this user id is valid
- *
- * @param boolean $isValid whether or not this user id is valid.
- *
- * @return Crypt_GPG_UserId the current object, for fluent interface.
- */
- public function setValid($isValid)
- {
- $this->_isValid = ($isValid) ? true : false;
- return $this;
- }
-
- // }}}
- // {{{ parse()
-
- /**
- * Parses a user id object from a user id string
- *
- * A user id string is of the form:
- * <b><kbd>name (comment) <email-address></kbd></b> with the <i>comment</i>
- * and <i>email-address</i> fields being optional.
- *
- * @param string $string the user id string to parse.
- *
- * @return Crypt_GPG_UserId the user id object parsed from the string.
- */
- public static function parse($string)
- {
- $userId = new Crypt_GPG_UserId();
- $email = '';
- $comment = '';
-
- // get email address from end of string if it exists
- $matches = array();
- if (preg_match('/^(.+?) <([^>]+)>$/', $string, $matches) === 1) {
- $string = $matches[1];
- $email = $matches[2];
- }
-
- // get comment from end of string if it exists
- $matches = array();
- if (preg_match('/^(.+?) \(([^\)]+)\)$/', $string, $matches) === 1) {
- $string = $matches[1];
- $comment = $matches[2];
- }
-
- $name = $string;
-
- $userId->setName($name);
- $userId->setComment($comment);
- $userId->setEmail($email);
-
- return $userId;
- }
-
- // }}}
-}
-
-// }}}
-
-?>
diff --git a/program/lib/Crypt/GPG/VerifyStatusHandler.php b/program/lib/Crypt/GPG/VerifyStatusHandler.php
deleted file mode 100644
index 8904be149..000000000
--- a/program/lib/Crypt/GPG/VerifyStatusHandler.php
+++ /dev/null
@@ -1,216 +0,0 @@
-<?php
-
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * Crypt_GPG is a package to use GPG from PHP
- *
- * This file contains an object that handles GPG's status output for the verify
- * operation.
- *
- * PHP version 5
- *
- * LICENSE:
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of the
- * License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2008 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version CVS: $Id$
- * @link http://pear.php.net/package/Crypt_GPG
- * @link http://www.gnupg.org/
- */
-
-/**
- * Signature object class definition
- */
-require_once 'Crypt/GPG/Signature.php';
-
-/**
- * Status line handler for the verify operation
- *
- * This class is used internally by Crypt_GPG and does not need be used
- * directly. See the {@link Crypt_GPG} class for end-user API.
- *
- * This class is responsible for building signature objects that are returned
- * by the {@link Crypt_GPG::verify()} method. See <b>doc/DETAILS</b> in the
- * {@link http://www.gnupg.org/download/ GPG distribution} for detailed
- * information on GPG's status output for the verify operation.
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2008 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link http://pear.php.net/package/Crypt_GPG
- * @link http://www.gnupg.org/
- */
-class Crypt_GPG_VerifyStatusHandler
-{
- // {{{ protected properties
-
- /**
- * The current signature id
- *
- * Ths signature id is emitted by GPG before the new signature line so we
- * must remember it temporarily.
- *
- * @var string
- */
- protected $signatureId = '';
-
- /**
- * List of parsed {@link Crypt_GPG_Signature} objects
- *
- * @var array
- */
- protected $signatures = array();
-
- /**
- * Array index of the current signature
- *
- * @var integer
- */
- protected $index = -1;
-
- // }}}
- // {{{ handle()
-
- /**
- * Handles a status line
- *
- * @param string $line the status line to handle.
- *
- * @return void
- */
- public function handle($line)
- {
- $tokens = explode(' ', $line);
- switch ($tokens[0]) {
- case 'GOODSIG':
- case 'EXPSIG':
- case 'EXPKEYSIG':
- case 'REVKEYSIG':
- case 'BADSIG':
- $signature = new Crypt_GPG_Signature();
-
- // if there was a signature id, set it on the new signature
- if ($this->signatureId != '') {
- $signature->setId($this->signatureId);
- $this->signatureId = '';
- }
-
- // Detect whether fingerprint or key id was returned and set
- // signature values appropriately. Key ids are strings of either
- // 16 or 8 hexadecimal characters. Fingerprints are strings of 40
- // hexadecimal characters. The key id is the last 16 characters of
- // the key fingerprint.
- if (strlen($tokens[1]) > 16) {
- $signature->setKeyFingerprint($tokens[1]);
- $signature->setKeyId(substr($tokens[1], -16));
- } else {
- $signature->setKeyId($tokens[1]);
- }
-
- // get user id string
- $string = implode(' ', array_splice($tokens, 2));
- $string = rawurldecode($string);
-
- $signature->setUserId(Crypt_GPG_UserId::parse($string));
-
- $this->index++;
- $this->signatures[$this->index] = $signature;
- break;
-
- case 'ERRSIG':
- $signature = new Crypt_GPG_Signature();
-
- // if there was a signature id, set it on the new signature
- if ($this->signatureId != '') {
- $signature->setId($this->signatureId);
- $this->signatureId = '';
- }
-
- // Detect whether fingerprint or key id was returned and set
- // signature values appropriately. Key ids are strings of either
- // 16 or 8 hexadecimal characters. Fingerprints are strings of 40
- // hexadecimal characters. The key id is the last 16 characters of
- // the key fingerprint.
- if (strlen($tokens[1]) > 16) {
- $signature->setKeyFingerprint($tokens[1]);
- $signature->setKeyId(substr($tokens[1], -16));
- } else {
- $signature->setKeyId($tokens[1]);
- }
-
- $this->index++;
- $this->signatures[$this->index] = $signature;
-
- break;
-
- case 'VALIDSIG':
- if (!array_key_exists($this->index, $this->signatures)) {
- break;
- }
-
- $signature = $this->signatures[$this->index];
-
- $signature->setValid(true);
- $signature->setKeyFingerprint($tokens[1]);
-
- if (strpos($tokens[3], 'T') === false) {
- $signature->setCreationDate($tokens[3]);
- } else {
- $signature->setCreationDate(strtotime($tokens[3]));
- }
-
- if (array_key_exists(4, $tokens)) {
- if (strpos($tokens[4], 'T') === false) {
- $signature->setExpirationDate($tokens[4]);
- } else {
- $signature->setExpirationDate(strtotime($tokens[4]));
- }
- }
-
- break;
-
- case 'SIG_ID':
- // note: signature id comes before new signature line and may not
- // exist for some signature types
- $this->signatureId = $tokens[1];
- break;
- }
- }
-
- // }}}
- // {{{ getSignatures()
-
- /**
- * Gets the {@link Crypt_GPG_Signature} objects parsed by this handler
- *
- * @return array the signature objects parsed by this handler.
- */
- public function getSignatures()
- {
- return $this->signatures;
- }
-
- // }}}
-}
-
-?>
diff --git a/program/lib/Crypt/GPGAbstract.php b/program/lib/Crypt/GPGAbstract.php
deleted file mode 100644
index 214133936..000000000
--- a/program/lib/Crypt/GPGAbstract.php
+++ /dev/null
@@ -1,508 +0,0 @@
-<?php
-
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * Crypt_GPG is a package to use GPG from PHP
- *
- * This package provides an object oriented interface to GNU Privacy
- * Guard (GPG). It requires the GPG executable to be on the system.
- *
- * Though GPG can support symmetric-key cryptography, this package is intended
- * only to facilitate public-key cryptography.
- *
- * This file contains an abstract implementation of a user of the
- * {@link Crypt_GPG_Engine} class.
- *
- * PHP version 5
- *
- * LICENSE:
- *
- * This library is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of the
- * License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Nathan Fredrickson <nathan@silverorange.com>
- * @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2005-2013 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version CVS: $Id: GPG.php 305428 2010-11-17 02:47:56Z gauthierm $
- * @link http://pear.php.net/package/Crypt_GPG
- * @link http://pear.php.net/manual/en/package.encryption.crypt-gpg.php
- * @link http://www.gnupg.org/
- */
-
-/**
- * GPG key class
- */
-require_once 'Crypt/GPG/Key.php';
-
-/**
- * GPG sub-key class
- */
-require_once 'Crypt/GPG/SubKey.php';
-
-/**
- * GPG user id class
- */
-require_once 'Crypt/GPG/UserId.php';
-
-/**
- * GPG process and I/O engine class
- */
-require_once 'Crypt/GPG/Engine.php';
-
-/**
- * GPG exception classes
- */
-require_once 'Crypt/GPG/Exceptions.php';
-
-// {{{ class Crypt_GPGAbstract
-
-/**
- * Base class for implementing a user of {@link Crypt_GPG_Engine}
- *
- * @category Encryption
- * @package Crypt_GPG
- * @author Nathan Fredrickson <nathan@silverorange.com>
- * @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2005-2013 silverorange
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @link http://pear.php.net/package/Crypt_GPG
- * @link http://www.gnupg.org/
- */
-abstract class Crypt_GPGAbstract
-{
- // {{{ class error constants
-
- /**
- * Error code returned when there is no error.
- */
- const ERROR_NONE = 0;
-
- /**
- * Error code returned when an unknown or unhandled error occurs.
- */
- const ERROR_UNKNOWN = 1;
-
- /**
- * Error code returned when a bad passphrase is used.
- */
- const ERROR_BAD_PASSPHRASE = 2;
-
- /**
- * Error code returned when a required passphrase is missing.
- */
- const ERROR_MISSING_PASSPHRASE = 3;
-
- /**
- * Error code returned when a key that is already in the keyring is
- * imported.
- */
- const ERROR_DUPLICATE_KEY = 4;
-
- /**
- * Error code returned the required data is missing for an operation.
- *
- * This could be missing key data, missing encrypted data or missing
- * signature data.
- */
- const ERROR_NO_DATA = 5;
-
- /**
- * Error code returned when an unsigned key is used.
- */
- const ERROR_UNSIGNED_KEY = 6;
-
- /**
- * Error code returned when a key that is not self-signed is used.
- */
- const ERROR_NOT_SELF_SIGNED = 7;
-
- /**
- * Error code returned when a public or private key that is not in the
- * keyring is used.
- */
- const ERROR_KEY_NOT_FOUND = 8;
-
- /**
- * Error code returned when an attempt to delete public key having a
- * private key is made.
- */
- const ERROR_DELETE_PRIVATE_KEY = 9;
-
- /**
- * Error code returned when one or more bad signatures are detected.
- */
- const ERROR_BAD_SIGNATURE = 10;
-
- /**
- * Error code returned when there is a problem reading GnuPG data files.
- */
- const ERROR_FILE_PERMISSIONS = 11;
-
- /**
- * Error code returned when a key could not be created.
- */
- const ERROR_KEY_NOT_CREATED = 12;
-
- /**
- * Error code returned when bad key parameters are used during key
- * generation.
- */
- const ERROR_BAD_KEY_PARAMS = 13;
-
- // }}}
- // {{{ other class constants
-
- /**
- * URI at which package bugs may be reported.
- */
- const BUG_URI = 'http://pear.php.net/bugs/report.php?package=Crypt_GPG';
-
- // }}}
- // {{{ protected class properties
-
- /**
- * Engine used to control the GPG subprocess
- *
- * @var Crypt_GPG_Engine
- *
- * @see Crypt_GPGAbstract::setEngine()
- */
- protected $engine = null;
-
- // }}}
- // {{{ __construct()
-
- /**
- * Creates a new GPG object
- *
- * Available options are:
- *
- * - <kbd>string homedir</kbd> - the directory where the GPG
- * keyring files are stored. If not
- * specified, Crypt_GPG uses the
- * default of <kbd>~/.gnupg</kbd>.
- * - <kbd>string publicKeyring</kbd> - the file path of the public
- * keyring. Use this if the public
- * keyring is not in the homedir, or
- * if the keyring is in a directory
- * not writable by the process
- * invoking GPG (like Apache). Then
- * you can specify the path to the
- * keyring with this option
- * (/foo/bar/pubring.gpg), and specify
- * a writable directory (like /tmp)
- * using the <i>homedir</i> option.
- * - <kbd>string privateKeyring</kbd> - the file path of the private
- * keyring. Use this if the private
- * keyring is not in the homedir, or
- * if the keyring is in a directory
- * not writable by the process
- * invoking GPG (like Apache). Then
- * you can specify the path to the
- * keyring with this option
- * (/foo/bar/secring.gpg), and specify
- * a writable directory (like /tmp)
- * using the <i>homedir</i> option.
- * - <kbd>string trustDb</kbd> - the file path of the web-of-trust
- * database. Use this if the trust
- * database is not in the homedir, or
- * if the database is in a directory
- * not writable by the process
- * invoking GPG (like Apache). Then
- * you can specify the path to the
- * trust database with this option
- * (/foo/bar/trustdb.gpg), and specify
- * a writable directory (like /tmp)
- * using the <i>homedir</i> option.
- * - <kbd>string binary</kbd> - the location of the GPG binary. If
- * not specified, the driver attempts
- * to auto-detect the GPG binary
- * location using a list of known
- * default locations for the current
- * operating system. The option
- * <kbd>gpgBinary</kbd> is a
- * deprecated alias for this option.
- * - <kbd>string agent</kbd> - the location of the GnuPG agent
- * binary. The gpg-agent is only
- * used for GnuPG 2.x. If not
- * specified, the engine attempts
- * to auto-detect the gpg-agent
- * binary location using a list of
- * know default locations for the
- * current operating system.
- * - <kbd>boolean debug</kbd> - whether or not to use debug mode.
- * When debug mode is on, all
- * communication to and from the GPG
- * subprocess is logged. This can be
- *
- * @param array $options optional. An array of options used to create the
- * GPG object. All options are optional and are
- * represented as key-value pairs.
- *
- * @throws Crypt_GPG_FileException if the <kbd>homedir</kbd> does not exist
- * and cannot be created. This can happen if <kbd>homedir</kbd> is
- * not specified, Crypt_GPG is run as the web user, and the web
- * user has no home directory. This exception is also thrown if any
- * of the options <kbd>publicKeyring</kbd>,
- * <kbd>privateKeyring</kbd> or <kbd>trustDb</kbd> options are
- * specified but the files do not exist or are are not readable.
- * This can happen if the user running the Crypt_GPG process (for
- * example, the Apache user) does not have permission to read the
- * files.
- *
- * @throws PEAR_Exception if the provided <kbd>binary</kbd> is invalid, or
- * if no <kbd>binary</kbd> is provided and no suitable binary could
- * be found.
- *
- * @throws PEAR_Exception if the provided <kbd>agent</kbd> is invalid, or
- * if no <kbd>agent</kbd> is provided and no suitable gpg-agent
- * cound be found.
- */
- public function __construct(array $options = array())
- {
- $this->setEngine(new Crypt_GPG_Engine($options));
- }
-
- // }}}
- // {{{ setEngine()
-
- /**
- * Sets the I/O engine to use for GnuPG operations
- *
- * Normally this method does not need to be used. It provides a means for
- * dependency injection.
- *
- * @param Crypt_GPG_Engine $engine the engine to use.
- *
- * @return Crypt_GPGAbstract the current object, for fluent interface.
- */
- public function setEngine(Crypt_GPG_Engine $engine)
- {
- $this->engine = $engine;
- return $this;
- }
-
- // }}}
- // {{{ _getKeys()
-
- /**
- * Gets the available keys in the keyring
- *
- * Calls GPG with the <kbd>--list-keys</kbd> command and grabs keys. See
- * the first section of <b>doc/DETAILS</b> in the
- * {@link http://www.gnupg.org/download/ GPG package} for a detailed
- * description of how the GPG command output is parsed.
- *
- * @param string $keyId optional. Only keys with that match the specified
- * pattern are returned. The pattern may be part of
- * a user id, a key id or a key fingerprint. If not
- * specified, all keys are returned.
- *
- * @return array an array of {@link Crypt_GPG_Key} objects. If no keys
- * match the specified <kbd>$keyId</kbd> an empty array is
- * returned.
- *
- * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
- * Use the <kbd>debug</kbd> option and file a bug report if these
- * exceptions occur.
- *
- * @see Crypt_GPG_Key
- */
- protected function _getKeys($keyId = '')
- {
- // get private key fingerprints
- if ($keyId == '') {
- $operation = '--list-secret-keys';
- } else {
- $operation = '--list-secret-keys ' . escapeshellarg($keyId);
- }
-
- // According to The file 'doc/DETAILS' in the GnuPG distribution, using
- // double '--with-fingerprint' also prints the fingerprint for subkeys.
- $arguments = array(
- '--with-colons',
- '--with-fingerprint',
- '--with-fingerprint',
- '--fixed-list-mode'
- );
-
- $output = '';
-
- $this->engine->reset();
- $this->engine->setOutput($output);
- $this->engine->setOperation($operation, $arguments);
- $this->engine->run();
-
- $code = $this->engine->getErrorCode();
-
- switch ($code) {
- case self::ERROR_NONE:
- case self::ERROR_KEY_NOT_FOUND:
- // ignore not found key errors
- break;
- case self::ERROR_FILE_PERMISSIONS:
- $filename = $this->engine->getErrorFilename();
- if ($filename) {
- throw new Crypt_GPG_FileException(
- sprintf(
- 'Error reading GnuPG data file \'%s\'. Check to make ' .
- 'sure it is readable by the current user.',
- $filename
- ),
- $code,
- $filename
- );
- }
- throw new Crypt_GPG_FileException(
- 'Error reading GnuPG data file. Check to make GnuPG data ' .
- 'files are readable by the current user.',
- $code
- );
- default:
- throw new Crypt_GPG_Exception(
- 'Unknown error getting keys. Please use the \'debug\' option ' .
- 'when creating the Crypt_GPG object, and file a bug report ' .
- 'at ' . self::BUG_URI,
- $code
- );
- }
-
- $privateKeyFingerprints = array();
-
- $lines = explode(PHP_EOL, $output);
- foreach ($lines as $line) {
- $lineExp = explode(':', $line);
- if ($lineExp[0] == 'fpr') {
- $privateKeyFingerprints[] = $lineExp[9];
- }
- }
-
- // get public keys
- if ($keyId == '') {
- $operation = '--list-public-keys';
- } else {
- $operation = '--list-public-keys ' . escapeshellarg($keyId);
- }
-
- $output = '';
-
- $this->engine->reset();
- $this->engine->setOutput($output);
- $this->engine->setOperation($operation, $arguments);
- $this->engine->run();
-
- $code = $this->engine->getErrorCode();
-
- switch ($code) {
- case self::ERROR_NONE:
- case self::ERROR_KEY_NOT_FOUND:
- // ignore not found key errors
- break;
- case self::ERROR_FILE_PERMISSIONS:
- $filename = $this->engine->getErrorFilename();
- if ($filename) {
- throw new Crypt_GPG_FileException(
- sprintf(
- 'Error reading GnuPG data file \'%s\'. Check to make ' .
- 'sure it is readable by the current user.',
- $filename
- ),
- $code,
- $filename
- );
- }
- throw new Crypt_GPG_FileException(
- 'Error reading GnuPG data file. Check to make GnuPG data ' .
- 'files are readable by the current user.',
- $code
- );
- default:
- throw new Crypt_GPG_Exception(
- 'Unknown error getting keys. Please use the \'debug\' option ' .
- 'when creating the Crypt_GPG object, and file a bug report ' .
- 'at ' . self::BUG_URI,
- $code
- );
- }
-
- $keys = array();
-
- $key = null; // current key
- $subKey = null; // current sub-key
-
- $lines = explode(PHP_EOL, $output);
- foreach ($lines as $line) {
- $lineExp = explode(':', $line);
-
- if ($lineExp[0] == 'pub') {
-
- // new primary key means last key should be added to the array
- if ($key !== null) {
- $keys[] = $key;
- }
-
- $key = new Crypt_GPG_Key();
-
- $subKey = Crypt_GPG_SubKey::parse($line);
- $key->addSubKey($subKey);
-
- } elseif ($lineExp[0] == 'sub') {
-
- $subKey = Crypt_GPG_SubKey::parse($line);
- $key->addSubKey($subKey);
-
- } elseif ($lineExp[0] == 'fpr') {
-
- $fingerprint = $lineExp[9];
-
- // set current sub-key fingerprint
- $subKey->setFingerprint($fingerprint);
-
- // if private key exists, set has private to true
- if (in_array($fingerprint, $privateKeyFingerprints)) {
- $subKey->setHasPrivate(true);
- }
-
- } elseif ($lineExp[0] == 'uid') {
-
- $string = stripcslashes($lineExp[9]); // as per documentation
- $userId = new Crypt_GPG_UserId($string);
-
- if ($lineExp[1] == 'r') {
- $userId->setRevoked(true);
- }
-
- $key->addUserId($userId);
-
- }
- }
-
- // add last key
- if ($key !== null) {
- $keys[] = $key;
- }
-
- return $keys;
- }
-
- // }}}
-}
-
-// }}}
-
-?>
diff --git a/program/lib/Mail/mime.php b/program/lib/Mail/mime.php
deleted file mode 100644
index e079af7e9..000000000
--- a/program/lib/Mail/mime.php
+++ /dev/null
@@ -1,1495 +0,0 @@
-<?php
-/**
- * The Mail_Mime class is used to create MIME E-mail messages
- *
- * The Mail_Mime class provides an OO interface to create MIME
- * enabled email messages. This way you can create emails that
- * contain plain-text bodies, HTML bodies, attachments, inline
- * images and specific headers.
- *
- * Compatible with PHP versions 4 and 5
- *
- * LICENSE: This LICENSE is in the BSD license style.
- * Copyright (c) 2002-2003, Richard Heyes <richard@phpguru.org>
- * Copyright (c) 2003-2006, PEAR <pear-group@php.net>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or
- * without modification, are permitted provided that the following
- * conditions are met:
- *
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * - Neither the name of the authors, nor the names of its contributors
- * may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- *
- * @category Mail
- * @package Mail_Mime
- * @author Richard Heyes <richard@phpguru.org>
- * @author Tomas V.V. Cox <cox@idecnet.com>
- * @author Cipriano Groenendal <cipri@php.net>
- * @author Sean Coates <sean@php.net>
- * @author Aleksander Machniak <alec@php.net>
- * @copyright 2003-2006 PEAR <pear-group@php.net>
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- * @version CVS: $Id$
- * @link http://pear.php.net/package/Mail_mime
- *
- * This class is based on HTML Mime Mail class from
- * Richard Heyes <richard@phpguru.org> which was based also
- * in the mime_mail.class by Tobias Ratschiller <tobias@dnet.it>
- * and Sascha Schumann <sascha@schumann.cx>
- */
-
-
-/**
- * require PEAR
- *
- * This package depends on PEAR to raise errors.
- */
-require_once 'PEAR.php';
-
-/**
- * require Mail_mimePart
- *
- * Mail_mimePart contains the code required to
- * create all the different parts a mail can
- * consist of.
- */
-require_once 'Mail/mimePart.php';
-
-
-/**
- * The Mail_Mime class provides an OO interface to create MIME
- * enabled email messages. This way you can create emails that
- * contain plain-text bodies, HTML bodies, attachments, inline
- * images and specific headers.
- *
- * @category Mail
- * @package Mail_Mime
- * @author Richard Heyes <richard@phpguru.org>
- * @author Tomas V.V. Cox <cox@idecnet.com>
- * @author Cipriano Groenendal <cipri@php.net>
- * @author Sean Coates <sean@php.net>
- * @copyright 2003-2006 PEAR <pear-group@php.net>
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- * @version Release: @package_version@
- * @link http://pear.php.net/package/Mail_mime
- */
-class Mail_mime
-{
- /**
- * Contains the plain text part of the email
- *
- * @var string
- * @access private
- */
- var $_txtbody;
-
- /**
- * Contains the html part of the email
- *
- * @var string
- * @access private
- */
- var $_htmlbody;
-
- /**
- * list of the attached images
- *
- * @var array
- * @access private
- */
- var $_html_images = array();
-
- /**
- * list of the attachements
- *
- * @var array
- * @access private
- */
- var $_parts = array();
-
- /**
- * Headers for the mail
- *
- * @var array
- * @access private
- */
- var $_headers = array();
-
- /**
- * Build parameters
- *
- * @var array
- * @access private
- */
- var $_build_params = array(
- // What encoding to use for the headers
- // Options: quoted-printable or base64
- 'head_encoding' => 'quoted-printable',
- // What encoding to use for plain text
- // Options: 7bit, 8bit, base64, or quoted-printable
- 'text_encoding' => 'quoted-printable',
- // What encoding to use for html
- // Options: 7bit, 8bit, base64, or quoted-printable
- 'html_encoding' => 'quoted-printable',
- // The character set to use for html
- 'html_charset' => 'ISO-8859-1',
- // The character set to use for text
- 'text_charset' => 'ISO-8859-1',
- // The character set to use for headers
- 'head_charset' => 'ISO-8859-1',
- // End-of-line sequence
- 'eol' => "\r\n",
- // Delay attachment files IO until building the message
- 'delay_file_io' => false
- );
-
- /**
- * Constructor function
- *
- * @param mixed $params Build parameters that change the way the email
- * is built. Should be an associative array.
- * See $_build_params.
- *
- * @return void
- * @access public
- */
- function Mail_mime($params = array())
- {
- // Backward-compatible EOL setting
- if (is_string($params)) {
- $this->_build_params['eol'] = $params;
- } else if (defined('MAIL_MIME_CRLF') && !isset($params['eol'])) {
- $this->_build_params['eol'] = MAIL_MIME_CRLF;
- }
-
- // Update build parameters
- if (!empty($params) && is_array($params)) {
- while (list($key, $value) = each($params)) {
- $this->_build_params[$key] = $value;
- }
- }
- }
-
- /**
- * Set build parameter value
- *
- * @param string $name Parameter name
- * @param string $value Parameter value
- *
- * @return void
- * @access public
- * @since 1.6.0
- */
- function setParam($name, $value)
- {
- $this->_build_params[$name] = $value;
- }
-
- /**
- * Get build parameter value
- *
- * @param string $name Parameter name
- *
- * @return mixed Parameter value
- * @access public
- * @since 1.6.0
- */
- function getParam($name)
- {
- return isset($this->_build_params[$name]) ? $this->_build_params[$name] : null;
- }
-
- /**
- * Accessor function to set the body text. Body text is used if
- * it's not an html mail being sent or else is used to fill the
- * text/plain part that emails clients who don't support
- * html should show.
- *
- * @param string $data Either a string or
- * the file name with the contents
- * @param bool $isfile If true the first param should be treated
- * as a file name, else as a string (default)
- * @param bool $append If true the text or file is appended to
- * the existing body, else the old body is
- * overwritten
- *
- * @return mixed True on success or PEAR_Error object
- * @access public
- */
- function setTXTBody($data, $isfile = false, $append = false)
- {
- if (!$isfile) {
- if (!$append) {
- $this->_txtbody = $data;
- } else {
- $this->_txtbody .= $data;
- }
- } else {
- $cont = $this->_file2str($data);
- if ($this->_isError($cont)) {
- return $cont;
- }
- if (!$append) {
- $this->_txtbody = $cont;
- } else {
- $this->_txtbody .= $cont;
- }
- }
-
- return true;
- }
-
- /**
- * Get message text body
- *
- * @return string Text body
- * @access public
- * @since 1.6.0
- */
- function getTXTBody()
- {
- return $this->_txtbody;
- }
-
- /**
- * Adds a html part to the mail.
- *
- * @param string $data Either a string or the file name with the
- * contents
- * @param bool $isfile A flag that determines whether $data is a
- * filename, or a string(false, default)
- *
- * @return bool True on success
- * @access public
- */
- function setHTMLBody($data, $isfile = false)
- {
- if (!$isfile) {
- $this->_htmlbody = $data;
- } else {
- $cont = $this->_file2str($data);
- if ($this->_isError($cont)) {
- return $cont;
- }
- $this->_htmlbody = $cont;
- }
-
- return true;
- }
-
- /**
- * Get message HTML body
- *
- * @return string HTML body
- * @access public
- * @since 1.6.0
- */
- function getHTMLBody()
- {
- return $this->_htmlbody;
- }
-
- /**
- * Adds an image to the list of embedded images.
- *
- * @param string $file The image file name OR image data itself
- * @param string $c_type The content type
- * @param string $name The filename of the image.
- * Only used if $file is the image data.
- * @param bool $isfile Whether $file is a filename or not.
- * Defaults to true
- * @param string $content_id Desired Content-ID of MIME part
- * Defaults to generated unique ID
- *
- * @return bool True on success
- * @access public
- */
- function addHTMLImage($file,
- $c_type='application/octet-stream',
- $name = '',
- $isfile = true,
- $content_id = null
- ) {
- $bodyfile = null;
-
- if ($isfile) {
- // Don't load file into memory
- if ($this->_build_params['delay_file_io']) {
- $filedata = null;
- $bodyfile = $file;
- } else {
- if ($this->_isError($filedata = $this->_file2str($file))) {
- return $filedata;
- }
- }
- $filename = ($name ? $name : $file);
- } else {
- $filedata = $file;
- $filename = $name;
- }
-
- if (!$content_id) {
- $content_id = preg_replace('/[^0-9a-zA-Z]/', '', uniqid(time(), true));
- }
-
- $this->_html_images[] = array(
- 'body' => $filedata,
- 'body_file' => $bodyfile,
- 'name' => $filename,
- 'c_type' => $c_type,
- 'cid' => $content_id
- );
-
- return true;
- }
-
- /**
- * Adds a file to the list of attachments.
- *
- * @param string $file The file name of the file to attach
- * or the file contents itself
- * @param string $c_type The content type
- * @param string $name The filename of the attachment
- * Only use if $file is the contents
- * @param bool $isfile Whether $file is a filename or not. Defaults to true
- * @param string $encoding The type of encoding to use. Defaults to base64.
- * Possible values: 7bit, 8bit, base64 or quoted-printable.
- * @param string $disposition The content-disposition of this file
- * Defaults to attachment.
- * Possible values: attachment, inline.
- * @param string $charset The character set of attachment's content.
- * @param string $language The language of the attachment
- * @param string $location The RFC 2557.4 location of the attachment
- * @param string $n_encoding Encoding of the attachment's name in Content-Type
- * By default filenames are encoded using RFC2231 method
- * Here you can set RFC2047 encoding (quoted-printable
- * or base64) instead
- * @param string $f_encoding Encoding of the attachment's filename
- * in Content-Disposition header.
- * @param string $description Content-Description header
- * @param string $h_charset The character set of the headers e.g. filename
- * If not specified, $charset will be used
- * @param array $add_headers Additional part headers. Array keys can be in form
- * of <header_name>:<parameter_name>
- *
- * @return mixed True on success or PEAR_Error object
- * @access public
- */
- function addAttachment($file,
- $c_type = 'application/octet-stream',
- $name = '',
- $isfile = true,
- $encoding = 'base64',
- $disposition = 'attachment',
- $charset = '',
- $language = '',
- $location = '',
- $n_encoding = null,
- $f_encoding = null,
- $description = '',
- $h_charset = null,
- $add_headers = array()
- ) {
- $bodyfile = null;
-
- if ($isfile) {
- // Don't load file into memory
- if ($this->_build_params['delay_file_io']) {
- $filedata = null;
- $bodyfile = $file;
- } else {
- if ($this->_isError($filedata = $this->_file2str($file))) {
- return $filedata;
- }
- }
- // Force the name the user supplied, otherwise use $file
- $filename = ($name ? $name : $this->_basename($file));
- } else {
- $filedata = $file;
- $filename = $name;
- }
-
- if (!strlen($filename)) {
- $msg = "The supplied filename for the attachment can't be empty";
- return $this->_raiseError($msg);
- }
-
- $this->_parts[] = array(
- 'body' => $filedata,
- 'body_file' => $bodyfile,
- 'name' => $filename,
- 'c_type' => $c_type,
- 'charset' => $charset,
- 'encoding' => $encoding,
- 'language' => $language,
- 'location' => $location,
- 'disposition' => $disposition,
- 'description' => $description,
- 'add_headers' => $add_headers,
- 'name_encoding' => $n_encoding,
- 'filename_encoding' => $f_encoding,
- 'headers_charset' => $h_charset,
- );
-
- return true;
- }
-
- /**
- * Get the contents of the given file name as string
- *
- * @param string $file_name Path of file to process
- *
- * @return string Contents of $file_name
- * @access private
- */
- function _file2str($file_name)
- {
- // Check state of file and raise an error properly
- if (!file_exists($file_name)) {
- return $this->_raiseError('File not found: ' . $file_name);
- }
- if (!is_file($file_name)) {
- return $this->_raiseError('Not a regular file: ' . $file_name);
- }
- if (!is_readable($file_name)) {
- return $this->_raiseError('File is not readable: ' . $file_name);
- }
-
- // Temporarily reset magic_quotes_runtime and read file contents
- if ($magic_quote_setting = get_magic_quotes_runtime()) {
- @ini_set('magic_quotes_runtime', 0);
- }
- $cont = file_get_contents($file_name);
- if ($magic_quote_setting) {
- @ini_set('magic_quotes_runtime', $magic_quote_setting);
- }
-
- return $cont;
- }
-
- /**
- * Adds a text subpart to the mimePart object and
- * returns it during the build process.
- *
- * @param mixed &$obj The object to add the part to, or
- * null if a new object is to be created.
- * @param string $text The text to add.
- *
- * @return object The text mimePart object
- * @access private
- */
- function &_addTextPart(&$obj = null, $text = '')
- {
- $params['content_type'] = 'text/plain';
- $params['encoding'] = $this->_build_params['text_encoding'];
- $params['charset'] = $this->_build_params['text_charset'];
- $params['eol'] = $this->_build_params['eol'];
-
- if (is_object($obj)) {
- $ret = $obj->addSubpart($text, $params);
- } else {
- $ret = new Mail_mimePart($text, $params);
- }
-
- return $ret;
- }
-
- /**
- * Adds a html subpart to the mimePart object and
- * returns it during the build process.
- *
- * @param mixed &$obj The object to add the part to, or
- * null if a new object is to be created.
- *
- * @return object The html mimePart object
- * @access private
- */
- function &_addHtmlPart(&$obj = null)
- {
- $params['content_type'] = 'text/html';
- $params['encoding'] = $this->_build_params['html_encoding'];
- $params['charset'] = $this->_build_params['html_charset'];
- $params['eol'] = $this->_build_params['eol'];
-
- if (is_object($obj)) {
- $ret = $obj->addSubpart($this->_htmlbody, $params);
- } else {
- $ret = new Mail_mimePart($this->_htmlbody, $params);
- }
-
- return $ret;
- }
-
- /**
- * Creates a new mimePart object, using multipart/mixed as
- * the initial content-type and returns it during the
- * build process.
- *
- * @return object The multipart/mixed mimePart object
- * @access private
- */
- function &_addMixedPart()
- {
- $params['content_type'] = 'multipart/mixed';
- $params['eol'] = $this->_build_params['eol'];
-
- // Create empty multipart/mixed Mail_mimePart object to return
- $ret = new Mail_mimePart('', $params);
- return $ret;
- }
-
- /**
- * Adds a multipart/alternative part to a mimePart
- * object (or creates one), and returns it during
- * the build process.
- *
- * @param mixed &$obj The object to add the part to, or
- * null if a new object is to be created.
- *
- * @return object The multipart/mixed mimePart object
- * @access private
- */
- function &_addAlternativePart(&$obj = null)
- {
- $params['content_type'] = 'multipart/alternative';
- $params['eol'] = $this->_build_params['eol'];
-
- if (is_object($obj)) {
- $ret = $obj->addSubpart('', $params);
- } else {
- $ret = new Mail_mimePart('', $params);
- }
-
- return $ret;
- }
-
- /**
- * Adds a multipart/related part to a mimePart
- * object (or creates one), and returns it during
- * the build process.
- *
- * @param mixed &$obj The object to add the part to, or
- * null if a new object is to be created
- *
- * @return object The multipart/mixed mimePart object
- * @access private
- */
- function &_addRelatedPart(&$obj = null)
- {
- $params['content_type'] = 'multipart/related';
- $params['eol'] = $this->_build_params['eol'];
-
- if (is_object($obj)) {
- $ret = $obj->addSubpart('', $params);
- } else {
- $ret = new Mail_mimePart('', $params);
- }
-
- return $ret;
- }
-
- /**
- * Adds an html image subpart to a mimePart object
- * and returns it during the build process.
- *
- * @param object &$obj The mimePart to add the image to
- * @param array $value The image information
- *
- * @return object The image mimePart object
- * @access private
- */
- function &_addHtmlImagePart(&$obj, $value)
- {
- $params['content_type'] = $value['c_type'];
- $params['encoding'] = 'base64';
- $params['disposition'] = 'inline';
- $params['filename'] = $value['name'];
- $params['cid'] = $value['cid'];
- $params['body_file'] = $value['body_file'];
- $params['eol'] = $this->_build_params['eol'];
-
- if (!empty($value['name_encoding'])) {
- $params['name_encoding'] = $value['name_encoding'];
- }
- if (!empty($value['filename_encoding'])) {
- $params['filename_encoding'] = $value['filename_encoding'];
- }
-
- $ret = $obj->addSubpart($value['body'], $params);
- return $ret;
- }
-
- /**
- * Adds an attachment subpart to a mimePart object
- * and returns it during the build process.
- *
- * @param object &$obj The mimePart to add the image to
- * @param array $value The attachment information
- *
- * @return object The image mimePart object
- * @access private
- */
- function &_addAttachmentPart(&$obj, $value)
- {
- $params['eol'] = $this->_build_params['eol'];
- $params['filename'] = $value['name'];
- $params['encoding'] = $value['encoding'];
- $params['content_type'] = $value['c_type'];
- $params['body_file'] = $value['body_file'];
- $params['disposition'] = isset($value['disposition']) ?
- $value['disposition'] : 'attachment';
-
- // content charset
- if (!empty($value['charset'])) {
- $params['charset'] = $value['charset'];
- }
- // headers charset (filename, description)
- if (!empty($value['headers_charset'])) {
- $params['headers_charset'] = $value['headers_charset'];
- }
- if (!empty($value['language'])) {
- $params['language'] = $value['language'];
- }
- if (!empty($value['location'])) {
- $params['location'] = $value['location'];
- }
- if (!empty($value['name_encoding'])) {
- $params['name_encoding'] = $value['name_encoding'];
- }
- if (!empty($value['filename_encoding'])) {
- $params['filename_encoding'] = $value['filename_encoding'];
- }
- if (!empty($value['description'])) {
- $params['description'] = $value['description'];
- }
- if (is_array($value['add_headers'])) {
- $params['headers'] = $value['add_headers'];
- }
-
- $ret = $obj->addSubpart($value['body'], $params);
- return $ret;
- }
-
- /**
- * Returns the complete e-mail, ready to send using an alternative
- * mail delivery method. Note that only the mailpart that is made
- * with Mail_Mime is created. This means that,
- * YOU WILL HAVE NO TO: HEADERS UNLESS YOU SET IT YOURSELF
- * using the $headers parameter!
- *
- * @param string $separation The separation between these two parts.
- * @param array $params The Build parameters passed to the
- * get() function. See get() for more info.
- * @param array $headers The extra headers that should be passed
- * to the headers() method.
- * See that function for more info.
- * @param bool $overwrite Overwrite the existing headers with new.
- *
- * @return mixed The complete e-mail or PEAR error object
- * @access public
- */
- function getMessage($separation = null, $params = null, $headers = null,
- $overwrite = false
- ) {
- if ($separation === null) {
- $separation = $this->_build_params['eol'];
- }
-
- $body = $this->get($params);
-
- if ($this->_isError($body)) {
- return $body;
- }
-
- return $this->txtHeaders($headers, $overwrite) . $separation . $body;
- }
-
- /**
- * Returns the complete e-mail body, ready to send using an alternative
- * mail delivery method.
- *
- * @param array $params The Build parameters passed to the
- * get() method. See get() for more info.
- *
- * @return mixed The e-mail body or PEAR error object
- * @access public
- * @since 1.6.0
- */
- function getMessageBody($params = null)
- {
- return $this->get($params, null, true);
- }
-
- /**
- * Writes (appends) the complete e-mail into file.
- *
- * @param string $filename Output file location
- * @param array $params The Build parameters passed to the
- * get() method. See get() for more info.
- * @param array $headers The extra headers that should be passed
- * to the headers() function.
- * See that function for more info.
- * @param bool $overwrite Overwrite the existing headers with new.
- *
- * @return mixed True or PEAR error object
- * @access public
- * @since 1.6.0
- */
- function saveMessage($filename, $params = null, $headers = null, $overwrite = false)
- {
- // Check state of file and raise an error properly
- if (file_exists($filename) && !is_writable($filename)) {
- return $this->_raiseError('File is not writable: ' . $filename);
- }
-
- // Temporarily reset magic_quotes_runtime and read file contents
- if ($magic_quote_setting = get_magic_quotes_runtime()) {
- @ini_set('magic_quotes_runtime', 0);
- }
-
- if (!($fh = fopen($filename, 'ab'))) {
- return $this->_raiseError('Unable to open file: ' . $filename);
- }
-
- // Write message headers into file (skipping Content-* headers)
- $head = $this->txtHeaders($headers, $overwrite, true);
- if (fwrite($fh, $head) === false) {
- return $this->_raiseError('Error writing to file: ' . $filename);
- }
-
- fclose($fh);
-
- if ($magic_quote_setting) {
- @ini_set('magic_quotes_runtime', $magic_quote_setting);
- }
-
- // Write the rest of the message into file
- $res = $this->get($params, $filename);
-
- return $res ? $res : true;
- }
-
- /**
- * Writes (appends) the complete e-mail body into file.
- *
- * @param string $filename Output file location
- * @param array $params The Build parameters passed to the
- * get() method. See get() for more info.
- *
- * @return mixed True or PEAR error object
- * @access public
- * @since 1.6.0
- */
- function saveMessageBody($filename, $params = null)
- {
- // Check state of file and raise an error properly
- if (file_exists($filename) && !is_writable($filename)) {
- return $this->_raiseError('File is not writable: ' . $filename);
- }
-
- // Temporarily reset magic_quotes_runtime and read file contents
- if ($magic_quote_setting = get_magic_quotes_runtime()) {
- @ini_set('magic_quotes_runtime', 0);
- }
-
- if (!($fh = fopen($filename, 'ab'))) {
- return $this->_raiseError('Unable to open file: ' . $filename);
- }
-
- // Write the rest of the message into file
- $res = $this->get($params, $filename, true);
-
- return $res ? $res : true;
- }
-
- /**
- * Builds the multipart message from the list ($this->_parts) and
- * returns the mime content.
- *
- * @param array $params Build parameters that change the way the email
- * is built. Should be associative. See $_build_params.
- * @param resource $filename Output file where to save the message instead of
- * returning it
- * @param boolean $skip_head True if you want to return/save only the message
- * without headers
- *
- * @return mixed The MIME message content string, null or PEAR error object
- * @access public
- */
- function get($params = null, $filename = null, $skip_head = false)
- {
- if (isset($params)) {
- while (list($key, $value) = each($params)) {
- $this->_build_params[$key] = $value;
- }
- }
-
- if (isset($this->_headers['From'])) {
- // Bug #11381: Illegal characters in domain ID
- if (preg_match('#(@[0-9a-zA-Z\-\.]+)#', $this->_headers['From'], $matches)) {
- $domainID = $matches[1];
- } else {
- $domainID = '@localhost';
- }
- foreach ($this->_html_images as $i => $img) {
- $cid = $this->_html_images[$i]['cid'];
- if (!preg_match('#'.preg_quote($domainID).'$#', $cid)) {
- $this->_html_images[$i]['cid'] = $cid . $domainID;
- }
- }
- }
-
- if (count($this->_html_images) && isset($this->_htmlbody)) {
- foreach ($this->_html_images as $key => $value) {
- $regex = array();
- $regex[] = '#(\s)((?i)src|background|href(?-i))\s*=\s*(["\']?)' .
- preg_quote($value['name'], '#') . '\3#';
- $regex[] = '#(?i)url(?-i)\(\s*(["\']?)' .
- preg_quote($value['name'], '#') . '\1\s*\)#';
-
- $rep = array();
- $rep[] = '\1\2=\3cid:' . $value['cid'] .'\3';
- $rep[] = 'url(\1cid:' . $value['cid'] . '\1)';
-
- $this->_htmlbody = preg_replace($regex, $rep, $this->_htmlbody);
- $this->_html_images[$key]['name']
- = $this->_basename($this->_html_images[$key]['name']);
- }
- }
-
- $this->_checkParams();
-
- $null = null;
- $attachments = count($this->_parts) ? true : false;
- $html_images = count($this->_html_images) ? true : false;
- $html = strlen($this->_htmlbody) ? true : false;
- $text = (!$html && strlen($this->_txtbody)) ? true : false;
-
- switch (true) {
- case $text && !$attachments:
- $message =& $this->_addTextPart($null, $this->_txtbody);
- break;
-
- case !$text && !$html && $attachments:
- $message =& $this->_addMixedPart();
- for ($i = 0; $i < count($this->_parts); $i++) {
- $this->_addAttachmentPart($message, $this->_parts[$i]);
- }
- break;
-
- case $text && $attachments:
- $message =& $this->_addMixedPart();
- $this->_addTextPart($message, $this->_txtbody);
- for ($i = 0; $i < count($this->_parts); $i++) {
- $this->_addAttachmentPart($message, $this->_parts[$i]);
- }
- break;
-
- case $html && !$attachments && !$html_images:
- if (isset($this->_txtbody)) {
- $message =& $this->_addAlternativePart($null);
- $this->_addTextPart($message, $this->_txtbody);
- $this->_addHtmlPart($message);
- } else {
- $message =& $this->_addHtmlPart($null);
- }
- break;
-
- case $html && !$attachments && $html_images:
- // * Content-Type: multipart/alternative;
- // * text
- // * Content-Type: multipart/related;
- // * html
- // * image...
- if (isset($this->_txtbody)) {
- $message =& $this->_addAlternativePart($null);
- $this->_addTextPart($message, $this->_txtbody);
-
- $ht =& $this->_addRelatedPart($message);
- $this->_addHtmlPart($ht);
- for ($i = 0; $i < count($this->_html_images); $i++) {
- $this->_addHtmlImagePart($ht, $this->_html_images[$i]);
- }
- } else {
- // * Content-Type: multipart/related;
- // * html
- // * image...
- $message =& $this->_addRelatedPart($null);
- $this->_addHtmlPart($message);
- for ($i = 0; $i < count($this->_html_images); $i++) {
- $this->_addHtmlImagePart($message, $this->_html_images[$i]);
- }
- }
- /*
- // #13444, #9725: the code below was a non-RFC compliant hack
- // * Content-Type: multipart/related;
- // * Content-Type: multipart/alternative;
- // * text
- // * html
- // * image...
- $message =& $this->_addRelatedPart($null);
- if (isset($this->_txtbody)) {
- $alt =& $this->_addAlternativePart($message);
- $this->_addTextPart($alt, $this->_txtbody);
- $this->_addHtmlPart($alt);
- } else {
- $this->_addHtmlPart($message);
- }
- for ($i = 0; $i < count($this->_html_images); $i++) {
- $this->_addHtmlImagePart($message, $this->_html_images[$i]);
- }
- */
- break;
-
- case $html && $attachments && !$html_images:
- $message =& $this->_addMixedPart();
- if (isset($this->_txtbody)) {
- $alt =& $this->_addAlternativePart($message);
- $this->_addTextPart($alt, $this->_txtbody);
- $this->_addHtmlPart($alt);
- } else {
- $this->_addHtmlPart($message);
- }
- for ($i = 0; $i < count($this->_parts); $i++) {
- $this->_addAttachmentPart($message, $this->_parts[$i]);
- }
- break;
-
- case $html && $attachments && $html_images:
- $message =& $this->_addMixedPart();
- if (isset($this->_txtbody)) {
- $alt =& $this->_addAlternativePart($message);
- $this->_addTextPart($alt, $this->_txtbody);
- $rel =& $this->_addRelatedPart($alt);
- } else {
- $rel =& $this->_addRelatedPart($message);
- }
- $this->_addHtmlPart($rel);
- for ($i = 0; $i < count($this->_html_images); $i++) {
- $this->_addHtmlImagePart($rel, $this->_html_images[$i]);
- }
- for ($i = 0; $i < count($this->_parts); $i++) {
- $this->_addAttachmentPart($message, $this->_parts[$i]);
- }
- break;
-
- }
-
- if (!isset($message)) {
- return null;
- }
-
- // Use saved boundary
- if (!empty($this->_build_params['boundary'])) {
- $boundary = $this->_build_params['boundary'];
- } else {
- $boundary = null;
- }
-
- // Write output to file
- if ($filename) {
- // Append mimePart message headers and body into file
- $headers = $message->encodeToFile($filename, $boundary, $skip_head);
- if ($this->_isError($headers)) {
- return $headers;
- }
- $this->_headers = array_merge($this->_headers, $headers);
- return null;
- } else {
- $output = $message->encode($boundary, $skip_head);
- if ($this->_isError($output)) {
- return $output;
- }
- $this->_headers = array_merge($this->_headers, $output['headers']);
- return $output['body'];
- }
- }
-
- /**
- * Returns an array with the headers needed to prepend to the email
- * (MIME-Version and Content-Type). Format of argument is:
- * $array['header-name'] = 'header-value';
- *
- * @param array $xtra_headers Assoc array with any extra headers (optional)
- * (Don't set Content-Type for multipart messages here!)
- * @param bool $overwrite Overwrite already existing headers.
- * @param bool $skip_content Don't return content headers: Content-Type,
- * Content-Disposition and Content-Transfer-Encoding
- *
- * @return array Assoc array with the mime headers
- * @access public
- */
- function headers($xtra_headers = null, $overwrite = false, $skip_content = false)
- {
- // Add mime version header
- $headers['MIME-Version'] = '1.0';
-
- // Content-Type and Content-Transfer-Encoding headers should already
- // be present if get() was called, but we'll re-set them to make sure
- // we got them when called before get() or something in the message
- // has been changed after get() [#14780]
- if (!$skip_content) {
- $headers += $this->_contentHeaders();
- }
-
- if (!empty($xtra_headers)) {
- $headers = array_merge($headers, $xtra_headers);
- }
-
- if ($overwrite) {
- $this->_headers = array_merge($this->_headers, $headers);
- } else {
- $this->_headers = array_merge($headers, $this->_headers);
- }
-
- $headers = $this->_headers;
-
- if ($skip_content) {
- unset($headers['Content-Type']);
- unset($headers['Content-Transfer-Encoding']);
- unset($headers['Content-Disposition']);
- } else if (!empty($this->_build_params['ctype'])) {
- $headers['Content-Type'] = $this->_build_params['ctype'];
- }
-
- $encodedHeaders = $this->_encodeHeaders($headers);
- return $encodedHeaders;
- }
-
- /**
- * Get the text version of the headers
- * (usefull if you want to use the PHP mail() function)
- *
- * @param array $xtra_headers Assoc array with any extra headers (optional)
- * (Don't set Content-Type for multipart messages here!)
- * @param bool $overwrite Overwrite the existing headers with new.
- * @param bool $skip_content Don't return content headers: Content-Type,
- * Content-Disposition and Content-Transfer-Encoding
- *
- * @return string Plain text headers
- * @access public
- */
- function txtHeaders($xtra_headers = null, $overwrite = false, $skip_content = false)
- {
- $headers = $this->headers($xtra_headers, $overwrite, $skip_content);
-
- // Place Received: headers at the beginning of the message
- // Spam detectors often flag messages with it after the Subject: as spam
- if (isset($headers['Received'])) {
- $received = $headers['Received'];
- unset($headers['Received']);
- $headers = array('Received' => $received) + $headers;
- }
-
- $ret = '';
- $eol = $this->_build_params['eol'];
-
- foreach ($headers as $key => $val) {
- if (is_array($val)) {
- foreach ($val as $value) {
- $ret .= "$key: $value" . $eol;
- }
- } else {
- $ret .= "$key: $val" . $eol;
- }
- }
-
- return $ret;
- }
-
- /**
- * Sets message Content-Type header.
- * Use it to build messages with various content-types e.g. miltipart/raport
- * not supported by _contentHeaders() function.
- *
- * @param string $type Type name
- * @param array $params Hash array of header parameters
- *
- * @return void
- * @access public
- * @since 1.7.0
- */
- function setContentType($type, $params = array())
- {
- $header = $type;
-
- $eol = !empty($this->_build_params['eol'])
- ? $this->_build_params['eol'] : "\r\n";
-
- // add parameters
- $token_regexp = '#([^\x21\x23-\x27\x2A\x2B\x2D'
- . '\x2E\x30-\x39\x41-\x5A\x5E-\x7E])#';
- if (is_array($params)) {
- foreach ($params as $name => $value) {
- if ($name == 'boundary') {
- $this->_build_params['boundary'] = $value;
- }
- if (!preg_match($token_regexp, $value)) {
- $header .= ";$eol $name=$value";
- } else {
- $value = addcslashes($value, '\\"');
- $header .= ";$eol $name=\"$value\"";
- }
- }
- }
-
- // add required boundary parameter if not defined
- if (preg_match('/^multipart\//i', $type)) {
- if (empty($this->_build_params['boundary'])) {
- $this->_build_params['boundary'] = '=_' . md5(rand() . microtime());
- }
-
- $header .= ";$eol boundary=\"".$this->_build_params['boundary']."\"";
- }
-
- $this->_build_params['ctype'] = $header;
- }
-
- /**
- * Sets the Subject header
- *
- * @param string $subject String to set the subject to.
- *
- * @return void
- * @access public
- */
- function setSubject($subject)
- {
- $this->_headers['Subject'] = $subject;
- }
-
- /**
- * Set an email to the From (the sender) header
- *
- * @param string $email The email address to use
- *
- * @return void
- * @access public
- */
- function setFrom($email)
- {
- $this->_headers['From'] = $email;
- }
-
- /**
- * Add an email to the To header
- * (multiple calls to this method are allowed)
- *
- * @param string $email The email direction to add
- *
- * @return void
- * @access public
- */
- function addTo($email)
- {
- if (isset($this->_headers['To'])) {
- $this->_headers['To'] .= ", $email";
- } else {
- $this->_headers['To'] = $email;
- }
- }
-
- /**
- * Add an email to the Cc (carbon copy) header
- * (multiple calls to this method are allowed)
- *
- * @param string $email The email direction to add
- *
- * @return void
- * @access public
- */
- function addCc($email)
- {
- if (isset($this->_headers['Cc'])) {
- $this->_headers['Cc'] .= ", $email";
- } else {
- $this->_headers['Cc'] = $email;
- }
- }
-
- /**
- * Add an email to the Bcc (blank carbon copy) header
- * (multiple calls to this method are allowed)
- *
- * @param string $email The email direction to add
- *
- * @return void
- * @access public
- */
- function addBcc($email)
- {
- if (isset($this->_headers['Bcc'])) {
- $this->_headers['Bcc'] .= ", $email";
- } else {
- $this->_headers['Bcc'] = $email;
- }
- }
-
- /**
- * Since the PHP send function requires you to specify
- * recipients (To: header) separately from the other
- * headers, the To: header is not properly encoded.
- * To fix this, you can use this public method to
- * encode your recipients before sending to the send
- * function
- *
- * @param string $recipients A comma-delimited list of recipients
- *
- * @return string Encoded data
- * @access public
- */
- function encodeRecipients($recipients)
- {
- $input = array("To" => $recipients);
- $retval = $this->_encodeHeaders($input);
- return $retval["To"] ;
- }
-
- /**
- * Encodes headers as per RFC2047
- *
- * @param array $input The header data to encode
- * @param array $params Extra build parameters
- *
- * @return array Encoded data
- * @access private
- */
- function _encodeHeaders($input, $params = array())
- {
- $build_params = $this->_build_params;
- while (list($key, $value) = each($params)) {
- $build_params[$key] = $value;
- }
-
- foreach ($input as $hdr_name => $hdr_value) {
- if (is_array($hdr_value)) {
- foreach ($hdr_value as $idx => $value) {
- $input[$hdr_name][$idx] = $this->encodeHeader(
- $hdr_name, $value,
- $build_params['head_charset'], $build_params['head_encoding']
- );
- }
- } else {
- $input[$hdr_name] = $this->encodeHeader(
- $hdr_name, $hdr_value,
- $build_params['head_charset'], $build_params['head_encoding']
- );
- }
- }
-
- return $input;
- }
-
- /**
- * Encodes a header as per RFC2047
- *
- * @param string $name The header name
- * @param string $value The header data to encode
- * @param string $charset Character set name
- * @param string $encoding Encoding name (base64 or quoted-printable)
- *
- * @return string Encoded header data (without a name)
- * @access public
- * @since 1.5.3
- */
- function encodeHeader($name, $value, $charset, $encoding)
- {
- $mime_part = new Mail_mimePart;
- return $mime_part->encodeHeader(
- $name, $value, $charset, $encoding, $this->_build_params['eol']
- );
- }
-
- /**
- * Get file's basename (locale independent)
- *
- * @param string $filename Filename
- *
- * @return string Basename
- * @access private
- */
- function _basename($filename)
- {
- // basename() is not unicode safe and locale dependent
- if (stristr(PHP_OS, 'win') || stristr(PHP_OS, 'netware')) {
- return preg_replace('/^.*[\\\\\\/]/', '', $filename);
- } else {
- return preg_replace('/^.*[\/]/', '', $filename);
- }
- }
-
- /**
- * Get Content-Type and Content-Transfer-Encoding headers of the message
- *
- * @return array Headers array
- * @access private
- */
- function _contentHeaders()
- {
- $attachments = count($this->_parts) ? true : false;
- $html_images = count($this->_html_images) ? true : false;
- $html = strlen($this->_htmlbody) ? true : false;
- $text = (!$html && strlen($this->_txtbody)) ? true : false;
- $headers = array();
-
- // See get()
- switch (true) {
- case $text && !$attachments:
- $headers['Content-Type'] = 'text/plain';
- break;
-
- case !$text && !$html && $attachments:
- case $text && $attachments:
- case $html && $attachments && !$html_images:
- case $html && $attachments && $html_images:
- $headers['Content-Type'] = 'multipart/mixed';
- break;
-
- case $html && !$attachments && !$html_images && isset($this->_txtbody):
- case $html && !$attachments && $html_images && isset($this->_txtbody):
- $headers['Content-Type'] = 'multipart/alternative';
- break;
-
- case $html && !$attachments && !$html_images && !isset($this->_txtbody):
- $headers['Content-Type'] = 'text/html';
- break;
-
- case $html && !$attachments && $html_images && !isset($this->_txtbody):
- $headers['Content-Type'] = 'multipart/related';
- break;
-
- default:
- return $headers;
- }
-
- $this->_checkParams();
-
- $eol = !empty($this->_build_params['eol'])
- ? $this->_build_params['eol'] : "\r\n";
-
- if ($headers['Content-Type'] == 'text/plain') {
- // single-part message: add charset and encoding
- $charset = 'charset=' . $this->_build_params['text_charset'];
- // place charset parameter in the same line, if possible
- // 26 = strlen("Content-Type: text/plain; ")
- $headers['Content-Type']
- .= (strlen($charset) + 26 <= 76) ? "; $charset" : ";$eol $charset";
- $headers['Content-Transfer-Encoding']
- = $this->_build_params['text_encoding'];
- } else if ($headers['Content-Type'] == 'text/html') {
- // single-part message: add charset and encoding
- $charset = 'charset=' . $this->_build_params['html_charset'];
- // place charset parameter in the same line, if possible
- $headers['Content-Type']
- .= (strlen($charset) + 25 <= 76) ? "; $charset" : ";$eol $charset";
- $headers['Content-Transfer-Encoding']
- = $this->_build_params['html_encoding'];
- } else {
- // multipart message: and boundary
- if (!empty($this->_build_params['boundary'])) {
- $boundary = $this->_build_params['boundary'];
- } else if (!empty($this->_headers['Content-Type'])
- && preg_match('/boundary="([^"]+)"/', $this->_headers['Content-Type'], $m)
- ) {
- $boundary = $m[1];
- } else {
- $boundary = '=_' . md5(rand() . microtime());
- }
-
- $this->_build_params['boundary'] = $boundary;
- $headers['Content-Type'] .= ";$eol boundary=\"$boundary\"";
- }
-
- return $headers;
- }
-
- /**
- * Validate and set build parameters
- *
- * @return void
- * @access private
- */
- function _checkParams()
- {
- $encodings = array('7bit', '8bit', 'base64', 'quoted-printable');
-
- $this->_build_params['text_encoding']
- = strtolower($this->_build_params['text_encoding']);
- $this->_build_params['html_encoding']
- = strtolower($this->_build_params['html_encoding']);
-
- if (!in_array($this->_build_params['text_encoding'], $encodings)) {
- $this->_build_params['text_encoding'] = '7bit';
- }
- if (!in_array($this->_build_params['html_encoding'], $encodings)) {
- $this->_build_params['html_encoding'] = '7bit';
- }
-
- // text body
- if ($this->_build_params['text_encoding'] == '7bit'
- && !preg_match('/ascii/i', $this->_build_params['text_charset'])
- && preg_match('/[^\x00-\x7F]/', $this->_txtbody)
- ) {
- $this->_build_params['text_encoding'] = 'quoted-printable';
- }
- // html body
- if ($this->_build_params['html_encoding'] == '7bit'
- && !preg_match('/ascii/i', $this->_build_params['html_charset'])
- && preg_match('/[^\x00-\x7F]/', $this->_htmlbody)
- ) {
- $this->_build_params['html_encoding'] = 'quoted-printable';
- }
- }
-
- /**
- * PEAR::isError implementation
- *
- * @param mixed $data Object
- *
- * @return bool True if object is an instance of PEAR_Error
- * @access private
- */
- function _isError($data)
- {
- // PEAR::isError() is not PHP 5.4 compatible (see Bug #19473)
- if (is_object($data) && is_a($data, 'PEAR_Error')) {
- return true;
- }
-
- return false;
- }
-
- /**
- * PEAR::raiseError implementation
- *
- * @param $message A text error message
- *
- * @return PEAR_Error Instance of PEAR_Error
- * @access private
- */
- function _raiseError($message)
- {
- // PEAR::raiseError() is not PHP 5.4 compatible
- return new PEAR_Error($message);
- }
-
-} // End of class
diff --git a/program/lib/Mail/mimeDecode.php b/program/lib/Mail/mimeDecode.php
deleted file mode 100644
index 9f4589441..000000000
--- a/program/lib/Mail/mimeDecode.php
+++ /dev/null
@@ -1,1003 +0,0 @@
-<?php
-/**
- * The Mail_mimeDecode class is used to decode mail/mime messages
- *
- * This class will parse a raw mime email and return
- * the structure. Returned structure is similar to
- * that returned by imap_fetchstructure().
- *
- * +----------------------------- IMPORTANT ------------------------------+
- * | Usage of this class compared to native php extensions such as |
- * | mailparse or imap, is slow and may be feature deficient. If available|
- * | you are STRONGLY recommended to use the php extensions. |
- * +----------------------------------------------------------------------+
- *
- * Compatible with PHP versions 4 and 5
- *
- * LICENSE: This LICENSE is in the BSD license style.
- * Copyright (c) 2002-2003, Richard Heyes <richard@phpguru.org>
- * Copyright (c) 2003-2006, PEAR <pear-group@php.net>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or
- * without modification, are permitted provided that the following
- * conditions are met:
- *
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * - Neither the name of the authors, nor the names of its contributors
- * may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- *
- * @category Mail
- * @package Mail_Mime
- * @author Richard Heyes <richard@phpguru.org>
- * @author George Schlossnagle <george@omniti.com>
- * @author Cipriano Groenendal <cipri@php.net>
- * @author Sean Coates <sean@php.net>
- * @copyright 2003-2006 PEAR <pear-group@php.net>
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- * @version CVS: $Id: mimeDecode.php 305875 2010-12-01 07:17:10Z alan_k $
- * @link http://pear.php.net/package/Mail_mime
- */
-
-
-/**
- * require PEAR
- *
- * This package depends on PEAR to raise errors.
- */
-require_once 'PEAR.php';
-
-
-/**
- * The Mail_mimeDecode class is used to decode mail/mime messages
- *
- * This class will parse a raw mime email and return the structure.
- * Returned structure is similar to that returned by imap_fetchstructure().
- *
- * +----------------------------- IMPORTANT ------------------------------+
- * | Usage of this class compared to native php extensions such as |
- * | mailparse or imap, is slow and may be feature deficient. If available|
- * | you are STRONGLY recommended to use the php extensions. |
- * +----------------------------------------------------------------------+
- *
- * @category Mail
- * @package Mail_Mime
- * @author Richard Heyes <richard@phpguru.org>
- * @author George Schlossnagle <george@omniti.com>
- * @author Cipriano Groenendal <cipri@php.net>
- * @author Sean Coates <sean@php.net>
- * @copyright 2003-2006 PEAR <pear-group@php.net>
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- * @version Release: 1.5.5
- * @link http://pear.php.net/package/Mail_mime
- */
-class Mail_mimeDecode extends PEAR
-{
- /**
- * The raw email to decode
- *
- * @var string
- * @access private
- */
- var $_input;
-
- /**
- * The header part of the input
- *
- * @var string
- * @access private
- */
- var $_header;
-
- /**
- * The body part of the input
- *
- * @var string
- * @access private
- */
- var $_body;
-
- /**
- * If an error occurs, this is used to store the message
- *
- * @var string
- * @access private
- */
- var $_error;
-
- /**
- * Flag to determine whether to include bodies in the
- * returned object.
- *
- * @var boolean
- * @access private
- */
- var $_include_bodies;
-
- /**
- * Flag to determine whether to decode bodies
- *
- * @var boolean
- * @access private
- */
- var $_decode_bodies;
-
- /**
- * Flag to determine whether to decode headers
- *
- * @var boolean
- * @access private
- */
- var $_decode_headers;
-
- /**
- * Flag to determine whether to include attached messages
- * as body in the returned object. Depends on $_include_bodies
- *
- * @var boolean
- * @access private
- */
- var $_rfc822_bodies;
-
- /**
- * Constructor.
- *
- * Sets up the object, initialise the variables, and splits and
- * stores the header and body of the input.
- *
- * @param string The input to decode
- * @access public
- */
- function Mail_mimeDecode($input)
- {
- list($header, $body) = $this->_splitBodyHeader($input);
-
- $this->_input = $input;
- $this->_header = $header;
- $this->_body = $body;
- $this->_decode_bodies = false;
- $this->_include_bodies = true;
- $this->_rfc822_bodies = false;
- }
-
- /**
- * Begins the decoding process. If called statically
- * it will create an object and call the decode() method
- * of it.
- *
- * @param array An array of various parameters that determine
- * various things:
- * include_bodies - Whether to include the body in the returned
- * object.
- * decode_bodies - Whether to decode the bodies
- * of the parts. (Transfer encoding)
- * decode_headers - Whether to decode headers
- * input - If called statically, this will be treated
- * as the input
- * @return object Decoded results
- * @access public
- */
- function decode($params = null)
- {
- // determine if this method has been called statically
- $isStatic = empty($this) || !is_a($this, __CLASS__);
-
- // Have we been called statically?
- // If so, create an object and pass details to that.
- if ($isStatic AND isset($params['input'])) {
-
- $obj = new Mail_mimeDecode($params['input']);
- $structure = $obj->decode($params);
-
- // Called statically but no input
- } elseif ($isStatic) {
- return PEAR::raiseError('Called statically and no input given');
-
- // Called via an object
- } else {
- $this->_include_bodies = isset($params['include_bodies']) ?
- $params['include_bodies'] : false;
- $this->_decode_bodies = isset($params['decode_bodies']) ?
- $params['decode_bodies'] : false;
- $this->_decode_headers = isset($params['decode_headers']) ?
- $params['decode_headers'] : false;
- $this->_rfc822_bodies = isset($params['rfc_822bodies']) ?
- $params['rfc_822bodies'] : false;
-
- $structure = $this->_decode($this->_header, $this->_body);
- if ($structure === false) {
- $structure = $this->raiseError($this->_error);
- }
- }
-
- return $structure;
- }
-
- /**
- * Performs the decoding. Decodes the body string passed to it
- * If it finds certain content-types it will call itself in a
- * recursive fashion
- *
- * @param string Header section
- * @param string Body section
- * @return object Results of decoding process
- * @access private
- */
- function _decode($headers, $body, $default_ctype = 'text/plain')
- {
- $return = new stdClass;
- $return->headers = array();
- $headers = $this->_parseHeaders($headers);
-
- foreach ($headers as $value) {
- $value['value'] = $this->_decode_headers ? $this->_decodeHeader($value['value']) : $value['value'];
- if (isset($return->headers[strtolower($value['name'])]) AND !is_array($return->headers[strtolower($value['name'])])) {
- $return->headers[strtolower($value['name'])] = array($return->headers[strtolower($value['name'])]);
- $return->headers[strtolower($value['name'])][] = $value['value'];
-
- } elseif (isset($return->headers[strtolower($value['name'])])) {
- $return->headers[strtolower($value['name'])][] = $value['value'];
-
- } else {
- $return->headers[strtolower($value['name'])] = $value['value'];
- }
- }
-
-
- foreach ($headers as $key => $value) {
- $headers[$key]['name'] = strtolower($headers[$key]['name']);
- switch ($headers[$key]['name']) {
-
- case 'content-type':
- $content_type = $this->_parseHeaderValue($headers[$key]['value']);
-
- if (preg_match('/([0-9a-z+.-]+)\/([0-9a-z+.-]+)/i', $content_type['value'], $regs)) {
- $return->ctype_primary = $regs[1];
- $return->ctype_secondary = $regs[2];
- }
-
- if (isset($content_type['other'])) {
- foreach($content_type['other'] as $p_name => $p_value) {
- $return->ctype_parameters[$p_name] = $p_value;
- }
- }
- break;
-
- case 'content-disposition':
- $content_disposition = $this->_parseHeaderValue($headers[$key]['value']);
- $return->disposition = $content_disposition['value'];
- if (isset($content_disposition['other'])) {
- foreach($content_disposition['other'] as $p_name => $p_value) {
- $return->d_parameters[$p_name] = $p_value;
- }
- }
- break;
-
- case 'content-transfer-encoding':
- $content_transfer_encoding = $this->_parseHeaderValue($headers[$key]['value']);
- break;
- }
- }
-
- if (isset($content_type)) {
- switch (strtolower($content_type['value'])) {
- case 'text/plain':
- $encoding = isset($content_transfer_encoding) ? $content_transfer_encoding['value'] : '7bit';
- $this->_include_bodies ? $return->body = ($this->_decode_bodies ? $this->_decodeBody($body, $encoding) : $body) : null;
- break;
-
- case 'text/html':
- $encoding = isset($content_transfer_encoding) ? $content_transfer_encoding['value'] : '7bit';
- $this->_include_bodies ? $return->body = ($this->_decode_bodies ? $this->_decodeBody($body, $encoding) : $body) : null;
- break;
-
- case 'multipart/parallel':
- case 'multipart/appledouble': // Appledouble mail
- case 'multipart/report': // RFC1892
- case 'multipart/signed': // PGP
- case 'multipart/digest':
- case 'multipart/alternative':
- case 'multipart/related':
- case 'multipart/mixed':
- case 'application/vnd.wap.multipart.related':
- if(!isset($content_type['other']['boundary'])){
- $this->_error = 'No boundary found for ' . $content_type['value'] . ' part';
- return false;
- }
-
- $default_ctype = (strtolower($content_type['value']) === 'multipart/digest') ? 'message/rfc822' : 'text/plain';
-
- $parts = $this->_boundarySplit($body, $content_type['other']['boundary']);
- for ($i = 0; $i < count($parts); $i++) {
- list($part_header, $part_body) = $this->_splitBodyHeader($parts[$i]);
- $part = $this->_decode($part_header, $part_body, $default_ctype);
- if($part === false)
- $part = $this->raiseError($this->_error);
- $return->parts[] = $part;
- }
- break;
-
- case 'message/rfc822':
- if ($this->_rfc822_bodies) {
- $encoding = isset($content_transfer_encoding) ? $content_transfer_encoding['value'] : '7bit';
- $return->body = ($this->_decode_bodies ? $this->_decodeBody($body, $encoding) : $body);
- }
- $obj = new Mail_mimeDecode($body);
- $return->parts[] = $obj->decode(array('include_bodies' => $this->_include_bodies,
- 'decode_bodies' => $this->_decode_bodies,
- 'decode_headers' => $this->_decode_headers));
- unset($obj);
- break;
-
- default:
- if(!isset($content_transfer_encoding['value']))
- $content_transfer_encoding['value'] = '7bit';
- $this->_include_bodies ? $return->body = ($this->_decode_bodies ? $this->_decodeBody($body, $content_transfer_encoding['value']) : $body) : null;
- break;
- }
-
- } else {
- $ctype = explode('/', $default_ctype);
- $return->ctype_primary = $ctype[0];
- $return->ctype_secondary = $ctype[1];
- $this->_include_bodies ? $return->body = ($this->_decode_bodies ? $this->_decodeBody($body) : $body) : null;
- }
-
- return $return;
- }
-
- /**
- * Given the output of the above function, this will return an
- * array of references to the parts, indexed by mime number.
- *
- * @param object $structure The structure to go through
- * @param string $mime_number Internal use only.
- * @return array Mime numbers
- */
- function &getMimeNumbers(&$structure, $no_refs = false, $mime_number = '', $prepend = '')
- {
- $return = array();
- if (!empty($structure->parts)) {
- if ($mime_number != '') {
- $structure->mime_id = $prepend . $mime_number;
- $return[$prepend . $mime_number] = &$structure;
- }
- for ($i = 0; $i < count($structure->parts); $i++) {
-
-
- if (!empty($structure->headers['content-type']) AND substr(strtolower($structure->headers['content-type']), 0, 8) == 'message/') {
- $prepend = $prepend . $mime_number . '.';
- $_mime_number = '';
- } else {
- $_mime_number = ($mime_number == '' ? $i + 1 : sprintf('%s.%s', $mime_number, $i + 1));
- }
-
- $arr = &Mail_mimeDecode::getMimeNumbers($structure->parts[$i], $no_refs, $_mime_number, $prepend);
- foreach ($arr as $key => $val) {
- $no_refs ? $return[$key] = '' : $return[$key] = &$arr[$key];
- }
- }
- } else {
- if ($mime_number == '') {
- $mime_number = '1';
- }
- $structure->mime_id = $prepend . $mime_number;
- $no_refs ? $return[$prepend . $mime_number] = '' : $return[$prepend . $mime_number] = &$structure;
- }
-
- return $return;
- }
-
- /**
- * Given a string containing a header and body
- * section, this function will split them (at the first
- * blank line) and return them.
- *
- * @param string Input to split apart
- * @return array Contains header and body section
- * @access private
- */
- function _splitBodyHeader($input)
- {
- if (preg_match("/^(.*?)\r?\n\r?\n(.*)/s", $input, $match)) {
- return array($match[1], $match[2]);
- }
- // bug #17325 - empty bodies are allowed. - we just check that at least one line
- // of headers exist..
- if (count(explode("\n",$input))) {
- return array($input, '');
- }
- $this->_error = 'Could not split header and body';
- return false;
- }
-
- /**
- * Parse headers given in $input and return
- * as assoc array.
- *
- * @param string Headers to parse
- * @return array Contains parsed headers
- * @access private
- */
- function _parseHeaders($input)
- {
-
- if ($input !== '') {
- // Unfold the input
- $input = preg_replace("/\r?\n/", "\r\n", $input);
- //#7065 - wrapping.. with encoded stuff.. - probably not needed,
- // wrapping space should only get removed if the trailing item on previous line is a
- // encoded character
- $input = preg_replace("/=\r\n(\t| )+/", '=', $input);
- $input = preg_replace("/\r\n(\t| )+/", ' ', $input);
-
- $headers = explode("\r\n", trim($input));
-
- foreach ($headers as $value) {
- $hdr_name = substr($value, 0, $pos = strpos($value, ':'));
- $hdr_value = substr($value, $pos+1);
- if($hdr_value[0] == ' ')
- $hdr_value = substr($hdr_value, 1);
-
- $return[] = array(
- 'name' => $hdr_name,
- 'value' => $hdr_value
- );
- }
- } else {
- $return = array();
- }
-
- return $return;
- }
-
- /**
- * Function to parse a header value,
- * extract first part, and any secondary
- * parts (after ;) This function is not as
- * robust as it could be. Eg. header comments
- * in the wrong place will probably break it.
- *
- * @param string Header value to parse
- * @return array Contains parsed result
- * @access private
- */
- function _parseHeaderValue($input)
- {
-
- if (($pos = strpos($input, ';')) === false) {
- $input = $this->_decode_headers ? $this->_decodeHeader($input) : $input;
- $return['value'] = trim($input);
- return $return;
- }
-
-
-
- $value = substr($input, 0, $pos);
- $value = $this->_decode_headers ? $this->_decodeHeader($value) : $value;
- $return['value'] = trim($value);
- $input = trim(substr($input, $pos+1));
-
- if (!strlen($input) > 0) {
- return $return;
- }
- // at this point input contains xxxx=".....";zzzz="...."
- // since we are dealing with quoted strings, we need to handle this properly..
- $i = 0;
- $l = strlen($input);
- $key = '';
- $val = false; // our string - including quotes..
- $q = false; // in quote..
- $lq = ''; // last quote..
-
- while ($i < $l) {
-
- $c = $input[$i];
- //var_dump(array('i'=>$i,'c'=>$c,'q'=>$q, 'lq'=>$lq, 'key'=>$key, 'val' =>$val));
-
- $escaped = false;
- if ($c == '\\') {
- $i++;
- if ($i == $l-1) { // end of string.
- break;
- }
- $escaped = true;
- $c = $input[$i];
- }
-
-
- // state - in key..
- if ($val === false) {
- if (!$escaped && $c == '=') {
- $val = '';
- $key = trim($key);
- $i++;
- continue;
- }
- if (!$escaped && $c == ';') {
- if ($key) { // a key without a value..
- $key= trim($key);
- $return['other'][$key] = '';
- $return['other'][strtolower($key)] = '';
- }
- $key = '';
- }
- $key .= $c;
- $i++;
- continue;
- }
-
- // state - in value.. (as $val is set..)
-
- if ($q === false) {
- // not in quote yet.
- if ((!strlen($val) || $lq !== false) && $c == ' ' || $c == "\t") {
- $i++;
- continue; // skip leading spaces after '=' or after '"'
- }
- if (!$escaped && ($c == '"' || $c == "'")) {
- // start quoted area..
- $q = $c;
- // in theory should not happen raw text in value part..
- // but we will handle it as a merged part of the string..
- $val = !strlen(trim($val)) ? '' : trim($val);
- $i++;
- continue;
- }
- // got end....
- if (!$escaped && $c == ';') {
-
- $val = trim($val);
- $added = false;
- if (preg_match('/\*[0-9]+$/', $key)) {
- // this is the extended aaa*0=...;aaa*1=.... code
- // it assumes the pieces arrive in order, and are valid...
- $key = preg_replace('/\*[0-9]+$/', '', $key);
- if (isset($return['other'][$key])) {
- $return['other'][$key] .= $val;
- if (strtolower($key) != $key) {
- $return['other'][strtolower($key)] .= $val;
- }
- $added = true;
- }
- // continue and use standard setters..
- }
- if (!$added) {
- $return['other'][$key] = $val;
- $return['other'][strtolower($key)] = $val;
- }
- $val = false;
- $key = '';
- $lq = false;
- $i++;
- continue;
- }
-
- $val .= $c;
- $i++;
- continue;
- }
-
- // state - in quote..
- if (!$escaped && $c == $q) { // potential exit state..
-
- // end of quoted string..
- $lq = $q;
- $q = false;
- $i++;
- continue;
- }
-
- // normal char inside of quoted string..
- $val.= $c;
- $i++;
- }
-
- // do we have anything left..
- if (strlen(trim($key)) || $val !== false) {
-
- $val = trim($val);
- $added = false;
- if ($val !== false && preg_match('/\*[0-9]+$/', $key)) {
- // no dupes due to our crazy regexp.
- $key = preg_replace('/\*[0-9]+$/', '', $key);
- if (isset($return['other'][$key])) {
- $return['other'][$key] .= $val;
- if (strtolower($key) != $key) {
- $return['other'][strtolower($key)] .= $val;
- }
- $added = true;
- }
- // continue and use standard setters..
- }
- if (!$added) {
- $return['other'][$key] = $val;
- $return['other'][strtolower($key)] = $val;
- }
- }
- // decode values.
- foreach($return['other'] as $key =>$val) {
- $return['other'][$key] = $this->_decode_headers ? $this->_decodeHeader($val) : $val;
- }
- //print_r($return);
- return $return;
- }
-
- /**
- * This function splits the input based
- * on the given boundary
- *
- * @param string Input to parse
- * @return array Contains array of resulting mime parts
- * @access private
- */
- function _boundarySplit($input, $boundary)
- {
- $parts = array();
-
- $bs_possible = substr($boundary, 2, -2);
- $bs_check = '\"' . $bs_possible . '\"';
-
- if ($boundary == $bs_check) {
- $boundary = $bs_possible;
- }
- $tmp = preg_split("/--".preg_quote($boundary, '/')."((?=\s)|--)/", $input);
-
- $len = count($tmp) -1;
- for ($i = 1; $i < $len; $i++) {
- if (strlen(trim($tmp[$i]))) {
- $parts[] = $tmp[$i];
- }
- }
-
- // add the last part on if it does not end with the 'closing indicator'
- if (!empty($tmp[$len]) && strlen(trim($tmp[$len])) && $tmp[$len][0] != '-') {
- $parts[] = $tmp[$len];
- }
- return $parts;
- }
-
- /**
- * Given a header, this function will decode it
- * according to RFC2047. Probably not *exactly*
- * conformant, but it does pass all the given
- * examples (in RFC2047).
- *
- * @param string Input header value to decode
- * @return string Decoded header value
- * @access private
- */
- function _decodeHeader($input)
- {
- // Remove white space between encoded-words
- $input = preg_replace('/(=\?[^?]+\?(q|b)\?[^?]*\?=)(\s)+=\?/i', '\1=?', $input);
-
- // For each encoded-word...
- while (preg_match('/(=\?([^?]+)\?(q|b)\?([^?]*)\?=)/i', $input, $matches)) {
-
- $encoded = $matches[1];
- $charset = $matches[2];
- $encoding = $matches[3];
- $text = $matches[4];
-
- switch (strtolower($encoding)) {
- case 'b':
- $text = base64_decode($text);
- break;
-
- case 'q':
- $text = str_replace('_', ' ', $text);
- preg_match_all('/=([a-f0-9]{2})/i', $text, $matches);
- foreach($matches[1] as $value)
- $text = str_replace('='.$value, chr(hexdec($value)), $text);
- break;
- }
-
- $input = str_replace($encoded, $text, $input);
- }
-
- return $input;
- }
-
- /**
- * Given a body string and an encoding type,
- * this function will decode and return it.
- *
- * @param string Input body to decode
- * @param string Encoding type to use.
- * @return string Decoded body
- * @access private
- */
- function _decodeBody($input, $encoding = '7bit')
- {
- switch (strtolower($encoding)) {
- case '7bit':
- return $input;
- break;
-
- case 'quoted-printable':
- return $this->_quotedPrintableDecode($input);
- break;
-
- case 'base64':
- return base64_decode($input);
- break;
-
- default:
- return $input;
- }
- }
-
- /**
- * Given a quoted-printable string, this
- * function will decode and return it.
- *
- * @param string Input body to decode
- * @return string Decoded body
- * @access private
- */
- function _quotedPrintableDecode($input)
- {
- // Remove soft line breaks
- $input = preg_replace("/=\r?\n/", '', $input);
-
- // Replace encoded characters
- $input = preg_replace('/=([a-f0-9]{2})/ie', "chr(hexdec('\\1'))", $input);
-
- return $input;
- }
-
- /**
- * Checks the input for uuencoded files and returns
- * an array of them. Can be called statically, eg:
- *
- * $files =& Mail_mimeDecode::uudecode($some_text);
- *
- * It will check for the begin 666 ... end syntax
- * however and won't just blindly decode whatever you
- * pass it.
- *
- * @param string Input body to look for attahcments in
- * @return array Decoded bodies, filenames and permissions
- * @access public
- * @author Unknown
- */
- function &uudecode($input)
- {
- // Find all uuencoded sections
- preg_match_all("/begin ([0-7]{3}) (.+)\r?\n(.+)\r?\nend/Us", $input, $matches);
-
- for ($j = 0; $j < count($matches[3]); $j++) {
-
- $str = $matches[3][$j];
- $filename = $matches[2][$j];
- $fileperm = $matches[1][$j];
-
- $file = '';
- $str = preg_split("/\r?\n/", trim($str));
- $strlen = count($str);
-
- for ($i = 0; $i < $strlen; $i++) {
- $pos = 1;
- $d = 0;
- $len=(int)(((ord(substr($str[$i],0,1)) -32) - ' ') & 077);
-
- while (($d + 3 <= $len) AND ($pos + 4 <= strlen($str[$i]))) {
- $c0 = (ord(substr($str[$i],$pos,1)) ^ 0x20);
- $c1 = (ord(substr($str[$i],$pos+1,1)) ^ 0x20);
- $c2 = (ord(substr($str[$i],$pos+2,1)) ^ 0x20);
- $c3 = (ord(substr($str[$i],$pos+3,1)) ^ 0x20);
- $file .= chr(((($c0 - ' ') & 077) << 2) | ((($c1 - ' ') & 077) >> 4));
-
- $file .= chr(((($c1 - ' ') & 077) << 4) | ((($c2 - ' ') & 077) >> 2));
-
- $file .= chr(((($c2 - ' ') & 077) << 6) | (($c3 - ' ') & 077));
-
- $pos += 4;
- $d += 3;
- }
-
- if (($d + 2 <= $len) && ($pos + 3 <= strlen($str[$i]))) {
- $c0 = (ord(substr($str[$i],$pos,1)) ^ 0x20);
- $c1 = (ord(substr($str[$i],$pos+1,1)) ^ 0x20);
- $c2 = (ord(substr($str[$i],$pos+2,1)) ^ 0x20);
- $file .= chr(((($c0 - ' ') & 077) << 2) | ((($c1 - ' ') & 077) >> 4));
-
- $file .= chr(((($c1 - ' ') & 077) << 4) | ((($c2 - ' ') & 077) >> 2));
-
- $pos += 3;
- $d += 2;
- }
-
- if (($d + 1 <= $len) && ($pos + 2 <= strlen($str[$i]))) {
- $c0 = (ord(substr($str[$i],$pos,1)) ^ 0x20);
- $c1 = (ord(substr($str[$i],$pos+1,1)) ^ 0x20);
- $file .= chr(((($c0 - ' ') & 077) << 2) | ((($c1 - ' ') & 077) >> 4));
-
- }
- }
- $files[] = array('filename' => $filename, 'fileperm' => $fileperm, 'filedata' => $file);
- }
-
- return $files;
- }
-
- /**
- * getSendArray() returns the arguments required for Mail::send()
- * used to build the arguments for a mail::send() call
- *
- * Usage:
- * $mailtext = Full email (for example generated by a template)
- * $decoder = new Mail_mimeDecode($mailtext);
- * $parts = $decoder->getSendArray();
- * if (!PEAR::isError($parts) {
- * list($recipents,$headers,$body) = $parts;
- * $mail = Mail::factory('smtp');
- * $mail->send($recipents,$headers,$body);
- * } else {
- * echo $parts->message;
- * }
- * @return mixed array of recipeint, headers,body or Pear_Error
- * @access public
- * @author Alan Knowles <alan@akbkhome.com>
- */
- function getSendArray()
- {
- // prevent warning if this is not set
- $this->_decode_headers = FALSE;
- $headerlist =$this->_parseHeaders($this->_header);
- $to = "";
- if (!$headerlist) {
- return $this->raiseError("Message did not contain headers");
- }
- foreach($headerlist as $item) {
- $header[$item['name']] = $item['value'];
- switch (strtolower($item['name'])) {
- case "to":
- case "cc":
- case "bcc":
- $to .= ",".$item['value'];
- default:
- break;
- }
- }
- if ($to == "") {
- return $this->raiseError("Message did not contain any recipents");
- }
- $to = substr($to,1);
- return array($to,$header,$this->_body);
- }
-
- /**
- * Returns a xml copy of the output of
- * Mail_mimeDecode::decode. Pass the output in as the
- * argument. This function can be called statically. Eg:
- *
- * $output = $obj->decode();
- * $xml = Mail_mimeDecode::getXML($output);
- *
- * The DTD used for this should have been in the package. Or
- * alternatively you can get it from cvs, or here:
- * http://www.phpguru.org/xmail/xmail.dtd.
- *
- * @param object Input to convert to xml. This should be the
- * output of the Mail_mimeDecode::decode function
- * @return string XML version of input
- * @access public
- */
- function getXML($input)
- {
- $crlf = "\r\n";
- $output = '<?xml version=\'1.0\'?>' . $crlf .
- '<!DOCTYPE email SYSTEM "http://www.phpguru.org/xmail/xmail.dtd">' . $crlf .
- '<email>' . $crlf .
- Mail_mimeDecode::_getXML($input) .
- '</email>';
-
- return $output;
- }
-
- /**
- * Function that does the actual conversion to xml. Does a single
- * mimepart at a time.
- *
- * @param object Input to convert to xml. This is a mimepart object.
- * It may or may not contain subparts.
- * @param integer Number of tabs to indent
- * @return string XML version of input
- * @access private
- */
- function _getXML($input, $indent = 1)
- {
- $htab = "\t";
- $crlf = "\r\n";
- $output = '';
- $headers = @(array)$input->headers;
-
- foreach ($headers as $hdr_name => $hdr_value) {
-
- // Multiple headers with this name
- if (is_array($headers[$hdr_name])) {
- for ($i = 0; $i < count($hdr_value); $i++) {
- $output .= Mail_mimeDecode::_getXML_helper($hdr_name, $hdr_value[$i], $indent);
- }
-
- // Only one header of this sort
- } else {
- $output .= Mail_mimeDecode::_getXML_helper($hdr_name, $hdr_value, $indent);
- }
- }
-
- if (!empty($input->parts)) {
- for ($i = 0; $i < count($input->parts); $i++) {
- $output .= $crlf . str_repeat($htab, $indent) . '<mimepart>' . $crlf .
- Mail_mimeDecode::_getXML($input->parts[$i], $indent+1) .
- str_repeat($htab, $indent) . '</mimepart>' . $crlf;
- }
- } elseif (isset($input->body)) {
- $output .= $crlf . str_repeat($htab, $indent) . '<body><![CDATA[' .
- $input->body . ']]></body>' . $crlf;
- }
-
- return $output;
- }
-
- /**
- * Helper function to _getXML(). Returns xml of a header.
- *
- * @param string Name of header
- * @param string Value of header
- * @param integer Number of tabs to indent
- * @return string XML version of input
- * @access private
- */
- function _getXML_helper($hdr_name, $hdr_value, $indent)
- {
- $htab = "\t";
- $crlf = "\r\n";
- $return = '';
-
- $new_hdr_value = ($hdr_name != 'received') ? Mail_mimeDecode::_parseHeaderValue($hdr_value) : array('value' => $hdr_value);
- $new_hdr_name = str_replace(' ', '-', ucwords(str_replace('-', ' ', $hdr_name)));
-
- // Sort out any parameters
- if (!empty($new_hdr_value['other'])) {
- foreach ($new_hdr_value['other'] as $paramname => $paramvalue) {
- $params[] = str_repeat($htab, $indent) . $htab . '<parameter>' . $crlf .
- str_repeat($htab, $indent) . $htab . $htab . '<paramname>' . htmlspecialchars($paramname) . '</paramname>' . $crlf .
- str_repeat($htab, $indent) . $htab . $htab . '<paramvalue>' . htmlspecialchars($paramvalue) . '</paramvalue>' . $crlf .
- str_repeat($htab, $indent) . $htab . '</parameter>' . $crlf;
- }
-
- $params = implode('', $params);
- } else {
- $params = '';
- }
-
- $return = str_repeat($htab, $indent) . '<header>' . $crlf .
- str_repeat($htab, $indent) . $htab . '<headername>' . htmlspecialchars($new_hdr_name) . '</headername>' . $crlf .
- str_repeat($htab, $indent) . $htab . '<headervalue>' . htmlspecialchars($new_hdr_value['value']) . '</headervalue>' . $crlf .
- $params .
- str_repeat($htab, $indent) . '</header>' . $crlf;
-
- return $return;
- }
-
-} // End of class
diff --git a/program/lib/Mail/mimePart.php b/program/lib/Mail/mimePart.php
deleted file mode 100644
index c6e9f4aa8..000000000
--- a/program/lib/Mail/mimePart.php
+++ /dev/null
@@ -1,1261 +0,0 @@
-<?php
-/**
- * The Mail_mimePart class is used to create MIME E-mail messages
- *
- * This class enables you to manipulate and build a mime email
- * from the ground up. The Mail_Mime class is a userfriendly api
- * to this class for people who aren't interested in the internals
- * of mime mail.
- * This class however allows full control over the email.
- *
- * Compatible with PHP versions 4 and 5
- *
- * LICENSE: This LICENSE is in the BSD license style.
- * Copyright (c) 2002-2003, Richard Heyes <richard@phpguru.org>
- * Copyright (c) 2003-2006, PEAR <pear-group@php.net>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or
- * without modification, are permitted provided that the following
- * conditions are met:
- *
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * - Neither the name of the authors, nor the names of its contributors
- * may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- *
- * @category Mail
- * @package Mail_Mime
- * @author Richard Heyes <richard@phpguru.org>
- * @author Cipriano Groenendal <cipri@php.net>
- * @author Sean Coates <sean@php.net>
- * @author Aleksander Machniak <alec@php.net>
- * @copyright 2003-2006 PEAR <pear-group@php.net>
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- * @version CVS: $Id$
- * @link http://pear.php.net/package/Mail_mime
- */
-
-
-/**
- * The Mail_mimePart class is used to create MIME E-mail messages
- *
- * This class enables you to manipulate and build a mime email
- * from the ground up. The Mail_Mime class is a userfriendly api
- * to this class for people who aren't interested in the internals
- * of mime mail.
- * This class however allows full control over the email.
- *
- * @category Mail
- * @package Mail_Mime
- * @author Richard Heyes <richard@phpguru.org>
- * @author Cipriano Groenendal <cipri@php.net>
- * @author Sean Coates <sean@php.net>
- * @author Aleksander Machniak <alec@php.net>
- * @copyright 2003-2006 PEAR <pear-group@php.net>
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- * @version Release: @package_version@
- * @link http://pear.php.net/package/Mail_mime
- */
-class Mail_mimePart
-{
- /**
- * The encoding type of this part
- *
- * @var string
- * @access private
- */
- var $_encoding;
-
- /**
- * An array of subparts
- *
- * @var array
- * @access private
- */
- var $_subparts;
-
- /**
- * The output of this part after being built
- *
- * @var string
- * @access private
- */
- var $_encoded;
-
- /**
- * Headers for this part
- *
- * @var array
- * @access private
- */
- var $_headers;
-
- /**
- * The body of this part (not encoded)
- *
- * @var string
- * @access private
- */
- var $_body;
-
- /**
- * The location of file with body of this part (not encoded)
- *
- * @var string
- * @access private
- */
- var $_body_file;
-
- /**
- * The end-of-line sequence
- *
- * @var string
- * @access private
- */
- var $_eol = "\r\n";
-
-
- /**
- * Constructor.
- *
- * Sets up the object.
- *
- * @param string $body The body of the mime part if any.
- * @param array $params An associative array of optional parameters:
- * content_type - The content type for this part eg multipart/mixed
- * encoding - The encoding to use, 7bit, 8bit,
- * base64, or quoted-printable
- * charset - Content character set
- * cid - Content ID to apply
- * disposition - Content disposition, inline or attachment
- * filename - Filename parameter for content disposition
- * description - Content description
- * name_encoding - Encoding of the attachment name (Content-Type)
- * By default filenames are encoded using RFC2231
- * Here you can set RFC2047 encoding (quoted-printable
- * or base64) instead
- * filename_encoding - Encoding of the attachment filename (Content-Disposition)
- * See 'name_encoding'
- * headers_charset - Charset of the headers e.g. filename, description.
- * If not set, 'charset' will be used
- * eol - End of line sequence. Default: "\r\n"
- * headers - Hash array with additional part headers. Array keys can be
- * in form of <header_name>:<parameter_name>
- * body_file - Location of file with part's body (instead of $body)
- *
- * @access public
- */
- function Mail_mimePart($body = '', $params = array())
- {
- if (!empty($params['eol'])) {
- $this->_eol = $params['eol'];
- } else if (defined('MAIL_MIMEPART_CRLF')) { // backward-copat.
- $this->_eol = MAIL_MIMEPART_CRLF;
- }
-
- // Additional part headers
- if (!empty($params['headers']) && is_array($params['headers'])) {
- $headers = $params['headers'];
- }
-
- foreach ($params as $key => $value) {
- switch ($key) {
- case 'encoding':
- $this->_encoding = $value;
- $headers['Content-Transfer-Encoding'] = $value;
- break;
-
- case 'cid':
- $headers['Content-ID'] = '<' . $value . '>';
- break;
-
- case 'location':
- $headers['Content-Location'] = $value;
- break;
-
- case 'body_file':
- $this->_body_file = $value;
- break;
-
- // for backward compatibility
- case 'dfilename':
- $params['filename'] = $value;
- break;
- }
- }
-
- // Default content-type
- if (empty($params['content_type'])) {
- $params['content_type'] = 'text/plain';
- }
-
- // Content-Type
- $headers['Content-Type'] = $params['content_type'];
- if (!empty($params['charset'])) {
- $charset = "charset={$params['charset']}";
- // place charset parameter in the same line, if possible
- if ((strlen($headers['Content-Type']) + strlen($charset) + 16) <= 76) {
- $headers['Content-Type'] .= '; ';
- } else {
- $headers['Content-Type'] .= ';' . $this->_eol . ' ';
- }
- $headers['Content-Type'] .= $charset;
-
- // Default headers charset
- if (!isset($params['headers_charset'])) {
- $params['headers_charset'] = $params['charset'];
- }
- }
-
- // header values encoding parameters
- $h_charset = !empty($params['headers_charset']) ? $params['headers_charset'] : 'US-ASCII';
- $h_language = !empty($params['language']) ? $params['language'] : null;
- $h_encoding = !empty($params['name_encoding']) ? $params['name_encoding'] : null;
-
-
- if (!empty($params['filename'])) {
- $headers['Content-Type'] .= ';' . $this->_eol;
- $headers['Content-Type'] .= $this->_buildHeaderParam(
- 'name', $params['filename'], $h_charset, $h_language, $h_encoding
- );
- }
-
- // Content-Disposition
- if (!empty($params['disposition'])) {
- $headers['Content-Disposition'] = $params['disposition'];
- if (!empty($params['filename'])) {
- $headers['Content-Disposition'] .= ';' . $this->_eol;
- $headers['Content-Disposition'] .= $this->_buildHeaderParam(
- 'filename', $params['filename'], $h_charset, $h_language,
- !empty($params['filename_encoding']) ? $params['filename_encoding'] : null
- );
- }
-
- // add attachment size
- $size = $this->_body_file ? filesize($this->_body_file) : strlen($body);
- if ($size) {
- $headers['Content-Disposition'] .= ';' . $this->_eol . ' size=' . $size;
- }
- }
-
- if (!empty($params['description'])) {
- $headers['Content-Description'] = $this->encodeHeader(
- 'Content-Description', $params['description'], $h_charset, $h_encoding,
- $this->_eol
- );
- }
-
- // Search and add existing headers' parameters
- foreach ($headers as $key => $value) {
- $items = explode(':', $key);
- if (count($items) == 2) {
- $header = $items[0];
- $param = $items[1];
- if (isset($headers[$header])) {
- $headers[$header] .= ';' . $this->_eol;
- }
- $headers[$header] .= $this->_buildHeaderParam(
- $param, $value, $h_charset, $h_language, $h_encoding
- );
- unset($headers[$key]);
- }
- }
-
- // Default encoding
- if (!isset($this->_encoding)) {
- $this->_encoding = '7bit';
- }
-
- // Assign stuff to member variables
- $this->_encoded = array();
- $this->_headers = $headers;
- $this->_body = $body;
- }
-
- /**
- * Encodes and returns the email. Also stores
- * it in the encoded member variable
- *
- * @param string $boundary Pre-defined boundary string
- *
- * @return An associative array containing two elements,
- * body and headers. The headers element is itself
- * an indexed array. On error returns PEAR error object.
- * @access public
- */
- function encode($boundary=null)
- {
- $encoded =& $this->_encoded;
-
- if (count($this->_subparts)) {
- $boundary = $boundary ? $boundary : '=_' . md5(rand() . microtime());
- $eol = $this->_eol;
-
- $this->_headers['Content-Type'] .= ";$eol boundary=\"$boundary\"";
-
- $encoded['body'] = '';
-
- for ($i = 0; $i < count($this->_subparts); $i++) {
- $encoded['body'] .= '--' . $boundary . $eol;
- $tmp = $this->_subparts[$i]->encode();
- if ($this->_isError($tmp)) {
- return $tmp;
- }
- foreach ($tmp['headers'] as $key => $value) {
- $encoded['body'] .= $key . ': ' . $value . $eol;
- }
- $encoded['body'] .= $eol . $tmp['body'] . $eol;
- }
-
- $encoded['body'] .= '--' . $boundary . '--' . $eol;
-
- } else if ($this->_body) {
- $encoded['body'] = $this->_getEncodedData($this->_body, $this->_encoding);
- } else if ($this->_body_file) {
- // Temporarily reset magic_quotes_runtime for file reads and writes
- if ($magic_quote_setting = get_magic_quotes_runtime()) {
- @ini_set('magic_quotes_runtime', 0);
- }
- $body = $this->_getEncodedDataFromFile($this->_body_file, $this->_encoding);
- if ($magic_quote_setting) {
- @ini_set('magic_quotes_runtime', $magic_quote_setting);
- }
-
- if ($this->_isError($body)) {
- return $body;
- }
- $encoded['body'] = $body;
- } else {
- $encoded['body'] = '';
- }
-
- // Add headers to $encoded
- $encoded['headers'] =& $this->_headers;
-
- return $encoded;
- }
-
- /**
- * Encodes and saves the email into file. File must exist.
- * Data will be appended to the file.
- *
- * @param string $filename Output file location
- * @param string $boundary Pre-defined boundary string
- * @param boolean $skip_head True if you don't want to save headers
- *
- * @return array An associative array containing message headers
- * or PEAR error object
- * @access public
- * @since 1.6.0
- */
- function encodeToFile($filename, $boundary=null, $skip_head=false)
- {
- if (file_exists($filename) && !is_writable($filename)) {
- $err = $this->_raiseError('File is not writeable: ' . $filename);
- return $err;
- }
-
- if (!($fh = fopen($filename, 'ab'))) {
- $err = $this->_raiseError('Unable to open file: ' . $filename);
- return $err;
- }
-
- // Temporarily reset magic_quotes_runtime for file reads and writes
- if ($magic_quote_setting = get_magic_quotes_runtime()) {
- @ini_set('magic_quotes_runtime', 0);
- }
-
- $res = $this->_encodePartToFile($fh, $boundary, $skip_head);
-
- fclose($fh);
-
- if ($magic_quote_setting) {
- @ini_set('magic_quotes_runtime', $magic_quote_setting);
- }
-
- return $this->_isError($res) ? $res : $this->_headers;
- }
-
- /**
- * Encodes given email part into file
- *
- * @param string $fh Output file handle
- * @param string $boundary Pre-defined boundary string
- * @param boolean $skip_head True if you don't want to save headers
- *
- * @return array True on sucess or PEAR error object
- * @access private
- */
- function _encodePartToFile($fh, $boundary=null, $skip_head=false)
- {
- $eol = $this->_eol;
-
- if (count($this->_subparts)) {
- $boundary = $boundary ? $boundary : '=_' . md5(rand() . microtime());
- $this->_headers['Content-Type'] .= ";$eol boundary=\"$boundary\"";
- }
-
- if (!$skip_head) {
- foreach ($this->_headers as $key => $value) {
- fwrite($fh, $key . ': ' . $value . $eol);
- }
- $f_eol = $eol;
- } else {
- $f_eol = '';
- }
-
- if (count($this->_subparts)) {
- for ($i = 0; $i < count($this->_subparts); $i++) {
- fwrite($fh, $f_eol . '--' . $boundary . $eol);
- $res = $this->_subparts[$i]->_encodePartToFile($fh);
- if ($this->_isError($res)) {
- return $res;
- }
- $f_eol = $eol;
- }
-
- fwrite($fh, $eol . '--' . $boundary . '--' . $eol);
-
- } else if ($this->_body) {
- fwrite($fh, $f_eol . $this->_getEncodedData($this->_body, $this->_encoding));
- } else if ($this->_body_file) {
- fwrite($fh, $f_eol);
- $res = $this->_getEncodedDataFromFile(
- $this->_body_file, $this->_encoding, $fh
- );
- if ($this->_isError($res)) {
- return $res;
- }
- }
-
- return true;
- }
-
- /**
- * Adds a subpart to current mime part and returns
- * a reference to it
- *
- * @param string $body The body of the subpart, if any.
- * @param array $params The parameters for the subpart, same
- * as the $params argument for constructor.
- *
- * @return Mail_mimePart A reference to the part you just added. In PHP4, it is
- * crucial if using multipart/* in your subparts that
- * you use =& in your script when calling this function,
- * otherwise you will not be able to add further subparts.
- * @access public
- */
- function &addSubpart($body, $params)
- {
- $this->_subparts[] = $part = new Mail_mimePart($body, $params);
- return $part;
- }
-
- /**
- * Returns encoded data based upon encoding passed to it
- *
- * @param string $data The data to encode.
- * @param string $encoding The encoding type to use, 7bit, base64,
- * or quoted-printable.
- *
- * @return string
- * @access private
- */
- function _getEncodedData($data, $encoding)
- {
- switch ($encoding) {
- case 'quoted-printable':
- return $this->_quotedPrintableEncode($data);
- break;
-
- case 'base64':
- return rtrim(chunk_split(base64_encode($data), 76, $this->_eol));
- break;
-
- case '8bit':
- case '7bit':
- default:
- return $data;
- }
- }
-
- /**
- * Returns encoded data based upon encoding passed to it
- *
- * @param string $filename Data file location
- * @param string $encoding The encoding type to use, 7bit, base64,
- * or quoted-printable.
- * @param resource $fh Output file handle. If set, data will be
- * stored into it instead of returning it
- *
- * @return string Encoded data or PEAR error object
- * @access private
- */
- function _getEncodedDataFromFile($filename, $encoding, $fh=null)
- {
- if (!is_readable($filename)) {
- $err = $this->_raiseError('Unable to read file: ' . $filename);
- return $err;
- }
-
- if (!($fd = fopen($filename, 'rb'))) {
- $err = $this->_raiseError('Could not open file: ' . $filename);
- return $err;
- }
-
- $data = '';
-
- switch ($encoding) {
- case 'quoted-printable':
- while (!feof($fd)) {
- $buffer = $this->_quotedPrintableEncode(fgets($fd));
- if ($fh) {
- fwrite($fh, $buffer);
- } else {
- $data .= $buffer;
- }
- }
- break;
-
- case 'base64':
- while (!feof($fd)) {
- // Should read in a multiple of 57 bytes so that
- // the output is 76 bytes per line. Don't use big chunks
- // because base64 encoding is memory expensive
- $buffer = fread($fd, 57 * 9198); // ca. 0.5 MB
- $buffer = base64_encode($buffer);
- $buffer = chunk_split($buffer, 76, $this->_eol);
- if (feof($fd)) {
- $buffer = rtrim($buffer);
- }
-
- if ($fh) {
- fwrite($fh, $buffer);
- } else {
- $data .= $buffer;
- }
- }
- break;
-
- case '8bit':
- case '7bit':
- default:
- while (!feof($fd)) {
- $buffer = fread($fd, 1048576); // 1 MB
- if ($fh) {
- fwrite($fh, $buffer);
- } else {
- $data .= $buffer;
- }
- }
- }
-
- fclose($fd);
-
- if (!$fh) {
- return $data;
- }
- }
-
- /**
- * Encodes data to quoted-printable standard.
- *
- * @param string $input The data to encode
- * @param int $line_max Optional max line length. Should
- * not be more than 76 chars
- *
- * @return string Encoded data
- *
- * @access private
- */
- function _quotedPrintableEncode($input , $line_max = 76)
- {
- $eol = $this->_eol;
- /*
- // imap_8bit() is extremely fast, but doesn't handle properly some characters
- if (function_exists('imap_8bit') && $line_max == 76) {
- $input = preg_replace('/\r?\n/', "\r\n", $input);
- $input = imap_8bit($input);
- if ($eol != "\r\n") {
- $input = str_replace("\r\n", $eol, $input);
- }
- return $input;
- }
- */
- $lines = preg_split("/\r?\n/", $input);
- $escape = '=';
- $output = '';
-
- while (list($idx, $line) = each($lines)) {
- $newline = '';
- $i = 0;
-
- while (isset($line[$i])) {
- $char = $line[$i];
- $dec = ord($char);
- $i++;
-
- if (($dec == 32) && (!isset($line[$i]))) {
- // convert space at eol only
- $char = '=20';
- } elseif ($dec == 9 && isset($line[$i])) {
- ; // Do nothing if a TAB is not on eol
- } elseif (($dec == 61) || ($dec < 32) || ($dec > 126)) {
- $char = $escape . sprintf('%02X', $dec);
- } elseif (($dec == 46) && (($newline == '')
- || ((strlen($newline) + strlen("=2E")) >= $line_max))
- ) {
- // Bug #9722: convert full-stop at bol,
- // some Windows servers need this, won't break anything (cipri)
- // Bug #11731: full-stop at bol also needs to be encoded
- // if this line would push us over the line_max limit.
- $char = '=2E';
- }
-
- // Note, when changing this line, also change the ($dec == 46)
- // check line, as it mimics this line due to Bug #11731
- // EOL is not counted
- if ((strlen($newline) + strlen($char)) >= $line_max) {
- // soft line break; " =\r\n" is okay
- $output .= $newline . $escape . $eol;
- $newline = '';
- }
- $newline .= $char;
- } // end of for
- $output .= $newline . $eol;
- unset($lines[$idx]);
- }
- // Don't want last crlf
- $output = substr($output, 0, -1 * strlen($eol));
- return $output;
- }
-
- /**
- * Encodes the parameter of a header.
- *
- * @param string $name The name of the header-parameter
- * @param string $value The value of the paramter
- * @param string $charset The characterset of $value
- * @param string $language The language used in $value
- * @param string $encoding Parameter encoding. If not set, parameter value
- * is encoded according to RFC2231
- * @param int $maxLength The maximum length of a line. Defauls to 75
- *
- * @return string
- *
- * @access private
- */
- function _buildHeaderParam($name, $value, $charset=null, $language=null,
- $encoding=null, $maxLength=75
- ) {
- // RFC 2045:
- // value needs encoding if contains non-ASCII chars or is longer than 78 chars
- if (!preg_match('#[^\x20-\x7E]#', $value)) {
- $token_regexp = '#([^\x21\x23-\x27\x2A\x2B\x2D'
- . '\x2E\x30-\x39\x41-\x5A\x5E-\x7E])#';
- if (!preg_match($token_regexp, $value)) {
- // token
- if (strlen($name) + strlen($value) + 3 <= $maxLength) {
- return " {$name}={$value}";
- }
- } else {
- // quoted-string
- $quoted = addcslashes($value, '\\"');
- if (strlen($name) + strlen($quoted) + 5 <= $maxLength) {
- return " {$name}=\"{$quoted}\"";
- }
- }
- }
-
- // RFC2047: use quoted-printable/base64 encoding
- if ($encoding == 'quoted-printable' || $encoding == 'base64') {
- return $this->_buildRFC2047Param($name, $value, $charset, $encoding);
- }
-
- // RFC2231:
- $encValue = preg_replace_callback(
- '/([^\x21\x23\x24\x26\x2B\x2D\x2E\x30-\x39\x41-\x5A\x5E-\x7E])/',
- array($this, '_encodeReplaceCallback'), $value
- );
- $value = "$charset'$language'$encValue";
-
- $header = " {$name}*={$value}";
- if (strlen($header) <= $maxLength) {
- return $header;
- }
-
- $preLength = strlen(" {$name}*0*=");
- $maxLength = max(16, $maxLength - $preLength - 3);
- $maxLengthReg = "|(.{0,$maxLength}[^\%][^\%])|";
-
- $headers = array();
- $headCount = 0;
- while ($value) {
- $matches = array();
- $found = preg_match($maxLengthReg, $value, $matches);
- if ($found) {
- $headers[] = " {$name}*{$headCount}*={$matches[0]}";
- $value = substr($value, strlen($matches[0]));
- } else {
- $headers[] = " {$name}*{$headCount}*={$value}";
- $value = '';
- }
- $headCount++;
- }
-
- $headers = implode(';' . $this->_eol, $headers);
- return $headers;
- }
-
- /**
- * Encodes header parameter as per RFC2047 if needed
- *
- * @param string $name The parameter name
- * @param string $value The parameter value
- * @param string $charset The parameter charset
- * @param string $encoding Encoding type (quoted-printable or base64)
- * @param int $maxLength Encoded parameter max length. Default: 76
- *
- * @return string Parameter line
- * @access private
- */
- function _buildRFC2047Param($name, $value, $charset,
- $encoding='quoted-printable', $maxLength=76
- ) {
- // WARNING: RFC 2047 says: "An 'encoded-word' MUST NOT be used in
- // parameter of a MIME Content-Type or Content-Disposition field",
- // but... it's supported by many clients/servers
- $quoted = '';
-
- if ($encoding == 'base64') {
- $value = base64_encode($value);
- $prefix = '=?' . $charset . '?B?';
- $suffix = '?=';
-
- // 2 x SPACE, 2 x '"', '=', ';'
- $add_len = strlen($prefix . $suffix) + strlen($name) + 6;
- $len = $add_len + strlen($value);
-
- while ($len > $maxLength) {
- // We can cut base64-encoded string every 4 characters
- $real_len = floor(($maxLength - $add_len) / 4) * 4;
- $_quote = substr($value, 0, $real_len);
- $value = substr($value, $real_len);
-
- $quoted .= $prefix . $_quote . $suffix . $this->_eol . ' ';
- $add_len = strlen($prefix . $suffix) + 4; // 2 x SPACE, '"', ';'
- $len = strlen($value) + $add_len;
- }
- $quoted .= $prefix . $value . $suffix;
-
- } else {
- // quoted-printable
- $value = $this->encodeQP($value);
- $prefix = '=?' . $charset . '?Q?';
- $suffix = '?=';
-
- // 2 x SPACE, 2 x '"', '=', ';'
- $add_len = strlen($prefix . $suffix) + strlen($name) + 6;
- $len = $add_len + strlen($value);
-
- while ($len > $maxLength) {
- $length = $maxLength - $add_len;
- // don't break any encoded letters
- if (preg_match("/^(.{0,$length}[^\=][^\=])/", $value, $matches)) {
- $_quote = $matches[1];
- }
-
- $quoted .= $prefix . $_quote . $suffix . $this->_eol . ' ';
- $value = substr($value, strlen($_quote));
- $add_len = strlen($prefix . $suffix) + 4; // 2 x SPACE, '"', ';'
- $len = strlen($value) + $add_len;
- }
-
- $quoted .= $prefix . $value . $suffix;
- }
-
- return " {$name}=\"{$quoted}\"";
- }
-
- /**
- * Encodes a header as per RFC2047
- *
- * @param string $name The header name
- * @param string $value The header data to encode
- * @param string $charset Character set name
- * @param string $encoding Encoding name (base64 or quoted-printable)
- * @param string $eol End-of-line sequence. Default: "\r\n"
- *
- * @return string Encoded header data (without a name)
- * @access public
- * @since 1.6.1
- */
- function encodeHeader($name, $value, $charset='ISO-8859-1',
- $encoding='quoted-printable', $eol="\r\n"
- ) {
- // Structured headers
- $comma_headers = array(
- 'from', 'to', 'cc', 'bcc', 'sender', 'reply-to',
- 'resent-from', 'resent-to', 'resent-cc', 'resent-bcc',
- 'resent-sender', 'resent-reply-to',
- 'mail-reply-to', 'mail-followup-to',
- 'return-receipt-to', 'disposition-notification-to',
- );
- $other_headers = array(
- 'references', 'in-reply-to', 'message-id', 'resent-message-id',
- );
-
- $name = strtolower($name);
-
- if (in_array($name, $comma_headers)) {
- $separator = ',';
- } else if (in_array($name, $other_headers)) {
- $separator = ' ';
- }
-
- if (!$charset) {
- $charset = 'ISO-8859-1';
- }
-
- // Structured header (make sure addr-spec inside is not encoded)
- if (!empty($separator)) {
- // Simple e-mail address regexp
- $email_regexp = '([^\s<]+|("[^\r\n"]+"))@\S+';
-
- $parts = Mail_mimePart::_explodeQuotedString($separator, $value);
- $value = '';
-
- foreach ($parts as $part) {
- $part = preg_replace('/\r?\n[\s\t]*/', $eol . ' ', $part);
- $part = trim($part);
-
- if (!$part) {
- continue;
- }
- if ($value) {
- $value .= $separator==',' ? $separator.' ' : ' ';
- } else {
- $value = $name . ': ';
- }
-
- // let's find phrase (name) and/or addr-spec
- if (preg_match('/^<' . $email_regexp . '>$/', $part)) {
- $value .= $part;
- } else if (preg_match('/^' . $email_regexp . '$/', $part)) {
- // address without brackets and without name
- $value .= $part;
- } else if (preg_match('/<*' . $email_regexp . '>*$/', $part, $matches)) {
- // address with name (handle name)
- $address = $matches[0];
- $word = str_replace($address, '', $part);
- $word = trim($word);
- // check if phrase requires quoting
- if ($word) {
- // non-ASCII: require encoding
- if (preg_match('#([\x80-\xFF]){1}#', $word)) {
- if ($word[0] == '"' && $word[strlen($word)-1] == '"') {
- // de-quote quoted-string, encoding changes
- // string to atom
- $search = array("\\\"", "\\\\");
- $replace = array("\"", "\\");
- $word = str_replace($search, $replace, $word);
- $word = substr($word, 1, -1);
- }
- // find length of last line
- if (($pos = strrpos($value, $eol)) !== false) {
- $last_len = strlen($value) - $pos;
- } else {
- $last_len = strlen($value);
- }
- $word = Mail_mimePart::encodeHeaderValue(
- $word, $charset, $encoding, $last_len, $eol
- );
- } else if (($word[0] != '"' || $word[strlen($word)-1] != '"')
- && preg_match('/[\(\)\<\>\\\.\[\]@,;:"]/', $word)
- ) {
- // ASCII: quote string if needed
- $word = '"'.addcslashes($word, '\\"').'"';
- }
- }
- $value .= $word.' '.$address;
- } else {
- // addr-spec not found, don't encode (?)
- $value .= $part;
- }
-
- // RFC2822 recommends 78 characters limit, use 76 from RFC2047
- $value = wordwrap($value, 76, $eol . ' ');
- }
-
- // remove header name prefix (there could be EOL too)
- $value = preg_replace(
- '/^'.$name.':('.preg_quote($eol, '/').')* /', '', $value
- );
-
- } else {
- // Unstructured header
- // non-ASCII: require encoding
- if (preg_match('#([\x80-\xFF]){1}#', $value)) {
- if ($value[0] == '"' && $value[strlen($value)-1] == '"') {
- // de-quote quoted-string, encoding changes
- // string to atom
- $search = array("\\\"", "\\\\");
- $replace = array("\"", "\\");
- $value = str_replace($search, $replace, $value);
- $value = substr($value, 1, -1);
- }
- $value = Mail_mimePart::encodeHeaderValue(
- $value, $charset, $encoding, strlen($name) + 2, $eol
- );
- } else if (strlen($name.': '.$value) > 78) {
- // ASCII: check if header line isn't too long and use folding
- $value = preg_replace('/\r?\n[\s\t]*/', $eol . ' ', $value);
- $tmp = wordwrap($name.': '.$value, 78, $eol . ' ');
- $value = preg_replace('/^'.$name.':\s*/', '', $tmp);
- // hard limit 998 (RFC2822)
- $value = wordwrap($value, 998, $eol . ' ', true);
- }
- }
-
- return $value;
- }
-
- /**
- * Explode quoted string
- *
- * @param string $delimiter Delimiter expression string for preg_match()
- * @param string $string Input string
- *
- * @return array String tokens array
- * @access private
- */
- function _explodeQuotedString($delimiter, $string)
- {
- $result = array();
- $strlen = strlen($string);
-
- for ($q=$p=$i=0; $i < $strlen; $i++) {
- if ($string[$i] == "\""
- && (empty($string[$i-1]) || $string[$i-1] != "\\")
- ) {
- $q = $q ? false : true;
- } else if (!$q && preg_match("/$delimiter/", $string[$i])) {
- $result[] = substr($string, $p, $i - $p);
- $p = $i + 1;
- }
- }
-
- $result[] = substr($string, $p);
- return $result;
- }
-
- /**
- * Encodes a header value as per RFC2047
- *
- * @param string $value The header data to encode
- * @param string $charset Character set name
- * @param string $encoding Encoding name (base64 or quoted-printable)
- * @param int $prefix_len Prefix length. Default: 0
- * @param string $eol End-of-line sequence. Default: "\r\n"
- *
- * @return string Encoded header data
- * @access public
- * @since 1.6.1
- */
- function encodeHeaderValue($value, $charset, $encoding, $prefix_len=0, $eol="\r\n")
- {
- // #17311: Use multibyte aware method (requires mbstring extension)
- if ($result = Mail_mimePart::encodeMB($value, $charset, $encoding, $prefix_len, $eol)) {
- return $result;
- }
-
- // Generate the header using the specified params and dynamicly
- // determine the maximum length of such strings.
- // 75 is the value specified in the RFC.
- $encoding = $encoding == 'base64' ? 'B' : 'Q';
- $prefix = '=?' . $charset . '?' . $encoding .'?';
- $suffix = '?=';
- $maxLength = 75 - strlen($prefix . $suffix);
- $maxLength1stLine = $maxLength - $prefix_len;
-
- if ($encoding == 'B') {
- // Base64 encode the entire string
- $value = base64_encode($value);
-
- // We can cut base64 every 4 characters, so the real max
- // we can get must be rounded down.
- $maxLength = $maxLength - ($maxLength % 4);
- $maxLength1stLine = $maxLength1stLine - ($maxLength1stLine % 4);
-
- $cutpoint = $maxLength1stLine;
- $output = '';
-
- while ($value) {
- // Split translated string at every $maxLength
- $part = substr($value, 0, $cutpoint);
- $value = substr($value, $cutpoint);
- $cutpoint = $maxLength;
- // RFC 2047 specifies that any split header should
- // be separated by a CRLF SPACE.
- if ($output) {
- $output .= $eol . ' ';
- }
- $output .= $prefix . $part . $suffix;
- }
- $value = $output;
- } else {
- // quoted-printable encoding has been selected
- $value = Mail_mimePart::encodeQP($value);
-
- // This regexp will break QP-encoded text at every $maxLength
- // but will not break any encoded letters.
- $reg1st = "|(.{0,$maxLength1stLine}[^\=][^\=])|";
- $reg2nd = "|(.{0,$maxLength}[^\=][^\=])|";
-
- if (strlen($value) > $maxLength1stLine) {
- // Begin with the regexp for the first line.
- $reg = $reg1st;
- $output = '';
- while ($value) {
- // Split translated string at every $maxLength
- // But make sure not to break any translated chars.
- $found = preg_match($reg, $value, $matches);
-
- // After this first line, we need to use a different
- // regexp for the first line.
- $reg = $reg2nd;
-
- // Save the found part and encapsulate it in the
- // prefix & suffix. Then remove the part from the
- // $value_out variable.
- if ($found) {
- $part = $matches[0];
- $len = strlen($matches[0]);
- $value = substr($value, $len);
- } else {
- $part = $value;
- $value = '';
- }
-
- // RFC 2047 specifies that any split header should
- // be separated by a CRLF SPACE
- if ($output) {
- $output .= $eol . ' ';
- }
- $output .= $prefix . $part . $suffix;
- }
- $value = $output;
- } else {
- $value = $prefix . $value . $suffix;
- }
- }
-
- return $value;
- }
-
- /**
- * Encodes the given string using quoted-printable
- *
- * @param string $str String to encode
- *
- * @return string Encoded string
- * @access public
- * @since 1.6.0
- */
- function encodeQP($str)
- {
- // Bug #17226 RFC 2047 restricts some characters
- // if the word is inside a phrase, permitted chars are only:
- // ASCII letters, decimal digits, "!", "*", "+", "-", "/", "=", and "_"
-
- // "=", "_", "?" must be encoded
- $regexp = '/([\x22-\x29\x2C\x2E\x3A-\x40\x5B-\x60\x7B-\x7E\x80-\xFF])/';
- $str = preg_replace_callback(
- $regexp, array('Mail_mimePart', '_qpReplaceCallback'), $str
- );
-
- return str_replace(' ', '_', $str);
- }
-
- /**
- * Encodes the given string using base64 or quoted-printable.
- * This method makes sure that encoded-word represents an integral
- * number of characters as per RFC2047.
- *
- * @param string $str String to encode
- * @param string $charset Character set name
- * @param string $encoding Encoding name (base64 or quoted-printable)
- * @param int $prefix_len Prefix length. Default: 0
- * @param string $eol End-of-line sequence. Default: "\r\n"
- *
- * @return string Encoded string
- * @access public
- * @since 1.8.0
- */
- function encodeMB($str, $charset, $encoding, $prefix_len=0, $eol="\r\n")
- {
- if (!function_exists('mb_substr') || !function_exists('mb_strlen')) {
- return;
- }
-
- $encoding = $encoding == 'base64' ? 'B' : 'Q';
- // 75 is the value specified in the RFC
- $prefix = '=?' . $charset . '?'.$encoding.'?';
- $suffix = '?=';
- $maxLength = 75 - strlen($prefix . $suffix);
-
- // A multi-octet character may not be split across adjacent encoded-words
- // So, we'll loop over each character
- // mb_stlen() with wrong charset will generate a warning here and return null
- $length = mb_strlen($str, $charset);
- $result = '';
- $line_length = $prefix_len;
-
- if ($encoding == 'B') {
- // base64
- $start = 0;
- $prev = '';
-
- for ($i=1; $i<=$length; $i++) {
- // See #17311
- $chunk = mb_substr($str, $start, $i-$start, $charset);
- $chunk = base64_encode($chunk);
- $chunk_len = strlen($chunk);
-
- if ($line_length + $chunk_len == $maxLength || $i == $length) {
- if ($result) {
- $result .= "\n";
- }
- $result .= $chunk;
- $line_length = 0;
- $start = $i;
- } else if ($line_length + $chunk_len > $maxLength) {
- if ($result) {
- $result .= "\n";
- }
- if ($prev) {
- $result .= $prev;
- }
- $line_length = 0;
- $start = $i - 1;
- } else {
- $prev = $chunk;
- }
- }
- } else {
- // quoted-printable
- // see encodeQP()
- $regexp = '/([\x22-\x29\x2C\x2E\x3A-\x40\x5B-\x60\x7B-\x7E\x80-\xFF])/';
-
- for ($i=0; $i<=$length; $i++) {
- $char = mb_substr($str, $i, 1, $charset);
- // RFC recommends underline (instead of =20) in place of the space
- // that's one of the reasons why we're not using iconv_mime_encode()
- if ($char == ' ') {
- $char = '_';
- $char_len = 1;
- } else {
- $char = preg_replace_callback(
- $regexp, array('Mail_mimePart', '_qpReplaceCallback'), $char
- );
- $char_len = strlen($char);
- }
-
- if ($line_length + $char_len > $maxLength) {
- if ($result) {
- $result .= "\n";
- }
- $line_length = 0;
- }
-
- $result .= $char;
- $line_length += $char_len;
- }
- }
-
- if ($result) {
- $result = $prefix
- .str_replace("\n", $suffix.$eol.' '.$prefix, $result).$suffix;
- }
-
- return $result;
- }
-
- /**
- * Callback function to replace extended characters (\x80-xFF) with their
- * ASCII values (RFC2047: quoted-printable)
- *
- * @param array $matches Preg_replace's matches array
- *
- * @return string Encoded character string
- * @access private
- */
- function _qpReplaceCallback($matches)
- {
- return sprintf('=%02X', ord($matches[1]));
- }
-
- /**
- * Callback function to replace extended characters (\x80-xFF) with their
- * ASCII values (RFC2231)
- *
- * @param array $matches Preg_replace's matches array
- *
- * @return string Encoded character string
- * @access private
- */
- function _encodeReplaceCallback($matches)
- {
- return sprintf('%%%02X', ord($matches[1]));
- }
-
- /**
- * PEAR::isError implementation
- *
- * @param mixed $data Object
- *
- * @return bool True if object is an instance of PEAR_Error
- * @access private
- */
- function _isError($data)
- {
- // PEAR::isError() is not PHP 5.4 compatible (see Bug #19473)
- if (is_object($data) && is_a($data, 'PEAR_Error')) {
- return true;
- }
-
- return false;
- }
-
- /**
- * PEAR::raiseError implementation
- *
- * @param $message A text error message
- *
- * @return PEAR_Error Instance of PEAR_Error
- * @access private
- */
- function _raiseError($message)
- {
- // PEAR::raiseError() is not PHP 5.4 compatible
- return new PEAR_Error($message);
- }
-
-} // End of class
diff --git a/program/lib/Net/IDNA2.php b/program/lib/Net/IDNA2.php
deleted file mode 100644
index 8c366fb8a..000000000
--- a/program/lib/Net/IDNA2.php
+++ /dev/null
@@ -1,3402 +0,0 @@
-<?php
-
-// {{{ license
-
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4 foldmethod=marker: */
-//
-// +----------------------------------------------------------------------+
-// | This library is free software; you can redistribute it and/or modify |
-// | it under the terms of the GNU Lesser General Public License as |
-// | published by the Free Software Foundation; either version 2.1 of the |
-// | License, or (at your option) any later version. |
-// | |
-// | This library is distributed in the hope that it will be useful, but |
-// | WITHOUT ANY WARRANTY; without even the implied warranty of |
-// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
-// | Lesser General Public License for more details. |
-// | |
-// | You should have received a copy of the GNU Lesser General Public |
-// | License along with this library; if not, write to the Free Software |
-// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 |
-// | USA. |
-// +----------------------------------------------------------------------+
-//
-
-// }}}
-require_once 'Net/IDNA2/Exception.php';
-require_once 'Net/IDNA2/Exception/Nameprep.php';
-
-/**
- * Encode/decode Internationalized Domain Names.
- *
- * The class allows to convert internationalized domain names
- * (see RFC 3490 for details) as they can be used with various registries worldwide
- * to be translated between their original (localized) form and their encoded form
- * as it will be used in the DNS (Domain Name System).
- *
- * The class provides two public methods, encode() and decode(), which do exactly
- * what you would expect them to do. You are allowed to use complete domain names,
- * simple strings and complete email addresses as well. That means, that you might
- * use any of the following notations:
- *
- * - www.n�rgler.com
- * - xn--nrgler-wxa
- * - xn--brse-5qa.xn--knrz-1ra.info
- *
- * Unicode input might be given as either UTF-8 string, UCS-4 string or UCS-4
- * array. Unicode output is available in the same formats.
- * You can select your preferred format via {@link set_paramter()}.
- *
- * ACE input and output is always expected to be ASCII.
- *
- * @package Net
- * @author Markus Nix <mnix@docuverse.de>
- * @author Matthias Sommerfeld <mso@phlylabs.de>
- * @author Stefan Neufeind <pear.neufeind@speedpartner.de>
- * @version $Id: IDNA2.php 305344 2010-11-14 23:52:42Z neufeind $
- */
-class Net_IDNA2
-{
- // {{{ npdata
- /**
- * These Unicode codepoints are
- * mapped to nothing, See RFC3454 for details
- *
- * @static
- * @var array
- * @access private
- */
- private static $_np_map_nothing = array(
- 0xAD,
- 0x34F,
- 0x1806,
- 0x180B,
- 0x180C,
- 0x180D,
- 0x200B,
- 0x200C,
- 0x200D,
- 0x2060,
- 0xFE00,
- 0xFE01,
- 0xFE02,
- 0xFE03,
- 0xFE04,
- 0xFE05,
- 0xFE06,
- 0xFE07,
- 0xFE08,
- 0xFE09,
- 0xFE0A,
- 0xFE0B,
- 0xFE0C,
- 0xFE0D,
- 0xFE0E,
- 0xFE0F,
- 0xFEFF
- );
-
- /**
- * Prohibited codepints
- *
- * @static
- * @var array
- * @access private
- */
- private static $_general_prohibited = array(
- 0,
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 0xA,
- 0xB,
- 0xC,
- 0xD,
- 0xE,
- 0xF,
- 0x10,
- 0x11,
- 0x12,
- 0x13,
- 0x14,
- 0x15,
- 0x16,
- 0x17,
- 0x18,
- 0x19,
- 0x1A,
- 0x1B,
- 0x1C,
- 0x1D,
- 0x1E,
- 0x1F,
- 0x20,
- 0x21,
- 0x22,
- 0x23,
- 0x24,
- 0x25,
- 0x26,
- 0x27,
- 0x28,
- 0x29,
- 0x2A,
- 0x2B,
- 0x2C,
- 0x2F,
- 0x3B,
- 0x3C,
- 0x3D,
- 0x3E,
- 0x3F,
- 0x40,
- 0x5B,
- 0x5C,
- 0x5D,
- 0x5E,
- 0x5F,
- 0x60,
- 0x7B,
- 0x7C,
- 0x7D,
- 0x7E,
- 0x7F,
- 0x3002
- );
-
- /**
- * Codepints prohibited by Nameprep
- * @static
- * @var array
- * @access private
- */
- private static $_np_prohibit = array(
- 0xA0,
- 0x1680,
- 0x2000,
- 0x2001,
- 0x2002,
- 0x2003,
- 0x2004,
- 0x2005,
- 0x2006,
- 0x2007,
- 0x2008,
- 0x2009,
- 0x200A,
- 0x200B,
- 0x202F,
- 0x205F,
- 0x3000,
- 0x6DD,
- 0x70F,
- 0x180E,
- 0x200C,
- 0x200D,
- 0x2028,
- 0x2029,
- 0xFEFF,
- 0xFFF9,
- 0xFFFA,
- 0xFFFB,
- 0xFFFC,
- 0xFFFE,
- 0xFFFF,
- 0x1FFFE,
- 0x1FFFF,
- 0x2FFFE,
- 0x2FFFF,
- 0x3FFFE,
- 0x3FFFF,
- 0x4FFFE,
- 0x4FFFF,
- 0x5FFFE,
- 0x5FFFF,
- 0x6FFFE,
- 0x6FFFF,
- 0x7FFFE,
- 0x7FFFF,
- 0x8FFFE,
- 0x8FFFF,
- 0x9FFFE,
- 0x9FFFF,
- 0xAFFFE,
- 0xAFFFF,
- 0xBFFFE,
- 0xBFFFF,
- 0xCFFFE,
- 0xCFFFF,
- 0xDFFFE,
- 0xDFFFF,
- 0xEFFFE,
- 0xEFFFF,
- 0xFFFFE,
- 0xFFFFF,
- 0x10FFFE,
- 0x10FFFF,
- 0xFFF9,
- 0xFFFA,
- 0xFFFB,
- 0xFFFC,
- 0xFFFD,
- 0x340,
- 0x341,
- 0x200E,
- 0x200F,
- 0x202A,
- 0x202B,
- 0x202C,
- 0x202D,
- 0x202E,
- 0x206A,
- 0x206B,
- 0x206C,
- 0x206D,
- 0x206E,
- 0x206F,
- 0xE0001
- );
-
- /**
- * Codepoint ranges prohibited by nameprep
- *
- * @static
- * @var array
- * @access private
- */
- private static $_np_prohibit_ranges = array(
- array(0x80, 0x9F ),
- array(0x2060, 0x206F ),
- array(0x1D173, 0x1D17A ),
- array(0xE000, 0xF8FF ),
- array(0xF0000, 0xFFFFD ),
- array(0x100000, 0x10FFFD),
- array(0xFDD0, 0xFDEF ),
- array(0xD800, 0xDFFF ),
- array(0x2FF0, 0x2FFB ),
- array(0xE0020, 0xE007F )
- );
-
- /**
- * Replacement mappings (casemapping, replacement sequences, ...)
- *
- * @static
- * @var array
- * @access private
- */
- private static $_np_replacemaps = array(
- 0x41 => array(0x61),
- 0x42 => array(0x62),
- 0x43 => array(0x63),
- 0x44 => array(0x64),
- 0x45 => array(0x65),
- 0x46 => array(0x66),
- 0x47 => array(0x67),
- 0x48 => array(0x68),
- 0x49 => array(0x69),
- 0x4A => array(0x6A),
- 0x4B => array(0x6B),
- 0x4C => array(0x6C),
- 0x4D => array(0x6D),
- 0x4E => array(0x6E),
- 0x4F => array(0x6F),
- 0x50 => array(0x70),
- 0x51 => array(0x71),
- 0x52 => array(0x72),
- 0x53 => array(0x73),
- 0x54 => array(0x74),
- 0x55 => array(0x75),
- 0x56 => array(0x76),
- 0x57 => array(0x77),
- 0x58 => array(0x78),
- 0x59 => array(0x79),
- 0x5A => array(0x7A),
- 0xB5 => array(0x3BC),
- 0xC0 => array(0xE0),
- 0xC1 => array(0xE1),
- 0xC2 => array(0xE2),
- 0xC3 => array(0xE3),
- 0xC4 => array(0xE4),
- 0xC5 => array(0xE5),
- 0xC6 => array(0xE6),
- 0xC7 => array(0xE7),
- 0xC8 => array(0xE8),
- 0xC9 => array(0xE9),
- 0xCA => array(0xEA),
- 0xCB => array(0xEB),
- 0xCC => array(0xEC),
- 0xCD => array(0xED),
- 0xCE => array(0xEE),
- 0xCF => array(0xEF),
- 0xD0 => array(0xF0),
- 0xD1 => array(0xF1),
- 0xD2 => array(0xF2),
- 0xD3 => array(0xF3),
- 0xD4 => array(0xF4),
- 0xD5 => array(0xF5),
- 0xD6 => array(0xF6),
- 0xD8 => array(0xF8),
- 0xD9 => array(0xF9),
- 0xDA => array(0xFA),
- 0xDB => array(0xFB),
- 0xDC => array(0xFC),
- 0xDD => array(0xFD),
- 0xDE => array(0xFE),
- 0xDF => array(0x73, 0x73),
- 0x100 => array(0x101),
- 0x102 => array(0x103),
- 0x104 => array(0x105),
- 0x106 => array(0x107),
- 0x108 => array(0x109),
- 0x10A => array(0x10B),
- 0x10C => array(0x10D),
- 0x10E => array(0x10F),
- 0x110 => array(0x111),
- 0x112 => array(0x113),
- 0x114 => array(0x115),
- 0x116 => array(0x117),
- 0x118 => array(0x119),
- 0x11A => array(0x11B),
- 0x11C => array(0x11D),
- 0x11E => array(0x11F),
- 0x120 => array(0x121),
- 0x122 => array(0x123),
- 0x124 => array(0x125),
- 0x126 => array(0x127),
- 0x128 => array(0x129),
- 0x12A => array(0x12B),
- 0x12C => array(0x12D),
- 0x12E => array(0x12F),
- 0x130 => array(0x69, 0x307),
- 0x132 => array(0x133),
- 0x134 => array(0x135),
- 0x136 => array(0x137),
- 0x139 => array(0x13A),
- 0x13B => array(0x13C),
- 0x13D => array(0x13E),
- 0x13F => array(0x140),
- 0x141 => array(0x142),
- 0x143 => array(0x144),
- 0x145 => array(0x146),
- 0x147 => array(0x148),
- 0x149 => array(0x2BC, 0x6E),
- 0x14A => array(0x14B),
- 0x14C => array(0x14D),
- 0x14E => array(0x14F),
- 0x150 => array(0x151),
- 0x152 => array(0x153),
- 0x154 => array(0x155),
- 0x156 => array(0x157),
- 0x158 => array(0x159),
- 0x15A => array(0x15B),
- 0x15C => array(0x15D),
- 0x15E => array(0x15F),
- 0x160 => array(0x161),
- 0x162 => array(0x163),
- 0x164 => array(0x165),
- 0x166 => array(0x167),
- 0x168 => array(0x169),
- 0x16A => array(0x16B),
- 0x16C => array(0x16D),
- 0x16E => array(0x16F),
- 0x170 => array(0x171),
- 0x172 => array(0x173),
- 0x174 => array(0x175),
- 0x176 => array(0x177),
- 0x178 => array(0xFF),
- 0x179 => array(0x17A),
- 0x17B => array(0x17C),
- 0x17D => array(0x17E),
- 0x17F => array(0x73),
- 0x181 => array(0x253),
- 0x182 => array(0x183),
- 0x184 => array(0x185),
- 0x186 => array(0x254),
- 0x187 => array(0x188),
- 0x189 => array(0x256),
- 0x18A => array(0x257),
- 0x18B => array(0x18C),
- 0x18E => array(0x1DD),
- 0x18F => array(0x259),
- 0x190 => array(0x25B),
- 0x191 => array(0x192),
- 0x193 => array(0x260),
- 0x194 => array(0x263),
- 0x196 => array(0x269),
- 0x197 => array(0x268),
- 0x198 => array(0x199),
- 0x19C => array(0x26F),
- 0x19D => array(0x272),
- 0x19F => array(0x275),
- 0x1A0 => array(0x1A1),
- 0x1A2 => array(0x1A3),
- 0x1A4 => array(0x1A5),
- 0x1A6 => array(0x280),
- 0x1A7 => array(0x1A8),
- 0x1A9 => array(0x283),
- 0x1AC => array(0x1AD),
- 0x1AE => array(0x288),
- 0x1AF => array(0x1B0),
- 0x1B1 => array(0x28A),
- 0x1B2 => array(0x28B),
- 0x1B3 => array(0x1B4),
- 0x1B5 => array(0x1B6),
- 0x1B7 => array(0x292),
- 0x1B8 => array(0x1B9),
- 0x1BC => array(0x1BD),
- 0x1C4 => array(0x1C6),
- 0x1C5 => array(0x1C6),
- 0x1C7 => array(0x1C9),
- 0x1C8 => array(0x1C9),
- 0x1CA => array(0x1CC),
- 0x1CB => array(0x1CC),
- 0x1CD => array(0x1CE),
- 0x1CF => array(0x1D0),
- 0x1D1 => array(0x1D2),
- 0x1D3 => array(0x1D4),
- 0x1D5 => array(0x1D6),
- 0x1D7 => array(0x1D8),
- 0x1D9 => array(0x1DA),
- 0x1DB => array(0x1DC),
- 0x1DE => array(0x1DF),
- 0x1E0 => array(0x1E1),
- 0x1E2 => array(0x1E3),
- 0x1E4 => array(0x1E5),
- 0x1E6 => array(0x1E7),
- 0x1E8 => array(0x1E9),
- 0x1EA => array(0x1EB),
- 0x1EC => array(0x1ED),
- 0x1EE => array(0x1EF),
- 0x1F0 => array(0x6A, 0x30C),
- 0x1F1 => array(0x1F3),
- 0x1F2 => array(0x1F3),
- 0x1F4 => array(0x1F5),
- 0x1F6 => array(0x195),
- 0x1F7 => array(0x1BF),
- 0x1F8 => array(0x1F9),
- 0x1FA => array(0x1FB),
- 0x1FC => array(0x1FD),
- 0x1FE => array(0x1FF),
- 0x200 => array(0x201),
- 0x202 => array(0x203),
- 0x204 => array(0x205),
- 0x206 => array(0x207),
- 0x208 => array(0x209),
- 0x20A => array(0x20B),
- 0x20C => array(0x20D),
- 0x20E => array(0x20F),
- 0x210 => array(0x211),
- 0x212 => array(0x213),
- 0x214 => array(0x215),
- 0x216 => array(0x217),
- 0x218 => array(0x219),
- 0x21A => array(0x21B),
- 0x21C => array(0x21D),
- 0x21E => array(0x21F),
- 0x220 => array(0x19E),
- 0x222 => array(0x223),
- 0x224 => array(0x225),
- 0x226 => array(0x227),
- 0x228 => array(0x229),
- 0x22A => array(0x22B),
- 0x22C => array(0x22D),
- 0x22E => array(0x22F),
- 0x230 => array(0x231),
- 0x232 => array(0x233),
- 0x345 => array(0x3B9),
- 0x37A => array(0x20, 0x3B9),
- 0x386 => array(0x3AC),
- 0x388 => array(0x3AD),
- 0x389 => array(0x3AE),
- 0x38A => array(0x3AF),
- 0x38C => array(0x3CC),
- 0x38E => array(0x3CD),
- 0x38F => array(0x3CE),
- 0x390 => array(0x3B9, 0x308, 0x301),
- 0x391 => array(0x3B1),
- 0x392 => array(0x3B2),
- 0x393 => array(0x3B3),
- 0x394 => array(0x3B4),
- 0x395 => array(0x3B5),
- 0x396 => array(0x3B6),
- 0x397 => array(0x3B7),
- 0x398 => array(0x3B8),
- 0x399 => array(0x3B9),
- 0x39A => array(0x3BA),
- 0x39B => array(0x3BB),
- 0x39C => array(0x3BC),
- 0x39D => array(0x3BD),
- 0x39E => array(0x3BE),
- 0x39F => array(0x3BF),
- 0x3A0 => array(0x3C0),
- 0x3A1 => array(0x3C1),
- 0x3A3 => array(0x3C3),
- 0x3A4 => array(0x3C4),
- 0x3A5 => array(0x3C5),
- 0x3A6 => array(0x3C6),
- 0x3A7 => array(0x3C7),
- 0x3A8 => array(0x3C8),
- 0x3A9 => array(0x3C9),
- 0x3AA => array(0x3CA),
- 0x3AB => array(0x3CB),
- 0x3B0 => array(0x3C5, 0x308, 0x301),
- 0x3C2 => array(0x3C3),
- 0x3D0 => array(0x3B2),
- 0x3D1 => array(0x3B8),
- 0x3D2 => array(0x3C5),
- 0x3D3 => array(0x3CD),
- 0x3D4 => array(0x3CB),
- 0x3D5 => array(0x3C6),
- 0x3D6 => array(0x3C0),
- 0x3D8 => array(0x3D9),
- 0x3DA => array(0x3DB),
- 0x3DC => array(0x3DD),
- 0x3DE => array(0x3DF),
- 0x3E0 => array(0x3E1),
- 0x3E2 => array(0x3E3),
- 0x3E4 => array(0x3E5),
- 0x3E6 => array(0x3E7),
- 0x3E8 => array(0x3E9),
- 0x3EA => array(0x3EB),
- 0x3EC => array(0x3ED),
- 0x3EE => array(0x3EF),
- 0x3F0 => array(0x3BA),
- 0x3F1 => array(0x3C1),
- 0x3F2 => array(0x3C3),
- 0x3F4 => array(0x3B8),
- 0x3F5 => array(0x3B5),
- 0x400 => array(0x450),
- 0x401 => array(0x451),
- 0x402 => array(0x452),
- 0x403 => array(0x453),
- 0x404 => array(0x454),
- 0x405 => array(0x455),
- 0x406 => array(0x456),
- 0x407 => array(0x457),
- 0x408 => array(0x458),
- 0x409 => array(0x459),
- 0x40A => array(0x45A),
- 0x40B => array(0x45B),
- 0x40C => array(0x45C),
- 0x40D => array(0x45D),
- 0x40E => array(0x45E),
- 0x40F => array(0x45F),
- 0x410 => array(0x430),
- 0x411 => array(0x431),
- 0x412 => array(0x432),
- 0x413 => array(0x433),
- 0x414 => array(0x434),
- 0x415 => array(0x435),
- 0x416 => array(0x436),
- 0x417 => array(0x437),
- 0x418 => array(0x438),
- 0x419 => array(0x439),
- 0x41A => array(0x43A),
- 0x41B => array(0x43B),
- 0x41C => array(0x43C),
- 0x41D => array(0x43D),
- 0x41E => array(0x43E),
- 0x41F => array(0x43F),
- 0x420 => array(0x440),
- 0x421 => array(0x441),
- 0x422 => array(0x442),
- 0x423 => array(0x443),
- 0x424 => array(0x444),
- 0x425 => array(0x445),
- 0x426 => array(0x446),
- 0x427 => array(0x447),
- 0x428 => array(0x448),
- 0x429 => array(0x449),
- 0x42A => array(0x44A),
- 0x42B => array(0x44B),
- 0x42C => array(0x44C),
- 0x42D => array(0x44D),
- 0x42E => array(0x44E),
- 0x42F => array(0x44F),
- 0x460 => array(0x461),
- 0x462 => array(0x463),
- 0x464 => array(0x465),
- 0x466 => array(0x467),
- 0x468 => array(0x469),
- 0x46A => array(0x46B),
- 0x46C => array(0x46D),
- 0x46E => array(0x46F),
- 0x470 => array(0x471),
- 0x472 => array(0x473),
- 0x474 => array(0x475),
- 0x476 => array(0x477),
- 0x478 => array(0x479),
- 0x47A => array(0x47B),
- 0x47C => array(0x47D),
- 0x47E => array(0x47F),
- 0x480 => array(0x481),
- 0x48A => array(0x48B),
- 0x48C => array(0x48D),
- 0x48E => array(0x48F),
- 0x490 => array(0x491),
- 0x492 => array(0x493),
- 0x494 => array(0x495),
- 0x496 => array(0x497),
- 0x498 => array(0x499),
- 0x49A => array(0x49B),
- 0x49C => array(0x49D),
- 0x49E => array(0x49F),
- 0x4A0 => array(0x4A1),
- 0x4A2 => array(0x4A3),
- 0x4A4 => array(0x4A5),
- 0x4A6 => array(0x4A7),
- 0x4A8 => array(0x4A9),
- 0x4AA => array(0x4AB),
- 0x4AC => array(0x4AD),
- 0x4AE => array(0x4AF),
- 0x4B0 => array(0x4B1),
- 0x4B2 => array(0x4B3),
- 0x4B4 => array(0x4B5),
- 0x4B6 => array(0x4B7),
- 0x4B8 => array(0x4B9),
- 0x4BA => array(0x4BB),
- 0x4BC => array(0x4BD),
- 0x4BE => array(0x4BF),
- 0x4C1 => array(0x4C2),
- 0x4C3 => array(0x4C4),
- 0x4C5 => array(0x4C6),
- 0x4C7 => array(0x4C8),
- 0x4C9 => array(0x4CA),
- 0x4CB => array(0x4CC),
- 0x4CD => array(0x4CE),
- 0x4D0 => array(0x4D1),
- 0x4D2 => array(0x4D3),
- 0x4D4 => array(0x4D5),
- 0x4D6 => array(0x4D7),
- 0x4D8 => array(0x4D9),
- 0x4DA => array(0x4DB),
- 0x4DC => array(0x4DD),
- 0x4DE => array(0x4DF),
- 0x4E0 => array(0x4E1),
- 0x4E2 => array(0x4E3),
- 0x4E4 => array(0x4E5),
- 0x4E6 => array(0x4E7),
- 0x4E8 => array(0x4E9),
- 0x4EA => array(0x4EB),
- 0x4EC => array(0x4ED),
- 0x4EE => array(0x4EF),
- 0x4F0 => array(0x4F1),
- 0x4F2 => array(0x4F3),
- 0x4F4 => array(0x4F5),
- 0x4F8 => array(0x4F9),
- 0x500 => array(0x501),
- 0x502 => array(0x503),
- 0x504 => array(0x505),
- 0x506 => array(0x507),
- 0x508 => array(0x509),
- 0x50A => array(0x50B),
- 0x50C => array(0x50D),
- 0x50E => array(0x50F),
- 0x531 => array(0x561),
- 0x532 => array(0x562),
- 0x533 => array(0x563),
- 0x534 => array(0x564),
- 0x535 => array(0x565),
- 0x536 => array(0x566),
- 0x537 => array(0x567),
- 0x538 => array(0x568),
- 0x539 => array(0x569),
- 0x53A => array(0x56A),
- 0x53B => array(0x56B),
- 0x53C => array(0x56C),
- 0x53D => array(0x56D),
- 0x53E => array(0x56E),
- 0x53F => array(0x56F),
- 0x540 => array(0x570),
- 0x541 => array(0x571),
- 0x542 => array(0x572),
- 0x543 => array(0x573),
- 0x544 => array(0x574),
- 0x545 => array(0x575),
- 0x546 => array(0x576),
- 0x547 => array(0x577),
- 0x548 => array(0x578),
- 0x549 => array(0x579),
- 0x54A => array(0x57A),
- 0x54B => array(0x57B),
- 0x54C => array(0x57C),
- 0x54D => array(0x57D),
- 0x54E => array(0x57E),
- 0x54F => array(0x57F),
- 0x550 => array(0x580),
- 0x551 => array(0x581),
- 0x552 => array(0x582),
- 0x553 => array(0x583),
- 0x554 => array(0x584),
- 0x555 => array(0x585),
- 0x556 => array(0x586),
- 0x587 => array(0x565, 0x582),
- 0x1E00 => array(0x1E01),
- 0x1E02 => array(0x1E03),
- 0x1E04 => array(0x1E05),
- 0x1E06 => array(0x1E07),
- 0x1E08 => array(0x1E09),
- 0x1E0A => array(0x1E0B),
- 0x1E0C => array(0x1E0D),
- 0x1E0E => array(0x1E0F),
- 0x1E10 => array(0x1E11),
- 0x1E12 => array(0x1E13),
- 0x1E14 => array(0x1E15),
- 0x1E16 => array(0x1E17),
- 0x1E18 => array(0x1E19),
- 0x1E1A => array(0x1E1B),
- 0x1E1C => array(0x1E1D),
- 0x1E1E => array(0x1E1F),
- 0x1E20 => array(0x1E21),
- 0x1E22 => array(0x1E23),
- 0x1E24 => array(0x1E25),
- 0x1E26 => array(0x1E27),
- 0x1E28 => array(0x1E29),
- 0x1E2A => array(0x1E2B),
- 0x1E2C => array(0x1E2D),
- 0x1E2E => array(0x1E2F),
- 0x1E30 => array(0x1E31),
- 0x1E32 => array(0x1E33),
- 0x1E34 => array(0x1E35),
- 0x1E36 => array(0x1E37),
- 0x1E38 => array(0x1E39),
- 0x1E3A => array(0x1E3B),
- 0x1E3C => array(0x1E3D),
- 0x1E3E => array(0x1E3F),
- 0x1E40 => array(0x1E41),
- 0x1E42 => array(0x1E43),
- 0x1E44 => array(0x1E45),
- 0x1E46 => array(0x1E47),
- 0x1E48 => array(0x1E49),
- 0x1E4A => array(0x1E4B),
- 0x1E4C => array(0x1E4D),
- 0x1E4E => array(0x1E4F),
- 0x1E50 => array(0x1E51),
- 0x1E52 => array(0x1E53),
- 0x1E54 => array(0x1E55),
- 0x1E56 => array(0x1E57),
- 0x1E58 => array(0x1E59),
- 0x1E5A => array(0x1E5B),
- 0x1E5C => array(0x1E5D),
- 0x1E5E => array(0x1E5F),
- 0x1E60 => array(0x1E61),
- 0x1E62 => array(0x1E63),
- 0x1E64 => array(0x1E65),
- 0x1E66 => array(0x1E67),
- 0x1E68 => array(0x1E69),
- 0x1E6A => array(0x1E6B),
- 0x1E6C => array(0x1E6D),
- 0x1E6E => array(0x1E6F),
- 0x1E70 => array(0x1E71),
- 0x1E72 => array(0x1E73),
- 0x1E74 => array(0x1E75),
- 0x1E76 => array(0x1E77),
- 0x1E78 => array(0x1E79),
- 0x1E7A => array(0x1E7B),
- 0x1E7C => array(0x1E7D),
- 0x1E7E => array(0x1E7F),
- 0x1E80 => array(0x1E81),
- 0x1E82 => array(0x1E83),
- 0x1E84 => array(0x1E85),
- 0x1E86 => array(0x1E87),
- 0x1E88 => array(0x1E89),
- 0x1E8A => array(0x1E8B),
- 0x1E8C => array(0x1E8D),
- 0x1E8E => array(0x1E8F),
- 0x1E90 => array(0x1E91),
- 0x1E92 => array(0x1E93),
- 0x1E94 => array(0x1E95),
- 0x1E96 => array(0x68, 0x331),
- 0x1E97 => array(0x74, 0x308),
- 0x1E98 => array(0x77, 0x30A),
- 0x1E99 => array(0x79, 0x30A),
- 0x1E9A => array(0x61, 0x2BE),
- 0x1E9B => array(0x1E61),
- 0x1EA0 => array(0x1EA1),
- 0x1EA2 => array(0x1EA3),
- 0x1EA4 => array(0x1EA5),
- 0x1EA6 => array(0x1EA7),
- 0x1EA8 => array(0x1EA9),
- 0x1EAA => array(0x1EAB),
- 0x1EAC => array(0x1EAD),
- 0x1EAE => array(0x1EAF),
- 0x1EB0 => array(0x1EB1),
- 0x1EB2 => array(0x1EB3),
- 0x1EB4 => array(0x1EB5),
- 0x1EB6 => array(0x1EB7),
- 0x1EB8 => array(0x1EB9),
- 0x1EBA => array(0x1EBB),
- 0x1EBC => array(0x1EBD),
- 0x1EBE => array(0x1EBF),
- 0x1EC0 => array(0x1EC1),
- 0x1EC2 => array(0x1EC3),
- 0x1EC4 => array(0x1EC5),
- 0x1EC6 => array(0x1EC7),
- 0x1EC8 => array(0x1EC9),
- 0x1ECA => array(0x1ECB),
- 0x1ECC => array(0x1ECD),
- 0x1ECE => array(0x1ECF),
- 0x1ED0 => array(0x1ED1),
- 0x1ED2 => array(0x1ED3),
- 0x1ED4 => array(0x1ED5),
- 0x1ED6 => array(0x1ED7),
- 0x1ED8 => array(0x1ED9),
- 0x1EDA => array(0x1EDB),
- 0x1EDC => array(0x1EDD),
- 0x1EDE => array(0x1EDF),
- 0x1EE0 => array(0x1EE1),
- 0x1EE2 => array(0x1EE3),
- 0x1EE4 => array(0x1EE5),
- 0x1EE6 => array(0x1EE7),
- 0x1EE8 => array(0x1EE9),
- 0x1EEA => array(0x1EEB),
- 0x1EEC => array(0x1EED),
- 0x1EEE => array(0x1EEF),
- 0x1EF0 => array(0x1EF1),
- 0x1EF2 => array(0x1EF3),
- 0x1EF4 => array(0x1EF5),
- 0x1EF6 => array(0x1EF7),
- 0x1EF8 => array(0x1EF9),
- 0x1F08 => array(0x1F00),
- 0x1F09 => array(0x1F01),
- 0x1F0A => array(0x1F02),
- 0x1F0B => array(0x1F03),
- 0x1F0C => array(0x1F04),
- 0x1F0D => array(0x1F05),
- 0x1F0E => array(0x1F06),
- 0x1F0F => array(0x1F07),
- 0x1F18 => array(0x1F10),
- 0x1F19 => array(0x1F11),
- 0x1F1A => array(0x1F12),
- 0x1F1B => array(0x1F13),
- 0x1F1C => array(0x1F14),
- 0x1F1D => array(0x1F15),
- 0x1F28 => array(0x1F20),
- 0x1F29 => array(0x1F21),
- 0x1F2A => array(0x1F22),
- 0x1F2B => array(0x1F23),
- 0x1F2C => array(0x1F24),
- 0x1F2D => array(0x1F25),
- 0x1F2E => array(0x1F26),
- 0x1F2F => array(0x1F27),
- 0x1F38 => array(0x1F30),
- 0x1F39 => array(0x1F31),
- 0x1F3A => array(0x1F32),
- 0x1F3B => array(0x1F33),
- 0x1F3C => array(0x1F34),
- 0x1F3D => array(0x1F35),
- 0x1F3E => array(0x1F36),
- 0x1F3F => array(0x1F37),
- 0x1F48 => array(0x1F40),
- 0x1F49 => array(0x1F41),
- 0x1F4A => array(0x1F42),
- 0x1F4B => array(0x1F43),
- 0x1F4C => array(0x1F44),
- 0x1F4D => array(0x1F45),
- 0x1F50 => array(0x3C5, 0x313),
- 0x1F52 => array(0x3C5, 0x313, 0x300),
- 0x1F54 => array(0x3C5, 0x313, 0x301),
- 0x1F56 => array(0x3C5, 0x313, 0x342),
- 0x1F59 => array(0x1F51),
- 0x1F5B => array(0x1F53),
- 0x1F5D => array(0x1F55),
- 0x1F5F => array(0x1F57),
- 0x1F68 => array(0x1F60),
- 0x1F69 => array(0x1F61),
- 0x1F6A => array(0x1F62),
- 0x1F6B => array(0x1F63),
- 0x1F6C => array(0x1F64),
- 0x1F6D => array(0x1F65),
- 0x1F6E => array(0x1F66),
- 0x1F6F => array(0x1F67),
- 0x1F80 => array(0x1F00, 0x3B9),
- 0x1F81 => array(0x1F01, 0x3B9),
- 0x1F82 => array(0x1F02, 0x3B9),
- 0x1F83 => array(0x1F03, 0x3B9),
- 0x1F84 => array(0x1F04, 0x3B9),
- 0x1F85 => array(0x1F05, 0x3B9),
- 0x1F86 => array(0x1F06, 0x3B9),
- 0x1F87 => array(0x1F07, 0x3B9),
- 0x1F88 => array(0x1F00, 0x3B9),
- 0x1F89 => array(0x1F01, 0x3B9),
- 0x1F8A => array(0x1F02, 0x3B9),
- 0x1F8B => array(0x1F03, 0x3B9),
- 0x1F8C => array(0x1F04, 0x3B9),
- 0x1F8D => array(0x1F05, 0x3B9),
- 0x1F8E => array(0x1F06, 0x3B9),
- 0x1F8F => array(0x1F07, 0x3B9),
- 0x1F90 => array(0x1F20, 0x3B9),
- 0x1F91 => array(0x1F21, 0x3B9),
- 0x1F92 => array(0x1F22, 0x3B9),
- 0x1F93 => array(0x1F23, 0x3B9),
- 0x1F94 => array(0x1F24, 0x3B9),
- 0x1F95 => array(0x1F25, 0x3B9),
- 0x1F96 => array(0x1F26, 0x3B9),
- 0x1F97 => array(0x1F27, 0x3B9),
- 0x1F98 => array(0x1F20, 0x3B9),
- 0x1F99 => array(0x1F21, 0x3B9),
- 0x1F9A => array(0x1F22, 0x3B9),
- 0x1F9B => array(0x1F23, 0x3B9),
- 0x1F9C => array(0x1F24, 0x3B9),
- 0x1F9D => array(0x1F25, 0x3B9),
- 0x1F9E => array(0x1F26, 0x3B9),
- 0x1F9F => array(0x1F27, 0x3B9),
- 0x1FA0 => array(0x1F60, 0x3B9),
- 0x1FA1 => array(0x1F61, 0x3B9),
- 0x1FA2 => array(0x1F62, 0x3B9),
- 0x1FA3 => array(0x1F63, 0x3B9),
- 0x1FA4 => array(0x1F64, 0x3B9),
- 0x1FA5 => array(0x1F65, 0x3B9),
- 0x1FA6 => array(0x1F66, 0x3B9),
- 0x1FA7 => array(0x1F67, 0x3B9),
- 0x1FA8 => array(0x1F60, 0x3B9),
- 0x1FA9 => array(0x1F61, 0x3B9),
- 0x1FAA => array(0x1F62, 0x3B9),
- 0x1FAB => array(0x1F63, 0x3B9),
- 0x1FAC => array(0x1F64, 0x3B9),
- 0x1FAD => array(0x1F65, 0x3B9),
- 0x1FAE => array(0x1F66, 0x3B9),
- 0x1FAF => array(0x1F67, 0x3B9),
- 0x1FB2 => array(0x1F70, 0x3B9),
- 0x1FB3 => array(0x3B1, 0x3B9),
- 0x1FB4 => array(0x3AC, 0x3B9),
- 0x1FB6 => array(0x3B1, 0x342),
- 0x1FB7 => array(0x3B1, 0x342, 0x3B9),
- 0x1FB8 => array(0x1FB0),
- 0x1FB9 => array(0x1FB1),
- 0x1FBA => array(0x1F70),
- 0x1FBB => array(0x1F71),
- 0x1FBC => array(0x3B1, 0x3B9),
- 0x1FBE => array(0x3B9),
- 0x1FC2 => array(0x1F74, 0x3B9),
- 0x1FC3 => array(0x3B7, 0x3B9),
- 0x1FC4 => array(0x3AE, 0x3B9),
- 0x1FC6 => array(0x3B7, 0x342),
- 0x1FC7 => array(0x3B7, 0x342, 0x3B9),
- 0x1FC8 => array(0x1F72),
- 0x1FC9 => array(0x1F73),
- 0x1FCA => array(0x1F74),
- 0x1FCB => array(0x1F75),
- 0x1FCC => array(0x3B7, 0x3B9),
- 0x1FD2 => array(0x3B9, 0x308, 0x300),
- 0x1FD3 => array(0x3B9, 0x308, 0x301),
- 0x1FD6 => array(0x3B9, 0x342),
- 0x1FD7 => array(0x3B9, 0x308, 0x342),
- 0x1FD8 => array(0x1FD0),
- 0x1FD9 => array(0x1FD1),
- 0x1FDA => array(0x1F76),
- 0x1FDB => array(0x1F77),
- 0x1FE2 => array(0x3C5, 0x308, 0x300),
- 0x1FE3 => array(0x3C5, 0x308, 0x301),
- 0x1FE4 => array(0x3C1, 0x313),
- 0x1FE6 => array(0x3C5, 0x342),
- 0x1FE7 => array(0x3C5, 0x308, 0x342),
- 0x1FE8 => array(0x1FE0),
- 0x1FE9 => array(0x1FE1),
- 0x1FEA => array(0x1F7A),
- 0x1FEB => array(0x1F7B),
- 0x1FEC => array(0x1FE5),
- 0x1FF2 => array(0x1F7C, 0x3B9),
- 0x1FF3 => array(0x3C9, 0x3B9),
- 0x1FF4 => array(0x3CE, 0x3B9),
- 0x1FF6 => array(0x3C9, 0x342),
- 0x1FF7 => array(0x3C9, 0x342, 0x3B9),
- 0x1FF8 => array(0x1F78),
- 0x1FF9 => array(0x1F79),
- 0x1FFA => array(0x1F7C),
- 0x1FFB => array(0x1F7D),
- 0x1FFC => array(0x3C9, 0x3B9),
- 0x20A8 => array(0x72, 0x73),
- 0x2102 => array(0x63),
- 0x2103 => array(0xB0, 0x63),
- 0x2107 => array(0x25B),
- 0x2109 => array(0xB0, 0x66),
- 0x210B => array(0x68),
- 0x210C => array(0x68),
- 0x210D => array(0x68),
- 0x2110 => array(0x69),
- 0x2111 => array(0x69),
- 0x2112 => array(0x6C),
- 0x2115 => array(0x6E),
- 0x2116 => array(0x6E, 0x6F),
- 0x2119 => array(0x70),
- 0x211A => array(0x71),
- 0x211B => array(0x72),
- 0x211C => array(0x72),
- 0x211D => array(0x72),
- 0x2120 => array(0x73, 0x6D),
- 0x2121 => array(0x74, 0x65, 0x6C),
- 0x2122 => array(0x74, 0x6D),
- 0x2124 => array(0x7A),
- 0x2126 => array(0x3C9),
- 0x2128 => array(0x7A),
- 0x212A => array(0x6B),
- 0x212B => array(0xE5),
- 0x212C => array(0x62),
- 0x212D => array(0x63),
- 0x2130 => array(0x65),
- 0x2131 => array(0x66),
- 0x2133 => array(0x6D),
- 0x213E => array(0x3B3),
- 0x213F => array(0x3C0),
- 0x2145 => array(0x64),
- 0x2160 => array(0x2170),
- 0x2161 => array(0x2171),
- 0x2162 => array(0x2172),
- 0x2163 => array(0x2173),
- 0x2164 => array(0x2174),
- 0x2165 => array(0x2175),
- 0x2166 => array(0x2176),
- 0x2167 => array(0x2177),
- 0x2168 => array(0x2178),
- 0x2169 => array(0x2179),
- 0x216A => array(0x217A),
- 0x216B => array(0x217B),
- 0x216C => array(0x217C),
- 0x216D => array(0x217D),
- 0x216E => array(0x217E),
- 0x216F => array(0x217F),
- 0x24B6 => array(0x24D0),
- 0x24B7 => array(0x24D1),
- 0x24B8 => array(0x24D2),
- 0x24B9 => array(0x24D3),
- 0x24BA => array(0x24D4),
- 0x24BB => array(0x24D5),
- 0x24BC => array(0x24D6),
- 0x24BD => array(0x24D7),
- 0x24BE => array(0x24D8),
- 0x24BF => array(0x24D9),
- 0x24C0 => array(0x24DA),
- 0x24C1 => array(0x24DB),
- 0x24C2 => array(0x24DC),
- 0x24C3 => array(0x24DD),
- 0x24C4 => array(0x24DE),
- 0x24C5 => array(0x24DF),
- 0x24C6 => array(0x24E0),
- 0x24C7 => array(0x24E1),
- 0x24C8 => array(0x24E2),
- 0x24C9 => array(0x24E3),
- 0x24CA => array(0x24E4),
- 0x24CB => array(0x24E5),
- 0x24CC => array(0x24E6),
- 0x24CD => array(0x24E7),
- 0x24CE => array(0x24E8),
- 0x24CF => array(0x24E9),
- 0x3371 => array(0x68, 0x70, 0x61),
- 0x3373 => array(0x61, 0x75),
- 0x3375 => array(0x6F, 0x76),
- 0x3380 => array(0x70, 0x61),
- 0x3381 => array(0x6E, 0x61),
- 0x3382 => array(0x3BC, 0x61),
- 0x3383 => array(0x6D, 0x61),
- 0x3384 => array(0x6B, 0x61),
- 0x3385 => array(0x6B, 0x62),
- 0x3386 => array(0x6D, 0x62),
- 0x3387 => array(0x67, 0x62),
- 0x338A => array(0x70, 0x66),
- 0x338B => array(0x6E, 0x66),
- 0x338C => array(0x3BC, 0x66),
- 0x3390 => array(0x68, 0x7A),
- 0x3391 => array(0x6B, 0x68, 0x7A),
- 0x3392 => array(0x6D, 0x68, 0x7A),
- 0x3393 => array(0x67, 0x68, 0x7A),
- 0x3394 => array(0x74, 0x68, 0x7A),
- 0x33A9 => array(0x70, 0x61),
- 0x33AA => array(0x6B, 0x70, 0x61),
- 0x33AB => array(0x6D, 0x70, 0x61),
- 0x33AC => array(0x67, 0x70, 0x61),
- 0x33B4 => array(0x70, 0x76),
- 0x33B5 => array(0x6E, 0x76),
- 0x33B6 => array(0x3BC, 0x76),
- 0x33B7 => array(0x6D, 0x76),
- 0x33B8 => array(0x6B, 0x76),
- 0x33B9 => array(0x6D, 0x76),
- 0x33BA => array(0x70, 0x77),
- 0x33BB => array(0x6E, 0x77),
- 0x33BC => array(0x3BC, 0x77),
- 0x33BD => array(0x6D, 0x77),
- 0x33BE => array(0x6B, 0x77),
- 0x33BF => array(0x6D, 0x77),
- 0x33C0 => array(0x6B, 0x3C9),
- 0x33C1 => array(0x6D, 0x3C9),
- /* 0x33C2 => array(0x61, 0x2E, 0x6D, 0x2E), */
- 0x33C3 => array(0x62, 0x71),
- 0x33C6 => array(0x63, 0x2215, 0x6B, 0x67),
- 0x33C7 => array(0x63, 0x6F, 0x2E),
- 0x33C8 => array(0x64, 0x62),
- 0x33C9 => array(0x67, 0x79),
- 0x33CB => array(0x68, 0x70),
- 0x33CD => array(0x6B, 0x6B),
- 0x33CE => array(0x6B, 0x6D),
- 0x33D7 => array(0x70, 0x68),
- 0x33D9 => array(0x70, 0x70, 0x6D),
- 0x33DA => array(0x70, 0x72),
- 0x33DC => array(0x73, 0x76),
- 0x33DD => array(0x77, 0x62),
- 0xFB00 => array(0x66, 0x66),
- 0xFB01 => array(0x66, 0x69),
- 0xFB02 => array(0x66, 0x6C),
- 0xFB03 => array(0x66, 0x66, 0x69),
- 0xFB04 => array(0x66, 0x66, 0x6C),
- 0xFB05 => array(0x73, 0x74),
- 0xFB06 => array(0x73, 0x74),
- 0xFB13 => array(0x574, 0x576),
- 0xFB14 => array(0x574, 0x565),
- 0xFB15 => array(0x574, 0x56B),
- 0xFB16 => array(0x57E, 0x576),
- 0xFB17 => array(0x574, 0x56D),
- 0xFF21 => array(0xFF41),
- 0xFF22 => array(0xFF42),
- 0xFF23 => array(0xFF43),
- 0xFF24 => array(0xFF44),
- 0xFF25 => array(0xFF45),
- 0xFF26 => array(0xFF46),
- 0xFF27 => array(0xFF47),
- 0xFF28 => array(0xFF48),
- 0xFF29 => array(0xFF49),
- 0xFF2A => array(0xFF4A),
- 0xFF2B => array(0xFF4B),
- 0xFF2C => array(0xFF4C),
- 0xFF2D => array(0xFF4D),
- 0xFF2E => array(0xFF4E),
- 0xFF2F => array(0xFF4F),
- 0xFF30 => array(0xFF50),
- 0xFF31 => array(0xFF51),
- 0xFF32 => array(0xFF52),
- 0xFF33 => array(0xFF53),
- 0xFF34 => array(0xFF54),
- 0xFF35 => array(0xFF55),
- 0xFF36 => array(0xFF56),
- 0xFF37 => array(0xFF57),
- 0xFF38 => array(0xFF58),
- 0xFF39 => array(0xFF59),
- 0xFF3A => array(0xFF5A),
- 0x10400 => array(0x10428),
- 0x10401 => array(0x10429),
- 0x10402 => array(0x1042A),
- 0x10403 => array(0x1042B),
- 0x10404 => array(0x1042C),
- 0x10405 => array(0x1042D),
- 0x10406 => array(0x1042E),
- 0x10407 => array(0x1042F),
- 0x10408 => array(0x10430),
- 0x10409 => array(0x10431),
- 0x1040A => array(0x10432),
- 0x1040B => array(0x10433),
- 0x1040C => array(0x10434),
- 0x1040D => array(0x10435),
- 0x1040E => array(0x10436),
- 0x1040F => array(0x10437),
- 0x10410 => array(0x10438),
- 0x10411 => array(0x10439),
- 0x10412 => array(0x1043A),
- 0x10413 => array(0x1043B),
- 0x10414 => array(0x1043C),
- 0x10415 => array(0x1043D),
- 0x10416 => array(0x1043E),
- 0x10417 => array(0x1043F),
- 0x10418 => array(0x10440),
- 0x10419 => array(0x10441),
- 0x1041A => array(0x10442),
- 0x1041B => array(0x10443),
- 0x1041C => array(0x10444),
- 0x1041D => array(0x10445),
- 0x1041E => array(0x10446),
- 0x1041F => array(0x10447),
- 0x10420 => array(0x10448),
- 0x10421 => array(0x10449),
- 0x10422 => array(0x1044A),
- 0x10423 => array(0x1044B),
- 0x10424 => array(0x1044C),
- 0x10425 => array(0x1044D),
- 0x1D400 => array(0x61),
- 0x1D401 => array(0x62),
- 0x1D402 => array(0x63),
- 0x1D403 => array(0x64),
- 0x1D404 => array(0x65),
- 0x1D405 => array(0x66),
- 0x1D406 => array(0x67),
- 0x1D407 => array(0x68),
- 0x1D408 => array(0x69),
- 0x1D409 => array(0x6A),
- 0x1D40A => array(0x6B),
- 0x1D40B => array(0x6C),
- 0x1D40C => array(0x6D),
- 0x1D40D => array(0x6E),
- 0x1D40E => array(0x6F),
- 0x1D40F => array(0x70),
- 0x1D410 => array(0x71),
- 0x1D411 => array(0x72),
- 0x1D412 => array(0x73),
- 0x1D413 => array(0x74),
- 0x1D414 => array(0x75),
- 0x1D415 => array(0x76),
- 0x1D416 => array(0x77),
- 0x1D417 => array(0x78),
- 0x1D418 => array(0x79),
- 0x1D419 => array(0x7A),
- 0x1D434 => array(0x61),
- 0x1D435 => array(0x62),
- 0x1D436 => array(0x63),
- 0x1D437 => array(0x64),
- 0x1D438 => array(0x65),
- 0x1D439 => array(0x66),
- 0x1D43A => array(0x67),
- 0x1D43B => array(0x68),
- 0x1D43C => array(0x69),
- 0x1D43D => array(0x6A),
- 0x1D43E => array(0x6B),
- 0x1D43F => array(0x6C),
- 0x1D440 => array(0x6D),
- 0x1D441 => array(0x6E),
- 0x1D442 => array(0x6F),
- 0x1D443 => array(0x70),
- 0x1D444 => array(0x71),
- 0x1D445 => array(0x72),
- 0x1D446 => array(0x73),
- 0x1D447 => array(0x74),
- 0x1D448 => array(0x75),
- 0x1D449 => array(0x76),
- 0x1D44A => array(0x77),
- 0x1D44B => array(0x78),
- 0x1D44C => array(0x79),
- 0x1D44D => array(0x7A),
- 0x1D468 => array(0x61),
- 0x1D469 => array(0x62),
- 0x1D46A => array(0x63),
- 0x1D46B => array(0x64),
- 0x1D46C => array(0x65),
- 0x1D46D => array(0x66),
- 0x1D46E => array(0x67),
- 0x1D46F => array(0x68),
- 0x1D470 => array(0x69),
- 0x1D471 => array(0x6A),
- 0x1D472 => array(0x6B),
- 0x1D473 => array(0x6C),
- 0x1D474 => array(0x6D),
- 0x1D475 => array(0x6E),
- 0x1D476 => array(0x6F),
- 0x1D477 => array(0x70),
- 0x1D478 => array(0x71),
- 0x1D479 => array(0x72),
- 0x1D47A => array(0x73),
- 0x1D47B => array(0x74),
- 0x1D47C => array(0x75),
- 0x1D47D => array(0x76),
- 0x1D47E => array(0x77),
- 0x1D47F => array(0x78),
- 0x1D480 => array(0x79),
- 0x1D481 => array(0x7A),
- 0x1D49C => array(0x61),
- 0x1D49E => array(0x63),
- 0x1D49F => array(0x64),
- 0x1D4A2 => array(0x67),
- 0x1D4A5 => array(0x6A),
- 0x1D4A6 => array(0x6B),
- 0x1D4A9 => array(0x6E),
- 0x1D4AA => array(0x6F),
- 0x1D4AB => array(0x70),
- 0x1D4AC => array(0x71),
- 0x1D4AE => array(0x73),
- 0x1D4AF => array(0x74),
- 0x1D4B0 => array(0x75),
- 0x1D4B1 => array(0x76),
- 0x1D4B2 => array(0x77),
- 0x1D4B3 => array(0x78),
- 0x1D4B4 => array(0x79),
- 0x1D4B5 => array(0x7A),
- 0x1D4D0 => array(0x61),
- 0x1D4D1 => array(0x62),
- 0x1D4D2 => array(0x63),
- 0x1D4D3 => array(0x64),
- 0x1D4D4 => array(0x65),
- 0x1D4D5 => array(0x66),
- 0x1D4D6 => array(0x67),
- 0x1D4D7 => array(0x68),
- 0x1D4D8 => array(0x69),
- 0x1D4D9 => array(0x6A),
- 0x1D4DA => array(0x6B),
- 0x1D4DB => array(0x6C),
- 0x1D4DC => array(0x6D),
- 0x1D4DD => array(0x6E),
- 0x1D4DE => array(0x6F),
- 0x1D4DF => array(0x70),
- 0x1D4E0 => array(0x71),
- 0x1D4E1 => array(0x72),
- 0x1D4E2 => array(0x73),
- 0x1D4E3 => array(0x74),
- 0x1D4E4 => array(0x75),
- 0x1D4E5 => array(0x76),
- 0x1D4E6 => array(0x77),
- 0x1D4E7 => array(0x78),
- 0x1D4E8 => array(0x79),
- 0x1D4E9 => array(0x7A),
- 0x1D504 => array(0x61),
- 0x1D505 => array(0x62),
- 0x1D507 => array(0x64),
- 0x1D508 => array(0x65),
- 0x1D509 => array(0x66),
- 0x1D50A => array(0x67),
- 0x1D50D => array(0x6A),
- 0x1D50E => array(0x6B),
- 0x1D50F => array(0x6C),
- 0x1D510 => array(0x6D),
- 0x1D511 => array(0x6E),
- 0x1D512 => array(0x6F),
- 0x1D513 => array(0x70),
- 0x1D514 => array(0x71),
- 0x1D516 => array(0x73),
- 0x1D517 => array(0x74),
- 0x1D518 => array(0x75),
- 0x1D519 => array(0x76),
- 0x1D51A => array(0x77),
- 0x1D51B => array(0x78),
- 0x1D51C => array(0x79),
- 0x1D538 => array(0x61),
- 0x1D539 => array(0x62),
- 0x1D53B => array(0x64),
- 0x1D53C => array(0x65),
- 0x1D53D => array(0x66),
- 0x1D53E => array(0x67),
- 0x1D540 => array(0x69),
- 0x1D541 => array(0x6A),
- 0x1D542 => array(0x6B),
- 0x1D543 => array(0x6C),
- 0x1D544 => array(0x6D),
- 0x1D546 => array(0x6F),
- 0x1D54A => array(0x73),
- 0x1D54B => array(0x74),
- 0x1D54C => array(0x75),
- 0x1D54D => array(0x76),
- 0x1D54E => array(0x77),
- 0x1D54F => array(0x78),
- 0x1D550 => array(0x79),
- 0x1D56C => array(0x61),
- 0x1D56D => array(0x62),
- 0x1D56E => array(0x63),
- 0x1D56F => array(0x64),
- 0x1D570 => array(0x65),
- 0x1D571 => array(0x66),
- 0x1D572 => array(0x67),
- 0x1D573 => array(0x68),
- 0x1D574 => array(0x69),
- 0x1D575 => array(0x6A),
- 0x1D576 => array(0x6B),
- 0x1D577 => array(0x6C),
- 0x1D578 => array(0x6D),
- 0x1D579 => array(0x6E),
- 0x1D57A => array(0x6F),
- 0x1D57B => array(0x70),
- 0x1D57C => array(0x71),
- 0x1D57D => array(0x72),
- 0x1D57E => array(0x73),
- 0x1D57F => array(0x74),
- 0x1D580 => array(0x75),
- 0x1D581 => array(0x76),
- 0x1D582 => array(0x77),
- 0x1D583 => array(0x78),
- 0x1D584 => array(0x79),
- 0x1D585 => array(0x7A),
- 0x1D5A0 => array(0x61),
- 0x1D5A1 => array(0x62),
- 0x1D5A2 => array(0x63),
- 0x1D5A3 => array(0x64),
- 0x1D5A4 => array(0x65),
- 0x1D5A5 => array(0x66),
- 0x1D5A6 => array(0x67),
- 0x1D5A7 => array(0x68),
- 0x1D5A8 => array(0x69),
- 0x1D5A9 => array(0x6A),
- 0x1D5AA => array(0x6B),
- 0x1D5AB => array(0x6C),
- 0x1D5AC => array(0x6D),
- 0x1D5AD => array(0x6E),
- 0x1D5AE => array(0x6F),
- 0x1D5AF => array(0x70),
- 0x1D5B0 => array(0x71),
- 0x1D5B1 => array(0x72),
- 0x1D5B2 => array(0x73),
- 0x1D5B3 => array(0x74),
- 0x1D5B4 => array(0x75),
- 0x1D5B5 => array(0x76),
- 0x1D5B6 => array(0x77),
- 0x1D5B7 => array(0x78),
- 0x1D5B8 => array(0x79),
- 0x1D5B9 => array(0x7A),
- 0x1D5D4 => array(0x61),
- 0x1D5D5 => array(0x62),
- 0x1D5D6 => array(0x63),
- 0x1D5D7 => array(0x64),
- 0x1D5D8 => array(0x65),
- 0x1D5D9 => array(0x66),
- 0x1D5DA => array(0x67),
- 0x1D5DB => array(0x68),
- 0x1D5DC => array(0x69),
- 0x1D5DD => array(0x6A),
- 0x1D5DE => array(0x6B),
- 0x1D5DF => array(0x6C),
- 0x1D5E0 => array(0x6D),
- 0x1D5E1 => array(0x6E),
- 0x1D5E2 => array(0x6F),
- 0x1D5E3 => array(0x70),
- 0x1D5E4 => array(0x71),
- 0x1D5E5 => array(0x72),
- 0x1D5E6 => array(0x73),
- 0x1D5E7 => array(0x74),
- 0x1D5E8 => array(0x75),
- 0x1D5E9 => array(0x76),
- 0x1D5EA => array(0x77),
- 0x1D5EB => array(0x78),
- 0x1D5EC => array(0x79),
- 0x1D5ED => array(0x7A),
- 0x1D608 => array(0x61),
- 0x1D609 => array(0x62),
- 0x1D60A => array(0x63),
- 0x1D60B => array(0x64),
- 0x1D60C => array(0x65),
- 0x1D60D => array(0x66),
- 0x1D60E => array(0x67),
- 0x1D60F => array(0x68),
- 0x1D610 => array(0x69),
- 0x1D611 => array(0x6A),
- 0x1D612 => array(0x6B),
- 0x1D613 => array(0x6C),
- 0x1D614 => array(0x6D),
- 0x1D615 => array(0x6E),
- 0x1D616 => array(0x6F),
- 0x1D617 => array(0x70),
- 0x1D618 => array(0x71),
- 0x1D619 => array(0x72),
- 0x1D61A => array(0x73),
- 0x1D61B => array(0x74),
- 0x1D61C => array(0x75),
- 0x1D61D => array(0x76),
- 0x1D61E => array(0x77),
- 0x1D61F => array(0x78),
- 0x1D620 => array(0x79),
- 0x1D621 => array(0x7A),
- 0x1D63C => array(0x61),
- 0x1D63D => array(0x62),
- 0x1D63E => array(0x63),
- 0x1D63F => array(0x64),
- 0x1D640 => array(0x65),
- 0x1D641 => array(0x66),
- 0x1D642 => array(0x67),
- 0x1D643 => array(0x68),
- 0x1D644 => array(0x69),
- 0x1D645 => array(0x6A),
- 0x1D646 => array(0x6B),
- 0x1D647 => array(0x6C),
- 0x1D648 => array(0x6D),
- 0x1D649 => array(0x6E),
- 0x1D64A => array(0x6F),
- 0x1D64B => array(0x70),
- 0x1D64C => array(0x71),
- 0x1D64D => array(0x72),
- 0x1D64E => array(0x73),
- 0x1D64F => array(0x74),
- 0x1D650 => array(0x75),
- 0x1D651 => array(0x76),
- 0x1D652 => array(0x77),
- 0x1D653 => array(0x78),
- 0x1D654 => array(0x79),
- 0x1D655 => array(0x7A),
- 0x1D670 => array(0x61),
- 0x1D671 => array(0x62),
- 0x1D672 => array(0x63),
- 0x1D673 => array(0x64),
- 0x1D674 => array(0x65),
- 0x1D675 => array(0x66),
- 0x1D676 => array(0x67),
- 0x1D677 => array(0x68),
- 0x1D678 => array(0x69),
- 0x1D679 => array(0x6A),
- 0x1D67A => array(0x6B),
- 0x1D67B => array(0x6C),
- 0x1D67C => array(0x6D),
- 0x1D67D => array(0x6E),
- 0x1D67E => array(0x6F),
- 0x1D67F => array(0x70),
- 0x1D680 => array(0x71),
- 0x1D681 => array(0x72),
- 0x1D682 => array(0x73),
- 0x1D683 => array(0x74),
- 0x1D684 => array(0x75),
- 0x1D685 => array(0x76),
- 0x1D686 => array(0x77),
- 0x1D687 => array(0x78),
- 0x1D688 => array(0x79),
- 0x1D689 => array(0x7A),
- 0x1D6A8 => array(0x3B1),
- 0x1D6A9 => array(0x3B2),
- 0x1D6AA => array(0x3B3),
- 0x1D6AB => array(0x3B4),
- 0x1D6AC => array(0x3B5),
- 0x1D6AD => array(0x3B6),
- 0x1D6AE => array(0x3B7),
- 0x1D6AF => array(0x3B8),
- 0x1D6B0 => array(0x3B9),
- 0x1D6B1 => array(0x3BA),
- 0x1D6B2 => array(0x3BB),
- 0x1D6B3 => array(0x3BC),
- 0x1D6B4 => array(0x3BD),
- 0x1D6B5 => array(0x3BE),
- 0x1D6B6 => array(0x3BF),
- 0x1D6B7 => array(0x3C0),
- 0x1D6B8 => array(0x3C1),
- 0x1D6B9 => array(0x3B8),
- 0x1D6BA => array(0x3C3),
- 0x1D6BB => array(0x3C4),
- 0x1D6BC => array(0x3C5),
- 0x1D6BD => array(0x3C6),
- 0x1D6BE => array(0x3C7),
- 0x1D6BF => array(0x3C8),
- 0x1D6C0 => array(0x3C9),
- 0x1D6D3 => array(0x3C3),
- 0x1D6E2 => array(0x3B1),
- 0x1D6E3 => array(0x3B2),
- 0x1D6E4 => array(0x3B3),
- 0x1D6E5 => array(0x3B4),
- 0x1D6E6 => array(0x3B5),
- 0x1D6E7 => array(0x3B6),
- 0x1D6E8 => array(0x3B7),
- 0x1D6E9 => array(0x3B8),
- 0x1D6EA => array(0x3B9),
- 0x1D6EB => array(0x3BA),
- 0x1D6EC => array(0x3BB),
- 0x1D6ED => array(0x3BC),
- 0x1D6EE => array(0x3BD),
- 0x1D6EF => array(0x3BE),
- 0x1D6F0 => array(0x3BF),
- 0x1D6F1 => array(0x3C0),
- 0x1D6F2 => array(0x3C1),
- 0x1D6F3 => array(0x3B8),
- 0x1D6F4 => array(0x3C3),
- 0x1D6F5 => array(0x3C4),
- 0x1D6F6 => array(0x3C5),
- 0x1D6F7 => array(0x3C6),
- 0x1D6F8 => array(0x3C7),
- 0x1D6F9 => array(0x3C8),
- 0x1D6FA => array(0x3C9),
- 0x1D70D => array(0x3C3),
- 0x1D71C => array(0x3B1),
- 0x1D71D => array(0x3B2),
- 0x1D71E => array(0x3B3),
- 0x1D71F => array(0x3B4),
- 0x1D720 => array(0x3B5),
- 0x1D721 => array(0x3B6),
- 0x1D722 => array(0x3B7),
- 0x1D723 => array(0x3B8),
- 0x1D724 => array(0x3B9),
- 0x1D725 => array(0x3BA),
- 0x1D726 => array(0x3BB),
- 0x1D727 => array(0x3BC),
- 0x1D728 => array(0x3BD),
- 0x1D729 => array(0x3BE),
- 0x1D72A => array(0x3BF),
- 0x1D72B => array(0x3C0),
- 0x1D72C => array(0x3C1),
- 0x1D72D => array(0x3B8),
- 0x1D72E => array(0x3C3),
- 0x1D72F => array(0x3C4),
- 0x1D730 => array(0x3C5),
- 0x1D731 => array(0x3C6),
- 0x1D732 => array(0x3C7),
- 0x1D733 => array(0x3C8),
- 0x1D734 => array(0x3C9),
- 0x1D747 => array(0x3C3),
- 0x1D756 => array(0x3B1),
- 0x1D757 => array(0x3B2),
- 0x1D758 => array(0x3B3),
- 0x1D759 => array(0x3B4),
- 0x1D75A => array(0x3B5),
- 0x1D75B => array(0x3B6),
- 0x1D75C => array(0x3B7),
- 0x1D75D => array(0x3B8),
- 0x1D75E => array(0x3B9),
- 0x1D75F => array(0x3BA),
- 0x1D760 => array(0x3BB),
- 0x1D761 => array(0x3BC),
- 0x1D762 => array(0x3BD),
- 0x1D763 => array(0x3BE),
- 0x1D764 => array(0x3BF),
- 0x1D765 => array(0x3C0),
- 0x1D766 => array(0x3C1),
- 0x1D767 => array(0x3B8),
- 0x1D768 => array(0x3C3),
- 0x1D769 => array(0x3C4),
- 0x1D76A => array(0x3C5),
- 0x1D76B => array(0x3C6),
- 0x1D76C => array(0x3C7),
- 0x1D76D => array(0x3C8),
- 0x1D76E => array(0x3C9),
- 0x1D781 => array(0x3C3),
- 0x1D790 => array(0x3B1),
- 0x1D791 => array(0x3B2),
- 0x1D792 => array(0x3B3),
- 0x1D793 => array(0x3B4),
- 0x1D794 => array(0x3B5),
- 0x1D795 => array(0x3B6),
- 0x1D796 => array(0x3B7),
- 0x1D797 => array(0x3B8),
- 0x1D798 => array(0x3B9),
- 0x1D799 => array(0x3BA),
- 0x1D79A => array(0x3BB),
- 0x1D79B => array(0x3BC),
- 0x1D79C => array(0x3BD),
- 0x1D79D => array(0x3BE),
- 0x1D79E => array(0x3BF),
- 0x1D79F => array(0x3C0),
- 0x1D7A0 => array(0x3C1),
- 0x1D7A1 => array(0x3B8),
- 0x1D7A2 => array(0x3C3),
- 0x1D7A3 => array(0x3C4),
- 0x1D7A4 => array(0x3C5),
- 0x1D7A5 => array(0x3C6),
- 0x1D7A6 => array(0x3C7),
- 0x1D7A7 => array(0x3C8),
- 0x1D7A8 => array(0x3C9),
- 0x1D7BB => array(0x3C3),
- 0x3F9 => array(0x3C3),
- 0x1D2C => array(0x61),
- 0x1D2D => array(0xE6),
- 0x1D2E => array(0x62),
- 0x1D30 => array(0x64),
- 0x1D31 => array(0x65),
- 0x1D32 => array(0x1DD),
- 0x1D33 => array(0x67),
- 0x1D34 => array(0x68),
- 0x1D35 => array(0x69),
- 0x1D36 => array(0x6A),
- 0x1D37 => array(0x6B),
- 0x1D38 => array(0x6C),
- 0x1D39 => array(0x6D),
- 0x1D3A => array(0x6E),
- 0x1D3C => array(0x6F),
- 0x1D3D => array(0x223),
- 0x1D3E => array(0x70),
- 0x1D3F => array(0x72),
- 0x1D40 => array(0x74),
- 0x1D41 => array(0x75),
- 0x1D42 => array(0x77),
- 0x213B => array(0x66, 0x61, 0x78),
- 0x3250 => array(0x70, 0x74, 0x65),
- 0x32CC => array(0x68, 0x67),
- 0x32CE => array(0x65, 0x76),
- 0x32CF => array(0x6C, 0x74, 0x64),
- 0x337A => array(0x69, 0x75),
- 0x33DE => array(0x76, 0x2215, 0x6D),
- 0x33DF => array(0x61, 0x2215, 0x6D)
- );
-
- /**
- * Normalization Combining Classes; Code Points not listed
- * got Combining Class 0.
- *
- * @static
- * @var array
- * @access private
- */
- private static $_np_norm_combcls = array(
- 0x334 => 1,
- 0x335 => 1,
- 0x336 => 1,
- 0x337 => 1,
- 0x338 => 1,
- 0x93C => 7,
- 0x9BC => 7,
- 0xA3C => 7,
- 0xABC => 7,
- 0xB3C => 7,
- 0xCBC => 7,
- 0x1037 => 7,
- 0x3099 => 8,
- 0x309A => 8,
- 0x94D => 9,
- 0x9CD => 9,
- 0xA4D => 9,
- 0xACD => 9,
- 0xB4D => 9,
- 0xBCD => 9,
- 0xC4D => 9,
- 0xCCD => 9,
- 0xD4D => 9,
- 0xDCA => 9,
- 0xE3A => 9,
- 0xF84 => 9,
- 0x1039 => 9,
- 0x1714 => 9,
- 0x1734 => 9,
- 0x17D2 => 9,
- 0x5B0 => 10,
- 0x5B1 => 11,
- 0x5B2 => 12,
- 0x5B3 => 13,
- 0x5B4 => 14,
- 0x5B5 => 15,
- 0x5B6 => 16,
- 0x5B7 => 17,
- 0x5B8 => 18,
- 0x5B9 => 19,
- 0x5BB => 20,
- 0x5Bc => 21,
- 0x5BD => 22,
- 0x5BF => 23,
- 0x5C1 => 24,
- 0x5C2 => 25,
- 0xFB1E => 26,
- 0x64B => 27,
- 0x64C => 28,
- 0x64D => 29,
- 0x64E => 30,
- 0x64F => 31,
- 0x650 => 32,
- 0x651 => 33,
- 0x652 => 34,
- 0x670 => 35,
- 0x711 => 36,
- 0xC55 => 84,
- 0xC56 => 91,
- 0xE38 => 103,
- 0xE39 => 103,
- 0xE48 => 107,
- 0xE49 => 107,
- 0xE4A => 107,
- 0xE4B => 107,
- 0xEB8 => 118,
- 0xEB9 => 118,
- 0xEC8 => 122,
- 0xEC9 => 122,
- 0xECA => 122,
- 0xECB => 122,
- 0xF71 => 129,
- 0xF72 => 130,
- 0xF7A => 130,
- 0xF7B => 130,
- 0xF7C => 130,
- 0xF7D => 130,
- 0xF80 => 130,
- 0xF74 => 132,
- 0x321 => 202,
- 0x322 => 202,
- 0x327 => 202,
- 0x328 => 202,
- 0x31B => 216,
- 0xF39 => 216,
- 0x1D165 => 216,
- 0x1D166 => 216,
- 0x1D16E => 216,
- 0x1D16F => 216,
- 0x1D170 => 216,
- 0x1D171 => 216,
- 0x1D172 => 216,
- 0x302A => 218,
- 0x316 => 220,
- 0x317 => 220,
- 0x318 => 220,
- 0x319 => 220,
- 0x31C => 220,
- 0x31D => 220,
- 0x31E => 220,
- 0x31F => 220,
- 0x320 => 220,
- 0x323 => 220,
- 0x324 => 220,
- 0x325 => 220,
- 0x326 => 220,
- 0x329 => 220,
- 0x32A => 220,
- 0x32B => 220,
- 0x32C => 220,
- 0x32D => 220,
- 0x32E => 220,
- 0x32F => 220,
- 0x330 => 220,
- 0x331 => 220,
- 0x332 => 220,
- 0x333 => 220,
- 0x339 => 220,
- 0x33A => 220,
- 0x33B => 220,
- 0x33C => 220,
- 0x347 => 220,
- 0x348 => 220,
- 0x349 => 220,
- 0x34D => 220,
- 0x34E => 220,
- 0x353 => 220,
- 0x354 => 220,
- 0x355 => 220,
- 0x356 => 220,
- 0x591 => 220,
- 0x596 => 220,
- 0x59B => 220,
- 0x5A3 => 220,
- 0x5A4 => 220,
- 0x5A5 => 220,
- 0x5A6 => 220,
- 0x5A7 => 220,
- 0x5AA => 220,
- 0x655 => 220,
- 0x656 => 220,
- 0x6E3 => 220,
- 0x6EA => 220,
- 0x6ED => 220,
- 0x731 => 220,
- 0x734 => 220,
- 0x737 => 220,
- 0x738 => 220,
- 0x739 => 220,
- 0x73B => 220,
- 0x73C => 220,
- 0x73E => 220,
- 0x742 => 220,
- 0x744 => 220,
- 0x746 => 220,
- 0x748 => 220,
- 0x952 => 220,
- 0xF18 => 220,
- 0xF19 => 220,
- 0xF35 => 220,
- 0xF37 => 220,
- 0xFC6 => 220,
- 0x193B => 220,
- 0x20E8 => 220,
- 0x1D17B => 220,
- 0x1D17C => 220,
- 0x1D17D => 220,
- 0x1D17E => 220,
- 0x1D17F => 220,
- 0x1D180 => 220,
- 0x1D181 => 220,
- 0x1D182 => 220,
- 0x1D18A => 220,
- 0x1D18B => 220,
- 0x59A => 222,
- 0x5AD => 222,
- 0x1929 => 222,
- 0x302D => 222,
- 0x302E => 224,
- 0x302F => 224,
- 0x1D16D => 226,
- 0x5AE => 228,
- 0x18A9 => 228,
- 0x302B => 228,
- 0x300 => 230,
- 0x301 => 230,
- 0x302 => 230,
- 0x303 => 230,
- 0x304 => 230,
- 0x305 => 230,
- 0x306 => 230,
- 0x307 => 230,
- 0x308 => 230,
- 0x309 => 230,
- 0x30A => 230,
- 0x30B => 230,
- 0x30C => 230,
- 0x30D => 230,
- 0x30E => 230,
- 0x30F => 230,
- 0x310 => 230,
- 0x311 => 230,
- 0x312 => 230,
- 0x313 => 230,
- 0x314 => 230,
- 0x33D => 230,
- 0x33E => 230,
- 0x33F => 230,
- 0x340 => 230,
- 0x341 => 230,
- 0x342 => 230,
- 0x343 => 230,
- 0x344 => 230,
- 0x346 => 230,
- 0x34A => 230,
- 0x34B => 230,
- 0x34C => 230,
- 0x350 => 230,
- 0x351 => 230,
- 0x352 => 230,
- 0x357 => 230,
- 0x363 => 230,
- 0x364 => 230,
- 0x365 => 230,
- 0x366 => 230,
- 0x367 => 230,
- 0x368 => 230,
- 0x369 => 230,
- 0x36A => 230,
- 0x36B => 230,
- 0x36C => 230,
- 0x36D => 230,
- 0x36E => 230,
- 0x36F => 230,
- 0x483 => 230,
- 0x484 => 230,
- 0x485 => 230,
- 0x486 => 230,
- 0x592 => 230,
- 0x593 => 230,
- 0x594 => 230,
- 0x595 => 230,
- 0x597 => 230,
- 0x598 => 230,
- 0x599 => 230,
- 0x59C => 230,
- 0x59D => 230,
- 0x59E => 230,
- 0x59F => 230,
- 0x5A0 => 230,
- 0x5A1 => 230,
- 0x5A8 => 230,
- 0x5A9 => 230,
- 0x5AB => 230,
- 0x5AC => 230,
- 0x5AF => 230,
- 0x5C4 => 230,
- 0x610 => 230,
- 0x611 => 230,
- 0x612 => 230,
- 0x613 => 230,
- 0x614 => 230,
- 0x615 => 230,
- 0x653 => 230,
- 0x654 => 230,
- 0x657 => 230,
- 0x658 => 230,
- 0x6D6 => 230,
- 0x6D7 => 230,
- 0x6D8 => 230,
- 0x6D9 => 230,
- 0x6DA => 230,
- 0x6DB => 230,
- 0x6DC => 230,
- 0x6DF => 230,
- 0x6E0 => 230,
- 0x6E1 => 230,
- 0x6E2 => 230,
- 0x6E4 => 230,
- 0x6E7 => 230,
- 0x6E8 => 230,
- 0x6EB => 230,
- 0x6EC => 230,
- 0x730 => 230,
- 0x732 => 230,
- 0x733 => 230,
- 0x735 => 230,
- 0x736 => 230,
- 0x73A => 230,
- 0x73D => 230,
- 0x73F => 230,
- 0x740 => 230,
- 0x741 => 230,
- 0x743 => 230,
- 0x745 => 230,
- 0x747 => 230,
- 0x749 => 230,
- 0x74A => 230,
- 0x951 => 230,
- 0x953 => 230,
- 0x954 => 230,
- 0xF82 => 230,
- 0xF83 => 230,
- 0xF86 => 230,
- 0xF87 => 230,
- 0x170D => 230,
- 0x193A => 230,
- 0x20D0 => 230,
- 0x20D1 => 230,
- 0x20D4 => 230,
- 0x20D5 => 230,
- 0x20D6 => 230,
- 0x20D7 => 230,
- 0x20DB => 230,
- 0x20DC => 230,
- 0x20E1 => 230,
- 0x20E7 => 230,
- 0x20E9 => 230,
- 0xFE20 => 230,
- 0xFE21 => 230,
- 0xFE22 => 230,
- 0xFE23 => 230,
- 0x1D185 => 230,
- 0x1D186 => 230,
- 0x1D187 => 230,
- 0x1D189 => 230,
- 0x1D188 => 230,
- 0x1D1AA => 230,
- 0x1D1AB => 230,
- 0x1D1AC => 230,
- 0x1D1AD => 230,
- 0x315 => 232,
- 0x31A => 232,
- 0x302C => 232,
- 0x35F => 233,
- 0x362 => 233,
- 0x35D => 234,
- 0x35E => 234,
- 0x360 => 234,
- 0x361 => 234,
- 0x345 => 240
- );
- // }}}
-
- // {{{ properties
- /**
- * @var string
- * @access private
- */
- private $_punycode_prefix = 'xn--';
-
- /**
- * @access private
- */
- private $_invalid_ucs = 0x80000000;
-
- /**
- * @access private
- */
- private $_max_ucs = 0x10FFFF;
-
- /**
- * @var int
- * @access private
- */
- private $_base = 36;
-
- /**
- * @var int
- * @access private
- */
- private $_tmin = 1;
-
- /**
- * @var int
- * @access private
- */
- private $_tmax = 26;
-
- /**
- * @var int
- * @access private
- */
- private $_skew = 38;
-
- /**
- * @var int
- * @access private
- */
- private $_damp = 700;
-
- /**
- * @var int
- * @access private
- */
- private $_initial_bias = 72;
-
- /**
- * @var int
- * @access private
- */
- private $_initial_n = 0x80;
-
- /**
- * @var int
- * @access private
- */
- private $_slast;
-
- /**
- * @access private
- */
- private $_sbase = 0xAC00;
-
- /**
- * @access private
- */
- private $_lbase = 0x1100;
-
- /**
- * @access private
- */
- private $_vbase = 0x1161;
-
- /**
- * @access private
- */
- private $_tbase = 0x11a7;
-
- /**
- * @var int
- * @access private
- */
- private $_lcount = 19;
-
- /**
- * @var int
- * @access private
- */
- private $_vcount = 21;
-
- /**
- * @var int
- * @access private
- */
- private $_tcount = 28;
-
- /**
- * vcount * tcount
- *
- * @var int
- * @access private
- */
- private $_ncount = 588;
-
- /**
- * lcount * tcount * vcount
- *
- * @var int
- * @access private
- */
- private $_scount = 11172;
-
- /**
- * Default encoding for encode()'s input and decode()'s output is UTF-8;
- * Other possible encodings are ucs4_string and ucs4_array
- * See {@link setParams()} for how to select these
- *
- * @var bool
- * @access private
- */
- private $_api_encoding = 'utf8';
-
- /**
- * Overlong UTF-8 encodings are forbidden
- *
- * @var bool
- * @access private
- */
- private $_allow_overlong = false;
-
- /**
- * Behave strict or not
- *
- * @var bool
- * @access private
- */
- private $_strict_mode = false;
-
- /**
- * IDNA-version to use
- *
- * Values are "2003" and "2008".
- * Defaults to "2003", since that was the original version and for
- * compatibility with previous versions of this library.
- * If you need to encode "new" characters like the German "Eszett",
- * please switch to 2008 first before encoding.
- *
- * @var bool
- * @access private
- */
- private $_version = '2003';
-
- /**
- * Cached value indicating whether or not mbstring function overloading is
- * on for strlen
- *
- * This is cached for optimal performance.
- *
- * @var boolean
- * @see Net_IDNA2::_byteLength()
- */
- private static $_mb_string_overload = null;
- // }}}
-
-
- // {{{ constructor
- /**
- * Constructor
- *
- * @param array $options Options to initialise the object with
- *
- * @access public
- * @see setParams()
- */
- public function __construct($options = null)
- {
- $this->_slast = $this->_sbase + $this->_lcount * $this->_vcount * $this->_tcount;
-
- if (is_array($options)) {
- $this->setParams($options);
- }
-
- // populate mbstring overloading cache if not set
- if (self::$_mb_string_overload === null) {
- self::$_mb_string_overload = (extension_loaded('mbstring')
- && (ini_get('mbstring.func_overload') & 0x02) === 0x02);
- }
- }
- // }}}
-
-
- /**
- * Sets a new option value. Available options and values:
- *
- * [utf8 - Use either UTF-8 or ISO-8859-1 as input (true for UTF-8, false
- * otherwise); The output is always UTF-8]
- * [overlong - Unicode does not allow unnecessarily long encodings of chars,
- * to allow this, set this parameter to true, else to false;
- * default is false.]
- * [strict - true: strict mode, good for registration purposes - Causes errors
- * on failures; false: loose mode, ideal for "wildlife" applications
- * by silently ignoring errors and returning the original input instead]
- *
- * @param mixed $option Parameter to set (string: single parameter; array of Parameter => Value pairs)
- * @param string $value Value to use (if parameter 1 is a string)
- *
- * @return boolean true on success, false otherwise
- * @access public
- */
- public function setParams($option, $value = false)
- {
- if (!is_array($option)) {
- $option = array($option => $value);
- }
-
- foreach ($option as $k => $v) {
- switch ($k) {
- case 'encoding':
- switch ($v) {
- case 'utf8':
- case 'ucs4_string':
- case 'ucs4_array':
- $this->_api_encoding = $v;
- break;
-
- default:
- throw new InvalidArgumentException('Set Parameter: Unknown parameter '.$v.' for option '.$k);
- }
-
- break;
-
- case 'overlong':
- $this->_allow_overlong = ($v) ? true : false;
- break;
-
- case 'strict':
- $this->_strict_mode = ($v) ? true : false;
- break;
-
- case 'version':
- if (in_array($v, array('2003', '2008'))) {
- $this->_version = $v;
- } else {
- throw new InvalidArgumentException('Set Parameter: Invalid parameter '.$v.' for option '.$k);
- }
- break;
-
- default:
- return false;
- }
- }
-
- return true;
- }
-
- /**
- * Encode a given UTF-8 domain name.
- *
- * @param string $decoded Domain name (UTF-8 or UCS-4)
- * @param string $one_time_encoding Desired input encoding, see {@link set_parameter}
- * If not given will use default-encoding
- *
- * @return string Encoded Domain name (ACE string)
- * @return mixed processed string
- * @throws Exception
- * @access public
- */
- public function encode($decoded, $one_time_encoding = false)
- {
- // Forcing conversion of input to UCS4 array
- // If one time encoding is given, use this, else the objects property
- switch (($one_time_encoding) ? $one_time_encoding : $this->_api_encoding) {
- case 'utf8':
- $decoded = $this->_utf8_to_ucs4($decoded);
- break;
- case 'ucs4_string':
- $decoded = $this->_ucs4_string_to_ucs4($decoded);
- case 'ucs4_array': // No break; before this line. Catch case, but do nothing
- break;
- default:
- throw new InvalidArgumentException('Unsupported input format');
- }
-
- // No input, no output, what else did you expect?
- if (empty($decoded)) return '';
-
- // Anchors for iteration
- $last_begin = 0;
- // Output string
- $output = '';
-
- foreach ($decoded as $k => $v) {
- // Make sure to use just the plain dot
- switch($v) {
- case 0x3002:
- case 0xFF0E:
- case 0xFF61:
- $decoded[$k] = 0x2E;
- // It's right, no break here
- // The codepoints above have to be converted to dots anyway
-
- // Stumbling across an anchoring character
- case 0x2E:
- case 0x2F:
- case 0x3A:
- case 0x3F:
- case 0x40:
- // Neither email addresses nor URLs allowed in strict mode
- if ($this->_strict_mode) {
- throw new InvalidArgumentException('Neither email addresses nor URLs are allowed in strict mode.');
- }
- // Skip first char
- if ($k) {
- $encoded = '';
- $encoded = $this->_encode(array_slice($decoded, $last_begin, (($k)-$last_begin)));
- if ($encoded) {
- $output .= $encoded;
- } else {
- $output .= $this->_ucs4_to_utf8(array_slice($decoded, $last_begin, (($k)-$last_begin)));
- }
- $output .= chr($decoded[$k]);
- }
- $last_begin = $k + 1;
- }
- }
- // Catch the rest of the string
- if ($last_begin) {
- $inp_len = sizeof($decoded);
- $encoded = '';
- $encoded = $this->_encode(array_slice($decoded, $last_begin, (($inp_len)-$last_begin)));
- if ($encoded) {
- $output .= $encoded;
- } else {
- $output .= $this->_ucs4_to_utf8(array_slice($decoded, $last_begin, (($inp_len)-$last_begin)));
- }
- return $output;
- }
-
- if ($output = $this->_encode($decoded)) {
- return $output;
- }
-
- return $this->_ucs4_to_utf8($decoded);
- }
-
- /**
- * Decode a given ACE domain name.
- *
- * @param string $input Domain name (ACE string)
- * @param string $one_time_encoding Desired output encoding, see {@link set_parameter}
- *
- * @return string Decoded Domain name (UTF-8 or UCS-4)
- * @throws Exception
- * @access public
- */
- public function decode($input, $one_time_encoding = false)
- {
- // Optionally set
- if ($one_time_encoding) {
- switch ($one_time_encoding) {
- case 'utf8':
- case 'ucs4_string':
- case 'ucs4_array':
- break;
- default:
- throw new InvalidArgumentException('Unknown encoding '.$one_time_encoding);
- }
- }
- // Make sure to drop any newline characters around
- $input = trim($input);
-
- // Negotiate input and try to determine, wether it is a plain string,
- // an email address or something like a complete URL
- if (strpos($input, '@')) { // Maybe it is an email address
- // No no in strict mode
- if ($this->_strict_mode) {
- throw new InvalidArgumentException('Only simple domain name parts can be handled in strict mode');
- }
- list($email_pref, $input) = explode('@', $input, 2);
- $arr = explode('.', $input);
- foreach ($arr as $k => $v) {
- $conv = $this->_decode($v);
- if ($conv) $arr[$k] = $conv;
- }
- $return = $email_pref . '@' . join('.', $arr);
- } elseif (preg_match('![:\./]!', $input)) { // Or a complete domain name (with or without paths / parameters)
- // No no in strict mode
- if ($this->_strict_mode) {
- throw new InvalidArgumentException('Only simple domain name parts can be handled in strict mode');
- }
-
- $parsed = parse_url($input);
- if (isset($parsed['host'])) {
- $arr = explode('.', $parsed['host']);
- foreach ($arr as $k => $v) {
- $conv = $this->_decode($v);
- if ($conv) $arr[$k] = $conv;
- }
- $parsed['host'] = join('.', $arr);
- if (isset($parsed['scheme'])) {
- $parsed['scheme'] .= (strtolower($parsed['scheme']) == 'mailto') ? ':' : '://';
- }
- $return = $this->_unparse_url($parsed);
- } else { // parse_url seems to have failed, try without it
- $arr = explode('.', $input);
- foreach ($arr as $k => $v) {
- $conv = $this->_decode($v);
- if ($conv) $arr[$k] = $conv;
- }
- $return = join('.', $arr);
- }
- } else { // Otherwise we consider it being a pure domain name string
- $return = $this->_decode($input);
- }
- // The output is UTF-8 by default, other output formats need conversion here
- // If one time encoding is given, use this, else the objects property
- switch (($one_time_encoding) ? $one_time_encoding : $this->_api_encoding) {
- case 'utf8':
- return $return;
- break;
- case 'ucs4_string':
- return $this->_ucs4_to_ucs4_string($this->_utf8_to_ucs4($return));
- break;
- case 'ucs4_array':
- return $this->_utf8_to_ucs4($return);
- break;
- default:
- throw new InvalidArgumentException('Unsupported output format');
- }
- }
-
-
- // {{{ private
- /**
- * Opposite function to parse_url()
- *
- * Inspired by code from comments of php.net-documentation for parse_url()
- *
- * @param array $parts_arr parts (strings) as returned by parse_url()
- *
- * @return string
- * @access private
- */
- private function _unparse_url($parts_arr)
- {
- if (!empty($parts_arr['scheme'])) {
- $ret_url = $parts_arr['scheme'];
- }
- if (!empty($parts_arr['user'])) {
- $ret_url .= $parts_arr['user'];
- if (!empty($parts_arr['pass'])) {
- $ret_url .= ':' . $parts_arr['pass'];
- }
- $ret_url .= '@';
- }
- $ret_url .= $parts_arr['host'];
- if (!empty($parts_arr['port'])) {
- $ret_url .= ':' . $parts_arr['port'];
- }
- $ret_url .= $parts_arr['path'];
- if (!empty($parts_arr['query'])) {
- $ret_url .= '?' . $parts_arr['query'];
- }
- if (!empty($parts_arr['fragment'])) {
- $ret_url .= '#' . $parts_arr['fragment'];
- }
- return $ret_url;
- }
-
- /**
- * The actual encoding algorithm.
- *
- * @param string $decoded Decoded string which should be encoded
- *
- * @return string Encoded string
- * @throws Exception
- * @access private
- */
- private function _encode($decoded)
- {
- // We cannot encode a domain name containing the Punycode prefix
- $extract = self::_byteLength($this->_punycode_prefix);
- $check_pref = $this->_utf8_to_ucs4($this->_punycode_prefix);
- $check_deco = array_slice($decoded, 0, $extract);
-
- if ($check_pref == $check_deco) {
- throw new InvalidArgumentException('This is already a punycode string');
- }
-
- // We will not try to encode strings consisting of basic code points only
- $encodable = false;
- foreach ($decoded as $k => $v) {
- if ($v > 0x7a) {
- $encodable = true;
- break;
- }
- }
- if (!$encodable) {
- if ($this->_strict_mode) {
- throw new InvalidArgumentException('The given string does not contain encodable chars');
- }
-
- return false;
- }
-
- // Do NAMEPREP
- $decoded = $this->_nameprep($decoded);
-
- $deco_len = count($decoded);
-
- // Empty array
- if (!$deco_len) {
- return false;
- }
-
- // How many chars have been consumed
- $codecount = 0;
-
- // Start with the prefix; copy it to output
- $encoded = $this->_punycode_prefix;
-
- $encoded = '';
- // Copy all basic code points to output
- for ($i = 0; $i < $deco_len; ++$i) {
- $test = $decoded[$i];
- // Will match [0-9a-zA-Z-]
- if ((0x2F < $test && $test < 0x40)
- || (0x40 < $test && $test < 0x5B)
- || (0x60 < $test && $test <= 0x7B)
- || (0x2D == $test)
- ) {
- $encoded .= chr($decoded[$i]);
- $codecount++;
- }
- }
-
- // All codepoints were basic ones
- if ($codecount == $deco_len) {
- return $encoded;
- }
-
- // Start with the prefix; copy it to output
- $encoded = $this->_punycode_prefix . $encoded;
-
- // If we have basic code points in output, add an hyphen to the end
- if ($codecount) {
- $encoded .= '-';
- }
-
- // Now find and encode all non-basic code points
- $is_first = true;
- $cur_code = $this->_initial_n;
- $bias = $this->_initial_bias;
- $delta = 0;
-
- while ($codecount < $deco_len) {
- // Find the smallest code point >= the current code point and
- // remember the last ouccrence of it in the input
- for ($i = 0, $next_code = $this->_max_ucs; $i < $deco_len; $i++) {
- if ($decoded[$i] >= $cur_code && $decoded[$i] <= $next_code) {
- $next_code = $decoded[$i];
- }
- }
-
- $delta += ($next_code - $cur_code) * ($codecount + 1);
- $cur_code = $next_code;
-
- // Scan input again and encode all characters whose code point is $cur_code
- for ($i = 0; $i < $deco_len; $i++) {
- if ($decoded[$i] < $cur_code) {
- $delta++;
- } else if ($decoded[$i] == $cur_code) {
- for ($q = $delta, $k = $this->_base; 1; $k += $this->_base) {
- $t = ($k <= $bias)?
- $this->_tmin :
- (($k >= $bias + $this->_tmax)? $this->_tmax : $k - $bias);
-
- if ($q < $t) {
- break;
- }
-
- $encoded .= $this->_encodeDigit(ceil($t + (($q - $t) % ($this->_base - $t))));
- $q = ($q - $t) / ($this->_base - $t);
- }
-
- $encoded .= $this->_encodeDigit($q);
- $bias = $this->_adapt($delta, $codecount + 1, $is_first);
- $codecount++;
- $delta = 0;
- $is_first = false;
- }
- }
-
- $delta++;
- $cur_code++;
- }
-
- return $encoded;
- }
-
- /**
- * The actual decoding algorithm.
- *
- * @param string $encoded Encoded string which should be decoded
- *
- * @return string Decoded string
- * @throws Exception
- * @access private
- */
- private function _decode($encoded)
- {
- // We do need to find the Punycode prefix
- if (!preg_match('!^' . preg_quote($this->_punycode_prefix, '!') . '!', $encoded)) {
- return false;
- }
-
- $encode_test = preg_replace('!^' . preg_quote($this->_punycode_prefix, '!') . '!', '', $encoded);
-
- // If nothing left after removing the prefix, it is hopeless
- if (!$encode_test) {
- return false;
- }
-
- // Find last occurence of the delimiter
- $delim_pos = strrpos($encoded, '-');
-
- if ($delim_pos > self::_byteLength($this->_punycode_prefix)) {
- for ($k = self::_byteLength($this->_punycode_prefix); $k < $delim_pos; ++$k) {
- $decoded[] = ord($encoded{$k});
- }
- } else {
- $decoded = array();
- }
-
- $deco_len = count($decoded);
- $enco_len = self::_byteLength($encoded);
-
- // Wandering through the strings; init
- $is_first = true;
- $bias = $this->_initial_bias;
- $idx = 0;
- $char = $this->_initial_n;
-
- for ($enco_idx = ($delim_pos)? ($delim_pos + 1) : 0; $enco_idx < $enco_len; ++$deco_len) {
- for ($old_idx = $idx, $w = 1, $k = $this->_base; 1 ; $k += $this->_base) {
- $digit = $this->_decodeDigit($encoded{$enco_idx++});
- $idx += $digit * $w;
-
- $t = ($k <= $bias) ?
- $this->_tmin :
- (($k >= $bias + $this->_tmax)? $this->_tmax : ($k - $bias));
-
- if ($digit < $t) {
- break;
- }
-
- $w = (int)($w * ($this->_base - $t));
- }
-
- $bias = $this->_adapt($idx - $old_idx, $deco_len + 1, $is_first);
- $is_first = false;
- $char += (int) ($idx / ($deco_len + 1));
- $idx %= ($deco_len + 1);
-
- if ($deco_len > 0) {
- // Make room for the decoded char
- for ($i = $deco_len; $i > $idx; $i--) {
- $decoded[$i] = $decoded[($i - 1)];
- }
- }
-
- $decoded[$idx++] = $char;
- }
-
- return $this->_ucs4_to_utf8($decoded);
- }
-
- /**
- * Adapt the bias according to the current code point and position.
- *
- * @param int $delta ...
- * @param int $npoints ...
- * @param boolean $is_first ...
- *
- * @return int
- * @access private
- */
- private function _adapt($delta, $npoints, $is_first)
- {
- $delta = (int) ($is_first ? ($delta / $this->_damp) : ($delta / 2));
- $delta += (int) ($delta / $npoints);
-
- for ($k = 0; $delta > (($this->_base - $this->_tmin) * $this->_tmax) / 2; $k += $this->_base) {
- $delta = (int) ($delta / ($this->_base - $this->_tmin));
- }
-
- return (int) ($k + ($this->_base - $this->_tmin + 1) * $delta / ($delta + $this->_skew));
- }
-
- /**
- * Encoding a certain digit.
- *
- * @param int $d One digit to encode
- *
- * @return char Encoded digit
- * @access private
- */
- private function _encodeDigit($d)
- {
- return chr($d + 22 + 75 * ($d < 26));
- }
-
- /**
- * Decode a certain digit.
- *
- * @param char $cp One digit (character) to decode
- *
- * @return int Decoded digit
- * @access private
- */
- private function _decodeDigit($cp)
- {
- $cp = ord($cp);
- return ($cp - 48 < 10)? $cp - 22 : (($cp - 65 < 26)? $cp - 65 : (($cp - 97 < 26)? $cp - 97 : $this->_base));
- }
-
- /**
- * Do Nameprep according to RFC3491 and RFC3454.
- *
- * @param array $input Unicode Characters
- *
- * @return string Unicode Characters, Nameprep'd
- * @throws Exception
- * @access private
- */
- private function _nameprep($input)
- {
- $output = array();
-
- // Walking through the input array, performing the required steps on each of
- // the input chars and putting the result into the output array
- // While mapping required chars we apply the cannonical ordering
-
- foreach ($input as $v) {
- // Map to nothing == skip that code point
- if (in_array($v, self::$_np_map_nothing)) {
- continue;
- }
-
- // Try to find prohibited input
- if (in_array($v, self::$_np_prohibit) || in_array($v, self::$_general_prohibited)) {
- throw new Net_IDNA2_Exception_Nameprep('Prohibited input U+' . sprintf('%08X', $v));
- }
-
- foreach (self::$_np_prohibit_ranges as $range) {
- if ($range[0] <= $v && $v <= $range[1]) {
- throw new Net_IDNA2_Exception_Nameprep('Prohibited input U+' . sprintf('%08X', $v));
- }
- }
-
- // Hangul syllable decomposition
- if (0xAC00 <= $v && $v <= 0xD7AF) {
- foreach ($this->_hangulDecompose($v) as $out) {
- $output[] = $out;
- }
- } else if (($this->_version == '2003') && isset(self::$_np_replacemaps[$v])) {
- // There's a decomposition mapping for that code point
- // Decompositions only in version 2003 (original) of IDNA
- foreach ($this->_applyCannonicalOrdering(self::$_np_replacemaps[$v]) as $out) {
- $output[] = $out;
- }
- } else {
- $output[] = $v;
- }
- }
-
- // Combine code points
-
- $last_class = 0;
- $last_starter = 0;
- $out_len = count($output);
-
- for ($i = 0; $i < $out_len; ++$i) {
- $class = $this->_getCombiningClass($output[$i]);
-
- if ((!$last_class || $last_class != $class) && $class) {
- // Try to match
- $seq_len = $i - $last_starter;
- $out = $this->_combine(array_slice($output, $last_starter, $seq_len));
-
- // On match: Replace the last starter with the composed character and remove
- // the now redundant non-starter(s)
- if ($out) {
- $output[$last_starter] = $out;
-
- if (count($out) != $seq_len) {
- for ($j = $i + 1; $j < $out_len; ++$j) {
- $output[$j - 1] = $output[$j];
- }
-
- unset($output[$out_len]);
- }
-
- // Rewind the for loop by one, since there can be more possible compositions
- $i--;
- $out_len--;
- $last_class = ($i == $last_starter)? 0 : $this->_getCombiningClass($output[$i - 1]);
-
- continue;
- }
- }
-
- // The current class is 0
- if (!$class) {
- $last_starter = $i;
- }
-
- $last_class = $class;
- }
-
- return $output;
- }
-
- /**
- * Decomposes a Hangul syllable
- * (see http://www.unicode.org/unicode/reports/tr15/#Hangul).
- *
- * @param integer $char 32bit UCS4 code point
- *
- * @return array Either Hangul Syllable decomposed or original 32bit
- * value as one value array
- * @access private
- */
- private function _hangulDecompose($char)
- {
- $sindex = $char - $this->_sbase;
-
- if ($sindex < 0 || $sindex >= $this->_scount) {
- return array($char);
- }
-
- $result = array();
- $T = $this->_tbase + $sindex % $this->_tcount;
- $result[] = (int)($this->_lbase + $sindex / $this->_ncount);
- $result[] = (int)($this->_vbase + ($sindex % $this->_ncount) / $this->_tcount);
-
- if ($T != $this->_tbase) {
- $result[] = $T;
- }
-
- return $result;
- }
-
- /**
- * Ccomposes a Hangul syllable
- * (see http://www.unicode.org/unicode/reports/tr15/#Hangul).
- *
- * @param array $input Decomposed UCS4 sequence
- *
- * @return array UCS4 sequence with syllables composed
- * @access private
- */
- private function _hangulCompose($input)
- {
- $inp_len = count($input);
-
- if (!$inp_len) {
- return array();
- }
-
- $result = array();
- $last = $input[0];
- $result[] = $last; // copy first char from input to output
-
- for ($i = 1; $i < $inp_len; ++$i) {
- $char = $input[$i];
-
- // Find out, wether two current characters from L and V
- $lindex = $last - $this->_lbase;
-
- if (0 <= $lindex && $lindex < $this->_lcount) {
- $vindex = $char - $this->_vbase;
-
- if (0 <= $vindex && $vindex < $this->_vcount) {
- // create syllable of form LV
- $last = ($this->_sbase + ($lindex * $this->_vcount + $vindex) * $this->_tcount);
- $out_off = count($result) - 1;
- $result[$out_off] = $last; // reset last
-
- // discard char
- continue;
- }
- }
-
- // Find out, wether two current characters are LV and T
- $sindex = $last - $this->_sbase;
-
- if (0 <= $sindex && $sindex < $this->_scount && ($sindex % $this->_tcount) == 0) {
- $tindex = $char - $this->_tbase;
-
- if (0 <= $tindex && $tindex <= $this->_tcount) {
- // create syllable of form LVT
- $last += $tindex;
- $out_off = count($result) - 1;
- $result[$out_off] = $last; // reset last
-
- // discard char
- continue;
- }
- }
-
- // if neither case was true, just add the character
- $last = $char;
- $result[] = $char;
- }
-
- return $result;
- }
-
- /**
- * Returns the combining class of a certain wide char.
- *
- * @param integer $char Wide char to check (32bit integer)
- *
- * @return integer Combining class if found, else 0
- * @access private
- */
- private function _getCombiningClass($char)
- {
- return isset(self::$_np_norm_combcls[$char])? self::$_np_norm_combcls[$char] : 0;
- }
-
- /**
- * Apllies the cannonical ordering of a decomposed UCS4 sequence.
- *
- * @param array $input Decomposed UCS4 sequence
- *
- * @return array Ordered USC4 sequence
- * @access private
- */
- private function _applyCannonicalOrdering($input)
- {
- $swap = true;
- $size = count($input);
-
- while ($swap) {
- $swap = false;
- $last = $this->_getCombiningClass($input[0]);
-
- for ($i = 0; $i < $size - 1; ++$i) {
- $next = $this->_getCombiningClass($input[$i + 1]);
-
- if ($next != 0 && $last > $next) {
- // Move item leftward until it fits
- for ($j = $i + 1; $j > 0; --$j) {
- if ($this->_getCombiningClass($input[$j - 1]) <= $next) {
- break;
- }
-
- $t = $input[$j];
- $input[$j] = $input[$j - 1];
- $input[$j - 1] = $t;
- $swap = 1;
- }
-
- // Reentering the loop looking at the old character again
- $next = $last;
- }
-
- $last = $next;
- }
- }
-
- return $input;
- }
-
- /**
- * Do composition of a sequence of starter and non-starter.
- *
- * @param array $input UCS4 Decomposed sequence
- *
- * @return array Ordered USC4 sequence
- * @access private
- */
- private function _combine($input)
- {
- $inp_len = count($input);
-
- // Is it a Hangul syllable?
- if (1 != $inp_len) {
- $hangul = $this->_hangulCompose($input);
-
- // This place is probably wrong
- if (count($hangul) != $inp_len) {
- return $hangul;
- }
- }
-
- foreach (self::$_np_replacemaps as $np_src => $np_target) {
- if ($np_target[0] != $input[0]) {
- continue;
- }
-
- if (count($np_target) != $inp_len) {
- continue;
- }
-
- $hit = false;
-
- foreach ($input as $k2 => $v2) {
- if ($v2 == $np_target[$k2]) {
- $hit = true;
- } else {
- $hit = false;
- break;
- }
- }
-
- if ($hit) {
- return $np_src;
- }
- }
-
- return false;
- }
-
- /**
- * This converts an UTF-8 encoded string to its UCS-4 (array) representation
- * By talking about UCS-4 we mean arrays of 32bit integers representing
- * each of the "chars". This is due to PHP not being able to handle strings with
- * bit depth different from 8. This applies to the reverse method _ucs4_to_utf8(), too.
- * The following UTF-8 encodings are supported:
- *
- * bytes bits representation
- * 1 7 0xxxxxxx
- * 2 11 110xxxxx 10xxxxxx
- * 3 16 1110xxxx 10xxxxxx 10xxxxxx
- * 4 21 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
- * 5 26 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
- * 6 31 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
- *
- * Each x represents a bit that can be used to store character data.
- *
- * @param string $input utf8-encoded string
- *
- * @return array ucs4-encoded array
- * @throws Exception
- * @access private
- */
- private function _utf8_to_ucs4($input)
- {
- $output = array();
- $out_len = 0;
- $inp_len = self::_byteLength($input, '8bit');
- $mode = 'next';
- $test = 'none';
- for ($k = 0; $k < $inp_len; ++$k) {
- $v = ord($input{$k}); // Extract byte from input string
-
- if ($v < 128) { // We found an ASCII char - put into stirng as is
- $output[$out_len] = $v;
- ++$out_len;
- if ('add' == $mode) {
- throw new UnexpectedValueException('Conversion from UTF-8 to UCS-4 failed: malformed input at byte '.$k);
- }
- continue;
- }
- if ('next' == $mode) { // Try to find the next start byte; determine the width of the Unicode char
- $start_byte = $v;
- $mode = 'add';
- $test = 'range';
- if ($v >> 5 == 6) { // &110xxxxx 10xxxxx
- $next_byte = 0; // Tells, how many times subsequent bitmasks must rotate 6bits to the left
- $v = ($v - 192) << 6;
- } elseif ($v >> 4 == 14) { // &1110xxxx 10xxxxxx 10xxxxxx
- $next_byte = 1;
- $v = ($v - 224) << 12;
- } elseif ($v >> 3 == 30) { // &11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
- $next_byte = 2;
- $v = ($v - 240) << 18;
- } elseif ($v >> 2 == 62) { // &111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
- $next_byte = 3;
- $v = ($v - 248) << 24;
- } elseif ($v >> 1 == 126) { // &1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
- $next_byte = 4;
- $v = ($v - 252) << 30;
- } else {
- throw new UnexpectedValueException('This might be UTF-8, but I don\'t understand it at byte '.$k);
- }
- if ('add' == $mode) {
- $output[$out_len] = (int) $v;
- ++$out_len;
- continue;
- }
- }
- if ('add' == $mode) {
- if (!$this->_allow_overlong && $test == 'range') {
- $test = 'none';
- if (($v < 0xA0 && $start_byte == 0xE0) || ($v < 0x90 && $start_byte == 0xF0) || ($v > 0x8F && $start_byte == 0xF4)) {
- throw new OutOfRangeException('Bogus UTF-8 character detected (out of legal range) at byte '.$k);
- }
- }
- if ($v >> 6 == 2) { // Bit mask must be 10xxxxxx
- $v = ($v - 128) << ($next_byte * 6);
- $output[($out_len - 1)] += $v;
- --$next_byte;
- } else {
- throw new UnexpectedValueException('Conversion from UTF-8 to UCS-4 failed: malformed input at byte '.$k);
- }
- if ($next_byte < 0) {
- $mode = 'next';
- }
- }
- } // for
- return $output;
- }
-
- /**
- * Convert UCS-4 array into UTF-8 string
- *
- * @param array $input ucs4-encoded array
- *
- * @return string utf8-encoded string
- * @throws Exception
- * @access private
- */
- private function _ucs4_to_utf8($input)
- {
- $output = '';
-
- foreach ($input as $v) {
- // $v = ord($v);
-
- if ($v < 128) {
- // 7bit are transferred literally
- $output .= chr($v);
- } else if ($v < 1 << 11) {
- // 2 bytes
- $output .= chr(192 + ($v >> 6))
- . chr(128 + ($v & 63));
- } else if ($v < 1 << 16) {
- // 3 bytes
- $output .= chr(224 + ($v >> 12))
- . chr(128 + (($v >> 6) & 63))
- . chr(128 + ($v & 63));
- } else if ($v < 1 << 21) {
- // 4 bytes
- $output .= chr(240 + ($v >> 18))
- . chr(128 + (($v >> 12) & 63))
- . chr(128 + (($v >> 6) & 63))
- . chr(128 + ($v & 63));
- } else if ($v < 1 << 26) {
- // 5 bytes
- $output .= chr(248 + ($v >> 24))
- . chr(128 + (($v >> 18) & 63))
- . chr(128 + (($v >> 12) & 63))
- . chr(128 + (($v >> 6) & 63))
- . chr(128 + ($v & 63));
- } else if ($v < 1 << 31) {
- // 6 bytes
- $output .= chr(252 + ($v >> 30))
- . chr(128 + (($v >> 24) & 63))
- . chr(128 + (($v >> 18) & 63))
- . chr(128 + (($v >> 12) & 63))
- . chr(128 + (($v >> 6) & 63))
- . chr(128 + ($v & 63));
- } else {
- throw new UnexpectedValueException('Conversion from UCS-4 to UTF-8 failed: malformed input');
- }
- }
-
- return $output;
- }
-
- /**
- * Convert UCS-4 array into UCS-4 string
- *
- * @param array $input ucs4-encoded array
- *
- * @return string ucs4-encoded string
- * @throws Exception
- * @access private
- */
- private function _ucs4_to_ucs4_string($input)
- {
- $output = '';
- // Take array values and split output to 4 bytes per value
- // The bit mask is 255, which reads &11111111
- foreach ($input as $v) {
- $output .= ($v & (255 << 24) >> 24) . ($v & (255 << 16) >> 16) . ($v & (255 << 8) >> 8) . ($v & 255);
- }
- return $output;
- }
-
- /**
- * Convert UCS-4 string into UCS-4 array
- *
- * @param string $input ucs4-encoded string
- *
- * @return array ucs4-encoded array
- * @throws InvalidArgumentException
- * @access private
- */
- private function _ucs4_string_to_ucs4($input)
- {
- $output = array();
-
- $inp_len = self::_byteLength($input);
- // Input length must be dividable by 4
- if ($inp_len % 4) {
- throw new InvalidArgumentException('Input UCS4 string is broken');
- }
-
- // Empty input - return empty output
- if (!$inp_len) {
- return $output;
- }
-
- for ($i = 0, $out_len = -1; $i < $inp_len; ++$i) {
- // Increment output position every 4 input bytes
- if (!$i % 4) {
- $out_len++;
- $output[$out_len] = 0;
- }
- $output[$out_len] += ord($input{$i}) << (8 * (3 - ($i % 4) ) );
- }
- return $output;
- }
-
- /**
- * Echo hex representation of UCS4 sequence.
- *
- * @param array $input UCS4 sequence
- * @param boolean $include_bit Include bitmask in output
- *
- * @return void
- * @static
- * @access private
- */
- private static function _showHex($input, $include_bit = false)
- {
- foreach ($input as $k => $v) {
- echo '[', $k, '] => ', sprintf('%X', $v);
-
- if ($include_bit) {
- echo ' (', Net_IDNA2::_showBitmask($v), ')';
- }
-
- echo "\n";
- }
- }
-
- /**
- * Gives you a bit representation of given Byte (8 bits), Word (16 bits) or DWord (32 bits)
- * Output width is automagically determined
- *
- * @param int $octet ...
- *
- * @return string Bitmask-representation
- * @static
- * @access private
- */
- private static function _showBitmask($octet)
- {
- if ($octet >= (1 << 16)) {
- $w = 31;
- } else if ($octet >= (1 << 8)) {
- $w = 15;
- } else {
- $w = 7;
- }
-
- $return = '';
-
- for ($i = $w; $i > -1; $i--) {
- $return .= ($octet & (1 << $i))? '1' : '0';
- }
-
- return $return;
- }
-
- /**
- * Gets the length of a string in bytes even if mbstring function
- * overloading is turned on
- *
- * @param string $string the string for which to get the length.
- *
- * @return integer the length of the string in bytes.
- *
- * @see Net_IDNA2::$_mb_string_overload
- */
- private static function _byteLength($string)
- {
- if (self::$_mb_string_overload) {
- return mb_strlen($string, '8bit');
- }
- return strlen((binary)$string);
- }
-
- // }}}}
-
- // {{{ factory
- /**
- * Attempts to return a concrete IDNA instance for either php4 or php5.
- *
- * @param array $params Set of paramaters
- *
- * @return Net_IDNA2
- * @access public
- */
- function getInstance($params = array())
- {
- return new Net_IDNA2($params);
- }
- // }}}
-
- // {{{ singleton
- /**
- * Attempts to return a concrete IDNA instance for either php4 or php5,
- * only creating a new instance if no IDNA instance with the same
- * parameters currently exists.
- *
- * @param array $params Set of paramaters
- *
- * @return object Net_IDNA2
- * @access public
- */
- function singleton($params = array())
- {
- static $instances;
- if (!isset($instances)) {
- $instances = array();
- }
-
- $signature = serialize($params);
- if (!isset($instances[$signature])) {
- $instances[$signature] = Net_IDNA2::getInstance($params);
- }
-
- return $instances[$signature];
- }
- // }}}
-}
-
-?>
diff --git a/program/lib/Net/IDNA2/Exception.php b/program/lib/Net/IDNA2/Exception.php
deleted file mode 100644
index 72cb1ae75..000000000
--- a/program/lib/Net/IDNA2/Exception.php
+++ /dev/null
@@ -1,4 +0,0 @@
-<?php
-class Net_IDNA2_Exception extends Exception
-{
-}
diff --git a/program/lib/Net/IDNA2/Exception/Nameprep.php b/program/lib/Net/IDNA2/Exception/Nameprep.php
deleted file mode 100644
index 44cbd6bb9..000000000
--- a/program/lib/Net/IDNA2/Exception/Nameprep.php
+++ /dev/null
@@ -1,6 +0,0 @@
-<?php
-require_once 'Net/IDNA2/Exception.php';
-
-class Net_IDNA2_Exception_Nameprep extends Net_IDNA2_Exception
-{
-}
diff --git a/program/lib/Net/SMTP.php b/program/lib/Net/SMTP.php
deleted file mode 100644
index 2c1ef5c55..000000000
--- a/program/lib/Net/SMTP.php
+++ /dev/null
@@ -1,1338 +0,0 @@
-<?php
-/* vim: set expandtab softtabstop=4 tabstop=4 shiftwidth=4: */
-// +----------------------------------------------------------------------+
-// | PHP Version 4 |
-// +----------------------------------------------------------------------+
-// | Copyright (c) 1997-2003 The PHP Group |
-// +----------------------------------------------------------------------+
-// | This source file is subject to version 2.02 of the PHP license, |
-// | that is bundled with this package in the file LICENSE, and is |
-// | available at through the world-wide-web at |
-// | http://www.php.net/license/2_02.txt. |
-// | If you did not receive a copy of the PHP license and are unable to |
-// | obtain it through the world-wide-web, please send a note to |
-// | license@php.net so we can mail you a copy immediately. |
-// +----------------------------------------------------------------------+
-// | Authors: Chuck Hagenbuch <chuck@horde.org> |
-// | Jon Parise <jon@php.net> |
-// | Damian Alejandro Fernandez Sosa <damlists@cnba.uba.ar> |
-// +----------------------------------------------------------------------+
-
-require_once 'PEAR.php';
-require_once 'Net/Socket.php';
-
-/**
- * Provides an implementation of the SMTP protocol using PEAR's
- * Net_Socket:: class.
- *
- * @package Net_SMTP
- * @author Chuck Hagenbuch <chuck@horde.org>
- * @author Jon Parise <jon@php.net>
- * @author Damian Alejandro Fernandez Sosa <damlists@cnba.uba.ar>
- *
- * @example basic.php A basic implementation of the Net_SMTP package.
- */
-class Net_SMTP
-{
- /**
- * The server to connect to.
- * @var string
- * @access public
- */
- var $host = 'localhost';
-
- /**
- * The port to connect to.
- * @var int
- * @access public
- */
- var $port = 25;
-
- /**
- * The value to give when sending EHLO or HELO.
- * @var string
- * @access public
- */
- var $localhost = 'localhost';
-
- /**
- * List of supported authentication methods, in preferential order.
- * @var array
- * @access public
- */
- var $auth_methods = array();
-
- /**
- * Use SMTP command pipelining (specified in RFC 2920) if the SMTP
- * server supports it.
- *
- * When pipeling is enabled, rcptTo(), mailFrom(), sendFrom(),
- * somlFrom() and samlFrom() do not wait for a response from the
- * SMTP server but return immediately.
- *
- * @var bool
- * @access public
- */
- var $pipelining = false;
-
- /**
- * Number of pipelined commands.
- * @var int
- * @access private
- */
- var $_pipelined_commands = 0;
-
- /**
- * Should debugging output be enabled?
- * @var boolean
- * @access private
- */
- var $_debug = false;
-
- /**
- * Debug output handler.
- * @var callback
- * @access private
- */
- var $_debug_handler = null;
-
- /**
- * The socket resource being used to connect to the SMTP server.
- * @var resource
- * @access private
- */
- var $_socket = null;
-
- /**
- * Array of socket options that will be passed to Net_Socket::connect().
- * @see stream_context_create()
- * @var array
- * @access private
- */
- var $_socket_options = null;
-
- /**
- * The socket I/O timeout value in seconds.
- * @var int
- * @access private
- */
- var $_timeout = 0;
-
- /**
- * The most recent server response code.
- * @var int
- * @access private
- */
- var $_code = -1;
-
- /**
- * The most recent server response arguments.
- * @var array
- * @access private
- */
- var $_arguments = array();
-
- /**
- * Stores the SMTP server's greeting string.
- * @var string
- * @access private
- */
- var $_greeting = null;
-
- /**
- * Stores detected features of the SMTP server.
- * @var array
- * @access private
- */
- var $_esmtp = array();
-
- /**
- * Instantiates a new Net_SMTP object, overriding any defaults
- * with parameters that are passed in.
- *
- * If you have SSL support in PHP, you can connect to a server
- * over SSL using an 'ssl://' prefix:
- *
- * // 465 is a common smtps port.
- * $smtp = new Net_SMTP('ssl://mail.host.com', 465);
- * $smtp->connect();
- *
- * @param string $host The server to connect to.
- * @param integer $port The port to connect to.
- * @param string $localhost The value to give when sending EHLO or HELO.
- * @param boolean $pipeling Use SMTP command pipelining
- * @param integer $timeout Socket I/O timeout in seconds.
- * @param array $socket_options Socket stream_context_create() options.
- *
- * @access public
- * @since 1.0
- */
- function Net_SMTP($host = null, $port = null, $localhost = null,
- $pipelining = false, $timeout = 0, $socket_options = null)
- {
- if (isset($host)) {
- $this->host = $host;
- }
- if (isset($port)) {
- $this->port = $port;
- }
- if (isset($localhost)) {
- $this->localhost = $localhost;
- }
- $this->pipelining = $pipelining;
-
- $this->_socket = new Net_Socket();
- $this->_socket_options = $socket_options;
- $this->_timeout = $timeout;
-
- /* Include the Auth_SASL package. If the package is available, we
- * enable the authentication methods that depend upon it. */
- if (@include_once 'Auth/SASL.php') {
- $this->setAuthMethod('CRAM-MD5', array($this, '_authCram_MD5'));
- $this->setAuthMethod('DIGEST-MD5', array($this, '_authDigest_MD5'));
- }
-
- /* These standard authentication methods are always available. */
- $this->setAuthMethod('LOGIN', array($this, '_authLogin'), false);
- $this->setAuthMethod('PLAIN', array($this, '_authPlain'), false);
- }
-
- /**
- * Set the socket I/O timeout value in seconds plus microseconds.
- *
- * @param integer $seconds Timeout value in seconds.
- * @param integer $microseconds Additional value in microseconds.
- *
- * @access public
- * @since 1.5.0
- */
- function setTimeout($seconds, $microseconds = 0) {
- return $this->_socket->setTimeout($seconds, $microseconds);
- }
-
- /**
- * Set the value of the debugging flag.
- *
- * @param boolean $debug New value for the debugging flag.
- *
- * @access public
- * @since 1.1.0
- */
- function setDebug($debug, $handler = null)
- {
- $this->_debug = $debug;
- $this->_debug_handler = $handler;
- }
-
- /**
- * Write the given debug text to the current debug output handler.
- *
- * @param string $message Debug mesage text.
- *
- * @access private
- * @since 1.3.3
- */
- function _debug($message)
- {
- if ($this->_debug) {
- if ($this->_debug_handler) {
- call_user_func_array($this->_debug_handler,
- array(&$this, $message));
- } else {
- echo "DEBUG: $message\n";
- }
- }
- }
-
- /**
- * Send the given string of data to the server.
- *
- * @param string $data The string of data to send.
- *
- * @return mixed The number of bytes that were actually written,
- * or a PEAR_Error object on failure.
- *
- * @access private
- * @since 1.1.0
- */
- function _send($data)
- {
- $this->_debug("Send: $data");
-
- $result = $this->_socket->write($data);
- if (!$result || PEAR::isError($result)) {
- $msg = ($result) ? $result->getMessage() : "unknown error";
- return PEAR::raiseError("Failed to write to socket: $msg",
- null, PEAR_ERROR_RETURN);
- }
-
- return $result;
- }
-
- /**
- * Send a command to the server with an optional string of
- * arguments. A carriage return / linefeed (CRLF) sequence will
- * be appended to each command string before it is sent to the
- * SMTP server - an error will be thrown if the command string
- * already contains any newline characters. Use _send() for
- * commands that must contain newlines.
- *
- * @param string $command The SMTP command to send to the server.
- * @param string $args A string of optional arguments to append
- * to the command.
- *
- * @return mixed The result of the _send() call.
- *
- * @access private
- * @since 1.1.0
- */
- function _put($command, $args = '')
- {
- if (!empty($args)) {
- $command .= ' ' . $args;
- }
-
- if (strcspn($command, "\r\n") !== strlen($command)) {
- return PEAR::raiseError('Commands cannot contain newlines',
- null, PEAR_ERROR_RETURN);
- }
-
- return $this->_send($command . "\r\n");
- }
-
- /**
- * Read a reply from the SMTP server. The reply consists of a response
- * code and a response message.
- *
- * @param mixed $valid The set of valid response codes. These
- * may be specified as an array of integer
- * values or as a single integer value.
- * @param bool $later Do not parse the response now, but wait
- * until the last command in the pipelined
- * command group
- *
- * @return mixed True if the server returned a valid response code or
- * a PEAR_Error object is an error condition is reached.
- *
- * @access private
- * @since 1.1.0
- *
- * @see getResponse
- */
- function _parseResponse($valid, $later = false)
- {
- $this->_code = -1;
- $this->_arguments = array();
-
- if ($later) {
- $this->_pipelined_commands++;
- return true;
- }
-
- for ($i = 0; $i <= $this->_pipelined_commands; $i++) {
- while ($line = $this->_socket->readLine()) {
- $this->_debug("Recv: $line");
-
- /* If we receive an empty line, the connection was closed. */
- if (empty($line)) {
- $this->disconnect();
- return PEAR::raiseError('Connection was closed',
- null, PEAR_ERROR_RETURN);
- }
-
- /* Read the code and store the rest in the arguments array. */
- $code = substr($line, 0, 3);
- $this->_arguments[] = trim(substr($line, 4));
-
- /* Check the syntax of the response code. */
- if (is_numeric($code)) {
- $this->_code = (int)$code;
- } else {
- $this->_code = -1;
- break;
- }
-
- /* If this is not a multiline response, we're done. */
- if (substr($line, 3, 1) != '-') {
- break;
- }
- }
- }
-
- $this->_pipelined_commands = 0;
-
- /* Compare the server's response code with the valid code/codes. */
- if (is_int($valid) && ($this->_code === $valid)) {
- return true;
- } elseif (is_array($valid) && in_array($this->_code, $valid, true)) {
- return true;
- }
-
- return PEAR::raiseError('Invalid response code received from server',
- $this->_code, PEAR_ERROR_RETURN);
- }
-
- /**
- * Issue an SMTP command and verify its response.
- *
- * @param string $command The SMTP command string or data.
- * @param mixed $valid The set of valid response codes. These
- * may be specified as an array of integer
- * values or as a single integer value.
- *
- * @return mixed True on success or a PEAR_Error object on failure.
- *
- * @access public
- * @since 1.6.0
- */
- function command($command, $valid)
- {
- if (PEAR::isError($error = $this->_put($command))) {
- return $error;
- }
- if (PEAR::isError($error = $this->_parseResponse($valid))) {
- return $error;
- }
-
- return true;
- }
-
- /**
- * Return a 2-tuple containing the last response from the SMTP server.
- *
- * @return array A two-element array: the first element contains the
- * response code as an integer and the second element
- * contains the response's arguments as a string.
- *
- * @access public
- * @since 1.1.0
- */
- function getResponse()
- {
- return array($this->_code, join("\n", $this->_arguments));
- }
-
- /**
- * Return the SMTP server's greeting string.
- *
- * @return string A string containing the greeting string, or null if a
- * greeting has not been received.
- *
- * @access public
- * @since 1.3.3
- */
- function getGreeting()
- {
- return $this->_greeting;
- }
-
- /**
- * Attempt to connect to the SMTP server.
- *
- * @param int $timeout The timeout value (in seconds) for the
- * socket connection attempt.
- * @param bool $persistent Should a persistent socket connection
- * be used?
- *
- * @return mixed Returns a PEAR_Error with an error message on any
- * kind of failure, or true on success.
- * @access public
- * @since 1.0
- */
- function connect($timeout = null, $persistent = false)
- {
- $this->_greeting = null;
- $result = $this->_socket->connect($this->host, $this->port,
- $persistent, $timeout,
- $this->_socket_options);
- if (PEAR::isError($result)) {
- return PEAR::raiseError('Failed to connect socket: ' .
- $result->getMessage());
- }
-
- /*
- * Now that we're connected, reset the socket's timeout value for
- * future I/O operations. This allows us to have different socket
- * timeout values for the initial connection (our $timeout parameter)
- * and all other socket operations.
- */
- if ($this->_timeout > 0) {
- if (PEAR::isError($error = $this->setTimeout($this->_timeout))) {
- return $error;
- }
- }
-
- if (PEAR::isError($error = $this->_parseResponse(220))) {
- return $error;
- }
-
- /* Extract and store a copy of the server's greeting string. */
- list(, $this->_greeting) = $this->getResponse();
-
- if (PEAR::isError($error = $this->_negotiate())) {
- return $error;
- }
-
- return true;
- }
-
- /**
- * Attempt to disconnect from the SMTP server.
- *
- * @return mixed Returns a PEAR_Error with an error message on any
- * kind of failure, or true on success.
- * @access public
- * @since 1.0
- */
- function disconnect()
- {
- if (PEAR::isError($error = $this->_put('QUIT'))) {
- return $error;
- }
- if (PEAR::isError($error = $this->_parseResponse(221))) {
- return $error;
- }
- if (PEAR::isError($error = $this->_socket->disconnect())) {
- return PEAR::raiseError('Failed to disconnect socket: ' .
- $error->getMessage());
- }
-
- return true;
- }
-
- /**
- * Attempt to send the EHLO command and obtain a list of ESMTP
- * extensions available, and failing that just send HELO.
- *
- * @return mixed Returns a PEAR_Error with an error message on any
- * kind of failure, or true on success.
- *
- * @access private
- * @since 1.1.0
- */
- function _negotiate()
- {
- if (PEAR::isError($error = $this->_put('EHLO', $this->localhost))) {
- return $error;
- }
-
- if (PEAR::isError($this->_parseResponse(250))) {
- /* If we receive a 503 response, we're already authenticated. */
- if ($this->_code === 503) {
- return true;
- }
-
- /* If the EHLO failed, try the simpler HELO command. */
- if (PEAR::isError($error = $this->_put('HELO', $this->localhost))) {
- return $error;
- }
- if (PEAR::isError($this->_parseResponse(250))) {
- return PEAR::raiseError('HELO was not accepted: ', $this->_code,
- PEAR_ERROR_RETURN);
- }
-
- return true;
- }
-
- foreach ($this->_arguments as $argument) {
- $verb = strtok($argument, ' ');
- $arguments = substr($argument, strlen($verb) + 1,
- strlen($argument) - strlen($verb) - 1);
- $this->_esmtp[$verb] = $arguments;
- }
-
- if (!isset($this->_esmtp['PIPELINING'])) {
- $this->pipelining = false;
- }
-
- return true;
- }
-
- /**
- * Returns the name of the best authentication method that the server
- * has advertised.
- *
- * @return mixed Returns a string containing the name of the best
- * supported authentication method or a PEAR_Error object
- * if a failure condition is encountered.
- * @access private
- * @since 1.1.0
- */
- function _getBestAuthMethod()
- {
- $available_methods = explode(' ', $this->_esmtp['AUTH']);
-
- foreach ($this->auth_methods as $method => $callback) {
- if (in_array($method, $available_methods)) {
- return $method;
- }
- }
-
- return PEAR::raiseError('No supported authentication methods',
- null, PEAR_ERROR_RETURN);
- }
-
- /**
- * Attempt to do SMTP authentication.
- *
- * @param string The userid to authenticate as.
- * @param string The password to authenticate with.
- * @param string The requested authentication method. If none is
- * specified, the best supported method will be used.
- * @param bool Flag indicating whether or not TLS should be attempted.
- * @param string An optional authorization identifier. If specified, this
- * identifier will be used as the authorization proxy.
- *
- * @return mixed Returns a PEAR_Error with an error message on any
- * kind of failure, or true on success.
- * @access public
- * @since 1.0
- */
- function auth($uid, $pwd , $method = '', $tls = true, $authz = '')
- {
- /* We can only attempt a TLS connection if one has been requested,
- * we're running PHP 5.1.0 or later, have access to the OpenSSL
- * extension, are connected to an SMTP server which supports the
- * STARTTLS extension, and aren't already connected over a secure
- * (SSL) socket connection. */
- if ($tls && version_compare(PHP_VERSION, '5.1.0', '>=') &&
- extension_loaded('openssl') && isset($this->_esmtp['STARTTLS']) &&
- strncasecmp($this->host, 'ssl://', 6) !== 0) {
- /* Start the TLS connection attempt. */
- if (PEAR::isError($result = $this->_put('STARTTLS'))) {
- return $result;
- }
- if (PEAR::isError($result = $this->_parseResponse(220))) {
- return $result;
- }
- if (PEAR::isError($result = $this->_socket->enableCrypto(true, STREAM_CRYPTO_METHOD_TLS_CLIENT))) {
- return $result;
- } elseif ($result !== true) {
- return PEAR::raiseError('STARTTLS failed');
- }
-
- /* Send EHLO again to recieve the AUTH string from the
- * SMTP server. */
- $this->_negotiate();
- }
-
- if (empty($this->_esmtp['AUTH'])) {
- return PEAR::raiseError('SMTP server does not support authentication');
- }
-
- /* If no method has been specified, get the name of the best
- * supported method advertised by the SMTP server. */
- if (empty($method)) {
- if (PEAR::isError($method = $this->_getBestAuthMethod())) {
- /* Return the PEAR_Error object from _getBestAuthMethod(). */
- return $method;
- }
- } else {
- $method = strtoupper($method);
- if (!array_key_exists($method, $this->auth_methods)) {
- return PEAR::raiseError("$method is not a supported authentication method");
- }
- }
-
- if (!isset($this->auth_methods[$method])) {
- return PEAR::raiseError("$method is not a supported authentication method");
- }
-
- if (!is_callable($this->auth_methods[$method], false)) {
- return PEAR::raiseError("$method authentication method cannot be called");
- }
-
- if (is_array($this->auth_methods[$method])) {
- list($object, $method) = $this->auth_methods[$method];
- $result = $object->{$method}($uid, $pwd, $authz, $this);
- } else {
- $func = $this->auth_methods[$method];
- $result = $func($uid, $pwd, $authz, $this);
- }
-
- /* If an error was encountered, return the PEAR_Error object. */
- if (PEAR::isError($result)) {
- return $result;
- }
-
- return true;
- }
-
- /**
- * Add a new authentication method.
- *
- * @param string The authentication method name (e.g. 'PLAIN')
- * @param mixed The authentication callback (given as the name of a
- * function or as an (object, method name) array).
- * @param bool Should the new method be prepended to the list of
- * available methods? This is the default behavior,
- * giving the new method the highest priority.
- *
- * @return mixed True on success or a PEAR_Error object on failure.
- *
- * @access public
- * @since 1.6.0
- */
- function setAuthMethod($name, $callback, $prepend = true)
- {
- if (!is_string($name)) {
- return PEAR::raiseError('Method name is not a string');
- }
-
- if (!is_string($callback) && !is_array($callback)) {
- return PEAR::raiseError('Method callback must be string or array');
- }
-
- if (is_array($callback)) {
- if (!is_object($callback[0]) || !is_string($callback[1]))
- return PEAR::raiseError('Bad mMethod callback array');
- }
-
- if ($prepend) {
- $this->auth_methods = array_merge(array($name => $callback),
- $this->auth_methods);
- } else {
- $this->auth_methods[$name] = $callback;
- }
-
- return true;
- }
-
- /**
- * Authenticates the user using the DIGEST-MD5 method.
- *
- * @param string The userid to authenticate as.
- * @param string The password to authenticate with.
- * @param string The optional authorization proxy identifier.
- *
- * @return mixed Returns a PEAR_Error with an error message on any
- * kind of failure, or true on success.
- * @access private
- * @since 1.1.0
- */
- function _authDigest_MD5($uid, $pwd, $authz = '')
- {
- if (PEAR::isError($error = $this->_put('AUTH', 'DIGEST-MD5'))) {
- return $error;
- }
- /* 334: Continue authentication request */
- if (PEAR::isError($error = $this->_parseResponse(334))) {
- /* 503: Error: already authenticated */
- if ($this->_code === 503) {
- return true;
- }
- return $error;
- }
-
- $challenge = base64_decode($this->_arguments[0]);
- $digest = &Auth_SASL::factory('digest-md5');
- $auth_str = base64_encode($digest->getResponse($uid, $pwd, $challenge,
- $this->host, "smtp",
- $authz));
-
- if (PEAR::isError($error = $this->_put($auth_str))) {
- return $error;
- }
- /* 334: Continue authentication request */
- if (PEAR::isError($error = $this->_parseResponse(334))) {
- return $error;
- }
-
- /* We don't use the protocol's third step because SMTP doesn't
- * allow subsequent authentication, so we just silently ignore
- * it. */
- if (PEAR::isError($error = $this->_put(''))) {
- return $error;
- }
- /* 235: Authentication successful */
- if (PEAR::isError($error = $this->_parseResponse(235))) {
- return $error;
- }
- }
-
- /**
- * Authenticates the user using the CRAM-MD5 method.
- *
- * @param string The userid to authenticate as.
- * @param string The password to authenticate with.
- * @param string The optional authorization proxy identifier.
- *
- * @return mixed Returns a PEAR_Error with an error message on any
- * kind of failure, or true on success.
- * @access private
- * @since 1.1.0
- */
- function _authCRAM_MD5($uid, $pwd, $authz = '')
- {
- if (PEAR::isError($error = $this->_put('AUTH', 'CRAM-MD5'))) {
- return $error;
- }
- /* 334: Continue authentication request */
- if (PEAR::isError($error = $this->_parseResponse(334))) {
- /* 503: Error: already authenticated */
- if ($this->_code === 503) {
- return true;
- }
- return $error;
- }
-
- $challenge = base64_decode($this->_arguments[0]);
- $cram = &Auth_SASL::factory('cram-md5');
- $auth_str = base64_encode($cram->getResponse($uid, $pwd, $challenge));
-
- if (PEAR::isError($error = $this->_put($auth_str))) {
- return $error;
- }
-
- /* 235: Authentication successful */
- if (PEAR::isError($error = $this->_parseResponse(235))) {
- return $error;
- }
- }
-
- /**
- * Authenticates the user using the LOGIN method.
- *
- * @param string The userid to authenticate as.
- * @param string The password to authenticate with.
- * @param string The optional authorization proxy identifier.
- *
- * @return mixed Returns a PEAR_Error with an error message on any
- * kind of failure, or true on success.
- * @access private
- * @since 1.1.0
- */
- function _authLogin($uid, $pwd, $authz = '')
- {
- if (PEAR::isError($error = $this->_put('AUTH', 'LOGIN'))) {
- return $error;
- }
- /* 334: Continue authentication request */
- if (PEAR::isError($error = $this->_parseResponse(334))) {
- /* 503: Error: already authenticated */
- if ($this->_code === 503) {
- return true;
- }
- return $error;
- }
-
- if (PEAR::isError($error = $this->_put(base64_encode($uid)))) {
- return $error;
- }
- /* 334: Continue authentication request */
- if (PEAR::isError($error = $this->_parseResponse(334))) {
- return $error;
- }
-
- if (PEAR::isError($error = $this->_put(base64_encode($pwd)))) {
- return $error;
- }
-
- /* 235: Authentication successful */
- if (PEAR::isError($error = $this->_parseResponse(235))) {
- return $error;
- }
-
- return true;
- }
-
- /**
- * Authenticates the user using the PLAIN method.
- *
- * @param string The userid to authenticate as.
- * @param string The password to authenticate with.
- * @param string The optional authorization proxy identifier.
- *
- * @return mixed Returns a PEAR_Error with an error message on any
- * kind of failure, or true on success.
- * @access private
- * @since 1.1.0
- */
- function _authPlain($uid, $pwd, $authz = '')
- {
- if (PEAR::isError($error = $this->_put('AUTH', 'PLAIN'))) {
- return $error;
- }
- /* 334: Continue authentication request */
- if (PEAR::isError($error = $this->_parseResponse(334))) {
- /* 503: Error: already authenticated */
- if ($this->_code === 503) {
- return true;
- }
- return $error;
- }
-
- $auth_str = base64_encode($authz . chr(0) . $uid . chr(0) . $pwd);
-
- if (PEAR::isError($error = $this->_put($auth_str))) {
- return $error;
- }
-
- /* 235: Authentication successful */
- if (PEAR::isError($error = $this->_parseResponse(235))) {
- return $error;
- }
-
- return true;
- }
-
- /**
- * Send the HELO command.
- *
- * @param string The domain name to say we are.
- *
- * @return mixed Returns a PEAR_Error with an error message on any
- * kind of failure, or true on success.
- * @access public
- * @since 1.0
- */
- function helo($domain)
- {
- if (PEAR::isError($error = $this->_put('HELO', $domain))) {
- return $error;
- }
- if (PEAR::isError($error = $this->_parseResponse(250))) {
- return $error;
- }
-
- return true;
- }
-
- /**
- * Return the list of SMTP service extensions advertised by the server.
- *
- * @return array The list of SMTP service extensions.
- * @access public
- * @since 1.3
- */
- function getServiceExtensions()
- {
- return $this->_esmtp;
- }
-
- /**
- * Send the MAIL FROM: command.
- *
- * @param string $sender The sender (reverse path) to set.
- * @param string $params String containing additional MAIL parameters,
- * such as the NOTIFY flags defined by RFC 1891
- * or the VERP protocol.
- *
- * If $params is an array, only the 'verp' option
- * is supported. If 'verp' is true, the XVERP
- * parameter is appended to the MAIL command. If
- * the 'verp' value is a string, the full
- * XVERP=value parameter is appended.
- *
- * @return mixed Returns a PEAR_Error with an error message on any
- * kind of failure, or true on success.
- * @access public
- * @since 1.0
- */
- function mailFrom($sender, $params = null)
- {
- $args = "FROM:<$sender>";
-
- /* Support the deprecated array form of $params. */
- if (is_array($params) && isset($params['verp'])) {
- /* XVERP */
- if ($params['verp'] === true) {
- $args .= ' XVERP';
-
- /* XVERP=something */
- } elseif (trim($params['verp'])) {
- $args .= ' XVERP=' . $params['verp'];
- }
- } elseif (is_string($params) && !empty($params)) {
- $args .= ' ' . $params;
- }
-
- if (PEAR::isError($error = $this->_put('MAIL', $args))) {
- return $error;
- }
- if (PEAR::isError($error = $this->_parseResponse(250, $this->pipelining))) {
- return $error;
- }
-
- return true;
- }
-
- /**
- * Send the RCPT TO: command.
- *
- * @param string $recipient The recipient (forward path) to add.
- * @param string $params String containing additional RCPT parameters,
- * such as the NOTIFY flags defined by RFC 1891.
- *
- * @return mixed Returns a PEAR_Error with an error message on any
- * kind of failure, or true on success.
- *
- * @access public
- * @since 1.0
- */
- function rcptTo($recipient, $params = null)
- {
- $args = "TO:<$recipient>";
- if (is_string($params)) {
- $args .= ' ' . $params;
- }
-
- if (PEAR::isError($error = $this->_put('RCPT', $args))) {
- return $error;
- }
- if (PEAR::isError($error = $this->_parseResponse(array(250, 251), $this->pipelining))) {
- return $error;
- }
-
- return true;
- }
-
- /**
- * Quote the data so that it meets SMTP standards.
- *
- * This is provided as a separate public function to facilitate
- * easier overloading for the cases where it is desirable to
- * customize the quoting behavior.
- *
- * @param string $data The message text to quote. The string must be passed
- * by reference, and the text will be modified in place.
- *
- * @access public
- * @since 1.2
- */
- function quotedata(&$data)
- {
- /* Because a single leading period (.) signifies an end to the
- * data, legitimate leading periods need to be "doubled" ('..'). */
- $data = preg_replace('/^\./m', '..', $data);
-
- /* Change Unix (\n) and Mac (\r) linefeeds into CRLF's (\r\n). */
- $data = preg_replace('/(?:\r\n|\n|\r(?!\n))/', "\r\n", $data);
- }
-
- /**
- * Send the DATA command.
- *
- * @param mixed $data The message data, either as a string or an open
- * file resource.
- * @param string $headers The message headers. If $headers is provided,
- * $data is assumed to contain only body data.
- *
- * @return mixed Returns a PEAR_Error with an error message on any
- * kind of failure, or true on success.
- * @access public
- * @since 1.0
- */
- function data($data, $headers = null)
- {
- /* Verify that $data is a supported type. */
- if (!is_string($data) && !is_resource($data)) {
- return PEAR::raiseError('Expected a string or file resource');
- }
-
- /* Start by considering the size of the optional headers string. We
- * also account for the addition 4 character "\r\n\r\n" separator
- * sequence. */
- $size = (is_null($headers)) ? 0 : strlen($headers) + 4;
-
- if (is_resource($data)) {
- $stat = fstat($data);
- if ($stat === false) {
- return PEAR::raiseError('Failed to get file size');
- }
- $size += $stat['size'];
- } else {
- $size += strlen($data);
- }
-
- /* RFC 1870, section 3, subsection 3 states "a value of zero indicates
- * that no fixed maximum message size is in force". Furthermore, it
- * says that if "the parameter is omitted no information is conveyed
- * about the server's fixed maximum message size". */
- $limit = (isset($this->_esmtp['SIZE'])) ? $this->_esmtp['SIZE'] : 0;
- if ($limit > 0 && $size >= $limit) {
- $this->disconnect();
- return PEAR::raiseError('Message size exceeds server limit');
- }
-
- /* Initiate the DATA command. */
- if (PEAR::isError($error = $this->_put('DATA'))) {
- return $error;
- }
- if (PEAR::isError($error = $this->_parseResponse(354))) {
- return $error;
- }
-
- /* If we have a separate headers string, send it first. */
- if (!is_null($headers)) {
- $this->quotedata($headers);
- if (PEAR::isError($result = $this->_send($headers . "\r\n\r\n"))) {
- return $result;
- }
- }
-
- /* Now we can send the message body data. */
- if (is_resource($data)) {
- /* Stream the contents of the file resource out over our socket
- * connection, line by line. Each line must be run through the
- * quoting routine. */
- while (strlen($line = fread($data, 8192)) > 0) {
- /* If the last character is an newline, we need to grab the
- * next character to check to see if it is a period. */
- while (!feof($data)) {
- $char = fread($data, 1);
- $line .= $char;
- if ($char != "\n") {
- break;
- }
- }
- $this->quotedata($line);
- if (PEAR::isError($result = $this->_send($line))) {
- return $result;
- }
- }
- } else {
- /*
- * Break up the data by sending one chunk (up to 512k) at a time.
- * This approach reduces our peak memory usage.
- */
- for ($offset = 0; $offset < $size;) {
- $end = $offset + 512000;
-
- /*
- * Ensure we don't read beyond our data size or span multiple
- * lines. quotedata() can't properly handle character data
- * that's split across two line break boundaries.
- */
- if ($end >= $size) {
- $end = $size;
- } else {
- for (; $end < $size; $end++) {
- if ($data[$end] != "\n") {
- break;
- }
- }
- }
-
- /* Extract our chunk and run it through the quoting routine. */
- $chunk = substr($data, $offset, $end - $offset);
- $this->quotedata($chunk);
-
- /* If we run into a problem along the way, abort. */
- if (PEAR::isError($result = $this->_send($chunk))) {
- return $result;
- }
-
- /* Advance the offset to the end of this chunk. */
- $offset = $end;
- }
- }
-
- /* Finally, send the DATA terminator sequence. */
- if (PEAR::isError($result = $this->_send("\r\n.\r\n"))) {
- return $result;
- }
-
- /* Verify that the data was successfully received by the server. */
- if (PEAR::isError($error = $this->_parseResponse(250, $this->pipelining))) {
- return $error;
- }
-
- return true;
- }
-
- /**
- * Send the SEND FROM: command.
- *
- * @param string The reverse path to send.
- *
- * @return mixed Returns a PEAR_Error with an error message on any
- * kind of failure, or true on success.
- * @access public
- * @since 1.2.6
- */
- function sendFrom($path)
- {
- if (PEAR::isError($error = $this->_put('SEND', "FROM:<$path>"))) {
- return $error;
- }
- if (PEAR::isError($error = $this->_parseResponse(250, $this->pipelining))) {
- return $error;
- }
-
- return true;
- }
-
- /**
- * Backwards-compatibility wrapper for sendFrom().
- *
- * @param string The reverse path to send.
- *
- * @return mixed Returns a PEAR_Error with an error message on any
- * kind of failure, or true on success.
- *
- * @access public
- * @since 1.0
- * @deprecated 1.2.6
- */
- function send_from($path)
- {
- return sendFrom($path);
- }
-
- /**
- * Send the SOML FROM: command.
- *
- * @param string The reverse path to send.
- *
- * @return mixed Returns a PEAR_Error with an error message on any
- * kind of failure, or true on success.
- * @access public
- * @since 1.2.6
- */
- function somlFrom($path)
- {
- if (PEAR::isError($error = $this->_put('SOML', "FROM:<$path>"))) {
- return $error;
- }
- if (PEAR::isError($error = $this->_parseResponse(250, $this->pipelining))) {
- return $error;
- }
-
- return true;
- }
-
- /**
- * Backwards-compatibility wrapper for somlFrom().
- *
- * @param string The reverse path to send.
- *
- * @return mixed Returns a PEAR_Error with an error message on any
- * kind of failure, or true on success.
- *
- * @access public
- * @since 1.0
- * @deprecated 1.2.6
- */
- function soml_from($path)
- {
- return somlFrom($path);
- }
-
- /**
- * Send the SAML FROM: command.
- *
- * @param string The reverse path to send.
- *
- * @return mixed Returns a PEAR_Error with an error message on any
- * kind of failure, or true on success.
- * @access public
- * @since 1.2.6
- */
- function samlFrom($path)
- {
- if (PEAR::isError($error = $this->_put('SAML', "FROM:<$path>"))) {
- return $error;
- }
- if (PEAR::isError($error = $this->_parseResponse(250, $this->pipelining))) {
- return $error;
- }
-
- return true;
- }
-
- /**
- * Backwards-compatibility wrapper for samlFrom().
- *
- * @param string The reverse path to send.
- *
- * @return mixed Returns a PEAR_Error with an error message on any
- * kind of failure, or true on success.
- *
- * @access public
- * @since 1.0
- * @deprecated 1.2.6
- */
- function saml_from($path)
- {
- return samlFrom($path);
- }
-
- /**
- * Send the RSET command.
- *
- * @return mixed Returns a PEAR_Error with an error message on any
- * kind of failure, or true on success.
- * @access public
- * @since 1.0
- */
- function rset()
- {
- if (PEAR::isError($error = $this->_put('RSET'))) {
- return $error;
- }
- if (PEAR::isError($error = $this->_parseResponse(250, $this->pipelining))) {
- return $error;
- }
-
- return true;
- }
-
- /**
- * Send the VRFY command.
- *
- * @param string The string to verify
- *
- * @return mixed Returns a PEAR_Error with an error message on any
- * kind of failure, or true on success.
- * @access public
- * @since 1.0
- */
- function vrfy($string)
- {
- /* Note: 251 is also a valid response code */
- if (PEAR::isError($error = $this->_put('VRFY', $string))) {
- return $error;
- }
- if (PEAR::isError($error = $this->_parseResponse(array(250, 252)))) {
- return $error;
- }
-
- return true;
- }
-
- /**
- * Send the NOOP command.
- *
- * @return mixed Returns a PEAR_Error with an error message on any
- * kind of failure, or true on success.
- * @access public
- * @since 1.0
- */
- function noop()
- {
- if (PEAR::isError($error = $this->_put('NOOP'))) {
- return $error;
- }
- if (PEAR::isError($error = $this->_parseResponse(250))) {
- return $error;
- }
-
- return true;
- }
-
- /**
- * Backwards-compatibility method. identifySender()'s functionality is
- * now handled internally.
- *
- * @return boolean This method always return true.
- *
- * @access public
- * @since 1.0
- */
- function identifySender()
- {
- return true;
- }
-
-}
diff --git a/program/lib/Net/Sieve.php b/program/lib/Net/Sieve.php
deleted file mode 100644
index 8ebdf0958..000000000
--- a/program/lib/Net/Sieve.php
+++ /dev/null
@@ -1,1274 +0,0 @@
-<?php
-/**
- * This file contains the Net_Sieve class.
- *
- * PHP version 4
- *
- * +-----------------------------------------------------------------------+
- * | All rights reserved. |
- * | |
- * | Redistribution and use in source and binary forms, with or without |
- * | modification, are permitted provided that the following conditions |
- * | are met: |
- * | |
- * | o Redistributions of source code must retain the above copyright |
- * | notice, this list of conditions and the following disclaimer. |
- * | o Redistributions in binary form must reproduce the above copyright |
- * | notice, this list of conditions and the following disclaimer in the |
- * | documentation and/or other materials provided with the distribution.|
- * | |
- * | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
- * | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
- * | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
- * | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
- * | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
- * | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
- * | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
- * | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
- * | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
- * | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
- * | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
- * +-----------------------------------------------------------------------+
- *
- * @category Networking
- * @package Net_Sieve
- * @author Richard Heyes <richard@phpguru.org>
- * @author Damian Fernandez Sosa <damlists@cnba.uba.ar>
- * @author Anish Mistry <amistry@am-productions.biz>
- * @author Jan Schneider <jan@horde.org>
- * @copyright 2002-2003 Richard Heyes
- * @copyright 2006-2008 Anish Mistry
- * @license http://www.opensource.org/licenses/bsd-license.php BSD
- * @version SVN: $Id$
- * @link http://pear.php.net/package/Net_Sieve
- */
-
-require_once 'PEAR.php';
-require_once 'Net/Socket.php';
-
-/**
- * TODO
- *
- * o supportsAuthMech()
- */
-
-/**
- * Disconnected state
- * @const NET_SIEVE_STATE_DISCONNECTED
- */
-define('NET_SIEVE_STATE_DISCONNECTED', 1, true);
-
-/**
- * Authorisation state
- * @const NET_SIEVE_STATE_AUTHORISATION
- */
-define('NET_SIEVE_STATE_AUTHORISATION', 2, true);
-
-/**
- * Transaction state
- * @const NET_SIEVE_STATE_TRANSACTION
- */
-define('NET_SIEVE_STATE_TRANSACTION', 3, true);
-
-
-/**
- * A class for talking to the timsieved server which comes with Cyrus IMAP.
- *
- * @category Networking
- * @package Net_Sieve
- * @author Richard Heyes <richard@phpguru.org>
- * @author Damian Fernandez Sosa <damlists@cnba.uba.ar>
- * @author Anish Mistry <amistry@am-productions.biz>
- * @author Jan Schneider <jan@horde.org>
- * @copyright 2002-2003 Richard Heyes
- * @copyright 2006-2008 Anish Mistry
- * @license http://www.opensource.org/licenses/bsd-license.php BSD
- * @version Release: 1.3.2
- * @link http://pear.php.net/package/Net_Sieve
- * @link http://tools.ietf.org/html/rfc5228 RFC 5228 (Sieve: An Email
- * Filtering Language)
- * @link http://tools.ietf.org/html/rfc5804 RFC 5804 A Protocol for
- * Remotely Managing Sieve Scripts
- */
-class Net_Sieve
-{
- /**
- * The authentication methods this class supports.
- *
- * Can be overwritten if having problems with certain methods.
- *
- * @var array
- */
- var $supportedAuthMethods = array('DIGEST-MD5', 'CRAM-MD5', 'EXTERNAL',
- 'PLAIN' , 'LOGIN');
-
- /**
- * SASL authentication methods that require Auth_SASL.
- *
- * @var array
- */
- var $supportedSASLAuthMethods = array('DIGEST-MD5', 'CRAM-MD5');
-
- /**
- * The socket handle.
- *
- * @var resource
- */
- var $_sock;
-
- /**
- * Parameters and connection information.
- *
- * @var array
- */
- var $_data;
-
- /**
- * Current state of the connection.
- *
- * One of the NET_SIEVE_STATE_* constants.
- *
- * @var integer
- */
- var $_state;
-
- /**
- * Constructor error.
- *
- * @var PEAR_Error
- */
- var $_error;
-
- /**
- * Whether to enable debugging.
- *
- * @var boolean
- */
- var $_debug = false;
-
- /**
- * Debug output handler.
- *
- * This has to be a valid callback.
- *
- * @var string|array
- */
- var $_debug_handler = null;
-
- /**
- * Whether to pick up an already established connection.
- *
- * @var boolean
- */
- var $_bypassAuth = false;
-
- /**
- * Whether to use TLS if available.
- *
- * @var boolean
- */
- var $_useTLS = true;
-
- /**
- * Additional options for stream_context_create().
- *
- * @var array
- */
- var $_options = null;
-
- /**
- * Maximum number of referral loops
- *
- * @var array
- */
- var $_maxReferralCount = 15;
-
- /**
- * Constructor.
- *
- * Sets up the object, connects to the server and logs in. Stores any
- * generated error in $this->_error, which can be retrieved using the
- * getError() method.
- *
- * @param string $user Login username.
- * @param string $pass Login password.
- * @param string $host Hostname of server.
- * @param string $port Port of server.
- * @param string $logintype Type of login to perform (see
- * $supportedAuthMethods).
- * @param string $euser Effective user. If authenticating as an
- * administrator, login as this user.
- * @param boolean $debug Whether to enable debugging (@see setDebug()).
- * @param string $bypassAuth Skip the authentication phase. Useful if the
- * socket is already open.
- * @param boolean $useTLS Use TLS if available.
- * @param array $options Additional options for
- * stream_context_create().
- * @param mixed $handler A callback handler for the debug output.
- */
- function Net_Sieve($user = null, $pass = null, $host = 'localhost',
- $port = 2000, $logintype = '', $euser = '',
- $debug = false, $bypassAuth = false, $useTLS = true,
- $options = null, $handler = null)
- {
- $this->_state = NET_SIEVE_STATE_DISCONNECTED;
- $this->_data['user'] = $user;
- $this->_data['pass'] = $pass;
- $this->_data['host'] = $host;
- $this->_data['port'] = $port;
- $this->_data['logintype'] = $logintype;
- $this->_data['euser'] = $euser;
- $this->_sock = new Net_Socket();
- $this->_bypassAuth = $bypassAuth;
- $this->_useTLS = $useTLS;
- $this->_options = $options;
- $this->setDebug($debug, $handler);
-
- /* Try to include the Auth_SASL package. If the package is not
- * available, we disable the authentication methods that depend upon
- * it. */
- if ((@include_once 'Auth/SASL.php') === false) {
- $this->_debug('Auth_SASL not present');
- foreach ($this->supportedSASLAuthMethods as $SASLMethod) {
- $pos = array_search($SASLMethod, $this->supportedAuthMethods);
- $this->_debug('Disabling method ' . $SASLMethod);
- unset($this->supportedAuthMethods[$pos]);
- }
- }
-
- if (strlen($user) && strlen($pass)) {
- $this->_error = $this->_handleConnectAndLogin();
- }
- }
-
- /**
- * Returns any error that may have been generated in the constructor.
- *
- * @return boolean|PEAR_Error False if no error, PEAR_Error otherwise.
- */
- function getError()
- {
- return PEAR::isError($this->_error) ? $this->_error : false;
- }
-
- /**
- * Sets the debug state and handler function.
- *
- * @param boolean $debug Whether to enable debugging.
- * @param string $handler A custom debug handler. Must be a valid callback.
- *
- * @return void
- */
- function setDebug($debug = true, $handler = null)
- {
- $this->_debug = $debug;
- $this->_debug_handler = $handler;
- }
-
- /**
- * Connects to the server and logs in.
- *
- * @return boolean True on success, PEAR_Error on failure.
- */
- function _handleConnectAndLogin()
- {
- if (PEAR::isError($res = $this->connect($this->_data['host'], $this->_data['port'], $this->_options, $this->_useTLS))) {
- return $res;
- }
- if ($this->_bypassAuth === false) {
- if (PEAR::isError($res = $this->login($this->_data['user'], $this->_data['pass'], $this->_data['logintype'], $this->_data['euser'], $this->_bypassAuth))) {
- return $res;
- }
- }
- return true;
- }
-
- /**
- * Handles connecting to the server and checks the response validity.
- *
- * @param string $host Hostname of server.
- * @param string $port Port of server.
- * @param array $options List of options to pass to
- * stream_context_create().
- * @param boolean $useTLS Use TLS if available.
- *
- * @return boolean True on success, PEAR_Error otherwise.
- */
- function connect($host, $port, $options = null, $useTLS = true)
- {
- $this->_data['host'] = $host;
- $this->_data['port'] = $port;
- $this->_useTLS = $useTLS;
- if (is_array($options)) {
- $this->_options = array_merge($this->_options, $options);
- }
-
- if (NET_SIEVE_STATE_DISCONNECTED != $this->_state) {
- return PEAR::raiseError('Not currently in DISCONNECTED state', 1);
- }
-
- if (PEAR::isError($res = $this->_sock->connect($host, $port, false, 5, $options))) {
- return $res;
- }
-
- if ($this->_bypassAuth) {
- $this->_state = NET_SIEVE_STATE_TRANSACTION;
- } else {
- $this->_state = NET_SIEVE_STATE_AUTHORISATION;
- if (PEAR::isError($res = $this->_doCmd())) {
- return $res;
- }
- }
-
- // Explicitly ask for the capabilities in case the connection is
- // picked up from an existing connection.
- if (PEAR::isError($res = $this->_cmdCapability())) {
- return PEAR::raiseError(
- 'Failed to connect, server said: ' . $res->getMessage(), 2
- );
- }
-
- // Check if we can enable TLS via STARTTLS.
- if ($useTLS && !empty($this->_capability['starttls'])
- && function_exists('stream_socket_enable_crypto')
- ) {
- if (PEAR::isError($res = $this->_startTLS())) {
- return $res;
- }
- }
-
- return true;
- }
-
- /**
- * Disconnect from the Sieve server.
- *
- * @param boolean $sendLogoutCMD Whether to send LOGOUT command before
- * disconnecting.
- *
- * @return boolean True on success, PEAR_Error otherwise.
- */
- function disconnect($sendLogoutCMD = true)
- {
- return $this->_cmdLogout($sendLogoutCMD);
- }
-
- /**
- * Logs into server.
- *
- * @param string $user Login username.
- * @param string $pass Login password.
- * @param string $logintype Type of login method to use.
- * @param string $euser Effective UID (perform on behalf of $euser).
- * @param boolean $bypassAuth Do not perform authentication.
- *
- * @return boolean True on success, PEAR_Error otherwise.
- */
- function login($user, $pass, $logintype = null, $euser = '', $bypassAuth = false)
- {
- $this->_data['user'] = $user;
- $this->_data['pass'] = $pass;
- $this->_data['logintype'] = $logintype;
- $this->_data['euser'] = $euser;
- $this->_bypassAuth = $bypassAuth;
-
- if (NET_SIEVE_STATE_AUTHORISATION != $this->_state) {
- return PEAR::raiseError('Not currently in AUTHORISATION state', 1);
- }
-
- if (!$bypassAuth ) {
- if (PEAR::isError($res = $this->_cmdAuthenticate($user, $pass, $logintype, $euser))) {
- return $res;
- }
- }
- $this->_state = NET_SIEVE_STATE_TRANSACTION;
-
- return true;
- }
-
- /**
- * Returns an indexed array of scripts currently on the server.
- *
- * @return array Indexed array of scriptnames.
- */
- function listScripts()
- {
- if (is_array($scripts = $this->_cmdListScripts())) {
- $this->_active = $scripts[1];
- return $scripts[0];
- } else {
- return $scripts;
- }
- }
-
- /**
- * Returns the active script.
- *
- * @return string The active scriptname.
- */
- function getActive()
- {
- if (!empty($this->_active)) {
- return $this->_active;
- }
- if (is_array($scripts = $this->_cmdListScripts())) {
- $this->_active = $scripts[1];
- return $scripts[1];
- }
- }
-
- /**
- * Sets the active script.
- *
- * @param string $scriptname The name of the script to be set as active.
- *
- * @return boolean True on success, PEAR_Error on failure.
- */
- function setActive($scriptname)
- {
- return $this->_cmdSetActive($scriptname);
- }
-
- /**
- * Retrieves a script.
- *
- * @param string $scriptname The name of the script to be retrieved.
- *
- * @return string The script on success, PEAR_Error on failure.
- */
- function getScript($scriptname)
- {
- return $this->_cmdGetScript($scriptname);
- }
-
- /**
- * Adds a script to the server.
- *
- * @param string $scriptname Name of the script.
- * @param string $script The script content.
- * @param boolean $makeactive Whether to make this the active script.
- *
- * @return boolean True on success, PEAR_Error on failure.
- */
- function installScript($scriptname, $script, $makeactive = false)
- {
- if (PEAR::isError($res = $this->_cmdPutScript($scriptname, $script))) {
- return $res;
- }
- if ($makeactive) {
- return $this->_cmdSetActive($scriptname);
- }
- return true;
- }
-
- /**
- * Removes a script from the server.
- *
- * @param string $scriptname Name of the script.
- *
- * @return boolean True on success, PEAR_Error on failure.
- */
- function removeScript($scriptname)
- {
- return $this->_cmdDeleteScript($scriptname);
- }
-
- /**
- * Checks if the server has space to store the script by the server.
- *
- * @param string $scriptname The name of the script to mark as active.
- * @param integer $size The size of the script.
- *
- * @return boolean|PEAR_Error True if there is space, PEAR_Error otherwise.
- *
- * @todo Rename to hasSpace()
- */
- function haveSpace($scriptname, $size)
- {
- if (NET_SIEVE_STATE_TRANSACTION != $this->_state) {
- return PEAR::raiseError('Not currently in TRANSACTION state', 1);
- }
-
- if (PEAR::isError($res = $this->_doCmd(sprintf('HAVESPACE %s %d', $this->_escape($scriptname), $size)))) {
- return $res;
- }
- return true;
- }
-
- /**
- * Returns the list of extensions the server supports.
- *
- * @return array List of extensions or PEAR_Error on failure.
- */
- function getExtensions()
- {
- if (NET_SIEVE_STATE_DISCONNECTED == $this->_state) {
- return PEAR::raiseError('Not currently connected', 7);
- }
- return $this->_capability['extensions'];
- }
-
- /**
- * Returns whether the server supports an extension.
- *
- * @param string $extension The extension to check.
- *
- * @return boolean Whether the extension is supported or PEAR_Error on
- * failure.
- */
- function hasExtension($extension)
- {
- if (NET_SIEVE_STATE_DISCONNECTED == $this->_state) {
- return PEAR::raiseError('Not currently connected', 7);
- }
-
- $extension = trim($this->_toUpper($extension));
- if (is_array($this->_capability['extensions'])) {
- foreach ($this->_capability['extensions'] as $ext) {
- if ($ext == $extension) {
- return true;
- }
- }
- }
-
- return false;
- }
-
- /**
- * Returns the list of authentication methods the server supports.
- *
- * @return array List of authentication methods or PEAR_Error on failure.
- */
- function getAuthMechs()
- {
- if (NET_SIEVE_STATE_DISCONNECTED == $this->_state) {
- return PEAR::raiseError('Not currently connected', 7);
- }
- return $this->_capability['sasl'];
- }
-
- /**
- * Returns whether the server supports an authentication method.
- *
- * @param string $method The method to check.
- *
- * @return boolean Whether the method is supported or PEAR_Error on
- * failure.
- */
- function hasAuthMech($method)
- {
- if (NET_SIEVE_STATE_DISCONNECTED == $this->_state) {
- return PEAR::raiseError('Not currently connected', 7);
- }
-
- $method = trim($this->_toUpper($method));
- if (is_array($this->_capability['sasl'])) {
- foreach ($this->_capability['sasl'] as $sasl) {
- if ($sasl == $method) {
- return true;
- }
- }
- }
-
- return false;
- }
-
- /**
- * Handles the authentication using any known method.
- *
- * @param string $uid The userid to authenticate as.
- * @param string $pwd The password to authenticate with.
- * @param string $userMethod The method to use. If empty, the class chooses
- * the best (strongest) available method.
- * @param string $euser The effective uid to authenticate as.
- *
- * @return void
- */
- function _cmdAuthenticate($uid, $pwd, $userMethod = null, $euser = '')
- {
- if (PEAR::isError($method = $this->_getBestAuthMethod($userMethod))) {
- return $method;
- }
- switch ($method) {
- case 'DIGEST-MD5':
- return $this->_authDigestMD5($uid, $pwd, $euser);
- case 'CRAM-MD5':
- $result = $this->_authCRAMMD5($uid, $pwd, $euser);
- break;
- case 'LOGIN':
- $result = $this->_authLOGIN($uid, $pwd, $euser);
- break;
- case 'PLAIN':
- $result = $this->_authPLAIN($uid, $pwd, $euser);
- break;
- case 'EXTERNAL':
- $result = $this->_authEXTERNAL($uid, $pwd, $euser);
- break;
- default :
- $result = PEAR::raiseError(
- $method . ' is not a supported authentication method'
- );
- break;
- }
-
- if (PEAR::isError($res = $this->_doCmd())) {
- return $res;
- }
-
- // Query the server capabilities again now that we are authenticated.
- if (PEAR::isError($res = $this->_cmdCapability())) {
- return PEAR::raiseError(
- 'Failed to connect, server said: ' . $res->getMessage(), 2
- );
- }
-
- return $result;
- }
-
- /**
- * Authenticates the user using the PLAIN method.
- *
- * @param string $user The userid to authenticate as.
- * @param string $pass The password to authenticate with.
- * @param string $euser The effective uid to authenticate as.
- *
- * @return void
- */
- function _authPLAIN($user, $pass, $euser)
- {
- return $this->_sendCmd(
- sprintf(
- 'AUTHENTICATE "PLAIN" "%s"',
- base64_encode($euser . chr(0) . $user . chr(0) . $pass)
- )
- );
- }
-
- /**
- * Authenticates the user using the LOGIN method.
- *
- * @param string $user The userid to authenticate as.
- * @param string $pass The password to authenticate with.
- * @param string $euser The effective uid to authenticate as.
- *
- * @return void
- */
- function _authLOGIN($user, $pass, $euser)
- {
- if (PEAR::isError($result = $this->_sendCmd('AUTHENTICATE "LOGIN"'))) {
- return $result;
- }
- if (PEAR::isError($result = $this->_doCmd('"' . base64_encode($user) . '"', true))) {
- return $result;
- }
- return $this->_doCmd('"' . base64_encode($pass) . '"', true);
- }
-
- /**
- * Authenticates the user using the CRAM-MD5 method.
- *
- * @param string $user The userid to authenticate as.
- * @param string $pass The password to authenticate with.
- * @param string $euser The effective uid to authenticate as.
- *
- * @return void
- */
- function _authCRAMMD5($user, $pass, $euser)
- {
- if (PEAR::isError($challenge = $this->_doCmd('AUTHENTICATE "CRAM-MD5"', true))) {
- return $challenge;
- }
-
- $challenge = base64_decode(trim($challenge));
- $cram = Auth_SASL::factory('crammd5');
- if (PEAR::isError($response = $cram->getResponse($user, $pass, $challenge))) {
- return $response;
- }
-
- return $this->_sendStringResponse(base64_encode($response));
- }
-
- /**
- * Authenticates the user using the DIGEST-MD5 method.
- *
- * @param string $user The userid to authenticate as.
- * @param string $pass The password to authenticate with.
- * @param string $euser The effective uid to authenticate as.
- *
- * @return void
- */
- function _authDigestMD5($user, $pass, $euser)
- {
- if (PEAR::isError($challenge = $this->_doCmd('AUTHENTICATE "DIGEST-MD5"', true))) {
- return $challenge;
- }
-
- $challenge = base64_decode(trim($challenge));
- $digest = Auth_SASL::factory('digestmd5');
- // @todo Really 'localhost'?
- if (PEAR::isError($response = $digest->getResponse($user, $pass, $challenge, 'localhost', 'sieve', $euser))) {
- return $response;
- }
-
- if (PEAR::isError($result = $this->_sendStringResponse(base64_encode($response)))) {
- return $result;
- }
- if (PEAR::isError($result = $this->_doCmd('', true))) {
- return $result;
- }
- if ($this->_toUpper(substr($result, 0, 2)) == 'OK') {
- return;
- }
-
- /* We don't use the protocol's third step because SIEVE doesn't allow
- * subsequent authentication, so we just silently ignore it. */
- if (PEAR::isError($result = $this->_sendStringResponse(''))) {
- return $result;
- }
-
- return $this->_doCmd();
- }
-
- /**
- * Authenticates the user using the EXTERNAL method.
- *
- * @param string $user The userid to authenticate as.
- * @param string $pass The password to authenticate with.
- * @param string $euser The effective uid to authenticate as.
- *
- * @return void
- *
- * @since 1.1.7
- */
- function _authEXTERNAL($user, $pass, $euser)
- {
- $cmd = sprintf(
- 'AUTHENTICATE "EXTERNAL" "%s"',
- base64_encode(strlen($euser) ? $euser : $user)
- );
- return $this->_sendCmd($cmd);
- }
-
- /**
- * Removes a script from the server.
- *
- * @param string $scriptname Name of the script to delete.
- *
- * @return boolean True on success, PEAR_Error otherwise.
- */
- function _cmdDeleteScript($scriptname)
- {
- if (NET_SIEVE_STATE_TRANSACTION != $this->_state) {
- return PEAR::raiseError('Not currently in AUTHORISATION state', 1);
- }
-
- if (PEAR::isError($res = $this->_doCmd(sprintf('DELETESCRIPT %s', $this->_escape($scriptname))))) {
- return $res;
- }
- return true;
- }
-
- /**
- * Retrieves the contents of the named script.
- *
- * @param string $scriptname Name of the script to retrieve.
- *
- * @return string The script if successful, PEAR_Error otherwise.
- */
- function _cmdGetScript($scriptname)
- {
- if (NET_SIEVE_STATE_TRANSACTION != $this->_state) {
- return PEAR::raiseError('Not currently in AUTHORISATION state', 1);
- }
-
- if (PEAR::isError($res = $this->_doCmd(sprintf('GETSCRIPT %s', $this->_escape($scriptname))))) {
- return $res;
- }
-
- return preg_replace('/^{[0-9]+}\r\n/', '', $res);
- }
-
- /**
- * Sets the active script, i.e. the one that gets run on new mail by the
- * server.
- *
- * @param string $scriptname The name of the script to mark as active.
- *
- * @return boolean True on success, PEAR_Error otherwise.
- */
- function _cmdSetActive($scriptname)
- {
- if (NET_SIEVE_STATE_TRANSACTION != $this->_state) {
- return PEAR::raiseError('Not currently in AUTHORISATION state', 1);
- }
-
- if (PEAR::isError($res = $this->_doCmd(sprintf('SETACTIVE %s', $this->_escape($scriptname))))) {
- return $res;
- }
-
- $this->_activeScript = $scriptname;
- return true;
- }
-
- /**
- * Returns the list of scripts on the server.
- *
- * @return array An array with the list of scripts in the first element
- * and the active script in the second element on success,
- * PEAR_Error otherwise.
- */
- function _cmdListScripts()
- {
- if (NET_SIEVE_STATE_TRANSACTION != $this->_state) {
- return PEAR::raiseError('Not currently in AUTHORISATION state', 1);
- }
-
- if (PEAR::isError($res = $this->_doCmd('LISTSCRIPTS'))) {
- return $res;
- }
-
- $scripts = array();
- $activescript = null;
- $res = explode("\r\n", $res);
- foreach ($res as $value) {
- if (preg_match('/^"(.*)"( ACTIVE)?$/i', $value, $matches)) {
- $script_name = stripslashes($matches[1]);
- $scripts[] = $script_name;
- if (!empty($matches[2])) {
- $activescript = $script_name;
- }
- }
- }
-
- return array($scripts, $activescript);
- }
-
- /**
- * Adds a script to the server.
- *
- * @param string $scriptname Name of the new script.
- * @param string $scriptdata The new script.
- *
- * @return boolean True on success, PEAR_Error otherwise.
- */
- function _cmdPutScript($scriptname, $scriptdata)
- {
- if (NET_SIEVE_STATE_TRANSACTION != $this->_state) {
- return PEAR::raiseError('Not currently in AUTHORISATION state', 1);
- }
-
- $stringLength = $this->_getLineLength($scriptdata);
- $command = sprintf("PUTSCRIPT %s {%d+}\r\n%s",
- $this->_escape($scriptname),
- $stringLength,
- $scriptdata);
- if (PEAR::isError($res = $this->_doCmd($command))) {
- return $res;
- }
-
- return true;
- }
-
- /**
- * Logs out of the server and terminates the connection.
- *
- * @param boolean $sendLogoutCMD Whether to send LOGOUT command before
- * disconnecting.
- *
- * @return boolean True on success, PEAR_Error otherwise.
- */
- function _cmdLogout($sendLogoutCMD = true)
- {
- if (NET_SIEVE_STATE_DISCONNECTED == $this->_state) {
- return PEAR::raiseError('Not currently connected', 1);
- }
-
- if ($sendLogoutCMD) {
- if (PEAR::isError($res = $this->_doCmd('LOGOUT'))) {
- return $res;
- }
- }
-
- $this->_sock->disconnect();
- $this->_state = NET_SIEVE_STATE_DISCONNECTED;
-
- return true;
- }
-
- /**
- * Sends the CAPABILITY command
- *
- * @return boolean True on success, PEAR_Error otherwise.
- */
- function _cmdCapability()
- {
- if (NET_SIEVE_STATE_DISCONNECTED == $this->_state) {
- return PEAR::raiseError('Not currently connected', 1);
- }
- if (PEAR::isError($res = $this->_doCmd('CAPABILITY'))) {
- return $res;
- }
- $this->_parseCapability($res);
- return true;
- }
-
- /**
- * Parses the response from the CAPABILITY command and stores the result
- * in $_capability.
- *
- * @param string $data The response from the capability command.
- *
- * @return void
- */
- function _parseCapability($data)
- {
- // Clear the cached capabilities.
- $this->_capability = array('sasl' => array(),
- 'extensions' => array());
-
- $data = preg_split('/\r?\n/', $this->_toUpper($data), -1, PREG_SPLIT_NO_EMPTY);
-
- for ($i = 0; $i < count($data); $i++) {
- if (!preg_match('/^"([A-Z]+)"( "(.*)")?$/', $data[$i], $matches)) {
- continue;
- }
- switch ($matches[1]) {
- case 'IMPLEMENTATION':
- $this->_capability['implementation'] = $matches[3];
- break;
-
- case 'SASL':
- $this->_capability['sasl'] = preg_split('/\s+/', $matches[3]);
- break;
-
- case 'SIEVE':
- $this->_capability['extensions'] = preg_split('/\s+/', $matches[3]);
- break;
-
- case 'STARTTLS':
- $this->_capability['starttls'] = true;
- break;
- }
- }
- }
-
- /**
- * Sends a command to the server
- *
- * @param string $cmd The command to send.
- *
- * @return void
- */
- function _sendCmd($cmd)
- {
- $status = $this->_sock->getStatus();
- if (PEAR::isError($status) || $status['eof']) {
- return PEAR::raiseError('Failed to write to socket: connection lost');
- }
- if (PEAR::isError($error = $this->_sock->write($cmd . "\r\n"))) {
- return PEAR::raiseError(
- 'Failed to write to socket: ' . $error->getMessage()
- );
- }
- $this->_debug("C: $cmd");
- }
-
- /**
- * Sends a string response to the server.
- *
- * @param string $str The string to send.
- *
- * @return void
- */
- function _sendStringResponse($str)
- {
- return $this->_sendCmd('{' . $this->_getLineLength($str) . "+}\r\n" . $str);
- }
-
- /**
- * Receives a single line from the server.
- *
- * @return string The server response line.
- */
- function _recvLn()
- {
- if (PEAR::isError($lastline = $this->_sock->gets(8192))) {
- return PEAR::raiseError(
- 'Failed to read from socket: ' . $lastline->getMessage()
- );
- }
-
- $lastline = rtrim($lastline);
- $this->_debug("S: $lastline");
-
- if ($lastline === '') {
- return PEAR::raiseError('Failed to read from socket');
- }
-
- return $lastline;
- }
-
- /**
- * Receives a number of bytes from the server.
- *
- * @param integer $length Number of bytes to read.
- *
- * @return string The server response.
- */
- function _recvBytes($length)
- {
- $response = '';
- $response_length = 0;
- while ($response_length < $length) {
- $response .= $this->_sock->read($length - $response_length);
- $response_length = $this->_getLineLength($response);
- }
- $this->_debug('S: ' . rtrim($response));
- return $response;
- }
-
- /**
- * Send a command and retrieves a response from the server.
- *
- * @param string $cmd The command to send.
- * @param boolean $auth Whether this is an authentication command.
- *
- * @return string|PEAR_Error Reponse string if an OK response, PEAR_Error
- * if a NO response.
- */
- function _doCmd($cmd = '', $auth = false)
- {
- $referralCount = 0;
- while ($referralCount < $this->_maxReferralCount) {
- if (strlen($cmd)) {
- if (PEAR::isError($error = $this->_sendCmd($cmd))) {
- return $error;
- }
- }
-
- $response = '';
- while (true) {
- if (PEAR::isError($line = $this->_recvLn())) {
- return $line;
- }
- $uc_line = $this->_toUpper($line);
-
- if ('OK' == substr($uc_line, 0, 2)) {
- $response .= $line;
- return rtrim($response);
- }
-
- if ('NO' == substr($uc_line, 0, 2)) {
- // Check for string literal error message.
- if (preg_match('/{([0-9]+)}$/', $line, $matches)) {
- $line = substr($line, 0, -(strlen($matches[1])+2))
- . str_replace(
- "\r\n", ' ', $this->_recvBytes($matches[1] + 2)
- );
- }
- return PEAR::raiseError(trim($response . substr($line, 2)), 3);
- }
-
- if ('BYE' == substr($uc_line, 0, 3)) {
- if (PEAR::isError($error = $this->disconnect(false))) {
- return PEAR::raiseError(
- 'Cannot handle BYE, the error was: '
- . $error->getMessage(),
- 4
- );
- }
- // Check for referral, then follow it. Otherwise, carp an
- // error.
- if (preg_match('/^bye \(referral "(sieve:\/\/)?([^"]+)/i', $line, $matches)) {
- // Replace the old host with the referral host
- // preserving any protocol prefix.
- $this->_data['host'] = preg_replace(
- '/\w+(?!(\w|\:\/\/)).*/', $matches[2],
- $this->_data['host']
- );
- if (PEAR::isError($error = $this->_handleConnectAndLogin())) {
- return PEAR::raiseError(
- 'Cannot follow referral to '
- . $this->_data['host'] . ', the error was: '
- . $error->getMessage(),
- 5
- );
- }
- break;
- }
- return PEAR::raiseError(trim($response . $line), 6);
- }
-
- if (preg_match('/^{([0-9]+)}/', $line, $matches)) {
- // Matches literal string responses.
- $line = $this->_recvBytes($matches[1] + 2);
- if (!$auth) {
- // Receive the pending OK only if we aren't
- // authenticating since string responses during
- // authentication don't need an OK.
- $this->_recvLn();
- }
- return $line;
- }
-
- if ($auth) {
- // String responses during authentication don't need an
- // OK.
- $response .= $line;
- return rtrim($response);
- }
-
- $response .= $line . "\r\n";
- $referralCount++;
- }
- }
-
- return PEAR::raiseError('Max referral count (' . $referralCount . ') reached. Cyrus murder loop error?', 7);
- }
-
- /**
- * Returns the name of the best authentication method that the server
- * has advertised.
- *
- * @param string $userMethod Only consider this method as available.
- *
- * @return string The name of the best supported authentication method or
- * a PEAR_Error object on failure.
- */
- function _getBestAuthMethod($userMethod = null)
- {
- if (!isset($this->_capability['sasl'])) {
- return PEAR::raiseError('This server doesn\'t support any authentication methods. SASL problem?');
- }
- if (!$this->_capability['sasl']) {
- return PEAR::raiseError('This server doesn\'t support any authentication methods.');
- }
-
- if ($userMethod) {
- if (in_array($userMethod, $this->_capability['sasl'])) {
- return $userMethod;
- }
- return PEAR::raiseError(
- sprintf('No supported authentication method found. The server supports these methods: %s, but we want to use: %s',
- implode(', ', $this->_capability['sasl']),
- $userMethod));
- }
-
- foreach ($this->supportedAuthMethods as $method) {
- if (in_array($method, $this->_capability['sasl'])) {
- return $method;
- }
- }
-
- return PEAR::raiseError(
- sprintf('No supported authentication method found. The server supports these methods: %s, but we only support: %s',
- implode(', ', $this->_capability['sasl']),
- implode(', ', $this->supportedAuthMethods)));
- }
-
- /**
- * Starts a TLS connection.
- *
- * @return boolean True on success, PEAR_Error on failure.
- */
- function _startTLS()
- {
- if (PEAR::isError($res = $this->_doCmd('STARTTLS'))) {
- return $res;
- }
-
- if (!stream_socket_enable_crypto($this->_sock->fp, true, STREAM_CRYPTO_METHOD_TLS_CLIENT)) {
- return PEAR::raiseError('Failed to establish TLS connection', 2);
- }
-
- $this->_debug('STARTTLS negotiation successful');
-
- // The server should be sending a CAPABILITY response after
- // negotiating TLS. Read it, and ignore if it doesn't.
- // Unfortunately old Cyrus versions are broken and don't send a
- // CAPABILITY response, thus we would wait here forever. Parse the
- // Cyrus version and work around this broken behavior.
- if (!preg_match('/^CYRUS TIMSIEVED V([0-9.]+)/', $this->_capability['implementation'], $matches) ||
- version_compare($matches[1], '2.3.10', '>=')) {
- $this->_doCmd();
- }
-
- // Query the server capabilities again now that we are under
- // encryption.
- if (PEAR::isError($res = $this->_cmdCapability())) {
- return PEAR::raiseError(
- 'Failed to connect, server said: ' . $res->getMessage(), 2
- );
- }
-
- return true;
- }
-
- /**
- * Returns the length of a string.
- *
- * @param string $string A string.
- *
- * @return integer The length of the string.
- */
- function _getLineLength($string)
- {
- if (extension_loaded('mbstring')) {
- return mb_strlen($string, 'latin1');
- } else {
- return strlen($string);
- }
- }
-
- /**
- * Locale independant strtoupper() implementation.
- *
- * @param string $string The string to convert to lowercase.
- *
- * @return string The lowercased string, based on ASCII encoding.
- */
- function _toUpper($string)
- {
- $language = setlocale(LC_CTYPE, 0);
- setlocale(LC_CTYPE, 'C');
- $string = strtoupper($string);
- setlocale(LC_CTYPE, $language);
- return $string;
- }
-
- /**
- * Converts strings into RFC's quoted-string or literal-c2s form.
- *
- * @param string $string The string to convert.
- *
- * @return string Result string.
- */
- function _escape($string)
- {
- // Some implementations don't allow UTF-8 characters in quoted-string,
- // use literal-c2s.
- if (preg_match('/[^\x01-\x09\x0B-\x0C\x0E-\x7F]/', $string)) {
- return sprintf("{%d+}\r\n%s", $this->_getLineLength($string), $string);
- }
-
- return '"' . addcslashes($string, '\\"') . '"';
- }
-
- /**
- * Write debug text to the current debug output handler.
- *
- * @param string $message Debug message text.
- *
- * @return void
- */
- function _debug($message)
- {
- if ($this->_debug) {
- if ($this->_debug_handler) {
- call_user_func_array($this->_debug_handler, array(&$this, $message));
- } else {
- echo "$message\n";
- }
- }
- }
-}
diff --git a/program/lib/Net/Socket.php b/program/lib/Net/Socket.php
deleted file mode 100644
index bf1d1bbcd..000000000
--- a/program/lib/Net/Socket.php
+++ /dev/null
@@ -1,686 +0,0 @@
-<?php
-/**
- * Net_Socket
- *
- * PHP Version 4
- *
- * Copyright (c) 1997-2013 The PHP Group
- *
- * This source file is subject to version 2.0 of the PHP license,
- * that is bundled with this package in the file LICENSE, and is
- * available at through the world-wide-web at
- * http://www.php.net/license/2_02.txt.
- * If you did not receive a copy of the PHP license and are unable to
- * obtain it through the world-wide-web, please send a note to
- * license@php.net so we can mail you a copy immediately.
- *
- * Authors: Stig Bakken <ssb@php.net>
- * Chuck Hagenbuch <chuck@horde.org>
- *
- * @category Net
- * @package Net_Socket
- * @author Stig Bakken <ssb@php.net>
- * @author Chuck Hagenbuch <chuck@horde.org>
- * @copyright 1997-2003 The PHP Group
- * @license http://www.php.net/license/2_02.txt PHP 2.02
- * @link http://pear.php.net/packages/Net_Socket
- */
-
-require_once 'PEAR.php';
-
-define('NET_SOCKET_READ', 1);
-define('NET_SOCKET_WRITE', 2);
-define('NET_SOCKET_ERROR', 4);
-
-/**
- * Generalized Socket class.
- *
- * @category Net
- * @package Net_Socket
- * @author Stig Bakken <ssb@php.net>
- * @author Chuck Hagenbuch <chuck@horde.org>
- * @copyright 1997-2003 The PHP Group
- * @license http://www.php.net/license/2_02.txt PHP 2.02
- * @link http://pear.php.net/packages/Net_Socket
- */
-class Net_Socket extends PEAR
-{
- /**
- * Socket file pointer.
- * @var resource $fp
- */
- var $fp = null;
-
- /**
- * Whether the socket is blocking. Defaults to true.
- * @var boolean $blocking
- */
- var $blocking = true;
-
- /**
- * Whether the socket is persistent. Defaults to false.
- * @var boolean $persistent
- */
- var $persistent = false;
-
- /**
- * The IP address to connect to.
- * @var string $addr
- */
- var $addr = '';
-
- /**
- * The port number to connect to.
- * @var integer $port
- */
- var $port = 0;
-
- /**
- * Number of seconds to wait on socket operations before assuming
- * there's no more data. Defaults to no timeout.
- * @var integer|float $timeout
- */
- var $timeout = null;
-
- /**
- * Number of bytes to read at a time in readLine() and
- * readAll(). Defaults to 2048.
- * @var integer $lineLength
- */
- var $lineLength = 2048;
-
- /**
- * The string to use as a newline terminator. Usually "\r\n" or "\n".
- * @var string $newline
- */
- var $newline = "\r\n";
-
- /**
- * Connect to the specified port. If called when the socket is
- * already connected, it disconnects and connects again.
- *
- * @param string $addr IP address or host name (may be with protocol prefix).
- * @param integer $port TCP port number.
- * @param boolean $persistent (optional) Whether the connection is
- * persistent (kept open between requests
- * by the web server).
- * @param integer $timeout (optional) Connection socket timeout.
- * @param array $options See options for stream_context_create.
- *
- * @access public
- *
- * @return boolean|PEAR_Error True on success or a PEAR_Error on failure.
- */
- function connect($addr, $port = 0, $persistent = null,
- $timeout = null, $options = null)
- {
- if (is_resource($this->fp)) {
- @fclose($this->fp);
- $this->fp = null;
- }
-
- if (!$addr) {
- return $this->raiseError('$addr cannot be empty');
- } else if (strspn($addr, ':.0123456789') == strlen($addr)) {
- $this->addr = strpos($addr, ':') !== false ? '['.$addr.']' : $addr;
- } else {
- $this->addr = $addr;
- }
-
- $this->port = $port % 65536;
-
- if ($persistent !== null) {
- $this->persistent = $persistent;
- }
-
- $openfunc = $this->persistent ? 'pfsockopen' : 'fsockopen';
- $errno = 0;
- $errstr = '';
-
- $old_track_errors = @ini_set('track_errors', 1);
-
- if ($timeout <= 0) {
- $timeout = @ini_get('default_socket_timeout');
- }
-
- if ($options && function_exists('stream_context_create')) {
- $context = stream_context_create($options);
-
- // Since PHP 5 fsockopen doesn't allow context specification
- if (function_exists('stream_socket_client')) {
- $flags = STREAM_CLIENT_CONNECT;
-
- if ($this->persistent) {
- $flags = STREAM_CLIENT_PERSISTENT;
- }
-
- $addr = $this->addr . ':' . $this->port;
- $fp = stream_socket_client($addr, $errno, $errstr,
- $timeout, $flags, $context);
- } else {
- $fp = @$openfunc($this->addr, $this->port, $errno,
- $errstr, $timeout, $context);
- }
- } else {
- $fp = @$openfunc($this->addr, $this->port, $errno, $errstr, $timeout);
- }
-
- if (!$fp) {
- if ($errno == 0 && !strlen($errstr) && isset($php_errormsg)) {
- $errstr = $php_errormsg;
- }
- @ini_set('track_errors', $old_track_errors);
- return $this->raiseError($errstr, $errno);
- }
-
- @ini_set('track_errors', $old_track_errors);
- $this->fp = $fp;
- $this->setTimeout();
- return $this->setBlocking($this->blocking);
- }
-
- /**
- * Disconnects from the peer, closes the socket.
- *
- * @access public
- * @return mixed true on success or a PEAR_Error instance otherwise
- */
- function disconnect()
- {
- if (!is_resource($this->fp)) {
- return $this->raiseError('not connected');
- }
-
- @fclose($this->fp);
- $this->fp = null;
- return true;
- }
-
- /**
- * Set the newline character/sequence to use.
- *
- * @param string $newline Newline character(s)
- * @return boolean True
- */
- function setNewline($newline)
- {
- $this->newline = $newline;
- return true;
- }
-
- /**
- * Find out if the socket is in blocking mode.
- *
- * @access public
- * @return boolean The current blocking mode.
- */
- function isBlocking()
- {
- return $this->blocking;
- }
-
- /**
- * Sets whether the socket connection should be blocking or
- * not. A read call to a non-blocking socket will return immediately
- * if there is no data available, whereas it will block until there
- * is data for blocking sockets.
- *
- * @param boolean $mode True for blocking sockets, false for nonblocking.
- *
- * @access public
- * @return mixed true on success or a PEAR_Error instance otherwise
- */
- function setBlocking($mode)
- {
- if (!is_resource($this->fp)) {
- return $this->raiseError('not connected');
- }
-
- $this->blocking = $mode;
- stream_set_blocking($this->fp, (int)$this->blocking);
- return true;
- }
-
- /**
- * Sets the timeout value on socket descriptor,
- * expressed in the sum of seconds and microseconds
- *
- * @param integer $seconds Seconds.
- * @param integer $microseconds Microseconds, optional.
- *
- * @access public
- * @return mixed True on success or false on failure or
- * a PEAR_Error instance when not connected
- */
- function setTimeout($seconds = null, $microseconds = null)
- {
- if (!is_resource($this->fp)) {
- return $this->raiseError('not connected');
- }
-
- if ($seconds === null && $microseconds === null) {
- $seconds = (int) $this->timeout;
- $microseconds = (int) (($this->timeout - $seconds) * 1000000);
- } else {
- $this->timeout = $seconds + $microseconds/1000000;
- }
-
- if ($this->timeout > 0) {
- return stream_set_timeout($this->fp, (int) $seconds, (int) $microseconds);
- }
- else {
- return false;
- }
- }
-
- /**
- * Sets the file buffering size on the stream.
- * See php's stream_set_write_buffer for more information.
- *
- * @param integer $size Write buffer size.
- *
- * @access public
- * @return mixed on success or an PEAR_Error object otherwise
- */
- function setWriteBuffer($size)
- {
- if (!is_resource($this->fp)) {
- return $this->raiseError('not connected');
- }
-
- $returned = stream_set_write_buffer($this->fp, $size);
- if ($returned == 0) {
- return true;
- }
- return $this->raiseError('Cannot set write buffer.');
- }
-
- /**
- * Returns information about an existing socket resource.
- * Currently returns four entries in the result array:
- *
- * <p>
- * timed_out (bool) - The socket timed out waiting for data<br>
- * blocked (bool) - The socket was blocked<br>
- * eof (bool) - Indicates EOF event<br>
- * unread_bytes (int) - Number of bytes left in the socket buffer<br>
- * </p>
- *
- * @access public
- * @return mixed Array containing information about existing socket
- * resource or a PEAR_Error instance otherwise
- */
- function getStatus()
- {
- if (!is_resource($this->fp)) {
- return $this->raiseError('not connected');
- }
-
- return stream_get_meta_data($this->fp);
- }
-
- /**
- * Get a specified line of data
- *
- * @param int $size Reading ends when size - 1 bytes have been read,
- * or a newline or an EOF (whichever comes first).
- * If no size is specified, it will keep reading from
- * the stream until it reaches the end of the line.
- *
- * @access public
- * @return mixed $size bytes of data from the socket, or a PEAR_Error if
- * not connected. If an error occurs, FALSE is returned.
- */
- function gets($size = null)
- {
- if (!is_resource($this->fp)) {
- return $this->raiseError('not connected');
- }
-
- if (is_null($size)) {
- return @fgets($this->fp);
- } else {
- return @fgets($this->fp, $size);
- }
- }
-
- /**
- * Read a specified amount of data. This is guaranteed to return,
- * and has the added benefit of getting everything in one fread()
- * chunk; if you know the size of the data you're getting
- * beforehand, this is definitely the way to go.
- *
- * @param integer $size The number of bytes to read from the socket.
- *
- * @access public
- * @return $size bytes of data from the socket, or a PEAR_Error if
- * not connected.
- */
- function read($size)
- {
- if (!is_resource($this->fp)) {
- return $this->raiseError('not connected');
- }
-
- return @fread($this->fp, $size);
- }
-
- /**
- * Write a specified amount of data.
- *
- * @param string $data Data to write.
- * @param integer $blocksize Amount of data to write at once.
- * NULL means all at once.
- *
- * @access public
- * @return mixed If the socket is not connected, returns an instance of
- * PEAR_Error.
- * If the write succeeds, returns the number of bytes written.
- * If the write fails, returns false.
- * If the socket times out, returns an instance of PEAR_Error.
- */
- function write($data, $blocksize = null)
- {
- if (!is_resource($this->fp)) {
- return $this->raiseError('not connected');
- }
-
- if (is_null($blocksize) && !OS_WINDOWS) {
- $written = @fwrite($this->fp, $data);
-
- // Check for timeout or lost connection
- if (!$written) {
- $meta_data = $this->getStatus();
-
- if (!is_array($meta_data)) {
- return $meta_data; // PEAR_Error
- }
-
- if (!empty($meta_data['timed_out'])) {
- return $this->raiseError('timed out');
- }
- }
-
- return $written;
- } else {
- if (is_null($blocksize)) {
- $blocksize = 1024;
- }
-
- $pos = 0;
- $size = strlen($data);
- while ($pos < $size) {
- $written = @fwrite($this->fp, substr($data, $pos, $blocksize));
-
- // Check for timeout or lost connection
- if (!$written) {
- $meta_data = $this->getStatus();
-
- if (!is_array($meta_data)) {
- return $meta_data; // PEAR_Error
- }
-
- if (!empty($meta_data['timed_out'])) {
- return $this->raiseError('timed out');
- }
-
- return $written;
- }
-
- $pos += $written;
- }
-
- return $pos;
- }
- }
-
- /**
- * Write a line of data to the socket, followed by a trailing newline.
- *
- * @param string $data Data to write
- *
- * @access public
- * @return mixed fwrite() result, or PEAR_Error when not connected
- */
- function writeLine($data)
- {
- if (!is_resource($this->fp)) {
- return $this->raiseError('not connected');
- }
-
- return fwrite($this->fp, $data . $this->newline);
- }
-
- /**
- * Tests for end-of-file on a socket descriptor.
- *
- * Also returns true if the socket is disconnected.
- *
- * @access public
- * @return bool
- */
- function eof()
- {
- return (!is_resource($this->fp) || feof($this->fp));
- }
-
- /**
- * Reads a byte of data
- *
- * @access public
- * @return 1 byte of data from the socket, or a PEAR_Error if
- * not connected.
- */
- function readByte()
- {
- if (!is_resource($this->fp)) {
- return $this->raiseError('not connected');
- }
-
- return ord(@fread($this->fp, 1));
- }
-
- /**
- * Reads a word of data
- *
- * @access public
- * @return 1 word of data from the socket, or a PEAR_Error if
- * not connected.
- */
- function readWord()
- {
- if (!is_resource($this->fp)) {
- return $this->raiseError('not connected');
- }
-
- $buf = @fread($this->fp, 2);
- return (ord($buf[0]) + (ord($buf[1]) << 8));
- }
-
- /**
- * Reads an int of data
- *
- * @access public
- * @return integer 1 int of data from the socket, or a PEAR_Error if
- * not connected.
- */
- function readInt()
- {
- if (!is_resource($this->fp)) {
- return $this->raiseError('not connected');
- }
-
- $buf = @fread($this->fp, 4);
- return (ord($buf[0]) + (ord($buf[1]) << 8) +
- (ord($buf[2]) << 16) + (ord($buf[3]) << 24));
- }
-
- /**
- * Reads a zero-terminated string of data
- *
- * @access public
- * @return string, or a PEAR_Error if
- * not connected.
- */
- function readString()
- {
- if (!is_resource($this->fp)) {
- return $this->raiseError('not connected');
- }
-
- $string = '';
- while (($char = @fread($this->fp, 1)) != "\x00") {
- $string .= $char;
- }
- return $string;
- }
-
- /**
- * Reads an IP Address and returns it in a dot formatted string
- *
- * @access public
- * @return Dot formatted string, or a PEAR_Error if
- * not connected.
- */
- function readIPAddress()
- {
- if (!is_resource($this->fp)) {
- return $this->raiseError('not connected');
- }
-
- $buf = @fread($this->fp, 4);
- return sprintf('%d.%d.%d.%d', ord($buf[0]), ord($buf[1]),
- ord($buf[2]), ord($buf[3]));
- }
-
- /**
- * Read until either the end of the socket or a newline, whichever
- * comes first. Strips the trailing newline from the returned data.
- *
- * @access public
- * @return All available data up to a newline, without that
- * newline, or until the end of the socket, or a PEAR_Error if
- * not connected.
- */
- function readLine()
- {
- if (!is_resource($this->fp)) {
- return $this->raiseError('not connected');
- }
-
- $line = '';
-
- $timeout = time() + $this->timeout;
-
- while (!feof($this->fp) && (!$this->timeout || time() < $timeout)) {
- $line .= @fgets($this->fp, $this->lineLength);
- if (substr($line, -1) == "\n") {
- return rtrim($line, $this->newline);
- }
- }
- return $line;
- }
-
- /**
- * Read until the socket closes, or until there is no more data in
- * the inner PHP buffer. If the inner buffer is empty, in blocking
- * mode we wait for at least 1 byte of data. Therefore, in
- * blocking mode, if there is no data at all to be read, this
- * function will never exit (unless the socket is closed on the
- * remote end).
- *
- * @access public
- *
- * @return string All data until the socket closes, or a PEAR_Error if
- * not connected.
- */
- function readAll()
- {
- if (!is_resource($this->fp)) {
- return $this->raiseError('not connected');
- }
-
- $data = '';
- while (!feof($this->fp)) {
- $data .= @fread($this->fp, $this->lineLength);
- }
- return $data;
- }
-
- /**
- * Runs the equivalent of the select() system call on the socket
- * with a timeout specified by tv_sec and tv_usec.
- *
- * @param integer $state Which of read/write/error to check for.
- * @param integer $tv_sec Number of seconds for timeout.
- * @param integer $tv_usec Number of microseconds for timeout.
- *
- * @access public
- * @return False if select fails, integer describing which of read/write/error
- * are ready, or PEAR_Error if not connected.
- */
- function select($state, $tv_sec, $tv_usec = 0)
- {
- if (!is_resource($this->fp)) {
- return $this->raiseError('not connected');
- }
-
- $read = null;
- $write = null;
- $except = null;
- if ($state & NET_SOCKET_READ) {
- $read[] = $this->fp;
- }
- if ($state & NET_SOCKET_WRITE) {
- $write[] = $this->fp;
- }
- if ($state & NET_SOCKET_ERROR) {
- $except[] = $this->fp;
- }
- if (false === ($sr = stream_select($read, $write, $except,
- $tv_sec, $tv_usec))) {
- return false;
- }
-
- $result = 0;
- if (count($read)) {
- $result |= NET_SOCKET_READ;
- }
- if (count($write)) {
- $result |= NET_SOCKET_WRITE;
- }
- if (count($except)) {
- $result |= NET_SOCKET_ERROR;
- }
- return $result;
- }
-
- /**
- * Turns encryption on/off on a connected socket.
- *
- * @param bool $enabled Set this parameter to true to enable encryption
- * and false to disable encryption.
- * @param integer $type Type of encryption. See stream_socket_enable_crypto()
- * for values.
- *
- * @see http://se.php.net/manual/en/function.stream-socket-enable-crypto.php
- * @access public
- * @return false on error, true on success and 0 if there isn't enough data
- * and the user should try again (non-blocking sockets only).
- * A PEAR_Error object is returned if the socket is not
- * connected
- */
- function enableCrypto($enabled, $type)
- {
- if (version_compare(phpversion(), "5.1.0", ">=")) {
- if (!is_resource($this->fp)) {
- return $this->raiseError('not connected');
- }
- return @stream_socket_enable_crypto($this->fp, $enabled, $type);
- } else {
- $msg = 'Net_Socket::enableCrypto() requires php version >= 5.1.0';
- return $this->raiseError($msg);
- }
- }
-
-}
diff --git a/program/lib/PEAR.php b/program/lib/PEAR.php
deleted file mode 100644
index f4dfd968a..000000000
--- a/program/lib/PEAR.php
+++ /dev/null
@@ -1,1137 +0,0 @@
-<?php
-/**
- * PEAR, the PHP Extension and Application Repository
- *
- * PEAR class and PEAR_Error class
- *
- * PHP versions 4 and 5
- *
- * @category pear
- * @package PEAR
- * @author Sterling Hughes <sterling@php.net>
- * @author Stig Bakken <ssb@php.net>
- * @author Tomas V.V.Cox <cox@idecnet.com>
- * @author Greg Beaver <cellog@php.net>
- * @copyright 1997-2009 The Authors
- * @license http://opensource.org/licenses/bsd-license.php New BSD License
- * @version CVS: $Id$
- * @link http://pear.php.net/package/PEAR
- * @since File available since Release 0.1
- */
-
-/**#@+
- * ERROR constants
- */
-define('PEAR_ERROR_RETURN', 1);
-define('PEAR_ERROR_PRINT', 2);
-define('PEAR_ERROR_TRIGGER', 4);
-define('PEAR_ERROR_DIE', 8);
-define('PEAR_ERROR_CALLBACK', 16);
-/**
- * WARNING: obsolete
- * @deprecated
- */
-define('PEAR_ERROR_EXCEPTION', 32);
-/**#@-*/
-define('PEAR_ZE2', (function_exists('version_compare') &&
- version_compare(zend_version(), "2-dev", "ge")));
-
-if (substr(PHP_OS, 0, 3) == 'WIN') {
- define('OS_WINDOWS', true);
- define('OS_UNIX', false);
- define('PEAR_OS', 'Windows');
-} else {
- define('OS_WINDOWS', false);
- define('OS_UNIX', true);
- define('PEAR_OS', 'Unix'); // blatant assumption
-}
-
-$GLOBALS['_PEAR_default_error_mode'] = PEAR_ERROR_RETURN;
-$GLOBALS['_PEAR_default_error_options'] = E_USER_NOTICE;
-$GLOBALS['_PEAR_destructor_object_list'] = array();
-$GLOBALS['_PEAR_shutdown_funcs'] = array();
-$GLOBALS['_PEAR_error_handler_stack'] = array();
-
-@ini_set('track_errors', true);
-
-/**
- * Base class for other PEAR classes. Provides rudimentary
- * emulation of destructors.
- *
- * If you want a destructor in your class, inherit PEAR and make a
- * destructor method called _yourclassname (same name as the
- * constructor, but with a "_" prefix). Also, in your constructor you
- * have to call the PEAR constructor: $this->PEAR();.
- * The destructor method will be called without parameters. Note that
- * at in some SAPI implementations (such as Apache), any output during
- * the request shutdown (in which destructors are called) seems to be
- * discarded. If you need to get any debug information from your
- * destructor, use error_log(), syslog() or something similar.
- *
- * IMPORTANT! To use the emulated destructors you need to create the
- * objects by reference: $obj =& new PEAR_child;
- *
- * @category pear
- * @package PEAR
- * @author Stig Bakken <ssb@php.net>
- * @author Tomas V.V. Cox <cox@idecnet.com>
- * @author Greg Beaver <cellog@php.net>
- * @copyright 1997-2006 The PHP Group
- * @license http://opensource.org/licenses/bsd-license.php New BSD License
- * @version Release: 1.9.0
- * @link http://pear.php.net/package/PEAR
- * @see PEAR_Error
- * @since Class available since PHP 4.0.2
- * @link http://pear.php.net/manual/en/core.pear.php#core.pear.pear
- */
-class PEAR
-{
- // {{{ properties
-
- /**
- * Whether to enable internal debug messages.
- *
- * @var bool
- * @access private
- */
- var $_debug = false;
-
- /**
- * Default error mode for this object.
- *
- * @var int
- * @access private
- */
- var $_default_error_mode = null;
-
- /**
- * Default error options used for this object when error mode
- * is PEAR_ERROR_TRIGGER.
- *
- * @var int
- * @access private
- */
- var $_default_error_options = null;
-
- /**
- * Default error handler (callback) for this object, if error mode is
- * PEAR_ERROR_CALLBACK.
- *
- * @var string
- * @access private
- */
- var $_default_error_handler = '';
-
- /**
- * Which class to use for error objects.
- *
- * @var string
- * @access private
- */
- var $_error_class = 'PEAR_Error';
-
- /**
- * An array of expected errors.
- *
- * @var array
- * @access private
- */
- var $_expected_errors = array();
-
- // }}}
-
- // {{{ constructor
-
- /**
- * Constructor. Registers this object in
- * $_PEAR_destructor_object_list for destructor emulation if a
- * destructor object exists.
- *
- * @param string $error_class (optional) which class to use for
- * error objects, defaults to PEAR_Error.
- * @access public
- * @return void
- */
- function PEAR($error_class = null)
- {
- $classname = strtolower(get_class($this));
- if ($this->_debug) {
- print "PEAR constructor called, class=$classname\n";
- }
- if ($error_class !== null) {
- $this->_error_class = $error_class;
- }
- while ($classname && strcasecmp($classname, "pear")) {
- $destructor = "_$classname";
- if (method_exists($this, $destructor)) {
- global $_PEAR_destructor_object_list;
- $_PEAR_destructor_object_list[] = &$this;
- if (!isset($GLOBALS['_PEAR_SHUTDOWN_REGISTERED'])) {
- register_shutdown_function("_PEAR_call_destructors");
- $GLOBALS['_PEAR_SHUTDOWN_REGISTERED'] = true;
- }
- break;
- } else {
- $classname = get_parent_class($classname);
- }
- }
- }
-
- // }}}
- // {{{ destructor
-
- /**
- * Destructor (the emulated type of...). Does nothing right now,
- * but is included for forward compatibility, so subclass
- * destructors should always call it.
- *
- * See the note in the class desciption about output from
- * destructors.
- *
- * @access public
- * @return void
- */
- function _PEAR() {
- if ($this->_debug) {
- printf("PEAR destructor called, class=%s\n", strtolower(get_class($this)));
- }
- }
-
- // }}}
- // {{{ getStaticProperty()
-
- /**
- * If you have a class that's mostly/entirely static, and you need static
- * properties, you can use this method to simulate them. Eg. in your method(s)
- * do this: $myVar = &PEAR::getStaticProperty('myclass', 'myVar');
- * You MUST use a reference, or they will not persist!
- *
- * @access public
- * @param string $class The calling classname, to prevent clashes
- * @param string $var The variable to retrieve.
- * @return mixed A reference to the variable. If not set it will be
- * auto initialised to NULL.
- */
- function &getStaticProperty($class, $var)
- {
- static $properties;
- if (!isset($properties[$class])) {
- $properties[$class] = array();
- }
-
- if (!array_key_exists($var, $properties[$class])) {
- $properties[$class][$var] = null;
- }
-
- return $properties[$class][$var];
- }
-
- // }}}
- // {{{ registerShutdownFunc()
-
- /**
- * Use this function to register a shutdown method for static
- * classes.
- *
- * @access public
- * @param mixed $func The function name (or array of class/method) to call
- * @param mixed $args The arguments to pass to the function
- * @return void
- */
- function registerShutdownFunc($func, $args = array())
- {
- // if we are called statically, there is a potential
- // that no shutdown func is registered. Bug #6445
- if (!isset($GLOBALS['_PEAR_SHUTDOWN_REGISTERED'])) {
- register_shutdown_function("_PEAR_call_destructors");
- $GLOBALS['_PEAR_SHUTDOWN_REGISTERED'] = true;
- }
- $GLOBALS['_PEAR_shutdown_funcs'][] = array($func, $args);
- }
-
- // }}}
- // {{{ isError()
-
- /**
- * Tell whether a value is a PEAR error.
- *
- * @param mixed $data the value to test
- * @param int $code if $data is an error object, return true
- * only if $code is a string and
- * $obj->getMessage() == $code or
- * $code is an integer and $obj->getCode() == $code
- * @access public
- * @return bool true if parameter is an error
- */
- static function isError($data, $code = null)
- {
- if (!is_object($data) || !is_a($data, 'PEAR_Error')) {
- return false;
- }
-
- if (is_null($code)) {
- return true;
- } elseif (is_string($code)) {
- return $data->getMessage() == $code;
- }
-
- return $data->getCode() == $code;
- }
-
- // }}}
- // {{{ setErrorHandling()
-
- /**
- * Sets how errors generated by this object should be handled.
- * Can be invoked both in objects and statically. If called
- * statically, setErrorHandling sets the default behaviour for all
- * PEAR objects. If called in an object, setErrorHandling sets
- * the default behaviour for that object.
- *
- * @param int $mode
- * One of PEAR_ERROR_RETURN, PEAR_ERROR_PRINT,
- * PEAR_ERROR_TRIGGER, PEAR_ERROR_DIE,
- * PEAR_ERROR_CALLBACK or PEAR_ERROR_EXCEPTION.
- *
- * @param mixed $options
- * When $mode is PEAR_ERROR_TRIGGER, this is the error level (one
- * of E_USER_NOTICE, E_USER_WARNING or E_USER_ERROR).
- *
- * When $mode is PEAR_ERROR_CALLBACK, this parameter is expected
- * to be the callback function or method. A callback
- * function is a string with the name of the function, a
- * callback method is an array of two elements: the element
- * at index 0 is the object, and the element at index 1 is
- * the name of the method to call in the object.
- *
- * When $mode is PEAR_ERROR_PRINT or PEAR_ERROR_DIE, this is
- * a printf format string used when printing the error
- * message.
- *
- * @access public
- * @return void
- * @see PEAR_ERROR_RETURN
- * @see PEAR_ERROR_PRINT
- * @see PEAR_ERROR_TRIGGER
- * @see PEAR_ERROR_DIE
- * @see PEAR_ERROR_CALLBACK
- * @see PEAR_ERROR_EXCEPTION
- *
- * @since PHP 4.0.5
- */
-
- function setErrorHandling($mode = null, $options = null)
- {
- if (isset($this) && is_a($this, 'PEAR')) {
- $setmode = &$this->_default_error_mode;
- $setoptions = &$this->_default_error_options;
- } else {
- $setmode = &$GLOBALS['_PEAR_default_error_mode'];
- $setoptions = &$GLOBALS['_PEAR_default_error_options'];
- }
-
- switch ($mode) {
- case PEAR_ERROR_EXCEPTION:
- case PEAR_ERROR_RETURN:
- case PEAR_ERROR_PRINT:
- case PEAR_ERROR_TRIGGER:
- case PEAR_ERROR_DIE:
- case null:
- $setmode = $mode;
- $setoptions = $options;
- break;
-
- case PEAR_ERROR_CALLBACK:
- $setmode = $mode;
- // class/object method callback
- if (is_callable($options)) {
- $setoptions = $options;
- } else {
- trigger_error("invalid error callback", E_USER_WARNING);
- }
- break;
-
- default:
- trigger_error("invalid error mode", E_USER_WARNING);
- break;
- }
- }
-
- // }}}
- // {{{ expectError()
-
- /**
- * This method is used to tell which errors you expect to get.
- * Expected errors are always returned with error mode
- * PEAR_ERROR_RETURN. Expected error codes are stored in a stack,
- * and this method pushes a new element onto it. The list of
- * expected errors are in effect until they are popped off the
- * stack with the popExpect() method.
- *
- * Note that this method can not be called statically
- *
- * @param mixed $code a single error code or an array of error codes to expect
- *
- * @return int the new depth of the "expected errors" stack
- * @access public
- */
- function expectError($code = '*')
- {
- if (is_array($code)) {
- array_push($this->_expected_errors, $code);
- } else {
- array_push($this->_expected_errors, array($code));
- }
- return sizeof($this->_expected_errors);
- }
-
- // }}}
- // {{{ popExpect()
-
- /**
- * This method pops one element off the expected error codes
- * stack.
- *
- * @return array the list of error codes that were popped
- */
- function popExpect()
- {
- return array_pop($this->_expected_errors);
- }
-
- // }}}
- // {{{ _checkDelExpect()
-
- /**
- * This method checks unsets an error code if available
- *
- * @param mixed error code
- * @return bool true if the error code was unset, false otherwise
- * @access private
- * @since PHP 4.3.0
- */
- function _checkDelExpect($error_code)
- {
- $deleted = false;
-
- foreach ($this->_expected_errors AS $key => $error_array) {
- if (in_array($error_code, $error_array)) {
- unset($this->_expected_errors[$key][array_search($error_code, $error_array)]);
- $deleted = true;
- }
-
- // clean up empty arrays
- if (0 == count($this->_expected_errors[$key])) {
- unset($this->_expected_errors[$key]);
- }
- }
- return $deleted;
- }
-
- // }}}
- // {{{ delExpect()
-
- /**
- * This method deletes all occurences of the specified element from
- * the expected error codes stack.
- *
- * @param mixed $error_code error code that should be deleted
- * @return mixed list of error codes that were deleted or error
- * @access public
- * @since PHP 4.3.0
- */
- function delExpect($error_code)
- {
- $deleted = false;
- if ((is_array($error_code) && (0 != count($error_code)))) {
- // $error_code is a non-empty array here;
- // we walk through it trying to unset all
- // values
- foreach($error_code as $key => $error) {
- if ($this->_checkDelExpect($error)) {
- $deleted = true;
- } else {
- $deleted = false;
- }
- }
- return $deleted ? true : PEAR::raiseError("The expected error you submitted does not exist"); // IMPROVE ME
- } elseif (!empty($error_code)) {
- // $error_code comes alone, trying to unset it
- if ($this->_checkDelExpect($error_code)) {
- return true;
- } else {
- return PEAR::raiseError("The expected error you submitted does not exist"); // IMPROVE ME
- }
- }
-
- // $error_code is empty
- return PEAR::raiseError("The expected error you submitted is empty"); // IMPROVE ME
- }
-
- // }}}
- // {{{ raiseError()
-
- /**
- * This method is a wrapper that returns an instance of the
- * configured error class with this object's default error
- * handling applied. If the $mode and $options parameters are not
- * specified, the object's defaults are used.
- *
- * @param mixed $message a text error message or a PEAR error object
- *
- * @param int $code a numeric error code (it is up to your class
- * to define these if you want to use codes)
- *
- * @param int $mode One of PEAR_ERROR_RETURN, PEAR_ERROR_PRINT,
- * PEAR_ERROR_TRIGGER, PEAR_ERROR_DIE,
- * PEAR_ERROR_CALLBACK, PEAR_ERROR_EXCEPTION.
- *
- * @param mixed $options If $mode is PEAR_ERROR_TRIGGER, this parameter
- * specifies the PHP-internal error level (one of
- * E_USER_NOTICE, E_USER_WARNING or E_USER_ERROR).
- * If $mode is PEAR_ERROR_CALLBACK, this
- * parameter specifies the callback function or
- * method. In other error modes this parameter
- * is ignored.
- *
- * @param string $userinfo If you need to pass along for example debug
- * information, this parameter is meant for that.
- *
- * @param string $error_class The returned error object will be
- * instantiated from this class, if specified.
- *
- * @param bool $skipmsg If true, raiseError will only pass error codes,
- * the error message parameter will be dropped.
- *
- * @access public
- * @return object a PEAR error object
- * @see PEAR::setErrorHandling
- * @since PHP 4.0.5
- */
- function &raiseError($message = null,
- $code = null,
- $mode = null,
- $options = null,
- $userinfo = null,
- $error_class = null,
- $skipmsg = false)
- {
- // The error is yet a PEAR error object
- if (is_object($message)) {
- $code = $message->getCode();
- $userinfo = $message->getUserInfo();
- $error_class = $message->getType();
- $message->error_message_prefix = '';
- $message = $message->getMessage();
- }
-
- if (isset($this) && isset($this->_expected_errors) && sizeof($this->_expected_errors) > 0 && sizeof($exp = end($this->_expected_errors))) {
- if ($exp[0] == "*" ||
- (is_int(reset($exp)) && in_array($code, $exp)) ||
- (is_string(reset($exp)) && in_array($message, $exp))) {
- $mode = PEAR_ERROR_RETURN;
- }
- }
-
- // No mode given, try global ones
- if ($mode === null) {
- // Class error handler
- if (isset($this) && isset($this->_default_error_mode)) {
- $mode = $this->_default_error_mode;
- $options = $this->_default_error_options;
- // Global error handler
- } elseif (isset($GLOBALS['_PEAR_default_error_mode'])) {
- $mode = $GLOBALS['_PEAR_default_error_mode'];
- $options = $GLOBALS['_PEAR_default_error_options'];
- }
- }
-
- if ($error_class !== null) {
- $ec = $error_class;
- } elseif (isset($this) && isset($this->_error_class)) {
- $ec = $this->_error_class;
- } else {
- $ec = 'PEAR_Error';
- }
-
- if (intval(PHP_VERSION) < 5) {
- // little non-eval hack to fix bug #12147
- include 'PEAR/FixPHP5PEARWarnings.php';
- return $a;
- }
-
- if ($skipmsg) {
- $a = new $ec($code, $mode, $options, $userinfo);
- } else {
- $a = new $ec($message, $code, $mode, $options, $userinfo);
- }
-
- return $a;
- }
-
- // }}}
- // {{{ throwError()
-
- /**
- * Simpler form of raiseError with fewer options. In most cases
- * message, code and userinfo are enough.
- *
- * @param string $message
- *
- */
- function &throwError($message = null,
- $code = null,
- $userinfo = null)
- {
- if (isset($this) && is_a($this, 'PEAR')) {
- $a = &$this->raiseError($message, $code, null, null, $userinfo);
- return $a;
- }
-
- $a = &PEAR::raiseError($message, $code, null, null, $userinfo);
- return $a;
- }
-
- // }}}
- function staticPushErrorHandling($mode, $options = null)
- {
- $stack = &$GLOBALS['_PEAR_error_handler_stack'];
- $def_mode = &$GLOBALS['_PEAR_default_error_mode'];
- $def_options = &$GLOBALS['_PEAR_default_error_options'];
- $stack[] = array($def_mode, $def_options);
- switch ($mode) {
- case PEAR_ERROR_EXCEPTION:
- case PEAR_ERROR_RETURN:
- case PEAR_ERROR_PRINT:
- case PEAR_ERROR_TRIGGER:
- case PEAR_ERROR_DIE:
- case null:
- $def_mode = $mode;
- $def_options = $options;
- break;
-
- case PEAR_ERROR_CALLBACK:
- $def_mode = $mode;
- // class/object method callback
- if (is_callable($options)) {
- $def_options = $options;
- } else {
- trigger_error("invalid error callback", E_USER_WARNING);
- }
- break;
-
- default:
- trigger_error("invalid error mode", E_USER_WARNING);
- break;
- }
- $stack[] = array($mode, $options);
- return true;
- }
-
- function staticPopErrorHandling()
- {
- $stack = &$GLOBALS['_PEAR_error_handler_stack'];
- $setmode = &$GLOBALS['_PEAR_default_error_mode'];
- $setoptions = &$GLOBALS['_PEAR_default_error_options'];
- array_pop($stack);
- list($mode, $options) = $stack[sizeof($stack) - 1];
- array_pop($stack);
- switch ($mode) {
- case PEAR_ERROR_EXCEPTION:
- case PEAR_ERROR_RETURN:
- case PEAR_ERROR_PRINT:
- case PEAR_ERROR_TRIGGER:
- case PEAR_ERROR_DIE:
- case null:
- $setmode = $mode;
- $setoptions = $options;
- break;
-
- case PEAR_ERROR_CALLBACK:
- $setmode = $mode;
- // class/object method callback
- if (is_callable($options)) {
- $setoptions = $options;
- } else {
- trigger_error("invalid error callback", E_USER_WARNING);
- }
- break;
-
- default:
- trigger_error("invalid error mode", E_USER_WARNING);
- break;
- }
- return true;
- }
-
- // {{{ pushErrorHandling()
-
- /**
- * Push a new error handler on top of the error handler options stack. With this
- * you can easily override the actual error handler for some code and restore
- * it later with popErrorHandling.
- *
- * @param mixed $mode (same as setErrorHandling)
- * @param mixed $options (same as setErrorHandling)
- *
- * @return bool Always true
- *
- * @see PEAR::setErrorHandling
- */
- function pushErrorHandling($mode, $options = null)
- {
- $stack = &$GLOBALS['_PEAR_error_handler_stack'];
- if (isset($this) && is_a($this, 'PEAR')) {
- $def_mode = &$this->_default_error_mode;
- $def_options = &$this->_default_error_options;
- } else {
- $def_mode = &$GLOBALS['_PEAR_default_error_mode'];
- $def_options = &$GLOBALS['_PEAR_default_error_options'];
- }
- $stack[] = array($def_mode, $def_options);
-
- if (isset($this) && is_a($this, 'PEAR')) {
- $this->setErrorHandling($mode, $options);
- } else {
- PEAR::setErrorHandling($mode, $options);
- }
- $stack[] = array($mode, $options);
- return true;
- }
-
- // }}}
- // {{{ popErrorHandling()
-
- /**
- * Pop the last error handler used
- *
- * @return bool Always true
- *
- * @see PEAR::pushErrorHandling
- */
- function popErrorHandling()
- {
- $stack = &$GLOBALS['_PEAR_error_handler_stack'];
- array_pop($stack);
- list($mode, $options) = $stack[sizeof($stack) - 1];
- array_pop($stack);
- if (isset($this) && is_a($this, 'PEAR')) {
- $this->setErrorHandling($mode, $options);
- } else {
- PEAR::setErrorHandling($mode, $options);
- }
- return true;
- }
-
- // }}}
- // {{{ loadExtension()
-
- /**
- * OS independant PHP extension load. Remember to take care
- * on the correct extension name for case sensitive OSes.
- *
- * @param string $ext The extension name
- * @return bool Success or not on the dl() call
- */
- function loadExtension($ext)
- {
- if (!extension_loaded($ext)) {
- // if either returns true dl() will produce a FATAL error, stop that
- if ((ini_get('enable_dl') != 1) || (ini_get('safe_mode') == 1)) {
- return false;
- }
-
- if (OS_WINDOWS) {
- $suffix = '.dll';
- } elseif (PHP_OS == 'HP-UX') {
- $suffix = '.sl';
- } elseif (PHP_OS == 'AIX') {
- $suffix = '.a';
- } elseif (PHP_OS == 'OSX') {
- $suffix = '.bundle';
- } else {
- $suffix = '.so';
- }
-
- return @dl('php_'.$ext.$suffix) || @dl($ext.$suffix);
- }
-
- return true;
- }
-
- // }}}
-}
-
-if (PEAR_ZE2) {
- include_once 'PEAR5.php';
-}
-
-// {{{ _PEAR_call_destructors()
-
-function _PEAR_call_destructors()
-{
- global $_PEAR_destructor_object_list;
- if (is_array($_PEAR_destructor_object_list) &&
- sizeof($_PEAR_destructor_object_list))
- {
- reset($_PEAR_destructor_object_list);
- if (PEAR_ZE2) {
- $destructLifoExists = PEAR5::getStaticProperty('PEAR', 'destructlifo');
- } else {
- $destructLifoExists = PEAR::getStaticProperty('PEAR', 'destructlifo');
- }
-
- if ($destructLifoExists) {
- $_PEAR_destructor_object_list = array_reverse($_PEAR_destructor_object_list);
- }
-
- while (list($k, $objref) = each($_PEAR_destructor_object_list)) {
- $classname = get_class($objref);
- while ($classname) {
- $destructor = "_$classname";
- if (method_exists($objref, $destructor)) {
- $objref->$destructor();
- break;
- } else {
- $classname = get_parent_class($classname);
- }
- }
- }
- // Empty the object list to ensure that destructors are
- // not called more than once.
- $_PEAR_destructor_object_list = array();
- }
-
- // Now call the shutdown functions
- if (isset($GLOBALS['_PEAR_shutdown_funcs']) AND is_array($GLOBALS['_PEAR_shutdown_funcs']) AND !empty($GLOBALS['_PEAR_shutdown_funcs'])) {
- foreach ($GLOBALS['_PEAR_shutdown_funcs'] as $value) {
- call_user_func_array($value[0], $value[1]);
- }
- }
-}
-
-// }}}
-/**
- * Standard PEAR error class for PHP 4
- *
- * This class is supserseded by {@link PEAR_Exception} in PHP 5
- *
- * @category pear
- * @package PEAR
- * @author Stig Bakken <ssb@php.net>
- * @author Tomas V.V. Cox <cox@idecnet.com>
- * @author Gregory Beaver <cellog@php.net>
- * @copyright 1997-2006 The PHP Group
- * @license http://opensource.org/licenses/bsd-license.php New BSD License
- * @version Release: 1.9.0
- * @link http://pear.php.net/manual/en/core.pear.pear-error.php
- * @see PEAR::raiseError(), PEAR::throwError()
- * @since Class available since PHP 4.0.2
- */
-class PEAR_Error
-{
- // {{{ properties
-
- var $error_message_prefix = '';
- var $mode = PEAR_ERROR_RETURN;
- var $level = E_USER_NOTICE;
- var $code = -1;
- var $message = '';
- var $userinfo = '';
- var $backtrace = null;
-
- // }}}
- // {{{ constructor
-
- /**
- * PEAR_Error constructor
- *
- * @param string $message message
- *
- * @param int $code (optional) error code
- *
- * @param int $mode (optional) error mode, one of: PEAR_ERROR_RETURN,
- * PEAR_ERROR_PRINT, PEAR_ERROR_DIE, PEAR_ERROR_TRIGGER,
- * PEAR_ERROR_CALLBACK or PEAR_ERROR_EXCEPTION
- *
- * @param mixed $options (optional) error level, _OR_ in the case of
- * PEAR_ERROR_CALLBACK, the callback function or object/method
- * tuple.
- *
- * @param string $userinfo (optional) additional user/debug info
- *
- * @access public
- *
- */
- function PEAR_Error($message = 'unknown error', $code = null,
- $mode = null, $options = null, $userinfo = null)
- {
- if ($mode === null) {
- $mode = PEAR_ERROR_RETURN;
- }
- $this->message = $message;
- $this->code = $code;
- $this->mode = $mode;
- $this->userinfo = $userinfo;
-
- if (PEAR_ZE2) {
- $skiptrace = PEAR5::getStaticProperty('PEAR_Error', 'skiptrace');
- } else {
- $skiptrace = PEAR::getStaticProperty('PEAR_Error', 'skiptrace');
- }
-
- if (!$skiptrace) {
- $this->backtrace = debug_backtrace();
- if (isset($this->backtrace[0]) && isset($this->backtrace[0]['object'])) {
- unset($this->backtrace[0]['object']);
- }
- }
-
- if ($mode & PEAR_ERROR_CALLBACK) {
- $this->level = E_USER_NOTICE;
- $this->callback = $options;
- } else {
- if ($options === null) {
- $options = E_USER_NOTICE;
- }
-
- $this->level = $options;
- $this->callback = null;
- }
-
- if ($this->mode & PEAR_ERROR_PRINT) {
- if (is_null($options) || is_int($options)) {
- $format = "%s";
- } else {
- $format = $options;
- }
-
- printf($format, $this->getMessage());
- }
-
- if ($this->mode & PEAR_ERROR_TRIGGER) {
- trigger_error($this->getMessage(), $this->level);
- }
-
- if ($this->mode & PEAR_ERROR_DIE) {
- $msg = $this->getMessage();
- if (is_null($options) || is_int($options)) {
- $format = "%s";
- if (substr($msg, -1) != "\n") {
- $msg .= "\n";
- }
- } else {
- $format = $options;
- }
- die(sprintf($format, $msg));
- }
-
- if ($this->mode & PEAR_ERROR_CALLBACK) {
- if (is_callable($this->callback)) {
- call_user_func($this->callback, $this);
- }
- }
-
- if ($this->mode & PEAR_ERROR_EXCEPTION) {
- trigger_error("PEAR_ERROR_EXCEPTION is obsolete, use class PEAR_Exception for exceptions", E_USER_WARNING);
- eval('$e = new Exception($this->message, $this->code);throw($e);');
- }
- }
-
- // }}}
- // {{{ getMode()
-
- /**
- * Get the error mode from an error object.
- *
- * @return int error mode
- * @access public
- */
- function getMode() {
- return $this->mode;
- }
-
- // }}}
- // {{{ getCallback()
-
- /**
- * Get the callback function/method from an error object.
- *
- * @return mixed callback function or object/method array
- * @access public
- */
- function getCallback() {
- return $this->callback;
- }
-
- // }}}
- // {{{ getMessage()
-
-
- /**
- * Get the error message from an error object.
- *
- * @return string full error message
- * @access public
- */
- function getMessage()
- {
- return ($this->error_message_prefix . $this->message);
- }
-
-
- // }}}
- // {{{ getCode()
-
- /**
- * Get error code from an error object
- *
- * @return int error code
- * @access public
- */
- function getCode()
- {
- return $this->code;
- }
-
- // }}}
- // {{{ getType()
-
- /**
- * Get the name of this error/exception.
- *
- * @return string error/exception name (type)
- * @access public
- */
- function getType()
- {
- return get_class($this);
- }
-
- // }}}
- // {{{ getUserInfo()
-
- /**
- * Get additional user-supplied information.
- *
- * @return string user-supplied information
- * @access public
- */
- function getUserInfo()
- {
- return $this->userinfo;
- }
-
- // }}}
- // {{{ getDebugInfo()
-
- /**
- * Get additional debug information supplied by the application.
- *
- * @return string debug information
- * @access public
- */
- function getDebugInfo()
- {
- return $this->getUserInfo();
- }
-
- // }}}
- // {{{ getBacktrace()
-
- /**
- * Get the call backtrace from where the error was generated.
- * Supported with PHP 4.3.0 or newer.
- *
- * @param int $frame (optional) what frame to fetch
- * @return array Backtrace, or NULL if not available.
- * @access public
- */
- function getBacktrace($frame = null)
- {
- if (defined('PEAR_IGNORE_BACKTRACE')) {
- return null;
- }
- if ($frame === null) {
- return $this->backtrace;
- }
- return $this->backtrace[$frame];
- }
-
- // }}}
- // {{{ addUserInfo()
-
- function addUserInfo($info)
- {
- if (empty($this->userinfo)) {
- $this->userinfo = $info;
- } else {
- $this->userinfo .= " ** $info";
- }
- }
-
- // }}}
- // {{{ toString()
- function __toString()
- {
- return $this->getMessage();
- }
- // }}}
- // {{{ toString()
-
- /**
- * Make a string representation of this object.
- *
- * @return string a string with an object summary
- * @access public
- */
- function toString() {
- $modes = array();
- $levels = array(E_USER_NOTICE => 'notice',
- E_USER_WARNING => 'warning',
- E_USER_ERROR => 'error');
- if ($this->mode & PEAR_ERROR_CALLBACK) {
- if (is_array($this->callback)) {
- $callback = (is_object($this->callback[0]) ?
- strtolower(get_class($this->callback[0])) :
- $this->callback[0]) . '::' .
- $this->callback[1];
- } else {
- $callback = $this->callback;
- }
- return sprintf('[%s: message="%s" code=%d mode=callback '.
- 'callback=%s prefix="%s" info="%s"]',
- strtolower(get_class($this)), $this->message, $this->code,
- $callback, $this->error_message_prefix,
- $this->userinfo);
- }
- if ($this->mode & PEAR_ERROR_PRINT) {
- $modes[] = 'print';
- }
- if ($this->mode & PEAR_ERROR_TRIGGER) {
- $modes[] = 'trigger';
- }
- if ($this->mode & PEAR_ERROR_DIE) {
- $modes[] = 'die';
- }
- if ($this->mode & PEAR_ERROR_RETURN) {
- $modes[] = 'return';
- }
- return sprintf('[%s: message="%s" code=%d mode=%s level=%s '.
- 'prefix="%s" info="%s"]',
- strtolower(get_class($this)), $this->message, $this->code,
- implode("|", $modes), $levels[$this->level],
- $this->error_message_prefix,
- $this->userinfo);
- }
-
- // }}}
-}
-
-/*
- * Local Variables:
- * mode: php
- * tab-width: 4
- * c-basic-offset: 4
- * End:
- */
diff --git a/program/lib/PEAR5.php b/program/lib/PEAR5.php
deleted file mode 100644
index 428606780..000000000
--- a/program/lib/PEAR5.php
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-/**
- * This is only meant for PHP 5 to get rid of certain strict warning
- * that doesn't get hidden since it's in the shutdown function
- */
-class PEAR5
-{
- /**
- * If you have a class that's mostly/entirely static, and you need static
- * properties, you can use this method to simulate them. Eg. in your method(s)
- * do this: $myVar = &PEAR5::getStaticProperty('myclass', 'myVar');
- * You MUST use a reference, or they will not persist!
- *
- * @access public
- * @param string $class The calling classname, to prevent clashes
- * @param string $var The variable to retrieve.
- * @return mixed A reference to the variable. If not set it will be
- * auto initialised to NULL.
- */
- static function &getStaticProperty($class, $var)
- {
- static $properties;
- if (!isset($properties[$class])) {
- $properties[$class] = array();
- }
-
- if (!array_key_exists($var, $properties[$class])) {
- $properties[$class][$var] = null;
- }
-
- return $properties[$class][$var];
- }
-} \ No newline at end of file
diff --git a/program/lib/Roundcube/bootstrap.php b/program/lib/Roundcube/bootstrap.php
index 65ef98ebd..98bbce5d4 100644
--- a/program/lib/Roundcube/bootstrap.php
+++ b/program/lib/Roundcube/bootstrap.php
@@ -58,7 +58,7 @@ define('RCUBE_VERSION', '1.1-git');
define('RCUBE_CHARSET', 'UTF-8');
if (!defined('RCUBE_LIB_DIR')) {
- define('RCUBE_LIB_DIR', dirname(__FILE__).DIRECTORY_SEPARATOR);
+ define('RCUBE_LIB_DIR', dirname(__FILE__) . '/');
}
if (!defined('RCUBE_INSTALL_PATH')) {
@@ -464,16 +464,14 @@ function rcube_autoload($classname)
'/Net_(.+)/',
'/Auth_(.+)/',
'/^html_.+/',
- '/^rcube(.*)/',
- '/^utf8$/',
+ '/^rcube(.*)/'
),
array(
'Mail/\\1',
'Net/\\1',
'Auth/\\1',
'Roundcube/html',
- 'Roundcube/rcube\\1',
- 'utf8.class',
+ 'Roundcube/rcube\\1'
),
$classname
);
diff --git a/program/lib/Roundcube/html.php b/program/lib/Roundcube/html.php
index a88570d75..f18cad0bf 100644
--- a/program/lib/Roundcube/html.php
+++ b/program/lib/Roundcube/html.php
@@ -32,7 +32,7 @@ class html
public static $doctype = 'xhtml';
public static $lc_tags = true;
- public static $common_attrib = array('id','class','style','title','align','unselectable');
+ public static $common_attrib = array('id','class','style','title','align','unselectable','tabindex','role');
public static $containers = array('iframe','div','span','p','h1','h2','h3','ul','form','textarea','table','thead','tbody','tr','th','td','style','script');
@@ -153,7 +153,7 @@ class html
$attr = array('src' => $attr);
}
return self::tag('img', $attr + array('alt' => ''), null, array_merge(self::$common_attrib,
- array('src','alt','width','height','border','usemap','onclick')));
+ array('src','alt','width','height','border','usemap','onclick','onerror')));
}
/**
@@ -218,7 +218,7 @@ class html
$attr = array('src' => $attr);
}
return self::tag('iframe', $attr, $cont, array_merge(self::$common_attrib,
- array('src','name','width','height','border','frameborder','onload')));
+ array('src','name','width','height','border','frameborder','onload','allowfullscreen')));
}
/**
@@ -283,9 +283,11 @@ class html
continue;
}
- // ignore not allowed attributes, except data-*
+ // ignore not allowed attributes, except aria-* and data-*
if (!empty($allowed)) {
- if (!isset($allowed_f[$key]) && @substr_compare($key, 'data-', 0, 5) !== 0) {
+ $is_data_attr = @substr_compare($key, 'data-', 0, 5) === 0;
+ $is_aria_attr = @substr_compare($key, 'aria-', 0, 5) === 0;
+ if (!$is_aria_attr && !$is_data_attr && !isset($allowed_f[$key])) {
continue;
}
}
@@ -835,7 +837,7 @@ class html_table extends html
if (!empty($this->header)) {
$rowcontent = '';
foreach ($this->header as $c => $col) {
- $rowcontent .= self::tag($this->_col_tagname(), $col->attrib, $col->content);
+ $rowcontent .= self::tag($this->_head_tagname(), $col->attrib, $col->content);
}
$thead = $this->tagname == 'table' ? self::tag('thead', null, self::tag('tr', null, $rowcontent, parent::$common_attrib)) :
self::tag($this->_row_tagname(), array('class' => 'thead'), $rowcontent, parent::$common_attrib);
@@ -888,7 +890,16 @@ class html_table extends html
private function _row_tagname()
{
static $row_tagnames = array('table' => 'tr', 'ul' => 'li', '*' => 'div');
- return $row_tagnames[$this->tagname] ? $row_tagnames[$this->tagname] : $row_tagnames['*'];
+ return $row_tagnames[$this->tagname] ?: $row_tagnames['*'];
+ }
+
+ /**
+ * Getter for the corresponding tag name for table row elements
+ */
+ private function _head_tagname()
+ {
+ static $head_tagnames = array('table' => 'th', '*' => 'span');
+ return $head_tagnames[$this->tagname] ?: $head_tagnames['*'];
}
/**
@@ -897,7 +908,7 @@ class html_table extends html
private function _col_tagname()
{
static $col_tagnames = array('table' => 'td', '*' => 'span');
- return $col_tagnames[$this->tagname] ? $col_tagnames[$this->tagname] : $col_tagnames['*'];
+ return $col_tagnames[$this->tagname] ?: $col_tagnames['*'];
}
}
diff --git a/program/lib/Roundcube/rcube.php b/program/lib/Roundcube/rcube.php
index f2aeda7f0..eedc46c7a 100644
--- a/program/lib/Roundcube/rcube.php
+++ b/program/lib/Roundcube/rcube.php
@@ -172,9 +172,13 @@ class rcube
public function get_dbh()
{
if (!$this->db) {
- $config_all = $this->config->all();
- $this->db = rcube_db::factory($config_all['db_dsnw'], $config_all['db_dsnr'], $config_all['db_persistent']);
- $this->db->set_debug((bool)$config_all['sql_debug']);
+ $this->db = rcube_db::factory(
+ $this->config->get('db_dsnw'),
+ $this->config->get('db_dsnr'),
+ $this->config->get('db_persistent')
+ );
+
+ $this->db->set_debug((bool)$this->config->get('sql_debug'));
}
return $this->db;
@@ -357,15 +361,16 @@ class rcube
// set class options
$options = array(
- 'auth_type' => $this->config->get("{$driver}_auth_type", 'check'),
- 'auth_cid' => $this->config->get("{$driver}_auth_cid"),
- 'auth_pw' => $this->config->get("{$driver}_auth_pw"),
- 'debug' => (bool) $this->config->get("{$driver}_debug"),
- 'force_caps' => (bool) $this->config->get("{$driver}_force_caps"),
- 'disabled_caps' => $this->config->get("{$driver}_disabled_caps"),
- 'timeout' => (int) $this->config->get("{$driver}_timeout"),
- 'skip_deleted' => (bool) $this->config->get('skip_deleted'),
- 'driver' => $driver,
+ 'auth_type' => $this->config->get("{$driver}_auth_type", 'check'),
+ 'auth_cid' => $this->config->get("{$driver}_auth_cid"),
+ 'auth_pw' => $this->config->get("{$driver}_auth_pw"),
+ 'debug' => (bool) $this->config->get("{$driver}_debug"),
+ 'force_caps' => (bool) $this->config->get("{$driver}_force_caps"),
+ 'disabled_caps' => $this->config->get("{$driver}_disabled_caps"),
+ 'socket_options' => $this->config->get("{$driver}_conn_options"),
+ 'timeout' => (int) $this->config->get("{$driver}_timeout"),
+ 'skip_deleted' => (bool) $this->config->get('skip_deleted'),
+ 'driver' => $driver,
);
if (!empty($_SESSION['storage_host'])) {
@@ -384,8 +389,12 @@ class rcube
$this->storage->set_options($options);
$this->set_storage_prop();
- }
+ // subscribe to 'storage_connected' hook for session logging
+ if ($this->config->get('imap_log_session', false)) {
+ $this->plugins->register_hook('storage_connected', array($this, 'storage_log_session'));
+ }
+ }
/**
* Set storage parameters.
@@ -453,6 +462,16 @@ class rcube
/**
+ * Callback for IMAP connection events to log session identifiers
+ */
+ public function storage_log_session($args)
+ {
+ if (!empty($args['session']) && session_id()) {
+ $this->write_log('imap_session', $args['session']);
+ }
+ }
+
+ /**
* Create session object and start the session.
*/
public function session_init()
@@ -824,7 +843,13 @@ class rcube
*/
$clear = pack("a*H2", $clear, "80");
- if (function_exists('mcrypt_module_open') &&
+ if (function_exists('openssl_encrypt')) {
+ $method = 'DES-EDE3-CBC';
+ $opts = defined('OPENSSL_RAW_DATA') ? OPENSSL_RAW_DATA : true;
+ $iv = $this->create_iv(openssl_cipher_iv_length($method));
+ $cipher = $iv . openssl_encrypt($clear, $method, $ckey, $opts, $iv);
+ }
+ else if (function_exists('mcrypt_module_open') &&
($td = mcrypt_module_open(MCRYPT_TripleDES, "", MCRYPT_MODE_CBC, ""))
) {
$iv = $this->create_iv(mcrypt_enc_get_iv_size($td));
@@ -845,7 +870,7 @@ class rcube
self::raise_error(array(
'code' => 500, 'type' => 'php',
'file' => __FILE__, 'line' => __LINE__,
- 'message' => "Could not perform encryption; make sure Mcrypt is installed or lib/des.inc is available"
+ 'message' => "Could not perform encryption; make sure OpenSSL or Mcrypt or lib/des.inc is available"
), true, true);
}
}
@@ -871,7 +896,21 @@ class rcube
$cipher = $base64 ? base64_decode($cipher) : $cipher;
- if (function_exists('mcrypt_module_open') &&
+ if (function_exists('openssl_decrypt')) {
+ $method = 'DES-EDE3-CBC';
+ $opts = defined('OPENSSL_RAW_DATA') ? OPENSSL_RAW_DATA : true;
+ $iv_size = openssl_cipher_iv_length($method);
+ $iv = substr($cipher, 0, $iv_size);
+
+ // session corruption? (#1485970)
+ if (strlen($iv) < $iv_size) {
+ return '';
+ }
+
+ $cipher = substr($cipher, $iv_size);
+ $clear = openssl_decrypt($cipher, $method, $ckey, $opts, $iv);
+ }
+ else if (function_exists('mcrypt_module_open') &&
($td = mcrypt_module_open(MCRYPT_TripleDES, "", MCRYPT_MODE_CBC, ""))
) {
$iv_size = mcrypt_enc_get_iv_size($td);
@@ -1113,8 +1152,12 @@ class rcube
$line = var_export($line, true);
}
- $date_format = self::$instance ? self::$instance->config->get('log_date_format') : null;
- $log_driver = self::$instance ? self::$instance->config->get('log_driver') : null;
+ $date_format = $log_driver = $session_key = null;
+ if (self::$instance) {
+ $date_format = self::$instance->config->get('log_date_format');
+ $log_driver = self::$instance->config->get('log_driver');
+ $session_key = intval(self::$instance->config->get('log_session_id', 8));
+ }
if (empty($date_format)) {
$date_format = 'd-M-Y H:i:s O';
@@ -1132,6 +1175,11 @@ class rcube
return true;
}
+ // add session ID to the log
+ if ($session_key > 0 && ($sess = session_id())) {
+ $line = '<' . substr($sess, 0, $session_key) . '> ' . $line;
+ }
+
if ($log_driver == 'syslog') {
$prio = $name == 'errors' ? LOG_ERR : LOG_INFO;
syslog($prio, $line);
diff --git a/program/lib/Roundcube/rcube_addressbook.php b/program/lib/Roundcube/rcube_addressbook.php
index 4d9fa3db1..69027b0e8 100644
--- a/program/lib/Roundcube/rcube_addressbook.php
+++ b/program/lib/Roundcube/rcube_addressbook.php
@@ -557,6 +557,62 @@ abstract class rcube_addressbook
}
/**
+ * Build contact display name for autocomplete listing
+ *
+ * @param array Hash array with contact data as key-value pairs
+ * @param string Optional email address
+ * @param string Optional name (self::compose_list_name() result)
+ * @param string Optional template to use (defaults to the 'contact_search_name' config option)
+ *
+ * @return string Display name
+ */
+ public static function compose_search_name($contact, $email = null, $name = null, $templ = null)
+ {
+ static $template;
+
+ if (empty($templ) && !isset($template)) { // cache this
+ $template = rcube::get_instance()->config->get('contact_search_name');
+ if (empty($template)) {
+ $template = '{name} <{email}>';
+ }
+ }
+
+ $result = $templ ?: $template;
+
+ if (preg_match_all('/\{[a-z]+\}/', $result, $matches)) {
+ foreach ($matches[0] as $key) {
+ $key = trim($key, '{}');
+ $value = '';
+
+ switch ($key) {
+ case 'name':
+ $value = $name ?: self::compose_list_name($contact);
+ break;
+
+ case 'email':
+ $value = $email;
+ break;
+ }
+
+ if (empty($value)) {
+ $value = strpos($key, ':') ? $contact[$key] : self::get_col_values($key, $contact, true);
+ if (is_array($value)) {
+ $value = $value[0];
+ }
+ }
+
+ $result = str_replace('{' . $key . '}', $value, $result);
+ }
+ }
+
+ $result = preg_replace('/\s+/', ' ', $result);
+ $result = preg_replace('/\s*(<>|\(\)|\[\])/', '', $result);
+ $result = trim($result, '/ ');
+
+ return $result;
+ }
+
+ /**
* Create a unique key for sorting contacts
*/
public static function compose_contact_key($contact, $sort_col)
diff --git a/program/lib/Roundcube/rcube_cache.php b/program/lib/Roundcube/rcube_cache.php
index a708cb292..0017dcacc 100644
--- a/program/lib/Roundcube/rcube_cache.php
+++ b/program/lib/Roundcube/rcube_cache.php
@@ -45,6 +45,7 @@ class rcube_cache
private $cache = array();
private $cache_changes = array();
private $cache_sums = array();
+ private $max_packet = -1;
/**
@@ -319,7 +320,7 @@ class rcube_cache
* Writes single cache record into DB.
*
* @param string $key Cache key name
- * @param mxied $data Serialized cache data
+ * @param mixed $data Serialized cache data
*
* @param boolean True on success, False on failure
*/
@@ -329,6 +330,12 @@ class rcube_cache
return false;
}
+ // don't attempt to write too big data sets
+ if (strlen($data) > $this->max_packet_size()) {
+ trigger_error("rcube_cache: max_packet_size ($this->max_packet) exceeded for key $key. Tried to write " . strlen($data) . " bytes", E_USER_WARNING);
+ return false;
+ }
+
if ($this->type == 'memcache' || $this->type == 'apc') {
return $this->add_record($this->ckey($key), $data);
}
@@ -591,4 +598,30 @@ class rcube_cache
return $this->packed ? @unserialize($data) : $data;
}
+
+ /**
+ * Determine the maximum size for cache data to be written
+ */
+ private function max_packet_size()
+ {
+ if ($this->max_packet < 0) {
+ $this->max_packet = 2097152; // default/max is 2 MB
+
+ if ($this->type == 'db') {
+ $value = $this->db->get_variable('max_allowed_packet', 1048500);
+ $this->max_packet = min($value, $this->max_packet) - 2000;
+ }
+ else if ($this->type == 'memcache') {
+ $stats = $this->db->getStats();
+ $remaining = $stats['limit_maxbytes'] - $stats['bytes'];
+ $this->max_packet = min($remaining / 5, $this->max_packet);
+ }
+ else if ($this->type == 'apc' && function_exists('apc_sma_info')) {
+ $stats = apc_sma_info();
+ $this->max_packet = min($stats['avail_mem'] / 5, $this->max_packet);
+ }
+ }
+
+ return $this->max_packet;
+ }
}
diff --git a/program/lib/Roundcube/rcube_charset.php b/program/lib/Roundcube/rcube_charset.php
index ffec67376..d6ca3c052 100644
--- a/program/lib/Roundcube/rcube_charset.php
+++ b/program/lib/Roundcube/rcube_charset.php
@@ -273,17 +273,8 @@ class rcube_charset
else if ($from == 'ISO-8859-1' && function_exists('utf8_encode')) {
return utf8_encode($str);
}
- else if (class_exists('utf8')) {
- if (!$conv) {
- $conv = new utf8($from);
- }
- else {
- $conv->loadCharset($from);
- }
-
- if ($_str = $conv->strToUtf8($str)) {
- return $_str;
- }
+ else {
+ user_error("No suitable function found for UTF-8 encoding", E_USER_WARNING);
}
}
@@ -298,17 +289,8 @@ class rcube_charset
else if ($to == 'ISO-8859-1' && function_exists('utf8_decode')) {
return utf8_decode($str);
}
- else if (class_exists('utf8')) {
- if (!$conv) {
- $conv = new utf8($to);
- }
- else {
- $conv->loadCharset($from);
- }
-
- if ($_str = $conv->strToUtf8($str)) {
- return $_str;
- }
+ else {
+ user_error("No suitable function found for UTF-8 decoding", E_USER_WARNING);
}
}
diff --git a/program/lib/Roundcube/rcube_contacts.php b/program/lib/Roundcube/rcube_contacts.php
index d215760cf..5e1a40e5b 100644
--- a/program/lib/Roundcube/rcube_contacts.php
+++ b/program/lib/Roundcube/rcube_contacts.php
@@ -264,7 +264,7 @@ class rcube_contacts extends rcube_addressbook
if ($read_vcard)
$sql_arr = $this->convert_db_data($sql_arr);
else {
- $sql_arr['email'] = explode(self::SEPARATOR, $sql_arr['email']);
+ $sql_arr['email'] = $sql_arr['email'] ? explode(self::SEPARATOR, $sql_arr['email']) : array();
$sql_arr['email'] = array_map('trim', $sql_arr['email']);
}
diff --git a/program/lib/Roundcube/rcube_csv2vcard.php b/program/lib/Roundcube/rcube_csv2vcard.php
index 06bc387d5..b7d159178 100644
--- a/program/lib/Roundcube/rcube_csv2vcard.php
+++ b/program/lib/Roundcube/rcube_csv2vcard.php
@@ -149,6 +149,13 @@ class rcube_csv2vcard
// GMail
'groups' => 'groups',
+ 'group_membership' => 'groups',
+ 'given_name' => 'firstname',
+ 'additional_name' => 'middlename',
+ 'family_name' => 'surname',
+ 'name' => 'displayname',
+ 'name_prefix' => 'prefix',
+ 'name_suffix' => 'suffix',
);
/**
@@ -272,12 +279,95 @@ class rcube_csv2vcard
'work_mobile' => "Work Mobile",
'work_title' => "Work Title",
'work_zip' => "Work Zip",
- 'groups' => "Group",
+ 'group' => "Group",
+
+ // GMail
+ 'groups' => "Groups",
+ 'group_membership' => "Group Membership",
+ 'given_name' => "Given Name",
+ 'additional_name' => "Additional Name",
+ 'family_name' => "Family Name",
+ 'name' => "Name",
+ 'name_prefix' => "Name Prefix",
+ 'name_suffix' => "Name Suffix",
+ );
+
+ /**
+ * Special fields map for GMail format
+ *
+ * @var array
+ */
+ protected $gmail_label_map = array(
+ 'E-mail' => array(
+ 'Value' => array(
+ 'home' => 'email:home',
+ 'work' => 'email:work',
+ ),
+ ),
+ 'Phone' => array(
+ 'Value' => array(
+ 'home' => 'phone:home',
+ 'homefax' => 'phone:homefax',
+ 'main' => 'phone:pref',
+ 'pager' => 'phone:pager',
+ 'mobile' => 'phone:cell',
+ 'work' => 'phone:work',
+ 'workfax' => 'phone:workfax',
+ ),
+ ),
+ 'Relation' => array(
+ 'Value' => array(
+ 'spouse' => 'spouse',
+ ),
+ ),
+ 'Website' => array(
+ 'Value' => array(
+ 'profile' => 'website:profile',
+ 'blog' => 'website:blog',
+ 'homepage' => 'website:homepage',
+ 'work' => 'website:work',
+ ),
+ ),
+ 'Address' => array(
+ 'Street' => array(
+ 'home' => 'street:home',
+ 'work' => 'street:work',
+ ),
+ 'City' => array(
+ 'home' => 'locality:home',
+ 'work' => 'locality:work',
+ ),
+ 'Region' => array(
+ 'home' => 'region:home',
+ 'work' => 'region:work',
+ ),
+ 'Postal Code' => array(
+ 'home' => 'zipcode:home',
+ 'work' => 'zipcode:work',
+ ),
+ 'Country' => array(
+ 'home' => 'country:home',
+ 'work' => 'country:work',
+ ),
+ ),
+ 'Organization' => array(
+ 'Name' => array(
+ '' => 'organization',
+ ),
+ 'Title' => array(
+ '' => 'jobtitle',
+ ),
+ 'Department' => array(
+ '' => 'department',
+ ),
+ ),
);
+
protected $local_label_map = array();
- protected $vcards = array();
- protected $map = array();
+ protected $vcards = array();
+ protected $map = array();
+ protected $gmail_map = array();
/**
@@ -308,16 +398,24 @@ class rcube_csv2vcard
public function import($csv)
{
// convert to UTF-8
- $head = substr($csv, 0, 4096);
- $charset = rcube_charset::detect($head, RCUBE_CHARSET);
- $csv = rcube_charset::convert($csv, $charset);
- $head = '';
+ $head = substr($csv, 0, 4096);
+ $charset = rcube_charset::detect($head, RCUBE_CHARSET);
+ $csv = rcube_charset::convert($csv, $charset);
+ $csv = preg_replace(array('/^[\xFE\xFF]{2}/', '/^\xEF\xBB\xBF/', '/^\x00+/'), '', $csv); // also remove BOM
+ $head = '';
+ $prev_line = false;
- $this->map = array();
+ $this->map = array();
+ $this->gmail_map = array();
// Parse file
foreach (preg_split("/[\r\n]+/", $csv) as $line) {
+ if (!empty($prev_line)) {
+ $line = '"' . $line;
+ }
+
$elements = $this->parse_line($line);
+
if (empty($elements)) {
continue;
}
@@ -331,7 +429,28 @@ class rcube_csv2vcard
}
// Parse data row
else {
+ // handle multiline elements (e.g. Gmail)
+ if (!empty($prev_line)) {
+ $first = array_shift($elements);
+
+ if ($first[0] == '"') {
+ $prev_line[count($prev_line)-1] = '"' . $prev_line[count($prev_line)-1] . "\n" . substr($first, 1);
+ }
+ else {
+ $prev_line[count($prev_line)-1] .= "\n" . $first;
+ }
+
+ $elements = array_merge($prev_line, $elements);
+ }
+
+ $last_element = $elements[count($elements)-1];
+ if ($last_element[0] == '"') {
+ $elements[count($elements)-1] = substr($last_element, 1);
+ $prev_line = $elements;
+ continue;
+ }
$this->csv_to_vcard($elements);
+ $prev_line = false;
}
}
}
@@ -389,6 +508,7 @@ class rcube_csv2vcard
$map1[$i] = $this->csv2vcard_map[$label];
}
}
+
// check localized labels
if (!empty($this->local_label_map)) {
for ($i = 0; $i < $size; $i++) {
@@ -406,6 +526,22 @@ class rcube_csv2vcard
}
$this->map = count($map1) >= count($map2) ? $map1 : $map2;
+
+ // support special Gmail format
+ foreach ($this->gmail_label_map as $key => $items) {
+ $num = 1;
+ while (($_key = "$key $num - Type") && ($found = array_search($_key, $elements)) !== false) {
+ $this->gmail_map["$key:$num"] = array('_key' => $key, '_idx' => $found);
+ foreach (array_keys($items) as $item_key) {
+ $_key = "$key $num - $item_key";
+ if (($found = array_search($_key, $elements)) !== false) {
+ $this->gmail_map["$key:$num"][$item_key] = $found;
+ }
+ }
+
+ $num++;
+ }
+ }
}
/**
@@ -421,6 +557,22 @@ class rcube_csv2vcard
}
}
+ // Gmail format support
+ foreach ($this->gmail_map as $idx => $item) {
+ $type = preg_replace('/[^a-z]/', '', strtolower($data[$item['_idx']]));
+ $key = $item['_key'];
+
+ unset($item['_idx']);
+ unset($item['_key']);
+
+ foreach ($item as $item_key => $item_idx) {
+ $value = $data[$item_idx];
+ if ($value !== null && $value !== '' && ($data_idx = $this->gmail_label_map[$key][$item_key][$type])) {
+ $contact[$data_idx] = $value;
+ }
+ }
+ }
+
if (empty($contact)) {
return;
}
@@ -430,9 +582,14 @@ class rcube_csv2vcard
$contact['birthday'] = $contact['birthday-y'] .'-' .$contact['birthday-m'] . '-' . $contact['birthday-d'];
}
- // categories/groups separator in vCard is ',' not ';'
if (!empty($contact['groups'])) {
+ // categories/groups separator in vCard is ',' not ';'
$contact['groups'] = str_replace(';', ',', $contact['groups']);
+
+ // remove "* " added by GMail
+ if (!empty($this->gmail_map)) {
+ $contact['groups'] = str_replace('* ', '', $contact['groups']);
+ }
}
// Empty dates, e.g. "0/0/00", "0000-00-00 00:00:00"
diff --git a/program/lib/Roundcube/rcube_html2text.php b/program/lib/Roundcube/rcube_html2text.php
index 8628371d7..499c4b05c 100644
--- a/program/lib/Roundcube/rcube_html2text.php
+++ b/program/lib/Roundcube/rcube_html2text.php
@@ -423,7 +423,7 @@ class rcube_html2text
// Variables used for building the link list
$this->_link_list = array();
- $text = trim(stripslashes($this->html));
+ $text = $this->html;
// Convert HTML to TXT
$this->_converter($text);
diff --git a/program/lib/Roundcube/rcube_image.php b/program/lib/Roundcube/rcube_image.php
index a15368a7e..d0d0c7437 100644
--- a/program/lib/Roundcube/rcube_image.php
+++ b/program/lib/Roundcube/rcube_image.php
@@ -189,7 +189,7 @@ class rcube_image
}
else if($props['gd_type'] == IMAGETYPE_GIF && function_exists('imagecreatefromgif')) {
$image = imagecreatefromgif($this->image_file);
- $type = 'gid';
+ $type = 'gif';
}
else if($props['gd_type'] == IMAGETYPE_PNG && function_exists('imagecreatefrompng')) {
$image = imagecreatefrompng($this->image_file);
@@ -228,6 +228,24 @@ class rcube_image
imagecopyresampled($new_image, $image, 0, 0, 0, 0, $width, $height, $props['width'], $props['height']);
$image = $new_image;
+ // fix rotation of image if EXIF data exists and specifies rotation (GD strips the EXIF data)
+ if ($this->image_file && function_exists('exif_read_data')) {
+ $exif = exif_read_data($this->image_file);
+ if ($exif && $exif['Orientation']) {
+ switch ($exif['Orientation']) {
+ case 3:
+ $image = imagerotate($image, 180, 0);
+ break;
+ case 6:
+ $image = imagerotate($image, -90, 0);
+ break;
+ case 8:
+ $image = imagerotate($image, 90, 0);
+ break;
+ }
+ }
+ }
+
if ($props['gd_type'] == IMAGETYPE_JPEG) {
$result = imagejpeg($image, $filename, 75);
}
diff --git a/program/lib/Roundcube/rcube_imap.php b/program/lib/Roundcube/rcube_imap.php
index 4204354b3..a66d2064d 100644
--- a/program/lib/Roundcube/rcube_imap.php
+++ b/program/lib/Roundcube/rcube_imap.php
@@ -56,6 +56,7 @@ class rcube_imap extends rcube_storage
*/
protected $icache = array();
+ protected $plugins;
protected $list_page = 1;
protected $delimiter;
protected $namespace;
@@ -82,6 +83,7 @@ class rcube_imap extends rcube_storage
public function __construct()
{
$this->conn = new rcube_imap_generic();
+ $this->plugins = rcube::get_instance()->plugins;
// Set namespace and delimiter from session,
// so some methods would work before connection
@@ -110,13 +112,13 @@ class rcube_imap extends rcube_storage
/**
* Connect to an IMAP server
*
- * @param string $host Host to connect
- * @param string $user Username for IMAP account
- * @param string $pass Password for IMAP account
- * @param integer $port Port to connect to
- * @param string $use_ssl SSL schema (either ssl or tls) or null if plain connection
+ * @param string $host Host to connect
+ * @param string $user Username for IMAP account
+ * @param string $pass Password for IMAP account
+ * @param integer $port Port to connect to
+ * @param string $use_ssl SSL schema (either ssl or tls) or null if plain connection
*
- * @return boolean TRUE on success, FALSE on failure
+ * @return boolean True on success, False on failure
*/
public function connect($host, $user, $pass, $port=143, $use_ssl=null)
{
@@ -147,7 +149,7 @@ class rcube_imap extends rcube_storage
$attempt = 0;
do {
- $data = rcube::get_instance()->plugins->exec_hook('storage_connect',
+ $data = $this->plugins->exec_hook('storage_connect',
array_merge($this->options, array('host' => $host, 'user' => $user,
'attempt' => ++$attempt)));
@@ -170,8 +172,20 @@ class rcube_imap extends rcube_storage
$this->connect_done = true;
if ($this->conn->connected()) {
+ // check for session identifier
+ $session = null;
+ if (preg_match('/\s+SESSIONID=([^=\s]+)/', $this->conn->result, $m)) {
+ $session = $m[1];
+ }
+
// get namespace and delimiter
$this->set_env();
+
+ // trigger post-connect hook
+ $this->plugins->exec_hook('storage_connected', array(
+ 'host' => $host, 'user' => $user, 'session' => $session
+ ));
+
return true;
}
// write error log
@@ -761,7 +775,7 @@ class rcube_imap extends rcube_storage
$page = $page ? $page : $this->list_page;
// use saved message set
- if ($this->search_string && $folder == $this->folder) {
+ if ($this->search_string) {
return $this->list_search_messages($folder, $page, $slice);
}
@@ -1489,23 +1503,39 @@ class rcube_imap extends rcube_storage
* Invoke search request to IMAP server
*
* @param string $folder Folder name to search in
- * @param string $str Search criteria
+ * @param string $search Search criteria
* @param string $charset Search charset
* @param string $sort_field Header field to sort by
+ *
* @return rcube_result_index Search result object
* @todo: Search criteria should be provided in non-IMAP format, eg. array
*/
- public function search($folder='', $str='ALL', $charset=NULL, $sort_field=NULL)
+ public function search($folder = '', $search = 'ALL', $charset = null, $sort_field = null)
{
- if (!$str) {
- $str = 'ALL';
+ if (!$search) {
+ $search = 'ALL';
}
- // multi-folder search
- if (is_array($folder) && count($folder) > 1 && $str != 'ALL') {
- new rcube_result_index; // trigger autoloader and make these classes available for threaded context
- new rcube_result_thread;
+ if ((is_array($folder) && empty($folder)) || (!is_array($folder) && !strlen($folder))) {
+ $folder = $this->folder;
+ }
+
+ $plugin = $this->plugins->exec_hook('imap_search_before', array(
+ 'folder' => $folder,
+ 'search' => $search,
+ 'charset' => $charset,
+ 'sort_field' => $sort_field,
+ 'threading' => $this->threading,
+ ));
+ $folder = $plugin['folder'];
+ $search = $plugin['search'];
+ $charset = $plugin['charset'];
+ $sort_field = $plugin['sort_field'];
+ $results = $plugin['result'];
+
+ // multi-folder search
+ if (!$results && is_array($folder) && count($folder) > 1 && $search != 'ALL') {
// connect IMAP to have all the required classes and settings loaded
$this->check_connection();
@@ -1518,29 +1548,28 @@ class rcube_imap extends rcube_storage
$searcher->set_timelimit(60);
// continue existing incomplete search
- if (!empty($this->search_set) && $this->search_set->incomplete && $str == $this->search_string) {
+ if (!empty($this->search_set) && $this->search_set->incomplete && $search == $this->search_string) {
$searcher->set_results($this->search_set);
}
// execute the search
$results = $searcher->exec(
$folder,
- $str,
+ $search,
$charset ? $charset : $this->default_charset,
$sort_field && $this->get_capability('SORT') ? $sort_field : null,
$this->threading
);
}
- else {
- $folder = is_array($folder) ? $folder[0] : $folder;
- if (!strlen($folder)) {
- $folder = $this->folder;
- }
- $results = $this->search_index($folder, $str, $charset, $sort_field);
+ else if (!$results) {
+ $folder = is_array($folder) ? $folder[0] : $folder;
+ $search = is_array($search) ? $search[$folder] : $search;
+ $results = $this->search_index($folder, $search, $charset, $sort_field);
}
- $this->set_search_set(array($str, $results, $charset, $sort_field,
- $this->threading || $this->search_sorted ? true : false));
+ $sorted = $this->threading || $this->search_sorted || $plugin['search_sorted'] ? true : false;
+
+ $this->set_search_set(array($search, $results, $charset, $sort_field, $sorted));
return $results;
}
@@ -1676,12 +1705,15 @@ class rcube_imap extends rcube_storage
$string_offset = $m[1] + strlen($m[0]) + 4; // {}\r\n
$string = substr($str, $string_offset - 1, $m[0]);
$string = rcube_charset::convert($string, $charset, $dest_charset);
- if ($string === false) {
+
+ if ($string === false || !strlen($string)) {
continue;
}
+
$res .= substr($str, $last, $m[1] - $last - 1) . rcube_imap_generic::escape($string);
$last = $m[0] + $string_offset - 1;
}
+
if ($last < strlen($str)) {
$res .= substr($str, $last, strlen($str)-$last);
}
@@ -1830,7 +1862,7 @@ class rcube_imap extends rcube_storage
$this->struct_charset = $this->structure_charset($structure);
}
- $headers->ctype = strtolower($headers->ctype);
+ $headers->ctype = @strtolower($headers->ctype);
// Here we can recognize malformed BODYSTRUCTURE and
// 1. [@TODO] parse the message in other way to create our own message structure
@@ -2483,7 +2515,7 @@ class rcube_imap extends rcube_storage
// increase messagecount of the target folder
$this->set_messagecount($folder, 'ALL', 1);
- rcube::get_instance()->plugins->exec_hook('message_saved', array(
+ $this->plugins->exec_hook('message_saved', array(
'folder' => $folder,
'message' => $message,
'headers' => $headers,
@@ -2759,7 +2791,7 @@ class rcube_imap extends rcube_storage
}
// Give plugins a chance to provide a list of folders
- $data = rcube::get_instance()->plugins->exec_hook('storage_folders',
+ $data = $this->plugins->exec_hook('storage_folders',
array('root' => $root, 'name' => $name, 'filter' => $filter, 'mode' => 'LSUB'));
if (isset($data['folders'])) {
@@ -2891,7 +2923,7 @@ class rcube_imap extends rcube_storage
}
// Give plugins a chance to provide a list of folders
- $data = rcube::get_instance()->plugins->exec_hook('storage_folders',
+ $data = $this->plugins->exec_hook('storage_folders',
array('root' => $root, 'name' => $name, 'filter' => $filter, 'mode' => 'LIST'));
if (isset($data['folders'])) {
@@ -2972,7 +3004,7 @@ class rcube_imap extends rcube_storage
* @param array $result Reference to folders list
* @param string $type Listing type (ext-subscribed, subscribed or all)
*/
- private function list_folders_update(&$result, $type = null)
+ protected function list_folders_update(&$result, $type = null)
{
$namespace = $this->get_namespace();
$search = array();
@@ -3049,14 +3081,15 @@ class rcube_imap extends rcube_storage
/**
* Get mailbox quota information
- * added by Nuny
+ *
+ * @param string $folder Folder name
*
* @return mixed Quota info or False if not supported
*/
- public function get_quota()
+ public function get_quota($folder = null)
{
if ($this->get_capability('QUOTA') && $this->check_connection()) {
- return $this->conn->getQuota();
+ return $this->conn->getQuota($folder);
}
return false;
@@ -3132,6 +3165,16 @@ class rcube_imap extends rcube_storage
$result = $this->conn->createFolder($folder, $type ? array("\\" . ucfirst($type)) : null);
+ // it's quite often situation that we're trying to create and subscribe
+ // a folder that already exist, but is unsubscribed
+ if (!$result) {
+ if ($this->get_response_code() == rcube_storage::ALREADYEXISTS
+ || preg_match('/already exists/i', $this->get_error_str())
+ ) {
+ $result = true;
+ }
+ }
+
// try to subscribe it
if ($result) {
// clear cache
@@ -3279,12 +3322,14 @@ class rcube_imap extends rcube_storage
// request \Subscribed flag in LIST response as performance improvement for folder_exists()
$folders = $this->conn->listMailboxes('', '*', array('SUBSCRIBED'), array('SPECIAL-USE'));
- foreach ($folders as $folder) {
- if ($flags = $this->conn->data['LIST'][$folder]) {
- foreach ($types as $type) {
- if (in_array($type, $flags)) {
- $type = strtolower(substr($type, 1));
- $special[$type] = $folder;
+ if (!empty($folders)) {
+ foreach ($folders as $folder) {
+ if ($flags = $this->conn->data['LIST'][$folder]) {
+ foreach ($types as $type) {
+ if (in_array($type, $flags)) {
+ $type = strtolower(substr($type, 1));
+ $special[$type] = $folder;
+ }
}
}
}
@@ -4124,61 +4169,82 @@ class rcube_imap extends rcube_storage
*/
public function sort_folder_list($a_folders, $skip_default = false)
{
- $a_out = $a_defaults = $folders = array();
-
- $delimiter = $this->get_hierarchy_delimiter();
$specials = array_merge(array('INBOX'), array_values($this->get_special_folders()));
+ $folders = array();
- // find default folders and skip folders starting with '.'
+ // convert names to UTF-8 and skip folders starting with '.'
foreach ($a_folders as $folder) {
- if ($folder[0] == '.') {
- continue;
- }
-
- if (!$skip_default && ($p = array_search($folder, $specials)) !== false && !$a_defaults[$p]) {
- $a_defaults[$p] = $folder;
- }
- else {
- $folders[$folder] = rcube_charset::convert($folder, 'UTF7-IMAP');
+ if ($folder[0] != '.') {
+ // for better performance skip encoding conversion
+ // if the string does not look like UTF7-IMAP
+ $folders[$folder] = strpos($folder, '&') === false ? $folder : rcube_charset::convert($folder, 'UTF7-IMAP');
}
}
- // sort folders and place defaults on the top
- asort($folders, SORT_LOCALE_STRING);
- ksort($a_defaults);
- $folders = array_merge($a_defaults, array_keys($folders));
+ // sort folders
+ // asort($folders, SORT_LOCALE_STRING) is not properly sorting case sensitive names
+ uasort($folders, array($this, 'sort_folder_comparator'));
+
+ $folders = array_keys($folders);
- // finally we must rebuild the list to move
- // subfolders of default folders to their place...
- // ...also do this for the rest of folders because
- // asort() is not properly sorting case sensitive names
- while (list($key, $folder) = each($folders)) {
- // set the type of folder name variable (#1485527)
- $a_out[] = (string) $folder;
- unset($folders[$key]);
- $this->rsort($folder, $delimiter, $folders, $a_out);
+ if ($skip_default) {
+ return $folders;
}
- return $a_out;
- }
+ // force the type of folder name variable (#1485527)
+ $folders = array_map('strval', $folders);
+ $out = array();
+
+ // finally we must put special folders on top and rebuild the list
+ // to move their subfolders where they belong...
+ $specials = array_unique(array_intersect($specials, $folders));
+ $folders = array_merge($specials, array_diff($folders, $specials));
+
+ $this->sort_folder_specials(null, $folders, $specials, $out);
+ return $out;
+ }
/**
- * Recursive method for sorting folders
+ * Recursive function to put subfolders of special folders in place
*/
- protected function rsort($folder, $delimiter, &$list, &$out)
+ protected function sort_folder_specials($folder, &$list, &$specials, &$out)
{
while (list($key, $name) = each($list)) {
- if (strpos($name, $folder.$delimiter) === 0) {
- // set the type of folder name variable (#1485527)
- $out[] = (string) $name;
+ if ($folder === null || strpos($name, $folder.$this->delimiter) === 0) {
+ $out[] = $name;
unset($list[$key]);
- $this->rsort($name, $delimiter, $list, $out);
+
+ if (!empty($specials) && ($found = array_search($name, $specials)) !== false) {
+ unset($specials[$found]);
+ $this->sort_folder_specials($name, $list, $specials, $out);
+ }
}
}
+
reset($list);
}
+ /**
+ * Callback for uasort() that implements correct
+ * locale-aware case-sensitive sorting
+ */
+ protected function sort_folder_comparator($str1, $str2)
+ {
+ $path1 = explode($this->delimiter, $str1);
+ $path2 = explode($this->delimiter, $str2);
+
+ foreach ($path1 as $idx => $folder1) {
+ $folder2 = $path2[$idx];
+
+ if ($folder1 === $folder2) {
+ continue;
+ }
+
+ return strcoll($folder1, $folder2);
+ }
+ }
+
/**
* Find UID of the specified message sequence ID
diff --git a/program/lib/Roundcube/rcube_imap_generic.php b/program/lib/Roundcube/rcube_imap_generic.php
index f45694dd0..68d9c6a2c 100644
--- a/program/lib/Roundcube/rcube_imap_generic.php
+++ b/program/lib/Roundcube/rcube_imap_generic.php
@@ -50,17 +50,17 @@ class rcube_imap_generic
public static $mupdate;
- private $fp;
- private $host;
- private $logged = false;
- private $capability = array();
- private $capability_readed = false;
- private $prefs;
- private $cmd_tag;
- private $cmd_num = 0;
- private $resourceid;
- private $_debug = false;
- private $_debug_handler = false;
+ protected $fp;
+ protected $host;
+ protected $logged = false;
+ protected $capability = array();
+ protected $capability_readed = false;
+ protected $prefs;
+ protected $cmd_tag;
+ protected $cmd_num = 0;
+ protected $resourceid;
+ protected $_debug = false;
+ protected $_debug_handler = false;
const ERROR_OK = 0;
const ERROR_NO = -1;
@@ -352,7 +352,7 @@ class rcube_imap_generic
*
* @return bool True if connection is closed
*/
- private function eof()
+ protected function eof()
{
if (!is_resource($this->fp)) {
return true;
@@ -375,7 +375,7 @@ class rcube_imap_generic
/**
* Closes connection stream.
*/
- private function closeSocket()
+ protected function closeSocket()
{
@fclose($this->fp);
$this->fp = null;
@@ -421,7 +421,7 @@ class rcube_imap_generic
return false;
}
- private function hasCapability($name)
+ protected function hasCapability($name)
{
if (empty($this->capability) || $name == '') {
return false;
@@ -723,110 +723,38 @@ class rcube_imap_generic
// configure
$this->set_prefs($options);
- $auth_method = $this->prefs['auth_type'];
- $result = false;
-
- // initialize connection
- $this->error = '';
- $this->errornum = self::ERROR_OK;
- $this->selected = null;
- $this->user = $user;
$this->host = $host;
+ $this->user = $user;
$this->logged = false;
+ $this->selected = null;
// check input
if (empty($host)) {
$this->setError(self::ERROR_BAD, "Empty host");
return false;
}
+
if (empty($user)) {
$this->setError(self::ERROR_NO, "Empty user");
return false;
}
+
if (empty($password)) {
$this->setError(self::ERROR_NO, "Empty password");
return false;
}
- if (!$this->prefs['port']) {
- $this->prefs['port'] = 143;
- }
- // check for SSL
- if ($this->prefs['ssl_mode'] && $this->prefs['ssl_mode'] != 'tls') {
- $host = $this->prefs['ssl_mode'] . '://' . $host;
- }
-
- if ($this->prefs['timeout'] <= 0) {
- $this->prefs['timeout'] = max(0, intval(ini_get('default_socket_timeout')));
- }
-
// Connect
- $this->fp = @fsockopen($host, $this->prefs['port'], $errno, $errstr, $this->prefs['timeout']);
-
- if (!$this->fp) {
- if (!$errstr) {
- $errstr = "Unknown reason (fsockopen() function disabled?)";
- }
- $this->setError(self::ERROR_BAD, sprintf("Could not connect to %s:%d: %s", $host, $this->prefs['port'], $errstr));
- return false;
- }
-
- if ($this->prefs['timeout'] > 0) {
- stream_set_timeout($this->fp, $this->prefs['timeout']);
- }
-
- $line = trim(fgets($this->fp, 8192));
-
- if ($this->_debug) {
- // set connection identifier for debug output
- preg_match('/#([0-9]+)/', (string)$this->fp, $m);
- $this->resourceid = strtoupper(substr(md5($m[1].$this->user.microtime()), 0, 4));
-
- if ($line)
- $this->debug('S: '. $line);
- }
-
- // Connected to wrong port or connection error?
- if (!preg_match('/^\* (OK|PREAUTH)/i', $line)) {
- if ($line)
- $error = sprintf("Wrong startup greeting (%s:%d): %s", $host, $this->prefs['port'], $line);
- else
- $error = sprintf("Empty startup greeting (%s:%d)", $host, $this->prefs['port']);
-
- $this->setError(self::ERROR_BAD, $error);
- $this->closeConnection();
+ if (!$this->_connect($host)) {
return false;
}
- // RFC3501 [7.1] optional CAPABILITY response
- if (preg_match('/\[CAPABILITY ([^]]+)\]/i', $line, $matches)) {
- $this->parseCapability($matches[1], true);
- }
-
- // TLS connection
- if ($this->prefs['ssl_mode'] == 'tls' && $this->getCapability('STARTTLS')) {
- $res = $this->execute('STARTTLS');
-
- if ($res[0] != self::ERROR_OK) {
- $this->closeConnection();
- return false;
- }
-
- if (!stream_socket_enable_crypto($this->fp, true, STREAM_CRYPTO_METHOD_TLS_CLIENT)) {
- $this->setError(self::ERROR_BAD, "Unable to negotiate TLS");
- $this->closeConnection();
- return false;
- }
-
- // Now we're secure, capabilities need to be reread
- $this->clearCapability();
- }
-
// Send ID info
if (!empty($this->prefs['ident']) && $this->getCapability('ID')) {
$this->id($this->prefs['ident']);
}
+ $auth_method = $this->prefs['auth_type'];
$auth_methods = array();
$result = null;
@@ -901,6 +829,103 @@ class rcube_imap_generic
}
/**
+ * Connects to IMAP server.
+ *
+ * @param string $host Server hostname or IP
+ *
+ * @return bool True on success, False on failure
+ */
+ protected function _connect($host)
+ {
+ // initialize connection
+ $this->error = '';
+ $this->errornum = self::ERROR_OK;
+
+ if (!$this->prefs['port']) {
+ $this->prefs['port'] = 143;
+ }
+
+ // check for SSL
+ if ($this->prefs['ssl_mode'] && $this->prefs['ssl_mode'] != 'tls') {
+ $host = $this->prefs['ssl_mode'] . '://' . $host;
+ }
+
+ if ($this->prefs['timeout'] <= 0) {
+ $this->prefs['timeout'] = max(0, intval(ini_get('default_socket_timeout')));
+ }
+
+ if (!empty($this->prefs['socket_options'])) {
+ $context = stream_context_create($this->prefs['socket_options']);
+ $this->fp = stream_socket_client($host . ':' . $this->prefs['port'], $errno, $errstr,
+ $this->prefs['timeout'], STREAM_CLIENT_CONNECT, $context);
+ }
+ else {
+ $this->fp = @fsockopen($host, $this->prefs['port'], $errno, $errstr, $this->prefs['timeout']);
+ }
+
+ if (!$this->fp) {
+ $this->setError(self::ERROR_BAD, sprintf("Could not connect to %s:%d: %s",
+ $host, $this->prefs['port'], $errstr ?: "Unknown reason"));
+
+ return false;
+ }
+
+ if ($this->prefs['timeout'] > 0) {
+ stream_set_timeout($this->fp, $this->prefs['timeout']);
+ }
+
+ $line = trim(fgets($this->fp, 8192));
+
+ if ($this->_debug) {
+ // set connection identifier for debug output
+ preg_match('/#([0-9]+)/', (string) $this->fp, $m);
+ $this->resourceid = strtoupper(substr(md5($m[1].$this->user.microtime()), 0, 4));
+
+ if ($line) {
+ $this->debug('S: '. $line);
+ }
+ }
+
+ // Connected to wrong port or connection error?
+ if (!preg_match('/^\* (OK|PREAUTH)/i', $line)) {
+ if ($line)
+ $error = sprintf("Wrong startup greeting (%s:%d): %s", $host, $this->prefs['port'], $line);
+ else
+ $error = sprintf("Empty startup greeting (%s:%d)", $host, $this->prefs['port']);
+
+ $this->setError(self::ERROR_BAD, $error);
+ $this->closeConnection();
+ return false;
+ }
+
+ // RFC3501 [7.1] optional CAPABILITY response
+ if (preg_match('/\[CAPABILITY ([^]]+)\]/i', $line, $matches)) {
+ $this->parseCapability($matches[1], true);
+ }
+
+ // TLS connection
+ if ($this->prefs['ssl_mode'] == 'tls' && $this->getCapability('STARTTLS')) {
+ $res = $this->execute('STARTTLS');
+
+ if ($res[0] != self::ERROR_OK) {
+ $this->closeConnection();
+ return false;
+ }
+
+ if (!stream_socket_enable_crypto($this->fp, true, STREAM_CRYPTO_METHOD_TLS_CLIENT)) {
+ $this->setError(self::ERROR_BAD, "Unable to negotiate TLS");
+ $this->closeConnection();
+ return false;
+ }
+
+ // Now we're secure, capabilities need to be reread
+ $this->clearCapability();
+ }
+
+ return true;
+ }
+
+ /**
* Initializes environment
*/
protected function set_prefs($prefs)
@@ -1268,15 +1293,15 @@ class rcube_imap_generic
*
* @param string $ref Reference name
* @param string $mailbox Mailbox name
- * @param array $status_opts (see self::_listMailboxes)
+ * @param array $return_opts (see self::_listMailboxes)
* @param array $select_opts (see self::_listMailboxes)
*
- * @return array List of mailboxes or hash of options if $status_opts argument
- * is non-empty.
+ * @return array|bool List of mailboxes or hash of options if STATUS/MYROGHTS response
+ * is requested, False on error.
*/
- function listMailboxes($ref, $mailbox, $status_opts=array(), $select_opts=array())
+ function listMailboxes($ref, $mailbox, $return_opts=array(), $select_opts=array())
{
- return $this->_listMailboxes($ref, $mailbox, false, $status_opts, $select_opts);
+ return $this->_listMailboxes($ref, $mailbox, false, $return_opts, $select_opts);
}
/**
@@ -1284,14 +1309,14 @@ class rcube_imap_generic
*
* @param string $ref Reference name
* @param string $mailbox Mailbox name
- * @param array $status_opts (see self::_listMailboxes)
+ * @param array $return_opts (see self::_listMailboxes)
*
- * @return array List of mailboxes or hash of options if $status_opts argument
- * is non-empty.
+ * @return array|bool List of mailboxes or hash of options if STATUS/MYROGHTS response
+ * is requested, False on error.
*/
- function listSubscribed($ref, $mailbox, $status_opts=array())
+ function listSubscribed($ref, $mailbox, $return_opts=array())
{
- return $this->_listMailboxes($ref, $mailbox, true, $status_opts, NULL);
+ return $this->_listMailboxes($ref, $mailbox, true, $return_opts, NULL);
}
/**
@@ -1300,18 +1325,18 @@ class rcube_imap_generic
* @param string $ref Reference name
* @param string $mailbox Mailbox name
* @param bool $subscribed Enables returning subscribed mailboxes only
- * @param array $status_opts List of STATUS options
- * (RFC5819: LIST-STATUS: MESSAGES, RECENT, UIDNEXT, UIDVALIDITY, UNSEEN)
- * or RETURN options (RFC5258: LIST_EXTENDED: SUBSCRIBED, CHILDREN)
+ * @param array $return_opts List of RETURN options (RFC5819: LIST-STATUS, RFC5258: LIST-EXTENDED)
+ * Possible: MESSAGES, RECENT, UIDNEXT, UIDVALIDITY, UNSEEN,
+ * MYRIGHTS, SUBSCRIBED, CHILDREN
* @param array $select_opts List of selection options (RFC5258: LIST-EXTENDED)
* Possible: SUBSCRIBED, RECURSIVEMATCH, REMOTE,
* SPECIAL-USE (RFC6154)
*
- * @return array List of mailboxes or hash of options if $status_ops argument
- * is non-empty.
+ * @return array|bool List of mailboxes or hash of options if STATUS/MYROGHTS response
+ * is requested, False on error.
*/
- private function _listMailboxes($ref, $mailbox, $subscribed=false,
- $status_opts=array(), $select_opts=array())
+ protected function _listMailboxes($ref, $mailbox, $subscribed=false,
+ $return_opts=array(), $select_opts=array())
{
if (!strlen($mailbox)) {
$mailbox = '*';
@@ -1329,17 +1354,25 @@ class rcube_imap_generic
$args[] = $this->escape($ref);
$args[] = $this->escape($mailbox);
- if (!empty($status_opts) && $this->getCapability('LIST-EXTENDED')) {
- $rets = array_intersect($status_opts, array('SUBSCRIBED', 'CHILDREN'));
+ if (!empty($return_opts) && $this->getCapability('LIST-EXTENDED')) {
+ $ext_opts = array('SUBSCRIBED', 'CHILDREN');
+ $rets = array_intersect($return_opts, $ext_opts);
+ $return_opts = array_diff($return_opts, $rets);
}
- if (!empty($status_opts) && $this->getCapability('LIST-STATUS')) {
- $status_opts = array_intersect($status_opts, array('MESSAGES', 'RECENT', 'UIDNEXT', 'UIDVALIDITY', 'UNSEEN'));
+ if (!empty($return_opts) && $this->getCapability('LIST-STATUS')) {
+ $lstatus = true;
+ $status_opts = array('MESSAGES', 'RECENT', 'UIDNEXT', 'UIDVALIDITY', 'UNSEEN');
+ $opts = array_diff($return_opts, $status_opts);
+ $status_opts = array_diff($return_opts, $opts);
if (!empty($status_opts)) {
- $lstatus = true;
$rets[] = 'STATUS (' . implode(' ', $status_opts) . ')';
}
+
+ if (!empty($opts)) {
+ $rets = array_merge($rets, $opts);
+ }
}
if (!empty($rets)) {
@@ -1363,9 +1396,10 @@ class rcube_imap_generic
$line = substr($response, $last, $pos - $last);
$last = $pos + 2;
- if (!preg_match('/^\* (LIST|LSUB|STATUS) /i', $line, $m)) {
+ if (!preg_match('/^\* (LIST|LSUB|STATUS|MYRIGHTS) /i', $line, $m)) {
continue;
}
+
$cmd = strtoupper($m[1]);
$line = substr($line, strlen($m[0]));
@@ -1396,13 +1430,20 @@ class rcube_imap_generic
$this->data['LIST'][$mailbox], $opts));
}
}
- // * STATUS <mailbox> (<result>)
- else if ($cmd == 'STATUS') {
- list($mailbox, $status) = $this->tokenizeResponse($line, 2);
-
- for ($i=0, $len=count($status); $i<$len; $i += 2) {
- list($name, $value) = $this->tokenizeResponse($status, 2);
- $folders[$mailbox][$name] = $value;
+ else if ($lstatus) {
+ // * STATUS <mailbox> (<result>)
+ if ($cmd == 'STATUS') {
+ list($mailbox, $status) = $this->tokenizeResponse($line, 2);
+
+ for ($i=0, $len=count($status); $i<$len; $i += 2) {
+ list($name, $value) = $this->tokenizeResponse($status, 2);
+ $folders[$mailbox][$name] = $value;
+ }
+ }
+ // * MYRIGHTS <mailbox> <acl>
+ else if ($cmd == 'MYRIGHTS') {
+ list($mailbox, $acl) = $this->tokenizeResponse($line, 2);
+ $folders[$mailbox]['MYRIGHTS'] = $acl;
}
}
}
@@ -1877,8 +1918,8 @@ class rcube_imap_generic
$result[$id] = '';
}
} else if ($mode == 2) {
- if (preg_match('/(UID|RFC822\.SIZE) ([0-9]+)/', $line, $matches)) {
- $result[$id] = trim($matches[2]);
+ if (preg_match('/' . $index_field . ' ([0-9]+)/', $line, $matches)) {
+ $result[$id] = trim($matches[1]);
} else {
$result[$id] = 0;
}
@@ -1985,12 +2026,8 @@ class rcube_imap_generic
*
* @return bool True on success, False on failure
*/
- private function modFlag($mailbox, $messages, $flag, $mod = '+')
+ protected function modFlag($mailbox, $messages, $flag, $mod = '+')
{
- if ($mod != '+' && $mod != '-') {
- $mod = '+';
- }
-
if (!$this->select($mailbox)) {
return false;
}
@@ -2000,12 +2037,25 @@ class rcube_imap_generic
return false;
}
+ if ($this->flags[strtoupper($flag)]) {
+ $flag = $this->flags[strtoupper($flag)];
+ }
+
+ if (!$flag || (!in_array($flag, (array) $this->data['PERMANENTFLAGS'])
+ && !in_array('\\*', (array) $this->data['PERMANENTFLAGS']))
+ ) {
+ return false;
+ }
+
// Clear internal status cache
if ($flag == 'SEEN') {
unset($this->data['STATUS:'.$mailbox]['UNSEEN']);
}
- $flag = $this->flags[strtoupper($flag)];
+ if ($mod != '+' && $mod != '-') {
+ $mod = '+';
+ }
+
$result = $this->execute('UID STORE', array(
$this->compressMessageSet($messages), $mod . 'FLAGS.SILENT', "($flag)"),
self::COMMAND_NORESPONSE);
@@ -2834,59 +2884,66 @@ class rcube_imap_generic
/**
* Returns QUOTA information
*
+ * @param string $mailbox Mailbox name
+ *
* @return array Quota information
*/
- function getQuota()
- {
- /*
- * GETQUOTAROOT "INBOX"
- * QUOTAROOT INBOX user/rchijiiwa1
- * QUOTA user/rchijiiwa1 (STORAGE 654 9765)
- * OK Completed
- */
- $result = false;
- $quota_lines = array();
- $key = $this->nextTag();
- $command = $key . ' GETQUOTAROOT INBOX';
-
- // get line(s) containing quota info
- if ($this->putLine($command)) {
- do {
- $line = rtrim($this->readLine(5000));
- if (preg_match('/^\* QUOTA /', $line)) {
- $quota_lines[] = $line;
- }
- } while (!$this->startsWith($line, $key, true, true));
- }
- else {
- $this->setError(self::ERROR_COMMAND, "Unable to send command: $command");
+ function getQuota($mailbox = null)
+ {
+ if ($mailbox === null || $mailbox === '') {
+ $mailbox = 'INBOX';
}
- // return false if not found, parse if found
+ // a0001 GETQUOTAROOT INBOX
+ // * QUOTAROOT INBOX user/sample
+ // * QUOTA user/sample (STORAGE 654 9765)
+ // a0001 OK Completed
+
+ list($code, $response) = $this->execute('GETQUOTAROOT', array($this->escape($mailbox)));
+
+ $result = false;
$min_free = PHP_INT_MAX;
- foreach ($quota_lines as $key => $quota_line) {
- $quota_line = str_replace(array('(', ')'), '', $quota_line);
- $parts = explode(' ', $quota_line);
- $storage_part = array_search('STORAGE', $parts);
+ $all = array();
- if (!$storage_part) {
- continue;
- }
+ if ($code == self::ERROR_OK) {
+ foreach (explode("\n", $response) as $line) {
+ if (preg_match('/^\* QUOTA /', $line)) {
+ list(, , $quota_root) = $this->tokenizeResponse($line, 3);
+
+ while ($line) {
+ list($type, $used, $total) = $this->tokenizeResponse($line, 1);
+ $type = strtolower($type);
- $used = intval($parts[$storage_part+1]);
- $total = intval($parts[$storage_part+2]);
- $free = $total - $used;
+ if ($type && $total) {
+ $all[$quota_root][$type]['used'] = intval($used);
+ $all[$quota_root][$type]['total'] = intval($total);
+ }
+ }
+
+ if (empty($all[$quota_root]['storage'])) {
+ continue;
+ }
- // return lowest available space from all quotas
- if ($free < $min_free) {
- $min_free = $free;
- $result['used'] = $used;
- $result['total'] = $total;
- $result['percent'] = min(100, round(($used/max(1,$total))*100));
- $result['free'] = 100 - $result['percent'];
+ $used = $all[$quota_root]['storage']['used'];
+ $total = $all[$quota_root]['storage']['total'];
+ $free = $total - $used;
+
+ // calculate lowest available space from all storage quotas
+ if ($free < $min_free) {
+ $min_free = $free;
+ $result['used'] = $used;
+ $result['total'] = $total;
+ $result['percent'] = min(100, round(($used/max(1,$total))*100));
+ $result['free'] = 100 - $result['percent'];
+ }
+ }
}
}
+ if (!empty($result)) {
+ $result['all'] = $all;
+ }
+
return $result;
}
@@ -3143,7 +3200,8 @@ class rcube_imap_generic
if (isset($mbox) && is_array($data[$i])) {
$size_sub = count($data[$i]);
for ($x=0; $x<$size_sub; $x++) {
- $result[$mbox][$data[$i][$x]] = $data[$i][++$x];
+ if ($data[$i][$x+1] !== null)
+ $result[$mbox][$data[$i][$x]] = $data[$i][++$x];
}
unset($data[$i]);
}
@@ -3161,7 +3219,8 @@ class rcube_imap_generic
}
}
else if (isset($mbox)) {
- $result[$mbox][$data[$i]] = $data[++$i];
+ if ($data[$i+1] !== null)
+ $result[$mbox][$data[$i]] = $data[++$i];
unset($data[$i]);
unset($data[$i-1]);
}
@@ -3306,10 +3365,10 @@ class rcube_imap_generic
for ($x=0, $len=count($attribs); $x<$len;) {
$attr = $attribs[$x++];
$value = $attribs[$x++];
- if ($attr == 'value.priv') {
+ if ($attr == 'value.priv' && $value !== null) {
$result[$mbox]['/private' . $entry] = $value;
}
- else if ($attr == 'value.shared') {
+ else if ($attr == 'value.shared' && $value !== null) {
$result[$mbox]['/shared' . $entry] = $value;
}
}
@@ -3679,7 +3738,7 @@ class rcube_imap_generic
return $result;
}
- private function _xor($string, $string2)
+ protected function _xor($string, $string2)
{
$result = '';
$size = strlen($string);
@@ -3698,7 +3757,7 @@ class rcube_imap_generic
*
* @return string Space-separated list of flags
*/
- private function flagsToStr($flags)
+ protected function flagsToStr($flags)
{
foreach ((array)$flags as $idx => $flag) {
if ($flag = $this->flags[strtoupper($flag)]) {
@@ -3750,7 +3809,7 @@ class rcube_imap_generic
/**
* CAPABILITY response parser
*/
- private function parseCapability($str, $trusted=false)
+ protected function parseCapability($str, $trusted=false)
{
$str = preg_replace('/^\* CAPABILITY /i', '', $str);
@@ -3827,7 +3886,7 @@ class rcube_imap_generic
*
* @since 0.5-stable
*/
- private function debug($message)
+ protected function debug($message)
{
if (($len = strlen($message)) > self::DEBUG_LINE_LENGTH) {
$diff = $len - self::DEBUG_LINE_LENGTH;
diff --git a/program/lib/Roundcube/rcube_imap_search.php b/program/lib/Roundcube/rcube_imap_search.php
index 0c44daf1b..365d78f76 100644
--- a/program/lib/Roundcube/rcube_imap_search.php
+++ b/program/lib/Roundcube/rcube_imap_search.php
@@ -29,7 +29,7 @@ class rcube_imap_search
{
public $options = array();
- protected $jobs = array();
+ protected $jobs = array();
protected $timelimit = 0;
protected $results;
protected $conn;
@@ -40,7 +40,7 @@ class rcube_imap_search
public function __construct($options, $conn)
{
$this->options = $options;
- $this->conn = $conn;
+ $this->conn = $conn;
}
/**
@@ -54,7 +54,7 @@ class rcube_imap_search
*/
public function exec($folders, $str, $charset = null, $sort_field = null, $threading=null)
{
- $start = floor(microtime(true));
+ $start = floor(microtime(true));
$results = new rcube_result_multifolder($folders);
// start a search job for every folder to search in
@@ -65,7 +65,8 @@ class rcube_imap_search
$results->add($result);
}
else {
- $job = new rcube_imap_search_job($folder, $str, $charset, $sort_field, $threading);
+ $search = is_array($str) && $str[$folder] ? $str[$folder] : $str;
+ $job = new rcube_imap_search_job($folder, $search, $charset, $sort_field, $threading);
$job->worker = $this;
$this->jobs[] = $job;
}
@@ -129,11 +130,11 @@ class rcube_imap_search_job /* extends Stackable */
public function __construct($folder, $str, $charset = null, $sort_field = null, $threading=false)
{
- $this->folder = $folder;
- $this->search = $str;
- $this->charset = $charset;
+ $this->folder = $folder;
+ $this->search = $str;
+ $this->charset = $charset;
$this->sort_field = $sort_field;
- $this->threading = $threading;
+ $this->threading = $threading;
$this->result = new rcube_result_index($folder);
$this->result->incomplete = true;
@@ -150,9 +151,8 @@ class rcube_imap_search_job /* extends Stackable */
protected function search_index()
{
$criteria = $this->search;
- $charset = $this->charset;
-
- $imap = $this->worker->get_imap();
+ $charset = $this->charset;
+ $imap = $this->worker->get_imap();
if (!$imap->connected()) {
trigger_error("No IMAP connection for $this->folder", E_USER_WARNING);
@@ -228,7 +228,4 @@ class rcube_imap_search_job /* extends Stackable */
{
return $this->result;
}
-
}
-
-
diff --git a/program/lib/Roundcube/rcube_ldap.php b/program/lib/Roundcube/rcube_ldap.php
index 5a4b9dd61..6805c4902 100644
--- a/program/lib/Roundcube/rcube_ldap.php
+++ b/program/lib/Roundcube/rcube_ldap.php
@@ -65,6 +65,8 @@ class rcube_ldap extends rcube_addressbook
private $base_dn = '';
private $groups_base_dn = '';
private $group_url;
+ private $group_data;
+ private $group_search_cache;
private $cache;
@@ -101,8 +103,8 @@ class rcube_ldap extends rcube_addressbook
// add group name attrib to the list of attributes to be fetched
$fetch_attributes[] = $this->prop['groups']['name_attr'];
}
- if (is_array($p['group_filters']) && count($p['group_filters'])) {
- $this->groups = true;
+ if (is_array($p['group_filters'])) {
+ $this->groups = $this->groups || count($p['group_filters']);
foreach ($p['group_filters'] as $k => $group_filter) {
// set default name attribute to cn
@@ -232,8 +234,7 @@ class rcube_ldap extends rcube_addressbook
// initialize ldap wrapper object
$this->ldap = new rcube_ldap_generic($this->prop);
- $this->ldap->set_cache($this->cache);
- $this->ldap->set_debug($this->debug);
+ $this->ldap->config_set(array('cache' => $this->cache, 'debug' => $this->debug));
$this->_connect();
}
@@ -320,8 +321,7 @@ class rcube_ldap extends rcube_addressbook
// we need to use a separate LDAP connection
if (!empty($this->prop['vlv'])) {
$ldap = new rcube_ldap_generic($this->prop);
- $ldap->set_debug($this->debug);
- $ldap->set_cache($this->cache);
+ $ldap->config_set(array('cache' => $this->cache, 'debug' => $this->debug));
if (!$ldap->connect($host)) {
continue;
}
@@ -335,7 +335,7 @@ class rcube_ldap extends rcube_addressbook
$res = $ldap->search($search_base_dn, $search_filter, 'sub', $search_attribs);
if ($res) {
$res->rewind();
- $replaces['%dn'] = $res->get_dn();
+ $replaces['%dn'] = key($res->entries(TRUE));
// add more replacements from 'search_bind_attrib' config
if ($search_bind_attrib) {
@@ -383,7 +383,7 @@ class rcube_ldap extends rcube_addressbook
$this->prop['groups'][$k] = strtr($this->prop['groups'][$k], $replaces);
}
- if (!empty($this->prop['group_filters'])) {
+ if (is_array($this->prop['group_filters'])) {
foreach ($this->prop['group_filters'] as $i => $gf) {
if (!empty($gf['base_dn']))
$this->prop['group_filters'][$i]['base_dn'] = strtr($gf['base_dn'], $replaces);
@@ -906,7 +906,6 @@ class rcube_ldap extends rcube_addressbook
return $this->result;
}
-
/**
* Get a specific contact record
*
@@ -948,6 +947,23 @@ class rcube_ldap extends rcube_addressbook
return $assoc ? $res : $this->result;
}
+ /**
+ * Returns the last error occurred (e.g. when updating/inserting failed)
+ *
+ * @return array Hash array with the following fields: type, message
+ */
+ function get_error()
+ {
+ $err = $this->error;
+
+ // check ldap connection for errors
+ if (!$err && $this->ldap->get_error()) {
+ $err = array(self::ERROR_SEARCH, $this->ldap->get_error());
+ }
+
+ return $err;
+ }
+
/**
* Check the given data before saving.
@@ -1066,7 +1082,7 @@ class rcube_ldap extends rcube_addressbook
}
}
- if (!$this->ldap->add($dn, $newentry)) {
+ if (!$this->ldap->add_entry($dn, $newentry)) {
$this->set_error(self::ERROR_SAVING, 'errorsaving');
return false;
}
@@ -1078,7 +1094,7 @@ class rcube_ldap extends rcube_addressbook
'objectClass' => (array) $this->prop['sub_fields'][$xidx],
);
- $this->ldap->add($xdn, $xf);
+ $this->ldap->add_entry($xdn, $xf);
}
$dn = self::dn_encode($dn);
@@ -1221,7 +1237,7 @@ class rcube_ldap extends rcube_addressbook
if (!empty($subdeldata)) {
foreach ($subdeldata as $fld => $val) {
$subdn = $fld.'='.rcube_ldap_generic::quote_string($val).','.$dn;
- if (!$this->ldap->delete($subdn)) {
+ if (!$this->ldap->delete_entry($subdn)) {
return false;
}
}
@@ -1265,7 +1281,7 @@ class rcube_ldap extends rcube_addressbook
$fld => $val,
'objectClass' => (array) $this->prop['sub_fields'][$fld],
);
- $this->ldap->add($subdn, $xf);
+ $this->ldap->add_entry($subdn, $xf);
}
}
@@ -1295,7 +1311,7 @@ class rcube_ldap extends rcube_addressbook
if ($this->sub_filter) {
if ($entries = $this->ldap->list_entries($dn, $this->sub_filter)) {
foreach ($entries as $entry) {
- if (!$this->ldap->delete($entry['dn'])) {
+ if (!$this->ldap->delete_entry($entry['dn'])) {
$this->set_error(self::ERROR_SAVING, 'errorsaving');
return false;
}
@@ -1304,12 +1320,12 @@ class rcube_ldap extends rcube_addressbook
}
// Delete the record.
- if (!$this->ldap->delete($dn)) {
+ if (!$this->ldap->delete_entry($dn)) {
$this->set_error(self::ERROR_SAVING, 'errorsaving');
return false;
}
- // remove contact from all groups where he was member
+ // remove contact from all groups where he was a member
if ($this->groups) {
$dn = self::dn_encode($dn);
$group_ids = $this->get_record_groups($dn);
@@ -1342,7 +1358,7 @@ class rcube_ldap extends rcube_addressbook
if ($with_groups && $this->groups && ($groups = $this->_fetch_groups()) && count($groups)) {
foreach ($groups as $group) {
- $this->ldap->delete($group['dn']);
+ $this->ldap->delete_entry($group['dn']);
}
if ($this->cache) {
@@ -1567,7 +1583,7 @@ class rcube_ldap extends rcube_addressbook
$this->debug = $dbg;
if ($this->ldap) {
- $this->ldap->set_debug($dbg);
+ $this->ldap->config_set('debug', $dbg);
}
}
@@ -1604,12 +1620,12 @@ class rcube_ldap extends rcube_addressbook
return array();
}
- $group_cache = $this->_fetch_groups();
+ $group_cache = $this->_fetch_groups($search, $mode);
$groups = array();
if ($search) {
foreach ($group_cache as $group) {
- if ($this->compare_search_value('name', $group['name'], $search, $mode)) {
+ if ($this->compare_search_value('name', $group['name'], mb_strtolower($search), $mode)) {
$groups[] = $group;
}
}
@@ -1624,10 +1640,19 @@ class rcube_ldap extends rcube_addressbook
/**
* Fetch groups from server
*/
- private function _fetch_groups($vlv_page = null)
+ private function _fetch_groups($search = null, $mode = 0, $vlv_page = null)
{
+ // reset group search cache
+ if ($search !== null && $vlv_page === null) {
+ $this->group_search_cache = null;
+ }
+ // return in-memory cache from previous search results
+ else if (is_array($this->group_search_cache) && $vlv_page === null) {
+ return $this->group_search_cache;
+ }
+
// special case: list groups from 'group_filters' config
- if ($vlv_page === null && !empty($this->prop['group_filters'])) {
+ if ($vlv_page === null && $search === null && is_array($this->prop['group_filters'])) {
$groups = array();
$rcube = rcube::get_instance();
@@ -1644,7 +1669,7 @@ class rcube_ldap extends rcube_addressbook
return $groups;
}
- if ($this->cache && $vlv_page === null && ($groups = $this->cache->get('groups')) !== null) {
+ if ($this->cache && $search === null && $vlv_page === null && ($groups = $this->cache->get('groups')) !== null) {
return $groups;
}
@@ -1666,12 +1691,26 @@ class rcube_ldap extends rcube_addressbook
}
$ldap = clone $this->ldap;
- $ldap->set_config($this->prop['groups']);
+ $ldap->config_set($this->prop['groups']);
$ldap->set_vlv_page($vlv_page+1, $page_size);
}
- $attrs = array_unique(array('dn', 'objectClass', $name_attr, $email_attr, $sort_attr));
- $ldap_data = $ldap->search($base_dn, $filter, $scope, $attrs, $this->prop['groups']);
+ $props = array('sort' => $this->prop['groups']['sort']);
+ $attrs = array_unique(array('dn', 'objectClass', $name_attr, $email_attr, $sort_attr));
+
+ // add search filter
+ if ($search !== null) {
+ // set wildcards
+ $wp = $ws = '';
+ if (!empty($this->prop['fuzzy_search']) && $mode != 1) {
+ $ws = '*';
+ $wp = !$mode ? '*' : '';
+ }
+ $filter = "(&$filter($name_attr=$wp" . rcube_ldap_generic::quote_string($search) . "$ws))";
+ $props['search'] = $wp . $search . $ws;
+ }
+
+ $ldap_data = $ldap->search($base_dn, $filter, $scope, $attrs, $props);
if ($ldap_data === false) {
return array();
@@ -1708,7 +1747,7 @@ class rcube_ldap extends rcube_addressbook
// call recursively until we have fetched all groups
while ($this->prop['groups']['vlv'] && $group_count == $page_size) {
- $next_page = $this->_fetch_groups(++$vlv_page);
+ $next_page = $this->_fetch_groups($search, $mode, ++$vlv_page);
$groups = array_merge($groups, $next_page);
$group_count = count($next_page);
}
@@ -1719,9 +1758,12 @@ class rcube_ldap extends rcube_addressbook
}
// cache this
- if ($this->cache) {
+ if ($this->cache && $search === null) {
$this->cache->set('groups', $groups);
}
+ else if ($search !== null) {
+ $this->group_search_cache = $groups;
+ }
return $groups;
}
@@ -1790,7 +1832,7 @@ class rcube_ldap extends rcube_addressbook
$member_attr => '',
);
- if (!$this->ldap->add($new_dn, $new_entry)) {
+ if (!$this->ldap->add_entry($new_dn, $new_entry)) {
$this->set_error(self::ERROR_SAVING, 'errorsaving');
return false;
}
@@ -1813,7 +1855,7 @@ class rcube_ldap extends rcube_addressbook
$group_cache = $this->_fetch_groups();
$del_dn = $group_cache[$group_id]['dn'];
- if (!$this->ldap->delete($del_dn)) {
+ if (!$this->ldap->delete_entry($del_dn)) {
$this->set_error(self::ERROR_SAVING, 'errorsaving');
return false;
}
diff --git a/program/lib/Roundcube/rcube_ldap_generic.php b/program/lib/Roundcube/rcube_ldap_generic.php
index f1048ef39..a76ad6d06 100644
--- a/program/lib/Roundcube/rcube_ldap_generic.php
+++ b/program/lib/Roundcube/rcube_ldap_generic.php
@@ -5,8 +5,8 @@
| Roundcube/rcube_ldap_generic.php |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2006-2013, The Roundcube Dev Team |
- | Copyright (C) 2012-2013, Kolab Systems AG |
+ | Copyright (C) 2006-2014, The Roundcube Dev Team |
+ | Copyright (C) 2012-2014, Kolab Systems AG |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -21,459 +21,136 @@
+-----------------------------------------------------------------------+
*/
-
-/*
- LDAP connection properties
- --------------------------
-
- $prop = array(
- 'host' => '<ldap-server-address>',
- // or
- 'hosts' => array('directory.verisign.com'),
- 'port' => 389,
- 'use_tls' => true|false,
- 'ldap_version' => 3, // using LDAPv3
- 'auth_method' => '', // SASL authentication method (for proxy auth), e.g. DIGEST-MD5
- 'attributes' => array('dn'), // List of attributes to read from the server
- 'vlv' => false, // Enable Virtual List View to more efficiently fetch paginated data (if server supports it)
- 'config_root_dn' => 'cn=config', // Root DN to read config (e.g. vlv indexes) from
- 'numsub_filter' => '(objectClass=organizationalUnit)', // with VLV, we also use numSubOrdinates to query the total number of records. Set this filter to get all numSubOrdinates attributes for counting
- 'sizelimit' => '0', // Enables you to limit the count of entries fetched. Setting this to 0 means no limit.
- 'timelimit' => '0', // Sets the number of seconds how long is spend on the search. Setting this to 0 means no limit.
- 'network_timeout' => 10, // The timeout (in seconds) for connect + bind arrempts. This is only supported in PHP >= 5.3.0 with OpenLDAP 2.x
- 'referrals' => true|false, // Sets the LDAP_OPT_REFERRALS option. Mostly used in multi-domain Active Directory setups
- );
-*/
-
/**
* Model class to access an LDAP directories
*
* @package Framework
* @subpackage LDAP
*/
-class rcube_ldap_generic
+class rcube_ldap_generic extends Net_LDAP3
{
- const UPDATE_MOD_ADD = 1;
- const UPDATE_MOD_DELETE = 2;
- const UPDATE_MOD_REPLACE = 4;
- const UPDATE_MOD_FULL = 7;
-
- public $conn;
- public $vlv_active = false;
-
/** private properties */
protected $cache = null;
- protected $config = array();
protected $attributes = array('dn');
- protected $entries = null;
- protected $result = null;
- protected $debug = false;
- protected $list_page = 1;
- protected $page_size = 10;
- protected $vlv_config = null;
-
+ protected $error;
- /**
- * Object constructor
- *
- * @param array $p LDAP connection properties
- */
- function __construct($p)
+ function __construct($config = null)
{
- $this->config = $p;
+ parent::__construct($config);
- if (is_array($p['attributes']))
- $this->attributes = $p['attributes'];
-
- if (!is_array($p['hosts']) && !empty($p['host']))
- $this->config['hosts'] = array($p['host']);
+ $this->config_set('log_hook', array($this, 'log'));
}
/**
- * Activate/deactivate debug mode
- *
- * @param boolean $dbg True if LDAP commands should be logged
+ * Establish a connection to the LDAP server
*/
- public function set_debug($dbg = true)
+ public function connect($host = null)
{
- $this->debug = $dbg;
- }
+ // Net_LDAP3 does not support IDNA yet
+ // also parse_host() here is very Roundcube specific
+ $host = rcube_utils::idn_to_ascii(rcube_utils::parse_host($host));
- /**
- * Set connection options
- *
- * @param mixed $opt Option name as string or hash array with multiple options
- * @param mixed $val Option value
- */
- public function set_config($opt, $val = null)
- {
- if (is_array($opt))
- $this->config = array_merge($this->config, $opt);
- else
- $this->config[$opt] = $value;
+ return parent::connect($host);
}
/**
- * Enable caching by passing an instance of rcube_cache to be used by this object
+ * Get a specific LDAP entry, identified by its DN
*
- * @param object rcube_cache Instance or False to disable caching
- */
- public function set_cache($cache_engine)
- {
- $this->cache = $cache_engine;
- }
-
- /**
- * Set properties for VLV-based paging
+ * @param string $dn Record identifier
*
- * @param number $page Page number to list (starting at 1)
- * @param number $size Number of entries to display on one page
+ * @return array Hash array
*/
- public function set_vlv_page($page, $size = 10)
- {
- $this->list_page = $page;
- $this->page_size = $size;
- }
-
- /**
- * Establish a connection to the LDAP server
- */
- public function connect($host = null)
+ function get_entry($dn)
{
- if (!function_exists('ldap_connect')) {
- rcube::raise_error(array('code' => 100, 'type' => 'ldap',
- 'file' => __FILE__, 'line' => __LINE__,
- 'message' => "No ldap support in this installation of PHP"),
- true);
- return false;
- }
-
- if (is_resource($this->conn) && $this->config['host'] == $host)
- return true;
-
- if (empty($this->config['ldap_version']))
- $this->config['ldap_version'] = 3;
-
- // iterate over hosts if none specified
- if (!$host) {
- if (!is_array($this->config['hosts']))
- $this->config['hosts'] = array($this->config['hosts']);
-
- foreach ($this->config['hosts'] as $host) {
- if (!empty($host) && $this->connect($host)) {
- return true;
- }
- }
-
- return false;
- }
-
- // open connection to the given $host
- $host = rcube_utils::idn_to_ascii(rcube_utils::parse_host($host));
- $hostname = $host . ($this->config['port'] ? ':'.$this->config['port'] : '');
-
- $this->_debug("C: Connect to $hostname [{$this->config['name']}]");
-
- if ($lc = @ldap_connect($host, $this->config['port'])) {
- if ($this->config['use_tls'] === true)
- if (!ldap_start_tls($lc))
- continue;
-
- $this->_debug("S: OK");
-
- ldap_set_option($lc, LDAP_OPT_PROTOCOL_VERSION, $this->config['ldap_version']);
- $this->config['host'] = $host;
- $this->conn = $lc;
-
- if (!empty($this->config['network_timeout']))
- ldap_set_option($lc, LDAP_OPT_NETWORK_TIMEOUT, $this->config['network_timeout']);
-
- if (isset($this->config['referrals']))
- ldap_set_option($lc, LDAP_OPT_REFERRALS, $this->config['referrals']);
- }
- else {
- $this->_debug("S: NOT OK");
- }
-
- if (!is_resource($this->conn)) {
- rcube::raise_error(array('code' => 100, 'type' => 'ldap',
- 'file' => __FILE__, 'line' => __LINE__,
- 'message' => "Could not connect to any LDAP server, last tried $hostname"),
- true);
- return false;
- }
-
- return true;
+ return parent::get_entry($dn, $this->attributes);
}
/**
- * Bind connection with (SASL-) user and password
- *
- * @param string $authc Authentication user
- * @param string $pass Bind password
- * @param string $authz Autorization user
- *
- * @return boolean True on success, False on error
+ * Prints debug/error info to the log
*/
- public function sasl_bind($authc, $pass, $authz=null)
+ public function log($level, $msg)
{
- if (!$this->conn) {
- return false;
- }
+ $msg = implode("\n", $msg);
- if (!function_exists('ldap_sasl_bind')) {
- rcube::raise_error(array('code' => 100, 'type' => 'ldap',
- 'file' => __FILE__, 'line' => __LINE__,
- 'message' => "Unable to bind: ldap_sasl_bind() not exists"),
- true);
- return false;
- }
-
- if (!empty($authz)) {
- $authz = 'u:' . $authz;
- }
-
- if (!empty($this->config['auth_method'])) {
- $method = $this->config['auth_method'];
- }
- else {
- $method = 'DIGEST-MD5';
- }
+ switch ($level) {
+ case LOG_DEBUG:
+ case LOG_INFO:
+ case LOG_NOTICE:
+ if ($this->config['debug']) {
+ rcube::write_log('ldap', $msg);
+ }
+ break;
- $this->_debug("C: SASL Bind [mech: $method, authc: $authc, authz: $authz, pass: **** [" . strlen($pass) . "]");
+ case LOG_EMERGE:
+ case LOG_ALERT:
+ case LOG_CRIT:
+ rcube::raise_error($msg, true, true);
+ break;
- if (ldap_sasl_bind($this->conn, NULL, $pass, $method, NULL, $authc, $authz)) {
- $this->_debug("S: OK");
- return true;
+ case LOG_ERR:
+ case LOG_WARNING:
+ $this->error = $msg;
+ rcube::raise_error($msg, true, false);
+ break;
}
-
- $this->_debug("S: ".ldap_error($this->conn));
-
- rcube::raise_error(array(
- 'code' => ldap_errno($this->conn), 'type' => 'ldap',
- 'file' => __FILE__, 'line' => __LINE__,
- 'message' => "SASL Bind failed for authcid=$authc ".ldap_error($this->conn)),
- true);
- return false;
}
/**
- * Bind connection with DN and password
- *
- * @param string $dn Bind DN
- * @param string $pass Bind password
+ * Returns the last LDAP error occurred
*
- * @return boolean True on success, False on error
- */
- public function bind($dn, $pass)
- {
- if (!$this->conn) {
- return false;
- }
-
- $this->_debug("C: Bind $dn, pass: **** [" . strlen($pass) . "]");
-
- if (@ldap_bind($this->conn, $dn, $pass)) {
- $this->_debug("S: OK");
- return true;
- }
-
- $this->_debug("S: ".ldap_error($this->conn));
-
- rcube::raise_error(array(
- 'code' => ldap_errno($this->conn), 'type' => 'ldap',
- 'file' => __FILE__, 'line' => __LINE__,
- 'message' => "Bind failed for dn=$dn: ".ldap_error($this->conn)),
- true);
-
- return false;
- }
-
- /**
- * Close connection to LDAP server
+ * @return mixed Error message string or null if no error occured
*/
- public function close()
+ function get_error()
{
- if ($this->conn) {
- $this->_debug("C: Close");
- ldap_unbind($this->conn);
- $this->conn = null;
- }
+ return $this->error;
}
/**
- * Return the last result set
- *
- * @return object rcube_ldap_result Result object
+ * @deprecated
*/
- function get_result()
+ public function set_debug($dbg = true)
{
- return $this->result;
+ $this->config['debug'] = (bool) $dbg;
}
/**
- * Get a specific LDAP entry, identified by its DN
- *
- * @param string $dn Record identifier
- * @return array Hash array
+ * @deprecated
*/
- function get_entry($dn)
+ public function set_cache($cache_engine)
{
- $rec = null;
-
- if ($this->conn && $dn) {
- $this->_debug("C: Read $dn [(objectclass=*)]");
-
- if ($ldap_result = @ldap_read($this->conn, $dn, '(objectclass=*)', $this->attributes)) {
- $this->_debug("S: OK");
-
- if ($entry = ldap_first_entry($this->conn, $ldap_result)) {
- $rec = ldap_get_attributes($this->conn, $entry);
- }
- }
- else {
- $this->_debug("S: ".ldap_error($this->conn));
- }
-
- if (!empty($rec)) {
- $rec['dn'] = $dn; // Add in the dn for the entry.
- }
- }
-
- return $rec;
+ $this->config['cache'] = $cache_engine;
}
/**
- * Execute the LDAP search based on the stored credentials
- *
- * @param string $base_dn The base DN to query
- * @param string $filter The LDAP filter for search
- * @param string $scope The LDAP scope (list|sub|base)
- * @param array $attrs List of entry attributes to read
- * @param array $prop Hash array with query configuration properties:
- * - sort: array of sort attributes (has to be in sync with the VLV index)
- * - search: search string used for VLV controls
- * @param boolean $count_only Set to true if only entry count is requested
- *
- * @return mixed rcube_ldap_result object or number of entries (if count_only=true) or false on error
+ * @deprecated
*/
- public function search($base_dn, $filter = '', $scope = 'sub', $attrs = array('dn'), $prop = array(), $count_only = false)
+ public static function scope2func($scope, &$ns_function = null)
{
- if (!$this->conn) {
- return false;
- }
-
- if (empty($filter)) {
- $filter = '(objectclass=*)';
- }
-
- $this->_debug("C: Search $base_dn for $filter");
-
- $function = self::scope2func($scope, $ns_function);
-
- // find available VLV index for this query
- if (!$count_only && ($vlv_sort = $this->_find_vlv($base_dn, $filter, $scope, $prop['sort']))) {
- // when using VLV, we get the total count by...
- // ...either reading numSubOrdinates attribute
- if (($sub_filter = $this->config['numsub_filter']) &&
- ($result_count = @$ns_function($this->conn, $base_dn, $sub_filter, array('numSubOrdinates'), 0, 0, 0))
- ) {
- $counts = ldap_get_entries($this->conn, $result_count);
- for ($vlv_count = $j = 0; $j < $counts['count']; $j++)
- $vlv_count += $counts[$j]['numsubordinates'][0];
- $this->_debug("D: total numsubordinates = " . $vlv_count);
- }
- // ...or by fetching all records dn and count them
- else if (!function_exists('ldap_parse_virtuallist_control')) {
- $vlv_count = $this->search($base_dn, $filter, $scope, array('dn'), $prop, true);
- }
-
- $this->vlv_active = $this->_vlv_set_controls($vlv_sort, $this->list_page, $this->page_size, $prop['search']);
- }
- else {
- $this->vlv_active = false;
- }
-
- // only fetch dn for count (should keep the payload low)
- if ($ldap_result = @$function($this->conn, $base_dn, $filter,
- $attrs, 0, (int)$this->config['sizelimit'], (int)$this->config['timelimit'])
- ) {
- // when running on a patched PHP we can use the extended functions
- // to retrieve the total count from the LDAP search result
- if ($this->vlv_active && function_exists('ldap_parse_virtuallist_control')) {
- if (ldap_parse_result($this->conn, $ldap_result, $errcode, $matcheddn, $errmsg, $referrals, $serverctrls)) {
- ldap_parse_virtuallist_control($this->conn, $serverctrls, $last_offset, $vlv_count, $vresult);
- $this->_debug("S: VLV result: last_offset=$last_offset; content_count=$vlv_count");
- }
- else {
- $this->_debug("S: ".($errmsg ? $errmsg : ldap_error($this->conn)));
- }
- }
- else if ($this->debug) {
- $this->_debug("S: ".ldap_count_entries($this->conn, $ldap_result)." record(s) found");
- }
-
- $this->result = new rcube_ldap_result($this->conn, $ldap_result, $base_dn, $filter, $vlv_count);
-
- return $count_only ? $this->result->count() : $this->result;
- }
- else {
- $this->_debug("S: ".ldap_error($this->conn));
- }
-
- return false;
+ return self::scope_to_function($scope, $ns_function);
}
/**
- * Modify an LDAP entry on the server
- *
- * @param string $dn Entry DN
- * @param array $params Hash array of entry attributes
- * @param int $mode Update mode (UPDATE_MOD_ADD | UPDATE_MOD_DELETE | UPDATE_MOD_REPLACE)
+ * @deprecated
*/
- public function modify($dn, $parms, $mode = 255)
+ public function set_config($opt, $val = null)
{
- // TODO: implement this
-
- return false;
+ $this->config_set($opt, $val);
}
/**
- * Wrapper for ldap_add()
- *
- * @see ldap_add()
+ * @deprecated
*/
public function add($dn, $entry)
{
- $this->_debug("C: Add $dn: ".print_r($entry, true));
-
- $res = ldap_add($this->conn, $dn, $entry);
- if ($res === false) {
- $this->_debug("S: ".ldap_error($this->conn));
- return false;
- }
-
- $this->_debug("S: OK");
- return true;
+ return $this->add_entry($dn, $entry);
}
/**
- * Wrapper for ldap_delete()
- *
- * @see ldap_delete()
+ * @deprecated
*/
public function delete($dn)
{
- $this->_debug("C: Delete $dn");
-
- $res = ldap_delete($this->conn, $dn);
- if ($res === false) {
- $this->_debug("S: ".ldap_error($this->conn));
- return false;
- }
-
- $this->_debug("S: OK");
- return true;
+ return $this->delete_entry($dn);
}
/**
@@ -486,7 +163,7 @@ class rcube_ldap_generic
$this->_debug("C: Replace $dn: ".print_r($entry, true));
if (!ldap_mod_replace($this->conn, $dn, $entry)) {
- $this->_debug("S: ".ldap_error($this->conn));
+ $this->_error("ldap_mod_replace() failed with " . ldap_error($this->conn));
return false;
}
@@ -504,7 +181,7 @@ class rcube_ldap_generic
$this->_debug("C: Add $dn: ".print_r($entry, true));
if (!ldap_mod_add($this->conn, $dn, $entry)) {
- $this->_debug("S: ".ldap_error($this->conn));
+ $this->_error("ldap_mod_add() failed with " . ldap_error($this->conn));
return false;
}
@@ -522,7 +199,7 @@ class rcube_ldap_generic
$this->_debug("C: Delete $dn: ".print_r($entry, true));
if (!ldap_mod_del($this->conn, $dn, $entry)) {
- $this->_debug("S: ".ldap_error($this->conn));
+ $this->_error("ldap_mod_del() failed with " . ldap_error($this->conn));
return false;
}
@@ -540,7 +217,7 @@ class rcube_ldap_generic
$this->_debug("C: Rename $dn to $newrdn");
if (!ldap_rename($this->conn, $dn, $newrdn, $newparent, $deleteoldrdn)) {
- $this->_debug("S: ".ldap_error($this->conn));
+ $this->_error("ldap_rename() failed with " . ldap_error($this->conn));
return false;
}
@@ -563,7 +240,7 @@ class rcube_ldap_generic
$list = ldap_get_entries($this->conn, $result);
if ($list === false) {
- $this->_debug("S: ".ldap_error($this->conn));
+ $this->_error("ldap_get_entries() failed with " . ldap_error($this->conn));
return array();
}
@@ -573,7 +250,7 @@ class rcube_ldap_generic
$this->_debug("S: $count record(s)");
}
else {
- $this->_debug("S: ".ldap_error($this->conn));
+ $this->_error("ldap_list() failed with " . ldap_error($this->conn));
}
return $list;
@@ -590,12 +267,9 @@ class rcube_ldap_generic
$this->_debug("C: Read $dn [{$filter}]");
if ($this->conn && $dn) {
- if (!$attributes)
- $attributes = $this->attributes;
-
$result = @ldap_read($this->conn, $dn, $filter, $attributes, 0, (int)$this->config['sizelimit'], (int)$this->config['timelimit']);
if ($result === false) {
- $this->_debug("S: ".ldap_error($this->conn));
+ $this->_error("ldap_read() failed with " . ldap_error($this->conn));
return false;
}
@@ -607,97 +281,11 @@ class rcube_ldap_generic
}
/**
- * Choose the right PHP function according to scope property
- *
- * @param string $scope The LDAP scope (sub|base|list)
- * @param string $ns_function Function to be used for numSubOrdinates queries
- * @return string PHP function to be used to query directory
- */
- public static function scope2func($scope, &$ns_function = null)
- {
- switch ($scope) {
- case 'sub':
- $function = $ns_function = 'ldap_search';
- break;
- case 'base':
- $function = $ns_function = 'ldap_read';
- break;
- default:
- $function = 'ldap_list';
- $ns_function = 'ldap_read';
- break;
- }
-
- return $function;
- }
-
- /**
- * Convert the given scope integer value to a string representation
- */
- public static function scopeint2str($scope)
- {
- switch ($scope) {
- case 2: return 'sub';
- case 1: return 'one';
- case 0: return 'base';
- default: $this->_debug("Scope $scope is not a valid scope integer");
- }
-
- return '';
- }
-
- /**
- * Escapes the given value according to RFC 2254 so that it can be safely used in LDAP filters.
- *
- * @param string $val Value to quote
- * @return string The escaped value
- */
- public static function escape_value($val)
- {
- return strtr($str, array('*'=>'\2a', '('=>'\28', ')'=>'\29',
- '\\'=>'\5c', '/'=>'\2f'));
- }
-
- /**
- * Escapes a DN value according to RFC 2253
- *
- * @param string $dn DN value o quote
- * @return string The escaped value
- */
- public static function escape_dn($dn)
- {
- return strtr($str, array(','=>'\2c', '='=>'\3d', '+'=>'\2b',
- '<'=>'\3c', '>'=>'\3e', ';'=>'\3b', '\\'=>'\5c',
- '"'=>'\22', '#'=>'\23'));
- }
-
- /**
- * Normalize a LDAP result by converting entry attributes arrays into single values
- *
- * @param array $result LDAP result set fetched with ldap_get_entries()
- * @return array Hash array with normalized entries, indexed by their DNs
- */
- public static function normalize_result($result)
- {
- if (!is_array($result)) {
- return array();
- }
-
- $entries = array();
- for ($i = 0; $i < $result['count']; $i++) {
- $key = $result[$i]['dn'] ? $result[$i]['dn'] : $i;
- $entries[$key] = self::normalize_entry($result[$i]);
- }
-
- return $entries;
- }
-
- /**
* Turn an LDAP entry into a regular PHP array with attributes as keys.
*
* @param array $entry Attributes array as retrieved from ldap_get_attributes() or ldap_get_entries()
*
- * @return array Hash array with attributes as keys
+ * @return array Hash array with attributes as keys
*/
public static function normalize_entry($entry)
{
@@ -728,328 +316,7 @@ class rcube_ldap_generic
return $rec;
}
-
- /**
- * Set server controls for Virtual List View (paginated listing)
- */
- private function _vlv_set_controls($sort, $list_page, $page_size, $search = null)
- {
- $sort_ctrl = array('oid' => "1.2.840.113556.1.4.473", 'value' => self::_sort_ber_encode((array)$sort));
- $vlv_ctrl = array('oid' => "2.16.840.1.113730.3.4.9", 'value' => self::_vlv_ber_encode(($offset = ($list_page-1) * $page_size + 1), $page_size, $search), 'iscritical' => true);
-
- $this->_debug("C: Set controls sort=" . join(' ', unpack('H'.(strlen($sort_ctrl['value'])*2), $sort_ctrl['value'])) . " ($sort[0]);"
- . " vlv=" . join(' ', (unpack('H'.(strlen($vlv_ctrl['value'])*2), $vlv_ctrl['value']))) . " ($offset/$page_size; $search)");
-
- if (!ldap_set_option($this->conn, LDAP_OPT_SERVER_CONTROLS, array($sort_ctrl, $vlv_ctrl))) {
- $this->_debug("S: ".ldap_error($this->conn));
- $this->set_error(self::ERROR_SEARCH, 'vlvnotsupported');
- return false;
- }
-
- return true;
- }
-
- /**
- * Returns unified attribute name (resolving aliases)
- */
- private static function _attr_name($namev)
- {
- // list of known attribute aliases
- static $aliases = array(
- 'gn' => 'givenname',
- 'rfc822mailbox' => 'email',
- 'userid' => 'uid',
- 'emailaddress' => 'email',
- 'pkcs9email' => 'email',
- );
-
- list($name, $limit) = explode(':', $namev, 2);
- $suffix = $limit ? ':'.$limit : '';
-
- return (isset($aliases[$name]) ? $aliases[$name] : $name) . $suffix;
- }
-
- /**
- * Quotes attribute value string
- *
- * @param string $str Attribute value
- * @param bool $dn True if the attribute is a DN
- *
- * @return string Quoted string
- */
- public static function quote_string($str, $dn=false)
- {
- // take firt entry if array given
- if (is_array($str))
- $str = reset($str);
-
- if ($dn)
- $replace = array(','=>'\2c', '='=>'\3d', '+'=>'\2b', '<'=>'\3c',
- '>'=>'\3e', ';'=>'\3b', '\\'=>'\5c', '"'=>'\22', '#'=>'\23');
- else
- $replace = array('*'=>'\2a', '('=>'\28', ')'=>'\29', '\\'=>'\5c',
- '/'=>'\2f');
-
- return strtr($str, $replace);
- }
-
- /**
- * Prints debug info to the log
- */
- private function _debug($str)
- {
- if ($this->debug && class_exists('rcube')) {
- rcube::write_log('ldap', $str);
- }
- }
-
-
- /***************** Virtual List View (VLV) related utility functions **************** */
-
- /**
- * Return the search string value to be used in VLV controls
- */
- private function _vlv_search($sort, $search)
- {
- foreach ($search as $attr => $value) {
- if (!in_array(strtolower($attr), $sort)) {
- $this->_debug("d: Cannot use VLV search using attribute not indexed: $attr (not in " . var_export($sort, true) . ")");
- return null;
- } else {
- return $value;
- }
- }
- }
-
- /**
- * Find a VLV index matching the given query attributes
- *
- * @return string Sort attribute or False if no match
- */
- private function _find_vlv($base_dn, $filter, $scope, $sort_attrs = null)
- {
- if (!$this->config['vlv'] || $scope == 'base') {
- return false;
- }
-
- // get vlv config
- $vlv_config = $this->_read_vlv_config();
-
- if ($vlv = $vlv_config[$base_dn]) {
- $this->_debug("D: Found a VLV for $base_dn");
-
- if ($vlv['filter'] == strtolower($filter) || stripos($filter, '(&'.$vlv['filter'].'(') === 0) {
- $this->_debug("D: Filter matches");
- if ($vlv['scope'] == $scope) {
- // Not passing any sort attributes means you don't care
- if (empty($sort_attrs) || in_array($sort_attrs, $vlv['sort'])) {
- return $vlv['sort'][0];
- }
- }
- else {
- $this->_debug("D: Scope does not match");
- }
- }
- else {
- $this->_debug("D: Filter does not match");
- }
- }
- else {
- $this->_debug("D: No VLV for $base_dn");
- }
-
- return false;
- }
-
- /**
- * Return VLV indexes and searches including necessary configuration
- * details.
- */
- private function _read_vlv_config()
- {
- if (empty($this->config['vlv']) || empty($this->config['config_root_dn'])) {
- return array();
- }
- // return hard-coded VLV config
- else if (is_array($this->config['vlv'])) {
- return $this->config['vlv'];
- }
-
- // return cached result
- if (is_array($this->vlv_config)) {
- return $this->vlv_config;
- }
-
- if ($this->cache && ($cached_config = $this->cache->get('vlvconfig'))) {
- $this->vlv_config = $cached_config;
- return $this->vlv_config;
- }
-
- $this->vlv_config = array();
-
- $ldap_result = ldap_search($this->conn, $this->config['config_root_dn'], '(objectclass=vlvsearch)', array('*'), 0, 0, 0);
- $vlv_searches = new rcube_ldap_result($this->conn, $ldap_result, $this->config['config_root_dn'], '(objectclass=vlvsearch)');
-
- if ($vlv_searches->count() < 1) {
- $this->_debug("D: Empty result from search for '(objectclass=vlvsearch)' on '$config_root_dn'");
- return array();
- }
-
- foreach ($vlv_searches->entries(true) as $vlv_search_dn => $vlv_search_attrs) {
- // Multiple indexes may exist
- $ldap_result = ldap_search($this->conn, $vlv_search_dn, '(objectclass=vlvindex)', array('*'), 0, 0, 0);
- $vlv_indexes = new rcube_ldap_result($this->conn, $ldap_result, $vlv_search_dn, '(objectclass=vlvindex)');
-
- // Reset this one for each VLV search.
- $_vlv_sort = array();
- foreach ($vlv_indexes->entries(true) as $vlv_index_dn => $vlv_index_attrs) {
- $_vlv_sort[] = explode(' ', $vlv_index_attrs['vlvsort']);
- }
-
- $this->vlv_config[$vlv_search_attrs['vlvbase']] = array(
- 'scope' => self::scopeint2str($vlv_search_attrs['vlvscope']),
- 'filter' => strtolower($vlv_search_attrs['vlvfilter']),
- 'sort' => $_vlv_sort,
- );
- }
-
- // cache this
- if ($this->cache)
- $this->cache->set('vlvconfig', $this->vlv_config);
-
- $this->_debug("D: Refreshed VLV config: " . var_export($this->vlv_config, true));
-
- return $this->vlv_config;
- }
-
- /**
- * Generate BER encoded string for Virtual List View option
- *
- * @param integer List offset (first record)
- * @param integer Records per page
- *
- * @return string BER encoded option value
- */
- private static function _vlv_ber_encode($offset, $rpp, $search = '')
- {
- /*
- this string is ber-encoded, php will prefix this value with:
- 04 (octet string) and 10 (length of 16 bytes)
- the code behind this string is broken down as follows:
- 30 = ber sequence with a length of 0e (14) bytes following
- 02 = type integer (in two's complement form) with 2 bytes following (beforeCount): 01 00 (ie 0)
- 02 = type integer (in two's complement form) with 2 bytes following (afterCount): 01 18 (ie 25-1=24)
- a0 = type context-specific/constructed with a length of 06 (6) bytes following
- 02 = type integer with 2 bytes following (offset): 01 01 (ie 1)
- 02 = type integer with 2 bytes following (contentCount): 01 00
-
- with a search string present:
- 81 = type context-specific/constructed with a length of 04 (4) bytes following (the length will change here)
- 81 indicates a user string is present where as a a0 indicates just a offset search
- 81 = type context-specific/constructed with a length of 06 (6) bytes following
-
- The following info was taken from the ISO/IEC 8825-1:2003 x.690 standard re: the
- encoding of integer values (note: these values are in
- two-complement form so since offset will never be negative bit 8 of the
- leftmost octet should never by set to 1):
- 8.3.2: If the contents octets of an integer value encoding consist
- of more than one octet, then the bits of the first octet (rightmost)
- and bit 8 of the second (to the left of first octet) octet:
- a) shall not all be ones; and
- b) shall not all be zero
- */
-
- if ($search) {
- $search = preg_replace('/[^-[:alpha:] ,.()0-9]+/', '', $search);
- $ber_val = self::_string2hex($search);
- $str = self::_ber_addseq($ber_val, '81');
- }
- else {
- // construct the string from right to left
- $str = "020100"; # contentCount
-
- $ber_val = self::_ber_encode_int($offset); // returns encoded integer value in hex format
-
- // calculate octet length of $ber_val
- $str = self::_ber_addseq($ber_val, '02') . $str;
-
- // now compute length over $str
- $str = self::_ber_addseq($str, 'a0');
- }
-
- // now tack on records per page
- $str = "020100" . self::_ber_addseq(self::_ber_encode_int($rpp-1), '02') . $str;
-
- // now tack on sequence identifier and length
- $str = self::_ber_addseq($str, '30');
-
- return pack('H'.strlen($str), $str);
- }
-
- /**
- * create ber encoding for sort control
- *
- * @param array List of cols to sort by
- * @return string BER encoded option value
- */
- private static function _sort_ber_encode($sortcols)
- {
- $str = '';
- foreach (array_reverse((array)$sortcols) as $col) {
- $ber_val = self::_string2hex($col);
-
- // 30 = ber sequence with a length of octet value
- // 04 = octet string with a length of the ascii value
- $oct = self::_ber_addseq($ber_val, '04');
- $str = self::_ber_addseq($oct, '30') . $str;
- }
-
- // now tack on sequence identifier and length
- $str = self::_ber_addseq($str, '30');
-
- return pack('H'.strlen($str), $str);
- }
-
- /**
- * Add BER sequence with correct length and the given identifier
- */
- private static function _ber_addseq($str, $identifier)
- {
- $len = dechex(strlen($str)/2);
- if (strlen($len) % 2 != 0)
- $len = '0'.$len;
-
- return $identifier . $len . $str;
- }
-
- /**
- * Returns BER encoded integer value in hex format
- */
- private static function _ber_encode_int($offset)
- {
- $val = dechex($offset);
- $prefix = '';
-
- // check if bit 8 of high byte is 1
- if (preg_match('/^[89abcdef]/', $val))
- $prefix = '00';
-
- if (strlen($val)%2 != 0)
- $prefix .= '0';
-
- return $prefix . $val;
- }
-
- /**
- * Returns ascii string encoded in hex
- */
- private static function _string2hex($str)
- {
- $hex = '';
- for ($i=0; $i < strlen($str); $i++) {
- $hex .= dechex(ord($str[$i]));
- }
- return $hex;
- }
-
}
+
+// for backward compat.
+class rcube_ldap_result extends Net_LDAP3_Result {}
diff --git a/program/lib/Roundcube/rcube_ldap_result.php b/program/lib/Roundcube/rcube_ldap_result.php
deleted file mode 100644
index efc3331bc..000000000
--- a/program/lib/Roundcube/rcube_ldap_result.php
+++ /dev/null
@@ -1,130 +0,0 @@
-<?php
-
-/*
- +-----------------------------------------------------------------------+
- | Roundcube/rcube_ldap_result.php |
- | |
- | This file is part of the Roundcube Webmail client |
- | Copyright (C) 2006-2013, The Roundcube Dev Team |
- | Copyright (C) 2013, Kolab Systems AG |
- | |
- | Licensed under the GNU General Public License version 3 or |
- | any later version with exceptions for skins & plugins. |
- | See the README file for a full license statement. |
- | |
- | PURPOSE: |
- | Model class that represents an LDAP search result |
- | |
- +-----------------------------------------------------------------------+
- | Author: Thomas Bruederli <roundcube@gmail.com> |
- +-----------------------------------------------------------------------+
-*/
-
-
-/**
- * Model class representing an LDAP search result
- *
- * @package Framework
- * @subpackage LDAP
- */
-class rcube_ldap_result implements Iterator
-{
- public $conn;
- public $ldap;
- public $base_dn;
- public $filter;
-
- private $count = null;
- private $current = null;
- private $iteratorkey = 0;
-
- /**
- * Default constructor
- *
- * @param resource $conn LDAP link identifier
- * @param resource $ldap LDAP result entry identifier
- * @param string $base_dn Base DN used to get this result
- * @param string $filter Filter query used to get this result
- * @param integer $count Record count value (pre-calculated)
- */
- function __construct($conn, $ldap, $base_dn, $filter, $count = null)
- {
- $this->conn = $conn;
- $this->ldap = $ldap;
- $this->base_dn = $base_dn;
- $this->filter = $filter;
- $this->count = $count;
- }
-
- /**
- * Wrapper for ldap_sort()
- */
- public function sort($attr)
- {
- return ldap_sort($this->conn, $this->ldap, $attr);
- }
-
- /**
- * Get entries count
- */
- public function count()
- {
- if (!isset($this->count))
- $this->count = ldap_count_entries($this->conn, $this->ldap);
-
- return $this->count;
- }
-
- /**
- * Wrapper for ldap_get_entries()
- *
- * @param boolean $normalize Optionally normalize the entries to a list of hash arrays
- * @return array List of LDAP entries
- */
- public function entries($normalize = false)
- {
- $entries = ldap_get_entries($this->conn, $this->ldap);
- return $normalize ? rcube_ldap_generic::normalize_result($entries) : $entries;
- }
-
- /**
- * Wrapper for ldap_get_dn() using the current entry pointer
- */
- public function get_dn()
- {
- return $this->current ? ldap_get_dn($this->conn, $this->current) : null;
- }
-
-
- /*** Implements the PHP 5 Iterator interface to make foreach work ***/
-
- function current()
- {
- $attrib = ldap_get_attributes($this->conn, $this->current);
- $attrib['dn'] = ldap_get_dn($this->conn, $this->current);
- return $attrib;
- }
-
- function key()
- {
- return $this->iteratorkey;
- }
-
- function rewind()
- {
- $this->iteratorkey = 0;
- $this->current = ldap_first_entry($this->conn, $this->ldap);
- }
-
- function next()
- {
- $this->iteratorkey++;
- $this->current = ldap_next_entry($this->conn, $this->current);
- }
-
- function valid()
- {
- return (bool)$this->current;
- }
-
-}
diff --git a/program/lib/Roundcube/rcube_message_header.php b/program/lib/Roundcube/rcube_message_header.php
index 2bda930eb..2b795e591 100644
--- a/program/lib/Roundcube/rcube_message_header.php
+++ b/program/lib/Roundcube/rcube_message_header.php
@@ -225,8 +225,16 @@ class rcube_message_header
}
if ($decode) {
- $value = rcube_mime::decode_header($value, $this->charset);
- $value = rcube_charset::clean($value);
+ if (is_array($value)) {
+ foreach ($value as $key => $val) {
+ $value[$key] = rcube_mime::decode_header($val, $this->charset);
+ $value[$key] = rcube_charset::clean($val);
+ }
+ }
+ else {
+ $value = rcube_mime::decode_header($value, $this->charset);
+ $value = rcube_charset::clean($value);
+ }
}
return $value;
diff --git a/program/lib/Roundcube/rcube_mime.php b/program/lib/Roundcube/rcube_mime.php
index 091b2fae8..f66cf1437 100644
--- a/program/lib/Roundcube/rcube_mime.php
+++ b/program/lib/Roundcube/rcube_mime.php
@@ -394,6 +394,7 @@ class rcube_mime
}
if ($address) {
+ $address = self::fix_email($address);
$result[$key] = array('name' => $name, 'address' => $address);
}
}
@@ -480,15 +481,17 @@ class rcube_mime
/**
* Interpret a format=flowed message body according to RFC 2646
*
- * @param string $text Raw body formatted as flowed text
+ * @param string $text Raw body formatted as flowed text
+ * @param string $mark Mark each flowed line with specified character
*
* @return string Interpreted text with unwrapped lines and stuffed space removed
*/
- public static function unfold_flowed($text)
+ public static function unfold_flowed($text, $mark = null)
{
$text = preg_split('/\r?\n/', $text);
$last = -1;
$q_level = 0;
+ $marks = array();
foreach ($text as $idx => $line) {
if (preg_match('/^(>+)/', $line, $m)) {
@@ -508,6 +511,10 @@ class rcube_mime
) {
$text[$last] .= $line;
unset($text[$idx]);
+
+ if ($mark) {
+ $marks[$last] = true;
+ }
}
else {
$last = $idx;
@@ -520,7 +527,7 @@ class rcube_mime
}
else {
// remove space-stuffing
- $line = preg_replace('/^\s/', '', $line);
+ $line = preg_replace('/^ /', '', $line);
if (isset($text[$last]) && $line
&& $text[$last] != '-- '
@@ -528,6 +535,10 @@ class rcube_mime
) {
$text[$last] .= $line;
unset($text[$idx]);
+
+ if ($mark) {
+ $marks[$last] = true;
+ }
}
else {
$text[$idx] = $line;
@@ -538,6 +549,12 @@ class rcube_mime
$q_level = $q;
}
+ if (!empty($marks)) {
+ foreach (array_keys($marks) as $mk) {
+ $text[$mk] = $mark . $text[$mk];
+ }
+ }
+
return implode("\r\n", $text);
}
@@ -806,6 +823,7 @@ class rcube_mime
$file_paths[] = '/etc/httpd2/mime.types';
$file_paths[] = '/etc/apache/mime.types';
$file_paths[] = '/etc/apache2/mime.types';
+ $file_paths[] = '/etc/nginx/mime.types';
$file_paths[] = '/usr/local/etc/httpd/conf/mime.types';
$file_paths[] = '/usr/local/etc/apache/conf/mime.types';
}
@@ -889,4 +907,19 @@ class rcube_mime
return 'image/' . $type;
}
+ /**
+ * Try to fix invalid email addresses
+ */
+ public static function fix_email($email)
+ {
+ $parts = rcube_utils::explode_quoted_string('@', $email);
+ foreach ($parts as $idx => $part) {
+ // remove redundant quoting (#1490040)
+ if ($part[0] == '"' && preg_match('/^"([a-zA-Z0-9._+=-]+)"$/', $part, $m)) {
+ $parts[$idx] = $m[1];
+ }
+ }
+
+ return implode('@', $parts);
+ }
}
diff --git a/program/lib/Roundcube/rcube_output.php b/program/lib/Roundcube/rcube_output.php
index 1907645b0..55a38b240 100644
--- a/program/lib/Roundcube/rcube_output.php
+++ b/program/lib/Roundcube/rcube_output.php
@@ -44,7 +44,6 @@ abstract class rcube_output
$this->browser = new rcube_browser();
}
-
/**
* Magic getter
*/
@@ -60,7 +59,6 @@ abstract class rcube_output
return null;
}
-
/**
* Setter for output charset.
* To be specified in a meta tag and sent as http-header
@@ -72,7 +70,6 @@ abstract class rcube_output
$this->charset = $charset;
}
-
/**
* Getter for output charset
*
@@ -83,7 +80,6 @@ abstract class rcube_output
return $this->charset;
}
-
/**
* Set environment variable
*
@@ -95,7 +91,6 @@ abstract class rcube_output
$this->env[$name] = $value;
}
-
/**
* Environment variable getter.
*
@@ -108,7 +103,6 @@ abstract class rcube_output
return $this->env[$name];
}
-
/**
* Delete all stored env variables and commands
*/
@@ -117,7 +111,6 @@ abstract class rcube_output
$this->env = array();
}
-
/**
* Invoke display_message command
*
@@ -129,7 +122,6 @@ abstract class rcube_output
*/
abstract function show_message($message, $type = 'notice', $vars = null, $override = true, $timeout = 0);
-
/**
* Redirect to a certain url.
*
@@ -138,13 +130,11 @@ abstract class rcube_output
*/
abstract function redirect($p = array(), $delay = 1);
-
/**
* Send output to the client.
*/
abstract function send();
-
/**
* Send HTTP headers to prevent caching a page
*/
@@ -157,9 +147,6 @@ abstract class rcube_output
header("Expires: ".gmdate("D, d M Y H:i:s")." GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
- // Request browser to disable DNS prefetching (CVE-2010-0464)
- header("X-DNS-Prefetch-Control: off");
-
// We need to set the following headers to make downloads work using IE in HTTPS mode.
if ($this->browser->ie && rcube_utils::https_check()) {
header('Pragma: private');
@@ -178,14 +165,32 @@ abstract class rcube_output
*/
public function future_expire_header($offset = 2600000)
{
- if (headers_sent())
+ if (headers_sent()) {
return;
+ }
header("Expires: " . gmdate("D, d M Y H:i:s", time()+$offset) . " GMT");
header("Cache-Control: max-age=$offset");
header("Pragma: ");
}
+ /**
+ * Send browser compatibility/security/etc. headers
+ */
+ public function common_headers()
+ {
+ if (headers_sent()) {
+ return;
+ }
+
+ // Unlock IE compatibility mode
+ if ($this->browser->ie) {
+ header('X-UA-Compatible: IE=edge');
+ }
+
+ // Request browser to disable DNS prefetching (CVE-2010-0464)
+ header("X-DNS-Prefetch-Control: off");
+ }
/**
* Show error page and terminate script execution
@@ -200,7 +205,6 @@ abstract class rcube_output
exit(-1);
}
-
/**
* Create an edit field for inclusion on a form
*
@@ -253,7 +257,6 @@ abstract class rcube_output
return $out;
}
-
/**
* Convert a variable into a javascript object notation
*
@@ -269,5 +272,4 @@ abstract class rcube_output
// that's why we have @ here
return @json_encode($input);
}
-
}
diff --git a/program/lib/Roundcube/rcube_plugin.php b/program/lib/Roundcube/rcube_plugin.php
index 01c340deb..9c7a9c2dc 100644
--- a/program/lib/Roundcube/rcube_plugin.php
+++ b/program/lib/Roundcube/rcube_plugin.php
@@ -94,7 +94,15 @@ abstract class rcube_plugin
/**
* Provide information about this
*
- * @return array Meta information about a plugin or false if not implemented
+ * @return array Meta information about a plugin or false if not implemented:
+ * As hash array with the following keys:
+ * name: The plugin name
+ * vendor: Name of the plugin developer
+ * version: Plugin version name
+ * license: License name (short form according to http://spdx.org/licenses/)
+ * uri: The URL to the plugin homepage or source repository
+ * src_uri: Direct download URL to the source code of this plugin
+ * require: List of plugins required for this one (as array of plugin names)
*/
public static function info()
{
@@ -113,6 +121,17 @@ abstract class rcube_plugin
}
/**
+ * Attempt to load the given plugin which is optional for the current plugin
+ *
+ * @param string Plugin name
+ * @return boolean True on success, false on failure
+ */
+ public function include_plugin($plugin_name)
+ {
+ return $this->api->load_plugin($plugin_name, true, false);
+ }
+
+ /**
* Load local config file from plugins directory.
* The loaded values are patched over the global configuration.
*
diff --git a/program/lib/Roundcube/rcube_plugin_api.php b/program/lib/Roundcube/rcube_plugin_api.php
index feeeb192e..e0b8aea38 100644
--- a/program/lib/Roundcube/rcube_plugin_api.php
+++ b/program/lib/Roundcube/rcube_plugin_api.php
@@ -38,6 +38,7 @@ class rcube_plugin_api
public $handlers = array();
public $allowed_prefs = array();
public $allowed_session_prefs = array();
+ public $active_plugins = array();
protected $plugins = array();
protected $tasks = array();
@@ -45,7 +46,7 @@ class rcube_plugin_api
protected $actionmap = array();
protected $objectsmap = array();
protected $template_contents = array();
- protected $active_hook = false;
+ protected $exec_stack = array();
// Deprecated names of hooks, will be removed after 0.5-stable release
protected $deprecated_hooks = array(
@@ -169,10 +170,11 @@ class rcube_plugin_api
*
* @param string Plugin name
* @param boolean Force loading of the plugin even if it doesn't match the filter
+ * @param boolean Require loading of the plugin, error if it doesn't exist
*
* @return boolean True on success, false if not loaded or failure
*/
- public function load_plugin($plugin_name, $force = false)
+ public function load_plugin($plugin_name, $force = false, $require = true)
{
static $plugins_dir;
@@ -186,10 +188,9 @@ class rcube_plugin_api
return true;
}
- $fn = $plugins_dir . DIRECTORY_SEPARATOR . $plugin_name
- . DIRECTORY_SEPARATOR . $plugin_name . '.php';
+ $fn = "$plugins_dir/$plugin_name/$plugin_name.php";
- if (file_exists($fn)) {
+ if (is_readable($fn)) {
if (!class_exists($plugin_name, false)) {
include $fn;
}
@@ -197,6 +198,8 @@ class rcube_plugin_api
// instantiate class if exists
if (class_exists($plugin_name, false)) {
$plugin = new $plugin_name($this);
+ $this->active_plugins[] = $plugin_name;
+
// check inheritance...
if (is_subclass_of($plugin, 'rcube_plugin')) {
// ... task, request type and framed mode
@@ -222,7 +225,7 @@ class rcube_plugin_api
true, false);
}
}
- else {
+ elseif ($require) {
rcube::raise_error(array('code' => 520, 'type' => 'php',
'file' => __FILE__, 'line' => __LINE__,
'message' => "Failed to load plugin file $fn"), true, false);
@@ -252,6 +255,9 @@ class rcube_plugin_api
'GPL-3.0' => 'http://www.gnu.org/licenses/gpl-3.0.html',
'GPL-3.0+' => 'http://www.gnu.org/licenses/gpl.html',
'GPL-2.0+' => 'http://www.gnu.org/licenses/gpl.html',
+ 'AGPLv3' => 'http://www.gnu.org/licenses/agpl.html',
+ 'AGPLv3+' => 'http://www.gnu.org/licenses/agpl.html',
+ 'AGPL-3.0' => 'http://www.gnu.org/licenses/agpl.html',
'LGPL' => 'http://www.gnu.org/licenses/lgpl.html',
'LGPLv2' => 'http://www.gnu.org/licenses/lgpl-2.0.html',
'LGPLv2.1' => 'http://www.gnu.org/licenses/lgpl-2.1.html',
@@ -272,11 +278,15 @@ class rcube_plugin_api
);
$dir = dir($this->dir);
- $fn = unslashify($dir->path) . DIRECTORY_SEPARATOR . $plugin_name . DIRECTORY_SEPARATOR . $plugin_name . '.php';
+ $fn = unslashify($dir->path) . "/$plugin_name/$plugin_name.php";
$info = false;
- if (!class_exists($plugin_name))
- include($fn);
+ if (!class_exists($plugin_name, false)) {
+ if (is_readable($fn))
+ include($fn);
+ else
+ return false;
+ }
if (class_exists($plugin_name))
$info = $plugin_name::info();
@@ -284,12 +294,17 @@ class rcube_plugin_api
// fall back to composer.json file
if (!$info) {
$composer = INSTALL_PATH . "/plugins/$plugin_name/composer.json";
- if (file_exists($composer) && ($json = @json_decode(file_get_contents($composer), true))) {
+ if (is_readable($composer) && ($json = @json_decode(file_get_contents($composer), true))) {
list($info['vendor'], $info['name']) = explode('/', $json['name']);
$info['version'] = $json['version'];
$info['license'] = $json['license'];
- if ($license_uri = $license_uris[$info['license']])
- $info['license_uri'] = $license_uri;
+ $info['uri'] = $json['homepage'];
+ $info['require'] = array_filter(array_keys((array)$json['require']), function($pname) {
+ if (strpos($pname, '/') == false)
+ return false;
+ list($vendor, $name) = explode('/', $pname);
+ return !($name == 'plugin-installer' || $vendor == 'pear-pear');
+ });
}
// read local composer.lock file (once)
@@ -313,7 +328,7 @@ class rcube_plugin_api
// fall back to package.xml file
if (!$info) {
$package = INSTALL_PATH . "/plugins/$plugin_name/package.xml";
- if (file_exists($package) && ($file = file_get_contents($package))) {
+ if (is_readable($package) && ($file = file_get_contents($package))) {
$doc = new DOMDocument();
$doc->loadXML($file);
$xpath = new DOMXPath($doc);
@@ -337,11 +352,19 @@ class rcube_plugin_api
$deps = $xpath->evaluate('//rc:package/rc:dependencies/rc:required/rc:package/rc:name');
for ($i = 0; $i < $deps->length; $i++) {
$dn = $deps->item($i)->nodeValue;
- $info['requires'][] = $dn;
+ $info['require'][] = $dn;
}
}
}
+ // At least provide the name
+ if (!$info && class_exists($plugin_name)) {
+ $info = array('name' => $plugin_name, 'version' => '--');
+ }
+ else if ($info['license'] && empty($info['license_uri']) && ($license_uri = $license_uris[$info['license']])) {
+ $info['license_uri'] = $license_uri;
+ }
+
return $info;
}
@@ -399,8 +422,10 @@ class rcube_plugin_api
$args = array('arg' => $args);
}
+ // TODO: avoid recusion by checking in_array($hook, $this->exec_stack) ?
+
$args += array('abort' => false);
- $this->active_hook = $hook;
+ array_push($this->exec_stack, $hook);
foreach ((array)$this->handlers[$hook] as $callback) {
$ret = call_user_func($callback, $args);
@@ -413,7 +438,7 @@ class rcube_plugin_api
}
}
- $this->active_hook = false;
+ array_pop($this->exec_stack);
return $args;
}
@@ -549,7 +574,7 @@ class rcube_plugin_api
*/
public function is_processing($hook = null)
{
- return $this->active_hook && (!$hook || $this->active_hook == $hook);
+ return count($this->exec_stack) > 0 && (!$hook || in_array($hook, $this->exec_stack));
}
/**
diff --git a/program/lib/Roundcube/rcube_result_multifolder.php b/program/lib/Roundcube/rcube_result_multifolder.php
index 4bbd2188d..786ee85f6 100644
--- a/program/lib/Roundcube/rcube_result_multifolder.php
+++ b/program/lib/Roundcube/rcube_result_multifolder.php
@@ -26,16 +26,16 @@
*/
class rcube_result_multifolder
{
- public $multi = true;
- public $sets = array();
+ public $multi = true;
+ public $sets = array();
public $incomplete = false;
public $folder;
- protected $meta = array();
- protected $index = array();
+ protected $meta = array();
+ protected $index = array();
protected $folders = array();
+ protected $order = 'ASC';
protected $sorting;
- protected $order = 'ASC';
/**
@@ -44,7 +44,7 @@ class rcube_result_multifolder
public function __construct($folders = array())
{
$this->folders = $folders;
- $this->meta = array('count' => 0);
+ $this->meta = array('count' => 0);
}
@@ -74,7 +74,8 @@ class rcube_result_multifolder
// append UIDs to global index
$folder = $result->get_parameters('MAILBOX');
- $index = array_map(function($uid) use ($folder) { return $uid . '-' . $folder; }, $result->get());
+ $index = array_map(function($uid) use ($folder) { return $uid . '-' . $folder; }, $result->get());
+
$this->index = array_merge($this->index, $index);
}
@@ -89,7 +90,7 @@ class rcube_result_multifolder
}
$this->sorting = $sort_field;
- $this->order = $sort_order;
+ $this->order = $sort_order;
}
/**
@@ -150,8 +151,10 @@ class rcube_result_multifolder
if ($this->order != $set->get_parameters('ORDER')) {
$set->revert();
}
+
$folder = $set->get_parameters('MAILBOX');
- $index = array_map(function($uid) use ($folder) { return $uid . '-' . $folder; }, $set->get());
+ $index = array_map(function($uid) use ($folder) { return $uid . '-' . $folder; }, $set->get());
+
$this->index = array_merge($this->index, $index);
}
}
@@ -171,6 +174,7 @@ class rcube_result_multifolder
if (!empty($this->folder)) {
$msgid .= '-' . $this->folder;
}
+
return array_search($msgid, $this->index);
}
@@ -188,6 +192,7 @@ class rcube_result_multifolder
if ($set->get_parameters('MAILBOX') == $folder) {
$set->filter($ids);
}
+
$this->meta['count'] += $set->count();
}
}
@@ -267,8 +272,8 @@ class rcube_result_multifolder
public function get_parameters($param=null)
{
$params = array(
- 'SORT' => $this->sorting,
- 'ORDER' => $this->order,
+ 'SORT' => $this->sorting,
+ 'ORDER' => $this->order,
'MAILBOX' => $this->folders,
);
diff --git a/program/lib/Roundcube/rcube_session.php b/program/lib/Roundcube/rcube_session.php
index caca262c6..26f78433a 100644
--- a/program/lib/Roundcube/rcube_session.php
+++ b/program/lib/Roundcube/rcube_session.php
@@ -3,7 +3,7 @@
/*
+-----------------------------------------------------------------------+
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2005-2012, The Roundcube Dev Team |
+ | Copyright (C) 2005-2014, The Roundcube Dev Team |
| Copyright (C) 2011, Kolab Systems AG |
| |
| Licensed under the GNU General Public License version 3 or |
@@ -47,6 +47,13 @@ class rcube_session
private $storage;
private $memcache;
+ /**
+ * Blocks session data from being written to database.
+ * Can be used if write-race conditions are to be expected
+ * @var boolean
+ */
+ public $nowrite = false;
+
/**
* Default constructor
@@ -201,6 +208,9 @@ class rcube_session
$table = $this->db->table_name('session');
$ts = microtime(true);
+ if ($this->nowrite)
+ return true;
+
// no session row in DB (db_read() returns false)
if (!$this->key) {
$oldvars = null;
diff --git a/program/lib/Roundcube/rcube_spellchecker.php b/program/lib/Roundcube/rcube_spellchecker.php
index e9a36072d..43bab08c4 100644
--- a/program/lib/Roundcube/rcube_spellchecker.php
+++ b/program/lib/Roundcube/rcube_spellchecker.php
@@ -226,7 +226,18 @@ class rcube_spellchecker
else {
$word = mb_substr($this->content, $item[1], $item[2], RCUBE_CHARSET);
}
- $result[$word] = is_array($item[4]) ? implode("\t", $item[4]) : $item[4];
+
+ if (is_array($item[4])) {
+ $suggestions = $item[4];
+ }
+ else if (empty($item[4])) {
+ $suggestions = array();
+ }
+ else {
+ $suggestions = explode("\t", $item[4]);
+ }
+
+ $result[$word] = $suggestions;
}
return $result;
diff --git a/program/lib/Roundcube/rcube_storage.php b/program/lib/Roundcube/rcube_storage.php
index 69d6d2fae..ccb28c680 100644
--- a/program/lib/Roundcube/rcube_storage.php
+++ b/program/lib/Roundcube/rcube_storage.php
@@ -152,6 +152,19 @@ abstract class rcube_storage
/**
+ * Get connection/class option
+ *
+ * @param string $name Option name
+ *
+ * @param mixed Option value
+ */
+ public function get_option($name)
+ {
+ return $this->options[$name];
+ }
+
+
+ /**
* Activate/deactivate debug mode.
*
* @param boolean $dbg True if conversation with the server should be logged
@@ -905,9 +918,11 @@ abstract class rcube_storage
/**
* Get mailbox quota information.
*
+ * @param string $folder Folder name
+ *
* @return mixed Quota info or False if not supported
*/
- abstract function get_quota();
+ abstract function get_quota($folder = null);
/* -----------------------------------------
diff --git a/program/lib/Roundcube/rcube_string_replacer.php b/program/lib/Roundcube/rcube_string_replacer.php
index 77b91d18b..ce61e5367 100644
--- a/program/lib/Roundcube/rcube_string_replacer.php
+++ b/program/lib/Roundcube/rcube_string_replacer.php
@@ -42,7 +42,7 @@ class rcube_string_replacer
// Support unicode/punycode in top-level domain part
$utf_domain = '[^?&@"\'\\/()<>\s\r\t\n]+\\.?([^\\x00-\\x2f\\x3b-\\x40\\x5b-\\x60\\x7b-\\x7f]{2,}|xn--[a-zA-Z0-9]{2,})';
$url1 = '.:;,';
- $url2 = 'a-zA-Z0-9%=#$@+?|!&\\/_~\\[\\]\\(\\){}\*-';
+ $url2 = 'a-zA-Z0-9%=#$@+?|!&\\/_~\\[\\]\\(\\){}\*\x80-\xFE-';
$this->link_pattern = "/([\w]+:\/\/|\W[Ww][Ww][Ww]\.|^[Ww][Ww][Ww]\.)($utf_domain([$url1]*[$url2]+)*)/";
$this->mailto_pattern = "/("
diff --git a/program/lib/Roundcube/rcube_text2html.php b/program/lib/Roundcube/rcube_text2html.php
new file mode 100644
index 000000000..0afc6d110
--- /dev/null
+++ b/program/lib/Roundcube/rcube_text2html.php
@@ -0,0 +1,309 @@
+<?php
+
+/**
+ +-----------------------------------------------------------------------+
+ | This file is part of the Roundcube Webmail client |
+ | Copyright (C) 2008-2014, The Roundcube Dev Team |
+ | |
+ | Licensed under the GNU General Public License version 3 or |
+ | any later version with exceptions for skins & plugins. |
+ | See the README file for a full license statement. |
+ | |
+ | PURPOSE: |
+ | Converts plain text to HTML |
+ +-----------------------------------------------------------------------+
+ | Author: Aleksander Machniak <alec@alec.pl> |
+ +-----------------------------------------------------------------------+
+ */
+
+/**
+ * Converts plain text to HTML
+ *
+ * @package Framework
+ * @subpackage Utils
+ */
+class rcube_text2html
+{
+ /**
+ * Contains the HTML content after conversion.
+ *
+ * @var string $html
+ */
+ protected $html;
+
+ /**
+ * Contains the plain text.
+ *
+ * @var string $text
+ */
+ protected $text;
+
+ /**
+ * Configuration
+ *
+ * @var array $config
+ */
+ protected $config = array(
+ // non-breaking space
+ 'space' => "\xC2\xA0",
+ // enables format=flowed parser
+ 'flowed' => false,
+ // enables wrapping for non-flowed text
+ 'wrap' => true,
+ // line-break tag
+ 'break' => "<br>\n",
+ // prefix and suffix (wrapper element)
+ 'begin' => '<div class="pre">',
+ 'end' => '</div>',
+ // enables links replacement
+ 'links' => true,
+ // string replacer class
+ 'replacer' => 'rcube_string_replacer',
+ );
+
+
+ /**
+ * Constructor.
+ *
+ * If the plain text source string (or file) is supplied, the class
+ * will instantiate with that source propagated, all that has
+ * to be done it to call get_html().
+ *
+ * @param string $source Plain text
+ * @param boolean $from_file Indicates $source is a file to pull content from
+ * @param array $config Class configuration
+ */
+ function __construct($source = '', $from_file = false, $config = array())
+ {
+ if (!empty($source)) {
+ $this->set_text($source, $from_file);
+ }
+
+ if (!empty($config) && is_array($config)) {
+ $this->config = array_merge($this->config, $config);
+ }
+ }
+
+ /**
+ * Loads source text into memory, either from $source string or a file.
+ *
+ * @param string $source Plain text
+ * @param boolean $from_file Indicates $source is a file to pull content from
+ */
+ function set_text($source, $from_file = false)
+ {
+ if ($from_file && file_exists($source)) {
+ $this->text = file_get_contents($source);
+ }
+ else {
+ $this->text = $source;
+ }
+
+ $this->_converted = false;
+ }
+
+ /**
+ * Returns the HTML content.
+ *
+ * @return string HTML content
+ */
+ function get_html()
+ {
+ if (!$this->_converted) {
+ $this->_convert();
+ }
+
+ return $this->html;
+ }
+
+ /**
+ * Prints the HTML.
+ */
+ function print_html()
+ {
+ print $this->get_html();
+ }
+
+ /**
+ * Workhorse function that does actual conversion (calls _converter() method).
+ */
+ protected function _convert()
+ {
+ // Convert TXT to HTML
+ $this->html = $this->_converter($this->text);
+ $this->_converted = true;
+ }
+
+ /**
+ * Workhorse function that does actual conversion.
+ *
+ * @param string Plain text
+ */
+ protected function _converter($text)
+ {
+ // make links and email-addresses clickable
+ $attribs = array('link_attribs' => array('rel' => 'noreferrer', 'target' => '_blank'));
+ $replacer = new $this->config['replacer']($attribs);
+
+ if ($this->config['flowed']) {
+ $flowed_char = 0x01;
+ $text = rcube_mime::unfold_flowed($text, chr($flowed_char));
+ }
+
+ // search for patterns like links and e-mail addresses and replace with tokens
+ if ($this->config['links']) {
+ $text = $replacer->replace($text);
+ }
+
+ // split body into single lines
+ $text = preg_split('/\r?\n/', $text);
+ $quote_level = 0;
+ $last = null;
+
+ // wrap quoted lines with <blockquote>
+ for ($n = 0, $cnt = count($text); $n < $cnt; $n++) {
+ $flowed = false;
+ if ($this->config['flowed'] && ord($text[$n][0]) == $flowed_char) {
+ $flowed = true;
+ $text[$n] = substr($text[$n], 1);
+ }
+
+ if ($text[$n][0] == '>' && preg_match('/^(>+ {0,1})+/', $text[$n], $regs)) {
+ $q = substr_count($regs[0], '>');
+ $text[$n] = substr($text[$n], strlen($regs[0]));
+ $text[$n] = $this->_convert_line($text[$n], $flowed || $this->config['wrap']);
+ $_length = strlen(str_replace(' ', '', $text[$n]));
+
+ if ($q > $quote_level) {
+ if ($last !== null) {
+ $text[$last] .= (!$length ? "\n" : '')
+ . $replacer->get_replacement($replacer->add(
+ str_repeat('<blockquote>', $q - $quote_level)))
+ . $text[$n];
+
+ unset($text[$n]);
+ }
+ else {
+ $text[$n] = $replacer->get_replacement($replacer->add(
+ str_repeat('<blockquote>', $q - $quote_level))) . $text[$n];
+
+ $last = $n;
+ }
+ }
+ else if ($q < $quote_level) {
+ $text[$last] .= (!$length ? "\n" : '')
+ . $replacer->get_replacement($replacer->add(
+ str_repeat('</blockquote>', $quote_level - $q)))
+ . $text[$n];
+
+ unset($text[$n]);
+ }
+ else {
+ $last = $n;
+ }
+ }
+ else {
+ $text[$n] = $this->_convert_line($text[$n], $flowed || $this->config['wrap']);
+ $q = 0;
+ $_length = strlen(str_replace(' ', '', $text[$n]));
+
+ if ($quote_level > 0) {
+ $text[$last] .= (!$length ? "\n" : '')
+ . $replacer->get_replacement($replacer->add(
+ str_repeat('</blockquote>', $quote_level)))
+ . $text[$n];
+
+ unset($text[$n]);
+ }
+ else {
+ $last = $n;
+ }
+ }
+
+ $quote_level = $q;
+ $length = $_length;
+ }
+
+ if ($quote_level > 0) {
+ $text[$last] .= $replacer->get_replacement($replacer->add(
+ str_repeat('</blockquote>', $quote_level)));
+ }
+
+ $text = join("\n", $text);
+
+ // colorize signature (up to <sig_max_lines> lines)
+ $len = strlen($text);
+ $sig_sep = "--" . $this->config['space'] . "\n";
+ $sig_max_lines = rcube::get_instance()->config->get('sig_max_lines', 15);
+
+ while (($sp = strrpos($text, $sig_sep, $sp ? -$len+$sp-1 : 0)) !== false) {
+ if ($sp == 0 || $text[$sp-1] == "\n") {
+ // do not touch blocks with more that X lines
+ if (substr_count($text, "\n", $sp) < $sig_max_lines) {
+ $text = substr($text, 0, max(0, $sp))
+ .'<span class="sig">'.substr($text, $sp).'</span>';
+ }
+
+ break;
+ }
+ }
+
+ // insert url/mailto links and citation tags
+ $text = $replacer->resolve($text);
+
+ // replace line breaks
+ $text = str_replace("\n", $this->config['break'], $text);
+
+ return $this->config['begin'] . $text . $this->config['end'];
+ }
+
+ /**
+ * Converts spaces in line of text
+ */
+ protected function _convert_line($text, $is_flowed)
+ {
+ static $table;
+
+ if (empty($table)) {
+ $table = get_html_translation_table(HTML_SPECIALCHARS);
+ unset($table['?']);
+ }
+
+ // skip signature separator
+ if ($text == '-- ') {
+ return '--' . $this->config['space'];
+ }
+
+ // replace HTML special characters
+ $text = strtr($text, $table);
+
+ $nbsp = $this->config['space'];
+
+ // replace some whitespace characters
+ $text = str_replace(array("\r", "\t"), array('', ' '), $text);
+
+ // replace spaces with non-breaking spaces
+ if ($is_flowed) {
+ $pos = 0;
+ $diff = 0;
+ $len = strlen($nbsp);
+ $copy = $text;
+
+ while (($pos = strpos($text, ' ', $pos)) !== false) {
+ if ($pos == 0 || $text[$pos-1] == ' ') {
+ $copy = substr_replace($copy, $nbsp, $pos + $diff, 1);
+ $diff += $len - 1;
+ }
+ $pos++;
+ }
+
+ $text = $copy;
+ }
+ else {
+ // make the whole line non-breakable
+ $text = str_replace(array(' ', '-', '/'), array($nbsp, '-&#8288;', '/&#8288;'), $text);
+ }
+
+ return $text;
+ }
+}
diff --git a/program/lib/Roundcube/rcube_utils.php b/program/lib/Roundcube/rcube_utils.php
index c2009cee0..330322f10 100644
--- a/program/lib/Roundcube/rcube_utils.php
+++ b/program/lib/Roundcube/rcube_utils.php
@@ -119,17 +119,6 @@ class rcube_utils
return true;
}
- if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN' && version_compare(PHP_VERSION, '5.3.0', '<')) {
- $lookup = array();
- @exec("nslookup -type=MX " . escapeshellarg($domain_part) . " 2>&1", $lookup);
- foreach ($lookup as $line) {
- if (strpos($line, 'MX preference')) {
- return true;
- }
- }
- return false;
- }
-
// find MX record(s)
if (!function_exists('getmxrr') || getmxrr($domain_part, $mx_records)) {
return true;
@@ -795,7 +784,7 @@ class rcube_utils
*
* @return object DateTime instance or false on failure
*/
- public static function anytodatetime($date)
+ public static function anytodatetime($date, $timezone = null)
{
if (is_object($date) && is_a($date, 'DateTime')) {
return $date;
@@ -807,7 +796,7 @@ class rcube_utils
// try to parse string with DateTime first
if (!empty($date)) {
try {
- $dt = new DateTime($date);
+ $dt = new DateTime($date, $timezone);
}
catch (Exception $e) {
// ignore
@@ -928,7 +917,7 @@ class rcube_utils
/**
* Normalize the given string for fulltext search.
- * Currently only optimized for Latin-1 characters; to be extended
+ * Currently only optimized for ISO-8859-1 and ISO-8859-2 characters; to be extended
*
* @param string Input string (UTF-8)
* @param boolean True to return list of words as array
@@ -949,15 +938,32 @@ class rcube_utils
// split by words
$arr = self::tokenize_string($str);
+ // detect character set
+ if (utf8_encode(utf8_decode($str)) == $str) {
+ // ISO-8859-1 (or ASCII)
+ preg_match_all('/./u', 'äâàåáãæçéêëèïîìíñöôòøõóüûùúýÿ', $keys);
+ preg_match_all('/./', 'aaaaaaaceeeeiiiinoooooouuuuyy', $values);
+
+ $mapping = array_combine($keys[0], $values[0]);
+ $mapping = array_merge($mapping, array('ß' => 'ss', 'ae' => 'a', 'oe' => 'o', 'ue' => 'u'));
+ }
+ else if (rcube_charset::convert(rcube_charset::convert($str, 'UTF-8', 'ISO-8859-2'), 'ISO-8859-2', 'UTF-8') == $str) {
+ // ISO-8859-2
+ preg_match_all('/./u', 'ąáâäćçčéęëěíîłľĺńňóôöŕřśšşťţůúűüźžżý', $keys);
+ preg_match_all('/./', 'aaaaccceeeeiilllnnooorrsssttuuuuzzzy', $values);
+
+ $mapping = array_combine($keys[0], $values[0]);
+ $mapping = array_merge($mapping, array('ß' => 'ss', 'ae' => 'a', 'oe' => 'o', 'ue' => 'u'));
+ }
+
foreach ($arr as $i => $part) {
- if (utf8_encode(utf8_decode($part)) == $part) { // is latin-1 ?
- $arr[$i] = utf8_encode(strtr(strtolower(strtr(utf8_decode($part),
- 'ÇçäâàåéêëèïîìÅÉöôòüûùÿøØáíóúñÑÁÂÀãÃÊËÈÍÎÏÓÔõÕÚÛÙýÝ',
- 'ccaaaaeeeeiiiaeooouuuyooaiounnaaaaaeeeiiioooouuuyy')),
- array('ß' => 'ss', 'ae' => 'a', 'oe' => 'o', 'ue' => 'u')));
+ $part = mb_strtolower($part);
+
+ if (!empty($mapping)) {
+ $part = strtr($part, $mapping);
}
- else
- $arr[$i] = mb_strtolower($part);
+
+ $arr[$i] = $part;
}
return $as_array ? $arr : join(" ", $arr);
@@ -1039,7 +1045,6 @@ class rcube_utils
}
}
-
/**
* Find out if the string content means true or false
*
@@ -1063,7 +1068,37 @@ class rcube_utils
return (bool) preg_match('!^[a-z]:[\\\\/]!i', $path);
}
else {
- return $path[0] == DIRECTORY_SEPARATOR;
+ return $path[0] == '/';
}
}
+
+ /**
+ * Resolve relative URL
+ *
+ * @param string $url Relative URL
+ *
+ * @return string Absolute URL
+ */
+ public static function resolve_url($url)
+ {
+ // prepend protocol://hostname:port
+ if (!preg_match('|^https?://|', $url)) {
+ $schema = 'http';
+ $default_port = 80;
+
+ if (self::https_check()) {
+ $schema = 'https';
+ $default_port = 443;
+ }
+
+ $prefix = $schema . '://' . preg_replace('/:\d+$/', '', $_SERVER['HTTP_HOST']);
+ if ($_SERVER['SERVER_PORT'] != $default_port) {
+ $prefix .= ':' . $_SERVER['SERVER_PORT'];
+ }
+
+ $url = $prefix . ($url[0] == '/' ? '' : '/') . $url;
+ }
+
+ return $url;
+ }
}
diff --git a/program/lib/Roundcube/rcube_vcard.php b/program/lib/Roundcube/rcube_vcard.php
index fb8fdd525..96add110f 100644
--- a/program/lib/Roundcube/rcube_vcard.php
+++ b/program/lib/Roundcube/rcube_vcard.php
@@ -110,7 +110,7 @@ class rcube_vcard
public function load($vcard, $charset = RCUBE_CHARSET, $detect = false)
{
self::$values_decoded = false;
- $this->raw = self::vcard_decode($vcard);
+ $this->raw = self::vcard_decode(self::cleanup($vcard));
// resolve charset parameters
if ($charset == null) {
@@ -496,7 +496,7 @@ class rcube_vcard
if (preg_match('/^END:VCARD$/i', $line)) {
// parse vcard
- $obj = new rcube_vcard(self::cleanup($vcard_block), $charset, true, self::$fieldmap);
+ $obj = new rcube_vcard($vcard_block, $charset, true, self::$fieldmap);
// FN and N is required by vCard format (RFC 2426)
// on import we can be less restrictive, let's addressbook decide
if (!empty($obj->displayname) || !empty($obj->surname) || !empty($obj->firstname) || !empty($obj->email)) {
@@ -532,9 +532,9 @@ class rcube_vcard
// Cleanup
$vcard = preg_replace(array(
// convert special types (like Skype) to normal type='skype' classes with this simple regex ;)
- '/item(\d+)\.(TEL|EMAIL|URL)([^:]*?):(.*?)item\1.X-ABLabel:(?:_\$!<)?([\w-() ]*)(?:>!\$_)?./s',
- '/^item\d*\.X-AB.*$/m', // remove cruft like item1.X-AB*
- '/^item\d*\./m', // remove item1.ADR instead of ADR
+ '/item(\d+)\.(TEL|EMAIL|URL)([^:]*?):(.*?)item\1.X-ABLabel:(?:_\$!<)?([\w-() ]*)(?:>!\$_)?./si',
+ '/^item\d*\.X-AB.*$/mi', // remove cruft like item1.X-AB*
+ '/^item\d*\./mi', // remove item1.ADR instead of ADR
'/\n+/', // remove empty lines
'/^(N:[^;\R]*)$/m', // if N doesn't have any semicolons, add some
),
@@ -594,29 +594,34 @@ class rcube_vcard
private static function vcard_decode($vcard)
{
// Perform RFC2425 line unfolding and split lines
- $vcard = preg_replace(array("/\r/", "/\n\s+/"), '', $vcard);
- $lines = explode("\n", $vcard);
- $data = array();
+ $vcard = preg_replace(array("/\r/", "/\n\s+/"), '', $vcard);
+ $lines = explode("\n", $vcard);
+ $result = array();
for ($i=0; $i < count($lines); $i++) {
- if (!preg_match('/^([^:]+):(.+)$/', $lines[$i], $line))
+ if (!($pos = strpos($lines[$i], ':'))) {
continue;
+ }
+
+ $prefix = substr($lines[$i], 0, $pos);
+ $data = substr($lines[$i], $pos+1);
- if (preg_match('/^(BEGIN|END)$/i', $line[1]))
+ if (preg_match('/^(BEGIN|END)$/i', $prefix)) {
continue;
+ }
// convert 2.1-style "EMAIL;internet;home:" to 3.0-style "EMAIL;TYPE=internet;TYPE=home:"
- if ($data['VERSION'][0] == "2.1"
- && preg_match('/^([^;]+);([^:]+)/', $line[1], $regs2)
+ if ($result['VERSION'][0] == "2.1"
+ && preg_match('/^([^;]+);([^:]+)/', $prefix, $regs2)
&& !preg_match('/^TYPE=/i', $regs2[2])
) {
- $line[1] = $regs2[1];
+ $prefix = $regs2[1];
foreach (explode(';', $regs2[2]) as $prop) {
- $line[1] .= ';' . (strpos($prop, '=') ? $prop : 'TYPE='.$prop);
+ $prefix .= ';' . (strpos($prop, '=') ? $prop : 'TYPE='.$prop);
}
}
- if (preg_match_all('/([^\\;]+);?/', $line[1], $regs2)) {
+ if (preg_match_all('/([^\\;]+);?/', $prefix, $regs2)) {
$entry = array();
$field = strtoupper($regs2[1][0]);
$enc = null;
@@ -629,10 +634,10 @@ class rcube_vcard
// add next line(s) to value string if QP line end detected
if ($value == 'QUOTED-PRINTABLE') {
while (preg_match('/=$/', $lines[$i])) {
- $line[2] .= "\n" . $lines[++$i];
+ $data .= "\n" . $lines[++$i];
}
}
- $enc = $value;
+ $enc = $value == 'BASE64' ? 'B' : $value;
}
else {
$lc_key = strtolower($key);
@@ -652,20 +657,30 @@ class rcube_vcard
// should we use vCard 3.0 instead?
// $entry['base64'] = true;
}
- $line[2] = self::decode_value($line[2], $enc ? $enc : 'base64');
+
+ $data = self::decode_value($data, $enc ? $enc : 'base64');
+ }
+ else if ($field == 'PHOTO') {
+ // vCard 4.0 data URI, "PHOTO:data:image/jpeg;base64,..."
+ if (preg_match('/^data:[a-z\/_-]+;base64,/i', $data, $m)) {
+ $entry['encoding'] = $enc = 'B';
+ $data = substr($data, strlen($m[0]));
+ $data = self::decode_value($data, 'base64');
+ }
}
if ($enc != 'B' && empty($entry['base64'])) {
- $line[2] = self::vcard_unquote($line[2]);
+ $data = self::vcard_unquote($data);
}
- $entry = array_merge($entry, (array) $line[2]);
- $data[$field][] = $entry;
+ $entry = array_merge($entry, (array) $data);
+ $result[$field][] = $entry;
}
}
- unset($data['VERSION']);
- return $data;
+ unset($result['VERSION']);
+
+ return $result;
}
/**
diff --git a/program/lib/Roundcube/rcube_washtml.php b/program/lib/Roundcube/rcube_washtml.php
index e23e5b21d..97ab56cdf 100644
--- a/program/lib/Roundcube/rcube_washtml.php
+++ b/program/lib/Roundcube/rcube_washtml.php
@@ -95,6 +95,7 @@ class rcube_washtml
'ins', 'label', 'legend', 'li', 'map', 'menu', 'nobr', 'ol', 'p', 'pre', 'q',
's', 'samp', 'small', 'span', 'strike', 'strong', 'sub', 'sup', 'table',
'tbody', 'td', 'tfoot', 'th', 'thead', 'tr', 'tt', 'u', 'ul', 'var', 'wbr', 'img',
+ 'video', 'source',
// form elements
'button', 'input', 'textarea', 'select', 'option', 'optgroup'
);
@@ -206,7 +207,7 @@ class rcube_washtml
$value .= ' ' . $val;
// #1488535: Fix size units, so width:800 would be changed to width:800px
- if (preg_match('/(left|right|top|bottom|width|height)/i', $cssid)
+ if (preg_match('/^(left|right|top|bottom|width|height)/i', $cssid)
&& preg_match('/^[0-9]+$/', $val)
) {
$value .= 'px';
@@ -246,7 +247,10 @@ class rcube_washtml
$quot = strpos($style, '"') !== false ? "'" : '"';
$t .= ' style=' . $quot . $style . $quot;
}
- else if ($key == 'background' || ($key == 'src' && strtolower($node->tagName) == 'img')) { //check tagName anyway
+ else if ($key == 'background'
+ || ($key == 'src' && preg_match('/^(img|source)$/i', $node->tagName))
+ || ($key == 'poster' && strtolower($node->tagName) == 'video')
+ ) {
if (($src = $this->config['cid_map'][$value])
|| ($src = $this->config['cid_map'][$this->config['base_url'].$value])
) {
@@ -374,7 +378,7 @@ class rcube_washtml
$this->max_nesting_level = (int) @ini_get('xdebug.max_nesting_level');
// Use optimizations if supported
- if (version_compare(PHP_VERSION, '5.4.0', '>=')) {
+ if (PHP_VERSION_ID >= 50400) {
@$node->loadHTML($html, LIBXML_PARSEHUGE | LIBXML_COMPACT);
}
else {
@@ -456,7 +460,7 @@ class rcube_washtml
// Remove invalid HTML comments (#1487759)
// Don't remove valid conditional comments
// Don't remove MSOutlook (<!-->) conditional comments (#1489004)
- $html = preg_replace('/<!--[^->\[\n]+>/', '', $html);
+ $html = preg_replace('/<!--[^-<>\[\n]+>/', '', $html);
// fix broken nested lists
self::fix_broken_lists($html);
diff --git a/program/lib/encoding/CP1250.map b/program/lib/encoding/CP1250.map
deleted file mode 100644
index 081d7763b..000000000
--- a/program/lib/encoding/CP1250.map
+++ /dev/null
@@ -1,274 +0,0 @@
-#
-# Name: cp1250 to Unicode table
-# Unicode version: 2.0
-# Table version: 2.01
-# Table format: Format A
-# Date: 04/15/98
-#
-# Contact: cpxlate@microsoft.com
-#
-# General notes: none
-#
-# Format: Three tab-separated columns
-# Column #1 is the cp1250 code (in hex)
-# Column #2 is the Unicode (in hex as 0xXXXX)
-# Column #3 is the Unicode name (follows a comment sign, '#')
-#
-# The entries are in cp1250 order
-#
-0x00 0x0000 #NULL
-0x01 0x0001 #START OF HEADING
-0x02 0x0002 #START OF TEXT
-0x03 0x0003 #END OF TEXT
-0x04 0x0004 #END OF TRANSMISSION
-0x05 0x0005 #ENQUIRY
-0x06 0x0006 #ACKNOWLEDGE
-0x07 0x0007 #BELL
-0x08 0x0008 #BACKSPACE
-0x09 0x0009 #HORIZONTAL TABULATION
-0x0A 0x000A #LINE FEED
-0x0B 0x000B #VERTICAL TABULATION
-0x0C 0x000C #FORM FEED
-0x0D 0x000D #CARRIAGE RETURN
-0x0E 0x000E #SHIFT OUT
-0x0F 0x000F #SHIFT IN
-0x10 0x0010 #DATA LINK ESCAPE
-0x11 0x0011 #DEVICE CONTROL ONE
-0x12 0x0012 #DEVICE CONTROL TWO
-0x13 0x0013 #DEVICE CONTROL THREE
-0x14 0x0014 #DEVICE CONTROL FOUR
-0x15 0x0015 #NEGATIVE ACKNOWLEDGE
-0x16 0x0016 #SYNCHRONOUS IDLE
-0x17 0x0017 #END OF TRANSMISSION BLOCK
-0x18 0x0018 #CANCEL
-0x19 0x0019 #END OF MEDIUM
-0x1A 0x001A #SUBSTITUTE
-0x1B 0x001B #ESCAPE
-0x1C 0x001C #FILE SEPARATOR
-0x1D 0x001D #GROUP SEPARATOR
-0x1E 0x001E #RECORD SEPARATOR
-0x1F 0x001F #UNIT SEPARATOR
-0x20 0x0020 #SPACE
-0x21 0x0021 #EXCLAMATION MARK
-0x22 0x0022 #QUOTATION MARK
-0x23 0x0023 #NUMBER SIGN
-0x24 0x0024 #DOLLAR SIGN
-0x25 0x0025 #PERCENT SIGN
-0x26 0x0026 #AMPERSAND
-0x27 0x0027 #APOSTROPHE
-0x28 0x0028 #LEFT PARENTHESIS
-0x29 0x0029 #RIGHT PARENTHESIS
-0x2A 0x002A #ASTERISK
-0x2B 0x002B #PLUS SIGN
-0x2C 0x002C #COMMA
-0x2D 0x002D #HYPHEN-MINUS
-0x2E 0x002E #FULL STOP
-0x2F 0x002F #SOLIDUS
-0x30 0x0030 #DIGIT ZERO
-0x31 0x0031 #DIGIT ONE
-0x32 0x0032 #DIGIT TWO
-0x33 0x0033 #DIGIT THREE
-0x34 0x0034 #DIGIT FOUR
-0x35 0x0035 #DIGIT FIVE
-0x36 0x0036 #DIGIT SIX
-0x37 0x0037 #DIGIT SEVEN
-0x38 0x0038 #DIGIT EIGHT
-0x39 0x0039 #DIGIT NINE
-0x3A 0x003A #COLON
-0x3B 0x003B #SEMICOLON
-0x3C 0x003C #LESS-THAN SIGN
-0x3D 0x003D #EQUALS SIGN
-0x3E 0x003E #GREATER-THAN SIGN
-0x3F 0x003F #QUESTION MARK
-0x40 0x0040 #COMMERCIAL AT
-0x41 0x0041 #LATIN CAPITAL LETTER A
-0x42 0x0042 #LATIN CAPITAL LETTER B
-0x43 0x0043 #LATIN CAPITAL LETTER C
-0x44 0x0044 #LATIN CAPITAL LETTER D
-0x45 0x0045 #LATIN CAPITAL LETTER E
-0x46 0x0046 #LATIN CAPITAL LETTER F
-0x47 0x0047 #LATIN CAPITAL LETTER G
-0x48 0x0048 #LATIN CAPITAL LETTER H
-0x49 0x0049 #LATIN CAPITAL LETTER I
-0x4A 0x004A #LATIN CAPITAL LETTER J
-0x4B 0x004B #LATIN CAPITAL LETTER K
-0x4C 0x004C #LATIN CAPITAL LETTER L
-0x4D 0x004D #LATIN CAPITAL LETTER M
-0x4E 0x004E #LATIN CAPITAL LETTER N
-0x4F 0x004F #LATIN CAPITAL LETTER O
-0x50 0x0050 #LATIN CAPITAL LETTER P
-0x51 0x0051 #LATIN CAPITAL LETTER Q
-0x52 0x0052 #LATIN CAPITAL LETTER R
-0x53 0x0053 #LATIN CAPITAL LETTER S
-0x54 0x0054 #LATIN CAPITAL LETTER T
-0x55 0x0055 #LATIN CAPITAL LETTER U
-0x56 0x0056 #LATIN CAPITAL LETTER V
-0x57 0x0057 #LATIN CAPITAL LETTER W
-0x58 0x0058 #LATIN CAPITAL LETTER X
-0x59 0x0059 #LATIN CAPITAL LETTER Y
-0x5A 0x005A #LATIN CAPITAL LETTER Z
-0x5B 0x005B #LEFT SQUARE BRACKET
-0x5C 0x005C #REVERSE SOLIDUS
-0x5D 0x005D #RIGHT SQUARE BRACKET
-0x5E 0x005E #CIRCUMFLEX ACCENT
-0x5F 0x005F #LOW LINE
-0x60 0x0060 #GRAVE ACCENT
-0x61 0x0061 #LATIN SMALL LETTER A
-0x62 0x0062 #LATIN SMALL LETTER B
-0x63 0x0063 #LATIN SMALL LETTER C
-0x64 0x0064 #LATIN SMALL LETTER D
-0x65 0x0065 #LATIN SMALL LETTER E
-0x66 0x0066 #LATIN SMALL LETTER F
-0x67 0x0067 #LATIN SMALL LETTER G
-0x68 0x0068 #LATIN SMALL LETTER H
-0x69 0x0069 #LATIN SMALL LETTER I
-0x6A 0x006A #LATIN SMALL LETTER J
-0x6B 0x006B #LATIN SMALL LETTER K
-0x6C 0x006C #LATIN SMALL LETTER L
-0x6D 0x006D #LATIN SMALL LETTER M
-0x6E 0x006E #LATIN SMALL LETTER N
-0x6F 0x006F #LATIN SMALL LETTER O
-0x70 0x0070 #LATIN SMALL LETTER P
-0x71 0x0071 #LATIN SMALL LETTER Q
-0x72 0x0072 #LATIN SMALL LETTER R
-0x73 0x0073 #LATIN SMALL LETTER S
-0x74 0x0074 #LATIN SMALL LETTER T
-0x75 0x0075 #LATIN SMALL LETTER U
-0x76 0x0076 #LATIN SMALL LETTER V
-0x77 0x0077 #LATIN SMALL LETTER W
-0x78 0x0078 #LATIN SMALL LETTER X
-0x79 0x0079 #LATIN SMALL LETTER Y
-0x7A 0x007A #LATIN SMALL LETTER Z
-0x7B 0x007B #LEFT CURLY BRACKET
-0x7C 0x007C #VERTICAL LINE
-0x7D 0x007D #RIGHT CURLY BRACKET
-0x7E 0x007E #TILDE
-0x7F 0x007F #DELETE
-0x80 0x20AC #EURO SIGN
-0x81 #UNDEFINED
-0x82 0x201A #SINGLE LOW-9 QUOTATION MARK
-0x83 #UNDEFINED
-0x84 0x201E #DOUBLE LOW-9 QUOTATION MARK
-0x85 0x2026 #HORIZONTAL ELLIPSIS
-0x86 0x2020 #DAGGER
-0x87 0x2021 #DOUBLE DAGGER
-0x88 #UNDEFINED
-0x89 0x2030 #PER MILLE SIGN
-0x8A 0x0160 #LATIN CAPITAL LETTER S WITH CARON
-0x8B 0x2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-0x8C 0x015A #LATIN CAPITAL LETTER S WITH ACUTE
-0x8D 0x0164 #LATIN CAPITAL LETTER T WITH CARON
-0x8E 0x017D #LATIN CAPITAL LETTER Z WITH CARON
-0x8F 0x0179 #LATIN CAPITAL LETTER Z WITH ACUTE
-0x90 #UNDEFINED
-0x91 0x2018 #LEFT SINGLE QUOTATION MARK
-0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
-0x93 0x201C #LEFT DOUBLE QUOTATION MARK
-0x94 0x201D #RIGHT DOUBLE QUOTATION MARK
-0x95 0x2022 #BULLET
-0x96 0x2013 #EN DASH
-0x97 0x2014 #EM DASH
-0x98 #UNDEFINED
-0x99 0x2122 #TRADE MARK SIGN
-0x9A 0x0161 #LATIN SMALL LETTER S WITH CARON
-0x9B 0x203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-0x9C 0x015B #LATIN SMALL LETTER S WITH ACUTE
-0x9D 0x0165 #LATIN SMALL LETTER T WITH CARON
-0x9E 0x017E #LATIN SMALL LETTER Z WITH CARON
-0x9F 0x017A #LATIN SMALL LETTER Z WITH ACUTE
-0xA0 0x00A0 #NO-BREAK SPACE
-0xA1 0x02C7 #CARON
-0xA2 0x02D8 #BREVE
-0xA3 0x0141 #LATIN CAPITAL LETTER L WITH STROKE
-0xA4 0x00A4 #CURRENCY SIGN
-0xA5 0x0104 #LATIN CAPITAL LETTER A WITH OGONEK
-0xA6 0x00A6 #BROKEN BAR
-0xA7 0x00A7 #SECTION SIGN
-0xA8 0x00A8 #DIAERESIS
-0xA9 0x00A9 #COPYRIGHT SIGN
-0xAA 0x015E #LATIN CAPITAL LETTER S WITH CEDILLA
-0xAB 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xAC 0x00AC #NOT SIGN
-0xAD 0x00AD #SOFT HYPHEN
-0xAE 0x00AE #REGISTERED SIGN
-0xAF 0x017B #LATIN CAPITAL LETTER Z WITH DOT ABOVE
-0xB0 0x00B0 #DEGREE SIGN
-0xB1 0x00B1 #PLUS-MINUS SIGN
-0xB2 0x02DB #OGONEK
-0xB3 0x0142 #LATIN SMALL LETTER L WITH STROKE
-0xB4 0x00B4 #ACUTE ACCENT
-0xB5 0x00B5 #MICRO SIGN
-0xB6 0x00B6 #PILCROW SIGN
-0xB7 0x00B7 #MIDDLE DOT
-0xB8 0x00B8 #CEDILLA
-0xB9 0x0105 #LATIN SMALL LETTER A WITH OGONEK
-0xBA 0x015F #LATIN SMALL LETTER S WITH CEDILLA
-0xBB 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xBC 0x013D #LATIN CAPITAL LETTER L WITH CARON
-0xBD 0x02DD #DOUBLE ACUTE ACCENT
-0xBE 0x013E #LATIN SMALL LETTER L WITH CARON
-0xBF 0x017C #LATIN SMALL LETTER Z WITH DOT ABOVE
-0xC0 0x0154 #LATIN CAPITAL LETTER R WITH ACUTE
-0xC1 0x00C1 #LATIN CAPITAL LETTER A WITH ACUTE
-0xC2 0x00C2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-0xC3 0x0102 #LATIN CAPITAL LETTER A WITH BREVE
-0xC4 0x00C4 #LATIN CAPITAL LETTER A WITH DIAERESIS
-0xC5 0x0139 #LATIN CAPITAL LETTER L WITH ACUTE
-0xC6 0x0106 #LATIN CAPITAL LETTER C WITH ACUTE
-0xC7 0x00C7 #LATIN CAPITAL LETTER C WITH CEDILLA
-0xC8 0x010C #LATIN CAPITAL LETTER C WITH CARON
-0xC9 0x00C9 #LATIN CAPITAL LETTER E WITH ACUTE
-0xCA 0x0118 #LATIN CAPITAL LETTER E WITH OGONEK
-0xCB 0x00CB #LATIN CAPITAL LETTER E WITH DIAERESIS
-0xCC 0x011A #LATIN CAPITAL LETTER E WITH CARON
-0xCD 0x00CD #LATIN CAPITAL LETTER I WITH ACUTE
-0xCE 0x00CE #LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-0xCF 0x010E #LATIN CAPITAL LETTER D WITH CARON
-0xD0 0x0110 #LATIN CAPITAL LETTER D WITH STROKE
-0xD1 0x0143 #LATIN CAPITAL LETTER N WITH ACUTE
-0xD2 0x0147 #LATIN CAPITAL LETTER N WITH CARON
-0xD3 0x00D3 #LATIN CAPITAL LETTER O WITH ACUTE
-0xD4 0x00D4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-0xD5 0x0150 #LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-0xD6 0x00D6 #LATIN CAPITAL LETTER O WITH DIAERESIS
-0xD7 0x00D7 #MULTIPLICATION SIGN
-0xD8 0x0158 #LATIN CAPITAL LETTER R WITH CARON
-0xD9 0x016E #LATIN CAPITAL LETTER U WITH RING ABOVE
-0xDA 0x00DA #LATIN CAPITAL LETTER U WITH ACUTE
-0xDB 0x0170 #LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-0xDC 0x00DC #LATIN CAPITAL LETTER U WITH DIAERESIS
-0xDD 0x00DD #LATIN CAPITAL LETTER Y WITH ACUTE
-0xDE 0x0162 #LATIN CAPITAL LETTER T WITH CEDILLA
-0xDF 0x00DF #LATIN SMALL LETTER SHARP S
-0xE0 0x0155 #LATIN SMALL LETTER R WITH ACUTE
-0xE1 0x00E1 #LATIN SMALL LETTER A WITH ACUTE
-0xE2 0x00E2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
-0xE3 0x0103 #LATIN SMALL LETTER A WITH BREVE
-0xE4 0x00E4 #LATIN SMALL LETTER A WITH DIAERESIS
-0xE5 0x013A #LATIN SMALL LETTER L WITH ACUTE
-0xE6 0x0107 #LATIN SMALL LETTER C WITH ACUTE
-0xE7 0x00E7 #LATIN SMALL LETTER C WITH CEDILLA
-0xE8 0x010D #LATIN SMALL LETTER C WITH CARON
-0xE9 0x00E9 #LATIN SMALL LETTER E WITH ACUTE
-0xEA 0x0119 #LATIN SMALL LETTER E WITH OGONEK
-0xEB 0x00EB #LATIN SMALL LETTER E WITH DIAERESIS
-0xEC 0x011B #LATIN SMALL LETTER E WITH CARON
-0xED 0x00ED #LATIN SMALL LETTER I WITH ACUTE
-0xEE 0x00EE #LATIN SMALL LETTER I WITH CIRCUMFLEX
-0xEF 0x010F #LATIN SMALL LETTER D WITH CARON
-0xF0 0x0111 #LATIN SMALL LETTER D WITH STROKE
-0xF1 0x0144 #LATIN SMALL LETTER N WITH ACUTE
-0xF2 0x0148 #LATIN SMALL LETTER N WITH CARON
-0xF3 0x00F3 #LATIN SMALL LETTER O WITH ACUTE
-0xF4 0x00F4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
-0xF5 0x0151 #LATIN SMALL LETTER O WITH DOUBLE ACUTE
-0xF6 0x00F6 #LATIN SMALL LETTER O WITH DIAERESIS
-0xF7 0x00F7 #DIVISION SIGN
-0xF8 0x0159 #LATIN SMALL LETTER R WITH CARON
-0xF9 0x016F #LATIN SMALL LETTER U WITH RING ABOVE
-0xFA 0x00FA #LATIN SMALL LETTER U WITH ACUTE
-0xFB 0x0171 #LATIN SMALL LETTER U WITH DOUBLE ACUTE
-0xFC 0x00FC #LATIN SMALL LETTER U WITH DIAERESIS
-0xFD 0x00FD #LATIN SMALL LETTER Y WITH ACUTE
-0xFE 0x0163 #LATIN SMALL LETTER T WITH CEDILLA
-0xFF 0x02D9 #DOT ABOVE
diff --git a/program/lib/encoding/CP1251.map b/program/lib/encoding/CP1251.map
deleted file mode 100644
index e7d4f2c5b..000000000
--- a/program/lib/encoding/CP1251.map
+++ /dev/null
@@ -1,274 +0,0 @@
-#
-# Name: cp1251 to Unicode table
-# Unicode version: 2.0
-# Table version: 2.01
-# Table format: Format A
-# Date: 04/15/98
-#
-# Contact: cpxlate@microsoft.com
-#
-# General notes: none
-#
-# Format: Three tab-separated columns
-# Column #1 is the cp1251 code (in hex)
-# Column #2 is the Unicode (in hex as 0xXXXX)
-# Column #3 is the Unicode name (follows a comment sign, '#')
-#
-# The entries are in cp1251 order
-#
-0x00 0x0000 #NULL
-0x01 0x0001 #START OF HEADING
-0x02 0x0002 #START OF TEXT
-0x03 0x0003 #END OF TEXT
-0x04 0x0004 #END OF TRANSMISSION
-0x05 0x0005 #ENQUIRY
-0x06 0x0006 #ACKNOWLEDGE
-0x07 0x0007 #BELL
-0x08 0x0008 #BACKSPACE
-0x09 0x0009 #HORIZONTAL TABULATION
-0x0A 0x000A #LINE FEED
-0x0B 0x000B #VERTICAL TABULATION
-0x0C 0x000C #FORM FEED
-0x0D 0x000D #CARRIAGE RETURN
-0x0E 0x000E #SHIFT OUT
-0x0F 0x000F #SHIFT IN
-0x10 0x0010 #DATA LINK ESCAPE
-0x11 0x0011 #DEVICE CONTROL ONE
-0x12 0x0012 #DEVICE CONTROL TWO
-0x13 0x0013 #DEVICE CONTROL THREE
-0x14 0x0014 #DEVICE CONTROL FOUR
-0x15 0x0015 #NEGATIVE ACKNOWLEDGE
-0x16 0x0016 #SYNCHRONOUS IDLE
-0x17 0x0017 #END OF TRANSMISSION BLOCK
-0x18 0x0018 #CANCEL
-0x19 0x0019 #END OF MEDIUM
-0x1A 0x001A #SUBSTITUTE
-0x1B 0x001B #ESCAPE
-0x1C 0x001C #FILE SEPARATOR
-0x1D 0x001D #GROUP SEPARATOR
-0x1E 0x001E #RECORD SEPARATOR
-0x1F 0x001F #UNIT SEPARATOR
-0x20 0x0020 #SPACE
-0x21 0x0021 #EXCLAMATION MARK
-0x22 0x0022 #QUOTATION MARK
-0x23 0x0023 #NUMBER SIGN
-0x24 0x0024 #DOLLAR SIGN
-0x25 0x0025 #PERCENT SIGN
-0x26 0x0026 #AMPERSAND
-0x27 0x0027 #APOSTROPHE
-0x28 0x0028 #LEFT PARENTHESIS
-0x29 0x0029 #RIGHT PARENTHESIS
-0x2A 0x002A #ASTERISK
-0x2B 0x002B #PLUS SIGN
-0x2C 0x002C #COMMA
-0x2D 0x002D #HYPHEN-MINUS
-0x2E 0x002E #FULL STOP
-0x2F 0x002F #SOLIDUS
-0x30 0x0030 #DIGIT ZERO
-0x31 0x0031 #DIGIT ONE
-0x32 0x0032 #DIGIT TWO
-0x33 0x0033 #DIGIT THREE
-0x34 0x0034 #DIGIT FOUR
-0x35 0x0035 #DIGIT FIVE
-0x36 0x0036 #DIGIT SIX
-0x37 0x0037 #DIGIT SEVEN
-0x38 0x0038 #DIGIT EIGHT
-0x39 0x0039 #DIGIT NINE
-0x3A 0x003A #COLON
-0x3B 0x003B #SEMICOLON
-0x3C 0x003C #LESS-THAN SIGN
-0x3D 0x003D #EQUALS SIGN
-0x3E 0x003E #GREATER-THAN SIGN
-0x3F 0x003F #QUESTION MARK
-0x40 0x0040 #COMMERCIAL AT
-0x41 0x0041 #LATIN CAPITAL LETTER A
-0x42 0x0042 #LATIN CAPITAL LETTER B
-0x43 0x0043 #LATIN CAPITAL LETTER C
-0x44 0x0044 #LATIN CAPITAL LETTER D
-0x45 0x0045 #LATIN CAPITAL LETTER E
-0x46 0x0046 #LATIN CAPITAL LETTER F
-0x47 0x0047 #LATIN CAPITAL LETTER G
-0x48 0x0048 #LATIN CAPITAL LETTER H
-0x49 0x0049 #LATIN CAPITAL LETTER I
-0x4A 0x004A #LATIN CAPITAL LETTER J
-0x4B 0x004B #LATIN CAPITAL LETTER K
-0x4C 0x004C #LATIN CAPITAL LETTER L
-0x4D 0x004D #LATIN CAPITAL LETTER M
-0x4E 0x004E #LATIN CAPITAL LETTER N
-0x4F 0x004F #LATIN CAPITAL LETTER O
-0x50 0x0050 #LATIN CAPITAL LETTER P
-0x51 0x0051 #LATIN CAPITAL LETTER Q
-0x52 0x0052 #LATIN CAPITAL LETTER R
-0x53 0x0053 #LATIN CAPITAL LETTER S
-0x54 0x0054 #LATIN CAPITAL LETTER T
-0x55 0x0055 #LATIN CAPITAL LETTER U
-0x56 0x0056 #LATIN CAPITAL LETTER V
-0x57 0x0057 #LATIN CAPITAL LETTER W
-0x58 0x0058 #LATIN CAPITAL LETTER X
-0x59 0x0059 #LATIN CAPITAL LETTER Y
-0x5A 0x005A #LATIN CAPITAL LETTER Z
-0x5B 0x005B #LEFT SQUARE BRACKET
-0x5C 0x005C #REVERSE SOLIDUS
-0x5D 0x005D #RIGHT SQUARE BRACKET
-0x5E 0x005E #CIRCUMFLEX ACCENT
-0x5F 0x005F #LOW LINE
-0x60 0x0060 #GRAVE ACCENT
-0x61 0x0061 #LATIN SMALL LETTER A
-0x62 0x0062 #LATIN SMALL LETTER B
-0x63 0x0063 #LATIN SMALL LETTER C
-0x64 0x0064 #LATIN SMALL LETTER D
-0x65 0x0065 #LATIN SMALL LETTER E
-0x66 0x0066 #LATIN SMALL LETTER F
-0x67 0x0067 #LATIN SMALL LETTER G
-0x68 0x0068 #LATIN SMALL LETTER H
-0x69 0x0069 #LATIN SMALL LETTER I
-0x6A 0x006A #LATIN SMALL LETTER J
-0x6B 0x006B #LATIN SMALL LETTER K
-0x6C 0x006C #LATIN SMALL LETTER L
-0x6D 0x006D #LATIN SMALL LETTER M
-0x6E 0x006E #LATIN SMALL LETTER N
-0x6F 0x006F #LATIN SMALL LETTER O
-0x70 0x0070 #LATIN SMALL LETTER P
-0x71 0x0071 #LATIN SMALL LETTER Q
-0x72 0x0072 #LATIN SMALL LETTER R
-0x73 0x0073 #LATIN SMALL LETTER S
-0x74 0x0074 #LATIN SMALL LETTER T
-0x75 0x0075 #LATIN SMALL LETTER U
-0x76 0x0076 #LATIN SMALL LETTER V
-0x77 0x0077 #LATIN SMALL LETTER W
-0x78 0x0078 #LATIN SMALL LETTER X
-0x79 0x0079 #LATIN SMALL LETTER Y
-0x7A 0x007A #LATIN SMALL LETTER Z
-0x7B 0x007B #LEFT CURLY BRACKET
-0x7C 0x007C #VERTICAL LINE
-0x7D 0x007D #RIGHT CURLY BRACKET
-0x7E 0x007E #TILDE
-0x7F 0x007F #DELETE
-0x80 0x0402 #CYRILLIC CAPITAL LETTER DJE
-0x81 0x0403 #CYRILLIC CAPITAL LETTER GJE
-0x82 0x201A #SINGLE LOW-9 QUOTATION MARK
-0x83 0x0453 #CYRILLIC SMALL LETTER GJE
-0x84 0x201E #DOUBLE LOW-9 QUOTATION MARK
-0x85 0x2026 #HORIZONTAL ELLIPSIS
-0x86 0x2020 #DAGGER
-0x87 0x2021 #DOUBLE DAGGER
-0x88 0x20AC #EURO SIGN
-0x89 0x2030 #PER MILLE SIGN
-0x8A 0x0409 #CYRILLIC CAPITAL LETTER LJE
-0x8B 0x2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-0x8C 0x040A #CYRILLIC CAPITAL LETTER NJE
-0x8D 0x040C #CYRILLIC CAPITAL LETTER KJE
-0x8E 0x040B #CYRILLIC CAPITAL LETTER TSHE
-0x8F 0x040F #CYRILLIC CAPITAL LETTER DZHE
-0x90 0x0452 #CYRILLIC SMALL LETTER DJE
-0x91 0x2018 #LEFT SINGLE QUOTATION MARK
-0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
-0x93 0x201C #LEFT DOUBLE QUOTATION MARK
-0x94 0x201D #RIGHT DOUBLE QUOTATION MARK
-0x95 0x2022 #BULLET
-0x96 0x2013 #EN DASH
-0x97 0x2014 #EM DASH
-0x98 #UNDEFINED
-0x99 0x2122 #TRADE MARK SIGN
-0x9A 0x0459 #CYRILLIC SMALL LETTER LJE
-0x9B 0x203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-0x9C 0x045A #CYRILLIC SMALL LETTER NJE
-0x9D 0x045C #CYRILLIC SMALL LETTER KJE
-0x9E 0x045B #CYRILLIC SMALL LETTER TSHE
-0x9F 0x045F #CYRILLIC SMALL LETTER DZHE
-0xA0 0x00A0 #NO-BREAK SPACE
-0xA1 0x040E #CYRILLIC CAPITAL LETTER SHORT U
-0xA2 0x045E #CYRILLIC SMALL LETTER SHORT U
-0xA3 0x0408 #CYRILLIC CAPITAL LETTER JE
-0xA4 0x00A4 #CURRENCY SIGN
-0xA5 0x0490 #CYRILLIC CAPITAL LETTER GHE WITH UPTURN
-0xA6 0x00A6 #BROKEN BAR
-0xA7 0x00A7 #SECTION SIGN
-0xA8 0x0401 #CYRILLIC CAPITAL LETTER IO
-0xA9 0x00A9 #COPYRIGHT SIGN
-0xAA 0x0404 #CYRILLIC CAPITAL LETTER UKRAINIAN IE
-0xAB 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xAC 0x00AC #NOT SIGN
-0xAD 0x00AD #SOFT HYPHEN
-0xAE 0x00AE #REGISTERED SIGN
-0xAF 0x0407 #CYRILLIC CAPITAL LETTER YI
-0xB0 0x00B0 #DEGREE SIGN
-0xB1 0x00B1 #PLUS-MINUS SIGN
-0xB2 0x0406 #CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-0xB3 0x0456 #CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-0xB4 0x0491 #CYRILLIC SMALL LETTER GHE WITH UPTURN
-0xB5 0x00B5 #MICRO SIGN
-0xB6 0x00B6 #PILCROW SIGN
-0xB7 0x00B7 #MIDDLE DOT
-0xB8 0x0451 #CYRILLIC SMALL LETTER IO
-0xB9 0x2116 #NUMERO SIGN
-0xBA 0x0454 #CYRILLIC SMALL LETTER UKRAINIAN IE
-0xBB 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xBC 0x0458 #CYRILLIC SMALL LETTER JE
-0xBD 0x0405 #CYRILLIC CAPITAL LETTER DZE
-0xBE 0x0455 #CYRILLIC SMALL LETTER DZE
-0xBF 0x0457 #CYRILLIC SMALL LETTER YI
-0xC0 0x0410 #CYRILLIC CAPITAL LETTER A
-0xC1 0x0411 #CYRILLIC CAPITAL LETTER BE
-0xC2 0x0412 #CYRILLIC CAPITAL LETTER VE
-0xC3 0x0413 #CYRILLIC CAPITAL LETTER GHE
-0xC4 0x0414 #CYRILLIC CAPITAL LETTER DE
-0xC5 0x0415 #CYRILLIC CAPITAL LETTER IE
-0xC6 0x0416 #CYRILLIC CAPITAL LETTER ZHE
-0xC7 0x0417 #CYRILLIC CAPITAL LETTER ZE
-0xC8 0x0418 #CYRILLIC CAPITAL LETTER I
-0xC9 0x0419 #CYRILLIC CAPITAL LETTER SHORT I
-0xCA 0x041A #CYRILLIC CAPITAL LETTER KA
-0xCB 0x041B #CYRILLIC CAPITAL LETTER EL
-0xCC 0x041C #CYRILLIC CAPITAL LETTER EM
-0xCD 0x041D #CYRILLIC CAPITAL LETTER EN
-0xCE 0x041E #CYRILLIC CAPITAL LETTER O
-0xCF 0x041F #CYRILLIC CAPITAL LETTER PE
-0xD0 0x0420 #CYRILLIC CAPITAL LETTER ER
-0xD1 0x0421 #CYRILLIC CAPITAL LETTER ES
-0xD2 0x0422 #CYRILLIC CAPITAL LETTER TE
-0xD3 0x0423 #CYRILLIC CAPITAL LETTER U
-0xD4 0x0424 #CYRILLIC CAPITAL LETTER EF
-0xD5 0x0425 #CYRILLIC CAPITAL LETTER HA
-0xD6 0x0426 #CYRILLIC CAPITAL LETTER TSE
-0xD7 0x0427 #CYRILLIC CAPITAL LETTER CHE
-0xD8 0x0428 #CYRILLIC CAPITAL LETTER SHA
-0xD9 0x0429 #CYRILLIC CAPITAL LETTER SHCHA
-0xDA 0x042A #CYRILLIC CAPITAL LETTER HARD SIGN
-0xDB 0x042B #CYRILLIC CAPITAL LETTER YERU
-0xDC 0x042C #CYRILLIC CAPITAL LETTER SOFT SIGN
-0xDD 0x042D #CYRILLIC CAPITAL LETTER E
-0xDE 0x042E #CYRILLIC CAPITAL LETTER YU
-0xDF 0x042F #CYRILLIC CAPITAL LETTER YA
-0xE0 0x0430 #CYRILLIC SMALL LETTER A
-0xE1 0x0431 #CYRILLIC SMALL LETTER BE
-0xE2 0x0432 #CYRILLIC SMALL LETTER VE
-0xE3 0x0433 #CYRILLIC SMALL LETTER GHE
-0xE4 0x0434 #CYRILLIC SMALL LETTER DE
-0xE5 0x0435 #CYRILLIC SMALL LETTER IE
-0xE6 0x0436 #CYRILLIC SMALL LETTER ZHE
-0xE7 0x0437 #CYRILLIC SMALL LETTER ZE
-0xE8 0x0438 #CYRILLIC SMALL LETTER I
-0xE9 0x0439 #CYRILLIC SMALL LETTER SHORT I
-0xEA 0x043A #CYRILLIC SMALL LETTER KA
-0xEB 0x043B #CYRILLIC SMALL LETTER EL
-0xEC 0x043C #CYRILLIC SMALL LETTER EM
-0xED 0x043D #CYRILLIC SMALL LETTER EN
-0xEE 0x043E #CYRILLIC SMALL LETTER O
-0xEF 0x043F #CYRILLIC SMALL LETTER PE
-0xF0 0x0440 #CYRILLIC SMALL LETTER ER
-0xF1 0x0441 #CYRILLIC SMALL LETTER ES
-0xF2 0x0442 #CYRILLIC SMALL LETTER TE
-0xF3 0x0443 #CYRILLIC SMALL LETTER U
-0xF4 0x0444 #CYRILLIC SMALL LETTER EF
-0xF5 0x0445 #CYRILLIC SMALL LETTER HA
-0xF6 0x0446 #CYRILLIC SMALL LETTER TSE
-0xF7 0x0447 #CYRILLIC SMALL LETTER CHE
-0xF8 0x0448 #CYRILLIC SMALL LETTER SHA
-0xF9 0x0449 #CYRILLIC SMALL LETTER SHCHA
-0xFA 0x044A #CYRILLIC SMALL LETTER HARD SIGN
-0xFB 0x044B #CYRILLIC SMALL LETTER YERU
-0xFC 0x044C #CYRILLIC SMALL LETTER SOFT SIGN
-0xFD 0x044D #CYRILLIC SMALL LETTER E
-0xFE 0x044E #CYRILLIC SMALL LETTER YU
-0xFF 0x044F #CYRILLIC SMALL LETTER YA
diff --git a/program/lib/encoding/CP1252.map b/program/lib/encoding/CP1252.map
deleted file mode 100644
index 2ca4486eb..000000000
--- a/program/lib/encoding/CP1252.map
+++ /dev/null
@@ -1,274 +0,0 @@
-#
-# Name: cp1252 to Unicode table
-# Unicode version: 2.0
-# Table version: 2.01
-# Table format: Format A
-# Date: 04/15/98
-#
-# Contact: cpxlate@microsoft.com
-#
-# General notes: none
-#
-# Format: Three tab-separated columns
-# Column #1 is the cp1252 code (in hex)
-# Column #2 is the Unicode (in hex as 0xXXXX)
-# Column #3 is the Unicode name (follows a comment sign, '#')
-#
-# The entries are in cp1252 order
-#
-0x00 0x0000 #NULL
-0x01 0x0001 #START OF HEADING
-0x02 0x0002 #START OF TEXT
-0x03 0x0003 #END OF TEXT
-0x04 0x0004 #END OF TRANSMISSION
-0x05 0x0005 #ENQUIRY
-0x06 0x0006 #ACKNOWLEDGE
-0x07 0x0007 #BELL
-0x08 0x0008 #BACKSPACE
-0x09 0x0009 #HORIZONTAL TABULATION
-0x0A 0x000A #LINE FEED
-0x0B 0x000B #VERTICAL TABULATION
-0x0C 0x000C #FORM FEED
-0x0D 0x000D #CARRIAGE RETURN
-0x0E 0x000E #SHIFT OUT
-0x0F 0x000F #SHIFT IN
-0x10 0x0010 #DATA LINK ESCAPE
-0x11 0x0011 #DEVICE CONTROL ONE
-0x12 0x0012 #DEVICE CONTROL TWO
-0x13 0x0013 #DEVICE CONTROL THREE
-0x14 0x0014 #DEVICE CONTROL FOUR
-0x15 0x0015 #NEGATIVE ACKNOWLEDGE
-0x16 0x0016 #SYNCHRONOUS IDLE
-0x17 0x0017 #END OF TRANSMISSION BLOCK
-0x18 0x0018 #CANCEL
-0x19 0x0019 #END OF MEDIUM
-0x1A 0x001A #SUBSTITUTE
-0x1B 0x001B #ESCAPE
-0x1C 0x001C #FILE SEPARATOR
-0x1D 0x001D #GROUP SEPARATOR
-0x1E 0x001E #RECORD SEPARATOR
-0x1F 0x001F #UNIT SEPARATOR
-0x20 0x0020 #SPACE
-0x21 0x0021 #EXCLAMATION MARK
-0x22 0x0022 #QUOTATION MARK
-0x23 0x0023 #NUMBER SIGN
-0x24 0x0024 #DOLLAR SIGN
-0x25 0x0025 #PERCENT SIGN
-0x26 0x0026 #AMPERSAND
-0x27 0x0027 #APOSTROPHE
-0x28 0x0028 #LEFT PARENTHESIS
-0x29 0x0029 #RIGHT PARENTHESIS
-0x2A 0x002A #ASTERISK
-0x2B 0x002B #PLUS SIGN
-0x2C 0x002C #COMMA
-0x2D 0x002D #HYPHEN-MINUS
-0x2E 0x002E #FULL STOP
-0x2F 0x002F #SOLIDUS
-0x30 0x0030 #DIGIT ZERO
-0x31 0x0031 #DIGIT ONE
-0x32 0x0032 #DIGIT TWO
-0x33 0x0033 #DIGIT THREE
-0x34 0x0034 #DIGIT FOUR
-0x35 0x0035 #DIGIT FIVE
-0x36 0x0036 #DIGIT SIX
-0x37 0x0037 #DIGIT SEVEN
-0x38 0x0038 #DIGIT EIGHT
-0x39 0x0039 #DIGIT NINE
-0x3A 0x003A #COLON
-0x3B 0x003B #SEMICOLON
-0x3C 0x003C #LESS-THAN SIGN
-0x3D 0x003D #EQUALS SIGN
-0x3E 0x003E #GREATER-THAN SIGN
-0x3F 0x003F #QUESTION MARK
-0x40 0x0040 #COMMERCIAL AT
-0x41 0x0041 #LATIN CAPITAL LETTER A
-0x42 0x0042 #LATIN CAPITAL LETTER B
-0x43 0x0043 #LATIN CAPITAL LETTER C
-0x44 0x0044 #LATIN CAPITAL LETTER D
-0x45 0x0045 #LATIN CAPITAL LETTER E
-0x46 0x0046 #LATIN CAPITAL LETTER F
-0x47 0x0047 #LATIN CAPITAL LETTER G
-0x48 0x0048 #LATIN CAPITAL LETTER H
-0x49 0x0049 #LATIN CAPITAL LETTER I
-0x4A 0x004A #LATIN CAPITAL LETTER J
-0x4B 0x004B #LATIN CAPITAL LETTER K
-0x4C 0x004C #LATIN CAPITAL LETTER L
-0x4D 0x004D #LATIN CAPITAL LETTER M
-0x4E 0x004E #LATIN CAPITAL LETTER N
-0x4F 0x004F #LATIN CAPITAL LETTER O
-0x50 0x0050 #LATIN CAPITAL LETTER P
-0x51 0x0051 #LATIN CAPITAL LETTER Q
-0x52 0x0052 #LATIN CAPITAL LETTER R
-0x53 0x0053 #LATIN CAPITAL LETTER S
-0x54 0x0054 #LATIN CAPITAL LETTER T
-0x55 0x0055 #LATIN CAPITAL LETTER U
-0x56 0x0056 #LATIN CAPITAL LETTER V
-0x57 0x0057 #LATIN CAPITAL LETTER W
-0x58 0x0058 #LATIN CAPITAL LETTER X
-0x59 0x0059 #LATIN CAPITAL LETTER Y
-0x5A 0x005A #LATIN CAPITAL LETTER Z
-0x5B 0x005B #LEFT SQUARE BRACKET
-0x5C 0x005C #REVERSE SOLIDUS
-0x5D 0x005D #RIGHT SQUARE BRACKET
-0x5E 0x005E #CIRCUMFLEX ACCENT
-0x5F 0x005F #LOW LINE
-0x60 0x0060 #GRAVE ACCENT
-0x61 0x0061 #LATIN SMALL LETTER A
-0x62 0x0062 #LATIN SMALL LETTER B
-0x63 0x0063 #LATIN SMALL LETTER C
-0x64 0x0064 #LATIN SMALL LETTER D
-0x65 0x0065 #LATIN SMALL LETTER E
-0x66 0x0066 #LATIN SMALL LETTER F
-0x67 0x0067 #LATIN SMALL LETTER G
-0x68 0x0068 #LATIN SMALL LETTER H
-0x69 0x0069 #LATIN SMALL LETTER I
-0x6A 0x006A #LATIN SMALL LETTER J
-0x6B 0x006B #LATIN SMALL LETTER K
-0x6C 0x006C #LATIN SMALL LETTER L
-0x6D 0x006D #LATIN SMALL LETTER M
-0x6E 0x006E #LATIN SMALL LETTER N
-0x6F 0x006F #LATIN SMALL LETTER O
-0x70 0x0070 #LATIN SMALL LETTER P
-0x71 0x0071 #LATIN SMALL LETTER Q
-0x72 0x0072 #LATIN SMALL LETTER R
-0x73 0x0073 #LATIN SMALL LETTER S
-0x74 0x0074 #LATIN SMALL LETTER T
-0x75 0x0075 #LATIN SMALL LETTER U
-0x76 0x0076 #LATIN SMALL LETTER V
-0x77 0x0077 #LATIN SMALL LETTER W
-0x78 0x0078 #LATIN SMALL LETTER X
-0x79 0x0079 #LATIN SMALL LETTER Y
-0x7A 0x007A #LATIN SMALL LETTER Z
-0x7B 0x007B #LEFT CURLY BRACKET
-0x7C 0x007C #VERTICAL LINE
-0x7D 0x007D #RIGHT CURLY BRACKET
-0x7E 0x007E #TILDE
-0x7F 0x007F #DELETE
-0x80 0x20AC #EURO SIGN
-0x81 #UNDEFINED
-0x82 0x201A #SINGLE LOW-9 QUOTATION MARK
-0x83 0x0192 #LATIN SMALL LETTER F WITH HOOK
-0x84 0x201E #DOUBLE LOW-9 QUOTATION MARK
-0x85 0x2026 #HORIZONTAL ELLIPSIS
-0x86 0x2020 #DAGGER
-0x87 0x2021 #DOUBLE DAGGER
-0x88 0x02C6 #MODIFIER LETTER CIRCUMFLEX ACCENT
-0x89 0x2030 #PER MILLE SIGN
-0x8A 0x0160 #LATIN CAPITAL LETTER S WITH CARON
-0x8B 0x2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-0x8C 0x0152 #LATIN CAPITAL LIGATURE OE
-0x8D #UNDEFINED
-0x8E 0x017D #LATIN CAPITAL LETTER Z WITH CARON
-0x8F #UNDEFINED
-0x90 #UNDEFINED
-0x91 0x2018 #LEFT SINGLE QUOTATION MARK
-0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
-0x93 0x201C #LEFT DOUBLE QUOTATION MARK
-0x94 0x201D #RIGHT DOUBLE QUOTATION MARK
-0x95 0x2022 #BULLET
-0x96 0x2013 #EN DASH
-0x97 0x2014 #EM DASH
-0x98 0x02DC #SMALL TILDE
-0x99 0x2122 #TRADE MARK SIGN
-0x9A 0x0161 #LATIN SMALL LETTER S WITH CARON
-0x9B 0x203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-0x9C 0x0153 #LATIN SMALL LIGATURE OE
-0x9D #UNDEFINED
-0x9E 0x017E #LATIN SMALL LETTER Z WITH CARON
-0x9F 0x0178 #LATIN CAPITAL LETTER Y WITH DIAERESIS
-0xA0 0x00A0 #NO-BREAK SPACE
-0xA1 0x00A1 #INVERTED EXCLAMATION MARK
-0xA2 0x00A2 #CENT SIGN
-0xA3 0x00A3 #POUND SIGN
-0xA4 0x00A4 #CURRENCY SIGN
-0xA5 0x00A5 #YEN SIGN
-0xA6 0x00A6 #BROKEN BAR
-0xA7 0x00A7 #SECTION SIGN
-0xA8 0x00A8 #DIAERESIS
-0xA9 0x00A9 #COPYRIGHT SIGN
-0xAA 0x00AA #FEMININE ORDINAL INDICATOR
-0xAB 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xAC 0x00AC #NOT SIGN
-0xAD 0x00AD #SOFT HYPHEN
-0xAE 0x00AE #REGISTERED SIGN
-0xAF 0x00AF #MACRON
-0xB0 0x00B0 #DEGREE SIGN
-0xB1 0x00B1 #PLUS-MINUS SIGN
-0xB2 0x00B2 #SUPERSCRIPT TWO
-0xB3 0x00B3 #SUPERSCRIPT THREE
-0xB4 0x00B4 #ACUTE ACCENT
-0xB5 0x00B5 #MICRO SIGN
-0xB6 0x00B6 #PILCROW SIGN
-0xB7 0x00B7 #MIDDLE DOT
-0xB8 0x00B8 #CEDILLA
-0xB9 0x00B9 #SUPERSCRIPT ONE
-0xBA 0x00BA #MASCULINE ORDINAL INDICATOR
-0xBB 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xBC 0x00BC #VULGAR FRACTION ONE QUARTER
-0xBD 0x00BD #VULGAR FRACTION ONE HALF
-0xBE 0x00BE #VULGAR FRACTION THREE QUARTERS
-0xBF 0x00BF #INVERTED QUESTION MARK
-0xC0 0x00C0 #LATIN CAPITAL LETTER A WITH GRAVE
-0xC1 0x00C1 #LATIN CAPITAL LETTER A WITH ACUTE
-0xC2 0x00C2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-0xC3 0x00C3 #LATIN CAPITAL LETTER A WITH TILDE
-0xC4 0x00C4 #LATIN CAPITAL LETTER A WITH DIAERESIS
-0xC5 0x00C5 #LATIN CAPITAL LETTER A WITH RING ABOVE
-0xC6 0x00C6 #LATIN CAPITAL LETTER AE
-0xC7 0x00C7 #LATIN CAPITAL LETTER C WITH CEDILLA
-0xC8 0x00C8 #LATIN CAPITAL LETTER E WITH GRAVE
-0xC9 0x00C9 #LATIN CAPITAL LETTER E WITH ACUTE
-0xCA 0x00CA #LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-0xCB 0x00CB #LATIN CAPITAL LETTER E WITH DIAERESIS
-0xCC 0x00CC #LATIN CAPITAL LETTER I WITH GRAVE
-0xCD 0x00CD #LATIN CAPITAL LETTER I WITH ACUTE
-0xCE 0x00CE #LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-0xCF 0x00CF #LATIN CAPITAL LETTER I WITH DIAERESIS
-0xD0 0x00D0 #LATIN CAPITAL LETTER ETH
-0xD1 0x00D1 #LATIN CAPITAL LETTER N WITH TILDE
-0xD2 0x00D2 #LATIN CAPITAL LETTER O WITH GRAVE
-0xD3 0x00D3 #LATIN CAPITAL LETTER O WITH ACUTE
-0xD4 0x00D4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-0xD5 0x00D5 #LATIN CAPITAL LETTER O WITH TILDE
-0xD6 0x00D6 #LATIN CAPITAL LETTER O WITH DIAERESIS
-0xD7 0x00D7 #MULTIPLICATION SIGN
-0xD8 0x00D8 #LATIN CAPITAL LETTER O WITH STROKE
-0xD9 0x00D9 #LATIN CAPITAL LETTER U WITH GRAVE
-0xDA 0x00DA #LATIN CAPITAL LETTER U WITH ACUTE
-0xDB 0x00DB #LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-0xDC 0x00DC #LATIN CAPITAL LETTER U WITH DIAERESIS
-0xDD 0x00DD #LATIN CAPITAL LETTER Y WITH ACUTE
-0xDE 0x00DE #LATIN CAPITAL LETTER THORN
-0xDF 0x00DF #LATIN SMALL LETTER SHARP S
-0xE0 0x00E0 #LATIN SMALL LETTER A WITH GRAVE
-0xE1 0x00E1 #LATIN SMALL LETTER A WITH ACUTE
-0xE2 0x00E2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
-0xE3 0x00E3 #LATIN SMALL LETTER A WITH TILDE
-0xE4 0x00E4 #LATIN SMALL LETTER A WITH DIAERESIS
-0xE5 0x00E5 #LATIN SMALL LETTER A WITH RING ABOVE
-0xE6 0x00E6 #LATIN SMALL LETTER AE
-0xE7 0x00E7 #LATIN SMALL LETTER C WITH CEDILLA
-0xE8 0x00E8 #LATIN SMALL LETTER E WITH GRAVE
-0xE9 0x00E9 #LATIN SMALL LETTER E WITH ACUTE
-0xEA 0x00EA #LATIN SMALL LETTER E WITH CIRCUMFLEX
-0xEB 0x00EB #LATIN SMALL LETTER E WITH DIAERESIS
-0xEC 0x00EC #LATIN SMALL LETTER I WITH GRAVE
-0xED 0x00ED #LATIN SMALL LETTER I WITH ACUTE
-0xEE 0x00EE #LATIN SMALL LETTER I WITH CIRCUMFLEX
-0xEF 0x00EF #LATIN SMALL LETTER I WITH DIAERESIS
-0xF0 0x00F0 #LATIN SMALL LETTER ETH
-0xF1 0x00F1 #LATIN SMALL LETTER N WITH TILDE
-0xF2 0x00F2 #LATIN SMALL LETTER O WITH GRAVE
-0xF3 0x00F3 #LATIN SMALL LETTER O WITH ACUTE
-0xF4 0x00F4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
-0xF5 0x00F5 #LATIN SMALL LETTER O WITH TILDE
-0xF6 0x00F6 #LATIN SMALL LETTER O WITH DIAERESIS
-0xF7 0x00F7 #DIVISION SIGN
-0xF8 0x00F8 #LATIN SMALL LETTER O WITH STROKE
-0xF9 0x00F9 #LATIN SMALL LETTER U WITH GRAVE
-0xFA 0x00FA #LATIN SMALL LETTER U WITH ACUTE
-0xFB 0x00FB #LATIN SMALL LETTER U WITH CIRCUMFLEX
-0xFC 0x00FC #LATIN SMALL LETTER U WITH DIAERESIS
-0xFD 0x00FD #LATIN SMALL LETTER Y WITH ACUTE
-0xFE 0x00FE #LATIN SMALL LETTER THORN
-0xFF 0x00FF #LATIN SMALL LETTER Y WITH DIAERESIS
diff --git a/program/lib/encoding/CP1253.map b/program/lib/encoding/CP1253.map
deleted file mode 100644
index 2ba51a0c8..000000000
--- a/program/lib/encoding/CP1253.map
+++ /dev/null
@@ -1,274 +0,0 @@
-#
-# Name: cp1253 to Unicode table
-# Unicode version: 2.0
-# Table version: 2.01
-# Table format: Format A
-# Date: 04/15/98
-#
-# Contact: cpxlate@microsoft.com
-#
-# General notes: none
-#
-# Format: Three tab-separated columns
-# Column #1 is the cp1253 code (in hex)
-# Column #2 is the Unicode (in hex as 0xXXXX)
-# Column #3 is the Unicode name (follows a comment sign, '#')
-#
-# The entries are in cp1253 order
-#
-0x00 0x0000 #NULL
-0x01 0x0001 #START OF HEADING
-0x02 0x0002 #START OF TEXT
-0x03 0x0003 #END OF TEXT
-0x04 0x0004 #END OF TRANSMISSION
-0x05 0x0005 #ENQUIRY
-0x06 0x0006 #ACKNOWLEDGE
-0x07 0x0007 #BELL
-0x08 0x0008 #BACKSPACE
-0x09 0x0009 #HORIZONTAL TABULATION
-0x0A 0x000A #LINE FEED
-0x0B 0x000B #VERTICAL TABULATION
-0x0C 0x000C #FORM FEED
-0x0D 0x000D #CARRIAGE RETURN
-0x0E 0x000E #SHIFT OUT
-0x0F 0x000F #SHIFT IN
-0x10 0x0010 #DATA LINK ESCAPE
-0x11 0x0011 #DEVICE CONTROL ONE
-0x12 0x0012 #DEVICE CONTROL TWO
-0x13 0x0013 #DEVICE CONTROL THREE
-0x14 0x0014 #DEVICE CONTROL FOUR
-0x15 0x0015 #NEGATIVE ACKNOWLEDGE
-0x16 0x0016 #SYNCHRONOUS IDLE
-0x17 0x0017 #END OF TRANSMISSION BLOCK
-0x18 0x0018 #CANCEL
-0x19 0x0019 #END OF MEDIUM
-0x1A 0x001A #SUBSTITUTE
-0x1B 0x001B #ESCAPE
-0x1C 0x001C #FILE SEPARATOR
-0x1D 0x001D #GROUP SEPARATOR
-0x1E 0x001E #RECORD SEPARATOR
-0x1F 0x001F #UNIT SEPARATOR
-0x20 0x0020 #SPACE
-0x21 0x0021 #EXCLAMATION MARK
-0x22 0x0022 #QUOTATION MARK
-0x23 0x0023 #NUMBER SIGN
-0x24 0x0024 #DOLLAR SIGN
-0x25 0x0025 #PERCENT SIGN
-0x26 0x0026 #AMPERSAND
-0x27 0x0027 #APOSTROPHE
-0x28 0x0028 #LEFT PARENTHESIS
-0x29 0x0029 #RIGHT PARENTHESIS
-0x2A 0x002A #ASTERISK
-0x2B 0x002B #PLUS SIGN
-0x2C 0x002C #COMMA
-0x2D 0x002D #HYPHEN-MINUS
-0x2E 0x002E #FULL STOP
-0x2F 0x002F #SOLIDUS
-0x30 0x0030 #DIGIT ZERO
-0x31 0x0031 #DIGIT ONE
-0x32 0x0032 #DIGIT TWO
-0x33 0x0033 #DIGIT THREE
-0x34 0x0034 #DIGIT FOUR
-0x35 0x0035 #DIGIT FIVE
-0x36 0x0036 #DIGIT SIX
-0x37 0x0037 #DIGIT SEVEN
-0x38 0x0038 #DIGIT EIGHT
-0x39 0x0039 #DIGIT NINE
-0x3A 0x003A #COLON
-0x3B 0x003B #SEMICOLON
-0x3C 0x003C #LESS-THAN SIGN
-0x3D 0x003D #EQUALS SIGN
-0x3E 0x003E #GREATER-THAN SIGN
-0x3F 0x003F #QUESTION MARK
-0x40 0x0040 #COMMERCIAL AT
-0x41 0x0041 #LATIN CAPITAL LETTER A
-0x42 0x0042 #LATIN CAPITAL LETTER B
-0x43 0x0043 #LATIN CAPITAL LETTER C
-0x44 0x0044 #LATIN CAPITAL LETTER D
-0x45 0x0045 #LATIN CAPITAL LETTER E
-0x46 0x0046 #LATIN CAPITAL LETTER F
-0x47 0x0047 #LATIN CAPITAL LETTER G
-0x48 0x0048 #LATIN CAPITAL LETTER H
-0x49 0x0049 #LATIN CAPITAL LETTER I
-0x4A 0x004A #LATIN CAPITAL LETTER J
-0x4B 0x004B #LATIN CAPITAL LETTER K
-0x4C 0x004C #LATIN CAPITAL LETTER L
-0x4D 0x004D #LATIN CAPITAL LETTER M
-0x4E 0x004E #LATIN CAPITAL LETTER N
-0x4F 0x004F #LATIN CAPITAL LETTER O
-0x50 0x0050 #LATIN CAPITAL LETTER P
-0x51 0x0051 #LATIN CAPITAL LETTER Q
-0x52 0x0052 #LATIN CAPITAL LETTER R
-0x53 0x0053 #LATIN CAPITAL LETTER S
-0x54 0x0054 #LATIN CAPITAL LETTER T
-0x55 0x0055 #LATIN CAPITAL LETTER U
-0x56 0x0056 #LATIN CAPITAL LETTER V
-0x57 0x0057 #LATIN CAPITAL LETTER W
-0x58 0x0058 #LATIN CAPITAL LETTER X
-0x59 0x0059 #LATIN CAPITAL LETTER Y
-0x5A 0x005A #LATIN CAPITAL LETTER Z
-0x5B 0x005B #LEFT SQUARE BRACKET
-0x5C 0x005C #REVERSE SOLIDUS
-0x5D 0x005D #RIGHT SQUARE BRACKET
-0x5E 0x005E #CIRCUMFLEX ACCENT
-0x5F 0x005F #LOW LINE
-0x60 0x0060 #GRAVE ACCENT
-0x61 0x0061 #LATIN SMALL LETTER A
-0x62 0x0062 #LATIN SMALL LETTER B
-0x63 0x0063 #LATIN SMALL LETTER C
-0x64 0x0064 #LATIN SMALL LETTER D
-0x65 0x0065 #LATIN SMALL LETTER E
-0x66 0x0066 #LATIN SMALL LETTER F
-0x67 0x0067 #LATIN SMALL LETTER G
-0x68 0x0068 #LATIN SMALL LETTER H
-0x69 0x0069 #LATIN SMALL LETTER I
-0x6A 0x006A #LATIN SMALL LETTER J
-0x6B 0x006B #LATIN SMALL LETTER K
-0x6C 0x006C #LATIN SMALL LETTER L
-0x6D 0x006D #LATIN SMALL LETTER M
-0x6E 0x006E #LATIN SMALL LETTER N
-0x6F 0x006F #LATIN SMALL LETTER O
-0x70 0x0070 #LATIN SMALL LETTER P
-0x71 0x0071 #LATIN SMALL LETTER Q
-0x72 0x0072 #LATIN SMALL LETTER R
-0x73 0x0073 #LATIN SMALL LETTER S
-0x74 0x0074 #LATIN SMALL LETTER T
-0x75 0x0075 #LATIN SMALL LETTER U
-0x76 0x0076 #LATIN SMALL LETTER V
-0x77 0x0077 #LATIN SMALL LETTER W
-0x78 0x0078 #LATIN SMALL LETTER X
-0x79 0x0079 #LATIN SMALL LETTER Y
-0x7A 0x007A #LATIN SMALL LETTER Z
-0x7B 0x007B #LEFT CURLY BRACKET
-0x7C 0x007C #VERTICAL LINE
-0x7D 0x007D #RIGHT CURLY BRACKET
-0x7E 0x007E #TILDE
-0x7F 0x007F #DELETE
-0x80 0x20AC #EURO SIGN
-0x81 #UNDEFINED
-0x82 0x201A #SINGLE LOW-9 QUOTATION MARK
-0x83 0x0192 #LATIN SMALL LETTER F WITH HOOK
-0x84 0x201E #DOUBLE LOW-9 QUOTATION MARK
-0x85 0x2026 #HORIZONTAL ELLIPSIS
-0x86 0x2020 #DAGGER
-0x87 0x2021 #DOUBLE DAGGER
-0x88 #UNDEFINED
-0x89 0x2030 #PER MILLE SIGN
-0x8A #UNDEFINED
-0x8B 0x2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-0x8C #UNDEFINED
-0x8D #UNDEFINED
-0x8E #UNDEFINED
-0x8F #UNDEFINED
-0x90 #UNDEFINED
-0x91 0x2018 #LEFT SINGLE QUOTATION MARK
-0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
-0x93 0x201C #LEFT DOUBLE QUOTATION MARK
-0x94 0x201D #RIGHT DOUBLE QUOTATION MARK
-0x95 0x2022 #BULLET
-0x96 0x2013 #EN DASH
-0x97 0x2014 #EM DASH
-0x98 #UNDEFINED
-0x99 0x2122 #TRADE MARK SIGN
-0x9A #UNDEFINED
-0x9B 0x203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-0x9C #UNDEFINED
-0x9D #UNDEFINED
-0x9E #UNDEFINED
-0x9F #UNDEFINED
-0xA0 0x00A0 #NO-BREAK SPACE
-0xA1 0x0385 #GREEK DIALYTIKA TONOS
-0xA2 0x0386 #GREEK CAPITAL LETTER ALPHA WITH TONOS
-0xA3 0x00A3 #POUND SIGN
-0xA4 0x00A4 #CURRENCY SIGN
-0xA5 0x00A5 #YEN SIGN
-0xA6 0x00A6 #BROKEN BAR
-0xA7 0x00A7 #SECTION SIGN
-0xA8 0x00A8 #DIAERESIS
-0xA9 0x00A9 #COPYRIGHT SIGN
-0xAA #UNDEFINED
-0xAB 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xAC 0x00AC #NOT SIGN
-0xAD 0x00AD #SOFT HYPHEN
-0xAE 0x00AE #REGISTERED SIGN
-0xAF 0x2015 #HORIZONTAL BAR
-0xB0 0x00B0 #DEGREE SIGN
-0xB1 0x00B1 #PLUS-MINUS SIGN
-0xB2 0x00B2 #SUPERSCRIPT TWO
-0xB3 0x00B3 #SUPERSCRIPT THREE
-0xB4 0x0384 #GREEK TONOS
-0xB5 0x00B5 #MICRO SIGN
-0xB6 0x00B6 #PILCROW SIGN
-0xB7 0x00B7 #MIDDLE DOT
-0xB8 0x0388 #GREEK CAPITAL LETTER EPSILON WITH TONOS
-0xB9 0x0389 #GREEK CAPITAL LETTER ETA WITH TONOS
-0xBA 0x038A #GREEK CAPITAL LETTER IOTA WITH TONOS
-0xBB 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xBC 0x038C #GREEK CAPITAL LETTER OMICRON WITH TONOS
-0xBD 0x00BD #VULGAR FRACTION ONE HALF
-0xBE 0x038E #GREEK CAPITAL LETTER UPSILON WITH TONOS
-0xBF 0x038F #GREEK CAPITAL LETTER OMEGA WITH TONOS
-0xC0 0x0390 #GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-0xC1 0x0391 #GREEK CAPITAL LETTER ALPHA
-0xC2 0x0392 #GREEK CAPITAL LETTER BETA
-0xC3 0x0393 #GREEK CAPITAL LETTER GAMMA
-0xC4 0x0394 #GREEK CAPITAL LETTER DELTA
-0xC5 0x0395 #GREEK CAPITAL LETTER EPSILON
-0xC6 0x0396 #GREEK CAPITAL LETTER ZETA
-0xC7 0x0397 #GREEK CAPITAL LETTER ETA
-0xC8 0x0398 #GREEK CAPITAL LETTER THETA
-0xC9 0x0399 #GREEK CAPITAL LETTER IOTA
-0xCA 0x039A #GREEK CAPITAL LETTER KAPPA
-0xCB 0x039B #GREEK CAPITAL LETTER LAMDA
-0xCC 0x039C #GREEK CAPITAL LETTER MU
-0xCD 0x039D #GREEK CAPITAL LETTER NU
-0xCE 0x039E #GREEK CAPITAL LETTER XI
-0xCF 0x039F #GREEK CAPITAL LETTER OMICRON
-0xD0 0x03A0 #GREEK CAPITAL LETTER PI
-0xD1 0x03A1 #GREEK CAPITAL LETTER RHO
-0xD2 #UNDEFINED
-0xD3 0x03A3 #GREEK CAPITAL LETTER SIGMA
-0xD4 0x03A4 #GREEK CAPITAL LETTER TAU
-0xD5 0x03A5 #GREEK CAPITAL LETTER UPSILON
-0xD6 0x03A6 #GREEK CAPITAL LETTER PHI
-0xD7 0x03A7 #GREEK CAPITAL LETTER CHI
-0xD8 0x03A8 #GREEK CAPITAL LETTER PSI
-0xD9 0x03A9 #GREEK CAPITAL LETTER OMEGA
-0xDA 0x03AA #GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-0xDB 0x03AB #GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-0xDC 0x03AC #GREEK SMALL LETTER ALPHA WITH TONOS
-0xDD 0x03AD #GREEK SMALL LETTER EPSILON WITH TONOS
-0xDE 0x03AE #GREEK SMALL LETTER ETA WITH TONOS
-0xDF 0x03AF #GREEK SMALL LETTER IOTA WITH TONOS
-0xE0 0x03B0 #GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-0xE1 0x03B1 #GREEK SMALL LETTER ALPHA
-0xE2 0x03B2 #GREEK SMALL LETTER BETA
-0xE3 0x03B3 #GREEK SMALL LETTER GAMMA
-0xE4 0x03B4 #GREEK SMALL LETTER DELTA
-0xE5 0x03B5 #GREEK SMALL LETTER EPSILON
-0xE6 0x03B6 #GREEK SMALL LETTER ZETA
-0xE7 0x03B7 #GREEK SMALL LETTER ETA
-0xE8 0x03B8 #GREEK SMALL LETTER THETA
-0xE9 0x03B9 #GREEK SMALL LETTER IOTA
-0xEA 0x03BA #GREEK SMALL LETTER KAPPA
-0xEB 0x03BB #GREEK SMALL LETTER LAMDA
-0xEC 0x03BC #GREEK SMALL LETTER MU
-0xED 0x03BD #GREEK SMALL LETTER NU
-0xEE 0x03BE #GREEK SMALL LETTER XI
-0xEF 0x03BF #GREEK SMALL LETTER OMICRON
-0xF0 0x03C0 #GREEK SMALL LETTER PI
-0xF1 0x03C1 #GREEK SMALL LETTER RHO
-0xF2 0x03C2 #GREEK SMALL LETTER FINAL SIGMA
-0xF3 0x03C3 #GREEK SMALL LETTER SIGMA
-0xF4 0x03C4 #GREEK SMALL LETTER TAU
-0xF5 0x03C5 #GREEK SMALL LETTER UPSILON
-0xF6 0x03C6 #GREEK SMALL LETTER PHI
-0xF7 0x03C7 #GREEK SMALL LETTER CHI
-0xF8 0x03C8 #GREEK SMALL LETTER PSI
-0xF9 0x03C9 #GREEK SMALL LETTER OMEGA
-0xFA 0x03CA #GREEK SMALL LETTER IOTA WITH DIALYTIKA
-0xFB 0x03CB #GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-0xFC 0x03CC #GREEK SMALL LETTER OMICRON WITH TONOS
-0xFD 0x03CD #GREEK SMALL LETTER UPSILON WITH TONOS
-0xFE 0x03CE #GREEK SMALL LETTER OMEGA WITH TONOS
-0xFF #UNDEFINED
diff --git a/program/lib/encoding/CP1254.map b/program/lib/encoding/CP1254.map
deleted file mode 100644
index ca1a1ebdb..000000000
--- a/program/lib/encoding/CP1254.map
+++ /dev/null
@@ -1,274 +0,0 @@
-#
-# Name: cp1254 to Unicode table
-# Unicode version: 2.0
-# Table version: 2.01
-# Table format: Format A
-# Date: 04/15/98
-#
-# Contact: cpxlate@microsoft.com
-#
-# General notes: none
-#
-# Format: Three tab-separated columns
-# Column #1 is the cp1254 code (in hex)
-# Column #2 is the Unicode (in hex as 0xXXXX)
-# Column #3 is the Unicode name (follows a comment sign, '#')
-#
-# The entries are in cp1254 order
-#
-0x00 0x0000 #NULL
-0x01 0x0001 #START OF HEADING
-0x02 0x0002 #START OF TEXT
-0x03 0x0003 #END OF TEXT
-0x04 0x0004 #END OF TRANSMISSION
-0x05 0x0005 #ENQUIRY
-0x06 0x0006 #ACKNOWLEDGE
-0x07 0x0007 #BELL
-0x08 0x0008 #BACKSPACE
-0x09 0x0009 #HORIZONTAL TABULATION
-0x0A 0x000A #LINE FEED
-0x0B 0x000B #VERTICAL TABULATION
-0x0C 0x000C #FORM FEED
-0x0D 0x000D #CARRIAGE RETURN
-0x0E 0x000E #SHIFT OUT
-0x0F 0x000F #SHIFT IN
-0x10 0x0010 #DATA LINK ESCAPE
-0x11 0x0011 #DEVICE CONTROL ONE
-0x12 0x0012 #DEVICE CONTROL TWO
-0x13 0x0013 #DEVICE CONTROL THREE
-0x14 0x0014 #DEVICE CONTROL FOUR
-0x15 0x0015 #NEGATIVE ACKNOWLEDGE
-0x16 0x0016 #SYNCHRONOUS IDLE
-0x17 0x0017 #END OF TRANSMISSION BLOCK
-0x18 0x0018 #CANCEL
-0x19 0x0019 #END OF MEDIUM
-0x1A 0x001A #SUBSTITUTE
-0x1B 0x001B #ESCAPE
-0x1C 0x001C #FILE SEPARATOR
-0x1D 0x001D #GROUP SEPARATOR
-0x1E 0x001E #RECORD SEPARATOR
-0x1F 0x001F #UNIT SEPARATOR
-0x20 0x0020 #SPACE
-0x21 0x0021 #EXCLAMATION MARK
-0x22 0x0022 #QUOTATION MARK
-0x23 0x0023 #NUMBER SIGN
-0x24 0x0024 #DOLLAR SIGN
-0x25 0x0025 #PERCENT SIGN
-0x26 0x0026 #AMPERSAND
-0x27 0x0027 #APOSTROPHE
-0x28 0x0028 #LEFT PARENTHESIS
-0x29 0x0029 #RIGHT PARENTHESIS
-0x2A 0x002A #ASTERISK
-0x2B 0x002B #PLUS SIGN
-0x2C 0x002C #COMMA
-0x2D 0x002D #HYPHEN-MINUS
-0x2E 0x002E #FULL STOP
-0x2F 0x002F #SOLIDUS
-0x30 0x0030 #DIGIT ZERO
-0x31 0x0031 #DIGIT ONE
-0x32 0x0032 #DIGIT TWO
-0x33 0x0033 #DIGIT THREE
-0x34 0x0034 #DIGIT FOUR
-0x35 0x0035 #DIGIT FIVE
-0x36 0x0036 #DIGIT SIX
-0x37 0x0037 #DIGIT SEVEN
-0x38 0x0038 #DIGIT EIGHT
-0x39 0x0039 #DIGIT NINE
-0x3A 0x003A #COLON
-0x3B 0x003B #SEMICOLON
-0x3C 0x003C #LESS-THAN SIGN
-0x3D 0x003D #EQUALS SIGN
-0x3E 0x003E #GREATER-THAN SIGN
-0x3F 0x003F #QUESTION MARK
-0x40 0x0040 #COMMERCIAL AT
-0x41 0x0041 #LATIN CAPITAL LETTER A
-0x42 0x0042 #LATIN CAPITAL LETTER B
-0x43 0x0043 #LATIN CAPITAL LETTER C
-0x44 0x0044 #LATIN CAPITAL LETTER D
-0x45 0x0045 #LATIN CAPITAL LETTER E
-0x46 0x0046 #LATIN CAPITAL LETTER F
-0x47 0x0047 #LATIN CAPITAL LETTER G
-0x48 0x0048 #LATIN CAPITAL LETTER H
-0x49 0x0049 #LATIN CAPITAL LETTER I
-0x4A 0x004A #LATIN CAPITAL LETTER J
-0x4B 0x004B #LATIN CAPITAL LETTER K
-0x4C 0x004C #LATIN CAPITAL LETTER L
-0x4D 0x004D #LATIN CAPITAL LETTER M
-0x4E 0x004E #LATIN CAPITAL LETTER N
-0x4F 0x004F #LATIN CAPITAL LETTER O
-0x50 0x0050 #LATIN CAPITAL LETTER P
-0x51 0x0051 #LATIN CAPITAL LETTER Q
-0x52 0x0052 #LATIN CAPITAL LETTER R
-0x53 0x0053 #LATIN CAPITAL LETTER S
-0x54 0x0054 #LATIN CAPITAL LETTER T
-0x55 0x0055 #LATIN CAPITAL LETTER U
-0x56 0x0056 #LATIN CAPITAL LETTER V
-0x57 0x0057 #LATIN CAPITAL LETTER W
-0x58 0x0058 #LATIN CAPITAL LETTER X
-0x59 0x0059 #LATIN CAPITAL LETTER Y
-0x5A 0x005A #LATIN CAPITAL LETTER Z
-0x5B 0x005B #LEFT SQUARE BRACKET
-0x5C 0x005C #REVERSE SOLIDUS
-0x5D 0x005D #RIGHT SQUARE BRACKET
-0x5E 0x005E #CIRCUMFLEX ACCENT
-0x5F 0x005F #LOW LINE
-0x60 0x0060 #GRAVE ACCENT
-0x61 0x0061 #LATIN SMALL LETTER A
-0x62 0x0062 #LATIN SMALL LETTER B
-0x63 0x0063 #LATIN SMALL LETTER C
-0x64 0x0064 #LATIN SMALL LETTER D
-0x65 0x0065 #LATIN SMALL LETTER E
-0x66 0x0066 #LATIN SMALL LETTER F
-0x67 0x0067 #LATIN SMALL LETTER G
-0x68 0x0068 #LATIN SMALL LETTER H
-0x69 0x0069 #LATIN SMALL LETTER I
-0x6A 0x006A #LATIN SMALL LETTER J
-0x6B 0x006B #LATIN SMALL LETTER K
-0x6C 0x006C #LATIN SMALL LETTER L
-0x6D 0x006D #LATIN SMALL LETTER M
-0x6E 0x006E #LATIN SMALL LETTER N
-0x6F 0x006F #LATIN SMALL LETTER O
-0x70 0x0070 #LATIN SMALL LETTER P
-0x71 0x0071 #LATIN SMALL LETTER Q
-0x72 0x0072 #LATIN SMALL LETTER R
-0x73 0x0073 #LATIN SMALL LETTER S
-0x74 0x0074 #LATIN SMALL LETTER T
-0x75 0x0075 #LATIN SMALL LETTER U
-0x76 0x0076 #LATIN SMALL LETTER V
-0x77 0x0077 #LATIN SMALL LETTER W
-0x78 0x0078 #LATIN SMALL LETTER X
-0x79 0x0079 #LATIN SMALL LETTER Y
-0x7A 0x007A #LATIN SMALL LETTER Z
-0x7B 0x007B #LEFT CURLY BRACKET
-0x7C 0x007C #VERTICAL LINE
-0x7D 0x007D #RIGHT CURLY BRACKET
-0x7E 0x007E #TILDE
-0x7F 0x007F #DELETE
-0x80 0x20AC #EURO SIGN
-0x81 #UNDEFINED
-0x82 0x201A #SINGLE LOW-9 QUOTATION MARK
-0x83 0x0192 #LATIN SMALL LETTER F WITH HOOK
-0x84 0x201E #DOUBLE LOW-9 QUOTATION MARK
-0x85 0x2026 #HORIZONTAL ELLIPSIS
-0x86 0x2020 #DAGGER
-0x87 0x2021 #DOUBLE DAGGER
-0x88 0x02C6 #MODIFIER LETTER CIRCUMFLEX ACCENT
-0x89 0x2030 #PER MILLE SIGN
-0x8A 0x0160 #LATIN CAPITAL LETTER S WITH CARON
-0x8B 0x2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-0x8C 0x0152 #LATIN CAPITAL LIGATURE OE
-0x8D #UNDEFINED
-0x8E #UNDEFINED
-0x8F #UNDEFINED
-0x90 #UNDEFINED
-0x91 0x2018 #LEFT SINGLE QUOTATION MARK
-0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
-0x93 0x201C #LEFT DOUBLE QUOTATION MARK
-0x94 0x201D #RIGHT DOUBLE QUOTATION MARK
-0x95 0x2022 #BULLET
-0x96 0x2013 #EN DASH
-0x97 0x2014 #EM DASH
-0x98 0x02DC #SMALL TILDE
-0x99 0x2122 #TRADE MARK SIGN
-0x9A 0x0161 #LATIN SMALL LETTER S WITH CARON
-0x9B 0x203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-0x9C 0x0153 #LATIN SMALL LIGATURE OE
-0x9D #UNDEFINED
-0x9E #UNDEFINED
-0x9F 0x0178 #LATIN CAPITAL LETTER Y WITH DIAERESIS
-0xA0 0x00A0 #NO-BREAK SPACE
-0xA1 0x00A1 #INVERTED EXCLAMATION MARK
-0xA2 0x00A2 #CENT SIGN
-0xA3 0x00A3 #POUND SIGN
-0xA4 0x00A4 #CURRENCY SIGN
-0xA5 0x00A5 #YEN SIGN
-0xA6 0x00A6 #BROKEN BAR
-0xA7 0x00A7 #SECTION SIGN
-0xA8 0x00A8 #DIAERESIS
-0xA9 0x00A9 #COPYRIGHT SIGN
-0xAA 0x00AA #FEMININE ORDINAL INDICATOR
-0xAB 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xAC 0x00AC #NOT SIGN
-0xAD 0x00AD #SOFT HYPHEN
-0xAE 0x00AE #REGISTERED SIGN
-0xAF 0x00AF #MACRON
-0xB0 0x00B0 #DEGREE SIGN
-0xB1 0x00B1 #PLUS-MINUS SIGN
-0xB2 0x00B2 #SUPERSCRIPT TWO
-0xB3 0x00B3 #SUPERSCRIPT THREE
-0xB4 0x00B4 #ACUTE ACCENT
-0xB5 0x00B5 #MICRO SIGN
-0xB6 0x00B6 #PILCROW SIGN
-0xB7 0x00B7 #MIDDLE DOT
-0xB8 0x00B8 #CEDILLA
-0xB9 0x00B9 #SUPERSCRIPT ONE
-0xBA 0x00BA #MASCULINE ORDINAL INDICATOR
-0xBB 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xBC 0x00BC #VULGAR FRACTION ONE QUARTER
-0xBD 0x00BD #VULGAR FRACTION ONE HALF
-0xBE 0x00BE #VULGAR FRACTION THREE QUARTERS
-0xBF 0x00BF #INVERTED QUESTION MARK
-0xC0 0x00C0 #LATIN CAPITAL LETTER A WITH GRAVE
-0xC1 0x00C1 #LATIN CAPITAL LETTER A WITH ACUTE
-0xC2 0x00C2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-0xC3 0x00C3 #LATIN CAPITAL LETTER A WITH TILDE
-0xC4 0x00C4 #LATIN CAPITAL LETTER A WITH DIAERESIS
-0xC5 0x00C5 #LATIN CAPITAL LETTER A WITH RING ABOVE
-0xC6 0x00C6 #LATIN CAPITAL LETTER AE
-0xC7 0x00C7 #LATIN CAPITAL LETTER C WITH CEDILLA
-0xC8 0x00C8 #LATIN CAPITAL LETTER E WITH GRAVE
-0xC9 0x00C9 #LATIN CAPITAL LETTER E WITH ACUTE
-0xCA 0x00CA #LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-0xCB 0x00CB #LATIN CAPITAL LETTER E WITH DIAERESIS
-0xCC 0x00CC #LATIN CAPITAL LETTER I WITH GRAVE
-0xCD 0x00CD #LATIN CAPITAL LETTER I WITH ACUTE
-0xCE 0x00CE #LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-0xCF 0x00CF #LATIN CAPITAL LETTER I WITH DIAERESIS
-0xD0 0x011E #LATIN CAPITAL LETTER G WITH BREVE
-0xD1 0x00D1 #LATIN CAPITAL LETTER N WITH TILDE
-0xD2 0x00D2 #LATIN CAPITAL LETTER O WITH GRAVE
-0xD3 0x00D3 #LATIN CAPITAL LETTER O WITH ACUTE
-0xD4 0x00D4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-0xD5 0x00D5 #LATIN CAPITAL LETTER O WITH TILDE
-0xD6 0x00D6 #LATIN CAPITAL LETTER O WITH DIAERESIS
-0xD7 0x00D7 #MULTIPLICATION SIGN
-0xD8 0x00D8 #LATIN CAPITAL LETTER O WITH STROKE
-0xD9 0x00D9 #LATIN CAPITAL LETTER U WITH GRAVE
-0xDA 0x00DA #LATIN CAPITAL LETTER U WITH ACUTE
-0xDB 0x00DB #LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-0xDC 0x00DC #LATIN CAPITAL LETTER U WITH DIAERESIS
-0xDD 0x0130 #LATIN CAPITAL LETTER I WITH DOT ABOVE
-0xDE 0x015E #LATIN CAPITAL LETTER S WITH CEDILLA
-0xDF 0x00DF #LATIN SMALL LETTER SHARP S
-0xE0 0x00E0 #LATIN SMALL LETTER A WITH GRAVE
-0xE1 0x00E1 #LATIN SMALL LETTER A WITH ACUTE
-0xE2 0x00E2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
-0xE3 0x00E3 #LATIN SMALL LETTER A WITH TILDE
-0xE4 0x00E4 #LATIN SMALL LETTER A WITH DIAERESIS
-0xE5 0x00E5 #LATIN SMALL LETTER A WITH RING ABOVE
-0xE6 0x00E6 #LATIN SMALL LETTER AE
-0xE7 0x00E7 #LATIN SMALL LETTER C WITH CEDILLA
-0xE8 0x00E8 #LATIN SMALL LETTER E WITH GRAVE
-0xE9 0x00E9 #LATIN SMALL LETTER E WITH ACUTE
-0xEA 0x00EA #LATIN SMALL LETTER E WITH CIRCUMFLEX
-0xEB 0x00EB #LATIN SMALL LETTER E WITH DIAERESIS
-0xEC 0x00EC #LATIN SMALL LETTER I WITH GRAVE
-0xED 0x00ED #LATIN SMALL LETTER I WITH ACUTE
-0xEE 0x00EE #LATIN SMALL LETTER I WITH CIRCUMFLEX
-0xEF 0x00EF #LATIN SMALL LETTER I WITH DIAERESIS
-0xF0 0x011F #LATIN SMALL LETTER G WITH BREVE
-0xF1 0x00F1 #LATIN SMALL LETTER N WITH TILDE
-0xF2 0x00F2 #LATIN SMALL LETTER O WITH GRAVE
-0xF3 0x00F3 #LATIN SMALL LETTER O WITH ACUTE
-0xF4 0x00F4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
-0xF5 0x00F5 #LATIN SMALL LETTER O WITH TILDE
-0xF6 0x00F6 #LATIN SMALL LETTER O WITH DIAERESIS
-0xF7 0x00F7 #DIVISION SIGN
-0xF8 0x00F8 #LATIN SMALL LETTER O WITH STROKE
-0xF9 0x00F9 #LATIN SMALL LETTER U WITH GRAVE
-0xFA 0x00FA #LATIN SMALL LETTER U WITH ACUTE
-0xFB 0x00FB #LATIN SMALL LETTER U WITH CIRCUMFLEX
-0xFC 0x00FC #LATIN SMALL LETTER U WITH DIAERESIS
-0xFD 0x0131 #LATIN SMALL LETTER DOTLESS I
-0xFE 0x015F #LATIN SMALL LETTER S WITH CEDILLA
-0xFF 0x00FF #LATIN SMALL LETTER Y WITH DIAERESIS
diff --git a/program/lib/encoding/CP1255.map b/program/lib/encoding/CP1255.map
deleted file mode 100644
index 341517f11..000000000
--- a/program/lib/encoding/CP1255.map
+++ /dev/null
@@ -1,274 +0,0 @@
-#
-# Name: cp1255 to Unicode table
-# Unicode version: 2.0
-# Table version: 2.01
-# Table format: Format A
-# Date: 1/7/2000
-#
-# Contact: cpxlate@microsoft.com
-#
-# General notes: none
-#
-# Format: Three tab-separated columns
-# Column #1 is the cp1255 code (in hex)
-# Column #2 is the Unicode (in hex as 0xXXXX)
-# Column #3 is the Unicode name (follows a comment sign, '#')
-#
-# The entries are in cp1255 order
-#
-0x00 0x0000 #NULL
-0x01 0x0001 #START OF HEADING
-0x02 0x0002 #START OF TEXT
-0x03 0x0003 #END OF TEXT
-0x04 0x0004 #END OF TRANSMISSION
-0x05 0x0005 #ENQUIRY
-0x06 0x0006 #ACKNOWLEDGE
-0x07 0x0007 #BELL
-0x08 0x0008 #BACKSPACE
-0x09 0x0009 #HORIZONTAL TABULATION
-0x0A 0x000A #LINE FEED
-0x0B 0x000B #VERTICAL TABULATION
-0x0C 0x000C #FORM FEED
-0x0D 0x000D #CARRIAGE RETURN
-0x0E 0x000E #SHIFT OUT
-0x0F 0x000F #SHIFT IN
-0x10 0x0010 #DATA LINK ESCAPE
-0x11 0x0011 #DEVICE CONTROL ONE
-0x12 0x0012 #DEVICE CONTROL TWO
-0x13 0x0013 #DEVICE CONTROL THREE
-0x14 0x0014 #DEVICE CONTROL FOUR
-0x15 0x0015 #NEGATIVE ACKNOWLEDGE
-0x16 0x0016 #SYNCHRONOUS IDLE
-0x17 0x0017 #END OF TRANSMISSION BLOCK
-0x18 0x0018 #CANCEL
-0x19 0x0019 #END OF MEDIUM
-0x1A 0x001A #SUBSTITUTE
-0x1B 0x001B #ESCAPE
-0x1C 0x001C #FILE SEPARATOR
-0x1D 0x001D #GROUP SEPARATOR
-0x1E 0x001E #RECORD SEPARATOR
-0x1F 0x001F #UNIT SEPARATOR
-0x20 0x0020 #SPACE
-0x21 0x0021 #EXCLAMATION MARK
-0x22 0x0022 #QUOTATION MARK
-0x23 0x0023 #NUMBER SIGN
-0x24 0x0024 #DOLLAR SIGN
-0x25 0x0025 #PERCENT SIGN
-0x26 0x0026 #AMPERSAND
-0x27 0x0027 #APOSTROPHE
-0x28 0x0028 #LEFT PARENTHESIS
-0x29 0x0029 #RIGHT PARENTHESIS
-0x2A 0x002A #ASTERISK
-0x2B 0x002B #PLUS SIGN
-0x2C 0x002C #COMMA
-0x2D 0x002D #HYPHEN-MINUS
-0x2E 0x002E #FULL STOP
-0x2F 0x002F #SOLIDUS
-0x30 0x0030 #DIGIT ZERO
-0x31 0x0031 #DIGIT ONE
-0x32 0x0032 #DIGIT TWO
-0x33 0x0033 #DIGIT THREE
-0x34 0x0034 #DIGIT FOUR
-0x35 0x0035 #DIGIT FIVE
-0x36 0x0036 #DIGIT SIX
-0x37 0x0037 #DIGIT SEVEN
-0x38 0x0038 #DIGIT EIGHT
-0x39 0x0039 #DIGIT NINE
-0x3A 0x003A #COLON
-0x3B 0x003B #SEMICOLON
-0x3C 0x003C #LESS-THAN SIGN
-0x3D 0x003D #EQUALS SIGN
-0x3E 0x003E #GREATER-THAN SIGN
-0x3F 0x003F #QUESTION MARK
-0x40 0x0040 #COMMERCIAL AT
-0x41 0x0041 #LATIN CAPITAL LETTER A
-0x42 0x0042 #LATIN CAPITAL LETTER B
-0x43 0x0043 #LATIN CAPITAL LETTER C
-0x44 0x0044 #LATIN CAPITAL LETTER D
-0x45 0x0045 #LATIN CAPITAL LETTER E
-0x46 0x0046 #LATIN CAPITAL LETTER F
-0x47 0x0047 #LATIN CAPITAL LETTER G
-0x48 0x0048 #LATIN CAPITAL LETTER H
-0x49 0x0049 #LATIN CAPITAL LETTER I
-0x4A 0x004A #LATIN CAPITAL LETTER J
-0x4B 0x004B #LATIN CAPITAL LETTER K
-0x4C 0x004C #LATIN CAPITAL LETTER L
-0x4D 0x004D #LATIN CAPITAL LETTER M
-0x4E 0x004E #LATIN CAPITAL LETTER N
-0x4F 0x004F #LATIN CAPITAL LETTER O
-0x50 0x0050 #LATIN CAPITAL LETTER P
-0x51 0x0051 #LATIN CAPITAL LETTER Q
-0x52 0x0052 #LATIN CAPITAL LETTER R
-0x53 0x0053 #LATIN CAPITAL LETTER S
-0x54 0x0054 #LATIN CAPITAL LETTER T
-0x55 0x0055 #LATIN CAPITAL LETTER U
-0x56 0x0056 #LATIN CAPITAL LETTER V
-0x57 0x0057 #LATIN CAPITAL LETTER W
-0x58 0x0058 #LATIN CAPITAL LETTER X
-0x59 0x0059 #LATIN CAPITAL LETTER Y
-0x5A 0x005A #LATIN CAPITAL LETTER Z
-0x5B 0x005B #LEFT SQUARE BRACKET
-0x5C 0x005C #REVERSE SOLIDUS
-0x5D 0x005D #RIGHT SQUARE BRACKET
-0x5E 0x005E #CIRCUMFLEX ACCENT
-0x5F 0x005F #LOW LINE
-0x60 0x0060 #GRAVE ACCENT
-0x61 0x0061 #LATIN SMALL LETTER A
-0x62 0x0062 #LATIN SMALL LETTER B
-0x63 0x0063 #LATIN SMALL LETTER C
-0x64 0x0064 #LATIN SMALL LETTER D
-0x65 0x0065 #LATIN SMALL LETTER E
-0x66 0x0066 #LATIN SMALL LETTER F
-0x67 0x0067 #LATIN SMALL LETTER G
-0x68 0x0068 #LATIN SMALL LETTER H
-0x69 0x0069 #LATIN SMALL LETTER I
-0x6A 0x006A #LATIN SMALL LETTER J
-0x6B 0x006B #LATIN SMALL LETTER K
-0x6C 0x006C #LATIN SMALL LETTER L
-0x6D 0x006D #LATIN SMALL LETTER M
-0x6E 0x006E #LATIN SMALL LETTER N
-0x6F 0x006F #LATIN SMALL LETTER O
-0x70 0x0070 #LATIN SMALL LETTER P
-0x71 0x0071 #LATIN SMALL LETTER Q
-0x72 0x0072 #LATIN SMALL LETTER R
-0x73 0x0073 #LATIN SMALL LETTER S
-0x74 0x0074 #LATIN SMALL LETTER T
-0x75 0x0075 #LATIN SMALL LETTER U
-0x76 0x0076 #LATIN SMALL LETTER V
-0x77 0x0077 #LATIN SMALL LETTER W
-0x78 0x0078 #LATIN SMALL LETTER X
-0x79 0x0079 #LATIN SMALL LETTER Y
-0x7A 0x007A #LATIN SMALL LETTER Z
-0x7B 0x007B #LEFT CURLY BRACKET
-0x7C 0x007C #VERTICAL LINE
-0x7D 0x007D #RIGHT CURLY BRACKET
-0x7E 0x007E #TILDE
-0x7F 0x007F #DELETE
-0x80 0x20AC #EURO SIGN
-0x81 #UNDEFINED
-0x82 0x201A #SINGLE LOW-9 QUOTATION MARK
-0x83 0x0192 #LATIN SMALL LETTER F WITH HOOK
-0x84 0x201E #DOUBLE LOW-9 QUOTATION MARK
-0x85 0x2026 #HORIZONTAL ELLIPSIS
-0x86 0x2020 #DAGGER
-0x87 0x2021 #DOUBLE DAGGER
-0x88 0x02C6 #MODIFIER LETTER CIRCUMFLEX ACCENT
-0x89 0x2030 #PER MILLE SIGN
-0x8A #UNDEFINED
-0x8B 0x2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-0x8C #UNDEFINED
-0x8D #UNDEFINED
-0x8E #UNDEFINED
-0x8F #UNDEFINED
-0x90 #UNDEFINED
-0x91 0x2018 #LEFT SINGLE QUOTATION MARK
-0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
-0x93 0x201C #LEFT DOUBLE QUOTATION MARK
-0x94 0x201D #RIGHT DOUBLE QUOTATION MARK
-0x95 0x2022 #BULLET
-0x96 0x2013 #EN DASH
-0x97 0x2014 #EM DASH
-0x98 0x02DC #SMALL TILDE
-0x99 0x2122 #TRADE MARK SIGN
-0x9A #UNDEFINED
-0x9B 0x203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-0x9C #UNDEFINED
-0x9D #UNDEFINED
-0x9E #UNDEFINED
-0x9F #UNDEFINED
-0xA0 0x00A0 #NO-BREAK SPACE
-0xA1 0x00A1 #INVERTED EXCLAMATION MARK
-0xA2 0x00A2 #CENT SIGN
-0xA3 0x00A3 #POUND SIGN
-0xA4 0x20AA #NEW SHEQEL SIGN
-0xA5 0x00A5 #YEN SIGN
-0xA6 0x00A6 #BROKEN BAR
-0xA7 0x00A7 #SECTION SIGN
-0xA8 0x00A8 #DIAERESIS
-0xA9 0x00A9 #COPYRIGHT SIGN
-0xAA 0x00D7 #MULTIPLICATION SIGN
-0xAB 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xAC 0x00AC #NOT SIGN
-0xAD 0x00AD #SOFT HYPHEN
-0xAE 0x00AE #REGISTERED SIGN
-0xAF 0x00AF #MACRON
-0xB0 0x00B0 #DEGREE SIGN
-0xB1 0x00B1 #PLUS-MINUS SIGN
-0xB2 0x00B2 #SUPERSCRIPT TWO
-0xB3 0x00B3 #SUPERSCRIPT THREE
-0xB4 0x00B4 #ACUTE ACCENT
-0xB5 0x00B5 #MICRO SIGN
-0xB6 0x00B6 #PILCROW SIGN
-0xB7 0x00B7 #MIDDLE DOT
-0xB8 0x00B8 #CEDILLA
-0xB9 0x00B9 #SUPERSCRIPT ONE
-0xBA 0x00F7 #DIVISION SIGN
-0xBB 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xBC 0x00BC #VULGAR FRACTION ONE QUARTER
-0xBD 0x00BD #VULGAR FRACTION ONE HALF
-0xBE 0x00BE #VULGAR FRACTION THREE QUARTERS
-0xBF 0x00BF #INVERTED QUESTION MARK
-0xC0 0x05B0 #HEBREW POINT SHEVA
-0xC1 0x05B1 #HEBREW POINT HATAF SEGOL
-0xC2 0x05B2 #HEBREW POINT HATAF PATAH
-0xC3 0x05B3 #HEBREW POINT HATAF QAMATS
-0xC4 0x05B4 #HEBREW POINT HIRIQ
-0xC5 0x05B5 #HEBREW POINT TSERE
-0xC6 0x05B6 #HEBREW POINT SEGOL
-0xC7 0x05B7 #HEBREW POINT PATAH
-0xC8 0x05B8 #HEBREW POINT QAMATS
-0xC9 0x05B9 #HEBREW POINT HOLAM
-0xCA #UNDEFINED
-0xCB 0x05BB #HEBREW POINT QUBUTS
-0xCC 0x05BC #HEBREW POINT DAGESH OR MAPIQ
-0xCD 0x05BD #HEBREW POINT METEG
-0xCE 0x05BE #HEBREW PUNCTUATION MAQAF
-0xCF 0x05BF #HEBREW POINT RAFE
-0xD0 0x05C0 #HEBREW PUNCTUATION PASEQ
-0xD1 0x05C1 #HEBREW POINT SHIN DOT
-0xD2 0x05C2 #HEBREW POINT SIN DOT
-0xD3 0x05C3 #HEBREW PUNCTUATION SOF PASUQ
-0xD4 0x05F0 #HEBREW LIGATURE YIDDISH DOUBLE VAV
-0xD5 0x05F1 #HEBREW LIGATURE YIDDISH VAV YOD
-0xD6 0x05F2 #HEBREW LIGATURE YIDDISH DOUBLE YOD
-0xD7 0x05F3 #HEBREW PUNCTUATION GERESH
-0xD8 0x05F4 #HEBREW PUNCTUATION GERSHAYIM
-0xD9 #UNDEFINED
-0xDA #UNDEFINED
-0xDB #UNDEFINED
-0xDC #UNDEFINED
-0xDD #UNDEFINED
-0xDE #UNDEFINED
-0xDF #UNDEFINED
-0xE0 0x05D0 #HEBREW LETTER ALEF
-0xE1 0x05D1 #HEBREW LETTER BET
-0xE2 0x05D2 #HEBREW LETTER GIMEL
-0xE3 0x05D3 #HEBREW LETTER DALET
-0xE4 0x05D4 #HEBREW LETTER HE
-0xE5 0x05D5 #HEBREW LETTER VAV
-0xE6 0x05D6 #HEBREW LETTER ZAYIN
-0xE7 0x05D7 #HEBREW LETTER HET
-0xE8 0x05D8 #HEBREW LETTER TET
-0xE9 0x05D9 #HEBREW LETTER YOD
-0xEA 0x05DA #HEBREW LETTER FINAL KAF
-0xEB 0x05DB #HEBREW LETTER KAF
-0xEC 0x05DC #HEBREW LETTER LAMED
-0xED 0x05DD #HEBREW LETTER FINAL MEM
-0xEE 0x05DE #HEBREW LETTER MEM
-0xEF 0x05DF #HEBREW LETTER FINAL NUN
-0xF0 0x05E0 #HEBREW LETTER NUN
-0xF1 0x05E1 #HEBREW LETTER SAMEKH
-0xF2 0x05E2 #HEBREW LETTER AYIN
-0xF3 0x05E3 #HEBREW LETTER FINAL PE
-0xF4 0x05E4 #HEBREW LETTER PE
-0xF5 0x05E5 #HEBREW LETTER FINAL TSADI
-0xF6 0x05E6 #HEBREW LETTER TSADI
-0xF7 0x05E7 #HEBREW LETTER QOF
-0xF8 0x05E8 #HEBREW LETTER RESH
-0xF9 0x05E9 #HEBREW LETTER SHIN
-0xFA 0x05EA #HEBREW LETTER TAV
-0xFB #UNDEFINED
-0xFC #UNDEFINED
-0xFD 0x200E #LEFT-TO-RIGHT MARK
-0xFE 0x200F #RIGHT-TO-LEFT MARK
-0xFF #UNDEFINED
diff --git a/program/lib/encoding/CP1256.map b/program/lib/encoding/CP1256.map
deleted file mode 100644
index 0edd081b9..000000000
--- a/program/lib/encoding/CP1256.map
+++ /dev/null
@@ -1,274 +0,0 @@
-#
-# Name: cp1256 to Unicode table
-# Unicode version: 2.1
-# Table version: 2.01
-# Table format: Format A
-# Date: 01/5/99
-#
-# Contact: cpxlate@microsoft.com
-#
-# General notes: none
-#
-# Format: Three tab-separated columns
-# Column #1 is the cp1256 code (in hex)
-# Column #2 is the Unicode (in hex as 0xXXXX)
-# Column #3 is the Unicode name (follows a comment sign, '#')
-#
-# The entries are in cp1256 order
-#
-0x00 0x0000 #NULL
-0x01 0x0001 #START OF HEADING
-0x02 0x0002 #START OF TEXT
-0x03 0x0003 #END OF TEXT
-0x04 0x0004 #END OF TRANSMISSION
-0x05 0x0005 #ENQUIRY
-0x06 0x0006 #ACKNOWLEDGE
-0x07 0x0007 #BELL
-0x08 0x0008 #BACKSPACE
-0x09 0x0009 #HORIZONTAL TABULATION
-0x0A 0x000A #LINE FEED
-0x0B 0x000B #VERTICAL TABULATION
-0x0C 0x000C #FORM FEED
-0x0D 0x000D #CARRIAGE RETURN
-0x0E 0x000E #SHIFT OUT
-0x0F 0x000F #SHIFT IN
-0x10 0x0010 #DATA LINK ESCAPE
-0x11 0x0011 #DEVICE CONTROL ONE
-0x12 0x0012 #DEVICE CONTROL TWO
-0x13 0x0013 #DEVICE CONTROL THREE
-0x14 0x0014 #DEVICE CONTROL FOUR
-0x15 0x0015 #NEGATIVE ACKNOWLEDGE
-0x16 0x0016 #SYNCHRONOUS IDLE
-0x17 0x0017 #END OF TRANSMISSION BLOCK
-0x18 0x0018 #CANCEL
-0x19 0x0019 #END OF MEDIUM
-0x1A 0x001A #SUBSTITUTE
-0x1B 0x001B #ESCAPE
-0x1C 0x001C #FILE SEPARATOR
-0x1D 0x001D #GROUP SEPARATOR
-0x1E 0x001E #RECORD SEPARATOR
-0x1F 0x001F #UNIT SEPARATOR
-0x20 0x0020 #SPACE
-0x21 0x0021 #EXCLAMATION MARK
-0x22 0x0022 #QUOTATION MARK
-0x23 0x0023 #NUMBER SIGN
-0x24 0x0024 #DOLLAR SIGN
-0x25 0x0025 #PERCENT SIGN
-0x26 0x0026 #AMPERSAND
-0x27 0x0027 #APOSTROPHE
-0x28 0x0028 #LEFT PARENTHESIS
-0x29 0x0029 #RIGHT PARENTHESIS
-0x2A 0x002A #ASTERISK
-0x2B 0x002B #PLUS SIGN
-0x2C 0x002C #COMMA
-0x2D 0x002D #HYPHEN-MINUS
-0x2E 0x002E #FULL STOP
-0x2F 0x002F #SOLIDUS
-0x30 0x0030 #DIGIT ZERO
-0x31 0x0031 #DIGIT ONE
-0x32 0x0032 #DIGIT TWO
-0x33 0x0033 #DIGIT THREE
-0x34 0x0034 #DIGIT FOUR
-0x35 0x0035 #DIGIT FIVE
-0x36 0x0036 #DIGIT SIX
-0x37 0x0037 #DIGIT SEVEN
-0x38 0x0038 #DIGIT EIGHT
-0x39 0x0039 #DIGIT NINE
-0x3A 0x003A #COLON
-0x3B 0x003B #SEMICOLON
-0x3C 0x003C #LESS-THAN SIGN
-0x3D 0x003D #EQUALS SIGN
-0x3E 0x003E #GREATER-THAN SIGN
-0x3F 0x003F #QUESTION MARK
-0x40 0x0040 #COMMERCIAL AT
-0x41 0x0041 #LATIN CAPITAL LETTER A
-0x42 0x0042 #LATIN CAPITAL LETTER B
-0x43 0x0043 #LATIN CAPITAL LETTER C
-0x44 0x0044 #LATIN CAPITAL LETTER D
-0x45 0x0045 #LATIN CAPITAL LETTER E
-0x46 0x0046 #LATIN CAPITAL LETTER F
-0x47 0x0047 #LATIN CAPITAL LETTER G
-0x48 0x0048 #LATIN CAPITAL LETTER H
-0x49 0x0049 #LATIN CAPITAL LETTER I
-0x4A 0x004A #LATIN CAPITAL LETTER J
-0x4B 0x004B #LATIN CAPITAL LETTER K
-0x4C 0x004C #LATIN CAPITAL LETTER L
-0x4D 0x004D #LATIN CAPITAL LETTER M
-0x4E 0x004E #LATIN CAPITAL LETTER N
-0x4F 0x004F #LATIN CAPITAL LETTER O
-0x50 0x0050 #LATIN CAPITAL LETTER P
-0x51 0x0051 #LATIN CAPITAL LETTER Q
-0x52 0x0052 #LATIN CAPITAL LETTER R
-0x53 0x0053 #LATIN CAPITAL LETTER S
-0x54 0x0054 #LATIN CAPITAL LETTER T
-0x55 0x0055 #LATIN CAPITAL LETTER U
-0x56 0x0056 #LATIN CAPITAL LETTER V
-0x57 0x0057 #LATIN CAPITAL LETTER W
-0x58 0x0058 #LATIN CAPITAL LETTER X
-0x59 0x0059 #LATIN CAPITAL LETTER Y
-0x5A 0x005A #LATIN CAPITAL LETTER Z
-0x5B 0x005B #LEFT SQUARE BRACKET
-0x5C 0x005C #REVERSE SOLIDUS
-0x5D 0x005D #RIGHT SQUARE BRACKET
-0x5E 0x005E #CIRCUMFLEX ACCENT
-0x5F 0x005F #LOW LINE
-0x60 0x0060 #GRAVE ACCENT
-0x61 0x0061 #LATIN SMALL LETTER A
-0x62 0x0062 #LATIN SMALL LETTER B
-0x63 0x0063 #LATIN SMALL LETTER C
-0x64 0x0064 #LATIN SMALL LETTER D
-0x65 0x0065 #LATIN SMALL LETTER E
-0x66 0x0066 #LATIN SMALL LETTER F
-0x67 0x0067 #LATIN SMALL LETTER G
-0x68 0x0068 #LATIN SMALL LETTER H
-0x69 0x0069 #LATIN SMALL LETTER I
-0x6A 0x006A #LATIN SMALL LETTER J
-0x6B 0x006B #LATIN SMALL LETTER K
-0x6C 0x006C #LATIN SMALL LETTER L
-0x6D 0x006D #LATIN SMALL LETTER M
-0x6E 0x006E #LATIN SMALL LETTER N
-0x6F 0x006F #LATIN SMALL LETTER O
-0x70 0x0070 #LATIN SMALL LETTER P
-0x71 0x0071 #LATIN SMALL LETTER Q
-0x72 0x0072 #LATIN SMALL LETTER R
-0x73 0x0073 #LATIN SMALL LETTER S
-0x74 0x0074 #LATIN SMALL LETTER T
-0x75 0x0075 #LATIN SMALL LETTER U
-0x76 0x0076 #LATIN SMALL LETTER V
-0x77 0x0077 #LATIN SMALL LETTER W
-0x78 0x0078 #LATIN SMALL LETTER X
-0x79 0x0079 #LATIN SMALL LETTER Y
-0x7A 0x007A #LATIN SMALL LETTER Z
-0x7B 0x007B #LEFT CURLY BRACKET
-0x7C 0x007C #VERTICAL LINE
-0x7D 0x007D #RIGHT CURLY BRACKET
-0x7E 0x007E #TILDE
-0x7F 0x007F #DELETE
-0x80 0x20AC #EURO SIGN
-0x81 0x067E #ARABIC LETTER PEH
-0x82 0x201A #SINGLE LOW-9 QUOTATION MARK
-0x83 0x0192 #LATIN SMALL LETTER F WITH HOOK
-0x84 0x201E #DOUBLE LOW-9 QUOTATION MARK
-0x85 0x2026 #HORIZONTAL ELLIPSIS
-0x86 0x2020 #DAGGER
-0x87 0x2021 #DOUBLE DAGGER
-0x88 0x02C6 #MODIFIER LETTER CIRCUMFLEX ACCENT
-0x89 0x2030 #PER MILLE SIGN
-0x8A 0x0679 #ARABIC LETTER TTEH
-0x8B 0x2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-0x8C 0x0152 #LATIN CAPITAL LIGATURE OE
-0x8D 0x0686 #ARABIC LETTER TCHEH
-0x8E 0x0698 #ARABIC LETTER JEH
-0x8F 0x0688 #ARABIC LETTER DDAL
-0x90 0x06AF #ARABIC LETTER GAF
-0x91 0x2018 #LEFT SINGLE QUOTATION MARK
-0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
-0x93 0x201C #LEFT DOUBLE QUOTATION MARK
-0x94 0x201D #RIGHT DOUBLE QUOTATION MARK
-0x95 0x2022 #BULLET
-0x96 0x2013 #EN DASH
-0x97 0x2014 #EM DASH
-0x98 0x06A9 #ARABIC LETTER KEHEH
-0x99 0x2122 #TRADE MARK SIGN
-0x9A 0x0691 #ARABIC LETTER RREH
-0x9B 0x203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-0x9C 0x0153 #LATIN SMALL LIGATURE OE
-0x9D 0x200C #ZERO WIDTH NON-JOINER
-0x9E 0x200D #ZERO WIDTH JOINER
-0x9F 0x06BA #ARABIC LETTER NOON GHUNNA
-0xA0 0x00A0 #NO-BREAK SPACE
-0xA1 0x060C #ARABIC COMMA
-0xA2 0x00A2 #CENT SIGN
-0xA3 0x00A3 #POUND SIGN
-0xA4 0x00A4 #CURRENCY SIGN
-0xA5 0x00A5 #YEN SIGN
-0xA6 0x00A6 #BROKEN BAR
-0xA7 0x00A7 #SECTION SIGN
-0xA8 0x00A8 #DIAERESIS
-0xA9 0x00A9 #COPYRIGHT SIGN
-0xAA 0x06BE #ARABIC LETTER HEH DOACHASHMEE
-0xAB 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xAC 0x00AC #NOT SIGN
-0xAD 0x00AD #SOFT HYPHEN
-0xAE 0x00AE #REGISTERED SIGN
-0xAF 0x00AF #MACRON
-0xB0 0x00B0 #DEGREE SIGN
-0xB1 0x00B1 #PLUS-MINUS SIGN
-0xB2 0x00B2 #SUPERSCRIPT TWO
-0xB3 0x00B3 #SUPERSCRIPT THREE
-0xB4 0x00B4 #ACUTE ACCENT
-0xB5 0x00B5 #MICRO SIGN
-0xB6 0x00B6 #PILCROW SIGN
-0xB7 0x00B7 #MIDDLE DOT
-0xB8 0x00B8 #CEDILLA
-0xB9 0x00B9 #SUPERSCRIPT ONE
-0xBA 0x061B #ARABIC SEMICOLON
-0xBB 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xBC 0x00BC #VULGAR FRACTION ONE QUARTER
-0xBD 0x00BD #VULGAR FRACTION ONE HALF
-0xBE 0x00BE #VULGAR FRACTION THREE QUARTERS
-0xBF 0x061F #ARABIC QUESTION MARK
-0xC0 0x06C1 #ARABIC LETTER HEH GOAL
-0xC1 0x0621 #ARABIC LETTER HAMZA
-0xC2 0x0622 #ARABIC LETTER ALEF WITH MADDA ABOVE
-0xC3 0x0623 #ARABIC LETTER ALEF WITH HAMZA ABOVE
-0xC4 0x0624 #ARABIC LETTER WAW WITH HAMZA ABOVE
-0xC5 0x0625 #ARABIC LETTER ALEF WITH HAMZA BELOW
-0xC6 0x0626 #ARABIC LETTER YEH WITH HAMZA ABOVE
-0xC7 0x0627 #ARABIC LETTER ALEF
-0xC8 0x0628 #ARABIC LETTER BEH
-0xC9 0x0629 #ARABIC LETTER TEH MARBUTA
-0xCA 0x062A #ARABIC LETTER TEH
-0xCB 0x062B #ARABIC LETTER THEH
-0xCC 0x062C #ARABIC LETTER JEEM
-0xCD 0x062D #ARABIC LETTER HAH
-0xCE 0x062E #ARABIC LETTER KHAH
-0xCF 0x062F #ARABIC LETTER DAL
-0xD0 0x0630 #ARABIC LETTER THAL
-0xD1 0x0631 #ARABIC LETTER REH
-0xD2 0x0632 #ARABIC LETTER ZAIN
-0xD3 0x0633 #ARABIC LETTER SEEN
-0xD4 0x0634 #ARABIC LETTER SHEEN
-0xD5 0x0635 #ARABIC LETTER SAD
-0xD6 0x0636 #ARABIC LETTER DAD
-0xD7 0x00D7 #MULTIPLICATION SIGN
-0xD8 0x0637 #ARABIC LETTER TAH
-0xD9 0x0638 #ARABIC LETTER ZAH
-0xDA 0x0639 #ARABIC LETTER AIN
-0xDB 0x063A #ARABIC LETTER GHAIN
-0xDC 0x0640 #ARABIC TATWEEL
-0xDD 0x0641 #ARABIC LETTER FEH
-0xDE 0x0642 #ARABIC LETTER QAF
-0xDF 0x0643 #ARABIC LETTER KAF
-0xE0 0x00E0 #LATIN SMALL LETTER A WITH GRAVE
-0xE1 0x0644 #ARABIC LETTER LAM
-0xE2 0x00E2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
-0xE3 0x0645 #ARABIC LETTER MEEM
-0xE4 0x0646 #ARABIC LETTER NOON
-0xE5 0x0647 #ARABIC LETTER HEH
-0xE6 0x0648 #ARABIC LETTER WAW
-0xE7 0x00E7 #LATIN SMALL LETTER C WITH CEDILLA
-0xE8 0x00E8 #LATIN SMALL LETTER E WITH GRAVE
-0xE9 0x00E9 #LATIN SMALL LETTER E WITH ACUTE
-0xEA 0x00EA #LATIN SMALL LETTER E WITH CIRCUMFLEX
-0xEB 0x00EB #LATIN SMALL LETTER E WITH DIAERESIS
-0xEC 0x0649 #ARABIC LETTER ALEF MAKSURA
-0xED 0x064A #ARABIC LETTER YEH
-0xEE 0x00EE #LATIN SMALL LETTER I WITH CIRCUMFLEX
-0xEF 0x00EF #LATIN SMALL LETTER I WITH DIAERESIS
-0xF0 0x064B #ARABIC FATHATAN
-0xF1 0x064C #ARABIC DAMMATAN
-0xF2 0x064D #ARABIC KASRATAN
-0xF3 0x064E #ARABIC FATHA
-0xF4 0x00F4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
-0xF5 0x064F #ARABIC DAMMA
-0xF6 0x0650 #ARABIC KASRA
-0xF7 0x00F7 #DIVISION SIGN
-0xF8 0x0651 #ARABIC SHADDA
-0xF9 0x00F9 #LATIN SMALL LETTER U WITH GRAVE
-0xFA 0x0652 #ARABIC SUKUN
-0xFB 0x00FB #LATIN SMALL LETTER U WITH CIRCUMFLEX
-0xFC 0x00FC #LATIN SMALL LETTER U WITH DIAERESIS
-0xFD 0x200E #LEFT-TO-RIGHT MARK
-0xFE 0x200F #RIGHT-TO-LEFT MARK
-0xFF 0x06D2 #ARABIC LETTER YEH BARREE
diff --git a/program/lib/encoding/CP1257.map b/program/lib/encoding/CP1257.map
deleted file mode 100644
index 97979d931..000000000
--- a/program/lib/encoding/CP1257.map
+++ /dev/null
@@ -1,274 +0,0 @@
-#
-# Name: cp1257 to Unicode table
-# Unicode version: 2.0
-# Table version: 2.01
-# Table format: Format A
-# Date: 04/15/98
-#
-# Contact: cpxlate@microsoft.com
-#
-# General notes: none
-#
-# Format: Three tab-separated columns
-# Column #1 is the cp1257 code (in hex)
-# Column #2 is the Unicode (in hex as 0xXXXX)
-# Column #3 is the Unicode name (follows a comment sign, '#')
-#
-# The entries are in cp1257 order
-#
-0x00 0x0000 #NULL
-0x01 0x0001 #START OF HEADING
-0x02 0x0002 #START OF TEXT
-0x03 0x0003 #END OF TEXT
-0x04 0x0004 #END OF TRANSMISSION
-0x05 0x0005 #ENQUIRY
-0x06 0x0006 #ACKNOWLEDGE
-0x07 0x0007 #BELL
-0x08 0x0008 #BACKSPACE
-0x09 0x0009 #HORIZONTAL TABULATION
-0x0A 0x000A #LINE FEED
-0x0B 0x000B #VERTICAL TABULATION
-0x0C 0x000C #FORM FEED
-0x0D 0x000D #CARRIAGE RETURN
-0x0E 0x000E #SHIFT OUT
-0x0F 0x000F #SHIFT IN
-0x10 0x0010 #DATA LINK ESCAPE
-0x11 0x0011 #DEVICE CONTROL ONE
-0x12 0x0012 #DEVICE CONTROL TWO
-0x13 0x0013 #DEVICE CONTROL THREE
-0x14 0x0014 #DEVICE CONTROL FOUR
-0x15 0x0015 #NEGATIVE ACKNOWLEDGE
-0x16 0x0016 #SYNCHRONOUS IDLE
-0x17 0x0017 #END OF TRANSMISSION BLOCK
-0x18 0x0018 #CANCEL
-0x19 0x0019 #END OF MEDIUM
-0x1A 0x001A #SUBSTITUTE
-0x1B 0x001B #ESCAPE
-0x1C 0x001C #FILE SEPARATOR
-0x1D 0x001D #GROUP SEPARATOR
-0x1E 0x001E #RECORD SEPARATOR
-0x1F 0x001F #UNIT SEPARATOR
-0x20 0x0020 #SPACE
-0x21 0x0021 #EXCLAMATION MARK
-0x22 0x0022 #QUOTATION MARK
-0x23 0x0023 #NUMBER SIGN
-0x24 0x0024 #DOLLAR SIGN
-0x25 0x0025 #PERCENT SIGN
-0x26 0x0026 #AMPERSAND
-0x27 0x0027 #APOSTROPHE
-0x28 0x0028 #LEFT PARENTHESIS
-0x29 0x0029 #RIGHT PARENTHESIS
-0x2A 0x002A #ASTERISK
-0x2B 0x002B #PLUS SIGN
-0x2C 0x002C #COMMA
-0x2D 0x002D #HYPHEN-MINUS
-0x2E 0x002E #FULL STOP
-0x2F 0x002F #SOLIDUS
-0x30 0x0030 #DIGIT ZERO
-0x31 0x0031 #DIGIT ONE
-0x32 0x0032 #DIGIT TWO
-0x33 0x0033 #DIGIT THREE
-0x34 0x0034 #DIGIT FOUR
-0x35 0x0035 #DIGIT FIVE
-0x36 0x0036 #DIGIT SIX
-0x37 0x0037 #DIGIT SEVEN
-0x38 0x0038 #DIGIT EIGHT
-0x39 0x0039 #DIGIT NINE
-0x3A 0x003A #COLON
-0x3B 0x003B #SEMICOLON
-0x3C 0x003C #LESS-THAN SIGN
-0x3D 0x003D #EQUALS SIGN
-0x3E 0x003E #GREATER-THAN SIGN
-0x3F 0x003F #QUESTION MARK
-0x40 0x0040 #COMMERCIAL AT
-0x41 0x0041 #LATIN CAPITAL LETTER A
-0x42 0x0042 #LATIN CAPITAL LETTER B
-0x43 0x0043 #LATIN CAPITAL LETTER C
-0x44 0x0044 #LATIN CAPITAL LETTER D
-0x45 0x0045 #LATIN CAPITAL LETTER E
-0x46 0x0046 #LATIN CAPITAL LETTER F
-0x47 0x0047 #LATIN CAPITAL LETTER G
-0x48 0x0048 #LATIN CAPITAL LETTER H
-0x49 0x0049 #LATIN CAPITAL LETTER I
-0x4A 0x004A #LATIN CAPITAL LETTER J
-0x4B 0x004B #LATIN CAPITAL LETTER K
-0x4C 0x004C #LATIN CAPITAL LETTER L
-0x4D 0x004D #LATIN CAPITAL LETTER M
-0x4E 0x004E #LATIN CAPITAL LETTER N
-0x4F 0x004F #LATIN CAPITAL LETTER O
-0x50 0x0050 #LATIN CAPITAL LETTER P
-0x51 0x0051 #LATIN CAPITAL LETTER Q
-0x52 0x0052 #LATIN CAPITAL LETTER R
-0x53 0x0053 #LATIN CAPITAL LETTER S
-0x54 0x0054 #LATIN CAPITAL LETTER T
-0x55 0x0055 #LATIN CAPITAL LETTER U
-0x56 0x0056 #LATIN CAPITAL LETTER V
-0x57 0x0057 #LATIN CAPITAL LETTER W
-0x58 0x0058 #LATIN CAPITAL LETTER X
-0x59 0x0059 #LATIN CAPITAL LETTER Y
-0x5A 0x005A #LATIN CAPITAL LETTER Z
-0x5B 0x005B #LEFT SQUARE BRACKET
-0x5C 0x005C #REVERSE SOLIDUS
-0x5D 0x005D #RIGHT SQUARE BRACKET
-0x5E 0x005E #CIRCUMFLEX ACCENT
-0x5F 0x005F #LOW LINE
-0x60 0x0060 #GRAVE ACCENT
-0x61 0x0061 #LATIN SMALL LETTER A
-0x62 0x0062 #LATIN SMALL LETTER B
-0x63 0x0063 #LATIN SMALL LETTER C
-0x64 0x0064 #LATIN SMALL LETTER D
-0x65 0x0065 #LATIN SMALL LETTER E
-0x66 0x0066 #LATIN SMALL LETTER F
-0x67 0x0067 #LATIN SMALL LETTER G
-0x68 0x0068 #LATIN SMALL LETTER H
-0x69 0x0069 #LATIN SMALL LETTER I
-0x6A 0x006A #LATIN SMALL LETTER J
-0x6B 0x006B #LATIN SMALL LETTER K
-0x6C 0x006C #LATIN SMALL LETTER L
-0x6D 0x006D #LATIN SMALL LETTER M
-0x6E 0x006E #LATIN SMALL LETTER N
-0x6F 0x006F #LATIN SMALL LETTER O
-0x70 0x0070 #LATIN SMALL LETTER P
-0x71 0x0071 #LATIN SMALL LETTER Q
-0x72 0x0072 #LATIN SMALL LETTER R
-0x73 0x0073 #LATIN SMALL LETTER S
-0x74 0x0074 #LATIN SMALL LETTER T
-0x75 0x0075 #LATIN SMALL LETTER U
-0x76 0x0076 #LATIN SMALL LETTER V
-0x77 0x0077 #LATIN SMALL LETTER W
-0x78 0x0078 #LATIN SMALL LETTER X
-0x79 0x0079 #LATIN SMALL LETTER Y
-0x7A 0x007A #LATIN SMALL LETTER Z
-0x7B 0x007B #LEFT CURLY BRACKET
-0x7C 0x007C #VERTICAL LINE
-0x7D 0x007D #RIGHT CURLY BRACKET
-0x7E 0x007E #TILDE
-0x7F 0x007F #DELETE
-0x80 0x20AC #EURO SIGN
-0x81 #UNDEFINED
-0x82 0x201A #SINGLE LOW-9 QUOTATION MARK
-0x83 #UNDEFINED
-0x84 0x201E #DOUBLE LOW-9 QUOTATION MARK
-0x85 0x2026 #HORIZONTAL ELLIPSIS
-0x86 0x2020 #DAGGER
-0x87 0x2021 #DOUBLE DAGGER
-0x88 #UNDEFINED
-0x89 0x2030 #PER MILLE SIGN
-0x8A #UNDEFINED
-0x8B 0x2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-0x8C #UNDEFINED
-0x8D 0x00A8 #DIAERESIS
-0x8E 0x02C7 #CARON
-0x8F 0x00B8 #CEDILLA
-0x90 #UNDEFINED
-0x91 0x2018 #LEFT SINGLE QUOTATION MARK
-0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
-0x93 0x201C #LEFT DOUBLE QUOTATION MARK
-0x94 0x201D #RIGHT DOUBLE QUOTATION MARK
-0x95 0x2022 #BULLET
-0x96 0x2013 #EN DASH
-0x97 0x2014 #EM DASH
-0x98 #UNDEFINED
-0x99 0x2122 #TRADE MARK SIGN
-0x9A #UNDEFINED
-0x9B 0x203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-0x9C #UNDEFINED
-0x9D 0x00AF #MACRON
-0x9E 0x02DB #OGONEK
-0x9F #UNDEFINED
-0xA0 0x00A0 #NO-BREAK SPACE
-0xA1 #UNDEFINED
-0xA2 0x00A2 #CENT SIGN
-0xA3 0x00A3 #POUND SIGN
-0xA4 0x00A4 #CURRENCY SIGN
-0xA5 #UNDEFINED
-0xA6 0x00A6 #BROKEN BAR
-0xA7 0x00A7 #SECTION SIGN
-0xA8 0x00D8 #LATIN CAPITAL LETTER O WITH STROKE
-0xA9 0x00A9 #COPYRIGHT SIGN
-0xAA 0x0156 #LATIN CAPITAL LETTER R WITH CEDILLA
-0xAB 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xAC 0x00AC #NOT SIGN
-0xAD 0x00AD #SOFT HYPHEN
-0xAE 0x00AE #REGISTERED SIGN
-0xAF 0x00C6 #LATIN CAPITAL LETTER AE
-0xB0 0x00B0 #DEGREE SIGN
-0xB1 0x00B1 #PLUS-MINUS SIGN
-0xB2 0x00B2 #SUPERSCRIPT TWO
-0xB3 0x00B3 #SUPERSCRIPT THREE
-0xB4 0x00B4 #ACUTE ACCENT
-0xB5 0x00B5 #MICRO SIGN
-0xB6 0x00B6 #PILCROW SIGN
-0xB7 0x00B7 #MIDDLE DOT
-0xB8 0x00F8 #LATIN SMALL LETTER O WITH STROKE
-0xB9 0x00B9 #SUPERSCRIPT ONE
-0xBA 0x0157 #LATIN SMALL LETTER R WITH CEDILLA
-0xBB 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xBC 0x00BC #VULGAR FRACTION ONE QUARTER
-0xBD 0x00BD #VULGAR FRACTION ONE HALF
-0xBE 0x00BE #VULGAR FRACTION THREE QUARTERS
-0xBF 0x00E6 #LATIN SMALL LETTER AE
-0xC0 0x0104 #LATIN CAPITAL LETTER A WITH OGONEK
-0xC1 0x012E #LATIN CAPITAL LETTER I WITH OGONEK
-0xC2 0x0100 #LATIN CAPITAL LETTER A WITH MACRON
-0xC3 0x0106 #LATIN CAPITAL LETTER C WITH ACUTE
-0xC4 0x00C4 #LATIN CAPITAL LETTER A WITH DIAERESIS
-0xC5 0x00C5 #LATIN CAPITAL LETTER A WITH RING ABOVE
-0xC6 0x0118 #LATIN CAPITAL LETTER E WITH OGONEK
-0xC7 0x0112 #LATIN CAPITAL LETTER E WITH MACRON
-0xC8 0x010C #LATIN CAPITAL LETTER C WITH CARON
-0xC9 0x00C9 #LATIN CAPITAL LETTER E WITH ACUTE
-0xCA 0x0179 #LATIN CAPITAL LETTER Z WITH ACUTE
-0xCB 0x0116 #LATIN CAPITAL LETTER E WITH DOT ABOVE
-0xCC 0x0122 #LATIN CAPITAL LETTER G WITH CEDILLA
-0xCD 0x0136 #LATIN CAPITAL LETTER K WITH CEDILLA
-0xCE 0x012A #LATIN CAPITAL LETTER I WITH MACRON
-0xCF 0x013B #LATIN CAPITAL LETTER L WITH CEDILLA
-0xD0 0x0160 #LATIN CAPITAL LETTER S WITH CARON
-0xD1 0x0143 #LATIN CAPITAL LETTER N WITH ACUTE
-0xD2 0x0145 #LATIN CAPITAL LETTER N WITH CEDILLA
-0xD3 0x00D3 #LATIN CAPITAL LETTER O WITH ACUTE
-0xD4 0x014C #LATIN CAPITAL LETTER O WITH MACRON
-0xD5 0x00D5 #LATIN CAPITAL LETTER O WITH TILDE
-0xD6 0x00D6 #LATIN CAPITAL LETTER O WITH DIAERESIS
-0xD7 0x00D7 #MULTIPLICATION SIGN
-0xD8 0x0172 #LATIN CAPITAL LETTER U WITH OGONEK
-0xD9 0x0141 #LATIN CAPITAL LETTER L WITH STROKE
-0xDA 0x015A #LATIN CAPITAL LETTER S WITH ACUTE
-0xDB 0x016A #LATIN CAPITAL LETTER U WITH MACRON
-0xDC 0x00DC #LATIN CAPITAL LETTER U WITH DIAERESIS
-0xDD 0x017B #LATIN CAPITAL LETTER Z WITH DOT ABOVE
-0xDE 0x017D #LATIN CAPITAL LETTER Z WITH CARON
-0xDF 0x00DF #LATIN SMALL LETTER SHARP S
-0xE0 0x0105 #LATIN SMALL LETTER A WITH OGONEK
-0xE1 0x012F #LATIN SMALL LETTER I WITH OGONEK
-0xE2 0x0101 #LATIN SMALL LETTER A WITH MACRON
-0xE3 0x0107 #LATIN SMALL LETTER C WITH ACUTE
-0xE4 0x00E4 #LATIN SMALL LETTER A WITH DIAERESIS
-0xE5 0x00E5 #LATIN SMALL LETTER A WITH RING ABOVE
-0xE6 0x0119 #LATIN SMALL LETTER E WITH OGONEK
-0xE7 0x0113 #LATIN SMALL LETTER E WITH MACRON
-0xE8 0x010D #LATIN SMALL LETTER C WITH CARON
-0xE9 0x00E9 #LATIN SMALL LETTER E WITH ACUTE
-0xEA 0x017A #LATIN SMALL LETTER Z WITH ACUTE
-0xEB 0x0117 #LATIN SMALL LETTER E WITH DOT ABOVE
-0xEC 0x0123 #LATIN SMALL LETTER G WITH CEDILLA
-0xED 0x0137 #LATIN SMALL LETTER K WITH CEDILLA
-0xEE 0x012B #LATIN SMALL LETTER I WITH MACRON
-0xEF 0x013C #LATIN SMALL LETTER L WITH CEDILLA
-0xF0 0x0161 #LATIN SMALL LETTER S WITH CARON
-0xF1 0x0144 #LATIN SMALL LETTER N WITH ACUTE
-0xF2 0x0146 #LATIN SMALL LETTER N WITH CEDILLA
-0xF3 0x00F3 #LATIN SMALL LETTER O WITH ACUTE
-0xF4 0x014D #LATIN SMALL LETTER O WITH MACRON
-0xF5 0x00F5 #LATIN SMALL LETTER O WITH TILDE
-0xF6 0x00F6 #LATIN SMALL LETTER O WITH DIAERESIS
-0xF7 0x00F7 #DIVISION SIGN
-0xF8 0x0173 #LATIN SMALL LETTER U WITH OGONEK
-0xF9 0x0142 #LATIN SMALL LETTER L WITH STROKE
-0xFA 0x015B #LATIN SMALL LETTER S WITH ACUTE
-0xFB 0x016B #LATIN SMALL LETTER U WITH MACRON
-0xFC 0x00FC #LATIN SMALL LETTER U WITH DIAERESIS
-0xFD 0x017C #LATIN SMALL LETTER Z WITH DOT ABOVE
-0xFE 0x017E #LATIN SMALL LETTER Z WITH CARON
-0xFF 0x02D9 #DOT ABOVE
diff --git a/program/lib/encoding/CP1258.map b/program/lib/encoding/CP1258.map
deleted file mode 100644
index 392310a8c..000000000
--- a/program/lib/encoding/CP1258.map
+++ /dev/null
@@ -1,274 +0,0 @@
-#
-# Name: cp1258 to Unicode table
-# Unicode version: 2.0
-# Table version: 2.01
-# Table format: Format A
-# Date: 04/15/98
-#
-# Contact: cpxlate@microsoft.com
-#
-# General notes: none
-#
-# Format: Three tab-separated columns
-# Column #1 is the cp1258 code (in hex)
-# Column #2 is the Unicode (in hex as 0xXXXX)
-# Column #3 is the Unicode name (follows a comment sign, '#')
-#
-# The entries are in cp1258 order
-#
-0x00 0x0000 #NULL
-0x01 0x0001 #START OF HEADING
-0x02 0x0002 #START OF TEXT
-0x03 0x0003 #END OF TEXT
-0x04 0x0004 #END OF TRANSMISSION
-0x05 0x0005 #ENQUIRY
-0x06 0x0006 #ACKNOWLEDGE
-0x07 0x0007 #BELL
-0x08 0x0008 #BACKSPACE
-0x09 0x0009 #HORIZONTAL TABULATION
-0x0A 0x000A #LINE FEED
-0x0B 0x000B #VERTICAL TABULATION
-0x0C 0x000C #FORM FEED
-0x0D 0x000D #CARRIAGE RETURN
-0x0E 0x000E #SHIFT OUT
-0x0F 0x000F #SHIFT IN
-0x10 0x0010 #DATA LINK ESCAPE
-0x11 0x0011 #DEVICE CONTROL ONE
-0x12 0x0012 #DEVICE CONTROL TWO
-0x13 0x0013 #DEVICE CONTROL THREE
-0x14 0x0014 #DEVICE CONTROL FOUR
-0x15 0x0015 #NEGATIVE ACKNOWLEDGE
-0x16 0x0016 #SYNCHRONOUS IDLE
-0x17 0x0017 #END OF TRANSMISSION BLOCK
-0x18 0x0018 #CANCEL
-0x19 0x0019 #END OF MEDIUM
-0x1A 0x001A #SUBSTITUTE
-0x1B 0x001B #ESCAPE
-0x1C 0x001C #FILE SEPARATOR
-0x1D 0x001D #GROUP SEPARATOR
-0x1E 0x001E #RECORD SEPARATOR
-0x1F 0x001F #UNIT SEPARATOR
-0x20 0x0020 #SPACE
-0x21 0x0021 #EXCLAMATION MARK
-0x22 0x0022 #QUOTATION MARK
-0x23 0x0023 #NUMBER SIGN
-0x24 0x0024 #DOLLAR SIGN
-0x25 0x0025 #PERCENT SIGN
-0x26 0x0026 #AMPERSAND
-0x27 0x0027 #APOSTROPHE
-0x28 0x0028 #LEFT PARENTHESIS
-0x29 0x0029 #RIGHT PARENTHESIS
-0x2A 0x002A #ASTERISK
-0x2B 0x002B #PLUS SIGN
-0x2C 0x002C #COMMA
-0x2D 0x002D #HYPHEN-MINUS
-0x2E 0x002E #FULL STOP
-0x2F 0x002F #SOLIDUS
-0x30 0x0030 #DIGIT ZERO
-0x31 0x0031 #DIGIT ONE
-0x32 0x0032 #DIGIT TWO
-0x33 0x0033 #DIGIT THREE
-0x34 0x0034 #DIGIT FOUR
-0x35 0x0035 #DIGIT FIVE
-0x36 0x0036 #DIGIT SIX
-0x37 0x0037 #DIGIT SEVEN
-0x38 0x0038 #DIGIT EIGHT
-0x39 0x0039 #DIGIT NINE
-0x3A 0x003A #COLON
-0x3B 0x003B #SEMICOLON
-0x3C 0x003C #LESS-THAN SIGN
-0x3D 0x003D #EQUALS SIGN
-0x3E 0x003E #GREATER-THAN SIGN
-0x3F 0x003F #QUESTION MARK
-0x40 0x0040 #COMMERCIAL AT
-0x41 0x0041 #LATIN CAPITAL LETTER A
-0x42 0x0042 #LATIN CAPITAL LETTER B
-0x43 0x0043 #LATIN CAPITAL LETTER C
-0x44 0x0044 #LATIN CAPITAL LETTER D
-0x45 0x0045 #LATIN CAPITAL LETTER E
-0x46 0x0046 #LATIN CAPITAL LETTER F
-0x47 0x0047 #LATIN CAPITAL LETTER G
-0x48 0x0048 #LATIN CAPITAL LETTER H
-0x49 0x0049 #LATIN CAPITAL LETTER I
-0x4A 0x004A #LATIN CAPITAL LETTER J
-0x4B 0x004B #LATIN CAPITAL LETTER K
-0x4C 0x004C #LATIN CAPITAL LETTER L
-0x4D 0x004D #LATIN CAPITAL LETTER M
-0x4E 0x004E #LATIN CAPITAL LETTER N
-0x4F 0x004F #LATIN CAPITAL LETTER O
-0x50 0x0050 #LATIN CAPITAL LETTER P
-0x51 0x0051 #LATIN CAPITAL LETTER Q
-0x52 0x0052 #LATIN CAPITAL LETTER R
-0x53 0x0053 #LATIN CAPITAL LETTER S
-0x54 0x0054 #LATIN CAPITAL LETTER T
-0x55 0x0055 #LATIN CAPITAL LETTER U
-0x56 0x0056 #LATIN CAPITAL LETTER V
-0x57 0x0057 #LATIN CAPITAL LETTER W
-0x58 0x0058 #LATIN CAPITAL LETTER X
-0x59 0x0059 #LATIN CAPITAL LETTER Y
-0x5A 0x005A #LATIN CAPITAL LETTER Z
-0x5B 0x005B #LEFT SQUARE BRACKET
-0x5C 0x005C #REVERSE SOLIDUS
-0x5D 0x005D #RIGHT SQUARE BRACKET
-0x5E 0x005E #CIRCUMFLEX ACCENT
-0x5F 0x005F #LOW LINE
-0x60 0x0060 #GRAVE ACCENT
-0x61 0x0061 #LATIN SMALL LETTER A
-0x62 0x0062 #LATIN SMALL LETTER B
-0x63 0x0063 #LATIN SMALL LETTER C
-0x64 0x0064 #LATIN SMALL LETTER D
-0x65 0x0065 #LATIN SMALL LETTER E
-0x66 0x0066 #LATIN SMALL LETTER F
-0x67 0x0067 #LATIN SMALL LETTER G
-0x68 0x0068 #LATIN SMALL LETTER H
-0x69 0x0069 #LATIN SMALL LETTER I
-0x6A 0x006A #LATIN SMALL LETTER J
-0x6B 0x006B #LATIN SMALL LETTER K
-0x6C 0x006C #LATIN SMALL LETTER L
-0x6D 0x006D #LATIN SMALL LETTER M
-0x6E 0x006E #LATIN SMALL LETTER N
-0x6F 0x006F #LATIN SMALL LETTER O
-0x70 0x0070 #LATIN SMALL LETTER P
-0x71 0x0071 #LATIN SMALL LETTER Q
-0x72 0x0072 #LATIN SMALL LETTER R
-0x73 0x0073 #LATIN SMALL LETTER S
-0x74 0x0074 #LATIN SMALL LETTER T
-0x75 0x0075 #LATIN SMALL LETTER U
-0x76 0x0076 #LATIN SMALL LETTER V
-0x77 0x0077 #LATIN SMALL LETTER W
-0x78 0x0078 #LATIN SMALL LETTER X
-0x79 0x0079 #LATIN SMALL LETTER Y
-0x7A 0x007A #LATIN SMALL LETTER Z
-0x7B 0x007B #LEFT CURLY BRACKET
-0x7C 0x007C #VERTICAL LINE
-0x7D 0x007D #RIGHT CURLY BRACKET
-0x7E 0x007E #TILDE
-0x7F 0x007F #DELETE
-0x80 0x20AC #EURO SIGN
-0x81 #UNDEFINED
-0x82 0x201A #SINGLE LOW-9 QUOTATION MARK
-0x83 0x0192 #LATIN SMALL LETTER F WITH HOOK
-0x84 0x201E #DOUBLE LOW-9 QUOTATION MARK
-0x85 0x2026 #HORIZONTAL ELLIPSIS
-0x86 0x2020 #DAGGER
-0x87 0x2021 #DOUBLE DAGGER
-0x88 0x02C6 #MODIFIER LETTER CIRCUMFLEX ACCENT
-0x89 0x2030 #PER MILLE SIGN
-0x8A #UNDEFINED
-0x8B 0x2039 #SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-0x8C 0x0152 #LATIN CAPITAL LIGATURE OE
-0x8D #UNDEFINED
-0x8E #UNDEFINED
-0x8F #UNDEFINED
-0x90 #UNDEFINED
-0x91 0x2018 #LEFT SINGLE QUOTATION MARK
-0x92 0x2019 #RIGHT SINGLE QUOTATION MARK
-0x93 0x201C #LEFT DOUBLE QUOTATION MARK
-0x94 0x201D #RIGHT DOUBLE QUOTATION MARK
-0x95 0x2022 #BULLET
-0x96 0x2013 #EN DASH
-0x97 0x2014 #EM DASH
-0x98 0x02DC #SMALL TILDE
-0x99 0x2122 #TRADE MARK SIGN
-0x9A #UNDEFINED
-0x9B 0x203A #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-0x9C 0x0153 #LATIN SMALL LIGATURE OE
-0x9D #UNDEFINED
-0x9E #UNDEFINED
-0x9F 0x0178 #LATIN CAPITAL LETTER Y WITH DIAERESIS
-0xA0 0x00A0 #NO-BREAK SPACE
-0xA1 0x00A1 #INVERTED EXCLAMATION MARK
-0xA2 0x00A2 #CENT SIGN
-0xA3 0x00A3 #POUND SIGN
-0xA4 0x00A4 #CURRENCY SIGN
-0xA5 0x00A5 #YEN SIGN
-0xA6 0x00A6 #BROKEN BAR
-0xA7 0x00A7 #SECTION SIGN
-0xA8 0x00A8 #DIAERESIS
-0xA9 0x00A9 #COPYRIGHT SIGN
-0xAA 0x00AA #FEMININE ORDINAL INDICATOR
-0xAB 0x00AB #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xAC 0x00AC #NOT SIGN
-0xAD 0x00AD #SOFT HYPHEN
-0xAE 0x00AE #REGISTERED SIGN
-0xAF 0x00AF #MACRON
-0xB0 0x00B0 #DEGREE SIGN
-0xB1 0x00B1 #PLUS-MINUS SIGN
-0xB2 0x00B2 #SUPERSCRIPT TWO
-0xB3 0x00B3 #SUPERSCRIPT THREE
-0xB4 0x00B4 #ACUTE ACCENT
-0xB5 0x00B5 #MICRO SIGN
-0xB6 0x00B6 #PILCROW SIGN
-0xB7 0x00B7 #MIDDLE DOT
-0xB8 0x00B8 #CEDILLA
-0xB9 0x00B9 #SUPERSCRIPT ONE
-0xBA 0x00BA #MASCULINE ORDINAL INDICATOR
-0xBB 0x00BB #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xBC 0x00BC #VULGAR FRACTION ONE QUARTER
-0xBD 0x00BD #VULGAR FRACTION ONE HALF
-0xBE 0x00BE #VULGAR FRACTION THREE QUARTERS
-0xBF 0x00BF #INVERTED QUESTION MARK
-0xC0 0x00C0 #LATIN CAPITAL LETTER A WITH GRAVE
-0xC1 0x00C1 #LATIN CAPITAL LETTER A WITH ACUTE
-0xC2 0x00C2 #LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-0xC3 0x0102 #LATIN CAPITAL LETTER A WITH BREVE
-0xC4 0x00C4 #LATIN CAPITAL LETTER A WITH DIAERESIS
-0xC5 0x00C5 #LATIN CAPITAL LETTER A WITH RING ABOVE
-0xC6 0x00C6 #LATIN CAPITAL LETTER AE
-0xC7 0x00C7 #LATIN CAPITAL LETTER C WITH CEDILLA
-0xC8 0x00C8 #LATIN CAPITAL LETTER E WITH GRAVE
-0xC9 0x00C9 #LATIN CAPITAL LETTER E WITH ACUTE
-0xCA 0x00CA #LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-0xCB 0x00CB #LATIN CAPITAL LETTER E WITH DIAERESIS
-0xCC 0x0300 #COMBINING GRAVE ACCENT
-0xCD 0x00CD #LATIN CAPITAL LETTER I WITH ACUTE
-0xCE 0x00CE #LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-0xCF 0x00CF #LATIN CAPITAL LETTER I WITH DIAERESIS
-0xD0 0x0110 #LATIN CAPITAL LETTER D WITH STROKE
-0xD1 0x00D1 #LATIN CAPITAL LETTER N WITH TILDE
-0xD2 0x0309 #COMBINING HOOK ABOVE
-0xD3 0x00D3 #LATIN CAPITAL LETTER O WITH ACUTE
-0xD4 0x00D4 #LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-0xD5 0x01A0 #LATIN CAPITAL LETTER O WITH HORN
-0xD6 0x00D6 #LATIN CAPITAL LETTER O WITH DIAERESIS
-0xD7 0x00D7 #MULTIPLICATION SIGN
-0xD8 0x00D8 #LATIN CAPITAL LETTER O WITH STROKE
-0xD9 0x00D9 #LATIN CAPITAL LETTER U WITH GRAVE
-0xDA 0x00DA #LATIN CAPITAL LETTER U WITH ACUTE
-0xDB 0x00DB #LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-0xDC 0x00DC #LATIN CAPITAL LETTER U WITH DIAERESIS
-0xDD 0x01AF #LATIN CAPITAL LETTER U WITH HORN
-0xDE 0x0303 #COMBINING TILDE
-0xDF 0x00DF #LATIN SMALL LETTER SHARP S
-0xE0 0x00E0 #LATIN SMALL LETTER A WITH GRAVE
-0xE1 0x00E1 #LATIN SMALL LETTER A WITH ACUTE
-0xE2 0x00E2 #LATIN SMALL LETTER A WITH CIRCUMFLEX
-0xE3 0x0103 #LATIN SMALL LETTER A WITH BREVE
-0xE4 0x00E4 #LATIN SMALL LETTER A WITH DIAERESIS
-0xE5 0x00E5 #LATIN SMALL LETTER A WITH RING ABOVE
-0xE6 0x00E6 #LATIN SMALL LETTER AE
-0xE7 0x00E7 #LATIN SMALL LETTER C WITH CEDILLA
-0xE8 0x00E8 #LATIN SMALL LETTER E WITH GRAVE
-0xE9 0x00E9 #LATIN SMALL LETTER E WITH ACUTE
-0xEA 0x00EA #LATIN SMALL LETTER E WITH CIRCUMFLEX
-0xEB 0x00EB #LATIN SMALL LETTER E WITH DIAERESIS
-0xEC 0x0301 #COMBINING ACUTE ACCENT
-0xED 0x00ED #LATIN SMALL LETTER I WITH ACUTE
-0xEE 0x00EE #LATIN SMALL LETTER I WITH CIRCUMFLEX
-0xEF 0x00EF #LATIN SMALL LETTER I WITH DIAERESIS
-0xF0 0x0111 #LATIN SMALL LETTER D WITH STROKE
-0xF1 0x00F1 #LATIN SMALL LETTER N WITH TILDE
-0xF2 0x0323 #COMBINING DOT BELOW
-0xF3 0x00F3 #LATIN SMALL LETTER O WITH ACUTE
-0xF4 0x00F4 #LATIN SMALL LETTER O WITH CIRCUMFLEX
-0xF5 0x01A1 #LATIN SMALL LETTER O WITH HORN
-0xF6 0x00F6 #LATIN SMALL LETTER O WITH DIAERESIS
-0xF7 0x00F7 #DIVISION SIGN
-0xF8 0x00F8 #LATIN SMALL LETTER O WITH STROKE
-0xF9 0x00F9 #LATIN SMALL LETTER U WITH GRAVE
-0xFA 0x00FA #LATIN SMALL LETTER U WITH ACUTE
-0xFB 0x00FB #LATIN SMALL LETTER U WITH CIRCUMFLEX
-0xFC 0x00FC #LATIN SMALL LETTER U WITH DIAERESIS
-0xFD 0x01B0 #LATIN SMALL LETTER U WITH HORN
-0xFE 0x20AB #DONG SIGN
-0xFF 0x00FF #LATIN SMALL LETTER Y WITH DIAERESIS
diff --git a/program/lib/encoding/ISO-8859-1.map b/program/lib/encoding/ISO-8859-1.map
deleted file mode 100644
index 473ecabc1..000000000
--- a/program/lib/encoding/ISO-8859-1.map
+++ /dev/null
@@ -1,303 +0,0 @@
-#
-# Name: ISO/IEC 8859-1:1998 to Unicode
-# Unicode version: 3.0
-# Table version: 1.0
-# Table format: Format A
-# Date: 1999 July 27
-# Authors: Ken Whistler <kenw@sybase.com>
-#
-# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
-#
-# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-# No claims are made as to fitness for any particular purpose. No
-# warranties of any kind are expressed or implied. The recipient
-# agrees to determine applicability of information provided. If this
-# file has been provided on optical media by Unicode, Inc., the sole
-# remedy for any claim will be exchange of defective media within 90
-# days of receipt.
-#
-# Unicode, Inc. hereby grants the right to freely use the information
-# supplied in this file in the creation of products supporting the
-# Unicode Standard, and to make copies of this file in any form for
-# internal or external distribution as long as this notice remains
-# attached.
-#
-# General notes:
-#
-# This table contains the data the Unicode Consortium has on how
-# ISO/IEC 8859-1:1998 characters map into Unicode.
-#
-# Format: Three tab-separated columns
-# Column #1 is the ISO/IEC 8859-1 code (in hex as 0xXX)
-# Column #2 is the Unicode (in hex as 0xXXXX)
-# Column #3 the Unicode name (follows a comment sign, '#')
-#
-# The entries are in ISO/IEC 8859-1 order.
-#
-# Version history
-# 1.0 version updates 0.1 version by adding mappings for all
-# control characters.
-#
-# Updated versions of this file may be found in:
-# <ftp://ftp.unicode.org/Public/MAPPINGS/>
-#
-# Any comments or problems, contact <errata@unicode.org>
-# Please note that <errata@unicode.org> is an archival address;
-# notices will be checked, but do not expect an immediate response.
-#
-0x00 0x0000 # NULL
-0x01 0x0001 # START OF HEADING
-0x02 0x0002 # START OF TEXT
-0x03 0x0003 # END OF TEXT
-0x04 0x0004 # END OF TRANSMISSION
-0x05 0x0005 # ENQUIRY
-0x06 0x0006 # ACKNOWLEDGE
-0x07 0x0007 # BELL
-0x08 0x0008 # BACKSPACE
-0x09 0x0009 # HORIZONTAL TABULATION
-0x0A 0x000A # LINE FEED
-0x0B 0x000B # VERTICAL TABULATION
-0x0C 0x000C # FORM FEED
-0x0D 0x000D # CARRIAGE RETURN
-0x0E 0x000E # SHIFT OUT
-0x0F 0x000F # SHIFT IN
-0x10 0x0010 # DATA LINK ESCAPE
-0x11 0x0011 # DEVICE CONTROL ONE
-0x12 0x0012 # DEVICE CONTROL TWO
-0x13 0x0013 # DEVICE CONTROL THREE
-0x14 0x0014 # DEVICE CONTROL FOUR
-0x15 0x0015 # NEGATIVE ACKNOWLEDGE
-0x16 0x0016 # SYNCHRONOUS IDLE
-0x17 0x0017 # END OF TRANSMISSION BLOCK
-0x18 0x0018 # CANCEL
-0x19 0x0019 # END OF MEDIUM
-0x1A 0x001A # SUBSTITUTE
-0x1B 0x001B # ESCAPE
-0x1C 0x001C # FILE SEPARATOR
-0x1D 0x001D # GROUP SEPARATOR
-0x1E 0x001E # RECORD SEPARATOR
-0x1F 0x001F # UNIT SEPARATOR
-0x20 0x0020 # SPACE
-0x21 0x0021 # EXCLAMATION MARK
-0x22 0x0022 # QUOTATION MARK
-0x23 0x0023 # NUMBER SIGN
-0x24 0x0024 # DOLLAR SIGN
-0x25 0x0025 # PERCENT SIGN
-0x26 0x0026 # AMPERSAND
-0x27 0x0027 # APOSTROPHE
-0x28 0x0028 # LEFT PARENTHESIS
-0x29 0x0029 # RIGHT PARENTHESIS
-0x2A 0x002A # ASTERISK
-0x2B 0x002B # PLUS SIGN
-0x2C 0x002C # COMMA
-0x2D 0x002D # HYPHEN-MINUS
-0x2E 0x002E # FULL STOP
-0x2F 0x002F # SOLIDUS
-0x30 0x0030 # DIGIT ZERO
-0x31 0x0031 # DIGIT ONE
-0x32 0x0032 # DIGIT TWO
-0x33 0x0033 # DIGIT THREE
-0x34 0x0034 # DIGIT FOUR
-0x35 0x0035 # DIGIT FIVE
-0x36 0x0036 # DIGIT SIX
-0x37 0x0037 # DIGIT SEVEN
-0x38 0x0038 # DIGIT EIGHT
-0x39 0x0039 # DIGIT NINE
-0x3A 0x003A # COLON
-0x3B 0x003B # SEMICOLON
-0x3C 0x003C # LESS-THAN SIGN
-0x3D 0x003D # EQUALS SIGN
-0x3E 0x003E # GREATER-THAN SIGN
-0x3F 0x003F # QUESTION MARK
-0x40 0x0040 # COMMERCIAL AT
-0x41 0x0041 # LATIN CAPITAL LETTER A
-0x42 0x0042 # LATIN CAPITAL LETTER B
-0x43 0x0043 # LATIN CAPITAL LETTER C
-0x44 0x0044 # LATIN CAPITAL LETTER D
-0x45 0x0045 # LATIN CAPITAL LETTER E
-0x46 0x0046 # LATIN CAPITAL LETTER F
-0x47 0x0047 # LATIN CAPITAL LETTER G
-0x48 0x0048 # LATIN CAPITAL LETTER H
-0x49 0x0049 # LATIN CAPITAL LETTER I
-0x4A 0x004A # LATIN CAPITAL LETTER J
-0x4B 0x004B # LATIN CAPITAL LETTER K
-0x4C 0x004C # LATIN CAPITAL LETTER L
-0x4D 0x004D # LATIN CAPITAL LETTER M
-0x4E 0x004E # LATIN CAPITAL LETTER N
-0x4F 0x004F # LATIN CAPITAL LETTER O
-0x50 0x0050 # LATIN CAPITAL LETTER P
-0x51 0x0051 # LATIN CAPITAL LETTER Q
-0x52 0x0052 # LATIN CAPITAL LETTER R
-0x53 0x0053 # LATIN CAPITAL LETTER S
-0x54 0x0054 # LATIN CAPITAL LETTER T
-0x55 0x0055 # LATIN CAPITAL LETTER U
-0x56 0x0056 # LATIN CAPITAL LETTER V
-0x57 0x0057 # LATIN CAPITAL LETTER W
-0x58 0x0058 # LATIN CAPITAL LETTER X
-0x59 0x0059 # LATIN CAPITAL LETTER Y
-0x5A 0x005A # LATIN CAPITAL LETTER Z
-0x5B 0x005B # LEFT SQUARE BRACKET
-0x5C 0x005C # REVERSE SOLIDUS
-0x5D 0x005D # RIGHT SQUARE BRACKET
-0x5E 0x005E # CIRCUMFLEX ACCENT
-0x5F 0x005F # LOW LINE
-0x60 0x0060 # GRAVE ACCENT
-0x61 0x0061 # LATIN SMALL LETTER A
-0x62 0x0062 # LATIN SMALL LETTER B
-0x63 0x0063 # LATIN SMALL LETTER C
-0x64 0x0064 # LATIN SMALL LETTER D
-0x65 0x0065 # LATIN SMALL LETTER E
-0x66 0x0066 # LATIN SMALL LETTER F
-0x67 0x0067 # LATIN SMALL LETTER G
-0x68 0x0068 # LATIN SMALL LETTER H
-0x69 0x0069 # LATIN SMALL LETTER I
-0x6A 0x006A # LATIN SMALL LETTER J
-0x6B 0x006B # LATIN SMALL LETTER K
-0x6C 0x006C # LATIN SMALL LETTER L
-0x6D 0x006D # LATIN SMALL LETTER M
-0x6E 0x006E # LATIN SMALL LETTER N
-0x6F 0x006F # LATIN SMALL LETTER O
-0x70 0x0070 # LATIN SMALL LETTER P
-0x71 0x0071 # LATIN SMALL LETTER Q
-0x72 0x0072 # LATIN SMALL LETTER R
-0x73 0x0073 # LATIN SMALL LETTER S
-0x74 0x0074 # LATIN SMALL LETTER T
-0x75 0x0075 # LATIN SMALL LETTER U
-0x76 0x0076 # LATIN SMALL LETTER V
-0x77 0x0077 # LATIN SMALL LETTER W
-0x78 0x0078 # LATIN SMALL LETTER X
-0x79 0x0079 # LATIN SMALL LETTER Y
-0x7A 0x007A # LATIN SMALL LETTER Z
-0x7B 0x007B # LEFT CURLY BRACKET
-0x7C 0x007C # VERTICAL LINE
-0x7D 0x007D # RIGHT CURLY BRACKET
-0x7E 0x007E # TILDE
-0x7F 0x007F # DELETE
-0x80 0x0080 # <control>
-0x81 0x0081 # <control>
-0x82 0x0082 # <control>
-0x83 0x0083 # <control>
-0x84 0x0084 # <control>
-0x85 0x0085 # <control>
-0x86 0x0086 # <control>
-0x87 0x0087 # <control>
-0x88 0x0088 # <control>
-0x89 0x0089 # <control>
-0x8A 0x008A # <control>
-0x8B 0x008B # <control>
-0x8C 0x008C # <control>
-0x8D 0x008D # <control>
-0x8E 0x008E # <control>
-0x8F 0x008F # <control>
-0x90 0x0090 # <control>
-0x91 0x0091 # <control>
-0x92 0x0092 # <control>
-0x93 0x0093 # <control>
-0x94 0x0094 # <control>
-0x95 0x0095 # <control>
-0x96 0x0096 # <control>
-0x97 0x0097 # <control>
-0x98 0x0098 # <control>
-0x99 0x0099 # <control>
-0x9A 0x009A # <control>
-0x9B 0x009B # <control>
-0x9C 0x009C # <control>
-0x9D 0x009D # <control>
-0x9E 0x009E # <control>
-0x9F 0x009F # <control>
-0xA0 0x00A0 # NO-BREAK SPACE
-0xA1 0x00A1 # INVERTED EXCLAMATION MARK
-0xA2 0x00A2 # CENT SIGN
-0xA3 0x00A3 # POUND SIGN
-0xA4 0x00A4 # CURRENCY SIGN
-0xA5 0x00A5 # YEN SIGN
-0xA6 0x00A6 # BROKEN BAR
-0xA7 0x00A7 # SECTION SIGN
-0xA8 0x00A8 # DIAERESIS
-0xA9 0x00A9 # COPYRIGHT SIGN
-0xAA 0x00AA # FEMININE ORDINAL INDICATOR
-0xAB 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xAC 0x00AC # NOT SIGN
-0xAD 0x00AD # SOFT HYPHEN
-0xAE 0x00AE # REGISTERED SIGN
-0xAF 0x00AF # MACRON
-0xB0 0x00B0 # DEGREE SIGN
-0xB1 0x00B1 # PLUS-MINUS SIGN
-0xB2 0x00B2 # SUPERSCRIPT TWO
-0xB3 0x00B3 # SUPERSCRIPT THREE
-0xB4 0x00B4 # ACUTE ACCENT
-0xB5 0x00B5 # MICRO SIGN
-0xB6 0x00B6 # PILCROW SIGN
-0xB7 0x00B7 # MIDDLE DOT
-0xB8 0x00B8 # CEDILLA
-0xB9 0x00B9 # SUPERSCRIPT ONE
-0xBA 0x00BA # MASCULINE ORDINAL INDICATOR
-0xBB 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xBC 0x00BC # VULGAR FRACTION ONE QUARTER
-0xBD 0x00BD # VULGAR FRACTION ONE HALF
-0xBE 0x00BE # VULGAR FRACTION THREE QUARTERS
-0xBF 0x00BF # INVERTED QUESTION MARK
-0xC0 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
-0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
-0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-0xC3 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
-0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
-0xC5 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
-0xC6 0x00C6 # LATIN CAPITAL LETTER AE
-0xC7 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
-0xC8 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
-0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
-0xCA 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
-0xCC 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
-0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
-0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-0xCF 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
-0xD0 0x00D0 # LATIN CAPITAL LETTER ETH (Icelandic)
-0xD1 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
-0xD2 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
-0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
-0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-0xD5 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
-0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
-0xD7 0x00D7 # MULTIPLICATION SIGN
-0xD8 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
-0xD9 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
-0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
-0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
-0xDD 0x00DD # LATIN CAPITAL LETTER Y WITH ACUTE
-0xDE 0x00DE # LATIN CAPITAL LETTER THORN (Icelandic)
-0xDF 0x00DF # LATIN SMALL LETTER SHARP S (German)
-0xE0 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
-0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
-0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
-0xE3 0x00E3 # LATIN SMALL LETTER A WITH TILDE
-0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
-0xE5 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
-0xE6 0x00E6 # LATIN SMALL LETTER AE
-0xE7 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
-0xE8 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
-0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
-0xEA 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
-0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
-0xEC 0x00EC # LATIN SMALL LETTER I WITH GRAVE
-0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
-0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
-0xEF 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
-0xF0 0x00F0 # LATIN SMALL LETTER ETH (Icelandic)
-0xF1 0x00F1 # LATIN SMALL LETTER N WITH TILDE
-0xF2 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
-0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
-0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
-0xF5 0x00F5 # LATIN SMALL LETTER O WITH TILDE
-0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
-0xF7 0x00F7 # DIVISION SIGN
-0xF8 0x00F8 # LATIN SMALL LETTER O WITH STROKE
-0xF9 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
-0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
-0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
-0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
-0xFD 0x00FD # LATIN SMALL LETTER Y WITH ACUTE
-0xFE 0x00FE # LATIN SMALL LETTER THORN (Icelandic)
-0xFF 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS
diff --git a/program/lib/encoding/ISO-8859-10.map b/program/lib/encoding/ISO-8859-10.map
deleted file mode 100644
index 374a42b1a..000000000
--- a/program/lib/encoding/ISO-8859-10.map
+++ /dev/null
@@ -1,303 +0,0 @@
-#
-# Name: ISO/IEC 8859-10:1998 to Unicode
-# Unicode version: 3.0
-# Table version: 1.1
-# Table format: Format A
-# Date: 1999 October 11
-# Authors: Ken Whistler <kenw@sybase.com>
-#
-# Copyright (c) 1999 Unicode, Inc. All Rights reserved.
-#
-# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-# No claims are made as to fitness for any particular purpose. No
-# warranties of any kind are expressed or implied. The recipient
-# agrees to determine applicability of information provided. If this
-# file has been provided on optical media by Unicode, Inc., the sole
-# remedy for any claim will be exchange of defective media within 90
-# days of receipt.
-#
-# Unicode, Inc. hereby grants the right to freely use the information
-# supplied in this file in the creation of products supporting the
-# Unicode Standard, and to make copies of this file in any form for
-# internal or external distribution as long as this notice remains
-# attached.
-#
-# General notes:
-#
-# This table contains the data the Unicode Consortium has on how
-# ISO/IEC 8859-10:1998 characters map into Unicode.
-#
-# Format: Three tab-separated columns
-# Column #1 is the ISO/IEC 8859-10 code (in hex as 0xXX)
-# Column #2 is the Unicode (in hex as 0xXXXX)
-# Column #3 the Unicode name (follows a comment sign, '#')
-#
-# The entries are in ISO/IEC 8859-10 order.
-#
-# Version history
-# 1.0 version new.
-# 1.1 corrected mistake in mapping of 0xA4
-#
-# Updated versions of this file may be found in:
-# <ftp://ftp.unicode.org/Public/MAPPINGS/>
-#
-# Any comments or problems, contact <errata@unicode.org>
-# Please note that <errata@unicode.org> is an archival address;
-# notices will be checked, but do not expect an immediate response.
-#
-0x00 0x0000 # NULL
-0x01 0x0001 # START OF HEADING
-0x02 0x0002 # START OF TEXT
-0x03 0x0003 # END OF TEXT
-0x04 0x0004 # END OF TRANSMISSION
-0x05 0x0005 # ENQUIRY
-0x06 0x0006 # ACKNOWLEDGE
-0x07 0x0007 # BELL
-0x08 0x0008 # BACKSPACE
-0x09 0x0009 # HORIZONTAL TABULATION
-0x0A 0x000A # LINE FEED
-0x0B 0x000B # VERTICAL TABULATION
-0x0C 0x000C # FORM FEED
-0x0D 0x000D # CARRIAGE RETURN
-0x0E 0x000E # SHIFT OUT
-0x0F 0x000F # SHIFT IN
-0x10 0x0010 # DATA LINK ESCAPE
-0x11 0x0011 # DEVICE CONTROL ONE
-0x12 0x0012 # DEVICE CONTROL TWO
-0x13 0x0013 # DEVICE CONTROL THREE
-0x14 0x0014 # DEVICE CONTROL FOUR
-0x15 0x0015 # NEGATIVE ACKNOWLEDGE
-0x16 0x0016 # SYNCHRONOUS IDLE
-0x17 0x0017 # END OF TRANSMISSION BLOCK
-0x18 0x0018 # CANCEL
-0x19 0x0019 # END OF MEDIUM
-0x1A 0x001A # SUBSTITUTE
-0x1B 0x001B # ESCAPE
-0x1C 0x001C # FILE SEPARATOR
-0x1D 0x001D # GROUP SEPARATOR
-0x1E 0x001E # RECORD SEPARATOR
-0x1F 0x001F # UNIT SEPARATOR
-0x20 0x0020 # SPACE
-0x21 0x0021 # EXCLAMATION MARK
-0x22 0x0022 # QUOTATION MARK
-0x23 0x0023 # NUMBER SIGN
-0x24 0x0024 # DOLLAR SIGN
-0x25 0x0025 # PERCENT SIGN
-0x26 0x0026 # AMPERSAND
-0x27 0x0027 # APOSTROPHE
-0x28 0x0028 # LEFT PARENTHESIS
-0x29 0x0029 # RIGHT PARENTHESIS
-0x2A 0x002A # ASTERISK
-0x2B 0x002B # PLUS SIGN
-0x2C 0x002C # COMMA
-0x2D 0x002D # HYPHEN-MINUS
-0x2E 0x002E # FULL STOP
-0x2F 0x002F # SOLIDUS
-0x30 0x0030 # DIGIT ZERO
-0x31 0x0031 # DIGIT ONE
-0x32 0x0032 # DIGIT TWO
-0x33 0x0033 # DIGIT THREE
-0x34 0x0034 # DIGIT FOUR
-0x35 0x0035 # DIGIT FIVE
-0x36 0x0036 # DIGIT SIX
-0x37 0x0037 # DIGIT SEVEN
-0x38 0x0038 # DIGIT EIGHT
-0x39 0x0039 # DIGIT NINE
-0x3A 0x003A # COLON
-0x3B 0x003B # SEMICOLON
-0x3C 0x003C # LESS-THAN SIGN
-0x3D 0x003D # EQUALS SIGN
-0x3E 0x003E # GREATER-THAN SIGN
-0x3F 0x003F # QUESTION MARK
-0x40 0x0040 # COMMERCIAL AT
-0x41 0x0041 # LATIN CAPITAL LETTER A
-0x42 0x0042 # LATIN CAPITAL LETTER B
-0x43 0x0043 # LATIN CAPITAL LETTER C
-0x44 0x0044 # LATIN CAPITAL LETTER D
-0x45 0x0045 # LATIN CAPITAL LETTER E
-0x46 0x0046 # LATIN CAPITAL LETTER F
-0x47 0x0047 # LATIN CAPITAL LETTER G
-0x48 0x0048 # LATIN CAPITAL LETTER H
-0x49 0x0049 # LATIN CAPITAL LETTER I
-0x4A 0x004A # LATIN CAPITAL LETTER J
-0x4B 0x004B # LATIN CAPITAL LETTER K
-0x4C 0x004C # LATIN CAPITAL LETTER L
-0x4D 0x004D # LATIN CAPITAL LETTER M
-0x4E 0x004E # LATIN CAPITAL LETTER N
-0x4F 0x004F # LATIN CAPITAL LETTER O
-0x50 0x0050 # LATIN CAPITAL LETTER P
-0x51 0x0051 # LATIN CAPITAL LETTER Q
-0x52 0x0052 # LATIN CAPITAL LETTER R
-0x53 0x0053 # LATIN CAPITAL LETTER S
-0x54 0x0054 # LATIN CAPITAL LETTER T
-0x55 0x0055 # LATIN CAPITAL LETTER U
-0x56 0x0056 # LATIN CAPITAL LETTER V
-0x57 0x0057 # LATIN CAPITAL LETTER W
-0x58 0x0058 # LATIN CAPITAL LETTER X
-0x59 0x0059 # LATIN CAPITAL LETTER Y
-0x5A 0x005A # LATIN CAPITAL LETTER Z
-0x5B 0x005B # LEFT SQUARE BRACKET
-0x5C 0x005C # REVERSE SOLIDUS
-0x5D 0x005D # RIGHT SQUARE BRACKET
-0x5E 0x005E # CIRCUMFLEX ACCENT
-0x5F 0x005F # LOW LINE
-0x60 0x0060 # GRAVE ACCENT
-0x61 0x0061 # LATIN SMALL LETTER A
-0x62 0x0062 # LATIN SMALL LETTER B
-0x63 0x0063 # LATIN SMALL LETTER C
-0x64 0x0064 # LATIN SMALL LETTER D
-0x65 0x0065 # LATIN SMALL LETTER E
-0x66 0x0066 # LATIN SMALL LETTER F
-0x67 0x0067 # LATIN SMALL LETTER G
-0x68 0x0068 # LATIN SMALL LETTER H
-0x69 0x0069 # LATIN SMALL LETTER I
-0x6A 0x006A # LATIN SMALL LETTER J
-0x6B 0x006B # LATIN SMALL LETTER K
-0x6C 0x006C # LATIN SMALL LETTER L
-0x6D 0x006D # LATIN SMALL LETTER M
-0x6E 0x006E # LATIN SMALL LETTER N
-0x6F 0x006F # LATIN SMALL LETTER O
-0x70 0x0070 # LATIN SMALL LETTER P
-0x71 0x0071 # LATIN SMALL LETTER Q
-0x72 0x0072 # LATIN SMALL LETTER R
-0x73 0x0073 # LATIN SMALL LETTER S
-0x74 0x0074 # LATIN SMALL LETTER T
-0x75 0x0075 # LATIN SMALL LETTER U
-0x76 0x0076 # LATIN SMALL LETTER V
-0x77 0x0077 # LATIN SMALL LETTER W
-0x78 0x0078 # LATIN SMALL LETTER X
-0x79 0x0079 # LATIN SMALL LETTER Y
-0x7A 0x007A # LATIN SMALL LETTER Z
-0x7B 0x007B # LEFT CURLY BRACKET
-0x7C 0x007C # VERTICAL LINE
-0x7D 0x007D # RIGHT CURLY BRACKET
-0x7E 0x007E # TILDE
-0x7F 0x007F # DELETE
-0x80 0x0080 # <control>
-0x81 0x0081 # <control>
-0x82 0x0082 # <control>
-0x83 0x0083 # <control>
-0x84 0x0084 # <control>
-0x85 0x0085 # <control>
-0x86 0x0086 # <control>
-0x87 0x0087 # <control>
-0x88 0x0088 # <control>
-0x89 0x0089 # <control>
-0x8A 0x008A # <control>
-0x8B 0x008B # <control>
-0x8C 0x008C # <control>
-0x8D 0x008D # <control>
-0x8E 0x008E # <control>
-0x8F 0x008F # <control>
-0x90 0x0090 # <control>
-0x91 0x0091 # <control>
-0x92 0x0092 # <control>
-0x93 0x0093 # <control>
-0x94 0x0094 # <control>
-0x95 0x0095 # <control>
-0x96 0x0096 # <control>
-0x97 0x0097 # <control>
-0x98 0x0098 # <control>
-0x99 0x0099 # <control>
-0x9A 0x009A # <control>
-0x9B 0x009B # <control>
-0x9C 0x009C # <control>
-0x9D 0x009D # <control>
-0x9E 0x009E # <control>
-0x9F 0x009F # <control>
-0xA0 0x00A0 # NO-BREAK SPACE
-0xA1 0x0104 # LATIN CAPITAL LETTER A WITH OGONEK
-0xA2 0x0112 # LATIN CAPITAL LETTER E WITH MACRON
-0xA3 0x0122 # LATIN CAPITAL LETTER G WITH CEDILLA
-0xA4 0x012A # LATIN CAPITAL LETTER I WITH MACRON
-0xA5 0x0128 # LATIN CAPITAL LETTER I WITH TILDE
-0xA6 0x0136 # LATIN CAPITAL LETTER K WITH CEDILLA
-0xA7 0x00A7 # SECTION SIGN
-0xA8 0x013B # LATIN CAPITAL LETTER L WITH CEDILLA
-0xA9 0x0110 # LATIN CAPITAL LETTER D WITH STROKE
-0xAA 0x0160 # LATIN CAPITAL LETTER S WITH CARON
-0xAB 0x0166 # LATIN CAPITAL LETTER T WITH STROKE
-0xAC 0x017D # LATIN CAPITAL LETTER Z WITH CARON
-0xAD 0x00AD # SOFT HYPHEN
-0xAE 0x016A # LATIN CAPITAL LETTER U WITH MACRON
-0xAF 0x014A # LATIN CAPITAL LETTER ENG
-0xB0 0x00B0 # DEGREE SIGN
-0xB1 0x0105 # LATIN SMALL LETTER A WITH OGONEK
-0xB2 0x0113 # LATIN SMALL LETTER E WITH MACRON
-0xB3 0x0123 # LATIN SMALL LETTER G WITH CEDILLA
-0xB4 0x012B # LATIN SMALL LETTER I WITH MACRON
-0xB5 0x0129 # LATIN SMALL LETTER I WITH TILDE
-0xB6 0x0137 # LATIN SMALL LETTER K WITH CEDILLA
-0xB7 0x00B7 # MIDDLE DOT
-0xB8 0x013C # LATIN SMALL LETTER L WITH CEDILLA
-0xB9 0x0111 # LATIN SMALL LETTER D WITH STROKE
-0xBA 0x0161 # LATIN SMALL LETTER S WITH CARON
-0xBB 0x0167 # LATIN SMALL LETTER T WITH STROKE
-0xBC 0x017E # LATIN SMALL LETTER Z WITH CARON
-0xBD 0x2015 # HORIZONTAL BAR
-0xBE 0x016B # LATIN SMALL LETTER U WITH MACRON
-0xBF 0x014B # LATIN SMALL LETTER ENG
-0xC0 0x0100 # LATIN CAPITAL LETTER A WITH MACRON
-0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
-0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-0xC3 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
-0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
-0xC5 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
-0xC6 0x00C6 # LATIN CAPITAL LETTER AE
-0xC7 0x012E # LATIN CAPITAL LETTER I WITH OGONEK
-0xC8 0x010C # LATIN CAPITAL LETTER C WITH CARON
-0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
-0xCA 0x0118 # LATIN CAPITAL LETTER E WITH OGONEK
-0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
-0xCC 0x0116 # LATIN CAPITAL LETTER E WITH DOT ABOVE
-0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
-0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-0xCF 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
-0xD0 0x00D0 # LATIN CAPITAL LETTER ETH (Icelandic)
-0xD1 0x0145 # LATIN CAPITAL LETTER N WITH CEDILLA
-0xD2 0x014C # LATIN CAPITAL LETTER O WITH MACRON
-0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
-0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-0xD5 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
-0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
-0xD7 0x0168 # LATIN CAPITAL LETTER U WITH TILDE
-0xD8 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
-0xD9 0x0172 # LATIN CAPITAL LETTER U WITH OGONEK
-0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
-0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
-0xDD 0x00DD # LATIN CAPITAL LETTER Y WITH ACUTE
-0xDE 0x00DE # LATIN CAPITAL LETTER THORN (Icelandic)
-0xDF 0x00DF # LATIN SMALL LETTER SHARP S (German)
-0xE0 0x0101 # LATIN SMALL LETTER A WITH MACRON
-0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
-0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
-0xE3 0x00E3 # LATIN SMALL LETTER A WITH TILDE
-0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
-0xE5 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
-0xE6 0x00E6 # LATIN SMALL LETTER AE
-0xE7 0x012F # LATIN SMALL LETTER I WITH OGONEK
-0xE8 0x010D # LATIN SMALL LETTER C WITH CARON
-0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
-0xEA 0x0119 # LATIN SMALL LETTER E WITH OGONEK
-0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
-0xEC 0x0117 # LATIN SMALL LETTER E WITH DOT ABOVE
-0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
-0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
-0xEF 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
-0xF0 0x00F0 # LATIN SMALL LETTER ETH (Icelandic)
-0xF1 0x0146 # LATIN SMALL LETTER N WITH CEDILLA
-0xF2 0x014D # LATIN SMALL LETTER O WITH MACRON
-0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
-0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
-0xF5 0x00F5 # LATIN SMALL LETTER O WITH TILDE
-0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
-0xF7 0x0169 # LATIN SMALL LETTER U WITH TILDE
-0xF8 0x00F8 # LATIN SMALL LETTER O WITH STROKE
-0xF9 0x0173 # LATIN SMALL LETTER U WITH OGONEK
-0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
-0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
-0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
-0xFD 0x00FD # LATIN SMALL LETTER Y WITH ACUTE
-0xFE 0x00FE # LATIN SMALL LETTER THORN (Icelandic)
-0xFF 0x0138 # LATIN SMALL LETTER KRA
diff --git a/program/lib/encoding/ISO-8859-11.map b/program/lib/encoding/ISO-8859-11.map
deleted file mode 100644
index 192bd9d7c..000000000
--- a/program/lib/encoding/ISO-8859-11.map
+++ /dev/null
@@ -1,297 +0,0 @@
-#
-# Name: ISO/IEC 8859-11:2001 to Unicode
-# Unicode version: 3.2
-# Table version: 1.0
-# Table format: Format A
-# Date: 2002 October 7
-# Authors: Ken Whistler <kenw@sybase.com>
-#
-# Copyright (c) 2002 Unicode, Inc. All Rights reserved.
-#
-# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-# No claims are made as to fitness for any particular purpose. No
-# warranties of any kind are expressed or implied. The recipient
-# agrees to determine applicability of information provided. If this
-# file has been provided on optical media by Unicode, Inc., the sole
-# remedy for any claim will be exchange of defective media within 90
-# days of receipt.
-#
-# Unicode, Inc. hereby grants the right to freely use the information
-# supplied in this file in the creation of products supporting the
-# Unicode Standard, and to make copies of this file in any form for
-# internal or external distribution as long as this notice remains
-# attached.
-#
-# General notes:
-#
-# This table contains the data the Unicode Consortium has on how
-# ISO/IEC 8859-11:2001 characters map into Unicode.
-#
-# ISO/IEC 8859-11:2001 is equivalent to TIS 620-2533 (1990) with
-# the addition of 0xA0 NO-BREAK SPACE.
-#
-# Format: Three tab-separated columns
-# Column #1 is the ISO/IEC 8859-11 code (in hex as 0xXX)
-# Column #2 is the Unicode (in hex as 0xXXXX)
-# Column #3 the Unicode name (follows a comment sign, '#')
-#
-# The entries are in ISO/IEC 8859-11 order.
-#
-# Version history:
-# 2002 October 7 Created
-#
-# Updated versions of this file may be found in:
-# <ftp://ftp.unicode.org/Public/MAPPINGS/>
-#
-# For any comments or problems, please use the Unicode
-# web contact form at:
-# http://www.unicode.org/unicode/reporting.html
-#
-0x00 0x0000 # NULL
-0x01 0x0001 # START OF HEADING
-0x02 0x0002 # START OF TEXT
-0x03 0x0003 # END OF TEXT
-0x04 0x0004 # END OF TRANSMISSION
-0x05 0x0005 # ENQUIRY
-0x06 0x0006 # ACKNOWLEDGE
-0x07 0x0007 # BELL
-0x08 0x0008 # BACKSPACE
-0x09 0x0009 # HORIZONTAL TABULATION
-0x0A 0x000A # LINE FEED
-0x0B 0x000B # VERTICAL TABULATION
-0x0C 0x000C # FORM FEED
-0x0D 0x000D # CARRIAGE RETURN
-0x0E 0x000E # SHIFT OUT
-0x0F 0x000F # SHIFT IN
-0x10 0x0010 # DATA LINK ESCAPE
-0x11 0x0011 # DEVICE CONTROL ONE
-0x12 0x0012 # DEVICE CONTROL TWO
-0x13 0x0013 # DEVICE CONTROL THREE
-0x14 0x0014 # DEVICE CONTROL FOUR
-0x15 0x0015 # NEGATIVE ACKNOWLEDGE
-0x16 0x0016 # SYNCHRONOUS IDLE
-0x17 0x0017 # END OF TRANSMISSION BLOCK
-0x18 0x0018 # CANCEL
-0x19 0x0019 # END OF MEDIUM
-0x1A 0x001A # SUBSTITUTE
-0x1B 0x001B # ESCAPE
-0x1C 0x001C # FILE SEPARATOR
-0x1D 0x001D # GROUP SEPARATOR
-0x1E 0x001E # RECORD SEPARATOR
-0x1F 0x001F # UNIT SEPARATOR
-0x20 0x0020 # SPACE
-0x21 0x0021 # EXCLAMATION MARK
-0x22 0x0022 # QUOTATION MARK
-0x23 0x0023 # NUMBER SIGN
-0x24 0x0024 # DOLLAR SIGN
-0x25 0x0025 # PERCENT SIGN
-0x26 0x0026 # AMPERSAND
-0x27 0x0027 # APOSTROPHE
-0x28 0x0028 # LEFT PARENTHESIS
-0x29 0x0029 # RIGHT PARENTHESIS
-0x2A 0x002A # ASTERISK
-0x2B 0x002B # PLUS SIGN
-0x2C 0x002C # COMMA
-0x2D 0x002D # HYPHEN-MINUS
-0x2E 0x002E # FULL STOP
-0x2F 0x002F # SOLIDUS
-0x30 0x0030 # DIGIT ZERO
-0x31 0x0031 # DIGIT ONE
-0x32 0x0032 # DIGIT TWO
-0x33 0x0033 # DIGIT THREE
-0x34 0x0034 # DIGIT FOUR
-0x35 0x0035 # DIGIT FIVE
-0x36 0x0036 # DIGIT SIX
-0x37 0x0037 # DIGIT SEVEN
-0x38 0x0038 # DIGIT EIGHT
-0x39 0x0039 # DIGIT NINE
-0x3A 0x003A # COLON
-0x3B 0x003B # SEMICOLON
-0x3C 0x003C # LESS-THAN SIGN
-0x3D 0x003D # EQUALS SIGN
-0x3E 0x003E # GREATER-THAN SIGN
-0x3F 0x003F # QUESTION MARK
-0x40 0x0040 # COMMERCIAL AT
-0x41 0x0041 # LATIN CAPITAL LETTER A
-0x42 0x0042 # LATIN CAPITAL LETTER B
-0x43 0x0043 # LATIN CAPITAL LETTER C
-0x44 0x0044 # LATIN CAPITAL LETTER D
-0x45 0x0045 # LATIN CAPITAL LETTER E
-0x46 0x0046 # LATIN CAPITAL LETTER F
-0x47 0x0047 # LATIN CAPITAL LETTER G
-0x48 0x0048 # LATIN CAPITAL LETTER H
-0x49 0x0049 # LATIN CAPITAL LETTER I
-0x4A 0x004A # LATIN CAPITAL LETTER J
-0x4B 0x004B # LATIN CAPITAL LETTER K
-0x4C 0x004C # LATIN CAPITAL LETTER L
-0x4D 0x004D # LATIN CAPITAL LETTER M
-0x4E 0x004E # LATIN CAPITAL LETTER N
-0x4F 0x004F # LATIN CAPITAL LETTER O
-0x50 0x0050 # LATIN CAPITAL LETTER P
-0x51 0x0051 # LATIN CAPITAL LETTER Q
-0x52 0x0052 # LATIN CAPITAL LETTER R
-0x53 0x0053 # LATIN CAPITAL LETTER S
-0x54 0x0054 # LATIN CAPITAL LETTER T
-0x55 0x0055 # LATIN CAPITAL LETTER U
-0x56 0x0056 # LATIN CAPITAL LETTER V
-0x57 0x0057 # LATIN CAPITAL LETTER W
-0x58 0x0058 # LATIN CAPITAL LETTER X
-0x59 0x0059 # LATIN CAPITAL LETTER Y
-0x5A 0x005A # LATIN CAPITAL LETTER Z
-0x5B 0x005B # LEFT SQUARE BRACKET
-0x5C 0x005C # REVERSE SOLIDUS
-0x5D 0x005D # RIGHT SQUARE BRACKET
-0x5E 0x005E # CIRCUMFLEX ACCENT
-0x5F 0x005F # LOW LINE
-0x60 0x0060 # GRAVE ACCENT
-0x61 0x0061 # LATIN SMALL LETTER A
-0x62 0x0062 # LATIN SMALL LETTER B
-0x63 0x0063 # LATIN SMALL LETTER C
-0x64 0x0064 # LATIN SMALL LETTER D
-0x65 0x0065 # LATIN SMALL LETTER E
-0x66 0x0066 # LATIN SMALL LETTER F
-0x67 0x0067 # LATIN SMALL LETTER G
-0x68 0x0068 # LATIN SMALL LETTER H
-0x69 0x0069 # LATIN SMALL LETTER I
-0x6A 0x006A # LATIN SMALL LETTER J
-0x6B 0x006B # LATIN SMALL LETTER K
-0x6C 0x006C # LATIN SMALL LETTER L
-0x6D 0x006D # LATIN SMALL LETTER M
-0x6E 0x006E # LATIN SMALL LETTER N
-0x6F 0x006F # LATIN SMALL LETTER O
-0x70 0x0070 # LATIN SMALL LETTER P
-0x71 0x0071 # LATIN SMALL LETTER Q
-0x72 0x0072 # LATIN SMALL LETTER R
-0x73 0x0073 # LATIN SMALL LETTER S
-0x74 0x0074 # LATIN SMALL LETTER T
-0x75 0x0075 # LATIN SMALL LETTER U
-0x76 0x0076 # LATIN SMALL LETTER V
-0x77 0x0077 # LATIN SMALL LETTER W
-0x78 0x0078 # LATIN SMALL LETTER X
-0x79 0x0079 # LATIN SMALL LETTER Y
-0x7A 0x007A # LATIN SMALL LETTER Z
-0x7B 0x007B # LEFT CURLY BRACKET
-0x7C 0x007C # VERTICAL LINE
-0x7D 0x007D # RIGHT CURLY BRACKET
-0x7E 0x007E # TILDE
-0x7F 0x007F # DELETE
-0x80 0x0080 # <control>
-0x81 0x0081 # <control>
-0x82 0x0082 # <control>
-0x83 0x0083 # <control>
-0x84 0x0084 # <control>
-0x85 0x0085 # <control>
-0x86 0x0086 # <control>
-0x87 0x0087 # <control>
-0x88 0x0088 # <control>
-0x89 0x0089 # <control>
-0x8A 0x008A # <control>
-0x8B 0x008B # <control>
-0x8C 0x008C # <control>
-0x8D 0x008D # <control>
-0x8E 0x008E # <control>
-0x8F 0x008F # <control>
-0x90 0x0090 # <control>
-0x91 0x0091 # <control>
-0x92 0x0092 # <control>
-0x93 0x0093 # <control>
-0x94 0x0094 # <control>
-0x95 0x0095 # <control>
-0x96 0x0096 # <control>
-0x97 0x0097 # <control>
-0x98 0x0098 # <control>
-0x99 0x0099 # <control>
-0x9A 0x009A # <control>
-0x9B 0x009B # <control>
-0x9C 0x009C # <control>
-0x9D 0x009D # <control>
-0x9E 0x009E # <control>
-0x9F 0x009F # <control>
-0xA0 0x00A0 # NO-BREAK SPACE
-0xA1 0x0E01 # THAI CHARACTER KO KAI
-0xA2 0x0E02 # THAI CHARACTER KHO KHAI
-0xA3 0x0E03 # THAI CHARACTER KHO KHUAT
-0xA4 0x0E04 # THAI CHARACTER KHO KHWAI
-0xA5 0x0E05 # THAI CHARACTER KHO KHON
-0xA6 0x0E06 # THAI CHARACTER KHO RAKHANG
-0xA7 0x0E07 # THAI CHARACTER NGO NGU
-0xA8 0x0E08 # THAI CHARACTER CHO CHAN
-0xA9 0x0E09 # THAI CHARACTER CHO CHING
-0xAA 0x0E0A # THAI CHARACTER CHO CHANG
-0xAB 0x0E0B # THAI CHARACTER SO SO
-0xAC 0x0E0C # THAI CHARACTER CHO CHOE
-0xAD 0x0E0D # THAI CHARACTER YO YING
-0xAE 0x0E0E # THAI CHARACTER DO CHADA
-0xAF 0x0E0F # THAI CHARACTER TO PATAK
-0xB0 0x0E10 # THAI CHARACTER THO THAN
-0xB1 0x0E11 # THAI CHARACTER THO NANGMONTHO
-0xB2 0x0E12 # THAI CHARACTER THO PHUTHAO
-0xB3 0x0E13 # THAI CHARACTER NO NEN
-0xB4 0x0E14 # THAI CHARACTER DO DEK
-0xB5 0x0E15 # THAI CHARACTER TO TAO
-0xB6 0x0E16 # THAI CHARACTER THO THUNG
-0xB7 0x0E17 # THAI CHARACTER THO THAHAN
-0xB8 0x0E18 # THAI CHARACTER THO THONG
-0xB9 0x0E19 # THAI CHARACTER NO NU
-0xBA 0x0E1A # THAI CHARACTER BO BAIMAI
-0xBB 0x0E1B # THAI CHARACTER PO PLA
-0xBC 0x0E1C # THAI CHARACTER PHO PHUNG
-0xBD 0x0E1D # THAI CHARACTER FO FA
-0xBE 0x0E1E # THAI CHARACTER PHO PHAN
-0xBF 0x0E1F # THAI CHARACTER FO FAN
-0xC0 0x0E20 # THAI CHARACTER PHO SAMPHAO
-0xC1 0x0E21 # THAI CHARACTER MO MA
-0xC2 0x0E22 # THAI CHARACTER YO YAK
-0xC3 0x0E23 # THAI CHARACTER RO RUA
-0xC4 0x0E24 # THAI CHARACTER RU
-0xC5 0x0E25 # THAI CHARACTER LO LING
-0xC6 0x0E26 # THAI CHARACTER LU
-0xC7 0x0E27 # THAI CHARACTER WO WAEN
-0xC8 0x0E28 # THAI CHARACTER SO SALA
-0xC9 0x0E29 # THAI CHARACTER SO RUSI
-0xCA 0x0E2A # THAI CHARACTER SO SUA
-0xCB 0x0E2B # THAI CHARACTER HO HIP
-0xCC 0x0E2C # THAI CHARACTER LO CHULA
-0xCD 0x0E2D # THAI CHARACTER O ANG
-0xCE 0x0E2E # THAI CHARACTER HO NOKHUK
-0xCF 0x0E2F # THAI CHARACTER PAIYANNOI
-0xD0 0x0E30 # THAI CHARACTER SARA A
-0xD1 0x0E31 # THAI CHARACTER MAI HAN-AKAT
-0xD2 0x0E32 # THAI CHARACTER SARA AA
-0xD3 0x0E33 # THAI CHARACTER SARA AM
-0xD4 0x0E34 # THAI CHARACTER SARA I
-0xD5 0x0E35 # THAI CHARACTER SARA II
-0xD6 0x0E36 # THAI CHARACTER SARA UE
-0xD7 0x0E37 # THAI CHARACTER SARA UEE
-0xD8 0x0E38 # THAI CHARACTER SARA U
-0xD9 0x0E39 # THAI CHARACTER SARA UU
-0xDA 0x0E3A # THAI CHARACTER PHINTHU
-0xDF 0x0E3F # THAI CURRENCY SYMBOL BAHT
-0xE0 0x0E40 # THAI CHARACTER SARA E
-0xE1 0x0E41 # THAI CHARACTER SARA AE
-0xE2 0x0E42 # THAI CHARACTER SARA O
-0xE3 0x0E43 # THAI CHARACTER SARA AI MAIMUAN
-0xE4 0x0E44 # THAI CHARACTER SARA AI MAIMALAI
-0xE5 0x0E45 # THAI CHARACTER LAKKHANGYAO
-0xE6 0x0E46 # THAI CHARACTER MAIYAMOK
-0xE7 0x0E47 # THAI CHARACTER MAITAIKHU
-0xE8 0x0E48 # THAI CHARACTER MAI EK
-0xE9 0x0E49 # THAI CHARACTER MAI THO
-0xEA 0x0E4A # THAI CHARACTER MAI TRI
-0xEB 0x0E4B # THAI CHARACTER MAI CHATTAWA
-0xEC 0x0E4C # THAI CHARACTER THANTHAKHAT
-0xED 0x0E4D # THAI CHARACTER NIKHAHIT
-0xEE 0x0E4E # THAI CHARACTER YAMAKKAN
-0xEF 0x0E4F # THAI CHARACTER FONGMAN
-0xF0 0x0E50 # THAI DIGIT ZERO
-0xF1 0x0E51 # THAI DIGIT ONE
-0xF2 0x0E52 # THAI DIGIT TWO
-0xF3 0x0E53 # THAI DIGIT THREE
-0xF4 0x0E54 # THAI DIGIT FOUR
-0xF5 0x0E55 # THAI DIGIT FIVE
-0xF6 0x0E56 # THAI DIGIT SIX
-0xF7 0x0E57 # THAI DIGIT SEVEN
-0xF8 0x0E58 # THAI DIGIT EIGHT
-0xF9 0x0E59 # THAI DIGIT NINE
-0xFA 0x0E5A # THAI CHARACTER ANGKHANKHU
-0xFB 0x0E5B # THAI CHARACTER KHOMUT
diff --git a/program/lib/encoding/ISO-8859-13.map b/program/lib/encoding/ISO-8859-13.map
deleted file mode 100644
index cd11b53fd..000000000
--- a/program/lib/encoding/ISO-8859-13.map
+++ /dev/null
@@ -1,299 +0,0 @@
-#
-# Name: ISO/IEC 8859-13:1998 to Unicode
-# Unicode version: 3.0
-# Table version: 1.0
-# Table format: Format A
-# Date: 1999 July 27
-# Authors: Ken Whistler <kenw@sybase.com>
-#
-# Copyright (c) 1998 - 1999 Unicode, Inc. All Rights reserved.
-#
-# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-# No claims are made as to fitness for any particular purpose. No
-# warranties of any kind are expressed or implied. The recipient
-# agrees to determine applicability of information provided. If this
-# file has been provided on optical media by Unicode, Inc., the sole
-# remedy for any claim will be exchange of defective media within 90
-# days of receipt.
-#
-# Unicode, Inc. hereby grants the right to freely use the information
-# supplied in this file in the creation of products supporting the
-# Unicode Standard, and to make copies of this file in any form for
-# internal or external distribution as long as this notice remains
-# attached.
-#
-# General notes:
-#
-# This table contains the data the Unicode Consortium has on how
-# ISO/IEC 8859-13:1998 characters map into Unicode.
-#
-# Format: Three tab-separated columns
-# Column #1 is the ISO/IEC 8859-13 code (in hex as 0xXX)
-# Column #2 is the Unicode (in hex as 0xXXXX)
-# Column #3 the Unicode name (follows a comment sign, '#')
-#
-# The entries are in ISO/IEC 8859-13 order.
-#
-# Updated versions of this file may be found in:
-# <ftp://ftp.unicode.org/Public/MAPPINGS/>
-#
-# Any comments or problems, contact <errata@unicode.org>
-# Please note that <errata@unicode.org> is an archival address;
-# notices will be checked, but do not expect an immediate response.
-#
-0x00 0x0000 # NULL
-0x01 0x0001 # START OF HEADING
-0x02 0x0002 # START OF TEXT
-0x03 0x0003 # END OF TEXT
-0x04 0x0004 # END OF TRANSMISSION
-0x05 0x0005 # ENQUIRY
-0x06 0x0006 # ACKNOWLEDGE
-0x07 0x0007 # BELL
-0x08 0x0008 # BACKSPACE
-0x09 0x0009 # HORIZONTAL TABULATION
-0x0A 0x000A # LINE FEED
-0x0B 0x000B # VERTICAL TABULATION
-0x0C 0x000C # FORM FEED
-0x0D 0x000D # CARRIAGE RETURN
-0x0E 0x000E # SHIFT OUT
-0x0F 0x000F # SHIFT IN
-0x10 0x0010 # DATA LINK ESCAPE
-0x11 0x0011 # DEVICE CONTROL ONE
-0x12 0x0012 # DEVICE CONTROL TWO
-0x13 0x0013 # DEVICE CONTROL THREE
-0x14 0x0014 # DEVICE CONTROL FOUR
-0x15 0x0015 # NEGATIVE ACKNOWLEDGE
-0x16 0x0016 # SYNCHRONOUS IDLE
-0x17 0x0017 # END OF TRANSMISSION BLOCK
-0x18 0x0018 # CANCEL
-0x19 0x0019 # END OF MEDIUM
-0x1A 0x001A # SUBSTITUTE
-0x1B 0x001B # ESCAPE
-0x1C 0x001C # FILE SEPARATOR
-0x1D 0x001D # GROUP SEPARATOR
-0x1E 0x001E # RECORD SEPARATOR
-0x1F 0x001F # UNIT SEPARATOR
-0x20 0x0020 # SPACE
-0x21 0x0021 # EXCLAMATION MARK
-0x22 0x0022 # QUOTATION MARK
-0x23 0x0023 # NUMBER SIGN
-0x24 0x0024 # DOLLAR SIGN
-0x25 0x0025 # PERCENT SIGN
-0x26 0x0026 # AMPERSAND
-0x27 0x0027 # APOSTROPHE
-0x28 0x0028 # LEFT PARENTHESIS
-0x29 0x0029 # RIGHT PARENTHESIS
-0x2A 0x002A # ASTERISK
-0x2B 0x002B # PLUS SIGN
-0x2C 0x002C # COMMA
-0x2D 0x002D # HYPHEN-MINUS
-0x2E 0x002E # FULL STOP
-0x2F 0x002F # SOLIDUS
-0x30 0x0030 # DIGIT ZERO
-0x31 0x0031 # DIGIT ONE
-0x32 0x0032 # DIGIT TWO
-0x33 0x0033 # DIGIT THREE
-0x34 0x0034 # DIGIT FOUR
-0x35 0x0035 # DIGIT FIVE
-0x36 0x0036 # DIGIT SIX
-0x37 0x0037 # DIGIT SEVEN
-0x38 0x0038 # DIGIT EIGHT
-0x39 0x0039 # DIGIT NINE
-0x3A 0x003A # COLON
-0x3B 0x003B # SEMICOLON
-0x3C 0x003C # LESS-THAN SIGN
-0x3D 0x003D # EQUALS SIGN
-0x3E 0x003E # GREATER-THAN SIGN
-0x3F 0x003F # QUESTION MARK
-0x40 0x0040 # COMMERCIAL AT
-0x41 0x0041 # LATIN CAPITAL LETTER A
-0x42 0x0042 # LATIN CAPITAL LETTER B
-0x43 0x0043 # LATIN CAPITAL LETTER C
-0x44 0x0044 # LATIN CAPITAL LETTER D
-0x45 0x0045 # LATIN CAPITAL LETTER E
-0x46 0x0046 # LATIN CAPITAL LETTER F
-0x47 0x0047 # LATIN CAPITAL LETTER G
-0x48 0x0048 # LATIN CAPITAL LETTER H
-0x49 0x0049 # LATIN CAPITAL LETTER I
-0x4A 0x004A # LATIN CAPITAL LETTER J
-0x4B 0x004B # LATIN CAPITAL LETTER K
-0x4C 0x004C # LATIN CAPITAL LETTER L
-0x4D 0x004D # LATIN CAPITAL LETTER M
-0x4E 0x004E # LATIN CAPITAL LETTER N
-0x4F 0x004F # LATIN CAPITAL LETTER O
-0x50 0x0050 # LATIN CAPITAL LETTER P
-0x51 0x0051 # LATIN CAPITAL LETTER Q
-0x52 0x0052 # LATIN CAPITAL LETTER R
-0x53 0x0053 # LATIN CAPITAL LETTER S
-0x54 0x0054 # LATIN CAPITAL LETTER T
-0x55 0x0055 # LATIN CAPITAL LETTER U
-0x56 0x0056 # LATIN CAPITAL LETTER V
-0x57 0x0057 # LATIN CAPITAL LETTER W
-0x58 0x0058 # LATIN CAPITAL LETTER X
-0x59 0x0059 # LATIN CAPITAL LETTER Y
-0x5A 0x005A # LATIN CAPITAL LETTER Z
-0x5B 0x005B # LEFT SQUARE BRACKET
-0x5C 0x005C # REVERSE SOLIDUS
-0x5D 0x005D # RIGHT SQUARE BRACKET
-0x5E 0x005E # CIRCUMFLEX ACCENT
-0x5F 0x005F # LOW LINE
-0x60 0x0060 # GRAVE ACCENT
-0x61 0x0061 # LATIN SMALL LETTER A
-0x62 0x0062 # LATIN SMALL LETTER B
-0x63 0x0063 # LATIN SMALL LETTER C
-0x64 0x0064 # LATIN SMALL LETTER D
-0x65 0x0065 # LATIN SMALL LETTER E
-0x66 0x0066 # LATIN SMALL LETTER F
-0x67 0x0067 # LATIN SMALL LETTER G
-0x68 0x0068 # LATIN SMALL LETTER H
-0x69 0x0069 # LATIN SMALL LETTER I
-0x6A 0x006A # LATIN SMALL LETTER J
-0x6B 0x006B # LATIN SMALL LETTER K
-0x6C 0x006C # LATIN SMALL LETTER L
-0x6D 0x006D # LATIN SMALL LETTER M
-0x6E 0x006E # LATIN SMALL LETTER N
-0x6F 0x006F # LATIN SMALL LETTER O
-0x70 0x0070 # LATIN SMALL LETTER P
-0x71 0x0071 # LATIN SMALL LETTER Q
-0x72 0x0072 # LATIN SMALL LETTER R
-0x73 0x0073 # LATIN SMALL LETTER S
-0x74 0x0074 # LATIN SMALL LETTER T
-0x75 0x0075 # LATIN SMALL LETTER U
-0x76 0x0076 # LATIN SMALL LETTER V
-0x77 0x0077 # LATIN SMALL LETTER W
-0x78 0x0078 # LATIN SMALL LETTER X
-0x79 0x0079 # LATIN SMALL LETTER Y
-0x7A 0x007A # LATIN SMALL LETTER Z
-0x7B 0x007B # LEFT CURLY BRACKET
-0x7C 0x007C # VERTICAL LINE
-0x7D 0x007D # RIGHT CURLY BRACKET
-0x7E 0x007E # TILDE
-0x7F 0x007F # DELETE
-0x80 0x0080 # <control>
-0x81 0x0081 # <control>
-0x82 0x0082 # <control>
-0x83 0x0083 # <control>
-0x84 0x0084 # <control>
-0x85 0x0085 # <control>
-0x86 0x0086 # <control>
-0x87 0x0087 # <control>
-0x88 0x0088 # <control>
-0x89 0x0089 # <control>
-0x8A 0x008A # <control>
-0x8B 0x008B # <control>
-0x8C 0x008C # <control>
-0x8D 0x008D # <control>
-0x8E 0x008E # <control>
-0x8F 0x008F # <control>
-0x90 0x0090 # <control>
-0x91 0x0091 # <control>
-0x92 0x0092 # <control>
-0x93 0x0093 # <control>
-0x94 0x0094 # <control>
-0x95 0x0095 # <control>
-0x96 0x0096 # <control>
-0x97 0x0097 # <control>
-0x98 0x0098 # <control>
-0x99 0x0099 # <control>
-0x9A 0x009A # <control>
-0x9B 0x009B # <control>
-0x9C 0x009C # <control>
-0x9D 0x009D # <control>
-0x9E 0x009E # <control>
-0x9F 0x009F # <control>
-0xA0 0x00A0 # NO-BREAK SPACE
-0xA1 0x201D # RIGHT DOUBLE QUOTATION MARK
-0xA2 0x00A2 # CENT SIGN
-0xA3 0x00A3 # POUND SIGN
-0xA4 0x00A4 # CURRENCY SIGN
-0xA5 0x201E # DOUBLE LOW-9 QUOTATION MARK
-0xA6 0x00A6 # BROKEN BAR
-0xA7 0x00A7 # SECTION SIGN
-0xA8 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
-0xA9 0x00A9 # COPYRIGHT SIGN
-0xAA 0x0156 # LATIN CAPITAL LETTER R WITH CEDILLA
-0xAB 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xAC 0x00AC # NOT SIGN
-0xAD 0x00AD # SOFT HYPHEN
-0xAE 0x00AE # REGISTERED SIGN
-0xAF 0x00C6 # LATIN CAPITAL LETTER AE
-0xB0 0x00B0 # DEGREE SIGN
-0xB1 0x00B1 # PLUS-MINUS SIGN
-0xB2 0x00B2 # SUPERSCRIPT TWO
-0xB3 0x00B3 # SUPERSCRIPT THREE
-0xB4 0x201C # LEFT DOUBLE QUOTATION MARK
-0xB5 0x00B5 # MICRO SIGN
-0xB6 0x00B6 # PILCROW SIGN
-0xB7 0x00B7 # MIDDLE DOT
-0xB8 0x00F8 # LATIN SMALL LETTER O WITH STROKE
-0xB9 0x00B9 # SUPERSCRIPT ONE
-0xBA 0x0157 # LATIN SMALL LETTER R WITH CEDILLA
-0xBB 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xBC 0x00BC # VULGAR FRACTION ONE QUARTER
-0xBD 0x00BD # VULGAR FRACTION ONE HALF
-0xBE 0x00BE # VULGAR FRACTION THREE QUARTERS
-0xBF 0x00E6 # LATIN SMALL LETTER AE
-0xC0 0x0104 # LATIN CAPITAL LETTER A WITH OGONEK
-0xC1 0x012E # LATIN CAPITAL LETTER I WITH OGONEK
-0xC2 0x0100 # LATIN CAPITAL LETTER A WITH MACRON
-0xC3 0x0106 # LATIN CAPITAL LETTER C WITH ACUTE
-0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
-0xC5 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
-0xC6 0x0118 # LATIN CAPITAL LETTER E WITH OGONEK
-0xC7 0x0112 # LATIN CAPITAL LETTER E WITH MACRON
-0xC8 0x010C # LATIN CAPITAL LETTER C WITH CARON
-0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
-0xCA 0x0179 # LATIN CAPITAL LETTER Z WITH ACUTE
-0xCB 0x0116 # LATIN CAPITAL LETTER E WITH DOT ABOVE
-0xCC 0x0122 # LATIN CAPITAL LETTER G WITH CEDILLA
-0xCD 0x0136 # LATIN CAPITAL LETTER K WITH CEDILLA
-0xCE 0x012A # LATIN CAPITAL LETTER I WITH MACRON
-0xCF 0x013B # LATIN CAPITAL LETTER L WITH CEDILLA
-0xD0 0x0160 # LATIN CAPITAL LETTER S WITH CARON
-0xD1 0x0143 # LATIN CAPITAL LETTER N WITH ACUTE
-0xD2 0x0145 # LATIN CAPITAL LETTER N WITH CEDILLA
-0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
-0xD4 0x014C # LATIN CAPITAL LETTER O WITH MACRON
-0xD5 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
-0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
-0xD7 0x00D7 # MULTIPLICATION SIGN
-0xD8 0x0172 # LATIN CAPITAL LETTER U WITH OGONEK
-0xD9 0x0141 # LATIN CAPITAL LETTER L WITH STROKE
-0xDA 0x015A # LATIN CAPITAL LETTER S WITH ACUTE
-0xDB 0x016A # LATIN CAPITAL LETTER U WITH MACRON
-0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
-0xDD 0x017B # LATIN CAPITAL LETTER Z WITH DOT ABOVE
-0xDE 0x017D # LATIN CAPITAL LETTER Z WITH CARON
-0xDF 0x00DF # LATIN SMALL LETTER SHARP S (German)
-0xE0 0x0105 # LATIN SMALL LETTER A WITH OGONEK
-0xE1 0x012F # LATIN SMALL LETTER I WITH OGONEK
-0xE2 0x0101 # LATIN SMALL LETTER A WITH MACRON
-0xE3 0x0107 # LATIN SMALL LETTER C WITH ACUTE
-0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
-0xE5 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
-0xE6 0x0119 # LATIN SMALL LETTER E WITH OGONEK
-0xE7 0x0113 # LATIN SMALL LETTER E WITH MACRON
-0xE8 0x010D # LATIN SMALL LETTER C WITH CARON
-0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
-0xEA 0x017A # LATIN SMALL LETTER Z WITH ACUTE
-0xEB 0x0117 # LATIN SMALL LETTER E WITH DOT ABOVE
-0xEC 0x0123 # LATIN SMALL LETTER G WITH CEDILLA
-0xED 0x0137 # LATIN SMALL LETTER K WITH CEDILLA
-0xEE 0x012B # LATIN SMALL LETTER I WITH MACRON
-0xEF 0x013C # LATIN SMALL LETTER L WITH CEDILLA
-0xF0 0x0161 # LATIN SMALL LETTER S WITH CARON
-0xF1 0x0144 # LATIN SMALL LETTER N WITH ACUTE
-0xF2 0x0146 # LATIN SMALL LETTER N WITH CEDILLA
-0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
-0xF4 0x014D # LATIN SMALL LETTER O WITH MACRON
-0xF5 0x00F5 # LATIN SMALL LETTER O WITH TILDE
-0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
-0xF7 0x00F7 # DIVISION SIGN
-0xF8 0x0173 # LATIN SMALL LETTER U WITH OGONEK
-0xF9 0x0142 # LATIN SMALL LETTER L WITH STROKE
-0xFA 0x015B # LATIN SMALL LETTER S WITH ACUTE
-0xFB 0x016B # LATIN SMALL LETTER U WITH MACRON
-0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
-0xFD 0x017C # LATIN SMALL LETTER Z WITH DOT ABOVE
-0xFE 0x017E # LATIN SMALL LETTER Z WITH CARON
-0xFF 0x2019 # RIGHT SINGLE QUOTATION MARK
diff --git a/program/lib/encoding/ISO-8859-14.map b/program/lib/encoding/ISO-8859-14.map
deleted file mode 100644
index 73e98555e..000000000
--- a/program/lib/encoding/ISO-8859-14.map
+++ /dev/null
@@ -1,301 +0,0 @@
-#
-# Name: ISO/IEC 8859-14:1998 to Unicode
-# Unicode version: 3.0
-# Table version: 1.0
-# Table format: Format A
-# Date: 1999 July 27
-# Authors: Markus Kuhn <http://www.cl.cam.ac.uk/~mgk25/>
-# Ken Whistler <kenw@sybase.com>
-#
-# Copyright (c) 1998 - 1999 Unicode, Inc. All Rights reserved.
-#
-# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-# No claims are made as to fitness for any particular purpose. No
-# warranties of any kind are expressed or implied. The recipient
-# agrees to determine applicability of information provided. If this
-# file has been provided on optical media by Unicode, Inc., the sole
-# remedy for any claim will be exchange of defective media within 90
-# days of receipt.
-#
-# Unicode, Inc. hereby grants the right to freely use the information
-# supplied in this file in the creation of products supporting the
-# Unicode Standard, and to make copies of this file in any form for
-# internal or external distribution as long as this notice remains
-# attached.
-#
-# General notes:
-#
-# This table contains the data the Unicode Consortium has on how
-# ISO/IEC 8859-14:1998 characters map into Unicode.
-#
-# Format: Three tab-separated columns
-# Column #1 is the ISO/IEC 8859-14 code (in hex as 0xXX)
-# Column #2 is the Unicode (in hex as 0xXXXX)
-# Column #3 the Unicode name (follows a comment sign, '#')
-#
-# The entries are in ISO/IEC 8859-14 order.
-#
-# Updated versions of this file may be found in:
-# <ftp://ftp.unicode.org/Public/MAPPINGS/>
-#
-# Any comments or problems, contact <errata@unicode.org>
-# Please note that <errata@unicode.org> is an archival address;
-# notices will be checked, but do not expect an immediate response.
-#
-0x00 0x0000 # NULL
-0x01 0x0001 # START OF HEADING
-0x02 0x0002 # START OF TEXT
-0x03 0x0003 # END OF TEXT
-0x04 0x0004 # END OF TRANSMISSION
-0x05 0x0005 # ENQUIRY
-0x06 0x0006 # ACKNOWLEDGE
-0x07 0x0007 # BELL
-0x08 0x0008 # BACKSPACE
-0x09 0x0009 # HORIZONTAL TABULATION
-0x0A 0x000A # LINE FEED
-0x0B 0x000B # VERTICAL TABULATION
-0x0C 0x000C # FORM FEED
-0x0D 0x000D # CARRIAGE RETURN
-0x0E 0x000E # SHIFT OUT
-0x0F 0x000F # SHIFT IN
-0x10 0x0010 # DATA LINK ESCAPE
-0x11 0x0011 # DEVICE CONTROL ONE
-0x12 0x0012 # DEVICE CONTROL TWO
-0x13 0x0013 # DEVICE CONTROL THREE
-0x14 0x0014 # DEVICE CONTROL FOUR
-0x15 0x0015 # NEGATIVE ACKNOWLEDGE
-0x16 0x0016 # SYNCHRONOUS IDLE
-0x17 0x0017 # END OF TRANSMISSION BLOCK
-0x18 0x0018 # CANCEL
-0x19 0x0019 # END OF MEDIUM
-0x1A 0x001A # SUBSTITUTE
-0x1B 0x001B # ESCAPE
-0x1C 0x001C # FILE SEPARATOR
-0x1D 0x001D # GROUP SEPARATOR
-0x1E 0x001E # RECORD SEPARATOR
-0x1F 0x001F # UNIT SEPARATOR
-0x20 0x0020 # SPACE
-0x21 0x0021 # EXCLAMATION MARK
-0x22 0x0022 # QUOTATION MARK
-0x23 0x0023 # NUMBER SIGN
-0x24 0x0024 # DOLLAR SIGN
-0x25 0x0025 # PERCENT SIGN
-0x26 0x0026 # AMPERSAND
-0x27 0x0027 # APOSTROPHE
-0x28 0x0028 # LEFT PARENTHESIS
-0x29 0x0029 # RIGHT PARENTHESIS
-0x2A 0x002A # ASTERISK
-0x2B 0x002B # PLUS SIGN
-0x2C 0x002C # COMMA
-0x2D 0x002D # HYPHEN-MINUS
-0x2E 0x002E # FULL STOP
-0x2F 0x002F # SOLIDUS
-0x30 0x0030 # DIGIT ZERO
-0x31 0x0031 # DIGIT ONE
-0x32 0x0032 # DIGIT TWO
-0x33 0x0033 # DIGIT THREE
-0x34 0x0034 # DIGIT FOUR
-0x35 0x0035 # DIGIT FIVE
-0x36 0x0036 # DIGIT SIX
-0x37 0x0037 # DIGIT SEVEN
-0x38 0x0038 # DIGIT EIGHT
-0x39 0x0039 # DIGIT NINE
-0x3A 0x003A # COLON
-0x3B 0x003B # SEMICOLON
-0x3C 0x003C # LESS-THAN SIGN
-0x3D 0x003D # EQUALS SIGN
-0x3E 0x003E # GREATER-THAN SIGN
-0x3F 0x003F # QUESTION MARK
-0x40 0x0040 # COMMERCIAL AT
-0x41 0x0041 # LATIN CAPITAL LETTER A
-0x42 0x0042 # LATIN CAPITAL LETTER B
-0x43 0x0043 # LATIN CAPITAL LETTER C
-0x44 0x0044 # LATIN CAPITAL LETTER D
-0x45 0x0045 # LATIN CAPITAL LETTER E
-0x46 0x0046 # LATIN CAPITAL LETTER F
-0x47 0x0047 # LATIN CAPITAL LETTER G
-0x48 0x0048 # LATIN CAPITAL LETTER H
-0x49 0x0049 # LATIN CAPITAL LETTER I
-0x4A 0x004A # LATIN CAPITAL LETTER J
-0x4B 0x004B # LATIN CAPITAL LETTER K
-0x4C 0x004C # LATIN CAPITAL LETTER L
-0x4D 0x004D # LATIN CAPITAL LETTER M
-0x4E 0x004E # LATIN CAPITAL LETTER N
-0x4F 0x004F # LATIN CAPITAL LETTER O
-0x50 0x0050 # LATIN CAPITAL LETTER P
-0x51 0x0051 # LATIN CAPITAL LETTER Q
-0x52 0x0052 # LATIN CAPITAL LETTER R
-0x53 0x0053 # LATIN CAPITAL LETTER S
-0x54 0x0054 # LATIN CAPITAL LETTER T
-0x55 0x0055 # LATIN CAPITAL LETTER U
-0x56 0x0056 # LATIN CAPITAL LETTER V
-0x57 0x0057 # LATIN CAPITAL LETTER W
-0x58 0x0058 # LATIN CAPITAL LETTER X
-0x59 0x0059 # LATIN CAPITAL LETTER Y
-0x5A 0x005A # LATIN CAPITAL LETTER Z
-0x5B 0x005B # LEFT SQUARE BRACKET
-0x5C 0x005C # REVERSE SOLIDUS
-0x5D 0x005D # RIGHT SQUARE BRACKET
-0x5E 0x005E # CIRCUMFLEX ACCENT
-0x5F 0x005F # LOW LINE
-0x60 0x0060 # GRAVE ACCENT
-0x61 0x0061 # LATIN SMALL LETTER A
-0x62 0x0062 # LATIN SMALL LETTER B
-0x63 0x0063 # LATIN SMALL LETTER C
-0x64 0x0064 # LATIN SMALL LETTER D
-0x65 0x0065 # LATIN SMALL LETTER E
-0x66 0x0066 # LATIN SMALL LETTER F
-0x67 0x0067 # LATIN SMALL LETTER G
-0x68 0x0068 # LATIN SMALL LETTER H
-0x69 0x0069 # LATIN SMALL LETTER I
-0x6A 0x006A # LATIN SMALL LETTER J
-0x6B 0x006B # LATIN SMALL LETTER K
-0x6C 0x006C # LATIN SMALL LETTER L
-0x6D 0x006D # LATIN SMALL LETTER M
-0x6E 0x006E # LATIN SMALL LETTER N
-0x6F 0x006F # LATIN SMALL LETTER O
-0x70 0x0070 # LATIN SMALL LETTER P
-0x71 0x0071 # LATIN SMALL LETTER Q
-0x72 0x0072 # LATIN SMALL LETTER R
-0x73 0x0073 # LATIN SMALL LETTER S
-0x74 0x0074 # LATIN SMALL LETTER T
-0x75 0x0075 # LATIN SMALL LETTER U
-0x76 0x0076 # LATIN SMALL LETTER V
-0x77 0x0077 # LATIN SMALL LETTER W
-0x78 0x0078 # LATIN SMALL LETTER X
-0x79 0x0079 # LATIN SMALL LETTER Y
-0x7A 0x007A # LATIN SMALL LETTER Z
-0x7B 0x007B # LEFT CURLY BRACKET
-0x7C 0x007C # VERTICAL LINE
-0x7D 0x007D # RIGHT CURLY BRACKET
-0x7E 0x007E # TILDE
-0x7F 0x007F # DELETE
-0x80 0x0080 # <control>
-0x81 0x0081 # <control>
-0x82 0x0082 # <control>
-0x83 0x0083 # <control>
-0x84 0x0084 # <control>
-0x85 0x0085 # <control>
-0x86 0x0086 # <control>
-0x87 0x0087 # <control>
-0x88 0x0088 # <control>
-0x89 0x0089 # <control>
-0x8A 0x008A # <control>
-0x8B 0x008B # <control>
-0x8C 0x008C # <control>
-0x8D 0x008D # <control>
-0x8E 0x008E # <control>
-0x8F 0x008F # <control>
-0x90 0x0090 # <control>
-0x91 0x0091 # <control>
-0x92 0x0092 # <control>
-0x93 0x0093 # <control>
-0x94 0x0094 # <control>
-0x95 0x0095 # <control>
-0x96 0x0096 # <control>
-0x97 0x0097 # <control>
-0x98 0x0098 # <control>
-0x99 0x0099 # <control>
-0x9A 0x009A # <control>
-0x9B 0x009B # <control>
-0x9C 0x009C # <control>
-0x9D 0x009D # <control>
-0x9E 0x009E # <control>
-0x9F 0x009F # <control>
-0xA0 0x00A0 # NO-BREAK SPACE
-0xA1 0x1E02 # LATIN CAPITAL LETTER B WITH DOT ABOVE
-0xA2 0x1E03 # LATIN SMALL LETTER B WITH DOT ABOVE
-0xA3 0x00A3 # POUND SIGN
-0xA4 0x010A # LATIN CAPITAL LETTER C WITH DOT ABOVE
-0xA5 0x010B # LATIN SMALL LETTER C WITH DOT ABOVE
-0xA6 0x1E0A # LATIN CAPITAL LETTER D WITH DOT ABOVE
-0xA7 0x00A7 # SECTION SIGN
-0xA8 0x1E80 # LATIN CAPITAL LETTER W WITH GRAVE
-0xA9 0x00A9 # COPYRIGHT SIGN
-0xAA 0x1E82 # LATIN CAPITAL LETTER W WITH ACUTE
-0xAB 0x1E0B # LATIN SMALL LETTER D WITH DOT ABOVE
-0xAC 0x1EF2 # LATIN CAPITAL LETTER Y WITH GRAVE
-0xAD 0x00AD # SOFT HYPHEN
-0xAE 0x00AE # REGISTERED SIGN
-0xAF 0x0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS
-0xB0 0x1E1E # LATIN CAPITAL LETTER F WITH DOT ABOVE
-0xB1 0x1E1F # LATIN SMALL LETTER F WITH DOT ABOVE
-0xB2 0x0120 # LATIN CAPITAL LETTER G WITH DOT ABOVE
-0xB3 0x0121 # LATIN SMALL LETTER G WITH DOT ABOVE
-0xB4 0x1E40 # LATIN CAPITAL LETTER M WITH DOT ABOVE
-0xB5 0x1E41 # LATIN SMALL LETTER M WITH DOT ABOVE
-0xB6 0x00B6 # PILCROW SIGN
-0xB7 0x1E56 # LATIN CAPITAL LETTER P WITH DOT ABOVE
-0xB8 0x1E81 # LATIN SMALL LETTER W WITH GRAVE
-0xB9 0x1E57 # LATIN SMALL LETTER P WITH DOT ABOVE
-0xBA 0x1E83 # LATIN SMALL LETTER W WITH ACUTE
-0xBB 0x1E60 # LATIN CAPITAL LETTER S WITH DOT ABOVE
-0xBC 0x1EF3 # LATIN SMALL LETTER Y WITH GRAVE
-0xBD 0x1E84 # LATIN CAPITAL LETTER W WITH DIAERESIS
-0xBE 0x1E85 # LATIN SMALL LETTER W WITH DIAERESIS
-0xBF 0x1E61 # LATIN SMALL LETTER S WITH DOT ABOVE
-0xC0 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
-0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
-0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-0xC3 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
-0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
-0xC5 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
-0xC6 0x00C6 # LATIN CAPITAL LETTER AE
-0xC7 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
-0xC8 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
-0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
-0xCA 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
-0xCC 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
-0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
-0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-0xCF 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
-0xD0 0x0174 # LATIN CAPITAL LETTER W WITH CIRCUMFLEX
-0xD1 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
-0xD2 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
-0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
-0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-0xD5 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
-0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
-0xD7 0x1E6A # LATIN CAPITAL LETTER T WITH DOT ABOVE
-0xD8 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
-0xD9 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
-0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
-0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
-0xDD 0x00DD # LATIN CAPITAL LETTER Y WITH ACUTE
-0xDE 0x0176 # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
-0xDF 0x00DF # LATIN SMALL LETTER SHARP S
-0xE0 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
-0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
-0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
-0xE3 0x00E3 # LATIN SMALL LETTER A WITH TILDE
-0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
-0xE5 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
-0xE6 0x00E6 # LATIN SMALL LETTER AE
-0xE7 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
-0xE8 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
-0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
-0xEA 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
-0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
-0xEC 0x00EC # LATIN SMALL LETTER I WITH GRAVE
-0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
-0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
-0xEF 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
-0xF0 0x0175 # LATIN SMALL LETTER W WITH CIRCUMFLEX
-0xF1 0x00F1 # LATIN SMALL LETTER N WITH TILDE
-0xF2 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
-0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
-0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
-0xF5 0x00F5 # LATIN SMALL LETTER O WITH TILDE
-0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
-0xF7 0x1E6B # LATIN SMALL LETTER T WITH DOT ABOVE
-0xF8 0x00F8 # LATIN SMALL LETTER O WITH STROKE
-0xF9 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
-0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
-0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
-0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
-0xFD 0x00FD # LATIN SMALL LETTER Y WITH ACUTE
-0xFE 0x0177 # LATIN SMALL LETTER Y WITH CIRCUMFLEX
-0xFF 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS
-
diff --git a/program/lib/encoding/ISO-8859-15.map b/program/lib/encoding/ISO-8859-15.map
deleted file mode 100644
index ab2f32fce..000000000
--- a/program/lib/encoding/ISO-8859-15.map
+++ /dev/null
@@ -1,303 +0,0 @@
-#
-# Name: ISO/IEC 8859-15:1999 to Unicode
-# Unicode version: 3.0
-# Table version: 1.0
-# Table format: Format A
-# Date: 1999 July 27
-# Authors: Markus Kuhn <http://www.cl.cam.ac.uk/~mgk25/>
-# Ken Whistler <kenw@sybase.com>
-#
-# Copyright (c) 1998 - 1999 Unicode, Inc. All Rights reserved.
-#
-# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-# No claims are made as to fitness for any particular purpose. No
-# warranties of any kind are expressed or implied. The recipient
-# agrees to determine applicability of information provided. If this
-# file has been provided on optical media by Unicode, Inc., the sole
-# remedy for any claim will be exchange of defective media within 90
-# days of receipt.
-#
-# Unicode, Inc. hereby grants the right to freely use the information
-# supplied in this file in the creation of products supporting the
-# Unicode Standard, and to make copies of this file in any form for
-# internal or external distribution as long as this notice remains
-# attached.
-#
-# General notes:
-#
-# This table contains the data the Unicode Consortium has on how
-# ISO/IEC 8859-15:1999 characters map into Unicode.
-#
-# Format: Three tab-separated columns
-# Column #1 is the ISO/IEC 8859-15 code (in hex as 0xXX)
-# Column #2 is the Unicode (in hex as 0xXXXX)
-# Column #3 the Unicode name (follows a comment sign, '#')
-#
-# The entries are in ISO/IEC 8859-15 order.
-#
-# Version history
-#
-# Updated versions of this file may be found in:
-# <ftp://ftp.unicode.org/Public/MAPPINGS/>
-#
-# Any comments or problems, contact <errata@unicode.org>
-# Please note that <errata@unicode.org> is an archival address;
-# notices will be checked, but do not expect an immediate response.
-#
-0x00 0x0000 # NULL
-0x01 0x0001 # START OF HEADING
-0x02 0x0002 # START OF TEXT
-0x03 0x0003 # END OF TEXT
-0x04 0x0004 # END OF TRANSMISSION
-0x05 0x0005 # ENQUIRY
-0x06 0x0006 # ACKNOWLEDGE
-0x07 0x0007 # BELL
-0x08 0x0008 # BACKSPACE
-0x09 0x0009 # HORIZONTAL TABULATION
-0x0A 0x000A # LINE FEED
-0x0B 0x000B # VERTICAL TABULATION
-0x0C 0x000C # FORM FEED
-0x0D 0x000D # CARRIAGE RETURN
-0x0E 0x000E # SHIFT OUT
-0x0F 0x000F # SHIFT IN
-0x10 0x0010 # DATA LINK ESCAPE
-0x11 0x0011 # DEVICE CONTROL ONE
-0x12 0x0012 # DEVICE CONTROL TWO
-0x13 0x0013 # DEVICE CONTROL THREE
-0x14 0x0014 # DEVICE CONTROL FOUR
-0x15 0x0015 # NEGATIVE ACKNOWLEDGE
-0x16 0x0016 # SYNCHRONOUS IDLE
-0x17 0x0017 # END OF TRANSMISSION BLOCK
-0x18 0x0018 # CANCEL
-0x19 0x0019 # END OF MEDIUM
-0x1A 0x001A # SUBSTITUTE
-0x1B 0x001B # ESCAPE
-0x1C 0x001C # FILE SEPARATOR
-0x1D 0x001D # GROUP SEPARATOR
-0x1E 0x001E # RECORD SEPARATOR
-0x1F 0x001F # UNIT SEPARATOR
-0x20 0x0020 # SPACE
-0x21 0x0021 # EXCLAMATION MARK
-0x22 0x0022 # QUOTATION MARK
-0x23 0x0023 # NUMBER SIGN
-0x24 0x0024 # DOLLAR SIGN
-0x25 0x0025 # PERCENT SIGN
-0x26 0x0026 # AMPERSAND
-0x27 0x0027 # APOSTROPHE
-0x28 0x0028 # LEFT PARENTHESIS
-0x29 0x0029 # RIGHT PARENTHESIS
-0x2A 0x002A # ASTERISK
-0x2B 0x002B # PLUS SIGN
-0x2C 0x002C # COMMA
-0x2D 0x002D # HYPHEN-MINUS
-0x2E 0x002E # FULL STOP
-0x2F 0x002F # SOLIDUS
-0x30 0x0030 # DIGIT ZERO
-0x31 0x0031 # DIGIT ONE
-0x32 0x0032 # DIGIT TWO
-0x33 0x0033 # DIGIT THREE
-0x34 0x0034 # DIGIT FOUR
-0x35 0x0035 # DIGIT FIVE
-0x36 0x0036 # DIGIT SIX
-0x37 0x0037 # DIGIT SEVEN
-0x38 0x0038 # DIGIT EIGHT
-0x39 0x0039 # DIGIT NINE
-0x3A 0x003A # COLON
-0x3B 0x003B # SEMICOLON
-0x3C 0x003C # LESS-THAN SIGN
-0x3D 0x003D # EQUALS SIGN
-0x3E 0x003E # GREATER-THAN SIGN
-0x3F 0x003F # QUESTION MARK
-0x40 0x0040 # COMMERCIAL AT
-0x41 0x0041 # LATIN CAPITAL LETTER A
-0x42 0x0042 # LATIN CAPITAL LETTER B
-0x43 0x0043 # LATIN CAPITAL LETTER C
-0x44 0x0044 # LATIN CAPITAL LETTER D
-0x45 0x0045 # LATIN CAPITAL LETTER E
-0x46 0x0046 # LATIN CAPITAL LETTER F
-0x47 0x0047 # LATIN CAPITAL LETTER G
-0x48 0x0048 # LATIN CAPITAL LETTER H
-0x49 0x0049 # LATIN CAPITAL LETTER I
-0x4A 0x004A # LATIN CAPITAL LETTER J
-0x4B 0x004B # LATIN CAPITAL LETTER K
-0x4C 0x004C # LATIN CAPITAL LETTER L
-0x4D 0x004D # LATIN CAPITAL LETTER M
-0x4E 0x004E # LATIN CAPITAL LETTER N
-0x4F 0x004F # LATIN CAPITAL LETTER O
-0x50 0x0050 # LATIN CAPITAL LETTER P
-0x51 0x0051 # LATIN CAPITAL LETTER Q
-0x52 0x0052 # LATIN CAPITAL LETTER R
-0x53 0x0053 # LATIN CAPITAL LETTER S
-0x54 0x0054 # LATIN CAPITAL LETTER T
-0x55 0x0055 # LATIN CAPITAL LETTER U
-0x56 0x0056 # LATIN CAPITAL LETTER V
-0x57 0x0057 # LATIN CAPITAL LETTER W
-0x58 0x0058 # LATIN CAPITAL LETTER X
-0x59 0x0059 # LATIN CAPITAL LETTER Y
-0x5A 0x005A # LATIN CAPITAL LETTER Z
-0x5B 0x005B # LEFT SQUARE BRACKET
-0x5C 0x005C # REVERSE SOLIDUS
-0x5D 0x005D # RIGHT SQUARE BRACKET
-0x5E 0x005E # CIRCUMFLEX ACCENT
-0x5F 0x005F # LOW LINE
-0x60 0x0060 # GRAVE ACCENT
-0x61 0x0061 # LATIN SMALL LETTER A
-0x62 0x0062 # LATIN SMALL LETTER B
-0x63 0x0063 # LATIN SMALL LETTER C
-0x64 0x0064 # LATIN SMALL LETTER D
-0x65 0x0065 # LATIN SMALL LETTER E
-0x66 0x0066 # LATIN SMALL LETTER F
-0x67 0x0067 # LATIN SMALL LETTER G
-0x68 0x0068 # LATIN SMALL LETTER H
-0x69 0x0069 # LATIN SMALL LETTER I
-0x6A 0x006A # LATIN SMALL LETTER J
-0x6B 0x006B # LATIN SMALL LETTER K
-0x6C 0x006C # LATIN SMALL LETTER L
-0x6D 0x006D # LATIN SMALL LETTER M
-0x6E 0x006E # LATIN SMALL LETTER N
-0x6F 0x006F # LATIN SMALL LETTER O
-0x70 0x0070 # LATIN SMALL LETTER P
-0x71 0x0071 # LATIN SMALL LETTER Q
-0x72 0x0072 # LATIN SMALL LETTER R
-0x73 0x0073 # LATIN SMALL LETTER S
-0x74 0x0074 # LATIN SMALL LETTER T
-0x75 0x0075 # LATIN SMALL LETTER U
-0x76 0x0076 # LATIN SMALL LETTER V
-0x77 0x0077 # LATIN SMALL LETTER W
-0x78 0x0078 # LATIN SMALL LETTER X
-0x79 0x0079 # LATIN SMALL LETTER Y
-0x7A 0x007A # LATIN SMALL LETTER Z
-0x7B 0x007B # LEFT CURLY BRACKET
-0x7C 0x007C # VERTICAL LINE
-0x7D 0x007D # RIGHT CURLY BRACKET
-0x7E 0x007E # TILDE
-0x7F 0x007F # DELETE
-0x80 0x0080 # <control>
-0x81 0x0081 # <control>
-0x82 0x0082 # <control>
-0x83 0x0083 # <control>
-0x84 0x0084 # <control>
-0x85 0x0085 # <control>
-0x86 0x0086 # <control>
-0x87 0x0087 # <control>
-0x88 0x0088 # <control>
-0x89 0x0089 # <control>
-0x8A 0x008A # <control>
-0x8B 0x008B # <control>
-0x8C 0x008C # <control>
-0x8D 0x008D # <control>
-0x8E 0x008E # <control>
-0x8F 0x008F # <control>
-0x90 0x0090 # <control>
-0x91 0x0091 # <control>
-0x92 0x0092 # <control>
-0x93 0x0093 # <control>
-0x94 0x0094 # <control>
-0x95 0x0095 # <control>
-0x96 0x0096 # <control>
-0x97 0x0097 # <control>
-0x98 0x0098 # <control>
-0x99 0x0099 # <control>
-0x9A 0x009A # <control>
-0x9B 0x009B # <control>
-0x9C 0x009C # <control>
-0x9D 0x009D # <control>
-0x9E 0x009E # <control>
-0x9F 0x009F # <control>
-0xA0 0x00A0 # NO-BREAK SPACE
-0xA1 0x00A1 # INVERTED EXCLAMATION MARK
-0xA2 0x00A2 # CENT SIGN
-0xA3 0x00A3 # POUND SIGN
-0xA4 0x20AC # EURO SIGN
-0xA5 0x00A5 # YEN SIGN
-0xA6 0x0160 # LATIN CAPITAL LETTER S WITH CARON
-0xA7 0x00A7 # SECTION SIGN
-0xA8 0x0161 # LATIN SMALL LETTER S WITH CARON
-0xA9 0x00A9 # COPYRIGHT SIGN
-0xAA 0x00AA # FEMININE ORDINAL INDICATOR
-0xAB 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xAC 0x00AC # NOT SIGN
-0xAD 0x00AD # SOFT HYPHEN
-0xAE 0x00AE # REGISTERED SIGN
-0xAF 0x00AF # MACRON
-0xB0 0x00B0 # DEGREE SIGN
-0xB1 0x00B1 # PLUS-MINUS SIGN
-0xB2 0x00B2 # SUPERSCRIPT TWO
-0xB3 0x00B3 # SUPERSCRIPT THREE
-0xB4 0x017D # LATIN CAPITAL LETTER Z WITH CARON
-0xB5 0x00B5 # MICRO SIGN
-0xB6 0x00B6 # PILCROW SIGN
-0xB7 0x00B7 # MIDDLE DOT
-0xB8 0x017E # LATIN SMALL LETTER Z WITH CARON
-0xB9 0x00B9 # SUPERSCRIPT ONE
-0xBA 0x00BA # MASCULINE ORDINAL INDICATOR
-0xBB 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xBC 0x0152 # LATIN CAPITAL LIGATURE OE
-0xBD 0x0153 # LATIN SMALL LIGATURE OE
-0xBE 0x0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS
-0xBF 0x00BF # INVERTED QUESTION MARK
-0xC0 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
-0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
-0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-0xC3 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
-0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
-0xC5 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
-0xC6 0x00C6 # LATIN CAPITAL LETTER AE
-0xC7 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
-0xC8 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
-0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
-0xCA 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
-0xCC 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
-0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
-0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-0xCF 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
-0xD0 0x00D0 # LATIN CAPITAL LETTER ETH
-0xD1 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
-0xD2 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
-0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
-0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-0xD5 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
-0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
-0xD7 0x00D7 # MULTIPLICATION SIGN
-0xD8 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
-0xD9 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
-0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
-0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
-0xDD 0x00DD # LATIN CAPITAL LETTER Y WITH ACUTE
-0xDE 0x00DE # LATIN CAPITAL LETTER THORN
-0xDF 0x00DF # LATIN SMALL LETTER SHARP S
-0xE0 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
-0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
-0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
-0xE3 0x00E3 # LATIN SMALL LETTER A WITH TILDE
-0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
-0xE5 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
-0xE6 0x00E6 # LATIN SMALL LETTER AE
-0xE7 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
-0xE8 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
-0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
-0xEA 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
-0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
-0xEC 0x00EC # LATIN SMALL LETTER I WITH GRAVE
-0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
-0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
-0xEF 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
-0xF0 0x00F0 # LATIN SMALL LETTER ETH
-0xF1 0x00F1 # LATIN SMALL LETTER N WITH TILDE
-0xF2 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
-0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
-0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
-0xF5 0x00F5 # LATIN SMALL LETTER O WITH TILDE
-0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
-0xF7 0x00F7 # DIVISION SIGN
-0xF8 0x00F8 # LATIN SMALL LETTER O WITH STROKE
-0xF9 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
-0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
-0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
-0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
-0xFD 0x00FD # LATIN SMALL LETTER Y WITH ACUTE
-0xFE 0x00FE # LATIN SMALL LETTER THORN
-0xFF 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS
-
diff --git a/program/lib/encoding/ISO-8859-16.map b/program/lib/encoding/ISO-8859-16.map
deleted file mode 100644
index c0dcf0dac..000000000
--- a/program/lib/encoding/ISO-8859-16.map
+++ /dev/null
@@ -1,299 +0,0 @@
-#
-# Name: ISO/IEC 8859-16:2001 to Unicode
-# Unicode version: 3.0
-# Table version: 1.0
-# Table format: Format A
-# Date: 2001 July 26
-# Authors: Markus Kuhn <http://www.cl.cam.ac.uk/~mgk25/>
-#
-# Copyright (c) 1999-2001 Unicode, Inc. All Rights reserved.
-#
-# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-# No claims are made as to fitness for any particular purpose. No
-# warranties of any kind are expressed or implied. The recipient
-# agrees to determine applicability of information provided. If this
-# file has been provided on optical media by Unicode, Inc., the sole
-# remedy for any claim will be exchange of defective media within 90
-# days of receipt.
-#
-# Unicode, Inc. hereby grants the right to freely use the information
-# supplied in this file in the creation of products supporting the
-# Unicode Standard, and to make copies of this file in any form for
-# internal or external distribution as long as this notice remains
-# attached.
-#
-# General notes:
-#
-# This table contains the data the Unicode Consortium has on how
-# ISO/IEC 8859-16:2001 characters map into Unicode.
-#
-# Format: Three tab-separated columns
-# Column #1 is the ISO/IEC 8859-16 code (in hex as 0xXX)
-# Column #2 is the Unicode (in hex as 0xXXXX)
-# Column #3 the Unicode name (follows a comment sign, '#')
-#
-# The entries are in ISO/IEC 8859-16 order.
-#
-# Updated versions of this file may be found in:
-# <ftp://ftp.unicode.org/Public/MAPPINGS/>
-#
-# Any comments or problems, contact <errata@unicode.org>
-# Please note that <errata@unicode.org> is an archival address;
-# notices will be checked, but do not expect an immediate response.
-#
-0x00 0x0000 # NULL
-0x01 0x0001 # START OF HEADING
-0x02 0x0002 # START OF TEXT
-0x03 0x0003 # END OF TEXT
-0x04 0x0004 # END OF TRANSMISSION
-0x05 0x0005 # ENQUIRY
-0x06 0x0006 # ACKNOWLEDGE
-0x07 0x0007 # BELL
-0x08 0x0008 # BACKSPACE
-0x09 0x0009 # HORIZONTAL TABULATION
-0x0A 0x000A # LINE FEED
-0x0B 0x000B # VERTICAL TABULATION
-0x0C 0x000C # FORM FEED
-0x0D 0x000D # CARRIAGE RETURN
-0x0E 0x000E # SHIFT OUT
-0x0F 0x000F # SHIFT IN
-0x10 0x0010 # DATA LINK ESCAPE
-0x11 0x0011 # DEVICE CONTROL ONE
-0x12 0x0012 # DEVICE CONTROL TWO
-0x13 0x0013 # DEVICE CONTROL THREE
-0x14 0x0014 # DEVICE CONTROL FOUR
-0x15 0x0015 # NEGATIVE ACKNOWLEDGE
-0x16 0x0016 # SYNCHRONOUS IDLE
-0x17 0x0017 # END OF TRANSMISSION BLOCK
-0x18 0x0018 # CANCEL
-0x19 0x0019 # END OF MEDIUM
-0x1A 0x001A # SUBSTITUTE
-0x1B 0x001B # ESCAPE
-0x1C 0x001C # FILE SEPARATOR
-0x1D 0x001D # GROUP SEPARATOR
-0x1E 0x001E # RECORD SEPARATOR
-0x1F 0x001F # UNIT SEPARATOR
-0x20 0x0020 # SPACE
-0x21 0x0021 # EXCLAMATION MARK
-0x22 0x0022 # QUOTATION MARK
-0x23 0x0023 # NUMBER SIGN
-0x24 0x0024 # DOLLAR SIGN
-0x25 0x0025 # PERCENT SIGN
-0x26 0x0026 # AMPERSAND
-0x27 0x0027 # APOSTROPHE
-0x28 0x0028 # LEFT PARENTHESIS
-0x29 0x0029 # RIGHT PARENTHESIS
-0x2A 0x002A # ASTERISK
-0x2B 0x002B # PLUS SIGN
-0x2C 0x002C # COMMA
-0x2D 0x002D # HYPHEN-MINUS
-0x2E 0x002E # FULL STOP
-0x2F 0x002F # SOLIDUS
-0x30 0x0030 # DIGIT ZERO
-0x31 0x0031 # DIGIT ONE
-0x32 0x0032 # DIGIT TWO
-0x33 0x0033 # DIGIT THREE
-0x34 0x0034 # DIGIT FOUR
-0x35 0x0035 # DIGIT FIVE
-0x36 0x0036 # DIGIT SIX
-0x37 0x0037 # DIGIT SEVEN
-0x38 0x0038 # DIGIT EIGHT
-0x39 0x0039 # DIGIT NINE
-0x3A 0x003A # COLON
-0x3B 0x003B # SEMICOLON
-0x3C 0x003C # LESS-THAN SIGN
-0x3D 0x003D # EQUALS SIGN
-0x3E 0x003E # GREATER-THAN SIGN
-0x3F 0x003F # QUESTION MARK
-0x40 0x0040 # COMMERCIAL AT
-0x41 0x0041 # LATIN CAPITAL LETTER A
-0x42 0x0042 # LATIN CAPITAL LETTER B
-0x43 0x0043 # LATIN CAPITAL LETTER C
-0x44 0x0044 # LATIN CAPITAL LETTER D
-0x45 0x0045 # LATIN CAPITAL LETTER E
-0x46 0x0046 # LATIN CAPITAL LETTER F
-0x47 0x0047 # LATIN CAPITAL LETTER G
-0x48 0x0048 # LATIN CAPITAL LETTER H
-0x49 0x0049 # LATIN CAPITAL LETTER I
-0x4A 0x004A # LATIN CAPITAL LETTER J
-0x4B 0x004B # LATIN CAPITAL LETTER K
-0x4C 0x004C # LATIN CAPITAL LETTER L
-0x4D 0x004D # LATIN CAPITAL LETTER M
-0x4E 0x004E # LATIN CAPITAL LETTER N
-0x4F 0x004F # LATIN CAPITAL LETTER O
-0x50 0x0050 # LATIN CAPITAL LETTER P
-0x51 0x0051 # LATIN CAPITAL LETTER Q
-0x52 0x0052 # LATIN CAPITAL LETTER R
-0x53 0x0053 # LATIN CAPITAL LETTER S
-0x54 0x0054 # LATIN CAPITAL LETTER T
-0x55 0x0055 # LATIN CAPITAL LETTER U
-0x56 0x0056 # LATIN CAPITAL LETTER V
-0x57 0x0057 # LATIN CAPITAL LETTER W
-0x58 0x0058 # LATIN CAPITAL LETTER X
-0x59 0x0059 # LATIN CAPITAL LETTER Y
-0x5A 0x005A # LATIN CAPITAL LETTER Z
-0x5B 0x005B # LEFT SQUARE BRACKET
-0x5C 0x005C # REVERSE SOLIDUS
-0x5D 0x005D # RIGHT SQUARE BRACKET
-0x5E 0x005E # CIRCUMFLEX ACCENT
-0x5F 0x005F # LOW LINE
-0x60 0x0060 # GRAVE ACCENT
-0x61 0x0061 # LATIN SMALL LETTER A
-0x62 0x0062 # LATIN SMALL LETTER B
-0x63 0x0063 # LATIN SMALL LETTER C
-0x64 0x0064 # LATIN SMALL LETTER D
-0x65 0x0065 # LATIN SMALL LETTER E
-0x66 0x0066 # LATIN SMALL LETTER F
-0x67 0x0067 # LATIN SMALL LETTER G
-0x68 0x0068 # LATIN SMALL LETTER H
-0x69 0x0069 # LATIN SMALL LETTER I
-0x6A 0x006A # LATIN SMALL LETTER J
-0x6B 0x006B # LATIN SMALL LETTER K
-0x6C 0x006C # LATIN SMALL LETTER L
-0x6D 0x006D # LATIN SMALL LETTER M
-0x6E 0x006E # LATIN SMALL LETTER N
-0x6F 0x006F # LATIN SMALL LETTER O
-0x70 0x0070 # LATIN SMALL LETTER P
-0x71 0x0071 # LATIN SMALL LETTER Q
-0x72 0x0072 # LATIN SMALL LETTER R
-0x73 0x0073 # LATIN SMALL LETTER S
-0x74 0x0074 # LATIN SMALL LETTER T
-0x75 0x0075 # LATIN SMALL LETTER U
-0x76 0x0076 # LATIN SMALL LETTER V
-0x77 0x0077 # LATIN SMALL LETTER W
-0x78 0x0078 # LATIN SMALL LETTER X
-0x79 0x0079 # LATIN SMALL LETTER Y
-0x7A 0x007A # LATIN SMALL LETTER Z
-0x7B 0x007B # LEFT CURLY BRACKET
-0x7C 0x007C # VERTICAL LINE
-0x7D 0x007D # RIGHT CURLY BRACKET
-0x7E 0x007E # TILDE
-0x7F 0x007F # DELETE
-0x80 0x0080 # <control>
-0x81 0x0081 # <control>
-0x82 0x0082 # <control>
-0x83 0x0083 # <control>
-0x84 0x0084 # <control>
-0x85 0x0085 # <control>
-0x86 0x0086 # <control>
-0x87 0x0087 # <control>
-0x88 0x0088 # <control>
-0x89 0x0089 # <control>
-0x8A 0x008A # <control>
-0x8B 0x008B # <control>
-0x8C 0x008C # <control>
-0x8D 0x008D # <control>
-0x8E 0x008E # <control>
-0x8F 0x008F # <control>
-0x90 0x0090 # <control>
-0x91 0x0091 # <control>
-0x92 0x0092 # <control>
-0x93 0x0093 # <control>
-0x94 0x0094 # <control>
-0x95 0x0095 # <control>
-0x96 0x0096 # <control>
-0x97 0x0097 # <control>
-0x98 0x0098 # <control>
-0x99 0x0099 # <control>
-0x9A 0x009A # <control>
-0x9B 0x009B # <control>
-0x9C 0x009C # <control>
-0x9D 0x009D # <control>
-0x9E 0x009E # <control>
-0x9F 0x009F # <control>
-0xA0 0x00A0 # NO-BREAK SPACE
-0xA1 0x0104 # LATIN CAPITAL LETTER A WITH OGONEK
-0xA2 0x0105 # LATIN SMALL LETTER A WITH OGONEK
-0xA3 0x0141 # LATIN CAPITAL LETTER L WITH STROKE
-0xA4 0x20AC # EURO SIGN
-0xA5 0x201E # DOUBLE LOW-9 QUOTATION MARK
-0xA6 0x0160 # LATIN CAPITAL LETTER S WITH CARON
-0xA7 0x00A7 # SECTION SIGN
-0xA8 0x0161 # LATIN SMALL LETTER S WITH CARON
-0xA9 0x00A9 # COPYRIGHT SIGN
-0xAA 0x0218 # LATIN CAPITAL LETTER S WITH COMMA BELOW
-0xAB 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xAC 0x0179 # LATIN CAPITAL LETTER Z WITH ACUTE
-0xAD 0x00AD # SOFT HYPHEN
-0xAE 0x017A # LATIN SMALL LETTER Z WITH ACUTE
-0xAF 0x017B # LATIN CAPITAL LETTER Z WITH DOT ABOVE
-0xB0 0x00B0 # DEGREE SIGN
-0xB1 0x00B1 # PLUS-MINUS SIGN
-0xB2 0x010C # LATIN CAPITAL LETTER C WITH CARON
-0xB3 0x0142 # LATIN SMALL LETTER L WITH STROKE
-0xB4 0x017D # LATIN CAPITAL LETTER Z WITH CARON
-0xB5 0x201D # RIGHT DOUBLE QUOTATION MARK
-0xB6 0x00B6 # PILCROW SIGN
-0xB7 0x00B7 # MIDDLE DOT
-0xB8 0x017E # LATIN SMALL LETTER Z WITH CARON
-0xB9 0x010D # LATIN SMALL LETTER C WITH CARON
-0xBA 0x0219 # LATIN SMALL LETTER S WITH COMMA BELOW
-0xBB 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xBC 0x0152 # LATIN CAPITAL LIGATURE OE
-0xBD 0x0153 # LATIN SMALL LIGATURE OE
-0xBE 0x0178 # LATIN CAPITAL LETTER Y WITH DIAERESIS
-0xBF 0x017C # LATIN SMALL LETTER Z WITH DOT ABOVE
-0xC0 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
-0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
-0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-0xC3 0x0102 # LATIN CAPITAL LETTER A WITH BREVE
-0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
-0xC5 0x0106 # LATIN CAPITAL LETTER C WITH ACUTE
-0xC6 0x00C6 # LATIN CAPITAL LETTER AE
-0xC7 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
-0xC8 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
-0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
-0xCA 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
-0xCC 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
-0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
-0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-0xCF 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
-0xD0 0x0110 # LATIN CAPITAL LETTER D WITH STROKE
-0xD1 0x0143 # LATIN CAPITAL LETTER N WITH ACUTE
-0xD2 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
-0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
-0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-0xD5 0x0150 # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
-0xD7 0x015A # LATIN CAPITAL LETTER S WITH ACUTE
-0xD8 0x0170 # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-0xD9 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
-0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
-0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
-0xDD 0x0118 # LATIN CAPITAL LETTER E WITH OGONEK
-0xDE 0x021A # LATIN CAPITAL LETTER T WITH COMMA BELOW
-0xDF 0x00DF # LATIN SMALL LETTER SHARP S
-0xE0 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
-0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
-0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
-0xE3 0x0103 # LATIN SMALL LETTER A WITH BREVE
-0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
-0xE5 0x0107 # LATIN SMALL LETTER C WITH ACUTE
-0xE6 0x00E6 # LATIN SMALL LETTER AE
-0xE7 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
-0xE8 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
-0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
-0xEA 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
-0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
-0xEC 0x00EC # LATIN SMALL LETTER I WITH GRAVE
-0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
-0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
-0xEF 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
-0xF0 0x0111 # LATIN SMALL LETTER D WITH STROKE
-0xF1 0x0144 # LATIN SMALL LETTER N WITH ACUTE
-0xF2 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
-0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
-0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
-0xF5 0x0151 # LATIN SMALL LETTER O WITH DOUBLE ACUTE
-0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
-0xF7 0x015B # LATIN SMALL LETTER S WITH ACUTE
-0xF8 0x0171 # LATIN SMALL LETTER U WITH DOUBLE ACUTE
-0xF9 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
-0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
-0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
-0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
-0xFD 0x0119 # LATIN SMALL LETTER E WITH OGONEK
-0xFE 0x021B # LATIN SMALL LETTER T WITH COMMA BELOW
-0xFF 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS
diff --git a/program/lib/encoding/ISO-8859-2.map b/program/lib/encoding/ISO-8859-2.map
deleted file mode 100644
index e45df25eb..000000000
--- a/program/lib/encoding/ISO-8859-2.map
+++ /dev/null
@@ -1,303 +0,0 @@
-#
-# Name: ISO 8859-2:1999 to Unicode
-# Unicode version: 3.0
-# Table version: 1.0
-# Table format: Format A
-# Date: 1999 July 27
-# Authors: Ken Whistler <kenw@sybase.com>
-#
-# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
-#
-# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-# No claims are made as to fitness for any particular purpose. No
-# warranties of any kind are expressed or implied. The recipient
-# agrees to determine applicability of information provided. If this
-# file has been provided on optical media by Unicode, Inc., the sole
-# remedy for any claim will be exchange of defective media within 90
-# days of receipt.
-#
-# Unicode, Inc. hereby grants the right to freely use the information
-# supplied in this file in the creation of products supporting the
-# Unicode Standard, and to make copies of this file in any form for
-# internal or external distribution as long as this notice remains
-# attached.
-#
-# General notes:
-#
-# This table contains the data the Unicode Consortium has on how
-# ISO/IEC 8859-2:1999 characters map into Unicode.
-#
-# Format: Three tab-separated columns
-# Column #1 is the ISO/IEC 8859-2 code (in hex as 0xXX)
-# Column #2 is the Unicode (in hex as 0xXXXX)
-# Column #3 the Unicode name (follows a comment sign, '#')
-#
-# The entries are in ISO/IEC 8859-2 order.
-#
-# Version history
-# 1.0 version updates 0.1 version by adding mappings for all
-# control characters.
-#
-# Updated versions of this file may be found in:
-# <ftp://ftp.unicode.org/Public/MAPPINGS/>
-#
-# Any comments or problems, contact <errata@unicode.org>
-# Please note that <errata@unicode.org> is an archival address;
-# notices will be checked, but do not expect an immediate response.
-#
-0x00 0x0000 # NULL
-0x01 0x0001 # START OF HEADING
-0x02 0x0002 # START OF TEXT
-0x03 0x0003 # END OF TEXT
-0x04 0x0004 # END OF TRANSMISSION
-0x05 0x0005 # ENQUIRY
-0x06 0x0006 # ACKNOWLEDGE
-0x07 0x0007 # BELL
-0x08 0x0008 # BACKSPACE
-0x09 0x0009 # HORIZONTAL TABULATION
-0x0A 0x000A # LINE FEED
-0x0B 0x000B # VERTICAL TABULATION
-0x0C 0x000C # FORM FEED
-0x0D 0x000D # CARRIAGE RETURN
-0x0E 0x000E # SHIFT OUT
-0x0F 0x000F # SHIFT IN
-0x10 0x0010 # DATA LINK ESCAPE
-0x11 0x0011 # DEVICE CONTROL ONE
-0x12 0x0012 # DEVICE CONTROL TWO
-0x13 0x0013 # DEVICE CONTROL THREE
-0x14 0x0014 # DEVICE CONTROL FOUR
-0x15 0x0015 # NEGATIVE ACKNOWLEDGE
-0x16 0x0016 # SYNCHRONOUS IDLE
-0x17 0x0017 # END OF TRANSMISSION BLOCK
-0x18 0x0018 # CANCEL
-0x19 0x0019 # END OF MEDIUM
-0x1A 0x001A # SUBSTITUTE
-0x1B 0x001B # ESCAPE
-0x1C 0x001C # FILE SEPARATOR
-0x1D 0x001D # GROUP SEPARATOR
-0x1E 0x001E # RECORD SEPARATOR
-0x1F 0x001F # UNIT SEPARATOR
-0x20 0x0020 # SPACE
-0x21 0x0021 # EXCLAMATION MARK
-0x22 0x0022 # QUOTATION MARK
-0x23 0x0023 # NUMBER SIGN
-0x24 0x0024 # DOLLAR SIGN
-0x25 0x0025 # PERCENT SIGN
-0x26 0x0026 # AMPERSAND
-0x27 0x0027 # APOSTROPHE
-0x28 0x0028 # LEFT PARENTHESIS
-0x29 0x0029 # RIGHT PARENTHESIS
-0x2A 0x002A # ASTERISK
-0x2B 0x002B # PLUS SIGN
-0x2C 0x002C # COMMA
-0x2D 0x002D # HYPHEN-MINUS
-0x2E 0x002E # FULL STOP
-0x2F 0x002F # SOLIDUS
-0x30 0x0030 # DIGIT ZERO
-0x31 0x0031 # DIGIT ONE
-0x32 0x0032 # DIGIT TWO
-0x33 0x0033 # DIGIT THREE
-0x34 0x0034 # DIGIT FOUR
-0x35 0x0035 # DIGIT FIVE
-0x36 0x0036 # DIGIT SIX
-0x37 0x0037 # DIGIT SEVEN
-0x38 0x0038 # DIGIT EIGHT
-0x39 0x0039 # DIGIT NINE
-0x3A 0x003A # COLON
-0x3B 0x003B # SEMICOLON
-0x3C 0x003C # LESS-THAN SIGN
-0x3D 0x003D # EQUALS SIGN
-0x3E 0x003E # GREATER-THAN SIGN
-0x3F 0x003F # QUESTION MARK
-0x40 0x0040 # COMMERCIAL AT
-0x41 0x0041 # LATIN CAPITAL LETTER A
-0x42 0x0042 # LATIN CAPITAL LETTER B
-0x43 0x0043 # LATIN CAPITAL LETTER C
-0x44 0x0044 # LATIN CAPITAL LETTER D
-0x45 0x0045 # LATIN CAPITAL LETTER E
-0x46 0x0046 # LATIN CAPITAL LETTER F
-0x47 0x0047 # LATIN CAPITAL LETTER G
-0x48 0x0048 # LATIN CAPITAL LETTER H
-0x49 0x0049 # LATIN CAPITAL LETTER I
-0x4A 0x004A # LATIN CAPITAL LETTER J
-0x4B 0x004B # LATIN CAPITAL LETTER K
-0x4C 0x004C # LATIN CAPITAL LETTER L
-0x4D 0x004D # LATIN CAPITAL LETTER M
-0x4E 0x004E # LATIN CAPITAL LETTER N
-0x4F 0x004F # LATIN CAPITAL LETTER O
-0x50 0x0050 # LATIN CAPITAL LETTER P
-0x51 0x0051 # LATIN CAPITAL LETTER Q
-0x52 0x0052 # LATIN CAPITAL LETTER R
-0x53 0x0053 # LATIN CAPITAL LETTER S
-0x54 0x0054 # LATIN CAPITAL LETTER T
-0x55 0x0055 # LATIN CAPITAL LETTER U
-0x56 0x0056 # LATIN CAPITAL LETTER V
-0x57 0x0057 # LATIN CAPITAL LETTER W
-0x58 0x0058 # LATIN CAPITAL LETTER X
-0x59 0x0059 # LATIN CAPITAL LETTER Y
-0x5A 0x005A # LATIN CAPITAL LETTER Z
-0x5B 0x005B # LEFT SQUARE BRACKET
-0x5C 0x005C # REVERSE SOLIDUS
-0x5D 0x005D # RIGHT SQUARE BRACKET
-0x5E 0x005E # CIRCUMFLEX ACCENT
-0x5F 0x005F # LOW LINE
-0x60 0x0060 # GRAVE ACCENT
-0x61 0x0061 # LATIN SMALL LETTER A
-0x62 0x0062 # LATIN SMALL LETTER B
-0x63 0x0063 # LATIN SMALL LETTER C
-0x64 0x0064 # LATIN SMALL LETTER D
-0x65 0x0065 # LATIN SMALL LETTER E
-0x66 0x0066 # LATIN SMALL LETTER F
-0x67 0x0067 # LATIN SMALL LETTER G
-0x68 0x0068 # LATIN SMALL LETTER H
-0x69 0x0069 # LATIN SMALL LETTER I
-0x6A 0x006A # LATIN SMALL LETTER J
-0x6B 0x006B # LATIN SMALL LETTER K
-0x6C 0x006C # LATIN SMALL LETTER L
-0x6D 0x006D # LATIN SMALL LETTER M
-0x6E 0x006E # LATIN SMALL LETTER N
-0x6F 0x006F # LATIN SMALL LETTER O
-0x70 0x0070 # LATIN SMALL LETTER P
-0x71 0x0071 # LATIN SMALL LETTER Q
-0x72 0x0072 # LATIN SMALL LETTER R
-0x73 0x0073 # LATIN SMALL LETTER S
-0x74 0x0074 # LATIN SMALL LETTER T
-0x75 0x0075 # LATIN SMALL LETTER U
-0x76 0x0076 # LATIN SMALL LETTER V
-0x77 0x0077 # LATIN SMALL LETTER W
-0x78 0x0078 # LATIN SMALL LETTER X
-0x79 0x0079 # LATIN SMALL LETTER Y
-0x7A 0x007A # LATIN SMALL LETTER Z
-0x7B 0x007B # LEFT CURLY BRACKET
-0x7C 0x007C # VERTICAL LINE
-0x7D 0x007D # RIGHT CURLY BRACKET
-0x7E 0x007E # TILDE
-0x7F 0x007F # DELETE
-0x80 0x0080 # <control>
-0x81 0x0081 # <control>
-0x82 0x0082 # <control>
-0x83 0x0083 # <control>
-0x84 0x0084 # <control>
-0x85 0x0085 # <control>
-0x86 0x0086 # <control>
-0x87 0x0087 # <control>
-0x88 0x0088 # <control>
-0x89 0x0089 # <control>
-0x8A 0x008A # <control>
-0x8B 0x008B # <control>
-0x8C 0x008C # <control>
-0x8D 0x008D # <control>
-0x8E 0x008E # <control>
-0x8F 0x008F # <control>
-0x90 0x0090 # <control>
-0x91 0x0091 # <control>
-0x92 0x0092 # <control>
-0x93 0x0093 # <control>
-0x94 0x0094 # <control>
-0x95 0x0095 # <control>
-0x96 0x0096 # <control>
-0x97 0x0097 # <control>
-0x98 0x0098 # <control>
-0x99 0x0099 # <control>
-0x9A 0x009A # <control>
-0x9B 0x009B # <control>
-0x9C 0x009C # <control>
-0x9D 0x009D # <control>
-0x9E 0x009E # <control>
-0x9F 0x009F # <control>
-0xA0 0x00A0 # NO-BREAK SPACE
-0xA1 0x0104 # LATIN CAPITAL LETTER A WITH OGONEK
-0xA2 0x02D8 # BREVE
-0xA3 0x0141 # LATIN CAPITAL LETTER L WITH STROKE
-0xA4 0x00A4 # CURRENCY SIGN
-0xA5 0x013D # LATIN CAPITAL LETTER L WITH CARON
-0xA6 0x015A # LATIN CAPITAL LETTER S WITH ACUTE
-0xA7 0x00A7 # SECTION SIGN
-0xA8 0x00A8 # DIAERESIS
-0xA9 0x0160 # LATIN CAPITAL LETTER S WITH CARON
-0xAA 0x015E # LATIN CAPITAL LETTER S WITH CEDILLA
-0xAB 0x0164 # LATIN CAPITAL LETTER T WITH CARON
-0xAC 0x0179 # LATIN CAPITAL LETTER Z WITH ACUTE
-0xAD 0x00AD # SOFT HYPHEN
-0xAE 0x017D # LATIN CAPITAL LETTER Z WITH CARON
-0xAF 0x017B # LATIN CAPITAL LETTER Z WITH DOT ABOVE
-0xB0 0x00B0 # DEGREE SIGN
-0xB1 0x0105 # LATIN SMALL LETTER A WITH OGONEK
-0xB2 0x02DB # OGONEK
-0xB3 0x0142 # LATIN SMALL LETTER L WITH STROKE
-0xB4 0x00B4 # ACUTE ACCENT
-0xB5 0x013E # LATIN SMALL LETTER L WITH CARON
-0xB6 0x015B # LATIN SMALL LETTER S WITH ACUTE
-0xB7 0x02C7 # CARON
-0xB8 0x00B8 # CEDILLA
-0xB9 0x0161 # LATIN SMALL LETTER S WITH CARON
-0xBA 0x015F # LATIN SMALL LETTER S WITH CEDILLA
-0xBB 0x0165 # LATIN SMALL LETTER T WITH CARON
-0xBC 0x017A # LATIN SMALL LETTER Z WITH ACUTE
-0xBD 0x02DD # DOUBLE ACUTE ACCENT
-0xBE 0x017E # LATIN SMALL LETTER Z WITH CARON
-0xBF 0x017C # LATIN SMALL LETTER Z WITH DOT ABOVE
-0xC0 0x0154 # LATIN CAPITAL LETTER R WITH ACUTE
-0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
-0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-0xC3 0x0102 # LATIN CAPITAL LETTER A WITH BREVE
-0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
-0xC5 0x0139 # LATIN CAPITAL LETTER L WITH ACUTE
-0xC6 0x0106 # LATIN CAPITAL LETTER C WITH ACUTE
-0xC7 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
-0xC8 0x010C # LATIN CAPITAL LETTER C WITH CARON
-0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
-0xCA 0x0118 # LATIN CAPITAL LETTER E WITH OGONEK
-0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
-0xCC 0x011A # LATIN CAPITAL LETTER E WITH CARON
-0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
-0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-0xCF 0x010E # LATIN CAPITAL LETTER D WITH CARON
-0xD0 0x0110 # LATIN CAPITAL LETTER D WITH STROKE
-0xD1 0x0143 # LATIN CAPITAL LETTER N WITH ACUTE
-0xD2 0x0147 # LATIN CAPITAL LETTER N WITH CARON
-0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
-0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-0xD5 0x0150 # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
-0xD7 0x00D7 # MULTIPLICATION SIGN
-0xD8 0x0158 # LATIN CAPITAL LETTER R WITH CARON
-0xD9 0x016E # LATIN CAPITAL LETTER U WITH RING ABOVE
-0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
-0xDB 0x0170 # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
-0xDD 0x00DD # LATIN CAPITAL LETTER Y WITH ACUTE
-0xDE 0x0162 # LATIN CAPITAL LETTER T WITH CEDILLA
-0xDF 0x00DF # LATIN SMALL LETTER SHARP S
-0xE0 0x0155 # LATIN SMALL LETTER R WITH ACUTE
-0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
-0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
-0xE3 0x0103 # LATIN SMALL LETTER A WITH BREVE
-0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
-0xE5 0x013A # LATIN SMALL LETTER L WITH ACUTE
-0xE6 0x0107 # LATIN SMALL LETTER C WITH ACUTE
-0xE7 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
-0xE8 0x010D # LATIN SMALL LETTER C WITH CARON
-0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
-0xEA 0x0119 # LATIN SMALL LETTER E WITH OGONEK
-0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
-0xEC 0x011B # LATIN SMALL LETTER E WITH CARON
-0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
-0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
-0xEF 0x010F # LATIN SMALL LETTER D WITH CARON
-0xF0 0x0111 # LATIN SMALL LETTER D WITH STROKE
-0xF1 0x0144 # LATIN SMALL LETTER N WITH ACUTE
-0xF2 0x0148 # LATIN SMALL LETTER N WITH CARON
-0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
-0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
-0xF5 0x0151 # LATIN SMALL LETTER O WITH DOUBLE ACUTE
-0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
-0xF7 0x00F7 # DIVISION SIGN
-0xF8 0x0159 # LATIN SMALL LETTER R WITH CARON
-0xF9 0x016F # LATIN SMALL LETTER U WITH RING ABOVE
-0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
-0xFB 0x0171 # LATIN SMALL LETTER U WITH DOUBLE ACUTE
-0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
-0xFD 0x00FD # LATIN SMALL LETTER Y WITH ACUTE
-0xFE 0x0163 # LATIN SMALL LETTER T WITH CEDILLA
-0xFF 0x02D9 # DOT ABOVE
diff --git a/program/lib/encoding/ISO-8859-3.map b/program/lib/encoding/ISO-8859-3.map
deleted file mode 100644
index 9b6ac69dd..000000000
--- a/program/lib/encoding/ISO-8859-3.map
+++ /dev/null
@@ -1,296 +0,0 @@
-#
-# Name: ISO/IEC 8859-3:1999 to Unicode
-# Unicode version: 3.0
-# Table version: 1.0
-# Table format: Format A
-# Date: 1999 July 27
-# Authors: Ken Whistler <kenw@sybase.com>
-#
-# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
-#
-# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-# No claims are made as to fitness for any particular purpose. No
-# warranties of any kind are expressed or implied. The recipient
-# agrees to determine applicability of information provided. If this
-# file has been provided on optical media by Unicode, Inc., the sole
-# remedy for any claim will be exchange of defective media within 90
-# days of receipt.
-#
-# Unicode, Inc. hereby grants the right to freely use the information
-# supplied in this file in the creation of products supporting the
-# Unicode Standard, and to make copies of this file in any form for
-# internal or external distribution as long as this notice remains
-# attached.
-#
-# General notes:
-#
-# This table contains the data the Unicode Consortium has on how
-# ISO/IEC 8859-3:1999 characters map into Unicode.
-#
-# Format: Three tab-separated columns
-# Column #1 is the ISO/IEC 8859-3 code (in hex as 0xXX)
-# Column #2 is the Unicode (in hex as 0xXXXX)
-# Column #3 the Unicode name (follows a comment sign, '#')
-#
-# The entries are in ISO/IEC 8859-3 order.
-#
-# Version history
-# 1.0 version updates 0.1 version by adding mappings for all
-# control characters.
-#
-# Updated versions of this file may be found in:
-# <ftp://ftp.unicode.org/Public/MAPPINGS/>
-#
-# Any comments or problems, contact <errata@unicode.org>
-# Please note that <errata@unicode.org> is an archival address;
-# notices will be checked, but do not expect an immediate response.
-#
-0x00 0x0000 # NULL
-0x01 0x0001 # START OF HEADING
-0x02 0x0002 # START OF TEXT
-0x03 0x0003 # END OF TEXT
-0x04 0x0004 # END OF TRANSMISSION
-0x05 0x0005 # ENQUIRY
-0x06 0x0006 # ACKNOWLEDGE
-0x07 0x0007 # BELL
-0x08 0x0008 # BACKSPACE
-0x09 0x0009 # HORIZONTAL TABULATION
-0x0A 0x000A # LINE FEED
-0x0B 0x000B # VERTICAL TABULATION
-0x0C 0x000C # FORM FEED
-0x0D 0x000D # CARRIAGE RETURN
-0x0E 0x000E # SHIFT OUT
-0x0F 0x000F # SHIFT IN
-0x10 0x0010 # DATA LINK ESCAPE
-0x11 0x0011 # DEVICE CONTROL ONE
-0x12 0x0012 # DEVICE CONTROL TWO
-0x13 0x0013 # DEVICE CONTROL THREE
-0x14 0x0014 # DEVICE CONTROL FOUR
-0x15 0x0015 # NEGATIVE ACKNOWLEDGE
-0x16 0x0016 # SYNCHRONOUS IDLE
-0x17 0x0017 # END OF TRANSMISSION BLOCK
-0x18 0x0018 # CANCEL
-0x19 0x0019 # END OF MEDIUM
-0x1A 0x001A # SUBSTITUTE
-0x1B 0x001B # ESCAPE
-0x1C 0x001C # FILE SEPARATOR
-0x1D 0x001D # GROUP SEPARATOR
-0x1E 0x001E # RECORD SEPARATOR
-0x1F 0x001F # UNIT SEPARATOR
-0x20 0x0020 # SPACE
-0x21 0x0021 # EXCLAMATION MARK
-0x22 0x0022 # QUOTATION MARK
-0x23 0x0023 # NUMBER SIGN
-0x24 0x0024 # DOLLAR SIGN
-0x25 0x0025 # PERCENT SIGN
-0x26 0x0026 # AMPERSAND
-0x27 0x0027 # APOSTROPHE
-0x28 0x0028 # LEFT PARENTHESIS
-0x29 0x0029 # RIGHT PARENTHESIS
-0x2A 0x002A # ASTERISK
-0x2B 0x002B # PLUS SIGN
-0x2C 0x002C # COMMA
-0x2D 0x002D # HYPHEN-MINUS
-0x2E 0x002E # FULL STOP
-0x2F 0x002F # SOLIDUS
-0x30 0x0030 # DIGIT ZERO
-0x31 0x0031 # DIGIT ONE
-0x32 0x0032 # DIGIT TWO
-0x33 0x0033 # DIGIT THREE
-0x34 0x0034 # DIGIT FOUR
-0x35 0x0035 # DIGIT FIVE
-0x36 0x0036 # DIGIT SIX
-0x37 0x0037 # DIGIT SEVEN
-0x38 0x0038 # DIGIT EIGHT
-0x39 0x0039 # DIGIT NINE
-0x3A 0x003A # COLON
-0x3B 0x003B # SEMICOLON
-0x3C 0x003C # LESS-THAN SIGN
-0x3D 0x003D # EQUALS SIGN
-0x3E 0x003E # GREATER-THAN SIGN
-0x3F 0x003F # QUESTION MARK
-0x40 0x0040 # COMMERCIAL AT
-0x41 0x0041 # LATIN CAPITAL LETTER A
-0x42 0x0042 # LATIN CAPITAL LETTER B
-0x43 0x0043 # LATIN CAPITAL LETTER C
-0x44 0x0044 # LATIN CAPITAL LETTER D
-0x45 0x0045 # LATIN CAPITAL LETTER E
-0x46 0x0046 # LATIN CAPITAL LETTER F
-0x47 0x0047 # LATIN CAPITAL LETTER G
-0x48 0x0048 # LATIN CAPITAL LETTER H
-0x49 0x0049 # LATIN CAPITAL LETTER I
-0x4A 0x004A # LATIN CAPITAL LETTER J
-0x4B 0x004B # LATIN CAPITAL LETTER K
-0x4C 0x004C # LATIN CAPITAL LETTER L
-0x4D 0x004D # LATIN CAPITAL LETTER M
-0x4E 0x004E # LATIN CAPITAL LETTER N
-0x4F 0x004F # LATIN CAPITAL LETTER O
-0x50 0x0050 # LATIN CAPITAL LETTER P
-0x51 0x0051 # LATIN CAPITAL LETTER Q
-0x52 0x0052 # LATIN CAPITAL LETTER R
-0x53 0x0053 # LATIN CAPITAL LETTER S
-0x54 0x0054 # LATIN CAPITAL LETTER T
-0x55 0x0055 # LATIN CAPITAL LETTER U
-0x56 0x0056 # LATIN CAPITAL LETTER V
-0x57 0x0057 # LATIN CAPITAL LETTER W
-0x58 0x0058 # LATIN CAPITAL LETTER X
-0x59 0x0059 # LATIN CAPITAL LETTER Y
-0x5A 0x005A # LATIN CAPITAL LETTER Z
-0x5B 0x005B # LEFT SQUARE BRACKET
-0x5C 0x005C # REVERSE SOLIDUS
-0x5D 0x005D # RIGHT SQUARE BRACKET
-0x5E 0x005E # CIRCUMFLEX ACCENT
-0x5F 0x005F # LOW LINE
-0x60 0x0060 # GRAVE ACCENT
-0x61 0x0061 # LATIN SMALL LETTER A
-0x62 0x0062 # LATIN SMALL LETTER B
-0x63 0x0063 # LATIN SMALL LETTER C
-0x64 0x0064 # LATIN SMALL LETTER D
-0x65 0x0065 # LATIN SMALL LETTER E
-0x66 0x0066 # LATIN SMALL LETTER F
-0x67 0x0067 # LATIN SMALL LETTER G
-0x68 0x0068 # LATIN SMALL LETTER H
-0x69 0x0069 # LATIN SMALL LETTER I
-0x6A 0x006A # LATIN SMALL LETTER J
-0x6B 0x006B # LATIN SMALL LETTER K
-0x6C 0x006C # LATIN SMALL LETTER L
-0x6D 0x006D # LATIN SMALL LETTER M
-0x6E 0x006E # LATIN SMALL LETTER N
-0x6F 0x006F # LATIN SMALL LETTER O
-0x70 0x0070 # LATIN SMALL LETTER P
-0x71 0x0071 # LATIN SMALL LETTER Q
-0x72 0x0072 # LATIN SMALL LETTER R
-0x73 0x0073 # LATIN SMALL LETTER S
-0x74 0x0074 # LATIN SMALL LETTER T
-0x75 0x0075 # LATIN SMALL LETTER U
-0x76 0x0076 # LATIN SMALL LETTER V
-0x77 0x0077 # LATIN SMALL LETTER W
-0x78 0x0078 # LATIN SMALL LETTER X
-0x79 0x0079 # LATIN SMALL LETTER Y
-0x7A 0x007A # LATIN SMALL LETTER Z
-0x7B 0x007B # LEFT CURLY BRACKET
-0x7C 0x007C # VERTICAL LINE
-0x7D 0x007D # RIGHT CURLY BRACKET
-0x7E 0x007E # TILDE
-0x7F 0x007F # DELETE
-0x80 0x0080 # <control>
-0x81 0x0081 # <control>
-0x82 0x0082 # <control>
-0x83 0x0083 # <control>
-0x84 0x0084 # <control>
-0x85 0x0085 # <control>
-0x86 0x0086 # <control>
-0x87 0x0087 # <control>
-0x88 0x0088 # <control>
-0x89 0x0089 # <control>
-0x8A 0x008A # <control>
-0x8B 0x008B # <control>
-0x8C 0x008C # <control>
-0x8D 0x008D # <control>
-0x8E 0x008E # <control>
-0x8F 0x008F # <control>
-0x90 0x0090 # <control>
-0x91 0x0091 # <control>
-0x92 0x0092 # <control>
-0x93 0x0093 # <control>
-0x94 0x0094 # <control>
-0x95 0x0095 # <control>
-0x96 0x0096 # <control>
-0x97 0x0097 # <control>
-0x98 0x0098 # <control>
-0x99 0x0099 # <control>
-0x9A 0x009A # <control>
-0x9B 0x009B # <control>
-0x9C 0x009C # <control>
-0x9D 0x009D # <control>
-0x9E 0x009E # <control>
-0x9F 0x009F # <control>
-0xA0 0x00A0 # NO-BREAK SPACE
-0xA1 0x0126 # LATIN CAPITAL LETTER H WITH STROKE
-0xA2 0x02D8 # BREVE
-0xA3 0x00A3 # POUND SIGN
-0xA4 0x00A4 # CURRENCY SIGN
-0xA6 0x0124 # LATIN CAPITAL LETTER H WITH CIRCUMFLEX
-0xA7 0x00A7 # SECTION SIGN
-0xA8 0x00A8 # DIAERESIS
-0xA9 0x0130 # LATIN CAPITAL LETTER I WITH DOT ABOVE
-0xAA 0x015E # LATIN CAPITAL LETTER S WITH CEDILLA
-0xAB 0x011E # LATIN CAPITAL LETTER G WITH BREVE
-0xAC 0x0134 # LATIN CAPITAL LETTER J WITH CIRCUMFLEX
-0xAD 0x00AD # SOFT HYPHEN
-0xAF 0x017B # LATIN CAPITAL LETTER Z WITH DOT ABOVE
-0xB0 0x00B0 # DEGREE SIGN
-0xB1 0x0127 # LATIN SMALL LETTER H WITH STROKE
-0xB2 0x00B2 # SUPERSCRIPT TWO
-0xB3 0x00B3 # SUPERSCRIPT THREE
-0xB4 0x00B4 # ACUTE ACCENT
-0xB5 0x00B5 # MICRO SIGN
-0xB6 0x0125 # LATIN SMALL LETTER H WITH CIRCUMFLEX
-0xB7 0x00B7 # MIDDLE DOT
-0xB8 0x00B8 # CEDILLA
-0xB9 0x0131 # LATIN SMALL LETTER DOTLESS I
-0xBA 0x015F # LATIN SMALL LETTER S WITH CEDILLA
-0xBB 0x011F # LATIN SMALL LETTER G WITH BREVE
-0xBC 0x0135 # LATIN SMALL LETTER J WITH CIRCUMFLEX
-0xBD 0x00BD # VULGAR FRACTION ONE HALF
-0xBF 0x017C # LATIN SMALL LETTER Z WITH DOT ABOVE
-0xC0 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
-0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
-0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
-0xC5 0x010A # LATIN CAPITAL LETTER C WITH DOT ABOVE
-0xC6 0x0108 # LATIN CAPITAL LETTER C WITH CIRCUMFLEX
-0xC7 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
-0xC8 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
-0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
-0xCA 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
-0xCC 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
-0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
-0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-0xCF 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
-0xD1 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
-0xD2 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
-0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
-0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-0xD5 0x0120 # LATIN CAPITAL LETTER G WITH DOT ABOVE
-0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
-0xD7 0x00D7 # MULTIPLICATION SIGN
-0xD8 0x011C # LATIN CAPITAL LETTER G WITH CIRCUMFLEX
-0xD9 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
-0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
-0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
-0xDD 0x016C # LATIN CAPITAL LETTER U WITH BREVE
-0xDE 0x015C # LATIN CAPITAL LETTER S WITH CIRCUMFLEX
-0xDF 0x00DF # LATIN SMALL LETTER SHARP S
-0xE0 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
-0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
-0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
-0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
-0xE5 0x010B # LATIN SMALL LETTER C WITH DOT ABOVE
-0xE6 0x0109 # LATIN SMALL LETTER C WITH CIRCUMFLEX
-0xE7 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
-0xE8 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
-0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
-0xEA 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
-0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
-0xEC 0x00EC # LATIN SMALL LETTER I WITH GRAVE
-0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
-0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
-0xEF 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
-0xF1 0x00F1 # LATIN SMALL LETTER N WITH TILDE
-0xF2 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
-0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
-0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
-0xF5 0x0121 # LATIN SMALL LETTER G WITH DOT ABOVE
-0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
-0xF7 0x00F7 # DIVISION SIGN
-0xF8 0x011D # LATIN SMALL LETTER G WITH CIRCUMFLEX
-0xF9 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
-0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
-0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
-0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
-0xFD 0x016D # LATIN SMALL LETTER U WITH BREVE
-0xFE 0x015D # LATIN SMALL LETTER S WITH CIRCUMFLEX
-0xFF 0x02D9 # DOT ABOVE
diff --git a/program/lib/encoding/ISO-8859-4.map b/program/lib/encoding/ISO-8859-4.map
deleted file mode 100644
index 662e698ab..000000000
--- a/program/lib/encoding/ISO-8859-4.map
+++ /dev/null
@@ -1,303 +0,0 @@
-#
-# Name: ISO/IEC 8859-4:1998 to Unicode
-# Unicode version: 3.0
-# Table version: 1.0
-# Table format: Format A
-# Date: 1999 July 27
-# Authors: Ken Whistler <kenw@sybase.com>
-#
-# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
-#
-# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-# No claims are made as to fitness for any particular purpose. No
-# warranties of any kind are expressed or implied. The recipient
-# agrees to determine applicability of information provided. If this
-# file has been provided on optical media by Unicode, Inc., the sole
-# remedy for any claim will be exchange of defective media within 90
-# days of receipt.
-#
-# Unicode, Inc. hereby grants the right to freely use the information
-# supplied in this file in the creation of products supporting the
-# Unicode Standard, and to make copies of this file in any form for
-# internal or external distribution as long as this notice remains
-# attached.
-#
-# General notes:
-#
-# This table contains the data the Unicode Consortium has on how
-# ISO/IEC 8859-4:1998 characters map into Unicode.
-#
-# Format: Three tab-separated columns
-# Column #1 is the ISO/IEC 8859-4 code (in hex as 0xXX)
-# Column #2 is the Unicode (in hex as 0xXXXX)
-# Column #3 the Unicode name (follows a comment sign, '#')
-#
-# The entries are in ISO/IEC 8859-4 order.
-#
-# Version history
-# 1.0 version updates 0.1 version by adding mappings for all
-# control characters.
-#
-# Updated versions of this file may be found in:
-# <ftp://ftp.unicode.org/Public/MAPPINGS/>
-#
-# Any comments or problems, contact <errata@unicode.org>
-# Please note that <errata@unicode.org> is an archival address;
-# notices will be checked, but do not expect an immediate response.
-#
-0x00 0x0000 # NULL
-0x01 0x0001 # START OF HEADING
-0x02 0x0002 # START OF TEXT
-0x03 0x0003 # END OF TEXT
-0x04 0x0004 # END OF TRANSMISSION
-0x05 0x0005 # ENQUIRY
-0x06 0x0006 # ACKNOWLEDGE
-0x07 0x0007 # BELL
-0x08 0x0008 # BACKSPACE
-0x09 0x0009 # HORIZONTAL TABULATION
-0x0A 0x000A # LINE FEED
-0x0B 0x000B # VERTICAL TABULATION
-0x0C 0x000C # FORM FEED
-0x0D 0x000D # CARRIAGE RETURN
-0x0E 0x000E # SHIFT OUT
-0x0F 0x000F # SHIFT IN
-0x10 0x0010 # DATA LINK ESCAPE
-0x11 0x0011 # DEVICE CONTROL ONE
-0x12 0x0012 # DEVICE CONTROL TWO
-0x13 0x0013 # DEVICE CONTROL THREE
-0x14 0x0014 # DEVICE CONTROL FOUR
-0x15 0x0015 # NEGATIVE ACKNOWLEDGE
-0x16 0x0016 # SYNCHRONOUS IDLE
-0x17 0x0017 # END OF TRANSMISSION BLOCK
-0x18 0x0018 # CANCEL
-0x19 0x0019 # END OF MEDIUM
-0x1A 0x001A # SUBSTITUTE
-0x1B 0x001B # ESCAPE
-0x1C 0x001C # FILE SEPARATOR
-0x1D 0x001D # GROUP SEPARATOR
-0x1E 0x001E # RECORD SEPARATOR
-0x1F 0x001F # UNIT SEPARATOR
-0x20 0x0020 # SPACE
-0x21 0x0021 # EXCLAMATION MARK
-0x22 0x0022 # QUOTATION MARK
-0x23 0x0023 # NUMBER SIGN
-0x24 0x0024 # DOLLAR SIGN
-0x25 0x0025 # PERCENT SIGN
-0x26 0x0026 # AMPERSAND
-0x27 0x0027 # APOSTROPHE
-0x28 0x0028 # LEFT PARENTHESIS
-0x29 0x0029 # RIGHT PARENTHESIS
-0x2A 0x002A # ASTERISK
-0x2B 0x002B # PLUS SIGN
-0x2C 0x002C # COMMA
-0x2D 0x002D # HYPHEN-MINUS
-0x2E 0x002E # FULL STOP
-0x2F 0x002F # SOLIDUS
-0x30 0x0030 # DIGIT ZERO
-0x31 0x0031 # DIGIT ONE
-0x32 0x0032 # DIGIT TWO
-0x33 0x0033 # DIGIT THREE
-0x34 0x0034 # DIGIT FOUR
-0x35 0x0035 # DIGIT FIVE
-0x36 0x0036 # DIGIT SIX
-0x37 0x0037 # DIGIT SEVEN
-0x38 0x0038 # DIGIT EIGHT
-0x39 0x0039 # DIGIT NINE
-0x3A 0x003A # COLON
-0x3B 0x003B # SEMICOLON
-0x3C 0x003C # LESS-THAN SIGN
-0x3D 0x003D # EQUALS SIGN
-0x3E 0x003E # GREATER-THAN SIGN
-0x3F 0x003F # QUESTION MARK
-0x40 0x0040 # COMMERCIAL AT
-0x41 0x0041 # LATIN CAPITAL LETTER A
-0x42 0x0042 # LATIN CAPITAL LETTER B
-0x43 0x0043 # LATIN CAPITAL LETTER C
-0x44 0x0044 # LATIN CAPITAL LETTER D
-0x45 0x0045 # LATIN CAPITAL LETTER E
-0x46 0x0046 # LATIN CAPITAL LETTER F
-0x47 0x0047 # LATIN CAPITAL LETTER G
-0x48 0x0048 # LATIN CAPITAL LETTER H
-0x49 0x0049 # LATIN CAPITAL LETTER I
-0x4A 0x004A # LATIN CAPITAL LETTER J
-0x4B 0x004B # LATIN CAPITAL LETTER K
-0x4C 0x004C # LATIN CAPITAL LETTER L
-0x4D 0x004D # LATIN CAPITAL LETTER M
-0x4E 0x004E # LATIN CAPITAL LETTER N
-0x4F 0x004F # LATIN CAPITAL LETTER O
-0x50 0x0050 # LATIN CAPITAL LETTER P
-0x51 0x0051 # LATIN CAPITAL LETTER Q
-0x52 0x0052 # LATIN CAPITAL LETTER R
-0x53 0x0053 # LATIN CAPITAL LETTER S
-0x54 0x0054 # LATIN CAPITAL LETTER T
-0x55 0x0055 # LATIN CAPITAL LETTER U
-0x56 0x0056 # LATIN CAPITAL LETTER V
-0x57 0x0057 # LATIN CAPITAL LETTER W
-0x58 0x0058 # LATIN CAPITAL LETTER X
-0x59 0x0059 # LATIN CAPITAL LETTER Y
-0x5A 0x005A # LATIN CAPITAL LETTER Z
-0x5B 0x005B # LEFT SQUARE BRACKET
-0x5C 0x005C # REVERSE SOLIDUS
-0x5D 0x005D # RIGHT SQUARE BRACKET
-0x5E 0x005E # CIRCUMFLEX ACCENT
-0x5F 0x005F # LOW LINE
-0x60 0x0060 # GRAVE ACCENT
-0x61 0x0061 # LATIN SMALL LETTER A
-0x62 0x0062 # LATIN SMALL LETTER B
-0x63 0x0063 # LATIN SMALL LETTER C
-0x64 0x0064 # LATIN SMALL LETTER D
-0x65 0x0065 # LATIN SMALL LETTER E
-0x66 0x0066 # LATIN SMALL LETTER F
-0x67 0x0067 # LATIN SMALL LETTER G
-0x68 0x0068 # LATIN SMALL LETTER H
-0x69 0x0069 # LATIN SMALL LETTER I
-0x6A 0x006A # LATIN SMALL LETTER J
-0x6B 0x006B # LATIN SMALL LETTER K
-0x6C 0x006C # LATIN SMALL LETTER L
-0x6D 0x006D # LATIN SMALL LETTER M
-0x6E 0x006E # LATIN SMALL LETTER N
-0x6F 0x006F # LATIN SMALL LETTER O
-0x70 0x0070 # LATIN SMALL LETTER P
-0x71 0x0071 # LATIN SMALL LETTER Q
-0x72 0x0072 # LATIN SMALL LETTER R
-0x73 0x0073 # LATIN SMALL LETTER S
-0x74 0x0074 # LATIN SMALL LETTER T
-0x75 0x0075 # LATIN SMALL LETTER U
-0x76 0x0076 # LATIN SMALL LETTER V
-0x77 0x0077 # LATIN SMALL LETTER W
-0x78 0x0078 # LATIN SMALL LETTER X
-0x79 0x0079 # LATIN SMALL LETTER Y
-0x7A 0x007A # LATIN SMALL LETTER Z
-0x7B 0x007B # LEFT CURLY BRACKET
-0x7C 0x007C # VERTICAL LINE
-0x7D 0x007D # RIGHT CURLY BRACKET
-0x7E 0x007E # TILDE
-0x7F 0x007F # DELETE
-0x80 0x0080 # <control>
-0x81 0x0081 # <control>
-0x82 0x0082 # <control>
-0x83 0x0083 # <control>
-0x84 0x0084 # <control>
-0x85 0x0085 # <control>
-0x86 0x0086 # <control>
-0x87 0x0087 # <control>
-0x88 0x0088 # <control>
-0x89 0x0089 # <control>
-0x8A 0x008A # <control>
-0x8B 0x008B # <control>
-0x8C 0x008C # <control>
-0x8D 0x008D # <control>
-0x8E 0x008E # <control>
-0x8F 0x008F # <control>
-0x90 0x0090 # <control>
-0x91 0x0091 # <control>
-0x92 0x0092 # <control>
-0x93 0x0093 # <control>
-0x94 0x0094 # <control>
-0x95 0x0095 # <control>
-0x96 0x0096 # <control>
-0x97 0x0097 # <control>
-0x98 0x0098 # <control>
-0x99 0x0099 # <control>
-0x9A 0x009A # <control>
-0x9B 0x009B # <control>
-0x9C 0x009C # <control>
-0x9D 0x009D # <control>
-0x9E 0x009E # <control>
-0x9F 0x009F # <control>
-0xA0 0x00A0 # NO-BREAK SPACE
-0xA1 0x0104 # LATIN CAPITAL LETTER A WITH OGONEK
-0xA2 0x0138 # LATIN SMALL LETTER KRA
-0xA3 0x0156 # LATIN CAPITAL LETTER R WITH CEDILLA
-0xA4 0x00A4 # CURRENCY SIGN
-0xA5 0x0128 # LATIN CAPITAL LETTER I WITH TILDE
-0xA6 0x013B # LATIN CAPITAL LETTER L WITH CEDILLA
-0xA7 0x00A7 # SECTION SIGN
-0xA8 0x00A8 # DIAERESIS
-0xA9 0x0160 # LATIN CAPITAL LETTER S WITH CARON
-0xAA 0x0112 # LATIN CAPITAL LETTER E WITH MACRON
-0xAB 0x0122 # LATIN CAPITAL LETTER G WITH CEDILLA
-0xAC 0x0166 # LATIN CAPITAL LETTER T WITH STROKE
-0xAD 0x00AD # SOFT HYPHEN
-0xAE 0x017D # LATIN CAPITAL LETTER Z WITH CARON
-0xAF 0x00AF # MACRON
-0xB0 0x00B0 # DEGREE SIGN
-0xB1 0x0105 # LATIN SMALL LETTER A WITH OGONEK
-0xB2 0x02DB # OGONEK
-0xB3 0x0157 # LATIN SMALL LETTER R WITH CEDILLA
-0xB4 0x00B4 # ACUTE ACCENT
-0xB5 0x0129 # LATIN SMALL LETTER I WITH TILDE
-0xB6 0x013C # LATIN SMALL LETTER L WITH CEDILLA
-0xB7 0x02C7 # CARON
-0xB8 0x00B8 # CEDILLA
-0xB9 0x0161 # LATIN SMALL LETTER S WITH CARON
-0xBA 0x0113 # LATIN SMALL LETTER E WITH MACRON
-0xBB 0x0123 # LATIN SMALL LETTER G WITH CEDILLA
-0xBC 0x0167 # LATIN SMALL LETTER T WITH STROKE
-0xBD 0x014A # LATIN CAPITAL LETTER ENG
-0xBE 0x017E # LATIN SMALL LETTER Z WITH CARON
-0xBF 0x014B # LATIN SMALL LETTER ENG
-0xC0 0x0100 # LATIN CAPITAL LETTER A WITH MACRON
-0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
-0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-0xC3 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
-0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
-0xC5 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
-0xC6 0x00C6 # LATIN CAPITAL LETTER AE
-0xC7 0x012E # LATIN CAPITAL LETTER I WITH OGONEK
-0xC8 0x010C # LATIN CAPITAL LETTER C WITH CARON
-0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
-0xCA 0x0118 # LATIN CAPITAL LETTER E WITH OGONEK
-0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
-0xCC 0x0116 # LATIN CAPITAL LETTER E WITH DOT ABOVE
-0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
-0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-0xCF 0x012A # LATIN CAPITAL LETTER I WITH MACRON
-0xD0 0x0110 # LATIN CAPITAL LETTER D WITH STROKE
-0xD1 0x0145 # LATIN CAPITAL LETTER N WITH CEDILLA
-0xD2 0x014C # LATIN CAPITAL LETTER O WITH MACRON
-0xD3 0x0136 # LATIN CAPITAL LETTER K WITH CEDILLA
-0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-0xD5 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
-0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
-0xD7 0x00D7 # MULTIPLICATION SIGN
-0xD8 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
-0xD9 0x0172 # LATIN CAPITAL LETTER U WITH OGONEK
-0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
-0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
-0xDD 0x0168 # LATIN CAPITAL LETTER U WITH TILDE
-0xDE 0x016A # LATIN CAPITAL LETTER U WITH MACRON
-0xDF 0x00DF # LATIN SMALL LETTER SHARP S
-0xE0 0x0101 # LATIN SMALL LETTER A WITH MACRON
-0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
-0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
-0xE3 0x00E3 # LATIN SMALL LETTER A WITH TILDE
-0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
-0xE5 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
-0xE6 0x00E6 # LATIN SMALL LETTER AE
-0xE7 0x012F # LATIN SMALL LETTER I WITH OGONEK
-0xE8 0x010D # LATIN SMALL LETTER C WITH CARON
-0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
-0xEA 0x0119 # LATIN SMALL LETTER E WITH OGONEK
-0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
-0xEC 0x0117 # LATIN SMALL LETTER E WITH DOT ABOVE
-0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
-0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
-0xEF 0x012B # LATIN SMALL LETTER I WITH MACRON
-0xF0 0x0111 # LATIN SMALL LETTER D WITH STROKE
-0xF1 0x0146 # LATIN SMALL LETTER N WITH CEDILLA
-0xF2 0x014D # LATIN SMALL LETTER O WITH MACRON
-0xF3 0x0137 # LATIN SMALL LETTER K WITH CEDILLA
-0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
-0xF5 0x00F5 # LATIN SMALL LETTER O WITH TILDE
-0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
-0xF7 0x00F7 # DIVISION SIGN
-0xF8 0x00F8 # LATIN SMALL LETTER O WITH STROKE
-0xF9 0x0173 # LATIN SMALL LETTER U WITH OGONEK
-0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
-0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
-0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
-0xFD 0x0169 # LATIN SMALL LETTER U WITH TILDE
-0xFE 0x016B # LATIN SMALL LETTER U WITH MACRON
-0xFF 0x02D9 # DOT ABOVE
diff --git a/program/lib/encoding/ISO-8859-5.map b/program/lib/encoding/ISO-8859-5.map
deleted file mode 100644
index a7ed1ce2a..000000000
--- a/program/lib/encoding/ISO-8859-5.map
+++ /dev/null
@@ -1,303 +0,0 @@
-#
-# Name: ISO 8859-5:1999 to Unicode
-# Unicode version: 3.0
-# Table version: 1.0
-# Table format: Format A
-# Date: 1999 July 27
-# Authors: Ken Whistler <kenw@sybase.com>
-#
-# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
-#
-# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-# No claims are made as to fitness for any particular purpose. No
-# warranties of any kind are expressed or implied. The recipient
-# agrees to determine applicability of information provided. If this
-# file has been provided on optical media by Unicode, Inc., the sole
-# remedy for any claim will be exchange of defective media within 90
-# days of receipt.
-#
-# Unicode, Inc. hereby grants the right to freely use the information
-# supplied in this file in the creation of products supporting the
-# Unicode Standard, and to make copies of this file in any form for
-# internal or external distribution as long as this notice remains
-# attached.
-#
-# General notes:
-#
-# This table contains the data the Unicode Consortium has on how
-# ISO/IEC 8859-5:1999 characters map into Unicode.
-#
-# Format: Three tab-separated columns
-# Column #1 is the ISO/IEC 8859-5 code (in hex as 0xXX)
-# Column #2 is the Unicode (in hex as 0xXXXX)
-# Column #3 the Unicode name (follows a comment sign, '#')
-#
-# The entries are in ISO/IEC 8859-5 order.
-#
-# Version history
-# 1.0 version updates 0.1 version by adding mappings for all
-# control characters.
-#
-# Updated versions of this file may be found in:
-# <ftp://ftp.unicode.org/Public/MAPPINGS/>
-#
-# Any comments or problems, contact <errata@unicode.org>
-# Please note that <errata@unicode.org> is an archival address;
-# notices will be checked, but do not expect an immediate response.
-#
-0x00 0x0000 # NULL
-0x01 0x0001 # START OF HEADING
-0x02 0x0002 # START OF TEXT
-0x03 0x0003 # END OF TEXT
-0x04 0x0004 # END OF TRANSMISSION
-0x05 0x0005 # ENQUIRY
-0x06 0x0006 # ACKNOWLEDGE
-0x07 0x0007 # BELL
-0x08 0x0008 # BACKSPACE
-0x09 0x0009 # HORIZONTAL TABULATION
-0x0A 0x000A # LINE FEED
-0x0B 0x000B # VERTICAL TABULATION
-0x0C 0x000C # FORM FEED
-0x0D 0x000D # CARRIAGE RETURN
-0x0E 0x000E # SHIFT OUT
-0x0F 0x000F # SHIFT IN
-0x10 0x0010 # DATA LINK ESCAPE
-0x11 0x0011 # DEVICE CONTROL ONE
-0x12 0x0012 # DEVICE CONTROL TWO
-0x13 0x0013 # DEVICE CONTROL THREE
-0x14 0x0014 # DEVICE CONTROL FOUR
-0x15 0x0015 # NEGATIVE ACKNOWLEDGE
-0x16 0x0016 # SYNCHRONOUS IDLE
-0x17 0x0017 # END OF TRANSMISSION BLOCK
-0x18 0x0018 # CANCEL
-0x19 0x0019 # END OF MEDIUM
-0x1A 0x001A # SUBSTITUTE
-0x1B 0x001B # ESCAPE
-0x1C 0x001C # FILE SEPARATOR
-0x1D 0x001D # GROUP SEPARATOR
-0x1E 0x001E # RECORD SEPARATOR
-0x1F 0x001F # UNIT SEPARATOR
-0x20 0x0020 # SPACE
-0x21 0x0021 # EXCLAMATION MARK
-0x22 0x0022 # QUOTATION MARK
-0x23 0x0023 # NUMBER SIGN
-0x24 0x0024 # DOLLAR SIGN
-0x25 0x0025 # PERCENT SIGN
-0x26 0x0026 # AMPERSAND
-0x27 0x0027 # APOSTROPHE
-0x28 0x0028 # LEFT PARENTHESIS
-0x29 0x0029 # RIGHT PARENTHESIS
-0x2A 0x002A # ASTERISK
-0x2B 0x002B # PLUS SIGN
-0x2C 0x002C # COMMA
-0x2D 0x002D # HYPHEN-MINUS
-0x2E 0x002E # FULL STOP
-0x2F 0x002F # SOLIDUS
-0x30 0x0030 # DIGIT ZERO
-0x31 0x0031 # DIGIT ONE
-0x32 0x0032 # DIGIT TWO
-0x33 0x0033 # DIGIT THREE
-0x34 0x0034 # DIGIT FOUR
-0x35 0x0035 # DIGIT FIVE
-0x36 0x0036 # DIGIT SIX
-0x37 0x0037 # DIGIT SEVEN
-0x38 0x0038 # DIGIT EIGHT
-0x39 0x0039 # DIGIT NINE
-0x3A 0x003A # COLON
-0x3B 0x003B # SEMICOLON
-0x3C 0x003C # LESS-THAN SIGN
-0x3D 0x003D # EQUALS SIGN
-0x3E 0x003E # GREATER-THAN SIGN
-0x3F 0x003F # QUESTION MARK
-0x40 0x0040 # COMMERCIAL AT
-0x41 0x0041 # LATIN CAPITAL LETTER A
-0x42 0x0042 # LATIN CAPITAL LETTER B
-0x43 0x0043 # LATIN CAPITAL LETTER C
-0x44 0x0044 # LATIN CAPITAL LETTER D
-0x45 0x0045 # LATIN CAPITAL LETTER E
-0x46 0x0046 # LATIN CAPITAL LETTER F
-0x47 0x0047 # LATIN CAPITAL LETTER G
-0x48 0x0048 # LATIN CAPITAL LETTER H
-0x49 0x0049 # LATIN CAPITAL LETTER I
-0x4A 0x004A # LATIN CAPITAL LETTER J
-0x4B 0x004B # LATIN CAPITAL LETTER K
-0x4C 0x004C # LATIN CAPITAL LETTER L
-0x4D 0x004D # LATIN CAPITAL LETTER M
-0x4E 0x004E # LATIN CAPITAL LETTER N
-0x4F 0x004F # LATIN CAPITAL LETTER O
-0x50 0x0050 # LATIN CAPITAL LETTER P
-0x51 0x0051 # LATIN CAPITAL LETTER Q
-0x52 0x0052 # LATIN CAPITAL LETTER R
-0x53 0x0053 # LATIN CAPITAL LETTER S
-0x54 0x0054 # LATIN CAPITAL LETTER T
-0x55 0x0055 # LATIN CAPITAL LETTER U
-0x56 0x0056 # LATIN CAPITAL LETTER V
-0x57 0x0057 # LATIN CAPITAL LETTER W
-0x58 0x0058 # LATIN CAPITAL LETTER X
-0x59 0x0059 # LATIN CAPITAL LETTER Y
-0x5A 0x005A # LATIN CAPITAL LETTER Z
-0x5B 0x005B # LEFT SQUARE BRACKET
-0x5C 0x005C # REVERSE SOLIDUS
-0x5D 0x005D # RIGHT SQUARE BRACKET
-0x5E 0x005E # CIRCUMFLEX ACCENT
-0x5F 0x005F # LOW LINE
-0x60 0x0060 # GRAVE ACCENT
-0x61 0x0061 # LATIN SMALL LETTER A
-0x62 0x0062 # LATIN SMALL LETTER B
-0x63 0x0063 # LATIN SMALL LETTER C
-0x64 0x0064 # LATIN SMALL LETTER D
-0x65 0x0065 # LATIN SMALL LETTER E
-0x66 0x0066 # LATIN SMALL LETTER F
-0x67 0x0067 # LATIN SMALL LETTER G
-0x68 0x0068 # LATIN SMALL LETTER H
-0x69 0x0069 # LATIN SMALL LETTER I
-0x6A 0x006A # LATIN SMALL LETTER J
-0x6B 0x006B # LATIN SMALL LETTER K
-0x6C 0x006C # LATIN SMALL LETTER L
-0x6D 0x006D # LATIN SMALL LETTER M
-0x6E 0x006E # LATIN SMALL LETTER N
-0x6F 0x006F # LATIN SMALL LETTER O
-0x70 0x0070 # LATIN SMALL LETTER P
-0x71 0x0071 # LATIN SMALL LETTER Q
-0x72 0x0072 # LATIN SMALL LETTER R
-0x73 0x0073 # LATIN SMALL LETTER S
-0x74 0x0074 # LATIN SMALL LETTER T
-0x75 0x0075 # LATIN SMALL LETTER U
-0x76 0x0076 # LATIN SMALL LETTER V
-0x77 0x0077 # LATIN SMALL LETTER W
-0x78 0x0078 # LATIN SMALL LETTER X
-0x79 0x0079 # LATIN SMALL LETTER Y
-0x7A 0x007A # LATIN SMALL LETTER Z
-0x7B 0x007B # LEFT CURLY BRACKET
-0x7C 0x007C # VERTICAL LINE
-0x7D 0x007D # RIGHT CURLY BRACKET
-0x7E 0x007E # TILDE
-0x7F 0x007F # DELETE
-0x80 0x0080 # <control>
-0x81 0x0081 # <control>
-0x82 0x0082 # <control>
-0x83 0x0083 # <control>
-0x84 0x0084 # <control>
-0x85 0x0085 # <control>
-0x86 0x0086 # <control>
-0x87 0x0087 # <control>
-0x88 0x0088 # <control>
-0x89 0x0089 # <control>
-0x8A 0x008A # <control>
-0x8B 0x008B # <control>
-0x8C 0x008C # <control>
-0x8D 0x008D # <control>
-0x8E 0x008E # <control>
-0x8F 0x008F # <control>
-0x90 0x0090 # <control>
-0x91 0x0091 # <control>
-0x92 0x0092 # <control>
-0x93 0x0093 # <control>
-0x94 0x0094 # <control>
-0x95 0x0095 # <control>
-0x96 0x0096 # <control>
-0x97 0x0097 # <control>
-0x98 0x0098 # <control>
-0x99 0x0099 # <control>
-0x9A 0x009A # <control>
-0x9B 0x009B # <control>
-0x9C 0x009C # <control>
-0x9D 0x009D # <control>
-0x9E 0x009E # <control>
-0x9F 0x009F # <control>
-0xA0 0x00A0 # NO-BREAK SPACE
-0xA1 0x0401 # CYRILLIC CAPITAL LETTER IO
-0xA2 0x0402 # CYRILLIC CAPITAL LETTER DJE
-0xA3 0x0403 # CYRILLIC CAPITAL LETTER GJE
-0xA4 0x0404 # CYRILLIC CAPITAL LETTER UKRAINIAN IE
-0xA5 0x0405 # CYRILLIC CAPITAL LETTER DZE
-0xA6 0x0406 # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-0xA7 0x0407 # CYRILLIC CAPITAL LETTER YI
-0xA8 0x0408 # CYRILLIC CAPITAL LETTER JE
-0xA9 0x0409 # CYRILLIC CAPITAL LETTER LJE
-0xAA 0x040A # CYRILLIC CAPITAL LETTER NJE
-0xAB 0x040B # CYRILLIC CAPITAL LETTER TSHE
-0xAC 0x040C # CYRILLIC CAPITAL LETTER KJE
-0xAD 0x00AD # SOFT HYPHEN
-0xAE 0x040E # CYRILLIC CAPITAL LETTER SHORT U
-0xAF 0x040F # CYRILLIC CAPITAL LETTER DZHE
-0xB0 0x0410 # CYRILLIC CAPITAL LETTER A
-0xB1 0x0411 # CYRILLIC CAPITAL LETTER BE
-0xB2 0x0412 # CYRILLIC CAPITAL LETTER VE
-0xB3 0x0413 # CYRILLIC CAPITAL LETTER GHE
-0xB4 0x0414 # CYRILLIC CAPITAL LETTER DE
-0xB5 0x0415 # CYRILLIC CAPITAL LETTER IE
-0xB6 0x0416 # CYRILLIC CAPITAL LETTER ZHE
-0xB7 0x0417 # CYRILLIC CAPITAL LETTER ZE
-0xB8 0x0418 # CYRILLIC CAPITAL LETTER I
-0xB9 0x0419 # CYRILLIC CAPITAL LETTER SHORT I
-0xBA 0x041A # CYRILLIC CAPITAL LETTER KA
-0xBB 0x041B # CYRILLIC CAPITAL LETTER EL
-0xBC 0x041C # CYRILLIC CAPITAL LETTER EM
-0xBD 0x041D # CYRILLIC CAPITAL LETTER EN
-0xBE 0x041E # CYRILLIC CAPITAL LETTER O
-0xBF 0x041F # CYRILLIC CAPITAL LETTER PE
-0xC0 0x0420 # CYRILLIC CAPITAL LETTER ER
-0xC1 0x0421 # CYRILLIC CAPITAL LETTER ES
-0xC2 0x0422 # CYRILLIC CAPITAL LETTER TE
-0xC3 0x0423 # CYRILLIC CAPITAL LETTER U
-0xC4 0x0424 # CYRILLIC CAPITAL LETTER EF
-0xC5 0x0425 # CYRILLIC CAPITAL LETTER HA
-0xC6 0x0426 # CYRILLIC CAPITAL LETTER TSE
-0xC7 0x0427 # CYRILLIC CAPITAL LETTER CHE
-0xC8 0x0428 # CYRILLIC CAPITAL LETTER SHA
-0xC9 0x0429 # CYRILLIC CAPITAL LETTER SHCHA
-0xCA 0x042A # CYRILLIC CAPITAL LETTER HARD SIGN
-0xCB 0x042B # CYRILLIC CAPITAL LETTER YERU
-0xCC 0x042C # CYRILLIC CAPITAL LETTER SOFT SIGN
-0xCD 0x042D # CYRILLIC CAPITAL LETTER E
-0xCE 0x042E # CYRILLIC CAPITAL LETTER YU
-0xCF 0x042F # CYRILLIC CAPITAL LETTER YA
-0xD0 0x0430 # CYRILLIC SMALL LETTER A
-0xD1 0x0431 # CYRILLIC SMALL LETTER BE
-0xD2 0x0432 # CYRILLIC SMALL LETTER VE
-0xD3 0x0433 # CYRILLIC SMALL LETTER GHE
-0xD4 0x0434 # CYRILLIC SMALL LETTER DE
-0xD5 0x0435 # CYRILLIC SMALL LETTER IE
-0xD6 0x0436 # CYRILLIC SMALL LETTER ZHE
-0xD7 0x0437 # CYRILLIC SMALL LETTER ZE
-0xD8 0x0438 # CYRILLIC SMALL LETTER I
-0xD9 0x0439 # CYRILLIC SMALL LETTER SHORT I
-0xDA 0x043A # CYRILLIC SMALL LETTER KA
-0xDB 0x043B # CYRILLIC SMALL LETTER EL
-0xDC 0x043C # CYRILLIC SMALL LETTER EM
-0xDD 0x043D # CYRILLIC SMALL LETTER EN
-0xDE 0x043E # CYRILLIC SMALL LETTER O
-0xDF 0x043F # CYRILLIC SMALL LETTER PE
-0xE0 0x0440 # CYRILLIC SMALL LETTER ER
-0xE1 0x0441 # CYRILLIC SMALL LETTER ES
-0xE2 0x0442 # CYRILLIC SMALL LETTER TE
-0xE3 0x0443 # CYRILLIC SMALL LETTER U
-0xE4 0x0444 # CYRILLIC SMALL LETTER EF
-0xE5 0x0445 # CYRILLIC SMALL LETTER HA
-0xE6 0x0446 # CYRILLIC SMALL LETTER TSE
-0xE7 0x0447 # CYRILLIC SMALL LETTER CHE
-0xE8 0x0448 # CYRILLIC SMALL LETTER SHA
-0xE9 0x0449 # CYRILLIC SMALL LETTER SHCHA
-0xEA 0x044A # CYRILLIC SMALL LETTER HARD SIGN
-0xEB 0x044B # CYRILLIC SMALL LETTER YERU
-0xEC 0x044C # CYRILLIC SMALL LETTER SOFT SIGN
-0xED 0x044D # CYRILLIC SMALL LETTER E
-0xEE 0x044E # CYRILLIC SMALL LETTER YU
-0xEF 0x044F # CYRILLIC SMALL LETTER YA
-0xF0 0x2116 # NUMERO SIGN
-0xF1 0x0451 # CYRILLIC SMALL LETTER IO
-0xF2 0x0452 # CYRILLIC SMALL LETTER DJE
-0xF3 0x0453 # CYRILLIC SMALL LETTER GJE
-0xF4 0x0454 # CYRILLIC SMALL LETTER UKRAINIAN IE
-0xF5 0x0455 # CYRILLIC SMALL LETTER DZE
-0xF6 0x0456 # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
-0xF7 0x0457 # CYRILLIC SMALL LETTER YI
-0xF8 0x0458 # CYRILLIC SMALL LETTER JE
-0xF9 0x0459 # CYRILLIC SMALL LETTER LJE
-0xFA 0x045A # CYRILLIC SMALL LETTER NJE
-0xFB 0x045B # CYRILLIC SMALL LETTER TSHE
-0xFC 0x045C # CYRILLIC SMALL LETTER KJE
-0xFD 0x00A7 # SECTION SIGN
-0xFE 0x045E # CYRILLIC SMALL LETTER SHORT U
-0xFF 0x045F # CYRILLIC SMALL LETTER DZHE
diff --git a/program/lib/encoding/ISO-8859-6.map b/program/lib/encoding/ISO-8859-6.map
deleted file mode 100644
index 69ac7f589..000000000
--- a/program/lib/encoding/ISO-8859-6.map
+++ /dev/null
@@ -1,260 +0,0 @@
-#
-# Name: ISO 8859-6:1999 to Unicode
-# Unicode version: 3.0
-# Table version: 1.0
-# Table format: Format A
-# Date: 1999 July 27
-# Authors: Ken Whistler <kenw@sybase.com>
-#
-# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
-#
-# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-# No claims are made as to fitness for any particular purpose. No
-# warranties of any kind are expressed or implied. The recipient
-# agrees to determine applicability of information provided. If this
-# file has been provided on optical media by Unicode, Inc., the sole
-# remedy for any claim will be exchange of defective media within 90
-# days of receipt.
-#
-# Unicode, Inc. hereby grants the right to freely use the information
-# supplied in this file in the creation of products supporting the
-# Unicode Standard, and to make copies of this file in any form for
-# internal or external distribution as long as this notice remains
-# attached.
-#
-# General notes:
-#
-# This table contains the data the Unicode Consortium has on how
-# ISO/IEC 8859-6:1999 characters map into Unicode.
-#
-# Format: Three tab-separated columns
-# Column #1 is the ISO/IEC 8859-6 code (in hex as 0xXX)
-# Column #2 is the Unicode (in hex as 0xXXXX)
-# Column #3 the Unicode name (follows a comment sign, '#')
-#
-# The entries are in ISO/IEC 8859-6 order.
-#
-# Version history
-# 1.0 version updates 0.1 version by adding mappings for all
-# control characters.
-# 0x30..0x39 remapped to the ASCII digits (U+0030..U+0039) instead
-# of the Arabic digits (U+0660..U+0669).
-#
-# Updated versions of this file may be found in:
-# <ftp://ftp.unicode.org/Public/MAPPINGS/>
-#
-# Any comments or problems, contact <errata@unicode.org>
-# Please note that <errata@unicode.org> is an archival address;
-# notices will be checked, but do not expect an immediate response.
-#
-0x00 0x0000 # NULL
-0x01 0x0001 # START OF HEADING
-0x02 0x0002 # START OF TEXT
-0x03 0x0003 # END OF TEXT
-0x04 0x0004 # END OF TRANSMISSION
-0x05 0x0005 # ENQUIRY
-0x06 0x0006 # ACKNOWLEDGE
-0x07 0x0007 # BELL
-0x08 0x0008 # BACKSPACE
-0x09 0x0009 # HORIZONTAL TABULATION
-0x0A 0x000A # LINE FEED
-0x0B 0x000B # VERTICAL TABULATION
-0x0C 0x000C # FORM FEED
-0x0D 0x000D # CARRIAGE RETURN
-0x0E 0x000E # SHIFT OUT
-0x0F 0x000F # SHIFT IN
-0x10 0x0010 # DATA LINK ESCAPE
-0x11 0x0011 # DEVICE CONTROL ONE
-0x12 0x0012 # DEVICE CONTROL TWO
-0x13 0x0013 # DEVICE CONTROL THREE
-0x14 0x0014 # DEVICE CONTROL FOUR
-0x15 0x0015 # NEGATIVE ACKNOWLEDGE
-0x16 0x0016 # SYNCHRONOUS IDLE
-0x17 0x0017 # END OF TRANSMISSION BLOCK
-0x18 0x0018 # CANCEL
-0x19 0x0019 # END OF MEDIUM
-0x1A 0x001A # SUBSTITUTE
-0x1B 0x001B # ESCAPE
-0x1C 0x001C # FILE SEPARATOR
-0x1D 0x001D # GROUP SEPARATOR
-0x1E 0x001E # RECORD SEPARATOR
-0x1F 0x001F # UNIT SEPARATOR
-0x20 0x0020 # SPACE
-0x21 0x0021 # EXCLAMATION MARK
-0x22 0x0022 # QUOTATION MARK
-0x23 0x0023 # NUMBER SIGN
-0x24 0x0024 # DOLLAR SIGN
-0x25 0x0025 # PERCENT SIGN
-0x26 0x0026 # AMPERSAND
-0x27 0x0027 # APOSTROPHE
-0x28 0x0028 # LEFT PARENTHESIS
-0x29 0x0029 # RIGHT PARENTHESIS
-0x2A 0x002A # ASTERISK
-0x2B 0x002B # PLUS SIGN
-0x2C 0x002C # COMMA
-0x2D 0x002D # HYPHEN-MINUS
-0x2E 0x002E # FULL STOP
-0x2F 0x002F # SOLIDUS
-0x30 0x0030 # DIGIT ZERO
-0x31 0x0031 # DIGIT ONE
-0x32 0x0032 # DIGIT TWO
-0x33 0x0033 # DIGIT THREE
-0x34 0x0034 # DIGIT FOUR
-0x35 0x0035 # DIGIT FIVE
-0x36 0x0036 # DIGIT SIX
-0x37 0x0037 # DIGIT SEVEN
-0x38 0x0038 # DIGIT EIGHT
-0x39 0x0039 # DIGIT NINE
-0x3A 0x003A # COLON
-0x3B 0x003B # SEMICOLON
-0x3C 0x003C # LESS-THAN SIGN
-0x3D 0x003D # EQUALS SIGN
-0x3E 0x003E # GREATER-THAN SIGN
-0x3F 0x003F # QUESTION MARK
-0x40 0x0040 # COMMERCIAL AT
-0x41 0x0041 # LATIN CAPITAL LETTER A
-0x42 0x0042 # LATIN CAPITAL LETTER B
-0x43 0x0043 # LATIN CAPITAL LETTER C
-0x44 0x0044 # LATIN CAPITAL LETTER D
-0x45 0x0045 # LATIN CAPITAL LETTER E
-0x46 0x0046 # LATIN CAPITAL LETTER F
-0x47 0x0047 # LATIN CAPITAL LETTER G
-0x48 0x0048 # LATIN CAPITAL LETTER H
-0x49 0x0049 # LATIN CAPITAL LETTER I
-0x4A 0x004A # LATIN CAPITAL LETTER J
-0x4B 0x004B # LATIN CAPITAL LETTER K
-0x4C 0x004C # LATIN CAPITAL LETTER L
-0x4D 0x004D # LATIN CAPITAL LETTER M
-0x4E 0x004E # LATIN CAPITAL LETTER N
-0x4F 0x004F # LATIN CAPITAL LETTER O
-0x50 0x0050 # LATIN CAPITAL LETTER P
-0x51 0x0051 # LATIN CAPITAL LETTER Q
-0x52 0x0052 # LATIN CAPITAL LETTER R
-0x53 0x0053 # LATIN CAPITAL LETTER S
-0x54 0x0054 # LATIN CAPITAL LETTER T
-0x55 0x0055 # LATIN CAPITAL LETTER U
-0x56 0x0056 # LATIN CAPITAL LETTER V
-0x57 0x0057 # LATIN CAPITAL LETTER W
-0x58 0x0058 # LATIN CAPITAL LETTER X
-0x59 0x0059 # LATIN CAPITAL LETTER Y
-0x5A 0x005A # LATIN CAPITAL LETTER Z
-0x5B 0x005B # LEFT SQUARE BRACKET
-0x5C 0x005C # REVERSE SOLIDUS
-0x5D 0x005D # RIGHT SQUARE BRACKET
-0x5E 0x005E # CIRCUMFLEX ACCENT
-0x5F 0x005F # LOW LINE
-0x60 0x0060 # GRAVE ACCENT
-0x61 0x0061 # LATIN SMALL LETTER A
-0x62 0x0062 # LATIN SMALL LETTER B
-0x63 0x0063 # LATIN SMALL LETTER C
-0x64 0x0064 # LATIN SMALL LETTER D
-0x65 0x0065 # LATIN SMALL LETTER E
-0x66 0x0066 # LATIN SMALL LETTER F
-0x67 0x0067 # LATIN SMALL LETTER G
-0x68 0x0068 # LATIN SMALL LETTER H
-0x69 0x0069 # LATIN SMALL LETTER I
-0x6A 0x006A # LATIN SMALL LETTER J
-0x6B 0x006B # LATIN SMALL LETTER K
-0x6C 0x006C # LATIN SMALL LETTER L
-0x6D 0x006D # LATIN SMALL LETTER M
-0x6E 0x006E # LATIN SMALL LETTER N
-0x6F 0x006F # LATIN SMALL LETTER O
-0x70 0x0070 # LATIN SMALL LETTER P
-0x71 0x0071 # LATIN SMALL LETTER Q
-0x72 0x0072 # LATIN SMALL LETTER R
-0x73 0x0073 # LATIN SMALL LETTER S
-0x74 0x0074 # LATIN SMALL LETTER T
-0x75 0x0075 # LATIN SMALL LETTER U
-0x76 0x0076 # LATIN SMALL LETTER V
-0x77 0x0077 # LATIN SMALL LETTER W
-0x78 0x0078 # LATIN SMALL LETTER X
-0x79 0x0079 # LATIN SMALL LETTER Y
-0x7A 0x007A # LATIN SMALL LETTER Z
-0x7B 0x007B # LEFT CURLY BRACKET
-0x7C 0x007C # VERTICAL LINE
-0x7D 0x007D # RIGHT CURLY BRACKET
-0x7E 0x007E # TILDE
-0x7F 0x007F # DELETE
-0x80 0x0080 # <control>
-0x81 0x0081 # <control>
-0x82 0x0082 # <control>
-0x83 0x0083 # <control>
-0x84 0x0084 # <control>
-0x85 0x0085 # <control>
-0x86 0x0086 # <control>
-0x87 0x0087 # <control>
-0x88 0x0088 # <control>
-0x89 0x0089 # <control>
-0x8A 0x008A # <control>
-0x8B 0x008B # <control>
-0x8C 0x008C # <control>
-0x8D 0x008D # <control>
-0x8E 0x008E # <control>
-0x8F 0x008F # <control>
-0x90 0x0090 # <control>
-0x91 0x0091 # <control>
-0x92 0x0092 # <control>
-0x93 0x0093 # <control>
-0x94 0x0094 # <control>
-0x95 0x0095 # <control>
-0x96 0x0096 # <control>
-0x97 0x0097 # <control>
-0x98 0x0098 # <control>
-0x99 0x0099 # <control>
-0x9A 0x009A # <control>
-0x9B 0x009B # <control>
-0x9C 0x009C # <control>
-0x9D 0x009D # <control>
-0x9E 0x009E # <control>
-0x9F 0x009F # <control>
-0xA0 0x00A0 # NO-BREAK SPACE
-0xA4 0x00A4 # CURRENCY SIGN
-0xAC 0x060C # ARABIC COMMA
-0xAD 0x00AD # SOFT HYPHEN
-0xBB 0x061B # ARABIC SEMICOLON
-0xBF 0x061F # ARABIC QUESTION MARK
-0xC1 0x0621 # ARABIC LETTER HAMZA
-0xC2 0x0622 # ARABIC LETTER ALEF WITH MADDA ABOVE
-0xC3 0x0623 # ARABIC LETTER ALEF WITH HAMZA ABOVE
-0xC4 0x0624 # ARABIC LETTER WAW WITH HAMZA ABOVE
-0xC5 0x0625 # ARABIC LETTER ALEF WITH HAMZA BELOW
-0xC6 0x0626 # ARABIC LETTER YEH WITH HAMZA ABOVE
-0xC7 0x0627 # ARABIC LETTER ALEF
-0xC8 0x0628 # ARABIC LETTER BEH
-0xC9 0x0629 # ARABIC LETTER TEH MARBUTA
-0xCA 0x062A # ARABIC LETTER TEH
-0xCB 0x062B # ARABIC LETTER THEH
-0xCC 0x062C # ARABIC LETTER JEEM
-0xCD 0x062D # ARABIC LETTER HAH
-0xCE 0x062E # ARABIC LETTER KHAH
-0xCF 0x062F # ARABIC LETTER DAL
-0xD0 0x0630 # ARABIC LETTER THAL
-0xD1 0x0631 # ARABIC LETTER REH
-0xD2 0x0632 # ARABIC LETTER ZAIN
-0xD3 0x0633 # ARABIC LETTER SEEN
-0xD4 0x0634 # ARABIC LETTER SHEEN
-0xD5 0x0635 # ARABIC LETTER SAD
-0xD6 0x0636 # ARABIC LETTER DAD
-0xD7 0x0637 # ARABIC LETTER TAH
-0xD8 0x0638 # ARABIC LETTER ZAH
-0xD9 0x0639 # ARABIC LETTER AIN
-0xDA 0x063A # ARABIC LETTER GHAIN
-0xE0 0x0640 # ARABIC TATWEEL
-0xE1 0x0641 # ARABIC LETTER FEH
-0xE2 0x0642 # ARABIC LETTER QAF
-0xE3 0x0643 # ARABIC LETTER KAF
-0xE4 0x0644 # ARABIC LETTER LAM
-0xE5 0x0645 # ARABIC LETTER MEEM
-0xE6 0x0646 # ARABIC LETTER NOON
-0xE7 0x0647 # ARABIC LETTER HEH
-0xE8 0x0648 # ARABIC LETTER WAW
-0xE9 0x0649 # ARABIC LETTER ALEF MAKSURA
-0xEA 0x064A # ARABIC LETTER YEH
-0xEB 0x064B # ARABIC FATHATAN
-0xEC 0x064C # ARABIC DAMMATAN
-0xED 0x064D # ARABIC KASRATAN
-0xEE 0x064E # ARABIC FATHA
-0xEF 0x064F # ARABIC DAMMA
-0xF0 0x0650 # ARABIC KASRA
-0xF1 0x0651 # ARABIC SHADDA
-0xF2 0x0652 # ARABIC SUKUN
diff --git a/program/lib/encoding/ISO-8859-7.map b/program/lib/encoding/ISO-8859-7.map
deleted file mode 100644
index bc46b7471..000000000
--- a/program/lib/encoding/ISO-8859-7.map
+++ /dev/null
@@ -1,308 +0,0 @@
-#
-# Name: ISO 8859-7:2003 to Unicode
-# Unicode version: 4.0
-# Table version: 2.0
-# Table format: Format A
-# Date: 2003-Nov-12
-# Authors: Ken Whistler <kenw@sybase.com>
-#
-# Copyright (c) 1991-2003 Unicode, Inc. All Rights reserved.
-#
-# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-# No claims are made as to fitness for any particular purpose. No
-# warranties of any kind are expressed or implied. The recipient
-# agrees to determine applicability of information provided. If this
-# file has been provided on optical media by Unicode, Inc., the sole
-# remedy for any claim will be exchange of defective media within 90
-# days of receipt.
-#
-# Unicode, Inc. hereby grants the right to freely use the information
-# supplied in this file in the creation of products supporting the
-# Unicode Standard, and to make copies of this file in any form for
-# internal or external distribution as long as this notice remains
-# attached.
-#
-# General notes:
-#
-# This table contains the data the Unicode Consortium has on how
-# ISO 8859-7:2003 characters map into Unicode.
-#
-# ISO 8859-7:1987 is equivalent to ISO-IR-126, ELOT 928,
-# and ECMA 118. ISO 8859-7:2003 adds two currency signs
-# and one other character not in the earlier standard.
-#
-# Format: Three tab-separated columns
-# Column #1 is the ISO 8859-7 code (in hex as 0xXX)
-# Column #2 is the Unicode (in hex as 0xXXXX)
-# Column #3 the Unicode name (follows a comment sign, '#')
-#
-# The entries are in ISO 8859-7 order.
-#
-# Version history
-# 1.0 version updates 0.1 version by adding mappings for all
-# control characters.
-# Remap 0xA1 to U+2018 (instead of 0x02BD) to match text of 8859-7
-# Remap 0xA2 to U+2019 (instead of 0x02BC) to match text of 8859-7
-#
-# 2.0 version updates 1.0 version by adding mappings for the
-# three newly added characters 0xA4, 0xA5, 0xAA.
-#
-# Updated versions of this file may be found in:
-# <http://www.unicode.org/Public/MAPPINGS/>
-#
-# Any comments or problems, contact the Unicode Consortium at:
-# <http://www.unicode.org/reporting.html>
-#
-0x00 0x0000 # NULL
-0x01 0x0001 # START OF HEADING
-0x02 0x0002 # START OF TEXT
-0x03 0x0003 # END OF TEXT
-0x04 0x0004 # END OF TRANSMISSION
-0x05 0x0005 # ENQUIRY
-0x06 0x0006 # ACKNOWLEDGE
-0x07 0x0007 # BELL
-0x08 0x0008 # BACKSPACE
-0x09 0x0009 # HORIZONTAL TABULATION
-0x0A 0x000A # LINE FEED
-0x0B 0x000B # VERTICAL TABULATION
-0x0C 0x000C # FORM FEED
-0x0D 0x000D # CARRIAGE RETURN
-0x0E 0x000E # SHIFT OUT
-0x0F 0x000F # SHIFT IN
-0x10 0x0010 # DATA LINK ESCAPE
-0x11 0x0011 # DEVICE CONTROL ONE
-0x12 0x0012 # DEVICE CONTROL TWO
-0x13 0x0013 # DEVICE CONTROL THREE
-0x14 0x0014 # DEVICE CONTROL FOUR
-0x15 0x0015 # NEGATIVE ACKNOWLEDGE
-0x16 0x0016 # SYNCHRONOUS IDLE
-0x17 0x0017 # END OF TRANSMISSION BLOCK
-0x18 0x0018 # CANCEL
-0x19 0x0019 # END OF MEDIUM
-0x1A 0x001A # SUBSTITUTE
-0x1B 0x001B # ESCAPE
-0x1C 0x001C # FILE SEPARATOR
-0x1D 0x001D # GROUP SEPARATOR
-0x1E 0x001E # RECORD SEPARATOR
-0x1F 0x001F # UNIT SEPARATOR
-0x20 0x0020 # SPACE
-0x21 0x0021 # EXCLAMATION MARK
-0x22 0x0022 # QUOTATION MARK
-0x23 0x0023 # NUMBER SIGN
-0x24 0x0024 # DOLLAR SIGN
-0x25 0x0025 # PERCENT SIGN
-0x26 0x0026 # AMPERSAND
-0x27 0x0027 # APOSTROPHE
-0x28 0x0028 # LEFT PARENTHESIS
-0x29 0x0029 # RIGHT PARENTHESIS
-0x2A 0x002A # ASTERISK
-0x2B 0x002B # PLUS SIGN
-0x2C 0x002C # COMMA
-0x2D 0x002D # HYPHEN-MINUS
-0x2E 0x002E # FULL STOP
-0x2F 0x002F # SOLIDUS
-0x30 0x0030 # DIGIT ZERO
-0x31 0x0031 # DIGIT ONE
-0x32 0x0032 # DIGIT TWO
-0x33 0x0033 # DIGIT THREE
-0x34 0x0034 # DIGIT FOUR
-0x35 0x0035 # DIGIT FIVE
-0x36 0x0036 # DIGIT SIX
-0x37 0x0037 # DIGIT SEVEN
-0x38 0x0038 # DIGIT EIGHT
-0x39 0x0039 # DIGIT NINE
-0x3A 0x003A # COLON
-0x3B 0x003B # SEMICOLON
-0x3C 0x003C # LESS-THAN SIGN
-0x3D 0x003D # EQUALS SIGN
-0x3E 0x003E # GREATER-THAN SIGN
-0x3F 0x003F # QUESTION MARK
-0x40 0x0040 # COMMERCIAL AT
-0x41 0x0041 # LATIN CAPITAL LETTER A
-0x42 0x0042 # LATIN CAPITAL LETTER B
-0x43 0x0043 # LATIN CAPITAL LETTER C
-0x44 0x0044 # LATIN CAPITAL LETTER D
-0x45 0x0045 # LATIN CAPITAL LETTER E
-0x46 0x0046 # LATIN CAPITAL LETTER F
-0x47 0x0047 # LATIN CAPITAL LETTER G
-0x48 0x0048 # LATIN CAPITAL LETTER H
-0x49 0x0049 # LATIN CAPITAL LETTER I
-0x4A 0x004A # LATIN CAPITAL LETTER J
-0x4B 0x004B # LATIN CAPITAL LETTER K
-0x4C 0x004C # LATIN CAPITAL LETTER L
-0x4D 0x004D # LATIN CAPITAL LETTER M
-0x4E 0x004E # LATIN CAPITAL LETTER N
-0x4F 0x004F # LATIN CAPITAL LETTER O
-0x50 0x0050 # LATIN CAPITAL LETTER P
-0x51 0x0051 # LATIN CAPITAL LETTER Q
-0x52 0x0052 # LATIN CAPITAL LETTER R
-0x53 0x0053 # LATIN CAPITAL LETTER S
-0x54 0x0054 # LATIN CAPITAL LETTER T
-0x55 0x0055 # LATIN CAPITAL LETTER U
-0x56 0x0056 # LATIN CAPITAL LETTER V
-0x57 0x0057 # LATIN CAPITAL LETTER W
-0x58 0x0058 # LATIN CAPITAL LETTER X
-0x59 0x0059 # LATIN CAPITAL LETTER Y
-0x5A 0x005A # LATIN CAPITAL LETTER Z
-0x5B 0x005B # LEFT SQUARE BRACKET
-0x5C 0x005C # REVERSE SOLIDUS
-0x5D 0x005D # RIGHT SQUARE BRACKET
-0x5E 0x005E # CIRCUMFLEX ACCENT
-0x5F 0x005F # LOW LINE
-0x60 0x0060 # GRAVE ACCENT
-0x61 0x0061 # LATIN SMALL LETTER A
-0x62 0x0062 # LATIN SMALL LETTER B
-0x63 0x0063 # LATIN SMALL LETTER C
-0x64 0x0064 # LATIN SMALL LETTER D
-0x65 0x0065 # LATIN SMALL LETTER E
-0x66 0x0066 # LATIN SMALL LETTER F
-0x67 0x0067 # LATIN SMALL LETTER G
-0x68 0x0068 # LATIN SMALL LETTER H
-0x69 0x0069 # LATIN SMALL LETTER I
-0x6A 0x006A # LATIN SMALL LETTER J
-0x6B 0x006B # LATIN SMALL LETTER K
-0x6C 0x006C # LATIN SMALL LETTER L
-0x6D 0x006D # LATIN SMALL LETTER M
-0x6E 0x006E # LATIN SMALL LETTER N
-0x6F 0x006F # LATIN SMALL LETTER O
-0x70 0x0070 # LATIN SMALL LETTER P
-0x71 0x0071 # LATIN SMALL LETTER Q
-0x72 0x0072 # LATIN SMALL LETTER R
-0x73 0x0073 # LATIN SMALL LETTER S
-0x74 0x0074 # LATIN SMALL LETTER T
-0x75 0x0075 # LATIN SMALL LETTER U
-0x76 0x0076 # LATIN SMALL LETTER V
-0x77 0x0077 # LATIN SMALL LETTER W
-0x78 0x0078 # LATIN SMALL LETTER X
-0x79 0x0079 # LATIN SMALL LETTER Y
-0x7A 0x007A # LATIN SMALL LETTER Z
-0x7B 0x007B # LEFT CURLY BRACKET
-0x7C 0x007C # VERTICAL LINE
-0x7D 0x007D # RIGHT CURLY BRACKET
-0x7E 0x007E # TILDE
-0x7F 0x007F # DELETE
-0x80 0x0080 # <control>
-0x81 0x0081 # <control>
-0x82 0x0082 # <control>
-0x83 0x0083 # <control>
-0x84 0x0084 # <control>
-0x85 0x0085 # <control>
-0x86 0x0086 # <control>
-0x87 0x0087 # <control>
-0x88 0x0088 # <control>
-0x89 0x0089 # <control>
-0x8A 0x008A # <control>
-0x8B 0x008B # <control>
-0x8C 0x008C # <control>
-0x8D 0x008D # <control>
-0x8E 0x008E # <control>
-0x8F 0x008F # <control>
-0x90 0x0090 # <control>
-0x91 0x0091 # <control>
-0x92 0x0092 # <control>
-0x93 0x0093 # <control>
-0x94 0x0094 # <control>
-0x95 0x0095 # <control>
-0x96 0x0096 # <control>
-0x97 0x0097 # <control>
-0x98 0x0098 # <control>
-0x99 0x0099 # <control>
-0x9A 0x009A # <control>
-0x9B 0x009B # <control>
-0x9C 0x009C # <control>
-0x9D 0x009D # <control>
-0x9E 0x009E # <control>
-0x9F 0x009F # <control>
-0xA0 0x00A0 # NO-BREAK SPACE
-0xA1 0x2018 # LEFT SINGLE QUOTATION MARK
-0xA2 0x2019 # RIGHT SINGLE QUOTATION MARK
-0xA3 0x00A3 # POUND SIGN
-0xA4 0x20AC # EURO SIGN
-0xA5 0x20AF # DRACHMA SIGN
-0xA6 0x00A6 # BROKEN BAR
-0xA7 0x00A7 # SECTION SIGN
-0xA8 0x00A8 # DIAERESIS
-0xA9 0x00A9 # COPYRIGHT SIGN
-0xAA 0x037A # GREEK YPOGEGRAMMENI
-0xAB 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xAC 0x00AC # NOT SIGN
-0xAD 0x00AD # SOFT HYPHEN
-0xAF 0x2015 # HORIZONTAL BAR
-0xB0 0x00B0 # DEGREE SIGN
-0xB1 0x00B1 # PLUS-MINUS SIGN
-0xB2 0x00B2 # SUPERSCRIPT TWO
-0xB3 0x00B3 # SUPERSCRIPT THREE
-0xB4 0x0384 # GREEK TONOS
-0xB5 0x0385 # GREEK DIALYTIKA TONOS
-0xB6 0x0386 # GREEK CAPITAL LETTER ALPHA WITH TONOS
-0xB7 0x00B7 # MIDDLE DOT
-0xB8 0x0388 # GREEK CAPITAL LETTER EPSILON WITH TONOS
-0xB9 0x0389 # GREEK CAPITAL LETTER ETA WITH TONOS
-0xBA 0x038A # GREEK CAPITAL LETTER IOTA WITH TONOS
-0xBB 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xBC 0x038C # GREEK CAPITAL LETTER OMICRON WITH TONOS
-0xBD 0x00BD # VULGAR FRACTION ONE HALF
-0xBE 0x038E # GREEK CAPITAL LETTER UPSILON WITH TONOS
-0xBF 0x038F # GREEK CAPITAL LETTER OMEGA WITH TONOS
-0xC0 0x0390 # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-0xC1 0x0391 # GREEK CAPITAL LETTER ALPHA
-0xC2 0x0392 # GREEK CAPITAL LETTER BETA
-0xC3 0x0393 # GREEK CAPITAL LETTER GAMMA
-0xC4 0x0394 # GREEK CAPITAL LETTER DELTA
-0xC5 0x0395 # GREEK CAPITAL LETTER EPSILON
-0xC6 0x0396 # GREEK CAPITAL LETTER ZETA
-0xC7 0x0397 # GREEK CAPITAL LETTER ETA
-0xC8 0x0398 # GREEK CAPITAL LETTER THETA
-0xC9 0x0399 # GREEK CAPITAL LETTER IOTA
-0xCA 0x039A # GREEK CAPITAL LETTER KAPPA
-0xCB 0x039B # GREEK CAPITAL LETTER LAMDA
-0xCC 0x039C # GREEK CAPITAL LETTER MU
-0xCD 0x039D # GREEK CAPITAL LETTER NU
-0xCE 0x039E # GREEK CAPITAL LETTER XI
-0xCF 0x039F # GREEK CAPITAL LETTER OMICRON
-0xD0 0x03A0 # GREEK CAPITAL LETTER PI
-0xD1 0x03A1 # GREEK CAPITAL LETTER RHO
-0xD3 0x03A3 # GREEK CAPITAL LETTER SIGMA
-0xD4 0x03A4 # GREEK CAPITAL LETTER TAU
-0xD5 0x03A5 # GREEK CAPITAL LETTER UPSILON
-0xD6 0x03A6 # GREEK CAPITAL LETTER PHI
-0xD7 0x03A7 # GREEK CAPITAL LETTER CHI
-0xD8 0x03A8 # GREEK CAPITAL LETTER PSI
-0xD9 0x03A9 # GREEK CAPITAL LETTER OMEGA
-0xDA 0x03AA # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-0xDB 0x03AB # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-0xDC 0x03AC # GREEK SMALL LETTER ALPHA WITH TONOS
-0xDD 0x03AD # GREEK SMALL LETTER EPSILON WITH TONOS
-0xDE 0x03AE # GREEK SMALL LETTER ETA WITH TONOS
-0xDF 0x03AF # GREEK SMALL LETTER IOTA WITH TONOS
-0xE0 0x03B0 # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
-0xE1 0x03B1 # GREEK SMALL LETTER ALPHA
-0xE2 0x03B2 # GREEK SMALL LETTER BETA
-0xE3 0x03B3 # GREEK SMALL LETTER GAMMA
-0xE4 0x03B4 # GREEK SMALL LETTER DELTA
-0xE5 0x03B5 # GREEK SMALL LETTER EPSILON
-0xE6 0x03B6 # GREEK SMALL LETTER ZETA
-0xE7 0x03B7 # GREEK SMALL LETTER ETA
-0xE8 0x03B8 # GREEK SMALL LETTER THETA
-0xE9 0x03B9 # GREEK SMALL LETTER IOTA
-0xEA 0x03BA # GREEK SMALL LETTER KAPPA
-0xEB 0x03BB # GREEK SMALL LETTER LAMDA
-0xEC 0x03BC # GREEK SMALL LETTER MU
-0xED 0x03BD # GREEK SMALL LETTER NU
-0xEE 0x03BE # GREEK SMALL LETTER XI
-0xEF 0x03BF # GREEK SMALL LETTER OMICRON
-0xF0 0x03C0 # GREEK SMALL LETTER PI
-0xF1 0x03C1 # GREEK SMALL LETTER RHO
-0xF2 0x03C2 # GREEK SMALL LETTER FINAL SIGMA
-0xF3 0x03C3 # GREEK SMALL LETTER SIGMA
-0xF4 0x03C4 # GREEK SMALL LETTER TAU
-0xF5 0x03C5 # GREEK SMALL LETTER UPSILON
-0xF6 0x03C6 # GREEK SMALL LETTER PHI
-0xF7 0x03C7 # GREEK SMALL LETTER CHI
-0xF8 0x03C8 # GREEK SMALL LETTER PSI
-0xF9 0x03C9 # GREEK SMALL LETTER OMEGA
-0xFA 0x03CA # GREEK SMALL LETTER IOTA WITH DIALYTIKA
-0xFB 0x03CB # GREEK SMALL LETTER UPSILON WITH DIALYTIKA
-0xFC 0x03CC # GREEK SMALL LETTER OMICRON WITH TONOS
-0xFD 0x03CD # GREEK SMALL LETTER UPSILON WITH TONOS
-0xFE 0x03CE # GREEK SMALL LETTER OMEGA WITH TONOS
diff --git a/program/lib/encoding/ISO-8859-8.map b/program/lib/encoding/ISO-8859-8.map
deleted file mode 100644
index bc8da4c7f..000000000
--- a/program/lib/encoding/ISO-8859-8.map
+++ /dev/null
@@ -1,270 +0,0 @@
-#
-# Name: ISO/IEC 8859-8:1999 to Unicode
-# Unicode version: 3.0
-# Table version: 1.1
-# Table format: Format A
-# Date: 2000-Jan-03
-# Authors: Ken Whistler <kenw@sybase.com>
-#
-# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
-#
-# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-# No claims are made as to fitness for any particular purpose. No
-# warranties of any kind are expressed or implied. The recipient
-# agrees to determine applicability of information provided. If this
-# file has been provided on optical media by Unicode, Inc., the sole
-# remedy for any claim will be exchange of defective media within 90
-# days of receipt.
-#
-# Unicode, Inc. hereby grants the right to freely use the information
-# supplied in this file in the creation of products supporting the
-# Unicode Standard, and to make copies of this file in any form for
-# internal or external distribution as long as this notice remains
-# attached.
-#
-# General notes:
-#
-# This table contains the data the Unicode Consortium has on how
-# ISO/IEC 8859-8:1999 characters map into Unicode.
-#
-# Format: Three tab-separated columns
-# Column #1 is the ISO/IEC 8859-8 code (in hex as 0xXX)
-# Column #2 is the Unicode (in hex as 0xXXXX)
-# Column #3 the Unicode name (follows a comment sign, '#')
-#
-# The entries are in ISO/IEC 8859-8 order.
-#
-# Version history
-# 1.0 version updates 0.1 version by adding mappings for all
-# control characters.
-# 1.1 version updates to the published 8859-8:1999, correcting
-# the mapping of 0xAF and adding mappings for LRM and RLM.
-#
-# Updated versions of this file may be found in:
-# <ftp://ftp.unicode.org/Public/MAPPINGS/>
-#
-# Any comments or problems, contact <errata@unicode.org>
-# Please note that <errata@unicode.org> is an archival address;
-# notices will be checked, but do not expect an immediate response.
-#
-0x00 0x0000 # NULL
-0x01 0x0001 # START OF HEADING
-0x02 0x0002 # START OF TEXT
-0x03 0x0003 # END OF TEXT
-0x04 0x0004 # END OF TRANSMISSION
-0x05 0x0005 # ENQUIRY
-0x06 0x0006 # ACKNOWLEDGE
-0x07 0x0007 # BELL
-0x08 0x0008 # BACKSPACE
-0x09 0x0009 # HORIZONTAL TABULATION
-0x0A 0x000A # LINE FEED
-0x0B 0x000B # VERTICAL TABULATION
-0x0C 0x000C # FORM FEED
-0x0D 0x000D # CARRIAGE RETURN
-0x0E 0x000E # SHIFT OUT
-0x0F 0x000F # SHIFT IN
-0x10 0x0010 # DATA LINK ESCAPE
-0x11 0x0011 # DEVICE CONTROL ONE
-0x12 0x0012 # DEVICE CONTROL TWO
-0x13 0x0013 # DEVICE CONTROL THREE
-0x14 0x0014 # DEVICE CONTROL FOUR
-0x15 0x0015 # NEGATIVE ACKNOWLEDGE
-0x16 0x0016 # SYNCHRONOUS IDLE
-0x17 0x0017 # END OF TRANSMISSION BLOCK
-0x18 0x0018 # CANCEL
-0x19 0x0019 # END OF MEDIUM
-0x1A 0x001A # SUBSTITUTE
-0x1B 0x001B # ESCAPE
-0x1C 0x001C # FILE SEPARATOR
-0x1D 0x001D # GROUP SEPARATOR
-0x1E 0x001E # RECORD SEPARATOR
-0x1F 0x001F # UNIT SEPARATOR
-0x20 0x0020 # SPACE
-0x21 0x0021 # EXCLAMATION MARK
-0x22 0x0022 # QUOTATION MARK
-0x23 0x0023 # NUMBER SIGN
-0x24 0x0024 # DOLLAR SIGN
-0x25 0x0025 # PERCENT SIGN
-0x26 0x0026 # AMPERSAND
-0x27 0x0027 # APOSTROPHE
-0x28 0x0028 # LEFT PARENTHESIS
-0x29 0x0029 # RIGHT PARENTHESIS
-0x2A 0x002A # ASTERISK
-0x2B 0x002B # PLUS SIGN
-0x2C 0x002C # COMMA
-0x2D 0x002D # HYPHEN-MINUS
-0x2E 0x002E # FULL STOP
-0x2F 0x002F # SOLIDUS
-0x30 0x0030 # DIGIT ZERO
-0x31 0x0031 # DIGIT ONE
-0x32 0x0032 # DIGIT TWO
-0x33 0x0033 # DIGIT THREE
-0x34 0x0034 # DIGIT FOUR
-0x35 0x0035 # DIGIT FIVE
-0x36 0x0036 # DIGIT SIX
-0x37 0x0037 # DIGIT SEVEN
-0x38 0x0038 # DIGIT EIGHT
-0x39 0x0039 # DIGIT NINE
-0x3A 0x003A # COLON
-0x3B 0x003B # SEMICOLON
-0x3C 0x003C # LESS-THAN SIGN
-0x3D 0x003D # EQUALS SIGN
-0x3E 0x003E # GREATER-THAN SIGN
-0x3F 0x003F # QUESTION MARK
-0x40 0x0040 # COMMERCIAL AT
-0x41 0x0041 # LATIN CAPITAL LETTER A
-0x42 0x0042 # LATIN CAPITAL LETTER B
-0x43 0x0043 # LATIN CAPITAL LETTER C
-0x44 0x0044 # LATIN CAPITAL LETTER D
-0x45 0x0045 # LATIN CAPITAL LETTER E
-0x46 0x0046 # LATIN CAPITAL LETTER F
-0x47 0x0047 # LATIN CAPITAL LETTER G
-0x48 0x0048 # LATIN CAPITAL LETTER H
-0x49 0x0049 # LATIN CAPITAL LETTER I
-0x4A 0x004A # LATIN CAPITAL LETTER J
-0x4B 0x004B # LATIN CAPITAL LETTER K
-0x4C 0x004C # LATIN CAPITAL LETTER L
-0x4D 0x004D # LATIN CAPITAL LETTER M
-0x4E 0x004E # LATIN CAPITAL LETTER N
-0x4F 0x004F # LATIN CAPITAL LETTER O
-0x50 0x0050 # LATIN CAPITAL LETTER P
-0x51 0x0051 # LATIN CAPITAL LETTER Q
-0x52 0x0052 # LATIN CAPITAL LETTER R
-0x53 0x0053 # LATIN CAPITAL LETTER S
-0x54 0x0054 # LATIN CAPITAL LETTER T
-0x55 0x0055 # LATIN CAPITAL LETTER U
-0x56 0x0056 # LATIN CAPITAL LETTER V
-0x57 0x0057 # LATIN CAPITAL LETTER W
-0x58 0x0058 # LATIN CAPITAL LETTER X
-0x59 0x0059 # LATIN CAPITAL LETTER Y
-0x5A 0x005A # LATIN CAPITAL LETTER Z
-0x5B 0x005B # LEFT SQUARE BRACKET
-0x5C 0x005C # REVERSE SOLIDUS
-0x5D 0x005D # RIGHT SQUARE BRACKET
-0x5E 0x005E # CIRCUMFLEX ACCENT
-0x5F 0x005F # LOW LINE
-0x60 0x0060 # GRAVE ACCENT
-0x61 0x0061 # LATIN SMALL LETTER A
-0x62 0x0062 # LATIN SMALL LETTER B
-0x63 0x0063 # LATIN SMALL LETTER C
-0x64 0x0064 # LATIN SMALL LETTER D
-0x65 0x0065 # LATIN SMALL LETTER E
-0x66 0x0066 # LATIN SMALL LETTER F
-0x67 0x0067 # LATIN SMALL LETTER G
-0x68 0x0068 # LATIN SMALL LETTER H
-0x69 0x0069 # LATIN SMALL LETTER I
-0x6A 0x006A # LATIN SMALL LETTER J
-0x6B 0x006B # LATIN SMALL LETTER K
-0x6C 0x006C # LATIN SMALL LETTER L
-0x6D 0x006D # LATIN SMALL LETTER M
-0x6E 0x006E # LATIN SMALL LETTER N
-0x6F 0x006F # LATIN SMALL LETTER O
-0x70 0x0070 # LATIN SMALL LETTER P
-0x71 0x0071 # LATIN SMALL LETTER Q
-0x72 0x0072 # LATIN SMALL LETTER R
-0x73 0x0073 # LATIN SMALL LETTER S
-0x74 0x0074 # LATIN SMALL LETTER T
-0x75 0x0075 # LATIN SMALL LETTER U
-0x76 0x0076 # LATIN SMALL LETTER V
-0x77 0x0077 # LATIN SMALL LETTER W
-0x78 0x0078 # LATIN SMALL LETTER X
-0x79 0x0079 # LATIN SMALL LETTER Y
-0x7A 0x007A # LATIN SMALL LETTER Z
-0x7B 0x007B # LEFT CURLY BRACKET
-0x7C 0x007C # VERTICAL LINE
-0x7D 0x007D # RIGHT CURLY BRACKET
-0x7E 0x007E # TILDE
-0x7F 0x007F # DELETE
-0x80 0x0080 # <control>
-0x81 0x0081 # <control>
-0x82 0x0082 # <control>
-0x83 0x0083 # <control>
-0x84 0x0084 # <control>
-0x85 0x0085 # <control>
-0x86 0x0086 # <control>
-0x87 0x0087 # <control>
-0x88 0x0088 # <control>
-0x89 0x0089 # <control>
-0x8A 0x008A # <control>
-0x8B 0x008B # <control>
-0x8C 0x008C # <control>
-0x8D 0x008D # <control>
-0x8E 0x008E # <control>
-0x8F 0x008F # <control>
-0x90 0x0090 # <control>
-0x91 0x0091 # <control>
-0x92 0x0092 # <control>
-0x93 0x0093 # <control>
-0x94 0x0094 # <control>
-0x95 0x0095 # <control>
-0x96 0x0096 # <control>
-0x97 0x0097 # <control>
-0x98 0x0098 # <control>
-0x99 0x0099 # <control>
-0x9A 0x009A # <control>
-0x9B 0x009B # <control>
-0x9C 0x009C # <control>
-0x9D 0x009D # <control>
-0x9E 0x009E # <control>
-0x9F 0x009F # <control>
-0xA0 0x00A0 # NO-BREAK SPACE
-0xA2 0x00A2 # CENT SIGN
-0xA3 0x00A3 # POUND SIGN
-0xA4 0x00A4 # CURRENCY SIGN
-0xA5 0x00A5 # YEN SIGN
-0xA6 0x00A6 # BROKEN BAR
-0xA7 0x00A7 # SECTION SIGN
-0xA8 0x00A8 # DIAERESIS
-0xA9 0x00A9 # COPYRIGHT SIGN
-0xAA 0x00D7 # MULTIPLICATION SIGN
-0xAB 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xAC 0x00AC # NOT SIGN
-0xAD 0x00AD # SOFT HYPHEN
-0xAE 0x00AE # REGISTERED SIGN
-0xAF 0x00AF # MACRON
-0xB0 0x00B0 # DEGREE SIGN
-0xB1 0x00B1 # PLUS-MINUS SIGN
-0xB2 0x00B2 # SUPERSCRIPT TWO
-0xB3 0x00B3 # SUPERSCRIPT THREE
-0xB4 0x00B4 # ACUTE ACCENT
-0xB5 0x00B5 # MICRO SIGN
-0xB6 0x00B6 # PILCROW SIGN
-0xB7 0x00B7 # MIDDLE DOT
-0xB8 0x00B8 # CEDILLA
-0xB9 0x00B9 # SUPERSCRIPT ONE
-0xBA 0x00F7 # DIVISION SIGN
-0xBB 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xBC 0x00BC # VULGAR FRACTION ONE QUARTER
-0xBD 0x00BD # VULGAR FRACTION ONE HALF
-0xBE 0x00BE # VULGAR FRACTION THREE QUARTERS
-0xDF 0x2017 # DOUBLE LOW LINE
-0xE0 0x05D0 # HEBREW LETTER ALEF
-0xE1 0x05D1 # HEBREW LETTER BET
-0xE2 0x05D2 # HEBREW LETTER GIMEL
-0xE3 0x05D3 # HEBREW LETTER DALET
-0xE4 0x05D4 # HEBREW LETTER HE
-0xE5 0x05D5 # HEBREW LETTER VAV
-0xE6 0x05D6 # HEBREW LETTER ZAYIN
-0xE7 0x05D7 # HEBREW LETTER HET
-0xE8 0x05D8 # HEBREW LETTER TET
-0xE9 0x05D9 # HEBREW LETTER YOD
-0xEA 0x05DA # HEBREW LETTER FINAL KAF
-0xEB 0x05DB # HEBREW LETTER KAF
-0xEC 0x05DC # HEBREW LETTER LAMED
-0xED 0x05DD # HEBREW LETTER FINAL MEM
-0xEE 0x05DE # HEBREW LETTER MEM
-0xEF 0x05DF # HEBREW LETTER FINAL NUN
-0xF0 0x05E0 # HEBREW LETTER NUN
-0xF1 0x05E1 # HEBREW LETTER SAMEKH
-0xF2 0x05E2 # HEBREW LETTER AYIN
-0xF3 0x05E3 # HEBREW LETTER FINAL PE
-0xF4 0x05E4 # HEBREW LETTER PE
-0xF5 0x05E5 # HEBREW LETTER FINAL TSADI
-0xF6 0x05E6 # HEBREW LETTER TSADI
-0xF7 0x05E7 # HEBREW LETTER QOF
-0xF8 0x05E8 # HEBREW LETTER RESH
-0xF9 0x05E9 # HEBREW LETTER SHIN
-0xFA 0x05EA # HEBREW LETTER TAV
-0xFD 0x200E # LEFT-TO-RIGHT MARK
-0xFE 0x200F # RIGHT-TO-LEFT MARK
-
diff --git a/program/lib/encoding/ISO-8859-9.map b/program/lib/encoding/ISO-8859-9.map
deleted file mode 100644
index 22901f107..000000000
--- a/program/lib/encoding/ISO-8859-9.map
+++ /dev/null
@@ -1,307 +0,0 @@
-#
-# Name: ISO/IEC 8859-9:1999 to Unicode
-# Unicode version: 3.0
-# Table version: 1.0
-# Table format: Format A
-# Date: 1999 July 27
-# Authors: Ken Whistler <kenw@sybase.com>
-#
-# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
-#
-# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-# No claims are made as to fitness for any particular purpose. No
-# warranties of any kind are expressed or implied. The recipient
-# agrees to determine applicability of information provided. If this
-# file has been provided on magnetic media by Unicode, Inc., the sole
-# remedy for any claim will be exchange of defective media within 90
-# days of receipt.
-#
-# Unicode, Inc. hereby grants the right to freely use the information
-# supplied in this file in the creation of products supporting the
-# Unicode Standard, and to make copies of this file in any form for
-# internal or external distribution as long as this notice remains
-# attached.
-#
-# General notes:
-#
-# This table contains the data the Unicode Consortium has on how
-# ISO/IEC 8859-9:1999 characters map into Unicode.
-#
-# Format: Three tab-separated columns
-# Column #1 is the ISO/IEC 8859-9 code (in hex as 0xXX)
-# Column #2 is the Unicode (in hex as 0xXXXX)
-# Column #3 the Unicode name (follows a comment sign, '#')
-#
-# The entries are in ISO/IEC 8859-9 order.
-#
-# ISO/IEC 8859-9 is also equivalent to ISO-IR-148.
-#
-# Version history
-# 1.0 version updates 0.1 version by adding mappings for all
-# control characters.
-#
-# Updated versions of this file may be found in:
-# <ftp://ftp.unicode.org/Public/MAPPINGS/>
-#
-# Any comments or problems, contact <errata@unicode.org>
-# Please note that <errata@unicode.org> is an archival address;
-# notices will be checked, but do not expect an immediate response.
-#
-0x00 0x0000 # NULL
-0x01 0x0001 # START OF HEADING
-0x02 0x0002 # START OF TEXT
-0x03 0x0003 # END OF TEXT
-0x04 0x0004 # END OF TRANSMISSION
-0x05 0x0005 # ENQUIRY
-0x06 0x0006 # ACKNOWLEDGE
-0x07 0x0007 # BELL
-0x08 0x0008 # BACKSPACE
-0x09 0x0009 # HORIZONTAL TABULATION
-0x0A 0x000A # LINE FEED
-0x0B 0x000B # VERTICAL TABULATION
-0x0C 0x000C # FORM FEED
-0x0D 0x000D # CARRIAGE RETURN
-0x0E 0x000E # SHIFT OUT
-0x0F 0x000F # SHIFT IN
-0x10 0x0010 # DATA LINK ESCAPE
-0x11 0x0011 # DEVICE CONTROL ONE
-0x12 0x0012 # DEVICE CONTROL TWO
-0x13 0x0013 # DEVICE CONTROL THREE
-0x14 0x0014 # DEVICE CONTROL FOUR
-0x15 0x0015 # NEGATIVE ACKNOWLEDGE
-0x16 0x0016 # SYNCHRONOUS IDLE
-0x17 0x0017 # END OF TRANSMISSION BLOCK
-0x18 0x0018 # CANCEL
-0x19 0x0019 # END OF MEDIUM
-0x1A 0x001A # SUBSTITUTE
-0x1B 0x001B # ESCAPE
-0x1C 0x001C # FILE SEPARATOR
-0x1D 0x001D # GROUP SEPARATOR
-0x1E 0x001E # RECORD SEPARATOR
-0x1F 0x001F # UNIT SEPARATOR
-0x20 0x0020 # SPACE
-0x21 0x0021 # EXCLAMATION MARK
-0x22 0x0022 # QUOTATION MARK
-0x23 0x0023 # NUMBER SIGN
-0x24 0x0024 # DOLLAR SIGN
-0x25 0x0025 # PERCENT SIGN
-0x26 0x0026 # AMPERSAND
-0x27 0x0027 # APOSTROPHE
-0x28 0x0028 # LEFT PARENTHESIS
-0x29 0x0029 # RIGHT PARENTHESIS
-0x2A 0x002A # ASTERISK
-0x2B 0x002B # PLUS SIGN
-0x2C 0x002C # COMMA
-0x2D 0x002D # HYPHEN-MINUS
-0x2E 0x002E # FULL STOP
-0x2F 0x002F # SOLIDUS
-0x30 0x0030 # DIGIT ZERO
-0x31 0x0031 # DIGIT ONE
-0x32 0x0032 # DIGIT TWO
-0x33 0x0033 # DIGIT THREE
-0x34 0x0034 # DIGIT FOUR
-0x35 0x0035 # DIGIT FIVE
-0x36 0x0036 # DIGIT SIX
-0x37 0x0037 # DIGIT SEVEN
-0x38 0x0038 # DIGIT EIGHT
-0x39 0x0039 # DIGIT NINE
-0x3A 0x003A # COLON
-0x3B 0x003B # SEMICOLON
-0x3C 0x003C # LESS-THAN SIGN
-0x3D 0x003D # EQUALS SIGN
-0x3E 0x003E # GREATER-THAN SIGN
-0x3F 0x003F # QUESTION MARK
-0x40 0x0040 # COMMERCIAL AT
-0x41 0x0041 # LATIN CAPITAL LETTER A
-0x42 0x0042 # LATIN CAPITAL LETTER B
-0x43 0x0043 # LATIN CAPITAL LETTER C
-0x44 0x0044 # LATIN CAPITAL LETTER D
-0x45 0x0045 # LATIN CAPITAL LETTER E
-0x46 0x0046 # LATIN CAPITAL LETTER F
-0x47 0x0047 # LATIN CAPITAL LETTER G
-0x48 0x0048 # LATIN CAPITAL LETTER H
-0x49 0x0049 # LATIN CAPITAL LETTER I
-0x4A 0x004A # LATIN CAPITAL LETTER J
-0x4B 0x004B # LATIN CAPITAL LETTER K
-0x4C 0x004C # LATIN CAPITAL LETTER L
-0x4D 0x004D # LATIN CAPITAL LETTER M
-0x4E 0x004E # LATIN CAPITAL LETTER N
-0x4F 0x004F # LATIN CAPITAL LETTER O
-0x50 0x0050 # LATIN CAPITAL LETTER P
-0x51 0x0051 # LATIN CAPITAL LETTER Q
-0x52 0x0052 # LATIN CAPITAL LETTER R
-0x53 0x0053 # LATIN CAPITAL LETTER S
-0x54 0x0054 # LATIN CAPITAL LETTER T
-0x55 0x0055 # LATIN CAPITAL LETTER U
-0x56 0x0056 # LATIN CAPITAL LETTER V
-0x57 0x0057 # LATIN CAPITAL LETTER W
-0x58 0x0058 # LATIN CAPITAL LETTER X
-0x59 0x0059 # LATIN CAPITAL LETTER Y
-0x5A 0x005A # LATIN CAPITAL LETTER Z
-0x5B 0x005B # LEFT SQUARE BRACKET
-0x5C 0x005C # REVERSE SOLIDUS
-0x5D 0x005D # RIGHT SQUARE BRACKET
-0x5E 0x005E # CIRCUMFLEX ACCENT
-0x5F 0x005F # LOW LINE
-0x60 0x0060 # GRAVE ACCENT
-0x61 0x0061 # LATIN SMALL LETTER A
-0x62 0x0062 # LATIN SMALL LETTER B
-0x63 0x0063 # LATIN SMALL LETTER C
-0x64 0x0064 # LATIN SMALL LETTER D
-0x65 0x0065 # LATIN SMALL LETTER E
-0x66 0x0066 # LATIN SMALL LETTER F
-0x67 0x0067 # LATIN SMALL LETTER G
-0x68 0x0068 # LATIN SMALL LETTER H
-0x69 0x0069 # LATIN SMALL LETTER I
-0x6A 0x006A # LATIN SMALL LETTER J
-0x6B 0x006B # LATIN SMALL LETTER K
-0x6C 0x006C # LATIN SMALL LETTER L
-0x6D 0x006D # LATIN SMALL LETTER M
-0x6E 0x006E # LATIN SMALL LETTER N
-0x6F 0x006F # LATIN SMALL LETTER O
-0x70 0x0070 # LATIN SMALL LETTER P
-0x71 0x0071 # LATIN SMALL LETTER Q
-0x72 0x0072 # LATIN SMALL LETTER R
-0x73 0x0073 # LATIN SMALL LETTER S
-0x74 0x0074 # LATIN SMALL LETTER T
-0x75 0x0075 # LATIN SMALL LETTER U
-0x76 0x0076 # LATIN SMALL LETTER V
-0x77 0x0077 # LATIN SMALL LETTER W
-0x78 0x0078 # LATIN SMALL LETTER X
-0x79 0x0079 # LATIN SMALL LETTER Y
-0x7A 0x007A # LATIN SMALL LETTER Z
-0x7B 0x007B # LEFT CURLY BRACKET
-0x7C 0x007C # VERTICAL LINE
-0x7D 0x007D # RIGHT CURLY BRACKET
-0x7E 0x007E # TILDE
-0x7F 0x007F # DELETE
-0x80 0x0080 # <control>
-0x81 0x0081 # <control>
-0x82 0x0082 # <control>
-0x83 0x0083 # <control>
-0x84 0x0084 # <control>
-0x85 0x0085 # <control>
-0x86 0x0086 # <control>
-0x87 0x0087 # <control>
-0x88 0x0088 # <control>
-0x89 0x0089 # <control>
-0x8A 0x008A # <control>
-0x8B 0x008B # <control>
-0x8C 0x008C # <control>
-0x8D 0x008D # <control>
-0x8E 0x008E # <control>
-0x8F 0x008F # <control>
-0x90 0x0090 # <control>
-0x91 0x0091 # <control>
-0x92 0x0092 # <control>
-0x93 0x0093 # <control>
-0x94 0x0094 # <control>
-0x95 0x0095 # <control>
-0x96 0x0096 # <control>
-0x97 0x0097 # <control>
-0x98 0x0098 # <control>
-0x99 0x0099 # <control>
-0x9A 0x009A # <control>
-0x9B 0x009B # <control>
-0x9C 0x009C # <control>
-0x9D 0x009D # <control>
-0x9E 0x009E # <control>
-0x9F 0x009F # <control>
-0xA0 0x00A0 # NO-BREAK SPACE
-0xA1 0x00A1 # INVERTED EXCLAMATION MARK
-0xA2 0x00A2 # CENT SIGN
-0xA3 0x00A3 # POUND SIGN
-0xA4 0x00A4 # CURRENCY SIGN
-0xA5 0x00A5 # YEN SIGN
-0xA6 0x00A6 # BROKEN BAR
-0xA7 0x00A7 # SECTION SIGN
-0xA8 0x00A8 # DIAERESIS
-0xA9 0x00A9 # COPYRIGHT SIGN
-0xAA 0x00AA # FEMININE ORDINAL INDICATOR
-0xAB 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xAC 0x00AC # NOT SIGN
-0xAD 0x00AD # SOFT HYPHEN
-0xAE 0x00AE # REGISTERED SIGN
-0xAF 0x00AF # MACRON
-0xB0 0x00B0 # DEGREE SIGN
-0xB1 0x00B1 # PLUS-MINUS SIGN
-0xB2 0x00B2 # SUPERSCRIPT TWO
-0xB3 0x00B3 # SUPERSCRIPT THREE
-0xB4 0x00B4 # ACUTE ACCENT
-0xB5 0x00B5 # MICRO SIGN
-0xB6 0x00B6 # PILCROW SIGN
-0xB7 0x00B7 # MIDDLE DOT
-0xB8 0x00B8 # CEDILLA
-0xB9 0x00B9 # SUPERSCRIPT ONE
-0xBA 0x00BA # MASCULINE ORDINAL INDICATOR
-0xBB 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-0xBC 0x00BC # VULGAR FRACTION ONE QUARTER
-0xBD 0x00BD # VULGAR FRACTION ONE HALF
-0xBE 0x00BE # VULGAR FRACTION THREE QUARTERS
-0xBF 0x00BF # INVERTED QUESTION MARK
-0xC0 0x00C0 # LATIN CAPITAL LETTER A WITH GRAVE
-0xC1 0x00C1 # LATIN CAPITAL LETTER A WITH ACUTE
-0xC2 0x00C2 # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-0xC3 0x00C3 # LATIN CAPITAL LETTER A WITH TILDE
-0xC4 0x00C4 # LATIN CAPITAL LETTER A WITH DIAERESIS
-0xC5 0x00C5 # LATIN CAPITAL LETTER A WITH RING ABOVE
-0xC6 0x00C6 # LATIN CAPITAL LETTER AE
-0xC7 0x00C7 # LATIN CAPITAL LETTER C WITH CEDILLA
-0xC8 0x00C8 # LATIN CAPITAL LETTER E WITH GRAVE
-0xC9 0x00C9 # LATIN CAPITAL LETTER E WITH ACUTE
-0xCA 0x00CA # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-0xCB 0x00CB # LATIN CAPITAL LETTER E WITH DIAERESIS
-0xCC 0x00CC # LATIN CAPITAL LETTER I WITH GRAVE
-0xCD 0x00CD # LATIN CAPITAL LETTER I WITH ACUTE
-0xCE 0x00CE # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-0xCF 0x00CF # LATIN CAPITAL LETTER I WITH DIAERESIS
-0xD0 0x011E # LATIN CAPITAL LETTER G WITH BREVE
-0xD1 0x00D1 # LATIN CAPITAL LETTER N WITH TILDE
-0xD2 0x00D2 # LATIN CAPITAL LETTER O WITH GRAVE
-0xD3 0x00D3 # LATIN CAPITAL LETTER O WITH ACUTE
-0xD4 0x00D4 # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-0xD5 0x00D5 # LATIN CAPITAL LETTER O WITH TILDE
-0xD6 0x00D6 # LATIN CAPITAL LETTER O WITH DIAERESIS
-0xD7 0x00D7 # MULTIPLICATION SIGN
-0xD8 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
-0xD9 0x00D9 # LATIN CAPITAL LETTER U WITH GRAVE
-0xDA 0x00DA # LATIN CAPITAL LETTER U WITH ACUTE
-0xDB 0x00DB # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-0xDC 0x00DC # LATIN CAPITAL LETTER U WITH DIAERESIS
-0xDD 0x0130 # LATIN CAPITAL LETTER I WITH DOT ABOVE
-0xDE 0x015E # LATIN CAPITAL LETTER S WITH CEDILLA
-0xDF 0x00DF # LATIN SMALL LETTER SHARP S
-0xE0 0x00E0 # LATIN SMALL LETTER A WITH GRAVE
-0xE1 0x00E1 # LATIN SMALL LETTER A WITH ACUTE
-0xE2 0x00E2 # LATIN SMALL LETTER A WITH CIRCUMFLEX
-0xE3 0x00E3 # LATIN SMALL LETTER A WITH TILDE
-0xE4 0x00E4 # LATIN SMALL LETTER A WITH DIAERESIS
-0xE5 0x00E5 # LATIN SMALL LETTER A WITH RING ABOVE
-0xE6 0x00E6 # LATIN SMALL LETTER AE
-0xE7 0x00E7 # LATIN SMALL LETTER C WITH CEDILLA
-0xE8 0x00E8 # LATIN SMALL LETTER E WITH GRAVE
-0xE9 0x00E9 # LATIN SMALL LETTER E WITH ACUTE
-0xEA 0x00EA # LATIN SMALL LETTER E WITH CIRCUMFLEX
-0xEB 0x00EB # LATIN SMALL LETTER E WITH DIAERESIS
-0xEC 0x00EC # LATIN SMALL LETTER I WITH GRAVE
-0xED 0x00ED # LATIN SMALL LETTER I WITH ACUTE
-0xEE 0x00EE # LATIN SMALL LETTER I WITH CIRCUMFLEX
-0xEF 0x00EF # LATIN SMALL LETTER I WITH DIAERESIS
-0xF0 0x011F # LATIN SMALL LETTER G WITH BREVE
-0xF1 0x00F1 # LATIN SMALL LETTER N WITH TILDE
-0xF2 0x00F2 # LATIN SMALL LETTER O WITH GRAVE
-0xF3 0x00F3 # LATIN SMALL LETTER O WITH ACUTE
-0xF4 0x00F4 # LATIN SMALL LETTER O WITH CIRCUMFLEX
-0xF5 0x00F5 # LATIN SMALL LETTER O WITH TILDE
-0xF6 0x00F6 # LATIN SMALL LETTER O WITH DIAERESIS
-0xF7 0x00F7 # DIVISION SIGN
-0xF8 0x00F8 # LATIN SMALL LETTER O WITH STROKE
-0xF9 0x00F9 # LATIN SMALL LETTER U WITH GRAVE
-0xFA 0x00FA # LATIN SMALL LETTER U WITH ACUTE
-0xFB 0x00FB # LATIN SMALL LETTER U WITH CIRCUMFLEX
-0xFC 0x00FC # LATIN SMALL LETTER U WITH DIAERESIS
-0xFD 0x0131 # LATIN SMALL LETTER DOTLESS I
-0xFE 0x015F # LATIN SMALL LETTER S WITH CEDILLA
-0xFF 0x00FF # LATIN SMALL LETTER Y WITH DIAERESIS
-
-
diff --git a/program/lib/encoding/KOI8R.map b/program/lib/encoding/KOI8R.map
deleted file mode 100644
index 4a17d18e5..000000000
--- a/program/lib/encoding/KOI8R.map
+++ /dev/null
@@ -1,302 +0,0 @@
-#
-# Name: KOI8-R (RFC1489) to Unicode
-# Unicode version: 3.0
-# Table version: 1.0
-# Table format: Format A
-# Date: 18 August 1999
-# Authors: Helmut Richter <richter@lrz.de>
-#
-# Copyright (c) 1991-1999 Unicode, Inc. All Rights reserved.
-#
-# This file is provided as-is by Unicode, Inc. (The Unicode Consortium).
-# No claims are made as to fitness for any particular purpose. No
-# warranties of any kind are expressed or implied. The recipient
-# agrees to determine applicability of information provided. If this
-# file has been provided on optical media by Unicode, Inc., the sole
-# remedy for any claim will be exchange of defective media within 90
-# days of receipt.
-#
-# Unicode, Inc. hereby grants the right to freely use the information
-# supplied in this file in the creation of products supporting the
-# Unicode Standard, and to make copies of this file in any form for
-# internal or external distribution as long as this notice remains
-# attached.
-#
-# General notes:
-#
-# This table contains the data the Unicode Consortium has on how
-# KOI8-R characters map into Unicode. The underlying document is the
-# mapping described in RFC 1489. No statements are made as to whether
-# this mapping is the same as the mapping defined as "Code Page 878"
-# with some vendors.
-#
-# Format: Three tab-separated columns
-# Column #1 is the KOI8-R code (in hex as 0xXX)
-# Column #2 is the Unicode (in hex as 0xXXXX)
-# Column #3 the Unicode name (follows a comment sign, '#')
-#
-# The entries are in KOI8-R order.
-#
-# Version history
-# 1.0 version: created.
-#
-# Any comments or problems, contact <errata@unicode.org>
-# Please note that <errata@unicode.org> is an archival address;
-# notices will be checked, but do not expect an immediate response.
-#
-0x00 0x0000 # NULL
-0x01 0x0001 # START OF HEADING
-0x02 0x0002 # START OF TEXT
-0x03 0x0003 # END OF TEXT
-0x04 0x0004 # END OF TRANSMISSION
-0x05 0x0005 # ENQUIRY
-0x06 0x0006 # ACKNOWLEDGE
-0x07 0x0007 # BELL
-0x08 0x0008 # BACKSPACE
-0x09 0x0009 # HORIZONTAL TABULATION
-0x0A 0x000A # LINE FEED
-0x0B 0x000B # VERTICAL TABULATION
-0x0C 0x000C # FORM FEED
-0x0D 0x000D # CARRIAGE RETURN
-0x0E 0x000E # SHIFT OUT
-0x0F 0x000F # SHIFT IN
-0x10 0x0010 # DATA LINK ESCAPE
-0x11 0x0011 # DEVICE CONTROL ONE
-0x12 0x0012 # DEVICE CONTROL TWO
-0x13 0x0013 # DEVICE CONTROL THREE
-0x14 0x0014 # DEVICE CONTROL FOUR
-0x15 0x0015 # NEGATIVE ACKNOWLEDGE
-0x16 0x0016 # SYNCHRONOUS IDLE
-0x17 0x0017 # END OF TRANSMISSION BLOCK
-0x18 0x0018 # CANCEL
-0x19 0x0019 # END OF MEDIUM
-0x1A 0x001A # SUBSTITUTE
-0x1B 0x001B # ESCAPE
-0x1C 0x001C # FILE SEPARATOR
-0x1D 0x001D # GROUP SEPARATOR
-0x1E 0x001E # RECORD SEPARATOR
-0x1F 0x001F # UNIT SEPARATOR
-0x20 0x0020 # SPACE
-0x21 0x0021 # EXCLAMATION MARK
-0x22 0x0022 # QUOTATION MARK
-0x23 0x0023 # NUMBER SIGN
-0x24 0x0024 # DOLLAR SIGN
-0x25 0x0025 # PERCENT SIGN
-0x26 0x0026 # AMPERSAND
-0x27 0x0027 # APOSTROPHE
-0x28 0x0028 # LEFT PARENTHESIS
-0x29 0x0029 # RIGHT PARENTHESIS
-0x2A 0x002A # ASTERISK
-0x2B 0x002B # PLUS SIGN
-0x2C 0x002C # COMMA
-0x2D 0x002D # HYPHEN-MINUS
-0x2E 0x002E # FULL STOP
-0x2F 0x002F # SOLIDUS
-0x30 0x0030 # DIGIT ZERO
-0x31 0x0031 # DIGIT ONE
-0x32 0x0032 # DIGIT TWO
-0x33 0x0033 # DIGIT THREE
-0x34 0x0034 # DIGIT FOUR
-0x35 0x0035 # DIGIT FIVE
-0x36 0x0036 # DIGIT SIX
-0x37 0x0037 # DIGIT SEVEN
-0x38 0x0038 # DIGIT EIGHT
-0x39 0x0039 # DIGIT NINE
-0x3A 0x003A # COLON
-0x3B 0x003B # SEMICOLON
-0x3C 0x003C # LESS-THAN SIGN
-0x3D 0x003D # EQUALS SIGN
-0x3E 0x003E # GREATER-THAN SIGN
-0x3F 0x003F # QUESTION MARK
-0x40 0x0040 # COMMERCIAL AT
-0x41 0x0041 # LATIN CAPITAL LETTER A
-0x42 0x0042 # LATIN CAPITAL LETTER B
-0x43 0x0043 # LATIN CAPITAL LETTER C
-0x44 0x0044 # LATIN CAPITAL LETTER D
-0x45 0x0045 # LATIN CAPITAL LETTER E
-0x46 0x0046 # LATIN CAPITAL LETTER F
-0x47 0x0047 # LATIN CAPITAL LETTER G
-0x48 0x0048 # LATIN CAPITAL LETTER H
-0x49 0x0049 # LATIN CAPITAL LETTER I
-0x4A 0x004A # LATIN CAPITAL LETTER J
-0x4B 0x004B # LATIN CAPITAL LETTER K
-0x4C 0x004C # LATIN CAPITAL LETTER L
-0x4D 0x004D # LATIN CAPITAL LETTER M
-0x4E 0x004E # LATIN CAPITAL LETTER N
-0x4F 0x004F # LATIN CAPITAL LETTER O
-0x50 0x0050 # LATIN CAPITAL LETTER P
-0x51 0x0051 # LATIN CAPITAL LETTER Q
-0x52 0x0052 # LATIN CAPITAL LETTER R
-0x53 0x0053 # LATIN CAPITAL LETTER S
-0x54 0x0054 # LATIN CAPITAL LETTER T
-0x55 0x0055 # LATIN CAPITAL LETTER U
-0x56 0x0056 # LATIN CAPITAL LETTER V
-0x57 0x0057 # LATIN CAPITAL LETTER W
-0x58 0x0058 # LATIN CAPITAL LETTER X
-0x59 0x0059 # LATIN CAPITAL LETTER Y
-0x5A 0x005A # LATIN CAPITAL LETTER Z
-0x5B 0x005B # LEFT SQUARE BRACKET
-0x5C 0x005C # REVERSE SOLIDUS
-0x5D 0x005D # RIGHT SQUARE BRACKET
-0x5E 0x005E # CIRCUMFLEX ACCENT
-0x5F 0x005F # LOW LINE
-0x60 0x0060 # GRAVE ACCENT
-0x61 0x0061 # LATIN SMALL LETTER A
-0x62 0x0062 # LATIN SMALL LETTER B
-0x63 0x0063 # LATIN SMALL LETTER C
-0x64 0x0064 # LATIN SMALL LETTER D
-0x65 0x0065 # LATIN SMALL LETTER E
-0x66 0x0066 # LATIN SMALL LETTER F
-0x67 0x0067 # LATIN SMALL LETTER G
-0x68 0x0068 # LATIN SMALL LETTER H
-0x69 0x0069 # LATIN SMALL LETTER I
-0x6A 0x006A # LATIN SMALL LETTER J
-0x6B 0x006B # LATIN SMALL LETTER K
-0x6C 0x006C # LATIN SMALL LETTER L
-0x6D 0x006D # LATIN SMALL LETTER M
-0x6E 0x006E # LATIN SMALL LETTER N
-0x6F 0x006F # LATIN SMALL LETTER O
-0x70 0x0070 # LATIN SMALL LETTER P
-0x71 0x0071 # LATIN SMALL LETTER Q
-0x72 0x0072 # LATIN SMALL LETTER R
-0x73 0x0073 # LATIN SMALL LETTER S
-0x74 0x0074 # LATIN SMALL LETTER T
-0x75 0x0075 # LATIN SMALL LETTER U
-0x76 0x0076 # LATIN SMALL LETTER V
-0x77 0x0077 # LATIN SMALL LETTER W
-0x78 0x0078 # LATIN SMALL LETTER X
-0x79 0x0079 # LATIN SMALL LETTER Y
-0x7A 0x007A # LATIN SMALL LETTER Z
-0x7B 0x007B # LEFT CURLY BRACKET
-0x7C 0x007C # VERTICAL LINE
-0x7D 0x007D # RIGHT CURLY BRACKET
-0x7E 0x007E # TILDE
-0x7F 0x007F # DELETE
-0x80 0x2500 # BOX DRAWINGS LIGHT HORIZONTAL
-0x81 0x2502 # BOX DRAWINGS LIGHT VERTICAL
-0x82 0x250C # BOX DRAWINGS LIGHT DOWN AND RIGHT
-0x83 0x2510 # BOX DRAWINGS LIGHT DOWN AND LEFT
-0x84 0x2514 # BOX DRAWINGS LIGHT UP AND RIGHT
-0x85 0x2518 # BOX DRAWINGS LIGHT UP AND LEFT
-0x86 0x251C # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-0x87 0x2524 # BOX DRAWINGS LIGHT VERTICAL AND LEFT
-0x88 0x252C # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-0x89 0x2534 # BOX DRAWINGS LIGHT UP AND HORIZONTAL
-0x8A 0x253C # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-0x8B 0x2580 # UPPER HALF BLOCK
-0x8C 0x2584 # LOWER HALF BLOCK
-0x8D 0x2588 # FULL BLOCK
-0x8E 0x258C # LEFT HALF BLOCK
-0x8F 0x2590 # RIGHT HALF BLOCK
-0x90 0x2591 # LIGHT SHADE
-0x91 0x2592 # MEDIUM SHADE
-0x92 0x2593 # DARK SHADE
-0x93 0x2320 # TOP HALF INTEGRAL
-0x94 0x25A0 # BLACK SQUARE
-0x95 0x2219 # BULLET OPERATOR
-0x96 0x221A # SQUARE ROOT
-0x97 0x2248 # ALMOST EQUAL TO
-0x98 0x2264 # LESS-THAN OR EQUAL TO
-0x99 0x2265 # GREATER-THAN OR EQUAL TO
-0x9A 0x00A0 # NO-BREAK SPACE
-0x9B 0x2321 # BOTTOM HALF INTEGRAL
-0x9C 0x00B0 # DEGREE SIGN
-0x9D 0x00B2 # SUPERSCRIPT TWO
-0x9E 0x00B7 # MIDDLE DOT
-0x9F 0x00F7 # DIVISION SIGN
-0xA0 0x2550 # BOX DRAWINGS DOUBLE HORIZONTAL
-0xA1 0x2551 # BOX DRAWINGS DOUBLE VERTICAL
-0xA2 0x2552 # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
-0xA3 0x0451 # CYRILLIC SMALL LETTER IO
-0xA4 0x2553 # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
-0xA5 0x2554 # BOX DRAWINGS DOUBLE DOWN AND RIGHT
-0xA6 0x2555 # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
-0xA7 0x2556 # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
-0xA8 0x2557 # BOX DRAWINGS DOUBLE DOWN AND LEFT
-0xA9 0x2558 # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
-0xAA 0x2559 # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
-0xAB 0x255A # BOX DRAWINGS DOUBLE UP AND RIGHT
-0xAC 0x255B # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
-0xAD 0x255C # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
-0xAE 0x255D # BOX DRAWINGS DOUBLE UP AND LEFT
-0xAF 0x255E # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
-0xB0 0x255F # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
-0xB1 0x2560 # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
-0xB2 0x2561 # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
-0xB3 0x0401 # CYRILLIC CAPITAL LETTER IO
-0xB4 0x2562 # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
-0xB5 0x2563 # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
-0xB6 0x2564 # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
-0xB7 0x2565 # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
-0xB8 0x2566 # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
-0xB9 0x2567 # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
-0xBA 0x2568 # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
-0xBB 0x2569 # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
-0xBC 0x256A # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
-0xBD 0x256B # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
-0xBE 0x256C # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
-0xBF 0x00A9 # COPYRIGHT SIGN
-0xC0 0x044E # CYRILLIC SMALL LETTER YU
-0xC1 0x0430 # CYRILLIC SMALL LETTER A
-0xC2 0x0431 # CYRILLIC SMALL LETTER BE
-0xC3 0x0446 # CYRILLIC SMALL LETTER TSE
-0xC4 0x0434 # CYRILLIC SMALL LETTER DE
-0xC5 0x0435 # CYRILLIC SMALL LETTER IE
-0xC6 0x0444 # CYRILLIC SMALL LETTER EF
-0xC7 0x0433 # CYRILLIC SMALL LETTER GHE
-0xC8 0x0445 # CYRILLIC SMALL LETTER HA
-0xC9 0x0438 # CYRILLIC SMALL LETTER I
-0xCA 0x0439 # CYRILLIC SMALL LETTER SHORT I
-0xCB 0x043A # CYRILLIC SMALL LETTER KA
-0xCC 0x043B # CYRILLIC SMALL LETTER EL
-0xCD 0x043C # CYRILLIC SMALL LETTER EM
-0xCE 0x043D # CYRILLIC SMALL LETTER EN
-0xCF 0x043E # CYRILLIC SMALL LETTER O
-0xD0 0x043F # CYRILLIC SMALL LETTER PE
-0xD1 0x044F # CYRILLIC SMALL LETTER YA
-0xD2 0x0440 # CYRILLIC SMALL LETTER ER
-0xD3 0x0441 # CYRILLIC SMALL LETTER ES
-0xD4 0x0442 # CYRILLIC SMALL LETTER TE
-0xD5 0x0443 # CYRILLIC SMALL LETTER U
-0xD6 0x0436 # CYRILLIC SMALL LETTER ZHE
-0xD7 0x0432 # CYRILLIC SMALL LETTER VE
-0xD8 0x044C # CYRILLIC SMALL LETTER SOFT SIGN
-0xD9 0x044B # CYRILLIC SMALL LETTER YERU
-0xDA 0x0437 # CYRILLIC SMALL LETTER ZE
-0xDB 0x0448 # CYRILLIC SMALL LETTER SHA
-0xDC 0x044D # CYRILLIC SMALL LETTER E
-0xDD 0x0449 # CYRILLIC SMALL LETTER SHCHA
-0xDE 0x0447 # CYRILLIC SMALL LETTER CHE
-0xDF 0x044A # CYRILLIC SMALL LETTER HARD SIGN
-0xE0 0x042E # CYRILLIC CAPITAL LETTER YU
-0xE1 0x0410 # CYRILLIC CAPITAL LETTER A
-0xE2 0x0411 # CYRILLIC CAPITAL LETTER BE
-0xE3 0x0426 # CYRILLIC CAPITAL LETTER TSE
-0xE4 0x0414 # CYRILLIC CAPITAL LETTER DE
-0xE5 0x0415 # CYRILLIC CAPITAL LETTER IE
-0xE6 0x0424 # CYRILLIC CAPITAL LETTER EF
-0xE7 0x0413 # CYRILLIC CAPITAL LETTER GHE
-0xE8 0x0425 # CYRILLIC CAPITAL LETTER HA
-0xE9 0x0418 # CYRILLIC CAPITAL LETTER I
-0xEA 0x0419 # CYRILLIC CAPITAL LETTER SHORT I
-0xEB 0x041A # CYRILLIC CAPITAL LETTER KA
-0xEC 0x041B # CYRILLIC CAPITAL LETTER EL
-0xED 0x041C # CYRILLIC CAPITAL LETTER EM
-0xEE 0x041D # CYRILLIC CAPITAL LETTER EN
-0xEF 0x041E # CYRILLIC CAPITAL LETTER O
-0xF0 0x041F # CYRILLIC CAPITAL LETTER PE
-0xF1 0x042F # CYRILLIC CAPITAL LETTER YA
-0xF2 0x0420 # CYRILLIC CAPITAL LETTER ER
-0xF3 0x0421 # CYRILLIC CAPITAL LETTER ES
-0xF4 0x0422 # CYRILLIC CAPITAL LETTER TE
-0xF5 0x0423 # CYRILLIC CAPITAL LETTER U
-0xF6 0x0416 # CYRILLIC CAPITAL LETTER ZHE
-0xF7 0x0412 # CYRILLIC CAPITAL LETTER VE
-0xF8 0x042C # CYRILLIC CAPITAL LETTER SOFT SIGN
-0xF9 0x042B # CYRILLIC CAPITAL LETTER YERU
-0xFA 0x0417 # CYRILLIC CAPITAL LETTER ZE
-0xFB 0x0428 # CYRILLIC CAPITAL LETTER SHA
-0xFC 0x042D # CYRILLIC CAPITAL LETTER E
-0xFD 0x0429 # CYRILLIC CAPITAL LETTER SHCHA
-0xFE 0x0427 # CYRILLIC CAPITAL LETTER CHE
-0xFF 0x042A # CYRILLIC CAPITAL LETTER HARD SIGN \ No newline at end of file
diff --git a/program/lib/encoding/KSC5601.map b/program/lib/encoding/KSC5601.map
deleted file mode 100644
index 83a5ce77b..000000000
--- a/program/lib/encoding/KSC5601.map
+++ /dev/null
@@ -1,17078 +0,0 @@
-#
-# Name: Unified Hangeul(KSC5601-1992) to Unicode table
-# Unicode version: 2.0
-# Table version: 1.0
-# Table format: Format A
-# Date: 07/24/95
-#
-# This table contains one set of mappings from KSC5601-1992 into Unicode.
-# Note that these data are *possible* mappings only and may not be the
-# same as those used by actual products, nor may they be the best suited
-# for all uses. For more information on the mappings between various code
-# pages incorporating the repertoire of KSC5601-1992 and Unicode, consult the
-# VENDORS mapping data. Normative information on the mapping between
-# KSC5601-1992 and Unicode may be found in the Unihan.txt file in the
-# latest Unicode Character Database.
-#
-# If you have carefully considered the fact that the mappings in
-# this table are only one possible set of mappings between KSC5601-1992 and
-# Unicode and have no normative status, but still feel that you
-# have located an error in the table that requires fixing, you may
-# report any such error to errata@unicode.org.
-#
-#
-# Format: Three tab-separated columns
-# Column #1 is the Unified Hangeul code (in hex)
-# Column #2 is the Unicode (in hex as 0xXXXX)
-# Column #3 is the Unicode name (follows a comment sign, '#')
-#
-# The entries are in Unified Hangeul order
-#
-0x8141 0xAC02 # HANGUL SYLLABLE KIYEOK-A-SSANGKIYEOK
-0x8142 0xAC03 # HANGUL SYLLABLE KIYEOK-A-KIYEOKSIOS
-0x8143 0xAC05 # HANGUL SYLLABLE KIYEOK-A-NIEUNCIEUC
-0x8144 0xAC06 # HANGUL SYLLABLE KIYEOK-A-NIEUNHIEUH
-0x8145 0xAC0B # HANGUL SYLLABLE KIYEOK-A-RIEULPIEUP
-0x8146 0xAC0C # HANGUL SYLLABLE KIYEOK-A-RIEULSIOS
-0x8147 0xAC0D # HANGUL SYLLABLE KIYEOK-A-RIEULTHIEUTH
-0x8148 0xAC0E # HANGUL SYLLABLE KIYEOK-A-RIEULPHIEUPH
-0x8149 0xAC0F # HANGUL SYLLABLE KIYEOK-A-RIEULHIEUH
-0x814A 0xAC18 # HANGUL SYLLABLE KIYEOK-A-KHIEUKH
-0x814B 0xAC1E # HANGUL SYLLABLE KIYEOK-AE-SSANGKIYEOK
-0x814C 0xAC1F # HANGUL SYLLABLE KIYEOK-AE-KIYEOKSIOS
-0x814D 0xAC21 # HANGUL SYLLABLE KIYEOK-AE-NIEUNCIEUC
-0x814E 0xAC22 # HANGUL SYLLABLE KIYEOK-AE-NIEUNHIEUH
-0x814F 0xAC23 # HANGUL SYLLABLE KIYEOK-AE-TIKEUT
-0x8150 0xAC25 # HANGUL SYLLABLE KIYEOK-AE-RIEULKIYEOK
-0x8151 0xAC26 # HANGUL SYLLABLE KIYEOK-AE-RIEULMIEUM
-0x8152 0xAC27 # HANGUL SYLLABLE KIYEOK-AE-RIEULPIEUP
-0x8153 0xAC28 # HANGUL SYLLABLE KIYEOK-AE-RIEULSIOS
-0x8154 0xAC29 # HANGUL SYLLABLE KIYEOK-AE-RIEULTHIEUTH
-0x8155 0xAC2A # HANGUL SYLLABLE KIYEOK-AE-RIEULPHIEUPH
-0x8156 0xAC2B # HANGUL SYLLABLE KIYEOK-AE-RIEULHIEUH
-0x8157 0xAC2E # HANGUL SYLLABLE KIYEOK-AE-PIEUPSIOS
-0x8158 0xAC32 # HANGUL SYLLABLE KIYEOK-AE-CIEUC
-0x8159 0xAC33 # HANGUL SYLLABLE KIYEOK-AE-CHIEUCH
-0x815A 0xAC34 # HANGUL SYLLABLE KIYEOK-AE-KHIEUKH
-0x8161 0xAC35 # HANGUL SYLLABLE KIYEOK-AE-THIEUTH
-0x8162 0xAC36 # HANGUL SYLLABLE KIYEOK-AE-PHIEUPH
-0x8163 0xAC37 # HANGUL SYLLABLE KIYEOK-AE-HIEUH
-0x8164 0xAC3A # HANGUL SYLLABLE KIYEOK-YA-SSANGKIYEOK
-0x8165 0xAC3B # HANGUL SYLLABLE KIYEOK-YA-KIYEOKSIOS
-0x8166 0xAC3D # HANGUL SYLLABLE KIYEOK-YA-NIEUNCIEUC
-0x8167 0xAC3E # HANGUL SYLLABLE KIYEOK-YA-NIEUNHIEUH
-0x8168 0xAC3F # HANGUL SYLLABLE KIYEOK-YA-TIKEUT
-0x8169 0xAC41 # HANGUL SYLLABLE KIYEOK-YA-RIEULKIYEOK
-0x816A 0xAC42 # HANGUL SYLLABLE KIYEOK-YA-RIEULMIEUM
-0x816B 0xAC43 # HANGUL SYLLABLE KIYEOK-YA-RIEULPIEUP
-0x816C 0xAC44 # HANGUL SYLLABLE KIYEOK-YA-RIEULSIOS
-0x816D 0xAC45 # HANGUL SYLLABLE KIYEOK-YA-RIEULTHIEUTH
-0x816E 0xAC46 # HANGUL SYLLABLE KIYEOK-YA-RIEULPHIEUPH
-0x816F 0xAC47 # HANGUL SYLLABLE KIYEOK-YA-RIEULHIEUH
-0x8170 0xAC48 # HANGUL SYLLABLE KIYEOK-YA-MIEUM
-0x8171 0xAC49 # HANGUL SYLLABLE KIYEOK-YA-PIEUP
-0x8172 0xAC4A # HANGUL SYLLABLE KIYEOK-YA-PIEUPSIOS
-0x8173 0xAC4C # HANGUL SYLLABLE KIYEOK-YA-SSANGSIOS
-0x8174 0xAC4E # HANGUL SYLLABLE KIYEOK-YA-CIEUC
-0x8175 0xAC4F # HANGUL SYLLABLE KIYEOK-YA-CHIEUCH
-0x8176 0xAC50 # HANGUL SYLLABLE KIYEOK-YA-KHIEUKH
-0x8177 0xAC51 # HANGUL SYLLABLE KIYEOK-YA-THIEUTH
-0x8178 0xAC52 # HANGUL SYLLABLE KIYEOK-YA-PHIEUPH
-0x8179 0xAC53 # HANGUL SYLLABLE KIYEOK-YA-HIEUH
-0x817A 0xAC55 # HANGUL SYLLABLE KIYEOK-YAE-KIYEOK
-0x8181 0xAC56 # HANGUL SYLLABLE KIYEOK-YAE-SSANGKIYEOK
-0x8182 0xAC57 # HANGUL SYLLABLE KIYEOK-YAE-KIYEOKSIOS
-0x8183 0xAC59 # HANGUL SYLLABLE KIYEOK-YAE-NIEUNCIEUC
-0x8184 0xAC5A # HANGUL SYLLABLE KIYEOK-YAE-NIEUNHIEUH
-0x8185 0xAC5B # HANGUL SYLLABLE KIYEOK-YAE-TIKEUT
-0x8186 0xAC5D # HANGUL SYLLABLE KIYEOK-YAE-RIEULKIYEOK
-0x8187 0xAC5E # HANGUL SYLLABLE KIYEOK-YAE-RIEULMIEUM
-0x8188 0xAC5F # HANGUL SYLLABLE KIYEOK-YAE-RIEULPIEUP
-0x8189 0xAC60 # HANGUL SYLLABLE KIYEOK-YAE-RIEULSIOS
-0x818A 0xAC61 # HANGUL SYLLABLE KIYEOK-YAE-RIEULTHIEUTH
-0x818B 0xAC62 # HANGUL SYLLABLE KIYEOK-YAE-RIEULPHIEUPH
-0x818C 0xAC63 # HANGUL SYLLABLE KIYEOK-YAE-RIEULHIEUH
-0x818D 0xAC64 # HANGUL SYLLABLE KIYEOK-YAE-MIEUM
-0x818E 0xAC65 # HANGUL SYLLABLE KIYEOK-YAE-PIEUP
-0x818F 0xAC66 # HANGUL SYLLABLE KIYEOK-YAE-PIEUPSIOS
-0x8190 0xAC67 # HANGUL SYLLABLE KIYEOK-YAE-SIOS
-0x8191 0xAC68 # HANGUL SYLLABLE KIYEOK-YAE-SSANGSIOS
-0x8192 0xAC69 # HANGUL SYLLABLE KIYEOK-YAE-IEUNG
-0x8193 0xAC6A # HANGUL SYLLABLE KIYEOK-YAE-CIEUC
-0x8194 0xAC6B # HANGUL SYLLABLE KIYEOK-YAE-CHIEUCH
-0x8195 0xAC6C # HANGUL SYLLABLE KIYEOK-YAE-KHIEUKH
-0x8196 0xAC6D # HANGUL SYLLABLE KIYEOK-YAE-THIEUTH
-0x8197 0xAC6E # HANGUL SYLLABLE KIYEOK-YAE-PHIEUPH
-0x8198 0xAC6F # HANGUL SYLLABLE KIYEOK-YAE-HIEUH
-0x8199 0xAC72 # HANGUL SYLLABLE KIYEOK-EO-SSANGKIYEOK
-0x819A 0xAC73 # HANGUL SYLLABLE KIYEOK-EO-KIYEOKSIOS
-0x819B 0xAC75 # HANGUL SYLLABLE KIYEOK-EO-NIEUNCIEUC
-0x819C 0xAC76 # HANGUL SYLLABLE KIYEOK-EO-NIEUNHIEUH
-0x819D 0xAC79 # HANGUL SYLLABLE KIYEOK-EO-RIEULKIYEOK
-0x819E 0xAC7B # HANGUL SYLLABLE KIYEOK-EO-RIEULPIEUP
-0x819F 0xAC7C # HANGUL SYLLABLE KIYEOK-EO-RIEULSIOS
-0x81A0 0xAC7D # HANGUL SYLLABLE KIYEOK-EO-RIEULTHIEUTH
-0x81A1 0xAC7E # HANGUL SYLLABLE KIYEOK-EO-RIEULPHIEUPH
-0x81A2 0xAC7F # HANGUL SYLLABLE KIYEOK-EO-RIEULHIEUH
-0x81A3 0xAC82 # HANGUL SYLLABLE KIYEOK-EO-PIEUPSIOS
-0x81A4 0xAC87 # HANGUL SYLLABLE KIYEOK-EO-CHIEUCH
-0x81A5 0xAC88 # HANGUL SYLLABLE KIYEOK-EO-KHIEUKH
-0x81A6 0xAC8D # HANGUL SYLLABLE KIYEOK-E-KIYEOK
-0x81A7 0xAC8E # HANGUL SYLLABLE KIYEOK-E-SSANGKIYEOK
-0x81A8 0xAC8F # HANGUL SYLLABLE KIYEOK-E-KIYEOKSIOS
-0x81A9 0xAC91 # HANGUL SYLLABLE KIYEOK-E-NIEUNCIEUC
-0x81AA 0xAC92 # HANGUL SYLLABLE KIYEOK-E-NIEUNHIEUH
-0x81AB 0xAC93 # HANGUL SYLLABLE KIYEOK-E-TIKEUT
-0x81AC 0xAC95 # HANGUL SYLLABLE KIYEOK-E-RIEULKIYEOK
-0x81AD 0xAC96 # HANGUL SYLLABLE KIYEOK-E-RIEULMIEUM
-0x81AE 0xAC97 # HANGUL SYLLABLE KIYEOK-E-RIEULPIEUP
-0x81AF 0xAC98 # HANGUL SYLLABLE KIYEOK-E-RIEULSIOS
-0x81B0 0xAC99 # HANGUL SYLLABLE KIYEOK-E-RIEULTHIEUTH
-0x81B1 0xAC9A # HANGUL SYLLABLE KIYEOK-E-RIEULPHIEUPH
-0x81B2 0xAC9B # HANGUL SYLLABLE KIYEOK-E-RIEULHIEUH
-0x81B3 0xAC9E # HANGUL SYLLABLE KIYEOK-E-PIEUPSIOS
-0x81B4 0xACA2 # HANGUL SYLLABLE KIYEOK-E-CIEUC
-0x81B5 0xACA3 # HANGUL SYLLABLE KIYEOK-E-CHIEUCH
-0x81B6 0xACA4 # HANGUL SYLLABLE KIYEOK-E-KHIEUKH
-0x81B7 0xACA5 # HANGUL SYLLABLE KIYEOK-E-THIEUTH
-0x81B8 0xACA6 # HANGUL SYLLABLE KIYEOK-E-PHIEUPH
-0x81B9 0xACA7 # HANGUL SYLLABLE KIYEOK-E-HIEUH
-0x81BA 0xACAB # HANGUL SYLLABLE KIYEOK-YEO-KIYEOKSIOS
-0x81BB 0xACAD # HANGUL SYLLABLE KIYEOK-YEO-NIEUNCIEUC
-0x81BC 0xACAE # HANGUL SYLLABLE KIYEOK-YEO-NIEUNHIEUH
-0x81BD 0xACB1 # HANGUL SYLLABLE KIYEOK-YEO-RIEULKIYEOK
-0x81BE 0xACB2 # HANGUL SYLLABLE KIYEOK-YEO-RIEULMIEUM
-0x81BF 0xACB3 # HANGUL SYLLABLE KIYEOK-YEO-RIEULPIEUP
-0x81C0 0xACB4 # HANGUL SYLLABLE KIYEOK-YEO-RIEULSIOS
-0x81C1 0xACB5 # HANGUL SYLLABLE KIYEOK-YEO-RIEULTHIEUTH
-0x81C2 0xACB6 # HANGUL SYLLABLE KIYEOK-YEO-RIEULPHIEUPH
-0x81C3 0xACB7 # HANGUL SYLLABLE KIYEOK-YEO-RIEULHIEUH
-0x81C4 0xACBA # HANGUL SYLLABLE KIYEOK-YEO-PIEUPSIOS
-0x81C5 0xACBE # HANGUL SYLLABLE KIYEOK-YEO-CIEUC
-0x81C6 0xACBF # HANGUL SYLLABLE KIYEOK-YEO-CHIEUCH
-0x81C7 0xACC0 # HANGUL SYLLABLE KIYEOK-YEO-KHIEUKH
-0x81C8 0xACC2 # HANGUL SYLLABLE KIYEOK-YEO-PHIEUPH
-0x81C9 0xACC3 # HANGUL SYLLABLE KIYEOK-YEO-HIEUH
-0x81CA 0xACC5 # HANGUL SYLLABLE KIYEOK-YE-KIYEOK
-0x81CB 0xACC6 # HANGUL SYLLABLE KIYEOK-YE-SSANGKIYEOK
-0x81CC 0xACC7 # HANGUL SYLLABLE KIYEOK-YE-KIYEOKSIOS
-0x81CD 0xACC9 # HANGUL SYLLABLE KIYEOK-YE-NIEUNCIEUC
-0x81CE 0xACCA # HANGUL SYLLABLE KIYEOK-YE-NIEUNHIEUH
-0x81CF 0xACCB # HANGUL SYLLABLE KIYEOK-YE-TIKEUT
-0x81D0 0xACCD # HANGUL SYLLABLE KIYEOK-YE-RIEULKIYEOK
-0x81D1 0xACCE # HANGUL SYLLABLE KIYEOK-YE-RIEULMIEUM
-0x81D2 0xACCF # HANGUL SYLLABLE KIYEOK-YE-RIEULPIEUP
-0x81D3 0xACD0 # HANGUL SYLLABLE KIYEOK-YE-RIEULSIOS
-0x81D4 0xACD1 # HANGUL SYLLABLE KIYEOK-YE-RIEULTHIEUTH
-0x81D5 0xACD2 # HANGUL SYLLABLE KIYEOK-YE-RIEULPHIEUPH
-0x81D6 0xACD3 # HANGUL SYLLABLE KIYEOK-YE-RIEULHIEUH
-0x81D7 0xACD4 # HANGUL SYLLABLE KIYEOK-YE-MIEUM
-0x81D8 0xACD6 # HANGUL SYLLABLE KIYEOK-YE-PIEUPSIOS
-0x81D9 0xACD8 # HANGUL SYLLABLE KIYEOK-YE-SSANGSIOS
-0x81DA 0xACD9 # HANGUL SYLLABLE KIYEOK-YE-IEUNG
-0x81DB 0xACDA # HANGUL SYLLABLE KIYEOK-YE-CIEUC
-0x81DC 0xACDB # HANGUL SYLLABLE KIYEOK-YE-CHIEUCH
-0x81DD 0xACDC # HANGUL SYLLABLE KIYEOK-YE-KHIEUKH
-0x81DE 0xACDD # HANGUL SYLLABLE KIYEOK-YE-THIEUTH
-0x81DF 0xACDE # HANGUL SYLLABLE KIYEOK-YE-PHIEUPH
-0x81E0 0xACDF # HANGUL SYLLABLE KIYEOK-YE-HIEUH
-0x81E1 0xACE2 # HANGUL SYLLABLE KIYEOK-O-SSANGKIYEOK
-0x81E2 0xACE3 # HANGUL SYLLABLE KIYEOK-O-KIYEOKSIOS
-0x81E3 0xACE5 # HANGUL SYLLABLE KIYEOK-O-NIEUNCIEUC
-0x81E4 0xACE6 # HANGUL SYLLABLE KIYEOK-O-NIEUNHIEUH
-0x81E5 0xACE9 # HANGUL SYLLABLE KIYEOK-O-RIEULKIYEOK
-0x81E6 0xACEB # HANGUL SYLLABLE KIYEOK-O-RIEULPIEUP
-0x81E7 0xACED # HANGUL SYLLABLE KIYEOK-O-RIEULTHIEUTH
-0x81E8 0xACEE # HANGUL SYLLABLE KIYEOK-O-RIEULPHIEUPH
-0x81E9 0xACF2 # HANGUL SYLLABLE KIYEOK-O-PIEUPSIOS
-0x81EA 0xACF4 # HANGUL SYLLABLE KIYEOK-O-SSANGSIOS
-0x81EB 0xACF7 # HANGUL SYLLABLE KIYEOK-O-CHIEUCH
-0x81EC 0xACF8 # HANGUL SYLLABLE KIYEOK-O-KHIEUKH
-0x81ED 0xACF9 # HANGUL SYLLABLE KIYEOK-O-THIEUTH
-0x81EE 0xACFA # HANGUL SYLLABLE KIYEOK-O-PHIEUPH
-0x81EF 0xACFB # HANGUL SYLLABLE KIYEOK-O-HIEUH
-0x81F0 0xACFE # HANGUL SYLLABLE KIYEOK-WA-SSANGKIYEOK
-0x81F1 0xACFF # HANGUL SYLLABLE KIYEOK-WA-KIYEOKSIOS
-0x81F2 0xAD01 # HANGUL SYLLABLE KIYEOK-WA-NIEUNCIEUC
-0x81F3 0xAD02 # HANGUL SYLLABLE KIYEOK-WA-NIEUNHIEUH
-0x81F4 0xAD03 # HANGUL SYLLABLE KIYEOK-WA-TIKEUT
-0x81F5 0xAD05 # HANGUL SYLLABLE KIYEOK-WA-RIEULKIYEOK
-0x81F6 0xAD07 # HANGUL SYLLABLE KIYEOK-WA-RIEULPIEUP
-0x81F7 0xAD08 # HANGUL SYLLABLE KIYEOK-WA-RIEULSIOS
-0x81F8 0xAD09 # HANGUL SYLLABLE KIYEOK-WA-RIEULTHIEUTH
-0x81F9 0xAD0A # HANGUL SYLLABLE KIYEOK-WA-RIEULPHIEUPH
-0x81FA 0xAD0B # HANGUL SYLLABLE KIYEOK-WA-RIEULHIEUH
-0x81FB 0xAD0E # HANGUL SYLLABLE KIYEOK-WA-PIEUPSIOS
-0x81FC 0xAD10 # HANGUL SYLLABLE KIYEOK-WA-SSANGSIOS
-0x81FD 0xAD12 # HANGUL SYLLABLE KIYEOK-WA-CIEUC
-0x81FE 0xAD13 # HANGUL SYLLABLE KIYEOK-WA-CHIEUCH
-0x8241 0xAD14 # HANGUL SYLLABLE KIYEOK-WA-KHIEUKH
-0x8242 0xAD15 # HANGUL SYLLABLE KIYEOK-WA-THIEUTH
-0x8243 0xAD16 # HANGUL SYLLABLE KIYEOK-WA-PHIEUPH
-0x8244 0xAD17 # HANGUL SYLLABLE KIYEOK-WA-HIEUH
-0x8245 0xAD19 # HANGUL SYLLABLE KIYEOK-WAE-KIYEOK
-0x8246 0xAD1A # HANGUL SYLLABLE KIYEOK-WAE-SSANGKIYEOK
-0x8247 0xAD1B # HANGUL SYLLABLE KIYEOK-WAE-KIYEOKSIOS
-0x8248 0xAD1D # HANGUL SYLLABLE KIYEOK-WAE-NIEUNCIEUC
-0x8249 0xAD1E # HANGUL SYLLABLE KIYEOK-WAE-NIEUNHIEUH
-0x824A 0xAD1F # HANGUL SYLLABLE KIYEOK-WAE-TIKEUT
-0x824B 0xAD21 # HANGUL SYLLABLE KIYEOK-WAE-RIEULKIYEOK
-0x824C 0xAD22 # HANGUL SYLLABLE KIYEOK-WAE-RIEULMIEUM
-0x824D 0xAD23 # HANGUL SYLLABLE KIYEOK-WAE-RIEULPIEUP
-0x824E 0xAD24 # HANGUL SYLLABLE KIYEOK-WAE-RIEULSIOS
-0x824F 0xAD25 # HANGUL SYLLABLE KIYEOK-WAE-RIEULTHIEUTH
-0x8250 0xAD26 # HANGUL SYLLABLE KIYEOK-WAE-RIEULPHIEUPH
-0x8251 0xAD27 # HANGUL SYLLABLE KIYEOK-WAE-RIEULHIEUH
-0x8252 0xAD28 # HANGUL SYLLABLE KIYEOK-WAE-MIEUM
-0x8253 0xAD2A # HANGUL SYLLABLE KIYEOK-WAE-PIEUPSIOS
-0x8254 0xAD2B # HANGUL SYLLABLE KIYEOK-WAE-SIOS
-0x8255 0xAD2E # HANGUL SYLLABLE KIYEOK-WAE-CIEUC
-0x8256 0xAD2F # HANGUL SYLLABLE KIYEOK-WAE-CHIEUCH
-0x8257 0xAD30 # HANGUL SYLLABLE KIYEOK-WAE-KHIEUKH
-0x8258 0xAD31 # HANGUL SYLLABLE KIYEOK-WAE-THIEUTH
-0x8259 0xAD32 # HANGUL SYLLABLE KIYEOK-WAE-PHIEUPH
-0x825A 0xAD33 # HANGUL SYLLABLE KIYEOK-WAE-HIEUH
-0x8261 0xAD36 # HANGUL SYLLABLE KIYEOK-OE-SSANGKIYEOK
-0x8262 0xAD37 # HANGUL SYLLABLE KIYEOK-OE-KIYEOKSIOS
-0x8263 0xAD39 # HANGUL SYLLABLE KIYEOK-OE-NIEUNCIEUC
-0x8264 0xAD3A # HANGUL SYLLABLE KIYEOK-OE-NIEUNHIEUH
-0x8265 0xAD3B # HANGUL SYLLABLE KIYEOK-OE-TIKEUT
-0x8266 0xAD3D # HANGUL SYLLABLE KIYEOK-OE-RIEULKIYEOK
-0x8267 0xAD3E # HANGUL SYLLABLE KIYEOK-OE-RIEULMIEUM
-0x8268 0xAD3F # HANGUL SYLLABLE KIYEOK-OE-RIEULPIEUP
-0x8269 0xAD40 # HANGUL SYLLABLE KIYEOK-OE-RIEULSIOS
-0x826A 0xAD41 # HANGUL SYLLABLE KIYEOK-OE-RIEULTHIEUTH
-0x826B 0xAD42 # HANGUL SYLLABLE KIYEOK-OE-RIEULPHIEUPH
-0x826C 0xAD43 # HANGUL SYLLABLE KIYEOK-OE-RIEULHIEUH
-0x826D 0xAD46 # HANGUL SYLLABLE KIYEOK-OE-PIEUPSIOS
-0x826E 0xAD48 # HANGUL SYLLABLE KIYEOK-OE-SSANGSIOS
-0x826F 0xAD4A # HANGUL SYLLABLE KIYEOK-OE-CIEUC
-0x8270 0xAD4B # HANGUL SYLLABLE KIYEOK-OE-CHIEUCH
-0x8271 0xAD4C # HANGUL SYLLABLE KIYEOK-OE-KHIEUKH
-0x8272 0xAD4D # HANGUL SYLLABLE KIYEOK-OE-THIEUTH
-0x8273 0xAD4E # HANGUL SYLLABLE KIYEOK-OE-PHIEUPH
-0x8274 0xAD4F # HANGUL SYLLABLE KIYEOK-OE-HIEUH
-0x8275 0xAD51 # HANGUL SYLLABLE KIYEOK-YO-KIYEOK
-0x8276 0xAD52 # HANGUL SYLLABLE KIYEOK-YO-SSANGKIYEOK
-0x8277 0xAD53 # HANGUL SYLLABLE KIYEOK-YO-KIYEOKSIOS
-0x8278 0xAD55 # HANGUL SYLLABLE KIYEOK-YO-NIEUNCIEUC
-0x8279 0xAD56 # HANGUL SYLLABLE KIYEOK-YO-NIEUNHIEUH
-0x827A 0xAD57 # HANGUL SYLLABLE KIYEOK-YO-TIKEUT
-0x8281 0xAD59 # HANGUL SYLLABLE KIYEOK-YO-RIEULKIYEOK
-0x8282 0xAD5A # HANGUL SYLLABLE KIYEOK-YO-RIEULMIEUM
-0x8283 0xAD5B # HANGUL SYLLABLE KIYEOK-YO-RIEULPIEUP
-0x8284 0xAD5C # HANGUL SYLLABLE KIYEOK-YO-RIEULSIOS
-0x8285 0xAD5D # HANGUL SYLLABLE KIYEOK-YO-RIEULTHIEUTH
-0x8286 0xAD5E # HANGUL SYLLABLE KIYEOK-YO-RIEULPHIEUPH
-0x8287 0xAD5F # HANGUL SYLLABLE KIYEOK-YO-RIEULHIEUH
-0x8288 0xAD60 # HANGUL SYLLABLE KIYEOK-YO-MIEUM
-0x8289 0xAD62 # HANGUL SYLLABLE KIYEOK-YO-PIEUPSIOS
-0x828A 0xAD64 # HANGUL SYLLABLE KIYEOK-YO-SSANGSIOS
-0x828B 0xAD65 # HANGUL SYLLABLE KIYEOK-YO-IEUNG
-0x828C 0xAD66 # HANGUL SYLLABLE KIYEOK-YO-CIEUC
-0x828D 0xAD67 # HANGUL SYLLABLE KIYEOK-YO-CHIEUCH
-0x828E 0xAD68 # HANGUL SYLLABLE KIYEOK-YO-KHIEUKH
-0x828F 0xAD69 # HANGUL SYLLABLE KIYEOK-YO-THIEUTH
-0x8290 0xAD6A # HANGUL SYLLABLE KIYEOK-YO-PHIEUPH
-0x8291 0xAD6B # HANGUL SYLLABLE KIYEOK-YO-HIEUH
-0x8292 0xAD6E # HANGUL SYLLABLE KIYEOK-U-SSANGKIYEOK
-0x8293 0xAD6F # HANGUL SYLLABLE KIYEOK-U-KIYEOKSIOS
-0x8294 0xAD71 # HANGUL SYLLABLE KIYEOK-U-NIEUNCIEUC
-0x8295 0xAD72 # HANGUL SYLLABLE KIYEOK-U-NIEUNHIEUH
-0x8296 0xAD77 # HANGUL SYLLABLE KIYEOK-U-RIEULPIEUP
-0x8297 0xAD78 # HANGUL SYLLABLE KIYEOK-U-RIEULSIOS
-0x8298 0xAD79 # HANGUL SYLLABLE KIYEOK-U-RIEULTHIEUTH
-0x8299 0xAD7A # HANGUL SYLLABLE KIYEOK-U-RIEULPHIEUPH
-0x829A 0xAD7E # HANGUL SYLLABLE KIYEOK-U-PIEUPSIOS
-0x829B 0xAD80 # HANGUL SYLLABLE KIYEOK-U-SSANGSIOS
-0x829C 0xAD83 # HANGUL SYLLABLE KIYEOK-U-CHIEUCH
-0x829D 0xAD84 # HANGUL SYLLABLE KIYEOK-U-KHIEUKH
-0x829E 0xAD85 # HANGUL SYLLABLE KIYEOK-U-THIEUTH
-0x829F 0xAD86 # HANGUL SYLLABLE KIYEOK-U-PHIEUPH
-0x82A0 0xAD87 # HANGUL SYLLABLE KIYEOK-U-HIEUH
-0x82A1 0xAD8A # HANGUL SYLLABLE KIYEOK-WEO-SSANGKIYEOK
-0x82A2 0xAD8B # HANGUL SYLLABLE KIYEOK-WEO-KIYEOKSIOS
-0x82A3 0xAD8D # HANGUL SYLLABLE KIYEOK-WEO-NIEUNCIEUC
-0x82A4 0xAD8E # HANGUL SYLLABLE KIYEOK-WEO-NIEUNHIEUH
-0x82A5 0xAD8F # HANGUL SYLLABLE KIYEOK-WEO-TIKEUT
-0x82A6 0xAD91 # HANGUL SYLLABLE KIYEOK-WEO-RIEULKIYEOK
-0x82A7 0xAD92 # HANGUL SYLLABLE KIYEOK-WEO-RIEULMIEUM
-0x82A8 0xAD93 # HANGUL SYLLABLE KIYEOK-WEO-RIEULPIEUP
-0x82A9 0xAD94 # HANGUL SYLLABLE KIYEOK-WEO-RIEULSIOS
-0x82AA 0xAD95 # HANGUL SYLLABLE KIYEOK-WEO-RIEULTHIEUTH
-0x82AB 0xAD96 # HANGUL SYLLABLE KIYEOK-WEO-RIEULPHIEUPH
-0x82AC 0xAD97 # HANGUL SYLLABLE KIYEOK-WEO-RIEULHIEUH
-0x82AD 0xAD98 # HANGUL SYLLABLE KIYEOK-WEO-MIEUM
-0x82AE 0xAD99 # HANGUL SYLLABLE KIYEOK-WEO-PIEUP
-0x82AF 0xAD9A # HANGUL SYLLABLE KIYEOK-WEO-PIEUPSIOS
-0x82B0 0xAD9B # HANGUL SYLLABLE KIYEOK-WEO-SIOS
-0x82B1 0xAD9E # HANGUL SYLLABLE KIYEOK-WEO-CIEUC
-0x82B2 0xAD9F # HANGUL SYLLABLE KIYEOK-WEO-CHIEUCH
-0x82B3 0xADA0 # HANGUL SYLLABLE KIYEOK-WEO-KHIEUKH
-0x82B4 0xADA1 # HANGUL SYLLABLE KIYEOK-WEO-THIEUTH
-0x82B5 0xADA2 # HANGUL SYLLABLE KIYEOK-WEO-PHIEUPH
-0x82B6 0xADA3 # HANGUL SYLLABLE KIYEOK-WEO-HIEUH
-0x82B7 0xADA5 # HANGUL SYLLABLE KIYEOK-WE-KIYEOK
-0x82B8 0xADA6 # HANGUL SYLLABLE KIYEOK-WE-SSANGKIYEOK
-0x82B9 0xADA7 # HANGUL SYLLABLE KIYEOK-WE-KIYEOKSIOS
-0x82BA 0xADA8 # HANGUL SYLLABLE KIYEOK-WE-NIEUN
-0x82BB 0xADA9 # HANGUL SYLLABLE KIYEOK-WE-NIEUNCIEUC
-0x82BC 0xADAA # HANGUL SYLLABLE KIYEOK-WE-NIEUNHIEUH
-0x82BD 0xADAB # HANGUL SYLLABLE KIYEOK-WE-TIKEUT
-0x82BE 0xADAC # HANGUL SYLLABLE KIYEOK-WE-RIEUL
-0x82BF 0xADAD # HANGUL SYLLABLE KIYEOK-WE-RIEULKIYEOK
-0x82C0 0xADAE # HANGUL SYLLABLE KIYEOK-WE-RIEULMIEUM
-0x82C1 0xADAF # HANGUL SYLLABLE KIYEOK-WE-RIEULPIEUP
-0x82C2 0xADB0 # HANGUL SYLLABLE KIYEOK-WE-RIEULSIOS
-0x82C3 0xADB1 # HANGUL SYLLABLE KIYEOK-WE-RIEULTHIEUTH
-0x82C4 0xADB2 # HANGUL SYLLABLE KIYEOK-WE-RIEULPHIEUPH
-0x82C5 0xADB3 # HANGUL SYLLABLE KIYEOK-WE-RIEULHIEUH
-0x82C6 0xADB4 # HANGUL SYLLABLE KIYEOK-WE-MIEUM
-0x82C7 0xADB5 # HANGUL SYLLABLE KIYEOK-WE-PIEUP
-0x82C8 0xADB6 # HANGUL SYLLABLE KIYEOK-WE-PIEUPSIOS
-0x82C9 0xADB8 # HANGUL SYLLABLE KIYEOK-WE-SSANGSIOS
-0x82CA 0xADB9 # HANGUL SYLLABLE KIYEOK-WE-IEUNG
-0x82CB 0xADBA # HANGUL SYLLABLE KIYEOK-WE-CIEUC
-0x82CC 0xADBB # HANGUL SYLLABLE KIYEOK-WE-CHIEUCH
-0x82CD 0xADBC # HANGUL SYLLABLE KIYEOK-WE-KHIEUKH
-0x82CE 0xADBD # HANGUL SYLLABLE KIYEOK-WE-THIEUTH
-0x82CF 0xADBE # HANGUL SYLLABLE KIYEOK-WE-PHIEUPH
-0x82D0 0xADBF # HANGUL SYLLABLE KIYEOK-WE-HIEUH
-0x82D1 0xADC2 # HANGUL SYLLABLE KIYEOK-WI-SSANGKIYEOK
-0x82D2 0xADC3 # HANGUL SYLLABLE KIYEOK-WI-KIYEOKSIOS
-0x82D3 0xADC5 # HANGUL SYLLABLE KIYEOK-WI-NIEUNCIEUC
-0x82D4 0xADC6 # HANGUL SYLLABLE KIYEOK-WI-NIEUNHIEUH
-0x82D5 0xADC7 # HANGUL SYLLABLE KIYEOK-WI-TIKEUT
-0x82D6 0xADC9 # HANGUL SYLLABLE KIYEOK-WI-RIEULKIYEOK
-0x82D7 0xADCA # HANGUL SYLLABLE KIYEOK-WI-RIEULMIEUM
-0x82D8 0xADCB # HANGUL SYLLABLE KIYEOK-WI-RIEULPIEUP
-0x82D9 0xADCC # HANGUL SYLLABLE KIYEOK-WI-RIEULSIOS
-0x82DA 0xADCD # HANGUL SYLLABLE KIYEOK-WI-RIEULTHIEUTH
-0x82DB 0xADCE # HANGUL SYLLABLE KIYEOK-WI-RIEULPHIEUPH
-0x82DC 0xADCF # HANGUL SYLLABLE KIYEOK-WI-RIEULHIEUH
-0x82DD 0xADD2 # HANGUL SYLLABLE KIYEOK-WI-PIEUPSIOS
-0x82DE 0xADD4 # HANGUL SYLLABLE KIYEOK-WI-SSANGSIOS
-0x82DF 0xADD5 # HANGUL SYLLABLE KIYEOK-WI-IEUNG
-0x82E0 0xADD6 # HANGUL SYLLABLE KIYEOK-WI-CIEUC
-0x82E1 0xADD7 # HANGUL SYLLABLE KIYEOK-WI-CHIEUCH
-0x82E2 0xADD8 # HANGUL SYLLABLE KIYEOK-WI-KHIEUKH
-0x82E3 0xADD9 # HANGUL SYLLABLE KIYEOK-WI-THIEUTH
-0x82E4 0xADDA # HANGUL SYLLABLE KIYEOK-WI-PHIEUPH
-0x82E5 0xADDB # HANGUL SYLLABLE KIYEOK-WI-HIEUH
-0x82E6 0xADDD # HANGUL SYLLABLE KIYEOK-YU-KIYEOK
-0x82E7 0xADDE # HANGUL SYLLABLE KIYEOK-YU-SSANGKIYEOK
-0x82E8 0xADDF # HANGUL SYLLABLE KIYEOK-YU-KIYEOKSIOS
-0x82E9 0xADE1 # HANGUL SYLLABLE KIYEOK-YU-NIEUNCIEUC
-0x82EA 0xADE2 # HANGUL SYLLABLE KIYEOK-YU-NIEUNHIEUH
-0x82EB 0xADE3 # HANGUL SYLLABLE KIYEOK-YU-TIKEUT
-0x82EC 0xADE5 # HANGUL SYLLABLE KIYEOK-YU-RIEULKIYEOK
-0x82ED 0xADE6 # HANGUL SYLLABLE KIYEOK-YU-RIEULMIEUM
-0x82EE 0xADE7 # HANGUL SYLLABLE KIYEOK-YU-RIEULPIEUP
-0x82EF 0xADE8 # HANGUL SYLLABLE KIYEOK-YU-RIEULSIOS
-0x82F0 0xADE9 # HANGUL SYLLABLE KIYEOK-YU-RIEULTHIEUTH
-0x82F1 0xADEA # HANGUL SYLLABLE KIYEOK-YU-RIEULPHIEUPH
-0x82F2 0xADEB # HANGUL SYLLABLE KIYEOK-YU-RIEULHIEUH
-0x82F3 0xADEC # HANGUL SYLLABLE KIYEOK-YU-MIEUM
-0x82F4 0xADED # HANGUL SYLLABLE KIYEOK-YU-PIEUP
-0x82F5 0xADEE # HANGUL SYLLABLE KIYEOK-YU-PIEUPSIOS
-0x82F6 0xADEF # HANGUL SYLLABLE KIYEOK-YU-SIOS
-0x82F7 0xADF0 # HANGUL SYLLABLE KIYEOK-YU-SSANGSIOS
-0x82F8 0xADF1 # HANGUL SYLLABLE KIYEOK-YU-IEUNG
-0x82F9 0xADF2 # HANGUL SYLLABLE KIYEOK-YU-CIEUC
-0x82FA 0xADF3 # HANGUL SYLLABLE KIYEOK-YU-CHIEUCH
-0x82FB 0xADF4 # HANGUL SYLLABLE KIYEOK-YU-KHIEUKH
-0x82FC 0xADF5 # HANGUL SYLLABLE KIYEOK-YU-THIEUTH
-0x82FD 0xADF6 # HANGUL SYLLABLE KIYEOK-YU-PHIEUPH
-0x82FE 0xADF7 # HANGUL SYLLABLE KIYEOK-YU-HIEUH
-0x8341 0xADFA # HANGUL SYLLABLE KIYEOK-EU-SSANGKIYEOK
-0x8342 0xADFB # HANGUL SYLLABLE KIYEOK-EU-KIYEOKSIOS
-0x8343 0xADFD # HANGUL SYLLABLE KIYEOK-EU-NIEUNCIEUC
-0x8344 0xADFE # HANGUL SYLLABLE KIYEOK-EU-NIEUNHIEUH
-0x8345 0xAE02 # HANGUL SYLLABLE KIYEOK-EU-RIEULMIEUM
-0x8346 0xAE03 # HANGUL SYLLABLE KIYEOK-EU-RIEULPIEUP
-0x8347 0xAE04 # HANGUL SYLLABLE KIYEOK-EU-RIEULSIOS
-0x8348 0xAE05 # HANGUL SYLLABLE KIYEOK-EU-RIEULTHIEUTH
-0x8349 0xAE06 # HANGUL SYLLABLE KIYEOK-EU-RIEULPHIEUPH
-0x834A 0xAE07 # HANGUL SYLLABLE KIYEOK-EU-RIEULHIEUH
-0x834B 0xAE0A # HANGUL SYLLABLE KIYEOK-EU-PIEUPSIOS
-0x834C 0xAE0C # HANGUL SYLLABLE KIYEOK-EU-SSANGSIOS
-0x834D 0xAE0E # HANGUL SYLLABLE KIYEOK-EU-CIEUC
-0x834E 0xAE0F # HANGUL SYLLABLE KIYEOK-EU-CHIEUCH
-0x834F 0xAE10 # HANGUL SYLLABLE KIYEOK-EU-KHIEUKH
-0x8350 0xAE11 # HANGUL SYLLABLE KIYEOK-EU-THIEUTH
-0x8351 0xAE12 # HANGUL SYLLABLE KIYEOK-EU-PHIEUPH
-0x8352 0xAE13 # HANGUL SYLLABLE KIYEOK-EU-HIEUH
-0x8353 0xAE15 # HANGUL SYLLABLE KIYEOK-YI-KIYEOK
-0x8354 0xAE16 # HANGUL SYLLABLE KIYEOK-YI-SSANGKIYEOK
-0x8355 0xAE17 # HANGUL SYLLABLE KIYEOK-YI-KIYEOKSIOS
-0x8356 0xAE18 # HANGUL SYLLABLE KIYEOK-YI-NIEUN
-0x8357 0xAE19 # HANGUL SYLLABLE KIYEOK-YI-NIEUNCIEUC
-0x8358 0xAE1A # HANGUL SYLLABLE KIYEOK-YI-NIEUNHIEUH
-0x8359 0xAE1B # HANGUL SYLLABLE KIYEOK-YI-TIKEUT
-0x835A 0xAE1C # HANGUL SYLLABLE KIYEOK-YI-RIEUL
-0x8361 0xAE1D # HANGUL SYLLABLE KIYEOK-YI-RIEULKIYEOK
-0x8362 0xAE1E # HANGUL SYLLABLE KIYEOK-YI-RIEULMIEUM
-0x8363 0xAE1F # HANGUL SYLLABLE KIYEOK-YI-RIEULPIEUP
-0x8364 0xAE20 # HANGUL SYLLABLE KIYEOK-YI-RIEULSIOS
-0x8365 0xAE21 # HANGUL SYLLABLE KIYEOK-YI-RIEULTHIEUTH
-0x8366 0xAE22 # HANGUL SYLLABLE KIYEOK-YI-RIEULPHIEUPH
-0x8367 0xAE23 # HANGUL SYLLABLE KIYEOK-YI-RIEULHIEUH
-0x8368 0xAE24 # HANGUL SYLLABLE KIYEOK-YI-MIEUM
-0x8369 0xAE25 # HANGUL SYLLABLE KIYEOK-YI-PIEUP
-0x836A 0xAE26 # HANGUL SYLLABLE KIYEOK-YI-PIEUPSIOS
-0x836B 0xAE27 # HANGUL SYLLABLE KIYEOK-YI-SIOS
-0x836C 0xAE28 # HANGUL SYLLABLE KIYEOK-YI-SSANGSIOS
-0x836D 0xAE29 # HANGUL SYLLABLE KIYEOK-YI-IEUNG
-0x836E 0xAE2A # HANGUL SYLLABLE KIYEOK-YI-CIEUC
-0x836F 0xAE2B # HANGUL SYLLABLE KIYEOK-YI-CHIEUCH
-0x8370 0xAE2C # HANGUL SYLLABLE KIYEOK-YI-KHIEUKH
-0x8371 0xAE2D # HANGUL SYLLABLE KIYEOK-YI-THIEUTH
-0x8372 0xAE2E # HANGUL SYLLABLE KIYEOK-YI-PHIEUPH
-0x8373 0xAE2F # HANGUL SYLLABLE KIYEOK-YI-HIEUH
-0x8374 0xAE32 # HANGUL SYLLABLE KIYEOK-I-SSANGKIYEOK
-0x8375 0xAE33 # HANGUL SYLLABLE KIYEOK-I-KIYEOKSIOS
-0x8376 0xAE35 # HANGUL SYLLABLE KIYEOK-I-NIEUNCIEUC
-0x8377 0xAE36 # HANGUL SYLLABLE KIYEOK-I-NIEUNHIEUH
-0x8378 0xAE39 # HANGUL SYLLABLE KIYEOK-I-RIEULKIYEOK
-0x8379 0xAE3B # HANGUL SYLLABLE KIYEOK-I-RIEULPIEUP
-0x837A 0xAE3C # HANGUL SYLLABLE KIYEOK-I-RIEULSIOS
-0x8381 0xAE3D # HANGUL SYLLABLE KIYEOK-I-RIEULTHIEUTH
-0x8382 0xAE3E # HANGUL SYLLABLE KIYEOK-I-RIEULPHIEUPH
-0x8383 0xAE3F # HANGUL SYLLABLE KIYEOK-I-RIEULHIEUH
-0x8384 0xAE42 # HANGUL SYLLABLE KIYEOK-I-PIEUPSIOS
-0x8385 0xAE44 # HANGUL SYLLABLE KIYEOK-I-SSANGSIOS
-0x8386 0xAE47 # HANGUL SYLLABLE KIYEOK-I-CHIEUCH
-0x8387 0xAE48 # HANGUL SYLLABLE KIYEOK-I-KHIEUKH
-0x8388 0xAE49 # HANGUL SYLLABLE KIYEOK-I-THIEUTH
-0x8389 0xAE4B # HANGUL SYLLABLE KIYEOK-I-HIEUH
-0x838A 0xAE4F # HANGUL SYLLABLE SSANGKIYEOK-A-KIYEOKSIOS
-0x838B 0xAE51 # HANGUL SYLLABLE SSANGKIYEOK-A-NIEUNCIEUC
-0x838C 0xAE52 # HANGUL SYLLABLE SSANGKIYEOK-A-NIEUNHIEUH
-0x838D 0xAE53 # HANGUL SYLLABLE SSANGKIYEOK-A-TIKEUT
-0x838E 0xAE55 # HANGUL SYLLABLE SSANGKIYEOK-A-RIEULKIYEOK
-0x838F 0xAE57 # HANGUL SYLLABLE SSANGKIYEOK-A-RIEULPIEUP
-0x8390 0xAE58 # HANGUL SYLLABLE SSANGKIYEOK-A-RIEULSIOS
-0x8391 0xAE59 # HANGUL SYLLABLE SSANGKIYEOK-A-RIEULTHIEUTH
-0x8392 0xAE5A # HANGUL SYLLABLE SSANGKIYEOK-A-RIEULPHIEUPH
-0x8393 0xAE5B # HANGUL SYLLABLE SSANGKIYEOK-A-RIEULHIEUH
-0x8394 0xAE5E # HANGUL SYLLABLE SSANGKIYEOK-A-PIEUPSIOS
-0x8395 0xAE62 # HANGUL SYLLABLE SSANGKIYEOK-A-CIEUC
-0x8396 0xAE63 # HANGUL SYLLABLE SSANGKIYEOK-A-CHIEUCH
-0x8397 0xAE64 # HANGUL SYLLABLE SSANGKIYEOK-A-KHIEUKH
-0x8398 0xAE66 # HANGUL SYLLABLE SSANGKIYEOK-A-PHIEUPH
-0x8399 0xAE67 # HANGUL SYLLABLE SSANGKIYEOK-A-HIEUH
-0x839A 0xAE6A # HANGUL SYLLABLE SSANGKIYEOK-AE-SSANGKIYEOK
-0x839B 0xAE6B # HANGUL SYLLABLE SSANGKIYEOK-AE-KIYEOKSIOS
-0x839C 0xAE6D # HANGUL SYLLABLE SSANGKIYEOK-AE-NIEUNCIEUC
-0x839D 0xAE6E # HANGUL SYLLABLE SSANGKIYEOK-AE-NIEUNHIEUH
-0x839E 0xAE6F # HANGUL SYLLABLE SSANGKIYEOK-AE-TIKEUT
-0x839F 0xAE71 # HANGUL SYLLABLE SSANGKIYEOK-AE-RIEULKIYEOK
-0x83A0 0xAE72 # HANGUL SYLLABLE SSANGKIYEOK-AE-RIEULMIEUM
-0x83A1 0xAE73 # HANGUL SYLLABLE SSANGKIYEOK-AE-RIEULPIEUP
-0x83A2 0xAE74 # HANGUL SYLLABLE SSANGKIYEOK-AE-RIEULSIOS
-0x83A3 0xAE75 # HANGUL SYLLABLE SSANGKIYEOK-AE-RIEULTHIEUTH
-0x83A4 0xAE76 # HANGUL SYLLABLE SSANGKIYEOK-AE-RIEULPHIEUPH
-0x83A5 0xAE77 # HANGUL SYLLABLE SSANGKIYEOK-AE-RIEULHIEUH
-0x83A6 0xAE7A # HANGUL SYLLABLE SSANGKIYEOK-AE-PIEUPSIOS
-0x83A7 0xAE7E # HANGUL SYLLABLE SSANGKIYEOK-AE-CIEUC
-0x83A8 0xAE7F # HANGUL SYLLABLE SSANGKIYEOK-AE-CHIEUCH
-0x83A9 0xAE80 # HANGUL SYLLABLE SSANGKIYEOK-AE-KHIEUKH
-0x83AA 0xAE81 # HANGUL SYLLABLE SSANGKIYEOK-AE-THIEUTH
-0x83AB 0xAE82 # HANGUL SYLLABLE SSANGKIYEOK-AE-PHIEUPH
-0x83AC 0xAE83 # HANGUL SYLLABLE SSANGKIYEOK-AE-HIEUH
-0x83AD 0xAE86 # HANGUL SYLLABLE SSANGKIYEOK-YA-SSANGKIYEOK
-0x83AE 0xAE87 # HANGUL SYLLABLE SSANGKIYEOK-YA-KIYEOKSIOS
-0x83AF 0xAE88 # HANGUL SYLLABLE SSANGKIYEOK-YA-NIEUN
-0x83B0 0xAE89 # HANGUL SYLLABLE SSANGKIYEOK-YA-NIEUNCIEUC
-0x83B1 0xAE8A # HANGUL SYLLABLE SSANGKIYEOK-YA-NIEUNHIEUH
-0x83B2 0xAE8B # HANGUL SYLLABLE SSANGKIYEOK-YA-TIKEUT
-0x83B3 0xAE8D # HANGUL SYLLABLE SSANGKIYEOK-YA-RIEULKIYEOK
-0x83B4 0xAE8E # HANGUL SYLLABLE SSANGKIYEOK-YA-RIEULMIEUM
-0x83B5 0xAE8F # HANGUL SYLLABLE SSANGKIYEOK-YA-RIEULPIEUP
-0x83B6 0xAE90 # HANGUL SYLLABLE SSANGKIYEOK-YA-RIEULSIOS
-0x83B7 0xAE91 # HANGUL SYLLABLE SSANGKIYEOK-YA-RIEULTHIEUTH
-0x83B8 0xAE92 # HANGUL SYLLABLE SSANGKIYEOK-YA-RIEULPHIEUPH
-0x83B9 0xAE93 # HANGUL SYLLABLE SSANGKIYEOK-YA-RIEULHIEUH
-0x83BA 0xAE94 # HANGUL SYLLABLE SSANGKIYEOK-YA-MIEUM
-0x83BB 0xAE95 # HANGUL SYLLABLE SSANGKIYEOK-YA-PIEUP
-0x83BC 0xAE96 # HANGUL SYLLABLE SSANGKIYEOK-YA-PIEUPSIOS
-0x83BD 0xAE97 # HANGUL SYLLABLE SSANGKIYEOK-YA-SIOS
-0x83BE 0xAE98 # HANGUL SYLLABLE SSANGKIYEOK-YA-SSANGSIOS
-0x83BF 0xAE99 # HANGUL SYLLABLE SSANGKIYEOK-YA-IEUNG
-0x83C0 0xAE9A # HANGUL SYLLABLE SSANGKIYEOK-YA-CIEUC
-0x83C1 0xAE9B # HANGUL SYLLABLE SSANGKIYEOK-YA-CHIEUCH
-0x83C2 0xAE9C # HANGUL SYLLABLE SSANGKIYEOK-YA-KHIEUKH
-0x83C3 0xAE9D # HANGUL SYLLABLE SSANGKIYEOK-YA-THIEUTH
-0x83C4 0xAE9E # HANGUL SYLLABLE SSANGKIYEOK-YA-PHIEUPH
-0x83C5 0xAE9F # HANGUL SYLLABLE SSANGKIYEOK-YA-HIEUH
-0x83C6 0xAEA0 # HANGUL SYLLABLE SSANGKIYEOK-YAE
-0x83C7 0xAEA1 # HANGUL SYLLABLE SSANGKIYEOK-YAE-KIYEOK
-0x83C8 0xAEA2 # HANGUL SYLLABLE SSANGKIYEOK-YAE-SSANGKIYEOK
-0x83C9 0xAEA3 # HANGUL SYLLABLE SSANGKIYEOK-YAE-KIYEOKSIOS
-0x83CA 0xAEA4 # HANGUL SYLLABLE SSANGKIYEOK-YAE-NIEUN
-0x83CB 0xAEA5 # HANGUL SYLLABLE SSANGKIYEOK-YAE-NIEUNCIEUC
-0x83CC 0xAEA6 # HANGUL SYLLABLE SSANGKIYEOK-YAE-NIEUNHIEUH
-0x83CD 0xAEA7 # HANGUL SYLLABLE SSANGKIYEOK-YAE-TIKEUT
-0x83CE 0xAEA8 # HANGUL SYLLABLE SSANGKIYEOK-YAE-RIEUL
-0x83CF 0xAEA9 # HANGUL SYLLABLE SSANGKIYEOK-YAE-RIEULKIYEOK
-0x83D0 0xAEAA # HANGUL SYLLABLE SSANGKIYEOK-YAE-RIEULMIEUM
-0x83D1 0xAEAB # HANGUL SYLLABLE SSANGKIYEOK-YAE-RIEULPIEUP
-0x83D2 0xAEAC # HANGUL SYLLABLE SSANGKIYEOK-YAE-RIEULSIOS
-0x83D3 0xAEAD # HANGUL SYLLABLE SSANGKIYEOK-YAE-RIEULTHIEUTH
-0x83D4 0xAEAE # HANGUL SYLLABLE SSANGKIYEOK-YAE-RIEULPHIEUPH
-0x83D5 0xAEAF # HANGUL SYLLABLE SSANGKIYEOK-YAE-RIEULHIEUH
-0x83D6 0xAEB0 # HANGUL SYLLABLE SSANGKIYEOK-YAE-MIEUM
-0x83D7 0xAEB1 # HANGUL SYLLABLE SSANGKIYEOK-YAE-PIEUP
-0x83D8 0xAEB2 # HANGUL SYLLABLE SSANGKIYEOK-YAE-PIEUPSIOS
-0x83D9 0xAEB3 # HANGUL SYLLABLE SSANGKIYEOK-YAE-SIOS
-0x83DA 0xAEB4 # HANGUL SYLLABLE SSANGKIYEOK-YAE-SSANGSIOS
-0x83DB 0xAEB5 # HANGUL SYLLABLE SSANGKIYEOK-YAE-IEUNG
-0x83DC 0xAEB6 # HANGUL SYLLABLE SSANGKIYEOK-YAE-CIEUC
-0x83DD 0xAEB7 # HANGUL SYLLABLE SSANGKIYEOK-YAE-CHIEUCH
-0x83DE 0xAEB8 # HANGUL SYLLABLE SSANGKIYEOK-YAE-KHIEUKH
-0x83DF 0xAEB9 # HANGUL SYLLABLE SSANGKIYEOK-YAE-THIEUTH
-0x83E0 0xAEBA # HANGUL SYLLABLE SSANGKIYEOK-YAE-PHIEUPH
-0x83E1 0xAEBB # HANGUL SYLLABLE SSANGKIYEOK-YAE-HIEUH
-0x83E2 0xAEBF # HANGUL SYLLABLE SSANGKIYEOK-EO-KIYEOKSIOS
-0x83E3 0xAEC1 # HANGUL SYLLABLE SSANGKIYEOK-EO-NIEUNCIEUC
-0x83E4 0xAEC2 # HANGUL SYLLABLE SSANGKIYEOK-EO-NIEUNHIEUH
-0x83E5 0xAEC3 # HANGUL SYLLABLE SSANGKIYEOK-EO-TIKEUT
-0x83E6 0xAEC5 # HANGUL SYLLABLE SSANGKIYEOK-EO-RIEULKIYEOK
-0x83E7 0xAEC6 # HANGUL SYLLABLE SSANGKIYEOK-EO-RIEULMIEUM
-0x83E8 0xAEC7 # HANGUL SYLLABLE SSANGKIYEOK-EO-RIEULPIEUP
-0x83E9 0xAEC8 # HANGUL SYLLABLE SSANGKIYEOK-EO-RIEULSIOS
-0x83EA 0xAEC9 # HANGUL SYLLABLE SSANGKIYEOK-EO-RIEULTHIEUTH
-0x83EB 0xAECA # HANGUL SYLLABLE SSANGKIYEOK-EO-RIEULPHIEUPH
-0x83EC 0xAECB # HANGUL SYLLABLE SSANGKIYEOK-EO-RIEULHIEUH
-0x83ED 0xAECE # HANGUL SYLLABLE SSANGKIYEOK-EO-PIEUPSIOS
-0x83EE 0xAED2 # HANGUL SYLLABLE SSANGKIYEOK-EO-CIEUC
-0x83EF 0xAED3 # HANGUL SYLLABLE SSANGKIYEOK-EO-CHIEUCH
-0x83F0 0xAED4 # HANGUL SYLLABLE SSANGKIYEOK-EO-KHIEUKH
-0x83F1 0xAED5 # HANGUL SYLLABLE SSANGKIYEOK-EO-THIEUTH
-0x83F2 0xAED6 # HANGUL SYLLABLE SSANGKIYEOK-EO-PHIEUPH
-0x83F3 0xAED7 # HANGUL SYLLABLE SSANGKIYEOK-EO-HIEUH
-0x83F4 0xAEDA # HANGUL SYLLABLE SSANGKIYEOK-E-SSANGKIYEOK
-0x83F5 0xAEDB # HANGUL SYLLABLE SSANGKIYEOK-E-KIYEOKSIOS
-0x83F6 0xAEDD # HANGUL SYLLABLE SSANGKIYEOK-E-NIEUNCIEUC
-0x83F7 0xAEDE # HANGUL SYLLABLE SSANGKIYEOK-E-NIEUNHIEUH
-0x83F8 0xAEDF # HANGUL SYLLABLE SSANGKIYEOK-E-TIKEUT
-0x83F9 0xAEE0 # HANGUL SYLLABLE SSANGKIYEOK-E-RIEUL
-0x83FA 0xAEE1 # HANGUL SYLLABLE SSANGKIYEOK-E-RIEULKIYEOK
-0x83FB 0xAEE2 # HANGUL SYLLABLE SSANGKIYEOK-E-RIEULMIEUM
-0x83FC 0xAEE3 # HANGUL SYLLABLE SSANGKIYEOK-E-RIEULPIEUP
-0x83FD 0xAEE4 # HANGUL SYLLABLE SSANGKIYEOK-E-RIEULSIOS
-0x83FE 0xAEE5 # HANGUL SYLLABLE SSANGKIYEOK-E-RIEULTHIEUTH
-0x8441 0xAEE6 # HANGUL SYLLABLE SSANGKIYEOK-E-RIEULPHIEUPH
-0x8442 0xAEE7 # HANGUL SYLLABLE SSANGKIYEOK-E-RIEULHIEUH
-0x8443 0xAEE9 # HANGUL SYLLABLE SSANGKIYEOK-E-PIEUP
-0x8444 0xAEEA # HANGUL SYLLABLE SSANGKIYEOK-E-PIEUPSIOS
-0x8445 0xAEEC # HANGUL SYLLABLE SSANGKIYEOK-E-SSANGSIOS
-0x8446 0xAEEE # HANGUL SYLLABLE SSANGKIYEOK-E-CIEUC
-0x8447 0xAEEF # HANGUL SYLLABLE SSANGKIYEOK-E-CHIEUCH
-0x8448 0xAEF0 # HANGUL SYLLABLE SSANGKIYEOK-E-KHIEUKH
-0x8449 0xAEF1 # HANGUL SYLLABLE SSANGKIYEOK-E-THIEUTH
-0x844A 0xAEF2 # HANGUL SYLLABLE SSANGKIYEOK-E-PHIEUPH
-0x844B 0xAEF3 # HANGUL SYLLABLE SSANGKIYEOK-E-HIEUH
-0x844C 0xAEF5 # HANGUL SYLLABLE SSANGKIYEOK-YEO-KIYEOK
-0x844D 0xAEF6 # HANGUL SYLLABLE SSANGKIYEOK-YEO-SSANGKIYEOK
-0x844E 0xAEF7 # HANGUL SYLLABLE SSANGKIYEOK-YEO-KIYEOKSIOS
-0x844F 0xAEF9 # HANGUL SYLLABLE SSANGKIYEOK-YEO-NIEUNCIEUC
-0x8450 0xAEFA # HANGUL SYLLABLE SSANGKIYEOK-YEO-NIEUNHIEUH
-0x8451 0xAEFB # HANGUL SYLLABLE SSANGKIYEOK-YEO-TIKEUT
-0x8452 0xAEFD # HANGUL SYLLABLE SSANGKIYEOK-YEO-RIEULKIYEOK
-0x8453 0xAEFE # HANGUL SYLLABLE SSANGKIYEOK-YEO-RIEULMIEUM
-0x8454 0xAEFF # HANGUL SYLLABLE SSANGKIYEOK-YEO-RIEULPIEUP
-0x8455 0xAF00 # HANGUL SYLLABLE SSANGKIYEOK-YEO-RIEULSIOS
-0x8456 0xAF01 # HANGUL SYLLABLE SSANGKIYEOK-YEO-RIEULTHIEUTH
-0x8457 0xAF02 # HANGUL SYLLABLE SSANGKIYEOK-YEO-RIEULPHIEUPH
-0x8458 0xAF03 # HANGUL SYLLABLE SSANGKIYEOK-YEO-RIEULHIEUH
-0x8459 0xAF04 # HANGUL SYLLABLE SSANGKIYEOK-YEO-MIEUM
-0x845A 0xAF05 # HANGUL SYLLABLE SSANGKIYEOK-YEO-PIEUP
-0x8461 0xAF06 # HANGUL SYLLABLE SSANGKIYEOK-YEO-PIEUPSIOS
-0x8462 0xAF09 # HANGUL SYLLABLE SSANGKIYEOK-YEO-IEUNG
-0x8463 0xAF0A # HANGUL SYLLABLE SSANGKIYEOK-YEO-CIEUC
-0x8464 0xAF0B # HANGUL SYLLABLE SSANGKIYEOK-YEO-CHIEUCH
-0x8465 0xAF0C # HANGUL SYLLABLE SSANGKIYEOK-YEO-KHIEUKH
-0x8466 0xAF0E # HANGUL SYLLABLE SSANGKIYEOK-YEO-PHIEUPH
-0x8467 0xAF0F # HANGUL SYLLABLE SSANGKIYEOK-YEO-HIEUH
-0x8468 0xAF11 # HANGUL SYLLABLE SSANGKIYEOK-YE-KIYEOK
-0x8469 0xAF12 # HANGUL SYLLABLE SSANGKIYEOK-YE-SSANGKIYEOK
-0x846A 0xAF13 # HANGUL SYLLABLE SSANGKIYEOK-YE-KIYEOKSIOS
-0x846B 0xAF14 # HANGUL SYLLABLE SSANGKIYEOK-YE-NIEUN
-0x846C 0xAF15 # HANGUL SYLLABLE SSANGKIYEOK-YE-NIEUNCIEUC
-0x846D 0xAF16 # HANGUL SYLLABLE SSANGKIYEOK-YE-NIEUNHIEUH
-0x846E 0xAF17 # HANGUL SYLLABLE SSANGKIYEOK-YE-TIKEUT
-0x846F 0xAF18 # HANGUL SYLLABLE SSANGKIYEOK-YE-RIEUL
-0x8470 0xAF19 # HANGUL SYLLABLE SSANGKIYEOK-YE-RIEULKIYEOK
-0x8471 0xAF1A # HANGUL SYLLABLE SSANGKIYEOK-YE-RIEULMIEUM
-0x8472 0xAF1B # HANGUL SYLLABLE SSANGKIYEOK-YE-RIEULPIEUP
-0x8473 0xAF1C # HANGUL SYLLABLE SSANGKIYEOK-YE-RIEULSIOS
-0x8474 0xAF1D # HANGUL SYLLABLE SSANGKIYEOK-YE-RIEULTHIEUTH
-0x8475 0xAF1E # HANGUL SYLLABLE SSANGKIYEOK-YE-RIEULPHIEUPH
-0x8476 0xAF1F # HANGUL SYLLABLE SSANGKIYEOK-YE-RIEULHIEUH
-0x8477 0xAF20 # HANGUL SYLLABLE SSANGKIYEOK-YE-MIEUM
-0x8478 0xAF21 # HANGUL SYLLABLE SSANGKIYEOK-YE-PIEUP
-0x8479 0xAF22 # HANGUL SYLLABLE SSANGKIYEOK-YE-PIEUPSIOS
-0x847A 0xAF23 # HANGUL SYLLABLE SSANGKIYEOK-YE-SIOS
-0x8481 0xAF24 # HANGUL SYLLABLE SSANGKIYEOK-YE-SSANGSIOS
-0x8482 0xAF25 # HANGUL SYLLABLE SSANGKIYEOK-YE-IEUNG
-0x8483 0xAF26 # HANGUL SYLLABLE SSANGKIYEOK-YE-CIEUC
-0x8484 0xAF27 # HANGUL SYLLABLE SSANGKIYEOK-YE-CHIEUCH
-0x8485 0xAF28 # HANGUL SYLLABLE SSANGKIYEOK-YE-KHIEUKH
-0x8486 0xAF29 # HANGUL SYLLABLE SSANGKIYEOK-YE-THIEUTH
-0x8487 0xAF2A # HANGUL SYLLABLE SSANGKIYEOK-YE-PHIEUPH
-0x8488 0xAF2B # HANGUL SYLLABLE SSANGKIYEOK-YE-HIEUH
-0x8489 0xAF2E # HANGUL SYLLABLE SSANGKIYEOK-O-SSANGKIYEOK
-0x848A 0xAF2F # HANGUL SYLLABLE SSANGKIYEOK-O-KIYEOKSIOS
-0x848B 0xAF31 # HANGUL SYLLABLE SSANGKIYEOK-O-NIEUNCIEUC
-0x848C 0xAF33 # HANGUL SYLLABLE SSANGKIYEOK-O-TIKEUT
-0x848D 0xAF35 # HANGUL SYLLABLE SSANGKIYEOK-O-RIEULKIYEOK
-0x848E 0xAF36 # HANGUL SYLLABLE SSANGKIYEOK-O-RIEULMIEUM
-0x848F 0xAF37 # HANGUL SYLLABLE SSANGKIYEOK-O-RIEULPIEUP
-0x8490 0xAF38 # HANGUL SYLLABLE SSANGKIYEOK-O-RIEULSIOS
-0x8491 0xAF39 # HANGUL SYLLABLE SSANGKIYEOK-O-RIEULTHIEUTH
-0x8492 0xAF3A # HANGUL SYLLABLE SSANGKIYEOK-O-RIEULPHIEUPH
-0x8493 0xAF3B # HANGUL SYLLABLE SSANGKIYEOK-O-RIEULHIEUH
-0x8494 0xAF3E # HANGUL SYLLABLE SSANGKIYEOK-O-PIEUPSIOS
-0x8495 0xAF40 # HANGUL SYLLABLE SSANGKIYEOK-O-SSANGSIOS
-0x8496 0xAF44 # HANGUL SYLLABLE SSANGKIYEOK-O-KHIEUKH
-0x8497 0xAF45 # HANGUL SYLLABLE SSANGKIYEOK-O-THIEUTH
-0x8498 0xAF46 # HANGUL SYLLABLE SSANGKIYEOK-O-PHIEUPH
-0x8499 0xAF47 # HANGUL SYLLABLE SSANGKIYEOK-O-HIEUH
-0x849A 0xAF4A # HANGUL SYLLABLE SSANGKIYEOK-WA-SSANGKIYEOK
-0x849B 0xAF4B # HANGUL SYLLABLE SSANGKIYEOK-WA-KIYEOKSIOS
-0x849C 0xAF4C # HANGUL SYLLABLE SSANGKIYEOK-WA-NIEUN
-0x849D 0xAF4D # HANGUL SYLLABLE SSANGKIYEOK-WA-NIEUNCIEUC
-0x849E 0xAF4E # HANGUL SYLLABLE SSANGKIYEOK-WA-NIEUNHIEUH
-0x849F 0xAF4F # HANGUL SYLLABLE SSANGKIYEOK-WA-TIKEUT
-0x84A0 0xAF51 # HANGUL SYLLABLE SSANGKIYEOK-WA-RIEULKIYEOK
-0x84A1 0xAF52 # HANGUL SYLLABLE SSANGKIYEOK-WA-RIEULMIEUM
-0x84A2 0xAF53 # HANGUL SYLLABLE SSANGKIYEOK-WA-RIEULPIEUP
-0x84A3 0xAF54 # HANGUL SYLLABLE SSANGKIYEOK-WA-RIEULSIOS
-0x84A4 0xAF55 # HANGUL SYLLABLE SSANGKIYEOK-WA-RIEULTHIEUTH
-0x84A5 0xAF56 # HANGUL SYLLABLE SSANGKIYEOK-WA-RIEULPHIEUPH
-0x84A6 0xAF57 # HANGUL SYLLABLE SSANGKIYEOK-WA-RIEULHIEUH
-0x84A7 0xAF58 # HANGUL SYLLABLE SSANGKIYEOK-WA-MIEUM
-0x84A8 0xAF59 # HANGUL SYLLABLE SSANGKIYEOK-WA-PIEUP
-0x84A9 0xAF5A # HANGUL SYLLABLE SSANGKIYEOK-WA-PIEUPSIOS
-0x84AA 0xAF5B # HANGUL SYLLABLE SSANGKIYEOK-WA-SIOS
-0x84AB 0xAF5E # HANGUL SYLLABLE SSANGKIYEOK-WA-CIEUC
-0x84AC 0xAF5F # HANGUL SYLLABLE SSANGKIYEOK-WA-CHIEUCH
-0x84AD 0xAF60 # HANGUL SYLLABLE SSANGKIYEOK-WA-KHIEUKH
-0x84AE 0xAF61 # HANGUL SYLLABLE SSANGKIYEOK-WA-THIEUTH
-0x84AF 0xAF62 # HANGUL SYLLABLE SSANGKIYEOK-WA-PHIEUPH
-0x84B0 0xAF63 # HANGUL SYLLABLE SSANGKIYEOK-WA-HIEUH
-0x84B1 0xAF66 # HANGUL SYLLABLE SSANGKIYEOK-WAE-SSANGKIYEOK
-0x84B2 0xAF67 # HANGUL SYLLABLE SSANGKIYEOK-WAE-KIYEOKSIOS
-0x84B3 0xAF68 # HANGUL SYLLABLE SSANGKIYEOK-WAE-NIEUN
-0x84B4 0xAF69 # HANGUL SYLLABLE SSANGKIYEOK-WAE-NIEUNCIEUC
-0x84B5 0xAF6A # HANGUL SYLLABLE SSANGKIYEOK-WAE-NIEUNHIEUH
-0x84B6 0xAF6B # HANGUL SYLLABLE SSANGKIYEOK-WAE-TIKEUT
-0x84B7 0xAF6C # HANGUL SYLLABLE SSANGKIYEOK-WAE-RIEUL
-0x84B8 0xAF6D # HANGUL SYLLABLE SSANGKIYEOK-WAE-RIEULKIYEOK
-0x84B9 0xAF6E # HANGUL SYLLABLE SSANGKIYEOK-WAE-RIEULMIEUM
-0x84BA 0xAF6F # HANGUL SYLLABLE SSANGKIYEOK-WAE-RIEULPIEUP
-0x84BB 0xAF70 # HANGUL SYLLABLE SSANGKIYEOK-WAE-RIEULSIOS
-0x84BC 0xAF71 # HANGUL SYLLABLE SSANGKIYEOK-WAE-RIEULTHIEUTH
-0x84BD 0xAF72 # HANGUL SYLLABLE SSANGKIYEOK-WAE-RIEULPHIEUPH
-0x84BE 0xAF73 # HANGUL SYLLABLE SSANGKIYEOK-WAE-RIEULHIEUH
-0x84BF 0xAF74 # HANGUL SYLLABLE SSANGKIYEOK-WAE-MIEUM
-0x84C0 0xAF75 # HANGUL SYLLABLE SSANGKIYEOK-WAE-PIEUP
-0x84C1 0xAF76 # HANGUL SYLLABLE SSANGKIYEOK-WAE-PIEUPSIOS
-0x84C2 0xAF77 # HANGUL SYLLABLE SSANGKIYEOK-WAE-SIOS
-0x84C3 0xAF78 # HANGUL SYLLABLE SSANGKIYEOK-WAE-SSANGSIOS
-0x84C4 0xAF7A # HANGUL SYLLABLE SSANGKIYEOK-WAE-CIEUC
-0x84C5 0xAF7B # HANGUL SYLLABLE SSANGKIYEOK-WAE-CHIEUCH
-0x84C6 0xAF7C # HANGUL SYLLABLE SSANGKIYEOK-WAE-KHIEUKH
-0x84C7 0xAF7D # HANGUL SYLLABLE SSANGKIYEOK-WAE-THIEUTH
-0x84C8 0xAF7E # HANGUL SYLLABLE SSANGKIYEOK-WAE-PHIEUPH
-0x84C9 0xAF7F # HANGUL SYLLABLE SSANGKIYEOK-WAE-HIEUH
-0x84CA 0xAF81 # HANGUL SYLLABLE SSANGKIYEOK-OE-KIYEOK
-0x84CB 0xAF82 # HANGUL SYLLABLE SSANGKIYEOK-OE-SSANGKIYEOK
-0x84CC 0xAF83 # HANGUL SYLLABLE SSANGKIYEOK-OE-KIYEOKSIOS
-0x84CD 0xAF85 # HANGUL SYLLABLE SSANGKIYEOK-OE-NIEUNCIEUC
-0x84CE 0xAF86 # HANGUL SYLLABLE SSANGKIYEOK-OE-NIEUNHIEUH
-0x84CF 0xAF87 # HANGUL SYLLABLE SSANGKIYEOK-OE-TIKEUT
-0x84D0 0xAF89 # HANGUL SYLLABLE SSANGKIYEOK-OE-RIEULKIYEOK
-0x84D1 0xAF8A # HANGUL SYLLABLE SSANGKIYEOK-OE-RIEULMIEUM
-0x84D2 0xAF8B # HANGUL SYLLABLE SSANGKIYEOK-OE-RIEULPIEUP
-0x84D3 0xAF8C # HANGUL SYLLABLE SSANGKIYEOK-OE-RIEULSIOS
-0x84D4 0xAF8D # HANGUL SYLLABLE SSANGKIYEOK-OE-RIEULTHIEUTH
-0x84D5 0xAF8E # HANGUL SYLLABLE SSANGKIYEOK-OE-RIEULPHIEUPH
-0x84D6 0xAF8F # HANGUL SYLLABLE SSANGKIYEOK-OE-RIEULHIEUH
-0x84D7 0xAF92 # HANGUL SYLLABLE SSANGKIYEOK-OE-PIEUPSIOS
-0x84D8 0xAF93 # HANGUL SYLLABLE SSANGKIYEOK-OE-SIOS
-0x84D9 0xAF94 # HANGUL SYLLABLE SSANGKIYEOK-OE-SSANGSIOS
-0x84DA 0xAF96 # HANGUL SYLLABLE SSANGKIYEOK-OE-CIEUC
-0x84DB 0xAF97 # HANGUL SYLLABLE SSANGKIYEOK-OE-CHIEUCH
-0x84DC 0xAF98 # HANGUL SYLLABLE SSANGKIYEOK-OE-KHIEUKH
-0x84DD 0xAF99 # HANGUL SYLLABLE SSANGKIYEOK-OE-THIEUTH
-0x84DE 0xAF9A # HANGUL SYLLABLE SSANGKIYEOK-OE-PHIEUPH
-0x84DF 0xAF9B # HANGUL SYLLABLE SSANGKIYEOK-OE-HIEUH
-0x84E0 0xAF9D # HANGUL SYLLABLE SSANGKIYEOK-YO-KIYEOK
-0x84E1 0xAF9E # HANGUL SYLLABLE SSANGKIYEOK-YO-SSANGKIYEOK
-0x84E2 0xAF9F # HANGUL SYLLABLE SSANGKIYEOK-YO-KIYEOKSIOS
-0x84E3 0xAFA0 # HANGUL SYLLABLE SSANGKIYEOK-YO-NIEUN
-0x84E4 0xAFA1 # HANGUL SYLLABLE SSANGKIYEOK-YO-NIEUNCIEUC
-0x84E5 0xAFA2 # HANGUL SYLLABLE SSANGKIYEOK-YO-NIEUNHIEUH
-0x84E6 0xAFA3 # HANGUL SYLLABLE SSANGKIYEOK-YO-TIKEUT
-0x84E7 0xAFA4 # HANGUL SYLLABLE SSANGKIYEOK-YO-RIEUL
-0x84E8 0xAFA5 # HANGUL SYLLABLE SSANGKIYEOK-YO-RIEULKIYEOK
-0x84E9 0xAFA6 # HANGUL SYLLABLE SSANGKIYEOK-YO-RIEULMIEUM
-0x84EA 0xAFA7 # HANGUL SYLLABLE SSANGKIYEOK-YO-RIEULPIEUP
-0x84EB 0xAFA8 # HANGUL SYLLABLE SSANGKIYEOK-YO-RIEULSIOS
-0x84EC 0xAFA9 # HANGUL SYLLABLE SSANGKIYEOK-YO-RIEULTHIEUTH
-0x84ED 0xAFAA # HANGUL SYLLABLE SSANGKIYEOK-YO-RIEULPHIEUPH
-0x84EE 0xAFAB # HANGUL SYLLABLE SSANGKIYEOK-YO-RIEULHIEUH
-0x84EF 0xAFAC # HANGUL SYLLABLE SSANGKIYEOK-YO-MIEUM
-0x84F0 0xAFAD # HANGUL SYLLABLE SSANGKIYEOK-YO-PIEUP
-0x84F1 0xAFAE # HANGUL SYLLABLE SSANGKIYEOK-YO-PIEUPSIOS
-0x84F2 0xAFAF # HANGUL SYLLABLE SSANGKIYEOK-YO-SIOS
-0x84F3 0xAFB0 # HANGUL SYLLABLE SSANGKIYEOK-YO-SSANGSIOS
-0x84F4 0xAFB1 # HANGUL SYLLABLE SSANGKIYEOK-YO-IEUNG
-0x84F5 0xAFB2 # HANGUL SYLLABLE SSANGKIYEOK-YO-CIEUC
-0x84F6 0xAFB3 # HANGUL SYLLABLE SSANGKIYEOK-YO-CHIEUCH
-0x84F7 0xAFB4 # HANGUL SYLLABLE SSANGKIYEOK-YO-KHIEUKH
-0x84F8 0xAFB5 # HANGUL SYLLABLE SSANGKIYEOK-YO-THIEUTH
-0x84F9 0xAFB6 # HANGUL SYLLABLE SSANGKIYEOK-YO-PHIEUPH
-0x84FA 0xAFB7 # HANGUL SYLLABLE SSANGKIYEOK-YO-HIEUH
-0x84FB 0xAFBA # HANGUL SYLLABLE SSANGKIYEOK-U-SSANGKIYEOK
-0x84FC 0xAFBB # HANGUL SYLLABLE SSANGKIYEOK-U-KIYEOKSIOS
-0x84FD 0xAFBD # HANGUL SYLLABLE SSANGKIYEOK-U-NIEUNCIEUC
-0x84FE 0xAFBE # HANGUL SYLLABLE SSANGKIYEOK-U-NIEUNHIEUH
-0x8541 0xAFBF # HANGUL SYLLABLE SSANGKIYEOK-U-TIKEUT
-0x8542 0xAFC1 # HANGUL SYLLABLE SSANGKIYEOK-U-RIEULKIYEOK
-0x8543 0xAFC2 # HANGUL SYLLABLE SSANGKIYEOK-U-RIEULMIEUM
-0x8544 0xAFC3 # HANGUL SYLLABLE SSANGKIYEOK-U-RIEULPIEUP
-0x8545 0xAFC4 # HANGUL SYLLABLE SSANGKIYEOK-U-RIEULSIOS
-0x8546 0xAFC5 # HANGUL SYLLABLE SSANGKIYEOK-U-RIEULTHIEUTH
-0x8547 0xAFC6 # HANGUL SYLLABLE SSANGKIYEOK-U-RIEULPHIEUPH
-0x8548 0xAFCA # HANGUL SYLLABLE SSANGKIYEOK-U-PIEUPSIOS
-0x8549 0xAFCC # HANGUL SYLLABLE SSANGKIYEOK-U-SSANGSIOS
-0x854A 0xAFCF # HANGUL SYLLABLE SSANGKIYEOK-U-CHIEUCH
-0x854B 0xAFD0 # HANGUL SYLLABLE SSANGKIYEOK-U-KHIEUKH
-0x854C 0xAFD1 # HANGUL SYLLABLE SSANGKIYEOK-U-THIEUTH
-0x854D 0xAFD2 # HANGUL SYLLABLE SSANGKIYEOK-U-PHIEUPH
-0x854E 0xAFD3 # HANGUL SYLLABLE SSANGKIYEOK-U-HIEUH
-0x854F 0xAFD5 # HANGUL SYLLABLE SSANGKIYEOK-WEO-KIYEOK
-0x8550 0xAFD6 # HANGUL SYLLABLE SSANGKIYEOK-WEO-SSANGKIYEOK
-0x8551 0xAFD7 # HANGUL SYLLABLE SSANGKIYEOK-WEO-KIYEOKSIOS
-0x8552 0xAFD8 # HANGUL SYLLABLE SSANGKIYEOK-WEO-NIEUN
-0x8553 0xAFD9 # HANGUL SYLLABLE SSANGKIYEOK-WEO-NIEUNCIEUC
-0x8554 0xAFDA # HANGUL SYLLABLE SSANGKIYEOK-WEO-NIEUNHIEUH
-0x8555 0xAFDB # HANGUL SYLLABLE SSANGKIYEOK-WEO-TIKEUT
-0x8556 0xAFDD # HANGUL SYLLABLE SSANGKIYEOK-WEO-RIEULKIYEOK
-0x8557 0xAFDE # HANGUL SYLLABLE SSANGKIYEOK-WEO-RIEULMIEUM
-0x8558 0xAFDF # HANGUL SYLLABLE SSANGKIYEOK-WEO-RIEULPIEUP
-0x8559 0xAFE0 # HANGUL SYLLABLE SSANGKIYEOK-WEO-RIEULSIOS
-0x855A 0xAFE1 # HANGUL SYLLABLE SSANGKIYEOK-WEO-RIEULTHIEUTH
-0x8561 0xAFE2 # HANGUL SYLLABLE SSANGKIYEOK-WEO-RIEULPHIEUPH
-0x8562 0xAFE3 # HANGUL SYLLABLE SSANGKIYEOK-WEO-RIEULHIEUH
-0x8563 0xAFE4 # HANGUL SYLLABLE SSANGKIYEOK-WEO-MIEUM
-0x8564 0xAFE5 # HANGUL SYLLABLE SSANGKIYEOK-WEO-PIEUP
-0x8565 0xAFE6 # HANGUL SYLLABLE SSANGKIYEOK-WEO-PIEUPSIOS
-0x8566 0xAFE7 # HANGUL SYLLABLE SSANGKIYEOK-WEO-SIOS
-0x8567 0xAFEA # HANGUL SYLLABLE SSANGKIYEOK-WEO-CIEUC
-0x8568 0xAFEB # HANGUL SYLLABLE SSANGKIYEOK-WEO-CHIEUCH
-0x8569 0xAFEC # HANGUL SYLLABLE SSANGKIYEOK-WEO-KHIEUKH
-0x856A 0xAFED # HANGUL SYLLABLE SSANGKIYEOK-WEO-THIEUTH
-0x856B 0xAFEE # HANGUL SYLLABLE SSANGKIYEOK-WEO-PHIEUPH
-0x856C 0xAFEF # HANGUL SYLLABLE SSANGKIYEOK-WEO-HIEUH
-0x856D 0xAFF2 # HANGUL SYLLABLE SSANGKIYEOK-WE-SSANGKIYEOK
-0x856E 0xAFF3 # HANGUL SYLLABLE SSANGKIYEOK-WE-KIYEOKSIOS
-0x856F 0xAFF5 # HANGUL SYLLABLE SSANGKIYEOK-WE-NIEUNCIEUC
-0x8570 0xAFF6 # HANGUL SYLLABLE SSANGKIYEOK-WE-NIEUNHIEUH
-0x8571 0xAFF7 # HANGUL SYLLABLE SSANGKIYEOK-WE-TIKEUT
-0x8572 0xAFF9 # HANGUL SYLLABLE SSANGKIYEOK-WE-RIEULKIYEOK
-0x8573 0xAFFA # HANGUL SYLLABLE SSANGKIYEOK-WE-RIEULMIEUM
-0x8574 0xAFFB # HANGUL SYLLABLE SSANGKIYEOK-WE-RIEULPIEUP
-0x8575 0xAFFC # HANGUL SYLLABLE SSANGKIYEOK-WE-RIEULSIOS
-0x8576 0xAFFD # HANGUL SYLLABLE SSANGKIYEOK-WE-RIEULTHIEUTH
-0x8577 0xAFFE # HANGUL SYLLABLE SSANGKIYEOK-WE-RIEULPHIEUPH
-0x8578 0xAFFF # HANGUL SYLLABLE SSANGKIYEOK-WE-RIEULHIEUH
-0x8579 0xB002 # HANGUL SYLLABLE SSANGKIYEOK-WE-PIEUPSIOS
-0x857A 0xB003 # HANGUL SYLLABLE SSANGKIYEOK-WE-SIOS
-0x8581 0xB005 # HANGUL SYLLABLE SSANGKIYEOK-WE-IEUNG
-0x8582 0xB006 # HANGUL SYLLABLE SSANGKIYEOK-WE-CIEUC
-0x8583 0xB007 # HANGUL SYLLABLE SSANGKIYEOK-WE-CHIEUCH
-0x8584 0xB008 # HANGUL SYLLABLE SSANGKIYEOK-WE-KHIEUKH
-0x8585 0xB009 # HANGUL SYLLABLE SSANGKIYEOK-WE-THIEUTH
-0x8586 0xB00A # HANGUL SYLLABLE SSANGKIYEOK-WE-PHIEUPH
-0x8587 0xB00B # HANGUL SYLLABLE SSANGKIYEOK-WE-HIEUH
-0x8588 0xB00D # HANGUL SYLLABLE SSANGKIYEOK-WI-KIYEOK
-0x8589 0xB00E # HANGUL SYLLABLE SSANGKIYEOK-WI-SSANGKIYEOK
-0x858A 0xB00F # HANGUL SYLLABLE SSANGKIYEOK-WI-KIYEOKSIOS
-0x858B 0xB011 # HANGUL SYLLABLE SSANGKIYEOK-WI-NIEUNCIEUC
-0x858C 0xB012 # HANGUL SYLLABLE SSANGKIYEOK-WI-NIEUNHIEUH
-0x858D 0xB013 # HANGUL SYLLABLE SSANGKIYEOK-WI-TIKEUT
-0x858E 0xB015 # HANGUL SYLLABLE SSANGKIYEOK-WI-RIEULKIYEOK
-0x858F 0xB016 # HANGUL SYLLABLE SSANGKIYEOK-WI-RIEULMIEUM
-0x8590 0xB017 # HANGUL SYLLABLE SSANGKIYEOK-WI-RIEULPIEUP
-0x8591 0xB018 # HANGUL SYLLABLE SSANGKIYEOK-WI-RIEULSIOS
-0x8592 0xB019 # HANGUL SYLLABLE SSANGKIYEOK-WI-RIEULTHIEUTH
-0x8593 0xB01A # HANGUL SYLLABLE SSANGKIYEOK-WI-RIEULPHIEUPH
-0x8594 0xB01B # HANGUL SYLLABLE SSANGKIYEOK-WI-RIEULHIEUH
-0x8595 0xB01E # HANGUL SYLLABLE SSANGKIYEOK-WI-PIEUPSIOS
-0x8596 0xB01F # HANGUL SYLLABLE SSANGKIYEOK-WI-SIOS
-0x8597 0xB020 # HANGUL SYLLABLE SSANGKIYEOK-WI-SSANGSIOS
-0x8598 0xB021 # HANGUL SYLLABLE SSANGKIYEOK-WI-IEUNG
-0x8599 0xB022 # HANGUL SYLLABLE SSANGKIYEOK-WI-CIEUC
-0x859A 0xB023 # HANGUL SYLLABLE SSANGKIYEOK-WI-CHIEUCH
-0x859B 0xB024 # HANGUL SYLLABLE SSANGKIYEOK-WI-KHIEUKH
-0x859C 0xB025 # HANGUL SYLLABLE SSANGKIYEOK-WI-THIEUTH
-0x859D 0xB026 # HANGUL SYLLABLE SSANGKIYEOK-WI-PHIEUPH
-0x859E 0xB027 # HANGUL SYLLABLE SSANGKIYEOK-WI-HIEUH
-0x859F 0xB029 # HANGUL SYLLABLE SSANGKIYEOK-YU-KIYEOK
-0x85A0 0xB02A # HANGUL SYLLABLE SSANGKIYEOK-YU-SSANGKIYEOK
-0x85A1 0xB02B # HANGUL SYLLABLE SSANGKIYEOK-YU-KIYEOKSIOS
-0x85A2 0xB02C # HANGUL SYLLABLE SSANGKIYEOK-YU-NIEUN
-0x85A3 0xB02D # HANGUL SYLLABLE SSANGKIYEOK-YU-NIEUNCIEUC
-0x85A4 0xB02E # HANGUL SYLLABLE SSANGKIYEOK-YU-NIEUNHIEUH
-0x85A5 0xB02F # HANGUL SYLLABLE SSANGKIYEOK-YU-TIKEUT
-0x85A6 0xB030 # HANGUL SYLLABLE SSANGKIYEOK-YU-RIEUL
-0x85A7 0xB031 # HANGUL SYLLABLE SSANGKIYEOK-YU-RIEULKIYEOK
-0x85A8 0xB032 # HANGUL SYLLABLE SSANGKIYEOK-YU-RIEULMIEUM
-0x85A9 0xB033 # HANGUL SYLLABLE SSANGKIYEOK-YU-RIEULPIEUP
-0x85AA 0xB034 # HANGUL SYLLABLE SSANGKIYEOK-YU-RIEULSIOS
-0x85AB 0xB035 # HANGUL SYLLABLE SSANGKIYEOK-YU-RIEULTHIEUTH
-0x85AC 0xB036 # HANGUL SYLLABLE SSANGKIYEOK-YU-RIEULPHIEUPH
-0x85AD 0xB037 # HANGUL SYLLABLE SSANGKIYEOK-YU-RIEULHIEUH
-0x85AE 0xB038 # HANGUL SYLLABLE SSANGKIYEOK-YU-MIEUM
-0x85AF 0xB039 # HANGUL SYLLABLE SSANGKIYEOK-YU-PIEUP
-0x85B0 0xB03A # HANGUL SYLLABLE SSANGKIYEOK-YU-PIEUPSIOS
-0x85B1 0xB03B # HANGUL SYLLABLE SSANGKIYEOK-YU-SIOS
-0x85B2 0xB03C # HANGUL SYLLABLE SSANGKIYEOK-YU-SSANGSIOS
-0x85B3 0xB03D # HANGUL SYLLABLE SSANGKIYEOK-YU-IEUNG
-0x85B4 0xB03E # HANGUL SYLLABLE SSANGKIYEOK-YU-CIEUC
-0x85B5 0xB03F # HANGUL SYLLABLE SSANGKIYEOK-YU-CHIEUCH
-0x85B6 0xB040 # HANGUL SYLLABLE SSANGKIYEOK-YU-KHIEUKH
-0x85B7 0xB041 # HANGUL SYLLABLE SSANGKIYEOK-YU-THIEUTH
-0x85B8 0xB042 # HANGUL SYLLABLE SSANGKIYEOK-YU-PHIEUPH
-0x85B9 0xB043 # HANGUL SYLLABLE SSANGKIYEOK-YU-HIEUH
-0x85BA 0xB046 # HANGUL SYLLABLE SSANGKIYEOK-EU-SSANGKIYEOK
-0x85BB 0xB047 # HANGUL SYLLABLE SSANGKIYEOK-EU-KIYEOKSIOS
-0x85BC 0xB049 # HANGUL SYLLABLE SSANGKIYEOK-EU-NIEUNCIEUC
-0x85BD 0xB04B # HANGUL SYLLABLE SSANGKIYEOK-EU-TIKEUT
-0x85BE 0xB04D # HANGUL SYLLABLE SSANGKIYEOK-EU-RIEULKIYEOK
-0x85BF 0xB04F # HANGUL SYLLABLE SSANGKIYEOK-EU-RIEULPIEUP
-0x85C0 0xB050 # HANGUL SYLLABLE SSANGKIYEOK-EU-RIEULSIOS
-0x85C1 0xB051 # HANGUL SYLLABLE SSANGKIYEOK-EU-RIEULTHIEUTH
-0x85C2 0xB052 # HANGUL SYLLABLE SSANGKIYEOK-EU-RIEULPHIEUPH
-0x85C3 0xB056 # HANGUL SYLLABLE SSANGKIYEOK-EU-PIEUPSIOS
-0x85C4 0xB058 # HANGUL SYLLABLE SSANGKIYEOK-EU-SSANGSIOS
-0x85C5 0xB05A # HANGUL SYLLABLE SSANGKIYEOK-EU-CIEUC
-0x85C6 0xB05B # HANGUL SYLLABLE SSANGKIYEOK-EU-CHIEUCH
-0x85C7 0xB05C # HANGUL SYLLABLE SSANGKIYEOK-EU-KHIEUKH
-0x85C8 0xB05E # HANGUL SYLLABLE SSANGKIYEOK-EU-PHIEUPH
-0x85C9 0xB05F # HANGUL SYLLABLE SSANGKIYEOK-EU-HIEUH
-0x85CA 0xB060 # HANGUL SYLLABLE SSANGKIYEOK-YI
-0x85CB 0xB061 # HANGUL SYLLABLE SSANGKIYEOK-YI-KIYEOK
-0x85CC 0xB062 # HANGUL SYLLABLE SSANGKIYEOK-YI-SSANGKIYEOK
-0x85CD 0xB063 # HANGUL SYLLABLE SSANGKIYEOK-YI-KIYEOKSIOS
-0x85CE 0xB064 # HANGUL SYLLABLE SSANGKIYEOK-YI-NIEUN
-0x85CF 0xB065 # HANGUL SYLLABLE SSANGKIYEOK-YI-NIEUNCIEUC
-0x85D0 0xB066 # HANGUL SYLLABLE SSANGKIYEOK-YI-NIEUNHIEUH
-0x85D1 0xB067 # HANGUL SYLLABLE SSANGKIYEOK-YI-TIKEUT
-0x85D2 0xB068 # HANGUL SYLLABLE SSANGKIYEOK-YI-RIEUL
-0x85D3 0xB069 # HANGUL SYLLABLE SSANGKIYEOK-YI-RIEULKIYEOK
-0x85D4 0xB06A # HANGUL SYLLABLE SSANGKIYEOK-YI-RIEULMIEUM
-0x85D5 0xB06B # HANGUL SYLLABLE SSANGKIYEOK-YI-RIEULPIEUP
-0x85D6 0xB06C # HANGUL SYLLABLE SSANGKIYEOK-YI-RIEULSIOS
-0x85D7 0xB06D # HANGUL SYLLABLE SSANGKIYEOK-YI-RIEULTHIEUTH
-0x85D8 0xB06E # HANGUL SYLLABLE SSANGKIYEOK-YI-RIEULPHIEUPH
-0x85D9 0xB06F # HANGUL SYLLABLE SSANGKIYEOK-YI-RIEULHIEUH
-0x85DA 0xB070 # HANGUL SYLLABLE SSANGKIYEOK-YI-MIEUM
-0x85DB 0xB071 # HANGUL SYLLABLE SSANGKIYEOK-YI-PIEUP
-0x85DC 0xB072 # HANGUL SYLLABLE SSANGKIYEOK-YI-PIEUPSIOS
-0x85DD 0xB073 # HANGUL SYLLABLE SSANGKIYEOK-YI-SIOS
-0x85DE 0xB074 # HANGUL SYLLABLE SSANGKIYEOK-YI-SSANGSIOS
-0x85DF 0xB075 # HANGUL SYLLABLE SSANGKIYEOK-YI-IEUNG
-0x85E0 0xB076 # HANGUL SYLLABLE SSANGKIYEOK-YI-CIEUC
-0x85E1 0xB077 # HANGUL SYLLABLE SSANGKIYEOK-YI-CHIEUCH
-0x85E2 0xB078 # HANGUL SYLLABLE SSANGKIYEOK-YI-KHIEUKH
-0x85E3 0xB079 # HANGUL SYLLABLE SSANGKIYEOK-YI-THIEUTH
-0x85E4 0xB07A # HANGUL SYLLABLE SSANGKIYEOK-YI-PHIEUPH
-0x85E5 0xB07B # HANGUL SYLLABLE SSANGKIYEOK-YI-HIEUH
-0x85E6 0xB07E # HANGUL SYLLABLE SSANGKIYEOK-I-SSANGKIYEOK
-0x85E7 0xB07F # HANGUL SYLLABLE SSANGKIYEOK-I-KIYEOKSIOS
-0x85E8 0xB081 # HANGUL SYLLABLE SSANGKIYEOK-I-NIEUNCIEUC
-0x85E9 0xB082 # HANGUL SYLLABLE SSANGKIYEOK-I-NIEUNHIEUH
-0x85EA 0xB083 # HANGUL SYLLABLE SSANGKIYEOK-I-TIKEUT
-0x85EB 0xB085 # HANGUL SYLLABLE SSANGKIYEOK-I-RIEULKIYEOK
-0x85EC 0xB086 # HANGUL SYLLABLE SSANGKIYEOK-I-RIEULMIEUM
-0x85ED 0xB087 # HANGUL SYLLABLE SSANGKIYEOK-I-RIEULPIEUP
-0x85EE 0xB088 # HANGUL SYLLABLE SSANGKIYEOK-I-RIEULSIOS
-0x85EF 0xB089 # HANGUL SYLLABLE SSANGKIYEOK-I-RIEULTHIEUTH
-0x85F0 0xB08A # HANGUL SYLLABLE SSANGKIYEOK-I-RIEULPHIEUPH
-0x85F1 0xB08B # HANGUL SYLLABLE SSANGKIYEOK-I-RIEULHIEUH
-0x85F2 0xB08E # HANGUL SYLLABLE SSANGKIYEOK-I-PIEUPSIOS
-0x85F3 0xB090 # HANGUL SYLLABLE SSANGKIYEOK-I-SSANGSIOS
-0x85F4 0xB092 # HANGUL SYLLABLE SSANGKIYEOK-I-CIEUC
-0x85F5 0xB093 # HANGUL SYLLABLE SSANGKIYEOK-I-CHIEUCH
-0x85F6 0xB094 # HANGUL SYLLABLE SSANGKIYEOK-I-KHIEUKH
-0x85F7 0xB095 # HANGUL SYLLABLE SSANGKIYEOK-I-THIEUTH
-0x85F8 0xB096 # HANGUL SYLLABLE SSANGKIYEOK-I-PHIEUPH
-0x85F9 0xB097 # HANGUL SYLLABLE SSANGKIYEOK-I-HIEUH
-0x85FA 0xB09B # HANGUL SYLLABLE NIEUN-A-KIYEOKSIOS
-0x85FB 0xB09D # HANGUL SYLLABLE NIEUN-A-NIEUNCIEUC
-0x85FC 0xB09E # HANGUL SYLLABLE NIEUN-A-NIEUNHIEUH
-0x85FD 0xB0A3 # HANGUL SYLLABLE NIEUN-A-RIEULPIEUP
-0x85FE 0xB0A4 # HANGUL SYLLABLE NIEUN-A-RIEULSIOS
-0x8641 0xB0A5 # HANGUL SYLLABLE NIEUN-A-RIEULTHIEUTH
-0x8642 0xB0A6 # HANGUL SYLLABLE NIEUN-A-RIEULPHIEUPH
-0x8643 0xB0A7 # HANGUL SYLLABLE NIEUN-A-RIEULHIEUH
-0x8644 0xB0AA # HANGUL SYLLABLE NIEUN-A-PIEUPSIOS
-0x8645 0xB0B0 # HANGUL SYLLABLE NIEUN-A-KHIEUKH
-0x8646 0xB0B2 # HANGUL SYLLABLE NIEUN-A-PHIEUPH
-0x8647 0xB0B6 # HANGUL SYLLABLE NIEUN-AE-SSANGKIYEOK
-0x8648 0xB0B7 # HANGUL SYLLABLE NIEUN-AE-KIYEOKSIOS
-0x8649 0xB0B9 # HANGUL SYLLABLE NIEUN-AE-NIEUNCIEUC
-0x864A 0xB0BA # HANGUL SYLLABLE NIEUN-AE-NIEUNHIEUH
-0x864B 0xB0BB # HANGUL SYLLABLE NIEUN-AE-TIKEUT
-0x864C 0xB0BD # HANGUL SYLLABLE NIEUN-AE-RIEULKIYEOK
-0x864D 0xB0BE # HANGUL SYLLABLE NIEUN-AE-RIEULMIEUM
-0x864E 0xB0BF # HANGUL SYLLABLE NIEUN-AE-RIEULPIEUP
-0x864F 0xB0C0 # HANGUL SYLLABLE NIEUN-AE-RIEULSIOS
-0x8650 0xB0C1 # HANGUL SYLLABLE NIEUN-AE-RIEULTHIEUTH
-0x8651 0xB0C2 # HANGUL SYLLABLE NIEUN-AE-RIEULPHIEUPH
-0x8652 0xB0C3 # HANGUL SYLLABLE NIEUN-AE-RIEULHIEUH
-0x8653 0xB0C6 # HANGUL SYLLABLE NIEUN-AE-PIEUPSIOS
-0x8654 0xB0CA # HANGUL SYLLABLE NIEUN-AE-CIEUC
-0x8655 0xB0CB # HANGUL SYLLABLE NIEUN-AE-CHIEUCH
-0x8656 0xB0CC # HANGUL SYLLABLE NIEUN-AE-KHIEUKH
-0x8657 0xB0CD # HANGUL SYLLABLE NIEUN-AE-THIEUTH
-0x8658 0xB0CE # HANGUL SYLLABLE NIEUN-AE-PHIEUPH
-0x8659 0xB0CF # HANGUL SYLLABLE NIEUN-AE-HIEUH
-0x865A 0xB0D2 # HANGUL SYLLABLE NIEUN-YA-SSANGKIYEOK
-0x8661 0xB0D3 # HANGUL SYLLABLE NIEUN-YA-KIYEOKSIOS
-0x8662 0xB0D5 # HANGUL SYLLABLE NIEUN-YA-NIEUNCIEUC
-0x8663 0xB0D6 # HANGUL SYLLABLE NIEUN-YA-NIEUNHIEUH
-0x8664 0xB0D7 # HANGUL SYLLABLE NIEUN-YA-TIKEUT
-0x8665 0xB0D9 # HANGUL SYLLABLE NIEUN-YA-RIEULKIYEOK
-0x8666 0xB0DA # HANGUL SYLLABLE NIEUN-YA-RIEULMIEUM
-0x8667 0xB0DB # HANGUL SYLLABLE NIEUN-YA-RIEULPIEUP
-0x8668 0xB0DC # HANGUL SYLLABLE NIEUN-YA-RIEULSIOS
-0x8669 0xB0DD # HANGUL SYLLABLE NIEUN-YA-RIEULTHIEUTH
-0x866A 0xB0DE # HANGUL SYLLABLE NIEUN-YA-RIEULPHIEUPH
-0x866B 0xB0DF # HANGUL SYLLABLE NIEUN-YA-RIEULHIEUH
-0x866C 0xB0E1 # HANGUL SYLLABLE NIEUN-YA-PIEUP
-0x866D 0xB0E2 # HANGUL SYLLABLE NIEUN-YA-PIEUPSIOS
-0x866E 0xB0E3 # HANGUL SYLLABLE NIEUN-YA-SIOS
-0x866F 0xB0E4 # HANGUL SYLLABLE NIEUN-YA-SSANGSIOS
-0x8670 0xB0E6 # HANGUL SYLLABLE NIEUN-YA-CIEUC
-0x8671 0xB0E7 # HANGUL SYLLABLE NIEUN-YA-CHIEUCH
-0x8672 0xB0E8 # HANGUL SYLLABLE NIEUN-YA-KHIEUKH
-0x8673 0xB0E9 # HANGUL SYLLABLE NIEUN-YA-THIEUTH
-0x8674 0xB0EA # HANGUL SYLLABLE NIEUN-YA-PHIEUPH
-0x8675 0xB0EB # HANGUL SYLLABLE NIEUN-YA-HIEUH
-0x8676 0xB0EC # HANGUL SYLLABLE NIEUN-YAE
-0x8677 0xB0ED # HANGUL SYLLABLE NIEUN-YAE-KIYEOK
-0x8678 0xB0EE # HANGUL SYLLABLE NIEUN-YAE-SSANGKIYEOK
-0x8679 0xB0EF # HANGUL SYLLABLE NIEUN-YAE-KIYEOKSIOS
-0x867A 0xB0F0 # HANGUL SYLLABLE NIEUN-YAE-NIEUN
-0x8681 0xB0F1 # HANGUL SYLLABLE NIEUN-YAE-NIEUNCIEUC
-0x8682 0xB0F2 # HANGUL SYLLABLE NIEUN-YAE-NIEUNHIEUH
-0x8683 0xB0F3 # HANGUL SYLLABLE NIEUN-YAE-TIKEUT
-0x8684 0xB0F4 # HANGUL SYLLABLE NIEUN-YAE-RIEUL
-0x8685 0xB0F5 # HANGUL SYLLABLE NIEUN-YAE-RIEULKIYEOK
-0x8686 0xB0F6 # HANGUL SYLLABLE NIEUN-YAE-RIEULMIEUM
-0x8687 0xB0F7 # HANGUL SYLLABLE NIEUN-YAE-RIEULPIEUP
-0x8688 0xB0F8 # HANGUL SYLLABLE NIEUN-YAE-RIEULSIOS
-0x8689 0xB0F9 # HANGUL SYLLABLE NIEUN-YAE-RIEULTHIEUTH
-0x868A 0xB0FA # HANGUL SYLLABLE NIEUN-YAE-RIEULPHIEUPH
-0x868B 0xB0FB # HANGUL SYLLABLE NIEUN-YAE-RIEULHIEUH
-0x868C 0xB0FC # HANGUL SYLLABLE NIEUN-YAE-MIEUM
-0x868D 0xB0FD # HANGUL SYLLABLE NIEUN-YAE-PIEUP
-0x868E 0xB0FE # HANGUL SYLLABLE NIEUN-YAE-PIEUPSIOS
-0x868F 0xB0FF # HANGUL SYLLABLE NIEUN-YAE-SIOS
-0x8690 0xB100 # HANGUL SYLLABLE NIEUN-YAE-SSANGSIOS
-0x8691 0xB101 # HANGUL SYLLABLE NIEUN-YAE-IEUNG
-0x8692 0xB102 # HANGUL SYLLABLE NIEUN-YAE-CIEUC
-0x8693 0xB103 # HANGUL SYLLABLE NIEUN-YAE-CHIEUCH
-0x8694 0xB104 # HANGUL SYLLABLE NIEUN-YAE-KHIEUKH
-0x8695 0xB105 # HANGUL SYLLABLE NIEUN-YAE-THIEUTH
-0x8696 0xB106 # HANGUL SYLLABLE NIEUN-YAE-PHIEUPH
-0x8697 0xB107 # HANGUL SYLLABLE NIEUN-YAE-HIEUH
-0x8698 0xB10A # HANGUL SYLLABLE NIEUN-EO-SSANGKIYEOK
-0x8699 0xB10D # HANGUL SYLLABLE NIEUN-EO-NIEUNCIEUC
-0x869A 0xB10E # HANGUL SYLLABLE NIEUN-EO-NIEUNHIEUH
-0x869B 0xB10F # HANGUL SYLLABLE NIEUN-EO-TIKEUT
-0x869C 0xB111 # HANGUL SYLLABLE NIEUN-EO-RIEULKIYEOK
-0x869D 0xB114 # HANGUL SYLLABLE NIEUN-EO-RIEULSIOS
-0x869E 0xB115 # HANGUL SYLLABLE NIEUN-EO-RIEULTHIEUTH
-0x869F 0xB116 # HANGUL SYLLABLE NIEUN-EO-RIEULPHIEUPH
-0x86A0 0xB117 # HANGUL SYLLABLE NIEUN-EO-RIEULHIEUH
-0x86A1 0xB11A # HANGUL SYLLABLE NIEUN-EO-PIEUPSIOS
-0x86A2 0xB11E # HANGUL SYLLABLE NIEUN-EO-CIEUC
-0x86A3 0xB11F # HANGUL SYLLABLE NIEUN-EO-CHIEUCH
-0x86A4 0xB120 # HANGUL SYLLABLE NIEUN-EO-KHIEUKH
-0x86A5 0xB121 # HANGUL SYLLABLE NIEUN-EO-THIEUTH
-0x86A6 0xB122 # HANGUL SYLLABLE NIEUN-EO-PHIEUPH
-0x86A7 0xB126 # HANGUL SYLLABLE NIEUN-E-SSANGKIYEOK
-0x86A8 0xB127 # HANGUL SYLLABLE NIEUN-E-KIYEOKSIOS
-0x86A9 0xB129 # HANGUL SYLLABLE NIEUN-E-NIEUNCIEUC
-0x86AA 0xB12A # HANGUL SYLLABLE NIEUN-E-NIEUNHIEUH
-0x86AB 0xB12B # HANGUL SYLLABLE NIEUN-E-TIKEUT
-0x86AC 0xB12D # HANGUL SYLLABLE NIEUN-E-RIEULKIYEOK
-0x86AD 0xB12E # HANGUL SYLLABLE NIEUN-E-RIEULMIEUM
-0x86AE 0xB12F # HANGUL SYLLABLE NIEUN-E-RIEULPIEUP
-0x86AF 0xB130 # HANGUL SYLLABLE NIEUN-E-RIEULSIOS
-0x86B0 0xB131 # HANGUL SYLLABLE NIEUN-E-RIEULTHIEUTH
-0x86B1 0xB132 # HANGUL SYLLABLE NIEUN-E-RIEULPHIEUPH
-0x86B2 0xB133 # HANGUL SYLLABLE NIEUN-E-RIEULHIEUH
-0x86B3 0xB136 # HANGUL SYLLABLE NIEUN-E-PIEUPSIOS
-0x86B4 0xB13A # HANGUL SYLLABLE NIEUN-E-CIEUC
-0x86B5 0xB13B # HANGUL SYLLABLE NIEUN-E-CHIEUCH
-0x86B6 0xB13C # HANGUL SYLLABLE NIEUN-E-KHIEUKH
-0x86B7 0xB13D # HANGUL SYLLABLE NIEUN-E-THIEUTH
-0x86B8 0xB13E # HANGUL SYLLABLE NIEUN-E-PHIEUPH
-0x86B9 0xB13F # HANGUL SYLLABLE NIEUN-E-HIEUH
-0x86BA 0xB142 # HANGUL SYLLABLE NIEUN-YEO-SSANGKIYEOK
-0x86BB 0xB143 # HANGUL SYLLABLE NIEUN-YEO-KIYEOKSIOS
-0x86BC 0xB145 # HANGUL SYLLABLE NIEUN-YEO-NIEUNCIEUC
-0x86BD 0xB146 # HANGUL SYLLABLE NIEUN-YEO-NIEUNHIEUH
-0x86BE 0xB147 # HANGUL SYLLABLE NIEUN-YEO-TIKEUT
-0x86BF 0xB149 # HANGUL SYLLABLE NIEUN-YEO-RIEULKIYEOK
-0x86C0 0xB14A # HANGUL SYLLABLE NIEUN-YEO-RIEULMIEUM
-0x86C1 0xB14B # HANGUL SYLLABLE NIEUN-YEO-RIEULPIEUP
-0x86C2 0xB14C # HANGUL SYLLABLE NIEUN-YEO-RIEULSIOS
-0x86C3 0xB14D # HANGUL SYLLABLE NIEUN-YEO-RIEULTHIEUTH
-0x86C4 0xB14E # HANGUL SYLLABLE NIEUN-YEO-RIEULPHIEUPH
-0x86C5 0xB14F # HANGUL SYLLABLE NIEUN-YEO-RIEULHIEUH
-0x86C6 0xB152 # HANGUL SYLLABLE NIEUN-YEO-PIEUPSIOS
-0x86C7 0xB153 # HANGUL SYLLABLE NIEUN-YEO-SIOS
-0x86C8 0xB156 # HANGUL SYLLABLE NIEUN-YEO-CIEUC
-0x86C9 0xB157 # HANGUL SYLLABLE NIEUN-YEO-CHIEUCH
-0x86CA 0xB159 # HANGUL SYLLABLE NIEUN-YEO-THIEUTH
-0x86CB 0xB15A # HANGUL SYLLABLE NIEUN-YEO-PHIEUPH
-0x86CC 0xB15B # HANGUL SYLLABLE NIEUN-YEO-HIEUH
-0x86CD 0xB15D # HANGUL SYLLABLE NIEUN-YE-KIYEOK
-0x86CE 0xB15E # HANGUL SYLLABLE NIEUN-YE-SSANGKIYEOK
-0x86CF 0xB15F # HANGUL SYLLABLE NIEUN-YE-KIYEOKSIOS
-0x86D0 0xB161 # HANGUL SYLLABLE NIEUN-YE-NIEUNCIEUC
-0x86D1 0xB162 # HANGUL SYLLABLE NIEUN-YE-NIEUNHIEUH
-0x86D2 0xB163 # HANGUL SYLLABLE NIEUN-YE-TIKEUT
-0x86D3 0xB164 # HANGUL SYLLABLE NIEUN-YE-RIEUL
-0x86D4 0xB165 # HANGUL SYLLABLE NIEUN-YE-RIEULKIYEOK
-0x86D5 0xB166 # HANGUL SYLLABLE NIEUN-YE-RIEULMIEUM
-0x86D6 0xB167 # HANGUL SYLLABLE NIEUN-YE-RIEULPIEUP
-0x86D7 0xB168 # HANGUL SYLLABLE NIEUN-YE-RIEULSIOS
-0x86D8 0xB169 # HANGUL SYLLABLE NIEUN-YE-RIEULTHIEUTH
-0x86D9 0xB16A # HANGUL SYLLABLE NIEUN-YE-RIEULPHIEUPH
-0x86DA 0xB16B # HANGUL SYLLABLE NIEUN-YE-RIEULHIEUH
-0x86DB 0xB16C # HANGUL SYLLABLE NIEUN-YE-MIEUM
-0x86DC 0xB16D # HANGUL SYLLABLE NIEUN-YE-PIEUP
-0x86DD 0xB16E # HANGUL SYLLABLE NIEUN-YE-PIEUPSIOS
-0x86DE 0xB16F # HANGUL SYLLABLE NIEUN-YE-SIOS
-0x86DF 0xB170 # HANGUL SYLLABLE NIEUN-YE-SSANGSIOS
-0x86E0 0xB171 # HANGUL SYLLABLE NIEUN-YE-IEUNG
-0x86E1 0xB172 # HANGUL SYLLABLE NIEUN-YE-CIEUC
-0x86E2 0xB173 # HANGUL SYLLABLE NIEUN-YE-CHIEUCH
-0x86E3 0xB174 # HANGUL SYLLABLE NIEUN-YE-KHIEUKH
-0x86E4 0xB175 # HANGUL SYLLABLE NIEUN-YE-THIEUTH
-0x86E5 0xB176 # HANGUL SYLLABLE NIEUN-YE-PHIEUPH
-0x86E6 0xB177 # HANGUL SYLLABLE NIEUN-YE-HIEUH
-0x86E7 0xB17A # HANGUL SYLLABLE NIEUN-O-SSANGKIYEOK
-0x86E8 0xB17B # HANGUL SYLLABLE NIEUN-O-KIYEOKSIOS
-0x86E9 0xB17D # HANGUL SYLLABLE NIEUN-O-NIEUNCIEUC
-0x86EA 0xB17E # HANGUL SYLLABLE NIEUN-O-NIEUNHIEUH
-0x86EB 0xB17F # HANGUL SYLLABLE NIEUN-O-TIKEUT
-0x86EC 0xB181 # HANGUL SYLLABLE NIEUN-O-RIEULKIYEOK
-0x86ED 0xB183 # HANGUL SYLLABLE NIEUN-O-RIEULPIEUP
-0x86EE 0xB184 # HANGUL SYLLABLE NIEUN-O-RIEULSIOS
-0x86EF 0xB185 # HANGUL SYLLABLE NIEUN-O-RIEULTHIEUTH
-0x86F0 0xB186 # HANGUL SYLLABLE NIEUN-O-RIEULPHIEUPH
-0x86F1 0xB187 # HANGUL SYLLABLE NIEUN-O-RIEULHIEUH
-0x86F2 0xB18A # HANGUL SYLLABLE NIEUN-O-PIEUPSIOS
-0x86F3 0xB18C # HANGUL SYLLABLE NIEUN-O-SSANGSIOS
-0x86F4 0xB18E # HANGUL SYLLABLE NIEUN-O-CIEUC
-0x86F5 0xB18F # HANGUL SYLLABLE NIEUN-O-CHIEUCH
-0x86F6 0xB190 # HANGUL SYLLABLE NIEUN-O-KHIEUKH
-0x86F7 0xB191 # HANGUL SYLLABLE NIEUN-O-THIEUTH
-0x86F8 0xB195 # HANGUL SYLLABLE NIEUN-WA-KIYEOK
-0x86F9 0xB196 # HANGUL SYLLABLE NIEUN-WA-SSANGKIYEOK
-0x86FA 0xB197 # HANGUL SYLLABLE NIEUN-WA-KIYEOKSIOS
-0x86FB 0xB199 # HANGUL SYLLABLE NIEUN-WA-NIEUNCIEUC
-0x86FC 0xB19A # HANGUL SYLLABLE NIEUN-WA-NIEUNHIEUH
-0x86FD 0xB19B # HANGUL SYLLABLE NIEUN-WA-TIKEUT
-0x86FE 0xB19D # HANGUL SYLLABLE NIEUN-WA-RIEULKIYEOK
-0x8741 0xB19E # HANGUL SYLLABLE NIEUN-WA-RIEULMIEUM
-0x8742 0xB19F # HANGUL SYLLABLE NIEUN-WA-RIEULPIEUP
-0x8743 0xB1A0 # HANGUL SYLLABLE NIEUN-WA-RIEULSIOS
-0x8744 0xB1A1 # HANGUL SYLLABLE NIEUN-WA-RIEULTHIEUTH
-0x8745 0xB1A2 # HANGUL SYLLABLE NIEUN-WA-RIEULPHIEUPH
-0x8746 0xB1A3 # HANGUL SYLLABLE NIEUN-WA-RIEULHIEUH
-0x8747 0xB1A4 # HANGUL SYLLABLE NIEUN-WA-MIEUM
-0x8748 0xB1A5 # HANGUL SYLLABLE NIEUN-WA-PIEUP
-0x8749 0xB1A6 # HANGUL SYLLABLE NIEUN-WA-PIEUPSIOS
-0x874A 0xB1A7 # HANGUL SYLLABLE NIEUN-WA-SIOS
-0x874B 0xB1A9 # HANGUL SYLLABLE NIEUN-WA-IEUNG
-0x874C 0xB1AA # HANGUL SYLLABLE NIEUN-WA-CIEUC
-0x874D 0xB1AB # HANGUL SYLLABLE NIEUN-WA-CHIEUCH
-0x874E 0xB1AC # HANGUL SYLLABLE NIEUN-WA-KHIEUKH
-0x874F 0xB1AD # HANGUL SYLLABLE NIEUN-WA-THIEUTH
-0x8750 0xB1AE # HANGUL SYLLABLE NIEUN-WA-PHIEUPH
-0x8751 0xB1AF # HANGUL SYLLABLE NIEUN-WA-HIEUH
-0x8752 0xB1B0 # HANGUL SYLLABLE NIEUN-WAE
-0x8753 0xB1B1 # HANGUL SYLLABLE NIEUN-WAE-KIYEOK
-0x8754 0xB1B2 # HANGUL SYLLABLE NIEUN-WAE-SSANGKIYEOK
-0x8755 0xB1B3 # HANGUL SYLLABLE NIEUN-WAE-KIYEOKSIOS
-0x8756 0xB1B4 # HANGUL SYLLABLE NIEUN-WAE-NIEUN
-0x8757 0xB1B5 # HANGUL SYLLABLE NIEUN-WAE-NIEUNCIEUC
-0x8758 0xB1B6 # HANGUL SYLLABLE NIEUN-WAE-NIEUNHIEUH
-0x8759 0xB1B7 # HANGUL SYLLABLE NIEUN-WAE-TIKEUT
-0x875A 0xB1B8 # HANGUL SYLLABLE NIEUN-WAE-RIEUL
-0x8761 0xB1B9 # HANGUL SYLLABLE NIEUN-WAE-RIEULKIYEOK
-0x8762 0xB1BA # HANGUL SYLLABLE NIEUN-WAE-RIEULMIEUM
-0x8763 0xB1BB # HANGUL SYLLABLE NIEUN-WAE-RIEULPIEUP
-0x8764 0xB1BC # HANGUL SYLLABLE NIEUN-WAE-RIEULSIOS
-0x8765 0xB1BD # HANGUL SYLLABLE NIEUN-WAE-RIEULTHIEUTH
-0x8766 0xB1BE # HANGUL SYLLABLE NIEUN-WAE-RIEULPHIEUPH
-0x8767 0xB1BF # HANGUL SYLLABLE NIEUN-WAE-RIEULHIEUH
-0x8768 0xB1C0 # HANGUL SYLLABLE NIEUN-WAE-MIEUM
-0x8769 0xB1C1 # HANGUL SYLLABLE NIEUN-WAE-PIEUP
-0x876A 0xB1C2 # HANGUL SYLLABLE NIEUN-WAE-PIEUPSIOS
-0x876B 0xB1C3 # HANGUL SYLLABLE NIEUN-WAE-SIOS
-0x876C 0xB1C4 # HANGUL SYLLABLE NIEUN-WAE-SSANGSIOS
-0x876D 0xB1C5 # HANGUL SYLLABLE NIEUN-WAE-IEUNG
-0x876E 0xB1C6 # HANGUL SYLLABLE NIEUN-WAE-CIEUC
-0x876F 0xB1C7 # HANGUL SYLLABLE NIEUN-WAE-CHIEUCH
-0x8770 0xB1C8 # HANGUL SYLLABLE NIEUN-WAE-KHIEUKH
-0x8771 0xB1C9 # HANGUL SYLLABLE NIEUN-WAE-THIEUTH
-0x8772 0xB1CA # HANGUL SYLLABLE NIEUN-WAE-PHIEUPH
-0x8773 0xB1CB # HANGUL SYLLABLE NIEUN-WAE-HIEUH
-0x8774 0xB1CD # HANGUL SYLLABLE NIEUN-OE-KIYEOK
-0x8775 0xB1CE # HANGUL SYLLABLE NIEUN-OE-SSANGKIYEOK
-0x8776 0xB1CF # HANGUL SYLLABLE NIEUN-OE-KIYEOKSIOS
-0x8777 0xB1D1 # HANGUL SYLLABLE NIEUN-OE-NIEUNCIEUC
-0x8778 0xB1D2 # HANGUL SYLLABLE NIEUN-OE-NIEUNHIEUH
-0x8779 0xB1D3 # HANGUL SYLLABLE NIEUN-OE-TIKEUT
-0x877A 0xB1D5 # HANGUL SYLLABLE NIEUN-OE-RIEULKIYEOK
-0x8781 0xB1D6 # HANGUL SYLLABLE NIEUN-OE-RIEULMIEUM
-0x8782 0xB1D7 # HANGUL SYLLABLE NIEUN-OE-RIEULPIEUP
-0x8783 0xB1D8 # HANGUL SYLLABLE NIEUN-OE-RIEULSIOS
-0x8784 0xB1D9 # HANGUL SYLLABLE NIEUN-OE-RIEULTHIEUTH
-0x8785 0xB1DA # HANGUL SYLLABLE NIEUN-OE-RIEULPHIEUPH
-0x8786 0xB1DB # HANGUL SYLLABLE NIEUN-OE-RIEULHIEUH
-0x8787 0xB1DE # HANGUL SYLLABLE NIEUN-OE-PIEUPSIOS
-0x8788 0xB1E0 # HANGUL SYLLABLE NIEUN-OE-SSANGSIOS
-0x8789 0xB1E1 # HANGUL SYLLABLE NIEUN-OE-IEUNG
-0x878A 0xB1E2 # HANGUL SYLLABLE NIEUN-OE-CIEUC
-0x878B 0xB1E3 # HANGUL SYLLABLE NIEUN-OE-CHIEUCH
-0x878C 0xB1E4 # HANGUL SYLLABLE NIEUN-OE-KHIEUKH
-0x878D 0xB1E5 # HANGUL SYLLABLE NIEUN-OE-THIEUTH
-0x878E 0xB1E6 # HANGUL SYLLABLE NIEUN-OE-PHIEUPH
-0x878F 0xB1E7 # HANGUL SYLLABLE NIEUN-OE-HIEUH
-0x8790 0xB1EA # HANGUL SYLLABLE NIEUN-YO-SSANGKIYEOK
-0x8791 0xB1EB # HANGUL SYLLABLE NIEUN-YO-KIYEOKSIOS
-0x8792 0xB1ED # HANGUL SYLLABLE NIEUN-YO-NIEUNCIEUC
-0x8793 0xB1EE # HANGUL SYLLABLE NIEUN-YO-NIEUNHIEUH
-0x8794 0xB1EF # HANGUL SYLLABLE NIEUN-YO-TIKEUT
-0x8795 0xB1F1 # HANGUL SYLLABLE NIEUN-YO-RIEULKIYEOK
-0x8796 0xB1F2 # HANGUL SYLLABLE NIEUN-YO-RIEULMIEUM
-0x8797 0xB1F3 # HANGUL SYLLABLE NIEUN-YO-RIEULPIEUP
-0x8798 0xB1F4 # HANGUL SYLLABLE NIEUN-YO-RIEULSIOS
-0x8799 0xB1F5 # HANGUL SYLLABLE NIEUN-YO-RIEULTHIEUTH
-0x879A 0xB1F6 # HANGUL SYLLABLE NIEUN-YO-RIEULPHIEUPH
-0x879B 0xB1F7 # HANGUL SYLLABLE NIEUN-YO-RIEULHIEUH
-0x879C 0xB1F8 # HANGUL SYLLABLE NIEUN-YO-MIEUM
-0x879D 0xB1FA # HANGUL SYLLABLE NIEUN-YO-PIEUPSIOS
-0x879E 0xB1FC # HANGUL SYLLABLE NIEUN-YO-SSANGSIOS
-0x879F 0xB1FE # HANGUL SYLLABLE NIEUN-YO-CIEUC
-0x87A0 0xB1FF # HANGUL SYLLABLE NIEUN-YO-CHIEUCH
-0x87A1 0xB200 # HANGUL SYLLABLE NIEUN-YO-KHIEUKH
-0x87A2 0xB201 # HANGUL SYLLABLE NIEUN-YO-THIEUTH
-0x87A3 0xB202 # HANGUL SYLLABLE NIEUN-YO-PHIEUPH
-0x87A4 0xB203 # HANGUL SYLLABLE NIEUN-YO-HIEUH
-0x87A5 0xB206 # HANGUL SYLLABLE NIEUN-U-SSANGKIYEOK
-0x87A6 0xB207 # HANGUL SYLLABLE NIEUN-U-KIYEOKSIOS
-0x87A7 0xB209 # HANGUL SYLLABLE NIEUN-U-NIEUNCIEUC
-0x87A8 0xB20A # HANGUL SYLLABLE NIEUN-U-NIEUNHIEUH
-0x87A9 0xB20D # HANGUL SYLLABLE NIEUN-U-RIEULKIYEOK
-0x87AA 0xB20E # HANGUL SYLLABLE NIEUN-U-RIEULMIEUM
-0x87AB 0xB20F # HANGUL SYLLABLE NIEUN-U-RIEULPIEUP
-0x87AC 0xB210 # HANGUL SYLLABLE NIEUN-U-RIEULSIOS
-0x87AD 0xB211 # HANGUL SYLLABLE NIEUN-U-RIEULTHIEUTH
-0x87AE 0xB212 # HANGUL SYLLABLE NIEUN-U-RIEULPHIEUPH
-0x87AF 0xB213 # HANGUL SYLLABLE NIEUN-U-RIEULHIEUH
-0x87B0 0xB216 # HANGUL SYLLABLE NIEUN-U-PIEUPSIOS
-0x87B1 0xB218 # HANGUL SYLLABLE NIEUN-U-SSANGSIOS
-0x87B2 0xB21A # HANGUL SYLLABLE NIEUN-U-CIEUC
-0x87B3 0xB21B # HANGUL SYLLABLE NIEUN-U-CHIEUCH
-0x87B4 0xB21C # HANGUL SYLLABLE NIEUN-U-KHIEUKH
-0x87B5 0xB21D # HANGUL SYLLABLE NIEUN-U-THIEUTH
-0x87B6 0xB21E # HANGUL SYLLABLE NIEUN-U-PHIEUPH
-0x87B7 0xB21F # HANGUL SYLLABLE NIEUN-U-HIEUH
-0x87B8 0xB221 # HANGUL SYLLABLE NIEUN-WEO-KIYEOK
-0x87B9 0xB222 # HANGUL SYLLABLE NIEUN-WEO-SSANGKIYEOK
-0x87BA 0xB223 # HANGUL SYLLABLE NIEUN-WEO-KIYEOKSIOS
-0x87BB 0xB224 # HANGUL SYLLABLE NIEUN-WEO-NIEUN
-0x87BC 0xB225 # HANGUL SYLLABLE NIEUN-WEO-NIEUNCIEUC
-0x87BD 0xB226 # HANGUL SYLLABLE NIEUN-WEO-NIEUNHIEUH
-0x87BE 0xB227 # HANGUL SYLLABLE NIEUN-WEO-TIKEUT
-0x87BF 0xB228 # HANGUL SYLLABLE NIEUN-WEO-RIEUL
-0x87C0 0xB229 # HANGUL SYLLABLE NIEUN-WEO-RIEULKIYEOK
-0x87C1 0xB22A # HANGUL SYLLABLE NIEUN-WEO-RIEULMIEUM
-0x87C2 0xB22B # HANGUL SYLLABLE NIEUN-WEO-RIEULPIEUP
-0x87C3 0xB22C # HANGUL SYLLABLE NIEUN-WEO-RIEULSIOS
-0x87C4 0xB22D # HANGUL SYLLABLE NIEUN-WEO-RIEULTHIEUTH
-0x87C5 0xB22E # HANGUL SYLLABLE NIEUN-WEO-RIEULPHIEUPH
-0x87C6 0xB22F # HANGUL SYLLABLE NIEUN-WEO-RIEULHIEUH
-0x87C7 0xB230 # HANGUL SYLLABLE NIEUN-WEO-MIEUM
-0x87C8 0xB231 # HANGUL SYLLABLE NIEUN-WEO-PIEUP
-0x87C9 0xB232 # HANGUL SYLLABLE NIEUN-WEO-PIEUPSIOS
-0x87CA 0xB233 # HANGUL SYLLABLE NIEUN-WEO-SIOS
-0x87CB 0xB235 # HANGUL SYLLABLE NIEUN-WEO-IEUNG
-0x87CC 0xB236 # HANGUL SYLLABLE NIEUN-WEO-CIEUC
-0x87CD 0xB237 # HANGUL SYLLABLE NIEUN-WEO-CHIEUCH
-0x87CE 0xB238 # HANGUL SYLLABLE NIEUN-WEO-KHIEUKH
-0x87CF 0xB239 # HANGUL SYLLABLE NIEUN-WEO-THIEUTH
-0x87D0 0xB23A # HANGUL SYLLABLE NIEUN-WEO-PHIEUPH
-0x87D1 0xB23B # HANGUL SYLLABLE NIEUN-WEO-HIEUH
-0x87D2 0xB23D # HANGUL SYLLABLE NIEUN-WE-KIYEOK
-0x87D3 0xB23E # HANGUL SYLLABLE NIEUN-WE-SSANGKIYEOK
-0x87D4 0xB23F # HANGUL SYLLABLE NIEUN-WE-KIYEOKSIOS
-0x87D5 0xB240 # HANGUL SYLLABLE NIEUN-WE-NIEUN
-0x87D6 0xB241 # HANGUL SYLLABLE NIEUN-WE-NIEUNCIEUC
-0x87D7 0xB242 # HANGUL SYLLABLE NIEUN-WE-NIEUNHIEUH
-0x87D8 0xB243 # HANGUL SYLLABLE NIEUN-WE-TIKEUT
-0x87D9 0xB244 # HANGUL SYLLABLE NIEUN-WE-RIEUL
-0x87DA 0xB245 # HANGUL SYLLABLE NIEUN-WE-RIEULKIYEOK
-0x87DB 0xB246 # HANGUL SYLLABLE NIEUN-WE-RIEULMIEUM
-0x87DC 0xB247 # HANGUL SYLLABLE NIEUN-WE-RIEULPIEUP
-0x87DD 0xB248 # HANGUL SYLLABLE NIEUN-WE-RIEULSIOS
-0x87DE 0xB249 # HANGUL SYLLABLE NIEUN-WE-RIEULTHIEUTH
-0x87DF 0xB24A # HANGUL SYLLABLE NIEUN-WE-RIEULPHIEUPH
-0x87E0 0xB24B # HANGUL SYLLABLE NIEUN-WE-RIEULHIEUH
-0x87E1 0xB24C # HANGUL SYLLABLE NIEUN-WE-MIEUM
-0x87E2 0xB24D # HANGUL SYLLABLE NIEUN-WE-PIEUP
-0x87E3 0xB24E # HANGUL SYLLABLE NIEUN-WE-PIEUPSIOS
-0x87E4 0xB24F # HANGUL SYLLABLE NIEUN-WE-SIOS
-0x87E5 0xB250 # HANGUL SYLLABLE NIEUN-WE-SSANGSIOS
-0x87E6 0xB251 # HANGUL SYLLABLE NIEUN-WE-IEUNG
-0x87E7 0xB252 # HANGUL SYLLABLE NIEUN-WE-CIEUC
-0x87E8 0xB253 # HANGUL SYLLABLE NIEUN-WE-CHIEUCH
-0x87E9 0xB254 # HANGUL SYLLABLE NIEUN-WE-KHIEUKH
-0x87EA 0xB255 # HANGUL SYLLABLE NIEUN-WE-THIEUTH
-0x87EB 0xB256 # HANGUL SYLLABLE NIEUN-WE-PHIEUPH
-0x87EC 0xB257 # HANGUL SYLLABLE NIEUN-WE-HIEUH
-0x87ED 0xB259 # HANGUL SYLLABLE NIEUN-WI-KIYEOK
-0x87EE 0xB25A # HANGUL SYLLABLE NIEUN-WI-SSANGKIYEOK
-0x87EF 0xB25B # HANGUL SYLLABLE NIEUN-WI-KIYEOKSIOS
-0x87F0 0xB25D # HANGUL SYLLABLE NIEUN-WI-NIEUNCIEUC
-0x87F1 0xB25E # HANGUL SYLLABLE NIEUN-WI-NIEUNHIEUH
-0x87F2 0xB25F # HANGUL SYLLABLE NIEUN-WI-TIKEUT
-0x87F3 0xB261 # HANGUL SYLLABLE NIEUN-WI-RIEULKIYEOK
-0x87F4 0xB262 # HANGUL SYLLABLE NIEUN-WI-RIEULMIEUM
-0x87F5 0xB263 # HANGUL SYLLABLE NIEUN-WI-RIEULPIEUP
-0x87F6 0xB264 # HANGUL SYLLABLE NIEUN-WI-RIEULSIOS
-0x87F7 0xB265 # HANGUL SYLLABLE NIEUN-WI-RIEULTHIEUTH
-0x87F8 0xB266 # HANGUL SYLLABLE NIEUN-WI-RIEULPHIEUPH
-0x87F9 0xB267 # HANGUL SYLLABLE NIEUN-WI-RIEULHIEUH
-0x87FA 0xB26A # HANGUL SYLLABLE NIEUN-WI-PIEUPSIOS
-0x87FB 0xB26B # HANGUL SYLLABLE NIEUN-WI-SIOS
-0x87FC 0xB26C # HANGUL SYLLABLE NIEUN-WI-SSANGSIOS
-0x87FD 0xB26D # HANGUL SYLLABLE NIEUN-WI-IEUNG
-0x87FE 0xB26E # HANGUL SYLLABLE NIEUN-WI-CIEUC
-0x8841 0xB26F # HANGUL SYLLABLE NIEUN-WI-CHIEUCH
-0x8842 0xB270 # HANGUL SYLLABLE NIEUN-WI-KHIEUKH
-0x8843 0xB271 # HANGUL SYLLABLE NIEUN-WI-THIEUTH
-0x8844 0xB272 # HANGUL SYLLABLE NIEUN-WI-PHIEUPH
-0x8845 0xB273 # HANGUL SYLLABLE NIEUN-WI-HIEUH
-0x8846 0xB276 # HANGUL SYLLABLE NIEUN-YU-SSANGKIYEOK
-0x8847 0xB277 # HANGUL SYLLABLE NIEUN-YU-KIYEOKSIOS
-0x8848 0xB278 # HANGUL SYLLABLE NIEUN-YU-NIEUN
-0x8849 0xB279 # HANGUL SYLLABLE NIEUN-YU-NIEUNCIEUC
-0x884A 0xB27A # HANGUL SYLLABLE NIEUN-YU-NIEUNHIEUH
-0x884B 0xB27B # HANGUL SYLLABLE NIEUN-YU-TIKEUT
-0x884C 0xB27D # HANGUL SYLLABLE NIEUN-YU-RIEULKIYEOK
-0x884D 0xB27E # HANGUL SYLLABLE NIEUN-YU-RIEULMIEUM
-0x884E 0xB27F # HANGUL SYLLABLE NIEUN-YU-RIEULPIEUP
-0x884F 0xB280 # HANGUL SYLLABLE NIEUN-YU-RIEULSIOS
-0x8850 0xB281 # HANGUL SYLLABLE NIEUN-YU-RIEULTHIEUTH
-0x8851 0xB282 # HANGUL SYLLABLE NIEUN-YU-RIEULPHIEUPH
-0x8852 0xB283 # HANGUL SYLLABLE NIEUN-YU-RIEULHIEUH
-0x8853 0xB286 # HANGUL SYLLABLE NIEUN-YU-PIEUPSIOS
-0x8854 0xB287 # HANGUL SYLLABLE NIEUN-YU-SIOS
-0x8855 0xB288 # HANGUL SYLLABLE NIEUN-YU-SSANGSIOS
-0x8856 0xB28A # HANGUL SYLLABLE NIEUN-YU-CIEUC
-0x8857 0xB28B # HANGUL SYLLABLE NIEUN-YU-CHIEUCH
-0x8858 0xB28C # HANGUL SYLLABLE NIEUN-YU-KHIEUKH
-0x8859 0xB28D # HANGUL SYLLABLE NIEUN-YU-THIEUTH
-0x885A 0xB28E # HANGUL SYLLABLE NIEUN-YU-PHIEUPH
-0x8861 0xB28F # HANGUL SYLLABLE NIEUN-YU-HIEUH
-0x8862 0xB292 # HANGUL SYLLABLE NIEUN-EU-SSANGKIYEOK
-0x8863 0xB293 # HANGUL SYLLABLE NIEUN-EU-KIYEOKSIOS
-0x8864 0xB295 # HANGUL SYLLABLE NIEUN-EU-NIEUNCIEUC
-0x8865 0xB296 # HANGUL SYLLABLE NIEUN-EU-NIEUNHIEUH
-0x8866 0xB297 # HANGUL SYLLABLE NIEUN-EU-TIKEUT
-0x8867 0xB29B # HANGUL SYLLABLE NIEUN-EU-RIEULPIEUP
-0x8868 0xB29C # HANGUL SYLLABLE NIEUN-EU-RIEULSIOS
-0x8869 0xB29D # HANGUL SYLLABLE NIEUN-EU-RIEULTHIEUTH
-0x886A 0xB29E # HANGUL SYLLABLE NIEUN-EU-RIEULPHIEUPH
-0x886B 0xB29F # HANGUL SYLLABLE NIEUN-EU-RIEULHIEUH
-0x886C 0xB2A2 # HANGUL SYLLABLE NIEUN-EU-PIEUPSIOS
-0x886D 0xB2A4 # HANGUL SYLLABLE NIEUN-EU-SSANGSIOS
-0x886E 0xB2A7 # HANGUL SYLLABLE NIEUN-EU-CHIEUCH
-0x886F 0xB2A8 # HANGUL SYLLABLE NIEUN-EU-KHIEUKH
-0x8870 0xB2A9 # HANGUL SYLLABLE NIEUN-EU-THIEUTH
-0x8871 0xB2AB # HANGUL SYLLABLE NIEUN-EU-HIEUH
-0x8872 0xB2AD # HANGUL SYLLABLE NIEUN-YI-KIYEOK
-0x8873 0xB2AE # HANGUL SYLLABLE NIEUN-YI-SSANGKIYEOK
-0x8874 0xB2AF # HANGUL SYLLABLE NIEUN-YI-KIYEOKSIOS
-0x8875 0xB2B1 # HANGUL SYLLABLE NIEUN-YI-NIEUNCIEUC
-0x8876 0xB2B2 # HANGUL SYLLABLE NIEUN-YI-NIEUNHIEUH
-0x8877 0xB2B3 # HANGUL SYLLABLE NIEUN-YI-TIKEUT
-0x8878 0xB2B5 # HANGUL SYLLABLE NIEUN-YI-RIEULKIYEOK
-0x8879 0xB2B6 # HANGUL SYLLABLE NIEUN-YI-RIEULMIEUM
-0x887A 0xB2B7 # HANGUL SYLLABLE NIEUN-YI-RIEULPIEUP
-0x8881 0xB2B8 # HANGUL SYLLABLE NIEUN-YI-RIEULSIOS
-0x8882 0xB2B9 # HANGUL SYLLABLE NIEUN-YI-RIEULTHIEUTH
-0x8883 0xB2BA # HANGUL SYLLABLE NIEUN-YI-RIEULPHIEUPH
-0x8884 0xB2BB # HANGUL SYLLABLE NIEUN-YI-RIEULHIEUH
-0x8885 0xB2BC # HANGUL SYLLABLE NIEUN-YI-MIEUM
-0x8886 0xB2BD # HANGUL SYLLABLE NIEUN-YI-PIEUP
-0x8887 0xB2BE # HANGUL SYLLABLE NIEUN-YI-PIEUPSIOS
-0x8888 0xB2BF # HANGUL SYLLABLE NIEUN-YI-SIOS
-0x8889 0xB2C0 # HANGUL SYLLABLE NIEUN-YI-SSANGSIOS
-0x888A 0xB2C1 # HANGUL SYLLABLE NIEUN-YI-IEUNG
-0x888B 0xB2C2 # HANGUL SYLLABLE NIEUN-YI-CIEUC
-0x888C 0xB2C3 # HANGUL SYLLABLE NIEUN-YI-CHIEUCH
-0x888D 0xB2C4 # HANGUL SYLLABLE NIEUN-YI-KHIEUKH
-0x888E 0xB2C5 # HANGUL SYLLABLE NIEUN-YI-THIEUTH
-0x888F 0xB2C6 # HANGUL SYLLABLE NIEUN-YI-PHIEUPH
-0x8890 0xB2C7 # HANGUL SYLLABLE NIEUN-YI-HIEUH
-0x8891 0xB2CA # HANGUL SYLLABLE NIEUN-I-SSANGKIYEOK
-0x8892 0xB2CB # HANGUL SYLLABLE NIEUN-I-KIYEOKSIOS
-0x8893 0xB2CD # HANGUL SYLLABLE NIEUN-I-NIEUNCIEUC
-0x8894 0xB2CE # HANGUL SYLLABLE NIEUN-I-NIEUNHIEUH
-0x8895 0xB2CF # HANGUL SYLLABLE NIEUN-I-TIKEUT
-0x8896 0xB2D1 # HANGUL SYLLABLE NIEUN-I-RIEULKIYEOK
-0x8897 0xB2D3 # HANGUL SYLLABLE NIEUN-I-RIEULPIEUP--<3/22/95>
-0x8898 0xB2D4 # HANGUL SYLLABLE NIEUN-I-RIEULSIOS---<3/22/95>
-0x8899 0xB2D5 # HANGUL SYLLABLE NIEUN-I-RIEULTHIEUTH<3/22/95>
-0x889A 0xB2D6 # HANGUL SYLLABLE NIEUN-I-RIEULPHIEUPH<3/22/95>
-0x889B 0xB2D7 # HANGUL SYLLABLE NIEUN-I-RIEULHIEUH
-0x889C 0xB2DA # HANGUL SYLLABLE NIEUN-I-PIEUPSIOS
-0x889D 0xB2DC # HANGUL SYLLABLE NIEUN-I-SSANGSIOS
-0x889E 0xB2DE # HANGUL SYLLABLE NIEUN-I-CIEUC
-0x889F 0xB2DF # HANGUL SYLLABLE NIEUN-I-CHIEUCH
-0x88A0 0xB2E0 # HANGUL SYLLABLE NIEUN-I-KHIEUKH
-0x88A1 0xB2E1 # HANGUL SYLLABLE NIEUN-I-THIEUTH
-0x88A2 0xB2E3 # HANGUL SYLLABLE NIEUN-I-HIEUH
-0x88A3 0xB2E7 # HANGUL SYLLABLE TIKEUT-A-KIYEOKSIOS
-0x88A4 0xB2E9 # HANGUL SYLLABLE TIKEUT-A-NIEUNCIEUC
-0x88A5 0xB2EA # HANGUL SYLLABLE TIKEUT-A-NIEUNHIEUH
-0x88A6 0xB2F0 # HANGUL SYLLABLE TIKEUT-A-RIEULSIOS
-0x88A7 0xB2F1 # HANGUL SYLLABLE TIKEUT-A-RIEULTHIEUTH
-0x88A8 0xB2F2 # HANGUL SYLLABLE TIKEUT-A-RIEULPHIEUPH
-0x88A9 0xB2F6 # HANGUL SYLLABLE TIKEUT-A-PIEUPSIOS
-0x88AA 0xB2FC # HANGUL SYLLABLE TIKEUT-A-KHIEUKH
-0x88AB 0xB2FD # HANGUL SYLLABLE TIKEUT-A-THIEUTH
-0x88AC 0xB2FE # HANGUL SYLLABLE TIKEUT-A-PHIEUPH
-0x88AD 0xB302 # HANGUL SYLLABLE TIKEUT-AE-SSANGKIYEOK
-0x88AE 0xB303 # HANGUL SYLLABLE TIKEUT-AE-KIYEOKSIOS
-0x88AF 0xB305 # HANGUL SYLLABLE TIKEUT-AE-NIEUNCIEUC
-0x88B0 0xB306 # HANGUL SYLLABLE TIKEUT-AE-NIEUNHIEUH
-0x88B1 0xB307 # HANGUL SYLLABLE TIKEUT-AE-TIKEUT
-0x88B2 0xB309 # HANGUL SYLLABLE TIKEUT-AE-RIEULKIYEOK
-0x88B3 0xB30A # HANGUL SYLLABLE TIKEUT-AE-RIEULMIEUM
-0x88B4 0xB30B # HANGUL SYLLABLE TIKEUT-AE-RIEULPIEUP
-0x88B5 0xB30C # HANGUL SYLLABLE TIKEUT-AE-RIEULSIOS
-0x88B6 0xB30D # HANGUL SYLLABLE TIKEUT-AE-RIEULTHIEUTH
-0x88B7 0xB30E # HANGUL SYLLABLE TIKEUT-AE-RIEULPHIEUPH
-0x88B8 0xB30F # HANGUL SYLLABLE TIKEUT-AE-RIEULHIEUH
-0x88B9 0xB312 # HANGUL SYLLABLE TIKEUT-AE-PIEUPSIOS
-0x88BA 0xB316 # HANGUL SYLLABLE TIKEUT-AE-CIEUC
-0x88BB 0xB317 # HANGUL SYLLABLE TIKEUT-AE-CHIEUCH
-0x88BC 0xB318 # HANGUL SYLLABLE TIKEUT-AE-KHIEUKH
-0x88BD 0xB319 # HANGUL SYLLABLE TIKEUT-AE-THIEUTH
-0x88BE 0xB31A # HANGUL SYLLABLE TIKEUT-AE-PHIEUPH
-0x88BF 0xB31B # HANGUL SYLLABLE TIKEUT-AE-HIEUH
-0x88C0 0xB31D # HANGUL SYLLABLE TIKEUT-YA-KIYEOK
-0x88C1 0xB31E # HANGUL SYLLABLE TIKEUT-YA-SSANGKIYEOK
-0x88C2 0xB31F # HANGUL SYLLABLE TIKEUT-YA-KIYEOKSIOS
-0x88C3 0xB320 # HANGUL SYLLABLE TIKEUT-YA-NIEUN
-0x88C4 0xB321 # HANGUL SYLLABLE TIKEUT-YA-NIEUNCIEUC
-0x88C5 0xB322 # HANGUL SYLLABLE TIKEUT-YA-NIEUNHIEUH
-0x88C6 0xB323 # HANGUL SYLLABLE TIKEUT-YA-TIKEUT
-0x88C7 0xB324 # HANGUL SYLLABLE TIKEUT-YA-RIEUL
-0x88C8 0xB325 # HANGUL SYLLABLE TIKEUT-YA-RIEULKIYEOK
-0x88C9 0xB326 # HANGUL SYLLABLE TIKEUT-YA-RIEULMIEUM
-0x88CA 0xB327 # HANGUL SYLLABLE TIKEUT-YA-RIEULPIEUP
-0x88CB 0xB328 # HANGUL SYLLABLE TIKEUT-YA-RIEULSIOS
-0x88CC 0xB329 # HANGUL SYLLABLE TIKEUT-YA-RIEULTHIEUTH
-0x88CD 0xB32A # HANGUL SYLLABLE TIKEUT-YA-RIEULPHIEUPH
-0x88CE 0xB32B # HANGUL SYLLABLE TIKEUT-YA-RIEULHIEUH
-0x88CF 0xB32C # HANGUL SYLLABLE TIKEUT-YA-MIEUM
-0x88D0 0xB32D # HANGUL SYLLABLE TIKEUT-YA-PIEUP
-0x88D1 0xB32E # HANGUL SYLLABLE TIKEUT-YA-PIEUPSIOS
-0x88D2 0xB32F # HANGUL SYLLABLE TIKEUT-YA-SIOS
-0x88D3 0xB330 # HANGUL SYLLABLE TIKEUT-YA-SSANGSIOS
-0x88D4 0xB331 # HANGUL SYLLABLE TIKEUT-YA-IEUNG
-0x88D5 0xB332 # HANGUL SYLLABLE TIKEUT-YA-CIEUC
-0x88D6 0xB333 # HANGUL SYLLABLE TIKEUT-YA-CHIEUCH
-0x88D7 0xB334 # HANGUL SYLLABLE TIKEUT-YA-KHIEUKH
-0x88D8 0xB335 # HANGUL SYLLABLE TIKEUT-YA-THIEUTH
-0x88D9 0xB336 # HANGUL SYLLABLE TIKEUT-YA-PHIEUPH
-0x88DA 0xB337 # HANGUL SYLLABLE TIKEUT-YA-HIEUH
-0x88DB 0xB338 # HANGUL SYLLABLE TIKEUT-YAE
-0x88DC 0xB339 # HANGUL SYLLABLE TIKEUT-YAE-KIYEOK
-0x88DD 0xB33A # HANGUL SYLLABLE TIKEUT-YAE-SSANGKIYEOK
-0x88DE 0xB33B # HANGUL SYLLABLE TIKEUT-YAE-KIYEOKSIOS
-0x88DF 0xB33C # HANGUL SYLLABLE TIKEUT-YAE-NIEUN
-0x88E0 0xB33D # HANGUL SYLLABLE TIKEUT-YAE-NIEUNCIEUC
-0x88E1 0xB33E # HANGUL SYLLABLE TIKEUT-YAE-NIEUNHIEUH
-0x88E2 0xB33F # HANGUL SYLLABLE TIKEUT-YAE-TIKEUT
-0x88E3 0xB340 # HANGUL SYLLABLE TIKEUT-YAE-RIEUL
-0x88E4 0xB341 # HANGUL SYLLABLE TIKEUT-YAE-RIEULKIYEOK
-0x88E5 0xB342 # HANGUL SYLLABLE TIKEUT-YAE-RIEULMIEUM
-0x88E6 0xB343 # HANGUL SYLLABLE TIKEUT-YAE-RIEULPIEUP
-0x88E7 0xB344 # HANGUL SYLLABLE TIKEUT-YAE-RIEULSIOS
-0x88E8 0xB345 # HANGUL SYLLABLE TIKEUT-YAE-RIEULTHIEUTH
-0x88E9 0xB346 # HANGUL SYLLABLE TIKEUT-YAE-RIEULPHIEUPH
-0x88EA 0xB347 # HANGUL SYLLABLE TIKEUT-YAE-RIEULHIEUH
-0x88EB 0xB348 # HANGUL SYLLABLE TIKEUT-YAE-MIEUM
-0x88EC 0xB349 # HANGUL SYLLABLE TIKEUT-YAE-PIEUP
-0x88ED 0xB34A # HANGUL SYLLABLE TIKEUT-YAE-PIEUPSIOS
-0x88EE 0xB34B # HANGUL SYLLABLE TIKEUT-YAE-SIOS
-0x88EF 0xB34C # HANGUL SYLLABLE TIKEUT-YAE-SSANGSIOS
-0x88F0 0xB34D # HANGUL SYLLABLE TIKEUT-YAE-IEUNG
-0x88F1 0xB34E # HANGUL SYLLABLE TIKEUT-YAE-CIEUC
-0x88F2 0xB34F # HANGUL SYLLABLE TIKEUT-YAE-CHIEUCH
-0x88F3 0xB350 # HANGUL SYLLABLE TIKEUT-YAE-KHIEUKH
-0x88F4 0xB351 # HANGUL SYLLABLE TIKEUT-YAE-THIEUTH
-0x88F5 0xB352 # HANGUL SYLLABLE TIKEUT-YAE-PHIEUPH
-0x88F6 0xB353 # HANGUL SYLLABLE TIKEUT-YAE-HIEUH
-0x88F7 0xB357 # HANGUL SYLLABLE TIKEUT-EO-KIYEOKSIOS
-0x88F8 0xB359 # HANGUL SYLLABLE TIKEUT-EO-NIEUNCIEUC
-0x88F9 0xB35A # HANGUL SYLLABLE TIKEUT-EO-NIEUNHIEUH
-0x88FA 0xB35D # HANGUL SYLLABLE TIKEUT-EO-RIEULKIYEOK
-0x88FB 0xB360 # HANGUL SYLLABLE TIKEUT-EO-RIEULSIOS
-0x88FC 0xB361 # HANGUL SYLLABLE TIKEUT-EO-RIEULTHIEUTH
-0x88FD 0xB362 # HANGUL SYLLABLE TIKEUT-EO-RIEULPHIEUPH
-0x88FE 0xB363 # HANGUL SYLLABLE TIKEUT-EO-RIEULHIEUH
-0x8941 0xB366 # HANGUL SYLLABLE TIKEUT-EO-PIEUPSIOS
-0x8942 0xB368 # HANGUL SYLLABLE TIKEUT-EO-SSANGSIOS
-0x8943 0xB36A # HANGUL SYLLABLE TIKEUT-EO-CIEUC
-0x8944 0xB36C # HANGUL SYLLABLE TIKEUT-EO-KHIEUKH
-0x8945 0xB36D # HANGUL SYLLABLE TIKEUT-EO-THIEUTH
-0x8946 0xB36F # HANGUL SYLLABLE TIKEUT-EO-HIEUH
-0x8947 0xB372 # HANGUL SYLLABLE TIKEUT-E-SSANGKIYEOK
-0x8948 0xB373 # HANGUL SYLLABLE TIKEUT-E-KIYEOKSIOS
-0x8949 0xB375 # HANGUL SYLLABLE TIKEUT-E-NIEUNCIEUC
-0x894A 0xB376 # HANGUL SYLLABLE TIKEUT-E-NIEUNHIEUH
-0x894B 0xB377 # HANGUL SYLLABLE TIKEUT-E-TIKEUT
-0x894C 0xB379 # HANGUL SYLLABLE TIKEUT-E-RIEULKIYEOK
-0x894D 0xB37A # HANGUL SYLLABLE TIKEUT-E-RIEULMIEUM
-0x894E 0xB37B # HANGUL SYLLABLE TIKEUT-E-RIEULPIEUP
-0x894F 0xB37C # HANGUL SYLLABLE TIKEUT-E-RIEULSIOS
-0x8950 0xB37D # HANGUL SYLLABLE TIKEUT-E-RIEULTHIEUTH
-0x8951 0xB37E # HANGUL SYLLABLE TIKEUT-E-RIEULPHIEUPH
-0x8952 0xB37F # HANGUL SYLLABLE TIKEUT-E-RIEULHIEUH
-0x8953 0xB382 # HANGUL SYLLABLE TIKEUT-E-PIEUPSIOS
-0x8954 0xB386 # HANGUL SYLLABLE TIKEUT-E-CIEUC
-0x8955 0xB387 # HANGUL SYLLABLE TIKEUT-E-CHIEUCH
-0x8956 0xB388 # HANGUL SYLLABLE TIKEUT-E-KHIEUKH
-0x8957 0xB389 # HANGUL SYLLABLE TIKEUT-E-THIEUTH
-0x8958 0xB38A # HANGUL SYLLABLE TIKEUT-E-PHIEUPH
-0x8959 0xB38B # HANGUL SYLLABLE TIKEUT-E-HIEUH
-0x895A 0xB38D # HANGUL SYLLABLE TIKEUT-YEO-KIYEOK
-0x8961 0xB38E # HANGUL SYLLABLE TIKEUT-YEO-SSANGKIYEOK
-0x8962 0xB38F # HANGUL SYLLABLE TIKEUT-YEO-KIYEOKSIOS
-0x8963 0xB391 # HANGUL SYLLABLE TIKEUT-YEO-NIEUNCIEUC
-0x8964 0xB392 # HANGUL SYLLABLE TIKEUT-YEO-NIEUNHIEUH
-0x8965 0xB393 # HANGUL SYLLABLE TIKEUT-YEO-TIKEUT
-0x8966 0xB395 # HANGUL SYLLABLE TIKEUT-YEO-RIEULKIYEOK
-0x8967 0xB396 # HANGUL SYLLABLE TIKEUT-YEO-RIEULMIEUM
-0x8968 0xB397 # HANGUL SYLLABLE TIKEUT-YEO-RIEULPIEUP
-0x8969 0xB398 # HANGUL SYLLABLE TIKEUT-YEO-RIEULSIOS
-0x896A 0xB399 # HANGUL SYLLABLE TIKEUT-YEO-RIEULTHIEUTH
-0x896B 0xB39A # HANGUL SYLLABLE TIKEUT-YEO-RIEULPHIEUPH
-0x896C 0xB39B # HANGUL SYLLABLE TIKEUT-YEO-RIEULHIEUH
-0x896D 0xB39C # HANGUL SYLLABLE TIKEUT-YEO-MIEUM
-0x896E 0xB39D # HANGUL SYLLABLE TIKEUT-YEO-PIEUP
-0x896F 0xB39E # HANGUL SYLLABLE TIKEUT-YEO-PIEUPSIOS
-0x8970 0xB39F # HANGUL SYLLABLE TIKEUT-YEO-SIOS
-0x8971 0xB3A2 # HANGUL SYLLABLE TIKEUT-YEO-CIEUC
-0x8972 0xB3A3 # HANGUL SYLLABLE TIKEUT-YEO-CHIEUCH
-0x8973 0xB3A4 # HANGUL SYLLABLE TIKEUT-YEO-KHIEUKH
-0x8974 0xB3A5 # HANGUL SYLLABLE TIKEUT-YEO-THIEUTH
-0x8975 0xB3A6 # HANGUL SYLLABLE TIKEUT-YEO-PHIEUPH
-0x8976 0xB3A7 # HANGUL SYLLABLE TIKEUT-YEO-HIEUH
-0x8977 0xB3A9 # HANGUL SYLLABLE TIKEUT-YE-KIYEOK
-0x8978 0xB3AA # HANGUL SYLLABLE TIKEUT-YE-SSANGKIYEOK
-0x8979 0xB3AB # HANGUL SYLLABLE TIKEUT-YE-KIYEOKSIOS
-0x897A 0xB3AD # HANGUL SYLLABLE TIKEUT-YE-NIEUNCIEUC
-0x8981 0xB3AE # HANGUL SYLLABLE TIKEUT-YE-NIEUNHIEUH
-0x8982 0xB3AF # HANGUL SYLLABLE TIKEUT-YE-TIKEUT
-0x8983 0xB3B0 # HANGUL SYLLABLE TIKEUT-YE-RIEUL
-0x8984 0xB3B1 # HANGUL SYLLABLE TIKEUT-YE-RIEULKIYEOK
-0x8985 0xB3B2 # HANGUL SYLLABLE TIKEUT-YE-RIEULMIEUM
-0x8986 0xB3B3 # HANGUL SYLLABLE TIKEUT-YE-RIEULPIEUP
-0x8987 0xB3B4 # HANGUL SYLLABLE TIKEUT-YE-RIEULSIOS
-0x8988 0xB3B5 # HANGUL SYLLABLE TIKEUT-YE-RIEULTHIEUTH
-0x8989 0xB3B6 # HANGUL SYLLABLE TIKEUT-YE-RIEULPHIEUPH
-0x898A 0xB3B7 # HANGUL SYLLABLE TIKEUT-YE-RIEULHIEUH
-0x898B 0xB3B8 # HANGUL SYLLABLE TIKEUT-YE-MIEUM
-0x898C 0xB3B9 # HANGUL SYLLABLE TIKEUT-YE-PIEUP
-0x898D 0xB3BA # HANGUL SYLLABLE TIKEUT-YE-PIEUPSIOS
-0x898E 0xB3BB # HANGUL SYLLABLE TIKEUT-YE-SIOS
-0x898F 0xB3BC # HANGUL SYLLABLE TIKEUT-YE-SSANGSIOS
-0x8990 0xB3BD # HANGUL SYLLABLE TIKEUT-YE-IEUNG
-0x8991 0xB3BE # HANGUL SYLLABLE TIKEUT-YE-CIEUC
-0x8992 0xB3BF # HANGUL SYLLABLE TIKEUT-YE-CHIEUCH
-0x8993 0xB3C0 # HANGUL SYLLABLE TIKEUT-YE-KHIEUKH
-0x8994 0xB3C1 # HANGUL SYLLABLE TIKEUT-YE-THIEUTH
-0x8995 0xB3C2 # HANGUL SYLLABLE TIKEUT-YE-PHIEUPH
-0x8996 0xB3C3 # HANGUL SYLLABLE TIKEUT-YE-HIEUH
-0x8997 0xB3C6 # HANGUL SYLLABLE TIKEUT-O-SSANGKIYEOK
-0x8998 0xB3C7 # HANGUL SYLLABLE TIKEUT-O-KIYEOKSIOS
-0x8999 0xB3C9 # HANGUL SYLLABLE TIKEUT-O-NIEUNCIEUC
-0x899A 0xB3CA # HANGUL SYLLABLE TIKEUT-O-NIEUNHIEUH
-0x899B 0xB3CD # HANGUL SYLLABLE TIKEUT-O-RIEULKIYEOK
-0x899C 0xB3CF # HANGUL SYLLABLE TIKEUT-O-RIEULPIEUP
-0x899D 0xB3D1 # HANGUL SYLLABLE TIKEUT-O-RIEULTHIEUTH
-0x899E 0xB3D2 # HANGUL SYLLABLE TIKEUT-O-RIEULPHIEUPH
-0x899F 0xB3D3 # HANGUL SYLLABLE TIKEUT-O-RIEULHIEUH
-0x89A0 0xB3D6 # HANGUL SYLLABLE TIKEUT-O-PIEUPSIOS
-0x89A1 0xB3D8 # HANGUL SYLLABLE TIKEUT-O-SSANGSIOS
-0x89A2 0xB3DA # HANGUL SYLLABLE TIKEUT-O-CIEUC
-0x89A3 0xB3DC # HANGUL SYLLABLE TIKEUT-O-KHIEUKH
-0x89A4 0xB3DE # HANGUL SYLLABLE TIKEUT-O-PHIEUPH
-0x89A5 0xB3DF # HANGUL SYLLABLE TIKEUT-O-HIEUH
-0x89A6 0xB3E1 # HANGUL SYLLABLE TIKEUT-WA-KIYEOK
-0x89A7 0xB3E2 # HANGUL SYLLABLE TIKEUT-WA-SSANGKIYEOK
-0x89A8 0xB3E3 # HANGUL SYLLABLE TIKEUT-WA-KIYEOKSIOS
-0x89A9 0xB3E5 # HANGUL SYLLABLE TIKEUT-WA-NIEUNCIEUC
-0x89AA 0xB3E6 # HANGUL SYLLABLE TIKEUT-WA-NIEUNHIEUH
-0x89AB 0xB3E7 # HANGUL SYLLABLE TIKEUT-WA-TIKEUT
-0x89AC 0xB3E9 # HANGUL SYLLABLE TIKEUT-WA-RIEULKIYEOK
-0x89AD 0xB3EA # HANGUL SYLLABLE TIKEUT-WA-RIEULMIEUM
-0x89AE 0xB3EB # HANGUL SYLLABLE TIKEUT-WA-RIEULPIEUP
-0x89AF 0xB3EC # HANGUL SYLLABLE TIKEUT-WA-RIEULSIOS
-0x89B0 0xB3ED # HANGUL SYLLABLE TIKEUT-WA-RIEULTHIEUTH
-0x89B1 0xB3EE # HANGUL SYLLABLE TIKEUT-WA-RIEULPHIEUPH
-0x89B2 0xB3EF # HANGUL SYLLABLE TIKEUT-WA-RIEULHIEUH
-0x89B3 0xB3F0 # HANGUL SYLLABLE TIKEUT-WA-MIEUM
-0x89B4 0xB3F1 # HANGUL SYLLABLE TIKEUT-WA-PIEUP
-0x89B5 0xB3F2 # HANGUL SYLLABLE TIKEUT-WA-PIEUPSIOS
-0x89B6 0xB3F3 # HANGUL SYLLABLE TIKEUT-WA-SIOS
-0x89B7 0xB3F4 # HANGUL SYLLABLE TIKEUT-WA-SSANGSIOS
-0x89B8 0xB3F5 # HANGUL SYLLABLE TIKEUT-WA-IEUNG
-0x89B9 0xB3F6 # HANGUL SYLLABLE TIKEUT-WA-CIEUC
-0x89BA 0xB3F7 # HANGUL SYLLABLE TIKEUT-WA-CHIEUCH
-0x89BB 0xB3F8 # HANGUL SYLLABLE TIKEUT-WA-KHIEUKH
-0x89BC 0xB3F9 # HANGUL SYLLABLE TIKEUT-WA-THIEUTH
-0x89BD 0xB3FA # HANGUL SYLLABLE TIKEUT-WA-PHIEUPH
-0x89BE 0xB3FB # HANGUL SYLLABLE TIKEUT-WA-HIEUH
-0x89BF 0xB3FD # HANGUL SYLLABLE TIKEUT-WAE-KIYEOK
-0x89C0 0xB3FE # HANGUL SYLLABLE TIKEUT-WAE-SSANGKIYEOK
-0x89C1 0xB3FF # HANGUL SYLLABLE TIKEUT-WAE-KIYEOKSIOS
-0x89C2 0xB400 # HANGUL SYLLABLE TIKEUT-WAE-NIEUN
-0x89C3 0xB401 # HANGUL SYLLABLE TIKEUT-WAE-NIEUNCIEUC
-0x89C4 0xB402 # HANGUL SYLLABLE TIKEUT-WAE-NIEUNHIEUH
-0x89C5 0xB403 # HANGUL SYLLABLE TIKEUT-WAE-TIKEUT
-0x89C6 0xB404 # HANGUL SYLLABLE TIKEUT-WAE-RIEUL
-0x89C7 0xB405 # HANGUL SYLLABLE TIKEUT-WAE-RIEULKIYEOK
-0x89C8 0xB406 # HANGUL SYLLABLE TIKEUT-WAE-RIEULMIEUM
-0x89C9 0xB407 # HANGUL SYLLABLE TIKEUT-WAE-RIEULPIEUP
-0x89CA 0xB408 # HANGUL SYLLABLE TIKEUT-WAE-RIEULSIOS
-0x89CB 0xB409 # HANGUL SYLLABLE TIKEUT-WAE-RIEULTHIEUTH
-0x89CC 0xB40A # HANGUL SYLLABLE TIKEUT-WAE-RIEULPHIEUPH
-0x89CD 0xB40B # HANGUL SYLLABLE TIKEUT-WAE-RIEULHIEUH
-0x89CE 0xB40C # HANGUL SYLLABLE TIKEUT-WAE-MIEUM
-0x89CF 0xB40D # HANGUL SYLLABLE TIKEUT-WAE-PIEUP
-0x89D0 0xB40E # HANGUL SYLLABLE TIKEUT-WAE-PIEUPSIOS
-0x89D1 0xB40F # HANGUL SYLLABLE TIKEUT-WAE-SIOS
-0x89D2 0xB411 # HANGUL SYLLABLE TIKEUT-WAE-IEUNG
-0x89D3 0xB412 # HANGUL SYLLABLE TIKEUT-WAE-CIEUC
-0x89D4 0xB413 # HANGUL SYLLABLE TIKEUT-WAE-CHIEUCH
-0x89D5 0xB414 # HANGUL SYLLABLE TIKEUT-WAE-KHIEUKH
-0x89D6 0xB415 # HANGUL SYLLABLE TIKEUT-WAE-THIEUTH
-0x89D7 0xB416 # HANGUL SYLLABLE TIKEUT-WAE-PHIEUPH
-0x89D8 0xB417 # HANGUL SYLLABLE TIKEUT-WAE-HIEUH
-0x89D9 0xB419 # HANGUL SYLLABLE TIKEUT-OE-KIYEOK
-0x89DA 0xB41A # HANGUL SYLLABLE TIKEUT-OE-SSANGKIYEOK
-0x89DB 0xB41B # HANGUL SYLLABLE TIKEUT-OE-KIYEOKSIOS
-0x89DC 0xB41D # HANGUL SYLLABLE TIKEUT-OE-NIEUNCIEUC
-0x89DD 0xB41E # HANGUL SYLLABLE TIKEUT-OE-NIEUNHIEUH
-0x89DE 0xB41F # HANGUL SYLLABLE TIKEUT-OE-TIKEUT
-0x89DF 0xB421 # HANGUL SYLLABLE TIKEUT-OE-RIEULKIYEOK
-0x89E0 0xB422 # HANGUL SYLLABLE TIKEUT-OE-RIEULMIEUM
-0x89E1 0xB423 # HANGUL SYLLABLE TIKEUT-OE-RIEULPIEUP
-0x89E2 0xB424 # HANGUL SYLLABLE TIKEUT-OE-RIEULSIOS
-0x89E3 0xB425 # HANGUL SYLLABLE TIKEUT-OE-RIEULTHIEUTH
-0x89E4 0xB426 # HANGUL SYLLABLE TIKEUT-OE-RIEULPHIEUPH
-0x89E5 0xB427 # HANGUL SYLLABLE TIKEUT-OE-RIEULHIEUH
-0x89E6 0xB42A # HANGUL SYLLABLE TIKEUT-OE-PIEUPSIOS
-0x89E7 0xB42C # HANGUL SYLLABLE TIKEUT-OE-SSANGSIOS
-0x89E8 0xB42D # HANGUL SYLLABLE TIKEUT-OE-IEUNG
-0x89E9 0xB42E # HANGUL SYLLABLE TIKEUT-OE-CIEUC
-0x89EA 0xB42F # HANGUL SYLLABLE TIKEUT-OE-CHIEUCH
-0x89EB 0xB430 # HANGUL SYLLABLE TIKEUT-OE-KHIEUKH
-0x89EC 0xB431 # HANGUL SYLLABLE TIKEUT-OE-THIEUTH
-0x89ED 0xB432 # HANGUL SYLLABLE TIKEUT-OE-PHIEUPH
-0x89EE 0xB433 # HANGUL SYLLABLE TIKEUT-OE-HIEUH
-0x89EF 0xB435 # HANGUL SYLLABLE TIKEUT-YO-KIYEOK
-0x89F0 0xB436 # HANGUL SYLLABLE TIKEUT-YO-SSANGKIYEOK
-0x89F1 0xB437 # HANGUL SYLLABLE TIKEUT-YO-KIYEOKSIOS
-0x89F2 0xB438 # HANGUL SYLLABLE TIKEUT-YO-NIEUN
-0x89F3 0xB439 # HANGUL SYLLABLE TIKEUT-YO-NIEUNCIEUC
-0x89F4 0xB43A # HANGUL SYLLABLE TIKEUT-YO-NIEUNHIEUH
-0x89F5 0xB43B # HANGUL SYLLABLE TIKEUT-YO-TIKEUT
-0x89F6 0xB43C # HANGUL SYLLABLE TIKEUT-YO-RIEUL
-0x89F7 0xB43D # HANGUL SYLLABLE TIKEUT-YO-RIEULKIYEOK
-0x89F8 0xB43E # HANGUL SYLLABLE TIKEUT-YO-RIEULMIEUM
-0x89F9 0xB43F # HANGUL SYLLABLE TIKEUT-YO-RIEULPIEUP
-0x89FA 0xB440 # HANGUL SYLLABLE TIKEUT-YO-RIEULSIOS
-0x89FB 0xB441 # HANGUL SYLLABLE TIKEUT-YO-RIEULTHIEUTH
-0x89FC 0xB442 # HANGUL SYLLABLE TIKEUT-YO-RIEULPHIEUPH
-0x89FD 0xB443 # HANGUL SYLLABLE TIKEUT-YO-RIEULHIEUH
-0x89FE 0xB444 # HANGUL SYLLABLE TIKEUT-YO-MIEUM
-0x8A41 0xB445 # HANGUL SYLLABLE TIKEUT-YO-PIEUP
-0x8A42 0xB446 # HANGUL SYLLABLE TIKEUT-YO-PIEUPSIOS
-0x8A43 0xB447 # HANGUL SYLLABLE TIKEUT-YO-SIOS
-0x8A44 0xB448 # HANGUL SYLLABLE TIKEUT-YO-SSANGSIOS
-0x8A45 0xB449 # HANGUL SYLLABLE TIKEUT-YO-IEUNG
-0x8A46 0xB44A # HANGUL SYLLABLE TIKEUT-YO-CIEUC
-0x8A47 0xB44B # HANGUL SYLLABLE TIKEUT-YO-CHIEUCH
-0x8A48 0xB44C # HANGUL SYLLABLE TIKEUT-YO-KHIEUKH
-0x8A49 0xB44D # HANGUL SYLLABLE TIKEUT-YO-THIEUTH
-0x8A4A 0xB44E # HANGUL SYLLABLE TIKEUT-YO-PHIEUPH
-0x8A4B 0xB44F # HANGUL SYLLABLE TIKEUT-YO-HIEUH
-0x8A4C 0xB452 # HANGUL SYLLABLE TIKEUT-U-SSANGKIYEOK
-0x8A4D 0xB453 # HANGUL SYLLABLE TIKEUT-U-KIYEOKSIOS
-0x8A4E 0xB455 # HANGUL SYLLABLE TIKEUT-U-NIEUNCIEUC
-0x8A4F 0xB456 # HANGUL SYLLABLE TIKEUT-U-NIEUNHIEUH
-0x8A50 0xB457 # HANGUL SYLLABLE TIKEUT-U-TIKEUT
-0x8A51 0xB459 # HANGUL SYLLABLE TIKEUT-U-RIEULKIYEOK
-0x8A52 0xB45A # HANGUL SYLLABLE TIKEUT-U-RIEULMIEUM
-0x8A53 0xB45B # HANGUL SYLLABLE TIKEUT-U-RIEULPIEUP
-0x8A54 0xB45C # HANGUL SYLLABLE TIKEUT-U-RIEULSIOS
-0x8A55 0xB45D # HANGUL SYLLABLE TIKEUT-U-RIEULTHIEUTH
-0x8A56 0xB45E # HANGUL SYLLABLE TIKEUT-U-RIEULPHIEUPH
-0x8A57 0xB45F # HANGUL SYLLABLE TIKEUT-U-RIEULHIEUH
-0x8A58 0xB462 # HANGUL SYLLABLE TIKEUT-U-PIEUPSIOS
-0x8A59 0xB464 # HANGUL SYLLABLE TIKEUT-U-SSANGSIOS
-0x8A5A 0xB466 # HANGUL SYLLABLE TIKEUT-U-CIEUC
-0x8A61 0xB467 # HANGUL SYLLABLE TIKEUT-U-CHIEUCH
-0x8A62 0xB468 # HANGUL SYLLABLE TIKEUT-U-KHIEUKH
-0x8A63 0xB469 # HANGUL SYLLABLE TIKEUT-U-THIEUTH
-0x8A64 0xB46A # HANGUL SYLLABLE TIKEUT-U-PHIEUPH
-0x8A65 0xB46B # HANGUL SYLLABLE TIKEUT-U-HIEUH
-0x8A66 0xB46D # HANGUL SYLLABLE TIKEUT-WEO-KIYEOK
-0x8A67 0xB46E # HANGUL SYLLABLE TIKEUT-WEO-SSANGKIYEOK
-0x8A68 0xB46F # HANGUL SYLLABLE TIKEUT-WEO-KIYEOKSIOS
-0x8A69 0xB470 # HANGUL SYLLABLE TIKEUT-WEO-NIEUN
-0x8A6A 0xB471 # HANGUL SYLLABLE TIKEUT-WEO-NIEUNCIEUC
-0x8A6B 0xB472 # HANGUL SYLLABLE TIKEUT-WEO-NIEUNHIEUH
-0x8A6C 0xB473 # HANGUL SYLLABLE TIKEUT-WEO-TIKEUT
-0x8A6D 0xB474 # HANGUL SYLLABLE TIKEUT-WEO-RIEUL
-0x8A6E 0xB475 # HANGUL SYLLABLE TIKEUT-WEO-RIEULKIYEOK
-0x8A6F 0xB476 # HANGUL SYLLABLE TIKEUT-WEO-RIEULMIEUM
-0x8A70 0xB477 # HANGUL SYLLABLE TIKEUT-WEO-RIEULPIEUP
-0x8A71 0xB478 # HANGUL SYLLABLE TIKEUT-WEO-RIEULSIOS
-0x8A72 0xB479 # HANGUL SYLLABLE TIKEUT-WEO-RIEULTHIEUTH
-0x8A73 0xB47A # HANGUL SYLLABLE TIKEUT-WEO-RIEULPHIEUPH
-0x8A74 0xB47B # HANGUL SYLLABLE TIKEUT-WEO-RIEULHIEUH
-0x8A75 0xB47C # HANGUL SYLLABLE TIKEUT-WEO-MIEUM
-0x8A76 0xB47D # HANGUL SYLLABLE TIKEUT-WEO-PIEUP
-0x8A77 0xB47E # HANGUL SYLLABLE TIKEUT-WEO-PIEUPSIOS
-0x8A78 0xB47F # HANGUL SYLLABLE TIKEUT-WEO-SIOS
-0x8A79 0xB481 # HANGUL SYLLABLE TIKEUT-WEO-IEUNG
-0x8A7A 0xB482 # HANGUL SYLLABLE TIKEUT-WEO-CIEUC
-0x8A81 0xB483 # HANGUL SYLLABLE TIKEUT-WEO-CHIEUCH
-0x8A82 0xB484 # HANGUL SYLLABLE TIKEUT-WEO-KHIEUKH
-0x8A83 0xB485 # HANGUL SYLLABLE TIKEUT-WEO-THIEUTH
-0x8A84 0xB486 # HANGUL SYLLABLE TIKEUT-WEO-PHIEUPH
-0x8A85 0xB487 # HANGUL SYLLABLE TIKEUT-WEO-HIEUH
-0x8A86 0xB489 # HANGUL SYLLABLE TIKEUT-WE-KIYEOK
-0x8A87 0xB48A # HANGUL SYLLABLE TIKEUT-WE-SSANGKIYEOK
-0x8A88 0xB48B # HANGUL SYLLABLE TIKEUT-WE-KIYEOKSIOS
-0x8A89 0xB48C # HANGUL SYLLABLE TIKEUT-WE-NIEUN
-0x8A8A 0xB48D # HANGUL SYLLABLE TIKEUT-WE-NIEUNCIEUC
-0x8A8B 0xB48E # HANGUL SYLLABLE TIKEUT-WE-NIEUNHIEUH
-0x8A8C 0xB48F # HANGUL SYLLABLE TIKEUT-WE-TIKEUT
-0x8A8D 0xB490 # HANGUL SYLLABLE TIKEUT-WE-RIEUL
-0x8A8E 0xB491 # HANGUL SYLLABLE TIKEUT-WE-RIEULKIYEOK
-0x8A8F 0xB492 # HANGUL SYLLABLE TIKEUT-WE-RIEULMIEUM
-0x8A90 0xB493 # HANGUL SYLLABLE TIKEUT-WE-RIEULPIEUP
-0x8A91 0xB494 # HANGUL SYLLABLE TIKEUT-WE-RIEULSIOS
-0x8A92 0xB495 # HANGUL SYLLABLE TIKEUT-WE-RIEULTHIEUTH
-0x8A93 0xB496 # HANGUL SYLLABLE TIKEUT-WE-RIEULPHIEUPH
-0x8A94 0xB497 # HANGUL SYLLABLE TIKEUT-WE-RIEULHIEUH
-0x8A95 0xB498 # HANGUL SYLLABLE TIKEUT-WE-MIEUM
-0x8A96 0xB499 # HANGUL SYLLABLE TIKEUT-WE-PIEUP
-0x8A97 0xB49A # HANGUL SYLLABLE TIKEUT-WE-PIEUPSIOS
-0x8A98 0xB49B # HANGUL SYLLABLE TIKEUT-WE-SIOS
-0x8A99 0xB49C # HANGUL SYLLABLE TIKEUT-WE-SSANGSIOS
-0x8A9A 0xB49E # HANGUL SYLLABLE TIKEUT-WE-CIEUC
-0x8A9B 0xB49F # HANGUL SYLLABLE TIKEUT-WE-CHIEUCH
-0x8A9C 0xB4A0 # HANGUL SYLLABLE TIKEUT-WE-KHIEUKH
-0x8A9D 0xB4A1 # HANGUL SYLLABLE TIKEUT-WE-THIEUTH
-0x8A9E 0xB4A2 # HANGUL SYLLABLE TIKEUT-WE-PHIEUPH
-0x8A9F 0xB4A3 # HANGUL SYLLABLE TIKEUT-WE-HIEUH
-0x8AA0 0xB4A5 # HANGUL SYLLABLE TIKEUT-WI-KIYEOK
-0x8AA1 0xB4A6 # HANGUL SYLLABLE TIKEUT-WI-SSANGKIYEOK
-0x8AA2 0xB4A7 # HANGUL SYLLABLE TIKEUT-WI-KIYEOKSIOS
-0x8AA3 0xB4A9 # HANGUL SYLLABLE TIKEUT-WI-NIEUNCIEUC
-0x8AA4 0xB4AA # HANGUL SYLLABLE TIKEUT-WI-NIEUNHIEUH
-0x8AA5 0xB4AB # HANGUL SYLLABLE TIKEUT-WI-TIKEUT
-0x8AA6 0xB4AD # HANGUL SYLLABLE TIKEUT-WI-RIEULKIYEOK
-0x8AA7 0xB4AE # HANGUL SYLLABLE TIKEUT-WI-RIEULMIEUM
-0x8AA8 0xB4AF # HANGUL SYLLABLE TIKEUT-WI-RIEULPIEUP
-0x8AA9 0xB4B0 # HANGUL SYLLABLE TIKEUT-WI-RIEULSIOS
-0x8AAA 0xB4B1 # HANGUL SYLLABLE TIKEUT-WI-RIEULTHIEUTH
-0x8AAB 0xB4B2 # HANGUL SYLLABLE TIKEUT-WI-RIEULPHIEUPH
-0x8AAC 0xB4B3 # HANGUL SYLLABLE TIKEUT-WI-RIEULHIEUH
-0x8AAD 0xB4B4 # HANGUL SYLLABLE TIKEUT-WI-MIEUM
-0x8AAE 0xB4B6 # HANGUL SYLLABLE TIKEUT-WI-PIEUPSIOS
-0x8AAF 0xB4B8 # HANGUL SYLLABLE TIKEUT-WI-SSANGSIOS
-0x8AB0 0xB4BA # HANGUL SYLLABLE TIKEUT-WI-CIEUC
-0x8AB1 0xB4BB # HANGUL SYLLABLE TIKEUT-WI-CHIEUCH
-0x8AB2 0xB4BC # HANGUL SYLLABLE TIKEUT-WI-KHIEUKH
-0x8AB3 0xB4BD # HANGUL SYLLABLE TIKEUT-WI-THIEUTH
-0x8AB4 0xB4BE # HANGUL SYLLABLE TIKEUT-WI-PHIEUPH
-0x8AB5 0xB4BF # HANGUL SYLLABLE TIKEUT-WI-HIEUH
-0x8AB6 0xB4C1 # HANGUL SYLLABLE TIKEUT-YU-KIYEOK
-0x8AB7 0xB4C2 # HANGUL SYLLABLE TIKEUT-YU-SSANGKIYEOK
-0x8AB8 0xB4C3 # HANGUL SYLLABLE TIKEUT-YU-KIYEOKSIOS
-0x8AB9 0xB4C5 # HANGUL SYLLABLE TIKEUT-YU-NIEUNCIEUC
-0x8ABA 0xB4C6 # HANGUL SYLLABLE TIKEUT-YU-NIEUNHIEUH
-0x8ABB 0xB4C7 # HANGUL SYLLABLE TIKEUT-YU-TIKEUT
-0x8ABC 0xB4C9 # HANGUL SYLLABLE TIKEUT-YU-RIEULKIYEOK
-0x8ABD 0xB4CA # HANGUL SYLLABLE TIKEUT-YU-RIEULMIEUM
-0x8ABE 0xB4CB # HANGUL SYLLABLE TIKEUT-YU-RIEULPIEUP
-0x8ABF 0xB4CC # HANGUL SYLLABLE TIKEUT-YU-RIEULSIOS
-0x8AC0 0xB4CD # HANGUL SYLLABLE TIKEUT-YU-RIEULTHIEUTH
-0x8AC1 0xB4CE # HANGUL SYLLABLE TIKEUT-YU-RIEULPHIEUPH
-0x8AC2 0xB4CF # HANGUL SYLLABLE TIKEUT-YU-RIEULHIEUH
-0x8AC3 0xB4D1 # HANGUL SYLLABLE TIKEUT-YU-PIEUP
-0x8AC4 0xB4D2 # HANGUL SYLLABLE TIKEUT-YU-PIEUPSIOS
-0x8AC5 0xB4D3 # HANGUL SYLLABLE TIKEUT-YU-SIOS
-0x8AC6 0xB4D4 # HANGUL SYLLABLE TIKEUT-YU-SSANGSIOS
-0x8AC7 0xB4D6 # HANGUL SYLLABLE TIKEUT-YU-CIEUC
-0x8AC8 0xB4D7 # HANGUL SYLLABLE TIKEUT-YU-CHIEUCH
-0x8AC9 0xB4D8 # HANGUL SYLLABLE TIKEUT-YU-KHIEUKH
-0x8ACA 0xB4D9 # HANGUL SYLLABLE TIKEUT-YU-THIEUTH
-0x8ACB 0xB4DA # HANGUL SYLLABLE TIKEUT-YU-PHIEUPH
-0x8ACC 0xB4DB # HANGUL SYLLABLE TIKEUT-YU-HIEUH
-0x8ACD 0xB4DE # HANGUL SYLLABLE TIKEUT-EU-SSANGKIYEOK
-0x8ACE 0xB4DF # HANGUL SYLLABLE TIKEUT-EU-KIYEOKSIOS
-0x8ACF 0xB4E1 # HANGUL SYLLABLE TIKEUT-EU-NIEUNCIEUC
-0x8AD0 0xB4E2 # HANGUL SYLLABLE TIKEUT-EU-NIEUNHIEUH
-0x8AD1 0xB4E5 # HANGUL SYLLABLE TIKEUT-EU-RIEULKIYEOK
-0x8AD2 0xB4E7 # HANGUL SYLLABLE TIKEUT-EU-RIEULPIEUP
-0x8AD3 0xB4E8 # HANGUL SYLLABLE TIKEUT-EU-RIEULSIOS
-0x8AD4 0xB4E9 # HANGUL SYLLABLE TIKEUT-EU-RIEULTHIEUTH
-0x8AD5 0xB4EA # HANGUL SYLLABLE TIKEUT-EU-RIEULPHIEUPH
-0x8AD6 0xB4EB # HANGUL SYLLABLE TIKEUT-EU-RIEULHIEUH
-0x8AD7 0xB4EE # HANGUL SYLLABLE TIKEUT-EU-PIEUPSIOS
-0x8AD8 0xB4F0 # HANGUL SYLLABLE TIKEUT-EU-SSANGSIOS
-0x8AD9 0xB4F2 # HANGUL SYLLABLE TIKEUT-EU-CIEUC
-0x8ADA 0xB4F3 # HANGUL SYLLABLE TIKEUT-EU-CHIEUCH
-0x8ADB 0xB4F4 # HANGUL SYLLABLE TIKEUT-EU-KHIEUKH
-0x8ADC 0xB4F5 # HANGUL SYLLABLE TIKEUT-EU-THIEUTH
-0x8ADD 0xB4F6 # HANGUL SYLLABLE TIKEUT-EU-PHIEUPH
-0x8ADE 0xB4F7 # HANGUL SYLLABLE TIKEUT-EU-HIEUH
-0x8ADF 0xB4F9 # HANGUL SYLLABLE TIKEUT-YI-KIYEOK
-0x8AE0 0xB4FA # HANGUL SYLLABLE TIKEUT-YI-SSANGKIYEOK
-0x8AE1 0xB4FB # HANGUL SYLLABLE TIKEUT-YI-KIYEOKSIOS
-0x8AE2 0xB4FC # HANGUL SYLLABLE TIKEUT-YI-NIEUN
-0x8AE3 0xB4FD # HANGUL SYLLABLE TIKEUT-YI-NIEUNCIEUC
-0x8AE4 0xB4FE # HANGUL SYLLABLE TIKEUT-YI-NIEUNHIEUH
-0x8AE5 0xB4FF # HANGUL SYLLABLE TIKEUT-YI-TIKEUT
-0x8AE6 0xB500 # HANGUL SYLLABLE TIKEUT-YI-RIEUL
-0x8AE7 0xB501 # HANGUL SYLLABLE TIKEUT-YI-RIEULKIYEOK
-0x8AE8 0xB502 # HANGUL SYLLABLE TIKEUT-YI-RIEULMIEUM
-0x8AE9 0xB503 # HANGUL SYLLABLE TIKEUT-YI-RIEULPIEUP
-0x8AEA 0xB504 # HANGUL SYLLABLE TIKEUT-YI-RIEULSIOS
-0x8AEB 0xB505 # HANGUL SYLLABLE TIKEUT-YI-RIEULTHIEUTH
-0x8AEC 0xB506 # HANGUL SYLLABLE TIKEUT-YI-RIEULPHIEUPH
-0x8AED 0xB507 # HANGUL SYLLABLE TIKEUT-YI-RIEULHIEUH
-0x8AEE 0xB508 # HANGUL SYLLABLE TIKEUT-YI-MIEUM
-0x8AEF 0xB509 # HANGUL SYLLABLE TIKEUT-YI-PIEUP
-0x8AF0 0xB50A # HANGUL SYLLABLE TIKEUT-YI-PIEUPSIOS
-0x8AF1 0xB50B # HANGUL SYLLABLE TIKEUT-YI-SIOS
-0x8AF2 0xB50C # HANGUL SYLLABLE TIKEUT-YI-SSANGSIOS
-0x8AF3 0xB50D # HANGUL SYLLABLE TIKEUT-YI-IEUNG
-0x8AF4 0xB50E # HANGUL SYLLABLE TIKEUT-YI-CIEUC
-0x8AF5 0xB50F # HANGUL SYLLABLE TIKEUT-YI-CHIEUCH
-0x8AF6 0xB510 # HANGUL SYLLABLE TIKEUT-YI-KHIEUKH
-0x8AF7 0xB511 # HANGUL SYLLABLE TIKEUT-YI-THIEUTH
-0x8AF8 0xB512 # HANGUL SYLLABLE TIKEUT-YI-PHIEUPH
-0x8AF9 0xB513 # HANGUL SYLLABLE TIKEUT-YI-HIEUH
-0x8AFA 0xB516 # HANGUL SYLLABLE TIKEUT-I-SSANGKIYEOK
-0x8AFB 0xB517 # HANGUL SYLLABLE TIKEUT-I-KIYEOKSIOS
-0x8AFC 0xB519 # HANGUL SYLLABLE TIKEUT-I-NIEUNCIEUC
-0x8AFD 0xB51A # HANGUL SYLLABLE TIKEUT-I-NIEUNHIEUH
-0x8AFE 0xB51D # HANGUL SYLLABLE TIKEUT-I-RIEULKIYEOK
-0x8B41 0xB51E # HANGUL SYLLABLE TIKEUT-I-RIEULMIEUM
-0x8B42 0xB51F # HANGUL SYLLABLE TIKEUT-I-RIEULPIEUP
-0x8B43 0xB520 # HANGUL SYLLABLE TIKEUT-I-RIEULSIOS
-0x8B44 0xB521 # HANGUL SYLLABLE TIKEUT-I-RIEULTHIEUTH
-0x8B45 0xB522 # HANGUL SYLLABLE TIKEUT-I-RIEULPHIEUPH
-0x8B46 0xB523 # HANGUL SYLLABLE TIKEUT-I-RIEULHIEUH
-0x8B47 0xB526 # HANGUL SYLLABLE TIKEUT-I-PIEUPSIOS
-0x8B48 0xB52B # HANGUL SYLLABLE TIKEUT-I-CHIEUCH
-0x8B49 0xB52C # HANGUL SYLLABLE TIKEUT-I-KHIEUKH
-0x8B4A 0xB52D # HANGUL SYLLABLE TIKEUT-I-THIEUTH
-0x8B4B 0xB52E # HANGUL SYLLABLE TIKEUT-I-PHIEUPH
-0x8B4C 0xB52F # HANGUL SYLLABLE TIKEUT-I-HIEUH
-0x8B4D 0xB532 # HANGUL SYLLABLE SSANGTIKEUT-A-SSANGKIYEOK
-0x8B4E 0xB533 # HANGUL SYLLABLE SSANGTIKEUT-A-KIYEOKSIOS
-0x8B4F 0xB535 # HANGUL SYLLABLE SSANGTIKEUT-A-NIEUNCIEUC
-0x8B50 0xB536 # HANGUL SYLLABLE SSANGTIKEUT-A-NIEUNHIEUH
-0x8B51 0xB537 # HANGUL SYLLABLE SSANGTIKEUT-A-TIKEUT
-0x8B52 0xB539 # HANGUL SYLLABLE SSANGTIKEUT-A-RIEULKIYEOK
-0x8B53 0xB53A # HANGUL SYLLABLE SSANGTIKEUT-A-RIEULMIEUM
-0x8B54 0xB53B # HANGUL SYLLABLE SSANGTIKEUT-A-RIEULPIEUP
-0x8B55 0xB53C # HANGUL SYLLABLE SSANGTIKEUT-A-RIEULSIOS
-0x8B56 0xB53D # HANGUL SYLLABLE SSANGTIKEUT-A-RIEULTHIEUTH
-0x8B57 0xB53E # HANGUL SYLLABLE SSANGTIKEUT-A-RIEULPHIEUPH
-0x8B58 0xB53F # HANGUL SYLLABLE SSANGTIKEUT-A-RIEULHIEUH
-0x8B59 0xB542 # HANGUL SYLLABLE SSANGTIKEUT-A-PIEUPSIOS
-0x8B5A 0xB546 # HANGUL SYLLABLE SSANGTIKEUT-A-CIEUC
-0x8B61 0xB547 # HANGUL SYLLABLE SSANGTIKEUT-A-CHIEUCH
-0x8B62 0xB548 # HANGUL SYLLABLE SSANGTIKEUT-A-KHIEUKH
-0x8B63 0xB549 # HANGUL SYLLABLE SSANGTIKEUT-A-THIEUTH
-0x8B64 0xB54A # HANGUL SYLLABLE SSANGTIKEUT-A-PHIEUPH
-0x8B65 0xB54E # HANGUL SYLLABLE SSANGTIKEUT-AE-SSANGKIYEOK
-0x8B66 0xB54F # HANGUL SYLLABLE SSANGTIKEUT-AE-KIYEOKSIOS
-0x8B67 0xB551 # HANGUL SYLLABLE SSANGTIKEUT-AE-NIEUNCIEUC
-0x8B68 0xB552 # HANGUL SYLLABLE SSANGTIKEUT-AE-NIEUNHIEUH
-0x8B69 0xB553 # HANGUL SYLLABLE SSANGTIKEUT-AE-TIKEUT
-0x8B6A 0xB555 # HANGUL SYLLABLE SSANGTIKEUT-AE-RIEULKIYEOK
-0x8B6B 0xB556 # HANGUL SYLLABLE SSANGTIKEUT-AE-RIEULMIEUM
-0x8B6C 0xB557 # HANGUL SYLLABLE SSANGTIKEUT-AE-RIEULPIEUP
-0x8B6D 0xB558 # HANGUL SYLLABLE SSANGTIKEUT-AE-RIEULSIOS
-0x8B6E 0xB559 # HANGUL SYLLABLE SSANGTIKEUT-AE-RIEULTHIEUTH
-0x8B6F 0xB55A # HANGUL SYLLABLE SSANGTIKEUT-AE-RIEULPHIEUPH
-0x8B70 0xB55B # HANGUL SYLLABLE SSANGTIKEUT-AE-RIEULHIEUH
-0x8B71 0xB55E # HANGUL SYLLABLE SSANGTIKEUT-AE-PIEUPSIOS
-0x8B72 0xB562 # HANGUL SYLLABLE SSANGTIKEUT-AE-CIEUC
-0x8B73 0xB563 # HANGUL SYLLABLE SSANGTIKEUT-AE-CHIEUCH
-0x8B74 0xB564 # HANGUL SYLLABLE SSANGTIKEUT-AE-KHIEUKH
-0x8B75 0xB565 # HANGUL SYLLABLE SSANGTIKEUT-AE-THIEUTH
-0x8B76 0xB566 # HANGUL SYLLABLE SSANGTIKEUT-AE-PHIEUPH
-0x8B77 0xB567 # HANGUL SYLLABLE SSANGTIKEUT-AE-HIEUH
-0x8B78 0xB568 # HANGUL SYLLABLE SSANGTIKEUT-YA
-0x8B79 0xB569 # HANGUL SYLLABLE SSANGTIKEUT-YA-KIYEOK
-0x8B7A 0xB56A # HANGUL SYLLABLE SSANGTIKEUT-YA-SSANGKIYEOK
-0x8B81 0xB56B # HANGUL SYLLABLE SSANGTIKEUT-YA-KIYEOKSIOS
-0x8B82 0xB56C # HANGUL SYLLABLE SSANGTIKEUT-YA-NIEUN
-0x8B83 0xB56D # HANGUL SYLLABLE SSANGTIKEUT-YA-NIEUNCIEUC
-0x8B84 0xB56E # HANGUL SYLLABLE SSANGTIKEUT-YA-NIEUNHIEUH
-0x8B85 0xB56F # HANGUL SYLLABLE SSANGTIKEUT-YA-TIKEUT
-0x8B86 0xB570 # HANGUL SYLLABLE SSANGTIKEUT-YA-RIEUL
-0x8B87 0xB571 # HANGUL SYLLABLE SSANGTIKEUT-YA-RIEULKIYEOK
-0x8B88 0xB572 # HANGUL SYLLABLE SSANGTIKEUT-YA-RIEULMIEUM
-0x8B89 0xB573 # HANGUL SYLLABLE SSANGTIKEUT-YA-RIEULPIEUP
-0x8B8A 0xB574 # HANGUL SYLLABLE SSANGTIKEUT-YA-RIEULSIOS
-0x8B8B 0xB575 # HANGUL SYLLABLE SSANGTIKEUT-YA-RIEULTHIEUTH
-0x8B8C 0xB576 # HANGUL SYLLABLE SSANGTIKEUT-YA-RIEULPHIEUPH
-0x8B8D 0xB577 # HANGUL SYLLABLE SSANGTIKEUT-YA-RIEULHIEUH
-0x8B8E 0xB578 # HANGUL SYLLABLE SSANGTIKEUT-YA-MIEUM
-0x8B8F 0xB579 # HANGUL SYLLABLE SSANGTIKEUT-YA-PIEUP
-0x8B90 0xB57A # HANGUL SYLLABLE SSANGTIKEUT-YA-PIEUPSIOS
-0x8B91 0xB57B # HANGUL SYLLABLE SSANGTIKEUT-YA-SIOS
-0x8B92 0xB57C # HANGUL SYLLABLE SSANGTIKEUT-YA-SSANGSIOS
-0x8B93 0xB57D # HANGUL SYLLABLE SSANGTIKEUT-YA-IEUNG
-0x8B94 0xB57E # HANGUL SYLLABLE SSANGTIKEUT-YA-CIEUC
-0x8B95 0xB57F # HANGUL SYLLABLE SSANGTIKEUT-YA-CHIEUCH
-0x8B96 0xB580 # HANGUL SYLLABLE SSANGTIKEUT-YA-KHIEUKH
-0x8B97 0xB581 # HANGUL SYLLABLE SSANGTIKEUT-YA-THIEUTH
-0x8B98 0xB582 # HANGUL SYLLABLE SSANGTIKEUT-YA-PHIEUPH
-0x8B99 0xB583 # HANGUL SYLLABLE SSANGTIKEUT-YA-HIEUH
-0x8B9A 0xB584 # HANGUL SYLLABLE SSANGTIKEUT-YAE
-0x8B9B 0xB585 # HANGUL SYLLABLE SSANGTIKEUT-YAE-KIYEOK
-0x8B9C 0xB586 # HANGUL SYLLABLE SSANGTIKEUT-YAE-SSANGKIYEOK
-0x8B9D 0xB587 # HANGUL SYLLABLE SSANGTIKEUT-YAE-KIYEOKSIOS
-0x8B9E 0xB588 # HANGUL SYLLABLE SSANGTIKEUT-YAE-NIEUN
-0x8B9F 0xB589 # HANGUL SYLLABLE SSANGTIKEUT-YAE-NIEUNCIEUC
-0x8BA0 0xB58A # HANGUL SYLLABLE SSANGTIKEUT-YAE-NIEUNHIEUH
-0x8BA1 0xB58B # HANGUL SYLLABLE SSANGTIKEUT-YAE-TIKEUT
-0x8BA2 0xB58C # HANGUL SYLLABLE SSANGTIKEUT-YAE-RIEUL
-0x8BA3 0xB58D # HANGUL SYLLABLE SSANGTIKEUT-YAE-RIEULKIYEOK
-0x8BA4 0xB58E # HANGUL SYLLABLE SSANGTIKEUT-YAE-RIEULMIEUM
-0x8BA5 0xB58F # HANGUL SYLLABLE SSANGTIKEUT-YAE-RIEULPIEUP
-0x8BA6 0xB590 # HANGUL SYLLABLE SSANGTIKEUT-YAE-RIEULSIOS
-0x8BA7 0xB591 # HANGUL SYLLABLE SSANGTIKEUT-YAE-RIEULTHIEUTH
-0x8BA8 0xB592 # HANGUL SYLLABLE SSANGTIKEUT-YAE-RIEULPHIEUPH
-0x8BA9 0xB593 # HANGUL SYLLABLE SSANGTIKEUT-YAE-RIEULHIEUH
-0x8BAA 0xB594 # HANGUL SYLLABLE SSANGTIKEUT-YAE-MIEUM
-0x8BAB 0xB595 # HANGUL SYLLABLE SSANGTIKEUT-YAE-PIEUP
-0x8BAC 0xB596 # HANGUL SYLLABLE SSANGTIKEUT-YAE-PIEUPSIOS
-0x8BAD 0xB597 # HANGUL SYLLABLE SSANGTIKEUT-YAE-SIOS
-0x8BAE 0xB598 # HANGUL SYLLABLE SSANGTIKEUT-YAE-SSANGSIOS
-0x8BAF 0xB599 # HANGUL SYLLABLE SSANGTIKEUT-YAE-IEUNG
-0x8BB0 0xB59A # HANGUL SYLLABLE SSANGTIKEUT-YAE-CIEUC
-0x8BB1 0xB59B # HANGUL SYLLABLE SSANGTIKEUT-YAE-CHIEUCH
-0x8BB2 0xB59C # HANGUL SYLLABLE SSANGTIKEUT-YAE-KHIEUKH
-0x8BB3 0xB59D # HANGUL SYLLABLE SSANGTIKEUT-YAE-THIEUTH
-0x8BB4 0xB59E # HANGUL SYLLABLE SSANGTIKEUT-YAE-PHIEUPH
-0x8BB5 0xB59F # HANGUL SYLLABLE SSANGTIKEUT-YAE-HIEUH
-0x8BB6 0xB5A2 # HANGUL SYLLABLE SSANGTIKEUT-EO-SSANGKIYEOK
-0x8BB7 0xB5A3 # HANGUL SYLLABLE SSANGTIKEUT-EO-KIYEOKSIOS
-0x8BB8 0xB5A5 # HANGUL SYLLABLE SSANGTIKEUT-EO-NIEUNCIEUC
-0x8BB9 0xB5A6 # HANGUL SYLLABLE SSANGTIKEUT-EO-NIEUNHIEUH
-0x8BBA 0xB5A7 # HANGUL SYLLABLE SSANGTIKEUT-EO-TIKEUT
-0x8BBB 0xB5A9 # HANGUL SYLLABLE SSANGTIKEUT-EO-RIEULKIYEOK
-0x8BBC 0xB5AC # HANGUL SYLLABLE SSANGTIKEUT-EO-RIEULSIOS
-0x8BBD 0xB5AD # HANGUL SYLLABLE SSANGTIKEUT-EO-RIEULTHIEUTH
-0x8BBE 0xB5AE # HANGUL SYLLABLE SSANGTIKEUT-EO-RIEULPHIEUPH
-0x8BBF 0xB5AF # HANGUL SYLLABLE SSANGTIKEUT-EO-RIEULHIEUH
-0x8BC0 0xB5B2 # HANGUL SYLLABLE SSANGTIKEUT-EO-PIEUPSIOS
-0x8BC1 0xB5B6 # HANGUL SYLLABLE SSANGTIKEUT-EO-CIEUC
-0x8BC2 0xB5B7 # HANGUL SYLLABLE SSANGTIKEUT-EO-CHIEUCH
-0x8BC3 0xB5B8 # HANGUL SYLLABLE SSANGTIKEUT-EO-KHIEUKH
-0x8BC4 0xB5B9 # HANGUL SYLLABLE SSANGTIKEUT-EO-THIEUTH
-0x8BC5 0xB5BA # HANGUL SYLLABLE SSANGTIKEUT-EO-PHIEUPH
-0x8BC6 0xB5BE # HANGUL SYLLABLE SSANGTIKEUT-E-SSANGKIYEOK
-0x8BC7 0xB5BF # HANGUL SYLLABLE SSANGTIKEUT-E-KIYEOKSIOS
-0x8BC8 0xB5C1 # HANGUL SYLLABLE SSANGTIKEUT-E-NIEUNCIEUC
-0x8BC9 0xB5C2 # HANGUL SYLLABLE SSANGTIKEUT-E-NIEUNHIEUH
-0x8BCA 0xB5C3 # HANGUL SYLLABLE SSANGTIKEUT-E-TIKEUT
-0x8BCB 0xB5C5 # HANGUL SYLLABLE SSANGTIKEUT-E-RIEULKIYEOK
-0x8BCC 0xB5C6 # HANGUL SYLLABLE SSANGTIKEUT-E-RIEULMIEUM
-0x8BCD 0xB5C7 # HANGUL SYLLABLE SSANGTIKEUT-E-RIEULPIEUP
-0x8BCE 0xB5C8 # HANGUL SYLLABLE SSANGTIKEUT-E-RIEULSIOS
-0x8BCF 0xB5C9 # HANGUL SYLLABLE SSANGTIKEUT-E-RIEULTHIEUTH
-0x8BD0 0xB5CA # HANGUL SYLLABLE SSANGTIKEUT-E-RIEULPHIEUPH
-0x8BD1 0xB5CB # HANGUL SYLLABLE SSANGTIKEUT-E-RIEULHIEUH
-0x8BD2 0xB5CE # HANGUL SYLLABLE SSANGTIKEUT-E-PIEUPSIOS
-0x8BD3 0xB5D2 # HANGUL SYLLABLE SSANGTIKEUT-E-CIEUC
-0x8BD4 0xB5D3 # HANGUL SYLLABLE SSANGTIKEUT-E-CHIEUCH
-0x8BD5 0xB5D4 # HANGUL SYLLABLE SSANGTIKEUT-E-KHIEUKH
-0x8BD6 0xB5D5 # HANGUL SYLLABLE SSANGTIKEUT-E-THIEUTH
-0x8BD7 0xB5D6 # HANGUL SYLLABLE SSANGTIKEUT-E-PHIEUPH
-0x8BD8 0xB5D7 # HANGUL SYLLABLE SSANGTIKEUT-E-HIEUH
-0x8BD9 0xB5D9 # HANGUL SYLLABLE SSANGTIKEUT-YEO-KIYEOK
-0x8BDA 0xB5DA # HANGUL SYLLABLE SSANGTIKEUT-YEO-SSANGKIYEOK
-0x8BDB 0xB5DB # HANGUL SYLLABLE SSANGTIKEUT-YEO-KIYEOKSIOS
-0x8BDC 0xB5DC # HANGUL SYLLABLE SSANGTIKEUT-YEO-NIEUN
-0x8BDD 0xB5DD # HANGUL SYLLABLE SSANGTIKEUT-YEO-NIEUNCIEUC
-0x8BDE 0xB5DE # HANGUL SYLLABLE SSANGTIKEUT-YEO-NIEUNHIEUH
-0x8BDF 0xB5DF # HANGUL SYLLABLE SSANGTIKEUT-YEO-TIKEUT
-0x8BE0 0xB5E0 # HANGUL SYLLABLE SSANGTIKEUT-YEO-RIEUL
-0x8BE1 0xB5E1 # HANGUL SYLLABLE SSANGTIKEUT-YEO-RIEULKIYEOK
-0x8BE2 0xB5E2 # HANGUL SYLLABLE SSANGTIKEUT-YEO-RIEULMIEUM
-0x8BE3 0xB5E3 # HANGUL SYLLABLE SSANGTIKEUT-YEO-RIEULPIEUP
-0x8BE4 0xB5E4 # HANGUL SYLLABLE SSANGTIKEUT-YEO-RIEULSIOS
-0x8BE5 0xB5E5 # HANGUL SYLLABLE SSANGTIKEUT-YEO-RIEULTHIEUTH
-0x8BE6 0xB5E6 # HANGUL SYLLABLE SSANGTIKEUT-YEO-RIEULPHIEUPH
-0x8BE7 0xB5E7 # HANGUL SYLLABLE SSANGTIKEUT-YEO-RIEULHIEUH
-0x8BE8 0xB5E8 # HANGUL SYLLABLE SSANGTIKEUT-YEO-MIEUM
-0x8BE9 0xB5E9 # HANGUL SYLLABLE SSANGTIKEUT-YEO-PIEUP
-0x8BEA 0xB5EA # HANGUL SYLLABLE SSANGTIKEUT-YEO-PIEUPSIOS
-0x8BEB 0xB5EB # HANGUL SYLLABLE SSANGTIKEUT-YEO-SIOS
-0x8BEC 0xB5ED # HANGUL SYLLABLE SSANGTIKEUT-YEO-IEUNG
-0x8BED 0xB5EE # HANGUL SYLLABLE SSANGTIKEUT-YEO-CIEUC
-0x8BEE 0xB5EF # HANGUL SYLLABLE SSANGTIKEUT-YEO-CHIEUCH
-0x8BEF 0xB5F0 # HANGUL SYLLABLE SSANGTIKEUT-YEO-KHIEUKH
-0x8BF0 0xB5F1 # HANGUL SYLLABLE SSANGTIKEUT-YEO-THIEUTH
-0x8BF1 0xB5F2 # HANGUL SYLLABLE SSANGTIKEUT-YEO-PHIEUPH
-0x8BF2 0xB5F3 # HANGUL SYLLABLE SSANGTIKEUT-YEO-HIEUH
-0x8BF3 0xB5F4 # HANGUL SYLLABLE SSANGTIKEUT-YE
-0x8BF4 0xB5F5 # HANGUL SYLLABLE SSANGTIKEUT-YE-KIYEOK
-0x8BF5 0xB5F6 # HANGUL SYLLABLE SSANGTIKEUT-YE-SSANGKIYEOK
-0x8BF6 0xB5F7 # HANGUL SYLLABLE SSANGTIKEUT-YE-KIYEOKSIOS
-0x8BF7 0xB5F8 # HANGUL SYLLABLE SSANGTIKEUT-YE-NIEUN
-0x8BF8 0xB5F9 # HANGUL SYLLABLE SSANGTIKEUT-YE-NIEUNCIEUC
-0x8BF9 0xB5FA # HANGUL SYLLABLE SSANGTIKEUT-YE-NIEUNHIEUH
-0x8BFA 0xB5FB # HANGUL SYLLABLE SSANGTIKEUT-YE-TIKEUT
-0x8BFB 0xB5FC # HANGUL SYLLABLE SSANGTIKEUT-YE-RIEUL
-0x8BFC 0xB5FD # HANGUL SYLLABLE SSANGTIKEUT-YE-RIEULKIYEOK
-0x8BFD 0xB5FE # HANGUL SYLLABLE SSANGTIKEUT-YE-RIEULMIEUM
-0x8BFE 0xB5FF # HANGUL SYLLABLE SSANGTIKEUT-YE-RIEULPIEUP
-0x8C41 0xB600 # HANGUL SYLLABLE SSANGTIKEUT-YE-RIEULSIOS
-0x8C42 0xB601 # HANGUL SYLLABLE SSANGTIKEUT-YE-RIEULTHIEUTH
-0x8C43 0xB602 # HANGUL SYLLABLE SSANGTIKEUT-YE-RIEULPHIEUPH
-0x8C44 0xB603 # HANGUL SYLLABLE SSANGTIKEUT-YE-RIEULHIEUH
-0x8C45 0xB604 # HANGUL SYLLABLE SSANGTIKEUT-YE-MIEUM
-0x8C46 0xB605 # HANGUL SYLLABLE SSANGTIKEUT-YE-PIEUP
-0x8C47 0xB606 # HANGUL SYLLABLE SSANGTIKEUT-YE-PIEUPSIOS
-0x8C48 0xB607 # HANGUL SYLLABLE SSANGTIKEUT-YE-SIOS
-0x8C49 0xB608 # HANGUL SYLLABLE SSANGTIKEUT-YE-SSANGSIOS
-0x8C4A 0xB609 # HANGUL SYLLABLE SSANGTIKEUT-YE-IEUNG
-0x8C4B 0xB60A # HANGUL SYLLABLE SSANGTIKEUT-YE-CIEUC
-0x8C4C 0xB60B # HANGUL SYLLABLE SSANGTIKEUT-YE-CHIEUCH
-0x8C4D 0xB60C # HANGUL SYLLABLE SSANGTIKEUT-YE-KHIEUKH
-0x8C4E 0xB60D # HANGUL SYLLABLE SSANGTIKEUT-YE-THIEUTH
-0x8C4F 0xB60E # HANGUL SYLLABLE SSANGTIKEUT-YE-PHIEUPH
-0x8C50 0xB60F # HANGUL SYLLABLE SSANGTIKEUT-YE-HIEUH
-0x8C51 0xB612 # HANGUL SYLLABLE SSANGTIKEUT-O-SSANGKIYEOK
-0x8C52 0xB613 # HANGUL SYLLABLE SSANGTIKEUT-O-KIYEOKSIOS
-0x8C53 0xB615 # HANGUL SYLLABLE SSANGTIKEUT-O-NIEUNCIEUC
-0x8C54 0xB616 # HANGUL SYLLABLE SSANGTIKEUT-O-NIEUNHIEUH
-0x8C55 0xB617 # HANGUL SYLLABLE SSANGTIKEUT-O-TIKEUT
-0x8C56 0xB619 # HANGUL SYLLABLE SSANGTIKEUT-O-RIEULKIYEOK
-0x8C57 0xB61A # HANGUL SYLLABLE SSANGTIKEUT-O-RIEULMIEUM
-0x8C58 0xB61B # HANGUL SYLLABLE SSANGTIKEUT-O-RIEULPIEUP
-0x8C59 0xB61C # HANGUL SYLLABLE SSANGTIKEUT-O-RIEULSIOS
-0x8C5A 0xB61D # HANGUL SYLLABLE SSANGTIKEUT-O-RIEULTHIEUTH
-0x8C61 0xB61E # HANGUL SYLLABLE SSANGTIKEUT-O-RIEULPHIEUPH
-0x8C62 0xB61F # HANGUL SYLLABLE SSANGTIKEUT-O-RIEULHIEUH
-0x8C63 0xB620 # HANGUL SYLLABLE SSANGTIKEUT-O-MIEUM
-0x8C64 0xB621 # HANGUL SYLLABLE SSANGTIKEUT-O-PIEUP
-0x8C65 0xB622 # HANGUL SYLLABLE SSANGTIKEUT-O-PIEUPSIOS
-0x8C66 0xB623 # HANGUL SYLLABLE SSANGTIKEUT-O-SIOS
-0x8C67 0xB624 # HANGUL SYLLABLE SSANGTIKEUT-O-SSANGSIOS
-0x8C68 0xB626 # HANGUL SYLLABLE SSANGTIKEUT-O-CIEUC
-0x8C69 0xB627 # HANGUL SYLLABLE SSANGTIKEUT-O-CHIEUCH
-0x8C6A 0xB628 # HANGUL SYLLABLE SSANGTIKEUT-O-KHIEUKH
-0x8C6B 0xB629 # HANGUL SYLLABLE SSANGTIKEUT-O-THIEUTH
-0x8C6C 0xB62A # HANGUL SYLLABLE SSANGTIKEUT-O-PHIEUPH
-0x8C6D 0xB62B # HANGUL SYLLABLE SSANGTIKEUT-O-HIEUH
-0x8C6E 0xB62D # HANGUL SYLLABLE SSANGTIKEUT-WA-KIYEOK
-0x8C6F 0xB62E # HANGUL SYLLABLE SSANGTIKEUT-WA-SSANGKIYEOK
-0x8C70 0xB62F # HANGUL SYLLABLE SSANGTIKEUT-WA-KIYEOKSIOS
-0x8C71 0xB630 # HANGUL SYLLABLE SSANGTIKEUT-WA-NIEUN
-0x8C72 0xB631 # HANGUL SYLLABLE SSANGTIKEUT-WA-NIEUNCIEUC
-0x8C73 0xB632 # HANGUL SYLLABLE SSANGTIKEUT-WA-NIEUNHIEUH
-0x8C74 0xB633 # HANGUL SYLLABLE SSANGTIKEUT-WA-TIKEUT
-0x8C75 0xB635 # HANGUL SYLLABLE SSANGTIKEUT-WA-RIEULKIYEOK
-0x8C76 0xB636 # HANGUL SYLLABLE SSANGTIKEUT-WA-RIEULMIEUM
-0x8C77 0xB637 # HANGUL SYLLABLE SSANGTIKEUT-WA-RIEULPIEUP
-0x8C78 0xB638 # HANGUL SYLLABLE SSANGTIKEUT-WA-RIEULSIOS
-0x8C79 0xB639 # HANGUL SYLLABLE SSANGTIKEUT-WA-RIEULTHIEUTH
-0x8C7A 0xB63A # HANGUL SYLLABLE SSANGTIKEUT-WA-RIEULPHIEUPH
-0x8C81 0xB63B # HANGUL SYLLABLE SSANGTIKEUT-WA-RIEULHIEUH
-0x8C82 0xB63C # HANGUL SYLLABLE SSANGTIKEUT-WA-MIEUM
-0x8C83 0xB63D # HANGUL SYLLABLE SSANGTIKEUT-WA-PIEUP
-0x8C84 0xB63E # HANGUL SYLLABLE SSANGTIKEUT-WA-PIEUPSIOS
-0x8C85 0xB63F # HANGUL SYLLABLE SSANGTIKEUT-WA-SIOS
-0x8C86 0xB640 # HANGUL SYLLABLE SSANGTIKEUT-WA-SSANGSIOS
-0x8C87 0xB641 # HANGUL SYLLABLE SSANGTIKEUT-WA-IEUNG
-0x8C88 0xB642 # HANGUL SYLLABLE SSANGTIKEUT-WA-CIEUC
-0x8C89 0xB643 # HANGUL SYLLABLE SSANGTIKEUT-WA-CHIEUCH
-0x8C8A 0xB644 # HANGUL SYLLABLE SSANGTIKEUT-WA-KHIEUKH
-0x8C8B 0xB645 # HANGUL SYLLABLE SSANGTIKEUT-WA-THIEUTH
-0x8C8C 0xB646 # HANGUL SYLLABLE SSANGTIKEUT-WA-PHIEUPH
-0x8C8D 0xB647 # HANGUL SYLLABLE SSANGTIKEUT-WA-HIEUH
-0x8C8E 0xB649 # HANGUL SYLLABLE SSANGTIKEUT-WAE-KIYEOK
-0x8C8F 0xB64A # HANGUL SYLLABLE SSANGTIKEUT-WAE-SSANGKIYEOK
-0x8C90 0xB64B # HANGUL SYLLABLE SSANGTIKEUT-WAE-KIYEOKSIOS
-0x8C91 0xB64C # HANGUL SYLLABLE SSANGTIKEUT-WAE-NIEUN
-0x8C92 0xB64D # HANGUL SYLLABLE SSANGTIKEUT-WAE-NIEUNCIEUC
-0x8C93 0xB64E # HANGUL SYLLABLE SSANGTIKEUT-WAE-NIEUNHIEUH
-0x8C94 0xB64F # HANGUL SYLLABLE SSANGTIKEUT-WAE-TIKEUT
-0x8C95 0xB650 # HANGUL SYLLABLE SSANGTIKEUT-WAE-RIEUL
-0x8C96 0xB651 # HANGUL SYLLABLE SSANGTIKEUT-WAE-RIEULKIYEOK
-0x8C97 0xB652 # HANGUL SYLLABLE SSANGTIKEUT-WAE-RIEULMIEUM
-0x8C98 0xB653 # HANGUL SYLLABLE SSANGTIKEUT-WAE-RIEULPIEUP
-0x8C99 0xB654 # HANGUL SYLLABLE SSANGTIKEUT-WAE-RIEULSIOS
-0x8C9A 0xB655 # HANGUL SYLLABLE SSANGTIKEUT-WAE-RIEULTHIEUTH
-0x8C9B 0xB656 # HANGUL SYLLABLE SSANGTIKEUT-WAE-RIEULPHIEUPH
-0x8C9C 0xB657 # HANGUL SYLLABLE SSANGTIKEUT-WAE-RIEULHIEUH
-0x8C9D 0xB658 # HANGUL SYLLABLE SSANGTIKEUT-WAE-MIEUM
-0x8C9E 0xB659 # HANGUL SYLLABLE SSANGTIKEUT-WAE-PIEUP
-0x8C9F 0xB65A # HANGUL SYLLABLE SSANGTIKEUT-WAE-PIEUPSIOS
-0x8CA0 0xB65B # HANGUL SYLLABLE SSANGTIKEUT-WAE-SIOS
-0x8CA1 0xB65C # HANGUL SYLLABLE SSANGTIKEUT-WAE-SSANGSIOS
-0x8CA2 0xB65D # HANGUL SYLLABLE SSANGTIKEUT-WAE-IEUNG
-0x8CA3 0xB65E # HANGUL SYLLABLE SSANGTIKEUT-WAE-CIEUC
-0x8CA4 0xB65F # HANGUL SYLLABLE SSANGTIKEUT-WAE-CHIEUCH
-0x8CA5 0xB660 # HANGUL SYLLABLE SSANGTIKEUT-WAE-KHIEUKH
-0x8CA6 0xB661 # HANGUL SYLLABLE SSANGTIKEUT-WAE-THIEUTH
-0x8CA7 0xB662 # HANGUL SYLLABLE SSANGTIKEUT-WAE-PHIEUPH
-0x8CA8 0xB663 # HANGUL SYLLABLE SSANGTIKEUT-WAE-HIEUH
-0x8CA9 0xB665 # HANGUL SYLLABLE SSANGTIKEUT-OE-KIYEOK
-0x8CAA 0xB666 # HANGUL SYLLABLE SSANGTIKEUT-OE-SSANGKIYEOK
-0x8CAB 0xB667 # HANGUL SYLLABLE SSANGTIKEUT-OE-KIYEOKSIOS
-0x8CAC 0xB669 # HANGUL SYLLABLE SSANGTIKEUT-OE-NIEUNCIEUC
-0x8CAD 0xB66A # HANGUL SYLLABLE SSANGTIKEUT-OE-NIEUNHIEUH
-0x8CAE 0xB66B # HANGUL SYLLABLE SSANGTIKEUT-OE-TIKEUT
-0x8CAF 0xB66C # HANGUL SYLLABLE SSANGTIKEUT-OE-RIEUL
-0x8CB0 0xB66D # HANGUL SYLLABLE SSANGTIKEUT-OE-RIEULKIYEOK
-0x8CB1 0xB66E # HANGUL SYLLABLE SSANGTIKEUT-OE-RIEULMIEUM
-0x8CB2 0xB66F # HANGUL SYLLABLE SSANGTIKEUT-OE-RIEULPIEUP
-0x8CB3 0xB670 # HANGUL SYLLABLE SSANGTIKEUT-OE-RIEULSIOS
-0x8CB4 0xB671 # HANGUL SYLLABLE SSANGTIKEUT-OE-RIEULTHIEUTH
-0x8CB5 0xB672 # HANGUL SYLLABLE SSANGTIKEUT-OE-RIEULPHIEUPH
-0x8CB6 0xB673 # HANGUL SYLLABLE SSANGTIKEUT-OE-RIEULHIEUH
-0x8CB7 0xB674 # HANGUL SYLLABLE SSANGTIKEUT-OE-MIEUM
-0x8CB8 0xB675 # HANGUL SYLLABLE SSANGTIKEUT-OE-PIEUP
-0x8CB9 0xB676 # HANGUL SYLLABLE SSANGTIKEUT-OE-PIEUPSIOS
-0x8CBA 0xB677 # HANGUL SYLLABLE SSANGTIKEUT-OE-SIOS
-0x8CBB 0xB678 # HANGUL SYLLABLE SSANGTIKEUT-OE-SSANGSIOS
-0x8CBC 0xB679 # HANGUL SYLLABLE SSANGTIKEUT-OE-IEUNG
-0x8CBD 0xB67A # HANGUL SYLLABLE SSANGTIKEUT-OE-CIEUC
-0x8CBE 0xB67B # HANGUL SYLLABLE SSANGTIKEUT-OE-CHIEUCH
-0x8CBF 0xB67C # HANGUL SYLLABLE SSANGTIKEUT-OE-KHIEUKH
-0x8CC0 0xB67D # HANGUL SYLLABLE SSANGTIKEUT-OE-THIEUTH
-0x8CC1 0xB67E # HANGUL SYLLABLE SSANGTIKEUT-OE-PHIEUPH
-0x8CC2 0xB67F # HANGUL SYLLABLE SSANGTIKEUT-OE-HIEUH
-0x8CC3 0xB680 # HANGUL SYLLABLE SSANGTIKEUT-YO
-0x8CC4 0xB681 # HANGUL SYLLABLE SSANGTIKEUT-YO-KIYEOK
-0x8CC5 0xB682 # HANGUL SYLLABLE SSANGTIKEUT-YO-SSANGKIYEOK
-0x8CC6 0xB683 # HANGUL SYLLABLE SSANGTIKEUT-YO-KIYEOKSIOS
-0x8CC7 0xB684 # HANGUL SYLLABLE SSANGTIKEUT-YO-NIEUN
-0x8CC8 0xB685 # HANGUL SYLLABLE SSANGTIKEUT-YO-NIEUNCIEUC
-0x8CC9 0xB686 # HANGUL SYLLABLE SSANGTIKEUT-YO-NIEUNHIEUH
-0x8CCA 0xB687 # HANGUL SYLLABLE SSANGTIKEUT-YO-TIKEUT
-0x8CCB 0xB688 # HANGUL SYLLABLE SSANGTIKEUT-YO-RIEUL
-0x8CCC 0xB689 # HANGUL SYLLABLE SSANGTIKEUT-YO-RIEULKIYEOK
-0x8CCD 0xB68A # HANGUL SYLLABLE SSANGTIKEUT-YO-RIEULMIEUM
-0x8CCE 0xB68B # HANGUL SYLLABLE SSANGTIKEUT-YO-RIEULPIEUP
-0x8CCF 0xB68C # HANGUL SYLLABLE SSANGTIKEUT-YO-RIEULSIOS
-0x8CD0 0xB68D # HANGUL SYLLABLE SSANGTIKEUT-YO-RIEULTHIEUTH
-0x8CD1 0xB68E # HANGUL SYLLABLE SSANGTIKEUT-YO-RIEULPHIEUPH
-0x8CD2 0xB68F # HANGUL SYLLABLE SSANGTIKEUT-YO-RIEULHIEUH
-0x8CD3 0xB690 # HANGUL SYLLABLE SSANGTIKEUT-YO-MIEUM
-0x8CD4 0xB691 # HANGUL SYLLABLE SSANGTIKEUT-YO-PIEUP
-0x8CD5 0xB692 # HANGUL SYLLABLE SSANGTIKEUT-YO-PIEUPSIOS
-0x8CD6 0xB693 # HANGUL SYLLABLE SSANGTIKEUT-YO-SIOS
-0x8CD7 0xB694 # HANGUL SYLLABLE SSANGTIKEUT-YO-SSANGSIOS
-0x8CD8 0xB695 # HANGUL SYLLABLE SSANGTIKEUT-YO-IEUNG
-0x8CD9 0xB696 # HANGUL SYLLABLE SSANGTIKEUT-YO-CIEUC
-0x8CDA 0xB697 # HANGUL SYLLABLE SSANGTIKEUT-YO-CHIEUCH
-0x8CDB 0xB698 # HANGUL SYLLABLE SSANGTIKEUT-YO-KHIEUKH
-0x8CDC 0xB699 # HANGUL SYLLABLE SSANGTIKEUT-YO-THIEUTH
-0x8CDD 0xB69A # HANGUL SYLLABLE SSANGTIKEUT-YO-PHIEUPH
-0x8CDE 0xB69B # HANGUL SYLLABLE SSANGTIKEUT-YO-HIEUH
-0x8CDF 0xB69E # HANGUL SYLLABLE SSANGTIKEUT-U-SSANGKIYEOK
-0x8CE0 0xB69F # HANGUL SYLLABLE SSANGTIKEUT-U-KIYEOKSIOS
-0x8CE1 0xB6A1 # HANGUL SYLLABLE SSANGTIKEUT-U-NIEUNCIEUC
-0x8CE2 0xB6A2 # HANGUL SYLLABLE SSANGTIKEUT-U-NIEUNHIEUH
-0x8CE3 0xB6A3 # HANGUL SYLLABLE SSANGTIKEUT-U-TIKEUT
-0x8CE4 0xB6A5 # HANGUL SYLLABLE SSANGTIKEUT-U-RIEULKIYEOK
-0x8CE5 0xB6A6 # HANGUL SYLLABLE SSANGTIKEUT-U-RIEULMIEUM
-0x8CE6 0xB6A7 # HANGUL SYLLABLE SSANGTIKEUT-U-RIEULPIEUP
-0x8CE7 0xB6A8 # HANGUL SYLLABLE SSANGTIKEUT-U-RIEULSIOS
-0x8CE8 0xB6A9 # HANGUL SYLLABLE SSANGTIKEUT-U-RIEULTHIEUTH
-0x8CE9 0xB6AA # HANGUL SYLLABLE SSANGTIKEUT-U-RIEULPHIEUPH
-0x8CEA 0xB6AD # HANGUL SYLLABLE SSANGTIKEUT-U-PIEUP
-0x8CEB 0xB6AE # HANGUL SYLLABLE SSANGTIKEUT-U-PIEUPSIOS
-0x8CEC 0xB6AF # HANGUL SYLLABLE SSANGTIKEUT-U-SIOS
-0x8CED 0xB6B0 # HANGUL SYLLABLE SSANGTIKEUT-U-SSANGSIOS
-0x8CEE 0xB6B2 # HANGUL SYLLABLE SSANGTIKEUT-U-CIEUC
-0x8CEF 0xB6B3 # HANGUL SYLLABLE SSANGTIKEUT-U-CHIEUCH
-0x8CF0 0xB6B4 # HANGUL SYLLABLE SSANGTIKEUT-U-KHIEUKH
-0x8CF1 0xB6B5 # HANGUL SYLLABLE SSANGTIKEUT-U-THIEUTH
-0x8CF2 0xB6B6 # HANGUL SYLLABLE SSANGTIKEUT-U-PHIEUPH
-0x8CF3 0xB6B7 # HANGUL SYLLABLE SSANGTIKEUT-U-HIEUH
-0x8CF4 0xB6B8 # HANGUL SYLLABLE SSANGTIKEUT-WEO
-0x8CF5 0xB6B9 # HANGUL SYLLABLE SSANGTIKEUT-WEO-KIYEOK
-0x8CF6 0xB6BA # HANGUL SYLLABLE SSANGTIKEUT-WEO-SSANGKIYEOK
-0x8CF7 0xB6BB # HANGUL SYLLABLE SSANGTIKEUT-WEO-KIYEOKSIOS
-0x8CF8 0xB6BC # HANGUL SYLLABLE SSANGTIKEUT-WEO-NIEUN
-0x8CF9 0xB6BD # HANGUL SYLLABLE SSANGTIKEUT-WEO-NIEUNCIEUC
-0x8CFA 0xB6BE # HANGUL SYLLABLE SSANGTIKEUT-WEO-NIEUNHIEUH
-0x8CFB 0xB6BF # HANGUL SYLLABLE SSANGTIKEUT-WEO-TIKEUT
-0x8CFC 0xB6C0 # HANGUL SYLLABLE SSANGTIKEUT-WEO-RIEUL
-0x8CFD 0xB6C1 # HANGUL SYLLABLE SSANGTIKEUT-WEO-RIEULKIYEOK
-0x8CFE 0xB6C2 # HANGUL SYLLABLE SSANGTIKEUT-WEO-RIEULMIEUM
-0x8D41 0xB6C3 # HANGUL SYLLABLE SSANGTIKEUT-WEO-RIEULPIEUP
-0x8D42 0xB6C4 # HANGUL SYLLABLE SSANGTIKEUT-WEO-RIEULSIOS
-0x8D43 0xB6C5 # HANGUL SYLLABLE SSANGTIKEUT-WEO-RIEULTHIEUTH
-0x8D44 0xB6C6 # HANGUL SYLLABLE SSANGTIKEUT-WEO-RIEULPHIEUPH
-0x8D45 0xB6C7 # HANGUL SYLLABLE SSANGTIKEUT-WEO-RIEULHIEUH
-0x8D46 0xB6C8 # HANGUL SYLLABLE SSANGTIKEUT-WEO-MIEUM
-0x8D47 0xB6C9 # HANGUL SYLLABLE SSANGTIKEUT-WEO-PIEUP
-0x8D48 0xB6CA # HANGUL SYLLABLE SSANGTIKEUT-WEO-PIEUPSIOS
-0x8D49 0xB6CB # HANGUL SYLLABLE SSANGTIKEUT-WEO-SIOS
-0x8D4A 0xB6CC # HANGUL SYLLABLE SSANGTIKEUT-WEO-SSANGSIOS
-0x8D4B 0xB6CD # HANGUL SYLLABLE SSANGTIKEUT-WEO-IEUNG
-0x8D4C 0xB6CE # HANGUL SYLLABLE SSANGTIKEUT-WEO-CIEUC
-0x8D4D 0xB6CF # HANGUL SYLLABLE SSANGTIKEUT-WEO-CHIEUCH
-0x8D4E 0xB6D0 # HANGUL SYLLABLE SSANGTIKEUT-WEO-KHIEUKH
-0x8D4F 0xB6D1 # HANGUL SYLLABLE SSANGTIKEUT-WEO-THIEUTH
-0x8D50 0xB6D2 # HANGUL SYLLABLE SSANGTIKEUT-WEO-PHIEUPH
-0x8D51 0xB6D3 # HANGUL SYLLABLE SSANGTIKEUT-WEO-HIEUH
-0x8D52 0xB6D5 # HANGUL SYLLABLE SSANGTIKEUT-WE-KIYEOK
-0x8D53 0xB6D6 # HANGUL SYLLABLE SSANGTIKEUT-WE-SSANGKIYEOK
-0x8D54 0xB6D7 # HANGUL SYLLABLE SSANGTIKEUT-WE-KIYEOKSIOS
-0x8D55 0xB6D8 # HANGUL SYLLABLE SSANGTIKEUT-WE-NIEUN
-0x8D56 0xB6D9 # HANGUL SYLLABLE SSANGTIKEUT-WE-NIEUNCIEUC
-0x8D57 0xB6DA # HANGUL SYLLABLE SSANGTIKEUT-WE-NIEUNHIEUH
-0x8D58 0xB6DB # HANGUL SYLLABLE SSANGTIKEUT-WE-TIKEUT
-0x8D59 0xB6DC # HANGUL SYLLABLE SSANGTIKEUT-WE-RIEUL
-0x8D5A 0xB6DD # HANGUL SYLLABLE SSANGTIKEUT-WE-RIEULKIYEOK
-0x8D61 0xB6DE # HANGUL SYLLABLE SSANGTIKEUT-WE-RIEULMIEUM
-0x8D62 0xB6DF # HANGUL SYLLABLE SSANGTIKEUT-WE-RIEULPIEUP
-0x8D63 0xB6E0 # HANGUL SYLLABLE SSANGTIKEUT-WE-RIEULSIOS
-0x8D64 0xB6E1 # HANGUL SYLLABLE SSANGTIKEUT-WE-RIEULTHIEUTH
-0x8D65 0xB6E2 # HANGUL SYLLABLE SSANGTIKEUT-WE-RIEULPHIEUPH
-0x8D66 0xB6E3 # HANGUL SYLLABLE SSANGTIKEUT-WE-RIEULHIEUH
-0x8D67 0xB6E4 # HANGUL SYLLABLE SSANGTIKEUT-WE-MIEUM
-0x8D68 0xB6E5 # HANGUL SYLLABLE SSANGTIKEUT-WE-PIEUP
-0x8D69 0xB6E6 # HANGUL SYLLABLE SSANGTIKEUT-WE-PIEUPSIOS
-0x8D6A 0xB6E7 # HANGUL SYLLABLE SSANGTIKEUT-WE-SIOS
-0x8D6B 0xB6E8 # HANGUL SYLLABLE SSANGTIKEUT-WE-SSANGSIOS
-0x8D6C 0xB6E9 # HANGUL SYLLABLE SSANGTIKEUT-WE-IEUNG
-0x8D6D 0xB6EA # HANGUL SYLLABLE SSANGTIKEUT-WE-CIEUC
-0x8D6E 0xB6EB # HANGUL SYLLABLE SSANGTIKEUT-WE-CHIEUCH
-0x8D6F 0xB6EC # HANGUL SYLLABLE SSANGTIKEUT-WE-KHIEUKH
-0x8D70 0xB6ED # HANGUL SYLLABLE SSANGTIKEUT-WE-THIEUTH
-0x8D71 0xB6EE # HANGUL SYLLABLE SSANGTIKEUT-WE-PHIEUPH
-0x8D72 0xB6EF # HANGUL SYLLABLE SSANGTIKEUT-WE-HIEUH
-0x8D73 0xB6F1 # HANGUL SYLLABLE SSANGTIKEUT-WI-KIYEOK
-0x8D74 0xB6F2 # HANGUL SYLLABLE SSANGTIKEUT-WI-SSANGKIYEOK
-0x8D75 0xB6F3 # HANGUL SYLLABLE SSANGTIKEUT-WI-KIYEOKSIOS
-0x8D76 0xB6F5 # HANGUL SYLLABLE SSANGTIKEUT-WI-NIEUNCIEUC
-0x8D77 0xB6F6 # HANGUL SYLLABLE SSANGTIKEUT-WI-NIEUNHIEUH
-0x8D78 0xB6F7 # HANGUL SYLLABLE SSANGTIKEUT-WI-TIKEUT
-0x8D79 0xB6F9 # HANGUL SYLLABLE SSANGTIKEUT-WI-RIEULKIYEOK
-0x8D7A 0xB6FA # HANGUL SYLLABLE SSANGTIKEUT-WI-RIEULMIEUM
-0x8D81 0xB6FB # HANGUL SYLLABLE SSANGTIKEUT-WI-RIEULPIEUP
-0x8D82 0xB6FC # HANGUL SYLLABLE SSANGTIKEUT-WI-RIEULSIOS
-0x8D83 0xB6FD # HANGUL SYLLABLE SSANGTIKEUT-WI-RIEULTHIEUTH
-0x8D84 0xB6FE # HANGUL SYLLABLE SSANGTIKEUT-WI-RIEULPHIEUPH
-0x8D85 0xB6FF # HANGUL SYLLABLE SSANGTIKEUT-WI-RIEULHIEUH
-0x8D86 0xB702 # HANGUL SYLLABLE SSANGTIKEUT-WI-PIEUPSIOS
-0x8D87 0xB703 # HANGUL SYLLABLE SSANGTIKEUT-WI-SIOS
-0x8D88 0xB704 # HANGUL SYLLABLE SSANGTIKEUT-WI-SSANGSIOS
-0x8D89 0xB706 # HANGUL SYLLABLE SSANGTIKEUT-WI-CIEUC
-0x8D8A 0xB707 # HANGUL SYLLABLE SSANGTIKEUT-WI-CHIEUCH
-0x8D8B 0xB708 # HANGUL SYLLABLE SSANGTIKEUT-WI-KHIEUKH
-0x8D8C 0xB709 # HANGUL SYLLABLE SSANGTIKEUT-WI-THIEUTH
-0x8D8D 0xB70A # HANGUL SYLLABLE SSANGTIKEUT-WI-PHIEUPH
-0x8D8E 0xB70B # HANGUL SYLLABLE SSANGTIKEUT-WI-HIEUH
-0x8D8F 0xB70C # HANGUL SYLLABLE SSANGTIKEUT-YU
-0x8D90 0xB70D # HANGUL SYLLABLE SSANGTIKEUT-YU-KIYEOK
-0x8D91 0xB70E # HANGUL SYLLABLE SSANGTIKEUT-YU-SSANGKIYEOK
-0x8D92 0xB70F # HANGUL SYLLABLE SSANGTIKEUT-YU-KIYEOKSIOS
-0x8D93 0xB710 # HANGUL SYLLABLE SSANGTIKEUT-YU-NIEUN
-0x8D94 0xB711 # HANGUL SYLLABLE SSANGTIKEUT-YU-NIEUNCIEUC
-0x8D95 0xB712 # HANGUL SYLLABLE SSANGTIKEUT-YU-NIEUNHIEUH
-0x8D96 0xB713 # HANGUL SYLLABLE SSANGTIKEUT-YU-TIKEUT
-0x8D97 0xB714 # HANGUL SYLLABLE SSANGTIKEUT-YU-RIEUL
-0x8D98 0xB715 # HANGUL SYLLABLE SSANGTIKEUT-YU-RIEULKIYEOK
-0x8D99 0xB716 # HANGUL SYLLABLE SSANGTIKEUT-YU-RIEULMIEUM
-0x8D9A 0xB717 # HANGUL SYLLABLE SSANGTIKEUT-YU-RIEULPIEUP
-0x8D9B 0xB718 # HANGUL SYLLABLE SSANGTIKEUT-YU-RIEULSIOS
-0x8D9C 0xB719 # HANGUL SYLLABLE SSANGTIKEUT-YU-RIEULTHIEUTH
-0x8D9D 0xB71A # HANGUL SYLLABLE SSANGTIKEUT-YU-RIEULPHIEUPH
-0x8D9E 0xB71B # HANGUL SYLLABLE SSANGTIKEUT-YU-RIEULHIEUH
-0x8D9F 0xB71C # HANGUL SYLLABLE SSANGTIKEUT-YU-MIEUM
-0x8DA0 0xB71D # HANGUL SYLLABLE SSANGTIKEUT-YU-PIEUP
-0x8DA1 0xB71E # HANGUL SYLLABLE SSANGTIKEUT-YU-PIEUPSIOS
-0x8DA2 0xB71F # HANGUL SYLLABLE SSANGTIKEUT-YU-SIOS
-0x8DA3 0xB720 # HANGUL SYLLABLE SSANGTIKEUT-YU-SSANGSIOS
-0x8DA4 0xB721 # HANGUL SYLLABLE SSANGTIKEUT-YU-IEUNG
-0x8DA5 0xB722 # HANGUL SYLLABLE SSANGTIKEUT-YU-CIEUC
-0x8DA6 0xB723 # HANGUL SYLLABLE SSANGTIKEUT-YU-CHIEUCH
-0x8DA7 0xB724 # HANGUL SYLLABLE SSANGTIKEUT-YU-KHIEUKH
-0x8DA8 0xB725 # HANGUL SYLLABLE SSANGTIKEUT-YU-THIEUTH
-0x8DA9 0xB726 # HANGUL SYLLABLE SSANGTIKEUT-YU-PHIEUPH
-0x8DAA 0xB727 # HANGUL SYLLABLE SSANGTIKEUT-YU-HIEUH
-0x8DAB 0xB72A # HANGUL SYLLABLE SSANGTIKEUT-EU-SSANGKIYEOK
-0x8DAC 0xB72B # HANGUL SYLLABLE SSANGTIKEUT-EU-KIYEOKSIOS
-0x8DAD 0xB72D # HANGUL SYLLABLE SSANGTIKEUT-EU-NIEUNCIEUC
-0x8DAE 0xB72E # HANGUL SYLLABLE SSANGTIKEUT-EU-NIEUNHIEUH
-0x8DAF 0xB731 # HANGUL SYLLABLE SSANGTIKEUT-EU-RIEULKIYEOK
-0x8DB0 0xB732 # HANGUL SYLLABLE SSANGTIKEUT-EU-RIEULMIEUM
-0x8DB1 0xB733 # HANGUL SYLLABLE SSANGTIKEUT-EU-RIEULPIEUP
-0x8DB2 0xB734 # HANGUL SYLLABLE SSANGTIKEUT-EU-RIEULSIOS
-0x8DB3 0xB735 # HANGUL SYLLABLE SSANGTIKEUT-EU-RIEULTHIEUTH
-0x8DB4 0xB736 # HANGUL SYLLABLE SSANGTIKEUT-EU-RIEULPHIEUPH
-0x8DB5 0xB737 # HANGUL SYLLABLE SSANGTIKEUT-EU-RIEULHIEUH
-0x8DB6 0xB73A # HANGUL SYLLABLE SSANGTIKEUT-EU-PIEUPSIOS
-0x8DB7 0xB73C # HANGUL SYLLABLE SSANGTIKEUT-EU-SSANGSIOS
-0x8DB8 0xB73D # HANGUL SYLLABLE SSANGTIKEUT-EU-IEUNG
-0x8DB9 0xB73E # HANGUL SYLLABLE SSANGTIKEUT-EU-CIEUC
-0x8DBA 0xB73F # HANGUL SYLLABLE SSANGTIKEUT-EU-CHIEUCH
-0x8DBB 0xB740 # HANGUL SYLLABLE SSANGTIKEUT-EU-KHIEUKH
-0x8DBC 0xB741 # HANGUL SYLLABLE SSANGTIKEUT-EU-THIEUTH
-0x8DBD 0xB742 # HANGUL SYLLABLE SSANGTIKEUT-EU-PHIEUPH
-0x8DBE 0xB743 # HANGUL SYLLABLE SSANGTIKEUT-EU-HIEUH
-0x8DBF 0xB745 # HANGUL SYLLABLE SSANGTIKEUT-YI-KIYEOK
-0x8DC0 0xB746 # HANGUL SYLLABLE SSANGTIKEUT-YI-SSANGKIYEOK
-0x8DC1 0xB747 # HANGUL SYLLABLE SSANGTIKEUT-YI-KIYEOKSIOS
-0x8DC2 0xB749 # HANGUL SYLLABLE SSANGTIKEUT-YI-NIEUNCIEUC
-0x8DC3 0xB74A # HANGUL SYLLABLE SSANGTIKEUT-YI-NIEUNHIEUH
-0x8DC4 0xB74B # HANGUL SYLLABLE SSANGTIKEUT-YI-TIKEUT
-0x8DC5 0xB74D # HANGUL SYLLABLE SSANGTIKEUT-YI-RIEULKIYEOK
-0x8DC6 0xB74E # HANGUL SYLLABLE SSANGTIKEUT-YI-RIEULMIEUM
-0x8DC7 0xB74F # HANGUL SYLLABLE SSANGTIKEUT-YI-RIEULPIEUP
-0x8DC8 0xB750 # HANGUL SYLLABLE SSANGTIKEUT-YI-RIEULSIOS
-0x8DC9 0xB751 # HANGUL SYLLABLE SSANGTIKEUT-YI-RIEULTHIEUTH
-0x8DCA 0xB752 # HANGUL SYLLABLE SSANGTIKEUT-YI-RIEULPHIEUPH
-0x8DCB 0xB753 # HANGUL SYLLABLE SSANGTIKEUT-YI-RIEULHIEUH
-0x8DCC 0xB756 # HANGUL SYLLABLE SSANGTIKEUT-YI-PIEUPSIOS
-0x8DCD 0xB757 # HANGUL SYLLABLE SSANGTIKEUT-YI-SIOS
-0x8DCE 0xB758 # HANGUL SYLLABLE SSANGTIKEUT-YI-SSANGSIOS
-0x8DCF 0xB759 # HANGUL SYLLABLE SSANGTIKEUT-YI-IEUNG
-0x8DD0 0xB75A # HANGUL SYLLABLE SSANGTIKEUT-YI-CIEUC
-0x8DD1 0xB75B # HANGUL SYLLABLE SSANGTIKEUT-YI-CHIEUCH
-0x8DD2 0xB75C # HANGUL SYLLABLE SSANGTIKEUT-YI-KHIEUKH
-0x8DD3 0xB75D # HANGUL SYLLABLE SSANGTIKEUT-YI-THIEUTH
-0x8DD4 0xB75E # HANGUL SYLLABLE SSANGTIKEUT-YI-PHIEUPH
-0x8DD5 0xB75F # HANGUL SYLLABLE SSANGTIKEUT-YI-HIEUH
-0x8DD6 0xB761 # HANGUL SYLLABLE SSANGTIKEUT-I-KIYEOK
-0x8DD7 0xB762 # HANGUL SYLLABLE SSANGTIKEUT-I-SSANGKIYEOK
-0x8DD8 0xB763 # HANGUL SYLLABLE SSANGTIKEUT-I-KIYEOKSIOS
-0x8DD9 0xB765 # HANGUL SYLLABLE SSANGTIKEUT-I-NIEUNCIEUC
-0x8DDA 0xB766 # HANGUL SYLLABLE SSANGTIKEUT-I-NIEUNHIEUH
-0x8DDB 0xB767 # HANGUL SYLLABLE SSANGTIKEUT-I-TIKEUT
-0x8DDC 0xB769 # HANGUL SYLLABLE SSANGTIKEUT-I-RIEULKIYEOK
-0x8DDD 0xB76A # HANGUL SYLLABLE SSANGTIKEUT-I-RIEULMIEUM
-0x8DDE 0xB76B # HANGUL SYLLABLE SSANGTIKEUT-I-RIEULPIEUP
-0x8DDF 0xB76C # HANGUL SYLLABLE SSANGTIKEUT-I-RIEULSIOS
-0x8DE0 0xB76D # HANGUL SYLLABLE SSANGTIKEUT-I-RIEULTHIEUTH
-0x8DE1 0xB76E # HANGUL SYLLABLE SSANGTIKEUT-I-RIEULPHIEUPH
-0x8DE2 0xB76F # HANGUL SYLLABLE SSANGTIKEUT-I-RIEULHIEUH
-0x8DE3 0xB772 # HANGUL SYLLABLE SSANGTIKEUT-I-PIEUPSIOS
-0x8DE4 0xB774 # HANGUL SYLLABLE SSANGTIKEUT-I-SSANGSIOS
-0x8DE5 0xB776 # HANGUL SYLLABLE SSANGTIKEUT-I-CIEUC
-0x8DE6 0xB777 # HANGUL SYLLABLE SSANGTIKEUT-I-CHIEUCH
-0x8DE7 0xB778 # HANGUL SYLLABLE SSANGTIKEUT-I-KHIEUKH
-0x8DE8 0xB779 # HANGUL SYLLABLE SSANGTIKEUT-I-THIEUTH
-0x8DE9 0xB77A # HANGUL SYLLABLE SSANGTIKEUT-I-PHIEUPH
-0x8DEA 0xB77B # HANGUL SYLLABLE SSANGTIKEUT-I-HIEUH
-0x8DEB 0xB77E # HANGUL SYLLABLE RIEUL-A-SSANGKIYEOK
-0x8DEC 0xB77F # HANGUL SYLLABLE RIEUL-A-KIYEOKSIOS
-0x8DED 0xB781 # HANGUL SYLLABLE RIEUL-A-NIEUNCIEUC
-0x8DEE 0xB782 # HANGUL SYLLABLE RIEUL-A-NIEUNHIEUH
-0x8DEF 0xB783 # HANGUL SYLLABLE RIEUL-A-TIKEUT
-0x8DF0 0xB785 # HANGUL SYLLABLE RIEUL-A-RIEULKIYEOK
-0x8DF1 0xB786 # HANGUL SYLLABLE RIEUL-A-RIEULMIEUM
-0x8DF2 0xB787 # HANGUL SYLLABLE RIEUL-A-RIEULPIEUP
-0x8DF3 0xB788 # HANGUL SYLLABLE RIEUL-A-RIEULSIOS
-0x8DF4 0xB789 # HANGUL SYLLABLE RIEUL-A-RIEULTHIEUTH
-0x8DF5 0xB78A # HANGUL SYLLABLE RIEUL-A-RIEULPHIEUPH
-0x8DF6 0xB78B # HANGUL SYLLABLE RIEUL-A-RIEULHIEUH
-0x8DF7 0xB78E # HANGUL SYLLABLE RIEUL-A-PIEUPSIOS
-0x8DF8 0xB793 # HANGUL SYLLABLE RIEUL-A-CHIEUCH
-0x8DF9 0xB794 # HANGUL SYLLABLE RIEUL-A-KHIEUKH
-0x8DFA 0xB795 # HANGUL SYLLABLE RIEUL-A-THIEUTH
-0x8DFB 0xB79A # HANGUL SYLLABLE RIEUL-AE-SSANGKIYEOK
-0x8DFC 0xB79B # HANGUL SYLLABLE RIEUL-AE-KIYEOKSIOS
-0x8DFD 0xB79D # HANGUL SYLLABLE RIEUL-AE-NIEUNCIEUC
-0x8DFE 0xB79E # HANGUL SYLLABLE RIEUL-AE-NIEUNHIEUH
-0x8E41 0xB79F # HANGUL SYLLABLE RIEUL-AE-TIKEUT
-0x8E42 0xB7A1 # HANGUL SYLLABLE RIEUL-AE-RIEULKIYEOK
-0x8E43 0xB7A2 # HANGUL SYLLABLE RIEUL-AE-RIEULMIEUM
-0x8E44 0xB7A3 # HANGUL SYLLABLE RIEUL-AE-RIEULPIEUP
-0x8E45 0xB7A4 # HANGUL SYLLABLE RIEUL-AE-RIEULSIOS
-0x8E46 0xB7A5 # HANGUL SYLLABLE RIEUL-AE-RIEULTHIEUTH
-0x8E47 0xB7A6 # HANGUL SYLLABLE RIEUL-AE-RIEULPHIEUPH
-0x8E48 0xB7A7 # HANGUL SYLLABLE RIEUL-AE-RIEULHIEUH
-0x8E49 0xB7AA # HANGUL SYLLABLE RIEUL-AE-PIEUPSIOS
-0x8E4A 0xB7AE # HANGUL SYLLABLE RIEUL-AE-CIEUC
-0x8E4B 0xB7AF # HANGUL SYLLABLE RIEUL-AE-CHIEUCH
-0x8E4C 0xB7B0 # HANGUL SYLLABLE RIEUL-AE-KHIEUKH
-0x8E4D 0xB7B1 # HANGUL SYLLABLE RIEUL-AE-THIEUTH
-0x8E4E 0xB7B2 # HANGUL SYLLABLE RIEUL-AE-PHIEUPH
-0x8E4F 0xB7B3 # HANGUL SYLLABLE RIEUL-AE-HIEUH
-0x8E50 0xB7B6 # HANGUL SYLLABLE RIEUL-YA-SSANGKIYEOK
-0x8E51 0xB7B7 # HANGUL SYLLABLE RIEUL-YA-KIYEOKSIOS
-0x8E52 0xB7B9 # HANGUL SYLLABLE RIEUL-YA-NIEUNCIEUC
-0x8E53 0xB7BA # HANGUL SYLLABLE RIEUL-YA-NIEUNHIEUH
-0x8E54 0xB7BB # HANGUL SYLLABLE RIEUL-YA-TIKEUT
-0x8E55 0xB7BC # HANGUL SYLLABLE RIEUL-YA-RIEUL
-0x8E56 0xB7BD # HANGUL SYLLABLE RIEUL-YA-RIEULKIYEOK
-0x8E57 0xB7BE # HANGUL SYLLABLE RIEUL-YA-RIEULMIEUM
-0x8E58 0xB7BF # HANGUL SYLLABLE RIEUL-YA-RIEULPIEUP
-0x8E59 0xB7C0 # HANGUL SYLLABLE RIEUL-YA-RIEULSIOS
-0x8E5A 0xB7C1 # HANGUL SYLLABLE RIEUL-YA-RIEULTHIEUTH
-0x8E61 0xB7C2 # HANGUL SYLLABLE RIEUL-YA-RIEULPHIEUPH
-0x8E62 0xB7C3 # HANGUL SYLLABLE RIEUL-YA-RIEULHIEUH
-0x8E63 0xB7C4 # HANGUL SYLLABLE RIEUL-YA-MIEUM
-0x8E64 0xB7C5 # HANGUL SYLLABLE RIEUL-YA-PIEUP
-0x8E65 0xB7C6 # HANGUL SYLLABLE RIEUL-YA-PIEUPSIOS
-0x8E66 0xB7C8 # HANGUL SYLLABLE RIEUL-YA-SSANGSIOS
-0x8E67 0xB7CA # HANGUL SYLLABLE RIEUL-YA-CIEUC
-0x8E68 0xB7CB # HANGUL SYLLABLE RIEUL-YA-CHIEUCH
-0x8E69 0xB7CC # HANGUL SYLLABLE RIEUL-YA-KHIEUKH
-0x8E6A 0xB7CD # HANGUL SYLLABLE RIEUL-YA-THIEUTH
-0x8E6B 0xB7CE # HANGUL SYLLABLE RIEUL-YA-PHIEUPH
-0x8E6C 0xB7CF # HANGUL SYLLABLE RIEUL-YA-HIEUH
-0x8E6D 0xB7D0 # HANGUL SYLLABLE RIEUL-YAE
-0x8E6E 0xB7D1 # HANGUL SYLLABLE RIEUL-YAE-KIYEOK
-0x8E6F 0xB7D2 # HANGUL SYLLABLE RIEUL-YAE-SSANGKIYEOK
-0x8E70 0xB7D3 # HANGUL SYLLABLE RIEUL-YAE-KIYEOKSIOS
-0x8E71 0xB7D4 # HANGUL SYLLABLE RIEUL-YAE-NIEUN
-0x8E72 0xB7D5 # HANGUL SYLLABLE RIEUL-YAE-NIEUNCIEUC
-0x8E73 0xB7D6 # HANGUL SYLLABLE RIEUL-YAE-NIEUNHIEUH
-0x8E74 0xB7D7 # HANGUL SYLLABLE RIEUL-YAE-TIKEUT
-0x8E75 0xB7D8 # HANGUL SYLLABLE RIEUL-YAE-RIEUL
-0x8E76 0xB7D9 # HANGUL SYLLABLE RIEUL-YAE-RIEULKIYEOK
-0x8E77 0xB7DA # HANGUL SYLLABLE RIEUL-YAE-RIEULMIEUM
-0x8E78 0xB7DB # HANGUL SYLLABLE RIEUL-YAE-RIEULPIEUP
-0x8E79 0xB7DC # HANGUL SYLLABLE RIEUL-YAE-RIEULSIOS
-0x8E7A 0xB7DD # HANGUL SYLLABLE RIEUL-YAE-RIEULTHIEUTH
-0x8E81 0xB7DE # HANGUL SYLLABLE RIEUL-YAE-RIEULPHIEUPH
-0x8E82 0xB7DF # HANGUL SYLLABLE RIEUL-YAE-RIEULHIEUH
-0x8E83 0xB7E0 # HANGUL SYLLABLE RIEUL-YAE-MIEUM
-0x8E84 0xB7E1 # HANGUL SYLLABLE RIEUL-YAE-PIEUP
-0x8E85 0xB7E2 # HANGUL SYLLABLE RIEUL-YAE-PIEUPSIOS
-0x8E86 0xB7E3 # HANGUL SYLLABLE RIEUL-YAE-SIOS
-0x8E87 0xB7E4 # HANGUL SYLLABLE RIEUL-YAE-SSANGSIOS
-0x8E88 0xB7E5 # HANGUL SYLLABLE RIEUL-YAE-IEUNG
-0x8E89 0xB7E6 # HANGUL SYLLABLE RIEUL-YAE-CIEUC
-0x8E8A 0xB7E7 # HANGUL SYLLABLE RIEUL-YAE-CHIEUCH
-0x8E8B 0xB7E8 # HANGUL SYLLABLE RIEUL-YAE-KHIEUKH
-0x8E8C 0xB7E9 # HANGUL SYLLABLE RIEUL-YAE-THIEUTH
-0x8E8D 0xB7EA # HANGUL SYLLABLE RIEUL-YAE-PHIEUPH
-0x8E8E 0xB7EB # HANGUL SYLLABLE RIEUL-YAE-HIEUH
-0x8E8F 0xB7EE # HANGUL SYLLABLE RIEUL-EO-SSANGKIYEOK
-0x8E90 0xB7EF # HANGUL SYLLABLE RIEUL-EO-KIYEOKSIOS
-0x8E91 0xB7F1 # HANGUL SYLLABLE RIEUL-EO-NIEUNCIEUC
-0x8E92 0xB7F2 # HANGUL SYLLABLE RIEUL-EO-NIEUNHIEUH
-0x8E93 0xB7F3 # HANGUL SYLLABLE RIEUL-EO-TIKEUT
-0x8E94 0xB7F5 # HANGUL SYLLABLE RIEUL-EO-RIEULKIYEOK
-0x8E95 0xB7F6 # HANGUL SYLLABLE RIEUL-EO-RIEULMIEUM
-0x8E96 0xB7F7 # HANGUL SYLLABLE RIEUL-EO-RIEULPIEUP
-0x8E97 0xB7F8 # HANGUL SYLLABLE RIEUL-EO-RIEULSIOS
-0x8E98 0xB7F9 # HANGUL SYLLABLE RIEUL-EO-RIEULTHIEUTH
-0x8E99 0xB7FA # HANGUL SYLLABLE RIEUL-EO-RIEULPHIEUPH
-0x8E9A 0xB7FB # HANGUL SYLLABLE RIEUL-EO-RIEULHIEUH
-0x8E9B 0xB7FE # HANGUL SYLLABLE RIEUL-EO-PIEUPSIOS
-0x8E9C 0xB802 # HANGUL SYLLABLE RIEUL-EO-CIEUC
-0x8E9D 0xB803 # HANGUL SYLLABLE RIEUL-EO-CHIEUCH
-0x8E9E 0xB804 # HANGUL SYLLABLE RIEUL-EO-KHIEUKH
-0x8E9F 0xB805 # HANGUL SYLLABLE RIEUL-EO-THIEUTH
-0x8EA0 0xB806 # HANGUL SYLLABLE RIEUL-EO-PHIEUPH
-0x8EA1 0xB80A # HANGUL SYLLABLE RIEUL-E-SSANGKIYEOK
-0x8EA2 0xB80B # HANGUL SYLLABLE RIEUL-E-KIYEOKSIOS
-0x8EA3 0xB80D # HANGUL SYLLABLE RIEUL-E-NIEUNCIEUC
-0x8EA4 0xB80E # HANGUL SYLLABLE RIEUL-E-NIEUNHIEUH
-0x8EA5 0xB80F # HANGUL SYLLABLE RIEUL-E-TIKEUT
-0x8EA6 0xB811 # HANGUL SYLLABLE RIEUL-E-RIEULKIYEOK
-0x8EA7 0xB812 # HANGUL SYLLABLE RIEUL-E-RIEULMIEUM
-0x8EA8 0xB813 # HANGUL SYLLABLE RIEUL-E-RIEULPIEUP
-0x8EA9 0xB814 # HANGUL SYLLABLE RIEUL-E-RIEULSIOS
-0x8EAA 0xB815 # HANGUL SYLLABLE RIEUL-E-RIEULTHIEUTH
-0x8EAB 0xB816 # HANGUL SYLLABLE RIEUL-E-RIEULPHIEUPH
-0x8EAC 0xB817 # HANGUL SYLLABLE RIEUL-E-RIEULHIEUH
-0x8EAD 0xB81A # HANGUL SYLLABLE RIEUL-E-PIEUPSIOS
-0x8EAE 0xB81C # HANGUL SYLLABLE RIEUL-E-SSANGSIOS
-0x8EAF 0xB81E # HANGUL SYLLABLE RIEUL-E-CIEUC
-0x8EB0 0xB81F # HANGUL SYLLABLE RIEUL-E-CHIEUCH
-0x8EB1 0xB820 # HANGUL SYLLABLE RIEUL-E-KHIEUKH
-0x8EB2 0xB821 # HANGUL SYLLABLE RIEUL-E-THIEUTH
-0x8EB3 0xB822 # HANGUL SYLLABLE RIEUL-E-PHIEUPH
-0x8EB4 0xB823 # HANGUL SYLLABLE RIEUL-E-HIEUH
-0x8EB5 0xB826 # HANGUL SYLLABLE RIEUL-YEO-SSANGKIYEOK
-0x8EB6 0xB827 # HANGUL SYLLABLE RIEUL-YEO-KIYEOKSIOS
-0x8EB7 0xB829 # HANGUL SYLLABLE RIEUL-YEO-NIEUNCIEUC
-0x8EB8 0xB82A # HANGUL SYLLABLE RIEUL-YEO-NIEUNHIEUH
-0x8EB9 0xB82B # HANGUL SYLLABLE RIEUL-YEO-TIKEUT
-0x8EBA 0xB82D # HANGUL SYLLABLE RIEUL-YEO-RIEULKIYEOK
-0x8EBB 0xB82E # HANGUL SYLLABLE RIEUL-YEO-RIEULMIEUM
-0x8EBC 0xB82F # HANGUL SYLLABLE RIEUL-YEO-RIEULPIEUP
-0x8EBD 0xB830 # HANGUL SYLLABLE RIEUL-YEO-RIEULSIOS
-0x8EBE 0xB831 # HANGUL SYLLABLE RIEUL-YEO-RIEULTHIEUTH
-0x8EBF 0xB832 # HANGUL SYLLABLE RIEUL-YEO-RIEULPHIEUPH
-0x8EC0 0xB833 # HANGUL SYLLABLE RIEUL-YEO-RIEULHIEUH
-0x8EC1 0xB836 # HANGUL SYLLABLE RIEUL-YEO-PIEUPSIOS
-0x8EC2 0xB83A # HANGUL SYLLABLE RIEUL-YEO-CIEUC
-0x8EC3 0xB83B # HANGUL SYLLABLE RIEUL-YEO-CHIEUCH
-0x8EC4 0xB83C # HANGUL SYLLABLE RIEUL-YEO-KHIEUKH
-0x8EC5 0xB83D # HANGUL SYLLABLE RIEUL-YEO-THIEUTH
-0x8EC6 0xB83E # HANGUL SYLLABLE RIEUL-YEO-PHIEUPH
-0x8EC7 0xB83F # HANGUL SYLLABLE RIEUL-YEO-HIEUH
-0x8EC8 0xB841 # HANGUL SYLLABLE RIEUL-YE-KIYEOK
-0x8EC9 0xB842 # HANGUL SYLLABLE RIEUL-YE-SSANGKIYEOK
-0x8ECA 0xB843 # HANGUL SYLLABLE RIEUL-YE-KIYEOKSIOS
-0x8ECB 0xB845 # HANGUL SYLLABLE RIEUL-YE-NIEUNCIEUC
-0x8ECC 0xB846 # HANGUL SYLLABLE RIEUL-YE-NIEUNHIEUH
-0x8ECD 0xB847 # HANGUL SYLLABLE RIEUL-YE-TIKEUT
-0x8ECE 0xB848 # HANGUL SYLLABLE RIEUL-YE-RIEUL
-0x8ECF 0xB849 # HANGUL SYLLABLE RIEUL-YE-RIEULKIYEOK
-0x8ED0 0xB84A # HANGUL SYLLABLE RIEUL-YE-RIEULMIEUM
-0x8ED1 0xB84B # HANGUL SYLLABLE RIEUL-YE-RIEULPIEUP
-0x8ED2 0xB84C # HANGUL SYLLABLE RIEUL-YE-RIEULSIOS
-0x8ED3 0xB84D # HANGUL SYLLABLE RIEUL-YE-RIEULTHIEUTH
-0x8ED4 0xB84E # HANGUL SYLLABLE RIEUL-YE-RIEULPHIEUPH
-0x8ED5 0xB84F # HANGUL SYLLABLE RIEUL-YE-RIEULHIEUH
-0x8ED6 0xB850 # HANGUL SYLLABLE RIEUL-YE-MIEUM
-0x8ED7 0xB852 # HANGUL SYLLABLE RIEUL-YE-PIEUPSIOS
-0x8ED8 0xB854 # HANGUL SYLLABLE RIEUL-YE-SSANGSIOS
-0x8ED9 0xB855 # HANGUL SYLLABLE RIEUL-YE-IEUNG
-0x8EDA 0xB856 # HANGUL SYLLABLE RIEUL-YE-CIEUC
-0x8EDB 0xB857 # HANGUL SYLLABLE RIEUL-YE-CHIEUCH
-0x8EDC 0xB858 # HANGUL SYLLABLE RIEUL-YE-KHIEUKH
-0x8EDD 0xB859 # HANGUL SYLLABLE RIEUL-YE-THIEUTH
-0x8EDE 0xB85A # HANGUL SYLLABLE RIEUL-YE-PHIEUPH
-0x8EDF 0xB85B # HANGUL SYLLABLE RIEUL-YE-HIEUH
-0x8EE0 0xB85E # HANGUL SYLLABLE RIEUL-O-SSANGKIYEOK
-0x8EE1 0xB85F # HANGUL SYLLABLE RIEUL-O-KIYEOKSIOS
-0x8EE2 0xB861 # HANGUL SYLLABLE RIEUL-O-NIEUNCIEUC
-0x8EE3 0xB862 # HANGUL SYLLABLE RIEUL-O-NIEUNHIEUH
-0x8EE4 0xB863 # HANGUL SYLLABLE RIEUL-O-TIKEUT
-0x8EE5 0xB865 # HANGUL SYLLABLE RIEUL-O-RIEULKIYEOK
-0x8EE6 0xB866 # HANGUL SYLLABLE RIEUL-O-RIEULMIEUM
-0x8EE7 0xB867 # HANGUL SYLLABLE RIEUL-O-RIEULPIEUP
-0x8EE8 0xB868 # HANGUL SYLLABLE RIEUL-O-RIEULSIOS
-0x8EE9 0xB869 # HANGUL SYLLABLE RIEUL-O-RIEULTHIEUTH
-0x8EEA 0xB86A # HANGUL SYLLABLE RIEUL-O-RIEULPHIEUPH
-0x8EEB 0xB86B # HANGUL SYLLABLE RIEUL-O-RIEULHIEUH
-0x8EEC 0xB86E # HANGUL SYLLABLE RIEUL-O-PIEUPSIOS
-0x8EED 0xB870 # HANGUL SYLLABLE RIEUL-O-SSANGSIOS
-0x8EEE 0xB872 # HANGUL SYLLABLE RIEUL-O-CIEUC
-0x8EEF 0xB873 # HANGUL SYLLABLE RIEUL-O-CHIEUCH
-0x8EF0 0xB874 # HANGUL SYLLABLE RIEUL-O-KHIEUKH
-0x8EF1 0xB875 # HANGUL SYLLABLE RIEUL-O-THIEUTH
-0x8EF2 0xB876 # HANGUL SYLLABLE RIEUL-O-PHIEUPH
-0x8EF3 0xB877 # HANGUL SYLLABLE RIEUL-O-HIEUH
-0x8EF4 0xB879 # HANGUL SYLLABLE RIEUL-WA-KIYEOK
-0x8EF5 0xB87A # HANGUL SYLLABLE RIEUL-WA-SSANGKIYEOK
-0x8EF6 0xB87B # HANGUL SYLLABLE RIEUL-WA-KIYEOKSIOS
-0x8EF7 0xB87D # HANGUL SYLLABLE RIEUL-WA-NIEUNCIEUC
-0x8EF8 0xB87E # HANGUL SYLLABLE RIEUL-WA-NIEUNHIEUH
-0x8EF9 0xB87F # HANGUL SYLLABLE RIEUL-WA-TIKEUT
-0x8EFA 0xB880 # HANGUL SYLLABLE RIEUL-WA-RIEUL
-0x8EFB 0xB881 # HANGUL SYLLABLE RIEUL-WA-RIEULKIYEOK
-0x8EFC 0xB882 # HANGUL SYLLABLE RIEUL-WA-RIEULMIEUM
-0x8EFD 0xB883 # HANGUL SYLLABLE RIEUL-WA-RIEULPIEUP
-0x8EFE 0xB884 # HANGUL SYLLABLE RIEUL-WA-RIEULSIOS
-0x8F41 0xB885 # HANGUL SYLLABLE RIEUL-WA-RIEULTHIEUTH
-0x8F42 0xB886 # HANGUL SYLLABLE RIEUL-WA-RIEULPHIEUPH
-0x8F43 0xB887 # HANGUL SYLLABLE RIEUL-WA-RIEULHIEUH
-0x8F44 0xB888 # HANGUL SYLLABLE RIEUL-WA-MIEUM
-0x8F45 0xB889 # HANGUL SYLLABLE RIEUL-WA-PIEUP
-0x8F46 0xB88A # HANGUL SYLLABLE RIEUL-WA-PIEUPSIOS
-0x8F47 0xB88B # HANGUL SYLLABLE RIEUL-WA-SIOS
-0x8F48 0xB88C # HANGUL SYLLABLE RIEUL-WA-SSANGSIOS
-0x8F49 0xB88E # HANGUL SYLLABLE RIEUL-WA-CIEUC
-0x8F4A 0xB88F # HANGUL SYLLABLE RIEUL-WA-CHIEUCH
-0x8F4B 0xB890 # HANGUL SYLLABLE RIEUL-WA-KHIEUKH
-0x8F4C 0xB891 # HANGUL SYLLABLE RIEUL-WA-THIEUTH
-0x8F4D 0xB892 # HANGUL SYLLABLE RIEUL-WA-PHIEUPH
-0x8F4E 0xB893 # HANGUL SYLLABLE RIEUL-WA-HIEUH
-0x8F4F 0xB894 # HANGUL SYLLABLE RIEUL-WAE
-0x8F50 0xB895 # HANGUL SYLLABLE RIEUL-WAE-KIYEOK
-0x8F51 0xB896 # HANGUL SYLLABLE RIEUL-WAE-SSANGKIYEOK
-0x8F52 0xB897 # HANGUL SYLLABLE RIEUL-WAE-KIYEOKSIOS
-0x8F53 0xB898 # HANGUL SYLLABLE RIEUL-WAE-NIEUN
-0x8F54 0xB899 # HANGUL SYLLABLE RIEUL-WAE-NIEUNCIEUC
-0x8F55 0xB89A # HANGUL SYLLABLE RIEUL-WAE-NIEUNHIEUH
-0x8F56 0xB89B # HANGUL SYLLABLE RIEUL-WAE-TIKEUT
-0x8F57 0xB89C # HANGUL SYLLABLE RIEUL-WAE-RIEUL
-0x8F58 0xB89D # HANGUL SYLLABLE RIEUL-WAE-RIEULKIYEOK
-0x8F59 0xB89E # HANGUL SYLLABLE RIEUL-WAE-RIEULMIEUM
-0x8F5A 0xB89F # HANGUL SYLLABLE RIEUL-WAE-RIEULPIEUP
-0x8F61 0xB8A0 # HANGUL SYLLABLE RIEUL-WAE-RIEULSIOS
-0x8F62 0xB8A1 # HANGUL SYLLABLE RIEUL-WAE-RIEULTHIEUTH
-0x8F63 0xB8A2 # HANGUL SYLLABLE RIEUL-WAE-RIEULPHIEUPH
-0x8F64 0xB8A3 # HANGUL SYLLABLE RIEUL-WAE-RIEULHIEUH
-0x8F65 0xB8A4 # HANGUL SYLLABLE RIEUL-WAE-MIEUM
-0x8F66 0xB8A5 # HANGUL SYLLABLE RIEUL-WAE-PIEUP
-0x8F67 0xB8A6 # HANGUL SYLLABLE RIEUL-WAE-PIEUPSIOS
-0x8F68 0xB8A7 # HANGUL SYLLABLE RIEUL-WAE-SIOS
-0x8F69 0xB8A9 # HANGUL SYLLABLE RIEUL-WAE-IEUNG
-0x8F6A 0xB8AA # HANGUL SYLLABLE RIEUL-WAE-CIEUC
-0x8F6B 0xB8AB # HANGUL SYLLABLE RIEUL-WAE-CHIEUCH
-0x8F6C 0xB8AC # HANGUL SYLLABLE RIEUL-WAE-KHIEUKH
-0x8F6D 0xB8AD # HANGUL SYLLABLE RIEUL-WAE-THIEUTH
-0x8F6E 0xB8AE # HANGUL SYLLABLE RIEUL-WAE-PHIEUPH
-0x8F6F 0xB8AF # HANGUL SYLLABLE RIEUL-WAE-HIEUH
-0x8F70 0xB8B1 # HANGUL SYLLABLE RIEUL-OE-KIYEOK
-0x8F71 0xB8B2 # HANGUL SYLLABLE RIEUL-OE-SSANGKIYEOK
-0x8F72 0xB8B3 # HANGUL SYLLABLE RIEUL-OE-KIYEOKSIOS
-0x8F73 0xB8B5 # HANGUL SYLLABLE RIEUL-OE-NIEUNCIEUC
-0x8F74 0xB8B6 # HANGUL SYLLABLE RIEUL-OE-NIEUNHIEUH
-0x8F75 0xB8B7 # HANGUL SYLLABLE RIEUL-OE-TIKEUT
-0x8F76 0xB8B9 # HANGUL SYLLABLE RIEUL-OE-RIEULKIYEOK
-0x8F77 0xB8BA # HANGUL SYLLABLE RIEUL-OE-RIEULMIEUM
-0x8F78 0xB8BB # HANGUL SYLLABLE RIEUL-OE-RIEULPIEUP
-0x8F79 0xB8BC # HANGUL SYLLABLE RIEUL-OE-RIEULSIOS
-0x8F7A 0xB8BD # HANGUL SYLLABLE RIEUL-OE-RIEULTHIEUTH
-0x8F81 0xB8BE # HANGUL SYLLABLE RIEUL-OE-RIEULPHIEUPH
-0x8F82 0xB8BF # HANGUL SYLLABLE RIEUL-OE-RIEULHIEUH
-0x8F83 0xB8C2 # HANGUL SYLLABLE RIEUL-OE-PIEUPSIOS
-0x8F84 0xB8C4 # HANGUL SYLLABLE RIEUL-OE-SSANGSIOS
-0x8F85 0xB8C6 # HANGUL SYLLABLE RIEUL-OE-CIEUC
-0x8F86 0xB8C7 # HANGUL SYLLABLE RIEUL-OE-CHIEUCH
-0x8F87 0xB8C8 # HANGUL SYLLABLE RIEUL-OE-KHIEUKH
-0x8F88 0xB8C9 # HANGUL SYLLABLE RIEUL-OE-THIEUTH
-0x8F89 0xB8CA # HANGUL SYLLABLE RIEUL-OE-PHIEUPH
-0x8F8A 0xB8CB # HANGUL SYLLABLE RIEUL-OE-HIEUH
-0x8F8B 0xB8CD # HANGUL SYLLABLE RIEUL-YO-KIYEOK
-0x8F8C 0xB8CE # HANGUL SYLLABLE RIEUL-YO-SSANGKIYEOK
-0x8F8D 0xB8CF # HANGUL SYLLABLE RIEUL-YO-KIYEOKSIOS
-0x8F8E 0xB8D1 # HANGUL SYLLABLE RIEUL-YO-NIEUNCIEUC
-0x8F8F 0xB8D2 # HANGUL SYLLABLE RIEUL-YO-NIEUNHIEUH
-0x8F90 0xB8D3 # HANGUL SYLLABLE RIEUL-YO-TIKEUT
-0x8F91 0xB8D5 # HANGUL SYLLABLE RIEUL-YO-RIEULKIYEOK
-0x8F92 0xB8D6 # HANGUL SYLLABLE RIEUL-YO-RIEULMIEUM
-0x8F93 0xB8D7 # HANGUL SYLLABLE RIEUL-YO-RIEULPIEUP
-0x8F94 0xB8D8 # HANGUL SYLLABLE RIEUL-YO-RIEULSIOS
-0x8F95 0xB8D9 # HANGUL SYLLABLE RIEUL-YO-RIEULTHIEUTH
-0x8F96 0xB8DA # HANGUL SYLLABLE RIEUL-YO-RIEULPHIEUPH
-0x8F97 0xB8DB # HANGUL SYLLABLE RIEUL-YO-RIEULHIEUH
-0x8F98 0xB8DC # HANGUL SYLLABLE RIEUL-YO-MIEUM
-0x8F99 0xB8DE # HANGUL SYLLABLE RIEUL-YO-PIEUPSIOS
-0x8F9A 0xB8E0 # HANGUL SYLLABLE RIEUL-YO-SSANGSIOS
-0x8F9B 0xB8E2 # HANGUL SYLLABLE RIEUL-YO-CIEUC
-0x8F9C 0xB8E3 # HANGUL SYLLABLE RIEUL-YO-CHIEUCH
-0x8F9D 0xB8E4 # HANGUL SYLLABLE RIEUL-YO-KHIEUKH
-0x8F9E 0xB8E5 # HANGUL SYLLABLE RIEUL-YO-THIEUTH
-0x8F9F 0xB8E6 # HANGUL SYLLABLE RIEUL-YO-PHIEUPH
-0x8FA0 0xB8E7 # HANGUL SYLLABLE RIEUL-YO-HIEUH
-0x8FA1 0xB8EA # HANGUL SYLLABLE RIEUL-U-SSANGKIYEOK
-0x8FA2 0xB8EB # HANGUL SYLLABLE RIEUL-U-KIYEOKSIOS
-0x8FA3 0xB8ED # HANGUL SYLLABLE RIEUL-U-NIEUNCIEUC
-0x8FA4 0xB8EE # HANGUL SYLLABLE RIEUL-U-NIEUNHIEUH
-0x8FA5 0xB8EF # HANGUL SYLLABLE RIEUL-U-TIKEUT
-0x8FA6 0xB8F1 # HANGUL SYLLABLE RIEUL-U-RIEULKIYEOK
-0x8FA7 0xB8F2 # HANGUL SYLLABLE RIEUL-U-RIEULMIEUM
-0x8FA8 0xB8F3 # HANGUL SYLLABLE RIEUL-U-RIEULPIEUP
-0x8FA9 0xB8F4 # HANGUL SYLLABLE RIEUL-U-RIEULSIOS
-0x8FAA 0xB8F5 # HANGUL SYLLABLE RIEUL-U-RIEULTHIEUTH
-0x8FAB 0xB8F6 # HANGUL SYLLABLE RIEUL-U-RIEULPHIEUPH
-0x8FAC 0xB8F7 # HANGUL SYLLABLE RIEUL-U-RIEULHIEUH
-0x8FAD 0xB8FA # HANGUL SYLLABLE RIEUL-U-PIEUPSIOS
-0x8FAE 0xB8FC # HANGUL SYLLABLE RIEUL-U-SSANGSIOS
-0x8FAF 0xB8FE # HANGUL SYLLABLE RIEUL-U-CIEUC
-0x8FB0 0xB8FF # HANGUL SYLLABLE RIEUL-U-CHIEUCH
-0x8FB1 0xB900 # HANGUL SYLLABLE RIEUL-U-KHIEUKH
-0x8FB2 0xB901 # HANGUL SYLLABLE RIEUL-U-THIEUTH
-0x8FB3 0xB902 # HANGUL SYLLABLE RIEUL-U-PHIEUPH
-0x8FB4 0xB903 # HANGUL SYLLABLE RIEUL-U-HIEUH
-0x8FB5 0xB905 # HANGUL SYLLABLE RIEUL-WEO-KIYEOK
-0x8FB6 0xB906 # HANGUL SYLLABLE RIEUL-WEO-SSANGKIYEOK
-0x8FB7 0xB907 # HANGUL SYLLABLE RIEUL-WEO-KIYEOKSIOS
-0x8FB8 0xB908 # HANGUL SYLLABLE RIEUL-WEO-NIEUN
-0x8FB9 0xB909 # HANGUL SYLLABLE RIEUL-WEO-NIEUNCIEUC
-0x8FBA 0xB90A # HANGUL SYLLABLE RIEUL-WEO-NIEUNHIEUH
-0x8FBB 0xB90B # HANGUL SYLLABLE RIEUL-WEO-TIKEUT
-0x8FBC 0xB90C # HANGUL SYLLABLE RIEUL-WEO-RIEUL
-0x8FBD 0xB90D # HANGUL SYLLABLE RIEUL-WEO-RIEULKIYEOK
-0x8FBE 0xB90E # HANGUL SYLLABLE RIEUL-WEO-RIEULMIEUM
-0x8FBF 0xB90F # HANGUL SYLLABLE RIEUL-WEO-RIEULPIEUP
-0x8FC0 0xB910 # HANGUL SYLLABLE RIEUL-WEO-RIEULSIOS
-0x8FC1 0xB911 # HANGUL SYLLABLE RIEUL-WEO-RIEULTHIEUTH
-0x8FC2 0xB912 # HANGUL SYLLABLE RIEUL-WEO-RIEULPHIEUPH
-0x8FC3 0xB913 # HANGUL SYLLABLE RIEUL-WEO-RIEULHIEUH
-0x8FC4 0xB914 # HANGUL SYLLABLE RIEUL-WEO-MIEUM
-0x8FC5 0xB915 # HANGUL SYLLABLE RIEUL-WEO-PIEUP
-0x8FC6 0xB916 # HANGUL SYLLABLE RIEUL-WEO-PIEUPSIOS
-0x8FC7 0xB917 # HANGUL SYLLABLE RIEUL-WEO-SIOS
-0x8FC8 0xB919 # HANGUL SYLLABLE RIEUL-WEO-IEUNG
-0x8FC9 0xB91A # HANGUL SYLLABLE RIEUL-WEO-CIEUC
-0x8FCA 0xB91B # HANGUL SYLLABLE RIEUL-WEO-CHIEUCH
-0x8FCB 0xB91C # HANGUL SYLLABLE RIEUL-WEO-KHIEUKH
-0x8FCC 0xB91D # HANGUL SYLLABLE RIEUL-WEO-THIEUTH
-0x8FCD 0xB91E # HANGUL SYLLABLE RIEUL-WEO-PHIEUPH
-0x8FCE 0xB91F # HANGUL SYLLABLE RIEUL-WEO-HIEUH
-0x8FCF 0xB921 # HANGUL SYLLABLE RIEUL-WE-KIYEOK
-0x8FD0 0xB922 # HANGUL SYLLABLE RIEUL-WE-SSANGKIYEOK
-0x8FD1 0xB923 # HANGUL SYLLABLE RIEUL-WE-KIYEOKSIOS
-0x8FD2 0xB924 # HANGUL SYLLABLE RIEUL-WE-NIEUN
-0x8FD3 0xB925 # HANGUL SYLLABLE RIEUL-WE-NIEUNCIEUC
-0x8FD4 0xB926 # HANGUL SYLLABLE RIEUL-WE-NIEUNHIEUH
-0x8FD5 0xB927 # HANGUL SYLLABLE RIEUL-WE-TIKEUT
-0x8FD6 0xB928 # HANGUL SYLLABLE RIEUL-WE-RIEUL
-0x8FD7 0xB929 # HANGUL SYLLABLE RIEUL-WE-RIEULKIYEOK
-0x8FD8 0xB92A # HANGUL SYLLABLE RIEUL-WE-RIEULMIEUM
-0x8FD9 0xB92B # HANGUL SYLLABLE RIEUL-WE-RIEULPIEUP
-0x8FDA 0xB92C # HANGUL SYLLABLE RIEUL-WE-RIEULSIOS
-0x8FDB 0xB92D # HANGUL SYLLABLE RIEUL-WE-RIEULTHIEUTH
-0x8FDC 0xB92E # HANGUL SYLLABLE RIEUL-WE-RIEULPHIEUPH
-0x8FDD 0xB92F # HANGUL SYLLABLE RIEUL-WE-RIEULHIEUH
-0x8FDE 0xB930 # HANGUL SYLLABLE RIEUL-WE-MIEUM
-0x8FDF 0xB931 # HANGUL SYLLABLE RIEUL-WE-PIEUP
-0x8FE0 0xB932 # HANGUL SYLLABLE RIEUL-WE-PIEUPSIOS
-0x8FE1 0xB933 # HANGUL SYLLABLE RIEUL-WE-SIOS
-0x8FE2 0xB934 # HANGUL SYLLABLE RIEUL-WE-SSANGSIOS
-0x8FE3 0xB935 # HANGUL SYLLABLE RIEUL-WE-IEUNG
-0x8FE4 0xB936 # HANGUL SYLLABLE RIEUL-WE-CIEUC
-0x8FE5 0xB937 # HANGUL SYLLABLE RIEUL-WE-CHIEUCH
-0x8FE6 0xB938 # HANGUL SYLLABLE RIEUL-WE-KHIEUKH
-0x8FE7 0xB939 # HANGUL SYLLABLE RIEUL-WE-THIEUTH
-0x8FE8 0xB93A # HANGUL SYLLABLE RIEUL-WE-PHIEUPH
-0x8FE9 0xB93B # HANGUL SYLLABLE RIEUL-WE-HIEUH
-0x8FEA 0xB93E # HANGUL SYLLABLE RIEUL-WI-SSANGKIYEOK
-0x8FEB 0xB93F # HANGUL SYLLABLE RIEUL-WI-KIYEOKSIOS
-0x8FEC 0xB941 # HANGUL SYLLABLE RIEUL-WI-NIEUNCIEUC
-0x8FED 0xB942 # HANGUL SYLLABLE RIEUL-WI-NIEUNHIEUH
-0x8FEE 0xB943 # HANGUL SYLLABLE RIEUL-WI-TIKEUT
-0x8FEF 0xB945 # HANGUL SYLLABLE RIEUL-WI-RIEULKIYEOK
-0x8FF0 0xB946 # HANGUL SYLLABLE RIEUL-WI-RIEULMIEUM
-0x8FF1 0xB947 # HANGUL SYLLABLE RIEUL-WI-RIEULPIEUP
-0x8FF2 0xB948 # HANGUL SYLLABLE RIEUL-WI-RIEULSIOS
-0x8FF3 0xB949 # HANGUL SYLLABLE RIEUL-WI-RIEULTHIEUTH
-0x8FF4 0xB94A # HANGUL SYLLABLE RIEUL-WI-RIEULPHIEUPH
-0x8FF5 0xB94B # HANGUL SYLLABLE RIEUL-WI-RIEULHIEUH
-0x8FF6 0xB94D # HANGUL SYLLABLE RIEUL-WI-PIEUP
-0x8FF7 0xB94E # HANGUL SYLLABLE RIEUL-WI-PIEUPSIOS
-0x8FF8 0xB950 # HANGUL SYLLABLE RIEUL-WI-SSANGSIOS
-0x8FF9 0xB952 # HANGUL SYLLABLE RIEUL-WI-CIEUC
-0x8FFA 0xB953 # HANGUL SYLLABLE RIEUL-WI-CHIEUCH
-0x8FFB 0xB954 # HANGUL SYLLABLE RIEUL-WI-KHIEUKH
-0x8FFC 0xB955 # HANGUL SYLLABLE RIEUL-WI-THIEUTH
-0x8FFD 0xB956 # HANGUL SYLLABLE RIEUL-WI-PHIEUPH
-0x8FFE 0xB957 # HANGUL SYLLABLE RIEUL-WI-HIEUH
-0x9041 0xB95A # HANGUL SYLLABLE RIEUL-YU-SSANGKIYEOK
-0x9042 0xB95B # HANGUL SYLLABLE RIEUL-YU-KIYEOKSIOS
-0x9043 0xB95D # HANGUL SYLLABLE RIEUL-YU-NIEUNCIEUC
-0x9044 0xB95E # HANGUL SYLLABLE RIEUL-YU-NIEUNHIEUH
-0x9045 0xB95F # HANGUL SYLLABLE RIEUL-YU-TIKEUT
-0x9046 0xB961 # HANGUL SYLLABLE RIEUL-YU-RIEULKIYEOK
-0x9047 0xB962 # HANGUL SYLLABLE RIEUL-YU-RIEULMIEUM
-0x9048 0xB963 # HANGUL SYLLABLE RIEUL-YU-RIEULPIEUP
-0x9049 0xB964 # HANGUL SYLLABLE RIEUL-YU-RIEULSIOS
-0x904A 0xB965 # HANGUL SYLLABLE RIEUL-YU-RIEULTHIEUTH
-0x904B 0xB966 # HANGUL SYLLABLE RIEUL-YU-RIEULPHIEUPH
-0x904C 0xB967 # HANGUL SYLLABLE RIEUL-YU-RIEULHIEUH
-0x904D 0xB96A # HANGUL SYLLABLE RIEUL-YU-PIEUPSIOS
-0x904E 0xB96C # HANGUL SYLLABLE RIEUL-YU-SSANGSIOS
-0x904F 0xB96E # HANGUL SYLLABLE RIEUL-YU-CIEUC
-0x9050 0xB96F # HANGUL SYLLABLE RIEUL-YU-CHIEUCH
-0x9051 0xB970 # HANGUL SYLLABLE RIEUL-YU-KHIEUKH
-0x9052 0xB971 # HANGUL SYLLABLE RIEUL-YU-THIEUTH
-0x9053 0xB972 # HANGUL SYLLABLE RIEUL-YU-PHIEUPH
-0x9054 0xB973 # HANGUL SYLLABLE RIEUL-YU-HIEUH
-0x9055 0xB976 # HANGUL SYLLABLE RIEUL-EU-SSANGKIYEOK
-0x9056 0xB977 # HANGUL SYLLABLE RIEUL-EU-KIYEOKSIOS
-0x9057 0xB979 # HANGUL SYLLABLE RIEUL-EU-NIEUNCIEUC
-0x9058 0xB97A # HANGUL SYLLABLE RIEUL-EU-NIEUNHIEUH
-0x9059 0xB97B # HANGUL SYLLABLE RIEUL-EU-TIKEUT
-0x905A 0xB97D # HANGUL SYLLABLE RIEUL-EU-RIEULKIYEOK
-0x9061 0xB97E # HANGUL SYLLABLE RIEUL-EU-RIEULMIEUM
-0x9062 0xB97F # HANGUL SYLLABLE RIEUL-EU-RIEULPIEUP
-0x9063 0xB980 # HANGUL SYLLABLE RIEUL-EU-RIEULSIOS
-0x9064 0xB981 # HANGUL SYLLABLE RIEUL-EU-RIEULTHIEUTH
-0x9065 0xB982 # HANGUL SYLLABLE RIEUL-EU-RIEULPHIEUPH
-0x9066 0xB983 # HANGUL SYLLABLE RIEUL-EU-RIEULHIEUH
-0x9067 0xB986 # HANGUL SYLLABLE RIEUL-EU-PIEUPSIOS
-0x9068 0xB988 # HANGUL SYLLABLE RIEUL-EU-SSANGSIOS
-0x9069 0xB98B # HANGUL SYLLABLE RIEUL-EU-CHIEUCH
-0x906A 0xB98C # HANGUL SYLLABLE RIEUL-EU-KHIEUKH
-0x906B 0xB98F # HANGUL SYLLABLE RIEUL-EU-HIEUH
-0x906C 0xB990 # HANGUL SYLLABLE RIEUL-YI
-0x906D 0xB991 # HANGUL SYLLABLE RIEUL-YI-KIYEOK
-0x906E 0xB992 # HANGUL SYLLABLE RIEUL-YI-SSANGKIYEOK
-0x906F 0xB993 # HANGUL SYLLABLE RIEUL-YI-KIYEOKSIOS
-0x9070 0xB994 # HANGUL SYLLABLE RIEUL-YI-NIEUN
-0x9071 0xB995 # HANGUL SYLLABLE RIEUL-YI-NIEUNCIEUC
-0x9072 0xB996 # HANGUL SYLLABLE RIEUL-YI-NIEUNHIEUH
-0x9073 0xB997 # HANGUL SYLLABLE RIEUL-YI-TIKEUT
-0x9074 0xB998 # HANGUL SYLLABLE RIEUL-YI-RIEUL
-0x9075 0xB999 # HANGUL SYLLABLE RIEUL-YI-RIEULKIYEOK
-0x9076 0xB99A # HANGUL SYLLABLE RIEUL-YI-RIEULMIEUM
-0x9077 0xB99B # HANGUL SYLLABLE RIEUL-YI-RIEULPIEUP
-0x9078 0xB99C # HANGUL SYLLABLE RIEUL-YI-RIEULSIOS
-0x9079 0xB99D # HANGUL SYLLABLE RIEUL-YI-RIEULTHIEUTH
-0x907A 0xB99E # HANGUL SYLLABLE RIEUL-YI-RIEULPHIEUPH
-0x9081 0xB99F # HANGUL SYLLABLE RIEUL-YI-RIEULHIEUH
-0x9082 0xB9A0 # HANGUL SYLLABLE RIEUL-YI-MIEUM
-0x9083 0xB9A1 # HANGUL SYLLABLE RIEUL-YI-PIEUP
-0x9084 0xB9A2 # HANGUL SYLLABLE RIEUL-YI-PIEUPSIOS
-0x9085 0xB9A3 # HANGUL SYLLABLE RIEUL-YI-SIOS
-0x9086 0xB9A4 # HANGUL SYLLABLE RIEUL-YI-SSANGSIOS
-0x9087 0xB9A5 # HANGUL SYLLABLE RIEUL-YI-IEUNG
-0x9088 0xB9A6 # HANGUL SYLLABLE RIEUL-YI-CIEUC
-0x9089 0xB9A7 # HANGUL SYLLABLE RIEUL-YI-CHIEUCH
-0x908A 0xB9A8 # HANGUL SYLLABLE RIEUL-YI-KHIEUKH
-0x908B 0xB9A9 # HANGUL SYLLABLE RIEUL-YI-THIEUTH
-0x908C 0xB9AA # HANGUL SYLLABLE RIEUL-YI-PHIEUPH
-0x908D 0xB9AB # HANGUL SYLLABLE RIEUL-YI-HIEUH
-0x908E 0xB9AE # HANGUL SYLLABLE RIEUL-I-SSANGKIYEOK
-0x908F 0xB9AF # HANGUL SYLLABLE RIEUL-I-KIYEOKSIOS
-0x9090 0xB9B1 # HANGUL SYLLABLE RIEUL-I-NIEUNCIEUC
-0x9091 0xB9B2 # HANGUL SYLLABLE RIEUL-I-NIEUNHIEUH
-0x9092 0xB9B3 # HANGUL SYLLABLE RIEUL-I-TIKEUT
-0x9093 0xB9B5 # HANGUL SYLLABLE RIEUL-I-RIEULKIYEOK
-0x9094 0xB9B6 # HANGUL SYLLABLE RIEUL-I-RIEULMIEUM
-0x9095 0xB9B7 # HANGUL SYLLABLE RIEUL-I-RIEULPIEUP
-0x9096 0xB9B8 # HANGUL SYLLABLE RIEUL-I-RIEULSIOS
-0x9097 0xB9B9 # HANGUL SYLLABLE RIEUL-I-RIEULTHIEUTH
-0x9098 0xB9BA # HANGUL SYLLABLE RIEUL-I-RIEULPHIEUPH
-0x9099 0xB9BB # HANGUL SYLLABLE RIEUL-I-RIEULHIEUH
-0x909A 0xB9BE # HANGUL SYLLABLE RIEUL-I-PIEUPSIOS
-0x909B 0xB9C0 # HANGUL SYLLABLE RIEUL-I-SSANGSIOS
-0x909C 0xB9C2 # HANGUL SYLLABLE RIEUL-I-CIEUC
-0x909D 0xB9C3 # HANGUL SYLLABLE RIEUL-I-CHIEUCH
-0x909E 0xB9C4 # HANGUL SYLLABLE RIEUL-I-KHIEUKH
-0x909F 0xB9C5 # HANGUL SYLLABLE RIEUL-I-THIEUTH
-0x90A0 0xB9C6 # HANGUL SYLLABLE RIEUL-I-PHIEUPH
-0x90A1 0xB9C7 # HANGUL SYLLABLE RIEUL-I-HIEUH
-0x90A2 0xB9CA # HANGUL SYLLABLE MIEUM-A-SSANGKIYEOK
-0x90A3 0xB9CB # HANGUL SYLLABLE MIEUM-A-KIYEOKSIOS
-0x90A4 0xB9CD # HANGUL SYLLABLE MIEUM-A-NIEUNCIEUC
-0x90A5 0xB9D3 # HANGUL SYLLABLE MIEUM-A-RIEULPIEUP
-0x90A6 0xB9D4 # HANGUL SYLLABLE MIEUM-A-RIEULSIOS
-0x90A7 0xB9D5 # HANGUL SYLLABLE MIEUM-A-RIEULTHIEUTH
-0x90A8 0xB9D6 # HANGUL SYLLABLE MIEUM-A-RIEULPHIEUPH
-0x90A9 0xB9D7 # HANGUL SYLLABLE MIEUM-A-RIEULHIEUH
-0x90AA 0xB9DA # HANGUL SYLLABLE MIEUM-A-PIEUPSIOS
-0x90AB 0xB9DC # HANGUL SYLLABLE MIEUM-A-SSANGSIOS
-0x90AC 0xB9DF # HANGUL SYLLABLE MIEUM-A-CHIEUCH
-0x90AD 0xB9E0 # HANGUL SYLLABLE MIEUM-A-KHIEUKH
-0x90AE 0xB9E2 # HANGUL SYLLABLE MIEUM-A-PHIEUPH
-0x90AF 0xB9E6 # HANGUL SYLLABLE MIEUM-AE-SSANGKIYEOK
-0x90B0 0xB9E7 # HANGUL SYLLABLE MIEUM-AE-KIYEOKSIOS
-0x90B1 0xB9E9 # HANGUL SYLLABLE MIEUM-AE-NIEUNCIEUC
-0x90B2 0xB9EA # HANGUL SYLLABLE MIEUM-AE-NIEUNHIEUH
-0x90B3 0xB9EB # HANGUL SYLLABLE MIEUM-AE-TIKEUT
-0x90B4 0xB9ED # HANGUL SYLLABLE MIEUM-AE-RIEULKIYEOK
-0x90B5 0xB9EE # HANGUL SYLLABLE MIEUM-AE-RIEULMIEUM
-0x90B6 0xB9EF # HANGUL SYLLABLE MIEUM-AE-RIEULPIEUP
-0x90B7 0xB9F0 # HANGUL SYLLABLE MIEUM-AE-RIEULSIOS
-0x90B8 0xB9F1 # HANGUL SYLLABLE MIEUM-AE-RIEULTHIEUTH
-0x90B9 0xB9F2 # HANGUL SYLLABLE MIEUM-AE-RIEULPHIEUPH
-0x90BA 0xB9F3 # HANGUL SYLLABLE MIEUM-AE-RIEULHIEUH
-0x90BB 0xB9F6 # HANGUL SYLLABLE MIEUM-AE-PIEUPSIOS
-0x90BC 0xB9FB # HANGUL SYLLABLE MIEUM-AE-CHIEUCH
-0x90BD 0xB9FC # HANGUL SYLLABLE MIEUM-AE-KHIEUKH
-0x90BE 0xB9FD # HANGUL SYLLABLE MIEUM-AE-THIEUTH
-0x90BF 0xB9FE # HANGUL SYLLABLE MIEUM-AE-PHIEUPH
-0x90C0 0xB9FF # HANGUL SYLLABLE MIEUM-AE-HIEUH
-0x90C1 0xBA02 # HANGUL SYLLABLE MIEUM-YA-SSANGKIYEOK
-0x90C2 0xBA03 # HANGUL SYLLABLE MIEUM-YA-KIYEOKSIOS
-0x90C3 0xBA04 # HANGUL SYLLABLE MIEUM-YA-NIEUN
-0x90C4 0xBA05 # HANGUL SYLLABLE MIEUM-YA-NIEUNCIEUC
-0x90C5 0xBA06 # HANGUL SYLLABLE MIEUM-YA-NIEUNHIEUH
-0x90C6 0xBA07 # HANGUL SYLLABLE MIEUM-YA-TIKEUT
-0x90C7 0xBA09 # HANGUL SYLLABLE MIEUM-YA-RIEULKIYEOK
-0x90C8 0xBA0A # HANGUL SYLLABLE MIEUM-YA-RIEULMIEUM
-0x90C9 0xBA0B # HANGUL SYLLABLE MIEUM-YA-RIEULPIEUP
-0x90CA 0xBA0C # HANGUL SYLLABLE MIEUM-YA-RIEULSIOS
-0x90CB 0xBA0D # HANGUL SYLLABLE MIEUM-YA-RIEULTHIEUTH
-0x90CC 0xBA0E # HANGUL SYLLABLE MIEUM-YA-RIEULPHIEUPH
-0x90CD 0xBA0F # HANGUL SYLLABLE MIEUM-YA-RIEULHIEUH
-0x90CE 0xBA10 # HANGUL SYLLABLE MIEUM-YA-MIEUM
-0x90CF 0xBA11 # HANGUL SYLLABLE MIEUM-YA-PIEUP
-0x90D0 0xBA12 # HANGUL SYLLABLE MIEUM-YA-PIEUPSIOS
-0x90D1 0xBA13 # HANGUL SYLLABLE MIEUM-YA-SIOS
-0x90D2 0xBA14 # HANGUL SYLLABLE MIEUM-YA-SSANGSIOS
-0x90D3 0xBA16 # HANGUL SYLLABLE MIEUM-YA-CIEUC
-0x90D4 0xBA17 # HANGUL SYLLABLE MIEUM-YA-CHIEUCH
-0x90D5 0xBA18 # HANGUL SYLLABLE MIEUM-YA-KHIEUKH
-0x90D6 0xBA19 # HANGUL SYLLABLE MIEUM-YA-THIEUTH
-0x90D7 0xBA1A # HANGUL SYLLABLE MIEUM-YA-PHIEUPH
-0x90D8 0xBA1B # HANGUL SYLLABLE MIEUM-YA-HIEUH
-0x90D9 0xBA1C # HANGUL SYLLABLE MIEUM-YAE
-0x90DA 0xBA1D # HANGUL SYLLABLE MIEUM-YAE-KIYEOK
-0x90DB 0xBA1E # HANGUL SYLLABLE MIEUM-YAE-SSANGKIYEOK
-0x90DC 0xBA1F # HANGUL SYLLABLE MIEUM-YAE-KIYEOKSIOS
-0x90DD 0xBA20 # HANGUL SYLLABLE MIEUM-YAE-NIEUN
-0x90DE 0xBA21 # HANGUL SYLLABLE MIEUM-YAE-NIEUNCIEUC
-0x90DF 0xBA22 # HANGUL SYLLABLE MIEUM-YAE-NIEUNHIEUH
-0x90E0 0xBA23 # HANGUL SYLLABLE MIEUM-YAE-TIKEUT
-0x90E1 0xBA24 # HANGUL SYLLABLE MIEUM-YAE-RIEUL
-0x90E2 0xBA25 # HANGUL SYLLABLE MIEUM-YAE-RIEULKIYEOK
-0x90E3 0xBA26 # HANGUL SYLLABLE MIEUM-YAE-RIEULMIEUM
-0x90E4 0xBA27 # HANGUL SYLLABLE MIEUM-YAE-RIEULPIEUP
-0x90E5 0xBA28 # HANGUL SYLLABLE MIEUM-YAE-RIEULSIOS
-0x90E6 0xBA29 # HANGUL SYLLABLE MIEUM-YAE-RIEULTHIEUTH
-0x90E7 0xBA2A # HANGUL SYLLABLE MIEUM-YAE-RIEULPHIEUPH
-0x90E8 0xBA2B # HANGUL SYLLABLE MIEUM-YAE-RIEULHIEUH
-0x90E9 0xBA2C # HANGUL SYLLABLE MIEUM-YAE-MIEUM
-0x90EA 0xBA2D # HANGUL SYLLABLE MIEUM-YAE-PIEUP
-0x90EB 0xBA2E # HANGUL SYLLABLE MIEUM-YAE-PIEUPSIOS
-0x90EC 0xBA2F # HANGUL SYLLABLE MIEUM-YAE-SIOS
-0x90ED 0xBA30 # HANGUL SYLLABLE MIEUM-YAE-SSANGSIOS
-0x90EE 0xBA31 # HANGUL SYLLABLE MIEUM-YAE-IEUNG
-0x90EF 0xBA32 # HANGUL SYLLABLE MIEUM-YAE-CIEUC
-0x90F0 0xBA33 # HANGUL SYLLABLE MIEUM-YAE-CHIEUCH
-0x90F1 0xBA34 # HANGUL SYLLABLE MIEUM-YAE-KHIEUKH
-0x90F2 0xBA35 # HANGUL SYLLABLE MIEUM-YAE-THIEUTH
-0x90F3 0xBA36 # HANGUL SYLLABLE MIEUM-YAE-PHIEUPH
-0x90F4 0xBA37 # HANGUL SYLLABLE MIEUM-YAE-HIEUH
-0x90F5 0xBA3A # HANGUL SYLLABLE MIEUM-EO-SSANGKIYEOK
-0x90F6 0xBA3B # HANGUL SYLLABLE MIEUM-EO-KIYEOKSIOS
-0x90F7 0xBA3D # HANGUL SYLLABLE MIEUM-EO-NIEUNCIEUC
-0x90F8 0xBA3E # HANGUL SYLLABLE MIEUM-EO-NIEUNHIEUH
-0x90F9 0xBA3F # HANGUL SYLLABLE MIEUM-EO-TIKEUT
-0x90FA 0xBA41 # HANGUL SYLLABLE MIEUM-EO-RIEULKIYEOK
-0x90FB 0xBA43 # HANGUL SYLLABLE MIEUM-EO-RIEULPIEUP
-0x90FC 0xBA44 # HANGUL SYLLABLE MIEUM-EO-RIEULSIOS
-0x90FD 0xBA45 # HANGUL SYLLABLE MIEUM-EO-RIEULTHIEUTH
-0x90FE 0xBA46 # HANGUL SYLLABLE MIEUM-EO-RIEULPHIEUPH
-0x9141 0xBA47 # HANGUL SYLLABLE MIEUM-EO-RIEULHIEUH
-0x9142 0xBA4A # HANGUL SYLLABLE MIEUM-EO-PIEUPSIOS
-0x9143 0xBA4C # HANGUL SYLLABLE MIEUM-EO-SSANGSIOS
-0x9144 0xBA4F # HANGUL SYLLABLE MIEUM-EO-CHIEUCH
-0x9145 0xBA50 # HANGUL SYLLABLE MIEUM-EO-KHIEUKH
-0x9146 0xBA51 # HANGUL SYLLABLE MIEUM-EO-THIEUTH
-0x9147 0xBA52 # HANGUL SYLLABLE MIEUM-EO-PHIEUPH
-0x9148 0xBA56 # HANGUL SYLLABLE MIEUM-E-SSANGKIYEOK
-0x9149 0xBA57 # HANGUL SYLLABLE MIEUM-E-KIYEOKSIOS
-0x914A 0xBA59 # HANGUL SYLLABLE MIEUM-E-NIEUNCIEUC
-0x914B 0xBA5A # HANGUL SYLLABLE MIEUM-E-NIEUNHIEUH
-0x914C 0xBA5B # HANGUL SYLLABLE MIEUM-E-TIKEUT
-0x914D 0xBA5D # HANGUL SYLLABLE MIEUM-E-RIEULKIYEOK
-0x914E 0xBA5E # HANGUL SYLLABLE MIEUM-E-RIEULMIEUM
-0x914F 0xBA5F # HANGUL SYLLABLE MIEUM-E-RIEULPIEUP
-0x9150 0xBA60 # HANGUL SYLLABLE MIEUM-E-RIEULSIOS
-0x9151 0xBA61 # HANGUL SYLLABLE MIEUM-E-RIEULTHIEUTH
-0x9152 0xBA62 # HANGUL SYLLABLE MIEUM-E-RIEULPHIEUPH
-0x9153 0xBA63 # HANGUL SYLLABLE MIEUM-E-RIEULHIEUH
-0x9154 0xBA66 # HANGUL SYLLABLE MIEUM-E-PIEUPSIOS
-0x9155 0xBA6A # HANGUL SYLLABLE MIEUM-E-CIEUC
-0x9156 0xBA6B # HANGUL SYLLABLE MIEUM-E-CHIEUCH
-0x9157 0xBA6C # HANGUL SYLLABLE MIEUM-E-KHIEUKH
-0x9158 0xBA6D # HANGUL SYLLABLE MIEUM-E-THIEUTH
-0x9159 0xBA6E # HANGUL SYLLABLE MIEUM-E-PHIEUPH
-0x915A 0xBA6F # HANGUL SYLLABLE MIEUM-E-HIEUH
-0x9161 0xBA72 # HANGUL SYLLABLE MIEUM-YEO-SSANGKIYEOK
-0x9162 0xBA73 # HANGUL SYLLABLE MIEUM-YEO-KIYEOKSIOS
-0x9163 0xBA75 # HANGUL SYLLABLE MIEUM-YEO-NIEUNCIEUC
-0x9164 0xBA76 # HANGUL SYLLABLE MIEUM-YEO-NIEUNHIEUH
-0x9165 0xBA77 # HANGUL SYLLABLE MIEUM-YEO-TIKEUT
-0x9166 0xBA79 # HANGUL SYLLABLE MIEUM-YEO-RIEULKIYEOK
-0x9167 0xBA7A # HANGUL SYLLABLE MIEUM-YEO-RIEULMIEUM
-0x9168 0xBA7B # HANGUL SYLLABLE MIEUM-YEO-RIEULPIEUP
-0x9169 0xBA7C # HANGUL SYLLABLE MIEUM-YEO-RIEULSIOS
-0x916A 0xBA7D # HANGUL SYLLABLE MIEUM-YEO-RIEULTHIEUTH
-0x916B 0xBA7E # HANGUL SYLLABLE MIEUM-YEO-RIEULPHIEUPH
-0x916C 0xBA7F # HANGUL SYLLABLE MIEUM-YEO-RIEULHIEUH
-0x916D 0xBA80 # HANGUL SYLLABLE MIEUM-YEO-MIEUM
-0x916E 0xBA81 # HANGUL SYLLABLE MIEUM-YEO-PIEUP
-0x916F 0xBA82 # HANGUL SYLLABLE MIEUM-YEO-PIEUPSIOS
-0x9170 0xBA86 # HANGUL SYLLABLE MIEUM-YEO-CIEUC
-0x9171 0xBA88 # HANGUL SYLLABLE MIEUM-YEO-KHIEUKH
-0x9172 0xBA89 # HANGUL SYLLABLE MIEUM-YEO-THIEUTH
-0x9173 0xBA8A # HANGUL SYLLABLE MIEUM-YEO-PHIEUPH
-0x9174 0xBA8B # HANGUL SYLLABLE MIEUM-YEO-HIEUH
-0x9175 0xBA8D # HANGUL SYLLABLE MIEUM-YE-KIYEOK
-0x9176 0xBA8E # HANGUL SYLLABLE MIEUM-YE-SSANGKIYEOK
-0x9177 0xBA8F # HANGUL SYLLABLE MIEUM-YE-KIYEOKSIOS
-0x9178 0xBA90 # HANGUL SYLLABLE MIEUM-YE-NIEUN
-0x9179 0xBA91 # HANGUL SYLLABLE MIEUM-YE-NIEUNCIEUC
-0x917A 0xBA92 # HANGUL SYLLABLE MIEUM-YE-NIEUNHIEUH
-0x9181 0xBA93 # HANGUL SYLLABLE MIEUM-YE-TIKEUT
-0x9182 0xBA94 # HANGUL SYLLABLE MIEUM-YE-RIEUL
-0x9183 0xBA95 # HANGUL SYLLABLE MIEUM-YE-RIEULKIYEOK
-0x9184 0xBA96 # HANGUL SYLLABLE MIEUM-YE-RIEULMIEUM
-0x9185 0xBA97 # HANGUL SYLLABLE MIEUM-YE-RIEULPIEUP
-0x9186 0xBA98 # HANGUL SYLLABLE MIEUM-YE-RIEULSIOS
-0x9187 0xBA99 # HANGUL SYLLABLE MIEUM-YE-RIEULTHIEUTH
-0x9188 0xBA9A # HANGUL SYLLABLE MIEUM-YE-RIEULPHIEUPH
-0x9189 0xBA9B # HANGUL SYLLABLE MIEUM-YE-RIEULHIEUH
-0x918A 0xBA9C # HANGUL SYLLABLE MIEUM-YE-MIEUM
-0x918B 0xBA9D # HANGUL SYLLABLE MIEUM-YE-PIEUP
-0x918C 0xBA9E # HANGUL SYLLABLE MIEUM-YE-PIEUPSIOS
-0x918D 0xBA9F # HANGUL SYLLABLE MIEUM-YE-SIOS
-0x918E 0xBAA0 # HANGUL SYLLABLE MIEUM-YE-SSANGSIOS
-0x918F 0xBAA1 # HANGUL SYLLABLE MIEUM-YE-IEUNG
-0x9190 0xBAA2 # HANGUL SYLLABLE MIEUM-YE-CIEUC
-0x9191 0xBAA3 # HANGUL SYLLABLE MIEUM-YE-CHIEUCH
-0x9192 0xBAA4 # HANGUL SYLLABLE MIEUM-YE-KHIEUKH
-0x9193 0xBAA5 # HANGUL SYLLABLE MIEUM-YE-THIEUTH
-0x9194 0xBAA6 # HANGUL SYLLABLE MIEUM-YE-PHIEUPH
-0x9195 0xBAA7 # HANGUL SYLLABLE MIEUM-YE-HIEUH
-0x9196 0xBAAA # HANGUL SYLLABLE MIEUM-O-SSANGKIYEOK
-0x9197 0xBAAD # HANGUL SYLLABLE MIEUM-O-NIEUNCIEUC
-0x9198 0xBAAE # HANGUL SYLLABLE MIEUM-O-NIEUNHIEUH
-0x9199 0xBAAF # HANGUL SYLLABLE MIEUM-O-TIKEUT
-0x919A 0xBAB1 # HANGUL SYLLABLE MIEUM-O-RIEULKIYEOK
-0x919B 0xBAB3 # HANGUL SYLLABLE MIEUM-O-RIEULPIEUP
-0x919C 0xBAB4 # HANGUL SYLLABLE MIEUM-O-RIEULSIOS
-0x919D 0xBAB5 # HANGUL SYLLABLE MIEUM-O-RIEULTHIEUTH
-0x919E 0xBAB6 # HANGUL SYLLABLE MIEUM-O-RIEULPHIEUPH
-0x919F 0xBAB7 # HANGUL SYLLABLE MIEUM-O-RIEULHIEUH
-0x91A0 0xBABA # HANGUL SYLLABLE MIEUM-O-PIEUPSIOS
-0x91A1 0xBABC # HANGUL SYLLABLE MIEUM-O-SSANGSIOS
-0x91A2 0xBABE # HANGUL SYLLABLE MIEUM-O-CIEUC
-0x91A3 0xBABF # HANGUL SYLLABLE MIEUM-O-CHIEUCH
-0x91A4 0xBAC0 # HANGUL SYLLABLE MIEUM-O-KHIEUKH
-0x91A5 0xBAC1 # HANGUL SYLLABLE MIEUM-O-THIEUTH
-0x91A6 0xBAC2 # HANGUL SYLLABLE MIEUM-O-PHIEUPH
-0x91A7 0xBAC3 # HANGUL SYLLABLE MIEUM-O-HIEUH
-0x91A8 0xBAC5 # HANGUL SYLLABLE MIEUM-WA-KIYEOK
-0x91A9 0xBAC6 # HANGUL SYLLABLE MIEUM-WA-SSANGKIYEOK
-0x91AA 0xBAC7 # HANGUL SYLLABLE MIEUM-WA-KIYEOKSIOS
-0x91AB 0xBAC9 # HANGUL SYLLABLE MIEUM-WA-NIEUNCIEUC
-0x91AC 0xBACA # HANGUL SYLLABLE MIEUM-WA-NIEUNHIEUH
-0x91AD 0xBACB # HANGUL SYLLABLE MIEUM-WA-TIKEUT
-0x91AE 0xBACC # HANGUL SYLLABLE MIEUM-WA-RIEUL
-0x91AF 0xBACD # HANGUL SYLLABLE MIEUM-WA-RIEULKIYEOK
-0x91B0 0xBACE # HANGUL SYLLABLE MIEUM-WA-RIEULMIEUM
-0x91B1 0xBACF # HANGUL SYLLABLE MIEUM-WA-RIEULPIEUP
-0x91B2 0xBAD0 # HANGUL SYLLABLE MIEUM-WA-RIEULSIOS
-0x91B3 0xBAD1 # HANGUL SYLLABLE MIEUM-WA-RIEULTHIEUTH
-0x91B4 0xBAD2 # HANGUL SYLLABLE MIEUM-WA-RIEULPHIEUPH
-0x91B5 0xBAD3 # HANGUL SYLLABLE MIEUM-WA-RIEULHIEUH
-0x91B6 0xBAD4 # HANGUL SYLLABLE MIEUM-WA-MIEUM
-0x91B7 0xBAD5 # HANGUL SYLLABLE MIEUM-WA-PIEUP
-0x91B8 0xBAD6 # HANGUL SYLLABLE MIEUM-WA-PIEUPSIOS
-0x91B9 0xBAD7 # HANGUL SYLLABLE MIEUM-WA-SIOS
-0x91BA 0xBADA # HANGUL SYLLABLE MIEUM-WA-CIEUC
-0x91BB 0xBADB # HANGUL SYLLABLE MIEUM-WA-CHIEUCH
-0x91BC 0xBADC # HANGUL SYLLABLE MIEUM-WA-KHIEUKH
-0x91BD 0xBADD # HANGUL SYLLABLE MIEUM-WA-THIEUTH
-0x91BE 0xBADE # HANGUL SYLLABLE MIEUM-WA-PHIEUPH
-0x91BF 0xBADF # HANGUL SYLLABLE MIEUM-WA-HIEUH
-0x91C0 0xBAE0 # HANGUL SYLLABLE MIEUM-WAE
-0x91C1 0xBAE1 # HANGUL SYLLABLE MIEUM-WAE-KIYEOK
-0x91C2 0xBAE2 # HANGUL SYLLABLE MIEUM-WAE-SSANGKIYEOK
-0x91C3 0xBAE3 # HANGUL SYLLABLE MIEUM-WAE-KIYEOKSIOS
-0x91C4 0xBAE4 # HANGUL SYLLABLE MIEUM-WAE-NIEUN
-0x91C5 0xBAE5 # HANGUL SYLLABLE MIEUM-WAE-NIEUNCIEUC
-0x91C6 0xBAE6 # HANGUL SYLLABLE MIEUM-WAE-NIEUNHIEUH
-0x91C7 0xBAE7 # HANGUL SYLLABLE MIEUM-WAE-TIKEUT
-0x91C8 0xBAE8 # HANGUL SYLLABLE MIEUM-WAE-RIEUL
-0x91C9 0xBAE9 # HANGUL SYLLABLE MIEUM-WAE-RIEULKIYEOK
-0x91CA 0xBAEA # HANGUL SYLLABLE MIEUM-WAE-RIEULMIEUM
-0x91CB 0xBAEB # HANGUL SYLLABLE MIEUM-WAE-RIEULPIEUP
-0x91CC 0xBAEC # HANGUL SYLLABLE MIEUM-WAE-RIEULSIOS
-0x91CD 0xBAED # HANGUL SYLLABLE MIEUM-WAE-RIEULTHIEUTH
-0x91CE 0xBAEE # HANGUL SYLLABLE MIEUM-WAE-RIEULPHIEUPH
-0x91CF 0xBAEF # HANGUL SYLLABLE MIEUM-WAE-RIEULHIEUH
-0x91D0 0xBAF0 # HANGUL SYLLABLE MIEUM-WAE-MIEUM
-0x91D1 0xBAF1 # HANGUL SYLLABLE MIEUM-WAE-PIEUP
-0x91D2 0xBAF2 # HANGUL SYLLABLE MIEUM-WAE-PIEUPSIOS
-0x91D3 0xBAF3 # HANGUL SYLLABLE MIEUM-WAE-SIOS
-0x91D4 0xBAF4 # HANGUL SYLLABLE MIEUM-WAE-SSANGSIOS
-0x91D5 0xBAF5 # HANGUL SYLLABLE MIEUM-WAE-IEUNG
-0x91D6 0xBAF6 # HANGUL SYLLABLE MIEUM-WAE-CIEUC
-0x91D7 0xBAF7 # HANGUL SYLLABLE MIEUM-WAE-CHIEUCH
-0x91D8 0xBAF8 # HANGUL SYLLABLE MIEUM-WAE-KHIEUKH
-0x91D9 0xBAF9 # HANGUL SYLLABLE MIEUM-WAE-THIEUTH
-0x91DA 0xBAFA # HANGUL SYLLABLE MIEUM-WAE-PHIEUPH
-0x91DB 0xBAFB # HANGUL SYLLABLE MIEUM-WAE-HIEUH
-0x91DC 0xBAFD # HANGUL SYLLABLE MIEUM-OE-KIYEOK
-0x91DD 0xBAFE # HANGUL SYLLABLE MIEUM-OE-SSANGKIYEOK
-0x91DE 0xBAFF # HANGUL SYLLABLE MIEUM-OE-KIYEOKSIOS
-0x91DF 0xBB01 # HANGUL SYLLABLE MIEUM-OE-NIEUNCIEUC
-0x91E0 0xBB02 # HANGUL SYLLABLE MIEUM-OE-NIEUNHIEUH
-0x91E1 0xBB03 # HANGUL SYLLABLE MIEUM-OE-TIKEUT
-0x91E2 0xBB05 # HANGUL SYLLABLE MIEUM-OE-RIEULKIYEOK
-0x91E3 0xBB06 # HANGUL SYLLABLE MIEUM-OE-RIEULMIEUM
-0x91E4 0xBB07 # HANGUL SYLLABLE MIEUM-OE-RIEULPIEUP
-0x91E5 0xBB08 # HANGUL SYLLABLE MIEUM-OE-RIEULSIOS
-0x91E6 0xBB09 # HANGUL SYLLABLE MIEUM-OE-RIEULTHIEUTH
-0x91E7 0xBB0A # HANGUL SYLLABLE MIEUM-OE-RIEULPHIEUPH
-0x91E8 0xBB0B # HANGUL SYLLABLE MIEUM-OE-RIEULHIEUH
-0x91E9 0xBB0C # HANGUL SYLLABLE MIEUM-OE-MIEUM
-0x91EA 0xBB0E # HANGUL SYLLABLE MIEUM-OE-PIEUPSIOS
-0x91EB 0xBB10 # HANGUL SYLLABLE MIEUM-OE-SSANGSIOS
-0x91EC 0xBB12 # HANGUL SYLLABLE MIEUM-OE-CIEUC
-0x91ED 0xBB13 # HANGUL SYLLABLE MIEUM-OE-CHIEUCH
-0x91EE 0xBB14 # HANGUL SYLLABLE MIEUM-OE-KHIEUKH
-0x91EF 0xBB15 # HANGUL SYLLABLE MIEUM-OE-THIEUTH
-0x91F0 0xBB16 # HANGUL SYLLABLE MIEUM-OE-PHIEUPH
-0x91F1 0xBB17 # HANGUL SYLLABLE MIEUM-OE-HIEUH
-0x91F2 0xBB19 # HANGUL SYLLABLE MIEUM-YO-KIYEOK
-0x91F3 0xBB1A # HANGUL SYLLABLE MIEUM-YO-SSANGKIYEOK
-0x91F4 0xBB1B # HANGUL SYLLABLE MIEUM-YO-KIYEOKSIOS
-0x91F5 0xBB1D # HANGUL SYLLABLE MIEUM-YO-NIEUNCIEUC
-0x91F6 0xBB1E # HANGUL SYLLABLE MIEUM-YO-NIEUNHIEUH
-0x91F7 0xBB1F # HANGUL SYLLABLE MIEUM-YO-TIKEUT
-0x91F8 0xBB21 # HANGUL SYLLABLE MIEUM-YO-RIEULKIYEOK
-0x91F9 0xBB22 # HANGUL SYLLABLE MIEUM-YO-RIEULMIEUM
-0x91FA 0xBB23 # HANGUL SYLLABLE MIEUM-YO-RIEULPIEUP
-0x91FB 0xBB24 # HANGUL SYLLABLE MIEUM-YO-RIEULSIOS
-0x91FC 0xBB25 # HANGUL SYLLABLE MIEUM-YO-RIEULTHIEUTH
-0x91FD 0xBB26 # HANGUL SYLLABLE MIEUM-YO-RIEULPHIEUPH
-0x91FE 0xBB27 # HANGUL SYLLABLE MIEUM-YO-RIEULHIEUH
-0x9241 0xBB28 # HANGUL SYLLABLE MIEUM-YO-MIEUM
-0x9242 0xBB2A # HANGUL SYLLABLE MIEUM-YO-PIEUPSIOS
-0x9243 0xBB2C # HANGUL SYLLABLE MIEUM-YO-SSANGSIOS
-0x9244 0xBB2D # HANGUL SYLLABLE MIEUM-YO-IEUNG
-0x9245 0xBB2E # HANGUL SYLLABLE MIEUM-YO-CIEUC
-0x9246 0xBB2F # HANGUL SYLLABLE MIEUM-YO-CHIEUCH
-0x9247 0xBB30 # HANGUL SYLLABLE MIEUM-YO-KHIEUKH
-0x9248 0xBB31 # HANGUL SYLLABLE MIEUM-YO-THIEUTH
-0x9249 0xBB32 # HANGUL SYLLABLE MIEUM-YO-PHIEUPH
-0x924A 0xBB33 # HANGUL SYLLABLE MIEUM-YO-HIEUH
-0x924B 0xBB37 # HANGUL SYLLABLE MIEUM-U-KIYEOKSIOS
-0x924C 0xBB39 # HANGUL SYLLABLE MIEUM-U-NIEUNCIEUC
-0x924D 0xBB3A # HANGUL SYLLABLE MIEUM-U-NIEUNHIEUH
-0x924E 0xBB3F # HANGUL SYLLABLE MIEUM-U-RIEULPIEUP
-0x924F 0xBB40 # HANGUL SYLLABLE MIEUM-U-RIEULSIOS
-0x9250 0xBB41 # HANGUL SYLLABLE MIEUM-U-RIEULTHIEUTH
-0x9251 0xBB42 # HANGUL SYLLABLE MIEUM-U-RIEULPHIEUPH
-0x9252 0xBB43 # HANGUL SYLLABLE MIEUM-U-RIEULHIEUH
-0x9253 0xBB46 # HANGUL SYLLABLE MIEUM-U-PIEUPSIOS
-0x9254 0xBB48 # HANGUL SYLLABLE MIEUM-U-SSANGSIOS
-0x9255 0xBB4A # HANGUL SYLLABLE MIEUM-U-CIEUC
-0x9256 0xBB4B # HANGUL SYLLABLE MIEUM-U-CHIEUCH
-0x9257 0xBB4C # HANGUL SYLLABLE MIEUM-U-KHIEUKH
-0x9258 0xBB4E # HANGUL SYLLABLE MIEUM-U-PHIEUPH
-0x9259 0xBB51 # HANGUL SYLLABLE MIEUM-WEO-KIYEOK
-0x925A 0xBB52 # HANGUL SYLLABLE MIEUM-WEO-SSANGKIYEOK
-0x9261 0xBB53 # HANGUL SYLLABLE MIEUM-WEO-KIYEOKSIOS
-0x9262 0xBB55 # HANGUL SYLLABLE MIEUM-WEO-NIEUNCIEUC
-0x9263 0xBB56 # HANGUL SYLLABLE MIEUM-WEO-NIEUNHIEUH
-0x9264 0xBB57 # HANGUL SYLLABLE MIEUM-WEO-TIKEUT
-0x9265 0xBB59 # HANGUL SYLLABLE MIEUM-WEO-RIEULKIYEOK
-0x9266 0xBB5A # HANGUL SYLLABLE MIEUM-WEO-RIEULMIEUM
-0x9267 0xBB5B # HANGUL SYLLABLE MIEUM-WEO-RIEULPIEUP
-0x9268 0xBB5C # HANGUL SYLLABLE MIEUM-WEO-RIEULSIOS
-0x9269 0xBB5D # HANGUL SYLLABLE MIEUM-WEO-RIEULTHIEUTH
-0x926A 0xBB5E # HANGUL SYLLABLE MIEUM-WEO-RIEULPHIEUPH
-0x926B 0xBB5F # HANGUL SYLLABLE MIEUM-WEO-RIEULHIEUH
-0x926C 0xBB60 # HANGUL SYLLABLE MIEUM-WEO-MIEUM
-0x926D 0xBB62 # HANGUL SYLLABLE MIEUM-WEO-PIEUPSIOS
-0x926E 0xBB64 # HANGUL SYLLABLE MIEUM-WEO-SSANGSIOS
-0x926F 0xBB65 # HANGUL SYLLABLE MIEUM-WEO-IEUNG
-0x9270 0xBB66 # HANGUL SYLLABLE MIEUM-WEO-CIEUC
-0x9271 0xBB67 # HANGUL SYLLABLE MIEUM-WEO-CHIEUCH
-0x9272 0xBB68 # HANGUL SYLLABLE MIEUM-WEO-KHIEUKH
-0x9273 0xBB69 # HANGUL SYLLABLE MIEUM-WEO-THIEUTH
-0x9274 0xBB6A # HANGUL SYLLABLE MIEUM-WEO-PHIEUPH
-0x9275 0xBB6B # HANGUL SYLLABLE MIEUM-WEO-HIEUH
-0x9276 0xBB6D # HANGUL SYLLABLE MIEUM-WE-KIYEOK
-0x9277 0xBB6E # HANGUL SYLLABLE MIEUM-WE-SSANGKIYEOK
-0x9278 0xBB6F # HANGUL SYLLABLE MIEUM-WE-KIYEOKSIOS
-0x9279 0xBB70 # HANGUL SYLLABLE MIEUM-WE-NIEUN
-0x927A 0xBB71 # HANGUL SYLLABLE MIEUM-WE-NIEUNCIEUC
-0x9281 0xBB72 # HANGUL SYLLABLE MIEUM-WE-NIEUNHIEUH
-0x9282 0xBB73 # HANGUL SYLLABLE MIEUM-WE-TIKEUT
-0x9283 0xBB74 # HANGUL SYLLABLE MIEUM-WE-RIEUL
-0x9284 0xBB75 # HANGUL SYLLABLE MIEUM-WE-RIEULKIYEOK
-0x9285 0xBB76 # HANGUL SYLLABLE MIEUM-WE-RIEULMIEUM
-0x9286 0xBB77 # HANGUL SYLLABLE MIEUM-WE-RIEULPIEUP
-0x9287 0xBB78 # HANGUL SYLLABLE MIEUM-WE-RIEULSIOS
-0x9288 0xBB79 # HANGUL SYLLABLE MIEUM-WE-RIEULTHIEUTH
-0x9289 0xBB7A # HANGUL SYLLABLE MIEUM-WE-RIEULPHIEUPH
-0x928A 0xBB7B # HANGUL SYLLABLE MIEUM-WE-RIEULHIEUH
-0x928B 0xBB7C # HANGUL SYLLABLE MIEUM-WE-MIEUM
-0x928C 0xBB7D # HANGUL SYLLABLE MIEUM-WE-PIEUP
-0x928D 0xBB7E # HANGUL SYLLABLE MIEUM-WE-PIEUPSIOS
-0x928E 0xBB7F # HANGUL SYLLABLE MIEUM-WE-SIOS
-0x928F 0xBB80 # HANGUL SYLLABLE MIEUM-WE-SSANGSIOS
-0x9290 0xBB81 # HANGUL SYLLABLE MIEUM-WE-IEUNG
-0x9291 0xBB82 # HANGUL SYLLABLE MIEUM-WE-CIEUC
-0x9292 0xBB83 # HANGUL SYLLABLE MIEUM-WE-CHIEUCH
-0x9293 0xBB84 # HANGUL SYLLABLE MIEUM-WE-KHIEUKH
-0x9294 0xBB85 # HANGUL SYLLABLE MIEUM-WE-THIEUTH
-0x9295 0xBB86 # HANGUL SYLLABLE MIEUM-WE-PHIEUPH
-0x9296 0xBB87 # HANGUL SYLLABLE MIEUM-WE-HIEUH
-0x9297 0xBB89 # HANGUL SYLLABLE MIEUM-WI-KIYEOK
-0x9298 0xBB8A # HANGUL SYLLABLE MIEUM-WI-SSANGKIYEOK
-0x9299 0xBB8B # HANGUL SYLLABLE MIEUM-WI-KIYEOKSIOS
-0x929A 0xBB8D # HANGUL SYLLABLE MIEUM-WI-NIEUNCIEUC
-0x929B 0xBB8E # HANGUL SYLLABLE MIEUM-WI-NIEUNHIEUH
-0x929C 0xBB8F # HANGUL SYLLABLE MIEUM-WI-TIKEUT
-0x929D 0xBB91 # HANGUL SYLLABLE MIEUM-WI-RIEULKIYEOK
-0x929E 0xBB92 # HANGUL SYLLABLE MIEUM-WI-RIEULMIEUM
-0x929F 0xBB93 # HANGUL SYLLABLE MIEUM-WI-RIEULPIEUP
-0x92A0 0xBB94 # HANGUL SYLLABLE MIEUM-WI-RIEULSIOS
-0x92A1 0xBB95 # HANGUL SYLLABLE MIEUM-WI-RIEULTHIEUTH
-0x92A2 0xBB96 # HANGUL SYLLABLE MIEUM-WI-RIEULPHIEUPH
-0x92A3 0xBB97 # HANGUL SYLLABLE MIEUM-WI-RIEULHIEUH
-0x92A4 0xBB98 # HANGUL SYLLABLE MIEUM-WI-MIEUM
-0x92A5 0xBB99 # HANGUL SYLLABLE MIEUM-WI-PIEUP
-0x92A6 0xBB9A # HANGUL SYLLABLE MIEUM-WI-PIEUPSIOS
-0x92A7 0xBB9B # HANGUL SYLLABLE MIEUM-WI-SIOS
-0x92A8 0xBB9C # HANGUL SYLLABLE MIEUM-WI-SSANGSIOS
-0x92A9 0xBB9D # HANGUL SYLLABLE MIEUM-WI-IEUNG
-0x92AA 0xBB9E # HANGUL SYLLABLE MIEUM-WI-CIEUC
-0x92AB 0xBB9F # HANGUL SYLLABLE MIEUM-WI-CHIEUCH
-0x92AC 0xBBA0 # HANGUL SYLLABLE MIEUM-WI-KHIEUKH
-0x92AD 0xBBA1 # HANGUL SYLLABLE MIEUM-WI-THIEUTH
-0x92AE 0xBBA2 # HANGUL SYLLABLE MIEUM-WI-PHIEUPH
-0x92AF 0xBBA3 # HANGUL SYLLABLE MIEUM-WI-HIEUH
-0x92B0 0xBBA5 # HANGUL SYLLABLE MIEUM-YU-KIYEOK
-0x92B1 0xBBA6 # HANGUL SYLLABLE MIEUM-YU-SSANGKIYEOK
-0x92B2 0xBBA7 # HANGUL SYLLABLE MIEUM-YU-KIYEOKSIOS
-0x92B3 0xBBA9 # HANGUL SYLLABLE MIEUM-YU-NIEUNCIEUC
-0x92B4 0xBBAA # HANGUL SYLLABLE MIEUM-YU-NIEUNHIEUH
-0x92B5 0xBBAB # HANGUL SYLLABLE MIEUM-YU-TIKEUT
-0x92B6 0xBBAD # HANGUL SYLLABLE MIEUM-YU-RIEULKIYEOK
-0x92B7 0xBBAE # HANGUL SYLLABLE MIEUM-YU-RIEULMIEUM
-0x92B8 0xBBAF # HANGUL SYLLABLE MIEUM-YU-RIEULPIEUP
-0x92B9 0xBBB0 # HANGUL SYLLABLE MIEUM-YU-RIEULSIOS
-0x92BA 0xBBB1 # HANGUL SYLLABLE MIEUM-YU-RIEULTHIEUTH
-0x92BB 0xBBB2 # HANGUL SYLLABLE MIEUM-YU-RIEULPHIEUPH
-0x92BC 0xBBB3 # HANGUL SYLLABLE MIEUM-YU-RIEULHIEUH
-0x92BD 0xBBB5 # HANGUL SYLLABLE MIEUM-YU-PIEUP
-0x92BE 0xBBB6 # HANGUL SYLLABLE MIEUM-YU-PIEUPSIOS
-0x92BF 0xBBB8 # HANGUL SYLLABLE MIEUM-YU-SSANGSIOS
-0x92C0 0xBBB9 # HANGUL SYLLABLE MIEUM-YU-IEUNG
-0x92C1 0xBBBA # HANGUL SYLLABLE MIEUM-YU-CIEUC
-0x92C2 0xBBBB # HANGUL SYLLABLE MIEUM-YU-CHIEUCH
-0x92C3 0xBBBC # HANGUL SYLLABLE MIEUM-YU-KHIEUKH
-0x92C4 0xBBBD # HANGUL SYLLABLE MIEUM-YU-THIEUTH
-0x92C5 0xBBBE # HANGUL SYLLABLE MIEUM-YU-PHIEUPH
-0x92C6 0xBBBF # HANGUL SYLLABLE MIEUM-YU-HIEUH
-0x92C7 0xBBC1 # HANGUL SYLLABLE MIEUM-EU-KIYEOK
-0x92C8 0xBBC2 # HANGUL SYLLABLE MIEUM-EU-SSANGKIYEOK
-0x92C9 0xBBC3 # HANGUL SYLLABLE MIEUM-EU-KIYEOKSIOS
-0x92CA 0xBBC5 # HANGUL SYLLABLE MIEUM-EU-NIEUNCIEUC
-0x92CB 0xBBC6 # HANGUL SYLLABLE MIEUM-EU-NIEUNHIEUH
-0x92CC 0xBBC7 # HANGUL SYLLABLE MIEUM-EU-TIKEUT
-0x92CD 0xBBC9 # HANGUL SYLLABLE MIEUM-EU-RIEULKIYEOK
-0x92CE 0xBBCA # HANGUL SYLLABLE MIEUM-EU-RIEULMIEUM
-0x92CF 0xBBCB # HANGUL SYLLABLE MIEUM-EU-RIEULPIEUP
-0x92D0 0xBBCC # HANGUL SYLLABLE MIEUM-EU-RIEULSIOS
-0x92D1 0xBBCD # HANGUL SYLLABLE MIEUM-EU-RIEULTHIEUTH
-0x92D2 0xBBCE # HANGUL SYLLABLE MIEUM-EU-RIEULPHIEUPH
-0x92D3 0xBBCF # HANGUL SYLLABLE MIEUM-EU-RIEULHIEUH
-0x92D4 0xBBD1 # HANGUL SYLLABLE MIEUM-EU-PIEUP
-0x92D5 0xBBD2 # HANGUL SYLLABLE MIEUM-EU-PIEUPSIOS
-0x92D6 0xBBD4 # HANGUL SYLLABLE MIEUM-EU-SSANGSIOS
-0x92D7 0xBBD5 # HANGUL SYLLABLE MIEUM-EU-IEUNG
-0x92D8 0xBBD6 # HANGUL SYLLABLE MIEUM-EU-CIEUC
-0x92D9 0xBBD7 # HANGUL SYLLABLE MIEUM-EU-CHIEUCH
-0x92DA 0xBBD8 # HANGUL SYLLABLE MIEUM-EU-KHIEUKH
-0x92DB 0xBBD9 # HANGUL SYLLABLE MIEUM-EU-THIEUTH
-0x92DC 0xBBDA # HANGUL SYLLABLE MIEUM-EU-PHIEUPH
-0x92DD 0xBBDB # HANGUL SYLLABLE MIEUM-EU-HIEUH
-0x92DE 0xBBDC # HANGUL SYLLABLE MIEUM-YI
-0x92DF 0xBBDD # HANGUL SYLLABLE MIEUM-YI-KIYEOK
-0x92E0 0xBBDE # HANGUL SYLLABLE MIEUM-YI-SSANGKIYEOK
-0x92E1 0xBBDF # HANGUL SYLLABLE MIEUM-YI-KIYEOKSIOS
-0x92E2 0xBBE0 # HANGUL SYLLABLE MIEUM-YI-NIEUN
-0x92E3 0xBBE1 # HANGUL SYLLABLE MIEUM-YI-NIEUNCIEUC
-0x92E4 0xBBE2 # HANGUL SYLLABLE MIEUM-YI-NIEUNHIEUH
-0x92E5 0xBBE3 # HANGUL SYLLABLE MIEUM-YI-TIKEUT
-0x92E6 0xBBE4 # HANGUL SYLLABLE MIEUM-YI-RIEUL
-0x92E7 0xBBE5 # HANGUL SYLLABLE MIEUM-YI-RIEULKIYEOK
-0x92E8 0xBBE6 # HANGUL SYLLABLE MIEUM-YI-RIEULMIEUM
-0x92E9 0xBBE7 # HANGUL SYLLABLE MIEUM-YI-RIEULPIEUP
-0x92EA 0xBBE8 # HANGUL SYLLABLE MIEUM-YI-RIEULSIOS
-0x92EB 0xBBE9 # HANGUL SYLLABLE MIEUM-YI-RIEULTHIEUTH
-0x92EC 0xBBEA # HANGUL SYLLABLE MIEUM-YI-RIEULPHIEUPH
-0x92ED 0xBBEB # HANGUL SYLLABLE MIEUM-YI-RIEULHIEUH
-0x92EE 0xBBEC # HANGUL SYLLABLE MIEUM-YI-MIEUM
-0x92EF 0xBBED # HANGUL SYLLABLE MIEUM-YI-PIEUP
-0x92F0 0xBBEE # HANGUL SYLLABLE MIEUM-YI-PIEUPSIOS
-0x92F1 0xBBEF # HANGUL SYLLABLE MIEUM-YI-SIOS
-0x92F2 0xBBF0 # HANGUL SYLLABLE MIEUM-YI-SSANGSIOS
-0x92F3 0xBBF1 # HANGUL SYLLABLE MIEUM-YI-IEUNG
-0x92F4 0xBBF2 # HANGUL SYLLABLE MIEUM-YI-CIEUC
-0x92F5 0xBBF3 # HANGUL SYLLABLE MIEUM-YI-CHIEUCH
-0x92F6 0xBBF4 # HANGUL SYLLABLE MIEUM-YI-KHIEUKH
-0x92F7 0xBBF5 # HANGUL SYLLABLE MIEUM-YI-THIEUTH
-0x92F8 0xBBF6 # HANGUL SYLLABLE MIEUM-YI-PHIEUPH
-0x92F9 0xBBF7 # HANGUL SYLLABLE MIEUM-YI-HIEUH
-0x92FA 0xBBFA # HANGUL SYLLABLE MIEUM-I-SSANGKIYEOK
-0x92FB 0xBBFB # HANGUL SYLLABLE MIEUM-I-KIYEOKSIOS
-0x92FC 0xBBFD # HANGUL SYLLABLE MIEUM-I-NIEUNCIEUC
-0x92FD 0xBBFE # HANGUL SYLLABLE MIEUM-I-NIEUNHIEUH
-0x92FE 0xBC01 # HANGUL SYLLABLE MIEUM-I-RIEULKIYEOK
-0x9341 0xBC03 # HANGUL SYLLABLE MIEUM-I-RIEULPIEUP
-0x9342 0xBC04 # HANGUL SYLLABLE MIEUM-I-RIEULSIOS
-0x9343 0xBC05 # HANGUL SYLLABLE MIEUM-I-RIEULTHIEUTH
-0x9344 0xBC06 # HANGUL SYLLABLE MIEUM-I-RIEULPHIEUPH
-0x9345 0xBC07 # HANGUL SYLLABLE MIEUM-I-RIEULHIEUH
-0x9346 0xBC0A # HANGUL SYLLABLE MIEUM-I-PIEUPSIOS
-0x9347 0xBC0E # HANGUL SYLLABLE MIEUM-I-CIEUC
-0x9348 0xBC10 # HANGUL SYLLABLE MIEUM-I-KHIEUKH
-0x9349 0xBC12 # HANGUL SYLLABLE MIEUM-I-PHIEUPH
-0x934A 0xBC13 # HANGUL SYLLABLE MIEUM-I-HIEUH
-0x934B 0xBC19 # HANGUL SYLLABLE PIEUP-A-NIEUNCIEUC
-0x934C 0xBC1A # HANGUL SYLLABLE PIEUP-A-NIEUNHIEUH
-0x934D 0xBC20 # HANGUL SYLLABLE PIEUP-A-RIEULSIOS
-0x934E 0xBC21 # HANGUL SYLLABLE PIEUP-A-RIEULTHIEUTH
-0x934F 0xBC22 # HANGUL SYLLABLE PIEUP-A-RIEULPHIEUPH
-0x9350 0xBC23 # HANGUL SYLLABLE PIEUP-A-RIEULHIEUH
-0x9351 0xBC26 # HANGUL SYLLABLE PIEUP-A-PIEUPSIOS
-0x9352 0xBC28 # HANGUL SYLLABLE PIEUP-A-SSANGSIOS
-0x9353 0xBC2A # HANGUL SYLLABLE PIEUP-A-CIEUC
-0x9354 0xBC2B # HANGUL SYLLABLE PIEUP-A-CHIEUCH
-0x9355 0xBC2C # HANGUL SYLLABLE PIEUP-A-KHIEUKH
-0x9356 0xBC2E # HANGUL SYLLABLE PIEUP-A-PHIEUPH
-0x9357 0xBC2F # HANGUL SYLLABLE PIEUP-A-HIEUH
-0x9358 0xBC32 # HANGUL SYLLABLE PIEUP-AE-SSANGKIYEOK
-0x9359 0xBC33 # HANGUL SYLLABLE PIEUP-AE-KIYEOKSIOS
-0x935A 0xBC35 # HANGUL SYLLABLE PIEUP-AE-NIEUNCIEUC
-0x9361 0xBC36 # HANGUL SYLLABLE PIEUP-AE-NIEUNHIEUH
-0x9362 0xBC37 # HANGUL SYLLABLE PIEUP-AE-TIKEUT
-0x9363 0xBC39 # HANGUL SYLLABLE PIEUP-AE-RIEULKIYEOK
-0x9364 0xBC3A # HANGUL SYLLABLE PIEUP-AE-RIEULMIEUM
-0x9365 0xBC3B # HANGUL SYLLABLE PIEUP-AE-RIEULPIEUP
-0x9366 0xBC3C # HANGUL SYLLABLE PIEUP-AE-RIEULSIOS
-0x9367 0xBC3D # HANGUL SYLLABLE PIEUP-AE-RIEULTHIEUTH
-0x9368 0xBC3E # HANGUL SYLLABLE PIEUP-AE-RIEULPHIEUPH
-0x9369 0xBC3F # HANGUL SYLLABLE PIEUP-AE-RIEULHIEUH
-0x936A 0xBC42 # HANGUL SYLLABLE PIEUP-AE-PIEUPSIOS
-0x936B 0xBC46 # HANGUL SYLLABLE PIEUP-AE-CIEUC
-0x936C 0xBC47 # HANGUL SYLLABLE PIEUP-AE-CHIEUCH
-0x936D 0xBC48 # HANGUL SYLLABLE PIEUP-AE-KHIEUKH
-0x936E 0xBC4A # HANGUL SYLLABLE PIEUP-AE-PHIEUPH
-0x936F 0xBC4B # HANGUL SYLLABLE PIEUP-AE-HIEUH
-0x9370 0xBC4E # HANGUL SYLLABLE PIEUP-YA-SSANGKIYEOK
-0x9371 0xBC4F # HANGUL SYLLABLE PIEUP-YA-KIYEOKSIOS
-0x9372 0xBC51 # HANGUL SYLLABLE PIEUP-YA-NIEUNCIEUC
-0x9373 0xBC52 # HANGUL SYLLABLE PIEUP-YA-NIEUNHIEUH
-0x9374 0xBC53 # HANGUL SYLLABLE PIEUP-YA-TIKEUT
-0x9375 0xBC54 # HANGUL SYLLABLE PIEUP-YA-RIEUL
-0x9376 0xBC55 # HANGUL SYLLABLE PIEUP-YA-RIEULKIYEOK
-0x9377 0xBC56 # HANGUL SYLLABLE PIEUP-YA-RIEULMIEUM
-0x9378 0xBC57 # HANGUL SYLLABLE PIEUP-YA-RIEULPIEUP
-0x9379 0xBC58 # HANGUL SYLLABLE PIEUP-YA-RIEULSIOS
-0x937A 0xBC59 # HANGUL SYLLABLE PIEUP-YA-RIEULTHIEUTH
-0x9381 0xBC5A # HANGUL SYLLABLE PIEUP-YA-RIEULPHIEUPH
-0x9382 0xBC5B # HANGUL SYLLABLE PIEUP-YA-RIEULHIEUH
-0x9383 0xBC5C # HANGUL SYLLABLE PIEUP-YA-MIEUM
-0x9384 0xBC5E # HANGUL SYLLABLE PIEUP-YA-PIEUPSIOS
-0x9385 0xBC5F # HANGUL SYLLABLE PIEUP-YA-SIOS
-0x9386 0xBC60 # HANGUL SYLLABLE PIEUP-YA-SSANGSIOS
-0x9387 0xBC61 # HANGUL SYLLABLE PIEUP-YA-IEUNG
-0x9388 0xBC62 # HANGUL SYLLABLE PIEUP-YA-CIEUC
-0x9389 0xBC63 # HANGUL SYLLABLE PIEUP-YA-CHIEUCH
-0x938A 0xBC64 # HANGUL SYLLABLE PIEUP-YA-KHIEUKH
-0x938B 0xBC65 # HANGUL SYLLABLE PIEUP-YA-THIEUTH
-0x938C 0xBC66 # HANGUL SYLLABLE PIEUP-YA-PHIEUPH
-0x938D 0xBC67 # HANGUL SYLLABLE PIEUP-YA-HIEUH
-0x938E 0xBC68 # HANGUL SYLLABLE PIEUP-YAE
-0x938F 0xBC69 # HANGUL SYLLABLE PIEUP-YAE-KIYEOK
-0x9390 0xBC6A # HANGUL SYLLABLE PIEUP-YAE-SSANGKIYEOK
-0x9391 0xBC6B # HANGUL SYLLABLE PIEUP-YAE-KIYEOKSIOS
-0x9392 0xBC6C # HANGUL SYLLABLE PIEUP-YAE-NIEUN
-0x9393 0xBC6D # HANGUL SYLLABLE PIEUP-YAE-NIEUNCIEUC
-0x9394 0xBC6E # HANGUL SYLLABLE PIEUP-YAE-NIEUNHIEUH
-0x9395 0xBC6F # HANGUL SYLLABLE PIEUP-YAE-TIKEUT
-0x9396 0xBC70 # HANGUL SYLLABLE PIEUP-YAE-RIEUL
-0x9397 0xBC71 # HANGUL SYLLABLE PIEUP-YAE-RIEULKIYEOK
-0x9398 0xBC72 # HANGUL SYLLABLE PIEUP-YAE-RIEULMIEUM
-0x9399 0xBC73 # HANGUL SYLLABLE PIEUP-YAE-RIEULPIEUP
-0x939A 0xBC74 # HANGUL SYLLABLE PIEUP-YAE-RIEULSIOS
-0x939B 0xBC75 # HANGUL SYLLABLE PIEUP-YAE-RIEULTHIEUTH
-0x939C 0xBC76 # HANGUL SYLLABLE PIEUP-YAE-RIEULPHIEUPH
-0x939D 0xBC77 # HANGUL SYLLABLE PIEUP-YAE-RIEULHIEUH
-0x939E 0xBC78 # HANGUL SYLLABLE PIEUP-YAE-MIEUM
-0x939F 0xBC79 # HANGUL SYLLABLE PIEUP-YAE-PIEUP
-0x93A0 0xBC7A # HANGUL SYLLABLE PIEUP-YAE-PIEUPSIOS
-0x93A1 0xBC7B # HANGUL SYLLABLE PIEUP-YAE-SIOS
-0x93A2 0xBC7C # HANGUL SYLLABLE PIEUP-YAE-SSANGSIOS
-0x93A3 0xBC7D # HANGUL SYLLABLE PIEUP-YAE-IEUNG
-0x93A4 0xBC7E # HANGUL SYLLABLE PIEUP-YAE-CIEUC
-0x93A5 0xBC7F # HANGUL SYLLABLE PIEUP-YAE-CHIEUCH
-0x93A6 0xBC80 # HANGUL SYLLABLE PIEUP-YAE-KHIEUKH
-0x93A7 0xBC81 # HANGUL SYLLABLE PIEUP-YAE-THIEUTH
-0x93A8 0xBC82 # HANGUL SYLLABLE PIEUP-YAE-PHIEUPH
-0x93A9 0xBC83 # HANGUL SYLLABLE PIEUP-YAE-HIEUH
-0x93AA 0xBC86 # HANGUL SYLLABLE PIEUP-EO-SSANGKIYEOK
-0x93AB 0xBC87 # HANGUL SYLLABLE PIEUP-EO-KIYEOKSIOS
-0x93AC 0xBC89 # HANGUL SYLLABLE PIEUP-EO-NIEUNCIEUC
-0x93AD 0xBC8A # HANGUL SYLLABLE PIEUP-EO-NIEUNHIEUH
-0x93AE 0xBC8D # HANGUL SYLLABLE PIEUP-EO-RIEULKIYEOK
-0x93AF 0xBC8F # HANGUL SYLLABLE PIEUP-EO-RIEULPIEUP
-0x93B0 0xBC90 # HANGUL SYLLABLE PIEUP-EO-RIEULSIOS
-0x93B1 0xBC91 # HANGUL SYLLABLE PIEUP-EO-RIEULTHIEUTH
-0x93B2 0xBC92 # HANGUL SYLLABLE PIEUP-EO-RIEULPHIEUPH
-0x93B3 0xBC93 # HANGUL SYLLABLE PIEUP-EO-RIEULHIEUH
-0x93B4 0xBC96 # HANGUL SYLLABLE PIEUP-EO-PIEUPSIOS
-0x93B5 0xBC98 # HANGUL SYLLABLE PIEUP-EO-SSANGSIOS
-0x93B6 0xBC9B # HANGUL SYLLABLE PIEUP-EO-CHIEUCH
-0x93B7 0xBC9C # HANGUL SYLLABLE PIEUP-EO-KHIEUKH
-0x93B8 0xBC9D # HANGUL SYLLABLE PIEUP-EO-THIEUTH
-0x93B9 0xBC9E # HANGUL SYLLABLE PIEUP-EO-PHIEUPH
-0x93BA 0xBC9F # HANGUL SYLLABLE PIEUP-EO-HIEUH
-0x93BB 0xBCA2 # HANGUL SYLLABLE PIEUP-E-SSANGKIYEOK
-0x93BC 0xBCA3 # HANGUL SYLLABLE PIEUP-E-KIYEOKSIOS
-0x93BD 0xBCA5 # HANGUL SYLLABLE PIEUP-E-NIEUNCIEUC
-0x93BE 0xBCA6 # HANGUL SYLLABLE PIEUP-E-NIEUNHIEUH
-0x93BF 0xBCA9 # HANGUL SYLLABLE PIEUP-E-RIEULKIYEOK
-0x93C0 0xBCAA # HANGUL SYLLABLE PIEUP-E-RIEULMIEUM
-0x93C1 0xBCAB # HANGUL SYLLABLE PIEUP-E-RIEULPIEUP
-0x93C2 0xBCAC # HANGUL SYLLABLE PIEUP-E-RIEULSIOS
-0x93C3 0xBCAD # HANGUL SYLLABLE PIEUP-E-RIEULTHIEUTH
-0x93C4 0xBCAE # HANGUL SYLLABLE PIEUP-E-RIEULPHIEUPH
-0x93C5 0xBCAF # HANGUL SYLLABLE PIEUP-E-RIEULHIEUH
-0x93C6 0xBCB2 # HANGUL SYLLABLE PIEUP-E-PIEUPSIOS
-0x93C7 0xBCB6 # HANGUL SYLLABLE PIEUP-E-CIEUC
-0x93C8 0xBCB7 # HANGUL SYLLABLE PIEUP-E-CHIEUCH
-0x93C9 0xBCB8 # HANGUL SYLLABLE PIEUP-E-KHIEUKH
-0x93CA 0xBCB9 # HANGUL SYLLABLE PIEUP-E-THIEUTH
-0x93CB 0xBCBA # HANGUL SYLLABLE PIEUP-E-PHIEUPH
-0x93CC 0xBCBB # HANGUL SYLLABLE PIEUP-E-HIEUH
-0x93CD 0xBCBE # HANGUL SYLLABLE PIEUP-YEO-SSANGKIYEOK
-0x93CE 0xBCBF # HANGUL SYLLABLE PIEUP-YEO-KIYEOKSIOS
-0x93CF 0xBCC1 # HANGUL SYLLABLE PIEUP-YEO-NIEUNCIEUC
-0x93D0 0xBCC2 # HANGUL SYLLABLE PIEUP-YEO-NIEUNHIEUH
-0x93D1 0xBCC3 # HANGUL SYLLABLE PIEUP-YEO-TIKEUT
-0x93D2 0xBCC5 # HANGUL SYLLABLE PIEUP-YEO-RIEULKIYEOK
-0x93D3 0xBCC6 # HANGUL SYLLABLE PIEUP-YEO-RIEULMIEUM
-0x93D4 0xBCC7 # HANGUL SYLLABLE PIEUP-YEO-RIEULPIEUP
-0x93D5 0xBCC8 # HANGUL SYLLABLE PIEUP-YEO-RIEULSIOS
-0x93D6 0xBCC9 # HANGUL SYLLABLE PIEUP-YEO-RIEULTHIEUTH
-0x93D7 0xBCCA # HANGUL SYLLABLE PIEUP-YEO-RIEULPHIEUPH
-0x93D8 0xBCCB # HANGUL SYLLABLE PIEUP-YEO-RIEULHIEUH
-0x93D9 0xBCCC # HANGUL SYLLABLE PIEUP-YEO-MIEUM
-0x93DA 0xBCCE # HANGUL SYLLABLE PIEUP-YEO-PIEUPSIOS
-0x93DB 0xBCD2 # HANGUL SYLLABLE PIEUP-YEO-CIEUC
-0x93DC 0xBCD3 # HANGUL SYLLABLE PIEUP-YEO-CHIEUCH
-0x93DD 0xBCD4 # HANGUL SYLLABLE PIEUP-YEO-KHIEUKH
-0x93DE 0xBCD6 # HANGUL SYLLABLE PIEUP-YEO-PHIEUPH
-0x93DF 0xBCD7 # HANGUL SYLLABLE PIEUP-YEO-HIEUH
-0x93E0 0xBCD9 # HANGUL SYLLABLE PIEUP-YE-KIYEOK
-0x93E1 0xBCDA # HANGUL SYLLABLE PIEUP-YE-SSANGKIYEOK
-0x93E2 0xBCDB # HANGUL SYLLABLE PIEUP-YE-KIYEOKSIOS
-0x93E3 0xBCDD # HANGUL SYLLABLE PIEUP-YE-NIEUNCIEUC
-0x93E4 0xBCDE # HANGUL SYLLABLE PIEUP-YE-NIEUNHIEUH
-0x93E5 0xBCDF # HANGUL SYLLABLE PIEUP-YE-TIKEUT
-0x93E6 0xBCE0 # HANGUL SYLLABLE PIEUP-YE-RIEUL
-0x93E7 0xBCE1 # HANGUL SYLLABLE PIEUP-YE-RIEULKIYEOK
-0x93E8 0xBCE2 # HANGUL SYLLABLE PIEUP-YE-RIEULMIEUM
-0x93E9 0xBCE3 # HANGUL SYLLABLE PIEUP-YE-RIEULPIEUP
-0x93EA 0xBCE4 # HANGUL SYLLABLE PIEUP-YE-RIEULSIOS
-0x93EB 0xBCE5 # HANGUL SYLLABLE PIEUP-YE-RIEULTHIEUTH
-0x93EC 0xBCE6 # HANGUL SYLLABLE PIEUP-YE-RIEULPHIEUPH
-0x93ED 0xBCE7 # HANGUL SYLLABLE PIEUP-YE-RIEULHIEUH
-0x93EE 0xBCE8 # HANGUL SYLLABLE PIEUP-YE-MIEUM
-0x93EF 0xBCE9 # HANGUL SYLLABLE PIEUP-YE-PIEUP
-0x93F0 0xBCEA # HANGUL SYLLABLE PIEUP-YE-PIEUPSIOS
-0x93F1 0xBCEB # HANGUL SYLLABLE PIEUP-YE-SIOS
-0x93F2 0xBCEC # HANGUL SYLLABLE PIEUP-YE-SSANGSIOS
-0x93F3 0xBCED # HANGUL SYLLABLE PIEUP-YE-IEUNG
-0x93F4 0xBCEE # HANGUL SYLLABLE PIEUP-YE-CIEUC
-0x93F5 0xBCEF # HANGUL SYLLABLE PIEUP-YE-CHIEUCH
-0x93F6 0xBCF0 # HANGUL SYLLABLE PIEUP-YE-KHIEUKH
-0x93F7 0xBCF1 # HANGUL SYLLABLE PIEUP-YE-THIEUTH
-0x93F8 0xBCF2 # HANGUL SYLLABLE PIEUP-YE-PHIEUPH
-0x93F9 0xBCF3 # HANGUL SYLLABLE PIEUP-YE-HIEUH
-0x93FA 0xBCF7 # HANGUL SYLLABLE PIEUP-O-KIYEOKSIOS
-0x93FB 0xBCF9 # HANGUL SYLLABLE PIEUP-O-NIEUNCIEUC
-0x93FC 0xBCFA # HANGUL SYLLABLE PIEUP-O-NIEUNHIEUH
-0x93FD 0xBCFB # HANGUL SYLLABLE PIEUP-O-TIKEUT
-0x93FE 0xBCFD # HANGUL SYLLABLE PIEUP-O-RIEULKIYEOK
-0x9441 0xBCFE # HANGUL SYLLABLE PIEUP-O-RIEULMIEUM
-0x9442 0xBCFF # HANGUL SYLLABLE PIEUP-O-RIEULPIEUP
-0x9443 0xBD00 # HANGUL SYLLABLE PIEUP-O-RIEULSIOS
-0x9444 0xBD01 # HANGUL SYLLABLE PIEUP-O-RIEULTHIEUTH
-0x9445 0xBD02 # HANGUL SYLLABLE PIEUP-O-RIEULPHIEUPH
-0x9446 0xBD03 # HANGUL SYLLABLE PIEUP-O-RIEULHIEUH
-0x9447 0xBD06 # HANGUL SYLLABLE PIEUP-O-PIEUPSIOS
-0x9448 0xBD08 # HANGUL SYLLABLE PIEUP-O-SSANGSIOS
-0x9449 0xBD0A # HANGUL SYLLABLE PIEUP-O-CIEUC
-0x944A 0xBD0B # HANGUL SYLLABLE PIEUP-O-CHIEUCH
-0x944B 0xBD0C # HANGUL SYLLABLE PIEUP-O-KHIEUKH
-0x944C 0xBD0D # HANGUL SYLLABLE PIEUP-O-THIEUTH
-0x944D 0xBD0E # HANGUL SYLLABLE PIEUP-O-PHIEUPH
-0x944E 0xBD0F # HANGUL SYLLABLE PIEUP-O-HIEUH
-0x944F 0xBD11 # HANGUL SYLLABLE PIEUP-WA-KIYEOK
-0x9450 0xBD12 # HANGUL SYLLABLE PIEUP-WA-SSANGKIYEOK
-0x9451 0xBD13 # HANGUL SYLLABLE PIEUP-WA-KIYEOKSIOS
-0x9452 0xBD15 # HANGUL SYLLABLE PIEUP-WA-NIEUNCIEUC
-0x9453 0xBD16 # HANGUL SYLLABLE PIEUP-WA-NIEUNHIEUH
-0x9454 0xBD17 # HANGUL SYLLABLE PIEUP-WA-TIKEUT
-0x9455 0xBD18 # HANGUL SYLLABLE PIEUP-WA-RIEUL
-0x9456 0xBD19 # HANGUL SYLLABLE PIEUP-WA-RIEULKIYEOK
-0x9457 0xBD1A # HANGUL SYLLABLE PIEUP-WA-RIEULMIEUM
-0x9458 0xBD1B # HANGUL SYLLABLE PIEUP-WA-RIEULPIEUP
-0x9459 0xBD1C # HANGUL SYLLABLE PIEUP-WA-RIEULSIOS
-0x945A 0xBD1D # HANGUL SYLLABLE PIEUP-WA-RIEULTHIEUTH
-0x9461 0xBD1E # HANGUL SYLLABLE PIEUP-WA-RIEULPHIEUPH
-0x9462 0xBD1F # HANGUL SYLLABLE PIEUP-WA-RIEULHIEUH
-0x9463 0xBD20 # HANGUL SYLLABLE PIEUP-WA-MIEUM
-0x9464 0xBD21 # HANGUL SYLLABLE PIEUP-WA-PIEUP
-0x9465 0xBD22 # HANGUL SYLLABLE PIEUP-WA-PIEUPSIOS
-0x9466 0xBD23 # HANGUL SYLLABLE PIEUP-WA-SIOS
-0x9467 0xBD25 # HANGUL SYLLABLE PIEUP-WA-IEUNG
-0x9468 0xBD26 # HANGUL SYLLABLE PIEUP-WA-CIEUC
-0x9469 0xBD27 # HANGUL SYLLABLE PIEUP-WA-CHIEUCH
-0x946A 0xBD28 # HANGUL SYLLABLE PIEUP-WA-KHIEUKH
-0x946B 0xBD29 # HANGUL SYLLABLE PIEUP-WA-THIEUTH
-0x946C 0xBD2A # HANGUL SYLLABLE PIEUP-WA-PHIEUPH
-0x946D 0xBD2B # HANGUL SYLLABLE PIEUP-WA-HIEUH
-0x946E 0xBD2D # HANGUL SYLLABLE PIEUP-WAE-KIYEOK
-0x946F 0xBD2E # HANGUL SYLLABLE PIEUP-WAE-SSANGKIYEOK
-0x9470 0xBD2F # HANGUL SYLLABLE PIEUP-WAE-KIYEOKSIOS
-0x9471 0xBD30 # HANGUL SYLLABLE PIEUP-WAE-NIEUN
-0x9472 0xBD31 # HANGUL SYLLABLE PIEUP-WAE-NIEUNCIEUC
-0x9473 0xBD32 # HANGUL SYLLABLE PIEUP-WAE-NIEUNHIEUH
-0x9474 0xBD33 # HANGUL SYLLABLE PIEUP-WAE-TIKEUT
-0x9475 0xBD34 # HANGUL SYLLABLE PIEUP-WAE-RIEUL
-0x9476 0xBD35 # HANGUL SYLLABLE PIEUP-WAE-RIEULKIYEOK
-0x9477 0xBD36 # HANGUL SYLLABLE PIEUP-WAE-RIEULMIEUM
-0x9478 0xBD37 # HANGUL SYLLABLE PIEUP-WAE-RIEULPIEUP
-0x9479 0xBD38 # HANGUL SYLLABLE PIEUP-WAE-RIEULSIOS
-0x947A 0xBD39 # HANGUL SYLLABLE PIEUP-WAE-RIEULTHIEUTH
-0x9481 0xBD3A # HANGUL SYLLABLE PIEUP-WAE-RIEULPHIEUPH
-0x9482 0xBD3B # HANGUL SYLLABLE PIEUP-WAE-RIEULHIEUH
-0x9483 0xBD3C # HANGUL SYLLABLE PIEUP-WAE-MIEUM
-0x9484 0xBD3D # HANGUL SYLLABLE PIEUP-WAE-PIEUP
-0x9485 0xBD3E # HANGUL SYLLABLE PIEUP-WAE-PIEUPSIOS
-0x9486 0xBD3F # HANGUL SYLLABLE PIEUP-WAE-SIOS
-0x9487 0xBD41 # HANGUL SYLLABLE PIEUP-WAE-IEUNG
-0x9488 0xBD42 # HANGUL SYLLABLE PIEUP-WAE-CIEUC
-0x9489 0xBD43 # HANGUL SYLLABLE PIEUP-WAE-CHIEUCH
-0x948A 0xBD44 # HANGUL SYLLABLE PIEUP-WAE-KHIEUKH
-0x948B 0xBD45 # HANGUL SYLLABLE PIEUP-WAE-THIEUTH
-0x948C 0xBD46 # HANGUL SYLLABLE PIEUP-WAE-PHIEUPH
-0x948D 0xBD47 # HANGUL SYLLABLE PIEUP-WAE-HIEUH
-0x948E 0xBD4A # HANGUL SYLLABLE PIEUP-OE-SSANGKIYEOK
-0x948F 0xBD4B # HANGUL SYLLABLE PIEUP-OE-KIYEOKSIOS
-0x9490 0xBD4D # HANGUL SYLLABLE PIEUP-OE-NIEUNCIEUC
-0x9491 0xBD4E # HANGUL SYLLABLE PIEUP-OE-NIEUNHIEUH
-0x9492 0xBD4F # HANGUL SYLLABLE PIEUP-OE-TIKEUT
-0x9493 0xBD51 # HANGUL SYLLABLE PIEUP-OE-RIEULKIYEOK
-0x9494 0xBD52 # HANGUL SYLLABLE PIEUP-OE-RIEULMIEUM
-0x9495 0xBD53 # HANGUL SYLLABLE PIEUP-OE-RIEULPIEUP
-0x9496 0xBD54 # HANGUL SYLLABLE PIEUP-OE-RIEULSIOS
-0x9497 0xBD55 # HANGUL SYLLABLE PIEUP-OE-RIEULTHIEUTH
-0x9498 0xBD56 # HANGUL SYLLABLE PIEUP-OE-RIEULPHIEUPH
-0x9499 0xBD57 # HANGUL SYLLABLE PIEUP-OE-RIEULHIEUH
-0x949A 0xBD5A # HANGUL SYLLABLE PIEUP-OE-PIEUPSIOS
-0x949B 0xBD5B # HANGUL SYLLABLE PIEUP-OE-SIOS
-0x949C 0xBD5C # HANGUL SYLLABLE PIEUP-OE-SSANGSIOS
-0x949D 0xBD5D # HANGUL SYLLABLE PIEUP-OE-IEUNG
-0x949E 0xBD5E # HANGUL SYLLABLE PIEUP-OE-CIEUC
-0x949F 0xBD5F # HANGUL SYLLABLE PIEUP-OE-CHIEUCH
-0x94A0 0xBD60 # HANGUL SYLLABLE PIEUP-OE-KHIEUKH
-0x94A1 0xBD61 # HANGUL SYLLABLE PIEUP-OE-THIEUTH
-0x94A2 0xBD62 # HANGUL SYLLABLE PIEUP-OE-PHIEUPH
-0x94A3 0xBD63 # HANGUL SYLLABLE PIEUP-OE-HIEUH
-0x94A4 0xBD65 # HANGUL SYLLABLE PIEUP-YO-KIYEOK
-0x94A5 0xBD66 # HANGUL SYLLABLE PIEUP-YO-SSANGKIYEOK
-0x94A6 0xBD67 # HANGUL SYLLABLE PIEUP-YO-KIYEOKSIOS
-0x94A7 0xBD69 # HANGUL SYLLABLE PIEUP-YO-NIEUNCIEUC
-0x94A8 0xBD6A # HANGUL SYLLABLE PIEUP-YO-NIEUNHIEUH
-0x94A9 0xBD6B # HANGUL SYLLABLE PIEUP-YO-TIKEUT
-0x94AA 0xBD6C # HANGUL SYLLABLE PIEUP-YO-RIEUL
-0x94AB 0xBD6D # HANGUL SYLLABLE PIEUP-YO-RIEULKIYEOK
-0x94AC 0xBD6E # HANGUL SYLLABLE PIEUP-YO-RIEULMIEUM
-0x94AD 0xBD6F # HANGUL SYLLABLE PIEUP-YO-RIEULPIEUP
-0x94AE 0xBD70 # HANGUL SYLLABLE PIEUP-YO-RIEULSIOS
-0x94AF 0xBD71 # HANGUL SYLLABLE PIEUP-YO-RIEULTHIEUTH
-0x94B0 0xBD72 # HANGUL SYLLABLE PIEUP-YO-RIEULPHIEUPH
-0x94B1 0xBD73 # HANGUL SYLLABLE PIEUP-YO-RIEULHIEUH
-0x94B2 0xBD74 # HANGUL SYLLABLE PIEUP-YO-MIEUM
-0x94B3 0xBD75 # HANGUL SYLLABLE PIEUP-YO-PIEUP
-0x94B4 0xBD76 # HANGUL SYLLABLE PIEUP-YO-PIEUPSIOS
-0x94B5 0xBD77 # HANGUL SYLLABLE PIEUP-YO-SIOS
-0x94B6 0xBD78 # HANGUL SYLLABLE PIEUP-YO-SSANGSIOS
-0x94B7 0xBD79 # HANGUL SYLLABLE PIEUP-YO-IEUNG
-0x94B8 0xBD7A # HANGUL SYLLABLE PIEUP-YO-CIEUC
-0x94B9 0xBD7B # HANGUL SYLLABLE PIEUP-YO-CHIEUCH
-0x94BA 0xBD7C # HANGUL SYLLABLE PIEUP-YO-KHIEUKH
-0x94BB 0xBD7D # HANGUL SYLLABLE PIEUP-YO-THIEUTH
-0x94BC 0xBD7E # HANGUL SYLLABLE PIEUP-YO-PHIEUPH
-0x94BD 0xBD7F # HANGUL SYLLABLE PIEUP-YO-HIEUH
-0x94BE 0xBD82 # HANGUL SYLLABLE PIEUP-U-SSANGKIYEOK
-0x94BF 0xBD83 # HANGUL SYLLABLE PIEUP-U-KIYEOKSIOS
-0x94C0 0xBD85 # HANGUL SYLLABLE PIEUP-U-NIEUNCIEUC
-0x94C1 0xBD86 # HANGUL SYLLABLE PIEUP-U-NIEUNHIEUH
-0x94C2 0xBD8B # HANGUL SYLLABLE PIEUP-U-RIEULPIEUP
-0x94C3 0xBD8C # HANGUL SYLLABLE PIEUP-U-RIEULSIOS
-0x94C4 0xBD8D # HANGUL SYLLABLE PIEUP-U-RIEULTHIEUTH
-0x94C5 0xBD8E # HANGUL SYLLABLE PIEUP-U-RIEULPHIEUPH
-0x94C6 0xBD8F # HANGUL SYLLABLE PIEUP-U-RIEULHIEUH
-0x94C7 0xBD92 # HANGUL SYLLABLE PIEUP-U-PIEUPSIOS
-0x94C8 0xBD94 # HANGUL SYLLABLE PIEUP-U-SSANGSIOS
-0x94C9 0xBD96 # HANGUL SYLLABLE PIEUP-U-CIEUC
-0x94CA 0xBD97 # HANGUL SYLLABLE PIEUP-U-CHIEUCH
-0x94CB 0xBD98 # HANGUL SYLLABLE PIEUP-U-KHIEUKH
-0x94CC 0xBD9B # HANGUL SYLLABLE PIEUP-U-HIEUH
-0x94CD 0xBD9D # HANGUL SYLLABLE PIEUP-WEO-KIYEOK
-0x94CE 0xBD9E # HANGUL SYLLABLE PIEUP-WEO-SSANGKIYEOK
-0x94CF 0xBD9F # HANGUL SYLLABLE PIEUP-WEO-KIYEOKSIOS
-0x94D0 0xBDA0 # HANGUL SYLLABLE PIEUP-WEO-NIEUN
-0x94D1 0xBDA1 # HANGUL SYLLABLE PIEUP-WEO-NIEUNCIEUC
-0x94D2 0xBDA2 # HANGUL SYLLABLE PIEUP-WEO-NIEUNHIEUH
-0x94D3 0xBDA3 # HANGUL SYLLABLE PIEUP-WEO-TIKEUT
-0x94D4 0xBDA5 # HANGUL SYLLABLE PIEUP-WEO-RIEULKIYEOK
-0x94D5 0xBDA6 # HANGUL SYLLABLE PIEUP-WEO-RIEULMIEUM
-0x94D6 0xBDA7 # HANGUL SYLLABLE PIEUP-WEO-RIEULPIEUP
-0x94D7 0xBDA8 # HANGUL SYLLABLE PIEUP-WEO-RIEULSIOS
-0x94D8 0xBDA9 # HANGUL SYLLABLE PIEUP-WEO-RIEULTHIEUTH
-0x94D9 0xBDAA # HANGUL SYLLABLE PIEUP-WEO-RIEULPHIEUPH
-0x94DA 0xBDAB # HANGUL SYLLABLE PIEUP-WEO-RIEULHIEUH
-0x94DB 0xBDAC # HANGUL SYLLABLE PIEUP-WEO-MIEUM
-0x94DC 0xBDAD # HANGUL SYLLABLE PIEUP-WEO-PIEUP
-0x94DD 0xBDAE # HANGUL SYLLABLE PIEUP-WEO-PIEUPSIOS
-0x94DE 0xBDAF # HANGUL SYLLABLE PIEUP-WEO-SIOS
-0x94DF 0xBDB1 # HANGUL SYLLABLE PIEUP-WEO-IEUNG
-0x94E0 0xBDB2 # HANGUL SYLLABLE PIEUP-WEO-CIEUC
-0x94E1 0xBDB3 # HANGUL SYLLABLE PIEUP-WEO-CHIEUCH
-0x94E2 0xBDB4 # HANGUL SYLLABLE PIEUP-WEO-KHIEUKH
-0x94E3 0xBDB5 # HANGUL SYLLABLE PIEUP-WEO-THIEUTH
-0x94E4 0xBDB6 # HANGUL SYLLABLE PIEUP-WEO-PHIEUPH
-0x94E5 0xBDB7 # HANGUL SYLLABLE PIEUP-WEO-HIEUH
-0x94E6 0xBDB9 # HANGUL SYLLABLE PIEUP-WE-KIYEOK
-0x94E7 0xBDBA # HANGUL SYLLABLE PIEUP-WE-SSANGKIYEOK
-0x94E8 0xBDBB # HANGUL SYLLABLE PIEUP-WE-KIYEOKSIOS
-0x94E9 0xBDBC # HANGUL SYLLABLE PIEUP-WE-NIEUN
-0x94EA 0xBDBD # HANGUL SYLLABLE PIEUP-WE-NIEUNCIEUC
-0x94EB 0xBDBE # HANGUL SYLLABLE PIEUP-WE-NIEUNHIEUH
-0x94EC 0xBDBF # HANGUL SYLLABLE PIEUP-WE-TIKEUT
-0x94ED 0xBDC0 # HANGUL SYLLABLE PIEUP-WE-RIEUL
-0x94EE 0xBDC1 # HANGUL SYLLABLE PIEUP-WE-RIEULKIYEOK
-0x94EF 0xBDC2 # HANGUL SYLLABLE PIEUP-WE-RIEULMIEUM
-0x94F0 0xBDC3 # HANGUL SYLLABLE PIEUP-WE-RIEULPIEUP
-0x94F1 0xBDC4 # HANGUL SYLLABLE PIEUP-WE-RIEULSIOS
-0x94F2 0xBDC5 # HANGUL SYLLABLE PIEUP-WE-RIEULTHIEUTH
-0x94F3 0xBDC6 # HANGUL SYLLABLE PIEUP-WE-RIEULPHIEUPH
-0x94F4 0xBDC7 # HANGUL SYLLABLE PIEUP-WE-RIEULHIEUH
-0x94F5 0xBDC8 # HANGUL SYLLABLE PIEUP-WE-MIEUM
-0x94F6 0xBDC9 # HANGUL SYLLABLE PIEUP-WE-PIEUP
-0x94F7 0xBDCA # HANGUL SYLLABLE PIEUP-WE-PIEUPSIOS
-0x94F8 0xBDCB # HANGUL SYLLABLE PIEUP-WE-SIOS
-0x94F9 0xBDCC # HANGUL SYLLABLE PIEUP-WE-SSANGSIOS
-0x94FA 0xBDCD # HANGUL SYLLABLE PIEUP-WE-IEUNG
-0x94FB 0xBDCE # HANGUL SYLLABLE PIEUP-WE-CIEUC
-0x94FC 0xBDCF # HANGUL SYLLABLE PIEUP-WE-CHIEUCH
-0x94FD 0xBDD0 # HANGUL SYLLABLE PIEUP-WE-KHIEUKH
-0x94FE 0xBDD1 # HANGUL SYLLABLE PIEUP-WE-THIEUTH
-0x9541 0xBDD2 # HANGUL SYLLABLE PIEUP-WE-PHIEUPH
-0x9542 0xBDD3 # HANGUL SYLLABLE PIEUP-WE-HIEUH
-0x9543 0xBDD6 # HANGUL SYLLABLE PIEUP-WI-SSANGKIYEOK
-0x9544 0xBDD7 # HANGUL SYLLABLE PIEUP-WI-KIYEOKSIOS
-0x9545 0xBDD9 # HANGUL SYLLABLE PIEUP-WI-NIEUNCIEUC
-0x9546 0xBDDA # HANGUL SYLLABLE PIEUP-WI-NIEUNHIEUH
-0x9547 0xBDDB # HANGUL SYLLABLE PIEUP-WI-TIKEUT
-0x9548 0xBDDD # HANGUL SYLLABLE PIEUP-WI-RIEULKIYEOK
-0x9549 0xBDDE # HANGUL SYLLABLE PIEUP-WI-RIEULMIEUM
-0x954A 0xBDDF # HANGUL SYLLABLE PIEUP-WI-RIEULPIEUP
-0x954B 0xBDE0 # HANGUL SYLLABLE PIEUP-WI-RIEULSIOS
-0x954C 0xBDE1 # HANGUL SYLLABLE PIEUP-WI-RIEULTHIEUTH
-0x954D 0xBDE2 # HANGUL SYLLABLE PIEUP-WI-RIEULPHIEUPH
-0x954E 0xBDE3 # HANGUL SYLLABLE PIEUP-WI-RIEULHIEUH
-0x954F 0xBDE4 # HANGUL SYLLABLE PIEUP-WI-MIEUM
-0x9550 0xBDE5 # HANGUL SYLLABLE PIEUP-WI-PIEUP
-0x9551 0xBDE6 # HANGUL SYLLABLE PIEUP-WI-PIEUPSIOS
-0x9552 0xBDE7 # HANGUL SYLLABLE PIEUP-WI-SIOS
-0x9553 0xBDE8 # HANGUL SYLLABLE PIEUP-WI-SSANGSIOS
-0x9554 0xBDEA # HANGUL SYLLABLE PIEUP-WI-CIEUC
-0x9555 0xBDEB # HANGUL SYLLABLE PIEUP-WI-CHIEUCH
-0x9556 0xBDEC # HANGUL SYLLABLE PIEUP-WI-KHIEUKH
-0x9557 0xBDED # HANGUL SYLLABLE PIEUP-WI-THIEUTH
-0x9558 0xBDEE # HANGUL SYLLABLE PIEUP-WI-PHIEUPH
-0x9559 0xBDEF # HANGUL SYLLABLE PIEUP-WI-HIEUH
-0x955A 0xBDF1 # HANGUL SYLLABLE PIEUP-YU-KIYEOK
-0x9561 0xBDF2 # HANGUL SYLLABLE PIEUP-YU-SSANGKIYEOK
-0x9562 0xBDF3 # HANGUL SYLLABLE PIEUP-YU-KIYEOKSIOS
-0x9563 0xBDF5 # HANGUL SYLLABLE PIEUP-YU-NIEUNCIEUC
-0x9564 0xBDF6 # HANGUL SYLLABLE PIEUP-YU-NIEUNHIEUH
-0x9565 0xBDF7 # HANGUL SYLLABLE PIEUP-YU-TIKEUT
-0x9566 0xBDF9 # HANGUL SYLLABLE PIEUP-YU-RIEULKIYEOK
-0x9567 0xBDFA # HANGUL SYLLABLE PIEUP-YU-RIEULMIEUM
-0x9568 0xBDFB # HANGUL SYLLABLE PIEUP-YU-RIEULPIEUP
-0x9569 0xBDFC # HANGUL SYLLABLE PIEUP-YU-RIEULSIOS
-0x956A 0xBDFD # HANGUL SYLLABLE PIEUP-YU-RIEULTHIEUTH
-0x956B 0xBDFE # HANGUL SYLLABLE PIEUP-YU-RIEULPHIEUPH
-0x956C 0xBDFF # HANGUL SYLLABLE PIEUP-YU-RIEULHIEUH
-0x956D 0xBE01 # HANGUL SYLLABLE PIEUP-YU-PIEUP
-0x956E 0xBE02 # HANGUL SYLLABLE PIEUP-YU-PIEUPSIOS
-0x956F 0xBE04 # HANGUL SYLLABLE PIEUP-YU-SSANGSIOS
-0x9570 0xBE06 # HANGUL SYLLABLE PIEUP-YU-CIEUC
-0x9571 0xBE07 # HANGUL SYLLABLE PIEUP-YU-CHIEUCH
-0x9572 0xBE08 # HANGUL SYLLABLE PIEUP-YU-KHIEUKH
-0x9573 0xBE09 # HANGUL SYLLABLE PIEUP-YU-THIEUTH
-0x9574 0xBE0A # HANGUL SYLLABLE PIEUP-YU-PHIEUPH
-0x9575 0xBE0B # HANGUL SYLLABLE PIEUP-YU-HIEUH
-0x9576 0xBE0E # HANGUL SYLLABLE PIEUP-EU-SSANGKIYEOK
-0x9577 0xBE0F # HANGUL SYLLABLE PIEUP-EU-KIYEOKSIOS
-0x9578 0xBE11 # HANGUL SYLLABLE PIEUP-EU-NIEUNCIEUC
-0x9579 0xBE12 # HANGUL SYLLABLE PIEUP-EU-NIEUNHIEUH
-0x957A 0xBE13 # HANGUL SYLLABLE PIEUP-EU-TIKEUT
-0x9581 0xBE15 # HANGUL SYLLABLE PIEUP-EU-RIEULKIYEOK
-0x9582 0xBE16 # HANGUL SYLLABLE PIEUP-EU-RIEULMIEUM
-0x9583 0xBE17 # HANGUL SYLLABLE PIEUP-EU-RIEULPIEUP
-0x9584 0xBE18 # HANGUL SYLLABLE PIEUP-EU-RIEULSIOS
-0x9585 0xBE19 # HANGUL SYLLABLE PIEUP-EU-RIEULTHIEUTH
-0x9586 0xBE1A # HANGUL SYLLABLE PIEUP-EU-RIEULPHIEUPH
-0x9587 0xBE1B # HANGUL SYLLABLE PIEUP-EU-RIEULHIEUH
-0x9588 0xBE1E # HANGUL SYLLABLE PIEUP-EU-PIEUPSIOS
-0x9589 0xBE20 # HANGUL SYLLABLE PIEUP-EU-SSANGSIOS
-0x958A 0xBE21 # HANGUL SYLLABLE PIEUP-EU-IEUNG
-0x958B 0xBE22 # HANGUL SYLLABLE PIEUP-EU-CIEUC
-0x958C 0xBE23 # HANGUL SYLLABLE PIEUP-EU-CHIEUCH
-0x958D 0xBE24 # HANGUL SYLLABLE PIEUP-EU-KHIEUKH
-0x958E 0xBE25 # HANGUL SYLLABLE PIEUP-EU-THIEUTH
-0x958F 0xBE26 # HANGUL SYLLABLE PIEUP-EU-PHIEUPH
-0x9590 0xBE27 # HANGUL SYLLABLE PIEUP-EU-HIEUH
-0x9591 0xBE28 # HANGUL SYLLABLE PIEUP-YI
-0x9592 0xBE29 # HANGUL SYLLABLE PIEUP-YI-KIYEOK
-0x9593 0xBE2A # HANGUL SYLLABLE PIEUP-YI-SSANGKIYEOK
-0x9594 0xBE2B # HANGUL SYLLABLE PIEUP-YI-KIYEOKSIOS
-0x9595 0xBE2C # HANGUL SYLLABLE PIEUP-YI-NIEUN
-0x9596 0xBE2D # HANGUL SYLLABLE PIEUP-YI-NIEUNCIEUC
-0x9597 0xBE2E # HANGUL SYLLABLE PIEUP-YI-NIEUNHIEUH
-0x9598 0xBE2F # HANGUL SYLLABLE PIEUP-YI-TIKEUT
-0x9599 0xBE30 # HANGUL SYLLABLE PIEUP-YI-RIEUL
-0x959A 0xBE31 # HANGUL SYLLABLE PIEUP-YI-RIEULKIYEOK
-0x959B 0xBE32 # HANGUL SYLLABLE PIEUP-YI-RIEULMIEUM
-0x959C 0xBE33 # HANGUL SYLLABLE PIEUP-YI-RIEULPIEUP
-0x959D 0xBE34 # HANGUL SYLLABLE PIEUP-YI-RIEULSIOS
-0x959E 0xBE35 # HANGUL SYLLABLE PIEUP-YI-RIEULTHIEUTH
-0x959F 0xBE36 # HANGUL SYLLABLE PIEUP-YI-RIEULPHIEUPH
-0x95A0 0xBE37 # HANGUL SYLLABLE PIEUP-YI-RIEULHIEUH
-0x95A1 0xBE38 # HANGUL SYLLABLE PIEUP-YI-MIEUM
-0x95A2 0xBE39 # HANGUL SYLLABLE PIEUP-YI-PIEUP
-0x95A3 0xBE3A # HANGUL SYLLABLE PIEUP-YI-PIEUPSIOS
-0x95A4 0xBE3B # HANGUL SYLLABLE PIEUP-YI-SIOS
-0x95A5 0xBE3C # HANGUL SYLLABLE PIEUP-YI-SSANGSIOS
-0x95A6 0xBE3D # HANGUL SYLLABLE PIEUP-YI-IEUNG
-0x95A7 0xBE3E # HANGUL SYLLABLE PIEUP-YI-CIEUC
-0x95A8 0xBE3F # HANGUL SYLLABLE PIEUP-YI-CHIEUCH
-0x95A9 0xBE40 # HANGUL SYLLABLE PIEUP-YI-KHIEUKH
-0x95AA 0xBE41 # HANGUL SYLLABLE PIEUP-YI-THIEUTH
-0x95AB 0xBE42 # HANGUL SYLLABLE PIEUP-YI-PHIEUPH
-0x95AC 0xBE43 # HANGUL SYLLABLE PIEUP-YI-HIEUH
-0x95AD 0xBE46 # HANGUL SYLLABLE PIEUP-I-SSANGKIYEOK
-0x95AE 0xBE47 # HANGUL SYLLABLE PIEUP-I-KIYEOKSIOS
-0x95AF 0xBE49 # HANGUL SYLLABLE PIEUP-I-NIEUNCIEUC
-0x95B0 0xBE4A # HANGUL SYLLABLE PIEUP-I-NIEUNHIEUH
-0x95B1 0xBE4B # HANGUL SYLLABLE PIEUP-I-TIKEUT
-0x95B2 0xBE4D # HANGUL SYLLABLE PIEUP-I-RIEULKIYEOK
-0x95B3 0xBE4F # HANGUL SYLLABLE PIEUP-I-RIEULPIEUP
-0x95B4 0xBE50 # HANGUL SYLLABLE PIEUP-I-RIEULSIOS
-0x95B5 0xBE51 # HANGUL SYLLABLE PIEUP-I-RIEULTHIEUTH
-0x95B6 0xBE52 # HANGUL SYLLABLE PIEUP-I-RIEULPHIEUPH
-0x95B7 0xBE53 # HANGUL SYLLABLE PIEUP-I-RIEULHIEUH
-0x95B8 0xBE56 # HANGUL SYLLABLE PIEUP-I-PIEUPSIOS
-0x95B9 0xBE58 # HANGUL SYLLABLE PIEUP-I-SSANGSIOS
-0x95BA 0xBE5C # HANGUL SYLLABLE PIEUP-I-KHIEUKH
-0x95BB 0xBE5D # HANGUL SYLLABLE PIEUP-I-THIEUTH
-0x95BC 0xBE5E # HANGUL SYLLABLE PIEUP-I-PHIEUPH
-0x95BD 0xBE5F # HANGUL SYLLABLE PIEUP-I-HIEUH
-0x95BE 0xBE62 # HANGUL SYLLABLE SSANGPIEUP-A-SSANGKIYEOK
-0x95BF 0xBE63 # HANGUL SYLLABLE SSANGPIEUP-A-KIYEOKSIOS
-0x95C0 0xBE65 # HANGUL SYLLABLE SSANGPIEUP-A-NIEUNCIEUC
-0x95C1 0xBE66 # HANGUL SYLLABLE SSANGPIEUP-A-NIEUNHIEUH
-0x95C2 0xBE67 # HANGUL SYLLABLE SSANGPIEUP-A-TIKEUT
-0x95C3 0xBE69 # HANGUL SYLLABLE SSANGPIEUP-A-RIEULKIYEOK
-0x95C4 0xBE6B # HANGUL SYLLABLE SSANGPIEUP-A-RIEULPIEUP
-0x95C5 0xBE6C # HANGUL SYLLABLE SSANGPIEUP-A-RIEULSIOS
-0x95C6 0xBE6D # HANGUL SYLLABLE SSANGPIEUP-A-RIEULTHIEUTH
-0x95C7 0xBE6E # HANGUL SYLLABLE SSANGPIEUP-A-RIEULPHIEUPH
-0x95C8 0xBE6F # HANGUL SYLLABLE SSANGPIEUP-A-RIEULHIEUH
-0x95C9 0xBE72 # HANGUL SYLLABLE SSANGPIEUP-A-PIEUPSIOS
-0x95CA 0xBE76 # HANGUL SYLLABLE SSANGPIEUP-A-CIEUC
-0x95CB 0xBE77 # HANGUL SYLLABLE SSANGPIEUP-A-CHIEUCH
-0x95CC 0xBE78 # HANGUL SYLLABLE SSANGPIEUP-A-KHIEUKH
-0x95CD 0xBE79 # HANGUL SYLLABLE SSANGPIEUP-A-THIEUTH
-0x95CE 0xBE7A # HANGUL SYLLABLE SSANGPIEUP-A-PHIEUPH
-0x95CF 0xBE7E # HANGUL SYLLABLE SSANGPIEUP-AE-SSANGKIYEOK
-0x95D0 0xBE7F # HANGUL SYLLABLE SSANGPIEUP-AE-KIYEOKSIOS
-0x95D1 0xBE81 # HANGUL SYLLABLE SSANGPIEUP-AE-NIEUNCIEUC
-0x95D2 0xBE82 # HANGUL SYLLABLE SSANGPIEUP-AE-NIEUNHIEUH
-0x95D3 0xBE83 # HANGUL SYLLABLE SSANGPIEUP-AE-TIKEUT
-0x95D4 0xBE85 # HANGUL SYLLABLE SSANGPIEUP-AE-RIEULKIYEOK
-0x95D5 0xBE86 # HANGUL SYLLABLE SSANGPIEUP-AE-RIEULMIEUM
-0x95D6 0xBE87 # HANGUL SYLLABLE SSANGPIEUP-AE-RIEULPIEUP
-0x95D7 0xBE88 # HANGUL SYLLABLE SSANGPIEUP-AE-RIEULSIOS
-0x95D8 0xBE89 # HANGUL SYLLABLE SSANGPIEUP-AE-RIEULTHIEUTH
-0x95D9 0xBE8A # HANGUL SYLLABLE SSANGPIEUP-AE-RIEULPHIEUPH
-0x95DA 0xBE8B # HANGUL SYLLABLE SSANGPIEUP-AE-RIEULHIEUH
-0x95DB 0xBE8E # HANGUL SYLLABLE SSANGPIEUP-AE-PIEUPSIOS
-0x95DC 0xBE92 # HANGUL SYLLABLE SSANGPIEUP-AE-CIEUC
-0x95DD 0xBE93 # HANGUL SYLLABLE SSANGPIEUP-AE-CHIEUCH
-0x95DE 0xBE94 # HANGUL SYLLABLE SSANGPIEUP-AE-KHIEUKH
-0x95DF 0xBE95 # HANGUL SYLLABLE SSANGPIEUP-AE-THIEUTH
-0x95E0 0xBE96 # HANGUL SYLLABLE SSANGPIEUP-AE-PHIEUPH
-0x95E1 0xBE97 # HANGUL SYLLABLE SSANGPIEUP-AE-HIEUH
-0x95E2 0xBE9A # HANGUL SYLLABLE SSANGPIEUP-YA-SSANGKIYEOK
-0x95E3 0xBE9B # HANGUL SYLLABLE SSANGPIEUP-YA-KIYEOKSIOS
-0x95E4 0xBE9C # HANGUL SYLLABLE SSANGPIEUP-YA-NIEUN
-0x95E5 0xBE9D # HANGUL SYLLABLE SSANGPIEUP-YA-NIEUNCIEUC
-0x95E6 0xBE9E # HANGUL SYLLABLE SSANGPIEUP-YA-NIEUNHIEUH
-0x95E7 0xBE9F # HANGUL SYLLABLE SSANGPIEUP-YA-TIKEUT
-0x95E8 0xBEA0 # HANGUL SYLLABLE SSANGPIEUP-YA-RIEUL
-0x95E9 0xBEA1 # HANGUL SYLLABLE SSANGPIEUP-YA-RIEULKIYEOK
-0x95EA 0xBEA2 # HANGUL SYLLABLE SSANGPIEUP-YA-RIEULMIEUM
-0x95EB 0xBEA3 # HANGUL SYLLABLE SSANGPIEUP-YA-RIEULPIEUP
-0x95EC 0xBEA4 # HANGUL SYLLABLE SSANGPIEUP-YA-RIEULSIOS
-0x95ED 0xBEA5 # HANGUL SYLLABLE SSANGPIEUP-YA-RIEULTHIEUTH
-0x95EE 0xBEA6 # HANGUL SYLLABLE SSANGPIEUP-YA-RIEULPHIEUPH
-0x95EF 0xBEA7 # HANGUL SYLLABLE SSANGPIEUP-YA-RIEULHIEUH
-0x95F0 0xBEA9 # HANGUL SYLLABLE SSANGPIEUP-YA-PIEUP
-0x95F1 0xBEAA # HANGUL SYLLABLE SSANGPIEUP-YA-PIEUPSIOS
-0x95F2 0xBEAB # HANGUL SYLLABLE SSANGPIEUP-YA-SIOS
-0x95F3 0xBEAC # HANGUL SYLLABLE SSANGPIEUP-YA-SSANGSIOS
-0x95F4 0xBEAD # HANGUL SYLLABLE SSANGPIEUP-YA-IEUNG
-0x95F5 0xBEAE # HANGUL SYLLABLE SSANGPIEUP-YA-CIEUC
-0x95F6 0xBEAF # HANGUL SYLLABLE SSANGPIEUP-YA-CHIEUCH
-0x95F7 0xBEB0 # HANGUL SYLLABLE SSANGPIEUP-YA-KHIEUKH
-0x95F8 0xBEB1 # HANGUL SYLLABLE SSANGPIEUP-YA-THIEUTH
-0x95F9 0xBEB2 # HANGUL SYLLABLE SSANGPIEUP-YA-PHIEUPH
-0x95FA 0xBEB3 # HANGUL SYLLABLE SSANGPIEUP-YA-HIEUH
-0x95FB 0xBEB4 # HANGUL SYLLABLE SSANGPIEUP-YAE
-0x95FC 0xBEB5 # HANGUL SYLLABLE SSANGPIEUP-YAE-KIYEOK
-0x95FD 0xBEB6 # HANGUL SYLLABLE SSANGPIEUP-YAE-SSANGKIYEOK
-0x95FE 0xBEB7 # HANGUL SYLLABLE SSANGPIEUP-YAE-KIYEOKSIOS
-0x9641 0xBEB8 # HANGUL SYLLABLE SSANGPIEUP-YAE-NIEUN
-0x9642 0xBEB9 # HANGUL SYLLABLE SSANGPIEUP-YAE-NIEUNCIEUC
-0x9643 0xBEBA # HANGUL SYLLABLE SSANGPIEUP-YAE-NIEUNHIEUH
-0x9644 0xBEBB # HANGUL SYLLABLE SSANGPIEUP-YAE-TIKEUT
-0x9645 0xBEBC # HANGUL SYLLABLE SSANGPIEUP-YAE-RIEUL
-0x9646 0xBEBD # HANGUL SYLLABLE SSANGPIEUP-YAE-RIEULKIYEOK
-0x9647 0xBEBE # HANGUL SYLLABLE SSANGPIEUP-YAE-RIEULMIEUM
-0x9648 0xBEBF # HANGUL SYLLABLE SSANGPIEUP-YAE-RIEULPIEUP
-0x9649 0xBEC0 # HANGUL SYLLABLE SSANGPIEUP-YAE-RIEULSIOS
-0x964A 0xBEC1 # HANGUL SYLLABLE SSANGPIEUP-YAE-RIEULTHIEUTH
-0x964B 0xBEC2 # HANGUL SYLLABLE SSANGPIEUP-YAE-RIEULPHIEUPH
-0x964C 0xBEC3 # HANGUL SYLLABLE SSANGPIEUP-YAE-RIEULHIEUH
-0x964D 0xBEC4 # HANGUL SYLLABLE SSANGPIEUP-YAE-MIEUM
-0x964E 0xBEC5 # HANGUL SYLLABLE SSANGPIEUP-YAE-PIEUP
-0x964F 0xBEC6 # HANGUL SYLLABLE SSANGPIEUP-YAE-PIEUPSIOS
-0x9650 0xBEC7 # HANGUL SYLLABLE SSANGPIEUP-YAE-SIOS
-0x9651 0xBEC8 # HANGUL SYLLABLE SSANGPIEUP-YAE-SSANGSIOS
-0x9652 0xBEC9 # HANGUL SYLLABLE SSANGPIEUP-YAE-IEUNG
-0x9653 0xBECA # HANGUL SYLLABLE SSANGPIEUP-YAE-CIEUC
-0x9654 0xBECB # HANGUL SYLLABLE SSANGPIEUP-YAE-CHIEUCH
-0x9655 0xBECC # HANGUL SYLLABLE SSANGPIEUP-YAE-KHIEUKH
-0x9656 0xBECD # HANGUL SYLLABLE SSANGPIEUP-YAE-THIEUTH
-0x9657 0xBECE # HANGUL SYLLABLE SSANGPIEUP-YAE-PHIEUPH
-0x9658 0xBECF # HANGUL SYLLABLE SSANGPIEUP-YAE-HIEUH
-0x9659 0xBED2 # HANGUL SYLLABLE SSANGPIEUP-EO-SSANGKIYEOK
-0x965A 0xBED3 # HANGUL SYLLABLE SSANGPIEUP-EO-KIYEOKSIOS
-0x9661 0xBED5 # HANGUL SYLLABLE SSANGPIEUP-EO-NIEUNCIEUC
-0x9662 0xBED6 # HANGUL SYLLABLE SSANGPIEUP-EO-NIEUNHIEUH
-0x9663 0xBED9 # HANGUL SYLLABLE SSANGPIEUP-EO-RIEULKIYEOK
-0x9664 0xBEDA # HANGUL SYLLABLE SSANGPIEUP-EO-RIEULMIEUM
-0x9665 0xBEDB # HANGUL SYLLABLE SSANGPIEUP-EO-RIEULPIEUP
-0x9666 0xBEDC # HANGUL SYLLABLE SSANGPIEUP-EO-RIEULSIOS
-0x9667 0xBEDD # HANGUL SYLLABLE SSANGPIEUP-EO-RIEULTHIEUTH
-0x9668 0xBEDE # HANGUL SYLLABLE SSANGPIEUP-EO-RIEULPHIEUPH
-0x9669 0xBEDF # HANGUL SYLLABLE SSANGPIEUP-EO-RIEULHIEUH
-0x966A 0xBEE1 # HANGUL SYLLABLE SSANGPIEUP-EO-PIEUP
-0x966B 0xBEE2 # HANGUL SYLLABLE SSANGPIEUP-EO-PIEUPSIOS
-0x966C 0xBEE6 # HANGUL SYLLABLE SSANGPIEUP-EO-CIEUC
-0x966D 0xBEE7 # HANGUL SYLLABLE SSANGPIEUP-EO-CHIEUCH
-0x966E 0xBEE8 # HANGUL SYLLABLE SSANGPIEUP-EO-KHIEUKH
-0x966F 0xBEE9 # HANGUL SYLLABLE SSANGPIEUP-EO-THIEUTH
-0x9670 0xBEEA # HANGUL SYLLABLE SSANGPIEUP-EO-PHIEUPH
-0x9671 0xBEEB # HANGUL SYLLABLE SSANGPIEUP-EO-HIEUH
-0x9672 0xBEED # HANGUL SYLLABLE SSANGPIEUP-E-KIYEOK
-0x9673 0xBEEE # HANGUL SYLLABLE SSANGPIEUP-E-SSANGKIYEOK
-0x9674 0xBEEF # HANGUL SYLLABLE SSANGPIEUP-E-KIYEOKSIOS
-0x9675 0xBEF0 # HANGUL SYLLABLE SSANGPIEUP-E-NIEUN
-0x9676 0xBEF1 # HANGUL SYLLABLE SSANGPIEUP-E-NIEUNCIEUC
-0x9677 0xBEF2 # HANGUL SYLLABLE SSANGPIEUP-E-NIEUNHIEUH
-0x9678 0xBEF3 # HANGUL SYLLABLE SSANGPIEUP-E-TIKEUT
-0x9679 0xBEF4 # HANGUL SYLLABLE SSANGPIEUP-E-RIEUL
-0x967A 0xBEF5 # HANGUL SYLLABLE SSANGPIEUP-E-RIEULKIYEOK
-0x9681 0xBEF6 # HANGUL SYLLABLE SSANGPIEUP-E-RIEULMIEUM
-0x9682 0xBEF7 # HANGUL SYLLABLE SSANGPIEUP-E-RIEULPIEUP
-0x9683 0xBEF8 # HANGUL SYLLABLE SSANGPIEUP-E-RIEULSIOS
-0x9684 0xBEF9 # HANGUL SYLLABLE SSANGPIEUP-E-RIEULTHIEUTH
-0x9685 0xBEFA # HANGUL SYLLABLE SSANGPIEUP-E-RIEULPHIEUPH
-0x9686 0xBEFB # HANGUL SYLLABLE SSANGPIEUP-E-RIEULHIEUH
-0x9687 0xBEFC # HANGUL SYLLABLE SSANGPIEUP-E-MIEUM
-0x9688 0xBEFD # HANGUL SYLLABLE SSANGPIEUP-E-PIEUP
-0x9689 0xBEFE # HANGUL SYLLABLE SSANGPIEUP-E-PIEUPSIOS
-0x968A 0xBEFF # HANGUL SYLLABLE SSANGPIEUP-E-SIOS
-0x968B 0xBF00 # HANGUL SYLLABLE SSANGPIEUP-E-SSANGSIOS
-0x968C 0xBF02 # HANGUL SYLLABLE SSANGPIEUP-E-CIEUC
-0x968D 0xBF03 # HANGUL SYLLABLE SSANGPIEUP-E-CHIEUCH
-0x968E 0xBF04 # HANGUL SYLLABLE SSANGPIEUP-E-KHIEUKH
-0x968F 0xBF05 # HANGUL SYLLABLE SSANGPIEUP-E-THIEUTH
-0x9690 0xBF06 # HANGUL SYLLABLE SSANGPIEUP-E-PHIEUPH
-0x9691 0xBF07 # HANGUL SYLLABLE SSANGPIEUP-E-HIEUH
-0x9692 0xBF0A # HANGUL SYLLABLE SSANGPIEUP-YEO-SSANGKIYEOK
-0x9693 0xBF0B # HANGUL SYLLABLE SSANGPIEUP-YEO-KIYEOKSIOS
-0x9694 0xBF0C # HANGUL SYLLABLE SSANGPIEUP-YEO-NIEUN
-0x9695 0xBF0D # HANGUL SYLLABLE SSANGPIEUP-YEO-NIEUNCIEUC
-0x9696 0xBF0E # HANGUL SYLLABLE SSANGPIEUP-YEO-NIEUNHIEUH
-0x9697 0xBF0F # HANGUL SYLLABLE SSANGPIEUP-YEO-TIKEUT
-0x9698 0xBF10 # HANGUL SYLLABLE SSANGPIEUP-YEO-RIEUL
-0x9699 0xBF11 # HANGUL SYLLABLE SSANGPIEUP-YEO-RIEULKIYEOK
-0x969A 0xBF12 # HANGUL SYLLABLE SSANGPIEUP-YEO-RIEULMIEUM
-0x969B 0xBF13 # HANGUL SYLLABLE SSANGPIEUP-YEO-RIEULPIEUP
-0x969C 0xBF14 # HANGUL SYLLABLE SSANGPIEUP-YEO-RIEULSIOS
-0x969D 0xBF15 # HANGUL SYLLABLE SSANGPIEUP-YEO-RIEULTHIEUTH
-0x969E 0xBF16 # HANGUL SYLLABLE SSANGPIEUP-YEO-RIEULPHIEUPH
-0x969F 0xBF17 # HANGUL SYLLABLE SSANGPIEUP-YEO-RIEULHIEUH
-0x96A0 0xBF1A # HANGUL SYLLABLE SSANGPIEUP-YEO-PIEUPSIOS
-0x96A1 0xBF1E # HANGUL SYLLABLE SSANGPIEUP-YEO-CIEUC
-0x96A2 0xBF1F # HANGUL SYLLABLE SSANGPIEUP-YEO-CHIEUCH
-0x96A3 0xBF20 # HANGUL SYLLABLE SSANGPIEUP-YEO-KHIEUKH
-0x96A4 0xBF21 # HANGUL SYLLABLE SSANGPIEUP-YEO-THIEUTH
-0x96A5 0xBF22 # HANGUL SYLLABLE SSANGPIEUP-YEO-PHIEUPH
-0x96A6 0xBF23 # HANGUL SYLLABLE SSANGPIEUP-YEO-HIEUH
-0x96A7 0xBF24 # HANGUL SYLLABLE SSANGPIEUP-YE
-0x96A8 0xBF25 # HANGUL SYLLABLE SSANGPIEUP-YE-KIYEOK
-0x96A9 0xBF26 # HANGUL SYLLABLE SSANGPIEUP-YE-SSANGKIYEOK
-0x96AA 0xBF27 # HANGUL SYLLABLE SSANGPIEUP-YE-KIYEOKSIOS
-0x96AB 0xBF28 # HANGUL SYLLABLE SSANGPIEUP-YE-NIEUN
-0x96AC 0xBF29 # HANGUL SYLLABLE SSANGPIEUP-YE-NIEUNCIEUC
-0x96AD 0xBF2A # HANGUL SYLLABLE SSANGPIEUP-YE-NIEUNHIEUH
-0x96AE 0xBF2B # HANGUL SYLLABLE SSANGPIEUP-YE-TIKEUT
-0x96AF 0xBF2C # HANGUL SYLLABLE SSANGPIEUP-YE-RIEUL
-0x96B0 0xBF2D # HANGUL SYLLABLE SSANGPIEUP-YE-RIEULKIYEOK
-0x96B1 0xBF2E # HANGUL SYLLABLE SSANGPIEUP-YE-RIEULMIEUM
-0x96B2 0xBF2F # HANGUL SYLLABLE SSANGPIEUP-YE-RIEULPIEUP
-0x96B3 0xBF30 # HANGUL SYLLABLE SSANGPIEUP-YE-RIEULSIOS
-0x96B4 0xBF31 # HANGUL SYLLABLE SSANGPIEUP-YE-RIEULTHIEUTH
-0x96B5 0xBF32 # HANGUL SYLLABLE SSANGPIEUP-YE-RIEULPHIEUPH
-0x96B6 0xBF33 # HANGUL SYLLABLE SSANGPIEUP-YE-RIEULHIEUH
-0x96B7 0xBF34 # HANGUL SYLLABLE SSANGPIEUP-YE-MIEUM
-0x96B8 0xBF35 # HANGUL SYLLABLE SSANGPIEUP-YE-PIEUP
-0x96B9 0xBF36 # HANGUL SYLLABLE SSANGPIEUP-YE-PIEUPSIOS
-0x96BA 0xBF37 # HANGUL SYLLABLE SSANGPIEUP-YE-SIOS
-0x96BB 0xBF38 # HANGUL SYLLABLE SSANGPIEUP-YE-SSANGSIOS
-0x96BC 0xBF39 # HANGUL SYLLABLE SSANGPIEUP-YE-IEUNG
-0x96BD 0xBF3A # HANGUL SYLLABLE SSANGPIEUP-YE-CIEUC
-0x96BE 0xBF3B # HANGUL SYLLABLE SSANGPIEUP-YE-CHIEUCH
-0x96BF 0xBF3C # HANGUL SYLLABLE SSANGPIEUP-YE-KHIEUKH
-0x96C0 0xBF3D # HANGUL SYLLABLE SSANGPIEUP-YE-THIEUTH
-0x96C1 0xBF3E # HANGUL SYLLABLE SSANGPIEUP-YE-PHIEUPH
-0x96C2 0xBF3F # HANGUL SYLLABLE SSANGPIEUP-YE-HIEUH
-0x96C3 0xBF42 # HANGUL SYLLABLE SSANGPIEUP-O-SSANGKIYEOK
-0x96C4 0xBF43 # HANGUL SYLLABLE SSANGPIEUP-O-KIYEOKSIOS
-0x96C5 0xBF45 # HANGUL SYLLABLE SSANGPIEUP-O-NIEUNCIEUC
-0x96C6 0xBF46 # HANGUL SYLLABLE SSANGPIEUP-O-NIEUNHIEUH
-0x96C7 0xBF47 # HANGUL SYLLABLE SSANGPIEUP-O-TIKEUT
-0x96C8 0xBF49 # HANGUL SYLLABLE SSANGPIEUP-O-RIEULKIYEOK
-0x96C9 0xBF4A # HANGUL SYLLABLE SSANGPIEUP-O-RIEULMIEUM
-0x96CA 0xBF4B # HANGUL SYLLABLE SSANGPIEUP-O-RIEULPIEUP
-0x96CB 0xBF4C # HANGUL SYLLABLE SSANGPIEUP-O-RIEULSIOS
-0x96CC 0xBF4D # HANGUL SYLLABLE SSANGPIEUP-O-RIEULTHIEUTH
-0x96CD 0xBF4E # HANGUL SYLLABLE SSANGPIEUP-O-RIEULPHIEUPH
-0x96CE 0xBF4F # HANGUL SYLLABLE SSANGPIEUP-O-RIEULHIEUH
-0x96CF 0xBF52 # HANGUL SYLLABLE SSANGPIEUP-O-PIEUPSIOS
-0x96D0 0xBF53 # HANGUL SYLLABLE SSANGPIEUP-O-SIOS
-0x96D1 0xBF54 # HANGUL SYLLABLE SSANGPIEUP-O-SSANGSIOS
-0x96D2 0xBF56 # HANGUL SYLLABLE SSANGPIEUP-O-CIEUC
-0x96D3 0xBF57 # HANGUL SYLLABLE SSANGPIEUP-O-CHIEUCH
-0x96D4 0xBF58 # HANGUL SYLLABLE SSANGPIEUP-O-KHIEUKH
-0x96D5 0xBF59 # HANGUL SYLLABLE SSANGPIEUP-O-THIEUTH
-0x96D6 0xBF5A # HANGUL SYLLABLE SSANGPIEUP-O-PHIEUPH
-0x96D7 0xBF5B # HANGUL SYLLABLE SSANGPIEUP-O-HIEUH
-0x96D8 0xBF5C # HANGUL SYLLABLE SSANGPIEUP-WA
-0x96D9 0xBF5D # HANGUL SYLLABLE SSANGPIEUP-WA-KIYEOK
-0x96DA 0xBF5E # HANGUL SYLLABLE SSANGPIEUP-WA-SSANGKIYEOK
-0x96DB 0xBF5F # HANGUL SYLLABLE SSANGPIEUP-WA-KIYEOKSIOS
-0x96DC 0xBF60 # HANGUL SYLLABLE SSANGPIEUP-WA-NIEUN
-0x96DD 0xBF61 # HANGUL SYLLABLE SSANGPIEUP-WA-NIEUNCIEUC
-0x96DE 0xBF62 # HANGUL SYLLABLE SSANGPIEUP-WA-NIEUNHIEUH
-0x96DF 0xBF63 # HANGUL SYLLABLE SSANGPIEUP-WA-TIKEUT
-0x96E0 0xBF64 # HANGUL SYLLABLE SSANGPIEUP-WA-RIEUL
-0x96E1 0xBF65 # HANGUL SYLLABLE SSANGPIEUP-WA-RIEULKIYEOK
-0x96E2 0xBF66 # HANGUL SYLLABLE SSANGPIEUP-WA-RIEULMIEUM
-0x96E3 0xBF67 # HANGUL SYLLABLE SSANGPIEUP-WA-RIEULPIEUP
-0x96E4 0xBF68 # HANGUL SYLLABLE SSANGPIEUP-WA-RIEULSIOS
-0x96E5 0xBF69 # HANGUL SYLLABLE SSANGPIEUP-WA-RIEULTHIEUTH
-0x96E6 0xBF6A # HANGUL SYLLABLE SSANGPIEUP-WA-RIEULPHIEUPH
-0x96E7 0xBF6B # HANGUL SYLLABLE SSANGPIEUP-WA-RIEULHIEUH
-0x96E8 0xBF6C # HANGUL SYLLABLE SSANGPIEUP-WA-MIEUM
-0x96E9 0xBF6D # HANGUL SYLLABLE SSANGPIEUP-WA-PIEUP
-0x96EA 0xBF6E # HANGUL SYLLABLE SSANGPIEUP-WA-PIEUPSIOS
-0x96EB 0xBF6F # HANGUL SYLLABLE SSANGPIEUP-WA-SIOS
-0x96EC 0xBF70 # HANGUL SYLLABLE SSANGPIEUP-WA-SSANGSIOS
-0x96ED 0xBF71 # HANGUL SYLLABLE SSANGPIEUP-WA-IEUNG
-0x96EE 0xBF72 # HANGUL SYLLABLE SSANGPIEUP-WA-CIEUC
-0x96EF 0xBF73 # HANGUL SYLLABLE SSANGPIEUP-WA-CHIEUCH
-0x96F0 0xBF74 # HANGUL SYLLABLE SSANGPIEUP-WA-KHIEUKH
-0x96F1 0xBF75 # HANGUL SYLLABLE SSANGPIEUP-WA-THIEUTH
-0x96F2 0xBF76 # HANGUL SYLLABLE SSANGPIEUP-WA-PHIEUPH
-0x96F3 0xBF77 # HANGUL SYLLABLE SSANGPIEUP-WA-HIEUH
-0x96F4 0xBF78 # HANGUL SYLLABLE SSANGPIEUP-WAE
-0x96F5 0xBF79 # HANGUL SYLLABLE SSANGPIEUP-WAE-KIYEOK
-0x96F6 0xBF7A # HANGUL SYLLABLE SSANGPIEUP-WAE-SSANGKIYEOK
-0x96F7 0xBF7B # HANGUL SYLLABLE SSANGPIEUP-WAE-KIYEOKSIOS
-0x96F8 0xBF7C # HANGUL SYLLABLE SSANGPIEUP-WAE-NIEUN
-0x96F9 0xBF7D # HANGUL SYLLABLE SSANGPIEUP-WAE-NIEUNCIEUC
-0x96FA 0xBF7E # HANGUL SYLLABLE SSANGPIEUP-WAE-NIEUNHIEUH
-0x96FB 0xBF7F # HANGUL SYLLABLE SSANGPIEUP-WAE-TIKEUT
-0x96FC 0xBF80 # HANGUL SYLLABLE SSANGPIEUP-WAE-RIEUL
-0x96FD 0xBF81 # HANGUL SYLLABLE SSANGPIEUP-WAE-RIEULKIYEOK
-0x96FE 0xBF82 # HANGUL SYLLABLE SSANGPIEUP-WAE-RIEULMIEUM
-0x9741 0xBF83 # HANGUL SYLLABLE SSANGPIEUP-WAE-RIEULPIEUP
-0x9742 0xBF84 # HANGUL SYLLABLE SSANGPIEUP-WAE-RIEULSIOS
-0x9743 0xBF85 # HANGUL SYLLABLE SSANGPIEUP-WAE-RIEULTHIEUTH
-0x9744 0xBF86 # HANGUL SYLLABLE SSANGPIEUP-WAE-RIEULPHIEUPH
-0x9745 0xBF87 # HANGUL SYLLABLE SSANGPIEUP-WAE-RIEULHIEUH
-0x9746 0xBF88 # HANGUL SYLLABLE SSANGPIEUP-WAE-MIEUM
-0x9747 0xBF89 # HANGUL SYLLABLE SSANGPIEUP-WAE-PIEUP
-0x9748 0xBF8A # HANGUL SYLLABLE SSANGPIEUP-WAE-PIEUPSIOS
-0x9749 0xBF8B # HANGUL SYLLABLE SSANGPIEUP-WAE-SIOS
-0x974A 0xBF8C # HANGUL SYLLABLE SSANGPIEUP-WAE-SSANGSIOS
-0x974B 0xBF8D # HANGUL SYLLABLE SSANGPIEUP-WAE-IEUNG
-0x974C 0xBF8E # HANGUL SYLLABLE SSANGPIEUP-WAE-CIEUC
-0x974D 0xBF8F # HANGUL SYLLABLE SSANGPIEUP-WAE-CHIEUCH
-0x974E 0xBF90 # HANGUL SYLLABLE SSANGPIEUP-WAE-KHIEUKH
-0x974F 0xBF91 # HANGUL SYLLABLE SSANGPIEUP-WAE-THIEUTH
-0x9750 0xBF92 # HANGUL SYLLABLE SSANGPIEUP-WAE-PHIEUPH
-0x9751 0xBF93 # HANGUL SYLLABLE SSANGPIEUP-WAE-HIEUH
-0x9752 0xBF95 # HANGUL SYLLABLE SSANGPIEUP-OE-KIYEOK
-0x9753 0xBF96 # HANGUL SYLLABLE SSANGPIEUP-OE-SSANGKIYEOK
-0x9754 0xBF97 # HANGUL SYLLABLE SSANGPIEUP-OE-KIYEOKSIOS
-0x9755 0xBF98 # HANGUL SYLLABLE SSANGPIEUP-OE-NIEUN
-0x9756 0xBF99 # HANGUL SYLLABLE SSANGPIEUP-OE-NIEUNCIEUC
-0x9757 0xBF9A # HANGUL SYLLABLE SSANGPIEUP-OE-NIEUNHIEUH
-0x9758 0xBF9B # HANGUL SYLLABLE SSANGPIEUP-OE-TIKEUT
-0x9759 0xBF9C # HANGUL SYLLABLE SSANGPIEUP-OE-RIEUL
-0x975A 0xBF9D # HANGUL SYLLABLE SSANGPIEUP-OE-RIEULKIYEOK
-0x9761 0xBF9E # HANGUL SYLLABLE SSANGPIEUP-OE-RIEULMIEUM
-0x9762 0xBF9F # HANGUL SYLLABLE SSANGPIEUP-OE-RIEULPIEUP
-0x9763 0xBFA0 # HANGUL SYLLABLE SSANGPIEUP-OE-RIEULSIOS
-0x9764 0xBFA1 # HANGUL SYLLABLE SSANGPIEUP-OE-RIEULTHIEUTH
-0x9765 0xBFA2 # HANGUL SYLLABLE SSANGPIEUP-OE-RIEULPHIEUPH
-0x9766 0xBFA3 # HANGUL SYLLABLE SSANGPIEUP-OE-RIEULHIEUH
-0x9767 0xBFA4 # HANGUL SYLLABLE SSANGPIEUP-OE-MIEUM
-0x9768 0xBFA5 # HANGUL SYLLABLE SSANGPIEUP-OE-PIEUP
-0x9769 0xBFA6 # HANGUL SYLLABLE SSANGPIEUP-OE-PIEUPSIOS
-0x976A 0xBFA7 # HANGUL SYLLABLE SSANGPIEUP-OE-SIOS
-0x976B 0xBFA8 # HANGUL SYLLABLE SSANGPIEUP-OE-SSANGSIOS
-0x976C 0xBFA9 # HANGUL SYLLABLE SSANGPIEUP-OE-IEUNG
-0x976D 0xBFAA # HANGUL SYLLABLE SSANGPIEUP-OE-CIEUC
-0x976E 0xBFAB # HANGUL SYLLABLE SSANGPIEUP-OE-CHIEUCH
-0x976F 0xBFAC # HANGUL SYLLABLE SSANGPIEUP-OE-KHIEUKH
-0x9770 0xBFAD # HANGUL SYLLABLE SSANGPIEUP-OE-THIEUTH
-0x9771 0xBFAE # HANGUL SYLLABLE SSANGPIEUP-OE-PHIEUPH
-0x9772 0xBFAF # HANGUL SYLLABLE SSANGPIEUP-OE-HIEUH
-0x9773 0xBFB1 # HANGUL SYLLABLE SSANGPIEUP-YO-KIYEOK
-0x9774 0xBFB2 # HANGUL SYLLABLE SSANGPIEUP-YO-SSANGKIYEOK
-0x9775 0xBFB3 # HANGUL SYLLABLE SSANGPIEUP-YO-KIYEOKSIOS
-0x9776 0xBFB4 # HANGUL SYLLABLE SSANGPIEUP-YO-NIEUN
-0x9777 0xBFB5 # HANGUL SYLLABLE SSANGPIEUP-YO-NIEUNCIEUC
-0x9778 0xBFB6 # HANGUL SYLLABLE SSANGPIEUP-YO-NIEUNHIEUH
-0x9779 0xBFB7 # HANGUL SYLLABLE SSANGPIEUP-YO-TIKEUT
-0x977A 0xBFB8 # HANGUL SYLLABLE SSANGPIEUP-YO-RIEUL
-0x9781 0xBFB9 # HANGUL SYLLABLE SSANGPIEUP-YO-RIEULKIYEOK
-0x9782 0xBFBA # HANGUL SYLLABLE SSANGPIEUP-YO-RIEULMIEUM
-0x9783 0xBFBB # HANGUL SYLLABLE SSANGPIEUP-YO-RIEULPIEUP
-0x9784 0xBFBC # HANGUL SYLLABLE SSANGPIEUP-YO-RIEULSIOS
-0x9785 0xBFBD # HANGUL SYLLABLE SSANGPIEUP-YO-RIEULTHIEUTH
-0x9786 0xBFBE # HANGUL SYLLABLE SSANGPIEUP-YO-RIEULPHIEUPH
-0x9787 0xBFBF # HANGUL SYLLABLE SSANGPIEUP-YO-RIEULHIEUH
-0x9788 0xBFC0 # HANGUL SYLLABLE SSANGPIEUP-YO-MIEUM
-0x9789 0xBFC1 # HANGUL SYLLABLE SSANGPIEUP-YO-PIEUP
-0x978A 0xBFC2 # HANGUL SYLLABLE SSANGPIEUP-YO-PIEUPSIOS
-0x978B 0xBFC3 # HANGUL SYLLABLE SSANGPIEUP-YO-SIOS
-0x978C 0xBFC4 # HANGUL SYLLABLE SSANGPIEUP-YO-SSANGSIOS
-0x978D 0xBFC6 # HANGUL SYLLABLE SSANGPIEUP-YO-CIEUC
-0x978E 0xBFC7 # HANGUL SYLLABLE SSANGPIEUP-YO-CHIEUCH
-0x978F 0xBFC8 # HANGUL SYLLABLE SSANGPIEUP-YO-KHIEUKH
-0x9790 0xBFC9 # HANGUL SYLLABLE SSANGPIEUP-YO-THIEUTH
-0x9791 0xBFCA # HANGUL SYLLABLE SSANGPIEUP-YO-PHIEUPH
-0x9792 0xBFCB # HANGUL SYLLABLE SSANGPIEUP-YO-HIEUH
-0x9793 0xBFCE # HANGUL SYLLABLE SSANGPIEUP-U-SSANGKIYEOK
-0x9794 0xBFCF # HANGUL SYLLABLE SSANGPIEUP-U-KIYEOKSIOS
-0x9795 0xBFD1 # HANGUL SYLLABLE SSANGPIEUP-U-NIEUNCIEUC
-0x9796 0xBFD2 # HANGUL SYLLABLE SSANGPIEUP-U-NIEUNHIEUH
-0x9797 0xBFD3 # HANGUL SYLLABLE SSANGPIEUP-U-TIKEUT
-0x9798 0xBFD5 # HANGUL SYLLABLE SSANGPIEUP-U-RIEULKIYEOK
-0x9799 0xBFD6 # HANGUL SYLLABLE SSANGPIEUP-U-RIEULMIEUM
-0x979A 0xBFD7 # HANGUL SYLLABLE SSANGPIEUP-U-RIEULPIEUP
-0x979B 0xBFD8 # HANGUL SYLLABLE SSANGPIEUP-U-RIEULSIOS
-0x979C 0xBFD9 # HANGUL SYLLABLE SSANGPIEUP-U-RIEULTHIEUTH
-0x979D 0xBFDA # HANGUL SYLLABLE SSANGPIEUP-U-RIEULPHIEUPH
-0x979E 0xBFDB # HANGUL SYLLABLE SSANGPIEUP-U-RIEULHIEUH
-0x979F 0xBFDD # HANGUL SYLLABLE SSANGPIEUP-U-PIEUP
-0x97A0 0xBFDE # HANGUL SYLLABLE SSANGPIEUP-U-PIEUPSIOS
-0x97A1 0xBFE0 # HANGUL SYLLABLE SSANGPIEUP-U-SSANGSIOS
-0x97A2 0xBFE2 # HANGUL SYLLABLE SSANGPIEUP-U-CIEUC
-0x97A3 0xBFE3 # HANGUL SYLLABLE SSANGPIEUP-U-CHIEUCH
-0x97A4 0xBFE4 # HANGUL SYLLABLE SSANGPIEUP-U-KHIEUKH
-0x97A5 0xBFE5 # HANGUL SYLLABLE SSANGPIEUP-U-THIEUTH
-0x97A6 0xBFE6 # HANGUL SYLLABLE SSANGPIEUP-U-PHIEUPH
-0x97A7 0xBFE7 # HANGUL SYLLABLE SSANGPIEUP-U-HIEUH
-0x97A8 0xBFE8 # HANGUL SYLLABLE SSANGPIEUP-WEO
-0x97A9 0xBFE9 # HANGUL SYLLABLE SSANGPIEUP-WEO-KIYEOK
-0x97AA 0xBFEA # HANGUL SYLLABLE SSANGPIEUP-WEO-SSANGKIYEOK
-0x97AB 0xBFEB # HANGUL SYLLABLE SSANGPIEUP-WEO-KIYEOKSIOS
-0x97AC 0xBFEC # HANGUL SYLLABLE SSANGPIEUP-WEO-NIEUN
-0x97AD 0xBFED # HANGUL SYLLABLE SSANGPIEUP-WEO-NIEUNCIEUC
-0x97AE 0xBFEE # HANGUL SYLLABLE SSANGPIEUP-WEO-NIEUNHIEUH
-0x97AF 0xBFEF # HANGUL SYLLABLE SSANGPIEUP-WEO-TIKEUT
-0x97B0 0xBFF0 # HANGUL SYLLABLE SSANGPIEUP-WEO-RIEUL
-0x97B1 0xBFF1 # HANGUL SYLLABLE SSANGPIEUP-WEO-RIEULKIYEOK
-0x97B2 0xBFF2 # HANGUL SYLLABLE SSANGPIEUP-WEO-RIEULMIEUM
-0x97B3 0xBFF3 # HANGUL SYLLABLE SSANGPIEUP-WEO-RIEULPIEUP
-0x97B4 0xBFF4 # HANGUL SYLLABLE SSANGPIEUP-WEO-RIEULSIOS
-0x97B5 0xBFF5 # HANGUL SYLLABLE SSANGPIEUP-WEO-RIEULTHIEUTH
-0x97B6 0xBFF6 # HANGUL SYLLABLE SSANGPIEUP-WEO-RIEULPHIEUPH
-0x97B7 0xBFF7 # HANGUL SYLLABLE SSANGPIEUP-WEO-RIEULHIEUH
-0x97B8 0xBFF8 # HANGUL SYLLABLE SSANGPIEUP-WEO-MIEUM
-0x97B9 0xBFF9 # HANGUL SYLLABLE SSANGPIEUP-WEO-PIEUP
-0x97BA 0xBFFA # HANGUL SYLLABLE SSANGPIEUP-WEO-PIEUPSIOS
-0x97BB 0xBFFB # HANGUL SYLLABLE SSANGPIEUP-WEO-SIOS
-0x97BC 0xBFFC # HANGUL SYLLABLE SSANGPIEUP-WEO-SSANGSIOS
-0x97BD 0xBFFD # HANGUL SYLLABLE SSANGPIEUP-WEO-IEUNG
-0x97BE 0xBFFE # HANGUL SYLLABLE SSANGPIEUP-WEO-CIEUC
-0x97BF 0xBFFF # HANGUL SYLLABLE SSANGPIEUP-WEO-CHIEUCH
-0x97C0 0xC000 # HANGUL SYLLABLE SSANGPIEUP-WEO-KHIEUKH
-0x97C1 0xC001 # HANGUL SYLLABLE SSANGPIEUP-WEO-THIEUTH
-0x97C2 0xC002 # HANGUL SYLLABLE SSANGPIEUP-WEO-PHIEUPH
-0x97C3 0xC003 # HANGUL SYLLABLE SSANGPIEUP-WEO-HIEUH
-0x97C4 0xC004 # HANGUL SYLLABLE SSANGPIEUP-WE
-0x97C5 0xC005 # HANGUL SYLLABLE SSANGPIEUP-WE-KIYEOK
-0x97C6 0xC006 # HANGUL SYLLABLE SSANGPIEUP-WE-SSANGKIYEOK
-0x97C7 0xC007 # HANGUL SYLLABLE SSANGPIEUP-WE-KIYEOKSIOS
-0x97C8 0xC008 # HANGUL SYLLABLE SSANGPIEUP-WE-NIEUN
-0x97C9 0xC009 # HANGUL SYLLABLE SSANGPIEUP-WE-NIEUNCIEUC
-0x97CA 0xC00A # HANGUL SYLLABLE SSANGPIEUP-WE-NIEUNHIEUH
-0x97CB 0xC00B # HANGUL SYLLABLE SSANGPIEUP-WE-TIKEUT
-0x97CC 0xC00C # HANGUL SYLLABLE SSANGPIEUP-WE-RIEUL
-0x97CD 0xC00D # HANGUL SYLLABLE SSANGPIEUP-WE-RIEULKIYEOK
-0x97CE 0xC00E # HANGUL SYLLABLE SSANGPIEUP-WE-RIEULMIEUM
-0x97CF 0xC00F # HANGUL SYLLABLE SSANGPIEUP-WE-RIEULPIEUP
-0x97D0 0xC010 # HANGUL SYLLABLE SSANGPIEUP-WE-RIEULSIOS
-0x97D1 0xC011 # HANGUL SYLLABLE SSANGPIEUP-WE-RIEULTHIEUTH
-0x97D2 0xC012 # HANGUL SYLLABLE SSANGPIEUP-WE-RIEULPHIEUPH
-0x97D3 0xC013 # HANGUL SYLLABLE SSANGPIEUP-WE-RIEULHIEUH
-0x97D4 0xC014 # HANGUL SYLLABLE SSANGPIEUP-WE-MIEUM
-0x97D5 0xC015 # HANGUL SYLLABLE SSANGPIEUP-WE-PIEUP
-0x97D6 0xC016 # HANGUL SYLLABLE SSANGPIEUP-WE-PIEUPSIOS
-0x97D7 0xC017 # HANGUL SYLLABLE SSANGPIEUP-WE-SIOS
-0x97D8 0xC018 # HANGUL SYLLABLE SSANGPIEUP-WE-SSANGSIOS
-0x97D9 0xC019 # HANGUL SYLLABLE SSANGPIEUP-WE-IEUNG
-0x97DA 0xC01A # HANGUL SYLLABLE SSANGPIEUP-WE-CIEUC
-0x97DB 0xC01B # HANGUL SYLLABLE SSANGPIEUP-WE-CHIEUCH
-0x97DC 0xC01C # HANGUL SYLLABLE SSANGPIEUP-WE-KHIEUKH
-0x97DD 0xC01D # HANGUL SYLLABLE SSANGPIEUP-WE-THIEUTH
-0x97DE 0xC01E # HANGUL SYLLABLE SSANGPIEUP-WE-PHIEUPH
-0x97DF 0xC01F # HANGUL SYLLABLE SSANGPIEUP-WE-HIEUH
-0x97E0 0xC020 # HANGUL SYLLABLE SSANGPIEUP-WI
-0x97E1 0xC021 # HANGUL SYLLABLE SSANGPIEUP-WI-KIYEOK
-0x97E2 0xC022 # HANGUL SYLLABLE SSANGPIEUP-WI-SSANGKIYEOK
-0x97E3 0xC023 # HANGUL SYLLABLE SSANGPIEUP-WI-KIYEOKSIOS
-0x97E4 0xC024 # HANGUL SYLLABLE SSANGPIEUP-WI-NIEUN
-0x97E5 0xC025 # HANGUL SYLLABLE SSANGPIEUP-WI-NIEUNCIEUC
-0x97E6 0xC026 # HANGUL SYLLABLE SSANGPIEUP-WI-NIEUNHIEUH
-0x97E7 0xC027 # HANGUL SYLLABLE SSANGPIEUP-WI-TIKEUT
-0x97E8 0xC028 # HANGUL SYLLABLE SSANGPIEUP-WI-RIEUL
-0x97E9 0xC029 # HANGUL SYLLABLE SSANGPIEUP-WI-RIEULKIYEOK
-0x97EA 0xC02A # HANGUL SYLLABLE SSANGPIEUP-WI-RIEULMIEUM
-0x97EB 0xC02B # HANGUL SYLLABLE SSANGPIEUP-WI-RIEULPIEUP
-0x97EC 0xC02C # HANGUL SYLLABLE SSANGPIEUP-WI-RIEULSIOS
-0x97ED 0xC02D # HANGUL SYLLABLE SSANGPIEUP-WI-RIEULTHIEUTH
-0x97EE 0xC02E # HANGUL SYLLABLE SSANGPIEUP-WI-RIEULPHIEUPH
-0x97EF 0xC02F # HANGUL SYLLABLE SSANGPIEUP-WI-RIEULHIEUH
-0x97F0 0xC030 # HANGUL SYLLABLE SSANGPIEUP-WI-MIEUM
-0x97F1 0xC031 # HANGUL SYLLABLE SSANGPIEUP-WI-PIEUP
-0x97F2 0xC032 # HANGUL SYLLABLE SSANGPIEUP-WI-PIEUPSIOS
-0x97F3 0xC033 # HANGUL SYLLABLE SSANGPIEUP-WI-SIOS
-0x97F4 0xC034 # HANGUL SYLLABLE SSANGPIEUP-WI-SSANGSIOS
-0x97F5 0xC035 # HANGUL SYLLABLE SSANGPIEUP-WI-IEUNG
-0x97F6 0xC036 # HANGUL SYLLABLE SSANGPIEUP-WI-CIEUC
-0x97F7 0xC037 # HANGUL SYLLABLE SSANGPIEUP-WI-CHIEUCH
-0x97F8 0xC038 # HANGUL SYLLABLE SSANGPIEUP-WI-KHIEUKH
-0x97F9 0xC039 # HANGUL SYLLABLE SSANGPIEUP-WI-THIEUTH
-0x97FA 0xC03A # HANGUL SYLLABLE SSANGPIEUP-WI-PHIEUPH
-0x97FB 0xC03B # HANGUL SYLLABLE SSANGPIEUP-WI-HIEUH
-0x97FC 0xC03D # HANGUL SYLLABLE SSANGPIEUP-YU-KIYEOK
-0x97FD 0xC03E # HANGUL SYLLABLE SSANGPIEUP-YU-SSANGKIYEOK
-0x97FE 0xC03F # HANGUL SYLLABLE SSANGPIEUP-YU-KIYEOKSIOS
-0x9841 0xC040 # HANGUL SYLLABLE SSANGPIEUP-YU-NIEUN
-0x9842 0xC041 # HANGUL SYLLABLE SSANGPIEUP-YU-NIEUNCIEUC
-0x9843 0xC042 # HANGUL SYLLABLE SSANGPIEUP-YU-NIEUNHIEUH
-0x9844 0xC043 # HANGUL SYLLABLE SSANGPIEUP-YU-TIKEUT
-0x9845 0xC044 # HANGUL SYLLABLE SSANGPIEUP-YU-RIEUL
-0x9846 0xC045 # HANGUL SYLLABLE SSANGPIEUP-YU-RIEULKIYEOK
-0x9847 0xC046 # HANGUL SYLLABLE SSANGPIEUP-YU-RIEULMIEUM
-0x9848 0xC047 # HANGUL SYLLABLE SSANGPIEUP-YU-RIEULPIEUP
-0x9849 0xC048 # HANGUL SYLLABLE SSANGPIEUP-YU-RIEULSIOS
-0x984A 0xC049 # HANGUL SYLLABLE SSANGPIEUP-YU-RIEULTHIEUTH
-0x984B 0xC04A # HANGUL SYLLABLE SSANGPIEUP-YU-RIEULPHIEUPH
-0x984C 0xC04B # HANGUL SYLLABLE SSANGPIEUP-YU-RIEULHIEUH
-0x984D 0xC04C # HANGUL SYLLABLE SSANGPIEUP-YU-MIEUM
-0x984E 0xC04D # HANGUL SYLLABLE SSANGPIEUP-YU-PIEUP
-0x984F 0xC04E # HANGUL SYLLABLE SSANGPIEUP-YU-PIEUPSIOS
-0x9850 0xC04F # HANGUL SYLLABLE SSANGPIEUP-YU-SIOS
-0x9851 0xC050 # HANGUL SYLLABLE SSANGPIEUP-YU-SSANGSIOS
-0x9852 0xC052 # HANGUL SYLLABLE SSANGPIEUP-YU-CIEUC
-0x9853 0xC053 # HANGUL SYLLABLE SSANGPIEUP-YU-CHIEUCH
-0x9854 0xC054 # HANGUL SYLLABLE SSANGPIEUP-YU-KHIEUKH
-0x9855 0xC055 # HANGUL SYLLABLE SSANGPIEUP-YU-THIEUTH
-0x9856 0xC056 # HANGUL SYLLABLE SSANGPIEUP-YU-PHIEUPH
-0x9857 0xC057 # HANGUL SYLLABLE SSANGPIEUP-YU-HIEUH
-0x9858 0xC059 # HANGUL SYLLABLE SSANGPIEUP-EU-KIYEOK
-0x9859 0xC05A # HANGUL SYLLABLE SSANGPIEUP-EU-SSANGKIYEOK
-0x985A 0xC05B # HANGUL SYLLABLE SSANGPIEUP-EU-KIYEOKSIOS
-0x9861 0xC05D # HANGUL SYLLABLE SSANGPIEUP-EU-NIEUNCIEUC
-0x9862 0xC05E # HANGUL SYLLABLE SSANGPIEUP-EU-NIEUNHIEUH
-0x9863 0xC05F # HANGUL SYLLABLE SSANGPIEUP-EU-TIKEUT
-0x9864 0xC061 # HANGUL SYLLABLE SSANGPIEUP-EU-RIEULKIYEOK
-0x9865 0xC062 # HANGUL SYLLABLE SSANGPIEUP-EU-RIEULMIEUM
-0x9866 0xC063 # HANGUL SYLLABLE SSANGPIEUP-EU-RIEULPIEUP
-0x9867 0xC064 # HANGUL SYLLABLE SSANGPIEUP-EU-RIEULSIOS
-0x9868 0xC065 # HANGUL SYLLABLE SSANGPIEUP-EU-RIEULTHIEUTH
-0x9869 0xC066 # HANGUL SYLLABLE SSANGPIEUP-EU-RIEULPHIEUPH
-0x986A 0xC067 # HANGUL SYLLABLE SSANGPIEUP-EU-RIEULHIEUH
-0x986B 0xC06A # HANGUL SYLLABLE SSANGPIEUP-EU-PIEUPSIOS
-0x986C 0xC06B # HANGUL SYLLABLE SSANGPIEUP-EU-SIOS
-0x986D 0xC06C # HANGUL SYLLABLE SSANGPIEUP-EU-SSANGSIOS
-0x986E 0xC06D # HANGUL SYLLABLE SSANGPIEUP-EU-IEUNG
-0x986F 0xC06E # HANGUL SYLLABLE SSANGPIEUP-EU-CIEUC
-0x9870 0xC06F # HANGUL SYLLABLE SSANGPIEUP-EU-CHIEUCH
-0x9871 0xC070 # HANGUL SYLLABLE SSANGPIEUP-EU-KHIEUKH
-0x9872 0xC071 # HANGUL SYLLABLE SSANGPIEUP-EU-THIEUTH
-0x9873 0xC072 # HANGUL SYLLABLE SSANGPIEUP-EU-PHIEUPH
-0x9874 0xC073 # HANGUL SYLLABLE SSANGPIEUP-EU-HIEUH
-0x9875 0xC074 # HANGUL SYLLABLE SSANGPIEUP-YI
-0x9876 0xC075 # HANGUL SYLLABLE SSANGPIEUP-YI-KIYEOK
-0x9877 0xC076 # HANGUL SYLLABLE SSANGPIEUP-YI-SSANGKIYEOK
-0x9878 0xC077 # HANGUL SYLLABLE SSANGPIEUP-YI-KIYEOKSIOS
-0x9879 0xC078 # HANGUL SYLLABLE SSANGPIEUP-YI-NIEUN
-0x987A 0xC079 # HANGUL SYLLABLE SSANGPIEUP-YI-NIEUNCIEUC
-0x9881 0xC07A # HANGUL SYLLABLE SSANGPIEUP-YI-NIEUNHIEUH
-0x9882 0xC07B # HANGUL SYLLABLE SSANGPIEUP-YI-TIKEUT
-0x9883 0xC07C # HANGUL SYLLABLE SSANGPIEUP-YI-RIEUL
-0x9884 0xC07D # HANGUL SYLLABLE SSANGPIEUP-YI-RIEULKIYEOK
-0x9885 0xC07E # HANGUL SYLLABLE SSANGPIEUP-YI-RIEULMIEUM
-0x9886 0xC07F # HANGUL SYLLABLE SSANGPIEUP-YI-RIEULPIEUP
-0x9887 0xC080 # HANGUL SYLLABLE SSANGPIEUP-YI-RIEULSIOS
-0x9888 0xC081 # HANGUL SYLLABLE SSANGPIEUP-YI-RIEULTHIEUTH
-0x9889 0xC082 # HANGUL SYLLABLE SSANGPIEUP-YI-RIEULPHIEUPH
-0x988A 0xC083 # HANGUL SYLLABLE SSANGPIEUP-YI-RIEULHIEUH
-0x988B 0xC084 # HANGUL SYLLABLE SSANGPIEUP-YI-MIEUM
-0x988C 0xC085 # HANGUL SYLLABLE SSANGPIEUP-YI-PIEUP
-0x988D 0xC086 # HANGUL SYLLABLE SSANGPIEUP-YI-PIEUPSIOS
-0x988E 0xC087 # HANGUL SYLLABLE SSANGPIEUP-YI-SIOS
-0x988F 0xC088 # HANGUL SYLLABLE SSANGPIEUP-YI-SSANGSIOS
-0x9890 0xC089 # HANGUL SYLLABLE SSANGPIEUP-YI-IEUNG
-0x9891 0xC08A # HANGUL SYLLABLE SSANGPIEUP-YI-CIEUC
-0x9892 0xC08B # HANGUL SYLLABLE SSANGPIEUP-YI-CHIEUCH
-0x9893 0xC08C # HANGUL SYLLABLE SSANGPIEUP-YI-KHIEUKH
-0x9894 0xC08D # HANGUL SYLLABLE SSANGPIEUP-YI-THIEUTH
-0x9895 0xC08E # HANGUL SYLLABLE SSANGPIEUP-YI-PHIEUPH
-0x9896 0xC08F # HANGUL SYLLABLE SSANGPIEUP-YI-HIEUH
-0x9897 0xC092 # HANGUL SYLLABLE SSANGPIEUP-I-SSANGKIYEOK
-0x9898 0xC093 # HANGUL SYLLABLE SSANGPIEUP-I-KIYEOKSIOS
-0x9899 0xC095 # HANGUL SYLLABLE SSANGPIEUP-I-NIEUNCIEUC
-0x989A 0xC096 # HANGUL SYLLABLE SSANGPIEUP-I-NIEUNHIEUH
-0x989B 0xC097 # HANGUL SYLLABLE SSANGPIEUP-I-TIKEUT
-0x989C 0xC099 # HANGUL SYLLABLE SSANGPIEUP-I-RIEULKIYEOK
-0x989D 0xC09A # HANGUL SYLLABLE SSANGPIEUP-I-RIEULMIEUM
-0x989E 0xC09B # HANGUL SYLLABLE SSANGPIEUP-I-RIEULPIEUP
-0x989F 0xC09C # HANGUL SYLLABLE SSANGPIEUP-I-RIEULSIOS
-0x98A0 0xC09D # HANGUL SYLLABLE SSANGPIEUP-I-RIEULTHIEUTH
-0x98A1 0xC09E # HANGUL SYLLABLE SSANGPIEUP-I-RIEULPHIEUPH
-0x98A2 0xC09F # HANGUL SYLLABLE SSANGPIEUP-I-RIEULHIEUH
-0x98A3 0xC0A2 # HANGUL SYLLABLE SSANGPIEUP-I-PIEUPSIOS
-0x98A4 0xC0A4 # HANGUL SYLLABLE SSANGPIEUP-I-SSANGSIOS
-0x98A5 0xC0A6 # HANGUL SYLLABLE SSANGPIEUP-I-CIEUC
-0x98A6 0xC0A7 # HANGUL SYLLABLE SSANGPIEUP-I-CHIEUCH
-0x98A7 0xC0A8 # HANGUL SYLLABLE SSANGPIEUP-I-KHIEUKH
-0x98A8 0xC0A9 # HANGUL SYLLABLE SSANGPIEUP-I-THIEUTH
-0x98A9 0xC0AA # HANGUL SYLLABLE SSANGPIEUP-I-PHIEUPH
-0x98AA 0xC0AB # HANGUL SYLLABLE SSANGPIEUP-I-HIEUH
-0x98AB 0xC0AE # HANGUL SYLLABLE SIOS-A-SSANGKIYEOK
-0x98AC 0xC0B1 # HANGUL SYLLABLE SIOS-A-NIEUNCIEUC
-0x98AD 0xC0B2 # HANGUL SYLLABLE SIOS-A-NIEUNHIEUH
-0x98AE 0xC0B7 # HANGUL SYLLABLE SIOS-A-RIEULPIEUP
-0x98AF 0xC0B8 # HANGUL SYLLABLE SIOS-A-RIEULSIOS
-0x98B0 0xC0B9 # HANGUL SYLLABLE SIOS-A-RIEULTHIEUTH
-0x98B1 0xC0BA # HANGUL SYLLABLE SIOS-A-RIEULPHIEUPH
-0x98B2 0xC0BB # HANGUL SYLLABLE SIOS-A-RIEULHIEUH
-0x98B3 0xC0BE # HANGUL SYLLABLE SIOS-A-PIEUPSIOS
-0x98B4 0xC0C2 # HANGUL SYLLABLE SIOS-A-CIEUC
-0x98B5 0xC0C3 # HANGUL SYLLABLE SIOS-A-CHIEUCH
-0x98B6 0xC0C4 # HANGUL SYLLABLE SIOS-A-KHIEUKH
-0x98B7 0xC0C6 # HANGUL SYLLABLE SIOS-A-PHIEUPH
-0x98B8 0xC0C7 # HANGUL SYLLABLE SIOS-A-HIEUH
-0x98B9 0xC0CA # HANGUL SYLLABLE SIOS-AE-SSANGKIYEOK
-0x98BA 0xC0CB # HANGUL SYLLABLE SIOS-AE-KIYEOKSIOS
-0x98BB 0xC0CD # HANGUL SYLLABLE SIOS-AE-NIEUNCIEUC
-0x98BC 0xC0CE # HANGUL SYLLABLE SIOS-AE-NIEUNHIEUH
-0x98BD 0xC0CF # HANGUL SYLLABLE SIOS-AE-TIKEUT
-0x98BE 0xC0D1 # HANGUL SYLLABLE SIOS-AE-RIEULKIYEOK
-0x98BF 0xC0D2 # HANGUL SYLLABLE SIOS-AE-RIEULMIEUM
-0x98C0 0xC0D3 # HANGUL SYLLABLE SIOS-AE-RIEULPIEUP
-0x98C1 0xC0D4 # HANGUL SYLLABLE SIOS-AE-RIEULSIOS
-0x98C2 0xC0D5 # HANGUL SYLLABLE SIOS-AE-RIEULTHIEUTH
-0x98C3 0xC0D6 # HANGUL SYLLABLE SIOS-AE-RIEULPHIEUPH
-0x98C4 0xC0D7 # HANGUL SYLLABLE SIOS-AE-RIEULHIEUH
-0x98C5 0xC0DA # HANGUL SYLLABLE SIOS-AE-PIEUPSIOS
-0x98C6 0xC0DE # HANGUL SYLLABLE SIOS-AE-CIEUC
-0x98C7 0xC0DF # HANGUL SYLLABLE SIOS-AE-CHIEUCH
-0x98C8 0xC0E0 # HANGUL SYLLABLE SIOS-AE-KHIEUKH
-0x98C9 0xC0E1 # HANGUL SYLLABLE SIOS-AE-THIEUTH
-0x98CA 0xC0E2 # HANGUL SYLLABLE SIOS-AE-PHIEUPH
-0x98CB 0xC0E3 # HANGUL SYLLABLE SIOS-AE-HIEUH
-0x98CC 0xC0E6 # HANGUL SYLLABLE SIOS-YA-SSANGKIYEOK
-0x98CD 0xC0E7 # HANGUL SYLLABLE SIOS-YA-KIYEOKSIOS
-0x98CE 0xC0E9 # HANGUL SYLLABLE SIOS-YA-NIEUNCIEUC
-0x98CF 0xC0EA # HANGUL SYLLABLE SIOS-YA-NIEUNHIEUH
-0x98D0 0xC0EB # HANGUL SYLLABLE SIOS-YA-TIKEUT
-0x98D1 0xC0ED # HANGUL SYLLABLE SIOS-YA-RIEULKIYEOK
-0x98D2 0xC0EE # HANGUL SYLLABLE SIOS-YA-RIEULMIEUM
-0x98D3 0xC0EF # HANGUL SYLLABLE SIOS-YA-RIEULPIEUP
-0x98D4 0xC0F0 # HANGUL SYLLABLE SIOS-YA-RIEULSIOS
-0x98D5 0xC0F1 # HANGUL SYLLABLE SIOS-YA-RIEULTHIEUTH
-0x98D6 0xC0F2 # HANGUL SYLLABLE SIOS-YA-RIEULPHIEUPH
-0x98D7 0xC0F3 # HANGUL SYLLABLE SIOS-YA-RIEULHIEUH
-0x98D8 0xC0F6 # HANGUL SYLLABLE SIOS-YA-PIEUPSIOS
-0x98D9 0xC0F8 # HANGUL SYLLABLE SIOS-YA-SSANGSIOS
-0x98DA 0xC0FA # HANGUL SYLLABLE SIOS-YA-CIEUC
-0x98DB 0xC0FB # HANGUL SYLLABLE SIOS-YA-CHIEUCH
-0x98DC 0xC0FC # HANGUL SYLLABLE SIOS-YA-KHIEUKH
-0x98DD 0xC0FD # HANGUL SYLLABLE SIOS-YA-THIEUTH
-0x98DE 0xC0FE # HANGUL SYLLABLE SIOS-YA-PHIEUPH
-0x98DF 0xC0FF # HANGUL SYLLABLE SIOS-YA-HIEUH
-0x98E0 0xC101 # HANGUL SYLLABLE SIOS-YAE-KIYEOK
-0x98E1 0xC102 # HANGUL SYLLABLE SIOS-YAE-SSANGKIYEOK
-0x98E2 0xC103 # HANGUL SYLLABLE SIOS-YAE-KIYEOKSIOS
-0x98E3 0xC105 # HANGUL SYLLABLE SIOS-YAE-NIEUNCIEUC
-0x98E4 0xC106 # HANGUL SYLLABLE SIOS-YAE-NIEUNHIEUH
-0x98E5 0xC107 # HANGUL SYLLABLE SIOS-YAE-TIKEUT
-0x98E6 0xC109 # HANGUL SYLLABLE SIOS-YAE-RIEULKIYEOK
-0x98E7 0xC10A # HANGUL SYLLABLE SIOS-YAE-RIEULMIEUM
-0x98E8 0xC10B # HANGUL SYLLABLE SIOS-YAE-RIEULPIEUP
-0x98E9 0xC10C # HANGUL SYLLABLE SIOS-YAE-RIEULSIOS
-0x98EA 0xC10D # HANGUL SYLLABLE SIOS-YAE-RIEULTHIEUTH
-0x98EB 0xC10E # HANGUL SYLLABLE SIOS-YAE-RIEULPHIEUPH
-0x98EC 0xC10F # HANGUL SYLLABLE SIOS-YAE-RIEULHIEUH
-0x98ED 0xC111 # HANGUL SYLLABLE SIOS-YAE-PIEUP
-0x98EE 0xC112 # HANGUL SYLLABLE SIOS-YAE-PIEUPSIOS
-0x98EF 0xC113 # HANGUL SYLLABLE SIOS-YAE-SIOS
-0x98F0 0xC114 # HANGUL SYLLABLE SIOS-YAE-SSANGSIOS
-0x98F1 0xC116 # HANGUL SYLLABLE SIOS-YAE-CIEUC
-0x98F2 0xC117 # HANGUL SYLLABLE SIOS-YAE-CHIEUCH
-0x98F3 0xC118 # HANGUL SYLLABLE SIOS-YAE-KHIEUKH
-0x98F4 0xC119 # HANGUL SYLLABLE SIOS-YAE-THIEUTH
-0x98F5 0xC11A # HANGUL SYLLABLE SIOS-YAE-PHIEUPH
-0x98F6 0xC11B # HANGUL SYLLABLE SIOS-YAE-HIEUH
-0x98F7 0xC121 # HANGUL SYLLABLE SIOS-EO-NIEUNCIEUC
-0x98F8 0xC122 # HANGUL SYLLABLE SIOS-EO-NIEUNHIEUH
-0x98F9 0xC125 # HANGUL SYLLABLE SIOS-EO-RIEULKIYEOK
-0x98FA 0xC128 # HANGUL SYLLABLE SIOS-EO-RIEULSIOS
-0x98FB 0xC129 # HANGUL SYLLABLE SIOS-EO-RIEULTHIEUTH
-0x98FC 0xC12A # HANGUL SYLLABLE SIOS-EO-RIEULPHIEUPH
-0x98FD 0xC12B # HANGUL SYLLABLE SIOS-EO-RIEULHIEUH
-0x98FE 0xC12E # HANGUL SYLLABLE SIOS-EO-PIEUPSIOS
-0x9941 0xC132 # HANGUL SYLLABLE SIOS-EO-CIEUC
-0x9942 0xC133 # HANGUL SYLLABLE SIOS-EO-CHIEUCH
-0x9943 0xC134 # HANGUL SYLLABLE SIOS-EO-KHIEUKH
-0x9944 0xC135 # HANGUL SYLLABLE SIOS-EO-THIEUTH
-0x9945 0xC137 # HANGUL SYLLABLE SIOS-EO-HIEUH
-0x9946 0xC13A # HANGUL SYLLABLE SIOS-E-SSANGKIYEOK
-0x9947 0xC13B # HANGUL SYLLABLE SIOS-E-KIYEOKSIOS
-0x9948 0xC13D # HANGUL SYLLABLE SIOS-E-NIEUNCIEUC
-0x9949 0xC13E # HANGUL SYLLABLE SIOS-E-NIEUNHIEUH
-0x994A 0xC13F # HANGUL SYLLABLE SIOS-E-TIKEUT
-0x994B 0xC141 # HANGUL SYLLABLE SIOS-E-RIEULKIYEOK
-0x994C 0xC142 # HANGUL SYLLABLE SIOS-E-RIEULMIEUM
-0x994D 0xC143 # HANGUL SYLLABLE SIOS-E-RIEULPIEUP
-0x994E 0xC144 # HANGUL SYLLABLE SIOS-E-RIEULSIOS
-0x994F 0xC145 # HANGUL SYLLABLE SIOS-E-RIEULTHIEUTH
-0x9950 0xC146 # HANGUL SYLLABLE SIOS-E-RIEULPHIEUPH
-0x9951 0xC147 # HANGUL SYLLABLE SIOS-E-RIEULHIEUH
-0x9952 0xC14A # HANGUL SYLLABLE SIOS-E-PIEUPSIOS
-0x9953 0xC14E # HANGUL SYLLABLE SIOS-E-CIEUC
-0x9954 0xC14F # HANGUL SYLLABLE SIOS-E-CHIEUCH
-0x9955 0xC150 # HANGUL SYLLABLE SIOS-E-KHIEUKH
-0x9956 0xC151 # HANGUL SYLLABLE SIOS-E-THIEUTH
-0x9957 0xC152 # HANGUL SYLLABLE SIOS-E-PHIEUPH
-0x9958 0xC153 # HANGUL SYLLABLE SIOS-E-HIEUH
-0x9959 0xC156 # HANGUL SYLLABLE SIOS-YEO-SSANGKIYEOK
-0x995A 0xC157 # HANGUL SYLLABLE SIOS-YEO-KIYEOKSIOS
-0x9961 0xC159 # HANGUL SYLLABLE SIOS-YEO-NIEUNCIEUC
-0x9962 0xC15A # HANGUL SYLLABLE SIOS-YEO-NIEUNHIEUH
-0x9963 0xC15B # HANGUL SYLLABLE SIOS-YEO-TIKEUT
-0x9964 0xC15D # HANGUL SYLLABLE SIOS-YEO-RIEULKIYEOK
-0x9965 0xC15E # HANGUL SYLLABLE SIOS-YEO-RIEULMIEUM
-0x9966 0xC15F # HANGUL SYLLABLE SIOS-YEO-RIEULPIEUP
-0x9967 0xC160 # HANGUL SYLLABLE SIOS-YEO-RIEULSIOS
-0x9968 0xC161 # HANGUL SYLLABLE SIOS-YEO-RIEULTHIEUTH
-0x9969 0xC162 # HANGUL SYLLABLE SIOS-YEO-RIEULPHIEUPH
-0x996A 0xC163 # HANGUL SYLLABLE SIOS-YEO-RIEULHIEUH
-0x996B 0xC166 # HANGUL SYLLABLE SIOS-YEO-PIEUPSIOS
-0x996C 0xC16A # HANGUL SYLLABLE SIOS-YEO-CIEUC
-0x996D 0xC16B # HANGUL SYLLABLE SIOS-YEO-CHIEUCH
-0x996E 0xC16C # HANGUL SYLLABLE SIOS-YEO-KHIEUKH
-0x996F 0xC16D # HANGUL SYLLABLE SIOS-YEO-THIEUTH
-0x9970 0xC16E # HANGUL SYLLABLE SIOS-YEO-PHIEUPH
-0x9971 0xC16F # HANGUL SYLLABLE SIOS-YEO-HIEUH
-0x9972 0xC171 # HANGUL SYLLABLE SIOS-YE-KIYEOK
-0x9973 0xC172 # HANGUL SYLLABLE SIOS-YE-SSANGKIYEOK
-0x9974 0xC173 # HANGUL SYLLABLE SIOS-YE-KIYEOKSIOS
-0x9975 0xC175 # HANGUL SYLLABLE SIOS-YE-NIEUNCIEUC
-0x9976 0xC176 # HANGUL SYLLABLE SIOS-YE-NIEUNHIEUH
-0x9977 0xC177 # HANGUL SYLLABLE SIOS-YE-TIKEUT
-0x9978 0xC179 # HANGUL SYLLABLE SIOS-YE-RIEULKIYEOK
-0x9979 0xC17A # HANGUL SYLLABLE SIOS-YE-RIEULMIEUM
-0x997A 0xC17B # HANGUL SYLLABLE SIOS-YE-RIEULPIEUP
-0x9981 0xC17C # HANGUL SYLLABLE SIOS-YE-RIEULSIOS
-0x9982 0xC17D # HANGUL SYLLABLE SIOS-YE-RIEULTHIEUTH
-0x9983 0xC17E # HANGUL SYLLABLE SIOS-YE-RIEULPHIEUPH
-0x9984 0xC17F # HANGUL SYLLABLE SIOS-YE-RIEULHIEUH
-0x9985 0xC180 # HANGUL SYLLABLE SIOS-YE-MIEUM
-0x9986 0xC181 # HANGUL SYLLABLE SIOS-YE-PIEUP
-0x9987 0xC182 # HANGUL SYLLABLE SIOS-YE-PIEUPSIOS
-0x9988 0xC183 # HANGUL SYLLABLE SIOS-YE-SIOS
-0x9989 0xC184 # HANGUL SYLLABLE SIOS-YE-SSANGSIOS
-0x998A 0xC186 # HANGUL SYLLABLE SIOS-YE-CIEUC
-0x998B 0xC187 # HANGUL SYLLABLE SIOS-YE-CHIEUCH
-0x998C 0xC188 # HANGUL SYLLABLE SIOS-YE-KHIEUKH
-0x998D 0xC189 # HANGUL SYLLABLE SIOS-YE-THIEUTH
-0x998E 0xC18A # HANGUL SYLLABLE SIOS-YE-PHIEUPH
-0x998F 0xC18B # HANGUL SYLLABLE SIOS-YE-HIEUH
-0x9990 0xC18F # HANGUL SYLLABLE SIOS-O-KIYEOKSIOS
-0x9991 0xC191 # HANGUL SYLLABLE SIOS-O-NIEUNCIEUC
-0x9992 0xC192 # HANGUL SYLLABLE SIOS-O-NIEUNHIEUH
-0x9993 0xC193 # HANGUL SYLLABLE SIOS-O-TIKEUT
-0x9994 0xC195 # HANGUL SYLLABLE SIOS-O-RIEULKIYEOK
-0x9995 0xC197 # HANGUL SYLLABLE SIOS-O-RIEULPIEUP
-0x9996 0xC198 # HANGUL SYLLABLE SIOS-O-RIEULSIOS
-0x9997 0xC199 # HANGUL SYLLABLE SIOS-O-RIEULTHIEUTH
-0x9998 0xC19A # HANGUL SYLLABLE SIOS-O-RIEULPHIEUPH
-0x9999 0xC19B # HANGUL SYLLABLE SIOS-O-RIEULHIEUH
-0x999A 0xC19E # HANGUL SYLLABLE SIOS-O-PIEUPSIOS
-0x999B 0xC1A0 # HANGUL SYLLABLE SIOS-O-SSANGSIOS
-0x999C 0xC1A2 # HANGUL SYLLABLE SIOS-O-CIEUC
-0x999D 0xC1A3 # HANGUL SYLLABLE SIOS-O-CHIEUCH
-0x999E 0xC1A4 # HANGUL SYLLABLE SIOS-O-KHIEUKH
-0x999F 0xC1A6 # HANGUL SYLLABLE SIOS-O-PHIEUPH
-0x99A0 0xC1A7 # HANGUL SYLLABLE SIOS-O-HIEUH
-0x99A1 0xC1AA # HANGUL SYLLABLE SIOS-WA-SSANGKIYEOK
-0x99A2 0xC1AB # HANGUL SYLLABLE SIOS-WA-KIYEOKSIOS
-0x99A3 0xC1AD # HANGUL SYLLABLE SIOS-WA-NIEUNCIEUC
-0x99A4 0xC1AE # HANGUL SYLLABLE SIOS-WA-NIEUNHIEUH
-0x99A5 0xC1AF # HANGUL SYLLABLE SIOS-WA-TIKEUT
-0x99A6 0xC1B1 # HANGUL SYLLABLE SIOS-WA-RIEULKIYEOK
-0x99A7 0xC1B2 # HANGUL SYLLABLE SIOS-WA-RIEULMIEUM
-0x99A8 0xC1B3 # HANGUL SYLLABLE SIOS-WA-RIEULPIEUP
-0x99A9 0xC1B4 # HANGUL SYLLABLE SIOS-WA-RIEULSIOS
-0x99AA 0xC1B5 # HANGUL SYLLABLE SIOS-WA-RIEULTHIEUTH
-0x99AB 0xC1B6 # HANGUL SYLLABLE SIOS-WA-RIEULPHIEUPH
-0x99AC 0xC1B7 # HANGUL SYLLABLE SIOS-WA-RIEULHIEUH
-0x99AD 0xC1B8 # HANGUL SYLLABLE SIOS-WA-MIEUM
-0x99AE 0xC1B9 # HANGUL SYLLABLE SIOS-WA-PIEUP
-0x99AF 0xC1BA # HANGUL SYLLABLE SIOS-WA-PIEUPSIOS
-0x99B0 0xC1BB # HANGUL SYLLABLE SIOS-WA-SIOS
-0x99B1 0xC1BC # HANGUL SYLLABLE SIOS-WA-SSANGSIOS
-0x99B2 0xC1BE # HANGUL SYLLABLE SIOS-WA-CIEUC
-0x99B3 0xC1BF # HANGUL SYLLABLE SIOS-WA-CHIEUCH
-0x99B4 0xC1C0 # HANGUL SYLLABLE SIOS-WA-KHIEUKH
-0x99B5 0xC1C1 # HANGUL SYLLABLE SIOS-WA-THIEUTH
-0x99B6 0xC1C2 # HANGUL SYLLABLE SIOS-WA-PHIEUPH
-0x99B7 0xC1C3 # HANGUL SYLLABLE SIOS-WA-HIEUH
-0x99B8 0xC1C5 # HANGUL SYLLABLE SIOS-WAE-KIYEOK
-0x99B9 0xC1C6 # HANGUL SYLLABLE SIOS-WAE-SSANGKIYEOK
-0x99BA 0xC1C7 # HANGUL SYLLABLE SIOS-WAE-KIYEOKSIOS
-0x99BB 0xC1C9 # HANGUL SYLLABLE SIOS-WAE-NIEUNCIEUC
-0x99BC 0xC1CA # HANGUL SYLLABLE SIOS-WAE-NIEUNHIEUH
-0x99BD 0xC1CB # HANGUL SYLLABLE SIOS-WAE-TIKEUT
-0x99BE 0xC1CD # HANGUL SYLLABLE SIOS-WAE-RIEULKIYEOK
-0x99BF 0xC1CE # HANGUL SYLLABLE SIOS-WAE-RIEULMIEUM
-0x99C0 0xC1CF # HANGUL SYLLABLE SIOS-WAE-RIEULPIEUP
-0x99C1 0xC1D0 # HANGUL SYLLABLE SIOS-WAE-RIEULSIOS
-0x99C2 0xC1D1 # HANGUL SYLLABLE SIOS-WAE-RIEULTHIEUTH
-0x99C3 0xC1D2 # HANGUL SYLLABLE SIOS-WAE-RIEULPHIEUPH
-0x99C4 0xC1D3 # HANGUL SYLLABLE SIOS-WAE-RIEULHIEUH
-0x99C5 0xC1D5 # HANGUL SYLLABLE SIOS-WAE-PIEUP
-0x99C6 0xC1D6 # HANGUL SYLLABLE SIOS-WAE-PIEUPSIOS
-0x99C7 0xC1D9 # HANGUL SYLLABLE SIOS-WAE-IEUNG
-0x99C8 0xC1DA # HANGUL SYLLABLE SIOS-WAE-CIEUC
-0x99C9 0xC1DB # HANGUL SYLLABLE SIOS-WAE-CHIEUCH
-0x99CA 0xC1DC # HANGUL SYLLABLE SIOS-WAE-KHIEUKH
-0x99CB 0xC1DD # HANGUL SYLLABLE SIOS-WAE-THIEUTH
-0x99CC 0xC1DE # HANGUL SYLLABLE SIOS-WAE-PHIEUPH
-0x99CD 0xC1DF # HANGUL SYLLABLE SIOS-WAE-HIEUH
-0x99CE 0xC1E1 # HANGUL SYLLABLE SIOS-OE-KIYEOK
-0x99CF 0xC1E2 # HANGUL SYLLABLE SIOS-OE-SSANGKIYEOK
-0x99D0 0xC1E3 # HANGUL SYLLABLE SIOS-OE-KIYEOKSIOS
-0x99D1 0xC1E5 # HANGUL SYLLABLE SIOS-OE-NIEUNCIEUC
-0x99D2 0xC1E6 # HANGUL SYLLABLE SIOS-OE-NIEUNHIEUH
-0x99D3 0xC1E7 # HANGUL SYLLABLE SIOS-OE-TIKEUT
-0x99D4 0xC1E9 # HANGUL SYLLABLE SIOS-OE-RIEULKIYEOK
-0x99D5 0xC1EA # HANGUL SYLLABLE SIOS-OE-RIEULMIEUM
-0x99D6 0xC1EB # HANGUL SYLLABLE SIOS-OE-RIEULPIEUP
-0x99D7 0xC1EC # HANGUL SYLLABLE SIOS-OE-RIEULSIOS
-0x99D8 0xC1ED # HANGUL SYLLABLE SIOS-OE-RIEULTHIEUTH
-0x99D9 0xC1EE # HANGUL SYLLABLE SIOS-OE-RIEULPHIEUPH
-0x99DA 0xC1EF # HANGUL SYLLABLE SIOS-OE-RIEULHIEUH
-0x99DB 0xC1F2 # HANGUL SYLLABLE SIOS-OE-PIEUPSIOS
-0x99DC 0xC1F4 # HANGUL SYLLABLE SIOS-OE-SSANGSIOS
-0x99DD 0xC1F5 # HANGUL SYLLABLE SIOS-OE-IEUNG
-0x99DE 0xC1F6 # HANGUL SYLLABLE SIOS-OE-CIEUC
-0x99DF 0xC1F7 # HANGUL SYLLABLE SIOS-OE-CHIEUCH
-0x99E0 0xC1F8 # HANGUL SYLLABLE SIOS-OE-KHIEUKH
-0x99E1 0xC1F9 # HANGUL SYLLABLE SIOS-OE-THIEUTH
-0x99E2 0xC1FA # HANGUL SYLLABLE SIOS-OE-PHIEUPH
-0x99E3 0xC1FB # HANGUL SYLLABLE SIOS-OE-HIEUH
-0x99E4 0xC1FE # HANGUL SYLLABLE SIOS-YO-SSANGKIYEOK
-0x99E5 0xC1FF # HANGUL SYLLABLE SIOS-YO-KIYEOKSIOS
-0x99E6 0xC201 # HANGUL SYLLABLE SIOS-YO-NIEUNCIEUC
-0x99E7 0xC202 # HANGUL SYLLABLE SIOS-YO-NIEUNHIEUH
-0x99E8 0xC203 # HANGUL SYLLABLE SIOS-YO-TIKEUT
-0x99E9 0xC205 # HANGUL SYLLABLE SIOS-YO-RIEULKIYEOK
-0x99EA 0xC206 # HANGUL SYLLABLE SIOS-YO-RIEULMIEUM
-0x99EB 0xC207 # HANGUL SYLLABLE SIOS-YO-RIEULPIEUP
-0x99EC 0xC208 # HANGUL SYLLABLE SIOS-YO-RIEULSIOS
-0x99ED 0xC209 # HANGUL SYLLABLE SIOS-YO-RIEULTHIEUTH
-0x99EE 0xC20A # HANGUL SYLLABLE SIOS-YO-RIEULPHIEUPH
-0x99EF 0xC20B # HANGUL SYLLABLE SIOS-YO-RIEULHIEUH
-0x99F0 0xC20E # HANGUL SYLLABLE SIOS-YO-PIEUPSIOS
-0x99F1 0xC210 # HANGUL SYLLABLE SIOS-YO-SSANGSIOS
-0x99F2 0xC212 # HANGUL SYLLABLE SIOS-YO-CIEUC
-0x99F3 0xC213 # HANGUL SYLLABLE SIOS-YO-CHIEUCH
-0x99F4 0xC214 # HANGUL SYLLABLE SIOS-YO-KHIEUKH
-0x99F5 0xC215 # HANGUL SYLLABLE SIOS-YO-THIEUTH
-0x99F6 0xC216 # HANGUL SYLLABLE SIOS-YO-PHIEUPH
-0x99F7 0xC217 # HANGUL SYLLABLE SIOS-YO-HIEUH
-0x99F8 0xC21A # HANGUL SYLLABLE SIOS-U-SSANGKIYEOK
-0x99F9 0xC21B # HANGUL SYLLABLE SIOS-U-KIYEOKSIOS
-0x99FA 0xC21D # HANGUL SYLLABLE SIOS-U-NIEUNCIEUC
-0x99FB 0xC21E # HANGUL SYLLABLE SIOS-U-NIEUNHIEUH
-0x99FC 0xC221 # HANGUL SYLLABLE SIOS-U-RIEULKIYEOK
-0x99FD 0xC222 # HANGUL SYLLABLE SIOS-U-RIEULMIEUM
-0x99FE 0xC223 # HANGUL SYLLABLE SIOS-U-RIEULPIEUP
-0x9A41 0xC224 # HANGUL SYLLABLE SIOS-U-RIEULSIOS
-0x9A42 0xC225 # HANGUL SYLLABLE SIOS-U-RIEULTHIEUTH
-0x9A43 0xC226 # HANGUL SYLLABLE SIOS-U-RIEULPHIEUPH
-0x9A44 0xC227 # HANGUL SYLLABLE SIOS-U-RIEULHIEUH
-0x9A45 0xC22A # HANGUL SYLLABLE SIOS-U-PIEUPSIOS
-0x9A46 0xC22C # HANGUL SYLLABLE SIOS-U-SSANGSIOS
-0x9A47 0xC22E # HANGUL SYLLABLE SIOS-U-CIEUC
-0x9A48 0xC230 # HANGUL SYLLABLE SIOS-U-KHIEUKH
-0x9A49 0xC233 # HANGUL SYLLABLE SIOS-U-HIEUH
-0x9A4A 0xC235 # HANGUL SYLLABLE SIOS-WEO-KIYEOK
-0x9A4B 0xC236 # HANGUL SYLLABLE SIOS-WEO-SSANGKIYEOK
-0x9A4C 0xC237 # HANGUL SYLLABLE SIOS-WEO-KIYEOKSIOS
-0x9A4D 0xC238 # HANGUL SYLLABLE SIOS-WEO-NIEUN
-0x9A4E 0xC239 # HANGUL SYLLABLE SIOS-WEO-NIEUNCIEUC
-0x9A4F 0xC23A # HANGUL SYLLABLE SIOS-WEO-NIEUNHIEUH
-0x9A50 0xC23B # HANGUL SYLLABLE SIOS-WEO-TIKEUT
-0x9A51 0xC23C # HANGUL SYLLABLE SIOS-WEO-RIEUL
-0x9A52 0xC23D # HANGUL SYLLABLE SIOS-WEO-RIEULKIYEOK
-0x9A53 0xC23E # HANGUL SYLLABLE SIOS-WEO-RIEULMIEUM
-0x9A54 0xC23F # HANGUL SYLLABLE SIOS-WEO-RIEULPIEUP
-0x9A55 0xC240 # HANGUL SYLLABLE SIOS-WEO-RIEULSIOS
-0x9A56 0xC241 # HANGUL SYLLABLE SIOS-WEO-RIEULTHIEUTH
-0x9A57 0xC242 # HANGUL SYLLABLE SIOS-WEO-RIEULPHIEUPH
-0x9A58 0xC243 # HANGUL SYLLABLE SIOS-WEO-RIEULHIEUH
-0x9A59 0xC244 # HANGUL SYLLABLE SIOS-WEO-MIEUM
-0x9A5A 0xC245 # HANGUL SYLLABLE SIOS-WEO-PIEUP
-0x9A61 0xC246 # HANGUL SYLLABLE SIOS-WEO-PIEUPSIOS
-0x9A62 0xC247 # HANGUL SYLLABLE SIOS-WEO-SIOS
-0x9A63 0xC249 # HANGUL SYLLABLE SIOS-WEO-IEUNG
-0x9A64 0xC24A # HANGUL SYLLABLE SIOS-WEO-CIEUC
-0x9A65 0xC24B # HANGUL SYLLABLE SIOS-WEO-CHIEUCH
-0x9A66 0xC24C # HANGUL SYLLABLE SIOS-WEO-KHIEUKH
-0x9A67 0xC24D # HANGUL SYLLABLE SIOS-WEO-THIEUTH
-0x9A68 0xC24E # HANGUL SYLLABLE SIOS-WEO-PHIEUPH
-0x9A69 0xC24F # HANGUL SYLLABLE SIOS-WEO-HIEUH
-0x9A6A 0xC252 # HANGUL SYLLABLE SIOS-WE-SSANGKIYEOK
-0x9A6B 0xC253 # HANGUL SYLLABLE SIOS-WE-KIYEOKSIOS
-0x9A6C 0xC255 # HANGUL SYLLABLE SIOS-WE-NIEUNCIEUC
-0x9A6D 0xC256 # HANGUL SYLLABLE SIOS-WE-NIEUNHIEUH
-0x9A6E 0xC257 # HANGUL SYLLABLE SIOS-WE-TIKEUT
-0x9A6F 0xC259 # HANGUL SYLLABLE SIOS-WE-RIEULKIYEOK
-0x9A70 0xC25A # HANGUL SYLLABLE SIOS-WE-RIEULMIEUM
-0x9A71 0xC25B # HANGUL SYLLABLE SIOS-WE-RIEULPIEUP
-0x9A72 0xC25C # HANGUL SYLLABLE SIOS-WE-RIEULSIOS
-0x9A73 0xC25D # HANGUL SYLLABLE SIOS-WE-RIEULTHIEUTH
-0x9A74 0xC25E # HANGUL SYLLABLE SIOS-WE-RIEULPHIEUPH
-0x9A75 0xC25F # HANGUL SYLLABLE SIOS-WE-RIEULHIEUH
-0x9A76 0xC261 # HANGUL SYLLABLE SIOS-WE-PIEUP
-0x9A77 0xC262 # HANGUL SYLLABLE SIOS-WE-PIEUPSIOS
-0x9A78 0xC263 # HANGUL SYLLABLE SIOS-WE-SIOS
-0x9A79 0xC264 # HANGUL SYLLABLE SIOS-WE-SSANGSIOS
-0x9A7A 0xC266 # HANGUL SYLLABLE SIOS-WE-CIEUC
-0x9A81 0xC267 # HANGUL SYLLABLE SIOS-WE-CHIEUCH
-0x9A82 0xC268 # HANGUL SYLLABLE SIOS-WE-KHIEUKH
-0x9A83 0xC269 # HANGUL SYLLABLE SIOS-WE-THIEUTH
-0x9A84 0xC26A # HANGUL SYLLABLE SIOS-WE-PHIEUPH
-0x9A85 0xC26B # HANGUL SYLLABLE SIOS-WE-HIEUH
-0x9A86 0xC26E # HANGUL SYLLABLE SIOS-WI-SSANGKIYEOK
-0x9A87 0xC26F # HANGUL SYLLABLE SIOS-WI-KIYEOKSIOS
-0x9A88 0xC271 # HANGUL SYLLABLE SIOS-WI-NIEUNCIEUC
-0x9A89 0xC272 # HANGUL SYLLABLE SIOS-WI-NIEUNHIEUH
-0x9A8A 0xC273 # HANGUL SYLLABLE SIOS-WI-TIKEUT
-0x9A8B 0xC275 # HANGUL SYLLABLE SIOS-WI-RIEULKIYEOK
-0x9A8C 0xC276 # HANGUL SYLLABLE SIOS-WI-RIEULMIEUM
-0x9A8D 0xC277 # HANGUL SYLLABLE SIOS-WI-RIEULPIEUP
-0x9A8E 0xC278 # HANGUL SYLLABLE SIOS-WI-RIEULSIOS
-0x9A8F 0xC279 # HANGUL SYLLABLE SIOS-WI-RIEULTHIEUTH
-0x9A90 0xC27A # HANGUL SYLLABLE SIOS-WI-RIEULPHIEUPH
-0x9A91 0xC27B # HANGUL SYLLABLE SIOS-WI-RIEULHIEUH
-0x9A92 0xC27E # HANGUL SYLLABLE SIOS-WI-PIEUPSIOS
-0x9A93 0xC280 # HANGUL SYLLABLE SIOS-WI-SSANGSIOS
-0x9A94 0xC282 # HANGUL SYLLABLE SIOS-WI-CIEUC
-0x9A95 0xC283 # HANGUL SYLLABLE SIOS-WI-CHIEUCH
-0x9A96 0xC284 # HANGUL SYLLABLE SIOS-WI-KHIEUKH
-0x9A97 0xC285 # HANGUL SYLLABLE SIOS-WI-THIEUTH
-0x9A98 0xC286 # HANGUL SYLLABLE SIOS-WI-PHIEUPH
-0x9A99 0xC287 # HANGUL SYLLABLE SIOS-WI-HIEUH
-0x9A9A 0xC28A # HANGUL SYLLABLE SIOS-YU-SSANGKIYEOK
-0x9A9B 0xC28B # HANGUL SYLLABLE SIOS-YU-KIYEOKSIOS
-0x9A9C 0xC28C # HANGUL SYLLABLE SIOS-YU-NIEUN
-0x9A9D 0xC28D # HANGUL SYLLABLE SIOS-YU-NIEUNCIEUC
-0x9A9E 0xC28E # HANGUL SYLLABLE SIOS-YU-NIEUNHIEUH
-0x9A9F 0xC28F # HANGUL SYLLABLE SIOS-YU-TIKEUT
-0x9AA0 0xC291 # HANGUL SYLLABLE SIOS-YU-RIEULKIYEOK
-0x9AA1 0xC292 # HANGUL SYLLABLE SIOS-YU-RIEULMIEUM
-0x9AA2 0xC293 # HANGUL SYLLABLE SIOS-YU-RIEULPIEUP
-0x9AA3 0xC294 # HANGUL SYLLABLE SIOS-YU-RIEULSIOS
-0x9AA4 0xC295 # HANGUL SYLLABLE SIOS-YU-RIEULTHIEUTH
-0x9AA5 0xC296 # HANGUL SYLLABLE SIOS-YU-RIEULPHIEUPH
-0x9AA6 0xC297 # HANGUL SYLLABLE SIOS-YU-RIEULHIEUH
-0x9AA7 0xC299 # HANGUL SYLLABLE SIOS-YU-PIEUP
-0x9AA8 0xC29A # HANGUL SYLLABLE SIOS-YU-PIEUPSIOS
-0x9AA9 0xC29C # HANGUL SYLLABLE SIOS-YU-SSANGSIOS
-0x9AAA 0xC29E # HANGUL SYLLABLE SIOS-YU-CIEUC
-0x9AAB 0xC29F # HANGUL SYLLABLE SIOS-YU-CHIEUCH
-0x9AAC 0xC2A0 # HANGUL SYLLABLE SIOS-YU-KHIEUKH
-0x9AAD 0xC2A1 # HANGUL SYLLABLE SIOS-YU-THIEUTH
-0x9AAE 0xC2A2 # HANGUL SYLLABLE SIOS-YU-PHIEUPH
-0x9AAF 0xC2A3 # HANGUL SYLLABLE SIOS-YU-HIEUH
-0x9AB0 0xC2A6 # HANGUL SYLLABLE SIOS-EU-SSANGKIYEOK
-0x9AB1 0xC2A7 # HANGUL SYLLABLE SIOS-EU-KIYEOKSIOS
-0x9AB2 0xC2A9 # HANGUL SYLLABLE SIOS-EU-NIEUNCIEUC
-0x9AB3 0xC2AA # HANGUL SYLLABLE SIOS-EU-NIEUNHIEUH
-0x9AB4 0xC2AB # HANGUL SYLLABLE SIOS-EU-TIKEUT
-0x9AB5 0xC2AE # HANGUL SYLLABLE SIOS-EU-RIEULMIEUM
-0x9AB6 0xC2AF # HANGUL SYLLABLE SIOS-EU-RIEULPIEUP
-0x9AB7 0xC2B0 # HANGUL SYLLABLE SIOS-EU-RIEULSIOS
-0x9AB8 0xC2B1 # HANGUL SYLLABLE SIOS-EU-RIEULTHIEUTH
-0x9AB9 0xC2B2 # HANGUL SYLLABLE SIOS-EU-RIEULPHIEUPH
-0x9ABA 0xC2B3 # HANGUL SYLLABLE SIOS-EU-RIEULHIEUH
-0x9ABB 0xC2B6 # HANGUL SYLLABLE SIOS-EU-PIEUPSIOS
-0x9ABC 0xC2B8 # HANGUL SYLLABLE SIOS-EU-SSANGSIOS
-0x9ABD 0xC2BA # HANGUL SYLLABLE SIOS-EU-CIEUC
-0x9ABE 0xC2BB # HANGUL SYLLABLE SIOS-EU-CHIEUCH
-0x9ABF 0xC2BC # HANGUL SYLLABLE SIOS-EU-KHIEUKH
-0x9AC0 0xC2BD # HANGUL SYLLABLE SIOS-EU-THIEUTH
-0x9AC1 0xC2BE # HANGUL SYLLABLE SIOS-EU-PHIEUPH
-0x9AC2 0xC2BF # HANGUL SYLLABLE SIOS-EU-HIEUH
-0x9AC3 0xC2C0 # HANGUL SYLLABLE SIOS-YI
-0x9AC4 0xC2C1 # HANGUL SYLLABLE SIOS-YI-KIYEOK
-0x9AC5 0xC2C2 # HANGUL SYLLABLE SIOS-YI-SSANGKIYEOK
-0x9AC6 0xC2C3 # HANGUL SYLLABLE SIOS-YI-KIYEOKSIOS
-0x9AC7 0xC2C4 # HANGUL SYLLABLE SIOS-YI-NIEUN
-0x9AC8 0xC2C5 # HANGUL SYLLABLE SIOS-YI-NIEUNCIEUC
-0x9AC9 0xC2C6 # HANGUL SYLLABLE SIOS-YI-NIEUNHIEUH
-0x9ACA 0xC2C7 # HANGUL SYLLABLE SIOS-YI-TIKEUT
-0x9ACB 0xC2C8 # HANGUL SYLLABLE SIOS-YI-RIEUL
-0x9ACC 0xC2C9 # HANGUL SYLLABLE SIOS-YI-RIEULKIYEOK
-0x9ACD 0xC2CA # HANGUL SYLLABLE SIOS-YI-RIEULMIEUM
-0x9ACE 0xC2CB # HANGUL SYLLABLE SIOS-YI-RIEULPIEUP
-0x9ACF 0xC2CC # HANGUL SYLLABLE SIOS-YI-RIEULSIOS
-0x9AD0 0xC2CD # HANGUL SYLLABLE SIOS-YI-RIEULTHIEUTH
-0x9AD1 0xC2CE # HANGUL SYLLABLE SIOS-YI-RIEULPHIEUPH
-0x9AD2 0xC2CF # HANGUL SYLLABLE SIOS-YI-RIEULHIEUH
-0x9AD3 0xC2D0 # HANGUL SYLLABLE SIOS-YI-MIEUM
-0x9AD4 0xC2D1 # HANGUL SYLLABLE SIOS-YI-PIEUP
-0x9AD5 0xC2D2 # HANGUL SYLLABLE SIOS-YI-PIEUPSIOS
-0x9AD6 0xC2D3 # HANGUL SYLLABLE SIOS-YI-SIOS
-0x9AD7 0xC2D4 # HANGUL SYLLABLE SIOS-YI-SSANGSIOS
-0x9AD8 0xC2D5 # HANGUL SYLLABLE SIOS-YI-IEUNG
-0x9AD9 0xC2D6 # HANGUL SYLLABLE SIOS-YI-CIEUC
-0x9ADA 0xC2D7 # HANGUL SYLLABLE SIOS-YI-CHIEUCH
-0x9ADB 0xC2D8 # HANGUL SYLLABLE SIOS-YI-KHIEUKH
-0x9ADC 0xC2D9 # HANGUL SYLLABLE SIOS-YI-THIEUTH
-0x9ADD 0xC2DA # HANGUL SYLLABLE SIOS-YI-PHIEUPH
-0x9ADE 0xC2DB # HANGUL SYLLABLE SIOS-YI-HIEUH
-0x9ADF 0xC2DE # HANGUL SYLLABLE SIOS-I-SSANGKIYEOK
-0x9AE0 0xC2DF # HANGUL SYLLABLE SIOS-I-KIYEOKSIOS
-0x9AE1 0xC2E1 # HANGUL SYLLABLE SIOS-I-NIEUNCIEUC
-0x9AE2 0xC2E2 # HANGUL SYLLABLE SIOS-I-NIEUNHIEUH
-0x9AE3 0xC2E5 # HANGUL SYLLABLE SIOS-I-RIEULKIYEOK
-0x9AE4 0xC2E6 # HANGUL SYLLABLE SIOS-I-RIEULMIEUM
-0x9AE5 0xC2E7 # HANGUL SYLLABLE SIOS-I-RIEULPIEUP
-0x9AE6 0xC2E8 # HANGUL SYLLABLE SIOS-I-RIEULSIOS
-0x9AE7 0xC2E9 # HANGUL SYLLABLE SIOS-I-RIEULTHIEUTH
-0x9AE8 0xC2EA # HANGUL SYLLABLE SIOS-I-RIEULPHIEUPH
-0x9AE9 0xC2EE # HANGUL SYLLABLE SIOS-I-PIEUPSIOS
-0x9AEA 0xC2F0 # HANGUL SYLLABLE SIOS-I-SSANGSIOS
-0x9AEB 0xC2F2 # HANGUL SYLLABLE SIOS-I-CIEUC
-0x9AEC 0xC2F3 # HANGUL SYLLABLE SIOS-I-CHIEUCH
-0x9AED 0xC2F4 # HANGUL SYLLABLE SIOS-I-KHIEUKH
-0x9AEE 0xC2F5 # HANGUL SYLLABLE SIOS-I-THIEUTH
-0x9AEF 0xC2F7 # HANGUL SYLLABLE SIOS-I-HIEUH
-0x9AF0 0xC2FA # HANGUL SYLLABLE SSANGSIOS-A-SSANGKIYEOK
-0x9AF1 0xC2FD # HANGUL SYLLABLE SSANGSIOS-A-NIEUNCIEUC
-0x9AF2 0xC2FE # HANGUL SYLLABLE SSANGSIOS-A-NIEUNHIEUH
-0x9AF3 0xC2FF # HANGUL SYLLABLE SSANGSIOS-A-TIKEUT
-0x9AF4 0xC301 # HANGUL SYLLABLE SSANGSIOS-A-RIEULKIYEOK
-0x9AF5 0xC302 # HANGUL SYLLABLE SSANGSIOS-A-RIEULMIEUM
-0x9AF6 0xC303 # HANGUL SYLLABLE SSANGSIOS-A-RIEULPIEUP
-0x9AF7 0xC304 # HANGUL SYLLABLE SSANGSIOS-A-RIEULSIOS
-0x9AF8 0xC305 # HANGUL SYLLABLE SSANGSIOS-A-RIEULTHIEUTH
-0x9AF9 0xC306 # HANGUL SYLLABLE SSANGSIOS-A-RIEULPHIEUPH
-0x9AFA 0xC307 # HANGUL SYLLABLE SSANGSIOS-A-RIEULHIEUH
-0x9AFB 0xC30A # HANGUL SYLLABLE SSANGSIOS-A-PIEUPSIOS
-0x9AFC 0xC30B # HANGUL SYLLABLE SSANGSIOS-A-SIOS
-0x9AFD 0xC30E # HANGUL SYLLABLE SSANGSIOS-A-CIEUC
-0x9AFE 0xC30F # HANGUL SYLLABLE SSANGSIOS-A-CHIEUCH
-0x9B41 0xC310 # HANGUL SYLLABLE SSANGSIOS-A-KHIEUKH
-0x9B42 0xC311 # HANGUL SYLLABLE SSANGSIOS-A-THIEUTH
-0x9B43 0xC312 # HANGUL SYLLABLE SSANGSIOS-A-PHIEUPH
-0x9B44 0xC316 # HANGUL SYLLABLE SSANGSIOS-AE-SSANGKIYEOK
-0x9B45 0xC317 # HANGUL SYLLABLE SSANGSIOS-AE-KIYEOKSIOS
-0x9B46 0xC319 # HANGUL SYLLABLE SSANGSIOS-AE-NIEUNCIEUC
-0x9B47 0xC31A # HANGUL SYLLABLE SSANGSIOS-AE-NIEUNHIEUH
-0x9B48 0xC31B # HANGUL SYLLABLE SSANGSIOS-AE-TIKEUT
-0x9B49 0xC31D # HANGUL SYLLABLE SSANGSIOS-AE-RIEULKIYEOK
-0x9B4A 0xC31E # HANGUL SYLLABLE SSANGSIOS-AE-RIEULMIEUM
-0x9B4B 0xC31F # HANGUL SYLLABLE SSANGSIOS-AE-RIEULPIEUP
-0x9B4C 0xC320 # HANGUL SYLLABLE SSANGSIOS-AE-RIEULSIOS
-0x9B4D 0xC321 # HANGUL SYLLABLE SSANGSIOS-AE-RIEULTHIEUTH
-0x9B4E 0xC322 # HANGUL SYLLABLE SSANGSIOS-AE-RIEULPHIEUPH
-0x9B4F 0xC323 # HANGUL SYLLABLE SSANGSIOS-AE-RIEULHIEUH
-0x9B50 0xC326 # HANGUL SYLLABLE SSANGSIOS-AE-PIEUPSIOS
-0x9B51 0xC327 # HANGUL SYLLABLE SSANGSIOS-AE-SIOS
-0x9B52 0xC32A # HANGUL SYLLABLE SSANGSIOS-AE-CIEUC
-0x9B53 0xC32B # HANGUL SYLLABLE SSANGSIOS-AE-CHIEUCH
-0x9B54 0xC32C # HANGUL SYLLABLE SSANGSIOS-AE-KHIEUKH
-0x9B55 0xC32D # HANGUL SYLLABLE SSANGSIOS-AE-THIEUTH
-0x9B56 0xC32E # HANGUL SYLLABLE SSANGSIOS-AE-PHIEUPH
-0x9B57 0xC32F # HANGUL SYLLABLE SSANGSIOS-AE-HIEUH
-0x9B58 0xC330 # HANGUL SYLLABLE SSANGSIOS-YA
-0x9B59 0xC331 # HANGUL SYLLABLE SSANGSIOS-YA-KIYEOK
-0x9B5A 0xC332 # HANGUL SYLLABLE SSANGSIOS-YA-SSANGKIYEOK
-0x9B61 0xC333 # HANGUL SYLLABLE SSANGSIOS-YA-KIYEOKSIOS
-0x9B62 0xC334 # HANGUL SYLLABLE SSANGSIOS-YA-NIEUN
-0x9B63 0xC335 # HANGUL SYLLABLE SSANGSIOS-YA-NIEUNCIEUC
-0x9B64 0xC336 # HANGUL SYLLABLE SSANGSIOS-YA-NIEUNHIEUH
-0x9B65 0xC337 # HANGUL SYLLABLE SSANGSIOS-YA-TIKEUT
-0x9B66 0xC338 # HANGUL SYLLABLE SSANGSIOS-YA-RIEUL
-0x9B67 0xC339 # HANGUL SYLLABLE SSANGSIOS-YA-RIEULKIYEOK
-0x9B68 0xC33A # HANGUL SYLLABLE SSANGSIOS-YA-RIEULMIEUM
-0x9B69 0xC33B # HANGUL SYLLABLE SSANGSIOS-YA-RIEULPIEUP
-0x9B6A 0xC33C # HANGUL SYLLABLE SSANGSIOS-YA-RIEULSIOS
-0x9B6B 0xC33D # HANGUL SYLLABLE SSANGSIOS-YA-RIEULTHIEUTH
-0x9B6C 0xC33E # HANGUL SYLLABLE SSANGSIOS-YA-RIEULPHIEUPH
-0x9B6D 0xC33F # HANGUL SYLLABLE SSANGSIOS-YA-RIEULHIEUH
-0x9B6E 0xC340 # HANGUL SYLLABLE SSANGSIOS-YA-MIEUM
-0x9B6F 0xC341 # HANGUL SYLLABLE SSANGSIOS-YA-PIEUP
-0x9B70 0xC342 # HANGUL SYLLABLE SSANGSIOS-YA-PIEUPSIOS
-0x9B71 0xC343 # HANGUL SYLLABLE SSANGSIOS-YA-SIOS
-0x9B72 0xC344 # HANGUL SYLLABLE SSANGSIOS-YA-SSANGSIOS
-0x9B73 0xC346 # HANGUL SYLLABLE SSANGSIOS-YA-CIEUC
-0x9B74 0xC347 # HANGUL SYLLABLE SSANGSIOS-YA-CHIEUCH
-0x9B75 0xC348 # HANGUL SYLLABLE SSANGSIOS-YA-KHIEUKH
-0x9B76 0xC349 # HANGUL SYLLABLE SSANGSIOS-YA-THIEUTH
-0x9B77 0xC34A # HANGUL SYLLABLE SSANGSIOS-YA-PHIEUPH
-0x9B78 0xC34B # HANGUL SYLLABLE SSANGSIOS-YA-HIEUH
-0x9B79 0xC34C # HANGUL SYLLABLE SSANGSIOS-YAE
-0x9B7A 0xC34D # HANGUL SYLLABLE SSANGSIOS-YAE-KIYEOK
-0x9B81 0xC34E # HANGUL SYLLABLE SSANGSIOS-YAE-SSANGKIYEOK
-0x9B82 0xC34F # HANGUL SYLLABLE SSANGSIOS-YAE-KIYEOKSIOS
-0x9B83 0xC350 # HANGUL SYLLABLE SSANGSIOS-YAE-NIEUN
-0x9B84 0xC351 # HANGUL SYLLABLE SSANGSIOS-YAE-NIEUNCIEUC
-0x9B85 0xC352 # HANGUL SYLLABLE SSANGSIOS-YAE-NIEUNHIEUH
-0x9B86 0xC353 # HANGUL SYLLABLE SSANGSIOS-YAE-TIKEUT
-0x9B87 0xC354 # HANGUL SYLLABLE SSANGSIOS-YAE-RIEUL
-0x9B88 0xC355 # HANGUL SYLLABLE SSANGSIOS-YAE-RIEULKIYEOK
-0x9B89 0xC356 # HANGUL SYLLABLE SSANGSIOS-YAE-RIEULMIEUM
-0x9B8A 0xC357 # HANGUL SYLLABLE SSANGSIOS-YAE-RIEULPIEUP
-0x9B8B 0xC358 # HANGUL SYLLABLE SSANGSIOS-YAE-RIEULSIOS
-0x9B8C 0xC359 # HANGUL SYLLABLE SSANGSIOS-YAE-RIEULTHIEUTH
-0x9B8D 0xC35A # HANGUL SYLLABLE SSANGSIOS-YAE-RIEULPHIEUPH
-0x9B8E 0xC35B # HANGUL SYLLABLE SSANGSIOS-YAE-RIEULHIEUH
-0x9B8F 0xC35C # HANGUL SYLLABLE SSANGSIOS-YAE-MIEUM
-0x9B90 0xC35D # HANGUL SYLLABLE SSANGSIOS-YAE-PIEUP
-0x9B91 0xC35E # HANGUL SYLLABLE SSANGSIOS-YAE-PIEUPSIOS
-0x9B92 0xC35F # HANGUL SYLLABLE SSANGSIOS-YAE-SIOS
-0x9B93 0xC360 # HANGUL SYLLABLE SSANGSIOS-YAE-SSANGSIOS
-0x9B94 0xC361 # HANGUL SYLLABLE SSANGSIOS-YAE-IEUNG
-0x9B95 0xC362 # HANGUL SYLLABLE SSANGSIOS-YAE-CIEUC
-0x9B96 0xC363 # HANGUL SYLLABLE SSANGSIOS-YAE-CHIEUCH
-0x9B97 0xC364 # HANGUL SYLLABLE SSANGSIOS-YAE-KHIEUKH
-0x9B98 0xC365 # HANGUL SYLLABLE SSANGSIOS-YAE-THIEUTH
-0x9B99 0xC366 # HANGUL SYLLABLE SSANGSIOS-YAE-PHIEUPH
-0x9B9A 0xC367 # HANGUL SYLLABLE SSANGSIOS-YAE-HIEUH
-0x9B9B 0xC36A # HANGUL SYLLABLE SSANGSIOS-EO-SSANGKIYEOK
-0x9B9C 0xC36B # HANGUL SYLLABLE SSANGSIOS-EO-KIYEOKSIOS
-0x9B9D 0xC36D # HANGUL SYLLABLE SSANGSIOS-EO-NIEUNCIEUC
-0x9B9E 0xC36E # HANGUL SYLLABLE SSANGSIOS-EO-NIEUNHIEUH
-0x9B9F 0xC36F # HANGUL SYLLABLE SSANGSIOS-EO-TIKEUT
-0x9BA0 0xC371 # HANGUL SYLLABLE SSANGSIOS-EO-RIEULKIYEOK
-0x9BA1 0xC373 # HANGUL SYLLABLE SSANGSIOS-EO-RIEULPIEUP
-0x9BA2 0xC374 # HANGUL SYLLABLE SSANGSIOS-EO-RIEULSIOS
-0x9BA3 0xC375 # HANGUL SYLLABLE SSANGSIOS-EO-RIEULTHIEUTH
-0x9BA4 0xC376 # HANGUL SYLLABLE SSANGSIOS-EO-RIEULPHIEUPH
-0x9BA5 0xC377 # HANGUL SYLLABLE SSANGSIOS-EO-RIEULHIEUH
-0x9BA6 0xC37A # HANGUL SYLLABLE SSANGSIOS-EO-PIEUPSIOS
-0x9BA7 0xC37B # HANGUL SYLLABLE SSANGSIOS-EO-SIOS
-0x9BA8 0xC37E # HANGUL SYLLABLE SSANGSIOS-EO-CIEUC
-0x9BA9 0xC37F # HANGUL SYLLABLE SSANGSIOS-EO-CHIEUCH
-0x9BAA 0xC380 # HANGUL SYLLABLE SSANGSIOS-EO-KHIEUKH
-0x9BAB 0xC381 # HANGUL SYLLABLE SSANGSIOS-EO-THIEUTH
-0x9BAC 0xC382 # HANGUL SYLLABLE SSANGSIOS-EO-PHIEUPH
-0x9BAD 0xC383 # HANGUL SYLLABLE SSANGSIOS-EO-HIEUH
-0x9BAE 0xC385 # HANGUL SYLLABLE SSANGSIOS-E-KIYEOK
-0x9BAF 0xC386 # HANGUL SYLLABLE SSANGSIOS-E-SSANGKIYEOK
-0x9BB0 0xC387 # HANGUL SYLLABLE SSANGSIOS-E-KIYEOKSIOS
-0x9BB1 0xC389 # HANGUL SYLLABLE SSANGSIOS-E-NIEUNCIEUC
-0x9BB2 0xC38A # HANGUL SYLLABLE SSANGSIOS-E-NIEUNHIEUH
-0x9BB3 0xC38B # HANGUL SYLLABLE SSANGSIOS-E-TIKEUT
-0x9BB4 0xC38D # HANGUL SYLLABLE SSANGSIOS-E-RIEULKIYEOK
-0x9BB5 0xC38E # HANGUL SYLLABLE SSANGSIOS-E-RIEULMIEUM
-0x9BB6 0xC38F # HANGUL SYLLABLE SSANGSIOS-E-RIEULPIEUP
-0x9BB7 0xC390 # HANGUL SYLLABLE SSANGSIOS-E-RIEULSIOS
-0x9BB8 0xC391 # HANGUL SYLLABLE SSANGSIOS-E-RIEULTHIEUTH
-0x9BB9 0xC392 # HANGUL SYLLABLE SSANGSIOS-E-RIEULPHIEUPH
-0x9BBA 0xC393 # HANGUL SYLLABLE SSANGSIOS-E-RIEULHIEUH
-0x9BBB 0xC394 # HANGUL SYLLABLE SSANGSIOS-E-MIEUM
-0x9BBC 0xC395 # HANGUL SYLLABLE SSANGSIOS-E-PIEUP
-0x9BBD 0xC396 # HANGUL SYLLABLE SSANGSIOS-E-PIEUPSIOS
-0x9BBE 0xC397 # HANGUL SYLLABLE SSANGSIOS-E-SIOS
-0x9BBF 0xC398 # HANGUL SYLLABLE SSANGSIOS-E-SSANGSIOS
-0x9BC0 0xC399 # HANGUL SYLLABLE SSANGSIOS-E-IEUNG
-0x9BC1 0xC39A # HANGUL SYLLABLE SSANGSIOS-E-CIEUC
-0x9BC2 0xC39B # HANGUL SYLLABLE SSANGSIOS-E-CHIEUCH
-0x9BC3 0xC39C # HANGUL SYLLABLE SSANGSIOS-E-KHIEUKH
-0x9BC4 0xC39D # HANGUL SYLLABLE SSANGSIOS-E-THIEUTH
-0x9BC5 0xC39E # HANGUL SYLLABLE SSANGSIOS-E-PHIEUPH
-0x9BC6 0xC39F # HANGUL SYLLABLE SSANGSIOS-E-HIEUH
-0x9BC7 0xC3A0 # HANGUL SYLLABLE SSANGSIOS-YEO
-0x9BC8 0xC3A1 # HANGUL SYLLABLE SSANGSIOS-YEO-KIYEOK
-0x9BC9 0xC3A2 # HANGUL SYLLABLE SSANGSIOS-YEO-SSANGKIYEOK
-0x9BCA 0xC3A3 # HANGUL SYLLABLE SSANGSIOS-YEO-KIYEOKSIOS
-0x9BCB 0xC3A4 # HANGUL SYLLABLE SSANGSIOS-YEO-NIEUN
-0x9BCC 0xC3A5 # HANGUL SYLLABLE SSANGSIOS-YEO-NIEUNCIEUC
-0x9BCD 0xC3A6 # HANGUL SYLLABLE SSANGSIOS-YEO-NIEUNHIEUH
-0x9BCE 0xC3A7 # HANGUL SYLLABLE SSANGSIOS-YEO-TIKEUT
-0x9BCF 0xC3A8 # HANGUL SYLLABLE SSANGSIOS-YEO-RIEUL
-0x9BD0 0xC3A9 # HANGUL SYLLABLE SSANGSIOS-YEO-RIEULKIYEOK
-0x9BD1 0xC3AA # HANGUL SYLLABLE SSANGSIOS-YEO-RIEULMIEUM
-0x9BD2 0xC3AB # HANGUL SYLLABLE SSANGSIOS-YEO-RIEULPIEUP
-0x9BD3 0xC3AC # HANGUL SYLLABLE SSANGSIOS-YEO-RIEULSIOS
-0x9BD4 0xC3AD # HANGUL SYLLABLE SSANGSIOS-YEO-RIEULTHIEUTH
-0x9BD5 0xC3AE # HANGUL SYLLABLE SSANGSIOS-YEO-RIEULPHIEUPH
-0x9BD6 0xC3AF # HANGUL SYLLABLE SSANGSIOS-YEO-RIEULHIEUH
-0x9BD7 0xC3B0 # HANGUL SYLLABLE SSANGSIOS-YEO-MIEUM
-0x9BD8 0xC3B1 # HANGUL SYLLABLE SSANGSIOS-YEO-PIEUP
-0x9BD9 0xC3B2 # HANGUL SYLLABLE SSANGSIOS-YEO-PIEUPSIOS
-0x9BDA 0xC3B3 # HANGUL SYLLABLE SSANGSIOS-YEO-SIOS
-0x9BDB 0xC3B4 # HANGUL SYLLABLE SSANGSIOS-YEO-SSANGSIOS
-0x9BDC 0xC3B5 # HANGUL SYLLABLE SSANGSIOS-YEO-IEUNG
-0x9BDD 0xC3B6 # HANGUL SYLLABLE SSANGSIOS-YEO-CIEUC
-0x9BDE 0xC3B7 # HANGUL SYLLABLE SSANGSIOS-YEO-CHIEUCH
-0x9BDF 0xC3B8 # HANGUL SYLLABLE SSANGSIOS-YEO-KHIEUKH
-0x9BE0 0xC3B9 # HANGUL SYLLABLE SSANGSIOS-YEO-THIEUTH
-0x9BE1 0xC3BA # HANGUL SYLLABLE SSANGSIOS-YEO-PHIEUPH
-0x9BE2 0xC3BB # HANGUL SYLLABLE SSANGSIOS-YEO-HIEUH
-0x9BE3 0xC3BC # HANGUL SYLLABLE SSANGSIOS-YE
-0x9BE4 0xC3BD # HANGUL SYLLABLE SSANGSIOS-YE-KIYEOK
-0x9BE5 0xC3BE # HANGUL SYLLABLE SSANGSIOS-YE-SSANGKIYEOK
-0x9BE6 0xC3BF # HANGUL SYLLABLE SSANGSIOS-YE-KIYEOKSIOS
-0x9BE7 0xC3C1 # HANGUL SYLLABLE SSANGSIOS-YE-NIEUNCIEUC
-0x9BE8 0xC3C2 # HANGUL SYLLABLE SSANGSIOS-YE-NIEUNHIEUH
-0x9BE9 0xC3C3 # HANGUL SYLLABLE SSANGSIOS-YE-TIKEUT
-0x9BEA 0xC3C4 # HANGUL SYLLABLE SSANGSIOS-YE-RIEUL
-0x9BEB 0xC3C5 # HANGUL SYLLABLE SSANGSIOS-YE-RIEULKIYEOK
-0x9BEC 0xC3C6 # HANGUL SYLLABLE SSANGSIOS-YE-RIEULMIEUM
-0x9BED 0xC3C7 # HANGUL SYLLABLE SSANGSIOS-YE-RIEULPIEUP
-0x9BEE 0xC3C8 # HANGUL SYLLABLE SSANGSIOS-YE-RIEULSIOS
-0x9BEF 0xC3C9 # HANGUL SYLLABLE SSANGSIOS-YE-RIEULTHIEUTH
-0x9BF0 0xC3CA # HANGUL SYLLABLE SSANGSIOS-YE-RIEULPHIEUPH
-0x9BF1 0xC3CB # HANGUL SYLLABLE SSANGSIOS-YE-RIEULHIEUH
-0x9BF2 0xC3CC # HANGUL SYLLABLE SSANGSIOS-YE-MIEUM
-0x9BF3 0xC3CD # HANGUL SYLLABLE SSANGSIOS-YE-PIEUP
-0x9BF4 0xC3CE # HANGUL SYLLABLE SSANGSIOS-YE-PIEUPSIOS
-0x9BF5 0xC3CF # HANGUL SYLLABLE SSANGSIOS-YE-SIOS
-0x9BF6 0xC3D0 # HANGUL SYLLABLE SSANGSIOS-YE-SSANGSIOS
-0x9BF7 0xC3D1 # HANGUL SYLLABLE SSANGSIOS-YE-IEUNG
-0x9BF8 0xC3D2 # HANGUL SYLLABLE SSANGSIOS-YE-CIEUC
-0x9BF9 0xC3D3 # HANGUL SYLLABLE SSANGSIOS-YE-CHIEUCH
-0x9BFA 0xC3D4 # HANGUL SYLLABLE SSANGSIOS-YE-KHIEUKH
-0x9BFB 0xC3D5 # HANGUL SYLLABLE SSANGSIOS-YE-THIEUTH
-0x9BFC 0xC3D6 # HANGUL SYLLABLE SSANGSIOS-YE-PHIEUPH
-0x9BFD 0xC3D7 # HANGUL SYLLABLE SSANGSIOS-YE-HIEUH
-0x9BFE 0xC3DA # HANGUL SYLLABLE SSANGSIOS-O-SSANGKIYEOK
-0x9C41 0xC3DB # HANGUL SYLLABLE SSANGSIOS-O-KIYEOKSIOS
-0x9C42 0xC3DD # HANGUL SYLLABLE SSANGSIOS-O-NIEUNCIEUC
-0x9C43 0xC3DE # HANGUL SYLLABLE SSANGSIOS-O-NIEUNHIEUH
-0x9C44 0xC3E1 # HANGUL SYLLABLE SSANGSIOS-O-RIEULKIYEOK
-0x9C45 0xC3E3 # HANGUL SYLLABLE SSANGSIOS-O-RIEULPIEUP
-0x9C46 0xC3E4 # HANGUL SYLLABLE SSANGSIOS-O-RIEULSIOS
-0x9C47 0xC3E5 # HANGUL SYLLABLE SSANGSIOS-O-RIEULTHIEUTH
-0x9C48 0xC3E6 # HANGUL SYLLABLE SSANGSIOS-O-RIEULPHIEUPH
-0x9C49 0xC3E7 # HANGUL SYLLABLE SSANGSIOS-O-RIEULHIEUH
-0x9C4A 0xC3EA # HANGUL SYLLABLE SSANGSIOS-O-PIEUPSIOS
-0x9C4B 0xC3EB # HANGUL SYLLABLE SSANGSIOS-O-SIOS
-0x9C4C 0xC3EC # HANGUL SYLLABLE SSANGSIOS-O-SSANGSIOS
-0x9C4D 0xC3EE # HANGUL SYLLABLE SSANGSIOS-O-CIEUC
-0x9C4E 0xC3EF # HANGUL SYLLABLE SSANGSIOS-O-CHIEUCH
-0x9C4F 0xC3F0 # HANGUL SYLLABLE SSANGSIOS-O-KHIEUKH
-0x9C50 0xC3F1 # HANGUL SYLLABLE SSANGSIOS-O-THIEUTH
-0x9C51 0xC3F2 # HANGUL SYLLABLE SSANGSIOS-O-PHIEUPH
-0x9C52 0xC3F3 # HANGUL SYLLABLE SSANGSIOS-O-HIEUH
-0x9C53 0xC3F6 # HANGUL SYLLABLE SSANGSIOS-WA-SSANGKIYEOK
-0x9C54 0xC3F7 # HANGUL SYLLABLE SSANGSIOS-WA-KIYEOKSIOS
-0x9C55 0xC3F9 # HANGUL SYLLABLE SSANGSIOS-WA-NIEUNCIEUC
-0x9C56 0xC3FA # HANGUL SYLLABLE SSANGSIOS-WA-NIEUNHIEUH
-0x9C57 0xC3FB # HANGUL SYLLABLE SSANGSIOS-WA-TIKEUT
-0x9C58 0xC3FC # HANGUL SYLLABLE SSANGSIOS-WA-RIEUL
-0x9C59 0xC3FD # HANGUL SYLLABLE SSANGSIOS-WA-RIEULKIYEOK
-0x9C5A 0xC3FE # HANGUL SYLLABLE SSANGSIOS-WA-RIEULMIEUM
-0x9C61 0xC3FF # HANGUL SYLLABLE SSANGSIOS-WA-RIEULPIEUP
-0x9C62 0xC400 # HANGUL SYLLABLE SSANGSIOS-WA-RIEULSIOS
-0x9C63 0xC401 # HANGUL SYLLABLE SSANGSIOS-WA-RIEULTHIEUTH
-0x9C64 0xC402 # HANGUL SYLLABLE SSANGSIOS-WA-RIEULPHIEUPH
-0x9C65 0xC403 # HANGUL SYLLABLE SSANGSIOS-WA-RIEULHIEUH
-0x9C66 0xC404 # HANGUL SYLLABLE SSANGSIOS-WA-MIEUM
-0x9C67 0xC405 # HANGUL SYLLABLE SSANGSIOS-WA-PIEUP
-0x9C68 0xC406 # HANGUL SYLLABLE SSANGSIOS-WA-PIEUPSIOS
-0x9C69 0xC407 # HANGUL SYLLABLE SSANGSIOS-WA-SIOS
-0x9C6A 0xC409 # HANGUL SYLLABLE SSANGSIOS-WA-IEUNG
-0x9C6B 0xC40A # HANGUL SYLLABLE SSANGSIOS-WA-CIEUC
-0x9C6C 0xC40B # HANGUL SYLLABLE SSANGSIOS-WA-CHIEUCH
-0x9C6D 0xC40C # HANGUL SYLLABLE SSANGSIOS-WA-KHIEUKH
-0x9C6E 0xC40D # HANGUL SYLLABLE SSANGSIOS-WA-THIEUTH
-0x9C6F 0xC40E # HANGUL SYLLABLE SSANGSIOS-WA-PHIEUPH
-0x9C70 0xC40F # HANGUL SYLLABLE SSANGSIOS-WA-HIEUH
-0x9C71 0xC411 # HANGUL SYLLABLE SSANGSIOS-WAE-KIYEOK
-0x9C72 0xC412 # HANGUL SYLLABLE SSANGSIOS-WAE-SSANGKIYEOK
-0x9C73 0xC413 # HANGUL SYLLABLE SSANGSIOS-WAE-KIYEOKSIOS
-0x9C74 0xC414 # HANGUL SYLLABLE SSANGSIOS-WAE-NIEUN
-0x9C75 0xC415 # HANGUL SYLLABLE SSANGSIOS-WAE-NIEUNCIEUC
-0x9C76 0xC416 # HANGUL SYLLABLE SSANGSIOS-WAE-NIEUNHIEUH
-0x9C77 0xC417 # HANGUL SYLLABLE SSANGSIOS-WAE-TIKEUT
-0x9C78 0xC418 # HANGUL SYLLABLE SSANGSIOS-WAE-RIEUL
-0x9C79 0xC419 # HANGUL SYLLABLE SSANGSIOS-WAE-RIEULKIYEOK
-0x9C7A 0xC41A # HANGUL SYLLABLE SSANGSIOS-WAE-RIEULMIEUM
-0x9C81 0xC41B # HANGUL SYLLABLE SSANGSIOS-WAE-RIEULPIEUP
-0x9C82 0xC41C # HANGUL SYLLABLE SSANGSIOS-WAE-RIEULSIOS
-0x9C83 0xC41D # HANGUL SYLLABLE SSANGSIOS-WAE-RIEULTHIEUTH
-0x9C84 0xC41E # HANGUL SYLLABLE SSANGSIOS-WAE-RIEULPHIEUPH
-0x9C85 0xC41F # HANGUL SYLLABLE SSANGSIOS-WAE-RIEULHIEUH
-0x9C86 0xC420 # HANGUL SYLLABLE SSANGSIOS-WAE-MIEUM
-0x9C87 0xC421 # HANGUL SYLLABLE SSANGSIOS-WAE-PIEUP
-0x9C88 0xC422 # HANGUL SYLLABLE SSANGSIOS-WAE-PIEUPSIOS
-0x9C89 0xC423 # HANGUL SYLLABLE SSANGSIOS-WAE-SIOS
-0x9C8A 0xC425 # HANGUL SYLLABLE SSANGSIOS-WAE-IEUNG
-0x9C8B 0xC426 # HANGUL SYLLABLE SSANGSIOS-WAE-CIEUC
-0x9C8C 0xC427 # HANGUL SYLLABLE SSANGSIOS-WAE-CHIEUCH
-0x9C8D 0xC428 # HANGUL SYLLABLE SSANGSIOS-WAE-KHIEUKH
-0x9C8E 0xC429 # HANGUL SYLLABLE SSANGSIOS-WAE-THIEUTH
-0x9C8F 0xC42A # HANGUL SYLLABLE SSANGSIOS-WAE-PHIEUPH
-0x9C90 0xC42B # HANGUL SYLLABLE SSANGSIOS-WAE-HIEUH
-0x9C91 0xC42D # HANGUL SYLLABLE SSANGSIOS-OE-KIYEOK
-0x9C92 0xC42E # HANGUL SYLLABLE SSANGSIOS-OE-SSANGKIYEOK
-0x9C93 0xC42F # HANGUL SYLLABLE SSANGSIOS-OE-KIYEOKSIOS
-0x9C94 0xC431 # HANGUL SYLLABLE SSANGSIOS-OE-NIEUNCIEUC
-0x9C95 0xC432 # HANGUL SYLLABLE SSANGSIOS-OE-NIEUNHIEUH
-0x9C96 0xC433 # HANGUL SYLLABLE SSANGSIOS-OE-TIKEUT
-0x9C97 0xC435 # HANGUL SYLLABLE SSANGSIOS-OE-RIEULKIYEOK
-0x9C98 0xC436 # HANGUL SYLLABLE SSANGSIOS-OE-RIEULMIEUM
-0x9C99 0xC437 # HANGUL SYLLABLE SSANGSIOS-OE-RIEULPIEUP
-0x9C9A 0xC438 # HANGUL SYLLABLE SSANGSIOS-OE-RIEULSIOS
-0x9C9B 0xC439 # HANGUL SYLLABLE SSANGSIOS-OE-RIEULTHIEUTH
-0x9C9C 0xC43A # HANGUL SYLLABLE SSANGSIOS-OE-RIEULPHIEUPH
-0x9C9D 0xC43B # HANGUL SYLLABLE SSANGSIOS-OE-RIEULHIEUH
-0x9C9E 0xC43E # HANGUL SYLLABLE SSANGSIOS-OE-PIEUPSIOS
-0x9C9F 0xC43F # HANGUL SYLLABLE SSANGSIOS-OE-SIOS
-0x9CA0 0xC440 # HANGUL SYLLABLE SSANGSIOS-OE-SSANGSIOS
-0x9CA1 0xC441 # HANGUL SYLLABLE SSANGSIOS-OE-IEUNG
-0x9CA2 0xC442 # HANGUL SYLLABLE SSANGSIOS-OE-CIEUC
-0x9CA3 0xC443 # HANGUL SYLLABLE SSANGSIOS-OE-CHIEUCH
-0x9CA4 0xC444 # HANGUL SYLLABLE SSANGSIOS-OE-KHIEUKH
-0x9CA5 0xC445 # HANGUL SYLLABLE SSANGSIOS-OE-THIEUTH
-0x9CA6 0xC446 # HANGUL SYLLABLE SSANGSIOS-OE-PHIEUPH
-0x9CA7 0xC447 # HANGUL SYLLABLE SSANGSIOS-OE-HIEUH
-0x9CA8 0xC449 # HANGUL SYLLABLE SSANGSIOS-YO-KIYEOK
-0x9CA9 0xC44A # HANGUL SYLLABLE SSANGSIOS-YO-SSANGKIYEOK
-0x9CAA 0xC44B # HANGUL SYLLABLE SSANGSIOS-YO-KIYEOKSIOS
-0x9CAB 0xC44C # HANGUL SYLLABLE SSANGSIOS-YO-NIEUN
-0x9CAC 0xC44D # HANGUL SYLLABLE SSANGSIOS-YO-NIEUNCIEUC
-0x9CAD 0xC44E # HANGUL SYLLABLE SSANGSIOS-YO-NIEUNHIEUH
-0x9CAE 0xC44F # HANGUL SYLLABLE SSANGSIOS-YO-TIKEUT
-0x9CAF 0xC450 # HANGUL SYLLABLE SSANGSIOS-YO-RIEUL
-0x9CB0 0xC451 # HANGUL SYLLABLE SSANGSIOS-YO-RIEULKIYEOK
-0x9CB1 0xC452 # HANGUL SYLLABLE SSANGSIOS-YO-RIEULMIEUM
-0x9CB2 0xC453 # HANGUL SYLLABLE SSANGSIOS-YO-RIEULPIEUP
-0x9CB3 0xC454 # HANGUL SYLLABLE SSANGSIOS-YO-RIEULSIOS
-0x9CB4 0xC455 # HANGUL SYLLABLE SSANGSIOS-YO-RIEULTHIEUTH
-0x9CB5 0xC456 # HANGUL SYLLABLE SSANGSIOS-YO-RIEULPHIEUPH
-0x9CB6 0xC457 # HANGUL SYLLABLE SSANGSIOS-YO-RIEULHIEUH
-0x9CB7 0xC458 # HANGUL SYLLABLE SSANGSIOS-YO-MIEUM
-0x9CB8 0xC459 # HANGUL SYLLABLE SSANGSIOS-YO-PIEUP
-0x9CB9 0xC45A # HANGUL SYLLABLE SSANGSIOS-YO-PIEUPSIOS
-0x9CBA 0xC45B # HANGUL SYLLABLE SSANGSIOS-YO-SIOS
-0x9CBB 0xC45C # HANGUL SYLLABLE SSANGSIOS-YO-SSANGSIOS
-0x9CBC 0xC45D # HANGUL SYLLABLE SSANGSIOS-YO-IEUNG
-0x9CBD 0xC45E # HANGUL SYLLABLE SSANGSIOS-YO-CIEUC
-0x9CBE 0xC45F # HANGUL SYLLABLE SSANGSIOS-YO-CHIEUCH
-0x9CBF 0xC460 # HANGUL SYLLABLE SSANGSIOS-YO-KHIEUKH
-0x9CC0 0xC461 # HANGUL SYLLABLE SSANGSIOS-YO-THIEUTH
-0x9CC1 0xC462 # HANGUL SYLLABLE SSANGSIOS-YO-PHIEUPH
-0x9CC2 0xC463 # HANGUL SYLLABLE SSANGSIOS-YO-HIEUH
-0x9CC3 0xC466 # HANGUL SYLLABLE SSANGSIOS-U-SSANGKIYEOK
-0x9CC4 0xC467 # HANGUL SYLLABLE SSANGSIOS-U-KIYEOKSIOS
-0x9CC5 0xC469 # HANGUL SYLLABLE SSANGSIOS-U-NIEUNCIEUC
-0x9CC6 0xC46A # HANGUL SYLLABLE SSANGSIOS-U-NIEUNHIEUH
-0x9CC7 0xC46B # HANGUL SYLLABLE SSANGSIOS-U-TIKEUT
-0x9CC8 0xC46D # HANGUL SYLLABLE SSANGSIOS-U-RIEULKIYEOK
-0x9CC9 0xC46E # HANGUL SYLLABLE SSANGSIOS-U-RIEULMIEUM
-0x9CCA 0xC46F # HANGUL SYLLABLE SSANGSIOS-U-RIEULPIEUP
-0x9CCB 0xC470 # HANGUL SYLLABLE SSANGSIOS-U-RIEULSIOS
-0x9CCC 0xC471 # HANGUL SYLLABLE SSANGSIOS-U-RIEULTHIEUTH
-0x9CCD 0xC472 # HANGUL SYLLABLE SSANGSIOS-U-RIEULPHIEUPH
-0x9CCE 0xC473 # HANGUL SYLLABLE SSANGSIOS-U-RIEULHIEUH
-0x9CCF 0xC476 # HANGUL SYLLABLE SSANGSIOS-U-PIEUPSIOS
-0x9CD0 0xC477 # HANGUL SYLLABLE SSANGSIOS-U-SIOS
-0x9CD1 0xC478 # HANGUL SYLLABLE SSANGSIOS-U-SSANGSIOS
-0x9CD2 0xC47A # HANGUL SYLLABLE SSANGSIOS-U-CIEUC
-0x9CD3 0xC47B # HANGUL SYLLABLE SSANGSIOS-U-CHIEUCH
-0x9CD4 0xC47C # HANGUL SYLLABLE SSANGSIOS-U-KHIEUKH
-0x9CD5 0xC47D # HANGUL SYLLABLE SSANGSIOS-U-THIEUTH
-0x9CD6 0xC47E # HANGUL SYLLABLE SSANGSIOS-U-PHIEUPH
-0x9CD7 0xC47F # HANGUL SYLLABLE SSANGSIOS-U-HIEUH
-0x9CD8 0xC481 # HANGUL SYLLABLE SSANGSIOS-WEO-KIYEOK
-0x9CD9 0xC482 # HANGUL SYLLABLE SSANGSIOS-WEO-SSANGKIYEOK
-0x9CDA 0xC483 # HANGUL SYLLABLE SSANGSIOS-WEO-KIYEOKSIOS
-0x9CDB 0xC484 # HANGUL SYLLABLE SSANGSIOS-WEO-NIEUN
-0x9CDC 0xC485 # HANGUL SYLLABLE SSANGSIOS-WEO-NIEUNCIEUC
-0x9CDD 0xC486 # HANGUL SYLLABLE SSANGSIOS-WEO-NIEUNHIEUH
-0x9CDE 0xC487 # HANGUL SYLLABLE SSANGSIOS-WEO-TIKEUT
-0x9CDF 0xC488 # HANGUL SYLLABLE SSANGSIOS-WEO-RIEUL
-0x9CE0 0xC489 # HANGUL SYLLABLE SSANGSIOS-WEO-RIEULKIYEOK
-0x9CE1 0xC48A # HANGUL SYLLABLE SSANGSIOS-WEO-RIEULMIEUM
-0x9CE2 0xC48B # HANGUL SYLLABLE SSANGSIOS-WEO-RIEULPIEUP
-0x9CE3 0xC48C # HANGUL SYLLABLE SSANGSIOS-WEO-RIEULSIOS
-0x9CE4 0xC48D # HANGUL SYLLABLE SSANGSIOS-WEO-RIEULTHIEUTH
-0x9CE5 0xC48E # HANGUL SYLLABLE SSANGSIOS-WEO-RIEULPHIEUPH
-0x9CE6 0xC48F # HANGUL SYLLABLE SSANGSIOS-WEO-RIEULHIEUH
-0x9CE7 0xC490 # HANGUL SYLLABLE SSANGSIOS-WEO-MIEUM
-0x9CE8 0xC491 # HANGUL SYLLABLE SSANGSIOS-WEO-PIEUP
-0x9CE9 0xC492 # HANGUL SYLLABLE SSANGSIOS-WEO-PIEUPSIOS
-0x9CEA 0xC493 # HANGUL SYLLABLE SSANGSIOS-WEO-SIOS
-0x9CEB 0xC495 # HANGUL SYLLABLE SSANGSIOS-WEO-IEUNG
-0x9CEC 0xC496 # HANGUL SYLLABLE SSANGSIOS-WEO-CIEUC
-0x9CED 0xC497 # HANGUL SYLLABLE SSANGSIOS-WEO-CHIEUCH
-0x9CEE 0xC498 # HANGUL SYLLABLE SSANGSIOS-WEO-KHIEUKH
-0x9CEF 0xC499 # HANGUL SYLLABLE SSANGSIOS-WEO-THIEUTH
-0x9CF0 0xC49A # HANGUL SYLLABLE SSANGSIOS-WEO-PHIEUPH
-0x9CF1 0xC49B # HANGUL SYLLABLE SSANGSIOS-WEO-HIEUH
-0x9CF2 0xC49D # HANGUL SYLLABLE SSANGSIOS-WE-KIYEOK
-0x9CF3 0xC49E # HANGUL SYLLABLE SSANGSIOS-WE-SSANGKIYEOK
-0x9CF4 0xC49F # HANGUL SYLLABLE SSANGSIOS-WE-KIYEOKSIOS
-0x9CF5 0xC4A0 # HANGUL SYLLABLE SSANGSIOS-WE-NIEUN
-0x9CF6 0xC4A1 # HANGUL SYLLABLE SSANGSIOS-WE-NIEUNCIEUC
-0x9CF7 0xC4A2 # HANGUL SYLLABLE SSANGSIOS-WE-NIEUNHIEUH
-0x9CF8 0xC4A3 # HANGUL SYLLABLE SSANGSIOS-WE-TIKEUT
-0x9CF9 0xC4A4 # HANGUL SYLLABLE SSANGSIOS-WE-RIEUL
-0x9CFA 0xC4A5 # HANGUL SYLLABLE SSANGSIOS-WE-RIEULKIYEOK
-0x9CFB 0xC4A6 # HANGUL SYLLABLE SSANGSIOS-WE-RIEULMIEUM
-0x9CFC 0xC4A7 # HANGUL SYLLABLE SSANGSIOS-WE-RIEULPIEUP
-0x9CFD 0xC4A8 # HANGUL SYLLABLE SSANGSIOS-WE-RIEULSIOS
-0x9CFE 0xC4A9 # HANGUL SYLLABLE SSANGSIOS-WE-RIEULTHIEUTH
-0x9D41 0xC4AA # HANGUL SYLLABLE SSANGSIOS-WE-RIEULPHIEUPH
-0x9D42 0xC4AB # HANGUL SYLLABLE SSANGSIOS-WE-RIEULHIEUH
-0x9D43 0xC4AC # HANGUL SYLLABLE SSANGSIOS-WE-MIEUM
-0x9D44 0xC4AD # HANGUL SYLLABLE SSANGSIOS-WE-PIEUP
-0x9D45 0xC4AE # HANGUL SYLLABLE SSANGSIOS-WE-PIEUPSIOS
-0x9D46 0xC4AF # HANGUL SYLLABLE SSANGSIOS-WE-SIOS
-0x9D47 0xC4B0 # HANGUL SYLLABLE SSANGSIOS-WE-SSANGSIOS
-0x9D48 0xC4B1 # HANGUL SYLLABLE SSANGSIOS-WE-IEUNG
-0x9D49 0xC4B2 # HANGUL SYLLABLE SSANGSIOS-WE-CIEUC
-0x9D4A 0xC4B3 # HANGUL SYLLABLE SSANGSIOS-WE-CHIEUCH
-0x9D4B 0xC4B4 # HANGUL SYLLABLE SSANGSIOS-WE-KHIEUKH
-0x9D4C 0xC4B5 # HANGUL SYLLABLE SSANGSIOS-WE-THIEUTH
-0x9D4D 0xC4B6 # HANGUL SYLLABLE SSANGSIOS-WE-PHIEUPH
-0x9D4E 0xC4B7 # HANGUL SYLLABLE SSANGSIOS-WE-HIEUH
-0x9D4F 0xC4B9 # HANGUL SYLLABLE SSANGSIOS-WI-KIYEOK
-0x9D50 0xC4BA # HANGUL SYLLABLE SSANGSIOS-WI-SSANGKIYEOK
-0x9D51 0xC4BB # HANGUL SYLLABLE SSANGSIOS-WI-KIYEOKSIOS
-0x9D52 0xC4BD # HANGUL SYLLABLE SSANGSIOS-WI-NIEUNCIEUC
-0x9D53 0xC4BE # HANGUL SYLLABLE SSANGSIOS-WI-NIEUNHIEUH
-0x9D54 0xC4BF # HANGUL SYLLABLE SSANGSIOS-WI-TIKEUT
-0x9D55 0xC4C0 # HANGUL SYLLABLE SSANGSIOS-WI-RIEUL
-0x9D56 0xC4C1 # HANGUL SYLLABLE SSANGSIOS-WI-RIEULKIYEOK
-0x9D57 0xC4C2 # HANGUL SYLLABLE SSANGSIOS-WI-RIEULMIEUM
-0x9D58 0xC4C3 # HANGUL SYLLABLE SSANGSIOS-WI-RIEULPIEUP
-0x9D59 0xC4C4 # HANGUL SYLLABLE SSANGSIOS-WI-RIEULSIOS
-0x9D5A 0xC4C5 # HANGUL SYLLABLE SSANGSIOS-WI-RIEULTHIEUTH
-0x9D61 0xC4C6 # HANGUL SYLLABLE SSANGSIOS-WI-RIEULPHIEUPH
-0x9D62 0xC4C7 # HANGUL SYLLABLE SSANGSIOS-WI-RIEULHIEUH
-0x9D63 0xC4C8 # HANGUL SYLLABLE SSANGSIOS-WI-MIEUM
-0x9D64 0xC4C9 # HANGUL SYLLABLE SSANGSIOS-WI-PIEUP
-0x9D65 0xC4CA # HANGUL SYLLABLE SSANGSIOS-WI-PIEUPSIOS
-0x9D66 0xC4CB # HANGUL SYLLABLE SSANGSIOS-WI-SIOS
-0x9D67 0xC4CC # HANGUL SYLLABLE SSANGSIOS-WI-SSANGSIOS
-0x9D68 0xC4CD # HANGUL SYLLABLE SSANGSIOS-WI-IEUNG
-0x9D69 0xC4CE # HANGUL SYLLABLE SSANGSIOS-WI-CIEUC
-0x9D6A 0xC4CF # HANGUL SYLLABLE SSANGSIOS-WI-CHIEUCH
-0x9D6B 0xC4D0 # HANGUL SYLLABLE SSANGSIOS-WI-KHIEUKH
-0x9D6C 0xC4D1 # HANGUL SYLLABLE SSANGSIOS-WI-THIEUTH
-0x9D6D 0xC4D2 # HANGUL SYLLABLE SSANGSIOS-WI-PHIEUPH
-0x9D6E 0xC4D3 # HANGUL SYLLABLE SSANGSIOS-WI-HIEUH
-0x9D6F 0xC4D4 # HANGUL SYLLABLE SSANGSIOS-YU
-0x9D70 0xC4D5 # HANGUL SYLLABLE SSANGSIOS-YU-KIYEOK
-0x9D71 0xC4D6 # HANGUL SYLLABLE SSANGSIOS-YU-SSANGKIYEOK
-0x9D72 0xC4D7 # HANGUL SYLLABLE SSANGSIOS-YU-KIYEOKSIOS
-0x9D73 0xC4D8 # HANGUL SYLLABLE SSANGSIOS-YU-NIEUN
-0x9D74 0xC4D9 # HANGUL SYLLABLE SSANGSIOS-YU-NIEUNCIEUC
-0x9D75 0xC4DA # HANGUL SYLLABLE SSANGSIOS-YU-NIEUNHIEUH
-0x9D76 0xC4DB # HANGUL SYLLABLE SSANGSIOS-YU-TIKEUT
-0x9D77 0xC4DC # HANGUL SYLLABLE SSANGSIOS-YU-RIEUL
-0x9D78 0xC4DD # HANGUL SYLLABLE SSANGSIOS-YU-RIEULKIYEOK
-0x9D79 0xC4DE # HANGUL SYLLABLE SSANGSIOS-YU-RIEULMIEUM
-0x9D7A 0xC4DF # HANGUL SYLLABLE SSANGSIOS-YU-RIEULPIEUP
-0x9D81 0xC4E0 # HANGUL SYLLABLE SSANGSIOS-YU-RIEULSIOS
-0x9D82 0xC4E1 # HANGUL SYLLABLE SSANGSIOS-YU-RIEULTHIEUTH
-0x9D83 0xC4E2 # HANGUL SYLLABLE SSANGSIOS-YU-RIEULPHIEUPH
-0x9D84 0xC4E3 # HANGUL SYLLABLE SSANGSIOS-YU-RIEULHIEUH
-0x9D85 0xC4E4 # HANGUL SYLLABLE SSANGSIOS-YU-MIEUM
-0x9D86 0xC4E5 # HANGUL SYLLABLE SSANGSIOS-YU-PIEUP
-0x9D87 0xC4E6 # HANGUL SYLLABLE SSANGSIOS-YU-PIEUPSIOS
-0x9D88 0xC4E7 # HANGUL SYLLABLE SSANGSIOS-YU-SIOS
-0x9D89 0xC4E8 # HANGUL SYLLABLE SSANGSIOS-YU-SSANGSIOS
-0x9D8A 0xC4EA # HANGUL SYLLABLE SSANGSIOS-YU-CIEUC
-0x9D8B 0xC4EB # HANGUL SYLLABLE SSANGSIOS-YU-CHIEUCH
-0x9D8C 0xC4EC # HANGUL SYLLABLE SSANGSIOS-YU-KHIEUKH
-0x9D8D 0xC4ED # HANGUL SYLLABLE SSANGSIOS-YU-THIEUTH
-0x9D8E 0xC4EE # HANGUL SYLLABLE SSANGSIOS-YU-PHIEUPH
-0x9D8F 0xC4EF # HANGUL SYLLABLE SSANGSIOS-YU-HIEUH
-0x9D90 0xC4F2 # HANGUL SYLLABLE SSANGSIOS-EU-SSANGKIYEOK
-0x9D91 0xC4F3 # HANGUL SYLLABLE SSANGSIOS-EU-KIYEOKSIOS
-0x9D92 0xC4F5 # HANGUL SYLLABLE SSANGSIOS-EU-NIEUNCIEUC
-0x9D93 0xC4F6 # HANGUL SYLLABLE SSANGSIOS-EU-NIEUNHIEUH
-0x9D94 0xC4F7 # HANGUL SYLLABLE SSANGSIOS-EU-TIKEUT
-0x9D95 0xC4F9 # HANGUL SYLLABLE SSANGSIOS-EU-RIEULKIYEOK
-0x9D96 0xC4FB # HANGUL SYLLABLE SSANGSIOS-EU-RIEULPIEUP
-0x9D97 0xC4FC # HANGUL SYLLABLE SSANGSIOS-EU-RIEULSIOS
-0x9D98 0xC4FD # HANGUL SYLLABLE SSANGSIOS-EU-RIEULTHIEUTH
-0x9D99 0xC4FE # HANGUL SYLLABLE SSANGSIOS-EU-RIEULPHIEUPH
-0x9D9A 0xC502 # HANGUL SYLLABLE SSANGSIOS-EU-PIEUPSIOS
-0x9D9B 0xC503 # HANGUL SYLLABLE SSANGSIOS-EU-SIOS
-0x9D9C 0xC504 # HANGUL SYLLABLE SSANGSIOS-EU-SSANGSIOS
-0x9D9D 0xC505 # HANGUL SYLLABLE SSANGSIOS-EU-IEUNG
-0x9D9E 0xC506 # HANGUL SYLLABLE SSANGSIOS-EU-CIEUC
-0x9D9F 0xC507 # HANGUL SYLLABLE SSANGSIOS-EU-CHIEUCH
-0x9DA0 0xC508 # HANGUL SYLLABLE SSANGSIOS-EU-KHIEUKH
-0x9DA1 0xC509 # HANGUL SYLLABLE SSANGSIOS-EU-THIEUTH
-0x9DA2 0xC50A # HANGUL SYLLABLE SSANGSIOS-EU-PHIEUPH
-0x9DA3 0xC50B # HANGUL SYLLABLE SSANGSIOS-EU-HIEUH
-0x9DA4 0xC50D # HANGUL SYLLABLE SSANGSIOS-YI-KIYEOK
-0x9DA5 0xC50E # HANGUL SYLLABLE SSANGSIOS-YI-SSANGKIYEOK
-0x9DA6 0xC50F # HANGUL SYLLABLE SSANGSIOS-YI-KIYEOKSIOS
-0x9DA7 0xC511 # HANGUL SYLLABLE SSANGSIOS-YI-NIEUNCIEUC
-0x9DA8 0xC512 # HANGUL SYLLABLE SSANGSIOS-YI-NIEUNHIEUH
-0x9DA9 0xC513 # HANGUL SYLLABLE SSANGSIOS-YI-TIKEUT
-0x9DAA 0xC515 # HANGUL SYLLABLE SSANGSIOS-YI-RIEULKIYEOK
-0x9DAB 0xC516 # HANGUL SYLLABLE SSANGSIOS-YI-RIEULMIEUM
-0x9DAC 0xC517 # HANGUL SYLLABLE SSANGSIOS-YI-RIEULPIEUP
-0x9DAD 0xC518 # HANGUL SYLLABLE SSANGSIOS-YI-RIEULSIOS
-0x9DAE 0xC519 # HANGUL SYLLABLE SSANGSIOS-YI-RIEULTHIEUTH
-0x9DAF 0xC51A # HANGUL SYLLABLE SSANGSIOS-YI-RIEULPHIEUPH
-0x9DB0 0xC51B # HANGUL SYLLABLE SSANGSIOS-YI-RIEULHIEUH
-0x9DB1 0xC51D # HANGUL SYLLABLE SSANGSIOS-YI-PIEUP
-0x9DB2 0xC51E # HANGUL SYLLABLE SSANGSIOS-YI-PIEUPSIOS
-0x9DB3 0xC51F # HANGUL SYLLABLE SSANGSIOS-YI-SIOS
-0x9DB4 0xC520 # HANGUL SYLLABLE SSANGSIOS-YI-SSANGSIOS
-0x9DB5 0xC521 # HANGUL SYLLABLE SSANGSIOS-YI-IEUNG
-0x9DB6 0xC522 # HANGUL SYLLABLE SSANGSIOS-YI-CIEUC
-0x9DB7 0xC523 # HANGUL SYLLABLE SSANGSIOS-YI-CHIEUCH
-0x9DB8 0xC524 # HANGUL SYLLABLE SSANGSIOS-YI-KHIEUKH
-0x9DB9 0xC525 # HANGUL SYLLABLE SSANGSIOS-YI-THIEUTH
-0x9DBA 0xC526 # HANGUL SYLLABLE SSANGSIOS-YI-PHIEUPH
-0x9DBB 0xC527 # HANGUL SYLLABLE SSANGSIOS-YI-HIEUH
-0x9DBC 0xC52A # HANGUL SYLLABLE SSANGSIOS-I-SSANGKIYEOK
-0x9DBD 0xC52B # HANGUL SYLLABLE SSANGSIOS-I-KIYEOKSIOS
-0x9DBE 0xC52D # HANGUL SYLLABLE SSANGSIOS-I-NIEUNCIEUC
-0x9DBF 0xC52E # HANGUL SYLLABLE SSANGSIOS-I-NIEUNHIEUH
-0x9DC0 0xC52F # HANGUL SYLLABLE SSANGSIOS-I-TIKEUT
-0x9DC1 0xC531 # HANGUL SYLLABLE SSANGSIOS-I-RIEULKIYEOK
-0x9DC2 0xC532 # HANGUL SYLLABLE SSANGSIOS-I-RIEULMIEUM
-0x9DC3 0xC533 # HANGUL SYLLABLE SSANGSIOS-I-RIEULPIEUP
-0x9DC4 0xC534 # HANGUL SYLLABLE SSANGSIOS-I-RIEULSIOS
-0x9DC5 0xC535 # HANGUL SYLLABLE SSANGSIOS-I-RIEULTHIEUTH
-0x9DC6 0xC536 # HANGUL SYLLABLE SSANGSIOS-I-RIEULPHIEUPH
-0x9DC7 0xC537 # HANGUL SYLLABLE SSANGSIOS-I-RIEULHIEUH
-0x9DC8 0xC53A # HANGUL SYLLABLE SSANGSIOS-I-PIEUPSIOS
-0x9DC9 0xC53C # HANGUL SYLLABLE SSANGSIOS-I-SSANGSIOS
-0x9DCA 0xC53E # HANGUL SYLLABLE SSANGSIOS-I-CIEUC
-0x9DCB 0xC53F # HANGUL SYLLABLE SSANGSIOS-I-CHIEUCH
-0x9DCC 0xC540 # HANGUL SYLLABLE SSANGSIOS-I-KHIEUKH
-0x9DCD 0xC541 # HANGUL SYLLABLE SSANGSIOS-I-THIEUTH
-0x9DCE 0xC542 # HANGUL SYLLABLE SSANGSIOS-I-PHIEUPH
-0x9DCF 0xC543 # HANGUL SYLLABLE SSANGSIOS-I-HIEUH
-0x9DD0 0xC546 # HANGUL SYLLABLE IEUNG-A-SSANGKIYEOK
-0x9DD1 0xC547 # HANGUL SYLLABLE IEUNG-A-KIYEOKSIOS
-0x9DD2 0xC54B # HANGUL SYLLABLE IEUNG-A-TIKEUT
-0x9DD3 0xC54F # HANGUL SYLLABLE IEUNG-A-RIEULPIEUP
-0x9DD4 0xC550 # HANGUL SYLLABLE IEUNG-A-RIEULSIOS
-0x9DD5 0xC551 # HANGUL SYLLABLE IEUNG-A-RIEULTHIEUTH
-0x9DD6 0xC552 # HANGUL SYLLABLE IEUNG-A-RIEULPHIEUPH
-0x9DD7 0xC556 # HANGUL SYLLABLE IEUNG-A-PIEUPSIOS
-0x9DD8 0xC55A # HANGUL SYLLABLE IEUNG-A-CIEUC
-0x9DD9 0xC55B # HANGUL SYLLABLE IEUNG-A-CHIEUCH
-0x9DDA 0xC55C # HANGUL SYLLABLE IEUNG-A-KHIEUKH
-0x9DDB 0xC55F # HANGUL SYLLABLE IEUNG-A-HIEUH
-0x9DDC 0xC562 # HANGUL SYLLABLE IEUNG-AE-SSANGKIYEOK
-0x9DDD 0xC563 # HANGUL SYLLABLE IEUNG-AE-KIYEOKSIOS
-0x9DDE 0xC565 # HANGUL SYLLABLE IEUNG-AE-NIEUNCIEUC
-0x9DDF 0xC566 # HANGUL SYLLABLE IEUNG-AE-NIEUNHIEUH
-0x9DE0 0xC567 # HANGUL SYLLABLE IEUNG-AE-TIKEUT
-0x9DE1 0xC569 # HANGUL SYLLABLE IEUNG-AE-RIEULKIYEOK
-0x9DE2 0xC56A # HANGUL SYLLABLE IEUNG-AE-RIEULMIEUM
-0x9DE3 0xC56B # HANGUL SYLLABLE IEUNG-AE-RIEULPIEUP
-0x9DE4 0xC56C # HANGUL SYLLABLE IEUNG-AE-RIEULSIOS
-0x9DE5 0xC56D # HANGUL SYLLABLE IEUNG-AE-RIEULTHIEUTH
-0x9DE6 0xC56E # HANGUL SYLLABLE IEUNG-AE-RIEULPHIEUPH
-0x9DE7 0xC56F # HANGUL SYLLABLE IEUNG-AE-RIEULHIEUH
-0x9DE8 0xC572 # HANGUL SYLLABLE IEUNG-AE-PIEUPSIOS
-0x9DE9 0xC576 # HANGUL SYLLABLE IEUNG-AE-CIEUC
-0x9DEA 0xC577 # HANGUL SYLLABLE IEUNG-AE-CHIEUCH
-0x9DEB 0xC578 # HANGUL SYLLABLE IEUNG-AE-KHIEUKH
-0x9DEC 0xC579 # HANGUL SYLLABLE IEUNG-AE-THIEUTH
-0x9DED 0xC57A # HANGUL SYLLABLE IEUNG-AE-PHIEUPH
-0x9DEE 0xC57B # HANGUL SYLLABLE IEUNG-AE-HIEUH
-0x9DEF 0xC57E # HANGUL SYLLABLE IEUNG-YA-SSANGKIYEOK
-0x9DF0 0xC57F # HANGUL SYLLABLE IEUNG-YA-KIYEOKSIOS
-0x9DF1 0xC581 # HANGUL SYLLABLE IEUNG-YA-NIEUNCIEUC
-0x9DF2 0xC582 # HANGUL SYLLABLE IEUNG-YA-NIEUNHIEUH
-0x9DF3 0xC583 # HANGUL SYLLABLE IEUNG-YA-TIKEUT
-0x9DF4 0xC585 # HANGUL SYLLABLE IEUNG-YA-RIEULKIYEOK
-0x9DF5 0xC586 # HANGUL SYLLABLE IEUNG-YA-RIEULMIEUM
-0x9DF6 0xC588 # HANGUL SYLLABLE IEUNG-YA-RIEULSIOS
-0x9DF7 0xC589 # HANGUL SYLLABLE IEUNG-YA-RIEULTHIEUTH
-0x9DF8 0xC58A # HANGUL SYLLABLE IEUNG-YA-RIEULPHIEUPH
-0x9DF9 0xC58B # HANGUL SYLLABLE IEUNG-YA-RIEULHIEUH
-0x9DFA 0xC58E # HANGUL SYLLABLE IEUNG-YA-PIEUPSIOS
-0x9DFB 0xC590 # HANGUL SYLLABLE IEUNG-YA-SSANGSIOS
-0x9DFC 0xC592 # HANGUL SYLLABLE IEUNG-YA-CIEUC
-0x9DFD 0xC593 # HANGUL SYLLABLE IEUNG-YA-CHIEUCH
-0x9DFE 0xC594 # HANGUL SYLLABLE IEUNG-YA-KHIEUKH
-0x9E41 0xC596 # HANGUL SYLLABLE IEUNG-YA-PHIEUPH
-0x9E42 0xC599 # HANGUL SYLLABLE IEUNG-YAE-KIYEOK
-0x9E43 0xC59A # HANGUL SYLLABLE IEUNG-YAE-SSANGKIYEOK
-0x9E44 0xC59B # HANGUL SYLLABLE IEUNG-YAE-KIYEOKSIOS
-0x9E45 0xC59D # HANGUL SYLLABLE IEUNG-YAE-NIEUNCIEUC
-0x9E46 0xC59E # HANGUL SYLLABLE IEUNG-YAE-NIEUNHIEUH
-0x9E47 0xC59F # HANGUL SYLLABLE IEUNG-YAE-TIKEUT
-0x9E48 0xC5A1 # HANGUL SYLLABLE IEUNG-YAE-RIEULKIYEOK
-0x9E49 0xC5A2 # HANGUL SYLLABLE IEUNG-YAE-RIEULMIEUM
-0x9E4A 0xC5A3 # HANGUL SYLLABLE IEUNG-YAE-RIEULPIEUP
-0x9E4B 0xC5A4 # HANGUL SYLLABLE IEUNG-YAE-RIEULSIOS
-0x9E4C 0xC5A5 # HANGUL SYLLABLE IEUNG-YAE-RIEULTHIEUTH
-0x9E4D 0xC5A6 # HANGUL SYLLABLE IEUNG-YAE-RIEULPHIEUPH
-0x9E4E 0xC5A7 # HANGUL SYLLABLE IEUNG-YAE-RIEULHIEUH
-0x9E4F 0xC5A8 # HANGUL SYLLABLE IEUNG-YAE-MIEUM
-0x9E50 0xC5AA # HANGUL SYLLABLE IEUNG-YAE-PIEUPSIOS
-0x9E51 0xC5AB # HANGUL SYLLABLE IEUNG-YAE-SIOS
-0x9E52 0xC5AC # HANGUL SYLLABLE IEUNG-YAE-SSANGSIOS
-0x9E53 0xC5AD # HANGUL SYLLABLE IEUNG-YAE-IEUNG
-0x9E54 0xC5AE # HANGUL SYLLABLE IEUNG-YAE-CIEUC
-0x9E55 0xC5AF # HANGUL SYLLABLE IEUNG-YAE-CHIEUCH
-0x9E56 0xC5B0 # HANGUL SYLLABLE IEUNG-YAE-KHIEUKH
-0x9E57 0xC5B1 # HANGUL SYLLABLE IEUNG-YAE-THIEUTH
-0x9E58 0xC5B2 # HANGUL SYLLABLE IEUNG-YAE-PHIEUPH
-0x9E59 0xC5B3 # HANGUL SYLLABLE IEUNG-YAE-HIEUH
-0x9E5A 0xC5B6 # HANGUL SYLLABLE IEUNG-EO-SSANGKIYEOK
-0x9E61 0xC5B7 # HANGUL SYLLABLE IEUNG-EO-KIYEOKSIOS
-0x9E62 0xC5BA # HANGUL SYLLABLE IEUNG-EO-NIEUNHIEUH
-0x9E63 0xC5BF # HANGUL SYLLABLE IEUNG-EO-RIEULPIEUP
-0x9E64 0xC5C0 # HANGUL SYLLABLE IEUNG-EO-RIEULSIOS
-0x9E65 0xC5C1 # HANGUL SYLLABLE IEUNG-EO-RIEULTHIEUTH
-0x9E66 0xC5C2 # HANGUL SYLLABLE IEUNG-EO-RIEULPHIEUPH
-0x9E67 0xC5C3 # HANGUL SYLLABLE IEUNG-EO-RIEULHIEUH
-0x9E68 0xC5CB # HANGUL SYLLABLE IEUNG-EO-CHIEUCH
-0x9E69 0xC5CD # HANGUL SYLLABLE IEUNG-EO-THIEUTH
-0x9E6A 0xC5CF # HANGUL SYLLABLE IEUNG-EO-HIEUH
-0x9E6B 0xC5D2 # HANGUL SYLLABLE IEUNG-E-SSANGKIYEOK
-0x9E6C 0xC5D3 # HANGUL SYLLABLE IEUNG-E-KIYEOKSIOS
-0x9E6D 0xC5D5 # HANGUL SYLLABLE IEUNG-E-NIEUNCIEUC
-0x9E6E 0xC5D6 # HANGUL SYLLABLE IEUNG-E-NIEUNHIEUH
-0x9E6F 0xC5D7 # HANGUL SYLLABLE IEUNG-E-TIKEUT
-0x9E70 0xC5D9 # HANGUL SYLLABLE IEUNG-E-RIEULKIYEOK
-0x9E71 0xC5DA # HANGUL SYLLABLE IEUNG-E-RIEULMIEUM
-0x9E72 0xC5DB # HANGUL SYLLABLE IEUNG-E-RIEULPIEUP
-0x9E73 0xC5DC # HANGUL SYLLABLE IEUNG-E-RIEULSIOS
-0x9E74 0xC5DD # HANGUL SYLLABLE IEUNG-E-RIEULTHIEUTH
-0x9E75 0xC5DE # HANGUL SYLLABLE IEUNG-E-RIEULPHIEUPH
-0x9E76 0xC5DF # HANGUL SYLLABLE IEUNG-E-RIEULHIEUH
-0x9E77 0xC5E2 # HANGUL SYLLABLE IEUNG-E-PIEUPSIOS
-0x9E78 0xC5E4 # HANGUL SYLLABLE IEUNG-E-SSANGSIOS
-0x9E79 0xC5E6 # HANGUL SYLLABLE IEUNG-E-CIEUC
-0x9E7A 0xC5E7 # HANGUL SYLLABLE IEUNG-E-CHIEUCH
-0x9E81 0xC5E8 # HANGUL SYLLABLE IEUNG-E-KHIEUKH
-0x9E82 0xC5E9 # HANGUL SYLLABLE IEUNG-E-THIEUTH
-0x9E83 0xC5EA # HANGUL SYLLABLE IEUNG-E-PHIEUPH
-0x9E84 0xC5EB # HANGUL SYLLABLE IEUNG-E-HIEUH
-0x9E85 0xC5EF # HANGUL SYLLABLE IEUNG-YEO-KIYEOKSIOS
-0x9E86 0xC5F1 # HANGUL SYLLABLE IEUNG-YEO-NIEUNCIEUC
-0x9E87 0xC5F2 # HANGUL SYLLABLE IEUNG-YEO-NIEUNHIEUH
-0x9E88 0xC5F3 # HANGUL SYLLABLE IEUNG-YEO-TIKEUT
-0x9E89 0xC5F5 # HANGUL SYLLABLE IEUNG-YEO-RIEULKIYEOK
-0x9E8A 0xC5F8 # HANGUL SYLLABLE IEUNG-YEO-RIEULSIOS
-0x9E8B 0xC5F9 # HANGUL SYLLABLE IEUNG-YEO-RIEULTHIEUTH
-0x9E8C 0xC5FA # HANGUL SYLLABLE IEUNG-YEO-RIEULPHIEUPH
-0x9E8D 0xC5FB # HANGUL SYLLABLE IEUNG-YEO-RIEULHIEUH
-0x9E8E 0xC602 # HANGUL SYLLABLE IEUNG-YEO-CIEUC
-0x9E8F 0xC603 # HANGUL SYLLABLE IEUNG-YEO-CHIEUCH
-0x9E90 0xC604 # HANGUL SYLLABLE IEUNG-YEO-KHIEUKH
-0x9E91 0xC609 # HANGUL SYLLABLE IEUNG-YE-KIYEOK
-0x9E92 0xC60A # HANGUL SYLLABLE IEUNG-YE-SSANGKIYEOK
-0x9E93 0xC60B # HANGUL SYLLABLE IEUNG-YE-KIYEOKSIOS
-0x9E94 0xC60D # HANGUL SYLLABLE IEUNG-YE-NIEUNCIEUC
-0x9E95 0xC60E # HANGUL SYLLABLE IEUNG-YE-NIEUNHIEUH
-0x9E96 0xC60F # HANGUL SYLLABLE IEUNG-YE-TIKEUT
-0x9E97 0xC611 # HANGUL SYLLABLE IEUNG-YE-RIEULKIYEOK
-0x9E98 0xC612 # HANGUL SYLLABLE IEUNG-YE-RIEULMIEUM
-0x9E99 0xC613 # HANGUL SYLLABLE IEUNG-YE-RIEULPIEUP
-0x9E9A 0xC614 # HANGUL SYLLABLE IEUNG-YE-RIEULSIOS
-0x9E9B 0xC615 # HANGUL SYLLABLE IEUNG-YE-RIEULTHIEUTH
-0x9E9C 0xC616 # HANGUL SYLLABLE IEUNG-YE-RIEULPHIEUPH
-0x9E9D 0xC617 # HANGUL SYLLABLE IEUNG-YE-RIEULHIEUH
-0x9E9E 0xC61A # HANGUL SYLLABLE IEUNG-YE-PIEUPSIOS
-0x9E9F 0xC61D # HANGUL SYLLABLE IEUNG-YE-IEUNG
-0x9EA0 0xC61E # HANGUL SYLLABLE IEUNG-YE-CIEUC
-0x9EA1 0xC61F # HANGUL SYLLABLE IEUNG-YE-CHIEUCH
-0x9EA2 0xC620 # HANGUL SYLLABLE IEUNG-YE-KHIEUKH
-0x9EA3 0xC621 # HANGUL SYLLABLE IEUNG-YE-THIEUTH
-0x9EA4 0xC622 # HANGUL SYLLABLE IEUNG-YE-PHIEUPH
-0x9EA5 0xC623 # HANGUL SYLLABLE IEUNG-YE-HIEUH
-0x9EA6 0xC626 # HANGUL SYLLABLE IEUNG-O-SSANGKIYEOK
-0x9EA7 0xC627 # HANGUL SYLLABLE IEUNG-O-KIYEOKSIOS
-0x9EA8 0xC629 # HANGUL SYLLABLE IEUNG-O-NIEUNCIEUC
-0x9EA9 0xC62A # HANGUL SYLLABLE IEUNG-O-NIEUNHIEUH
-0x9EAA 0xC62B # HANGUL SYLLABLE IEUNG-O-TIKEUT
-0x9EAB 0xC62F # HANGUL SYLLABLE IEUNG-O-RIEULPIEUP
-0x9EAC 0xC631 # HANGUL SYLLABLE IEUNG-O-RIEULTHIEUTH
-0x9EAD 0xC632 # HANGUL SYLLABLE IEUNG-O-RIEULPHIEUPH
-0x9EAE 0xC636 # HANGUL SYLLABLE IEUNG-O-PIEUPSIOS
-0x9EAF 0xC638 # HANGUL SYLLABLE IEUNG-O-SSANGSIOS
-0x9EB0 0xC63A # HANGUL SYLLABLE IEUNG-O-CIEUC
-0x9EB1 0xC63C # HANGUL SYLLABLE IEUNG-O-KHIEUKH
-0x9EB2 0xC63D # HANGUL SYLLABLE IEUNG-O-THIEUTH
-0x9EB3 0xC63E # HANGUL SYLLABLE IEUNG-O-PHIEUPH
-0x9EB4 0xC63F # HANGUL SYLLABLE IEUNG-O-HIEUH
-0x9EB5 0xC642 # HANGUL SYLLABLE IEUNG-WA-SSANGKIYEOK
-0x9EB6 0xC643 # HANGUL SYLLABLE IEUNG-WA-KIYEOKSIOS
-0x9EB7 0xC645 # HANGUL SYLLABLE IEUNG-WA-NIEUNCIEUC
-0x9EB8 0xC646 # HANGUL SYLLABLE IEUNG-WA-NIEUNHIEUH
-0x9EB9 0xC647 # HANGUL SYLLABLE IEUNG-WA-TIKEUT
-0x9EBA 0xC649 # HANGUL SYLLABLE IEUNG-WA-RIEULKIYEOK
-0x9EBB 0xC64A # HANGUL SYLLABLE IEUNG-WA-RIEULMIEUM
-0x9EBC 0xC64B # HANGUL SYLLABLE IEUNG-WA-RIEULPIEUP
-0x9EBD 0xC64C # HANGUL SYLLABLE IEUNG-WA-RIEULSIOS
-0x9EBE 0xC64D # HANGUL SYLLABLE IEUNG-WA-RIEULTHIEUTH
-0x9EBF 0xC64E # HANGUL SYLLABLE IEUNG-WA-RIEULPHIEUPH
-0x9EC0 0xC64F # HANGUL SYLLABLE IEUNG-WA-RIEULHIEUH
-0x9EC1 0xC652 # HANGUL SYLLABLE IEUNG-WA-PIEUPSIOS
-0x9EC2 0xC656 # HANGUL SYLLABLE IEUNG-WA-CIEUC
-0x9EC3 0xC657 # HANGUL SYLLABLE IEUNG-WA-CHIEUCH
-0x9EC4 0xC658 # HANGUL SYLLABLE IEUNG-WA-KHIEUKH
-0x9EC5 0xC659 # HANGUL SYLLABLE IEUNG-WA-THIEUTH
-0x9EC6 0xC65A # HANGUL SYLLABLE IEUNG-WA-PHIEUPH
-0x9EC7 0xC65B # HANGUL SYLLABLE IEUNG-WA-HIEUH
-0x9EC8 0xC65E # HANGUL SYLLABLE IEUNG-WAE-SSANGKIYEOK
-0x9EC9 0xC65F # HANGUL SYLLABLE IEUNG-WAE-KIYEOKSIOS
-0x9ECA 0xC661 # HANGUL SYLLABLE IEUNG-WAE-NIEUNCIEUC
-0x9ECB 0xC662 # HANGUL SYLLABLE IEUNG-WAE-NIEUNHIEUH
-0x9ECC 0xC663 # HANGUL SYLLABLE IEUNG-WAE-TIKEUT
-0x9ECD 0xC664 # HANGUL SYLLABLE IEUNG-WAE-RIEUL
-0x9ECE 0xC665 # HANGUL SYLLABLE IEUNG-WAE-RIEULKIYEOK
-0x9ECF 0xC666 # HANGUL SYLLABLE IEUNG-WAE-RIEULMIEUM
-0x9ED0 0xC667 # HANGUL SYLLABLE IEUNG-WAE-RIEULPIEUP
-0x9ED1 0xC668 # HANGUL SYLLABLE IEUNG-WAE-RIEULSIOS
-0x9ED2 0xC669 # HANGUL SYLLABLE IEUNG-WAE-RIEULTHIEUTH
-0x9ED3 0xC66A # HANGUL SYLLABLE IEUNG-WAE-RIEULPHIEUPH
-0x9ED4 0xC66B # HANGUL SYLLABLE IEUNG-WAE-RIEULHIEUH
-0x9ED5 0xC66D # HANGUL SYLLABLE IEUNG-WAE-PIEUP
-0x9ED6 0xC66E # HANGUL SYLLABLE IEUNG-WAE-PIEUPSIOS
-0x9ED7 0xC670 # HANGUL SYLLABLE IEUNG-WAE-SSANGSIOS
-0x9ED8 0xC672 # HANGUL SYLLABLE IEUNG-WAE-CIEUC
-0x9ED9 0xC673 # HANGUL SYLLABLE IEUNG-WAE-CHIEUCH
-0x9EDA 0xC674 # HANGUL SYLLABLE IEUNG-WAE-KHIEUKH
-0x9EDB 0xC675 # HANGUL SYLLABLE IEUNG-WAE-THIEUTH
-0x9EDC 0xC676 # HANGUL SYLLABLE IEUNG-WAE-PHIEUPH
-0x9EDD 0xC677 # HANGUL SYLLABLE IEUNG-WAE-HIEUH
-0x9EDE 0xC67A # HANGUL SYLLABLE IEUNG-OE-SSANGKIYEOK
-0x9EDF 0xC67B # HANGUL SYLLABLE IEUNG-OE-KIYEOKSIOS
-0x9EE0 0xC67D # HANGUL SYLLABLE IEUNG-OE-NIEUNCIEUC
-0x9EE1 0xC67E # HANGUL SYLLABLE IEUNG-OE-NIEUNHIEUH
-0x9EE2 0xC67F # HANGUL SYLLABLE IEUNG-OE-TIKEUT
-0x9EE3 0xC681 # HANGUL SYLLABLE IEUNG-OE-RIEULKIYEOK
-0x9EE4 0xC682 # HANGUL SYLLABLE IEUNG-OE-RIEULMIEUM
-0x9EE5 0xC683 # HANGUL SYLLABLE IEUNG-OE-RIEULPIEUP
-0x9EE6 0xC684 # HANGUL SYLLABLE IEUNG-OE-RIEULSIOS
-0x9EE7 0xC685 # HANGUL SYLLABLE IEUNG-OE-RIEULTHIEUTH
-0x9EE8 0xC686 # HANGUL SYLLABLE IEUNG-OE-RIEULPHIEUPH
-0x9EE9 0xC687 # HANGUL SYLLABLE IEUNG-OE-RIEULHIEUH
-0x9EEA 0xC68A # HANGUL SYLLABLE IEUNG-OE-PIEUPSIOS
-0x9EEB 0xC68C # HANGUL SYLLABLE IEUNG-OE-SSANGSIOS
-0x9EEC 0xC68E # HANGUL SYLLABLE IEUNG-OE-CIEUC
-0x9EED 0xC68F # HANGUL SYLLABLE IEUNG-OE-CHIEUCH
-0x9EEE 0xC690 # HANGUL SYLLABLE IEUNG-OE-KHIEUKH
-0x9EEF 0xC691 # HANGUL SYLLABLE IEUNG-OE-THIEUTH
-0x9EF0 0xC692 # HANGUL SYLLABLE IEUNG-OE-PHIEUPH
-0x9EF1 0xC693 # HANGUL SYLLABLE IEUNG-OE-HIEUH
-0x9EF2 0xC696 # HANGUL SYLLABLE IEUNG-YO-SSANGKIYEOK
-0x9EF3 0xC697 # HANGUL SYLLABLE IEUNG-YO-KIYEOKSIOS
-0x9EF4 0xC699 # HANGUL SYLLABLE IEUNG-YO-NIEUNCIEUC
-0x9EF5 0xC69A # HANGUL SYLLABLE IEUNG-YO-NIEUNHIEUH
-0x9EF6 0xC69B # HANGUL SYLLABLE IEUNG-YO-TIKEUT
-0x9EF7 0xC69D # HANGUL SYLLABLE IEUNG-YO-RIEULKIYEOK
-0x9EF8 0xC69E # HANGUL SYLLABLE IEUNG-YO-RIEULMIEUM
-0x9EF9 0xC69F # HANGUL SYLLABLE IEUNG-YO-RIEULPIEUP
-0x9EFA 0xC6A0 # HANGUL SYLLABLE IEUNG-YO-RIEULSIOS
-0x9EFB 0xC6A1 # HANGUL SYLLABLE IEUNG-YO-RIEULTHIEUTH
-0x9EFC 0xC6A2 # HANGUL SYLLABLE IEUNG-YO-RIEULPHIEUPH
-0x9EFD 0xC6A3 # HANGUL SYLLABLE IEUNG-YO-RIEULHIEUH
-0x9EFE 0xC6A6 # HANGUL SYLLABLE IEUNG-YO-PIEUPSIOS
-0x9F41 0xC6A8 # HANGUL SYLLABLE IEUNG-YO-SSANGSIOS
-0x9F42 0xC6AA # HANGUL SYLLABLE IEUNG-YO-CIEUC
-0x9F43 0xC6AB # HANGUL SYLLABLE IEUNG-YO-CHIEUCH
-0x9F44 0xC6AC # HANGUL SYLLABLE IEUNG-YO-KHIEUKH
-0x9F45 0xC6AD # HANGUL SYLLABLE IEUNG-YO-THIEUTH
-0x9F46 0xC6AE # HANGUL SYLLABLE IEUNG-YO-PHIEUPH
-0x9F47 0xC6AF # HANGUL SYLLABLE IEUNG-YO-HIEUH
-0x9F48 0xC6B2 # HANGUL SYLLABLE IEUNG-U-SSANGKIYEOK
-0x9F49 0xC6B3 # HANGUL SYLLABLE IEUNG-U-KIYEOKSIOS
-0x9F4A 0xC6B5 # HANGUL SYLLABLE IEUNG-U-NIEUNCIEUC
-0x9F4B 0xC6B6 # HANGUL SYLLABLE IEUNG-U-NIEUNHIEUH
-0x9F4C 0xC6B7 # HANGUL SYLLABLE IEUNG-U-TIKEUT
-0x9F4D 0xC6BB # HANGUL SYLLABLE IEUNG-U-RIEULPIEUP
-0x9F4E 0xC6BC # HANGUL SYLLABLE IEUNG-U-RIEULSIOS
-0x9F4F 0xC6BD # HANGUL SYLLABLE IEUNG-U-RIEULTHIEUTH
-0x9F50 0xC6BE # HANGUL SYLLABLE IEUNG-U-RIEULPHIEUPH
-0x9F51 0xC6BF # HANGUL SYLLABLE IEUNG-U-RIEULHIEUH
-0x9F52 0xC6C2 # HANGUL SYLLABLE IEUNG-U-PIEUPSIOS
-0x9F53 0xC6C4 # HANGUL SYLLABLE IEUNG-U-SSANGSIOS
-0x9F54 0xC6C6 # HANGUL SYLLABLE IEUNG-U-CIEUC
-0x9F55 0xC6C7 # HANGUL SYLLABLE IEUNG-U-CHIEUCH
-0x9F56 0xC6C8 # HANGUL SYLLABLE IEUNG-U-KHIEUKH
-0x9F57 0xC6C9 # HANGUL SYLLABLE IEUNG-U-THIEUTH
-0x9F58 0xC6CA # HANGUL SYLLABLE IEUNG-U-PHIEUPH
-0x9F59 0xC6CB # HANGUL SYLLABLE IEUNG-U-HIEUH
-0x9F5A 0xC6CE # HANGUL SYLLABLE IEUNG-WEO-SSANGKIYEOK
-0x9F61 0xC6CF # HANGUL SYLLABLE IEUNG-WEO-KIYEOKSIOS
-0x9F62 0xC6D1 # HANGUL SYLLABLE IEUNG-WEO-NIEUNCIEUC
-0x9F63 0xC6D2 # HANGUL SYLLABLE IEUNG-WEO-NIEUNHIEUH
-0x9F64 0xC6D3 # HANGUL SYLLABLE IEUNG-WEO-TIKEUT
-0x9F65 0xC6D5 # HANGUL SYLLABLE IEUNG-WEO-RIEULKIYEOK
-0x9F66 0xC6D6 # HANGUL SYLLABLE IEUNG-WEO-RIEULMIEUM
-0x9F67 0xC6D7 # HANGUL SYLLABLE IEUNG-WEO-RIEULPIEUP
-0x9F68 0xC6D8 # HANGUL SYLLABLE IEUNG-WEO-RIEULSIOS
-0x9F69 0xC6D9 # HANGUL SYLLABLE IEUNG-WEO-RIEULTHIEUTH
-0x9F6A 0xC6DA # HANGUL SYLLABLE IEUNG-WEO-RIEULPHIEUPH
-0x9F6B 0xC6DB # HANGUL SYLLABLE IEUNG-WEO-RIEULHIEUH
-0x9F6C 0xC6DE # HANGUL SYLLABLE IEUNG-WEO-PIEUPSIOS
-0x9F6D 0xC6DF # HANGUL SYLLABLE IEUNG-WEO-SIOS
-0x9F6E 0xC6E2 # HANGUL SYLLABLE IEUNG-WEO-CIEUC
-0x9F6F 0xC6E3 # HANGUL SYLLABLE IEUNG-WEO-CHIEUCH
-0x9F70 0xC6E4 # HANGUL SYLLABLE IEUNG-WEO-KHIEUKH
-0x9F71 0xC6E5 # HANGUL SYLLABLE IEUNG-WEO-THIEUTH
-0x9F72 0xC6E6 # HANGUL SYLLABLE IEUNG-WEO-PHIEUPH
-0x9F73 0xC6E7 # HANGUL SYLLABLE IEUNG-WEO-HIEUH
-0x9F74 0xC6EA # HANGUL SYLLABLE IEUNG-WE-SSANGKIYEOK
-0x9F75 0xC6EB # HANGUL SYLLABLE IEUNG-WE-KIYEOKSIOS
-0x9F76 0xC6ED # HANGUL SYLLABLE IEUNG-WE-NIEUNCIEUC
-0x9F77 0xC6EE # HANGUL SYLLABLE IEUNG-WE-NIEUNHIEUH
-0x9F78 0xC6EF # HANGUL SYLLABLE IEUNG-WE-TIKEUT
-0x9F79 0xC6F1 # HANGUL SYLLABLE IEUNG-WE-RIEULKIYEOK
-0x9F7A 0xC6F2 # HANGUL SYLLABLE IEUNG-WE-RIEULMIEUM
-0x9F81 0xC6F3 # HANGUL SYLLABLE IEUNG-WE-RIEULPIEUP
-0x9F82 0xC6F4 # HANGUL SYLLABLE IEUNG-WE-RIEULSIOS
-0x9F83 0xC6F5 # HANGUL SYLLABLE IEUNG-WE-RIEULTHIEUTH
-0x9F84 0xC6F6 # HANGUL SYLLABLE IEUNG-WE-RIEULPHIEUPH
-0x9F85 0xC6F7 # HANGUL SYLLABLE IEUNG-WE-RIEULHIEUH
-0x9F86 0xC6FA # HANGUL SYLLABLE IEUNG-WE-PIEUPSIOS
-0x9F87 0xC6FB # HANGUL SYLLABLE IEUNG-WE-SIOS
-0x9F88 0xC6FC # HANGUL SYLLABLE IEUNG-WE-SSANGSIOS
-0x9F89 0xC6FE # HANGUL SYLLABLE IEUNG-WE-CIEUC
-0x9F8A 0xC6FF # HANGUL SYLLABLE IEUNG-WE-CHIEUCH
-0x9F8B 0xC700 # HANGUL SYLLABLE IEUNG-WE-KHIEUKH
-0x9F8C 0xC701 # HANGUL SYLLABLE IEUNG-WE-THIEUTH
-0x9F8D 0xC702 # HANGUL SYLLABLE IEUNG-WE-PHIEUPH
-0x9F8E 0xC703 # HANGUL SYLLABLE IEUNG-WE-HIEUH
-0x9F8F 0xC706 # HANGUL SYLLABLE IEUNG-WI-SSANGKIYEOK
-0x9F90 0xC707 # HANGUL SYLLABLE IEUNG-WI-KIYEOKSIOS
-0x9F91 0xC709 # HANGUL SYLLABLE IEUNG-WI-NIEUNCIEUC
-0x9F92 0xC70A # HANGUL SYLLABLE IEUNG-WI-NIEUNHIEUH
-0x9F93 0xC70B # HANGUL SYLLABLE IEUNG-WI-TIKEUT
-0x9F94 0xC70D # HANGUL SYLLABLE IEUNG-WI-RIEULKIYEOK
-0x9F95 0xC70E # HANGUL SYLLABLE IEUNG-WI-RIEULMIEUM
-0x9F96 0xC70F # HANGUL SYLLABLE IEUNG-WI-RIEULPIEUP
-0x9F97 0xC710 # HANGUL SYLLABLE IEUNG-WI-RIEULSIOS
-0x9F98 0xC711 # HANGUL SYLLABLE IEUNG-WI-RIEULTHIEUTH
-0x9F99 0xC712 # HANGUL SYLLABLE IEUNG-WI-RIEULPHIEUPH
-0x9F9A 0xC713 # HANGUL SYLLABLE IEUNG-WI-RIEULHIEUH
-0x9F9B 0xC716 # HANGUL SYLLABLE IEUNG-WI-PIEUPSIOS
-0x9F9C 0xC718 # HANGUL SYLLABLE IEUNG-WI-SSANGSIOS
-0x9F9D 0xC71A # HANGUL SYLLABLE IEUNG-WI-CIEUC
-0x9F9E 0xC71B # HANGUL SYLLABLE IEUNG-WI-CHIEUCH
-0x9F9F 0xC71C # HANGUL SYLLABLE IEUNG-WI-KHIEUKH
-0x9FA0 0xC71D # HANGUL SYLLABLE IEUNG-WI-THIEUTH
-0x9FA1 0xC71E # HANGUL SYLLABLE IEUNG-WI-PHIEUPH
-0x9FA2 0xC71F # HANGUL SYLLABLE IEUNG-WI-HIEUH
-0x9FA3 0xC722 # HANGUL SYLLABLE IEUNG-YU-SSANGKIYEOK
-0x9FA4 0xC723 # HANGUL SYLLABLE IEUNG-YU-KIYEOKSIOS
-0x9FA5 0xC725 # HANGUL SYLLABLE IEUNG-YU-NIEUNCIEUC
-0x9FA6 0xC726 # HANGUL SYLLABLE IEUNG-YU-NIEUNHIEUH
-0x9FA7 0xC727 # HANGUL SYLLABLE IEUNG-YU-TIKEUT
-0x9FA8 0xC729 # HANGUL SYLLABLE IEUNG-YU-RIEULKIYEOK
-0x9FA9 0xC72A # HANGUL SYLLABLE IEUNG-YU-RIEULMIEUM
-0x9FAA 0xC72B # HANGUL SYLLABLE IEUNG-YU-RIEULPIEUP
-0x9FAB 0xC72C # HANGUL SYLLABLE IEUNG-YU-RIEULSIOS
-0x9FAC 0xC72D # HANGUL SYLLABLE IEUNG-YU-RIEULTHIEUTH
-0x9FAD 0xC72E # HANGUL SYLLABLE IEUNG-YU-RIEULPHIEUPH
-0x9FAE 0xC72F # HANGUL SYLLABLE IEUNG-YU-RIEULHIEUH
-0x9FAF 0xC732 # HANGUL SYLLABLE IEUNG-YU-PIEUPSIOS
-0x9FB0 0xC734 # HANGUL SYLLABLE IEUNG-YU-SSANGSIOS
-0x9FB1 0xC736 # HANGUL SYLLABLE IEUNG-YU-CIEUC
-0x9FB2 0xC738 # HANGUL SYLLABLE IEUNG-YU-KHIEUKH
-0x9FB3 0xC739 # HANGUL SYLLABLE IEUNG-YU-THIEUTH
-0x9FB4 0xC73A # HANGUL SYLLABLE IEUNG-YU-PHIEUPH
-0x9FB5 0xC73B # HANGUL SYLLABLE IEUNG-YU-HIEUH
-0x9FB6 0xC73E # HANGUL SYLLABLE IEUNG-EU-SSANGKIYEOK
-0x9FB7 0xC73F # HANGUL SYLLABLE IEUNG-EU-KIYEOKSIOS
-0x9FB8 0xC741 # HANGUL SYLLABLE IEUNG-EU-NIEUNCIEUC
-0x9FB9 0xC742 # HANGUL SYLLABLE IEUNG-EU-NIEUNHIEUH
-0x9FBA 0xC743 # HANGUL SYLLABLE IEUNG-EU-TIKEUT
-0x9FBB 0xC745 # HANGUL SYLLABLE IEUNG-EU-RIEULKIYEOK
-0x9FBC 0xC746 # HANGUL SYLLABLE IEUNG-EU-RIEULMIEUM
-0x9FBD 0xC747 # HANGUL SYLLABLE IEUNG-EU-RIEULPIEUP
-0x9FBE 0xC748 # HANGUL SYLLABLE IEUNG-EU-RIEULSIOS
-0x9FBF 0xC749 # HANGUL SYLLABLE IEUNG-EU-RIEULTHIEUTH
-0x9FC0 0xC74B # HANGUL SYLLABLE IEUNG-EU-RIEULHIEUH
-0x9FC1 0xC74E # HANGUL SYLLABLE IEUNG-EU-PIEUPSIOS
-0x9FC2 0xC750 # HANGUL SYLLABLE IEUNG-EU-SSANGSIOS
-0x9FC3 0xC759 # HANGUL SYLLABLE IEUNG-YI-KIYEOK
-0x9FC4 0xC75A # HANGUL SYLLABLE IEUNG-YI-SSANGKIYEOK
-0x9FC5 0xC75B # HANGUL SYLLABLE IEUNG-YI-KIYEOKSIOS
-0x9FC6 0xC75D # HANGUL SYLLABLE IEUNG-YI-NIEUNCIEUC
-0x9FC7 0xC75E # HANGUL SYLLABLE IEUNG-YI-NIEUNHIEUH
-0x9FC8 0xC75F # HANGUL SYLLABLE IEUNG-YI-TIKEUT
-0x9FC9 0xC761 # HANGUL SYLLABLE IEUNG-YI-RIEULKIYEOK
-0x9FCA 0xC762 # HANGUL SYLLABLE IEUNG-YI-RIEULMIEUM
-0x9FCB 0xC763 # HANGUL SYLLABLE IEUNG-YI-RIEULPIEUP
-0x9FCC 0xC764 # HANGUL SYLLABLE IEUNG-YI-RIEULSIOS
-0x9FCD 0xC765 # HANGUL SYLLABLE IEUNG-YI-RIEULTHIEUTH
-0x9FCE 0xC766 # HANGUL SYLLABLE IEUNG-YI-RIEULPHIEUPH
-0x9FCF 0xC767 # HANGUL SYLLABLE IEUNG-YI-RIEULHIEUH
-0x9FD0 0xC769 # HANGUL SYLLABLE IEUNG-YI-PIEUP
-0x9FD1 0xC76A # HANGUL SYLLABLE IEUNG-YI-PIEUPSIOS
-0x9FD2 0xC76C # HANGUL SYLLABLE IEUNG-YI-SSANGSIOS
-0x9FD3 0xC76D # HANGUL SYLLABLE IEUNG-YI-IEUNG
-0x9FD4 0xC76E # HANGUL SYLLABLE IEUNG-YI-CIEUC
-0x9FD5 0xC76F # HANGUL SYLLABLE IEUNG-YI-CHIEUCH
-0x9FD6 0xC770 # HANGUL SYLLABLE IEUNG-YI-KHIEUKH
-0x9FD7 0xC771 # HANGUL SYLLABLE IEUNG-YI-THIEUTH
-0x9FD8 0xC772 # HANGUL SYLLABLE IEUNG-YI-PHIEUPH
-0x9FD9 0xC773 # HANGUL SYLLABLE IEUNG-YI-HIEUH
-0x9FDA 0xC776 # HANGUL SYLLABLE IEUNG-I-SSANGKIYEOK
-0x9FDB 0xC777 # HANGUL SYLLABLE IEUNG-I-KIYEOKSIOS
-0x9FDC 0xC779 # HANGUL SYLLABLE IEUNG-I-NIEUNCIEUC
-0x9FDD 0xC77A # HANGUL SYLLABLE IEUNG-I-NIEUNHIEUH
-0x9FDE 0xC77B # HANGUL SYLLABLE IEUNG-I-TIKEUT
-0x9FDF 0xC77F # HANGUL SYLLABLE IEUNG-I-RIEULPIEUP
-0x9FE0 0xC780 # HANGUL SYLLABLE IEUNG-I-RIEULSIOS
-0x9FE1 0xC781 # HANGUL SYLLABLE IEUNG-I-RIEULTHIEUTH
-0x9FE2 0xC782 # HANGUL SYLLABLE IEUNG-I-RIEULPHIEUPH
-0x9FE3 0xC786 # HANGUL SYLLABLE IEUNG-I-PIEUPSIOS
-0x9FE4 0xC78B # HANGUL SYLLABLE IEUNG-I-CHIEUCH
-0x9FE5 0xC78C # HANGUL SYLLABLE IEUNG-I-KHIEUKH
-0x9FE6 0xC78D # HANGUL SYLLABLE IEUNG-I-THIEUTH
-0x9FE7 0xC78F # HANGUL SYLLABLE IEUNG-I-HIEUH
-0x9FE8 0xC792 # HANGUL SYLLABLE CIEUC-A-SSANGKIYEOK
-0x9FE9 0xC793 # HANGUL SYLLABLE CIEUC-A-KIYEOKSIOS
-0x9FEA 0xC795 # HANGUL SYLLABLE CIEUC-A-NIEUNCIEUC
-0x9FEB 0xC799 # HANGUL SYLLABLE CIEUC-A-RIEULKIYEOK
-0x9FEC 0xC79B # HANGUL SYLLABLE CIEUC-A-RIEULPIEUP
-0x9FED 0xC79C # HANGUL SYLLABLE CIEUC-A-RIEULSIOS
-0x9FEE 0xC79D # HANGUL SYLLABLE CIEUC-A-RIEULTHIEUTH
-0x9FEF 0xC79E # HANGUL SYLLABLE CIEUC-A-RIEULPHIEUPH
-0x9FF0 0xC79F # HANGUL SYLLABLE CIEUC-A-RIEULHIEUH
-0x9FF1 0xC7A2 # HANGUL SYLLABLE CIEUC-A-PIEUPSIOS
-0x9FF2 0xC7A7 # HANGUL SYLLABLE CIEUC-A-CHIEUCH
-0x9FF3 0xC7A8 # HANGUL SYLLABLE CIEUC-A-KHIEUKH
-0x9FF4 0xC7A9 # HANGUL SYLLABLE CIEUC-A-THIEUTH
-0x9FF5 0xC7AA # HANGUL SYLLABLE CIEUC-A-PHIEUPH
-0x9FF6 0xC7AB # HANGUL SYLLABLE CIEUC-A-HIEUH
-0x9FF7 0xC7AE # HANGUL SYLLABLE CIEUC-AE-SSANGKIYEOK
-0x9FF8 0xC7AF # HANGUL SYLLABLE CIEUC-AE-KIYEOKSIOS
-0x9FF9 0xC7B1 # HANGUL SYLLABLE CIEUC-AE-NIEUNCIEUC
-0x9FFA 0xC7B2 # HANGUL SYLLABLE CIEUC-AE-NIEUNHIEUH
-0x9FFB 0xC7B3 # HANGUL SYLLABLE CIEUC-AE-TIKEUT
-0x9FFC 0xC7B5 # HANGUL SYLLABLE CIEUC-AE-RIEULKIYEOK
-0x9FFD 0xC7B6 # HANGUL SYLLABLE CIEUC-AE-RIEULMIEUM
-0x9FFE 0xC7B7 # HANGUL SYLLABLE CIEUC-AE-RIEULPIEUP
-0xA041 0xC7B8 # HANGUL SYLLABLE CIEUC-AE-RIEULSIOS
-0xA042 0xC7B9 # HANGUL SYLLABLE CIEUC-AE-RIEULTHIEUTH
-0xA043 0xC7BA # HANGUL SYLLABLE CIEUC-AE-RIEULPHIEUPH
-0xA044 0xC7BB # HANGUL SYLLABLE CIEUC-AE-RIEULHIEUH
-0xA045 0xC7BE # HANGUL SYLLABLE CIEUC-AE-PIEUPSIOS
-0xA046 0xC7C2 # HANGUL SYLLABLE CIEUC-AE-CIEUC
-0xA047 0xC7C3 # HANGUL SYLLABLE CIEUC-AE-CHIEUCH
-0xA048 0xC7C4 # HANGUL SYLLABLE CIEUC-AE-KHIEUKH
-0xA049 0xC7C5 # HANGUL SYLLABLE CIEUC-AE-THIEUTH
-0xA04A 0xC7C6 # HANGUL SYLLABLE CIEUC-AE-PHIEUPH
-0xA04B 0xC7C7 # HANGUL SYLLABLE CIEUC-AE-HIEUH
-0xA04C 0xC7CA # HANGUL SYLLABLE CIEUC-YA-SSANGKIYEOK
-0xA04D 0xC7CB # HANGUL SYLLABLE CIEUC-YA-KIYEOKSIOS
-0xA04E 0xC7CD # HANGUL SYLLABLE CIEUC-YA-NIEUNCIEUC
-0xA04F 0xC7CF # HANGUL SYLLABLE CIEUC-YA-TIKEUT
-0xA050 0xC7D1 # HANGUL SYLLABLE CIEUC-YA-RIEULKIYEOK
-0xA051 0xC7D2 # HANGUL SYLLABLE CIEUC-YA-RIEULMIEUM
-0xA052 0xC7D3 # HANGUL SYLLABLE CIEUC-YA-RIEULPIEUP
-0xA053 0xC7D4 # HANGUL SYLLABLE CIEUC-YA-RIEULSIOS
-0xA054 0xC7D5 # HANGUL SYLLABLE CIEUC-YA-RIEULTHIEUTH
-0xA055 0xC7D6 # HANGUL SYLLABLE CIEUC-YA-RIEULPHIEUPH
-0xA056 0xC7D7 # HANGUL SYLLABLE CIEUC-YA-RIEULHIEUH
-0xA057 0xC7D9 # HANGUL SYLLABLE CIEUC-YA-PIEUP
-0xA058 0xC7DA # HANGUL SYLLABLE CIEUC-YA-PIEUPSIOS
-0xA059 0xC7DB # HANGUL SYLLABLE CIEUC-YA-SIOS
-0xA05A 0xC7DC # HANGUL SYLLABLE CIEUC-YA-SSANGSIOS
-0xA061 0xC7DE # HANGUL SYLLABLE CIEUC-YA-CIEUC
-0xA062 0xC7DF # HANGUL SYLLABLE CIEUC-YA-CHIEUCH
-0xA063 0xC7E0 # HANGUL SYLLABLE CIEUC-YA-KHIEUKH
-0xA064 0xC7E1 # HANGUL SYLLABLE CIEUC-YA-THIEUTH
-0xA065 0xC7E2 # HANGUL SYLLABLE CIEUC-YA-PHIEUPH
-0xA066 0xC7E3 # HANGUL SYLLABLE CIEUC-YA-HIEUH
-0xA067 0xC7E5 # HANGUL SYLLABLE CIEUC-YAE-KIYEOK
-0xA068 0xC7E6 # HANGUL SYLLABLE CIEUC-YAE-SSANGKIYEOK
-0xA069 0xC7E7 # HANGUL SYLLABLE CIEUC-YAE-KIYEOKSIOS
-0xA06A 0xC7E9 # HANGUL SYLLABLE CIEUC-YAE-NIEUNCIEUC
-0xA06B 0xC7EA # HANGUL SYLLABLE CIEUC-YAE-NIEUNHIEUH
-0xA06C 0xC7EB # HANGUL SYLLABLE CIEUC-YAE-TIKEUT
-0xA06D 0xC7ED # HANGUL SYLLABLE CIEUC-YAE-RIEULKIYEOK
-0xA06E 0xC7EE # HANGUL SYLLABLE CIEUC-YAE-RIEULMIEUM
-0xA06F 0xC7EF # HANGUL SYLLABLE CIEUC-YAE-RIEULPIEUP
-0xA070 0xC7F0 # HANGUL SYLLABLE CIEUC-YAE-RIEULSIOS
-0xA071 0xC7F1 # HANGUL SYLLABLE CIEUC-YAE-RIEULTHIEUTH
-0xA072 0xC7F2 # HANGUL SYLLABLE CIEUC-YAE-RIEULPHIEUPH
-0xA073 0xC7F3 # HANGUL SYLLABLE CIEUC-YAE-RIEULHIEUH
-0xA074 0xC7F4 # HANGUL SYLLABLE CIEUC-YAE-MIEUM
-0xA075 0xC7F5 # HANGUL SYLLABLE CIEUC-YAE-PIEUP
-0xA076 0xC7F6 # HANGUL SYLLABLE CIEUC-YAE-PIEUPSIOS
-0xA077 0xC7F7 # HANGUL SYLLABLE CIEUC-YAE-SIOS
-0xA078 0xC7F8 # HANGUL SYLLABLE CIEUC-YAE-SSANGSIOS
-0xA079 0xC7F9 # HANGUL SYLLABLE CIEUC-YAE-IEUNG
-0xA07A 0xC7FA # HANGUL SYLLABLE CIEUC-YAE-CIEUC
-0xA081 0xC7FB # HANGUL SYLLABLE CIEUC-YAE-CHIEUCH
-0xA082 0xC7FC # HANGUL SYLLABLE CIEUC-YAE-KHIEUKH
-0xA083 0xC7FD # HANGUL SYLLABLE CIEUC-YAE-THIEUTH
-0xA084 0xC7FE # HANGUL SYLLABLE CIEUC-YAE-PHIEUPH
-0xA085 0xC7FF # HANGUL SYLLABLE CIEUC-YAE-HIEUH
-0xA086 0xC802 # HANGUL SYLLABLE CIEUC-EO-SSANGKIYEOK
-0xA087 0xC803 # HANGUL SYLLABLE CIEUC-EO-KIYEOKSIOS
-0xA088 0xC805 # HANGUL SYLLABLE CIEUC-EO-NIEUNCIEUC
-0xA089 0xC806 # HANGUL SYLLABLE CIEUC-EO-NIEUNHIEUH
-0xA08A 0xC807 # HANGUL SYLLABLE CIEUC-EO-TIKEUT
-0xA08B 0xC809 # HANGUL SYLLABLE CIEUC-EO-RIEULKIYEOK
-0xA08C 0xC80B # HANGUL SYLLABLE CIEUC-EO-RIEULPIEUP
-0xA08D 0xC80C # HANGUL SYLLABLE CIEUC-EO-RIEULSIOS
-0xA08E 0xC80D # HANGUL SYLLABLE CIEUC-EO-RIEULTHIEUTH
-0xA08F 0xC80E # HANGUL SYLLABLE CIEUC-EO-RIEULPHIEUPH
-0xA090 0xC80F # HANGUL SYLLABLE CIEUC-EO-RIEULHIEUH
-0xA091 0xC812 # HANGUL SYLLABLE CIEUC-EO-PIEUPSIOS
-0xA092 0xC814 # HANGUL SYLLABLE CIEUC-EO-SSANGSIOS
-0xA093 0xC817 # HANGUL SYLLABLE CIEUC-EO-CHIEUCH
-0xA094 0xC818 # HANGUL SYLLABLE CIEUC-EO-KHIEUKH
-0xA095 0xC819 # HANGUL SYLLABLE CIEUC-EO-THIEUTH
-0xA096 0xC81A # HANGUL SYLLABLE CIEUC-EO-PHIEUPH
-0xA097 0xC81B # HANGUL SYLLABLE CIEUC-EO-HIEUH
-0xA098 0xC81E # HANGUL SYLLABLE CIEUC-E-SSANGKIYEOK
-0xA099 0xC81F # HANGUL SYLLABLE CIEUC-E-KIYEOKSIOS
-0xA09A 0xC821 # HANGUL SYLLABLE CIEUC-E-NIEUNCIEUC
-0xA09B 0xC822 # HANGUL SYLLABLE CIEUC-E-NIEUNHIEUH
-0xA09C 0xC823 # HANGUL SYLLABLE CIEUC-E-TIKEUT
-0xA09D 0xC825 # HANGUL SYLLABLE CIEUC-E-RIEULKIYEOK
-0xA09E 0xC826 # HANGUL SYLLABLE CIEUC-E-RIEULMIEUM
-0xA09F 0xC827 # HANGUL SYLLABLE CIEUC-E-RIEULPIEUP
-0xA0A0 0xC828 # HANGUL SYLLABLE CIEUC-E-RIEULSIOS
-0xA0A1 0xC829 # HANGUL SYLLABLE CIEUC-E-RIEULTHIEUTH
-0xA0A2 0xC82A # HANGUL SYLLABLE CIEUC-E-RIEULPHIEUPH
-0xA0A3 0xC82B # HANGUL SYLLABLE CIEUC-E-RIEULHIEUH
-0xA0A4 0xC82E # HANGUL SYLLABLE CIEUC-E-PIEUPSIOS
-0xA0A5 0xC830 # HANGUL SYLLABLE CIEUC-E-SSANGSIOS
-0xA0A6 0xC832 # HANGUL SYLLABLE CIEUC-E-CIEUC
-0xA0A7 0xC833 # HANGUL SYLLABLE CIEUC-E-CHIEUCH
-0xA0A8 0xC834 # HANGUL SYLLABLE CIEUC-E-KHIEUKH
-0xA0A9 0xC835 # HANGUL SYLLABLE CIEUC-E-THIEUTH
-0xA0AA 0xC836 # HANGUL SYLLABLE CIEUC-E-PHIEUPH
-0xA0AB 0xC837 # HANGUL SYLLABLE CIEUC-E-HIEUH
-0xA0AC 0xC839 # HANGUL SYLLABLE CIEUC-YEO-KIYEOK
-0xA0AD 0xC83A # HANGUL SYLLABLE CIEUC-YEO-SSANGKIYEOK
-0xA0AE 0xC83B # HANGUL SYLLABLE CIEUC-YEO-KIYEOKSIOS
-0xA0AF 0xC83D # HANGUL SYLLABLE CIEUC-YEO-NIEUNCIEUC
-0xA0B0 0xC83E # HANGUL SYLLABLE CIEUC-YEO-NIEUNHIEUH
-0xA0B1 0xC83F # HANGUL SYLLABLE CIEUC-YEO-TIKEUT
-0xA0B2 0xC841 # HANGUL SYLLABLE CIEUC-YEO-RIEULKIYEOK
-0xA0B3 0xC842 # HANGUL SYLLABLE CIEUC-YEO-RIEULMIEUM
-0xA0B4 0xC843 # HANGUL SYLLABLE CIEUC-YEO-RIEULPIEUP
-0xA0B5 0xC844 # HANGUL SYLLABLE CIEUC-YEO-RIEULSIOS
-0xA0B6 0xC845 # HANGUL SYLLABLE CIEUC-YEO-RIEULTHIEUTH
-0xA0B7 0xC846 # HANGUL SYLLABLE CIEUC-YEO-RIEULPHIEUPH
-0xA0B8 0xC847 # HANGUL SYLLABLE CIEUC-YEO-RIEULHIEUH
-0xA0B9 0xC84A # HANGUL SYLLABLE CIEUC-YEO-PIEUPSIOS
-0xA0BA 0xC84B # HANGUL SYLLABLE CIEUC-YEO-SIOS
-0xA0BB 0xC84E # HANGUL SYLLABLE CIEUC-YEO-CIEUC
-0xA0BC 0xC84F # HANGUL SYLLABLE CIEUC-YEO-CHIEUCH
-0xA0BD 0xC850 # HANGUL SYLLABLE CIEUC-YEO-KHIEUKH
-0xA0BE 0xC851 # HANGUL SYLLABLE CIEUC-YEO-THIEUTH
-0xA0BF 0xC852 # HANGUL SYLLABLE CIEUC-YEO-PHIEUPH
-0xA0C0 0xC853 # HANGUL SYLLABLE CIEUC-YEO-HIEUH
-0xA0C1 0xC855 # HANGUL SYLLABLE CIEUC-YE-KIYEOK
-0xA0C2 0xC856 # HANGUL SYLLABLE CIEUC-YE-SSANGKIYEOK
-0xA0C3 0xC857 # HANGUL SYLLABLE CIEUC-YE-KIYEOKSIOS
-0xA0C4 0xC858 # HANGUL SYLLABLE CIEUC-YE-NIEUN
-0xA0C5 0xC859 # HANGUL SYLLABLE CIEUC-YE-NIEUNCIEUC
-0xA0C6 0xC85A # HANGUL SYLLABLE CIEUC-YE-NIEUNHIEUH
-0xA0C7 0xC85B # HANGUL SYLLABLE CIEUC-YE-TIKEUT
-0xA0C8 0xC85C # HANGUL SYLLABLE CIEUC-YE-RIEUL
-0xA0C9 0xC85D # HANGUL SYLLABLE CIEUC-YE-RIEULKIYEOK
-0xA0CA 0xC85E # HANGUL SYLLABLE CIEUC-YE-RIEULMIEUM
-0xA0CB 0xC85F # HANGUL SYLLABLE CIEUC-YE-RIEULPIEUP
-0xA0CC 0xC860 # HANGUL SYLLABLE CIEUC-YE-RIEULSIOS
-0xA0CD 0xC861 # HANGUL SYLLABLE CIEUC-YE-RIEULTHIEUTH
-0xA0CE 0xC862 # HANGUL SYLLABLE CIEUC-YE-RIEULPHIEUPH
-0xA0CF 0xC863 # HANGUL SYLLABLE CIEUC-YE-RIEULHIEUH
-0xA0D0 0xC864 # HANGUL SYLLABLE CIEUC-YE-MIEUM
-0xA0D1 0xC865 # HANGUL SYLLABLE CIEUC-YE-PIEUP
-0xA0D2 0xC866 # HANGUL SYLLABLE CIEUC-YE-PIEUPSIOS
-0xA0D3 0xC867 # HANGUL SYLLABLE CIEUC-YE-SIOS
-0xA0D4 0xC868 # HANGUL SYLLABLE CIEUC-YE-SSANGSIOS
-0xA0D5 0xC869 # HANGUL SYLLABLE CIEUC-YE-IEUNG
-0xA0D6 0xC86A # HANGUL SYLLABLE CIEUC-YE-CIEUC
-0xA0D7 0xC86B # HANGUL SYLLABLE CIEUC-YE-CHIEUCH
-0xA0D8 0xC86C # HANGUL SYLLABLE CIEUC-YE-KHIEUKH
-0xA0D9 0xC86D # HANGUL SYLLABLE CIEUC-YE-THIEUTH
-0xA0DA 0xC86E # HANGUL SYLLABLE CIEUC-YE-PHIEUPH
-0xA0DB 0xC86F # HANGUL SYLLABLE CIEUC-YE-HIEUH
-0xA0DC 0xC872 # HANGUL SYLLABLE CIEUC-O-SSANGKIYEOK
-0xA0DD 0xC873 # HANGUL SYLLABLE CIEUC-O-KIYEOKSIOS
-0xA0DE 0xC875 # HANGUL SYLLABLE CIEUC-O-NIEUNCIEUC
-0xA0DF 0xC876 # HANGUL SYLLABLE CIEUC-O-NIEUNHIEUH
-0xA0E0 0xC877 # HANGUL SYLLABLE CIEUC-O-TIKEUT
-0xA0E1 0xC879 # HANGUL SYLLABLE CIEUC-O-RIEULKIYEOK
-0xA0E2 0xC87B # HANGUL SYLLABLE CIEUC-O-RIEULPIEUP
-0xA0E3 0xC87C # HANGUL SYLLABLE CIEUC-O-RIEULSIOS
-0xA0E4 0xC87D # HANGUL SYLLABLE CIEUC-O-RIEULTHIEUTH
-0xA0E5 0xC87E # HANGUL SYLLABLE CIEUC-O-RIEULPHIEUPH
-0xA0E6 0xC87F # HANGUL SYLLABLE CIEUC-O-RIEULHIEUH
-0xA0E7 0xC882 # HANGUL SYLLABLE CIEUC-O-PIEUPSIOS
-0xA0E8 0xC884 # HANGUL SYLLABLE CIEUC-O-SSANGSIOS
-0xA0E9 0xC888 # HANGUL SYLLABLE CIEUC-O-KHIEUKH
-0xA0EA 0xC889 # HANGUL SYLLABLE CIEUC-O-THIEUTH
-0xA0EB 0xC88A # HANGUL SYLLABLE CIEUC-O-PHIEUPH
-0xA0EC 0xC88E # HANGUL SYLLABLE CIEUC-WA-SSANGKIYEOK
-0xA0ED 0xC88F # HANGUL SYLLABLE CIEUC-WA-KIYEOKSIOS
-0xA0EE 0xC890 # HANGUL SYLLABLE CIEUC-WA-NIEUN
-0xA0EF 0xC891 # HANGUL SYLLABLE CIEUC-WA-NIEUNCIEUC
-0xA0F0 0xC892 # HANGUL SYLLABLE CIEUC-WA-NIEUNHIEUH
-0xA0F1 0xC893 # HANGUL SYLLABLE CIEUC-WA-TIKEUT
-0xA0F2 0xC895 # HANGUL SYLLABLE CIEUC-WA-RIEULKIYEOK
-0xA0F3 0xC896 # HANGUL SYLLABLE CIEUC-WA-RIEULMIEUM
-0xA0F4 0xC897 # HANGUL SYLLABLE CIEUC-WA-RIEULPIEUP
-0xA0F5 0xC898 # HANGUL SYLLABLE CIEUC-WA-RIEULSIOS
-0xA0F6 0xC899 # HANGUL SYLLABLE CIEUC-WA-RIEULTHIEUTH
-0xA0F7 0xC89A # HANGUL SYLLABLE CIEUC-WA-RIEULPHIEUPH
-0xA0F8 0xC89B # HANGUL SYLLABLE CIEUC-WA-RIEULHIEUH
-0xA0F9 0xC89C # HANGUL SYLLABLE CIEUC-WA-MIEUM
-0xA0FA 0xC89E # HANGUL SYLLABLE CIEUC-WA-PIEUPSIOS
-0xA0FB 0xC8A0 # HANGUL SYLLABLE CIEUC-WA-SSANGSIOS
-0xA0FC 0xC8A2 # HANGUL SYLLABLE CIEUC-WA-CIEUC
-0xA0FD 0xC8A3 # HANGUL SYLLABLE CIEUC-WA-CHIEUCH
-0xA0FE 0xC8A4 # HANGUL SYLLABLE CIEUC-WA-KHIEUKH
-0xA141 0xC8A5 # HANGUL SYLLABLE CIEUC-WA-THIEUTH
-0xA142 0xC8A6 # HANGUL SYLLABLE CIEUC-WA-PHIEUPH
-0xA143 0xC8A7 # HANGUL SYLLABLE CIEUC-WA-HIEUH
-0xA144 0xC8A9 # HANGUL SYLLABLE CIEUC-WAE-KIYEOK
-0xA145 0xC8AA # HANGUL SYLLABLE CIEUC-WAE-SSANGKIYEOK
-0xA146 0xC8AB # HANGUL SYLLABLE CIEUC-WAE-KIYEOKSIOS
-0xA147 0xC8AC # HANGUL SYLLABLE CIEUC-WAE-NIEUN
-0xA148 0xC8AD # HANGUL SYLLABLE CIEUC-WAE-NIEUNCIEUC
-0xA149 0xC8AE # HANGUL SYLLABLE CIEUC-WAE-NIEUNHIEUH
-0xA14A 0xC8AF # HANGUL SYLLABLE CIEUC-WAE-TIKEUT
-0xA14B 0xC8B0 # HANGUL SYLLABLE CIEUC-WAE-RIEUL
-0xA14C 0xC8B1 # HANGUL SYLLABLE CIEUC-WAE-RIEULKIYEOK
-0xA14D 0xC8B2 # HANGUL SYLLABLE CIEUC-WAE-RIEULMIEUM
-0xA14E 0xC8B3 # HANGUL SYLLABLE CIEUC-WAE-RIEULPIEUP
-0xA14F 0xC8B4 # HANGUL SYLLABLE CIEUC-WAE-RIEULSIOS
-0xA150 0xC8B5 # HANGUL SYLLABLE CIEUC-WAE-RIEULTHIEUTH
-0xA151 0xC8B6 # HANGUL SYLLABLE CIEUC-WAE-RIEULPHIEUPH
-0xA152 0xC8B7 # HANGUL SYLLABLE CIEUC-WAE-RIEULHIEUH
-0xA153 0xC8B8 # HANGUL SYLLABLE CIEUC-WAE-MIEUM
-0xA154 0xC8B9 # HANGUL SYLLABLE CIEUC-WAE-PIEUP
-0xA155 0xC8BA # HANGUL SYLLABLE CIEUC-WAE-PIEUPSIOS
-0xA156 0xC8BB # HANGUL SYLLABLE CIEUC-WAE-SIOS
-0xA157 0xC8BE # HANGUL SYLLABLE CIEUC-WAE-CIEUC
-0xA158 0xC8BF # HANGUL SYLLABLE CIEUC-WAE-CHIEUCH
-0xA159 0xC8C0 # HANGUL SYLLABLE CIEUC-WAE-KHIEUKH
-0xA15A 0xC8C1 # HANGUL SYLLABLE CIEUC-WAE-THIEUTH
-0xA161 0xC8C2 # HANGUL SYLLABLE CIEUC-WAE-PHIEUPH
-0xA162 0xC8C3 # HANGUL SYLLABLE CIEUC-WAE-HIEUH
-0xA163 0xC8C5 # HANGUL SYLLABLE CIEUC-OE-KIYEOK
-0xA164 0xC8C6 # HANGUL SYLLABLE CIEUC-OE-SSANGKIYEOK
-0xA165 0xC8C7 # HANGUL SYLLABLE CIEUC-OE-KIYEOKSIOS
-0xA166 0xC8C9 # HANGUL SYLLABLE CIEUC-OE-NIEUNCIEUC
-0xA167 0xC8CA # HANGUL SYLLABLE CIEUC-OE-NIEUNHIEUH
-0xA168 0xC8CB # HANGUL SYLLABLE CIEUC-OE-TIKEUT
-0xA169 0xC8CD # HANGUL SYLLABLE CIEUC-OE-RIEULKIYEOK
-0xA16A 0xC8CE # HANGUL SYLLABLE CIEUC-OE-RIEULMIEUM
-0xA16B 0xC8CF # HANGUL SYLLABLE CIEUC-OE-RIEULPIEUP
-0xA16C 0xC8D0 # HANGUL SYLLABLE CIEUC-OE-RIEULSIOS
-0xA16D 0xC8D1 # HANGUL SYLLABLE CIEUC-OE-RIEULTHIEUTH
-0xA16E 0xC8D2 # HANGUL SYLLABLE CIEUC-OE-RIEULPHIEUPH
-0xA16F 0xC8D3 # HANGUL SYLLABLE CIEUC-OE-RIEULHIEUH
-0xA170 0xC8D6 # HANGUL SYLLABLE CIEUC-OE-PIEUPSIOS
-0xA171 0xC8D8 # HANGUL SYLLABLE CIEUC-OE-SSANGSIOS
-0xA172 0xC8DA # HANGUL SYLLABLE CIEUC-OE-CIEUC
-0xA173 0xC8DB # HANGUL SYLLABLE CIEUC-OE-CHIEUCH
-0xA174 0xC8DC # HANGUL SYLLABLE CIEUC-OE-KHIEUKH
-0xA175 0xC8DD # HANGUL SYLLABLE CIEUC-OE-THIEUTH
-0xA176 0xC8DE # HANGUL SYLLABLE CIEUC-OE-PHIEUPH
-0xA177 0xC8DF # HANGUL SYLLABLE CIEUC-OE-HIEUH
-0xA178 0xC8E2 # HANGUL SYLLABLE CIEUC-YO-SSANGKIYEOK
-0xA179 0xC8E3 # HANGUL SYLLABLE CIEUC-YO-KIYEOKSIOS
-0xA17A 0xC8E5 # HANGUL SYLLABLE CIEUC-YO-NIEUNCIEUC
-0xA181 0xC8E6 # HANGUL SYLLABLE CIEUC-YO-NIEUNHIEUH
-0xA182 0xC8E7 # HANGUL SYLLABLE CIEUC-YO-TIKEUT
-0xA183 0xC8E8 # HANGUL SYLLABLE CIEUC-YO-RIEUL
-0xA184 0xC8E9 # HANGUL SYLLABLE CIEUC-YO-RIEULKIYEOK
-0xA185 0xC8EA # HANGUL SYLLABLE CIEUC-YO-RIEULMIEUM
-0xA186 0xC8EB # HANGUL SYLLABLE CIEUC-YO-RIEULPIEUP
-0xA187 0xC8EC # HANGUL SYLLABLE CIEUC-YO-RIEULSIOS
-0xA188 0xC8ED # HANGUL SYLLABLE CIEUC-YO-RIEULTHIEUTH
-0xA189 0xC8EE # HANGUL SYLLABLE CIEUC-YO-RIEULPHIEUPH
-0xA18A 0xC8EF # HANGUL SYLLABLE CIEUC-YO-RIEULHIEUH
-0xA18B 0xC8F0 # HANGUL SYLLABLE CIEUC-YO-MIEUM
-0xA18C 0xC8F1 # HANGUL SYLLABLE CIEUC-YO-PIEUP
-0xA18D 0xC8F2 # HANGUL SYLLABLE CIEUC-YO-PIEUPSIOS
-0xA18E 0xC8F3 # HANGUL SYLLABLE CIEUC-YO-SIOS
-0xA18F 0xC8F4 # HANGUL SYLLABLE CIEUC-YO-SSANGSIOS
-0xA190 0xC8F6 # HANGUL SYLLABLE CIEUC-YO-CIEUC
-0xA191 0xC8F7 # HANGUL SYLLABLE CIEUC-YO-CHIEUCH
-0xA192 0xC8F8 # HANGUL SYLLABLE CIEUC-YO-KHIEUKH
-0xA193 0xC8F9 # HANGUL SYLLABLE CIEUC-YO-THIEUTH
-0xA194 0xC8FA # HANGUL SYLLABLE CIEUC-YO-PHIEUPH
-0xA195 0xC8FB # HANGUL SYLLABLE CIEUC-YO-HIEUH
-0xA196 0xC8FE # HANGUL SYLLABLE CIEUC-U-SSANGKIYEOK
-0xA197 0xC8FF # HANGUL SYLLABLE CIEUC-U-KIYEOKSIOS
-0xA198 0xC901 # HANGUL SYLLABLE CIEUC-U-NIEUNCIEUC
-0xA199 0xC902 # HANGUL SYLLABLE CIEUC-U-NIEUNHIEUH
-0xA19A 0xC903 # HANGUL SYLLABLE CIEUC-U-TIKEUT
-0xA19B 0xC907 # HANGUL SYLLABLE CIEUC-U-RIEULPIEUP
-0xA19C 0xC908 # HANGUL SYLLABLE CIEUC-U-RIEULSIOS
-0xA19D 0xC909 # HANGUL SYLLABLE CIEUC-U-RIEULTHIEUTH
-0xA19E 0xC90A # HANGUL SYLLABLE CIEUC-U-RIEULPHIEUPH
-0xA19F 0xC90B # HANGUL SYLLABLE CIEUC-U-RIEULHIEUH
-0xA1A0 0xC90E # HANGUL SYLLABLE CIEUC-U-PIEUPSIOS
-0xA1A1 0x3000 # IDEOGRAPHIC SPACE
-0xA1A2 0x3001 # IDEOGRAPHIC COMMA
-0xA1A3 0x3002 # IDEOGRAPHIC FULL STOP
-0xA1A4 0x00B7 # MIDDLE DOT
-0xA1A5 0x2025 # TWO DOT LEADER
-0xA1A6 0x2026 # HORIZONTAL ELLIPSIS
-0xA1A7 0x00A8 # DIAERESIS
-0xA1A8 0x3003 # DITTO MARK
-0xA1A9 0x00AD # SOFT HYPHEN
-0xA1AA 0x2015 # HORIZONTAL BAR
-0xA1AB 0x2225 # PARALLEL TO
-0xA1AC 0xFF3C # FULLWIDTH REVERSE SOLIDUS
-0xA1AD 0x223C # TILDE OPERATOR
-0xA1AE 0x2018 # LEFT SINGLE QUOTATION MARK
-0xA1AF 0x2019 # RIGHT SINGLE QUOTATION MARK
-0xA1B0 0x201C # LEFT DOUBLE QUOTATION MARK
-0xA1B1 0x201D # RIGHT DOUBLE QUOTATION MARK
-0xA1B2 0x3014 # LEFT TORTOISE SHELL BRACKET
-0xA1B3 0x3015 # RIGHT TORTOISE SHELL BRACKET
-0xA1B4 0x3008 # LEFT ANGLE BRACKET
-0xA1B5 0x3009 # RIGHT ANGLE BRACKET
-0xA1B6 0x300A # LEFT DOUBLE ANGLE BRACKET
-0xA1B7 0x300B # RIGHT DOUBLE ANGLE BRACKET
-0xA1B8 0x300C # LEFT CORNER BRACKET
-0xA1B9 0x300D # RIGHT CORNER BRACKET
-0xA1BA 0x300E # LEFT WHITE CORNER BRACKET
-0xA1BB 0x300F # RIGHT WHITE CORNER BRACKET
-0xA1BC 0x3010 # LEFT BLACK LENTICULAR BRACKET
-0xA1BD 0x3011 # RIGHT BLACK LENTICULAR BRACKET
-0xA1BE 0x00B1 # PLUS-MINUS SIGN
-0xA1BF 0x00D7 # MULTIPLICATION SIGN
-0xA1C0 0x00F7 # DIVISION SIGN
-0xA1C1 0x2260 # NOT EQUAL TO
-0xA1C2 0x2264 # LESS-THAN OR EQUAL TO
-0xA1C3 0x2265 # GREATER-THAN OR EQUAL TO
-0xA1C4 0x221E # INFINITY
-0xA1C5 0x2234 # THEREFORE
-0xA1C6 0x00B0 # DEGREE SIGN
-0xA1C7 0x2032 # PRIME
-0xA1C8 0x2033 # DOUBLE PRIME
-0xA1C9 0x2103 # DEGREE CELSIUS
-0xA1CA 0x212B # ANGSTROM SIGN
-0xA1CB 0xFFE0 # FULLWIDTH CENT SIGN
-0xA1CC 0xFFE1 # FULLWIDTH POUND SIGN
-0xA1CD 0xFFE5 # FULLWIDTH YEN SIGN
-0xA1CE 0x2642 # MALE SIGN
-0xA1CF 0x2640 # FEMALE SIGN
-0xA1D0 0x2220 # ANGLE
-0xA1D1 0x22A5 # UP TACK
-0xA1D2 0x2312 # ARC
-0xA1D3 0x2202 # PARTIAL DIFFERENTIAL
-0xA1D4 0x2207 # NABLA
-0xA1D5 0x2261 # IDENTICAL TO
-0xA1D6 0x2252 # APPROXIMATELY EQUAL TO OR THE IMAGE OF
-0xA1D7 0x00A7 # SECTION SIGN
-0xA1D8 0x203B # REFERENCE MARK
-0xA1D9 0x2606 # WHITE STAR
-0xA1DA 0x2605 # BLACK STAR
-0xA1DB 0x25CB # WHITE CIRCLE
-0xA1DC 0x25CF # BLACK CIRCLE
-0xA1DD 0x25CE # BULLSEYE
-0xA1DE 0x25C7 # WHITE DIAMOND
-0xA1DF 0x25C6 # BLACK DIAMOND
-0xA1E0 0x25A1 # WHITE SQUARE
-0xA1E1 0x25A0 # BLACK SQUARE
-0xA1E2 0x25B3 # WHITE UP-POINTING TRIANGLE
-0xA1E3 0x25B2 # BLACK UP-POINTING TRIANGLE
-0xA1E4 0x25BD # WHITE DOWN-POINTING TRIANGLE
-0xA1E5 0x25BC # BLACK DOWN-POINTING TRIANGLE
-0xA1E6 0x2192 # RIGHTWARDS ARROW
-0xA1E7 0x2190 # LEFTWARDS ARROW
-0xA1E8 0x2191 # UPWARDS ARROW
-0xA1E9 0x2193 # DOWNWARDS ARROW
-0xA1EA 0x2194 # LEFT RIGHT ARROW
-0xA1EB 0x3013 # GETA MARK
-0xA1EC 0x226A # MUCH LESS-THAN
-0xA1ED 0x226B # MUCH GREATER-THAN
-0xA1EE 0x221A # SQUARE ROOT
-0xA1EF 0x223D # REVERSED TILDE
-0xA1F0 0x221D # PROPORTIONAL TO
-0xA1F1 0x2235 # BECAUSE
-0xA1F2 0x222B # INTEGRAL
-0xA1F3 0x222C # DOUBLE INTEGRAL
-0xA1F4 0x2208 # ELEMENT OF
-0xA1F5 0x220B # CONTAINS AS MEMBER
-0xA1F6 0x2286 # SUBSET OF OR EQUAL TO
-0xA1F7 0x2287 # SUPERSET OF OR EQUAL TO
-0xA1F8 0x2282 # SUBSET OF
-0xA1F9 0x2283 # SUPERSET OF
-0xA1FA 0x222A # UNION
-0xA1FB 0x2229 # INTERSECTION
-0xA1FC 0x2227 # LOGICAL AND
-0xA1FD 0x2228 # LOGICAL OR
-0xA1FE 0xFFE2 # FULLWIDTH NOT SIGN
-0xA241 0xC910 # HANGUL SYLLABLE CIEUC-U-SSANGSIOS
-0xA242 0xC912 # HANGUL SYLLABLE CIEUC-U-CIEUC
-0xA243 0xC913 # HANGUL SYLLABLE CIEUC-U-CHIEUCH
-0xA244 0xC914 # HANGUL SYLLABLE CIEUC-U-KHIEUKH
-0xA245 0xC915 # HANGUL SYLLABLE CIEUC-U-THIEUTH
-0xA246 0xC916 # HANGUL SYLLABLE CIEUC-U-PHIEUPH
-0xA247 0xC917 # HANGUL SYLLABLE CIEUC-U-HIEUH
-0xA248 0xC919 # HANGUL SYLLABLE CIEUC-WEO-KIYEOK
-0xA249 0xC91A # HANGUL SYLLABLE CIEUC-WEO-SSANGKIYEOK
-0xA24A 0xC91B # HANGUL SYLLABLE CIEUC-WEO-KIYEOKSIOS
-0xA24B 0xC91C # HANGUL SYLLABLE CIEUC-WEO-NIEUN
-0xA24C 0xC91D # HANGUL SYLLABLE CIEUC-WEO-NIEUNCIEUC
-0xA24D 0xC91E # HANGUL SYLLABLE CIEUC-WEO-NIEUNHIEUH
-0xA24E 0xC91F # HANGUL SYLLABLE CIEUC-WEO-TIKEUT
-0xA24F 0xC920 # HANGUL SYLLABLE CIEUC-WEO-RIEUL
-0xA250 0xC921 # HANGUL SYLLABLE CIEUC-WEO-RIEULKIYEOK
-0xA251 0xC922 # HANGUL SYLLABLE CIEUC-WEO-RIEULMIEUM
-0xA252 0xC923 # HANGUL SYLLABLE CIEUC-WEO-RIEULPIEUP
-0xA253 0xC924 # HANGUL SYLLABLE CIEUC-WEO-RIEULSIOS
-0xA254 0xC925 # HANGUL SYLLABLE CIEUC-WEO-RIEULTHIEUTH
-0xA255 0xC926 # HANGUL SYLLABLE CIEUC-WEO-RIEULPHIEUPH
-0xA256 0xC927 # HANGUL SYLLABLE CIEUC-WEO-RIEULHIEUH
-0xA257 0xC928 # HANGUL SYLLABLE CIEUC-WEO-MIEUM
-0xA258 0xC929 # HANGUL SYLLABLE CIEUC-WEO-PIEUP
-0xA259 0xC92A # HANGUL SYLLABLE CIEUC-WEO-PIEUPSIOS
-0xA25A 0xC92B # HANGUL SYLLABLE CIEUC-WEO-SIOS
-0xA261 0xC92D # HANGUL SYLLABLE CIEUC-WEO-IEUNG
-0xA262 0xC92E # HANGUL SYLLABLE CIEUC-WEO-CIEUC
-0xA263 0xC92F # HANGUL SYLLABLE CIEUC-WEO-CHIEUCH
-0xA264 0xC930 # HANGUL SYLLABLE CIEUC-WEO-KHIEUKH
-0xA265 0xC931 # HANGUL SYLLABLE CIEUC-WEO-THIEUTH
-0xA266 0xC932 # HANGUL SYLLABLE CIEUC-WEO-PHIEUPH
-0xA267 0xC933 # HANGUL SYLLABLE CIEUC-WEO-HIEUH
-0xA268 0xC935 # HANGUL SYLLABLE CIEUC-WE-KIYEOK
-0xA269 0xC936 # HANGUL SYLLABLE CIEUC-WE-SSANGKIYEOK
-0xA26A 0xC937 # HANGUL SYLLABLE CIEUC-WE-KIYEOKSIOS
-0xA26B 0xC938 # HANGUL SYLLABLE CIEUC-WE-NIEUN
-0xA26C 0xC939 # HANGUL SYLLABLE CIEUC-WE-NIEUNCIEUC
-0xA26D 0xC93A # HANGUL SYLLABLE CIEUC-WE-NIEUNHIEUH
-0xA26E 0xC93B # HANGUL SYLLABLE CIEUC-WE-TIKEUT
-0xA26F 0xC93C # HANGUL SYLLABLE CIEUC-WE-RIEUL
-0xA270 0xC93D # HANGUL SYLLABLE CIEUC-WE-RIEULKIYEOK
-0xA271 0xC93E # HANGUL SYLLABLE CIEUC-WE-RIEULMIEUM
-0xA272 0xC93F # HANGUL SYLLABLE CIEUC-WE-RIEULPIEUP
-0xA273 0xC940 # HANGUL SYLLABLE CIEUC-WE-RIEULSIOS
-0xA274 0xC941 # HANGUL SYLLABLE CIEUC-WE-RIEULTHIEUTH
-0xA275 0xC942 # HANGUL SYLLABLE CIEUC-WE-RIEULPHIEUPH
-0xA276 0xC943 # HANGUL SYLLABLE CIEUC-WE-RIEULHIEUH
-0xA277 0xC944 # HANGUL SYLLABLE CIEUC-WE-MIEUM
-0xA278 0xC945 # HANGUL SYLLABLE CIEUC-WE-PIEUP
-0xA279 0xC946 # HANGUL SYLLABLE CIEUC-WE-PIEUPSIOS
-0xA27A 0xC947 # HANGUL SYLLABLE CIEUC-WE-SIOS
-0xA281 0xC948 # HANGUL SYLLABLE CIEUC-WE-SSANGSIOS
-0xA282 0xC949 # HANGUL SYLLABLE CIEUC-WE-IEUNG
-0xA283 0xC94A # HANGUL SYLLABLE CIEUC-WE-CIEUC
-0xA284 0xC94B # HANGUL SYLLABLE CIEUC-WE-CHIEUCH
-0xA285 0xC94C # HANGUL SYLLABLE CIEUC-WE-KHIEUKH
-0xA286 0xC94D # HANGUL SYLLABLE CIEUC-WE-THIEUTH
-0xA287 0xC94E # HANGUL SYLLABLE CIEUC-WE-PHIEUPH
-0xA288 0xC94F # HANGUL SYLLABLE CIEUC-WE-HIEUH
-0xA289 0xC952 # HANGUL SYLLABLE CIEUC-WI-SSANGKIYEOK
-0xA28A 0xC953 # HANGUL SYLLABLE CIEUC-WI-KIYEOKSIOS
-0xA28B 0xC955 # HANGUL SYLLABLE CIEUC-WI-NIEUNCIEUC
-0xA28C 0xC956 # HANGUL SYLLABLE CIEUC-WI-NIEUNHIEUH
-0xA28D 0xC957 # HANGUL SYLLABLE CIEUC-WI-TIKEUT
-0xA28E 0xC959 # HANGUL SYLLABLE CIEUC-WI-RIEULKIYEOK
-0xA28F 0xC95A # HANGUL SYLLABLE CIEUC-WI-RIEULMIEUM
-0xA290 0xC95B # HANGUL SYLLABLE CIEUC-WI-RIEULPIEUP
-0xA291 0xC95C # HANGUL SYLLABLE CIEUC-WI-RIEULSIOS
-0xA292 0xC95D # HANGUL SYLLABLE CIEUC-WI-RIEULTHIEUTH
-0xA293 0xC95E # HANGUL SYLLABLE CIEUC-WI-RIEULPHIEUPH
-0xA294 0xC95F # HANGUL SYLLABLE CIEUC-WI-RIEULHIEUH
-0xA295 0xC962 # HANGUL SYLLABLE CIEUC-WI-PIEUPSIOS
-0xA296 0xC964 # HANGUL SYLLABLE CIEUC-WI-SSANGSIOS
-0xA297 0xC965 # HANGUL SYLLABLE CIEUC-WI-IEUNG
-0xA298 0xC966 # HANGUL SYLLABLE CIEUC-WI-CIEUC
-0xA299 0xC967 # HANGUL SYLLABLE CIEUC-WI-CHIEUCH
-0xA29A 0xC968 # HANGUL SYLLABLE CIEUC-WI-KHIEUKH
-0xA29B 0xC969 # HANGUL SYLLABLE CIEUC-WI-THIEUTH
-0xA29C 0xC96A # HANGUL SYLLABLE CIEUC-WI-PHIEUPH
-0xA29D 0xC96B # HANGUL SYLLABLE CIEUC-WI-HIEUH
-0xA29E 0xC96D # HANGUL SYLLABLE CIEUC-YU-KIYEOK
-0xA29F 0xC96E # HANGUL SYLLABLE CIEUC-YU-SSANGKIYEOK
-0xA2A0 0xC96F # HANGUL SYLLABLE CIEUC-YU-KIYEOKSIOS
-0xA2A1 0x21D2 # RIGHTWARDS DOUBLE ARROW
-0xA2A2 0x21D4 # LEFT RIGHT DOUBLE ARROW
-0xA2A3 0x2200 # FOR ALL
-0xA2A4 0x2203 # THERE EXISTS
-0xA2A5 0x00B4 # ACUTE ACCENT
-0xA2A6 0xFF5E # FULLWIDTH TILDE
-0xA2A7 0x02C7 # CARON
-0xA2A8 0x02D8 # BREVE
-0xA2A9 0x02DD # DOUBLE ACUTE ACCENT
-0xA2AA 0x02DA # RING ABOVE
-0xA2AB 0x02D9 # DOT ABOVE
-0xA2AC 0x00B8 # CEDILLA
-0xA2AD 0x02DB # OGONEK
-0xA2AE 0x00A1 # INVERTED EXCLAMATION MARK
-0xA2AF 0x00BF # INVERTED QUESTION MARK
-0xA2B0 0x02D0 # MODIFIER LETTER TRIANGULAR COLON
-0xA2B1 0x222E # CONTOUR INTEGRAL
-0xA2B2 0x2211 # N-ARY SUMMATION
-0xA2B3 0x220F # N-ARY PRODUCT
-0xA2B4 0x00A4 # CURRENCY SIGN
-0xA2B5 0x2109 # DEGREE FAHRENHEIT
-0xA2B6 0x2030 # PER MILLE SIGN
-0xA2B7 0x25C1 # WHITE LEFT-POINTING TRIANGLE
-0xA2B8 0x25C0 # BLACK LEFT-POINTING TRIANGLE
-0xA2B9 0x25B7 # WHITE RIGHT-POINTING TRIANGLE
-0xA2BA 0x25B6 # BLACK RIGHT-POINTING TRIANGLE
-0xA2BB 0x2664 # WHITE SPADE SUIT
-0xA2BC 0x2660 # BLACK SPADE SUIT
-0xA2BD 0x2661 # WHITE HEART SUIT
-0xA2BE 0x2665 # BLACK HEART SUIT
-0xA2BF 0x2667 # WHITE CLUB SUIT
-0xA2C0 0x2663 # BLACK CLUB SUIT
-0xA2C1 0x2299 # CIRCLED DOT OPERATOR
-0xA2C2 0x25C8 # WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND
-0xA2C3 0x25A3 # WHITE SQUARE CONTAINING BLACK SMALL SQUARE
-0xA2C4 0x25D0 # CIRCLE WITH LEFT HALF BLACK
-0xA2C5 0x25D1 # CIRCLE WITH RIGHT HALF BLACK
-0xA2C6 0x2592 # MEDIUM SHADE
-0xA2C7 0x25A4 # SQUARE WITH HORIZONTAL FILL
-0xA2C8 0x25A5 # SQUARE WITH VERTICAL FILL
-0xA2C9 0x25A8 # SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL
-0xA2CA 0x25A7 # SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL
-0xA2CB 0x25A6 # SQUARE WITH ORTHOGONAL CROSSHATCH FILL
-0xA2CC 0x25A9 # SQUARE WITH DIAGONAL CROSSHATCH FILL
-0xA2CD 0x2668 # HOT SPRINGS
-0xA2CE 0x260F # WHITE TELEPHONE
-0xA2CF 0x260E # BLACK TELEPHONE
-0xA2D0 0x261C # WHITE LEFT POINTING INDEX
-0xA2D1 0x261E # WHITE RIGHT POINTING INDEX
-0xA2D2 0x00B6 # PILCROW SIGN
-0xA2D3 0x2020 # DAGGER
-0xA2D4 0x2021 # DOUBLE DAGGER
-0xA2D5 0x2195 # UP DOWN ARROW
-0xA2D6 0x2197 # NORTH EAST ARROW
-0xA2D7 0x2199 # SOUTH WEST ARROW
-0xA2D8 0x2196 # NORTH WEST ARROW
-0xA2D9 0x2198 # SOUTH EAST ARROW
-0xA2DA 0x266D # MUSIC FLAT SIGN
-0xA2DB 0x2669 # QUARTER NOTE
-0xA2DC 0x266A # EIGHTH NOTE
-0xA2DD 0x266C # BEAMED SIXTEENTH NOTES
-0xA2DE 0x327F # KOREAN STANDARD SYMBOL
-0xA2DF 0x321C # PARENTHESIZED HANGUL CIEUC U
-0xA2E0 0x2116 # NUMERO SIGN
-0xA2E1 0x33C7 # SQUARE CO
-0xA2E2 0x2122 # TRADE MARK SIGN
-0xA2E3 0x33C2 # SQUARE AM
-0xA2E4 0x33D8 # SQUARE PM
-0xA2E5 0x2121 # TELEPHONE SIGN
-0xA341 0xC971 # HANGUL SYLLABLE CIEUC-YU-NIEUNCIEUC
-0xA342 0xC972 # HANGUL SYLLABLE CIEUC-YU-NIEUNHIEUH
-0xA343 0xC973 # HANGUL SYLLABLE CIEUC-YU-TIKEUT
-0xA344 0xC975 # HANGUL SYLLABLE CIEUC-YU-RIEULKIYEOK
-0xA345 0xC976 # HANGUL SYLLABLE CIEUC-YU-RIEULMIEUM
-0xA346 0xC977 # HANGUL SYLLABLE CIEUC-YU-RIEULPIEUP
-0xA347 0xC978 # HANGUL SYLLABLE CIEUC-YU-RIEULSIOS
-0xA348 0xC979 # HANGUL SYLLABLE CIEUC-YU-RIEULTHIEUTH
-0xA349 0xC97A # HANGUL SYLLABLE CIEUC-YU-RIEULPHIEUPH
-0xA34A 0xC97B # HANGUL SYLLABLE CIEUC-YU-RIEULHIEUH
-0xA34B 0xC97D # HANGUL SYLLABLE CIEUC-YU-PIEUP
-0xA34C 0xC97E # HANGUL SYLLABLE CIEUC-YU-PIEUPSIOS
-0xA34D 0xC97F # HANGUL SYLLABLE CIEUC-YU-SIOS
-0xA34E 0xC980 # HANGUL SYLLABLE CIEUC-YU-SSANGSIOS
-0xA34F 0xC981 # HANGUL SYLLABLE CIEUC-YU-IEUNG
-0xA350 0xC982 # HANGUL SYLLABLE CIEUC-YU-CIEUC
-0xA351 0xC983 # HANGUL SYLLABLE CIEUC-YU-CHIEUCH
-0xA352 0xC984 # HANGUL SYLLABLE CIEUC-YU-KHIEUKH
-0xA353 0xC985 # HANGUL SYLLABLE CIEUC-YU-THIEUTH
-0xA354 0xC986 # HANGUL SYLLABLE CIEUC-YU-PHIEUPH
-0xA355 0xC987 # HANGUL SYLLABLE CIEUC-YU-HIEUH
-0xA356 0xC98A # HANGUL SYLLABLE CIEUC-EU-SSANGKIYEOK
-0xA357 0xC98B # HANGUL SYLLABLE CIEUC-EU-KIYEOKSIOS
-0xA358 0xC98D # HANGUL SYLLABLE CIEUC-EU-NIEUNCIEUC
-0xA359 0xC98E # HANGUL SYLLABLE CIEUC-EU-NIEUNHIEUH
-0xA35A 0xC98F # HANGUL SYLLABLE CIEUC-EU-TIKEUT
-0xA361 0xC991 # HANGUL SYLLABLE CIEUC-EU-RIEULKIYEOK
-0xA362 0xC992 # HANGUL SYLLABLE CIEUC-EU-RIEULMIEUM
-0xA363 0xC993 # HANGUL SYLLABLE CIEUC-EU-RIEULPIEUP
-0xA364 0xC994 # HANGUL SYLLABLE CIEUC-EU-RIEULSIOS
-0xA365 0xC995 # HANGUL SYLLABLE CIEUC-EU-RIEULTHIEUTH
-0xA366 0xC996 # HANGUL SYLLABLE CIEUC-EU-RIEULPHIEUPH
-0xA367 0xC997 # HANGUL SYLLABLE CIEUC-EU-RIEULHIEUH
-0xA368 0xC99A # HANGUL SYLLABLE CIEUC-EU-PIEUPSIOS
-0xA369 0xC99C # HANGUL SYLLABLE CIEUC-EU-SSANGSIOS
-0xA36A 0xC99E # HANGUL SYLLABLE CIEUC-EU-CIEUC
-0xA36B 0xC99F # HANGUL SYLLABLE CIEUC-EU-CHIEUCH
-0xA36C 0xC9A0 # HANGUL SYLLABLE CIEUC-EU-KHIEUKH
-0xA36D 0xC9A1 # HANGUL SYLLABLE CIEUC-EU-THIEUTH
-0xA36E 0xC9A2 # HANGUL SYLLABLE CIEUC-EU-PHIEUPH
-0xA36F 0xC9A3 # HANGUL SYLLABLE CIEUC-EU-HIEUH
-0xA370 0xC9A4 # HANGUL SYLLABLE CIEUC-YI
-0xA371 0xC9A5 # HANGUL SYLLABLE CIEUC-YI-KIYEOK
-0xA372 0xC9A6 # HANGUL SYLLABLE CIEUC-YI-SSANGKIYEOK
-0xA373 0xC9A7 # HANGUL SYLLABLE CIEUC-YI-KIYEOKSIOS
-0xA374 0xC9A8 # HANGUL SYLLABLE CIEUC-YI-NIEUN
-0xA375 0xC9A9 # HANGUL SYLLABLE CIEUC-YI-NIEUNCIEUC
-0xA376 0xC9AA # HANGUL SYLLABLE CIEUC-YI-NIEUNHIEUH
-0xA377 0xC9AB # HANGUL SYLLABLE CIEUC-YI-TIKEUT
-0xA378 0xC9AC # HANGUL SYLLABLE CIEUC-YI-RIEUL
-0xA379 0xC9AD # HANGUL SYLLABLE CIEUC-YI-RIEULKIYEOK
-0xA37A 0xC9AE # HANGUL SYLLABLE CIEUC-YI-RIEULMIEUM
-0xA381 0xC9AF # HANGUL SYLLABLE CIEUC-YI-RIEULPIEUP
-0xA382 0xC9B0 # HANGUL SYLLABLE CIEUC-YI-RIEULSIOS
-0xA383 0xC9B1 # HANGUL SYLLABLE CIEUC-YI-RIEULTHIEUTH
-0xA384 0xC9B2 # HANGUL SYLLABLE CIEUC-YI-RIEULPHIEUPH
-0xA385 0xC9B3 # HANGUL SYLLABLE CIEUC-YI-RIEULHIEUH
-0xA386 0xC9B4 # HANGUL SYLLABLE CIEUC-YI-MIEUM
-0xA387 0xC9B5 # HANGUL SYLLABLE CIEUC-YI-PIEUP
-0xA388 0xC9B6 # HANGUL SYLLABLE CIEUC-YI-PIEUPSIOS
-0xA389 0xC9B7 # HANGUL SYLLABLE CIEUC-YI-SIOS
-0xA38A 0xC9B8 # HANGUL SYLLABLE CIEUC-YI-SSANGSIOS
-0xA38B 0xC9B9 # HANGUL SYLLABLE CIEUC-YI-IEUNG
-0xA38C 0xC9BA # HANGUL SYLLABLE CIEUC-YI-CIEUC
-0xA38D 0xC9BB # HANGUL SYLLABLE CIEUC-YI-CHIEUCH
-0xA38E 0xC9BC # HANGUL SYLLABLE CIEUC-YI-KHIEUKH
-0xA38F 0xC9BD # HANGUL SYLLABLE CIEUC-YI-THIEUTH
-0xA390 0xC9BE # HANGUL SYLLABLE CIEUC-YI-PHIEUPH
-0xA391 0xC9BF # HANGUL SYLLABLE CIEUC-YI-HIEUH
-0xA392 0xC9C2 # HANGUL SYLLABLE CIEUC-I-SSANGKIYEOK
-0xA393 0xC9C3 # HANGUL SYLLABLE CIEUC-I-KIYEOKSIOS
-0xA394 0xC9C5 # HANGUL SYLLABLE CIEUC-I-NIEUNCIEUC
-0xA395 0xC9C6 # HANGUL SYLLABLE CIEUC-I-NIEUNHIEUH
-0xA396 0xC9C9 # HANGUL SYLLABLE CIEUC-I-RIEULKIYEOK
-0xA397 0xC9CB # HANGUL SYLLABLE CIEUC-I-RIEULPIEUP
-0xA398 0xC9CC # HANGUL SYLLABLE CIEUC-I-RIEULSIOS
-0xA399 0xC9CD # HANGUL SYLLABLE CIEUC-I-RIEULTHIEUTH
-0xA39A 0xC9CE # HANGUL SYLLABLE CIEUC-I-RIEULPHIEUPH
-0xA39B 0xC9CF # HANGUL SYLLABLE CIEUC-I-RIEULHIEUH
-0xA39C 0xC9D2 # HANGUL SYLLABLE CIEUC-I-PIEUPSIOS
-0xA39D 0xC9D4 # HANGUL SYLLABLE CIEUC-I-SSANGSIOS
-0xA39E 0xC9D7 # HANGUL SYLLABLE CIEUC-I-CHIEUCH
-0xA39F 0xC9D8 # HANGUL SYLLABLE CIEUC-I-KHIEUKH
-0xA3A0 0xC9DB # HANGUL SYLLABLE CIEUC-I-HIEUH
-0xA3A1 0xFF01 # FULLWIDTH EXCLAMATION MARK
-0xA3A2 0xFF02 # FULLWIDTH QUOTATION MARK
-0xA3A3 0xFF03 # FULLWIDTH NUMBER SIGN
-0xA3A4 0xFF04 # FULLWIDTH DOLLAR SIGN
-0xA3A5 0xFF05 # FULLWIDTH PERCENT SIGN
-0xA3A6 0xFF06 # FULLWIDTH AMPERSAND
-0xA3A7 0xFF07 # FULLWIDTH APOSTROPHE
-0xA3A8 0xFF08 # FULLWIDTH LEFT PARENTHESIS
-0xA3A9 0xFF09 # FULLWIDTH RIGHT PARENTHESIS
-0xA3AA 0xFF0A # FULLWIDTH ASTERISK
-0xA3AB 0xFF0B # FULLWIDTH PLUS SIGN
-0xA3AC 0xFF0C # FULLWIDTH COMMA
-0xA3AD 0xFF0D # FULLWIDTH HYPHEN-MINUS
-0xA3AE 0xFF0E # FULLWIDTH FULL STOP
-0xA3AF 0xFF0F # FULLWIDTH SOLIDUS
-0xA3B0 0xFF10 # FULLWIDTH DIGIT ZERO
-0xA3B1 0xFF11 # FULLWIDTH DIGIT ONE
-0xA3B2 0xFF12 # FULLWIDTH DIGIT TWO
-0xA3B3 0xFF13 # FULLWIDTH DIGIT THREE
-0xA3B4 0xFF14 # FULLWIDTH DIGIT FOUR
-0xA3B5 0xFF15 # FULLWIDTH DIGIT FIVE
-0xA3B6 0xFF16 # FULLWIDTH DIGIT SIX
-0xA3B7 0xFF17 # FULLWIDTH DIGIT SEVEN
-0xA3B8 0xFF18 # FULLWIDTH DIGIT EIGHT
-0xA3B9 0xFF19 # FULLWIDTH DIGIT NINE
-0xA3BA 0xFF1A # FULLWIDTH COLON
-0xA3BB 0xFF1B # FULLWIDTH SEMICOLON
-0xA3BC 0xFF1C # FULLWIDTH LESS-THAN SIGN
-0xA3BD 0xFF1D # FULLWIDTH EQUALS SIGN
-0xA3BE 0xFF1E # FULLWIDTH GREATER-THAN SIGN
-0xA3BF 0xFF1F # FULLWIDTH QUESTION MARK
-0xA3C0 0xFF20 # FULLWIDTH COMMERCIAL AT
-0xA3C1 0xFF21 # FULLWIDTH LATIN CAPITAL LETTER A
-0xA3C2 0xFF22 # FULLWIDTH LATIN CAPITAL LETTER B
-0xA3C3 0xFF23 # FULLWIDTH LATIN CAPITAL LETTER C
-0xA3C4 0xFF24 # FULLWIDTH LATIN CAPITAL LETTER D
-0xA3C5 0xFF25 # FULLWIDTH LATIN CAPITAL LETTER E
-0xA3C6 0xFF26 # FULLWIDTH LATIN CAPITAL LETTER F
-0xA3C7 0xFF27 # FULLWIDTH LATIN CAPITAL LETTER G
-0xA3C8 0xFF28 # FULLWIDTH LATIN CAPITAL LETTER H
-0xA3C9 0xFF29 # FULLWIDTH LATIN CAPITAL LETTER I
-0xA3CA 0xFF2A # FULLWIDTH LATIN CAPITAL LETTER J
-0xA3CB 0xFF2B # FULLWIDTH LATIN CAPITAL LETTER K
-0xA3CC 0xFF2C # FULLWIDTH LATIN CAPITAL LETTER L
-0xA3CD 0xFF2D # FULLWIDTH LATIN CAPITAL LETTER M
-0xA3CE 0xFF2E # FULLWIDTH LATIN CAPITAL LETTER N
-0xA3CF 0xFF2F # FULLWIDTH LATIN CAPITAL LETTER O
-0xA3D0 0xFF30 # FULLWIDTH LATIN CAPITAL LETTER P
-0xA3D1 0xFF31 # FULLWIDTH LATIN CAPITAL LETTER Q
-0xA3D2 0xFF32 # FULLWIDTH LATIN CAPITAL LETTER R
-0xA3D3 0xFF33 # FULLWIDTH LATIN CAPITAL LETTER S
-0xA3D4 0xFF34 # FULLWIDTH LATIN CAPITAL LETTER T
-0xA3D5 0xFF35 # FULLWIDTH LATIN CAPITAL LETTER U
-0xA3D6 0xFF36 # FULLWIDTH LATIN CAPITAL LETTER V
-0xA3D7 0xFF37 # FULLWIDTH LATIN CAPITAL LETTER W
-0xA3D8 0xFF38 # FULLWIDTH LATIN CAPITAL LETTER X
-0xA3D9 0xFF39 # FULLWIDTH LATIN CAPITAL LETTER Y
-0xA3DA 0xFF3A # FULLWIDTH LATIN CAPITAL LETTER Z
-0xA3DB 0xFF3B # FULLWIDTH LEFT SQUARE BRACKET
-0xA3DC 0xFFE6 # FULLWIDTH WON SIGN
-0xA3DD 0xFF3D # FULLWIDTH RIGHT SQUARE BRACKET
-0xA3DE 0xFF3E # FULLWIDTH CIRCUMFLEX ACCENT
-0xA3DF 0xFF3F # FULLWIDTH LOW LINE
-0xA3E0 0xFF40 # FULLWIDTH GRAVE ACCENT
-0xA3E1 0xFF41 # FULLWIDTH LATIN SMALL LETTER A
-0xA3E2 0xFF42 # FULLWIDTH LATIN SMALL LETTER B
-0xA3E3 0xFF43 # FULLWIDTH LATIN SMALL LETTER C
-0xA3E4 0xFF44 # FULLWIDTH LATIN SMALL LETTER D
-0xA3E5 0xFF45 # FULLWIDTH LATIN SMALL LETTER E
-0xA3E6 0xFF46 # FULLWIDTH LATIN SMALL LETTER F
-0xA3E7 0xFF47 # FULLWIDTH LATIN SMALL LETTER G
-0xA3E8 0xFF48 # FULLWIDTH LATIN SMALL LETTER H
-0xA3E9 0xFF49 # FULLWIDTH LATIN SMALL LETTER I
-0xA3EA 0xFF4A # FULLWIDTH LATIN SMALL LETTER J
-0xA3EB 0xFF4B # FULLWIDTH LATIN SMALL LETTER K
-0xA3EC 0xFF4C # FULLWIDTH LATIN SMALL LETTER L
-0xA3ED 0xFF4D # FULLWIDTH LATIN SMALL LETTER M
-0xA3EE 0xFF4E # FULLWIDTH LATIN SMALL LETTER N
-0xA3EF 0xFF4F # FULLWIDTH LATIN SMALL LETTER O
-0xA3F0 0xFF50 # FULLWIDTH LATIN SMALL LETTER P
-0xA3F1 0xFF51 # FULLWIDTH LATIN SMALL LETTER Q
-0xA3F2 0xFF52 # FULLWIDTH LATIN SMALL LETTER R
-0xA3F3 0xFF53 # FULLWIDTH LATIN SMALL LETTER S
-0xA3F4 0xFF54 # FULLWIDTH LATIN SMALL LETTER T
-0xA3F5 0xFF55 # FULLWIDTH LATIN SMALL LETTER U
-0xA3F6 0xFF56 # FULLWIDTH LATIN SMALL LETTER V
-0xA3F7 0xFF57 # FULLWIDTH LATIN SMALL LETTER W
-0xA3F8 0xFF58 # FULLWIDTH LATIN SMALL LETTER X
-0xA3F9 0xFF59 # FULLWIDTH LATIN SMALL LETTER Y
-0xA3FA 0xFF5A # FULLWIDTH LATIN SMALL LETTER Z
-0xA3FB 0xFF5B # FULLWIDTH LEFT CURLY BRACKET
-0xA3FC 0xFF5C # FULLWIDTH VERTICAL LINE
-0xA3FD 0xFF5D # FULLWIDTH RIGHT CURLY BRACKET
-0xA3FE 0xFFE3 # FULLWIDTH MACRON
-0xA441 0xC9DE # HANGUL SYLLABLE SSANGCIEUC-A-SSANGKIYEOK
-0xA442 0xC9DF # HANGUL SYLLABLE SSANGCIEUC-A-KIYEOKSIOS
-0xA443 0xC9E1 # HANGUL SYLLABLE SSANGCIEUC-A-NIEUNCIEUC
-0xA444 0xC9E3 # HANGUL SYLLABLE SSANGCIEUC-A-TIKEUT
-0xA445 0xC9E5 # HANGUL SYLLABLE SSANGCIEUC-A-RIEULKIYEOK
-0xA446 0xC9E6 # HANGUL SYLLABLE SSANGCIEUC-A-RIEULMIEUM
-0xA447 0xC9E8 # HANGUL SYLLABLE SSANGCIEUC-A-RIEULSIOS
-0xA448 0xC9E9 # HANGUL SYLLABLE SSANGCIEUC-A-RIEULTHIEUTH
-0xA449 0xC9EA # HANGUL SYLLABLE SSANGCIEUC-A-RIEULPHIEUPH
-0xA44A 0xC9EB # HANGUL SYLLABLE SSANGCIEUC-A-RIEULHIEUH
-0xA44B 0xC9EE # HANGUL SYLLABLE SSANGCIEUC-A-PIEUPSIOS
-0xA44C 0xC9F2 # HANGUL SYLLABLE SSANGCIEUC-A-CIEUC
-0xA44D 0xC9F3 # HANGUL SYLLABLE SSANGCIEUC-A-CHIEUCH
-0xA44E 0xC9F4 # HANGUL SYLLABLE SSANGCIEUC-A-KHIEUKH
-0xA44F 0xC9F5 # HANGUL SYLLABLE SSANGCIEUC-A-THIEUTH
-0xA450 0xC9F6 # HANGUL SYLLABLE SSANGCIEUC-A-PHIEUPH
-0xA451 0xC9F7 # HANGUL SYLLABLE SSANGCIEUC-A-HIEUH
-0xA452 0xC9FA # HANGUL SYLLABLE SSANGCIEUC-AE-SSANGKIYEOK
-0xA453 0xC9FB # HANGUL SYLLABLE SSANGCIEUC-AE-KIYEOKSIOS
-0xA454 0xC9FD # HANGUL SYLLABLE SSANGCIEUC-AE-NIEUNCIEUC
-0xA455 0xC9FE # HANGUL SYLLABLE SSANGCIEUC-AE-NIEUNHIEUH
-0xA456 0xC9FF # HANGUL SYLLABLE SSANGCIEUC-AE-TIKEUT
-0xA457 0xCA01 # HANGUL SYLLABLE SSANGCIEUC-AE-RIEULKIYEOK
-0xA458 0xCA02 # HANGUL SYLLABLE SSANGCIEUC-AE-RIEULMIEUM
-0xA459 0xCA03 # HANGUL SYLLABLE SSANGCIEUC-AE-RIEULPIEUP
-0xA45A 0xCA04 # HANGUL SYLLABLE SSANGCIEUC-AE-RIEULSIOS
-0xA461 0xCA05 # HANGUL SYLLABLE SSANGCIEUC-AE-RIEULTHIEUTH
-0xA462 0xCA06 # HANGUL SYLLABLE SSANGCIEUC-AE-RIEULPHIEUPH
-0xA463 0xCA07 # HANGUL SYLLABLE SSANGCIEUC-AE-RIEULHIEUH
-0xA464 0xCA0A # HANGUL SYLLABLE SSANGCIEUC-AE-PIEUPSIOS
-0xA465 0xCA0E # HANGUL SYLLABLE SSANGCIEUC-AE-CIEUC
-0xA466 0xCA0F # HANGUL SYLLABLE SSANGCIEUC-AE-CHIEUCH
-0xA467 0xCA10 # HANGUL SYLLABLE SSANGCIEUC-AE-KHIEUKH
-0xA468 0xCA11 # HANGUL SYLLABLE SSANGCIEUC-AE-THIEUTH
-0xA469 0xCA12 # HANGUL SYLLABLE SSANGCIEUC-AE-PHIEUPH
-0xA46A 0xCA13 # HANGUL SYLLABLE SSANGCIEUC-AE-HIEUH
-0xA46B 0xCA15 # HANGUL SYLLABLE SSANGCIEUC-YA-KIYEOK
-0xA46C 0xCA16 # HANGUL SYLLABLE SSANGCIEUC-YA-SSANGKIYEOK
-0xA46D 0xCA17 # HANGUL SYLLABLE SSANGCIEUC-YA-KIYEOKSIOS
-0xA46E 0xCA19 # HANGUL SYLLABLE SSANGCIEUC-YA-NIEUNCIEUC
-0xA46F 0xCA1A # HANGUL SYLLABLE SSANGCIEUC-YA-NIEUNHIEUH
-0xA470 0xCA1B # HANGUL SYLLABLE SSANGCIEUC-YA-TIKEUT
-0xA471 0xCA1C # HANGUL SYLLABLE SSANGCIEUC-YA-RIEUL
-0xA472 0xCA1D # HANGUL SYLLABLE SSANGCIEUC-YA-RIEULKIYEOK
-0xA473 0xCA1E # HANGUL SYLLABLE SSANGCIEUC-YA-RIEULMIEUM
-0xA474 0xCA1F # HANGUL SYLLABLE SSANGCIEUC-YA-RIEULPIEUP
-0xA475 0xCA20 # HANGUL SYLLABLE SSANGCIEUC-YA-RIEULSIOS
-0xA476 0xCA21 # HANGUL SYLLABLE SSANGCIEUC-YA-RIEULTHIEUTH
-0xA477 0xCA22 # HANGUL SYLLABLE SSANGCIEUC-YA-RIEULPHIEUPH
-0xA478 0xCA23 # HANGUL SYLLABLE SSANGCIEUC-YA-RIEULHIEUH
-0xA479 0xCA24 # HANGUL SYLLABLE SSANGCIEUC-YA-MIEUM
-0xA47A 0xCA25 # HANGUL SYLLABLE SSANGCIEUC-YA-PIEUP
-0xA481 0xCA26 # HANGUL SYLLABLE SSANGCIEUC-YA-PIEUPSIOS
-0xA482 0xCA27 # HANGUL SYLLABLE SSANGCIEUC-YA-SIOS
-0xA483 0xCA28 # HANGUL SYLLABLE SSANGCIEUC-YA-SSANGSIOS
-0xA484 0xCA2A # HANGUL SYLLABLE SSANGCIEUC-YA-CIEUC
-0xA485 0xCA2B # HANGUL SYLLABLE SSANGCIEUC-YA-CHIEUCH
-0xA486 0xCA2C # HANGUL SYLLABLE SSANGCIEUC-YA-KHIEUKH
-0xA487 0xCA2D # HANGUL SYLLABLE SSANGCIEUC-YA-THIEUTH
-0xA488 0xCA2E # HANGUL SYLLABLE SSANGCIEUC-YA-PHIEUPH
-0xA489 0xCA2F # HANGUL SYLLABLE SSANGCIEUC-YA-HIEUH
-0xA48A 0xCA30 # HANGUL SYLLABLE SSANGCIEUC-YAE
-0xA48B 0xCA31 # HANGUL SYLLABLE SSANGCIEUC-YAE-KIYEOK
-0xA48C 0xCA32 # HANGUL SYLLABLE SSANGCIEUC-YAE-SSANGKIYEOK
-0xA48D 0xCA33 # HANGUL SYLLABLE SSANGCIEUC-YAE-KIYEOKSIOS
-0xA48E 0xCA34 # HANGUL SYLLABLE SSANGCIEUC-YAE-NIEUN
-0xA48F 0xCA35 # HANGUL SYLLABLE SSANGCIEUC-YAE-NIEUNCIEUC
-0xA490 0xCA36 # HANGUL SYLLABLE SSANGCIEUC-YAE-NIEUNHIEUH
-0xA491 0xCA37 # HANGUL SYLLABLE SSANGCIEUC-YAE-TIKEUT
-0xA492 0xCA38 # HANGUL SYLLABLE SSANGCIEUC-YAE-RIEUL
-0xA493 0xCA39 # HANGUL SYLLABLE SSANGCIEUC-YAE-RIEULKIYEOK
-0xA494 0xCA3A # HANGUL SYLLABLE SSANGCIEUC-YAE-RIEULMIEUM
-0xA495 0xCA3B # HANGUL SYLLABLE SSANGCIEUC-YAE-RIEULPIEUP
-0xA496 0xCA3C # HANGUL SYLLABLE SSANGCIEUC-YAE-RIEULSIOS
-0xA497 0xCA3D # HANGUL SYLLABLE SSANGCIEUC-YAE-RIEULTHIEUTH
-0xA498 0xCA3E # HANGUL SYLLABLE SSANGCIEUC-YAE-RIEULPHIEUPH
-0xA499 0xCA3F # HANGUL SYLLABLE SSANGCIEUC-YAE-RIEULHIEUH
-0xA49A 0xCA40 # HANGUL SYLLABLE SSANGCIEUC-YAE-MIEUM
-0xA49B 0xCA41 # HANGUL SYLLABLE SSANGCIEUC-YAE-PIEUP
-0xA49C 0xCA42 # HANGUL SYLLABLE SSANGCIEUC-YAE-PIEUPSIOS
-0xA49D 0xCA43 # HANGUL SYLLABLE SSANGCIEUC-YAE-SIOS
-0xA49E 0xCA44 # HANGUL SYLLABLE SSANGCIEUC-YAE-SSANGSIOS
-0xA49F 0xCA45 # HANGUL SYLLABLE SSANGCIEUC-YAE-IEUNG
-0xA4A0 0xCA46 # HANGUL SYLLABLE SSANGCIEUC-YAE-CIEUC
-0xA4A1 0x3131 # HANGUL LETTER KIYEOK
-0xA4A2 0x3132 # HANGUL LETTER SSANGKIYEOK
-0xA4A3 0x3133 # HANGUL LETTER KIYEOK-SIOS
-0xA4A4 0x3134 # HANGUL LETTER NIEUN
-0xA4A5 0x3135 # HANGUL LETTER NIEUN-CIEUC
-0xA4A6 0x3136 # HANGUL LETTER NIEUN-HIEUH
-0xA4A7 0x3137 # HANGUL LETTER TIKEUT
-0xA4A8 0x3138 # HANGUL LETTER SSANGTIKEUT
-0xA4A9 0x3139 # HANGUL LETTER RIEUL
-0xA4AA 0x313A # HANGUL LETTER RIEUL-KIYEOK
-0xA4AB 0x313B # HANGUL LETTER RIEUL-MIEUM
-0xA4AC 0x313C # HANGUL LETTER RIEUL-PIEUP
-0xA4AD 0x313D # HANGUL LETTER RIEUL-SIOS
-0xA4AE 0x313E # HANGUL LETTER RIEUL-THIEUTH
-0xA4AF 0x313F # HANGUL LETTER RIEUL-PHIEUPH
-0xA4B0 0x3140 # HANGUL LETTER RIEUL-HIEUH
-0xA4B1 0x3141 # HANGUL LETTER MIEUM
-0xA4B2 0x3142 # HANGUL LETTER PIEUP
-0xA4B3 0x3143 # HANGUL LETTER SSANGPIEUP
-0xA4B4 0x3144 # HANGUL LETTER PIEUP-SIOS
-0xA4B5 0x3145 # HANGUL LETTER SIOS
-0xA4B6 0x3146 # HANGUL LETTER SSANGSIOS
-0xA4B7 0x3147 # HANGUL LETTER IEUNG
-0xA4B8 0x3148 # HANGUL LETTER CIEUC
-0xA4B9 0x3149 # HANGUL LETTER SSANGCIEUC
-0xA4BA 0x314A # HANGUL LETTER CHIEUCH
-0xA4BB 0x314B # HANGUL LETTER KHIEUKH
-0xA4BC 0x314C # HANGUL LETTER THIEUTH
-0xA4BD 0x314D # HANGUL LETTER PHIEUPH
-0xA4BE 0x314E # HANGUL LETTER HIEUH
-0xA4BF 0x314F # HANGUL LETTER A
-0xA4C0 0x3150 # HANGUL LETTER AE
-0xA4C1 0x3151 # HANGUL LETTER YA
-0xA4C2 0x3152 # HANGUL LETTER YAE
-0xA4C3 0x3153 # HANGUL LETTER EO
-0xA4C4 0x3154 # HANGUL LETTER E
-0xA4C5 0x3155 # HANGUL LETTER YEO
-0xA4C6 0x3156 # HANGUL LETTER YE
-0xA4C7 0x3157 # HANGUL LETTER O
-0xA4C8 0x3158 # HANGUL LETTER WA
-0xA4C9 0x3159 # HANGUL LETTER WAE
-0xA4CA 0x315A # HANGUL LETTER OE
-0xA4CB 0x315B # HANGUL LETTER YO
-0xA4CC 0x315C # HANGUL LETTER U
-0xA4CD 0x315D # HANGUL LETTER WEO
-0xA4CE 0x315E # HANGUL LETTER WE
-0xA4CF 0x315F # HANGUL LETTER WI
-0xA4D0 0x3160 # HANGUL LETTER YU
-0xA4D1 0x3161 # HANGUL LETTER EU
-0xA4D2 0x3162 # HANGUL LETTER YI
-0xA4D3 0x3163 # HANGUL LETTER I
-0xA4D4 0x3164 # HANGUL FILLER
-0xA4D5 0x3165 # HANGUL LETTER SSANGNIEUN
-0xA4D6 0x3166 # HANGUL LETTER NIEUN-TIKEUT
-0xA4D7 0x3167 # HANGUL LETTER NIEUN-SIOS
-0xA4D8 0x3168 # HANGUL LETTER NIEUN-PANSIOS
-0xA4D9 0x3169 # HANGUL LETTER RIEUL-KIYEOK-SIOS
-0xA4DA 0x316A # HANGUL LETTER RIEUL-TIKEUT
-0xA4DB 0x316B # HANGUL LETTER RIEUL-PIEUP-SIOS
-0xA4DC 0x316C # HANGUL LETTER RIEUL-PANSIOS
-0xA4DD 0x316D # HANGUL LETTER RIEUL-YEORINHIEUH
-0xA4DE 0x316E # HANGUL LETTER MIEUM-PIEUP
-0xA4DF 0x316F # HANGUL LETTER MIEUM-SIOS
-0xA4E0 0x3170 # HANGUL LETTER MIEUM-PANSIOS
-0xA4E1 0x3171 # HANGUL LETTER KAPYEOUNMIEUM
-0xA4E2 0x3172 # HANGUL LETTER PIEUP-KIYEOK
-0xA4E3 0x3173 # HANGUL LETTER PIEUP-TIKEUT
-0xA4E4 0x3174 # HANGUL LETTER PIEUP-SIOS-KIYEOK
-0xA4E5 0x3175 # HANGUL LETTER PIEUP-SIOS-TIKEUT
-0xA4E6 0x3176 # HANGUL LETTER PIEUP-CIEUC
-0xA4E7 0x3177 # HANGUL LETTER PIEUP-THIEUTH
-0xA4E8 0x3178 # HANGUL LETTER KAPYEOUNPIEUP
-0xA4E9 0x3179 # HANGUL LETTER KAPYEOUNSSANGPIEUP
-0xA4EA 0x317A # HANGUL LETTER SIOS-KIYEOK
-0xA4EB 0x317B # HANGUL LETTER SIOS-NIEUN
-0xA4EC 0x317C # HANGUL LETTER SIOS-TIKEUT
-0xA4ED 0x317D # HANGUL LETTER SIOS-PIEUP
-0xA4EE 0x317E # HANGUL LETTER SIOS-CIEUC
-0xA4EF 0x317F # HANGUL LETTER PANSIOS
-0xA4F0 0x3180 # HANGUL LETTER SSANGIEUNG
-0xA4F1 0x3181 # HANGUL LETTER YESIEUNG
-0xA4F2 0x3182 # HANGUL LETTER YESIEUNG-SIOS
-0xA4F3 0x3183 # HANGUL LETTER YESIEUNG-PANSIOS
-0xA4F4 0x3184 # HANGUL LETTER KAPYEOUNPHIEUPH
-0xA4F5 0x3185 # HANGUL LETTER SSANGHIEUH
-0xA4F6 0x3186 # HANGUL LETTER YEORINHIEUH
-0xA4F7 0x3187 # HANGUL LETTER YO-YA
-0xA4F8 0x3188 # HANGUL LETTER YO-YAE
-0xA4F9 0x3189 # HANGUL LETTER YO-I
-0xA4FA 0x318A # HANGUL LETTER YU-YEO
-0xA4FB 0x318B # HANGUL LETTER YU-YE
-0xA4FC 0x318C # HANGUL LETTER YU-I
-0xA4FD 0x318D # HANGUL LETTER ARAEA
-0xA4FE 0x318E # HANGUL LETTER ARAEAE
-0xA541 0xCA47 # HANGUL SYLLABLE SSANGCIEUC-YAE-CHIEUCH
-0xA542 0xCA48 # HANGUL SYLLABLE SSANGCIEUC-YAE-KHIEUKH
-0xA543 0xCA49 # HANGUL SYLLABLE SSANGCIEUC-YAE-THIEUTH
-0xA544 0xCA4A # HANGUL SYLLABLE SSANGCIEUC-YAE-PHIEUPH
-0xA545 0xCA4B # HANGUL SYLLABLE SSANGCIEUC-YAE-HIEUH
-0xA546 0xCA4E # HANGUL SYLLABLE SSANGCIEUC-EO-SSANGKIYEOK
-0xA547 0xCA4F # HANGUL SYLLABLE SSANGCIEUC-EO-KIYEOKSIOS
-0xA548 0xCA51 # HANGUL SYLLABLE SSANGCIEUC-EO-NIEUNCIEUC
-0xA549 0xCA52 # HANGUL SYLLABLE SSANGCIEUC-EO-NIEUNHIEUH
-0xA54A 0xCA53 # HANGUL SYLLABLE SSANGCIEUC-EO-TIKEUT
-0xA54B 0xCA55 # HANGUL SYLLABLE SSANGCIEUC-EO-RIEULKIYEOK
-0xA54C 0xCA56 # HANGUL SYLLABLE SSANGCIEUC-EO-RIEULMIEUM
-0xA54D 0xCA57 # HANGUL SYLLABLE SSANGCIEUC-EO-RIEULPIEUP
-0xA54E 0xCA58 # HANGUL SYLLABLE SSANGCIEUC-EO-RIEULSIOS
-0xA54F 0xCA59 # HANGUL SYLLABLE SSANGCIEUC-EO-RIEULTHIEUTH
-0xA550 0xCA5A # HANGUL SYLLABLE SSANGCIEUC-EO-RIEULPHIEUPH
-0xA551 0xCA5B # HANGUL SYLLABLE SSANGCIEUC-EO-RIEULHIEUH
-0xA552 0xCA5E # HANGUL SYLLABLE SSANGCIEUC-EO-PIEUPSIOS
-0xA553 0xCA62 # HANGUL SYLLABLE SSANGCIEUC-EO-CIEUC
-0xA554 0xCA63 # HANGUL SYLLABLE SSANGCIEUC-EO-CHIEUCH
-0xA555 0xCA64 # HANGUL SYLLABLE SSANGCIEUC-EO-KHIEUKH
-0xA556 0xCA65 # HANGUL SYLLABLE SSANGCIEUC-EO-THIEUTH
-0xA557 0xCA66 # HANGUL SYLLABLE SSANGCIEUC-EO-PHIEUPH
-0xA558 0xCA67 # HANGUL SYLLABLE SSANGCIEUC-EO-HIEUH
-0xA559 0xCA69 # HANGUL SYLLABLE SSANGCIEUC-E-KIYEOK
-0xA55A 0xCA6A # HANGUL SYLLABLE SSANGCIEUC-E-SSANGKIYEOK
-0xA561 0xCA6B # HANGUL SYLLABLE SSANGCIEUC-E-KIYEOKSIOS
-0xA562 0xCA6C # HANGUL SYLLABLE SSANGCIEUC-E-NIEUN
-0xA563 0xCA6D # HANGUL SYLLABLE SSANGCIEUC-E-NIEUNCIEUC
-0xA564 0xCA6E # HANGUL SYLLABLE SSANGCIEUC-E-NIEUNHIEUH
-0xA565 0xCA6F # HANGUL SYLLABLE SSANGCIEUC-E-TIKEUT
-0xA566 0xCA70 # HANGUL SYLLABLE SSANGCIEUC-E-RIEUL
-0xA567 0xCA71 # HANGUL SYLLABLE SSANGCIEUC-E-RIEULKIYEOK
-0xA568 0xCA72 # HANGUL SYLLABLE SSANGCIEUC-E-RIEULMIEUM
-0xA569 0xCA73 # HANGUL SYLLABLE SSANGCIEUC-E-RIEULPIEUP
-0xA56A 0xCA74 # HANGUL SYLLABLE SSANGCIEUC-E-RIEULSIOS
-0xA56B 0xCA75 # HANGUL SYLLABLE SSANGCIEUC-E-RIEULTHIEUTH
-0xA56C 0xCA76 # HANGUL SYLLABLE SSANGCIEUC-E-RIEULPHIEUPH
-0xA56D 0xCA77 # HANGUL SYLLABLE SSANGCIEUC-E-RIEULHIEUH
-0xA56E 0xCA78 # HANGUL SYLLABLE SSANGCIEUC-E-MIEUM
-0xA56F 0xCA79 # HANGUL SYLLABLE SSANGCIEUC-E-PIEUP
-0xA570 0xCA7A # HANGUL SYLLABLE SSANGCIEUC-E-PIEUPSIOS
-0xA571 0xCA7B # HANGUL SYLLABLE SSANGCIEUC-E-SIOS
-0xA572 0xCA7C # HANGUL SYLLABLE SSANGCIEUC-E-SSANGSIOS
-0xA573 0xCA7E # HANGUL SYLLABLE SSANGCIEUC-E-CIEUC
-0xA574 0xCA7F # HANGUL SYLLABLE SSANGCIEUC-E-CHIEUCH
-0xA575 0xCA80 # HANGUL SYLLABLE SSANGCIEUC-E-KHIEUKH
-0xA576 0xCA81 # HANGUL SYLLABLE SSANGCIEUC-E-THIEUTH
-0xA577 0xCA82 # HANGUL SYLLABLE SSANGCIEUC-E-PHIEUPH
-0xA578 0xCA83 # HANGUL SYLLABLE SSANGCIEUC-E-HIEUH
-0xA579 0xCA85 # HANGUL SYLLABLE SSANGCIEUC-YEO-KIYEOK
-0xA57A 0xCA86 # HANGUL SYLLABLE SSANGCIEUC-YEO-SSANGKIYEOK
-0xA581 0xCA87 # HANGUL SYLLABLE SSANGCIEUC-YEO-KIYEOKSIOS
-0xA582 0xCA88 # HANGUL SYLLABLE SSANGCIEUC-YEO-NIEUN
-0xA583 0xCA89 # HANGUL SYLLABLE SSANGCIEUC-YEO-NIEUNCIEUC
-0xA584 0xCA8A # HANGUL SYLLABLE SSANGCIEUC-YEO-NIEUNHIEUH
-0xA585 0xCA8B # HANGUL SYLLABLE SSANGCIEUC-YEO-TIKEUT
-0xA586 0xCA8C # HANGUL SYLLABLE SSANGCIEUC-YEO-RIEUL
-0xA587 0xCA8D # HANGUL SYLLABLE SSANGCIEUC-YEO-RIEULKIYEOK
-0xA588 0xCA8E # HANGUL SYLLABLE SSANGCIEUC-YEO-RIEULMIEUM
-0xA589 0xCA8F # HANGUL SYLLABLE SSANGCIEUC-YEO-RIEULPIEUP
-0xA58A 0xCA90 # HANGUL SYLLABLE SSANGCIEUC-YEO-RIEULSIOS
-0xA58B 0xCA91 # HANGUL SYLLABLE SSANGCIEUC-YEO-RIEULTHIEUTH
-0xA58C 0xCA92 # HANGUL SYLLABLE SSANGCIEUC-YEO-RIEULPHIEUPH
-0xA58D 0xCA93 # HANGUL SYLLABLE SSANGCIEUC-YEO-RIEULHIEUH
-0xA58E 0xCA94 # HANGUL SYLLABLE SSANGCIEUC-YEO-MIEUM
-0xA58F 0xCA95 # HANGUL SYLLABLE SSANGCIEUC-YEO-PIEUP
-0xA590 0xCA96 # HANGUL SYLLABLE SSANGCIEUC-YEO-PIEUPSIOS
-0xA591 0xCA97 # HANGUL SYLLABLE SSANGCIEUC-YEO-SIOS
-0xA592 0xCA99 # HANGUL SYLLABLE SSANGCIEUC-YEO-IEUNG
-0xA593 0xCA9A # HANGUL SYLLABLE SSANGCIEUC-YEO-CIEUC
-0xA594 0xCA9B # HANGUL SYLLABLE SSANGCIEUC-YEO-CHIEUCH
-0xA595 0xCA9C # HANGUL SYLLABLE SSANGCIEUC-YEO-KHIEUKH
-0xA596 0xCA9D # HANGUL SYLLABLE SSANGCIEUC-YEO-THIEUTH
-0xA597 0xCA9E # HANGUL SYLLABLE SSANGCIEUC-YEO-PHIEUPH
-0xA598 0xCA9F # HANGUL SYLLABLE SSANGCIEUC-YEO-HIEUH
-0xA599 0xCAA0 # HANGUL SYLLABLE SSANGCIEUC-YE
-0xA59A 0xCAA1 # HANGUL SYLLABLE SSANGCIEUC-YE-KIYEOK
-0xA59B 0xCAA2 # HANGUL SYLLABLE SSANGCIEUC-YE-SSANGKIYEOK
-0xA59C 0xCAA3 # HANGUL SYLLABLE SSANGCIEUC-YE-KIYEOKSIOS
-0xA59D 0xCAA4 # HANGUL SYLLABLE SSANGCIEUC-YE-NIEUN
-0xA59E 0xCAA5 # HANGUL SYLLABLE SSANGCIEUC-YE-NIEUNCIEUC
-0xA59F 0xCAA6 # HANGUL SYLLABLE SSANGCIEUC-YE-NIEUNHIEUH
-0xA5A0 0xCAA7 # HANGUL SYLLABLE SSANGCIEUC-YE-TIKEUT
-0xA5A1 0x2170 # SMALL ROMAN NUMERAL ONE
-0xA5A2 0x2171 # SMALL ROMAN NUMERAL TWO
-0xA5A3 0x2172 # SMALL ROMAN NUMERAL THREE
-0xA5A4 0x2173 # SMALL ROMAN NUMERAL FOUR
-0xA5A5 0x2174 # SMALL ROMAN NUMERAL FIVE
-0xA5A6 0x2175 # SMALL ROMAN NUMERAL SIX
-0xA5A7 0x2176 # SMALL ROMAN NUMERAL SEVEN
-0xA5A8 0x2177 # SMALL ROMAN NUMERAL EIGHT
-0xA5A9 0x2178 # SMALL ROMAN NUMERAL NINE
-0xA5AA 0x2179 # SMALL ROMAN NUMERAL TEN
-0xA5B0 0x2160 # ROMAN NUMERAL ONE
-0xA5B1 0x2161 # ROMAN NUMERAL TWO
-0xA5B2 0x2162 # ROMAN NUMERAL THREE
-0xA5B3 0x2163 # ROMAN NUMERAL FOUR
-0xA5B4 0x2164 # ROMAN NUMERAL FIVE
-0xA5B5 0x2165 # ROMAN NUMERAL SIX
-0xA5B6 0x2166 # ROMAN NUMERAL SEVEN
-0xA5B7 0x2167 # ROMAN NUMERAL EIGHT
-0xA5B8 0x2168 # ROMAN NUMERAL NINE
-0xA5B9 0x2169 # ROMAN NUMERAL TEN
-0xA5C1 0x0391 # GREEK CAPITAL LETTER ALPHA
-0xA5C2 0x0392 # GREEK CAPITAL LETTER BETA
-0xA5C3 0x0393 # GREEK CAPITAL LETTER GAMMA
-0xA5C4 0x0394 # GREEK CAPITAL LETTER DELTA
-0xA5C5 0x0395 # GREEK CAPITAL LETTER EPSILON
-0xA5C6 0x0396 # GREEK CAPITAL LETTER ZETA
-0xA5C7 0x0397 # GREEK CAPITAL LETTER ETA
-0xA5C8 0x0398 # GREEK CAPITAL LETTER THETA
-0xA5C9 0x0399 # GREEK CAPITAL LETTER IOTA
-0xA5CA 0x039A # GREEK CAPITAL LETTER KAPPA
-0xA5CB 0x039B # GREEK CAPITAL LETTER LAMDA
-0xA5CC 0x039C # GREEK CAPITAL LETTER MU
-0xA5CD 0x039D # GREEK CAPITAL LETTER NU
-0xA5CE 0x039E # GREEK CAPITAL LETTER XI
-0xA5CF 0x039F # GREEK CAPITAL LETTER OMICRON
-0xA5D0 0x03A0 # GREEK CAPITAL LETTER PI
-0xA5D1 0x03A1 # GREEK CAPITAL LETTER RHO
-0xA5D2 0x03A3 # GREEK CAPITAL LETTER SIGMA
-0xA5D3 0x03A4 # GREEK CAPITAL LETTER TAU
-0xA5D4 0x03A5 # GREEK CAPITAL LETTER UPSILON
-0xA5D5 0x03A6 # GREEK CAPITAL LETTER PHI
-0xA5D6 0x03A7 # GREEK CAPITAL LETTER CHI
-0xA5D7 0x03A8 # GREEK CAPITAL LETTER PSI
-0xA5D8 0x03A9 # GREEK CAPITAL LETTER OMEGA
-0xA5E1 0x03B1 # GREEK SMALL LETTER ALPHA
-0xA5E2 0x03B2 # GREEK SMALL LETTER BETA
-0xA5E3 0x03B3 # GREEK SMALL LETTER GAMMA
-0xA5E4 0x03B4 # GREEK SMALL LETTER DELTA
-0xA5E5 0x03B5 # GREEK SMALL LETTER EPSILON
-0xA5E6 0x03B6 # GREEK SMALL LETTER ZETA
-0xA5E7 0x03B7 # GREEK SMALL LETTER ETA
-0xA5E8 0x03B8 # GREEK SMALL LETTER THETA
-0xA5E9 0x03B9 # GREEK SMALL LETTER IOTA
-0xA5EA 0x03BA # GREEK SMALL LETTER KAPPA
-0xA5EB 0x03BB # GREEK SMALL LETTER LAMDA
-0xA5EC 0x03BC # GREEK SMALL LETTER MU
-0xA5ED 0x03BD # GREEK SMALL LETTER NU
-0xA5EE 0x03BE # GREEK SMALL LETTER XI
-0xA5EF 0x03BF # GREEK SMALL LETTER OMICRON
-0xA5F0 0x03C0 # GREEK SMALL LETTER PI
-0xA5F1 0x03C1 # GREEK SMALL LETTER RHO
-0xA5F2 0x03C3 # GREEK SMALL LETTER SIGMA
-0xA5F3 0x03C4 # GREEK SMALL LETTER TAU
-0xA5F4 0x03C5 # GREEK SMALL LETTER UPSILON
-0xA5F5 0x03C6 # GREEK SMALL LETTER PHI
-0xA5F6 0x03C7 # GREEK SMALL LETTER CHI
-0xA5F7 0x03C8 # GREEK SMALL LETTER PSI
-0xA5F8 0x03C9 # GREEK SMALL LETTER OMEGA
-0xA641 0xCAA8 # HANGUL SYLLABLE SSANGCIEUC-YE-RIEUL
-0xA642 0xCAA9 # HANGUL SYLLABLE SSANGCIEUC-YE-RIEULKIYEOK
-0xA643 0xCAAA # HANGUL SYLLABLE SSANGCIEUC-YE-RIEULMIEUM
-0xA644 0xCAAB # HANGUL SYLLABLE SSANGCIEUC-YE-RIEULPIEUP
-0xA645 0xCAAC # HANGUL SYLLABLE SSANGCIEUC-YE-RIEULSIOS
-0xA646 0xCAAD # HANGUL SYLLABLE SSANGCIEUC-YE-RIEULTHIEUTH
-0xA647 0xCAAE # HANGUL SYLLABLE SSANGCIEUC-YE-RIEULPHIEUPH
-0xA648 0xCAAF # HANGUL SYLLABLE SSANGCIEUC-YE-RIEULHIEUH
-0xA649 0xCAB0 # HANGUL SYLLABLE SSANGCIEUC-YE-MIEUM
-0xA64A 0xCAB1 # HANGUL SYLLABLE SSANGCIEUC-YE-PIEUP
-0xA64B 0xCAB2 # HANGUL SYLLABLE SSANGCIEUC-YE-PIEUPSIOS
-0xA64C 0xCAB3 # HANGUL SYLLABLE SSANGCIEUC-YE-SIOS
-0xA64D 0xCAB4 # HANGUL SYLLABLE SSANGCIEUC-YE-SSANGSIOS
-0xA64E 0xCAB5 # HANGUL SYLLABLE SSANGCIEUC-YE-IEUNG
-0xA64F 0xCAB6 # HANGUL SYLLABLE SSANGCIEUC-YE-CIEUC
-0xA650 0xCAB7 # HANGUL SYLLABLE SSANGCIEUC-YE-CHIEUCH
-0xA651 0xCAB8 # HANGUL SYLLABLE SSANGCIEUC-YE-KHIEUKH
-0xA652 0xCAB9 # HANGUL SYLLABLE SSANGCIEUC-YE-THIEUTH
-0xA653 0xCABA # HANGUL SYLLABLE SSANGCIEUC-YE-PHIEUPH
-0xA654 0xCABB # HANGUL SYLLABLE SSANGCIEUC-YE-HIEUH
-0xA655 0xCABE # HANGUL SYLLABLE SSANGCIEUC-O-SSANGKIYEOK
-0xA656 0xCABF # HANGUL SYLLABLE SSANGCIEUC-O-KIYEOKSIOS
-0xA657 0xCAC1 # HANGUL SYLLABLE SSANGCIEUC-O-NIEUNCIEUC
-0xA658 0xCAC2 # HANGUL SYLLABLE SSANGCIEUC-O-NIEUNHIEUH
-0xA659 0xCAC3 # HANGUL SYLLABLE SSANGCIEUC-O-TIKEUT
-0xA65A 0xCAC5 # HANGUL SYLLABLE SSANGCIEUC-O-RIEULKIYEOK
-0xA661 0xCAC6 # HANGUL SYLLABLE SSANGCIEUC-O-RIEULMIEUM
-0xA662 0xCAC7 # HANGUL SYLLABLE SSANGCIEUC-O-RIEULPIEUP
-0xA663 0xCAC8 # HANGUL SYLLABLE SSANGCIEUC-O-RIEULSIOS
-0xA664 0xCAC9 # HANGUL SYLLABLE SSANGCIEUC-O-RIEULTHIEUTH
-0xA665 0xCACA # HANGUL SYLLABLE SSANGCIEUC-O-RIEULPHIEUPH
-0xA666 0xCACB # HANGUL SYLLABLE SSANGCIEUC-O-RIEULHIEUH
-0xA667 0xCACE # HANGUL SYLLABLE SSANGCIEUC-O-PIEUPSIOS
-0xA668 0xCAD0 # HANGUL SYLLABLE SSANGCIEUC-O-SSANGSIOS
-0xA669 0xCAD2 # HANGUL SYLLABLE SSANGCIEUC-O-CIEUC
-0xA66A 0xCAD4 # HANGUL SYLLABLE SSANGCIEUC-O-KHIEUKH
-0xA66B 0xCAD5 # HANGUL SYLLABLE SSANGCIEUC-O-THIEUTH
-0xA66C 0xCAD6 # HANGUL SYLLABLE SSANGCIEUC-O-PHIEUPH
-0xA66D 0xCAD7 # HANGUL SYLLABLE SSANGCIEUC-O-HIEUH
-0xA66E 0xCADA # HANGUL SYLLABLE SSANGCIEUC-WA-SSANGKIYEOK
-0xA66F 0xCADB # HANGUL SYLLABLE SSANGCIEUC-WA-KIYEOKSIOS
-0xA670 0xCADC # HANGUL SYLLABLE SSANGCIEUC-WA-NIEUN
-0xA671 0xCADD # HANGUL SYLLABLE SSANGCIEUC-WA-NIEUNCIEUC
-0xA672 0xCADE # HANGUL SYLLABLE SSANGCIEUC-WA-NIEUNHIEUH
-0xA673 0xCADF # HANGUL SYLLABLE SSANGCIEUC-WA-TIKEUT
-0xA674 0xCAE1 # HANGUL SYLLABLE SSANGCIEUC-WA-RIEULKIYEOK
-0xA675 0xCAE2 # HANGUL SYLLABLE SSANGCIEUC-WA-RIEULMIEUM
-0xA676 0xCAE3 # HANGUL SYLLABLE SSANGCIEUC-WA-RIEULPIEUP
-0xA677 0xCAE4 # HANGUL SYLLABLE SSANGCIEUC-WA-RIEULSIOS
-0xA678 0xCAE5 # HANGUL SYLLABLE SSANGCIEUC-WA-RIEULTHIEUTH
-0xA679 0xCAE6 # HANGUL SYLLABLE SSANGCIEUC-WA-RIEULPHIEUPH
-0xA67A 0xCAE7 # HANGUL SYLLABLE SSANGCIEUC-WA-RIEULHIEUH
-0xA681 0xCAE8 # HANGUL SYLLABLE SSANGCIEUC-WA-MIEUM
-0xA682 0xCAE9 # HANGUL SYLLABLE SSANGCIEUC-WA-PIEUP
-0xA683 0xCAEA # HANGUL SYLLABLE SSANGCIEUC-WA-PIEUPSIOS
-0xA684 0xCAEB # HANGUL SYLLABLE SSANGCIEUC-WA-SIOS
-0xA685 0xCAED # HANGUL SYLLABLE SSANGCIEUC-WA-IEUNG
-0xA686 0xCAEE # HANGUL SYLLABLE SSANGCIEUC-WA-CIEUC
-0xA687 0xCAEF # HANGUL SYLLABLE SSANGCIEUC-WA-CHIEUCH
-0xA688 0xCAF0 # HANGUL SYLLABLE SSANGCIEUC-WA-KHIEUKH
-0xA689 0xCAF1 # HANGUL SYLLABLE SSANGCIEUC-WA-THIEUTH
-0xA68A 0xCAF2 # HANGUL SYLLABLE SSANGCIEUC-WA-PHIEUPH
-0xA68B 0xCAF3 # HANGUL SYLLABLE SSANGCIEUC-WA-HIEUH
-0xA68C 0xCAF5 # HANGUL SYLLABLE SSANGCIEUC-WAE-KIYEOK
-0xA68D 0xCAF6 # HANGUL SYLLABLE SSANGCIEUC-WAE-SSANGKIYEOK
-0xA68E 0xCAF7 # HANGUL SYLLABLE SSANGCIEUC-WAE-KIYEOKSIOS
-0xA68F 0xCAF8 # HANGUL SYLLABLE SSANGCIEUC-WAE-NIEUN
-0xA690 0xCAF9 # HANGUL SYLLABLE SSANGCIEUC-WAE-NIEUNCIEUC
-0xA691 0xCAFA # HANGUL SYLLABLE SSANGCIEUC-WAE-NIEUNHIEUH
-0xA692 0xCAFB # HANGUL SYLLABLE SSANGCIEUC-WAE-TIKEUT
-0xA693 0xCAFC # HANGUL SYLLABLE SSANGCIEUC-WAE-RIEUL
-0xA694 0xCAFD # HANGUL SYLLABLE SSANGCIEUC-WAE-RIEULKIYEOK
-0xA695 0xCAFE # HANGUL SYLLABLE SSANGCIEUC-WAE-RIEULMIEUM
-0xA696 0xCAFF # HANGUL SYLLABLE SSANGCIEUC-WAE-RIEULPIEUP
-0xA697 0xCB00 # HANGUL SYLLABLE SSANGCIEUC-WAE-RIEULSIOS
-0xA698 0xCB01 # HANGUL SYLLABLE SSANGCIEUC-WAE-RIEULTHIEUTH
-0xA699 0xCB02 # HANGUL SYLLABLE SSANGCIEUC-WAE-RIEULPHIEUPH
-0xA69A 0xCB03 # HANGUL SYLLABLE SSANGCIEUC-WAE-RIEULHIEUH
-0xA69B 0xCB04 # HANGUL SYLLABLE SSANGCIEUC-WAE-MIEUM
-0xA69C 0xCB05 # HANGUL SYLLABLE SSANGCIEUC-WAE-PIEUP
-0xA69D 0xCB06 # HANGUL SYLLABLE SSANGCIEUC-WAE-PIEUPSIOS
-0xA69E 0xCB07 # HANGUL SYLLABLE SSANGCIEUC-WAE-SIOS
-0xA69F 0xCB09 # HANGUL SYLLABLE SSANGCIEUC-WAE-IEUNG
-0xA6A0 0xCB0A # HANGUL SYLLABLE SSANGCIEUC-WAE-CIEUC
-0xA6A1 0x2500 # BOX DRAWINGS LIGHT HORIZONTAL
-0xA6A2 0x2502 # BOX DRAWINGS LIGHT VERTICAL
-0xA6A3 0x250C # BOX DRAWINGS LIGHT DOWN AND RIGHT
-0xA6A4 0x2510 # BOX DRAWINGS LIGHT DOWN AND LEFT
-0xA6A5 0x2518 # BOX DRAWINGS LIGHT UP AND LEFT
-0xA6A6 0x2514 # BOX DRAWINGS LIGHT UP AND RIGHT
-0xA6A7 0x251C # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
-0xA6A8 0x252C # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
-0xA6A9 0x2524 # BOX DRAWINGS LIGHT VERTICAL AND LEFT
-0xA6AA 0x2534 # BOX DRAWINGS LIGHT UP AND HORIZONTAL
-0xA6AB 0x253C # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
-0xA6AC 0x2501 # BOX DRAWINGS HEAVY HORIZONTAL
-0xA6AD 0x2503 # BOX DRAWINGS HEAVY VERTICAL
-0xA6AE 0x250F # BOX DRAWINGS HEAVY DOWN AND RIGHT
-0xA6AF 0x2513 # BOX DRAWINGS HEAVY DOWN AND LEFT
-0xA6B0 0x251B # BOX DRAWINGS HEAVY UP AND LEFT
-0xA6B1 0x2517 # BOX DRAWINGS HEAVY UP AND RIGHT
-0xA6B2 0x2523 # BOX DRAWINGS HEAVY VERTICAL AND RIGHT
-0xA6B3 0x2533 # BOX DRAWINGS HEAVY DOWN AND HORIZONTAL
-0xA6B4 0x252B # BOX DRAWINGS HEAVY VERTICAL AND LEFT
-0xA6B5 0x253B # BOX DRAWINGS HEAVY UP AND HORIZONTAL
-0xA6B6 0x254B # BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL
-0xA6B7 0x2520 # BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT
-0xA6B8 0x252F # BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY
-0xA6B9 0x2528 # BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT
-0xA6BA 0x2537 # BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY
-0xA6BB 0x253F # BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY
-0xA6BC 0x251D # BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY
-0xA6BD 0x2530 # BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT
-0xA6BE 0x2525 # BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY
-0xA6BF 0x2538 # BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT
-0xA6C0 0x2542 # BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT
-0xA6C1 0x2512 # BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT
-0xA6C2 0x2511 # BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY
-0xA6C3 0x251A # BOX DRAWINGS UP HEAVY AND LEFT LIGHT
-0xA6C4 0x2519 # BOX DRAWINGS UP LIGHT AND LEFT HEAVY
-0xA6C5 0x2516 # BOX DRAWINGS UP HEAVY AND RIGHT LIGHT
-0xA6C6 0x2515 # BOX DRAWINGS UP LIGHT AND RIGHT HEAVY
-0xA6C7 0x250E # BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT
-0xA6C8 0x250D # BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY
-0xA6C9 0x251E # BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT
-0xA6CA 0x251F # BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT
-0xA6CB 0x2521 # BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY
-0xA6CC 0x2522 # BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY
-0xA6CD 0x2526 # BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT
-0xA6CE 0x2527 # BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT
-0xA6CF 0x2529 # BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY
-0xA6D0 0x252A # BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY
-0xA6D1 0x252D # BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT
-0xA6D2 0x252E # BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT
-0xA6D3 0x2531 # BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY
-0xA6D4 0x2532 # BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY
-0xA6D5 0x2535 # BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT
-0xA6D6 0x2536 # BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT
-0xA6D7 0x2539 # BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY
-0xA6D8 0x253A # BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY
-0xA6D9 0x253D # BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT
-0xA6DA 0x253E # BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT
-0xA6DB 0x2540 # BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT
-0xA6DC 0x2541 # BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT
-0xA6DD 0x2543 # BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT
-0xA6DE 0x2544 # BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT
-0xA6DF 0x2545 # BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT
-0xA6E0 0x2546 # BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT
-0xA6E1 0x2547 # BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY
-0xA6E2 0x2548 # BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY
-0xA6E3 0x2549 # BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY
-0xA6E4 0x254A # BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY
-0xA741 0xCB0B # HANGUL SYLLABLE SSANGCIEUC-WAE-CHIEUCH
-0xA742 0xCB0C # HANGUL SYLLABLE SSANGCIEUC-WAE-KHIEUKH
-0xA743 0xCB0D # HANGUL SYLLABLE SSANGCIEUC-WAE-THIEUTH
-0xA744 0xCB0E # HANGUL SYLLABLE SSANGCIEUC-WAE-PHIEUPH
-0xA745 0xCB0F # HANGUL SYLLABLE SSANGCIEUC-WAE-HIEUH
-0xA746 0xCB11 # HANGUL SYLLABLE SSANGCIEUC-OE-KIYEOK
-0xA747 0xCB12 # HANGUL SYLLABLE SSANGCIEUC-OE-SSANGKIYEOK
-0xA748 0xCB13 # HANGUL SYLLABLE SSANGCIEUC-OE-KIYEOKSIOS
-0xA749 0xCB15 # HANGUL SYLLABLE SSANGCIEUC-OE-NIEUNCIEUC
-0xA74A 0xCB16 # HANGUL SYLLABLE SSANGCIEUC-OE-NIEUNHIEUH
-0xA74B 0xCB17 # HANGUL SYLLABLE SSANGCIEUC-OE-TIKEUT
-0xA74C 0xCB19 # HANGUL SYLLABLE SSANGCIEUC-OE-RIEULKIYEOK
-0xA74D 0xCB1A # HANGUL SYLLABLE SSANGCIEUC-OE-RIEULMIEUM
-0xA74E 0xCB1B # HANGUL SYLLABLE SSANGCIEUC-OE-RIEULPIEUP
-0xA74F 0xCB1C # HANGUL SYLLABLE SSANGCIEUC-OE-RIEULSIOS
-0xA750 0xCB1D # HANGUL SYLLABLE SSANGCIEUC-OE-RIEULTHIEUTH
-0xA751 0xCB1E # HANGUL SYLLABLE SSANGCIEUC-OE-RIEULPHIEUPH
-0xA752 0xCB1F # HANGUL SYLLABLE SSANGCIEUC-OE-RIEULHIEUH
-0xA753 0xCB22 # HANGUL SYLLABLE SSANGCIEUC-OE-PIEUPSIOS
-0xA754 0xCB23 # HANGUL SYLLABLE SSANGCIEUC-OE-SIOS
-0xA755 0xCB24 # HANGUL SYLLABLE SSANGCIEUC-OE-SSANGSIOS
-0xA756 0xCB25 # HANGUL SYLLABLE SSANGCIEUC-OE-IEUNG
-0xA757 0xCB26 # HANGUL SYLLABLE SSANGCIEUC-OE-CIEUC
-0xA758 0xCB27 # HANGUL SYLLABLE SSANGCIEUC-OE-CHIEUCH
-0xA759 0xCB28 # HANGUL SYLLABLE SSANGCIEUC-OE-KHIEUKH
-0xA75A 0xCB29 # HANGUL SYLLABLE SSANGCIEUC-OE-THIEUTH
-0xA761 0xCB2A # HANGUL SYLLABLE SSANGCIEUC-OE-PHIEUPH
-0xA762 0xCB2B # HANGUL SYLLABLE SSANGCIEUC-OE-HIEUH
-0xA763 0xCB2C # HANGUL SYLLABLE SSANGCIEUC-YO
-0xA764 0xCB2D # HANGUL SYLLABLE SSANGCIEUC-YO-KIYEOK
-0xA765 0xCB2E # HANGUL SYLLABLE SSANGCIEUC-YO-SSANGKIYEOK
-0xA766 0xCB2F # HANGUL SYLLABLE SSANGCIEUC-YO-KIYEOKSIOS
-0xA767 0xCB30 # HANGUL SYLLABLE SSANGCIEUC-YO-NIEUN
-0xA768 0xCB31 # HANGUL SYLLABLE SSANGCIEUC-YO-NIEUNCIEUC
-0xA769 0xCB32 # HANGUL SYLLABLE SSANGCIEUC-YO-NIEUNHIEUH
-0xA76A 0xCB33 # HANGUL SYLLABLE SSANGCIEUC-YO-TIKEUT
-0xA76B 0xCB34 # HANGUL SYLLABLE SSANGCIEUC-YO-RIEUL
-0xA76C 0xCB35 # HANGUL SYLLABLE SSANGCIEUC-YO-RIEULKIYEOK
-0xA76D 0xCB36 # HANGUL SYLLABLE SSANGCIEUC-YO-RIEULMIEUM
-0xA76E 0xCB37 # HANGUL SYLLABLE SSANGCIEUC-YO-RIEULPIEUP
-0xA76F 0xCB38 # HANGUL SYLLABLE SSANGCIEUC-YO-RIEULSIOS
-0xA770 0xCB39 # HANGUL SYLLABLE SSANGCIEUC-YO-RIEULTHIEUTH
-0xA771 0xCB3A # HANGUL SYLLABLE SSANGCIEUC-YO-RIEULPHIEUPH
-0xA772 0xCB3B # HANGUL SYLLABLE SSANGCIEUC-YO-RIEULHIEUH
-0xA773 0xCB3C # HANGUL SYLLABLE SSANGCIEUC-YO-MIEUM
-0xA774 0xCB3D # HANGUL SYLLABLE SSANGCIEUC-YO-PIEUP
-0xA775 0xCB3E # HANGUL SYLLABLE SSANGCIEUC-YO-PIEUPSIOS
-0xA776 0xCB3F # HANGUL SYLLABLE SSANGCIEUC-YO-SIOS
-0xA777 0xCB40 # HANGUL SYLLABLE SSANGCIEUC-YO-SSANGSIOS
-0xA778 0xCB42 # HANGUL SYLLABLE SSANGCIEUC-YO-CIEUC
-0xA779 0xCB43 # HANGUL SYLLABLE SSANGCIEUC-YO-CHIEUCH
-0xA77A 0xCB44 # HANGUL SYLLABLE SSANGCIEUC-YO-KHIEUKH
-0xA781 0xCB45 # HANGUL SYLLABLE SSANGCIEUC-YO-THIEUTH
-0xA782 0xCB46 # HANGUL SYLLABLE SSANGCIEUC-YO-PHIEUPH
-0xA783 0xCB47 # HANGUL SYLLABLE SSANGCIEUC-YO-HIEUH
-0xA784 0xCB4A # HANGUL SYLLABLE SSANGCIEUC-U-SSANGKIYEOK
-0xA785 0xCB4B # HANGUL SYLLABLE SSANGCIEUC-U-KIYEOKSIOS
-0xA786 0xCB4D # HANGUL SYLLABLE SSANGCIEUC-U-NIEUNCIEUC
-0xA787 0xCB4E # HANGUL SYLLABLE SSANGCIEUC-U-NIEUNHIEUH
-0xA788 0xCB4F # HANGUL SYLLABLE SSANGCIEUC-U-TIKEUT
-0xA789 0xCB51 # HANGUL SYLLABLE SSANGCIEUC-U-RIEULKIYEOK
-0xA78A 0xCB52 # HANGUL SYLLABLE SSANGCIEUC-U-RIEULMIEUM
-0xA78B 0xCB53 # HANGUL SYLLABLE SSANGCIEUC-U-RIEULPIEUP
-0xA78C 0xCB54 # HANGUL SYLLABLE SSANGCIEUC-U-RIEULSIOS
-0xA78D 0xCB55 # HANGUL SYLLABLE SSANGCIEUC-U-RIEULTHIEUTH
-0xA78E 0xCB56 # HANGUL SYLLABLE SSANGCIEUC-U-RIEULPHIEUPH
-0xA78F 0xCB57 # HANGUL SYLLABLE SSANGCIEUC-U-RIEULHIEUH
-0xA790 0xCB5A # HANGUL SYLLABLE SSANGCIEUC-U-PIEUPSIOS
-0xA791 0xCB5B # HANGUL SYLLABLE SSANGCIEUC-U-SIOS
-0xA792 0xCB5C # HANGUL SYLLABLE SSANGCIEUC-U-SSANGSIOS
-0xA793 0xCB5E # HANGUL SYLLABLE SSANGCIEUC-U-CIEUC
-0xA794 0xCB5F # HANGUL SYLLABLE SSANGCIEUC-U-CHIEUCH
-0xA795 0xCB60 # HANGUL SYLLABLE SSANGCIEUC-U-KHIEUKH
-0xA796 0xCB61 # HANGUL SYLLABLE SSANGCIEUC-U-THIEUTH
-0xA797 0xCB62 # HANGUL SYLLABLE SSANGCIEUC-U-PHIEUPH
-0xA798 0xCB63 # HANGUL SYLLABLE SSANGCIEUC-U-HIEUH
-0xA799 0xCB65 # HANGUL SYLLABLE SSANGCIEUC-WEO-KIYEOK
-0xA79A 0xCB66 # HANGUL SYLLABLE SSANGCIEUC-WEO-SSANGKIYEOK
-0xA79B 0xCB67 # HANGUL SYLLABLE SSANGCIEUC-WEO-KIYEOKSIOS
-0xA79C 0xCB68 # HANGUL SYLLABLE SSANGCIEUC-WEO-NIEUN
-0xA79D 0xCB69 # HANGUL SYLLABLE SSANGCIEUC-WEO-NIEUNCIEUC
-0xA79E 0xCB6A # HANGUL SYLLABLE SSANGCIEUC-WEO-NIEUNHIEUH
-0xA79F 0xCB6B # HANGUL SYLLABLE SSANGCIEUC-WEO-TIKEUT
-0xA7A0 0xCB6C # HANGUL SYLLABLE SSANGCIEUC-WEO-RIEUL
-0xA7A1 0x3395 # SQUARE MU L
-0xA7A2 0x3396 # SQUARE ML
-0xA7A3 0x3397 # SQUARE DL
-0xA7A4 0x2113 # SCRIPT SMALL L
-0xA7A5 0x3398 # SQUARE KL
-0xA7A6 0x33C4 # SQUARE CC
-0xA7A7 0x33A3 # SQUARE MM CUBED
-0xA7A8 0x33A4 # SQUARE CM CUBED
-0xA7A9 0x33A5 # SQUARE M CUBED
-0xA7AA 0x33A6 # SQUARE KM CUBED
-0xA7AB 0x3399 # SQUARE FM
-0xA7AC 0x339A # SQUARE NM
-0xA7AD 0x339B # SQUARE MU M
-0xA7AE 0x339C # SQUARE MM
-0xA7AF 0x339D # SQUARE CM
-0xA7B0 0x339E # SQUARE KM
-0xA7B1 0x339F # SQUARE MM SQUARED
-0xA7B2 0x33A0 # SQUARE CM SQUARED
-0xA7B3 0x33A1 # SQUARE M SQUARED
-0xA7B4 0x33A2 # SQUARE KM SQUARED
-0xA7B5 0x33CA # SQUARE HA
-0xA7B6 0x338D # SQUARE MU G
-0xA7B7 0x338E # SQUARE MG
-0xA7B8 0x338F # SQUARE KG
-0xA7B9 0x33CF # SQUARE KT
-0xA7BA 0x3388 # SQUARE CAL
-0xA7BB 0x3389 # SQUARE KCAL
-0xA7BC 0x33C8 # SQUARE DB
-0xA7BD 0x33A7 # SQUARE M OVER S
-0xA7BE 0x33A8 # SQUARE M OVER S SQUARED
-0xA7BF 0x33B0 # SQUARE PS
-0xA7C0 0x33B1 # SQUARE NS
-0xA7C1 0x33B2 # SQUARE MU S
-0xA7C2 0x33B3 # SQUARE MS
-0xA7C3 0x33B4 # SQUARE PV
-0xA7C4 0x33B5 # SQUARE NV
-0xA7C5 0x33B6 # SQUARE MU V
-0xA7C6 0x33B7 # SQUARE MV
-0xA7C7 0x33B8 # SQUARE KV
-0xA7C8 0x33B9 # SQUARE MV MEGA
-0xA7C9 0x3380 # SQUARE PA AMPS
-0xA7CA 0x3381 # SQUARE NA
-0xA7CB 0x3382 # SQUARE MU A
-0xA7CC 0x3383 # SQUARE MA
-0xA7CD 0x3384 # SQUARE KA
-0xA7CE 0x33BA # SQUARE PW
-0xA7CF 0x33BB # SQUARE NW
-0xA7D0 0x33BC # SQUARE MU W
-0xA7D1 0x33BD # SQUARE MW
-0xA7D2 0x33BE # SQUARE KW
-0xA7D3 0x33BF # SQUARE MW MEGA
-0xA7D4 0x3390 # SQUARE HZ
-0xA7D5 0x3391 # SQUARE KHZ
-0xA7D6 0x3392 # SQUARE MHZ
-0xA7D7 0x3393 # SQUARE GHZ
-0xA7D8 0x3394 # SQUARE THZ
-0xA7D9 0x2126 # OHM SIGN
-0xA7DA 0x33C0 # SQUARE K OHM
-0xA7DB 0x33C1 # SQUARE M OHM
-0xA7DC 0x338A # SQUARE PF
-0xA7DD 0x338B # SQUARE NF
-0xA7DE 0x338C # SQUARE MU F
-0xA7DF 0x33D6 # SQUARE MOL
-0xA7E0 0x33C5 # SQUARE CD
-0xA7E1 0x33AD # SQUARE RAD
-0xA7E2 0x33AE # SQUARE RAD OVER S
-0xA7E3 0x33AF # SQUARE RAD OVER S SQUARED
-0xA7E4 0x33DB # SQUARE SR
-0xA7E5 0x33A9 # SQUARE PA
-0xA7E6 0x33AA # SQUARE KPA
-0xA7E7 0x33AB # SQUARE MPA
-0xA7E8 0x33AC # SQUARE GPA
-0xA7E9 0x33DD # SQUARE WB
-0xA7EA 0x33D0 # SQUARE LM
-0xA7EB 0x33D3 # SQUARE LX
-0xA7EC 0x33C3 # SQUARE BQ
-0xA7ED 0x33C9 # SQUARE GY
-0xA7EE 0x33DC # SQUARE SV
-0xA7EF 0x33C6 # SQUARE C OVER KG
-0xA841 0xCB6D # HANGUL SYLLABLE SSANGCIEUC-WEO-RIEULKIYEOK
-0xA842 0xCB6E # HANGUL SYLLABLE SSANGCIEUC-WEO-RIEULMIEUM
-0xA843 0xCB6F # HANGUL SYLLABLE SSANGCIEUC-WEO-RIEULPIEUP
-0xA844 0xCB70 # HANGUL SYLLABLE SSANGCIEUC-WEO-RIEULSIOS
-0xA845 0xCB71 # HANGUL SYLLABLE SSANGCIEUC-WEO-RIEULTHIEUTH
-0xA846 0xCB72 # HANGUL SYLLABLE SSANGCIEUC-WEO-RIEULPHIEUPH
-0xA847 0xCB73 # HANGUL SYLLABLE SSANGCIEUC-WEO-RIEULHIEUH
-0xA848 0xCB74 # HANGUL SYLLABLE SSANGCIEUC-WEO-MIEUM
-0xA849 0xCB75 # HANGUL SYLLABLE SSANGCIEUC-WEO-PIEUP
-0xA84A 0xCB76 # HANGUL SYLLABLE SSANGCIEUC-WEO-PIEUPSIOS
-0xA84B 0xCB77 # HANGUL SYLLABLE SSANGCIEUC-WEO-SIOS
-0xA84C 0xCB7A # HANGUL SYLLABLE SSANGCIEUC-WEO-CIEUC
-0xA84D 0xCB7B # HANGUL SYLLABLE SSANGCIEUC-WEO-CHIEUCH
-0xA84E 0xCB7C # HANGUL SYLLABLE SSANGCIEUC-WEO-KHIEUKH
-0xA84F 0xCB7D # HANGUL SYLLABLE SSANGCIEUC-WEO-THIEUTH
-0xA850 0xCB7E # HANGUL SYLLABLE SSANGCIEUC-WEO-PHIEUPH
-0xA851 0xCB7F # HANGUL SYLLABLE SSANGCIEUC-WEO-HIEUH
-0xA852 0xCB80 # HANGUL SYLLABLE SSANGCIEUC-WE
-0xA853 0xCB81 # HANGUL SYLLABLE SSANGCIEUC-WE-KIYEOK
-0xA854 0xCB82 # HANGUL SYLLABLE SSANGCIEUC-WE-SSANGKIYEOK
-0xA855 0xCB83 # HANGUL SYLLABLE SSANGCIEUC-WE-KIYEOKSIOS
-0xA856 0xCB84 # HANGUL SYLLABLE SSANGCIEUC-WE-NIEUN
-0xA857 0xCB85 # HANGUL SYLLABLE SSANGCIEUC-WE-NIEUNCIEUC
-0xA858 0xCB86 # HANGUL SYLLABLE SSANGCIEUC-WE-NIEUNHIEUH
-0xA859 0xCB87 # HANGUL SYLLABLE SSANGCIEUC-WE-TIKEUT
-0xA85A 0xCB88 # HANGUL SYLLABLE SSANGCIEUC-WE-RIEUL
-0xA861 0xCB89 # HANGUL SYLLABLE SSANGCIEUC-WE-RIEULKIYEOK
-0xA862 0xCB8A # HANGUL SYLLABLE SSANGCIEUC-WE-RIEULMIEUM
-0xA863 0xCB8B # HANGUL SYLLABLE SSANGCIEUC-WE-RIEULPIEUP
-0xA864 0xCB8C # HANGUL SYLLABLE SSANGCIEUC-WE-RIEULSIOS
-0xA865 0xCB8D # HANGUL SYLLABLE SSANGCIEUC-WE-RIEULTHIEUTH
-0xA866 0xCB8E # HANGUL SYLLABLE SSANGCIEUC-WE-RIEULPHIEUPH
-0xA867 0xCB8F # HANGUL SYLLABLE SSANGCIEUC-WE-RIEULHIEUH
-0xA868 0xCB90 # HANGUL SYLLABLE SSANGCIEUC-WE-MIEUM
-0xA869 0xCB91 # HANGUL SYLLABLE SSANGCIEUC-WE-PIEUP
-0xA86A 0xCB92 # HANGUL SYLLABLE SSANGCIEUC-WE-PIEUPSIOS
-0xA86B 0xCB93 # HANGUL SYLLABLE SSANGCIEUC-WE-SIOS
-0xA86C 0xCB94 # HANGUL SYLLABLE SSANGCIEUC-WE-SSANGSIOS
-0xA86D 0xCB95 # HANGUL SYLLABLE SSANGCIEUC-WE-IEUNG
-0xA86E 0xCB96 # HANGUL SYLLABLE SSANGCIEUC-WE-CIEUC
-0xA86F 0xCB97 # HANGUL SYLLABLE SSANGCIEUC-WE-CHIEUCH
-0xA870 0xCB98 # HANGUL SYLLABLE SSANGCIEUC-WE-KHIEUKH
-0xA871 0xCB99 # HANGUL SYLLABLE SSANGCIEUC-WE-THIEUTH
-0xA872 0xCB9A # HANGUL SYLLABLE SSANGCIEUC-WE-PHIEUPH
-0xA873 0xCB9B # HANGUL SYLLABLE SSANGCIEUC-WE-HIEUH
-0xA874 0xCB9D # HANGUL SYLLABLE SSANGCIEUC-WI-KIYEOK
-0xA875 0xCB9E # HANGUL SYLLABLE SSANGCIEUC-WI-SSANGKIYEOK
-0xA876 0xCB9F # HANGUL SYLLABLE SSANGCIEUC-WI-KIYEOKSIOS
-0xA877 0xCBA0 # HANGUL SYLLABLE SSANGCIEUC-WI-NIEUN
-0xA878 0xCBA1 # HANGUL SYLLABLE SSANGCIEUC-WI-NIEUNCIEUC
-0xA879 0xCBA2 # HANGUL SYLLABLE SSANGCIEUC-WI-NIEUNHIEUH
-0xA87A 0xCBA3 # HANGUL SYLLABLE SSANGCIEUC-WI-TIKEUT
-0xA881 0xCBA4 # HANGUL SYLLABLE SSANGCIEUC-WI-RIEUL
-0xA882 0xCBA5 # HANGUL SYLLABLE SSANGCIEUC-WI-RIEULKIYEOK
-0xA883 0xCBA6 # HANGUL SYLLABLE SSANGCIEUC-WI-RIEULMIEUM
-0xA884 0xCBA7 # HANGUL SYLLABLE SSANGCIEUC-WI-RIEULPIEUP
-0xA885 0xCBA8 # HANGUL SYLLABLE SSANGCIEUC-WI-RIEULSIOS
-0xA886 0xCBA9 # HANGUL SYLLABLE SSANGCIEUC-WI-RIEULTHIEUTH
-0xA887 0xCBAA # HANGUL SYLLABLE SSANGCIEUC-WI-RIEULPHIEUPH
-0xA888 0xCBAB # HANGUL SYLLABLE SSANGCIEUC-WI-RIEULHIEUH
-0xA889 0xCBAC # HANGUL SYLLABLE SSANGCIEUC-WI-MIEUM
-0xA88A 0xCBAD # HANGUL SYLLABLE SSANGCIEUC-WI-PIEUP
-0xA88B 0xCBAE # HANGUL SYLLABLE SSANGCIEUC-WI-PIEUPSIOS
-0xA88C 0xCBAF # HANGUL SYLLABLE SSANGCIEUC-WI-SIOS
-0xA88D 0xCBB0 # HANGUL SYLLABLE SSANGCIEUC-WI-SSANGSIOS
-0xA88E 0xCBB1 # HANGUL SYLLABLE SSANGCIEUC-WI-IEUNG
-0xA88F 0xCBB2 # HANGUL SYLLABLE SSANGCIEUC-WI-CIEUC
-0xA890 0xCBB3 # HANGUL SYLLABLE SSANGCIEUC-WI-CHIEUCH
-0xA891 0xCBB4 # HANGUL SYLLABLE SSANGCIEUC-WI-KHIEUKH
-0xA892 0xCBB5 # HANGUL SYLLABLE SSANGCIEUC-WI-THIEUTH
-0xA893 0xCBB6 # HANGUL SYLLABLE SSANGCIEUC-WI-PHIEUPH
-0xA894 0xCBB7 # HANGUL SYLLABLE SSANGCIEUC-WI-HIEUH
-0xA895 0xCBB9 # HANGUL SYLLABLE SSANGCIEUC-YU-KIYEOK
-0xA896 0xCBBA # HANGUL SYLLABLE SSANGCIEUC-YU-SSANGKIYEOK
-0xA897 0xCBBB # HANGUL SYLLABLE SSANGCIEUC-YU-KIYEOKSIOS
-0xA898 0xCBBC # HANGUL SYLLABLE SSANGCIEUC-YU-NIEUN
-0xA899 0xCBBD # HANGUL SYLLABLE SSANGCIEUC-YU-NIEUNCIEUC
-0xA89A 0xCBBE # HANGUL SYLLABLE SSANGCIEUC-YU-NIEUNHIEUH
-0xA89B 0xCBBF # HANGUL SYLLABLE SSANGCIEUC-YU-TIKEUT
-0xA89C 0xCBC0 # HANGUL SYLLABLE SSANGCIEUC-YU-RIEUL
-0xA89D 0xCBC1 # HANGUL SYLLABLE SSANGCIEUC-YU-RIEULKIYEOK
-0xA89E 0xCBC2 # HANGUL SYLLABLE SSANGCIEUC-YU-RIEULMIEUM
-0xA89F 0xCBC3 # HANGUL SYLLABLE SSANGCIEUC-YU-RIEULPIEUP
-0xA8A0 0xCBC4 # HANGUL SYLLABLE SSANGCIEUC-YU-RIEULSIOS
-0xA8A1 0x00C6 # LATIN CAPITAL LIGATURE AE
-0xA8A2 0x00D0 # LATIN CAPITAL LETTER ETH
-0xA8A3 0x00AA # FEMININE ORDINAL INDICATOR
-0xA8A4 0x0126 # LATIN CAPITAL LETTER H WITH STROKE
-0xA8A6 0x0132 # LATIN CAPITAL LIGATURE IJ
-0xA8A8 0x013F # LATIN CAPITAL LETTER L WITH MIDDLE DOT
-0xA8A9 0x0141 # LATIN CAPITAL LETTER L WITH STROKE
-0xA8AA 0x00D8 # LATIN CAPITAL LETTER O WITH STROKE
-0xA8AB 0x0152 # LATIN CAPITAL LIGATURE OE
-0xA8AC 0x00BA # MASCULINE ORDINAL INDICATOR
-0xA8AD 0x00DE # LATIN CAPITAL LETTER THORN
-0xA8AE 0x0166 # LATIN CAPITAL LETTER T WITH STROKE
-0xA8AF 0x014A # LATIN CAPITAL LETTER ENG
-0xA8B1 0x3260 # CIRCLED HANGUL KIYEOK
-0xA8B2 0x3261 # CIRCLED HANGUL NIEUN
-0xA8B3 0x3262 # CIRCLED HANGUL TIKEUT
-0xA8B4 0x3263 # CIRCLED HANGUL RIEUL
-0xA8B5 0x3264 # CIRCLED HANGUL MIEUM
-0xA8B6 0x3265 # CIRCLED HANGUL PIEUP
-0xA8B7 0x3266 # CIRCLED HANGUL SIOS
-0xA8B8 0x3267 # CIRCLED HANGUL IEUNG
-0xA8B9 0x3268 # CIRCLED HANGUL CIEUC
-0xA8BA 0x3269 # CIRCLED HANGUL CHIEUCH
-0xA8BB 0x326A # CIRCLED HANGUL KHIEUKH
-0xA8BC 0x326B # CIRCLED HANGUL THIEUTH
-0xA8BD 0x326C # CIRCLED HANGUL PHIEUPH
-0xA8BE 0x326D # CIRCLED HANGUL HIEUH
-0xA8BF 0x326E # CIRCLED HANGUL KIYEOK A
-0xA8C0 0x326F # CIRCLED HANGUL NIEUN A
-0xA8C1 0x3270 # CIRCLED HANGUL TIKEUT A
-0xA8C2 0x3271 # CIRCLED HANGUL RIEUL A
-0xA8C3 0x3272 # CIRCLED HANGUL MIEUM A
-0xA8C4 0x3273 # CIRCLED HANGUL PIEUP A
-0xA8C5 0x3274 # CIRCLED HANGUL SIOS A
-0xA8C6 0x3275 # CIRCLED HANGUL IEUNG A
-0xA8C7 0x3276 # CIRCLED HANGUL CIEUC A
-0xA8C8 0x3277 # CIRCLED HANGUL CHIEUCH A
-0xA8C9 0x3278 # CIRCLED HANGUL KHIEUKH A
-0xA8CA 0x3279 # CIRCLED HANGUL THIEUTH A
-0xA8CB 0x327A # CIRCLED HANGUL PHIEUPH A
-0xA8CC 0x327B # CIRCLED HANGUL HIEUH A
-0xA8CD 0x24D0 # CIRCLED LATIN SMALL LETTER A
-0xA8CE 0x24D1 # CIRCLED LATIN SMALL LETTER B
-0xA8CF 0x24D2 # CIRCLED LATIN SMALL LETTER C
-0xA8D0 0x24D3 # CIRCLED LATIN SMALL LETTER D
-0xA8D1 0x24D4 # CIRCLED LATIN SMALL LETTER E
-0xA8D2 0x24D5 # CIRCLED LATIN SMALL LETTER F
-0xA8D3 0x24D6 # CIRCLED LATIN SMALL LETTER G
-0xA8D4 0x24D7 # CIRCLED LATIN SMALL LETTER H
-0xA8D5 0x24D8 # CIRCLED LATIN SMALL LETTER I
-0xA8D6 0x24D9 # CIRCLED LATIN SMALL LETTER J
-0xA8D7 0x24DA # CIRCLED LATIN SMALL LETTER K
-0xA8D8 0x24DB # CIRCLED LATIN SMALL LETTER L
-0xA8D9 0x24DC # CIRCLED LATIN SMALL LETTER M
-0xA8DA 0x24DD # CIRCLED LATIN SMALL LETTER N
-0xA8DB 0x24DE # CIRCLED LATIN SMALL LETTER O
-0xA8DC 0x24DF # CIRCLED LATIN SMALL LETTER P
-0xA8DD 0x24E0 # CIRCLED LATIN SMALL LETTER Q
-0xA8DE 0x24E1 # CIRCLED LATIN SMALL LETTER R
-0xA8DF 0x24E2 # CIRCLED LATIN SMALL LETTER S
-0xA8E0 0x24E3 # CIRCLED LATIN SMALL LETTER T
-0xA8E1 0x24E4 # CIRCLED LATIN SMALL LETTER U
-0xA8E2 0x24E5 # CIRCLED LATIN SMALL LETTER V
-0xA8E3 0x24E6 # CIRCLED LATIN SMALL LETTER W
-0xA8E4 0x24E7 # CIRCLED LATIN SMALL LETTER X
-0xA8E5 0x24E8 # CIRCLED LATIN SMALL LETTER Y
-0xA8E6 0x24E9 # CIRCLED LATIN SMALL LETTER Z
-0xA8E7 0x2460 # CIRCLED DIGIT ONE
-0xA8E8 0x2461 # CIRCLED DIGIT TWO
-0xA8E9 0x2462 # CIRCLED DIGIT THREE
-0xA8EA 0x2463 # CIRCLED DIGIT FOUR
-0xA8EB 0x2464 # CIRCLED DIGIT FIVE
-0xA8EC 0x2465 # CIRCLED DIGIT SIX
-0xA8ED 0x2466 # CIRCLED DIGIT SEVEN
-0xA8EE 0x2467 # CIRCLED DIGIT EIGHT
-0xA8EF 0x2468 # CIRCLED DIGIT NINE
-0xA8F0 0x2469 # CIRCLED NUMBER TEN
-0xA8F1 0x246A # CIRCLED NUMBER ELEVEN
-0xA8F2 0x246B # CIRCLED NUMBER TWELVE
-0xA8F3 0x246C # CIRCLED NUMBER THIRTEEN
-0xA8F4 0x246D # CIRCLED NUMBER FOURTEEN
-0xA8F5 0x246E # CIRCLED NUMBER FIFTEEN
-0xA8F6 0x00BD # VULGAR FRACTION ONE HALF
-0xA8F7 0x2153 # VULGAR FRACTION ONE THIRD
-0xA8F8 0x2154 # VULGAR FRACTION TWO THIRDS
-0xA8F9 0x00BC # VULGAR FRACTION ONE QUARTER
-0xA8FA 0x00BE # VULGAR FRACTION THREE QUARTERS
-0xA8FB 0x215B # VULGAR FRACTION ONE EIGHTH
-0xA8FC 0x215C # VULGAR FRACTION THREE EIGHTHS
-0xA8FD 0x215D # VULGAR FRACTION FIVE EIGHTHS
-0xA8FE 0x215E # VULGAR FRACTION SEVEN EIGHTHS
-0xA941 0xCBC5 # HANGUL SYLLABLE SSANGCIEUC-YU-RIEULTHIEUTH
-0xA942 0xCBC6 # HANGUL SYLLABLE SSANGCIEUC-YU-RIEULPHIEUPH
-0xA943 0xCBC7 # HANGUL SYLLABLE SSANGCIEUC-YU-RIEULHIEUH
-0xA944 0xCBC8 # HANGUL SYLLABLE SSANGCIEUC-YU-MIEUM
-0xA945 0xCBC9 # HANGUL SYLLABLE SSANGCIEUC-YU-PIEUP
-0xA946 0xCBCA # HANGUL SYLLABLE SSANGCIEUC-YU-PIEUPSIOS
-0xA947 0xCBCB # HANGUL SYLLABLE SSANGCIEUC-YU-SIOS
-0xA948 0xCBCC # HANGUL SYLLABLE SSANGCIEUC-YU-SSANGSIOS
-0xA949 0xCBCD # HANGUL SYLLABLE SSANGCIEUC-YU-IEUNG
-0xA94A 0xCBCE # HANGUL SYLLABLE SSANGCIEUC-YU-CIEUC
-0xA94B 0xCBCF # HANGUL SYLLABLE SSANGCIEUC-YU-CHIEUCH
-0xA94C 0xCBD0 # HANGUL SYLLABLE SSANGCIEUC-YU-KHIEUKH
-0xA94D 0xCBD1 # HANGUL SYLLABLE SSANGCIEUC-YU-THIEUTH
-0xA94E 0xCBD2 # HANGUL SYLLABLE SSANGCIEUC-YU-PHIEUPH
-0xA94F 0xCBD3 # HANGUL SYLLABLE SSANGCIEUC-YU-HIEUH
-0xA950 0xCBD5 # HANGUL SYLLABLE SSANGCIEUC-EU-KIYEOK
-0xA951 0xCBD6 # HANGUL SYLLABLE SSANGCIEUC-EU-SSANGKIYEOK
-0xA952 0xCBD7 # HANGUL SYLLABLE SSANGCIEUC-EU-KIYEOKSIOS
-0xA953 0xCBD8 # HANGUL SYLLABLE SSANGCIEUC-EU-NIEUN
-0xA954 0xCBD9 # HANGUL SYLLABLE SSANGCIEUC-EU-NIEUNCIEUC
-0xA955 0xCBDA # HANGUL SYLLABLE SSANGCIEUC-EU-NIEUNHIEUH
-0xA956 0xCBDB # HANGUL SYLLABLE SSANGCIEUC-EU-TIKEUT
-0xA957 0xCBDC # HANGUL SYLLABLE SSANGCIEUC-EU-RIEUL
-0xA958 0xCBDD # HANGUL SYLLABLE SSANGCIEUC-EU-RIEULKIYEOK
-0xA959 0xCBDE # HANGUL SYLLABLE SSANGCIEUC-EU-RIEULMIEUM
-0xA95A 0xCBDF # HANGUL SYLLABLE SSANGCIEUC-EU-RIEULPIEUP
-0xA961 0xCBE0 # HANGUL SYLLABLE SSANGCIEUC-EU-RIEULSIOS
-0xA962 0xCBE1 # HANGUL SYLLABLE SSANGCIEUC-EU-RIEULTHIEUTH
-0xA963 0xCBE2 # HANGUL SYLLABLE SSANGCIEUC-EU-RIEULPHIEUPH
-0xA964 0xCBE3 # HANGUL SYLLABLE SSANGCIEUC-EU-RIEULHIEUH
-0xA965 0xCBE5 # HANGUL SYLLABLE SSANGCIEUC-EU-PIEUP
-0xA966 0xCBE6 # HANGUL SYLLABLE SSANGCIEUC-EU-PIEUPSIOS
-0xA967 0xCBE8 # HANGUL SYLLABLE SSANGCIEUC-EU-SSANGSIOS
-0xA968 0xCBEA # HANGUL SYLLABLE SSANGCIEUC-EU-CIEUC
-0xA969 0xCBEB # HANGUL SYLLABLE SSANGCIEUC-EU-CHIEUCH
-0xA96A 0xCBEC # HANGUL SYLLABLE SSANGCIEUC-EU-KHIEUKH
-0xA96B 0xCBED # HANGUL SYLLABLE SSANGCIEUC-EU-THIEUTH
-0xA96C 0xCBEE # HANGUL SYLLABLE SSANGCIEUC-EU-PHIEUPH
-0xA96D 0xCBEF # HANGUL SYLLABLE SSANGCIEUC-EU-HIEUH
-0xA96E 0xCBF0 # HANGUL SYLLABLE SSANGCIEUC-YI
-0xA96F 0xCBF1 # HANGUL SYLLABLE SSANGCIEUC-YI-KIYEOK
-0xA970 0xCBF2 # HANGUL SYLLABLE SSANGCIEUC-YI-SSANGKIYEOK
-0xA971 0xCBF3 # HANGUL SYLLABLE SSANGCIEUC-YI-KIYEOKSIOS
-0xA972 0xCBF4 # HANGUL SYLLABLE SSANGCIEUC-YI-NIEUN
-0xA973 0xCBF5 # HANGUL SYLLABLE SSANGCIEUC-YI-NIEUNCIEUC
-0xA974 0xCBF6 # HANGUL SYLLABLE SSANGCIEUC-YI-NIEUNHIEUH
-0xA975 0xCBF7 # HANGUL SYLLABLE SSANGCIEUC-YI-TIKEUT
-0xA976 0xCBF8 # HANGUL SYLLABLE SSANGCIEUC-YI-RIEUL
-0xA977 0xCBF9 # HANGUL SYLLABLE SSANGCIEUC-YI-RIEULKIYEOK
-0xA978 0xCBFA # HANGUL SYLLABLE SSANGCIEUC-YI-RIEULMIEUM
-0xA979 0xCBFB # HANGUL SYLLABLE SSANGCIEUC-YI-RIEULPIEUP
-0xA97A 0xCBFC # HANGUL SYLLABLE SSANGCIEUC-YI-RIEULSIOS
-0xA981 0xCBFD # HANGUL SYLLABLE SSANGCIEUC-YI-RIEULTHIEUTH
-0xA982 0xCBFE # HANGUL SYLLABLE SSANGCIEUC-YI-RIEULPHIEUPH
-0xA983 0xCBFF # HANGUL SYLLABLE SSANGCIEUC-YI-RIEULHIEUH
-0xA984 0xCC00 # HANGUL SYLLABLE SSANGCIEUC-YI-MIEUM
-0xA985 0xCC01 # HANGUL SYLLABLE SSANGCIEUC-YI-PIEUP
-0xA986 0xCC02 # HANGUL SYLLABLE SSANGCIEUC-YI-PIEUPSIOS
-0xA987 0xCC03 # HANGUL SYLLABLE SSANGCIEUC-YI-SIOS
-0xA988 0xCC04 # HANGUL SYLLABLE SSANGCIEUC-YI-SSANGSIOS
-0xA989 0xCC05 # HANGUL SYLLABLE SSANGCIEUC-YI-IEUNG
-0xA98A 0xCC06 # HANGUL SYLLABLE SSANGCIEUC-YI-CIEUC
-0xA98B 0xCC07 # HANGUL SYLLABLE SSANGCIEUC-YI-CHIEUCH
-0xA98C 0xCC08 # HANGUL SYLLABLE SSANGCIEUC-YI-KHIEUKH
-0xA98D 0xCC09 # HANGUL SYLLABLE SSANGCIEUC-YI-THIEUTH
-0xA98E 0xCC0A # HANGUL SYLLABLE SSANGCIEUC-YI-PHIEUPH
-0xA98F 0xCC0B # HANGUL SYLLABLE SSANGCIEUC-YI-HIEUH
-0xA990 0xCC0E # HANGUL SYLLABLE SSANGCIEUC-I-SSANGKIYEOK
-0xA991 0xCC0F # HANGUL SYLLABLE SSANGCIEUC-I-KIYEOKSIOS
-0xA992 0xCC11 # HANGUL SYLLABLE SSANGCIEUC-I-NIEUNCIEUC
-0xA993 0xCC12 # HANGUL SYLLABLE SSANGCIEUC-I-NIEUNHIEUH
-0xA994 0xCC13 # HANGUL SYLLABLE SSANGCIEUC-I-TIKEUT
-0xA995 0xCC15 # HANGUL SYLLABLE SSANGCIEUC-I-RIEULKIYEOK
-0xA996 0xCC16 # HANGUL SYLLABLE SSANGCIEUC-I-RIEULMIEUM
-0xA997 0xCC17 # HANGUL SYLLABLE SSANGCIEUC-I-RIEULPIEUP
-0xA998 0xCC18 # HANGUL SYLLABLE SSANGCIEUC-I-RIEULSIOS
-0xA999 0xCC19 # HANGUL SYLLABLE SSANGCIEUC-I-RIEULTHIEUTH
-0xA99A 0xCC1A # HANGUL SYLLABLE SSANGCIEUC-I-RIEULPHIEUPH
-0xA99B 0xCC1B # HANGUL SYLLABLE SSANGCIEUC-I-RIEULHIEUH
-0xA99C 0xCC1E # HANGUL SYLLABLE SSANGCIEUC-I-PIEUPSIOS
-0xA99D 0xCC1F # HANGUL SYLLABLE SSANGCIEUC-I-SIOS
-0xA99E 0xCC20 # HANGUL SYLLABLE SSANGCIEUC-I-SSANGSIOS
-0xA99F 0xCC23 # HANGUL SYLLABLE SSANGCIEUC-I-CHIEUCH
-0xA9A0 0xCC24 # HANGUL SYLLABLE SSANGCIEUC-I-KHIEUKH
-0xA9A1 0x00E6 # LATIN SMALL LIGATURE AE
-0xA9A2 0x0111 # LATIN SMALL LETTER D WITH STROKE
-0xA9A3 0x00F0 # LATIN SMALL LETTER ETH
-0xA9A4 0x0127 # LATIN SMALL LETTER H WITH STROKE
-0xA9A5 0x0131 # LATIN SMALL LETTER DOTLESS I
-0xA9A6 0x0133 # LATIN SMALL LIGATURE IJ
-0xA9A7 0x0138 # LATIN SMALL LETTER KRA
-0xA9A8 0x0140 # LATIN SMALL LETTER L WITH MIDDLE DOT
-0xA9A9 0x0142 # LATIN SMALL LETTER L WITH STROKE
-0xA9AA 0x00F8 # LATIN SMALL LETTER O WITH STROKE
-0xA9AB 0x0153 # LATIN SMALL LIGATURE OE
-0xA9AC 0x00DF # LATIN SMALL LETTER SHARP S
-0xA9AD 0x00FE # LATIN SMALL LETTER THORN
-0xA9AE 0x0167 # LATIN SMALL LETTER T WITH STROKE
-0xA9AF 0x014B # LATIN SMALL LETTER ENG
-0xA9B0 0x0149 # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
-0xA9B1 0x3200 # PARENTHESIZED HANGUL KIYEOK
-0xA9B2 0x3201 # PARENTHESIZED HANGUL NIEUN
-0xA9B3 0x3202 # PARENTHESIZED HANGUL TIKEUT
-0xA9B4 0x3203 # PARENTHESIZED HANGUL RIEUL
-0xA9B5 0x3204 # PARENTHESIZED HANGUL MIEUM
-0xA9B6 0x3205 # PARENTHESIZED HANGUL PIEUP
-0xA9B7 0x3206 # PARENTHESIZED HANGUL SIOS
-0xA9B8 0x3207 # PARENTHESIZED HANGUL IEUNG
-0xA9B9 0x3208 # PARENTHESIZED HANGUL CIEUC
-0xA9BA 0x3209 # PARENTHESIZED HANGUL CHIEUCH
-0xA9BB 0x320A # PARENTHESIZED HANGUL KHIEUKH
-0xA9BC 0x320B # PARENTHESIZED HANGUL THIEUTH
-0xA9BD 0x320C # PARENTHESIZED HANGUL PHIEUPH
-0xA9BE 0x320D # PARENTHESIZED HANGUL HIEUH
-0xA9BF 0x320E # PARENTHESIZED HANGUL KIYEOK A
-0xA9C0 0x320F # PARENTHESIZED HANGUL NIEUN A
-0xA9C1 0x3210 # PARENTHESIZED HANGUL TIKEUT A
-0xA9C2 0x3211 # PARENTHESIZED HANGUL RIEUL A
-0xA9C3 0x3212 # PARENTHESIZED HANGUL MIEUM A
-0xA9C4 0x3213 # PARENTHESIZED HANGUL PIEUP A
-0xA9C5 0x3214 # PARENTHESIZED HANGUL SIOS A
-0xA9C6 0x3215 # PARENTHESIZED HANGUL IEUNG A
-0xA9C7 0x3216 # PARENTHESIZED HANGUL CIEUC A
-0xA9C8 0x3217 # PARENTHESIZED HANGUL CHIEUCH A
-0xA9C9 0x3218 # PARENTHESIZED HANGUL KHIEUKH A
-0xA9CA 0x3219 # PARENTHESIZED HANGUL THIEUTH A
-0xA9CB 0x321A # PARENTHESIZED HANGUL PHIEUPH A
-0xA9CC 0x321B # PARENTHESIZED HANGUL HIEUH A
-0xA9CD 0x249C # PARENTHESIZED LATIN SMALL LETTER A
-0xA9CE 0x249D # PARENTHESIZED LATIN SMALL LETTER B
-0xA9CF 0x249E # PARENTHESIZED LATIN SMALL LETTER C
-0xA9D0 0x249F # PARENTHESIZED LATIN SMALL LETTER D
-0xA9D1 0x24A0 # PARENTHESIZED LATIN SMALL LETTER E
-0xA9D2 0x24A1 # PARENTHESIZED LATIN SMALL LETTER F
-0xA9D3 0x24A2 # PARENTHESIZED LATIN SMALL LETTER G
-0xA9D4 0x24A3 # PARENTHESIZED LATIN SMALL LETTER H
-0xA9D5 0x24A4 # PARENTHESIZED LATIN SMALL LETTER I
-0xA9D6 0x24A5 # PARENTHESIZED LATIN SMALL LETTER J
-0xA9D7 0x24A6 # PARENTHESIZED LATIN SMALL LETTER K
-0xA9D8 0x24A7 # PARENTHESIZED LATIN SMALL LETTER L
-0xA9D9 0x24A8 # PARENTHESIZED LATIN SMALL LETTER M
-0xA9DA 0x24A9 # PARENTHESIZED LATIN SMALL LETTER N
-0xA9DB 0x24AA # PARENTHESIZED LATIN SMALL LETTER O
-0xA9DC 0x24AB # PARENTHESIZED LATIN SMALL LETTER P
-0xA9DD 0x24AC # PARENTHESIZED LATIN SMALL LETTER Q
-0xA9DE 0x24AD # PARENTHESIZED LATIN SMALL LETTER R
-0xA9DF 0x24AE # PARENTHESIZED LATIN SMALL LETTER S
-0xA9E0 0x24AF # PARENTHESIZED LATIN SMALL LETTER T
-0xA9E1 0x24B0 # PARENTHESIZED LATIN SMALL LETTER U
-0xA9E2 0x24B1 # PARENTHESIZED LATIN SMALL LETTER V
-0xA9E3 0x24B2 # PARENTHESIZED LATIN SMALL LETTER W
-0xA9E4 0x24B3 # PARENTHESIZED LATIN SMALL LETTER X
-0xA9E5 0x24B4 # PARENTHESIZED LATIN SMALL LETTER Y
-0xA9E6 0x24B5 # PARENTHESIZED LATIN SMALL LETTER Z
-0xA9E7 0x2474 # PARENTHESIZED DIGIT ONE
-0xA9E8 0x2475 # PARENTHESIZED DIGIT TWO
-0xA9E9 0x2476 # PARENTHESIZED DIGIT THREE
-0xA9EA 0x2477 # PARENTHESIZED DIGIT FOUR
-0xA9EB 0x2478 # PARENTHESIZED DIGIT FIVE
-0xA9EC 0x2479 # PARENTHESIZED DIGIT SIX
-0xA9ED 0x247A # PARENTHESIZED DIGIT SEVEN
-0xA9EE 0x247B # PARENTHESIZED DIGIT EIGHT
-0xA9EF 0x247C # PARENTHESIZED DIGIT NINE
-0xA9F0 0x247D # PARENTHESIZED NUMBER TEN
-0xA9F1 0x247E # PARENTHESIZED NUMBER ELEVEN
-0xA9F2 0x247F # PARENTHESIZED NUMBER TWELVE
-0xA9F3 0x2480 # PARENTHESIZED NUMBER THIRTEEN
-0xA9F4 0x2481 # PARENTHESIZED NUMBER FOURTEEN
-0xA9F5 0x2482 # PARENTHESIZED NUMBER FIFTEEN
-0xA9F6 0x00B9 # SUPERSCRIPT ONE
-0xA9F7 0x00B2 # SUPERSCRIPT TWO
-0xA9F8 0x00B3 # SUPERSCRIPT THREE
-0xA9F9 0x2074 # SUPERSCRIPT FOUR
-0xA9FA 0x207F # SUPERSCRIPT LATIN SMALL LETTER N
-0xA9FB 0x2081 # SUBSCRIPT ONE
-0xA9FC 0x2082 # SUBSCRIPT TWO
-0xA9FD 0x2083 # SUBSCRIPT THREE
-0xA9FE 0x2084 # SUBSCRIPT FOUR
-0xAA41 0xCC25 # HANGUL SYLLABLE SSANGCIEUC-I-THIEUTH
-0xAA42 0xCC26 # HANGUL SYLLABLE SSANGCIEUC-I-PHIEUPH
-0xAA43 0xCC2A # HANGUL SYLLABLE CHIEUCH-A-SSANGKIYEOK
-0xAA44 0xCC2B # HANGUL SYLLABLE CHIEUCH-A-KIYEOKSIOS
-0xAA45 0xCC2D # HANGUL SYLLABLE CHIEUCH-A-NIEUNCIEUC
-0xAA46 0xCC2F # HANGUL SYLLABLE CHIEUCH-A-TIKEUT
-0xAA47 0xCC31 # HANGUL SYLLABLE CHIEUCH-A-RIEULKIYEOK
-0xAA48 0xCC32 # HANGUL SYLLABLE CHIEUCH-A-RIEULMIEUM
-0xAA49 0xCC33 # HANGUL SYLLABLE CHIEUCH-A-RIEULPIEUP
-0xAA4A 0xCC34 # HANGUL SYLLABLE CHIEUCH-A-RIEULSIOS
-0xAA4B 0xCC35 # HANGUL SYLLABLE CHIEUCH-A-RIEULTHIEUTH
-0xAA4C 0xCC36 # HANGUL SYLLABLE CHIEUCH-A-RIEULPHIEUPH
-0xAA4D 0xCC37 # HANGUL SYLLABLE CHIEUCH-A-RIEULHIEUH
-0xAA4E 0xCC3A # HANGUL SYLLABLE CHIEUCH-A-PIEUPSIOS
-0xAA4F 0xCC3F # HANGUL SYLLABLE CHIEUCH-A-CHIEUCH
-0xAA50 0xCC40 # HANGUL SYLLABLE CHIEUCH-A-KHIEUKH
-0xAA51 0xCC41 # HANGUL SYLLABLE CHIEUCH-A-THIEUTH
-0xAA52 0xCC42 # HANGUL SYLLABLE CHIEUCH-A-PHIEUPH
-0xAA53 0xCC43 # HANGUL SYLLABLE CHIEUCH-A-HIEUH
-0xAA54 0xCC46 # HANGUL SYLLABLE CHIEUCH-AE-SSANGKIYEOK
-0xAA55 0xCC47 # HANGUL SYLLABLE CHIEUCH-AE-KIYEOKSIOS
-0xAA56 0xCC49 # HANGUL SYLLABLE CHIEUCH-AE-NIEUNCIEUC
-0xAA57 0xCC4A # HANGUL SYLLABLE CHIEUCH-AE-NIEUNHIEUH
-0xAA58 0xCC4B # HANGUL SYLLABLE CHIEUCH-AE-TIKEUT
-0xAA59 0xCC4D # HANGUL SYLLABLE CHIEUCH-AE-RIEULKIYEOK
-0xAA5A 0xCC4E # HANGUL SYLLABLE CHIEUCH-AE-RIEULMIEUM
-0xAA61 0xCC4F # HANGUL SYLLABLE CHIEUCH-AE-RIEULPIEUP
-0xAA62 0xCC50 # HANGUL SYLLABLE CHIEUCH-AE-RIEULSIOS
-0xAA63 0xCC51 # HANGUL SYLLABLE CHIEUCH-AE-RIEULTHIEUTH
-0xAA64 0xCC52 # HANGUL SYLLABLE CHIEUCH-AE-RIEULPHIEUPH
-0xAA65 0xCC53 # HANGUL SYLLABLE CHIEUCH-AE-RIEULHIEUH
-0xAA66 0xCC56 # HANGUL SYLLABLE CHIEUCH-AE-PIEUPSIOS
-0xAA67 0xCC5A # HANGUL SYLLABLE CHIEUCH-AE-CIEUC
-0xAA68 0xCC5B # HANGUL SYLLABLE CHIEUCH-AE-CHIEUCH
-0xAA69 0xCC5C # HANGUL SYLLABLE CHIEUCH-AE-KHIEUKH
-0xAA6A 0xCC5D # HANGUL SYLLABLE CHIEUCH-AE-THIEUTH
-0xAA6B 0xCC5E # HANGUL SYLLABLE CHIEUCH-AE-PHIEUPH
-0xAA6C 0xCC5F # HANGUL SYLLABLE CHIEUCH-AE-HIEUH
-0xAA6D 0xCC61 # HANGUL SYLLABLE CHIEUCH-YA-KIYEOK
-0xAA6E 0xCC62 # HANGUL SYLLABLE CHIEUCH-YA-SSANGKIYEOK
-0xAA6F 0xCC63 # HANGUL SYLLABLE CHIEUCH-YA-KIYEOKSIOS
-0xAA70 0xCC65 # HANGUL SYLLABLE CHIEUCH-YA-NIEUNCIEUC
-0xAA71 0xCC67 # HANGUL SYLLABLE CHIEUCH-YA-TIKEUT
-0xAA72 0xCC69 # HANGUL SYLLABLE CHIEUCH-YA-RIEULKIYEOK
-0xAA73 0xCC6A # HANGUL SYLLABLE CHIEUCH-YA-RIEULMIEUM
-0xAA74 0xCC6B # HANGUL SYLLABLE CHIEUCH-YA-RIEULPIEUP
-0xAA75 0xCC6C # HANGUL SYLLABLE CHIEUCH-YA-RIEULSIOS
-0xAA76 0xCC6D # HANGUL SYLLABLE CHIEUCH-YA-RIEULTHIEUTH
-0xAA77 0xCC6E # HANGUL SYLLABLE CHIEUCH-YA-RIEULPHIEUPH
-0xAA78 0xCC6F # HANGUL SYLLABLE CHIEUCH-YA-RIEULHIEUH
-0xAA79 0xCC71 # HANGUL SYLLABLE CHIEUCH-YA-PIEUP
-0xAA7A 0xCC72 # HANGUL SYLLABLE CHIEUCH-YA-PIEUPSIOS
-0xAA81 0xCC73 # HANGUL SYLLABLE CHIEUCH-YA-SIOS
-0xAA82 0xCC74 # HANGUL SYLLABLE CHIEUCH-YA-SSANGSIOS
-0xAA83 0xCC76 # HANGUL SYLLABLE CHIEUCH-YA-CIEUC
-0xAA84 0xCC77 # HANGUL SYLLABLE CHIEUCH-YA-CHIEUCH
-0xAA85 0xCC78 # HANGUL SYLLABLE CHIEUCH-YA-KHIEUKH
-0xAA86 0xCC79 # HANGUL SYLLABLE CHIEUCH-YA-THIEUTH
-0xAA87 0xCC7A # HANGUL SYLLABLE CHIEUCH-YA-PHIEUPH
-0xAA88 0xCC7B # HANGUL SYLLABLE CHIEUCH-YA-HIEUH
-0xAA89 0xCC7C # HANGUL SYLLABLE CHIEUCH-YAE
-0xAA8A 0xCC7D # HANGUL SYLLABLE CHIEUCH-YAE-KIYEOK
-0xAA8B 0xCC7E # HANGUL SYLLABLE CHIEUCH-YAE-SSANGKIYEOK
-0xAA8C 0xCC7F # HANGUL SYLLABLE CHIEUCH-YAE-KIYEOKSIOS
-0xAA8D 0xCC80 # HANGUL SYLLABLE CHIEUCH-YAE-NIEUN
-0xAA8E 0xCC81 # HANGUL SYLLABLE CHIEUCH-YAE-NIEUNCIEUC
-0xAA8F 0xCC82 # HANGUL SYLLABLE CHIEUCH-YAE-NIEUNHIEUH
-0xAA90 0xCC83 # HANGUL SYLLABLE CHIEUCH-YAE-TIKEUT
-0xAA91 0xCC84 # HANGUL SYLLABLE CHIEUCH-YAE-RIEUL
-0xAA92 0xCC85 # HANGUL SYLLABLE CHIEUCH-YAE-RIEULKIYEOK
-0xAA93 0xCC86 # HANGUL SYLLABLE CHIEUCH-YAE-RIEULMIEUM
-0xAA94 0xCC87 # HANGUL SYLLABLE CHIEUCH-YAE-RIEULPIEUP
-0xAA95 0xCC88 # HANGUL SYLLABLE CHIEUCH-YAE-RIEULSIOS
-0xAA96 0xCC89 # HANGUL SYLLABLE CHIEUCH-YAE-RIEULTHIEUTH
-0xAA97 0xCC8A # HANGUL SYLLABLE CHIEUCH-YAE-RIEULPHIEUPH
-0xAA98 0xCC8B # HANGUL SYLLABLE CHIEUCH-YAE-RIEULHIEUH
-0xAA99 0xCC8C # HANGUL SYLLABLE CHIEUCH-YAE-MIEUM
-0xAA9A 0xCC8D # HANGUL SYLLABLE CHIEUCH-YAE-PIEUP
-0xAA9B 0xCC8E # HANGUL SYLLABLE CHIEUCH-YAE-PIEUPSIOS
-0xAA9C 0xCC8F # HANGUL SYLLABLE CHIEUCH-YAE-SIOS
-0xAA9D 0xCC90 # HANGUL SYLLABLE CHIEUCH-YAE-SSANGSIOS
-0xAA9E 0xCC91 # HANGUL SYLLABLE CHIEUCH-YAE-IEUNG
-0xAA9F 0xCC92 # HANGUL SYLLABLE CHIEUCH-YAE-CIEUC
-0xAAA0 0xCC93 # HANGUL SYLLABLE CHIEUCH-YAE-CHIEUCH
-0xAAA1 0x3041 # HIRAGANA LETTER SMALL A
-0xAAA2 0x3042 # HIRAGANA LETTER A
-0xAAA3 0x3043 # HIRAGANA LETTER SMALL I
-0xAAA4 0x3044 # HIRAGANA LETTER I
-0xAAA5 0x3045 # HIRAGANA LETTER SMALL U
-0xAAA6 0x3046 # HIRAGANA LETTER U
-0xAAA7 0x3047 # HIRAGANA LETTER SMALL E
-0xAAA8 0x3048 # HIRAGANA LETTER E
-0xAAA9 0x3049 # HIRAGANA LETTER SMALL O
-0xAAAA 0x304A # HIRAGANA LETTER O
-0xAAAB 0x304B # HIRAGANA LETTER KA
-0xAAAC 0x304C # HIRAGANA LETTER GA
-0xAAAD 0x304D # HIRAGANA LETTER KI
-0xAAAE 0x304E # HIRAGANA LETTER GI
-0xAAAF 0x304F # HIRAGANA LETTER KU
-0xAAB0 0x3050 # HIRAGANA LETTER GU
-0xAAB1 0x3051 # HIRAGANA LETTER KE
-0xAAB2 0x3052 # HIRAGANA LETTER GE
-0xAAB3 0x3053 # HIRAGANA LETTER KO
-0xAAB4 0x3054 # HIRAGANA LETTER GO
-0xAAB5 0x3055 # HIRAGANA LETTER SA
-0xAAB6 0x3056 # HIRAGANA LETTER ZA
-0xAAB7 0x3057 # HIRAGANA LETTER SI
-0xAAB8 0x3058 # HIRAGANA LETTER ZI
-0xAAB9 0x3059 # HIRAGANA LETTER SU
-0xAABA 0x305A # HIRAGANA LETTER ZU
-0xAABB 0x305B # HIRAGANA LETTER SE
-0xAABC 0x305C # HIRAGANA LETTER ZE
-0xAABD 0x305D # HIRAGANA LETTER SO
-0xAABE 0x305E # HIRAGANA LETTER ZO
-0xAABF 0x305F # HIRAGANA LETTER TA
-0xAAC0 0x3060 # HIRAGANA LETTER DA
-0xAAC1 0x3061 # HIRAGANA LETTER TI
-0xAAC2 0x3062 # HIRAGANA LETTER DI
-0xAAC3 0x3063 # HIRAGANA LETTER SMALL TU
-0xAAC4 0x3064 # HIRAGANA LETTER TU
-0xAAC5 0x3065 # HIRAGANA LETTER DU
-0xAAC6 0x3066 # HIRAGANA LETTER TE
-0xAAC7 0x3067 # HIRAGANA LETTER DE
-0xAAC8 0x3068 # HIRAGANA LETTER TO
-0xAAC9 0x3069 # HIRAGANA LETTER DO
-0xAACA 0x306A # HIRAGANA LETTER NA
-0xAACB 0x306B # HIRAGANA LETTER NI
-0xAACC 0x306C # HIRAGANA LETTER NU
-0xAACD 0x306D # HIRAGANA LETTER NE
-0xAACE 0x306E # HIRAGANA LETTER NO
-0xAACF 0x306F # HIRAGANA LETTER HA
-0xAAD0 0x3070 # HIRAGANA LETTER BA
-0xAAD1 0x3071 # HIRAGANA LETTER PA
-0xAAD2 0x3072 # HIRAGANA LETTER HI
-0xAAD3 0x3073 # HIRAGANA LETTER BI
-0xAAD4 0x3074 # HIRAGANA LETTER PI
-0xAAD5 0x3075 # HIRAGANA LETTER HU
-0xAAD6 0x3076 # HIRAGANA LETTER BU
-0xAAD7 0x3077 # HIRAGANA LETTER PU
-0xAAD8 0x3078 # HIRAGANA LETTER HE
-0xAAD9 0x3079 # HIRAGANA LETTER BE
-0xAADA 0x307A # HIRAGANA LETTER PE
-0xAADB 0x307B # HIRAGANA LETTER HO
-0xAADC 0x307C # HIRAGANA LETTER BO
-0xAADD 0x307D # HIRAGANA LETTER PO
-0xAADE 0x307E # HIRAGANA LETTER MA
-0xAADF 0x307F # HIRAGANA LETTER MI
-0xAAE0 0x3080 # HIRAGANA LETTER MU
-0xAAE1 0x3081 # HIRAGANA LETTER ME
-0xAAE2 0x3082 # HIRAGANA LETTER MO
-0xAAE3 0x3083 # HIRAGANA LETTER SMALL YA
-0xAAE4 0x3084 # HIRAGANA LETTER YA
-0xAAE5 0x3085 # HIRAGANA LETTER SMALL YU
-0xAAE6 0x3086 # HIRAGANA LETTER YU
-0xAAE7 0x3087 # HIRAGANA LETTER SMALL YO
-0xAAE8 0x3088 # HIRAGANA LETTER YO
-0xAAE9 0x3089 # HIRAGANA LETTER RA
-0xAAEA 0x308A # HIRAGANA LETTER RI
-0xAAEB 0x308B # HIRAGANA LETTER RU
-0xAAEC 0x308C # HIRAGANA LETTER RE
-0xAAED 0x308D # HIRAGANA LETTER RO
-0xAAEE 0x308E # HIRAGANA LETTER SMALL WA
-0xAAEF 0x308F # HIRAGANA LETTER WA
-0xAAF0 0x3090 # HIRAGANA LETTER WI
-0xAAF1 0x3091 # HIRAGANA LETTER WE
-0xAAF2 0x3092 # HIRAGANA LETTER WO
-0xAAF3 0x3093 # HIRAGANA LETTER N
-0xAB41 0xCC94 # HANGUL SYLLABLE CHIEUCH-YAE-KHIEUKH
-0xAB42 0xCC95 # HANGUL SYLLABLE CHIEUCH-YAE-THIEUTH
-0xAB43 0xCC96 # HANGUL SYLLABLE CHIEUCH-YAE-PHIEUPH
-0xAB44 0xCC97 # HANGUL SYLLABLE CHIEUCH-YAE-HIEUH
-0xAB45 0xCC9A # HANGUL SYLLABLE CHIEUCH-EO-SSANGKIYEOK
-0xAB46 0xCC9B # HANGUL SYLLABLE CHIEUCH-EO-KIYEOKSIOS
-0xAB47 0xCC9D # HANGUL SYLLABLE CHIEUCH-EO-NIEUNCIEUC
-0xAB48 0xCC9E # HANGUL SYLLABLE CHIEUCH-EO-NIEUNHIEUH
-0xAB49 0xCC9F # HANGUL SYLLABLE CHIEUCH-EO-TIKEUT
-0xAB4A 0xCCA1 # HANGUL SYLLABLE CHIEUCH-EO-RIEULKIYEOK
-0xAB4B 0xCCA2 # HANGUL SYLLABLE CHIEUCH-EO-RIEULMIEUM
-0xAB4C 0xCCA3 # HANGUL SYLLABLE CHIEUCH-EO-RIEULPIEUP
-0xAB4D 0xCCA4 # HANGUL SYLLABLE CHIEUCH-EO-RIEULSIOS
-0xAB4E 0xCCA5 # HANGUL SYLLABLE CHIEUCH-EO-RIEULTHIEUTH
-0xAB4F 0xCCA6 # HANGUL SYLLABLE CHIEUCH-EO-RIEULPHIEUPH
-0xAB50 0xCCA7 # HANGUL SYLLABLE CHIEUCH-EO-RIEULHIEUH
-0xAB51 0xCCAA # HANGUL SYLLABLE CHIEUCH-EO-PIEUPSIOS
-0xAB52 0xCCAE # HANGUL SYLLABLE CHIEUCH-EO-CIEUC
-0xAB53 0xCCAF # HANGUL SYLLABLE CHIEUCH-EO-CHIEUCH
-0xAB54 0xCCB0 # HANGUL SYLLABLE CHIEUCH-EO-KHIEUKH
-0xAB55 0xCCB1 # HANGUL SYLLABLE CHIEUCH-EO-THIEUTH
-0xAB56 0xCCB2 # HANGUL SYLLABLE CHIEUCH-EO-PHIEUPH
-0xAB57 0xCCB3 # HANGUL SYLLABLE CHIEUCH-EO-HIEUH
-0xAB58 0xCCB6 # HANGUL SYLLABLE CHIEUCH-E-SSANGKIYEOK
-0xAB59 0xCCB7 # HANGUL SYLLABLE CHIEUCH-E-KIYEOKSIOS
-0xAB5A 0xCCB9 # HANGUL SYLLABLE CHIEUCH-E-NIEUNCIEUC
-0xAB61 0xCCBA # HANGUL SYLLABLE CHIEUCH-E-NIEUNHIEUH
-0xAB62 0xCCBB # HANGUL SYLLABLE CHIEUCH-E-TIKEUT
-0xAB63 0xCCBD # HANGUL SYLLABLE CHIEUCH-E-RIEULKIYEOK
-0xAB64 0xCCBE # HANGUL SYLLABLE CHIEUCH-E-RIEULMIEUM
-0xAB65 0xCCBF # HANGUL SYLLABLE CHIEUCH-E-RIEULPIEUP
-0xAB66 0xCCC0 # HANGUL SYLLABLE CHIEUCH-E-RIEULSIOS
-0xAB67 0xCCC1 # HANGUL SYLLABLE CHIEUCH-E-RIEULTHIEUTH
-0xAB68 0xCCC2 # HANGUL SYLLABLE CHIEUCH-E-RIEULPHIEUPH
-0xAB69 0xCCC3 # HANGUL SYLLABLE CHIEUCH-E-RIEULHIEUH
-0xAB6A 0xCCC6 # HANGUL SYLLABLE CHIEUCH-E-PIEUPSIOS
-0xAB6B 0xCCC8 # HANGUL SYLLABLE CHIEUCH-E-SSANGSIOS
-0xAB6C 0xCCCA # HANGUL SYLLABLE CHIEUCH-E-CIEUC
-0xAB6D 0xCCCB # HANGUL SYLLABLE CHIEUCH-E-CHIEUCH
-0xAB6E 0xCCCC # HANGUL SYLLABLE CHIEUCH-E-KHIEUKH
-0xAB6F 0xCCCD # HANGUL SYLLABLE CHIEUCH-E-THIEUTH
-0xAB70 0xCCCE # HANGUL SYLLABLE CHIEUCH-E-PHIEUPH
-0xAB71 0xCCCF # HANGUL SYLLABLE CHIEUCH-E-HIEUH
-0xAB72 0xCCD1 # HANGUL SYLLABLE CHIEUCH-YEO-KIYEOK
-0xAB73 0xCCD2 # HANGUL SYLLABLE CHIEUCH-YEO-SSANGKIYEOK
-0xAB74 0xCCD3 # HANGUL SYLLABLE CHIEUCH-YEO-KIYEOKSIOS
-0xAB75 0xCCD5 # HANGUL SYLLABLE CHIEUCH-YEO-NIEUNCIEUC
-0xAB76 0xCCD6 # HANGUL SYLLABLE CHIEUCH-YEO-NIEUNHIEUH
-0xAB77 0xCCD7 # HANGUL SYLLABLE CHIEUCH-YEO-TIKEUT
-0xAB78 0xCCD8 # HANGUL SYLLABLE CHIEUCH-YEO-RIEUL
-0xAB79 0xCCD9 # HANGUL SYLLABLE CHIEUCH-YEO-RIEULKIYEOK
-0xAB7A 0xCCDA # HANGUL SYLLABLE CHIEUCH-YEO-RIEULMIEUM
-0xAB81 0xCCDB # HANGUL SYLLABLE CHIEUCH-YEO-RIEULPIEUP
-0xAB82 0xCCDC # HANGUL SYLLABLE CHIEUCH-YEO-RIEULSIOS
-0xAB83 0xCCDD # HANGUL SYLLABLE CHIEUCH-YEO-RIEULTHIEUTH
-0xAB84 0xCCDE # HANGUL SYLLABLE CHIEUCH-YEO-RIEULPHIEUPH
-0xAB85 0xCCDF # HANGUL SYLLABLE CHIEUCH-YEO-RIEULHIEUH
-0xAB86 0xCCE0 # HANGUL SYLLABLE CHIEUCH-YEO-MIEUM
-0xAB87 0xCCE1 # HANGUL SYLLABLE CHIEUCH-YEO-PIEUP
-0xAB88 0xCCE2 # HANGUL SYLLABLE CHIEUCH-YEO-PIEUPSIOS
-0xAB89 0xCCE3 # HANGUL SYLLABLE CHIEUCH-YEO-SIOS
-0xAB8A 0xCCE5 # HANGUL SYLLABLE CHIEUCH-YEO-IEUNG
-0xAB8B 0xCCE6 # HANGUL SYLLABLE CHIEUCH-YEO-CIEUC
-0xAB8C 0xCCE7 # HANGUL SYLLABLE CHIEUCH-YEO-CHIEUCH
-0xAB8D 0xCCE8 # HANGUL SYLLABLE CHIEUCH-YEO-KHIEUKH
-0xAB8E 0xCCE9 # HANGUL SYLLABLE CHIEUCH-YEO-THIEUTH
-0xAB8F 0xCCEA # HANGUL SYLLABLE CHIEUCH-YEO-PHIEUPH
-0xAB90 0xCCEB # HANGUL SYLLABLE CHIEUCH-YEO-HIEUH
-0xAB91 0xCCED # HANGUL SYLLABLE CHIEUCH-YE-KIYEOK
-0xAB92 0xCCEE # HANGUL SYLLABLE CHIEUCH-YE-SSANGKIYEOK
-0xAB93 0xCCEF # HANGUL SYLLABLE CHIEUCH-YE-KIYEOKSIOS
-0xAB94 0xCCF1 # HANGUL SYLLABLE CHIEUCH-YE-NIEUNCIEUC
-0xAB95 0xCCF2 # HANGUL SYLLABLE CHIEUCH-YE-NIEUNHIEUH
-0xAB96 0xCCF3 # HANGUL SYLLABLE CHIEUCH-YE-TIKEUT
-0xAB97 0xCCF4 # HANGUL SYLLABLE CHIEUCH-YE-RIEUL
-0xAB98 0xCCF5 # HANGUL SYLLABLE CHIEUCH-YE-RIEULKIYEOK
-0xAB99 0xCCF6 # HANGUL SYLLABLE CHIEUCH-YE-RIEULMIEUM
-0xAB9A 0xCCF7 # HANGUL SYLLABLE CHIEUCH-YE-RIEULPIEUP
-0xAB9B 0xCCF8 # HANGUL SYLLABLE CHIEUCH-YE-RIEULSIOS
-0xAB9C 0xCCF9 # HANGUL SYLLABLE CHIEUCH-YE-RIEULTHIEUTH
-0xAB9D 0xCCFA # HANGUL SYLLABLE CHIEUCH-YE-RIEULPHIEUPH
-0xAB9E 0xCCFB # HANGUL SYLLABLE CHIEUCH-YE-RIEULHIEUH
-0xAB9F 0xCCFC # HANGUL SYLLABLE CHIEUCH-YE-MIEUM
-0xABA0 0xCCFD # HANGUL SYLLABLE CHIEUCH-YE-PIEUP
-0xABA1 0x30A1 # KATAKANA LETTER SMALL A
-0xABA2 0x30A2 # KATAKANA LETTER A
-0xABA3 0x30A3 # KATAKANA LETTER SMALL I
-0xABA4 0x30A4 # KATAKANA LETTER I
-0xABA5 0x30A5 # KATAKANA LETTER SMALL U
-0xABA6 0x30A6 # KATAKANA LETTER U
-0xABA7 0x30A7 # KATAKANA LETTER SMALL E
-0xABA8 0x30A8 # KATAKANA LETTER E
-0xABA9 0x30A9 # KATAKANA LETTER SMALL O
-0xABAA 0x30AA # KATAKANA LETTER O
-0xABAB 0x30AB # KATAKANA LETTER KA
-0xABAC 0x30AC # KATAKANA LETTER GA
-0xABAD 0x30AD # KATAKANA LETTER KI
-0xABAE 0x30AE # KATAKANA LETTER GI
-0xABAF 0x30AF # KATAKANA LETTER KU
-0xABB0 0x30B0 # KATAKANA LETTER GU
-0xABB1 0x30B1 # KATAKANA LETTER KE
-0xABB2 0x30B2 # KATAKANA LETTER GE
-0xABB3 0x30B3 # KATAKANA LETTER KO
-0xABB4 0x30B4 # KATAKANA LETTER GO
-0xABB5 0x30B5 # KATAKANA LETTER SA
-0xABB6 0x30B6 # KATAKANA LETTER ZA
-0xABB7 0x30B7 # KATAKANA LETTER SI
-0xABB8 0x30B8 # KATAKANA LETTER ZI
-0xABB9 0x30B9 # KATAKANA LETTER SU
-0xABBA 0x30BA # KATAKANA LETTER ZU
-0xABBB 0x30BB # KATAKANA LETTER SE
-0xABBC 0x30BC # KATAKANA LETTER ZE
-0xABBD 0x30BD # KATAKANA LETTER SO
-0xABBE 0x30BE # KATAKANA LETTER ZO
-0xABBF 0x30BF # KATAKANA LETTER TA
-0xABC0 0x30C0 # KATAKANA LETTER DA
-0xABC1 0x30C1 # KATAKANA LETTER TI
-0xABC2 0x30C2 # KATAKANA LETTER DI
-0xABC3 0x30C3 # KATAKANA LETTER SMALL TU
-0xABC4 0x30C4 # KATAKANA LETTER TU
-0xABC5 0x30C5 # KATAKANA LETTER DU
-0xABC6 0x30C6 # KATAKANA LETTER TE
-0xABC7 0x30C7 # KATAKANA LETTER DE
-0xABC8 0x30C8 # KATAKANA LETTER TO
-0xABC9 0x30C9 # KATAKANA LETTER DO
-0xABCA 0x30CA # KATAKANA LETTER NA
-0xABCB 0x30CB # KATAKANA LETTER NI
-0xABCC 0x30CC # KATAKANA LETTER NU
-0xABCD 0x30CD # KATAKANA LETTER NE
-0xABCE 0x30CE # KATAKANA LETTER NO
-0xABCF 0x30CF # KATAKANA LETTER HA
-0xABD0 0x30D0 # KATAKANA LETTER BA
-0xABD1 0x30D1 # KATAKANA LETTER PA
-0xABD2 0x30D2 # KATAKANA LETTER HI
-0xABD3 0x30D3 # KATAKANA LETTER BI
-0xABD4 0x30D4 # KATAKANA LETTER PI
-0xABD5 0x30D5 # KATAKANA LETTER HU
-0xABD6 0x30D6 # KATAKANA LETTER BU
-0xABD7 0x30D7 # KATAKANA LETTER PU
-0xABD8 0x30D8 # KATAKANA LETTER HE
-0xABD9 0x30D9 # KATAKANA LETTER BE
-0xABDA 0x30DA # KATAKANA LETTER PE
-0xABDB 0x30DB # KATAKANA LETTER HO
-0xABDC 0x30DC # KATAKANA LETTER BO
-0xABDD 0x30DD # KATAKANA LETTER PO
-0xABDE 0x30DE # KATAKANA LETTER MA
-0xABDF 0x30DF # KATAKANA LETTER MI
-0xABE0 0x30E0 # KATAKANA LETTER MU
-0xABE1 0x30E1 # KATAKANA LETTER ME
-0xABE2 0x30E2 # KATAKANA LETTER MO
-0xABE3 0x30E3 # KATAKANA LETTER SMALL YA
-0xABE4 0x30E4 # KATAKANA LETTER YA
-0xABE5 0x30E5 # KATAKANA LETTER SMALL YU
-0xABE6 0x30E6 # KATAKANA LETTER YU
-0xABE7 0x30E7 # KATAKANA LETTER SMALL YO
-0xABE8 0x30E8 # KATAKANA LETTER YO
-0xABE9 0x30E9 # KATAKANA LETTER RA
-0xABEA 0x30EA # KATAKANA LETTER RI
-0xABEB 0x30EB # KATAKANA LETTER RU
-0xABEC 0x30EC # KATAKANA LETTER RE
-0xABED 0x30ED # KATAKANA LETTER RO
-0xABEE 0x30EE # KATAKANA LETTER SMALL WA
-0xABEF 0x30EF # KATAKANA LETTER WA
-0xABF0 0x30F0 # KATAKANA LETTER WI
-0xABF1 0x30F1 # KATAKANA LETTER WE
-0xABF2 0x30F2 # KATAKANA LETTER WO
-0xABF3 0x30F3 # KATAKANA LETTER N
-0xABF4 0x30F4 # KATAKANA LETTER VU
-0xABF5 0x30F5 # KATAKANA LETTER SMALL KA
-0xABF6 0x30F6 # KATAKANA LETTER SMALL KE
-0xAC41 0xCCFE # HANGUL SYLLABLE CHIEUCH-YE-PIEUPSIOS
-0xAC42 0xCCFF # HANGUL SYLLABLE CHIEUCH-YE-SIOS
-0xAC43 0xCD00 # HANGUL SYLLABLE CHIEUCH-YE-SSANGSIOS
-0xAC44 0xCD02 # HANGUL SYLLABLE CHIEUCH-YE-CIEUC
-0xAC45 0xCD03 # HANGUL SYLLABLE CHIEUCH-YE-CHIEUCH
-0xAC46 0xCD04 # HANGUL SYLLABLE CHIEUCH-YE-KHIEUKH
-0xAC47 0xCD05 # HANGUL SYLLABLE CHIEUCH-YE-THIEUTH
-0xAC48 0xCD06 # HANGUL SYLLABLE CHIEUCH-YE-PHIEUPH
-0xAC49 0xCD07 # HANGUL SYLLABLE CHIEUCH-YE-HIEUH
-0xAC4A 0xCD0A # HANGUL SYLLABLE CHIEUCH-O-SSANGKIYEOK
-0xAC4B 0xCD0B # HANGUL SYLLABLE CHIEUCH-O-KIYEOKSIOS
-0xAC4C 0xCD0D # HANGUL SYLLABLE CHIEUCH-O-NIEUNCIEUC
-0xAC4D 0xCD0E # HANGUL SYLLABLE CHIEUCH-O-NIEUNHIEUH
-0xAC4E 0xCD0F # HANGUL SYLLABLE CHIEUCH-O-TIKEUT
-0xAC4F 0xCD11 # HANGUL SYLLABLE CHIEUCH-O-RIEULKIYEOK
-0xAC50 0xCD12 # HANGUL SYLLABLE CHIEUCH-O-RIEULMIEUM
-0xAC51 0xCD13 # HANGUL SYLLABLE CHIEUCH-O-RIEULPIEUP
-0xAC52 0xCD14 # HANGUL SYLLABLE CHIEUCH-O-RIEULSIOS
-0xAC53 0xCD15 # HANGUL SYLLABLE CHIEUCH-O-RIEULTHIEUTH
-0xAC54 0xCD16 # HANGUL SYLLABLE CHIEUCH-O-RIEULPHIEUPH
-0xAC55 0xCD17 # HANGUL SYLLABLE CHIEUCH-O-RIEULHIEUH
-0xAC56 0xCD1A # HANGUL SYLLABLE CHIEUCH-O-PIEUPSIOS
-0xAC57 0xCD1C # HANGUL SYLLABLE CHIEUCH-O-SSANGSIOS
-0xAC58 0xCD1E # HANGUL SYLLABLE CHIEUCH-O-CIEUC
-0xAC59 0xCD1F # HANGUL SYLLABLE CHIEUCH-O-CHIEUCH
-0xAC5A 0xCD20 # HANGUL SYLLABLE CHIEUCH-O-KHIEUKH
-0xAC61 0xCD21 # HANGUL SYLLABLE CHIEUCH-O-THIEUTH
-0xAC62 0xCD22 # HANGUL SYLLABLE CHIEUCH-O-PHIEUPH
-0xAC63 0xCD23 # HANGUL SYLLABLE CHIEUCH-O-HIEUH
-0xAC64 0xCD25 # HANGUL SYLLABLE CHIEUCH-WA-KIYEOK
-0xAC65 0xCD26 # HANGUL SYLLABLE CHIEUCH-WA-SSANGKIYEOK
-0xAC66 0xCD27 # HANGUL SYLLABLE CHIEUCH-WA-KIYEOKSIOS
-0xAC67 0xCD29 # HANGUL SYLLABLE CHIEUCH-WA-NIEUNCIEUC
-0xAC68 0xCD2A # HANGUL SYLLABLE CHIEUCH-WA-NIEUNHIEUH
-0xAC69 0xCD2B # HANGUL SYLLABLE CHIEUCH-WA-TIKEUT
-0xAC6A 0xCD2D # HANGUL SYLLABLE CHIEUCH-WA-RIEULKIYEOK
-0xAC6B 0xCD2E # HANGUL SYLLABLE CHIEUCH-WA-RIEULMIEUM
-0xAC6C 0xCD2F # HANGUL SYLLABLE CHIEUCH-WA-RIEULPIEUP
-0xAC6D 0xCD30 # HANGUL SYLLABLE CHIEUCH-WA-RIEULSIOS
-0xAC6E 0xCD31 # HANGUL SYLLABLE CHIEUCH-WA-RIEULTHIEUTH
-0xAC6F 0xCD32 # HANGUL SYLLABLE CHIEUCH-WA-RIEULPHIEUPH
-0xAC70 0xCD33 # HANGUL SYLLABLE CHIEUCH-WA-RIEULHIEUH
-0xAC71 0xCD34 # HANGUL SYLLABLE CHIEUCH-WA-MIEUM
-0xAC72 0xCD35 # HANGUL SYLLABLE CHIEUCH-WA-PIEUP
-0xAC73 0xCD36 # HANGUL SYLLABLE CHIEUCH-WA-PIEUPSIOS
-0xAC74 0xCD37 # HANGUL SYLLABLE CHIEUCH-WA-SIOS
-0xAC75 0xCD38 # HANGUL SYLLABLE CHIEUCH-WA-SSANGSIOS
-0xAC76 0xCD3A # HANGUL SYLLABLE CHIEUCH-WA-CIEUC
-0xAC77 0xCD3B # HANGUL SYLLABLE CHIEUCH-WA-CHIEUCH
-0xAC78 0xCD3C # HANGUL SYLLABLE CHIEUCH-WA-KHIEUKH
-0xAC79 0xCD3D # HANGUL SYLLABLE CHIEUCH-WA-THIEUTH
-0xAC7A 0xCD3E # HANGUL SYLLABLE CHIEUCH-WA-PHIEUPH
-0xAC81 0xCD3F # HANGUL SYLLABLE CHIEUCH-WA-HIEUH
-0xAC82 0xCD40 # HANGUL SYLLABLE CHIEUCH-WAE
-0xAC83 0xCD41 # HANGUL SYLLABLE CHIEUCH-WAE-KIYEOK
-0xAC84 0xCD42 # HANGUL SYLLABLE CHIEUCH-WAE-SSANGKIYEOK
-0xAC85 0xCD43 # HANGUL SYLLABLE CHIEUCH-WAE-KIYEOKSIOS
-0xAC86 0xCD44 # HANGUL SYLLABLE CHIEUCH-WAE-NIEUN
-0xAC87 0xCD45 # HANGUL SYLLABLE CHIEUCH-WAE-NIEUNCIEUC
-0xAC88 0xCD46 # HANGUL SYLLABLE CHIEUCH-WAE-NIEUNHIEUH
-0xAC89 0xCD47 # HANGUL SYLLABLE CHIEUCH-WAE-TIKEUT
-0xAC8A 0xCD48 # HANGUL SYLLABLE CHIEUCH-WAE-RIEUL
-0xAC8B 0xCD49 # HANGUL SYLLABLE CHIEUCH-WAE-RIEULKIYEOK
-0xAC8C 0xCD4A # HANGUL SYLLABLE CHIEUCH-WAE-RIEULMIEUM
-0xAC8D 0xCD4B # HANGUL SYLLABLE CHIEUCH-WAE-RIEULPIEUP
-0xAC8E 0xCD4C # HANGUL SYLLABLE CHIEUCH-WAE-RIEULSIOS
-0xAC8F 0xCD4D # HANGUL SYLLABLE CHIEUCH-WAE-RIEULTHIEUTH
-0xAC90 0xCD4E # HANGUL SYLLABLE CHIEUCH-WAE-RIEULPHIEUPH
-0xAC91 0xCD4F # HANGUL SYLLABLE CHIEUCH-WAE-RIEULHIEUH
-0xAC92 0xCD50 # HANGUL SYLLABLE CHIEUCH-WAE-MIEUM
-0xAC93 0xCD51 # HANGUL SYLLABLE CHIEUCH-WAE-PIEUP
-0xAC94 0xCD52 # HANGUL SYLLABLE CHIEUCH-WAE-PIEUPSIOS
-0xAC95 0xCD53 # HANGUL SYLLABLE CHIEUCH-WAE-SIOS
-0xAC96 0xCD54 # HANGUL SYLLABLE CHIEUCH-WAE-SSANGSIOS
-0xAC97 0xCD55 # HANGUL SYLLABLE CHIEUCH-WAE-IEUNG
-0xAC98 0xCD56 # HANGUL SYLLABLE CHIEUCH-WAE-CIEUC
-0xAC99 0xCD57 # HANGUL SYLLABLE CHIEUCH-WAE-CHIEUCH
-0xAC9A 0xCD58 # HANGUL SYLLABLE CHIEUCH-WAE-KHIEUKH
-0xAC9B 0xCD59 # HANGUL SYLLABLE CHIEUCH-WAE-THIEUTH
-0xAC9C 0xCD5A # HANGUL SYLLABLE CHIEUCH-WAE-PHIEUPH
-0xAC9D 0xCD5B # HANGUL SYLLABLE CHIEUCH-WAE-HIEUH
-0xAC9E 0xCD5D # HANGUL SYLLABLE CHIEUCH-OE-KIYEOK
-0xAC9F 0xCD5E # HANGUL SYLLABLE CHIEUCH-OE-SSANGKIYEOK
-0xACA0 0xCD5F # HANGUL SYLLABLE CHIEUCH-OE-KIYEOKSIOS
-0xACA1 0x0410 # CYRILLIC CAPITAL LETTER A
-0xACA2 0x0411 # CYRILLIC CAPITAL LETTER BE
-0xACA3 0x0412 # CYRILLIC CAPITAL LETTER VE
-0xACA4 0x0413 # CYRILLIC CAPITAL LETTER GHE
-0xACA5 0x0414 # CYRILLIC CAPITAL LETTER DE
-0xACA6 0x0415 # CYRILLIC CAPITAL LETTER IE
-0xACA7 0x0401 # CYRILLIC CAPITAL LETTER IO
-0xACA8 0x0416 # CYRILLIC CAPITAL LETTER ZHE
-0xACA9 0x0417 # CYRILLIC CAPITAL LETTER ZE
-0xACAA 0x0418 # CYRILLIC CAPITAL LETTER I
-0xACAB 0x0419 # CYRILLIC CAPITAL LETTER SHORT I
-0xACAC 0x041A # CYRILLIC CAPITAL LETTER KA
-0xACAD 0x041B # CYRILLIC CAPITAL LETTER EL
-0xACAE 0x041C # CYRILLIC CAPITAL LETTER EM
-0xACAF 0x041D # CYRILLIC CAPITAL LETTER EN
-0xACB0 0x041E # CYRILLIC CAPITAL LETTER O
-0xACB1 0x041F # CYRILLIC CAPITAL LETTER PE
-0xACB2 0x0420 # CYRILLIC CAPITAL LETTER ER
-0xACB3 0x0421 # CYRILLIC CAPITAL LETTER ES
-0xACB4 0x0422 # CYRILLIC CAPITAL LETTER TE
-0xACB5 0x0423 # CYRILLIC CAPITAL LETTER U
-0xACB6 0x0424 # CYRILLIC CAPITAL LETTER EF
-0xACB7 0x0425 # CYRILLIC CAPITAL LETTER HA
-0xACB8 0x0426 # CYRILLIC CAPITAL LETTER TSE
-0xACB9 0x0427 # CYRILLIC CAPITAL LETTER CHE
-0xACBA 0x0428 # CYRILLIC CAPITAL LETTER SHA
-0xACBB 0x0429 # CYRILLIC CAPITAL LETTER SHCHA
-0xACBC 0x042A # CYRILLIC CAPITAL LETTER HARD SIGN
-0xACBD 0x042B # CYRILLIC CAPITAL LETTER YERU
-0xACBE 0x042C # CYRILLIC CAPITAL LETTER SOFT SIGN
-0xACBF 0x042D # CYRILLIC CAPITAL LETTER E
-0xACC0 0x042E # CYRILLIC CAPITAL LETTER YU
-0xACC1 0x042F # CYRILLIC CAPITAL LETTER YA
-0xACD1 0x0430 # CYRILLIC SMALL LETTER A
-0xACD2 0x0431 # CYRILLIC SMALL LETTER BE
-0xACD3 0x0432 # CYRILLIC SMALL LETTER VE
-0xACD4 0x0433 # CYRILLIC SMALL LETTER GHE
-0xACD5 0x0434 # CYRILLIC SMALL LETTER DE
-0xACD6 0x0435 # CYRILLIC SMALL LETTER IE
-0xACD7 0x0451 # CYRILLIC SMALL LETTER IO
-0xACD8 0x0436 # CYRILLIC SMALL LETTER ZHE
-0xACD9 0x0437 # CYRILLIC SMALL LETTER ZE
-0xACDA 0x0438 # CYRILLIC SMALL LETTER I
-0xACDB 0x0439 # CYRILLIC SMALL LETTER SHORT I
-0xACDC 0x043A # CYRILLIC SMALL LETTER KA
-0xACDD 0x043B # CYRILLIC SMALL LETTER EL
-0xACDE 0x043C # CYRILLIC SMALL LETTER EM
-0xACDF 0x043D # CYRILLIC SMALL LETTER EN
-0xACE0 0x043E # CYRILLIC SMALL LETTER O
-0xACE1 0x043F # CYRILLIC SMALL LETTER PE
-0xACE2 0x0440 # CYRILLIC SMALL LETTER ER
-0xACE3 0x0441 # CYRILLIC SMALL LETTER ES
-0xACE4 0x0442 # CYRILLIC SMALL LETTER TE
-0xACE5 0x0443 # CYRILLIC SMALL LETTER U
-0xACE6 0x0444 # CYRILLIC SMALL LETTER EF
-0xACE7 0x0445 # CYRILLIC SMALL LETTER HA
-0xACE8 0x0446 # CYRILLIC SMALL LETTER TSE
-0xACE9 0x0447 # CYRILLIC SMALL LETTER CHE
-0xACEA 0x0448 # CYRILLIC SMALL LETTER SHA
-0xACEB 0x0449 # CYRILLIC SMALL LETTER SHCHA
-0xACEC 0x044A # CYRILLIC SMALL LETTER HARD SIGN
-0xACED 0x044B # CYRILLIC SMALL LETTER YERU
-0xACEE 0x044C # CYRILLIC SMALL LETTER SOFT SIGN
-0xACEF 0x044D # CYRILLIC SMALL LETTER E
-0xACF0 0x044E # CYRILLIC SMALL LETTER YU
-0xACF1 0x044F # CYRILLIC SMALL LETTER YA
-0xAD41 0xCD61 # HANGUL SYLLABLE CHIEUCH-OE-NIEUNCIEUC
-0xAD42 0xCD62 # HANGUL SYLLABLE CHIEUCH-OE-NIEUNHIEUH
-0xAD43 0xCD63 # HANGUL SYLLABLE CHIEUCH-OE-TIKEUT
-0xAD44 0xCD65 # HANGUL SYLLABLE CHIEUCH-OE-RIEULKIYEOK
-0xAD45 0xCD66 # HANGUL SYLLABLE CHIEUCH-OE-RIEULMIEUM
-0xAD46 0xCD67 # HANGUL SYLLABLE CHIEUCH-OE-RIEULPIEUP
-0xAD47 0xCD68 # HANGUL SYLLABLE CHIEUCH-OE-RIEULSIOS
-0xAD48 0xCD69 # HANGUL SYLLABLE CHIEUCH-OE-RIEULTHIEUTH
-0xAD49 0xCD6A # HANGUL SYLLABLE CHIEUCH-OE-RIEULPHIEUPH
-0xAD4A 0xCD6B # HANGUL SYLLABLE CHIEUCH-OE-RIEULHIEUH
-0xAD4B 0xCD6E # HANGUL SYLLABLE CHIEUCH-OE-PIEUPSIOS
-0xAD4C 0xCD70 # HANGUL SYLLABLE CHIEUCH-OE-SSANGSIOS
-0xAD4D 0xCD72 # HANGUL SYLLABLE CHIEUCH-OE-CIEUC
-0xAD4E 0xCD73 # HANGUL SYLLABLE CHIEUCH-OE-CHIEUCH
-0xAD4F 0xCD74 # HANGUL SYLLABLE CHIEUCH-OE-KHIEUKH
-0xAD50 0xCD75 # HANGUL SYLLABLE CHIEUCH-OE-THIEUTH
-0xAD51 0xCD76 # HANGUL SYLLABLE CHIEUCH-OE-PHIEUPH
-0xAD52 0xCD77 # HANGUL SYLLABLE CHIEUCH-OE-HIEUH
-0xAD53 0xCD79 # HANGUL SYLLABLE CHIEUCH-YO-KIYEOK
-0xAD54 0xCD7A # HANGUL SYLLABLE CHIEUCH-YO-SSANGKIYEOK
-0xAD55 0xCD7B # HANGUL SYLLABLE CHIEUCH-YO-KIYEOKSIOS
-0xAD56 0xCD7C # HANGUL SYLLABLE CHIEUCH-YO-NIEUN
-0xAD57 0xCD7D # HANGUL SYLLABLE CHIEUCH-YO-NIEUNCIEUC
-0xAD58 0xCD7E # HANGUL SYLLABLE CHIEUCH-YO-NIEUNHIEUH
-0xAD59 0xCD7F # HANGUL SYLLABLE CHIEUCH-YO-TIKEUT
-0xAD5A 0xCD80 # HANGUL SYLLABLE CHIEUCH-YO-RIEUL
-0xAD61 0xCD81 # HANGUL SYLLABLE CHIEUCH-YO-RIEULKIYEOK
-0xAD62 0xCD82 # HANGUL SYLLABLE CHIEUCH-YO-RIEULMIEUM
-0xAD63 0xCD83 # HANGUL SYLLABLE CHIEUCH-YO-RIEULPIEUP
-0xAD64 0xCD84 # HANGUL SYLLABLE CHIEUCH-YO-RIEULSIOS
-0xAD65 0xCD85 # HANGUL SYLLABLE CHIEUCH-YO-RIEULTHIEUTH
-0xAD66 0xCD86 # HANGUL SYLLABLE CHIEUCH-YO-RIEULPHIEUPH
-0xAD67 0xCD87 # HANGUL SYLLABLE CHIEUCH-YO-RIEULHIEUH
-0xAD68 0xCD89 # HANGUL SYLLABLE CHIEUCH-YO-PIEUP
-0xAD69 0xCD8A # HANGUL SYLLABLE CHIEUCH-YO-PIEUPSIOS
-0xAD6A 0xCD8B # HANGUL SYLLABLE CHIEUCH-YO-SIOS
-0xAD6B 0xCD8C # HANGUL SYLLABLE CHIEUCH-YO-SSANGSIOS
-0xAD6C 0xCD8D # HANGUL SYLLABLE CHIEUCH-YO-IEUNG
-0xAD6D 0xCD8E # HANGUL SYLLABLE CHIEUCH-YO-CIEUC
-0xAD6E 0xCD8F # HANGUL SYLLABLE CHIEUCH-YO-CHIEUCH
-0xAD6F 0xCD90 # HANGUL SYLLABLE CHIEUCH-YO-KHIEUKH
-0xAD70 0xCD91 # HANGUL SYLLABLE CHIEUCH-YO-THIEUTH
-0xAD71 0xCD92 # HANGUL SYLLABLE CHIEUCH-YO-PHIEUPH
-0xAD72 0xCD93 # HANGUL SYLLABLE CHIEUCH-YO-HIEUH
-0xAD73 0xCD96 # HANGUL SYLLABLE CHIEUCH-U-SSANGKIYEOK
-0xAD74 0xCD97 # HANGUL SYLLABLE CHIEUCH-U-KIYEOKSIOS
-0xAD75 0xCD99 # HANGUL SYLLABLE CHIEUCH-U-NIEUNCIEUC
-0xAD76 0xCD9A # HANGUL SYLLABLE CHIEUCH-U-NIEUNHIEUH
-0xAD77 0xCD9B # HANGUL SYLLABLE CHIEUCH-U-TIKEUT
-0xAD78 0xCD9D # HANGUL SYLLABLE CHIEUCH-U-RIEULKIYEOK
-0xAD79 0xCD9E # HANGUL SYLLABLE CHIEUCH-U-RIEULMIEUM
-0xAD7A 0xCD9F # HANGUL SYLLABLE CHIEUCH-U-RIEULPIEUP
-0xAD81 0xCDA0 # HANGUL SYLLABLE CHIEUCH-U-RIEULSIOS
-0xAD82 0xCDA1 # HANGUL SYLLABLE CHIEUCH-U-RIEULTHIEUTH
-0xAD83 0xCDA2 # HANGUL SYLLABLE CHIEUCH-U-RIEULPHIEUPH
-0xAD84 0xCDA3 # HANGUL SYLLABLE CHIEUCH-U-RIEULHIEUH
-0xAD85 0xCDA6 # HANGUL SYLLABLE CHIEUCH-U-PIEUPSIOS
-0xAD86 0xCDA8 # HANGUL SYLLABLE CHIEUCH-U-SSANGSIOS
-0xAD87 0xCDAA # HANGUL SYLLABLE CHIEUCH-U-CIEUC
-0xAD88 0xCDAB # HANGUL SYLLABLE CHIEUCH-U-CHIEUCH
-0xAD89 0xCDAC # HANGUL SYLLABLE CHIEUCH-U-KHIEUKH
-0xAD8A 0xCDAD # HANGUL SYLLABLE CHIEUCH-U-THIEUTH
-0xAD8B 0xCDAE # HANGUL SYLLABLE CHIEUCH-U-PHIEUPH
-0xAD8C 0xCDAF # HANGUL SYLLABLE CHIEUCH-U-HIEUH
-0xAD8D 0xCDB1 # HANGUL SYLLABLE CHIEUCH-WEO-KIYEOK
-0xAD8E 0xCDB2 # HANGUL SYLLABLE CHIEUCH-WEO-SSANGKIYEOK
-0xAD8F 0xCDB3 # HANGUL SYLLABLE CHIEUCH-WEO-KIYEOKSIOS
-0xAD90 0xCDB4 # HANGUL SYLLABLE CHIEUCH-WEO-NIEUN
-0xAD91 0xCDB5 # HANGUL SYLLABLE CHIEUCH-WEO-NIEUNCIEUC
-0xAD92 0xCDB6 # HANGUL SYLLABLE CHIEUCH-WEO-NIEUNHIEUH
-0xAD93 0xCDB7 # HANGUL SYLLABLE CHIEUCH-WEO-TIKEUT
-0xAD94 0xCDB8 # HANGUL SYLLABLE CHIEUCH-WEO-RIEUL
-0xAD95 0xCDB9 # HANGUL SYLLABLE CHIEUCH-WEO-RIEULKIYEOK
-0xAD96 0xCDBA # HANGUL SYLLABLE CHIEUCH-WEO-RIEULMIEUM
-0xAD97 0xCDBB # HANGUL SYLLABLE CHIEUCH-WEO-RIEULPIEUP
-0xAD98 0xCDBC # HANGUL SYLLABLE CHIEUCH-WEO-RIEULSIOS
-0xAD99 0xCDBD # HANGUL SYLLABLE CHIEUCH-WEO-RIEULTHIEUTH
-0xAD9A 0xCDBE # HANGUL SYLLABLE CHIEUCH-WEO-RIEULPHIEUPH
-0xAD9B 0xCDBF # HANGUL SYLLABLE CHIEUCH-WEO-RIEULHIEUH
-0xAD9C 0xCDC0 # HANGUL SYLLABLE CHIEUCH-WEO-MIEUM
-0xAD9D 0xCDC1 # HANGUL SYLLABLE CHIEUCH-WEO-PIEUP
-0xAD9E 0xCDC2 # HANGUL SYLLABLE CHIEUCH-WEO-PIEUPSIOS
-0xAD9F 0xCDC3 # HANGUL SYLLABLE CHIEUCH-WEO-SIOS
-0xADA0 0xCDC5 # HANGUL SYLLABLE CHIEUCH-WEO-IEUNG
-0xAE41 0xCDC6 # HANGUL SYLLABLE CHIEUCH-WEO-CIEUC
-0xAE42 0xCDC7 # HANGUL SYLLABLE CHIEUCH-WEO-CHIEUCH
-0xAE43 0xCDC8 # HANGUL SYLLABLE CHIEUCH-WEO-KHIEUKH
-0xAE44 0xCDC9 # HANGUL SYLLABLE CHIEUCH-WEO-THIEUTH
-0xAE45 0xCDCA # HANGUL SYLLABLE CHIEUCH-WEO-PHIEUPH
-0xAE46 0xCDCB # HANGUL SYLLABLE CHIEUCH-WEO-HIEUH
-0xAE47 0xCDCD # HANGUL SYLLABLE CHIEUCH-WE-KIYEOK
-0xAE48 0xCDCE # HANGUL SYLLABLE CHIEUCH-WE-SSANGKIYEOK
-0xAE49 0xCDCF # HANGUL SYLLABLE CHIEUCH-WE-KIYEOKSIOS
-0xAE4A 0xCDD1 # HANGUL SYLLABLE CHIEUCH-WE-NIEUNCIEUC
-0xAE4B 0xCDD2 # HANGUL SYLLABLE CHIEUCH-WE-NIEUNHIEUH
-0xAE4C 0xCDD3 # HANGUL SYLLABLE CHIEUCH-WE-TIKEUT
-0xAE4D 0xCDD4 # HANGUL SYLLABLE CHIEUCH-WE-RIEUL
-0xAE4E 0xCDD5 # HANGUL SYLLABLE CHIEUCH-WE-RIEULKIYEOK
-0xAE4F 0xCDD6 # HANGUL SYLLABLE CHIEUCH-WE-RIEULMIEUM
-0xAE50 0xCDD7 # HANGUL SYLLABLE CHIEUCH-WE-RIEULPIEUP
-0xAE51 0xCDD8 # HANGUL SYLLABLE CHIEUCH-WE-RIEULSIOS
-0xAE52 0xCDD9 # HANGUL SYLLABLE CHIEUCH-WE-RIEULTHIEUTH
-0xAE53 0xCDDA # HANGUL SYLLABLE CHIEUCH-WE-RIEULPHIEUPH
-0xAE54 0xCDDB # HANGUL SYLLABLE CHIEUCH-WE-RIEULHIEUH
-0xAE55 0xCDDC # HANGUL SYLLABLE CHIEUCH-WE-MIEUM
-0xAE56 0xCDDD # HANGUL SYLLABLE CHIEUCH-WE-PIEUP
-0xAE57 0xCDDE # HANGUL SYLLABLE CHIEUCH-WE-PIEUPSIOS
-0xAE58 0xCDDF # HANGUL SYLLABLE CHIEUCH-WE-SIOS
-0xAE59 0xCDE0 # HANGUL SYLLABLE CHIEUCH-WE-SSANGSIOS
-0xAE5A 0xCDE1 # HANGUL SYLLABLE CHIEUCH-WE-IEUNG
-0xAE61 0xCDE2 # HANGUL SYLLABLE CHIEUCH-WE-CIEUC
-0xAE62 0xCDE3 # HANGUL SYLLABLE CHIEUCH-WE-CHIEUCH
-0xAE63 0xCDE4 # HANGUL SYLLABLE CHIEUCH-WE-KHIEUKH
-0xAE64 0xCDE5 # HANGUL SYLLABLE CHIEUCH-WE-THIEUTH
-0xAE65 0xCDE6 # HANGUL SYLLABLE CHIEUCH-WE-PHIEUPH
-0xAE66 0xCDE7 # HANGUL SYLLABLE CHIEUCH-WE-HIEUH
-0xAE67 0xCDE9 # HANGUL SYLLABLE CHIEUCH-WI-KIYEOK
-0xAE68 0xCDEA # HANGUL SYLLABLE CHIEUCH-WI-SSANGKIYEOK
-0xAE69 0xCDEB # HANGUL SYLLABLE CHIEUCH-WI-KIYEOKSIOS
-0xAE6A 0xCDED # HANGUL SYLLABLE CHIEUCH-WI-NIEUNCIEUC
-0xAE6B 0xCDEE # HANGUL SYLLABLE CHIEUCH-WI-NIEUNHIEUH
-0xAE6C 0xCDEF # HANGUL SYLLABLE CHIEUCH-WI-TIKEUT
-0xAE6D 0xCDF1 # HANGUL SYLLABLE CHIEUCH-WI-RIEULKIYEOK
-0xAE6E 0xCDF2 # HANGUL SYLLABLE CHIEUCH-WI-RIEULMIEUM
-0xAE6F 0xCDF3 # HANGUL SYLLABLE CHIEUCH-WI-RIEULPIEUP
-0xAE70 0xCDF4 # HANGUL SYLLABLE CHIEUCH-WI-RIEULSIOS
-0xAE71 0xCDF5 # HANGUL SYLLABLE CHIEUCH-WI-RIEULTHIEUTH
-0xAE72 0xCDF6 # HANGUL SYLLABLE CHIEUCH-WI-RIEULPHIEUPH
-0xAE73 0xCDF7 # HANGUL SYLLABLE CHIEUCH-WI-RIEULHIEUH
-0xAE74 0xCDFA # HANGUL SYLLABLE CHIEUCH-WI-PIEUPSIOS
-0xAE75 0xCDFC # HANGUL SYLLABLE CHIEUCH-WI-SSANGSIOS
-0xAE76 0xCDFE # HANGUL SYLLABLE CHIEUCH-WI-CIEUC
-0xAE77 0xCDFF # HANGUL SYLLABLE CHIEUCH-WI-CHIEUCH
-0xAE78 0xCE00 # HANGUL SYLLABLE CHIEUCH-WI-KHIEUKH
-0xAE79 0xCE01 # HANGUL SYLLABLE CHIEUCH-WI-THIEUTH
-0xAE7A 0xCE02 # HANGUL SYLLABLE CHIEUCH-WI-PHIEUPH
-0xAE81 0xCE03 # HANGUL SYLLABLE CHIEUCH-WI-HIEUH
-0xAE82 0xCE05 # HANGUL SYLLABLE CHIEUCH-YU-KIYEOK
-0xAE83 0xCE06 # HANGUL SYLLABLE CHIEUCH-YU-SSANGKIYEOK
-0xAE84 0xCE07 # HANGUL SYLLABLE CHIEUCH-YU-KIYEOKSIOS
-0xAE85 0xCE09 # HANGUL SYLLABLE CHIEUCH-YU-NIEUNCIEUC
-0xAE86 0xCE0A # HANGUL SYLLABLE CHIEUCH-YU-NIEUNHIEUH
-0xAE87 0xCE0B # HANGUL SYLLABLE CHIEUCH-YU-TIKEUT
-0xAE88 0xCE0D # HANGUL SYLLABLE CHIEUCH-YU-RIEULKIYEOK
-0xAE89 0xCE0E # HANGUL SYLLABLE CHIEUCH-YU-RIEULMIEUM
-0xAE8A 0xCE0F # HANGUL SYLLABLE CHIEUCH-YU-RIEULPIEUP
-0xAE8B 0xCE10 # HANGUL SYLLABLE CHIEUCH-YU-RIEULSIOS
-0xAE8C 0xCE11 # HANGUL SYLLABLE CHIEUCH-YU-RIEULTHIEUTH
-0xAE8D 0xCE12 # HANGUL SYLLABLE CHIEUCH-YU-RIEULPHIEUPH
-0xAE8E 0xCE13 # HANGUL SYLLABLE CHIEUCH-YU-RIEULHIEUH
-0xAE8F 0xCE15 # HANGUL SYLLABLE CHIEUCH-YU-PIEUP
-0xAE90 0xCE16 # HANGUL SYLLABLE CHIEUCH-YU-PIEUPSIOS
-0xAE91 0xCE17 # HANGUL SYLLABLE CHIEUCH-YU-SIOS
-0xAE92 0xCE18 # HANGUL SYLLABLE CHIEUCH-YU-SSANGSIOS
-0xAE93 0xCE1A # HANGUL SYLLABLE CHIEUCH-YU-CIEUC
-0xAE94 0xCE1B # HANGUL SYLLABLE CHIEUCH-YU-CHIEUCH
-0xAE95 0xCE1C # HANGUL SYLLABLE CHIEUCH-YU-KHIEUKH
-0xAE96 0xCE1D # HANGUL SYLLABLE CHIEUCH-YU-THIEUTH
-0xAE97 0xCE1E # HANGUL SYLLABLE CHIEUCH-YU-PHIEUPH
-0xAE98 0xCE1F # HANGUL SYLLABLE CHIEUCH-YU-HIEUH
-0xAE99 0xCE22 # HANGUL SYLLABLE CHIEUCH-EU-SSANGKIYEOK
-0xAE9A 0xCE23 # HANGUL SYLLABLE CHIEUCH-EU-KIYEOKSIOS
-0xAE9B 0xCE25 # HANGUL SYLLABLE CHIEUCH-EU-NIEUNCIEUC
-0xAE9C 0xCE26 # HANGUL SYLLABLE CHIEUCH-EU-NIEUNHIEUH
-0xAE9D 0xCE27 # HANGUL SYLLABLE CHIEUCH-EU-TIKEUT
-0xAE9E 0xCE29 # HANGUL SYLLABLE CHIEUCH-EU-RIEULKIYEOK
-0xAE9F 0xCE2A # HANGUL SYLLABLE CHIEUCH-EU-RIEULMIEUM
-0xAEA0 0xCE2B # HANGUL SYLLABLE CHIEUCH-EU-RIEULPIEUP
-0xAF41 0xCE2C # HANGUL SYLLABLE CHIEUCH-EU-RIEULSIOS
-0xAF42 0xCE2D # HANGUL SYLLABLE CHIEUCH-EU-RIEULTHIEUTH
-0xAF43 0xCE2E # HANGUL SYLLABLE CHIEUCH-EU-RIEULPHIEUPH
-0xAF44 0xCE2F # HANGUL SYLLABLE CHIEUCH-EU-RIEULHIEUH
-0xAF45 0xCE32 # HANGUL SYLLABLE CHIEUCH-EU-PIEUPSIOS
-0xAF46 0xCE34 # HANGUL SYLLABLE CHIEUCH-EU-SSANGSIOS
-0xAF47 0xCE36 # HANGUL SYLLABLE CHIEUCH-EU-CIEUC
-0xAF48 0xCE37 # HANGUL SYLLABLE CHIEUCH-EU-CHIEUCH
-0xAF49 0xCE38 # HANGUL SYLLABLE CHIEUCH-EU-KHIEUKH
-0xAF4A 0xCE39 # HANGUL SYLLABLE CHIEUCH-EU-THIEUTH
-0xAF4B 0xCE3A # HANGUL SYLLABLE CHIEUCH-EU-PHIEUPH
-0xAF4C 0xCE3B # HANGUL SYLLABLE CHIEUCH-EU-HIEUH
-0xAF4D 0xCE3C # HANGUL SYLLABLE CHIEUCH-YI
-0xAF4E 0xCE3D # HANGUL SYLLABLE CHIEUCH-YI-KIYEOK
-0xAF4F 0xCE3E # HANGUL SYLLABLE CHIEUCH-YI-SSANGKIYEOK
-0xAF50 0xCE3F # HANGUL SYLLABLE CHIEUCH-YI-KIYEOKSIOS
-0xAF51 0xCE40 # HANGUL SYLLABLE CHIEUCH-YI-NIEUN
-0xAF52 0xCE41 # HANGUL SYLLABLE CHIEUCH-YI-NIEUNCIEUC
-0xAF53 0xCE42 # HANGUL SYLLABLE CHIEUCH-YI-NIEUNHIEUH
-0xAF54 0xCE43 # HANGUL SYLLABLE CHIEUCH-YI-TIKEUT
-0xAF55 0xCE44 # HANGUL SYLLABLE CHIEUCH-YI-RIEUL
-0xAF56 0xCE45 # HANGUL SYLLABLE CHIEUCH-YI-RIEULKIYEOK
-0xAF57 0xCE46 # HANGUL SYLLABLE CHIEUCH-YI-RIEULMIEUM
-0xAF58 0xCE47 # HANGUL SYLLABLE CHIEUCH-YI-RIEULPIEUP
-0xAF59 0xCE48 # HANGUL SYLLABLE CHIEUCH-YI-RIEULSIOS
-0xAF5A 0xCE49 # HANGUL SYLLABLE CHIEUCH-YI-RIEULTHIEUTH
-0xAF61 0xCE4A # HANGUL SYLLABLE CHIEUCH-YI-RIEULPHIEUPH
-0xAF62 0xCE4B # HANGUL SYLLABLE CHIEUCH-YI-RIEULHIEUH
-0xAF63 0xCE4C # HANGUL SYLLABLE CHIEUCH-YI-MIEUM
-0xAF64 0xCE4D # HANGUL SYLLABLE CHIEUCH-YI-PIEUP
-0xAF65 0xCE4E # HANGUL SYLLABLE CHIEUCH-YI-PIEUPSIOS
-0xAF66 0xCE4F # HANGUL SYLLABLE CHIEUCH-YI-SIOS
-0xAF67 0xCE50 # HANGUL SYLLABLE CHIEUCH-YI-SSANGSIOS
-0xAF68 0xCE51 # HANGUL SYLLABLE CHIEUCH-YI-IEUNG
-0xAF69 0xCE52 # HANGUL SYLLABLE CHIEUCH-YI-CIEUC
-0xAF6A 0xCE53 # HANGUL SYLLABLE CHIEUCH-YI-CHIEUCH
-0xAF6B 0xCE54 # HANGUL SYLLABLE CHIEUCH-YI-KHIEUKH
-0xAF6C 0xCE55 # HANGUL SYLLABLE CHIEUCH-YI-THIEUTH
-0xAF6D 0xCE56 # HANGUL SYLLABLE CHIEUCH-YI-PHIEUPH
-0xAF6E 0xCE57 # HANGUL SYLLABLE CHIEUCH-YI-HIEUH
-0xAF6F 0xCE5A # HANGUL SYLLABLE CHIEUCH-I-SSANGKIYEOK
-0xAF70 0xCE5B # HANGUL SYLLABLE CHIEUCH-I-KIYEOKSIOS
-0xAF71 0xCE5D # HANGUL SYLLABLE CHIEUCH-I-NIEUNCIEUC
-0xAF72 0xCE5E # HANGUL SYLLABLE CHIEUCH-I-NIEUNHIEUH
-0xAF73 0xCE62 # HANGUL SYLLABLE CHIEUCH-I-RIEULMIEUM
-0xAF74 0xCE63 # HANGUL SYLLABLE CHIEUCH-I-RIEULPIEUP
-0xAF75 0xCE64 # HANGUL SYLLABLE CHIEUCH-I-RIEULSIOS
-0xAF76 0xCE65 # HANGUL SYLLABLE CHIEUCH-I-RIEULTHIEUTH
-0xAF77 0xCE66 # HANGUL SYLLABLE CHIEUCH-I-RIEULPHIEUPH
-0xAF78 0xCE67 # HANGUL SYLLABLE CHIEUCH-I-RIEULHIEUH
-0xAF79 0xCE6A # HANGUL SYLLABLE CHIEUCH-I-PIEUPSIOS
-0xAF7A 0xCE6C # HANGUL SYLLABLE CHIEUCH-I-SSANGSIOS
-0xAF81 0xCE6E # HANGUL SYLLABLE CHIEUCH-I-CIEUC
-0xAF82 0xCE6F # HANGUL SYLLABLE CHIEUCH-I-CHIEUCH
-0xAF83 0xCE70 # HANGUL SYLLABLE CHIEUCH-I-KHIEUKH
-0xAF84 0xCE71 # HANGUL SYLLABLE CHIEUCH-I-THIEUTH
-0xAF85 0xCE72 # HANGUL SYLLABLE CHIEUCH-I-PHIEUPH
-0xAF86 0xCE73 # HANGUL SYLLABLE CHIEUCH-I-HIEUH
-0xAF87 0xCE76 # HANGUL SYLLABLE KHIEUKH-A-SSANGKIYEOK
-0xAF88 0xCE77 # HANGUL SYLLABLE KHIEUKH-A-KIYEOKSIOS
-0xAF89 0xCE79 # HANGUL SYLLABLE KHIEUKH-A-NIEUNCIEUC
-0xAF8A 0xCE7A # HANGUL SYLLABLE KHIEUKH-A-NIEUNHIEUH
-0xAF8B 0xCE7B # HANGUL SYLLABLE KHIEUKH-A-TIKEUT
-0xAF8C 0xCE7D # HANGUL SYLLABLE KHIEUKH-A-RIEULKIYEOK
-0xAF8D 0xCE7E # HANGUL SYLLABLE KHIEUKH-A-RIEULMIEUM
-0xAF8E 0xCE7F # HANGUL SYLLABLE KHIEUKH-A-RIEULPIEUP
-0xAF8F 0xCE80 # HANGUL SYLLABLE KHIEUKH-A-RIEULSIOS
-0xAF90 0xCE81 # HANGUL SYLLABLE KHIEUKH-A-RIEULTHIEUTH
-0xAF91 0xCE82 # HANGUL SYLLABLE KHIEUKH-A-RIEULPHIEUPH
-0xAF92 0xCE83 # HANGUL SYLLABLE KHIEUKH-A-RIEULHIEUH
-0xAF93 0xCE86 # HANGUL SYLLABLE KHIEUKH-A-PIEUPSIOS
-0xAF94 0xCE88 # HANGUL SYLLABLE KHIEUKH-A-SSANGSIOS
-0xAF95 0xCE8A # HANGUL SYLLABLE KHIEUKH-A-CIEUC
-0xAF96 0xCE8B # HANGUL SYLLABLE KHIEUKH-A-CHIEUCH
-0xAF97 0xCE8C # HANGUL SYLLABLE KHIEUKH-A-KHIEUKH
-0xAF98 0xCE8D # HANGUL SYLLABLE KHIEUKH-A-THIEUTH
-0xAF99 0xCE8E # HANGUL SYLLABLE KHIEUKH-A-PHIEUPH
-0xAF9A 0xCE8F # HANGUL SYLLABLE KHIEUKH-A-HIEUH
-0xAF9B 0xCE92 # HANGUL SYLLABLE KHIEUKH-AE-SSANGKIYEOK
-0xAF9C 0xCE93 # HANGUL SYLLABLE KHIEUKH-AE-KIYEOKSIOS
-0xAF9D 0xCE95 # HANGUL SYLLABLE KHIEUKH-AE-NIEUNCIEUC
-0xAF9E 0xCE96 # HANGUL SYLLABLE KHIEUKH-AE-NIEUNHIEUH
-0xAF9F 0xCE97 # HANGUL SYLLABLE KHIEUKH-AE-TIKEUT
-0xAFA0 0xCE99 # HANGUL SYLLABLE KHIEUKH-AE-RIEULKIYEOK
-0xB041 0xCE9A # HANGUL SYLLABLE KHIEUKH-AE-RIEULMIEUM
-0xB042 0xCE9B # HANGUL SYLLABLE KHIEUKH-AE-RIEULPIEUP
-0xB043 0xCE9C # HANGUL SYLLABLE KHIEUKH-AE-RIEULSIOS
-0xB044 0xCE9D # HANGUL SYLLABLE KHIEUKH-AE-RIEULTHIEUTH
-0xB045 0xCE9E # HANGUL SYLLABLE KHIEUKH-AE-RIEULPHIEUPH
-0xB046 0xCE9F # HANGUL SYLLABLE KHIEUKH-AE-RIEULHIEUH
-0xB047 0xCEA2 # HANGUL SYLLABLE KHIEUKH-AE-PIEUPSIOS
-0xB048 0xCEA6 # HANGUL SYLLABLE KHIEUKH-AE-CIEUC
-0xB049 0xCEA7 # HANGUL SYLLABLE KHIEUKH-AE-CHIEUCH
-0xB04A 0xCEA8 # HANGUL SYLLABLE KHIEUKH-AE-KHIEUKH
-0xB04B 0xCEA9 # HANGUL SYLLABLE KHIEUKH-AE-THIEUTH
-0xB04C 0xCEAA # HANGUL SYLLABLE KHIEUKH-AE-PHIEUPH
-0xB04D 0xCEAB # HANGUL SYLLABLE KHIEUKH-AE-HIEUH
-0xB04E 0xCEAE # HANGUL SYLLABLE KHIEUKH-YA-SSANGKIYEOK
-0xB04F 0xCEAF # HANGUL SYLLABLE KHIEUKH-YA-KIYEOKSIOS
-0xB050 0xCEB0 # HANGUL SYLLABLE KHIEUKH-YA-NIEUN
-0xB051 0xCEB1 # HANGUL SYLLABLE KHIEUKH-YA-NIEUNCIEUC
-0xB052 0xCEB2 # HANGUL SYLLABLE KHIEUKH-YA-NIEUNHIEUH
-0xB053 0xCEB3 # HANGUL SYLLABLE KHIEUKH-YA-TIKEUT
-0xB054 0xCEB4 # HANGUL SYLLABLE KHIEUKH-YA-RIEUL
-0xB055 0xCEB5 # HANGUL SYLLABLE KHIEUKH-YA-RIEULKIYEOK
-0xB056 0xCEB6 # HANGUL SYLLABLE KHIEUKH-YA-RIEULMIEUM
-0xB057 0xCEB7 # HANGUL SYLLABLE KHIEUKH-YA-RIEULPIEUP
-0xB058 0xCEB8 # HANGUL SYLLABLE KHIEUKH-YA-RIEULSIOS
-0xB059 0xCEB9 # HANGUL SYLLABLE KHIEUKH-YA-RIEULTHIEUTH
-0xB05A 0xCEBA # HANGUL SYLLABLE KHIEUKH-YA-RIEULPHIEUPH
-0xB061 0xCEBB # HANGUL SYLLABLE KHIEUKH-YA-RIEULHIEUH
-0xB062 0xCEBC # HANGUL SYLLABLE KHIEUKH-YA-MIEUM
-0xB063 0xCEBD # HANGUL SYLLABLE KHIEUKH-YA-PIEUP
-0xB064 0xCEBE # HANGUL SYLLABLE KHIEUKH-YA-PIEUPSIOS
-0xB065 0xCEBF # HANGUL SYLLABLE KHIEUKH-YA-SIOS
-0xB066 0xCEC0 # HANGUL SYLLABLE KHIEUKH-YA-SSANGSIOS
-0xB067 0xCEC2 # HANGUL SYLLABLE KHIEUKH-YA-CIEUC
-0xB068 0xCEC3 # HANGUL SYLLABLE KHIEUKH-YA-CHIEUCH
-0xB069 0xCEC4 # HANGUL SYLLABLE KHIEUKH-YA-KHIEUKH
-0xB06A 0xCEC5 # HANGUL SYLLABLE KHIEUKH-YA-THIEUTH
-0xB06B 0xCEC6 # HANGUL SYLLABLE KHIEUKH-YA-PHIEUPH
-0xB06C 0xCEC7 # HANGUL SYLLABLE KHIEUKH-YA-HIEUH
-0xB06D 0xCEC8 # HANGUL SYLLABLE KHIEUKH-YAE
-0xB06E 0xCEC9 # HANGUL SYLLABLE KHIEUKH-YAE-KIYEOK
-0xB06F 0xCECA # HANGUL SYLLABLE KHIEUKH-YAE-SSANGKIYEOK
-0xB070 0xCECB # HANGUL SYLLABLE KHIEUKH-YAE-KIYEOKSIOS
-0xB071 0xCECC # HANGUL SYLLABLE KHIEUKH-YAE-NIEUN
-0xB072 0xCECD # HANGUL SYLLABLE KHIEUKH-YAE-NIEUNCIEUC
-0xB073 0xCECE # HANGUL SYLLABLE KHIEUKH-YAE-NIEUNHIEUH
-0xB074 0xCECF # HANGUL SYLLABLE KHIEUKH-YAE-TIKEUT
-0xB075 0xCED0 # HANGUL SYLLABLE KHIEUKH-YAE-RIEUL
-0xB076 0xCED1 # HANGUL SYLLABLE KHIEUKH-YAE-RIEULKIYEOK
-0xB077 0xCED2 # HANGUL SYLLABLE KHIEUKH-YAE-RIEULMIEUM
-0xB078 0xCED3 # HANGUL SYLLABLE KHIEUKH-YAE-RIEULPIEUP
-0xB079 0xCED4 # HANGUL SYLLABLE KHIEUKH-YAE-RIEULSIOS
-0xB07A 0xCED5 # HANGUL SYLLABLE KHIEUKH-YAE-RIEULTHIEUTH
-0xB081 0xCED6 # HANGUL SYLLABLE KHIEUKH-YAE-RIEULPHIEUPH
-0xB082 0xCED7 # HANGUL SYLLABLE KHIEUKH-YAE-RIEULHIEUH
-0xB083 0xCED8 # HANGUL SYLLABLE KHIEUKH-YAE-MIEUM
-0xB084 0xCED9 # HANGUL SYLLABLE KHIEUKH-YAE-PIEUP
-0xB085 0xCEDA # HANGUL SYLLABLE KHIEUKH-YAE-PIEUPSIOS
-0xB086 0xCEDB # HANGUL SYLLABLE KHIEUKH-YAE-SIOS
-0xB087 0xCEDC # HANGUL SYLLABLE KHIEUKH-YAE-SSANGSIOS
-0xB088 0xCEDD # HANGUL SYLLABLE KHIEUKH-YAE-IEUNG
-0xB089 0xCEDE # HANGUL SYLLABLE KHIEUKH-YAE-CIEUC
-0xB08A 0xCEDF # HANGUL SYLLABLE KHIEUKH-YAE-CHIEUCH
-0xB08B 0xCEE0 # HANGUL SYLLABLE KHIEUKH-YAE-KHIEUKH
-0xB08C 0xCEE1 # HANGUL SYLLABLE KHIEUKH-YAE-THIEUTH
-0xB08D 0xCEE2 # HANGUL SYLLABLE KHIEUKH-YAE-PHIEUPH
-0xB08E 0xCEE3 # HANGUL SYLLABLE KHIEUKH-YAE-HIEUH
-0xB08F 0xCEE6 # HANGUL SYLLABLE KHIEUKH-EO-SSANGKIYEOK
-0xB090 0xCEE7 # HANGUL SYLLABLE KHIEUKH-EO-KIYEOKSIOS
-0xB091 0xCEE9 # HANGUL SYLLABLE KHIEUKH-EO-NIEUNCIEUC
-0xB092 0xCEEA # HANGUL SYLLABLE KHIEUKH-EO-NIEUNHIEUH
-0xB093 0xCEED # HANGUL SYLLABLE KHIEUKH-EO-RIEULKIYEOK
-0xB094 0xCEEE # HANGUL SYLLABLE KHIEUKH-EO-RIEULMIEUM
-0xB095 0xCEEF # HANGUL SYLLABLE KHIEUKH-EO-RIEULPIEUP
-0xB096 0xCEF0 # HANGUL SYLLABLE KHIEUKH-EO-RIEULSIOS
-0xB097 0xCEF1 # HANGUL SYLLABLE KHIEUKH-EO-RIEULTHIEUTH
-0xB098 0xCEF2 # HANGUL SYLLABLE KHIEUKH-EO-RIEULPHIEUPH
-0xB099 0xCEF3 # HANGUL SYLLABLE KHIEUKH-EO-RIEULHIEUH
-0xB09A 0xCEF6 # HANGUL SYLLABLE KHIEUKH-EO-PIEUPSIOS
-0xB09B 0xCEFA # HANGUL SYLLABLE KHIEUKH-EO-CIEUC
-0xB09C 0xCEFB # HANGUL SYLLABLE KHIEUKH-EO-CHIEUCH
-0xB09D 0xCEFC # HANGUL SYLLABLE KHIEUKH-EO-KHIEUKH
-0xB09E 0xCEFD # HANGUL SYLLABLE KHIEUKH-EO-THIEUTH
-0xB09F 0xCEFE # HANGUL SYLLABLE KHIEUKH-EO-PHIEUPH
-0xB0A0 0xCEFF # HANGUL SYLLABLE KHIEUKH-EO-HIEUH
-0xB0A1 0xAC00 # HANGUL SYLLABLE KIYEOK-A
-0xB0A2 0xAC01 # HANGUL SYLLABLE KIYEOK-A-KIYEOK
-0xB0A3 0xAC04 # HANGUL SYLLABLE KIYEOK-A-NIEUN
-0xB0A4 0xAC07 # HANGUL SYLLABLE KIYEOK-A-TIKEUT
-0xB0A5 0xAC08 # HANGUL SYLLABLE KIYEOK-A-RIEUL
-0xB0A6 0xAC09 # HANGUL SYLLABLE KIYEOK-A-RIEULKIYEOK
-0xB0A7 0xAC0A # HANGUL SYLLABLE KIYEOK-A-RIEULMIEUM
-0xB0A8 0xAC10 # HANGUL SYLLABLE KIYEOK-A-MIEUM
-0xB0A9 0xAC11 # HANGUL SYLLABLE KIYEOK-A-PIEUP
-0xB0AA 0xAC12 # HANGUL SYLLABLE KIYEOK-A-PIEUPSIOS
-0xB0AB 0xAC13 # HANGUL SYLLABLE KIYEOK-A-SIOS
-0xB0AC 0xAC14 # HANGUL SYLLABLE KIYEOK-A-SSANGSIOS
-0xB0AD 0xAC15 # HANGUL SYLLABLE KIYEOK-A-IEUNG
-0xB0AE 0xAC16 # HANGUL SYLLABLE KIYEOK-A-CIEUC
-0xB0AF 0xAC17 # HANGUL SYLLABLE KIYEOK-A-CHIEUCH
-0xB0B0 0xAC19 # HANGUL SYLLABLE KIYEOK-A-THIEUTH
-0xB0B1 0xAC1A # HANGUL SYLLABLE KIYEOK-A-PHIEUPH
-0xB0B2 0xAC1B # HANGUL SYLLABLE KIYEOK-A-HIEUH
-0xB0B3 0xAC1C # HANGUL SYLLABLE KIYEOK-AE
-0xB0B4 0xAC1D # HANGUL SYLLABLE KIYEOK-AE-KIYEOK
-0xB0B5 0xAC20 # HANGUL SYLLABLE KIYEOK-AE-NIEUN
-0xB0B6 0xAC24 # HANGUL SYLLABLE KIYEOK-AE-RIEUL
-0xB0B7 0xAC2C # HANGUL SYLLABLE KIYEOK-AE-MIEUM
-0xB0B8 0xAC2D # HANGUL SYLLABLE KIYEOK-AE-PIEUP
-0xB0B9 0xAC2F # HANGUL SYLLABLE KIYEOK-AE-SIOS
-0xB0BA 0xAC30 # HANGUL SYLLABLE KIYEOK-AE-SSANGSIOS
-0xB0BB 0xAC31 # HANGUL SYLLABLE KIYEOK-AE-IEUNG
-0xB0BC 0xAC38 # HANGUL SYLLABLE KIYEOK-YA
-0xB0BD 0xAC39 # HANGUL SYLLABLE KIYEOK-YA-KIYEOK
-0xB0BE 0xAC3C # HANGUL SYLLABLE KIYEOK-YA-NIEUN
-0xB0BF 0xAC40 # HANGUL SYLLABLE KIYEOK-YA-RIEUL
-0xB0C0 0xAC4B # HANGUL SYLLABLE KIYEOK-YA-SIOS
-0xB0C1 0xAC4D # HANGUL SYLLABLE KIYEOK-YA-IEUNG
-0xB0C2 0xAC54 # HANGUL SYLLABLE KIYEOK-YAE
-0xB0C3 0xAC58 # HANGUL SYLLABLE KIYEOK-YAE-NIEUN
-0xB0C4 0xAC5C # HANGUL SYLLABLE KIYEOK-YAE-RIEUL
-0xB0C5 0xAC70 # HANGUL SYLLABLE KIYEOK-EO
-0xB0C6 0xAC71 # HANGUL SYLLABLE KIYEOK-EO-KIYEOK
-0xB0C7 0xAC74 # HANGUL SYLLABLE KIYEOK-EO-NIEUN
-0xB0C8 0xAC77 # HANGUL SYLLABLE KIYEOK-EO-TIKEUT
-0xB0C9 0xAC78 # HANGUL SYLLABLE KIYEOK-EO-RIEUL
-0xB0CA 0xAC7A # HANGUL SYLLABLE KIYEOK-EO-RIEULMIEUM
-0xB0CB 0xAC80 # HANGUL SYLLABLE KIYEOK-EO-MIEUM
-0xB0CC 0xAC81 # HANGUL SYLLABLE KIYEOK-EO-PIEUP
-0xB0CD 0xAC83 # HANGUL SYLLABLE KIYEOK-EO-SIOS
-0xB0CE 0xAC84 # HANGUL SYLLABLE KIYEOK-EO-SSANGSIOS
-0xB0CF 0xAC85 # HANGUL SYLLABLE KIYEOK-EO-IEUNG
-0xB0D0 0xAC86 # HANGUL SYLLABLE KIYEOK-EO-CIEUC
-0xB0D1 0xAC89 # HANGUL SYLLABLE KIYEOK-EO-THIEUTH
-0xB0D2 0xAC8A # HANGUL SYLLABLE KIYEOK-EO-PHIEUPH
-0xB0D3 0xAC8B # HANGUL SYLLABLE KIYEOK-EO-HIEUH
-0xB0D4 0xAC8C # HANGUL SYLLABLE KIYEOK-E
-0xB0D5 0xAC90 # HANGUL SYLLABLE KIYEOK-E-NIEUN
-0xB0D6 0xAC94 # HANGUL SYLLABLE KIYEOK-E-RIEUL
-0xB0D7 0xAC9C # HANGUL SYLLABLE KIYEOK-E-MIEUM
-0xB0D8 0xAC9D # HANGUL SYLLABLE KIYEOK-E-PIEUP
-0xB0D9 0xAC9F # HANGUL SYLLABLE KIYEOK-E-SIOS
-0xB0DA 0xACA0 # HANGUL SYLLABLE KIYEOK-E-SSANGSIOS
-0xB0DB 0xACA1 # HANGUL SYLLABLE KIYEOK-E-IEUNG
-0xB0DC 0xACA8 # HANGUL SYLLABLE KIYEOK-YEO
-0xB0DD 0xACA9 # HANGUL SYLLABLE KIYEOK-YEO-KIYEOK
-0xB0DE 0xACAA # HANGUL SYLLABLE KIYEOK-YEO-SSANGKIYEOK
-0xB0DF 0xACAC # HANGUL SYLLABLE KIYEOK-YEO-NIEUN
-0xB0E0 0xACAF # HANGUL SYLLABLE KIYEOK-YEO-TIKEUT
-0xB0E1 0xACB0 # HANGUL SYLLABLE KIYEOK-YEO-RIEUL
-0xB0E2 0xACB8 # HANGUL SYLLABLE KIYEOK-YEO-MIEUM
-0xB0E3 0xACB9 # HANGUL SYLLABLE KIYEOK-YEO-PIEUP
-0xB0E4 0xACBB # HANGUL SYLLABLE KIYEOK-YEO-SIOS
-0xB0E5 0xACBC # HANGUL SYLLABLE KIYEOK-YEO-SSANGSIOS
-0xB0E6 0xACBD # HANGUL SYLLABLE KIYEOK-YEO-IEUNG
-0xB0E7 0xACC1 # HANGUL SYLLABLE KIYEOK-YEO-THIEUTH
-0xB0E8 0xACC4 # HANGUL SYLLABLE KIYEOK-YE
-0xB0E9 0xACC8 # HANGUL SYLLABLE KIYEOK-YE-NIEUN
-0xB0EA 0xACCC # HANGUL SYLLABLE KIYEOK-YE-RIEUL
-0xB0EB 0xACD5 # HANGUL SYLLABLE KIYEOK-YE-PIEUP
-0xB0EC 0xACD7 # HANGUL SYLLABLE KIYEOK-YE-SIOS
-0xB0ED 0xACE0 # HANGUL SYLLABLE KIYEOK-O
-0xB0EE 0xACE1 # HANGUL SYLLABLE KIYEOK-O-KIYEOK
-0xB0EF 0xACE4 # HANGUL SYLLABLE KIYEOK-O-NIEUN
-0xB0F0 0xACE7 # HANGUL SYLLABLE KIYEOK-O-TIKEUT
-0xB0F1 0xACE8 # HANGUL SYLLABLE KIYEOK-O-RIEUL
-0xB0F2 0xACEA # HANGUL SYLLABLE KIYEOK-O-RIEULMIEUM
-0xB0F3 0xACEC # HANGUL SYLLABLE KIYEOK-O-RIEULSIOS
-0xB0F4 0xACEF # HANGUL SYLLABLE KIYEOK-O-RIEULHIEUH
-0xB0F5 0xACF0 # HANGUL SYLLABLE KIYEOK-O-MIEUM
-0xB0F6 0xACF1 # HANGUL SYLLABLE KIYEOK-O-PIEUP
-0xB0F7 0xACF3 # HANGUL SYLLABLE KIYEOK-O-SIOS
-0xB0F8 0xACF5 # HANGUL SYLLABLE KIYEOK-O-IEUNG
-0xB0F9 0xACF6 # HANGUL SYLLABLE KIYEOK-O-CIEUC
-0xB0FA 0xACFC # HANGUL SYLLABLE KIYEOK-WA
-0xB0FB 0xACFD # HANGUL SYLLABLE KIYEOK-WA-KIYEOK
-0xB0FC 0xAD00 # HANGUL SYLLABLE KIYEOK-WA-NIEUN
-0xB0FD 0xAD04 # HANGUL SYLLABLE KIYEOK-WA-RIEUL
-0xB0FE 0xAD06 # HANGUL SYLLABLE KIYEOK-WA-RIEULMIEUM
-0xB141 0xCF02 # HANGUL SYLLABLE KHIEUKH-E-SSANGKIYEOK
-0xB142 0xCF03 # HANGUL SYLLABLE KHIEUKH-E-KIYEOKSIOS
-0xB143 0xCF05 # HANGUL SYLLABLE KHIEUKH-E-NIEUNCIEUC
-0xB144 0xCF06 # HANGUL SYLLABLE KHIEUKH-E-NIEUNHIEUH
-0xB145 0xCF07 # HANGUL SYLLABLE KHIEUKH-E-TIKEUT
-0xB146 0xCF09 # HANGUL SYLLABLE KHIEUKH-E-RIEULKIYEOK
-0xB147 0xCF0A # HANGUL SYLLABLE KHIEUKH-E-RIEULMIEUM
-0xB148 0xCF0B # HANGUL SYLLABLE KHIEUKH-E-RIEULPIEUP
-0xB149 0xCF0C # HANGUL SYLLABLE KHIEUKH-E-RIEULSIOS
-0xB14A 0xCF0D # HANGUL SYLLABLE KHIEUKH-E-RIEULTHIEUTH
-0xB14B 0xCF0E # HANGUL SYLLABLE KHIEUKH-E-RIEULPHIEUPH
-0xB14C 0xCF0F # HANGUL SYLLABLE KHIEUKH-E-RIEULHIEUH
-0xB14D 0xCF12 # HANGUL SYLLABLE KHIEUKH-E-PIEUPSIOS
-0xB14E 0xCF14 # HANGUL SYLLABLE KHIEUKH-E-SSANGSIOS
-0xB14F 0xCF16 # HANGUL SYLLABLE KHIEUKH-E-CIEUC
-0xB150 0xCF17 # HANGUL SYLLABLE KHIEUKH-E-CHIEUCH
-0xB151 0xCF18 # HANGUL SYLLABLE KHIEUKH-E-KHIEUKH
-0xB152 0xCF19 # HANGUL SYLLABLE KHIEUKH-E-THIEUTH
-0xB153 0xCF1A # HANGUL SYLLABLE KHIEUKH-E-PHIEUPH
-0xB154 0xCF1B # HANGUL SYLLABLE KHIEUKH-E-HIEUH
-0xB155 0xCF1D # HANGUL SYLLABLE KHIEUKH-YEO-KIYEOK
-0xB156 0xCF1E # HANGUL SYLLABLE KHIEUKH-YEO-SSANGKIYEOK
-0xB157 0xCF1F # HANGUL SYLLABLE KHIEUKH-YEO-KIYEOKSIOS
-0xB158 0xCF21 # HANGUL SYLLABLE KHIEUKH-YEO-NIEUNCIEUC
-0xB159 0xCF22 # HANGUL SYLLABLE KHIEUKH-YEO-NIEUNHIEUH
-0xB15A 0xCF23 # HANGUL SYLLABLE KHIEUKH-YEO-TIKEUT
-0xB161 0xCF25 # HANGUL SYLLABLE KHIEUKH-YEO-RIEULKIYEOK
-0xB162 0xCF26 # HANGUL SYLLABLE KHIEUKH-YEO-RIEULMIEUM
-0xB163 0xCF27 # HANGUL SYLLABLE KHIEUKH-YEO-RIEULPIEUP
-0xB164 0xCF28 # HANGUL SYLLABLE KHIEUKH-YEO-RIEULSIOS
-0xB165 0xCF29 # HANGUL SYLLABLE KHIEUKH-YEO-RIEULTHIEUTH
-0xB166 0xCF2A # HANGUL SYLLABLE KHIEUKH-YEO-RIEULPHIEUPH
-0xB167 0xCF2B # HANGUL SYLLABLE KHIEUKH-YEO-RIEULHIEUH
-0xB168 0xCF2E # HANGUL SYLLABLE KHIEUKH-YEO-PIEUPSIOS
-0xB169 0xCF32 # HANGUL SYLLABLE KHIEUKH-YEO-CIEUC
-0xB16A 0xCF33 # HANGUL SYLLABLE KHIEUKH-YEO-CHIEUCH
-0xB16B 0xCF34 # HANGUL SYLLABLE KHIEUKH-YEO-KHIEUKH
-0xB16C 0xCF35 # HANGUL SYLLABLE KHIEUKH-YEO-THIEUTH
-0xB16D 0xCF36 # HANGUL SYLLABLE KHIEUKH-YEO-PHIEUPH
-0xB16E 0xCF37 # HANGUL SYLLABLE KHIEUKH-YEO-HIEUH
-0xB16F 0xCF39 # HANGUL SYLLABLE KHIEUKH-YE-KIYEOK
-0xB170 0xCF3A # HANGUL SYLLABLE KHIEUKH-YE-SSANGKIYEOK
-0xB171 0xCF3B # HANGUL SYLLABLE KHIEUKH-YE-KIYEOKSIOS
-0xB172 0xCF3C # HANGUL SYLLABLE KHIEUKH-YE-NIEUN
-0xB173 0xCF3D # HANGUL SYLLABLE KHIEUKH-YE-NIEUNCIEUC
-0xB174 0xCF3E # HANGUL SYLLABLE KHIEUKH-YE-NIEUNHIEUH
-0xB175 0xCF3F # HANGUL SYLLABLE KHIEUKH-YE-TIKEUT
-0xB176 0xCF40 # HANGUL SYLLABLE KHIEUKH-YE-RIEUL
-0xB177 0xCF41 # HANGUL SYLLABLE KHIEUKH-YE-RIEULKIYEOK
-0xB178 0xCF42 # HANGUL SYLLABLE KHIEUKH-YE-RIEULMIEUM
-0xB179 0xCF43 # HANGUL SYLLABLE KHIEUKH-YE-RIEULPIEUP
-0xB17A 0xCF44 # HANGUL SYLLABLE KHIEUKH-YE-RIEULSIOS
-0xB181 0xCF45 # HANGUL SYLLABLE KHIEUKH-YE-RIEULTHIEUTH
-0xB182 0xCF46 # HANGUL SYLLABLE KHIEUKH-YE-RIEULPHIEUPH
-0xB183 0xCF47 # HANGUL SYLLABLE KHIEUKH-YE-RIEULHIEUH
-0xB184 0xCF48 # HANGUL SYLLABLE KHIEUKH-YE-MIEUM
-0xB185 0xCF49 # HANGUL SYLLABLE KHIEUKH-YE-PIEUP
-0xB186 0xCF4A # HANGUL SYLLABLE KHIEUKH-YE-PIEUPSIOS
-0xB187 0xCF4B # HANGUL SYLLABLE KHIEUKH-YE-SIOS
-0xB188 0xCF4C # HANGUL SYLLABLE KHIEUKH-YE-SSANGSIOS
-0xB189 0xCF4D # HANGUL SYLLABLE KHIEUKH-YE-IEUNG
-0xB18A 0xCF4E # HANGUL SYLLABLE KHIEUKH-YE-CIEUC
-0xB18B 0xCF4F # HANGUL SYLLABLE KHIEUKH-YE-CHIEUCH
-0xB18C 0xCF50 # HANGUL SYLLABLE KHIEUKH-YE-KHIEUKH
-0xB18D 0xCF51 # HANGUL SYLLABLE KHIEUKH-YE-THIEUTH
-0xB18E 0xCF52 # HANGUL SYLLABLE KHIEUKH-YE-PHIEUPH
-0xB18F 0xCF53 # HANGUL SYLLABLE KHIEUKH-YE-HIEUH
-0xB190 0xCF56 # HANGUL SYLLABLE KHIEUKH-O-SSANGKIYEOK
-0xB191 0xCF57 # HANGUL SYLLABLE KHIEUKH-O-KIYEOKSIOS
-0xB192 0xCF59 # HANGUL SYLLABLE KHIEUKH-O-NIEUNCIEUC
-0xB193 0xCF5A # HANGUL SYLLABLE KHIEUKH-O-NIEUNHIEUH
-0xB194 0xCF5B # HANGUL SYLLABLE KHIEUKH-O-TIKEUT
-0xB195 0xCF5D # HANGUL SYLLABLE KHIEUKH-O-RIEULKIYEOK
-0xB196 0xCF5E # HANGUL SYLLABLE KHIEUKH-O-RIEULMIEUM
-0xB197 0xCF5F # HANGUL SYLLABLE KHIEUKH-O-RIEULPIEUP
-0xB198 0xCF60 # HANGUL SYLLABLE KHIEUKH-O-RIEULSIOS
-0xB199 0xCF61 # HANGUL SYLLABLE KHIEUKH-O-RIEULTHIEUTH
-0xB19A 0xCF62 # HANGUL SYLLABLE KHIEUKH-O-RIEULPHIEUPH
-0xB19B 0xCF63 # HANGUL SYLLABLE KHIEUKH-O-RIEULHIEUH
-0xB19C 0xCF66 # HANGUL SYLLABLE KHIEUKH-O-PIEUPSIOS
-0xB19D 0xCF68 # HANGUL SYLLABLE KHIEUKH-O-SSANGSIOS
-0xB19E 0xCF6A # HANGUL SYLLABLE KHIEUKH-O-CIEUC
-0xB19F 0xCF6B # HANGUL SYLLABLE KHIEUKH-O-CHIEUCH
-0xB1A0 0xCF6C # HANGUL SYLLABLE KHIEUKH-O-KHIEUKH
-0xB1A1 0xAD0C # HANGUL SYLLABLE KIYEOK-WA-MIEUM
-0xB1A2 0xAD0D # HANGUL SYLLABLE KIYEOK-WA-PIEUP
-0xB1A3 0xAD0F # HANGUL SYLLABLE KIYEOK-WA-SIOS
-0xB1A4 0xAD11 # HANGUL SYLLABLE KIYEOK-WA-IEUNG
-0xB1A5 0xAD18 # HANGUL SYLLABLE KIYEOK-WAE
-0xB1A6 0xAD1C # HANGUL SYLLABLE KIYEOK-WAE-NIEUN
-0xB1A7 0xAD20 # HANGUL SYLLABLE KIYEOK-WAE-RIEUL
-0xB1A8 0xAD29 # HANGUL SYLLABLE KIYEOK-WAE-PIEUP
-0xB1A9 0xAD2C # HANGUL SYLLABLE KIYEOK-WAE-SSANGSIOS
-0xB1AA 0xAD2D # HANGUL SYLLABLE KIYEOK-WAE-IEUNG
-0xB1AB 0xAD34 # HANGUL SYLLABLE KIYEOK-OE
-0xB1AC 0xAD35 # HANGUL SYLLABLE KIYEOK-OE-KIYEOK
-0xB1AD 0xAD38 # HANGUL SYLLABLE KIYEOK-OE-NIEUN
-0xB1AE 0xAD3C # HANGUL SYLLABLE KIYEOK-OE-RIEUL
-0xB1AF 0xAD44 # HANGUL SYLLABLE KIYEOK-OE-MIEUM
-0xB1B0 0xAD45 # HANGUL SYLLABLE KIYEOK-OE-PIEUP
-0xB1B1 0xAD47 # HANGUL SYLLABLE KIYEOK-OE-SIOS
-0xB1B2 0xAD49 # HANGUL SYLLABLE KIYEOK-OE-IEUNG
-0xB1B3 0xAD50 # HANGUL SYLLABLE KIYEOK-YO
-0xB1B4 0xAD54 # HANGUL SYLLABLE KIYEOK-YO-NIEUN
-0xB1B5 0xAD58 # HANGUL SYLLABLE KIYEOK-YO-RIEUL
-0xB1B6 0xAD61 # HANGUL SYLLABLE KIYEOK-YO-PIEUP
-0xB1B7 0xAD63 # HANGUL SYLLABLE KIYEOK-YO-SIOS
-0xB1B8 0xAD6C # HANGUL SYLLABLE KIYEOK-U
-0xB1B9 0xAD6D # HANGUL SYLLABLE KIYEOK-U-KIYEOK
-0xB1BA 0xAD70 # HANGUL SYLLABLE KIYEOK-U-NIEUN
-0xB1BB 0xAD73 # HANGUL SYLLABLE KIYEOK-U-TIKEUT
-0xB1BC 0xAD74 # HANGUL SYLLABLE KIYEOK-U-RIEUL
-0xB1BD 0xAD75 # HANGUL SYLLABLE KIYEOK-U-RIEULKIYEOK
-0xB1BE 0xAD76 # HANGUL SYLLABLE KIYEOK-U-RIEULMIEUM
-0xB1BF 0xAD7B # HANGUL SYLLABLE KIYEOK-U-RIEULHIEUH
-0xB1C0 0xAD7C # HANGUL SYLLABLE KIYEOK-U-MIEUM
-0xB1C1 0xAD7D # HANGUL SYLLABLE KIYEOK-U-PIEUP
-0xB1C2 0xAD7F # HANGUL SYLLABLE KIYEOK-U-SIOS
-0xB1C3 0xAD81 # HANGUL SYLLABLE KIYEOK-U-IEUNG
-0xB1C4 0xAD82 # HANGUL SYLLABLE KIYEOK-U-CIEUC
-0xB1C5 0xAD88 # HANGUL SYLLABLE KIYEOK-WEO
-0xB1C6 0xAD89 # HANGUL SYLLABLE KIYEOK-WEO-KIYEOK
-0xB1C7 0xAD8C # HANGUL SYLLABLE KIYEOK-WEO-NIEUN
-0xB1C8 0xAD90 # HANGUL SYLLABLE KIYEOK-WEO-RIEUL
-0xB1C9 0xAD9C # HANGUL SYLLABLE KIYEOK-WEO-SSANGSIOS
-0xB1CA 0xAD9D # HANGUL SYLLABLE KIYEOK-WEO-IEUNG
-0xB1CB 0xADA4 # HANGUL SYLLABLE KIYEOK-WE
-0xB1CC 0xADB7 # HANGUL SYLLABLE KIYEOK-WE-SIOS
-0xB1CD 0xADC0 # HANGUL SYLLABLE KIYEOK-WI
-0xB1CE 0xADC1 # HANGUL SYLLABLE KIYEOK-WI-KIYEOK
-0xB1CF 0xADC4 # HANGUL SYLLABLE KIYEOK-WI-NIEUN
-0xB1D0 0xADC8 # HANGUL SYLLABLE KIYEOK-WI-RIEUL
-0xB1D1 0xADD0 # HANGUL SYLLABLE KIYEOK-WI-MIEUM
-0xB1D2 0xADD1 # HANGUL SYLLABLE KIYEOK-WI-PIEUP
-0xB1D3 0xADD3 # HANGUL SYLLABLE KIYEOK-WI-SIOS
-0xB1D4 0xADDC # HANGUL SYLLABLE KIYEOK-YU
-0xB1D5 0xADE0 # HANGUL SYLLABLE KIYEOK-YU-NIEUN
-0xB1D6 0xADE4 # HANGUL SYLLABLE KIYEOK-YU-RIEUL
-0xB1D7 0xADF8 # HANGUL SYLLABLE KIYEOK-EU
-0xB1D8 0xADF9 # HANGUL SYLLABLE KIYEOK-EU-KIYEOK
-0xB1D9 0xADFC # HANGUL SYLLABLE KIYEOK-EU-NIEUN
-0xB1DA 0xADFF # HANGUL SYLLABLE KIYEOK-EU-TIKEUT
-0xB1DB 0xAE00 # HANGUL SYLLABLE KIYEOK-EU-RIEUL
-0xB1DC 0xAE01 # HANGUL SYLLABLE KIYEOK-EU-RIEULKIYEOK
-0xB1DD 0xAE08 # HANGUL SYLLABLE KIYEOK-EU-MIEUM
-0xB1DE 0xAE09 # HANGUL SYLLABLE KIYEOK-EU-PIEUP
-0xB1DF 0xAE0B # HANGUL SYLLABLE KIYEOK-EU-SIOS
-0xB1E0 0xAE0D # HANGUL SYLLABLE KIYEOK-EU-IEUNG
-0xB1E1 0xAE14 # HANGUL SYLLABLE KIYEOK-YI
-0xB1E2 0xAE30 # HANGUL SYLLABLE KIYEOK-I
-0xB1E3 0xAE31 # HANGUL SYLLABLE KIYEOK-I-KIYEOK
-0xB1E4 0xAE34 # HANGUL SYLLABLE KIYEOK-I-NIEUN
-0xB1E5 0xAE37 # HANGUL SYLLABLE KIYEOK-I-TIKEUT
-0xB1E6 0xAE38 # HANGUL SYLLABLE KIYEOK-I-RIEUL
-0xB1E7 0xAE3A # HANGUL SYLLABLE KIYEOK-I-RIEULMIEUM
-0xB1E8 0xAE40 # HANGUL SYLLABLE KIYEOK-I-MIEUM
-0xB1E9 0xAE41 # HANGUL SYLLABLE KIYEOK-I-PIEUP
-0xB1EA 0xAE43 # HANGUL SYLLABLE KIYEOK-I-SIOS
-0xB1EB 0xAE45 # HANGUL SYLLABLE KIYEOK-I-IEUNG
-0xB1EC 0xAE46 # HANGUL SYLLABLE KIYEOK-I-CIEUC
-0xB1ED 0xAE4A # HANGUL SYLLABLE KIYEOK-I-PHIEUPH
-0xB1EE 0xAE4C # HANGUL SYLLABLE SSANGKIYEOK-A
-0xB1EF 0xAE4D # HANGUL SYLLABLE SSANGKIYEOK-A-KIYEOK
-0xB1F0 0xAE4E # HANGUL SYLLABLE SSANGKIYEOK-A-SSANGKIYEOK
-0xB1F1 0xAE50 # HANGUL SYLLABLE SSANGKIYEOK-A-NIEUN
-0xB1F2 0xAE54 # HANGUL SYLLABLE SSANGKIYEOK-A-RIEUL
-0xB1F3 0xAE56 # HANGUL SYLLABLE SSANGKIYEOK-A-RIEULMIEUM
-0xB1F4 0xAE5C # HANGUL SYLLABLE SSANGKIYEOK-A-MIEUM
-0xB1F5 0xAE5D # HANGUL SYLLABLE SSANGKIYEOK-A-PIEUP
-0xB1F6 0xAE5F # HANGUL SYLLABLE SSANGKIYEOK-A-SIOS
-0xB1F7 0xAE60 # HANGUL SYLLABLE SSANGKIYEOK-A-SSANGSIOS
-0xB1F8 0xAE61 # HANGUL SYLLABLE SSANGKIYEOK-A-IEUNG
-0xB1F9 0xAE65 # HANGUL SYLLABLE SSANGKIYEOK-A-THIEUTH
-0xB1FA 0xAE68 # HANGUL SYLLABLE SSANGKIYEOK-AE
-0xB1FB 0xAE69 # HANGUL SYLLABLE SSANGKIYEOK-AE-KIYEOK
-0xB1FC 0xAE6C # HANGUL SYLLABLE SSANGKIYEOK-AE-NIEUN
-0xB1FD 0xAE70 # HANGUL SYLLABLE SSANGKIYEOK-AE-RIEUL
-0xB1FE 0xAE78 # HANGUL SYLLABLE SSANGKIYEOK-AE-MIEUM
-0xB241 0xCF6D # HANGUL SYLLABLE KHIEUKH-O-THIEUTH
-0xB242 0xCF6E # HANGUL SYLLABLE KHIEUKH-O-PHIEUPH
-0xB243 0xCF6F # HANGUL SYLLABLE KHIEUKH-O-HIEUH
-0xB244 0xCF72 # HANGUL SYLLABLE KHIEUKH-WA-SSANGKIYEOK
-0xB245 0xCF73 # HANGUL SYLLABLE KHIEUKH-WA-KIYEOKSIOS
-0xB246 0xCF75 # HANGUL SYLLABLE KHIEUKH-WA-NIEUNCIEUC
-0xB247 0xCF76 # HANGUL SYLLABLE KHIEUKH-WA-NIEUNHIEUH
-0xB248 0xCF77 # HANGUL SYLLABLE KHIEUKH-WA-TIKEUT
-0xB249 0xCF79 # HANGUL SYLLABLE KHIEUKH-WA-RIEULKIYEOK
-0xB24A 0xCF7A # HANGUL SYLLABLE KHIEUKH-WA-RIEULMIEUM
-0xB24B 0xCF7B # HANGUL SYLLABLE KHIEUKH-WA-RIEULPIEUP
-0xB24C 0xCF7C # HANGUL SYLLABLE KHIEUKH-WA-RIEULSIOS
-0xB24D 0xCF7D # HANGUL SYLLABLE KHIEUKH-WA-RIEULTHIEUTH
-0xB24E 0xCF7E # HANGUL SYLLABLE KHIEUKH-WA-RIEULPHIEUPH
-0xB24F 0xCF7F # HANGUL SYLLABLE KHIEUKH-WA-RIEULHIEUH
-0xB250 0xCF81 # HANGUL SYLLABLE KHIEUKH-WA-PIEUP
-0xB251 0xCF82 # HANGUL SYLLABLE KHIEUKH-WA-PIEUPSIOS
-0xB252 0xCF83 # HANGUL SYLLABLE KHIEUKH-WA-SIOS
-0xB253 0xCF84 # HANGUL SYLLABLE KHIEUKH-WA-SSANGSIOS
-0xB254 0xCF86 # HANGUL SYLLABLE KHIEUKH-WA-CIEUC
-0xB255 0xCF87 # HANGUL SYLLABLE KHIEUKH-WA-CHIEUCH
-0xB256 0xCF88 # HANGUL SYLLABLE KHIEUKH-WA-KHIEUKH
-0xB257 0xCF89 # HANGUL SYLLABLE KHIEUKH-WA-THIEUTH
-0xB258 0xCF8A # HANGUL SYLLABLE KHIEUKH-WA-PHIEUPH
-0xB259 0xCF8B # HANGUL SYLLABLE KHIEUKH-WA-HIEUH
-0xB25A 0xCF8D # HANGUL SYLLABLE KHIEUKH-WAE-KIYEOK
-0xB261 0xCF8E # HANGUL SYLLABLE KHIEUKH-WAE-SSANGKIYEOK
-0xB262 0xCF8F # HANGUL SYLLABLE KHIEUKH-WAE-KIYEOKSIOS
-0xB263 0xCF90 # HANGUL SYLLABLE KHIEUKH-WAE-NIEUN
-0xB264 0xCF91 # HANGUL SYLLABLE KHIEUKH-WAE-NIEUNCIEUC
-0xB265 0xCF92 # HANGUL SYLLABLE KHIEUKH-WAE-NIEUNHIEUH
-0xB266 0xCF93 # HANGUL SYLLABLE KHIEUKH-WAE-TIKEUT
-0xB267 0xCF94 # HANGUL SYLLABLE KHIEUKH-WAE-RIEUL
-0xB268 0xCF95 # HANGUL SYLLABLE KHIEUKH-WAE-RIEULKIYEOK
-0xB269 0xCF96 # HANGUL SYLLABLE KHIEUKH-WAE-RIEULMIEUM
-0xB26A 0xCF97 # HANGUL SYLLABLE KHIEUKH-WAE-RIEULPIEUP
-0xB26B 0xCF98 # HANGUL SYLLABLE KHIEUKH-WAE-RIEULSIOS
-0xB26C 0xCF99 # HANGUL SYLLABLE KHIEUKH-WAE-RIEULTHIEUTH
-0xB26D 0xCF9A # HANGUL SYLLABLE KHIEUKH-WAE-RIEULPHIEUPH
-0xB26E 0xCF9B # HANGUL SYLLABLE KHIEUKH-WAE-RIEULHIEUH
-0xB26F 0xCF9C # HANGUL SYLLABLE KHIEUKH-WAE-MIEUM
-0xB270 0xCF9D # HANGUL SYLLABLE KHIEUKH-WAE-PIEUP
-0xB271 0xCF9E # HANGUL SYLLABLE KHIEUKH-WAE-PIEUPSIOS
-0xB272 0xCF9F # HANGUL SYLLABLE KHIEUKH-WAE-SIOS
-0xB273 0xCFA0 # HANGUL SYLLABLE KHIEUKH-WAE-SSANGSIOS
-0xB274 0xCFA2 # HANGUL SYLLABLE KHIEUKH-WAE-CIEUC
-0xB275 0xCFA3 # HANGUL SYLLABLE KHIEUKH-WAE-CHIEUCH
-0xB276 0xCFA4 # HANGUL SYLLABLE KHIEUKH-WAE-KHIEUKH
-0xB277 0xCFA5 # HANGUL SYLLABLE KHIEUKH-WAE-THIEUTH
-0xB278 0xCFA6 # HANGUL SYLLABLE KHIEUKH-WAE-PHIEUPH
-0xB279 0xCFA7 # HANGUL SYLLABLE KHIEUKH-WAE-HIEUH
-0xB27A 0xCFA9 # HANGUL SYLLABLE KHIEUKH-OE-KIYEOK
-0xB281 0xCFAA # HANGUL SYLLABLE KHIEUKH-OE-SSANGKIYEOK
-0xB282 0xCFAB # HANGUL SYLLABLE KHIEUKH-OE-KIYEOKSIOS
-0xB283 0xCFAC # HANGUL SYLLABLE KHIEUKH-OE-NIEUN
-0xB284 0xCFAD # HANGUL SYLLABLE KHIEUKH-OE-NIEUNCIEUC
-0xB285 0xCFAE # HANGUL SYLLABLE KHIEUKH-OE-NIEUNHIEUH
-0xB286 0xCFAF # HANGUL SYLLABLE KHIEUKH-OE-TIKEUT
-0xB287 0xCFB1 # HANGUL SYLLABLE KHIEUKH-OE-RIEULKIYEOK
-0xB288 0xCFB2 # HANGUL SYLLABLE KHIEUKH-OE-RIEULMIEUM
-0xB289 0xCFB3 # HANGUL SYLLABLE KHIEUKH-OE-RIEULPIEUP
-0xB28A 0xCFB4 # HANGUL SYLLABLE KHIEUKH-OE-RIEULSIOS
-0xB28B 0xCFB5 # HANGUL SYLLABLE KHIEUKH-OE-RIEULTHIEUTH
-0xB28C 0xCFB6 # HANGUL SYLLABLE KHIEUKH-OE-RIEULPHIEUPH
-0xB28D 0xCFB7 # HANGUL SYLLABLE KHIEUKH-OE-RIEULHIEUH
-0xB28E 0xCFB8 # HANGUL SYLLABLE KHIEUKH-OE-MIEUM
-0xB28F 0xCFB9 # HANGUL SYLLABLE KHIEUKH-OE-PIEUP
-0xB290 0xCFBA # HANGUL SYLLABLE KHIEUKH-OE-PIEUPSIOS
-0xB291 0xCFBB # HANGUL SYLLABLE KHIEUKH-OE-SIOS
-0xB292 0xCFBC # HANGUL SYLLABLE KHIEUKH-OE-SSANGSIOS
-0xB293 0xCFBD # HANGUL SYLLABLE KHIEUKH-OE-IEUNG
-0xB294 0xCFBE # HANGUL SYLLABLE KHIEUKH-OE-CIEUC
-0xB295 0xCFBF # HANGUL SYLLABLE KHIEUKH-OE-CHIEUCH
-0xB296 0xCFC0 # HANGUL SYLLABLE KHIEUKH-OE-KHIEUKH
-0xB297 0xCFC1 # HANGUL SYLLABLE KHIEUKH-OE-THIEUTH
-0xB298 0xCFC2 # HANGUL SYLLABLE KHIEUKH-OE-PHIEUPH
-0xB299 0xCFC3 # HANGUL SYLLABLE KHIEUKH-OE-HIEUH
-0xB29A 0xCFC5 # HANGUL SYLLABLE KHIEUKH-YO-KIYEOK
-0xB29B 0xCFC6 # HANGUL SYLLABLE KHIEUKH-YO-SSANGKIYEOK
-0xB29C 0xCFC7 # HANGUL SYLLABLE KHIEUKH-YO-KIYEOKSIOS
-0xB29D 0xCFC8 # HANGUL SYLLABLE KHIEUKH-YO-NIEUN
-0xB29E 0xCFC9 # HANGUL SYLLABLE KHIEUKH-YO-NIEUNCIEUC
-0xB29F 0xCFCA # HANGUL SYLLABLE KHIEUKH-YO-NIEUNHIEUH
-0xB2A0 0xCFCB # HANGUL SYLLABLE KHIEUKH-YO-TIKEUT
-0xB2A1 0xAE79 # HANGUL SYLLABLE SSANGKIYEOK-AE-PIEUP
-0xB2A2 0xAE7B # HANGUL SYLLABLE SSANGKIYEOK-AE-SIOS
-0xB2A3 0xAE7C # HANGUL SYLLABLE SSANGKIYEOK-AE-SSANGSIOS
-0xB2A4 0xAE7D # HANGUL SYLLABLE SSANGKIYEOK-AE-IEUNG
-0xB2A5 0xAE84 # HANGUL SYLLABLE SSANGKIYEOK-YA
-0xB2A6 0xAE85 # HANGUL SYLLABLE SSANGKIYEOK-YA-KIYEOK
-0xB2A7 0xAE8C # HANGUL SYLLABLE SSANGKIYEOK-YA-RIEUL
-0xB2A8 0xAEBC # HANGUL SYLLABLE SSANGKIYEOK-EO
-0xB2A9 0xAEBD # HANGUL SYLLABLE SSANGKIYEOK-EO-KIYEOK
-0xB2AA 0xAEBE # HANGUL SYLLABLE SSANGKIYEOK-EO-SSANGKIYEOK
-0xB2AB 0xAEC0 # HANGUL SYLLABLE SSANGKIYEOK-EO-NIEUN
-0xB2AC 0xAEC4 # HANGUL SYLLABLE SSANGKIYEOK-EO-RIEUL
-0xB2AD 0xAECC # HANGUL SYLLABLE SSANGKIYEOK-EO-MIEUM
-0xB2AE 0xAECD # HANGUL SYLLABLE SSANGKIYEOK-EO-PIEUP
-0xB2AF 0xAECF # HANGUL SYLLABLE SSANGKIYEOK-EO-SIOS
-0xB2B0 0xAED0 # HANGUL SYLLABLE SSANGKIYEOK-EO-SSANGSIOS
-0xB2B1 0xAED1 # HANGUL SYLLABLE SSANGKIYEOK-EO-IEUNG
-0xB2B2 0xAED8 # HANGUL SYLLABLE SSANGKIYEOK-E
-0xB2B3 0xAED9 # HANGUL SYLLABLE SSANGKIYEOK-E-KIYEOK
-0xB2B4 0xAEDC # HANGUL SYLLABLE SSANGKIYEOK-E-NIEUN
-0xB2B5 0xAEE8 # HANGUL SYLLABLE SSANGKIYEOK-E-MIEUM
-0xB2B6 0xAEEB # HANGUL SYLLABLE SSANGKIYEOK-E-SIOS
-0xB2B7 0xAEED # HANGUL SYLLABLE SSANGKIYEOK-E-IEUNG
-0xB2B8 0xAEF4 # HANGUL SYLLABLE SSANGKIYEOK-YEO
-0xB2B9 0xAEF8 # HANGUL SYLLABLE SSANGKIYEOK-YEO-NIEUN
-0xB2BA 0xAEFC # HANGUL SYLLABLE SSANGKIYEOK-YEO-RIEUL
-0xB2BB 0xAF07 # HANGUL SYLLABLE SSANGKIYEOK-YEO-SIOS
-0xB2BC 0xAF08 # HANGUL SYLLABLE SSANGKIYEOK-YEO-SSANGSIOS
-0xB2BD 0xAF0D # HANGUL SYLLABLE SSANGKIYEOK-YEO-THIEUTH
-0xB2BE 0xAF10 # HANGUL SYLLABLE SSANGKIYEOK-YE
-0xB2BF 0xAF2C # HANGUL SYLLABLE SSANGKIYEOK-O
-0xB2C0 0xAF2D # HANGUL SYLLABLE SSANGKIYEOK-O-KIYEOK
-0xB2C1 0xAF30 # HANGUL SYLLABLE SSANGKIYEOK-O-NIEUN
-0xB2C2 0xAF32 # HANGUL SYLLABLE SSANGKIYEOK-O-NIEUNHIEUH
-0xB2C3 0xAF34 # HANGUL SYLLABLE SSANGKIYEOK-O-RIEUL
-0xB2C4 0xAF3C # HANGUL SYLLABLE SSANGKIYEOK-O-MIEUM
-0xB2C5 0xAF3D # HANGUL SYLLABLE SSANGKIYEOK-O-PIEUP
-0xB2C6 0xAF3F # HANGUL SYLLABLE SSANGKIYEOK-O-SIOS
-0xB2C7 0xAF41 # HANGUL SYLLABLE SSANGKIYEOK-O-IEUNG
-0xB2C8 0xAF42 # HANGUL SYLLABLE SSANGKIYEOK-O-CIEUC
-0xB2C9 0xAF43 # HANGUL SYLLABLE SSANGKIYEOK-O-CHIEUCH
-0xB2CA 0xAF48 # HANGUL SYLLABLE SSANGKIYEOK-WA
-0xB2CB 0xAF49 # HANGUL SYLLABLE SSANGKIYEOK-WA-KIYEOK
-0xB2CC 0xAF50 # HANGUL SYLLABLE SSANGKIYEOK-WA-RIEUL
-0xB2CD 0xAF5C # HANGUL SYLLABLE SSANGKIYEOK-WA-SSANGSIOS
-0xB2CE 0xAF5D # HANGUL SYLLABLE SSANGKIYEOK-WA-IEUNG
-0xB2CF 0xAF64 # HANGUL SYLLABLE SSANGKIYEOK-WAE
-0xB2D0 0xAF65 # HANGUL SYLLABLE SSANGKIYEOK-WAE-KIYEOK
-0xB2D1 0xAF79 # HANGUL SYLLABLE SSANGKIYEOK-WAE-IEUNG
-0xB2D2 0xAF80 # HANGUL SYLLABLE SSANGKIYEOK-OE
-0xB2D3 0xAF84 # HANGUL SYLLABLE SSANGKIYEOK-OE-NIEUN
-0xB2D4 0xAF88 # HANGUL SYLLABLE SSANGKIYEOK-OE-RIEUL
-0xB2D5 0xAF90 # HANGUL SYLLABLE SSANGKIYEOK-OE-MIEUM
-0xB2D6 0xAF91 # HANGUL SYLLABLE SSANGKIYEOK-OE-PIEUP
-0xB2D7 0xAF95 # HANGUL SYLLABLE SSANGKIYEOK-OE-IEUNG
-0xB2D8 0xAF9C # HANGUL SYLLABLE SSANGKIYEOK-YO
-0xB2D9 0xAFB8 # HANGUL SYLLABLE SSANGKIYEOK-U
-0xB2DA 0xAFB9 # HANGUL SYLLABLE SSANGKIYEOK-U-KIYEOK
-0xB2DB 0xAFBC # HANGUL SYLLABLE SSANGKIYEOK-U-NIEUN
-0xB2DC 0xAFC0 # HANGUL SYLLABLE SSANGKIYEOK-U-RIEUL
-0xB2DD 0xAFC7 # HANGUL SYLLABLE SSANGKIYEOK-U-RIEULHIEUH
-0xB2DE 0xAFC8 # HANGUL SYLLABLE SSANGKIYEOK-U-MIEUM
-0xB2DF 0xAFC9 # HANGUL SYLLABLE SSANGKIYEOK-U-PIEUP
-0xB2E0 0xAFCB # HANGUL SYLLABLE SSANGKIYEOK-U-SIOS
-0xB2E1 0xAFCD # HANGUL SYLLABLE SSANGKIYEOK-U-IEUNG
-0xB2E2 0xAFCE # HANGUL SYLLABLE SSANGKIYEOK-U-CIEUC
-0xB2E3 0xAFD4 # HANGUL SYLLABLE SSANGKIYEOK-WEO
-0xB2E4 0xAFDC # HANGUL SYLLABLE SSANGKIYEOK-WEO-RIEUL
-0xB2E5 0xAFE8 # HANGUL SYLLABLE SSANGKIYEOK-WEO-SSANGSIOS
-0xB2E6 0xAFE9 # HANGUL SYLLABLE SSANGKIYEOK-WEO-IEUNG
-0xB2E7 0xAFF0 # HANGUL SYLLABLE SSANGKIYEOK-WE
-0xB2E8 0xAFF1 # HANGUL SYLLABLE SSANGKIYEOK-WE-KIYEOK
-0xB2E9 0xAFF4 # HANGUL SYLLABLE SSANGKIYEOK-WE-NIEUN
-0xB2EA 0xAFF8 # HANGUL SYLLABLE SSANGKIYEOK-WE-RIEUL
-0xB2EB 0xB000 # HANGUL SYLLABLE SSANGKIYEOK-WE-MIEUM
-0xB2EC 0xB001 # HANGUL SYLLABLE SSANGKIYEOK-WE-PIEUP
-0xB2ED 0xB004 # HANGUL SYLLABLE SSANGKIYEOK-WE-SSANGSIOS
-0xB2EE 0xB00C # HANGUL SYLLABLE SSANGKIYEOK-WI
-0xB2EF 0xB010 # HANGUL SYLLABLE SSANGKIYEOK-WI-NIEUN
-0xB2F0 0xB014 # HANGUL SYLLABLE SSANGKIYEOK-WI-RIEUL
-0xB2F1 0xB01C # HANGUL SYLLABLE SSANGKIYEOK-WI-MIEUM
-0xB2F2 0xB01D # HANGUL SYLLABLE SSANGKIYEOK-WI-PIEUP
-0xB2F3 0xB028 # HANGUL SYLLABLE SSANGKIYEOK-YU
-0xB2F4 0xB044 # HANGUL SYLLABLE SSANGKIYEOK-EU
-0xB2F5 0xB045 # HANGUL SYLLABLE SSANGKIYEOK-EU-KIYEOK
-0xB2F6 0xB048 # HANGUL SYLLABLE SSANGKIYEOK-EU-NIEUN
-0xB2F7 0xB04A # HANGUL SYLLABLE SSANGKIYEOK-EU-NIEUNHIEUH
-0xB2F8 0xB04C # HANGUL SYLLABLE SSANGKIYEOK-EU-RIEUL
-0xB2F9 0xB04E # HANGUL SYLLABLE SSANGKIYEOK-EU-RIEULMIEUM
-0xB2FA 0xB053 # HANGUL SYLLABLE SSANGKIYEOK-EU-RIEULHIEUH
-0xB2FB 0xB054 # HANGUL SYLLABLE SSANGKIYEOK-EU-MIEUM
-0xB2FC 0xB055 # HANGUL SYLLABLE SSANGKIYEOK-EU-PIEUP
-0xB2FD 0xB057 # HANGUL SYLLABLE SSANGKIYEOK-EU-SIOS
-0xB2FE 0xB059 # HANGUL SYLLABLE SSANGKIYEOK-EU-IEUNG
-0xB341 0xCFCC # HANGUL SYLLABLE KHIEUKH-YO-RIEUL
-0xB342 0xCFCD # HANGUL SYLLABLE KHIEUKH-YO-RIEULKIYEOK
-0xB343 0xCFCE # HANGUL SYLLABLE KHIEUKH-YO-RIEULMIEUM
-0xB344 0xCFCF # HANGUL SYLLABLE KHIEUKH-YO-RIEULPIEUP
-0xB345 0xCFD0 # HANGUL SYLLABLE KHIEUKH-YO-RIEULSIOS
-0xB346 0xCFD1 # HANGUL SYLLABLE KHIEUKH-YO-RIEULTHIEUTH
-0xB347 0xCFD2 # HANGUL SYLLABLE KHIEUKH-YO-RIEULPHIEUPH
-0xB348 0xCFD3 # HANGUL SYLLABLE KHIEUKH-YO-RIEULHIEUH
-0xB349 0xCFD4 # HANGUL SYLLABLE KHIEUKH-YO-MIEUM
-0xB34A 0xCFD5 # HANGUL SYLLABLE KHIEUKH-YO-PIEUP
-0xB34B 0xCFD6 # HANGUL SYLLABLE KHIEUKH-YO-PIEUPSIOS
-0xB34C 0xCFD7 # HANGUL SYLLABLE KHIEUKH-YO-SIOS
-0xB34D 0xCFD8 # HANGUL SYLLABLE KHIEUKH-YO-SSANGSIOS
-0xB34E 0xCFD9 # HANGUL SYLLABLE KHIEUKH-YO-IEUNG
-0xB34F 0xCFDA # HANGUL SYLLABLE KHIEUKH-YO-CIEUC
-0xB350 0xCFDB # HANGUL SYLLABLE KHIEUKH-YO-CHIEUCH
-0xB351 0xCFDC # HANGUL SYLLABLE KHIEUKH-YO-KHIEUKH
-0xB352 0xCFDD # HANGUL SYLLABLE KHIEUKH-YO-THIEUTH
-0xB353 0xCFDE # HANGUL SYLLABLE KHIEUKH-YO-PHIEUPH
-0xB354 0xCFDF # HANGUL SYLLABLE KHIEUKH-YO-HIEUH
-0xB355 0xCFE2 # HANGUL SYLLABLE KHIEUKH-U-SSANGKIYEOK
-0xB356 0xCFE3 # HANGUL SYLLABLE KHIEUKH-U-KIYEOKSIOS
-0xB357 0xCFE5 # HANGUL SYLLABLE KHIEUKH-U-NIEUNCIEUC
-0xB358 0xCFE6 # HANGUL SYLLABLE KHIEUKH-U-NIEUNHIEUH
-0xB359 0xCFE7 # HANGUL SYLLABLE KHIEUKH-U-TIKEUT
-0xB35A 0xCFE9 # HANGUL SYLLABLE KHIEUKH-U-RIEULKIYEOK
-0xB361 0xCFEA # HANGUL SYLLABLE KHIEUKH-U-RIEULMIEUM
-0xB362 0xCFEB # HANGUL SYLLABLE KHIEUKH-U-RIEULPIEUP
-0xB363 0xCFEC # HANGUL SYLLABLE KHIEUKH-U-RIEULSIOS
-0xB364 0xCFED # HANGUL SYLLABLE KHIEUKH-U-RIEULTHIEUTH
-0xB365 0xCFEE # HANGUL SYLLABLE KHIEUKH-U-RIEULPHIEUPH
-0xB366 0xCFEF # HANGUL SYLLABLE KHIEUKH-U-RIEULHIEUH
-0xB367 0xCFF2 # HANGUL SYLLABLE KHIEUKH-U-PIEUPSIOS
-0xB368 0xCFF4 # HANGUL SYLLABLE KHIEUKH-U-SSANGSIOS
-0xB369 0xCFF6 # HANGUL SYLLABLE KHIEUKH-U-CIEUC
-0xB36A 0xCFF7 # HANGUL SYLLABLE KHIEUKH-U-CHIEUCH
-0xB36B 0xCFF8 # HANGUL SYLLABLE KHIEUKH-U-KHIEUKH
-0xB36C 0xCFF9 # HANGUL SYLLABLE KHIEUKH-U-THIEUTH
-0xB36D 0xCFFA # HANGUL SYLLABLE KHIEUKH-U-PHIEUPH
-0xB36E 0xCFFB # HANGUL SYLLABLE KHIEUKH-U-HIEUH
-0xB36F 0xCFFD # HANGUL SYLLABLE KHIEUKH-WEO-KIYEOK
-0xB370 0xCFFE # HANGUL SYLLABLE KHIEUKH-WEO-SSANGKIYEOK
-0xB371 0xCFFF # HANGUL SYLLABLE KHIEUKH-WEO-KIYEOKSIOS
-0xB372 0xD001 # HANGUL SYLLABLE KHIEUKH-WEO-NIEUNCIEUC
-0xB373 0xD002 # HANGUL SYLLABLE KHIEUKH-WEO-NIEUNHIEUH
-0xB374 0xD003 # HANGUL SYLLABLE KHIEUKH-WEO-TIKEUT
-0xB375 0xD005 # HANGUL SYLLABLE KHIEUKH-WEO-RIEULKIYEOK
-0xB376 0xD006 # HANGUL SYLLABLE KHIEUKH-WEO-RIEULMIEUM
-0xB377 0xD007 # HANGUL SYLLABLE KHIEUKH-WEO-RIEULPIEUP
-0xB378 0xD008 # HANGUL SYLLABLE KHIEUKH-WEO-RIEULSIOS
-0xB379 0xD009 # HANGUL SYLLABLE KHIEUKH-WEO-RIEULTHIEUTH
-0xB37A 0xD00A # HANGUL SYLLABLE KHIEUKH-WEO-RIEULPHIEUPH
-0xB381 0xD00B # HANGUL SYLLABLE KHIEUKH-WEO-RIEULHIEUH
-0xB382 0xD00C # HANGUL SYLLABLE KHIEUKH-WEO-MIEUM
-0xB383 0xD00D # HANGUL SYLLABLE KHIEUKH-WEO-PIEUP
-0xB384 0xD00E # HANGUL SYLLABLE KHIEUKH-WEO-PIEUPSIOS
-0xB385 0xD00F # HANGUL SYLLABLE KHIEUKH-WEO-SIOS
-0xB386 0xD010 # HANGUL SYLLABLE KHIEUKH-WEO-SSANGSIOS
-0xB387 0xD012 # HANGUL SYLLABLE KHIEUKH-WEO-CIEUC
-0xB388 0xD013 # HANGUL SYLLABLE KHIEUKH-WEO-CHIEUCH
-0xB389 0xD014 # HANGUL SYLLABLE KHIEUKH-WEO-KHIEUKH
-0xB38A 0xD015 # HANGUL SYLLABLE KHIEUKH-WEO-THIEUTH
-0xB38B 0xD016 # HANGUL SYLLABLE KHIEUKH-WEO-PHIEUPH
-0xB38C 0xD017 # HANGUL SYLLABLE KHIEUKH-WEO-HIEUH
-0xB38D 0xD019 # HANGUL SYLLABLE KHIEUKH-WE-KIYEOK
-0xB38E 0xD01A # HANGUL SYLLABLE KHIEUKH-WE-SSANGKIYEOK
-0xB38F 0xD01B # HANGUL SYLLABLE KHIEUKH-WE-KIYEOKSIOS
-0xB390 0xD01C # HANGUL SYLLABLE KHIEUKH-WE-NIEUN
-0xB391 0xD01D # HANGUL SYLLABLE KHIEUKH-WE-NIEUNCIEUC
-0xB392 0xD01E # HANGUL SYLLABLE KHIEUKH-WE-NIEUNHIEUH
-0xB393 0xD01F # HANGUL SYLLABLE KHIEUKH-WE-TIKEUT
-0xB394 0xD020 # HANGUL SYLLABLE KHIEUKH-WE-RIEUL
-0xB395 0xD021 # HANGUL SYLLABLE KHIEUKH-WE-RIEULKIYEOK
-0xB396 0xD022 # HANGUL SYLLABLE KHIEUKH-WE-RIEULMIEUM
-0xB397 0xD023 # HANGUL SYLLABLE KHIEUKH-WE-RIEULPIEUP
-0xB398 0xD024 # HANGUL SYLLABLE KHIEUKH-WE-RIEULSIOS
-0xB399 0xD025 # HANGUL SYLLABLE KHIEUKH-WE-RIEULTHIEUTH
-0xB39A 0xD026 # HANGUL SYLLABLE KHIEUKH-WE-RIEULPHIEUPH
-0xB39B 0xD027 # HANGUL SYLLABLE KHIEUKH-WE-RIEULHIEUH
-0xB39C 0xD028 # HANGUL SYLLABLE KHIEUKH-WE-MIEUM
-0xB39D 0xD029 # HANGUL SYLLABLE KHIEUKH-WE-PIEUP
-0xB39E 0xD02A # HANGUL SYLLABLE KHIEUKH-WE-PIEUPSIOS
-0xB39F 0xD02B # HANGUL SYLLABLE KHIEUKH-WE-SIOS
-0xB3A0 0xD02C # HANGUL SYLLABLE KHIEUKH-WE-SSANGSIOS
-0xB3A1 0xB05D # HANGUL SYLLABLE SSANGKIYEOK-EU-THIEUTH
-0xB3A2 0xB07C # HANGUL SYLLABLE SSANGKIYEOK-I
-0xB3A3 0xB07D # HANGUL SYLLABLE SSANGKIYEOK-I-KIYEOK
-0xB3A4 0xB080 # HANGUL SYLLABLE SSANGKIYEOK-I-NIEUN
-0xB3A5 0xB084 # HANGUL SYLLABLE SSANGKIYEOK-I-RIEUL
-0xB3A6 0xB08C # HANGUL SYLLABLE SSANGKIYEOK-I-MIEUM
-0xB3A7 0xB08D # HANGUL SYLLABLE SSANGKIYEOK-I-PIEUP
-0xB3A8 0xB08F # HANGUL SYLLABLE SSANGKIYEOK-I-SIOS
-0xB3A9 0xB091 # HANGUL SYLLABLE SSANGKIYEOK-I-IEUNG
-0xB3AA 0xB098 # HANGUL SYLLABLE NIEUN-A
-0xB3AB 0xB099 # HANGUL SYLLABLE NIEUN-A-KIYEOK
-0xB3AC 0xB09A # HANGUL SYLLABLE NIEUN-A-SSANGKIYEOK
-0xB3AD 0xB09C # HANGUL SYLLABLE NIEUN-A-NIEUN
-0xB3AE 0xB09F # HANGUL SYLLABLE NIEUN-A-TIKEUT
-0xB3AF 0xB0A0 # HANGUL SYLLABLE NIEUN-A-RIEUL
-0xB3B0 0xB0A1 # HANGUL SYLLABLE NIEUN-A-RIEULKIYEOK
-0xB3B1 0xB0A2 # HANGUL SYLLABLE NIEUN-A-RIEULMIEUM
-0xB3B2 0xB0A8 # HANGUL SYLLABLE NIEUN-A-MIEUM
-0xB3B3 0xB0A9 # HANGUL SYLLABLE NIEUN-A-PIEUP
-0xB3B4 0xB0AB # HANGUL SYLLABLE NIEUN-A-SIOS
-0xB3B5 0xB0AC # HANGUL SYLLABLE NIEUN-A-SSANGSIOS
-0xB3B6 0xB0AD # HANGUL SYLLABLE NIEUN-A-IEUNG
-0xB3B7 0xB0AE # HANGUL SYLLABLE NIEUN-A-CIEUC
-0xB3B8 0xB0AF # HANGUL SYLLABLE NIEUN-A-CHIEUCH
-0xB3B9 0xB0B1 # HANGUL SYLLABLE NIEUN-A-THIEUTH
-0xB3BA 0xB0B3 # HANGUL SYLLABLE NIEUN-A-HIEUH
-0xB3BB 0xB0B4 # HANGUL SYLLABLE NIEUN-AE
-0xB3BC 0xB0B5 # HANGUL SYLLABLE NIEUN-AE-KIYEOK
-0xB3BD 0xB0B8 # HANGUL SYLLABLE NIEUN-AE-NIEUN
-0xB3BE 0xB0BC # HANGUL SYLLABLE NIEUN-AE-RIEUL
-0xB3BF 0xB0C4 # HANGUL SYLLABLE NIEUN-AE-MIEUM
-0xB3C0 0xB0C5 # HANGUL SYLLABLE NIEUN-AE-PIEUP
-0xB3C1 0xB0C7 # HANGUL SYLLABLE NIEUN-AE-SIOS
-0xB3C2 0xB0C8 # HANGUL SYLLABLE NIEUN-AE-SSANGSIOS
-0xB3C3 0xB0C9 # HANGUL SYLLABLE NIEUN-AE-IEUNG
-0xB3C4 0xB0D0 # HANGUL SYLLABLE NIEUN-YA
-0xB3C5 0xB0D1 # HANGUL SYLLABLE NIEUN-YA-KIYEOK
-0xB3C6 0xB0D4 # HANGUL SYLLABLE NIEUN-YA-NIEUN
-0xB3C7 0xB0D8 # HANGUL SYLLABLE NIEUN-YA-RIEUL
-0xB3C8 0xB0E0 # HANGUL SYLLABLE NIEUN-YA-MIEUM
-0xB3C9 0xB0E5 # HANGUL SYLLABLE NIEUN-YA-IEUNG
-0xB3CA 0xB108 # HANGUL SYLLABLE NIEUN-EO
-0xB3CB 0xB109 # HANGUL SYLLABLE NIEUN-EO-KIYEOK
-0xB3CC 0xB10B # HANGUL SYLLABLE NIEUN-EO-KIYEOKSIOS
-0xB3CD 0xB10C # HANGUL SYLLABLE NIEUN-EO-NIEUN
-0xB3CE 0xB110 # HANGUL SYLLABLE NIEUN-EO-RIEUL
-0xB3CF 0xB112 # HANGUL SYLLABLE NIEUN-EO-RIEULMIEUM
-0xB3D0 0xB113 # HANGUL SYLLABLE NIEUN-EO-RIEULPIEUP
-0xB3D1 0xB118 # HANGUL SYLLABLE NIEUN-EO-MIEUM
-0xB3D2 0xB119 # HANGUL SYLLABLE NIEUN-EO-PIEUP
-0xB3D3 0xB11B # HANGUL SYLLABLE NIEUN-EO-SIOS
-0xB3D4 0xB11C # HANGUL SYLLABLE NIEUN-EO-SSANGSIOS
-0xB3D5 0xB11D # HANGUL SYLLABLE NIEUN-EO-IEUNG
-0xB3D6 0xB123 # HANGUL SYLLABLE NIEUN-EO-HIEUH
-0xB3D7 0xB124 # HANGUL SYLLABLE NIEUN-E
-0xB3D8 0xB125 # HANGUL SYLLABLE NIEUN-E-KIYEOK
-0xB3D9 0xB128 # HANGUL SYLLABLE NIEUN-E-NIEUN
-0xB3DA 0xB12C # HANGUL SYLLABLE NIEUN-E-RIEUL
-0xB3DB 0xB134 # HANGUL SYLLABLE NIEUN-E-MIEUM
-0xB3DC 0xB135 # HANGUL SYLLABLE NIEUN-E-PIEUP
-0xB3DD 0xB137 # HANGUL SYLLABLE NIEUN-E-SIOS
-0xB3DE 0xB138 # HANGUL SYLLABLE NIEUN-E-SSANGSIOS
-0xB3DF 0xB139 # HANGUL SYLLABLE NIEUN-E-IEUNG
-0xB3E0 0xB140 # HANGUL SYLLABLE NIEUN-YEO
-0xB3E1 0xB141 # HANGUL SYLLABLE NIEUN-YEO-KIYEOK
-0xB3E2 0xB144 # HANGUL SYLLABLE NIEUN-YEO-NIEUN
-0xB3E3 0xB148 # HANGUL SYLLABLE NIEUN-YEO-RIEUL
-0xB3E4 0xB150 # HANGUL SYLLABLE NIEUN-YEO-MIEUM
-0xB3E5 0xB151 # HANGUL SYLLABLE NIEUN-YEO-PIEUP
-0xB3E6 0xB154 # HANGUL SYLLABLE NIEUN-YEO-SSANGSIOS
-0xB3E7 0xB155 # HANGUL SYLLABLE NIEUN-YEO-IEUNG
-0xB3E8 0xB158 # HANGUL SYLLABLE NIEUN-YEO-KHIEUKH
-0xB3E9 0xB15C # HANGUL SYLLABLE NIEUN-YE
-0xB3EA 0xB160 # HANGUL SYLLABLE NIEUN-YE-NIEUN
-0xB3EB 0xB178 # HANGUL SYLLABLE NIEUN-O
-0xB3EC 0xB179 # HANGUL SYLLABLE NIEUN-O-KIYEOK
-0xB3ED 0xB17C # HANGUL SYLLABLE NIEUN-O-NIEUN
-0xB3EE 0xB180 # HANGUL SYLLABLE NIEUN-O-RIEUL
-0xB3EF 0xB182 # HANGUL SYLLABLE NIEUN-O-RIEULMIEUM
-0xB3F0 0xB188 # HANGUL SYLLABLE NIEUN-O-MIEUM
-0xB3F1 0xB189 # HANGUL SYLLABLE NIEUN-O-PIEUP
-0xB3F2 0xB18B # HANGUL SYLLABLE NIEUN-O-SIOS
-0xB3F3 0xB18D # HANGUL SYLLABLE NIEUN-O-IEUNG
-0xB3F4 0xB192 # HANGUL SYLLABLE NIEUN-O-PHIEUPH
-0xB3F5 0xB193 # HANGUL SYLLABLE NIEUN-O-HIEUH
-0xB3F6 0xB194 # HANGUL SYLLABLE NIEUN-WA
-0xB3F7 0xB198 # HANGUL SYLLABLE NIEUN-WA-NIEUN
-0xB3F8 0xB19C # HANGUL SYLLABLE NIEUN-WA-RIEUL
-0xB3F9 0xB1A8 # HANGUL SYLLABLE NIEUN-WA-SSANGSIOS
-0xB3FA 0xB1CC # HANGUL SYLLABLE NIEUN-OE
-0xB3FB 0xB1D0 # HANGUL SYLLABLE NIEUN-OE-NIEUN
-0xB3FC 0xB1D4 # HANGUL SYLLABLE NIEUN-OE-RIEUL
-0xB3FD 0xB1DC # HANGUL SYLLABLE NIEUN-OE-MIEUM
-0xB3FE 0xB1DD # HANGUL SYLLABLE NIEUN-OE-PIEUP
-0xB441 0xD02E # HANGUL SYLLABLE KHIEUKH-WE-CIEUC
-0xB442 0xD02F # HANGUL SYLLABLE KHIEUKH-WE-CHIEUCH
-0xB443 0xD030 # HANGUL SYLLABLE KHIEUKH-WE-KHIEUKH
-0xB444 0xD031 # HANGUL SYLLABLE KHIEUKH-WE-THIEUTH
-0xB445 0xD032 # HANGUL SYLLABLE KHIEUKH-WE-PHIEUPH
-0xB446 0xD033 # HANGUL SYLLABLE KHIEUKH-WE-HIEUH
-0xB447 0xD036 # HANGUL SYLLABLE KHIEUKH-WI-SSANGKIYEOK
-0xB448 0xD037 # HANGUL SYLLABLE KHIEUKH-WI-KIYEOKSIOS
-0xB449 0xD039 # HANGUL SYLLABLE KHIEUKH-WI-NIEUNCIEUC
-0xB44A 0xD03A # HANGUL SYLLABLE KHIEUKH-WI-NIEUNHIEUH
-0xB44B 0xD03B # HANGUL SYLLABLE KHIEUKH-WI-TIKEUT
-0xB44C 0xD03D # HANGUL SYLLABLE KHIEUKH-WI-RIEULKIYEOK
-0xB44D 0xD03E # HANGUL SYLLABLE KHIEUKH-WI-RIEULMIEUM
-0xB44E 0xD03F # HANGUL SYLLABLE KHIEUKH-WI-RIEULPIEUP
-0xB44F 0xD040 # HANGUL SYLLABLE KHIEUKH-WI-RIEULSIOS
-0xB450 0xD041 # HANGUL SYLLABLE KHIEUKH-WI-RIEULTHIEUTH
-0xB451 0xD042 # HANGUL SYLLABLE KHIEUKH-WI-RIEULPHIEUPH
-0xB452 0xD043 # HANGUL SYLLABLE KHIEUKH-WI-RIEULHIEUH
-0xB453 0xD046 # HANGUL SYLLABLE KHIEUKH-WI-PIEUPSIOS
-0xB454 0xD048 # HANGUL SYLLABLE KHIEUKH-WI-SSANGSIOS
-0xB455 0xD04A # HANGUL SYLLABLE KHIEUKH-WI-CIEUC
-0xB456 0xD04B # HANGUL SYLLABLE KHIEUKH-WI-CHIEUCH
-0xB457 0xD04C # HANGUL SYLLABLE KHIEUKH-WI-KHIEUKH
-0xB458 0xD04D # HANGUL SYLLABLE KHIEUKH-WI-THIEUTH
-0xB459 0xD04E # HANGUL SYLLABLE KHIEUKH-WI-PHIEUPH
-0xB45A 0xD04F # HANGUL SYLLABLE KHIEUKH-WI-HIEUH
-0xB461 0xD051 # HANGUL SYLLABLE KHIEUKH-YU-KIYEOK
-0xB462 0xD052 # HANGUL SYLLABLE KHIEUKH-YU-SSANGKIYEOK
-0xB463 0xD053 # HANGUL SYLLABLE KHIEUKH-YU-KIYEOKSIOS
-0xB464 0xD055 # HANGUL SYLLABLE KHIEUKH-YU-NIEUNCIEUC
-0xB465 0xD056 # HANGUL SYLLABLE KHIEUKH-YU-NIEUNHIEUH
-0xB466 0xD057 # HANGUL SYLLABLE KHIEUKH-YU-TIKEUT
-0xB467 0xD059 # HANGUL SYLLABLE KHIEUKH-YU-RIEULKIYEOK
-0xB468 0xD05A # HANGUL SYLLABLE KHIEUKH-YU-RIEULMIEUM
-0xB469 0xD05B # HANGUL SYLLABLE KHIEUKH-YU-RIEULPIEUP
-0xB46A 0xD05C # HANGUL SYLLABLE KHIEUKH-YU-RIEULSIOS
-0xB46B 0xD05D # HANGUL SYLLABLE KHIEUKH-YU-RIEULTHIEUTH
-0xB46C 0xD05E # HANGUL SYLLABLE KHIEUKH-YU-RIEULPHIEUPH
-0xB46D 0xD05F # HANGUL SYLLABLE KHIEUKH-YU-RIEULHIEUH
-0xB46E 0xD061 # HANGUL SYLLABLE KHIEUKH-YU-PIEUP
-0xB46F 0xD062 # HANGUL SYLLABLE KHIEUKH-YU-PIEUPSIOS
-0xB470 0xD063 # HANGUL SYLLABLE KHIEUKH-YU-SIOS
-0xB471 0xD064 # HANGUL SYLLABLE KHIEUKH-YU-SSANGSIOS
-0xB472 0xD065 # HANGUL SYLLABLE KHIEUKH-YU-IEUNG
-0xB473 0xD066 # HANGUL SYLLABLE KHIEUKH-YU-CIEUC
-0xB474 0xD067 # HANGUL SYLLABLE KHIEUKH-YU-CHIEUCH
-0xB475 0xD068 # HANGUL SYLLABLE KHIEUKH-YU-KHIEUKH
-0xB476 0xD069 # HANGUL SYLLABLE KHIEUKH-YU-THIEUTH
-0xB477 0xD06A # HANGUL SYLLABLE KHIEUKH-YU-PHIEUPH
-0xB478 0xD06B # HANGUL SYLLABLE KHIEUKH-YU-HIEUH
-0xB479 0xD06E # HANGUL SYLLABLE KHIEUKH-EU-SSANGKIYEOK
-0xB47A 0xD06F # HANGUL SYLLABLE KHIEUKH-EU-KIYEOKSIOS
-0xB481 0xD071 # HANGUL SYLLABLE KHIEUKH-EU-NIEUNCIEUC
-0xB482 0xD072 # HANGUL SYLLABLE KHIEUKH-EU-NIEUNHIEUH
-0xB483 0xD073 # HANGUL SYLLABLE KHIEUKH-EU-TIKEUT
-0xB484 0xD075 # HANGUL SYLLABLE KHIEUKH-EU-RIEULKIYEOK
-0xB485 0xD076 # HANGUL SYLLABLE KHIEUKH-EU-RIEULMIEUM
-0xB486 0xD077 # HANGUL SYLLABLE KHIEUKH-EU-RIEULPIEUP
-0xB487 0xD078 # HANGUL SYLLABLE KHIEUKH-EU-RIEULSIOS
-0xB488 0xD079 # HANGUL SYLLABLE KHIEUKH-EU-RIEULTHIEUTH
-0xB489 0xD07A # HANGUL SYLLABLE KHIEUKH-EU-RIEULPHIEUPH
-0xB48A 0xD07B # HANGUL SYLLABLE KHIEUKH-EU-RIEULHIEUH
-0xB48B 0xD07E # HANGUL SYLLABLE KHIEUKH-EU-PIEUPSIOS
-0xB48C 0xD07F # HANGUL SYLLABLE KHIEUKH-EU-SIOS
-0xB48D 0xD080 # HANGUL SYLLABLE KHIEUKH-EU-SSANGSIOS
-0xB48E 0xD082 # HANGUL SYLLABLE KHIEUKH-EU-CIEUC
-0xB48F 0xD083 # HANGUL SYLLABLE KHIEUKH-EU-CHIEUCH
-0xB490 0xD084 # HANGUL SYLLABLE KHIEUKH-EU-KHIEUKH
-0xB491 0xD085 # HANGUL SYLLABLE KHIEUKH-EU-THIEUTH
-0xB492 0xD086 # HANGUL SYLLABLE KHIEUKH-EU-PHIEUPH
-0xB493 0xD087 # HANGUL SYLLABLE KHIEUKH-EU-HIEUH
-0xB494 0xD088 # HANGUL SYLLABLE KHIEUKH-YI
-0xB495 0xD089 # HANGUL SYLLABLE KHIEUKH-YI-KIYEOK
-0xB496 0xD08A # HANGUL SYLLABLE KHIEUKH-YI-SSANGKIYEOK
-0xB497 0xD08B # HANGUL SYLLABLE KHIEUKH-YI-KIYEOKSIOS
-0xB498 0xD08C # HANGUL SYLLABLE KHIEUKH-YI-NIEUN
-0xB499 0xD08D # HANGUL SYLLABLE KHIEUKH-YI-NIEUNCIEUC
-0xB49A 0xD08E # HANGUL SYLLABLE KHIEUKH-YI-NIEUNHIEUH
-0xB49B 0xD08F # HANGUL SYLLABLE KHIEUKH-YI-TIKEUT
-0xB49C 0xD090 # HANGUL SYLLABLE KHIEUKH-YI-RIEUL
-0xB49D 0xD091 # HANGUL SYLLABLE KHIEUKH-YI-RIEULKIYEOK
-0xB49E 0xD092 # HANGUL SYLLABLE KHIEUKH-YI-RIEULMIEUM
-0xB49F 0xD093 # HANGUL SYLLABLE KHIEUKH-YI-RIEULPIEUP
-0xB4A0 0xD094 # HANGUL SYLLABLE KHIEUKH-YI-RIEULSIOS
-0xB4A1 0xB1DF # HANGUL SYLLABLE NIEUN-OE-SIOS
-0xB4A2 0xB1E8 # HANGUL SYLLABLE NIEUN-YO
-0xB4A3 0xB1E9 # HANGUL SYLLABLE NIEUN-YO-KIYEOK
-0xB4A4 0xB1EC # HANGUL SYLLABLE NIEUN-YO-NIEUN
-0xB4A5 0xB1F0 # HANGUL SYLLABLE NIEUN-YO-RIEUL
-0xB4A6 0xB1F9 # HANGUL SYLLABLE NIEUN-YO-PIEUP
-0xB4A7 0xB1FB # HANGUL SYLLABLE NIEUN-YO-SIOS
-0xB4A8 0xB1FD # HANGUL SYLLABLE NIEUN-YO-IEUNG
-0xB4A9 0xB204 # HANGUL SYLLABLE NIEUN-U
-0xB4AA 0xB205 # HANGUL SYLLABLE NIEUN-U-KIYEOK
-0xB4AB 0xB208 # HANGUL SYLLABLE NIEUN-U-NIEUN
-0xB4AC 0xB20B # HANGUL SYLLABLE NIEUN-U-TIKEUT
-0xB4AD 0xB20C # HANGUL SYLLABLE NIEUN-U-RIEUL
-0xB4AE 0xB214 # HANGUL SYLLABLE NIEUN-U-MIEUM
-0xB4AF 0xB215 # HANGUL SYLLABLE NIEUN-U-PIEUP
-0xB4B0 0xB217 # HANGUL SYLLABLE NIEUN-U-SIOS
-0xB4B1 0xB219 # HANGUL SYLLABLE NIEUN-U-IEUNG
-0xB4B2 0xB220 # HANGUL SYLLABLE NIEUN-WEO
-0xB4B3 0xB234 # HANGUL SYLLABLE NIEUN-WEO-SSANGSIOS
-0xB4B4 0xB23C # HANGUL SYLLABLE NIEUN-WE
-0xB4B5 0xB258 # HANGUL SYLLABLE NIEUN-WI
-0xB4B6 0xB25C # HANGUL SYLLABLE NIEUN-WI-NIEUN
-0xB4B7 0xB260 # HANGUL SYLLABLE NIEUN-WI-RIEUL
-0xB4B8 0xB268 # HANGUL SYLLABLE NIEUN-WI-MIEUM
-0xB4B9 0xB269 # HANGUL SYLLABLE NIEUN-WI-PIEUP
-0xB4BA 0xB274 # HANGUL SYLLABLE NIEUN-YU
-0xB4BB 0xB275 # HANGUL SYLLABLE NIEUN-YU-KIYEOK
-0xB4BC 0xB27C # HANGUL SYLLABLE NIEUN-YU-RIEUL
-0xB4BD 0xB284 # HANGUL SYLLABLE NIEUN-YU-MIEUM
-0xB4BE 0xB285 # HANGUL SYLLABLE NIEUN-YU-PIEUP
-0xB4BF 0xB289 # HANGUL SYLLABLE NIEUN-YU-IEUNG
-0xB4C0 0xB290 # HANGUL SYLLABLE NIEUN-EU
-0xB4C1 0xB291 # HANGUL SYLLABLE NIEUN-EU-KIYEOK
-0xB4C2 0xB294 # HANGUL SYLLABLE NIEUN-EU-NIEUN
-0xB4C3 0xB298 # HANGUL SYLLABLE NIEUN-EU-RIEUL
-0xB4C4 0xB299 # HANGUL SYLLABLE NIEUN-EU-RIEULKIYEOK
-0xB4C5 0xB29A # HANGUL SYLLABLE NIEUN-EU-RIEULMIEUM
-0xB4C6 0xB2A0 # HANGUL SYLLABLE NIEUN-EU-MIEUM
-0xB4C7 0xB2A1 # HANGUL SYLLABLE NIEUN-EU-PIEUP
-0xB4C8 0xB2A3 # HANGUL SYLLABLE NIEUN-EU-SIOS
-0xB4C9 0xB2A5 # HANGUL SYLLABLE NIEUN-EU-IEUNG
-0xB4CA 0xB2A6 # HANGUL SYLLABLE NIEUN-EU-CIEUC
-0xB4CB 0xB2AA # HANGUL SYLLABLE NIEUN-EU-PHIEUPH
-0xB4CC 0xB2AC # HANGUL SYLLABLE NIEUN-YI
-0xB4CD 0xB2B0 # HANGUL SYLLABLE NIEUN-YI-NIEUN
-0xB4CE 0xB2B4 # HANGUL SYLLABLE NIEUN-YI-RIEUL
-0xB4CF 0xB2C8 # HANGUL SYLLABLE NIEUN-I
-0xB4D0 0xB2C9 # HANGUL SYLLABLE NIEUN-I-KIYEOK
-0xB4D1 0xB2CC # HANGUL SYLLABLE NIEUN-I-NIEUN
-0xB4D2 0xB2D0 # HANGUL SYLLABLE NIEUN-I-RIEUL
-0xB4D3 0xB2D2 # HANGUL SYLLABLE NIEUN-I-RIEULMIEUM-<3/22/95>
-0xB4D4 0xB2D8 # HANGUL SYLLABLE NIEUN-I-MIEUM
-0xB4D5 0xB2D9 # HANGUL SYLLABLE NIEUN-I-PIEUP
-0xB4D6 0xB2DB # HANGUL SYLLABLE NIEUN-I-SIOS
-0xB4D7 0xB2DD # HANGUL SYLLABLE NIEUN-I-IEUNG
-0xB4D8 0xB2E2 # HANGUL SYLLABLE NIEUN-I-PHIEUPH
-0xB4D9 0xB2E4 # HANGUL SYLLABLE TIKEUT-A
-0xB4DA 0xB2E5 # HANGUL SYLLABLE TIKEUT-A-KIYEOK
-0xB4DB 0xB2E6 # HANGUL SYLLABLE TIKEUT-A-SSANGKIYEOK
-0xB4DC 0xB2E8 # HANGUL SYLLABLE TIKEUT-A-NIEUN
-0xB4DD 0xB2EB # HANGUL SYLLABLE TIKEUT-A-TIKEUT
-0xB4DE 0xB2EC # HANGUL SYLLABLE TIKEUT-A-RIEUL
-0xB4DF 0xB2ED # HANGUL SYLLABLE TIKEUT-A-RIEULKIYEOK
-0xB4E0 0xB2EE # HANGUL SYLLABLE TIKEUT-A-RIEULMIEUM
-0xB4E1 0xB2EF # HANGUL SYLLABLE TIKEUT-A-RIEULPIEUP
-0xB4E2 0xB2F3 # HANGUL SYLLABLE TIKEUT-A-RIEULHIEUH
-0xB4E3 0xB2F4 # HANGUL SYLLABLE TIKEUT-A-MIEUM
-0xB4E4 0xB2F5 # HANGUL SYLLABLE TIKEUT-A-PIEUP
-0xB4E5 0xB2F7 # HANGUL SYLLABLE TIKEUT-A-SIOS
-0xB4E6 0xB2F8 # HANGUL SYLLABLE TIKEUT-A-SSANGSIOS
-0xB4E7 0xB2F9 # HANGUL SYLLABLE TIKEUT-A-IEUNG
-0xB4E8 0xB2FA # HANGUL SYLLABLE TIKEUT-A-CIEUC
-0xB4E9 0xB2FB # HANGUL SYLLABLE TIKEUT-A-CHIEUCH
-0xB4EA 0xB2FF # HANGUL SYLLABLE TIKEUT-A-HIEUH
-0xB4EB 0xB300 # HANGUL SYLLABLE TIKEUT-AE
-0xB4EC 0xB301 # HANGUL SYLLABLE TIKEUT-AE-KIYEOK
-0xB4ED 0xB304 # HANGUL SYLLABLE TIKEUT-AE-NIEUN
-0xB4EE 0xB308 # HANGUL SYLLABLE TIKEUT-AE-RIEUL
-0xB4EF 0xB310 # HANGUL SYLLABLE TIKEUT-AE-MIEUM
-0xB4F0 0xB311 # HANGUL SYLLABLE TIKEUT-AE-PIEUP
-0xB4F1 0xB313 # HANGUL SYLLABLE TIKEUT-AE-SIOS
-0xB4F2 0xB314 # HANGUL SYLLABLE TIKEUT-AE-SSANGSIOS
-0xB4F3 0xB315 # HANGUL SYLLABLE TIKEUT-AE-IEUNG
-0xB4F4 0xB31C # HANGUL SYLLABLE TIKEUT-YA
-0xB4F5 0xB354 # HANGUL SYLLABLE TIKEUT-EO
-0xB4F6 0xB355 # HANGUL SYLLABLE TIKEUT-EO-KIYEOK
-0xB4F7 0xB356 # HANGUL SYLLABLE TIKEUT-EO-SSANGKIYEOK
-0xB4F8 0xB358 # HANGUL SYLLABLE TIKEUT-EO-NIEUN
-0xB4F9 0xB35B # HANGUL SYLLABLE TIKEUT-EO-TIKEUT
-0xB4FA 0xB35C # HANGUL SYLLABLE TIKEUT-EO-RIEUL
-0xB4FB 0xB35E # HANGUL SYLLABLE TIKEUT-EO-RIEULMIEUM
-0xB4FC 0xB35F # HANGUL SYLLABLE TIKEUT-EO-RIEULPIEUP
-0xB4FD 0xB364 # HANGUL SYLLABLE TIKEUT-EO-MIEUM
-0xB4FE 0xB365 # HANGUL SYLLABLE TIKEUT-EO-PIEUP
-0xB541 0xD095 # HANGUL SYLLABLE KHIEUKH-YI-RIEULTHIEUTH
-0xB542 0xD096 # HANGUL SYLLABLE KHIEUKH-YI-RIEULPHIEUPH
-0xB543 0xD097 # HANGUL SYLLABLE KHIEUKH-YI-RIEULHIEUH
-0xB544 0xD098 # HANGUL SYLLABLE KHIEUKH-YI-MIEUM
-0xB545 0xD099 # HANGUL SYLLABLE KHIEUKH-YI-PIEUP
-0xB546 0xD09A # HANGUL SYLLABLE KHIEUKH-YI-PIEUPSIOS
-0xB547 0xD09B # HANGUL SYLLABLE KHIEUKH-YI-SIOS
-0xB548 0xD09C # HANGUL SYLLABLE KHIEUKH-YI-SSANGSIOS
-0xB549 0xD09D # HANGUL SYLLABLE KHIEUKH-YI-IEUNG
-0xB54A 0xD09E # HANGUL SYLLABLE KHIEUKH-YI-CIEUC
-0xB54B 0xD09F # HANGUL SYLLABLE KHIEUKH-YI-CHIEUCH
-0xB54C 0xD0A0 # HANGUL SYLLABLE KHIEUKH-YI-KHIEUKH
-0xB54D 0xD0A1 # HANGUL SYLLABLE KHIEUKH-YI-THIEUTH
-0xB54E 0xD0A2 # HANGUL SYLLABLE KHIEUKH-YI-PHIEUPH
-0xB54F 0xD0A3 # HANGUL SYLLABLE KHIEUKH-YI-HIEUH
-0xB550 0xD0A6 # HANGUL SYLLABLE KHIEUKH-I-SSANGKIYEOK
-0xB551 0xD0A7 # HANGUL SYLLABLE KHIEUKH-I-KIYEOKSIOS
-0xB552 0xD0A9 # HANGUL SYLLABLE KHIEUKH-I-NIEUNCIEUC
-0xB553 0xD0AA # HANGUL SYLLABLE KHIEUKH-I-NIEUNHIEUH
-0xB554 0xD0AB # HANGUL SYLLABLE KHIEUKH-I-TIKEUT
-0xB555 0xD0AD # HANGUL SYLLABLE KHIEUKH-I-RIEULKIYEOK
-0xB556 0xD0AE # HANGUL SYLLABLE KHIEUKH-I-RIEULMIEUM
-0xB557 0xD0AF # HANGUL SYLLABLE KHIEUKH-I-RIEULPIEUP
-0xB558 0xD0B0 # HANGUL SYLLABLE KHIEUKH-I-RIEULSIOS
-0xB559 0xD0B1 # HANGUL SYLLABLE KHIEUKH-I-RIEULTHIEUTH
-0xB55A 0xD0B2 # HANGUL SYLLABLE KHIEUKH-I-RIEULPHIEUPH
-0xB561 0xD0B3 # HANGUL SYLLABLE KHIEUKH-I-RIEULHIEUH
-0xB562 0xD0B6 # HANGUL SYLLABLE KHIEUKH-I-PIEUPSIOS
-0xB563 0xD0B8 # HANGUL SYLLABLE KHIEUKH-I-SSANGSIOS
-0xB564 0xD0BA # HANGUL SYLLABLE KHIEUKH-I-CIEUC
-0xB565 0xD0BB # HANGUL SYLLABLE KHIEUKH-I-CHIEUCH
-0xB566 0xD0BC # HANGUL SYLLABLE KHIEUKH-I-KHIEUKH
-0xB567 0xD0BD # HANGUL SYLLABLE KHIEUKH-I-THIEUTH
-0xB568 0xD0BE # HANGUL SYLLABLE KHIEUKH-I-PHIEUPH
-0xB569 0xD0BF # HANGUL SYLLABLE KHIEUKH-I-HIEUH
-0xB56A 0xD0C2 # HANGUL SYLLABLE THIEUTH-A-SSANGKIYEOK
-0xB56B 0xD0C3 # HANGUL SYLLABLE THIEUTH-A-KIYEOKSIOS
-0xB56C 0xD0C5 # HANGUL SYLLABLE THIEUTH-A-NIEUNCIEUC
-0xB56D 0xD0C6 # HANGUL SYLLABLE THIEUTH-A-NIEUNHIEUH
-0xB56E 0xD0C7 # HANGUL SYLLABLE THIEUTH-A-TIKEUT
-0xB56F 0xD0CA # HANGUL SYLLABLE THIEUTH-A-RIEULMIEUM
-0xB570 0xD0CB # HANGUL SYLLABLE THIEUTH-A-RIEULPIEUP
-0xB571 0xD0CC # HANGUL SYLLABLE THIEUTH-A-RIEULSIOS
-0xB572 0xD0CD # HANGUL SYLLABLE THIEUTH-A-RIEULTHIEUTH
-0xB573 0xD0CE # HANGUL SYLLABLE THIEUTH-A-RIEULPHIEUPH
-0xB574 0xD0CF # HANGUL SYLLABLE THIEUTH-A-RIEULHIEUH
-0xB575 0xD0D2 # HANGUL SYLLABLE THIEUTH-A-PIEUPSIOS
-0xB576 0xD0D6 # HANGUL SYLLABLE THIEUTH-A-CIEUC
-0xB577 0xD0D7 # HANGUL SYLLABLE THIEUTH-A-CHIEUCH
-0xB578 0xD0D8 # HANGUL SYLLABLE THIEUTH-A-KHIEUKH
-0xB579 0xD0D9 # HANGUL SYLLABLE THIEUTH-A-THIEUTH
-0xB57A 0xD0DA # HANGUL SYLLABLE THIEUTH-A-PHIEUPH
-0xB581 0xD0DB # HANGUL SYLLABLE THIEUTH-A-HIEUH
-0xB582 0xD0DE # HANGUL SYLLABLE THIEUTH-AE-SSANGKIYEOK
-0xB583 0xD0DF # HANGUL SYLLABLE THIEUTH-AE-KIYEOKSIOS
-0xB584 0xD0E1 # HANGUL SYLLABLE THIEUTH-AE-NIEUNCIEUC
-0xB585 0xD0E2 # HANGUL SYLLABLE THIEUTH-AE-NIEUNHIEUH
-0xB586 0xD0E3 # HANGUL SYLLABLE THIEUTH-AE-TIKEUT
-0xB587 0xD0E5 # HANGUL SYLLABLE THIEUTH-AE-RIEULKIYEOK
-0xB588 0xD0E6 # HANGUL SYLLABLE THIEUTH-AE-RIEULMIEUM
-0xB589 0xD0E7 # HANGUL SYLLABLE THIEUTH-AE-RIEULPIEUP
-0xB58A 0xD0E8 # HANGUL SYLLABLE THIEUTH-AE-RIEULSIOS
-0xB58B 0xD0E9 # HANGUL SYLLABLE THIEUTH-AE-RIEULTHIEUTH
-0xB58C 0xD0EA # HANGUL SYLLABLE THIEUTH-AE-RIEULPHIEUPH
-0xB58D 0xD0EB # HANGUL SYLLABLE THIEUTH-AE-RIEULHIEUH
-0xB58E 0xD0EE # HANGUL SYLLABLE THIEUTH-AE-PIEUPSIOS
-0xB58F 0xD0F2 # HANGUL SYLLABLE THIEUTH-AE-CIEUC
-0xB590 0xD0F3 # HANGUL SYLLABLE THIEUTH-AE-CHIEUCH
-0xB591 0xD0F4 # HANGUL SYLLABLE THIEUTH-AE-KHIEUKH
-0xB592 0xD0F5 # HANGUL SYLLABLE THIEUTH-AE-THIEUTH
-0xB593 0xD0F6 # HANGUL SYLLABLE THIEUTH-AE-PHIEUPH
-0xB594 0xD0F7 # HANGUL SYLLABLE THIEUTH-AE-HIEUH
-0xB595 0xD0F9 # HANGUL SYLLABLE THIEUTH-YA-KIYEOK
-0xB596 0xD0FA # HANGUL SYLLABLE THIEUTH-YA-SSANGKIYEOK
-0xB597 0xD0FB # HANGUL SYLLABLE THIEUTH-YA-KIYEOKSIOS
-0xB598 0xD0FC # HANGUL SYLLABLE THIEUTH-YA-NIEUN
-0xB599 0xD0FD # HANGUL SYLLABLE THIEUTH-YA-NIEUNCIEUC
-0xB59A 0xD0FE # HANGUL SYLLABLE THIEUTH-YA-NIEUNHIEUH
-0xB59B 0xD0FF # HANGUL SYLLABLE THIEUTH-YA-TIKEUT
-0xB59C 0xD100 # HANGUL SYLLABLE THIEUTH-YA-RIEUL
-0xB59D 0xD101 # HANGUL SYLLABLE THIEUTH-YA-RIEULKIYEOK
-0xB59E 0xD102 # HANGUL SYLLABLE THIEUTH-YA-RIEULMIEUM
-0xB59F 0xD103 # HANGUL SYLLABLE THIEUTH-YA-RIEULPIEUP
-0xB5A0 0xD104 # HANGUL SYLLABLE THIEUTH-YA-RIEULSIOS
-0xB5A1 0xB367 # HANGUL SYLLABLE TIKEUT-EO-SIOS
-0xB5A2 0xB369 # HANGUL SYLLABLE TIKEUT-EO-IEUNG
-0xB5A3 0xB36B # HANGUL SYLLABLE TIKEUT-EO-CHIEUCH
-0xB5A4 0xB36E # HANGUL SYLLABLE TIKEUT-EO-PHIEUPH
-0xB5A5 0xB370 # HANGUL SYLLABLE TIKEUT-E
-0xB5A6 0xB371 # HANGUL SYLLABLE TIKEUT-E-KIYEOK
-0xB5A7 0xB374 # HANGUL SYLLABLE TIKEUT-E-NIEUN
-0xB5A8 0xB378 # HANGUL SYLLABLE TIKEUT-E-RIEUL
-0xB5A9 0xB380 # HANGUL SYLLABLE TIKEUT-E-MIEUM
-0xB5AA 0xB381 # HANGUL SYLLABLE TIKEUT-E-PIEUP
-0xB5AB 0xB383 # HANGUL SYLLABLE TIKEUT-E-SIOS
-0xB5AC 0xB384 # HANGUL SYLLABLE TIKEUT-E-SSANGSIOS
-0xB5AD 0xB385 # HANGUL SYLLABLE TIKEUT-E-IEUNG
-0xB5AE 0xB38C # HANGUL SYLLABLE TIKEUT-YEO
-0xB5AF 0xB390 # HANGUL SYLLABLE TIKEUT-YEO-NIEUN
-0xB5B0 0xB394 # HANGUL SYLLABLE TIKEUT-YEO-RIEUL
-0xB5B1 0xB3A0 # HANGUL SYLLABLE TIKEUT-YEO-SSANGSIOS
-0xB5B2 0xB3A1 # HANGUL SYLLABLE TIKEUT-YEO-IEUNG
-0xB5B3 0xB3A8 # HANGUL SYLLABLE TIKEUT-YE
-0xB5B4 0xB3AC # HANGUL SYLLABLE TIKEUT-YE-NIEUN
-0xB5B5 0xB3C4 # HANGUL SYLLABLE TIKEUT-O
-0xB5B6 0xB3C5 # HANGUL SYLLABLE TIKEUT-O-KIYEOK
-0xB5B7 0xB3C8 # HANGUL SYLLABLE TIKEUT-O-NIEUN
-0xB5B8 0xB3CB # HANGUL SYLLABLE TIKEUT-O-TIKEUT
-0xB5B9 0xB3CC # HANGUL SYLLABLE TIKEUT-O-RIEUL
-0xB5BA 0xB3CE # HANGUL SYLLABLE TIKEUT-O-RIEULMIEUM
-0xB5BB 0xB3D0 # HANGUL SYLLABLE TIKEUT-O-RIEULSIOS
-0xB5BC 0xB3D4 # HANGUL SYLLABLE TIKEUT-O-MIEUM
-0xB5BD 0xB3D5 # HANGUL SYLLABLE TIKEUT-O-PIEUP
-0xB5BE 0xB3D7 # HANGUL SYLLABLE TIKEUT-O-SIOS
-0xB5BF 0xB3D9 # HANGUL SYLLABLE TIKEUT-O-IEUNG
-0xB5C0 0xB3DB # HANGUL SYLLABLE TIKEUT-O-CHIEUCH
-0xB5C1 0xB3DD # HANGUL SYLLABLE TIKEUT-O-THIEUTH
-0xB5C2 0xB3E0 # HANGUL SYLLABLE TIKEUT-WA
-0xB5C3 0xB3E4 # HANGUL SYLLABLE TIKEUT-WA-NIEUN
-0xB5C4 0xB3E8 # HANGUL SYLLABLE TIKEUT-WA-RIEUL
-0xB5C5 0xB3FC # HANGUL SYLLABLE TIKEUT-WAE
-0xB5C6 0xB410 # HANGUL SYLLABLE TIKEUT-WAE-SSANGSIOS
-0xB5C7 0xB418 # HANGUL SYLLABLE TIKEUT-OE
-0xB5C8 0xB41C # HANGUL SYLLABLE TIKEUT-OE-NIEUN
-0xB5C9 0xB420 # HANGUL SYLLABLE TIKEUT-OE-RIEUL
-0xB5CA 0xB428 # HANGUL SYLLABLE TIKEUT-OE-MIEUM
-0xB5CB 0xB429 # HANGUL SYLLABLE TIKEUT-OE-PIEUP
-0xB5CC 0xB42B # HANGUL SYLLABLE TIKEUT-OE-SIOS
-0xB5CD 0xB434 # HANGUL SYLLABLE TIKEUT-YO
-0xB5CE 0xB450 # HANGUL SYLLABLE TIKEUT-U
-0xB5CF 0xB451 # HANGUL SYLLABLE TIKEUT-U-KIYEOK
-0xB5D0 0xB454 # HANGUL SYLLABLE TIKEUT-U-NIEUN
-0xB5D1 0xB458 # HANGUL SYLLABLE TIKEUT-U-RIEUL
-0xB5D2 0xB460 # HANGUL SYLLABLE TIKEUT-U-MIEUM
-0xB5D3 0xB461 # HANGUL SYLLABLE TIKEUT-U-PIEUP
-0xB5D4 0xB463 # HANGUL SYLLABLE TIKEUT-U-SIOS
-0xB5D5 0xB465 # HANGUL SYLLABLE TIKEUT-U-IEUNG
-0xB5D6 0xB46C # HANGUL SYLLABLE TIKEUT-WEO
-0xB5D7 0xB480 # HANGUL SYLLABLE TIKEUT-WEO-SSANGSIOS
-0xB5D8 0xB488 # HANGUL SYLLABLE TIKEUT-WE
-0xB5D9 0xB49D # HANGUL SYLLABLE TIKEUT-WE-IEUNG
-0xB5DA 0xB4A4 # HANGUL SYLLABLE TIKEUT-WI
-0xB5DB 0xB4A8 # HANGUL SYLLABLE TIKEUT-WI-NIEUN
-0xB5DC 0xB4AC # HANGUL SYLLABLE TIKEUT-WI-RIEUL
-0xB5DD 0xB4B5 # HANGUL SYLLABLE TIKEUT-WI-PIEUP
-0xB5DE 0xB4B7 # HANGUL SYLLABLE TIKEUT-WI-SIOS
-0xB5DF 0xB4B9 # HANGUL SYLLABLE TIKEUT-WI-IEUNG
-0xB5E0 0xB4C0 # HANGUL SYLLABLE TIKEUT-YU
-0xB5E1 0xB4C4 # HANGUL SYLLABLE TIKEUT-YU-NIEUN
-0xB5E2 0xB4C8 # HANGUL SYLLABLE TIKEUT-YU-RIEUL
-0xB5E3 0xB4D0 # HANGUL SYLLABLE TIKEUT-YU-MIEUM
-0xB5E4 0xB4D5 # HANGUL SYLLABLE TIKEUT-YU-IEUNG
-0xB5E5 0xB4DC # HANGUL SYLLABLE TIKEUT-EU
-0xB5E6 0xB4DD # HANGUL SYLLABLE TIKEUT-EU-KIYEOK
-0xB5E7 0xB4E0 # HANGUL SYLLABLE TIKEUT-EU-NIEUN
-0xB5E8 0xB4E3 # HANGUL SYLLABLE TIKEUT-EU-TIKEUT
-0xB5E9 0xB4E4 # HANGUL SYLLABLE TIKEUT-EU-RIEUL
-0xB5EA 0xB4E6 # HANGUL SYLLABLE TIKEUT-EU-RIEULMIEUM
-0xB5EB 0xB4EC # HANGUL SYLLABLE TIKEUT-EU-MIEUM
-0xB5EC 0xB4ED # HANGUL SYLLABLE TIKEUT-EU-PIEUP
-0xB5ED 0xB4EF # HANGUL SYLLABLE TIKEUT-EU-SIOS
-0xB5EE 0xB4F1 # HANGUL SYLLABLE TIKEUT-EU-IEUNG
-0xB5EF 0xB4F8 # HANGUL SYLLABLE TIKEUT-YI
-0xB5F0 0xB514 # HANGUL SYLLABLE TIKEUT-I
-0xB5F1 0xB515 # HANGUL SYLLABLE TIKEUT-I-KIYEOK
-0xB5F2 0xB518 # HANGUL SYLLABLE TIKEUT-I-NIEUN
-0xB5F3 0xB51B # HANGUL SYLLABLE TIKEUT-I-TIKEUT
-0xB5F4 0xB51C # HANGUL SYLLABLE TIKEUT-I-RIEUL
-0xB5F5 0xB524 # HANGUL SYLLABLE TIKEUT-I-MIEUM
-0xB5F6 0xB525 # HANGUL SYLLABLE TIKEUT-I-PIEUP
-0xB5F7 0xB527 # HANGUL SYLLABLE TIKEUT-I-SIOS
-0xB5F8 0xB528 # HANGUL SYLLABLE TIKEUT-I-SSANGSIOS
-0xB5F9 0xB529 # HANGUL SYLLABLE TIKEUT-I-IEUNG
-0xB5FA 0xB52A # HANGUL SYLLABLE TIKEUT-I-CIEUC
-0xB5FB 0xB530 # HANGUL SYLLABLE SSANGTIKEUT-A
-0xB5FC 0xB531 # HANGUL SYLLABLE SSANGTIKEUT-A-KIYEOK
-0xB5FD 0xB534 # HANGUL SYLLABLE SSANGTIKEUT-A-NIEUN
-0xB5FE 0xB538 # HANGUL SYLLABLE SSANGTIKEUT-A-RIEUL
-0xB641 0xD105 # HANGUL SYLLABLE THIEUTH-YA-RIEULTHIEUTH
-0xB642 0xD106 # HANGUL SYLLABLE THIEUTH-YA-RIEULPHIEUPH
-0xB643 0xD107 # HANGUL SYLLABLE THIEUTH-YA-RIEULHIEUH
-0xB644 0xD108 # HANGUL SYLLABLE THIEUTH-YA-MIEUM
-0xB645 0xD109 # HANGUL SYLLABLE THIEUTH-YA-PIEUP
-0xB646 0xD10A # HANGUL SYLLABLE THIEUTH-YA-PIEUPSIOS
-0xB647 0xD10B # HANGUL SYLLABLE THIEUTH-YA-SIOS
-0xB648 0xD10C # HANGUL SYLLABLE THIEUTH-YA-SSANGSIOS
-0xB649 0xD10E # HANGUL SYLLABLE THIEUTH-YA-CIEUC
-0xB64A 0xD10F # HANGUL SYLLABLE THIEUTH-YA-CHIEUCH
-0xB64B 0xD110 # HANGUL SYLLABLE THIEUTH-YA-KHIEUKH
-0xB64C 0xD111 # HANGUL SYLLABLE THIEUTH-YA-THIEUTH
-0xB64D 0xD112 # HANGUL SYLLABLE THIEUTH-YA-PHIEUPH
-0xB64E 0xD113 # HANGUL SYLLABLE THIEUTH-YA-HIEUH
-0xB64F 0xD114 # HANGUL SYLLABLE THIEUTH-YAE
-0xB650 0xD115 # HANGUL SYLLABLE THIEUTH-YAE-KIYEOK
-0xB651 0xD116 # HANGUL SYLLABLE THIEUTH-YAE-SSANGKIYEOK
-0xB652 0xD117 # HANGUL SYLLABLE THIEUTH-YAE-KIYEOKSIOS
-0xB653 0xD118 # HANGUL SYLLABLE THIEUTH-YAE-NIEUN
-0xB654 0xD119 # HANGUL SYLLABLE THIEUTH-YAE-NIEUNCIEUC
-0xB655 0xD11A # HANGUL SYLLABLE THIEUTH-YAE-NIEUNHIEUH
-0xB656 0xD11B # HANGUL SYLLABLE THIEUTH-YAE-TIKEUT
-0xB657 0xD11C # HANGUL SYLLABLE THIEUTH-YAE-RIEUL
-0xB658 0xD11D # HANGUL SYLLABLE THIEUTH-YAE-RIEULKIYEOK
-0xB659 0xD11E # HANGUL SYLLABLE THIEUTH-YAE-RIEULMIEUM
-0xB65A 0xD11F # HANGUL SYLLABLE THIEUTH-YAE-RIEULPIEUP
-0xB661 0xD120 # HANGUL SYLLABLE THIEUTH-YAE-RIEULSIOS
-0xB662 0xD121 # HANGUL SYLLABLE THIEUTH-YAE-RIEULTHIEUTH
-0xB663 0xD122 # HANGUL SYLLABLE THIEUTH-YAE-RIEULPHIEUPH
-0xB664 0xD123 # HANGUL SYLLABLE THIEUTH-YAE-RIEULHIEUH
-0xB665 0xD124 # HANGUL SYLLABLE THIEUTH-YAE-MIEUM
-0xB666 0xD125 # HANGUL SYLLABLE THIEUTH-YAE-PIEUP
-0xB667 0xD126 # HANGUL SYLLABLE THIEUTH-YAE-PIEUPSIOS
-0xB668 0xD127 # HANGUL SYLLABLE THIEUTH-YAE-SIOS
-0xB669 0xD128 # HANGUL SYLLABLE THIEUTH-YAE-SSANGSIOS
-0xB66A 0xD129 # HANGUL SYLLABLE THIEUTH-YAE-IEUNG
-0xB66B 0xD12A # HANGUL SYLLABLE THIEUTH-YAE-CIEUC
-0xB66C 0xD12B # HANGUL SYLLABLE THIEUTH-YAE-CHIEUCH
-0xB66D 0xD12C # HANGUL SYLLABLE THIEUTH-YAE-KHIEUKH
-0xB66E 0xD12D # HANGUL SYLLABLE THIEUTH-YAE-THIEUTH
-0xB66F 0xD12E # HANGUL SYLLABLE THIEUTH-YAE-PHIEUPH
-0xB670 0xD12F # HANGUL SYLLABLE THIEUTH-YAE-HIEUH
-0xB671 0xD132 # HANGUL SYLLABLE THIEUTH-EO-SSANGKIYEOK
-0xB672 0xD133 # HANGUL SYLLABLE THIEUTH-EO-KIYEOKSIOS
-0xB673 0xD135 # HANGUL SYLLABLE THIEUTH-EO-NIEUNCIEUC
-0xB674 0xD136 # HANGUL SYLLABLE THIEUTH-EO-NIEUNHIEUH
-0xB675 0xD137 # HANGUL SYLLABLE THIEUTH-EO-TIKEUT
-0xB676 0xD139 # HANGUL SYLLABLE THIEUTH-EO-RIEULKIYEOK
-0xB677 0xD13B # HANGUL SYLLABLE THIEUTH-EO-RIEULPIEUP
-0xB678 0xD13C # HANGUL SYLLABLE THIEUTH-EO-RIEULSIOS
-0xB679 0xD13D # HANGUL SYLLABLE THIEUTH-EO-RIEULTHIEUTH
-0xB67A 0xD13E # HANGUL SYLLABLE THIEUTH-EO-RIEULPHIEUPH
-0xB681 0xD13F # HANGUL SYLLABLE THIEUTH-EO-RIEULHIEUH
-0xB682 0xD142 # HANGUL SYLLABLE THIEUTH-EO-PIEUPSIOS
-0xB683 0xD146 # HANGUL SYLLABLE THIEUTH-EO-CIEUC
-0xB684 0xD147 # HANGUL SYLLABLE THIEUTH-EO-CHIEUCH
-0xB685 0xD148 # HANGUL SYLLABLE THIEUTH-EO-KHIEUKH
-0xB686 0xD149 # HANGUL SYLLABLE THIEUTH-EO-THIEUTH
-0xB687 0xD14A # HANGUL SYLLABLE THIEUTH-EO-PHIEUPH
-0xB688 0xD14B # HANGUL SYLLABLE THIEUTH-EO-HIEUH
-0xB689 0xD14E # HANGUL SYLLABLE THIEUTH-E-SSANGKIYEOK
-0xB68A 0xD14F # HANGUL SYLLABLE THIEUTH-E-KIYEOKSIOS
-0xB68B 0xD151 # HANGUL SYLLABLE THIEUTH-E-NIEUNCIEUC
-0xB68C 0xD152 # HANGUL SYLLABLE THIEUTH-E-NIEUNHIEUH
-0xB68D 0xD153 # HANGUL SYLLABLE THIEUTH-E-TIKEUT
-0xB68E 0xD155 # HANGUL SYLLABLE THIEUTH-E-RIEULKIYEOK
-0xB68F 0xD156 # HANGUL SYLLABLE THIEUTH-E-RIEULMIEUM
-0xB690 0xD157 # HANGUL SYLLABLE THIEUTH-E-RIEULPIEUP
-0xB691 0xD158 # HANGUL SYLLABLE THIEUTH-E-RIEULSIOS
-0xB692 0xD159 # HANGUL SYLLABLE THIEUTH-E-RIEULTHIEUTH
-0xB693 0xD15A # HANGUL SYLLABLE THIEUTH-E-RIEULPHIEUPH
-0xB694 0xD15B # HANGUL SYLLABLE THIEUTH-E-RIEULHIEUH
-0xB695 0xD15E # HANGUL SYLLABLE THIEUTH-E-PIEUPSIOS
-0xB696 0xD160 # HANGUL SYLLABLE THIEUTH-E-SSANGSIOS
-0xB697 0xD162 # HANGUL SYLLABLE THIEUTH-E-CIEUC
-0xB698 0xD163 # HANGUL SYLLABLE THIEUTH-E-CHIEUCH
-0xB699 0xD164 # HANGUL SYLLABLE THIEUTH-E-KHIEUKH
-0xB69A 0xD165 # HANGUL SYLLABLE THIEUTH-E-THIEUTH
-0xB69B 0xD166 # HANGUL SYLLABLE THIEUTH-E-PHIEUPH
-0xB69C 0xD167 # HANGUL SYLLABLE THIEUTH-E-HIEUH
-0xB69D 0xD169 # HANGUL SYLLABLE THIEUTH-YEO-KIYEOK
-0xB69E 0xD16A # HANGUL SYLLABLE THIEUTH-YEO-SSANGKIYEOK
-0xB69F 0xD16B # HANGUL SYLLABLE THIEUTH-YEO-KIYEOKSIOS
-0xB6A0 0xD16D # HANGUL SYLLABLE THIEUTH-YEO-NIEUNCIEUC
-0xB6A1 0xB540 # HANGUL SYLLABLE SSANGTIKEUT-A-MIEUM
-0xB6A2 0xB541 # HANGUL SYLLABLE SSANGTIKEUT-A-PIEUP
-0xB6A3 0xB543 # HANGUL SYLLABLE SSANGTIKEUT-A-SIOS
-0xB6A4 0xB544 # HANGUL SYLLABLE SSANGTIKEUT-A-SSANGSIOS
-0xB6A5 0xB545 # HANGUL SYLLABLE SSANGTIKEUT-A-IEUNG
-0xB6A6 0xB54B # HANGUL SYLLABLE SSANGTIKEUT-A-HIEUH
-0xB6A7 0xB54C # HANGUL SYLLABLE SSANGTIKEUT-AE
-0xB6A8 0xB54D # HANGUL SYLLABLE SSANGTIKEUT-AE-KIYEOK
-0xB6A9 0xB550 # HANGUL SYLLABLE SSANGTIKEUT-AE-NIEUN
-0xB6AA 0xB554 # HANGUL SYLLABLE SSANGTIKEUT-AE-RIEUL
-0xB6AB 0xB55C # HANGUL SYLLABLE SSANGTIKEUT-AE-MIEUM
-0xB6AC 0xB55D # HANGUL SYLLABLE SSANGTIKEUT-AE-PIEUP
-0xB6AD 0xB55F # HANGUL SYLLABLE SSANGTIKEUT-AE-SIOS
-0xB6AE 0xB560 # HANGUL SYLLABLE SSANGTIKEUT-AE-SSANGSIOS
-0xB6AF 0xB561 # HANGUL SYLLABLE SSANGTIKEUT-AE-IEUNG
-0xB6B0 0xB5A0 # HANGUL SYLLABLE SSANGTIKEUT-EO
-0xB6B1 0xB5A1 # HANGUL SYLLABLE SSANGTIKEUT-EO-KIYEOK
-0xB6B2 0xB5A4 # HANGUL SYLLABLE SSANGTIKEUT-EO-NIEUN
-0xB6B3 0xB5A8 # HANGUL SYLLABLE SSANGTIKEUT-EO-RIEUL
-0xB6B4 0xB5AA # HANGUL SYLLABLE SSANGTIKEUT-EO-RIEULMIEUM
-0xB6B5 0xB5AB # HANGUL SYLLABLE SSANGTIKEUT-EO-RIEULPIEUP
-0xB6B6 0xB5B0 # HANGUL SYLLABLE SSANGTIKEUT-EO-MIEUM
-0xB6B7 0xB5B1 # HANGUL SYLLABLE SSANGTIKEUT-EO-PIEUP
-0xB6B8 0xB5B3 # HANGUL SYLLABLE SSANGTIKEUT-EO-SIOS
-0xB6B9 0xB5B4 # HANGUL SYLLABLE SSANGTIKEUT-EO-SSANGSIOS
-0xB6BA 0xB5B5 # HANGUL SYLLABLE SSANGTIKEUT-EO-IEUNG
-0xB6BB 0xB5BB # HANGUL SYLLABLE SSANGTIKEUT-EO-HIEUH
-0xB6BC 0xB5BC # HANGUL SYLLABLE SSANGTIKEUT-E
-0xB6BD 0xB5BD # HANGUL SYLLABLE SSANGTIKEUT-E-KIYEOK
-0xB6BE 0xB5C0 # HANGUL SYLLABLE SSANGTIKEUT-E-NIEUN
-0xB6BF 0xB5C4 # HANGUL SYLLABLE SSANGTIKEUT-E-RIEUL
-0xB6C0 0xB5CC # HANGUL SYLLABLE SSANGTIKEUT-E-MIEUM
-0xB6C1 0xB5CD # HANGUL SYLLABLE SSANGTIKEUT-E-PIEUP
-0xB6C2 0xB5CF # HANGUL SYLLABLE SSANGTIKEUT-E-SIOS
-0xB6C3 0xB5D0 # HANGUL SYLLABLE SSANGTIKEUT-E-SSANGSIOS
-0xB6C4 0xB5D1 # HANGUL SYLLABLE SSANGTIKEUT-E-IEUNG
-0xB6C5 0xB5D8 # HANGUL SYLLABLE SSANGTIKEUT-YEO
-0xB6C6 0xB5EC # HANGUL SYLLABLE SSANGTIKEUT-YEO-SSANGSIOS
-0xB6C7 0xB610 # HANGUL SYLLABLE SSANGTIKEUT-O
-0xB6C8 0xB611 # HANGUL SYLLABLE SSANGTIKEUT-O-KIYEOK
-0xB6C9 0xB614 # HANGUL SYLLABLE SSANGTIKEUT-O-NIEUN
-0xB6CA 0xB618 # HANGUL SYLLABLE SSANGTIKEUT-O-RIEUL
-0xB6CB 0xB625 # HANGUL SYLLABLE SSANGTIKEUT-O-IEUNG
-0xB6CC 0xB62C # HANGUL SYLLABLE SSANGTIKEUT-WA
-0xB6CD 0xB634 # HANGUL SYLLABLE SSANGTIKEUT-WA-RIEUL
-0xB6CE 0xB648 # HANGUL SYLLABLE SSANGTIKEUT-WAE
-0xB6CF 0xB664 # HANGUL SYLLABLE SSANGTIKEUT-OE
-0xB6D0 0xB668 # HANGUL SYLLABLE SSANGTIKEUT-OE-NIEUN
-0xB6D1 0xB69C # HANGUL SYLLABLE SSANGTIKEUT-U
-0xB6D2 0xB69D # HANGUL SYLLABLE SSANGTIKEUT-U-KIYEOK
-0xB6D3 0xB6A0 # HANGUL SYLLABLE SSANGTIKEUT-U-NIEUN
-0xB6D4 0xB6A4 # HANGUL SYLLABLE SSANGTIKEUT-U-RIEUL
-0xB6D5 0xB6AB # HANGUL SYLLABLE SSANGTIKEUT-U-RIEULHIEUH
-0xB6D6 0xB6AC # HANGUL SYLLABLE SSANGTIKEUT-U-MIEUM
-0xB6D7 0xB6B1 # HANGUL SYLLABLE SSANGTIKEUT-U-IEUNG
-0xB6D8 0xB6D4 # HANGUL SYLLABLE SSANGTIKEUT-WE
-0xB6D9 0xB6F0 # HANGUL SYLLABLE SSANGTIKEUT-WI
-0xB6DA 0xB6F4 # HANGUL SYLLABLE SSANGTIKEUT-WI-NIEUN
-0xB6DB 0xB6F8 # HANGUL SYLLABLE SSANGTIKEUT-WI-RIEUL
-0xB6DC 0xB700 # HANGUL SYLLABLE SSANGTIKEUT-WI-MIEUM
-0xB6DD 0xB701 # HANGUL SYLLABLE SSANGTIKEUT-WI-PIEUP
-0xB6DE 0xB705 # HANGUL SYLLABLE SSANGTIKEUT-WI-IEUNG
-0xB6DF 0xB728 # HANGUL SYLLABLE SSANGTIKEUT-EU
-0xB6E0 0xB729 # HANGUL SYLLABLE SSANGTIKEUT-EU-KIYEOK
-0xB6E1 0xB72C # HANGUL SYLLABLE SSANGTIKEUT-EU-NIEUN
-0xB6E2 0xB72F # HANGUL SYLLABLE SSANGTIKEUT-EU-TIKEUT
-0xB6E3 0xB730 # HANGUL SYLLABLE SSANGTIKEUT-EU-RIEUL
-0xB6E4 0xB738 # HANGUL SYLLABLE SSANGTIKEUT-EU-MIEUM
-0xB6E5 0xB739 # HANGUL SYLLABLE SSANGTIKEUT-EU-PIEUP
-0xB6E6 0xB73B # HANGUL SYLLABLE SSANGTIKEUT-EU-SIOS
-0xB6E7 0xB744 # HANGUL SYLLABLE SSANGTIKEUT-YI
-0xB6E8 0xB748 # HANGUL SYLLABLE SSANGTIKEUT-YI-NIEUN
-0xB6E9 0xB74C # HANGUL SYLLABLE SSANGTIKEUT-YI-RIEUL
-0xB6EA 0xB754 # HANGUL SYLLABLE SSANGTIKEUT-YI-MIEUM
-0xB6EB 0xB755 # HANGUL SYLLABLE SSANGTIKEUT-YI-PIEUP
-0xB6EC 0xB760 # HANGUL SYLLABLE SSANGTIKEUT-I
-0xB6ED 0xB764 # HANGUL SYLLABLE SSANGTIKEUT-I-NIEUN
-0xB6EE 0xB768 # HANGUL SYLLABLE SSANGTIKEUT-I-RIEUL
-0xB6EF 0xB770 # HANGUL SYLLABLE SSANGTIKEUT-I-MIEUM
-0xB6F0 0xB771 # HANGUL SYLLABLE SSANGTIKEUT-I-PIEUP
-0xB6F1 0xB773 # HANGUL SYLLABLE SSANGTIKEUT-I-SIOS
-0xB6F2 0xB775 # HANGUL SYLLABLE SSANGTIKEUT-I-IEUNG
-0xB6F3 0xB77C # HANGUL SYLLABLE RIEUL-A
-0xB6F4 0xB77D # HANGUL SYLLABLE RIEUL-A-KIYEOK
-0xB6F5 0xB780 # HANGUL SYLLABLE RIEUL-A-NIEUN
-0xB6F6 0xB784 # HANGUL SYLLABLE RIEUL-A-RIEUL
-0xB6F7 0xB78C # HANGUL SYLLABLE RIEUL-A-MIEUM
-0xB6F8 0xB78D # HANGUL SYLLABLE RIEUL-A-PIEUP
-0xB6F9 0xB78F # HANGUL SYLLABLE RIEUL-A-SIOS
-0xB6FA 0xB790 # HANGUL SYLLABLE RIEUL-A-SSANGSIOS
-0xB6FB 0xB791 # HANGUL SYLLABLE RIEUL-A-IEUNG
-0xB6FC 0xB792 # HANGUL SYLLABLE RIEUL-A-CIEUC
-0xB6FD 0xB796 # HANGUL SYLLABLE RIEUL-A-PHIEUPH
-0xB6FE 0xB797 # HANGUL SYLLABLE RIEUL-A-HIEUH
-0xB741 0xD16E # HANGUL SYLLABLE THIEUTH-YEO-NIEUNHIEUH
-0xB742 0xD16F # HANGUL SYLLABLE THIEUTH-YEO-TIKEUT
-0xB743 0xD170 # HANGUL SYLLABLE THIEUTH-YEO-RIEUL
-0xB744 0xD171 # HANGUL SYLLABLE THIEUTH-YEO-RIEULKIYEOK
-0xB745 0xD172 # HANGUL SYLLABLE THIEUTH-YEO-RIEULMIEUM
-0xB746 0xD173 # HANGUL SYLLABLE THIEUTH-YEO-RIEULPIEUP
-0xB747 0xD174 # HANGUL SYLLABLE THIEUTH-YEO-RIEULSIOS
-0xB748 0xD175 # HANGUL SYLLABLE THIEUTH-YEO-RIEULTHIEUTH
-0xB749 0xD176 # HANGUL SYLLABLE THIEUTH-YEO-RIEULPHIEUPH
-0xB74A 0xD177 # HANGUL SYLLABLE THIEUTH-YEO-RIEULHIEUH
-0xB74B 0xD178 # HANGUL SYLLABLE THIEUTH-YEO-MIEUM
-0xB74C 0xD179 # HANGUL SYLLABLE THIEUTH-YEO-PIEUP
-0xB74D 0xD17A # HANGUL SYLLABLE THIEUTH-YEO-PIEUPSIOS
-0xB74E 0xD17B # HANGUL SYLLABLE THIEUTH-YEO-SIOS
-0xB74F 0xD17D # HANGUL SYLLABLE THIEUTH-YEO-IEUNG
-0xB750 0xD17E # HANGUL SYLLABLE THIEUTH-YEO-CIEUC
-0xB751 0xD17F # HANGUL SYLLABLE THIEUTH-YEO-CHIEUCH
-0xB752 0xD180 # HANGUL SYLLABLE THIEUTH-YEO-KHIEUKH
-0xB753 0xD181 # HANGUL SYLLABLE THIEUTH-YEO-THIEUTH
-0xB754 0xD182 # HANGUL SYLLABLE THIEUTH-YEO-PHIEUPH
-0xB755 0xD183 # HANGUL SYLLABLE THIEUTH-YEO-HIEUH
-0xB756 0xD185 # HANGUL SYLLABLE THIEUTH-YE-KIYEOK
-0xB757 0xD186 # HANGUL SYLLABLE THIEUTH-YE-SSANGKIYEOK
-0xB758 0xD187 # HANGUL SYLLABLE THIEUTH-YE-KIYEOKSIOS
-0xB759 0xD189 # HANGUL SYLLABLE THIEUTH-YE-NIEUNCIEUC
-0xB75A 0xD18A # HANGUL SYLLABLE THIEUTH-YE-NIEUNHIEUH
-0xB761 0xD18B # HANGUL SYLLABLE THIEUTH-YE-TIKEUT
-0xB762 0xD18C # HANGUL SYLLABLE THIEUTH-YE-RIEUL
-0xB763 0xD18D # HANGUL SYLLABLE THIEUTH-YE-RIEULKIYEOK
-0xB764 0xD18E # HANGUL SYLLABLE THIEUTH-YE-RIEULMIEUM
-0xB765 0xD18F # HANGUL SYLLABLE THIEUTH-YE-RIEULPIEUP
-0xB766 0xD190 # HANGUL SYLLABLE THIEUTH-YE-RIEULSIOS
-0xB767 0xD191 # HANGUL SYLLABLE THIEUTH-YE-RIEULTHIEUTH
-0xB768 0xD192 # HANGUL SYLLABLE THIEUTH-YE-RIEULPHIEUPH
-0xB769 0xD193 # HANGUL SYLLABLE THIEUTH-YE-RIEULHIEUH
-0xB76A 0xD194 # HANGUL SYLLABLE THIEUTH-YE-MIEUM
-0xB76B 0xD195 # HANGUL SYLLABLE THIEUTH-YE-PIEUP
-0xB76C 0xD196 # HANGUL SYLLABLE THIEUTH-YE-PIEUPSIOS
-0xB76D 0xD197 # HANGUL SYLLABLE THIEUTH-YE-SIOS
-0xB76E 0xD198 # HANGUL SYLLABLE THIEUTH-YE-SSANGSIOS
-0xB76F 0xD199 # HANGUL SYLLABLE THIEUTH-YE-IEUNG
-0xB770 0xD19A # HANGUL SYLLABLE THIEUTH-YE-CIEUC
-0xB771 0xD19B # HANGUL SYLLABLE THIEUTH-YE-CHIEUCH
-0xB772 0xD19C # HANGUL SYLLABLE THIEUTH-YE-KHIEUKH
-0xB773 0xD19D # HANGUL SYLLABLE THIEUTH-YE-THIEUTH
-0xB774 0xD19E # HANGUL SYLLABLE THIEUTH-YE-PHIEUPH
-0xB775 0xD19F # HANGUL SYLLABLE THIEUTH-YE-HIEUH
-0xB776 0xD1A2 # HANGUL SYLLABLE THIEUTH-O-SSANGKIYEOK
-0xB777 0xD1A3 # HANGUL SYLLABLE THIEUTH-O-KIYEOKSIOS
-0xB778 0xD1A5 # HANGUL SYLLABLE THIEUTH-O-NIEUNCIEUC
-0xB779 0xD1A6 # HANGUL SYLLABLE THIEUTH-O-NIEUNHIEUH
-0xB77A 0xD1A7 # HANGUL SYLLABLE THIEUTH-O-TIKEUT
-0xB781 0xD1A9 # HANGUL SYLLABLE THIEUTH-O-RIEULKIYEOK
-0xB782 0xD1AA # HANGUL SYLLABLE THIEUTH-O-RIEULMIEUM
-0xB783 0xD1AB # HANGUL SYLLABLE THIEUTH-O-RIEULPIEUP
-0xB784 0xD1AC # HANGUL SYLLABLE THIEUTH-O-RIEULSIOS
-0xB785 0xD1AD # HANGUL SYLLABLE THIEUTH-O-RIEULTHIEUTH
-0xB786 0xD1AE # HANGUL SYLLABLE THIEUTH-O-RIEULPHIEUPH
-0xB787 0xD1AF # HANGUL SYLLABLE THIEUTH-O-RIEULHIEUH
-0xB788 0xD1B2 # HANGUL SYLLABLE THIEUTH-O-PIEUPSIOS
-0xB789 0xD1B4 # HANGUL SYLLABLE THIEUTH-O-SSANGSIOS
-0xB78A 0xD1B6 # HANGUL SYLLABLE THIEUTH-O-CIEUC
-0xB78B 0xD1B7 # HANGUL SYLLABLE THIEUTH-O-CHIEUCH
-0xB78C 0xD1B8 # HANGUL SYLLABLE THIEUTH-O-KHIEUKH
-0xB78D 0xD1B9 # HANGUL SYLLABLE THIEUTH-O-THIEUTH
-0xB78E 0xD1BB # HANGUL SYLLABLE THIEUTH-O-HIEUH
-0xB78F 0xD1BD # HANGUL SYLLABLE THIEUTH-WA-KIYEOK
-0xB790 0xD1BE # HANGUL SYLLABLE THIEUTH-WA-SSANGKIYEOK
-0xB791 0xD1BF # HANGUL SYLLABLE THIEUTH-WA-KIYEOKSIOS
-0xB792 0xD1C1 # HANGUL SYLLABLE THIEUTH-WA-NIEUNCIEUC
-0xB793 0xD1C2 # HANGUL SYLLABLE THIEUTH-WA-NIEUNHIEUH
-0xB794 0xD1C3 # HANGUL SYLLABLE THIEUTH-WA-TIKEUT
-0xB795 0xD1C4 # HANGUL SYLLABLE THIEUTH-WA-RIEUL
-0xB796 0xD1C5 # HANGUL SYLLABLE THIEUTH-WA-RIEULKIYEOK
-0xB797 0xD1C6 # HANGUL SYLLABLE THIEUTH-WA-RIEULMIEUM
-0xB798 0xD1C7 # HANGUL SYLLABLE THIEUTH-WA-RIEULPIEUP
-0xB799 0xD1C8 # HANGUL SYLLABLE THIEUTH-WA-RIEULSIOS
-0xB79A 0xD1C9 # HANGUL SYLLABLE THIEUTH-WA-RIEULTHIEUTH
-0xB79B 0xD1CA # HANGUL SYLLABLE THIEUTH-WA-RIEULPHIEUPH
-0xB79C 0xD1CB # HANGUL SYLLABLE THIEUTH-WA-RIEULHIEUH
-0xB79D 0xD1CC # HANGUL SYLLABLE THIEUTH-WA-MIEUM
-0xB79E 0xD1CD # HANGUL SYLLABLE THIEUTH-WA-PIEUP
-0xB79F 0xD1CE # HANGUL SYLLABLE THIEUTH-WA-PIEUPSIOS
-0xB7A0 0xD1CF # HANGUL SYLLABLE THIEUTH-WA-SIOS
-0xB7A1 0xB798 # HANGUL SYLLABLE RIEUL-AE
-0xB7A2 0xB799 # HANGUL SYLLABLE RIEUL-AE-KIYEOK
-0xB7A3 0xB79C # HANGUL SYLLABLE RIEUL-AE-NIEUN
-0xB7A4 0xB7A0 # HANGUL SYLLABLE RIEUL-AE-RIEUL
-0xB7A5 0xB7A8 # HANGUL SYLLABLE RIEUL-AE-MIEUM
-0xB7A6 0xB7A9 # HANGUL SYLLABLE RIEUL-AE-PIEUP
-0xB7A7 0xB7AB # HANGUL SYLLABLE RIEUL-AE-SIOS
-0xB7A8 0xB7AC # HANGUL SYLLABLE RIEUL-AE-SSANGSIOS
-0xB7A9 0xB7AD # HANGUL SYLLABLE RIEUL-AE-IEUNG
-0xB7AA 0xB7B4 # HANGUL SYLLABLE RIEUL-YA
-0xB7AB 0xB7B5 # HANGUL SYLLABLE RIEUL-YA-KIYEOK
-0xB7AC 0xB7B8 # HANGUL SYLLABLE RIEUL-YA-NIEUN
-0xB7AD 0xB7C7 # HANGUL SYLLABLE RIEUL-YA-SIOS
-0xB7AE 0xB7C9 # HANGUL SYLLABLE RIEUL-YA-IEUNG
-0xB7AF 0xB7EC # HANGUL SYLLABLE RIEUL-EO
-0xB7B0 0xB7ED # HANGUL SYLLABLE RIEUL-EO-KIYEOK
-0xB7B1 0xB7F0 # HANGUL SYLLABLE RIEUL-EO-NIEUN
-0xB7B2 0xB7F4 # HANGUL SYLLABLE RIEUL-EO-RIEUL
-0xB7B3 0xB7FC # HANGUL SYLLABLE RIEUL-EO-MIEUM
-0xB7B4 0xB7FD # HANGUL SYLLABLE RIEUL-EO-PIEUP
-0xB7B5 0xB7FF # HANGUL SYLLABLE RIEUL-EO-SIOS
-0xB7B6 0xB800 # HANGUL SYLLABLE RIEUL-EO-SSANGSIOS
-0xB7B7 0xB801 # HANGUL SYLLABLE RIEUL-EO-IEUNG
-0xB7B8 0xB807 # HANGUL SYLLABLE RIEUL-EO-HIEUH
-0xB7B9 0xB808 # HANGUL SYLLABLE RIEUL-E
-0xB7BA 0xB809 # HANGUL SYLLABLE RIEUL-E-KIYEOK
-0xB7BB 0xB80C # HANGUL SYLLABLE RIEUL-E-NIEUN
-0xB7BC 0xB810 # HANGUL SYLLABLE RIEUL-E-RIEUL
-0xB7BD 0xB818 # HANGUL SYLLABLE RIEUL-E-MIEUM
-0xB7BE 0xB819 # HANGUL SYLLABLE RIEUL-E-PIEUP
-0xB7BF 0xB81B # HANGUL SYLLABLE RIEUL-E-SIOS
-0xB7C0 0xB81D # HANGUL SYLLABLE RIEUL-E-IEUNG
-0xB7C1 0xB824 # HANGUL SYLLABLE RIEUL-YEO
-0xB7C2 0xB825 # HANGUL SYLLABLE RIEUL-YEO-KIYEOK
-0xB7C3 0xB828 # HANGUL SYLLABLE RIEUL-YEO-NIEUN
-0xB7C4 0xB82C # HANGUL SYLLABLE RIEUL-YEO-RIEUL
-0xB7C5 0xB834 # HANGUL SYLLABLE RIEUL-YEO-MIEUM
-0xB7C6 0xB835 # HANGUL SYLLABLE RIEUL-YEO-PIEUP
-0xB7C7 0xB837 # HANGUL SYLLABLE RIEUL-YEO-SIOS
-0xB7C8 0xB838 # HANGUL SYLLABLE RIEUL-YEO-SSANGSIOS
-0xB7C9 0xB839 # HANGUL SYLLABLE RIEUL-YEO-IEUNG
-0xB7CA 0xB840 # HANGUL SYLLABLE RIEUL-YE
-0xB7CB 0xB844 # HANGUL SYLLABLE RIEUL-YE-NIEUN
-0xB7CC 0xB851 # HANGUL SYLLABLE RIEUL-YE-PIEUP
-0xB7CD 0xB853 # HANGUL SYLLABLE RIEUL-YE-SIOS
-0xB7CE 0xB85C # HANGUL SYLLABLE RIEUL-O
-0xB7CF 0xB85D # HANGUL SYLLABLE RIEUL-O-KIYEOK
-0xB7D0 0xB860 # HANGUL SYLLABLE RIEUL-O-NIEUN
-0xB7D1 0xB864 # HANGUL SYLLABLE RIEUL-O-RIEUL
-0xB7D2 0xB86C # HANGUL SYLLABLE RIEUL-O-MIEUM
-0xB7D3 0xB86D # HANGUL SYLLABLE RIEUL-O-PIEUP
-0xB7D4 0xB86F # HANGUL SYLLABLE RIEUL-O-SIOS
-0xB7D5 0xB871 # HANGUL SYLLABLE RIEUL-O-IEUNG
-0xB7D6 0xB878 # HANGUL SYLLABLE RIEUL-WA
-0xB7D7 0xB87C # HANGUL SYLLABLE RIEUL-WA-NIEUN
-0xB7D8 0xB88D # HANGUL SYLLABLE RIEUL-WA-IEUNG
-0xB7D9 0xB8A8 # HANGUL SYLLABLE RIEUL-WAE-SSANGSIOS
-0xB7DA 0xB8B0 # HANGUL SYLLABLE RIEUL-OE
-0xB7DB 0xB8B4 # HANGUL SYLLABLE RIEUL-OE-NIEUN
-0xB7DC 0xB8B8 # HANGUL SYLLABLE RIEUL-OE-RIEUL
-0xB7DD 0xB8C0 # HANGUL SYLLABLE RIEUL-OE-MIEUM
-0xB7DE 0xB8C1 # HANGUL SYLLABLE RIEUL-OE-PIEUP
-0xB7DF 0xB8C3 # HANGUL SYLLABLE RIEUL-OE-SIOS
-0xB7E0 0xB8C5 # HANGUL SYLLABLE RIEUL-OE-IEUNG
-0xB7E1 0xB8CC # HANGUL SYLLABLE RIEUL-YO
-0xB7E2 0xB8D0 # HANGUL SYLLABLE RIEUL-YO-NIEUN
-0xB7E3 0xB8D4 # HANGUL SYLLABLE RIEUL-YO-RIEUL
-0xB7E4 0xB8DD # HANGUL SYLLABLE RIEUL-YO-PIEUP
-0xB7E5 0xB8DF # HANGUL SYLLABLE RIEUL-YO-SIOS
-0xB7E6 0xB8E1 # HANGUL SYLLABLE RIEUL-YO-IEUNG
-0xB7E7 0xB8E8 # HANGUL SYLLABLE RIEUL-U
-0xB7E8 0xB8E9 # HANGUL SYLLABLE RIEUL-U-KIYEOK
-0xB7E9 0xB8EC # HANGUL SYLLABLE RIEUL-U-NIEUN
-0xB7EA 0xB8F0 # HANGUL SYLLABLE RIEUL-U-RIEUL
-0xB7EB 0xB8F8 # HANGUL SYLLABLE RIEUL-U-MIEUM
-0xB7EC 0xB8F9 # HANGUL SYLLABLE RIEUL-U-PIEUP
-0xB7ED 0xB8FB # HANGUL SYLLABLE RIEUL-U-SIOS
-0xB7EE 0xB8FD # HANGUL SYLLABLE RIEUL-U-IEUNG
-0xB7EF 0xB904 # HANGUL SYLLABLE RIEUL-WEO
-0xB7F0 0xB918 # HANGUL SYLLABLE RIEUL-WEO-SSANGSIOS
-0xB7F1 0xB920 # HANGUL SYLLABLE RIEUL-WE
-0xB7F2 0xB93C # HANGUL SYLLABLE RIEUL-WI
-0xB7F3 0xB93D # HANGUL SYLLABLE RIEUL-WI-KIYEOK
-0xB7F4 0xB940 # HANGUL SYLLABLE RIEUL-WI-NIEUN
-0xB7F5 0xB944 # HANGUL SYLLABLE RIEUL-WI-RIEUL
-0xB7F6 0xB94C # HANGUL SYLLABLE RIEUL-WI-MIEUM
-0xB7F7 0xB94F # HANGUL SYLLABLE RIEUL-WI-SIOS
-0xB7F8 0xB951 # HANGUL SYLLABLE RIEUL-WI-IEUNG
-0xB7F9 0xB958 # HANGUL SYLLABLE RIEUL-YU
-0xB7FA 0xB959 # HANGUL SYLLABLE RIEUL-YU-KIYEOK
-0xB7FB 0xB95C # HANGUL SYLLABLE RIEUL-YU-NIEUN
-0xB7FC 0xB960 # HANGUL SYLLABLE RIEUL-YU-RIEUL
-0xB7FD 0xB968 # HANGUL SYLLABLE RIEUL-YU-MIEUM
-0xB7FE 0xB969 # HANGUL SYLLABLE RIEUL-YU-PIEUP
-0xB841 0xD1D0 # HANGUL SYLLABLE THIEUTH-WA-SSANGSIOS
-0xB842 0xD1D1 # HANGUL SYLLABLE THIEUTH-WA-IEUNG
-0xB843 0xD1D2 # HANGUL SYLLABLE THIEUTH-WA-CIEUC
-0xB844 0xD1D3 # HANGUL SYLLABLE THIEUTH-WA-CHIEUCH
-0xB845 0xD1D4 # HANGUL SYLLABLE THIEUTH-WA-KHIEUKH
-0xB846 0xD1D5 # HANGUL SYLLABLE THIEUTH-WA-THIEUTH
-0xB847 0xD1D6 # HANGUL SYLLABLE THIEUTH-WA-PHIEUPH
-0xB848 0xD1D7 # HANGUL SYLLABLE THIEUTH-WA-HIEUH
-0xB849 0xD1D9 # HANGUL SYLLABLE THIEUTH-WAE-KIYEOK
-0xB84A 0xD1DA # HANGUL SYLLABLE THIEUTH-WAE-SSANGKIYEOK
-0xB84B 0xD1DB # HANGUL SYLLABLE THIEUTH-WAE-KIYEOKSIOS
-0xB84C 0xD1DC # HANGUL SYLLABLE THIEUTH-WAE-NIEUN
-0xB84D 0xD1DD # HANGUL SYLLABLE THIEUTH-WAE-NIEUNCIEUC
-0xB84E 0xD1DE # HANGUL SYLLABLE THIEUTH-WAE-NIEUNHIEUH
-0xB84F 0xD1DF # HANGUL SYLLABLE THIEUTH-WAE-TIKEUT
-0xB850 0xD1E0 # HANGUL SYLLABLE THIEUTH-WAE-RIEUL
-0xB851 0xD1E1 # HANGUL SYLLABLE THIEUTH-WAE-RIEULKIYEOK
-0xB852 0xD1E2 # HANGUL SYLLABLE THIEUTH-WAE-RIEULMIEUM
-0xB853 0xD1E3 # HANGUL SYLLABLE THIEUTH-WAE-RIEULPIEUP
-0xB854 0xD1E4 # HANGUL SYLLABLE THIEUTH-WAE-RIEULSIOS
-0xB855 0xD1E5 # HANGUL SYLLABLE THIEUTH-WAE-RIEULTHIEUTH
-0xB856 0xD1E6 # HANGUL SYLLABLE THIEUTH-WAE-RIEULPHIEUPH
-0xB857 0xD1E7 # HANGUL SYLLABLE THIEUTH-WAE-RIEULHIEUH
-0xB858 0xD1E8 # HANGUL SYLLABLE THIEUTH-WAE-MIEUM
-0xB859 0xD1E9 # HANGUL SYLLABLE THIEUTH-WAE-PIEUP
-0xB85A 0xD1EA # HANGUL SYLLABLE THIEUTH-WAE-PIEUPSIOS
-0xB861 0xD1EB # HANGUL SYLLABLE THIEUTH-WAE-SIOS
-0xB862 0xD1EC # HANGUL SYLLABLE THIEUTH-WAE-SSANGSIOS
-0xB863 0xD1ED # HANGUL SYLLABLE THIEUTH-WAE-IEUNG
-0xB864 0xD1EE # HANGUL SYLLABLE THIEUTH-WAE-CIEUC
-0xB865 0xD1EF # HANGUL SYLLABLE THIEUTH-WAE-CHIEUCH
-0xB866 0xD1F0 # HANGUL SYLLABLE THIEUTH-WAE-KHIEUKH
-0xB867 0xD1F1 # HANGUL SYLLABLE THIEUTH-WAE-THIEUTH
-0xB868 0xD1F2 # HANGUL SYLLABLE THIEUTH-WAE-PHIEUPH
-0xB869 0xD1F3 # HANGUL SYLLABLE THIEUTH-WAE-HIEUH
-0xB86A 0xD1F5 # HANGUL SYLLABLE THIEUTH-OE-KIYEOK
-0xB86B 0xD1F6 # HANGUL SYLLABLE THIEUTH-OE-SSANGKIYEOK
-0xB86C 0xD1F7 # HANGUL SYLLABLE THIEUTH-OE-KIYEOKSIOS
-0xB86D 0xD1F9 # HANGUL SYLLABLE THIEUTH-OE-NIEUNCIEUC
-0xB86E 0xD1FA # HANGUL SYLLABLE THIEUTH-OE-NIEUNHIEUH
-0xB86F 0xD1FB # HANGUL SYLLABLE THIEUTH-OE-TIKEUT
-0xB870 0xD1FC # HANGUL SYLLABLE THIEUTH-OE-RIEUL
-0xB871 0xD1FD # HANGUL SYLLABLE THIEUTH-OE-RIEULKIYEOK
-0xB872 0xD1FE # HANGUL SYLLABLE THIEUTH-OE-RIEULMIEUM
-0xB873 0xD1FF # HANGUL SYLLABLE THIEUTH-OE-RIEULPIEUP
-0xB874 0xD200 # HANGUL SYLLABLE THIEUTH-OE-RIEULSIOS
-0xB875 0xD201 # HANGUL SYLLABLE THIEUTH-OE-RIEULTHIEUTH
-0xB876 0xD202 # HANGUL SYLLABLE THIEUTH-OE-RIEULPHIEUPH
-0xB877 0xD203 # HANGUL SYLLABLE THIEUTH-OE-RIEULHIEUH
-0xB878 0xD204 # HANGUL SYLLABLE THIEUTH-OE-MIEUM
-0xB879 0xD205 # HANGUL SYLLABLE THIEUTH-OE-PIEUP
-0xB87A 0xD206 # HANGUL SYLLABLE THIEUTH-OE-PIEUPSIOS
-0xB881 0xD208 # HANGUL SYLLABLE THIEUTH-OE-SSANGSIOS
-0xB882 0xD20A # HANGUL SYLLABLE THIEUTH-OE-CIEUC
-0xB883 0xD20B # HANGUL SYLLABLE THIEUTH-OE-CHIEUCH
-0xB884 0xD20C # HANGUL SYLLABLE THIEUTH-OE-KHIEUKH
-0xB885 0xD20D # HANGUL SYLLABLE THIEUTH-OE-THIEUTH
-0xB886 0xD20E # HANGUL SYLLABLE THIEUTH-OE-PHIEUPH
-0xB887 0xD20F # HANGUL SYLLABLE THIEUTH-OE-HIEUH
-0xB888 0xD211 # HANGUL SYLLABLE THIEUTH-YO-KIYEOK
-0xB889 0xD212 # HANGUL SYLLABLE THIEUTH-YO-SSANGKIYEOK
-0xB88A 0xD213 # HANGUL SYLLABLE THIEUTH-YO-KIYEOKSIOS
-0xB88B 0xD214 # HANGUL SYLLABLE THIEUTH-YO-NIEUN
-0xB88C 0xD215 # HANGUL SYLLABLE THIEUTH-YO-NIEUNCIEUC
-0xB88D 0xD216 # HANGUL SYLLABLE THIEUTH-YO-NIEUNHIEUH
-0xB88E 0xD217 # HANGUL SYLLABLE THIEUTH-YO-TIKEUT
-0xB88F 0xD218 # HANGUL SYLLABLE THIEUTH-YO-RIEUL
-0xB890 0xD219 # HANGUL SYLLABLE THIEUTH-YO-RIEULKIYEOK
-0xB891 0xD21A # HANGUL SYLLABLE THIEUTH-YO-RIEULMIEUM
-0xB892 0xD21B # HANGUL SYLLABLE THIEUTH-YO-RIEULPIEUP
-0xB893 0xD21C # HANGUL SYLLABLE THIEUTH-YO-RIEULSIOS
-0xB894 0xD21D # HANGUL SYLLABLE THIEUTH-YO-RIEULTHIEUTH
-0xB895 0xD21E # HANGUL SYLLABLE THIEUTH-YO-RIEULPHIEUPH
-0xB896 0xD21F # HANGUL SYLLABLE THIEUTH-YO-RIEULHIEUH
-0xB897 0xD220 # HANGUL SYLLABLE THIEUTH-YO-MIEUM
-0xB898 0xD221 # HANGUL SYLLABLE THIEUTH-YO-PIEUP
-0xB899 0xD222 # HANGUL SYLLABLE THIEUTH-YO-PIEUPSIOS
-0xB89A 0xD223 # HANGUL SYLLABLE THIEUTH-YO-SIOS
-0xB89B 0xD224 # HANGUL SYLLABLE THIEUTH-YO-SSANGSIOS
-0xB89C 0xD225 # HANGUL SYLLABLE THIEUTH-YO-IEUNG
-0xB89D 0xD226 # HANGUL SYLLABLE THIEUTH-YO-CIEUC
-0xB89E 0xD227 # HANGUL SYLLABLE THIEUTH-YO-CHIEUCH
-0xB89F 0xD228 # HANGUL SYLLABLE THIEUTH-YO-KHIEUKH
-0xB8A0 0xD229 # HANGUL SYLLABLE THIEUTH-YO-THIEUTH
-0xB8A1 0xB96B # HANGUL SYLLABLE RIEUL-YU-SIOS
-0xB8A2 0xB96D # HANGUL SYLLABLE RIEUL-YU-IEUNG
-0xB8A3 0xB974 # HANGUL SYLLABLE RIEUL-EU
-0xB8A4 0xB975 # HANGUL SYLLABLE RIEUL-EU-KIYEOK
-0xB8A5 0xB978 # HANGUL SYLLABLE RIEUL-EU-NIEUN
-0xB8A6 0xB97C # HANGUL SYLLABLE RIEUL-EU-RIEUL
-0xB8A7 0xB984 # HANGUL SYLLABLE RIEUL-EU-MIEUM
-0xB8A8 0xB985 # HANGUL SYLLABLE RIEUL-EU-PIEUP
-0xB8A9 0xB987 # HANGUL SYLLABLE RIEUL-EU-SIOS
-0xB8AA 0xB989 # HANGUL SYLLABLE RIEUL-EU-IEUNG
-0xB8AB 0xB98A # HANGUL SYLLABLE RIEUL-EU-CIEUC
-0xB8AC 0xB98D # HANGUL SYLLABLE RIEUL-EU-THIEUTH
-0xB8AD 0xB98E # HANGUL SYLLABLE RIEUL-EU-PHIEUPH
-0xB8AE 0xB9AC # HANGUL SYLLABLE RIEUL-I
-0xB8AF 0xB9AD # HANGUL SYLLABLE RIEUL-I-KIYEOK
-0xB8B0 0xB9B0 # HANGUL SYLLABLE RIEUL-I-NIEUN
-0xB8B1 0xB9B4 # HANGUL SYLLABLE RIEUL-I-RIEUL
-0xB8B2 0xB9BC # HANGUL SYLLABLE RIEUL-I-MIEUM
-0xB8B3 0xB9BD # HANGUL SYLLABLE RIEUL-I-PIEUP
-0xB8B4 0xB9BF # HANGUL SYLLABLE RIEUL-I-SIOS
-0xB8B5 0xB9C1 # HANGUL SYLLABLE RIEUL-I-IEUNG
-0xB8B6 0xB9C8 # HANGUL SYLLABLE MIEUM-A
-0xB8B7 0xB9C9 # HANGUL SYLLABLE MIEUM-A-KIYEOK
-0xB8B8 0xB9CC # HANGUL SYLLABLE MIEUM-A-NIEUN
-0xB8B9 0xB9CE # HANGUL SYLLABLE MIEUM-A-NIEUNHIEUH
-0xB8BA 0xB9CF # HANGUL SYLLABLE MIEUM-A-TIKEUT
-0xB8BB 0xB9D0 # HANGUL SYLLABLE MIEUM-A-RIEUL
-0xB8BC 0xB9D1 # HANGUL SYLLABLE MIEUM-A-RIEULKIYEOK
-0xB8BD 0xB9D2 # HANGUL SYLLABLE MIEUM-A-RIEULMIEUM
-0xB8BE 0xB9D8 # HANGUL SYLLABLE MIEUM-A-MIEUM
-0xB8BF 0xB9D9 # HANGUL SYLLABLE MIEUM-A-PIEUP
-0xB8C0 0xB9DB # HANGUL SYLLABLE MIEUM-A-SIOS
-0xB8C1 0xB9DD # HANGUL SYLLABLE MIEUM-A-IEUNG
-0xB8C2 0xB9DE # HANGUL SYLLABLE MIEUM-A-CIEUC
-0xB8C3 0xB9E1 # HANGUL SYLLABLE MIEUM-A-THIEUTH
-0xB8C4 0xB9E3 # HANGUL SYLLABLE MIEUM-A-HIEUH
-0xB8C5 0xB9E4 # HANGUL SYLLABLE MIEUM-AE
-0xB8C6 0xB9E5 # HANGUL SYLLABLE MIEUM-AE-KIYEOK
-0xB8C7 0xB9E8 # HANGUL SYLLABLE MIEUM-AE-NIEUN
-0xB8C8 0xB9EC # HANGUL SYLLABLE MIEUM-AE-RIEUL
-0xB8C9 0xB9F4 # HANGUL SYLLABLE MIEUM-AE-MIEUM
-0xB8CA 0xB9F5 # HANGUL SYLLABLE MIEUM-AE-PIEUP
-0xB8CB 0xB9F7 # HANGUL SYLLABLE MIEUM-AE-SIOS
-0xB8CC 0xB9F8 # HANGUL SYLLABLE MIEUM-AE-SSANGSIOS
-0xB8CD 0xB9F9 # HANGUL SYLLABLE MIEUM-AE-IEUNG
-0xB8CE 0xB9FA # HANGUL SYLLABLE MIEUM-AE-CIEUC
-0xB8CF 0xBA00 # HANGUL SYLLABLE MIEUM-YA
-0xB8D0 0xBA01 # HANGUL SYLLABLE MIEUM-YA-KIYEOK
-0xB8D1 0xBA08 # HANGUL SYLLABLE MIEUM-YA-RIEUL
-0xB8D2 0xBA15 # HANGUL SYLLABLE MIEUM-YA-IEUNG
-0xB8D3 0xBA38 # HANGUL SYLLABLE MIEUM-EO
-0xB8D4 0xBA39 # HANGUL SYLLABLE MIEUM-EO-KIYEOK
-0xB8D5 0xBA3C # HANGUL SYLLABLE MIEUM-EO-NIEUN
-0xB8D6 0xBA40 # HANGUL SYLLABLE MIEUM-EO-RIEUL
-0xB8D7 0xBA42 # HANGUL SYLLABLE MIEUM-EO-RIEULMIEUM
-0xB8D8 0xBA48 # HANGUL SYLLABLE MIEUM-EO-MIEUM
-0xB8D9 0xBA49 # HANGUL SYLLABLE MIEUM-EO-PIEUP
-0xB8DA 0xBA4B # HANGUL SYLLABLE MIEUM-EO-SIOS
-0xB8DB 0xBA4D # HANGUL SYLLABLE MIEUM-EO-IEUNG
-0xB8DC 0xBA4E # HANGUL SYLLABLE MIEUM-EO-CIEUC
-0xB8DD 0xBA53 # HANGUL SYLLABLE MIEUM-EO-HIEUH
-0xB8DE 0xBA54 # HANGUL SYLLABLE MIEUM-E
-0xB8DF 0xBA55 # HANGUL SYLLABLE MIEUM-E-KIYEOK
-0xB8E0 0xBA58 # HANGUL SYLLABLE MIEUM-E-NIEUN
-0xB8E1 0xBA5C # HANGUL SYLLABLE MIEUM-E-RIEUL
-0xB8E2 0xBA64 # HANGUL SYLLABLE MIEUM-E-MIEUM
-0xB8E3 0xBA65 # HANGUL SYLLABLE MIEUM-E-PIEUP
-0xB8E4 0xBA67 # HANGUL SYLLABLE MIEUM-E-SIOS
-0xB8E5 0xBA68 # HANGUL SYLLABLE MIEUM-E-SSANGSIOS
-0xB8E6 0xBA69 # HANGUL SYLLABLE MIEUM-E-IEUNG
-0xB8E7 0xBA70 # HANGUL SYLLABLE MIEUM-YEO
-0xB8E8 0xBA71 # HANGUL SYLLABLE MIEUM-YEO-KIYEOK
-0xB8E9 0xBA74 # HANGUL SYLLABLE MIEUM-YEO-NIEUN
-0xB8EA 0xBA78 # HANGUL SYLLABLE MIEUM-YEO-RIEUL
-0xB8EB 0xBA83 # HANGUL SYLLABLE MIEUM-YEO-SIOS
-0xB8EC 0xBA84 # HANGUL SYLLABLE MIEUM-YEO-SSANGSIOS
-0xB8ED 0xBA85 # HANGUL SYLLABLE MIEUM-YEO-IEUNG
-0xB8EE 0xBA87 # HANGUL SYLLABLE MIEUM-YEO-CHIEUCH
-0xB8EF 0xBA8C # HANGUL SYLLABLE MIEUM-YE
-0xB8F0 0xBAA8 # HANGUL SYLLABLE MIEUM-O
-0xB8F1 0xBAA9 # HANGUL SYLLABLE MIEUM-O-KIYEOK
-0xB8F2 0xBAAB # HANGUL SYLLABLE MIEUM-O-KIYEOKSIOS
-0xB8F3 0xBAAC # HANGUL SYLLABLE MIEUM-O-NIEUN
-0xB8F4 0xBAB0 # HANGUL SYLLABLE MIEUM-O-RIEUL
-0xB8F5 0xBAB2 # HANGUL SYLLABLE MIEUM-O-RIEULMIEUM
-0xB8F6 0xBAB8 # HANGUL SYLLABLE MIEUM-O-MIEUM
-0xB8F7 0xBAB9 # HANGUL SYLLABLE MIEUM-O-PIEUP
-0xB8F8 0xBABB # HANGUL SYLLABLE MIEUM-O-SIOS
-0xB8F9 0xBABD # HANGUL SYLLABLE MIEUM-O-IEUNG
-0xB8FA 0xBAC4 # HANGUL SYLLABLE MIEUM-WA
-0xB8FB 0xBAC8 # HANGUL SYLLABLE MIEUM-WA-NIEUN
-0xB8FC 0xBAD8 # HANGUL SYLLABLE MIEUM-WA-SSANGSIOS
-0xB8FD 0xBAD9 # HANGUL SYLLABLE MIEUM-WA-IEUNG
-0xB8FE 0xBAFC # HANGUL SYLLABLE MIEUM-OE
-0xB941 0xD22A # HANGUL SYLLABLE THIEUTH-YO-PHIEUPH
-0xB942 0xD22B # HANGUL SYLLABLE THIEUTH-YO-HIEUH
-0xB943 0xD22E # HANGUL SYLLABLE THIEUTH-U-SSANGKIYEOK
-0xB944 0xD22F # HANGUL SYLLABLE THIEUTH-U-KIYEOKSIOS
-0xB945 0xD231 # HANGUL SYLLABLE THIEUTH-U-NIEUNCIEUC
-0xB946 0xD232 # HANGUL SYLLABLE THIEUTH-U-NIEUNHIEUH
-0xB947 0xD233 # HANGUL SYLLABLE THIEUTH-U-TIKEUT
-0xB948 0xD235 # HANGUL SYLLABLE THIEUTH-U-RIEULKIYEOK
-0xB949 0xD236 # HANGUL SYLLABLE THIEUTH-U-RIEULMIEUM
-0xB94A 0xD237 # HANGUL SYLLABLE THIEUTH-U-RIEULPIEUP
-0xB94B 0xD238 # HANGUL SYLLABLE THIEUTH-U-RIEULSIOS
-0xB94C 0xD239 # HANGUL SYLLABLE THIEUTH-U-RIEULTHIEUTH
-0xB94D 0xD23A # HANGUL SYLLABLE THIEUTH-U-RIEULPHIEUPH
-0xB94E 0xD23B # HANGUL SYLLABLE THIEUTH-U-RIEULHIEUH
-0xB94F 0xD23E # HANGUL SYLLABLE THIEUTH-U-PIEUPSIOS
-0xB950 0xD240 # HANGUL SYLLABLE THIEUTH-U-SSANGSIOS
-0xB951 0xD242 # HANGUL SYLLABLE THIEUTH-U-CIEUC
-0xB952 0xD243 # HANGUL SYLLABLE THIEUTH-U-CHIEUCH
-0xB953 0xD244 # HANGUL SYLLABLE THIEUTH-U-KHIEUKH
-0xB954 0xD245 # HANGUL SYLLABLE THIEUTH-U-THIEUTH
-0xB955 0xD246 # HANGUL SYLLABLE THIEUTH-U-PHIEUPH
-0xB956 0xD247 # HANGUL SYLLABLE THIEUTH-U-HIEUH
-0xB957 0xD249 # HANGUL SYLLABLE THIEUTH-WEO-KIYEOK
-0xB958 0xD24A # HANGUL SYLLABLE THIEUTH-WEO-SSANGKIYEOK
-0xB959 0xD24B # HANGUL SYLLABLE THIEUTH-WEO-KIYEOKSIOS
-0xB95A 0xD24C # HANGUL SYLLABLE THIEUTH-WEO-NIEUN
-0xB961 0xD24D # HANGUL SYLLABLE THIEUTH-WEO-NIEUNCIEUC
-0xB962 0xD24E # HANGUL SYLLABLE THIEUTH-WEO-NIEUNHIEUH
-0xB963 0xD24F # HANGUL SYLLABLE THIEUTH-WEO-TIKEUT
-0xB964 0xD250 # HANGUL SYLLABLE THIEUTH-WEO-RIEUL
-0xB965 0xD251 # HANGUL SYLLABLE THIEUTH-WEO-RIEULKIYEOK
-0xB966 0xD252 # HANGUL SYLLABLE THIEUTH-WEO-RIEULMIEUM
-0xB967 0xD253 # HANGUL SYLLABLE THIEUTH-WEO-RIEULPIEUP
-0xB968 0xD254 # HANGUL SYLLABLE THIEUTH-WEO-RIEULSIOS
-0xB969 0xD255 # HANGUL SYLLABLE THIEUTH-WEO-RIEULTHIEUTH
-0xB96A 0xD256 # HANGUL SYLLABLE THIEUTH-WEO-RIEULPHIEUPH
-0xB96B 0xD257 # HANGUL SYLLABLE THIEUTH-WEO-RIEULHIEUH
-0xB96C 0xD258 # HANGUL SYLLABLE THIEUTH-WEO-MIEUM
-0xB96D 0xD259 # HANGUL SYLLABLE THIEUTH-WEO-PIEUP
-0xB96E 0xD25A # HANGUL SYLLABLE THIEUTH-WEO-PIEUPSIOS
-0xB96F 0xD25B # HANGUL SYLLABLE THIEUTH-WEO-SIOS
-0xB970 0xD25D # HANGUL SYLLABLE THIEUTH-WEO-IEUNG
-0xB971 0xD25E # HANGUL SYLLABLE THIEUTH-WEO-CIEUC
-0xB972 0xD25F # HANGUL SYLLABLE THIEUTH-WEO-CHIEUCH
-0xB973 0xD260 # HANGUL SYLLABLE THIEUTH-WEO-KHIEUKH
-0xB974 0xD261 # HANGUL SYLLABLE THIEUTH-WEO-THIEUTH
-0xB975 0xD262 # HANGUL SYLLABLE THIEUTH-WEO-PHIEUPH
-0xB976 0xD263 # HANGUL SYLLABLE THIEUTH-WEO-HIEUH
-0xB977 0xD265 # HANGUL SYLLABLE THIEUTH-WE-KIYEOK
-0xB978 0xD266 # HANGUL SYLLABLE THIEUTH-WE-SSANGKIYEOK
-0xB979 0xD267 # HANGUL SYLLABLE THIEUTH-WE-KIYEOKSIOS
-0xB97A 0xD268 # HANGUL SYLLABLE THIEUTH-WE-NIEUN
-0xB981 0xD269 # HANGUL SYLLABLE THIEUTH-WE-NIEUNCIEUC
-0xB982 0xD26A # HANGUL SYLLABLE THIEUTH-WE-NIEUNHIEUH
-0xB983 0xD26B # HANGUL SYLLABLE THIEUTH-WE-TIKEUT
-0xB984 0xD26C # HANGUL SYLLABLE THIEUTH-WE-RIEUL
-0xB985 0xD26D # HANGUL SYLLABLE THIEUTH-WE-RIEULKIYEOK
-0xB986 0xD26E # HANGUL SYLLABLE THIEUTH-WE-RIEULMIEUM
-0xB987 0xD26F # HANGUL SYLLABLE THIEUTH-WE-RIEULPIEUP
-0xB988 0xD270 # HANGUL SYLLABLE THIEUTH-WE-RIEULSIOS
-0xB989 0xD271 # HANGUL SYLLABLE THIEUTH-WE-RIEULTHIEUTH
-0xB98A 0xD272 # HANGUL SYLLABLE THIEUTH-WE-RIEULPHIEUPH
-0xB98B 0xD273 # HANGUL SYLLABLE THIEUTH-WE-RIEULHIEUH
-0xB98C 0xD274 # HANGUL SYLLABLE THIEUTH-WE-MIEUM
-0xB98D 0xD275 # HANGUL SYLLABLE THIEUTH-WE-PIEUP
-0xB98E 0xD276 # HANGUL SYLLABLE THIEUTH-WE-PIEUPSIOS
-0xB98F 0xD277 # HANGUL SYLLABLE THIEUTH-WE-SIOS
-0xB990 0xD278 # HANGUL SYLLABLE THIEUTH-WE-SSANGSIOS
-0xB991 0xD279 # HANGUL SYLLABLE THIEUTH-WE-IEUNG
-0xB992 0xD27A # HANGUL SYLLABLE THIEUTH-WE-CIEUC
-0xB993 0xD27B # HANGUL SYLLABLE THIEUTH-WE-CHIEUCH
-0xB994 0xD27C # HANGUL SYLLABLE THIEUTH-WE-KHIEUKH
-0xB995 0xD27D # HANGUL SYLLABLE THIEUTH-WE-THIEUTH
-0xB996 0xD27E # HANGUL SYLLABLE THIEUTH-WE-PHIEUPH
-0xB997 0xD27F # HANGUL SYLLABLE THIEUTH-WE-HIEUH
-0xB998 0xD282 # HANGUL SYLLABLE THIEUTH-WI-SSANGKIYEOK
-0xB999 0xD283 # HANGUL SYLLABLE THIEUTH-WI-KIYEOKSIOS
-0xB99A 0xD285 # HANGUL SYLLABLE THIEUTH-WI-NIEUNCIEUC
-0xB99B 0xD286 # HANGUL SYLLABLE THIEUTH-WI-NIEUNHIEUH
-0xB99C 0xD287 # HANGUL SYLLABLE THIEUTH-WI-TIKEUT
-0xB99D 0xD289 # HANGUL SYLLABLE THIEUTH-WI-RIEULKIYEOK
-0xB99E 0xD28A # HANGUL SYLLABLE THIEUTH-WI-RIEULMIEUM
-0xB99F 0xD28B # HANGUL SYLLABLE THIEUTH-WI-RIEULPIEUP
-0xB9A0 0xD28C # HANGUL SYLLABLE THIEUTH-WI-RIEULSIOS
-0xB9A1 0xBB00 # HANGUL SYLLABLE MIEUM-OE-NIEUN
-0xB9A2 0xBB04 # HANGUL SYLLABLE MIEUM-OE-RIEUL
-0xB9A3 0xBB0D # HANGUL SYLLABLE MIEUM-OE-PIEUP
-0xB9A4 0xBB0F # HANGUL SYLLABLE MIEUM-OE-SIOS
-0xB9A5 0xBB11 # HANGUL SYLLABLE MIEUM-OE-IEUNG
-0xB9A6 0xBB18 # HANGUL SYLLABLE MIEUM-YO
-0xB9A7 0xBB1C # HANGUL SYLLABLE MIEUM-YO-NIEUN
-0xB9A8 0xBB20 # HANGUL SYLLABLE MIEUM-YO-RIEUL
-0xB9A9 0xBB29 # HANGUL SYLLABLE MIEUM-YO-PIEUP
-0xB9AA 0xBB2B # HANGUL SYLLABLE MIEUM-YO-SIOS
-0xB9AB 0xBB34 # HANGUL SYLLABLE MIEUM-U
-0xB9AC 0xBB35 # HANGUL SYLLABLE MIEUM-U-KIYEOK
-0xB9AD 0xBB36 # HANGUL SYLLABLE MIEUM-U-SSANGKIYEOK
-0xB9AE 0xBB38 # HANGUL SYLLABLE MIEUM-U-NIEUN
-0xB9AF 0xBB3B # HANGUL SYLLABLE MIEUM-U-TIKEUT
-0xB9B0 0xBB3C # HANGUL SYLLABLE MIEUM-U-RIEUL
-0xB9B1 0xBB3D # HANGUL SYLLABLE MIEUM-U-RIEULKIYEOK
-0xB9B2 0xBB3E # HANGUL SYLLABLE MIEUM-U-RIEULMIEUM
-0xB9B3 0xBB44 # HANGUL SYLLABLE MIEUM-U-MIEUM
-0xB9B4 0xBB45 # HANGUL SYLLABLE MIEUM-U-PIEUP
-0xB9B5 0xBB47 # HANGUL SYLLABLE MIEUM-U-SIOS
-0xB9B6 0xBB49 # HANGUL SYLLABLE MIEUM-U-IEUNG
-0xB9B7 0xBB4D # HANGUL SYLLABLE MIEUM-U-THIEUTH
-0xB9B8 0xBB4F # HANGUL SYLLABLE MIEUM-U-HIEUH
-0xB9B9 0xBB50 # HANGUL SYLLABLE MIEUM-WEO
-0xB9BA 0xBB54 # HANGUL SYLLABLE MIEUM-WEO-NIEUN
-0xB9BB 0xBB58 # HANGUL SYLLABLE MIEUM-WEO-RIEUL
-0xB9BC 0xBB61 # HANGUL SYLLABLE MIEUM-WEO-PIEUP
-0xB9BD 0xBB63 # HANGUL SYLLABLE MIEUM-WEO-SIOS
-0xB9BE 0xBB6C # HANGUL SYLLABLE MIEUM-WE
-0xB9BF 0xBB88 # HANGUL SYLLABLE MIEUM-WI
-0xB9C0 0xBB8C # HANGUL SYLLABLE MIEUM-WI-NIEUN
-0xB9C1 0xBB90 # HANGUL SYLLABLE MIEUM-WI-RIEUL
-0xB9C2 0xBBA4 # HANGUL SYLLABLE MIEUM-YU
-0xB9C3 0xBBA8 # HANGUL SYLLABLE MIEUM-YU-NIEUN
-0xB9C4 0xBBAC # HANGUL SYLLABLE MIEUM-YU-RIEUL
-0xB9C5 0xBBB4 # HANGUL SYLLABLE MIEUM-YU-MIEUM
-0xB9C6 0xBBB7 # HANGUL SYLLABLE MIEUM-YU-SIOS
-0xB9C7 0xBBC0 # HANGUL SYLLABLE MIEUM-EU
-0xB9C8 0xBBC4 # HANGUL SYLLABLE MIEUM-EU-NIEUN
-0xB9C9 0xBBC8 # HANGUL SYLLABLE MIEUM-EU-RIEUL
-0xB9CA 0xBBD0 # HANGUL SYLLABLE MIEUM-EU-MIEUM
-0xB9CB 0xBBD3 # HANGUL SYLLABLE MIEUM-EU-SIOS
-0xB9CC 0xBBF8 # HANGUL SYLLABLE MIEUM-I
-0xB9CD 0xBBF9 # HANGUL SYLLABLE MIEUM-I-KIYEOK
-0xB9CE 0xBBFC # HANGUL SYLLABLE MIEUM-I-NIEUN
-0xB9CF 0xBBFF # HANGUL SYLLABLE MIEUM-I-TIKEUT
-0xB9D0 0xBC00 # HANGUL SYLLABLE MIEUM-I-RIEUL
-0xB9D1 0xBC02 # HANGUL SYLLABLE MIEUM-I-RIEULMIEUM
-0xB9D2 0xBC08 # HANGUL SYLLABLE MIEUM-I-MIEUM
-0xB9D3 0xBC09 # HANGUL SYLLABLE MIEUM-I-PIEUP
-0xB9D4 0xBC0B # HANGUL SYLLABLE MIEUM-I-SIOS
-0xB9D5 0xBC0C # HANGUL SYLLABLE MIEUM-I-SSANGSIOS
-0xB9D6 0xBC0D # HANGUL SYLLABLE MIEUM-I-IEUNG
-0xB9D7 0xBC0F # HANGUL SYLLABLE MIEUM-I-CHIEUCH
-0xB9D8 0xBC11 # HANGUL SYLLABLE MIEUM-I-THIEUTH
-0xB9D9 0xBC14 # HANGUL SYLLABLE PIEUP-A
-0xB9DA 0xBC15 # HANGUL SYLLABLE PIEUP-A-KIYEOK
-0xB9DB 0xBC16 # HANGUL SYLLABLE PIEUP-A-SSANGKIYEOK
-0xB9DC 0xBC17 # HANGUL SYLLABLE PIEUP-A-KIYEOKSIOS
-0xB9DD 0xBC18 # HANGUL SYLLABLE PIEUP-A-NIEUN
-0xB9DE 0xBC1B # HANGUL SYLLABLE PIEUP-A-TIKEUT
-0xB9DF 0xBC1C # HANGUL SYLLABLE PIEUP-A-RIEUL
-0xB9E0 0xBC1D # HANGUL SYLLABLE PIEUP-A-RIEULKIYEOK
-0xB9E1 0xBC1E # HANGUL SYLLABLE PIEUP-A-RIEULMIEUM
-0xB9E2 0xBC1F # HANGUL SYLLABLE PIEUP-A-RIEULPIEUP
-0xB9E3 0xBC24 # HANGUL SYLLABLE PIEUP-A-MIEUM
-0xB9E4 0xBC25 # HANGUL SYLLABLE PIEUP-A-PIEUP
-0xB9E5 0xBC27 # HANGUL SYLLABLE PIEUP-A-SIOS
-0xB9E6 0xBC29 # HANGUL SYLLABLE PIEUP-A-IEUNG
-0xB9E7 0xBC2D # HANGUL SYLLABLE PIEUP-A-THIEUTH
-0xB9E8 0xBC30 # HANGUL SYLLABLE PIEUP-AE
-0xB9E9 0xBC31 # HANGUL SYLLABLE PIEUP-AE-KIYEOK
-0xB9EA 0xBC34 # HANGUL SYLLABLE PIEUP-AE-NIEUN
-0xB9EB 0xBC38 # HANGUL SYLLABLE PIEUP-AE-RIEUL
-0xB9EC 0xBC40 # HANGUL SYLLABLE PIEUP-AE-MIEUM
-0xB9ED 0xBC41 # HANGUL SYLLABLE PIEUP-AE-PIEUP
-0xB9EE 0xBC43 # HANGUL SYLLABLE PIEUP-AE-SIOS
-0xB9EF 0xBC44 # HANGUL SYLLABLE PIEUP-AE-SSANGSIOS
-0xB9F0 0xBC45 # HANGUL SYLLABLE PIEUP-AE-IEUNG
-0xB9F1 0xBC49 # HANGUL SYLLABLE PIEUP-AE-THIEUTH
-0xB9F2 0xBC4C # HANGUL SYLLABLE PIEUP-YA
-0xB9F3 0xBC4D # HANGUL SYLLABLE PIEUP-YA-KIYEOK
-0xB9F4 0xBC50 # HANGUL SYLLABLE PIEUP-YA-NIEUN
-0xB9F5 0xBC5D # HANGUL SYLLABLE PIEUP-YA-PIEUP
-0xB9F6 0xBC84 # HANGUL SYLLABLE PIEUP-EO
-0xB9F7 0xBC85 # HANGUL SYLLABLE PIEUP-EO-KIYEOK
-0xB9F8 0xBC88 # HANGUL SYLLABLE PIEUP-EO-NIEUN
-0xB9F9 0xBC8B # HANGUL SYLLABLE PIEUP-EO-TIKEUT
-0xB9FA 0xBC8C # HANGUL SYLLABLE PIEUP-EO-RIEUL
-0xB9FB 0xBC8E # HANGUL SYLLABLE PIEUP-EO-RIEULMIEUM
-0xB9FC 0xBC94 # HANGUL SYLLABLE PIEUP-EO-MIEUM
-0xB9FD 0xBC95 # HANGUL SYLLABLE PIEUP-EO-PIEUP
-0xB9FE 0xBC97 # HANGUL SYLLABLE PIEUP-EO-SIOS
-0xBA41 0xD28D # HANGUL SYLLABLE THIEUTH-WI-RIEULTHIEUTH
-0xBA42 0xD28E # HANGUL SYLLABLE THIEUTH-WI-RIEULPHIEUPH
-0xBA43 0xD28F # HANGUL SYLLABLE THIEUTH-WI-RIEULHIEUH
-0xBA44 0xD292 # HANGUL SYLLABLE THIEUTH-WI-PIEUPSIOS
-0xBA45 0xD293 # HANGUL SYLLABLE THIEUTH-WI-SIOS
-0xBA46 0xD294 # HANGUL SYLLABLE THIEUTH-WI-SSANGSIOS
-0xBA47 0xD296 # HANGUL SYLLABLE THIEUTH-WI-CIEUC
-0xBA48 0xD297 # HANGUL SYLLABLE THIEUTH-WI-CHIEUCH
-0xBA49 0xD298 # HANGUL SYLLABLE THIEUTH-WI-KHIEUKH
-0xBA4A 0xD299 # HANGUL SYLLABLE THIEUTH-WI-THIEUTH
-0xBA4B 0xD29A # HANGUL SYLLABLE THIEUTH-WI-PHIEUPH
-0xBA4C 0xD29B # HANGUL SYLLABLE THIEUTH-WI-HIEUH
-0xBA4D 0xD29D # HANGUL SYLLABLE THIEUTH-YU-KIYEOK
-0xBA4E 0xD29E # HANGUL SYLLABLE THIEUTH-YU-SSANGKIYEOK
-0xBA4F 0xD29F # HANGUL SYLLABLE THIEUTH-YU-KIYEOKSIOS
-0xBA50 0xD2A1 # HANGUL SYLLABLE THIEUTH-YU-NIEUNCIEUC
-0xBA51 0xD2A2 # HANGUL SYLLABLE THIEUTH-YU-NIEUNHIEUH
-0xBA52 0xD2A3 # HANGUL SYLLABLE THIEUTH-YU-TIKEUT
-0xBA53 0xD2A5 # HANGUL SYLLABLE THIEUTH-YU-RIEULKIYEOK
-0xBA54 0xD2A6 # HANGUL SYLLABLE THIEUTH-YU-RIEULMIEUM
-0xBA55 0xD2A7 # HANGUL SYLLABLE THIEUTH-YU-RIEULPIEUP
-0xBA56 0xD2A8 # HANGUL SYLLABLE THIEUTH-YU-RIEULSIOS
-0xBA57 0xD2A9 # HANGUL SYLLABLE THIEUTH-YU-RIEULTHIEUTH
-0xBA58 0xD2AA # HANGUL SYLLABLE THIEUTH-YU-RIEULPHIEUPH
-0xBA59 0xD2AB # HANGUL SYLLABLE THIEUTH-YU-RIEULHIEUH
-0xBA5A 0xD2AD # HANGUL SYLLABLE THIEUTH-YU-PIEUP
-0xBA61 0xD2AE # HANGUL SYLLABLE THIEUTH-YU-PIEUPSIOS
-0xBA62 0xD2AF # HANGUL SYLLABLE THIEUTH-YU-SIOS
-0xBA63 0xD2B0 # HANGUL SYLLABLE THIEUTH-YU-SSANGSIOS
-0xBA64 0xD2B2 # HANGUL SYLLABLE THIEUTH-YU-CIEUC
-0xBA65 0xD2B3 # HANGUL SYLLABLE THIEUTH-YU-CHIEUCH
-0xBA66 0xD2B4 # HANGUL SYLLABLE THIEUTH-YU-KHIEUKH
-0xBA67 0xD2B5 # HANGUL SYLLABLE THIEUTH-YU-THIEUTH
-0xBA68 0xD2B6 # HANGUL SYLLABLE THIEUTH-YU-PHIEUPH
-0xBA69 0xD2B7 # HANGUL SYLLABLE THIEUTH-YU-HIEUH
-0xBA6A 0xD2BA # HANGUL SYLLABLE THIEUTH-EU-SSANGKIYEOK
-0xBA6B 0xD2BB # HANGUL SYLLABLE THIEUTH-EU-KIYEOKSIOS
-0xBA6C 0xD2BD # HANGUL SYLLABLE THIEUTH-EU-NIEUNCIEUC
-0xBA6D 0xD2BE # HANGUL SYLLABLE THIEUTH-EU-NIEUNHIEUH
-0xBA6E 0xD2C1 # HANGUL SYLLABLE THIEUTH-EU-RIEULKIYEOK
-0xBA6F 0xD2C3 # HANGUL SYLLABLE THIEUTH-EU-RIEULPIEUP
-0xBA70 0xD2C4 # HANGUL SYLLABLE THIEUTH-EU-RIEULSIOS
-0xBA71 0xD2C5 # HANGUL SYLLABLE THIEUTH-EU-RIEULTHIEUTH
-0xBA72 0xD2C6 # HANGUL SYLLABLE THIEUTH-EU-RIEULPHIEUPH
-0xBA73 0xD2C7 # HANGUL SYLLABLE THIEUTH-EU-RIEULHIEUH
-0xBA74 0xD2CA # HANGUL SYLLABLE THIEUTH-EU-PIEUPSIOS
-0xBA75 0xD2CC # HANGUL SYLLABLE THIEUTH-EU-SSANGSIOS
-0xBA76 0xD2CD # HANGUL SYLLABLE THIEUTH-EU-IEUNG
-0xBA77 0xD2CE # HANGUL SYLLABLE THIEUTH-EU-CIEUC
-0xBA78 0xD2CF # HANGUL SYLLABLE THIEUTH-EU-CHIEUCH
-0xBA79 0xD2D0 # HANGUL SYLLABLE THIEUTH-EU-KHIEUKH
-0xBA7A 0xD2D1 # HANGUL SYLLABLE THIEUTH-EU-THIEUTH
-0xBA81 0xD2D2 # HANGUL SYLLABLE THIEUTH-EU-PHIEUPH
-0xBA82 0xD2D3 # HANGUL SYLLABLE THIEUTH-EU-HIEUH
-0xBA83 0xD2D5 # HANGUL SYLLABLE THIEUTH-YI-KIYEOK
-0xBA84 0xD2D6 # HANGUL SYLLABLE THIEUTH-YI-SSANGKIYEOK
-0xBA85 0xD2D7 # HANGUL SYLLABLE THIEUTH-YI-KIYEOKSIOS
-0xBA86 0xD2D9 # HANGUL SYLLABLE THIEUTH-YI-NIEUNCIEUC
-0xBA87 0xD2DA # HANGUL SYLLABLE THIEUTH-YI-NIEUNHIEUH
-0xBA88 0xD2DB # HANGUL SYLLABLE THIEUTH-YI-TIKEUT
-0xBA89 0xD2DD # HANGUL SYLLABLE THIEUTH-YI-RIEULKIYEOK
-0xBA8A 0xD2DE # HANGUL SYLLABLE THIEUTH-YI-RIEULMIEUM
-0xBA8B 0xD2DF # HANGUL SYLLABLE THIEUTH-YI-RIEULPIEUP
-0xBA8C 0xD2E0 # HANGUL SYLLABLE THIEUTH-YI-RIEULSIOS
-0xBA8D 0xD2E1 # HANGUL SYLLABLE THIEUTH-YI-RIEULTHIEUTH
-0xBA8E 0xD2E2 # HANGUL SYLLABLE THIEUTH-YI-RIEULPHIEUPH
-0xBA8F 0xD2E3 # HANGUL SYLLABLE THIEUTH-YI-RIEULHIEUH
-0xBA90 0xD2E6 # HANGUL SYLLABLE THIEUTH-YI-PIEUPSIOS
-0xBA91 0xD2E7 # HANGUL SYLLABLE THIEUTH-YI-SIOS
-0xBA92 0xD2E8 # HANGUL SYLLABLE THIEUTH-YI-SSANGSIOS
-0xBA93 0xD2E9 # HANGUL SYLLABLE THIEUTH-YI-IEUNG
-0xBA94 0xD2EA # HANGUL SYLLABLE THIEUTH-YI-CIEUC
-0xBA95 0xD2EB # HANGUL SYLLABLE THIEUTH-YI-CHIEUCH
-0xBA96 0xD2EC # HANGUL SYLLABLE THIEUTH-YI-KHIEUKH
-0xBA97 0xD2ED # HANGUL SYLLABLE THIEUTH-YI-THIEUTH
-0xBA98 0xD2EE # HANGUL SYLLABLE THIEUTH-YI-PHIEUPH
-0xBA99 0xD2EF # HANGUL SYLLABLE THIEUTH-YI-HIEUH
-0xBA9A 0xD2F2 # HANGUL SYLLABLE THIEUTH-I-SSANGKIYEOK
-0xBA9B 0xD2F3 # HANGUL SYLLABLE THIEUTH-I-KIYEOKSIOS
-0xBA9C 0xD2F5 # HANGUL SYLLABLE THIEUTH-I-NIEUNCIEUC
-0xBA9D 0xD2F6 # HANGUL SYLLABLE THIEUTH-I-NIEUNHIEUH
-0xBA9E 0xD2F7 # HANGUL SYLLABLE THIEUTH-I-TIKEUT
-0xBA9F 0xD2F9 # HANGUL SYLLABLE THIEUTH-I-RIEULKIYEOK
-0xBAA0 0xD2FA # HANGUL SYLLABLE THIEUTH-I-RIEULMIEUM
-0xBAA1 0xBC99 # HANGUL SYLLABLE PIEUP-EO-IEUNG
-0xBAA2 0xBC9A # HANGUL SYLLABLE PIEUP-EO-CIEUC
-0xBAA3 0xBCA0 # HANGUL SYLLABLE PIEUP-E
-0xBAA4 0xBCA1 # HANGUL SYLLABLE PIEUP-E-KIYEOK
-0xBAA5 0xBCA4 # HANGUL SYLLABLE PIEUP-E-NIEUN
-0xBAA6 0xBCA7 # HANGUL SYLLABLE PIEUP-E-TIKEUT
-0xBAA7 0xBCA8 # HANGUL SYLLABLE PIEUP-E-RIEUL
-0xBAA8 0xBCB0 # HANGUL SYLLABLE PIEUP-E-MIEUM
-0xBAA9 0xBCB1 # HANGUL SYLLABLE PIEUP-E-PIEUP
-0xBAAA 0xBCB3 # HANGUL SYLLABLE PIEUP-E-SIOS
-0xBAAB 0xBCB4 # HANGUL SYLLABLE PIEUP-E-SSANGSIOS
-0xBAAC 0xBCB5 # HANGUL SYLLABLE PIEUP-E-IEUNG
-0xBAAD 0xBCBC # HANGUL SYLLABLE PIEUP-YEO
-0xBAAE 0xBCBD # HANGUL SYLLABLE PIEUP-YEO-KIYEOK
-0xBAAF 0xBCC0 # HANGUL SYLLABLE PIEUP-YEO-NIEUN
-0xBAB0 0xBCC4 # HANGUL SYLLABLE PIEUP-YEO-RIEUL
-0xBAB1 0xBCCD # HANGUL SYLLABLE PIEUP-YEO-PIEUP
-0xBAB2 0xBCCF # HANGUL SYLLABLE PIEUP-YEO-SIOS
-0xBAB3 0xBCD0 # HANGUL SYLLABLE PIEUP-YEO-SSANGSIOS
-0xBAB4 0xBCD1 # HANGUL SYLLABLE PIEUP-YEO-IEUNG
-0xBAB5 0xBCD5 # HANGUL SYLLABLE PIEUP-YEO-THIEUTH
-0xBAB6 0xBCD8 # HANGUL SYLLABLE PIEUP-YE
-0xBAB7 0xBCDC # HANGUL SYLLABLE PIEUP-YE-NIEUN
-0xBAB8 0xBCF4 # HANGUL SYLLABLE PIEUP-O
-0xBAB9 0xBCF5 # HANGUL SYLLABLE PIEUP-O-KIYEOK
-0xBABA 0xBCF6 # HANGUL SYLLABLE PIEUP-O-SSANGKIYEOK
-0xBABB 0xBCF8 # HANGUL SYLLABLE PIEUP-O-NIEUN
-0xBABC 0xBCFC # HANGUL SYLLABLE PIEUP-O-RIEUL
-0xBABD 0xBD04 # HANGUL SYLLABLE PIEUP-O-MIEUM
-0xBABE 0xBD05 # HANGUL SYLLABLE PIEUP-O-PIEUP
-0xBABF 0xBD07 # HANGUL SYLLABLE PIEUP-O-SIOS
-0xBAC0 0xBD09 # HANGUL SYLLABLE PIEUP-O-IEUNG
-0xBAC1 0xBD10 # HANGUL SYLLABLE PIEUP-WA
-0xBAC2 0xBD14 # HANGUL SYLLABLE PIEUP-WA-NIEUN
-0xBAC3 0xBD24 # HANGUL SYLLABLE PIEUP-WA-SSANGSIOS
-0xBAC4 0xBD2C # HANGUL SYLLABLE PIEUP-WAE
-0xBAC5 0xBD40 # HANGUL SYLLABLE PIEUP-WAE-SSANGSIOS
-0xBAC6 0xBD48 # HANGUL SYLLABLE PIEUP-OE
-0xBAC7 0xBD49 # HANGUL SYLLABLE PIEUP-OE-KIYEOK
-0xBAC8 0xBD4C # HANGUL SYLLABLE PIEUP-OE-NIEUN
-0xBAC9 0xBD50 # HANGUL SYLLABLE PIEUP-OE-RIEUL
-0xBACA 0xBD58 # HANGUL SYLLABLE PIEUP-OE-MIEUM
-0xBACB 0xBD59 # HANGUL SYLLABLE PIEUP-OE-PIEUP
-0xBACC 0xBD64 # HANGUL SYLLABLE PIEUP-YO
-0xBACD 0xBD68 # HANGUL SYLLABLE PIEUP-YO-NIEUN
-0xBACE 0xBD80 # HANGUL SYLLABLE PIEUP-U
-0xBACF 0xBD81 # HANGUL SYLLABLE PIEUP-U-KIYEOK
-0xBAD0 0xBD84 # HANGUL SYLLABLE PIEUP-U-NIEUN
-0xBAD1 0xBD87 # HANGUL SYLLABLE PIEUP-U-TIKEUT
-0xBAD2 0xBD88 # HANGUL SYLLABLE PIEUP-U-RIEUL
-0xBAD3 0xBD89 # HANGUL SYLLABLE PIEUP-U-RIEULKIYEOK
-0xBAD4 0xBD8A # HANGUL SYLLABLE PIEUP-U-RIEULMIEUM
-0xBAD5 0xBD90 # HANGUL SYLLABLE PIEUP-U-MIEUM
-0xBAD6 0xBD91 # HANGUL SYLLABLE PIEUP-U-PIEUP
-0xBAD7 0xBD93 # HANGUL SYLLABLE PIEUP-U-SIOS
-0xBAD8 0xBD95 # HANGUL SYLLABLE PIEUP-U-IEUNG
-0xBAD9 0xBD99 # HANGUL SYLLABLE PIEUP-U-THIEUTH
-0xBADA 0xBD9A # HANGUL SYLLABLE PIEUP-U-PHIEUPH
-0xBADB 0xBD9C # HANGUL SYLLABLE PIEUP-WEO
-0xBADC 0xBDA4 # HANGUL SYLLABLE PIEUP-WEO-RIEUL
-0xBADD 0xBDB0 # HANGUL SYLLABLE PIEUP-WEO-SSANGSIOS
-0xBADE 0xBDB8 # HANGUL SYLLABLE PIEUP-WE
-0xBADF 0xBDD4 # HANGUL SYLLABLE PIEUP-WI
-0xBAE0 0xBDD5 # HANGUL SYLLABLE PIEUP-WI-KIYEOK
-0xBAE1 0xBDD8 # HANGUL SYLLABLE PIEUP-WI-NIEUN
-0xBAE2 0xBDDC # HANGUL SYLLABLE PIEUP-WI-RIEUL
-0xBAE3 0xBDE9 # HANGUL SYLLABLE PIEUP-WI-IEUNG
-0xBAE4 0xBDF0 # HANGUL SYLLABLE PIEUP-YU
-0xBAE5 0xBDF4 # HANGUL SYLLABLE PIEUP-YU-NIEUN
-0xBAE6 0xBDF8 # HANGUL SYLLABLE PIEUP-YU-RIEUL
-0xBAE7 0xBE00 # HANGUL SYLLABLE PIEUP-YU-MIEUM
-0xBAE8 0xBE03 # HANGUL SYLLABLE PIEUP-YU-SIOS
-0xBAE9 0xBE05 # HANGUL SYLLABLE PIEUP-YU-IEUNG
-0xBAEA 0xBE0C # HANGUL SYLLABLE PIEUP-EU
-0xBAEB 0xBE0D # HANGUL SYLLABLE PIEUP-EU-KIYEOK
-0xBAEC 0xBE10 # HANGUL SYLLABLE PIEUP-EU-NIEUN
-0xBAED 0xBE14 # HANGUL SYLLABLE PIEUP-EU-RIEUL
-0xBAEE 0xBE1C # HANGUL SYLLABLE PIEUP-EU-MIEUM
-0xBAEF 0xBE1D # HANGUL SYLLABLE PIEUP-EU-PIEUP
-0xBAF0 0xBE1F # HANGUL SYLLABLE PIEUP-EU-SIOS
-0xBAF1 0xBE44 # HANGUL SYLLABLE PIEUP-I
-0xBAF2 0xBE45 # HANGUL SYLLABLE PIEUP-I-KIYEOK
-0xBAF3 0xBE48 # HANGUL SYLLABLE PIEUP-I-NIEUN
-0xBAF4 0xBE4C # HANGUL SYLLABLE PIEUP-I-RIEUL
-0xBAF5 0xBE4E # HANGUL SYLLABLE PIEUP-I-RIEULMIEUM
-0xBAF6 0xBE54 # HANGUL SYLLABLE PIEUP-I-MIEUM
-0xBAF7 0xBE55 # HANGUL SYLLABLE PIEUP-I-PIEUP
-0xBAF8 0xBE57 # HANGUL SYLLABLE PIEUP-I-SIOS
-0xBAF9 0xBE59 # HANGUL SYLLABLE PIEUP-I-IEUNG
-0xBAFA 0xBE5A # HANGUL SYLLABLE PIEUP-I-CIEUC
-0xBAFB 0xBE5B # HANGUL SYLLABLE PIEUP-I-CHIEUCH
-0xBAFC 0xBE60 # HANGUL SYLLABLE SSANGPIEUP-A
-0xBAFD 0xBE61 # HANGUL SYLLABLE SSANGPIEUP-A-KIYEOK
-0xBAFE 0xBE64 # HANGUL SYLLABLE SSANGPIEUP-A-NIEUN
-0xBB41 0xD2FB # HANGUL SYLLABLE THIEUTH-I-RIEULPIEUP
-0xBB42 0xD2FC # HANGUL SYLLABLE THIEUTH-I-RIEULSIOS
-0xBB43 0xD2FD # HANGUL SYLLABLE THIEUTH-I-RIEULTHIEUTH
-0xBB44 0xD2FE # HANGUL SYLLABLE THIEUTH-I-RIEULPHIEUPH
-0xBB45 0xD2FF # HANGUL SYLLABLE THIEUTH-I-RIEULHIEUH
-0xBB46 0xD302 # HANGUL SYLLABLE THIEUTH-I-PIEUPSIOS
-0xBB47 0xD304 # HANGUL SYLLABLE THIEUTH-I-SSANGSIOS
-0xBB48 0xD306 # HANGUL SYLLABLE THIEUTH-I-CIEUC
-0xBB49 0xD307 # HANGUL SYLLABLE THIEUTH-I-CHIEUCH
-0xBB4A 0xD308 # HANGUL SYLLABLE THIEUTH-I-KHIEUKH
-0xBB4B 0xD309 # HANGUL SYLLABLE THIEUTH-I-THIEUTH
-0xBB4C 0xD30A # HANGUL SYLLABLE THIEUTH-I-PHIEUPH
-0xBB4D 0xD30B # HANGUL SYLLABLE THIEUTH-I-HIEUH
-0xBB4E 0xD30F # HANGUL SYLLABLE PHIEUPH-A-KIYEOKSIOS
-0xBB4F 0xD311 # HANGUL SYLLABLE PHIEUPH-A-NIEUNCIEUC
-0xBB50 0xD312 # HANGUL SYLLABLE PHIEUPH-A-NIEUNHIEUH
-0xBB51 0xD313 # HANGUL SYLLABLE PHIEUPH-A-TIKEUT
-0xBB52 0xD315 # HANGUL SYLLABLE PHIEUPH-A-RIEULKIYEOK
-0xBB53 0xD317 # HANGUL SYLLABLE PHIEUPH-A-RIEULPIEUP
-0xBB54 0xD318 # HANGUL SYLLABLE PHIEUPH-A-RIEULSIOS
-0xBB55 0xD319 # HANGUL SYLLABLE PHIEUPH-A-RIEULTHIEUTH
-0xBB56 0xD31A # HANGUL SYLLABLE PHIEUPH-A-RIEULPHIEUPH
-0xBB57 0xD31B # HANGUL SYLLABLE PHIEUPH-A-RIEULHIEUH
-0xBB58 0xD31E # HANGUL SYLLABLE PHIEUPH-A-PIEUPSIOS
-0xBB59 0xD322 # HANGUL SYLLABLE PHIEUPH-A-CIEUC
-0xBB5A 0xD323 # HANGUL SYLLABLE PHIEUPH-A-CHIEUCH
-0xBB61 0xD324 # HANGUL SYLLABLE PHIEUPH-A-KHIEUKH
-0xBB62 0xD326 # HANGUL SYLLABLE PHIEUPH-A-PHIEUPH
-0xBB63 0xD327 # HANGUL SYLLABLE PHIEUPH-A-HIEUH
-0xBB64 0xD32A # HANGUL SYLLABLE PHIEUPH-AE-SSANGKIYEOK
-0xBB65 0xD32B # HANGUL SYLLABLE PHIEUPH-AE-KIYEOKSIOS
-0xBB66 0xD32D # HANGUL SYLLABLE PHIEUPH-AE-NIEUNCIEUC
-0xBB67 0xD32E # HANGUL SYLLABLE PHIEUPH-AE-NIEUNHIEUH
-0xBB68 0xD32F # HANGUL SYLLABLE PHIEUPH-AE-TIKEUT
-0xBB69 0xD331 # HANGUL SYLLABLE PHIEUPH-AE-RIEULKIYEOK
-0xBB6A 0xD332 # HANGUL SYLLABLE PHIEUPH-AE-RIEULMIEUM
-0xBB6B 0xD333 # HANGUL SYLLABLE PHIEUPH-AE-RIEULPIEUP
-0xBB6C 0xD334 # HANGUL SYLLABLE PHIEUPH-AE-RIEULSIOS
-0xBB6D 0xD335 # HANGUL SYLLABLE PHIEUPH-AE-RIEULTHIEUTH
-0xBB6E 0xD336 # HANGUL SYLLABLE PHIEUPH-AE-RIEULPHIEUPH
-0xBB6F 0xD337 # HANGUL SYLLABLE PHIEUPH-AE-RIEULHIEUH
-0xBB70 0xD33A # HANGUL SYLLABLE PHIEUPH-AE-PIEUPSIOS
-0xBB71 0xD33E # HANGUL SYLLABLE PHIEUPH-AE-CIEUC
-0xBB72 0xD33F # HANGUL SYLLABLE PHIEUPH-AE-CHIEUCH
-0xBB73 0xD340 # HANGUL SYLLABLE PHIEUPH-AE-KHIEUKH
-0xBB74 0xD341 # HANGUL SYLLABLE PHIEUPH-AE-THIEUTH
-0xBB75 0xD342 # HANGUL SYLLABLE PHIEUPH-AE-PHIEUPH
-0xBB76 0xD343 # HANGUL SYLLABLE PHIEUPH-AE-HIEUH
-0xBB77 0xD346 # HANGUL SYLLABLE PHIEUPH-YA-SSANGKIYEOK
-0xBB78 0xD347 # HANGUL SYLLABLE PHIEUPH-YA-KIYEOKSIOS
-0xBB79 0xD348 # HANGUL SYLLABLE PHIEUPH-YA-NIEUN
-0xBB7A 0xD349 # HANGUL SYLLABLE PHIEUPH-YA-NIEUNCIEUC
-0xBB81 0xD34A # HANGUL SYLLABLE PHIEUPH-YA-NIEUNHIEUH
-0xBB82 0xD34B # HANGUL SYLLABLE PHIEUPH-YA-TIKEUT
-0xBB83 0xD34C # HANGUL SYLLABLE PHIEUPH-YA-RIEUL
-0xBB84 0xD34D # HANGUL SYLLABLE PHIEUPH-YA-RIEULKIYEOK
-0xBB85 0xD34E # HANGUL SYLLABLE PHIEUPH-YA-RIEULMIEUM
-0xBB86 0xD34F # HANGUL SYLLABLE PHIEUPH-YA-RIEULPIEUP
-0xBB87 0xD350 # HANGUL SYLLABLE PHIEUPH-YA-RIEULSIOS
-0xBB88 0xD351 # HANGUL SYLLABLE PHIEUPH-YA-RIEULTHIEUTH
-0xBB89 0xD352 # HANGUL SYLLABLE PHIEUPH-YA-RIEULPHIEUPH
-0xBB8A 0xD353 # HANGUL SYLLABLE PHIEUPH-YA-RIEULHIEUH
-0xBB8B 0xD354 # HANGUL SYLLABLE PHIEUPH-YA-MIEUM
-0xBB8C 0xD355 # HANGUL SYLLABLE PHIEUPH-YA-PIEUP
-0xBB8D 0xD356 # HANGUL SYLLABLE PHIEUPH-YA-PIEUPSIOS
-0xBB8E 0xD357 # HANGUL SYLLABLE PHIEUPH-YA-SIOS
-0xBB8F 0xD358 # HANGUL SYLLABLE PHIEUPH-YA-SSANGSIOS
-0xBB90 0xD359 # HANGUL SYLLABLE PHIEUPH-YA-IEUNG
-0xBB91 0xD35A # HANGUL SYLLABLE PHIEUPH-YA-CIEUC
-0xBB92 0xD35B # HANGUL SYLLABLE PHIEUPH-YA-CHIEUCH
-0xBB93 0xD35C # HANGUL SYLLABLE PHIEUPH-YA-KHIEUKH
-0xBB94 0xD35D # HANGUL SYLLABLE PHIEUPH-YA-THIEUTH
-0xBB95 0xD35E # HANGUL SYLLABLE PHIEUPH-YA-PHIEUPH
-0xBB96 0xD35F # HANGUL SYLLABLE PHIEUPH-YA-HIEUH
-0xBB97 0xD360 # HANGUL SYLLABLE PHIEUPH-YAE
-0xBB98 0xD361 # HANGUL SYLLABLE PHIEUPH-YAE-KIYEOK
-0xBB99 0xD362 # HANGUL SYLLABLE PHIEUPH-YAE-SSANGKIYEOK
-0xBB9A 0xD363 # HANGUL SYLLABLE PHIEUPH-YAE-KIYEOKSIOS
-0xBB9B 0xD364 # HANGUL SYLLABLE PHIEUPH-YAE-NIEUN
-0xBB9C 0xD365 # HANGUL SYLLABLE PHIEUPH-YAE-NIEUNCIEUC
-0xBB9D 0xD366 # HANGUL SYLLABLE PHIEUPH-YAE-NIEUNHIEUH
-0xBB9E 0xD367 # HANGUL SYLLABLE PHIEUPH-YAE-TIKEUT
-0xBB9F 0xD368 # HANGUL SYLLABLE PHIEUPH-YAE-RIEUL
-0xBBA0 0xD369 # HANGUL SYLLABLE PHIEUPH-YAE-RIEULKIYEOK
-0xBBA1 0xBE68 # HANGUL SYLLABLE SSANGPIEUP-A-RIEUL
-0xBBA2 0xBE6A # HANGUL SYLLABLE SSANGPIEUP-A-RIEULMIEUM
-0xBBA3 0xBE70 # HANGUL SYLLABLE SSANGPIEUP-A-MIEUM
-0xBBA4 0xBE71 # HANGUL SYLLABLE SSANGPIEUP-A-PIEUP
-0xBBA5 0xBE73 # HANGUL SYLLABLE SSANGPIEUP-A-SIOS
-0xBBA6 0xBE74 # HANGUL SYLLABLE SSANGPIEUP-A-SSANGSIOS
-0xBBA7 0xBE75 # HANGUL SYLLABLE SSANGPIEUP-A-IEUNG
-0xBBA8 0xBE7B # HANGUL SYLLABLE SSANGPIEUP-A-HIEUH
-0xBBA9 0xBE7C # HANGUL SYLLABLE SSANGPIEUP-AE
-0xBBAA 0xBE7D # HANGUL SYLLABLE SSANGPIEUP-AE-KIYEOK
-0xBBAB 0xBE80 # HANGUL SYLLABLE SSANGPIEUP-AE-NIEUN
-0xBBAC 0xBE84 # HANGUL SYLLABLE SSANGPIEUP-AE-RIEUL
-0xBBAD 0xBE8C # HANGUL SYLLABLE SSANGPIEUP-AE-MIEUM
-0xBBAE 0xBE8D # HANGUL SYLLABLE SSANGPIEUP-AE-PIEUP
-0xBBAF 0xBE8F # HANGUL SYLLABLE SSANGPIEUP-AE-SIOS
-0xBBB0 0xBE90 # HANGUL SYLLABLE SSANGPIEUP-AE-SSANGSIOS
-0xBBB1 0xBE91 # HANGUL SYLLABLE SSANGPIEUP-AE-IEUNG
-0xBBB2 0xBE98 # HANGUL SYLLABLE SSANGPIEUP-YA
-0xBBB3 0xBE99 # HANGUL SYLLABLE SSANGPIEUP-YA-KIYEOK
-0xBBB4 0xBEA8 # HANGUL SYLLABLE SSANGPIEUP-YA-MIEUM
-0xBBB5 0xBED0 # HANGUL SYLLABLE SSANGPIEUP-EO
-0xBBB6 0xBED1 # HANGUL SYLLABLE SSANGPIEUP-EO-KIYEOK
-0xBBB7 0xBED4 # HANGUL SYLLABLE SSANGPIEUP-EO-NIEUN
-0xBBB8 0xBED7 # HANGUL SYLLABLE SSANGPIEUP-EO-TIKEUT
-0xBBB9 0xBED8 # HANGUL SYLLABLE SSANGPIEUP-EO-RIEUL
-0xBBBA 0xBEE0 # HANGUL SYLLABLE SSANGPIEUP-EO-MIEUM
-0xBBBB 0xBEE3 # HANGUL SYLLABLE SSANGPIEUP-EO-SIOS
-0xBBBC 0xBEE4 # HANGUL SYLLABLE SSANGPIEUP-EO-SSANGSIOS
-0xBBBD 0xBEE5 # HANGUL SYLLABLE SSANGPIEUP-EO-IEUNG
-0xBBBE 0xBEEC # HANGUL SYLLABLE SSANGPIEUP-E
-0xBBBF 0xBF01 # HANGUL SYLLABLE SSANGPIEUP-E-IEUNG
-0xBBC0 0xBF08 # HANGUL SYLLABLE SSANGPIEUP-YEO
-0xBBC1 0xBF09 # HANGUL SYLLABLE SSANGPIEUP-YEO-KIYEOK
-0xBBC2 0xBF18 # HANGUL SYLLABLE SSANGPIEUP-YEO-MIEUM
-0xBBC3 0xBF19 # HANGUL SYLLABLE SSANGPIEUP-YEO-PIEUP
-0xBBC4 0xBF1B # HANGUL SYLLABLE SSANGPIEUP-YEO-SIOS
-0xBBC5 0xBF1C # HANGUL SYLLABLE SSANGPIEUP-YEO-SSANGSIOS
-0xBBC6 0xBF1D # HANGUL SYLLABLE SSANGPIEUP-YEO-IEUNG
-0xBBC7 0xBF40 # HANGUL SYLLABLE SSANGPIEUP-O
-0xBBC8 0xBF41 # HANGUL SYLLABLE SSANGPIEUP-O-KIYEOK
-0xBBC9 0xBF44 # HANGUL SYLLABLE SSANGPIEUP-O-NIEUN
-0xBBCA 0xBF48 # HANGUL SYLLABLE SSANGPIEUP-O-RIEUL
-0xBBCB 0xBF50 # HANGUL SYLLABLE SSANGPIEUP-O-MIEUM
-0xBBCC 0xBF51 # HANGUL SYLLABLE SSANGPIEUP-O-PIEUP
-0xBBCD 0xBF55 # HANGUL SYLLABLE SSANGPIEUP-O-IEUNG
-0xBBCE 0xBF94 # HANGUL SYLLABLE SSANGPIEUP-OE
-0xBBCF 0xBFB0 # HANGUL SYLLABLE SSANGPIEUP-YO
-0xBBD0 0xBFC5 # HANGUL SYLLABLE SSANGPIEUP-YO-IEUNG
-0xBBD1 0xBFCC # HANGUL SYLLABLE SSANGPIEUP-U
-0xBBD2 0xBFCD # HANGUL SYLLABLE SSANGPIEUP-U-KIYEOK
-0xBBD3 0xBFD0 # HANGUL SYLLABLE SSANGPIEUP-U-NIEUN
-0xBBD4 0xBFD4 # HANGUL SYLLABLE SSANGPIEUP-U-RIEUL
-0xBBD5 0xBFDC # HANGUL SYLLABLE SSANGPIEUP-U-MIEUM
-0xBBD6 0xBFDF # HANGUL SYLLABLE SSANGPIEUP-U-SIOS
-0xBBD7 0xBFE1 # HANGUL SYLLABLE SSANGPIEUP-U-IEUNG
-0xBBD8 0xC03C # HANGUL SYLLABLE SSANGPIEUP-YU
-0xBBD9 0xC051 # HANGUL SYLLABLE SSANGPIEUP-YU-IEUNG
-0xBBDA 0xC058 # HANGUL SYLLABLE SSANGPIEUP-EU
-0xBBDB 0xC05C # HANGUL SYLLABLE SSANGPIEUP-EU-NIEUN
-0xBBDC 0xC060 # HANGUL SYLLABLE SSANGPIEUP-EU-RIEUL
-0xBBDD 0xC068 # HANGUL SYLLABLE SSANGPIEUP-EU-MIEUM
-0xBBDE 0xC069 # HANGUL SYLLABLE SSANGPIEUP-EU-PIEUP
-0xBBDF 0xC090 # HANGUL SYLLABLE SSANGPIEUP-I
-0xBBE0 0xC091 # HANGUL SYLLABLE SSANGPIEUP-I-KIYEOK
-0xBBE1 0xC094 # HANGUL SYLLABLE SSANGPIEUP-I-NIEUN
-0xBBE2 0xC098 # HANGUL SYLLABLE SSANGPIEUP-I-RIEUL
-0xBBE3 0xC0A0 # HANGUL SYLLABLE SSANGPIEUP-I-MIEUM
-0xBBE4 0xC0A1 # HANGUL SYLLABLE SSANGPIEUP-I-PIEUP
-0xBBE5 0xC0A3 # HANGUL SYLLABLE SSANGPIEUP-I-SIOS
-0xBBE6 0xC0A5 # HANGUL SYLLABLE SSANGPIEUP-I-IEUNG
-0xBBE7 0xC0AC # HANGUL SYLLABLE SIOS-A
-0xBBE8 0xC0AD # HANGUL SYLLABLE SIOS-A-KIYEOK
-0xBBE9 0xC0AF # HANGUL SYLLABLE SIOS-A-KIYEOKSIOS
-0xBBEA 0xC0B0 # HANGUL SYLLABLE SIOS-A-NIEUN
-0xBBEB 0xC0B3 # HANGUL SYLLABLE SIOS-A-TIKEUT
-0xBBEC 0xC0B4 # HANGUL SYLLABLE SIOS-A-RIEUL
-0xBBED 0xC0B5 # HANGUL SYLLABLE SIOS-A-RIEULKIYEOK
-0xBBEE 0xC0B6 # HANGUL SYLLABLE SIOS-A-RIEULMIEUM
-0xBBEF 0xC0BC # HANGUL SYLLABLE SIOS-A-MIEUM
-0xBBF0 0xC0BD # HANGUL SYLLABLE SIOS-A-PIEUP
-0xBBF1 0xC0BF # HANGUL SYLLABLE SIOS-A-SIOS
-0xBBF2 0xC0C0 # HANGUL SYLLABLE SIOS-A-SSANGSIOS
-0xBBF3 0xC0C1 # HANGUL SYLLABLE SIOS-A-IEUNG
-0xBBF4 0xC0C5 # HANGUL SYLLABLE SIOS-A-THIEUTH
-0xBBF5 0xC0C8 # HANGUL SYLLABLE SIOS-AE
-0xBBF6 0xC0C9 # HANGUL SYLLABLE SIOS-AE-KIYEOK
-0xBBF7 0xC0CC # HANGUL SYLLABLE SIOS-AE-NIEUN
-0xBBF8 0xC0D0 # HANGUL SYLLABLE SIOS-AE-RIEUL
-0xBBF9 0xC0D8 # HANGUL SYLLABLE SIOS-AE-MIEUM
-0xBBFA 0xC0D9 # HANGUL SYLLABLE SIOS-AE-PIEUP
-0xBBFB 0xC0DB # HANGUL SYLLABLE SIOS-AE-SIOS
-0xBBFC 0xC0DC # HANGUL SYLLABLE SIOS-AE-SSANGSIOS
-0xBBFD 0xC0DD # HANGUL SYLLABLE SIOS-AE-IEUNG
-0xBBFE 0xC0E4 # HANGUL SYLLABLE SIOS-YA
-0xBC41 0xD36A # HANGUL SYLLABLE PHIEUPH-YAE-RIEULMIEUM
-0xBC42 0xD36B # HANGUL SYLLABLE PHIEUPH-YAE-RIEULPIEUP
-0xBC43 0xD36C # HANGUL SYLLABLE PHIEUPH-YAE-RIEULSIOS
-0xBC44 0xD36D # HANGUL SYLLABLE PHIEUPH-YAE-RIEULTHIEUTH
-0xBC45 0xD36E # HANGUL SYLLABLE PHIEUPH-YAE-RIEULPHIEUPH
-0xBC46 0xD36F # HANGUL SYLLABLE PHIEUPH-YAE-RIEULHIEUH
-0xBC47 0xD370 # HANGUL SYLLABLE PHIEUPH-YAE-MIEUM
-0xBC48 0xD371 # HANGUL SYLLABLE PHIEUPH-YAE-PIEUP
-0xBC49 0xD372 # HANGUL SYLLABLE PHIEUPH-YAE-PIEUPSIOS
-0xBC4A 0xD373 # HANGUL SYLLABLE PHIEUPH-YAE-SIOS
-0xBC4B 0xD374 # HANGUL SYLLABLE PHIEUPH-YAE-SSANGSIOS
-0xBC4C 0xD375 # HANGUL SYLLABLE PHIEUPH-YAE-IEUNG
-0xBC4D 0xD376 # HANGUL SYLLABLE PHIEUPH-YAE-CIEUC
-0xBC4E 0xD377 # HANGUL SYLLABLE PHIEUPH-YAE-CHIEUCH
-0xBC4F 0xD378 # HANGUL SYLLABLE PHIEUPH-YAE-KHIEUKH
-0xBC50 0xD379 # HANGUL SYLLABLE PHIEUPH-YAE-THIEUTH
-0xBC51 0xD37A # HANGUL SYLLABLE PHIEUPH-YAE-PHIEUPH
-0xBC52 0xD37B # HANGUL SYLLABLE PHIEUPH-YAE-HIEUH
-0xBC53 0xD37E # HANGUL SYLLABLE PHIEUPH-EO-SSANGKIYEOK
-0xBC54 0xD37F # HANGUL SYLLABLE PHIEUPH-EO-KIYEOKSIOS
-0xBC55 0xD381 # HANGUL SYLLABLE PHIEUPH-EO-NIEUNCIEUC
-0xBC56 0xD382 # HANGUL SYLLABLE PHIEUPH-EO-NIEUNHIEUH
-0xBC57 0xD383 # HANGUL SYLLABLE PHIEUPH-EO-TIKEUT
-0xBC58 0xD385 # HANGUL SYLLABLE PHIEUPH-EO-RIEULKIYEOK
-0xBC59 0xD386 # HANGUL SYLLABLE PHIEUPH-EO-RIEULMIEUM
-0xBC5A 0xD387 # HANGUL SYLLABLE PHIEUPH-EO-RIEULPIEUP
-0xBC61 0xD388 # HANGUL SYLLABLE PHIEUPH-EO-RIEULSIOS
-0xBC62 0xD389 # HANGUL SYLLABLE PHIEUPH-EO-RIEULTHIEUTH
-0xBC63 0xD38A # HANGUL SYLLABLE PHIEUPH-EO-RIEULPHIEUPH
-0xBC64 0xD38B # HANGUL SYLLABLE PHIEUPH-EO-RIEULHIEUH
-0xBC65 0xD38E # HANGUL SYLLABLE PHIEUPH-EO-PIEUPSIOS
-0xBC66 0xD392 # HANGUL SYLLABLE PHIEUPH-EO-CIEUC
-0xBC67 0xD393 # HANGUL SYLLABLE PHIEUPH-EO-CHIEUCH
-0xBC68 0xD394 # HANGUL SYLLABLE PHIEUPH-EO-KHIEUKH
-0xBC69 0xD395 # HANGUL SYLLABLE PHIEUPH-EO-THIEUTH
-0xBC6A 0xD396 # HANGUL SYLLABLE PHIEUPH-EO-PHIEUPH
-0xBC6B 0xD397 # HANGUL SYLLABLE PHIEUPH-EO-HIEUH
-0xBC6C 0xD39A # HANGUL SYLLABLE PHIEUPH-E-SSANGKIYEOK
-0xBC6D 0xD39B # HANGUL SYLLABLE PHIEUPH-E-KIYEOKSIOS
-0xBC6E 0xD39D # HANGUL SYLLABLE PHIEUPH-E-NIEUNCIEUC
-0xBC6F 0xD39E # HANGUL SYLLABLE PHIEUPH-E-NIEUNHIEUH
-0xBC70 0xD39F # HANGUL SYLLABLE PHIEUPH-E-TIKEUT
-0xBC71 0xD3A1 # HANGUL SYLLABLE PHIEUPH-E-RIEULKIYEOK
-0xBC72 0xD3A2 # HANGUL SYLLABLE PHIEUPH-E-RIEULMIEUM
-0xBC73 0xD3A3 # HANGUL SYLLABLE PHIEUPH-E-RIEULPIEUP
-0xBC74 0xD3A4 # HANGUL SYLLABLE PHIEUPH-E-RIEULSIOS
-0xBC75 0xD3A5 # HANGUL SYLLABLE PHIEUPH-E-RIEULTHIEUTH
-0xBC76 0xD3A6 # HANGUL SYLLABLE PHIEUPH-E-RIEULPHIEUPH
-0xBC77 0xD3A7 # HANGUL SYLLABLE PHIEUPH-E-RIEULHIEUH
-0xBC78 0xD3AA # HANGUL SYLLABLE PHIEUPH-E-PIEUPSIOS
-0xBC79 0xD3AC # HANGUL SYLLABLE PHIEUPH-E-SSANGSIOS
-0xBC7A 0xD3AE # HANGUL SYLLABLE PHIEUPH-E-CIEUC
-0xBC81 0xD3AF # HANGUL SYLLABLE PHIEUPH-E-CHIEUCH
-0xBC82 0xD3B0 # HANGUL SYLLABLE PHIEUPH-E-KHIEUKH
-0xBC83 0xD3B1 # HANGUL SYLLABLE PHIEUPH-E-THIEUTH
-0xBC84 0xD3B2 # HANGUL SYLLABLE PHIEUPH-E-PHIEUPH
-0xBC85 0xD3B3 # HANGUL SYLLABLE PHIEUPH-E-HIEUH
-0xBC86 0xD3B5 # HANGUL SYLLABLE PHIEUPH-YEO-KIYEOK
-0xBC87 0xD3B6 # HANGUL SYLLABLE PHIEUPH-YEO-SSANGKIYEOK
-0xBC88 0xD3B7 # HANGUL SYLLABLE PHIEUPH-YEO-KIYEOKSIOS
-0xBC89 0xD3B9 # HANGUL SYLLABLE PHIEUPH-YEO-NIEUNCIEUC
-0xBC8A 0xD3BA # HANGUL SYLLABLE PHIEUPH-YEO-NIEUNHIEUH
-0xBC8B 0xD3BB # HANGUL SYLLABLE PHIEUPH-YEO-TIKEUT
-0xBC8C 0xD3BD # HANGUL SYLLABLE PHIEUPH-YEO-RIEULKIYEOK
-0xBC8D 0xD3BE # HANGUL SYLLABLE PHIEUPH-YEO-RIEULMIEUM
-0xBC8E 0xD3BF # HANGUL SYLLABLE PHIEUPH-YEO-RIEULPIEUP
-0xBC8F 0xD3C0 # HANGUL SYLLABLE PHIEUPH-YEO-RIEULSIOS
-0xBC90 0xD3C1 # HANGUL SYLLABLE PHIEUPH-YEO-RIEULTHIEUTH
-0xBC91 0xD3C2 # HANGUL SYLLABLE PHIEUPH-YEO-RIEULPHIEUPH
-0xBC92 0xD3C3 # HANGUL SYLLABLE PHIEUPH-YEO-RIEULHIEUH
-0xBC93 0xD3C6 # HANGUL SYLLABLE PHIEUPH-YEO-PIEUPSIOS
-0xBC94 0xD3C7 # HANGUL SYLLABLE PHIEUPH-YEO-SIOS
-0xBC95 0xD3CA # HANGUL SYLLABLE PHIEUPH-YEO-CIEUC
-0xBC96 0xD3CB # HANGUL SYLLABLE PHIEUPH-YEO-CHIEUCH
-0xBC97 0xD3CC # HANGUL SYLLABLE PHIEUPH-YEO-KHIEUKH
-0xBC98 0xD3CD # HANGUL SYLLABLE PHIEUPH-YEO-THIEUTH
-0xBC99 0xD3CE # HANGUL SYLLABLE PHIEUPH-YEO-PHIEUPH
-0xBC9A 0xD3CF # HANGUL SYLLABLE PHIEUPH-YEO-HIEUH
-0xBC9B 0xD3D1 # HANGUL SYLLABLE PHIEUPH-YE-KIYEOK
-0xBC9C 0xD3D2 # HANGUL SYLLABLE PHIEUPH-YE-SSANGKIYEOK
-0xBC9D 0xD3D3 # HANGUL SYLLABLE PHIEUPH-YE-KIYEOKSIOS
-0xBC9E 0xD3D4 # HANGUL SYLLABLE PHIEUPH-YE-NIEUN
-0xBC9F 0xD3D5 # HANGUL SYLLABLE PHIEUPH-YE-NIEUNCIEUC
-0xBCA0 0xD3D6 # HANGUL SYLLABLE PHIEUPH-YE-NIEUNHIEUH
-0xBCA1 0xC0E5 # HANGUL SYLLABLE SIOS-YA-KIYEOK
-0xBCA2 0xC0E8 # HANGUL SYLLABLE SIOS-YA-NIEUN
-0xBCA3 0xC0EC # HANGUL SYLLABLE SIOS-YA-RIEUL
-0xBCA4 0xC0F4 # HANGUL SYLLABLE SIOS-YA-MIEUM
-0xBCA5 0xC0F5 # HANGUL SYLLABLE SIOS-YA-PIEUP
-0xBCA6 0xC0F7 # HANGUL SYLLABLE SIOS-YA-SIOS
-0xBCA7 0xC0F9 # HANGUL SYLLABLE SIOS-YA-IEUNG
-0xBCA8 0xC100 # HANGUL SYLLABLE SIOS-YAE
-0xBCA9 0xC104 # HANGUL SYLLABLE SIOS-YAE-NIEUN
-0xBCAA 0xC108 # HANGUL SYLLABLE SIOS-YAE-RIEUL
-0xBCAB 0xC110 # HANGUL SYLLABLE SIOS-YAE-MIEUM
-0xBCAC 0xC115 # HANGUL SYLLABLE SIOS-YAE-IEUNG
-0xBCAD 0xC11C # HANGUL SYLLABLE SIOS-EO
-0xBCAE 0xC11D # HANGUL SYLLABLE SIOS-EO-KIYEOK
-0xBCAF 0xC11E # HANGUL SYLLABLE SIOS-EO-SSANGKIYEOK
-0xBCB0 0xC11F # HANGUL SYLLABLE SIOS-EO-KIYEOKSIOS
-0xBCB1 0xC120 # HANGUL SYLLABLE SIOS-EO-NIEUN
-0xBCB2 0xC123 # HANGUL SYLLABLE SIOS-EO-TIKEUT
-0xBCB3 0xC124 # HANGUL SYLLABLE SIOS-EO-RIEUL
-0xBCB4 0xC126 # HANGUL SYLLABLE SIOS-EO-RIEULMIEUM
-0xBCB5 0xC127 # HANGUL SYLLABLE SIOS-EO-RIEULPIEUP
-0xBCB6 0xC12C # HANGUL SYLLABLE SIOS-EO-MIEUM
-0xBCB7 0xC12D # HANGUL SYLLABLE SIOS-EO-PIEUP
-0xBCB8 0xC12F # HANGUL SYLLABLE SIOS-EO-SIOS
-0xBCB9 0xC130 # HANGUL SYLLABLE SIOS-EO-SSANGSIOS
-0xBCBA 0xC131 # HANGUL SYLLABLE SIOS-EO-IEUNG
-0xBCBB 0xC136 # HANGUL SYLLABLE SIOS-EO-PHIEUPH
-0xBCBC 0xC138 # HANGUL SYLLABLE SIOS-E
-0xBCBD 0xC139 # HANGUL SYLLABLE SIOS-E-KIYEOK
-0xBCBE 0xC13C # HANGUL SYLLABLE SIOS-E-NIEUN
-0xBCBF 0xC140 # HANGUL SYLLABLE SIOS-E-RIEUL
-0xBCC0 0xC148 # HANGUL SYLLABLE SIOS-E-MIEUM
-0xBCC1 0xC149 # HANGUL SYLLABLE SIOS-E-PIEUP
-0xBCC2 0xC14B # HANGUL SYLLABLE SIOS-E-SIOS
-0xBCC3 0xC14C # HANGUL SYLLABLE SIOS-E-SSANGSIOS
-0xBCC4 0xC14D # HANGUL SYLLABLE SIOS-E-IEUNG
-0xBCC5 0xC154 # HANGUL SYLLABLE SIOS-YEO
-0xBCC6 0xC155 # HANGUL SYLLABLE SIOS-YEO-KIYEOK
-0xBCC7 0xC158 # HANGUL SYLLABLE SIOS-YEO-NIEUN
-0xBCC8 0xC15C # HANGUL SYLLABLE SIOS-YEO-RIEUL
-0xBCC9 0xC164 # HANGUL SYLLABLE SIOS-YEO-MIEUM
-0xBCCA 0xC165 # HANGUL SYLLABLE SIOS-YEO-PIEUP
-0xBCCB 0xC167 # HANGUL SYLLABLE SIOS-YEO-SIOS
-0xBCCC 0xC168 # HANGUL SYLLABLE SIOS-YEO-SSANGSIOS
-0xBCCD 0xC169 # HANGUL SYLLABLE SIOS-YEO-IEUNG
-0xBCCE 0xC170 # HANGUL SYLLABLE SIOS-YE
-0xBCCF 0xC174 # HANGUL SYLLABLE SIOS-YE-NIEUN
-0xBCD0 0xC178 # HANGUL SYLLABLE SIOS-YE-RIEUL
-0xBCD1 0xC185 # HANGUL SYLLABLE SIOS-YE-IEUNG
-0xBCD2 0xC18C # HANGUL SYLLABLE SIOS-O
-0xBCD3 0xC18D # HANGUL SYLLABLE SIOS-O-KIYEOK
-0xBCD4 0xC18E # HANGUL SYLLABLE SIOS-O-SSANGKIYEOK
-0xBCD5 0xC190 # HANGUL SYLLABLE SIOS-O-NIEUN
-0xBCD6 0xC194 # HANGUL SYLLABLE SIOS-O-RIEUL
-0xBCD7 0xC196 # HANGUL SYLLABLE SIOS-O-RIEULMIEUM
-0xBCD8 0xC19C # HANGUL SYLLABLE SIOS-O-MIEUM
-0xBCD9 0xC19D # HANGUL SYLLABLE SIOS-O-PIEUP
-0xBCDA 0xC19F # HANGUL SYLLABLE SIOS-O-SIOS
-0xBCDB 0xC1A1 # HANGUL SYLLABLE SIOS-O-IEUNG
-0xBCDC 0xC1A5 # HANGUL SYLLABLE SIOS-O-THIEUTH
-0xBCDD 0xC1A8 # HANGUL SYLLABLE SIOS-WA
-0xBCDE 0xC1A9 # HANGUL SYLLABLE SIOS-WA-KIYEOK
-0xBCDF 0xC1AC # HANGUL SYLLABLE SIOS-WA-NIEUN
-0xBCE0 0xC1B0 # HANGUL SYLLABLE SIOS-WA-RIEUL
-0xBCE1 0xC1BD # HANGUL SYLLABLE SIOS-WA-IEUNG
-0xBCE2 0xC1C4 # HANGUL SYLLABLE SIOS-WAE
-0xBCE3 0xC1C8 # HANGUL SYLLABLE SIOS-WAE-NIEUN
-0xBCE4 0xC1CC # HANGUL SYLLABLE SIOS-WAE-RIEUL
-0xBCE5 0xC1D4 # HANGUL SYLLABLE SIOS-WAE-MIEUM
-0xBCE6 0xC1D7 # HANGUL SYLLABLE SIOS-WAE-SIOS
-0xBCE7 0xC1D8 # HANGUL SYLLABLE SIOS-WAE-SSANGSIOS
-0xBCE8 0xC1E0 # HANGUL SYLLABLE SIOS-OE
-0xBCE9 0xC1E4 # HANGUL SYLLABLE SIOS-OE-NIEUN
-0xBCEA 0xC1E8 # HANGUL SYLLABLE SIOS-OE-RIEUL
-0xBCEB 0xC1F0 # HANGUL SYLLABLE SIOS-OE-MIEUM
-0xBCEC 0xC1F1 # HANGUL SYLLABLE SIOS-OE-PIEUP
-0xBCED 0xC1F3 # HANGUL SYLLABLE SIOS-OE-SIOS
-0xBCEE 0xC1FC # HANGUL SYLLABLE SIOS-YO
-0xBCEF 0xC1FD # HANGUL SYLLABLE SIOS-YO-KIYEOK
-0xBCF0 0xC200 # HANGUL SYLLABLE SIOS-YO-NIEUN
-0xBCF1 0xC204 # HANGUL SYLLABLE SIOS-YO-RIEUL
-0xBCF2 0xC20C # HANGUL SYLLABLE SIOS-YO-MIEUM
-0xBCF3 0xC20D # HANGUL SYLLABLE SIOS-YO-PIEUP
-0xBCF4 0xC20F # HANGUL SYLLABLE SIOS-YO-SIOS
-0xBCF5 0xC211 # HANGUL SYLLABLE SIOS-YO-IEUNG
-0xBCF6 0xC218 # HANGUL SYLLABLE SIOS-U
-0xBCF7 0xC219 # HANGUL SYLLABLE SIOS-U-KIYEOK
-0xBCF8 0xC21C # HANGUL SYLLABLE SIOS-U-NIEUN
-0xBCF9 0xC21F # HANGUL SYLLABLE SIOS-U-TIKEUT
-0xBCFA 0xC220 # HANGUL SYLLABLE SIOS-U-RIEUL
-0xBCFB 0xC228 # HANGUL SYLLABLE SIOS-U-MIEUM
-0xBCFC 0xC229 # HANGUL SYLLABLE SIOS-U-PIEUP
-0xBCFD 0xC22B # HANGUL SYLLABLE SIOS-U-SIOS
-0xBCFE 0xC22D # HANGUL SYLLABLE SIOS-U-IEUNG
-0xBD41 0xD3D7 # HANGUL SYLLABLE PHIEUPH-YE-TIKEUT
-0xBD42 0xD3D9 # HANGUL SYLLABLE PHIEUPH-YE-RIEULKIYEOK
-0xBD43 0xD3DA # HANGUL SYLLABLE PHIEUPH-YE-RIEULMIEUM
-0xBD44 0xD3DB # HANGUL SYLLABLE PHIEUPH-YE-RIEULPIEUP
-0xBD45 0xD3DC # HANGUL SYLLABLE PHIEUPH-YE-RIEULSIOS
-0xBD46 0xD3DD # HANGUL SYLLABLE PHIEUPH-YE-RIEULTHIEUTH
-0xBD47 0xD3DE # HANGUL SYLLABLE PHIEUPH-YE-RIEULPHIEUPH
-0xBD48 0xD3DF # HANGUL SYLLABLE PHIEUPH-YE-RIEULHIEUH
-0xBD49 0xD3E0 # HANGUL SYLLABLE PHIEUPH-YE-MIEUM
-0xBD4A 0xD3E2 # HANGUL SYLLABLE PHIEUPH-YE-PIEUPSIOS
-0xBD4B 0xD3E4 # HANGUL SYLLABLE PHIEUPH-YE-SSANGSIOS
-0xBD4C 0xD3E5 # HANGUL SYLLABLE PHIEUPH-YE-IEUNG
-0xBD4D 0xD3E6 # HANGUL SYLLABLE PHIEUPH-YE-CIEUC
-0xBD4E 0xD3E7 # HANGUL SYLLABLE PHIEUPH-YE-CHIEUCH
-0xBD4F 0xD3E8 # HANGUL SYLLABLE PHIEUPH-YE-KHIEUKH
-0xBD50 0xD3E9 # HANGUL SYLLABLE PHIEUPH-YE-THIEUTH
-0xBD51 0xD3EA # HANGUL SYLLABLE PHIEUPH-YE-PHIEUPH
-0xBD52 0xD3EB # HANGUL SYLLABLE PHIEUPH-YE-HIEUH
-0xBD53 0xD3EE # HANGUL SYLLABLE PHIEUPH-O-SSANGKIYEOK
-0xBD54 0xD3EF # HANGUL SYLLABLE PHIEUPH-O-KIYEOKSIOS
-0xBD55 0xD3F1 # HANGUL SYLLABLE PHIEUPH-O-NIEUNCIEUC
-0xBD56 0xD3F2 # HANGUL SYLLABLE PHIEUPH-O-NIEUNHIEUH
-0xBD57 0xD3F3 # HANGUL SYLLABLE PHIEUPH-O-TIKEUT
-0xBD58 0xD3F5 # HANGUL SYLLABLE PHIEUPH-O-RIEULKIYEOK
-0xBD59 0xD3F6 # HANGUL SYLLABLE PHIEUPH-O-RIEULMIEUM
-0xBD5A 0xD3F7 # HANGUL SYLLABLE PHIEUPH-O-RIEULPIEUP
-0xBD61 0xD3F8 # HANGUL SYLLABLE PHIEUPH-O-RIEULSIOS
-0xBD62 0xD3F9 # HANGUL SYLLABLE PHIEUPH-O-RIEULTHIEUTH
-0xBD63 0xD3FA # HANGUL SYLLABLE PHIEUPH-O-RIEULPHIEUPH
-0xBD64 0xD3FB # HANGUL SYLLABLE PHIEUPH-O-RIEULHIEUH
-0xBD65 0xD3FE # HANGUL SYLLABLE PHIEUPH-O-PIEUPSIOS
-0xBD66 0xD400 # HANGUL SYLLABLE PHIEUPH-O-SSANGSIOS
-0xBD67 0xD402 # HANGUL SYLLABLE PHIEUPH-O-CIEUC
-0xBD68 0xD403 # HANGUL SYLLABLE PHIEUPH-O-CHIEUCH
-0xBD69 0xD404 # HANGUL SYLLABLE PHIEUPH-O-KHIEUKH
-0xBD6A 0xD405 # HANGUL SYLLABLE PHIEUPH-O-THIEUTH
-0xBD6B 0xD406 # HANGUL SYLLABLE PHIEUPH-O-PHIEUPH
-0xBD6C 0xD407 # HANGUL SYLLABLE PHIEUPH-O-HIEUH
-0xBD6D 0xD409 # HANGUL SYLLABLE PHIEUPH-WA-KIYEOK
-0xBD6E 0xD40A # HANGUL SYLLABLE PHIEUPH-WA-SSANGKIYEOK
-0xBD6F 0xD40B # HANGUL SYLLABLE PHIEUPH-WA-KIYEOKSIOS
-0xBD70 0xD40C # HANGUL SYLLABLE PHIEUPH-WA-NIEUN
-0xBD71 0xD40D # HANGUL SYLLABLE PHIEUPH-WA-NIEUNCIEUC
-0xBD72 0xD40E # HANGUL SYLLABLE PHIEUPH-WA-NIEUNHIEUH
-0xBD73 0xD40F # HANGUL SYLLABLE PHIEUPH-WA-TIKEUT
-0xBD74 0xD410 # HANGUL SYLLABLE PHIEUPH-WA-RIEUL
-0xBD75 0xD411 # HANGUL SYLLABLE PHIEUPH-WA-RIEULKIYEOK
-0xBD76 0xD412 # HANGUL SYLLABLE PHIEUPH-WA-RIEULMIEUM
-0xBD77 0xD413 # HANGUL SYLLABLE PHIEUPH-WA-RIEULPIEUP
-0xBD78 0xD414 # HANGUL SYLLABLE PHIEUPH-WA-RIEULSIOS
-0xBD79 0xD415 # HANGUL SYLLABLE PHIEUPH-WA-RIEULTHIEUTH
-0xBD7A 0xD416 # HANGUL SYLLABLE PHIEUPH-WA-RIEULPHIEUPH
-0xBD81 0xD417 # HANGUL SYLLABLE PHIEUPH-WA-RIEULHIEUH
-0xBD82 0xD418 # HANGUL SYLLABLE PHIEUPH-WA-MIEUM
-0xBD83 0xD419 # HANGUL SYLLABLE PHIEUPH-WA-PIEUP
-0xBD84 0xD41A # HANGUL SYLLABLE PHIEUPH-WA-PIEUPSIOS
-0xBD85 0xD41B # HANGUL SYLLABLE PHIEUPH-WA-SIOS
-0xBD86 0xD41C # HANGUL SYLLABLE PHIEUPH-WA-SSANGSIOS
-0xBD87 0xD41E # HANGUL SYLLABLE PHIEUPH-WA-CIEUC
-0xBD88 0xD41F # HANGUL SYLLABLE PHIEUPH-WA-CHIEUCH
-0xBD89 0xD420 # HANGUL SYLLABLE PHIEUPH-WA-KHIEUKH
-0xBD8A 0xD421 # HANGUL SYLLABLE PHIEUPH-WA-THIEUTH
-0xBD8B 0xD422 # HANGUL SYLLABLE PHIEUPH-WA-PHIEUPH
-0xBD8C 0xD423 # HANGUL SYLLABLE PHIEUPH-WA-HIEUH
-0xBD8D 0xD424 # HANGUL SYLLABLE PHIEUPH-WAE
-0xBD8E 0xD425 # HANGUL SYLLABLE PHIEUPH-WAE-KIYEOK
-0xBD8F 0xD426 # HANGUL SYLLABLE PHIEUPH-WAE-SSANGKIYEOK
-0xBD90 0xD427 # HANGUL SYLLABLE PHIEUPH-WAE-KIYEOKSIOS
-0xBD91 0xD428 # HANGUL SYLLABLE PHIEUPH-WAE-NIEUN
-0xBD92 0xD429 # HANGUL SYLLABLE PHIEUPH-WAE-NIEUNCIEUC
-0xBD93 0xD42A # HANGUL SYLLABLE PHIEUPH-WAE-NIEUNHIEUH
-0xBD94 0xD42B # HANGUL SYLLABLE PHIEUPH-WAE-TIKEUT
-0xBD95 0xD42C # HANGUL SYLLABLE PHIEUPH-WAE-RIEUL
-0xBD96 0xD42D # HANGUL SYLLABLE PHIEUPH-WAE-RIEULKIYEOK
-0xBD97 0xD42E # HANGUL SYLLABLE PHIEUPH-WAE-RIEULMIEUM
-0xBD98 0xD42F # HANGUL SYLLABLE PHIEUPH-WAE-RIEULPIEUP
-0xBD99 0xD430 # HANGUL SYLLABLE PHIEUPH-WAE-RIEULSIOS
-0xBD9A 0xD431 # HANGUL SYLLABLE PHIEUPH-WAE-RIEULTHIEUTH
-0xBD9B 0xD432 # HANGUL SYLLABLE PHIEUPH-WAE-RIEULPHIEUPH
-0xBD9C 0xD433 # HANGUL SYLLABLE PHIEUPH-WAE-RIEULHIEUH
-0xBD9D 0xD434 # HANGUL SYLLABLE PHIEUPH-WAE-MIEUM
-0xBD9E 0xD435 # HANGUL SYLLABLE PHIEUPH-WAE-PIEUP
-0xBD9F 0xD436 # HANGUL SYLLABLE PHIEUPH-WAE-PIEUPSIOS
-0xBDA0 0xD437 # HANGUL SYLLABLE PHIEUPH-WAE-SIOS
-0xBDA1 0xC22F # HANGUL SYLLABLE SIOS-U-CHIEUCH
-0xBDA2 0xC231 # HANGUL SYLLABLE SIOS-U-THIEUTH
-0xBDA3 0xC232 # HANGUL SYLLABLE SIOS-U-PHIEUPH
-0xBDA4 0xC234 # HANGUL SYLLABLE SIOS-WEO
-0xBDA5 0xC248 # HANGUL SYLLABLE SIOS-WEO-SSANGSIOS
-0xBDA6 0xC250 # HANGUL SYLLABLE SIOS-WE
-0xBDA7 0xC251 # HANGUL SYLLABLE SIOS-WE-KIYEOK
-0xBDA8 0xC254 # HANGUL SYLLABLE SIOS-WE-NIEUN
-0xBDA9 0xC258 # HANGUL SYLLABLE SIOS-WE-RIEUL
-0xBDAA 0xC260 # HANGUL SYLLABLE SIOS-WE-MIEUM
-0xBDAB 0xC265 # HANGUL SYLLABLE SIOS-WE-IEUNG
-0xBDAC 0xC26C # HANGUL SYLLABLE SIOS-WI
-0xBDAD 0xC26D # HANGUL SYLLABLE SIOS-WI-KIYEOK
-0xBDAE 0xC270 # HANGUL SYLLABLE SIOS-WI-NIEUN
-0xBDAF 0xC274 # HANGUL SYLLABLE SIOS-WI-RIEUL
-0xBDB0 0xC27C # HANGUL SYLLABLE SIOS-WI-MIEUM
-0xBDB1 0xC27D # HANGUL SYLLABLE SIOS-WI-PIEUP
-0xBDB2 0xC27F # HANGUL SYLLABLE SIOS-WI-SIOS
-0xBDB3 0xC281 # HANGUL SYLLABLE SIOS-WI-IEUNG
-0xBDB4 0xC288 # HANGUL SYLLABLE SIOS-YU
-0xBDB5 0xC289 # HANGUL SYLLABLE SIOS-YU-KIYEOK
-0xBDB6 0xC290 # HANGUL SYLLABLE SIOS-YU-RIEUL
-0xBDB7 0xC298 # HANGUL SYLLABLE SIOS-YU-MIEUM
-0xBDB8 0xC29B # HANGUL SYLLABLE SIOS-YU-SIOS
-0xBDB9 0xC29D # HANGUL SYLLABLE SIOS-YU-IEUNG
-0xBDBA 0xC2A4 # HANGUL SYLLABLE SIOS-EU
-0xBDBB 0xC2A5 # HANGUL SYLLABLE SIOS-EU-KIYEOK
-0xBDBC 0xC2A8 # HANGUL SYLLABLE SIOS-EU-NIEUN
-0xBDBD 0xC2AC # HANGUL SYLLABLE SIOS-EU-RIEUL
-0xBDBE 0xC2AD # HANGUL SYLLABLE SIOS-EU-RIEULKIYEOK
-0xBDBF 0xC2B4 # HANGUL SYLLABLE SIOS-EU-MIEUM
-0xBDC0 0xC2B5 # HANGUL SYLLABLE SIOS-EU-PIEUP
-0xBDC1 0xC2B7 # HANGUL SYLLABLE SIOS-EU-SIOS
-0xBDC2 0xC2B9 # HANGUL SYLLABLE SIOS-EU-IEUNG
-0xBDC3 0xC2DC # HANGUL SYLLABLE SIOS-I
-0xBDC4 0xC2DD # HANGUL SYLLABLE SIOS-I-KIYEOK
-0xBDC5 0xC2E0 # HANGUL SYLLABLE SIOS-I-NIEUN
-0xBDC6 0xC2E3 # HANGUL SYLLABLE SIOS-I-TIKEUT
-0xBDC7 0xC2E4 # HANGUL SYLLABLE SIOS-I-RIEUL
-0xBDC8 0xC2EB # HANGUL SYLLABLE SIOS-I-RIEULHIEUH
-0xBDC9 0xC2EC # HANGUL SYLLABLE SIOS-I-MIEUM
-0xBDCA 0xC2ED # HANGUL SYLLABLE SIOS-I-PIEUP
-0xBDCB 0xC2EF # HANGUL SYLLABLE SIOS-I-SIOS
-0xBDCC 0xC2F1 # HANGUL SYLLABLE SIOS-I-IEUNG
-0xBDCD 0xC2F6 # HANGUL SYLLABLE SIOS-I-PHIEUPH
-0xBDCE 0xC2F8 # HANGUL SYLLABLE SSANGSIOS-A
-0xBDCF 0xC2F9 # HANGUL SYLLABLE SSANGSIOS-A-KIYEOK
-0xBDD0 0xC2FB # HANGUL SYLLABLE SSANGSIOS-A-KIYEOKSIOS
-0xBDD1 0xC2FC # HANGUL SYLLABLE SSANGSIOS-A-NIEUN
-0xBDD2 0xC300 # HANGUL SYLLABLE SSANGSIOS-A-RIEUL
-0xBDD3 0xC308 # HANGUL SYLLABLE SSANGSIOS-A-MIEUM
-0xBDD4 0xC309 # HANGUL SYLLABLE SSANGSIOS-A-PIEUP
-0xBDD5 0xC30C # HANGUL SYLLABLE SSANGSIOS-A-SSANGSIOS
-0xBDD6 0xC30D # HANGUL SYLLABLE SSANGSIOS-A-IEUNG
-0xBDD7 0xC313 # HANGUL SYLLABLE SSANGSIOS-A-HIEUH
-0xBDD8 0xC314 # HANGUL SYLLABLE SSANGSIOS-AE
-0xBDD9 0xC315 # HANGUL SYLLABLE SSANGSIOS-AE-KIYEOK
-0xBDDA 0xC318 # HANGUL SYLLABLE SSANGSIOS-AE-NIEUN
-0xBDDB 0xC31C # HANGUL SYLLABLE SSANGSIOS-AE-RIEUL
-0xBDDC 0xC324 # HANGUL SYLLABLE SSANGSIOS-AE-MIEUM
-0xBDDD 0xC325 # HANGUL SYLLABLE SSANGSIOS-AE-PIEUP
-0xBDDE 0xC328 # HANGUL SYLLABLE SSANGSIOS-AE-SSANGSIOS
-0xBDDF 0xC329 # HANGUL SYLLABLE SSANGSIOS-AE-IEUNG
-0xBDE0 0xC345 # HANGUL SYLLABLE SSANGSIOS-YA-IEUNG
-0xBDE1 0xC368 # HANGUL SYLLABLE SSANGSIOS-EO
-0xBDE2 0xC369 # HANGUL SYLLABLE SSANGSIOS-EO-KIYEOK
-0xBDE3 0xC36C # HANGUL SYLLABLE SSANGSIOS-EO-NIEUN
-0xBDE4 0xC370 # HANGUL SYLLABLE SSANGSIOS-EO-RIEUL
-0xBDE5 0xC372 # HANGUL SYLLABLE SSANGSIOS-EO-RIEULMIEUM
-0xBDE6 0xC378 # HANGUL SYLLABLE SSANGSIOS-EO-MIEUM
-0xBDE7 0xC379 # HANGUL SYLLABLE SSANGSIOS-EO-PIEUP
-0xBDE8 0xC37C # HANGUL SYLLABLE SSANGSIOS-EO-SSANGSIOS
-0xBDE9 0xC37D # HANGUL SYLLABLE SSANGSIOS-EO-IEUNG
-0xBDEA 0xC384 # HANGUL SYLLABLE SSANGSIOS-E
-0xBDEB 0xC388 # HANGUL SYLLABLE SSANGSIOS-E-NIEUN
-0xBDEC 0xC38C # HANGUL SYLLABLE SSANGSIOS-E-RIEUL
-0xBDED 0xC3C0 # HANGUL SYLLABLE SSANGSIOS-YE-NIEUN
-0xBDEE 0xC3D8 # HANGUL SYLLABLE SSANGSIOS-O
-0xBDEF 0xC3D9 # HANGUL SYLLABLE SSANGSIOS-O-KIYEOK
-0xBDF0 0xC3DC # HANGUL SYLLABLE SSANGSIOS-O-NIEUN
-0xBDF1 0xC3DF # HANGUL SYLLABLE SSANGSIOS-O-TIKEUT
-0xBDF2 0xC3E0 # HANGUL SYLLABLE SSANGSIOS-O-RIEUL
-0xBDF3 0xC3E2 # HANGUL SYLLABLE SSANGSIOS-O-RIEULMIEUM
-0xBDF4 0xC3E8 # HANGUL SYLLABLE SSANGSIOS-O-MIEUM
-0xBDF5 0xC3E9 # HANGUL SYLLABLE SSANGSIOS-O-PIEUP
-0xBDF6 0xC3ED # HANGUL SYLLABLE SSANGSIOS-O-IEUNG
-0xBDF7 0xC3F4 # HANGUL SYLLABLE SSANGSIOS-WA
-0xBDF8 0xC3F5 # HANGUL SYLLABLE SSANGSIOS-WA-KIYEOK
-0xBDF9 0xC3F8 # HANGUL SYLLABLE SSANGSIOS-WA-NIEUN
-0xBDFA 0xC408 # HANGUL SYLLABLE SSANGSIOS-WA-SSANGSIOS
-0xBDFB 0xC410 # HANGUL SYLLABLE SSANGSIOS-WAE
-0xBDFC 0xC424 # HANGUL SYLLABLE SSANGSIOS-WAE-SSANGSIOS
-0xBDFD 0xC42C # HANGUL SYLLABLE SSANGSIOS-OE
-0xBDFE 0xC430 # HANGUL SYLLABLE SSANGSIOS-OE-NIEUN
-0xBE41 0xD438 # HANGUL SYLLABLE PHIEUPH-WAE-SSANGSIOS
-0xBE42 0xD439 # HANGUL SYLLABLE PHIEUPH-WAE-IEUNG
-0xBE43 0xD43A # HANGUL SYLLABLE PHIEUPH-WAE-CIEUC
-0xBE44 0xD43B # HANGUL SYLLABLE PHIEUPH-WAE-CHIEUCH
-0xBE45 0xD43C # HANGUL SYLLABLE PHIEUPH-WAE-KHIEUKH
-0xBE46 0xD43D # HANGUL SYLLABLE PHIEUPH-WAE-THIEUTH
-0xBE47 0xD43E # HANGUL SYLLABLE PHIEUPH-WAE-PHIEUPH
-0xBE48 0xD43F # HANGUL SYLLABLE PHIEUPH-WAE-HIEUH
-0xBE49 0xD441 # HANGUL SYLLABLE PHIEUPH-OE-KIYEOK
-0xBE4A 0xD442 # HANGUL SYLLABLE PHIEUPH-OE-SSANGKIYEOK
-0xBE4B 0xD443 # HANGUL SYLLABLE PHIEUPH-OE-KIYEOKSIOS
-0xBE4C 0xD445 # HANGUL SYLLABLE PHIEUPH-OE-NIEUNCIEUC
-0xBE4D 0xD446 # HANGUL SYLLABLE PHIEUPH-OE-NIEUNHIEUH
-0xBE4E 0xD447 # HANGUL SYLLABLE PHIEUPH-OE-TIKEUT
-0xBE4F 0xD448 # HANGUL SYLLABLE PHIEUPH-OE-RIEUL
-0xBE50 0xD449 # HANGUL SYLLABLE PHIEUPH-OE-RIEULKIYEOK
-0xBE51 0xD44A # HANGUL SYLLABLE PHIEUPH-OE-RIEULMIEUM
-0xBE52 0xD44B # HANGUL SYLLABLE PHIEUPH-OE-RIEULPIEUP
-0xBE53 0xD44C # HANGUL SYLLABLE PHIEUPH-OE-RIEULSIOS
-0xBE54 0xD44D # HANGUL SYLLABLE PHIEUPH-OE-RIEULTHIEUTH
-0xBE55 0xD44E # HANGUL SYLLABLE PHIEUPH-OE-RIEULPHIEUPH
-0xBE56 0xD44F # HANGUL SYLLABLE PHIEUPH-OE-RIEULHIEUH
-0xBE57 0xD450 # HANGUL SYLLABLE PHIEUPH-OE-MIEUM
-0xBE58 0xD451 # HANGUL SYLLABLE PHIEUPH-OE-PIEUP
-0xBE59 0xD452 # HANGUL SYLLABLE PHIEUPH-OE-PIEUPSIOS
-0xBE5A 0xD453 # HANGUL SYLLABLE PHIEUPH-OE-SIOS
-0xBE61 0xD454 # HANGUL SYLLABLE PHIEUPH-OE-SSANGSIOS
-0xBE62 0xD455 # HANGUL SYLLABLE PHIEUPH-OE-IEUNG
-0xBE63 0xD456 # HANGUL SYLLABLE PHIEUPH-OE-CIEUC
-0xBE64 0xD457 # HANGUL SYLLABLE PHIEUPH-OE-CHIEUCH
-0xBE65 0xD458 # HANGUL SYLLABLE PHIEUPH-OE-KHIEUKH
-0xBE66 0xD459 # HANGUL SYLLABLE PHIEUPH-OE-THIEUTH
-0xBE67 0xD45A # HANGUL SYLLABLE PHIEUPH-OE-PHIEUPH
-0xBE68 0xD45B # HANGUL SYLLABLE PHIEUPH-OE-HIEUH
-0xBE69 0xD45D # HANGUL SYLLABLE PHIEUPH-YO-KIYEOK
-0xBE6A 0xD45E # HANGUL SYLLABLE PHIEUPH-YO-SSANGKIYEOK
-0xBE6B 0xD45F # HANGUL SYLLABLE PHIEUPH-YO-KIYEOKSIOS
-0xBE6C 0xD461 # HANGUL SYLLABLE PHIEUPH-YO-NIEUNCIEUC
-0xBE6D 0xD462 # HANGUL SYLLABLE PHIEUPH-YO-NIEUNHIEUH
-0xBE6E 0xD463 # HANGUL SYLLABLE PHIEUPH-YO-TIKEUT
-0xBE6F 0xD465 # HANGUL SYLLABLE PHIEUPH-YO-RIEULKIYEOK
-0xBE70 0xD466 # HANGUL SYLLABLE PHIEUPH-YO-RIEULMIEUM
-0xBE71 0xD467 # HANGUL SYLLABLE PHIEUPH-YO-RIEULPIEUP
-0xBE72 0xD468 # HANGUL SYLLABLE PHIEUPH-YO-RIEULSIOS
-0xBE73 0xD469 # HANGUL SYLLABLE PHIEUPH-YO-RIEULTHIEUTH
-0xBE74 0xD46A # HANGUL SYLLABLE PHIEUPH-YO-RIEULPHIEUPH
-0xBE75 0xD46B # HANGUL SYLLABLE PHIEUPH-YO-RIEULHIEUH
-0xBE76 0xD46C # HANGUL SYLLABLE PHIEUPH-YO-MIEUM
-0xBE77 0xD46E # HANGUL SYLLABLE PHIEUPH-YO-PIEUPSIOS
-0xBE78 0xD470 # HANGUL SYLLABLE PHIEUPH-YO-SSANGSIOS
-0xBE79 0xD471 # HANGUL SYLLABLE PHIEUPH-YO-IEUNG
-0xBE7A 0xD472 # HANGUL SYLLABLE PHIEUPH-YO-CIEUC
-0xBE81 0xD473 # HANGUL SYLLABLE PHIEUPH-YO-CHIEUCH
-0xBE82 0xD474 # HANGUL SYLLABLE PHIEUPH-YO-KHIEUKH
-0xBE83 0xD475 # HANGUL SYLLABLE PHIEUPH-YO-THIEUTH
-0xBE84 0xD476 # HANGUL SYLLABLE PHIEUPH-YO-PHIEUPH
-0xBE85 0xD477 # HANGUL SYLLABLE PHIEUPH-YO-HIEUH
-0xBE86 0xD47A # HANGUL SYLLABLE PHIEUPH-U-SSANGKIYEOK
-0xBE87 0xD47B # HANGUL SYLLABLE PHIEUPH-U-KIYEOKSIOS
-0xBE88 0xD47D # HANGUL SYLLABLE PHIEUPH-U-NIEUNCIEUC
-0xBE89 0xD47E # HANGUL SYLLABLE PHIEUPH-U-NIEUNHIEUH
-0xBE8A 0xD481 # HANGUL SYLLABLE PHIEUPH-U-RIEULKIYEOK
-0xBE8B 0xD483 # HANGUL SYLLABLE PHIEUPH-U-RIEULPIEUP
-0xBE8C 0xD484 # HANGUL SYLLABLE PHIEUPH-U-RIEULSIOS
-0xBE8D 0xD485 # HANGUL SYLLABLE PHIEUPH-U-RIEULTHIEUTH
-0xBE8E 0xD486 # HANGUL SYLLABLE PHIEUPH-U-RIEULPHIEUPH
-0xBE8F 0xD487 # HANGUL SYLLABLE PHIEUPH-U-RIEULHIEUH
-0xBE90 0xD48A # HANGUL SYLLABLE PHIEUPH-U-PIEUPSIOS
-0xBE91 0xD48C # HANGUL SYLLABLE PHIEUPH-U-SSANGSIOS
-0xBE92 0xD48E # HANGUL SYLLABLE PHIEUPH-U-CIEUC
-0xBE93 0xD48F # HANGUL SYLLABLE PHIEUPH-U-CHIEUCH
-0xBE94 0xD490 # HANGUL SYLLABLE PHIEUPH-U-KHIEUKH
-0xBE95 0xD491 # HANGUL SYLLABLE PHIEUPH-U-THIEUTH
-0xBE96 0xD492 # HANGUL SYLLABLE PHIEUPH-U-PHIEUPH
-0xBE97 0xD493 # HANGUL SYLLABLE PHIEUPH-U-HIEUH
-0xBE98 0xD495 # HANGUL SYLLABLE PHIEUPH-WEO-KIYEOK
-0xBE99 0xD496 # HANGUL SYLLABLE PHIEUPH-WEO-SSANGKIYEOK
-0xBE9A 0xD497 # HANGUL SYLLABLE PHIEUPH-WEO-KIYEOKSIOS
-0xBE9B 0xD498 # HANGUL SYLLABLE PHIEUPH-WEO-NIEUN
-0xBE9C 0xD499 # HANGUL SYLLABLE PHIEUPH-WEO-NIEUNCIEUC
-0xBE9D 0xD49A # HANGUL SYLLABLE PHIEUPH-WEO-NIEUNHIEUH
-0xBE9E 0xD49B # HANGUL SYLLABLE PHIEUPH-WEO-TIKEUT
-0xBE9F 0xD49C # HANGUL SYLLABLE PHIEUPH-WEO-RIEUL
-0xBEA0 0xD49D # HANGUL SYLLABLE PHIEUPH-WEO-RIEULKIYEOK
-0xBEA1 0xC434 # HANGUL SYLLABLE SSANGSIOS-OE-RIEUL
-0xBEA2 0xC43C # HANGUL SYLLABLE SSANGSIOS-OE-MIEUM
-0xBEA3 0xC43D # HANGUL SYLLABLE SSANGSIOS-OE-PIEUP
-0xBEA4 0xC448 # HANGUL SYLLABLE SSANGSIOS-YO
-0xBEA5 0xC464 # HANGUL SYLLABLE SSANGSIOS-U
-0xBEA6 0xC465 # HANGUL SYLLABLE SSANGSIOS-U-KIYEOK
-0xBEA7 0xC468 # HANGUL SYLLABLE SSANGSIOS-U-NIEUN
-0xBEA8 0xC46C # HANGUL SYLLABLE SSANGSIOS-U-RIEUL
-0xBEA9 0xC474 # HANGUL SYLLABLE SSANGSIOS-U-MIEUM
-0xBEAA 0xC475 # HANGUL SYLLABLE SSANGSIOS-U-PIEUP
-0xBEAB 0xC479 # HANGUL SYLLABLE SSANGSIOS-U-IEUNG
-0xBEAC 0xC480 # HANGUL SYLLABLE SSANGSIOS-WEO
-0xBEAD 0xC494 # HANGUL SYLLABLE SSANGSIOS-WEO-SSANGSIOS
-0xBEAE 0xC49C # HANGUL SYLLABLE SSANGSIOS-WE
-0xBEAF 0xC4B8 # HANGUL SYLLABLE SSANGSIOS-WI
-0xBEB0 0xC4BC # HANGUL SYLLABLE SSANGSIOS-WI-NIEUN
-0xBEB1 0xC4E9 # HANGUL SYLLABLE SSANGSIOS-YU-IEUNG
-0xBEB2 0xC4F0 # HANGUL SYLLABLE SSANGSIOS-EU
-0xBEB3 0xC4F1 # HANGUL SYLLABLE SSANGSIOS-EU-KIYEOK
-0xBEB4 0xC4F4 # HANGUL SYLLABLE SSANGSIOS-EU-NIEUN
-0xBEB5 0xC4F8 # HANGUL SYLLABLE SSANGSIOS-EU-RIEUL
-0xBEB6 0xC4FA # HANGUL SYLLABLE SSANGSIOS-EU-RIEULMIEUM
-0xBEB7 0xC4FF # HANGUL SYLLABLE SSANGSIOS-EU-RIEULHIEUH
-0xBEB8 0xC500 # HANGUL SYLLABLE SSANGSIOS-EU-MIEUM
-0xBEB9 0xC501 # HANGUL SYLLABLE SSANGSIOS-EU-PIEUP
-0xBEBA 0xC50C # HANGUL SYLLABLE SSANGSIOS-YI
-0xBEBB 0xC510 # HANGUL SYLLABLE SSANGSIOS-YI-NIEUN
-0xBEBC 0xC514 # HANGUL SYLLABLE SSANGSIOS-YI-RIEUL
-0xBEBD 0xC51C # HANGUL SYLLABLE SSANGSIOS-YI-MIEUM
-0xBEBE 0xC528 # HANGUL SYLLABLE SSANGSIOS-I
-0xBEBF 0xC529 # HANGUL SYLLABLE SSANGSIOS-I-KIYEOK
-0xBEC0 0xC52C # HANGUL SYLLABLE SSANGSIOS-I-NIEUN
-0xBEC1 0xC530 # HANGUL SYLLABLE SSANGSIOS-I-RIEUL
-0xBEC2 0xC538 # HANGUL SYLLABLE SSANGSIOS-I-MIEUM
-0xBEC3 0xC539 # HANGUL SYLLABLE SSANGSIOS-I-PIEUP
-0xBEC4 0xC53B # HANGUL SYLLABLE SSANGSIOS-I-SIOS
-0xBEC5 0xC53D # HANGUL SYLLABLE SSANGSIOS-I-IEUNG
-0xBEC6 0xC544 # HANGUL SYLLABLE IEUNG-A
-0xBEC7 0xC545 # HANGUL SYLLABLE IEUNG-A-KIYEOK
-0xBEC8 0xC548 # HANGUL SYLLABLE IEUNG-A-NIEUN
-0xBEC9 0xC549 # HANGUL SYLLABLE IEUNG-A-NIEUNCIEUC
-0xBECA 0xC54A # HANGUL SYLLABLE IEUNG-A-NIEUNHIEUH
-0xBECB 0xC54C # HANGUL SYLLABLE IEUNG-A-RIEUL
-0xBECC 0xC54D # HANGUL SYLLABLE IEUNG-A-RIEULKIYEOK
-0xBECD 0xC54E # HANGUL SYLLABLE IEUNG-A-RIEULMIEUM
-0xBECE 0xC553 # HANGUL SYLLABLE IEUNG-A-RIEULHIEUH
-0xBECF 0xC554 # HANGUL SYLLABLE IEUNG-A-MIEUM
-0xBED0 0xC555 # HANGUL SYLLABLE IEUNG-A-PIEUP
-0xBED1 0xC557 # HANGUL SYLLABLE IEUNG-A-SIOS
-0xBED2 0xC558 # HANGUL SYLLABLE IEUNG-A-SSANGSIOS
-0xBED3 0xC559 # HANGUL SYLLABLE IEUNG-A-IEUNG
-0xBED4 0xC55D # HANGUL SYLLABLE IEUNG-A-THIEUTH
-0xBED5 0xC55E # HANGUL SYLLABLE IEUNG-A-PHIEUPH
-0xBED6 0xC560 # HANGUL SYLLABLE IEUNG-AE
-0xBED7 0xC561 # HANGUL SYLLABLE IEUNG-AE-KIYEOK
-0xBED8 0xC564 # HANGUL SYLLABLE IEUNG-AE-NIEUN
-0xBED9 0xC568 # HANGUL SYLLABLE IEUNG-AE-RIEUL
-0xBEDA 0xC570 # HANGUL SYLLABLE IEUNG-AE-MIEUM
-0xBEDB 0xC571 # HANGUL SYLLABLE IEUNG-AE-PIEUP
-0xBEDC 0xC573 # HANGUL SYLLABLE IEUNG-AE-SIOS
-0xBEDD 0xC574 # HANGUL SYLLABLE IEUNG-AE-SSANGSIOS
-0xBEDE 0xC575 # HANGUL SYLLABLE IEUNG-AE-IEUNG
-0xBEDF 0xC57C # HANGUL SYLLABLE IEUNG-YA
-0xBEE0 0xC57D # HANGUL SYLLABLE IEUNG-YA-KIYEOK
-0xBEE1 0xC580 # HANGUL SYLLABLE IEUNG-YA-NIEUN
-0xBEE2 0xC584 # HANGUL SYLLABLE IEUNG-YA-RIEUL
-0xBEE3 0xC587 # HANGUL SYLLABLE IEUNG-YA-RIEULPIEUP
-0xBEE4 0xC58C # HANGUL SYLLABLE IEUNG-YA-MIEUM
-0xBEE5 0xC58D # HANGUL SYLLABLE IEUNG-YA-PIEUP
-0xBEE6 0xC58F # HANGUL SYLLABLE IEUNG-YA-SIOS
-0xBEE7 0xC591 # HANGUL SYLLABLE IEUNG-YA-IEUNG
-0xBEE8 0xC595 # HANGUL SYLLABLE IEUNG-YA-THIEUTH
-0xBEE9 0xC597 # HANGUL SYLLABLE IEUNG-YA-HIEUH
-0xBEEA 0xC598 # HANGUL SYLLABLE IEUNG-YAE
-0xBEEB 0xC59C # HANGUL SYLLABLE IEUNG-YAE-NIEUN
-0xBEEC 0xC5A0 # HANGUL SYLLABLE IEUNG-YAE-RIEUL
-0xBEED 0xC5A9 # HANGUL SYLLABLE IEUNG-YAE-PIEUP
-0xBEEE 0xC5B4 # HANGUL SYLLABLE IEUNG-EO
-0xBEEF 0xC5B5 # HANGUL SYLLABLE IEUNG-EO-KIYEOK
-0xBEF0 0xC5B8 # HANGUL SYLLABLE IEUNG-EO-NIEUN
-0xBEF1 0xC5B9 # HANGUL SYLLABLE IEUNG-EO-NIEUNCIEUC
-0xBEF2 0xC5BB # HANGUL SYLLABLE IEUNG-EO-TIKEUT
-0xBEF3 0xC5BC # HANGUL SYLLABLE IEUNG-EO-RIEUL
-0xBEF4 0xC5BD # HANGUL SYLLABLE IEUNG-EO-RIEULKIYEOK
-0xBEF5 0xC5BE # HANGUL SYLLABLE IEUNG-EO-RIEULMIEUM
-0xBEF6 0xC5C4 # HANGUL SYLLABLE IEUNG-EO-MIEUM
-0xBEF7 0xC5C5 # HANGUL SYLLABLE IEUNG-EO-PIEUP
-0xBEF8 0xC5C6 # HANGUL SYLLABLE IEUNG-EO-PIEUPSIOS
-0xBEF9 0xC5C7 # HANGUL SYLLABLE IEUNG-EO-SIOS
-0xBEFA 0xC5C8 # HANGUL SYLLABLE IEUNG-EO-SSANGSIOS
-0xBEFB 0xC5C9 # HANGUL SYLLABLE IEUNG-EO-IEUNG
-0xBEFC 0xC5CA # HANGUL SYLLABLE IEUNG-EO-CIEUC
-0xBEFD 0xC5CC # HANGUL SYLLABLE IEUNG-EO-KHIEUKH
-0xBEFE 0xC5CE # HANGUL SYLLABLE IEUNG-EO-PHIEUPH
-0xBF41 0xD49E # HANGUL SYLLABLE PHIEUPH-WEO-RIEULMIEUM
-0xBF42 0xD49F # HANGUL SYLLABLE PHIEUPH-WEO-RIEULPIEUP
-0xBF43 0xD4A0 # HANGUL SYLLABLE PHIEUPH-WEO-RIEULSIOS
-0xBF44 0xD4A1 # HANGUL SYLLABLE PHIEUPH-WEO-RIEULTHIEUTH
-0xBF45 0xD4A2 # HANGUL SYLLABLE PHIEUPH-WEO-RIEULPHIEUPH
-0xBF46 0xD4A3 # HANGUL SYLLABLE PHIEUPH-WEO-RIEULHIEUH
-0xBF47 0xD4A4 # HANGUL SYLLABLE PHIEUPH-WEO-MIEUM
-0xBF48 0xD4A5 # HANGUL SYLLABLE PHIEUPH-WEO-PIEUP
-0xBF49 0xD4A6 # HANGUL SYLLABLE PHIEUPH-WEO-PIEUPSIOS
-0xBF4A 0xD4A7 # HANGUL SYLLABLE PHIEUPH-WEO-SIOS
-0xBF4B 0xD4A8 # HANGUL SYLLABLE PHIEUPH-WEO-SSANGSIOS
-0xBF4C 0xD4AA # HANGUL SYLLABLE PHIEUPH-WEO-CIEUC
-0xBF4D 0xD4AB # HANGUL SYLLABLE PHIEUPH-WEO-CHIEUCH
-0xBF4E 0xD4AC # HANGUL SYLLABLE PHIEUPH-WEO-KHIEUKH
-0xBF4F 0xD4AD # HANGUL SYLLABLE PHIEUPH-WEO-THIEUTH
-0xBF50 0xD4AE # HANGUL SYLLABLE PHIEUPH-WEO-PHIEUPH
-0xBF51 0xD4AF # HANGUL SYLLABLE PHIEUPH-WEO-HIEUH
-0xBF52 0xD4B0 # HANGUL SYLLABLE PHIEUPH-WE
-0xBF53 0xD4B1 # HANGUL SYLLABLE PHIEUPH-WE-KIYEOK
-0xBF54 0xD4B2 # HANGUL SYLLABLE PHIEUPH-WE-SSANGKIYEOK
-0xBF55 0xD4B3 # HANGUL SYLLABLE PHIEUPH-WE-KIYEOKSIOS
-0xBF56 0xD4B4 # HANGUL SYLLABLE PHIEUPH-WE-NIEUN
-0xBF57 0xD4B5 # HANGUL SYLLABLE PHIEUPH-WE-NIEUNCIEUC
-0xBF58 0xD4B6 # HANGUL SYLLABLE PHIEUPH-WE-NIEUNHIEUH
-0xBF59 0xD4B7 # HANGUL SYLLABLE PHIEUPH-WE-TIKEUT
-0xBF5A 0xD4B8 # HANGUL SYLLABLE PHIEUPH-WE-RIEUL
-0xBF61 0xD4B9 # HANGUL SYLLABLE PHIEUPH-WE-RIEULKIYEOK
-0xBF62 0xD4BA # HANGUL SYLLABLE PHIEUPH-WE-RIEULMIEUM
-0xBF63 0xD4BB # HANGUL SYLLABLE PHIEUPH-WE-RIEULPIEUP
-0xBF64 0xD4BC # HANGUL SYLLABLE PHIEUPH-WE-RIEULSIOS
-0xBF65 0xD4BD # HANGUL SYLLABLE PHIEUPH-WE-RIEULTHIEUTH
-0xBF66 0xD4BE # HANGUL SYLLABLE PHIEUPH-WE-RIEULPHIEUPH
-0xBF67 0xD4BF # HANGUL SYLLABLE PHIEUPH-WE-RIEULHIEUH
-0xBF68 0xD4C0 # HANGUL SYLLABLE PHIEUPH-WE-MIEUM
-0xBF69 0xD4C1 # HANGUL SYLLABLE PHIEUPH-WE-PIEUP
-0xBF6A 0xD4C2 # HANGUL SYLLABLE PHIEUPH-WE-PIEUPSIOS
-0xBF6B 0xD4C3 # HANGUL SYLLABLE PHIEUPH-WE-SIOS
-0xBF6C 0xD4C4 # HANGUL SYLLABLE PHIEUPH-WE-SSANGSIOS
-0xBF6D 0xD4C5 # HANGUL SYLLABLE PHIEUPH-WE-IEUNG
-0xBF6E 0xD4C6 # HANGUL SYLLABLE PHIEUPH-WE-CIEUC
-0xBF6F 0xD4C7 # HANGUL SYLLABLE PHIEUPH-WE-CHIEUCH
-0xBF70 0xD4C8 # HANGUL SYLLABLE PHIEUPH-WE-KHIEUKH
-0xBF71 0xD4C9 # HANGUL SYLLABLE PHIEUPH-WE-THIEUTH
-0xBF72 0xD4CA # HANGUL SYLLABLE PHIEUPH-WE-PHIEUPH
-0xBF73 0xD4CB # HANGUL SYLLABLE PHIEUPH-WE-HIEUH
-0xBF74 0xD4CD # HANGUL SYLLABLE PHIEUPH-WI-KIYEOK
-0xBF75 0xD4CE # HANGUL SYLLABLE PHIEUPH-WI-SSANGKIYEOK
-0xBF76 0xD4CF # HANGUL SYLLABLE PHIEUPH-WI-KIYEOKSIOS
-0xBF77 0xD4D1 # HANGUL SYLLABLE PHIEUPH-WI-NIEUNCIEUC
-0xBF78 0xD4D2 # HANGUL SYLLABLE PHIEUPH-WI-NIEUNHIEUH
-0xBF79 0xD4D3 # HANGUL SYLLABLE PHIEUPH-WI-TIKEUT
-0xBF7A 0xD4D5 # HANGUL SYLLABLE PHIEUPH-WI-RIEULKIYEOK
-0xBF81 0xD4D6 # HANGUL SYLLABLE PHIEUPH-WI-RIEULMIEUM
-0xBF82 0xD4D7 # HANGUL SYLLABLE PHIEUPH-WI-RIEULPIEUP
-0xBF83 0xD4D8 # HANGUL SYLLABLE PHIEUPH-WI-RIEULSIOS
-0xBF84 0xD4D9 # HANGUL SYLLABLE PHIEUPH-WI-RIEULTHIEUTH
-0xBF85 0xD4DA # HANGUL SYLLABLE PHIEUPH-WI-RIEULPHIEUPH
-0xBF86 0xD4DB # HANGUL SYLLABLE PHIEUPH-WI-RIEULHIEUH
-0xBF87 0xD4DD # HANGUL SYLLABLE PHIEUPH-WI-PIEUP
-0xBF88 0xD4DE # HANGUL SYLLABLE PHIEUPH-WI-PIEUPSIOS
-0xBF89 0xD4E0 # HANGUL SYLLABLE PHIEUPH-WI-SSANGSIOS
-0xBF8A 0xD4E1 # HANGUL SYLLABLE PHIEUPH-WI-IEUNG
-0xBF8B 0xD4E2 # HANGUL SYLLABLE PHIEUPH-WI-CIEUC
-0xBF8C 0xD4E3 # HANGUL SYLLABLE PHIEUPH-WI-CHIEUCH
-0xBF8D 0xD4E4 # HANGUL SYLLABLE PHIEUPH-WI-KHIEUKH
-0xBF8E 0xD4E5 # HANGUL SYLLABLE PHIEUPH-WI-THIEUTH
-0xBF8F 0xD4E6 # HANGUL SYLLABLE PHIEUPH-WI-PHIEUPH
-0xBF90 0xD4E7 # HANGUL SYLLABLE PHIEUPH-WI-HIEUH
-0xBF91 0xD4E9 # HANGUL SYLLABLE PHIEUPH-YU-KIYEOK
-0xBF92 0xD4EA # HANGUL SYLLABLE PHIEUPH-YU-SSANGKIYEOK
-0xBF93 0xD4EB # HANGUL SYLLABLE PHIEUPH-YU-KIYEOKSIOS
-0xBF94 0xD4ED # HANGUL SYLLABLE PHIEUPH-YU-NIEUNCIEUC
-0xBF95 0xD4EE # HANGUL SYLLABLE PHIEUPH-YU-NIEUNHIEUH
-0xBF96 0xD4EF # HANGUL SYLLABLE PHIEUPH-YU-TIKEUT
-0xBF97 0xD4F1 # HANGUL SYLLABLE PHIEUPH-YU-RIEULKIYEOK
-0xBF98 0xD4F2 # HANGUL SYLLABLE PHIEUPH-YU-RIEULMIEUM
-0xBF99 0xD4F3 # HANGUL SYLLABLE PHIEUPH-YU-RIEULPIEUP
-0xBF9A 0xD4F4 # HANGUL SYLLABLE PHIEUPH-YU-RIEULSIOS
-0xBF9B 0xD4F5 # HANGUL SYLLABLE PHIEUPH-YU-RIEULTHIEUTH
-0xBF9C 0xD4F6 # HANGUL SYLLABLE PHIEUPH-YU-RIEULPHIEUPH
-0xBF9D 0xD4F7 # HANGUL SYLLABLE PHIEUPH-YU-RIEULHIEUH
-0xBF9E 0xD4F9 # HANGUL SYLLABLE PHIEUPH-YU-PIEUP
-0xBF9F 0xD4FA # HANGUL SYLLABLE PHIEUPH-YU-PIEUPSIOS
-0xBFA0 0xD4FC # HANGUL SYLLABLE PHIEUPH-YU-SSANGSIOS
-0xBFA1 0xC5D0 # HANGUL SYLLABLE IEUNG-E
-0xBFA2 0xC5D1 # HANGUL SYLLABLE IEUNG-E-KIYEOK
-0xBFA3 0xC5D4 # HANGUL SYLLABLE IEUNG-E-NIEUN
-0xBFA4 0xC5D8 # HANGUL SYLLABLE IEUNG-E-RIEUL
-0xBFA5 0xC5E0 # HANGUL SYLLABLE IEUNG-E-MIEUM
-0xBFA6 0xC5E1 # HANGUL SYLLABLE IEUNG-E-PIEUP
-0xBFA7 0xC5E3 # HANGUL SYLLABLE IEUNG-E-SIOS
-0xBFA8 0xC5E5 # HANGUL SYLLABLE IEUNG-E-IEUNG
-0xBFA9 0xC5EC # HANGUL SYLLABLE IEUNG-YEO
-0xBFAA 0xC5ED # HANGUL SYLLABLE IEUNG-YEO-KIYEOK
-0xBFAB 0xC5EE # HANGUL SYLLABLE IEUNG-YEO-SSANGKIYEOK
-0xBFAC 0xC5F0 # HANGUL SYLLABLE IEUNG-YEO-NIEUN
-0xBFAD 0xC5F4 # HANGUL SYLLABLE IEUNG-YEO-RIEUL
-0xBFAE 0xC5F6 # HANGUL SYLLABLE IEUNG-YEO-RIEULMIEUM
-0xBFAF 0xC5F7 # HANGUL SYLLABLE IEUNG-YEO-RIEULPIEUP
-0xBFB0 0xC5FC # HANGUL SYLLABLE IEUNG-YEO-MIEUM
-0xBFB1 0xC5FD # HANGUL SYLLABLE IEUNG-YEO-PIEUP
-0xBFB2 0xC5FE # HANGUL SYLLABLE IEUNG-YEO-PIEUPSIOS
-0xBFB3 0xC5FF # HANGUL SYLLABLE IEUNG-YEO-SIOS
-0xBFB4 0xC600 # HANGUL SYLLABLE IEUNG-YEO-SSANGSIOS
-0xBFB5 0xC601 # HANGUL SYLLABLE IEUNG-YEO-IEUNG
-0xBFB6 0xC605 # HANGUL SYLLABLE IEUNG-YEO-THIEUTH
-0xBFB7 0xC606 # HANGUL SYLLABLE IEUNG-YEO-PHIEUPH
-0xBFB8 0xC607 # HANGUL SYLLABLE IEUNG-YEO-HIEUH
-0xBFB9 0xC608 # HANGUL SYLLABLE IEUNG-YE
-0xBFBA 0xC60C # HANGUL SYLLABLE IEUNG-YE-NIEUN
-0xBFBB 0xC610 # HANGUL SYLLABLE IEUNG-YE-RIEUL
-0xBFBC 0xC618 # HANGUL SYLLABLE IEUNG-YE-MIEUM
-0xBFBD 0xC619 # HANGUL SYLLABLE IEUNG-YE-PIEUP
-0xBFBE 0xC61B # HANGUL SYLLABLE IEUNG-YE-SIOS
-0xBFBF 0xC61C # HANGUL SYLLABLE IEUNG-YE-SSANGSIOS
-0xBFC0 0xC624 # HANGUL SYLLABLE IEUNG-O
-0xBFC1 0xC625 # HANGUL SYLLABLE IEUNG-O-KIYEOK
-0xBFC2 0xC628 # HANGUL SYLLABLE IEUNG-O-NIEUN
-0xBFC3 0xC62C # HANGUL SYLLABLE IEUNG-O-RIEUL
-0xBFC4 0xC62D # HANGUL SYLLABLE IEUNG-O-RIEULKIYEOK
-0xBFC5 0xC62E # HANGUL SYLLABLE IEUNG-O-RIEULMIEUM
-0xBFC6 0xC630 # HANGUL SYLLABLE IEUNG-O-RIEULSIOS
-0xBFC7 0xC633 # HANGUL SYLLABLE IEUNG-O-RIEULHIEUH
-0xBFC8 0xC634 # HANGUL SYLLABLE IEUNG-O-MIEUM
-0xBFC9 0xC635 # HANGUL SYLLABLE IEUNG-O-PIEUP
-0xBFCA 0xC637 # HANGUL SYLLABLE IEUNG-O-SIOS
-0xBFCB 0xC639 # HANGUL SYLLABLE IEUNG-O-IEUNG
-0xBFCC 0xC63B # HANGUL SYLLABLE IEUNG-O-CHIEUCH
-0xBFCD 0xC640 # HANGUL SYLLABLE IEUNG-WA
-0xBFCE 0xC641 # HANGUL SYLLABLE IEUNG-WA-KIYEOK
-0xBFCF 0xC644 # HANGUL SYLLABLE IEUNG-WA-NIEUN
-0xBFD0 0xC648 # HANGUL SYLLABLE IEUNG-WA-RIEUL
-0xBFD1 0xC650 # HANGUL SYLLABLE IEUNG-WA-MIEUM
-0xBFD2 0xC651 # HANGUL SYLLABLE IEUNG-WA-PIEUP
-0xBFD3 0xC653 # HANGUL SYLLABLE IEUNG-WA-SIOS
-0xBFD4 0xC654 # HANGUL SYLLABLE IEUNG-WA-SSANGSIOS
-0xBFD5 0xC655 # HANGUL SYLLABLE IEUNG-WA-IEUNG
-0xBFD6 0xC65C # HANGUL SYLLABLE IEUNG-WAE
-0xBFD7 0xC65D # HANGUL SYLLABLE IEUNG-WAE-KIYEOK
-0xBFD8 0xC660 # HANGUL SYLLABLE IEUNG-WAE-NIEUN
-0xBFD9 0xC66C # HANGUL SYLLABLE IEUNG-WAE-MIEUM
-0xBFDA 0xC66F # HANGUL SYLLABLE IEUNG-WAE-SIOS
-0xBFDB 0xC671 # HANGUL SYLLABLE IEUNG-WAE-IEUNG
-0xBFDC 0xC678 # HANGUL SYLLABLE IEUNG-OE
-0xBFDD 0xC679 # HANGUL SYLLABLE IEUNG-OE-KIYEOK
-0xBFDE 0xC67C # HANGUL SYLLABLE IEUNG-OE-NIEUN
-0xBFDF 0xC680 # HANGUL SYLLABLE IEUNG-OE-RIEUL
-0xBFE0 0xC688 # HANGUL SYLLABLE IEUNG-OE-MIEUM
-0xBFE1 0xC689 # HANGUL SYLLABLE IEUNG-OE-PIEUP
-0xBFE2 0xC68B # HANGUL SYLLABLE IEUNG-OE-SIOS
-0xBFE3 0xC68D # HANGUL SYLLABLE IEUNG-OE-IEUNG
-0xBFE4 0xC694 # HANGUL SYLLABLE IEUNG-YO
-0xBFE5 0xC695 # HANGUL SYLLABLE IEUNG-YO-KIYEOK
-0xBFE6 0xC698 # HANGUL SYLLABLE IEUNG-YO-NIEUN
-0xBFE7 0xC69C # HANGUL SYLLABLE IEUNG-YO-RIEUL
-0xBFE8 0xC6A4 # HANGUL SYLLABLE IEUNG-YO-MIEUM
-0xBFE9 0xC6A5 # HANGUL SYLLABLE IEUNG-YO-PIEUP
-0xBFEA 0xC6A7 # HANGUL SYLLABLE IEUNG-YO-SIOS
-0xBFEB 0xC6A9 # HANGUL SYLLABLE IEUNG-YO-IEUNG
-0xBFEC 0xC6B0 # HANGUL SYLLABLE IEUNG-U
-0xBFED 0xC6B1 # HANGUL SYLLABLE IEUNG-U-KIYEOK
-0xBFEE 0xC6B4 # HANGUL SYLLABLE IEUNG-U-NIEUN
-0xBFEF 0xC6B8 # HANGUL SYLLABLE IEUNG-U-RIEUL
-0xBFF0 0xC6B9 # HANGUL SYLLABLE IEUNG-U-RIEULKIYEOK
-0xBFF1 0xC6BA # HANGUL SYLLABLE IEUNG-U-RIEULMIEUM
-0xBFF2 0xC6C0 # HANGUL SYLLABLE IEUNG-U-MIEUM
-0xBFF3 0xC6C1 # HANGUL SYLLABLE IEUNG-U-PIEUP
-0xBFF4 0xC6C3 # HANGUL SYLLABLE IEUNG-U-SIOS
-0xBFF5 0xC6C5 # HANGUL SYLLABLE IEUNG-U-IEUNG
-0xBFF6 0xC6CC # HANGUL SYLLABLE IEUNG-WEO
-0xBFF7 0xC6CD # HANGUL SYLLABLE IEUNG-WEO-KIYEOK
-0xBFF8 0xC6D0 # HANGUL SYLLABLE IEUNG-WEO-NIEUN
-0xBFF9 0xC6D4 # HANGUL SYLLABLE IEUNG-WEO-RIEUL
-0xBFFA 0xC6DC # HANGUL SYLLABLE IEUNG-WEO-MIEUM
-0xBFFB 0xC6DD # HANGUL SYLLABLE IEUNG-WEO-PIEUP
-0xBFFC 0xC6E0 # HANGUL SYLLABLE IEUNG-WEO-SSANGSIOS
-0xBFFD 0xC6E1 # HANGUL SYLLABLE IEUNG-WEO-IEUNG
-0xBFFE 0xC6E8 # HANGUL SYLLABLE IEUNG-WE
-0xC041 0xD4FE # HANGUL SYLLABLE PHIEUPH-YU-CIEUC
-0xC042 0xD4FF # HANGUL SYLLABLE PHIEUPH-YU-CHIEUCH
-0xC043 0xD500 # HANGUL SYLLABLE PHIEUPH-YU-KHIEUKH
-0xC044 0xD501 # HANGUL SYLLABLE PHIEUPH-YU-THIEUTH
-0xC045 0xD502 # HANGUL SYLLABLE PHIEUPH-YU-PHIEUPH
-0xC046 0xD503 # HANGUL SYLLABLE PHIEUPH-YU-HIEUH
-0xC047 0xD505 # HANGUL SYLLABLE PHIEUPH-EU-KIYEOK
-0xC048 0xD506 # HANGUL SYLLABLE PHIEUPH-EU-SSANGKIYEOK
-0xC049 0xD507 # HANGUL SYLLABLE PHIEUPH-EU-KIYEOKSIOS
-0xC04A 0xD509 # HANGUL SYLLABLE PHIEUPH-EU-NIEUNCIEUC
-0xC04B 0xD50A # HANGUL SYLLABLE PHIEUPH-EU-NIEUNHIEUH
-0xC04C 0xD50B # HANGUL SYLLABLE PHIEUPH-EU-TIKEUT
-0xC04D 0xD50D # HANGUL SYLLABLE PHIEUPH-EU-RIEULKIYEOK
-0xC04E 0xD50E # HANGUL SYLLABLE PHIEUPH-EU-RIEULMIEUM
-0xC04F 0xD50F # HANGUL SYLLABLE PHIEUPH-EU-RIEULPIEUP
-0xC050 0xD510 # HANGUL SYLLABLE PHIEUPH-EU-RIEULSIOS
-0xC051 0xD511 # HANGUL SYLLABLE PHIEUPH-EU-RIEULTHIEUTH
-0xC052 0xD512 # HANGUL SYLLABLE PHIEUPH-EU-RIEULPHIEUPH
-0xC053 0xD513 # HANGUL SYLLABLE PHIEUPH-EU-RIEULHIEUH
-0xC054 0xD516 # HANGUL SYLLABLE PHIEUPH-EU-PIEUPSIOS
-0xC055 0xD518 # HANGUL SYLLABLE PHIEUPH-EU-SSANGSIOS
-0xC056 0xD519 # HANGUL SYLLABLE PHIEUPH-EU-IEUNG
-0xC057 0xD51A # HANGUL SYLLABLE PHIEUPH-EU-CIEUC
-0xC058 0xD51B # HANGUL SYLLABLE PHIEUPH-EU-CHIEUCH
-0xC059 0xD51C # HANGUL SYLLABLE PHIEUPH-EU-KHIEUKH
-0xC05A 0xD51D # HANGUL SYLLABLE PHIEUPH-EU-THIEUTH
-0xC061 0xD51E # HANGUL SYLLABLE PHIEUPH-EU-PHIEUPH
-0xC062 0xD51F # HANGUL SYLLABLE PHIEUPH-EU-HIEUH
-0xC063 0xD520 # HANGUL SYLLABLE PHIEUPH-YI
-0xC064 0xD521 # HANGUL SYLLABLE PHIEUPH-YI-KIYEOK
-0xC065 0xD522 # HANGUL SYLLABLE PHIEUPH-YI-SSANGKIYEOK
-0xC066 0xD523 # HANGUL SYLLABLE PHIEUPH-YI-KIYEOKSIOS
-0xC067 0xD524 # HANGUL SYLLABLE PHIEUPH-YI-NIEUN
-0xC068 0xD525 # HANGUL SYLLABLE PHIEUPH-YI-NIEUNCIEUC
-0xC069 0xD526 # HANGUL SYLLABLE PHIEUPH-YI-NIEUNHIEUH
-0xC06A 0xD527 # HANGUL SYLLABLE PHIEUPH-YI-TIKEUT
-0xC06B 0xD528 # HANGUL SYLLABLE PHIEUPH-YI-RIEUL
-0xC06C 0xD529 # HANGUL SYLLABLE PHIEUPH-YI-RIEULKIYEOK
-0xC06D 0xD52A # HANGUL SYLLABLE PHIEUPH-YI-RIEULMIEUM
-0xC06E 0xD52B # HANGUL SYLLABLE PHIEUPH-YI-RIEULPIEUP
-0xC06F 0xD52C # HANGUL SYLLABLE PHIEUPH-YI-RIEULSIOS
-0xC070 0xD52D # HANGUL SYLLABLE PHIEUPH-YI-RIEULTHIEUTH
-0xC071 0xD52E # HANGUL SYLLABLE PHIEUPH-YI-RIEULPHIEUPH
-0xC072 0xD52F # HANGUL SYLLABLE PHIEUPH-YI-RIEULHIEUH
-0xC073 0xD530 # HANGUL SYLLABLE PHIEUPH-YI-MIEUM
-0xC074 0xD531 # HANGUL SYLLABLE PHIEUPH-YI-PIEUP
-0xC075 0xD532 # HANGUL SYLLABLE PHIEUPH-YI-PIEUPSIOS
-0xC076 0xD533 # HANGUL SYLLABLE PHIEUPH-YI-SIOS
-0xC077 0xD534 # HANGUL SYLLABLE PHIEUPH-YI-SSANGSIOS
-0xC078 0xD535 # HANGUL SYLLABLE PHIEUPH-YI-IEUNG
-0xC079 0xD536 # HANGUL SYLLABLE PHIEUPH-YI-CIEUC
-0xC07A 0xD537 # HANGUL SYLLABLE PHIEUPH-YI-CHIEUCH
-0xC081 0xD538 # HANGUL SYLLABLE PHIEUPH-YI-KHIEUKH
-0xC082 0xD539 # HANGUL SYLLABLE PHIEUPH-YI-THIEUTH
-0xC083 0xD53A # HANGUL SYLLABLE PHIEUPH-YI-PHIEUPH
-0xC084 0xD53B # HANGUL SYLLABLE PHIEUPH-YI-HIEUH
-0xC085 0xD53E # HANGUL SYLLABLE PHIEUPH-I-SSANGKIYEOK
-0xC086 0xD53F # HANGUL SYLLABLE PHIEUPH-I-KIYEOKSIOS
-0xC087 0xD541 # HANGUL SYLLABLE PHIEUPH-I-NIEUNCIEUC
-0xC088 0xD542 # HANGUL SYLLABLE PHIEUPH-I-NIEUNHIEUH
-0xC089 0xD543 # HANGUL SYLLABLE PHIEUPH-I-TIKEUT
-0xC08A 0xD545 # HANGUL SYLLABLE PHIEUPH-I-RIEULKIYEOK
-0xC08B 0xD546 # HANGUL SYLLABLE PHIEUPH-I-RIEULMIEUM
-0xC08C 0xD547 # HANGUL SYLLABLE PHIEUPH-I-RIEULPIEUP
-0xC08D 0xD548 # HANGUL SYLLABLE PHIEUPH-I-RIEULSIOS
-0xC08E 0xD549 # HANGUL SYLLABLE PHIEUPH-I-RIEULTHIEUTH
-0xC08F 0xD54A # HANGUL SYLLABLE PHIEUPH-I-RIEULPHIEUPH
-0xC090 0xD54B # HANGUL SYLLABLE PHIEUPH-I-RIEULHIEUH
-0xC091 0xD54E # HANGUL SYLLABLE PHIEUPH-I-PIEUPSIOS
-0xC092 0xD550 # HANGUL SYLLABLE PHIEUPH-I-SSANGSIOS
-0xC093 0xD552 # HANGUL SYLLABLE PHIEUPH-I-CIEUC
-0xC094 0xD553 # HANGUL SYLLABLE PHIEUPH-I-CHIEUCH
-0xC095 0xD554 # HANGUL SYLLABLE PHIEUPH-I-KHIEUKH
-0xC096 0xD555 # HANGUL SYLLABLE PHIEUPH-I-THIEUTH
-0xC097 0xD556 # HANGUL SYLLABLE PHIEUPH-I-PHIEUPH
-0xC098 0xD557 # HANGUL SYLLABLE PHIEUPH-I-HIEUH
-0xC099 0xD55A # HANGUL SYLLABLE HIEUH-A-SSANGKIYEOK
-0xC09A 0xD55B # HANGUL SYLLABLE HIEUH-A-KIYEOKSIOS
-0xC09B 0xD55D # HANGUL SYLLABLE HIEUH-A-NIEUNCIEUC
-0xC09C 0xD55E # HANGUL SYLLABLE HIEUH-A-NIEUNHIEUH
-0xC09D 0xD55F # HANGUL SYLLABLE HIEUH-A-TIKEUT
-0xC09E 0xD561 # HANGUL SYLLABLE HIEUH-A-RIEULKIYEOK
-0xC09F 0xD562 # HANGUL SYLLABLE HIEUH-A-RIEULMIEUM
-0xC0A0 0xD563 # HANGUL SYLLABLE HIEUH-A-RIEULPIEUP
-0xC0A1 0xC6E9 # HANGUL SYLLABLE IEUNG-WE-KIYEOK
-0xC0A2 0xC6EC # HANGUL SYLLABLE IEUNG-WE-NIEUN
-0xC0A3 0xC6F0 # HANGUL SYLLABLE IEUNG-WE-RIEUL
-0xC0A4 0xC6F8 # HANGUL SYLLABLE IEUNG-WE-MIEUM
-0xC0A5 0xC6F9 # HANGUL SYLLABLE IEUNG-WE-PIEUP
-0xC0A6 0xC6FD # HANGUL SYLLABLE IEUNG-WE-IEUNG
-0xC0A7 0xC704 # HANGUL SYLLABLE IEUNG-WI
-0xC0A8 0xC705 # HANGUL SYLLABLE IEUNG-WI-KIYEOK
-0xC0A9 0xC708 # HANGUL SYLLABLE IEUNG-WI-NIEUN
-0xC0AA 0xC70C # HANGUL SYLLABLE IEUNG-WI-RIEUL
-0xC0AB 0xC714 # HANGUL SYLLABLE IEUNG-WI-MIEUM
-0xC0AC 0xC715 # HANGUL SYLLABLE IEUNG-WI-PIEUP
-0xC0AD 0xC717 # HANGUL SYLLABLE IEUNG-WI-SIOS
-0xC0AE 0xC719 # HANGUL SYLLABLE IEUNG-WI-IEUNG
-0xC0AF 0xC720 # HANGUL SYLLABLE IEUNG-YU
-0xC0B0 0xC721 # HANGUL SYLLABLE IEUNG-YU-KIYEOK
-0xC0B1 0xC724 # HANGUL SYLLABLE IEUNG-YU-NIEUN
-0xC0B2 0xC728 # HANGUL SYLLABLE IEUNG-YU-RIEUL
-0xC0B3 0xC730 # HANGUL SYLLABLE IEUNG-YU-MIEUM
-0xC0B4 0xC731 # HANGUL SYLLABLE IEUNG-YU-PIEUP
-0xC0B5 0xC733 # HANGUL SYLLABLE IEUNG-YU-SIOS
-0xC0B6 0xC735 # HANGUL SYLLABLE IEUNG-YU-IEUNG
-0xC0B7 0xC737 # HANGUL SYLLABLE IEUNG-YU-CHIEUCH
-0xC0B8 0xC73C # HANGUL SYLLABLE IEUNG-EU
-0xC0B9 0xC73D # HANGUL SYLLABLE IEUNG-EU-KIYEOK
-0xC0BA 0xC740 # HANGUL SYLLABLE IEUNG-EU-NIEUN
-0xC0BB 0xC744 # HANGUL SYLLABLE IEUNG-EU-RIEUL
-0xC0BC 0xC74A # HANGUL SYLLABLE IEUNG-EU-RIEULPHIEUPH
-0xC0BD 0xC74C # HANGUL SYLLABLE IEUNG-EU-MIEUM
-0xC0BE 0xC74D # HANGUL SYLLABLE IEUNG-EU-PIEUP
-0xC0BF 0xC74F # HANGUL SYLLABLE IEUNG-EU-SIOS
-0xC0C0 0xC751 # HANGUL SYLLABLE IEUNG-EU-IEUNG
-0xC0C1 0xC752 # HANGUL SYLLABLE IEUNG-EU-CIEUC
-0xC0C2 0xC753 # HANGUL SYLLABLE IEUNG-EU-CHIEUCH
-0xC0C3 0xC754 # HANGUL SYLLABLE IEUNG-EU-KHIEUKH
-0xC0C4 0xC755 # HANGUL SYLLABLE IEUNG-EU-THIEUTH
-0xC0C5 0xC756 # HANGUL SYLLABLE IEUNG-EU-PHIEUPH
-0xC0C6 0xC757 # HANGUL SYLLABLE IEUNG-EU-HIEUH
-0xC0C7 0xC758 # HANGUL SYLLABLE IEUNG-YI
-0xC0C8 0xC75C # HANGUL SYLLABLE IEUNG-YI-NIEUN
-0xC0C9 0xC760 # HANGUL SYLLABLE IEUNG-YI-RIEUL
-0xC0CA 0xC768 # HANGUL SYLLABLE IEUNG-YI-MIEUM
-0xC0CB 0xC76B # HANGUL SYLLABLE IEUNG-YI-SIOS
-0xC0CC 0xC774 # HANGUL SYLLABLE IEUNG-I
-0xC0CD 0xC775 # HANGUL SYLLABLE IEUNG-I-KIYEOK
-0xC0CE 0xC778 # HANGUL SYLLABLE IEUNG-I-NIEUN
-0xC0CF 0xC77C # HANGUL SYLLABLE IEUNG-I-RIEUL
-0xC0D0 0xC77D # HANGUL SYLLABLE IEUNG-I-RIEULKIYEOK
-0xC0D1 0xC77E # HANGUL SYLLABLE IEUNG-I-RIEULMIEUM
-0xC0D2 0xC783 # HANGUL SYLLABLE IEUNG-I-RIEULHIEUH
-0xC0D3 0xC784 # HANGUL SYLLABLE IEUNG-I-MIEUM
-0xC0D4 0xC785 # HANGUL SYLLABLE IEUNG-I-PIEUP
-0xC0D5 0xC787 # HANGUL SYLLABLE IEUNG-I-SIOS
-0xC0D6 0xC788 # HANGUL SYLLABLE IEUNG-I-SSANGSIOS
-0xC0D7 0xC789 # HANGUL SYLLABLE IEUNG-I-IEUNG
-0xC0D8 0xC78A # HANGUL SYLLABLE IEUNG-I-CIEUC
-0xC0D9 0xC78E # HANGUL SYLLABLE IEUNG-I-PHIEUPH
-0xC0DA 0xC790 # HANGUL SYLLABLE CIEUC-A
-0xC0DB 0xC791 # HANGUL SYLLABLE CIEUC-A-KIYEOK
-0xC0DC 0xC794 # HANGUL SYLLABLE CIEUC-A-NIEUN
-0xC0DD 0xC796 # HANGUL SYLLABLE CIEUC-A-NIEUNHIEUH
-0xC0DE 0xC797 # HANGUL SYLLABLE CIEUC-A-TIKEUT
-0xC0DF 0xC798 # HANGUL SYLLABLE CIEUC-A-RIEUL
-0xC0E0 0xC79A # HANGUL SYLLABLE CIEUC-A-RIEULMIEUM
-0xC0E1 0xC7A0 # HANGUL SYLLABLE CIEUC-A-MIEUM
-0xC0E2 0xC7A1 # HANGUL SYLLABLE CIEUC-A-PIEUP
-0xC0E3 0xC7A3 # HANGUL SYLLABLE CIEUC-A-SIOS
-0xC0E4 0xC7A4 # HANGUL SYLLABLE CIEUC-A-SSANGSIOS
-0xC0E5 0xC7A5 # HANGUL SYLLABLE CIEUC-A-IEUNG
-0xC0E6 0xC7A6 # HANGUL SYLLABLE CIEUC-A-CIEUC
-0xC0E7 0xC7AC # HANGUL SYLLABLE CIEUC-AE
-0xC0E8 0xC7AD # HANGUL SYLLABLE CIEUC-AE-KIYEOK
-0xC0E9 0xC7B0 # HANGUL SYLLABLE CIEUC-AE-NIEUN
-0xC0EA 0xC7B4 # HANGUL SYLLABLE CIEUC-AE-RIEUL
-0xC0EB 0xC7BC # HANGUL SYLLABLE CIEUC-AE-MIEUM
-0xC0EC 0xC7BD # HANGUL SYLLABLE CIEUC-AE-PIEUP
-0xC0ED 0xC7BF # HANGUL SYLLABLE CIEUC-AE-SIOS
-0xC0EE 0xC7C0 # HANGUL SYLLABLE CIEUC-AE-SSANGSIOS
-0xC0EF 0xC7C1 # HANGUL SYLLABLE CIEUC-AE-IEUNG
-0xC0F0 0xC7C8 # HANGUL SYLLABLE CIEUC-YA
-0xC0F1 0xC7C9 # HANGUL SYLLABLE CIEUC-YA-KIYEOK
-0xC0F2 0xC7CC # HANGUL SYLLABLE CIEUC-YA-NIEUN
-0xC0F3 0xC7CE # HANGUL SYLLABLE CIEUC-YA-NIEUNHIEUH
-0xC0F4 0xC7D0 # HANGUL SYLLABLE CIEUC-YA-RIEUL
-0xC0F5 0xC7D8 # HANGUL SYLLABLE CIEUC-YA-MIEUM
-0xC0F6 0xC7DD # HANGUL SYLLABLE CIEUC-YA-IEUNG
-0xC0F7 0xC7E4 # HANGUL SYLLABLE CIEUC-YAE
-0xC0F8 0xC7E8 # HANGUL SYLLABLE CIEUC-YAE-NIEUN
-0xC0F9 0xC7EC # HANGUL SYLLABLE CIEUC-YAE-RIEUL
-0xC0FA 0xC800 # HANGUL SYLLABLE CIEUC-EO
-0xC0FB 0xC801 # HANGUL SYLLABLE CIEUC-EO-KIYEOK
-0xC0FC 0xC804 # HANGUL SYLLABLE CIEUC-EO-NIEUN
-0xC0FD 0xC808 # HANGUL SYLLABLE CIEUC-EO-RIEUL
-0xC0FE 0xC80A # HANGUL SYLLABLE CIEUC-EO-RIEULMIEUM
-0xC141 0xD564 # HANGUL SYLLABLE HIEUH-A-RIEULSIOS
-0xC142 0xD566 # HANGUL SYLLABLE HIEUH-A-RIEULPHIEUPH
-0xC143 0xD567 # HANGUL SYLLABLE HIEUH-A-RIEULHIEUH
-0xC144 0xD56A # HANGUL SYLLABLE HIEUH-A-PIEUPSIOS
-0xC145 0xD56C # HANGUL SYLLABLE HIEUH-A-SSANGSIOS
-0xC146 0xD56E # HANGUL SYLLABLE HIEUH-A-CIEUC
-0xC147 0xD56F # HANGUL SYLLABLE HIEUH-A-CHIEUCH
-0xC148 0xD570 # HANGUL SYLLABLE HIEUH-A-KHIEUKH
-0xC149 0xD571 # HANGUL SYLLABLE HIEUH-A-THIEUTH
-0xC14A 0xD572 # HANGUL SYLLABLE HIEUH-A-PHIEUPH
-0xC14B 0xD573 # HANGUL SYLLABLE HIEUH-A-HIEUH
-0xC14C 0xD576 # HANGUL SYLLABLE HIEUH-AE-SSANGKIYEOK
-0xC14D 0xD577 # HANGUL SYLLABLE HIEUH-AE-KIYEOKSIOS
-0xC14E 0xD579 # HANGUL SYLLABLE HIEUH-AE-NIEUNCIEUC
-0xC14F 0xD57A # HANGUL SYLLABLE HIEUH-AE-NIEUNHIEUH
-0xC150 0xD57B # HANGUL SYLLABLE HIEUH-AE-TIKEUT
-0xC151 0xD57D # HANGUL SYLLABLE HIEUH-AE-RIEULKIYEOK
-0xC152 0xD57E # HANGUL SYLLABLE HIEUH-AE-RIEULMIEUM
-0xC153 0xD57F # HANGUL SYLLABLE HIEUH-AE-RIEULPIEUP
-0xC154 0xD580 # HANGUL SYLLABLE HIEUH-AE-RIEULSIOS
-0xC155 0xD581 # HANGUL SYLLABLE HIEUH-AE-RIEULTHIEUTH
-0xC156 0xD582 # HANGUL SYLLABLE HIEUH-AE-RIEULPHIEUPH
-0xC157 0xD583 # HANGUL SYLLABLE HIEUH-AE-RIEULHIEUH
-0xC158 0xD586 # HANGUL SYLLABLE HIEUH-AE-PIEUPSIOS
-0xC159 0xD58A # HANGUL SYLLABLE HIEUH-AE-CIEUC
-0xC15A 0xD58B # HANGUL SYLLABLE HIEUH-AE-CHIEUCH
-0xC161 0xD58C # HANGUL SYLLABLE HIEUH-AE-KHIEUKH
-0xC162 0xD58D # HANGUL SYLLABLE HIEUH-AE-THIEUTH
-0xC163 0xD58E # HANGUL SYLLABLE HIEUH-AE-PHIEUPH
-0xC164 0xD58F # HANGUL SYLLABLE HIEUH-AE-HIEUH
-0xC165 0xD591 # HANGUL SYLLABLE HIEUH-YA-KIYEOK
-0xC166 0xD592 # HANGUL SYLLABLE HIEUH-YA-SSANGKIYEOK
-0xC167 0xD593 # HANGUL SYLLABLE HIEUH-YA-KIYEOKSIOS
-0xC168 0xD594 # HANGUL SYLLABLE HIEUH-YA-NIEUN
-0xC169 0xD595 # HANGUL SYLLABLE HIEUH-YA-NIEUNCIEUC
-0xC16A 0xD596 # HANGUL SYLLABLE HIEUH-YA-NIEUNHIEUH
-0xC16B 0xD597 # HANGUL SYLLABLE HIEUH-YA-TIKEUT
-0xC16C 0xD598 # HANGUL SYLLABLE HIEUH-YA-RIEUL
-0xC16D 0xD599 # HANGUL SYLLABLE HIEUH-YA-RIEULKIYEOK
-0xC16E 0xD59A # HANGUL SYLLABLE HIEUH-YA-RIEULMIEUM
-0xC16F 0xD59B # HANGUL SYLLABLE HIEUH-YA-RIEULPIEUP
-0xC170 0xD59C # HANGUL SYLLABLE HIEUH-YA-RIEULSIOS
-0xC171 0xD59D # HANGUL SYLLABLE HIEUH-YA-RIEULTHIEUTH
-0xC172 0xD59E # HANGUL SYLLABLE HIEUH-YA-RIEULPHIEUPH
-0xC173 0xD59F # HANGUL SYLLABLE HIEUH-YA-RIEULHIEUH
-0xC174 0xD5A0 # HANGUL SYLLABLE HIEUH-YA-MIEUM
-0xC175 0xD5A1 # HANGUL SYLLABLE HIEUH-YA-PIEUP
-0xC176 0xD5A2 # HANGUL SYLLABLE HIEUH-YA-PIEUPSIOS
-0xC177 0xD5A3 # HANGUL SYLLABLE HIEUH-YA-SIOS
-0xC178 0xD5A4 # HANGUL SYLLABLE HIEUH-YA-SSANGSIOS
-0xC179 0xD5A6 # HANGUL SYLLABLE HIEUH-YA-CIEUC
-0xC17A 0xD5A7 # HANGUL SYLLABLE HIEUH-YA-CHIEUCH
-0xC181 0xD5A8 # HANGUL SYLLABLE HIEUH-YA-KHIEUKH
-0xC182 0xD5A9 # HANGUL SYLLABLE HIEUH-YA-THIEUTH
-0xC183 0xD5AA # HANGUL SYLLABLE HIEUH-YA-PHIEUPH
-0xC184 0xD5AB # HANGUL SYLLABLE HIEUH-YA-HIEUH
-0xC185 0xD5AC # HANGUL SYLLABLE HIEUH-YAE
-0xC186 0xD5AD # HANGUL SYLLABLE HIEUH-YAE-KIYEOK
-0xC187 0xD5AE # HANGUL SYLLABLE HIEUH-YAE-SSANGKIYEOK
-0xC188 0xD5AF # HANGUL SYLLABLE HIEUH-YAE-KIYEOKSIOS
-0xC189 0xD5B0 # HANGUL SYLLABLE HIEUH-YAE-NIEUN
-0xC18A 0xD5B1 # HANGUL SYLLABLE HIEUH-YAE-NIEUNCIEUC
-0xC18B 0xD5B2 # HANGUL SYLLABLE HIEUH-YAE-NIEUNHIEUH
-0xC18C 0xD5B3 # HANGUL SYLLABLE HIEUH-YAE-TIKEUT
-0xC18D 0xD5B4 # HANGUL SYLLABLE HIEUH-YAE-RIEUL
-0xC18E 0xD5B5 # HANGUL SYLLABLE HIEUH-YAE-RIEULKIYEOK
-0xC18F 0xD5B6 # HANGUL SYLLABLE HIEUH-YAE-RIEULMIEUM
-0xC190 0xD5B7 # HANGUL SYLLABLE HIEUH-YAE-RIEULPIEUP
-0xC191 0xD5B8 # HANGUL SYLLABLE HIEUH-YAE-RIEULSIOS
-0xC192 0xD5B9 # HANGUL SYLLABLE HIEUH-YAE-RIEULTHIEUTH
-0xC193 0xD5BA # HANGUL SYLLABLE HIEUH-YAE-RIEULPHIEUPH
-0xC194 0xD5BB # HANGUL SYLLABLE HIEUH-YAE-RIEULHIEUH
-0xC195 0xD5BC # HANGUL SYLLABLE HIEUH-YAE-MIEUM
-0xC196 0xD5BD # HANGUL SYLLABLE HIEUH-YAE-PIEUP
-0xC197 0xD5BE # HANGUL SYLLABLE HIEUH-YAE-PIEUPSIOS
-0xC198 0xD5BF # HANGUL SYLLABLE HIEUH-YAE-SIOS
-0xC199 0xD5C0 # HANGUL SYLLABLE HIEUH-YAE-SSANGSIOS
-0xC19A 0xD5C1 # HANGUL SYLLABLE HIEUH-YAE-IEUNG
-0xC19B 0xD5C2 # HANGUL SYLLABLE HIEUH-YAE-CIEUC
-0xC19C 0xD5C3 # HANGUL SYLLABLE HIEUH-YAE-CHIEUCH
-0xC19D 0xD5C4 # HANGUL SYLLABLE HIEUH-YAE-KHIEUKH
-0xC19E 0xD5C5 # HANGUL SYLLABLE HIEUH-YAE-THIEUTH
-0xC19F 0xD5C6 # HANGUL SYLLABLE HIEUH-YAE-PHIEUPH
-0xC1A0 0xD5C7 # HANGUL SYLLABLE HIEUH-YAE-HIEUH
-0xC1A1 0xC810 # HANGUL SYLLABLE CIEUC-EO-MIEUM
-0xC1A2 0xC811 # HANGUL SYLLABLE CIEUC-EO-PIEUP
-0xC1A3 0xC813 # HANGUL SYLLABLE CIEUC-EO-SIOS
-0xC1A4 0xC815 # HANGUL SYLLABLE CIEUC-EO-IEUNG
-0xC1A5 0xC816 # HANGUL SYLLABLE CIEUC-EO-CIEUC
-0xC1A6 0xC81C # HANGUL SYLLABLE CIEUC-E
-0xC1A7 0xC81D # HANGUL SYLLABLE CIEUC-E-KIYEOK
-0xC1A8 0xC820 # HANGUL SYLLABLE CIEUC-E-NIEUN
-0xC1A9 0xC824 # HANGUL SYLLABLE CIEUC-E-RIEUL
-0xC1AA 0xC82C # HANGUL SYLLABLE CIEUC-E-MIEUM
-0xC1AB 0xC82D # HANGUL SYLLABLE CIEUC-E-PIEUP
-0xC1AC 0xC82F # HANGUL SYLLABLE CIEUC-E-SIOS
-0xC1AD 0xC831 # HANGUL SYLLABLE CIEUC-E-IEUNG
-0xC1AE 0xC838 # HANGUL SYLLABLE CIEUC-YEO
-0xC1AF 0xC83C # HANGUL SYLLABLE CIEUC-YEO-NIEUN
-0xC1B0 0xC840 # HANGUL SYLLABLE CIEUC-YEO-RIEUL
-0xC1B1 0xC848 # HANGUL SYLLABLE CIEUC-YEO-MIEUM
-0xC1B2 0xC849 # HANGUL SYLLABLE CIEUC-YEO-PIEUP
-0xC1B3 0xC84C # HANGUL SYLLABLE CIEUC-YEO-SSANGSIOS
-0xC1B4 0xC84D # HANGUL SYLLABLE CIEUC-YEO-IEUNG
-0xC1B5 0xC854 # HANGUL SYLLABLE CIEUC-YE
-0xC1B6 0xC870 # HANGUL SYLLABLE CIEUC-O
-0xC1B7 0xC871 # HANGUL SYLLABLE CIEUC-O-KIYEOK
-0xC1B8 0xC874 # HANGUL SYLLABLE CIEUC-O-NIEUN
-0xC1B9 0xC878 # HANGUL SYLLABLE CIEUC-O-RIEUL
-0xC1BA 0xC87A # HANGUL SYLLABLE CIEUC-O-RIEULMIEUM
-0xC1BB 0xC880 # HANGUL SYLLABLE CIEUC-O-MIEUM
-0xC1BC 0xC881 # HANGUL SYLLABLE CIEUC-O-PIEUP
-0xC1BD 0xC883 # HANGUL SYLLABLE CIEUC-O-SIOS
-0xC1BE 0xC885 # HANGUL SYLLABLE CIEUC-O-IEUNG
-0xC1BF 0xC886 # HANGUL SYLLABLE CIEUC-O-CIEUC
-0xC1C0 0xC887 # HANGUL SYLLABLE CIEUC-O-CHIEUCH
-0xC1C1 0xC88B # HANGUL SYLLABLE CIEUC-O-HIEUH
-0xC1C2 0xC88C # HANGUL SYLLABLE CIEUC-WA
-0xC1C3 0xC88D # HANGUL SYLLABLE CIEUC-WA-KIYEOK
-0xC1C4 0xC894 # HANGUL SYLLABLE CIEUC-WA-RIEUL
-0xC1C5 0xC89D # HANGUL SYLLABLE CIEUC-WA-PIEUP
-0xC1C6 0xC89F # HANGUL SYLLABLE CIEUC-WA-SIOS
-0xC1C7 0xC8A1 # HANGUL SYLLABLE CIEUC-WA-IEUNG
-0xC1C8 0xC8A8 # HANGUL SYLLABLE CIEUC-WAE
-0xC1C9 0xC8BC # HANGUL SYLLABLE CIEUC-WAE-SSANGSIOS
-0xC1CA 0xC8BD # HANGUL SYLLABLE CIEUC-WAE-IEUNG
-0xC1CB 0xC8C4 # HANGUL SYLLABLE CIEUC-OE
-0xC1CC 0xC8C8 # HANGUL SYLLABLE CIEUC-OE-NIEUN
-0xC1CD 0xC8CC # HANGUL SYLLABLE CIEUC-OE-RIEUL
-0xC1CE 0xC8D4 # HANGUL SYLLABLE CIEUC-OE-MIEUM
-0xC1CF 0xC8D5 # HANGUL SYLLABLE CIEUC-OE-PIEUP
-0xC1D0 0xC8D7 # HANGUL SYLLABLE CIEUC-OE-SIOS
-0xC1D1 0xC8D9 # HANGUL SYLLABLE CIEUC-OE-IEUNG
-0xC1D2 0xC8E0 # HANGUL SYLLABLE CIEUC-YO
-0xC1D3 0xC8E1 # HANGUL SYLLABLE CIEUC-YO-KIYEOK
-0xC1D4 0xC8E4 # HANGUL SYLLABLE CIEUC-YO-NIEUN
-0xC1D5 0xC8F5 # HANGUL SYLLABLE CIEUC-YO-IEUNG
-0xC1D6 0xC8FC # HANGUL SYLLABLE CIEUC-U
-0xC1D7 0xC8FD # HANGUL SYLLABLE CIEUC-U-KIYEOK
-0xC1D8 0xC900 # HANGUL SYLLABLE CIEUC-U-NIEUN
-0xC1D9 0xC904 # HANGUL SYLLABLE CIEUC-U-RIEUL
-0xC1DA 0xC905 # HANGUL SYLLABLE CIEUC-U-RIEULKIYEOK
-0xC1DB 0xC906 # HANGUL SYLLABLE CIEUC-U-RIEULMIEUM
-0xC1DC 0xC90C # HANGUL SYLLABLE CIEUC-U-MIEUM
-0xC1DD 0xC90D # HANGUL SYLLABLE CIEUC-U-PIEUP
-0xC1DE 0xC90F # HANGUL SYLLABLE CIEUC-U-SIOS
-0xC1DF 0xC911 # HANGUL SYLLABLE CIEUC-U-IEUNG
-0xC1E0 0xC918 # HANGUL SYLLABLE CIEUC-WEO
-0xC1E1 0xC92C # HANGUL SYLLABLE CIEUC-WEO-SSANGSIOS
-0xC1E2 0xC934 # HANGUL SYLLABLE CIEUC-WE
-0xC1E3 0xC950 # HANGUL SYLLABLE CIEUC-WI
-0xC1E4 0xC951 # HANGUL SYLLABLE CIEUC-WI-KIYEOK
-0xC1E5 0xC954 # HANGUL SYLLABLE CIEUC-WI-NIEUN
-0xC1E6 0xC958 # HANGUL SYLLABLE CIEUC-WI-RIEUL
-0xC1E7 0xC960 # HANGUL SYLLABLE CIEUC-WI-MIEUM
-0xC1E8 0xC961 # HANGUL SYLLABLE CIEUC-WI-PIEUP
-0xC1E9 0xC963 # HANGUL SYLLABLE CIEUC-WI-SIOS
-0xC1EA 0xC96C # HANGUL SYLLABLE CIEUC-YU
-0xC1EB 0xC970 # HANGUL SYLLABLE CIEUC-YU-NIEUN
-0xC1EC 0xC974 # HANGUL SYLLABLE CIEUC-YU-RIEUL
-0xC1ED 0xC97C # HANGUL SYLLABLE CIEUC-YU-MIEUM
-0xC1EE 0xC988 # HANGUL SYLLABLE CIEUC-EU
-0xC1EF 0xC989 # HANGUL SYLLABLE CIEUC-EU-KIYEOK
-0xC1F0 0xC98C # HANGUL SYLLABLE CIEUC-EU-NIEUN
-0xC1F1 0xC990 # HANGUL SYLLABLE CIEUC-EU-RIEUL
-0xC1F2 0xC998 # HANGUL SYLLABLE CIEUC-EU-MIEUM
-0xC1F3 0xC999 # HANGUL SYLLABLE CIEUC-EU-PIEUP
-0xC1F4 0xC99B # HANGUL SYLLABLE CIEUC-EU-SIOS
-0xC1F5 0xC99D # HANGUL SYLLABLE CIEUC-EU-IEUNG
-0xC1F6 0xC9C0 # HANGUL SYLLABLE CIEUC-I
-0xC1F7 0xC9C1 # HANGUL SYLLABLE CIEUC-I-KIYEOK
-0xC1F8 0xC9C4 # HANGUL SYLLABLE CIEUC-I-NIEUN
-0xC1F9 0xC9C7 # HANGUL SYLLABLE CIEUC-I-TIKEUT
-0xC1FA 0xC9C8 # HANGUL SYLLABLE CIEUC-I-RIEUL
-0xC1FB 0xC9CA # HANGUL SYLLABLE CIEUC-I-RIEULMIEUM
-0xC1FC 0xC9D0 # HANGUL SYLLABLE CIEUC-I-MIEUM
-0xC1FD 0xC9D1 # HANGUL SYLLABLE CIEUC-I-PIEUP
-0xC1FE 0xC9D3 # HANGUL SYLLABLE CIEUC-I-SIOS
-0xC241 0xD5CA # HANGUL SYLLABLE HIEUH-EO-SSANGKIYEOK
-0xC242 0xD5CB # HANGUL SYLLABLE HIEUH-EO-KIYEOKSIOS
-0xC243 0xD5CD # HANGUL SYLLABLE HIEUH-EO-NIEUNCIEUC
-0xC244 0xD5CE # HANGUL SYLLABLE HIEUH-EO-NIEUNHIEUH
-0xC245 0xD5CF # HANGUL SYLLABLE HIEUH-EO-TIKEUT
-0xC246 0xD5D1 # HANGUL SYLLABLE HIEUH-EO-RIEULKIYEOK
-0xC247 0xD5D3 # HANGUL SYLLABLE HIEUH-EO-RIEULPIEUP
-0xC248 0xD5D4 # HANGUL SYLLABLE HIEUH-EO-RIEULSIOS
-0xC249 0xD5D5 # HANGUL SYLLABLE HIEUH-EO-RIEULTHIEUTH
-0xC24A 0xD5D6 # HANGUL SYLLABLE HIEUH-EO-RIEULPHIEUPH
-0xC24B 0xD5D7 # HANGUL SYLLABLE HIEUH-EO-RIEULHIEUH
-0xC24C 0xD5DA # HANGUL SYLLABLE HIEUH-EO-PIEUPSIOS
-0xC24D 0xD5DC # HANGUL SYLLABLE HIEUH-EO-SSANGSIOS
-0xC24E 0xD5DE # HANGUL SYLLABLE HIEUH-EO-CIEUC
-0xC24F 0xD5DF # HANGUL SYLLABLE HIEUH-EO-CHIEUCH
-0xC250 0xD5E0 # HANGUL SYLLABLE HIEUH-EO-KHIEUKH
-0xC251 0xD5E1 # HANGUL SYLLABLE HIEUH-EO-THIEUTH
-0xC252 0xD5E2 # HANGUL SYLLABLE HIEUH-EO-PHIEUPH
-0xC253 0xD5E3 # HANGUL SYLLABLE HIEUH-EO-HIEUH
-0xC254 0xD5E6 # HANGUL SYLLABLE HIEUH-E-SSANGKIYEOK
-0xC255 0xD5E7 # HANGUL SYLLABLE HIEUH-E-KIYEOKSIOS
-0xC256 0xD5E9 # HANGUL SYLLABLE HIEUH-E-NIEUNCIEUC
-0xC257 0xD5EA # HANGUL SYLLABLE HIEUH-E-NIEUNHIEUH
-0xC258 0xD5EB # HANGUL SYLLABLE HIEUH-E-TIKEUT
-0xC259 0xD5ED # HANGUL SYLLABLE HIEUH-E-RIEULKIYEOK
-0xC25A 0xD5EE # HANGUL SYLLABLE HIEUH-E-RIEULMIEUM
-0xC261 0xD5EF # HANGUL SYLLABLE HIEUH-E-RIEULPIEUP
-0xC262 0xD5F0 # HANGUL SYLLABLE HIEUH-E-RIEULSIOS
-0xC263 0xD5F1 # HANGUL SYLLABLE HIEUH-E-RIEULTHIEUTH
-0xC264 0xD5F2 # HANGUL SYLLABLE HIEUH-E-RIEULPHIEUPH
-0xC265 0xD5F3 # HANGUL SYLLABLE HIEUH-E-RIEULHIEUH
-0xC266 0xD5F6 # HANGUL SYLLABLE HIEUH-E-PIEUPSIOS
-0xC267 0xD5F8 # HANGUL SYLLABLE HIEUH-E-SSANGSIOS
-0xC268 0xD5FA # HANGUL SYLLABLE HIEUH-E-CIEUC
-0xC269 0xD5FB # HANGUL SYLLABLE HIEUH-E-CHIEUCH
-0xC26A 0xD5FC # HANGUL SYLLABLE HIEUH-E-KHIEUKH
-0xC26B 0xD5FD # HANGUL SYLLABLE HIEUH-E-THIEUTH
-0xC26C 0xD5FE # HANGUL SYLLABLE HIEUH-E-PHIEUPH
-0xC26D 0xD5FF # HANGUL SYLLABLE HIEUH-E-HIEUH
-0xC26E 0xD602 # HANGUL SYLLABLE HIEUH-YEO-SSANGKIYEOK
-0xC26F 0xD603 # HANGUL SYLLABLE HIEUH-YEO-KIYEOKSIOS
-0xC270 0xD605 # HANGUL SYLLABLE HIEUH-YEO-NIEUNCIEUC
-0xC271 0xD606 # HANGUL SYLLABLE HIEUH-YEO-NIEUNHIEUH
-0xC272 0xD607 # HANGUL SYLLABLE HIEUH-YEO-TIKEUT
-0xC273 0xD609 # HANGUL SYLLABLE HIEUH-YEO-RIEULKIYEOK
-0xC274 0xD60A # HANGUL SYLLABLE HIEUH-YEO-RIEULMIEUM
-0xC275 0xD60B # HANGUL SYLLABLE HIEUH-YEO-RIEULPIEUP
-0xC276 0xD60C # HANGUL SYLLABLE HIEUH-YEO-RIEULSIOS
-0xC277 0xD60D # HANGUL SYLLABLE HIEUH-YEO-RIEULTHIEUTH
-0xC278 0xD60E # HANGUL SYLLABLE HIEUH-YEO-RIEULPHIEUPH
-0xC279 0xD60F # HANGUL SYLLABLE HIEUH-YEO-RIEULHIEUH
-0xC27A 0xD612 # HANGUL SYLLABLE HIEUH-YEO-PIEUPSIOS
-0xC281 0xD616 # HANGUL SYLLABLE HIEUH-YEO-CIEUC
-0xC282 0xD617 # HANGUL SYLLABLE HIEUH-YEO-CHIEUCH
-0xC283 0xD618 # HANGUL SYLLABLE HIEUH-YEO-KHIEUKH
-0xC284 0xD619 # HANGUL SYLLABLE HIEUH-YEO-THIEUTH
-0xC285 0xD61A # HANGUL SYLLABLE HIEUH-YEO-PHIEUPH
-0xC286 0xD61B # HANGUL SYLLABLE HIEUH-YEO-HIEUH
-0xC287 0xD61D # HANGUL SYLLABLE HIEUH-YE-KIYEOK
-0xC288 0xD61E # HANGUL SYLLABLE HIEUH-YE-SSANGKIYEOK
-0xC289 0xD61F # HANGUL SYLLABLE HIEUH-YE-KIYEOKSIOS
-0xC28A 0xD621 # HANGUL SYLLABLE HIEUH-YE-NIEUNCIEUC
-0xC28B 0xD622 # HANGUL SYLLABLE HIEUH-YE-NIEUNHIEUH
-0xC28C 0xD623 # HANGUL SYLLABLE HIEUH-YE-TIKEUT
-0xC28D 0xD625 # HANGUL SYLLABLE HIEUH-YE-RIEULKIYEOK
-0xC28E 0xD626 # HANGUL SYLLABLE HIEUH-YE-RIEULMIEUM
-0xC28F 0xD627 # HANGUL SYLLABLE HIEUH-YE-RIEULPIEUP
-0xC290 0xD628 # HANGUL SYLLABLE HIEUH-YE-RIEULSIOS
-0xC291 0xD629 # HANGUL SYLLABLE HIEUH-YE-RIEULTHIEUTH
-0xC292 0xD62A # HANGUL SYLLABLE HIEUH-YE-RIEULPHIEUPH
-0xC293 0xD62B # HANGUL SYLLABLE HIEUH-YE-RIEULHIEUH
-0xC294 0xD62C # HANGUL SYLLABLE HIEUH-YE-MIEUM
-0xC295 0xD62E # HANGUL SYLLABLE HIEUH-YE-PIEUPSIOS
-0xC296 0xD62F # HANGUL SYLLABLE HIEUH-YE-SIOS
-0xC297 0xD630 # HANGUL SYLLABLE HIEUH-YE-SSANGSIOS
-0xC298 0xD631 # HANGUL SYLLABLE HIEUH-YE-IEUNG
-0xC299 0xD632 # HANGUL SYLLABLE HIEUH-YE-CIEUC
-0xC29A 0xD633 # HANGUL SYLLABLE HIEUH-YE-CHIEUCH
-0xC29B 0xD634 # HANGUL SYLLABLE HIEUH-YE-KHIEUKH
-0xC29C 0xD635 # HANGUL SYLLABLE HIEUH-YE-THIEUTH
-0xC29D 0xD636 # HANGUL SYLLABLE HIEUH-YE-PHIEUPH
-0xC29E 0xD637 # HANGUL SYLLABLE HIEUH-YE-HIEUH
-0xC29F 0xD63A # HANGUL SYLLABLE HIEUH-O-SSANGKIYEOK
-0xC2A0 0xD63B # HANGUL SYLLABLE HIEUH-O-KIYEOKSIOS
-0xC2A1 0xC9D5 # HANGUL SYLLABLE CIEUC-I-IEUNG
-0xC2A2 0xC9D6 # HANGUL SYLLABLE CIEUC-I-CIEUC
-0xC2A3 0xC9D9 # HANGUL SYLLABLE CIEUC-I-THIEUTH
-0xC2A4 0xC9DA # HANGUL SYLLABLE CIEUC-I-PHIEUPH
-0xC2A5 0xC9DC # HANGUL SYLLABLE SSANGCIEUC-A
-0xC2A6 0xC9DD # HANGUL SYLLABLE SSANGCIEUC-A-KIYEOK
-0xC2A7 0xC9E0 # HANGUL SYLLABLE SSANGCIEUC-A-NIEUN
-0xC2A8 0xC9E2 # HANGUL SYLLABLE SSANGCIEUC-A-NIEUNHIEUH
-0xC2A9 0xC9E4 # HANGUL SYLLABLE SSANGCIEUC-A-RIEUL
-0xC2AA 0xC9E7 # HANGUL SYLLABLE SSANGCIEUC-A-RIEULPIEUP
-0xC2AB 0xC9EC # HANGUL SYLLABLE SSANGCIEUC-A-MIEUM
-0xC2AC 0xC9ED # HANGUL SYLLABLE SSANGCIEUC-A-PIEUP
-0xC2AD 0xC9EF # HANGUL SYLLABLE SSANGCIEUC-A-SIOS
-0xC2AE 0xC9F0 # HANGUL SYLLABLE SSANGCIEUC-A-SSANGSIOS
-0xC2AF 0xC9F1 # HANGUL SYLLABLE SSANGCIEUC-A-IEUNG
-0xC2B0 0xC9F8 # HANGUL SYLLABLE SSANGCIEUC-AE
-0xC2B1 0xC9F9 # HANGUL SYLLABLE SSANGCIEUC-AE-KIYEOK
-0xC2B2 0xC9FC # HANGUL SYLLABLE SSANGCIEUC-AE-NIEUN
-0xC2B3 0xCA00 # HANGUL SYLLABLE SSANGCIEUC-AE-RIEUL
-0xC2B4 0xCA08 # HANGUL SYLLABLE SSANGCIEUC-AE-MIEUM
-0xC2B5 0xCA09 # HANGUL SYLLABLE SSANGCIEUC-AE-PIEUP
-0xC2B6 0xCA0B # HANGUL SYLLABLE SSANGCIEUC-AE-SIOS
-0xC2B7 0xCA0C # HANGUL SYLLABLE SSANGCIEUC-AE-SSANGSIOS
-0xC2B8 0xCA0D # HANGUL SYLLABLE SSANGCIEUC-AE-IEUNG
-0xC2B9 0xCA14 # HANGUL SYLLABLE SSANGCIEUC-YA
-0xC2BA 0xCA18 # HANGUL SYLLABLE SSANGCIEUC-YA-NIEUN
-0xC2BB 0xCA29 # HANGUL SYLLABLE SSANGCIEUC-YA-IEUNG
-0xC2BC 0xCA4C # HANGUL SYLLABLE SSANGCIEUC-EO
-0xC2BD 0xCA4D # HANGUL SYLLABLE SSANGCIEUC-EO-KIYEOK
-0xC2BE 0xCA50 # HANGUL SYLLABLE SSANGCIEUC-EO-NIEUN
-0xC2BF 0xCA54 # HANGUL SYLLABLE SSANGCIEUC-EO-RIEUL
-0xC2C0 0xCA5C # HANGUL SYLLABLE SSANGCIEUC-EO-MIEUM
-0xC2C1 0xCA5D # HANGUL SYLLABLE SSANGCIEUC-EO-PIEUP
-0xC2C2 0xCA5F # HANGUL SYLLABLE SSANGCIEUC-EO-SIOS
-0xC2C3 0xCA60 # HANGUL SYLLABLE SSANGCIEUC-EO-SSANGSIOS
-0xC2C4 0xCA61 # HANGUL SYLLABLE SSANGCIEUC-EO-IEUNG
-0xC2C5 0xCA68 # HANGUL SYLLABLE SSANGCIEUC-E
-0xC2C6 0xCA7D # HANGUL SYLLABLE SSANGCIEUC-E-IEUNG
-0xC2C7 0xCA84 # HANGUL SYLLABLE SSANGCIEUC-YEO
-0xC2C8 0xCA98 # HANGUL SYLLABLE SSANGCIEUC-YEO-SSANGSIOS
-0xC2C9 0xCABC # HANGUL SYLLABLE SSANGCIEUC-O
-0xC2CA 0xCABD # HANGUL SYLLABLE SSANGCIEUC-O-KIYEOK
-0xC2CB 0xCAC0 # HANGUL SYLLABLE SSANGCIEUC-O-NIEUN
-0xC2CC 0xCAC4 # HANGUL SYLLABLE SSANGCIEUC-O-RIEUL
-0xC2CD 0xCACC # HANGUL SYLLABLE SSANGCIEUC-O-MIEUM
-0xC2CE 0xCACD # HANGUL SYLLABLE SSANGCIEUC-O-PIEUP
-0xC2CF 0xCACF # HANGUL SYLLABLE SSANGCIEUC-O-SIOS
-0xC2D0 0xCAD1 # HANGUL SYLLABLE SSANGCIEUC-O-IEUNG
-0xC2D1 0xCAD3 # HANGUL SYLLABLE SSANGCIEUC-O-CHIEUCH
-0xC2D2 0xCAD8 # HANGUL SYLLABLE SSANGCIEUC-WA
-0xC2D3 0xCAD9 # HANGUL SYLLABLE SSANGCIEUC-WA-KIYEOK
-0xC2D4 0xCAE0 # HANGUL SYLLABLE SSANGCIEUC-WA-RIEUL
-0xC2D5 0xCAEC # HANGUL SYLLABLE SSANGCIEUC-WA-SSANGSIOS
-0xC2D6 0xCAF4 # HANGUL SYLLABLE SSANGCIEUC-WAE
-0xC2D7 0xCB08 # HANGUL SYLLABLE SSANGCIEUC-WAE-SSANGSIOS
-0xC2D8 0xCB10 # HANGUL SYLLABLE SSANGCIEUC-OE
-0xC2D9 0xCB14 # HANGUL SYLLABLE SSANGCIEUC-OE-NIEUN
-0xC2DA 0xCB18 # HANGUL SYLLABLE SSANGCIEUC-OE-RIEUL
-0xC2DB 0xCB20 # HANGUL SYLLABLE SSANGCIEUC-OE-MIEUM
-0xC2DC 0xCB21 # HANGUL SYLLABLE SSANGCIEUC-OE-PIEUP
-0xC2DD 0xCB41 # HANGUL SYLLABLE SSANGCIEUC-YO-IEUNG
-0xC2DE 0xCB48 # HANGUL SYLLABLE SSANGCIEUC-U
-0xC2DF 0xCB49 # HANGUL SYLLABLE SSANGCIEUC-U-KIYEOK
-0xC2E0 0xCB4C # HANGUL SYLLABLE SSANGCIEUC-U-NIEUN
-0xC2E1 0xCB50 # HANGUL SYLLABLE SSANGCIEUC-U-RIEUL
-0xC2E2 0xCB58 # HANGUL SYLLABLE SSANGCIEUC-U-MIEUM
-0xC2E3 0xCB59 # HANGUL SYLLABLE SSANGCIEUC-U-PIEUP
-0xC2E4 0xCB5D # HANGUL SYLLABLE SSANGCIEUC-U-IEUNG
-0xC2E5 0xCB64 # HANGUL SYLLABLE SSANGCIEUC-WEO
-0xC2E6 0xCB78 # HANGUL SYLLABLE SSANGCIEUC-WEO-SSANGSIOS
-0xC2E7 0xCB79 # HANGUL SYLLABLE SSANGCIEUC-WEO-IEUNG
-0xC2E8 0xCB9C # HANGUL SYLLABLE SSANGCIEUC-WI
-0xC2E9 0xCBB8 # HANGUL SYLLABLE SSANGCIEUC-YU
-0xC2EA 0xCBD4 # HANGUL SYLLABLE SSANGCIEUC-EU
-0xC2EB 0xCBE4 # HANGUL SYLLABLE SSANGCIEUC-EU-MIEUM
-0xC2EC 0xCBE7 # HANGUL SYLLABLE SSANGCIEUC-EU-SIOS
-0xC2ED 0xCBE9 # HANGUL SYLLABLE SSANGCIEUC-EU-IEUNG
-0xC2EE 0xCC0C # HANGUL SYLLABLE SSANGCIEUC-I
-0xC2EF 0xCC0D # HANGUL SYLLABLE SSANGCIEUC-I-KIYEOK
-0xC2F0 0xCC10 # HANGUL SYLLABLE SSANGCIEUC-I-NIEUN
-0xC2F1 0xCC14 # HANGUL SYLLABLE SSANGCIEUC-I-RIEUL
-0xC2F2 0xCC1C # HANGUL SYLLABLE SSANGCIEUC-I-MIEUM
-0xC2F3 0xCC1D # HANGUL SYLLABLE SSANGCIEUC-I-PIEUP
-0xC2F4 0xCC21 # HANGUL SYLLABLE SSANGCIEUC-I-IEUNG
-0xC2F5 0xCC22 # HANGUL SYLLABLE SSANGCIEUC-I-CIEUC
-0xC2F6 0xCC27 # HANGUL SYLLABLE SSANGCIEUC-I-HIEUH
-0xC2F7 0xCC28 # HANGUL SYLLABLE CHIEUCH-A
-0xC2F8 0xCC29 # HANGUL SYLLABLE CHIEUCH-A-KIYEOK
-0xC2F9 0xCC2C # HANGUL SYLLABLE CHIEUCH-A-NIEUN
-0xC2FA 0xCC2E # HANGUL SYLLABLE CHIEUCH-A-NIEUNHIEUH
-0xC2FB 0xCC30 # HANGUL SYLLABLE CHIEUCH-A-RIEUL
-0xC2FC 0xCC38 # HANGUL SYLLABLE CHIEUCH-A-MIEUM
-0xC2FD 0xCC39 # HANGUL SYLLABLE CHIEUCH-A-PIEUP
-0xC2FE 0xCC3B # HANGUL SYLLABLE CHIEUCH-A-SIOS
-0xC341 0xD63D # HANGUL SYLLABLE HIEUH-O-NIEUNCIEUC
-0xC342 0xD63E # HANGUL SYLLABLE HIEUH-O-NIEUNHIEUH
-0xC343 0xD63F # HANGUL SYLLABLE HIEUH-O-TIKEUT
-0xC344 0xD641 # HANGUL SYLLABLE HIEUH-O-RIEULKIYEOK
-0xC345 0xD642 # HANGUL SYLLABLE HIEUH-O-RIEULMIEUM
-0xC346 0xD643 # HANGUL SYLLABLE HIEUH-O-RIEULPIEUP
-0xC347 0xD644 # HANGUL SYLLABLE HIEUH-O-RIEULSIOS
-0xC348 0xD646 # HANGUL SYLLABLE HIEUH-O-RIEULPHIEUPH
-0xC349 0xD647 # HANGUL SYLLABLE HIEUH-O-RIEULHIEUH
-0xC34A 0xD64A # HANGUL SYLLABLE HIEUH-O-PIEUPSIOS
-0xC34B 0xD64C # HANGUL SYLLABLE HIEUH-O-SSANGSIOS
-0xC34C 0xD64E # HANGUL SYLLABLE HIEUH-O-CIEUC
-0xC34D 0xD64F # HANGUL SYLLABLE HIEUH-O-CHIEUCH
-0xC34E 0xD650 # HANGUL SYLLABLE HIEUH-O-KHIEUKH
-0xC34F 0xD652 # HANGUL SYLLABLE HIEUH-O-PHIEUPH
-0xC350 0xD653 # HANGUL SYLLABLE HIEUH-O-HIEUH
-0xC351 0xD656 # HANGUL SYLLABLE HIEUH-WA-SSANGKIYEOK
-0xC352 0xD657 # HANGUL SYLLABLE HIEUH-WA-KIYEOKSIOS
-0xC353 0xD659 # HANGUL SYLLABLE HIEUH-WA-NIEUNCIEUC
-0xC354 0xD65A # HANGUL SYLLABLE HIEUH-WA-NIEUNHIEUH
-0xC355 0xD65B # HANGUL SYLLABLE HIEUH-WA-TIKEUT
-0xC356 0xD65D # HANGUL SYLLABLE HIEUH-WA-RIEULKIYEOK
-0xC357 0xD65E # HANGUL SYLLABLE HIEUH-WA-RIEULMIEUM
-0xC358 0xD65F # HANGUL SYLLABLE HIEUH-WA-RIEULPIEUP
-0xC359 0xD660 # HANGUL SYLLABLE HIEUH-WA-RIEULSIOS
-0xC35A 0xD661 # HANGUL SYLLABLE HIEUH-WA-RIEULTHIEUTH
-0xC361 0xD662 # HANGUL SYLLABLE HIEUH-WA-RIEULPHIEUPH
-0xC362 0xD663 # HANGUL SYLLABLE HIEUH-WA-RIEULHIEUH
-0xC363 0xD664 # HANGUL SYLLABLE HIEUH-WA-MIEUM
-0xC364 0xD665 # HANGUL SYLLABLE HIEUH-WA-PIEUP
-0xC365 0xD666 # HANGUL SYLLABLE HIEUH-WA-PIEUPSIOS
-0xC366 0xD668 # HANGUL SYLLABLE HIEUH-WA-SSANGSIOS
-0xC367 0xD66A # HANGUL SYLLABLE HIEUH-WA-CIEUC
-0xC368 0xD66B # HANGUL SYLLABLE HIEUH-WA-CHIEUCH
-0xC369 0xD66C # HANGUL SYLLABLE HIEUH-WA-KHIEUKH
-0xC36A 0xD66D # HANGUL SYLLABLE HIEUH-WA-THIEUTH
-0xC36B 0xD66E # HANGUL SYLLABLE HIEUH-WA-PHIEUPH
-0xC36C 0xD66F # HANGUL SYLLABLE HIEUH-WA-HIEUH
-0xC36D 0xD672 # HANGUL SYLLABLE HIEUH-WAE-SSANGKIYEOK
-0xC36E 0xD673 # HANGUL SYLLABLE HIEUH-WAE-KIYEOKSIOS
-0xC36F 0xD675 # HANGUL SYLLABLE HIEUH-WAE-NIEUNCIEUC
-0xC370 0xD676 # HANGUL SYLLABLE HIEUH-WAE-NIEUNHIEUH
-0xC371 0xD677 # HANGUL SYLLABLE HIEUH-WAE-TIKEUT
-0xC372 0xD678 # HANGUL SYLLABLE HIEUH-WAE-RIEUL
-0xC373 0xD679 # HANGUL SYLLABLE HIEUH-WAE-RIEULKIYEOK
-0xC374 0xD67A # HANGUL SYLLABLE HIEUH-WAE-RIEULMIEUM
-0xC375 0xD67B # HANGUL SYLLABLE HIEUH-WAE-RIEULPIEUP
-0xC376 0xD67C # HANGUL SYLLABLE HIEUH-WAE-RIEULSIOS
-0xC377 0xD67D # HANGUL SYLLABLE HIEUH-WAE-RIEULTHIEUTH
-0xC378 0xD67E # HANGUL SYLLABLE HIEUH-WAE-RIEULPHIEUPH
-0xC379 0xD67F # HANGUL SYLLABLE HIEUH-WAE-RIEULHIEUH
-0xC37A 0xD680 # HANGUL SYLLABLE HIEUH-WAE-MIEUM
-0xC381 0xD681 # HANGUL SYLLABLE HIEUH-WAE-PIEUP
-0xC382 0xD682 # HANGUL SYLLABLE HIEUH-WAE-PIEUPSIOS
-0xC383 0xD684 # HANGUL SYLLABLE HIEUH-WAE-SSANGSIOS
-0xC384 0xD686 # HANGUL SYLLABLE HIEUH-WAE-CIEUC
-0xC385 0xD687 # HANGUL SYLLABLE HIEUH-WAE-CHIEUCH
-0xC386 0xD688 # HANGUL SYLLABLE HIEUH-WAE-KHIEUKH
-0xC387 0xD689 # HANGUL SYLLABLE HIEUH-WAE-THIEUTH
-0xC388 0xD68A # HANGUL SYLLABLE HIEUH-WAE-PHIEUPH
-0xC389 0xD68B # HANGUL SYLLABLE HIEUH-WAE-HIEUH
-0xC38A 0xD68E # HANGUL SYLLABLE HIEUH-OE-SSANGKIYEOK
-0xC38B 0xD68F # HANGUL SYLLABLE HIEUH-OE-KIYEOKSIOS
-0xC38C 0xD691 # HANGUL SYLLABLE HIEUH-OE-NIEUNCIEUC
-0xC38D 0xD692 # HANGUL SYLLABLE HIEUH-OE-NIEUNHIEUH
-0xC38E 0xD693 # HANGUL SYLLABLE HIEUH-OE-TIKEUT
-0xC38F 0xD695 # HANGUL SYLLABLE HIEUH-OE-RIEULKIYEOK
-0xC390 0xD696 # HANGUL SYLLABLE HIEUH-OE-RIEULMIEUM
-0xC391 0xD697 # HANGUL SYLLABLE HIEUH-OE-RIEULPIEUP
-0xC392 0xD698 # HANGUL SYLLABLE HIEUH-OE-RIEULSIOS
-0xC393 0xD699 # HANGUL SYLLABLE HIEUH-OE-RIEULTHIEUTH
-0xC394 0xD69A # HANGUL SYLLABLE HIEUH-OE-RIEULPHIEUPH
-0xC395 0xD69B # HANGUL SYLLABLE HIEUH-OE-RIEULHIEUH
-0xC396 0xD69C # HANGUL SYLLABLE HIEUH-OE-MIEUM
-0xC397 0xD69E # HANGUL SYLLABLE HIEUH-OE-PIEUPSIOS
-0xC398 0xD6A0 # HANGUL SYLLABLE HIEUH-OE-SSANGSIOS
-0xC399 0xD6A2 # HANGUL SYLLABLE HIEUH-OE-CIEUC
-0xC39A 0xD6A3 # HANGUL SYLLABLE HIEUH-OE-CHIEUCH
-0xC39B 0xD6A4 # HANGUL SYLLABLE HIEUH-OE-KHIEUKH
-0xC39C 0xD6A5 # HANGUL SYLLABLE HIEUH-OE-THIEUTH
-0xC39D 0xD6A6 # HANGUL SYLLABLE HIEUH-OE-PHIEUPH
-0xC39E 0xD6A7 # HANGUL SYLLABLE HIEUH-OE-HIEUH
-0xC39F 0xD6A9 # HANGUL SYLLABLE HIEUH-YO-KIYEOK
-0xC3A0 0xD6AA # HANGUL SYLLABLE HIEUH-YO-SSANGKIYEOK
-0xC3A1 0xCC3C # HANGUL SYLLABLE CHIEUCH-A-SSANGSIOS
-0xC3A2 0xCC3D # HANGUL SYLLABLE CHIEUCH-A-IEUNG
-0xC3A3 0xCC3E # HANGUL SYLLABLE CHIEUCH-A-CIEUC
-0xC3A4 0xCC44 # HANGUL SYLLABLE CHIEUCH-AE
-0xC3A5 0xCC45 # HANGUL SYLLABLE CHIEUCH-AE-KIYEOK
-0xC3A6 0xCC48 # HANGUL SYLLABLE CHIEUCH-AE-NIEUN
-0xC3A7 0xCC4C # HANGUL SYLLABLE CHIEUCH-AE-RIEUL
-0xC3A8 0xCC54 # HANGUL SYLLABLE CHIEUCH-AE-MIEUM
-0xC3A9 0xCC55 # HANGUL SYLLABLE CHIEUCH-AE-PIEUP
-0xC3AA 0xCC57 # HANGUL SYLLABLE CHIEUCH-AE-SIOS
-0xC3AB 0xCC58 # HANGUL SYLLABLE CHIEUCH-AE-SSANGSIOS
-0xC3AC 0xCC59 # HANGUL SYLLABLE CHIEUCH-AE-IEUNG
-0xC3AD 0xCC60 # HANGUL SYLLABLE CHIEUCH-YA
-0xC3AE 0xCC64 # HANGUL SYLLABLE CHIEUCH-YA-NIEUN
-0xC3AF 0xCC66 # HANGUL SYLLABLE CHIEUCH-YA-NIEUNHIEUH
-0xC3B0 0xCC68 # HANGUL SYLLABLE CHIEUCH-YA-RIEUL
-0xC3B1 0xCC70 # HANGUL SYLLABLE CHIEUCH-YA-MIEUM
-0xC3B2 0xCC75 # HANGUL SYLLABLE CHIEUCH-YA-IEUNG
-0xC3B3 0xCC98 # HANGUL SYLLABLE CHIEUCH-EO
-0xC3B4 0xCC99 # HANGUL SYLLABLE CHIEUCH-EO-KIYEOK
-0xC3B5 0xCC9C # HANGUL SYLLABLE CHIEUCH-EO-NIEUN
-0xC3B6 0xCCA0 # HANGUL SYLLABLE CHIEUCH-EO-RIEUL
-0xC3B7 0xCCA8 # HANGUL SYLLABLE CHIEUCH-EO-MIEUM
-0xC3B8 0xCCA9 # HANGUL SYLLABLE CHIEUCH-EO-PIEUP
-0xC3B9 0xCCAB # HANGUL SYLLABLE CHIEUCH-EO-SIOS
-0xC3BA 0xCCAC # HANGUL SYLLABLE CHIEUCH-EO-SSANGSIOS
-0xC3BB 0xCCAD # HANGUL SYLLABLE CHIEUCH-EO-IEUNG
-0xC3BC 0xCCB4 # HANGUL SYLLABLE CHIEUCH-E
-0xC3BD 0xCCB5 # HANGUL SYLLABLE CHIEUCH-E-KIYEOK
-0xC3BE 0xCCB8 # HANGUL SYLLABLE CHIEUCH-E-NIEUN
-0xC3BF 0xCCBC # HANGUL SYLLABLE CHIEUCH-E-RIEUL
-0xC3C0 0xCCC4 # HANGUL SYLLABLE CHIEUCH-E-MIEUM
-0xC3C1 0xCCC5 # HANGUL SYLLABLE CHIEUCH-E-PIEUP
-0xC3C2 0xCCC7 # HANGUL SYLLABLE CHIEUCH-E-SIOS
-0xC3C3 0xCCC9 # HANGUL SYLLABLE CHIEUCH-E-IEUNG
-0xC3C4 0xCCD0 # HANGUL SYLLABLE CHIEUCH-YEO
-0xC3C5 0xCCD4 # HANGUL SYLLABLE CHIEUCH-YEO-NIEUN
-0xC3C6 0xCCE4 # HANGUL SYLLABLE CHIEUCH-YEO-SSANGSIOS
-0xC3C7 0xCCEC # HANGUL SYLLABLE CHIEUCH-YE
-0xC3C8 0xCCF0 # HANGUL SYLLABLE CHIEUCH-YE-NIEUN
-0xC3C9 0xCD01 # HANGUL SYLLABLE CHIEUCH-YE-IEUNG
-0xC3CA 0xCD08 # HANGUL SYLLABLE CHIEUCH-O
-0xC3CB 0xCD09 # HANGUL SYLLABLE CHIEUCH-O-KIYEOK
-0xC3CC 0xCD0C # HANGUL SYLLABLE CHIEUCH-O-NIEUN
-0xC3CD 0xCD10 # HANGUL SYLLABLE CHIEUCH-O-RIEUL
-0xC3CE 0xCD18 # HANGUL SYLLABLE CHIEUCH-O-MIEUM
-0xC3CF 0xCD19 # HANGUL SYLLABLE CHIEUCH-O-PIEUP
-0xC3D0 0xCD1B # HANGUL SYLLABLE CHIEUCH-O-SIOS
-0xC3D1 0xCD1D # HANGUL SYLLABLE CHIEUCH-O-IEUNG
-0xC3D2 0xCD24 # HANGUL SYLLABLE CHIEUCH-WA
-0xC3D3 0xCD28 # HANGUL SYLLABLE CHIEUCH-WA-NIEUN
-0xC3D4 0xCD2C # HANGUL SYLLABLE CHIEUCH-WA-RIEUL
-0xC3D5 0xCD39 # HANGUL SYLLABLE CHIEUCH-WA-IEUNG
-0xC3D6 0xCD5C # HANGUL SYLLABLE CHIEUCH-OE
-0xC3D7 0xCD60 # HANGUL SYLLABLE CHIEUCH-OE-NIEUN
-0xC3D8 0xCD64 # HANGUL SYLLABLE CHIEUCH-OE-RIEUL
-0xC3D9 0xCD6C # HANGUL SYLLABLE CHIEUCH-OE-MIEUM
-0xC3DA 0xCD6D # HANGUL SYLLABLE CHIEUCH-OE-PIEUP
-0xC3DB 0xCD6F # HANGUL SYLLABLE CHIEUCH-OE-SIOS
-0xC3DC 0xCD71 # HANGUL SYLLABLE CHIEUCH-OE-IEUNG
-0xC3DD 0xCD78 # HANGUL SYLLABLE CHIEUCH-YO
-0xC3DE 0xCD88 # HANGUL SYLLABLE CHIEUCH-YO-MIEUM
-0xC3DF 0xCD94 # HANGUL SYLLABLE CHIEUCH-U
-0xC3E0 0xCD95 # HANGUL SYLLABLE CHIEUCH-U-KIYEOK
-0xC3E1 0xCD98 # HANGUL SYLLABLE CHIEUCH-U-NIEUN
-0xC3E2 0xCD9C # HANGUL SYLLABLE CHIEUCH-U-RIEUL
-0xC3E3 0xCDA4 # HANGUL SYLLABLE CHIEUCH-U-MIEUM
-0xC3E4 0xCDA5 # HANGUL SYLLABLE CHIEUCH-U-PIEUP
-0xC3E5 0xCDA7 # HANGUL SYLLABLE CHIEUCH-U-SIOS
-0xC3E6 0xCDA9 # HANGUL SYLLABLE CHIEUCH-U-IEUNG
-0xC3E7 0xCDB0 # HANGUL SYLLABLE CHIEUCH-WEO
-0xC3E8 0xCDC4 # HANGUL SYLLABLE CHIEUCH-WEO-SSANGSIOS
-0xC3E9 0xCDCC # HANGUL SYLLABLE CHIEUCH-WE
-0xC3EA 0xCDD0 # HANGUL SYLLABLE CHIEUCH-WE-NIEUN
-0xC3EB 0xCDE8 # HANGUL SYLLABLE CHIEUCH-WI
-0xC3EC 0xCDEC # HANGUL SYLLABLE CHIEUCH-WI-NIEUN
-0xC3ED 0xCDF0 # HANGUL SYLLABLE CHIEUCH-WI-RIEUL
-0xC3EE 0xCDF8 # HANGUL SYLLABLE CHIEUCH-WI-MIEUM
-0xC3EF 0xCDF9 # HANGUL SYLLABLE CHIEUCH-WI-PIEUP
-0xC3F0 0xCDFB # HANGUL SYLLABLE CHIEUCH-WI-SIOS
-0xC3F1 0xCDFD # HANGUL SYLLABLE CHIEUCH-WI-IEUNG
-0xC3F2 0xCE04 # HANGUL SYLLABLE CHIEUCH-YU
-0xC3F3 0xCE08 # HANGUL SYLLABLE CHIEUCH-YU-NIEUN
-0xC3F4 0xCE0C # HANGUL SYLLABLE CHIEUCH-YU-RIEUL
-0xC3F5 0xCE14 # HANGUL SYLLABLE CHIEUCH-YU-MIEUM
-0xC3F6 0xCE19 # HANGUL SYLLABLE CHIEUCH-YU-IEUNG
-0xC3F7 0xCE20 # HANGUL SYLLABLE CHIEUCH-EU
-0xC3F8 0xCE21 # HANGUL SYLLABLE CHIEUCH-EU-KIYEOK
-0xC3F9 0xCE24 # HANGUL SYLLABLE CHIEUCH-EU-NIEUN
-0xC3FA 0xCE28 # HANGUL SYLLABLE CHIEUCH-EU-RIEUL
-0xC3FB 0xCE30 # HANGUL SYLLABLE CHIEUCH-EU-MIEUM
-0xC3FC 0xCE31 # HANGUL SYLLABLE CHIEUCH-EU-PIEUP
-0xC3FD 0xCE33 # HANGUL SYLLABLE CHIEUCH-EU-SIOS
-0xC3FE 0xCE35 # HANGUL SYLLABLE CHIEUCH-EU-IEUNG
-0xC441 0xD6AB # HANGUL SYLLABLE HIEUH-YO-KIYEOKSIOS
-0xC442 0xD6AD # HANGUL SYLLABLE HIEUH-YO-NIEUNCIEUC
-0xC443 0xD6AE # HANGUL SYLLABLE HIEUH-YO-NIEUNHIEUH
-0xC444 0xD6AF # HANGUL SYLLABLE HIEUH-YO-TIKEUT
-0xC445 0xD6B1 # HANGUL SYLLABLE HIEUH-YO-RIEULKIYEOK
-0xC446 0xD6B2 # HANGUL SYLLABLE HIEUH-YO-RIEULMIEUM
-0xC447 0xD6B3 # HANGUL SYLLABLE HIEUH-YO-RIEULPIEUP
-0xC448 0xD6B4 # HANGUL SYLLABLE HIEUH-YO-RIEULSIOS
-0xC449 0xD6B5 # HANGUL SYLLABLE HIEUH-YO-RIEULTHIEUTH
-0xC44A 0xD6B6 # HANGUL SYLLABLE HIEUH-YO-RIEULPHIEUPH
-0xC44B 0xD6B7 # HANGUL SYLLABLE HIEUH-YO-RIEULHIEUH
-0xC44C 0xD6B8 # HANGUL SYLLABLE HIEUH-YO-MIEUM
-0xC44D 0xD6BA # HANGUL SYLLABLE HIEUH-YO-PIEUPSIOS
-0xC44E 0xD6BC # HANGUL SYLLABLE HIEUH-YO-SSANGSIOS
-0xC44F 0xD6BD # HANGUL SYLLABLE HIEUH-YO-IEUNG
-0xC450 0xD6BE # HANGUL SYLLABLE HIEUH-YO-CIEUC
-0xC451 0xD6BF # HANGUL SYLLABLE HIEUH-YO-CHIEUCH
-0xC452 0xD6C0 # HANGUL SYLLABLE HIEUH-YO-KHIEUKH
-0xC453 0xD6C1 # HANGUL SYLLABLE HIEUH-YO-THIEUTH
-0xC454 0xD6C2 # HANGUL SYLLABLE HIEUH-YO-PHIEUPH
-0xC455 0xD6C3 # HANGUL SYLLABLE HIEUH-YO-HIEUH
-0xC456 0xD6C6 # HANGUL SYLLABLE HIEUH-U-SSANGKIYEOK
-0xC457 0xD6C7 # HANGUL SYLLABLE HIEUH-U-KIYEOKSIOS
-0xC458 0xD6C9 # HANGUL SYLLABLE HIEUH-U-NIEUNCIEUC
-0xC459 0xD6CA # HANGUL SYLLABLE HIEUH-U-NIEUNHIEUH
-0xC45A 0xD6CB # HANGUL SYLLABLE HIEUH-U-TIKEUT
-0xC461 0xD6CD # HANGUL SYLLABLE HIEUH-U-RIEULKIYEOK
-0xC462 0xD6CE # HANGUL SYLLABLE HIEUH-U-RIEULMIEUM
-0xC463 0xD6CF # HANGUL SYLLABLE HIEUH-U-RIEULPIEUP
-0xC464 0xD6D0 # HANGUL SYLLABLE HIEUH-U-RIEULSIOS
-0xC465 0xD6D2 # HANGUL SYLLABLE HIEUH-U-RIEULPHIEUPH
-0xC466 0xD6D3 # HANGUL SYLLABLE HIEUH-U-RIEULHIEUH
-0xC467 0xD6D5 # HANGUL SYLLABLE HIEUH-U-PIEUP
-0xC468 0xD6D6 # HANGUL SYLLABLE HIEUH-U-PIEUPSIOS
-0xC469 0xD6D8 # HANGUL SYLLABLE HIEUH-U-SSANGSIOS
-0xC46A 0xD6DA # HANGUL SYLLABLE HIEUH-U-CIEUC
-0xC46B 0xD6DB # HANGUL SYLLABLE HIEUH-U-CHIEUCH
-0xC46C 0xD6DC # HANGUL SYLLABLE HIEUH-U-KHIEUKH
-0xC46D 0xD6DD # HANGUL SYLLABLE HIEUH-U-THIEUTH
-0xC46E 0xD6DE # HANGUL SYLLABLE HIEUH-U-PHIEUPH
-0xC46F 0xD6DF # HANGUL SYLLABLE HIEUH-U-HIEUH
-0xC470 0xD6E1 # HANGUL SYLLABLE HIEUH-WEO-KIYEOK
-0xC471 0xD6E2 # HANGUL SYLLABLE HIEUH-WEO-SSANGKIYEOK
-0xC472 0xD6E3 # HANGUL SYLLABLE HIEUH-WEO-KIYEOKSIOS
-0xC473 0xD6E5 # HANGUL SYLLABLE HIEUH-WEO-NIEUNCIEUC
-0xC474 0xD6E6 # HANGUL SYLLABLE HIEUH-WEO-NIEUNHIEUH
-0xC475 0xD6E7 # HANGUL SYLLABLE HIEUH-WEO-TIKEUT
-0xC476 0xD6E9 # HANGUL SYLLABLE HIEUH-WEO-RIEULKIYEOK
-0xC477 0xD6EA # HANGUL SYLLABLE HIEUH-WEO-RIEULMIEUM
-0xC478 0xD6EB # HANGUL SYLLABLE HIEUH-WEO-RIEULPIEUP
-0xC479 0xD6EC # HANGUL SYLLABLE HIEUH-WEO-RIEULSIOS
-0xC47A 0xD6ED # HANGUL SYLLABLE HIEUH-WEO-RIEULTHIEUTH
-0xC481 0xD6EE # HANGUL SYLLABLE HIEUH-WEO-RIEULPHIEUPH
-0xC482 0xD6EF # HANGUL SYLLABLE HIEUH-WEO-RIEULHIEUH
-0xC483 0xD6F1 # HANGUL SYLLABLE HIEUH-WEO-PIEUP
-0xC484 0xD6F2 # HANGUL SYLLABLE HIEUH-WEO-PIEUPSIOS
-0xC485 0xD6F3 # HANGUL SYLLABLE HIEUH-WEO-SIOS
-0xC486 0xD6F4 # HANGUL SYLLABLE HIEUH-WEO-SSANGSIOS
-0xC487 0xD6F6 # HANGUL SYLLABLE HIEUH-WEO-CIEUC
-0xC488 0xD6F7 # HANGUL SYLLABLE HIEUH-WEO-CHIEUCH
-0xC489 0xD6F8 # HANGUL SYLLABLE HIEUH-WEO-KHIEUKH
-0xC48A 0xD6F9 # HANGUL SYLLABLE HIEUH-WEO-THIEUTH
-0xC48B 0xD6FA # HANGUL SYLLABLE HIEUH-WEO-PHIEUPH
-0xC48C 0xD6FB # HANGUL SYLLABLE HIEUH-WEO-HIEUH
-0xC48D 0xD6FE # HANGUL SYLLABLE HIEUH-WE-SSANGKIYEOK
-0xC48E 0xD6FF # HANGUL SYLLABLE HIEUH-WE-KIYEOKSIOS
-0xC48F 0xD701 # HANGUL SYLLABLE HIEUH-WE-NIEUNCIEUC
-0xC490 0xD702 # HANGUL SYLLABLE HIEUH-WE-NIEUNHIEUH
-0xC491 0xD703 # HANGUL SYLLABLE HIEUH-WE-TIKEUT
-0xC492 0xD705 # HANGUL SYLLABLE HIEUH-WE-RIEULKIYEOK
-0xC493 0xD706 # HANGUL SYLLABLE HIEUH-WE-RIEULMIEUM
-0xC494 0xD707 # HANGUL SYLLABLE HIEUH-WE-RIEULPIEUP
-0xC495 0xD708 # HANGUL SYLLABLE HIEUH-WE-RIEULSIOS
-0xC496 0xD709 # HANGUL SYLLABLE HIEUH-WE-RIEULTHIEUTH
-0xC497 0xD70A # HANGUL SYLLABLE HIEUH-WE-RIEULPHIEUPH
-0xC498 0xD70B # HANGUL SYLLABLE HIEUH-WE-RIEULHIEUH
-0xC499 0xD70C # HANGUL SYLLABLE HIEUH-WE-MIEUM
-0xC49A 0xD70D # HANGUL SYLLABLE HIEUH-WE-PIEUP
-0xC49B 0xD70E # HANGUL SYLLABLE HIEUH-WE-PIEUPSIOS
-0xC49C 0xD70F # HANGUL SYLLABLE HIEUH-WE-SIOS
-0xC49D 0xD710 # HANGUL SYLLABLE HIEUH-WE-SSANGSIOS
-0xC49E 0xD712 # HANGUL SYLLABLE HIEUH-WE-CIEUC
-0xC49F 0xD713 # HANGUL SYLLABLE HIEUH-WE-CHIEUCH
-0xC4A0 0xD714 # HANGUL SYLLABLE HIEUH-WE-KHIEUKH
-0xC4A1 0xCE58 # HANGUL SYLLABLE CHIEUCH-I
-0xC4A2 0xCE59 # HANGUL SYLLABLE CHIEUCH-I-KIYEOK
-0xC4A3 0xCE5C # HANGUL SYLLABLE CHIEUCH-I-NIEUN
-0xC4A4 0xCE5F # HANGUL SYLLABLE CHIEUCH-I-TIKEUT
-0xC4A5 0xCE60 # HANGUL SYLLABLE CHIEUCH-I-RIEUL
-0xC4A6 0xCE61 # HANGUL SYLLABLE CHIEUCH-I-RIEULKIYEOK
-0xC4A7 0xCE68 # HANGUL SYLLABLE CHIEUCH-I-MIEUM
-0xC4A8 0xCE69 # HANGUL SYLLABLE CHIEUCH-I-PIEUP
-0xC4A9 0xCE6B # HANGUL SYLLABLE CHIEUCH-I-SIOS
-0xC4AA 0xCE6D # HANGUL SYLLABLE CHIEUCH-I-IEUNG
-0xC4AB 0xCE74 # HANGUL SYLLABLE KHIEUKH-A
-0xC4AC 0xCE75 # HANGUL SYLLABLE KHIEUKH-A-KIYEOK
-0xC4AD 0xCE78 # HANGUL SYLLABLE KHIEUKH-A-NIEUN
-0xC4AE 0xCE7C # HANGUL SYLLABLE KHIEUKH-A-RIEUL
-0xC4AF 0xCE84 # HANGUL SYLLABLE KHIEUKH-A-MIEUM
-0xC4B0 0xCE85 # HANGUL SYLLABLE KHIEUKH-A-PIEUP
-0xC4B1 0xCE87 # HANGUL SYLLABLE KHIEUKH-A-SIOS
-0xC4B2 0xCE89 # HANGUL SYLLABLE KHIEUKH-A-IEUNG
-0xC4B3 0xCE90 # HANGUL SYLLABLE KHIEUKH-AE
-0xC4B4 0xCE91 # HANGUL SYLLABLE KHIEUKH-AE-KIYEOK
-0xC4B5 0xCE94 # HANGUL SYLLABLE KHIEUKH-AE-NIEUN
-0xC4B6 0xCE98 # HANGUL SYLLABLE KHIEUKH-AE-RIEUL
-0xC4B7 0xCEA0 # HANGUL SYLLABLE KHIEUKH-AE-MIEUM
-0xC4B8 0xCEA1 # HANGUL SYLLABLE KHIEUKH-AE-PIEUP
-0xC4B9 0xCEA3 # HANGUL SYLLABLE KHIEUKH-AE-SIOS
-0xC4BA 0xCEA4 # HANGUL SYLLABLE KHIEUKH-AE-SSANGSIOS
-0xC4BB 0xCEA5 # HANGUL SYLLABLE KHIEUKH-AE-IEUNG
-0xC4BC 0xCEAC # HANGUL SYLLABLE KHIEUKH-YA
-0xC4BD 0xCEAD # HANGUL SYLLABLE KHIEUKH-YA-KIYEOK
-0xC4BE 0xCEC1 # HANGUL SYLLABLE KHIEUKH-YA-IEUNG
-0xC4BF 0xCEE4 # HANGUL SYLLABLE KHIEUKH-EO
-0xC4C0 0xCEE5 # HANGUL SYLLABLE KHIEUKH-EO-KIYEOK
-0xC4C1 0xCEE8 # HANGUL SYLLABLE KHIEUKH-EO-NIEUN
-0xC4C2 0xCEEB # HANGUL SYLLABLE KHIEUKH-EO-TIKEUT
-0xC4C3 0xCEEC # HANGUL SYLLABLE KHIEUKH-EO-RIEUL
-0xC4C4 0xCEF4 # HANGUL SYLLABLE KHIEUKH-EO-MIEUM
-0xC4C5 0xCEF5 # HANGUL SYLLABLE KHIEUKH-EO-PIEUP
-0xC4C6 0xCEF7 # HANGUL SYLLABLE KHIEUKH-EO-SIOS
-0xC4C7 0xCEF8 # HANGUL SYLLABLE KHIEUKH-EO-SSANGSIOS
-0xC4C8 0xCEF9 # HANGUL SYLLABLE KHIEUKH-EO-IEUNG
-0xC4C9 0xCF00 # HANGUL SYLLABLE KHIEUKH-E
-0xC4CA 0xCF01 # HANGUL SYLLABLE KHIEUKH-E-KIYEOK
-0xC4CB 0xCF04 # HANGUL SYLLABLE KHIEUKH-E-NIEUN
-0xC4CC 0xCF08 # HANGUL SYLLABLE KHIEUKH-E-RIEUL
-0xC4CD 0xCF10 # HANGUL SYLLABLE KHIEUKH-E-MIEUM
-0xC4CE 0xCF11 # HANGUL SYLLABLE KHIEUKH-E-PIEUP
-0xC4CF 0xCF13 # HANGUL SYLLABLE KHIEUKH-E-SIOS
-0xC4D0 0xCF15 # HANGUL SYLLABLE KHIEUKH-E-IEUNG
-0xC4D1 0xCF1C # HANGUL SYLLABLE KHIEUKH-YEO
-0xC4D2 0xCF20 # HANGUL SYLLABLE KHIEUKH-YEO-NIEUN
-0xC4D3 0xCF24 # HANGUL SYLLABLE KHIEUKH-YEO-RIEUL
-0xC4D4 0xCF2C # HANGUL SYLLABLE KHIEUKH-YEO-MIEUM
-0xC4D5 0xCF2D # HANGUL SYLLABLE KHIEUKH-YEO-PIEUP
-0xC4D6 0xCF2F # HANGUL SYLLABLE KHIEUKH-YEO-SIOS
-0xC4D7 0xCF30 # HANGUL SYLLABLE KHIEUKH-YEO-SSANGSIOS
-0xC4D8 0xCF31 # HANGUL SYLLABLE KHIEUKH-YEO-IEUNG
-0xC4D9 0xCF38 # HANGUL SYLLABLE KHIEUKH-YE
-0xC4DA 0xCF54 # HANGUL SYLLABLE KHIEUKH-O
-0xC4DB 0xCF55 # HANGUL SYLLABLE KHIEUKH-O-KIYEOK
-0xC4DC 0xCF58 # HANGUL SYLLABLE KHIEUKH-O-NIEUN
-0xC4DD 0xCF5C # HANGUL SYLLABLE KHIEUKH-O-RIEUL
-0xC4DE 0xCF64 # HANGUL SYLLABLE KHIEUKH-O-MIEUM
-0xC4DF 0xCF65 # HANGUL SYLLABLE KHIEUKH-O-PIEUP
-0xC4E0 0xCF67 # HANGUL SYLLABLE KHIEUKH-O-SIOS
-0xC4E1 0xCF69 # HANGUL SYLLABLE KHIEUKH-O-IEUNG
-0xC4E2 0xCF70 # HANGUL SYLLABLE KHIEUKH-WA
-0xC4E3 0xCF71 # HANGUL SYLLABLE KHIEUKH-WA-KIYEOK
-0xC4E4 0xCF74 # HANGUL SYLLABLE KHIEUKH-WA-NIEUN
-0xC4E5 0xCF78 # HANGUL SYLLABLE KHIEUKH-WA-RIEUL
-0xC4E6 0xCF80 # HANGUL SYLLABLE KHIEUKH-WA-MIEUM
-0xC4E7 0xCF85 # HANGUL SYLLABLE KHIEUKH-WA-IEUNG
-0xC4E8 0xCF8C # HANGUL SYLLABLE KHIEUKH-WAE
-0xC4E9 0xCFA1 # HANGUL SYLLABLE KHIEUKH-WAE-IEUNG
-0xC4EA 0xCFA8 # HANGUL SYLLABLE KHIEUKH-OE
-0xC4EB 0xCFB0 # HANGUL SYLLABLE KHIEUKH-OE-RIEUL
-0xC4EC 0xCFC4 # HANGUL SYLLABLE KHIEUKH-YO
-0xC4ED 0xCFE0 # HANGUL SYLLABLE KHIEUKH-U
-0xC4EE 0xCFE1 # HANGUL SYLLABLE KHIEUKH-U-KIYEOK
-0xC4EF 0xCFE4 # HANGUL SYLLABLE KHIEUKH-U-NIEUN
-0xC4F0 0xCFE8 # HANGUL SYLLABLE KHIEUKH-U-RIEUL
-0xC4F1 0xCFF0 # HANGUL SYLLABLE KHIEUKH-U-MIEUM
-0xC4F2 0xCFF1 # HANGUL SYLLABLE KHIEUKH-U-PIEUP
-0xC4F3 0xCFF3 # HANGUL SYLLABLE KHIEUKH-U-SIOS
-0xC4F4 0xCFF5 # HANGUL SYLLABLE KHIEUKH-U-IEUNG
-0xC4F5 0xCFFC # HANGUL SYLLABLE KHIEUKH-WEO
-0xC4F6 0xD000 # HANGUL SYLLABLE KHIEUKH-WEO-NIEUN
-0xC4F7 0xD004 # HANGUL SYLLABLE KHIEUKH-WEO-RIEUL
-0xC4F8 0xD011 # HANGUL SYLLABLE KHIEUKH-WEO-IEUNG
-0xC4F9 0xD018 # HANGUL SYLLABLE KHIEUKH-WE
-0xC4FA 0xD02D # HANGUL SYLLABLE KHIEUKH-WE-IEUNG
-0xC4FB 0xD034 # HANGUL SYLLABLE KHIEUKH-WI
-0xC4FC 0xD035 # HANGUL SYLLABLE KHIEUKH-WI-KIYEOK
-0xC4FD 0xD038 # HANGUL SYLLABLE KHIEUKH-WI-NIEUN
-0xC4FE 0xD03C # HANGUL SYLLABLE KHIEUKH-WI-RIEUL
-0xC541 0xD715 # HANGUL SYLLABLE HIEUH-WE-THIEUTH
-0xC542 0xD716 # HANGUL SYLLABLE HIEUH-WE-PHIEUPH
-0xC543 0xD717 # HANGUL SYLLABLE HIEUH-WE-HIEUH
-0xC544 0xD71A # HANGUL SYLLABLE HIEUH-WI-SSANGKIYEOK
-0xC545 0xD71B # HANGUL SYLLABLE HIEUH-WI-KIYEOKSIOS
-0xC546 0xD71D # HANGUL SYLLABLE HIEUH-WI-NIEUNCIEUC
-0xC547 0xD71E # HANGUL SYLLABLE HIEUH-WI-NIEUNHIEUH
-0xC548 0xD71F # HANGUL SYLLABLE HIEUH-WI-TIKEUT
-0xC549 0xD721 # HANGUL SYLLABLE HIEUH-WI-RIEULKIYEOK
-0xC54A 0xD722 # HANGUL SYLLABLE HIEUH-WI-RIEULMIEUM
-0xC54B 0xD723 # HANGUL SYLLABLE HIEUH-WI-RIEULPIEUP
-0xC54C 0xD724 # HANGUL SYLLABLE HIEUH-WI-RIEULSIOS
-0xC54D 0xD725 # HANGUL SYLLABLE HIEUH-WI-RIEULTHIEUTH
-0xC54E 0xD726 # HANGUL SYLLABLE HIEUH-WI-RIEULPHIEUPH
-0xC54F 0xD727 # HANGUL SYLLABLE HIEUH-WI-RIEULHIEUH
-0xC550 0xD72A # HANGUL SYLLABLE HIEUH-WI-PIEUPSIOS
-0xC551 0xD72C # HANGUL SYLLABLE HIEUH-WI-SSANGSIOS
-0xC552 0xD72E # HANGUL SYLLABLE HIEUH-WI-CIEUC
-0xC553 0xD72F # HANGUL SYLLABLE HIEUH-WI-CHIEUCH
-0xC554 0xD730 # HANGUL SYLLABLE HIEUH-WI-KHIEUKH
-0xC555 0xD731 # HANGUL SYLLABLE HIEUH-WI-THIEUTH
-0xC556 0xD732 # HANGUL SYLLABLE HIEUH-WI-PHIEUPH
-0xC557 0xD733 # HANGUL SYLLABLE HIEUH-WI-HIEUH
-0xC558 0xD736 # HANGUL SYLLABLE HIEUH-YU-SSANGKIYEOK
-0xC559 0xD737 # HANGUL SYLLABLE HIEUH-YU-KIYEOKSIOS
-0xC55A 0xD739 # HANGUL SYLLABLE HIEUH-YU-NIEUNCIEUC
-0xC561 0xD73A # HANGUL SYLLABLE HIEUH-YU-NIEUNHIEUH
-0xC562 0xD73B # HANGUL SYLLABLE HIEUH-YU-TIKEUT
-0xC563 0xD73D # HANGUL SYLLABLE HIEUH-YU-RIEULKIYEOK
-0xC564 0xD73E # HANGUL SYLLABLE HIEUH-YU-RIEULMIEUM
-0xC565 0xD73F # HANGUL SYLLABLE HIEUH-YU-RIEULPIEUP
-0xC566 0xD740 # HANGUL SYLLABLE HIEUH-YU-RIEULSIOS
-0xC567 0xD741 # HANGUL SYLLABLE HIEUH-YU-RIEULTHIEUTH
-0xC568 0xD742 # HANGUL SYLLABLE HIEUH-YU-RIEULPHIEUPH
-0xC569 0xD743 # HANGUL SYLLABLE HIEUH-YU-RIEULHIEUH
-0xC56A 0xD745 # HANGUL SYLLABLE HIEUH-YU-PIEUP
-0xC56B 0xD746 # HANGUL SYLLABLE HIEUH-YU-PIEUPSIOS
-0xC56C 0xD748 # HANGUL SYLLABLE HIEUH-YU-SSANGSIOS
-0xC56D 0xD74A # HANGUL SYLLABLE HIEUH-YU-CIEUC
-0xC56E 0xD74B # HANGUL SYLLABLE HIEUH-YU-CHIEUCH
-0xC56F 0xD74C # HANGUL SYLLABLE HIEUH-YU-KHIEUKH
-0xC570 0xD74D # HANGUL SYLLABLE HIEUH-YU-THIEUTH
-0xC571 0xD74E # HANGUL SYLLABLE HIEUH-YU-PHIEUPH
-0xC572 0xD74F # HANGUL SYLLABLE HIEUH-YU-HIEUH
-0xC573 0xD752 # HANGUL SYLLABLE HIEUH-EU-SSANGKIYEOK
-0xC574 0xD753 # HANGUL SYLLABLE HIEUH-EU-KIYEOKSIOS
-0xC575 0xD755 # HANGUL SYLLABLE HIEUH-EU-NIEUNCIEUC
-0xC576 0xD75A # HANGUL SYLLABLE HIEUH-EU-RIEULMIEUM
-0xC577 0xD75B # HANGUL SYLLABLE HIEUH-EU-RIEULPIEUP
-0xC578 0xD75C # HANGUL SYLLABLE HIEUH-EU-RIEULSIOS
-0xC579 0xD75D # HANGUL SYLLABLE HIEUH-EU-RIEULTHIEUTH
-0xC57A 0xD75E # HANGUL SYLLABLE HIEUH-EU-RIEULPHIEUPH
-0xC581 0xD75F # HANGUL SYLLABLE HIEUH-EU-RIEULHIEUH
-0xC582 0xD762 # HANGUL SYLLABLE HIEUH-EU-PIEUPSIOS
-0xC583 0xD764 # HANGUL SYLLABLE HIEUH-EU-SSANGSIOS
-0xC584 0xD766 # HANGUL SYLLABLE HIEUH-EU-CIEUC
-0xC585 0xD767 # HANGUL SYLLABLE HIEUH-EU-CHIEUCH
-0xC586 0xD768 # HANGUL SYLLABLE HIEUH-EU-KHIEUKH
-0xC587 0xD76A # HANGUL SYLLABLE HIEUH-EU-PHIEUPH
-0xC588 0xD76B # HANGUL SYLLABLE HIEUH-EU-HIEUH
-0xC589 0xD76D # HANGUL SYLLABLE HIEUH-YI-KIYEOK
-0xC58A 0xD76E # HANGUL SYLLABLE HIEUH-YI-SSANGKIYEOK
-0xC58B 0xD76F # HANGUL SYLLABLE HIEUH-YI-KIYEOKSIOS
-0xC58C 0xD771 # HANGUL SYLLABLE HIEUH-YI-NIEUNCIEUC
-0xC58D 0xD772 # HANGUL SYLLABLE HIEUH-YI-NIEUNHIEUH
-0xC58E 0xD773 # HANGUL SYLLABLE HIEUH-YI-TIKEUT
-0xC58F 0xD775 # HANGUL SYLLABLE HIEUH-YI-RIEULKIYEOK
-0xC590 0xD776 # HANGUL SYLLABLE HIEUH-YI-RIEULMIEUM
-0xC591 0xD777 # HANGUL SYLLABLE HIEUH-YI-RIEULPIEUP
-0xC592 0xD778 # HANGUL SYLLABLE HIEUH-YI-RIEULSIOS
-0xC593 0xD779 # HANGUL SYLLABLE HIEUH-YI-RIEULTHIEUTH
-0xC594 0xD77A # HANGUL SYLLABLE HIEUH-YI-RIEULPHIEUPH
-0xC595 0xD77B # HANGUL SYLLABLE HIEUH-YI-RIEULHIEUH
-0xC596 0xD77E # HANGUL SYLLABLE HIEUH-YI-PIEUPSIOS
-0xC597 0xD77F # HANGUL SYLLABLE HIEUH-YI-SIOS
-0xC598 0xD780 # HANGUL SYLLABLE HIEUH-YI-SSANGSIOS
-0xC599 0xD782 # HANGUL SYLLABLE HIEUH-YI-CIEUC
-0xC59A 0xD783 # HANGUL SYLLABLE HIEUH-YI-CHIEUCH
-0xC59B 0xD784 # HANGUL SYLLABLE HIEUH-YI-KHIEUKH
-0xC59C 0xD785 # HANGUL SYLLABLE HIEUH-YI-THIEUTH
-0xC59D 0xD786 # HANGUL SYLLABLE HIEUH-YI-PHIEUPH
-0xC59E 0xD787 # HANGUL SYLLABLE HIEUH-YI-HIEUH
-0xC59F 0xD78A # HANGUL SYLLABLE HIEUH-I-SSANGKIYEOK
-0xC5A0 0xD78B # HANGUL SYLLABLE HIEUH-I-KIYEOKSIOS
-0xC5A1 0xD044 # HANGUL SYLLABLE KHIEUKH-WI-MIEUM
-0xC5A2 0xD045 # HANGUL SYLLABLE KHIEUKH-WI-PIEUP
-0xC5A3 0xD047 # HANGUL SYLLABLE KHIEUKH-WI-SIOS
-0xC5A4 0xD049 # HANGUL SYLLABLE KHIEUKH-WI-IEUNG
-0xC5A5 0xD050 # HANGUL SYLLABLE KHIEUKH-YU
-0xC5A6 0xD054 # HANGUL SYLLABLE KHIEUKH-YU-NIEUN
-0xC5A7 0xD058 # HANGUL SYLLABLE KHIEUKH-YU-RIEUL
-0xC5A8 0xD060 # HANGUL SYLLABLE KHIEUKH-YU-MIEUM
-0xC5A9 0xD06C # HANGUL SYLLABLE KHIEUKH-EU
-0xC5AA 0xD06D # HANGUL SYLLABLE KHIEUKH-EU-KIYEOK
-0xC5AB 0xD070 # HANGUL SYLLABLE KHIEUKH-EU-NIEUN
-0xC5AC 0xD074 # HANGUL SYLLABLE KHIEUKH-EU-RIEUL
-0xC5AD 0xD07C # HANGUL SYLLABLE KHIEUKH-EU-MIEUM
-0xC5AE 0xD07D # HANGUL SYLLABLE KHIEUKH-EU-PIEUP
-0xC5AF 0xD081 # HANGUL SYLLABLE KHIEUKH-EU-IEUNG
-0xC5B0 0xD0A4 # HANGUL SYLLABLE KHIEUKH-I
-0xC5B1 0xD0A5 # HANGUL SYLLABLE KHIEUKH-I-KIYEOK
-0xC5B2 0xD0A8 # HANGUL SYLLABLE KHIEUKH-I-NIEUN
-0xC5B3 0xD0AC # HANGUL SYLLABLE KHIEUKH-I-RIEUL
-0xC5B4 0xD0B4 # HANGUL SYLLABLE KHIEUKH-I-MIEUM
-0xC5B5 0xD0B5 # HANGUL SYLLABLE KHIEUKH-I-PIEUP
-0xC5B6 0xD0B7 # HANGUL SYLLABLE KHIEUKH-I-SIOS
-0xC5B7 0xD0B9 # HANGUL SYLLABLE KHIEUKH-I-IEUNG
-0xC5B8 0xD0C0 # HANGUL SYLLABLE THIEUTH-A
-0xC5B9 0xD0C1 # HANGUL SYLLABLE THIEUTH-A-KIYEOK
-0xC5BA 0xD0C4 # HANGUL SYLLABLE THIEUTH-A-NIEUN
-0xC5BB 0xD0C8 # HANGUL SYLLABLE THIEUTH-A-RIEUL
-0xC5BC 0xD0C9 # HANGUL SYLLABLE THIEUTH-A-RIEULKIYEOK
-0xC5BD 0xD0D0 # HANGUL SYLLABLE THIEUTH-A-MIEUM
-0xC5BE 0xD0D1 # HANGUL SYLLABLE THIEUTH-A-PIEUP
-0xC5BF 0xD0D3 # HANGUL SYLLABLE THIEUTH-A-SIOS
-0xC5C0 0xD0D4 # HANGUL SYLLABLE THIEUTH-A-SSANGSIOS
-0xC5C1 0xD0D5 # HANGUL SYLLABLE THIEUTH-A-IEUNG
-0xC5C2 0xD0DC # HANGUL SYLLABLE THIEUTH-AE
-0xC5C3 0xD0DD # HANGUL SYLLABLE THIEUTH-AE-KIYEOK
-0xC5C4 0xD0E0 # HANGUL SYLLABLE THIEUTH-AE-NIEUN
-0xC5C5 0xD0E4 # HANGUL SYLLABLE THIEUTH-AE-RIEUL
-0xC5C6 0xD0EC # HANGUL SYLLABLE THIEUTH-AE-MIEUM
-0xC5C7 0xD0ED # HANGUL SYLLABLE THIEUTH-AE-PIEUP
-0xC5C8 0xD0EF # HANGUL SYLLABLE THIEUTH-AE-SIOS
-0xC5C9 0xD0F0 # HANGUL SYLLABLE THIEUTH-AE-SSANGSIOS
-0xC5CA 0xD0F1 # HANGUL SYLLABLE THIEUTH-AE-IEUNG
-0xC5CB 0xD0F8 # HANGUL SYLLABLE THIEUTH-YA
-0xC5CC 0xD10D # HANGUL SYLLABLE THIEUTH-YA-IEUNG
-0xC5CD 0xD130 # HANGUL SYLLABLE THIEUTH-EO
-0xC5CE 0xD131 # HANGUL SYLLABLE THIEUTH-EO-KIYEOK
-0xC5CF 0xD134 # HANGUL SYLLABLE THIEUTH-EO-NIEUN
-0xC5D0 0xD138 # HANGUL SYLLABLE THIEUTH-EO-RIEUL
-0xC5D1 0xD13A # HANGUL SYLLABLE THIEUTH-EO-RIEULMIEUM
-0xC5D2 0xD140 # HANGUL SYLLABLE THIEUTH-EO-MIEUM
-0xC5D3 0xD141 # HANGUL SYLLABLE THIEUTH-EO-PIEUP
-0xC5D4 0xD143 # HANGUL SYLLABLE THIEUTH-EO-SIOS
-0xC5D5 0xD144 # HANGUL SYLLABLE THIEUTH-EO-SSANGSIOS
-0xC5D6 0xD145 # HANGUL SYLLABLE THIEUTH-EO-IEUNG
-0xC5D7 0xD14C # HANGUL SYLLABLE THIEUTH-E
-0xC5D8 0xD14D # HANGUL SYLLABLE THIEUTH-E-KIYEOK
-0xC5D9 0xD150 # HANGUL SYLLABLE THIEUTH-E-NIEUN
-0xC5DA 0xD154 # HANGUL SYLLABLE THIEUTH-E-RIEUL
-0xC5DB 0xD15C # HANGUL SYLLABLE THIEUTH-E-MIEUM
-0xC5DC 0xD15D # HANGUL SYLLABLE THIEUTH-E-PIEUP
-0xC5DD 0xD15F # HANGUL SYLLABLE THIEUTH-E-SIOS
-0xC5DE 0xD161 # HANGUL SYLLABLE THIEUTH-E-IEUNG
-0xC5DF 0xD168 # HANGUL SYLLABLE THIEUTH-YEO
-0xC5E0 0xD16C # HANGUL SYLLABLE THIEUTH-YEO-NIEUN
-0xC5E1 0xD17C # HANGUL SYLLABLE THIEUTH-YEO-SSANGSIOS
-0xC5E2 0xD184 # HANGUL SYLLABLE THIEUTH-YE
-0xC5E3 0xD188 # HANGUL SYLLABLE THIEUTH-YE-NIEUN
-0xC5E4 0xD1A0 # HANGUL SYLLABLE THIEUTH-O
-0xC5E5 0xD1A1 # HANGUL SYLLABLE THIEUTH-O-KIYEOK
-0xC5E6 0xD1A4 # HANGUL SYLLABLE THIEUTH-O-NIEUN
-0xC5E7 0xD1A8 # HANGUL SYLLABLE THIEUTH-O-RIEUL
-0xC5E8 0xD1B0 # HANGUL SYLLABLE THIEUTH-O-MIEUM
-0xC5E9 0xD1B1 # HANGUL SYLLABLE THIEUTH-O-PIEUP
-0xC5EA 0xD1B3 # HANGUL SYLLABLE THIEUTH-O-SIOS
-0xC5EB 0xD1B5 # HANGUL SYLLABLE THIEUTH-O-IEUNG
-0xC5EC 0xD1BA # HANGUL SYLLABLE THIEUTH-O-PHIEUPH
-0xC5ED 0xD1BC # HANGUL SYLLABLE THIEUTH-WA
-0xC5EE 0xD1C0 # HANGUL SYLLABLE THIEUTH-WA-NIEUN
-0xC5EF 0xD1D8 # HANGUL SYLLABLE THIEUTH-WAE
-0xC5F0 0xD1F4 # HANGUL SYLLABLE THIEUTH-OE
-0xC5F1 0xD1F8 # HANGUL SYLLABLE THIEUTH-OE-NIEUN
-0xC5F2 0xD207 # HANGUL SYLLABLE THIEUTH-OE-SIOS
-0xC5F3 0xD209 # HANGUL SYLLABLE THIEUTH-OE-IEUNG
-0xC5F4 0xD210 # HANGUL SYLLABLE THIEUTH-YO
-0xC5F5 0xD22C # HANGUL SYLLABLE THIEUTH-U
-0xC5F6 0xD22D # HANGUL SYLLABLE THIEUTH-U-KIYEOK
-0xC5F7 0xD230 # HANGUL SYLLABLE THIEUTH-U-NIEUN
-0xC5F8 0xD234 # HANGUL SYLLABLE THIEUTH-U-RIEUL
-0xC5F9 0xD23C # HANGUL SYLLABLE THIEUTH-U-MIEUM
-0xC5FA 0xD23D # HANGUL SYLLABLE THIEUTH-U-PIEUP
-0xC5FB 0xD23F # HANGUL SYLLABLE THIEUTH-U-SIOS
-0xC5FC 0xD241 # HANGUL SYLLABLE THIEUTH-U-IEUNG
-0xC5FD 0xD248 # HANGUL SYLLABLE THIEUTH-WEO
-0xC5FE 0xD25C # HANGUL SYLLABLE THIEUTH-WEO-SSANGSIOS
-0xC641 0xD78D # HANGUL SYLLABLE HIEUH-I-NIEUNCIEUC
-0xC642 0xD78E # HANGUL SYLLABLE HIEUH-I-NIEUNHIEUH
-0xC643 0xD78F # HANGUL SYLLABLE HIEUH-I-TIKEUT
-0xC644 0xD791 # HANGUL SYLLABLE HIEUH-I-RIEULKIYEOK
-0xC645 0xD792 # HANGUL SYLLABLE HIEUH-I-RIEULMIEUM
-0xC646 0xD793 # HANGUL SYLLABLE HIEUH-I-RIEULPIEUP
-0xC647 0xD794 # HANGUL SYLLABLE HIEUH-I-RIEULSIOS
-0xC648 0xD795 # HANGUL SYLLABLE HIEUH-I-RIEULTHIEUTH
-0xC649 0xD796 # HANGUL SYLLABLE HIEUH-I-RIEULPHIEUPH
-0xC64A 0xD797 # HANGUL SYLLABLE HIEUH-I-RIEULHIEUH
-0xC64B 0xD79A # HANGUL SYLLABLE HIEUH-I-PIEUPSIOS
-0xC64C 0xD79C # HANGUL SYLLABLE HIEUH-I-SSANGSIOS
-0xC64D 0xD79E # HANGUL SYLLABLE HIEUH-I-CIEUC
-0xC64E 0xD79F # HANGUL SYLLABLE HIEUH-I-CHIEUCH
-0xC64F 0xD7A0 # HANGUL SYLLABLE HIEUH-I-KHIEUKH
-0xC650 0xD7A1 # HANGUL SYLLABLE HIEUH-I-THIEUTH
-0xC651 0xD7A2 # HANGUL SYLLABLE HIEUH-I-PHIEUPH
-0xC652 0xD7A3 # HANGUL SYLLABLE HIEUH-I-HIEUH
-0xC6A1 0xD264 # HANGUL SYLLABLE THIEUTH-WE
-0xC6A2 0xD280 # HANGUL SYLLABLE THIEUTH-WI
-0xC6A3 0xD281 # HANGUL SYLLABLE THIEUTH-WI-KIYEOK
-0xC6A4 0xD284 # HANGUL SYLLABLE THIEUTH-WI-NIEUN
-0xC6A5 0xD288 # HANGUL SYLLABLE THIEUTH-WI-RIEUL
-0xC6A6 0xD290 # HANGUL SYLLABLE THIEUTH-WI-MIEUM
-0xC6A7 0xD291 # HANGUL SYLLABLE THIEUTH-WI-PIEUP
-0xC6A8 0xD295 # HANGUL SYLLABLE THIEUTH-WI-IEUNG
-0xC6A9 0xD29C # HANGUL SYLLABLE THIEUTH-YU
-0xC6AA 0xD2A0 # HANGUL SYLLABLE THIEUTH-YU-NIEUN
-0xC6AB 0xD2A4 # HANGUL SYLLABLE THIEUTH-YU-RIEUL
-0xC6AC 0xD2AC # HANGUL SYLLABLE THIEUTH-YU-MIEUM
-0xC6AD 0xD2B1 # HANGUL SYLLABLE THIEUTH-YU-IEUNG
-0xC6AE 0xD2B8 # HANGUL SYLLABLE THIEUTH-EU
-0xC6AF 0xD2B9 # HANGUL SYLLABLE THIEUTH-EU-KIYEOK
-0xC6B0 0xD2BC # HANGUL SYLLABLE THIEUTH-EU-NIEUN
-0xC6B1 0xD2BF # HANGUL SYLLABLE THIEUTH-EU-TIKEUT
-0xC6B2 0xD2C0 # HANGUL SYLLABLE THIEUTH-EU-RIEUL
-0xC6B3 0xD2C2 # HANGUL SYLLABLE THIEUTH-EU-RIEULMIEUM
-0xC6B4 0xD2C8 # HANGUL SYLLABLE THIEUTH-EU-MIEUM
-0xC6B5 0xD2C9 # HANGUL SYLLABLE THIEUTH-EU-PIEUP
-0xC6B6 0xD2CB # HANGUL SYLLABLE THIEUTH-EU-SIOS
-0xC6B7 0xD2D4 # HANGUL SYLLABLE THIEUTH-YI
-0xC6B8 0xD2D8 # HANGUL SYLLABLE THIEUTH-YI-NIEUN
-0xC6B9 0xD2DC # HANGUL SYLLABLE THIEUTH-YI-RIEUL
-0xC6BA 0xD2E4 # HANGUL SYLLABLE THIEUTH-YI-MIEUM
-0xC6BB 0xD2E5 # HANGUL SYLLABLE THIEUTH-YI-PIEUP
-0xC6BC 0xD2F0 # HANGUL SYLLABLE THIEUTH-I
-0xC6BD 0xD2F1 # HANGUL SYLLABLE THIEUTH-I-KIYEOK
-0xC6BE 0xD2F4 # HANGUL SYLLABLE THIEUTH-I-NIEUN
-0xC6BF 0xD2F8 # HANGUL SYLLABLE THIEUTH-I-RIEUL
-0xC6C0 0xD300 # HANGUL SYLLABLE THIEUTH-I-MIEUM
-0xC6C1 0xD301 # HANGUL SYLLABLE THIEUTH-I-PIEUP
-0xC6C2 0xD303 # HANGUL SYLLABLE THIEUTH-I-SIOS
-0xC6C3 0xD305 # HANGUL SYLLABLE THIEUTH-I-IEUNG
-0xC6C4 0xD30C # HANGUL SYLLABLE PHIEUPH-A
-0xC6C5 0xD30D # HANGUL SYLLABLE PHIEUPH-A-KIYEOK
-0xC6C6 0xD30E # HANGUL SYLLABLE PHIEUPH-A-SSANGKIYEOK
-0xC6C7 0xD310 # HANGUL SYLLABLE PHIEUPH-A-NIEUN
-0xC6C8 0xD314 # HANGUL SYLLABLE PHIEUPH-A-RIEUL
-0xC6C9 0xD316 # HANGUL SYLLABLE PHIEUPH-A-RIEULMIEUM
-0xC6CA 0xD31C # HANGUL SYLLABLE PHIEUPH-A-MIEUM
-0xC6CB 0xD31D # HANGUL SYLLABLE PHIEUPH-A-PIEUP
-0xC6CC 0xD31F # HANGUL SYLLABLE PHIEUPH-A-SIOS
-0xC6CD 0xD320 # HANGUL SYLLABLE PHIEUPH-A-SSANGSIOS
-0xC6CE 0xD321 # HANGUL SYLLABLE PHIEUPH-A-IEUNG
-0xC6CF 0xD325 # HANGUL SYLLABLE PHIEUPH-A-THIEUTH
-0xC6D0 0xD328 # HANGUL SYLLABLE PHIEUPH-AE
-0xC6D1 0xD329 # HANGUL SYLLABLE PHIEUPH-AE-KIYEOK
-0xC6D2 0xD32C # HANGUL SYLLABLE PHIEUPH-AE-NIEUN
-0xC6D3 0xD330 # HANGUL SYLLABLE PHIEUPH-AE-RIEUL
-0xC6D4 0xD338 # HANGUL SYLLABLE PHIEUPH-AE-MIEUM
-0xC6D5 0xD339 # HANGUL SYLLABLE PHIEUPH-AE-PIEUP
-0xC6D6 0xD33B # HANGUL SYLLABLE PHIEUPH-AE-SIOS
-0xC6D7 0xD33C # HANGUL SYLLABLE PHIEUPH-AE-SSANGSIOS
-0xC6D8 0xD33D # HANGUL SYLLABLE PHIEUPH-AE-IEUNG
-0xC6D9 0xD344 # HANGUL SYLLABLE PHIEUPH-YA
-0xC6DA 0xD345 # HANGUL SYLLABLE PHIEUPH-YA-KIYEOK
-0xC6DB 0xD37C # HANGUL SYLLABLE PHIEUPH-EO
-0xC6DC 0xD37D # HANGUL SYLLABLE PHIEUPH-EO-KIYEOK
-0xC6DD 0xD380 # HANGUL SYLLABLE PHIEUPH-EO-NIEUN
-0xC6DE 0xD384 # HANGUL SYLLABLE PHIEUPH-EO-RIEUL
-0xC6DF 0xD38C # HANGUL SYLLABLE PHIEUPH-EO-MIEUM
-0xC6E0 0xD38D # HANGUL SYLLABLE PHIEUPH-EO-PIEUP
-0xC6E1 0xD38F # HANGUL SYLLABLE PHIEUPH-EO-SIOS
-0xC6E2 0xD390 # HANGUL SYLLABLE PHIEUPH-EO-SSANGSIOS
-0xC6E3 0xD391 # HANGUL SYLLABLE PHIEUPH-EO-IEUNG
-0xC6E4 0xD398 # HANGUL SYLLABLE PHIEUPH-E
-0xC6E5 0xD399 # HANGUL SYLLABLE PHIEUPH-E-KIYEOK
-0xC6E6 0xD39C # HANGUL SYLLABLE PHIEUPH-E-NIEUN
-0xC6E7 0xD3A0 # HANGUL SYLLABLE PHIEUPH-E-RIEUL
-0xC6E8 0xD3A8 # HANGUL SYLLABLE PHIEUPH-E-MIEUM
-0xC6E9 0xD3A9 # HANGUL SYLLABLE PHIEUPH-E-PIEUP
-0xC6EA 0xD3AB # HANGUL SYLLABLE PHIEUPH-E-SIOS
-0xC6EB 0xD3AD # HANGUL SYLLABLE PHIEUPH-E-IEUNG
-0xC6EC 0xD3B4 # HANGUL SYLLABLE PHIEUPH-YEO
-0xC6ED 0xD3B8 # HANGUL SYLLABLE PHIEUPH-YEO-NIEUN
-0xC6EE 0xD3BC # HANGUL SYLLABLE PHIEUPH-YEO-RIEUL
-0xC6EF 0xD3C4 # HANGUL SYLLABLE PHIEUPH-YEO-MIEUM
-0xC6F0 0xD3C5 # HANGUL SYLLABLE PHIEUPH-YEO-PIEUP
-0xC6F1 0xD3C8 # HANGUL SYLLABLE PHIEUPH-YEO-SSANGSIOS
-0xC6F2 0xD3C9 # HANGUL SYLLABLE PHIEUPH-YEO-IEUNG
-0xC6F3 0xD3D0 # HANGUL SYLLABLE PHIEUPH-YE
-0xC6F4 0xD3D8 # HANGUL SYLLABLE PHIEUPH-YE-RIEUL
-0xC6F5 0xD3E1 # HANGUL SYLLABLE PHIEUPH-YE-PIEUP
-0xC6F6 0xD3E3 # HANGUL SYLLABLE PHIEUPH-YE-SIOS
-0xC6F7 0xD3EC # HANGUL SYLLABLE PHIEUPH-O
-0xC6F8 0xD3ED # HANGUL SYLLABLE PHIEUPH-O-KIYEOK
-0xC6F9 0xD3F0 # HANGUL SYLLABLE PHIEUPH-O-NIEUN
-0xC6FA 0xD3F4 # HANGUL SYLLABLE PHIEUPH-O-RIEUL
-0xC6FB 0xD3FC # HANGUL SYLLABLE PHIEUPH-O-MIEUM
-0xC6FC 0xD3FD # HANGUL SYLLABLE PHIEUPH-O-PIEUP
-0xC6FD 0xD3FF # HANGUL SYLLABLE PHIEUPH-O-SIOS
-0xC6FE 0xD401 # HANGUL SYLLABLE PHIEUPH-O-IEUNG
-0xC7A1 0xD408 # HANGUL SYLLABLE PHIEUPH-WA
-0xC7A2 0xD41D # HANGUL SYLLABLE PHIEUPH-WA-IEUNG
-0xC7A3 0xD440 # HANGUL SYLLABLE PHIEUPH-OE
-0xC7A4 0xD444 # HANGUL SYLLABLE PHIEUPH-OE-NIEUN
-0xC7A5 0xD45C # HANGUL SYLLABLE PHIEUPH-YO
-0xC7A6 0xD460 # HANGUL SYLLABLE PHIEUPH-YO-NIEUN
-0xC7A7 0xD464 # HANGUL SYLLABLE PHIEUPH-YO-RIEUL
-0xC7A8 0xD46D # HANGUL SYLLABLE PHIEUPH-YO-PIEUP
-0xC7A9 0xD46F # HANGUL SYLLABLE PHIEUPH-YO-SIOS
-0xC7AA 0xD478 # HANGUL SYLLABLE PHIEUPH-U
-0xC7AB 0xD479 # HANGUL SYLLABLE PHIEUPH-U-KIYEOK
-0xC7AC 0xD47C # HANGUL SYLLABLE PHIEUPH-U-NIEUN
-0xC7AD 0xD47F # HANGUL SYLLABLE PHIEUPH-U-TIKEUT
-0xC7AE 0xD480 # HANGUL SYLLABLE PHIEUPH-U-RIEUL
-0xC7AF 0xD482 # HANGUL SYLLABLE PHIEUPH-U-RIEULMIEUM
-0xC7B0 0xD488 # HANGUL SYLLABLE PHIEUPH-U-MIEUM
-0xC7B1 0xD489 # HANGUL SYLLABLE PHIEUPH-U-PIEUP
-0xC7B2 0xD48B # HANGUL SYLLABLE PHIEUPH-U-SIOS
-0xC7B3 0xD48D # HANGUL SYLLABLE PHIEUPH-U-IEUNG
-0xC7B4 0xD494 # HANGUL SYLLABLE PHIEUPH-WEO
-0xC7B5 0xD4A9 # HANGUL SYLLABLE PHIEUPH-WEO-IEUNG
-0xC7B6 0xD4CC # HANGUL SYLLABLE PHIEUPH-WI
-0xC7B7 0xD4D0 # HANGUL SYLLABLE PHIEUPH-WI-NIEUN
-0xC7B8 0xD4D4 # HANGUL SYLLABLE PHIEUPH-WI-RIEUL
-0xC7B9 0xD4DC # HANGUL SYLLABLE PHIEUPH-WI-MIEUM
-0xC7BA 0xD4DF # HANGUL SYLLABLE PHIEUPH-WI-SIOS
-0xC7BB 0xD4E8 # HANGUL SYLLABLE PHIEUPH-YU
-0xC7BC 0xD4EC # HANGUL SYLLABLE PHIEUPH-YU-NIEUN
-0xC7BD 0xD4F0 # HANGUL SYLLABLE PHIEUPH-YU-RIEUL
-0xC7BE 0xD4F8 # HANGUL SYLLABLE PHIEUPH-YU-MIEUM
-0xC7BF 0xD4FB # HANGUL SYLLABLE PHIEUPH-YU-SIOS
-0xC7C0 0xD4FD # HANGUL SYLLABLE PHIEUPH-YU-IEUNG
-0xC7C1 0xD504 # HANGUL SYLLABLE PHIEUPH-EU
-0xC7C2 0xD508 # HANGUL SYLLABLE PHIEUPH-EU-NIEUN
-0xC7C3 0xD50C # HANGUL SYLLABLE PHIEUPH-EU-RIEUL
-0xC7C4 0xD514 # HANGUL SYLLABLE PHIEUPH-EU-MIEUM
-0xC7C5 0xD515 # HANGUL SYLLABLE PHIEUPH-EU-PIEUP
-0xC7C6 0xD517 # HANGUL SYLLABLE PHIEUPH-EU-SIOS
-0xC7C7 0xD53C # HANGUL SYLLABLE PHIEUPH-I
-0xC7C8 0xD53D # HANGUL SYLLABLE PHIEUPH-I-KIYEOK
-0xC7C9 0xD540 # HANGUL SYLLABLE PHIEUPH-I-NIEUN
-0xC7CA 0xD544 # HANGUL SYLLABLE PHIEUPH-I-RIEUL
-0xC7CB 0xD54C # HANGUL SYLLABLE PHIEUPH-I-MIEUM
-0xC7CC 0xD54D # HANGUL SYLLABLE PHIEUPH-I-PIEUP
-0xC7CD 0xD54F # HANGUL SYLLABLE PHIEUPH-I-SIOS
-0xC7CE 0xD551 # HANGUL SYLLABLE PHIEUPH-I-IEUNG
-0xC7CF 0xD558 # HANGUL SYLLABLE HIEUH-A
-0xC7D0 0xD559 # HANGUL SYLLABLE HIEUH-A-KIYEOK
-0xC7D1 0xD55C # HANGUL SYLLABLE HIEUH-A-NIEUN
-0xC7D2 0xD560 # HANGUL SYLLABLE HIEUH-A-RIEUL
-0xC7D3 0xD565 # HANGUL SYLLABLE HIEUH-A-RIEULTHIEUTH
-0xC7D4 0xD568 # HANGUL SYLLABLE HIEUH-A-MIEUM
-0xC7D5 0xD569 # HANGUL SYLLABLE HIEUH-A-PIEUP
-0xC7D6 0xD56B # HANGUL SYLLABLE HIEUH-A-SIOS
-0xC7D7 0xD56D # HANGUL SYLLABLE HIEUH-A-IEUNG
-0xC7D8 0xD574 # HANGUL SYLLABLE HIEUH-AE
-0xC7D9 0xD575 # HANGUL SYLLABLE HIEUH-AE-KIYEOK
-0xC7DA 0xD578 # HANGUL SYLLABLE HIEUH-AE-NIEUN
-0xC7DB 0xD57C # HANGUL SYLLABLE HIEUH-AE-RIEUL
-0xC7DC 0xD584 # HANGUL SYLLABLE HIEUH-AE-MIEUM
-0xC7DD 0xD585 # HANGUL SYLLABLE HIEUH-AE-PIEUP
-0xC7DE 0xD587 # HANGUL SYLLABLE HIEUH-AE-SIOS
-0xC7DF 0xD588 # HANGUL SYLLABLE HIEUH-AE-SSANGSIOS
-0xC7E0 0xD589 # HANGUL SYLLABLE HIEUH-AE-IEUNG
-0xC7E1 0xD590 # HANGUL SYLLABLE HIEUH-YA
-0xC7E2 0xD5A5 # HANGUL SYLLABLE HIEUH-YA-IEUNG
-0xC7E3 0xD5C8 # HANGUL SYLLABLE HIEUH-EO
-0xC7E4 0xD5C9 # HANGUL SYLLABLE HIEUH-EO-KIYEOK
-0xC7E5 0xD5CC # HANGUL SYLLABLE HIEUH-EO-NIEUN
-0xC7E6 0xD5D0 # HANGUL SYLLABLE HIEUH-EO-RIEUL
-0xC7E7 0xD5D2 # HANGUL SYLLABLE HIEUH-EO-RIEULMIEUM
-0xC7E8 0xD5D8 # HANGUL SYLLABLE HIEUH-EO-MIEUM
-0xC7E9 0xD5D9 # HANGUL SYLLABLE HIEUH-EO-PIEUP
-0xC7EA 0xD5DB # HANGUL SYLLABLE HIEUH-EO-SIOS
-0xC7EB 0xD5DD # HANGUL SYLLABLE HIEUH-EO-IEUNG
-0xC7EC 0xD5E4 # HANGUL SYLLABLE HIEUH-E
-0xC7ED 0xD5E5 # HANGUL SYLLABLE HIEUH-E-KIYEOK
-0xC7EE 0xD5E8 # HANGUL SYLLABLE HIEUH-E-NIEUN
-0xC7EF 0xD5EC # HANGUL SYLLABLE HIEUH-E-RIEUL
-0xC7F0 0xD5F4 # HANGUL SYLLABLE HIEUH-E-MIEUM
-0xC7F1 0xD5F5 # HANGUL SYLLABLE HIEUH-E-PIEUP
-0xC7F2 0xD5F7 # HANGUL SYLLABLE HIEUH-E-SIOS
-0xC7F3 0xD5F9 # HANGUL SYLLABLE HIEUH-E-IEUNG
-0xC7F4 0xD600 # HANGUL SYLLABLE HIEUH-YEO
-0xC7F5 0xD601 # HANGUL SYLLABLE HIEUH-YEO-KIYEOK
-0xC7F6 0xD604 # HANGUL SYLLABLE HIEUH-YEO-NIEUN
-0xC7F7 0xD608 # HANGUL SYLLABLE HIEUH-YEO-RIEUL
-0xC7F8 0xD610 # HANGUL SYLLABLE HIEUH-YEO-MIEUM
-0xC7F9 0xD611 # HANGUL SYLLABLE HIEUH-YEO-PIEUP
-0xC7FA 0xD613 # HANGUL SYLLABLE HIEUH-YEO-SIOS
-0xC7FB 0xD614 # HANGUL SYLLABLE HIEUH-YEO-SSANGSIOS
-0xC7FC 0xD615 # HANGUL SYLLABLE HIEUH-YEO-IEUNG
-0xC7FD 0xD61C # HANGUL SYLLABLE HIEUH-YE
-0xC7FE 0xD620 # HANGUL SYLLABLE HIEUH-YE-NIEUN
-0xC8A1 0xD624 # HANGUL SYLLABLE HIEUH-YE-RIEUL
-0xC8A2 0xD62D # HANGUL SYLLABLE HIEUH-YE-PIEUP
-0xC8A3 0xD638 # HANGUL SYLLABLE HIEUH-O
-0xC8A4 0xD639 # HANGUL SYLLABLE HIEUH-O-KIYEOK
-0xC8A5 0xD63C # HANGUL SYLLABLE HIEUH-O-NIEUN
-0xC8A6 0xD640 # HANGUL SYLLABLE HIEUH-O-RIEUL
-0xC8A7 0xD645 # HANGUL SYLLABLE HIEUH-O-RIEULTHIEUTH
-0xC8A8 0xD648 # HANGUL SYLLABLE HIEUH-O-MIEUM
-0xC8A9 0xD649 # HANGUL SYLLABLE HIEUH-O-PIEUP
-0xC8AA 0xD64B # HANGUL SYLLABLE HIEUH-O-SIOS
-0xC8AB 0xD64D # HANGUL SYLLABLE HIEUH-O-IEUNG
-0xC8AC 0xD651 # HANGUL SYLLABLE HIEUH-O-THIEUTH
-0xC8AD 0xD654 # HANGUL SYLLABLE HIEUH-WA
-0xC8AE 0xD655 # HANGUL SYLLABLE HIEUH-WA-KIYEOK
-0xC8AF 0xD658 # HANGUL SYLLABLE HIEUH-WA-NIEUN
-0xC8B0 0xD65C # HANGUL SYLLABLE HIEUH-WA-RIEUL
-0xC8B1 0xD667 # HANGUL SYLLABLE HIEUH-WA-SIOS
-0xC8B2 0xD669 # HANGUL SYLLABLE HIEUH-WA-IEUNG
-0xC8B3 0xD670 # HANGUL SYLLABLE HIEUH-WAE
-0xC8B4 0xD671 # HANGUL SYLLABLE HIEUH-WAE-KIYEOK
-0xC8B5 0xD674 # HANGUL SYLLABLE HIEUH-WAE-NIEUN
-0xC8B6 0xD683 # HANGUL SYLLABLE HIEUH-WAE-SIOS
-0xC8B7 0xD685 # HANGUL SYLLABLE HIEUH-WAE-IEUNG
-0xC8B8 0xD68C # HANGUL SYLLABLE HIEUH-OE
-0xC8B9 0xD68D # HANGUL SYLLABLE HIEUH-OE-KIYEOK
-0xC8BA 0xD690 # HANGUL SYLLABLE HIEUH-OE-NIEUN
-0xC8BB 0xD694 # HANGUL SYLLABLE HIEUH-OE-RIEUL
-0xC8BC 0xD69D # HANGUL SYLLABLE HIEUH-OE-PIEUP
-0xC8BD 0xD69F # HANGUL SYLLABLE HIEUH-OE-SIOS
-0xC8BE 0xD6A1 # HANGUL SYLLABLE HIEUH-OE-IEUNG
-0xC8BF 0xD6A8 # HANGUL SYLLABLE HIEUH-YO
-0xC8C0 0xD6AC # HANGUL SYLLABLE HIEUH-YO-NIEUN
-0xC8C1 0xD6B0 # HANGUL SYLLABLE HIEUH-YO-RIEUL
-0xC8C2 0xD6B9 # HANGUL SYLLABLE HIEUH-YO-PIEUP
-0xC8C3 0xD6BB # HANGUL SYLLABLE HIEUH-YO-SIOS
-0xC8C4 0xD6C4 # HANGUL SYLLABLE HIEUH-U
-0xC8C5 0xD6C5 # HANGUL SYLLABLE HIEUH-U-KIYEOK
-0xC8C6 0xD6C8 # HANGUL SYLLABLE HIEUH-U-NIEUN
-0xC8C7 0xD6CC # HANGUL SYLLABLE HIEUH-U-RIEUL
-0xC8C8 0xD6D1 # HANGUL SYLLABLE HIEUH-U-RIEULTHIEUTH
-0xC8C9 0xD6D4 # HANGUL SYLLABLE HIEUH-U-MIEUM
-0xC8CA 0xD6D7 # HANGUL SYLLABLE HIEUH-U-SIOS
-0xC8CB 0xD6D9 # HANGUL SYLLABLE HIEUH-U-IEUNG
-0xC8CC 0xD6E0 # HANGUL SYLLABLE HIEUH-WEO
-0xC8CD 0xD6E4 # HANGUL SYLLABLE HIEUH-WEO-NIEUN
-0xC8CE 0xD6E8 # HANGUL SYLLABLE HIEUH-WEO-RIEUL
-0xC8CF 0xD6F0 # HANGUL SYLLABLE HIEUH-WEO-MIEUM
-0xC8D0 0xD6F5 # HANGUL SYLLABLE HIEUH-WEO-IEUNG
-0xC8D1 0xD6FC # HANGUL SYLLABLE HIEUH-WE
-0xC8D2 0xD6FD # HANGUL SYLLABLE HIEUH-WE-KIYEOK
-0xC8D3 0xD700 # HANGUL SYLLABLE HIEUH-WE-NIEUN
-0xC8D4 0xD704 # HANGUL SYLLABLE HIEUH-WE-RIEUL
-0xC8D5 0xD711 # HANGUL SYLLABLE HIEUH-WE-IEUNG
-0xC8D6 0xD718 # HANGUL SYLLABLE HIEUH-WI
-0xC8D7 0xD719 # HANGUL SYLLABLE HIEUH-WI-KIYEOK
-0xC8D8 0xD71C # HANGUL SYLLABLE HIEUH-WI-NIEUN
-0xC8D9 0xD720 # HANGUL SYLLABLE HIEUH-WI-RIEUL
-0xC8DA 0xD728 # HANGUL SYLLABLE HIEUH-WI-MIEUM
-0xC8DB 0xD729 # HANGUL SYLLABLE HIEUH-WI-PIEUP
-0xC8DC 0xD72B # HANGUL SYLLABLE HIEUH-WI-SIOS
-0xC8DD 0xD72D # HANGUL SYLLABLE HIEUH-WI-IEUNG
-0xC8DE 0xD734 # HANGUL SYLLABLE HIEUH-YU
-0xC8DF 0xD735 # HANGUL SYLLABLE HIEUH-YU-KIYEOK
-0xC8E0 0xD738 # HANGUL SYLLABLE HIEUH-YU-NIEUN
-0xC8E1 0xD73C # HANGUL SYLLABLE HIEUH-YU-RIEUL
-0xC8E2 0xD744 # HANGUL SYLLABLE HIEUH-YU-MIEUM
-0xC8E3 0xD747 # HANGUL SYLLABLE HIEUH-YU-SIOS
-0xC8E4 0xD749 # HANGUL SYLLABLE HIEUH-YU-IEUNG
-0xC8E5 0xD750 # HANGUL SYLLABLE HIEUH-EU
-0xC8E6 0xD751 # HANGUL SYLLABLE HIEUH-EU-KIYEOK
-0xC8E7 0xD754 # HANGUL SYLLABLE HIEUH-EU-NIEUN
-0xC8E8 0xD756 # HANGUL SYLLABLE HIEUH-EU-NIEUNHIEUH
-0xC8E9 0xD757 # HANGUL SYLLABLE HIEUH-EU-TIKEUT
-0xC8EA 0xD758 # HANGUL SYLLABLE HIEUH-EU-RIEUL
-0xC8EB 0xD759 # HANGUL SYLLABLE HIEUH-EU-RIEULKIYEOK
-0xC8EC 0xD760 # HANGUL SYLLABLE HIEUH-EU-MIEUM
-0xC8ED 0xD761 # HANGUL SYLLABLE HIEUH-EU-PIEUP
-0xC8EE 0xD763 # HANGUL SYLLABLE HIEUH-EU-SIOS
-0xC8EF 0xD765 # HANGUL SYLLABLE HIEUH-EU-IEUNG
-0xC8F0 0xD769 # HANGUL SYLLABLE HIEUH-EU-THIEUTH
-0xC8F1 0xD76C # HANGUL SYLLABLE HIEUH-YI
-0xC8F2 0xD770 # HANGUL SYLLABLE HIEUH-YI-NIEUN
-0xC8F3 0xD774 # HANGUL SYLLABLE HIEUH-YI-RIEUL
-0xC8F4 0xD77C # HANGUL SYLLABLE HIEUH-YI-MIEUM
-0xC8F5 0xD77D # HANGUL SYLLABLE HIEUH-YI-PIEUP
-0xC8F6 0xD781 # HANGUL SYLLABLE HIEUH-YI-IEUNG
-0xC8F7 0xD788 # HANGUL SYLLABLE HIEUH-I
-0xC8F8 0xD789 # HANGUL SYLLABLE HIEUH-I-KIYEOK
-0xC8F9 0xD78C # HANGUL SYLLABLE HIEUH-I-NIEUN
-0xC8FA 0xD790 # HANGUL SYLLABLE HIEUH-I-RIEUL
-0xC8FB 0xD798 # HANGUL SYLLABLE HIEUH-I-MIEUM
-0xC8FC 0xD799 # HANGUL SYLLABLE HIEUH-I-PIEUP
-0xC8FD 0xD79B # HANGUL SYLLABLE HIEUH-I-SIOS
-0xC8FE 0xD79D # HANGUL SYLLABLE HIEUH-I-IEUNG
-0xCAA1 0x4F3D # <CJK>
-0xCAA2 0x4F73 # <CJK>
-0xCAA3 0x5047 # <CJK>
-0xCAA4 0x50F9 # <CJK>
-0xCAA5 0x52A0 # <CJK>
-0xCAA6 0x53EF # <CJK>
-0xCAA7 0x5475 # <CJK>
-0xCAA8 0x54E5 # <CJK>
-0xCAA9 0x5609 # <CJK>
-0xCAAA 0x5AC1 # <CJK>
-0xCAAB 0x5BB6 # <CJK>
-0xCAAC 0x6687 # <CJK>
-0xCAAD 0x67B6 # <CJK>
-0xCAAE 0x67B7 # <CJK>
-0xCAAF 0x67EF # <CJK>
-0xCAB0 0x6B4C # <CJK>
-0xCAB1 0x73C2 # <CJK>
-0xCAB2 0x75C2 # <CJK>
-0xCAB3 0x7A3C # <CJK>
-0xCAB4 0x82DB # <CJK>
-0xCAB5 0x8304 # <CJK>
-0xCAB6 0x8857 # <CJK>
-0xCAB7 0x8888 # <CJK>
-0xCAB8 0x8A36 # <CJK>
-0xCAB9 0x8CC8 # <CJK>
-0xCABA 0x8DCF # <CJK>
-0xCABB 0x8EFB # <CJK>
-0xCABC 0x8FE6 # <CJK>
-0xCABD 0x99D5 # <CJK>
-0xCABE 0x523B # <CJK>
-0xCABF 0x5374 # <CJK>
-0xCAC0 0x5404 # <CJK>
-0xCAC1 0x606A # <CJK>
-0xCAC2 0x6164 # <CJK>
-0xCAC3 0x6BBC # <CJK>
-0xCAC4 0x73CF # <CJK>
-0xCAC5 0x811A # <CJK>
-0xCAC6 0x89BA # <CJK>
-0xCAC7 0x89D2 # <CJK>
-0xCAC8 0x95A3 # <CJK>
-0xCAC9 0x4F83 # <CJK>
-0xCACA 0x520A # <CJK>
-0xCACB 0x58BE # <CJK>
-0xCACC 0x5978 # <CJK>
-0xCACD 0x59E6 # <CJK>
-0xCACE 0x5E72 # <CJK>
-0xCACF 0x5E79 # <CJK>
-0xCAD0 0x61C7 # <CJK>
-0xCAD1 0x63C0 # <CJK>
-0xCAD2 0x6746 # <CJK>
-0xCAD3 0x67EC # <CJK>
-0xCAD4 0x687F # <CJK>
-0xCAD5 0x6F97 # <CJK>
-0xCAD6 0x764E # <CJK>
-0xCAD7 0x770B # <CJK>
-0xCAD8 0x78F5 # <CJK>
-0xCAD9 0x7A08 # <CJK>
-0xCADA 0x7AFF # <CJK>
-0xCADB 0x7C21 # <CJK>
-0xCADC 0x809D # <CJK>
-0xCADD 0x826E # <CJK>
-0xCADE 0x8271 # <CJK>
-0xCADF 0x8AEB # <CJK>
-0xCAE0 0x9593 # <CJK>
-0xCAE1 0x4E6B # <CJK>
-0xCAE2 0x559D # <CJK>
-0xCAE3 0x66F7 # <CJK>
-0xCAE4 0x6E34 # <CJK>
-0xCAE5 0x78A3 # <CJK>
-0xCAE6 0x7AED # <CJK>
-0xCAE7 0x845B # <CJK>
-0xCAE8 0x8910 # <CJK>
-0xCAE9 0x874E # <CJK>
-0xCAEA 0x97A8 # <CJK>
-0xCAEB 0x52D8 # <CJK>
-0xCAEC 0x574E # <CJK>
-0xCAED 0x582A # <CJK>
-0xCAEE 0x5D4C # <CJK>
-0xCAEF 0x611F # <CJK>
-0xCAF0 0x61BE # <CJK>
-0xCAF1 0x6221 # <CJK>
-0xCAF2 0x6562 # <CJK>
-0xCAF3 0x67D1 # <CJK>
-0xCAF4 0x6A44 # <CJK>
-0xCAF5 0x6E1B # <CJK>
-0xCAF6 0x7518 # <CJK>
-0xCAF7 0x75B3 # <CJK>
-0xCAF8 0x76E3 # <CJK>
-0xCAF9 0x77B0 # <CJK>
-0xCAFA 0x7D3A # <CJK>
-0xCAFB 0x90AF # <CJK>
-0xCAFC 0x9451 # <CJK>
-0xCAFD 0x9452 # <CJK>
-0xCAFE 0x9F95 # <CJK>
-0xCBA1 0x5323 # <CJK>
-0xCBA2 0x5CAC # <CJK>
-0xCBA3 0x7532 # <CJK>
-0xCBA4 0x80DB # <CJK>
-0xCBA5 0x9240 # <CJK>
-0xCBA6 0x9598 # <CJK>
-0xCBA7 0x525B # <CJK>
-0xCBA8 0x5808 # <CJK>
-0xCBA9 0x59DC # <CJK>
-0xCBAA 0x5CA1 # <CJK>
-0xCBAB 0x5D17 # <CJK>
-0xCBAC 0x5EB7 # <CJK>
-0xCBAD 0x5F3A # <CJK>
-0xCBAE 0x5F4A # <CJK>
-0xCBAF 0x6177 # <CJK>
-0xCBB0 0x6C5F # <CJK>
-0xCBB1 0x757A # <CJK>
-0xCBB2 0x7586 # <CJK>
-0xCBB3 0x7CE0 # <CJK>
-0xCBB4 0x7D73 # <CJK>
-0xCBB5 0x7DB1 # <CJK>
-0xCBB6 0x7F8C # <CJK>
-0xCBB7 0x8154 # <CJK>
-0xCBB8 0x8221 # <CJK>
-0xCBB9 0x8591 # <CJK>
-0xCBBA 0x8941 # <CJK>
-0xCBBB 0x8B1B # <CJK>
-0xCBBC 0x92FC # <CJK>
-0xCBBD 0x964D # <CJK>
-0xCBBE 0x9C47 # <CJK>
-0xCBBF 0x4ECB # <CJK>
-0xCBC0 0x4EF7 # <CJK>
-0xCBC1 0x500B # <CJK>
-0xCBC2 0x51F1 # <CJK>
-0xCBC3 0x584F # <CJK>
-0xCBC4 0x6137 # <CJK>
-0xCBC5 0x613E # <CJK>
-0xCBC6 0x6168 # <CJK>
-0xCBC7 0x6539 # <CJK>
-0xCBC8 0x69EA # <CJK>
-0xCBC9 0x6F11 # <CJK>
-0xCBCA 0x75A5 # <CJK>
-0xCBCB 0x7686 # <CJK>
-0xCBCC 0x76D6 # <CJK>
-0xCBCD 0x7B87 # <CJK>
-0xCBCE 0x82A5 # <CJK>
-0xCBCF 0x84CB # <CJK>
-0xCBD0 0xF900 # <CJK>
-0xCBD1 0x93A7 # <CJK>
-0xCBD2 0x958B # <CJK>
-0xCBD3 0x5580 # <CJK>
-0xCBD4 0x5BA2 # <CJK>
-0xCBD5 0x5751 # <CJK>
-0xCBD6 0xF901 # <CJK>
-0xCBD7 0x7CB3 # <CJK>
-0xCBD8 0x7FB9 # <CJK>
-0xCBD9 0x91B5 # <CJK>
-0xCBDA 0x5028 # <CJK>
-0xCBDB 0x53BB # <CJK>
-0xCBDC 0x5C45 # <CJK>
-0xCBDD 0x5DE8 # <CJK>
-0xCBDE 0x62D2 # <CJK>
-0xCBDF 0x636E # <CJK>
-0xCBE0 0x64DA # <CJK>
-0xCBE1 0x64E7 # <CJK>
-0xCBE2 0x6E20 # <CJK>
-0xCBE3 0x70AC # <CJK>
-0xCBE4 0x795B # <CJK>
-0xCBE5 0x8DDD # <CJK>
-0xCBE6 0x8E1E # <CJK>
-0xCBE7 0xF902 # <CJK>
-0xCBE8 0x907D # <CJK>
-0xCBE9 0x9245 # <CJK>
-0xCBEA 0x92F8 # <CJK>
-0xCBEB 0x4E7E # <CJK>
-0xCBEC 0x4EF6 # <CJK>
-0xCBED 0x5065 # <CJK>
-0xCBEE 0x5DFE # <CJK>
-0xCBEF 0x5EFA # <CJK>
-0xCBF0 0x6106 # <CJK>
-0xCBF1 0x6957 # <CJK>
-0xCBF2 0x8171 # <CJK>
-0xCBF3 0x8654 # <CJK>
-0xCBF4 0x8E47 # <CJK>
-0xCBF5 0x9375 # <CJK>
-0xCBF6 0x9A2B # <CJK>
-0xCBF7 0x4E5E # <CJK>
-0xCBF8 0x5091 # <CJK>
-0xCBF9 0x6770 # <CJK>
-0xCBFA 0x6840 # <CJK>
-0xCBFB 0x5109 # <CJK>
-0xCBFC 0x528D # <CJK>
-0xCBFD 0x5292 # <CJK>
-0xCBFE 0x6AA2 # <CJK>
-0xCCA1 0x77BC # <CJK>
-0xCCA2 0x9210 # <CJK>
-0xCCA3 0x9ED4 # <CJK>
-0xCCA4 0x52AB # <CJK>
-0xCCA5 0x602F # <CJK>
-0xCCA6 0x8FF2 # <CJK>
-0xCCA7 0x5048 # <CJK>
-0xCCA8 0x61A9 # <CJK>
-0xCCA9 0x63ED # <CJK>
-0xCCAA 0x64CA # <CJK>
-0xCCAB 0x683C # <CJK>
-0xCCAC 0x6A84 # <CJK>
-0xCCAD 0x6FC0 # <CJK>
-0xCCAE 0x8188 # <CJK>
-0xCCAF 0x89A1 # <CJK>
-0xCCB0 0x9694 # <CJK>
-0xCCB1 0x5805 # <CJK>
-0xCCB2 0x727D # <CJK>
-0xCCB3 0x72AC # <CJK>
-0xCCB4 0x7504 # <CJK>
-0xCCB5 0x7D79 # <CJK>
-0xCCB6 0x7E6D # <CJK>
-0xCCB7 0x80A9 # <CJK>
-0xCCB8 0x898B # <CJK>
-0xCCB9 0x8B74 # <CJK>
-0xCCBA 0x9063 # <CJK>
-0xCCBB 0x9D51 # <CJK>
-0xCCBC 0x6289 # <CJK>
-0xCCBD 0x6C7A # <CJK>
-0xCCBE 0x6F54 # <CJK>
-0xCCBF 0x7D50 # <CJK>
-0xCCC0 0x7F3A # <CJK>
-0xCCC1 0x8A23 # <CJK>
-0xCCC2 0x517C # <CJK>
-0xCCC3 0x614A # <CJK>
-0xCCC4 0x7B9D # <CJK>
-0xCCC5 0x8B19 # <CJK>
-0xCCC6 0x9257 # <CJK>
-0xCCC7 0x938C # <CJK>
-0xCCC8 0x4EAC # <CJK>
-0xCCC9 0x4FD3 # <CJK>
-0xCCCA 0x501E # <CJK>
-0xCCCB 0x50BE # <CJK>
-0xCCCC 0x5106 # <CJK>
-0xCCCD 0x52C1 # <CJK>
-0xCCCE 0x52CD # <CJK>
-0xCCCF 0x537F # <CJK>
-0xCCD0 0x5770 # <CJK>
-0xCCD1 0x5883 # <CJK>
-0xCCD2 0x5E9A # <CJK>
-0xCCD3 0x5F91 # <CJK>
-0xCCD4 0x6176 # <CJK>
-0xCCD5 0x61AC # <CJK>
-0xCCD6 0x64CE # <CJK>
-0xCCD7 0x656C # <CJK>
-0xCCD8 0x666F # <CJK>
-0xCCD9 0x66BB # <CJK>
-0xCCDA 0x66F4 # <CJK>
-0xCCDB 0x6897 # <CJK>
-0xCCDC 0x6D87 # <CJK>
-0xCCDD 0x7085 # <CJK>
-0xCCDE 0x70F1 # <CJK>
-0xCCDF 0x749F # <CJK>
-0xCCE0 0x74A5 # <CJK>
-0xCCE1 0x74CA # <CJK>
-0xCCE2 0x75D9 # <CJK>
-0xCCE3 0x786C # <CJK>
-0xCCE4 0x78EC # <CJK>
-0xCCE5 0x7ADF # <CJK>
-0xCCE6 0x7AF6 # <CJK>
-0xCCE7 0x7D45 # <CJK>
-0xCCE8 0x7D93 # <CJK>
-0xCCE9 0x8015 # <CJK>
-0xCCEA 0x803F # <CJK>
-0xCCEB 0x811B # <CJK>
-0xCCEC 0x8396 # <CJK>
-0xCCED 0x8B66 # <CJK>
-0xCCEE 0x8F15 # <CJK>
-0xCCEF 0x9015 # <CJK>
-0xCCF0 0x93E1 # <CJK>
-0xCCF1 0x9803 # <CJK>
-0xCCF2 0x9838 # <CJK>
-0xCCF3 0x9A5A # <CJK>
-0xCCF4 0x9BE8 # <CJK>
-0xCCF5 0x4FC2 # <CJK>
-0xCCF6 0x5553 # <CJK>
-0xCCF7 0x583A # <CJK>
-0xCCF8 0x5951 # <CJK>
-0xCCF9 0x5B63 # <CJK>
-0xCCFA 0x5C46 # <CJK>
-0xCCFB 0x60B8 # <CJK>
-0xCCFC 0x6212 # <CJK>
-0xCCFD 0x6842 # <CJK>
-0xCCFE 0x68B0 # <CJK>
-0xCDA1 0x68E8 # <CJK>
-0xCDA2 0x6EAA # <CJK>
-0xCDA3 0x754C # <CJK>
-0xCDA4 0x7678 # <CJK>
-0xCDA5 0x78CE # <CJK>
-0xCDA6 0x7A3D # <CJK>
-0xCDA7 0x7CFB # <CJK>
-0xCDA8 0x7E6B # <CJK>
-0xCDA9 0x7E7C # <CJK>
-0xCDAA 0x8A08 # <CJK>
-0xCDAB 0x8AA1 # <CJK>
-0xCDAC 0x8C3F # <CJK>
-0xCDAD 0x968E # <CJK>
-0xCDAE 0x9DC4 # <CJK>
-0xCDAF 0x53E4 # <CJK>
-0xCDB0 0x53E9 # <CJK>
-0xCDB1 0x544A # <CJK>
-0xCDB2 0x5471 # <CJK>
-0xCDB3 0x56FA # <CJK>
-0xCDB4 0x59D1 # <CJK>
-0xCDB5 0x5B64 # <CJK>
-0xCDB6 0x5C3B # <CJK>
-0xCDB7 0x5EAB # <CJK>
-0xCDB8 0x62F7 # <CJK>
-0xCDB9 0x6537 # <CJK>
-0xCDBA 0x6545 # <CJK>
-0xCDBB 0x6572 # <CJK>
-0xCDBC 0x66A0 # <CJK>
-0xCDBD 0x67AF # <CJK>
-0xCDBE 0x69C1 # <CJK>
-0xCDBF 0x6CBD # <CJK>
-0xCDC0 0x75FC # <CJK>
-0xCDC1 0x7690 # <CJK>
-0xCDC2 0x777E # <CJK>
-0xCDC3 0x7A3F # <CJK>
-0xCDC4 0x7F94 # <CJK>
-0xCDC5 0x8003 # <CJK>
-0xCDC6 0x80A1 # <CJK>
-0xCDC7 0x818F # <CJK>
-0xCDC8 0x82E6 # <CJK>
-0xCDC9 0x82FD # <CJK>
-0xCDCA 0x83F0 # <CJK>
-0xCDCB 0x85C1 # <CJK>
-0xCDCC 0x8831 # <CJK>
-0xCDCD 0x88B4 # <CJK>
-0xCDCE 0x8AA5 # <CJK>
-0xCDCF 0xF903 # <CJK>
-0xCDD0 0x8F9C # <CJK>
-0xCDD1 0x932E # <CJK>
-0xCDD2 0x96C7 # <CJK>
-0xCDD3 0x9867 # <CJK>
-0xCDD4 0x9AD8 # <CJK>
-0xCDD5 0x9F13 # <CJK>
-0xCDD6 0x54ED # <CJK>
-0xCDD7 0x659B # <CJK>
-0xCDD8 0x66F2 # <CJK>
-0xCDD9 0x688F # <CJK>
-0xCDDA 0x7A40 # <CJK>
-0xCDDB 0x8C37 # <CJK>
-0xCDDC 0x9D60 # <CJK>
-0xCDDD 0x56F0 # <CJK>
-0xCDDE 0x5764 # <CJK>
-0xCDDF 0x5D11 # <CJK>
-0xCDE0 0x6606 # <CJK>
-0xCDE1 0x68B1 # <CJK>
-0xCDE2 0x68CD # <CJK>
-0xCDE3 0x6EFE # <CJK>
-0xCDE4 0x7428 # <CJK>
-0xCDE5 0x889E # <CJK>
-0xCDE6 0x9BE4 # <CJK>
-0xCDE7 0x6C68 # <CJK>
-0xCDE8 0xF904 # <CJK>
-0xCDE9 0x9AA8 # <CJK>
-0xCDEA 0x4F9B # <CJK>
-0xCDEB 0x516C # <CJK>
-0xCDEC 0x5171 # <CJK>
-0xCDED 0x529F # <CJK>
-0xCDEE 0x5B54 # <CJK>
-0xCDEF 0x5DE5 # <CJK>
-0xCDF0 0x6050 # <CJK>
-0xCDF1 0x606D # <CJK>
-0xCDF2 0x62F1 # <CJK>
-0xCDF3 0x63A7 # <CJK>
-0xCDF4 0x653B # <CJK>
-0xCDF5 0x73D9 # <CJK>
-0xCDF6 0x7A7A # <CJK>
-0xCDF7 0x86A3 # <CJK>
-0xCDF8 0x8CA2 # <CJK>
-0xCDF9 0x978F # <CJK>
-0xCDFA 0x4E32 # <CJK>
-0xCDFB 0x5BE1 # <CJK>
-0xCDFC 0x6208 # <CJK>
-0xCDFD 0x679C # <CJK>
-0xCDFE 0x74DC # <CJK>
-0xCEA1 0x79D1 # <CJK>
-0xCEA2 0x83D3 # <CJK>
-0xCEA3 0x8A87 # <CJK>
-0xCEA4 0x8AB2 # <CJK>
-0xCEA5 0x8DE8 # <CJK>
-0xCEA6 0x904E # <CJK>
-0xCEA7 0x934B # <CJK>
-0xCEA8 0x9846 # <CJK>
-0xCEA9 0x5ED3 # <CJK>
-0xCEAA 0x69E8 # <CJK>
-0xCEAB 0x85FF # <CJK>
-0xCEAC 0x90ED # <CJK>
-0xCEAD 0xF905 # <CJK>
-0xCEAE 0x51A0 # <CJK>
-0xCEAF 0x5B98 # <CJK>
-0xCEB0 0x5BEC # <CJK>
-0xCEB1 0x6163 # <CJK>
-0xCEB2 0x68FA # <CJK>
-0xCEB3 0x6B3E # <CJK>
-0xCEB4 0x704C # <CJK>
-0xCEB5 0x742F # <CJK>
-0xCEB6 0x74D8 # <CJK>
-0xCEB7 0x7BA1 # <CJK>
-0xCEB8 0x7F50 # <CJK>
-0xCEB9 0x83C5 # <CJK>
-0xCEBA 0x89C0 # <CJK>
-0xCEBB 0x8CAB # <CJK>
-0xCEBC 0x95DC # <CJK>
-0xCEBD 0x9928 # <CJK>
-0xCEBE 0x522E # <CJK>
-0xCEBF 0x605D # <CJK>
-0xCEC0 0x62EC # <CJK>
-0xCEC1 0x9002 # <CJK>
-0xCEC2 0x4F8A # <CJK>
-0xCEC3 0x5149 # <CJK>
-0xCEC4 0x5321 # <CJK>
-0xCEC5 0x58D9 # <CJK>
-0xCEC6 0x5EE3 # <CJK>
-0xCEC7 0x66E0 # <CJK>
-0xCEC8 0x6D38 # <CJK>
-0xCEC9 0x709A # <CJK>
-0xCECA 0x72C2 # <CJK>
-0xCECB 0x73D6 # <CJK>
-0xCECC 0x7B50 # <CJK>
-0xCECD 0x80F1 # <CJK>
-0xCECE 0x945B # <CJK>
-0xCECF 0x5366 # <CJK>
-0xCED0 0x639B # <CJK>
-0xCED1 0x7F6B # <CJK>
-0xCED2 0x4E56 # <CJK>
-0xCED3 0x5080 # <CJK>
-0xCED4 0x584A # <CJK>
-0xCED5 0x58DE # <CJK>
-0xCED6 0x602A # <CJK>
-0xCED7 0x6127 # <CJK>
-0xCED8 0x62D0 # <CJK>
-0xCED9 0x69D0 # <CJK>
-0xCEDA 0x9B41 # <CJK>
-0xCEDB 0x5B8F # <CJK>
-0xCEDC 0x7D18 # <CJK>
-0xCEDD 0x80B1 # <CJK>
-0xCEDE 0x8F5F # <CJK>
-0xCEDF 0x4EA4 # <CJK>
-0xCEE0 0x50D1 # <CJK>
-0xCEE1 0x54AC # <CJK>
-0xCEE2 0x55AC # <CJK>
-0xCEE3 0x5B0C # <CJK>
-0xCEE4 0x5DA0 # <CJK>
-0xCEE5 0x5DE7 # <CJK>
-0xCEE6 0x652A # <CJK>
-0xCEE7 0x654E # <CJK>
-0xCEE8 0x6821 # <CJK>
-0xCEE9 0x6A4B # <CJK>
-0xCEEA 0x72E1 # <CJK>
-0xCEEB 0x768E # <CJK>
-0xCEEC 0x77EF # <CJK>
-0xCEED 0x7D5E # <CJK>
-0xCEEE 0x7FF9 # <CJK>
-0xCEEF 0x81A0 # <CJK>
-0xCEF0 0x854E # <CJK>
-0xCEF1 0x86DF # <CJK>
-0xCEF2 0x8F03 # <CJK>
-0xCEF3 0x8F4E # <CJK>
-0xCEF4 0x90CA # <CJK>
-0xCEF5 0x9903 # <CJK>
-0xCEF6 0x9A55 # <CJK>
-0xCEF7 0x9BAB # <CJK>
-0xCEF8 0x4E18 # <CJK>
-0xCEF9 0x4E45 # <CJK>
-0xCEFA 0x4E5D # <CJK>
-0xCEFB 0x4EC7 # <CJK>
-0xCEFC 0x4FF1 # <CJK>
-0xCEFD 0x5177 # <CJK>
-0xCEFE 0x52FE # <CJK>
-0xCFA1 0x5340 # <CJK>
-0xCFA2 0x53E3 # <CJK>
-0xCFA3 0x53E5 # <CJK>
-0xCFA4 0x548E # <CJK>
-0xCFA5 0x5614 # <CJK>
-0xCFA6 0x5775 # <CJK>
-0xCFA7 0x57A2 # <CJK>
-0xCFA8 0x5BC7 # <CJK>
-0xCFA9 0x5D87 # <CJK>
-0xCFAA 0x5ED0 # <CJK>
-0xCFAB 0x61FC # <CJK>
-0xCFAC 0x62D8 # <CJK>
-0xCFAD 0x6551 # <CJK>
-0xCFAE 0x67B8 # <CJK>
-0xCFAF 0x67E9 # <CJK>
-0xCFB0 0x69CB # <CJK>
-0xCFB1 0x6B50 # <CJK>
-0xCFB2 0x6BC6 # <CJK>
-0xCFB3 0x6BEC # <CJK>
-0xCFB4 0x6C42 # <CJK>
-0xCFB5 0x6E9D # <CJK>
-0xCFB6 0x7078 # <CJK>
-0xCFB7 0x72D7 # <CJK>
-0xCFB8 0x7396 # <CJK>
-0xCFB9 0x7403 # <CJK>
-0xCFBA 0x77BF # <CJK>
-0xCFBB 0x77E9 # <CJK>
-0xCFBC 0x7A76 # <CJK>
-0xCFBD 0x7D7F # <CJK>
-0xCFBE 0x8009 # <CJK>
-0xCFBF 0x81FC # <CJK>
-0xCFC0 0x8205 # <CJK>
-0xCFC1 0x820A # <CJK>
-0xCFC2 0x82DF # <CJK>
-0xCFC3 0x8862 # <CJK>
-0xCFC4 0x8B33 # <CJK>
-0xCFC5 0x8CFC # <CJK>
-0xCFC6 0x8EC0 # <CJK>
-0xCFC7 0x9011 # <CJK>
-0xCFC8 0x90B1 # <CJK>
-0xCFC9 0x9264 # <CJK>
-0xCFCA 0x92B6 # <CJK>
-0xCFCB 0x99D2 # <CJK>
-0xCFCC 0x9A45 # <CJK>
-0xCFCD 0x9CE9 # <CJK>
-0xCFCE 0x9DD7 # <CJK>
-0xCFCF 0x9F9C # <CJK>
-0xCFD0 0x570B # <CJK>
-0xCFD1 0x5C40 # <CJK>
-0xCFD2 0x83CA # <CJK>
-0xCFD3 0x97A0 # <CJK>
-0xCFD4 0x97AB # <CJK>
-0xCFD5 0x9EB4 # <CJK>
-0xCFD6 0x541B # <CJK>
-0xCFD7 0x7A98 # <CJK>
-0xCFD8 0x7FA4 # <CJK>
-0xCFD9 0x88D9 # <CJK>
-0xCFDA 0x8ECD # <CJK>
-0xCFDB 0x90E1 # <CJK>
-0xCFDC 0x5800 # <CJK>
-0xCFDD 0x5C48 # <CJK>
-0xCFDE 0x6398 # <CJK>
-0xCFDF 0x7A9F # <CJK>
-0xCFE0 0x5BAE # <CJK>
-0xCFE1 0x5F13 # <CJK>
-0xCFE2 0x7A79 # <CJK>
-0xCFE3 0x7AAE # <CJK>
-0xCFE4 0x828E # <CJK>
-0xCFE5 0x8EAC # <CJK>
-0xCFE6 0x5026 # <CJK>
-0xCFE7 0x5238 # <CJK>
-0xCFE8 0x52F8 # <CJK>
-0xCFE9 0x5377 # <CJK>
-0xCFEA 0x5708 # <CJK>
-0xCFEB 0x62F3 # <CJK>
-0xCFEC 0x6372 # <CJK>
-0xCFED 0x6B0A # <CJK>
-0xCFEE 0x6DC3 # <CJK>
-0xCFEF 0x7737 # <CJK>
-0xCFF0 0x53A5 # <CJK>
-0xCFF1 0x7357 # <CJK>
-0xCFF2 0x8568 # <CJK>
-0xCFF3 0x8E76 # <CJK>
-0xCFF4 0x95D5 # <CJK>
-0xCFF5 0x673A # <CJK>
-0xCFF6 0x6AC3 # <CJK>
-0xCFF7 0x6F70 # <CJK>
-0xCFF8 0x8A6D # <CJK>
-0xCFF9 0x8ECC # <CJK>
-0xCFFA 0x994B # <CJK>
-0xCFFB 0xF906 # <CJK>
-0xCFFC 0x6677 # <CJK>
-0xCFFD 0x6B78 # <CJK>
-0xCFFE 0x8CB4 # <CJK>
-0xD0A1 0x9B3C # <CJK>
-0xD0A2 0xF907 # <CJK>
-0xD0A3 0x53EB # <CJK>
-0xD0A4 0x572D # <CJK>
-0xD0A5 0x594E # <CJK>
-0xD0A6 0x63C6 # <CJK>
-0xD0A7 0x69FB # <CJK>
-0xD0A8 0x73EA # <CJK>
-0xD0A9 0x7845 # <CJK>
-0xD0AA 0x7ABA # <CJK>
-0xD0AB 0x7AC5 # <CJK>
-0xD0AC 0x7CFE # <CJK>
-0xD0AD 0x8475 # <CJK>
-0xD0AE 0x898F # <CJK>
-0xD0AF 0x8D73 # <CJK>
-0xD0B0 0x9035 # <CJK>
-0xD0B1 0x95A8 # <CJK>
-0xD0B2 0x52FB # <CJK>
-0xD0B3 0x5747 # <CJK>
-0xD0B4 0x7547 # <CJK>
-0xD0B5 0x7B60 # <CJK>
-0xD0B6 0x83CC # <CJK>
-0xD0B7 0x921E # <CJK>
-0xD0B8 0xF908 # <CJK>
-0xD0B9 0x6A58 # <CJK>
-0xD0BA 0x514B # <CJK>
-0xD0BB 0x524B # <CJK>
-0xD0BC 0x5287 # <CJK>
-0xD0BD 0x621F # <CJK>
-0xD0BE 0x68D8 # <CJK>
-0xD0BF 0x6975 # <CJK>
-0xD0C0 0x9699 # <CJK>
-0xD0C1 0x50C5 # <CJK>
-0xD0C2 0x52A4 # <CJK>
-0xD0C3 0x52E4 # <CJK>
-0xD0C4 0x61C3 # <CJK>
-0xD0C5 0x65A4 # <CJK>
-0xD0C6 0x6839 # <CJK>
-0xD0C7 0x69FF # <CJK>
-0xD0C8 0x747E # <CJK>
-0xD0C9 0x7B4B # <CJK>
-0xD0CA 0x82B9 # <CJK>
-0xD0CB 0x83EB # <CJK>
-0xD0CC 0x89B2 # <CJK>
-0xD0CD 0x8B39 # <CJK>
-0xD0CE 0x8FD1 # <CJK>
-0xD0CF 0x9949 # <CJK>
-0xD0D0 0xF909 # <CJK>
-0xD0D1 0x4ECA # <CJK>
-0xD0D2 0x5997 # <CJK>
-0xD0D3 0x64D2 # <CJK>
-0xD0D4 0x6611 # <CJK>
-0xD0D5 0x6A8E # <CJK>
-0xD0D6 0x7434 # <CJK>
-0xD0D7 0x7981 # <CJK>
-0xD0D8 0x79BD # <CJK>
-0xD0D9 0x82A9 # <CJK>
-0xD0DA 0x887E # <CJK>
-0xD0DB 0x887F # <CJK>
-0xD0DC 0x895F # <CJK>
-0xD0DD 0xF90A # <CJK>
-0xD0DE 0x9326 # <CJK>
-0xD0DF 0x4F0B # <CJK>
-0xD0E0 0x53CA # <CJK>
-0xD0E1 0x6025 # <CJK>
-0xD0E2 0x6271 # <CJK>
-0xD0E3 0x6C72 # <CJK>
-0xD0E4 0x7D1A # <CJK>
-0xD0E5 0x7D66 # <CJK>
-0xD0E6 0x4E98 # <CJK>
-0xD0E7 0x5162 # <CJK>
-0xD0E8 0x77DC # <CJK>
-0xD0E9 0x80AF # <CJK>
-0xD0EA 0x4F01 # <CJK>
-0xD0EB 0x4F0E # <CJK>
-0xD0EC 0x5176 # <CJK>
-0xD0ED 0x5180 # <CJK>
-0xD0EE 0x55DC # <CJK>
-0xD0EF 0x5668 # <CJK>
-0xD0F0 0x573B # <CJK>
-0xD0F1 0x57FA # <CJK>
-0xD0F2 0x57FC # <CJK>
-0xD0F3 0x5914 # <CJK>
-0xD0F4 0x5947 # <CJK>
-0xD0F5 0x5993 # <CJK>
-0xD0F6 0x5BC4 # <CJK>
-0xD0F7 0x5C90 # <CJK>
-0xD0F8 0x5D0E # <CJK>
-0xD0F9 0x5DF1 # <CJK>
-0xD0FA 0x5E7E # <CJK>
-0xD0FB 0x5FCC # <CJK>
-0xD0FC 0x6280 # <CJK>
-0xD0FD 0x65D7 # <CJK>
-0xD0FE 0x65E3 # <CJK>
-0xD1A1 0x671E # <CJK>
-0xD1A2 0x671F # <CJK>
-0xD1A3 0x675E # <CJK>
-0xD1A4 0x68CB # <CJK>
-0xD1A5 0x68C4 # <CJK>
-0xD1A6 0x6A5F # <CJK>
-0xD1A7 0x6B3A # <CJK>
-0xD1A8 0x6C23 # <CJK>
-0xD1A9 0x6C7D # <CJK>
-0xD1AA 0x6C82 # <CJK>
-0xD1AB 0x6DC7 # <CJK>
-0xD1AC 0x7398 # <CJK>
-0xD1AD 0x7426 # <CJK>
-0xD1AE 0x742A # <CJK>
-0xD1AF 0x7482 # <CJK>
-0xD1B0 0x74A3 # <CJK>
-0xD1B1 0x7578 # <CJK>
-0xD1B2 0x757F # <CJK>
-0xD1B3 0x7881 # <CJK>
-0xD1B4 0x78EF # <CJK>
-0xD1B5 0x7941 # <CJK>
-0xD1B6 0x7947 # <CJK>
-0xD1B7 0x7948 # <CJK>
-0xD1B8 0x797A # <CJK>
-0xD1B9 0x7B95 # <CJK>
-0xD1BA 0x7D00 # <CJK>
-0xD1BB 0x7DBA # <CJK>
-0xD1BC 0x7F88 # <CJK>
-0xD1BD 0x8006 # <CJK>
-0xD1BE 0x802D # <CJK>
-0xD1BF 0x808C # <CJK>
-0xD1C0 0x8A18 # <CJK>
-0xD1C1 0x8B4F # <CJK>
-0xD1C2 0x8C48 # <CJK>
-0xD1C3 0x8D77 # <CJK>
-0xD1C4 0x9321 # <CJK>
-0xD1C5 0x9324 # <CJK>
-0xD1C6 0x98E2 # <CJK>
-0xD1C7 0x9951 # <CJK>
-0xD1C8 0x9A0E # <CJK>
-0xD1C9 0x9A0F # <CJK>
-0xD1CA 0x9A65 # <CJK>
-0xD1CB 0x9E92 # <CJK>
-0xD1CC 0x7DCA # <CJK>
-0xD1CD 0x4F76 # <CJK>
-0xD1CE 0x5409 # <CJK>
-0xD1CF 0x62EE # <CJK>
-0xD1D0 0x6854 # <CJK>
-0xD1D1 0x91D1 # <CJK>
-0xD1D2 0x55AB # <CJK>
-0xD1D3 0x513A # <CJK>
-0xD1D4 0xF90B # <CJK>
-0xD1D5 0xF90C # <CJK>
-0xD1D6 0x5A1C # <CJK>
-0xD1D7 0x61E6 # <CJK>
-0xD1D8 0xF90D # <CJK>
-0xD1D9 0x62CF # <CJK>
-0xD1DA 0x62FF # <CJK>
-0xD1DB 0xF90E # <CJK>
-0xD1DC 0xF90F # <CJK>
-0xD1DD 0xF910 # <CJK>
-0xD1DE 0xF911 # <CJK>
-0xD1DF 0xF912 # <CJK>
-0xD1E0 0xF913 # <CJK>
-0xD1E1 0x90A3 # <CJK>
-0xD1E2 0xF914 # <CJK>
-0xD1E3 0xF915 # <CJK>
-0xD1E4 0xF916 # <CJK>
-0xD1E5 0xF917 # <CJK>
-0xD1E6 0xF918 # <CJK>
-0xD1E7 0x8AFE # <CJK>
-0xD1E8 0xF919 # <CJK>
-0xD1E9 0xF91A # <CJK>
-0xD1EA 0xF91B # <CJK>
-0xD1EB 0xF91C # <CJK>
-0xD1EC 0x6696 # <CJK>
-0xD1ED 0xF91D # <CJK>
-0xD1EE 0x7156 # <CJK>
-0xD1EF 0xF91E # <CJK>
-0xD1F0 0xF91F # <CJK>
-0xD1F1 0x96E3 # <CJK>
-0xD1F2 0xF920 # <CJK>
-0xD1F3 0x634F # <CJK>
-0xD1F4 0x637A # <CJK>
-0xD1F5 0x5357 # <CJK>
-0xD1F6 0xF921 # <CJK>
-0xD1F7 0x678F # <CJK>
-0xD1F8 0x6960 # <CJK>
-0xD1F9 0x6E73 # <CJK>
-0xD1FA 0xF922 # <CJK>
-0xD1FB 0x7537 # <CJK>
-0xD1FC 0xF923 # <CJK>
-0xD1FD 0xF924 # <CJK>
-0xD1FE 0xF925 # <CJK>
-0xD2A1 0x7D0D # <CJK>
-0xD2A2 0xF926 # <CJK>
-0xD2A3 0xF927 # <CJK>
-0xD2A4 0x8872 # <CJK>
-0xD2A5 0x56CA # <CJK>
-0xD2A6 0x5A18 # <CJK>
-0xD2A7 0xF928 # <CJK>
-0xD2A8 0xF929 # <CJK>
-0xD2A9 0xF92A # <CJK>
-0xD2AA 0xF92B # <CJK>
-0xD2AB 0xF92C # <CJK>
-0xD2AC 0x4E43 # <CJK>
-0xD2AD 0xF92D # <CJK>
-0xD2AE 0x5167 # <CJK>
-0xD2AF 0x5948 # <CJK>
-0xD2B0 0x67F0 # <CJK>
-0xD2B1 0x8010 # <CJK>
-0xD2B2 0xF92E # <CJK>
-0xD2B3 0x5973 # <CJK>
-0xD2B4 0x5E74 # <CJK>
-0xD2B5 0x649A # <CJK>
-0xD2B6 0x79CA # <CJK>
-0xD2B7 0x5FF5 # <CJK>
-0xD2B8 0x606C # <CJK>
-0xD2B9 0x62C8 # <CJK>
-0xD2BA 0x637B # <CJK>
-0xD2BB 0x5BE7 # <CJK>
-0xD2BC 0x5BD7 # <CJK>
-0xD2BD 0x52AA # <CJK>
-0xD2BE 0xF92F # <CJK>
-0xD2BF 0x5974 # <CJK>
-0xD2C0 0x5F29 # <CJK>
-0xD2C1 0x6012 # <CJK>
-0xD2C2 0xF930 # <CJK>
-0xD2C3 0xF931 # <CJK>
-0xD2C4 0xF932 # <CJK>
-0xD2C5 0x7459 # <CJK>
-0xD2C6 0xF933 # <CJK>
-0xD2C7 0xF934 # <CJK>
-0xD2C8 0xF935 # <CJK>
-0xD2C9 0xF936 # <CJK>
-0xD2CA 0xF937 # <CJK>
-0xD2CB 0xF938 # <CJK>
-0xD2CC 0x99D1 # <CJK>
-0xD2CD 0xF939 # <CJK>
-0xD2CE 0xF93A # <CJK>
-0xD2CF 0xF93B # <CJK>
-0xD2D0 0xF93C # <CJK>
-0xD2D1 0xF93D # <CJK>
-0xD2D2 0xF93E # <CJK>
-0xD2D3 0xF93F # <CJK>
-0xD2D4 0xF940 # <CJK>
-0xD2D5 0xF941 # <CJK>
-0xD2D6 0xF942 # <CJK>
-0xD2D7 0xF943 # <CJK>
-0xD2D8 0x6FC3 # <CJK>
-0xD2D9 0xF944 # <CJK>
-0xD2DA 0xF945 # <CJK>
-0xD2DB 0x81BF # <CJK>
-0xD2DC 0x8FB2 # <CJK>
-0xD2DD 0x60F1 # <CJK>
-0xD2DE 0xF946 # <CJK>
-0xD2DF 0xF947 # <CJK>
-0xD2E0 0x8166 # <CJK>
-0xD2E1 0xF948 # <CJK>
-0xD2E2 0xF949 # <CJK>
-0xD2E3 0x5C3F # <CJK>
-0xD2E4 0xF94A # <CJK>
-0xD2E5 0xF94B # <CJK>
-0xD2E6 0xF94C # <CJK>
-0xD2E7 0xF94D # <CJK>
-0xD2E8 0xF94E # <CJK>
-0xD2E9 0xF94F # <CJK>
-0xD2EA 0xF950 # <CJK>
-0xD2EB 0xF951 # <CJK>
-0xD2EC 0x5AE9 # <CJK>
-0xD2ED 0x8A25 # <CJK>
-0xD2EE 0x677B # <CJK>
-0xD2EF 0x7D10 # <CJK>
-0xD2F0 0xF952 # <CJK>
-0xD2F1 0xF953 # <CJK>
-0xD2F2 0xF954 # <CJK>
-0xD2F3 0xF955 # <CJK>
-0xD2F4 0xF956 # <CJK>
-0xD2F5 0xF957 # <CJK>
-0xD2F6 0x80FD # <CJK>
-0xD2F7 0xF958 # <CJK>
-0xD2F8 0xF959 # <CJK>
-0xD2F9 0x5C3C # <CJK>
-0xD2FA 0x6CE5 # <CJK>
-0xD2FB 0x533F # <CJK>
-0xD2FC 0x6EBA # <CJK>
-0xD2FD 0x591A # <CJK>
-0xD2FE 0x8336 # <CJK>
-0xD3A1 0x4E39 # <CJK>
-0xD3A2 0x4EB6 # <CJK>
-0xD3A3 0x4F46 # <CJK>
-0xD3A4 0x55AE # <CJK>
-0xD3A5 0x5718 # <CJK>
-0xD3A6 0x58C7 # <CJK>
-0xD3A7 0x5F56 # <CJK>
-0xD3A8 0x65B7 # <CJK>
-0xD3A9 0x65E6 # <CJK>
-0xD3AA 0x6A80 # <CJK>
-0xD3AB 0x6BB5 # <CJK>
-0xD3AC 0x6E4D # <CJK>
-0xD3AD 0x77ED # <CJK>
-0xD3AE 0x7AEF # <CJK>
-0xD3AF 0x7C1E # <CJK>
-0xD3B0 0x7DDE # <CJK>
-0xD3B1 0x86CB # <CJK>
-0xD3B2 0x8892 # <CJK>
-0xD3B3 0x9132 # <CJK>
-0xD3B4 0x935B # <CJK>
-0xD3B5 0x64BB # <CJK>
-0xD3B6 0x6FBE # <CJK>
-0xD3B7 0x737A # <CJK>
-0xD3B8 0x75B8 # <CJK>
-0xD3B9 0x9054 # <CJK>
-0xD3BA 0x5556 # <CJK>
-0xD3BB 0x574D # <CJK>
-0xD3BC 0x61BA # <CJK>
-0xD3BD 0x64D4 # <CJK>
-0xD3BE 0x66C7 # <CJK>
-0xD3BF 0x6DE1 # <CJK>
-0xD3C0 0x6E5B # <CJK>
-0xD3C1 0x6F6D # <CJK>
-0xD3C2 0x6FB9 # <CJK>
-0xD3C3 0x75F0 # <CJK>
-0xD3C4 0x8043 # <CJK>
-0xD3C5 0x81BD # <CJK>
-0xD3C6 0x8541 # <CJK>
-0xD3C7 0x8983 # <CJK>
-0xD3C8 0x8AC7 # <CJK>
-0xD3C9 0x8B5A # <CJK>
-0xD3CA 0x931F # <CJK>
-0xD3CB 0x6C93 # <CJK>
-0xD3CC 0x7553 # <CJK>
-0xD3CD 0x7B54 # <CJK>
-0xD3CE 0x8E0F # <CJK>
-0xD3CF 0x905D # <CJK>
-0xD3D0 0x5510 # <CJK>
-0xD3D1 0x5802 # <CJK>
-0xD3D2 0x5858 # <CJK>
-0xD3D3 0x5E62 # <CJK>
-0xD3D4 0x6207 # <CJK>
-0xD3D5 0x649E # <CJK>
-0xD3D6 0x68E0 # <CJK>
-0xD3D7 0x7576 # <CJK>
-0xD3D8 0x7CD6 # <CJK>
-0xD3D9 0x87B3 # <CJK>
-0xD3DA 0x9EE8 # <CJK>
-0xD3DB 0x4EE3 # <CJK>
-0xD3DC 0x5788 # <CJK>
-0xD3DD 0x576E # <CJK>
-0xD3DE 0x5927 # <CJK>
-0xD3DF 0x5C0D # <CJK>
-0xD3E0 0x5CB1 # <CJK>
-0xD3E1 0x5E36 # <CJK>
-0xD3E2 0x5F85 # <CJK>
-0xD3E3 0x6234 # <CJK>
-0xD3E4 0x64E1 # <CJK>
-0xD3E5 0x73B3 # <CJK>
-0xD3E6 0x81FA # <CJK>
-0xD3E7 0x888B # <CJK>
-0xD3E8 0x8CB8 # <CJK>
-0xD3E9 0x968A # <CJK>
-0xD3EA 0x9EDB # <CJK>
-0xD3EB 0x5B85 # <CJK>
-0xD3EC 0x5FB7 # <CJK>
-0xD3ED 0x60B3 # <CJK>
-0xD3EE 0x5012 # <CJK>
-0xD3EF 0x5200 # <CJK>
-0xD3F0 0x5230 # <CJK>
-0xD3F1 0x5716 # <CJK>
-0xD3F2 0x5835 # <CJK>
-0xD3F3 0x5857 # <CJK>
-0xD3F4 0x5C0E # <CJK>
-0xD3F5 0x5C60 # <CJK>
-0xD3F6 0x5CF6 # <CJK>
-0xD3F7 0x5D8B # <CJK>
-0xD3F8 0x5EA6 # <CJK>
-0xD3F9 0x5F92 # <CJK>
-0xD3FA 0x60BC # <CJK>
-0xD3FB 0x6311 # <CJK>
-0xD3FC 0x6389 # <CJK>
-0xD3FD 0x6417 # <CJK>
-0xD3FE 0x6843 # <CJK>
-0xD4A1 0x68F9 # <CJK>
-0xD4A2 0x6AC2 # <CJK>
-0xD4A3 0x6DD8 # <CJK>
-0xD4A4 0x6E21 # <CJK>
-0xD4A5 0x6ED4 # <CJK>
-0xD4A6 0x6FE4 # <CJK>
-0xD4A7 0x71FE # <CJK>
-0xD4A8 0x76DC # <CJK>
-0xD4A9 0x7779 # <CJK>
-0xD4AA 0x79B1 # <CJK>
-0xD4AB 0x7A3B # <CJK>
-0xD4AC 0x8404 # <CJK>
-0xD4AD 0x89A9 # <CJK>
-0xD4AE 0x8CED # <CJK>
-0xD4AF 0x8DF3 # <CJK>
-0xD4B0 0x8E48 # <CJK>
-0xD4B1 0x9003 # <CJK>
-0xD4B2 0x9014 # <CJK>
-0xD4B3 0x9053 # <CJK>
-0xD4B4 0x90FD # <CJK>
-0xD4B5 0x934D # <CJK>
-0xD4B6 0x9676 # <CJK>
-0xD4B7 0x97DC # <CJK>
-0xD4B8 0x6BD2 # <CJK>
-0xD4B9 0x7006 # <CJK>
-0xD4BA 0x7258 # <CJK>
-0xD4BB 0x72A2 # <CJK>
-0xD4BC 0x7368 # <CJK>
-0xD4BD 0x7763 # <CJK>
-0xD4BE 0x79BF # <CJK>
-0xD4BF 0x7BE4 # <CJK>
-0xD4C0 0x7E9B # <CJK>
-0xD4C1 0x8B80 # <CJK>
-0xD4C2 0x58A9 # <CJK>
-0xD4C3 0x60C7 # <CJK>
-0xD4C4 0x6566 # <CJK>
-0xD4C5 0x65FD # <CJK>
-0xD4C6 0x66BE # <CJK>
-0xD4C7 0x6C8C # <CJK>
-0xD4C8 0x711E # <CJK>
-0xD4C9 0x71C9 # <CJK>
-0xD4CA 0x8C5A # <CJK>
-0xD4CB 0x9813 # <CJK>
-0xD4CC 0x4E6D # <CJK>
-0xD4CD 0x7A81 # <CJK>
-0xD4CE 0x4EDD # <CJK>
-0xD4CF 0x51AC # <CJK>
-0xD4D0 0x51CD # <CJK>
-0xD4D1 0x52D5 # <CJK>
-0xD4D2 0x540C # <CJK>
-0xD4D3 0x61A7 # <CJK>
-0xD4D4 0x6771 # <CJK>
-0xD4D5 0x6850 # <CJK>
-0xD4D6 0x68DF # <CJK>
-0xD4D7 0x6D1E # <CJK>
-0xD4D8 0x6F7C # <CJK>
-0xD4D9 0x75BC # <CJK>
-0xD4DA 0x77B3 # <CJK>
-0xD4DB 0x7AE5 # <CJK>
-0xD4DC 0x80F4 # <CJK>
-0xD4DD 0x8463 # <CJK>
-0xD4DE 0x9285 # <CJK>
-0xD4DF 0x515C # <CJK>
-0xD4E0 0x6597 # <CJK>
-0xD4E1 0x675C # <CJK>
-0xD4E2 0x6793 # <CJK>
-0xD4E3 0x75D8 # <CJK>
-0xD4E4 0x7AC7 # <CJK>
-0xD4E5 0x8373 # <CJK>
-0xD4E6 0xF95A # <CJK>
-0xD4E7 0x8C46 # <CJK>
-0xD4E8 0x9017 # <CJK>
-0xD4E9 0x982D # <CJK>
-0xD4EA 0x5C6F # <CJK>
-0xD4EB 0x81C0 # <CJK>
-0xD4EC 0x829A # <CJK>
-0xD4ED 0x9041 # <CJK>
-0xD4EE 0x906F # <CJK>
-0xD4EF 0x920D # <CJK>
-0xD4F0 0x5F97 # <CJK>
-0xD4F1 0x5D9D # <CJK>
-0xD4F2 0x6A59 # <CJK>
-0xD4F3 0x71C8 # <CJK>
-0xD4F4 0x767B # <CJK>
-0xD4F5 0x7B49 # <CJK>
-0xD4F6 0x85E4 # <CJK>
-0xD4F7 0x8B04 # <CJK>
-0xD4F8 0x9127 # <CJK>
-0xD4F9 0x9A30 # <CJK>
-0xD4FA 0x5587 # <CJK>
-0xD4FB 0x61F6 # <CJK>
-0xD4FC 0xF95B # <CJK>
-0xD4FD 0x7669 # <CJK>
-0xD4FE 0x7F85 # <CJK>
-0xD5A1 0x863F # <CJK>
-0xD5A2 0x87BA # <CJK>
-0xD5A3 0x88F8 # <CJK>
-0xD5A4 0x908F # <CJK>
-0xD5A5 0xF95C # <CJK>
-0xD5A6 0x6D1B # <CJK>
-0xD5A7 0x70D9 # <CJK>
-0xD5A8 0x73DE # <CJK>
-0xD5A9 0x7D61 # <CJK>
-0xD5AA 0x843D # <CJK>
-0xD5AB 0xF95D # <CJK>
-0xD5AC 0x916A # <CJK>
-0xD5AD 0x99F1 # <CJK>
-0xD5AE 0xF95E # <CJK>
-0xD5AF 0x4E82 # <CJK>
-0xD5B0 0x5375 # <CJK>
-0xD5B1 0x6B04 # <CJK>
-0xD5B2 0x6B12 # <CJK>
-0xD5B3 0x703E # <CJK>
-0xD5B4 0x721B # <CJK>
-0xD5B5 0x862D # <CJK>
-0xD5B6 0x9E1E # <CJK>
-0xD5B7 0x524C # <CJK>
-0xD5B8 0x8FA3 # <CJK>
-0xD5B9 0x5D50 # <CJK>
-0xD5BA 0x64E5 # <CJK>
-0xD5BB 0x652C # <CJK>
-0xD5BC 0x6B16 # <CJK>
-0xD5BD 0x6FEB # <CJK>
-0xD5BE 0x7C43 # <CJK>
-0xD5BF 0x7E9C # <CJK>
-0xD5C0 0x85CD # <CJK>
-0xD5C1 0x8964 # <CJK>
-0xD5C2 0x89BD # <CJK>
-0xD5C3 0x62C9 # <CJK>
-0xD5C4 0x81D8 # <CJK>
-0xD5C5 0x881F # <CJK>
-0xD5C6 0x5ECA # <CJK>
-0xD5C7 0x6717 # <CJK>
-0xD5C8 0x6D6A # <CJK>
-0xD5C9 0x72FC # <CJK>
-0xD5CA 0x7405 # <CJK>
-0xD5CB 0x746F # <CJK>
-0xD5CC 0x8782 # <CJK>
-0xD5CD 0x90DE # <CJK>
-0xD5CE 0x4F86 # <CJK>
-0xD5CF 0x5D0D # <CJK>
-0xD5D0 0x5FA0 # <CJK>
-0xD5D1 0x840A # <CJK>
-0xD5D2 0x51B7 # <CJK>
-0xD5D3 0x63A0 # <CJK>
-0xD5D4 0x7565 # <CJK>
-0xD5D5 0x4EAE # <CJK>
-0xD5D6 0x5006 # <CJK>
-0xD5D7 0x5169 # <CJK>
-0xD5D8 0x51C9 # <CJK>
-0xD5D9 0x6881 # <CJK>
-0xD5DA 0x6A11 # <CJK>
-0xD5DB 0x7CAE # <CJK>
-0xD5DC 0x7CB1 # <CJK>
-0xD5DD 0x7CE7 # <CJK>
-0xD5DE 0x826F # <CJK>
-0xD5DF 0x8AD2 # <CJK>
-0xD5E0 0x8F1B # <CJK>
-0xD5E1 0x91CF # <CJK>
-0xD5E2 0x4FB6 # <CJK>
-0xD5E3 0x5137 # <CJK>
-0xD5E4 0x52F5 # <CJK>
-0xD5E5 0x5442 # <CJK>
-0xD5E6 0x5EEC # <CJK>
-0xD5E7 0x616E # <CJK>
-0xD5E8 0x623E # <CJK>
-0xD5E9 0x65C5 # <CJK>
-0xD5EA 0x6ADA # <CJK>
-0xD5EB 0x6FFE # <CJK>
-0xD5EC 0x792A # <CJK>
-0xD5ED 0x85DC # <CJK>
-0xD5EE 0x8823 # <CJK>
-0xD5EF 0x95AD # <CJK>
-0xD5F0 0x9A62 # <CJK>
-0xD5F1 0x9A6A # <CJK>
-0xD5F2 0x9E97 # <CJK>
-0xD5F3 0x9ECE # <CJK>
-0xD5F4 0x529B # <CJK>
-0xD5F5 0x66C6 # <CJK>
-0xD5F6 0x6B77 # <CJK>
-0xD5F7 0x701D # <CJK>
-0xD5F8 0x792B # <CJK>
-0xD5F9 0x8F62 # <CJK>
-0xD5FA 0x9742 # <CJK>
-0xD5FB 0x6190 # <CJK>
-0xD5FC 0x6200 # <CJK>
-0xD5FD 0x6523 # <CJK>
-0xD5FE 0x6F23 # <CJK>
-0xD6A1 0x7149 # <CJK>
-0xD6A2 0x7489 # <CJK>
-0xD6A3 0x7DF4 # <CJK>
-0xD6A4 0x806F # <CJK>
-0xD6A5 0x84EE # <CJK>
-0xD6A6 0x8F26 # <CJK>
-0xD6A7 0x9023 # <CJK>
-0xD6A8 0x934A # <CJK>
-0xD6A9 0x51BD # <CJK>
-0xD6AA 0x5217 # <CJK>
-0xD6AB 0x52A3 # <CJK>
-0xD6AC 0x6D0C # <CJK>
-0xD6AD 0x70C8 # <CJK>
-0xD6AE 0x88C2 # <CJK>
-0xD6AF 0x5EC9 # <CJK>
-0xD6B0 0x6582 # <CJK>
-0xD6B1 0x6BAE # <CJK>
-0xD6B2 0x6FC2 # <CJK>
-0xD6B3 0x7C3E # <CJK>
-0xD6B4 0x7375 # <CJK>
-0xD6B5 0x4EE4 # <CJK>
-0xD6B6 0x4F36 # <CJK>
-0xD6B7 0x56F9 # <CJK>
-0xD6B8 0xF95F # <CJK>
-0xD6B9 0x5CBA # <CJK>
-0xD6BA 0x5DBA # <CJK>
-0xD6BB 0x601C # <CJK>
-0xD6BC 0x73B2 # <CJK>
-0xD6BD 0x7B2D # <CJK>
-0xD6BE 0x7F9A # <CJK>
-0xD6BF 0x7FCE # <CJK>
-0xD6C0 0x8046 # <CJK>
-0xD6C1 0x901E # <CJK>
-0xD6C2 0x9234 # <CJK>
-0xD6C3 0x96F6 # <CJK>
-0xD6C4 0x9748 # <CJK>
-0xD6C5 0x9818 # <CJK>
-0xD6C6 0x9F61 # <CJK>
-0xD6C7 0x4F8B # <CJK>
-0xD6C8 0x6FA7 # <CJK>
-0xD6C9 0x79AE # <CJK>
-0xD6CA 0x91B4 # <CJK>
-0xD6CB 0x96B7 # <CJK>
-0xD6CC 0x52DE # <CJK>
-0xD6CD 0xF960 # <CJK>
-0xD6CE 0x6488 # <CJK>
-0xD6CF 0x64C4 # <CJK>
-0xD6D0 0x6AD3 # <CJK>
-0xD6D1 0x6F5E # <CJK>
-0xD6D2 0x7018 # <CJK>
-0xD6D3 0x7210 # <CJK>
-0xD6D4 0x76E7 # <CJK>
-0xD6D5 0x8001 # <CJK>
-0xD6D6 0x8606 # <CJK>
-0xD6D7 0x865C # <CJK>
-0xD6D8 0x8DEF # <CJK>
-0xD6D9 0x8F05 # <CJK>
-0xD6DA 0x9732 # <CJK>
-0xD6DB 0x9B6F # <CJK>
-0xD6DC 0x9DFA # <CJK>
-0xD6DD 0x9E75 # <CJK>
-0xD6DE 0x788C # <CJK>
-0xD6DF 0x797F # <CJK>
-0xD6E0 0x7DA0 # <CJK>
-0xD6E1 0x83C9 # <CJK>
-0xD6E2 0x9304 # <CJK>
-0xD6E3 0x9E7F # <CJK>
-0xD6E4 0x9E93 # <CJK>
-0xD6E5 0x8AD6 # <CJK>
-0xD6E6 0x58DF # <CJK>
-0xD6E7 0x5F04 # <CJK>
-0xD6E8 0x6727 # <CJK>
-0xD6E9 0x7027 # <CJK>
-0xD6EA 0x74CF # <CJK>
-0xD6EB 0x7C60 # <CJK>
-0xD6EC 0x807E # <CJK>
-0xD6ED 0x5121 # <CJK>
-0xD6EE 0x7028 # <CJK>
-0xD6EF 0x7262 # <CJK>
-0xD6F0 0x78CA # <CJK>
-0xD6F1 0x8CC2 # <CJK>
-0xD6F2 0x8CDA # <CJK>
-0xD6F3 0x8CF4 # <CJK>
-0xD6F4 0x96F7 # <CJK>
-0xD6F5 0x4E86 # <CJK>
-0xD6F6 0x50DA # <CJK>
-0xD6F7 0x5BEE # <CJK>
-0xD6F8 0x5ED6 # <CJK>
-0xD6F9 0x6599 # <CJK>
-0xD6FA 0x71CE # <CJK>
-0xD6FB 0x7642 # <CJK>
-0xD6FC 0x77AD # <CJK>
-0xD6FD 0x804A # <CJK>
-0xD6FE 0x84FC # <CJK>
-0xD7A1 0x907C # <CJK>
-0xD7A2 0x9B27 # <CJK>
-0xD7A3 0x9F8D # <CJK>
-0xD7A4 0x58D8 # <CJK>
-0xD7A5 0x5A41 # <CJK>
-0xD7A6 0x5C62 # <CJK>
-0xD7A7 0x6A13 # <CJK>
-0xD7A8 0x6DDA # <CJK>
-0xD7A9 0x6F0F # <CJK>
-0xD7AA 0x763B # <CJK>
-0xD7AB 0x7D2F # <CJK>
-0xD7AC 0x7E37 # <CJK>
-0xD7AD 0x851E # <CJK>
-0xD7AE 0x8938 # <CJK>
-0xD7AF 0x93E4 # <CJK>
-0xD7B0 0x964B # <CJK>
-0xD7B1 0x5289 # <CJK>
-0xD7B2 0x65D2 # <CJK>
-0xD7B3 0x67F3 # <CJK>
-0xD7B4 0x69B4 # <CJK>
-0xD7B5 0x6D41 # <CJK>
-0xD7B6 0x6E9C # <CJK>
-0xD7B7 0x700F # <CJK>
-0xD7B8 0x7409 # <CJK>
-0xD7B9 0x7460 # <CJK>
-0xD7BA 0x7559 # <CJK>
-0xD7BB 0x7624 # <CJK>
-0xD7BC 0x786B # <CJK>
-0xD7BD 0x8B2C # <CJK>
-0xD7BE 0x985E # <CJK>
-0xD7BF 0x516D # <CJK>
-0xD7C0 0x622E # <CJK>
-0xD7C1 0x9678 # <CJK>
-0xD7C2 0x4F96 # <CJK>
-0xD7C3 0x502B # <CJK>
-0xD7C4 0x5D19 # <CJK>
-0xD7C5 0x6DEA # <CJK>
-0xD7C6 0x7DB8 # <CJK>
-0xD7C7 0x8F2A # <CJK>
-0xD7C8 0x5F8B # <CJK>
-0xD7C9 0x6144 # <CJK>
-0xD7CA 0x6817 # <CJK>
-0xD7CB 0xF961 # <CJK>
-0xD7CC 0x9686 # <CJK>
-0xD7CD 0x52D2 # <CJK>
-0xD7CE 0x808B # <CJK>
-0xD7CF 0x51DC # <CJK>
-0xD7D0 0x51CC # <CJK>
-0xD7D1 0x695E # <CJK>
-0xD7D2 0x7A1C # <CJK>
-0xD7D3 0x7DBE # <CJK>
-0xD7D4 0x83F1 # <CJK>
-0xD7D5 0x9675 # <CJK>
-0xD7D6 0x4FDA # <CJK>
-0xD7D7 0x5229 # <CJK>
-0xD7D8 0x5398 # <CJK>
-0xD7D9 0x540F # <CJK>
-0xD7DA 0x550E # <CJK>
-0xD7DB 0x5C65 # <CJK>
-0xD7DC 0x60A7 # <CJK>
-0xD7DD 0x674E # <CJK>
-0xD7DE 0x68A8 # <CJK>
-0xD7DF 0x6D6C # <CJK>
-0xD7E0 0x7281 # <CJK>
-0xD7E1 0x72F8 # <CJK>
-0xD7E2 0x7406 # <CJK>
-0xD7E3 0x7483 # <CJK>
-0xD7E4 0xF962 # <CJK>
-0xD7E5 0x75E2 # <CJK>
-0xD7E6 0x7C6C # <CJK>
-0xD7E7 0x7F79 # <CJK>
-0xD7E8 0x7FB8 # <CJK>
-0xD7E9 0x8389 # <CJK>
-0xD7EA 0x88CF # <CJK>
-0xD7EB 0x88E1 # <CJK>
-0xD7EC 0x91CC # <CJK>
-0xD7ED 0x91D0 # <CJK>
-0xD7EE 0x96E2 # <CJK>
-0xD7EF 0x9BC9 # <CJK>
-0xD7F0 0x541D # <CJK>
-0xD7F1 0x6F7E # <CJK>
-0xD7F2 0x71D0 # <CJK>
-0xD7F3 0x7498 # <CJK>
-0xD7F4 0x85FA # <CJK>
-0xD7F5 0x8EAA # <CJK>
-0xD7F6 0x96A3 # <CJK>
-0xD7F7 0x9C57 # <CJK>
-0xD7F8 0x9E9F # <CJK>
-0xD7F9 0x6797 # <CJK>
-0xD7FA 0x6DCB # <CJK>
-0xD7FB 0x7433 # <CJK>
-0xD7FC 0x81E8 # <CJK>
-0xD7FD 0x9716 # <CJK>
-0xD7FE 0x782C # <CJK>
-0xD8A1 0x7ACB # <CJK>
-0xD8A2 0x7B20 # <CJK>
-0xD8A3 0x7C92 # <CJK>
-0xD8A4 0x6469 # <CJK>
-0xD8A5 0x746A # <CJK>
-0xD8A6 0x75F2 # <CJK>
-0xD8A7 0x78BC # <CJK>
-0xD8A8 0x78E8 # <CJK>
-0xD8A9 0x99AC # <CJK>
-0xD8AA 0x9B54 # <CJK>
-0xD8AB 0x9EBB # <CJK>
-0xD8AC 0x5BDE # <CJK>
-0xD8AD 0x5E55 # <CJK>
-0xD8AE 0x6F20 # <CJK>
-0xD8AF 0x819C # <CJK>
-0xD8B0 0x83AB # <CJK>
-0xD8B1 0x9088 # <CJK>
-0xD8B2 0x4E07 # <CJK>
-0xD8B3 0x534D # <CJK>
-0xD8B4 0x5A29 # <CJK>
-0xD8B5 0x5DD2 # <CJK>
-0xD8B6 0x5F4E # <CJK>
-0xD8B7 0x6162 # <CJK>
-0xD8B8 0x633D # <CJK>
-0xD8B9 0x6669 # <CJK>
-0xD8BA 0x66FC # <CJK>
-0xD8BB 0x6EFF # <CJK>
-0xD8BC 0x6F2B # <CJK>
-0xD8BD 0x7063 # <CJK>
-0xD8BE 0x779E # <CJK>
-0xD8BF 0x842C # <CJK>
-0xD8C0 0x8513 # <CJK>
-0xD8C1 0x883B # <CJK>
-0xD8C2 0x8F13 # <CJK>
-0xD8C3 0x9945 # <CJK>
-0xD8C4 0x9C3B # <CJK>
-0xD8C5 0x551C # <CJK>
-0xD8C6 0x62B9 # <CJK>
-0xD8C7 0x672B # <CJK>
-0xD8C8 0x6CAB # <CJK>
-0xD8C9 0x8309 # <CJK>
-0xD8CA 0x896A # <CJK>
-0xD8CB 0x977A # <CJK>
-0xD8CC 0x4EA1 # <CJK>
-0xD8CD 0x5984 # <CJK>
-0xD8CE 0x5FD8 # <CJK>
-0xD8CF 0x5FD9 # <CJK>
-0xD8D0 0x671B # <CJK>
-0xD8D1 0x7DB2 # <CJK>
-0xD8D2 0x7F54 # <CJK>
-0xD8D3 0x8292 # <CJK>
-0xD8D4 0x832B # <CJK>
-0xD8D5 0x83BD # <CJK>
-0xD8D6 0x8F1E # <CJK>
-0xD8D7 0x9099 # <CJK>
-0xD8D8 0x57CB # <CJK>
-0xD8D9 0x59B9 # <CJK>
-0xD8DA 0x5A92 # <CJK>
-0xD8DB 0x5BD0 # <CJK>
-0xD8DC 0x6627 # <CJK>
-0xD8DD 0x679A # <CJK>
-0xD8DE 0x6885 # <CJK>
-0xD8DF 0x6BCF # <CJK>
-0xD8E0 0x7164 # <CJK>
-0xD8E1 0x7F75 # <CJK>
-0xD8E2 0x8CB7 # <CJK>
-0xD8E3 0x8CE3 # <CJK>
-0xD8E4 0x9081 # <CJK>
-0xD8E5 0x9B45 # <CJK>
-0xD8E6 0x8108 # <CJK>
-0xD8E7 0x8C8A # <CJK>
-0xD8E8 0x964C # <CJK>
-0xD8E9 0x9A40 # <CJK>
-0xD8EA 0x9EA5 # <CJK>
-0xD8EB 0x5B5F # <CJK>
-0xD8EC 0x6C13 # <CJK>
-0xD8ED 0x731B # <CJK>
-0xD8EE 0x76F2 # <CJK>
-0xD8EF 0x76DF # <CJK>
-0xD8F0 0x840C # <CJK>
-0xD8F1 0x51AA # <CJK>
-0xD8F2 0x8993 # <CJK>
-0xD8F3 0x514D # <CJK>
-0xD8F4 0x5195 # <CJK>
-0xD8F5 0x52C9 # <CJK>
-0xD8F6 0x68C9 # <CJK>
-0xD8F7 0x6C94 # <CJK>
-0xD8F8 0x7704 # <CJK>
-0xD8F9 0x7720 # <CJK>
-0xD8FA 0x7DBF # <CJK>
-0xD8FB 0x7DEC # <CJK>
-0xD8FC 0x9762 # <CJK>
-0xD8FD 0x9EB5 # <CJK>
-0xD8FE 0x6EC5 # <CJK>
-0xD9A1 0x8511 # <CJK>
-0xD9A2 0x51A5 # <CJK>
-0xD9A3 0x540D # <CJK>
-0xD9A4 0x547D # <CJK>
-0xD9A5 0x660E # <CJK>
-0xD9A6 0x669D # <CJK>
-0xD9A7 0x6927 # <CJK>
-0xD9A8 0x6E9F # <CJK>
-0xD9A9 0x76BF # <CJK>
-0xD9AA 0x7791 # <CJK>
-0xD9AB 0x8317 # <CJK>
-0xD9AC 0x84C2 # <CJK>
-0xD9AD 0x879F # <CJK>
-0xD9AE 0x9169 # <CJK>
-0xD9AF 0x9298 # <CJK>
-0xD9B0 0x9CF4 # <CJK>
-0xD9B1 0x8882 # <CJK>
-0xD9B2 0x4FAE # <CJK>
-0xD9B3 0x5192 # <CJK>
-0xD9B4 0x52DF # <CJK>
-0xD9B5 0x59C6 # <CJK>
-0xD9B6 0x5E3D # <CJK>
-0xD9B7 0x6155 # <CJK>
-0xD9B8 0x6478 # <CJK>
-0xD9B9 0x6479 # <CJK>
-0xD9BA 0x66AE # <CJK>
-0xD9BB 0x67D0 # <CJK>
-0xD9BC 0x6A21 # <CJK>
-0xD9BD 0x6BCD # <CJK>
-0xD9BE 0x6BDB # <CJK>
-0xD9BF 0x725F # <CJK>
-0xD9C0 0x7261 # <CJK>
-0xD9C1 0x7441 # <CJK>
-0xD9C2 0x7738 # <CJK>
-0xD9C3 0x77DB # <CJK>
-0xD9C4 0x8017 # <CJK>
-0xD9C5 0x82BC # <CJK>
-0xD9C6 0x8305 # <CJK>
-0xD9C7 0x8B00 # <CJK>
-0xD9C8 0x8B28 # <CJK>
-0xD9C9 0x8C8C # <CJK>
-0xD9CA 0x6728 # <CJK>
-0xD9CB 0x6C90 # <CJK>
-0xD9CC 0x7267 # <CJK>
-0xD9CD 0x76EE # <CJK>
-0xD9CE 0x7766 # <CJK>
-0xD9CF 0x7A46 # <CJK>
-0xD9D0 0x9DA9 # <CJK>
-0xD9D1 0x6B7F # <CJK>
-0xD9D2 0x6C92 # <CJK>
-0xD9D3 0x5922 # <CJK>
-0xD9D4 0x6726 # <CJK>
-0xD9D5 0x8499 # <CJK>
-0xD9D6 0x536F # <CJK>
-0xD9D7 0x5893 # <CJK>
-0xD9D8 0x5999 # <CJK>
-0xD9D9 0x5EDF # <CJK>
-0xD9DA 0x63CF # <CJK>
-0xD9DB 0x6634 # <CJK>
-0xD9DC 0x6773 # <CJK>
-0xD9DD 0x6E3A # <CJK>
-0xD9DE 0x732B # <CJK>
-0xD9DF 0x7AD7 # <CJK>
-0xD9E0 0x82D7 # <CJK>
-0xD9E1 0x9328 # <CJK>
-0xD9E2 0x52D9 # <CJK>
-0xD9E3 0x5DEB # <CJK>
-0xD9E4 0x61AE # <CJK>
-0xD9E5 0x61CB # <CJK>
-0xD9E6 0x620A # <CJK>
-0xD9E7 0x62C7 # <CJK>
-0xD9E8 0x64AB # <CJK>
-0xD9E9 0x65E0 # <CJK>
-0xD9EA 0x6959 # <CJK>
-0xD9EB 0x6B66 # <CJK>
-0xD9EC 0x6BCB # <CJK>
-0xD9ED 0x7121 # <CJK>
-0xD9EE 0x73F7 # <CJK>
-0xD9EF 0x755D # <CJK>
-0xD9F0 0x7E46 # <CJK>
-0xD9F1 0x821E # <CJK>
-0xD9F2 0x8302 # <CJK>
-0xD9F3 0x856A # <CJK>
-0xD9F4 0x8AA3 # <CJK>
-0xD9F5 0x8CBF # <CJK>
-0xD9F6 0x9727 # <CJK>
-0xD9F7 0x9D61 # <CJK>
-0xD9F8 0x58A8 # <CJK>
-0xD9F9 0x9ED8 # <CJK>
-0xD9FA 0x5011 # <CJK>
-0xD9FB 0x520E # <CJK>
-0xD9FC 0x543B # <CJK>
-0xD9FD 0x554F # <CJK>
-0xD9FE 0x6587 # <CJK>
-0xDAA1 0x6C76 # <CJK>
-0xDAA2 0x7D0A # <CJK>
-0xDAA3 0x7D0B # <CJK>
-0xDAA4 0x805E # <CJK>
-0xDAA5 0x868A # <CJK>
-0xDAA6 0x9580 # <CJK>
-0xDAA7 0x96EF # <CJK>
-0xDAA8 0x52FF # <CJK>
-0xDAA9 0x6C95 # <CJK>
-0xDAAA 0x7269 # <CJK>
-0xDAAB 0x5473 # <CJK>
-0xDAAC 0x5A9A # <CJK>
-0xDAAD 0x5C3E # <CJK>
-0xDAAE 0x5D4B # <CJK>
-0xDAAF 0x5F4C # <CJK>
-0xDAB0 0x5FAE # <CJK>
-0xDAB1 0x672A # <CJK>
-0xDAB2 0x68B6 # <CJK>
-0xDAB3 0x6963 # <CJK>
-0xDAB4 0x6E3C # <CJK>
-0xDAB5 0x6E44 # <CJK>
-0xDAB6 0x7709 # <CJK>
-0xDAB7 0x7C73 # <CJK>
-0xDAB8 0x7F8E # <CJK>
-0xDAB9 0x8587 # <CJK>
-0xDABA 0x8B0E # <CJK>
-0xDABB 0x8FF7 # <CJK>
-0xDABC 0x9761 # <CJK>
-0xDABD 0x9EF4 # <CJK>
-0xDABE 0x5CB7 # <CJK>
-0xDABF 0x60B6 # <CJK>
-0xDAC0 0x610D # <CJK>
-0xDAC1 0x61AB # <CJK>
-0xDAC2 0x654F # <CJK>
-0xDAC3 0x65FB # <CJK>
-0xDAC4 0x65FC # <CJK>
-0xDAC5 0x6C11 # <CJK>
-0xDAC6 0x6CEF # <CJK>
-0xDAC7 0x739F # <CJK>
-0xDAC8 0x73C9 # <CJK>
-0xDAC9 0x7DE1 # <CJK>
-0xDACA 0x9594 # <CJK>
-0xDACB 0x5BC6 # <CJK>
-0xDACC 0x871C # <CJK>
-0xDACD 0x8B10 # <CJK>
-0xDACE 0x525D # <CJK>
-0xDACF 0x535A # <CJK>
-0xDAD0 0x62CD # <CJK>
-0xDAD1 0x640F # <CJK>
-0xDAD2 0x64B2 # <CJK>
-0xDAD3 0x6734 # <CJK>
-0xDAD4 0x6A38 # <CJK>
-0xDAD5 0x6CCA # <CJK>
-0xDAD6 0x73C0 # <CJK>
-0xDAD7 0x749E # <CJK>
-0xDAD8 0x7B94 # <CJK>
-0xDAD9 0x7C95 # <CJK>
-0xDADA 0x7E1B # <CJK>
-0xDADB 0x818A # <CJK>
-0xDADC 0x8236 # <CJK>
-0xDADD 0x8584 # <CJK>
-0xDADE 0x8FEB # <CJK>
-0xDADF 0x96F9 # <CJK>
-0xDAE0 0x99C1 # <CJK>
-0xDAE1 0x4F34 # <CJK>
-0xDAE2 0x534A # <CJK>
-0xDAE3 0x53CD # <CJK>
-0xDAE4 0x53DB # <CJK>
-0xDAE5 0x62CC # <CJK>
-0xDAE6 0x642C # <CJK>
-0xDAE7 0x6500 # <CJK>
-0xDAE8 0x6591 # <CJK>
-0xDAE9 0x69C3 # <CJK>
-0xDAEA 0x6CEE # <CJK>
-0xDAEB 0x6F58 # <CJK>
-0xDAEC 0x73ED # <CJK>
-0xDAED 0x7554 # <CJK>
-0xDAEE 0x7622 # <CJK>
-0xDAEF 0x76E4 # <CJK>
-0xDAF0 0x76FC # <CJK>
-0xDAF1 0x78D0 # <CJK>
-0xDAF2 0x78FB # <CJK>
-0xDAF3 0x792C # <CJK>
-0xDAF4 0x7D46 # <CJK>
-0xDAF5 0x822C # <CJK>
-0xDAF6 0x87E0 # <CJK>
-0xDAF7 0x8FD4 # <CJK>
-0xDAF8 0x9812 # <CJK>
-0xDAF9 0x98EF # <CJK>
-0xDAFA 0x52C3 # <CJK>
-0xDAFB 0x62D4 # <CJK>
-0xDAFC 0x64A5 # <CJK>
-0xDAFD 0x6E24 # <CJK>
-0xDAFE 0x6F51 # <CJK>
-0xDBA1 0x767C # <CJK>
-0xDBA2 0x8DCB # <CJK>
-0xDBA3 0x91B1 # <CJK>
-0xDBA4 0x9262 # <CJK>
-0xDBA5 0x9AEE # <CJK>
-0xDBA6 0x9B43 # <CJK>
-0xDBA7 0x5023 # <CJK>
-0xDBA8 0x508D # <CJK>
-0xDBA9 0x574A # <CJK>
-0xDBAA 0x59A8 # <CJK>
-0xDBAB 0x5C28 # <CJK>
-0xDBAC 0x5E47 # <CJK>
-0xDBAD 0x5F77 # <CJK>
-0xDBAE 0x623F # <CJK>
-0xDBAF 0x653E # <CJK>
-0xDBB0 0x65B9 # <CJK>
-0xDBB1 0x65C1 # <CJK>
-0xDBB2 0x6609 # <CJK>
-0xDBB3 0x678B # <CJK>
-0xDBB4 0x699C # <CJK>
-0xDBB5 0x6EC2 # <CJK>
-0xDBB6 0x78C5 # <CJK>
-0xDBB7 0x7D21 # <CJK>
-0xDBB8 0x80AA # <CJK>
-0xDBB9 0x8180 # <CJK>
-0xDBBA 0x822B # <CJK>
-0xDBBB 0x82B3 # <CJK>
-0xDBBC 0x84A1 # <CJK>
-0xDBBD 0x868C # <CJK>
-0xDBBE 0x8A2A # <CJK>
-0xDBBF 0x8B17 # <CJK>
-0xDBC0 0x90A6 # <CJK>
-0xDBC1 0x9632 # <CJK>
-0xDBC2 0x9F90 # <CJK>
-0xDBC3 0x500D # <CJK>
-0xDBC4 0x4FF3 # <CJK>
-0xDBC5 0xF963 # <CJK>
-0xDBC6 0x57F9 # <CJK>
-0xDBC7 0x5F98 # <CJK>
-0xDBC8 0x62DC # <CJK>
-0xDBC9 0x6392 # <CJK>
-0xDBCA 0x676F # <CJK>
-0xDBCB 0x6E43 # <CJK>
-0xDBCC 0x7119 # <CJK>
-0xDBCD 0x76C3 # <CJK>
-0xDBCE 0x80CC # <CJK>
-0xDBCF 0x80DA # <CJK>
-0xDBD0 0x88F4 # <CJK>
-0xDBD1 0x88F5 # <CJK>
-0xDBD2 0x8919 # <CJK>
-0xDBD3 0x8CE0 # <CJK>
-0xDBD4 0x8F29 # <CJK>
-0xDBD5 0x914D # <CJK>
-0xDBD6 0x966A # <CJK>
-0xDBD7 0x4F2F # <CJK>
-0xDBD8 0x4F70 # <CJK>
-0xDBD9 0x5E1B # <CJK>
-0xDBDA 0x67CF # <CJK>
-0xDBDB 0x6822 # <CJK>
-0xDBDC 0x767D # <CJK>
-0xDBDD 0x767E # <CJK>
-0xDBDE 0x9B44 # <CJK>
-0xDBDF 0x5E61 # <CJK>
-0xDBE0 0x6A0A # <CJK>
-0xDBE1 0x7169 # <CJK>
-0xDBE2 0x71D4 # <CJK>
-0xDBE3 0x756A # <CJK>
-0xDBE4 0xF964 # <CJK>
-0xDBE5 0x7E41 # <CJK>
-0xDBE6 0x8543 # <CJK>
-0xDBE7 0x85E9 # <CJK>
-0xDBE8 0x98DC # <CJK>
-0xDBE9 0x4F10 # <CJK>
-0xDBEA 0x7B4F # <CJK>
-0xDBEB 0x7F70 # <CJK>
-0xDBEC 0x95A5 # <CJK>
-0xDBED 0x51E1 # <CJK>
-0xDBEE 0x5E06 # <CJK>
-0xDBEF 0x68B5 # <CJK>
-0xDBF0 0x6C3E # <CJK>
-0xDBF1 0x6C4E # <CJK>
-0xDBF2 0x6CDB # <CJK>
-0xDBF3 0x72AF # <CJK>
-0xDBF4 0x7BC4 # <CJK>
-0xDBF5 0x8303 # <CJK>
-0xDBF6 0x6CD5 # <CJK>
-0xDBF7 0x743A # <CJK>
-0xDBF8 0x50FB # <CJK>
-0xDBF9 0x5288 # <CJK>
-0xDBFA 0x58C1 # <CJK>
-0xDBFB 0x64D8 # <CJK>
-0xDBFC 0x6A97 # <CJK>
-0xDBFD 0x74A7 # <CJK>
-0xDBFE 0x7656 # <CJK>
-0xDCA1 0x78A7 # <CJK>
-0xDCA2 0x8617 # <CJK>
-0xDCA3 0x95E2 # <CJK>
-0xDCA4 0x9739 # <CJK>
-0xDCA5 0xF965 # <CJK>
-0xDCA6 0x535E # <CJK>
-0xDCA7 0x5F01 # <CJK>
-0xDCA8 0x8B8A # <CJK>
-0xDCA9 0x8FA8 # <CJK>
-0xDCAA 0x8FAF # <CJK>
-0xDCAB 0x908A # <CJK>
-0xDCAC 0x5225 # <CJK>
-0xDCAD 0x77A5 # <CJK>
-0xDCAE 0x9C49 # <CJK>
-0xDCAF 0x9F08 # <CJK>
-0xDCB0 0x4E19 # <CJK>
-0xDCB1 0x5002 # <CJK>
-0xDCB2 0x5175 # <CJK>
-0xDCB3 0x5C5B # <CJK>
-0xDCB4 0x5E77 # <CJK>
-0xDCB5 0x661E # <CJK>
-0xDCB6 0x663A # <CJK>
-0xDCB7 0x67C4 # <CJK>
-0xDCB8 0x68C5 # <CJK>
-0xDCB9 0x70B3 # <CJK>
-0xDCBA 0x7501 # <CJK>
-0xDCBB 0x75C5 # <CJK>
-0xDCBC 0x79C9 # <CJK>
-0xDCBD 0x7ADD # <CJK>
-0xDCBE 0x8F27 # <CJK>
-0xDCBF 0x9920 # <CJK>
-0xDCC0 0x9A08 # <CJK>
-0xDCC1 0x4FDD # <CJK>
-0xDCC2 0x5821 # <CJK>
-0xDCC3 0x5831 # <CJK>
-0xDCC4 0x5BF6 # <CJK>
-0xDCC5 0x666E # <CJK>
-0xDCC6 0x6B65 # <CJK>
-0xDCC7 0x6D11 # <CJK>
-0xDCC8 0x6E7A # <CJK>
-0xDCC9 0x6F7D # <CJK>
-0xDCCA 0x73E4 # <CJK>
-0xDCCB 0x752B # <CJK>
-0xDCCC 0x83E9 # <CJK>
-0xDCCD 0x88DC # <CJK>
-0xDCCE 0x8913 # <CJK>
-0xDCCF 0x8B5C # <CJK>
-0xDCD0 0x8F14 # <CJK>
-0xDCD1 0x4F0F # <CJK>
-0xDCD2 0x50D5 # <CJK>
-0xDCD3 0x5310 # <CJK>
-0xDCD4 0x535C # <CJK>
-0xDCD5 0x5B93 # <CJK>
-0xDCD6 0x5FA9 # <CJK>
-0xDCD7 0x670D # <CJK>
-0xDCD8 0x798F # <CJK>
-0xDCD9 0x8179 # <CJK>
-0xDCDA 0x832F # <CJK>
-0xDCDB 0x8514 # <CJK>
-0xDCDC 0x8907 # <CJK>
-0xDCDD 0x8986 # <CJK>
-0xDCDE 0x8F39 # <CJK>
-0xDCDF 0x8F3B # <CJK>
-0xDCE0 0x99A5 # <CJK>
-0xDCE1 0x9C12 # <CJK>
-0xDCE2 0x672C # <CJK>
-0xDCE3 0x4E76 # <CJK>
-0xDCE4 0x4FF8 # <CJK>
-0xDCE5 0x5949 # <CJK>
-0xDCE6 0x5C01 # <CJK>
-0xDCE7 0x5CEF # <CJK>
-0xDCE8 0x5CF0 # <CJK>
-0xDCE9 0x6367 # <CJK>
-0xDCEA 0x68D2 # <CJK>
-0xDCEB 0x70FD # <CJK>
-0xDCEC 0x71A2 # <CJK>
-0xDCED 0x742B # <CJK>
-0xDCEE 0x7E2B # <CJK>
-0xDCEF 0x84EC # <CJK>
-0xDCF0 0x8702 # <CJK>
-0xDCF1 0x9022 # <CJK>
-0xDCF2 0x92D2 # <CJK>
-0xDCF3 0x9CF3 # <CJK>
-0xDCF4 0x4E0D # <CJK>
-0xDCF5 0x4ED8 # <CJK>
-0xDCF6 0x4FEF # <CJK>
-0xDCF7 0x5085 # <CJK>
-0xDCF8 0x5256 # <CJK>
-0xDCF9 0x526F # <CJK>
-0xDCFA 0x5426 # <CJK>
-0xDCFB 0x5490 # <CJK>
-0xDCFC 0x57E0 # <CJK>
-0xDCFD 0x592B # <CJK>
-0xDCFE 0x5A66 # <CJK>
-0xDDA1 0x5B5A # <CJK>
-0xDDA2 0x5B75 # <CJK>
-0xDDA3 0x5BCC # <CJK>
-0xDDA4 0x5E9C # <CJK>
-0xDDA5 0xF966 # <CJK>
-0xDDA6 0x6276 # <CJK>
-0xDDA7 0x6577 # <CJK>
-0xDDA8 0x65A7 # <CJK>
-0xDDA9 0x6D6E # <CJK>
-0xDDAA 0x6EA5 # <CJK>
-0xDDAB 0x7236 # <CJK>
-0xDDAC 0x7B26 # <CJK>
-0xDDAD 0x7C3F # <CJK>
-0xDDAE 0x7F36 # <CJK>
-0xDDAF 0x8150 # <CJK>
-0xDDB0 0x8151 # <CJK>
-0xDDB1 0x819A # <CJK>
-0xDDB2 0x8240 # <CJK>
-0xDDB3 0x8299 # <CJK>
-0xDDB4 0x83A9 # <CJK>
-0xDDB5 0x8A03 # <CJK>
-0xDDB6 0x8CA0 # <CJK>
-0xDDB7 0x8CE6 # <CJK>
-0xDDB8 0x8CFB # <CJK>
-0xDDB9 0x8D74 # <CJK>
-0xDDBA 0x8DBA # <CJK>
-0xDDBB 0x90E8 # <CJK>
-0xDDBC 0x91DC # <CJK>
-0xDDBD 0x961C # <CJK>
-0xDDBE 0x9644 # <CJK>
-0xDDBF 0x99D9 # <CJK>
-0xDDC0 0x9CE7 # <CJK>
-0xDDC1 0x5317 # <CJK>
-0xDDC2 0x5206 # <CJK>
-0xDDC3 0x5429 # <CJK>
-0xDDC4 0x5674 # <CJK>
-0xDDC5 0x58B3 # <CJK>
-0xDDC6 0x5954 # <CJK>
-0xDDC7 0x596E # <CJK>
-0xDDC8 0x5FFF # <CJK>
-0xDDC9 0x61A4 # <CJK>
-0xDDCA 0x626E # <CJK>
-0xDDCB 0x6610 # <CJK>
-0xDDCC 0x6C7E # <CJK>
-0xDDCD 0x711A # <CJK>
-0xDDCE 0x76C6 # <CJK>
-0xDDCF 0x7C89 # <CJK>
-0xDDD0 0x7CDE # <CJK>
-0xDDD1 0x7D1B # <CJK>
-0xDDD2 0x82AC # <CJK>
-0xDDD3 0x8CC1 # <CJK>
-0xDDD4 0x96F0 # <CJK>
-0xDDD5 0xF967 # <CJK>
-0xDDD6 0x4F5B # <CJK>
-0xDDD7 0x5F17 # <CJK>
-0xDDD8 0x5F7F # <CJK>
-0xDDD9 0x62C2 # <CJK>
-0xDDDA 0x5D29 # <CJK>
-0xDDDB 0x670B # <CJK>
-0xDDDC 0x68DA # <CJK>
-0xDDDD 0x787C # <CJK>
-0xDDDE 0x7E43 # <CJK>
-0xDDDF 0x9D6C # <CJK>
-0xDDE0 0x4E15 # <CJK>
-0xDDE1 0x5099 # <CJK>
-0xDDE2 0x5315 # <CJK>
-0xDDE3 0x532A # <CJK>
-0xDDE4 0x5351 # <CJK>
-0xDDE5 0x5983 # <CJK>
-0xDDE6 0x5A62 # <CJK>
-0xDDE7 0x5E87 # <CJK>
-0xDDE8 0x60B2 # <CJK>
-0xDDE9 0x618A # <CJK>
-0xDDEA 0x6249 # <CJK>
-0xDDEB 0x6279 # <CJK>
-0xDDEC 0x6590 # <CJK>
-0xDDED 0x6787 # <CJK>
-0xDDEE 0x69A7 # <CJK>
-0xDDEF 0x6BD4 # <CJK>
-0xDDF0 0x6BD6 # <CJK>
-0xDDF1 0x6BD7 # <CJK>
-0xDDF2 0x6BD8 # <CJK>
-0xDDF3 0x6CB8 # <CJK>
-0xDDF4 0xF968 # <CJK>
-0xDDF5 0x7435 # <CJK>
-0xDDF6 0x75FA # <CJK>
-0xDDF7 0x7812 # <CJK>
-0xDDF8 0x7891 # <CJK>
-0xDDF9 0x79D5 # <CJK>
-0xDDFA 0x79D8 # <CJK>
-0xDDFB 0x7C83 # <CJK>
-0xDDFC 0x7DCB # <CJK>
-0xDDFD 0x7FE1 # <CJK>
-0xDDFE 0x80A5 # <CJK>
-0xDEA1 0x813E # <CJK>
-0xDEA2 0x81C2 # <CJK>
-0xDEA3 0x83F2 # <CJK>
-0xDEA4 0x871A # <CJK>
-0xDEA5 0x88E8 # <CJK>
-0xDEA6 0x8AB9 # <CJK>
-0xDEA7 0x8B6C # <CJK>
-0xDEA8 0x8CBB # <CJK>
-0xDEA9 0x9119 # <CJK>
-0xDEAA 0x975E # <CJK>
-0xDEAB 0x98DB # <CJK>
-0xDEAC 0x9F3B # <CJK>
-0xDEAD 0x56AC # <CJK>
-0xDEAE 0x5B2A # <CJK>
-0xDEAF 0x5F6C # <CJK>
-0xDEB0 0x658C # <CJK>
-0xDEB1 0x6AB3 # <CJK>
-0xDEB2 0x6BAF # <CJK>
-0xDEB3 0x6D5C # <CJK>
-0xDEB4 0x6FF1 # <CJK>
-0xDEB5 0x7015 # <CJK>
-0xDEB6 0x725D # <CJK>
-0xDEB7 0x73AD # <CJK>
-0xDEB8 0x8CA7 # <CJK>
-0xDEB9 0x8CD3 # <CJK>
-0xDEBA 0x983B # <CJK>
-0xDEBB 0x6191 # <CJK>
-0xDEBC 0x6C37 # <CJK>
-0xDEBD 0x8058 # <CJK>
-0xDEBE 0x9A01 # <CJK>
-0xDEBF 0x4E4D # <CJK>
-0xDEC0 0x4E8B # <CJK>
-0xDEC1 0x4E9B # <CJK>
-0xDEC2 0x4ED5 # <CJK>
-0xDEC3 0x4F3A # <CJK>
-0xDEC4 0x4F3C # <CJK>
-0xDEC5 0x4F7F # <CJK>
-0xDEC6 0x4FDF # <CJK>
-0xDEC7 0x50FF # <CJK>
-0xDEC8 0x53F2 # <CJK>
-0xDEC9 0x53F8 # <CJK>
-0xDECA 0x5506 # <CJK>
-0xDECB 0x55E3 # <CJK>
-0xDECC 0x56DB # <CJK>
-0xDECD 0x58EB # <CJK>
-0xDECE 0x5962 # <CJK>
-0xDECF 0x5A11 # <CJK>
-0xDED0 0x5BEB # <CJK>
-0xDED1 0x5BFA # <CJK>
-0xDED2 0x5C04 # <CJK>
-0xDED3 0x5DF3 # <CJK>
-0xDED4 0x5E2B # <CJK>
-0xDED5 0x5F99 # <CJK>
-0xDED6 0x601D # <CJK>
-0xDED7 0x6368 # <CJK>
-0xDED8 0x659C # <CJK>
-0xDED9 0x65AF # <CJK>
-0xDEDA 0x67F6 # <CJK>
-0xDEDB 0x67FB # <CJK>
-0xDEDC 0x68AD # <CJK>
-0xDEDD 0x6B7B # <CJK>
-0xDEDE 0x6C99 # <CJK>
-0xDEDF 0x6CD7 # <CJK>
-0xDEE0 0x6E23 # <CJK>
-0xDEE1 0x7009 # <CJK>
-0xDEE2 0x7345 # <CJK>
-0xDEE3 0x7802 # <CJK>
-0xDEE4 0x793E # <CJK>
-0xDEE5 0x7940 # <CJK>
-0xDEE6 0x7960 # <CJK>
-0xDEE7 0x79C1 # <CJK>
-0xDEE8 0x7BE9 # <CJK>
-0xDEE9 0x7D17 # <CJK>
-0xDEEA 0x7D72 # <CJK>
-0xDEEB 0x8086 # <CJK>
-0xDEEC 0x820D # <CJK>
-0xDEED 0x838E # <CJK>
-0xDEEE 0x84D1 # <CJK>
-0xDEEF 0x86C7 # <CJK>
-0xDEF0 0x88DF # <CJK>
-0xDEF1 0x8A50 # <CJK>
-0xDEF2 0x8A5E # <CJK>
-0xDEF3 0x8B1D # <CJK>
-0xDEF4 0x8CDC # <CJK>
-0xDEF5 0x8D66 # <CJK>
-0xDEF6 0x8FAD # <CJK>
-0xDEF7 0x90AA # <CJK>
-0xDEF8 0x98FC # <CJK>
-0xDEF9 0x99DF # <CJK>
-0xDEFA 0x9E9D # <CJK>
-0xDEFB 0x524A # <CJK>
-0xDEFC 0xF969 # <CJK>
-0xDEFD 0x6714 # <CJK>
-0xDEFE 0xF96A # <CJK>
-0xDFA1 0x5098 # <CJK>
-0xDFA2 0x522A # <CJK>
-0xDFA3 0x5C71 # <CJK>
-0xDFA4 0x6563 # <CJK>
-0xDFA5 0x6C55 # <CJK>
-0xDFA6 0x73CA # <CJK>
-0xDFA7 0x7523 # <CJK>
-0xDFA8 0x759D # <CJK>
-0xDFA9 0x7B97 # <CJK>
-0xDFAA 0x849C # <CJK>
-0xDFAB 0x9178 # <CJK>
-0xDFAC 0x9730 # <CJK>
-0xDFAD 0x4E77 # <CJK>
-0xDFAE 0x6492 # <CJK>
-0xDFAF 0x6BBA # <CJK>
-0xDFB0 0x715E # <CJK>
-0xDFB1 0x85A9 # <CJK>
-0xDFB2 0x4E09 # <CJK>
-0xDFB3 0xF96B # <CJK>
-0xDFB4 0x6749 # <CJK>
-0xDFB5 0x68EE # <CJK>
-0xDFB6 0x6E17 # <CJK>
-0xDFB7 0x829F # <CJK>
-0xDFB8 0x8518 # <CJK>
-0xDFB9 0x886B # <CJK>
-0xDFBA 0x63F7 # <CJK>
-0xDFBB 0x6F81 # <CJK>
-0xDFBC 0x9212 # <CJK>
-0xDFBD 0x98AF # <CJK>
-0xDFBE 0x4E0A # <CJK>
-0xDFBF 0x50B7 # <CJK>
-0xDFC0 0x50CF # <CJK>
-0xDFC1 0x511F # <CJK>
-0xDFC2 0x5546 # <CJK>
-0xDFC3 0x55AA # <CJK>
-0xDFC4 0x5617 # <CJK>
-0xDFC5 0x5B40 # <CJK>
-0xDFC6 0x5C19 # <CJK>
-0xDFC7 0x5CE0 # <CJK>
-0xDFC8 0x5E38 # <CJK>
-0xDFC9 0x5E8A # <CJK>
-0xDFCA 0x5EA0 # <CJK>
-0xDFCB 0x5EC2 # <CJK>
-0xDFCC 0x60F3 # <CJK>
-0xDFCD 0x6851 # <CJK>
-0xDFCE 0x6A61 # <CJK>
-0xDFCF 0x6E58 # <CJK>
-0xDFD0 0x723D # <CJK>
-0xDFD1 0x7240 # <CJK>
-0xDFD2 0x72C0 # <CJK>
-0xDFD3 0x76F8 # <CJK>
-0xDFD4 0x7965 # <CJK>
-0xDFD5 0x7BB1 # <CJK>
-0xDFD6 0x7FD4 # <CJK>
-0xDFD7 0x88F3 # <CJK>
-0xDFD8 0x89F4 # <CJK>
-0xDFD9 0x8A73 # <CJK>
-0xDFDA 0x8C61 # <CJK>
-0xDFDB 0x8CDE # <CJK>
-0xDFDC 0x971C # <CJK>
-0xDFDD 0x585E # <CJK>
-0xDFDE 0x74BD # <CJK>
-0xDFDF 0x8CFD # <CJK>
-0xDFE0 0x55C7 # <CJK>
-0xDFE1 0xF96C # <CJK>
-0xDFE2 0x7A61 # <CJK>
-0xDFE3 0x7D22 # <CJK>
-0xDFE4 0x8272 # <CJK>
-0xDFE5 0x7272 # <CJK>
-0xDFE6 0x751F # <CJK>
-0xDFE7 0x7525 # <CJK>
-0xDFE8 0xF96D # <CJK>
-0xDFE9 0x7B19 # <CJK>
-0xDFEA 0x5885 # <CJK>
-0xDFEB 0x58FB # <CJK>
-0xDFEC 0x5DBC # <CJK>
-0xDFED 0x5E8F # <CJK>
-0xDFEE 0x5EB6 # <CJK>
-0xDFEF 0x5F90 # <CJK>
-0xDFF0 0x6055 # <CJK>
-0xDFF1 0x6292 # <CJK>
-0xDFF2 0x637F # <CJK>
-0xDFF3 0x654D # <CJK>
-0xDFF4 0x6691 # <CJK>
-0xDFF5 0x66D9 # <CJK>
-0xDFF6 0x66F8 # <CJK>
-0xDFF7 0x6816 # <CJK>
-0xDFF8 0x68F2 # <CJK>
-0xDFF9 0x7280 # <CJK>
-0xDFFA 0x745E # <CJK>
-0xDFFB 0x7B6E # <CJK>
-0xDFFC 0x7D6E # <CJK>
-0xDFFD 0x7DD6 # <CJK>
-0xDFFE 0x7F72 # <CJK>
-0xE0A1 0x80E5 # <CJK>
-0xE0A2 0x8212 # <CJK>
-0xE0A3 0x85AF # <CJK>
-0xE0A4 0x897F # <CJK>
-0xE0A5 0x8A93 # <CJK>
-0xE0A6 0x901D # <CJK>
-0xE0A7 0x92E4 # <CJK>
-0xE0A8 0x9ECD # <CJK>
-0xE0A9 0x9F20 # <CJK>
-0xE0AA 0x5915 # <CJK>
-0xE0AB 0x596D # <CJK>
-0xE0AC 0x5E2D # <CJK>
-0xE0AD 0x60DC # <CJK>
-0xE0AE 0x6614 # <CJK>
-0xE0AF 0x6673 # <CJK>
-0xE0B0 0x6790 # <CJK>
-0xE0B1 0x6C50 # <CJK>
-0xE0B2 0x6DC5 # <CJK>
-0xE0B3 0x6F5F # <CJK>
-0xE0B4 0x77F3 # <CJK>
-0xE0B5 0x78A9 # <CJK>
-0xE0B6 0x84C6 # <CJK>
-0xE0B7 0x91CB # <CJK>
-0xE0B8 0x932B # <CJK>
-0xE0B9 0x4ED9 # <CJK>
-0xE0BA 0x50CA # <CJK>
-0xE0BB 0x5148 # <CJK>
-0xE0BC 0x5584 # <CJK>
-0xE0BD 0x5B0B # <CJK>
-0xE0BE 0x5BA3 # <CJK>
-0xE0BF 0x6247 # <CJK>
-0xE0C0 0x657E # <CJK>
-0xE0C1 0x65CB # <CJK>
-0xE0C2 0x6E32 # <CJK>
-0xE0C3 0x717D # <CJK>
-0xE0C4 0x7401 # <CJK>
-0xE0C5 0x7444 # <CJK>
-0xE0C6 0x7487 # <CJK>
-0xE0C7 0x74BF # <CJK>
-0xE0C8 0x766C # <CJK>
-0xE0C9 0x79AA # <CJK>
-0xE0CA 0x7DDA # <CJK>
-0xE0CB 0x7E55 # <CJK>
-0xE0CC 0x7FA8 # <CJK>
-0xE0CD 0x817A # <CJK>
-0xE0CE 0x81B3 # <CJK>
-0xE0CF 0x8239 # <CJK>
-0xE0D0 0x861A # <CJK>
-0xE0D1 0x87EC # <CJK>
-0xE0D2 0x8A75 # <CJK>
-0xE0D3 0x8DE3 # <CJK>
-0xE0D4 0x9078 # <CJK>
-0xE0D5 0x9291 # <CJK>
-0xE0D6 0x9425 # <CJK>
-0xE0D7 0x994D # <CJK>
-0xE0D8 0x9BAE # <CJK>
-0xE0D9 0x5368 # <CJK>
-0xE0DA 0x5C51 # <CJK>
-0xE0DB 0x6954 # <CJK>
-0xE0DC 0x6CC4 # <CJK>
-0xE0DD 0x6D29 # <CJK>
-0xE0DE 0x6E2B # <CJK>
-0xE0DF 0x820C # <CJK>
-0xE0E0 0x859B # <CJK>
-0xE0E1 0x893B # <CJK>
-0xE0E2 0x8A2D # <CJK>
-0xE0E3 0x8AAA # <CJK>
-0xE0E4 0x96EA # <CJK>
-0xE0E5 0x9F67 # <CJK>
-0xE0E6 0x5261 # <CJK>
-0xE0E7 0x66B9 # <CJK>
-0xE0E8 0x6BB2 # <CJK>
-0xE0E9 0x7E96 # <CJK>
-0xE0EA 0x87FE # <CJK>
-0xE0EB 0x8D0D # <CJK>
-0xE0EC 0x9583 # <CJK>
-0xE0ED 0x965D # <CJK>
-0xE0EE 0x651D # <CJK>
-0xE0EF 0x6D89 # <CJK>
-0xE0F0 0x71EE # <CJK>
-0xE0F1 0xF96E # <CJK>
-0xE0F2 0x57CE # <CJK>
-0xE0F3 0x59D3 # <CJK>
-0xE0F4 0x5BAC # <CJK>
-0xE0F5 0x6027 # <CJK>
-0xE0F6 0x60FA # <CJK>
-0xE0F7 0x6210 # <CJK>
-0xE0F8 0x661F # <CJK>
-0xE0F9 0x665F # <CJK>
-0xE0FA 0x7329 # <CJK>
-0xE0FB 0x73F9 # <CJK>
-0xE0FC 0x76DB # <CJK>
-0xE0FD 0x7701 # <CJK>
-0xE0FE 0x7B6C # <CJK>
-0xE1A1 0x8056 # <CJK>
-0xE1A2 0x8072 # <CJK>
-0xE1A3 0x8165 # <CJK>
-0xE1A4 0x8AA0 # <CJK>
-0xE1A5 0x9192 # <CJK>
-0xE1A6 0x4E16 # <CJK>
-0xE1A7 0x52E2 # <CJK>
-0xE1A8 0x6B72 # <CJK>
-0xE1A9 0x6D17 # <CJK>
-0xE1AA 0x7A05 # <CJK>
-0xE1AB 0x7B39 # <CJK>
-0xE1AC 0x7D30 # <CJK>
-0xE1AD 0xF96F # <CJK>
-0xE1AE 0x8CB0 # <CJK>
-0xE1AF 0x53EC # <CJK>
-0xE1B0 0x562F # <CJK>
-0xE1B1 0x5851 # <CJK>
-0xE1B2 0x5BB5 # <CJK>
-0xE1B3 0x5C0F # <CJK>
-0xE1B4 0x5C11 # <CJK>
-0xE1B5 0x5DE2 # <CJK>
-0xE1B6 0x6240 # <CJK>
-0xE1B7 0x6383 # <CJK>
-0xE1B8 0x6414 # <CJK>
-0xE1B9 0x662D # <CJK>
-0xE1BA 0x68B3 # <CJK>
-0xE1BB 0x6CBC # <CJK>
-0xE1BC 0x6D88 # <CJK>
-0xE1BD 0x6EAF # <CJK>
-0xE1BE 0x701F # <CJK>
-0xE1BF 0x70A4 # <CJK>
-0xE1C0 0x71D2 # <CJK>
-0xE1C1 0x7526 # <CJK>
-0xE1C2 0x758F # <CJK>
-0xE1C3 0x758E # <CJK>
-0xE1C4 0x7619 # <CJK>
-0xE1C5 0x7B11 # <CJK>
-0xE1C6 0x7BE0 # <CJK>
-0xE1C7 0x7C2B # <CJK>
-0xE1C8 0x7D20 # <CJK>
-0xE1C9 0x7D39 # <CJK>
-0xE1CA 0x852C # <CJK>
-0xE1CB 0x856D # <CJK>
-0xE1CC 0x8607 # <CJK>
-0xE1CD 0x8A34 # <CJK>
-0xE1CE 0x900D # <CJK>
-0xE1CF 0x9061 # <CJK>
-0xE1D0 0x90B5 # <CJK>
-0xE1D1 0x92B7 # <CJK>
-0xE1D2 0x97F6 # <CJK>
-0xE1D3 0x9A37 # <CJK>
-0xE1D4 0x4FD7 # <CJK>
-0xE1D5 0x5C6C # <CJK>
-0xE1D6 0x675F # <CJK>
-0xE1D7 0x6D91 # <CJK>
-0xE1D8 0x7C9F # <CJK>
-0xE1D9 0x7E8C # <CJK>
-0xE1DA 0x8B16 # <CJK>
-0xE1DB 0x8D16 # <CJK>
-0xE1DC 0x901F # <CJK>
-0xE1DD 0x5B6B # <CJK>
-0xE1DE 0x5DFD # <CJK>
-0xE1DF 0x640D # <CJK>
-0xE1E0 0x84C0 # <CJK>
-0xE1E1 0x905C # <CJK>
-0xE1E2 0x98E1 # <CJK>
-0xE1E3 0x7387 # <CJK>
-0xE1E4 0x5B8B # <CJK>
-0xE1E5 0x609A # <CJK>
-0xE1E6 0x677E # <CJK>
-0xE1E7 0x6DDE # <CJK>
-0xE1E8 0x8A1F # <CJK>
-0xE1E9 0x8AA6 # <CJK>
-0xE1EA 0x9001 # <CJK>
-0xE1EB 0x980C # <CJK>
-0xE1EC 0x5237 # <CJK>
-0xE1ED 0xF970 # <CJK>
-0xE1EE 0x7051 # <CJK>
-0xE1EF 0x788E # <CJK>
-0xE1F0 0x9396 # <CJK>
-0xE1F1 0x8870 # <CJK>
-0xE1F2 0x91D7 # <CJK>
-0xE1F3 0x4FEE # <CJK>
-0xE1F4 0x53D7 # <CJK>
-0xE1F5 0x55FD # <CJK>
-0xE1F6 0x56DA # <CJK>
-0xE1F7 0x5782 # <CJK>
-0xE1F8 0x58FD # <CJK>
-0xE1F9 0x5AC2 # <CJK>
-0xE1FA 0x5B88 # <CJK>
-0xE1FB 0x5CAB # <CJK>
-0xE1FC 0x5CC0 # <CJK>
-0xE1FD 0x5E25 # <CJK>
-0xE1FE 0x6101 # <CJK>
-0xE2A1 0x620D # <CJK>
-0xE2A2 0x624B # <CJK>
-0xE2A3 0x6388 # <CJK>
-0xE2A4 0x641C # <CJK>
-0xE2A5 0x6536 # <CJK>
-0xE2A6 0x6578 # <CJK>
-0xE2A7 0x6A39 # <CJK>
-0xE2A8 0x6B8A # <CJK>
-0xE2A9 0x6C34 # <CJK>
-0xE2AA 0x6D19 # <CJK>
-0xE2AB 0x6F31 # <CJK>
-0xE2AC 0x71E7 # <CJK>
-0xE2AD 0x72E9 # <CJK>
-0xE2AE 0x7378 # <CJK>
-0xE2AF 0x7407 # <CJK>
-0xE2B0 0x74B2 # <CJK>
-0xE2B1 0x7626 # <CJK>
-0xE2B2 0x7761 # <CJK>
-0xE2B3 0x79C0 # <CJK>
-0xE2B4 0x7A57 # <CJK>
-0xE2B5 0x7AEA # <CJK>
-0xE2B6 0x7CB9 # <CJK>
-0xE2B7 0x7D8F # <CJK>
-0xE2B8 0x7DAC # <CJK>
-0xE2B9 0x7E61 # <CJK>
-0xE2BA 0x7F9E # <CJK>
-0xE2BB 0x8129 # <CJK>
-0xE2BC 0x8331 # <CJK>
-0xE2BD 0x8490 # <CJK>
-0xE2BE 0x84DA # <CJK>
-0xE2BF 0x85EA # <CJK>
-0xE2C0 0x8896 # <CJK>
-0xE2C1 0x8AB0 # <CJK>
-0xE2C2 0x8B90 # <CJK>
-0xE2C3 0x8F38 # <CJK>
-0xE2C4 0x9042 # <CJK>
-0xE2C5 0x9083 # <CJK>
-0xE2C6 0x916C # <CJK>
-0xE2C7 0x9296 # <CJK>
-0xE2C8 0x92B9 # <CJK>
-0xE2C9 0x968B # <CJK>
-0xE2CA 0x96A7 # <CJK>
-0xE2CB 0x96A8 # <CJK>
-0xE2CC 0x96D6 # <CJK>
-0xE2CD 0x9700 # <CJK>
-0xE2CE 0x9808 # <CJK>
-0xE2CF 0x9996 # <CJK>
-0xE2D0 0x9AD3 # <CJK>
-0xE2D1 0x9B1A # <CJK>
-0xE2D2 0x53D4 # <CJK>
-0xE2D3 0x587E # <CJK>
-0xE2D4 0x5919 # <CJK>
-0xE2D5 0x5B70 # <CJK>
-0xE2D6 0x5BBF # <CJK>
-0xE2D7 0x6DD1 # <CJK>
-0xE2D8 0x6F5A # <CJK>
-0xE2D9 0x719F # <CJK>
-0xE2DA 0x7421 # <CJK>
-0xE2DB 0x74B9 # <CJK>
-0xE2DC 0x8085 # <CJK>
-0xE2DD 0x83FD # <CJK>
-0xE2DE 0x5DE1 # <CJK>
-0xE2DF 0x5F87 # <CJK>
-0xE2E0 0x5FAA # <CJK>
-0xE2E1 0x6042 # <CJK>
-0xE2E2 0x65EC # <CJK>
-0xE2E3 0x6812 # <CJK>
-0xE2E4 0x696F # <CJK>
-0xE2E5 0x6A53 # <CJK>
-0xE2E6 0x6B89 # <CJK>
-0xE2E7 0x6D35 # <CJK>
-0xE2E8 0x6DF3 # <CJK>
-0xE2E9 0x73E3 # <CJK>
-0xE2EA 0x76FE # <CJK>
-0xE2EB 0x77AC # <CJK>
-0xE2EC 0x7B4D # <CJK>
-0xE2ED 0x7D14 # <CJK>
-0xE2EE 0x8123 # <CJK>
-0xE2EF 0x821C # <CJK>
-0xE2F0 0x8340 # <CJK>
-0xE2F1 0x84F4 # <CJK>
-0xE2F2 0x8563 # <CJK>
-0xE2F3 0x8A62 # <CJK>
-0xE2F4 0x8AC4 # <CJK>
-0xE2F5 0x9187 # <CJK>
-0xE2F6 0x931E # <CJK>
-0xE2F7 0x9806 # <CJK>
-0xE2F8 0x99B4 # <CJK>
-0xE2F9 0x620C # <CJK>
-0xE2FA 0x8853 # <CJK>
-0xE2FB 0x8FF0 # <CJK>
-0xE2FC 0x9265 # <CJK>
-0xE2FD 0x5D07 # <CJK>
-0xE2FE 0x5D27 # <CJK>
-0xE3A1 0x5D69 # <CJK>
-0xE3A2 0x745F # <CJK>
-0xE3A3 0x819D # <CJK>
-0xE3A4 0x8768 # <CJK>
-0xE3A5 0x6FD5 # <CJK>
-0xE3A6 0x62FE # <CJK>
-0xE3A7 0x7FD2 # <CJK>
-0xE3A8 0x8936 # <CJK>
-0xE3A9 0x8972 # <CJK>
-0xE3AA 0x4E1E # <CJK>
-0xE3AB 0x4E58 # <CJK>
-0xE3AC 0x50E7 # <CJK>
-0xE3AD 0x52DD # <CJK>
-0xE3AE 0x5347 # <CJK>
-0xE3AF 0x627F # <CJK>
-0xE3B0 0x6607 # <CJK>
-0xE3B1 0x7E69 # <CJK>
-0xE3B2 0x8805 # <CJK>
-0xE3B3 0x965E # <CJK>
-0xE3B4 0x4F8D # <CJK>
-0xE3B5 0x5319 # <CJK>
-0xE3B6 0x5636 # <CJK>
-0xE3B7 0x59CB # <CJK>
-0xE3B8 0x5AA4 # <CJK>
-0xE3B9 0x5C38 # <CJK>
-0xE3BA 0x5C4E # <CJK>
-0xE3BB 0x5C4D # <CJK>
-0xE3BC 0x5E02 # <CJK>
-0xE3BD 0x5F11 # <CJK>
-0xE3BE 0x6043 # <CJK>
-0xE3BF 0x65BD # <CJK>
-0xE3C0 0x662F # <CJK>
-0xE3C1 0x6642 # <CJK>
-0xE3C2 0x67BE # <CJK>
-0xE3C3 0x67F4 # <CJK>
-0xE3C4 0x731C # <CJK>
-0xE3C5 0x77E2 # <CJK>
-0xE3C6 0x793A # <CJK>
-0xE3C7 0x7FC5 # <CJK>
-0xE3C8 0x8494 # <CJK>
-0xE3C9 0x84CD # <CJK>
-0xE3CA 0x8996 # <CJK>
-0xE3CB 0x8A66 # <CJK>
-0xE3CC 0x8A69 # <CJK>
-0xE3CD 0x8AE1 # <CJK>
-0xE3CE 0x8C55 # <CJK>
-0xE3CF 0x8C7A # <CJK>
-0xE3D0 0x57F4 # <CJK>
-0xE3D1 0x5BD4 # <CJK>
-0xE3D2 0x5F0F # <CJK>
-0xE3D3 0x606F # <CJK>
-0xE3D4 0x62ED # <CJK>
-0xE3D5 0x690D # <CJK>
-0xE3D6 0x6B96 # <CJK>
-0xE3D7 0x6E5C # <CJK>
-0xE3D8 0x7184 # <CJK>
-0xE3D9 0x7BD2 # <CJK>
-0xE3DA 0x8755 # <CJK>
-0xE3DB 0x8B58 # <CJK>
-0xE3DC 0x8EFE # <CJK>
-0xE3DD 0x98DF # <CJK>
-0xE3DE 0x98FE # <CJK>
-0xE3DF 0x4F38 # <CJK>
-0xE3E0 0x4F81 # <CJK>
-0xE3E1 0x4FE1 # <CJK>
-0xE3E2 0x547B # <CJK>
-0xE3E3 0x5A20 # <CJK>
-0xE3E4 0x5BB8 # <CJK>
-0xE3E5 0x613C # <CJK>
-0xE3E6 0x65B0 # <CJK>
-0xE3E7 0x6668 # <CJK>
-0xE3E8 0x71FC # <CJK>
-0xE3E9 0x7533 # <CJK>
-0xE3EA 0x795E # <CJK>
-0xE3EB 0x7D33 # <CJK>
-0xE3EC 0x814E # <CJK>
-0xE3ED 0x81E3 # <CJK>
-0xE3EE 0x8398 # <CJK>
-0xE3EF 0x85AA # <CJK>
-0xE3F0 0x85CE # <CJK>
-0xE3F1 0x8703 # <CJK>
-0xE3F2 0x8A0A # <CJK>
-0xE3F3 0x8EAB # <CJK>
-0xE3F4 0x8F9B # <CJK>
-0xE3F5 0xF971 # <CJK>
-0xE3F6 0x8FC5 # <CJK>
-0xE3F7 0x5931 # <CJK>
-0xE3F8 0x5BA4 # <CJK>
-0xE3F9 0x5BE6 # <CJK>
-0xE3FA 0x6089 # <CJK>
-0xE3FB 0x5BE9 # <CJK>
-0xE3FC 0x5C0B # <CJK>
-0xE3FD 0x5FC3 # <CJK>
-0xE3FE 0x6C81 # <CJK>
-0xE4A1 0xF972 # <CJK>
-0xE4A2 0x6DF1 # <CJK>
-0xE4A3 0x700B # <CJK>
-0xE4A4 0x751A # <CJK>
-0xE4A5 0x82AF # <CJK>
-0xE4A6 0x8AF6 # <CJK>
-0xE4A7 0x4EC0 # <CJK>
-0xE4A8 0x5341 # <CJK>
-0xE4A9 0xF973 # <CJK>
-0xE4AA 0x96D9 # <CJK>
-0xE4AB 0x6C0F # <CJK>
-0xE4AC 0x4E9E # <CJK>
-0xE4AD 0x4FC4 # <CJK>
-0xE4AE 0x5152 # <CJK>
-0xE4AF 0x555E # <CJK>
-0xE4B0 0x5A25 # <CJK>
-0xE4B1 0x5CE8 # <CJK>
-0xE4B2 0x6211 # <CJK>
-0xE4B3 0x7259 # <CJK>
-0xE4B4 0x82BD # <CJK>
-0xE4B5 0x83AA # <CJK>
-0xE4B6 0x86FE # <CJK>
-0xE4B7 0x8859 # <CJK>
-0xE4B8 0x8A1D # <CJK>
-0xE4B9 0x963F # <CJK>
-0xE4BA 0x96C5 # <CJK>
-0xE4BB 0x9913 # <CJK>
-0xE4BC 0x9D09 # <CJK>
-0xE4BD 0x9D5D # <CJK>
-0xE4BE 0x580A # <CJK>
-0xE4BF 0x5CB3 # <CJK>
-0xE4C0 0x5DBD # <CJK>
-0xE4C1 0x5E44 # <CJK>
-0xE4C2 0x60E1 # <CJK>
-0xE4C3 0x6115 # <CJK>
-0xE4C4 0x63E1 # <CJK>
-0xE4C5 0x6A02 # <CJK>
-0xE4C6 0x6E25 # <CJK>
-0xE4C7 0x9102 # <CJK>
-0xE4C8 0x9354 # <CJK>
-0xE4C9 0x984E # <CJK>
-0xE4CA 0x9C10 # <CJK>
-0xE4CB 0x9F77 # <CJK>
-0xE4CC 0x5B89 # <CJK>
-0xE4CD 0x5CB8 # <CJK>
-0xE4CE 0x6309 # <CJK>
-0xE4CF 0x664F # <CJK>
-0xE4D0 0x6848 # <CJK>
-0xE4D1 0x773C # <CJK>
-0xE4D2 0x96C1 # <CJK>
-0xE4D3 0x978D # <CJK>
-0xE4D4 0x9854 # <CJK>
-0xE4D5 0x9B9F # <CJK>
-0xE4D6 0x65A1 # <CJK>
-0xE4D7 0x8B01 # <CJK>
-0xE4D8 0x8ECB # <CJK>
-0xE4D9 0x95BC # <CJK>
-0xE4DA 0x5535 # <CJK>
-0xE4DB 0x5CA9 # <CJK>
-0xE4DC 0x5DD6 # <CJK>
-0xE4DD 0x5EB5 # <CJK>
-0xE4DE 0x6697 # <CJK>
-0xE4DF 0x764C # <CJK>
-0xE4E0 0x83F4 # <CJK>
-0xE4E1 0x95C7 # <CJK>
-0xE4E2 0x58D3 # <CJK>
-0xE4E3 0x62BC # <CJK>
-0xE4E4 0x72CE # <CJK>
-0xE4E5 0x9D28 # <CJK>
-0xE4E6 0x4EF0 # <CJK>
-0xE4E7 0x592E # <CJK>
-0xE4E8 0x600F # <CJK>
-0xE4E9 0x663B # <CJK>
-0xE4EA 0x6B83 # <CJK>
-0xE4EB 0x79E7 # <CJK>
-0xE4EC 0x9D26 # <CJK>
-0xE4ED 0x5393 # <CJK>
-0xE4EE 0x54C0 # <CJK>
-0xE4EF 0x57C3 # <CJK>
-0xE4F0 0x5D16 # <CJK>
-0xE4F1 0x611B # <CJK>
-0xE4F2 0x66D6 # <CJK>
-0xE4F3 0x6DAF # <CJK>
-0xE4F4 0x788D # <CJK>
-0xE4F5 0x827E # <CJK>
-0xE4F6 0x9698 # <CJK>
-0xE4F7 0x9744 # <CJK>
-0xE4F8 0x5384 # <CJK>
-0xE4F9 0x627C # <CJK>
-0xE4FA 0x6396 # <CJK>
-0xE4FB 0x6DB2 # <CJK>
-0xE4FC 0x7E0A # <CJK>
-0xE4FD 0x814B # <CJK>
-0xE4FE 0x984D # <CJK>
-0xE5A1 0x6AFB # <CJK>
-0xE5A2 0x7F4C # <CJK>
-0xE5A3 0x9DAF # <CJK>
-0xE5A4 0x9E1A # <CJK>
-0xE5A5 0x4E5F # <CJK>
-0xE5A6 0x503B # <CJK>
-0xE5A7 0x51B6 # <CJK>
-0xE5A8 0x591C # <CJK>
-0xE5A9 0x60F9 # <CJK>
-0xE5AA 0x63F6 # <CJK>
-0xE5AB 0x6930 # <CJK>
-0xE5AC 0x723A # <CJK>
-0xE5AD 0x8036 # <CJK>
-0xE5AE 0xF974 # <CJK>
-0xE5AF 0x91CE # <CJK>
-0xE5B0 0x5F31 # <CJK>
-0xE5B1 0xF975 # <CJK>
-0xE5B2 0xF976 # <CJK>
-0xE5B3 0x7D04 # <CJK>
-0xE5B4 0x82E5 # <CJK>
-0xE5B5 0x846F # <CJK>
-0xE5B6 0x84BB # <CJK>
-0xE5B7 0x85E5 # <CJK>
-0xE5B8 0x8E8D # <CJK>
-0xE5B9 0xF977 # <CJK>
-0xE5BA 0x4F6F # <CJK>
-0xE5BB 0xF978 # <CJK>
-0xE5BC 0xF979 # <CJK>
-0xE5BD 0x58E4 # <CJK>
-0xE5BE 0x5B43 # <CJK>
-0xE5BF 0x6059 # <CJK>
-0xE5C0 0x63DA # <CJK>
-0xE5C1 0x6518 # <CJK>
-0xE5C2 0x656D # <CJK>
-0xE5C3 0x6698 # <CJK>
-0xE5C4 0xF97A # <CJK>
-0xE5C5 0x694A # <CJK>
-0xE5C6 0x6A23 # <CJK>
-0xE5C7 0x6D0B # <CJK>
-0xE5C8 0x7001 # <CJK>
-0xE5C9 0x716C # <CJK>
-0xE5CA 0x75D2 # <CJK>
-0xE5CB 0x760D # <CJK>
-0xE5CC 0x79B3 # <CJK>
-0xE5CD 0x7A70 # <CJK>
-0xE5CE 0xF97B # <CJK>
-0xE5CF 0x7F8A # <CJK>
-0xE5D0 0xF97C # <CJK>
-0xE5D1 0x8944 # <CJK>
-0xE5D2 0xF97D # <CJK>
-0xE5D3 0x8B93 # <CJK>
-0xE5D4 0x91C0 # <CJK>
-0xE5D5 0x967D # <CJK>
-0xE5D6 0xF97E # <CJK>
-0xE5D7 0x990A # <CJK>
-0xE5D8 0x5704 # <CJK>
-0xE5D9 0x5FA1 # <CJK>
-0xE5DA 0x65BC # <CJK>
-0xE5DB 0x6F01 # <CJK>
-0xE5DC 0x7600 # <CJK>
-0xE5DD 0x79A6 # <CJK>
-0xE5DE 0x8A9E # <CJK>
-0xE5DF 0x99AD # <CJK>
-0xE5E0 0x9B5A # <CJK>
-0xE5E1 0x9F6C # <CJK>
-0xE5E2 0x5104 # <CJK>
-0xE5E3 0x61B6 # <CJK>
-0xE5E4 0x6291 # <CJK>
-0xE5E5 0x6A8D # <CJK>
-0xE5E6 0x81C6 # <CJK>
-0xE5E7 0x5043 # <CJK>
-0xE5E8 0x5830 # <CJK>
-0xE5E9 0x5F66 # <CJK>
-0xE5EA 0x7109 # <CJK>
-0xE5EB 0x8A00 # <CJK>
-0xE5EC 0x8AFA # <CJK>
-0xE5ED 0x5B7C # <CJK>
-0xE5EE 0x8616 # <CJK>
-0xE5EF 0x4FFA # <CJK>
-0xE5F0 0x513C # <CJK>
-0xE5F1 0x56B4 # <CJK>
-0xE5F2 0x5944 # <CJK>
-0xE5F3 0x63A9 # <CJK>
-0xE5F4 0x6DF9 # <CJK>
-0xE5F5 0x5DAA # <CJK>
-0xE5F6 0x696D # <CJK>
-0xE5F7 0x5186 # <CJK>
-0xE5F8 0x4E88 # <CJK>
-0xE5F9 0x4F59 # <CJK>
-0xE5FA 0xF97F # <CJK>
-0xE5FB 0xF980 # <CJK>
-0xE5FC 0xF981 # <CJK>
-0xE5FD 0x5982 # <CJK>
-0xE5FE 0xF982 # <CJK>
-0xE6A1 0xF983 # <CJK>
-0xE6A2 0x6B5F # <CJK>
-0xE6A3 0x6C5D # <CJK>
-0xE6A4 0xF984 # <CJK>
-0xE6A5 0x74B5 # <CJK>
-0xE6A6 0x7916 # <CJK>
-0xE6A7 0xF985 # <CJK>
-0xE6A8 0x8207 # <CJK>
-0xE6A9 0x8245 # <CJK>
-0xE6AA 0x8339 # <CJK>
-0xE6AB 0x8F3F # <CJK>
-0xE6AC 0x8F5D # <CJK>
-0xE6AD 0xF986 # <CJK>
-0xE6AE 0x9918 # <CJK>
-0xE6AF 0xF987 # <CJK>
-0xE6B0 0xF988 # <CJK>
-0xE6B1 0xF989 # <CJK>
-0xE6B2 0x4EA6 # <CJK>
-0xE6B3 0xF98A # <CJK>
-0xE6B4 0x57DF # <CJK>
-0xE6B5 0x5F79 # <CJK>
-0xE6B6 0x6613 # <CJK>
-0xE6B7 0xF98B # <CJK>
-0xE6B8 0xF98C # <CJK>
-0xE6B9 0x75AB # <CJK>
-0xE6BA 0x7E79 # <CJK>
-0xE6BB 0x8B6F # <CJK>
-0xE6BC 0xF98D # <CJK>
-0xE6BD 0x9006 # <CJK>
-0xE6BE 0x9A5B # <CJK>
-0xE6BF 0x56A5 # <CJK>
-0xE6C0 0x5827 # <CJK>
-0xE6C1 0x59F8 # <CJK>
-0xE6C2 0x5A1F # <CJK>
-0xE6C3 0x5BB4 # <CJK>
-0xE6C4 0xF98E # <CJK>
-0xE6C5 0x5EF6 # <CJK>
-0xE6C6 0xF98F # <CJK>
-0xE6C7 0xF990 # <CJK>
-0xE6C8 0x6350 # <CJK>
-0xE6C9 0x633B # <CJK>
-0xE6CA 0xF991 # <CJK>
-0xE6CB 0x693D # <CJK>
-0xE6CC 0x6C87 # <CJK>
-0xE6CD 0x6CBF # <CJK>
-0xE6CE 0x6D8E # <CJK>
-0xE6CF 0x6D93 # <CJK>
-0xE6D0 0x6DF5 # <CJK>
-0xE6D1 0x6F14 # <CJK>
-0xE6D2 0xF992 # <CJK>
-0xE6D3 0x70DF # <CJK>
-0xE6D4 0x7136 # <CJK>
-0xE6D5 0x7159 # <CJK>
-0xE6D6 0xF993 # <CJK>
-0xE6D7 0x71C3 # <CJK>
-0xE6D8 0x71D5 # <CJK>
-0xE6D9 0xF994 # <CJK>
-0xE6DA 0x784F # <CJK>
-0xE6DB 0x786F # <CJK>
-0xE6DC 0xF995 # <CJK>
-0xE6DD 0x7B75 # <CJK>
-0xE6DE 0x7DE3 # <CJK>
-0xE6DF 0xF996 # <CJK>
-0xE6E0 0x7E2F # <CJK>
-0xE6E1 0xF997 # <CJK>
-0xE6E2 0x884D # <CJK>
-0xE6E3 0x8EDF # <CJK>
-0xE6E4 0xF998 # <CJK>
-0xE6E5 0xF999 # <CJK>
-0xE6E6 0xF99A # <CJK>
-0xE6E7 0x925B # <CJK>
-0xE6E8 0xF99B # <CJK>
-0xE6E9 0x9CF6 # <CJK>
-0xE6EA 0xF99C # <CJK>
-0xE6EB 0xF99D # <CJK>
-0xE6EC 0xF99E # <CJK>
-0xE6ED 0x6085 # <CJK>
-0xE6EE 0x6D85 # <CJK>
-0xE6EF 0xF99F # <CJK>
-0xE6F0 0x71B1 # <CJK>
-0xE6F1 0xF9A0 # <CJK>
-0xE6F2 0xF9A1 # <CJK>
-0xE6F3 0x95B1 # <CJK>
-0xE6F4 0x53AD # <CJK>
-0xE6F5 0xF9A2 # <CJK>
-0xE6F6 0xF9A3 # <CJK>
-0xE6F7 0xF9A4 # <CJK>
-0xE6F8 0x67D3 # <CJK>
-0xE6F9 0xF9A5 # <CJK>
-0xE6FA 0x708E # <CJK>
-0xE6FB 0x7130 # <CJK>
-0xE6FC 0x7430 # <CJK>
-0xE6FD 0x8276 # <CJK>
-0xE6FE 0x82D2 # <CJK>
-0xE7A1 0xF9A6 # <CJK>
-0xE7A2 0x95BB # <CJK>
-0xE7A3 0x9AE5 # <CJK>
-0xE7A4 0x9E7D # <CJK>
-0xE7A5 0x66C4 # <CJK>
-0xE7A6 0xF9A7 # <CJK>
-0xE7A7 0x71C1 # <CJK>
-0xE7A8 0x8449 # <CJK>
-0xE7A9 0xF9A8 # <CJK>
-0xE7AA 0xF9A9 # <CJK>
-0xE7AB 0x584B # <CJK>
-0xE7AC 0xF9AA # <CJK>
-0xE7AD 0xF9AB # <CJK>
-0xE7AE 0x5DB8 # <CJK>
-0xE7AF 0x5F71 # <CJK>
-0xE7B0 0xF9AC # <CJK>
-0xE7B1 0x6620 # <CJK>
-0xE7B2 0x668E # <CJK>
-0xE7B3 0x6979 # <CJK>
-0xE7B4 0x69AE # <CJK>
-0xE7B5 0x6C38 # <CJK>
-0xE7B6 0x6CF3 # <CJK>
-0xE7B7 0x6E36 # <CJK>
-0xE7B8 0x6F41 # <CJK>
-0xE7B9 0x6FDA # <CJK>
-0xE7BA 0x701B # <CJK>
-0xE7BB 0x702F # <CJK>
-0xE7BC 0x7150 # <CJK>
-0xE7BD 0x71DF # <CJK>
-0xE7BE 0x7370 # <CJK>
-0xE7BF 0xF9AD # <CJK>
-0xE7C0 0x745B # <CJK>
-0xE7C1 0xF9AE # <CJK>
-0xE7C2 0x74D4 # <CJK>
-0xE7C3 0x76C8 # <CJK>
-0xE7C4 0x7A4E # <CJK>
-0xE7C5 0x7E93 # <CJK>
-0xE7C6 0xF9AF # <CJK>
-0xE7C7 0xF9B0 # <CJK>
-0xE7C8 0x82F1 # <CJK>
-0xE7C9 0x8A60 # <CJK>
-0xE7CA 0x8FCE # <CJK>
-0xE7CB 0xF9B1 # <CJK>
-0xE7CC 0x9348 # <CJK>
-0xE7CD 0xF9B2 # <CJK>
-0xE7CE 0x9719 # <CJK>
-0xE7CF 0xF9B3 # <CJK>
-0xE7D0 0xF9B4 # <CJK>
-0xE7D1 0x4E42 # <CJK>
-0xE7D2 0x502A # <CJK>
-0xE7D3 0xF9B5 # <CJK>
-0xE7D4 0x5208 # <CJK>
-0xE7D5 0x53E1 # <CJK>
-0xE7D6 0x66F3 # <CJK>
-0xE7D7 0x6C6D # <CJK>
-0xE7D8 0x6FCA # <CJK>
-0xE7D9 0x730A # <CJK>
-0xE7DA 0x777F # <CJK>
-0xE7DB 0x7A62 # <CJK>
-0xE7DC 0x82AE # <CJK>
-0xE7DD 0x85DD # <CJK>
-0xE7DE 0x8602 # <CJK>
-0xE7DF 0xF9B6 # <CJK>
-0xE7E0 0x88D4 # <CJK>
-0xE7E1 0x8A63 # <CJK>
-0xE7E2 0x8B7D # <CJK>
-0xE7E3 0x8C6B # <CJK>
-0xE7E4 0xF9B7 # <CJK>
-0xE7E5 0x92B3 # <CJK>
-0xE7E6 0xF9B8 # <CJK>
-0xE7E7 0x9713 # <CJK>
-0xE7E8 0x9810 # <CJK>
-0xE7E9 0x4E94 # <CJK>
-0xE7EA 0x4F0D # <CJK>
-0xE7EB 0x4FC9 # <CJK>
-0xE7EC 0x50B2 # <CJK>
-0xE7ED 0x5348 # <CJK>
-0xE7EE 0x543E # <CJK>
-0xE7EF 0x5433 # <CJK>
-0xE7F0 0x55DA # <CJK>
-0xE7F1 0x5862 # <CJK>
-0xE7F2 0x58BA # <CJK>
-0xE7F3 0x5967 # <CJK>
-0xE7F4 0x5A1B # <CJK>
-0xE7F5 0x5BE4 # <CJK>
-0xE7F6 0x609F # <CJK>
-0xE7F7 0xF9B9 # <CJK>
-0xE7F8 0x61CA # <CJK>
-0xE7F9 0x6556 # <CJK>
-0xE7FA 0x65FF # <CJK>
-0xE7FB 0x6664 # <CJK>
-0xE7FC 0x68A7 # <CJK>
-0xE7FD 0x6C5A # <CJK>
-0xE7FE 0x6FB3 # <CJK>
-0xE8A1 0x70CF # <CJK>
-0xE8A2 0x71AC # <CJK>
-0xE8A3 0x7352 # <CJK>
-0xE8A4 0x7B7D # <CJK>
-0xE8A5 0x8708 # <CJK>
-0xE8A6 0x8AA4 # <CJK>
-0xE8A7 0x9C32 # <CJK>
-0xE8A8 0x9F07 # <CJK>
-0xE8A9 0x5C4B # <CJK>
-0xE8AA 0x6C83 # <CJK>
-0xE8AB 0x7344 # <CJK>
-0xE8AC 0x7389 # <CJK>
-0xE8AD 0x923A # <CJK>
-0xE8AE 0x6EAB # <CJK>
-0xE8AF 0x7465 # <CJK>
-0xE8B0 0x761F # <CJK>
-0xE8B1 0x7A69 # <CJK>
-0xE8B2 0x7E15 # <CJK>
-0xE8B3 0x860A # <CJK>
-0xE8B4 0x5140 # <CJK>
-0xE8B5 0x58C5 # <CJK>
-0xE8B6 0x64C1 # <CJK>
-0xE8B7 0x74EE # <CJK>
-0xE8B8 0x7515 # <CJK>
-0xE8B9 0x7670 # <CJK>
-0xE8BA 0x7FC1 # <CJK>
-0xE8BB 0x9095 # <CJK>
-0xE8BC 0x96CD # <CJK>
-0xE8BD 0x9954 # <CJK>
-0xE8BE 0x6E26 # <CJK>
-0xE8BF 0x74E6 # <CJK>
-0xE8C0 0x7AA9 # <CJK>
-0xE8C1 0x7AAA # <CJK>
-0xE8C2 0x81E5 # <CJK>
-0xE8C3 0x86D9 # <CJK>
-0xE8C4 0x8778 # <CJK>
-0xE8C5 0x8A1B # <CJK>
-0xE8C6 0x5A49 # <CJK>
-0xE8C7 0x5B8C # <CJK>
-0xE8C8 0x5B9B # <CJK>
-0xE8C9 0x68A1 # <CJK>
-0xE8CA 0x6900 # <CJK>
-0xE8CB 0x6D63 # <CJK>
-0xE8CC 0x73A9 # <CJK>
-0xE8CD 0x7413 # <CJK>
-0xE8CE 0x742C # <CJK>
-0xE8CF 0x7897 # <CJK>
-0xE8D0 0x7DE9 # <CJK>
-0xE8D1 0x7FEB # <CJK>
-0xE8D2 0x8118 # <CJK>
-0xE8D3 0x8155 # <CJK>
-0xE8D4 0x839E # <CJK>
-0xE8D5 0x8C4C # <CJK>
-0xE8D6 0x962E # <CJK>
-0xE8D7 0x9811 # <CJK>
-0xE8D8 0x66F0 # <CJK>
-0xE8D9 0x5F80 # <CJK>
-0xE8DA 0x65FA # <CJK>
-0xE8DB 0x6789 # <CJK>
-0xE8DC 0x6C6A # <CJK>
-0xE8DD 0x738B # <CJK>
-0xE8DE 0x502D # <CJK>
-0xE8DF 0x5A03 # <CJK>
-0xE8E0 0x6B6A # <CJK>
-0xE8E1 0x77EE # <CJK>
-0xE8E2 0x5916 # <CJK>
-0xE8E3 0x5D6C # <CJK>
-0xE8E4 0x5DCD # <CJK>
-0xE8E5 0x7325 # <CJK>
-0xE8E6 0x754F # <CJK>
-0xE8E7 0xF9BA # <CJK>
-0xE8E8 0xF9BB # <CJK>
-0xE8E9 0x50E5 # <CJK>
-0xE8EA 0x51F9 # <CJK>
-0xE8EB 0x582F # <CJK>
-0xE8EC 0x592D # <CJK>
-0xE8ED 0x5996 # <CJK>
-0xE8EE 0x59DA # <CJK>
-0xE8EF 0x5BE5 # <CJK>
-0xE8F0 0xF9BC # <CJK>
-0xE8F1 0xF9BD # <CJK>
-0xE8F2 0x5DA2 # <CJK>
-0xE8F3 0x62D7 # <CJK>
-0xE8F4 0x6416 # <CJK>
-0xE8F5 0x6493 # <CJK>
-0xE8F6 0x64FE # <CJK>
-0xE8F7 0xF9BE # <CJK>
-0xE8F8 0x66DC # <CJK>
-0xE8F9 0xF9BF # <CJK>
-0xE8FA 0x6A48 # <CJK>
-0xE8FB 0xF9C0 # <CJK>
-0xE8FC 0x71FF # <CJK>
-0xE8FD 0x7464 # <CJK>
-0xE8FE 0xF9C1 # <CJK>
-0xE9A1 0x7A88 # <CJK>
-0xE9A2 0x7AAF # <CJK>
-0xE9A3 0x7E47 # <CJK>
-0xE9A4 0x7E5E # <CJK>
-0xE9A5 0x8000 # <CJK>
-0xE9A6 0x8170 # <CJK>
-0xE9A7 0xF9C2 # <CJK>
-0xE9A8 0x87EF # <CJK>
-0xE9A9 0x8981 # <CJK>
-0xE9AA 0x8B20 # <CJK>
-0xE9AB 0x9059 # <CJK>
-0xE9AC 0xF9C3 # <CJK>
-0xE9AD 0x9080 # <CJK>
-0xE9AE 0x9952 # <CJK>
-0xE9AF 0x617E # <CJK>
-0xE9B0 0x6B32 # <CJK>
-0xE9B1 0x6D74 # <CJK>
-0xE9B2 0x7E1F # <CJK>
-0xE9B3 0x8925 # <CJK>
-0xE9B4 0x8FB1 # <CJK>
-0xE9B5 0x4FD1 # <CJK>
-0xE9B6 0x50AD # <CJK>
-0xE9B7 0x5197 # <CJK>
-0xE9B8 0x52C7 # <CJK>
-0xE9B9 0x57C7 # <CJK>
-0xE9BA 0x5889 # <CJK>
-0xE9BB 0x5BB9 # <CJK>
-0xE9BC 0x5EB8 # <CJK>
-0xE9BD 0x6142 # <CJK>
-0xE9BE 0x6995 # <CJK>
-0xE9BF 0x6D8C # <CJK>
-0xE9C0 0x6E67 # <CJK>
-0xE9C1 0x6EB6 # <CJK>
-0xE9C2 0x7194 # <CJK>
-0xE9C3 0x7462 # <CJK>
-0xE9C4 0x7528 # <CJK>
-0xE9C5 0x752C # <CJK>
-0xE9C6 0x8073 # <CJK>
-0xE9C7 0x8338 # <CJK>
-0xE9C8 0x84C9 # <CJK>
-0xE9C9 0x8E0A # <CJK>
-0xE9CA 0x9394 # <CJK>
-0xE9CB 0x93DE # <CJK>
-0xE9CC 0xF9C4 # <CJK>
-0xE9CD 0x4E8E # <CJK>
-0xE9CE 0x4F51 # <CJK>
-0xE9CF 0x5076 # <CJK>
-0xE9D0 0x512A # <CJK>
-0xE9D1 0x53C8 # <CJK>
-0xE9D2 0x53CB # <CJK>
-0xE9D3 0x53F3 # <CJK>
-0xE9D4 0x5B87 # <CJK>
-0xE9D5 0x5BD3 # <CJK>
-0xE9D6 0x5C24 # <CJK>
-0xE9D7 0x611A # <CJK>
-0xE9D8 0x6182 # <CJK>
-0xE9D9 0x65F4 # <CJK>
-0xE9DA 0x725B # <CJK>
-0xE9DB 0x7397 # <CJK>
-0xE9DC 0x7440 # <CJK>
-0xE9DD 0x76C2 # <CJK>
-0xE9DE 0x7950 # <CJK>
-0xE9DF 0x7991 # <CJK>
-0xE9E0 0x79B9 # <CJK>
-0xE9E1 0x7D06 # <CJK>
-0xE9E2 0x7FBD # <CJK>
-0xE9E3 0x828B # <CJK>
-0xE9E4 0x85D5 # <CJK>
-0xE9E5 0x865E # <CJK>
-0xE9E6 0x8FC2 # <CJK>
-0xE9E7 0x9047 # <CJK>
-0xE9E8 0x90F5 # <CJK>
-0xE9E9 0x91EA # <CJK>
-0xE9EA 0x9685 # <CJK>
-0xE9EB 0x96E8 # <CJK>
-0xE9EC 0x96E9 # <CJK>
-0xE9ED 0x52D6 # <CJK>
-0xE9EE 0x5F67 # <CJK>
-0xE9EF 0x65ED # <CJK>
-0xE9F0 0x6631 # <CJK>
-0xE9F1 0x682F # <CJK>
-0xE9F2 0x715C # <CJK>
-0xE9F3 0x7A36 # <CJK>
-0xE9F4 0x90C1 # <CJK>
-0xE9F5 0x980A # <CJK>
-0xE9F6 0x4E91 # <CJK>
-0xE9F7 0xF9C5 # <CJK>
-0xE9F8 0x6A52 # <CJK>
-0xE9F9 0x6B9E # <CJK>
-0xE9FA 0x6F90 # <CJK>
-0xE9FB 0x7189 # <CJK>
-0xE9FC 0x8018 # <CJK>
-0xE9FD 0x82B8 # <CJK>
-0xE9FE 0x8553 # <CJK>
-0xEAA1 0x904B # <CJK>
-0xEAA2 0x9695 # <CJK>
-0xEAA3 0x96F2 # <CJK>
-0xEAA4 0x97FB # <CJK>
-0xEAA5 0x851A # <CJK>
-0xEAA6 0x9B31 # <CJK>
-0xEAA7 0x4E90 # <CJK>
-0xEAA8 0x718A # <CJK>
-0xEAA9 0x96C4 # <CJK>
-0xEAAA 0x5143 # <CJK>
-0xEAAB 0x539F # <CJK>
-0xEAAC 0x54E1 # <CJK>
-0xEAAD 0x5713 # <CJK>
-0xEAAE 0x5712 # <CJK>
-0xEAAF 0x57A3 # <CJK>
-0xEAB0 0x5A9B # <CJK>
-0xEAB1 0x5AC4 # <CJK>
-0xEAB2 0x5BC3 # <CJK>
-0xEAB3 0x6028 # <CJK>
-0xEAB4 0x613F # <CJK>
-0xEAB5 0x63F4 # <CJK>
-0xEAB6 0x6C85 # <CJK>
-0xEAB7 0x6D39 # <CJK>
-0xEAB8 0x6E72 # <CJK>
-0xEAB9 0x6E90 # <CJK>
-0xEABA 0x7230 # <CJK>
-0xEABB 0x733F # <CJK>
-0xEABC 0x7457 # <CJK>
-0xEABD 0x82D1 # <CJK>
-0xEABE 0x8881 # <CJK>
-0xEABF 0x8F45 # <CJK>
-0xEAC0 0x9060 # <CJK>
-0xEAC1 0xF9C6 # <CJK>
-0xEAC2 0x9662 # <CJK>
-0xEAC3 0x9858 # <CJK>
-0xEAC4 0x9D1B # <CJK>
-0xEAC5 0x6708 # <CJK>
-0xEAC6 0x8D8A # <CJK>
-0xEAC7 0x925E # <CJK>
-0xEAC8 0x4F4D # <CJK>
-0xEAC9 0x5049 # <CJK>
-0xEACA 0x50DE # <CJK>
-0xEACB 0x5371 # <CJK>
-0xEACC 0x570D # <CJK>
-0xEACD 0x59D4 # <CJK>
-0xEACE 0x5A01 # <CJK>
-0xEACF 0x5C09 # <CJK>
-0xEAD0 0x6170 # <CJK>
-0xEAD1 0x6690 # <CJK>
-0xEAD2 0x6E2D # <CJK>
-0xEAD3 0x7232 # <CJK>
-0xEAD4 0x744B # <CJK>
-0xEAD5 0x7DEF # <CJK>
-0xEAD6 0x80C3 # <CJK>
-0xEAD7 0x840E # <CJK>
-0xEAD8 0x8466 # <CJK>
-0xEAD9 0x853F # <CJK>
-0xEADA 0x875F # <CJK>
-0xEADB 0x885B # <CJK>
-0xEADC 0x8918 # <CJK>
-0xEADD 0x8B02 # <CJK>
-0xEADE 0x9055 # <CJK>
-0xEADF 0x97CB # <CJK>
-0xEAE0 0x9B4F # <CJK>
-0xEAE1 0x4E73 # <CJK>
-0xEAE2 0x4F91 # <CJK>
-0xEAE3 0x5112 # <CJK>
-0xEAE4 0x516A # <CJK>
-0xEAE5 0xF9C7 # <CJK>
-0xEAE6 0x552F # <CJK>
-0xEAE7 0x55A9 # <CJK>
-0xEAE8 0x5B7A # <CJK>
-0xEAE9 0x5BA5 # <CJK>
-0xEAEA 0x5E7C # <CJK>
-0xEAEB 0x5E7D # <CJK>
-0xEAEC 0x5EBE # <CJK>
-0xEAED 0x60A0 # <CJK>
-0xEAEE 0x60DF # <CJK>
-0xEAEF 0x6108 # <CJK>
-0xEAF0 0x6109 # <CJK>
-0xEAF1 0x63C4 # <CJK>
-0xEAF2 0x6538 # <CJK>
-0xEAF3 0x6709 # <CJK>
-0xEAF4 0xF9C8 # <CJK>
-0xEAF5 0x67D4 # <CJK>
-0xEAF6 0x67DA # <CJK>
-0xEAF7 0xF9C9 # <CJK>
-0xEAF8 0x6961 # <CJK>
-0xEAF9 0x6962 # <CJK>
-0xEAFA 0x6CB9 # <CJK>
-0xEAFB 0x6D27 # <CJK>
-0xEAFC 0xF9CA # <CJK>
-0xEAFD 0x6E38 # <CJK>
-0xEAFE 0xF9CB # <CJK>
-0xEBA1 0x6FE1 # <CJK>
-0xEBA2 0x7336 # <CJK>
-0xEBA3 0x7337 # <CJK>
-0xEBA4 0xF9CC # <CJK>
-0xEBA5 0x745C # <CJK>
-0xEBA6 0x7531 # <CJK>
-0xEBA7 0xF9CD # <CJK>
-0xEBA8 0x7652 # <CJK>
-0xEBA9 0xF9CE # <CJK>
-0xEBAA 0xF9CF # <CJK>
-0xEBAB 0x7DAD # <CJK>
-0xEBAC 0x81FE # <CJK>
-0xEBAD 0x8438 # <CJK>
-0xEBAE 0x88D5 # <CJK>
-0xEBAF 0x8A98 # <CJK>
-0xEBB0 0x8ADB # <CJK>
-0xEBB1 0x8AED # <CJK>
-0xEBB2 0x8E30 # <CJK>
-0xEBB3 0x8E42 # <CJK>
-0xEBB4 0x904A # <CJK>
-0xEBB5 0x903E # <CJK>
-0xEBB6 0x907A # <CJK>
-0xEBB7 0x9149 # <CJK>
-0xEBB8 0x91C9 # <CJK>
-0xEBB9 0x936E # <CJK>
-0xEBBA 0xF9D0 # <CJK>
-0xEBBB 0xF9D1 # <CJK>
-0xEBBC 0x5809 # <CJK>
-0xEBBD 0xF9D2 # <CJK>
-0xEBBE 0x6BD3 # <CJK>
-0xEBBF 0x8089 # <CJK>
-0xEBC0 0x80B2 # <CJK>
-0xEBC1 0xF9D3 # <CJK>
-0xEBC2 0xF9D4 # <CJK>
-0xEBC3 0x5141 # <CJK>
-0xEBC4 0x596B # <CJK>
-0xEBC5 0x5C39 # <CJK>
-0xEBC6 0xF9D5 # <CJK>
-0xEBC7 0xF9D6 # <CJK>
-0xEBC8 0x6F64 # <CJK>
-0xEBC9 0x73A7 # <CJK>
-0xEBCA 0x80E4 # <CJK>
-0xEBCB 0x8D07 # <CJK>
-0xEBCC 0xF9D7 # <CJK>
-0xEBCD 0x9217 # <CJK>
-0xEBCE 0x958F # <CJK>
-0xEBCF 0xF9D8 # <CJK>
-0xEBD0 0xF9D9 # <CJK>
-0xEBD1 0xF9DA # <CJK>
-0xEBD2 0xF9DB # <CJK>
-0xEBD3 0x807F # <CJK>
-0xEBD4 0x620E # <CJK>
-0xEBD5 0x701C # <CJK>
-0xEBD6 0x7D68 # <CJK>
-0xEBD7 0x878D # <CJK>
-0xEBD8 0xF9DC # <CJK>
-0xEBD9 0x57A0 # <CJK>
-0xEBDA 0x6069 # <CJK>
-0xEBDB 0x6147 # <CJK>
-0xEBDC 0x6BB7 # <CJK>
-0xEBDD 0x8ABE # <CJK>
-0xEBDE 0x9280 # <CJK>
-0xEBDF 0x96B1 # <CJK>
-0xEBE0 0x4E59 # <CJK>
-0xEBE1 0x541F # <CJK>
-0xEBE2 0x6DEB # <CJK>
-0xEBE3 0x852D # <CJK>
-0xEBE4 0x9670 # <CJK>
-0xEBE5 0x97F3 # <CJK>
-0xEBE6 0x98EE # <CJK>
-0xEBE7 0x63D6 # <CJK>
-0xEBE8 0x6CE3 # <CJK>
-0xEBE9 0x9091 # <CJK>
-0xEBEA 0x51DD # <CJK>
-0xEBEB 0x61C9 # <CJK>
-0xEBEC 0x81BA # <CJK>
-0xEBED 0x9DF9 # <CJK>
-0xEBEE 0x4F9D # <CJK>
-0xEBEF 0x501A # <CJK>
-0xEBF0 0x5100 # <CJK>
-0xEBF1 0x5B9C # <CJK>
-0xEBF2 0x610F # <CJK>
-0xEBF3 0x61FF # <CJK>
-0xEBF4 0x64EC # <CJK>
-0xEBF5 0x6905 # <CJK>
-0xEBF6 0x6BC5 # <CJK>
-0xEBF7 0x7591 # <CJK>
-0xEBF8 0x77E3 # <CJK>
-0xEBF9 0x7FA9 # <CJK>
-0xEBFA 0x8264 # <CJK>
-0xEBFB 0x858F # <CJK>
-0xEBFC 0x87FB # <CJK>
-0xEBFD 0x8863 # <CJK>
-0xEBFE 0x8ABC # <CJK>
-0xECA1 0x8B70 # <CJK>
-0xECA2 0x91AB # <CJK>
-0xECA3 0x4E8C # <CJK>
-0xECA4 0x4EE5 # <CJK>
-0xECA5 0x4F0A # <CJK>
-0xECA6 0xF9DD # <CJK>
-0xECA7 0xF9DE # <CJK>
-0xECA8 0x5937 # <CJK>
-0xECA9 0x59E8 # <CJK>
-0xECAA 0xF9DF # <CJK>
-0xECAB 0x5DF2 # <CJK>
-0xECAC 0x5F1B # <CJK>
-0xECAD 0x5F5B # <CJK>
-0xECAE 0x6021 # <CJK>
-0xECAF 0xF9E0 # <CJK>
-0xECB0 0xF9E1 # <CJK>
-0xECB1 0xF9E2 # <CJK>
-0xECB2 0xF9E3 # <CJK>
-0xECB3 0x723E # <CJK>
-0xECB4 0x73E5 # <CJK>
-0xECB5 0xF9E4 # <CJK>
-0xECB6 0x7570 # <CJK>
-0xECB7 0x75CD # <CJK>
-0xECB8 0xF9E5 # <CJK>
-0xECB9 0x79FB # <CJK>
-0xECBA 0xF9E6 # <CJK>
-0xECBB 0x800C # <CJK>
-0xECBC 0x8033 # <CJK>
-0xECBD 0x8084 # <CJK>
-0xECBE 0x82E1 # <CJK>
-0xECBF 0x8351 # <CJK>
-0xECC0 0xF9E7 # <CJK>
-0xECC1 0xF9E8 # <CJK>
-0xECC2 0x8CBD # <CJK>
-0xECC3 0x8CB3 # <CJK>
-0xECC4 0x9087 # <CJK>
-0xECC5 0xF9E9 # <CJK>
-0xECC6 0xF9EA # <CJK>
-0xECC7 0x98F4 # <CJK>
-0xECC8 0x990C # <CJK>
-0xECC9 0xF9EB # <CJK>
-0xECCA 0xF9EC # <CJK>
-0xECCB 0x7037 # <CJK>
-0xECCC 0x76CA # <CJK>
-0xECCD 0x7FCA # <CJK>
-0xECCE 0x7FCC # <CJK>
-0xECCF 0x7FFC # <CJK>
-0xECD0 0x8B1A # <CJK>
-0xECD1 0x4EBA # <CJK>
-0xECD2 0x4EC1 # <CJK>
-0xECD3 0x5203 # <CJK>
-0xECD4 0x5370 # <CJK>
-0xECD5 0xF9ED # <CJK>
-0xECD6 0x54BD # <CJK>
-0xECD7 0x56E0 # <CJK>
-0xECD8 0x59FB # <CJK>
-0xECD9 0x5BC5 # <CJK>
-0xECDA 0x5F15 # <CJK>
-0xECDB 0x5FCD # <CJK>
-0xECDC 0x6E6E # <CJK>
-0xECDD 0xF9EE # <CJK>
-0xECDE 0xF9EF # <CJK>
-0xECDF 0x7D6A # <CJK>
-0xECE0 0x8335 # <CJK>
-0xECE1 0xF9F0 # <CJK>
-0xECE2 0x8693 # <CJK>
-0xECE3 0x8A8D # <CJK>
-0xECE4 0xF9F1 # <CJK>
-0xECE5 0x976D # <CJK>
-0xECE6 0x9777 # <CJK>
-0xECE7 0xF9F2 # <CJK>
-0xECE8 0xF9F3 # <CJK>
-0xECE9 0x4E00 # <CJK>
-0xECEA 0x4F5A # <CJK>
-0xECEB 0x4F7E # <CJK>
-0xECEC 0x58F9 # <CJK>
-0xECED 0x65E5 # <CJK>
-0xECEE 0x6EA2 # <CJK>
-0xECEF 0x9038 # <CJK>
-0xECF0 0x93B0 # <CJK>
-0xECF1 0x99B9 # <CJK>
-0xECF2 0x4EFB # <CJK>
-0xECF3 0x58EC # <CJK>
-0xECF4 0x598A # <CJK>
-0xECF5 0x59D9 # <CJK>
-0xECF6 0x6041 # <CJK>
-0xECF7 0xF9F4 # <CJK>
-0xECF8 0xF9F5 # <CJK>
-0xECF9 0x7A14 # <CJK>
-0xECFA 0xF9F6 # <CJK>
-0xECFB 0x834F # <CJK>
-0xECFC 0x8CC3 # <CJK>
-0xECFD 0x5165 # <CJK>
-0xECFE 0x5344 # <CJK>
-0xEDA1 0xF9F7 # <CJK>
-0xEDA2 0xF9F8 # <CJK>
-0xEDA3 0xF9F9 # <CJK>
-0xEDA4 0x4ECD # <CJK>
-0xEDA5 0x5269 # <CJK>
-0xEDA6 0x5B55 # <CJK>
-0xEDA7 0x82BF # <CJK>
-0xEDA8 0x4ED4 # <CJK>
-0xEDA9 0x523A # <CJK>
-0xEDAA 0x54A8 # <CJK>
-0xEDAB 0x59C9 # <CJK>
-0xEDAC 0x59FF # <CJK>
-0xEDAD 0x5B50 # <CJK>
-0xEDAE 0x5B57 # <CJK>
-0xEDAF 0x5B5C # <CJK>
-0xEDB0 0x6063 # <CJK>
-0xEDB1 0x6148 # <CJK>
-0xEDB2 0x6ECB # <CJK>
-0xEDB3 0x7099 # <CJK>
-0xEDB4 0x716E # <CJK>
-0xEDB5 0x7386 # <CJK>
-0xEDB6 0x74F7 # <CJK>
-0xEDB7 0x75B5 # <CJK>
-0xEDB8 0x78C1 # <CJK>
-0xEDB9 0x7D2B # <CJK>
-0xEDBA 0x8005 # <CJK>
-0xEDBB 0x81EA # <CJK>
-0xEDBC 0x8328 # <CJK>
-0xEDBD 0x8517 # <CJK>
-0xEDBE 0x85C9 # <CJK>
-0xEDBF 0x8AEE # <CJK>
-0xEDC0 0x8CC7 # <CJK>
-0xEDC1 0x96CC # <CJK>
-0xEDC2 0x4F5C # <CJK>
-0xEDC3 0x52FA # <CJK>
-0xEDC4 0x56BC # <CJK>
-0xEDC5 0x65AB # <CJK>
-0xEDC6 0x6628 # <CJK>
-0xEDC7 0x707C # <CJK>
-0xEDC8 0x70B8 # <CJK>
-0xEDC9 0x7235 # <CJK>
-0xEDCA 0x7DBD # <CJK>
-0xEDCB 0x828D # <CJK>
-0xEDCC 0x914C # <CJK>
-0xEDCD 0x96C0 # <CJK>
-0xEDCE 0x9D72 # <CJK>
-0xEDCF 0x5B71 # <CJK>
-0xEDD0 0x68E7 # <CJK>
-0xEDD1 0x6B98 # <CJK>
-0xEDD2 0x6F7A # <CJK>
-0xEDD3 0x76DE # <CJK>
-0xEDD4 0x5C91 # <CJK>
-0xEDD5 0x66AB # <CJK>
-0xEDD6 0x6F5B # <CJK>
-0xEDD7 0x7BB4 # <CJK>
-0xEDD8 0x7C2A # <CJK>
-0xEDD9 0x8836 # <CJK>
-0xEDDA 0x96DC # <CJK>
-0xEDDB 0x4E08 # <CJK>
-0xEDDC 0x4ED7 # <CJK>
-0xEDDD 0x5320 # <CJK>
-0xEDDE 0x5834 # <CJK>
-0xEDDF 0x58BB # <CJK>
-0xEDE0 0x58EF # <CJK>
-0xEDE1 0x596C # <CJK>
-0xEDE2 0x5C07 # <CJK>
-0xEDE3 0x5E33 # <CJK>
-0xEDE4 0x5E84 # <CJK>
-0xEDE5 0x5F35 # <CJK>
-0xEDE6 0x638C # <CJK>
-0xEDE7 0x66B2 # <CJK>
-0xEDE8 0x6756 # <CJK>
-0xEDE9 0x6A1F # <CJK>
-0xEDEA 0x6AA3 # <CJK>
-0xEDEB 0x6B0C # <CJK>
-0xEDEC 0x6F3F # <CJK>
-0xEDED 0x7246 # <CJK>
-0xEDEE 0xF9FA # <CJK>
-0xEDEF 0x7350 # <CJK>
-0xEDF0 0x748B # <CJK>
-0xEDF1 0x7AE0 # <CJK>
-0xEDF2 0x7CA7 # <CJK>
-0xEDF3 0x8178 # <CJK>
-0xEDF4 0x81DF # <CJK>
-0xEDF5 0x81E7 # <CJK>
-0xEDF6 0x838A # <CJK>
-0xEDF7 0x846C # <CJK>
-0xEDF8 0x8523 # <CJK>
-0xEDF9 0x8594 # <CJK>
-0xEDFA 0x85CF # <CJK>
-0xEDFB 0x88DD # <CJK>
-0xEDFC 0x8D13 # <CJK>
-0xEDFD 0x91AC # <CJK>
-0xEDFE 0x9577 # <CJK>
-0xEEA1 0x969C # <CJK>
-0xEEA2 0x518D # <CJK>
-0xEEA3 0x54C9 # <CJK>
-0xEEA4 0x5728 # <CJK>
-0xEEA5 0x5BB0 # <CJK>
-0xEEA6 0x624D # <CJK>
-0xEEA7 0x6750 # <CJK>
-0xEEA8 0x683D # <CJK>
-0xEEA9 0x6893 # <CJK>
-0xEEAA 0x6E3D # <CJK>
-0xEEAB 0x6ED3 # <CJK>
-0xEEAC 0x707D # <CJK>
-0xEEAD 0x7E21 # <CJK>
-0xEEAE 0x88C1 # <CJK>
-0xEEAF 0x8CA1 # <CJK>
-0xEEB0 0x8F09 # <CJK>
-0xEEB1 0x9F4B # <CJK>
-0xEEB2 0x9F4E # <CJK>
-0xEEB3 0x722D # <CJK>
-0xEEB4 0x7B8F # <CJK>
-0xEEB5 0x8ACD # <CJK>
-0xEEB6 0x931A # <CJK>
-0xEEB7 0x4F47 # <CJK>
-0xEEB8 0x4F4E # <CJK>
-0xEEB9 0x5132 # <CJK>
-0xEEBA 0x5480 # <CJK>
-0xEEBB 0x59D0 # <CJK>
-0xEEBC 0x5E95 # <CJK>
-0xEEBD 0x62B5 # <CJK>
-0xEEBE 0x6775 # <CJK>
-0xEEBF 0x696E # <CJK>
-0xEEC0 0x6A17 # <CJK>
-0xEEC1 0x6CAE # <CJK>
-0xEEC2 0x6E1A # <CJK>
-0xEEC3 0x72D9 # <CJK>
-0xEEC4 0x732A # <CJK>
-0xEEC5 0x75BD # <CJK>
-0xEEC6 0x7BB8 # <CJK>
-0xEEC7 0x7D35 # <CJK>
-0xEEC8 0x82E7 # <CJK>
-0xEEC9 0x83F9 # <CJK>
-0xEECA 0x8457 # <CJK>
-0xEECB 0x85F7 # <CJK>
-0xEECC 0x8A5B # <CJK>
-0xEECD 0x8CAF # <CJK>
-0xEECE 0x8E87 # <CJK>
-0xEECF 0x9019 # <CJK>
-0xEED0 0x90B8 # <CJK>
-0xEED1 0x96CE # <CJK>
-0xEED2 0x9F5F # <CJK>
-0xEED3 0x52E3 # <CJK>
-0xEED4 0x540A # <CJK>
-0xEED5 0x5AE1 # <CJK>
-0xEED6 0x5BC2 # <CJK>
-0xEED7 0x6458 # <CJK>
-0xEED8 0x6575 # <CJK>
-0xEED9 0x6EF4 # <CJK>
-0xEEDA 0x72C4 # <CJK>
-0xEEDB 0xF9FB # <CJK>
-0xEEDC 0x7684 # <CJK>
-0xEEDD 0x7A4D # <CJK>
-0xEEDE 0x7B1B # <CJK>
-0xEEDF 0x7C4D # <CJK>
-0xEEE0 0x7E3E # <CJK>
-0xEEE1 0x7FDF # <CJK>
-0xEEE2 0x837B # <CJK>
-0xEEE3 0x8B2B # <CJK>
-0xEEE4 0x8CCA # <CJK>
-0xEEE5 0x8D64 # <CJK>
-0xEEE6 0x8DE1 # <CJK>
-0xEEE7 0x8E5F # <CJK>
-0xEEE8 0x8FEA # <CJK>
-0xEEE9 0x8FF9 # <CJK>
-0xEEEA 0x9069 # <CJK>
-0xEEEB 0x93D1 # <CJK>
-0xEEEC 0x4F43 # <CJK>
-0xEEED 0x4F7A # <CJK>
-0xEEEE 0x50B3 # <CJK>
-0xEEEF 0x5168 # <CJK>
-0xEEF0 0x5178 # <CJK>
-0xEEF1 0x524D # <CJK>
-0xEEF2 0x526A # <CJK>
-0xEEF3 0x5861 # <CJK>
-0xEEF4 0x587C # <CJK>
-0xEEF5 0x5960 # <CJK>
-0xEEF6 0x5C08 # <CJK>
-0xEEF7 0x5C55 # <CJK>
-0xEEF8 0x5EDB # <CJK>
-0xEEF9 0x609B # <CJK>
-0xEEFA 0x6230 # <CJK>
-0xEEFB 0x6813 # <CJK>
-0xEEFC 0x6BBF # <CJK>
-0xEEFD 0x6C08 # <CJK>
-0xEEFE 0x6FB1 # <CJK>
-0xEFA1 0x714E # <CJK>
-0xEFA2 0x7420 # <CJK>
-0xEFA3 0x7530 # <CJK>
-0xEFA4 0x7538 # <CJK>
-0xEFA5 0x7551 # <CJK>
-0xEFA6 0x7672 # <CJK>
-0xEFA7 0x7B4C # <CJK>
-0xEFA8 0x7B8B # <CJK>
-0xEFA9 0x7BAD # <CJK>
-0xEFAA 0x7BC6 # <CJK>
-0xEFAB 0x7E8F # <CJK>
-0xEFAC 0x8A6E # <CJK>
-0xEFAD 0x8F3E # <CJK>
-0xEFAE 0x8F49 # <CJK>
-0xEFAF 0x923F # <CJK>
-0xEFB0 0x9293 # <CJK>
-0xEFB1 0x9322 # <CJK>
-0xEFB2 0x942B # <CJK>
-0xEFB3 0x96FB # <CJK>
-0xEFB4 0x985A # <CJK>
-0xEFB5 0x986B # <CJK>
-0xEFB6 0x991E # <CJK>
-0xEFB7 0x5207 # <CJK>
-0xEFB8 0x622A # <CJK>
-0xEFB9 0x6298 # <CJK>
-0xEFBA 0x6D59 # <CJK>
-0xEFBB 0x7664 # <CJK>
-0xEFBC 0x7ACA # <CJK>
-0xEFBD 0x7BC0 # <CJK>
-0xEFBE 0x7D76 # <CJK>
-0xEFBF 0x5360 # <CJK>
-0xEFC0 0x5CBE # <CJK>
-0xEFC1 0x5E97 # <CJK>
-0xEFC2 0x6F38 # <CJK>
-0xEFC3 0x70B9 # <CJK>
-0xEFC4 0x7C98 # <CJK>
-0xEFC5 0x9711 # <CJK>
-0xEFC6 0x9B8E # <CJK>
-0xEFC7 0x9EDE # <CJK>
-0xEFC8 0x63A5 # <CJK>
-0xEFC9 0x647A # <CJK>
-0xEFCA 0x8776 # <CJK>
-0xEFCB 0x4E01 # <CJK>
-0xEFCC 0x4E95 # <CJK>
-0xEFCD 0x4EAD # <CJK>
-0xEFCE 0x505C # <CJK>
-0xEFCF 0x5075 # <CJK>
-0xEFD0 0x5448 # <CJK>
-0xEFD1 0x59C3 # <CJK>
-0xEFD2 0x5B9A # <CJK>
-0xEFD3 0x5E40 # <CJK>
-0xEFD4 0x5EAD # <CJK>
-0xEFD5 0x5EF7 # <CJK>
-0xEFD6 0x5F81 # <CJK>
-0xEFD7 0x60C5 # <CJK>
-0xEFD8 0x633A # <CJK>
-0xEFD9 0x653F # <CJK>
-0xEFDA 0x6574 # <CJK>
-0xEFDB 0x65CC # <CJK>
-0xEFDC 0x6676 # <CJK>
-0xEFDD 0x6678 # <CJK>
-0xEFDE 0x67FE # <CJK>
-0xEFDF 0x6968 # <CJK>
-0xEFE0 0x6A89 # <CJK>
-0xEFE1 0x6B63 # <CJK>
-0xEFE2 0x6C40 # <CJK>
-0xEFE3 0x6DC0 # <CJK>
-0xEFE4 0x6DE8 # <CJK>
-0xEFE5 0x6E1F # <CJK>
-0xEFE6 0x6E5E # <CJK>
-0xEFE7 0x701E # <CJK>
-0xEFE8 0x70A1 # <CJK>
-0xEFE9 0x738E # <CJK>
-0xEFEA 0x73FD # <CJK>
-0xEFEB 0x753A # <CJK>
-0xEFEC 0x775B # <CJK>
-0xEFED 0x7887 # <CJK>
-0xEFEE 0x798E # <CJK>
-0xEFEF 0x7A0B # <CJK>
-0xEFF0 0x7A7D # <CJK>
-0xEFF1 0x7CBE # <CJK>
-0xEFF2 0x7D8E # <CJK>
-0xEFF3 0x8247 # <CJK>
-0xEFF4 0x8A02 # <CJK>
-0xEFF5 0x8AEA # <CJK>
-0xEFF6 0x8C9E # <CJK>
-0xEFF7 0x912D # <CJK>
-0xEFF8 0x914A # <CJK>
-0xEFF9 0x91D8 # <CJK>
-0xEFFA 0x9266 # <CJK>
-0xEFFB 0x92CC # <CJK>
-0xEFFC 0x9320 # <CJK>
-0xEFFD 0x9706 # <CJK>
-0xEFFE 0x9756 # <CJK>
-0xF0A1 0x975C # <CJK>
-0xF0A2 0x9802 # <CJK>
-0xF0A3 0x9F0E # <CJK>
-0xF0A4 0x5236 # <CJK>
-0xF0A5 0x5291 # <CJK>
-0xF0A6 0x557C # <CJK>
-0xF0A7 0x5824 # <CJK>
-0xF0A8 0x5E1D # <CJK>
-0xF0A9 0x5F1F # <CJK>
-0xF0AA 0x608C # <CJK>
-0xF0AB 0x63D0 # <CJK>
-0xF0AC 0x68AF # <CJK>
-0xF0AD 0x6FDF # <CJK>
-0xF0AE 0x796D # <CJK>
-0xF0AF 0x7B2C # <CJK>
-0xF0B0 0x81CD # <CJK>
-0xF0B1 0x85BA # <CJK>
-0xF0B2 0x88FD # <CJK>
-0xF0B3 0x8AF8 # <CJK>
-0xF0B4 0x8E44 # <CJK>
-0xF0B5 0x918D # <CJK>
-0xF0B6 0x9664 # <CJK>
-0xF0B7 0x969B # <CJK>
-0xF0B8 0x973D # <CJK>
-0xF0B9 0x984C # <CJK>
-0xF0BA 0x9F4A # <CJK>
-0xF0BB 0x4FCE # <CJK>
-0xF0BC 0x5146 # <CJK>
-0xF0BD 0x51CB # <CJK>
-0xF0BE 0x52A9 # <CJK>
-0xF0BF 0x5632 # <CJK>
-0xF0C0 0x5F14 # <CJK>
-0xF0C1 0x5F6B # <CJK>
-0xF0C2 0x63AA # <CJK>
-0xF0C3 0x64CD # <CJK>
-0xF0C4 0x65E9 # <CJK>
-0xF0C5 0x6641 # <CJK>
-0xF0C6 0x66FA # <CJK>
-0xF0C7 0x66F9 # <CJK>
-0xF0C8 0x671D # <CJK>
-0xF0C9 0x689D # <CJK>
-0xF0CA 0x68D7 # <CJK>
-0xF0CB 0x69FD # <CJK>
-0xF0CC 0x6F15 # <CJK>
-0xF0CD 0x6F6E # <CJK>
-0xF0CE 0x7167 # <CJK>
-0xF0CF 0x71E5 # <CJK>
-0xF0D0 0x722A # <CJK>
-0xF0D1 0x74AA # <CJK>
-0xF0D2 0x773A # <CJK>
-0xF0D3 0x7956 # <CJK>
-0xF0D4 0x795A # <CJK>
-0xF0D5 0x79DF # <CJK>
-0xF0D6 0x7A20 # <CJK>
-0xF0D7 0x7A95 # <CJK>
-0xF0D8 0x7C97 # <CJK>
-0xF0D9 0x7CDF # <CJK>
-0xF0DA 0x7D44 # <CJK>
-0xF0DB 0x7E70 # <CJK>
-0xF0DC 0x8087 # <CJK>
-0xF0DD 0x85FB # <CJK>
-0xF0DE 0x86A4 # <CJK>
-0xF0DF 0x8A54 # <CJK>
-0xF0E0 0x8ABF # <CJK>
-0xF0E1 0x8D99 # <CJK>
-0xF0E2 0x8E81 # <CJK>
-0xF0E3 0x9020 # <CJK>
-0xF0E4 0x906D # <CJK>
-0xF0E5 0x91E3 # <CJK>
-0xF0E6 0x963B # <CJK>
-0xF0E7 0x96D5 # <CJK>
-0xF0E8 0x9CE5 # <CJK>
-0xF0E9 0x65CF # <CJK>
-0xF0EA 0x7C07 # <CJK>
-0xF0EB 0x8DB3 # <CJK>
-0xF0EC 0x93C3 # <CJK>
-0xF0ED 0x5B58 # <CJK>
-0xF0EE 0x5C0A # <CJK>
-0xF0EF 0x5352 # <CJK>
-0xF0F0 0x62D9 # <CJK>
-0xF0F1 0x731D # <CJK>
-0xF0F2 0x5027 # <CJK>
-0xF0F3 0x5B97 # <CJK>
-0xF0F4 0x5F9E # <CJK>
-0xF0F5 0x60B0 # <CJK>
-0xF0F6 0x616B # <CJK>
-0xF0F7 0x68D5 # <CJK>
-0xF0F8 0x6DD9 # <CJK>
-0xF0F9 0x742E # <CJK>
-0xF0FA 0x7A2E # <CJK>
-0xF0FB 0x7D42 # <CJK>
-0xF0FC 0x7D9C # <CJK>
-0xF0FD 0x7E31 # <CJK>
-0xF0FE 0x816B # <CJK>
-0xF1A1 0x8E2A # <CJK>
-0xF1A2 0x8E35 # <CJK>
-0xF1A3 0x937E # <CJK>
-0xF1A4 0x9418 # <CJK>
-0xF1A5 0x4F50 # <CJK>
-0xF1A6 0x5750 # <CJK>
-0xF1A7 0x5DE6 # <CJK>
-0xF1A8 0x5EA7 # <CJK>
-0xF1A9 0x632B # <CJK>
-0xF1AA 0x7F6A # <CJK>
-0xF1AB 0x4E3B # <CJK>
-0xF1AC 0x4F4F # <CJK>
-0xF1AD 0x4F8F # <CJK>
-0xF1AE 0x505A # <CJK>
-0xF1AF 0x59DD # <CJK>
-0xF1B0 0x80C4 # <CJK>
-0xF1B1 0x546A # <CJK>
-0xF1B2 0x5468 # <CJK>
-0xF1B3 0x55FE # <CJK>
-0xF1B4 0x594F # <CJK>
-0xF1B5 0x5B99 # <CJK>
-0xF1B6 0x5DDE # <CJK>
-0xF1B7 0x5EDA # <CJK>
-0xF1B8 0x665D # <CJK>
-0xF1B9 0x6731 # <CJK>
-0xF1BA 0x67F1 # <CJK>
-0xF1BB 0x682A # <CJK>
-0xF1BC 0x6CE8 # <CJK>
-0xF1BD 0x6D32 # <CJK>
-0xF1BE 0x6E4A # <CJK>
-0xF1BF 0x6F8D # <CJK>
-0xF1C0 0x70B7 # <CJK>
-0xF1C1 0x73E0 # <CJK>
-0xF1C2 0x7587 # <CJK>
-0xF1C3 0x7C4C # <CJK>
-0xF1C4 0x7D02 # <CJK>
-0xF1C5 0x7D2C # <CJK>
-0xF1C6 0x7DA2 # <CJK>
-0xF1C7 0x821F # <CJK>
-0xF1C8 0x86DB # <CJK>
-0xF1C9 0x8A3B # <CJK>
-0xF1CA 0x8A85 # <CJK>
-0xF1CB 0x8D70 # <CJK>
-0xF1CC 0x8E8A # <CJK>
-0xF1CD 0x8F33 # <CJK>
-0xF1CE 0x9031 # <CJK>
-0xF1CF 0x914E # <CJK>
-0xF1D0 0x9152 # <CJK>
-0xF1D1 0x9444 # <CJK>
-0xF1D2 0x99D0 # <CJK>
-0xF1D3 0x7AF9 # <CJK>
-0xF1D4 0x7CA5 # <CJK>
-0xF1D5 0x4FCA # <CJK>
-0xF1D6 0x5101 # <CJK>
-0xF1D7 0x51C6 # <CJK>
-0xF1D8 0x57C8 # <CJK>
-0xF1D9 0x5BEF # <CJK>
-0xF1DA 0x5CFB # <CJK>
-0xF1DB 0x6659 # <CJK>
-0xF1DC 0x6A3D # <CJK>
-0xF1DD 0x6D5A # <CJK>
-0xF1DE 0x6E96 # <CJK>
-0xF1DF 0x6FEC # <CJK>
-0xF1E0 0x710C # <CJK>
-0xF1E1 0x756F # <CJK>
-0xF1E2 0x7AE3 # <CJK>
-0xF1E3 0x8822 # <CJK>
-0xF1E4 0x9021 # <CJK>
-0xF1E5 0x9075 # <CJK>
-0xF1E6 0x96CB # <CJK>
-0xF1E7 0x99FF # <CJK>
-0xF1E8 0x8301 # <CJK>
-0xF1E9 0x4E2D # <CJK>
-0xF1EA 0x4EF2 # <CJK>
-0xF1EB 0x8846 # <CJK>
-0xF1EC 0x91CD # <CJK>
-0xF1ED 0x537D # <CJK>
-0xF1EE 0x6ADB # <CJK>
-0xF1EF 0x696B # <CJK>
-0xF1F0 0x6C41 # <CJK>
-0xF1F1 0x847A # <CJK>
-0xF1F2 0x589E # <CJK>
-0xF1F3 0x618E # <CJK>
-0xF1F4 0x66FE # <CJK>
-0xF1F5 0x62EF # <CJK>
-0xF1F6 0x70DD # <CJK>
-0xF1F7 0x7511 # <CJK>
-0xF1F8 0x75C7 # <CJK>
-0xF1F9 0x7E52 # <CJK>
-0xF1FA 0x84B8 # <CJK>
-0xF1FB 0x8B49 # <CJK>
-0xF1FC 0x8D08 # <CJK>
-0xF1FD 0x4E4B # <CJK>
-0xF1FE 0x53EA # <CJK>
-0xF2A1 0x54AB # <CJK>
-0xF2A2 0x5730 # <CJK>
-0xF2A3 0x5740 # <CJK>
-0xF2A4 0x5FD7 # <CJK>
-0xF2A5 0x6301 # <CJK>
-0xF2A6 0x6307 # <CJK>
-0xF2A7 0x646F # <CJK>
-0xF2A8 0x652F # <CJK>
-0xF2A9 0x65E8 # <CJK>
-0xF2AA 0x667A # <CJK>
-0xF2AB 0x679D # <CJK>
-0xF2AC 0x67B3 # <CJK>
-0xF2AD 0x6B62 # <CJK>
-0xF2AE 0x6C60 # <CJK>
-0xF2AF 0x6C9A # <CJK>
-0xF2B0 0x6F2C # <CJK>
-0xF2B1 0x77E5 # <CJK>
-0xF2B2 0x7825 # <CJK>
-0xF2B3 0x7949 # <CJK>
-0xF2B4 0x7957 # <CJK>
-0xF2B5 0x7D19 # <CJK>
-0xF2B6 0x80A2 # <CJK>
-0xF2B7 0x8102 # <CJK>
-0xF2B8 0x81F3 # <CJK>
-0xF2B9 0x829D # <CJK>
-0xF2BA 0x82B7 # <CJK>
-0xF2BB 0x8718 # <CJK>
-0xF2BC 0x8A8C # <CJK>
-0xF2BD 0xF9FC # <CJK>
-0xF2BE 0x8D04 # <CJK>
-0xF2BF 0x8DBE # <CJK>
-0xF2C0 0x9072 # <CJK>
-0xF2C1 0x76F4 # <CJK>
-0xF2C2 0x7A19 # <CJK>
-0xF2C3 0x7A37 # <CJK>
-0xF2C4 0x7E54 # <CJK>
-0xF2C5 0x8077 # <CJK>
-0xF2C6 0x5507 # <CJK>
-0xF2C7 0x55D4 # <CJK>
-0xF2C8 0x5875 # <CJK>
-0xF2C9 0x632F # <CJK>
-0xF2CA 0x6422 # <CJK>
-0xF2CB 0x6649 # <CJK>
-0xF2CC 0x664B # <CJK>
-0xF2CD 0x686D # <CJK>
-0xF2CE 0x699B # <CJK>
-0xF2CF 0x6B84 # <CJK>
-0xF2D0 0x6D25 # <CJK>
-0xF2D1 0x6EB1 # <CJK>
-0xF2D2 0x73CD # <CJK>
-0xF2D3 0x7468 # <CJK>
-0xF2D4 0x74A1 # <CJK>
-0xF2D5 0x755B # <CJK>
-0xF2D6 0x75B9 # <CJK>
-0xF2D7 0x76E1 # <CJK>
-0xF2D8 0x771E # <CJK>
-0xF2D9 0x778B # <CJK>
-0xF2DA 0x79E6 # <CJK>
-0xF2DB 0x7E09 # <CJK>
-0xF2DC 0x7E1D # <CJK>
-0xF2DD 0x81FB # <CJK>
-0xF2DE 0x852F # <CJK>
-0xF2DF 0x8897 # <CJK>
-0xF2E0 0x8A3A # <CJK>
-0xF2E1 0x8CD1 # <CJK>
-0xF2E2 0x8EEB # <CJK>
-0xF2E3 0x8FB0 # <CJK>
-0xF2E4 0x9032 # <CJK>
-0xF2E5 0x93AD # <CJK>
-0xF2E6 0x9663 # <CJK>
-0xF2E7 0x9673 # <CJK>
-0xF2E8 0x9707 # <CJK>
-0xF2E9 0x4F84 # <CJK>
-0xF2EA 0x53F1 # <CJK>
-0xF2EB 0x59EA # <CJK>
-0xF2EC 0x5AC9 # <CJK>
-0xF2ED 0x5E19 # <CJK>
-0xF2EE 0x684E # <CJK>
-0xF2EF 0x74C6 # <CJK>
-0xF2F0 0x75BE # <CJK>
-0xF2F1 0x79E9 # <CJK>
-0xF2F2 0x7A92 # <CJK>
-0xF2F3 0x81A3 # <CJK>
-0xF2F4 0x86ED # <CJK>
-0xF2F5 0x8CEA # <CJK>
-0xF2F6 0x8DCC # <CJK>
-0xF2F7 0x8FED # <CJK>
-0xF2F8 0x659F # <CJK>
-0xF2F9 0x6715 # <CJK>
-0xF2FA 0xF9FD # <CJK>
-0xF2FB 0x57F7 # <CJK>
-0xF2FC 0x6F57 # <CJK>
-0xF2FD 0x7DDD # <CJK>
-0xF2FE 0x8F2F # <CJK>
-0xF3A1 0x93F6 # <CJK>
-0xF3A2 0x96C6 # <CJK>
-0xF3A3 0x5FB5 # <CJK>
-0xF3A4 0x61F2 # <CJK>
-0xF3A5 0x6F84 # <CJK>
-0xF3A6 0x4E14 # <CJK>
-0xF3A7 0x4F98 # <CJK>
-0xF3A8 0x501F # <CJK>
-0xF3A9 0x53C9 # <CJK>
-0xF3AA 0x55DF # <CJK>
-0xF3AB 0x5D6F # <CJK>
-0xF3AC 0x5DEE # <CJK>
-0xF3AD 0x6B21 # <CJK>
-0xF3AE 0x6B64 # <CJK>
-0xF3AF 0x78CB # <CJK>
-0xF3B0 0x7B9A # <CJK>
-0xF3B1 0xF9FE # <CJK>
-0xF3B2 0x8E49 # <CJK>
-0xF3B3 0x8ECA # <CJK>
-0xF3B4 0x906E # <CJK>
-0xF3B5 0x6349 # <CJK>
-0xF3B6 0x643E # <CJK>
-0xF3B7 0x7740 # <CJK>
-0xF3B8 0x7A84 # <CJK>
-0xF3B9 0x932F # <CJK>
-0xF3BA 0x947F # <CJK>
-0xF3BB 0x9F6A # <CJK>
-0xF3BC 0x64B0 # <CJK>
-0xF3BD 0x6FAF # <CJK>
-0xF3BE 0x71E6 # <CJK>
-0xF3BF 0x74A8 # <CJK>
-0xF3C0 0x74DA # <CJK>
-0xF3C1 0x7AC4 # <CJK>
-0xF3C2 0x7C12 # <CJK>
-0xF3C3 0x7E82 # <CJK>
-0xF3C4 0x7CB2 # <CJK>
-0xF3C5 0x7E98 # <CJK>
-0xF3C6 0x8B9A # <CJK>
-0xF3C7 0x8D0A # <CJK>
-0xF3C8 0x947D # <CJK>
-0xF3C9 0x9910 # <CJK>
-0xF3CA 0x994C # <CJK>
-0xF3CB 0x5239 # <CJK>
-0xF3CC 0x5BDF # <CJK>
-0xF3CD 0x64E6 # <CJK>
-0xF3CE 0x672D # <CJK>
-0xF3CF 0x7D2E # <CJK>
-0xF3D0 0x50ED # <CJK>
-0xF3D1 0x53C3 # <CJK>
-0xF3D2 0x5879 # <CJK>
-0xF3D3 0x6158 # <CJK>
-0xF3D4 0x6159 # <CJK>
-0xF3D5 0x61FA # <CJK>
-0xF3D6 0x65AC # <CJK>
-0xF3D7 0x7AD9 # <CJK>
-0xF3D8 0x8B92 # <CJK>
-0xF3D9 0x8B96 # <CJK>
-0xF3DA 0x5009 # <CJK>
-0xF3DB 0x5021 # <CJK>
-0xF3DC 0x5275 # <CJK>
-0xF3DD 0x5531 # <CJK>
-0xF3DE 0x5A3C # <CJK>
-0xF3DF 0x5EE0 # <CJK>
-0xF3E0 0x5F70 # <CJK>
-0xF3E1 0x6134 # <CJK>
-0xF3E2 0x655E # <CJK>
-0xF3E3 0x660C # <CJK>
-0xF3E4 0x6636 # <CJK>
-0xF3E5 0x66A2 # <CJK>
-0xF3E6 0x69CD # <CJK>
-0xF3E7 0x6EC4 # <CJK>
-0xF3E8 0x6F32 # <CJK>
-0xF3E9 0x7316 # <CJK>
-0xF3EA 0x7621 # <CJK>
-0xF3EB 0x7A93 # <CJK>
-0xF3EC 0x8139 # <CJK>
-0xF3ED 0x8259 # <CJK>
-0xF3EE 0x83D6 # <CJK>
-0xF3EF 0x84BC # <CJK>
-0xF3F0 0x50B5 # <CJK>
-0xF3F1 0x57F0 # <CJK>
-0xF3F2 0x5BC0 # <CJK>
-0xF3F3 0x5BE8 # <CJK>
-0xF3F4 0x5F69 # <CJK>
-0xF3F5 0x63A1 # <CJK>
-0xF3F6 0x7826 # <CJK>
-0xF3F7 0x7DB5 # <CJK>
-0xF3F8 0x83DC # <CJK>
-0xF3F9 0x8521 # <CJK>
-0xF3FA 0x91C7 # <CJK>
-0xF3FB 0x91F5 # <CJK>
-0xF3FC 0x518A # <CJK>
-0xF3FD 0x67F5 # <CJK>
-0xF3FE 0x7B56 # <CJK>
-0xF4A1 0x8CAC # <CJK>
-0xF4A2 0x51C4 # <CJK>
-0xF4A3 0x59BB # <CJK>
-0xF4A4 0x60BD # <CJK>
-0xF4A5 0x8655 # <CJK>
-0xF4A6 0x501C # <CJK>
-0xF4A7 0xF9FF # <CJK>
-0xF4A8 0x5254 # <CJK>
-0xF4A9 0x5C3A # <CJK>
-0xF4AA 0x617D # <CJK>
-0xF4AB 0x621A # <CJK>
-0xF4AC 0x62D3 # <CJK>
-0xF4AD 0x64F2 # <CJK>
-0xF4AE 0x65A5 # <CJK>
-0xF4AF 0x6ECC # <CJK>
-0xF4B0 0x7620 # <CJK>
-0xF4B1 0x810A # <CJK>
-0xF4B2 0x8E60 # <CJK>
-0xF4B3 0x965F # <CJK>
-0xF4B4 0x96BB # <CJK>
-0xF4B5 0x4EDF # <CJK>
-0xF4B6 0x5343 # <CJK>
-0xF4B7 0x5598 # <CJK>
-0xF4B8 0x5929 # <CJK>
-0xF4B9 0x5DDD # <CJK>
-0xF4BA 0x64C5 # <CJK>
-0xF4BB 0x6CC9 # <CJK>
-0xF4BC 0x6DFA # <CJK>
-0xF4BD 0x7394 # <CJK>
-0xF4BE 0x7A7F # <CJK>
-0xF4BF 0x821B # <CJK>
-0xF4C0 0x85A6 # <CJK>
-0xF4C1 0x8CE4 # <CJK>
-0xF4C2 0x8E10 # <CJK>
-0xF4C3 0x9077 # <CJK>
-0xF4C4 0x91E7 # <CJK>
-0xF4C5 0x95E1 # <CJK>
-0xF4C6 0x9621 # <CJK>
-0xF4C7 0x97C6 # <CJK>
-0xF4C8 0x51F8 # <CJK>
-0xF4C9 0x54F2 # <CJK>
-0xF4CA 0x5586 # <CJK>
-0xF4CB 0x5FB9 # <CJK>
-0xF4CC 0x64A4 # <CJK>
-0xF4CD 0x6F88 # <CJK>
-0xF4CE 0x7DB4 # <CJK>
-0xF4CF 0x8F1F # <CJK>
-0xF4D0 0x8F4D # <CJK>
-0xF4D1 0x9435 # <CJK>
-0xF4D2 0x50C9 # <CJK>
-0xF4D3 0x5C16 # <CJK>
-0xF4D4 0x6CBE # <CJK>
-0xF4D5 0x6DFB # <CJK>
-0xF4D6 0x751B # <CJK>
-0xF4D7 0x77BB # <CJK>
-0xF4D8 0x7C3D # <CJK>
-0xF4D9 0x7C64 # <CJK>
-0xF4DA 0x8A79 # <CJK>
-0xF4DB 0x8AC2 # <CJK>
-0xF4DC 0x581E # <CJK>
-0xF4DD 0x59BE # <CJK>
-0xF4DE 0x5E16 # <CJK>
-0xF4DF 0x6377 # <CJK>
-0xF4E0 0x7252 # <CJK>
-0xF4E1 0x758A # <CJK>
-0xF4E2 0x776B # <CJK>
-0xF4E3 0x8ADC # <CJK>
-0xF4E4 0x8CBC # <CJK>
-0xF4E5 0x8F12 # <CJK>
-0xF4E6 0x5EF3 # <CJK>
-0xF4E7 0x6674 # <CJK>
-0xF4E8 0x6DF8 # <CJK>
-0xF4E9 0x807D # <CJK>
-0xF4EA 0x83C1 # <CJK>
-0xF4EB 0x8ACB # <CJK>
-0xF4EC 0x9751 # <CJK>
-0xF4ED 0x9BD6 # <CJK>
-0xF4EE 0xFA00 # <CJK>
-0xF4EF 0x5243 # <CJK>
-0xF4F0 0x66FF # <CJK>
-0xF4F1 0x6D95 # <CJK>
-0xF4F2 0x6EEF # <CJK>
-0xF4F3 0x7DE0 # <CJK>
-0xF4F4 0x8AE6 # <CJK>
-0xF4F5 0x902E # <CJK>
-0xF4F6 0x905E # <CJK>
-0xF4F7 0x9AD4 # <CJK>
-0xF4F8 0x521D # <CJK>
-0xF4F9 0x527F # <CJK>
-0xF4FA 0x54E8 # <CJK>
-0xF4FB 0x6194 # <CJK>
-0xF4FC 0x6284 # <CJK>
-0xF4FD 0x62DB # <CJK>
-0xF4FE 0x68A2 # <CJK>
-0xF5A1 0x6912 # <CJK>
-0xF5A2 0x695A # <CJK>
-0xF5A3 0x6A35 # <CJK>
-0xF5A4 0x7092 # <CJK>
-0xF5A5 0x7126 # <CJK>
-0xF5A6 0x785D # <CJK>
-0xF5A7 0x7901 # <CJK>
-0xF5A8 0x790E # <CJK>
-0xF5A9 0x79D2 # <CJK>
-0xF5AA 0x7A0D # <CJK>
-0xF5AB 0x8096 # <CJK>
-0xF5AC 0x8278 # <CJK>
-0xF5AD 0x82D5 # <CJK>
-0xF5AE 0x8349 # <CJK>
-0xF5AF 0x8549 # <CJK>
-0xF5B0 0x8C82 # <CJK>
-0xF5B1 0x8D85 # <CJK>
-0xF5B2 0x9162 # <CJK>
-0xF5B3 0x918B # <CJK>
-0xF5B4 0x91AE # <CJK>
-0xF5B5 0x4FC3 # <CJK>
-0xF5B6 0x56D1 # <CJK>
-0xF5B7 0x71ED # <CJK>
-0xF5B8 0x77D7 # <CJK>
-0xF5B9 0x8700 # <CJK>
-0xF5BA 0x89F8 # <CJK>
-0xF5BB 0x5BF8 # <CJK>
-0xF5BC 0x5FD6 # <CJK>
-0xF5BD 0x6751 # <CJK>
-0xF5BE 0x90A8 # <CJK>
-0xF5BF 0x53E2 # <CJK>
-0xF5C0 0x585A # <CJK>
-0xF5C1 0x5BF5 # <CJK>
-0xF5C2 0x60A4 # <CJK>
-0xF5C3 0x6181 # <CJK>
-0xF5C4 0x6460 # <CJK>
-0xF5C5 0x7E3D # <CJK>
-0xF5C6 0x8070 # <CJK>
-0xF5C7 0x8525 # <CJK>
-0xF5C8 0x9283 # <CJK>
-0xF5C9 0x64AE # <CJK>
-0xF5CA 0x50AC # <CJK>
-0xF5CB 0x5D14 # <CJK>
-0xF5CC 0x6700 # <CJK>
-0xF5CD 0x589C # <CJK>
-0xF5CE 0x62BD # <CJK>
-0xF5CF 0x63A8 # <CJK>
-0xF5D0 0x690E # <CJK>
-0xF5D1 0x6978 # <CJK>
-0xF5D2 0x6A1E # <CJK>
-0xF5D3 0x6E6B # <CJK>
-0xF5D4 0x76BA # <CJK>
-0xF5D5 0x79CB # <CJK>
-0xF5D6 0x82BB # <CJK>
-0xF5D7 0x8429 # <CJK>
-0xF5D8 0x8ACF # <CJK>
-0xF5D9 0x8DA8 # <CJK>
-0xF5DA 0x8FFD # <CJK>
-0xF5DB 0x9112 # <CJK>
-0xF5DC 0x914B # <CJK>
-0xF5DD 0x919C # <CJK>
-0xF5DE 0x9310 # <CJK>
-0xF5DF 0x9318 # <CJK>
-0xF5E0 0x939A # <CJK>
-0xF5E1 0x96DB # <CJK>
-0xF5E2 0x9A36 # <CJK>
-0xF5E3 0x9C0D # <CJK>
-0xF5E4 0x4E11 # <CJK>
-0xF5E5 0x755C # <CJK>
-0xF5E6 0x795D # <CJK>
-0xF5E7 0x7AFA # <CJK>
-0xF5E8 0x7B51 # <CJK>
-0xF5E9 0x7BC9 # <CJK>
-0xF5EA 0x7E2E # <CJK>
-0xF5EB 0x84C4 # <CJK>
-0xF5EC 0x8E59 # <CJK>
-0xF5ED 0x8E74 # <CJK>
-0xF5EE 0x8EF8 # <CJK>
-0xF5EF 0x9010 # <CJK>
-0xF5F0 0x6625 # <CJK>
-0xF5F1 0x693F # <CJK>
-0xF5F2 0x7443 # <CJK>
-0xF5F3 0x51FA # <CJK>
-0xF5F4 0x672E # <CJK>
-0xF5F5 0x9EDC # <CJK>
-0xF5F6 0x5145 # <CJK>
-0xF5F7 0x5FE0 # <CJK>
-0xF5F8 0x6C96 # <CJK>
-0xF5F9 0x87F2 # <CJK>
-0xF5FA 0x885D # <CJK>
-0xF5FB 0x8877 # <CJK>
-0xF5FC 0x60B4 # <CJK>
-0xF5FD 0x81B5 # <CJK>
-0xF5FE 0x8403 # <CJK>
-0xF6A1 0x8D05 # <CJK>
-0xF6A2 0x53D6 # <CJK>
-0xF6A3 0x5439 # <CJK>
-0xF6A4 0x5634 # <CJK>
-0xF6A5 0x5A36 # <CJK>
-0xF6A6 0x5C31 # <CJK>
-0xF6A7 0x708A # <CJK>
-0xF6A8 0x7FE0 # <CJK>
-0xF6A9 0x805A # <CJK>
-0xF6AA 0x8106 # <CJK>
-0xF6AB 0x81ED # <CJK>
-0xF6AC 0x8DA3 # <CJK>
-0xF6AD 0x9189 # <CJK>
-0xF6AE 0x9A5F # <CJK>
-0xF6AF 0x9DF2 # <CJK>
-0xF6B0 0x5074 # <CJK>
-0xF6B1 0x4EC4 # <CJK>
-0xF6B2 0x53A0 # <CJK>
-0xF6B3 0x60FB # <CJK>
-0xF6B4 0x6E2C # <CJK>
-0xF6B5 0x5C64 # <CJK>
-0xF6B6 0x4F88 # <CJK>
-0xF6B7 0x5024 # <CJK>
-0xF6B8 0x55E4 # <CJK>
-0xF6B9 0x5CD9 # <CJK>
-0xF6BA 0x5E5F # <CJK>
-0xF6BB 0x6065 # <CJK>
-0xF6BC 0x6894 # <CJK>
-0xF6BD 0x6CBB # <CJK>
-0xF6BE 0x6DC4 # <CJK>
-0xF6BF 0x71BE # <CJK>
-0xF6C0 0x75D4 # <CJK>
-0xF6C1 0x75F4 # <CJK>
-0xF6C2 0x7661 # <CJK>
-0xF6C3 0x7A1A # <CJK>
-0xF6C4 0x7A49 # <CJK>
-0xF6C5 0x7DC7 # <CJK>
-0xF6C6 0x7DFB # <CJK>
-0xF6C7 0x7F6E # <CJK>
-0xF6C8 0x81F4 # <CJK>
-0xF6C9 0x86A9 # <CJK>
-0xF6CA 0x8F1C # <CJK>
-0xF6CB 0x96C9 # <CJK>
-0xF6CC 0x99B3 # <CJK>
-0xF6CD 0x9F52 # <CJK>
-0xF6CE 0x5247 # <CJK>
-0xF6CF 0x52C5 # <CJK>
-0xF6D0 0x98ED # <CJK>
-0xF6D1 0x89AA # <CJK>
-0xF6D2 0x4E03 # <CJK>
-0xF6D3 0x67D2 # <CJK>
-0xF6D4 0x6F06 # <CJK>
-0xF6D5 0x4FB5 # <CJK>
-0xF6D6 0x5BE2 # <CJK>
-0xF6D7 0x6795 # <CJK>
-0xF6D8 0x6C88 # <CJK>
-0xF6D9 0x6D78 # <CJK>
-0xF6DA 0x741B # <CJK>
-0xF6DB 0x7827 # <CJK>
-0xF6DC 0x91DD # <CJK>
-0xF6DD 0x937C # <CJK>
-0xF6DE 0x87C4 # <CJK>
-0xF6DF 0x79E4 # <CJK>
-0xF6E0 0x7A31 # <CJK>
-0xF6E1 0x5FEB # <CJK>
-0xF6E2 0x4ED6 # <CJK>
-0xF6E3 0x54A4 # <CJK>
-0xF6E4 0x553E # <CJK>
-0xF6E5 0x58AE # <CJK>
-0xF6E6 0x59A5 # <CJK>
-0xF6E7 0x60F0 # <CJK>
-0xF6E8 0x6253 # <CJK>
-0xF6E9 0x62D6 # <CJK>
-0xF6EA 0x6736 # <CJK>
-0xF6EB 0x6955 # <CJK>
-0xF6EC 0x8235 # <CJK>
-0xF6ED 0x9640 # <CJK>
-0xF6EE 0x99B1 # <CJK>
-0xF6EF 0x99DD # <CJK>
-0xF6F0 0x502C # <CJK>
-0xF6F1 0x5353 # <CJK>
-0xF6F2 0x5544 # <CJK>
-0xF6F3 0x577C # <CJK>
-0xF6F4 0xFA01 # <CJK>
-0xF6F5 0x6258 # <CJK>
-0xF6F6 0xFA02 # <CJK>
-0xF6F7 0x64E2 # <CJK>
-0xF6F8 0x666B # <CJK>
-0xF6F9 0x67DD # <CJK>
-0xF6FA 0x6FC1 # <CJK>
-0xF6FB 0x6FEF # <CJK>
-0xF6FC 0x7422 # <CJK>
-0xF6FD 0x7438 # <CJK>
-0xF6FE 0x8A17 # <CJK>
-0xF7A1 0x9438 # <CJK>
-0xF7A2 0x5451 # <CJK>
-0xF7A3 0x5606 # <CJK>
-0xF7A4 0x5766 # <CJK>
-0xF7A5 0x5F48 # <CJK>
-0xF7A6 0x619A # <CJK>
-0xF7A7 0x6B4E # <CJK>
-0xF7A8 0x7058 # <CJK>
-0xF7A9 0x70AD # <CJK>
-0xF7AA 0x7DBB # <CJK>
-0xF7AB 0x8A95 # <CJK>
-0xF7AC 0x596A # <CJK>
-0xF7AD 0x812B # <CJK>
-0xF7AE 0x63A2 # <CJK>
-0xF7AF 0x7708 # <CJK>
-0xF7B0 0x803D # <CJK>
-0xF7B1 0x8CAA # <CJK>
-0xF7B2 0x5854 # <CJK>
-0xF7B3 0x642D # <CJK>
-0xF7B4 0x69BB # <CJK>
-0xF7B5 0x5B95 # <CJK>
-0xF7B6 0x5E11 # <CJK>
-0xF7B7 0x6E6F # <CJK>
-0xF7B8 0xFA03 # <CJK>
-0xF7B9 0x8569 # <CJK>
-0xF7BA 0x514C # <CJK>
-0xF7BB 0x53F0 # <CJK>
-0xF7BC 0x592A # <CJK>
-0xF7BD 0x6020 # <CJK>
-0xF7BE 0x614B # <CJK>
-0xF7BF 0x6B86 # <CJK>
-0xF7C0 0x6C70 # <CJK>
-0xF7C1 0x6CF0 # <CJK>
-0xF7C2 0x7B1E # <CJK>
-0xF7C3 0x80CE # <CJK>
-0xF7C4 0x82D4 # <CJK>
-0xF7C5 0x8DC6 # <CJK>
-0xF7C6 0x90B0 # <CJK>
-0xF7C7 0x98B1 # <CJK>
-0xF7C8 0xFA04 # <CJK>
-0xF7C9 0x64C7 # <CJK>
-0xF7CA 0x6FA4 # <CJK>
-0xF7CB 0x6491 # <CJK>
-0xF7CC 0x6504 # <CJK>
-0xF7CD 0x514E # <CJK>
-0xF7CE 0x5410 # <CJK>
-0xF7CF 0x571F # <CJK>
-0xF7D0 0x8A0E # <CJK>
-0xF7D1 0x615F # <CJK>
-0xF7D2 0x6876 # <CJK>
-0xF7D3 0xFA05 # <CJK>
-0xF7D4 0x75DB # <CJK>
-0xF7D5 0x7B52 # <CJK>
-0xF7D6 0x7D71 # <CJK>
-0xF7D7 0x901A # <CJK>
-0xF7D8 0x5806 # <CJK>
-0xF7D9 0x69CC # <CJK>
-0xF7DA 0x817F # <CJK>
-0xF7DB 0x892A # <CJK>
-0xF7DC 0x9000 # <CJK>
-0xF7DD 0x9839 # <CJK>
-0xF7DE 0x5078 # <CJK>
-0xF7DF 0x5957 # <CJK>
-0xF7E0 0x59AC # <CJK>
-0xF7E1 0x6295 # <CJK>
-0xF7E2 0x900F # <CJK>
-0xF7E3 0x9B2A # <CJK>
-0xF7E4 0x615D # <CJK>
-0xF7E5 0x7279 # <CJK>
-0xF7E6 0x95D6 # <CJK>
-0xF7E7 0x5761 # <CJK>
-0xF7E8 0x5A46 # <CJK>
-0xF7E9 0x5DF4 # <CJK>
-0xF7EA 0x628A # <CJK>
-0xF7EB 0x64AD # <CJK>
-0xF7EC 0x64FA # <CJK>
-0xF7ED 0x6777 # <CJK>
-0xF7EE 0x6CE2 # <CJK>
-0xF7EF 0x6D3E # <CJK>
-0xF7F0 0x722C # <CJK>
-0xF7F1 0x7436 # <CJK>
-0xF7F2 0x7834 # <CJK>
-0xF7F3 0x7F77 # <CJK>
-0xF7F4 0x82AD # <CJK>
-0xF7F5 0x8DDB # <CJK>
-0xF7F6 0x9817 # <CJK>
-0xF7F7 0x5224 # <CJK>
-0xF7F8 0x5742 # <CJK>
-0xF7F9 0x677F # <CJK>
-0xF7FA 0x7248 # <CJK>
-0xF7FB 0x74E3 # <CJK>
-0xF7FC 0x8CA9 # <CJK>
-0xF7FD 0x8FA6 # <CJK>
-0xF7FE 0x9211 # <CJK>
-0xF8A1 0x962A # <CJK>
-0xF8A2 0x516B # <CJK>
-0xF8A3 0x53ED # <CJK>
-0xF8A4 0x634C # <CJK>
-0xF8A5 0x4F69 # <CJK>
-0xF8A6 0x5504 # <CJK>
-0xF8A7 0x6096 # <CJK>
-0xF8A8 0x6557 # <CJK>
-0xF8A9 0x6C9B # <CJK>
-0xF8AA 0x6D7F # <CJK>
-0xF8AB 0x724C # <CJK>
-0xF8AC 0x72FD # <CJK>
-0xF8AD 0x7A17 # <CJK>
-0xF8AE 0x8987 # <CJK>
-0xF8AF 0x8C9D # <CJK>
-0xF8B0 0x5F6D # <CJK>
-0xF8B1 0x6F8E # <CJK>
-0xF8B2 0x70F9 # <CJK>
-0xF8B3 0x81A8 # <CJK>
-0xF8B4 0x610E # <CJK>
-0xF8B5 0x4FBF # <CJK>
-0xF8B6 0x504F # <CJK>
-0xF8B7 0x6241 # <CJK>
-0xF8B8 0x7247 # <CJK>
-0xF8B9 0x7BC7 # <CJK>
-0xF8BA 0x7DE8 # <CJK>
-0xF8BB 0x7FE9 # <CJK>
-0xF8BC 0x904D # <CJK>
-0xF8BD 0x97AD # <CJK>
-0xF8BE 0x9A19 # <CJK>
-0xF8BF 0x8CB6 # <CJK>
-0xF8C0 0x576A # <CJK>
-0xF8C1 0x5E73 # <CJK>
-0xF8C2 0x67B0 # <CJK>
-0xF8C3 0x840D # <CJK>
-0xF8C4 0x8A55 # <CJK>
-0xF8C5 0x5420 # <CJK>
-0xF8C6 0x5B16 # <CJK>
-0xF8C7 0x5E63 # <CJK>
-0xF8C8 0x5EE2 # <CJK>
-0xF8C9 0x5F0A # <CJK>
-0xF8CA 0x6583 # <CJK>
-0xF8CB 0x80BA # <CJK>
-0xF8CC 0x853D # <CJK>
-0xF8CD 0x9589 # <CJK>
-0xF8CE 0x965B # <CJK>
-0xF8CF 0x4F48 # <CJK>
-0xF8D0 0x5305 # <CJK>
-0xF8D1 0x530D # <CJK>
-0xF8D2 0x530F # <CJK>
-0xF8D3 0x5486 # <CJK>
-0xF8D4 0x54FA # <CJK>
-0xF8D5 0x5703 # <CJK>
-0xF8D6 0x5E03 # <CJK>
-0xF8D7 0x6016 # <CJK>
-0xF8D8 0x629B # <CJK>
-0xF8D9 0x62B1 # <CJK>
-0xF8DA 0x6355 # <CJK>
-0xF8DB 0xFA06 # <CJK>
-0xF8DC 0x6CE1 # <CJK>
-0xF8DD 0x6D66 # <CJK>
-0xF8DE 0x75B1 # <CJK>
-0xF8DF 0x7832 # <CJK>
-0xF8E0 0x80DE # <CJK>
-0xF8E1 0x812F # <CJK>
-0xF8E2 0x82DE # <CJK>
-0xF8E3 0x8461 # <CJK>
-0xF8E4 0x84B2 # <CJK>
-0xF8E5 0x888D # <CJK>
-0xF8E6 0x8912 # <CJK>
-0xF8E7 0x900B # <CJK>
-0xF8E8 0x92EA # <CJK>
-0xF8E9 0x98FD # <CJK>
-0xF8EA 0x9B91 # <CJK>
-0xF8EB 0x5E45 # <CJK>
-0xF8EC 0x66B4 # <CJK>
-0xF8ED 0x66DD # <CJK>
-0xF8EE 0x7011 # <CJK>
-0xF8EF 0x7206 # <CJK>
-0xF8F0 0xFA07 # <CJK>
-0xF8F1 0x4FF5 # <CJK>
-0xF8F2 0x527D # <CJK>
-0xF8F3 0x5F6A # <CJK>
-0xF8F4 0x6153 # <CJK>
-0xF8F5 0x6753 # <CJK>
-0xF8F6 0x6A19 # <CJK>
-0xF8F7 0x6F02 # <CJK>
-0xF8F8 0x74E2 # <CJK>
-0xF8F9 0x7968 # <CJK>
-0xF8FA 0x8868 # <CJK>
-0xF8FB 0x8C79 # <CJK>
-0xF8FC 0x98C7 # <CJK>
-0xF8FD 0x98C4 # <CJK>
-0xF8FE 0x9A43 # <CJK>
-0xF9A1 0x54C1 # <CJK>
-0xF9A2 0x7A1F # <CJK>
-0xF9A3 0x6953 # <CJK>
-0xF9A4 0x8AF7 # <CJK>
-0xF9A5 0x8C4A # <CJK>
-0xF9A6 0x98A8 # <CJK>
-0xF9A7 0x99AE # <CJK>
-0xF9A8 0x5F7C # <CJK>
-0xF9A9 0x62AB # <CJK>
-0xF9AA 0x75B2 # <CJK>
-0xF9AB 0x76AE # <CJK>
-0xF9AC 0x88AB # <CJK>
-0xF9AD 0x907F # <CJK>
-0xF9AE 0x9642 # <CJK>
-0xF9AF 0x5339 # <CJK>
-0xF9B0 0x5F3C # <CJK>
-0xF9B1 0x5FC5 # <CJK>
-0xF9B2 0x6CCC # <CJK>
-0xF9B3 0x73CC # <CJK>
-0xF9B4 0x7562 # <CJK>
-0xF9B5 0x758B # <CJK>
-0xF9B6 0x7B46 # <CJK>
-0xF9B7 0x82FE # <CJK>
-0xF9B8 0x999D # <CJK>
-0xF9B9 0x4E4F # <CJK>
-0xF9BA 0x903C # <CJK>
-0xF9BB 0x4E0B # <CJK>
-0xF9BC 0x4F55 # <CJK>
-0xF9BD 0x53A6 # <CJK>
-0xF9BE 0x590F # <CJK>
-0xF9BF 0x5EC8 # <CJK>
-0xF9C0 0x6630 # <CJK>
-0xF9C1 0x6CB3 # <CJK>
-0xF9C2 0x7455 # <CJK>
-0xF9C3 0x8377 # <CJK>
-0xF9C4 0x8766 # <CJK>
-0xF9C5 0x8CC0 # <CJK>
-0xF9C6 0x9050 # <CJK>
-0xF9C7 0x971E # <CJK>
-0xF9C8 0x9C15 # <CJK>
-0xF9C9 0x58D1 # <CJK>
-0xF9CA 0x5B78 # <CJK>
-0xF9CB 0x8650 # <CJK>
-0xF9CC 0x8B14 # <CJK>
-0xF9CD 0x9DB4 # <CJK>
-0xF9CE 0x5BD2 # <CJK>
-0xF9CF 0x6068 # <CJK>
-0xF9D0 0x608D # <CJK>
-0xF9D1 0x65F1 # <CJK>
-0xF9D2 0x6C57 # <CJK>
-0xF9D3 0x6F22 # <CJK>
-0xF9D4 0x6FA3 # <CJK>
-0xF9D5 0x701A # <CJK>
-0xF9D6 0x7F55 # <CJK>
-0xF9D7 0x7FF0 # <CJK>
-0xF9D8 0x9591 # <CJK>
-0xF9D9 0x9592 # <CJK>
-0xF9DA 0x9650 # <CJK>
-0xF9DB 0x97D3 # <CJK>
-0xF9DC 0x5272 # <CJK>
-0xF9DD 0x8F44 # <CJK>
-0xF9DE 0x51FD # <CJK>
-0xF9DF 0x542B # <CJK>
-0xF9E0 0x54B8 # <CJK>
-0xF9E1 0x5563 # <CJK>
-0xF9E2 0x558A # <CJK>
-0xF9E3 0x6ABB # <CJK>
-0xF9E4 0x6DB5 # <CJK>
-0xF9E5 0x7DD8 # <CJK>
-0xF9E6 0x8266 # <CJK>
-0xF9E7 0x929C # <CJK>
-0xF9E8 0x9677 # <CJK>
-0xF9E9 0x9E79 # <CJK>
-0xF9EA 0x5408 # <CJK>
-0xF9EB 0x54C8 # <CJK>
-0xF9EC 0x76D2 # <CJK>
-0xF9ED 0x86E4 # <CJK>
-0xF9EE 0x95A4 # <CJK>
-0xF9EF 0x95D4 # <CJK>
-0xF9F0 0x965C # <CJK>
-0xF9F1 0x4EA2 # <CJK>
-0xF9F2 0x4F09 # <CJK>
-0xF9F3 0x59EE # <CJK>
-0xF9F4 0x5AE6 # <CJK>
-0xF9F5 0x5DF7 # <CJK>
-0xF9F6 0x6052 # <CJK>
-0xF9F7 0x6297 # <CJK>
-0xF9F8 0x676D # <CJK>
-0xF9F9 0x6841 # <CJK>
-0xF9FA 0x6C86 # <CJK>
-0xF9FB 0x6E2F # <CJK>
-0xF9FC 0x7F38 # <CJK>
-0xF9FD 0x809B # <CJK>
-0xF9FE 0x822A # <CJK>
-0xFAA1 0xFA08 # <CJK>
-0xFAA2 0xFA09 # <CJK>
-0xFAA3 0x9805 # <CJK>
-0xFAA4 0x4EA5 # <CJK>
-0xFAA5 0x5055 # <CJK>
-0xFAA6 0x54B3 # <CJK>
-0xFAA7 0x5793 # <CJK>
-0xFAA8 0x595A # <CJK>
-0xFAA9 0x5B69 # <CJK>
-0xFAAA 0x5BB3 # <CJK>
-0xFAAB 0x61C8 # <CJK>
-0xFAAC 0x6977 # <CJK>
-0xFAAD 0x6D77 # <CJK>
-0xFAAE 0x7023 # <CJK>
-0xFAAF 0x87F9 # <CJK>
-0xFAB0 0x89E3 # <CJK>
-0xFAB1 0x8A72 # <CJK>
-0xFAB2 0x8AE7 # <CJK>
-0xFAB3 0x9082 # <CJK>
-0xFAB4 0x99ED # <CJK>
-0xFAB5 0x9AB8 # <CJK>
-0xFAB6 0x52BE # <CJK>
-0xFAB7 0x6838 # <CJK>
-0xFAB8 0x5016 # <CJK>
-0xFAB9 0x5E78 # <CJK>
-0xFABA 0x674F # <CJK>
-0xFABB 0x8347 # <CJK>
-0xFABC 0x884C # <CJK>
-0xFABD 0x4EAB # <CJK>
-0xFABE 0x5411 # <CJK>
-0xFABF 0x56AE # <CJK>
-0xFAC0 0x73E6 # <CJK>
-0xFAC1 0x9115 # <CJK>
-0xFAC2 0x97FF # <CJK>
-0xFAC3 0x9909 # <CJK>
-0xFAC4 0x9957 # <CJK>
-0xFAC5 0x9999 # <CJK>
-0xFAC6 0x5653 # <CJK>
-0xFAC7 0x589F # <CJK>
-0xFAC8 0x865B # <CJK>
-0xFAC9 0x8A31 # <CJK>
-0xFACA 0x61B2 # <CJK>
-0xFACB 0x6AF6 # <CJK>
-0xFACC 0x737B # <CJK>
-0xFACD 0x8ED2 # <CJK>
-0xFACE 0x6B47 # <CJK>
-0xFACF 0x96AA # <CJK>
-0xFAD0 0x9A57 # <CJK>
-0xFAD1 0x5955 # <CJK>
-0xFAD2 0x7200 # <CJK>
-0xFAD3 0x8D6B # <CJK>
-0xFAD4 0x9769 # <CJK>
-0xFAD5 0x4FD4 # <CJK>
-0xFAD6 0x5CF4 # <CJK>
-0xFAD7 0x5F26 # <CJK>
-0xFAD8 0x61F8 # <CJK>
-0xFAD9 0x665B # <CJK>
-0xFADA 0x6CEB # <CJK>
-0xFADB 0x70AB # <CJK>
-0xFADC 0x7384 # <CJK>
-0xFADD 0x73B9 # <CJK>
-0xFADE 0x73FE # <CJK>
-0xFADF 0x7729 # <CJK>
-0xFAE0 0x774D # <CJK>
-0xFAE1 0x7D43 # <CJK>
-0xFAE2 0x7D62 # <CJK>
-0xFAE3 0x7E23 # <CJK>
-0xFAE4 0x8237 # <CJK>
-0xFAE5 0x8852 # <CJK>
-0xFAE6 0xFA0A # <CJK>
-0xFAE7 0x8CE2 # <CJK>
-0xFAE8 0x9249 # <CJK>
-0xFAE9 0x986F # <CJK>
-0xFAEA 0x5B51 # <CJK>
-0xFAEB 0x7A74 # <CJK>
-0xFAEC 0x8840 # <CJK>
-0xFAED 0x9801 # <CJK>
-0xFAEE 0x5ACC # <CJK>
-0xFAEF 0x4FE0 # <CJK>
-0xFAF0 0x5354 # <CJK>
-0xFAF1 0x593E # <CJK>
-0xFAF2 0x5CFD # <CJK>
-0xFAF3 0x633E # <CJK>
-0xFAF4 0x6D79 # <CJK>
-0xFAF5 0x72F9 # <CJK>
-0xFAF6 0x8105 # <CJK>
-0xFAF7 0x8107 # <CJK>
-0xFAF8 0x83A2 # <CJK>
-0xFAF9 0x92CF # <CJK>
-0xFAFA 0x9830 # <CJK>
-0xFAFB 0x4EA8 # <CJK>
-0xFAFC 0x5144 # <CJK>
-0xFAFD 0x5211 # <CJK>
-0xFAFE 0x578B # <CJK>
-0xFBA1 0x5F62 # <CJK>
-0xFBA2 0x6CC2 # <CJK>
-0xFBA3 0x6ECE # <CJK>
-0xFBA4 0x7005 # <CJK>
-0xFBA5 0x7050 # <CJK>
-0xFBA6 0x70AF # <CJK>
-0xFBA7 0x7192 # <CJK>
-0xFBA8 0x73E9 # <CJK>
-0xFBA9 0x7469 # <CJK>
-0xFBAA 0x834A # <CJK>
-0xFBAB 0x87A2 # <CJK>
-0xFBAC 0x8861 # <CJK>
-0xFBAD 0x9008 # <CJK>
-0xFBAE 0x90A2 # <CJK>
-0xFBAF 0x93A3 # <CJK>
-0xFBB0 0x99A8 # <CJK>
-0xFBB1 0x516E # <CJK>
-0xFBB2 0x5F57 # <CJK>
-0xFBB3 0x60E0 # <CJK>
-0xFBB4 0x6167 # <CJK>
-0xFBB5 0x66B3 # <CJK>
-0xFBB6 0x8559 # <CJK>
-0xFBB7 0x8E4A # <CJK>
-0xFBB8 0x91AF # <CJK>
-0xFBB9 0x978B # <CJK>
-0xFBBA 0x4E4E # <CJK>
-0xFBBB 0x4E92 # <CJK>
-0xFBBC 0x547C # <CJK>
-0xFBBD 0x58D5 # <CJK>
-0xFBBE 0x58FA # <CJK>
-0xFBBF 0x597D # <CJK>
-0xFBC0 0x5CB5 # <CJK>
-0xFBC1 0x5F27 # <CJK>
-0xFBC2 0x6236 # <CJK>
-0xFBC3 0x6248 # <CJK>
-0xFBC4 0x660A # <CJK>
-0xFBC5 0x6667 # <CJK>
-0xFBC6 0x6BEB # <CJK>
-0xFBC7 0x6D69 # <CJK>
-0xFBC8 0x6DCF # <CJK>
-0xFBC9 0x6E56 # <CJK>
-0xFBCA 0x6EF8 # <CJK>
-0xFBCB 0x6F94 # <CJK>
-0xFBCC 0x6FE0 # <CJK>
-0xFBCD 0x6FE9 # <CJK>
-0xFBCE 0x705D # <CJK>
-0xFBCF 0x72D0 # <CJK>
-0xFBD0 0x7425 # <CJK>
-0xFBD1 0x745A # <CJK>
-0xFBD2 0x74E0 # <CJK>
-0xFBD3 0x7693 # <CJK>
-0xFBD4 0x795C # <CJK>
-0xFBD5 0x7CCA # <CJK>
-0xFBD6 0x7E1E # <CJK>
-0xFBD7 0x80E1 # <CJK>
-0xFBD8 0x82A6 # <CJK>
-0xFBD9 0x846B # <CJK>
-0xFBDA 0x84BF # <CJK>
-0xFBDB 0x864E # <CJK>
-0xFBDC 0x865F # <CJK>
-0xFBDD 0x8774 # <CJK>
-0xFBDE 0x8B77 # <CJK>
-0xFBDF 0x8C6A # <CJK>
-0xFBE0 0x93AC # <CJK>
-0xFBE1 0x9800 # <CJK>
-0xFBE2 0x9865 # <CJK>
-0xFBE3 0x60D1 # <CJK>
-0xFBE4 0x6216 # <CJK>
-0xFBE5 0x9177 # <CJK>
-0xFBE6 0x5A5A # <CJK>
-0xFBE7 0x660F # <CJK>
-0xFBE8 0x6DF7 # <CJK>
-0xFBE9 0x6E3E # <CJK>
-0xFBEA 0x743F # <CJK>
-0xFBEB 0x9B42 # <CJK>
-0xFBEC 0x5FFD # <CJK>
-0xFBED 0x60DA # <CJK>
-0xFBEE 0x7B0F # <CJK>
-0xFBEF 0x54C4 # <CJK>
-0xFBF0 0x5F18 # <CJK>
-0xFBF1 0x6C5E # <CJK>
-0xFBF2 0x6CD3 # <CJK>
-0xFBF3 0x6D2A # <CJK>
-0xFBF4 0x70D8 # <CJK>
-0xFBF5 0x7D05 # <CJK>
-0xFBF6 0x8679 # <CJK>
-0xFBF7 0x8A0C # <CJK>
-0xFBF8 0x9D3B # <CJK>
-0xFBF9 0x5316 # <CJK>
-0xFBFA 0x548C # <CJK>
-0xFBFB 0x5B05 # <CJK>
-0xFBFC 0x6A3A # <CJK>
-0xFBFD 0x706B # <CJK>
-0xFBFE 0x7575 # <CJK>
-0xFCA1 0x798D # <CJK>
-0xFCA2 0x79BE # <CJK>
-0xFCA3 0x82B1 # <CJK>
-0xFCA4 0x83EF # <CJK>
-0xFCA5 0x8A71 # <CJK>
-0xFCA6 0x8B41 # <CJK>
-0xFCA7 0x8CA8 # <CJK>
-0xFCA8 0x9774 # <CJK>
-0xFCA9 0xFA0B # <CJK>
-0xFCAA 0x64F4 # <CJK>
-0xFCAB 0x652B # <CJK>
-0xFCAC 0x78BA # <CJK>
-0xFCAD 0x78BB # <CJK>
-0xFCAE 0x7A6B # <CJK>
-0xFCAF 0x4E38 # <CJK>
-0xFCB0 0x559A # <CJK>
-0xFCB1 0x5950 # <CJK>
-0xFCB2 0x5BA6 # <CJK>
-0xFCB3 0x5E7B # <CJK>
-0xFCB4 0x60A3 # <CJK>
-0xFCB5 0x63DB # <CJK>
-0xFCB6 0x6B61 # <CJK>
-0xFCB7 0x6665 # <CJK>
-0xFCB8 0x6853 # <CJK>
-0xFCB9 0x6E19 # <CJK>
-0xFCBA 0x7165 # <CJK>
-0xFCBB 0x74B0 # <CJK>
-0xFCBC 0x7D08 # <CJK>
-0xFCBD 0x9084 # <CJK>
-0xFCBE 0x9A69 # <CJK>
-0xFCBF 0x9C25 # <CJK>
-0xFCC0 0x6D3B # <CJK>
-0xFCC1 0x6ED1 # <CJK>
-0xFCC2 0x733E # <CJK>
-0xFCC3 0x8C41 # <CJK>
-0xFCC4 0x95CA # <CJK>
-0xFCC5 0x51F0 # <CJK>
-0xFCC6 0x5E4C # <CJK>
-0xFCC7 0x5FA8 # <CJK>
-0xFCC8 0x604D # <CJK>
-0xFCC9 0x60F6 # <CJK>
-0xFCCA 0x6130 # <CJK>
-0xFCCB 0x614C # <CJK>
-0xFCCC 0x6643 # <CJK>
-0xFCCD 0x6644 # <CJK>
-0xFCCE 0x69A5 # <CJK>
-0xFCCF 0x6CC1 # <CJK>
-0xFCD0 0x6E5F # <CJK>
-0xFCD1 0x6EC9 # <CJK>
-0xFCD2 0x6F62 # <CJK>
-0xFCD3 0x714C # <CJK>
-0xFCD4 0x749C # <CJK>
-0xFCD5 0x7687 # <CJK>
-0xFCD6 0x7BC1 # <CJK>
-0xFCD7 0x7C27 # <CJK>
-0xFCD8 0x8352 # <CJK>
-0xFCD9 0x8757 # <CJK>
-0xFCDA 0x9051 # <CJK>
-0xFCDB 0x968D # <CJK>
-0xFCDC 0x9EC3 # <CJK>
-0xFCDD 0x532F # <CJK>
-0xFCDE 0x56DE # <CJK>
-0xFCDF 0x5EFB # <CJK>
-0xFCE0 0x5F8A # <CJK>
-0xFCE1 0x6062 # <CJK>
-0xFCE2 0x6094 # <CJK>
-0xFCE3 0x61F7 # <CJK>
-0xFCE4 0x6666 # <CJK>
-0xFCE5 0x6703 # <CJK>
-0xFCE6 0x6A9C # <CJK>
-0xFCE7 0x6DEE # <CJK>
-0xFCE8 0x6FAE # <CJK>
-0xFCE9 0x7070 # <CJK>
-0xFCEA 0x736A # <CJK>
-0xFCEB 0x7E6A # <CJK>
-0xFCEC 0x81BE # <CJK>
-0xFCED 0x8334 # <CJK>
-0xFCEE 0x86D4 # <CJK>
-0xFCEF 0x8AA8 # <CJK>
-0xFCF0 0x8CC4 # <CJK>
-0xFCF1 0x5283 # <CJK>
-0xFCF2 0x7372 # <CJK>
-0xFCF3 0x5B96 # <CJK>
-0xFCF4 0x6A6B # <CJK>
-0xFCF5 0x9404 # <CJK>
-0xFCF6 0x54EE # <CJK>
-0xFCF7 0x5686 # <CJK>
-0xFCF8 0x5B5D # <CJK>
-0xFCF9 0x6548 # <CJK>
-0xFCFA 0x6585 # <CJK>
-0xFCFB 0x66C9 # <CJK>
-0xFCFC 0x689F # <CJK>
-0xFCFD 0x6D8D # <CJK>
-0xFCFE 0x6DC6 # <CJK>
-0xFDA1 0x723B # <CJK>
-0xFDA2 0x80B4 # <CJK>
-0xFDA3 0x9175 # <CJK>
-0xFDA4 0x9A4D # <CJK>
-0xFDA5 0x4FAF # <CJK>
-0xFDA6 0x5019 # <CJK>
-0xFDA7 0x539A # <CJK>
-0xFDA8 0x540E # <CJK>
-0xFDA9 0x543C # <CJK>
-0xFDAA 0x5589 # <CJK>
-0xFDAB 0x55C5 # <CJK>
-0xFDAC 0x5E3F # <CJK>
-0xFDAD 0x5F8C # <CJK>
-0xFDAE 0x673D # <CJK>
-0xFDAF 0x7166 # <CJK>
-0xFDB0 0x73DD # <CJK>
-0xFDB1 0x9005 # <CJK>
-0xFDB2 0x52DB # <CJK>
-0xFDB3 0x52F3 # <CJK>
-0xFDB4 0x5864 # <CJK>
-0xFDB5 0x58CE # <CJK>
-0xFDB6 0x7104 # <CJK>
-0xFDB7 0x718F # <CJK>
-0xFDB8 0x71FB # <CJK>
-0xFDB9 0x85B0 # <CJK>
-0xFDBA 0x8A13 # <CJK>
-0xFDBB 0x6688 # <CJK>
-0xFDBC 0x85A8 # <CJK>
-0xFDBD 0x55A7 # <CJK>
-0xFDBE 0x6684 # <CJK>
-0xFDBF 0x714A # <CJK>
-0xFDC0 0x8431 # <CJK>
-0xFDC1 0x5349 # <CJK>
-0xFDC2 0x5599 # <CJK>
-0xFDC3 0x6BC1 # <CJK>
-0xFDC4 0x5F59 # <CJK>
-0xFDC5 0x5FBD # <CJK>
-0xFDC6 0x63EE # <CJK>
-0xFDC7 0x6689 # <CJK>
-0xFDC8 0x7147 # <CJK>
-0xFDC9 0x8AF1 # <CJK>
-0xFDCA 0x8F1D # <CJK>
-0xFDCB 0x9EBE # <CJK>
-0xFDCC 0x4F11 # <CJK>
-0xFDCD 0x643A # <CJK>
-0xFDCE 0x70CB # <CJK>
-0xFDCF 0x7566 # <CJK>
-0xFDD0 0x8667 # <CJK>
-0xFDD1 0x6064 # <CJK>
-0xFDD2 0x8B4E # <CJK>
-0xFDD3 0x9DF8 # <CJK>
-0xFDD4 0x5147 # <CJK>
-0xFDD5 0x51F6 # <CJK>
-0xFDD6 0x5308 # <CJK>
-0xFDD7 0x6D36 # <CJK>
-0xFDD8 0x80F8 # <CJK>
-0xFDD9 0x9ED1 # <CJK>
-0xFDDA 0x6615 # <CJK>
-0xFDDB 0x6B23 # <CJK>
-0xFDDC 0x7098 # <CJK>
-0xFDDD 0x75D5 # <CJK>
-0xFDDE 0x5403 # <CJK>
-0xFDDF 0x5C79 # <CJK>
-0xFDE0 0x7D07 # <CJK>
-0xFDE1 0x8A16 # <CJK>
-0xFDE2 0x6B20 # <CJK>
-0xFDE3 0x6B3D # <CJK>
-0xFDE4 0x6B46 # <CJK>
-0xFDE5 0x5438 # <CJK>
-0xFDE6 0x6070 # <CJK>
-0xFDE7 0x6D3D # <CJK>
-0xFDE8 0x7FD5 # <CJK>
-0xFDE9 0x8208 # <CJK>
-0xFDEA 0x50D6 # <CJK>
-0xFDEB 0x51DE # <CJK>
-0xFDEC 0x559C # <CJK>
-0xFDED 0x566B # <CJK>
-0xFDEE 0x56CD # <CJK>
-0xFDEF 0x59EC # <CJK>
-0xFDF0 0x5B09 # <CJK>
-0xFDF1 0x5E0C # <CJK>
-0xFDF2 0x6199 # <CJK>
-0xFDF3 0x6198 # <CJK>
-0xFDF4 0x6231 # <CJK>
-0xFDF5 0x665E # <CJK>
-0xFDF6 0x66E6 # <CJK>
-0xFDF7 0x7199 # <CJK>
-0xFDF8 0x71B9 # <CJK>
-0xFDF9 0x71BA # <CJK>
-0xFDFA 0x72A7 # <CJK>
-0xFDFB 0x79A7 # <CJK>
-0xFDFC 0x7A00 # <CJK>
-0xFDFD 0x7FB2 # <CJK>
-0xFDFE 0x8A70 # <CJK>
-
- \ No newline at end of file
diff --git a/program/lib/utf8.class.php b/program/lib/utf8.class.php
deleted file mode 100644
index 0446159c7..000000000
--- a/program/lib/utf8.class.php
+++ /dev/null
@@ -1,171 +0,0 @@
-<?php
-/*
-utf8 1.0
-Copyright: Left
----------------------------------------------------------------------------------
-Version: 1.0
-Date: 23 November 2004
----------------------------------------------------------------------------------
-Author: Alexander Minkovsky (a_minkovsky@hotmail.com)
----------------------------------------------------------------------------------
-License: Choose the more appropriated for You - I don't care.
----------------------------------------------------------------------------------
-Description:
- Class provides functionality to convert single byte strings, such as CP1251
- ti UTF-8 multibyte format and vice versa.
- Class loads a concrete charset map, for example CP1251.
- (Refer to ftp://ftp.unicode.org/Public/MAPPINGS/ for map files)
- Directory containing MAP files is predefined as constant.
- Each charset is also predefined as constant pointing to the MAP file.
----------------------------------------------------------------------------------
-Example usage:
- Pass the desired charset in the class constructor:
- $utfConverter = new utf8(CP1251); //defaults to CP1250.
- or load the charset MAP using loadCharset method like this:
- $utfConverter->loadCharset(CP1252);
- Then call
- $res = $utfConverter->strToUtf8($str);
- or
- $res = $utfConverter->utf8ToStr($utf);
- to get the needed encoding.
----------------------------------------------------------------------------------
-Note:
- Rewrite or Override the onError method if needed. It's the error handler used from everywhere and takes 2 parameters:
- err_code and err_text. By default it just prints out a message about the error.
-*/
-
-// Charset maps
-// Adapted to fit Roundcube
-define("UTF8_MAP_DIR", "program/lib/encoding");
-
-//Error constants
-define("ERR_OPEN_MAP_FILE", "ERR_OPEN_MAP_FILE");
-
-//Class definition
-Class utf8 {
-
- var $charset = "ISO-8859-1";
- var $ascMap = array();
- var $utfMap = array();
- var $aliases = array(
- 'KOI8-R' => 'KOI8R'
- );
- var $error = null;
-
- function __construct($charset="ISO-8859-1") {
- $this->loadCharset($charset);
- }
-
- //Load charset
- function loadCharset($charset) {
-
- $charset = preg_replace(array('/^WINDOWS-*125([0-8])$/', '/^CP-/'), array('CP125\\1', 'CP'), $charset);
- if (isset($this->aliases[$charset]))
- $charset = $this->aliases[$charset];
-
- $this->charset = $charset;
-
- if (empty($this->ascMap[$charset]))
- {
- $file = UTF8_MAP_DIR.'/'.$charset.'.map';
-
- if (!is_file($file)) {
- $this->onError(ERR_OPEN_MAP_FILE, "Failed to open map file for $charset");
- return;
- }
-
- $lines = file_get_contents($file);
- $lines = preg_replace("/#.*$/m","",$lines);
- $lines = preg_replace("/\n\n/","",$lines);
- $lines = explode("\n",$lines);
-
- foreach($lines as $line){
- $parts = explode('0x',$line);
- if(count($parts)==3){
- $asc=hexdec(substr($parts[1],0,2));
- $utf=hexdec(substr($parts[2],0,4));
- $this->ascMap[$charset][$asc]=$utf;
- }
- }
-
- $this->utfMap = array_flip($this->ascMap[$charset]);
- }
- }
-
- //Error handler
- function onError($err_code,$err_text){
- $this->error = $err_text;
- return null;
- }
-
- //Translate string ($str) to UTF-8 from given charset
- function strToUtf8($str){
- if (empty($this->ascMap[$this->charset]))
- return null;
-
- $chars = unpack('C*', $str);
- $cnt = count($chars);
- for($i=1; $i<=$cnt; $i++)
- $this->_charToUtf8($chars[$i]);
-
- return implode("",$chars);
- }
-
- //Translate UTF-8 string to single byte string in the given charset
- function utf8ToStr($utf){
- if (empty($this->ascMap[$this->charset]))
- return null;
-
- $chars = unpack('C*', $utf);
- $cnt = count($chars);
- $res = ""; //No simple way to do it in place... concatenate char by char
-
- for ($i=1; $i<=$cnt; $i++)
- $res .= $this->_utf8ToChar($chars, $i);
-
- return $res;
- }
-
- //Char to UTF-8 sequence
- function _charToUtf8(&$char){
- $c = (int)$this->ascMap[$this->charset][$char];
- if ($c < 0x80){
- $char = chr($c);
- }
- else if($c<0x800) // 2 bytes
- $char = (chr(0xC0 | $c>>6) . chr(0x80 | $c & 0x3F));
- else if($c<0x10000) // 3 bytes
- $char = (chr(0xE0 | $c>>12) . chr(0x80 | $c>>6 & 0x3F) . chr(0x80 | $c & 0x3F));
- else if($c<0x200000) // 4 bytes
- $char = (chr(0xF0 | $c>>18) . chr(0x80 | $c>>12 & 0x3F) . chr(0x80 | $c>>6 & 0x3F) . chr(0x80 | $c & 0x3F));
- }
-
- //UTF-8 sequence to single byte character
- function _utf8ToChar(&$chars, &$idx){
- if(($chars[$idx] >= 240) && ($chars[$idx] <= 255)){ // 4 bytes
- $utf = (intval($chars[$idx]-240) << 18) +
- (intval($chars[++$idx]-128) << 12) +
- (intval($chars[++$idx]-128) << 6) +
- (intval($chars[++$idx]-128) << 0);
- }
- else if (($chars[$idx] >= 224) && ($chars[$idx] <= 239)){ // 3 bytes
- $utf = (intval($chars[$idx]-224) << 12) +
- (intval($chars[++$idx]-128) << 6) +
- (intval($chars[++$idx]-128) << 0);
- }
- else if (($chars[$idx] >= 192) && ($chars[$idx] <= 223)){ // 2 bytes
- $utf = (intval($chars[$idx]-192) << 6) +
- (intval($chars[++$idx]-128) << 0);
- }
- else{ // 1 byte
- $utf = $chars[$idx];
- }
- if(array_key_exists($utf,$this->utfMap))
- return chr($this->utfMap[$utf]);
- else
- return "?";
- }
-
-}
-
-?>
diff --git a/program/localization/ar/labels.inc b/program/localization/ar/labels.inc
index 6fd922ad9..3fc089bb9 100644
--- a/program/localization/ar/labels.inc
+++ b/program/localization/ar/labels.inc
@@ -120,4 +120,8 @@ $labels['flagged'] = 'موسوم';
$labels['unanswered'] = 'بلا رد';
$labels['deleted'] = 'محذوف';
$labels['undeleted'] = 'غير محذوفة';
+$labels['savelocalstorage'] = "";
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/ar_SA/labels.inc b/program/localization/ar_SA/labels.inc
index 28fb22dbf..dff157bb0 100644
--- a/program/localization/ar_SA/labels.inc
+++ b/program/localization/ar_SA/labels.inc
@@ -178,6 +178,10 @@ $labels['msgtext'] = 'كامل الرسالة';
$labels['body'] = 'محتوى ';
$labels['type'] = 'نوع ';
$labels['namex'] = 'الاسم ';
+$labels['searchscope'] = 'مجال';
+$labels['currentfolder'] = 'المجلد الحالي';
+$labels['subfolders'] = 'هذا والملفات الفرعية';
+$labels['allfolders'] = 'جميع الملفات';
$labels['openinextwin'] = 'افتح في نافذة جديدة';
$labels['emlsave'] = 'تنزيل (.eml)';
$labels['changeformattext'] = 'عرض بتنسيق النص العادي';
@@ -203,9 +207,8 @@ $labels['restoremessage'] = 'استعادة الرسائل؟';
$labels['responses'] = 'ردود';
$labels['insertresponse'] = 'اضافة رد ';
$labels['manageresponses'] = 'ادارة الردود';
-$labels['savenewresponse'] = 'حفظ الرد الجديد';
-$labels['editresponses'] = 'تعديل الردود';
$labels['editresponse'] = 'تعديل الرد ';
+$labels['editresponses'] = 'تعديل الردود';
$labels['responsename'] = 'الاسم';
$labels['responsetext'] = 'نص الرد';
$labels['attach'] = 'إرفاق';
@@ -269,6 +272,7 @@ $labels['assistant'] = 'المساعد';
$labels['spouse'] = 'زوجة';
$labels['allfields'] = 'جميع الحقول';
$labels['search'] = 'بحث';
+$labels['searchfor'] = 'بحث عن "$q"';
$labels['advsearch'] = 'بحث متقدم';
$labels['advanced'] = 'مُتقدم';
$labels['other'] = 'آخر';
@@ -287,7 +291,6 @@ $labels['typehomepage'] = 'الرئيسية';
$labels['typeblog'] = 'المدوّنة';
$labels['typeprofile'] = 'الملف الشخصي';
$labels['addfield'] = 'إضافة حقل...';
-$labels['addcontact'] = 'إضافة المراسل المحدد إلى دفتر عناويني';
$labels['editcontact'] = 'تحرير بيانات المراسل';
$labels['contacts'] = 'المراسلين';
$labels['contactproperties'] = 'خواص جهة الإتصال';
@@ -300,7 +303,6 @@ $labels['rename'] = 'إعادة التسمية';
$labels['addphoto'] = 'إضافة';
$labels['replacephoto'] = 'استبدال';
$labels['uploadphoto'] = 'ارفع صورة';
-$labels['newcontact'] = 'إنشاء بطاقة مراسل جديدة';
$labels['deletecontact'] = 'حذف المراسلين المحددين';
$labels['composeto'] = 'إنشاء رسالة إليه';
$labels['contactsfromto'] = 'المراسلون $from إلى $to من $count';
@@ -309,7 +311,6 @@ $labels['export'] = 'تصدير';
$labels['exportall'] = 'تصدير الكل';
$labels['exportsel'] = 'تصدير المختارات';
$labels['exportvcards'] = 'صدّر المراسلين بنسق vCard';
-$labels['newcontactgroup'] = 'إنشاء مجموعة مراسلين جديدة';
$labels['grouprename'] = 'تغيير اسم المجموعة';
$labels['groupdelete'] = 'حذف المجموعة';
$labels['groupremoveselected'] = 'حذف العنوان المختار من المجموعة';
@@ -339,10 +340,6 @@ $labels['preferences'] = 'التفضيلات';
$labels['userpreferences'] = 'تفضيلات المستخدم';
$labels['editpreferences'] = 'تحرير تفضيلات المستخدم';
$labels['identities'] = 'الهويات';
-$labels['manageidentities'] = 'إدارة هويات هذا الحساب';
-$labels['newidentity'] = 'هوية جديدة';
-$labels['newitem'] = 'عنصر جديد';
-$labels['edititem'] = 'تحرير عنصر';
$labels['preferhtml'] = 'تفضيل صيغة HTML';
$labels['defaultcharset'] = 'ترميز المحارف الافتراضي';
$labels['htmlmessage'] = 'رسالة بنسق HTML';
@@ -399,6 +396,7 @@ $labels['2231folding'] = 'RFC 2231 بأكملها (ثندربيرد)';
$labels['miscfolding'] = 'RFC 2047/2231 (ميكروسوفت آوتلوك)';
$labels['2047folding'] = 'RFC 2047 بأكملها (غيرها)';
$labels['force7bit'] = 'استخدام ترميز MIME للحروف ذات الثمانيةبتّات';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'خيارات متقدّمة';
$labels['focusonnewmessage'] = 'التركيز على نافذة المتصفح عند وجود رسالةجديدة';
$labels['checkallfolders'] = 'التحقق من وجود رسائل جديدة في جميعالمجلدات';
@@ -441,14 +439,14 @@ $labels['asattachment'] = 'كـ مرفق ';
$labels['replyallmode'] = 'الاجراء الافتراضي لـ زر [الرد على الجميع]';
$labels['replyalldefault'] = 'الرد على الجميع';
$labels['replyalllist'] = 'الرد فقط على القائمة البريدية (اذا كانت موجودة)';
-$labels['folder'] = 'مجلد';
-$labels['folders'] = 'مجلدات';
-$labels['foldername'] = 'اسم المجلد';
-$labels['subscribed'] = 'مشترك';
+$labels['folder'] = 'مجلد';
+$labels['folders'] = 'مجلدات';
+$labels['foldername'] = 'اسم المجلد';
+$labels['subscribed'] = 'مشترك';
$labels['messagecount'] = 'الرسائل';
-$labels['create'] = 'أنشئ';
-$labels['createfolder'] = 'أنشئ مجلد جديد';
-$labels['managefolders'] = 'إدارة المجلدات';
+$labels['create'] = 'أنشئ';
+$labels['createfolder'] = 'أنشئ مجلد جديد';
+$labels['managefolders'] = 'إدارة المجلدات';
$labels['specialfolders'] = 'المجلّدات المُميّزة';
$labels['properties'] = 'الخواص';
$labels['folderproperties'] = 'خواص المجلد';
@@ -458,9 +456,9 @@ $labels['info'] = 'معلومات';
$labels['getfoldersize'] = 'اضغط لمعرفة حجم المجلد';
$labels['changesubscription'] = 'اضغط لتغيير حالة الإشتراك';
$labels['foldertype'] = 'نوع المجلد';
-$labels['personalfolder'] = 'مجلد خاص';
-$labels['otherfolder'] = 'مجلد مستخدم آخر';
-$labels['sharedfolder'] = 'مجلد عام';
+$labels['personalfolder'] = 'مجلد خاص';
+$labels['otherfolder'] = 'مجلد مستخدم آخر';
+$labels['sharedfolder'] = 'مجلد عام';
$labels['sortby'] = 'ترتيب بحسب';
$labels['sortasc'] = 'ترتيب تصاعدي';
$labels['sortdesc'] = 'ترتيب تنازلي';
@@ -493,4 +491,7 @@ $labels['vietnamese'] = 'الفيتنامية';
$labels['japanese'] = 'اليابانية';
$labels['korean'] = 'الكورية';
$labels['chinese'] = 'الصينية';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/ar_SA/messages.inc b/program/localization/ar_SA/messages.inc
index a518fb012..6feba64a6 100644
--- a/program/localization/ar_SA/messages.inc
+++ b/program/localization/ar_SA/messages.inc
@@ -22,6 +22,7 @@ $messages['sessionerror'] = 'انتهت صلاحية الجلسة الحالية
$messages['storageerror'] = 'فشل الاتصال بخادم IMAP';
$messages['servererror'] = 'خطأ في الخادم!';
$messages['servererrormsg'] = 'خطأ خادم: $msg';
+$messages['connerror'] = 'خطأ في الاتصال (فشل في الوصول الى الخادم)!';
$messages['dberror'] = 'خطأ في قاعدة البيانات!';
$messages['requesttimedout'] = 'انتهت مهلة الطلب ';
$messages['errorreadonly'] = 'تعذر تنفيذ العملية. المجلد للقراءة فقط.';
@@ -135,7 +136,6 @@ $messages['importmessagesuccess'] = 'تم استرداد $nr رسالة بنجا
$messages['importmessageerror'] = 'فشل في الاستيراد! الملف الذي تحاول رفعة ليس رسالة او صندوق بريد صالح. ';
$messages['opnotpermitted'] = 'العملية ممنوعة!';
$messages['nofromaddress'] = 'عنوان البريد الالكتروني غير محدد فيالهويّة المنتقاة';
-$messages['editorwarning'] = 'يتسبب الانتقال إلى محرر النص البسيط بضياع جميع التنسيق. هل تريد الاستمرار؟';
$messages['httpreceivedencrypterror'] = 'حدث خطأ جسيم في التهيئة. رجاءً اتصال بمدير الخادم حالاً. <b>لا يمكن إرسال بريدك.</b>';
$messages['smtpconnerror'] = 'خطأ SMTP ($code): تعذر الاتصال بالخادم';
$messages['smtpautherror'] = 'خطأ SMTP ($code): تعذر التحقق من هويتك';
diff --git a/program/localization/ast/labels.inc b/program/localization/ast/labels.inc
index 25d09451c..46714845d 100644
--- a/program/localization/ast/labels.inc
+++ b/program/localization/ast/labels.inc
@@ -17,14 +17,14 @@
*/
$labels['welcome'] = 'Bienllegáu a $product';
$labels['username'] = 'Usuariu';
-$labels['password'] = 'Clave';
+$labels['password'] = 'Contraseña';
$labels['server'] = 'Sirvidor';
-$labels['login'] = 'Entrar';
-$labels['logout'] = 'Zarrar';
+$labels['login'] = 'Aniciar sesión';
+$labels['logout'] = 'Zarrar sesión';
$labels['mail'] = 'Corréu';
$labels['settings'] = 'Axustes';
$labels['addressbook'] = 'Llibreta de direiciones';
-$labels['inbox'] = 'Entrantes';
+$labels['inbox'] = 'Bandexa d\'entrada';
$labels['drafts'] = 'Borradores';
$labels['sent'] = 'Unviaos';
$labels['trash'] = 'Papelera';
@@ -43,20 +43,21 @@ $labels['size'] = 'Tamañu';
$labels['priority'] = 'Prioridá';
$labels['organization'] = 'Organización';
$labels['readstatus'] = 'Lleer estáu';
-$labels['listoptions'] = 'Llista d\'oopciones...';
-$labels['mailboxlist'] = 'Bandexes';
-$labels['messagesfromto'] = 'Mensaxes del $from a $to de $count';
+$labels['listoptions'] = 'Llista d\'opciones...';
+$labels['mailboxlist'] = 'Carpetes';
+$labels['messagesfromto'] = 'Mensaxes $from a $to de $count';
$labels['threadsfromto'] = 'Filos $from a $to de $count';
$labels['messagenrof'] = 'Mensaxe $nr de $count';
$labels['fromtoshort'] = '$from – $to de $count';
$labels['copy'] = 'Copia';
$labels['move'] = 'Mover';
$labels['moveto'] = 'mover a...';
+$labels['copyto'] = 'Copiar a...';
$labels['download'] = 'Descargar';
$labels['open'] = 'Abrir';
$labels['showattachment'] = 'Amosar';
$labels['showanyway'] = 'Amosar de toes formes';
-$labels['filename'] = 'Nome del Ficheru';
+$labels['filename'] = 'Nome del ficheru';
$labels['filesize'] = 'Tamañu del ficheru';
$labels['addtoaddressbook'] = 'Amestar a la llibreta de direiciones';
$labels['sun'] = 'Dom';
@@ -99,47 +100,54 @@ $labels['longnov'] = 'Payares';
$labels['longdec'] = 'Avientu';
$labels['today'] = 'Güei';
$labels['refresh'] = 'Refrescar';
-$labels['checkmail'] = 'Buscar mensaxes nuevos';
-$labels['compose'] = 'Escribir un mensaxe';
-$labels['writenewmessage'] = 'Facer un mensaxe nuevu';
+$labels['checkmail'] = 'Comprobar mensaxes nuevos';
+$labels['compose'] = 'Redactar';
+$labels['writenewmessage'] = 'Redactar un mensaxe nuevu';
$labels['reply'] = 'Responder';
-$labels['replytomessage'] = 'Contestar al mensaxe';
-$labels['replytoallmessage'] = 'Contestar a toos';
+$labels['replytomessage'] = 'Responder al remitente';
+$labels['replytoallmessage'] = 'Responder a la llista o al remitente y tolos destinatarios';
$labels['replyall'] = 'Responder a toos';
$labels['replylist'] = 'Responder a la llista';
$labels['forward'] = 'Reunviar';
$labels['forwardinline'] = 'Reunviar direutamente';
$labels['forwardattachment'] = 'Reunviar como axuntu';
-$labels['forwardmessage'] = 'Reunviar mensaxe';
+$labels['forwardmessage'] = 'Reunviar el mensaxe';
$labels['deletemessage'] = 'Desaniciar mensaxe';
$labels['movemessagetotrash'] = 'Mover mensaxe a la papelera';
$labels['printmessage'] = 'Imprentar esti mensaxe';
$labels['previousmessage'] = 'Amosar el mensaxe anterior';
$labels['firstmessage'] = 'Amosar primer mensaxe';
-$labels['nextmessage'] = 'Amosar el mensaxe siguiente';
-$labels['lastmessage'] = 'Amosar l\'últimu mensaxe';
+$labels['nextmessage'] = 'Amosar mensaxe siguiente';
+$labels['lastmessage'] = 'Amosar mensaxe caberu';
$labels['backtolist'] = 'Tornar a la llista de mensaxes';
-$labels['viewsource'] = 'Amosar el códigu';
-$labels['mark'] = 'Marcar';
-$labels['markmessages'] = 'Marcar mensaxes';
+$labels['viewsource'] = 'Amosar fonte';
+$labels['mark'] = 'Conseñar';
+$labels['markmessages'] = 'Conseñar mensaxes';
$labels['markread'] = 'Como lleíu';
$labels['markunread'] = 'Como non lleíu';
$labels['markflagged'] = 'Como etiquetáu';
$labels['markunflagged'] = 'Como non etiquetáu';
$labels['moreactions'] = 'Más aiciones...';
$labels['more'] = 'Más';
-$labels['back'] = 'Volver';
+$labels['back'] = 'Tornar';
$labels['options'] = 'Opciones';
-$labels['select'] = 'Escoyer';
+$labels['first'] = 'Primeru';
+$labels['last'] = 'Caberu';
+$labels['previous'] = 'Postreru';
+$labels['next'] = 'Siguiente';
+$labels['select'] = 'Esbillar';
$labels['all'] = 'Toos';
$labels['none'] = 'Dengún';
$labels['currpage'] = 'Páxina actual';
+$labels['isread'] = 'Lleer';
$labels['unread'] = 'Ensin lleer';
$labels['flagged'] = 'Etiquetaos';
$labels['unanswered'] = 'Ensin contestar';
$labels['withattachment'] = 'Con axuntu';
$labels['deleted'] = 'Desaniciáu';
$labels['undeleted'] = 'Non desaniciáu';
+$labels['replied'] = 'Respondíu';
+$labels['forwarded'] = 'Reunviáu';
$labels['invert'] = 'Invertir';
$labels['filter'] = 'Filtru';
$labels['list'] = 'Llista';
@@ -151,8 +159,8 @@ $labels['threaded'] = 'Encadenaos';
$labels['autoexpand_threads'] = 'Espander filos de mensaxes';
$labels['do_expand'] = 'tolos filos';
$labels['expand_only_unread'] = 'namái con mensaxes non lleíos';
-$labels['fromto'] = 'Remitente/Destinatariu';
-$labels['flag'] = 'Etiqueta';
+$labels['fromto'] = 'De/a';
+$labels['flag'] = 'Bandera';
$labels['attachment'] = 'Axuntu';
$labels['nonesort'] = 'Dengún';
$labels['sentdate'] = 'Data d\'unviu';
@@ -163,22 +171,29 @@ $labels['listcolumns'] = 'Llistar columnes';
$labels['listsorting'] = 'Columna de llistáu';
$labels['listorder'] = 'Orde de llistáu';
$labels['listmode'] = 'Mou de vista de llista';
-$labels['folderactions'] = 'Aiciones de bandexa...';
+$labels['folderactions'] = 'Aiciones de carpeta...';
$labels['compact'] = 'Compautar';
$labels['empty'] = 'Vaciar';
$labels['importmessages'] = 'Importar mensaxes';
-$labels['quota'] = 'Espaciu en discu';
+$labels['quota'] = 'Usu de discu';
$labels['unknown'] = 'desconocíu';
-$labels['unlimited'] = 'ensin llímite';
+$labels['unlimited'] = 'ensin llende';
+$labels['quotatotal'] = 'Llímite';
+$labels['quotaused'] = 'Usáu';
+$labels['quotastorage'] = 'Espaciu en discu';
$labels['quicksearch'] = 'Gueta rápida';
-$labels['resetsearch'] = 'Anovar la gueta';
+$labels['resetsearch'] = 'Reaniciar la gueta';
$labels['searchmod'] = 'Guetar modificadores';
-$labels['msgtext'] = 'Mensaxe';
+$labels['msgtext'] = 'Mensaxe enteru';
$labels['body'] = 'Cuerpu';
-$labels['type'] = 'Tipu';
+$labels['type'] = 'Triba';
$labels['namex'] = 'Nome';
+$labels['searchscope'] = 'Algame';
+$labels['currentfolder'] = 'Carpeta actual';
+$labels['subfolders'] = 'Esta y les subcarpetes';
+$labels['allfolders'] = 'Toles carpetes';
$labels['openinextwin'] = 'Abrir nuna ventana nueva';
-$labels['emlsave'] = 'Baxar (.eml)';
+$labels['emlsave'] = 'Descargar (.eml)';
$labels['changeformattext'] = 'Amosar en formatu de testu planu';
$labels['changeformathtml'] = 'Amosar en formatu HTML';
$labels['editasnew'] = 'Editar como nuevu';
@@ -187,23 +202,38 @@ $labels['sendmessage'] = 'Unviar el mensaxe yá';
$labels['savemessage'] = 'Guardar como borrador';
$labels['addattachment'] = 'Axuntar un ficheru';
$labels['charset'] = 'Codificación';
-$labels['editortype'] = 'Tipu d\'editor';
-$labels['returnreceipt'] = 'Avisu de recibu';
-$labels['dsn'] = 'Entrega de notificaciones d\'estáu';
+$labels['editortype'] = 'Triba d\'editor';
+$labels['returnreceipt'] = 'Devolver avisu de recibu';
+$labels['dsn'] = 'Notificación d\'estáu d\'entrega';
$labels['mailreplyintro'] = 'El $date, $sender escribió:';
$labels['originalmessage'] = 'Mensaxe orixinal';
+$labels['selectimage'] = 'Esbillar imaxe';
+$labels['addimage'] = 'Amestar imaxe';
+$labels['selectmedia'] = 'Esbillar película';
+$labels['addmedia'] = 'Amestar película';
$labels['editidents'] = 'Editar identidaes';
$labels['spellcheck'] = 'Correutor ortográficu';
$labels['checkspelling'] = 'Revisar ortografía';
$labels['resumeediting'] = 'Siguir cola edición';
$labels['revertto'] = 'Revertir a';
+$labels['restore'] = 'Restaurar';
+$labels['restoremessage'] = '¿Restaurar mensaxe?';
+$labels['responses'] = 'Rempuestes';
+$labels['insertresponse'] = 'Inxertar una rempuesta';
+$labels['manageresponses'] = 'Alministrar rempuestes';
+$labels['newresponse'] = 'Crear resmpuesta nueva';
+$labels['addresponse'] = 'Amestar rempuesta';
+$labels['editresponse'] = 'Editar rempuesta';
+$labels['editresponses'] = 'Editar rempuestes';
$labels['responsename'] = 'Nome';
+$labels['responsetext'] = 'Testu de la rempuesta';
$labels['attach'] = 'Axuntar';
$labels['attachments'] = 'Axuntos';
$labels['upload'] = 'Xubir';
$labels['uploadprogress'] = '$percent ($current de $total)';
$labels['close'] = 'Zarrar';
$labels['messageoptions'] = 'Opciones de mensaxe...';
+$labels['togglecomposeoptions'] = 'Camudar opciones de composición';
$labels['low'] = 'Baxu';
$labels['lowest'] = 'Mui baxu';
$labels['normal'] = 'Normal';
@@ -211,13 +241,13 @@ $labels['high'] = 'Altu';
$labels['highest'] = 'Mui altu';
$labels['nosubject'] = '(ensin asuntu)';
$labels['showimages'] = 'Amosar imáxenes';
-$labels['alwaysshow'] = 'Amosar siempre les imáxenes de $sender';
+$labels['alwaysshow'] = 'Amosar siempres les imáxenes de $sender';
$labels['isdraft'] = 'Esti mensaxe ye un borrador.';
$labels['andnmore'] = '$nr más...';
$labels['togglemoreheaders'] = 'Amosar más testeres del mensaxe';
$labels['togglefullheaders'] = 'Amosar o anubrir testeres de mensaxes';
$labels['htmltoggle'] = 'HTML';
-$labels['plaintoggle'] = 'Testu';
+$labels['plaintoggle'] = 'Testu planu';
$labels['savesentmessagein'] = 'Guardar mensaxe unviáu en';
$labels['dontsave'] = 'nun guardar';
$labels['maxuploadsize'] = 'El tamañu másimu pa un ficheru ye $size';
@@ -225,10 +255,10 @@ $labels['addcc'] = 'Amestar Cc';
$labels['addbcc'] = 'Amestar Cct';
$labels['addreplyto'] = 'Amestar Rempuesta pa';
$labels['addfollowupto'] = 'Amestar Siguir a';
-$labels['mdnrequest'] = 'El qu\'unvia esti mensaxe quier que lu avises cuando lleas el corréu. ¿Quies avisalu?';
-$labels['receiptread'] = 'Avisu de llectura';
-$labels['yourmessage'] = 'Esto ye un avisu de llectura del to mensaxe';
-$labels['receiptnote'] = 'Nota: Esti avisu namás quier dicir que\'l to mensaxe amosóse nel equipu del receutor. Nun hai forma de garantizate que lu lleera o que atalantara\'l conteníu del to mensaxe.';
+$labels['mdnrequest'] = 'El remitente d\'esti mensaxe entrugó pa ser notificáu cuando lleas esti mensaxe. ¿Deseyes notificá-ylo al remitente?';
+$labels['receiptread'] = 'Devolver avisu de recibu (lleíu)';
+$labels['yourmessage'] = 'Esto ye una devolución del avisu de recibu pal to mensaxe';
+$labels['receiptnote'] = 'Nota: Esti avisu de recibu namái reconoz que\'l mensaxe amosóse nel ordenador del destinatariu. Nun hai garantía de que\'l destinatariu lleera o entendiera\'l conteníu del mensaxe.';
$labels['name'] = 'Nome completu';
$labels['firstname'] = 'Nome';
$labels['surname'] = 'Apellíu';
@@ -238,7 +268,7 @@ $labels['namesuffix'] = 'Sufixu';
$labels['nickname'] = 'Nomatu';
$labels['jobtitle'] = 'Tratamientu';
$labels['department'] = 'Departamentu';
-$labels['gender'] = 'Sexu';
+$labels['gender'] = 'Xéneru';
$labels['maidenname'] = 'Apellíu de soltera';
$labels['email'] = 'Corréu';
$labels['phone'] = 'Teléfonu';
@@ -249,19 +279,20 @@ $labels['zipcode'] = 'Códigu postal';
$labels['region'] = 'Estáu/Provincia';
$labels['country'] = 'País';
$labels['birthday'] = 'Cumpleaños';
-$labels['anniversary'] = 'Santu';
+$labels['anniversary'] = 'Aniversariu';
$labels['website'] = 'Páxina web';
$labels['instantmessenger'] = 'Mensaxería nel intre';
$labels['notes'] = 'Notes';
$labels['male'] = 'home';
$labels['female'] = 'muyer';
-$labels['manager'] = 'Direutor';
+$labels['manager'] = 'Alministrador';
$labels['assistant'] = 'Auxiliar';
-$labels['spouse'] = 'Cónyugue';
+$labels['spouse'] = 'Casáu con';
$labels['allfields'] = 'Tolos campos';
$labels['search'] = 'Guetar';
+$labels['searchfor'] = 'Guetar por "$q"';
$labels['advsearch'] = 'Gueta avanzada';
-$labels['advanced'] = 'Avanzaes';
+$labels['advanced'] = 'Avanzáu';
$labels['other'] = 'Otru';
$labels['typehome'] = 'Casa';
$labels['typework'] = 'Trabayu';
@@ -271,18 +302,20 @@ $labels['typemain'] = 'Principal';
$labels['typehomefax'] = 'Fax de casa';
$labels['typeworkfax'] = 'Fax del trabayu';
$labels['typecar'] = 'Coche';
-$labels['typepager'] = 'Busca';
+$labels['typepager'] = 'Buscapersones';
$labels['typevideo'] = 'Videu';
$labels['typeassistant'] = 'Auxiliar';
-$labels['typehomepage'] = 'Aniciu';
+$labels['typehomepage'] = 'Páxina d\'aniciu';
$labels['typeblog'] = 'Blogue';
$labels['typeprofile'] = 'Perfil';
$labels['addfield'] = 'Amestar campu...';
-$labels['addcontact'] = 'Amestar contautu nuevu';
+$labels['addcontact'] = 'Amestar contautu';
$labels['editcontact'] = 'Editar contautu';
$labels['contacts'] = 'Contautos';
$labels['contactproperties'] = 'Propiedaes del contautu';
+$labels['contactnameandorg'] = 'Nome y organización';
$labels['personalinfo'] = 'Información personal';
+$labels['contactphoto'] = 'Semeya de contautu';
$labels['edit'] = 'Editar';
$labels['cancel'] = 'Encaboxar';
$labels['save'] = 'Guardar';
@@ -290,24 +323,25 @@ $labels['delete'] = 'Desaniciar';
$labels['rename'] = 'Renomar';
$labels['addphoto'] = 'Amestar';
$labels['replacephoto'] = 'Trocar';
-$labels['uploadphoto'] = 'Xubir xemeya';
-$labels['newcontact'] = 'Facer un contautu nuevu';
-$labels['deletecontact'] = 'Desaniciar los contautos marcaos';
-$labels['composeto'] = 'Unviar mensaxe a';
+$labels['uploadphoto'] = 'Xubir semeya';
+$labels['newcontact'] = 'Crear contautu nuevu';
+$labels['deletecontact'] = 'Desaniciar los contautos esbillaos';
+$labels['composeto'] = 'Redactar mensaxe a';
$labels['contactsfromto'] = 'Contautos $from a $to de $count';
$labels['print'] = 'Imprentar';
$labels['export'] = 'Esportar';
$labels['exportall'] = 'Esportar too';
-$labels['exportsel'] = 'Esportar lo seleicionao';
+$labels['exportsel'] = 'Esportar lo esbillao';
$labels['exportvcards'] = 'Esportar contautos en formatu vCard';
-$labels['newcontactgroup'] = 'Crear un grupu nuevu de contautos';
+$labels['newgroup'] = 'Crear grupu nuevu';
$labels['grouprename'] = 'Renomar grupu';
$labels['groupdelete'] = 'Desaniciar grupu';
-$labels['groupremoveselected'] = 'Desaniciar los contautos seleicionaos del grupu';
-$labels['previouspage'] = 'Amosar páxina previa';
+$labels['groupremoveselected'] = 'Desaniciar los contautos esbillaos del grupu';
+$labels['uponelevel'] = 'Xunir un nivel';
+$labels['previouspage'] = 'Amosar páxina postrera';
$labels['firstpage'] = 'Amosar primer páxina';
-$labels['nextpage'] = 'Amosar siguiente páxina';
-$labels['lastpage'] = 'Amosar última páxina';
+$labels['nextpage'] = 'Amosar páxina siguiente';
+$labels['lastpage'] = 'Amosar páxina cabera';
$labels['group'] = 'Grupu';
$labels['groups'] = 'Grupos';
$labels['listgroup'] = 'Llistar miembros del grupu';
@@ -322,7 +356,7 @@ $labels['importreplace'] = 'Trocar el llibru de direiciones enteru';
$labels['importgroups'] = 'Importar asignaciones de grupu';
$labels['importgroupsall'] = 'Toos (crear grupos si ye necesario)';
$labels['importgroupsexisting'] = 'Namái pa los grupos esistentes';
-$labels['importdesc'] = 'Pues xubir contautos dende una llibreta de direiciones esistente.<br/>Anguaño permitimos la importación dende los formatos de datos <a href="http://es.wikipedia.org/wiki/VCard">vCard</a> o CSV (separtaos per comes).';
+$labels['importdesc'] = 'Pues xubir los contautos dende una llibreta de direiciones esistente.<br/>Anguaño permitimos la importación de direiciones dende los formatos de datos <a href="http://es.wikipedia.org/wiki/VCard">vCard</a> o CSV (separtaos per comes).';
$labels['done'] = 'Fecho';
$labels['settingsfor'] = 'Axustes pa';
$labels['about'] = 'Tocante a';
@@ -330,10 +364,10 @@ $labels['preferences'] = 'Preferencies';
$labels['userpreferences'] = 'Preferencies d\'usuariu';
$labels['editpreferences'] = 'Editar preferencies d\'usuariu';
$labels['identities'] = 'Identidaes';
-$labels['manageidentities'] = 'Remanar identidaes pa esta cuenta';
-$labels['newidentity'] = 'Identidá nueva';
-$labels['newitem'] = 'Nuevu';
-$labels['edititem'] = 'Editar';
+$labels['manageidentities'] = 'Almisnitrar identidaes';
+$labels['newidentity'] = 'Crear identidá nueva';
+$labels['addidentity'] = 'Amestar identidça';
+$labels['editidentity'] = 'Editar identidá';
$labels['preferhtml'] = 'Amosar HTML';
$labels['defaultcharset'] = 'Xuegu de caráuteres predetermináu';
$labels['htmlmessage'] = 'Mensaxe HTML';
@@ -341,82 +375,84 @@ $labels['messagepart'] = 'Parte';
$labels['digitalsig'] = 'Robla dixital';
$labels['dateformat'] = 'Formatu de data';
$labels['timeformat'] = 'Formatu d\'hora';
-$labels['prettydate'] = 'Fecha prestosa';
-$labels['setdefault'] = 'Escoyer opción preferida';
-$labels['autodetect'] = 'Escoyer automáticamente';
+$labels['prettydate'] = 'Dates prestoses';
+$labels['setdefault'] = 'Reafitar';
+$labels['autodetect'] = 'Auto';
$labels['language'] = 'Llingua';
$labels['timezone'] = 'Estaya horaria';
$labels['pagesize'] = 'Fileres per páxina';
$labels['signature'] = 'Robla';
$labels['dstactive'] = 'Cambéu horariu';
$labels['showinextwin'] = 'Abrir mensaxe nuna ventana nueva';
-$labels['composeextwin'] = 'Escribir nuna ventana nueva';
-$labels['htmleditor'] = 'Facer el mensaxe en HTML';
-$labels['htmlonreply'] = 'namái en rempuesta a un mensaxe HTML';
+$labels['composeextwin'] = 'Redactar nuna ventana nueva';
+$labels['htmleditor'] = 'Redactar el mensaxe en HTML';
+$labels['htmlonreply'] = 'en rempuesta a mensaxe HTML';
$labels['htmlonreplyandforward'] = 'en reunviu o rempuesta al mensaxe HTML';
$labels['htmlsignature'] = 'Robla HTML';
-$labels['showemail'] = 'Amosar direición de corréu-e al visualizar el nome';
-$labels['previewpane'] = 'Entever';
-$labels['skin'] = 'Estilu';
+$labels['showemail'] = 'Amosar direición de corréu-e al amosar el nome';
+$labels['previewpane'] = 'Amosar panel de previsualización';
+$labels['skin'] = 'Tema de la interfaz';
$labels['logoutclear'] = 'Vaciar la papelera al zarrar la sesión';
$labels['logoutcompact'] = 'Compautar la bandexa d\'entrada al zarrar la sesión';
$labels['uisettings'] = 'Interfaz d\'usuariu';
-$labels['serversettings'] = 'Configuración del sirvidor';
+$labels['serversettings'] = 'Axustes del sirvidor';
$labels['mailboxview'] = 'Vista del buzón';
-$labels['mdnrequests'] = 'Avisos d\'unvios';
-$labels['askuser'] = 'entrugame';
-$labels['autosend'] = 'unviar de secute';
-$labels['autosendknown'] = 'unviar acuse de recibu a los mios contautos, col restu entrugame';
-$labels['autosendknownignore'] = 'unviar acuse de recibu a los mios contautos, non a los demás';
+$labels['mdnrequests'] = 'En petición de devolución del recibíu';
+$labels['askuser'] = 'entrúgame';
+$labels['autosend'] = 'unviar recibu';
+$labels['autosendknown'] = 'unviar recibu a los mios contautos, d\'otramiente entrúgame';
+$labels['autosendknownignore'] = 'unviar recibu a los mios contautos, d\'otramiente inorar';
$labels['ignore'] = 'inorar';
-$labels['readwhendeleted'] = 'Marcar el mensaxe como lleíu al desanicialu';
-$labels['flagfordeletion'] = 'Marcar el mensaxe pa desaniciase en cuenta de desanicialu dafechu';
+$labels['readwhendeleted'] = 'Conseñar el mensaxe como lleíu al desanicialu';
+$labels['flagfordeletion'] = 'Conseñar el mensaxe pal desaniu en cuantes de desanicialu';
$labels['skipdeleted'] = 'Nun amosar los mensaxes desaniciaos';
-$labels['deletealways'] = 'Si falla el treslladar los mensaxes a la Papelera, desanicialos';
-$labels['deletejunk'] = 'Desaniciar direutamente el correú de Puxarra';
-$labels['showremoteimages'] = 'Amosar imáxenes remotes';
-$labels['fromknownsenders'] = 'de contautos conocíos';
-$labels['always'] = 'siempre';
-$labels['showinlineimages'] = 'Amosar imáxenes axuntes embaxo\'l mensaxe';
-$labels['autosavedraft'] = 'Guardar borrador de secute';
+$labels['deletealways'] = 'Si falla\'l treslláu de los mensaxes a la Papelera, desanicialos';
+$labels['deletejunk'] = 'Desaniciar direutamente el correú en Puxarra';
+$labels['showremoteimages'] = 'Amosar imáxenes en llinia remotes';
+$labels['fromknownsenders'] = 'de remitentes conocíos';
+$labels['always'] = 'siempres';
+$labels['showinlineimages'] = 'Amosar les imáxenes axuntaes embaxo\'l mensaxe';
+$labels['autosavedraft'] = 'Guardar borrador automáticamente';
$labels['everynminutes'] = 'cada $n minutu/os';
-$labels['refreshinterval'] = 'Anovar (comprobar mensaxes nuevos, etc.)';
+$labels['refreshinterval'] = 'Refrescar (comprobación de mensaxes nuevos, etc.)';
$labels['never'] = 'nunca';
-$labels['immediately'] = 'darréu';
+$labels['immediately'] = 'de secute';
$labels['messagesdisplaying'] = 'Vista de mensaxes';
-$labels['messagescomposition'] = 'Edición de mensaxes';
+$labels['messagescomposition'] = 'Redaición de mensaxes';
$labels['mimeparamfolding'] = 'Nomes d\'axuntos';
-$labels['2231folding'] = 'Too RFC 2231 (Thunderbird)';
+$labels['2231folding'] = 'RFC 2231 completu (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
-$labels['2047folding'] = 'Too RFC 2047 (otros)';
+$labels['2047folding'] = 'RFC 2047 completu (otros)';
$labels['force7bit'] = 'Usar codificación MIME pa caráuteres de 8 bits';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'Opciones avanzaes';
-$labels['focusonnewmessage'] = 'Poner el focu nos mensaxes nuevos';
-$labels['checkallfolders'] = 'Guetar mensaxes nuevos en toles bandexes';
-$labels['displaynext'] = 'Depués de mover/desaniciar amosar el mensaxe que sigue darréu';
-$labels['defaultfont'] = 'Tipu de lletra predeterminada del mensaxe HTML';
+$labels['toggleadvancedoptions'] = 'Camudar opciones avanzaes';
+$labels['focusonnewmessage'] = 'Enfocar la ventana de restolación en mensaxes nuevos';
+$labels['checkallfolders'] = 'Comprobar en toles carpetes mensaxes nuevos';
+$labels['displaynext'] = 'Depués de mover/desaniciar amosar el mensaxe siguiente';
+$labels['defaultfont'] = 'Triba de fonte por defeutu del mensaxe HTML';
$labels['mainoptions'] = 'Opciones principales';
-$labels['browseroptions'] = 'Opciones del navegador';
+$labels['browseroptions'] = 'Opciones del restolador';
$labels['section'] = 'Seición';
$labels['maintenance'] = 'Caltenimientu';
-$labels['newmessage'] = 'Mensax nuevu';
+$labels['newmessage'] = 'Mensaxe nuevu';
$labels['signatureoptions'] = 'Opciones de robla';
-$labels['whenreplying'] = 'Al responder';
+$labels['whenreplying'] = 'Cuando se respuenda';
$labels['replyempty'] = 'nun citar el mensaxe orixinal';
-$labels['replytopposting'] = 'empezar un mensaxe nuevu encima del orixinal';
-$labels['replybottomposting'] = 'empezar un mensaxe nuevu debaxo del orixinal';
-$labels['replyremovesignature'] = 'Desaniciar la robla orixinal del mensaxe al responder';
+$labels['replytopposting'] = 'aniciar un mensaxe nuevu enriba l\'orixinal';
+$labels['replybottomposting'] = 'aniciar un mensaxe nuevu embaxo l\'orixinal';
+$labels['replyremovesignature'] = 'Desaniciar la robla orixinal del mensaxe cuando se respuenda';
$labels['autoaddsignature'] = 'Amestar robla automáticamente';
$labels['newmessageonly'] = 'namái mensaxe nuevu';
$labels['replyandforwardonly'] = 'namái rempuestes y reunvios';
$labels['insertsignature'] = 'Inxertar robla';
-$labels['previewpanemarkread'] = 'Marcar mensaxe previsualizáu como lleíu';
+$labels['previewpanemarkread'] = 'Conseñar mensaxes previsualizaos como lleíos';
$labels['afternseconds'] = 'dempués de $n segundos';
-$labels['reqmdn'] = 'Solicitar siempre un acuse de recibu';
-$labels['reqdsn'] = 'Solicitar siempre la entrega de notificaciones d\'estáu';
-$labels['replysamefolder'] = 'Allugar les rempuestes na bandexa del mensaxe que se respuende';
-$labels['defaultabook'] = 'Llibreta de direiciones predeterminada';
-$labels['autocompletesingle'] = 'Omitir direiciones de corréu alternatives n\'autocompletáu';
+$labels['reqmdn'] = 'Solicitar siempres un recibu';
+$labels['reqdsn'] = 'Solicitar siempres la notificación d\'estáu d\'entrega';
+$labels['replysamefolder'] = 'Allugar les rempuestes na carpeta del mensaxe que tea respondiéndose';
+$labels['defaultabook'] = 'Llibreta de direiciones por defeutu';
+$labels['autocompletesingle'] = 'Saltar direiciones de corréu alternatives nel autocompletáu';
$labels['listnamedisplay'] = 'Llistar contautos como';
$labels['spellcheckbeforesend'] = 'Comprobar ortografía enantes d\'unviar un mensaxe';
$labels['spellcheckoptions'] = 'Opciones d\'ortografía';
@@ -424,42 +460,44 @@ $labels['spellcheckignoresyms'] = 'Inorar pallabres con símbolos';
$labels['spellcheckignorenums'] = 'Inorar pallabres con númberos';
$labels['spellcheckignorecaps'] = 'Inorar pallabres con too mayúscules';
$labels['addtodict'] = 'Amestar al diccionariu';
-$labels['mailtoprotohandler'] = 'Rexistrar controlador de protocolu pa enllaces \'mailto:\'';
-$labels['standardwindows'] = 'Xestionar ventanes emerxentes como ventanes estándar';
+$labels['mailtoprotohandler'] = 'Rexistrar xestor de protocolu pa enllaces \'mailto:\'';
+$labels['standardwindows'] = 'Remanar ventanos emerxentes como ventanes estándar';
$labels['forwardmode'] = 'Reunviu de mensaxes';
$labels['inline'] = 'en llinia';
$labels['asattachment'] = 'como axuntu';
+$labels['replyallmode'] = 'Aición por defeutu del botón [Responder too]';
$labels['replyalldefault'] = 'responder a toos';
-$labels['folder'] = 'Bandexa';
-$labels['folders'] = 'Bandexes';
-$labels['foldername'] = 'Nome de bandexa';
-$labels['subscribed'] = 'Soscrita';
+$labels['replyalllist'] = 'responder namái a la llista de Corréu (si s\'alcuentra)';
+$labels['folder'] = 'Carpeta';
+$labels['folders'] = 'Carpetes';
+$labels['foldername'] = 'Nome de carpeta';
+$labels['subscribed'] = 'Soscrita';
$labels['messagecount'] = 'Mensaxes';
-$labels['create'] = 'Facer';
-$labels['createfolder'] = 'Facer una bandexa nueva';
-$labels['managefolders'] = 'Alministrar bandexes';
-$labels['specialfolders'] = 'Bandexes especiales';
+$labels['create'] = 'Crear';
+$labels['createfolder'] = 'Crear una carpeta nueva';
+$labels['managefolders'] = 'Alministrar carpetes';
+$labels['specialfolders'] = 'Carpetes especiales';
$labels['properties'] = 'Propiedaes';
-$labels['folderproperties'] = 'Propiedaes de la bandexa';
-$labels['parentfolder'] = 'Bandexa contenedora';
+$labels['folderproperties'] = 'Propiedaes de la carpeta';
+$labels['parentfolder'] = 'Carpeta pá';
$labels['location'] = 'Llocalización';
$labels['info'] = 'Información';
-$labels['getfoldersize'] = 'Clic pa saber el tamañu de la bandexa';
-$labels['changesubscription'] = 'Clic pa camudar soscripción';
-$labels['foldertype'] = 'Tipu de bandexa';
-$labels['personalfolder'] = 'Bandexa privada';
-$labels['otherfolder'] = 'Bandexa d\'otru usuariu';
-$labels['sharedfolder'] = 'Bandexa pública';
-$labels['sortby'] = 'Ordenar por';
+$labels['getfoldersize'] = 'Primi pa saber el tamañu de la carpeta';
+$labels['changesubscription'] = 'Primi pa camudar la soscripción';
+$labels['foldertype'] = 'Triba de carpeta';
+$labels['personalfolder'] = 'Carpeta privada';
+$labels['otherfolder'] = 'Carpeta d\'otru usuariu';
+$labels['sharedfolder'] = 'Carpeta pública';
+$labels['sortby'] = 'Ordenar per';
$labels['sortasc'] = 'Orde ascendente';
$labels['sortdesc'] = 'Orde descendente';
$labels['undo'] = 'Desfacer';
$labels['installedplugins'] = 'Complementos instalaos';
$labels['plugin'] = 'Complementu';
$labels['version'] = 'Versión';
-$labels['source'] = 'Orixe';
+$labels['source'] = 'Fonte';
$labels['license'] = 'Llicencia';
-$labels['support'] = 'Obtener soporte';
+$labels['support'] = 'Consiguir sofitu';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
@@ -478,8 +516,48 @@ $labels['turkish'] = 'Turcu';
$labels['nordic'] = 'Nórdicu';
$labels['thai'] = 'Tailandés';
$labels['celtic'] = 'Celta';
-$labels['vietnamese'] = 'Vietnamín';
+$labels['vietnamese'] = 'Vietnamita';
$labels['japanese'] = 'Xaponés';
$labels['korean'] = 'Coreanu';
$labels['chinese'] = 'Chinu';
+$labels['arialabeltopnav'] = 'Control de ventana';
+$labels['arialabeltasknav'] = 'Xeres d\'aplicación';
+$labels['arialabeltoolbar'] = 'Barra de ferramientes d\'aplicación';
+$labels['arialabelactivetask'] = 'Xera activa';
+$labels['arialabelmessagessearchfilter'] = 'Flitru de llistáy de correos';
+$labels['arialabelmailsearchform'] = 'Formulariu de gueta de mensaxe de corréu';
+$labels['arialabelcontactsearchform'] = 'Formulariu de gueta de contautos';
+$labels['arialabelmailquicksearchbox'] = 'Entrada de gueta de correos';
+$labels['arialabelquicksearchbox'] = 'Entrada de gueta';
+$labels['arialabelfolderlist'] = 'Esbilla de carpeta de corréu';
+$labels['arialabelmessagelist'] = 'Llistáu de mensaxes de corréu';
+$labels['arialabelmailpreviewframe'] = 'Vista previa de mensaxe';
+$labels['arialabelmailboxmenu'] = 'Menú d\'aiciones de carpeta';
+$labels['arialabellistselectmenu'] = 'Menú d\'esbilla de llista';
+$labels['arialabelthreadselectmenu'] = 'Menú de llistáu de filos';
+$labels['arialabelmailimportdialog'] = 'Diálogu d\'impotación de mensaxe';
+$labels['arialabelmessagenav'] = 'Restolación de mensaxe';
+$labels['arialabelmessagebody'] = 'Cuerpu de mensaxe';
+$labels['arialabelmessageactions'] = 'Aiciones de mensaxe';
+$labels['arialabelcontactquicksearch'] = 'Formulariu de gueta de contautos';
+$labels['arialabelcontactsearchbox'] = 'Entrada de gueta de contautu';
+$labels['arialabelmessageheaders'] = 'Testeres de mensaxe';
+$labels['arialabelforwardingoptions'] = 'Opciones de reunviu';
+$labels['arialabelreplyalloptions'] = 'Opciones de responder a toos';
+$labels['arialabelmoremessageactions'] = 'Aiciones de más mensaxes';
+$labels['arialabelmarkmessagesas'] = 'Conseñar los mensaxes esbillaos como...';
+$labels['arialabelcomposeoptions'] = 'Opciones de redaición';
+$labels['arialabelresponsesmenu'] = 'Menú de rempuestes conservaes';
+$labels['arialabelattachmentuploadform'] = 'Formulariu de xuba d\'axuntu';
+$labels['arialabelattachmentpreview'] = 'Vista previa d\'axuntu';
+$labels['ariasummarycomposecontacts'] = 'Llista de contutos y grupos pa esbillar como destinatarios';
+$labels['arialabelcontactexportoptions'] = 'Opciones d\'esportación de contautu';
+$labels['arialabelabookgroupoptions'] = 'Opciones de llibru de direiciones/grupu';
+$labels['arialabelpreferencesform'] = 'Formulariu de preferencies';
+$labels['arialabelidentityeditfrom'] = 'Formulariu d\'edición d\'identidá';
+$labels['arialabelresonseeditfrom'] = 'Formulariu d\'edición de rempuesta';
+$labels['helplistnavigation'] = 'Restolación de tecláu de llista';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "Enter: Abrir el contautu esbilláu/enfocáu.";
?>
diff --git a/program/localization/ast/messages.inc b/program/localization/ast/messages.inc
index 6abf990ae..25bad1942 100644
--- a/program/localization/ast/messages.inc
+++ b/program/localization/ast/messages.inc
@@ -17,12 +17,14 @@
*/
$messages['errortitle'] = '¡Hebo un fallu!';
$messages['loginfailed'] = 'Contraseña o nome d\'usuariu incorreutu.';
-$messages['cookiesdisabled'] = 'El to navegador nun aceuta "cookies';
+$messages['cookiesdisabled'] = 'El to restolador nun aceuta cookies.';
$messages['sessionerror'] = 'La to sesión nun val o caducó.';
$messages['storageerror'] = 'Fallu de conexón col sirvidor IMAP';
$messages['servererror'] = '¡Fallu del sirvidor!';
$messages['servererrormsg'] = 'Fallu de sirvidor: $msg';
+$messages['connerror'] = '¡Fallu de conexón (Fallu al algamar el sirvidor)!';
$messages['dberror'] = '¡Fallu na base de datos!';
+$messages['windowopenerror'] = '¡Bloquióse\'l ventanu emerxente!';
$messages['requesttimedout'] = 'Caducó\'l tiempu de rempuesta.';
$messages['errorreadonly'] = 'Imposible facer la operación. La bandexa ye de namái-llectura.';
$messages['errornoperm'] = 'Imposible facer la operación. Denegóse\'l permisu.';
@@ -31,7 +33,9 @@ $messages['erroroverquotadelete'] = 'Nun queda espaciu nel discu. Usa Shift+Supr
$messages['invalidrequest'] = 'Fallu de la solicitú. Nun se guardaron datos.';
$messages['invalidhost'] = 'Nome de sirvidor inválidu.';
$messages['nomessagesfound'] = 'Nun s\'atoparon mensaxes na bandexa';
-$messages['loggedout'] = 'Zarraste la sesión. ¡Talluéu!';
+$messages['loggedout'] = 'Zarrasti la sesión. Ta llueu!';
+$messages['mailboxempty'] = 'La bandexa de corréu ta balera';
+$messages['nomessages'] = 'Nun hai mensaxes';
$messages['refreshing'] = 'Anovando...';
$messages['loading'] = 'Cargando...';
$messages['uploading'] = 'Xubiendo ficheru';
@@ -43,6 +47,8 @@ $messages['messagesent'] = 'Unvióse\'l mensaxe.';
$messages['savingmessage'] = 'Guardar mensaxe...';
$messages['messagesaved'] = 'El mensaxe guardóse en borradores';
$messages['successfullysaved'] = 'Guardóse correchamente';
+$messages['savingresponse'] = 'Guardando mensaxe de rempuesta...';
+$messages['deleteresponseconfirm'] = '¿De xuru quies desaniciar esti testu de rempuesta?';
$messages['addedsuccessfully'] = 'El contautu amestóse correchamente a la llibreta de direiciones';
$messages['contactexists'] = 'Yá hai un contautu con esa direición de corréu-e.';
$messages['contactnameexists'] = 'Yá esiste un contautu col mesmu nome.';
@@ -53,6 +59,8 @@ $messages['contactnotfound'] = 'Nun s\'atopa\'l contautu solicitáu.';
$messages['contactsearchonly'] = 'Introduz dalgún criteriu pa guetar contautos';
$messages['sendingfailed'] = 'Falló l\'unviu del mensaxe';
$messages['senttooquickly'] = 'Por favor espera $sec segundu/os enantes d\'unviar esti mensaxe.';
+$messages['errorsavingsent'] = 'Hebo un fallu al guardar el mensaxe unviáu.';
+$messages['errorsaving'] = 'Hebo un fallu al guardar.';
$messages['errormoving'] = 'Nun pudo movese el/los mensaxe(s).';
$messages['errorcopying'] = 'Nun pudo copiase el/los mensaxe(s).';
$messages['errordeleting'] = 'Nun pudo desaniciase el/los mensaxe(s)';
@@ -77,6 +85,7 @@ $messages['norecipientwarning'] = 'Por favor, introduz polo menos un destinatari
$messages['nosubjectwarning'] = 'El campo "Asuntu" ta vacíu. ¿Quies rellenalu agora?';
$messages['nobodywarning'] = '¿Quies unviar esti mensaxe ensin testu?';
$messages['notsentwarning'] = 'Nun s\'unvió\'l mensaxe. ¿Quies desanicialu?';
+$messages['restoresavedcomposedata'] = 'Alcontróse un mensaxe redactáu anterior ensin unviar.n\nAsuntu: $subject\nGuardáu: $date\n\n¿Quies restaurar esti mensaxe?';
$messages['noldapserver'] = 'Por favor, escueyi un sirvidor LDAP pa buscar.';
$messages['nosearchname'] = 'Por favor, introduz un nome o una direición de corréu-e.';
$messages['notuploadedwarning'] = 'Entá nun se xubieron tolos axuntos. Por favor, espera o encaboxa la xuba.';
@@ -85,6 +94,7 @@ $messages['contactsearchsuccessful'] = 'Atopáronse $nr contautos.';
$messages['searchnomatch'] = 'Nun s\'atopó dengún resultáu';
$messages['searching'] = 'A la gueta...';
$messages['checking'] = 'Comprobando...';
+$messages['stillsearching'] = 'Guetando entá...';
$messages['nospellerrors'] = 'Nun s\'atoparon errores ortográficos';
$messages['folderdeleted'] = 'Desanicióse la bandexa correchamente';
$messages['foldersubscribed'] = 'Soscritu a bandexa correchamente.';
@@ -128,7 +138,7 @@ $messages['importmessagesuccess'] = '$nr mensaxes importaos con éxitu';
$messages['importmessageerror'] = '¡Falló la importación! El ficheru xubíu nun ye un ficheru válidu de mensaxe o buzón de corréu';
$messages['opnotpermitted'] = '¡Nun tienes permisu pa facelo!';
$messages['nofromaddress'] = 'El contautu seleicionáu nun tien direición de corréu-e.';
-$messages['editorwarning'] = 'Si pases a editor en mou testu vas perder tol estilu aplicáu al mensaxe. ¿Tas seguru de que quies facelo?';
+$messages['editorwarning'] = 'Cambear la triba d\'editor pue causar perda del formatu del testu. ¿Deseyes continuar?';
$messages['httpreceivedencrypterror'] = 'Hai un fallu grave de configuración. Contauta col alministrador de secute. <b>Nun pue unviase\'l mensaxe</b>';
$messages['smtpconnerror'] = 'Fallu SMTP ($code): Fallu de conexón col sirvidor';
$messages['smtpautherror'] = 'Fallu SMTP ($code): Fallu d\'autorización';
@@ -139,6 +149,7 @@ $messages['smtperror'] = 'Fallu SMTP: $msg';
$messages['emailformaterror'] = 'Direición de corréu incorreuta: $email';
$messages['toomanyrecipients'] = 'Hai munchos destinatarios. Amenorga\'l númberu de destinatarios a $max.';
$messages['maxgroupmembersreached'] = 'El númberu de miembros del grupu perpasa\'l máximu de $max.';
+$messages['internalerror'] = 'Hebo un fallu internu. Por favor, vuelvi intentalo.';
$messages['contactdelerror'] = 'Nun pudo desaniciase el/los contautu(os).';
$messages['contactdeleted'] = 'Contautu(os) desaniciáu(os) correchamente.';
$messages['contactrestoreerror'] = 'Nun pudieron restaurase los contautos desaniciaos.';
diff --git a/program/localization/az_AZ/labels.inc b/program/localization/az_AZ/labels.inc
index 1e4a5e2f5..14ff7e6bc 100644
--- a/program/localization/az_AZ/labels.inc
+++ b/program/localization/az_AZ/labels.inc
@@ -203,9 +203,8 @@ $labels['restoremessage'] = 'Məktub bərpa edilsin?';
$labels['responses'] = 'Cavablar';
$labels['insertresponse'] = 'Cavab daxil et';
$labels['manageresponses'] = 'Cavabların idarə edilməsi';
-$labels['savenewresponse'] = 'Yeni cavabı saxla';
-$labels['editresponses'] = 'Cavabları redaktə et';
$labels['editresponse'] = 'Cavabı redaktə et';
+$labels['editresponses'] = 'Cavabları redaktə et';
$labels['responsename'] = 'Ad';
$labels['responsetext'] = 'Cavab mətni';
$labels['attach'] = 'Fayl əlavə et';
@@ -288,7 +287,6 @@ $labels['typehomepage'] = 'Ana səhifə';
$labels['typeblog'] = 'Bloq';
$labels['typeprofile'] = 'Profil';
$labels['addfield'] = 'Sahə əlavə et';
-$labels['addcontact'] = 'Ünvanlara əlavə et';
$labels['editcontact'] = 'Ünvanı redaktə et';
$labels['contacts'] = 'Əlaqələr';
$labels['contactproperties'] = 'Kontakt xüsusiyyətləri';
@@ -301,7 +299,6 @@ $labels['rename'] = 'Adlandır';
$labels['addphoto'] = 'Əlavə et';
$labels['replacephoto'] = 'Adı dəyiş';
$labels['uploadphoto'] = 'Şəkil yüklə';
-$labels['newcontact'] = 'Yeni ünvan kartı əlavə et';
$labels['deletecontact'] = 'Seçilmiş ünvanları sil';
$labels['composeto'] = 'Seçilmiş ünvanlara məktub yaz';
$labels['contactsfromto'] = '$count ünvanının $from - $to arası';
@@ -310,7 +307,6 @@ $labels['export'] = 'İxrac et';
$labels['exportall'] = 'Hamısını İxrac et';
$labels['exportsel'] = 'Seçilmişləri İxrac et';
$labels['exportvcards'] = 'Ünvanları vCards formatında ixrac et';
-$labels['newcontactgroup'] = 'Ünvanlar qrupunu yarat';
$labels['grouprename'] = 'Qruğun adını dəyişdir';
$labels['groupdelete'] = 'Qrupu sil';
$labels['groupremoveselected'] = 'Qrupdan seçilmiş kontaktları sil';
@@ -340,10 +336,6 @@ $labels['preferences'] = 'Nizamlamalar';
$labels['userpreferences'] = 'İstifadəçi nizamlamaları';
$labels['editpreferences'] = 'İstifadəçi nizamlamalarını redaktə et';
$labels['identities'] = 'Kimliklər';
-$labels['manageidentities'] = 'Bu hesab üçün kimlikləri idarə et';
-$labels['newidentity'] = 'Yeni kimlik';
-$labels['newitem'] = 'Yeni maddə';
-$labels['edititem'] = 'Maddəni redaktə et';
$labels['preferhtml'] = 'HTML-də göstər';
$labels['defaultcharset'] = 'İlkin vəziyyətdəki kodlaşdırma';
$labels['htmlmessage'] = 'HTML məktub';
@@ -400,6 +392,7 @@ $labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (başqa)';
$labels['force7bit'] = '8-bitli simvollar üçün MIME istifadə et';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'Ətraflı nizamlama';
$labels['focusonnewmessage'] = 'Yeni məktub zamanı brauzerin pəncərəsini fokusla';
$labels['checkallfolders'] = 'Bütün qovluqlarda yeni məktubları yoxla';
@@ -442,14 +435,14 @@ $labels['asattachment'] = 'fayl kimi';
$labels['replyallmode'] = '[Hamıya cavab] düyməsinin susmaya görə hərəkəti';
$labels['replyalldefault'] = 'hamıya cavab';
$labels['replyalllist'] = 'yalnız poçt siyahısına (əgər tapılıbsa) cavab ';
-$labels['folder'] = 'Qovluq';
-$labels['folders'] = 'Qovluqlar';
-$labels['foldername'] = 'Qovluq adı';
-$labels['subscribed'] = 'İmzalanıb';
+$labels['folder'] = 'Qovluq';
+$labels['folders'] = 'Qovluqlar';
+$labels['foldername'] = 'Qovluq adı';
+$labels['subscribed'] = 'İmzalanıb';
$labels['messagecount'] = 'Məktublar';
-$labels['create'] = 'Yarad';
-$labels['createfolder'] = 'Yeni qovluq yarad';
-$labels['managefolders'] = 'Qovluqlarla iş';
+$labels['create'] = 'Yarad';
+$labels['createfolder'] = 'Yeni qovluq yarad';
+$labels['managefolders'] = 'Qovluqlarla iş';
$labels['specialfolders'] = 'Xüsusi qovluqlar';
$labels['properties'] = 'Xüsusiyyətlər';
$labels['folderproperties'] = 'Qovluq xüsusiyyətləri';
@@ -459,9 +452,9 @@ $labels['info'] = 'Məlumat';
$labels['getfoldersize'] = 'Qovluq ölçüsünü öyrənmək üçün vur';
$labels['changesubscription'] = 'Abunəni dəyişmək üçün vurun';
$labels['foldertype'] = 'Qovluq növü';
-$labels['personalfolder'] = 'Gizli qovluq';
-$labels['otherfolder'] = 'Başqa istifadəçilərin qovluğu';
-$labels['sharedfolder'] = 'İctimai qovluq';
+$labels['personalfolder'] = 'Gizli qovluq';
+$labels['otherfolder'] = 'Başqa istifadəçilərin qovluğu';
+$labels['sharedfolder'] = 'İctimai qovluq';
$labels['sortby'] = 'Çeşidlə';
$labels['sortasc'] = 'Azdan çoxa';
$labels['sortdesc'] = 'Çoxdan aza';
@@ -494,4 +487,7 @@ $labels['vietnamese'] = 'Vyetnamca';
$labels['japanese'] = 'Yaponca';
$labels['korean'] = 'Koreya';
$labels['chinese'] = 'Çincə';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/az_AZ/messages.inc b/program/localization/az_AZ/messages.inc
index 28e5f57d2..a65ff447e 100644
--- a/program/localization/az_AZ/messages.inc
+++ b/program/localization/az_AZ/messages.inc
@@ -135,7 +135,6 @@ $messages['importmessagesuccess'] = '$nr məktublar uğurla idxal edildi';
$messages['importmessageerror'] = 'İdxal alınmadı! Yüklənilmiş fayl düzgün məktub və ya poçt faylı deyil';
$messages['opnotpermitted'] = 'Əməliyyat qadağandır!';
$messages['nofromaddress'] = 'Seçilmiş kimlikdə e-poçt ünvanları yoxdur';
-$messages['editorwarning'] = 'Adi mətn redaktoruna keçid, bütün mətn formatlarının itkisinə gətirəcək. Davam edilsin?';
$messages['httpreceivedencrypterror'] = 'Serverdə qaçıımaz xəta baş verib. Təcili öz inzibatçınız ilə əlaqə qurun. <b>Sizin məktub göndərilməyə bilər.</b>';
$messages['smtpconnerror'] = 'SMTP Error ($code): Serverlə bağlantı alınmadı';
$messages['smtpautherror'] = 'SMTP Error ($code): İdentifikasiya xətası';
diff --git a/program/localization/be_BE/labels.inc b/program/localization/be_BE/labels.inc
index c08b9c866..9d12b00b3 100644
--- a/program/localization/be_BE/labels.inc
+++ b/program/localization/be_BE/labels.inc
@@ -131,16 +131,24 @@ $labels['moreactions'] = 'Больш дзеянняў...';
$labels['more'] = 'Больш';
$labels['back'] = 'Назад';
$labels['options'] = 'Параметры';
+$labels['first'] = 'Першая';
+$labels['last'] = 'Апошняя';
+$labels['previous'] = 'Папярэдняя';
+$labels['next'] = 'Наступная';
$labels['select'] = 'Выбраць';
$labels['all'] = 'Усе';
$labels['none'] = 'Жаднага';
$labels['currpage'] = 'Бягучая старонка';
+$labels['isread'] = 'Прачытаныя';
$labels['unread'] = 'Непрачытаныя';
$labels['flagged'] = 'З флагам';
+$labels['unflagged'] = 'Без флага';
$labels['unanswered'] = 'Неадказаныя';
$labels['withattachment'] = 'З далучэннямі';
$labels['deleted'] = 'Выдаленыя';
$labels['undeleted'] = 'Нявыдаленыя';
+$labels['replied'] = 'Адказаныя';
+$labels['forwarded'] = 'Перасланыя';
$labels['invert'] = 'Інвертаваць';
$labels['filter'] = 'Фільтр';
$labels['list'] = 'Спіс';
@@ -178,6 +186,10 @@ $labels['msgtext'] = 'Усё паведамленне';
$labels['body'] = 'Цела';
$labels['type'] = 'Тып';
$labels['namex'] = 'Імя';
+$labels['searchscope'] = 'Абсяг';
+$labels['currentfolder'] = 'Бягучая папка';
+$labels['subfolders'] = 'Гэтая і падпапкі';
+$labels['allfolders'] = 'Усе папкі';
$labels['openinextwin'] = 'Адкрыць у новым акне';
$labels['emlsave'] = 'Сцягнуць (.eml)';
$labels['changeformattext'] = 'Паказаць як просты тэкст';
@@ -193,6 +205,10 @@ $labels['returnreceipt'] = 'Пацверджанне атрымання';
$labels['dsn'] = 'Апавяшчэнне пра дастаўку';
$labels['mailreplyintro'] = '$sender пісаў $date:';
$labels['originalmessage'] = 'Арыгінальнае паведамленне';
+$labels['selectimage'] = 'Абраць відарыс';
+$labels['addimage'] = 'Дадаць відарыс';
+$labels['selectmedia'] = 'Абраць фільмік';
+$labels['addmedia'] = 'Дадаць фільмік';
$labels['editidents'] = 'Рэдагаваць тоеснасці';
$labels['spellcheck'] = 'Правапіс';
$labels['checkspelling'] = 'Праверыць правапіс';
@@ -203,9 +219,10 @@ $labels['restoremessage'] = 'Аднавіць паведамленне?';
$labels['responses'] = 'Адказы';
$labels['insertresponse'] = 'Уставіць адказ';
$labels['manageresponses'] = 'Кіраваць адказамі';
-$labels['savenewresponse'] = 'Захаваць новы адказ';
-$labels['editresponses'] = 'Рэдагаваць адказы';
+$labels['newresponse'] = 'Стварыць новы адказ';
+$labels['addresponse'] = 'Дадаць адказ';
$labels['editresponse'] = 'Рэдагаваць адказ';
+$labels['editresponses'] = 'Рэдагаваць адказы';
$labels['responsename'] = 'Назва';
$labels['responsetext'] = 'Тэкст адказу';
$labels['attach'] = 'Далучыць';
@@ -214,6 +231,7 @@ $labels['upload'] = 'Апублікаваць';
$labels['uploadprogress'] = '$percent ($current з $total)';
$labels['close'] = 'Закрыць';
$labels['messageoptions'] = 'Параметры паведамлення...';
+$labels['togglecomposeoptions'] = 'Пераключыць параметры складання';
$labels['low'] = 'Нізкі';
$labels['lowest'] = 'Найнізшы';
$labels['normal'] = 'Звычайны';
@@ -270,6 +288,7 @@ $labels['assistant'] = 'Асістэнт';
$labels['spouse'] = 'Жонка';
$labels['allfields'] = 'Усе палі';
$labels['search'] = 'Пошук';
+$labels['searchfor'] = 'Шукаць "$q"';
$labels['advsearch'] = 'Пашыраны пошук';
$labels['advanced'] = 'Дадаткова';
$labels['other'] = 'Іншае';
@@ -288,11 +307,13 @@ $labels['typehomepage'] = 'Дамашняя старонка';
$labels['typeblog'] = 'Блог';
$labels['typeprofile'] = 'Профіль';
$labels['addfield'] = 'Дадаць поле...';
-$labels['addcontact'] = 'Дадаць новы кантакт';
+$labels['addcontact'] = 'Дадаць кантакт';
$labels['editcontact'] = 'Рэдагаваць кантакт';
$labels['contacts'] = 'Кантакты';
$labels['contactproperties'] = 'Уласцівасці кантакта';
+$labels['contactnameandorg'] = 'Імя і арганізацыя';
$labels['personalinfo'] = 'Асабістыя звесткі';
+$labels['contactphoto'] = 'Асабістае фота';
$labels['edit'] = 'Рэдагаваць';
$labels['cancel'] = 'Скасаваць';
$labels['save'] = 'Захаваць';
@@ -301,7 +322,7 @@ $labels['rename'] = 'Пераназваць';
$labels['addphoto'] = 'Дадаць';
$labels['replacephoto'] = 'Замяніць';
$labels['uploadphoto'] = 'Апублікаваць фота';
-$labels['newcontact'] = 'Стварыць новую картку кантакта';
+$labels['newcontact'] = 'Стварыць новы кантакт';
$labels['deletecontact'] = 'Выдаліць абраных кантактаў';
$labels['composeto'] = 'Скласці ліст да';
$labels['contactsfromto'] = 'Кантакты $from—$to з $count';
@@ -310,10 +331,11 @@ $labels['export'] = 'Экспарт';
$labels['exportall'] = 'Экспартаваць усё';
$labels['exportsel'] = 'Экспартаваць абранае';
$labels['exportvcards'] = 'Экспартаваць кантакты ў фармаце vCard';
-$labels['newcontactgroup'] = 'Стварыць новую групу кантактаў';
+$labels['newgroup'] = 'Стварыць новую групу';
$labels['grouprename'] = 'Пераназваць групу';
$labels['groupdelete'] = 'Выдаліць групу';
$labels['groupremoveselected'] = 'Выдаліць абраных кантакаў з групы';
+$labels['uponelevel'] = 'На адзін узровень уверх';
$labels['previouspage'] = 'Папярэдняя старонка';
$labels['firstpage'] = 'Першая старонка';
$labels['nextpage'] = 'Наступная старонка';
@@ -340,10 +362,6 @@ $labels['preferences'] = 'Параметры';
$labels['userpreferences'] = 'Параметры карыстальніка';
$labels['editpreferences'] = 'Рэдагаваць параметры карыстальніка';
$labels['identities'] = 'Тоеснасці';
-$labels['manageidentities'] = 'Парадкаваць тоеснасці для гэтага ўліковага запісу';
-$labels['newidentity'] = 'Новая тоеснасць';
-$labels['newitem'] = 'Новы элемент';
-$labels['edititem'] = 'Рэдагаваць элемент';
$labels['preferhtml'] = 'Паказаць HTML';
$labels['defaultcharset'] = 'Стандартная кадзіроўка';
$labels['htmlmessage'] = 'Паведамленне ў HTML';
@@ -400,6 +418,7 @@ $labels['2231folding'] = 'Поўны RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Поўны RFC 2047 (інш.)';
$labels['force7bit'] = 'Ужываць MIME-кадзіроўку для 8-бітных знакаў';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'Дадатковыя параметры';
$labels['focusonnewmessage'] = 'Актываваць акно браўзера пры новым паведамленні';
$labels['checkallfolders'] = 'Правяраць усе папкі на новыя паведамленні';
@@ -442,14 +461,14 @@ $labels['asattachment'] = 'як далучэнне';
$labels['replyallmode'] = 'Стандартнае дзеянне кнопкі [Адказаць усім]';
$labels['replyalldefault'] = 'адказаць усім';
$labels['replyalllist'] = 'адказаць толькі ў спіс рассылкі (калі знойдзены)';
-$labels['folder'] = 'Папка';
-$labels['folders'] = 'Папкі';
-$labels['foldername'] = 'Назва папкі';
-$labels['subscribed'] = 'Падпісаная';
+$labels['folder'] = 'Папка';
+$labels['folders'] = 'Папкі';
+$labels['foldername'] = 'Назва папкі';
+$labels['subscribed'] = 'Падпісаная';
$labels['messagecount'] = 'Паведамленні';
-$labels['create'] = 'Стварыць';
-$labels['createfolder'] = 'Стварыць новую папку';
-$labels['managefolders'] = 'Парадкаваць папкі';
+$labels['create'] = 'Стварыць';
+$labels['createfolder'] = 'Стварыць новую папку';
+$labels['managefolders'] = 'Парадкаваць папкі';
$labels['specialfolders'] = 'Адмысловыя папкі';
$labels['properties'] = 'Уласцівасці';
$labels['folderproperties'] = 'Уласцівасці папкі';
@@ -459,9 +478,9 @@ $labels['info'] = 'Звесткі';
$labels['getfoldersize'] = 'Пстрыкніце, каб даведацца памер папкі';
$labels['changesubscription'] = 'Пстрыкніце, каб змяніць падпіску';
$labels['foldertype'] = 'Тып папкі';
-$labels['personalfolder'] = 'Асабістая папка';
-$labels['otherfolder'] = 'Папка іншага карыстальніка';
-$labels['sharedfolder'] = 'Публічная папка';
+$labels['personalfolder'] = 'Асабістая папка';
+$labels['otherfolder'] = 'Папка іншага карыстальніка';
+$labels['sharedfolder'] = 'Публічная папка';
$labels['sortby'] = 'Сартаваць паводле';
$labels['sortasc'] = 'Сартаваць на ўзрастанне';
$labels['sortdesc'] = 'Сартаваць на змяншчэнне';
@@ -494,4 +513,7 @@ $labels['vietnamese'] = 'в\'етнамская';
$labels['japanese'] = 'японская';
$labels['korean'] = 'карэйская';
$labels['chinese'] = 'кітайская';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/be_BE/messages.inc b/program/localization/be_BE/messages.inc
index 5d17249d6..cb51b0b40 100644
--- a/program/localization/be_BE/messages.inc
+++ b/program/localization/be_BE/messages.inc
@@ -22,7 +22,9 @@ $messages['sessionerror'] = 'Ваша сесія невалідная альбо
$messages['storageerror'] = 'Не ўдалося злучыцца з серверам-сховішчам.';
$messages['servererror'] = 'Памылка сервера!';
$messages['servererrormsg'] = 'Памылка сервера: $msg';
+$messages['connerror'] = 'Памылка злучэння (не ўдалося даступіцца да сервера)!';
$messages['dberror'] = 'Памылка базы даных!';
+$messages['windowopenerror'] = 'Усплыўное акно было заблакавана!';
$messages['requesttimedout'] = 'Час запросу выйшаў';
$messages['errorreadonly'] = 'Не ўдалося выканаць аперацыю. Папка даступна толькі для чытання.';
$messages['errornoperm'] = 'Не ўдалося выканаць аперацыю. Адмоўлена ў доступе.';
@@ -36,8 +38,8 @@ $messages['mailboxempty'] = 'У паштовай скрынцы пуста';
$messages['nomessages'] = 'Няма паведамленняў';
$messages['refreshing'] = 'Абнаўляецца...';
$messages['loading'] = 'Загружаецца...';
-$messages['uploading'] = 'Файл зацягваецца...';
-$messages['uploadingmany'] = 'Файлы зацягваюцца...';
+$messages['uploading'] = 'Файл загружаецца...';
+$messages['uploadingmany'] = 'Файлы загружаюцца...';
$messages['loadingdata'] = 'Загружаюцца даныя...';
$messages['checkingmail'] = 'Праверка новых паведамленняў...';
$messages['sendingmessage'] = 'Паведамленне адпраўляецца...';
@@ -92,6 +94,7 @@ $messages['contactsearchsuccessful'] = 'Знойдзена $nr кантакта
$messages['searchnomatch'] = 'Пошук не даў выніку.';
$messages['searching'] = 'Ідзе пошук...';
$messages['checking'] = 'Ідзе праверка...';
+$messages['stillsearching'] = 'Усё яшчэ ідзе пошук...';
$messages['nospellerrors'] = 'Памылак правапісання не выяўлена.';
$messages['folderdeleted'] = 'Папка выдалена.';
$messages['foldersubscribed'] = 'Папка падпісана.';
@@ -135,7 +138,7 @@ $messages['importmessagesuccess'] = '$nr паведамленняў імпарт
$messages['importmessageerror'] = 'Не ўдалося імпартаваць! Загружаны файл не ёсць слушным паведамленнем альбо файлам паштовай скрынкі';
$messages['opnotpermitted'] = 'Аперацыя не дазволеная!';
$messages['nofromaddress'] = 'У абранай тоеснасці не стае адрасу эл. пошты.';
-$messages['editorwarning'] = 'Змена рэдактара прывядзе да страты фарматавання. Працягнуць?';
+$messages['editorwarning'] = 'Змена тыпу рэдактара можа прывесці да страты фарматавання. Працягнуць?';
$messages['httpreceivedencrypterror'] = 'Важная памылка ў канфігурацыі. Неадкладна скантактуйцеся з адміністратарам. <b>Паведамленне не можа быць адпраўлена.</b>';
$messages['smtpconnerror'] = 'Памылка SMTP ($code): Не ўдалося злучыцца з серверам.';
$messages['smtpautherror'] = 'Памылка SMTP ($code): Аўтэтыфікацыя не ўдалася.';
@@ -173,5 +176,5 @@ $messages['mispellingsfound'] = 'У паведамленні выяўлены п
$messages['parentnotwritable'] = 'Не ўдалося стварыць/перамясціць папку ў абраным месцы. Няма доступу.';
$messages['messagetoobig'] = 'Гэтая часць паведамлення завялікая, каб яе апрацаваць.';
$messages['attachmentvalidationerror'] = 'УВАГА! Гэтае далучэнне ёсць падазроным, бо тып ягоны не супадае з заяўленым тыпам у паведамленні. Калі вы не давяраеце гэтаму адпраўніку, не адчыняйце яго ў браўзеры, таму што яно можа ўтрымліваць шкоднае змесціва.<br/><br/><em>Чаканы: $expected; знойдзены: $detected<em>';
-$messages['noscriptwarning'] = 'Увага: Служба вымагае Javascript’у! Каб карыстацца ёй, трэба ўключыць Javascript у настаўленнях браўзера.';
+$messages['noscriptwarning'] = 'Увага: Служба вымагае Javascript’у! Каб карыстацца ёй, трэба ўключыць Javascript у перавагах браўзера.';
?>
diff --git a/program/localization/bg_BG/labels.inc b/program/localization/bg_BG/labels.inc
index e7f2f3712..23021815b 100644
--- a/program/localization/bg_BG/labels.inc
+++ b/program/localization/bg_BG/labels.inc
@@ -131,16 +131,24 @@ $labels['moreactions'] = 'Допълнителни действия...';
$labels['more'] = 'Още';
$labels['back'] = 'Назад';
$labels['options'] = 'Опции';
+$labels['first'] = 'Първо';
+$labels['last'] = 'Последно';
+$labels['previous'] = 'Предишно';
+$labels['next'] = 'Сладващо';
$labels['select'] = 'Избери';
$labels['all'] = 'Всички';
$labels['none'] = 'Остави без избор';
$labels['currpage'] = 'Всички на страницата';
+$labels['isread'] = 'Прочетено';
$labels['unread'] = 'Само нови';
$labels['flagged'] = 'Само отбелязани';
+$labels['unflagged'] = 'Без флаг';
$labels['unanswered'] = 'Само без отговор';
$labels['withattachment'] = 'С прикачен файл';
$labels['deleted'] = 'Всички изтрити';
$labels['undeleted'] = 'Които не са изтрити';
+$labels['replied'] = 'Отговорено';
+$labels['forwarded'] = 'Препратено';
$labels['invert'] = 'Които не са избрани';
$labels['filter'] = 'Филтър';
$labels['list'] = 'Списък';
@@ -178,6 +186,10 @@ $labels['msgtext'] = 'Цялото писмо';
$labels['body'] = 'Основен текст';
$labels['type'] = 'Тип';
$labels['namex'] = 'Име';
+$labels['searchscope'] = 'Обхват';
+$labels['currentfolder'] = 'Текуща папка';
+$labels['subfolders'] = 'Тази и подпапките';
+$labels['allfolders'] = 'Всички папки';
$labels['openinextwin'] = 'Отвори в нов прозорец';
$labels['emlsave'] = 'Изтегли като .eml';
$labels['changeformattext'] = 'Покажи в текстов формат';
@@ -193,6 +205,10 @@ $labels['returnreceipt'] = 'Обратна разписка';
$labels['dsn'] = 'Нотификация при доставка';
$labels['mailreplyintro'] = 'На $date, $sender написа:';
$labels['originalmessage'] = 'Оригинално писмо';
+$labels['selectimage'] = 'Избери изображение';
+$labels['addimage'] = 'Добави изображение';
+$labels['selectmedia'] = 'Избери клип';
+$labels['addmedia'] = 'Добави клип';
$labels['editidents'] = 'Промени самоличности';
$labels['spellcheck'] = 'Правопис';
$labels['checkspelling'] = 'Проверка на правописа';
@@ -203,9 +219,8 @@ $labels['restoremessage'] = 'Възстановяване на съобщени
$labels['responses'] = 'Отговори';
$labels['insertresponse'] = 'Вмъкване на отговори';
$labels['manageresponses'] = 'Настройка на отговори';
-$labels['savenewresponse'] = 'Запис на нов отговор';
-$labels['editresponses'] = 'Редакция на отговори';
$labels['editresponse'] = 'Редакция на отговор';
+$labels['editresponses'] = 'Редакция на отговори';
$labels['responsename'] = 'Име';
$labels['responsetext'] = 'Текст на отговор';
$labels['attach'] = 'Прикачи';
@@ -214,6 +229,7 @@ $labels['upload'] = 'Качи';
$labels['uploadprogress'] = '$percent ($current от $total)';
$labels['close'] = 'Затвори';
$labels['messageoptions'] = 'Настройки на писма...';
+$labels['togglecomposeoptions'] = 'Превключване опции за създаване';
$labels['low'] = 'Нисък';
$labels['lowest'] = 'Най-нисък';
$labels['normal'] = 'Нормален';
@@ -270,6 +286,7 @@ $labels['assistant'] = 'Асистент';
$labels['spouse'] = 'Съпруг(а)';
$labels['allfields'] = 'Всички полета';
$labels['search'] = 'Търсене';
+$labels['searchfor'] = 'Търси за "$q"';
$labels['advsearch'] = 'Разширено търсене';
$labels['advanced'] = 'Търси';
$labels['other'] = 'Други';
@@ -288,11 +305,13 @@ $labels['typehomepage'] = 'Личен';
$labels['typeblog'] = 'Блог';
$labels['typeprofile'] = 'Профил';
$labels['addfield'] = 'Друго поле...';
-$labels['addcontact'] = 'Добави нов контакт';
+$labels['addcontact'] = 'Добави контакт';
$labels['editcontact'] = 'Редактирай контакт';
$labels['contacts'] = 'Контакти';
$labels['contactproperties'] = 'Данни на контакт';
+$labels['contactnameandorg'] = 'Име и организация';
$labels['personalinfo'] = 'Лична информация';
+$labels['contactphoto'] = 'Снимка на контакт';
$labels['edit'] = 'Редактирай';
$labels['cancel'] = 'Отказ';
$labels['save'] = 'Запис';
@@ -301,7 +320,7 @@ $labels['rename'] = 'Преименувай';
$labels['addphoto'] = 'Добави';
$labels['replacephoto'] = 'Замени';
$labels['uploadphoto'] = 'Качване на снимка';
-$labels['newcontact'] = 'Нов контакт';
+$labels['newcontact'] = 'Създаване нов контакт';
$labels['deletecontact'] = 'Изтрий избраните контакти';
$labels['composeto'] = 'Напиши писмо до';
$labels['contactsfromto'] = 'Контакти $from до $to от $count';
@@ -310,10 +329,10 @@ $labels['export'] = 'Експорт';
$labels['exportall'] = 'Експортиране на всичко';
$labels['exportsel'] = 'Експортиране на избраното';
$labels['exportvcards'] = 'Експорт във vCard формат';
-$labels['newcontactgroup'] = 'Нова група контракти';
$labels['grouprename'] = 'Преименувай групата';
$labels['groupdelete'] = 'Изтрий групата';
$labels['groupremoveselected'] = 'Премахни избраните контакти от групата';
+$labels['uponelevel'] = 'Нагоре едно ниво';
$labels['previouspage'] = 'Предишна страница';
$labels['firstpage'] = 'Първа страница';
$labels['nextpage'] = 'Следваща страница';
@@ -340,10 +359,8 @@ $labels['preferences'] = 'Настройки';
$labels['userpreferences'] = 'Потребителски настройки';
$labels['editpreferences'] = 'Редактирай потребителските настройки';
$labels['identities'] = 'Самоличности';
-$labels['manageidentities'] = 'Настройка на самоличности за този акаунт';
-$labels['newidentity'] = 'Нова самоличност';
-$labels['newitem'] = 'Нова самоличност';
-$labels['edititem'] = 'Редактирай самоличност';
+$labels['manageidentities'] = 'Управление самоличности';
+$labels['newidentity'] = 'Създай нова самоличност';
$labels['preferhtml'] = 'Покажи първо HTML версия';
$labels['defaultcharset'] = 'Кодова таблица по подразбиране';
$labels['htmlmessage'] = 'HTML писмо';
@@ -400,7 +417,9 @@ $labels['2231folding'] = 'Според RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Според RFC 2047 (други)';
$labels['force7bit'] = 'Използване на MIME кодиране за 8-битови символи';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'Разширени настройки';
+$labels['toggleadvancedoptions'] = 'Превключване на разширени опции';
$labels['focusonnewmessage'] = 'Премигване на прозореца при ново писмо';
$labels['checkallfolders'] = 'Проверка за нови писма във всички папки ';
$labels['displaynext'] = 'След изтриване/преместване на писмо покажи следващото в списъка';
@@ -442,14 +461,14 @@ $labels['asattachment'] = 'като прикачен файл';
$labels['replyallmode'] = 'Действие по подразбиране на бутон [Отговор на всички]';
$labels['replyalldefault'] = 'отговори на всички';
$labels['replyalllist'] = 'отговори на списъка само (ако има)';
-$labels['folder'] = 'Папка';
-$labels['folders'] = 'Папки';
-$labels['foldername'] = 'Име на папката';
-$labels['subscribed'] = 'Абониран';
+$labels['folder'] = 'Папка';
+$labels['folders'] = 'Папки';
+$labels['foldername'] = 'Име на папката';
+$labels['subscribed'] = 'Абониран';
$labels['messagecount'] = 'Писма';
-$labels['create'] = 'Създай';
-$labels['createfolder'] = 'Нова папка';
-$labels['managefolders'] = 'Управление на папките';
+$labels['create'] = 'Създай';
+$labels['createfolder'] = 'Нова папка';
+$labels['managefolders'] = 'Управление на папките';
$labels['specialfolders'] = 'Служебни папки';
$labels['properties'] = 'Данни';
$labels['folderproperties'] = 'Свойства на папката';
@@ -459,9 +478,9 @@ $labels['info'] = 'Информация';
$labels['getfoldersize'] = 'Щракни за размер на папката';
$labels['changesubscription'] = 'Щракни за промяна на абонамент';
$labels['foldertype'] = 'Вид на папката';
-$labels['personalfolder'] = 'Лична папка';
-$labels['otherfolder'] = 'Папка на друг потребител';
-$labels['sharedfolder'] = 'Публична папка';
+$labels['personalfolder'] = 'Лична папка';
+$labels['otherfolder'] = 'Папка на друг потребител';
+$labels['sharedfolder'] = 'Публична папка';
$labels['sortby'] = 'Сортирай по';
$labels['sortasc'] = 'Сортирай нарастващо';
$labels['sortdesc'] = 'Сортирай намаляващо';
@@ -494,4 +513,29 @@ $labels['vietnamese'] = 'Виетнамски';
$labels['japanese'] = 'Японски';
$labels['korean'] = 'Корейски';
$labels['chinese'] = 'Китайски';
+$labels['arialabeltopnav'] = 'Контрол на прозорците';
+$labels['arialabeltasknav'] = 'Задачи на приложението';
+$labels['arialabeltoolbar'] = 'Ленти с инструменти';
+$labels['arialabelmessagessearchfilter'] = 'Филтър на списък с писма';
+$labels['arialabelmailsearchform'] = 'Форма за търсене на писма';
+$labels['arialabelcontactsearchform'] = 'Форма за търсене на контакти';
+$labels['arialabelmailquicksearchbox'] = 'Поле за търсене на писма';
+$labels['arialabelquicksearchbox'] = 'Поле за търсене';
+$labels['arialabelfolderlist'] = 'Избор на папка с писма';
+$labels['arialabelmessagelist'] = 'Списък с писма';
+$labels['arialabelmailpreviewframe'] = 'Преглед на писмо';
+$labels['arialabelmailboxmenu'] = 'Меню с действия върху папка';
+$labels['arialabellistselectmenu'] = 'Меню за избор в списък';
+$labels['arialabelthreadselectmenu'] = 'Меню за списък с кореспонденции';
+$labels['arialabelmessagelistoptions'] = 'Опции за преглед и сортиране на списък с писма';
+$labels['arialabelmailimportdialog'] = 'Диалог за импорт на писма';
+$labels['arialabelmessagenav'] = 'Навигация на писма';
+$labels['arialabelmessagebody'] = 'Текст на писмо';
+$labels['arialabelmessageactions'] = 'Действия за писмо';
+$labels['arialabelcontactquicksearch'] = 'Форма за търсене на контакти';
+$labels['arialabelcontactsearchbox'] = 'Поле за търсене на контакт';
+$labels['arialabelmessageheaders'] = 'Заглавни блокове на писмо';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/bg_BG/messages.inc b/program/localization/bg_BG/messages.inc
index df9620b30..9d0726901 100644
--- a/program/localization/bg_BG/messages.inc
+++ b/program/localization/bg_BG/messages.inc
@@ -22,7 +22,9 @@ $messages['sessionerror'] = 'Невалидна или изтекла сесия
$messages['storageerror'] = 'Неуспешно свързване към сървър с данни.';
$messages['servererror'] = 'Сървърна грешка!';
$messages['servererrormsg'] = 'Сървърна грешка: $msg';
+$messages['connerror'] = 'Неуспешно свързване (Сървърът не е намерен)';
$messages['dberror'] = 'Грешка в база данни!';
+$messages['windowopenerror'] = 'Изскачащият прозорец беше блокиран!';
$messages['requesttimedout'] = 'Изтекло време за изпълнение на заявката';
$messages['errorreadonly'] = 'Невъзможно изпълнение на операцията. Папката е с права само за четене.';
$messages['errornoperm'] = 'Невъзможно изпълнение на операцията. Отказани права за достъп.';
@@ -92,6 +94,7 @@ $messages['contactsearchsuccessful'] = '$nr контакта намерени.';
$messages['searchnomatch'] = 'Няма съвпадения от търсенето.';
$messages['searching'] = 'Търсене...';
$messages['checking'] = 'Проверка...';
+$messages['stillsearching'] = 'Търсенето продължава...';
$messages['nospellerrors'] = 'Не са открити правописни грешки.';
$messages['folderdeleted'] = 'Папката е изтрита успешно.';
$messages['foldersubscribed'] = 'Абонирането за папката е успешно.';
@@ -135,7 +138,7 @@ $messages['importmessagesuccess'] = 'Успешно импортирани $nr
$messages['importmessageerror'] = 'Неуспешен импорт! Каченият файл не е валиден файл на писма или пощенска кутия';
$messages['opnotpermitted'] = 'Непозволена операция!';
$messages['nofromaddress'] = 'Липсва e-mail адрес за избраната самоличност.';
-$messages['editorwarning'] = 'Превключването на редактора в текстов режим ще доведе до загуба на форматирането на текста. Сигурни ли сте, че желаете да продължите?';
+$messages['editorwarning'] = 'Превключване на типа на редактора може да доведе до загуба на форматиране на текста. Желаете ли да продължите?';
$messages['httpreceivedencrypterror'] = 'Фатална конфигурационна грешка. Моля свържете се с Вашия администратор. <b>Писмото не може да бъде изпратено.</b>';
$messages['smtpconnerror'] = 'SMTP грешка ($code): Няма връзка със сървъра.';
$messages['smtpautherror'] = 'SMTP грешка ($code): Грешни потребител/парола.';
diff --git a/program/localization/bn_BD/labels.inc b/program/localization/bn_BD/labels.inc
index c0b7ad3a7..380785caf 100644
--- a/program/localization/bn_BD/labels.inc
+++ b/program/localization/bn_BD/labels.inc
@@ -159,13 +159,11 @@ $labels['name'] = 'নাম';
$labels['firstname'] = 'নামের প্রথমাংশ';
$labels['surname'] = 'নামের শেষাংশ';
$labels['email'] = 'ই-মেইল/চিঠি';
-$labels['addcontact'] = 'নতুন ঠিকানা ঢুকান';
$labels['editcontact'] = 'একটা ঠিকানা বদলান';
$labels['edit'] = 'বদলান';
$labels['cancel'] = 'বাতিল';
$labels['save'] = 'জমা দিন';
$labels['delete'] = 'ফেলে দিন';
-$labels['newcontact'] = 'একটা নতুন ঠিকানার কার্ড বানান';
$labels['deletecontact'] = 'বেছে নেওয়া ঠিকানা গুলো ফেলে দিন';
$labels['composeto'] = 'চিঠি পাঠাবেন কার কাছে?';
$labels['contactsfromto'] = '$count ঠিকানার মধ্যে $from থেকে $to টা';
@@ -188,10 +186,6 @@ $labels['preferences'] = 'পছন্দ';
$labels['userpreferences'] = 'গ্রাহক পছন্দ';
$labels['editpreferences'] = 'গ্রাহক পছন্দ বদলান';
$labels['identities'] = 'পরিচিতি';
-$labels['manageidentities'] = 'এই অ্যাকউন্টের "পরচিতি" বদলান';
-$labels['newidentity'] = 'নতুন পরিচিতি';
-$labels['newitem'] = 'নতুন জিনিষ';
-$labels['edititem'] = 'জিনিষ বদলান';
$labels['preferhtml'] = 'HTML এ দেখি';
$labels['htmlmessage'] = 'HTML মেইল/চিঠি';
$labels['prettydate'] = 'তারিখ ভালো করে দেখা যাবে';
@@ -231,17 +225,18 @@ $labels['mimeparamfolding'] = 'জুড়ে দেওয়া জিনিষে
$labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (other)';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'জটিল বিষয়';
$labels['focusonnewmessage'] = 'নতুন মেইল এলেই তা হাইলাইট হয়ে যাবে';
$labels['checkallfolders'] = 'সবগুলো মেইলবক্সে নতুন চিঠি খোজা হবে';
-$labels['folder'] = 'ফোল্ডার/মেইলবক্স';
-$labels['folders'] = 'ফোল্ডার/মেইলবক্স';
-$labels['foldername'] = 'ফোল্ডার/মেইলবক্স এর নাম';
-$labels['subscribed'] = 'গ্রহনকারি';
+$labels['folder'] = 'ফোল্ডার/মেইলবক্স';
+$labels['folders'] = 'ফোল্ডার/মেইলবক্স';
+$labels['foldername'] = 'ফোল্ডার/মেইলবক্স এর নাম';
+$labels['subscribed'] = 'গ্রহনকারি';
$labels['messagecount'] = 'মেইল/চিঠি';
-$labels['create'] = 'প্রস্তুত করুন';
-$labels['createfolder'] = 'নতুন ফোল্ডার / মেইলবক্স প্রস্তুত করুন';
-$labels['managefolders'] = 'ফোল্ডার/মেইলবক্স গুলো কে গুছান';
+$labels['create'] = 'প্রস্তুত করুন';
+$labels['createfolder'] = 'নতুন ফোল্ডার / মেইলবক্স প্রস্তুত করুন';
+$labels['managefolders'] = 'ফোল্ডার/মেইলবক্স গুলো কে গুছান';
$labels['specialfolders'] = 'বিশেষ ফোল্ডার/মেইলবক্স';
$labels['sortby'] = 'সাজান';
$labels['sortasc'] = 'কম থেকে বেশি হিসাবে সাজান';
@@ -250,4 +245,7 @@ $labels['B'] = 'বাইট';
$labels['KB'] = 'কিলোবাইট';
$labels['MB'] = 'মেগাবাইট';
$labels['GB'] = 'গিগাবাইট';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/bn_BD/messages.inc b/program/localization/bn_BD/messages.inc
index d8fd08b4f..abf8317a5 100644
--- a/program/localization/bn_BD/messages.inc
+++ b/program/localization/bn_BD/messages.inc
@@ -80,5 +80,4 @@ $messages['importwait'] = 'আমদানি করা হচ্ছে। এ
$messages['importconfirm'] = '<b>ঠিকমতো $inserted ঠিকানা আমদানি করা গেছে, $skipped ঠিকানা আগের থেকেই ছিলো বলে তাদের টা যা ছিলো তাই রাখা হয়েছে</b>:<p><em>$names</em></p>';
$messages['opnotpermitted'] = 'এই কাজটা করার অনুমতি নাই আপনার';
$messages['nofromaddress'] = 'বেছে নেওয়া যে পরিচিতিটা, তাতে ই-মেইল নেই';
-$messages['editorwarning'] = 'যদি আপনি শুধু লেখার স্টাইলে যান তাহলে বর্তমানের কোনো বিন্যাস হারিয়ে যাবে';
?>
diff --git a/program/localization/br/labels.inc b/program/localization/br/labels.inc
index c239fe718..bd9416092 100644
--- a/program/localization/br/labels.inc
+++ b/program/localization/br/labels.inc
@@ -52,6 +52,7 @@ $labels['copy'] = 'Eilañ';
$labels['move'] = 'Dilec\'hiañ';
$labels['moveto'] = 'Dilec\'hiañ da...';
$labels['download'] = 'Pellgargañ';
+$labels['open'] = 'Digeriñ';
$labels['showattachment'] = 'Diskouez';
$labels['showanyway'] = 'Diskouez anezhañ memestra';
$labels['filename'] = 'Anv ar restr';
@@ -105,6 +106,7 @@ $labels['replytomessage'] = 'Respont d\'ar kaser';
$labels['replytoallmessage'] = 'Respont d\'an holl';
$labels['replyall'] = 'Respont d\'an holl';
$labels['replylist'] = 'Respont d\'ar roll';
+$labels['forward'] = 'Treuzkas';
$labels['forwardattachment'] = 'Treuskas evel pezh stag';
$labels['forwardmessage'] = 'Treuzkas ar c\'hemennad';
$labels['deletemessage'] = 'Dilec\'hiañ ar c\'hemennad er pod-lastez';
@@ -129,6 +131,11 @@ $labels['all'] = 'An holl';
$labels['none'] = 'Ebet';
$labels['currpage'] = 'Pajenn';
$labels['unread'] = 'Na lennet';
+$labels['deleted'] = 'Dilammet';
+$labels['undeleted'] = 'N\'eo ket bet dilammet';
+$labels['filter'] = 'Sil';
+$labels['do_expand'] = 'an holl steudadoù';
+$labels['fromto'] = 'Eus/ Da';
$labels['nonesort'] = 'Ebet';
$labels['compact'] = 'Stummaat';
$labels['empty'] = 'Skarzhañ';
@@ -137,6 +144,9 @@ $labels['unknown'] = 'Dianav';
$labels['unlimited'] = 'didermen';
$labels['quicksearch'] = 'Klask prim';
$labels['resetsearch'] = 'Aderaouekaat ar glask';
+$labels['type'] = 'Doare';
+$labels['namex'] = 'Anv';
+$labels['send'] = 'Kas';
$labels['sendmessage'] = 'Kas ar c\'hemennad diouzhtu';
$labels['savemessage'] = 'Gwarediñ ar brouilhed-se';
$labels['addattachment'] = 'Stagañ ur restr';
@@ -146,9 +156,12 @@ $labels['returnreceipt'] = 'Testeni degemer';
$labels['checkspelling'] = 'Gwiriañ ar reizhskrivadur';
$labels['resumeediting'] = 'Distreiñ en aozer';
$labels['revertto'] = 'Distreiñ en/r';
+$labels['editresponse'] = 'Kemmañ ar respont';
+$labels['responsename'] = 'Anv';
$labels['attachments'] = 'Restroù staget';
$labels['upload'] = 'Stagañ';
$labels['close'] = 'Serriñ';
+$labels['messageoptions'] = 'Dibarzhioù ar gemennadenn';
$labels['low'] = 'Izel';
$labels['lowest'] = 'An izelañ';
$labels['normal'] = 'Reizh';
@@ -156,13 +169,35 @@ $labels['high'] = 'Uhel';
$labels['highest'] = 'An uhelañ';
$labels['nosubject'] = '(n\'eus ket sujed)';
$labels['showimages'] = 'Diskouez ar skeudennoù';
+$labels['andnmore'] = '$nr muioc\'h...';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'testenn kriz';
$labels['name'] = 'Anv da ziskouez';
$labels['firstname'] = 'Raganv';
$labels['surname'] = 'Anv';
$labels['email'] = 'Postel elektronek';
-$labels['addcontact'] = 'Ouzhpennañ an darempred diuzet en hor c\'harned chomlec\'hioù';
+$labels['phone'] = 'Pellgomz';
+$labels['address'] = 'Chomlec\'h';
+$labels['street'] = 'Straed';
+$labels['locality'] = 'Kêr';
+$labels['zipcode'] = 'Kod Post';
+$labels['region'] = 'Stad/Proviñs';
+$labels['country'] = 'Bro';
+$labels['website'] = 'Lec\'hienn';
+$labels['male'] = 'paotr';
+$labels['female'] = 'plac\'h';
+$labels['search'] = 'Klask';
+$labels['advanced'] = 'Araokaet';
+$labels['other'] = 'All';
+$labels['typehome'] = 'Degemer';
+$labels['typework'] = 'Labour';
+$labels['typeother'] = 'All';
+$labels['typemobile'] = 'Hezoug';
+$labels['typemain'] = 'Pennañ';
+$labels['typehomepage'] = 'Pajenn degemer';
+$labels['typeblog'] = 'Blog';
+$labels['typeprofile'] = 'Profil';
+$labels['addfield'] = 'Ouzhpennañ ur vaezienn...';
$labels['editcontact'] = 'Cheñch an darempred';
$labels['contacts'] = 'darempred';
$labels['edit'] = 'Cheñch';
@@ -170,17 +205,20 @@ $labels['cancel'] = 'Nullañ';
$labels['save'] = 'Gwarediñ';
$labels['delete'] = 'Dilemel';
$labels['rename'] = 'chench anv';
+$labels['addphoto'] = 'Ouzhpennañ';
$labels['replacephoto'] = 'chench';
-$labels['newcontact'] = 'Krouiñ un darempred nevez';
$labels['deletecontact'] = 'Dilemel an darempredoù diuzet';
$labels['composeto'] = 'Skrivañ ur c\'hemennad ouzh';
$labels['contactsfromto'] = 'Darempredoù eus $from ouzh $to war $count';
$labels['print'] = 'Moulañ';
$labels['export'] = 'Ezporzhiañ';
+$labels['grouprename'] = 'Adeñvel ar strollad';
+$labels['groupdelete'] = 'Dilemel ar strollad';
$labels['previouspage'] = 'Diskouez pajenn a-raok';
$labels['firstpage'] = 'Gwelout ar bajenn gentañ';
$labels['nextpage'] = 'Diskouez pajenn da heul';
$labels['lastpage'] = 'Gwelout ar bajenn diwezhañ';
+$labels['group'] = 'Strollad';
$labels['groups'] = 'Strolladoù';
$labels['personaladrbook'] = 'Chomlec\'h personel';
$labels['searchsave'] = 'enrollane an enklask';
@@ -195,14 +233,11 @@ $labels['preferences'] = 'Dibarzhioù';
$labels['userpreferences'] = 'Dibarzhioù implijer';
$labels['editpreferences'] = 'Cheñch dibarzhioù implijer';
$labels['identities'] = 'Identelezhioù';
-$labels['manageidentities'] = 'Merañ an identelezhioù evit ar c\'hont-se';
-$labels['newidentity'] = 'Identelezh nevez';
-$labels['newitem'] = 'Elfenn nevez';
-$labels['edititem'] = 'Cheñch an elfenn';
$labels['preferhtml'] = 'Diskouez en HTML';
$labels['htmlmessage'] = 'Kemennad en HTML';
$labels['prettydate'] = 'Diskouez berr deizioù';
$labels['setdefault'] = 'Arventennoù dre ziouer';
+$labels['autodetect'] = 'Emgefre';
$labels['language'] = 'Yezh';
$labels['timezone'] = 'Gwerzhid-eur';
$labels['pagesize'] = 'Niver a linenn dre bajenn';
@@ -211,17 +246,37 @@ $labels['dstactive'] = 'Eur an hañv';
$labels['htmleditor'] = 'Sevel ur c\'hemennad er furmad HTML';
$labels['htmlsignature'] = 'Sinadur HTML';
$labels['previewpane'] = 'Diskouez panel alberz';
+$labels['skin'] = 'Neuze an etrefas';
+$labels['askuser'] = 'goulenn ganin';
+$labels['autosend'] = 'Kas un testeni degemer';
+$labels['always'] = 'atav';
$labels['autosavedraft'] = 'Gwarediñ emgefre brouilhedoù';
$labels['everynminutes'] = 'Bep $n munutoù';
$labels['never'] = 'ebet';
-$labels['folder'] = 'Renkell';
-$labels['folders'] = 'Teuliadoù';
-$labels['foldername'] = 'Anv ar renkell';
-$labels['subscribed'] = 'Koumananer';
-$labels['create'] = 'Krouiñ';
-$labels['createfolder'] = 'Krouiñ ur renkell nevez';
-$labels['managefolders'] = 'Aozañ ar renkelloù';
+$labels['savelocalstorage'] = "";
+$labels['advancedoptions'] = 'Dibarzhioù araokaet';
+$labels['newmessage'] = 'Kemennadenn nevez';
+$labels['signatureoptions'] = 'Dibarzhioù sinadur';
+$labels['insertsignature'] = 'Ouzhpennañ ar sinadur';
+$labels['replyalldefault'] = 'respont d\'an holl';
+$labels['folder'] = 'Renkell';
+$labels['folders'] = 'Teuliadoù';
+$labels['foldername'] = 'Anv ar renkell';
+$labels['subscribed'] = 'Koumananer';
+$labels['messagecount'] = 'Kemennadennoù';
+$labels['create'] = 'Krouiñ';
+$labels['createfolder'] = 'Krouiñ ur renkell nevez';
+$labels['managefolders'] = 'Aozañ ar renkelloù';
+$labels['properties'] = 'Perzhioù';
+$labels['info'] = 'Titouroù';
$labels['sortby'] = 'Rummañ dre';
$labels['sortasc'] = 'Rumm diagentad';
$labels['sortdesc'] = 'Rumm diskennad';
+$labels['license'] = 'Aotre-implijout';
+$labels['celtic'] = 'Keltieg';
+$labels['japanese'] = 'Japaneg';
+$labels['chinese'] = 'Sinaeg';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/br/messages.inc b/program/localization/br/messages.inc
index bd266d0d4..14e6c8d0a 100644
--- a/program/localization/br/messages.inc
+++ b/program/localization/br/messages.inc
@@ -16,16 +16,19 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
$messages['errortitle'] = 'Degouezhet ez eus bet ur fazi !';
-$messages['loginfailed'] = 'C\'hwitadenn war kennaskañ';
-$messages['cookiesdisabled'] = 'N\'eus ket c\'hoant toupinoù Hor merder';
+$messages['loginfailed'] = 'Kennaskañ c\'hwitet';
+$messages['cookiesdisabled'] = 'Nac\'h a ra ho merdeer an toupinoù';
$messages['sessionerror'] = 'Didalvoudek pe echuet eo hoc\'h estez.';
$messages['storageerror'] = 'C\'hwitadenn war kennaskañ ouzh an dafariad mirout';
$messages['servererror'] = 'Fazi dafariad !';
$messages['servererrormsg'] = 'Fazi dafariad : $msg';
$messages['dberror'] = 'Fazi stlennvon !';
-$messages['nomessagesfound'] = 'Kemennadoù ebet er voest lizhiri';
+$messages['nomessagesfound'] = 'Kemennad ebet er voest lizhiri';
$messages['loggedout'] = 'Digevreet hoc\'h eus mat. Kenavo !';
+$messages['refreshing'] = 'O freskaat...';
$messages['loading'] = 'O kargañ...';
+$messages['uploading'] = 'O kargañ ar restr...';
+$messages['uploadingmany'] = 'O kargañ ar restroù...';
$messages['loadingdata'] = 'O kargañ roadennoù...';
$messages['checkingmail'] = 'O Gwiriañ kemennadoù nevez...';
$messages['sendingmessage'] = 'O kas ar c\'hemennad...';
@@ -69,4 +72,6 @@ $messages['fileuploaderror'] = 'Fazi o treuzkas ar restr';
$messages['filesizeerror'] = 'Re vras eo ar restr treuzkaset $size';
$messages['sourceisreadonly'] = 'Lenn hepken eo an tarzh chomlec\'h se';
$messages['errorsavingcontact'] = 'Ne c\'haller ket gwarediñ chomlec\'h darempred';
+$messages['movingcontact'] = 'O fiñval an darempred(où)';
+$messages['contactdelerror'] = 'N\'eus ket bet gellet dilemel an darempred(où)';
?>
diff --git a/program/localization/bs_BA/labels.inc b/program/localization/bs_BA/labels.inc
index c79cf4ecc..795d7a79c 100644
--- a/program/localization/bs_BA/labels.inc
+++ b/program/localization/bs_BA/labels.inc
@@ -131,16 +131,24 @@ $labels['moreactions'] = 'Više akcija...';
$labels['more'] = 'Više';
$labels['back'] = 'Nazad';
$labels['options'] = 'Opcije';
+$labels['first'] = 'Prva';
+$labels['last'] = 'Zadnja';
+$labels['previous'] = 'Prethodno';
+$labels['next'] = 'Sljedeće';
$labels['select'] = 'Odaberi';
$labels['all'] = 'Sve';
$labels['none'] = 'Ništa';
$labels['currpage'] = 'Trenutna stranica';
+$labels['isread'] = 'Pročitano';
$labels['unread'] = 'Nepročitano';
$labels['flagged'] = 'Važno';
+$labels['unflagged'] = 'Nije označeno';
$labels['unanswered'] = 'Neodgovoreno';
$labels['withattachment'] = 'Sa prilogom';
$labels['deleted'] = 'Obrisano';
$labels['undeleted'] = 'Nije obrisano';
+$labels['replied'] = 'Odgovoreno';
+$labels['forwarded'] = 'Proslijeđeno';
$labels['invert'] = 'Izokreni';
$labels['filter'] = 'Filter';
$labels['list'] = 'Lista';
@@ -171,6 +179,11 @@ $labels['importmessages'] = 'Uvezi poruke';
$labels['quota'] = 'Zauzeće diska';
$labels['unknown'] = 'nepoznato';
$labels['unlimited'] = 'neograničeno';
+$labels['quotatype'] = 'Vrsta kvote';
+$labels['quotatotal'] = 'Limit';
+$labels['quotaused'] = 'Iskorišteno';
+$labels['quotastorage'] = 'Prostor na disku';
+$labels['quotamessage'] = 'Broj poruka';
$labels['quicksearch'] = 'Brza pretraga';
$labels['resetsearch'] = 'Resetuj pretragu';
$labels['searchmod'] = 'Modifikacija pretrage';
@@ -178,6 +191,10 @@ $labels['msgtext'] = 'Cijela poruka';
$labels['body'] = 'Tijelo';
$labels['type'] = 'Vrsta';
$labels['namex'] = 'Ime';
+$labels['searchscope'] = 'Opseg';
+$labels['currentfolder'] = 'Trenutni folder';
+$labels['subfolders'] = 'Ovo i podfolderi';
+$labels['allfolders'] = 'Svi folder';
$labels['openinextwin'] = 'Otvori u novom prozoru';
$labels['emlsave'] = 'Preuzmi (.eml)';
$labels['changeformattext'] = 'Prikaži kao obični tekst';
@@ -193,6 +210,10 @@ $labels['returnreceipt'] = 'Potvrda o prispijeću poruke';
$labels['dsn'] = 'Obavještenje o statusu dostave';
$labels['mailreplyintro'] = '$date, $sender je napisao/la:';
$labels['originalmessage'] = 'Originalna poruka';
+$labels['selectimage'] = 'Odaberi sliku';
+$labels['addimage'] = 'Dodaj sliku';
+$labels['selectmedia'] = 'Odaberi film';
+$labels['addmedia'] = 'Dodaj film';
$labels['editidents'] = 'Uredi identitete';
$labels['spellcheck'] = 'Pravopis';
$labels['checkspelling'] = 'Provjera pravopisa';
@@ -203,9 +224,10 @@ $labels['restoremessage'] = 'Vratiti poruku?';
$labels['responses'] = 'Odgovori';
$labels['insertresponse'] = 'Umetni odgovor';
$labels['manageresponses'] = 'Upravljaj odgovorima';
-$labels['savenewresponse'] = 'Snimi novi odgovor';
-$labels['editresponses'] = 'Uredi odgovore';
+$labels['newresponse'] = 'Kreiraj novi odgovor';
+$labels['addresponse'] = 'Dodaj odgovor';
$labels['editresponse'] = 'Uredi odgovor';
+$labels['editresponses'] = 'Uredi odgovore';
$labels['responsename'] = 'Ime';
$labels['responsetext'] = 'Tekst odgovora';
$labels['attach'] = 'Priloži';
@@ -214,6 +236,7 @@ $labels['upload'] = 'Dodaj';
$labels['uploadprogress'] = '$percent ($current od $total)';
$labels['close'] = 'Zatvori';
$labels['messageoptions'] = 'Opcije poruke...';
+$labels['togglecomposeoptions'] = '(De)aktivacija opcija pisanja';
$labels['low'] = 'Nizak';
$labels['lowest'] = 'Najniži';
$labels['normal'] = 'Normalan';
@@ -270,6 +293,7 @@ $labels['assistant'] = 'Pomoćnik';
$labels['spouse'] = 'Supružnik';
$labels['allfields'] = 'Sva polja';
$labels['search'] = 'Pretraga';
+$labels['searchfor'] = 'Traži "$q"';
$labels['advsearch'] = 'Napredna pretraga';
$labels['advanced'] = 'Napredno';
$labels['other'] = 'Ostalo';
@@ -288,11 +312,13 @@ $labels['typehomepage'] = 'Početna stranica';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
$labels['addfield'] = 'Dodaj polje...';
-$labels['addcontact'] = 'Dodaj novi kontakt';
+$labels['addcontact'] = 'Dodaj kontakt';
$labels['editcontact'] = 'Uredi kontakt';
$labels['contacts'] = 'Kontakti';
$labels['contactproperties'] = 'Svojstva kontakta';
+$labels['contactnameandorg'] = 'Ime i organizacija';
$labels['personalinfo'] = 'Lični podaci';
+$labels['contactphoto'] = 'Kontakt fotografija';
$labels['edit'] = 'Uredi';
$labels['cancel'] = 'Otkaži';
$labels['save'] = 'Sačuvaj';
@@ -301,7 +327,7 @@ $labels['rename'] = 'Preimenuj';
$labels['addphoto'] = 'Dodaj';
$labels['replacephoto'] = 'Zamijeni';
$labels['uploadphoto'] = 'Dodaj fotografiju';
-$labels['newcontact'] = 'Dodaj novi kontakt';
+$labels['newcontact'] = 'Kreiraj novi kontakt';
$labels['deletecontact'] = 'Obriši odabrane kontakte';
$labels['composeto'] = 'Napiši email za';
$labels['contactsfromto'] = 'Kontakti od $from do $to od ukupno $count';
@@ -310,10 +336,11 @@ $labels['export'] = 'Izvoz';
$labels['exportall'] = 'Izvezi sve';
$labels['exportsel'] = 'Izvezi označeno';
$labels['exportvcards'] = 'Izvezi kontakte u vCard formatu';
-$labels['newcontactgroup'] = 'Kreiraj novu grupu kontakata';
+$labels['newgroup'] = 'Kreiraj novu grupu';
$labels['grouprename'] = 'Preimenuj grupu';
$labels['groupdelete'] = 'Obriši grupu';
$labels['groupremoveselected'] = 'Ukloni odabrane kontakte iz grupe';
+$labels['uponelevel'] = 'Nazad jedan nivo';
$labels['previouspage'] = 'Prikaži prethodnu stranicu';
$labels['firstpage'] = 'Prikaži prvu stranicu';
$labels['nextpage'] = 'Prikaži sljedeću stranicu';
@@ -340,10 +367,10 @@ $labels['preferences'] = 'Podešavanja';
$labels['userpreferences'] = 'Korisničke opcije';
$labels['editpreferences'] = 'Uredi korisničke opcije';
$labels['identities'] = 'Identiteti';
-$labels['manageidentities'] = 'Podesi identitete za ovaj račun';
-$labels['newidentity'] = 'Dodaj identitet';
-$labels['newitem'] = 'Nova stavka';
-$labels['edititem'] = 'Uredi stavku';
+$labels['manageidentities'] = 'Upravljanje identitetima';
+$labels['newidentity'] = 'Kreiraj novi identitet';
+$labels['addidentity'] = 'Dodaj identitet';
+$labels['editidentity'] = 'Uredi identitet';
$labels['preferhtml'] = 'Prikaži HTML';
$labels['defaultcharset'] = 'Glavni skup znakova';
$labels['htmlmessage'] = 'HTML poruke';
@@ -400,7 +427,9 @@ $labels['2231folding'] = 'Puni RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Puni RFC 2047 (ostalo)';
$labels['force7bit'] = 'Koristi MIME kodiranje za 8-bitne znakove';
+$labels['savelocalstorage'] = "Sačuvaj u lokalno skladište browsera (privremeno)";
$labels['advancedoptions'] = 'Napredne opcije';
+$labels['toggleadvancedoptions'] = '(De)aktivacija naprednih opcija';
$labels['focusonnewmessage'] = 'Fokusiraj prozor preglednika na novu poruku';
$labels['checkallfolders'] = 'Provjeri ima li novih poruka u svim folderima';
$labels['displaynext'] = 'Aakon brisanja/premještanja poruke, prikaži slijedeću poruku';
@@ -442,14 +471,14 @@ $labels['asattachment'] = 'kao prilog';
$labels['replyallmode'] = 'Zadana radnja za [Odgovori svima] dugme';
$labels['replyalldefault'] = 'odgovori svima';
$labels['replyalllist'] = 'odgovori samo listi mailova (ukoliko je pronađena)';
-$labels['folder'] = 'Folder';
-$labels['folders'] = 'Folderi';
-$labels['foldername'] = 'Naziv foldera';
-$labels['subscribed'] = 'Pretplaćen';
+$labels['folder'] = 'Folder';
+$labels['folders'] = 'Folderi';
+$labels['foldername'] = 'Naziv foldera';
+$labels['subscribed'] = 'Pretplaćen';
$labels['messagecount'] = 'Poruke';
-$labels['create'] = 'Kreiraj';
-$labels['createfolder'] = 'Kreiraj novi folder';
-$labels['managefolders'] = 'Upravljanje folderima';
+$labels['create'] = 'Kreiraj';
+$labels['createfolder'] = 'Kreiraj novi folder';
+$labels['managefolders'] = 'Upravljanje folderima';
$labels['specialfolders'] = 'Specijalni folder';
$labels['properties'] = 'Svojstva';
$labels['folderproperties'] = 'Svojstva foldera';
@@ -459,9 +488,13 @@ $labels['info'] = 'Informacije';
$labels['getfoldersize'] = 'Kliknite da biste dobili informaciju o veličini foldera';
$labels['changesubscription'] = 'Kliknite da promijenite pretplatu';
$labels['foldertype'] = 'Vrsta foldera';
-$labels['personalfolder'] = 'Privatni folder';
-$labels['otherfolder'] = 'Folder drugog korisnika';
-$labels['sharedfolder'] = 'Javni folder';
+$labels['personalfolder'] = 'Privatni folder';
+$labels['otherfolder'] = 'Folder drugog korisnika';
+$labels['sharedfolder'] = 'Javni folder';
+$labels['findfolders'] = 'Pronađi foldere';
+$labels['namespace.personal'] = 'Lično';
+$labels['namespace.other'] = 'Ostali korisnici';
+$labels['namespace.shared'] = 'Dijeljeno';
$labels['sortby'] = 'Sortiraj po';
$labels['sortasc'] = 'Sortiraj uzlazno';
$labels['sortdesc'] = 'Sortiraj silazno';
@@ -494,4 +527,53 @@ $labels['vietnamese'] = 'vijetnamski';
$labels['japanese'] = 'japanski';
$labels['korean'] = 'korejski';
$labels['chinese'] = 'kineski';
+$labels['arialabeltopnav'] = 'Kontrola prozora';
+$labels['arialabeltasknav'] = 'Zadaci aplikacije';
+$labels['arialabeltoolbar'] = 'Alatna traka aplikacije';
+$labels['arialabelactivetask'] = 'Aktivni zadatak';
+$labels['arialabelmessagessearchfilter'] = 'Filter listinga emaila';
+$labels['arialabelmailsearchform'] = 'Obrazac za pretragu email poruka';
+$labels['arialabelcontactsearchform'] = 'Obrazac za pretragu kontakata';
+$labels['arialabelmailquicksearchbox'] = 'Unos za email pretragu';
+$labels['arialabelquicksearchbox'] = 'Unos za pretragu';
+$labels['arialabelfoldersearchfilter'] = 'Fitr listi foldera';
+$labels['arialabelfoldersearchform'] = 'Obrazac za pretragu foldera';
+$labels['arialabelfolderlist'] = 'Odabir email foldera';
+$labels['arialabelmessagelist'] = 'Listing email poruka';
+$labels['arialabelmailpreviewframe'] = 'Pregled poruke';
+$labels['arialabelmailboxmenu'] = 'Meni sa akcijama za foldere';
+$labels['arialabellistselectmenu'] = 'Meni za odabir listinga';
+$labels['arialabelthreadselectmenu'] = 'Meni za listing tema';
+$labels['arialabelmessagelistoptions'] = 'Prikaz listi poruka i opcije sortiranja';
+$labels['arialabelmailimportdialog'] = 'Dijalog za uvoz poruke';
+$labels['arialabelmessagenav'] = 'Navigacija za poruku';
+$labels['arialabelmessagebody'] = 'Tijelo poruke';
+$labels['arialabelmessageactions'] = 'Akcije poruke';
+$labels['arialabelcontactquicksearch'] = 'Obrazac za pretragu kontakata';
+$labels['arialabelcontactsearchbox'] = 'Unos za pretragu kontakata';
+$labels['arialabelmessageheaders'] = 'Zaglavlja poruke';
+$labels['arialabelforwardingoptions'] = 'Opcije prosljeđivanja';
+$labels['arialabelreplyalloptions'] = 'Opcije odgovora svima';
+$labels['arialabelmoremessageactions'] = 'Više akcija za poruke';
+$labels['arialabelmarkmessagesas'] = 'Označi odabrane poruke kao...';
+$labels['arialabelcomposeoptions'] = 'Opcije pisanja';
+$labels['arialabelresponsesmenu'] = 'Meni za odbačene odgovore';
+$labels['arialabelattachmentuploadform'] = 'Obrazac za dodavanje priloga';
+$labels['arialabelattachmentpreview'] = 'Pregled priloga';
+$labels['ariasummarycomposecontacts'] = 'Lista kontakata i grupi za primaoce';
+$labels['arialabelcontactexportoptions'] = 'Opcije izvoza kontakata';
+$labels['arialabelabookgroupoptions'] = 'Opcije adresara/grupe';
+$labels['arialabelpreferencesform'] = 'Obrazac podešavanja';
+$labels['arialabelidentityeditfrom'] = 'Obrazac za uređivanje identiteta';
+$labels['arialabelresonseeditfrom'] = 'Obrazac za uređivanje odgovora';
+$labels['arialabelsearchterms'] = 'Pojam za pretragu';
+$labels['helplistnavigation'] = 'Lista navigacije pomoću tastature';
+$labels['helplistkeyboardnavigation'] = "Strelice gore/dole: Pomjeri fokusirani red/selekciju.
+Razmak: Odaberi fokusirani red.
+Shift + gore/dole: Odaberi dodatni red iznad/ispod.
+Ctrl + razmak: Dodaj fokusirani red u selekciju/ukloni iz selekcije.";
+$labels['helplistkeyboardnavmessages'] = "Strelice desno/lijevo: proširi/zatvori temu temu emaila (samo u modu za teme).
+Enter: Otvori odabranu/fokusiranu poruku.
+Delete: Premjesti odabranu poruku u Smeće.";
+$labels['helplistkeyboardnavcontacts'] = "Enter: Otvora odabrani/fokusirani kontakt.";
?>
diff --git a/program/localization/bs_BA/messages.inc b/program/localization/bs_BA/messages.inc
index 42f2517b2..0e75669b1 100644
--- a/program/localization/bs_BA/messages.inc
+++ b/program/localization/bs_BA/messages.inc
@@ -22,7 +22,9 @@ $messages['sessionerror'] = 'Vaša sesija je neispravna ili je istekla.';
$messages['storageerror'] = 'Neuspješna konekcija na IMAP server';
$messages['servererror'] = 'Serverska greška!';
$messages['servererrormsg'] = 'Serverska greška: $msg';
+$messages['connerror'] = 'Greška u povezivanju (Nije moguće kontaktirati server)!';
$messages['dberror'] = 'Greška u bazi podataka!';
+$messages['windowopenerror'] = 'Popup prozor je blokiran!';
$messages['requesttimedout'] = 'Zahtjev je istekao';
$messages['errorreadonly'] = 'Nije moguće izvršiti operaciju. Folder je samo za čitanje.';
$messages['errornoperm'] = 'Nije moguće izvršiti operaciju. Pristup je odbijen.';
@@ -92,6 +94,7 @@ $messages['contactsearchsuccessful'] = '$nr kontakata je pronađeno.';
$messages['searchnomatch'] = 'Traženi pojam nije pronađen ni u jednoj poruci.';
$messages['searching'] = 'Pretražujem...';
$messages['checking'] = 'Provjeravam...';
+$messages['stillsearching'] = 'I dalje pretražujem...';
$messages['nospellerrors'] = 'Pravopisne greške nisu pronađene.';
$messages['folderdeleted'] = 'Folder je uspješno obrisan.';
$messages['foldersubscribed'] = 'Uspješno ste pretplaćeni na folder.';
@@ -135,7 +138,7 @@ $messages['importmessagesuccess'] = 'Uspješno uvezeno $nr poruka';
$messages['importmessageerror'] = 'Uvoz nije uspio! Dodana datoteke nije ispravna datoteka sa porukama';
$messages['opnotpermitted'] = 'Operacija nije dozvoljena!';
$messages['nofromaddress'] = 'U odabrani identitet nije upisana email adresa.';
-$messages['editorwarning'] = 'Prebacivanje u obični tekstualni uređivač će prouzrokovati gubljenje formatiranja teksta. Želite li nastaviti?';
+$messages['editorwarning'] = 'Promjenom uređivača biste mogli izgubiti formatiranje teksta. Želite li nastaviti?';
$messages['httpreceivedencrypterror'] = 'Dogodila se fatalna konfiguracijska greška. Odmah kontaktirajte administratora. <b>Vaša poruka se ne poslati.</b>';
$messages['smtpconnerror'] = 'SMTP greška ($code): Veza sa serverom nije uspostavljena.';
$messages['smtpautherror'] = 'SMTP greška ($code): Autentifikacija nije uspjela.';
diff --git a/program/localization/ca_ES/labels.inc b/program/localization/ca_ES/labels.inc
index 15d879bc1..b493017a0 100644
--- a/program/localization/ca_ES/labels.inc
+++ b/program/localization/ca_ES/labels.inc
@@ -131,16 +131,24 @@ $labels['moreactions'] = 'Més accions...';
$labels['more'] = 'Més';
$labels['back'] = 'Torna';
$labels['options'] = 'Opcions';
+$labels['first'] = 'Primer';
+$labels['last'] = 'Darrer';
+$labels['previous'] = 'Anterior';
+$labels['next'] = 'Següent';
$labels['select'] = 'Selecciona';
$labels['all'] = 'Tots';
$labels['none'] = 'Cap';
$labels['currpage'] = 'Pàgina actual';
+$labels['isread'] = 'Llegeix';
$labels['unread'] = 'No llegit';
$labels['flagged'] = 'Marcat';
+$labels['unflagged'] = 'No marcat';
$labels['unanswered'] = 'No respost';
$labels['withattachment'] = 'Amb fitxer adjunt';
$labels['deleted'] = 'Suprimit';
$labels['undeleted'] = 'No s\'ha suprimit';
+$labels['replied'] = 'Respost';
+$labels['forwarded'] = 'Reenviat';
$labels['invert'] = 'Inverteix';
$labels['filter'] = 'Filtre';
$labels['list'] = 'Llista';
@@ -171,6 +179,11 @@ $labels['importmessages'] = 'Importa missatges';
$labels['quota'] = 'Ús del disc';
$labels['unknown'] = 'desconegut';
$labels['unlimited'] = 'il·limitat';
+$labels['quotatype'] = 'Tipus de quota';
+$labels['quotatotal'] = 'Límit';
+$labels['quotaused'] = 'Utilitzat';
+$labels['quotastorage'] = 'Espai de disc';
+$labels['quotamessage'] = 'Comptador de missatges';
$labels['quicksearch'] = 'Cerca ràpida';
$labels['resetsearch'] = 'Neteja cerca';
$labels['searchmod'] = 'Cerca modificadors';
@@ -178,6 +191,10 @@ $labels['msgtext'] = 'Missatge sencer';
$labels['body'] = 'Cos';
$labels['type'] = 'Tipus';
$labels['namex'] = 'Nom';
+$labels['searchscope'] = 'Abast';
+$labels['currentfolder'] = 'Carpeta actual';
+$labels['subfolders'] = 'Aquesta i les seves subcarpetes';
+$labels['allfolders'] = 'Totes les carpetes';
$labels['openinextwin'] = 'Obre a una nova finestra';
$labels['emlsave'] = 'Descarrega (.eml)';
$labels['changeformattext'] = 'Mostra en format de text net';
@@ -193,6 +210,10 @@ $labels['returnreceipt'] = 'Confirmació de recepció';
$labels['dsn'] = 'Notificació d\'estat de lliurament';
$labels['mailreplyintro'] = 'A $date, $sender escrigué:';
$labels['originalmessage'] = 'Missatge Original';
+$labels['selectimage'] = 'Selecciona una imatge';
+$labels['addimage'] = 'Afegeix una imatge';
+$labels['selectmedia'] = 'Selecciona pel·lícula';
+$labels['addmedia'] = 'Afegeix pel·lícula';
$labels['editidents'] = 'Edita identitats';
$labels['spellcheck'] = 'Ortografia';
$labels['checkspelling'] = 'Comprova l\'ortografia';
@@ -203,9 +224,10 @@ $labels['restoremessage'] = 'Recupera el missatge?';
$labels['responses'] = 'Respostes';
$labels['insertresponse'] = 'Introduïu una resposta';
$labels['manageresponses'] = 'Gestiona respostes';
-$labels['savenewresponse'] = 'Desa una nova resposta';
-$labels['editresponses'] = 'Edita respostes';
+$labels['newresponse'] = 'Crea una nova resposta';
+$labels['addresponse'] = 'Afegeix una resposta';
$labels['editresponse'] = 'Edita la resposta';
+$labels['editresponses'] = 'Edita respostes';
$labels['responsename'] = 'Nom';
$labels['responsetext'] = 'Text de resposta';
$labels['attach'] = 'Adjunta';
@@ -214,6 +236,7 @@ $labels['upload'] = 'Afegeix';
$labels['uploadprogress'] = '$percent ($current de $total)';
$labels['close'] = 'Tanca';
$labels['messageoptions'] = 'Opcions de missatge...';
+$labels['togglecomposeoptions'] = 'Commuta les opcions de composició';
$labels['low'] = 'Baixa';
$labels['lowest'] = 'La més baixa';
$labels['normal'] = 'Normal';
@@ -270,6 +293,7 @@ $labels['assistant'] = 'Assistent';
$labels['spouse'] = 'Cònjuge';
$labels['allfields'] = 'Tots els camps';
$labels['search'] = 'Cerca';
+$labels['searchfor'] = 'Cerca "$q"';
$labels['advsearch'] = 'Cerca Avançada';
$labels['advanced'] = 'Paràmetres avançats';
$labels['other'] = 'Un altre';
@@ -288,11 +312,13 @@ $labels['typehomepage'] = 'Pàgina web personal';
$labels['typeblog'] = 'Bloc';
$labels['typeprofile'] = 'Perfil';
$labels['addfield'] = 'Afegeix camp...';
-$labels['addcontact'] = 'Afegeix un nou contacte';
+$labels['addcontact'] = 'Afegeix un contacte';
$labels['editcontact'] = 'Edita el contacte';
$labels['contacts'] = 'Contactes';
$labels['contactproperties'] = 'Propietats del contacte';
+$labels['contactnameandorg'] = 'Nom i Organització';
$labels['personalinfo'] = 'Informació personal';
+$labels['contactphoto'] = 'Foto de contacte';
$labels['edit'] = 'Edita';
$labels['cancel'] = 'Cancel·la';
$labels['save'] = 'Desa';
@@ -310,10 +336,11 @@ $labels['export'] = 'Exporta';
$labels['exportall'] = 'Exporta\'ls tots';
$labels['exportsel'] = 'Exporta els seleccionats';
$labels['exportvcards'] = 'Exporta contactes en format vCard';
-$labels['newcontactgroup'] = 'Crea un nou grup de contactes';
+$labels['newgroup'] = 'Crea un grup nou';
$labels['grouprename'] = 'Reanomena el grup';
$labels['groupdelete'] = 'Suprimeix el grup';
$labels['groupremoveselected'] = 'Suprimeix els contactes seleccionats del grup';
+$labels['uponelevel'] = 'Un nivell amunt';
$labels['previouspage'] = 'Mostra la pàgina anterior';
$labels['firstpage'] = 'Mostra la primera pàgina';
$labels['nextpage'] = 'Mostra la pàgina següent';
@@ -340,10 +367,10 @@ $labels['preferences'] = 'Preferències';
$labels['userpreferences'] = 'Preferències de l\'usuari';
$labels['editpreferences'] = 'Edita les preferències de l\'usuari';
$labels['identities'] = 'Identitats';
-$labels['manageidentities'] = 'Gestiona les identitats per a aquest compte';
-$labels['newidentity'] = 'Nova identitat';
-$labels['newitem'] = 'Nou element';
-$labels['edititem'] = 'Edita l\'element';
+$labels['manageidentities'] = 'Gestiona les identitats';
+$labels['newidentity'] = 'Crea una nova identitat';
+$labels['addidentity'] = 'Afegeix una identitat';
+$labels['editidentity'] = 'Edita la identitat';
$labels['preferhtml'] = 'Mostra HTML';
$labels['defaultcharset'] = 'Joc de caràcters per defecte';
$labels['htmlmessage'] = 'Missatge HTML';
@@ -400,7 +427,9 @@ $labels['2231folding'] = 'Compleix RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Compleix RFC 2047 (un altre)';
$labels['force7bit'] = 'Fes servir la codificació MIME per a caràcters de 8-bits';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'Opcions avançades';
+$labels['toggleadvancedoptions'] = 'Commuta les opcions avançades';
$labels['focusonnewmessage'] = 'Activa la finestra del navegador quan hi hagi un nou missatge';
$labels['checkallfolders'] = 'Comprova totes les carpetes per missatges nous';
$labels['displaynext'] = 'Mostra el missatge següent després de suprimir-ne o moure\'n un';
@@ -442,14 +471,14 @@ $labels['asattachment'] = 'com un adjunt';
$labels['replyallmode'] = 'Acció per defecte del botó [Respon a tots]';
$labels['replyalldefault'] = 'respon a tots';
$labels['replyalllist'] = 'respon només a la llista de missatges (si n\'hi ha cap)';
-$labels['folder'] = 'Carpeta';
-$labels['folders'] = 'Carpetes';
-$labels['foldername'] = 'Nom de la carpeta';
-$labels['subscribed'] = 'Subscrit';
+$labels['folder'] = 'Carpeta';
+$labels['folders'] = 'Carpetes';
+$labels['foldername'] = 'Nom de la carpeta';
+$labels['subscribed'] = 'Subscrit';
$labels['messagecount'] = 'Missatges';
-$labels['create'] = 'Crea';
-$labels['createfolder'] = 'Crea una carpeta nova';
-$labels['managefolders'] = 'Gestiona carpetes';
+$labels['create'] = 'Crea';
+$labels['createfolder'] = 'Crea una carpeta nova';
+$labels['managefolders'] = 'Gestiona carpetes';
$labels['specialfolders'] = 'Carpetes especials';
$labels['properties'] = 'Propietats';
$labels['folderproperties'] = 'Propietats de la carpeta';
@@ -459,9 +488,9 @@ $labels['info'] = 'Informació';
$labels['getfoldersize'] = 'Feu clic per veure la mida de la carpeta';
$labels['changesubscription'] = 'Feu clic per canviar la subscripció';
$labels['foldertype'] = 'Tipus de Carpeta';
-$labels['personalfolder'] = 'Carpeta privada';
-$labels['otherfolder'] = 'Carpeta d\'un altre usuari';
-$labels['sharedfolder'] = 'Carpeta pública';
+$labels['personalfolder'] = 'Carpeta privada';
+$labels['otherfolder'] = 'Carpeta d\'un altre usuari';
+$labels['sharedfolder'] = 'Carpeta pública';
$labels['sortby'] = 'Ordena per';
$labels['sortasc'] = 'Ordena ascendentment';
$labels['sortdesc'] = 'Ordena descendentment';
@@ -494,4 +523,50 @@ $labels['vietnamese'] = 'Vietnamita';
$labels['japanese'] = 'Japonès';
$labels['korean'] = 'Coreà';
$labels['chinese'] = 'Xinès';
+$labels['arialabeltopnav'] = 'Finestra de control';
+$labels['arialabeltasknav'] = 'Aplicació de tasques';
+$labels['arialabeltoolbar'] = 'Aplicació de barra d\'eines';
+$labels['arialabelactivetask'] = 'Tasca activa';
+$labels['arialabelmessagessearchfilter'] = 'Filtre de llistat de correus electrònics';
+$labels['arialabelmailsearchform'] = 'Formulari de cerca de correus electrònics';
+$labels['arialabelcontactsearchform'] = 'Formulari de cerca de contactes';
+$labels['arialabelmailquicksearchbox'] = 'Entrada per la cerca de correus electrònics';
+$labels['arialabelquicksearchbox'] = 'Entrada de cerca';
+$labels['arialabelfolderlist'] = 'Selecció de carpeta de correu electrònic';
+$labels['arialabelmessagelist'] = 'Llistat de missatges de correu electrònic';
+$labels['arialabelmailpreviewframe'] = 'Previsualitza el missatge';
+$labels['arialabelmailboxmenu'] = 'Menú d\'accions de carpeta';
+$labels['arialabellistselectmenu'] = 'Menú de seleccions de la llista';
+$labels['arialabelthreadselectmenu'] = 'Menú de llistat de fils';
+$labels['arialabelmessagelistoptions'] = 'Opcions de visualització de llista de missatges i ordenació';
+$labels['arialabelmailimportdialog'] = 'Diàleg per importar missatges';
+$labels['arialabelmessagenav'] = 'Missatge de navegació';
+$labels['arialabelmessagebody'] = 'Cos del missatge';
+$labels['arialabelmessageactions'] = 'Accions del missatge';
+$labels['arialabelcontactquicksearch'] = 'Formulari per la cerca de contactes';
+$labels['arialabelcontactsearchbox'] = 'Entrada per la cerca de contactes';
+$labels['arialabelmessageheaders'] = 'Capçaleres del missatge';
+$labels['arialabelforwardingoptions'] = 'Opcions de re-enviament';
+$labels['arialabelreplyalloptions'] = 'Opcions per respondre a tots';
+$labels['arialabelmoremessageactions'] = 'Més accions de missatge';
+$labels['arialabelmarkmessagesas'] = 'Marca els missatges seleccionats com a...';
+$labels['arialabelcomposeoptions'] = 'Opcions de composició';
+$labels['arialabelresponsesmenu'] = 'Menú de respostes \'enllaunades\' o establertes';
+$labels['arialabelattachmentuploadform'] = 'Formulari per pujar adjunts';
+$labels['arialabelattachmentpreview'] = 'Previsualitza l\'ajunt';
+$labels['ariasummarycomposecontacts'] = 'Llista de contactes i grups per seleccionar com a destinataris';
+$labels['arialabelcontactexportoptions'] = 'Opcions per exportar contactes';
+$labels['arialabelabookgroupoptions'] = 'Opcions de llibreta d\'adreces/grup';
+$labels['arialabelpreferencesform'] = 'Formulari de preferències';
+$labels['arialabelidentityeditfrom'] = 'Formulari d\'edició d\'identitats';
+$labels['arialabelresonseeditfrom'] = 'Formulari d\'edició de respostes';
+$labels['helplistnavigation'] = 'Llista la navegació per teclat';
+$labels['helplistkeyboardnavigation'] = "Fletxes amunt/avall: Mou la fila seleccionada/activa.
+Espai: Selecciona la fila activa.
+Majús + amunt/avall: Selecciona una fila addicional de sobre/sota.
+Ctrl + Espai: Afegeix la fila activa a la selecció/Suprimeix de la selecció.";
+$labels['helplistkeyboardnavmessages'] = "Fletxes dreta/esquerra: expandeix/contrau fils del missatge (només en mode fils).
+Retorn: Obre el missatge seleccionat/actiu.
+Suprimeix: Mou els missatges seleccionats a la Paperera.";
+$labels['helplistkeyboardnavcontacts'] = "Retorn: Obre el contacte seleccionat/actiu";
?>
diff --git a/program/localization/ca_ES/messages.inc b/program/localization/ca_ES/messages.inc
index c71677b44..f1a068842 100644
--- a/program/localization/ca_ES/messages.inc
+++ b/program/localization/ca_ES/messages.inc
@@ -22,7 +22,9 @@ $messages['sessionerror'] = 'La vostra sessió no existeix o ha expirat.';
$messages['storageerror'] = 'Error de connexió amb el servidor IMAP.';
$messages['servererror'] = 'Error del Servidor!';
$messages['servererrormsg'] = 'Error del Servidor: $msg';
+$messages['connerror'] = 'Error de connexió (no s\'ha pogut establir la connexió amb el servidor)!';
$messages['dberror'] = 'Error a la Base de Dades!';
+$messages['windowopenerror'] = 'La finestra emergent ha estat bloquejada!';
$messages['requesttimedout'] = 'S\'ha esgotat el temps de la sol·licitud';
$messages['errorreadonly'] = 'No s\'ha pogut de realitzar l\'operació. La carpeta és de només lectura.';
$messages['errornoperm'] = 'No s\'ha pogut realitzar l\'operació. Permís denegat.';
@@ -92,6 +94,7 @@ $messages['contactsearchsuccessful'] = '$nr contactes trobats.';
$messages['searchnomatch'] = 'No s\'ha trobat cap coincidència.';
$messages['searching'] = 'S\'està cercant...';
$messages['checking'] = 'S\'està comprovant...';
+$messages['stillsearching'] = 'Encara s\'està cercant...';
$messages['nospellerrors'] = 'No s\'han trobat errors d\'ortografia.';
$messages['folderdeleted'] = 'Carpeta suprimida correctament.';
$messages['foldersubscribed'] = 'Carpeta subscrita correctament.';
@@ -135,7 +138,7 @@ $messages['importmessagesuccess'] = '<b>S\'han importat $nr missatges correctame
$messages['importmessageerror'] = 'La importació ha fallat. El fitxer que heu pujat no és un fitxer de missatges vàlid o no és un fitxer de bústia.';
$messages['opnotpermitted'] = 'Operació no permesa!';
$messages['nofromaddress'] = 'Falta l\'adreça de correu a la identitat seleccionada.';
-$messages['editorwarning'] = 'Si canvieu a l\'editor de text net perdreu tot el format del text. Voleu continuar?';
+$messages['editorwarning'] = 'Si canvieu el tipus d\'editor pot ser que perdreu tot el format del text. Voleu continuar?';
$messages['httpreceivedencrypterror'] = 'Hi ha hagut un error fatal de configuració. Contacteu amb el vostre administrador immediatament. <b>El vostre missatge no pot ser enviat.</b>';
$messages['smtpconnerror'] = 'Error SMTP ($code): La connexió al servidor ha fallat.';
$messages['smtpautherror'] = 'Error SMTP ($code): La identificació ha fallat.';
diff --git a/program/localization/cs_CZ/labels.inc b/program/localization/cs_CZ/labels.inc
index 2c94306e5..6d5a8ae24 100644
--- a/program/localization/cs_CZ/labels.inc
+++ b/program/localization/cs_CZ/labels.inc
@@ -131,6 +131,10 @@ $labels['moreactions'] = 'Další akce...';
$labels['more'] = 'Více';
$labels['back'] = 'Zpět';
$labels['options'] = 'Možnosti';
+$labels['first'] = 'První';
+$labels['last'] = 'Poslední';
+$labels['previous'] = 'Předchozí';
+$labels['next'] = 'Následující';
$labels['select'] = 'Vybrat';
$labels['all'] = 'Vše';
$labels['none'] = 'Nic';
@@ -171,6 +175,11 @@ $labels['importmessages'] = 'Import zpráv';
$labels['quota'] = 'Využití schránky';
$labels['unknown'] = 'neznámý';
$labels['unlimited'] = 'neomezený';
+$labels['quotatype'] = 'Typ kvóty';
+$labels['quotatotal'] = 'Limit';
+$labels['quotaused'] = 'Využito';
+$labels['quotastorage'] = 'Využití schránky';
+$labels['quotamessage'] = 'Počet zpráv';
$labels['quicksearch'] = 'Rychlé vyhledávání';
$labels['resetsearch'] = 'Zrušit vyhledávání';
$labels['searchmod'] = 'Parametry hledání';
@@ -178,6 +187,10 @@ $labels['msgtext'] = 'Celá zpráva';
$labels['body'] = 'Tělo';
$labels['type'] = 'Typ';
$labels['namex'] = 'Jméno';
+$labels['searchscope'] = 'Rozsah';
+$labels['currentfolder'] = 'Aktuální složka';
+$labels['subfolders'] = 'Tato a podsložky';
+$labels['allfolders'] = 'Všechny složky';
$labels['openinextwin'] = 'Otevřít v novém okně';
$labels['emlsave'] = 'Stáhnout (.eml)';
$labels['changeformattext'] = 'Zobrazit v textovém formátu';
@@ -193,6 +206,10 @@ $labels['returnreceipt'] = 'Doručenka';
$labels['dsn'] = 'Stav doručení';
$labels['mailreplyintro'] = 'Dne $date, $sender napsal:';
$labels['originalmessage'] = 'Původní zpráva';
+$labels['selectimage'] = 'Vybrat obrázek';
+$labels['addimage'] = 'Přidat obrázek';
+$labels['selectmedia'] = 'Vybrat video';
+$labels['addmedia'] = 'Přidat video';
$labels['editidents'] = 'Editovat identity';
$labels['spellcheck'] = 'Pravopis';
$labels['checkspelling'] = 'Zkontrolovat pravopis';
@@ -202,10 +219,11 @@ $labels['restore'] = 'Obnovit';
$labels['restoremessage'] = 'Obnovit zprávu?';
$labels['responses'] = 'Odpovědi';
$labels['insertresponse'] = 'Vložit odpověd';
-$labels['manageresponses'] = 'Spravovat odpovědí';
-$labels['savenewresponse'] = 'Uložit novou odpověď';
-$labels['editresponses'] = 'Upravit odpovědi';
+$labels['manageresponses'] = 'Spravovat odpovědi';
+$labels['newresponse'] = 'Vytvořit novou odpověď';
+$labels['addresponse'] = 'Přidat odpověď';
$labels['editresponse'] = 'Upravit odpověď';
+$labels['editresponses'] = 'Upravit odpovědi';
$labels['responsename'] = 'Název';
$labels['responsetext'] = 'Text odpovědi';
$labels['attach'] = 'Přiložit';
@@ -270,6 +288,7 @@ $labels['assistant'] = 'Asistent';
$labels['spouse'] = 'Manžel/ka';
$labels['allfields'] = 'Všechny položky';
$labels['search'] = 'Hledat';
+$labels['searchfor'] = 'Hledat "$q"';
$labels['advsearch'] = 'Pokročilé vyhledávání';
$labels['advanced'] = 'Pokročilé';
$labels['other'] = 'Ostatní';
@@ -288,7 +307,6 @@ $labels['typehomepage'] = 'Domácí stránka';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
$labels['addfield'] = 'Přidat položku';
-$labels['addcontact'] = 'Přidat kontakt';
$labels['editcontact'] = 'Upravit kontakt';
$labels['contacts'] = 'Kontakty';
$labels['contactproperties'] = 'Vlastnosti kontaktu';
@@ -301,7 +319,6 @@ $labels['rename'] = 'Přejmenovat';
$labels['addphoto'] = 'Přidat';
$labels['replacephoto'] = 'Změnit';
$labels['uploadphoto'] = 'Nahrát fotku';
-$labels['newcontact'] = 'Vytvořit nový kontakt';
$labels['deletecontact'] = 'Smazat vybrané kontakty';
$labels['composeto'] = 'Poslat e-mail';
$labels['contactsfromto'] = 'Kontakty $from až $to z celkem $count';
@@ -310,7 +327,6 @@ $labels['export'] = 'Export';
$labels['exportall'] = 'Export všech';
$labels['exportsel'] = 'Export vybraných';
$labels['exportvcards'] = 'Exportovat kontakty ve formátu vCard';
-$labels['newcontactgroup'] = 'Vytvořit novou skupinu kontaktů';
$labels['grouprename'] = 'Přejmenovat skupinu';
$labels['groupdelete'] = 'Smazat skupinu';
$labels['groupremoveselected'] = 'Odstranit označené kontakty ze skupiny';
@@ -340,10 +356,10 @@ $labels['preferences'] = 'Vlastnosti';
$labels['userpreferences'] = 'Vlastnosti uživatele';
$labels['editpreferences'] = 'Upravit vlastnosti uživatele';
$labels['identities'] = 'Profily';
-$labels['manageidentities'] = 'Spravovat profily u tohoto účtu';
-$labels['newidentity'] = 'Nový profil';
-$labels['newitem'] = 'Nová položka';
-$labels['edititem'] = 'Upravit položku';
+$labels['manageidentities'] = 'Správa profilů';
+$labels['newidentity'] = 'Vytvořit nový profil';
+$labels['addidentity'] = 'Přidat profil';
+$labels['editidentity'] = 'Upravit profil';
$labels['preferhtml'] = 'Upřednostňovat HTML zobrazení';
$labels['defaultcharset'] = 'Výchozí kódování';
$labels['htmlmessage'] = 'HTML zpráva';
@@ -400,6 +416,7 @@ $labels['2231folding'] = 'Podle RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Podle RFC 2047 (ostatní)';
$labels['force7bit'] = 'Použít kódování MIME pro 8-bitové znaky';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'Pokročilá nastavení';
$labels['focusonnewmessage'] = 'Aktivovat okno prohlížeče při příchozí zprávě';
$labels['checkallfolders'] = 'Kontrolovat nové zprávy ve všech složkách';
@@ -442,14 +459,14 @@ $labels['asattachment'] = 'jako přílohu';
$labels['replyallmode'] = 'Výchozí akce tlačítka [Odpovědět všem]';
$labels['replyalldefault'] = 'odpovědět všem';
$labels['replyalllist'] = 'odpovědět pouze do poštovní konference (pokud je nalezena)';
-$labels['folder'] = 'Složka';
-$labels['folders'] = 'Složky';
-$labels['foldername'] = 'Jméno složky';
-$labels['subscribed'] = 'Vybráno';
+$labels['folder'] = 'Složka';
+$labels['folders'] = 'Složky';
+$labels['foldername'] = 'Jméno složky';
+$labels['subscribed'] = 'Vybráno';
$labels['messagecount'] = 'Počet zpráv';
-$labels['create'] = 'Vytvořit';
-$labels['createfolder'] = 'Vytvořit novou složku';
-$labels['managefolders'] = 'Spravovat složky';
+$labels['create'] = 'Vytvořit';
+$labels['createfolder'] = 'Vytvořit novou složku';
+$labels['managefolders'] = 'Spravovat složky';
$labels['specialfolders'] = 'Speciální složky';
$labels['properties'] = 'Vlastnosti';
$labels['folderproperties'] = 'Vlastnosti složky';
@@ -459,9 +476,9 @@ $labels['info'] = 'Informace';
$labels['getfoldersize'] = 'Kliknutím zjistíte velikost složky';
$labels['changesubscription'] = 'Kliknutím změníte přednastavení';
$labels['foldertype'] = 'Typ složky';
-$labels['personalfolder'] = 'Soukromá složka';
-$labels['otherfolder'] = 'Složky ostatních uživatelů';
-$labels['sharedfolder'] = 'Sdílená složka';
+$labels['personalfolder'] = 'Soukromá složka';
+$labels['otherfolder'] = 'Složky ostatních uživatelů';
+$labels['sharedfolder'] = 'Sdílená složka';
$labels['sortby'] = 'Seřadit podle';
$labels['sortasc'] = 'Seřadit vzestupně';
$labels['sortdesc'] = 'Seřadit sestupně';
@@ -494,4 +511,12 @@ $labels['vietnamese'] = 'Vietnamština';
$labels['japanese'] = 'Japonština';
$labels['korean'] = 'Korejština';
$labels['chinese'] = 'Čínština';
+$labels['arialabelmailpreviewframe'] = 'Náhled zprávy';
+$labels['arialabelmessagebody'] = 'Tělo zprávy';
+$labels['arialabelmessageheaders'] = 'Hlavičky zprávy';
+$labels['arialabelmarkmessagesas'] = 'Označit vybrané zprávy jako...';
+$labels['arialabelattachmentpreview'] = 'Náhled přílohy';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/cs_CZ/messages.inc b/program/localization/cs_CZ/messages.inc
index 37f5280e8..3d491e427 100644
--- a/program/localization/cs_CZ/messages.inc
+++ b/program/localization/cs_CZ/messages.inc
@@ -22,7 +22,9 @@ $messages['sessionerror'] = 'Vaše přihlášení je neplatné nebo vypršelo';
$messages['storageerror'] = 'Připojení na IMAP server selhalo';
$messages['servererror'] = 'Chyba serveru!';
$messages['servererrormsg'] = 'Chyba serveru: $msg';
+$messages['connerror'] = 'Chyba připojení (Selhalo připojeni k serveru)!';
$messages['dberror'] = 'Chyba databáze!';
+$messages['windowopenerror'] = 'Vyskakovací okno bylo zablokováno!';
$messages['requesttimedout'] = 'Došlo k vypršení požadavku';
$messages['errorreadonly'] = 'Příkaz nelze provést, složka je určena jen ke čtení.';
$messages['errornoperm'] = 'Příkaz nelze provést, nemáte oprávnění.';
@@ -92,6 +94,7 @@ $messages['contactsearchsuccessful'] = 'Nalezeno $nr kontaktů';
$messages['searchnomatch'] = 'Nenalezena žádná zpráva';
$messages['searching'] = 'Vyhledávám...';
$messages['checking'] = 'Kontroluji...';
+$messages['stillsearching'] = 'Stále vyhledávám...';
$messages['nospellerrors'] = 'Nebyly nalezeny žádné chyby';
$messages['folderdeleted'] = 'Složka byla úspěšně vymazána';
$messages['foldersubscribed'] = 'Složka byla úspěšně připojena';
@@ -135,7 +138,7 @@ $messages['importmessagesuccess'] = 'Úspěšně naimportováno $nr zpráv';
$messages['importmessageerror'] = 'Import se nezdařil! Nahraný soubor není platnou zprávou nebo souborem mailboxu';
$messages['opnotpermitted'] = 'Operace není povolena!';
$messages['nofromaddress'] = 'Chybějící e-mailová adresa v označeném profilu';
-$messages['editorwarning'] = 'Přepnutím do režimu prostého textu ztratíte veškeré formátování. Chcete pokračovat?';
+$messages['editorwarning'] = 'Přepnutím režimu editoru ztratíte veškeré formátování. Chcete pokračovat?';
$messages['httpreceivedencrypterror'] = 'Vyskytla se vážná chyba v konfiguraci. Kontaktujte neprodleně administátora. Vaše zpráva nemohla být odeslána.';
$messages['smtpconnerror'] = 'Chyba SMTP ($code): Připojení k serveru selhalo';
$messages['smtpautherror'] = 'Chyba SMTP ($code): Chyba přihlášení';
diff --git a/program/localization/cy_GB/labels.inc b/program/localization/cy_GB/labels.inc
index 770df3bff..6d3711d34 100644
--- a/program/localization/cy_GB/labels.inc
+++ b/program/localization/cy_GB/labels.inc
@@ -178,6 +178,10 @@ $labels['msgtext'] = 'Y neges yn llawn';
$labels['body'] = 'Corff';
$labels['type'] = 'Math';
$labels['namex'] = 'Enw';
+$labels['searchscope'] = 'Amrediad';
+$labels['currentfolder'] = 'Ffolder cyfredol';
+$labels['subfolders'] = 'Hwn a is-ffolderi';
+$labels['allfolders'] = 'Pob ffolder';
$labels['openinextwin'] = 'Agor mewn ffenest newydd';
$labels['emlsave'] = 'Llwytho lawr (.eml)';
$labels['changeformattext'] = 'Dangos mewn fformat testun plaen';
@@ -203,9 +207,8 @@ $labels['restoremessage'] = 'Adfer neges?';
$labels['responses'] = 'Ymatebion';
$labels['insertresponse'] = 'Mewnosod ymateb';
$labels['manageresponses'] = 'Rheoli ymatebion';
-$labels['savenewresponse'] = 'Cadw ymateb newydd';
-$labels['editresponses'] = 'Golygu ymatebion';
$labels['editresponse'] = 'Golygu ymateb';
+$labels['editresponses'] = 'Golygu ymatebion';
$labels['responsename'] = 'Enw';
$labels['responsetext'] = 'Testun Ymateb';
$labels['attach'] = 'Atodi';
@@ -270,6 +273,7 @@ $labels['assistant'] = 'Cynorthwyydd';
$labels['spouse'] = 'Cymar';
$labels['allfields'] = 'Pob maes';
$labels['search'] = 'Chwilio';
+$labels['searchfor'] = 'Chwilio am "$q"';
$labels['advsearch'] = 'Chwilio Uwch';
$labels['advanced'] = 'Uwch';
$labels['other'] = 'Arall';
@@ -288,7 +292,6 @@ $labels['typehomepage'] = 'Gwefan';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Proffil';
$labels['addfield'] = 'Ychwanegu maes...';
-$labels['addcontact'] = 'Ychwanegu cyswllt newydd';
$labels['editcontact'] = 'Golygu cyswllt';
$labels['contacts'] = 'Cysylltiadau';
$labels['contactproperties'] = 'Nodweddion cyswllt';
@@ -301,7 +304,6 @@ $labels['rename'] = 'Ail-enwi';
$labels['addphoto'] = 'Ychwanegu';
$labels['replacephoto'] = 'Amnewid';
$labels['uploadphoto'] = 'Llwytho fyny llun';
-$labels['newcontact'] = 'Creu cerdyn cyswllt newydd';
$labels['deletecontact'] = 'Dileu y cysylltiadau a ddewiswyd';
$labels['composeto'] = 'Ysgrifennu neges at';
$labels['contactsfromto'] = 'Cysylltiadau $from i $to o $count';
@@ -310,7 +312,6 @@ $labels['export'] = 'Allforio';
$labels['exportall'] = 'Allforio popeth';
$labels['exportsel'] = 'Allforio dewiswyd';
$labels['exportvcards'] = 'Allforio cysylltiadau mewn fformat vCard';
-$labels['newcontactgroup'] = 'Creu grŵp cysylltiadau newydd';
$labels['grouprename'] = 'Ail-enwi grŵp';
$labels['groupdelete'] = 'Dileu grŵp';
$labels['groupremoveselected'] = 'Dileu y cysylltiadau dewiswyd o\'r grŵp';
@@ -340,10 +341,6 @@ $labels['preferences'] = 'Dewisiadau';
$labels['userpreferences'] = 'Dewisiadau\'r defnyddiwr';
$labels['editpreferences'] = 'Golygu dewisiadau\'r defnyddiwr';
$labels['identities'] = 'Personoliaethau';
-$labels['manageidentities'] = 'Rheoli personoliaethau ar gyfer y cyfri hwn';
-$labels['newidentity'] = 'Personoliaeth newydd';
-$labels['newitem'] = 'Eitem newydd';
-$labels['edititem'] = 'Golygu eitem';
$labels['preferhtml'] = 'Dangos HTML';
$labels['defaultcharset'] = 'Set Nodau Diofyn';
$labels['htmlmessage'] = 'Neges HTML';
@@ -400,6 +397,7 @@ $labels['2231folding'] = 'RFC 2231 llawn (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'RFC 2047 llawn (arall)';
$labels['force7bit'] = 'Defnyddio amgodi MIME ar gyfer llythrennau 8-did';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'Dewisiadau uwch';
$labels['focusonnewmessage'] = 'Ffocysu\'r porwr ar y neges newydd';
$labels['checkallfolders'] = 'Chwilio pob ffolder am negeseuon newydd';
@@ -442,14 +440,14 @@ $labels['asattachment'] = 'fel atodiad';
$labels['replyallmode'] = 'Gweithred diofyn botwm [Ymateb i bawb]';
$labels['replyalldefault'] = 'ymateb i bawb';
$labels['replyalllist'] = 'ymateb i\'r rhestr trafod yn unig (os canfuwyd)';
-$labels['folder'] = 'Ffolder';
-$labels['folders'] = 'Ffolderi';
-$labels['foldername'] = 'Enw ffolder';
-$labels['subscribed'] = 'Tanysgrifwyd';
+$labels['folder'] = 'Ffolder';
+$labels['folders'] = 'Ffolderi';
+$labels['foldername'] = 'Enw ffolder';
+$labels['subscribed'] = 'Tanysgrifwyd';
$labels['messagecount'] = 'Negeseuon';
-$labels['create'] = 'Creu';
-$labels['createfolder'] = 'Creu ffolder newydd';
-$labels['managefolders'] = 'Rheoli ffolderi';
+$labels['create'] = 'Creu';
+$labels['createfolder'] = 'Creu ffolder newydd';
+$labels['managefolders'] = 'Rheoli ffolderi';
$labels['specialfolders'] = 'Ffolderi arbennig';
$labels['properties'] = 'Nodweddion';
$labels['folderproperties'] = 'Ffolder nodweddion';
@@ -459,9 +457,9 @@ $labels['info'] = 'Gwybodaeth';
$labels['getfoldersize'] = 'Cliciwch i gael maint ffolder';
$labels['changesubscription'] = 'Cliciwch i newid y tanysgrifiad';
$labels['foldertype'] = 'Math Ffolder';
-$labels['personalfolder'] = 'Ffolder Preifat';
-$labels['otherfolder'] = 'Ffolder Defnyddiwr Arall';
-$labels['sharedfolder'] = 'Ffolder Cyhoeddus';
+$labels['personalfolder'] = 'Ffolder Preifat';
+$labels['otherfolder'] = 'Ffolder Defnyddiwr Arall';
+$labels['sharedfolder'] = 'Ffolder Cyhoeddus';
$labels['sortby'] = 'Trefnu yn ôl';
$labels['sortasc'] = 'Trefn esgynnol';
$labels['sortdesc'] = 'Trefn ddisgynnol';
@@ -494,4 +492,7 @@ $labels['vietnamese'] = 'Fietnamaidd';
$labels['japanese'] = 'Japaneaidd';
$labels['korean'] = 'Corëeg';
$labels['chinese'] = 'Tsieineaidd';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/cy_GB/messages.inc b/program/localization/cy_GB/messages.inc
index 8e0c1c276..d9cf6f83f 100644
--- a/program/localization/cy_GB/messages.inc
+++ b/program/localization/cy_GB/messages.inc
@@ -22,6 +22,7 @@ $messages['sessionerror'] = 'Mae\'r sesiwn yn anghywir neu wedi dod i ben.';
$messages['storageerror'] = 'Methwyd cysylltu a\'r gweinydd storfa.';
$messages['servererror'] = 'Gwall Gweinydd!';
$messages['servererrormsg'] = 'Gwall Gweinydd: $msg';
+$messages['connerror'] = 'Gwall Cysylltiad (Methwyd cysylltu a\'r gweinydd)!';
$messages['dberror'] = 'Gwall Cronfa Ddata!';
$messages['requesttimedout'] = 'Cais wedi dod i derfyn amser';
$messages['errorreadonly'] = 'Methwyd gweithredu. Mae\'r ffolder yn darllen-yn-unig';
@@ -92,6 +93,7 @@ $messages['contactsearchsuccessful'] = 'Canfuwyd $nr cyswllt.';
$messages['searchnomatch'] = 'Ni gafwyd hyd i unrhyw ganlyniadau chwilio';
$messages['searching'] = 'Yn chwilio...';
$messages['checking'] = 'Yn gofyn...';
+$messages['stillsearching'] = 'Dal i chwilio...';
$messages['nospellerrors'] = 'Ni gafwyd hyd i unrhyw wallau gwirio';
$messages['folderdeleted'] = 'Dilëwyd y ffolder yn llwyddiannus';
$messages['foldersubscribed'] = 'Ffolder wedi ei danysgrifio yn llwyddiannus';
@@ -135,7 +137,6 @@ $messages['importmessagesuccess'] = 'Mewnforiwyd $nr neges yn llwyddiannus';
$messages['importmessageerror'] = 'Methwyd mewnforio! Nid yw\'r ffeil a lwythwyd yn ffeil neges neu blwch ebost dilys';
$messages['opnotpermitted'] = 'Ni chaniateir y weithred!';
$messages['nofromaddress'] = 'Cyfeiriad e-bost ar goll yn y personoliaeth a ddewiswyd';
-$messages['editorwarning'] = 'Mi fydd newid i\'r golygydd testun plaen yn golygu byddwch chi\'n colli unrhyw arddulliau yn eich testun. Hoffech chi barhau?';
$messages['httpreceivedencrypterror'] = 'Fe gafwyd gwall angheuol yn y ffurfweddiad. Cysylltwch â\'ch gweinyddwr ar unwaith. <b>Nid oedd yn bosib dangos eich neges.</b>';
$messages['smtpconnerror'] = 'Gwall SMTP ($code): Methwyd cysylltu a\'r gweinydd';
$messages['smtpautherror'] = 'Gwall SMTP ($code): Methwyd dilysu\'r cyfrif';
diff --git a/program/localization/da_DK/labels.inc b/program/localization/da_DK/labels.inc
index 66103ad63..28d62fdad 100644
--- a/program/localization/da_DK/labels.inc
+++ b/program/localization/da_DK/labels.inc
@@ -131,16 +131,24 @@ $labels['moreactions'] = 'Flere funktioner...';
$labels['more'] = 'Mere';
$labels['back'] = 'Tilbage';
$labels['options'] = 'Indstillinger';
+$labels['first'] = 'Første';
+$labels['last'] = 'Sidste';
+$labels['previous'] = 'Forrige';
+$labels['next'] = 'Næste';
$labels['select'] = 'Vælg';
$labels['all'] = 'Alle';
$labels['none'] = 'Ingen';
$labels['currpage'] = 'Aktuel side';
+$labels['isread'] = 'Læs';
$labels['unread'] = 'Ulæste';
$labels['flagged'] = 'Markeret';
+$labels['unflagged'] = 'Ikke markeret';
$labels['unanswered'] = 'Ubesvaret';
$labels['withattachment'] = 'Med vedhæftning';
$labels['deleted'] = 'Slettede';
$labels['undeleted'] = 'Ikke slettet';
+$labels['replied'] = 'Besvaret';
+$labels['forwarded'] = 'Videresendt';
$labels['invert'] = 'Invertér';
$labels['filter'] = 'Filtrer';
$labels['list'] = 'Liste';
@@ -178,6 +186,9 @@ $labels['msgtext'] = 'Hele beskeden';
$labels['body'] = 'Body';
$labels['type'] = 'Type';
$labels['namex'] = 'Navn';
+$labels['currentfolder'] = 'Nuværende mappe';
+$labels['subfolders'] = 'Denne og undermapper';
+$labels['allfolders'] = 'Alle mapper';
$labels['openinextwin'] = 'Åbn i nyt vindue';
$labels['emlsave'] = 'Download (.eml)';
$labels['changeformattext'] = 'Vis i ren tekst format';
@@ -193,6 +204,10 @@ $labels['returnreceipt'] = 'Anmod om kvittering ved læst';
$labels['dsn'] = 'Anmod om leveringsstatus';
$labels['mailreplyintro'] = '$sender skrev den $date:';
$labels['originalmessage'] = 'Original besked';
+$labels['selectimage'] = 'Vælg billede';
+$labels['addimage'] = 'Tilføje billede';
+$labels['selectmedia'] = 'Vælg video';
+$labels['addmedia'] = 'Tilføj video';
$labels['editidents'] = 'Ret identiteter';
$labels['spellcheck'] = 'Stav';
$labels['checkspelling'] = 'Stavekontrol';
@@ -203,9 +218,8 @@ $labels['restoremessage'] = 'Gendan besked';
$labels['responses'] = 'Svar';
$labels['insertresponse'] = 'Indsæt et svar';
$labels['manageresponses'] = 'Administrer svar';
-$labels['savenewresponse'] = 'Gem et nyt svar';
-$labels['editresponses'] = 'Rediger svar';
$labels['editresponse'] = 'Rediger svar';
+$labels['editresponses'] = 'Rediger svar';
$labels['responsename'] = 'Navn';
$labels['responsetext'] = 'Svartekst';
$labels['attach'] = 'Vedhæft';
@@ -270,6 +284,7 @@ $labels['assistant'] = 'Assistent';
$labels['spouse'] = 'Ægtefælle/partner';
$labels['allfields'] = 'Alle felter';
$labels['search'] = 'Søg';
+$labels['searchfor'] = 'Søg efter "$q"';
$labels['advsearch'] = 'Avanceret søg';
$labels['advanced'] = 'Avanceret';
$labels['other'] = 'Andet';
@@ -288,11 +303,12 @@ $labels['typehomepage'] = 'Hjemmeside';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
$labels['addfield'] = 'Tilføj felt...';
-$labels['addcontact'] = 'Tilføj ny kontakt';
$labels['editcontact'] = 'Redigér kontakt';
$labels['contacts'] = 'Kontakter';
$labels['contactproperties'] = 'Kontaktegenskaber';
+$labels['contactnameandorg'] = 'Navn og organisation';
$labels['personalinfo'] = 'Personlig information';
+$labels['contactphoto'] = 'Kontaktfoto';
$labels['edit'] = 'Redigér';
$labels['cancel'] = 'Annullér';
$labels['save'] = 'Gem';
@@ -301,7 +317,6 @@ $labels['rename'] = 'Omdøb';
$labels['addphoto'] = 'Tilføj';
$labels['replacephoto'] = 'Erstat';
$labels['uploadphoto'] = 'Overfør billede';
-$labels['newcontact'] = 'Opret nyt kontaktkort';
$labels['deletecontact'] = 'Slet valgte kontakter';
$labels['composeto'] = 'Skriv besked til';
$labels['contactsfromto'] = 'Kontakter $from til $to af $count';
@@ -310,10 +325,10 @@ $labels['export'] = 'Eksportér';
$labels['exportall'] = 'Eksporter alt';
$labels['exportsel'] = 'Eksporter udvalgte';
$labels['exportvcards'] = 'Eksportér kontakter i vCard format';
-$labels['newcontactgroup'] = 'Opret ny kontaktgruppe';
$labels['grouprename'] = 'Omdøb gruppe';
$labels['groupdelete'] = 'Slet gruppe';
$labels['groupremoveselected'] = 'Fjern markerede kontakter fra gruppen';
+$labels['uponelevel'] = 'Et niveau op';
$labels['previouspage'] = 'Vis den forrige side';
$labels['firstpage'] = 'Vis første side';
$labels['nextpage'] = 'Vis næste side';
@@ -340,10 +355,6 @@ $labels['preferences'] = 'Indstillinger';
$labels['userpreferences'] = 'Brugerindstillinger';
$labels['editpreferences'] = 'Redigér brugerindstillinger';
$labels['identities'] = 'Identiteter';
-$labels['manageidentities'] = 'Styr identiteterne for denne konto';
-$labels['newidentity'] = 'Ny identitet';
-$labels['newitem'] = 'Nyt punkt';
-$labels['edititem'] = 'Redigér punkt';
$labels['preferhtml'] = 'Vis HTML';
$labels['defaultcharset'] = 'Standard tegnkodning';
$labels['htmlmessage'] = 'HTML-besked';
@@ -400,7 +411,9 @@ $labels['2231folding'] = 'Fuld RFC 2231 understøttelse (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 understøttelse (MS Outlook)';
$labels['2047folding'] = 'Fuld RFC 2047 understøttelse (andre)';
$labels['force7bit'] = 'Brug MIME indkodning for 8-bits tegn';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'Avancerede indstillinger';
+$labels['toggleadvancedoptions'] = 'Skift avancerede indstillinger';
$labels['focusonnewmessage'] = 'Fokusér browservindue når der kommer nye beskeder';
$labels['checkallfolders'] = 'Tjek alle mapper for nye beskeder';
$labels['displaynext'] = 'Efter slet/flyt besked, vis næste besked';
@@ -442,14 +455,14 @@ $labels['asattachment'] = 'som vedhæftning';
$labels['replyallmode'] = 'Standardhandling til [Svar alle]-knap';
$labels['replyalldefault'] = 'Svar til alle';
$labels['replyalllist'] = 'svar kun til mail-liste (hvis fundet)';
-$labels['folder'] = 'Mappe';
-$labels['folders'] = 'Mapper';
-$labels['foldername'] = 'Mappenavn';
-$labels['subscribed'] = 'Abonneret';
+$labels['folder'] = 'Mappe';
+$labels['folders'] = 'Mapper';
+$labels['foldername'] = 'Mappenavn';
+$labels['subscribed'] = 'Abonneret';
$labels['messagecount'] = 'Beskeder';
-$labels['create'] = 'Opret';
-$labels['createfolder'] = 'Opret ny mappe';
-$labels['managefolders'] = 'Administrér mapper';
+$labels['create'] = 'Opret';
+$labels['createfolder'] = 'Opret ny mappe';
+$labels['managefolders'] = 'Administrér mapper';
$labels['specialfolders'] = 'Specielle mapper';
$labels['properties'] = 'Egenskaber';
$labels['folderproperties'] = 'Mappeegenskaber';
@@ -459,9 +472,9 @@ $labels['info'] = 'Information';
$labels['getfoldersize'] = 'Klik for at tjekke mappestørrelse';
$labels['changesubscription'] = 'Klik for at ændre abonnement';
$labels['foldertype'] = 'Mappetype';
-$labels['personalfolder'] = 'Privat mappe';
-$labels['otherfolder'] = 'Anden brugers mappe';
-$labels['sharedfolder'] = 'Offentlig mappe';
+$labels['personalfolder'] = 'Privat mappe';
+$labels['otherfolder'] = 'Anden brugers mappe';
+$labels['sharedfolder'] = 'Offentlig mappe';
$labels['sortby'] = 'Sortér efter';
$labels['sortasc'] = 'Ældste først';
$labels['sortdesc'] = 'Nyeste først';
@@ -494,4 +507,13 @@ $labels['vietnamese'] = 'Vietnamesisk';
$labels['japanese'] = 'Japansk';
$labels['korean'] = 'Koreansk';
$labels['chinese'] = 'Kinesisk';
+$labels['arialabeltopnav'] = 'Vindueskontrol';
+$labels['arialabelmessagessearchfilter'] = 'E-mail filter';
+$labels['arialabelmailsearchform'] = 'E-mail søgeform';
+$labels['arialabelcontactsearchform'] = 'Kontakt søgeform';
+$labels['arialabelmailquicksearchbox'] = 'E-mail søgeinput';
+$labels['arialabelquicksearchbox'] = 'Søge input';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/da_DK/messages.inc b/program/localization/da_DK/messages.inc
index 4a567aed8..61f35b23d 100644
--- a/program/localization/da_DK/messages.inc
+++ b/program/localization/da_DK/messages.inc
@@ -22,7 +22,9 @@ $messages['sessionerror'] = 'Din session er ugyldig eller udløbet.';
$messages['storageerror'] = 'Forbindelse til e-mailserveren fejlede.';
$messages['servererror'] = 'Server fejl!';
$messages['servererrormsg'] = 'Server fejl: $msg';
+$messages['connerror'] = 'Forbindelsesfejl (kunne ikke oprette forbindelse til server)!';
$messages['dberror'] = 'Database fejl!';
+$messages['windowopenerror'] = 'Popup-vinduet blev blokeret!';
$messages['requesttimedout'] = 'Forespørgselstiden udløb';
$messages['errorreadonly'] = 'Kunne ikke udføre den ønskede handling. Mappen er skrivebeskyttet.';
$messages['errornoperm'] = 'Kunne ikke udføre den ønskede handling. Adgang nægtet.';
@@ -92,6 +94,7 @@ $messages['contactsearchsuccessful'] = 'Fandt $nr kontakter.';
$messages['searchnomatch'] = 'Søgningen fandt ingen beskeder.';
$messages['searching'] = 'Søger...';
$messages['checking'] = 'Tjekker...';
+$messages['stillsearching'] = 'Søger stadig...';
$messages['nospellerrors'] = 'Ingen stavefejl fundet.';
$messages['folderdeleted'] = 'Mappen er slettet.';
$messages['foldersubscribed'] = 'Mappe-abonnement oprettet.';
@@ -135,7 +138,7 @@ $messages['importmessagesuccess'] = 'Importerede $nr beskeder';
$messages['importmessageerror'] = 'Import mislykkedes! Den uploadede fil er ikke en gyldig besked eller mailbox-fil';
$messages['opnotpermitted'] = 'Handlingen er ikke tilladt!';
$messages['nofromaddress'] = 'Der mangler en e-mailadresse i den valgte identitet.';
-$messages['editorwarning'] = 'Al formatering af teksten forsvinder, hvis der skiftes til ren tekst. Vil du fortsætte?';
+$messages['editorwarning'] = 'Al formatering af teksten kan forsvinde, hvis der skiftes editor Vil du fortsætte?';
$messages['httpreceivedencrypterror'] = 'Der er opstået en fatal konfigurationsfejl. Kontakt venligst din system-administrator med det samme. <b>Din besked kunne ikke afsendes.</b>';
$messages['smtpconnerror'] = 'SMTP fejl ($code): Forbindelsen til serveren afbrudt';
$messages['smtpautherror'] = 'SMTP fejl ($code): Autenticering fejlede';
diff --git a/program/localization/de_CH/csv2vcard.inc b/program/localization/de_CH/csv2vcard.inc
new file mode 100644
index 000000000..7d4b04d04
--- /dev/null
+++ b/program/localization/de_CH/csv2vcard.inc
@@ -0,0 +1,99 @@
+<?php
+
+/*
++-----------------------------------------------------------------------+
+| localization/de_CH/csv2vcard.inc |
+| |
+| Localization file of the Roundcube Webmail client |
+| Copyright (C) 2005-2014, The Roundcube Dev Team |
+| |
+| Licensed under the GNU General Public License version 3 or |
+| any later version with exceptions for skins & plugins. |
+| See the README file for a full license statement. |
+| |
++-----------------------------------------------------------------------+
+| Author: Aleksander Machniak <alec@alec.pl> |
++-----------------------------------------------------------------------+
+*/
+$map = array();
+$map['anniversary'] = "Jahrestag";
+$map['assistants_name'] = "Name Assistent";
+$map['assistants_phone'] = "Telefon Assistent";
+$map['birthday'] = "Geburtstag";
+$map['business_city'] = "Ort geschäftlich";
+$map['business_countryregion'] = "Region geschäftlich";
+$map['business_fax'] = "Fax geschäftlich";
+$map['business_phone'] = "Telefon geschäftlich";
+$map['business_phone_2'] = "Telefon geschäftlich 2";
+$map['business_postal_code'] = "Postleitzahl geschäftlich";
+$map['business_state'] = "Land geschäftlich";
+$map['business_street'] = "Straße geschäftlich";
+$map['car_phone'] = "Autotelefon";
+$map['categories'] = "Kategorien";
+$map['company'] = "Firma";
+$map['department'] = "Abteilung";
+$map['email_address'] = "E-Mail-Adresse";
+$map['first_name'] = "Vorname";
+$map['gender'] = "Geschlecht";
+$map['home_city'] = "Ort privat";
+$map['home_countryregion'] = "Region privat";
+$map['home_fax'] = "Fax privat";
+$map['home_phone'] = "Telefon privat";
+$map['home_phone_2'] = "Telefon privat 2";
+$map['home_postal_code'] = "Postleitzahl privat";
+$map['home_state'] = "Land privat";
+$map['home_street'] = "Straße privat";
+$map['job_title'] = "Position";
+$map['last_name'] = "Nachname";
+$map['managers_name'] = "Manager's Name";
+$map['middle_name'] = "Weitere Vornamen";
+$map['mobile_phone'] = "Mobiltelefon";
+$map['notes'] = "Notizen";
+$map['other_city'] = "Weiterer Ort";
+$map['other_countryregion'] = "Weitere Region";
+$map['other_fax'] = "Weiteres Fax";
+$map['other_phone'] = "Weiteres Telefon";
+$map['other_postal_code'] = "Weitere Postleitzahl";
+$map['other_state'] = "Weiteres Land";
+$map['other_street'] = "Weitere Straße";
+$map['pager'] = "Pager";
+$map['primary_phone'] = "Haupttelefon";
+$map['spouse'] = "Spouse";
+$map['suffix'] = "Suffix";
+$map['title'] = "Title";
+$map['web_page'] = "Webseite";
+$map['birth_day'] = "Geburtstag";
+$map['birth_month'] = "Geburtsmonat";
+$map['birth_year'] = "Geburtsjahr";
+$map['display_name'] = "Anzeigename";
+$map['fax_number'] = "Fax-Nummer";
+$map['home_address'] = "Privat: Adresse";
+$map['home_country'] = "Privat: Land";
+$map['home_zipcode'] = "Privat: PLZ";
+$map['mobile_number'] = "Mobil-Tel.-Nr.";
+$map['nickname'] = "Spitzname";
+$map['organization'] = "Organisation";
+$map['pager_number'] = "Pager-Nummer";
+$map['primary_email'] = "Primäre E-Mail-Adresse";
+$map['secondary_email'] = "Sekundäre E-Mail-Adresse";
+$map['web_page_1'] = "Webseite 1";
+$map['web_page_2'] = "Webseite 2";
+$map['work_phone'] = "Tel. dienstlich";
+$map['work_address'] = "Dienstlich: Adresse";
+$map['work_country'] = "Dienstlich: Land";
+$map['work_zipcode'] = "Dienstlich: PLZ";
+$map['date_of_birth'] = "Date of Birth";
+$map['email'] = "Email";
+$map['home_mobile'] = "Home Mobile";
+$map['home_zip'] = "Home Zip";
+$map['info'] = "Info";
+$map['user_photo'] = "User Photo";
+$map['url'] = "URL";
+$map['work_city'] = "Work City";
+$map['work_company'] = "Work Company";
+$map['work_dept'] = "Work Dept";
+$map['work_fax'] = "Work Fax";
+$map['work_mobile'] = "Work Mobile";
+$map['work_state'] = "Work State";
+$map['work_title'] = "Work Title";
+$map['work_zip'] = "Work Zip";
diff --git a/program/localization/de_CH/labels.inc b/program/localization/de_CH/labels.inc
index f53640ab5..794041ef0 100644
--- a/program/localization/de_CH/labels.inc
+++ b/program/localization/de_CH/labels.inc
@@ -178,6 +178,10 @@ $labels['msgtext'] = 'Ganze Nachricht';
$labels['body'] = 'Inhalt';
$labels['type'] = 'Typ';
$labels['namex'] = 'Name';
+$labels['searchscope'] = 'Suchbereich';
+$labels['currentfolder'] = 'Aktueller Ordner';
+$labels['subfolders'] = 'Aktueller und Unterordner';
+$labels['allfolders'] = 'Alle Ordner';
$labels['openinextwin'] = 'In neuem Fenster öffnen';
$labels['emlsave'] = 'Herunterladen (.eml)';
$labels['changeformattext'] = 'Als reiner Text anzeigen';
@@ -193,6 +197,8 @@ $labels['returnreceipt'] = 'Empfangsbestätigung (MDN)';
$labels['dsn'] = 'Übermittlungsbestätigung (DSN)';
$labels['mailreplyintro'] = 'Am $date, schrieb $sender:';
$labels['originalmessage'] = 'Originalnachricht';
+$labels['selectimage'] = 'Bild auswählen';
+$labels['addimage'] = 'Bild hinzufügen';
$labels['editidents'] = 'Absender bearbeiten';
$labels['spellcheck'] = 'Rechtschreibung';
$labels['checkspelling'] = 'Rechtschreibung prüfen';
@@ -203,9 +209,8 @@ $labels['restoremessage'] = 'Nachricht wiederherstellen?';
$labels['responses'] = 'Antworten';
$labels['insertresponse'] = 'Antwort einfügen';
$labels['manageresponses'] = 'Antworten verwalten';
-$labels['savenewresponse'] = 'Neue Antwort speichern';
-$labels['editresponses'] = 'Antworten bearbeiten';
$labels['editresponse'] = 'Antwort bearbeiten';
+$labels['editresponses'] = 'Antworten bearbeiten';
$labels['responsename'] = 'Name';
$labels['responsetext'] = 'Antworttext';
$labels['attach'] = 'Anhängen';
@@ -270,6 +275,7 @@ $labels['assistant'] = 'Assistent';
$labels['spouse'] = 'Partner/in';
$labels['allfields'] = 'Alle Felder';
$labels['search'] = 'Suche';
+$labels['searchfor'] = 'Suche nach "$q"';
$labels['advsearch'] = 'Erweiterte Suche';
$labels['advanced'] = 'Erweitert';
$labels['other'] = 'Andere';
@@ -288,7 +294,6 @@ $labels['typehomepage'] = 'Homepage';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
$labels['addfield'] = 'Feld hinzufügen...';
-$labels['addcontact'] = 'Kontakt hinzufügen';
$labels['editcontact'] = 'Kontakt bearbeiten';
$labels['contacts'] = 'Kontakte';
$labels['contactproperties'] = 'Kontaktdaten';
@@ -301,7 +306,6 @@ $labels['rename'] = 'Umbenennen';
$labels['addphoto'] = 'Hinzufügen';
$labels['replacephoto'] = 'Ersetzen';
$labels['uploadphoto'] = 'Bild hochladen';
-$labels['newcontact'] = 'Neuen Kontakt erfassen';
$labels['deletecontact'] = 'Gewählte Kontakte löschen';
$labels['composeto'] = 'Nachricht verfassen';
$labels['contactsfromto'] = 'Kontakte $from bis $to von $count';
@@ -310,7 +314,6 @@ $labels['export'] = 'Exportieren';
$labels['exportall'] = 'Alle exportieren';
$labels['exportsel'] = 'Ausgewählte exportieren';
$labels['exportvcards'] = 'Kontakte im vCard-Format exportieren';
-$labels['newcontactgroup'] = 'Neue Adressgruppe erstellen';
$labels['grouprename'] = 'Gruppe umbenennen';
$labels['groupdelete'] = 'Gruppe löschen';
$labels['groupremoveselected'] = 'Gewählte Kontakte aus Gruppe entfernen';
@@ -340,10 +343,6 @@ $labels['preferences'] = 'Einstellungen';
$labels['userpreferences'] = 'Benutzereinstellungen';
$labels['editpreferences'] = 'Einstellungen bearbeiten';
$labels['identities'] = 'Absender';
-$labels['manageidentities'] = 'Absender für dieses Konto verwalten';
-$labels['newidentity'] = 'Neuer Absender';
-$labels['newitem'] = 'Neuer Eintrag';
-$labels['edititem'] = 'Eintrag bearbeiten';
$labels['preferhtml'] = 'HTML bevorzugen';
$labels['defaultcharset'] = 'Standard-Zeichensatz';
$labels['htmlmessage'] = 'HTML Nachricht';
@@ -400,6 +399,7 @@ $labels['2231folding'] = 'Vollständig RFC 2231 kompatibel (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 kompatibel (Microsoft Outlook)';
$labels['2047folding'] = 'Vollständig RFC 2047 kompatibel (andere)';
$labels['force7bit'] = 'MIME-Kodierung für 8-bit Zeichen';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'Erweiterte Einstellungen';
$labels['focusonnewmessage'] = 'Fokussiere Browserfenster bei neuen Nachrichten';
$labels['checkallfolders'] = 'Alle Ordner auf neue Nachrichten prüfen';
@@ -442,14 +442,14 @@ $labels['asattachment'] = 'als Anhang';
$labels['replyallmode'] = 'Standard Funktion für [Allen antworten]';
$labels['replyalldefault'] = 'Allen antworten';
$labels['replyalllist'] = 'Nur der Mailing-Liste antworten (falls vorhanden)';
-$labels['folder'] = 'Ordner';
-$labels['folders'] = 'Ordner';
-$labels['foldername'] = 'Ordnername';
-$labels['subscribed'] = 'Abonniert';
+$labels['folder'] = 'Ordner';
+$labels['folders'] = 'Ordner';
+$labels['foldername'] = 'Ordnername';
+$labels['subscribed'] = 'Abonniert';
$labels['messagecount'] = 'Nachrichten';
-$labels['create'] = 'Erstellen';
-$labels['createfolder'] = 'Neuen Ordner erstellen';
-$labels['managefolders'] = 'Ordner verwalten';
+$labels['create'] = 'Erstellen';
+$labels['createfolder'] = 'Neuen Ordner erstellen';
+$labels['managefolders'] = 'Ordner verwalten';
$labels['specialfolders'] = 'Spezialordner';
$labels['properties'] = 'Eigenschaften';
$labels['folderproperties'] = 'Ordnereigenschaften';
@@ -459,9 +459,9 @@ $labels['info'] = 'Informationen';
$labels['getfoldersize'] = 'Ordnergrösse anzeigen';
$labels['changesubscription'] = 'Abonnieren';
$labels['foldertype'] = 'Ordnertyp';
-$labels['personalfolder'] = 'Privater Ordner';
-$labels['otherfolder'] = 'Order eines anderen Benutzers';
-$labels['sharedfolder'] = 'Öffentlicher Ordner';
+$labels['personalfolder'] = 'Privater Ordner';
+$labels['otherfolder'] = 'Order eines anderen Benutzers';
+$labels['sharedfolder'] = 'Öffentlicher Ordner';
$labels['sortby'] = 'Sortieren nach';
$labels['sortasc'] = 'aufsteigend sortieren';
$labels['sortdesc'] = 'absteigend sortieren';
@@ -494,4 +494,7 @@ $labels['vietnamese'] = 'Vietnamesisch';
$labels['japanese'] = 'Japanisch';
$labels['korean'] = 'Koreanisch';
$labels['chinese'] = 'Chinesisch';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/de_CH/messages.inc b/program/localization/de_CH/messages.inc
index 63a1411d0..440a95ac4 100644
--- a/program/localization/de_CH/messages.inc
+++ b/program/localization/de_CH/messages.inc
@@ -22,6 +22,7 @@ $messages['sessionerror'] = 'Ihre Session ist ungültig oder abgelaufen';
$messages['storageerror'] = 'Keine Verbindung zum IMAP Server';
$messages['servererror'] = 'Serverfehler!';
$messages['servererrormsg'] = 'Serverfehler: $msg';
+$messages['connerror'] = 'Verbindungsfehler (Server nicht erreichbar)!';
$messages['dberror'] = 'Datenbankfehler!';
$messages['requesttimedout'] = 'Zeitlimit überschritten';
$messages['errorreadonly'] = 'Die Aktion kann nicht ausgeführt werden. Der Ordner ist schreibgeschützt.';
@@ -92,6 +93,7 @@ $messages['contactsearchsuccessful'] = '$nr Kontakte gefunden.';
$messages['searchnomatch'] = 'Die Suche lieferte keine Treffer.';
$messages['searching'] = 'Suche...';
$messages['checking'] = 'Überprüfung...';
+$messages['stillsearching'] = 'Suche läuft...';
$messages['nospellerrors'] = 'Keine Rechtschreibfehler gefunden.';
$messages['folderdeleted'] = 'Der Ordner wurde erfolgreich gelöscht.';
$messages['foldersubscribed'] = 'Der Ordner wurde erfolgreich abonniert.';
@@ -135,7 +137,7 @@ $messages['importmessagesuccess'] = '$nr Nachricht(n) erfolgreich importiert';
$messages['importmessageerror'] = 'Import fehlgeschlagen! Die hochgeladene Datei ist keine E-Mail-Nachricht oder Mailbox-Datei.';
$messages['opnotpermitted'] = 'Operation nicht erlaubt!';
$messages['nofromaddress'] = 'Fehlende E-Mail-Adresse in ausgewählter Identität.';
-$messages['editorwarning'] = 'Beim Wechseln in den Texteditor gehen alle Textformatierungen verloren. Möchten Sie fortfahren?';
+$messages['editorwarning'] = 'Ein Wechsel des Editors kann zu Verlust der Textformatierungen führen. Wollen Sie fortfahren?';
$messages['httpreceivedencrypterror'] = 'Ein gravierender Konfigurationsfehler ist aufgetreten. Kontaktieren Sie den Server-Administrator. <b>Die Nachricht wurde nicht gesendet!</b>';
$messages['smtpconnerror'] = 'SMTP Fehler ($code): Die Verbindung ist fehlgeschlagen.';
$messages['smtpautherror'] = 'SMTP Fehler ($code): Die Authentisierung ist fehlgeschlagen.';
diff --git a/program/localization/de_DE/csv2vcard.inc b/program/localization/de_DE/csv2vcard.inc
new file mode 100644
index 000000000..fa3317bab
--- /dev/null
+++ b/program/localization/de_DE/csv2vcard.inc
@@ -0,0 +1,99 @@
+<?php
+
+/*
++-----------------------------------------------------------------------+
+| localization/de_DE/csv2vcard.inc |
+| |
+| Localization file of the Roundcube Webmail client |
+| Copyright (C) 2005-2014, The Roundcube Dev Team |
+| |
+| Licensed under the GNU General Public License version 3 or |
+| any later version with exceptions for skins & plugins. |
+| See the README file for a full license statement. |
+| |
++-----------------------------------------------------------------------+
+| Author: Aleksander Machniak <alec@alec.pl> |
++-----------------------------------------------------------------------+
+*/
+$map = array();
+$map['anniversary'] = "Jahrestag";
+$map['assistants_name'] = "Name Assistent";
+$map['assistants_phone'] = "Telefon Assistent";
+$map['birthday'] = "Geburtstag";
+$map['business_city'] = "Ort geschäftlich";
+$map['business_countryregion'] = "Region geschäftlich";
+$map['business_fax'] = "Fax geschäftlich";
+$map['business_phone'] = "Telefon geschäftlich";
+$map['business_phone_2'] = "Telefon geschäftlich 2";
+$map['business_postal_code'] = "Postleitzahl geschäftlich";
+$map['business_state'] = "Land geschäftlich";
+$map['business_street'] = "Straße geschäftlich";
+$map['car_phone'] = "Autotelefon";
+$map['categories'] = "Kategorien";
+$map['company'] = "Firma";
+$map['department'] = "Abteilung";
+$map['email_address'] = "E-Mail-Adresse";
+$map['first_name'] = "Vorname";
+$map['gender'] = "Geschlecht";
+$map['home_city'] = "Ort privat";
+$map['home_countryregion'] = "Region privat";
+$map['home_fax'] = "Fax privat";
+$map['home_phone'] = "Telefon privat";
+$map['home_phone_2'] = "Telefon privat 2";
+$map['home_postal_code'] = "Postleitzahl privat";
+$map['home_state'] = "Land privat";
+$map['home_street'] = "Straße privat";
+$map['job_title'] = "Position";
+$map['last_name'] = "Nachname";
+$map['managers_name'] = "Manager's Name";
+$map['middle_name'] = "Weitere Vornamen";
+$map['mobile_phone'] = "Mobiltelefon";
+$map['notes'] = "Notizen";
+$map['other_city'] = "Weiterer Ort";
+$map['other_countryregion'] = "Weitere Region";
+$map['other_fax'] = "Weiteres Fax";
+$map['other_phone'] = "Weiteres Telefon";
+$map['other_postal_code'] = "Weitere Postleitzahl";
+$map['other_state'] = "Weiteres Land";
+$map['other_street'] = "Weitere Straße";
+$map['pager'] = "Pager";
+$map['primary_phone'] = "Haupttelefon";
+$map['spouse'] = "Spouse";
+$map['suffix'] = "Suffix";
+$map['title'] = "Title";
+$map['web_page'] = "Webseite";
+$map['birth_day'] = "Geburtstag";
+$map['birth_month'] = "Geburtsmonat";
+$map['birth_year'] = "Geburtsjahr";
+$map['display_name'] = "Anzeigename";
+$map['fax_number'] = "Fax-Nummer";
+$map['home_address'] = "Privat: Adresse";
+$map['home_country'] = "Privat: Land";
+$map['home_zipcode'] = "Privat: PLZ";
+$map['mobile_number'] = "Mobil-Tel.-Nr.";
+$map['nickname'] = "Spitzname";
+$map['organization'] = "Organisation";
+$map['pager_number'] = "Pager-Nummer";
+$map['primary_email'] = "Primäre E-Mail-Adresse";
+$map['secondary_email'] = "Sekundäre E-Mail-Adresse";
+$map['web_page_1'] = "Webseite 1";
+$map['web_page_2'] = "Webseite 2";
+$map['work_phone'] = "Tel. dienstlich";
+$map['work_address'] = "Dienstlich: Adresse";
+$map['work_country'] = "Dienstlich: Land";
+$map['work_zipcode'] = "Dienstlich: PLZ";
+$map['date_of_birth'] = "Date of Birth";
+$map['email'] = "Email";
+$map['home_mobile'] = "Home Mobile";
+$map['home_zip'] = "Home Zip";
+$map['info'] = "Info";
+$map['user_photo'] = "User Photo";
+$map['url'] = "URL";
+$map['work_city'] = "Work City";
+$map['work_company'] = "Work Company";
+$map['work_dept'] = "Work Dept";
+$map['work_fax'] = "Work Fax";
+$map['work_mobile'] = "Work Mobile";
+$map['work_state'] = "Work State";
+$map['work_title'] = "Work Title";
+$map['work_zip'] = "Work Zip";
diff --git a/program/localization/de_DE/labels.inc b/program/localization/de_DE/labels.inc
index e0a347e42..d56ee59c3 100644
--- a/program/localization/de_DE/labels.inc
+++ b/program/localization/de_DE/labels.inc
@@ -131,16 +131,24 @@ $labels['moreactions'] = 'Mehr...';
$labels['more'] = 'Mehr';
$labels['back'] = 'Zurück';
$labels['options'] = 'Optionen';
+$labels['first'] = 'Erste(r)';
+$labels['last'] = 'Letzte(r)';
+$labels['previous'] = 'Vorherige(r)';
+$labels['next'] = 'Nächste(r)';
$labels['select'] = 'Auswahl';
$labels['all'] = 'Alle';
$labels['none'] = 'Keine';
$labels['currpage'] = 'Aktuelle Seite';
+$labels['isread'] = 'Gelesen';
$labels['unread'] = 'Ungelesene';
$labels['flagged'] = 'Markierte';
+$labels['unflagged'] = 'Nicht gekennzeichnet';
$labels['unanswered'] = 'Unbeantwortete';
$labels['withattachment'] = 'Mit Anhang';
$labels['deleted'] = 'Gelöschte';
$labels['undeleted'] = 'Nicht gelöscht';
+$labels['replied'] = 'Beantwortet';
+$labels['forwarded'] = 'Weitergeleitet';
$labels['invert'] = 'Invertieren';
$labels['filter'] = 'Filter';
$labels['list'] = 'Liste';
@@ -171,6 +179,11 @@ $labels['importmessages'] = 'Nachrichten importieren';
$labels['quota'] = 'Speicherplatz';
$labels['unknown'] = 'unbekannt';
$labels['unlimited'] = 'unbegrenzt';
+$labels['quotatype'] = 'Kapazitätstyp';
+$labels['quotatotal'] = 'Limit';
+$labels['quotaused'] = 'Verwendet';
+$labels['quotastorage'] = 'Festplattenspeicher';
+$labels['quotamessage'] = 'Nachrichtenanzahl';
$labels['quicksearch'] = 'Schnellsuche';
$labels['resetsearch'] = 'Suche zurücksetzen';
$labels['searchmod'] = 'Suchkriterien ändern';
@@ -178,6 +191,10 @@ $labels['msgtext'] = 'Nachricht';
$labels['body'] = 'Inhalt';
$labels['type'] = 'Typ';
$labels['namex'] = 'Name';
+$labels['searchscope'] = 'Bereich';
+$labels['currentfolder'] = 'Aktueller Ordner';
+$labels['subfolders'] = 'Dieser und alle Unterordner';
+$labels['allfolders'] = 'Alle Ordner';
$labels['openinextwin'] = 'In neuem Fenster öffnen';
$labels['emlsave'] = 'Lokal speichern (.eml)';
$labels['changeformattext'] = 'Als reiner Text anzeigen';
@@ -193,6 +210,10 @@ $labels['returnreceipt'] = 'Empfangsbestätigung (MDN)';
$labels['dsn'] = 'Übermittlungsbestätigung (DSN)';
$labels['mailreplyintro'] = 'Am $date, schrieb $sender:';
$labels['originalmessage'] = 'Originalnachricht';
+$labels['selectimage'] = 'Bild auswählen';
+$labels['addimage'] = 'Bild hinzufügen';
+$labels['selectmedia'] = 'Film auswählen';
+$labels['addmedia'] = 'Film hinzufügen';
$labels['editidents'] = 'Absender ändern';
$labels['spellcheck'] = 'Rechtschreibung';
$labels['checkspelling'] = 'Rechtschreibung prüfen';
@@ -203,9 +224,10 @@ $labels['restoremessage'] = 'Nachricht wiederherstellen?';
$labels['responses'] = 'Schnellantworten';
$labels['insertresponse'] = 'Schnellantwort hinzufügen';
$labels['manageresponses'] = 'Schnellantworten verwalten';
-$labels['savenewresponse'] = 'Neue Schnellantwort speichern';
-$labels['editresponses'] = 'Schnellantworten bearbeiten';
+$labels['newresponse'] = 'Neue Antwort erstellen';
+$labels['addresponse'] = 'Antwort hinzufügen';
$labels['editresponse'] = 'Schnellantwort bearbeiten';
+$labels['editresponses'] = 'Schnellantworten bearbeiten';
$labels['responsename'] = 'Name';
$labels['responsetext'] = 'Text der Antwort';
$labels['attach'] = 'Anhängen';
@@ -214,6 +236,7 @@ $labels['upload'] = 'Hochladen';
$labels['uploadprogress'] = '$percent ($current von $total)';
$labels['close'] = 'Schließen';
$labels['messageoptions'] = 'Optionen...';
+$labels['togglecomposeoptions'] = 'Zusammenstellungsoptionen auswählen';
$labels['low'] = 'Niedrig';
$labels['lowest'] = 'Niedrigste';
$labels['normal'] = 'Normal';
@@ -270,6 +293,7 @@ $labels['assistant'] = 'Assistenz';
$labels['spouse'] = 'Partner/in';
$labels['allfields'] = 'Alle Felder';
$labels['search'] = 'Suche';
+$labels['searchfor'] = 'Suche nach "$q"';
$labels['advsearch'] = 'Detaillierte Suche';
$labels['advanced'] = 'Erweitert';
$labels['other'] = 'Andere';
@@ -292,7 +316,9 @@ $labels['addcontact'] = 'Kontakt hinzufügen';
$labels['editcontact'] = 'Kontakt bearbeiten';
$labels['contacts'] = 'Kontakte';
$labels['contactproperties'] = 'Kontaktdaten';
+$labels['contactnameandorg'] = 'Name und Organisation';
$labels['personalinfo'] = 'Persönliche Informationen';
+$labels['contactphoto'] = 'Foto des Kontakts';
$labels['edit'] = 'Bearbeiten';
$labels['cancel'] = 'Abbrechen';
$labels['save'] = 'Speichern';
@@ -310,10 +336,11 @@ $labels['export'] = 'Exportieren';
$labels['exportall'] = 'Alles exportieren';
$labels['exportsel'] = 'Auswahl exportieren';
$labels['exportvcards'] = 'Kontakte im vCard-Format exportieren';
-$labels['newcontactgroup'] = 'Neue Kontaktgruppe erstellen';
+$labels['newgroup'] = 'Neue Gruppe erstellen';
$labels['grouprename'] = 'Gruppe umbenennen';
$labels['groupdelete'] = 'Gruppe löschen';
$labels['groupremoveselected'] = 'Gewählte Kontakte aus Gruppe entfernen';
+$labels['uponelevel'] = 'Eine Ebene nach oben';
$labels['previouspage'] = 'Seite zurück';
$labels['firstpage'] = 'Erste Seite';
$labels['nextpage'] = 'Nächste Seite';
@@ -340,10 +367,10 @@ $labels['preferences'] = 'Einstellungen';
$labels['userpreferences'] = 'Benutzereinstellungen';
$labels['editpreferences'] = 'Benutzereinstellungen bearbeiten';
$labels['identities'] = 'Identitäten';
-$labels['manageidentities'] = 'Absender für dieses Konto verwalten';
-$labels['newidentity'] = 'Neuer Absender';
-$labels['newitem'] = 'Neuer Eintrag';
-$labels['edititem'] = 'Eintrag bearbeiten';
+$labels['manageidentities'] = 'Identitäten verwalten';
+$labels['newidentity'] = 'Neue Identität erstellen';
+$labels['addidentity'] = 'Identität hinzufügen';
+$labels['editidentity'] = 'Identität bearbeiten';
$labels['preferhtml'] = 'HTML anzeigen';
$labels['defaultcharset'] = 'Standard Zeichensatz';
$labels['htmlmessage'] = 'HTML-Nachricht';
@@ -400,7 +427,9 @@ $labels['2231folding'] = 'vollständig RFC 2231 kompatibel (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 kompatibel (Microsoft Outlook)';
$labels['2047folding'] = 'vollständig RFC 2047 kompatibel (andere)';
$labels['force7bit'] = 'MIME-Kodierung für 8-bit Zeichen';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'Erweiterte Einstellungen';
+$labels['toggleadvancedoptions'] = 'Erweiterte Optionen auswählen';
$labels['focusonnewmessage'] = 'Fokussiere Browserfenster bei neuen Nachrichten';
$labels['checkallfolders'] = 'Alle Ordner auf neue Nachrichten prüfen';
$labels['displaynext'] = 'Zeige nächste Nachricht nach verschieben/löschen';
@@ -442,14 +471,14 @@ $labels['asattachment'] = 'als Anhang';
$labels['replyallmode'] = 'Standardaktion des "Allen antworten" Button';
$labels['replyalldefault'] = 'Allen antworten';
$labels['replyalllist'] = 'Nur der Mailingliste antworten (wenn gefunden)';
-$labels['folder'] = 'Ordner';
-$labels['folders'] = 'Ordner';
-$labels['foldername'] = 'Ordnername';
-$labels['subscribed'] = 'Abonniert';
+$labels['folder'] = 'Ordner';
+$labels['folders'] = 'Ordner';
+$labels['foldername'] = 'Ordnername';
+$labels['subscribed'] = 'Abonniert';
$labels['messagecount'] = 'Nachrichten';
-$labels['create'] = 'Erstellen';
-$labels['createfolder'] = 'Neuen Ordner erstellen';
-$labels['managefolders'] = 'Ordner verwalten';
+$labels['create'] = 'Erstellen';
+$labels['createfolder'] = 'Neuen Ordner erstellen';
+$labels['managefolders'] = 'Ordner verwalten';
$labels['specialfolders'] = 'Spezialordner';
$labels['properties'] = 'Eigenschaften';
$labels['folderproperties'] = 'Ordnereigenschaften';
@@ -459,9 +488,9 @@ $labels['info'] = 'Informationen';
$labels['getfoldersize'] = 'Ordnergröße anzeigen';
$labels['changesubscription'] = 'Abonnieren';
$labels['foldertype'] = 'Ordnertyp';
-$labels['personalfolder'] = 'Privater Ordner';
-$labels['otherfolder'] = 'Ordner eines anderen Benutzers';
-$labels['sharedfolder'] = 'Öffentlicher Ordner';
+$labels['personalfolder'] = 'Privater Ordner';
+$labels['otherfolder'] = 'Ordner eines anderen Benutzers';
+$labels['sharedfolder'] = 'Öffentlicher Ordner';
$labels['sortby'] = 'Sortieren nach';
$labels['sortasc'] = 'Aufsteigend sortieren';
$labels['sortdesc'] = 'Absteigend sortieren';
@@ -494,4 +523,43 @@ $labels['vietnamese'] = 'Vietnamesisch';
$labels['japanese'] = 'Japanisch';
$labels['korean'] = 'Koreanisch';
$labels['chinese'] = 'Chinesisch';
+$labels['arialabeltopnav'] = 'Fensterkontrolle';
+$labels['arialabeltasknav'] = 'Anwendungsaufgaben';
+$labels['arialabeltoolbar'] = 'Anwendungstoolbar';
+$labels['arialabelactivetask'] = 'Aktive Aufgabe';
+$labels['arialabelmessagessearchfilter'] = 'Filter für die E-Mailliste';
+$labels['arialabelmailsearchform'] = 'Suchmaske für E-Mails';
+$labels['arialabelcontactsearchform'] = 'Suchmaske für Kontakte';
+$labels['arialabelmailquicksearchbox'] = 'Eingabe für E-Mailsuche';
+$labels['arialabelquicksearchbox'] = 'Eingabe für Suche';
+$labels['arialabelfolderlist'] = 'E-Mailordnerauswahl';
+$labels['arialabelmessagelist'] = 'Liste der E-Mailnachrichten';
+$labels['arialabelmailpreviewframe'] = 'Vorschau der Nachricht';
+$labels['arialabelmailboxmenu'] = 'Aktionsmenü für Ordner';
+$labels['arialabellistselectmenu'] = 'Aktionsmenü für Listen';
+$labels['arialabelthreadselectmenu'] = 'Listenmenü für Threads';
+$labels['arialabelmessagelistoptions'] = 'Nachrichtenauflistung und Sortierungsoptionen';
+$labels['arialabelmailimportdialog'] = 'Nachrichten-Import-Dialog';
+$labels['arialabelmessagenav'] = 'Nachrichtennavigation';
+$labels['arialabelmessagebody'] = 'Nachrichten-Body';
+$labels['arialabelmessageactions'] = 'Nachrichtenaktionen';
+$labels['arialabelcontactquicksearch'] = 'Kontaktsuchformular';
+$labels['arialabelcontactsearchbox'] = 'Kontakte Sucheingabe';
+$labels['arialabelmessageheaders'] = 'Nachrichten-Header';
+$labels['arialabelforwardingoptions'] = 'Weiterleitungsoptionen';
+$labels['arialabelreplyalloptions'] = 'Allen antworten-Optionen';
+$labels['arialabelmoremessageactions'] = 'Weitere Nachrichtenaktionen';
+$labels['arialabelmarkmessagesas'] = 'Ausgewählte Nachricht markieren als...';
+$labels['arialabelattachmentuploadform'] = 'Anhang Hochladeformular';
+$labels['arialabelattachmentpreview'] = 'Anhangvorschau';
+$labels['ariasummarycomposecontacts'] = 'Liste von Kontakten und Gruppen als Empfänger';
+$labels['arialabelcontactexportoptions'] = 'Kontakt-Export-Optionen';
+$labels['arialabelabookgroupoptions'] = 'Adressbuch/Gruppen-Optionen';
+$labels['arialabelpreferencesform'] = 'Einstellungsformular';
+$labels['arialabelidentityeditfrom'] = 'Identität Bearbeitungsformular';
+$labels['arialabelresonseeditfrom'] = 'Antwort Bearbeitungsformular';
+$labels['helplistnavigation'] = 'Tastaturnavigation auflisten';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "Enter: Ausgewählten Kontakt öffnen.";
?>
diff --git a/program/localization/de_DE/messages.inc b/program/localization/de_DE/messages.inc
index d9e6d9687..8235c5882 100644
--- a/program/localization/de_DE/messages.inc
+++ b/program/localization/de_DE/messages.inc
@@ -22,7 +22,9 @@ $messages['sessionerror'] = 'Ihre Sitzung ist ungültig oder abgelaufen.';
$messages['storageerror'] = 'Verbindung zum Speicherserver fehlgeschlagen.';
$messages['servererror'] = 'Serverfehler!';
$messages['servererrormsg'] = 'Serverfehler: $msg';
+$messages['connerror'] = 'Verbindungsfehler (Fehler beim Erreichen des Servers)!';
$messages['dberror'] = 'Datenbankfehler!';
+$messages['windowopenerror'] = 'Das Popup-Fenster wurde blockiert!';
$messages['requesttimedout'] = 'Zeitüberschreitung der Anforderung';
$messages['errorreadonly'] = 'Die Aktion kann nicht ausgeführt werden. Der Ordner ist schreibgeschützt.';
$messages['errornoperm'] = 'Die Aktion kann nicht ausgeführt werden. Zugriff verweigert.';
@@ -92,6 +94,7 @@ $messages['contactsearchsuccessful'] = '$nr Kontakte gefunden.';
$messages['searchnomatch'] = 'Die Suche lieferte keine Treffer.';
$messages['searching'] = 'Suche...';
$messages['checking'] = 'Prüfe...';
+$messages['stillsearching'] = 'Suche...';
$messages['nospellerrors'] = 'Keine Rechtschreibfehler gefunden.';
$messages['folderdeleted'] = 'Ordner erfolgreich gelöscht.';
$messages['foldersubscribed'] = 'Der Ordner wurde erfolgreich abonniert.';
@@ -103,8 +106,8 @@ $messages['converting'] = 'Entferne Formatierungen...';
$messages['messageopenerror'] = 'Die Nachricht konnte nicht vom Server geladen werden.';
$messages['fileuploaderror'] = 'Hochladen der Datei fehlgeschlagen.';
$messages['filesizeerror'] = 'Die hochzuladende Datei überschreitet die Maximalgröße von $size.';
-$messages['copysuccess'] = 'Erfolgreich kopiert $ nr Kontakte.';
-$messages['movesuccess'] = 'Erfolgreich verschoben $ nr Kontakte.';
+$messages['copysuccess'] = 'Erfolgreich kopiert $nr Kontakte.';
+$messages['movesuccess'] = 'Erfolgreich verschoben $nr Kontakte.';
$messages['copyerror'] = 'Die Kontakte konnten nicht kopiert werden.';
$messages['moveerror'] = 'Die Kontakte konnten nicht verschoben werden.';
$messages['sourceisreadonly'] = 'Das Adressverzeichnis kann nicht verändert werden.';
@@ -135,7 +138,7 @@ $messages['importmessagesuccess'] = 'Nachrichten $nr erfolgreich importiert';
$messages['importmessageerror'] = 'Import fehlgeschlagen! Die hochgeladene Datei ist keine gültige Importdatei.';
$messages['opnotpermitted'] = 'Operation nicht erlaubt!';
$messages['nofromaddress'] = 'Fehlende E-Mail-Adresse in ausgewählter Identität.';
-$messages['editorwarning'] = 'Beim Wechseln in den Texteditor gehen alle Textformatierungen verloren. Möchten Sie fortfahren?';
+$messages['editorwarning'] = 'Wenn sie den Editor wechseln, könnten Textformatierungen verloren gehen. Möchten sie fortfahren?';
$messages['httpreceivedencrypterror'] = 'Ein fataler Konfigurationsfehler ist aufgetreten. Kontaktieren Sie bitte sofort Ihren Administrator. <b>Ihre Nachricht konnte nicht versendet werden.</b>';
$messages['smtpconnerror'] = 'SMTP Fehler ($code): Die Verbindung ist fehlgeschlagen.';
$messages['smtpautherror'] = 'SMTP Fehler ($code): Die Authentisierung ist fehlgeschlagen.';
diff --git a/program/localization/el_GR/labels.inc b/program/localization/el_GR/labels.inc
index b22b3f3d5..f4bad74bc 100644
--- a/program/localization/el_GR/labels.inc
+++ b/program/localization/el_GR/labels.inc
@@ -178,6 +178,9 @@ $labels['msgtext'] = 'Σε όλο το μήνυμα';
$labels['body'] = 'Σώμα';
$labels['type'] = 'Τυπος';
$labels['namex'] = 'όνομα';
+$labels['currentfolder'] = 'Τρέχων φάκελος';
+$labels['subfolders'] = 'Αυτός και υποφάκελοι';
+$labels['allfolders'] = 'Όλοι οι φάκελοι';
$labels['openinextwin'] = 'Άνοιγμα σε νέο παράθυρο';
$labels['emlsave'] = 'Λήψη αρχείου (.eml)';
$labels['changeformattext'] = 'Εμφάνιση σε μορφή απλού κειμένου';
@@ -193,6 +196,8 @@ $labels['returnreceipt'] = 'Αναφορά Παράδοσης';
$labels['dsn'] = 'Κατάσταση αναφοράς παράδοσης';
$labels['mailreplyintro'] = 'Στις $date, $sender έγραψε:';
$labels['originalmessage'] = 'Αρχικό μήνυμα';
+$labels['selectimage'] = 'Επιλογή εικόνας';
+$labels['addimage'] = 'Προσθήκη εικόνας';
$labels['editidents'] = 'Επεξεργασία ταυτοτήτων';
$labels['spellcheck'] = 'Συλλαβισμός';
$labels['checkspelling'] = 'Έλεγχος ορθογραφίας';
@@ -203,9 +208,8 @@ $labels['restoremessage'] = 'Επαναφορά μηνύματος;';
$labels['responses'] = 'Απαντήσεις';
$labels['insertresponse'] = 'Εισάγετε μια απάντηση';
$labels['manageresponses'] = 'Διαχείριση απαντήσεων';
-$labels['savenewresponse'] = 'Αποθήκευση νέας απάντησης';
-$labels['editresponses'] = 'Μεταβολή απαντήσεων';
$labels['editresponse'] = 'Μεταβολή απάντησης';
+$labels['editresponses'] = 'Μεταβολή απαντήσεων';
$labels['responsename'] = 'Όνομα';
$labels['responsetext'] = 'Κείμενο απάντησης';
$labels['attach'] = 'Επισύναψη';
@@ -270,6 +274,7 @@ $labels['assistant'] = 'Υπάλληλος';
$labels['spouse'] = 'Σύζυγος';
$labels['allfields'] = 'Όλα τα πεδία';
$labels['search'] = 'Αναζήτηση';
+$labels['searchfor'] = 'Αναζήτηση για "$q"';
$labels['advsearch'] = 'Προηγμένη Αναζήτηση';
$labels['advanced'] = 'Προχωρημένες ρυθμίσεις';
$labels['other'] = 'Άλλα';
@@ -288,7 +293,6 @@ $labels['typehomepage'] = 'Αρχική Σελίδα';
$labels['typeblog'] = 'Ιστολόγιο';
$labels['typeprofile'] = 'Προφίλ';
$labels['addfield'] = 'Προσθήκη πεδίου...';
-$labels['addcontact'] = 'Προσθήκη νέας επαφής';
$labels['editcontact'] = 'Επεξεργασία επαφής';
$labels['contacts'] = 'Επαφές';
$labels['contactproperties'] = 'Ιδιότητες επαφών';
@@ -301,7 +305,6 @@ $labels['rename'] = 'Μετονομασία';
$labels['addphoto'] = 'Προσθήκη';
$labels['replacephoto'] = 'Αντικατάσταση';
$labels['uploadphoto'] = 'Φόρτωση εικόνας';
-$labels['newcontact'] = 'Δημιουργία νέας κάρτας επαφής';
$labels['deletecontact'] = 'Διαγραφή επιλεγμένων επαφών';
$labels['composeto'] = 'Σύνθεση μηνύματος προς';
$labels['contactsfromto'] = 'Επαφή $from από $to έως $count';
@@ -310,7 +313,6 @@ $labels['export'] = 'Εξαγωγή';
$labels['exportall'] = 'Εξαγωγή όλων';
$labels['exportsel'] = 'Εξαγωγή επιλεγμένων';
$labels['exportvcards'] = 'Εξαγωγή επαφών σε vCard';
-$labels['newcontactgroup'] = 'Δημιουργία νέας Ομάδας επαφών';
$labels['grouprename'] = 'Μετονομασία ομάδας';
$labels['groupdelete'] = 'Διαγραφή ομάδας';
$labels['groupremoveselected'] = 'Αφαίρεση επιλεγμένων επαφών από την ομάδα';
@@ -321,7 +323,7 @@ $labels['lastpage'] = 'Εμφάνιση της τελευταίας σελ
$labels['group'] = 'Ομάδα';
$labels['groups'] = 'Ομάδες';
$labels['listgroup'] = 'Μέλη της ομάδας λίστας';
-$labels['personaladrbook'] = 'Προσωπικές Διυθύνσεις';
+$labels['personaladrbook'] = 'Προσωπικές Διευθύνσεις';
$labels['searchsave'] = 'Αποθήκευση αναζήτησης';
$labels['searchdelete'] = 'Διαγραφή αποθηκευμένης αναζήτησης';
$labels['import'] = 'Εισαγωγή';
@@ -340,10 +342,6 @@ $labels['preferences'] = 'Προτιμήσεις';
$labels['userpreferences'] = 'Προτιμήσεις χρήστη';
$labels['editpreferences'] = 'Επεξεργασία προτιμήσεων χρήστη';
$labels['identities'] = 'Ταυτότητες';
-$labels['manageidentities'] = 'Διαχείριση ταυτοτήτων για αυτόν το λογαριασμό';
-$labels['newidentity'] = 'Νέα ταυτότητα';
-$labels['newitem'] = 'Νέο αντικείμενο';
-$labels['edititem'] = 'Επεξεργασία αντικειμένου';
$labels['preferhtml'] = 'Προβολή σε HTML';
$labels['defaultcharset'] = 'Προεπιλεγμένη κωδικοποίηση χαρακτήρων';
$labels['htmlmessage'] = 'Μήνυμα σε μορφή HTML';
@@ -400,6 +398,7 @@ $labels['2231folding'] = 'Full RFC 2231 (μορφή Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (μορφή MS Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (άλλη μορφή)';
$labels['force7bit'] = 'Να γίνεται χρήση της κωδικοποίησης MIME για τους χαρακτήρες 8-bit';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'Προχωρημένες επιλογές';
$labels['focusonnewmessage'] = 'Τα νέα μηνύματα να επιλέγονται αυτόματα';
$labels['checkallfolders'] = 'Να γίνεται έλεγχος σε όλους τους φακέλους για νέα μηνύματα';
@@ -442,14 +441,14 @@ $labels['asattachment'] = 'σαν επισύναψη';
$labels['replyallmode'] = 'Προεπιλεγμένη ενέργεια του κουμπιού [Απάντηση σε όλους]';
$labels['replyalldefault'] = 'απάντηση σε όλους';
$labels['replyalllist'] = 'Απάντηση μόνο σε λίστα e-mail (αν υπάρχει)';
-$labels['folder'] = 'Φάκελος';
-$labels['folders'] = 'Φάκελοι';
-$labels['foldername'] = 'Όνομα φακέλου';
-$labels['subscribed'] = 'Εγγεγραμμένος';
+$labels['folder'] = 'Φάκελος';
+$labels['folders'] = 'Φάκελοι';
+$labels['foldername'] = 'Όνομα φακέλου';
+$labels['subscribed'] = 'Εγγεγραμμένος';
$labels['messagecount'] = 'Μηνύματα';
-$labels['create'] = 'Δημιουργία';
-$labels['createfolder'] = 'Δημιουργία νέου φακέλου';
-$labels['managefolders'] = 'Διαχείριση φακέλων';
+$labels['create'] = 'Δημιουργία';
+$labels['createfolder'] = 'Δημιουργία νέου φακέλου';
+$labels['managefolders'] = 'Διαχείριση φακέλων';
$labels['specialfolders'] = 'Ειδικοί Φάκελοι';
$labels['properties'] = 'Ιδιότητες';
$labels['folderproperties'] = 'Ιδιότητες φακέλου';
@@ -459,9 +458,9 @@ $labels['info'] = 'Πληροφορίες';
$labels['getfoldersize'] = 'Κάντε κλικ εδώ για να δείτε το μέγεθος του φακέλου';
$labels['changesubscription'] = 'Κάντε κλικ εδώ για να αλλάξετε τη συνδρομή σας';
$labels['foldertype'] = 'Τύπος φακέλου';
-$labels['personalfolder'] = 'Προσωπικός φάκελος';
-$labels['otherfolder'] = 'Φάκελοι άλλων χρηστών';
-$labels['sharedfolder'] = 'Κοινόχρηστος φάκελος';
+$labels['personalfolder'] = 'Προσωπικός φάκελος';
+$labels['otherfolder'] = 'Φάκελοι άλλων χρηστών';
+$labels['sharedfolder'] = 'Κοινόχρηστος φάκελος';
$labels['sortby'] = 'Ταξινόμηση κατά';
$labels['sortasc'] = 'Αύξουσα ταξινόμηση';
$labels['sortdesc'] = 'Φθίνουσα ταξινόμηση';
@@ -494,4 +493,7 @@ $labels['vietnamese'] = 'Βιετναμέζικα';
$labels['japanese'] = 'Ιαπωνικά';
$labels['korean'] = 'Κορεατικά';
$labels['chinese'] = 'Κινεζικά';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/el_GR/messages.inc b/program/localization/el_GR/messages.inc
index 2c38f5fff..364dc6c09 100644
--- a/program/localization/el_GR/messages.inc
+++ b/program/localization/el_GR/messages.inc
@@ -22,6 +22,7 @@ $messages['sessionerror'] = 'Η συνεδρία σας είναι άκυρη ή
$messages['storageerror'] = 'Η σύνδεση με το διακομιστή αποθήκευσης απέτυχε.';
$messages['servererror'] = 'Σφάλμα του εξυπηρετητή!';
$messages['servererrormsg'] = 'Σφάλμα εξυπηρετητή: $msg';
+$messages['connerror'] = 'Σφάλμα σύνδεσης (Αποτυχία πρόσβασης στον διακομιστή)!';
$messages['dberror'] = 'Σφάλμα βάσης δεδομένων!';
$messages['requesttimedout'] = 'Το αίτημα εξέπνευσε χρονικά';
$messages['errorreadonly'] = 'Η διαδικασία δεν μπορεί να ολοκληρωθεί. Ο φάκελος είναι μόνο για ανάγνωση.';
@@ -92,6 +93,7 @@ $messages['contactsearchsuccessful'] = 'Βρέθηκαν $nr επαφές.';
$messages['searchnomatch'] = 'Η αναζήτηση δεν επέστρεψε αποτελέσματα.';
$messages['searching'] = 'Αναζήτηση...';
$messages['checking'] = 'Έλεγχος...';
+$messages['stillsearching'] = 'Αναζήτηση...';
$messages['nospellerrors'] = 'Δεν βρέθηκαν ορθογραφικά λάθη.';
$messages['folderdeleted'] = 'Ο φάκελος διαγράφηκε επιτυχώς.';
$messages['foldersubscribed'] = 'Ο φάκελος εχει εγγραφεί με επιτυχία.';
@@ -135,7 +137,7 @@ $messages['importmessagesuccess'] = 'Επιτυχής εισαγωγή $nr μη
$messages['importmessageerror'] = 'Η εισαγωγή απέτυχε! Το ανεβασμένο αρχείο δεν είναι έγκυρο αρχείο μηνύματος ή φακέλου μηνυμάτων.';
$messages['opnotpermitted'] = 'Η λειτουργία δεν επιτρέπεται!';
$messages['nofromaddress'] = 'Άδεια διεύθυνση e-mail στην επιλεγμένη ταυτότητα.';
-$messages['editorwarning'] = 'Η μετάβαση στην επεξεργασία απλού κειμένου θα προκαλέσει κατάργηση της μορφοποίησης. Είστε βέβαιοι πως θέλετε να συνεχίσετε;';
+$messages['editorwarning'] = 'Η αλλαγή του τύπου επεξεργασίας μπορεί να προκαλέσει απώλεια της μορφοποίησης κειμένου. Είστε βέβαιοι πως θέλετε να συνεχίσετε;';
$messages['httpreceivedencrypterror'] = 'Ανεπανόρθωτο σφάλμα. Επικοινωνήστε με το διαχειριστή του εξυπηρετητή. <b>Το μήνυμά σας δεν στάλθηκε.</b>';
$messages['smtpconnerror'] = 'Σφάλμα SMTP ($code): Απέτυχε η σύνδεση με τον εξυπηρετητή.';
$messages['smtpautherror'] = 'Σφάλμα SMTP ($code): Σφάλμα ταυτοποίησης.';
diff --git a/program/localization/en_CA/labels.inc b/program/localization/en_CA/labels.inc
index c1c62ff01..2e94970e8 100644
--- a/program/localization/en_CA/labels.inc
+++ b/program/localization/en_CA/labels.inc
@@ -52,6 +52,7 @@ $labels['fromtoshort'] = '$from – $to of $count';
$labels['copy'] = 'Copy';
$labels['move'] = 'Move';
$labels['moveto'] = 'Move to...';
+$labels['copyto'] = 'Copy to...';
$labels['download'] = 'Download';
$labels['open'] = 'Open';
$labels['showattachment'] = 'Show';
@@ -177,6 +178,10 @@ $labels['msgtext'] = 'Entire message';
$labels['body'] = 'Body';
$labels['type'] = 'Type';
$labels['namex'] = 'Name';
+$labels['searchscope'] = 'Scope';
+$labels['currentfolder'] = 'Current folder';
+$labels['subfolders'] = 'This and subfolders';
+$labels['allfolders'] = 'All folders';
$labels['openinextwin'] = 'Open in new window';
$labels['emlsave'] = 'Download (.eml)';
$labels['changeformattext'] = 'Display in plain text format';
@@ -202,9 +207,8 @@ $labels['restoremessage'] = 'Restore message?';
$labels['responses'] = 'Responses';
$labels['insertresponse'] = 'Insert a response';
$labels['manageresponses'] = 'Manage responses';
-$labels['savenewresponse'] = 'Save new response';
-$labels['editresponses'] = 'Edit responses';
$labels['editresponse'] = 'Edit response';
+$labels['editresponses'] = 'Edit responses';
$labels['responsename'] = 'Name';
$labels['responsetext'] = 'Response Text';
$labels['attach'] = 'Attach';
@@ -269,6 +273,7 @@ $labels['assistant'] = 'Assistant';
$labels['spouse'] = 'Spouse';
$labels['allfields'] = 'All fields';
$labels['search'] = 'Search';
+$labels['searchfor'] = 'Search for "$q"';
$labels['advsearch'] = 'Advanced Search';
$labels['advanced'] = 'Advanced';
$labels['other'] = 'Other';
@@ -287,7 +292,6 @@ $labels['typehomepage'] = 'Home Page';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profile';
$labels['addfield'] = 'Add field...';
-$labels['addcontact'] = 'Add new contact';
$labels['editcontact'] = 'Edit contact';
$labels['contacts'] = 'Contacts';
$labels['contactproperties'] = 'Contact properties';
@@ -300,7 +304,6 @@ $labels['rename'] = 'Rename';
$labels['addphoto'] = 'Add';
$labels['replacephoto'] = 'Replace';
$labels['uploadphoto'] = 'Upload photo';
-$labels['newcontact'] = 'Create new contact card';
$labels['deletecontact'] = 'Delete selected contacts';
$labels['composeto'] = 'Compose mail to';
$labels['contactsfromto'] = 'Contacts $from to $to of $count';
@@ -309,7 +312,6 @@ $labels['export'] = 'Export';
$labels['exportall'] = 'Export all';
$labels['exportsel'] = 'Export selected';
$labels['exportvcards'] = 'Export contacts in vCard format';
-$labels['newcontactgroup'] = 'Create new contact group';
$labels['grouprename'] = 'Rename group';
$labels['groupdelete'] = 'Delete group';
$labels['groupremoveselected'] = 'Remove selected contacts from group';
@@ -339,10 +341,6 @@ $labels['preferences'] = 'Preferences';
$labels['userpreferences'] = 'User preferences';
$labels['editpreferences'] = 'Edit user preferences';
$labels['identities'] = 'Identities';
-$labels['manageidentities'] = 'Manage identities for this account';
-$labels['newidentity'] = 'New identity';
-$labels['newitem'] = 'New item';
-$labels['edititem'] = 'Edit item';
$labels['preferhtml'] = 'Display HTML';
$labels['defaultcharset'] = 'Default Character Set';
$labels['htmlmessage'] = 'HTML Message';
@@ -399,6 +397,7 @@ $labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (other)';
$labels['force7bit'] = 'Use MIME encoding for 8-bit characters';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'Advanced options';
$labels['focusonnewmessage'] = 'Focus browser window on new message';
$labels['checkallfolders'] = 'Check all folders for new messages';
@@ -441,14 +440,14 @@ $labels['asattachment'] = 'as attachment';
$labels['replyallmode'] = 'Default action of [Reply all] button';
$labels['replyalldefault'] = 'reply to all';
$labels['replyalllist'] = 'reply to mailing list only (if found)';
-$labels['folder'] = 'Folder';
-$labels['folders'] = 'Folders';
-$labels['foldername'] = 'Folder name';
-$labels['subscribed'] = 'Subscribed';
+$labels['folder'] = 'Folder';
+$labels['folders'] = 'Folders';
+$labels['foldername'] = 'Folder name';
+$labels['subscribed'] = 'Subscribed';
$labels['messagecount'] = 'Messages';
-$labels['create'] = 'Create';
-$labels['createfolder'] = 'Create new folder';
-$labels['managefolders'] = 'Manage folders';
+$labels['create'] = 'Create';
+$labels['createfolder'] = 'Create new folder';
+$labels['managefolders'] = 'Manage folders';
$labels['specialfolders'] = 'Special Folders';
$labels['properties'] = 'Properties';
$labels['folderproperties'] = 'Folder properties';
@@ -458,9 +457,9 @@ $labels['info'] = 'Information';
$labels['getfoldersize'] = 'Click to get folder size';
$labels['changesubscription'] = 'Click to change subscription';
$labels['foldertype'] = 'Folder Type';
-$labels['personalfolder'] = 'Private Folder';
-$labels['otherfolder'] = 'Other User\'s Folder';
-$labels['sharedfolder'] = 'Public Folder';
+$labels['personalfolder'] = 'Private Folder';
+$labels['otherfolder'] = 'Other User\'s Folder';
+$labels['sharedfolder'] = 'Public Folder';
$labels['sortby'] = 'Sort by';
$labels['sortasc'] = 'Sort ascending';
$labels['sortdesc'] = 'Sort descending';
@@ -493,4 +492,7 @@ $labels['vietnamese'] = 'Vietnamese';
$labels['japanese'] = 'Japanese';
$labels['korean'] = 'Korean';
$labels['chinese'] = 'Chinese';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/en_CA/messages.inc b/program/localization/en_CA/messages.inc
index 171e9afb3..4d390f5e2 100644
--- a/program/localization/en_CA/messages.inc
+++ b/program/localization/en_CA/messages.inc
@@ -22,6 +22,7 @@ $messages['sessionerror'] = 'Your session is invalid or expired.';
$messages['storageerror'] = 'Connection to storage server failed.';
$messages['servererror'] = 'Server Error!';
$messages['servererrormsg'] = 'Server Error: $msg';
+$messages['connerror'] = 'Connection Error (Failed to reach the server)!';
$messages['dberror'] = 'Database Error!';
$messages['requesttimedout'] = 'Request timed out';
$messages['errorreadonly'] = 'Unable to perform operation. Folder is read-only.';
@@ -32,6 +33,8 @@ $messages['invalidrequest'] = 'Invalid request! No data was saved.';
$messages['invalidhost'] = 'Invalid server name.';
$messages['nomessagesfound'] = 'No messages found in this mailbox.';
$messages['loggedout'] = 'You have successfully terminated the session. Good bye!';
+$messages['mailboxempty'] = 'Mailbox is empty';
+$messages['nomessages'] = 'No messages';
$messages['refreshing'] = 'Refreshing...';
$messages['loading'] = 'Loading...';
$messages['uploading'] = 'Uploading file...';
@@ -90,6 +93,7 @@ $messages['contactsearchsuccessful'] = '$nr contacts found.';
$messages['searchnomatch'] = 'Search returned no matches.';
$messages['searching'] = 'Searching...';
$messages['checking'] = 'Checking...';
+$messages['stillsearching'] = 'Still searching...';
$messages['nospellerrors'] = 'No spelling errors found.';
$messages['folderdeleted'] = 'Folder successfully deleted.';
$messages['foldersubscribed'] = 'Folder successfully subscribed.';
@@ -133,7 +137,6 @@ $messages['importmessagesuccess'] = 'Successfully imported $nr messages';
$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
$messages['opnotpermitted'] = 'Operation not permitted!';
$messages['nofromaddress'] = 'Missing e-mail address in selected identity.';
-$messages['editorwarning'] = 'Switching to the plain text editor will cause all text formatting to be lost. Do you wish to continue?';
$messages['httpreceivedencrypterror'] = 'A fatal configuration error occurred. Contact your administrator immediately. <b>Your message can not be sent.</b>';
$messages['smtpconnerror'] = 'SMTP Error ($code): Connection to server failed.';
$messages['smtpautherror'] = 'SMTP Error ($code): Authentication failed.';
diff --git a/program/localization/en_GB/labels.inc b/program/localization/en_GB/labels.inc
index 628b41bde..16c1fcc66 100644
--- a/program/localization/en_GB/labels.inc
+++ b/program/localization/en_GB/labels.inc
@@ -178,6 +178,10 @@ $labels['msgtext'] = 'Entire message';
$labels['body'] = 'Body';
$labels['type'] = 'Type';
$labels['namex'] = 'Name';
+$labels['searchscope'] = 'Scope';
+$labels['currentfolder'] = 'Current folder';
+$labels['subfolders'] = 'This and subfolders';
+$labels['allfolders'] = 'All folders';
$labels['openinextwin'] = 'Open in new window';
$labels['emlsave'] = 'Download (.eml)';
$labels['changeformattext'] = 'Display in plain text format';
@@ -203,9 +207,8 @@ $labels['restoremessage'] = 'Restore message?';
$labels['responses'] = 'Responses';
$labels['insertresponse'] = 'Insert a response';
$labels['manageresponses'] = 'Manage responses';
-$labels['savenewresponse'] = 'Save new response';
-$labels['editresponses'] = 'Edit responses';
$labels['editresponse'] = 'Edit response';
+$labels['editresponses'] = 'Edit responses';
$labels['responsename'] = 'Name';
$labels['responsetext'] = 'Response Text';
$labels['attach'] = 'Attach';
@@ -270,6 +273,7 @@ $labels['assistant'] = 'Assistant';
$labels['spouse'] = 'Spouse';
$labels['allfields'] = 'All fields';
$labels['search'] = 'Search';
+$labels['searchfor'] = 'Search for "$q"';
$labels['advsearch'] = 'Advanced Search';
$labels['advanced'] = 'Advanced';
$labels['other'] = 'Other';
@@ -288,7 +292,6 @@ $labels['typehomepage'] = 'Home Page';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profile';
$labels['addfield'] = 'Add field...';
-$labels['addcontact'] = 'Add new contact';
$labels['editcontact'] = 'Edit contact';
$labels['contacts'] = 'Contacts';
$labels['contactproperties'] = 'Contact properties';
@@ -301,7 +304,6 @@ $labels['rename'] = 'Rename';
$labels['addphoto'] = 'Add';
$labels['replacephoto'] = 'Replace';
$labels['uploadphoto'] = 'Upload photo';
-$labels['newcontact'] = 'Create new contact card';
$labels['deletecontact'] = 'Delete selected contacts';
$labels['composeto'] = 'Compose mail to';
$labels['contactsfromto'] = 'Contacts $from to $to of $count';
@@ -310,7 +312,6 @@ $labels['export'] = 'Export';
$labels['exportall'] = 'Export all';
$labels['exportsel'] = 'Export selected';
$labels['exportvcards'] = 'Export contacts in vCard format';
-$labels['newcontactgroup'] = 'Create new contact group';
$labels['grouprename'] = 'Rename group';
$labels['groupdelete'] = 'Delete group';
$labels['groupremoveselected'] = 'Remove selected contacts from group';
@@ -340,10 +341,6 @@ $labels['preferences'] = 'Preferences';
$labels['userpreferences'] = 'User preferences';
$labels['editpreferences'] = 'Edit user preferences';
$labels['identities'] = 'Identities';
-$labels['manageidentities'] = 'Manage identities for this account';
-$labels['newidentity'] = 'New identity';
-$labels['newitem'] = 'New item';
-$labels['edititem'] = 'Edit item';
$labels['preferhtml'] = 'Display HTML';
$labels['defaultcharset'] = 'Default Character Set';
$labels['htmlmessage'] = 'HTML Message';
@@ -400,6 +397,7 @@ $labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (other)';
$labels['force7bit'] = 'Use MIME encoding for 8-bit characters';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'Advanced options';
$labels['focusonnewmessage'] = 'Focus browser window on new message';
$labels['checkallfolders'] = 'Check all folders for new messages';
@@ -442,14 +440,14 @@ $labels['asattachment'] = 'as attachment';
$labels['replyallmode'] = 'Default action of [Reply all] button';
$labels['replyalldefault'] = 'reply to all';
$labels['replyalllist'] = 'reply to mailing list only (if found)';
-$labels['folder'] = 'Folder';
-$labels['folders'] = 'Folders';
-$labels['foldername'] = 'Folder name';
-$labels['subscribed'] = 'Subscribed';
+$labels['folder'] = 'Folder';
+$labels['folders'] = 'Folders';
+$labels['foldername'] = 'Folder name';
+$labels['subscribed'] = 'Subscribed';
$labels['messagecount'] = 'Messages';
-$labels['create'] = 'Create';
-$labels['createfolder'] = 'Create new folder';
-$labels['managefolders'] = 'Manage folders';
+$labels['create'] = 'Create';
+$labels['createfolder'] = 'Create new folder';
+$labels['managefolders'] = 'Manage folders';
$labels['specialfolders'] = 'Special Folders';
$labels['properties'] = 'Properties';
$labels['folderproperties'] = 'Folder properties';
@@ -459,9 +457,9 @@ $labels['info'] = 'Information';
$labels['getfoldersize'] = 'Click to get folder size';
$labels['changesubscription'] = 'Click to change subscription';
$labels['foldertype'] = 'Folder Type';
-$labels['personalfolder'] = 'Private Folder';
-$labels['otherfolder'] = 'Other User\'s Folder';
-$labels['sharedfolder'] = 'Public Folder';
+$labels['personalfolder'] = 'Private Folder';
+$labels['otherfolder'] = 'Other User\'s Folder';
+$labels['sharedfolder'] = 'Public Folder';
$labels['sortby'] = 'Sort by';
$labels['sortasc'] = 'Sort ascending';
$labels['sortdesc'] = 'Sort descending';
@@ -494,4 +492,7 @@ $labels['vietnamese'] = 'Vietnamese';
$labels['japanese'] = 'Japanese';
$labels['korean'] = 'Korean';
$labels['chinese'] = 'Chinese';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/en_GB/messages.inc b/program/localization/en_GB/messages.inc
index 8ee7aef5a..ba5dee9e3 100644
--- a/program/localization/en_GB/messages.inc
+++ b/program/localization/en_GB/messages.inc
@@ -22,6 +22,7 @@ $messages['sessionerror'] = 'Your session is invalid or has expired.';
$messages['storageerror'] = 'Connection to IMAP server failed.';
$messages['servererror'] = 'Server Error!';
$messages['servererrormsg'] = 'Server Error: $msg';
+$messages['connerror'] = 'Connection Error (Failed to reach the server)!';
$messages['dberror'] = 'Database Error!';
$messages['requesttimedout'] = 'Request timed out';
$messages['errorreadonly'] = 'Unable to perform operation. Folder is read-only.';
@@ -92,6 +93,7 @@ $messages['contactsearchsuccessful'] = '$nr contacts found.';
$messages['searchnomatch'] = 'Search found no matches.';
$messages['searching'] = 'Searching...';
$messages['checking'] = 'Checking...';
+$messages['stillsearching'] = 'Still searching...';
$messages['nospellerrors'] = 'No spelling errors found.';
$messages['folderdeleted'] = 'Successfully deleted folder.';
$messages['foldersubscribed'] = 'Successfully subscribed to folder.';
@@ -135,7 +137,6 @@ $messages['importmessagesuccess'] = 'Successfully imported $nr messages';
$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
$messages['opnotpermitted'] = 'Operation not permitted!';
$messages['nofromaddress'] = 'Missing e-mail address in selected identity.';
-$messages['editorwarning'] = 'Switching to the plain text editor will cause all text formatting to be lost. Do you wish to continue?';
$messages['httpreceivedencrypterror'] = 'A fatal configuration error occurred. Contact your administrator immediately. <b>Your message can not be sent.</b>';
$messages['smtpconnerror'] = 'SMTP Error ($code): Connection to server failed.';
$messages['smtpautherror'] = 'SMTP Error ($code): Authentication failed.';
diff --git a/program/localization/en_US/labels.inc b/program/localization/en_US/labels.inc
index 5bb645d29..720d7ab99 100644
--- a/program/localization/en_US/labels.inc
+++ b/program/localization/en_US/labels.inc
@@ -157,16 +157,24 @@ $labels['more'] = 'More';
$labels['back'] = 'Back';
$labels['options'] = 'Options';
+$labels['first'] = 'First';
+$labels['last'] = 'Last';
+$labels['previous'] = 'Previous';
+$labels['next'] = 'Next';
$labels['select'] = 'Select';
$labels['all'] = 'All';
$labels['none'] = 'None';
$labels['currpage'] = 'Current page';
+$labels['isread'] = 'Read';
$labels['unread'] = 'Unread';
$labels['flagged'] = 'Flagged';
+$labels['unflagged'] = 'Not Flagged';
$labels['unanswered'] = 'Unanswered';
$labels['withattachment'] = 'With attachment';
$labels['deleted'] = 'Deleted';
$labels['undeleted'] = 'Not deleted';
+$labels['replied'] = 'Replied';
+$labels['forwarded'] = 'Forwarded';
$labels['invert'] = 'Invert';
$labels['filter'] = 'Filter';
$labels['list'] = 'List';
@@ -200,6 +208,11 @@ $labels['importmessages'] = 'Import messages';
$labels['quota'] = 'Disk usage';
$labels['unknown'] = 'unknown';
$labels['unlimited'] = 'unlimited';
+$labels['quotatype'] = 'Quota type';
+$labels['quotatotal'] = 'Limit';
+$labels['quotaused'] = 'Used';
+$labels['quotastorage'] = 'Disk space';
+$labels['quotamessage'] = 'Messages count';
$labels['quicksearch'] = 'Quick search';
$labels['resetsearch'] = 'Reset search';
@@ -230,6 +243,10 @@ $labels['returnreceipt'] = 'Return receipt';
$labels['dsn'] = 'Delivery status notification';
$labels['mailreplyintro'] = 'On $date, $sender wrote:';
$labels['originalmessage'] = 'Original Message';
+$labels['selectimage'] = 'Select image';
+$labels['addimage'] = 'Add image';
+$labels['selectmedia'] = 'Select movie';
+$labels['addmedia'] = 'Add movie';
$labels['editidents'] = 'Edit identities';
$labels['spellcheck'] = 'Spell';
@@ -243,9 +260,10 @@ $labels['restoremessage'] = 'Restore message?';
$labels['responses'] = 'Responses';
$labels['insertresponse'] = 'Insert a response';
$labels['manageresponses'] = 'Manage responses';
-$labels['savenewresponse'] = 'Save new response';
-$labels['editresponses'] = 'Edit responses';
+$labels['newresponse'] = 'Create new response';
+$labels['addresponse'] = 'Add response';
$labels['editresponse'] = 'Edit response';
+$labels['editresponses'] = 'Edit responses';
$labels['responsename'] = 'Name';
$labels['responsetext'] = 'Response Text';
@@ -255,6 +273,7 @@ $labels['upload'] = 'Upload';
$labels['uploadprogress'] = '$percent ($current from $total)';
$labels['close'] = 'Close';
$labels['messageoptions'] = 'Message options...';
+$labels['togglecomposeoptions'] = 'Toggle composition options';
$labels['low'] = 'Low';
$labels['lowest'] = 'Lowest';
@@ -340,11 +359,13 @@ $labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profile';
$labels['addfield'] = 'Add field...';
-$labels['addcontact'] = 'Add new contact';
+$labels['addcontact'] = 'Add contact';
$labels['editcontact'] = 'Edit contact';
$labels['contacts'] = 'Contacts';
$labels['contactproperties'] = 'Contact properties';
+$labels['contactnameandorg'] = 'Name and Organization';
$labels['personalinfo'] = 'Personal information';
+$labels['contactphoto'] = 'Contact photo';
$labels['edit'] = 'Edit';
$labels['cancel'] = 'Cancel';
@@ -355,7 +376,7 @@ $labels['addphoto'] = 'Add';
$labels['replacephoto'] = 'Replace';
$labels['uploadphoto'] = 'Upload photo';
-$labels['newcontact'] = 'Create new contact card';
+$labels['newcontact'] = 'Create new contact';
$labels['deletecontact'] = 'Delete selected contacts';
$labels['composeto'] = 'Compose mail to';
$labels['contactsfromto'] = 'Contacts $from to $to of $count';
@@ -364,10 +385,12 @@ $labels['export'] = 'Export';
$labels['exportall'] = 'Export all';
$labels['exportsel'] = 'Export selected';
$labels['exportvcards'] = 'Export contacts in vCard format';
-$labels['newcontactgroup'] = 'Create new contact group';
+$labels['newgroup'] = 'Create new group';
+$labels['addgroup'] = 'Add group';
$labels['grouprename'] = 'Rename group';
$labels['groupdelete'] = 'Delete group';
$labels['groupremoveselected'] = 'Remove selected contacts from group';
+$labels['uponelevel'] = 'Up one level';
$labels['previouspage'] = 'Show previous page';
$labels['firstpage'] = 'Show first page';
@@ -401,11 +424,10 @@ $labels['userpreferences'] = 'User preferences';
$labels['editpreferences'] = 'Edit user preferences';
$labels['identities'] = 'Identities';
-$labels['manageidentities'] = 'Manage identities for this account';
-$labels['newidentity'] = 'New identity';
-
-$labels['newitem'] = 'New item';
-$labels['edititem'] = 'Edit item';
+$labels['manageidentities'] = 'Manage identities';
+$labels['newidentity'] = 'Create new identity';
+$labels['addidentity'] = 'Add identity';
+$labels['editidentity'] = 'Edit identity';
$labels['preferhtml'] = 'Display HTML';
$labels['defaultcharset'] = 'Default Character Set';
@@ -463,7 +485,9 @@ $labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (other)';
$labels['force7bit'] = 'Use MIME encoding for 8-bit characters';
+$labels['savelocalstorage'] = "Save in the browser's local storage (temporarily)";
$labels['advancedoptions'] = 'Advanced options';
+$labels['toggleadvancedoptions'] = 'Toggle advanced options';
$labels['focusonnewmessage'] = 'Focus browser window on new message';
$labels['checkallfolders'] = 'Check all folders for new messages';
$labels['displaynext'] = 'After message delete/move display the next message';
@@ -506,14 +530,14 @@ $labels['replyallmode'] = 'Default action of [Reply all] button';
$labels['replyalldefault'] = 'reply to all';
$labels['replyalllist'] = 'reply to mailing list only (if found)';
-$labels['folder'] = 'Folder';
-$labels['folders'] = 'Folders';
-$labels['foldername'] = 'Folder name';
-$labels['subscribed'] = 'Subscribed';
+$labels['folder'] = 'Folder';
+$labels['folders'] = 'Folders';
+$labels['foldername'] = 'Folder name';
+$labels['subscribed'] = 'Subscribed';
$labels['messagecount'] = 'Messages';
-$labels['create'] = 'Create';
-$labels['createfolder'] = 'Create new folder';
-$labels['managefolders'] = 'Manage folders';
+$labels['create'] = 'Create';
+$labels['createfolder'] = 'Create new folder';
+$labels['managefolders'] = 'Manage folders';
$labels['specialfolders'] = 'Special Folders';
$labels['properties'] = 'Properties';
$labels['folderproperties'] = 'Folder properties';
@@ -523,9 +547,13 @@ $labels['info'] = 'Information';
$labels['getfoldersize'] = 'Click to get folder size';
$labels['changesubscription'] = 'Click to change subscription';
$labels['foldertype'] = 'Folder Type';
-$labels['personalfolder'] = 'Private Folder';
-$labels['otherfolder'] = 'Other User\'s Folder';
-$labels['sharedfolder'] = 'Public Folder';
+$labels['personalfolder'] = 'Private Folder';
+$labels['otherfolder'] = 'Other User\'s Folder';
+$labels['sharedfolder'] = 'Public Folder';
+$labels['findfolders'] = 'Find folders';
+$labels['namespace.personal'] = 'Personal';
+$labels['namespace.other'] = 'Other users';
+$labels['namespace.shared'] = 'Shared';
$labels['sortby'] = 'Sort by';
$labels['sortasc'] = 'Sort ascending';
@@ -565,4 +593,56 @@ $labels['japanese'] = 'Japanese';
$labels['korean'] = 'Korean';
$labels['chinese'] = 'Chinese';
+// accessibility (voice-only) headings and descriptions
+$labels['arialabeltopnav'] = 'Window control';
+$labels['arialabeltasknav'] = 'Application tasks';
+$labels['arialabeltoolbar'] = 'Application toolbar';
+$labels['arialabelactivetask'] = 'Active task';
+$labels['arialabelmessagessearchfilter'] = 'Email listing filter';
+$labels['arialabelmailsearchform'] = 'Email message search form';
+$labels['arialabelcontactsearchform'] = 'Contacts search form';
+$labels['arialabelmailquicksearchbox'] = 'Email search input';
+$labels['arialabelquicksearchbox'] = 'Search input';
+$labels['arialabelfoldersearchfilter'] = 'Folder listing filter';
+$labels['arialabelfoldersearchform'] = 'Folder search form';
+$labels['arialabelfolderlist'] = 'Email folder selection';
+$labels['arialabelmessagelist'] = 'Email Messages Listing';
+$labels['arialabelmailpreviewframe'] = 'Message preview';
+$labels['arialabelmailboxmenu'] = 'Folder actions menu';
+$labels['arialabellistselectmenu'] = 'List selection menu';
+$labels['arialabelthreadselectmenu'] = 'Threads listing menu';
+$labels['arialabelmessagelistoptions'] = 'Message list display and sorting options';
+$labels['arialabelmailimportdialog'] = 'Message import dialog';
+$labels['arialabelmessagenav'] = 'Message navigation';
+$labels['arialabelmessagebody'] = 'Message Body';
+$labels['arialabelmessageactions'] = 'Message actions';
+$labels['arialabelcontactquicksearch'] = 'Contacts search form';
+$labels['arialabelcontactsearchbox'] = 'Contact search input';
+$labels['arialabelmessageheaders'] = 'Message headers';
+$labels['arialabelforwardingoptions'] = 'Forwarding options';
+$labels['arialabelreplyalloptions'] = 'Reply-all options';
+$labels['arialabelmoremessageactions'] = 'More message actions';
+$labels['arialabelmarkmessagesas'] = 'Mark selected messages as...';
+$labels['arialabelcomposeoptions'] = 'Composition options';
+$labels['arialabelresponsesmenu'] = 'Canned responses menu';
+$labels['arialabelattachmentuploadform'] = 'Attachment upload form';
+$labels['arialabelattachmentpreview'] = 'Attachment preview';
+$labels['ariasummarycomposecontacts'] = 'List of contacts and groups to select as recipients';
+$labels['arialabelcontactexportoptions'] = 'Contact export options';
+$labels['arialabelabookgroupoptions'] = 'Addressbook/group options';
+$labels['arialabelpreferencesform'] = 'Preferences form';
+$labels['arialabelidentityeditfrom'] = 'Identity edit form';
+$labels['arialabelresonseeditfrom'] = 'Response edit form';
+$labels['arialabelsearchterms'] = 'Search terms';
+
+$labels['helplistnavigation'] = 'List keyboard navigation';
+$labels['helplistkeyboardnavigation'] = "Arrows up/down: Move row focus/selection.
+Space: Select focused row.
+Shift + up/down: Select additional row above/below.
+Ctrl + Space: Add focused row to selection/remove from selection.";
+$labels['helplistkeyboardnavmessages'] = "Arrows right/left: expand/collapse message thread (in threads mode only).
+Enter: Open the selected/focused message.
+Delete: Move selected messages to Trash.";
+$labels['helplistkeyboardnavcontacts'] = "Enter: Open the selected/focused contact.";
+
?>
diff --git a/program/localization/en_US/messages.inc b/program/localization/en_US/messages.inc
index 45c91e3d0..d4fbd6148 100644
--- a/program/localization/en_US/messages.inc
+++ b/program/localization/en_US/messages.inc
@@ -26,6 +26,7 @@ $messages['servererror'] = 'Server Error!';
$messages['servererrormsg'] = 'Server Error: $msg';
$messages['connerror'] = 'Connection Error (Failed to reach the server)!';
$messages['dberror'] = 'Database Error!';
+$messages['windowopenerror'] = 'The popup window was blocked!';
$messages['requesttimedout'] = 'Request timed out';
$messages['errorreadonly'] = 'Unable to perform operation. Folder is read-only.';
$messages['errornoperm'] = 'Unable to perform operation. Permission denied.';
@@ -139,7 +140,7 @@ $messages['importmessagesuccess'] = 'Successfully imported $nr messages';
$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
$messages['opnotpermitted'] = 'Operation not permitted!';
$messages['nofromaddress'] = 'Missing e-mail address in selected identity.';
-$messages['editorwarning'] = 'Switching to the plain text editor will cause all text formatting to be lost. Do you wish to continue?';
+$messages['editorwarning'] = 'Switching editor type may cause text formatting to be lost. Do you wish to continue?';
$messages['httpreceivedencrypterror'] = 'A fatal configuration error occurred. Contact your administrator immediately. <b>Your message can not be sent.</b>';
$messages['smtpconnerror'] = 'SMTP Error ($code): Connection to server failed.';
$messages['smtpautherror'] = 'SMTP Error ($code): Authentication failed.';
diff --git a/program/localization/eo/labels.inc b/program/localization/eo/labels.inc
index 0a55d36ae..06022802d 100644
--- a/program/localization/eo/labels.inc
+++ b/program/localization/eo/labels.inc
@@ -267,7 +267,6 @@ $labels['typehomepage'] = 'Hejmpaĝo';
$labels['typeblog'] = 'Blogo';
$labels['typeprofile'] = 'Profilo';
$labels['addfield'] = 'Aldonu kampon...';
-$labels['addcontact'] = 'Aldonu kontakton';
$labels['editcontact'] = 'Redaktu kontakton';
$labels['contacts'] = 'Kontaktoj';
$labels['contactproperties'] = 'Kontakt-informoj';
@@ -280,7 +279,6 @@ $labels['rename'] = 'Alinomu';
$labels['addphoto'] = 'Aldonu';
$labels['replacephoto'] = 'Anstataŭu';
$labels['uploadphoto'] = 'Alŝutu bildon';
-$labels['newcontact'] = 'Kreu novan kontakton';
$labels['deletecontact'] = 'Forigu elektatajn kontaktojn';
$labels['composeto'] = 'Verku mesaĝon al';
$labels['contactsfromto'] = 'Kontaktoj ekde $from ĝis $to de $count';
@@ -297,10 +295,6 @@ $labels['preferences'] = 'Preferoj';
$labels['userpreferences'] = 'Uzant-preferoj';
$labels['editpreferences'] = 'Redaktu uzant-preferojn';
$labels['identities'] = 'Identoj';
-$labels['manageidentities'] = 'Administru identojn de ĉi tiu konto';
-$labels['newidentity'] = 'Nova idento';
-$labels['newitem'] = 'Nova ero';
-$labels['edititem'] = 'Redaktu eron';
$labels['preferhtml'] = 'Montru HTML';
$labels['htmlmessage'] = 'HTML Mesaĝo';
$labels['prettydate'] = 'Agrablaj Datoj';
@@ -330,15 +324,19 @@ $labels['autosavedraft'] = 'Aŭtomate savu malneton';
$labels['never'] = 'neniam';
$labels['messagesdisplaying'] = 'Mesaĝoj vidigante';
$labels['messagescomposition'] = 'Mesaĝo-verkado';
-$labels['folder'] = 'Dosierujo';
-$labels['folders'] = 'Dosierujoj';
-$labels['foldername'] = 'Dosierujo-nomo';
-$labels['subscribed'] = 'Abonata';
+$labels['savelocalstorage'] = "";
+$labels['folder'] = 'Dosierujo';
+$labels['folders'] = 'Dosierujoj';
+$labels['foldername'] = 'Dosierujo-nomo';
+$labels['subscribed'] = 'Abonata';
$labels['messagecount'] = 'Mesaĝoj';
-$labels['create'] = 'Krei';
-$labels['createfolder'] = 'Kreu novan dosierujon';
-$labels['managefolders'] = 'Administru dosierujon';
+$labels['create'] = 'Krei';
+$labels['createfolder'] = 'Kreu novan dosierujon';
+$labels['managefolders'] = 'Administru dosierujon';
$labels['sortby'] = 'Ordigu per';
$labels['sortasc'] = 'Ordigu kreskante';
$labels['sortdesc'] = 'Ordigu malkreskante';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/es_419/labels.inc b/program/localization/es_419/labels.inc
index 437295bf1..5ecb5bfdb 100644
--- a/program/localization/es_419/labels.inc
+++ b/program/localization/es_419/labels.inc
@@ -19,37 +19,40 @@ $labels['welcome'] = 'Bienvenido a $product';
$labels['username'] = 'Usuario';
$labels['password'] = 'Contraseña';
$labels['server'] = 'Servidor';
-$labels['login'] = 'Login';
+$labels['login'] = 'Ingresar';
$labels['logout'] = 'Salir';
$labels['mail'] = 'Correo';
-$labels['settings'] = 'Configuración';
-$labels['addressbook'] = 'Libreta de Direcciones';
-$labels['inbox'] = 'Bandeja de Entrada';
+$labels['settings'] = 'Configuraciones';
+$labels['addressbook'] = 'Libreta de direcciones';
+$labels['inbox'] = 'Bandeja de entrada';
$labels['drafts'] = 'Borradores';
$labels['sent'] = 'Enviados';
$labels['trash'] = 'Papelera';
+$labels['junk'] = 'No deseado';
$labels['show_real_foldernames'] = 'Mostrar el nombre real para carpetas especiales';
-$labels['subject'] = 'Tema';
+$labels['subject'] = 'Asunto';
$labels['from'] = 'De';
$labels['sender'] = 'Remitente';
$labels['to'] = 'Para';
$labels['cc'] = 'Cc';
$labels['bcc'] = 'Bcc';
-$labels['replyto'] = 'Responder-a';
+$labels['replyto'] = 'Responder a';
+$labels['followupto'] = 'Seguir a';
$labels['date'] = 'Fecha';
$labels['size'] = 'Tamaño';
$labels['priority'] = 'Prioridad';
$labels['organization'] = 'Organización';
-$labels['readstatus'] = 'Leer estado';
-$labels['listoptions'] = 'Listar opciones';
+$labels['readstatus'] = 'Leído';
+$labels['listoptions'] = 'Listar opciones...';
$labels['mailboxlist'] = 'Carpetas';
$labels['messagesfromto'] = 'Mensajes $from a $to de $count';
-$labels['threadsfromto'] = 'Hilo $from hasta $to de $count';
+$labels['threadsfromto'] = 'Hilo $from a $to de $count';
$labels['messagenrof'] = 'Mensaje $nr de $count';
$labels['fromtoshort'] = '$from - $to de $count';
$labels['copy'] = 'Copiar';
$labels['move'] = 'Mover';
$labels['moveto'] = 'Mover a...';
+$labels['copyto'] = 'Copiar a...';
$labels['download'] = 'Descargar';
$labels['open'] = 'Abrir';
$labels['showattachment'] = 'Mostrar';
@@ -79,10 +82,10 @@ $labels['may'] = 'May';
$labels['jun'] = 'Jun';
$labels['jul'] = 'Jul';
$labels['aug'] = 'Ago';
-$labels['sep'] = 'Sep';
+$labels['sep'] = 'Set';
$labels['oct'] = 'Oct';
$labels['nov'] = 'Nov';
-$labels['dec'] = 'Dec';
+$labels['dec'] = 'Dic';
$labels['longjan'] = 'Enero';
$labels['longfeb'] = 'Febrero';
$labels['longmar'] = 'Marzo';
@@ -91,7 +94,7 @@ $labels['longmay'] = 'Mayo';
$labels['longjun'] = 'Junio';
$labels['longjul'] = 'Julio';
$labels['longaug'] = 'Agosto';
-$labels['longsep'] = 'Septiembre';
+$labels['longsep'] = 'Setiembre';
$labels['longoct'] = 'Octubre';
$labels['longnov'] = 'Noviembre';
$labels['longdec'] = 'Diciembre';
@@ -101,14 +104,14 @@ $labels['checkmail'] = 'Revisar si hay nuevos mensajes';
$labels['compose'] = 'Escribir';
$labels['writenewmessage'] = 'Crear mensaje nuevo';
$labels['reply'] = 'Responder';
-$labels['replytomessage'] = 'Responder a remitente';
-$labels['replytoallmessage'] = 'Responder a la lista o al remittente y todos los destinatarios';
+$labels['replytomessage'] = 'Responder al remitente';
+$labels['replytoallmessage'] = 'Responder a la lista o al remitente y a todos los destinatarios';
$labels['replyall'] = 'Responder a todos';
$labels['replylist'] = 'Responder a la lista';
-$labels['forward'] = 'Re-enviar';
-$labels['forwardinline'] = 'Reenviar en linea';
-$labels['forwardattachment'] = 'Re-enviar como archivo adjunto';
-$labels['forwardmessage'] = 'Re-enviar el mensaje';
+$labels['forward'] = 'Reenviar';
+$labels['forwardinline'] = 'Reenviar en el mensaje';
+$labels['forwardattachment'] = 'Reenviar como archivo adjunto';
+$labels['forwardmessage'] = 'Reenviar el mensaje';
$labels['deletemessage'] = 'Eliminar el mensaje';
$labels['movemessagetotrash'] = 'Mover a la papelera';
$labels['printmessage'] = 'Imprimir este mensaje';
@@ -128,22 +131,30 @@ $labels['moreactions'] = 'Más acciones...';
$labels['more'] = 'Más';
$labels['back'] = 'Atrás';
$labels['options'] = 'Opciones';
+$labels['first'] = 'Primero';
+$labels['last'] = 'Último';
+$labels['previous'] = 'Anterior';
+$labels['next'] = 'Siguiente';
$labels['select'] = 'Seleccionar';
$labels['all'] = 'Todos';
$labels['none'] = 'Ninguno';
$labels['currpage'] = 'Página actual';
+$labels['isread'] = 'Leido';
$labels['unread'] = 'No leido';
$labels['flagged'] = 'Marcado';
+$labels['unflagged'] = 'No marcado';
$labels['unanswered'] = 'No respondido';
$labels['withattachment'] = 'Con archivo adjunto';
$labels['deleted'] = 'Eliminado';
$labels['undeleted'] = 'No eliminado';
+$labels['replied'] = 'Respondido';
+$labels['forwarded'] = 'Reenviado';
$labels['invert'] = 'Invertir';
$labels['filter'] = 'Filtrar';
$labels['list'] = 'Enumerar';
$labels['threads'] = 'Hilos';
$labels['expand-all'] = 'Expandir todos';
-$labels['expand-unread'] = 'Espandir no leidos';
+$labels['expand-unread'] = 'Expandir no leídos';
$labels['collapse-all'] = 'Colapsar todos';
$labels['threaded'] = 'En hilo';
$labels['autoexpand_threads'] = 'Expandir hilos';
@@ -155,24 +166,35 @@ $labels['attachment'] = 'Archivo adjunto';
$labels['nonesort'] = 'Ninguno';
$labels['sentdate'] = 'Fecha de envío';
$labels['arrival'] = 'Fecha de recepción';
-$labels['asc'] = 'ascendiente';
-$labels['desc'] = 'descendiente';
+$labels['asc'] = 'ascendente';
+$labels['desc'] = 'descendente';
$labels['listcolumns'] = 'Enumerar columnas';
$labels['listsorting'] = 'Ordenar columnas';
$labels['listorder'] = 'Ordenado por';
-$labels['folderactions'] = 'Acciones de carpeta';
+$labels['listmode'] = 'Modo de visualización de lista';
+$labels['folderactions'] = 'Acciones de carpeta...';
$labels['compact'] = 'Comprimir';
$labels['empty'] = 'Vaciar';
$labels['importmessages'] = 'Importar mensajes';
$labels['quota'] = 'Uso de disco';
$labels['unknown'] = 'desconocido';
$labels['unlimited'] = 'ilimitado';
+$labels['quotatype'] = 'Tipo de cuota';
+$labels['quotatotal'] = 'Límite';
+$labels['quotaused'] = 'Usado';
+$labels['quotastorage'] = 'Espacio en disco';
+$labels['quotamessage'] = 'Conteo de mensajes';
$labels['quicksearch'] = 'Búsqueda rápida';
+$labels['resetsearch'] = 'Eliminar busqueda';
$labels['searchmod'] = 'Modificadores de búsqueda';
$labels['msgtext'] = 'Mensaje completo';
$labels['body'] = 'Cuerpo';
$labels['type'] = 'Tipo';
$labels['namex'] = 'Nombre';
+$labels['searchscope'] = 'Alcance';
+$labels['currentfolder'] = 'Carpeta actual';
+$labels['subfolders'] = 'Esta y subcarpetas';
+$labels['allfolders'] = 'Todas las carpetas';
$labels['openinextwin'] = 'Abrir en una ventana nueva';
$labels['emlsave'] = 'Descargar (.eml)';
$labels['changeformattext'] = 'Mostrar en texto plano';
@@ -181,47 +203,66 @@ $labels['editasnew'] = 'Editar como nuevo';
$labels['send'] = 'Enviar';
$labels['sendmessage'] = 'Enviar mensaje';
$labels['savemessage'] = 'Guardar como borrador';
-$labels['addattachment'] = 'Adjuntar archivo';
+$labels['addattachment'] = 'Adjuntar un archivo';
+$labels['charset'] = 'Tipo de codificación de caracteres';
$labels['editortype'] = 'Tipo de editor';
+$labels['returnreceipt'] = 'Confirmación de recepción';
+$labels['dsn'] = 'Notificación de estado del envío';
$labels['mailreplyintro'] = 'El $date, $sender escribió:';
-$labels['originalmessage'] = 'Mensaje Original';
+$labels['originalmessage'] = 'Mensaje original';
+$labels['selectimage'] = 'Seleccionar imagen';
+$labels['addimage'] = 'Agregar imagen';
+$labels['selectmedia'] = 'Seleccionar película';
+$labels['addmedia'] = 'Agregar película';
$labels['editidents'] = 'Editar identidades';
-$labels['resumeediting'] = 'Resumir edición';
+$labels['spellcheck'] = 'Corrección ortográfica';
+$labels['checkspelling'] = 'Verificar ortografía';
+$labels['resumeediting'] = 'Continuar con la edición';
$labels['revertto'] = 'Revertir a';
$labels['restore'] = 'Restaurar';
$labels['restoremessage'] = '¿Restaurar mensaje?';
$labels['responses'] = 'Respuestas';
$labels['insertresponse'] = 'Insertar una respuesta';
$labels['manageresponses'] = 'Administrar respuestas';
-$labels['savenewresponse'] = 'Guardar nueva respuesta';
-$labels['editresponses'] = 'Editar respuestas';
+$labels['newresponse'] = 'Crear nueva respuesta';
+$labels['addresponse'] = 'Agregar respuesta';
$labels['editresponse'] = 'Editar respuesta';
+$labels['editresponses'] = 'Editar respuestas';
$labels['responsename'] = 'Nombre';
+$labels['responsetext'] = 'Texto de respuesta';
$labels['attach'] = 'Adjuntar';
$labels['attachments'] = 'Archivos adjuntos';
+$labels['upload'] = 'Subir';
$labels['uploadprogress'] = '$percent ($current de $total)';
$labels['close'] = 'Cerrar';
-$labels['messageoptions'] = 'Opciones de mensaje';
+$labels['messageoptions'] = 'Opciones de mensaje...';
+$labels['togglecomposeoptions'] = 'Cambiar opciones de escritura';
$labels['low'] = 'Bajo';
$labels['lowest'] = 'Más bajo';
$labels['normal'] = 'Normal';
$labels['high'] = 'Alto';
$labels['highest'] = 'Más alto';
-$labels['nosubject'] = '(sin título)';
+$labels['nosubject'] = '(sin asunto)';
$labels['showimages'] = 'Mostrar imágenes';
$labels['alwaysshow'] = 'Mostrar siempre las imagenes de $sender';
$labels['isdraft'] = 'Este mensaje es un borrador.';
-$labels['andnmore'] = '$nr more...';
+$labels['andnmore'] = '$nr más...';
+$labels['togglemoreheaders'] = 'Mostrar más encabezados';
+$labels['togglefullheaders'] = 'Mostrar todos los encabezados';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Texto plano';
$labels['savesentmessagein'] = 'Guardar mensaje enviado en ';
-$labels['dontsave'] = 'No guardar';
+$labels['dontsave'] = 'no guardar';
$labels['maxuploadsize'] = 'El tamaño máximo permitido por archivo es $size';
-$labels['addcc'] = 'Y Cc';
-$labels['addbcc'] = 'Y Bcc';
-$labels['addreplyto'] = 'Agregar Responder-a';
-$labels['mdnrequest'] = 'El remitente de este mensaje a pedido ser notificado cuando leas el mensaje. ¿Quieres notificar al remitente?';
-$labels['name'] = 'Nombre de pantalla';
+$labels['addcc'] = 'Agregar Cc';
+$labels['addbcc'] = 'Agregar Bcc';
+$labels['addreplyto'] = 'Agregar Responder a';
+$labels['addfollowupto'] = 'Agregar Seguir a';
+$labels['mdnrequest'] = 'El remitente de este mensaje a pedido ser notificado cuando lea el mensaje. ¿Quiere notificar al remitente?';
+$labels['receiptread'] = 'Confirmación del recepción (leído)';
+$labels['yourmessage'] = 'Esta es una confirmación de recepción de tu mensaje';
+$labels['receiptnote'] = 'Nota: esta confirmación solo prueba que el mensaje se ha mostrado en la computadora del destinatario. No es garantía de que el destinatario haya leído o entendido el contenido del mensaje.';
+$labels['name'] = 'Nombre para mostrar';
$labels['firstname'] = 'Primer nombre';
$labels['surname'] = 'Apellido';
$labels['middlename'] = 'Segundo Nombre';
@@ -230,49 +271,54 @@ $labels['namesuffix'] = 'Sufijo';
$labels['nickname'] = 'Sobrenombre';
$labels['jobtitle'] = 'Puesto';
$labels['department'] = 'Departamento';
+$labels['gender'] = 'Sexo';
$labels['maidenname'] = 'Apellido de soltera';
-$labels['email'] = 'Email';
+$labels['email'] = 'Dirección de correo electrónico';
$labels['phone'] = 'Teléfono';
$labels['address'] = 'Dirección';
$labels['street'] = 'Calle';
$labels['locality'] = 'Ciudad';
$labels['zipcode'] = 'Código Postal';
$labels['region'] = 'Estado/Provincia';
-$labels['country'] = 'Pais';
+$labels['country'] = 'País';
$labels['birthday'] = 'Cumpleaños';
$labels['anniversary'] = 'Aniversario';
-$labels['website'] = 'Sitio Web';
-$labels['instantmessenger'] = 'IM';
+$labels['website'] = 'Sitio web';
+$labels['instantmessenger'] = 'Mensajería instantánea';
$labels['notes'] = 'Notas';
$labels['male'] = 'masculino';
$labels['female'] = 'femenino';
$labels['manager'] = 'Administrador';
$labels['assistant'] = 'Asistente';
-$labels['spouse'] = 'Conjuge';
+$labels['spouse'] = 'Cónyuge';
$labels['allfields'] = 'Todos los campos';
$labels['search'] = 'Buscar';
-$labels['advsearch'] = 'Busqueda Avanzada';
-$labels['advanced'] = 'Avanzado';
+$labels['searchfor'] = 'Buscar por "$q"';
+$labels['advsearch'] = 'Búsqueda avanzada';
+$labels['advanced'] = 'Avanzada';
$labels['other'] = 'Otro';
$labels['typehome'] = 'Casa';
$labels['typework'] = 'Trabajo';
$labels['typeother'] = 'Otro';
-$labels['typemobile'] = 'Móvil';
+$labels['typemobile'] = 'Celular';
$labels['typemain'] = 'Principal';
-$labels['typehomefax'] = 'Fax Casa';
-$labels['typeworkfax'] = 'Fax Oficina';
+$labels['typehomefax'] = 'Fax (casa)';
+$labels['typeworkfax'] = 'Fax (oficina)';
$labels['typecar'] = 'Auto';
+$labels['typepager'] = 'Pager';
$labels['typevideo'] = 'Video';
-$labels['typeassistant'] = 'Assistente';
-$labels['typehomepage'] = 'Página Web';
+$labels['typeassistant'] = 'Asistente';
+$labels['typehomepage'] = 'Página web';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Perfil';
$labels['addfield'] = 'Agregar campo...';
-$labels['addcontact'] = 'Agregar nuevo contacto';
+$labels['addcontact'] = 'Agregar contacto';
$labels['editcontact'] = 'Editar contacto';
$labels['contacts'] = 'Contactos';
$labels['contactproperties'] = 'Propiedades del contacto';
-$labels['personalinfo'] = 'Información Personal';
+$labels['contactnameandorg'] = 'Nombre y organización';
+$labels['personalinfo'] = 'Información personal';
+$labels['contactphoto'] = 'Foto del contacto';
$labels['edit'] = 'Editar';
$labels['cancel'] = 'Cancelar';
$labels['save'] = 'Guardar';
@@ -281,19 +327,20 @@ $labels['rename'] = 'Renombrar';
$labels['addphoto'] = 'Agregar';
$labels['replacephoto'] = 'Remplazar';
$labels['uploadphoto'] = 'Subir foto';
-$labels['newcontact'] = 'Crear nueva tarjeta de contacto';
+$labels['newcontact'] = 'Crear nuevo contacto';
$labels['deletecontact'] = 'Eliminar contactos seleccionados';
-$labels['composeto'] = 'Escribir mail a ';
-$labels['contactsfromto'] = 'Contactos $from hasta $to de $count';
+$labels['composeto'] = 'Escribir a ';
+$labels['contactsfromto'] = 'Contactos $from a $to de $count';
$labels['print'] = 'Imprimir';
$labels['export'] = 'Exportar';
$labels['exportall'] = 'Exportar todo';
-$labels['exportsel'] = 'Exportar los seleccionados';
+$labels['exportsel'] = 'Exportar lo seleccionado';
$labels['exportvcards'] = 'Exportar contactos en formato vCard';
-$labels['newcontactgroup'] = 'Crear grupo de contactos nuevo';
+$labels['newgroup'] = 'Crear grupo nuevo';
$labels['grouprename'] = 'Renombrar grupo';
$labels['groupdelete'] = 'Eliminar grupo';
$labels['groupremoveselected'] = 'Eliminar contactos seleccionados del grupo';
+$labels['uponelevel'] = 'Arriba un nivel';
$labels['previouspage'] = 'Mostrar página anterior';
$labels['firstpage'] = 'Mostrar primera página';
$labels['nextpage'] = 'Mostrar página siguiente';
@@ -303,102 +350,161 @@ $labels['groups'] = 'Grupos';
$labels['listgroup'] = 'Mostrar miembros del grupo';
$labels['personaladrbook'] = 'Direcciones personales';
$labels['searchsave'] = 'Guardar búsqueda';
-$labels['searchdelete'] = 'Eliminar busqueda';
+$labels['searchdelete'] = 'Eliminar búsqueda';
$labels['import'] = 'Importar';
$labels['importcontacts'] = 'Importar contactos';
-$labels['importfromfile'] = 'Importar desde archivo';
+$labels['importfromfile'] = 'Importar desde archivo:';
$labels['importtarget'] = 'Agregar contactos a';
-$labels['importreplace'] = 'Remplazar la libreta de direcciones completa';
-$labels['importgroups'] = 'Importar tareas del grupo';
+$labels['importreplace'] = 'Remplazar toda la libreta de direcciones';
+$labels['importgroups'] = 'Importar asignaciones del grupo';
$labels['importgroupsall'] = 'Todo (crear grupos si es necesario)';
+$labels['importgroupsexisting'] = 'Solo para grupos existentes';
+$labels['importdesc'] = 'Puede subir contactos desde una libreta de direcciones existente. .<br/>Actualmente soportamos importar direcciones de los formatos <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> o CSV (separado por comas).';
$labels['done'] = 'Listo';
-$labels['about'] = 'Sobre';
+$labels['settingsfor'] = 'Configuraciones para';
+$labels['about'] = 'Acerca de';
$labels['preferences'] = 'Preferencias';
$labels['userpreferences'] = 'Preferencias de usuario ';
$labels['editpreferences'] = 'Editar preferencias de usuario ';
-$labels['identities'] = 'identidades';
-$labels['manageidentities'] = 'Administrar identidades para esta cuenta ';
-$labels['newidentity'] = 'Identidad nueva ';
-$labels['newitem'] = 'Elemento nuevo ';
-$labels['edititem'] = 'Editar elemento ';
+$labels['identities'] = 'Identidades';
+$labels['manageidentities'] = 'Administrar identidades';
+$labels['newidentity'] = 'Crear nueva identidad';
+$labels['addidentity'] = 'Agregar identidad';
+$labels['editidentity'] = 'Editar identidad';
$labels['preferhtml'] = 'Mostrar HTML ';
+$labels['defaultcharset'] = 'Caracteres predeterminados';
$labels['htmlmessage'] = 'Mensaje HTML ';
+$labels['messagepart'] = 'Parte';
$labels['digitalsig'] = 'Firma digital';
$labels['dateformat'] = 'Formato de fecha';
$labels['timeformat'] = 'Formato de hora';
+$labels['prettydate'] = 'Fechas bonitas';
$labels['setdefault'] = 'Predeterminar';
$labels['autodetect'] = 'Automático';
$labels['language'] = 'Idioma';
$labels['timezone'] = 'Zona horaria';
-$labels['pagesize'] = 'Columnas por página ';
+$labels['pagesize'] = 'Filas por página ';
$labels['signature'] = 'Firma';
+$labels['dstactive'] = 'Horario de ahorro de energía';
$labels['showinextwin'] = 'Abrir mensaje en una ventana nueva ';
$labels['composeextwin'] = 'Escribir en una ventana nueva ';
$labels['htmleditor'] = 'Escribir mensajes HTML';
+$labels['htmlonreply'] = 'al responder un mensaje HTML';
+$labels['htmlonreplyandforward'] = 'al renviar o responder un mensaje HTML';
$labels['htmlsignature'] = 'Firma HTML ';
-$labels['showemail'] = 'Mostrar dirección de email junto al nombre de pantalla';
+$labels['showemail'] = 'Mostrar dirección de correo electrónico junto al nombre a mostrar';
$labels['previewpane'] = 'Mostrar vista previa ';
+$labels['skin'] = 'Tipo de interfaz';
$labels['logoutclear'] = 'Vaciar la papelera al salir';
-$labels['logoutcompact'] = 'Comprimir la bandeja de entrada al salir';
+$labels['logoutcompact'] = 'Comprimir la Bandeja de entrada al salir';
$labels['uisettings'] = 'Interfaz de usuario';
+$labels['serversettings'] = 'Configuración del servidor';
+$labels['mailboxview'] = 'Visualización de la bandeja';
+$labels['mdnrequests'] = 'Al solicitarse confirmación de recepción';
+$labels['askuser'] = 'preguntarme';
+$labels['autosend'] = 'enviar confirmación de recepción';
+$labels['autosendknown'] = 'enviar confirmación de recepción a mis contactos; de lo contrario, preguntarme';
+$labels['autosendknownignore'] = 'enviar confirmación de recepción a mis contactos; de lo contrario, ignorar';
$labels['ignore'] = 'ignorar';
-$labels['readwhendeleted'] = 'Marcar mensaje como leído al elimiarlo ';
-$labels['skipdeleted'] = 'No mostrar mensajes eliminados ';
+$labels['readwhendeleted'] = 'Marcar mensaje como leído al eliminarlo ';
+$labels['flagfordeletion'] = 'Marcar el mensaje para eliminación en lugar de eliminarlo';
+$labels['skipdeleted'] = 'No mostrar mensajes eliminados';
+$labels['deletealways'] = 'Si falla el mover los mensajes a la Papelera, eliminarlos';
+$labels['deletejunk'] = 'Eliminar directamente los mensajes en No deseado';
+$labels['showremoteimages'] = 'Mostrar imágenes remotas en el mensaje';
+$labels['fromknownsenders'] = 'de remitentes conocidos';
$labels['always'] = 'siempre ';
$labels['showinlineimages'] = 'Mostrar imágenes adjuntas debajo del mensaje';
$labels['autosavedraft'] = 'Guardar borrador automáticamente';
$labels['everynminutes'] = 'cada $n minuto(s)';
+$labels['refreshinterval'] = 'Actualizar (buscar nuevos mensajes, etc.)';
$labels['never'] = 'nunca';
$labels['immediately'] = 'inmediatamente';
$labels['messagesdisplaying'] = 'Mostrando mensajes';
$labels['messagescomposition'] = 'Escribiendo mensajes';
+$labels['mimeparamfolding'] = 'Nombres de archivos adjuntos';
+$labels['2231folding'] = 'RFC 2231 completo (Thunderbird)';
+$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
+$labels['2047folding'] = 'RFC 2047 completo (otros)';
+$labels['force7bit'] = 'Usar codificación MIME para caracteres de 8 bits';
+$labels['savelocalstorage'] = "Guardar en el almacenamiento local del navegador (temporalmente)";
$labels['advancedoptions'] = 'Opciones avanzadas';
-$labels['mainoptions'] = 'Opciones Principales';
-$labels['browseroptions'] = 'Opciones del Navagador';
+$labels['toggleadvancedoptions'] = 'Cambiar opciones avanzadas';
+$labels['focusonnewmessage'] = 'Enfocar la ventana del navegador en el nuevo mensaje';
+$labels['checkallfolders'] = 'Buscar nuevos mensajes en todas las carpetas';
+$labels['displaynext'] = 'Luego de eliminar/mover mensajes, mostrar el próximo';
+$labels['defaultfont'] = 'Tipo de letra predeterminado en mensajes HTML';
+$labels['mainoptions'] = 'Opciones principales';
+$labels['browseroptions'] = 'Opciones del navegador';
$labels['section'] = 'Sección';
$labels['maintenance'] = 'Mantenimiento';
-$labels['newmessage'] = 'Mensaje Nuevo';
-$labels['signatureoptions'] = 'Opciones de Firma';
+$labels['newmessage'] = 'Mensaje nuevo';
+$labels['signatureoptions'] = 'Opciones de firma';
$labels['whenreplying'] = 'Al responder';
-$labels['replyempty'] = 'No citar el mensaje original ';
+$labels['replyempty'] = 'no citar el mensaje original ';
$labels['replytopposting'] = 'comenzar mensaje nuevo arriba de la cita';
$labels['replybottomposting'] = 'comenzar mensaje nuevo debajo de la cita';
-$labels['replyremovesignature'] = 'Al responder borrar la firma original del mensaje';
+$labels['replyremovesignature'] = 'Al responder, borrar la firma original del mensaje';
$labels['autoaddsignature'] = 'Agregar firma automáticamente';
-$labels['newmessageonly'] = 'solo mensajes nuevos';
+$labels['newmessageonly'] = 'solo mensaje nuevo';
+$labels['replyandforwardonly'] = 'solo responde y reenvía';
$labels['insertsignature'] = 'insertar firma';
+$labels['previewpanemarkread'] = 'Marcar como leídos mensajes mostrados en la vista previa';
+$labels['afternseconds'] = 'luego de $n segundos';
+$labels['reqmdn'] = 'Solicitar siempre una confirmación de recepción';
+$labels['reqdsn'] = 'Solicitar siempre una notificación de estado de envío';
+$labels['replysamefolder'] = 'Colocar respuestas en la carpeta del mensaje que ha sido respondido';
+$labels['defaultabook'] = 'Libreta de direcciones predeterminada';
+$labels['autocompletesingle'] = 'Al autocompletar, omitir direcciones de correo electrónico alternativas';
+$labels['listnamedisplay'] = 'Enumerar contactos como';
+$labels['spellcheckbeforesend'] = 'Verificar ortografía antes de enviar un mensaje';
+$labels['spellcheckoptions'] = 'Opciones de la corrección ortográfica';
$labels['spellcheckignoresyms'] = 'Ignorar palabras con símbolos';
$labels['spellcheckignorenums'] = 'Ignorar palabras con números';
+$labels['spellcheckignorecaps'] = 'Ignorar palabras con todas las letras en mayúsculas';
$labels['addtodict'] = 'Agregar al diccionario';
-$labels['standardwindows'] = 'Tratar popups como ventanas comunes';
+$labels['mailtoprotohandler'] = 'Registrar manejador de protocolo para enlaces mailto:';
+$labels['standardwindows'] = 'Tratar ventanas emergentes como ventanas comunes';
+$labels['forwardmode'] = 'Reenvío de mensajes';
+$labels['inline'] = 'en el mensaje';
$labels['asattachment'] = 'como adjunto';
+$labels['replyallmode'] = 'Acción predeterminada del botón [Responder a todos]';
$labels['replyalldefault'] = 'responder a todos';
-$labels['folder'] = 'Carpeta';
-$labels['folders'] = 'Carpetas';
-$labels['foldername'] = 'Nombre de carpeta';
+$labels['replyalllist'] = 'responder solamente a la lista de correos (si hay una)';
+$labels['folder'] = 'Carpeta';
+$labels['folders'] = 'Carpetas';
+$labels['foldername'] = 'Nombre de carpeta';
+$labels['subscribed'] = 'Suscrita(s)';
$labels['messagecount'] = 'Mensajes';
-$labels['create'] = 'Crear';
-$labels['createfolder'] = 'Crear carpeta nueva';
-$labels['managefolders'] = 'Administrar carpetas';
-$labels['specialfolders'] = 'Capetas Especiales';
+$labels['create'] = 'Crear';
+$labels['createfolder'] = 'Crear carpeta nueva';
+$labels['managefolders'] = 'Administrar carpetas';
+$labels['specialfolders'] = 'Capetas especiales';
$labels['properties'] = 'Propiedades';
+$labels['folderproperties'] = 'Propiedades de la carpeta';
+$labels['parentfolder'] = 'Carpeta madre';
$labels['location'] = 'Ubicación';
$labels['info'] = 'Información';
-$labels['getfoldersize'] = 'Click para ver el tamaño de la carpeta';
-$labels['changesubscription'] = 'Click para cambiar la subscripción';
-$labels['foldertype'] = 'Tipo de Carpeta';
-$labels['personalfolder'] = 'Carpeta Privada';
-$labels['otherfolder'] = 'Carpeta de otro usuario';
-$labels['sharedfolder'] = 'Carpeta pública';
+$labels['getfoldersize'] = 'Haga clic para obtener el tamaño de la carpeta';
+$labels['changesubscription'] = 'Haga clic para cambiar la subscripción';
+$labels['foldertype'] = 'Tipo de carpeta';
+$labels['personalfolder'] = 'Carpeta privada';
+$labels['otherfolder'] = 'Carpeta de otro usuario';
+$labels['sharedfolder'] = 'Carpeta pública';
+$labels['findfolders'] = 'Buscar carpetas';
+$labels['namespace.personal'] = 'Personal';
+$labels['namespace.other'] = 'Otros usuarios';
+$labels['namespace.shared'] = 'Compartido';
$labels['sortby'] = 'Ordenar por';
-$labels['sortasc'] = 'Ordenar ascendientemente';
-$labels['sortdesc'] = 'Ordenar descendientemente';
+$labels['sortasc'] = 'Ordenar de forma ascendente';
+$labels['sortdesc'] = 'Ordenar de forma descendente';
$labels['undo'] = 'Deshacer';
$labels['installedplugins'] = 'Extensiones instaladas';
$labels['plugin'] = 'Extensión';
$labels['version'] = 'Versión';
$labels['source'] = 'Fuente';
$labels['license'] = 'Licencia';
+$labels['support'] = 'Obtener soporte técnico';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
@@ -409,15 +515,65 @@ $labels['westerneuropean'] = 'Europeo Occidental';
$labels['easterneuropean'] = 'Europeo Oriental';
$labels['southeasterneuropean'] = 'Europeo Sur-Oriental';
$labels['baltic'] = 'Baltico';
-$labels['arabic'] = 'Arabigo';
+$labels['cyrillic'] = 'Cirílico';
+$labels['arabic'] = 'Arábe';
$labels['greek'] = 'Griego';
$labels['hebrew'] = 'Hebreo';
-$labels['turkish'] = 'Turko';
-$labels['nordic'] = 'Nordico';
-$labels['thai'] = 'Thai';
+$labels['turkish'] = 'Turco';
+$labels['nordic'] = 'Nórdico';
+$labels['thai'] = 'Tailandés';
$labels['celtic'] = 'Celta';
-$labels['vietnamese'] = 'Vietnamese';
+$labels['vietnamese'] = 'Vietnamita';
$labels['japanese'] = 'Japonés';
-$labels['korean'] = 'Koreano';
+$labels['korean'] = 'Coreano';
$labels['chinese'] = 'Chino';
+$labels['arialabeltopnav'] = 'Control de ventana';
+$labels['arialabeltasknav'] = 'Tareas de la aplicación';
+$labels['arialabeltoolbar'] = 'Barra de herramientas de la aplicación';
+$labels['arialabelactivetask'] = 'Tarea activa';
+$labels['arialabelmessagessearchfilter'] = 'Listado de filtros de correo electrónico';
+$labels['arialabelmailsearchform'] = 'Formulario de búsqueda de mensajes de correo electrónico';
+$labels['arialabelcontactsearchform'] = 'Formulario de búsqueda de contactos';
+$labels['arialabelmailquicksearchbox'] = 'Ingreso de búsqueda de correo electrónico';
+$labels['arialabelquicksearchbox'] = 'Ingreso de búsqueda';
+$labels['arialabelfoldersearchfilter'] = 'Filtro de lista de carpetas';
+$labels['arialabelfoldersearchform'] = 'Formulario de busqueda de carpetas';
+$labels['arialabelfolderlist'] = 'Selección de carpeta de correo electrónico';
+$labels['arialabelmessagelist'] = 'Listado de mensajes de correo electrónico';
+$labels['arialabelmailpreviewframe'] = 'Previsualización del mensaje';
+$labels['arialabelmailboxmenu'] = 'Menú de acciones de carpeta';
+$labels['arialabellistselectmenu'] = 'Menú de lista de selección';
+$labels['arialabelthreadselectmenu'] = 'Menú de listado de hilos';
+$labels['arialabelmessagelistoptions'] = 'Opciones de organización y visualización de mensajes';
+$labels['arialabelmailimportdialog'] = 'Diálogo de importación de mensajes';
+$labels['arialabelmessagenav'] = 'Navegación de mensajes';
+$labels['arialabelmessagebody'] = 'Cuerpo del mensaje';
+$labels['arialabelmessageactions'] = 'Acciones del mensaje';
+$labels['arialabelcontactquicksearch'] = 'Formulario de búsqueda de contactos';
+$labels['arialabelcontactsearchbox'] = 'Ingreso de búsqueda de contacto';
+$labels['arialabelmessageheaders'] = 'Encabezados del mensaje';
+$labels['arialabelforwardingoptions'] = 'Opciones de reenvío';
+$labels['arialabelreplyalloptions'] = 'Opciones de Responder a todos';
+$labels['arialabelmoremessageactions'] = 'Más acciones de mensaje';
+$labels['arialabelmarkmessagesas'] = 'Marcar mensajes seleccionados como...';
+$labels['arialabelcomposeoptions'] = 'Opciones de escritura';
+$labels['arialabelresponsesmenu'] = 'Menú de respuestas enlatadas';
+$labels['arialabelattachmentuploadform'] = 'Formulario para subir archivos adjuntos';
+$labels['arialabelattachmentpreview'] = 'Previsualización de archivos adjuntos';
+$labels['ariasummarycomposecontacts'] = 'Lista de contactos y grupos para seleccionar como destinatarios';
+$labels['arialabelcontactexportoptions'] = 'Opciones de exportación de contactos';
+$labels['arialabelabookgroupoptions'] = 'Opciones de libreta de direcciones/grupos';
+$labels['arialabelpreferencesform'] = 'Formulario de preferencias';
+$labels['arialabelidentityeditfrom'] = 'Formulario de edición de identidad';
+$labels['arialabelresonseeditfrom'] = 'Formulario de edición de respuestas';
+$labels['arialabelsearchterms'] = 'Términos de busqueda';
+$labels['helplistnavigation'] = 'Listar navegación por teclado';
+$labels['helplistkeyboardnavigation'] = "Flechas arriba/abajo: Mover la selección/enfoque de la fila.
+Espacio: Seleccionar fila enfocada.
+Mayús + arriba/abajo: Seleccionar más filas arriba/debajo.
+Ctrl + Espacio: Agregar/eliminar la fila enfocada a/de la selección.";
+$labels['helplistkeyboardnavmessages'] = "Flechas derecha/izquierda: Expandir/colapsar mensajes en hilo (solo en modo en hilo).
+Intro: Abrir el mensaje seleccionado/enfocado.
+Eliminar: Mover los mensajes seleccionados a la Papelera.";
+$labels['helplistkeyboardnavcontacts'] = "Intro: Abrir el contacto seleccionado/enfocado.";
?>
diff --git a/program/localization/es_419/messages.inc b/program/localization/es_419/messages.inc
index a22c53da8..ffb83cf39 100644
--- a/program/localization/es_419/messages.inc
+++ b/program/localization/es_419/messages.inc
@@ -16,11 +16,165 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
$messages['errortitle'] = '¡Ha ocurrido un error!';
-$messages['loginfailed'] = 'Falló el Login';
+$messages['loginfailed'] = 'Falló el Login.';
$messages['cookiesdisabled'] = 'Su navegador no acepta cookies.';
-$messages['sessionerror'] = 'Su sesión es inválida o ha expirado.';
+$messages['sessionerror'] = 'Su sesión no es válida o ha expirado.';
$messages['storageerror'] = 'Ha fallado la conexión al servidor de almacenamiento.';
$messages['servererror'] = '¡Error del servidor!';
$messages['servererrormsg'] = 'Error del servidor: $msg';
-$messages['dberror'] = 'Error en la base de datos';
+$messages['connerror'] = '¡Error de conexión (no se puede contactar con el servidor)!';
+$messages['dberror'] = '¡Error en la base de datos!';
+$messages['windowopenerror'] = '¡La ventana emergente ha sido bloqueada!';
+$messages['requesttimedout'] = 'Tiempo de espera expirado';
+$messages['errorreadonly'] = 'No es posible realizar la operación. La carpeta es de solo lectura';
+$messages['errornoperm'] = 'No es posible realizar la operación. Permiso denegado.';
+$messages['erroroverquota'] = 'No es posible realizar la operación. No hay espacio en disco.';
+$messages['erroroverquotadelete'] = 'No hay espacio libre en disco. Use Mayúsculas+Eliminar para borrar mensajes.';
+$messages['invalidrequest'] = '¡Solicitud no válida! No se ha guardado la información.';
+$messages['invalidhost'] = 'Nombre de servidor no válido.';
+$messages['nomessagesfound'] = 'No se encontraron mensajes en esta casilla.';
+$messages['loggedout'] = 'Has terminado correctamente la sesión. ¡Adiós!';
+$messages['mailboxempty'] = 'Casilla vacía';
+$messages['nomessages'] = 'Ningún mensaje';
+$messages['refreshing'] = 'Actualizando...';
+$messages['loading'] = 'Cargando...';
+$messages['uploading'] = 'Subiendo archivo...';
+$messages['uploadingmany'] = 'Subiendo archivos...';
+$messages['loadingdata'] = 'Cargando información...';
+$messages['checkingmail'] = 'Revisando por nuevos mensajes...';
+$messages['sendingmessage'] = 'Enviando mensaje...';
+$messages['messagesent'] = 'Mensaje enviado exitosamente.';
+$messages['savingmessage'] = 'Guardando mensaje...';
+$messages['messagesaved'] = 'Mensaje guardado en Borrador.';
+$messages['successfullysaved'] = 'Guardado exitosamente.';
+$messages['savingresponse'] = 'Guardando texto de respuesta...';
+$messages['deleteresponseconfirm'] = '¿Estás seguro que quieres eliminar este texto de respuesta?';
+$messages['addedsuccessfully'] = 'Contacto agregado exitosamente a la libreta de direcciones.';
+$messages['contactexists'] = 'Un contacto con la misma dirección de correo electrónico ya existe.';
+$messages['contactnameexists'] = 'Un contacto con el mismo nombre ya existe.';
+$messages['blockedimages'] = 'Para proteger su privacidad, las imágenes remotas están bloqueadas en este mensaje.';
+$messages['encryptedmessage'] = 'Este es un mensaje encriptado y no se puede mostrar. ¡Lo lamento!';
+$messages['nocontactsfound'] = 'No se encontraron contactos.';
+$messages['contactnotfound'] = 'El contacto solicitado no fue encontrado.';
+$messages['contactsearchonly'] = 'Ingresa algunos términos para encontrar contactos.';
+$messages['sendingfailed'] = 'Error al enviar mensaje.';
+$messages['senttooquickly'] = 'Por favor espera $sec seg(s). antes de enviar este mensaje.';
+$messages['errorsavingsent'] = 'Ha ocurrido un error grabando el mensaje enviado.';
+$messages['errorsaving'] = 'Ha ocurrido un error grabando.';
+$messages['errormoving'] = 'No se pudo mover el/los mensaje(s).';
+$messages['errorcopying'] = 'No se pudo copiar el/los mensaje(s).';
+$messages['errordeleting'] = 'No se pudo eliminar el/los mensaje(s).';
+$messages['errormarking'] = 'No se pudo marcar el/los mensaje(s).';
+$messages['deletecontactconfirm'] = '¿Estás seguro que quieres eliminar el/los contacto(s) seleccionado(s)?';
+$messages['deletegroupconfirm'] = '¿Estás seguro que quieres eliminar el grupo seleccionado?';
+$messages['deletemessagesconfirm'] = '¿Estás seguro que quieres eliminar el/los mensaje(s) seleccionado(s)?';
+$messages['deletefolderconfirm'] = '¿Estás seguro que quieres eliminar esta carpeta?';
+$messages['purgefolderconfirm'] = '¿Estás seguro que quieres eliminar todos los mensajes en esta carpeta?';
+$messages['contactdeleting'] = 'Eliminando contacto(s)...';
+$messages['groupdeleting'] = 'Eliminando grupo...';
+$messages['folderdeleting'] = 'Eliminando carpeta...';
+$messages['foldermoving'] = 'Moviendo carpeta...';
+$messages['foldersubscribing'] = 'Suscribiendo carpeta...';
+$messages['folderunsubscribing'] = 'Desuscribiendo carpeta...';
+$messages['formincomplete'] = 'El formulario no se ha completado en su totalidad.';
+$messages['noemailwarning'] = 'Por favor ingresa una dirección de correo electrónico válida.';
+$messages['nonamewarning'] = 'Por favor ingresa un nombre.';
+$messages['nopagesizewarning'] = 'Por favor ingresa un tamaño de página.';
+$messages['nosenderwarning'] = 'Por favor ingresa una dirección remitente de correo electrónico.';
+$messages['norecipientwarning'] = 'Por favor ingresa al menos un destinatario.';
+$messages['nosubjectwarning'] = 'El campo "Asunto" está vacio. ¿Deseas ingresar uno ahora?';
+$messages['nobodywarning'] = '¿Enviar este mensaje sin texto?';
+$messages['notsentwarning'] = 'El mensaje no ha sido enviado. ¿Deseas descartar este mensaje?';
+$messages['restoresavedcomposedata'] = 'Se ha encontrado un mensaje escrito pero no enviado\n\nAsunto: $subject\nGuardado: $date\n\n¿Desea restaurar este mensaje?';
+$messages['noldapserver'] = 'Por favor ingresa un servidor ldap para buscar.';
+$messages['nosearchname'] = 'Por favor ingresa un nombre de contacto o dirección de correo electrónico.';
+$messages['notuploadedwarning'] = 'Aún no se han subido todos los archivos adjuntos. Por favor espera o cancela la subida.';
+$messages['searchsuccessful'] = '$nr mensajes encontrados.';
+$messages['contactsearchsuccessful'] = '$nr contactos encontrados.';
+$messages['searchnomatch'] = 'La búsqueda no retornó resultados.';
+$messages['searching'] = 'Buscando...';
+$messages['checking'] = 'Verificando...';
+$messages['stillsearching'] = 'Todavía buscando...';
+$messages['nospellerrors'] = 'No se han encontrado errores gramaticales.';
+$messages['folderdeleted'] = 'Carpeta eliminada exitosamente.';
+$messages['foldersubscribed'] = 'Carpeta suscripta exitosamente';
+$messages['folderunsubscribed'] = 'Carpeta desuscripta exitosamente';
+$messages['folderpurged'] = 'La carpeta ha sido vaciada exitosamente';
+$messages['folderexpunged'] = 'La carpeta ha sido compactada exitosamente';
+$messages['deletedsuccessfully'] = 'Eliminado exitosamente.';
+$messages['converting'] = 'Quitando el formato...';
+$messages['messageopenerror'] = 'No se pudo cargar el mensaje desde el servidor.';
+$messages['fileuploaderror'] = 'Subida de archivo falló.';
+$messages['filesizeerror'] = 'El archivo subido excede el tamaño máxmo de $size.';
+$messages['copysuccess'] = 'Copiados $nr contactos exitosamente.';
+$messages['movesuccess'] = 'Movidos $nr contactos exitosamente.';
+$messages['copyerror'] = 'No se pudo copiar ninguno de los contactos.';
+$messages['moveerror'] = 'No se pudo mover ninguno de los contactos.';
+$messages['sourceisreadonly'] = 'Esta dirección fuente es de solo lectura.';
+$messages['errorsavingcontact'] = 'No se puedo guardar la dirección del contacto.';
+$messages['movingmessage'] = 'Moviendo mensaje(s)...';
+$messages['copyingmessage'] = 'Copiando mensaje(s)...';
+$messages['copyingcontact'] = 'Copiando contacto(s)...';
+$messages['movingcontact'] = 'Moviendo contacto(s)...';
+$messages['deletingmessage'] = 'Eliminando mensaje(s)...';
+$messages['markingmessage'] = 'Marcando mensaje(s)...';
+$messages['addingmember'] = 'Agregando contacto(s) al grupo...';
+$messages['removingmember'] = 'Eliminando contacto(s) del grupo...';
+$messages['receiptsent'] = 'Se ha enviado con éxito una confirmación de lectura.';
+$messages['errorsendingreceipt'] = 'No se pudo enviar el aviso de retorno.';
+$messages['deleteidentityconfirm'] = '¿Estás seguro que quieres eliminar esta identidad?';
+$messages['nodeletelastidentity'] = 'No puedes eliminar esta identidad, es tu última.';
+$messages['forbiddencharacter'] = 'Lo nombre de la carpeta contiene un caracter no permitido.';
+$messages['selectimportfile'] = 'Por favor selecciona un archivo para subir.';
+$messages['addresswriterror'] = 'La libreta de direcciones seleccionada no se puede escribir.';
+$messages['contactaddedtogroup'] = 'Se han eliminado los contactos a este grupo exitosamente';
+$messages['contactremovedfromgroup'] = 'Se han eliminado los contactos de este grupo exitosamente';
+$messages['nogroupassignmentschanged'] = 'No se han cambiado las asignaciones de grupo.';
+$messages['importwait'] = 'Importando, por favor espera...';
+$messages['importformaterror'] = '¡Ha fallado la importación! El archivo subido no tiene un formato válido.';
+$messages['importconfirm'] = '<b>Se han importado $inserted contactos exitosamente</b>';
+$messages['importconfirmskipped'] = '<b>Salteadas $skipped entradas existentes</b>';
+$messages['importmessagesuccess'] = 'Importados $nr mensajes exitosamente.';
+$messages['importmessageerror'] = '¡Ha fallado la importación! El archivo subido no tiene un formato válido.';
+$messages['opnotpermitted'] = '¡Operación no permitida!';
+$messages['nofromaddress'] = 'No se encuentra la dirección de correo electrónico en la entidad seleccionada.';
+$messages['editorwarning'] = 'Cambiar el tipo de editor puede causar que el formato de texto se pierda. ¿Desea continuar?';
+$messages['httpreceivedencrypterror'] = 'Ha ocurrido un error fatal de configuración. Contacte a su administrador de inmediato. <b>Su mensaje no puede ser enviado.</b>';
+$messages['smtpconnerror'] = 'Error SMTP ($code): Ha fallado la conexión con el servidor.';
+$messages['smtpautherror'] = 'Error SMTP ($code): Error de autenticación.';
+$messages['smtpfromerror'] = 'Error SMTP ($code): Fallo en establecer remitente "$from" ($msg).';
+$messages['smtptoerror'] = 'Error SMTP ($code): Fallo al agregar destinatario "$to" ($msg).';
+$messages['smtprecipientserror'] = 'Error SMTP: No es posible obtener la lista de destinatarios.';
+$messages['smtperror'] = 'Error SMTP: $msg';
+$messages['emailformaterror'] = 'Dirección de correo electrónico no válida: $email';
+$messages['toomanyrecipients'] = 'Demasiados destinatarios. Reduzca el número de destinatarios a $max.';
+$messages['maxgroupmembersreached'] = 'El número de miembros del grupo excede el máximo de $max.';
+$messages['internalerror'] = 'Ha ocurrido un error interno. Por favor intenta de nuevo.';
+$messages['contactdelerror'] = 'No se pudo eliminar el/los contacto(s).';
+$messages['contactdeleted'] = 'Contacto(s) eliminados exitosamente';
+$messages['contactrestoreerror'] = 'No se pudo restaurar los contacto(s) eliminados.';
+$messages['contactrestored'] = 'Contacto(s) restaurados exitosamente.';
+$messages['groupdeleted'] = 'Grupo eliminado exitosamente.';
+$messages['grouprenamed'] = 'Grupo renombrado exitosamente.';
+$messages['groupcreated'] = 'Grupo creado exitosamente.';
+$messages['savedsearchdeleted'] = 'Búsqueda guardada eliminada exitosamente.';
+$messages['savedsearchdeleteerror'] = 'No se pudo eliminar la búsqueda guardada.';
+$messages['savedsearchcreated'] = 'Búsqueda guardada creada exitosamente.';
+$messages['savedsearchcreateerror'] = 'No se puedo crear la búsqueda guardada.';
+$messages['messagedeleted'] = 'Mensaje(s) eliminado(s) exitosamente.';
+$messages['messagemoved'] = 'Mensaje(s) movido(s) exitosamente.';
+$messages['messagecopied'] = 'Mensaje(s) copiado(s) exitosamente.';
+$messages['messagemarked'] = 'Mensaje(s) marcado(s) exitosamente.';
+$messages['autocompletechars'] = 'Ingrese al menos $min caracteres para el autocompletado.';
+$messages['autocompletemore'] = 'No se han encontrado resultados. Por favor ingrese más caracteres.';
+$messages['namecannotbeempty'] = 'El nombre no puede estar vacio.';
+$messages['nametoolong'] = 'El nombre es demasiado largo.';
+$messages['folderupdated'] = 'Carpeta actualizada exitosamente.';
+$messages['foldercreated'] = 'Carpeta creada exitosamente.';
+$messages['invalidimageformat'] = 'Formato de imagen no válido.';
+$messages['mispellingsfound'] = 'Errores de gramática detectados en el mensaje.';
+$messages['parentnotwritable'] = 'No se puede mover/crear la carpeta en la carpeta pariente seleccionada. No tiene derechos de acceso.';
+$messages['messagetoobig'] = 'La parte del mensaje es demasiado grande para ser procesada.';
+$messages['attachmentvalidationerror'] = '¡ATENCIÓN! Este archivo adjunto es sospechoso porque su tipo no coincide con el declarado en el mensaje. Si no confia el remitente, no debería abrirlo en su navegador porque podría tener contenido malicioso.<br/><br/><em>Esperado: $expected; encontrado: $detected</em>';
+$messages['noscriptwarning'] = 'Atención: ¡Este servicio de Webmail requiere Javascript! Para usarlo por favor habilite Javascript en las opciones de su navegador.';
?>
diff --git a/program/localization/es_AR/labels.inc b/program/localization/es_AR/labels.inc
index eb4630ed4..db58a1e10 100644
--- a/program/localization/es_AR/labels.inc
+++ b/program/localization/es_AR/labels.inc
@@ -29,6 +29,7 @@ $labels['drafts'] = 'Borradores';
$labels['sent'] = 'Enviados';
$labels['trash'] = 'Papelera';
$labels['junk'] = 'Basura';
+$labels['show_real_foldernames'] = 'Mostrar nombres reales para carpetas especiales';
$labels['subject'] = 'Asunto';
$labels['from'] = 'Remitente';
$labels['sender'] = 'Remitente';
@@ -36,10 +37,12 @@ $labels['to'] = 'Destinatario';
$labels['cc'] = 'Copia';
$labels['bcc'] = 'Cco';
$labels['replyto'] = 'Responder a';
+$labels['followupto'] = 'Seguir-A';
$labels['date'] = 'Fecha';
$labels['size'] = 'Tamaño';
$labels['priority'] = 'Prioridad';
$labels['organization'] = 'Organización';
+$labels['readstatus'] = 'Leer estado';
$labels['listoptions'] = 'Listar opciones...';
$labels['mailboxlist'] = 'Carpetas';
$labels['messagesfromto'] = 'Mensajes $from a $to de $count';
@@ -49,7 +52,9 @@ $labels['fromtoshort'] = '$from – $to de $count';
$labels['copy'] = 'Copiar';
$labels['move'] = 'Mover';
$labels['moveto'] = 'Mover a...';
+$labels['copyto'] = 'Copiar a...';
$labels['download'] = 'Descargar';
+$labels['open'] = 'Abrir';
$labels['showattachment'] = 'Mostrar';
$labels['showanyway'] = 'Mostrar esto siempre';
$labels['filename'] = 'Nombre del archivo';
@@ -126,15 +131,24 @@ $labels['moreactions'] = 'Mas acciones...';
$labels['more'] = 'Más';
$labels['back'] = 'Atrás';
$labels['options'] = 'Opciones';
+$labels['first'] = 'Primero';
+$labels['last'] = 'Último';
+$labels['previous'] = 'Anterior';
+$labels['next'] = 'Siguiente';
$labels['select'] = 'Elija';
$labels['all'] = 'Todos';
$labels['none'] = 'Ninguno';
$labels['currpage'] = 'Página actual';
+$labels['isread'] = 'Leído';
$labels['unread'] = 'Sin leer';
$labels['flagged'] = 'Marcado';
+$labels['unflagged'] = 'No marcado';
$labels['unanswered'] = 'Sin respuesta';
+$labels['withattachment'] = 'Con adjunto';
$labels['deleted'] = 'Eliminado';
$labels['undeleted'] = 'No eliminado';
+$labels['replied'] = 'Respondido';
+$labels['forwarded'] = 'Reenviado';
$labels['invert'] = 'Invertir';
$labels['filter'] = 'Filtrar';
$labels['list'] = 'Lista';
@@ -157,18 +171,34 @@ $labels['desc'] = 'Descendente';
$labels['listcolumns'] = 'Listar columnas';
$labels['listsorting'] = 'Ordenar por';
$labels['listorder'] = 'Ordenado por';
+$labels['listmode'] = 'Modo vista en lista';
$labels['folderactions'] = 'Acciones de carpeta...';
$labels['compact'] = 'Compactar';
$labels['empty'] = 'Vaciar';
+$labels['importmessages'] = 'Importar mensajes';
$labels['quota'] = 'Uso de disco';
$labels['unknown'] = 'desconocido';
$labels['unlimited'] = 'sin límite';
+$labels['quotatype'] = 'Tipo de cuota';
+$labels['quotatotal'] = 'Límite';
+$labels['quotaused'] = 'Usado';
+$labels['quotastorage'] = 'Espacio de disco';
+$labels['quotamessage'] = 'Cantidad de mensajes';
$labels['quicksearch'] = 'Búsqueda rápida';
$labels['resetsearch'] = 'Reajustar la búsqueda';
$labels['searchmod'] = 'Opciones de búsqueda';
$labels['msgtext'] = 'Mensaje completo';
+$labels['body'] = 'Cuerpo';
+$labels['type'] = 'Tipo';
+$labels['namex'] = 'Nombre';
+$labels['searchscope'] = 'Alcance';
+$labels['currentfolder'] = 'Carpeta actual';
+$labels['subfolders'] = 'Este y subcarpetas';
+$labels['allfolders'] = 'Todas las carpetas';
$labels['openinextwin'] = 'Abrir en ventana nueva';
$labels['emlsave'] = 'Guardar (.eml)';
+$labels['changeformattext'] = 'Mostrar en formato de texto plano';
+$labels['changeformathtml'] = 'Mostrar en formato HTML';
$labels['editasnew'] = 'Editar como nuevo';
$labels['send'] = 'Enviar';
$labels['sendmessage'] = 'Enviar ahora el mensaje';
@@ -180,17 +210,33 @@ $labels['returnreceipt'] = 'Acuse de recibo';
$labels['dsn'] = 'Notificación de estado del envío';
$labels['mailreplyintro'] = 'El $date, $sender escribió:';
$labels['originalmessage'] = 'Mensaje original';
+$labels['selectimage'] = 'Seleccionar imagen';
+$labels['addimage'] = 'Agregar imagen';
+$labels['selectmedia'] = 'Seleccionar película';
+$labels['addmedia'] = 'Agregar película';
$labels['editidents'] = 'Editar identidades';
$labels['spellcheck'] = 'Gramática';
$labels['checkspelling'] = 'Revisar ortografía';
$labels['resumeediting'] = 'Continuar edición';
$labels['revertto'] = 'Revertir a';
+$labels['restore'] = 'Restaurar';
+$labels['restoremessage'] = '¿Restaurar mensaje?';
+$labels['responses'] = 'Respuestas';
+$labels['insertresponse'] = 'Insertar una respuesta';
+$labels['manageresponses'] = 'Administrar respuestas';
+$labels['newresponse'] = 'Crear nueva respuesta';
+$labels['addresponse'] = 'Agregar respuesta';
+$labels['editresponse'] = 'Editar respuesta';
+$labels['editresponses'] = 'Editar respuestas';
+$labels['responsename'] = 'Nombre';
+$labels['responsetext'] = 'Texto de la respuesta';
$labels['attach'] = 'Adjuntar';
$labels['attachments'] = 'Adjuntos';
$labels['upload'] = 'Agregar';
$labels['uploadprogress'] = '$percent ($current de $total)';
$labels['close'] = 'Cerrar';
$labels['messageoptions'] = 'Opciones de mensaje...';
+$labels['togglecomposeoptions'] = 'Activar opciones de composición';
$labels['low'] = 'Bajo';
$labels['lowest'] = 'Bajísimo';
$labels['normal'] = 'Normal';
@@ -202,6 +248,7 @@ $labels['alwaysshow'] = 'Siempre mostrar imágenes de $sender';
$labels['isdraft'] = 'Este es un borrador.';
$labels['andnmore'] = '$nr más...';
$labels['togglemoreheaders'] = 'Mostrarme más encabezados de mensaje';
+$labels['togglefullheaders'] = 'Activar encabezados en crudo';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Texto';
$labels['savesentmessagein'] = 'Guardar mensaje enviado en';
@@ -210,6 +257,7 @@ $labels['maxuploadsize'] = 'El tamaño maximo permitido por archivo es $size';
$labels['addcc'] = 'Añadir Cc';
$labels['addbcc'] = 'Añadir Cco';
$labels['addreplyto'] = 'Añadir Respuesta a';
+$labels['addfollowupto'] = 'Agregar Seguir-A';
$labels['mdnrequest'] = 'El emisor de este mensaje desea ser notificado cuando usted lo lea. ¿Quiere enviar esta notificación?';
$labels['receiptread'] = 'Notificación de lectura';
$labels['yourmessage'] = 'Esta es una notificación de lectura de su mensaje';
@@ -245,6 +293,7 @@ $labels['assistant'] = 'Asistente';
$labels['spouse'] = 'Cónygue';
$labels['allfields'] = 'Todos los campos';
$labels['search'] = 'Buscar';
+$labels['searchfor'] = 'Buscar por "$q"';
$labels['advsearch'] = 'Búsqueda Avanzada';
$labels['advanced'] = 'Avanzado';
$labels['other'] = 'Otro';
@@ -263,11 +312,13 @@ $labels['typehomepage'] = 'Página Personal';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Perfil';
$labels['addfield'] = 'Agregar campo...';
-$labels['addcontact'] = 'Añadir nuevo contacto';
+$labels['addcontact'] = 'Agregar contacto';
$labels['editcontact'] = 'Editar contacto';
$labels['contacts'] = 'Contactos';
$labels['contactproperties'] = 'Propiedades del contacto';
+$labels['contactnameandorg'] = 'Nombre y organización';
$labels['personalinfo'] = 'Información personal';
+$labels['contactphoto'] = 'Foto de contacto';
$labels['edit'] = 'Editar';
$labels['cancel'] = 'Cancelar';
$labels['save'] = 'Guardar';
@@ -276,30 +327,38 @@ $labels['rename'] = 'Renombrar';
$labels['addphoto'] = 'Agregar';
$labels['replacephoto'] = 'Reemplazar';
$labels['uploadphoto'] = 'Subir foto';
-$labels['newcontact'] = 'Añadir nuevo contacto';
+$labels['newcontact'] = 'Crear nuevo contacto';
$labels['deletecontact'] = 'Eliminar contactos seleccionados';
$labels['composeto'] = 'Enviar mensaje a';
$labels['contactsfromto'] = 'Contactos $from a $to de $count';
$labels['print'] = 'Imprimir';
$labels['export'] = 'Exportar';
+$labels['exportall'] = 'Exportar todo';
+$labels['exportsel'] = 'Exportar lo seleccionado';
$labels['exportvcards'] = 'Exportar contactos en format vCard';
-$labels['newcontactgroup'] = 'Crear Nuevo Grupo de Contacto';
+$labels['newgroup'] = 'Crear nuevo grupo';
$labels['grouprename'] = 'Renombrar grupo';
$labels['groupdelete'] = 'Eliminar grupo';
$labels['groupremoveselected'] = 'Remover del grupo los contactos seleccionados';
+$labels['uponelevel'] = 'Subir un nivel';
$labels['previouspage'] = 'Mostrar grupo anterior';
$labels['firstpage'] = 'Mostrar primer grupo';
$labels['nextpage'] = 'Mostrar siguiente grupo';
$labels['lastpage'] = 'Mostrar último grupo';
$labels['group'] = 'Grupo';
$labels['groups'] = 'Grupos';
+$labels['listgroup'] = 'Listar miembros del grupo';
$labels['personaladrbook'] = 'Direcciones personales';
$labels['searchsave'] = 'Guardar búsqueda';
$labels['searchdelete'] = 'Eliminar búsqueda';
$labels['import'] = 'Importar';
$labels['importcontacts'] = 'Importar contactos';
$labels['importfromfile'] = 'Importar desde el archivo:';
+$labels['importtarget'] = 'Agregar contactos a';
$labels['importreplace'] = 'Reemplazar completamente la lista de contactos';
+$labels['importgroups'] = 'Importar asignaciones de grupo';
+$labels['importgroupsall'] = 'Todo (crea grupos si es necesario)';
+$labels['importgroupsexisting'] = 'Sólo para grupos existentes';
$labels['importdesc'] = 'Puedes subir contactos desde una libreta de direcciones existente.<br/>Actualmente soportamos la importación de direcciones utilizando el formato <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> o CSV (Valores Separados por Coma).';
$labels['done'] = 'Hecho';
$labels['settingsfor'] = 'Configuración para';
@@ -308,13 +367,15 @@ $labels['preferences'] = 'Preferencias';
$labels['userpreferences'] = 'Preferencias de usuario';
$labels['editpreferences'] = 'Editar preferencias de usuario';
$labels['identities'] = 'Identidades';
-$labels['manageidentities'] = 'Gestionar identidades para esta cuenta';
-$labels['newidentity'] = 'Nueva identidad';
-$labels['newitem'] = 'Nuevo';
-$labels['edititem'] = 'Editar';
+$labels['manageidentities'] = 'Administrar identidades';
+$labels['newidentity'] = 'Crear nueva identidad';
+$labels['addidentity'] = 'Agregar identidad';
+$labels['editidentity'] = 'Editar identidad';
$labels['preferhtml'] = 'Prefiero HTML';
$labels['defaultcharset'] = 'Juego de Caracteres por Defecto';
$labels['htmlmessage'] = 'Mensaje HTML';
+$labels['messagepart'] = 'Parte';
+$labels['digitalsig'] = 'Firma digital';
$labels['dateformat'] = 'Formato de fecha';
$labels['timeformat'] = 'Formato de tiempo';
$labels['prettydate'] = 'Fecha detallada';
@@ -331,6 +392,7 @@ $labels['htmleditor'] = 'Componer mensaje en HTML';
$labels['htmlonreply'] = 'al responder un mensaje HTML';
$labels['htmlonreplyandforward'] = 'al reenviar o responder un mensaje HTML';
$labels['htmlsignature'] = 'Firma HTML';
+$labels['showemail'] = 'Mostrar dirección de correo electrónico junto al nombre a mostrar';
$labels['previewpane'] = 'Mostrar vista preliminar';
$labels['skin'] = 'Apariencia de la interfaz';
$labels['logoutclear'] = 'Vaciar papelera al cerrar sesión';
@@ -341,17 +403,21 @@ $labels['mailboxview'] = 'Vista de buzón';
$labels['mdnrequests'] = 'Notificaciones de envío';
$labels['askuser'] = 'preguntar al usuario';
$labels['autosend'] = 'enviar automáticamente';
+$labels['autosendknown'] = 'enviar acuse de recibo a mis contactos, sino preguntarme';
+$labels['autosendknownignore'] = 'enviar acuse de recibo a mis contactos, sino ignorar';
$labels['ignore'] = 'ignorar';
$labels['readwhendeleted'] = 'Marcar el mensage como leído al borrarlo';
$labels['flagfordeletion'] = 'Marcar el mensage para borrarse en vez de borrarlo';
$labels['skipdeleted'] = 'No mostrar mensajes eliminados';
$labels['deletealways'] = 'Cuando no se pueda mover un mensaje a la papelera, eliminarlo';
+$labels['deletejunk'] = 'Eliminar directamente mensajes en No deseado';
$labels['showremoteimages'] = 'Mostrar imágenes remotas';
$labels['fromknownsenders'] = 'de remitentes conocidos';
$labels['always'] = 'siempre';
$labels['showinlineimages'] = 'Mostrar imágenes adjuntas debajo del mensaje';
$labels['autosavedraft'] = 'Guardar borrador automáticamente';
$labels['everynminutes'] = 'cada $n minuto(s)';
+$labels['refreshinterval'] = 'Actualizar (verificar por nuevos mensajes, etc.)';
$labels['never'] = 'nunca';
$labels['immediately'] = 'inmediatamente';
$labels['messagesdisplaying'] = 'Vista de mensajes';
@@ -361,16 +427,21 @@ $labels['2231folding'] = 'RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'RFC 2047 (Otro)';
$labels['force7bit'] = 'Usar codificación MIME para caracteres de 8 bit';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'Opciones Avanzadas';
+$labels['toggleadvancedoptions'] = 'Activar opciones avanzadas';
$labels['focusonnewmessage'] = 'Traer al frente la ventana del navegador cuando haya nuevos mensajes';
$labels['checkallfolders'] = 'Verificar todas las carpetas por nuevos mensajes';
$labels['displaynext'] = 'Luedo de eliminar/mover, mostrar el próximo mensaje';
+$labels['defaultfont'] = 'Fuente por defecto para mensajes HTML';
$labels['mainoptions'] = 'Opciones Principales';
+$labels['browseroptions'] = 'Opciones de navegador';
$labels['section'] = 'Selección';
$labels['maintenance'] = 'Mantenimiento';
$labels['newmessage'] = 'Nuevo Mensaje';
$labels['signatureoptions'] = 'Opciones de Firma';
$labels['whenreplying'] = 'Al Responder';
+$labels['replyempty'] = 'no citar el mensaje original';
$labels['replytopposting'] = 'iniciar el nuevo mensaje sobre el original';
$labels['replybottomposting'] = 'iniciar el nuevo mensaje debajo del original';
$labels['replyremovesignature'] = 'Al responder, eliminar la firma del mensaje original';
@@ -380,18 +451,60 @@ $labels['replyandforwardonly'] = 'respuestas o reenvios solamente';
$labels['insertsignature'] = 'Insertar firma';
$labels['previewpanemarkread'] = 'Marcar mensajes previsualizados como leidos';
$labels['afternseconds'] = 'despues de $n segundos';
-$labels['folder'] = 'Carpeta';
-$labels['folders'] = 'Carpetas';
-$labels['foldername'] = 'Nombre de carpeta';
-$labels['subscribed'] = 'Suscripta';
+$labels['reqmdn'] = 'Siempre solicitar acuse de recibo';
+$labels['reqdsn'] = 'Siempre solicitar notificación de estado de envío';
+$labels['replysamefolder'] = 'Colocar respuestas en la carpeta del mensaje siendo respondido';
+$labels['defaultabook'] = 'Libreta de direcciones por defecto';
+$labels['autocompletesingle'] = 'Saltar dirección de correo electrónico alternativo al autocompletar';
+$labels['listnamedisplay'] = 'Listar contactos como';
+$labels['spellcheckbeforesend'] = 'Verificar la ortografía antes de enviar un mensaje';
+$labels['spellcheckoptions'] = 'Opciones del verificador de ortografía';
+$labels['spellcheckignoresyms'] = 'Ignorar palabras con símbolos';
+$labels['spellcheckignorenums'] = 'Ignorar palabras con números';
+$labels['spellcheckignorecaps'] = 'Ignorar palabras con todas las letras en mayúscula';
+$labels['addtodict'] = 'Agregar al diccionario';
+$labels['mailtoprotohandler'] = 'Registrar protocolo para manejar enlaces mailto:';
+$labels['standardwindows'] = 'Manejar emergentes como ventanas estándar';
+$labels['forwardmode'] = 'Mensajes redireccionando';
+$labels['inline'] = 'en línea';
+$labels['asattachment'] = 'como adjunto';
+$labels['replyallmode'] = 'Acción por defecto del botón [Responder a todos]';
+$labels['replyalldefault'] = 'responder a todos';
+$labels['replyalllist'] = 'responder sólo a la lista de correos (si se encuentra)';
+$labels['folder'] = 'Carpeta';
+$labels['folders'] = 'Carpetas';
+$labels['foldername'] = 'Nombre de carpeta';
+$labels['subscribed'] = 'Suscripta';
$labels['messagecount'] = 'Mensajes';
-$labels['create'] = 'Crear';
-$labels['createfolder'] = 'Crear nueva carpeta';
-$labels['managefolders'] = 'Administrar carpetas';
+$labels['create'] = 'Crear';
+$labels['createfolder'] = 'Crear nueva carpeta';
+$labels['managefolders'] = 'Administrar carpetas';
$labels['specialfolders'] = 'Carpetas Especiales';
+$labels['properties'] = 'Propiedades';
+$labels['folderproperties'] = 'Propiedades de carpeta';
+$labels['parentfolder'] = 'Carpeta pariente';
+$labels['location'] = 'Ubicación';
+$labels['info'] = 'Información';
+$labels['getfoldersize'] = 'Clic para obtener el tamaño de la carpeta';
+$labels['changesubscription'] = 'Clic para cambiar suscripción';
+$labels['foldertype'] = 'Tipo de carpeta';
+$labels['personalfolder'] = 'Carpeta privada';
+$labels['otherfolder'] = 'Carpeta de otros usuarios';
+$labels['sharedfolder'] = 'Carpeta pública';
+$labels['findfolders'] = 'Buscar carpetas';
+$labels['namespace.personal'] = 'Personal';
+$labels['namespace.other'] = 'Otros usuarios';
+$labels['namespace.shared'] = 'Compartido';
$labels['sortby'] = 'Ordenar por';
$labels['sortasc'] = 'Orden ascendente';
$labels['sortdesc'] = 'Orden descendente';
+$labels['undo'] = 'Deshacer';
+$labels['installedplugins'] = 'Extensiones instaladas';
+$labels['plugin'] = 'Extensión';
+$labels['version'] = 'Versión';
+$labels['source'] = 'Fuente';
+$labels['license'] = 'Licencia';
+$labels['support'] = 'Obtener soporte';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
@@ -414,4 +527,53 @@ $labels['vietnamese'] = 'Vietnamita';
$labels['japanese'] = 'Japonés';
$labels['korean'] = 'Coreano';
$labels['chinese'] = 'Chino';
+$labels['arialabeltopnav'] = 'Control de ventana';
+$labels['arialabeltasknav'] = 'Tareas de aplicación';
+$labels['arialabeltoolbar'] = 'Barra de herramientas de aplicación';
+$labels['arialabelactivetask'] = 'Tarea activa';
+$labels['arialabelmessagessearchfilter'] = 'Filtro de listado de correo electrónico';
+$labels['arialabelmailsearchform'] = 'Formulario de búsqueda de correo electrónico';
+$labels['arialabelcontactsearchform'] = 'Formulario de búsqueda de contactos';
+$labels['arialabelmailquicksearchbox'] = 'Ingreso de búsqueda de correo electrónico';
+$labels['arialabelquicksearchbox'] = 'Ingreso de búsqueda';
+$labels['arialabelfoldersearchfilter'] = 'Filtro de listado de carpetas';
+$labels['arialabelfoldersearchform'] = 'Formulario de búsqueda de carpetas';
+$labels['arialabelfolderlist'] = 'Selección de carpeta de correo electrónico';
+$labels['arialabelmessagelist'] = 'Listado de mensajes de correo electrónico';
+$labels['arialabelmailpreviewframe'] = 'Previsualización de mensaje';
+$labels['arialabelmailboxmenu'] = 'Menú de acciones de carpeta';
+$labels['arialabellistselectmenu'] = 'Menú de selección de lista';
+$labels['arialabelthreadselectmenu'] = 'Menú de listado por hilo';
+$labels['arialabelmessagelistoptions'] = 'Opciones de mostrado de mensajes y ordenamiento';
+$labels['arialabelmailimportdialog'] = 'Diálogo de importación de mensaje';
+$labels['arialabelmessagenav'] = 'Navegación de mensajes';
+$labels['arialabelmessagebody'] = 'Cuerpo de mensaje';
+$labels['arialabelmessageactions'] = 'Acciones de mensaje';
+$labels['arialabelcontactquicksearch'] = 'Formulario de búsqueda de contactos';
+$labels['arialabelcontactsearchbox'] = 'Ingreso de búsqueda de contactos';
+$labels['arialabelmessageheaders'] = 'Encabezados de mensaje';
+$labels['arialabelforwardingoptions'] = 'Opciones de reenvío';
+$labels['arialabelreplyalloptions'] = 'Opciones de Responder a todos';
+$labels['arialabelmoremessageactions'] = 'Más acciones de mensaje';
+$labels['arialabelmarkmessagesas'] = 'Marcar mensaje seleccionado como...';
+$labels['arialabelcomposeoptions'] = 'Opciones de composición';
+$labels['arialabelresponsesmenu'] = 'Menú de respuestas enlatadas';
+$labels['arialabelattachmentuploadform'] = 'Formulario para subir adjuntos';
+$labels['arialabelattachmentpreview'] = 'Previsualización de adjunto';
+$labels['ariasummarycomposecontacts'] = 'Listar los contactos y grupos para seleccionar como destinatarios';
+$labels['arialabelcontactexportoptions'] = 'Opciones de exportación de mensajes';
+$labels['arialabelabookgroupoptions'] = 'Opciones de libreta de direcciones/grupo';
+$labels['arialabelpreferencesform'] = 'Formulario de preferencias';
+$labels['arialabelidentityeditfrom'] = 'Formulario de edición de identidades';
+$labels['arialabelresonseeditfrom'] = 'Formulario de edición de respuesta';
+$labels['arialabelsearchterms'] = 'Términos de búsqueda';
+$labels['helplistnavigation'] = 'Listar navegación por teclado';
+$labels['helplistkeyboardnavigation'] = "Flechas arriba/abajo: Mueve el foco de la fila/selección.
+Espacio: Selecciona la fila en foco.
+Shift + arriba/abajo: Selecciona fila adicional arriba/abajo.
+Ctrl + Espacio: Agrega fila seleccionada en foco para seleccionar/eliminar.";
+$labels['helplistkeyboardnavmessages'] = "Flechas arriba/abajo: expande/colapsa el hilo del mensaje (sólo en modo de hilos).
+Intro: Abre el mensaje seleccionado/en foco.
+Supr: Mueve el mensaje seleccionado a la Papelera.";
+$labels['helplistkeyboardnavcontacts'] = "Intro: Abre el contacto seleccionado/en foco";
?>
diff --git a/program/localization/es_AR/messages.inc b/program/localization/es_AR/messages.inc
index 6f1cd1cb5..a1050e6a2 100644
--- a/program/localization/es_AR/messages.inc
+++ b/program/localization/es_AR/messages.inc
@@ -22,14 +22,20 @@ $messages['sessionerror'] = 'Su sesión no existe o ha expirado';
$messages['storageerror'] = 'Error de conexión con el servidor IMAP';
$messages['servererror'] = '¡Error en el servidor!';
$messages['servererrormsg'] = 'Error en servidor: $msg';
+$messages['connerror'] = 'Error de conexión (No se pudo conectar con el servidor)!';
$messages['dberror'] = 'Error en base de datos!';
+$messages['windowopenerror'] = 'La ventana emergente ha sido bloqueada!';
$messages['requesttimedout'] = 'Tiempo de espera agotado';
$messages['errorreadonly'] = 'No se pudo realizar la operación. La carpeta es de sólo lectura.';
$messages['errornoperm'] = 'No se pudo realizar la operación. Permiso denegado.';
+$messages['erroroverquota'] = 'No se pudo realizar la operación. Espacio en disco insuficiente.';
+$messages['erroroverquotadelete'] = 'Espacio en disco insuficiente. Utilice SHIFT+DEL para eliminar un mensaje.';
$messages['invalidrequest'] = 'Peteción invalida! No se guardó nada.';
$messages['invalidhost'] = 'Nombre de servidor inválido.';
$messages['nomessagesfound'] = 'No se han encontrado mensajes en esta casilla';
$messages['loggedout'] = 'Ha cerrado la sesión. ¡Hasta pronto!';
+$messages['mailboxempty'] = 'La casilla está vacía';
+$messages['nomessages'] = '0 mensajes';
$messages['refreshing'] = 'Actualizando...';
$messages['loading'] = 'Cargando...';
$messages['uploading'] = 'Subiendo archivo...';
@@ -41,6 +47,8 @@ $messages['messagesent'] = 'Mensaje enviado correctamente';
$messages['savingmessage'] = 'Guardar mensaje...';
$messages['messagesaved'] = 'Mensaje guardado en borradores';
$messages['successfullysaved'] = 'Guardado correctamente';
+$messages['savingresponse'] = 'Guardando texto de respuesta...';
+$messages['deleteresponseconfirm'] = 'Realmente deseas eliminar este texto de respuesta?';
$messages['addedsuccessfully'] = 'Contacto añadido correctamente a la libreta de direcciones';
$messages['contactexists'] = 'Ya existe un contacto con esta dirección de correo';
$messages['contactnameexists'] = 'Ya existe un contacto con el mismo nombre.';
@@ -51,6 +59,8 @@ $messages['contactnotfound'] = 'El contacto solicitado no existe';
$messages['contactsearchonly'] = 'Ingresá algún término de búsqueda para encontrar contactos';
$messages['sendingfailed'] = 'Error al enviar mensaje';
$messages['senttooquickly'] = 'Por favor, espere $sec segundo(s) antes de enviar este mensaje';
+$messages['errorsavingsent'] = 'Ocurrió un error al guardar el mensaje enviado';
+$messages['errorsaving'] = 'Ocurrió un error al guardar';
$messages['errormoving'] = 'No se pudo mover el mensaje';
$messages['errorcopying'] = 'No se pudo copiar el mensaje';
$messages['errordeleting'] = 'No se ha podido eliminar el mensaje';
@@ -75,6 +85,7 @@ $messages['norecipientwarning'] = 'Por favor, introduzca al menos un destinatari
$messages['nosubjectwarning'] = 'El campo "Asunto" esta vacío. ¿Desea completarlo en este momento?';
$messages['nobodywarning'] = '¿Quiere enviar este mensaje sin texto?';
$messages['notsentwarning'] = 'El mensaje no ha sido enviado. ¿Desea descartar su mensaje?';
+$messages['restoresavedcomposedata'] = 'Se ha encontrado un mensaje redactado anteriormente que no ha sido enviado.\n\nAsunto: $subject\nGuardado: $date\n\nDeseas recuperar este mensaje?';
$messages['noldapserver'] = 'Por favor, seleccione un servidor LDAP para buscar';
$messages['nosearchname'] = 'Por favor, introduzca un nombre o la dirección de e-mail';
$messages['notuploadedwarning'] = 'Todavia no se subieron todos los archivos adjuntos. Por favor aguarde o cancele la subida.';
@@ -83,6 +94,7 @@ $messages['contactsearchsuccessful'] = '$nr contactos encontrados.';
$messages['searchnomatch'] = 'La búsqueda no obtuvo resultados';
$messages['searching'] = 'Buscando...';
$messages['checking'] = 'Revisando...';
+$messages['stillsearching'] = 'Búsqueda en progreso...';
$messages['nospellerrors'] = 'No se encontraron errores ortográficos';
$messages['folderdeleted'] = 'Carpeta eliminada exitosamente';
$messages['foldersubscribed'] = 'Suscripción a carpeta exitosa.';
@@ -94,11 +106,16 @@ $messages['converting'] = 'Removiendo el formato del mensaje...';
$messages['messageopenerror'] = 'No puedo descargar el mensaje del servidor';
$messages['fileuploaderror'] = 'Error al subir archivos';
$messages['filesizeerror'] = 'El archivo excede el tamaño maximo ($size)';
+$messages['copysuccess'] = '$nr contactos copiados exitosamente.';
+$messages['movesuccess'] = '$nr contactos movidos exitosamente.';
+$messages['copyerror'] = 'No se pudo copiar ningún contacto.';
+$messages['moveerror'] = 'No se pudo mover ningún contacto.';
$messages['sourceisreadonly'] = 'Esta dirección es de sólo-lectura';
$messages['errorsavingcontact'] = 'No se pudo guardar la dirección de contacto';
$messages['movingmessage'] = 'Moviendo mensaje...';
$messages['copyingmessage'] = 'Copiando mensaje...';
$messages['copyingcontact'] = 'Copiando contacto(s)...';
+$messages['movingcontact'] = 'Moviendo contacto(s)...';
$messages['deletingmessage'] = 'Eliminando contacto(s)...';
$messages['markingmessage'] = 'Marcando mensaje(s)...';
$messages['addingmember'] = 'Agregando contacto(s) al grupo...';
@@ -117,9 +134,11 @@ $messages['importwait'] = 'Importando, aguarde por favor...';
$messages['importformaterror'] = 'Importación fallida! El archivo subido no es un archivo de importación de datos válido.';
$messages['importconfirm'] = '<b>Se importaron $inserted contactos correctamente. $skipped ya existentes fueron ignorados</b>:<p><em>$names</em></p>';
$messages['importconfirmskipped'] = '<b>Se ignoraron $skipped entradas ya existentes</b>';
+$messages['importmessagesuccess'] = '$nr mensajes importados exitosamente';
+$messages['importmessageerror'] = 'Importación fallida! El archivo subido no es un mensaje o archivo mailbox válido';
$messages['opnotpermitted'] = 'Operación no permitida!';
$messages['nofromaddress'] = 'El contacto seleccionado no tiene dirección de e-mail';
-$messages['editorwarning'] = 'Si cambia a texto plano se perderán todas las opciones de formato. ¿Desea continuar?';
+$messages['editorwarning'] = 'Cambiar el tipo de editor puede causar la pérdida del formato. Deseas continuar?';
$messages['httpreceivedencrypterror'] = 'Ha ocurrido un error fatal de configuración. Contacte inmediatamente a su administrador. <b>Su mensaje no ha sido enviado.</b>';
$messages['smtpconnerror'] = 'Error SMTP ($code): Conexión al servidor falló';
$messages['smtpautherror'] = 'Error SMTP ($code): Falló la autentificación';
@@ -130,6 +149,7 @@ $messages['smtperror'] = 'Error SMTP: $msg';
$messages['emailformaterror'] = 'La dirección $email no es válida';
$messages['toomanyrecipients'] = 'Demasiados destinatarios. Reduzca la cantidad a un máximo de $max.';
$messages['maxgroupmembersreached'] = 'El número de miembros del grupo excede el máximo de $max';
+$messages['internalerror'] = 'Ocurrió un error interno. Por favor, intenta nuevamente.';
$messages['contactdelerror'] = 'No se pudo eliminar el/los contactos(s).';
$messages['contactdeleted'] = 'Contacto(s) eliminado/s exitosamente.';
$messages['contactrestoreerror'] = 'No se pudo recuperar el/los contacto/s eliminado(s).';
diff --git a/program/localization/es_ES/labels.inc b/program/localization/es_ES/labels.inc
index ba17a4dff..6d13f2b81 100644
--- a/program/localization/es_ES/labels.inc
+++ b/program/localization/es_ES/labels.inc
@@ -131,16 +131,24 @@ $labels['moreactions'] = 'Más acciones…';
$labels['more'] = 'Más';
$labels['back'] = 'Volver';
$labels['options'] = 'Opciones';
+$labels['first'] = 'Primero';
+$labels['last'] = 'Último';
+$labels['previous'] = 'Anterior';
+$labels['next'] = 'Siguiente';
$labels['select'] = 'Elija';
$labels['all'] = 'Todos';
$labels['none'] = 'Ninguno';
$labels['currpage'] = 'Página actual';
+$labels['isread'] = 'Leer';
$labels['unread'] = 'Sin leer';
$labels['flagged'] = 'Señalado';
+$labels['unflagged'] = 'No Marcado';
$labels['unanswered'] = 'Sin respuesta';
$labels['withattachment'] = 'Con adjunto';
$labels['deleted'] = 'Eliminado';
$labels['undeleted'] = 'No eliminado';
+$labels['replied'] = 'Contestado';
+$labels['forwarded'] = 'Reenviado';
$labels['invert'] = 'Invertir';
$labels['filter'] = 'Filtrar';
$labels['list'] = 'Lista';
@@ -171,6 +179,11 @@ $labels['importmessages'] = 'Importar mensajes';
$labels['quota'] = 'Uso de disco';
$labels['unknown'] = 'desconocido';
$labels['unlimited'] = 'sin límite';
+$labels['quotatype'] = 'Tipo de cuota';
+$labels['quotatotal'] = 'Límite';
+$labels['quotaused'] = 'Usado';
+$labels['quotastorage'] = 'Espacio en disco';
+$labels['quotamessage'] = 'Número de mensajes';
$labels['quicksearch'] = 'Búsqueda rápida';
$labels['resetsearch'] = 'Reiniciar la búsqueda';
$labels['searchmod'] = 'Opciones de búsqueda';
@@ -178,6 +191,10 @@ $labels['msgtext'] = 'Mensaje completo';
$labels['body'] = 'Cuerpo';
$labels['type'] = 'Tipo';
$labels['namex'] = 'Nombre';
+$labels['searchscope'] = 'Ámbito';
+$labels['currentfolder'] = 'Carpeta actual';
+$labels['subfolders'] = 'Ésta y subcarpetas';
+$labels['allfolders'] = 'Todas las carpetas';
$labels['openinextwin'] = 'Abrir en nueva ventana';
$labels['emlsave'] = 'Descargar (.eml)';
$labels['changeformattext'] = 'Mostrar en formato de texto sencillo';
@@ -193,6 +210,10 @@ $labels['returnreceipt'] = 'Acuse de recibo';
$labels['dsn'] = 'Entrega de notificaciones de estado';
$labels['mailreplyintro'] = 'El $date, $sender escribió:';
$labels['originalmessage'] = 'Mensaje original';
+$labels['selectimage'] = 'Seleccione una imagen';
+$labels['addimage'] = 'Añadir imagen';
+$labels['selectmedia'] = 'Seleccione la película';
+$labels['addmedia'] = 'Añadir película';
$labels['editidents'] = 'Editar identidades';
$labels['spellcheck'] = 'Corrector ortográfico';
$labels['checkspelling'] = 'Revisar ortografía';
@@ -203,9 +224,10 @@ $labels['restoremessage'] = '¿Restaurar el mensaje?';
$labels['responses'] = 'Respuestas';
$labels['insertresponse'] = 'Insertar una respuesta';
$labels['manageresponses'] = 'Gestionar respuestas';
-$labels['savenewresponse'] = 'Guardar nueva respuesta';
-$labels['editresponses'] = 'Editar respuestas';
+$labels['newresponse'] = 'Crear nueva respuesta';
+$labels['addresponse'] = 'Añadir respuesta';
$labels['editresponse'] = 'Editar respuesta';
+$labels['editresponses'] = 'Editar respuestas';
$labels['responsename'] = 'Nombre';
$labels['responsetext'] = 'Texto de respuesta';
$labels['attach'] = 'Adjuntar';
@@ -214,6 +236,7 @@ $labels['upload'] = 'Subir';
$labels['uploadprogress'] = '$percent ($current de $total)';
$labels['close'] = 'Cerrar';
$labels['messageoptions'] = 'Opciones de mensaje...';
+$labels['togglecomposeoptions'] = 'Mostrar opciones de escritura';
$labels['low'] = 'Bajo';
$labels['lowest'] = 'Bajísimo';
$labels['normal'] = 'Normal';
@@ -270,6 +293,7 @@ $labels['assistant'] = 'Auxiliar';
$labels['spouse'] = 'Cónyuge';
$labels['allfields'] = 'Todos los campos';
$labels['search'] = 'Buscar';
+$labels['searchfor'] = 'Buscar "$q"';
$labels['advsearch'] = 'Búsqueda avanzada';
$labels['advanced'] = 'Avanzadas';
$labels['other'] = 'Otro';
@@ -288,11 +312,13 @@ $labels['typehomepage'] = 'Inicio';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Perfil';
$labels['addfield'] = 'Añadir campo...';
-$labels['addcontact'] = 'Añadir nuevo contacto';
+$labels['addcontact'] = 'Añadir contacto';
$labels['editcontact'] = 'Editar contacto';
$labels['contacts'] = 'Contactos';
$labels['contactproperties'] = 'Propiedades del contacto';
+$labels['contactnameandorg'] = 'Nombre y Organización';
$labels['personalinfo'] = 'Información personal';
+$labels['contactphoto'] = 'Foto del contacto';
$labels['edit'] = 'Editar';
$labels['cancel'] = 'Cancelar';
$labels['save'] = 'Guardar';
@@ -301,7 +327,7 @@ $labels['rename'] = 'Renombrar';
$labels['addphoto'] = 'Añadir';
$labels['replacephoto'] = 'Reemplazar';
$labels['uploadphoto'] = 'Subir foto';
-$labels['newcontact'] = 'Crear nueva tarjeta de contacto';
+$labels['newcontact'] = 'Crear nuevo contacto';
$labels['deletecontact'] = 'Eliminar contactos seleccionados';
$labels['composeto'] = 'Escribir mensaje a';
$labels['contactsfromto'] = 'Contactos $from a $to de $count';
@@ -310,10 +336,11 @@ $labels['export'] = 'Exportar';
$labels['exportall'] = 'Exportar todo';
$labels['exportsel'] = 'Exportar lo seleccionado';
$labels['exportvcards'] = 'Exportar contactos en formato vCard';
-$labels['newcontactgroup'] = 'Crear un nuevo grupo de contactos';
+$labels['newgroup'] = 'Crear nuevo grupo';
$labels['grouprename'] = 'Renombrar grupo';
$labels['groupdelete'] = 'Borrar grupo';
$labels['groupremoveselected'] = 'Eliminar los contactos seleccionados del grupo';
+$labels['uponelevel'] = 'Subir un nivel';
$labels['previouspage'] = 'Mostrar grupo anterior';
$labels['firstpage'] = 'Mostrar primer grupo';
$labels['nextpage'] = 'Mostrar grupo siguiente';
@@ -340,10 +367,10 @@ $labels['preferences'] = 'Preferencias';
$labels['userpreferences'] = 'Preferencias de usuario';
$labels['editpreferences'] = 'Editar preferencias de usuario';
$labels['identities'] = 'Identidades';
-$labels['manageidentities'] = 'Gestionar identidades para esta cuenta';
-$labels['newidentity'] = 'Nueva identidad';
-$labels['newitem'] = 'Nuevo';
-$labels['edititem'] = 'Editar';
+$labels['manageidentities'] = 'Administrar identidades';
+$labels['newidentity'] = 'Create new identity';
+$labels['addidentity'] = 'Añadir identidad';
+$labels['editidentity'] = 'Editar identidad';
$labels['preferhtml'] = 'Prefiero HTML';
$labels['defaultcharset'] = 'Juego de caracteres predeterminado';
$labels['htmlmessage'] = 'Mensaje HTML';
@@ -400,7 +427,9 @@ $labels['2231folding'] = 'RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'RFC 2047 (otro)';
$labels['force7bit'] = 'Usar codificación MIME para caracteres de 8 bits';
+$labels['savelocalstorage'] = "Guardar (temporalmente) en el almacén local del navegador";
$labels['advancedoptions'] = 'Opciones avanzadas';
+$labels['toggleadvancedoptions'] = 'Mostrar opciones avanzadas';
$labels['focusonnewmessage'] = 'Activar la ventana del navegador si hay un mensaje nuevo';
$labels['checkallfolders'] = 'Comprobar en todas las bandejas si hay mensajes nuevos';
$labels['displaynext'] = 'Después de borrar/mover un mensaje, mostrar el siguiente';
@@ -442,14 +471,14 @@ $labels['asattachment'] = 'como adjunto';
$labels['replyallmode'] = 'Acción predeterminada del botón [Responder a todos]';
$labels['replyalldefault'] = 'responder a todos';
$labels['replyalllist'] = 'responder sólo a la lista de correo (si se encuentra)';
-$labels['folder'] = 'Bandeja';
-$labels['folders'] = 'Carpetas';
-$labels['foldername'] = 'Nombre de bandeja';
-$labels['subscribed'] = 'Suscrita';
+$labels['folder'] = 'Bandeja';
+$labels['folders'] = 'Carpetas';
+$labels['foldername'] = 'Nombre de bandeja';
+$labels['subscribed'] = 'Suscrita';
$labels['messagecount'] = 'Mensajes';
-$labels['create'] = 'Crear';
-$labels['createfolder'] = 'Crear nueva bandeja';
-$labels['managefolders'] = 'Administrar bandejas';
+$labels['create'] = 'Crear';
+$labels['createfolder'] = 'Crear nueva bandeja';
+$labels['managefolders'] = 'Administrar bandejas';
$labels['specialfolders'] = 'Bandejas especiales';
$labels['properties'] = 'Propiedades';
$labels['folderproperties'] = 'Propiedades de bandeja';
@@ -459,9 +488,13 @@ $labels['info'] = 'Información';
$labels['getfoldersize'] = 'Clic para saber el tamaño de la bandeja';
$labels['changesubscription'] = 'Clic para cambiar suscripción';
$labels['foldertype'] = 'Tipo de bandeja';
-$labels['personalfolder'] = 'Bandeja privada';
-$labels['otherfolder'] = 'Bandeja de otro usuario';
-$labels['sharedfolder'] = 'Bandeja pública';
+$labels['personalfolder'] = 'Bandeja privada';
+$labels['otherfolder'] = 'Bandeja de otro usuario';
+$labels['sharedfolder'] = 'Bandeja pública';
+$labels['findfolders'] = 'Encontrar carpetas';
+$labels['namespace.personal'] = 'Personal';
+$labels['namespace.other'] = 'Otros usuarios';
+$labels['namespace.shared'] = 'Compartido';
$labels['sortby'] = 'Ordenar por';
$labels['sortasc'] = 'Orden ascendente';
$labels['sortdesc'] = 'Orden descendente';
@@ -494,4 +527,53 @@ $labels['vietnamese'] = 'Vietnamita';
$labels['japanese'] = 'Japonés';
$labels['korean'] = 'Coreano';
$labels['chinese'] = 'Chino';
+$labels['arialabeltopnav'] = 'Control de ventana';
+$labels['arialabeltasknav'] = 'Tareas de la aplicación';
+$labels['arialabeltoolbar'] = 'Barra de herramientas de la aplicación';
+$labels['arialabelactivetask'] = 'Tarea activa';
+$labels['arialabelmessagessearchfilter'] = 'Filtro de listado de correo electrónico';
+$labels['arialabelmailsearchform'] = 'Formulario de búsqueda de mensaje de correo electrónico';
+$labels['arialabelcontactsearchform'] = 'Formulario de búsqueda de contactos';
+$labels['arialabelmailquicksearchbox'] = 'Entrada de búsqueda de correo electrónico';
+$labels['arialabelquicksearchbox'] = 'Entrada de búsqueda';
+$labels['arialabelfoldersearchfilter'] = 'Filtro de listas de carpetas';
+$labels['arialabelfoldersearchform'] = 'Formulario de búsqueda de carpeta';
+$labels['arialabelfolderlist'] = 'Selección de carpeta de correo electrónico';
+$labels['arialabelmessagelist'] = 'Listado de mensajes de correo electrónico';
+$labels['arialabelmailpreviewframe'] = 'Previsualizar mensaje';
+$labels['arialabelmailboxmenu'] = 'Menú de acciones de carpeta';
+$labels['arialabellistselectmenu'] = 'Menú de selección de listado';
+$labels['arialabelthreadselectmenu'] = 'Menú de listado de conversaciones';
+$labels['arialabelmessagelistoptions'] = 'Opciones para mostrar y ordenar los mensajes';
+$labels['arialabelmailimportdialog'] = 'Diálogo de importación de mensaje';
+$labels['arialabelmessagenav'] = 'Navegación entre mensajes';
+$labels['arialabelmessagebody'] = 'Cuerpo del mensaje';
+$labels['arialabelmessageactions'] = 'Acciones del mensaje';
+$labels['arialabelcontactquicksearch'] = 'Formulario de búsqueda de contactos';
+$labels['arialabelcontactsearchbox'] = 'Entra de búsqueda de contacto';
+$labels['arialabelmessageheaders'] = 'Encabezados del mensaje';
+$labels['arialabelforwardingoptions'] = 'Opciones de reenvío';
+$labels['arialabelreplyalloptions'] = 'Opciones de "Responder a todos"';
+$labels['arialabelmoremessageactions'] = 'Más acciones de mensaje';
+$labels['arialabelmarkmessagesas'] = 'Marcar los mensajes seleccionados como…';
+$labels['arialabelcomposeoptions'] = 'Opciones de composición';
+$labels['arialabelresponsesmenu'] = 'Menú de respuestas enlatadas';
+$labels['arialabelattachmentuploadform'] = 'Formulario de subida de adjunto';
+$labels['arialabelattachmentpreview'] = 'Previsualizar adjunto';
+$labels['ariasummarycomposecontacts'] = 'Lista de contactos y grupos para elegir como destinatarios';
+$labels['arialabelcontactexportoptions'] = 'Opciones de exportación de contacto';
+$labels['arialabelabookgroupoptions'] = 'Opciones de grupo de contactos de la agenda';
+$labels['arialabelpreferencesform'] = 'Formulario de preferencias';
+$labels['arialabelidentityeditfrom'] = 'Formulario de edición de identidad';
+$labels['arialabelresonseeditfrom'] = 'Formulario de edición de respuesta';
+$labels['arialabelsearchterms'] = 'Términos de búsqueda';
+$labels['helplistnavigation'] = 'Listar la navegación por teclado';
+$labels['helplistkeyboardnavigation'] = "Flechas arriba/abajo: Mover de fila el foco o selección.
+Espacio: Seleccionar la fila enfocada.
+Mayúscula + arriba/abajo: Seleccionar otra fila de arriba/abajo.
+Control + Espacio: Añadir fila enfocada a la selección / quitar de la selección.";
+$labels['helplistkeyboardnavmessages'] = "Flechas izquierda/derecha: expandir/recoger hilo de mensaje (sólo en modo hilo).
+Retorno: Abrir el mensaje seleccionado/enfocado.
+Borrar: Mover los mensajes seleccionado a la Papelera.";
+$labels['helplistkeyboardnavcontacts'] = "Retorno: Abrir el contacto seleccionado";
?>
diff --git a/program/localization/es_ES/messages.inc b/program/localization/es_ES/messages.inc
index 53a136b0f..665df6165 100644
--- a/program/localization/es_ES/messages.inc
+++ b/program/localization/es_ES/messages.inc
@@ -22,7 +22,9 @@ $messages['sessionerror'] = 'Su sesión no es válida o ha expirado.';
$messages['storageerror'] = 'Error de conexión con el servidor IMAP.';
$messages['servererror'] = '¡Error del servidor!';
$messages['servererrormsg'] = 'Error de servidor: $msg';
+$messages['connerror'] = '¡Error de conexión (fallo al intentar alcanzar el servidor)!';
$messages['dberror'] = '¡Error de base de datos!';
+$messages['windowopenerror'] = 'iLa ventana emergente fue bloqueada!';
$messages['requesttimedout'] = 'Ha expirado el tiempo de respuesta';
$messages['errorreadonly'] = 'Imposible realizar la operación. La bandeja es sólo de lectura.';
$messages['errornoperm'] = 'Imposible realizar la operación. Permiso denegado.';
@@ -92,6 +94,7 @@ $messages['contactsearchsuccessful'] = 'Encontrados $nr contactos.';
$messages['searchnomatch'] = 'No se obtuvieron resultados.';
$messages['searching'] = 'Buscando...';
$messages['checking'] = 'Revisando...';
+$messages['stillsearching'] = 'Todavía buscando...';
$messages['nospellerrors'] = 'No se encontraron errores ortográficos.';
$messages['folderdeleted'] = 'Bandeja eliminada correctamente.';
$messages['foldersubscribed'] = 'Suscrito a bandeja correctamente.';
@@ -135,7 +138,7 @@ $messages['importmessagesuccess'] = '$nr mensajes importados con éxito';
$messages['importmessageerror'] = '¡Ha fallado la importación! El fichero subido no es un fichero válido de mensaje o buzón de correo';
$messages['opnotpermitted'] = '¡Operación no permitida!';
$messages['nofromaddress'] = 'El contacto seleccionado no tiene dirección de e-mail';
-$messages['editorwarning'] = 'Cambiando a texto plano perderá el formato del mensaje. ¿Desea continuar?';
+$messages['editorwarning'] = 'Cambiar el tipo de editor puede ocasionar la pérdida del formato del texto. ¿Desea continuar?';
$messages['httpreceivedencrypterror'] = 'Ha ocurrido un error fatal de configuración. Contacte inmediatamente a su administrador. <b>Su mensaje no ha sido enviado.</b>';
$messages['smtpconnerror'] = 'Error SMTP ($code): Ha fallado la conexión al servidor.';
$messages['smtpautherror'] = 'Error SMTP ($code): Error de autenticación.';
diff --git a/program/localization/et_EE/labels.inc b/program/localization/et_EE/labels.inc
index 42a268dd2..9e8662210 100644
--- a/program/localization/et_EE/labels.inc
+++ b/program/localization/et_EE/labels.inc
@@ -52,6 +52,7 @@ $labels['fromtoshort'] = '$from – $to kokku $count';
$labels['copy'] = 'Kopeeri';
$labels['move'] = 'Liiguta';
$labels['moveto'] = 'liiguta kausta...';
+$labels['copyto'] = 'Kopeeri...';
$labels['download'] = 'laadi arvutisse';
$labels['open'] = 'Ava';
$labels['showattachment'] = 'Näita';
@@ -130,16 +131,24 @@ $labels['moreactions'] = 'Muud toimingud...';
$labels['more'] = 'Rohkem';
$labels['back'] = 'Tagasi';
$labels['options'] = 'Valikud';
+$labels['first'] = 'Esimene';
+$labels['last'] = 'Viimane';
+$labels['previous'] = 'Eelmine';
+$labels['next'] = 'Järgmine';
$labels['select'] = 'Vali';
$labels['all'] = 'kõik';
$labels['none'] = 'Puudub';
$labels['currpage'] = 'Praegune leht';
+$labels['isread'] = 'Loe';
$labels['unread'] = 'Lugemata';
$labels['flagged'] = 'Märgistatud';
+$labels['unflagged'] = 'Märgistamatta';
$labels['unanswered'] = 'Vastamata';
$labels['withattachment'] = 'Koos manusega';
$labels['deleted'] = 'Kustutatud';
$labels['undeleted'] = 'Pole kustutatud';
+$labels['replied'] = 'Vastatud';
+$labels['forwarded'] = 'Edastatud';
$labels['invert'] = 'Vaheta';
$labels['filter'] = 'Filtreeri';
$labels['list'] = 'Nimekiri';
@@ -170,6 +179,11 @@ $labels['importmessages'] = 'Impordi kirju';
$labels['quota'] = 'Kettakasutus';
$labels['unknown'] = 'teadmata';
$labels['unlimited'] = 'piiramatu';
+$labels['quotatype'] = 'Piirangu tüüp';
+$labels['quotatotal'] = 'Limiit';
+$labels['quotaused'] = 'Kasutatud';
+$labels['quotastorage'] = 'Ketta ruum';
+$labels['quotamessage'] = 'Kirjade arv';
$labels['quicksearch'] = 'Kiirotsing';
$labels['resetsearch'] = 'Lähtesta otsing';
$labels['searchmod'] = 'Otsingu laiendid';
@@ -177,6 +191,10 @@ $labels['msgtext'] = 'Kogu kirjast';
$labels['body'] = 'Keha';
$labels['type'] = 'Tüüp';
$labels['namex'] = 'Nimi';
+$labels['searchscope'] = 'Skoop';
+$labels['currentfolder'] = 'Käesolev kaust';
+$labels['subfolders'] = 'See ja alamkaust';
+$labels['allfolders'] = 'Kõik kaustad';
$labels['openinextwin'] = 'Ava uues aknas';
$labels['emlsave'] = 'Salvesta (.eml)';
$labels['changeformattext'] = 'Näita lihttekstina';
@@ -192,11 +210,26 @@ $labels['returnreceipt'] = 'Kättesaamiskinnitus';
$labels['dsn'] = 'Kohalejõudmise teavitus';
$labels['mailreplyintro'] = '$date kirjutas $sender:';
$labels['originalmessage'] = 'Esialgne kiri';
+$labels['selectimage'] = 'Vali pilt';
+$labels['addimage'] = 'Lisa pilt';
+$labels['selectmedia'] = 'Vali film';
+$labels['addmedia'] = 'Lisa film';
$labels['editidents'] = 'Muuda Identiteete';
$labels['spellcheck'] = 'Õigekiri';
$labels['checkspelling'] = 'Kontrolli õigekirja';
$labels['resumeediting'] = 'Jätka muutmist';
$labels['revertto'] = 'Pööra tagasi';
+$labels['restore'] = 'Taasta';
+$labels['restoremessage'] = 'Taasta kiri?';
+$labels['responses'] = 'Vastused';
+$labels['insertresponse'] = 'Lisa vastus';
+$labels['manageresponses'] = 'Halda vastuseid';
+$labels['newresponse'] = 'Loo uus vastus';
+$labels['addresponse'] = 'Lisa vastus';
+$labels['editresponse'] = 'Muuda vastust';
+$labels['editresponses'] = 'Muuda vastuseid';
+$labels['responsename'] = 'Nimi';
+$labels['responsetext'] = 'Vastuse sisu';
$labels['attach'] = 'Manusta';
$labels['attachments'] = 'Manused';
$labels['upload'] = 'Kinnita manus';
@@ -259,6 +292,7 @@ $labels['assistant'] = 'Assistent';
$labels['spouse'] = 'Abikaasa';
$labels['allfields'] = 'Kõik väljad';
$labels['search'] = 'Otsi';
+$labels['searchfor'] = 'Otsi "$q"';
$labels['advsearch'] = 'Täpsem otsing';
$labels['advanced'] = 'Edasijõudnutele';
$labels['other'] = 'Muu';
@@ -277,11 +311,13 @@ $labels['typehomepage'] = 'Veebileht';
$labels['typeblog'] = 'Ajaveeb';
$labels['typeprofile'] = 'Profiil';
$labels['addfield'] = 'Lisa väli...';
-$labels['addcontact'] = 'Uue kontakti lisamine';
+$labels['addcontact'] = 'Lisa kontakt';
$labels['editcontact'] = 'Muuda kontakti';
$labels['contacts'] = 'Kontaktid';
$labels['contactproperties'] = 'Kontakti omadused';
+$labels['contactnameandorg'] = 'Nimi ja Organisatsioon';
$labels['personalinfo'] = 'Isiklik info';
+$labels['contactphoto'] = 'Kontakti pilt';
$labels['edit'] = 'Muuda';
$labels['cancel'] = 'Katkesta';
$labels['save'] = 'Salvesta';
@@ -290,7 +326,7 @@ $labels['rename'] = 'Nimeta ümber';
$labels['addphoto'] = 'Lisa';
$labels['replacephoto'] = 'Asenda';
$labels['uploadphoto'] = 'Lisa foto';
-$labels['newcontact'] = 'Uue sissekande loomine';
+$labels['newcontact'] = 'Loo uus kontakt';
$labels['deletecontact'] = 'Kustuta märgistatud kontaktid';
$labels['composeto'] = 'Kirjuta kiri';
$labels['contactsfromto'] = 'Kirjed $from kuni $to, kokku $count';
@@ -299,10 +335,11 @@ $labels['export'] = 'Ekspordi';
$labels['exportall'] = 'Ekspordi kõik';
$labels['exportsel'] = 'Ekspordi valitud';
$labels['exportvcards'] = 'Ekspordi kontaktid vCardi formaadis';
-$labels['newcontactgroup'] = 'Loo uus kontaktigrupp';
+$labels['newgroup'] = 'Loo uus grupp';
$labels['grouprename'] = 'Nimeta grupp ümber';
$labels['groupdelete'] = 'Kustuta grupp';
$labels['groupremoveselected'] = 'Eemalda valitud kontaktid grupist';
+$labels['uponelevel'] = 'Üks tase kõrgemale';
$labels['previouspage'] = 'Näita eelmist lehte';
$labels['firstpage'] = 'Näita esimest komplekti';
$labels['nextpage'] = 'Näita järgmist lehte';
@@ -316,7 +353,11 @@ $labels['searchdelete'] = 'Kustuta otsing';
$labels['import'] = 'Impordi';
$labels['importcontacts'] = 'Impordi kontakte';
$labels['importfromfile'] = 'Impordi failist:';
+$labels['importtarget'] = 'Lisa kontaktid ';
$labels['importreplace'] = 'Asenda kogu aadressiraamat';
+$labels['importgroups'] = 'Impordi grupi ülessanded';
+$labels['importgroupsall'] = 'Kõik (loo vajadusel grupid)';
+$labels['importgroupsexisting'] = 'Ainult olemasolevatele gruppidele';
$labels['importdesc'] = 'Sa saad laadida kontakte olemasolevast aadressiraamatust.<br/>Praegu on võimalik importida <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> või CSV (komaga eraldatud) formaadis andmeid. ';
$labels['done'] = 'Valmis';
$labels['settingsfor'] = 'Kasutajaeelistused kontole';
@@ -325,10 +366,10 @@ $labels['preferences'] = 'Eelistused';
$labels['userpreferences'] = 'Kasutaja eelistused';
$labels['editpreferences'] = 'Muuda kasutaja eelistusi';
$labels['identities'] = 'Identiteedid';
-$labels['manageidentities'] = 'Halda selle konto identiteete';
-$labels['newidentity'] = 'Uus identiteet';
-$labels['newitem'] = 'Uus sissekanne';
-$labels['edititem'] = 'Muuda sissekannet';
+$labels['manageidentities'] = 'Halda identiteete';
+$labels['newidentity'] = 'Loo uus identiteet';
+$labels['addidentity'] = 'Lisa identiteet';
+$labels['editidentity'] = 'Muuda identiteeti';
$labels['preferhtml'] = 'Eelista HTMLi';
$labels['defaultcharset'] = 'Vaikimisi märgistik';
$labels['htmlmessage'] = 'HTML kirjad';
@@ -385,7 +426,9 @@ $labels['2231folding'] = 'Täielik RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Täielik RFC 2047 (muu)';
$labels['force7bit'] = '8-bitiste märkide puhul kasuta MIME kodeerimist';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'Lisaseadistused';
+$labels['toggleadvancedoptions'] = 'Näita lisaseadistusi';
$labels['focusonnewmessage'] = 'Fookusta brauseri aken uue kirja korral';
$labels['checkallfolders'] = 'Kontrolli uusi kirju kõigist kaustadest';
$labels['displaynext'] = 'Pärast kirja kustutamist/liigutamist näita järgmist kirja';
@@ -424,14 +467,17 @@ $labels['standardwindows'] = 'Käsitle hüpikaknaid tavaliste akendena';
$labels['forwardmode'] = 'Kirja edastamine';
$labels['inline'] = 'kirja sees';
$labels['asattachment'] = 'manusena';
-$labels['folder'] = 'Kaust';
-$labels['folders'] = 'Kaustad';
-$labels['foldername'] = 'Kausta nimi';
-$labels['subscribed'] = 'Näitan';
+$labels['replyallmode'] = 'Vaike käitumine [Vasta kõigile] nupul';
+$labels['replyalldefault'] = 'Vasta kõigile';
+$labels['replyalllist'] = 'vasta ainult postiloendile (juhul kui leitud)';
+$labels['folder'] = 'Kaust';
+$labels['folders'] = 'Kaustad';
+$labels['foldername'] = 'Kausta nimi';
+$labels['subscribed'] = 'Näitan';
$labels['messagecount'] = 'Kirju';
-$labels['create'] = 'Loo';
-$labels['createfolder'] = 'Uue kausta loomine';
-$labels['managefolders'] = 'Halda kaustu';
+$labels['create'] = 'Loo';
+$labels['createfolder'] = 'Uue kausta loomine';
+$labels['managefolders'] = 'Halda kaustu';
$labels['specialfolders'] = 'Erilised kaustad';
$labels['properties'] = 'Omadused';
$labels['folderproperties'] = 'Kausta omadused';
@@ -441,9 +487,13 @@ $labels['info'] = 'Teave';
$labels['getfoldersize'] = 'Kliki kausta suuruse teadasaamiseks';
$labels['changesubscription'] = 'Kliki kausta tellimuste muutmiseks';
$labels['foldertype'] = 'Kausta tüüp';
-$labels['personalfolder'] = 'Isiklik kaust';
-$labels['otherfolder'] = 'Teiste kasutajate kaust';
-$labels['sharedfolder'] = 'Avalik kaust';
+$labels['personalfolder'] = 'Isiklik kaust';
+$labels['otherfolder'] = 'Teiste kasutajate kaust';
+$labels['sharedfolder'] = 'Avalik kaust';
+$labels['findfolders'] = 'Otsi kaustasi';
+$labels['namespace.personal'] = 'Isiklik';
+$labels['namespace.other'] = 'Teised kasutajad';
+$labels['namespace.shared'] = 'Jagatud';
$labels['sortby'] = 'Järjesta';
$labels['sortasc'] = 'Järjesta kasvavalt';
$labels['sortdesc'] = 'Järjesta kahanevalt';
@@ -476,4 +526,51 @@ $labels['vietnamese'] = 'vietnami';
$labels['japanese'] = 'jaapani';
$labels['korean'] = 'korea';
$labels['chinese'] = 'hiina';
+$labels['arialabeltopnav'] = 'Akna kontroll';
+$labels['arialabeltasknav'] = 'Rakenduse ülesanded';
+$labels['arialabeltoolbar'] = 'Rakenduse tööriba';
+$labels['arialabelactivetask'] = 'Aktiivne ülesanne';
+$labels['arialabelmessagessearchfilter'] = 'E-kirja näitamise filter';
+$labels['arialabelmailsearchform'] = 'E-kirja otsimise vorm';
+$labels['arialabelcontactsearchform'] = 'Kontakti otsimise vorm';
+$labels['arialabelmailquicksearchbox'] = 'E-kirja otsingu sisend';
+$labels['arialabelquicksearchbox'] = 'Otsingu sisend';
+$labels['arialabelfoldersearchfilter'] = 'Kausta näitamise filter';
+$labels['arialabelfoldersearchform'] = 'Kausta otsimise vorm';
+$labels['arialabelfolderlist'] = 'E-kirja kausta valik';
+$labels['arialabelmessagelist'] = 'E-kirjade näitamine';
+$labels['arialabelmailpreviewframe'] = 'Kirja eelvaade';
+$labels['arialabelmailboxmenu'] = 'Kausta tegevuste menüü';
+$labels['arialabellistselectmenu'] = 'Nimekirja valiku menüü';
+$labels['arialabelthreadselectmenu'] = 'Lõimede näitamise menüü';
+$labels['arialabelmessagelistoptions'] = 'Kirjade näitamise ja sorteerimise võimalused';
+$labels['arialabelmailimportdialog'] = 'Kirja importi dialoog';
+$labels['arialabelmessagenav'] = 'Kirja navigatsioon';
+$labels['arialabelmessagebody'] = 'Kirja sisu';
+$labels['arialabelmessageactions'] = 'Kirja tegevus';
+$labels['arialabelcontactquicksearch'] = 'Kontakti otsingu vorm';
+$labels['arialabelcontactsearchbox'] = 'Kontakti otsingu sisend';
+$labels['arialabelmessageheaders'] = 'Kirja päis';
+$labels['arialabelforwardingoptions'] = 'Edasisuunamise valikud';
+$labels['arialabelreplyalloptions'] = 'Vasta kõigile valikud';
+$labels['arialabelmoremessageactions'] = 'Rohkem kirja tegevusi';
+$labels['arialabelmarkmessagesas'] = 'Märgi valitud kirjad';
+$labels['arialabelattachmentuploadform'] = 'Manuse ülesselaadimise vorm';
+$labels['arialabelattachmentpreview'] = 'Manuse eelvaade';
+$labels['ariasummarycomposecontacts'] = 'Nimekiri kontaktidest ja gruppidest keda valida vastuvõtjateks';
+$labels['arialabelcontactexportoptions'] = 'Kontakti ekspordi võimalused';
+$labels['arialabelabookgroupoptions'] = 'Telefoniraamatu/grupi võimalused';
+$labels['arialabelpreferencesform'] = 'Eelistuste vorm';
+$labels['arialabelidentityeditfrom'] = 'Identiteedi muutmis vorm';
+$labels['arialabelresonseeditfrom'] = 'Vastuse muutmis vorm';
+$labels['arialabelsearchterms'] = 'Otsingusõnad';
+$labels['helplistnavigation'] = 'Näita klaviatuuri navigatsiooni';
+$labels['helplistkeyboardnavigation'] = "Nooled üles/alla: Muuda rida fokuseeri/vali
+Tühik: Vali fokuseeritud rida
+Shift + üles/alla: Vali lisaks rida alt/ülevalt
+Ctrl + Space: Lisa fokuseeritud rida valikusse/eemalda valikust";
+$labels['helplistkeyboardnavmessages'] = "Nooled paremale/vasakule: laienda/peida kirjade lõimed
+Enter: Ava valitud/fokuseeritud kiri
+Delete: Liigutda valitud kiri prügikasti.";
+$labels['helplistkeyboardnavcontacts'] = "Enter: Ava valitud/fokuseeritud kontakt";
?>
diff --git a/program/localization/et_EE/messages.inc b/program/localization/et_EE/messages.inc
index 07443d426..23f232697 100644
--- a/program/localization/et_EE/messages.inc
+++ b/program/localization/et_EE/messages.inc
@@ -128,7 +128,6 @@ $messages['importmessagesuccess'] = '$nr kirja edukalt imporditud';
$messages['importmessageerror'] = 'Import nurjus! Laaditud fail ei ole kirja ega postkasti fail';
$messages['opnotpermitted'] = 'Tegevus pole lubatud!';
$messages['nofromaddress'] = 'Valitud identiteedil puudub e-posti aadress';
-$messages['editorwarning'] = 'Klaarteksti redaktorile lülitamine kaotab kogu teksti vorminduse. Soovid jätkata?';
$messages['httpreceivedencrypterror'] = 'Viga seadistustes. Võta kohe oma süsteemiadministraatoriga ühendust. <b>Sinu kirja polnud võimalik ära saata.</b>';
$messages['smtpconnerror'] = 'SMTP tõrge ($code): serveriga ühendumine nurjus';
$messages['smtpautherror'] = 'SMTP tõrge ($code): autentimine nurjus';
diff --git a/program/localization/eu_ES/labels.inc b/program/localization/eu_ES/labels.inc
index 8bf6e2fef..18425ea9a 100644
--- a/program/localization/eu_ES/labels.inc
+++ b/program/localization/eu_ES/labels.inc
@@ -131,16 +131,24 @@ $labels['moreactions'] = 'Ekintza gehiago...';
$labels['more'] = 'Gehiago';
$labels['back'] = 'Atzera';
$labels['options'] = 'Aukerak';
+$labels['first'] = 'Lehenengoa';
+$labels['last'] = 'Azkena';
+$labels['previous'] = 'Aurrekoa';
+$labels['next'] = 'Hurrengoa';
$labels['select'] = 'Hautatu';
$labels['all'] = 'Denak';
$labels['none'] = 'Bat ere ez';
$labels['currpage'] = 'Uneko orrialdea';
+$labels['isread'] = 'Irakurri';
$labels['unread'] = 'Irakurri gabeak';
$labels['flagged'] = 'Banderaduna';
+$labels['unflagged'] = 'Etiketatu gabe';
$labels['unanswered'] = 'Erantzun gabea';
$labels['withattachment'] = 'Eranskinarekin';
$labels['deleted'] = 'Ezabatuak';
$labels['undeleted'] = 'Ezabatu gabeak';
+$labels['replied'] = 'Erantzunda';
+$labels['forwarded'] = 'Birbidalita';
$labels['invert'] = 'Alderantzizkatu';
$labels['filter'] = 'Iragazkia';
$labels['list'] = 'Zerrenda';
@@ -171,6 +179,11 @@ $labels['importmessages'] = 'Inportatu mezuak';
$labels['quota'] = 'Disko erabilera';
$labels['unknown'] = 'ezezaguna';
$labels['unlimited'] = 'mugagabea';
+$labels['quotatype'] = 'Kuota mota';
+$labels['quotatotal'] = 'Muga';
+$labels['quotaused'] = 'Erabilita';
+$labels['quotastorage'] = 'Diskoko tokia';
+$labels['quotamessage'] = 'Mezuen kontua';
$labels['quicksearch'] = 'Bilaketa azkarra';
$labels['resetsearch'] = 'Bilaketa berrabiarazi';
$labels['searchmod'] = 'Bilatu modifikadoreak';
@@ -178,6 +191,10 @@ $labels['msgtext'] = 'Mezu osoa';
$labels['body'] = 'Gorputza';
$labels['type'] = 'Mota';
$labels['namex'] = 'Izena';
+$labels['searchscope'] = 'Esparrua';
+$labels['currentfolder'] = 'Uneko karpeta';
+$labels['subfolders'] = 'Hau eta azpikarpetak';
+$labels['allfolders'] = 'Karpeta guztiak';
$labels['openinextwin'] = 'Lehio berrian ireki';
$labels['emlsave'] = 'Deskargatu (.eml)';
$labels['changeformattext'] = 'Bistaratu testua formaturik gabe';
@@ -193,6 +210,10 @@ $labels['returnreceipt'] = 'Bidali jasotze-agiria';
$labels['dsn'] = 'Entrega-egoeraren jakinarazpena';
$labels['mailreplyintro'] = '$date egunean, $sender-(e)k idatzi du:';
$labels['originalmessage'] = 'Jatorrizko mezua';
+$labels['selectimage'] = 'Hautatu irudia';
+$labels['addimage'] = 'Gehitu irudia';
+$labels['selectmedia'] = 'Hautatu bideoa';
+$labels['addmedia'] = 'Gehitu bideoa';
$labels['editidents'] = 'Editatu identitateak';
$labels['spellcheck'] = 'Ortografia-egiaztatu';
$labels['checkspelling'] = 'Egiaztaketa ortografikoa';
@@ -203,9 +224,10 @@ $labels['restoremessage'] = 'Leheneratu mezua?';
$labels['responses'] = 'Erantzunak';
$labels['insertresponse'] = 'Txertatu erantzun bat';
$labels['manageresponses'] = 'Kudeatu erantzunak';
-$labels['savenewresponse'] = 'Gorde erantzun berria';
-$labels['editresponses'] = 'Editatu erantzunak';
+$labels['newresponse'] = 'Sortu erantzun berria';
+$labels['addresponse'] = 'Gehitu erantzuna';
$labels['editresponse'] = 'Editatu erantzuna';
+$labels['editresponses'] = 'Editatu erantzunak';
$labels['responsename'] = 'Izena';
$labels['responsetext'] = 'Erantzun testua';
$labels['attach'] = 'Erantsi';
@@ -214,6 +236,7 @@ $labels['upload'] = 'Igo';
$labels['uploadprogress'] = '$percent ($current/$total)';
$labels['close'] = 'Itxi';
$labels['messageoptions'] = 'Mezu-aukerak';
+$labels['togglecomposeoptions'] = 'Toggle konposizio aukerak';
$labels['low'] = 'Baxua';
$labels['lowest'] = 'Baxuena';
$labels['normal'] = 'Normala';
@@ -270,6 +293,7 @@ $labels['assistant'] = 'Laguntzailea';
$labels['spouse'] = 'Ezkontidea';
$labels['allfields'] = 'Eremu guztiak';
$labels['search'] = 'Bilatu';
+$labels['searchfor'] = '"$q" bilatu';
$labels['advsearch'] = 'Bilaketa aurreratua';
$labels['advanced'] = 'Aurreratua';
$labels['other'] = 'Beste';
@@ -288,11 +312,13 @@ $labels['typehomepage'] = 'Etxeko orria';
$labels['typeblog'] = 'Bloga';
$labels['typeprofile'] = 'Profila';
$labels['addfield'] = 'Gehitu eremua...';
-$labels['addcontact'] = 'Gehitu kontaktu berria';
+$labels['addcontact'] = 'Gehitu kontaktua';
$labels['editcontact'] = 'Editatu kontaktua';
$labels['contacts'] = 'Kontaktuak';
$labels['contactproperties'] = 'Kontaktuen ezaugarriak';
+$labels['contactnameandorg'] = 'Izena eta erakundea';
$labels['personalinfo'] = 'Informazio pertsonala';
+$labels['contactphoto'] = 'Kontaktuaren argazkia';
$labels['edit'] = 'Editatu';
$labels['cancel'] = 'Utzi';
$labels['save'] = 'Gorde';
@@ -301,7 +327,7 @@ $labels['rename'] = 'Berrizendatu';
$labels['addphoto'] = 'Gehitu';
$labels['replacephoto'] = 'Ordeztu';
$labels['uploadphoto'] = 'Kargatu argazkia';
-$labels['newcontact'] = 'Sortu kontaktu-txartel berria';
+$labels['newcontact'] = 'Sortu kontaktu berria';
$labels['deletecontact'] = 'Ezabatu hautatutako kontaktuak';
$labels['composeto'] = 'Idatzi mezua honi:';
$labels['contactsfromto'] = '$from -tik $to -ra $count kontaktuak';
@@ -310,10 +336,11 @@ $labels['export'] = 'Esportatu';
$labels['exportall'] = 'Esportatu dena';
$labels['exportsel'] = 'Esportatu hautaketa';
$labels['exportvcards'] = 'Esportatu kontaktuak vCard formatuan';
-$labels['newcontactgroup'] = 'Sortu kontaktu-talde berria';
+$labels['newgroup'] = 'Sortu talde berria';
$labels['grouprename'] = 'Berrizendatu taldea';
$labels['groupdelete'] = 'Ezabatu taldea';
$labels['groupremoveselected'] = 'Ezabatu taldetik hautatutako kontaktuak';
+$labels['uponelevel'] = 'Igo maila bat';
$labels['previouspage'] = 'Aurreko orria ikusi';
$labels['firstpage'] = 'Lehenengo orria ikusi';
$labels['nextpage'] = 'Hurrengo orria ikusi';
@@ -340,10 +367,10 @@ $labels['preferences'] = 'Hobespenak';
$labels['userpreferences'] = 'Erabiltzaile hobespenak';
$labels['editpreferences'] = 'Erabiltzaile hobespenak editatu';
$labels['identities'] = 'Identitateak';
-$labels['manageidentities'] = 'Kontu honetako identitateak kudeatu';
-$labels['newidentity'] = 'Identitate berria';
-$labels['newitem'] = 'Elementu berria';
-$labels['edititem'] = 'Elementua Editatu';
+$labels['manageidentities'] = 'Kudeatu identitateak';
+$labels['newidentity'] = 'Sortu identitate berria';
+$labels['addidentity'] = 'Gehitu identitatea';
+$labels['editidentity'] = 'Editatu identitatea';
$labels['preferhtml'] = 'HTML nahiago';
$labels['defaultcharset'] = 'Lehenetsitako karaktere-jokoa';
$labels['htmlmessage'] = 'HTML mezua';
@@ -401,7 +428,9 @@ $labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (beste batzuk)';
$labels['force7bit'] = 'Erabili MIME kodeketa 8 bitekok karakterentzat';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'Aukera aurreratuak';
+$labels['toggleadvancedoptions'] = 'Toggle aukera aurreratuak';
$labels['focusonnewmessage'] = 'Fokatu leihoa mezu berrian';
$labels['checkallfolders'] = 'Egiaztatu karpeta guztiak mezu berrien bila';
$labels['displaynext'] = 'Mezu bat ezabatu/mugitzean erakutsi hurrengo mezua';
@@ -443,14 +472,14 @@ $labels['asattachment'] = 'eranskin moduan';
$labels['replyallmode'] = '[Erantzun denei] botoiaren lehenetsitako ekintza';
$labels['replyalldefault'] = 'erantzun denei';
$labels['replyalllist'] = 'erantzun posta zerrendara soilik (aurkitzekotan)';
-$labels['folder'] = 'Karpeta';
-$labels['folders'] = 'Karpetak';
-$labels['foldername'] = 'Karpeta izena';
-$labels['subscribed'] = 'Harpideturik';
+$labels['folder'] = 'Karpeta';
+$labels['folders'] = 'Karpetak';
+$labels['foldername'] = 'Karpeta izena';
+$labels['subscribed'] = 'Harpideturik';
$labels['messagecount'] = 'Mezuak';
-$labels['create'] = 'Sortu';
-$labels['createfolder'] = 'Karpeta berria sortu';
-$labels['managefolders'] = 'Karpeta kudeaketa';
+$labels['create'] = 'Sortu';
+$labels['createfolder'] = 'Karpeta berria sortu';
+$labels['managefolders'] = 'Karpeta kudeaketa';
$labels['specialfolders'] = 'Karpeta bereziak';
$labels['properties'] = 'Ezaugarriak';
$labels['folderproperties'] = 'Karpeta-ezaugarriak';
@@ -460,9 +489,9 @@ $labels['info'] = 'Informazioa';
$labels['getfoldersize'] = 'Klikatu ikusteko karpetaren tamaina';
$labels['changesubscription'] = 'Klikatu harpidetza aldatzeko';
$labels['foldertype'] = 'Karpeta mota';
-$labels['personalfolder'] = 'Karpeta pribatua';
-$labels['otherfolder'] = 'Beste erabiltzaileen karpetak';
-$labels['sharedfolder'] = 'Karpeta publikoa';
+$labels['personalfolder'] = 'Karpeta pribatua';
+$labels['otherfolder'] = 'Beste erabiltzaileen karpetak';
+$labels['sharedfolder'] = 'Karpeta publikoa';
$labels['sortby'] = 'Honela ordenatu';
$labels['sortasc'] = 'Goraka ordenatu';
$labels['sortdesc'] = 'Beheraka ordenatu';
@@ -495,4 +524,51 @@ $labels['vietnamese'] = 'Vietnamdarra';
$labels['japanese'] = 'Japoniarra';
$labels['korean'] = 'Korearra';
$labels['chinese'] = 'Txinatarra';
+$labels['arialabeltopnav'] = 'Leihoen kontrola';
+$labels['arialabeltasknav'] = 'Aplikazioaren atazak';
+$labels['arialabeltoolbar'] = 'Aplikazioaren tresna barra';
+$labels['arialabelactivetask'] = 'Ataza aktiboa';
+$labels['arialabelmessagessearchfilter'] = 'E-posten zerrendako iragazkia';
+$labels['arialabelmailsearchform'] = 'Mezu elektronikoak bilatzeko formularioa';
+$labels['arialabelcontactsearchform'] = 'Kontaktuak bilatzeko formularioa';
+$labels['arialabelmailquicksearchbox'] = 'E-posta bilaketa sarrera';
+$labels['arialabelquicksearchbox'] = 'Bilaketa sarrera';
+$labels['arialabelfolderlist'] = 'E-posta karpeta hautaketa';
+$labels['arialabelmessagelist'] = 'E-posta mezuen zerrendatzea';
+$labels['arialabelmailpreviewframe'] = 'Mezuaren aurrebista';
+$labels['arialabelmailboxmenu'] = 'Karpetako ekintzen menua';
+$labels['arialabellistselectmenu'] = 'Zerrenda hautatzeko menua';
+$labels['arialabelthreadselectmenu'] = 'Hariak zerrendatzeko menua';
+$labels['arialabelmessagelistoptions'] = 'Mezuen zerrenda bistaratzeko eta ordenatzeko aukerak';
+$labels['arialabelmailimportdialog'] = 'Mezuak inportatzeko elkarrizketa';
+$labels['arialabelmessagenav'] = 'Mezu nabigazioa';
+$labels['arialabelmessagebody'] = 'Mezuaren gorputza';
+$labels['arialabelmessageactions'] = 'Mezuen ekintzak';
+$labels['arialabelcontactquicksearch'] = 'Kontaktuak bilatzeko formularioa';
+$labels['arialabelcontactsearchbox'] = 'Kontaktuak bilatzeko sarrera';
+$labels['arialabelmessageheaders'] = 'Mezuen goiburuak';
+$labels['arialabelforwardingoptions'] = 'Birbidaltzeko aukerak';
+$labels['arialabelreplyalloptions'] = 'Guztiei erantzuteko aukerak';
+$labels['arialabelmoremessageactions'] = 'Mezu ekintza gehiago';
+$labels['arialabelmarkmessagesas'] = 'Markatu hautatutako mezua gisa honetara...';
+$labels['arialabelcomposeoptions'] = 'Konposizio aukerak';
+$labels['arialabelresponsesmenu'] = 'Erantzun finkoen menua';
+$labels['arialabelattachmentuploadform'] = 'Eranskinak kargatzeko formularioa';
+$labels['arialabelattachmentpreview'] = 'Eranskinaren aurrebista';
+$labels['ariasummarycomposecontacts'] = 'Kontaktuak eta taldeak hartzaile gisa hautatzeko zerrenda';
+$labels['arialabelcontactexportoptions'] = 'Kontaktuak esportatzeko aukerak';
+$labels['arialabelabookgroupoptions'] = 'Kontaktu eta taldeen helbide-liburuaren aukerak';
+$labels['arialabelpreferencesform'] = 'Hobespenen formularioa';
+$labels['arialabelidentityeditfrom'] = 'Identitatea editatzeko formularioa';
+$labels['arialabelresonseeditfrom'] = 'Erantzuna editatzeko formularioa';
+$labels['helplistnavigation'] = 'Zerrendatu teklatuaren nabigazioa';
+$labels['helplistkeyboardnavigation'] = "Gezia gora/behera: Mugitu ilararen fokua/hautaketa.
+Zuriunea: Hautatu fokatutako ilara.
+Maius + gora/behera: Hautatu beste ilara goian/behean.
+Ctrl + Zuriunea: Gehitu fokatutako ilara hautaketara/ezabatu hautaketatik.";
+$labels['helplistkeyboardnavmessages'] = "Gezia eskuin/ezker: zabaldu/tolestu mezuaren haria (bakarrik haria moduan).
+Sartu: Ireki hautatutako/fokatutako mezua.
+Ezabatu: Eraman hautatutako mezuak zakarrontzira.
+";
+$labels['helplistkeyboardnavcontacts'] = "Sartu: Irekin hautatutako/fokatutako kontaktua.";
?>
diff --git a/program/localization/eu_ES/messages.inc b/program/localization/eu_ES/messages.inc
index 2352be1f0..bdaeaf4fa 100644
--- a/program/localization/eu_ES/messages.inc
+++ b/program/localization/eu_ES/messages.inc
@@ -17,12 +17,14 @@
*/
$messages['errortitle'] = 'Errore bat gertatu da!';
$messages['loginfailed'] = 'Saio hasierak huts egin du.';
-$messages['cookiesdisabled'] = 'Zure nabigatzaileak ez ditu cookie-rik onartzen';
-$messages['sessionerror'] = 'Zure saioa baliogabea da edo iraungita dago';
-$messages['storageerror'] = 'Huts egin du biltegiratze-zerbitzarira konektatzean';
+$messages['cookiesdisabled'] = 'Zure nabigatzaileak ez ditu cookie-rik onartzen.';
+$messages['sessionerror'] = 'Zure saioa baliogabea da edo iraungita dago.';
+$messages['storageerror'] = 'Huts egin du biltegiratze-zerbitzarira konektatzean.';
$messages['servererror'] = 'Zerbitzari-errorea!';
$messages['servererrormsg'] = 'Zerbitzari-errorea: $msg';
+$messages['connerror'] = 'Konexio errorea (zerbitzaria atzitzeak huts egin du)!';
$messages['dberror'] = 'Datu-basearen errorea!';
+$messages['windowopenerror'] = 'Popup leihoa blokeatua';
$messages['requesttimedout'] = 'Eskaera denboraz kanpo.';
$messages['errorreadonly'] = 'Ezin da ekintza burutu. Karpeta soilik irakurtzekoa da.';
$messages['errornoperm'] = 'Ezin da ekintza burutu. Baimena ukatua.';
@@ -30,8 +32,10 @@ $messages['erroroverquota'] = 'Ezin da ekintza burutu. Diskoan ez dago tokirik.'
$messages['erroroverquotadelete'] = 'Diskoan ez dago tokirik. Erabili SHIFT+DEL mezua ezabatzeko.';
$messages['invalidrequest'] = 'Eskaera ez da baliozkoa! Datuak ez dira gorde.';
$messages['invalidhost'] = 'Zerbitzari-izena ez da baliozkoa.';
-$messages['nomessagesfound'] = 'Ez da mezurik aurkitu posta kutxa honetan';
+$messages['nomessagesfound'] = 'Ez da mezurik aurkitu postontzi honetan.';
$messages['loggedout'] = 'Saioa behar bezala amaitu duzu. Agur!';
+$messages['mailboxempty'] = 'Postontzia hutsik dago';
+$messages['nomessages'] = 'Ez dago mezurik';
$messages['refreshing'] = 'Freskatzen...';
$messages['loading'] = 'Kargatzen...';
$messages['uploading'] = 'Fitxategia kargatzen...';
@@ -39,25 +43,25 @@ $messages['uploadingmany'] = 'Fitxategiak kargatzen...';
$messages['loadingdata'] = 'Datuak kargatzen...';
$messages['checkingmail'] = 'Mezu berrien bila arakatzen...';
$messages['sendingmessage'] = 'Mezua bidaltzen...';
-$messages['messagesent'] = 'Mezua behar bezala bidali da';
+$messages['messagesent'] = 'Mezua behar bezala bidali da.';
$messages['savingmessage'] = 'Mezua gordetzen...';
-$messages['messagesaved'] = 'Mezua zirriborroetan gordea';
-$messages['successfullysaved'] = 'Behar bezala gorde da';
+$messages['messagesaved'] = 'Mezua zirriborroetan gordea.';
+$messages['successfullysaved'] = 'Behar bezala gorde da.';
$messages['savingresponse'] = 'Erantzun-testua gordetzen...';
$messages['deleteresponseconfirm'] = 'Seguru zaude erantzun-testu hau ezabatu nahi duzula?';
-$messages['addedsuccessfully'] = 'Txartela behar bezala gehitu da helbide liburura';
-$messages['contactexists'] = 'ePosta honetako txartel bat badago dagoeneko';
+$messages['addedsuccessfully'] = 'Kontaktua behar bezala gehitu da helbide-liburura.';
+$messages['contactexists'] = 'Dagoeneko e-posta helbide berdina duen kontaktu bat dago.';
$messages['contactnameexists'] = 'Lehendik badago izen hori duen kontaktua.';
$messages['blockedimages'] = 'Zure pribazitatea mantentzeko urruneko irudiak blokeatu egin dira.';
$messages['encryptedmessage'] = 'Hau enkriptaturiko mezu bat da eta ezin da bistarazi. Barkatu!';
-$messages['nocontactsfound'] = 'Ez da txartelik aurkitu';
-$messages['contactnotfound'] = 'Eskatutako txartela ez da aurkitu';
+$messages['nocontactsfound'] = 'Ez da kontakturik aurkitu.';
+$messages['contactnotfound'] = 'Eskatutako kontaktua ez da aurkitu.';
$messages['contactsearchonly'] = 'Sartu kontaktua aurkitzeko bilaketa daturen bat.';
-$messages['sendingfailed'] = 'Huts mezua bidaltzerakoan';
+$messages['sendingfailed'] = 'Huts mezua bidaltzerakoan.';
$messages['senttooquickly'] = 'Itxaron $sec segundo mezua bidali aurretik, mesedez.';
$messages['errorsavingsent'] = 'Errore bat gertatu da bidalitako mezua gordetzean.';
$messages['errorsaving'] = 'Errore bat gertatu da gordetzean.';
-$messages['errormoving'] = 'Ezin da mezua mugitu';
+$messages['errormoving'] = 'Ezin d(ir)a mezua(k) mugitu.';
$messages['errorcopying'] = 'Ezin d(ir)a kopiatu mezua(k).';
$messages['errordeleting'] = 'Ezin da mezua ezabatu';
$messages['errormarking'] = 'Ezin d(ir)a markatu mezua(k).';
@@ -90,6 +94,7 @@ $messages['contactsearchsuccessful'] = '$nr kontaktu aurkitu dira.';
$messages['searchnomatch'] = 'Bilaketak ez du emaitzarik itzuli';
$messages['searching'] = 'Bilatzen...';
$messages['checking'] = 'Arakatzen...';
+$messages['stillsearching'] = 'Oraindik bilatzen...';
$messages['nospellerrors'] = 'Ez da ortografia errorerik aurkitu';
$messages['folderdeleted'] = 'Karpeta behar bezala ezabatu da';
$messages['foldersubscribed'] = 'Karpeta ongi harpidetu da.';
@@ -130,10 +135,10 @@ $messages['importformaterror'] = 'Huts egin du inportatzean. Kargatu duzun fitxa
$messages['importconfirm'] = '<b>Ongi inportatu dira $inserted kontaktu</b>';
$messages['importconfirmskipped'] = '<b>Saltatu dira $skipped sarrera</b>';
$messages['importmessagesuccess'] = '$nr mezu ongi inportatu dira.';
-$messages['importmessageerror'] = 'Inportazio akatsa! Kargatutako fitxategia ez da baliozko mezua edo posta-fitxategia.';
+$messages['importmessageerror'] = 'Inportazio akatsa! Kargatutako fitxategia ez da baliozko mezua edo postontzi-fitxategia';
$messages['opnotpermitted'] = 'Ekintza ez baimendua!';
$messages['nofromaddress'] = 'Helbide elektronikoa falta da hautatutako identitatean.';
-$messages['editorwarning'] = 'Formaturik gabeko testu-editorera pasatzeak ekar dezake testu-formatu guztien galera. Jarraitu nahi duzu?';
+$messages['editorwarning'] = 'Editore mota aldatzeak ekar dezake testuaren formatua galtzea. Jarraitu nahi duzu?';
$messages['httpreceivedencrypterror'] = 'Ezarpen akats larria gertatu da. Jarri harremanetan zure administratzailearekin ahalik eta lasterren. <b>Zure mezua ezin da bidali.</b>';
$messages['smtpconnerror'] = 'SMTP errorea ($code): Zerbitzariarekiko konexioak huts egin du.';
$messages['smtpautherror'] = 'SMTP errorea ($code): Egiaztapenak huts egin du.';
diff --git a/program/localization/fa_AF/labels.inc b/program/localization/fa_AF/labels.inc
index 4abf65245..fdd0d3bae 100644
--- a/program/localization/fa_AF/labels.inc
+++ b/program/localization/fa_AF/labels.inc
@@ -159,13 +159,11 @@ $labels['name'] = 'نشان دادن نام';
$labels['firstname'] = 'اسم/ نام';
$labels['surname'] = 'اسم فاميلي / تخلص';
$labels['email'] = 'ايميل';
-$labels['addcontact'] = 'آدرس جديد را علاوه کنيد';
$labels['editcontact'] = 'آدرس جدید را تصحیح کنید';
$labels['edit'] = 'تصحيح کردن';
$labels['cancel'] = 'لغو کردن/ حذف کردن';
$labels['save'] = 'حفظ کردن';
$labels['delete'] = 'حذف کردن';
-$labels['newcontact'] = 'کارت تماس جديد را بسازيد';
$labels['deletecontact'] = 'آدرس های انتخاب شده را حذف کنيد';
$labels['composeto'] = 'ايمیل را نوشته کنيد به';
$labels['contactsfromto'] = 'از$count$to به $from آدرس ها از';
@@ -188,10 +186,6 @@ $labels['preferences'] = 'ترجيحات';
$labels['userpreferences'] = 'ترجيحات کاربر';
$labels['editpreferences'] = 'تصحيح کردن ترجيحات کاربر';
$labels['identities'] = 'شناخت ها';
-$labels['manageidentities'] = 'اداره کردن شناسای ها برای اين آدرس';
-$labels['newidentity'] = 'شناخت جديد';
-$labels['newitem'] = 'فقره جديد';
-$labels['edititem'] = 'تصحيح کردن فقره';
$labels['preferhtml'] = 'نشان دادن ايچ ټي ام ايل';
$labels['htmlmessage'] = 'پيغام ايچ ټي‌ام ايل';
$labels['prettydate'] = 'تاريخ های مهم';
@@ -231,17 +225,18 @@ $labels['mimeparamfolding'] = 'نام های ضمیمه ها';
$labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (دیگر ها)';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'انتخاب های پیشرفته';
$labels['focusonnewmessage'] = 'فوکس دادن پینجره مرورگر به پیام جدید';
$labels['checkallfolders'] = 'تمام پوشه ها را بخاطر پیام های جدید بررسی کنید';
-$labels['folder'] = 'پوشه';
-$labels['folders'] = 'پوشه ها';
-$labels['foldername'] = 'نام پوشه';
-$labels['subscribed'] = 'مشترک';
+$labels['folder'] = 'پوشه';
+$labels['folders'] = 'پوشه ها';
+$labels['foldername'] = 'نام پوشه';
+$labels['subscribed'] = 'مشترک';
$labels['messagecount'] = 'پيغام ها';
-$labels['create'] = 'ایجاد کردن';
-$labels['createfolder'] = 'ایجاد پوشه جدید';
-$labels['managefolders'] = 'اداره کردن پوشه ها';
+$labels['create'] = 'ایجاد کردن';
+$labels['createfolder'] = 'ایجاد پوشه جدید';
+$labels['managefolders'] = 'اداره کردن پوشه ها';
$labels['specialfolders'] = 'پوشه های مخصوص';
$labels['sortby'] = 'فهرست کردن توسط';
$labels['sortasc'] = 'فهرست کردن از طرف بالا به پايين';
@@ -250,4 +245,7 @@ $labels['B'] = 'بایت';
$labels['KB'] = 'کیلو بایت';
$labels['MB'] = 'میگا بایت';
$labels['GB'] = 'گیگا بایت';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/fa_AF/messages.inc b/program/localization/fa_AF/messages.inc
index 10bd8f4fe..d9349bf89 100644
--- a/program/localization/fa_AF/messages.inc
+++ b/program/localization/fa_AF/messages.inc
@@ -93,5 +93,4 @@ $messages['importwait'] = 'در حال وارد کردن لطفا صبر کنی
$messages['importconfirm'] = '<b>Successfully imported $inserted contacts, $skipped existing entries skipped</b>:<p><em>$names</em></p>';
$messages['opnotpermitted'] = 'اجازه این عملکرد را ندارید';
$messages['nofromaddress'] = 'بخش ایمیل آدرس در شناخت نامه انتخاب شده مفقود است.';
-$messages['editorwarning'] = 'استفاده از تصحیح کننده متن ساده تمام فرمت و ساختار داده شده را از بین خواهد برد. آیا میخواهید که ادامه بدهید.';
?>
diff --git a/program/localization/fa_IR/labels.inc b/program/localization/fa_IR/labels.inc
index a6b978f6e..e03167d45 100644
--- a/program/localization/fa_IR/labels.inc
+++ b/program/localization/fa_IR/labels.inc
@@ -131,16 +131,23 @@ $labels['moreactions'] = 'کارهای دیگر...';
$labels['more'] = 'بيشتر';
$labels['back'] = 'بازگشت';
$labels['options'] = 'گزینه‌ها';
+$labels['first'] = 'اول';
+$labels['last'] = 'آخر';
+$labels['previous'] = 'قبل';
+$labels['next'] = 'بعد';
$labels['select'] = 'انتخاب';
$labels['all'] = 'همه';
$labels['none'] = 'هیچ‌کدام';
$labels['currpage'] = 'صفحه جاری';
+$labels['isread'] = 'خوانده شده';
$labels['unread'] = 'خوانده‌نشده';
$labels['flagged'] = 'پرچم‌دار';
$labels['unanswered'] = 'پاسخ داده نشده';
$labels['withattachment'] = 'با پیوست';
$labels['deleted'] = 'حذف شده';
$labels['undeleted'] = 'حذف نشده';
+$labels['replied'] = 'پاسخ داده شده';
+$labels['forwarded'] = 'ارجاع داده شده';
$labels['invert'] = 'وارونه';
$labels['filter'] = 'صافی';
$labels['list'] = 'فهرست';
@@ -178,6 +185,7 @@ $labels['msgtext'] = 'کل پیغام';
$labels['body'] = 'بدنه';
$labels['type'] = 'نوع';
$labels['namex'] = 'نام';
+$labels['allfolders'] = 'همه پوشه‌ها';
$labels['openinextwin'] = 'باز کردن در پنجره‌ی جدید';
$labels['emlsave'] = 'بارگیری (.eml)';
$labels['changeformattext'] = 'نمایش در قالب متنی';
@@ -193,6 +201,8 @@ $labels['returnreceipt'] = 'رسید دریافت';
$labels['dsn'] = 'اعلام وضعیت دریافت';
$labels['mailreplyintro'] = 'در $date، $sender نوشته است:';
$labels['originalmessage'] = 'پیغام اصلی';
+$labels['addimage'] = 'افزودن تصویر';
+$labels['addmedia'] = 'افزودن رسانه';
$labels['editidents'] = 'ویرایش شناسه‌ها';
$labels['spellcheck'] = 'املاء';
$labels['checkspelling'] = 'بررسی املایی';
@@ -203,9 +213,9 @@ $labels['restoremessage'] = 'بازیابی پیغام؟';
$labels['responses'] = 'پاسخ‌ها';
$labels['insertresponse'] = 'درج پاسخ';
$labels['manageresponses'] = 'مدیریت پاسخ‌ها';
-$labels['savenewresponse'] = 'ذخیره پاسخ جدید';
-$labels['editresponses'] = 'ویرایش پاسخ‌ها';
+$labels['addresponse'] = 'افزودن پاسخ';
$labels['editresponse'] = 'ویرایش پاسخ';
+$labels['editresponses'] = 'ویرایش پاسخ‌ها';
$labels['responsename'] = 'نام';
$labels['responsetext'] = 'متن پاسخ';
$labels['attach'] = 'پیوست کردن';
@@ -288,11 +298,12 @@ $labels['typehomepage'] = 'صفحه خانگی';
$labels['typeblog'] = 'بلاگ';
$labels['typeprofile'] = 'نمایه';
$labels['addfield'] = 'افزودن زمینه...';
-$labels['addcontact'] = 'افزودن تماس جدید';
+$labels['addcontact'] = 'افزودن تماس';
$labels['editcontact'] = 'ویرایش تماس';
$labels['contacts'] = 'تماس‌ها';
$labels['contactproperties'] = 'خصوصیات تماس';
$labels['personalinfo'] = 'اطلاعات شخصی';
+$labels['contactphoto'] = 'تصویر تماس';
$labels['edit'] = 'ویرایش';
$labels['cancel'] = 'لغو';
$labels['save'] = 'ذخیره';
@@ -301,7 +312,6 @@ $labels['rename'] = 'تغییر نام';
$labels['addphoto'] = 'افزودن';
$labels['replacephoto'] = 'جایگزینی';
$labels['uploadphoto'] = 'بارگذاری تصویر';
-$labels['newcontact'] = 'ایجاد کارت تماس جدید';
$labels['deletecontact'] = 'حذف تماس‌های انتخاب شده';
$labels['composeto'] = 'نوشتن پست به';
$labels['contactsfromto'] = 'تماس‌های $from تا $to از $count';
@@ -310,7 +320,7 @@ $labels['export'] = 'صدور';
$labels['exportall'] = 'خارج کردن همه';
$labels['exportsel'] = 'خارج کردن انتخاب شده‌ها';
$labels['exportvcards'] = 'صدور اطلاعات تماس‌ها با فرمت vCard';
-$labels['newcontactgroup'] = 'افزودن گروه تماس جدید';
+$labels['newgroup'] = 'ایجاد گروه جدید';
$labels['grouprename'] = 'تغییر نام گروه';
$labels['groupdelete'] = 'حذف گروه';
$labels['groupremoveselected'] = 'حذف نشانی‌های انتخاب شده از گروه';
@@ -340,10 +350,7 @@ $labels['preferences'] = 'ترجیحات';
$labels['userpreferences'] = 'ترجیحات کاربر';
$labels['editpreferences'] = 'ویرایش ترجیحات کاربر';
$labels['identities'] = 'شناسه‌ها';
-$labels['manageidentities'] = 'مدیریت شناسه‌ها برای این حساب';
-$labels['newidentity'] = 'شناسه جدید';
-$labels['newitem'] = 'مورد جدید';
-$labels['edititem'] = 'ویرایش مورد';
+$labels['addidentity'] = 'افزودن هویت';
$labels['preferhtml'] = 'HTML نمایش';
$labels['defaultcharset'] = 'مجموعه نمایه پیش‌فرض';
$labels['htmlmessage'] = 'HTML پیغام';
@@ -400,6 +407,7 @@ $labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (سایر)';
$labels['force7bit'] = 'از MIME encoding برای کارکترهای ۸-بیتی استفاده کن';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'گزینه‌های پیشرفته';
$labels['focusonnewmessage'] = 'مشخص نمودن پیغام جدید';
$labels['checkallfolders'] = 'همه پوشه‌ها را برای مشاهده پیغام‌های جدید بررسی کن';
@@ -442,14 +450,14 @@ $labels['asattachment'] = 'به عنوان پیوست';
$labels['replyallmode'] = 'عمل پیش‌فرض برای دکمه [پاسخ به همه]';
$labels['replyalldefault'] = 'پاسخ به همه';
$labels['replyalllist'] = 'پاسخ به فقط لیست پستی (در صورت یافتن)';
-$labels['folder'] = 'پوشه';
-$labels['folders'] = 'پوشه‌ها';
-$labels['foldername'] = 'نام پوشه';
-$labels['subscribed'] = 'مشترک شد';
+$labels['folder'] = 'پوشه';
+$labels['folders'] = 'پوشه‌ها';
+$labels['foldername'] = 'نام پوشه';
+$labels['subscribed'] = 'مشترک شد';
$labels['messagecount'] = 'پیغام‌ها';
-$labels['create'] = 'ایجاد';
-$labels['createfolder'] = 'ایجاد پوشه‌ی جدید';
-$labels['managefolders'] = 'مدیریت پوشه‌ها';
+$labels['create'] = 'ایجاد';
+$labels['createfolder'] = 'ایجاد پوشه‌ی جدید';
+$labels['managefolders'] = 'مدیریت پوشه‌ها';
$labels['specialfolders'] = 'پوشه‌های ویژه';
$labels['properties'] = 'خصوصیات';
$labels['folderproperties'] = 'خصوصیات پوشه';
@@ -459,9 +467,9 @@ $labels['info'] = 'اطلاعات';
$labels['getfoldersize'] = 'برای فهمیدن حجم پوشه کلیک کنید';
$labels['changesubscription'] = 'برای تغییر اشتراک کلیک کنید';
$labels['foldertype'] = 'نوع پوشه';
-$labels['personalfolder'] = 'پوشه خصوصی';
-$labels['otherfolder'] = 'پوشه کاربران دیگر';
-$labels['sharedfolder'] = 'پوشه عمومی';
+$labels['personalfolder'] = 'پوشه خصوصی';
+$labels['otherfolder'] = 'پوشه کاربران دیگر';
+$labels['sharedfolder'] = 'پوشه عمومی';
$labels['sortby'] = 'مرتب‌سازی بر اساس';
$labels['sortasc'] = 'مرتب‌سازی صعودی';
$labels['sortdesc'] = 'مرتب‌سازی نزولی';
@@ -494,4 +502,9 @@ $labels['vietnamese'] = 'ویتنامی';
$labels['japanese'] = 'ژاپنی';
$labels['korean'] = 'کره‌ای';
$labels['chinese'] = 'چینی';
+$labels['arialabelactivetask'] = 'وظیفه فعال';
+$labels['arialabelmessagebody'] = 'بدنه پیغام';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/fa_IR/messages.inc b/program/localization/fa_IR/messages.inc
index e5d5667cf..4d1bf902d 100644
--- a/program/localization/fa_IR/messages.inc
+++ b/program/localization/fa_IR/messages.inc
@@ -22,6 +22,7 @@ $messages['sessionerror'] = 'نشست شما معتبر نیست، یا منقض
$messages['storageerror'] = 'اتصال به سرور مخزن ناموفق بود.';
$messages['servererror'] = 'خطای سرور!';
$messages['servererrormsg'] = 'خطای سرور: $msg';
+$messages['connerror'] = 'خطای ارتباط (عدم دسترسی به سرور)!';
$messages['dberror'] = 'خطای پایگاه داده!';
$messages['requesttimedout'] = 'زمان درخواست تمام شد';
$messages['errorreadonly'] = ' عمل مورد نظر انجام نشد. پوشه فقط خواندنی است.';
@@ -93,6 +94,7 @@ $messages['contactsearchsuccessful'] = '$nr مخاطب ییدا شد.';
$messages['searchnomatch'] = 'جست‌و‌جو هیچ نتیجه‌ای نداشت.';
$messages['searching'] = 'در حال جست‌و‌جو...';
$messages['checking'] = 'در حال بررسی...';
+$messages['stillsearching'] = 'هنور در حال جستجو...';
$messages['nospellerrors'] = 'هیچ اشکال املایی پیدا نشد.';
$messages['folderdeleted'] = 'پوشه با موفقیت حذف شد.';
$messages['foldersubscribed'] = 'اشتراک پوشه با موفقیت انجام شد.';
diff --git a/program/localization/fi_FI/labels.inc b/program/localization/fi_FI/labels.inc
index f9d6e5481..5851a306e 100644
--- a/program/localization/fi_FI/labels.inc
+++ b/program/localization/fi_FI/labels.inc
@@ -131,6 +131,8 @@ $labels['moreactions'] = 'Lisää toimintoja...';
$labels['more'] = 'Lisää';
$labels['back'] = 'Takaisin';
$labels['options'] = 'Asetukset';
+$labels['previous'] = 'Edellinen';
+$labels['next'] = 'Seuraava';
$labels['select'] = 'Valitse';
$labels['all'] = 'Kaikki';
$labels['none'] = 'Ei mikään';
@@ -171,6 +173,11 @@ $labels['importmessages'] = 'Tuo viestejä';
$labels['quota'] = 'Levytila';
$labels['unknown'] = 'tuntematon';
$labels['unlimited'] = 'rajoittamaton';
+$labels['quotatype'] = 'Kiintiön tyyppi';
+$labels['quotatotal'] = 'Raja';
+$labels['quotaused'] = 'Käytetty';
+$labels['quotastorage'] = 'Levytila';
+$labels['quotamessage'] = 'Viestien määrä';
$labels['quicksearch'] = 'Pikahaku';
$labels['resetsearch'] = 'Nollaa haku';
$labels['searchmod'] = 'Hakukriteerit';
@@ -178,6 +185,10 @@ $labels['msgtext'] = 'Koko viesti';
$labels['body'] = 'Runko';
$labels['type'] = 'Tyyppi';
$labels['namex'] = 'Nimi';
+$labels['searchscope'] = 'Rajaus';
+$labels['currentfolder'] = 'Nykyinen kansio';
+$labels['subfolders'] = 'Nykyinen kansio ja sen alikansiot';
+$labels['allfolders'] = 'Kaikki kansiot';
$labels['openinextwin'] = 'Avaa uudessa ikkunassa';
$labels['emlsave'] = 'Tallenna (.eml)';
$labels['changeformattext'] = 'Näytä raakatekstimuodossa';
@@ -193,6 +204,10 @@ $labels['returnreceipt'] = 'Perillesaapumisilmoitus';
$labels['dsn'] = 'Toimituksen tilailmoitus';
$labels['mailreplyintro'] = '$sender kirjoitti $date:';
$labels['originalmessage'] = 'Alkuperäinen viesti';
+$labels['selectimage'] = 'Valitse kuva';
+$labels['addimage'] = 'Lisää kuva';
+$labels['selectmedia'] = 'Valitse elokuva';
+$labels['addmedia'] = 'Lisää elokuva';
$labels['editidents'] = 'Muokkaa identiteettejä';
$labels['spellcheck'] = 'Oikeinkirjoitus';
$labels['checkspelling'] = 'Tarkista oikeinkirjoitus';
@@ -202,9 +217,10 @@ $labels['restore'] = 'Palauta';
$labels['restoremessage'] = 'Palautetaanko viesti?';
$labels['responses'] = 'Vastaukset';
$labels['manageresponses'] = 'Hallitse vastauksia';
-$labels['savenewresponse'] = 'Tallenna uusi vastaus';
-$labels['editresponses'] = 'Muokkaa vastauksia';
+$labels['newresponse'] = 'Luo uusi vastaus';
+$labels['addresponse'] = 'Lisää vastaus';
$labels['editresponse'] = 'Muokkaa vastausta';
+$labels['editresponses'] = 'Muokkaa vastauksia';
$labels['responsename'] = 'Nimi';
$labels['responsetext'] = 'Vastausteksti';
$labels['attach'] = 'Liitä';
@@ -269,6 +285,7 @@ $labels['assistant'] = 'Avustaja';
$labels['spouse'] = 'Puoliso';
$labels['allfields'] = 'Kaikki kentät';
$labels['search'] = 'Haku';
+$labels['searchfor'] = 'Etsi "$q"';
$labels['advsearch'] = 'Tarkennettu haku';
$labels['advanced'] = 'Lisäasetukset';
$labels['other'] = 'Muu';
@@ -287,10 +304,11 @@ $labels['typehomepage'] = 'Kotisivu';
$labels['typeblog'] = 'Blogi';
$labels['typeprofile'] = 'Profiili';
$labels['addfield'] = 'Lisää kenttä...';
-$labels['addcontact'] = 'Lisää uusi yhteystieto';
+$labels['addcontact'] = 'Lisää yhteystieto';
$labels['editcontact'] = 'Muokkaa yhteystietoa';
$labels['contacts'] = 'Yhteystiedot';
$labels['contactproperties'] = 'Yhteystiedon ominaisuudet';
+$labels['contactnameandorg'] = 'Nimi ja organisaatio';
$labels['personalinfo'] = 'Henkilökohtaiset tiedot';
$labels['edit'] = 'Muokkaa';
$labels['cancel'] = 'Peruuta';
@@ -309,10 +327,11 @@ $labels['export'] = 'Vie (export)';
$labels['exportall'] = 'Vie kaikki';
$labels['exportsel'] = 'Vie valitut';
$labels['exportvcards'] = 'Vie yhteystiedot vCard-muodossa';
-$labels['newcontactgroup'] = 'Luo uusi yhteystietoryhmä';
+$labels['newgroup'] = 'Luo uusi ryhmä';
$labels['grouprename'] = 'Nimeä ryhmä uudelleen';
$labels['groupdelete'] = 'Poista ryhmä';
$labels['groupremoveselected'] = 'Poista valitut yhteystiedot ryhmästä';
+$labels['uponelevel'] = 'Yksi taso ylös';
$labels['previouspage'] = 'Näytä edellinen luettelo';
$labels['firstpage'] = 'Näytä ensimmäinen luettelo';
$labels['nextpage'] = 'Näytä seuraava luettelo';
@@ -325,8 +344,11 @@ $labels['searchdelete'] = 'Poista haku';
$labels['import'] = 'Tuo';
$labels['importcontacts'] = 'Tuo yhteystiedot';
$labels['importfromfile'] = 'Tuo tiedostosta:';
+$labels['importtarget'] = 'Lisää yhteystiedot kohteeseen';
$labels['importreplace'] = 'Korvaa koko osoitekirja';
+$labels['importgroups'] = 'Tuo ryhmämääritykset';
$labels['importgroupsall'] = 'Kaikki (luo ryhmät tarvittaessa)';
+$labels['importgroupsexisting'] = 'Vain olemassa oleville ryhmille';
$labels['importdesc'] = 'Voit tuoda yhteystietoja olemassa olevasta osoitekirjasta.<br/>Tuettuja muotoja ovat <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> ja CSV (pilkuin erotetut arvot).';
$labels['done'] = 'Valmis';
$labels['settingsfor'] = 'Asetukset';
@@ -335,10 +357,10 @@ $labels['preferences'] = 'Asetukset';
$labels['userpreferences'] = 'Käyttäjän asetukset';
$labels['editpreferences'] = 'Muokkaa käyttäjän asetuksia';
$labels['identities'] = 'Identiteetit';
-$labels['manageidentities'] = 'Muokkaa tunnuksen identiteettejä';
-$labels['newidentity'] = 'Uusi identiteetti';
-$labels['newitem'] = 'Uusi';
-$labels['edititem'] = 'Muokkaa';
+$labels['manageidentities'] = 'Hallitse henkilöyksiä';
+$labels['newidentity'] = 'Luo uusi henkilöys';
+$labels['addidentity'] = 'Lisää henkilöys';
+$labels['editidentity'] = 'Muokkaa henkilöyttä';
$labels['preferhtml'] = 'Käytä HTML:aa';
$labels['defaultcharset'] = 'Oletusmerkistökoodaus';
$labels['htmlmessage'] = 'HTML-viesti';
@@ -394,6 +416,7 @@ $labels['2231folding'] = 'Täysin RFC 2231:n mukainen (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231:n mukainen (MS Outlook)';
$labels['2047folding'] = 'Täysin RFC 2047:n mukainen (muut)';
$labels['force7bit'] = 'Käytä MIME-koodausta 8-bittisille merkeille';
+$labels['savelocalstorage'] = "Tallenna selaimen paikalliseen tallennustilaan (väliaikaisesti)";
$labels['advancedoptions'] = 'Lisäasetukset';
$labels['focusonnewmessage'] = 'Tarkenna selainikkuna uuteen viestiin';
$labels['checkallfolders'] = 'Tarkista kaikki kansiot uusien viestien varalta';
@@ -435,14 +458,14 @@ $labels['asattachment'] = 'liitteenä';
$labels['replyallmode'] = 'Oletustoiminto [Vastaa kaikille]-painikkeelle';
$labels['replyalldefault'] = 'vastaa kaikille';
$labels['replyalllist'] = 'vastaa pelkälle postituslistalle (jos havaittu)';
-$labels['folder'] = 'Kansio';
-$labels['folders'] = 'Kansiot';
-$labels['foldername'] = 'Kansion nimi';
-$labels['subscribed'] = 'Näytetään';
+$labels['folder'] = 'Kansio';
+$labels['folders'] = 'Kansiot';
+$labels['foldername'] = 'Kansion nimi';
+$labels['subscribed'] = 'Näytetään';
$labels['messagecount'] = 'Viestejä';
-$labels['create'] = 'Luo uusi';
-$labels['createfolder'] = 'Luo uusi kansio';
-$labels['managefolders'] = 'Kansioiden hallinta';
+$labels['create'] = 'Luo uusi';
+$labels['createfolder'] = 'Luo uusi kansio';
+$labels['managefolders'] = 'Kansioiden hallinta';
$labels['specialfolders'] = 'Erikoiskansiot';
$labels['properties'] = 'Ominaisuudet';
$labels['folderproperties'] = 'Kansion ominaisuudet';
@@ -452,9 +475,13 @@ $labels['info'] = 'Tietoja';
$labels['getfoldersize'] = 'Napsauta saadaksesi kansion koon';
$labels['changesubscription'] = 'Klikkaa muuttaaksesi tilausta';
$labels['foldertype'] = 'Kansion tyyppi';
-$labels['personalfolder'] = 'Yksityinen kansio';
-$labels['otherfolder'] = 'Toisen käyttäjän kansio';
-$labels['sharedfolder'] = 'Julkinen kansio';
+$labels['personalfolder'] = 'Yksityinen kansio';
+$labels['otherfolder'] = 'Toisen käyttäjän kansio';
+$labels['sharedfolder'] = 'Julkinen kansio';
+$labels['findfolders'] = 'Etsi kansioita';
+$labels['namespace.personal'] = 'Henkilökohtainen';
+$labels['namespace.other'] = 'Muut käyttäjät';
+$labels['namespace.shared'] = 'Jaettu';
$labels['sortby'] = 'Järjestä';
$labels['sortasc'] = 'Järjestä nousevasti (a-ö)';
$labels['sortdesc'] = 'Järjestä laskevasti (ö-a)';
@@ -487,4 +514,20 @@ $labels['vietnamese'] = 'Vietnamilainen';
$labels['japanese'] = 'Japanilainen';
$labels['korean'] = 'Korealainen';
$labels['chinese'] = 'Kiinalainen';
+$labels['arialabeltoolbar'] = 'Sovelluksen työkalupalkki';
+$labels['arialabelmailpreviewframe'] = 'Viestin esikatselu';
+$labels['arialabelmessagebody'] = 'Viestin runko';
+$labels['arialabelmessageactions'] = 'Viestitoiminnot';
+$labels['arialabelmessageheaders'] = 'Viestin otsakkeet';
+$labels['arialabelreplyalloptions'] = 'Vastaa kaikille -valinnat';
+$labels['arialabelmoremessageactions'] = 'Lisää viestitoimintoja';
+$labels['arialabelmarkmessagesas'] = 'Merkitse valitut viestit...';
+$labels['arialabelattachmentuploadform'] = 'Liitteen lähetyslomake';
+$labels['arialabelattachmentpreview'] = 'Liitteen esikatselu';
+$labels['arialabelabookgroupoptions'] = 'Osoitekirjan/ryhmän valinnat';
+$labels['arialabelidentityeditfrom'] = 'Henkilöyden muokkauslomake';
+$labels['arialabelsearchterms'] = 'Hakuehdot';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "Enter: avaa valittu/kohdistettu yhteystieto.";
?>
diff --git a/program/localization/fi_FI/messages.inc b/program/localization/fi_FI/messages.inc
index 77a165860..a4ad87c9f 100644
--- a/program/localization/fi_FI/messages.inc
+++ b/program/localization/fi_FI/messages.inc
@@ -22,7 +22,9 @@ $messages['sessionerror'] = 'Sessio ei kelpaa tai ei ole enää voimassa';
$messages['storageerror'] = 'Yhteys IMAP-palvelimeen epäonnistui';
$messages['servererror'] = 'Palvelinvirhe!';
$messages['servererrormsg'] = 'Palvelinvirhe: $msg';
+$messages['connerror'] = 'Yhteysvirhe, ei yhteyttä palvelimeen!';
$messages['dberror'] = 'Tietokantavirhe!';
+$messages['windowopenerror'] = 'Ponnahdusikkuna estettiin!';
$messages['requesttimedout'] = 'Pyyntö aikakatkaistiin';
$messages['errorreadonly'] = 'Toiminnon suoritus ei onnistu, koska hakemisto on vain lukutilassa.';
$messages['errornoperm'] = 'Toimintoa ei voitu suorittaa. Ei oikeuksia.';
@@ -92,6 +94,7 @@ $messages['contactsearchsuccessful'] = 'Löydetty $nr yhteystietoa';
$messages['searchnomatch'] = 'Haku ei tuottanut tuloksia';
$messages['searching'] = 'Etsitään...';
$messages['checking'] = 'Tarkistetaan...';
+$messages['stillsearching'] = 'Etsitään edelleen...';
$messages['nospellerrors'] = 'Kirjoitusvirheitä ei löytynyt.';
$messages['folderdeleted'] = 'Kansio poistettu onnistuneesti';
$messages['foldersubscribed'] = 'Kansio tilattu onnistuneesti.';
@@ -126,6 +129,7 @@ $messages['selectimportfile'] = 'Valitse lähetettävä tiedosto';
$messages['addresswriterror'] = 'Valittuun osoitekirjaan ei voi kirjoittaa';
$messages['contactaddedtogroup'] = 'Yhteystiedot lisätty ryhmään';
$messages['contactremovedfromgroup'] = 'Yhteystiedot poistettu ryhmästä';
+$messages['nogroupassignmentschanged'] = 'Ryhmämäärityksiä ei muutettu.';
$messages['importwait'] = 'Tuodaan, odota...';
$messages['importformaterror'] = 'Tuonti epäonnistui! Lähetetty tiedosto ei ole kelvollinen tuontitiedosto.';
$messages['importconfirm'] = '<b>$inserted yhteystietoa tuotu onnistuneesti</b>';
@@ -134,7 +138,7 @@ $messages['importmessagesuccess'] = '$nr viestiä tuotiin onnistuneesti';
$messages['importmessageerror'] = 'Tuonti epäonnistui! Lähetetty tiedosto ei ole kelvollinen viesti tai mailbox-tiedosto';
$messages['opnotpermitted'] = 'Toiminto ei ole sallittu!';
$messages['nofromaddress'] = 'Valittu identiteetti ei sisällä sähköpostiosoitetta';
-$messages['editorwarning'] = 'Vaihtaminen tekstieditoriin aiheuttaa viestin muotoilun katoamisen. Haluatko jatkaa?';
+$messages['editorwarning'] = 'Muokkaintyypin vaihtaminen saattaa aiheuttaa tekstin muotoilun katoamisen. Haluatko jatkaa?';
$messages['httpreceivedencrypterror'] = 'Vakava virhe asetuksissa. Ota välittömästi yhteys ylläpitoon. <b>Viestiäsi ei voida lähettää.</b>';
$messages['smtpconnerror'] = 'SMTP-virhe ($code): Palvelimelle yhdistäminen epäonnistui';
$messages['smtpautherror'] = 'SMTP-virhe ($code): Tunnistus epäonnistui';
diff --git a/program/localization/fo_FO/labels.inc b/program/localization/fo_FO/labels.inc
index f44854a96..22b56f3ec 100644
--- a/program/localization/fo_FO/labels.inc
+++ b/program/localization/fo_FO/labels.inc
@@ -203,9 +203,8 @@ $labels['restoremessage'] = 'Endurstovna boð?';
$labels['responses'] = 'Svør';
$labels['insertresponse'] = 'Innset eitt svar';
$labels['manageresponses'] = 'Umsit svør';
-$labels['savenewresponse'] = 'Goym nýtt svar';
-$labels['editresponses'] = 'Broyt svør';
$labels['editresponse'] = 'Broyt svar';
+$labels['editresponses'] = 'Broyt svør';
$labels['responsename'] = 'Navn';
$labels['responsetext'] = 'Svar tekstur';
$labels['attach'] = 'Viðheft';
@@ -288,7 +287,6 @@ $labels['typehomepage'] = 'Heimasíða';
$labels['typeblog'] = 'Bloggur';
$labels['typeprofile'] = 'Umhvarv ';
$labels['addfield'] = 'Legg aftrat teiga...';
-$labels['addcontact'] = 'Legg aftrat nýggjan persón';
$labels['editcontact'] = 'Broyt persón';
$labels['contacts'] = 'Persónar';
$labels['contactproperties'] = 'Persóna eginleikar';
@@ -301,7 +299,6 @@ $labels['rename'] = 'Umdoyp';
$labels['addphoto'] = 'Legg aftrat';
$labels['replacephoto'] = 'Skift út';
$labels['uploadphoto'] = 'Uppsend mynd';
-$labels['newcontact'] = 'Ger nýtt persón kort';
$labels['deletecontact'] = 'Strika valdir persónar';
$labels['composeto'] = 'Skriva boð til';
$labels['contactsfromto'] = 'Persónar frá $from til $to ið eru $count';
@@ -310,7 +307,6 @@ $labels['export'] = 'Flyt út';
$labels['exportall'] = 'Flyt út alt';
$labels['exportsel'] = 'Flyt út valt';
$labels['exportvcards'] = 'Út flyt persónar við vCard slagið';
-$labels['newcontactgroup'] = 'Ger nýggja persóns bólk';
$labels['grouprename'] = 'Umdoyp bólk';
$labels['groupdelete'] = 'Strika bólk';
$labels['groupremoveselected'] = 'Strika valdar persónar frá bólki';
@@ -340,10 +336,6 @@ $labels['preferences'] = 'Vælmøguleikar';
$labels['userpreferences'] = 'Brúkara vælmøguleikar';
$labels['editpreferences'] = 'Broyt brúkara framíhjárættindi';
$labels['identities'] = 'Samleikar';
-$labels['manageidentities'] = 'Umsit samleikar fyri hesa kontu';
-$labels['newidentity'] = 'Nýtt samleiki';
-$labels['newitem'] = 'Nýtt ting';
-$labels['edititem'] = 'Broyt ting';
$labels['preferhtml'] = 'Vís HTML';
$labels['defaultcharset'] = 'Sjálvset tekin set';
$labels['htmlmessage'] = 'HTML boð';
@@ -400,6 +392,7 @@ $labels['2231folding'] = 'Fult RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Fult RFC 2047 (other)';
$labels['force7bit'] = 'Nýt MIME kodingar til 8-bit tekin';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'Víðkaðir valmøguleikar';
$labels['focusonnewmessage'] = 'Legg dent á kaga vindeyga tá ið nýtt boð verður stovna';
$labels['checkallfolders'] = 'Kannað allar mappur fyri nýggj boð';
@@ -442,14 +435,14 @@ $labels['asattachment'] = 'sum viðhefting';
$labels['replyallmode'] = 'Sjálvset gerð til [Reply all] knap';
$labels['replyalldefault'] = 'Svara øllum';
$labels['replyalllist'] = 'svara til teldupostalista einans (um funnin)';
-$labels['folder'] = 'Mappa';
-$labels['folders'] = 'Mappur';
-$labels['foldername'] = 'Mappu navn';
-$labels['subscribed'] = 'Teknaður til';
+$labels['folder'] = 'Mappa';
+$labels['folders'] = 'Mappur';
+$labels['foldername'] = 'Mappu navn';
+$labels['subscribed'] = 'Teknaður til';
$labels['messagecount'] = 'Boð';
-$labels['create'] = 'Stovna';
-$labels['createfolder'] = 'Stovna nýggja mappu';
-$labels['managefolders'] = 'Umsit mappur';
+$labels['create'] = 'Stovna';
+$labels['createfolder'] = 'Stovna nýggja mappu';
+$labels['managefolders'] = 'Umsit mappur';
$labels['specialfolders'] = 'Serligar Mappur';
$labels['properties'] = 'Vælmøguleikar';
$labels['folderproperties'] = 'Mappu vælmøguleikar';
@@ -459,9 +452,9 @@ $labels['info'] = 'Upplýsing';
$labels['getfoldersize'] = 'Trýst fyri at seta mappu stødd';
$labels['changesubscription'] = 'Trýst fyri at broyta tekning';
$labels['foldertype'] = 'Mappu slag';
-$labels['personalfolder'] = 'Einskild Mappa';
-$labels['otherfolder'] = 'Mappur hjá ørðum brúkarum';
-$labels['sharedfolder'] = 'Almennar mappur';
+$labels['personalfolder'] = 'Einskild Mappa';
+$labels['otherfolder'] = 'Mappur hjá ørðum brúkarum';
+$labels['sharedfolder'] = 'Almennar mappur';
$labels['sortby'] = 'Sortera eftir';
$labels['sortasc'] = 'Sortera hækkandi';
$labels['sortdesc'] = 'Sortera lækkandi';
@@ -494,4 +487,7 @@ $labels['vietnamese'] = 'Vietmanesiskt';
$labels['japanese'] = 'Japanskt';
$labels['korean'] = 'Koreanskt';
$labels['chinese'] = 'Kinesiskt';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/fo_FO/messages.inc b/program/localization/fo_FO/messages.inc
index 7bec7c974..6bc957342 100644
--- a/program/localization/fo_FO/messages.inc
+++ b/program/localization/fo_FO/messages.inc
@@ -135,7 +135,6 @@ $messages['importmessagesuccess'] = 'Innflutt $nr boð.';
$messages['importmessageerror'] = 'Innflyting bar ikki til! Tann uppsendi fílurin er ikki gyldigur boð ella postkassa fílur';
$messages['opnotpermitted'] = 'Ger ikki loyvd!';
$messages['nofromaddress'] = 'Manglar teldupostur í valda samleika.';
-$messages['editorwarning'] = 'Um tú skiftur til reinan tekst verður øll forsniðing mist. Ynskir tú at halda fram?';
$messages['httpreceivedencrypterror'] = 'Ein oyðandi samansetings feilur uppstóð. Vinarliga set teg í samband við umsitaran beinanvegin. <b>Tíni boð kundu ikki sendast.</b>';
$messages['smtpconnerror'] = 'SMTP Feilur ($code): Samband til ambatara riggaði ikki.';
$messages['smtpautherror'] = 'SMTP Feilur ($code): Atgongd nokta.';
diff --git a/program/localization/fr_FR/labels.inc b/program/localization/fr_FR/labels.inc
index 41e642875..e8b06fea7 100644
--- a/program/localization/fr_FR/labels.inc
+++ b/program/localization/fr_FR/labels.inc
@@ -131,16 +131,24 @@ $labels['moreactions'] = 'Plus d\'actions...';
$labels['more'] = 'Plus';
$labels['back'] = 'Retour';
$labels['options'] = 'Options';
+$labels['first'] = 'Premier';
+$labels['last'] = 'Dernier';
+$labels['previous'] = 'Précédent';
+$labels['next'] = 'Suivant';
$labels['select'] = 'Choisir';
$labels['all'] = 'Tous';
$labels['none'] = 'Aucun';
$labels['currpage'] = 'Page courante';
+$labels['isread'] = 'Lu';
$labels['unread'] = 'Non lu';
$labels['flagged'] = 'Signalé';
+$labels['unflagged'] = 'Non signalé';
$labels['unanswered'] = 'Non répondu';
$labels['withattachment'] = 'Avec fichier joint';
$labels['deleted'] = 'Supprimé';
$labels['undeleted'] = 'Non supprimé';
+$labels['replied'] = 'Réponse faite';
+$labels['forwarded'] = 'Transféré';
$labels['invert'] = 'Inverser';
$labels['filter'] = 'Filtrer';
$labels['list'] = 'Lister';
@@ -171,6 +179,11 @@ $labels['importmessages'] = 'Importer des messages';
$labels['quota'] = 'Utilisation du disque';
$labels['unknown'] = 'inconnue';
$labels['unlimited'] = 'illimitée';
+$labels['quotatype'] = 'Type de quota';
+$labels['quotatotal'] = 'Limite';
+$labels['quotaused'] = 'Utilisé';
+$labels['quotastorage'] = 'Espace disque';
+$labels['quotamessage'] = 'Nombre de messages';
$labels['quicksearch'] = 'Recherche rapide';
$labels['resetsearch'] = 'Réinitialiser la recherche';
$labels['searchmod'] = 'Modificateurs de recherche';
@@ -178,6 +191,10 @@ $labels['msgtext'] = 'Message entier';
$labels['body'] = 'Corps';
$labels['type'] = 'Type';
$labels['namex'] = 'Nom';
+$labels['searchscope'] = 'Portée';
+$labels['currentfolder'] = 'Répertoire actuel';
+$labels['subfolders'] = 'Ceci et les sous-dossiers';
+$labels['allfolders'] = 'Tous les dossiers';
$labels['openinextwin'] = 'Ouvrir dans une nouvelle fenêtre';
$labels['emlsave'] = 'Télécharger (.eml)';
$labels['changeformattext'] = 'Afficher au format texte en clair';
@@ -193,19 +210,24 @@ $labels['returnreceipt'] = 'Accusé de réception';
$labels['dsn'] = 'Notification d\'état de distribution';
$labels['mailreplyintro'] = 'Le $date, $sender a écrit :';
$labels['originalmessage'] = 'Message original';
+$labels['selectimage'] = 'Sélectionner l\'image';
+$labels['addimage'] = 'Ajouter une image';
+$labels['selectmedia'] = 'Choisir un film';
+$labels['addmedia'] = 'Ajouter un film';
$labels['editidents'] = 'Éditer les identités';
$labels['spellcheck'] = 'Orthographe';
$labels['checkspelling'] = 'Vérification de l\'orthographe';
$labels['resumeediting'] = 'Retourner à l\'édition';
$labels['revertto'] = 'Revenir à';
$labels['restore'] = 'Restaurer';
-$labels['restoremessage'] = 'Restaurer le message?';
+$labels['restoremessage'] = 'Restaurer le message ?';
$labels['responses'] = 'Réponses';
$labels['insertresponse'] = 'Insérer une réponse';
$labels['manageresponses'] = 'Gérer les réponses';
-$labels['savenewresponse'] = 'Enregistrer une nouvelle réponse';
-$labels['editresponses'] = 'Éditer les réponses';
+$labels['newresponse'] = 'Créer une nouvelle réponse';
+$labels['addresponse'] = 'Ajouter une réponse';
$labels['editresponse'] = 'Éditer la réponse';
+$labels['editresponses'] = 'Éditer les réponses';
$labels['responsename'] = 'Nom';
$labels['responsetext'] = 'Texte de la réponse';
$labels['attach'] = 'Joindre';
@@ -214,6 +236,7 @@ $labels['upload'] = 'Téléverser';
$labels['uploadprogress'] = '$percent ($current sur $total)';
$labels['close'] = 'Fermer';
$labels['messageoptions'] = 'Options du message...';
+$labels['togglecomposeoptions'] = 'Activer/désactiver les options de rédaction';
$labels['low'] = 'Basse';
$labels['lowest'] = 'La plus basse';
$labels['normal'] = 'Normale';
@@ -235,7 +258,7 @@ $labels['addcc'] = 'Ajouter Cc';
$labels['addbcc'] = 'Ajouter Cci';
$labels['addreplyto'] = 'Ajouter Répondre à';
$labels['addfollowupto'] = 'Ajouter Transférer à';
-$labels['mdnrequest'] = 'L\'expéditeur de ce message a demandé d\'être prévenu quand vous lirez ce message. Souhaitez-vous prévenir l\'expéditeur?';
+$labels['mdnrequest'] = 'L\'expéditeur de ce message a demandé d\'être prévenu quand vous lirez ce message. Souhaitez-vous prévenir l\'expéditeur ?';
$labels['receiptread'] = 'Accusé de réception (lu)';
$labels['yourmessage'] = 'Ceci est un accusé de réception pour votre message';
$labels['receiptnote'] = 'Note : cet accusé indique seulement que le message a été affiché sur l\'ordinateur du destinataire. Il n\'y a aucune garantie que le destinataire ait lu ou compris le contenu du message.';
@@ -270,6 +293,7 @@ $labels['assistant'] = 'Assistant';
$labels['spouse'] = 'Époux/épouse';
$labels['allfields'] = 'Tous les champs';
$labels['search'] = 'Recherche';
+$labels['searchfor'] = 'Rechercher « $q »';
$labels['advsearch'] = 'Recherche avancée';
$labels['advanced'] = 'Détails';
$labels['other'] = 'Autre';
@@ -288,11 +312,13 @@ $labels['typehomepage'] = 'Page d\'accueil';
$labels['typeblog'] = 'Blogue';
$labels['typeprofile'] = 'Profil';
$labels['addfield'] = 'Ajouter un champ...';
-$labels['addcontact'] = 'Ajouter comme nouveau contact';
+$labels['addcontact'] = 'Ajouter un contact';
$labels['editcontact'] = 'Modifier le contact';
$labels['contacts'] = 'Contacts';
$labels['contactproperties'] = 'Propriétés du contact';
+$labels['contactnameandorg'] = 'Nom et organisation';
$labels['personalinfo'] = 'Informations personnelles';
+$labels['contactphoto'] = 'Photo du contact';
$labels['edit'] = 'Modifier';
$labels['cancel'] = 'Annuler';
$labels['save'] = 'Enregistrer';
@@ -301,7 +327,7 @@ $labels['rename'] = 'Renommer';
$labels['addphoto'] = 'Ajouter';
$labels['replacephoto'] = 'Remplacer';
$labels['uploadphoto'] = 'Téléverser une photo';
-$labels['newcontact'] = 'Créer une nouvelle carte de contact';
+$labels['newcontact'] = 'Créer un nouveau contact';
$labels['deletecontact'] = 'Supprimer les contacts sélectionnés';
$labels['composeto'] = 'Rédiger un message à';
$labels['contactsfromto'] = 'Contacts de $from à $to sur $count';
@@ -310,10 +336,11 @@ $labels['export'] = 'Exporter';
$labels['exportall'] = 'Tout exporter';
$labels['exportsel'] = 'Exporter la sélection';
$labels['exportvcards'] = 'Exporter les contacts au format vCard';
-$labels['newcontactgroup'] = 'Créer un nouveau groupe de contacts';
+$labels['newgroup'] = 'Créer un nouveau groupe';
$labels['grouprename'] = 'Renommer le groupe';
$labels['groupdelete'] = 'Supprimer le groupe';
$labels['groupremoveselected'] = 'Retirer les contacts sélectionnés du groupe';
+$labels['uponelevel'] = 'Monter d\'un niveau';
$labels['previouspage'] = 'Afficher page précédente';
$labels['firstpage'] = 'Afficher la première page';
$labels['nextpage'] = 'Afficher la page suivante';
@@ -329,7 +356,7 @@ $labels['importcontacts'] = 'Importer les contacts';
$labels['importfromfile'] = 'Importer depuis un fichier :';
$labels['importtarget'] = 'Ajouter les contacts à';
$labels['importreplace'] = 'Remplacer le carnet d\'adresses entier';
-$labels['importgroups'] = 'Importer les affectations de groupes';
+$labels['importgroups'] = 'Importer les affectations de groupe';
$labels['importgroupsall'] = 'Tous (créer les groupes si nécessaire)';
$labels['importgroupsexisting'] = 'Seulement pour les groupes existants';
$labels['importdesc'] = 'Vous pouvez téléverser des contacts à partir d\'un carnet d\'adresses existant.<br/>Nous prenons en charge présentement l\'importation d\'adresses à partir des format de données <a href="http://fr.wikipedia.org/wiki/VCard">vCard</a> ou CSV (séparé par une virgule).';
@@ -340,10 +367,10 @@ $labels['preferences'] = 'Préférences';
$labels['userpreferences'] = 'Préférences utilisateur';
$labels['editpreferences'] = 'Modifier les préférences utilisateur';
$labels['identities'] = 'Identités';
-$labels['manageidentities'] = 'Gérer les identités pour ce compte';
-$labels['newidentity'] = 'Nouvelle identité';
-$labels['newitem'] = 'Nouvel élément';
-$labels['edititem'] = 'Modifier l\'élément';
+$labels['manageidentities'] = 'Gérer les identités';
+$labels['newidentity'] = 'Créer une nouvelle identité';
+$labels['addidentity'] = 'Ajouter une identité';
+$labels['editidentity'] = 'Modifier l\'identité';
$labels['preferhtml'] = 'Afficher en HTML';
$labels['defaultcharset'] = 'Jeu de caractère par défaut';
$labels['htmlmessage'] = 'Message en HTML';
@@ -390,7 +417,7 @@ $labels['always'] = 'toujours';
$labels['showinlineimages'] = 'Afficher les images jointes sous le message';
$labels['autosavedraft'] = 'Enregistrer automatiquement le brouillon';
$labels['everynminutes'] = 'toutes les $n minute(s)';
-$labels['refreshinterval'] = 'Rafraîchir (vérifier les nouveaux messages, etc...)';
+$labels['refreshinterval'] = 'Rafraîchir (vérifier les nouveaux messages, etc.)';
$labels['never'] = 'jamais';
$labels['immediately'] = 'Immédiatement';
$labels['messagesdisplaying'] = 'Affichage des messages';
@@ -400,7 +427,9 @@ $labels['2231folding'] = 'RFC 2231 complet (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'RFC 2047 complet (autre)';
$labels['force7bit'] = 'Utiliser l\'encodage MIME pour les caractères 8 bits';
+$labels['savelocalstorage'] = "Enregistrer dans le stockage local du navigateur (temporaire)";
$labels['advancedoptions'] = 'Options avancées';
+$labels['toggleadvancedoptions'] = 'Activer/désactiver les options avancées';
$labels['focusonnewmessage'] = 'Cibler la fenêtre du navigateur quand un nouveau message arrive';
$labels['checkallfolders'] = 'Vérifier les nouveaux messages dans tous les dossiers';
$labels['displaynext'] = 'Après avoir supprimé/déplacé un message, afficher le suivant';
@@ -442,14 +471,14 @@ $labels['asattachment'] = 'en fichier joint';
$labels['replyallmode'] = 'Action par défaut du bouton [Répondre à tous]';
$labels['replyalldefault'] = 'répondre à tous';
$labels['replyalllist'] = 'répondre seulement à la liste de diffusion (si trouvée)';
-$labels['folder'] = 'Dossier';
-$labels['folders'] = 'Dossiers';
-$labels['foldername'] = 'Nom du dossier';
-$labels['subscribed'] = 'Abonné';
+$labels['folder'] = 'Dossier';
+$labels['folders'] = 'Dossiers';
+$labels['foldername'] = 'Nom du dossier';
+$labels['subscribed'] = 'Abonné';
$labels['messagecount'] = 'Messages';
-$labels['create'] = 'Créer';
-$labels['createfolder'] = 'Créer un nouveau dossier';
-$labels['managefolders'] = 'Gérer les dossiers';
+$labels['create'] = 'Créer';
+$labels['createfolder'] = 'Créer un nouveau dossier';
+$labels['managefolders'] = 'Gérer les dossiers';
$labels['specialfolders'] = 'Dossiers spéciaux';
$labels['properties'] = 'Propriétés';
$labels['folderproperties'] = 'Propriétés du dossier';
@@ -459,9 +488,13 @@ $labels['info'] = 'Informations';
$labels['getfoldersize'] = 'Cliquer pour obtenir la taille de dossier';
$labels['changesubscription'] = 'Cliquer pour modifier l\'abonnement';
$labels['foldertype'] = 'Type de dossier';
-$labels['personalfolder'] = 'Dossier privé';
-$labels['otherfolder'] = 'Dossier d\'autres utilisateurs';
-$labels['sharedfolder'] = 'Dossier public';
+$labels['personalfolder'] = 'Dossier privé';
+$labels['otherfolder'] = 'Dossier d\'autres utilisateurs';
+$labels['sharedfolder'] = 'Dossier public';
+$labels['findfolders'] = 'Trouver des dossiers';
+$labels['namespace.personal'] = 'Personnel';
+$labels['namespace.other'] = 'Autres utilisateurs';
+$labels['namespace.shared'] = 'Partagé';
$labels['sortby'] = 'Trier par';
$labels['sortasc'] = 'Tri ascendant';
$labels['sortdesc'] = 'Tri descendant';
@@ -494,4 +527,54 @@ $labels['vietnamese'] = 'Vietnamien';
$labels['japanese'] = 'Japonais';
$labels['korean'] = 'Coréen';
$labels['chinese'] = 'Chinois';
+$labels['arialabeltopnav'] = 'Contrôle de la fenêtre';
+$labels['arialabeltasknav'] = 'Tâches de l\'application';
+$labels['arialabeltoolbar'] = 'Barre d\'outils de l\'application';
+$labels['arialabelactivetask'] = 'Tâche active';
+$labels['arialabelmessagessearchfilter'] = 'Filtre de listage des courriels';
+$labels['arialabelmailsearchform'] = 'Formulaire de recherche des courriels';
+$labels['arialabelcontactsearchform'] = 'Formulaire de recherche des contacts';
+$labels['arialabelmailquicksearchbox'] = 'Saisie de la recherche de courriels';
+$labels['arialabelquicksearchbox'] = 'Saisie de la recherche';
+$labels['arialabelfoldersearchfilter'] = 'Filtre de listage des dossiers';
+$labels['arialabelfoldersearchform'] = 'Formulaire de recherche de dossiers';
+$labels['arialabelfolderlist'] = 'Sélection du dossier des courriels';
+$labels['arialabelmessagelist'] = 'Listage des courriels';
+$labels['arialabelmailpreviewframe'] = 'Aperçu des messages';
+$labels['arialabelmailboxmenu'] = 'Menu d\'action des dossiers';
+$labels['arialabellistselectmenu'] = 'Menu de sélection des listes';
+$labels['arialabelthreadselectmenu'] = 'Menu de listage des fils';
+$labels['arialabelmessagelistoptions'] = 'Options d\'affichage et de tri des listes de messages';
+$labels['arialabelmailimportdialog'] = 'Fenêtre d\'Importation des messages';
+$labels['arialabelmessagenav'] = 'Parcourir les message';
+$labels['arialabelmessagebody'] = 'Corps des messages';
+$labels['arialabelmessageactions'] = 'Actions sur les messages';
+$labels['arialabelcontactquicksearch'] = 'Formulaire de recherche de contacts';
+$labels['arialabelcontactsearchbox'] = 'Saisie de la recherche de contacts';
+$labels['arialabelmessageheaders'] = 'En-tête des messages';
+$labels['arialabelforwardingoptions'] = 'Options de réacheminement';
+$labels['arialabelreplyalloptions'] = 'Options de réponse à tous';
+$labels['arialabelmoremessageactions'] = 'Actions supplémentaires sur le message';
+$labels['arialabelmarkmessagesas'] = 'Marquer les messages sélectionnés comme...';
+$labels['arialabelcomposeoptions'] = 'Options de rédaction';
+$labels['arialabelresponsesmenu'] = 'Menu des réponses pré-déterminées';
+$labels['arialabelattachmentuploadform'] = 'Formulaire de téléversement de fichiers joints';
+$labels['arialabelattachmentpreview'] = 'Aperçu des fichiers joints';
+$labels['ariasummarycomposecontacts'] = 'Liste des contacts et des groupes à sélectionner comme destinataires';
+$labels['arialabelcontactexportoptions'] = 'Options d\'exportation des contacts';
+$labels['arialabelabookgroupoptions'] = 'Options du carnet d\'adresses/groupes';
+$labels['arialabelpreferencesform'] = 'Formulaire des préférences';
+$labels['arialabelidentityeditfrom'] = 'Formulaire de modification de l\'identité';
+$labels['arialabelresonseeditfrom'] = 'Formulaire de modification des réponses';
+$labels['arialabelsearchterms'] = 'Termes de recherche';
+$labels['helplistnavigation'] = 'Navigation au clavier des listes ';
+$labels['helplistkeyboardnavigation'] = "Flèche haut/bas : déplacer la cible de sélection.
+Espace : sélectionner la rangée ciblée.
+Maj + haut/bas : Sélectionner des rangées supplémentaires
+au-dessus/en-dessous.
+Ctl + espace : ajouter la rangée ciblée à la sélection/enlever la rangée ciblée de la sélection.";
+$labels['helplistkeyboardnavmessages'] = "Flèche droite/gauche : déplier/replier les fils de messages (en mode fils seulement).
+Entrée : ouvrir le message sélectionné/cible.
+Suppr : déplacer les messages sélectionnés vers la corbeille.";
+$labels['helplistkeyboardnavcontacts'] = "Entrée : ouvrir le contact sélectionné/cible.";
?>
diff --git a/program/localization/fr_FR/messages.inc b/program/localization/fr_FR/messages.inc
index 82d883c34..8eb888ed9 100644
--- a/program/localization/fr_FR/messages.inc
+++ b/program/localization/fr_FR/messages.inc
@@ -15,23 +15,25 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-$messages['errortitle'] = 'Une erreur est survenue!';
+$messages['errortitle'] = 'Une erreur est survenue !';
$messages['loginfailed'] = 'La connexion a échoué.';
$messages['cookiesdisabled'] = 'Votre navigateur n\'accepte pas les fichiers témoins.';
$messages['sessionerror'] = 'Votre session est invalide ou a expiré.';
$messages['storageerror'] = 'Erreur de connexion au serveur de stockage.';
-$messages['servererror'] = 'Erreur de serveur!';
+$messages['servererror'] = 'Erreur de serveur !';
$messages['servererrormsg'] = 'Erreur de serveur : $msg';
+$messages['connerror'] = 'Erreur de connexion (n\'a pu atteindre le serveur) !';
$messages['dberror'] = 'Erreur de base de données!';
+$messages['windowopenerror'] = 'La fenêtre contextuelle a été bloquée !';
$messages['requesttimedout'] = 'Délai de la requête expiré';
$messages['errorreadonly'] = 'Impossible d\'effectuer l\'opération. Le dossier est en lecture seule.';
$messages['errornoperm'] = 'Impossible d\'effectuer l\'opération. Permission refusée.';
$messages['erroroverquota'] = 'Impossible d\'effectuer l\'opération. Aucun espace disque libre.';
$messages['erroroverquotadelete'] = 'Aucun espace disque libre. Utiliser Maj+Suppr pour supprimer un message.';
-$messages['invalidrequest'] = 'Requête invalide! Aucune donnée n\'a été enregistrée.';
+$messages['invalidrequest'] = 'Requête invalide ! Aucune donnée n\'a été enregistrée.';
$messages['invalidhost'] = 'Nom du serveur invalide.';
-$messages['nomessagesfound'] = 'Aucun message trouvé dans cette boîte de coourriel';
-$messages['loggedout'] = 'Vous avez correctement terminé cette session. Au revoir!';
+$messages['nomessagesfound'] = 'Aucun message trouvé dans cette boîte de courriel';
+$messages['loggedout'] = 'Vous avez correctement terminé cette session. Au revoir !';
$messages['mailboxempty'] = 'La boîte de courriel est vide';
$messages['nomessages'] = 'Aucun message';
$messages['refreshing'] = 'Rafraîchissement...';
@@ -46,12 +48,12 @@ $messages['savingmessage'] = 'Enregistrement du message...';
$messages['messagesaved'] = 'Message sauvegardé dans Brouillons.';
$messages['successfullysaved'] = 'Enregistré avec succès.';
$messages['savingresponse'] = 'Enregistrement du texte de réponse...';
-$messages['deleteresponseconfirm'] = 'Voulez-vous vraiment supprimer ce texte de réponse?';
+$messages['deleteresponseconfirm'] = 'Voulez-vous vraiment supprimer ce texte de réponse ?';
$messages['addedsuccessfully'] = 'Le contact a été ajouté avec succès au carnet d\'adresses.';
$messages['contactexists'] = 'Un contact avec la même adresse courriel existe déjà.';
$messages['contactnameexists'] = 'Un contact avec le même nom existe déjà.';
$messages['blockedimages'] = 'Pour protéger votre confidentialité, les images distantes sont bloquées dans ce message.';
-$messages['encryptedmessage'] = 'Ce message est chiffré et ne peut pas être affiché. Désolé!';
+$messages['encryptedmessage'] = 'Ce message est chiffré et ne peut pas être affiché. Désolé !';
$messages['nocontactsfound'] = 'Aucun contact n\'a été trouvé.';
$messages['contactnotfound'] = 'Le contact demandé n\'a pas été trouvé.';
$messages['contactsearchonly'] = 'Saisir des termes d\'interrogation pour trouver des contacts.';
@@ -63,11 +65,11 @@ $messages['errormoving'] = 'Impossible de déplacer le(s) message(s).';
$messages['errorcopying'] = 'Impossible de copier le(s) message(s).';
$messages['errordeleting'] = 'Impossible de supprimer le(s) message(s).';
$messages['errormarking'] = 'Impossible de marquer le(s) message(s).';
-$messages['deletecontactconfirm'] = 'Vouiez-vous vraiment supprimer le(s) contact(s) sélectionné(s)?';
-$messages['deletegroupconfirm'] = 'Vouiez-vous vraiment supprimer le groupe sélectionné?';
-$messages['deletemessagesconfirm'] = 'Vouiez-vous vraiment supprimer le(s) message(s) sélectionné(s)?';
-$messages['deletefolderconfirm'] = 'Vouiez-vous vraiment supprimer ce dossier?';
-$messages['purgefolderconfirm'] = 'Vouiez-vous vraiment supprimer tous les messages dans ce dossier?';
+$messages['deletecontactconfirm'] = 'Voulez-vous vraiment supprimer le(s) contact(s) sélectionné(s) ?';
+$messages['deletegroupconfirm'] = 'Voulez-vous vraiment supprimer le groupe sélectionné ?';
+$messages['deletemessagesconfirm'] = 'Voulez-vous vraiment supprimer le(s) message(s) sélectionné(s) ?';
+$messages['deletefolderconfirm'] = 'Voulez-vous vraiment supprimer ce dossier ?';
+$messages['purgefolderconfirm'] = 'Voulez-vous vraiment supprimer tous les messages dans ce dossier ?';
$messages['contactdeleting'] = 'Suppression des contacts...';
$messages['groupdeleting'] = 'Suppression du groupe...';
$messages['folderdeleting'] = 'Suppression du dossier...';
@@ -77,21 +79,22 @@ $messages['folderunsubscribing'] = 'Désabonnement au dossier...';
$messages['formincomplete'] = 'Le formulaire n\'a pas été entièrement rempli.';
$messages['noemailwarning'] = 'Veuillez saisir une adresse courriel valide.';
$messages['nonamewarning'] = 'Veuillez saisir un nom.';
-$messages['nopagesizewarning'] = 'Veuillez sasisir une taille de page.';
+$messages['nopagesizewarning'] = 'Veuillez saisir une taille de page.';
$messages['nosenderwarning'] = 'Veuillez saisir l\'adresse courriel de l\'expéditeur.';
$messages['norecipientwarning'] = 'Veuillez saisir au moins un destinataire.';
-$messages['nosubjectwarning'] = 'Le champ « Objet » est vide. Voudriez-vous le saisir maintenant?';
-$messages['nobodywarning'] = 'Envoyer ce message sans texte?';
-$messages['notsentwarning'] = 'Le message n\'a pas été envoyé. Voulez-vous abandonner ce message?';
-$messages['restoresavedcomposedata'] = 'Un message précédemment rédigé mais non envoyé a été trouvé.\n\nObjet : $subject\nEnregistré le : $date\n\nVoulez-vous restaurer ce message?';
+$messages['nosubjectwarning'] = 'Le champ « Objet » est vide. Voudriez-vous le saisir maintenant ?';
+$messages['nobodywarning'] = 'Envoyer ce message sans texte ?';
+$messages['notsentwarning'] = 'Le message n\'a pas été envoyé. Voulez-vous abandonner ce message ?';
+$messages['restoresavedcomposedata'] = 'Un message précédemment rédigé mais non envoyé a été trouvé.\n\nObjet : $subject\nEnregistré le : $date\n\nVoulez-vous restaurer ce message ?';
$messages['noldapserver'] = 'Veuillez choisir un serveur ldap à rechercher.';
$messages['nosearchname'] = 'Veuillez saisir un nom de contact ou une adresse de courriel.';
-$messages['notuploadedwarning'] = 'Toutes les fichiers joints n\'ont pas encore été téléversés. Veuillez patienter ou annuler le téléversement.';
+$messages['notuploadedwarning'] = 'Tous les fichiers joints n\'ont pas encore été téléversés. Veuillez patienter ou annuler le téléversement.';
$messages['searchsuccessful'] = '$nr messages trouvés.';
$messages['contactsearchsuccessful'] = '$nr contacts trouvés.';
-$messages['searchnomatch'] = 'La recherche n\'a retourné aucune concordance.';
+$messages['searchnomatch'] = 'La recherche n\'a retourné aucun résultat.';
$messages['searching'] = 'Recherche...';
$messages['checking'] = 'Vérification...';
+$messages['stillsearching'] = 'Recherche toujours en cours...';
$messages['nospellerrors'] = 'Aucune faute d\'orthographe trouvée.';
$messages['folderdeleted'] = 'Le dossier a été effacé avec succès.';
$messages['foldersubscribed'] = 'L\'abonnement au dossier a réussi.';
@@ -108,7 +111,7 @@ $messages['movesuccess'] = '$nr contacts déplacés avec succès.';
$messages['copyerror'] = 'Aucun contact n\'a pu être copié.';
$messages['moveerror'] = 'Aucun contact n\'a pu être déplacé.';
$messages['sourceisreadonly'] = 'Cette source d\'adresse est en lecture seule.';
-$messages['errorsavingcontact'] = 'Impossible de enregistrer l\'adresse du contact.';
+$messages['errorsavingcontact'] = 'Impossible d\'enregistrer l\'adresse du contact.';
$messages['movingmessage'] = 'Déplacement des messages...';
$messages['copyingmessage'] = 'Copie des messages...';
$messages['copyingcontact'] = 'Copie des contacts...';
@@ -119,23 +122,23 @@ $messages['addingmember'] = 'Ajout des contacts au groupe...';
$messages['removingmember'] = 'Suppression des contacts du groupe...';
$messages['receiptsent'] = 'L\'accusé de lecture a été avec succès.';
$messages['errorsendingreceipt'] = 'Impossible d\'envoyer l\'accusé de lecture.';
-$messages['deleteidentityconfirm'] = 'Voulez-vous vraiment supprimer cette identité?';
+$messages['deleteidentityconfirm'] = 'Voulez-vous vraiment supprimer cette identité ?';
$messages['nodeletelastidentity'] = 'Vous ne pouvez pas effacer cette identité, c\'est votre dernière.';
$messages['forbiddencharacter'] = 'Le nom du dossier contient un caractère interdit.';
$messages['selectimportfile'] = 'Veuillez choisir un fichier à téléverser.';
$messages['addresswriterror'] = 'Impossible d\'écrire dans le carnet d\'adresse choisi.';
$messages['contactaddedtogroup'] = 'Les contacts ont été ajoutés à ce groupe avec succès.';
$messages['contactremovedfromgroup'] = 'Les contacts ont été supprimés de ce groupe avec succès.';
-$messages['nogroupassignmentschanged'] = 'Aucune affection de groupes n\'a été changée.';
+$messages['nogroupassignmentschanged'] = 'Aucune affection de groupe n\'a été changée.';
$messages['importwait'] = 'Importation, veuillez patienter...';
-$messages['importformaterror'] = 'Échec lors de l\'importation! Le fichier téléversé n\'est pas un fichier d\'importation de données valide.';
+$messages['importformaterror'] = 'Échec lors de l\'importation ! Le fichier téléversé n\'est pas un fichier d\'importation de données valide.';
$messages['importconfirm'] = '<b>Les $inserted contacts ont été importés avec succès</b>';
$messages['importconfirmskipped'] = '<b>Les $skipped entrées existantes ont été ignorées</b>';
$messages['importmessagesuccess'] = '$nr messages importés avec succès';
-$messages['importmessageerror'] = 'L\'importation a échoué! Le fichier téléversé n\'est pas un message valide ou un fichier de boîte de courriel.';
-$messages['opnotpermitted'] = 'Opération non permise!';
+$messages['importmessageerror'] = 'L\'importation a échoué ! Le fichier téléversé n\'est pas un message valide ou un fichier de boîte de courriel.';
+$messages['opnotpermitted'] = 'Opération non permise !';
$messages['nofromaddress'] = 'Adresse courriel manquante dans l\'identité choisie.';
-$messages['editorwarning'] = 'Passer à l\'éditeur de texte en clair causera la perte de toute la mise en forme du texte. Souhaitez-vous continuer?';
+$messages['editorwarning'] = 'Changer de type d\'éditeur pourrait causer la perte du formatage du texte. Souhaitez-vous continuer ?';
$messages['httpreceivedencrypterror'] = 'Une erreur fatale de configuration est survenue. Contactez votre administrateur immédiatement. <b>Votre message ne peut pas être envoyé.</b>';
$messages['smtpconnerror'] = 'Erreur SMTP ($code) : échec lors de la connexion au serveur.';
$messages['smtpautherror'] = 'Erreur SMTP ($code) : échec lors de l\'authentification.';
@@ -172,6 +175,6 @@ $messages['invalidimageformat'] = 'N\'est pas un format d\'image valide.';
$messages['mispellingsfound'] = 'Fautes d\'orthographe détectées dans le message.';
$messages['parentnotwritable'] = 'Impossible de créer/déplacer le dossier dans le dossier parent choisi. Aucun droit d\'accès.';
$messages['messagetoobig'] = 'La partie message est trop grosse pour être traité.';
-$messages['attachmentvalidationerror'] = 'AVERTISSEMENT! Ce fichier joint est suspect parce que son type ne correspond pas au type déclaré dans le message. Si vous ne faites pas confiance à l\'expéditeur, vous ne devriez pas l\'ouvrir dans le navigateur, car son contenu peut être malveillant.<br/><br/><em>Attendu : $expected; trouvé : $detected</em>';
-$messages['noscriptwarning'] = 'Avertissement : Ce service de courriel Web exige Javascript! Afin de l\'utiliser, veuillez activer Javascript dans les paramètres de votre navigateur.';
+$messages['attachmentvalidationerror'] = 'AVERTISSEMENT ! Ce fichier joint est suspect parce que son type ne correspond pas au type déclaré dans le message. Si vous ne faites pas confiance à l\'expéditeur, vous ne devriez pas l\'ouvrir dans le navigateur car son contenu peut être malveillant.<br/><br/><em>Attendu : $expected ; trouvé : $detected</em>';
+$messages['noscriptwarning'] = 'Avertissement : Ce service de courriel Web exige Javascript ! Afin de l\'utiliser, veuillez activer Javascript dans les paramètres de votre navigateur.';
?>
diff --git a/program/localization/fy_NL/labels.inc b/program/localization/fy_NL/labels.inc
index dc1e57969..2f467621f 100644
--- a/program/localization/fy_NL/labels.inc
+++ b/program/localization/fy_NL/labels.inc
@@ -82,5 +82,9 @@ $labels['longdec'] = 'desimber';
$labels['today'] = 'Hjoed';
$labels['refresh'] = 'Ferfarskje';
$labels['reply'] = 'Beäntwurdzje';
-$labels['folders'] = 'Mappen';
+$labels['savelocalstorage'] = "";
+$labels['folders'] = 'Mappen';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/ga_IE/labels.inc b/program/localization/ga_IE/labels.inc
index dc33d008d..e01645e0a 100644
--- a/program/localization/ga_IE/labels.inc
+++ b/program/localization/ga_IE/labels.inc
@@ -138,13 +138,11 @@ $labels['name'] = 'Leasainm';
$labels['firstname'] = 'Ainm baiste';
$labels['surname'] = 'Sloinne';
$labels['email'] = 'Ríomhphost';
-$labels['addcontact'] = 'Sábháil duine nua';
$labels['editcontact'] = 'Chuir chara in eagar';
$labels['edit'] = 'Athraigh';
$labels['cancel'] = 'Cealaigh';
$labels['save'] = 'Sábháil';
$labels['delete'] = 'Scrios';
-$labels['newcontact'] = 'Scríobh carta teagmháil nua';
$labels['deletecontact'] = 'Scrios na daoine seo';
$labels['composeto'] = 'Scríobh teachtaireacht go';
$labels['contactsfromto'] = 'Daoine as $from to $to as $count';
@@ -161,10 +159,6 @@ $labels['preferences'] = 'Tosaíocht';
$labels['userpreferences'] = 'Tosaíocht Pearsanta';
$labels['editpreferences'] = 'Athraigh tosaíocht pearsanta';
$labels['identities'] = 'Céannachtaí';
-$labels['manageidentities'] = 'Stiúir céannachtaí i cuntas seo';
-$labels['newidentity'] = 'Céannacht nua';
-$labels['newitem'] = 'Mír nua';
-$labels['edititem'] = 'Athraigh mhír';
$labels['preferhtml'] = 'Taispeáin an HTML';
$labels['htmlmessage'] = 'Teachtaireacht HTML';
$labels['prettydate'] = 'Dátaí Dheas';
@@ -179,14 +173,18 @@ $labels['htmlsignature'] = 'Mana clabhsúir HTML';
$labels['previewpane'] = 'Taispeáin an pána réamhamharc';
$labels['autosavedraft'] = 'Sábháil dréachta go huathoibríoch';
$labels['never'] = 'riamh';
-$labels['folder'] = 'Fillteán';
-$labels['folders'] = 'Fillteán';
-$labels['foldername'] = 'Ainm fillteán';
-$labels['subscribed'] = 'Síntiú';
-$labels['create'] = 'Cruthaigh';
-$labels['createfolder'] = 'Cruthaigh fillteán nua';
-$labels['managefolders'] = 'Stiúir na fillteán';
+$labels['savelocalstorage'] = "";
+$labels['folder'] = 'Fillteán';
+$labels['folders'] = 'Fillteán';
+$labels['foldername'] = 'Ainm fillteán';
+$labels['subscribed'] = 'Síntiú';
+$labels['create'] = 'Cruthaigh';
+$labels['createfolder'] = 'Cruthaigh fillteán nua';
+$labels['managefolders'] = 'Stiúir na fillteán';
$labels['sortby'] = 'Sórtáil trí';
$labels['sortasc'] = 'Sórtáil in ord méadaitheach';
$labels['sortdesc'] = 'Sórtáil in ord neartaitheach';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/gl_ES/labels.inc b/program/localization/gl_ES/labels.inc
index 899f35c5e..199269a37 100644
--- a/program/localization/gl_ES/labels.inc
+++ b/program/localization/gl_ES/labels.inc
@@ -52,6 +52,7 @@ $labels['fromtoshort'] = '$from - $to de $count';
$labels['copy'] = 'Copiar';
$labels['move'] = 'Mover';
$labels['moveto'] = 'Mover para...';
+$labels['copyto'] = 'Copiar a...';
$labels['download'] = 'Descargar';
$labels['open'] = 'Abrir';
$labels['showattachment'] = 'Amosar';
@@ -130,16 +131,24 @@ $labels['moreactions'] = 'Máis accións...';
$labels['more'] = 'Máis';
$labels['back'] = 'Atrás';
$labels['options'] = 'Opcións';
+$labels['first'] = 'Primeiro';
+$labels['last'] = 'Último';
+$labels['previous'] = 'Anterior';
+$labels['next'] = 'Seguinte';
$labels['select'] = 'Seleccionar';
$labels['all'] = 'Todas';
$labels['none'] = 'Ningunha';
$labels['currpage'] = 'Páxina actual';
+$labels['isread'] = 'Ler';
$labels['unread'] = 'Non lidas';
$labels['flagged'] = 'Marcadas';
+$labels['unflagged'] = 'Non marcado';
$labels['unanswered'] = 'Non respostadas';
$labels['withattachment'] = 'Con anexo';
$labels['deleted'] = 'Marcadas como eliminadas';
$labels['undeleted'] = 'Non borradas';
+$labels['replied'] = 'Respostado';
+$labels['forwarded'] = 'Reenviado';
$labels['invert'] = 'Inverter';
$labels['filter'] = 'Filtrar';
$labels['list'] = 'Lista';
@@ -170,6 +179,11 @@ $labels['importmessages'] = 'Importar mensaxes';
$labels['quota'] = 'Uso de disco';
$labels['unknown'] = 'descoñecido';
$labels['unlimited'] = 'ilimitado';
+$labels['quotatype'] = 'Tipo de quota';
+$labels['quotatotal'] = 'Límite';
+$labels['quotaused'] = 'Usado';
+$labels['quotastorage'] = 'Espazo en disco';
+$labels['quotamessage'] = 'Conteo de mensaxes';
$labels['quicksearch'] = 'Busca rápida';
$labels['resetsearch'] = 'Restabelecer a pesquisa';
$labels['searchmod'] = 'Modificadores de pesquisa';
@@ -177,6 +191,10 @@ $labels['msgtext'] = 'Toda a mensaxe';
$labels['body'] = 'Corpo';
$labels['type'] = 'Tipo';
$labels['namex'] = 'Nome';
+$labels['searchscope'] = 'Alcance';
+$labels['currentfolder'] = 'Cartafol actual';
+$labels['subfolders'] = 'Esta cartafol e as súas fillas';
+$labels['allfolders'] = 'Tódalas cartafoles';
$labels['openinextwin'] = 'Abrir nunha nova xanela';
$labels['emlsave'] = 'Descargar (.eml)';
$labels['changeformattext'] = 'Amosar en texto plano';
@@ -192,6 +210,10 @@ $labels['returnreceipt'] = 'Notificación da entrega';
$labels['dsn'] = 'Notificación do estado de envío (DSN)';
$labels['mailreplyintro'] = 'O $date, $sender escribiu:';
$labels['originalmessage'] = 'Mensaxe orixinal';
+$labels['selectimage'] = 'Seleccionar imaxe';
+$labels['addimage'] = 'Engadir imaxe';
+$labels['selectmedia'] = 'Escoller película';
+$labels['addmedia'] = 'Engarid película';
$labels['editidents'] = 'Modificar identidades';
$labels['spellcheck'] = 'Ortografía';
$labels['checkspelling'] = 'Revisar a ortografía';
@@ -202,9 +224,10 @@ $labels['restoremessage'] = 'Restaurar mensaxe?';
$labels['responses'] = 'Respostas';
$labels['insertresponse'] = 'Inserir unha resposta';
$labels['manageresponses'] = 'Xestionar respostas';
-$labels['savenewresponse'] = 'Gardar a nova resposta';
-$labels['editresponses'] = 'Editar respostas';
+$labels['newresponse'] = 'Crear nova resposta';
+$labels['addresponse'] = 'Engadir resposta';
$labels['editresponse'] = 'Editar resposta ';
+$labels['editresponses'] = 'Editar respostas';
$labels['responsename'] = 'Nome';
$labels['responsetext'] = 'Texto de resposta';
$labels['attach'] = 'Anexar';
@@ -213,6 +236,7 @@ $labels['upload'] = 'Cargar';
$labels['uploadprogress'] = '$percent ($current de $total)';
$labels['close'] = 'Pechar';
$labels['messageoptions'] = 'Opcións da mensaxe...';
+$labels['togglecomposeoptions'] = 'Conmutar opcións de redacción';
$labels['low'] = 'Baixa';
$labels['lowest'] = 'A máis baixa';
$labels['normal'] = 'Normal';
@@ -269,6 +293,7 @@ $labels['assistant'] = 'Asistente';
$labels['spouse'] = 'Parella';
$labels['allfields'] = 'Todos os campos';
$labels['search'] = 'Procurar';
+$labels['searchfor'] = 'Procurar "$1"';
$labels['advsearch'] = 'Procura avanzada';
$labels['advanced'] = 'Avanzado';
$labels['other'] = 'Outro';
@@ -287,11 +312,13 @@ $labels['typehomepage'] = 'Páxina principal';
$labels['typeblog'] = 'Blogue';
$labels['typeprofile'] = 'Perfil';
$labels['addfield'] = 'Engadir campo...';
-$labels['addcontact'] = 'Engadir novo contacto';
+$labels['addcontact'] = 'Engadir contacto';
$labels['editcontact'] = 'Modificar este contacto';
$labels['contacts'] = 'Contactos';
$labels['contactproperties'] = 'Propiedades do contacto';
+$labels['contactnameandorg'] = 'Nome e organización';
$labels['personalinfo'] = 'Información persoal';
+$labels['contactphoto'] = 'Foto do contacto';
$labels['edit'] = 'Editar';
$labels['cancel'] = 'Cancelar';
$labels['save'] = 'Gardar';
@@ -300,7 +327,7 @@ $labels['rename'] = 'Mudar o nome';
$labels['addphoto'] = 'Engadir';
$labels['replacephoto'] = 'Substituír';
$labels['uploadphoto'] = 'Subir foto';
-$labels['newcontact'] = 'Novo contacto';
+$labels['newcontact'] = 'Crear contacto novo';
$labels['deletecontact'] = 'Eliminar os contactos seleccionados';
$labels['composeto'] = 'Redactar mensaxe para';
$labels['contactsfromto'] = 'Contactos do $from ao $to de $count';
@@ -309,10 +336,11 @@ $labels['export'] = 'Exportar';
$labels['exportall'] = 'Exportar todas';
$labels['exportsel'] = 'Exportar as seleccionadas';
$labels['exportvcards'] = 'Exportar os contactos en formato vCard';
-$labels['newcontactgroup'] = 'Crear novo grupo de contactos';
+$labels['newgroup'] = 'Crear novo grupo';
$labels['grouprename'] = 'Mudar o nome do grupo';
$labels['groupdelete'] = 'Borrar o grupo';
$labels['groupremoveselected'] = 'Eliminar do grupo os contactos seleccionados';
+$labels['uponelevel'] = 'Subir un nivel';
$labels['previouspage'] = 'Amosar o grupo anterior';
$labels['firstpage'] = 'Amosar o primeiro grupo';
$labels['nextpage'] = 'Amosar o seguinte grupo';
@@ -339,10 +367,10 @@ $labels['preferences'] = 'Preferencias';
$labels['userpreferences'] = 'Preferencias de utente';
$labels['editpreferences'] = 'Editar preferencias de utente';
$labels['identities'] = 'Identidades';
-$labels['manageidentities'] = 'Administrar as identidades desta conta';
-$labels['newidentity'] = 'Nova identidade';
-$labels['newitem'] = 'Novo';
-$labels['edititem'] = 'Editar';
+$labels['manageidentities'] = 'Administrar identidades';
+$labels['newidentity'] = 'Crear identidade nova';
+$labels['addidentity'] = 'Engadir identidad';
+$labels['editidentity'] = 'Editar identidade';
$labels['preferhtml'] = 'Prefiro HTML';
$labels['defaultcharset'] = 'Xogo de caracteres por omisión';
$labels['htmlmessage'] = 'Mensaxe HTML';
@@ -399,7 +427,9 @@ $labels['2231folding'] = 'Conforme ao RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Conforme ao RFC 2047 (outros)';
$labels['force7bit'] = 'Usar MIME para codificar caracteres de 8 bits';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'Opcións avanzadas';
+$labels['toggleadvancedoptions'] = 'Amosar opcións avanzadas';
$labels['focusonnewmessage'] = 'Centrar a xanela do navegador en novas mensaxes';
$labels['checkallfolders'] = 'Procurar novas mensaxes en todos os cartafoles';
$labels['displaynext'] = 'Logo de eliminar ou mover unha mensaxe ir á mensaxe seguinte';
@@ -441,14 +471,14 @@ $labels['asattachment'] = 'coma anexo';
$labels['replyallmode'] = 'Acción dpor defecto do botón [Responder a todos]';
$labels['replyalldefault'] = 'responder a todos';
$labels['replyalllist'] = 'responder só para a lista (se for atopada)';
-$labels['folder'] = 'Cartafol';
-$labels['folders'] = 'Cartafoles';
-$labels['foldername'] = 'Nome do cartafol';
-$labels['subscribed'] = 'Subscrito(a)';
+$labels['folder'] = 'Cartafol';
+$labels['folders'] = 'Cartafoles';
+$labels['foldername'] = 'Nome do cartafol';
+$labels['subscribed'] = 'Subscrito(a)';
$labels['messagecount'] = 'Mensaxes';
-$labels['create'] = 'Crear';
-$labels['createfolder'] = 'Crear un novo cartafol';
-$labels['managefolders'] = 'Xestionar cartafoles';
+$labels['create'] = 'Crear';
+$labels['createfolder'] = 'Crear un novo cartafol';
+$labels['managefolders'] = 'Xestionar cartafoles';
$labels['specialfolders'] = 'Cartafoles especiais';
$labels['properties'] = 'Propiedades';
$labels['folderproperties'] = 'Propiedades do cartafol';
@@ -458,9 +488,9 @@ $labels['info'] = 'Información';
$labels['getfoldersize'] = 'Preme para calcular o tamaño do cartafol';
$labels['changesubscription'] = 'Preme para mudar a subscrición';
$labels['foldertype'] = 'Tipo do cartafol';
-$labels['personalfolder'] = 'Cartafol privado';
-$labels['otherfolder'] = 'Cartafol de outra persoa usuaria';
-$labels['sharedfolder'] = 'Cartafol público';
+$labels['personalfolder'] = 'Cartafol privado';
+$labels['otherfolder'] = 'Cartafol de outra persoa usuaria';
+$labels['sharedfolder'] = 'Cartafol público';
$labels['sortby'] = 'Ordenar por';
$labels['sortasc'] = 'Orde ascendente';
$labels['sortdesc'] = 'Orde descendente';
@@ -493,4 +523,36 @@ $labels['vietnamese'] = 'Vietnamita';
$labels['japanese'] = 'Xaponés';
$labels['korean'] = 'Coreano';
$labels['chinese'] = 'Chinés';
+$labels['arialabeltasknav'] = 'Tarefas da aplicación';
+$labels['arialabelactivetask'] = 'Tarefa activa';
+$labels['arialabelmessagessearchfilter'] = 'Filtro de listaxe de correo';
+$labels['arialabelmailsearchform'] = 'Formulario de busca de mensaxes de correo';
+$labels['arialabelcontactsearchform'] = 'Formulario de busca de contactos';
+$labels['arialabelmessagelist'] = 'Listaxe de mensaxes de correo';
+$labels['arialabelmailpreviewframe'] = 'Previsualización das mensaxes';
+$labels['arialabelmailboxmenu'] = 'Menú das accións de cartafol';
+$labels['arialabellistselectmenu'] = 'Menú de selección de listaxe';
+$labels['arialabelthreadselectmenu'] = 'Menú da listaxe por fíos';
+$labels['arialabelmailimportdialog'] = 'Diálogo de importación de mensaxes';
+$labels['arialabelmessagenav'] = 'Navegación pola mensaxe';
+$labels['arialabelmessagebody'] = 'Corpo da mensaxe';
+$labels['arialabelmessageactions'] = 'Accións da mensaxe';
+$labels['arialabelcontactquicksearch'] = 'Formulario de busca de contactos';
+$labels['arialabelmessageheaders'] = 'Cabeceiras da mensaxe';
+$labels['arialabelforwardingoptions'] = 'Opcións de "Reenviar"';
+$labels['arialabelreplyalloptions'] = 'Opcións de "Respostar a todos"';
+$labels['arialabelmoremessageactions'] = 'Máis accións de mensaxe';
+$labels['arialabelmarkmessagesas'] = 'Marcar as mensaxes seleccionadas coma...';
+$labels['arialabelcomposeoptions'] = 'Opcións de redacción';
+$labels['arialabelattachmentuploadform'] = 'Formulario de subida de anexos';
+$labels['arialabelattachmentpreview'] = 'Previsualizar anexos';
+$labels['arialabelcontactexportoptions'] = 'Opcións do exportado de contactos';
+$labels['arialabelabookgroupoptions'] = 'Opcións de axenda de enderezos/grupos';
+$labels['arialabelpreferencesform'] = 'Formulario de preferencias';
+$labels['arialabelidentityeditfrom'] = 'Formulario de edición de identidade';
+$labels['arialabelresonseeditfrom'] = 'Formulario de edición de resposta';
+$labels['helplistnavigation'] = 'Navegación pola lista con teclado';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "Enter: Abrir o contacto seleccionado.";
?>
diff --git a/program/localization/gl_ES/messages.inc b/program/localization/gl_ES/messages.inc
index 2e9fc338d..1ce134b48 100644
--- a/program/localization/gl_ES/messages.inc
+++ b/program/localization/gl_ES/messages.inc
@@ -22,7 +22,9 @@ $messages['sessionerror'] = 'A tú sesión non é válida ou expirou.';
$messages['storageerror'] = 'Fallou a conexión co servidor IMAP.';
$messages['servererror'] = 'Erro do servidor!';
$messages['servererrormsg'] = 'Erro do servidor: $msg';
+$messages['connerror'] = 'Fallou a conexión co servidor!';
$messages['dberror'] = 'Erro na base de datos!';
+$messages['windowopenerror'] = 'Bloquouse a fiestra emerxente!';
$messages['requesttimedout'] = 'A petición expirou';
$messages['errorreadonly'] = 'Non foi posíbel realizar a operación. O cartafol é de só lectura.';
$messages['errornoperm'] = 'Non foi posíbel realizar a operación. Permiso denegado.';
@@ -32,6 +34,8 @@ $messages['invalidrequest'] = 'Petición non válida! Non se gardou ningún dato
$messages['invalidhost'] = 'O nome do servidor non é válido.';
$messages['nomessagesfound'] = 'Non se atoparon mensaxes nesta caixa de correo.';
$messages['loggedout'] = 'Rematou correctamente a tú sesión. Até logo!';
+$messages['mailboxempty'] = 'O cartafol está baleiro';
+$messages['nomessages'] = 'Non hai mensaxes';
$messages['refreshing'] = 'A refrescar...';
$messages['loading'] = 'Cargando...';
$messages['uploading'] = 'Cargando ficheiro...';
@@ -90,6 +94,7 @@ $messages['contactsearchsuccessful'] = 'Atopáronse $nr contactos.';
$messages['searchnomatch'] = 'A busca non atopou coincidencias.';
$messages['searching'] = 'Buscando...';
$messages['checking'] = 'Comprobando...';
+$messages['stillsearching'] = 'Buscando...';
$messages['nospellerrors'] = 'Non hai erros ortográficos.';
$messages['folderdeleted'] = 'O cartafol foi eliminado correctamente.';
$messages['foldersubscribed'] = 'O cartafol subscribiuse correctamente.';
@@ -133,7 +138,7 @@ $messages['importmessagesuccess'] = 'Importadas $nr mensaxes con éxito';
$messages['importmessageerror'] = 'Fallou a importación! O arquivo subido non é unha mensaxe válida ou un ficheiro de correo';
$messages['opnotpermitted'] = 'Operación non permitida!';
$messages['nofromaddress'] = 'Falta o enderezo de correo electrónico na identidade que escolleches.';
-$messages['editorwarning'] = 'Se mudas agora ao editor de texto plano, vas perder todo o formato do texto. Queres continuar?';
+$messages['editorwarning'] = 'Se troca neste intre ao editor de texto plano, vai perder todo o formato do texto. Quere continuar?';
$messages['httpreceivedencrypterror'] = 'Produciuse un erro fatal de configuración. Contacta coa persoa administradora inmediatamente. <b>Non se enviou a túa mensaxe.</b>';
$messages['smtpconnerror'] = 'Erro SMTP ($code): Fallou a conexión co servidor.';
$messages['smtpautherror'] = 'Erro SMTP ($code): Fallou a autenticación.';
diff --git a/program/localization/he_IL/labels.inc b/program/localization/he_IL/labels.inc
index 66c4a26b3..d393149d4 100644
--- a/program/localization/he_IL/labels.inc
+++ b/program/localization/he_IL/labels.inc
@@ -131,16 +131,24 @@ $labels['moreactions'] = 'פעולות נוספות...';
$labels['more'] = 'עוד';
$labels['back'] = 'חזרה';
$labels['options'] = 'אפשרויות';
+$labels['first'] = 'ראשונה';
+$labels['last'] = 'אחרונה';
+$labels['previous'] = 'הקודמת';
+$labels['next'] = 'הבאה';
$labels['select'] = 'בחירה';
$labels['all'] = 'הכל';
$labels['none'] = 'כלום';
$labels['currpage'] = 'דף נוכחי';
+$labels['isread'] = 'קריאה';
$labels['unread'] = 'לא נקראו';
$labels['flagged'] = 'מסומן';
+$labels['unflagged'] = 'לא מדוגלת';
$labels['unanswered'] = 'לא נענה';
$labels['withattachment'] = 'עם צרופה';
$labels['deleted'] = 'נמחק';
$labels['undeleted'] = 'לא נמחק';
+$labels['replied'] = 'נענתה';
+$labels['forwarded'] = 'קודמה';
$labels['invert'] = 'היפוך הסימון';
$labels['filter'] = 'סינון';
$labels['list'] = 'רשימה';
@@ -164,13 +172,18 @@ $labels['listcolumns'] = 'רשימת עמודות';
$labels['listsorting'] = 'המיון לפי העמודה';
$labels['listorder'] = 'סדר מיון';
$labels['listmode'] = 'אופן הצגת רשימה';
-$labels['folderactions'] = 'פעולות על תיקים';
+$labels['folderactions'] = 'פעולות על תיקיות';
$labels['compact'] = 'פינוי שטח לא מנוצל';
$labels['empty'] = 'ריקון';
$labels['importmessages'] = 'ייבוא הודעות';
$labels['quota'] = 'ניצול קיבולת';
$labels['unknown'] = 'לא ידוע';
$labels['unlimited'] = 'ללא הגבלה';
+$labels['quotatype'] = 'טיפוס קווטה';
+$labels['quotatotal'] = 'הגבלה';
+$labels['quotaused'] = 'בשימוש';
+$labels['quotastorage'] = 'נפח כונן';
+$labels['quotamessage'] = 'ספירת הודעות';
$labels['quicksearch'] = 'חיפוש מהיר';
$labels['resetsearch'] = 'ניקוי תיבת החיפוש';
$labels['searchmod'] = 'מאפייני חיפוש';
@@ -178,6 +191,10 @@ $labels['msgtext'] = 'כל ההודעה';
$labels['body'] = 'גוף ההודעה';
$labels['type'] = 'סוג';
$labels['namex'] = 'שם';
+$labels['searchscope'] = 'היקף';
+$labels['currentfolder'] = 'תיקיה נוכחית';
+$labels['subfolders'] = 'תיקיה זו ותת תיקיות';
+$labels['allfolders'] = 'כל התיקיות';
$labels['openinextwin'] = 'פתיחה בחלון חדש';
$labels['emlsave'] = 'הורדת הודעה בפורמט EML';
$labels['changeformattext'] = 'הצגה בפורמט לא מעוצב';
@@ -193,6 +210,10 @@ $labels['returnreceipt'] = 'אישור קבלה';
$labels['dsn'] = 'הודעה על מצב המסירה';
$labels['mailreplyintro'] = ':כתב $sender, $date בתאריך';
$labels['originalmessage'] = 'הודעה מקורית';
+$labels['selectimage'] = 'בחר תמונה';
+$labels['addimage'] = 'הוסף תמונה';
+$labels['selectmedia'] = 'בחר סרטון';
+$labels['addmedia'] = 'הוסף סרטון';
$labels['editidents'] = 'עריכת זהויות';
$labels['spellcheck'] = 'איות';
$labels['checkspelling'] = 'בדיקת איות';
@@ -203,9 +224,10 @@ $labels['restoremessage'] = 'לשחזר הודעה?';
$labels['responses'] = 'תגובות';
$labels['insertresponse'] = 'הכנסת תגובה';
$labels['manageresponses'] = 'ניהול תגובות';
-$labels['savenewresponse'] = 'שמירת תגובה חדשה';
-$labels['editresponses'] = 'עריכת תגובות';
+$labels['newresponse'] = 'צור מענה חדש';
+$labels['addresponse'] = 'הוסף מענה';
$labels['editresponse'] = 'עריכת תגובה';
+$labels['editresponses'] = 'עריכת תגובות';
$labels['responsename'] = 'שם';
$labels['responsetext'] = 'גוף התגובה';
$labels['attach'] = 'צירוף';
@@ -214,6 +236,7 @@ $labels['upload'] = 'העלאה';
$labels['uploadprogress'] = '( $total מתוך $current ) $percent';
$labels['close'] = 'סגירה';
$labels['messageoptions'] = 'אפשרויות הודעה...';
+$labels['togglecomposeoptions'] = 'בחירה בין הגדרות בסיסיות או מתקדמות של יצירת הודעה';
$labels['low'] = 'נמוך';
$labels['lowest'] = 'נמוך ביותר';
$labels['normal'] = 'רגיל';
@@ -270,6 +293,7 @@ $labels['assistant'] = 'עוזר/ת';
$labels['spouse'] = 'בן/בת זוג';
$labels['allfields'] = 'כל השדות';
$labels['search'] = 'חיפוש';
+$labels['searchfor'] = 'חיפוש של "q$"';
$labels['advsearch'] = 'חיםוש מתקדם';
$labels['advanced'] = 'מתקדם';
$labels['other'] = 'אחר';
@@ -288,11 +312,13 @@ $labels['typehomepage'] = 'דף הבית';
$labels['typeblog'] = 'יומן רשת';
$labels['typeprofile'] = 'פרופיל';
$labels['addfield'] = 'הוסף שדה';
-$labels['addcontact'] = 'הוספת איש קשר';
+$labels['addcontact'] = 'הוסף איש קשר';
$labels['editcontact'] = 'עריכת איש קשר';
$labels['contacts'] = 'אנשי קשר';
$labels['contactproperties'] = 'מאפייני איש קשר';
+$labels['contactnameandorg'] = 'שם וארגון';
$labels['personalinfo'] = 'מידע אישי';
+$labels['contactphoto'] = 'תצלום איש קשר';
$labels['edit'] = 'עריכה';
$labels['cancel'] = 'ביטול';
$labels['save'] = 'שמירה';
@@ -301,7 +327,7 @@ $labels['rename'] = 'שינוי שם';
$labels['addphoto'] = 'הוספה';
$labels['replacephoto'] = 'החלפה';
$labels['uploadphoto'] = 'העלאת תמונה';
-$labels['newcontact'] = 'איש קשר חדש';
+$labels['newcontact'] = 'צור איש קשר חדש';
$labels['deletecontact'] = 'מחיקת אנשי קשר מסומנים';
$labels['composeto'] = 'יצירת הודעה אל';
$labels['contactsfromto'] = 'אנשי קשר $from עד $to מתוך $count';
@@ -310,10 +336,11 @@ $labels['export'] = 'ייצוא';
$labels['exportall'] = 'יצוא של כל הרשומות';
$labels['exportsel'] = 'צוא של רשומות נבחרות';
$labels['exportvcards'] = 'ייצוא אנשי קשר בפורמט vCard';
-$labels['newcontactgroup'] = 'יצירת קבוצה חדשה של אנשי קשר';
+$labels['newgroup'] = 'הוסף קבוצה חדשה';
$labels['grouprename'] = 'שינוי שם קבוצה';
$labels['groupdelete'] = 'מחיקת קבוצה';
$labels['groupremoveselected'] = 'אנשי הקשר שנבחרו יוסרו מהקבוצה';
+$labels['uponelevel'] = 'רמה אחת מעלה';
$labels['previouspage'] = 'הצגת הקבוצה הקודמת';
$labels['firstpage'] = 'הצגת הקבוצה הראשונה';
$labels['nextpage'] = 'הצגת הקבוצה הבאה';
@@ -342,10 +369,10 @@ $labels['preferences'] = 'העדפות';
$labels['userpreferences'] = 'העדפות משתמש';
$labels['editpreferences'] = 'עריכה של העדפות משתמש';
$labels['identities'] = 'זהויות';
-$labels['manageidentities'] = 'ניהול זהויות לחשבון זה';
-$labels['newidentity'] = 'זהות חדשה';
-$labels['newitem'] = 'רשומה חדשה';
-$labels['edititem'] = 'עריכת רשומה';
+$labels['manageidentities'] = 'נהל זהויות';
+$labels['newidentity'] = 'צור זהות חדשה';
+$labels['addidentity'] = 'הוסף זהות';
+$labels['editidentity'] = 'ערוך זהות';
$labels['preferhtml'] = 'הצגת HTML';
$labels['defaultcharset'] = 'ברירת מחדל של תווים';
$labels['htmlmessage'] = 'תוכן HTML';
@@ -392,7 +419,7 @@ $labels['always'] = 'תמיד';
$labels['showinlineimages'] = 'הצגת תמונות מצורפות בתחתית ההודעה';
$labels['autosavedraft'] = 'שמירה אוטומטית של טיוטה';
$labels['everynminutes'] = 'כל $n דקות';
-$labels['refreshinterval'] = 'רענון (בדיקת קיום של הודעות חדשות וכו\')';
+$labels['refreshinterval'] = 'רענון ההתצוגה לשם בדיקת קיום של הודעות חדשות וכדומה';
$labels['never'] = 'אף פעם';
$labels['immediately'] = 'מיידית';
$labels['messagesdisplaying'] = 'הצגת הודעות';
@@ -402,9 +429,11 @@ $labels['2231folding'] = 'תאימות מלאה 2231 תאנדרבירד';
$labels['miscfolding'] = 'תאימות 2047/2231 אאוטלוק';
$labels['2047folding'] = 'תאימות מלאה 2047 אחרים';
$labels['force7bit'] = 'קידוד MIME עבור תווים בעלי 8 ביטים';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'הגדרות נוספות';
+$labels['toggleadvancedoptions'] = 'בחירה בין הגדרות בסיסיות או מתקדמות';
$labels['focusonnewmessage'] = 'מיקוד הסמן על החלון עם ההודעה החדשה';
-$labels['checkallfolders'] = 'בדיקת הודעות חדשות בכל התיקים';
+$labels['checkallfolders'] = 'בדיקת הודעות חדשות בכל התיקיות';
$labels['displaynext'] = 'מעבר להודעה הבאה לאחר מחיקה או תיוק';
$labels['defaultfont'] = 'גופן ברירת מחדל להודעה בפורמט HTML';
$labels['mainoptions'] = 'אפשרויות עיקריות';
@@ -444,26 +473,30 @@ $labels['asattachment'] = 'כצרופה';
$labels['replyallmode'] = 'ברירת המחדל של כפתור [מענה לכולם]';
$labels['replyalldefault'] = 'מענה לכולם';
$labels['replyalllist'] = 'מענה לרשימת תפוצה בלבד (אם קיימת)';
-$labels['folder'] = 'תיק';
-$labels['folders'] = 'תיקיות';
-$labels['foldername'] = 'שם תיק';
-$labels['subscribed'] = 'מנוי';
+$labels['folder'] = 'תיקיה';
+$labels['folders'] = 'תיקיות';
+$labels['foldername'] = 'שם תיקיה';
+$labels['subscribed'] = 'מנוי';
$labels['messagecount'] = 'הודעות';
-$labels['create'] = 'יצירה';
-$labels['createfolder'] = 'יצירת תיק חדש';
-$labels['managefolders'] = 'ניהול תיקים';
-$labels['specialfolders'] = 'תיקים מיוחדים';
+$labels['create'] = 'יצירה';
+$labels['createfolder'] = 'יצירת תיקיה חדשה';
+$labels['managefolders'] = 'ניהול תיקיות';
+$labels['specialfolders'] = 'תיקיות מיוחדות';
$labels['properties'] = 'מאפיינים';
-$labels['folderproperties'] = 'מאפייני תיק';
-$labels['parentfolder'] = 'תיק אב';
+$labels['folderproperties'] = 'מאפייני תיקיה';
+$labels['parentfolder'] = 'תיקית אב';
$labels['location'] = 'מיקום';
$labels['info'] = 'מידע';
-$labels['getfoldersize'] = 'הקשה להצגה של גודל תיק';
+$labels['getfoldersize'] = 'הקשה להצגה של גודל תיקיה';
$labels['changesubscription'] = 'הקשה לשינוי הרשמה';
$labels['foldertype'] = 'סוג תיקיה';
-$labels['personalfolder'] = 'תיקיה פרטית';
-$labels['otherfolder'] = 'תיקית משתמש נוספת';
-$labels['sharedfolder'] = 'תיקיה ציבורית';
+$labels['personalfolder'] = 'תיקיה פרטית';
+$labels['otherfolder'] = 'תיקית משתמש נוספת';
+$labels['sharedfolder'] = 'תיקיה ציבורית';
+$labels['findfolders'] = 'חיפוש תיקיות';
+$labels['namespace.personal'] = 'אישי';
+$labels['namespace.other'] = 'משתמשים אחרים';
+$labels['namespace.shared'] = 'משותף';
$labels['sortby'] = 'מיון לפי';
$labels['sortasc'] = 'מיון בסדר עולה';
$labels['sortdesc'] = 'מיון בסדר יורד';
@@ -496,4 +529,53 @@ $labels['vietnamese'] = 'וויטנאמי';
$labels['japanese'] = 'יפני';
$labels['korean'] = 'קוריאני';
$labels['chinese'] = 'סיני';
+$labels['arialabeltopnav'] = 'בקרת חלון';
+$labels['arialabeltasknav'] = 'משימות יישום';
+$labels['arialabeltoolbar'] = 'סרגל כלים יישום';
+$labels['arialabelactivetask'] = 'משימה פעילה';
+$labels['arialabelmessagessearchfilter'] = 'מסנן של רשימת ההודעות';
+$labels['arialabelmailsearchform'] = 'טופס חיפוש בתוך הודעות';
+$labels['arialabelcontactsearchform'] = 'תבנית חיפוש אנשי קשר';
+$labels['arialabelmailquicksearchbox'] = 'הקשת מילות חיפוש';
+$labels['arialabelquicksearchbox'] = 'קלט חיפוש';
+$labels['arialabelfoldersearchfilter'] = 'מסנן רשימת תיקיות';
+$labels['arialabelfoldersearchform'] = 'מסך חיפוש תיקייה';
+$labels['arialabelfolderlist'] = 'בחירה של תיקית הודעות';
+$labels['arialabelmessagelist'] = 'רשימת הודעות';
+$labels['arialabelmailpreviewframe'] = 'תצוגה מקדמית של הודעה';
+$labels['arialabelmailboxmenu'] = 'תפריט פעולות תפריט';
+$labels['arialabellistselectmenu'] = 'רשימת פריטים לבחירה';
+$labels['arialabelthreadselectmenu'] = 'בחירת פתילים של הודעות מתוך רשימה';
+$labels['arialabelmessagelistoptions'] = 'אפשרויות להצגת הודעות ומיונן';
+$labels['arialabelmailimportdialog'] = 'תהליך ייבוא הודעות';
+$labels['arialabelmessagenav'] = 'ניווט הודעה';
+$labels['arialabelmessagebody'] = 'גוף הודעה';
+$labels['arialabelmessageactions'] = 'פעולות הודעה';
+$labels['arialabelcontactquicksearch'] = 'תבנית חיפוש אנשי קשר';
+$labels['arialabelcontactsearchbox'] = 'קלט חיפוש איש קשר';
+$labels['arialabelmessageheaders'] = 'תקורות הודעה';
+$labels['arialabelforwardingoptions'] = 'אפשרויות העברה';
+$labels['arialabelreplyalloptions'] = 'אפשרויות מענה לכולם';
+$labels['arialabelmoremessageactions'] = 'עוד פעולות הודעה';
+$labels['arialabelmarkmessagesas'] = 'סימון הודעות נבחרות בתור...';
+$labels['arialabelcomposeoptions'] = 'אפשרויות הלחנה';
+$labels['arialabelresponsesmenu'] = 'תפריט של תגובות מוכנות מראש';
+$labels['arialabelattachmentuploadform'] = 'תבנית העלאת תצריף';
+$labels['arialabelattachmentpreview'] = 'תצוגה מקדמית של תצריף';
+$labels['ariasummarycomposecontacts'] = 'רשימה של אנשי קשר וקבוצות שיבחרו כנמענים';
+$labels['arialabelcontactexportoptions'] = 'אפשרויות ייצוא איש קשר';
+$labels['arialabelabookgroupoptions'] = 'אפשרויות קבוצה/פנקס כתובות';
+$labels['arialabelpreferencesform'] = 'תבנית העדפות';
+$labels['arialabelidentityeditfrom'] = 'טופס עריכת זהות';
+$labels['arialabelresonseeditfrom'] = 'טופס עריכת מענה';
+$labels['arialabelsearchterms'] = 'מילות חיםוש';
+$labels['helplistnavigation'] = 'ניווט ברשימה באמצעות לוח המקשים';
+$labels['helplistkeyboardnavigation'] = "חיצים למלעלה/למטה: בחירת שורה/מיקוד בשורה
+מקש רווח: בחירה בשורת המיקוד
+מקש SHIFT+חץ למעלה/למטה: בחירה בשורות נוספות מעל/מתחת לשורה הנוכחית
+מקש CTRL+רווח: הוספה/הסרה של שורה מהקבוצה שנבחרה";
+$labels['helplistkeyboardnavmessages'] = "חץ ימין/שמאל: הרחבה/צימצום של פתיל ההודעות (במצב של הצגת פתילים בלבד)
+ENTER: פתיחה של ההודעה שנבחרה
+DELETE: העברה של ההודעה שנבחרה לפח האשפה";
+$labels['helplistkeyboardnavcontacts'] = "ENTER: פתיחה של איש הקשר שסומן ";
?>
diff --git a/program/localization/he_IL/messages.inc b/program/localization/he_IL/messages.inc
index e6d95aa6d..254ebf216 100644
--- a/program/localization/he_IL/messages.inc
+++ b/program/localization/he_IL/messages.inc
@@ -22,7 +22,9 @@ $messages['sessionerror'] = 'כניסתך למערכת אינה חוקית או
$messages['storageerror'] = 'הקשר לשרת הדואר נכשל';
$messages['servererror'] = '! שגיאת שרת';
$messages['servererrormsg'] = '$msg שגיאת שרת';
+$messages['connerror'] = 'שגיאת תקשורת עם השרת.';
$messages['dberror'] = '! שגיאה במסד הנתונים';
+$messages['windowopenerror'] = 'החלון הקופץ נחסם!';
$messages['requesttimedout'] = 'תם הזמן המוקצב לבקשה';
$messages['errorreadonly'] = 'לא ניתן לבצע הפעולה כי התיק ניתן לקריאה בלבד';
$messages['errornoperm'] = 'לא ניתן לבצע הפעולה כי אין הרשאה לבצעה';
@@ -92,6 +94,7 @@ $messages['contactsearchsuccessful'] = 'נמצאו $nr אנשי קשר';
$messages['searchnomatch'] = 'תוצאת החיפוש ריקה';
$messages['searching'] = 'חיפוש...';
$messages['checking'] = 'בדיקה...';
+$messages['stillsearching'] = 'עדיין בחיפוש...';
$messages['nospellerrors'] = 'לא נמצאו שגיאות כתיב';
$messages['folderdeleted'] = 'התיק נמחק בהצלחה';
$messages['foldersubscribed'] = 'התיק נרשם בהצלחה';
@@ -135,7 +138,7 @@ $messages['importmessagesuccess'] = 'יובאו בהצלחה $nr הודעות ';
$messages['importmessageerror'] = 'היבוא נכשל ! הקובץ שהועלה אינו הודעה או קובץ הודעות במבנה מתאים';
$messages['opnotpermitted'] = 'פעולה אסורה!';
$messages['nofromaddress'] = 'לזהות שנבחרה חסרה כתובת דואר';
-$messages['editorwarning'] = 'המעבר לעורך רגיל יגרום לאיבוד את העריכה הקיימת. האם להמשיך?';
+$messages['editorwarning'] = 'החלפת טיפוס עורך עלולה לגרום לאבדן עיצוב טקסט. האם ברצונך להמשיך?';
$messages['httpreceivedencrypterror'] = 'ארעה שגיאת תצורה חמורה. נא להודיע מייד למנהל/ת המערכת. <B> הודעתך לא תשלח <B>';
$messages['smtpconnerror'] = 'SMTP ($code): אבד הקשר לשרת';
$messages['smtpautherror'] = 'SMTP ($code): ההזדהות נכשלה';
diff --git a/program/localization/hi_IN/labels.inc b/program/localization/hi_IN/labels.inc
index a8b684c56..e204630b9 100644
--- a/program/localization/hi_IN/labels.inc
+++ b/program/localization/hi_IN/labels.inc
@@ -139,13 +139,11 @@ $labels['name'] = 'दिखने वाला नाम';
$labels['firstname'] = 'पहला नाम';
$labels['surname'] = 'उपनाम';
$labels['email'] = 'मेल';
-$labels['addcontact'] = 'नया पता जोडें';
$labels['editcontact'] = 'पता सम्पाद';
$labels['edit'] = 'सम्पाद';
$labels['cancel'] = 'रद्द';
$labels['save'] = 'सहेज';
$labels['delete'] = 'मिटा';
-$labels['newcontact'] = 'नया पता कार्ड बनाऐं';
$labels['deletecontact'] = 'चुने पते मिटाऐं';
$labels['composeto'] = 'को मेल भेजें';
$labels['contactsfromto'] = '$from से ले कर $to, $count पते में से';
@@ -160,10 +158,6 @@ $labels['preferences'] = 'पसंद';
$labels['userpreferences'] = 'यूसर पसंद';
$labels['editpreferences'] = 'यूसर पसंद सम्पादें';
$labels['identities'] = 'पहचान';
-$labels['manageidentities'] = 'इस खाते के पहचान व्यवस्थित करें';
-$labels['newidentity'] = 'नया पहचान';
-$labels['newitem'] = 'नया चीज़';
-$labels['edititem'] = 'चीज़ सम्पादें';
$labels['preferhtml'] = 'ऐच-टी-ऐम-ऐल(HTML) दिखाऐं';
$labels['htmlmessage'] = 'ऐच-टी-ऐम-ऐल (HTML) रूप मेल करें';
$labels['prettydate'] = 'सुनदर तारीखें';
@@ -178,14 +172,18 @@ $labels['htmlsignature'] = 'ऐच-टी-ऐम-एल (HTML) दस्तख
$labels['previewpane'] = 'झलक पट्टी दिखाऐं';
$labels['autosavedraft'] = 'ड्राफ़ट अपने आप सहेजते जाऐं';
$labels['never'] = 'कभी नहाीं';
-$labels['folder'] = 'फ़ोल्डर';
-$labels['folders'] = 'फ़ोल्डर';
-$labels['foldername'] = 'फ़ोल्डर नाम';
-$labels['subscribed'] = 'सबस्क्राईब किया गया';
-$labels['create'] = 'बनाऐं';
-$labels['createfolder'] = 'फ़ोलडर बनाऐं';
-$labels['managefolders'] = 'फ़ोलडर को व्यवस्थित करें';
+$labels['savelocalstorage'] = "";
+$labels['folder'] = 'फ़ोल्डर';
+$labels['folders'] = 'फ़ोल्डर';
+$labels['foldername'] = 'फ़ोल्डर नाम';
+$labels['subscribed'] = 'सबस्क्राईब किया गया';
+$labels['create'] = 'बनाऐं';
+$labels['createfolder'] = 'फ़ोलडर बनाऐं';
+$labels['managefolders'] = 'फ़ोलडर को व्यवस्थित करें';
$labels['sortby'] = 'ऐसे तय करें';
$labels['sortasc'] = 'पहले से आखीरी तय करें';
$labels['sortdesc'] = 'आखीरी से पहले तय करें';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/hr_HR/labels.inc b/program/localization/hr_HR/labels.inc
index cfa0ff8dd..37ae2fcc9 100644
--- a/program/localization/hr_HR/labels.inc
+++ b/program/localization/hr_HR/labels.inc
@@ -52,6 +52,7 @@ $labels['fromtoshort'] = '$from - $to od $count';
$labels['copy'] = 'Kopiraj';
$labels['move'] = 'Premjesti';
$labels['moveto'] = 'Premjesti u...';
+$labels['copyto'] = 'Kopiraj u...';
$labels['download'] = 'Preuzmi (download)';
$labels['open'] = 'Otvori';
$labels['showattachment'] = 'Prikaži';
@@ -177,6 +178,9 @@ $labels['msgtext'] = 'Cijela poruka';
$labels['body'] = 'Tijelo poruke';
$labels['type'] = 'Tip';
$labels['namex'] = 'Ime';
+$labels['currentfolder'] = 'Trenutna mapa';
+$labels['subfolders'] = 'Ovo i podmape';
+$labels['allfolders'] = 'Sve mape';
$labels['openinextwin'] = 'Otvori u novom prozoru';
$labels['emlsave'] = 'Preuzmi (.eml)';
$labels['changeformattext'] = 'Prikaži kao običan tekst';
@@ -202,9 +206,8 @@ $labels['restoremessage'] = 'Povrat poruke?';
$labels['responses'] = 'Odgovori';
$labels['insertresponse'] = 'Umetni odgovor';
$labels['manageresponses'] = 'Upravljanje odgovorima';
-$labels['savenewresponse'] = 'Pohrani novi odgovor';
-$labels['editresponses'] = 'Uredi odgovore';
$labels['editresponse'] = 'Uredi odgovor';
+$labels['editresponses'] = 'Uredi odgovore';
$labels['responsename'] = 'Naziv';
$labels['responsetext'] = 'Tekst odgovora';
$labels['attach'] = 'Priloži';
@@ -269,6 +272,7 @@ $labels['assistant'] = 'Asistent';
$labels['spouse'] = 'Suprug/a';
$labels['allfields'] = 'Sva polja';
$labels['search'] = 'Pretraga';
+$labels['searchfor'] = 'Pretraži za "$q"';
$labels['advsearch'] = 'Napredna pretraga';
$labels['advanced'] = 'Napredno';
$labels['other'] = 'Ostalo';
@@ -287,7 +291,6 @@ $labels['typehomepage'] = 'Početna stranica';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
$labels['addfield'] = 'Dodaj polje...';
-$labels['addcontact'] = 'Dodaj novi kontakt';
$labels['editcontact'] = 'Uredi kontakt';
$labels['contacts'] = 'Kontakti';
$labels['contactproperties'] = 'Svojstva kontakta';
@@ -300,7 +303,6 @@ $labels['rename'] = 'Preimenuj';
$labels['addphoto'] = 'Dodaj';
$labels['replacephoto'] = 'Zamijeni';
$labels['uploadphoto'] = 'Postavi fotografiju';
-$labels['newcontact'] = 'Dodaj novu karticu kontakta';
$labels['deletecontact'] = 'Obriši odabrane kontakte';
$labels['composeto'] = 'Napiši mail za';
$labels['contactsfromto'] = 'Kontakti od $from do $to od ukupno $count';
@@ -309,7 +311,6 @@ $labels['export'] = 'Izvoz';
$labels['exportall'] = 'Izvezi sve';
$labels['exportsel'] = 'Izvezi odabrano';
$labels['exportvcards'] = 'Izvezi kontakte u vCard formatu';
-$labels['newcontactgroup'] = 'Napravi novu grupu kontakata';
$labels['grouprename'] = 'Preimenuj grupu';
$labels['groupdelete'] = 'Obriši grupu';
$labels['groupremoveselected'] = 'Obriši odabrane kontakte iz grupe ';
@@ -339,10 +340,6 @@ $labels['preferences'] = 'Postavke';
$labels['userpreferences'] = 'Korisničke postavke';
$labels['editpreferences'] = 'Uredi korisničke postavke';
$labels['identities'] = 'Identiteti';
-$labels['manageidentities'] = 'Upravljanje identitetima za ovaj korisnički račun';
-$labels['newidentity'] = 'Novi identitet';
-$labels['newitem'] = 'Nova stavka';
-$labels['edititem'] = 'Uredi stavku';
$labels['preferhtml'] = 'Prikaži HTML';
$labels['defaultcharset'] = 'Zadana kodna stranica';
$labels['htmlmessage'] = 'HTML format poruke';
@@ -399,6 +396,7 @@ $labels['2231folding'] = 'Prema RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Prema RFC 2047 (ostali)';
$labels['force7bit'] = 'Koristi MIME kodiranje za 8-bitne znakove';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'Napredne postavke';
$labels['focusonnewmessage'] = 'Fokusiraj prozor preglednika pri primitku nove poruke';
$labels['checkallfolders'] = 'Provjeri nove poruke u svim mapama';
@@ -441,14 +439,14 @@ $labels['asattachment'] = 'kao privitak';
$labels['replyallmode'] = 'Zadana akcija [Reply all] gumba';
$labels['replyalldefault'] = 'odgovori svima';
$labels['replyalllist'] = 'odgovori samo listi (ako postoji)';
-$labels['folder'] = 'Mapa';
-$labels['folders'] = 'Mape';
-$labels['foldername'] = 'Naziv mape';
-$labels['subscribed'] = 'Pretplaćen';
+$labels['folder'] = 'Mapa';
+$labels['folders'] = 'Mape';
+$labels['foldername'] = 'Naziv mape';
+$labels['subscribed'] = 'Pretplaćen';
$labels['messagecount'] = 'Poruke';
-$labels['create'] = 'Stvori';
-$labels['createfolder'] = 'Stvori novu mapu';
-$labels['managefolders'] = 'Upravljanje mapama';
+$labels['create'] = 'Stvori';
+$labels['createfolder'] = 'Stvori novu mapu';
+$labels['managefolders'] = 'Upravljanje mapama';
$labels['specialfolders'] = 'Specijalne mape';
$labels['properties'] = 'Svojstva';
$labels['folderproperties'] = 'Svojstva mape';
@@ -458,9 +456,9 @@ $labels['info'] = 'Informacije';
$labels['getfoldersize'] = 'Kliknite za prikaz veličine mape';
$labels['changesubscription'] = 'Kliknite da biste promijenili pretplatu';
$labels['foldertype'] = 'Vrsta mape';
-$labels['personalfolder'] = 'Privatna mapa';
-$labels['otherfolder'] = 'Mapa drugog korisnika';
-$labels['sharedfolder'] = 'Javna mapa';
+$labels['personalfolder'] = 'Privatna mapa';
+$labels['otherfolder'] = 'Mapa drugog korisnika';
+$labels['sharedfolder'] = 'Javna mapa';
$labels['sortby'] = 'Sortiraj po';
$labels['sortasc'] = 'Sortiraj uzlaznim nizom';
$labels['sortdesc'] = 'Sortiraj silaznim nizom';
@@ -493,4 +491,7 @@ $labels['vietnamese'] = 'Vijetnamski';
$labels['japanese'] = 'Japanski';
$labels['korean'] = 'Korejski';
$labels['chinese'] = 'Kineski';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/hr_HR/messages.inc b/program/localization/hr_HR/messages.inc
index 0baeb2908..654cde3e6 100644
--- a/program/localization/hr_HR/messages.inc
+++ b/program/localization/hr_HR/messages.inc
@@ -22,6 +22,7 @@ $messages['sessionerror'] = 'Vaša sesija je nevaljala ili istekla.';
$messages['storageerror'] = 'Neuspješno povezivanje na IMAP poslužitelj.';
$messages['servererror'] = 'Greška poslužitelja!';
$messages['servererrormsg'] = 'Greška poslužitelja: $msg';
+$messages['connerror'] = 'Neuspješna veza (Nemoguće doći do poslužitelja)!';
$messages['dberror'] = 'Greška baze podataka!';
$messages['requesttimedout'] = 'Zahtjev istekao';
$messages['errorreadonly'] = 'Nemoguće izvršiti operaciju. Mapa je samo za čitanje.';
@@ -32,6 +33,8 @@ $messages['invalidrequest'] = 'Neispravan zahtjev! Podaci nisu spremljeni.';
$messages['invalidhost'] = 'Neispravno ime poslužitelja.';
$messages['nomessagesfound'] = 'Nema poruka u ovom sandučiću.';
$messages['loggedout'] = 'Uspješno ste se odjavili. Doviđenja!';
+$messages['mailboxempty'] = 'Sandučuć je prazan';
+$messages['nomessages'] = 'Nema poruka';
$messages['refreshing'] = 'Osvježavanje...';
$messages['loading'] = 'Učitavanje...';
$messages['uploading'] = 'Postavljanje datoteke...';
@@ -133,7 +136,6 @@ $messages['importmessagesuccess'] = 'Uspješno uvezeno $nr poruka';
$messages['importmessageerror'] = 'Uvoz neuspješan! Datoteka nije u formatu poruke ili sandučića';
$messages['opnotpermitted'] = 'Operacija nije dozvoljena!';
$messages['nofromaddress'] = 'Nije upisana e-mail adresa u odabrani identitet.';
-$messages['editorwarning'] = 'Prebacivanje u čisti tekstualni uređivač će uzrokovati gubljenje formatiranja teksta. Želite li nastaviti?';
$messages['httpreceivedencrypterror'] = 'Dogodila se fatalna greška u konfiguraciji. Odmah kontaktirajte administratora. <b>Vaša poruka se ne može poslati.</b>';
$messages['smtpconnerror'] = 'SMTP greška ($code): Povezivanje na poslužitelj nije uspjelo.';
$messages['smtpautherror'] = 'SMTP greška ($code): Autentikacija nije uspjela.';
diff --git a/program/localization/hu_HU/labels.inc b/program/localization/hu_HU/labels.inc
index fdd43effe..23e814132 100644
--- a/program/localization/hu_HU/labels.inc
+++ b/program/localization/hu_HU/labels.inc
@@ -24,11 +24,11 @@ $labels['logout'] = 'Kijelentkezés';
$labels['mail'] = 'E-mail';
$labels['settings'] = 'Beállítások';
$labels['addressbook'] = 'Címjegyzék';
-$labels['inbox'] = 'Érkezett levelek';
+$labels['inbox'] = 'Érkezettek';
$labels['drafts'] = 'Piszkozatok';
-$labels['sent'] = 'Küldött levelek';
-$labels['trash'] = 'Törölt elemek';
-$labels['junk'] = 'Kéretlen levelek';
+$labels['sent'] = 'Küldöttek';
+$labels['trash'] = 'Kuka';
+$labels['junk'] = 'Kéretlen';
$labels['show_real_foldernames'] = 'Az valós nevek megjelenítése a speciális mappáknál.';
$labels['subject'] = 'Tárgy';
$labels['from'] = 'Feladó';
@@ -46,17 +46,17 @@ $labels['readstatus'] = 'Olvasott';
$labels['listoptions'] = 'Üzenetlista beállítások...';
$labels['mailboxlist'] = 'Mappák';
$labels['messagesfromto'] = 'Üzenetek: $from - $to / $count';
-$labels['threadsfromto'] = 'Témák ($from - $to, összesen $count)';
+$labels['threadsfromto'] = 'Témák: $from - $to / $count';
$labels['messagenrof'] = '$nr / $count üzenet';
$labels['fromtoshort'] = '$from – $to / $count';
$labels['copy'] = 'Másolás';
$labels['move'] = 'Áthelyezés';
$labels['moveto'] = 'Áthelyezés...';
-$labels['copyto'] = 'Másold oda..';
+$labels['copyto'] = 'Másolás..';
$labels['download'] = 'letöltés';
$labels['open'] = 'Megnyítás';
$labels['showattachment'] = 'Megjelenítés';
-$labels['showanyway'] = 'Megjelnités mindenképpen';
+$labels['showanyway'] = 'Megjelnítés mindenképpen';
$labels['filename'] = 'Fájl neve';
$labels['filesize'] = 'Fájl mérete';
$labels['addtoaddressbook'] = 'Hozzáadás a címjegyzékhez';
@@ -101,7 +101,7 @@ $labels['longdec'] = 'December';
$labels['today'] = 'Ma';
$labels['refresh'] = 'Frissítés';
$labels['checkmail'] = 'Új üzenetek ellenőrzése';
-$labels['compose'] = 'Üzenet létrehozása';
+$labels['compose'] = 'Új üzenet';
$labels['writenewmessage'] = 'Új üzenet';
$labels['reply'] = 'Válasz';
$labels['replytomessage'] = 'Válasz';
@@ -128,28 +128,36 @@ $labels['markunread'] = 'Olvasatlanként';
$labels['markflagged'] = 'Jelöltként';
$labels['markunflagged'] = 'Jelöletlenként';
$labels['moreactions'] = 'További műveletek...';
-$labels['more'] = 'Még egy';
+$labels['more'] = 'Még...';
$labels['back'] = 'Vissza';
$labels['options'] = 'Beállítások';
+$labels['first'] = 'Első';
+$labels['last'] = 'Utolsó';
+$labels['previous'] = 'Elöző';
+$labels['next'] = 'Következő';
$labels['select'] = 'Kijelölés';
$labels['all'] = 'Összes';
$labels['none'] = 'Nincs';
$labels['currpage'] = 'Aktuális oldal';
+$labels['isread'] = 'Olvasás';
$labels['unread'] = 'Olvasatlan';
$labels['flagged'] = 'Megjelölt';
+$labels['unflagged'] = 'Nem megjelölt';
$labels['unanswered'] = 'Megválaszolatlan';
$labels['withattachment'] = 'Csatolmánnyal';
$labels['deleted'] = 'Törölt';
$labels['undeleted'] = 'Nem lett törölve';
+$labels['replied'] = 'Megválaszolva';
+$labels['forwarded'] = 'Továbbítva';
$labels['invert'] = 'Invertálás';
$labels['filter'] = 'Szűrés';
$labels['list'] = 'Lista';
-$labels['threads'] = 'Témák';
+$labels['threads'] = 'Téma csoportok';
$labels['expand-all'] = 'Összes kibontása';
$labels['expand-unread'] = 'Olvasatlanok kibontása';
$labels['collapse-all'] = 'Összes összecsukása';
-$labels['threaded'] = 'Téma nézet';
-$labels['autoexpand_threads'] = 'Témák kibontása';
+$labels['threaded'] = 'Témák szerinti csoportosítás';
+$labels['autoexpand_threads'] = 'Témacsoportok kibontása';
$labels['do_expand'] = 'minden téma';
$labels['expand_only_unread'] = 'csak ahol van olvasatlan üzenet';
$labels['fromto'] = 'Feladó/Címzett';
@@ -171,6 +179,10 @@ $labels['importmessages'] = 'Üzenetek importálása';
$labels['quota'] = 'Helyfoglalás';
$labels['unknown'] = 'ismeretlen';
$labels['unlimited'] = 'korlátlan';
+$labels['quotatype'] = 'Kvóta típus';
+$labels['quotaused'] = 'Használt';
+$labels['quotastorage'] = 'Lemez méret';
+$labels['quotamessage'] = 'Üzenet darab';
$labels['quicksearch'] = 'Gyorskeresés';
$labels['resetsearch'] = 'Alapállapot';
$labels['searchmod'] = 'Keresési opciók';
@@ -178,6 +190,10 @@ $labels['msgtext'] = 'Teljes üzenet';
$labels['body'] = 'Törzs';
$labels['type'] = 'Típus';
$labels['namex'] = 'Név';
+$labels['searchscope'] = 'Hatókör';
+$labels['currentfolder'] = 'Aktuális mappa';
+$labels['subfolders'] = 'Ez és az almappák';
+$labels['allfolders'] = 'Minden mappa';
$labels['openinextwin'] = 'Megnyitás új ablakban';
$labels['emlsave'] = 'Letöltés (.eml)';
$labels['changeformattext'] = 'Megjelenítés sima szöveges formátumban';
@@ -193,6 +209,10 @@ $labels['returnreceipt'] = 'Olvasási visszaigazolás';
$labels['dsn'] = 'Kézbesítési visszaigazolás';
$labels['mailreplyintro'] = '$date időpontban $sender ezt írta:';
$labels['originalmessage'] = 'Eredeti üzenet';
+$labels['selectimage'] = 'Kép kijelőlés';
+$labels['addimage'] = 'Kép hozzáadás';
+$labels['selectmedia'] = 'Film kijelölés';
+$labels['addmedia'] = 'Film hozzáadás';
$labels['editidents'] = 'Azonosítók szerkesztése';
$labels['spellcheck'] = 'Helyesírás ellenőrzés';
$labels['checkspelling'] = 'Helyesírás-ellenőrzés';
@@ -203,9 +223,10 @@ $labels['restoremessage'] = 'Üzenet visszaállítás';
$labels['responses'] = 'Válaszok';
$labels['insertresponse'] = 'Egy válasz beillesztése';
$labels['manageresponses'] = 'Válaszok kezelése';
-$labels['savenewresponse'] = 'Új válasz mentése';
-$labels['editresponses'] = 'Válaszok szerkesztése';
+$labels['newresponse'] = 'Új válasz létrehozása';
+$labels['addresponse'] = 'Válasz hozzáadása';
$labels['editresponse'] = 'Válasz szerkesztése';
+$labels['editresponses'] = 'Válaszok szerkesztése';
$labels['responsename'] = 'Név';
$labels['responsetext'] = 'Válasz Szöveg';
$labels['attach'] = 'Csatolás';
@@ -270,6 +291,7 @@ $labels['assistant'] = 'Asszisztens';
$labels['spouse'] = 'Házastárs';
$labels['allfields'] = 'Összes mező';
$labels['search'] = 'Keresés';
+$labels['searchfor'] = 'A következő keresése "$q"';
$labels['advsearch'] = 'Részletes keresés';
$labels['advanced'] = 'Haladó';
$labels['other'] = 'Egyéb';
@@ -288,11 +310,13 @@ $labels['typehomepage'] = 'Weboldal';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
$labels['addfield'] = 'Új mező hozzáadása...';
-$labels['addcontact'] = 'Új kapcsolat hozzáadása';
+$labels['addcontact'] = 'Kapcsolat hozzáadása';
$labels['editcontact'] = 'Kapcsolat szerkesztése';
$labels['contacts'] = 'Kapcsolatok';
$labels['contactproperties'] = 'Kapcsolat tulajdonságai';
+$labels['contactnameandorg'] = 'Név és szervezet';
$labels['personalinfo'] = 'Személyes adatok';
+$labels['contactphoto'] = 'Kapcsolat fotója';
$labels['edit'] = 'Szerkesztés';
$labels['cancel'] = 'Mégsem';
$labels['save'] = 'Mentés';
@@ -310,10 +334,10 @@ $labels['export'] = 'Exportálás';
$labels['exportall'] = 'Összes exportálása';
$labels['exportsel'] = 'Kijelöltek exportálása';
$labels['exportvcards'] = 'Kapcsolatok exportálása vCard formátumban';
-$labels['newcontactgroup'] = 'Új csoport';
$labels['grouprename'] = 'Csoport átnevezése';
$labels['groupdelete'] = 'Csoport törlése';
$labels['groupremoveselected'] = 'A kijelölt partnerek törlése a csopotból';
+$labels['uponelevel'] = 'Egy szintel feljebb';
$labels['previouspage'] = 'Előző oldal';
$labels['firstpage'] = 'Első oldal';
$labels['nextpage'] = 'Következő oldal';
@@ -340,10 +364,8 @@ $labels['preferences'] = 'Beállítások';
$labels['userpreferences'] = 'Felhasználói beállítások';
$labels['editpreferences'] = 'Felhasználói beállítások szerkesztése';
$labels['identities'] = 'Azonosítók';
-$labels['manageidentities'] = 'Hozzáférés azonosítóinak kezelése';
-$labels['newidentity'] = 'Új azonosító';
-$labels['newitem'] = 'Új elem';
-$labels['edititem'] = 'Elem szerkesztése';
+$labels['manageidentities'] = 'Azonosítók kezelése';
+$labels['newidentity'] = 'Új azonosító létrehozása';
$labels['preferhtml'] = 'HTML megjelenítés';
$labels['defaultcharset'] = 'Alapértelmezett karakterkódolás';
$labels['htmlmessage'] = 'HTML üzenet';
@@ -376,8 +398,8 @@ $labels['mailboxview'] = 'Postafiók nézet';
$labels['mdnrequests'] = 'Olvasási visszaigazolás küldése';
$labels['askuser'] = 'kérdezzen rá';
$labels['autosend'] = 'automatikus küldés';
-$labels['autosendknown'] = 'visszaigazolás küldése csak a kapcsolataimnak, egyéb esetben kérdezzen rá';
-$labels['autosendknownignore'] = 'visszaigazolás küldése csak a kapcsolataimnak, egyéb esetben hagyja figyelmen kívül';
+$labels['autosendknown'] = 'küldés csak a címjegyzékben lévő kapcsolataimnak, egyéb esetben kérdezzen rá';
+$labels['autosendknownignore'] = 'küldés csak a címjegyzékben lévő kapcsolataimnak, egyéb esetben nem';
$labels['ignore'] = 'hagyja figyelmen kívül';
$labels['readwhendeleted'] = 'Üzenet olvasottként jelölése törléskor';
$labels['flagfordeletion'] = 'Üzenet törlendőnek jelölése törlés helyett';
@@ -400,10 +422,12 @@ $labels['2231folding'] = 'Teljes RFC 2231 ( pl. Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (egyéb)';
$labels['force7bit'] = 'MIME kódolás használata 8 bites karakterekhez';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'Haladó beállítások';
+$labels['toggleadvancedoptions'] = 'Haladó beállítások kapcsolása';
$labels['focusonnewmessage'] = 'Beérkező új üzenet ablakának fókuszba hozása';
$labels['checkallfolders'] = 'Új üzenetek ellenőrzése minden mappában';
-$labels['displaynext'] = 'Levél törlése/mozgatása után jelenjen meg a következő üzenet';
+$labels['displaynext'] = 'Levél törlése/áthelyezése után jelenjen meg a következő üzenet';
$labels['defaultfont'] = 'HTML üzenet alap karakterkészlete';
$labels['mainoptions'] = 'Általános beállítások';
$labels['browseroptions'] = 'Böngésző beállításai';
@@ -442,14 +466,14 @@ $labels['asattachment'] = 'csatolmányként';
$labels['replyallmode'] = 'Alapértelemezett művelete a [Válasz mindenkinek] gombnak';
$labels['replyalldefault'] = 'válasz mindenkinek';
$labels['replyalllist'] = 'válasz a csak a levelező listára(ha levelezőlista)';
-$labels['folder'] = 'Mappa';
-$labels['folders'] = 'Mappák';
-$labels['foldername'] = 'Mappa neve';
-$labels['subscribed'] = 'Feliratkozva';
+$labels['folder'] = 'Mappa';
+$labels['folders'] = 'Mappák';
+$labels['foldername'] = 'Mappa neve';
+$labels['subscribed'] = 'Feliratkozva';
$labels['messagecount'] = 'Üzenet';
-$labels['create'] = 'Létrehozás';
-$labels['createfolder'] = 'Új mappa létrehozása';
-$labels['managefolders'] = 'Mappák kezelése';
+$labels['create'] = 'Létrehozás';
+$labels['createfolder'] = 'Új mappa létrehozása';
+$labels['managefolders'] = 'Mappák kezelése';
$labels['specialfolders'] = 'Különleges mappák';
$labels['properties'] = 'Tulajdonságok';
$labels['folderproperties'] = 'Mappa tulajdonságai';
@@ -459,9 +483,9 @@ $labels['info'] = 'Információk';
$labels['getfoldersize'] = 'Mappa mérete';
$labels['changesubscription'] = 'Feliratkozás megváltoztatása';
$labels['foldertype'] = 'Mappa típusa';
-$labels['personalfolder'] = 'Privát mappa';
-$labels['otherfolder'] = 'Más felhasználó(k) mappája';
-$labels['sharedfolder'] = 'Megosztott mappa';
+$labels['personalfolder'] = 'Privát mappa';
+$labels['otherfolder'] = 'Más felhasználó(k) mappája';
+$labels['sharedfolder'] = 'Megosztott mappa';
$labels['sortby'] = 'Rendezés';
$labels['sortasc'] = 'növekvő';
$labels['sortdesc'] = 'csökkenő';
@@ -494,4 +518,7 @@ $labels['vietnamese'] = 'Vietnámi';
$labels['japanese'] = 'Japán';
$labels['korean'] = 'Koreai';
$labels['chinese'] = 'Kínai';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/hu_HU/messages.inc b/program/localization/hu_HU/messages.inc
index 859f3c6ea..2be6c218f 100644
--- a/program/localization/hu_HU/messages.inc
+++ b/program/localization/hu_HU/messages.inc
@@ -22,17 +22,19 @@ $messages['sessionerror'] = 'Érvénytelen vagy lejárt munkamenet';
$messages['storageerror'] = 'Nem sikerült csatlakozni az IMAP szerverhez';
$messages['servererror'] = 'Szerverhiba!';
$messages['servererrormsg'] = 'Szerverhiba: $msg';
+$messages['connerror'] = 'Kapcsolódási hiba (A kiszolgáló elérése sikertelen)!';
$messages['dberror'] = 'Adatbázishiba!';
+$messages['windowopenerror'] = 'A felugró ablak blokkolva lett!';
$messages['requesttimedout'] = 'A kérés túllépte az időkorlátot';
$messages['errorreadonly'] = 'A műveletet nem sikerült végrehajtani. A mappa írásvédett.';
$messages['errornoperm'] = 'A műveletet nem sikerült végrehajtani. Hozzáférés megtagadva.';
-$messages['erroroverquota'] = 'A műveletet nem lehetett végrehajtani mivel nincs elég szabad hely a merevlemezen.';
-$messages['erroroverquotadelete'] = 'Nincs elég szabad hely a merevlemezen. A SHIFT+DEL billenytyű kombinációt használd az üzenet törléséhez.';
+$messages['erroroverquota'] = 'A műveletet nem lehetett végrehajtani mivel nincs elég szabad tárhely.';
+$messages['erroroverquotadelete'] = 'Elfogyott a tárhely. A SHIFT+DEL billentyű kombinációval lehet üzeneteket törölni.';
$messages['invalidrequest'] = 'Érvénytelen kérés! Az adatok nem lettek elmentve.';
$messages['invalidhost'] = 'Hibás szerver hoszt név';
-$messages['nomessagesfound'] = 'A fiók nem tartalmaz leveleket';
+$messages['nomessagesfound'] = 'A mappa nem tartalmaz üzeneteket';
$messages['loggedout'] = 'Sikeres kijelentkezés. Viszontlátásra!';
-$messages['mailboxempty'] = 'A postafiók üres';
+$messages['mailboxempty'] = 'A postaláda üres';
$messages['nomessages'] = 'Nincsenek üzenetek';
$messages['refreshing'] = 'Frissítés...';
$messages['loading'] = 'Betöltés...';
@@ -71,7 +73,7 @@ $messages['purgefolderconfirm'] = 'Biztos benne, hogy az összes üzenet törö
$messages['contactdeleting'] = 'Kapcsolat(ok) törlése...';
$messages['groupdeleting'] = 'Csoport törlése...';
$messages['folderdeleting'] = 'Mappa törlése...';
-$messages['foldermoving'] = 'Mappa mozgatása...';
+$messages['foldermoving'] = 'Mappa áthelyezése...';
$messages['foldersubscribing'] = 'Feliratkozás a mappára...';
$messages['folderunsubscribing'] = 'Leiratkozás a mappáról...';
$messages['formincomplete'] = 'Az űrlap hiányosan lett kitöltve';
@@ -92,6 +94,7 @@ $messages['contactsearchsuccessful'] = '$nr találat';
$messages['searchnomatch'] = 'Nincs találat';
$messages['searching'] = 'Keresés...';
$messages['checking'] = 'Ellenőrzés...';
+$messages['stillsearching'] = 'Keresés folyamatban...';
$messages['nospellerrors'] = 'Nem található helyesírási hiba';
$messages['folderdeleted'] = 'A mappa sikeresen törölve';
$messages['foldersubscribed'] = 'Sikerült a mappára feliratkozni';
@@ -104,15 +107,15 @@ $messages['messageopenerror'] = 'A levelek a szerverről nem tölthetők le';
$messages['fileuploaderror'] = 'Feltöltés sikertelen';
$messages['filesizeerror'] = 'A feltöltött fájl mérete meghaladja a maximális $size méretet';
$messages['copysuccess'] = 'Sikeresen átmásolva $nr kapcsolat.';
-$messages['movesuccess'] = 'Sikeresen átmozgatva $nr kapcsolat.';
+$messages['movesuccess'] = '$nr kapcsolat sikeresen áthelyezve.';
$messages['copyerror'] = 'Nem lehet másolni a kapcsolatokat.';
-$messages['moveerror'] = 'Nem lehet átmozgatni a kapcsolatokat.';
+$messages['moveerror'] = 'Nem lehet áthelyezni a kapcsolatokat.';
$messages['sourceisreadonly'] = 'Ez a címforrás csak olvasható';
$messages['errorsavingcontact'] = 'A kapcsolat címe nem menthető';
-$messages['movingmessage'] = 'Üzenet(ek) mozgatása...';
+$messages['movingmessage'] = 'Üzenet(ek) áthelyezése...';
$messages['copyingmessage'] = 'Üzenet(ek) másolása...';
$messages['copyingcontact'] = 'Kapcsolat(ok) másolása...';
-$messages['movingcontact'] = 'Kapcsolat(ok) átmozgatása ...';
+$messages['movingcontact'] = 'Kapcsolat(ok) áthelyezése...';
$messages['deletingmessage'] = 'Üzenet(ek) törlése....';
$messages['markingmessage'] = 'Üzenet(ek) megjelölése...';
$messages['addingmember'] = 'Kapcsolat(ok) hozzáadása a csoporthoz...';
@@ -135,7 +138,7 @@ $messages['importmessagesuccess'] = 'Sikeresen importálva $nr üzenet';
$messages['importmessageerror'] = 'Sikertelen az importálás. A feltőltött file nem értelmezhető üzenetként vagy postafiók (mailbox) fileként.';
$messages['opnotpermitted'] = 'A művelet nem megengedett!';
$messages['nofromaddress'] = 'A kiválasztott azonosítónál nincs email beállítva.';
-$messages['editorwarning'] = 'Az egyszerű szöveges formátumra való váltás az összes formázás elvesztésével jár. Biztosan folytatja?';
+$messages['editorwarning'] = 'A szerkesztő tipusok közötti váltás a szöveg formázásának elveszésével járhat. Biztos szeretnéd folytatni?';
$messages['httpreceivedencrypterror'] = 'Végzetes konfigurációs hiba történt, azonnal lépjen kapcsolatba az üzemeltetővel. <b>Az üzenet nem küldhető el.</b>';
$messages['smtpconnerror'] = 'SMTP hiba ($code): Sikertelen kapcsolódás a szerverhez';
$messages['smtpautherror'] = 'SMTP hiba ($code): Sikertelen bejelentkezés';
@@ -159,7 +162,7 @@ $messages['savedsearchdeleteerror'] = 'Nem sikerült törölni a mentett keresé
$messages['savedsearchcreated'] = 'Keresés sikeresen mentve';
$messages['savedsearchcreateerror'] = 'Nem sikerült létrehozni mentett keresést';
$messages['messagedeleted'] = 'Üzenet(ek) sikeresen törölve';
-$messages['messagemoved'] = 'Üzenet(ek) sikeresen átmozgatva';
+$messages['messagemoved'] = 'Üzenet(ek) sikeresen áthelyezve.';
$messages['messagecopied'] = 'Üzenet(ek) sikeresen másolva';
$messages['messagemarked'] = 'Üzenet(ek) sikeresen megjelölve';
$messages['autocompletechars'] = 'Az automatikus kiegészítéshez legalább $min karakter szükséges';
@@ -170,7 +173,7 @@ $messages['folderupdated'] = 'Mappa sikeresen frissítve';
$messages['foldercreated'] = 'Mappa sikeresen létrehozva';
$messages['invalidimageformat'] = 'Érvénytelen képformátum';
$messages['mispellingsfound'] = 'Az üzenetben helyesírási hibák találhatók';
-$messages['parentnotwritable'] = 'Nem sikerült a mappa létrehozása/mozgatása a kijelölt mappába. Nincs jogosultsága a művelethez!';
+$messages['parentnotwritable'] = 'Nem sikerült a mappa létrehozása/áthelyezése a kijelölt főmappába. Nincs jogosultsága a művelethez!';
$messages['messagetoobig'] = 'Az üzenetrész túl nagy a feldolgozáshoz.';
$messages['attachmentvalidationerror'] = 'FIGYELEM! A csatalmány veszélyes lehet, mert a típusa nem egyezik az üzenetben beállított típussal. Amennyiben nem megbizható az üzenet küldője, ne nyissa meg a csatolmányt a böngészőben mert ártalmas lehet a tartalma.<br/><br/><em>Üzenetben beállított tipus: $expected; az érzékelt típus: $detected</em>';
$messages['noscriptwarning'] = 'FIGYELEM: Ez webmail szolgáltatása igényli a Javascript futtatásának a lehetőségét! Amennyiben használni szeretné, engedélyezze a JavaScript futtatását a böngészőjének a beállatásaiban.';
diff --git a/program/localization/hy_AM/labels.inc b/program/localization/hy_AM/labels.inc
index fa5a2bec6..70bcebf71 100644
--- a/program/localization/hy_AM/labels.inc
+++ b/program/localization/hy_AM/labels.inc
@@ -272,7 +272,6 @@ $labels['typehomepage'] = 'Սկիզբ';
$labels['typeblog'] = 'Բլոգ';
$labels['typeprofile'] = 'Պրոֆայլ';
$labels['addfield'] = 'Ավելացնել դաշտ…';
-$labels['addcontact'] = 'Գրանցել նշած հասցեն';
$labels['editcontact'] = 'Խմբագրել հասցեն';
$labels['contacts'] = 'Կապորդներ';
$labels['contactproperties'] = 'Կապորդի հատկանիշներ';
@@ -285,7 +284,6 @@ $labels['rename'] = 'Վերանվանել';
$labels['addphoto'] = 'Ավելացնել';
$labels['replacephoto'] = 'Փոխարինել';
$labels['uploadphoto'] = 'Վերբեռնել լուսանկար';
-$labels['newcontact'] = 'Ստեղծել նոր հասցեքարտ';
$labels['deletecontact'] = 'Ջնջել նշած նամակները';
$labels['composeto'] = 'Գրել նամակ';
$labels['contactsfromto'] = 'Հասցեներ $from–ից $to–ը եղած $count–ից';
@@ -294,7 +292,6 @@ $labels['export'] = 'Արտահանել';
$labels['exportall'] = 'Արտահանել բոլորը';
$labels['exportsel'] = 'Արտահանել նշվածները';
$labels['exportvcards'] = 'Արտահանել հասցեները vCard չափաձևով';
-$labels['newcontactgroup'] = 'Ստեղծել կապորդների նոր խումբ';
$labels['grouprename'] = 'Վերանվանել խումբը';
$labels['groupdelete'] = 'Ջնջել խումբը';
$labels['groupremoveselected'] = 'Հեռացնել նշված անձանց խմբից';
@@ -321,10 +318,6 @@ $labels['preferences'] = 'Նախընտրանքներ';
$labels['userpreferences'] = 'Օգտվողի նախընտրանքներ';
$labels['editpreferences'] = 'Խմբագրել օգտվողի նախընտրանքները';
$labels['identities'] = 'Անձիք';
-$labels['manageidentities'] = 'Կարգավորել անձանց';
-$labels['newidentity'] = 'Նոր անձ';
-$labels['newitem'] = 'Նոր իր';
-$labels['edititem'] = 'Խմբագրել իրը';
$labels['preferhtml'] = 'Գերադասել HTML';
$labels['defaultcharset'] = 'Լռելյալ տառաշար';
$labels['htmlmessage'] = 'HTML նամակ';
@@ -380,6 +373,7 @@ $labels['2231folding'] = 'Կատարյալ RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Կատարյալ RFC 2047 (այլ)';
$labels['force7bit'] = 'օգտագործել MIME գրանշում 8 բիթանոց նիշերի համար';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'Հավելյալ կարգավորումներ';
$labels['focusonnewmessage'] = 'Առաջ բերել պատուհանը նոր նամակ ստանալիս';
$labels['checkallfolders'] = 'Ստուգել բոլոր դարակները նոր նամակների համար';
@@ -418,14 +412,14 @@ $labels['mailtoprotohandler'] = 'mailto: հղումների սպասարկող';
$labels['forwardmode'] = 'Հաղորդագրությունների վերահասցեավորում';
$labels['inline'] = 'մեջը';
$labels['asattachment'] = 'որպես կցորդ';
-$labels['folder'] = 'Դարակ';
-$labels['folders'] = 'Դարակներ';
-$labels['foldername'] = 'Դարակի անուն';
-$labels['subscribed'] = 'Բաժանորդագրված';
+$labels['folder'] = 'Դարակ';
+$labels['folders'] = 'Դարակներ';
+$labels['foldername'] = 'Դարակի անուն';
+$labels['subscribed'] = 'Բաժանորդագրված';
$labels['messagecount'] = 'Նամակներ';
-$labels['create'] = 'Ստեղծել';
-$labels['createfolder'] = 'Բացել նոր դարակ';
-$labels['managefolders'] = 'Կարգավորել դարակները';
+$labels['create'] = 'Ստեղծել';
+$labels['createfolder'] = 'Բացել նոր դարակ';
+$labels['managefolders'] = 'Կարգավորել դարակները';
$labels['specialfolders'] = 'Հատուկ դարակներ';
$labels['properties'] = 'Հատկանիշներ';
$labels['folderproperties'] = 'Պանակի հատկանիշներ';
@@ -435,9 +429,9 @@ $labels['info'] = 'Տեղեկություն';
$labels['getfoldersize'] = 'Հպել պանակի չափը իմանալու համար';
$labels['changesubscription'] = 'Հպել բաժանորդագրությունը փոխելու համար';
$labels['foldertype'] = 'Պանակի տեսակ';
-$labels['personalfolder'] = 'Անձնական պանակ';
-$labels['otherfolder'] = 'Այլ օգտվողի պանակ';
-$labels['sharedfolder'] = 'Հանրային պանակ';
+$labels['personalfolder'] = 'Անձնական պանակ';
+$labels['otherfolder'] = 'Այլ օգտվողի պանակ';
+$labels['sharedfolder'] = 'Հանրային պանակ';
$labels['sortby'] = 'Դասավորել';
$labels['sortasc'] = 'ըստ աճման';
$labels['sortdesc'] = 'ըստ նվազման';
@@ -470,4 +464,7 @@ $labels['vietnamese'] = 'Վիետնամական';
$labels['japanese'] = 'Ճապոնական';
$labels['korean'] = 'Կորեական';
$labels['chinese'] = 'Չինական';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/hy_AM/messages.inc b/program/localization/hy_AM/messages.inc
index ba851c5d2..d993ab827 100644
--- a/program/localization/hy_AM/messages.inc
+++ b/program/localization/hy_AM/messages.inc
@@ -115,7 +115,6 @@ $messages['importconfirm'] = '$inserted նոր ներկրված հասցեներ
$messages['importconfirmskipped'] = '<b>Բաց թողնվեց $skipped առկա գրառում</b>';
$messages['opnotpermitted'] = 'Գործողությունը անթույլատրելի է։';
$messages['nofromaddress'] = 'Նշված անձը հասցե չունի։';
-$messages['editorwarning'] = 'Դեպի պարզ տեքստի խմբագրիչ անցման դեպքում կկորի տեքստի ձևավորումը։ Շարունակե՞լ։';
$messages['httpreceivedencrypterror'] = 'Համակարգի լարքի սխալ։ Դիմեք համակարգը սպասարկող անձնակազմին։ <b>Ձեր նամակը ուղարկված չէ։</b>';
$messages['smtpconnerror'] = 'SMTP սխալ ($code)` Սերվերի հետ կապը ձախողվեց։';
$messages['smtpautherror'] = 'SMTP սխալ ($code)` Նույնականացումը ձախողվեց։';
diff --git a/program/localization/ia/labels.inc b/program/localization/ia/labels.inc
index 0ff1e939e..452b773ef 100644
--- a/program/localization/ia/labels.inc
+++ b/program/localization/ia/labels.inc
@@ -195,7 +195,6 @@ $labels['typehomepage'] = 'Pagina principal';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profilo';
$labels['addfield'] = 'Adder campo...';
-$labels['addcontact'] = 'Adder nove contacto';
$labels['editcontact'] = 'Modificar contacto';
$labels['contacts'] = 'Contactos';
$labels['contactproperties'] = 'Proprietates de contacto';
@@ -207,11 +206,9 @@ $labels['delete'] = 'Deler';
$labels['rename'] = 'Renominar';
$labels['addphoto'] = 'Adder';
$labels['replacephoto'] = 'Reimplaciar';
-$labels['newcontact'] = 'Crear un nove carta de contacto';
$labels['deletecontact'] = 'Deler contactos seligite';
$labels['print'] = 'Imprimer';
$labels['export'] = 'Exportar';
-$labels['newcontactgroup'] = 'Crear un nove gruppo de contacto';
$labels['grouprename'] = 'Renominar gruppo';
$labels['groupdelete'] = 'Deler gruppo';
$labels['group'] = 'Gruppo';
@@ -229,9 +226,6 @@ $labels['preferences'] = 'Preferentias';
$labels['userpreferences'] = 'Preferentias de usator';
$labels['editpreferences'] = 'Modificar preferentias de usator';
$labels['identities'] = 'Identitates';
-$labels['newidentity'] = 'Nove identitate';
-$labels['newitem'] = 'Nove elemento';
-$labels['edititem'] = 'Modificar elemento';
$labels['preferhtml'] = 'Monstrar HTML';
$labels['htmlmessage'] = 'Message HTML';
$labels['dateformat'] = 'Formato de data';
@@ -251,6 +245,7 @@ $labels['everynminutes'] = 'cata $n minuta(s)';
$labels['never'] = 'nunquam';
$labels['messagesdisplaying'] = 'Inviar me_ssages';
$labels['mimeparamfolding'] = 'Nomines de attachamento';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'Optiones avantiate';
$labels['mainoptions'] = 'Optiones principal';
$labels['section'] = 'Section';
@@ -261,21 +256,21 @@ $labels['autoaddsignature'] = 'Automaticamente inserta signatura';
$labels['insertsignature'] = 'Insertar signatura';
$labels['spellcheckoptions'] = 'Optiones de verification orthographic';
$labels['addtodict'] = 'Adder al dictionario';
-$labels['folder'] = 'Dossier';
-$labels['folders'] = 'Dossieres';
-$labels['foldername'] = 'Nomine de dossier';
-$labels['subscribed'] = 'Subscribite';
+$labels['folder'] = 'Dossier';
+$labels['folders'] = 'Dossieres';
+$labels['foldername'] = 'Nomine de dossier';
+$labels['subscribed'] = 'Subscribite';
$labels['messagecount'] = 'Messages';
-$labels['create'] = 'Crear';
-$labels['createfolder'] = 'Crear un nove dossier';
-$labels['managefolders'] = 'Gerer le dossieres';
+$labels['create'] = 'Crear';
+$labels['createfolder'] = 'Crear un nove dossier';
+$labels['managefolders'] = 'Gerer le dossieres';
$labels['properties'] = 'Proprietates';
$labels['folderproperties'] = 'Proprietates de dossier';
$labels['location'] = 'Location';
$labels['info'] = 'Information';
$labels['foldertype'] = 'Typo de dossier';
-$labels['personalfolder'] = 'Dossier private';
-$labels['sharedfolder'] = 'Dossier public';
+$labels['personalfolder'] = 'Dossier private';
+$labels['sharedfolder'] = 'Dossier public';
$labels['sortby'] = 'Ordinar per';
$labels['source'] = 'Fonte';
$labels['license'] = 'Licentia';
@@ -285,4 +280,7 @@ $labels['english'] = 'Anglese';
$labels['japanese'] = 'Japonese';
$labels['korean'] = 'Coreano';
$labels['chinese'] = 'Chinese';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/id_ID/labels.inc b/program/localization/id_ID/labels.inc
index 581428aab..05204ca8d 100644
--- a/program/localization/id_ID/labels.inc
+++ b/program/localization/id_ID/labels.inc
@@ -52,6 +52,7 @@ $labels['fromtoshort'] = '$from - $to dari total $count';
$labels['copy'] = 'Salin';
$labels['move'] = 'Pindahkan';
$labels['moveto'] = 'Pindahkan ke...';
+$labels['copyto'] = 'Salin ke';
$labels['download'] = 'Unduh';
$labels['open'] = 'Buka';
$labels['showattachment'] = 'Tampilkan';
@@ -177,6 +178,10 @@ $labels['msgtext'] = 'Seluruh pesan';
$labels['body'] = 'Badan';
$labels['type'] = 'Tipe';
$labels['namex'] = 'Nama';
+$labels['searchscope'] = 'Jangkauan';
+$labels['currentfolder'] = 'Folder sekarang';
+$labels['subfolders'] = 'Ini adalah subfolder';
+$labels['allfolders'] = 'Semua folder';
$labels['openinextwin'] = 'Buka dalam jendela baru';
$labels['emlsave'] = 'Unduh (.eml)';
$labels['changeformattext'] = 'Tampilkan dalam format text biasa';
@@ -197,6 +202,15 @@ $labels['spellcheck'] = 'Ejaan';
$labels['checkspelling'] = 'Pemeriksaan ejaan';
$labels['resumeediting'] = 'Lanjutkan menyunting';
$labels['revertto'] = 'Kembalikan ke';
+$labels['restore'] = 'Kembalikan';
+$labels['restoremessage'] = 'Kembalikan pesan ?';
+$labels['responses'] = 'Respon';
+$labels['insertresponse'] = 'Masukkan respon';
+$labels['manageresponses'] = 'Atur respon';
+$labels['editresponse'] = 'Ubah respon';
+$labels['editresponses'] = 'Ubah respon';
+$labels['responsename'] = 'Nama';
+$labels['responsetext'] = 'Teks respon';
$labels['attach'] = 'Lampirkan';
$labels['attachments'] = 'Sisipan';
$labels['upload'] = 'Unggah';
@@ -259,6 +273,7 @@ $labels['assistant'] = 'Asisten';
$labels['spouse'] = 'Suami/Istri';
$labels['allfields'] = 'Semua isian';
$labels['search'] = 'Cari';
+$labels['searchfor'] = 'Cari untuk "$q"';
$labels['advsearch'] = 'Pencarian Lebih Lanjut';
$labels['advanced'] = 'Tingkat lanjut';
$labels['other'] = 'Lainnya';
@@ -277,7 +292,6 @@ $labels['typehomepage'] = 'Laman Web';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
$labels['addfield'] = 'Tambah kolom isian';
-$labels['addcontact'] = 'Tambah kontak baru';
$labels['editcontact'] = 'Ubah kontak';
$labels['contacts'] = 'Daftar kontak';
$labels['contactproperties'] = 'Properti kontak';
@@ -290,7 +304,6 @@ $labels['rename'] = 'Ganti nama';
$labels['addphoto'] = 'Tambah';
$labels['replacephoto'] = 'Ganti';
$labels['uploadphoto'] = 'Unggah foto';
-$labels['newcontact'] = 'Buat kartu kontak baru';
$labels['deletecontact'] = 'Hapus kontak terpilih';
$labels['composeto'] = 'Tulis surat kepada';
$labels['contactsfromto'] = 'Kontak $from sampai $to dari total $count';
@@ -299,7 +312,6 @@ $labels['export'] = 'Ekspor';
$labels['exportall'] = 'Ekspor semua';
$labels['exportsel'] = 'Ekspor pilihan';
$labels['exportvcards'] = 'Ekspor kontak dalam format vCard';
-$labels['newcontactgroup'] = 'Buat Grup baru';
$labels['grouprename'] = 'Ganti nama grup';
$labels['groupdelete'] = 'Hapus grup';
$labels['groupremoveselected'] = 'Hapus kontak terpilih dari grup';
@@ -316,7 +328,11 @@ $labels['searchdelete'] = 'Hapus pencarian';
$labels['import'] = 'Impor';
$labels['importcontacts'] = 'Impor kontak';
$labels['importfromfile'] = 'Impor dari berkas:';
+$labels['importtarget'] = 'Tambah kontak ke';
$labels['importreplace'] = 'Ganti seluruh buku alamat';
+$labels['importgroups'] = 'Impor pengaturan grup';
+$labels['importgroupsall'] = 'Semua (buat grup jika diperlukan)';
+$labels['importgroupsexisting'] = 'Hanya untuk grup yang telah ada';
$labels['importdesc'] = 'Anda dapat mengunggah kontak dari buku alamat yang telah ada.<br/>Saat ini kami mendukung import alamat dari format data <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> atau CSV (comma-separated).';
$labels['done'] = 'Selesai';
$labels['settingsfor'] = 'Pengaturan untuk';
@@ -325,10 +341,6 @@ $labels['preferences'] = 'Pilihan';
$labels['userpreferences'] = 'Pilihan pengguna';
$labels['editpreferences'] = 'Ubah pilihan pengguna';
$labels['identities'] = 'Identitas';
-$labels['manageidentities'] = 'Atur identitas untuk akun ini';
-$labels['newidentity'] = 'Identitas baru';
-$labels['newitem'] = 'Item baru';
-$labels['edititem'] = 'Ubah item';
$labels['preferhtml'] = 'Lebih suka HTML';
$labels['defaultcharset'] = 'Default Character';
$labels['htmlmessage'] = 'Pesan HTML';
@@ -385,6 +397,7 @@ $labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (other)';
$labels['force7bit'] = 'Gunakan MIME encoding untuk karakter 8-bit';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'Pilihan lanjut';
$labels['focusonnewmessage'] = 'Pusatkan jendela broswer saat ada pesan baru';
$labels['checkallfolders'] = 'Periksa semua folder untuk pesan baru';
@@ -424,14 +437,17 @@ $labels['standardwindows'] = 'Kelola popup sebagai standar window';
$labels['forwardmode'] = 'Meneruskan pesan';
$labels['inline'] = 'dalam surat';
$labels['asattachment'] = 'sebagai sisipan';
-$labels['folder'] = 'Folder';
-$labels['folders'] = 'Semua Folder';
-$labels['foldername'] = 'Nama folder';
-$labels['subscribed'] = 'Subscribed';
+$labels['replyallmode'] = 'Aksi dasar dari tombol [Jawab Semua]';
+$labels['replyalldefault'] = 'jawab ke semua';
+$labels['replyalllist'] = 'jawab hanya ke daftar alamat email (jika ditemukan)';
+$labels['folder'] = 'Folder';
+$labels['folders'] = 'Semua Folder';
+$labels['foldername'] = 'Nama folder';
+$labels['subscribed'] = 'Subscribed';
$labels['messagecount'] = 'Pesan-pesan';
-$labels['create'] = 'Buat';
-$labels['createfolder'] = 'Buat folder baru';
-$labels['managefolders'] = 'Atur folder';
+$labels['create'] = 'Buat';
+$labels['createfolder'] = 'Buat folder baru';
+$labels['managefolders'] = 'Atur folder';
$labels['specialfolders'] = 'Folder Khusus';
$labels['properties'] = 'Atribut';
$labels['folderproperties'] = 'Atribut folder';
@@ -441,9 +457,9 @@ $labels['info'] = 'Informasi';
$labels['getfoldersize'] = 'Klik untuk mendapatkan ukuran folder';
$labels['changesubscription'] = 'Klik untuk mengubah langganan';
$labels['foldertype'] = 'Jenis folder';
-$labels['personalfolder'] = 'Folder pribadi';
-$labels['otherfolder'] = 'Folder pengguna lain';
-$labels['sharedfolder'] = 'Folder publik';
+$labels['personalfolder'] = 'Folder pribadi';
+$labels['otherfolder'] = 'Folder pengguna lain';
+$labels['sharedfolder'] = 'Folder publik';
$labels['sortby'] = 'Urut berdasarkan';
$labels['sortasc'] = 'Urut menaik';
$labels['sortdesc'] = 'Urut menurun';
@@ -476,4 +492,7 @@ $labels['vietnamese'] = 'Vietnam';
$labels['japanese'] = 'Jepang';
$labels['korean'] = 'Korea';
$labels['chinese'] = 'Cina';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/id_ID/messages.inc b/program/localization/id_ID/messages.inc
index a78054a20..f5d5b1481 100644
--- a/program/localization/id_ID/messages.inc
+++ b/program/localization/id_ID/messages.inc
@@ -22,6 +22,7 @@ $messages['sessionerror'] = 'Session Anda invalid atau kadaluwarsa.';
$messages['storageerror'] = 'Koneksi ke server penyimpanan gagal';
$messages['servererror'] = 'Server Error!';
$messages['servererrormsg'] = 'Server Error: $msg';
+$messages['connerror'] = 'Kesalahan sambungan (Gagal menghubungi server)!';
$messages['dberror'] = 'Basis data Error!';
$messages['requesttimedout'] = 'Permintaan melewati batas waktu';
$messages['errorreadonly'] = 'Tidak bisa melakukan operasi. Folder hanya bisa dibaca.';
@@ -32,6 +33,8 @@ $messages['invalidrequest'] = 'Permintaan tidak valid! Tidak ada data yang tersi
$messages['invalidhost'] = 'Nama server invalid.';
$messages['nomessagesfound'] = 'Surat tidak ditemukan di kotak masuk ini';
$messages['loggedout'] = 'Anda berhasil mengakhiri session. Selamat Tinggal!';
+$messages['mailboxempty'] = 'Kotak masuk kosong';
+$messages['nomessages'] = 'Tidak ada pesan';
$messages['refreshing'] = 'Menyegarkan...';
$messages['loading'] = 'Memuat...';
$messages['uploading'] = 'Menggungah berkas ...';
@@ -43,6 +46,8 @@ $messages['messagesent'] = 'Pesan berhasil dikirim.';
$messages['savingmessage'] = 'Menyimpan pesan...';
$messages['messagesaved'] = 'Pesan tersimpan kedalam Konsep';
$messages['successfullysaved'] = 'Berhasil disimpan';
+$messages['savingresponse'] = 'Meyimpan pesan tanggapan....';
+$messages['deleteresponseconfirm'] = 'Anda yakin ingin menghapus pesan tanggapan ini?';
$messages['addedsuccessfully'] = 'Kontak berhasil ditambahkan ke buku alamat';
$messages['contactexists'] = 'Kontak dengan alamat e-mail ini sudah ada.';
$messages['contactnameexists'] = 'Kontak dengan nama yang sama sudah ada.';
@@ -53,6 +58,8 @@ $messages['contactnotfound'] = 'Kontak yang diminta tidak ditemukan';
$messages['contactsearchonly'] = 'Masukkan jenis pencarian untuk mencari kontak';
$messages['sendingfailed'] = 'Gagal mengirim pesan.';
$messages['senttooquickly'] = 'Mohon tunggu $sec detik sebelum mengirim pesan ini.';
+$messages['errorsavingsent'] = 'Kesalahan ketika menyimpan pesan terkirim.';
+$messages['errorsaving'] = 'Kesalahan terjadi ketika menyimpan.';
$messages['errormoving'] = 'Pesan tidak bisa dipindahkan';
$messages['errorcopying'] = 'Pesan tidak dapat disalin';
$messages['errordeleting'] = 'Pesan tidak bisa dihapus';
@@ -77,6 +84,7 @@ $messages['norecipientwarning'] = 'Tolong masukkan sedikitnya satu penerima';
$messages['nosubjectwarning'] = '"Judul" kosong. Isi judul sekarang?';
$messages['nobodywarning'] = 'Kirim pesan ini tanpa teks?';
$messages['notsentwarning'] = 'Pesan belum terkirim. Buang pesan Anda?';
+$messages['restoresavedcomposedata'] = 'Sebelumnya disimpan tetapi pesan tidak terkirim ditemukan.\n\nJudul: $subject\nDisimpan: $date\n\nAnda yakin mengembalikan pesan ini?';
$messages['noldapserver'] = 'Tolong pilih server LDAP untuk pencarian';
$messages['nosearchname'] = 'Tolong masukkan nama kontak atau alamat email';
$messages['notuploadedwarning'] = 'Proses upload belum selesai. Silahkan tunggu atau batalkan proses upload.';
@@ -85,6 +93,7 @@ $messages['contactsearchsuccessful'] = 'Ditemukan $nr kontak';
$messages['searchnomatch'] = 'Pencarian hasilnya nihil';
$messages['searching'] = 'Mencari...';
$messages['checking'] = 'Memeriksa...';
+$messages['stillsearching'] = 'Sedang mencari....';
$messages['nospellerrors'] = 'Tidak ditemukan kesalahan ejaan';
$messages['folderdeleted'] = 'Folder berhasil dihapus';
$messages['foldersubscribed'] = 'Folder berhasil dilanggankan';
@@ -128,7 +137,6 @@ $messages['importmessagesuccess'] = 'Berhasil mengimport $nr pesan';
$messages['importmessageerror'] = 'Gagal mengimport! File yang di upload buka pesan yang valid atau file mailbox';
$messages['opnotpermitted'] = 'Operasi tidak diperbolehkan!';
$messages['nofromaddress'] = 'kekurangan alamat e-mail pada identitas terpilih';
-$messages['editorwarning'] = 'Beralih pada editor teks murni akan mengakibatkan semua pemformatan teks hilang. Lanjutkan?';
$messages['httpreceivedencrypterror'] = 'Terjadi sebuah kesalahan pengaturan fatal. Segera hubungi administrator Anda. <b> Pesan Anda tidak bisa terkirim.</b>';
$messages['smtpconnerror'] = 'SMTP Error ($code): Koneksi ke server gagal';
$messages['smtpautherror'] = 'SMTP Error ($code): Otentifikasi gagal';
@@ -139,6 +147,7 @@ $messages['smtperror'] = 'SMTP Error : $msg';
$messages['emailformaterror'] = 'Alamat e-mail salah: $email';
$messages['toomanyrecipients'] = 'Terlalu banyak penerima. Batas maksimal penerima adalah $max';
$messages['maxgroupmembersreached'] = 'Jumlah grup melebihi jumlah maksimum $max';
+$messages['internalerror'] = 'Terjadi kesalahan dari dalam. Silahkan coba kembali.';
$messages['contactdelerror'] = 'Kontak tidak bisa dihapus';
$messages['contactdeleted'] = 'Kontak berhasil dihapus';
$messages['contactrestoreerror'] = 'Tidak bisa mengembalikan kontak yang terhapus.';
diff --git a/program/localization/is_IS/labels.inc b/program/localization/is_IS/labels.inc
index 8b90730f7..823ecaa9d 100644
--- a/program/localization/is_IS/labels.inc
+++ b/program/localization/is_IS/labels.inc
@@ -259,7 +259,6 @@ $labels['typehomepage'] = 'Vefur';
$labels['typeblog'] = 'Blogg';
$labels['typeprofile'] = 'Mannlýsing';
$labels['addfield'] = 'Bæta við svæði...';
-$labels['addcontact'] = 'Nýr tengiliður';
$labels['editcontact'] = 'Lagfæra';
$labels['contacts'] = 'Tengiliðir';
$labels['contactproperties'] = 'Eiginleikar';
@@ -271,14 +270,12 @@ $labels['delete'] = 'Eyða';
$labels['rename'] = 'Endurnefna';
$labels['addphoto'] = 'Bæta við';
$labels['replacephoto'] = 'Skipta út';
-$labels['newcontact'] = 'Búa til nýtt nafnspjald';
$labels['deletecontact'] = 'Eyða völdum tengiliðum';
$labels['composeto'] = 'Skrifa skeyti til';
$labels['contactsfromto'] = 'Netföng $from til $to af $count';
$labels['print'] = 'Prenta';
$labels['export'] = 'Flytja út';
$labels['exportvcards'] = 'Flytja út nafnspjöld á vCard formi';
-$labels['newcontactgroup'] = 'Nýr tengiliðahópur';
$labels['grouprename'] = 'Breyta nafni hóps';
$labels['groupdelete'] = 'Fjarlægja hóp';
$labels['previouspage'] = 'Sýna fyrri síðu';
@@ -301,10 +298,6 @@ $labels['preferences'] = 'Stillingar';
$labels['userpreferences'] = 'Notendastillingar';
$labels['editpreferences'] = 'Breyta notendastillingum';
$labels['identities'] = 'Auðkenni';
-$labels['manageidentities'] = 'Stjórna auðkennum þessa reiknings';
-$labels['newidentity'] = 'Nýtt auðkenni';
-$labels['newitem'] = 'Nýtt';
-$labels['edititem'] = 'Breyta';
$labels['preferhtml'] = 'Vil HTML';
$labels['defaultcharset'] = 'Venjulegt stafasett';
$labels['htmlmessage'] = 'HTML skeyti';
@@ -353,6 +346,7 @@ $labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (annað)';
$labels['force7bit'] = 'Nota MIME kóðun fyrir 8-bita stafi';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'Ítarlegir valkostir';
$labels['focusonnewmessage'] = 'Láta glugga beinast að nýju skeyti';
$labels['checkallfolders'] = 'Athuga ný skeyti í öllum möppum';
@@ -384,14 +378,14 @@ $labels['spellcheckignoresyms'] = 'Hunsa orð með merki';
$labels['spellcheckignorenums'] = 'Hunsa orð með tölum';
$labels['spellcheckignorecaps'] = 'Hunsa orð sem eru í hástöfum';
$labels['addtodict'] = 'Bæta við orðalista';
-$labels['folder'] = 'Mappa';
-$labels['folders'] = 'Möppur';
-$labels['foldername'] = 'Nafn möppu';
-$labels['subscribed'] = 'Valin';
+$labels['folder'] = 'Mappa';
+$labels['folders'] = 'Möppur';
+$labels['foldername'] = 'Nafn möppu';
+$labels['subscribed'] = 'Valin';
$labels['messagecount'] = 'Skeyti';
-$labels['create'] = 'Búa til';
-$labels['createfolder'] = 'Búa til nýja möppu';
-$labels['managefolders'] = 'Sýsla með möppur';
+$labels['create'] = 'Búa til';
+$labels['createfolder'] = 'Búa til nýja möppu';
+$labels['managefolders'] = 'Sýsla með möppur';
$labels['specialfolders'] = 'Sérstakar möppur';
$labels['properties'] = 'Eiginleikar';
$labels['folderproperties'] = 'Eiginleikar möppu';
@@ -401,9 +395,9 @@ $labels['info'] = 'Upplýsingar';
$labels['getfoldersize'] = 'Smelltu til að sjá stærð möppu';
$labels['changesubscription'] = 'Smelltu til að breyta áskrift';
$labels['foldertype'] = 'Möpputegund';
-$labels['personalfolder'] = 'Einkamappa';
-$labels['otherfolder'] = 'Möppur annara notenda';
-$labels['sharedfolder'] = 'Opin mappa';
+$labels['personalfolder'] = 'Einkamappa';
+$labels['otherfolder'] = 'Möppur annara notenda';
+$labels['sharedfolder'] = 'Opin mappa';
$labels['sortby'] = 'Raða eftir';
$labels['sortasc'] = 'Raða vaxandi';
$labels['sortdesc'] = 'Raða minnkandi';
@@ -435,4 +429,7 @@ $labels['vietnamese'] = 'Víetnamskt';
$labels['japanese'] = 'Japanskt';
$labels['korean'] = 'Kóreska';
$labels['chinese'] = 'Kínverska';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/it_IT/csv2vcard.inc b/program/localization/it_IT/csv2vcard.inc
index 33b44cccd..03802a5d8 100644
--- a/program/localization/it_IT/csv2vcard.inc
+++ b/program/localization/it_IT/csv2vcard.inc
@@ -15,14 +15,7 @@
| Author: Aleksander Machniak <alec@alec.pl> |
+-----------------------------------------------------------------------+
*/
-
-// This is a list of CSV column names specified in CSV file header
-// These must be original texts used in Outlook/Thunderbird exported csv files
-// Encoding UTF-8
-
$map = array();
-
-// MS Outlook 2010
$map['anniversary'] = "Anniversary";
$map['assistants_name'] = "Assistant's Name";
$map['assistants_phone'] = "Assistant's Phone";
@@ -69,8 +62,6 @@ $map['spouse'] = "Spouse";
$map['suffix'] = "Suffix";
$map['title'] = "Title";
$map['web_page'] = "Web Page";
-
-// Thunderbird
$map['birth_day'] = "Giorno di nascita";
$map['birth_month'] = "Mese di nascita";
$map['birth_year'] = "Anno di nascita";
@@ -91,8 +82,6 @@ $map['work_phone'] = "Telefono lavoro";
$map['work_address'] = "Indirizzo di lavoro 2";
$map['work_country'] = "Nazione di lavoro";
$map['work_zipcode'] = "CAP di lavoro";
-
-// Atmail
$map['date_of_birth'] = "Date of Birth";
$map['email'] = "Email";
$map['home_mobile'] = "Home Mobile";
diff --git a/program/localization/it_IT/labels.inc b/program/localization/it_IT/labels.inc
index f0f660d3d..6857e07ef 100644
--- a/program/localization/it_IT/labels.inc
+++ b/program/localization/it_IT/labels.inc
@@ -16,7 +16,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
$labels['welcome'] = 'Benvenuto in $product';
-$labels['username'] = 'Utente';
+$labels['username'] = 'E-mail';
$labels['password'] = 'Password';
$labels['server'] = 'Server';
$labels['login'] = 'Entra';
@@ -131,16 +131,24 @@ $labels['moreactions'] = 'Altre operazioni...';
$labels['more'] = 'Di più';
$labels['back'] = 'Indietro';
$labels['options'] = 'Opzioni';
+$labels['first'] = 'Primo';
+$labels['last'] = 'Ultimo';
+$labels['previous'] = 'Precedente';
+$labels['next'] = 'Successivo';
$labels['select'] = 'Seleziona';
$labels['all'] = 'Tutti';
$labels['none'] = 'Nessuno';
$labels['currpage'] = 'Pagina corrente';
+$labels['isread'] = 'leggi';
$labels['unread'] = 'Non letti';
$labels['flagged'] = 'Contrassegnato';
+$labels['unflagged'] = 'Non contrassegnato';
$labels['unanswered'] = 'Senza risposta';
$labels['withattachment'] = 'Con allegato';
$labels['deleted'] = 'Cancellato';
$labels['undeleted'] = 'Non eliminato';
+$labels['replied'] = 'Risposta';
+$labels['forwarded'] = 'Inoltrata';
$labels['invert'] = 'Inverti';
$labels['filter'] = 'Filtra';
$labels['list'] = 'Elenco';
@@ -171,6 +179,11 @@ $labels['importmessages'] = 'Importa messaggi';
$labels['quota'] = 'Spazio utilizzato';
$labels['unknown'] = 'sconosciuto';
$labels['unlimited'] = 'illimitato';
+$labels['quotatype'] = 'Tipo di dimensione';
+$labels['quotatotal'] = 'Limite';
+$labels['quotaused'] = 'Utilizzato';
+$labels['quotastorage'] = 'Spazio disco';
+$labels['quotamessage'] = 'Contatore messaggi';
$labels['quicksearch'] = 'Ricerca veloce';
$labels['resetsearch'] = 'Annulla ricerca';
$labels['searchmod'] = 'Ambito di ricerca';
@@ -178,6 +191,10 @@ $labels['msgtext'] = 'Intero messaggio';
$labels['body'] = 'Body';
$labels['type'] = 'Tipo';
$labels['namex'] = 'Nome';
+$labels['searchscope'] = 'Contesto';
+$labels['currentfolder'] = 'Cartella corrente';
+$labels['subfolders'] = 'Questa e le sottocartelle';
+$labels['allfolders'] = 'Tutte le cartelle';
$labels['openinextwin'] = 'Apri in una nuova finestra';
$labels['emlsave'] = 'Scarica (.eml)';
$labels['changeformattext'] = 'Visualizza nel formato testo semplice';
@@ -193,6 +210,10 @@ $labels['returnreceipt'] = 'Ricevuta di ritorno';
$labels['dsn'] = 'Notifica di consegna';
$labels['mailreplyintro'] = 'Il $date $sender ha scritto:';
$labels['originalmessage'] = 'Messaggio originale';
+$labels['selectimage'] = 'Selezione Immagine';
+$labels['addimage'] = 'Aggiungi immagine';
+$labels['selectmedia'] = 'Seleziona video';
+$labels['addmedia'] = 'Aggiungi video';
$labels['editidents'] = 'Modifica identità';
$labels['spellcheck'] = 'Controllo ortografico';
$labels['checkspelling'] = 'Controlla ortografia';
@@ -203,9 +224,10 @@ $labels['restoremessage'] = 'Ripristinare il messaggio?';
$labels['responses'] = 'Risposte';
$labels['insertresponse'] = 'Inserisci una risposta';
$labels['manageresponses'] = 'Gestione risposte';
-$labels['savenewresponse'] = 'Salva una nuova risposta';
-$labels['editresponses'] = 'Modifica risposte';
+$labels['newresponse'] = 'Crea una nuova risposta';
+$labels['addresponse'] = 'Aggiungi risposta';
$labels['editresponse'] = 'Modifica risposta';
+$labels['editresponses'] = 'Modifica risposte';
$labels['responsename'] = 'Nome';
$labels['responsetext'] = 'Testo della Risposta';
$labels['attach'] = 'Allega';
@@ -214,6 +236,7 @@ $labels['upload'] = 'Aggiungi';
$labels['uploadprogress'] = '$percent ($current di $total)';
$labels['close'] = 'Chiudi';
$labels['messageoptions'] = 'Opzioni messaggi...';
+$labels['togglecomposeoptions'] = 'Passa alla impostazioni di composizione';
$labels['low'] = 'Bassa';
$labels['lowest'] = 'Molto bassa';
$labels['normal'] = 'Normale';
@@ -270,6 +293,7 @@ $labels['assistant'] = 'Assistente';
$labels['spouse'] = 'Coniuge';
$labels['allfields'] = 'Tutti i campi';
$labels['search'] = 'Ricerca';
+$labels['searchfor'] = 'Cercare "$q"';
$labels['advsearch'] = 'Ricerca avanzata';
$labels['advanced'] = 'Opzioni avanzate';
$labels['other'] = 'Altro';
@@ -288,11 +312,13 @@ $labels['typehomepage'] = 'Home page';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profilo';
$labels['addfield'] = 'Aggiungi campo...';
-$labels['addcontact'] = 'Aggiungi contatto alla rubrica';
+$labels['addcontact'] = 'Aggiungi contatto';
$labels['editcontact'] = 'Modifica contatto';
$labels['contacts'] = 'Contatti';
$labels['contactproperties'] = 'Proprietà contatto';
+$labels['contactnameandorg'] = 'Nome e Organizzazione';
$labels['personalinfo'] = 'Informazioni personali';
+$labels['contactphoto'] = 'Avatar';
$labels['edit'] = 'Modifica';
$labels['cancel'] = 'Annulla';
$labels['save'] = 'Salva';
@@ -310,10 +336,11 @@ $labels['export'] = 'Esporta';
$labels['exportall'] = 'Esporta tutto';
$labels['exportsel'] = 'Esporta selezionati';
$labels['exportvcards'] = 'Esporta i contatti in formato vCard';
-$labels['newcontactgroup'] = 'Crea un nuovo gruppo';
+$labels['newgroup'] = 'Crea un nuovo gruppo';
$labels['grouprename'] = 'Rinomina il gruppo';
$labels['groupdelete'] = 'Cancella il gruppo';
$labels['groupremoveselected'] = 'Rimuovi i contatti selezionati dal gruppo';
+$labels['uponelevel'] = 'Sali di un livello';
$labels['previouspage'] = 'Pagina precedente';
$labels['firstpage'] = 'Prima pagina';
$labels['nextpage'] = 'Pagina successiva';
@@ -340,10 +367,10 @@ $labels['preferences'] = 'Preferenze';
$labels['userpreferences'] = 'Preferenze utente';
$labels['editpreferences'] = 'Modifica le preferenze per l\'utente';
$labels['identities'] = 'Identità';
-$labels['manageidentities'] = 'Gestisci le identità per questo account';
-$labels['newidentity'] = 'Nuova identità';
-$labels['newitem'] = 'Nuovo elemento';
-$labels['edititem'] = 'Modifica elemento';
+$labels['manageidentities'] = 'Gestisci identità';
+$labels['newidentity'] = 'Crea una nuova identità';
+$labels['addidentity'] = 'Aggiungi identità';
+$labels['editidentity'] = 'Modifica identità';
$labels['preferhtml'] = 'Mostra HTML';
$labels['defaultcharset'] = 'Set di caratteri predefinito';
$labels['htmlmessage'] = 'Messaggio HTML';
@@ -400,7 +427,9 @@ $labels['2231folding'] = 'RFC 2231 completo (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'RFC 2047 completo (altri)';
$labels['force7bit'] = 'Usa la codifica MIME per i caratteri a 8-bit';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'Opzioni avanzate';
+$labels['toggleadvancedoptions'] = 'Passa alle impostazioni avanzate';
$labels['focusonnewmessage'] = 'Attiva la finestra del browser all\'arrivo di un nuovo messaggio';
$labels['checkallfolders'] = 'Controlla tutte le cartelle per la presenza di nuovi messaggi';
$labels['displaynext'] = 'Dopo aver cancellato/spostato il messaggio mostra quello successivo';
@@ -442,14 +471,14 @@ $labels['asattachment'] = 'come allegato';
$labels['replyallmode'] = 'Azione di defualt del bottone [Reply all]';
$labels['replyalldefault'] = 'rispondi a tutti';
$labels['replyalllist'] = 'rispondi solo alla mailing list (se disponibile)';
-$labels['folder'] = 'Cartella';
-$labels['folders'] = 'Cartelle';
-$labels['foldername'] = 'Nome cartella';
-$labels['subscribed'] = 'Sottoscritta';
+$labels['folder'] = 'Cartella';
+$labels['folders'] = 'Cartelle';
+$labels['foldername'] = 'Nome cartella';
+$labels['subscribed'] = 'Sottoscritta';
$labels['messagecount'] = 'Messaggi';
-$labels['create'] = 'Crea';
-$labels['createfolder'] = 'Crea nuova cartella';
-$labels['managefolders'] = 'Gestione cartelle';
+$labels['create'] = 'Crea';
+$labels['createfolder'] = 'Crea nuova cartella';
+$labels['managefolders'] = 'Gestione cartelle';
$labels['specialfolders'] = 'Cartelle Speciali';
$labels['properties'] = 'Proprietà';
$labels['folderproperties'] = 'Proprietà cartella';
@@ -459,9 +488,13 @@ $labels['info'] = 'Informazioni';
$labels['getfoldersize'] = 'Click per la dimensione della cartella';
$labels['changesubscription'] = 'Click per cambiare sottoscrizione';
$labels['foldertype'] = 'Tipo di cartella';
-$labels['personalfolder'] = 'Cartella privata';
-$labels['otherfolder'] = 'Cartella di un altro utente';
-$labels['sharedfolder'] = 'Cartella pubblica';
+$labels['personalfolder'] = 'Cartella privata';
+$labels['otherfolder'] = 'Cartella di un altro utente';
+$labels['sharedfolder'] = 'Cartella pubblica';
+$labels['findfolders'] = 'Trova cartelle';
+$labels['namespace.personal'] = 'Personale';
+$labels['namespace.other'] = 'Altri utenti';
+$labels['namespace.shared'] = 'Condivisa';
$labels['sortby'] = 'Ordina per';
$labels['sortasc'] = 'Ordinamento crescente';
$labels['sortdesc'] = 'Ordinamento decrescente';
@@ -494,4 +527,53 @@ $labels['vietnamese'] = 'Vietnamita';
$labels['japanese'] = 'Giapponese';
$labels['korean'] = 'Coreano';
$labels['chinese'] = 'Cinese';
+$labels['arialabeltopnav'] = 'Controllo finestra';
+$labels['arialabeltasknav'] = 'Attavità dell\'applicazione';
+$labels['arialabeltoolbar'] = 'Barra delle applicazioni';
+$labels['arialabelactivetask'] = 'Attività Attive';
+$labels['arialabelmessagessearchfilter'] = 'Filtro lista delle Email';
+$labels['arialabelmailsearchform'] = 'Modulo ricerca messaggi Email';
+$labels['arialabelcontactsearchform'] = 'Modulo di ricerca contatti';
+$labels['arialabelmailquicksearchbox'] = 'Ricerca Email';
+$labels['arialabelquicksearchbox'] = 'Immissione ricerca';
+$labels['arialabelfoldersearchfilter'] = 'Filtro Cartelle';
+$labels['arialabelfoldersearchform'] = 'Form ricerca cartelle';
+$labels['arialabelfolderlist'] = 'Cartella selezione Email';
+$labels['arialabelmessagelist'] = 'Lista messaggi Email';
+$labels['arialabelmailpreviewframe'] = 'Anteprima messaggio';
+$labels['arialabelmailboxmenu'] = 'Menu azione cartella';
+$labels['arialabellistselectmenu'] = 'Menu lista selezione';
+$labels['arialabelthreadselectmenu'] = 'Finestra elenco menu';
+$labels['arialabelmessagelistoptions'] = 'Visualizzazione della lista dei messaggi e opzioni di ordinamento';
+$labels['arialabelmailimportdialog'] = 'Dialogo importazione messaggio';
+$labels['arialabelmessagenav'] = 'Navigazione messaggio';
+$labels['arialabelmessagebody'] = 'Corpo messaggio';
+$labels['arialabelmessageactions'] = 'Azione messaggi';
+$labels['arialabelcontactquicksearch'] = 'Modulo ricerca contatti';
+$labels['arialabelcontactsearchbox'] = 'Immissione ricerca contatti';
+$labels['arialabelmessageheaders'] = 'Messaggio testata';
+$labels['arialabelforwardingoptions'] = 'Opzioni di Inoltro';
+$labels['arialabelreplyalloptions'] = 'Opzione rispondi a tutti';
+$labels['arialabelmoremessageactions'] = 'Altre azioni del messaggio';
+$labels['arialabelmarkmessagesas'] = 'Contrassegna messaggi selezionati come';
+$labels['arialabelcomposeoptions'] = 'Impostazioni composizione';
+$labels['arialabelresponsesmenu'] = 'Menu di rispose nascoste';
+$labels['arialabelattachmentuploadform'] = 'Allegato caricato da';
+$labels['arialabelattachmentpreview'] = 'Anteprima allegato';
+$labels['ariasummarycomposecontacts'] = 'Elenco dei contatti e gruppi per selezionare come destinatari';
+$labels['arialabelcontactexportoptions'] = 'Impostazioni esportazione contatti';
+$labels['arialabelabookgroupoptions'] = 'Impostazioni Contatti/gruppi';
+$labels['arialabelpreferencesform'] = 'Modulo preferenze';
+$labels['arialabelidentityeditfrom'] = 'Modifica modulo identità';
+$labels['arialabelresonseeditfrom'] = 'Modifica modulo ricezione';
+$labels['arialabelsearchterms'] = 'Ricerca termini';
+$labels['helplistnavigation'] = 'Lista navigazione da tastiera';
+$labels['helplistkeyboardnavigation'] = "Frecce su/giù: Sposta le righe selezionate.
+Spazio: Seleziona fila mirata.
+Shift + su/giù: Seleziona ulteriore fila da sotto e sopra.
+Ctrl + Spazio: Aggiungi fila mirata da selezionato/rimosso a selezionato.";
+$labels['helplistkeyboardnavmessages'] = "Frecce destra/sinistra: espandi/comprimi finestra messaggio (solo in modalità finestra).
+Invio: Aprire il contatto selezionato.
+Cancella: Sposta il messaggio selezionato nel cestino.";
+$labels['helplistkeyboardnavcontacts'] = "Invio: Aprire il contatto selezionato";
?>
diff --git a/program/localization/it_IT/messages.inc b/program/localization/it_IT/messages.inc
index 5d964697b..6d76954c5 100644
--- a/program/localization/it_IT/messages.inc
+++ b/program/localization/it_IT/messages.inc
@@ -22,7 +22,9 @@ $messages['sessionerror'] = 'Sessione non valida o scaduta';
$messages['storageerror'] = 'Impossibile connettersi al server IMAP';
$messages['servererror'] = 'Errore del server!';
$messages['servererrormsg'] = 'Errore del server: $msg';
+$messages['connerror'] = 'Errore di connessione (impossibile raggiungere il server)!';
$messages['dberror'] = 'Errore del database!';
+$messages['windowopenerror'] = 'Windows popup è stato bloccato!';
$messages['requesttimedout'] = 'Richiesta scaduta';
$messages['errorreadonly'] = 'Impossibile eseguire l\'operazione. Cartella in sola lettura';
$messages['errornoperm'] = 'Impossibile eseguire l\'operazione. Permesso negato';
@@ -92,6 +94,7 @@ $messages['contactsearchsuccessful'] = '$nr contatti trovati';
$messages['searchnomatch'] = 'La ricerca non ha dato nessun risultato';
$messages['searching'] = 'Ricerca...';
$messages['checking'] = 'Controllo...';
+$messages['stillsearching'] = 'Ricercando...';
$messages['nospellerrors'] = 'Nessun errore ortografico trovato';
$messages['folderdeleted'] = 'Cartella eliminata';
$messages['foldersubscribed'] = 'Cartella sottoscritta correttamente';
@@ -135,7 +138,7 @@ $messages['importmessagesuccess'] = 'Importati correttamente $nr messaggi';
$messages['importmessageerror'] = 'Importazione fallita! Il file caricato non è un messaggio o una casella postale valida.';
$messages['opnotpermitted'] = 'Operazione non consentita!';
$messages['nofromaddress'] = 'Indirizzo e-mail mancante nell\'identità selezionata';
-$messages['editorwarning'] = 'Passare all\'editor testuale farà perdere tutte le informazioni di formattazione. Sicuro di voler continuare?';
+$messages['editorwarning'] = 'Cambiare editor potrebbe causare la perdita della formattazione. Si desidera continuare lo stesso?';
$messages['httpreceivedencrypterror'] = 'Fatale errore di configurazione. Per favore contatta l\'amministratore immediatamente. Il tuo messaggio non può essere inviato.';
$messages['smtpconnerror'] = 'Errore SMTP ($code): Connessione al server fallita';
$messages['smtpautherror'] = 'Errore SMTP ($code): Autenticazione fallita';
diff --git a/program/localization/ja_JP/labels.inc b/program/localization/ja_JP/labels.inc
index e58582e73..26062a7b6 100644
--- a/program/localization/ja_JP/labels.inc
+++ b/program/localization/ja_JP/labels.inc
@@ -131,16 +131,24 @@ $labels['moreactions'] = 'その他の操作...';
$labels['more'] = '続く';
$labels['back'] = '戻る';
$labels['options'] = 'オプション';
+$labels['first'] = '最初';
+$labels['last'] = '最後';
+$labels['previous'] = '前';
+$labels['next'] = '次';
$labels['select'] = '選択';
$labels['all'] = 'すべて';
$labels['none'] = 'なし';
$labels['currpage'] = '現在のページ';
+$labels['isread'] = '既読';
$labels['unread'] = '未読';
$labels['flagged'] = 'フラグ付き';
+$labels['unflagged'] = 'フラッグなし';
$labels['unanswered'] = '未返信';
$labels['withattachment'] = '添付ファイルあり';
$labels['deleted'] = '削除済み';
$labels['undeleted'] = '削除済みでない';
+$labels['replied'] = '返信済み';
+$labels['forwarded'] = '転送済み';
$labels['invert'] = '反転';
$labels['filter'] = 'フィルター';
$labels['list'] = '一覧';
@@ -171,6 +179,11 @@ $labels['importmessages'] = 'メッセージをインポート';
$labels['quota'] = 'ディスクの使用状況';
$labels['unknown'] = '不明';
$labels['unlimited'] = '無制限';
+$labels['quotatype'] = 'クォータの種類';
+$labels['quotatotal'] = '限度';
+$labels['quotaused'] = '使用';
+$labels['quotastorage'] = 'ディスク容量';
+$labels['quotamessage'] = 'メッセージ数';
$labels['quicksearch'] = '高速検索';
$labels['resetsearch'] = '検索を解除';
$labels['searchmod'] = '検索の条件';
@@ -178,6 +191,10 @@ $labels['msgtext'] = 'メッセージ全体';
$labels['body'] = '本文';
$labels['type'] = '種類';
$labels['namex'] = '名前';
+$labels['searchscope'] = 'スコープ';
+$labels['currentfolder'] = '現在のフォルダー';
+$labels['subfolders'] = 'このフォルダーと下位のフォルダー';
+$labels['allfolders'] = 'すべてのフォルダー';
$labels['openinextwin'] = '新しいウィンドウで開く';
$labels['emlsave'] = 'ダウンロード(.eml形式)';
$labels['changeformattext'] = 'テキスト形式で表示';
@@ -193,6 +210,10 @@ $labels['returnreceipt'] = '開封確認';
$labels['dsn'] = '配送状態通知';
$labels['mailreplyintro'] = '$date に $sender さんは書きました:';
$labels['originalmessage'] = '元のメッセージ';
+$labels['selectimage'] = '画像を選択';
+$labels['addimage'] = '画像を追加';
+$labels['selectmedia'] = '動画を選択';
+$labels['addmedia'] = '動画を追加';
$labels['editidents'] = '識別情報を編集';
$labels['spellcheck'] = 'スペル';
$labels['checkspelling'] = 'スペルチェック';
@@ -203,9 +224,10 @@ $labels['restoremessage'] = 'メッセージを回復しますか?';
$labels['responses'] = '回答';
$labels['insertresponse'] = '回答を挿入';
$labels['manageresponses'] = '回答を管理';
-$labels['savenewresponse'] = '新しい回答を保存';
-$labels['editresponses'] = '回答を編集';
+$labels['newresponse'] = '新しい回答を作成';
+$labels['addresponse'] = '回答を追加';
$labels['editresponse'] = '回答を編集';
+$labels['editresponses'] = '回答を編集';
$labels['responsename'] = '名前';
$labels['responsetext'] = '回答の文章';
$labels['attach'] = '添付';
@@ -214,6 +236,7 @@ $labels['upload'] = 'アップロード';
$labels['uploadprogress'] = '$percent ($current / $total)';
$labels['close'] = '閉じる';
$labels['messageoptions'] = 'メッセージのオプション...';
+$labels['togglecomposeoptions'] = '作成のオプションを切り替え';
$labels['low'] = '低';
$labels['lowest'] = '最低';
$labels['normal'] = '通常';
@@ -270,6 +293,7 @@ $labels['assistant'] = 'アシスタント';
$labels['spouse'] = '配偶者';
$labels['allfields'] = 'すべての項目';
$labels['search'] = '検索';
+$labels['searchfor'] = '"$q"を検索';
$labels['advsearch'] = '高度な検索';
$labels['advanced'] = '高度';
$labels['other'] = 'その他';
@@ -288,11 +312,13 @@ $labels['typehomepage'] = 'ホームページ';
$labels['typeblog'] = 'ブログ';
$labels['typeprofile'] = 'プロフィール';
$labels['addfield'] = '項目を追加...';
-$labels['addcontact'] = '新しい連絡先を追加';
+$labels['addcontact'] = '連絡先を追加';
$labels['editcontact'] = '連絡先を編集';
$labels['contacts'] = '連絡先';
$labels['contactproperties'] = '連絡先の属性';
+$labels['contactnameandorg'] = '名前と組織';
$labels['personalinfo'] = '個人情報';
+$labels['contactphoto'] = '連絡先の写真';
$labels['edit'] = '編集';
$labels['cancel'] = '取り消し';
$labels['save'] = '保存';
@@ -301,7 +327,7 @@ $labels['rename'] = '名前を変更';
$labels['addphoto'] = '追加';
$labels['replacephoto'] = '置き換え';
$labels['uploadphoto'] = '写真をアップロード';
-$labels['newcontact'] = '新しい連絡先カードを作成';
+$labels['newcontact'] = '新しい連絡先を作成';
$labels['deletecontact'] = '選択した連絡先を削除';
$labels['composeto'] = 'この連絡先宛にメッセージを作成';
$labels['contactsfromto'] = '$count件の連絡先の$from件目から$to件目';
@@ -310,10 +336,11 @@ $labels['export'] = 'エクスポート';
$labels['exportall'] = 'すべてエクスポート';
$labels['exportsel'] = '選択した連絡先をエクスポート';
$labels['exportvcards'] = 'vCard形式でエクスポート';
-$labels['newcontactgroup'] = '連絡先グループを新しく作成';
+$labels['newgroup'] = '新しいグループを作成';
$labels['grouprename'] = 'グループ名を変更';
$labels['groupdelete'] = 'グループを削除';
$labels['groupremoveselected'] = '選択した連絡先をグループから削除';
+$labels['uponelevel'] = '1つ上のレベル';
$labels['previouspage'] = '前のページを表示';
$labels['firstpage'] = '最初のページを表示';
$labels['nextpage'] = '次のページを表示';
@@ -340,10 +367,10 @@ $labels['preferences'] = '設定';
$labels['userpreferences'] = 'ユーザー設定';
$labels['editpreferences'] = 'ユーザー設定を変更';
$labels['identities'] = '識別情報';
-$labels['manageidentities'] = 'このアカウントの識別情報を管理';
-$labels['newidentity'] = '新しい識別情報';
-$labels['newitem'] = '新しい項目';
-$labels['edititem'] = '項目の編集';
+$labels['manageidentities'] = '識別情報を管理';
+$labels['newidentity'] = '新しい識別情報を作成';
+$labels['addidentity'] = '識別情報を追加';
+$labels['editidentity'] = '識別情報を編集';
$labels['preferhtml'] = 'HTMLを表示';
$labels['defaultcharset'] = '初期設定の文字セット';
$labels['htmlmessage'] = 'HTMLメッセージ';
@@ -400,7 +427,9 @@ $labels['2231folding'] = 'RFC 2231に完全準拠(Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231(MS Outlook)';
$labels['2047folding'] = 'RFC 2047に完全準拠(その他)';
$labels['force7bit'] = '8ビット文字列にMIMEエンコードを使用';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = '高度な設定';
+$labels['toggleadvancedoptions'] = '詳細なオプションの表示を切り替え';
$labels['focusonnewmessage'] = '新しいメッセージが届いたらブラウザーをアクティブ';
$labels['checkallfolders'] = 'すべてのフォルダーで新着メールを表示';
$labels['displaynext'] = 'メッセージを削除や移動した後で次のメッセージを表示';
@@ -442,14 +471,14 @@ $labels['asattachment'] = '添付ファイル';
$labels['replyallmode'] = '「全員に返信」ボタンの既定の動作';
$labels['replyalldefault'] = '全員に返信';
$labels['replyalllist'] = 'メーリングリスト(とわかれば)だけに返信';
-$labels['folder'] = 'フォルダー';
-$labels['folders'] = 'フォルダー';
-$labels['foldername'] = 'フォルダー名';
-$labels['subscribed'] = '購読済み';
+$labels['folder'] = 'フォルダー';
+$labels['folders'] = 'フォルダー';
+$labels['foldername'] = 'フォルダー名';
+$labels['subscribed'] = '購読済み';
$labels['messagecount'] = 'メッセージ';
-$labels['create'] = '作成';
-$labels['createfolder'] = '新しいフォルダーを作成';
-$labels['managefolders'] = 'フォルダーを管理';
+$labels['create'] = '作成';
+$labels['createfolder'] = '新しいフォルダーを作成';
+$labels['managefolders'] = 'フォルダーを管理';
$labels['specialfolders'] = '特殊なフォルダー';
$labels['properties'] = '属性';
$labels['folderproperties'] = 'フォルダーの属性';
@@ -459,9 +488,9 @@ $labels['info'] = '情報';
$labels['getfoldersize'] = 'クリックしてフォルダーの大きさを取得';
$labels['changesubscription'] = 'クリックして購読状態を変更';
$labels['foldertype'] = 'フォルダーの種類';
-$labels['personalfolder'] = '個人フォルダー';
-$labels['otherfolder'] = '他のユーザーのフォルダー';
-$labels['sharedfolder'] = '公開フォルダー';
+$labels['personalfolder'] = '個人フォルダー';
+$labels['otherfolder'] = '他のユーザーのフォルダー';
+$labels['sharedfolder'] = '公開フォルダー';
$labels['sortby'] = '並べ替え';
$labels['sortasc'] = '昇順で並べ替え';
$labels['sortdesc'] = '降順で並べ替え';
@@ -494,4 +523,8 @@ $labels['vietnamese'] = 'ベトナム語';
$labels['japanese'] = '日本語';
$labels['korean'] = '韓国語';
$labels['chinese'] = '中国語';
+$labels['arialabeltopnav'] = 'ウィンドウ制御';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/ja_JP/messages.inc b/program/localization/ja_JP/messages.inc
index 1babab7a3..806dbc48d 100644
--- a/program/localization/ja_JP/messages.inc
+++ b/program/localization/ja_JP/messages.inc
@@ -22,7 +22,9 @@ $messages['sessionerror'] = 'セッションが正しくないか期限が切れ
$messages['storageerror'] = 'IMAP サーバーへの接続に失敗しました。';
$messages['servererror'] = 'サーバーでエラーです!';
$messages['servererrormsg'] = 'サーバーエラー: $msg';
+$messages['connerror'] = '接続エラー(サーバーに到達できません)!';
$messages['dberror'] = 'データベースのエラーです!';
+$messages['windowopenerror'] = 'ポップアップウィンドウがブロックされました!';
$messages['requesttimedout'] = 'リクエストのタイムアウト';
$messages['errorreadonly'] = '操作を実行できませんでした。フォルダーは読み込み専用です。';
$messages['errornoperm'] = '操作を実行できませんでした。権限がありません。';
@@ -92,6 +94,7 @@ $messages['contactsearchsuccessful'] = '$nr件の連絡先が見つかりまし
$messages['searchnomatch'] = '一致するものが見つかりませんでした。';
$messages['searching'] = '検索中...';
$messages['checking'] = '確認中...';
+$messages['stillsearching'] = 'さらに検索中...';
$messages['nospellerrors'] = 'スペルミスは見つかりませんでした。';
$messages['folderdeleted'] = 'フォルダーを削除しました。';
$messages['foldersubscribed'] = 'フォルダーを購読しました。';
@@ -135,7 +138,7 @@ $messages['importmessagesuccess'] = '$nr件のメッセージをインポート
$messages['importmessageerror'] = 'インポートできませんでした! アップロードしたファイルは有効なメッセージやメールボックスのファイルではありません。';
$messages['opnotpermitted'] = '許可されていない操作です。';
$messages['nofromaddress'] = '選択している識別情報に電子メールアドレスが抜けています。';
-$messages['editorwarning'] = 'テキストエディターに切り替えると、すべての書式はなくなります。本当に続けますか?';
+$messages['editorwarning'] = 'エディターの種類を切り替えるとテキストの書式を失うかもしれません。本当に続けますか?';
$messages['httpreceivedencrypterror'] = '致命的な設定エラーが発生しました。システム管理者に至急連絡してください。<b>メッセージを送信できません。</b>';
$messages['smtpconnerror'] = 'SMTP Error ($code): サーバーへの接続に失敗しました。';
$messages['smtpautherror'] = 'SMTP Error ($code): 認証に失敗しました。';
diff --git a/program/localization/ka_GE/labels.inc b/program/localization/ka_GE/labels.inc
index 7a14b6216..7ada6e793 100644
--- a/program/localization/ka_GE/labels.inc
+++ b/program/localization/ka_GE/labels.inc
@@ -209,7 +209,6 @@ $labels['typevideo'] = 'ვიდეო';
$labels['typeblog'] = 'ბლოგი';
$labels['typeprofile'] = 'პროფილი';
$labels['addfield'] = 'ველის დამატება...';
-$labels['addcontact'] = 'კონტაქტებში დამატება';
$labels['editcontact'] = 'კონტაქტის რედაქტირება';
$labels['contacts'] = 'კონტაქტები';
$labels['personalinfo'] = 'პირადი ინფორმაცია';
@@ -220,14 +219,12 @@ $labels['delete'] = 'წაშლა';
$labels['rename'] = 'გადარქმევა';
$labels['addphoto'] = 'დამატება';
$labels['replacephoto'] = 'გამოცვლა';
-$labels['newcontact'] = 'კონტაქტის შექმნა';
$labels['deletecontact'] = 'მონიშნელი კონტაქტის წაშლა';
$labels['composeto'] = 'ფოსტის გაგზავნა შერჩეულ ადრესატებთან';
$labels['contactsfromto'] = 'კონტაქტები $from დან $to ში $count';
$labels['print'] = 'დაბეჭვდა';
$labels['export'] = 'ექსპორტი';
$labels['exportvcards'] = 'კონტაქტების ექსპორტი vCard ფორმატში';
-$labels['newcontactgroup'] = 'ახალი საკონტაქტო ჯგუფის შექმნა';
$labels['grouprename'] = 'ჯგუფის სახელის შეცვლა';
$labels['groupdelete'] = 'ჯგუფის წაშლა';
$labels['previouspage'] = 'წინას ჩვენება';
@@ -249,10 +246,6 @@ $labels['preferences'] = 'პარამეტრები';
$labels['userpreferences'] = 'მომხმარებლის პარამეტრები';
$labels['editpreferences'] = 'მომხმარებლის პარამეტრების რედაქტირება';
$labels['identities'] = 'პროფილები';
-$labels['manageidentities'] = 'პროფილების მართვა';
-$labels['newidentity'] = 'ახალი პროფილი';
-$labels['newitem'] = 'ახალი';
-$labels['edititem'] = 'რედაქტირება';
$labels['preferhtml'] = 'როგორც HTML';
$labels['defaultcharset'] = 'ნაგულისხმები სიმბოლოთა ნაკრები';
$labels['htmlmessage'] = 'HTML შეტყობინება';
@@ -297,6 +290,7 @@ $labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (other)';
$labels['force7bit'] = 'MIME კოდირების გამოყენება 8 ბიტიანი სიმბოლოებისთვის';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'დამატებითი პარამეტრები';
$labels['focusonnewmessage'] = 'ფოკუსირება ახალ შეტყობინებებზე';
$labels['checkallfolders'] = 'შეამოწმე ყველა საქაღალდე ახალ შეტყობინებაზე';
@@ -316,20 +310,20 @@ $labels['replyandforwardonly'] = 'მხოლოდ გადაგზავნ
$labels['insertsignature'] = 'ხელმოცერის ჩასმა';
$labels['afternseconds'] = '$n წამის შემდეგ';
$labels['addtodict'] = 'ლექსიკონში დამატება';
-$labels['folder'] = 'საქაღალდე';
-$labels['folders'] = 'საქაღალდეები';
-$labels['foldername'] = 'საქაღალდის დასახელება';
-$labels['subscribed'] = 'გამოწერილია';
+$labels['folder'] = 'საქაღალდე';
+$labels['folders'] = 'საქაღალდეები';
+$labels['foldername'] = 'საქაღალდის დასახელება';
+$labels['subscribed'] = 'გამოწერილია';
$labels['messagecount'] = 'შეტყობინებები';
-$labels['create'] = 'შექმნა';
-$labels['createfolder'] = 'საქაღალდის შექმნა';
-$labels['managefolders'] = 'საქაღალდეების მართვა';
+$labels['create'] = 'შექმნა';
+$labels['createfolder'] = 'საქაღალდის შექმნა';
+$labels['managefolders'] = 'საქაღალდეების მართვა';
$labels['specialfolders'] = 'სპეციალური საქაღალდე';
$labels['location'] = 'მდებარეობა';
$labels['info'] = 'ინფორმაცია';
$labels['foldertype'] = 'დასტის ტიპი';
-$labels['personalfolder'] = 'კერძო დასტა';
-$labels['sharedfolder'] = 'საჯარო დასტა';
+$labels['personalfolder'] = 'კერძო დასტა';
+$labels['sharedfolder'] = 'საჯარო დასტა';
$labels['sortby'] = 'დალაგება';
$labels['sortasc'] = 'დალაგება ზრდადობით';
$labels['sortdesc'] = 'დალაგება კლებადობით';
@@ -354,4 +348,7 @@ $labels['vietnamese'] = 'ვიეტნამური';
$labels['japanese'] = 'იაპონური';
$labels['korean'] = 'კორეული';
$labels['chinese'] = 'ჩინური';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/ka_GE/messages.inc b/program/localization/ka_GE/messages.inc
index b0ef05373..4bcc8c782 100644
--- a/program/localization/ka_GE/messages.inc
+++ b/program/localization/ka_GE/messages.inc
@@ -91,7 +91,6 @@ $messages['importwait'] = 'გთხოვთ მოიცადოთ, მი
$messages['importconfirm'] = '<b>წარმატებით დასრულდა $inserted კონტაქტების შემოტანა, $skipped არსებულის გამოტოვება</b>:<p><em>$names</em></p>';
$messages['opnotpermitted'] = 'ოპერაცია შეზღუდულია';
$messages['nofromaddress'] = 'ელ–ფოსტის მისამართი გამოტოვებულია';
-$messages['editorwarning'] = 'რედაქტორის გადართვა ტექსტურ რეჟიმში გამოიწვევს არსებული ტექსტის ფორმატის დაკარგვას. გსურთ გაგრძელება?';
$messages['httpreceivedencrypterror'] = 'სერვერზე მოხდა შეცდომა. დაუყონებლივ დაუკავშირდით ადმინისტრატორს. <b>თქვენი შეტყობინება შესაძლოა ვერ გაიგზავნა.</b>';
$messages['smtpconnerror'] = 'SMTP Error ($code): სერვერთან დაკავშირება ვერ მოხერხდა';
$messages['smtpautherror'] = 'SMTP Error ($code): ავტორიზაციის შეცდომა';
diff --git a/program/localization/km_KH/labels.inc b/program/localization/km_KH/labels.inc
index c94133b5d..e0e2acb08 100644
--- a/program/localization/km_KH/labels.inc
+++ b/program/localization/km_KH/labels.inc
@@ -51,6 +51,7 @@ $labels['fromtoshort'] = '$from – $to នៃ $count';
$labels['copy'] = 'ចំលង';
$labels['move'] = 'ផ្ទេរ';
$labels['moveto'] = 'ផ្ទេរទៅ';
+$labels['copyto'] = 'ចម្លង​ទៅ...';
$labels['download'] = 'ទាញយក';
$labels['showattachment'] = 'បង្ហាញ';
$labels['showanyway'] = 'បង្ហាញ​វា​យ៉ាង​ណា​ក៏​បាន';
@@ -170,6 +171,8 @@ $labels['quicksearch'] = 'ស្វែងរក';
$labels['resetsearch'] = 'កំណត់លក្ខខ័ណ្ឌស្វែងរកជាថ្មី';
$labels['searchmod'] = 'កែសំរួលលក្ខខ័ណ្ឌស្វែងរក';
$labels['msgtext'] = 'សំបុត្រទាំងមូល';
+$labels['currentfolder'] = 'ថត​បច្ចុប្បន្ន';
+$labels['allfolders'] = 'ថត​ទាំង​អស់';
$labels['openinextwin'] = 'បើកក្នុងវីនដូវថ្មី';
$labels['emlsave'] = 'រក្សាទុកទិន្នន័យជាឯកសារប្រភេទ(.eml)';
$labels['editasnew'] = 'កែហើយរក្សាទុកដូចជាសំបុត្រថ្មី';
@@ -215,11 +218,12 @@ $labels['addcc'] = 'បន្ថែម Cc';
$labels['addbcc'] = 'បន្ថែម Bcc';
$labels['addreplyto'] = 'បន្ថែម Reply-To';
$labels['addfollowupto'] = 'បន្ថែម Followup-To';
+$labels['mdnrequest'] = 'អ្នក​ផ្ញើ​សារ​នេះ​បាន​សុំ​ឲ្យ​ជូន​ដំណឹង​ពេល​អ្នក​អាន​​សារ​នេះ ។ តើ​អ្នក​ចង់​ជូន​ដំណឹង​ដល់​អ្នក​ផ្ញើ​ឬ​ទេ ?';
$labels['receiptread'] = 'អត្ថបទផ្ញើត្រលប់ (បានអាន)';
$labels['yourmessage'] = 'នេះគឺជាអត្ថបទផ្ញើត្រលប់សំរាប់សំបុត្ររបស់លោកអ្នក។';
$labels['name'] = 'ឈ្មោះសំរាប់បង្ហាញ';
-$labels['firstname'] = 'នាមត្រកូល';
-$labels['surname'] = 'នាមខ្លួន';
+$labels['firstname'] = 'នាមខ្លួន';
+$labels['surname'] = 'នាមត្រកូល';
$labels['middlename'] = 'ឈ្មោះកណ្តាល';
$labels['nameprefix'] = 'ពាក្យពីមុខឈ្មោះ';
$labels['namesuffix'] = 'ពាក្យពីក្រោយឈ្មោះ';
@@ -246,6 +250,8 @@ $labels['female'] = 'ស្រី';
$labels['manager'] = 'នាយក';
$labels['assistant'] = 'ជំនួយការ';
$labels['spouse'] = 'គ្រួសារ';
+$labels['search'] = 'ស្វែងរក';
+$labels['advsearch'] = 'ការ​ស្វែង​រក​កម្រិត​ខ្ពស់';
$labels['other'] = 'ផ្សេងពីនេះ';
$labels['typehome'] = 'គេហដ្ឋាន';
$labels['typework'] = 'កន្លែងធ្វើការ';
@@ -258,8 +264,8 @@ $labels['typecar'] = 'រថយន្ត';
$labels['typepager'] = 'ឧបករណ៍ផ្តល់សារ';
$labels['typevideo'] = 'វីដេអូរ';
$labels['typeassistant'] = 'ជំនួយការ';
+$labels['typehomepage'] = 'ទំព័រ​ដើម';
$labels['addfield'] = 'បន្ថែម';
-$labels['addcontact'] = 'បន្ថែមអាសយដ្ឋានទាក់ទង';
$labels['editcontact'] = 'កែប្រែអាសយដ្ឋានទាក់ទង';
$labels['contacts'] = 'អាសយដ្ឋានទាក់ទងទាំងអស់';
$labels['contactproperties'] = 'ព័ត៌មានអំពីទំនាក់ទំនង';
@@ -271,14 +277,15 @@ $labels['delete'] = 'លុបចោល';
$labels['rename'] = 'ប្តូរឈ្មោះ';
$labels['addphoto'] = 'បន្ថែមរូបថត';
$labels['replacephoto'] = 'លុបរូបថត';
-$labels['newcontact'] = 'បង្កើតអាសយដ្ឋានទាក់ទងថ្មី';
+$labels['uploadphoto'] = 'ផ្ទុក​រូបថត​ឡើង';
$labels['deletecontact'] = 'លុបអាសយដ្ឋានទាក់ទងដែលបានជ្រើសរើស';
$labels['composeto'] = 'ផ្ញើសំបុត្រទៅ';
$labels['contactsfromto'] = 'អាសយដ្ឋានទាក់ទង $from ដល់ $to នៃ$count';
$labels['print'] = 'បោះពុម្ភ';
$labels['export'] = 'ទាញនិងរក្សាទុក';
$labels['exportvcards'] = 'ទាញនិងរក្សាទុកអាសយដ្ឋានជាប្រភេទvCard';
-$labels['newcontactgroup'] = 'បង្កើតក្រុមអាសយដ្ឋានថ្មី';
+$labels['grouprename'] = 'ប្ដូរ​ឈ្មោះ​ក្រុម';
+$labels['groupdelete'] = 'លុប​ក្រុម';
$labels['previouspage'] = 'ទំព័រមុន';
$labels['firstpage'] = 'ទំព័រដំបូង';
$labels['nextpage'] = 'ទំព័របន្ទាប់';
@@ -286,23 +293,24 @@ $labels['lastpage'] = 'ទំព័រចុងក្រោយ';
$labels['group'] = 'ក្រុម';
$labels['groups'] = 'ក្រុម';
$labels['personaladrbook'] = 'អាសយដ្ឋានផ្ទាល់ខ្លួន';
+$labels['searchsave'] = 'រក្សា​ទុក​ការ​ស្វែងរក​';
+$labels['searchdelete'] = 'លុប​ការ​ស្វែង​រក';
$labels['import'] = 'បញ្ចូល';
$labels['importcontacts'] = 'បញ្ចូលអាសយដ្ឋាន';
$labels['importfromfile'] = 'បញ្ចូលពី ឯកសារ';
+$labels['importtarget'] = 'បន្ថែម​អាសយដ្ឋាន​ទាក់ទង​ទៅ';
$labels['importreplace'] = 'ផ្លាស់ប្តូរអាសយដ្ឋានទាំងអស់';
$labels['done'] = 'ចប់រួចរាល់';
$labels['settingsfor'] = 'កំណត់សំរាប់';
+$labels['about'] = 'អំពី';
$labels['preferences'] = 'កំណត់តាមការចូលចិត្ត';
$labels['userpreferences'] = 'កំណត់តាមការចូលចិត្តរបស់អ្នកប្រើ';
$labels['editpreferences'] = 'ផ្លាស់ប្តូរការចូលចិត្តរបស់អ្នកប្រើ';
$labels['identities'] = 'អត្តសញ្ញាណ';
-$labels['manageidentities'] = 'គ្រប់គ្រងអត្តសញ្ញាណ';
-$labels['newidentity'] = 'អត្តសញ្ញាណថ្មី';
-$labels['newitem'] = 'វត្ថុថ្មី';
-$labels['edititem'] = 'កែប្រែវត្ថុ';
$labels['preferhtml'] = 'បង្ហាញជា HTML';
$labels['defaultcharset'] = 'លេខកូតអក្សរមានស្រាប់';
$labels['htmlmessage'] = 'សំបុត្រប្រភេទ HTML';
+$labels['timeformat'] = 'ទម្រង់​ម៉ោង';
$labels['prettydate'] = 'កាលបរិច្ឆេតងាយស្រួលមើល';
$labels['setdefault'] = 'កំណត់ទុក';
$labels['autodetect'] = 'ស្វ័យប្រវត្តិ';
@@ -311,8 +319,11 @@ $labels['timezone'] = 'ម៉ោង';
$labels['pagesize'] = 'ចំនួនសំបុត្រក្នុងមួយទំព័រ';
$labels['signature'] = 'ហត្ថលេខា';
$labels['dstactive'] = 'ម៉ោងវស្សានរដូវ';
+$labels['showinextwin'] = 'បើក​សារ​ក្នុង​វីនដូវ​ថ្មី';
+$labels['composeextwin'] = 'សរសេរ​សារ​ក្នុង​វីនដូវ​ថ្មី';
$labels['htmleditor'] = 'សរសេរសំបុត្រតាមបែប HTML';
$labels['htmlonreply'] = 'ឆ្លើយតបសំបុត្រតាមបែប HTML';
+$labels['htmlonreplyandforward'] = 'បញ្ជូន​សារ​បន្ត ឬ ឆ្លើយ​តប​សារ​​តាម​បែប HTML';
$labels['htmlsignature'] = 'ហត្ថលេខាតាមបែប HTML';
$labels['previewpane'] = 'បង្ហាញប្រអប់សំរាប់មើលសំបុត្រ';
$labels['skin'] = 'ការរចនាទំព័រ';
@@ -346,6 +357,7 @@ $labels['2231folding'] = 'RFC 2231 ពេញ (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'RFC 2047 ពេញ(other)';
$labels['force7bit'] = 'ប្រើ MIME សំរាប់អក្សរទំហំ 8-bit';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'ការកំណត់ពឹស្តារ';
$labels['focusonnewmessage'] = 'ផ្តោតលើវីនដូវដែលកំពុងសរសេរសំបុត្រថ្មី';
$labels['checkallfolders'] = 'ពិនិត្យសំបុត្រថ្មីនៅគ្រប់ថតទាំងអស់';
@@ -368,14 +380,15 @@ $labels['afternseconds'] = 'ក្រោយពី $n វិនាទី';
$labels['reqmdn'] = 'ក្រោយពី $n វិនាទី';
$labels['reqdsn'] = 'ក្រោយពី $n វិនាទី';
$labels['replysamefolder'] = 'ក្រោយពី $n វិនាទី';
-$labels['folder'] = 'ថត';
-$labels['folders'] = 'ថតទាំងអស់';
-$labels['foldername'] = 'ឈ្មោះថត';
-$labels['subscribed'] = 'កំណត់យកមកប្រើ';
+$labels['spellcheckbeforesend'] = 'ពិនិត្យ​អក្ខរាវិរុទ្ធ​មុន​នឹង​ផ្ញើ​សារ';
+$labels['folder'] = 'ថត';
+$labels['folders'] = 'ថតទាំងអស់';
+$labels['foldername'] = 'ឈ្មោះថត';
+$labels['subscribed'] = 'កំណត់យកមកប្រើ';
$labels['messagecount'] = 'សំបុត្រ';
-$labels['create'] = 'បង្កើត';
-$labels['createfolder'] = 'បង្កើតថតថ្មី';
-$labels['managefolders'] = 'រៀបចំថត';
+$labels['create'] = 'បង្កើត';
+$labels['createfolder'] = 'បង្កើតថតថ្មី';
+$labels['managefolders'] = 'រៀបចំថត';
$labels['specialfolders'] = 'ថតពិសេស';
$labels['properties'] = 'ព័ត៌មាន';
$labels['folderproperties'] = 'ព័ត៌មានអំពីថត';
@@ -384,9 +397,13 @@ $labels['location'] = 'ទីកន្លែង';
$labels['info'] = 'ព័ត៌មាន';
$labels['getfoldersize'] = 'ទំហំថត';
$labels['changesubscription'] = 'ផ្លាស់ប្តូរការជាវ';
+$labels['personalfolder'] = 'ថត​ឯកជន';
+$labels['otherfolder'] = 'ថត​របស់​អ្នក​ប្រើប្រាស់​ផ្សេង​ទៀត';
+$labels['sharedfolder'] = 'ថត​សាធារណៈ';
$labels['sortby'] = 'តំរៀបតាម';
$labels['sortasc'] = 'តំរៀបតាមលំដាប់ចុះ';
$labels['sortdesc'] = 'តំរៀបតាមលំដាប់ឡើង';
+$labels['license'] = 'អាជ្ញាប័ណ្ណ';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
@@ -409,4 +426,7 @@ $labels['vietnamese'] = 'ភាសាវៀតណាម';
$labels['japanese'] = 'ភាសាជប៉ុន';
$labels['korean'] = 'ភាសាកូរ៉េ';
$labels['chinese'] = 'ភាសាចិន';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/kn_IN/labels.inc b/program/localization/kn_IN/labels.inc
index bff989285..2a0163780 100644
--- a/program/localization/kn_IN/labels.inc
+++ b/program/localization/kn_IN/labels.inc
@@ -99,7 +99,6 @@ $labels['search'] = 'ಹುಡುಕು';
$labels['typehome'] = 'ಮನೆ';
$labels['typework'] = 'ಕೆಲಸ';
$labels['typecar'] = 'ಕಾರು';
-$labels['addcontact'] = 'ಹೊಸ ಸಂಪರ್ಕ ಸೇರಿಸಿ';
$labels['editcontact'] = 'ಸಂಪರ್ಕ ತಿದ್ದು';
$labels['contacts'] = 'ಸಂಪರ್ಕಗಳು';
$labels['edit'] = 'ತಿದ್ದು';
@@ -139,6 +138,7 @@ $labels['always'] = 'ಯಾವಾಗಲೂ';
$labels['everynminutes'] = 'ಪ್ರತಿ $n ನಿಮಿಷ (ಗಳು)';
$labels['refreshinterval'] = 'ರಿಫ್ರೆಶ್ (ಹೊಸ ಸಂದೇಶಗಳನ್ನು, ಇತ್ಯಾದಿಗಳನ್ನು ಪರಿಶೀಲಿಸು)';
$labels['immediately'] = 'ತತ್ಕ್ಷಣ ';
+$labels['savelocalstorage'] = "";
$labels['mainoptions'] = 'ಮುಖ್ಯ ಆಯ್ಕೆಗಳು';
$labels['section'] = 'ವಿಭಾಗ';
$labels['newmessage'] = 'ಹೊಸ ಸಂದೇಶ';
@@ -151,7 +151,7 @@ $labels['insertsignature'] = 'ಸಹಿ ಸೇರಿಸು';
$labels['afternseconds'] = '$n ಸೆಕೆಂಡುಗಳ ನಂತರ';
$labels['addtodict'] = 'ನಿಘಂಟಿಗೆ ಸೇರಿಸು';
$labels['messagecount'] = 'ಸಂದೇಶಗಳು';
-$labels['create'] = 'ರಚಿಸು';
+$labels['create'] = 'ರಚಿಸು';
$labels['properties'] = 'ಗುಣಲಕ್ಷಣಗಳು';
$labels['location'] = 'ಸ್ಥಳ';
$labels['info'] = 'ಮಾಹಿತಿ';
@@ -163,4 +163,7 @@ $labels['GB'] = 'GB';
$labels['english'] = 'ಇಂಗ್ಲೀಷ್';
$labels['westerneuropean'] = 'ಪಾಶ್ಚಾತ್ಯ ಯುರೋಪಿಯನ್';
$labels['easterneuropean'] = 'ಪೂರ್ವ ಯುರೋಪಿಯನ್';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/ko_KR/labels.inc b/program/localization/ko_KR/labels.inc
index fdb43166d..5b8c58659 100644
--- a/program/localization/ko_KR/labels.inc
+++ b/program/localization/ko_KR/labels.inc
@@ -27,12 +27,12 @@ $labels['addressbook'] = '주소록';
$labels['inbox'] = '받은 편지함';
$labels['drafts'] = '임시 보관함';
$labels['sent'] = '보낸 편지함';
-$labels['trash'] = '휴지통';
+$labels['trash'] = '지운 편지함';
$labels['junk'] = '스팸 편지함';
-$labels['show_real_foldernames'] = '특별 폴더에서 실제 이름 보이기';
+$labels['show_real_foldernames'] = '특수 폴더에서 실제 이름 표시';
$labels['subject'] = '제목';
$labels['from'] = '보내는 사람';
-$labels['sender'] = '발신인';
+$labels['sender'] = '발송자';
$labels['to'] = '받는 사람';
$labels['cc'] = '참조';
$labels['bcc'] = '숨은 참조';
@@ -40,8 +40,8 @@ $labels['replyto'] = '회신 주소';
$labels['followupto'] = '전달';
$labels['date'] = '날짜';
$labels['size'] = '크기';
-$labels['priority'] = '우선순위';
-$labels['organization'] = '기관';
+$labels['priority'] = '우선 순위';
+$labels['organization'] = '조직';
$labels['readstatus'] = '읽음 상태';
$labels['listoptions'] = '목록 옵션...';
$labels['mailboxlist'] = '폴더';
@@ -51,12 +51,12 @@ $labels['messagenrof'] = '총 $count개 중 $nr 번째 메시지';
$labels['fromtoshort'] = '총 $count개 중 $from 번째 - $to 번째';
$labels['copy'] = '복사';
$labels['move'] = '이동';
-$labels['moveto'] = '이동할 위치...';
-$labels['copyto'] = '복사 위치...';
+$labels['moveto'] = '다음 위치로 이동...';
+$labels['copyto'] = '다음 위치로 복사...';
$labels['download'] = '다운로드';
$labels['open'] = '열기';
$labels['showattachment'] = '보기';
-$labels['showanyway'] = '그래도 항상 보기';
+$labels['showanyway'] = '그래도 항상 표시';
$labels['filename'] = '파일명';
$labels['filesize'] = '파일 크기';
$labels['addtoaddressbook'] = '주소록에 추가';
@@ -100,12 +100,12 @@ $labels['longnov'] = '11월';
$labels['longdec'] = '12월';
$labels['today'] = '오늘';
$labels['refresh'] = '새로 고침';
-$labels['checkmail'] = '새 메시지 확인';
-$labels['compose'] = '메시지 작성';
-$labels['writenewmessage'] = '새 메시지 생성';
+$labels['checkmail'] = '새로운 메시지 확인';
+$labels['compose'] = '작성';
+$labels['writenewmessage'] = '새로운 메시지 생성';
$labels['reply'] = '회신';
-$labels['replytomessage'] = '발신인에게 회신';
-$labels['replytoallmessage'] = '목록 또는 발신인 및 모든 수신인에게 회신';
+$labels['replytomessage'] = '발송자에게 회신';
+$labels['replytoallmessage'] = '목록 또는 발송자 및 모든 수신자에게 회신';
$labels['replyall'] = '전체 회신';
$labels['replylist'] = '회신 목록';
$labels['forward'] = '전달';
@@ -113,64 +113,77 @@ $labels['forwardinline'] = '본문 내용으로 전달';
$labels['forwardattachment'] = '첨부파일로 전달';
$labels['forwardmessage'] = '메시지 전달';
$labels['deletemessage'] = '메시지 삭제';
-$labels['movemessagetotrash'] = '메시지를 휴지통으로 이동';
+$labels['movemessagetotrash'] = '메시지를 지운 편지함으로 이동';
$labels['printmessage'] = '이 메시지 인쇄';
$labels['previousmessage'] = '이전 메시지 보기';
-$labels['firstmessage'] = '처음 메시지 표시';
-$labels['nextmessage'] = '다음 메시지 표시';
-$labels['lastmessage'] = '마지막 메시지 표시';
+$labels['firstmessage'] = '처음 메시지 보기';
+$labels['nextmessage'] = '다음 메시지 보기';
+$labels['lastmessage'] = '마지막 메시지 보기';
$labels['backtolist'] = '메일 목록으로 돌아가기';
$labels['viewsource'] = '소스 보기';
$labels['mark'] = '표시';
-$labels['markmessages'] = '메시지 표시하기';
+$labels['markmessages'] = '메시지 표시';
$labels['markread'] = '읽음으로 표시';
$labels['markunread'] = '읽지 않음으로 표시';
-$labels['markflagged'] = '깃발로 표시됨으로 표시';
-$labels['markunflagged'] = '깃발로 표시되지 않음으로 표시';
+$labels['markflagged'] = '깃발 추가';
+$labels['markunflagged'] = '깃발 제거';
$labels['moreactions'] = '추가 동작...';
-$labels['more'] = '더보기';
+$labels['more'] = '더 보기';
$labels['back'] = '뒤로';
$labels['options'] = '옵션';
+$labels['first'] = '처음';
+$labels['last'] = '마지막';
+$labels['previous'] = '이전';
+$labels['next'] = '다음';
$labels['select'] = '선택';
$labels['all'] = '모두';
$labels['none'] = '없음';
$labels['currpage'] = '현재 페이지';
+$labels['isread'] = '읽음';
$labels['unread'] = '읽지 않음';
-$labels['flagged'] = '깃발로 표시됨';
-$labels['unanswered'] = '답장하지 않음';
+$labels['flagged'] = '깃발 표시 있음';
+$labels['unflagged'] = '깃발 표시 없음';
+$labels['unanswered'] = '답변하지 않음';
$labels['withattachment'] = '첨부파일 포함';
$labels['deleted'] = '삭제됨';
$labels['undeleted'] = '삭제되지 않음';
+$labels['replied'] = '회신됨';
+$labels['forwarded'] = '전달됨';
$labels['invert'] = '반전';
$labels['filter'] = '필터';
$labels['list'] = '목록';
$labels['threads'] = '스레드';
-$labels['expand-all'] = '모두 확장';
-$labels['expand-unread'] = '읽지 않은 메시지 확장';
+$labels['expand-all'] = '모두 펼치기';
+$labels['expand-unread'] = '읽지 않은 메시지 펼치기';
$labels['collapse-all'] = '모두 접기';
-$labels['threaded'] = '스레드화됨';
-$labels['autoexpand_threads'] = '메시지 스레드 확장';
+$labels['threaded'] = '스레드로 표시함';
+$labels['autoexpand_threads'] = '메시지 스레드 펼치기';
$labels['do_expand'] = '모든 스레드';
$labels['expand_only_unread'] = '읽지 않은 메시지에만 적용';
$labels['fromto'] = '보내는 사람/받는 사람';
-$labels['flag'] = '깃발로 표시';
+$labels['flag'] = '깃발 추가';
$labels['attachment'] = '첨부파일';
$labels['nonesort'] = '없음';
-$labels['sentdate'] = '발신일';
-$labels['arrival'] = '도착일';
+$labels['sentdate'] = '보낸 날짜';
+$labels['arrival'] = '받은 날짜';
$labels['asc'] = '오름차순';
$labels['desc'] = '내림차순';
-$labels['listcolumns'] = '열 목록 보기';
+$labels['listcolumns'] = '열 목록 표시';
$labels['listsorting'] = '열 정렬';
-$labels['listorder'] = '정렬 순서';
-$labels['listmode'] = '화면 모드 목록 보기';
-$labels['folderactions'] = '폴더 명령';
-$labels['compact'] = '간단하게';
-$labels['empty'] = '비어 있음';
+$labels['listorder'] = '정렬 기준';
+$labels['listmode'] = '화면 모드 목록 표시';
+$labels['folderactions'] = '폴더 동작...';
+$labels['compact'] = '압축하기';
+$labels['empty'] = '비우기';
$labels['importmessages'] = '메시지 가져오기';
$labels['quota'] = '디스크 사용량';
$labels['unknown'] = '알 수 없음';
-$labels['unlimited'] = '제한 없음';
+$labels['unlimited'] = '무제한';
+$labels['quotatype'] = '용량 제한 유형';
+$labels['quotatotal'] = '제한';
+$labels['quotaused'] = '사용됨';
+$labels['quotastorage'] = '디스크 공간';
+$labels['quotamessage'] = '메시지 계수';
$labels['quicksearch'] = '빠른 검색';
$labels['resetsearch'] = '검색 재설정';
$labels['searchmod'] = '수정자 검색';
@@ -178,8 +191,12 @@ $labels['msgtext'] = '전체 메시지';
$labels['body'] = '본문';
$labels['type'] = '유형';
$labels['namex'] = '이름';
+$labels['searchscope'] = '범위';
+$labels['currentfolder'] = '현재 폴더';
+$labels['subfolders'] = '이 폴더 및 하위 폴더';
+$labels['allfolders'] = '모든 폴더';
$labels['openinextwin'] = '새 창에서 열기';
-$labels['emlsave'] = '다운로드(.eml)';
+$labels['emlsave'] = '다운로드 (.eml)';
$labels['changeformattext'] = '메시지를 평문 형식으로 표시';
$labels['changeformathtml'] = 'HTML 형식으로 표시';
$labels['editasnew'] = '새 메시지로 편집';
@@ -192,40 +209,46 @@ $labels['editortype'] = '편집기 유형';
$labels['returnreceipt'] = '수신 확인';
$labels['dsn'] = '전송 상태 알림';
$labels['mailreplyintro'] = '$date에 $sender이(가) 작성한 내용:';
-$labels['originalmessage'] = '원본 메세지';
+$labels['originalmessage'] = '원본 메시지';
+$labels['selectimage'] = '이미지 선택';
+$labels['addimage'] = '이미지 추가';
+$labels['selectmedia'] = '동영상 선택';
+$labels['addmedia'] = '동영상 추가';
$labels['editidents'] = '신원 편집';
$labels['spellcheck'] = '맞춤법';
-$labels['checkspelling'] = '맞춤법 검사하기';
-$labels['resumeediting'] = '편집 계속하기';
+$labels['checkspelling'] = '맞춤법 검사';
+$labels['resumeediting'] = '이어서 편집';
$labels['revertto'] = '돌아가기';
$labels['restore'] = '복구';
$labels['restoremessage'] = '메시지를 복구할까요?';
$labels['responses'] = '응답';
$labels['insertresponse'] = '응답 삽입';
$labels['manageresponses'] = '응답 관리';
-$labels['savenewresponse'] = '새로운 응답 저장';
-$labels['editresponses'] = '응답 편집';
+$labels['newresponse'] = '새 응답 생성';
+$labels['addresponse'] = '응답 추가';
$labels['editresponse'] = '응답 편집';
+$labels['editresponses'] = '응답 편집';
$labels['responsename'] = '이름';
$labels['responsetext'] = '응답 텍스트';
$labels['attach'] = '첨부';
$labels['attachments'] = '첨부파일';
$labels['upload'] = '업로드';
-$labels['uploadprogress'] = '$percent ($total개 중 $current개)';
+$labels['uploadprogress'] = '$percent (전체 $total 중 $current)';
$labels['close'] = '닫기';
$labels['messageoptions'] = '메시지 옵션...';
+$labels['togglecomposeoptions'] = '구성 옵션 표시/숨기기';
$labels['low'] = '낮음';
$labels['lowest'] = '가장 낮음';
$labels['normal'] = '보통';
$labels['high'] = '높음';
$labels['highest'] = '가장 높음';
$labels['nosubject'] = '(제목 없음)';
-$labels['showimages'] = '이미지 보기';
-$labels['alwaysshow'] = '$sender에서 수신된 이미지 항상 보기';
+$labels['showimages'] = '이미지 표시';
+$labels['alwaysshow'] = '$sender이(가) 보낸 이미지 항상 표시';
$labels['isdraft'] = '이것은 작성 중인 메시지입니다.';
$labels['andnmore'] = '$nr 더 보기...';
-$labels['togglemoreheaders'] = '메시지 헤더 더 보기';
-$labels['togglefullheaders'] = '원 메시지 헤더 표시/숨기기';
+$labels['togglemoreheaders'] = '메시지 머리글 더 보기';
+$labels['togglefullheaders'] = '원 메시지 머리글 표시/숨기기';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = '일반 텍스트';
$labels['savesentmessagein'] = '보낸 메시지를 다음 위치에 저장';
@@ -235,25 +258,25 @@ $labels['addcc'] = '참조 추가';
$labels['addbcc'] = '숨은 참조 추가';
$labels['addreplyto'] = '회신 주소 추가';
$labels['addfollowupto'] = '전달 추가';
-$labels['mdnrequest'] = '이 메시지의 발신인이 사용자가 이 메시지를 읽었을 때 읽음 확인을 요청했습니다. 발신인에게 알리시겠습니까?';
+$labels['mdnrequest'] = '이 메시지의 발송자가 사용자가 이 메시지를 읽었을 때 읽음 확인을 요청했습니다. 발송자에게 알리시겠습니까?';
$labels['receiptread'] = '수신 확인(읽음)';
$labels['yourmessage'] = '이것은 사용자의 메시지에 대한 수신 확인입니다.';
-$labels['receiptnote'] = '참고: 이 수신 확인은 이 메시지가 수신인의 컴퓨터에 표시되었다는 것만을 의미합니다. 수신인이 메시지 내용을 읽었거나 이해했다는 보장은 없습니다.';
+$labels['receiptnote'] = '참고: 이 수신 확인은 이 메시지가 수신자의 컴퓨터에 표시되었다는 것만을 의미합니다. 수신자가 메시지 내용을 읽었거나 이해했다는 보장은 없습니다.';
$labels['name'] = '표시명';
$labels['firstname'] = '이름';
$labels['surname'] = '성';
-$labels['middlename'] = '가운데 이름';
+$labels['middlename'] = '중간 이름';
$labels['nameprefix'] = '접두사';
$labels['namesuffix'] = '접미사';
$labels['nickname'] = '별칭';
-$labels['jobtitle'] = '직위';
+$labels['jobtitle'] = '직책';
$labels['department'] = '부서';
$labels['gender'] = '성별';
-$labels['maidenname'] = '결혼 전 성';
+$labels['maidenname'] = '결혼 전의 성';
$labels['email'] = '이메일';
$labels['phone'] = '전화';
$labels['address'] = '주소';
-$labels['street'] = '나머지 주소';
+$labels['street'] = '도로명';
$labels['locality'] = '시/구/군';
$labels['zipcode'] = '우편번호';
$labels['region'] = '시/도';
@@ -270,6 +293,7 @@ $labels['assistant'] = '비서';
$labels['spouse'] = '배우자';
$labels['allfields'] = '모든 항목';
$labels['search'] = '검색';
+$labels['searchfor'] = '"$q" 검색';
$labels['advsearch'] = '고급 검색';
$labels['advanced'] = '고급';
$labels['other'] = '기타';
@@ -280,7 +304,7 @@ $labels['typemobile'] = '휴대전화';
$labels['typemain'] = '대표';
$labels['typehomefax'] = '자택 팩스';
$labels['typeworkfax'] = '직장 팩스';
-$labels['typecar'] = '자동차';
+$labels['typecar'] = '차량';
$labels['typepager'] = '호출기';
$labels['typevideo'] = '동영상';
$labels['typeassistant'] = '비서';
@@ -288,20 +312,22 @@ $labels['typehomepage'] = '홈페이지';
$labels['typeblog'] = '블로그';
$labels['typeprofile'] = '자기소개';
$labels['addfield'] = '필드 추가..';
-$labels['addcontact'] = '새 연락처 추가';
+$labels['addcontact'] = '연락처 추가';
$labels['editcontact'] = '연락처 편집';
$labels['contacts'] = '연락처';
$labels['contactproperties'] = '연락처 속성';
+$labels['contactnameandorg'] = '상호 및 조직';
$labels['personalinfo'] = '개인 정보';
+$labels['contactphoto'] = '연락처 사진';
$labels['edit'] = '편집';
$labels['cancel'] = '취소';
$labels['save'] = '저장';
$labels['delete'] = '삭제';
$labels['rename'] = '이름 변경';
$labels['addphoto'] = '추가';
-$labels['replacephoto'] = '바꾸기';
+$labels['replacephoto'] = '변경';
$labels['uploadphoto'] = '사진 업로드';
-$labels['newcontact'] = '새 연락처 카드 생성';
+$labels['newcontact'] = '새로운 연락처 생성';
$labels['deletecontact'] = '선택한 연락처 삭제';
$labels['composeto'] = '메일 작성 대상';
$labels['contactsfromto'] = '총 $count개의 연락처 중 $from 번째부터 $to 번째 까지';
@@ -310,24 +336,25 @@ $labels['export'] = '내보내기';
$labels['exportall'] = '모두 내보내기';
$labels['exportsel'] = '선택한 항목 내보내기';
$labels['exportvcards'] = '연락처를 vCard 형식으로 내보내기';
-$labels['newcontactgroup'] = '새 연락처 그룹 생성';
+$labels['newgroup'] = '새 그룹 생성';
$labels['grouprename'] = '그룹명 변경';
$labels['groupdelete'] = '그룹 삭제';
-$labels['groupremoveselected'] = '그룹에서 선택한 연락처 제거';
+$labels['groupremoveselected'] = '선택한 연락처를 그룹에서 제거';
+$labels['uponelevel'] = '한 단계 상위 이동';
$labels['previouspage'] = '이전 페이지 보기';
$labels['firstpage'] = '처음 페이지 보기';
$labels['nextpage'] = '다음 페이지 보기';
$labels['lastpage'] = '마지막 페이지 보기';
$labels['group'] = '그룹';
$labels['groups'] = '그룹';
-$labels['listgroup'] = '그룹 구성원 목록 보기';
+$labels['listgroup'] = '그룹 구성원 목록 표시';
$labels['personaladrbook'] = '개인 주소';
$labels['searchsave'] = '검색 저장';
$labels['searchdelete'] = '검색 삭제';
$labels['import'] = '가져오기';
$labels['importcontacts'] = '연락처 가져오기';
$labels['importfromfile'] = '파일에서 가져오기:';
-$labels['importtarget'] = '연락처 추가 위치';
+$labels['importtarget'] = '연락처를 추가할 위치';
$labels['importreplace'] = '전체 주소록을 바꾸기';
$labels['importgroups'] = '그룹 할당 가져오기';
$labels['importgroupsall'] = '전체 (필요에 따라 그룹 생성)';
@@ -340,10 +367,10 @@ $labels['preferences'] = '환경설정';
$labels['userpreferences'] = '사용자 환경설정';
$labels['editpreferences'] = '사용자 환경설정 편집';
$labels['identities'] = '신원';
-$labels['manageidentities'] = '이 계정의 신원 관리';
-$labels['newidentity'] = '새 신원';
-$labels['newitem'] = '새 항목';
-$labels['edititem'] = '항목 편집';
+$labels['manageidentities'] = '신원 관리';
+$labels['newidentity'] = '새로운 신원 생성';
+$labels['addidentity'] = '신원 추가';
+$labels['editidentity'] = '신원 편집';
$labels['preferhtml'] = 'HTML 표시';
$labels['defaultcharset'] = '기본 인코딩';
$labels['htmlmessage'] = 'HTML 메시지';
@@ -351,12 +378,12 @@ $labels['messagepart'] = '부분';
$labels['digitalsig'] = '디지털 서명';
$labels['dateformat'] = '날짜 형식';
$labels['timeformat'] = '시간 형식';
-$labels['prettydate'] = '간결한 날짜';
-$labels['setdefault'] = '기본 설정';
+$labels['prettydate'] = '요일 및 시간으로 날짜 표시';
+$labels['setdefault'] = '기본 값으로 설정';
$labels['autodetect'] = '자동';
$labels['language'] = '언어';
$labels['timezone'] = '시간대';
-$labels['pagesize'] = '페이지당 행 수';
+$labels['pagesize'] = '페이지당 행 개수';
$labels['signature'] = '서명';
$labels['dstactive'] = '일광 절약 시간';
$labels['showinextwin'] = '메시지를 새 창에서 열기';
@@ -365,42 +392,44 @@ $labels['htmleditor'] = 'HTML 메시지 작성';
$labels['htmlonreply'] = 'HTML 메시지 회신 시';
$labels['htmlonreplyandforward'] = '전달 또는 HTML 메시지 회신 시';
$labels['htmlsignature'] = 'HTML 서명';
-$labels['showemail'] = '이메일 주소를 표시 이름과 함께 보기';
-$labels['previewpane'] = '미리보기 창 보기';
+$labels['showemail'] = '이메일 주소를 표시 이름과 함께 표시';
+$labels['previewpane'] = '미리 보기 창 보기';
$labels['skin'] = '인터페이스 스킨';
$labels['logoutclear'] = '로그아웃할 때 휴지통 비우기';
$labels['logoutcompact'] = '로그아웃할 때 받은 편지함 압축하기';
$labels['uisettings'] = '사용자 인터페이스';
$labels['serversettings'] = '서버 설정';
$labels['mailboxview'] = '편지함 화면';
-$labels['mdnrequests'] = '수신 확인 요청 시';
+$labels['mdnrequests'] = '읽음 확인 요청 시';
$labels['askuser'] = '사용자에게 물어봄';
-$labels['autosend'] = '수신 확인 보내기';
-$labels['autosendknown'] = '내 연락처에 수신 확인 요청을 보냄, 아닐 경우 물어봄';
-$labels['autosendknownignore'] = '내 연락처에 수신 확인 요청을 보냄, 아닐 경우 무시함';
-$labels['ignore'] = '무시함';
+$labels['autosend'] = '읽음 확인 요청';
+$labels['autosendknown'] = '내 연락처에 읽음 확인을 요청하고, 내 연락처가 아닐 경우 물어봄';
+$labels['autosendknownignore'] = '내 연락처에 읽음 확인을 요청하고, 내 연락처가 아닐 경우 무시함';
+$labels['ignore'] = '무시';
$labels['readwhendeleted'] = '삭제 시 메시지를 읽음으로 표시';
-$labels['flagfordeletion'] = '삭제 대신 삭제 대상 메시지를 깃발로 표시';
-$labels['skipdeleted'] = '삭제된 메시지 보지 않기';
-$labels['deletealways'] = '메시지를 휴지통으로 이동하는 작업에 실패할 경우 삭제';
-$labels['deletejunk'] = '스팸 메일함에 있는 메시지를 바로 삭제';
-$labels['showremoteimages'] = '본문 내용의 원격 이미지 표시';
-$labels['fromknownsenders'] = '알려진 발신인으로부터 받은 메시지만';
+$labels['flagfordeletion'] = '삭제 대신 삭제 대상 메시지에 깃발 추가';
+$labels['skipdeleted'] = '삭제된 메시지 숨기기';
+$labels['deletealways'] = '지운 편지함으로 메시지 이동이 실패할 경우, 삭제';
+$labels['deletejunk'] = '스팸 메일함에 있는 메시지를 직접 삭제';
+$labels['showremoteimages'] = '본문에 원격 이미지 표시';
+$labels['fromknownsenders'] = '알려진 발송자로부터 받은 메시지만';
$labels['always'] = '항상';
$labels['showinlineimages'] = '메시지 하단에 첨부 이미지 표시';
$labels['autosavedraft'] = '작성 중인 메시지를 자동으로 저장';
-$labels['everynminutes'] = '매 $n분 마다';
-$labels['refreshinterval'] = '새로 고침 (새 메시지 확인, 기타 등등)';
+$labels['everynminutes'] = '$n분 마다';
+$labels['refreshinterval'] = '새로 고침 (새로운 메시지 확인, 기타 등등)';
$labels['never'] = '하지 않음';
$labels['immediately'] = '즉시';
-$labels['messagesdisplaying'] = '메시지 보기';
+$labels['messagesdisplaying'] = '메시지 표시';
$labels['messagescomposition'] = '메시지 작성';
$labels['mimeparamfolding'] = '첨부파일명';
$labels['2231folding'] = 'Full RFC 2231 (선더버드)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS 아웃룩)';
$labels['2047folding'] = 'Full RFC 2047 (기타)';
$labels['force7bit'] = '8-bit 문자에 MIME 인코딩 사용';
+$labels['savelocalstorage'] = "브라우저의 로컬 저장소에 저장 (임시)";
$labels['advancedoptions'] = '고급 옵션';
+$labels['toggleadvancedoptions'] = '고급 옵션 표시/숨기기';
$labels['focusonnewmessage'] = '새 메시지가 있을 경우 브라우저 창으로 포커스 이동';
$labels['checkallfolders'] = '모든 폴더에서 새 메시지 확인';
$labels['displaynext'] = '메시지 삭제/이동 후 다음 메시지 표시';
@@ -409,24 +438,24 @@ $labels['mainoptions'] = '주요 옵션';
$labels['browseroptions'] = '브라우저 옵션';
$labels['section'] = '섹션';
$labels['maintenance'] = '유지관리';
-$labels['newmessage'] = '새 메시지';
+$labels['newmessage'] = '새로운 메시지';
$labels['signatureoptions'] = '서명 옵션';
$labels['whenreplying'] = '회신 시';
$labels['replyempty'] = '원문 메시지를 인용하지 않음';
-$labels['replytopposting'] = '새 메시지를 인용문 상단에서 시작';
-$labels['replybottomposting'] = '새 메시지를 인용문 하단에서 시작';
+$labels['replytopposting'] = '새로운 메시지를 인용문 상단에서 시작';
+$labels['replybottomposting'] = '새로운 메시지를 인용문 하단에서 시작';
$labels['replyremovesignature'] = '회신 시 메시지에서 원문 서명을 제거';
-$labels['autoaddsignature'] = '서명 자동으로 추가';
+$labels['autoaddsignature'] = '서명을 자동으로 추가';
$labels['newmessageonly'] = '새로운 메시지에만';
$labels['replyandforwardonly'] = '회신 및 전달 시에만';
$labels['insertsignature'] = '서명 삽입';
$labels['previewpanemarkread'] = '미리 본 메시지를 읽음으로 표시';
$labels['afternseconds'] = '$n초 후';
-$labels['reqmdn'] = '수신 확인을 항상 요청';
+$labels['reqmdn'] = '읽음 확인을 항상 요청';
$labels['reqdsn'] = '전송 상태 알림을 항상 요청';
$labels['replysamefolder'] = ' 회신 메시지를 회신 대상 메시지의 폴더로 이동';
$labels['defaultabook'] = '기본 주소록';
-$labels['autocompletesingle'] = '자동완성에서 대체 이메일 주소를 건너뜀';
+$labels['autocompletesingle'] = '자동 완성에서 대체 이메일 주소를 건너뜀';
$labels['listnamedisplay'] = '연락처 정렬 방식';
$labels['spellcheckbeforesend'] = '메시지를 보내기 전에 맞춤법 검사';
$labels['spellcheckoptions'] = '맞춤법 검사 옵션';
@@ -441,15 +470,15 @@ $labels['inline'] = '본문 내용으로';
$labels['asattachment'] = '첨부파일로';
$labels['replyallmode'] = '[전체 회신] 버튼의 기본 동작';
$labels['replyalldefault'] = '전체 회신';
-$labels['replyalllist'] = '발송목록에만 회신(찾았을 경우)';
-$labels['folder'] = '폴더';
-$labels['folders'] = '폴더';
-$labels['foldername'] = '폴더명';
-$labels['subscribed'] = '구독함';
+$labels['replyalllist'] = '발송 목록에만 회신(찾았을 경우)';
+$labels['folder'] = '폴더';
+$labels['folders'] = '폴더';
+$labels['foldername'] = '폴더명';
+$labels['subscribed'] = '구독함';
$labels['messagecount'] = '메시지';
-$labels['create'] = '생성';
-$labels['createfolder'] = '새 폴더 생성';
-$labels['managefolders'] = '폴더 관리';
+$labels['create'] = '생성';
+$labels['createfolder'] = '새 폴더 생성';
+$labels['managefolders'] = '폴더 관리';
$labels['specialfolders'] = '특수 폴더';
$labels['properties'] = '속성';
$labels['folderproperties'] = '폴더 속성';
@@ -459,9 +488,13 @@ $labels['info'] = '정보';
$labels['getfoldersize'] = '폴더 크기를 확인하려면 클릭하세요';
$labels['changesubscription'] = '구독을 변경하려면 클릭하세요';
$labels['foldertype'] = '폴더 유형';
-$labels['personalfolder'] = '개인 폴더';
-$labels['otherfolder'] = '다른 사용자의 폴더';
-$labels['sharedfolder'] = '공유 폴더';
+$labels['personalfolder'] = '개인 폴더';
+$labels['otherfolder'] = '다른 사용자의 폴더';
+$labels['sharedfolder'] = '공유 폴더';
+$labels['findfolders'] = '폴더 찾기';
+$labels['namespace.personal'] = '개인';
+$labels['namespace.other'] = '기타 사용자';
+$labels['namespace.shared'] = '공유됨';
$labels['sortby'] = '정렬 방식';
$labels['sortasc'] = '오름차순으로 정렬';
$labels['sortdesc'] = '내림차순으로 정렬';
@@ -494,4 +527,53 @@ $labels['vietnamese'] = '베트남어';
$labels['japanese'] = '일본어';
$labels['korean'] = '한국어';
$labels['chinese'] = '중국어';
+$labels['arialabeltopnav'] = '창 제어';
+$labels['arialabeltasknav'] = '응용 프로그램 작업';
+$labels['arialabeltoolbar'] = '응용 프로그램 툴바';
+$labels['arialabelactivetask'] = '활성화된 작업';
+$labels['arialabelmessagessearchfilter'] = '이메일 목록 필터';
+$labels['arialabelmailsearchform'] = '이메일 메시지 검색 양식';
+$labels['arialabelcontactsearchform'] = '연락처 검색 양식';
+$labels['arialabelmailquicksearchbox'] = '이메일 검색 입력';
+$labels['arialabelquicksearchbox'] = '검색 입력';
+$labels['arialabelfoldersearchfilter'] = '폴더 목록 필터';
+$labels['arialabelfoldersearchform'] = '폴터 검색 양식';
+$labels['arialabelfolderlist'] = '이메일 폴더 선택';
+$labels['arialabelmessagelist'] = '이메일 메시지 목록';
+$labels['arialabelmailpreviewframe'] = '메시지 미리 보기';
+$labels['arialabelmailboxmenu'] = '폴더 동작 메뉴';
+$labels['arialabellistselectmenu'] = '목록 선택 메뉴';
+$labels['arialabelthreadselectmenu'] = '스레드 목록 메뉴';
+$labels['arialabelmessagelistoptions'] = '메시지 목록 표시 및 정렬 옵션';
+$labels['arialabelmailimportdialog'] = '메시지 가져오기 대화';
+$labels['arialabelmessagenav'] = '메시지 탐색';
+$labels['arialabelmessagebody'] = '메시지 본문';
+$labels['arialabelmessageactions'] = '메시지 동작';
+$labels['arialabelcontactquicksearch'] = '연락처 검색 양식';
+$labels['arialabelcontactsearchbox'] = '연락처 검색 입력';
+$labels['arialabelmessageheaders'] = '메시지 머리글';
+$labels['arialabelforwardingoptions'] = '전달 옵션';
+$labels['arialabelreplyalloptions'] = '전체 회신 옵션';
+$labels['arialabelmoremessageactions'] = '추가 메시지 동작';
+$labels['arialabelmarkmessagesas'] = '선택한 메시지를 다음으로 표시..';
+$labels['arialabelcomposeoptions'] = '작성 옵션';
+$labels['arialabelresponsesmenu'] = '저장된 응답 메뉴';
+$labels['arialabelattachmentuploadform'] = '첨부파일 업로드 양식';
+$labels['arialabelattachmentpreview'] = '첨부파일 미리 보기';
+$labels['ariasummarycomposecontacts'] = '수신자로 선택할 연락처 및 그룹 목록';
+$labels['arialabelcontactexportoptions'] = '연락처 내보내기 옵션';
+$labels['arialabelabookgroupoptions'] = '주소록/그룹 옵션';
+$labels['arialabelpreferencesform'] = '환경 설정 양식';
+$labels['arialabelidentityeditfrom'] = '신원 편집 양식';
+$labels['arialabelresonseeditfrom'] = '응답 편집 양식';
+$labels['arialabelsearchterms'] = '검색 용어';
+$labels['helplistnavigation'] = '목록 키보드 탐색';
+$labels['helplistkeyboardnavigation'] = "상/하 화살표: 행 포커스/선택 이동
+Space: 포커스된 행 선택
+Shift + 상/하 화살표: 위/아래 행을 추가적으로 선택
+Ctrl + Space: 포커스된 행을 선택/제거 대상 선택에서 추가";
+$labels['helplistkeyboardnavmessages'] = "상/하 화살표: 메시지 스레드 펼치기/접기(오직 타래글 모드에서)
+Enter: 선택한/포커스된 메시지 열기
+Delete: 선택한 메시지를 지운 편지함으로 이동";
+$labels['helplistkeyboardnavcontacts'] = "Enter: 선택한/포커스된 연락처 열기";
?>
diff --git a/program/localization/ko_KR/messages.inc b/program/localization/ko_KR/messages.inc
index 3c7060c59..a7add0903 100644
--- a/program/localization/ko_KR/messages.inc
+++ b/program/localization/ko_KR/messages.inc
@@ -15,164 +15,167 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-$messages['errortitle'] = '오류가 발생하였음!';
-$messages['loginfailed'] = '로그인이 실패하였습니다.';
-$messages['cookiesdisabled'] = '브라우저가 쿠키를 지원하지 않습니다.';
-$messages['sessionerror'] = '세션이 유효하지 않거나 종료되었습니다.';
-$messages['storageerror'] = 'IMAP 서버 연결 실패';
+$messages['errortitle'] = '오류가 발생했습니다!';
+$messages['loginfailed'] = '로그인이 실패했습니다.';
+$messages['cookiesdisabled'] = '브라우저가 쿠키를 허용하지 않습니다.';
+$messages['sessionerror'] = '세션이 유효하지 않거나 만료되었습니다.';
+$messages['storageerror'] = '저장소 서버에 연결을 실패했습니다.';
$messages['servererror'] = '서버 오류!';
$messages['servererrormsg'] = '서버 오류: $msg';
+$messages['connerror'] = '연결 오류(서버 접속 실패)!';
$messages['dberror'] = '데이터베이스 오류!';
-$messages['requesttimedout'] = '요청 시간 초과';
-$messages['errorreadonly'] = '명령을 수행할 수 없습니다. 읽기 전용 폴더임.';
-$messages['errornoperm'] = '명령을 수행할 수 없습니다. 권한이 거부됨.';
-$messages['erroroverquota'] = '작업을 수행할 수 없음. 여유 디스크 공간이 없음.';
-$messages['erroroverquotadelete'] = '여유 디스크 공간이 없음. SHIFT-DEL을 이용하여 메시지를 삭제하십시오.';
-$messages['invalidrequest'] = '잘못된 요청! 데이터가 저장되지 않았음.';
+$messages['windowopenerror'] = '팝업 창이 차단되었습니다!';
+$messages['requesttimedout'] = '요청 시간을 초과함';
+$messages['errorreadonly'] = '작업을 수행할 수 없습니다. 폴더가 읽기 전용입니다.';
+$messages['errornoperm'] = '작업을 수행할 수 없습니다. 권한이 거부되었습니다.';
+$messages['erroroverquota'] = '작업을 수행할 수 없습니다. 여유 디스크 공간이 없습니다.';
+$messages['erroroverquotadelete'] = '여유 디스크 공간이 없습니다. SHIFT-DEL을 이용하여 메시지를 삭제하세요.';
+$messages['invalidrequest'] = '잘못된 요청입니다! 데이터가 저장되지 않았습니다.';
$messages['invalidhost'] = '잘못된 서버 이름입니다.';
-$messages['nomessagesfound'] = '이 메일함에서 메일을 찾지 못했음.';
-$messages['loggedout'] = '세션을 성공적으로 종료하였습니다. 안녕히 가세요!';
-$messages['mailboxempty'] = '메일함이 비어있음';
+$messages['nomessagesfound'] = '이 편지함에서 메시지를 발견하지 못했습니다.';
+$messages['loggedout'] = '세션을 성공적으로 종료했습니다. 안녕히 가세요!';
+$messages['mailboxempty'] = '편지함이 비어있음';
$messages['nomessages'] = '메시지가 없음';
$messages['refreshing'] = '새로 고치는 중 ...';
$messages['loading'] = '불러오는 중...';
$messages['uploading'] = '파일을 업로드하는 중...';
$messages['uploadingmany'] = '파일을 업로드하는 중...';
$messages['loadingdata'] = '데이터를 불러오는 중...';
-$messages['checkingmail'] = '새 메시지를 확인하는 중...';
+$messages['checkingmail'] = '새로운 메시지를 확인하는 중...';
$messages['sendingmessage'] = '메시지를 보내는 중...';
$messages['messagesent'] = '메시지를 성공적으로 보냈습니다.';
$messages['savingmessage'] = '메시지를 저장하는 중...';
$messages['messagesaved'] = '메시지가 임시 보관함에 저장되었습니다.';
-$messages['successfullysaved'] = '성공적으로 저장됨.';
+$messages['successfullysaved'] = '성공적으로 저장되었습니다.';
$messages['savingresponse'] = '응답 문구를 저장하는 중...';
$messages['deleteresponseconfirm'] = '정말로 이 응답 문구를 삭제하시겠습니까?';
$messages['addedsuccessfully'] = '연락처가 주소록에 성공적으로 추가되었습니다.';
$messages['contactexists'] = '연락처에 동일한 이메일 주소가 이미 존재합니다.';
$messages['contactnameexists'] = '연락처에 동일한 이름이 이미 존재합니다.';
-$messages['blockedimages'] = '보안을 위해, 이 메시지의 외부 이미지를 차단하였습니다.';
+$messages['blockedimages'] = '개인 정보 보호를 위해, 이 메시지의 외부 이미지가 차단되었습니다.';
$messages['encryptedmessage'] = '이것은 암호화된 메시지며 표시할 수 없습니다. 죄송합니다!';
-$messages['nocontactsfound'] = '연락처를 찾을 수 없었음.';
+$messages['nocontactsfound'] = '연락처를 발견하지 못했습니다.';
$messages['contactnotfound'] = '요청한 연락처를 찾을 수 없었습니다.';
$messages['contactsearchonly'] = '연락처를 찾기 위해 일부 검색용어를 입력하세요.';
-$messages['sendingfailed'] = '메시지 보내기를 실패하였음.';
-$messages['senttooquickly'] = '이 메시지를 보내기 전에 $sec초 동안 기다리세요.';
-$messages['errorsavingsent'] = '보낸 메시지를 저장하는 중 오류가 발생하였음.';
-$messages['errorsaving'] = '저장하는 중 오류가 발생하였음.';
-$messages['errormoving'] = '메시지를 이동할 수 없었음.';
-$messages['errorcopying'] = '메시지를 복사할 수 없었음.';
-$messages['errordeleting'] = '메시지를 삭제할 수 없었음.';
-$messages['errormarking'] = '메시지를 표시할 수 없었음.';
+$messages['sendingfailed'] = '메시지 발송을 실패했습니다.';
+$messages['senttooquickly'] = '이 메시지를 보내기 전에 $sec초 동안 기다려주세요.';
+$messages['errorsavingsent'] = '보낸 메시지를 저장하는 도중 오류가 발생했습니다.';
+$messages['errorsaving'] = '저장하는 동안 오류가 발생했습니다.';
+$messages['errormoving'] = '메시지를 이동할 수 없었습니다.';
+$messages['errorcopying'] = '메시지를 복사할 수 없었습니다.';
+$messages['errordeleting'] = '메시지를 삭제할 수 없었습니다.';
+$messages['errormarking'] = '메시지를 표시할 수 없었습니다.';
$messages['deletecontactconfirm'] = '정말 선택한 연락처를 삭제하시겠습니까?';
$messages['deletegroupconfirm'] = '정말로 선택한 그룹을 삭제하시겠습니까?';
$messages['deletemessagesconfirm'] = '정말로 선택한 메시지를 삭제하시겠습니까?';
$messages['deletefolderconfirm'] = '정말로 이 폴더를 삭제하시겠습니까?';
$messages['purgefolderconfirm'] = '정말로 이 폴더의 모든 메시지를 삭제하시겠습니까?';
-$messages['contactdeleting'] = '연락처 삭제 중...';
-$messages['groupdeleting'] = '그룹 삭제 중...';
+$messages['contactdeleting'] = '연락처를 삭제하는 중...';
+$messages['groupdeleting'] = '그룹을 삭제하는 중...';
$messages['folderdeleting'] = '폴더를 삭제하는 중...';
$messages['foldermoving'] = '폴더를 이동하는 중...';
$messages['foldersubscribing'] = '폴더를 구독하는 중...';
-$messages['folderunsubscribing'] = '폴더의 구독을 취소하는 중...';
-$messages['formincomplete'] = '양식을 완전히 작성되지 않았습니다.';
-$messages['noemailwarning'] = '유효한 이메일 주소를 입력하시기 바랍니다.';
-$messages['nonamewarning'] = '이름을 입력하시기 바랍니다.';
-$messages['nopagesizewarning'] = '페이지 크기를 입력하시기 바랍니다.';
-$messages['nosenderwarning'] = '발신인 이메일 주소를 입력하시기 바랍니다.';
-$messages['norecipientwarning'] = '최소 한 명 이상의 수신인을 입력하시기 바랍니다.';
+$messages['folderunsubscribing'] = '폴더 구독을 취소하는 중...';
+$messages['formincomplete'] = '양식이 완전히 작성되지 않았습니다.';
+$messages['noemailwarning'] = '유효한 이메일 주소를 입력해주세요.';
+$messages['nonamewarning'] = '이름을 입력해주세요.';
+$messages['nopagesizewarning'] = '페이지 크기를 입력해주세요.';
+$messages['nosenderwarning'] = '발송자 이메일 주소를 입력해주세요.';
+$messages['norecipientwarning'] = '한 명 이상의 수신자를 입력해주세요.';
$messages['nosubjectwarning'] = '"제목" 필드가 비어있습니다. 지금 입력하시겠습니까?';
-$messages['nobodywarning'] = '텍스트가 없는 메시지를 보내시겠습니까?';
+$messages['nobodywarning'] = '내용 없는 메시지를 보내시겠습니까?';
$messages['notsentwarning'] = '메시지를 보내지 못했습니다. 메시지를 폐기하시겠습니까?';
-$messages['restoresavedcomposedata'] = '이전에 작성했지만 보내지 않은 메시지를 찾았습니다.\n\nSubject: $subject\nSaved: $date\n\n이 메시지를 복구하시겠습니까?';
-$messages['noldapserver'] = '검색할 LDAP 서버를 선택하시기 바랍니다.';
-$messages['nosearchname'] = '연락처명이나 이메일 주소를 입력하시기 바랍니다.';
-$messages['notuploadedwarning'] = '아직 모든 첨부가 업로드되지 않았습니다. 기다리거나 업로드를 취소하시기 바랍니다.';
-$messages['searchsuccessful'] = '$nr개의 메시지를 찾았음.';
-$messages['contactsearchsuccessful'] = '$nr개의 연락처를 찾았음.';
-$messages['searchnomatch'] = '검색이 일치 항목을 찾지 못함.';
-$messages['searching'] = '검색 중...';
-$messages['checking'] = '확인 중...';
-$messages['nospellerrors'] = '맞춤법 오류를 찾지 못했음.';
-$messages['folderdeleted'] = '폴더를 성공적으로 삭제함.';
-$messages['foldersubscribed'] = '폴더를 성공적으로 구독함.';
-$messages['folderunsubscribed'] = '폴더를 성공적으로 구독 취소함.';
+$messages['restoresavedcomposedata'] = '이전에 작성했으나 보내지 않은 메시지가 발견됐습니다.\n\nSubject: $subject\nSaved: $date\n\n이 메시지를 복구하시겠습니까?';
+$messages['noldapserver'] = '검색할 LDAP 서버를 선택해주세요.';
+$messages['nosearchname'] = '연락처명이나 이메일 주소를 입력해주세요.';
+$messages['notuploadedwarning'] = '아직 모든 첨부가 업로드되지 않았습니다. 기다리거나 업로드를 취소해주세요.';
+$messages['searchsuccessful'] = '$nr개의 메시지를 찾았습니다.';
+$messages['contactsearchsuccessful'] = '$nr개의 연락처를 찾았습니다.';
+$messages['searchnomatch'] = '검색이 일치하는 항목을 발견하지 못했습니다.';
+$messages['searching'] = '검색하는 중...';
+$messages['checking'] = '확인하는 중...';
+$messages['stillsearching'] = '아직도 검색하는 중...';
+$messages['nospellerrors'] = '맞춤법 오류가 발견되지 않았습니다.';
+$messages['folderdeleted'] = '폴더가 성공적으로 삭제되었습니다.';
+$messages['foldersubscribed'] = '폴더를 성공적으로 구독했습니다.';
+$messages['folderunsubscribed'] = '폴더 구독을 성공적으로 취소했습니다.';
$messages['folderpurged'] = '폴더를 성공적으로 비웠습니다.';
-$messages['folderexpunged'] = '폴더를 성공적으로 압축하였습니다.';
-$messages['deletedsuccessfully'] = '성공적으로 삭제함.';
-$messages['converting'] = '서식 설정 삭제 중...';
-$messages['messageopenerror'] = '서버에서 메시지를 불러올 수 없었음.';
-$messages['fileuploaderror'] = '파일 업로드를 실패함.';
-$messages['filesizeerror'] = '업로드된 파일이 최대 크기인 $size를 초과하였습니다.';
+$messages['folderexpunged'] = '폴더가 성공적으로 압축되었습니다.';
+$messages['deletedsuccessfully'] = '성공적으로 삭제되었습니다.';
+$messages['converting'] = '서식 설정 삭제하는 중...';
+$messages['messageopenerror'] = '서버에서 메시지를 불러올 수 없었습니다.';
+$messages['fileuploaderror'] = '파일 업로드를 실패했습니다.';
+$messages['filesizeerror'] = '업로드한 파일이 최대 크기인 $size를 초과했습니다.';
$messages['copysuccess'] = '$nr개의 연락처를 성공적으로 복사함';
-$messages['movesuccess'] = '$nr개의 연락처를 성공적으로 이동함';
-$messages['copyerror'] = '전체 연락처를 복사할 수 없없음';
-$messages['moveerror'] = '전체 연락처를 이동할 수 없었음';
-$messages['sourceisreadonly'] = '이 주소의 소스는 읽기 전용입니다.';
-$messages['errorsavingcontact'] = '연락처의 주소를 저장할 수 없었음.';
+$messages['movesuccess'] = '$nr개의 연락처가 성공적으로 이동되었습니다.';
+$messages['copyerror'] = '모든 연락처를 복사할 수 없었습니다.';
+$messages['moveerror'] = '모든 연락처를 이동할 수 없었습니다.';
+$messages['sourceisreadonly'] = '이 주소 소스는 읽기 전용입니다.';
+$messages['errorsavingcontact'] = '연락처 주소를 저장할 수 없었습니다.';
$messages['movingmessage'] = '메시지를 이동하는 중...';
-$messages['copyingmessage'] = '메시지 복사하는 중...';
-$messages['copyingcontact'] = '연락처 복사하는 중...';
-$messages['movingcontact'] = '연락처 이동 중...';
-$messages['deletingmessage'] = '메시지 삭제하는 중...';
-$messages['markingmessage'] = '메시지에 표시하는 중...';
-$messages['addingmember'] = '그룹에 연락처를 추가하는 중...';
-$messages['removingmember'] = '그룹에서 연락처를 삭제하는 중...';
-$messages['receiptsent'] = '읽음 확인을 성공적으로 보냈음.';
-$messages['errorsendingreceipt'] = '읽음 확인을 보낼 수 없었음.';
-$messages['deleteidentityconfirm'] = '이 항목을 정말로 삭제 하시겠습니까?';
-$messages['nodeletelastidentity'] = '이 신원은 마지막 하나이므로 삭제할 수 없습니다.';
+$messages['copyingmessage'] = '메시지를 복사하는 중...';
+$messages['copyingcontact'] = '연락처를 복사하는 중...';
+$messages['movingcontact'] = '연락처를 이동하는 중...';
+$messages['deletingmessage'] = '메시지를 삭제하는 중...';
+$messages['markingmessage'] = '메시지를 표시하는 중...';
+$messages['addingmember'] = '연락처를 그룹에 추가하는 중...';
+$messages['removingmember'] = '연락처를 그룹에서 삭제하는 중...';
+$messages['receiptsent'] = '읽음 확인을 성공적으로 보냈습니다.';
+$messages['errorsendingreceipt'] = '읽음 확인을 보낼 수 없었습니다.';
+$messages['deleteidentityconfirm'] = '이 항목을 정말로 삭제하시겠습니까?';
+$messages['nodeletelastidentity'] = '이 신원 밖에 남지 않아 삭제할 수 없습니다.';
$messages['forbiddencharacter'] = '폴더명에 금지된 문자가 포함되어 있습니다.';
-$messages['selectimportfile'] = '업로드할 파일을 선택해주시기 바랍니다.';
-$messages['addresswriterror'] = '선택된 주소록은 쓰기가 불가능합니다.';
-$messages['contactaddedtogroup'] = '이 그룹에 연락처를 성공적으로 추가함.';
-$messages['contactremovedfromgroup'] = '이 그룹에서 연락처를 성공적으로 제거함.';
-$messages['nogroupassignmentschanged'] = '그룹 할당이 변경되지 않았음.';
-$messages['importwait'] = '가져오는 중, 기다려주시기 바랍니다...';
-$messages['importformaterror'] = '가져오기를 실패함! 업로드된 파일은 유효하지 않은 가져오기 데이터 파일입니다.';
-$messages['importconfirm'] = '<b>$inserted 연락처를 성공적으로 가져옴<b>';
-$messages['importconfirmskipped'] = '<b>기존 기재사항인 $skipped을(를) 건너뜀</b>';
+$messages['selectimportfile'] = '업로드할 파일을 선택해주세요.';
+$messages['addresswriterror'] = '선택한 주소록은 쓰기가 불가능합니다.';
+$messages['contactaddedtogroup'] = '연락처가 이 그룹에 성공적으로 추가되었습니다.';
+$messages['contactremovedfromgroup'] = '연락처가 이 그룹에서 성공적으로 제거되었습니다.';
+$messages['nogroupassignmentschanged'] = '그룹 할당이 변경되지 않았습니다.';
+$messages['importwait'] = '가져오는 중입니다, 기다려주세요...';
+$messages['importformaterror'] = '가져오기를 실패했습니다! 업로드한 파일은 잘못된 가져오기 데이터 파일입니다.';
+$messages['importconfirm'] = '<b>$inserted개의 연락처를 성공적으로 가져옴<b>';
+$messages['importconfirmskipped'] = '<b>$skipped개의 기존 입력내용을 건너뜀</b>';
$messages['importmessagesuccess'] = '$nr개의 메시지를 성공적으로 가져옴';
-$messages['importmessageerror'] = '가져오기 실패! 업로드된 파일은 유효하지 않은 메시지 또는 메일함 파일임';
-$messages['opnotpermitted'] = '작업이 허가되지 않았음!';
-$messages['nofromaddress'] = '선택된 신원에 이메일 주소 가 누락됨.';
-$messages['editorwarning'] = '일반 텍스트 편집기로 바꾸면 모든 텍스트 서식이 사라집니다. 계속하시겠습니까?';
-$messages['httpreceivedencrypterror'] = '치명적인 구성 오류가 발생하였습니다. 즉시 관리자에게 연락하세요.
-<b>메시지를 전송할 수 없습니다.</b>';
-$messages['smtpconnerror'] = 'SMTP 오류 ($code): 서버와의 연결을 실패함.';
-$messages['smtpautherror'] = 'SMTP 에러 ($code): 인증을 실패함.';
-$messages['smtpfromerror'] = 'SMTP 오류 ($code): 발신인을 "$from" ($msg)로 설정하는데 실패함.';
-$messages['smtptoerror'] = 'SMTP 오류 ($code): 수신인을 "$to" ($msg)에 추가하는데 실패함.';
-$messages['smtprecipientserror'] = 'SMTP 오류: 수신인 목록을 분석(parse)할 수 없음.';
+$messages['importmessageerror'] = '가져오기를 실패했습니다! 업로드한 파일은 잘못된 메시지 또는 메일함 파일입니다.';
+$messages['opnotpermitted'] = '작업이 허용되지 않습니다!';
+$messages['nofromaddress'] = '선택한 신원에 이메일 주소가 누락되었습니다.';
+$messages['editorwarning'] = '편집기 유형을 전환하면 텍스트 서식을 잃게 될 수도 있습니다. 계속하시겠습니까?';
+$messages['httpreceivedencrypterror'] = '치명적인 구성 오류가 발생했습니다. 즉시 관리자에게 연락하세요.
+<b>메시지를 보낼 수 없습니다.</b>';
+$messages['smtpconnerror'] = 'SMTP 오류 ($code): 서버와의 연결을 실패했습니다.';
+$messages['smtpautherror'] = 'SMTP 오류 ($code): 인증을 실패했습니다.';
+$messages['smtpfromerror'] = 'SMTP 오류 ($code): 발송자를 "$from" ($msg) (으)로 설정하는데 실패했습니다.';
+$messages['smtptoerror'] = 'SMTP 오류 ($code): 수신자를 "$to" ($msg)에 추가하는데 실패했습니다.';
+$messages['smtprecipientserror'] = 'SMTP 오류: 수신자 목록을 구문 분석할 수 없습니다.';
$messages['smtperror'] = 'SMTP 오류: $msg';
-$messages['emailformaterror'] = '유효하지 않은 이메일 주소: $email';
-$messages['toomanyrecipients'] = '수신인이 너무 많음. 수신인 수를 $max명으로 줄이십시오.';
-$messages['maxgroupmembersreached'] = '그룹 구성원의 수가 최대 인원인 $max명을 초과합니다.';
-$messages['internalerror'] = '내부 오류가 발생하였음. 다시 시도하십시오.';
-$messages['contactdelerror'] = '연락처를 삭제할 수 없었음.';
-$messages['contactdeleted'] = '연락처가 성공적으로 삭제됨.';
-$messages['contactrestoreerror'] = '삭제된 연락처를 복구할 수 없었음.';
-$messages['contactrestored'] = '연락처가 성공적으로 복구됨.';
-$messages['groupdeleted'] = '그룹이 성공적으로 삭제됨.';
-$messages['grouprenamed'] = '그룹명이 성공적으로 변경됨.';
-$messages['groupcreated'] = '그룹이 성공적으로 생성됨.';
-$messages['savedsearchdeleted'] = '저장된 검색이 성공적으로 삭제됨.';
-$messages['savedsearchdeleteerror'] = '저장된 검색을 삭제할 수 없었음.';
-$messages['savedsearchcreated'] = '저장된 검색이 성공적으로 생성됨.';
-$messages['savedsearchcreateerror'] = '저장된 검색을 생성할 수 없었음.';
-$messages['messagedeleted'] = '메시지가 성공적으로 삭제됨.';
-$messages['messagemoved'] = '메시지가 성공적으로 이동됨.';
-$messages['messagecopied'] = '메시지가 성공적으로 복사됨.';
-$messages['messagemarked'] = '메시지에 성공적으로 표시됨.';
-$messages['autocompletechars'] = '자동 완성을 위해서 적어도 $min개의 문자를 입력하세요.';
-$messages['autocompletemore'] = '더 많은 일치하는 항목을 찾았음. 더 많은 문자를 입력해주십시오.';
+$messages['emailformaterror'] = '잘못된 이메일 주소: $email';
+$messages['toomanyrecipients'] = '수신자가 너무 많습니다. 수신자 인원을 $max명으로 줄이세요.';
+$messages['maxgroupmembersreached'] = '그룹 구성원이 최대 인원인 $max명을 초과합니다.';
+$messages['internalerror'] = '내부 오류가 발생했습니다. 다시 시도해주세요.';
+$messages['contactdelerror'] = '연락처를 삭제할 수 없었습니다.';
+$messages['contactdeleted'] = '연락처가 성공적으로 삭제되었습니다.';
+$messages['contactrestoreerror'] = '삭제한 연락처를 복구할 수 없었습니다.';
+$messages['contactrestored'] = '연락처가 성공적으로 복구되었습니다.';
+$messages['groupdeleted'] = '그룹이 성공적으로 삭제되었습니다.';
+$messages['grouprenamed'] = '그룹명이 성공적으로 변경되었습니다.';
+$messages['groupcreated'] = '그룹이 성공적으로 생성되었습니다.';
+$messages['savedsearchdeleted'] = '저장된 검색이 성공적으로 삭제되었습니다.';
+$messages['savedsearchdeleteerror'] = '저장된 검색을 삭제할 수 없었습니다.';
+$messages['savedsearchcreated'] = '저장된 검색이 성공적으로 생성되었습니다.';
+$messages['savedsearchcreateerror'] = '저장된 검색을생성할 수 없었습니다.';
+$messages['messagedeleted'] = '메시지가 성공적으로 삭제되었습니다.';
+$messages['messagemoved'] = '메시지가 성공적으로 이동되었습니다.';
+$messages['messagecopied'] = '메시지가 성공적으로 복사되었습니다.';
+$messages['messagemarked'] = '메시지가 성공적으로 표시되었습니다.';
+$messages['autocompletechars'] = '자동 완성을 위해 $min개 이상의 문자를 입력하세요.';
+$messages['autocompletemore'] = '더 많은 일치하는 입력내용을 찾았습니다. 더 많은 문자를 입력해주세요.';
$messages['namecannotbeempty'] = '이름을 비워둘 수 없습니다.';
$messages['nametoolong'] = '이름이 너무 깁니다.';
-$messages['folderupdated'] = '폴더가 성공적으로 업데이트됨.';
-$messages['foldercreated'] = '폴더가 성공적으로 생성됨.';
-$messages['invalidimageformat'] = '유효한 이미지 형식이 아님.';
-$messages['mispellingsfound'] = '메시지에서 맞춤법 오류가 감지되었음.';
-$messages['parentnotwritable'] = '선택한 상위 폴더에 폴더를 생성/이동할 수 없음. 접근 권한이 없음.';
+$messages['folderupdated'] = '폴더가 성공적으로 업데이트되었습니다.';
+$messages['foldercreated'] = '폴더가 성공적으로 생성되었습니다.';
+$messages['invalidimageformat'] = '올바른 이미지 형식이 아닙니다.';
+$messages['mispellingsfound'] = '메시지에서 맞춤법 오류가 감지되었습니다.';
+$messages['parentnotwritable'] = '선택한 상위 폴더로 폴더를 생성/이동할 수 없습니다. 접근 권한이 없습니다.';
$messages['messagetoobig'] = '메시지 부분이 처리하기에는 너무 큽니다.';
-$messages['attachmentvalidationerror'] = '경고! 이 첨부 파일의 유형이 메시지에서 선언된 유형과 일치하지 않기 때문에 의심됩니다. 발신인을 신뢰할 수 없을 경우, 악성 코드를 포함할 수도 있기 때문에 브라우저에서 열지 않는 것이 좋습니다. <br/><br/><em> 예상한 유형: $expected; 발견된 유형: $found</ em>';
-$messages['noscriptwarning'] = '경고: 이 웹 메일 서비스는 자바스크립트가 필요합니다! 이 기능을 사용하시려면 자바스크립트를 브라우저 설정에서 활성화하시기 바랍니다.';
+$messages['attachmentvalidationerror'] = '경고! 이 첨부파일의 유형이 메시지에서 보고한 유형과 일치하지 않기 때문에 의심됩니다. 발송자를 신뢰할 수 없을 경우, 메시지가 악성 코드를 포함할 수도 있기 때문에 브라우저에서 열지 않는 것이 좋습니다. <br/><br/><em> 예상한 유형: $expected; 발견한 유형: $detected</ em>';
+$messages['noscriptwarning'] = '경고: 이 웹메일 서비스는 자바스크립트가 필요합니다! 이 기능을 사용하려면 브라우저 설정에서 자바스크립트를 활성화해주세요.';
?>
diff --git a/program/localization/ku/labels.inc b/program/localization/ku/labels.inc
index c88b52d46..9223d014e 100644
--- a/program/localization/ku/labels.inc
+++ b/program/localization/ku/labels.inc
@@ -125,13 +125,11 @@ $labels['name'] = 'Navê xuya dibe';
$labels['firstname'] = 'Nav';
$labels['surname'] = 'Paşnav';
$labels['email'] = 'E-Peyam';
-$labels['addcontact'] = 'Têkiliyeke nû têxê';
$labels['editcontact'] = 'Têkiliyê serast bike';
$labels['edit'] = 'Serast bike';
$labels['cancel'] = 'Betal';
$labels['save'] = 'Tomar bike';
$labels['delete'] = 'Jê Bibe';
-$labels['newcontact'] = 'kardeke nû a têkiliyê biafirîne';
$labels['deletecontact'] = 'Têkiliyên hilbijartî jê bibe';
$labels['composeto'] = 'Ji têkiliya hilbijartî re peyam bişîne';
$labels['contactsfromto'] = 'Têkiliyên $count ên di navbera $from - $to de';
@@ -148,10 +146,6 @@ $labels['preferences'] = 'Vebijêrk';
$labels['userpreferences'] = 'Vebijêrkên bikarhêner';
$labels['editpreferences'] = 'Vebijêrkên bikarhêner serast bike';
$labels['identities'] = 'Nasname';
-$labels['manageidentities'] = 'Nasnameyên vê hesabê serast bike';
-$labels['newidentity'] = 'Nasnameya nû';
-$labels['newitem'] = 'Parçeya nû';
-$labels['edititem'] = 'Parçeyê serast bike';
$labels['preferhtml'] = 'Wekî HTML nîşan bide';
$labels['htmlmessage'] = 'Peyama HTML';
$labels['prettydate'] = 'Kurtenivîsa Dîrokê';
@@ -166,15 +160,19 @@ $labels['htmlsignature'] = 'Şanenava HTML';
$labels['previewpane'] = 'Panela berê nîşan bide';
$labels['autosavedraft'] = 'Xweber hilîne';
$labels['never'] = 'qet';
-$labels['folder'] = 'Peldank';
-$labels['folders'] = 'Peldank';
-$labels['foldername'] = 'Navê peldankê';
-$labels['subscribed'] = 'Ni şanenav';
+$labels['savelocalstorage'] = "";
+$labels['folder'] = 'Peldank';
+$labels['folders'] = 'Peldank';
+$labels['foldername'] = 'Navê peldankê';
+$labels['subscribed'] = 'Ni şanenav';
$labels['messagecount'] = 'Peyam';
-$labels['create'] = 'Biafirîne';
-$labels['createfolder'] = 'Peldankeke nû biafirîne';
-$labels['managefolders'] = 'Rêveberiya peldankan';
+$labels['create'] = 'Biafirîne';
+$labels['createfolder'] = 'Peldankeke nû biafirîne';
+$labels['managefolders'] = 'Rêveberiya peldankan';
$labels['sortby'] = 'Şêweyê rêzkirinê';
$labels['sortasc'] = 'Wekî zêde dibe';
$labels['sortdesc'] = 'Wekî kêm dibe';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/lb_LU/labels.inc b/program/localization/lb_LU/labels.inc
index edfa6e5d1..37264b899 100644
--- a/program/localization/lb_LU/labels.inc
+++ b/program/localization/lb_LU/labels.inc
@@ -131,16 +131,24 @@ $labels['moreactions'] = 'Mei Aktiounen...';
$labels['more'] = 'Méi';
$labels['back'] = 'Zréck';
$labels['options'] = 'Optiounen';
+$labels['first'] = 'Éischt';
+$labels['last'] = 'Lescht';
+$labels['previous'] = 'Viregt';
+$labels['next'] = 'Nächst';
$labels['select'] = 'Auswielen';
$labels['all'] = 'All';
$labels['none'] = 'Keng';
$labels['currpage'] = 'Aktuell Säit';
+$labels['isread'] = 'Gelies';
$labels['unread'] = 'Ongelies';
$labels['flagged'] = 'Mat Fändel';
+$labels['unflagged'] = 'Net markéiert';
$labels['unanswered'] = 'Net beäntwert';
$labels['withattachment'] = 'Mat Unhank';
$labels['deleted'] = 'Geläscht';
$labels['undeleted'] = 'Net geläscht';
+$labels['replied'] = 'Beäntwert';
+$labels['forwarded'] = 'Weidergeleet';
$labels['invert'] = 'Ëmdréinen';
$labels['filter'] = 'Filter';
$labels['list'] = 'Lëscht';
@@ -178,6 +186,10 @@ $labels['msgtext'] = 'Ganze Message';
$labels['body'] = 'Kierper';
$labels['type'] = 'Typ';
$labels['namex'] = 'Numm';
+$labels['searchscope'] = 'Ëmfang';
+$labels['currentfolder'] = 'Aktuellen Dossier';
+$labels['subfolders'] = 'Dësen an d\'Ënnerdossieren';
+$labels['allfolders'] = 'All d\'Dossieren';
$labels['openinextwin'] = 'An enger neier Fënster opmaachen';
$labels['emlsave'] = 'Eroflueden (.eml)';
$labels['changeformattext'] = 'Als Text ouni Formatéierungen uweisen';
@@ -193,6 +205,10 @@ $labels['returnreceipt'] = 'Empfanksbestätegung';
$labels['dsn'] = 'Empfanks-Status-Meldung';
$labels['mailreplyintro'] = 'Den $date, $sender schreift:';
$labels['originalmessage'] = 'Original-Message';
+$labels['selectimage'] = 'Bild auswielen';
+$labels['addimage'] = 'Bild dobäisetzen';
+$labels['selectmedia'] = 'Film auswielen';
+$labels['addmedia'] = 'Film dobäisetzen';
$labels['editidents'] = 'Identitéiten editéieren';
$labels['spellcheck'] = 'Orthographie';
$labels['checkspelling'] = 'Orthographie kontrolléieren';
@@ -203,9 +219,8 @@ $labels['restoremessage'] = 'Message erëmhirstellen';
$labels['responses'] = 'Äntwerten';
$labels['insertresponse'] = 'Äntwert afügen';
$labels['manageresponses'] = 'Äntwerte geréieren';
-$labels['savenewresponse'] = 'Nei Äntwert späicheren';
-$labels['editresponses'] = 'Äntwerten Editéieren';
$labels['editresponse'] = 'Äntwert editéieren';
+$labels['editresponses'] = 'Äntwerten Editéieren';
$labels['responsename'] = 'Numm';
$labels['responsetext'] = 'Äntwert-Text';
$labels['attach'] = 'Drunhänken';
@@ -270,6 +285,7 @@ $labels['assistant'] = 'Assistent';
$labels['spouse'] = 'Liewenspartner';
$labels['allfields'] = 'All d\'Felder';
$labels['search'] = 'Sichen';
+$labels['searchfor'] = 'No "$q" sichen';
$labels['advsearch'] = 'Avancéiert Sich';
$labels['advanced'] = 'Avancéiert';
$labels['other'] = 'Aneres';
@@ -288,7 +304,6 @@ $labels['typehomepage'] = 'Websäit';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
$labels['addfield'] = 'Feld dobäisetzen...';
-$labels['addcontact'] = 'Neie Kontakt dobäisetzen';
$labels['editcontact'] = 'Kontakt editéieren';
$labels['contacts'] = 'Kontakter';
$labels['contactproperties'] = 'Kontakt-Eegeschaften';
@@ -301,7 +316,6 @@ $labels['rename'] = 'Ëmbenennen';
$labels['addphoto'] = 'Dobäisetzen';
$labels['replacephoto'] = 'Ersetzen';
$labels['uploadphoto'] = 'Foto eroplueden';
-$labels['newcontact'] = 'Nei Kontakt-Kaart erstellen';
$labels['deletecontact'] = 'Déi ausgewielte Kontakter läschen';
$labels['composeto'] = 'Mail schreiwen un';
$labels['contactsfromto'] = 'Kontakter $from bis $to vun $count';
@@ -310,7 +324,6 @@ $labels['export'] = 'Exportéieren';
$labels['exportall'] = 'All exportéieren';
$labels['exportsel'] = 'Déi ausgewielten exportéieren';
$labels['exportvcards'] = 'Kontakter am vCard-Format exportéieren';
-$labels['newcontactgroup'] = 'Nei Kontakt-Grupp erstellen';
$labels['grouprename'] = 'Grupp ëmbenennen';
$labels['groupdelete'] = 'Grupp läschen';
$labels['groupremoveselected'] = 'Ausgewielte Kontakter aus Grupp eraushuele';
@@ -340,10 +353,6 @@ $labels['preferences'] = 'Astellungen';
$labels['userpreferences'] = 'Benotzer-Astellungen';
$labels['editpreferences'] = 'Benotzer-Astellungen änneren';
$labels['identities'] = 'Identitéiten';
-$labels['manageidentities'] = 'Identitéite fir dësen Account geréieren';
-$labels['newidentity'] = 'Nei Identitéit';
-$labels['newitem'] = 'Neit Element';
-$labels['edititem'] = 'Element änneren';
$labels['preferhtml'] = 'HTML uweisen';
$labels['defaultcharset'] = 'Standard Zeechesaz';
$labels['htmlmessage'] = 'HTML-Message';
@@ -400,6 +409,7 @@ $labels['2231folding'] = 'Kompletten RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (Microsoft Outlook)';
$labels['2047folding'] = 'Kompletten RFC 2047 (anerer)';
$labels['force7bit'] = 'MIME-Kodéierung fir 8-Bit-Zeeche benotzen';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'Avancéiert Optiounen';
$labels['focusonnewmessage'] = 'Browser-Fënster fokusséiere wann en neie Message ukënnt';
$labels['checkallfolders'] = 'Nei Messagen an allen Dossieren opruffen';
@@ -442,14 +452,14 @@ $labels['asattachment'] = 'als Unhank';
$labels['replyallmode'] = 'Standard-Aktioun vum [U jiddwereen äntweren]-Knäppchen';
$labels['replyalldefault'] = 'u jiddwereen äntweren';
$labels['replyalllist'] = 'just der Mailinglëscht äntweren (wann eng fonnt gëtt) ';
-$labels['folder'] = 'Dossier';
-$labels['folders'] = 'Dossieren';
-$labels['foldername'] = 'Dossiersnumm';
-$labels['subscribed'] = 'Abonnéiert';
+$labels['folder'] = 'Dossier';
+$labels['folders'] = 'Dossieren';
+$labels['foldername'] = 'Dossiersnumm';
+$labels['subscribed'] = 'Abonnéiert';
$labels['messagecount'] = 'Messagen';
-$labels['create'] = 'Erstellen';
-$labels['createfolder'] = 'Neien Dossier erstellen';
-$labels['managefolders'] = 'Dossieren geréieren';
+$labels['create'] = 'Erstellen';
+$labels['createfolder'] = 'Neien Dossier erstellen';
+$labels['managefolders'] = 'Dossieren geréieren';
$labels['specialfolders'] = 'Speziell Dossieren';
$labels['properties'] = 'Astellungen';
$labels['folderproperties'] = 'Dossiers-Astellungen';
@@ -459,9 +469,9 @@ $labels['info'] = 'Informatioun';
$labels['getfoldersize'] = 'Klick fir d\'Dossiers-Gréisst ze kréien';
$labels['changesubscription'] = 'Klick fir den Abonnement ze änneren';
$labels['foldertype'] = 'Dossiers-Typ';
-$labels['personalfolder'] = 'Privaten Dossier';
-$labels['otherfolder'] = 'Dossier vun anerem Benotzer';
-$labels['sharedfolder'] = 'Ëffentlechen Dossier';
+$labels['personalfolder'] = 'Privaten Dossier';
+$labels['otherfolder'] = 'Dossier vun anerem Benotzer';
+$labels['sharedfolder'] = 'Ëffentlechen Dossier';
$labels['sortby'] = 'Sortéieren no';
$labels['sortasc'] = 'Opsteigend sortéieren';
$labels['sortdesc'] = 'Ofsteigend sortéieren';
@@ -494,4 +504,7 @@ $labels['vietnamese'] = 'Vietnamesesch';
$labels['japanese'] = 'Japanesch';
$labels['korean'] = 'Koreanesch';
$labels['chinese'] = 'Chinesesch';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/lb_LU/messages.inc b/program/localization/lb_LU/messages.inc
index 41dada829..560d0091f 100644
--- a/program/localization/lb_LU/messages.inc
+++ b/program/localization/lb_LU/messages.inc
@@ -22,7 +22,9 @@ $messages['sessionerror'] = 'Deng Sessioun ass ongëlteg oder verfall.';
$messages['storageerror'] = 'D\'Verbindung mam Späicher-Server ass feelgeschloen.';
$messages['servererror'] = 'Server-Feeler!';
$messages['servererrormsg'] = 'Server-Feeler: $msg';
+$messages['connerror'] = 'Connectiouns-Feeler (De Server konnt net erreecht ginn)!';
$messages['dberror'] = 'Datebank-Feeler!';
+$messages['windowopenerror'] = 'D\'Popup-Fënster gouf blockéiert!';
$messages['requesttimedout'] = 'D\'Ufro huet ze laang gedauert';
$messages['errorreadonly'] = 'D\'Operatioun kann net ofgeschloss ginn. Den Dossier ass schreifgeschützt.';
$messages['errornoperm'] = 'D\'Operatioun kann net ofgeschloss ginn. Zougrëff verweigert.';
@@ -92,6 +94,7 @@ $messages['contactsearchsuccessful'] = '$nr Kontakter fonnt.';
$messages['searchnomatch'] = 'D\'Sich huet keng Treffer bruecht.';
$messages['searching'] = 'Sichen...';
$messages['checking'] = 'Kontrolléieren...';
+$messages['stillsearching'] = 'D\'Sich leeft nach...';
$messages['nospellerrors'] = 'Et goufe keng Schreiffeeler fonnt.';
$messages['folderdeleted'] = 'Dossier erfollegräich geläscht.';
$messages['foldersubscribed'] = 'Dossier erfollegräich abonnéiert.';
@@ -135,7 +138,7 @@ $messages['importmessagesuccess'] = 'Erfollegräich $nr Messagen importéiert';
$messages['importmessageerror'] = 'Import feelgeschloen! Den eropgeluedene Fichier ass kee gëltege Message oder kee Mailbox-Fichier.';
$messages['opnotpermitted'] = 'Operatioun net zougelooss!';
$messages['nofromaddress'] = 'An der ausgewieltener Identitéit feelt d\'E-Mail-Adress.';
-$messages['editorwarning'] = 'Bei engem Wiessel op den Text-Editor ginn all d\'Formatéierunge verluer. Wëlls du sécher weidermaachen?';
+$messages['editorwarning'] = 'Den Editor-Typ ze wiessele kann de Verloscht vun Textformatéierunge verursaachen. Wëlls du weidermaachen?';
$messages['httpreceivedencrypterror'] = 'E fatale Konfiguratiouns-Feeler ass opgetrueden. Kontaktéier w.e.gl. den Administrator esou séier ewéi méiglech. <b>Däi Message kann net geschéckt ginn.</b> ';
$messages['smtpconnerror'] = 'SMTP-Feeler ($code): Et konnt keng Verbindung mam Server hirgestallt ginn.';
$messages['smtpautherror'] = 'SMTP-Feeler ($code): Authentifizéierung feelgeschloen.';
diff --git a/program/localization/lt_LT/labels.inc b/program/localization/lt_LT/labels.inc
index 63194f275..fc42f61ed 100644
--- a/program/localization/lt_LT/labels.inc
+++ b/program/localization/lt_LT/labels.inc
@@ -52,6 +52,7 @@ $labels['fromtoshort'] = '$from – $to iš $count';
$labels['copy'] = 'Kopijuoti';
$labels['move'] = 'Perkelti';
$labels['moveto'] = 'Perkelti į…';
+$labels['copyto'] = 'Kopijuoti į...';
$labels['download'] = 'Parsisiųsti';
$labels['open'] = 'Atverti';
$labels['showattachment'] = 'Rodyti';
@@ -130,16 +131,24 @@ $labels['moreactions'] = 'Kiti veiksmai…';
$labels['more'] = 'Kita';
$labels['back'] = 'Grįžti';
$labels['options'] = 'Nuostatos';
+$labels['first'] = 'Pirmas';
+$labels['last'] = 'Paskutinis';
+$labels['previous'] = 'Ankstesnis';
+$labels['next'] = 'Sekantis';
$labels['select'] = 'Pažymėti';
$labels['all'] = 'visus';
-$labels['none'] = 'Nerūšiuoti';
+$labels['none'] = 'Nieko';
$labels['currpage'] = 'matomus šiame puslapyje';
+$labels['isread'] = 'Skaityti';
$labels['unread'] = 'neskaitytus';
$labels['flagged'] = 'su gairele';
+$labels['unflagged'] = 'Nepažymėti vėliavėle';
$labels['unanswered'] = 'neatsakytus';
$labels['withattachment'] = 'Su priedu';
$labels['deleted'] = 'pašalintus';
$labels['undeleted'] = 'Neištrintas';
+$labels['replied'] = 'Atsakytieji';
+$labels['forwarded'] = 'Persiųstieji';
$labels['invert'] = 'invertuoti';
$labels['filter'] = 'Rodyti';
$labels['list'] = 'Sąrašas';
@@ -170,6 +179,11 @@ $labels['importmessages'] = 'Importuoti laiškus';
$labels['quota'] = 'Disko naudojimas';
$labels['unknown'] = 'nežinomas';
$labels['unlimited'] = 'neribotas';
+$labels['quotatype'] = 'Kvotos tipas';
+$labels['quotatotal'] = 'Limitas';
+$labels['quotaused'] = 'Išnaudota';
+$labels['quotastorage'] = 'Disko talpa';
+$labels['quotamessage'] = 'Laiškų skaičius';
$labels['quicksearch'] = 'Sparčioji paieška';
$labels['resetsearch'] = 'Atšaukti paiešką';
$labels['searchmod'] = 'Paieškos modifikatoriai';
@@ -177,6 +191,10 @@ $labels['msgtext'] = 'Visas laiškas';
$labels['body'] = 'Laiško tekstas';
$labels['type'] = 'Tipas';
$labels['namex'] = 'Vardas';
+$labels['searchscope'] = 'Sritis';
+$labels['currentfolder'] = 'Šis aplankas';
+$labels['subfolders'] = 'Šis ir poaplankiai';
+$labels['allfolders'] = 'Visi aplankai';
$labels['openinextwin'] = 'Atverti naujame lange';
$labels['emlsave'] = 'Parsisiųsti (.eml)';
$labels['changeformattext'] = 'Rodyti grynojo teksto formatu';
@@ -192,17 +210,24 @@ $labels['returnreceipt'] = 'Prašyti pristatymo pažymos';
$labels['dsn'] = 'Laiško pristatymo pažyma';
$labels['mailreplyintro'] = '$date, $sender rašė:';
$labels['originalmessage'] = 'Originalus laiškas';
+$labels['selectimage'] = 'Pažymėti paveikslą';
+$labels['addimage'] = 'Pridėti paveikslą';
+$labels['selectmedia'] = 'Pažymėti vaizdo įrašą';
+$labels['addmedia'] = 'Pridėti vaizdo įrašą';
$labels['editidents'] = 'Tvarkyti tapatybes';
$labels['spellcheck'] = 'Tikrinti rašybą';
$labels['checkspelling'] = 'Tikrinti rašybą';
$labels['resumeediting'] = 'Tęsti redagavimą';
$labels['revertto'] = 'Atstatyti į';
+$labels['restore'] = 'Atkurti';
+$labels['restoremessage'] = 'Atkurti pranešimus?';
$labels['responses'] = 'Atsakymai';
$labels['insertresponse'] = 'Įterpti atsakymą';
$labels['manageresponses'] = 'Tvarkyti atsakymus';
-$labels['savenewresponse'] = 'Įrašyti naują atsakymą';
-$labels['editresponses'] = 'Taisyti atsakymus';
+$labels['newresponse'] = 'Kurti naują atsakymą';
+$labels['addresponse'] = 'Pridėti atsakymą';
$labels['editresponse'] = 'Taisyti atsakymą';
+$labels['editresponses'] = 'Taisyti atsakymus';
$labels['responsename'] = 'Pavadinimas';
$labels['responsetext'] = 'Atsakymo tekstas';
$labels['attach'] = 'Pridėti failą';
@@ -211,6 +236,7 @@ $labels['upload'] = 'Įkelti';
$labels['uploadprogress'] = '$percent ($current iš $total)';
$labels['close'] = 'Užverti';
$labels['messageoptions'] = 'Laiško savybės…';
+$labels['togglecomposeoptions'] = 'Rodyti/slėpti nustatymus';
$labels['low'] = 'Žemas';
$labels['lowest'] = 'Žemiausias';
$labels['normal'] = 'Normalus';
@@ -267,6 +293,7 @@ $labels['assistant'] = 'Padėjėjo(-os)';
$labels['spouse'] = 'Sutuoktinis';
$labels['allfields'] = 'Visi laukai';
$labels['search'] = 'Paieška';
+$labels['searchfor'] = 'Ieškoti "$q"';
$labels['advsearch'] = 'Išplėstinė paieška';
$labels['advanced'] = 'Išsamiau';
$labels['other'] = 'Kitas';
@@ -289,7 +316,9 @@ $labels['addcontact'] = 'Pridėti adresatą';
$labels['editcontact'] = 'Taisyti adresatą';
$labels['contacts'] = 'Adresatai';
$labels['contactproperties'] = 'Adresato savybės';
+$labels['contactnameandorg'] = 'Vardas ir organizacija';
$labels['personalinfo'] = 'Asmeniniai duomenys';
+$labels['contactphoto'] = 'Adresato nuotrauka';
$labels['edit'] = 'Redaguoti';
$labels['cancel'] = 'Atsisakyti';
$labels['save'] = 'Įrašyti';
@@ -307,10 +336,11 @@ $labels['export'] = 'Eksportuoti';
$labels['exportall'] = 'Eksportuoti visus';
$labels['exportsel'] = 'Eksportuoti pažymėtus';
$labels['exportvcards'] = 'Eksportuoti adresatus „vCard“ formatu';
-$labels['newcontactgroup'] = 'Kurti adresatų grupę';
+$labels['newgroup'] = 'Kurti naują grupę';
$labels['grouprename'] = 'Pervardinti grupę';
$labels['groupdelete'] = 'Pašalinti grupę';
$labels['groupremoveselected'] = 'Pašalinti pažymėtus adresatus iš grupės';
+$labels['uponelevel'] = 'Į viršų per vieną';
$labels['previouspage'] = 'Rodyti ankstesnį puslapį';
$labels['firstpage'] = 'Rodyti pirmąjį puslapį';
$labels['nextpage'] = 'Rodyti tolesnį puslapį';
@@ -337,10 +367,10 @@ $labels['preferences'] = 'Nuostatos';
$labels['userpreferences'] = 'Naudotojo nuostatos';
$labels['editpreferences'] = 'Keisti naudotojo nuostatas';
$labels['identities'] = 'Tapatybės';
-$labels['manageidentities'] = 'Tvarkyti šios paskyros tapatybes';
-$labels['newidentity'] = 'Nauja tapatybė';
-$labels['newitem'] = 'Naujas elementas';
-$labels['edititem'] = 'Redaguoti elementą';
+$labels['manageidentities'] = 'Tvarkyti tapatybes';
+$labels['newidentity'] = 'Sukurti naują tapatybę';
+$labels['addidentity'] = 'Pridėti tapatybę';
+$labels['editidentity'] = 'Tvarkyti tapatybę';
$labels['preferhtml'] = 'Rodyti HTML';
$labels['defaultcharset'] = 'Numatytoji koduotė';
$labels['htmlmessage'] = 'HTML laiškas';
@@ -397,7 +427,9 @@ $labels['2231folding'] = 'visiškas RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'visiškas RFC 2047 (kitos programos)';
$labels['force7bit'] = 'Naudoti MIME kodavimą 8 bitų simboliams';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'Papildomos nuostatos';
+$labels['toggleadvancedoptions'] = 'Rodyti/slėpti papildomus nustatymus';
$labels['focusonnewmessage'] = 'Fokusuoti naršyklės langą gavus naują laišką';
$labels['checkallfolders'] = 'Naujų laiškų ieškoti visuose aplankuose';
$labels['displaynext'] = 'Rodyti pranešimą pašalinus/perkėlus laišką';
@@ -439,14 +471,14 @@ $labels['asattachment'] = 'kaip priedas';
$labels['replyallmode'] = 'Numatytasis mygtuko „Atsakyti visiems“ veiksmas';
$labels['replyalldefault'] = 'atsakyti visiems';
$labels['replyalllist'] = 'atsakyti el. pašto grupei (jei aptikta)';
-$labels['folder'] = 'Aplankas';
-$labels['folders'] = 'Aplankai';
-$labels['foldername'] = 'Aplanko vardas';
-$labels['subscribed'] = 'Užsakytas';
+$labels['folder'] = 'Aplankas';
+$labels['folders'] = 'Aplankai';
+$labels['foldername'] = 'Aplanko vardas';
+$labels['subscribed'] = 'Užsakytas';
$labels['messagecount'] = 'Laiškai';
-$labels['create'] = 'Sukurti';
-$labels['createfolder'] = 'Sukurti naują aplanką';
-$labels['managefolders'] = 'Tvarkyti aplankus';
+$labels['create'] = 'Sukurti';
+$labels['createfolder'] = 'Sukurti naują aplanką';
+$labels['managefolders'] = 'Tvarkyti aplankus';
$labels['specialfolders'] = 'Specialieji aplankai';
$labels['properties'] = 'Savybės';
$labels['folderproperties'] = 'Aplanko savybės';
@@ -456,9 +488,13 @@ $labels['info'] = 'Informacija';
$labels['getfoldersize'] = 'Spustelėkite, norėdami sužinoti aplanko dydį';
$labels['changesubscription'] = 'Spustelėkite, norėdami keisti prenumeratos nuostatas';
$labels['foldertype'] = 'Aplanko tipas';
-$labels['personalfolder'] = 'Asmeninis aplankas';
-$labels['otherfolder'] = 'Kito naudotojo aplankas';
-$labels['sharedfolder'] = 'Viešas aplankas';
+$labels['personalfolder'] = 'Asmeninis aplankas';
+$labels['otherfolder'] = 'Kito naudotojo aplankas';
+$labels['sharedfolder'] = 'Viešas aplankas';
+$labels['findfolders'] = 'Ieškoti aplankų';
+$labels['namespace.personal'] = 'Asmeninis';
+$labels['namespace.other'] = 'Kito naudotojo';
+$labels['namespace.shared'] = 'Bendrinamas';
$labels['sortby'] = 'Rikiuoti pagal';
$labels['sortasc'] = 'Rikiuoti didėjančiai';
$labels['sortdesc'] = 'Rikiuoti mažėjančiai';
@@ -491,4 +527,53 @@ $labels['vietnamese'] = 'Vietnamiečių';
$labels['japanese'] = 'Japonų';
$labels['korean'] = 'Korėjiečių';
$labels['chinese'] = 'Kinų';
+$labels['arialabeltopnav'] = 'Lango valdymas';
+$labels['arialabeltasknav'] = 'Aplikacijos užduotys';
+$labels['arialabeltoolbar'] = 'Aplikacijos įrankių juosta';
+$labels['arialabelactivetask'] = 'Aktyvi užduotis';
+$labels['arialabelmessagessearchfilter'] = 'Laiškų sąrašo filtras';
+$labels['arialabelmailsearchform'] = 'El. laiško paieškos forma';
+$labels['arialabelcontactsearchform'] = 'Adresatų paieškos forma';
+$labels['arialabelmailquicksearchbox'] = 'El. pašto paieškos įvestis';
+$labels['arialabelquicksearchbox'] = 'Paieškos įvestis';
+$labels['arialabelfoldersearchfilter'] = 'Aplankų sąrašo filtras';
+$labels['arialabelfoldersearchform'] = 'Aplanko paieškos forma';
+$labels['arialabelfolderlist'] = 'Laiškų aplanko pasirinkimas';
+$labels['arialabelmessagelist'] = 'Elektroninių laiškų sąrašas';
+$labels['arialabelmailpreviewframe'] = 'Laiško peržiūra';
+$labels['arialabelmailboxmenu'] = 'Veiksmų su aplankais meniu';
+$labels['arialabellistselectmenu'] = 'Sąrašo pasirinkimo meniu';
+$labels['arialabelthreadselectmenu'] = 'Gijų sąrašo meniu';
+$labels['arialabelmessagelistoptions'] = 'Laiškų rodymo ir rikiavimo nustatymai';
+$labels['arialabelmailimportdialog'] = 'Laiškų importavimo dialogas';
+$labels['arialabelmessagenav'] = 'Navigacija tarp laiškų';
+$labels['arialabelmessagebody'] = 'Laiško turinys';
+$labels['arialabelmessageactions'] = 'Veiksmai su laišku';
+$labels['arialabelcontactquicksearch'] = 'Adresatų paieškos forma';
+$labels['arialabelcontactsearchbox'] = 'Kontaktų paieškos įvestis';
+$labels['arialabelmessageheaders'] = 'Laiško antraštės';
+$labels['arialabelforwardingoptions'] = 'Persiuntimo nustatymai';
+$labels['arialabelreplyalloptions'] = 'Atsakyti visiems nustatymai';
+$labels['arialabelmoremessageactions'] = 'Daugiau laiškų veiksmų';
+$labels['arialabelmarkmessagesas'] = 'Pažymėti pasirinktus laiškus kaip...';
+$labels['arialabelcomposeoptions'] = 'Laiško kūrimo nustatymai';
+$labels['arialabelresponsesmenu'] = 'Atsakymų meniu';
+$labels['arialabelattachmentuploadform'] = 'Priedo įkėlimo forma';
+$labels['arialabelattachmentpreview'] = 'Priedo peržiūra';
+$labels['ariasummarycomposecontacts'] = 'Sąrašas adresatų ir grupių, kuriuos galima pasirinkti kaip gavėją';
+$labels['arialabelcontactexportoptions'] = 'Adresatų eksportavimo nustymai';
+$labels['arialabelabookgroupoptions'] = 'Adresų knygos/grupių nustatymai';
+$labels['arialabelpreferencesform'] = 'Nustatymų forma';
+$labels['arialabelidentityeditfrom'] = 'Tapatybės redagavimo forma';
+$labels['arialabelresonseeditfrom'] = 'Atsakymo redagavimo forma';
+$labels['arialabelsearchterms'] = 'Paieškos žodžiai';
+$labels['helplistnavigation'] = 'Navigacija klaviatūra sąraše';
+$labels['helplistkeyboardnavigation'] = "Rodyklė aukštyn / žemyn: fokusuoti / pasirinkti kitą eilutę.
+Tarpas: pasirinkti sufokusuoą eilutę.
+Lyg2 + rodyklė aukštyn / žemyn: pasirinkti papildomą eilutę viršuje / apačioje.
+Vald + tarpas: įtraukti sufokusuotą eilutę į pasirinktų sąrašą / pašalinti ją iš jo.";
+$labels['helplistkeyboardnavmessages'] = "Rodyklė dešinėn / kairėn: išskleisti / suskleisti laiškų giją (esant gijų veiksenoje).
+Įvesti: atverti pasirinktą / sufokusuotą laišką.
+Šalinti: perkelti pasirinktus laiškus į Šiukšlinę.";
+$labels['helplistkeyboardnavcontacts'] = "Enter: Atidaryti pasirinktą adresatą";
?>
diff --git a/program/localization/lt_LT/messages.inc b/program/localization/lt_LT/messages.inc
index d45bdeb5e..0759d152e 100644
--- a/program/localization/lt_LT/messages.inc
+++ b/program/localization/lt_LT/messages.inc
@@ -22,7 +22,9 @@ $messages['sessionerror'] = 'Jūsų sesija negaliojanti.';
$messages['storageerror'] = 'Nepavyko prisijungti prie IMAP serverio.';
$messages['servererror'] = 'Serverio klaida!';
$messages['servererrormsg'] = 'Serverio klaida: $msg';
+$messages['connerror'] = 'Ryšio klaida (nepavyko susijungti su serveriu)!';
$messages['dberror'] = 'Duomenų bazės klaida!';
+$messages['windowopenerror'] = 'Buvo užblokuotas iššokantis langas!';
$messages['requesttimedout'] = 'Baigėsi užklausai skirtas laikas';
$messages['errorreadonly'] = 'Nepavyko atlikti veiksmo – aplankas prieinamas tik skaitymui.';
$messages['errornoperm'] = 'Nepavyko atlikti veiksmo – nepakanka teisių.';
@@ -32,6 +34,8 @@ $messages['invalidrequest'] = 'Netinkama užklausa! Duomenys neišsaugoti.';
$messages['invalidhost'] = 'Negalimas serverio vardas.';
$messages['nomessagesfound'] = 'Šioje pašto dėžutėje laiškų nėra.';
$messages['loggedout'] = 'Jūs sėkmingai atsijungėte. Iki kito karto!';
+$messages['mailboxempty'] = 'Pašto dėžutė tuščia.';
+$messages['nomessages'] = 'Laiškų nėra';
$messages['refreshing'] = 'Atnaujinama…';
$messages['loading'] = 'Įkeliama…';
$messages['uploading'] = 'Įkeliamas failas…';
@@ -81,6 +85,7 @@ $messages['norecipientwarning'] = 'Prašom įvesti bent vieną gavėją.';
$messages['nosubjectwarning'] = 'Temos laukelis tuščias. Ar norite temą įvesti dabar?';
$messages['nobodywarning'] = 'Išsiųsti šį laišką be teksto?';
$messages['notsentwarning'] = 'Laiškas neišsiųstas. Ar jūs tikrai norite jo atsikratyti?';
+$messages['restoresavedcomposedata'] = 'Buvo rastas anksčiau pradėtas rašyti, bet neišsiųstas laiškas.\n\nTema:$subject\nIšsaugotas: $date\n\nAr norite šį laišką atkurti?';
$messages['noldapserver'] = 'Prašome pasirinkti LDAP serverį paieškai.';
$messages['nosearchname'] = 'Prašom įvesti vardą arba el. pašto adresą.';
$messages['notuploadedwarning'] = 'Įkelti dar ne visi priedai. Prašom palaukti arba atšaukti jų įkėlimą.';
@@ -89,6 +94,7 @@ $messages['contactsearchsuccessful'] = 'Rasta adresatų: $nr.';
$messages['searchnomatch'] = 'Paiešką atitinkančių rezultatų nėra.';
$messages['searching'] = 'Ieškoma…';
$messages['checking'] = 'Tikrinama…';
+$messages['stillsearching'] = 'Dar ieškoma...';
$messages['nospellerrors'] = 'Rašybos klaidų nerasta.';
$messages['folderdeleted'] = 'Aplankas sėkmingai pašalintas.';
$messages['foldersubscribed'] = 'Aplankas sėkmingai užprenumeruotas.';
@@ -132,7 +138,7 @@ $messages['importmessagesuccess'] = 'Importuota laiškų: $nr';
$messages['importmessageerror'] = 'Importas nepavyko! Įkeltasis failas nėra tinkamas importavimui laiško arba pašto dėžutės failas';
$messages['opnotpermitted'] = 'Veiksmas neleistinas!';
$messages['nofromaddress'] = 'Nenurodytas pasirinktosios tapatybės el. pašto adresas.';
-$messages['editorwarning'] = 'Pereinant į grynojo teksto redagavimą, visas laiško formatavimas bus prarastas. Ar tęsti?';
+$messages['editorwarning'] = 'Keičiant redaktorių gali būti prarastas teksto formatavimas. Ar norite tęsti?';
$messages['httpreceivedencrypterror'] = 'Įvyko lemtinga konfigūracijos klaida. Nedelsiant susisiekite su administratoriumi. <b>Jūsų laiškas negali būti išsiųstas.</b>';
$messages['smtpconnerror'] = 'SMTP klaida ($code): nepavyko prisijungti prie serverio.';
$messages['smtpautherror'] = 'SMTP klaida ($code): nepavyko autentikuotis.';
diff --git a/program/localization/lv_LV/labels.inc b/program/localization/lv_LV/labels.inc
index 185d75180..e82432050 100644
--- a/program/localization/lv_LV/labels.inc
+++ b/program/localization/lv_LV/labels.inc
@@ -131,10 +131,15 @@ $labels['moreactions'] = 'Papildus darbības...';
$labels['more'] = 'Vairāk';
$labels['back'] = 'Atpakaļ';
$labels['options'] = 'Opcijas';
+$labels['first'] = 'Pirmā';
+$labels['last'] = 'Pēdējā';
+$labels['previous'] = 'Iepriekšējā';
+$labels['next'] = 'Nākošā';
$labels['select'] = 'Atzīmēt';
$labels['all'] = 'Visas';
$labels['none'] = 'Nevienu';
$labels['currpage'] = 'Pašreizējā lapa';
+$labels['isread'] = 'Lasīt';
$labels['unread'] = 'Nelasītās';
$labels['flagged'] = 'Atzīmētās';
$labels['unanswered'] = 'Neatbildētās';
@@ -171,6 +176,10 @@ $labels['importmessages'] = 'Importēt vēstules';
$labels['quota'] = 'Kvota';
$labels['unknown'] = 'nezināms';
$labels['unlimited'] = 'neierobežots';
+$labels['quotatype'] = 'Kvotas tips';
+$labels['quotaused'] = 'Izlietots';
+$labels['quotastorage'] = 'Kvota';
+$labels['quotamessage'] = 'Vēstuļu skaits';
$labels['quicksearch'] = 'Ārtā meklēšana';
$labels['resetsearch'] = 'Atstatīt meklēšanu';
$labels['searchmod'] = 'Meklēšanas modifikatori:';
@@ -178,6 +187,9 @@ $labels['msgtext'] = 'Visā vēstulē';
$labels['body'] = 'Pamatteksts';
$labels['type'] = 'Tips';
$labels['namex'] = 'Vārds';
+$labels['currentfolder'] = 'Pašreizējā mape';
+$labels['subfolders'] = 'Šī un apakšmapes';
+$labels['allfolders'] = 'Visas mapes';
$labels['openinextwin'] = 'Atvērt jaunā logā';
$labels['emlsave'] = 'lejupielādēt (.eml)';
$labels['changeformattext'] = 'Rādīt kā neformatētu tekstu';
@@ -193,6 +205,8 @@ $labels['returnreceipt'] = 'Saņemšanas apstiprinājums';
$labels['dsn'] = 'Piegādes atskaite';
$labels['mailreplyintro'] = '$sender @ $date rakstīja:';
$labels['originalmessage'] = 'Sākotnējā vēstule';
+$labels['selectimage'] = 'Atzīmēt attēlu';
+$labels['addimage'] = 'Pievienot attēlu';
$labels['editidents'] = 'Rediģēt identitātes';
$labels['spellcheck'] = 'Izrunāt';
$labels['checkspelling'] = 'Pārbaudīt pareizrakstību';
@@ -203,9 +217,10 @@ $labels['restoremessage'] = 'Atjaunot vēstuli?';
$labels['responses'] = 'Atbildes';
$labels['insertresponse'] = 'Ievietot atbildi';
$labels['manageresponses'] = 'Pārvaldīt atbildes';
-$labels['savenewresponse'] = 'Saglabāt jauno atbildi';
-$labels['editresponses'] = 'Rediģēt atbildes';
+$labels['newresponse'] = 'Izveidot jaunu atbildi';
+$labels['addresponse'] = 'Pievienot atbildi';
$labels['editresponse'] = 'Rediģēt atbildi';
+$labels['editresponses'] = 'Rediģēt atbildes';
$labels['responsename'] = 'Vārds';
$labels['responsetext'] = 'Atbildes teksts';
$labels['attach'] = 'Pievienot';
@@ -270,6 +285,7 @@ $labels['assistant'] = 'Asistents';
$labels['spouse'] = 'Laulātais';
$labels['allfields'] = 'Visi lauki';
$labels['search'] = 'Meklēt';
+$labels['searchfor'] = 'Meklēt pēc "$q"';
$labels['advsearch'] = 'Paplašinātā meklēšana';
$labels['advanced'] = 'Paplašinātie iestatījumi';
$labels['other'] = 'Cits';
@@ -288,11 +304,13 @@ $labels['typehomepage'] = 'Mājaslapa';
$labels['typeblog'] = 'Blogs';
$labels['typeprofile'] = 'Profils';
$labels['addfield'] = 'Pievienot lauku...';
-$labels['addcontact'] = 'Pievienot jaunu kontaktu';
+$labels['addcontact'] = 'Pievienot kontaktu';
$labels['editcontact'] = 'Rediģēt kontaktu';
$labels['contacts'] = 'Kontakti';
$labels['contactproperties'] = 'Kontakta īpašības';
+$labels['contactnameandorg'] = 'Vārds un organizācija';
$labels['personalinfo'] = 'Personīgā informācija';
+$labels['contactphoto'] = 'Kontakta attēls';
$labels['edit'] = 'Rediģēt';
$labels['cancel'] = 'Atcelt';
$labels['save'] = 'Saglabāt';
@@ -310,7 +328,7 @@ $labels['export'] = 'Eksportēt';
$labels['exportall'] = 'Eksportēt visu';
$labels['exportsel'] = 'Eksportēt atzīmēto';
$labels['exportvcards'] = 'Eksportēt kontaktus vCard formātā';
-$labels['newcontactgroup'] = 'Izveidot jaunu kontaktu grupu';
+$labels['newgroup'] = 'Izveidot jaunu grupu';
$labels['grouprename'] = 'Pārdēvēt grupu';
$labels['groupdelete'] = 'Izdzēst grupu';
$labels['groupremoveselected'] = 'Dzēst atzīmētos kontaktus no grupas';
@@ -341,9 +359,9 @@ $labels['userpreferences'] = 'Lietotāja iestatījumi';
$labels['editpreferences'] = 'Rediģēt iestatījumus';
$labels['identities'] = 'Identitātes';
$labels['manageidentities'] = 'Rediģēt identitātes';
-$labels['newidentity'] = 'Jauna identitāte';
-$labels['newitem'] = 'Jauns';
-$labels['edititem'] = 'Rediģēt';
+$labels['newidentity'] = 'Izveidot jaunu identitāti';
+$labels['addidentity'] = 'Pievienot identitāti';
+$labels['editidentity'] = 'Rediģēt identitāti';
$labels['preferhtml'] = 'Rādīt HTML formatētās vēstules';
$labels['defaultcharset'] = 'Noklusētā rakstzīmju kopa';
$labels['htmlmessage'] = 'HTML formatēta vēstule';
@@ -400,6 +418,7 @@ $labels['2231folding'] = 'Pilns RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Pilns RFC 2047 (citi)';
$labels['force7bit'] = 'Izmantot MIME kodējumu 8-bitu simboliem';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'Paplašinātie iestatījumi';
$labels['focusonnewmessage'] = 'Uzstādīt pārlūka fokusu uz jaunu vēstuli';
$labels['checkallfolders'] = 'Meklēt visās mapēs jaunās vēstules';
@@ -442,14 +461,14 @@ $labels['asattachment'] = 'kā pielikumu';
$labels['replyallmode'] = '[Atbildēt visiem] pogas noklusētā darbība';
$labels['replyalldefault'] = 'atbildēt visiem';
$labels['replyalllist'] = 'atbildēt tikai sarakstei (ja tāda tiek atrasta)';
-$labels['folder'] = 'Mapi';
-$labels['folders'] = 'Mapes';
-$labels['foldername'] = 'Mapes nosaukums';
-$labels['subscribed'] = 'Abonēta';
+$labels['folder'] = 'Mapi';
+$labels['folders'] = 'Mapes';
+$labels['foldername'] = 'Mapes nosaukums';
+$labels['subscribed'] = 'Abonēta';
$labels['messagecount'] = 'Vēstules';
-$labels['create'] = 'Izveidot';
-$labels['createfolder'] = 'Izveidot jaunu mapi';
-$labels['managefolders'] = 'Rediģēt mapes';
+$labels['create'] = 'Izveidot';
+$labels['createfolder'] = 'Izveidot jaunu mapi';
+$labels['managefolders'] = 'Rediģēt mapes';
$labels['specialfolders'] = 'Īpašās mapes';
$labels['properties'] = 'Īpašības';
$labels['folderproperties'] = 'Mapes īpašības';
@@ -459,9 +478,9 @@ $labels['info'] = 'Informācija';
$labels['getfoldersize'] = 'Uzklikšķiniet, lai uzzinātu mapes izmēru';
$labels['changesubscription'] = 'Uzklikšķiniet, lai mainītu abonēšanas iestatījumus';
$labels['foldertype'] = 'Mapes tips';
-$labels['personalfolder'] = 'Privāta mape';
-$labels['otherfolder'] = 'Cita lietotāja mape';
-$labels['sharedfolder'] = 'Publiska mape';
+$labels['personalfolder'] = 'Privāta mape';
+$labels['otherfolder'] = 'Cita lietotāja mape';
+$labels['sharedfolder'] = 'Publiska mape';
$labels['sortby'] = 'Kārtot pēc';
$labels['sortasc'] = 'Kārtot augošā secībā';
$labels['sortdesc'] = 'Kārtot dilstošā secībā';
@@ -494,4 +513,15 @@ $labels['vietnamese'] = 'Vjetnamiešu';
$labels['japanese'] = 'Japāņu';
$labels['korean'] = 'Korejiešu';
$labels['chinese'] = 'Ķīniešu';
+$labels['arialabelactivetask'] = 'Aktīvā darbība';
+$labels['arialabelmailpreviewframe'] = 'Ziņojuma priekšskats';
+$labels['arialabelforwardingoptions'] = 'Pārsūtīšanas iestatījumi';
+$labels['arialabelreplyalloptions'] = 'Atbildēt-visiem iestatījumi';
+$labels['arialabelmoremessageactions'] = 'Citas darbības ar vēstulēm';
+$labels['arialabelmarkmessagesas'] = 'Atzīmēt norādītās vēstules kā ...';
+$labels['arialabelattachmentuploadform'] = 'Pielikuma augšupielādes forma';
+$labels['arialabelattachmentpreview'] = 'Pielikuma priekšskats';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/lv_LV/messages.inc b/program/localization/lv_LV/messages.inc
index 6f1622c16..91290df71 100644
--- a/program/localization/lv_LV/messages.inc
+++ b/program/localization/lv_LV/messages.inc
@@ -22,7 +22,9 @@ $messages['sessionerror'] = 'Jūsu sessija ir beigusies.';
$messages['storageerror'] = 'Neizdevās pieslēgties IMAP serverim';
$messages['servererror'] = 'Servera kļūda!';
$messages['servererrormsg'] = 'Servera kļūda: $msg';
+$messages['connerror'] = 'Savienojuma kļūda - nav iespējams pieslēgties serverim!';
$messages['dberror'] = 'Datubāzes kļūda!';
+$messages['windowopenerror'] = 'Izlēcošais logs tika bloķēts!';
$messages['requesttimedout'] = 'Pieprasījumam iestājās noilgums';
$messages['errorreadonly'] = 'Neizdevās veikt darbību: mape ir tikai lasāma (read only)';
$messages['errornoperm'] = 'Neizdevās veikt darbību: piekļuve liegta';
@@ -32,6 +34,8 @@ $messages['invalidrequest'] = 'Nederīgs pieprasījums! Dati netika saglabāti .
$messages['invalidhost'] = 'Nederīgs servera nosaukums';
$messages['nomessagesfound'] = 'Šajā pastkastē nav vēstuļu';
$messages['loggedout'] = 'Jūs esat veiksmīgi atslēdzies no sistēmas. Uz redzēšanos!';
+$messages['mailboxempty'] = 'Pastkaste ir tukša';
+$messages['nomessages'] = 'Nav nevienas vēstules';
$messages['refreshing'] = 'Atjauno...';
$messages['loading'] = 'Notiek ielāde...';
$messages['uploading'] = 'Augšupielāde failu...';
@@ -90,6 +94,7 @@ $messages['contactsearchsuccessful'] = 'Atrasti $nr kontakti';
$messages['searchnomatch'] = 'Meklējot nekas netika atrasts';
$messages['searching'] = 'Meklē...';
$messages['checking'] = 'Pārbauda...';
+$messages['stillsearching'] = 'Joprojām meklē ...';
$messages['nospellerrors'] = 'Pareizrakstības kļūdas netika atrastas';
$messages['folderdeleted'] = 'Mape veiksmīgi izdzēsta';
$messages['foldersubscribed'] = 'Mape veiksmīgi pieslēgta.';
@@ -133,7 +138,7 @@ $messages['importmessagesuccess'] = 'Veiksmīgi ieimportētas $nr vēstules';
$messages['importmessageerror'] = 'Importēšanas kļūda! Augšupielādētā datne satur nekorektus datus';
$messages['opnotpermitted'] = 'Darbība nav atļauta!';
$messages['nofromaddress'] = 'Izvēlētajai identitātei nav norādīta e-pasta adrese.';
-$messages['editorwarning'] = 'Pārslēdzoties uz vienkāršotu teksta redaktoru, tiks pazaudēts esošais teksta formatējums. Vai tiešām vēlaties turpināt?';
+$messages['editorwarning'] = 'Pārslēdzot redaktora veidus var tikt pazaudēts teksta formatējums. Vai turpināt?';
$messages['httpreceivedencrypterror'] = 'Notika kritiska kļūme. Lūdzu nekavējoties sazinieties ar Jūsu administratoru. <b>Jūsu vēstuli nosūtīt nav iespējams.</b>';
$messages['smtpconnerror'] = 'SMTP kļūme ($code): Neizdevās pieslēgties serverim';
$messages['smtpautherror'] = 'SMTP kļūda ($code): Neizdevās autorizēties.';
diff --git a/program/localization/mk_MK/labels.inc b/program/localization/mk_MK/labels.inc
index 2c6c422b3..4d9992191 100644
--- a/program/localization/mk_MK/labels.inc
+++ b/program/localization/mk_MK/labels.inc
@@ -165,13 +165,11 @@ $labels['name'] = 'Име за приказ';
$labels['firstname'] = 'Име';
$labels['surname'] = 'Презиме';
$labels['email'] = 'Е-пошта';
-$labels['addcontact'] = 'Додај нов контакт';
$labels['editcontact'] = 'Уреди контакт';
$labels['edit'] = 'Уреди';
$labels['cancel'] = 'Откажи';
$labels['save'] = 'Зачувај';
$labels['delete'] = 'Избриши';
-$labels['newcontact'] = 'Додај ново име';
$labels['deletecontact'] = 'Избриши ги следните имиња';
$labels['composeto'] = 'Напиши порака за';
$labels['contactsfromto'] = 'Имиња од $from до $to од $count';
@@ -194,10 +192,6 @@ $labels['preferences'] = 'Нагодувања';
$labels['userpreferences'] = 'Кориснички нагодувања';
$labels['editpreferences'] = 'Промени кориснички нагодувања';
$labels['identities'] = 'Идентитети';
-$labels['manageidentities'] = 'Организирај ги идентитетите за овој корисник';
-$labels['newidentity'] = 'Нов идентитет';
-$labels['newitem'] = 'Нов објект';
-$labels['edititem'] = 'Промени објект';
$labels['preferhtml'] = 'Прикажи во HTML';
$labels['htmlmessage'] = 'HTML писмо';
$labels['prettydate'] = 'Убави датуми';
@@ -237,6 +231,7 @@ $labels['mimeparamfolding'] = 'Име на прикачените податот
$labels['2231folding'] = 'Полн RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Полн RFC 2047 (друго)';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'Напредни можности';
$labels['focusonnewmessage'] = 'Фокусирај го прозорецот на прелистувачот на новото писмо';
$labels['checkallfolders'] = 'Провери ги сите папки за нови писма';
@@ -254,14 +249,14 @@ $labels['autoaddsignature'] = 'Автоматски додавај потпис'
$labels['newmessageonly'] = 'само нови писма';
$labels['replyandforwardonly'] = 'само одгорови и препраќања';
$labels['insertsignature'] = 'Вметни потпис';
-$labels['folder'] = 'Папка';
-$labels['folders'] = 'Папки';
-$labels['foldername'] = 'Име на папката';
-$labels['subscribed'] = 'Претплатен';
+$labels['folder'] = 'Папка';
+$labels['folders'] = 'Папки';
+$labels['foldername'] = 'Име на папката';
+$labels['subscribed'] = 'Претплатен';
$labels['messagecount'] = 'Пораки';
-$labels['create'] = 'Создај';
-$labels['createfolder'] = 'Создај нова папка';
-$labels['managefolders'] = 'Организирање на папки';
+$labels['create'] = 'Создај';
+$labels['createfolder'] = 'Создај нова папка';
+$labels['managefolders'] = 'Организирање на папки';
$labels['specialfolders'] = 'Специјални папки';
$labels['sortby'] = 'Сортирај по';
$labels['sortasc'] = 'Сортирај нагорно';
@@ -270,4 +265,7 @@ $labels['B'] = 'Б';
$labels['KB'] = 'КБ';
$labels['MB'] = 'МБ';
$labels['GB'] = 'ГБ';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/mk_MK/messages.inc b/program/localization/mk_MK/messages.inc
index c8e29dfe9..6476efbcc 100644
--- a/program/localization/mk_MK/messages.inc
+++ b/program/localization/mk_MK/messages.inc
@@ -85,7 +85,6 @@ $messages['importwait'] = 'Убезувам,, почекајте...';
$messages['importconfirm'] = '<b>Успешно се увезени $inserted имиња, $skipped веќе постојат и се прескокнати</b>:<p><em>$names</em></p>';
$messages['opnotpermitted'] = 'Операцијата не е дозволена';
$messages['nofromaddress'] = 'Не е внесена е-пошта во одберениот идентитет';
-$messages['editorwarning'] = 'Префрлањето на уредникот на обичен текст ќе резултира со губење на целото форматирање на текстот. Дали сакате да продолжите?';
$messages['httpreceivedencrypterror'] = 'Се појави фатална конфигурациска грешка. Веднаш контактирајте го администраторот. <b>Вашето писмо не мож.</b>';
$messages['smtpconnerror'] = 'SMTP грешка ($code): Не успеав да се поврзам со серверот';
$messages['smtpautherror'] = 'SMTP грешка: Не успееа потврдувањето';
diff --git a/program/localization/ml_IN/labels.inc b/program/localization/ml_IN/labels.inc
index 395893afb..2487ed0b3 100644
--- a/program/localization/ml_IN/labels.inc
+++ b/program/localization/ml_IN/labels.inc
@@ -237,6 +237,7 @@ $labels['2231folding'] = 'Full RFC 2231 (തണ്ടര്‍ബേട് )';
$labels['miscfolding'] = 'Full RFC 2231 ( മൈക്രൊസൊഫ്റ്റ് ഔട്ട്ലൂക്കു് )';
$labels['2047folding'] = 'Full RFC 2047 (മറ്റുള്ളവ)';
$labels['force7bit'] = '8-bit അക്ഷരങ്ങള്‍ക്കു "MIME encoding" ഉപയോഗിക്കുക';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'വിപുലീക്രിതമായ ക്രമീകരണങ്ങള്‍';
$labels['defaultfont'] = 'HTML സന്ദേശത്തിന്റെ തനതായ ലിപി';
$labels['section'] = 'വിഭാഗം';
@@ -245,12 +246,12 @@ $labels['newmessageonly'] = 'പുതിയ സന്ദേശം മാത്
$labels['afternseconds'] = '$n നിമിഷങ്ങള്‍ കഴിഞ്ഞു്';
$labels['spellcheckignorenums'] = 'അക്കങ്ങള്‍ ഉള്ള വാക്കുകളെ അവഗണിക്കുക';
$labels['addtodict'] = 'നിഘണ്ടുവില്‍ ചേര്‍ക്കുക';
-$labels['folders'] = 'ഫോള്‍ഡറുകള്‍';
+$labels['folders'] = 'ഫോള്‍ഡറുകള്‍';
$labels['properties'] = 'സവിശേഷതകള്‍';
$labels['info'] = 'വിവരം';
$labels['getfoldersize'] = 'അറയുടെ വലുപ്പം അരിയാന്‍ ക്ലിക്ക് ചെയ്യുക';
-$labels['personalfolder'] = 'സ്വകാര്യ അറ';
-$labels['sharedfolder'] = 'പൊതു - അറ';
+$labels['personalfolder'] = 'സ്വകാര്യ അറ';
+$labels['sharedfolder'] = 'പൊതു - അറ';
$labels['support'] = 'സഹായം തേടുക';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
@@ -272,4 +273,7 @@ $labels['vietnamese'] = 'വിയറ്റ്നാമീസ്';
$labels['japanese'] = 'ജാപ്പനീസ്';
$labels['korean'] = 'കൊറിയന്‍';
$labels['chinese'] = 'ചൈനീസ്‌';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/ml_IN/messages.inc b/program/localization/ml_IN/messages.inc
index 5d6d9f011..9d6b40bd5 100644
--- a/program/localization/ml_IN/messages.inc
+++ b/program/localization/ml_IN/messages.inc
@@ -15,10 +15,24 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-$messages['cookiesdisabled'] = 'തങ്കളുടെ ബ്രവു്സര്‍ കുക്കീസ് സ്വീകരിക്കുന്നതല്ല';
-$messages['servererror'] = 'സര്‍വര്‍ പിഴവ് !';
-$messages['errornoperm'] = 'പ്രവര്‍ത്തനം തടസപ്പെട്ടു . അനുമതി നിഷേധിക്കപെട്ടിരിക്കുന്നു';
-$messages['invalidrequest'] = 'അസാധുവായ അപേക്ഷ ! ഒരു രേഖയും സൂക്ഷിച്ചിട്ടില്ല';
+$messages['errortitle'] = 'ഒരു പിഴവ് സംഭവിച്ചിരിക്കുന്നു';
+$messages['loginfailed'] = 'പ്രവേശനം പരാജയപ്പെട്ടിയിക്കുന്നു';
+$messages['cookiesdisabled'] = 'താങ്കളുടെ ബ്രൗസർ കുക്കികൾ സ്വീകരിക്കുന്നതല്ല';
+$messages['sessionerror'] = 'താങ്കളുടെ സെഷൻ അസാധുവാണ് അല്ലെങ്കിൽ കാലഹരണപ്പെട്ടിരിക്കുന്നു';
+$messages['storageerror'] = 'സൂക്ഷിക്കുന്നതിനുള്ള സെർവറുമായി ബന്ധിപ്പിക്കാൻ സാധിച്ചില്ല';
+$messages['servererror'] = 'സെർവർ പിഴവ്!';
+$messages['servererrormsg'] = 'സെർവർ പിഴവ്: $msg';
+$messages['connerror'] = 'ബന്ധിപ്പിക്കുന്നതിൽ പിഴവ് (സെർവറിൽ എത്താനായില്ല)!';
+$messages['dberror'] = 'ഡാറ്റാബേസ് പിഴവ്';
+$messages['windowopenerror'] = 'പോപ്പപ്പ് ജാലകം തടയപ്പെട്ടിരുന്നു';
+$messages['requesttimedout'] = 'അപേക്ഷയുടെ കാലാവധി കഴിഞ്ഞു';
+$messages['errorreadonly'] = 'പ്രവൃത്തി നടത്താനായില്ല. ഫോൾഡർ വായിക്കാൻ മാത്രമുള്ളതാണ്';
+$messages['errornoperm'] = 'പ്രവര്‍ത്തനം നടത്താനായില്ല . അനുമതി നിഷേധിക്കപെട്ടിരിക്കുന്നു.';
+$messages['erroroverquota'] = 'പ്രവര്‍ത്തനം നടത്താനായില്ല . ഡിസ്കിൽ സ്ഥലമില്ല.';
+$messages['erroroverquotadelete'] = 'ഡിസ്കിൽ സ്ഥലമില്ല. ഒരു സന്ദേശം നീക്കം ചെയ്യാൻ SHIFT+DEL ഉപയോഗിക്കുക';
+$messages['invalidrequest'] = 'അസാധുവായ അപേക്ഷ ! ഒരു ഡാറ്റയും സൂക്ഷിച്ചിട്ടില്ല.';
+$messages['invalidhost'] = 'അസാധുവായ സെർവർ നാമം';
+$messages['nomessagesfound'] = 'ഈ മെയിൽബോക്സിൽ സന്ദേശമൊന്നും കണ്ടെത്തിയില്ല';
$messages['loading'] = 'തുറക്കുന്നു...';
$messages['checkingmail'] = 'പുതിയ സന്ദേസങ്ങള്‍കുവേണ്ടി തിരയുന്നു...';
$messages['sendingmessage'] = 'സന്ദേശം അയക്കുന്നു...';
diff --git a/program/localization/mr_IN/labels.inc b/program/localization/mr_IN/labels.inc
index 9eb878782..4620e0571 100644
--- a/program/localization/mr_IN/labels.inc
+++ b/program/localization/mr_IN/labels.inc
@@ -237,7 +237,6 @@ $labels['typemain'] = 'मुख्य';
$labels['typevideo'] = 'चलचित्र';
$labels['typeassistant'] = 'सहाय्यक';
$labels['typehomepage'] = 'मुख्य पृष्ठ';
-$labels['addcontact'] = 'नवीन पत्ता नोंदवहीत ठेवा';
$labels['editcontact'] = 'नोंदवहीतील पत्ता सुधारा';
$labels['contacts'] = 'संपर्क';
$labels['personalinfo'] = 'वैयक्तिक माहिती';
@@ -248,14 +247,12 @@ $labels['delete'] = 'काढून टाका';
$labels['rename'] = 'दूसरे नाव द्या';
$labels['addphoto'] = 'समावेश करा';
$labels['replacephoto'] = 'बदला';
-$labels['newcontact'] = 'नोंदवहीत नवीन संपर्क लिहिण्यासाठी';
$labels['deletecontact'] = 'खूण केलेले सर्व संपर्काचे पत्ते काढून टाका';
$labels['composeto'] = 'साठी नवीन संदेश तयार करा';
$labels['contactsfromto'] = '$from पासून ते $to पर्यंत $count पैकी';
$labels['print'] = 'छापा';
$labels['export'] = 'निर्यात करा';
$labels['exportvcards'] = 'व्ही कार्ड स्वरुपात पत्ते निर्यात करा';
-$labels['newcontactgroup'] = 'नवीन पत्‍त्‍यांचा गट बनवा';
$labels['groupdelete'] = 'गट नष्ट करा';
$labels['previouspage'] = 'आधिचा संच दाखवा';
$labels['firstpage'] = 'पहिला संच दाखवा';
@@ -277,10 +274,6 @@ $labels['preferences'] = 'तुमची पसंती';
$labels['userpreferences'] = 'वापरकर्त्याची पसंती';
$labels['editpreferences'] = 'वापरकर्त्याची पसंती सुधारा';
$labels['identities'] = 'ओळख';
-$labels['manageidentities'] = 'या खात्यासाठी ओळखींचे नियोजन करा';
-$labels['newidentity'] = 'नवीन ओळख';
-$labels['newitem'] = 'नवीन प्रकार';
-$labels['edititem'] = 'प्रकार सुधारा';
$labels['preferhtml'] = 'एच टी एम एल दाखवा';
$labels['defaultcharset'] = 'नेहमीचा अक्षर संच';
$labels['htmlmessage'] = 'एच टी एम एल संदेश';
@@ -324,6 +317,7 @@ $labels['2231folding'] = 'संपूर्ण आर एफ सी 2231(थं
$labels['miscfolding'] = 'आर एफ सी 2047/2231 (मायक्रोसॉफ़्ट आऊटलूक)';
$labels['2047folding'] = 'संपूर्ण आर एफ सी 2047(ईतर)';
$labels['force7bit'] = '8 अक्षरी एमआयएमई संक्षिप्‍तरूप वापरा';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'अधिक पर्याय';
$labels['focusonnewmessage'] = 'ब्राऊझर खिडकी नवीन संदेशावर केंद्रित करा';
$labels['checkallfolders'] = 'सर्व फोल्डरमधे नवीन संदेश शोधा';
@@ -345,14 +339,14 @@ $labels['previewpanemarkread'] = 'प्रदर्शित संदेश
$labels['afternseconds'] = '$n क्षणानंतर';
$labels['reqmdn'] = 'नेहमी पोचपावतीची विनंती करा';
$labels['reqdsn'] = 'नेहमी पोचपावती स्थिती निर्देशाची विनंती करा';
-$labels['folder'] = 'फोल्डर';
-$labels['folders'] = 'फोल्डर्स';
-$labels['foldername'] = 'फोल्डरचे नाव';
-$labels['subscribed'] = 'वर्गणिदार होणे';
+$labels['folder'] = 'फोल्डर';
+$labels['folders'] = 'फोल्डर्स';
+$labels['foldername'] = 'फोल्डरचे नाव';
+$labels['subscribed'] = 'वर्गणिदार होणे';
$labels['messagecount'] = 'संदेश';
-$labels['create'] = 'तयार करा';
-$labels['createfolder'] = 'नवीन फोल्डर तयार करा';
-$labels['managefolders'] = 'फोल्डर्सचे नियोजन करा';
+$labels['create'] = 'तयार करा';
+$labels['createfolder'] = 'नवीन फोल्डर तयार करा';
+$labels['managefolders'] = 'फोल्डर्सचे नियोजन करा';
$labels['specialfolders'] = 'विषेश फोल्डर';
$labels['sortby'] = 'ने वर्गवारी करा';
$labels['sortasc'] = 'चढत्या क्रमाने';
@@ -379,4 +373,7 @@ $labels['vietnamese'] = 'व्हिएतनामी';
$labels['japanese'] = 'जपानी';
$labels['korean'] = 'कोरियन';
$labels['chinese'] = 'चिनी';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/mr_IN/messages.inc b/program/localization/mr_IN/messages.inc
index 2685f4826..5793c24b5 100644
--- a/program/localization/mr_IN/messages.inc
+++ b/program/localization/mr_IN/messages.inc
@@ -99,7 +99,6 @@ $messages['importwait'] = 'आयात करत आहे, कृपया व
$messages['importconfirm'] = '<b>$inserted पत्ते यशस्वीरित्या आयात केल, $skipped आधिच असलेल्या नोंदी केल्या नाहीत</b>:<p><em>$names</em></p>';
$messages['opnotpermitted'] = 'ही क्रिया करण्यास परवानगी नाही.';
$messages['nofromaddress'] = 'निवडलेल्या खात्यात इमेल पत्ता दिलेला नाही.';
-$messages['editorwarning'] = 'टेक्स्ट संपादन निवडल्यास संदेशाचे दृष्य स्वरुप बदलून जाईल. तुम्हाला असेच करायचे आहे ना?';
$messages['httpreceivedencrypterror'] = 'हानीकारक चूक झाली. व्‍यवस्‍थापकाशी तात्‍काळ संपर्क साधा. <b> तुमचा संदेश पाठवला नाही </b>';
$messages['smtpconnerror'] = 'SMTP चूक ($code): सर्व्‍हरशी संपर्क साधता येत नाही';
$messages['smtpautherror'] = 'SMTP चूक ($code): ओळख पटवता येत नाही';
diff --git a/program/localization/ms_MY/labels.inc b/program/localization/ms_MY/labels.inc
index 13d9d89fc..61ad47f42 100644
--- a/program/localization/ms_MY/labels.inc
+++ b/program/localization/ms_MY/labels.inc
@@ -215,13 +215,11 @@ $labels['name'] = 'Nama paparan';
$labels['firstname'] = 'Nama pertama';
$labels['surname'] = 'Nama akhir';
$labels['email'] = 'E-Mel';
-$labels['addcontact'] = 'Tambah kontek baru';
$labels['editcontact'] = 'Ubahsuai Kontek';
$labels['edit'] = 'Sunting';
$labels['cancel'] = 'Batal';
$labels['save'] = 'Simpan';
$labels['delete'] = 'Padam';
-$labels['newcontact'] = 'Cipta kad kontek baru';
$labels['deletecontact'] = 'Hapus kontek yang dipilih';
$labels['composeto'] = 'Karang mel kepada';
$labels['contactsfromto'] = 'Kontek $from ke $to dari $count';
@@ -238,10 +236,6 @@ $labels['preferences'] = 'Keutamaan';
$labels['userpreferences'] = 'Keutamaan pengguna';
$labels['editpreferences'] = 'Sunting keutamaan pengguna';
$labels['identities'] = 'Identiti';
-$labels['manageidentities'] = 'Urus identiti bagi akaun ini';
-$labels['newidentity'] = 'Identiti baru';
-$labels['newitem'] = 'Butiran baru';
-$labels['edititem'] = 'Ubahsuai butiran';
$labels['preferhtml'] = 'Papar HTML';
$labels['htmlmessage'] = 'Mesej HTML';
$labels['prettydate'] = 'Tarikh-tarikh cantik';
@@ -267,15 +261,19 @@ $labels['readwhendeleted'] = 'Tanda mesej sebagai dibaca ketika hapus';
$labels['flagfordeletion'] = 'Tanda mesej untuk pembuangan (tidak delete terus)';
$labels['autosavedraft'] = 'Simpan draf dengan automatik';
$labels['never'] = 'tidak pernah';
-$labels['folder'] = 'Kabinet Fail';
-$labels['folders'] = 'Folder';
-$labels['foldername'] = 'Nama Kabinet Fail';
-$labels['subscribed'] = 'Dilanggan';
+$labels['savelocalstorage'] = "";
+$labels['folder'] = 'Kabinet Fail';
+$labels['folders'] = 'Folder';
+$labels['foldername'] = 'Nama Kabinet Fail';
+$labels['subscribed'] = 'Dilanggan';
$labels['messagecount'] = 'Mesej-mesej';
-$labels['create'] = 'Cipta';
-$labels['createfolder'] = 'Cipta kabinet fail baru';
-$labels['managefolders'] = 'Urus kabinet fail';
+$labels['create'] = 'Cipta';
+$labels['createfolder'] = 'Cipta kabinet fail baru';
+$labels['managefolders'] = 'Urus kabinet fail';
$labels['sortby'] = 'Susun dengan';
$labels['sortasc'] = 'Susun menaik';
$labels['sortdesc'] = 'Susun menurun';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/nb_NO/labels.inc b/program/localization/nb_NO/labels.inc
index 4590e516e..8b68f1b30 100644
--- a/program/localization/nb_NO/labels.inc
+++ b/program/localization/nb_NO/labels.inc
@@ -178,6 +178,10 @@ $labels['msgtext'] = 'Hele meldingen';
$labels['body'] = 'Meldingstekst';
$labels['type'] = 'Type';
$labels['namex'] = 'Navn';
+$labels['searchscope'] = 'Omfanget';
+$labels['currentfolder'] = 'Den nåværende mappen';
+$labels['subfolders'] = 'Dette og undermappene';
+$labels['allfolders'] = 'Alle mapper';
$labels['openinextwin'] = 'Åpne i nytt vindu';
$labels['emlsave'] = 'Last ned (.eml)';
$labels['changeformattext'] = 'Vis i ren tekst';
@@ -203,9 +207,8 @@ $labels['restoremessage'] = 'Gjenopprett melding?';
$labels['responses'] = 'Svar';
$labels['insertresponse'] = 'Sett inn et svar';
$labels['manageresponses'] = 'Rediger svar';
-$labels['savenewresponse'] = 'Lagre nytt svar';
-$labels['editresponses'] = 'Rediger svar';
$labels['editresponse'] = 'Rediger svar';
+$labels['editresponses'] = 'Rediger svar';
$labels['responsename'] = 'Navn';
$labels['responsetext'] = 'Svar tekst';
$labels['attach'] = 'Legg ved';
@@ -270,6 +273,7 @@ $labels['assistant'] = 'Assistent';
$labels['spouse'] = 'Ektefelle';
$labels['allfields'] = 'Alle felter';
$labels['search'] = 'Søk';
+$labels['searchfor'] = 'Søk for "$q"';
$labels['advsearch'] = 'Avansert søk';
$labels['advanced'] = 'Avansert';
$labels['other'] = 'Annet';
@@ -288,7 +292,6 @@ $labels['typehomepage'] = 'Hjemmeside';
$labels['typeblog'] = 'Blogg';
$labels['typeprofile'] = 'Profil';
$labels['addfield'] = 'Legg til felt ...';
-$labels['addcontact'] = 'Legg til ny kontakt';
$labels['editcontact'] = 'Rediger kontakt';
$labels['contacts'] = 'Kontakter';
$labels['contactproperties'] = 'Egenskaper';
@@ -301,7 +304,6 @@ $labels['rename'] = 'Gi nytt navn';
$labels['addphoto'] = 'Legg til';
$labels['replacephoto'] = 'Erstatt';
$labels['uploadphoto'] = 'Last opp bilde';
-$labels['newcontact'] = 'Opprett ny kontakt';
$labels['deletecontact'] = 'Slett valgte kontakter';
$labels['composeto'] = 'Skriv e-post til';
$labels['contactsfromto'] = 'Kontakter $from til $to av $count';
@@ -310,7 +312,6 @@ $labels['export'] = 'Eksporter';
$labels['exportall'] = 'Eksporter alle';
$labels['exportsel'] = 'Eksporter valgte';
$labels['exportvcards'] = 'Eksporter kontakter i vCard-format';
-$labels['newcontactgroup'] = 'Opprett ny kontaktgruppe';
$labels['grouprename'] = 'Endre navn på gruppe';
$labels['groupdelete'] = 'Slett gruppe';
$labels['groupremoveselected'] = 'Fjern valgte kontakter fra gruppe';
@@ -340,10 +341,6 @@ $labels['preferences'] = 'Oppsett';
$labels['userpreferences'] = 'Brukeroppsett';
$labels['editpreferences'] = 'Rediger brukeroppsett';
$labels['identities'] = 'Identiteter';
-$labels['manageidentities'] = 'Administrer identitetene for denne kontoen';
-$labels['newidentity'] = 'Ny identitet';
-$labels['newitem'] = 'Nytt punkt';
-$labels['edititem'] = 'Rediger punkt';
$labels['preferhtml'] = 'Foretrekk HTML';
$labels['defaultcharset'] = 'Standard tegnsett';
$labels['htmlmessage'] = 'HTML-melding';
@@ -400,6 +397,7 @@ $labels['2231folding'] = 'Fullstendig RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Fullstendig RFC 2047 (andre)';
$labels['force7bit'] = 'Bruk MIME-koding for 8-bit-tegn';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'Avanserte alternativer';
$labels['focusonnewmessage'] = 'Gi nettleservindu fokus ved nye meldinger';
$labels['checkallfolders'] = 'Kontroller alle mapper for nye meldinger';
@@ -442,14 +440,14 @@ $labels['asattachment'] = 'som vedlegg';
$labels['replyallmode'] = 'Standard valg for [Svar alle] knapp';
$labels['replyalldefault'] = 'svar til alle';
$labels['replyalllist'] = 'svar kun til epostliste (hvis funnet)';
-$labels['folder'] = 'Mappe';
-$labels['folders'] = 'Mapper';
-$labels['foldername'] = 'Mappenavn';
-$labels['subscribed'] = 'Abonnere';
+$labels['folder'] = 'Mappe';
+$labels['folders'] = 'Mapper';
+$labels['foldername'] = 'Mappenavn';
+$labels['subscribed'] = 'Abonnere';
$labels['messagecount'] = 'Meldinger';
-$labels['create'] = 'Opprett';
-$labels['createfolder'] = 'Lag ny mappe';
-$labels['managefolders'] = 'Rediger mapper';
+$labels['create'] = 'Opprett';
+$labels['createfolder'] = 'Lag ny mappe';
+$labels['managefolders'] = 'Rediger mapper';
$labels['specialfolders'] = 'Spesielle mapper';
$labels['properties'] = 'Egenskaper';
$labels['folderproperties'] = 'Egenskaper for mappe';
@@ -459,9 +457,9 @@ $labels['info'] = 'Informasjon';
$labels['getfoldersize'] = 'Klikk for å få mappestørrelse';
$labels['changesubscription'] = 'Klikk for å endre abonnement';
$labels['foldertype'] = 'Mappetype';
-$labels['personalfolder'] = 'Privat mappe';
-$labels['otherfolder'] = 'Annen brukers mappe';
-$labels['sharedfolder'] = 'Offentlig mappe';
+$labels['personalfolder'] = 'Privat mappe';
+$labels['otherfolder'] = 'Annen brukers mappe';
+$labels['sharedfolder'] = 'Offentlig mappe';
$labels['sortby'] = 'Sorter etter';
$labels['sortasc'] = 'Eldste først';
$labels['sortdesc'] = 'Nyeste først';
@@ -494,4 +492,7 @@ $labels['vietnamese'] = 'Vietnamesisk';
$labels['japanese'] = 'Japansk';
$labels['korean'] = 'Koreansk';
$labels['chinese'] = 'Kinesisk';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/nb_NO/messages.inc b/program/localization/nb_NO/messages.inc
index c2a489714..47394f374 100644
--- a/program/localization/nb_NO/messages.inc
+++ b/program/localization/nb_NO/messages.inc
@@ -135,7 +135,6 @@ $messages['importmessagesuccess'] = 'Kopierte $nr meldinger';
$messages['importmessageerror'] = 'Importeringen var mislykket! Den opplastede filen er ikke en gyldig melding, eller er ikke kompatibel med meldingssystemet.';
$messages['opnotpermitted'] = 'Handling ikke tillatt!';
$messages['nofromaddress'] = 'E-postadresse mangler i valgt identitet';
-$messages['editorwarning'] = 'Ved å bytte format til ren tekst vil all tekstformatering gå tapt. Ønsker du å fortsette?';
$messages['httpreceivedencrypterror'] = 'En uopprettelig feil oppsto. Vennligst kontakt systemansvarlig umiddelbart. <b>Din melding kunne ikke sendes.</b>';
$messages['smtpconnerror'] = 'SMTP-feil ($code): Klarte ikke koble til server';
$messages['smtpautherror'] = 'SMTP-feil ($code): Pålogging feilet';
diff --git a/program/localization/ne_NP/labels.inc b/program/localization/ne_NP/labels.inc
index 97f30201b..d58eede2e 100644
--- a/program/localization/ne_NP/labels.inc
+++ b/program/localization/ne_NP/labels.inc
@@ -156,13 +156,11 @@ $labels['name'] = 'देखाउने नाम';
$labels['firstname'] = 'पहिलो नाम';
$labels['surname'] = 'थर';
$labels['email'] = 'ई-मेल';
-$labels['addcontact'] = 'नया सम्पर्क जोड्नुहोस';
$labels['editcontact'] = 'सम्पर्क सच्याउनुहोस';
$labels['edit'] = 'सच्याउनुहोस';
$labels['cancel'] = 'खारेज गर्नुहोस';
$labels['save'] = 'जोगाउनुहोस';
$labels['delete'] = 'मेटाउनुहोस';
-$labels['newcontact'] = 'नया सम्पर्क कार्ड बनाउनुहोस';
$labels['deletecontact'] = 'छानिएका सम्पर्कहरु मेटाउनुहोस';
$labels['composeto'] = 'मेल लेखी पठाउनुहोस';
$labels['contactsfromto'] = 'सम्पर्कहरु $from बाट $to सम्म, $count मध्यबाट';
@@ -179,10 +177,6 @@ $labels['preferences'] = 'रोजाइहरु';
$labels['userpreferences'] = 'यूसरका रोजाइहरु';
$labels['editpreferences'] = 'यूसरका रोजाइहर सम्पादन गर्नुहोस';
$labels['identities'] = 'पहिचानहरु';
-$labels['manageidentities'] = 'यो खाताको पहिचानहरको व्यवस्था गर्नुहोस';
-$labels['newidentity'] = 'नया पहिचान';
-$labels['newitem'] = 'नया प्रकार';
-$labels['edititem'] = 'प्रकार सम्पादन गर्नुहोस';
$labels['preferhtml'] = 'ऐच-टी-ऐम-ऐल(HTML) देखाउनुहोस';
$labels['htmlmessage'] = 'ऐच-टी-ऐम-ऐल (HTML) रूपका मेल';
$labels['prettydate'] = 'सुन्दर तारिख';
@@ -197,14 +191,18 @@ $labels['htmlsignature'] = 'ऐच-टी-ऐम-एल (HTML) हस्ता
$labels['previewpane'] = 'पूर्व दृष्य देखाउनुहोस';
$labels['autosavedraft'] = 'स्वत ड्राफ्ट जोगाउनुहोस';
$labels['never'] = 'काहिलै नहुने';
-$labels['folder'] = 'फोल्डर';
-$labels['folders'] = 'फोल्डरहरु';
-$labels['foldername'] = 'फोल्डरको नाम';
-$labels['subscribed'] = 'सबस्क्राईब गरियो';
-$labels['create'] = 'बनाउनुहोस';
-$labels['createfolder'] = 'नया फोलडर बनाउनुहोस';
-$labels['managefolders'] = 'फोलडर व्यवस्थित गर्नुहोस';
+$labels['savelocalstorage'] = "";
+$labels['folder'] = 'फोल्डर';
+$labels['folders'] = 'फोल्डरहरु';
+$labels['foldername'] = 'फोल्डरको नाम';
+$labels['subscribed'] = 'सबस्क्राईब गरियो';
+$labels['create'] = 'बनाउनुहोस';
+$labels['createfolder'] = 'नया फोलडर बनाउनुहोस';
+$labels['managefolders'] = 'फोलडर व्यवस्थित गर्नुहोस';
$labels['sortby'] = 'यसरी तय गर्नुहोस';
$labels['sortasc'] = 'पहिलो देखि अन्तिम सम्म तय गर्नुहोस';
$labels['sortdesc'] = 'अन्तिम देखि पहिलो सम्म तय गर्नुहोस';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/nl_BE/labels.inc b/program/localization/nl_BE/labels.inc
index 2e76194e1..4e815ed87 100644
--- a/program/localization/nl_BE/labels.inc
+++ b/program/localization/nl_BE/labels.inc
@@ -221,7 +221,6 @@ $labels['name'] = 'Naam';
$labels['firstname'] = 'Voornaam';
$labels['surname'] = 'Achternaam';
$labels['email'] = 'E-mailadres';
-$labels['addcontact'] = 'Geselecteerde contactpersoon toevoegen';
$labels['editcontact'] = 'Contactpersoon bewerken';
$labels['contacts'] = 'Contactpersonen';
$labels['contactproperties'] = 'Eigenschappen van contactpersoon';
@@ -230,14 +229,12 @@ $labels['cancel'] = 'Annuleren';
$labels['save'] = 'Opslaan';
$labels['delete'] = 'Verwijderen';
$labels['rename'] = 'Hernoemen';
-$labels['newcontact'] = 'Contactpersoon toevoegen';
$labels['deletecontact'] = 'Verwijder geselecteerde contactpersonen';
$labels['composeto'] = 'Mail sturen aan';
$labels['contactsfromto'] = 'Contactpersonen $from - $to van $count';
$labels['print'] = 'Afdrukken';
$labels['export'] = 'Exporteren';
$labels['exportvcards'] = 'Exporteer contactpersonen in vCard formaat';
-$labels['newcontactgroup'] = 'Maak een nieuwe contactgroep';
$labels['previouspage'] = 'Toon vorige';
$labels['firstpage'] = 'Toon eerste';
$labels['nextpage'] = 'Toon volgende';
@@ -255,10 +252,6 @@ $labels['preferences'] = 'Voorkeuren';
$labels['userpreferences'] = 'Gebruikersvoorkeuren';
$labels['editpreferences'] = 'Gebruikersvoorkeuren bewerken';
$labels['identities'] = 'Identiteiten';
-$labels['manageidentities'] = 'Beheer de identiteiten voor deze gebruiker';
-$labels['newidentity'] = 'Nieuwe identiteit';
-$labels['newitem'] = 'Nieuw';
-$labels['edititem'] = 'Bewerken';
$labels['preferhtml'] = 'Gebruik HTML-opmaak';
$labels['defaultcharset'] = 'Standaard karakterset';
$labels['htmlmessage'] = 'HTML-bericht';
@@ -305,6 +298,7 @@ $labels['2231folding'] = 'Volledig RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Volledig RFC 2047 (andere)';
$labels['force7bit'] = 'Gebruik MIME codering voor 8-bit karakters';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'Geavanceerde opties';
$labels['focusonnewmessage'] = 'Focus browserscherm bij nieuw bericht';
$labels['checkallfolders'] = 'Controleer alle mappen op nieuwe berichten';
@@ -327,14 +321,14 @@ $labels['afternseconds'] = 'Na $n seconden';
$labels['reqmdn'] = 'Vraag altijd een ontvangstbevestiging';
$labels['reqdsn'] = 'Vraag altijd een Delivery Status Notification';
$labels['replysamefolder'] = 'Plaats antwoorden in de map van het beantwoorde bericht';
-$labels['folder'] = 'Map';
-$labels['folders'] = 'Mappen';
-$labels['foldername'] = 'Naam';
-$labels['subscribed'] = 'Geabonneerd';
+$labels['folder'] = 'Map';
+$labels['folders'] = 'Mappen';
+$labels['foldername'] = 'Naam';
+$labels['subscribed'] = 'Geabonneerd';
$labels['messagecount'] = 'Berichten';
-$labels['create'] = 'Aanmaken';
-$labels['createfolder'] = 'Nieuwe map aanmaken';
-$labels['managefolders'] = 'Mappen beheren';
+$labels['create'] = 'Aanmaken';
+$labels['createfolder'] = 'Nieuwe map aanmaken';
+$labels['managefolders'] = 'Mappen beheren';
$labels['specialfolders'] = 'Speciale mappen';
$labels['properties'] = 'Eigenschappen';
$labels['folderproperties'] = 'Eigenschappen van map';
@@ -368,4 +362,7 @@ $labels['vietnamese'] = 'Vietnamees';
$labels['japanese'] = 'Japans';
$labels['korean'] = 'Koreaans';
$labels['chinese'] = 'Chinees';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/nl_BE/messages.inc b/program/localization/nl_BE/messages.inc
index ac6c17b6e..e96ce799a 100644
--- a/program/localization/nl_BE/messages.inc
+++ b/program/localization/nl_BE/messages.inc
@@ -119,7 +119,6 @@ $messages['importconfirm'] = '<b>Er zijn $inserted contactpersonen succesvol ge
$messages['importconfirmskipped'] = '<b>$skipped bestaande contactpersonen overgeslagen</b>';
$messages['opnotpermitted'] = 'Deze actie is niet toegestaan!';
$messages['nofromaddress'] = 'De geselecteerde identiteit bevat geen emailadres.';
-$messages['editorwarning'] = 'Door het overschakelen naar de platte tekst editor gaat alle opmaak verloren. Weet u zeker dat u verder wilt gaan?';
$messages['httpreceivedencrypterror'] = 'Er is een fatale fout opgetreden. Neem direct contact op met uw systeembeheerder. <b>Uw bericht kon niet worden verzonden.</b>';
$messages['smtpconnerror'] = 'SMTP Fout ($code): Verbinding met server mislukt.';
$messages['smtpautherror'] = 'SMTP Fout ($code): Authenticatie mislukt.';
diff --git a/program/localization/nl_NL/labels.inc b/program/localization/nl_NL/labels.inc
index e4f4794b6..c37fe30f8 100644
--- a/program/localization/nl_NL/labels.inc
+++ b/program/localization/nl_NL/labels.inc
@@ -131,16 +131,24 @@ $labels['moreactions'] = 'Meer acties...';
$labels['more'] = 'Meer';
$labels['back'] = 'Terug';
$labels['options'] = 'Opties';
+$labels['first'] = 'Eerste';
+$labels['last'] = 'Laatste';
+$labels['previous'] = 'Vorige';
+$labels['next'] = 'Volgende';
$labels['select'] = 'Selecteer';
$labels['all'] = 'Allemaal';
$labels['none'] = 'Geen';
$labels['currpage'] = 'Huidige pagina';
+$labels['isread'] = 'Gelezen';
$labels['unread'] = 'Ongelezen';
$labels['flagged'] = 'Gemarkeerd';
+$labels['unflagged'] = 'Ongemarkeerd';
$labels['unanswered'] = 'Onbeantwoord';
$labels['withattachment'] = 'Met bijlage';
$labels['deleted'] = 'Verwijderd';
$labels['undeleted'] = 'Niet verwijderd';
+$labels['replied'] = 'Beantwoord';
+$labels['forwarded'] = 'Doorgestuurd';
$labels['invert'] = 'Selectie omkeren';
$labels['filter'] = 'Filter';
$labels['list'] = 'Lijst';
@@ -171,6 +179,11 @@ $labels['importmessages'] = 'Berichten importeren';
$labels['quota'] = 'Opslagverbruik';
$labels['unknown'] = 'onbekend';
$labels['unlimited'] = 'onbeperkt';
+$labels['quotatype'] = 'Soort quotum';
+$labels['quotatotal'] = 'Limiet';
+$labels['quotaused'] = 'Gebruikt';
+$labels['quotastorage'] = 'Schijfruimte';
+$labels['quotamessage'] = 'Aantal berichten';
$labels['quicksearch'] = 'Snel zoeken';
$labels['resetsearch'] = 'Wis zoekopdracht';
$labels['searchmod'] = 'Zoekopties';
@@ -178,6 +191,10 @@ $labels['msgtext'] = 'Gehele bericht';
$labels['body'] = 'Inhoud';
$labels['type'] = 'Type';
$labels['namex'] = 'Naam';
+$labels['searchscope'] = 'Zoekbereik';
+$labels['currentfolder'] = 'Huidige map';
+$labels['subfolders'] = 'Deze en onderliggende mappen';
+$labels['allfolders'] = 'Alle mappen';
$labels['openinextwin'] = 'Openen in een nieuw venster';
$labels['emlsave'] = 'Opslaan (.eml)';
$labels['changeformattext'] = 'Weergeven als platte tekst';
@@ -193,6 +210,10 @@ $labels['returnreceipt'] = 'Ontvangstbevestiging';
$labels['dsn'] = 'Afleveringsbericht (DSN)';
$labels['mailreplyintro'] = '$sender schreef op $date:';
$labels['originalmessage'] = 'Oorspronkelijke bericht';
+$labels['selectimage'] = 'Selecteer afbeelding';
+$labels['addimage'] = 'Afbeelding toevoegen';
+$labels['selectmedia'] = 'Video selecteren';
+$labels['addmedia'] = 'Film toevoegen';
$labels['editidents'] = 'Identiteiten bewerken';
$labels['spellcheck'] = 'Spelling';
$labels['checkspelling'] = 'Controleer spelling';
@@ -203,9 +224,10 @@ $labels['restoremessage'] = 'Bericht herstellen?';
$labels['responses'] = 'Reacties';
$labels['insertresponse'] = 'Reactie invoegen';
$labels['manageresponses'] = 'Reacties beheren';
-$labels['savenewresponse'] = 'Nieuwe reactie opslaan';
-$labels['editresponses'] = 'Bewerk reactie';
+$labels['newresponse'] = 'Nieuw antwoord aanmaken';
+$labels['addresponse'] = 'Antwoord toevoegen';
$labels['editresponse'] = 'Bewerk reactie';
+$labels['editresponses'] = 'Bewerk reactie';
$labels['responsename'] = 'Naam';
$labels['responsetext'] = 'Reactie';
$labels['attach'] = 'Bijvoegen';
@@ -214,6 +236,7 @@ $labels['upload'] = 'Toevoegen';
$labels['uploadprogress'] = '$percent ($current van $total)';
$labels['close'] = 'Sluit';
$labels['messageoptions'] = 'Berichtopties...';
+$labels['togglecomposeoptions'] = 'Wissel opties voor opstellen';
$labels['low'] = 'Laag';
$labels['lowest'] = 'Laagste';
$labels['normal'] = 'Normaal';
@@ -270,6 +293,7 @@ $labels['assistant'] = 'Assistent';
$labels['spouse'] = 'Echtgenoot';
$labels['allfields'] = 'Alle velden';
$labels['search'] = 'Zoeken';
+$labels['searchfor'] = 'Zoek naar "$q"';
$labels['advsearch'] = 'Geavanceerd zoeken';
$labels['advanced'] = 'Geavanceerd';
$labels['other'] = 'Anders';
@@ -288,11 +312,13 @@ $labels['typehomepage'] = 'Website';
$labels['typeblog'] = 'Weblog';
$labels['typeprofile'] = 'Profiel';
$labels['addfield'] = 'Veld toevoegen...';
-$labels['addcontact'] = 'Nieuwe contactpersoon toevoegen';
+$labels['addcontact'] = 'Contact toevoegen';
$labels['editcontact'] = 'Contactpersoon wijzigen';
$labels['contacts'] = 'Contactpersonen';
$labels['contactproperties'] = 'Gegevens van contactpersoon';
+$labels['contactnameandorg'] = 'Naam en organisatie';
$labels['personalinfo'] = 'Persoonlijke informatie';
+$labels['contactphoto'] = 'Contactfoto';
$labels['edit'] = 'Wijzig';
$labels['cancel'] = 'Annuleren';
$labels['save'] = 'Opslaan';
@@ -301,7 +327,7 @@ $labels['rename'] = 'Hernoemen';
$labels['addphoto'] = 'Toevoegen';
$labels['replacephoto'] = 'Vervangen';
$labels['uploadphoto'] = 'Foto uploaden';
-$labels['newcontact'] = 'Voeg een nieuwe contactpersoon toe';
+$labels['newcontact'] = 'Nieuw contact aanmaken';
$labels['deletecontact'] = 'Verwijder geselecteerde contactpersonen';
$labels['composeto'] = 'Stuur een bericht naar';
$labels['contactsfromto'] = 'Contactpersonen $from t/m $to van $count';
@@ -310,10 +336,11 @@ $labels['export'] = 'Exporteren';
$labels['exportall'] = 'Alles exporteren';
$labels['exportsel'] = 'Selectie exporteren';
$labels['exportvcards'] = 'Exporteer contactpersonen in vCard-formaat';
-$labels['newcontactgroup'] = 'Maak een nieuwe contactgroep';
+$labels['newgroup'] = 'Nieuwe groep maken';
$labels['grouprename'] = 'Groep hernoemen';
$labels['groupdelete'] = 'Groep verwijderen';
$labels['groupremoveselected'] = 'Verwijder geselecteerde contactpersonen van groep';
+$labels['uponelevel'] = 'Een niveau omhoog';
$labels['previouspage'] = 'Vorige pagina';
$labels['firstpage'] = 'Eerste pagina';
$labels['nextpage'] = 'Volgende pagina';
@@ -340,10 +367,10 @@ $labels['preferences'] = 'Instellingen';
$labels['userpreferences'] = 'Gebruikersinstellingen';
$labels['editpreferences'] = 'Wijzig gebruikersinstellingen';
$labels['identities'] = 'Identiteiten';
-$labels['manageidentities'] = 'Beheer identiteiten voor dit account';
-$labels['newidentity'] = 'Identiteit toevoegen';
-$labels['newitem'] = 'Nieuw item';
-$labels['edititem'] = 'Wijzig item';
+$labels['manageidentities'] = 'Identiteiten beheren';
+$labels['newidentity'] = 'Nieuwe identiteit';
+$labels['addidentity'] = 'Identiteit toevoegen';
+$labels['editidentity'] = 'Identiteit bewerken';
$labels['preferhtml'] = 'Toon berichten in HTML-opmaak';
$labels['defaultcharset'] = 'Standaard tekenset';
$labels['htmlmessage'] = 'HTML-bericht';
@@ -400,7 +427,9 @@ $labels['2231folding'] = 'Volledig RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Volledig RFC 2047 (andere)';
$labels['force7bit'] = 'Gebruik MIME-codering voor 8-bit karakters';
+$labels['savelocalstorage'] = "Opslaan in de lokale opslag van de browser (tijdelijk)";
$labels['advancedoptions'] = 'Geavanceerde opties';
+$labels['toggleadvancedoptions'] = 'Geavanceerde opties inschakelen';
$labels['focusonnewmessage'] = 'Focus browserscherm bij nieuw bericht';
$labels['checkallfolders'] = 'In alle mappen op nieuwe berichten controleren';
$labels['displaynext'] = 'Ga naar volgend bericht na verwijderen of verplaatsen';
@@ -442,14 +471,14 @@ $labels['asattachment'] = 'als bijlage';
$labels['replyallmode'] = 'Standaardactie van [Beantwoord iedereen]-knop';
$labels['replyalldefault'] = 'iedereen beantwoorden';
$labels['replyalllist'] = 'alleen maillijst beantwoorden (indien gevonden)';
-$labels['folder'] = 'Map';
-$labels['folders'] = 'Mappen';
-$labels['foldername'] = 'Mapnaam';
-$labels['subscribed'] = 'Geabonneerd';
+$labels['folder'] = 'Map';
+$labels['folders'] = 'Mappen';
+$labels['foldername'] = 'Mapnaam';
+$labels['subscribed'] = 'Geabonneerd';
$labels['messagecount'] = 'Berichten';
-$labels['create'] = 'Nieuw';
-$labels['createfolder'] = 'Nieuwe map maken';
-$labels['managefolders'] = 'Beheer mappen';
+$labels['create'] = 'Nieuw';
+$labels['createfolder'] = 'Nieuwe map maken';
+$labels['managefolders'] = 'Beheer mappen';
$labels['specialfolders'] = 'Speciale mappen';
$labels['properties'] = 'Eigenschappen';
$labels['folderproperties'] = 'Mapeigenschappen';
@@ -459,9 +488,13 @@ $labels['info'] = 'Informatie';
$labels['getfoldersize'] = 'Klik om de omvang van de map te berekenen';
$labels['changesubscription'] = 'Klik om abonnering te wijzigen';
$labels['foldertype'] = 'Maptype';
-$labels['personalfolder'] = 'Privémap';
-$labels['otherfolder'] = 'Map van andere gebruiker';
-$labels['sharedfolder'] = 'Publieke map';
+$labels['personalfolder'] = 'Privémap';
+$labels['otherfolder'] = 'Map van andere gebruiker';
+$labels['sharedfolder'] = 'Publieke map';
+$labels['findfolders'] = 'Zoek mappen';
+$labels['namespace.personal'] = 'Persoonlijk';
+$labels['namespace.other'] = 'Andere gebruikers';
+$labels['namespace.shared'] = 'Gedeeld';
$labels['sortby'] = 'Sorteer op';
$labels['sortasc'] = 'Sorteer oplopend';
$labels['sortdesc'] = 'Sorteer aflopend';
@@ -494,4 +527,53 @@ $labels['vietnamese'] = 'Vietnamees';
$labels['japanese'] = 'Japans';
$labels['korean'] = 'Koreaans';
$labels['chinese'] = 'Chinees';
+$labels['arialabeltopnav'] = 'Vensterinstellingen';
+$labels['arialabeltasknav'] = 'Applicatietaken';
+$labels['arialabeltoolbar'] = 'Applicatiewerkbalk';
+$labels['arialabelactivetask'] = 'Actieve taak';
+$labels['arialabelmessagessearchfilter'] = 'Filter voor e-maillijst';
+$labels['arialabelmailsearchform'] = 'Formulier voor berichten zoeken';
+$labels['arialabelcontactsearchform'] = 'Zoekformulier voor contacten';
+$labels['arialabelmailquicksearchbox'] = 'Zoekinvoer voor e-mail';
+$labels['arialabelquicksearchbox'] = 'Zoekinvoer';
+$labels['arialabelfoldersearchfilter'] = 'Zoekfilter voor mappenlijst';
+$labels['arialabelfoldersearchform'] = 'Zoekformulier voor mappen';
+$labels['arialabelfolderlist'] = 'Selectie van e-mailmap';
+$labels['arialabelmessagelist'] = 'Lijst van e-mailberichten';
+$labels['arialabelmailpreviewframe'] = 'Berichtweergave';
+$labels['arialabelmailboxmenu'] = 'Menu voor mapacties';
+$labels['arialabellistselectmenu'] = 'Menu voor lijstselectie';
+$labels['arialabelthreadselectmenu'] = 'Menu voor conversatie-overzicht';
+$labels['arialabelmessagelistoptions'] = 'Weergave- en sorteeropties voor berichtenlijst';
+$labels['arialabelmailimportdialog'] = 'Dialoogvenster voor berichten importeren';
+$labels['arialabelmessagenav'] = 'Berichtnavigatie';
+$labels['arialabelmessagebody'] = 'Berichtinhoud';
+$labels['arialabelmessageactions'] = 'Berichtacties';
+$labels['arialabelcontactquicksearch'] = 'Zoekformulier voor contacten';
+$labels['arialabelcontactsearchbox'] = 'Zoekinvoer voor contacten';
+$labels['arialabelmessageheaders'] = 'Berichtheaders';
+$labels['arialabelforwardingoptions'] = 'Opties voor doorsturen';
+$labels['arialabelreplyalloptions'] = 'Opties voor iedereen beantwoorden';
+$labels['arialabelmoremessageactions'] = 'Meer berichtacties';
+$labels['arialabelmarkmessagesas'] = 'Geselecteerde berichten markeren als...';
+$labels['arialabelcomposeoptions'] = 'Opties voor opstellen';
+$labels['arialabelresponsesmenu'] = 'Menu voor standaardreacties';
+$labels['arialabelattachmentuploadform'] = 'Uploadformulier voor bijlagen';
+$labels['arialabelattachmentpreview'] = 'Voorbeeldweergave van bijlagen';
+$labels['ariasummarycomposecontacts'] = 'Lijst van contacten en groepen om als ontvanger te selecteren';
+$labels['arialabelcontactexportoptions'] = 'Opties voor contacten exporteren';
+$labels['arialabelabookgroupoptions'] = 'Adresboek-/groepopties';
+$labels['arialabelpreferencesform'] = 'Formulier voor instellingen';
+$labels['arialabelidentityeditfrom'] = 'Formulier voor identiteit bewerken';
+$labels['arialabelresonseeditfrom'] = 'Formulier voor bewerken antwoord';
+$labels['arialabelsearchterms'] = 'Zoekwoorden';
+$labels['helplistnavigation'] = 'Overzicht met sneltoetsen';
+$labels['helplistkeyboardnavigation'] = "Pijl omhoog/omlaag: Verander actieve rij of selectie.
+Spatiebalk: Selecteer actieve rij.
+Shift + omhoog/omlaag: Selecteer aanvullende rij boven/onder.
+Ctrl + spatiebalk: Voeg actieve rij toe aan selectie of verwijder van selectie.";
+$labels['helplistkeyboardnavmessages'] = "Pijl links/rechts: conversaties in- of uitklappen (alleen in conversatiemodus).
+Enter: Open geselecteerd of actief bericht.
+Delete: Verwijder geselecteerde berichten naar Prullenbak.";
+$labels['helplistkeyboardnavcontacts'] = "Enter: Open geselecteerd of actief contact.";
?>
diff --git a/program/localization/nl_NL/messages.inc b/program/localization/nl_NL/messages.inc
index 2595c2259..1dba3e8cd 100644
--- a/program/localization/nl_NL/messages.inc
+++ b/program/localization/nl_NL/messages.inc
@@ -22,7 +22,9 @@ $messages['sessionerror'] = 'Uw sessie is verlopen of ongeldig.';
$messages['storageerror'] = 'Verbinding met IMAP-server mislukt.';
$messages['servererror'] = 'Serverfout!';
$messages['servererrormsg'] = 'Serverfout: $msg';
+$messages['connerror'] = 'Verbindingsfout! (Kon de server niet bereiken)';
$messages['dberror'] = 'Databasefout!';
+$messages['windowopenerror'] = 'Het popup-venster werd geblokkeerd!';
$messages['requesttimedout'] = 'Verzoek duurde te lang';
$messages['errorreadonly'] = 'De bewerking kan niet uitgevoerd worden. Map is alleen-lezen.';
$messages['errornoperm'] = 'Niet in staat om de bewerking uit te voeren. Toestemming geweigerd.';
@@ -92,6 +94,7 @@ $messages['contactsearchsuccessful'] = '$nr contactpersonen gevonden.';
$messages['searchnomatch'] = 'Zoekopdracht heeft geen resultaten opgeleverd.';
$messages['searching'] = 'Zoeken...';
$messages['checking'] = 'Controleren...';
+$messages['stillsearching'] = 'Nog aan het zoeken...';
$messages['nospellerrors'] = 'Geen spelfouten gevonden.';
$messages['folderdeleted'] = 'Map succesvol verwijderd.';
$messages['foldersubscribed'] = 'Succesvol geabonneerd op map.';
@@ -135,7 +138,7 @@ $messages['importmessagesuccess'] = '$nr berichten succesvol geïmporteerd';
$messages['importmessageerror'] = 'Importeren mislukt! Het verstuurde bestand is geen geldig bericht of mailboxbestand';
$messages['opnotpermitted'] = 'Deze bewerking is niet toegestaan!';
$messages['nofromaddress'] = 'Het e-mailadres ontbreekt in de geselecteerde identiteit.';
-$messages['editorwarning'] = 'Door het overschakelen naar de platte-tekstverwerker gaat alle opmaak verloren. Weet u zeker dat u verder wilt gaan?';
+$messages['editorwarning'] = 'Door te wisselen van type tekstverwerker kan er opmaak verloren gaan. Weet u zeker dat u verder wilt gaan?';
$messages['httpreceivedencrypterror'] = 'Er is een onherstelbare configuratiefout opgetreden. Neem direct contact op met uw systeembeheerder. <b>Uw bericht kon niet worden verzonden.</b>';
$messages['smtpconnerror'] = 'SMTP-fout ($code): Verbinding met server mislukt.';
$messages['smtpautherror'] = 'SMTP-fout ($code): Authenticatie mislukt.';
diff --git a/program/localization/nn_NO/labels.inc b/program/localization/nn_NO/labels.inc
index eae5fc639..7e9006b9a 100644
--- a/program/localization/nn_NO/labels.inc
+++ b/program/localization/nn_NO/labels.inc
@@ -269,7 +269,6 @@ $labels['typehomepage'] = 'Heimeside';
$labels['typeblog'] = 'Blogg';
$labels['typeprofile'] = 'Profil';
$labels['addfield'] = 'Legg til felt...';
-$labels['addcontact'] = 'Legg til ny kontakt';
$labels['editcontact'] = 'Redigere kontakt';
$labels['contacts'] = 'Kontakter';
$labels['contactproperties'] = 'Eigenskapar';
@@ -282,7 +281,6 @@ $labels['rename'] = 'Gi nytt namn';
$labels['addphoto'] = 'Legg til';
$labels['replacephoto'] = 'Erstatt';
$labels['uploadphoto'] = 'Last opp bilete';
-$labels['newcontact'] = 'Opprett nytt kontaktkort';
$labels['deletecontact'] = 'Slett valde kontaktar';
$labels['composeto'] = 'Ny melding til';
$labels['contactsfromto'] = 'Kontaktar $from til $to av $count';
@@ -291,7 +289,6 @@ $labels['export'] = 'Eksport';
$labels['exportall'] = 'Eksporter alle';
$labels['exportsel'] = 'Eksporter valde';
$labels['exportvcards'] = 'Eksporter kontaktar i vCard-format';
-$labels['newcontactgroup'] = 'Lag ny kontaktgruppe';
$labels['grouprename'] = 'Endre namn på gruppe';
$labels['groupdelete'] = 'Slett gruppe';
$labels['groupremoveselected'] = 'Fjern valde kontaktar frå gruppe';
@@ -316,10 +313,6 @@ $labels['preferences'] = 'Innstillingar';
$labels['userpreferences'] = 'Brukarinnstillingar';
$labels['editpreferences'] = 'Redigere brukarinnstillingar';
$labels['identities'] = 'Identitetar';
-$labels['manageidentities'] = 'Administrere identitetar for denne kontoen';
-$labels['newidentity'] = 'Ny identitet';
-$labels['newitem'] = 'Nytt element';
-$labels['edititem'] = 'Redigere element';
$labels['preferhtml'] = 'Føretrekk HTML';
$labels['defaultcharset'] = 'Standard karaktersett (charset)';
$labels['htmlmessage'] = 'HTML-melding';
@@ -375,6 +368,7 @@ $labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (other)';
$labels['force7bit'] = 'Bruk MIME-enkoding for 8-bit characterer (æøå og slik)';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'Avanserte val';
$labels['focusonnewmessage'] = 'Fokuser nettlesarvindauge på ny epost';
$labels['checkallfolders'] = 'Sjekk alle mappar for nye epostar';
@@ -413,14 +407,14 @@ $labels['mailtoprotohandler'] = 'Registrer protokollhandsaming for mailto-lenkje
$labels['forwardmode'] = 'Meldingar vidaresendast';
$labels['inline'] = 'i teksten';
$labels['asattachment'] = 'som vedlegg';
-$labels['folder'] = 'Mappe';
-$labels['folders'] = 'Mapper';
-$labels['foldername'] = 'Mappenamn';
-$labels['subscribed'] = 'Abonnert';
+$labels['folder'] = 'Mappe';
+$labels['folders'] = 'Mapper';
+$labels['foldername'] = 'Mappenamn';
+$labels['subscribed'] = 'Abonnert';
$labels['messagecount'] = 'Meldingar';
-$labels['create'] = 'Opprette';
-$labels['createfolder'] = 'Opprett ny mappe';
-$labels['managefolders'] = 'Mappehandsaming';
+$labels['create'] = 'Opprette';
+$labels['createfolder'] = 'Opprett ny mappe';
+$labels['managefolders'] = 'Mappehandsaming';
$labels['specialfolders'] = 'Spesialmapper';
$labels['properties'] = 'Eigenskapar';
$labels['folderproperties'] = 'Eigenskapar for mappe';
@@ -430,9 +424,9 @@ $labels['info'] = 'Informasjon';
$labels['getfoldersize'] = 'Klikk for å få mappestørrelse';
$labels['changesubscription'] = 'Klikk for å endre abonnement';
$labels['foldertype'] = 'Mappetype';
-$labels['personalfolder'] = 'Privat mappe';
-$labels['otherfolder'] = 'Annan brukar si mappe';
-$labels['sharedfolder'] = 'Offentleg mappe';
+$labels['personalfolder'] = 'Privat mappe';
+$labels['otherfolder'] = 'Annan brukar si mappe';
+$labels['sharedfolder'] = 'Offentleg mappe';
$labels['sortby'] = 'Sorter etter';
$labels['sortasc'] = 'Sorter stigande';
$labels['sortdesc'] = 'Sorter søkkjande';
@@ -465,4 +459,7 @@ $labels['vietnamese'] = 'Vietnamesisk';
$labels['japanese'] = 'Japansk';
$labels['korean'] = 'Koreansk';
$labels['chinese'] = 'Kinesisk';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/nn_NO/messages.inc b/program/localization/nn_NO/messages.inc
index 867c73887..df8f01abc 100644
--- a/program/localization/nn_NO/messages.inc
+++ b/program/localization/nn_NO/messages.inc
@@ -119,7 +119,6 @@ $messages['importconfirm'] = '<b>Importerte $inserted kontaktar</b>';
$messages['importconfirmskipped'] = '<b>Hoppa over $skipped oppføringar som fanst frå før</b>';
$messages['opnotpermitted'] = 'Ulovleg operasjon.';
$messages['nofromaddress'] = 'Manglar e-postadresse i denne identiteten.';
-$messages['editorwarning'] = 'Å byta til rein tekst vil fjerna all tekstformateringa. Vil du halda fram?';
$messages['httpreceivedencrypterror'] = 'En uopprettelig feil oppstod knytta til innstillingane. Kontakt systemansvarleg umiddelbart. <b>Meldinga kunne ikkje sendast.</b>';
$messages['smtpconnerror'] = 'SMTP-feil ($code): Tilkopling til tenar feila.';
$messages['smtpautherror'] = 'SMTP-feil ($code): Autentisering feila.';
diff --git a/program/localization/pl_PL/labels.inc b/program/localization/pl_PL/labels.inc
index 741306b5c..d57073b9f 100644
--- a/program/localization/pl_PL/labels.inc
+++ b/program/localization/pl_PL/labels.inc
@@ -131,16 +131,24 @@ $labels['moreactions'] = 'Więcej akcji...';
$labels['more'] = 'Więcej';
$labels['back'] = 'Wstecz';
$labels['options'] = 'Ustawienia';
+$labels['first'] = 'Pierwsza';
+$labels['last'] = 'Ostatnia';
+$labels['previous'] = 'Poprzednia';
+$labels['next'] = 'Następna';
$labels['select'] = 'Zaznacz';
$labels['all'] = 'Wszystkie';
$labels['none'] = 'Brak';
$labels['currpage'] = 'Bieżąca strona';
+$labels['isread'] = 'Przeczytana';
$labels['unread'] = 'Nieprzeczytane';
$labels['flagged'] = 'Oznaczone';
+$labels['unflagged'] = 'Nie oznaczona';
$labels['unanswered'] = 'Bez odpowiedzi';
$labels['withattachment'] = 'Z załącznikiem';
$labels['deleted'] = 'Usunięte';
$labels['undeleted'] = 'Nieusunięte';
+$labels['replied'] = 'Odpowiedziana';
+$labels['forwarded'] = 'Przekazana';
$labels['invert'] = 'Odwróć';
$labels['filter'] = 'Filtr';
$labels['list'] = 'Lista';
@@ -171,6 +179,11 @@ $labels['importmessages'] = 'Import wiadomości';
$labels['quota'] = 'Użyte miejsce';
$labels['unknown'] = 'nieznane';
$labels['unlimited'] = 'bez limitu';
+$labels['quotatype'] = 'Typ limitu';
+$labels['quotatotal'] = 'Ograniczenie';
+$labels['quotaused'] = 'Używany';
+$labels['quotastorage'] = 'Przestrzeń dyskowa';
+$labels['quotamessage'] = 'Ilość wiadomości';
$labels['quicksearch'] = 'Szybkie wyszukiwanie';
$labels['resetsearch'] = 'Wyczyść filtr';
$labels['searchmod'] = 'Parametry wyszukiwania';
@@ -178,6 +191,10 @@ $labels['msgtext'] = 'Cała wiadomość';
$labels['body'] = 'Treść';
$labels['type'] = 'Typ';
$labels['namex'] = 'Nazwa';
+$labels['searchscope'] = 'Zakres';
+$labels['currentfolder'] = 'Bieżący folder';
+$labels['subfolders'] = 'Ten in podfoldery';
+$labels['allfolders'] = 'Wszystkie foldery';
$labels['openinextwin'] = 'Otwórz w nowym oknie';
$labels['emlsave'] = 'Pobierz (.eml)';
$labels['changeformattext'] = 'Wyświetl w formacie tekstowym';
@@ -193,6 +210,10 @@ $labels['returnreceipt'] = 'Potwierdzenie odbioru';
$labels['dsn'] = 'Status dostarczenia (DSN)';
$labels['mailreplyintro'] = 'W dniu $date, $sender napisał(a):';
$labels['originalmessage'] = 'Wiadomość oryginalna';
+$labels['selectimage'] = 'Wybierz obraz';
+$labels['addimage'] = 'Dodaj obraz';
+$labels['selectmedia'] = 'Wybierz film';
+$labels['addmedia'] = 'Dodaj film';
$labels['editidents'] = 'Edytuj tożsamości';
$labels['spellcheck'] = 'Pisownia';
$labels['checkspelling'] = 'Sprawdź pisownię';
@@ -203,9 +224,10 @@ $labels['restoremessage'] = 'Przyrócić wiadomość?';
$labels['responses'] = 'Odpowiedzi';
$labels['insertresponse'] = 'Wstaw odpowiedź';
$labels['manageresponses'] = 'Zarządzaj odpowiedziami';
-$labels['savenewresponse'] = 'Zapisz nową odpowiedź';
-$labels['editresponses'] = 'Edytuj odpowiedzi';
+$labels['newresponse'] = 'Utwórz nową odpowiedź';
+$labels['addresponse'] = 'Dodaj odpowiedź';
$labels['editresponse'] = 'Edytuj odpowiedź';
+$labels['editresponses'] = 'Edytuj odpowiedzi';
$labels['responsename'] = 'Nazwa';
$labels['responsetext'] = 'Tekst odpowiedzi';
$labels['attach'] = 'Załącz';
@@ -214,6 +236,7 @@ $labels['upload'] = 'Prześlij';
$labels['uploadprogress'] = '$percent ($current z $total)';
$labels['close'] = 'Zamknij';
$labels['messageoptions'] = 'Opcje wiadomości...';
+$labels['togglecomposeoptions'] = 'Przestaw opcje kompozycji';
$labels['low'] = 'Bardzo niski';
$labels['lowest'] = 'Niski';
$labels['normal'] = 'Normalny';
@@ -270,6 +293,7 @@ $labels['assistant'] = 'Asystent';
$labels['spouse'] = 'Małżonek';
$labels['allfields'] = 'Wszystkie pola';
$labels['search'] = 'Szukaj';
+$labels['searchfor'] = 'Wyszukiwanie frazy "$q"';
$labels['advsearch'] = 'Wyszukiwanie zaawansowane';
$labels['advanced'] = 'Zaawansowane';
$labels['other'] = 'Inne';
@@ -288,11 +312,13 @@ $labels['typehomepage'] = 'Strona domowa';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
$labels['addfield'] = 'Dodaj pole...';
-$labels['addcontact'] = 'Dodaj nowy kontakt do książki adresowej';
+$labels['addcontact'] = 'Dodaj kontakt';
$labels['editcontact'] = 'Edytuj kontakt';
$labels['contacts'] = 'Kontakty';
$labels['contactproperties'] = 'Właściwości';
+$labels['contactnameandorg'] = 'Nazwa i organizacja';
$labels['personalinfo'] = 'Informacje osobiste';
+$labels['contactphoto'] = 'Zdjęcie kontaktu';
$labels['edit'] = 'Edytuj';
$labels['cancel'] = 'Anuluj';
$labels['save'] = 'Zapisz';
@@ -310,10 +336,11 @@ $labels['export'] = 'Eksportuj';
$labels['exportall'] = 'Eksportuj wszystkie';
$labels['exportsel'] = 'Eksportuj zaznaczone';
$labels['exportvcards'] = 'Eksport kontaktów w formacie vCard';
-$labels['newcontactgroup'] = 'Utwórz nową grupę';
+$labels['newgroup'] = 'Utwórz nową grupę';
$labels['grouprename'] = 'Zmień nazwę grupy';
$labels['groupdelete'] = 'Usuń grupę';
$labels['groupremoveselected'] = 'Usuń wybrane kontakty z grupy';
+$labels['uponelevel'] = 'Jeden poziom w górę';
$labels['previouspage'] = 'Poprzednia strona';
$labels['firstpage'] = 'Pierwsza strona';
$labels['nextpage'] = 'Następna strona';
@@ -341,9 +368,9 @@ $labels['userpreferences'] = 'Preferencje użytkownika';
$labels['editpreferences'] = 'Edytuj preferencje';
$labels['identities'] = 'Tożsamości';
$labels['manageidentities'] = 'Zarządzaj tożsamościami';
-$labels['newidentity'] = 'Nowa tożsamość';
-$labels['newitem'] = 'Nowy';
-$labels['edititem'] = 'Edytuj';
+$labels['newidentity'] = 'Utwórz nową tożsamość';
+$labels['addidentity'] = 'Dodaj tożsamość';
+$labels['editidentity'] = 'Edytuj tożsamości';
$labels['preferhtml'] = 'Domyślny HTML';
$labels['defaultcharset'] = 'Domyślny zestaw znaków';
$labels['htmlmessage'] = 'Wiadomość HTML';
@@ -378,7 +405,7 @@ $labels['askuser'] = 'pytaj mnie';
$labels['autosend'] = 'wyślij potwierdzenie';
$labels['autosendknown'] = 'wyślij potwierdzenie tylko do moich kontaktów, pytaj o pozostałe';
$labels['autosendknownignore'] = 'wyślij potwierdzenie tylko do moich kontaktów, pozostałe ignoruj';
-$labels['ignore'] = 'ignoruj';
+$labels['ignore'] = 'Ignoruj';
$labels['readwhendeleted'] = 'Podczas usuwania oznacz wiadomość jako przeczytaną';
$labels['flagfordeletion'] = 'Oznacz wiadomość do usunięcia zamiast ją usuwać';
$labels['skipdeleted'] = 'Ukryj wiadomości oznaczone do usunięcia';
@@ -400,7 +427,9 @@ $labels['2231folding'] = 'RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'RFC 2047 (przestarzałe)';
$labels['force7bit'] = 'Używaj kodowania MIME dla znaków 8-bitowych';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'Opcje zaawansowane';
+$labels['toggleadvancedoptions'] = 'Pokaż/ukryj opcje zaawansowane';
$labels['focusonnewmessage'] = 'Informuj przeglądarkę o nowej wiadomości';
$labels['checkallfolders'] = 'Sprawdzaj czy nadeszły nowe wiadomości we wszystkich folderach';
$labels['displaynext'] = 'Po usunięciu/przeniesieniu wiadomości wyświetl następną';
@@ -442,14 +471,14 @@ $labels['asattachment'] = 'jako załącznik';
$labels['replyallmode'] = 'Domyśla akcja przycisku [Odpowiedz wszystkim]';
$labels['replyalldefault'] = 'odpowiedz wszystkim';
$labels['replyalllist'] = 'odpowiedz tylko do listy mailingowej (jeśli wykryto)';
-$labels['folder'] = 'Folder';
-$labels['folders'] = 'Foldery';
-$labels['foldername'] = 'Nazwa folderu';
-$labels['subscribed'] = 'Zasubskrybowany';
+$labels['folder'] = 'Folder';
+$labels['folders'] = 'Foldery';
+$labels['foldername'] = 'Nazwa folderu';
+$labels['subscribed'] = 'Zasubskrybowany';
$labels['messagecount'] = 'Wiadomości';
-$labels['create'] = 'Utwórz';
-$labels['createfolder'] = 'Utwórz nowy folder';
-$labels['managefolders'] = 'Zarządzaj folderami';
+$labels['create'] = 'Utwórz';
+$labels['createfolder'] = 'Utwórz nowy folder';
+$labels['managefolders'] = 'Zarządzaj folderami';
$labels['specialfolders'] = 'Foldery specjalne';
$labels['properties'] = 'Właściwości';
$labels['folderproperties'] = 'Właściwości folderu';
@@ -459,9 +488,13 @@ $labels['info'] = 'Informacje';
$labels['getfoldersize'] = 'Kliknij aby pobrać rozmiar folderu';
$labels['changesubscription'] = 'Kliknij aby zmienić subskrypcję';
$labels['foldertype'] = 'Typ folderu';
-$labels['personalfolder'] = 'Folder prywatny';
-$labels['otherfolder'] = 'Folder innego użytkownika';
-$labels['sharedfolder'] = 'Folder współdzielony';
+$labels['personalfolder'] = 'Folder prywatny';
+$labels['otherfolder'] = 'Folder innego użytkownika';
+$labels['sharedfolder'] = 'Folder współdzielony';
+$labels['findfolders'] = 'Szukaj folderów';
+$labels['namespace.personal'] = 'Osobiste';
+$labels['namespace.other'] = 'Innych użytkowników';
+$labels['namespace.shared'] = 'Współdzielone';
$labels['sortby'] = 'Sortuj wg';
$labels['sortasc'] = 'Rosnąco';
$labels['sortdesc'] = 'Malejąco';
@@ -494,4 +527,53 @@ $labels['vietnamese'] = 'wietnamski';
$labels['japanese'] = 'japoński';
$labels['korean'] = 'koreański';
$labels['chinese'] = 'chiński';
+$labels['arialabeltopnav'] = 'Kontrolki okna';
+$labels['arialabeltasknav'] = 'Zadania aplikacji';
+$labels['arialabeltoolbar'] = 'Narzędzia aplikacji';
+$labels['arialabelactivetask'] = 'Aktywne zadanie';
+$labels['arialabelmessagessearchfilter'] = 'Filtr listy wiadomości';
+$labels['arialabelmailsearchform'] = 'Formularz wyszukiwania wiadomości';
+$labels['arialabelcontactsearchform'] = 'Formularz wyszukiwania kontaktów';
+$labels['arialabelmailquicksearchbox'] = 'Wejście danych wyszukiwania';
+$labels['arialabelquicksearchbox'] = 'Wejście danych wyszukiwania';
+$labels['arialabelfoldersearchfilter'] = 'Filtr listy folderów';
+$labels['arialabelfoldersearchform'] = 'Formularz wyszukiwania folderów';
+$labels['arialabelfolderlist'] = 'Wybór folderu';
+$labels['arialabelmessagelist'] = 'Lista wiadomości e-mail';
+$labels['arialabelmailpreviewframe'] = 'Podgląd wiadomości';
+$labels['arialabelmailboxmenu'] = 'Menu akcji folderów';
+$labels['arialabellistselectmenu'] = 'Menu zaznaczenia listy';
+$labels['arialabelthreadselectmenu'] = 'Menu wątków listy';
+$labels['arialabelmessagelistoptions'] = 'Opcje wyświetlania i sortowania listy';
+$labels['arialabelmailimportdialog'] = 'Dialog importu wiadomości';
+$labels['arialabelmessagenav'] = 'Nawigacja wiadomości';
+$labels['arialabelmessagebody'] = 'Treść wiadomości';
+$labels['arialabelmessageactions'] = 'Akcje wiadomości';
+$labels['arialabelcontactquicksearch'] = 'Formularz wyszukiwania kontaktów';
+$labels['arialabelcontactsearchbox'] = 'Wejście danych wyszukiwania';
+$labels['arialabelmessageheaders'] = 'Nagłówki wiadomości';
+$labels['arialabelforwardingoptions'] = 'Opcje przekazywania wiadomości';
+$labels['arialabelreplyalloptions'] = 'Opcje odpowiedzi do wszystkich';
+$labels['arialabelmoremessageactions'] = 'Więcej akcji';
+$labels['arialabelmarkmessagesas'] = 'Oznacz wybrane wiadomości jako...';
+$labels['arialabelcomposeoptions'] = 'Opcje kompozycji';
+$labels['arialabelresponsesmenu'] = 'Menu zapisanych odpowiedzi';
+$labels['arialabelattachmentuploadform'] = 'Formularz wysyłania załączników';
+$labels['arialabelattachmentpreview'] = 'Podgląd załącznika';
+$labels['ariasummarycomposecontacts'] = 'Lista wyboru kontaktów/grup jako odbiorców';
+$labels['arialabelcontactexportoptions'] = 'Opcje eksportu kontaktów';
+$labels['arialabelabookgroupoptions'] = 'Opcje książki adresowej i grup';
+$labels['arialabelpreferencesform'] = 'Formularz ustawień';
+$labels['arialabelidentityeditfrom'] = 'Formularz edycji tożsamości';
+$labels['arialabelresonseeditfrom'] = 'Formularz edycji odpowiedzi';
+$labels['arialabelsearchterms'] = 'Szukana fraza';
+$labels['helplistnavigation'] = 'Obsługa listy przy pomocy klawiatury';
+$labels['helplistkeyboardnavigation'] = "Strzałki góra/dół: Oznaczanie/poruszanie się po wierszach.
+Spacja: Wybór bieżącego wiersza.
+SHIFT + góra/dół: Oznaczenie dodatkowych wierszy.
+CTRL + Spacja: Zaznaczenie/odznaczenie bieżącego wiersza.";
+$labels['helplistkeyboardnavmessages'] = "Strzałki prawo/lewo: Rozwiniecie/zwinięcie wątku (w trybie wątkowania).
+ENTER: Otwarcie bieżącej wiadomości.
+DELETE: Usunięcie/Przeniesienie wiadomości do Kosza.";
+$labels['helplistkeyboardnavcontacts'] = "ENTER: Otwarcie bieżącego kontaktu.";
?>
diff --git a/program/localization/pl_PL/messages.inc b/program/localization/pl_PL/messages.inc
index fd4583c83..9a31ffa4a 100644
--- a/program/localization/pl_PL/messages.inc
+++ b/program/localization/pl_PL/messages.inc
@@ -22,7 +22,9 @@ $messages['sessionerror'] = 'Błąd sesji bądź sesja wygasła!';
$messages['storageerror'] = 'Błąd połączenia z serwerem!';
$messages['servererror'] = 'Błąd serwera!';
$messages['servererrormsg'] = 'Błąd serwera: $msg';
+$messages['connerror'] = 'Błąd połączenia (brak odpowiedzi serwera)!';
$messages['dberror'] = 'Błąd bazy danych!';
+$messages['windowopenerror'] = 'Wyskakujące okno zostało zablokowane!';
$messages['requesttimedout'] = 'Upłynął limit czasu żądania';
$messages['errorreadonly'] = 'Nie można wykonać operacji. Folder tylko do odczytu.';
$messages['errornoperm'] = 'Nie można wykonać operacji. Brak uprawnień.';
@@ -92,6 +94,7 @@ $messages['contactsearchsuccessful'] = 'Znaleziono $nr kontaktów.';
$messages['searchnomatch'] = 'Nic nie znaleziono.';
$messages['searching'] = 'Wyszukiwanie...';
$messages['checking'] = 'Sprawdzanie...';
+$messages['stillsearching'] = 'Dalsze wyszukiwanie...';
$messages['nospellerrors'] = 'Nie znaleziono błędów w pisowni.';
$messages['folderdeleted'] = 'Folder został pomyślnie usunięty.';
$messages['foldersubscribed'] = 'Folder został pomyślnie zasubskrybowany.';
@@ -135,7 +138,7 @@ $messages['importmessagesuccess'] = 'Pomyślnie zaimportowano następującą lic
$messages['importmessageerror'] = 'Import nieudany! Wgrywany plik nie jest poprawną wiadomością lub plikiem skrzynki pocztowej';
$messages['opnotpermitted'] = 'Niedozwolona operacja!';
$messages['nofromaddress'] = 'Brak adresu e-mail w wybranej tożsamości.';
-$messages['editorwarning'] = 'Zmiana edytora spowoduje utratę formatowania tekstu. Czy jesteś pewien, że chcesz to zrobić?';
+$messages['editorwarning'] = 'Zmiana typu editora może spowodować utratę formatowania. Czy chcesz kontynuować?';
$messages['httpreceivedencrypterror'] = 'Wystąpił błąd krytyczny. Skontaktuj się z administratorem. <b>Nie można wysłać wiadomości.</b>';
$messages['smtpconnerror'] = 'Błąd SMTP ($code): Nie można nawiązać połączenia z serwerem.';
$messages['smtpautherror'] = 'Błąd SMTP ($code): Uwierzytelnianie nie powiodło się.';
diff --git a/program/localization/ps/labels.inc b/program/localization/ps/labels.inc
index 9b4c8d813..9d93e93e0 100644
--- a/program/localization/ps/labels.inc
+++ b/program/localization/ps/labels.inc
@@ -159,13 +159,11 @@ $labels['name'] = 'نوم ښوونه';
$labels['firstname'] = 'نوم';
$labels['surname'] = 'کورنی نوم';
$labels['email'] = 'برېښناليک';
-$labels['addcontact'] = 'نوی اړيکلوری ورزيات کړه';
$labels['editcontact'] = 'اړيکلوري سمون';
$labels['edit'] = 'سمون';
$labels['cancel'] = 'لري کول';
$labels['save'] = 'ساتل';
$labels['delete'] = 'ړنګول';
-$labels['newcontact'] = 'نوي اړيکلوري کارټ جوړ کړه';
$labels['deletecontact'] = 'ټاکل شوي اړيکلوري ړنګ کړه';
$labels['composeto'] = 'ته ليک وليکه';
$labels['contactsfromto'] = 'له دومره اړيکلورو څخه دومره شمېرل شوي Contacts $from to $to of $count';
@@ -188,10 +186,6 @@ $labels['preferences'] = 'غورونې';
$labels['userpreferences'] = 'کارن غورونې';
$labels['editpreferences'] = 'د کارن غورونو سمون';
$labels['identities'] = 'پېژندنې';
-$labels['manageidentities'] = 'ددې حساب پېژندنو برابرول';
-$labels['newidentity'] = 'نوي پېژندنه';
-$labels['newitem'] = 'نوی توک';
-$labels['edititem'] = 'توک سمون';
$labels['preferhtml'] = 'ايچ ټي ام ايل ښوون';
$labels['htmlmessage'] = 'ايچ ټي ام ايل استوزه';
$labels['prettydate'] = 'په زړه پورې نېټې';
@@ -231,17 +225,18 @@ $labels['mimeparamfolding'] = 'د نښلول شوو نومونه';
$labels['2231folding'] = 'بشپړ RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (نور)';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'پرمختللي لارې';
$labels['focusonnewmessage'] = 'فوکاس براوسر کړکۍ په نوي استوزي کې';
$labels['checkallfolders'] = 'په ټولو پوښيو کې نوي استوزي وګورئ';
-$labels['folder'] = 'پوښۍ';
-$labels['folders'] = 'پوښۍ';
-$labels['foldername'] = 'پوښۍ نوم';
-$labels['subscribed'] = 'ګډ شو';
+$labels['folder'] = 'پوښۍ';
+$labels['folders'] = 'پوښۍ';
+$labels['foldername'] = 'پوښۍ نوم';
+$labels['subscribed'] = 'ګډ شو';
$labels['messagecount'] = 'استوزي';
-$labels['create'] = 'جوړول، رامنځ ته کول';
-$labels['createfolder'] = 'نوې پوښۍ جوړ کړه';
-$labels['managefolders'] = 'پوښيو څارل';
+$labels['create'] = 'جوړول، رامنځ ته کول';
+$labels['createfolder'] = 'نوې پوښۍ جوړ کړه';
+$labels['managefolders'] = 'پوښيو څارل';
$labels['specialfolders'] = 'ځانګړي پوښۍۍ';
$labels['sortby'] = 'اڼل';
$labels['sortasc'] = 'له پورته نه ښکته خوا ته برابرول';
@@ -250,4 +245,7 @@ $labels['B'] = 'بي';
$labels['KB'] = 'کي بي';
$labels['MB'] = 'ام بي';
$labels['GB'] = 'جي بي';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/ps/messages.inc b/program/localization/ps/messages.inc
index 606e59c0f..6ceecc2dd 100644
--- a/program/localization/ps/messages.inc
+++ b/program/localization/ps/messages.inc
@@ -80,5 +80,4 @@ $messages['importwait'] = 'نقلوي...صبر وکړئ';
$messages['importconfirm'] = '<b>په بشپړه توګه نقل شو $اړيکلوري داخل شول, $شته تيرشوي انټاير څخه تيرشول</b>:<p><em>$نومونه</em></p>';
$messages['opnotpermitted'] = 'چار اجازه نه لري';
$messages['nofromaddress'] = 'په ټاکل شوي پيژندنه کې برېښناليک پتې له لاسه ورکړي';
-$messages['editorwarning'] = 'که د متن بڼو له منځه تللو ګواښ وي نو د متن سمون پرانيزئ. غواړئ چې دوام ورکړئ';
?>
diff --git a/program/localization/pt_BR/labels.inc b/program/localization/pt_BR/labels.inc
index e5aececc9..da64e3406 100644
--- a/program/localization/pt_BR/labels.inc
+++ b/program/localization/pt_BR/labels.inc
@@ -131,6 +131,10 @@ $labels['moreactions'] = 'Mais ações...';
$labels['more'] = 'Mais';
$labels['back'] = 'Voltar';
$labels['options'] = 'Opções';
+$labels['first'] = 'Primeiro';
+$labels['last'] = 'Último';
+$labels['previous'] = 'Anterior';
+$labels['next'] = 'Próximo';
$labels['select'] = 'Selecionar';
$labels['all'] = 'Todas';
$labels['none'] = 'Nenhuma';
@@ -178,6 +182,10 @@ $labels['msgtext'] = 'Mensagem inteira';
$labels['body'] = 'Conteúdo';
$labels['type'] = 'Tipo';
$labels['namex'] = 'Nome';
+$labels['searchscope'] = 'Escopo';
+$labels['currentfolder'] = 'Pasta atual';
+$labels['subfolders'] = 'Esta e subpastas';
+$labels['allfolders'] = 'Todas pastas';
$labels['openinextwin'] = 'Abrir em nova janela';
$labels['emlsave'] = 'Baixar (formato .eml)';
$labels['changeformattext'] = 'Exibir em formato de texto simples';
@@ -193,6 +201,8 @@ $labels['returnreceipt'] = 'Confirmação de recebimento';
$labels['dsn'] = 'Recibo de entrega';
$labels['mailreplyintro'] = 'Em $date, $sender escreveu:';
$labels['originalmessage'] = 'Mensagem original';
+$labels['selectimage'] = 'Selecionar imagem';
+$labels['addimage'] = 'Adicionar imagem';
$labels['editidents'] = 'Editar identidades';
$labels['spellcheck'] = 'Revisar';
$labels['checkspelling'] = 'Verificar ortografia';
@@ -203,9 +213,9 @@ $labels['restoremessage'] = 'Restaurar mensagem?';
$labels['responses'] = 'Respostas';
$labels['insertresponse'] = 'Inserir uma resposta';
$labels['manageresponses'] = 'Gerenciar respostas';
-$labels['savenewresponse'] = 'Salvar nova resposta';
-$labels['editresponses'] = 'Editar respostas';
+$labels['newresponse'] = 'Criar nova resposta';
$labels['editresponse'] = 'Editar resposta';
+$labels['editresponses'] = 'Editar respostas';
$labels['responsename'] = 'Nome';
$labels['responsetext'] = 'Texto da resposta';
$labels['attach'] = 'Anexar';
@@ -270,6 +280,7 @@ $labels['assistant'] = 'Assistente';
$labels['spouse'] = 'Cônjuge';
$labels['allfields'] = 'Todos os campos';
$labels['search'] = 'Pesquisar';
+$labels['searchfor'] = 'Procurar por "$q"';
$labels['advsearch'] = 'Pesquisa Avançada';
$labels['advanced'] = 'Avançado';
$labels['other'] = 'Outro';
@@ -288,7 +299,6 @@ $labels['typehomepage'] = 'Página pessoal';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Perfil';
$labels['addfield'] = 'Adicionar campo...';
-$labels['addcontact'] = 'Adicionar novo contato';
$labels['editcontact'] = 'Editar contato';
$labels['contacts'] = 'Contatos';
$labels['contactproperties'] = 'Propriedades do contato';
@@ -301,7 +311,6 @@ $labels['rename'] = 'Renomear';
$labels['addphoto'] = 'Adicionar';
$labels['replacephoto'] = 'Substituir';
$labels['uploadphoto'] = 'Enviar foto';
-$labels['newcontact'] = 'Criar novo contato';
$labels['deletecontact'] = 'Exclui os contatos selecionados';
$labels['composeto'] = 'Compor mensagem para';
$labels['contactsfromto'] = 'Contatos $from - $to de $count';
@@ -310,7 +319,6 @@ $labels['export'] = 'Exportar';
$labels['exportall'] = 'Exportar todos';
$labels['exportsel'] = 'Exportar selecionados';
$labels['exportvcards'] = 'Exportar os contatos em formato vCard';
-$labels['newcontactgroup'] = 'Criar novo grupo de contatos';
$labels['grouprename'] = 'Renomear grupo';
$labels['groupdelete'] = 'Excluir grupo';
$labels['groupremoveselected'] = 'Remover os contatos selecionados do grupo';
@@ -340,10 +348,6 @@ $labels['preferences'] = 'Preferências';
$labels['userpreferences'] = 'Preferências do usuário';
$labels['editpreferences'] = 'Editar preferências do usuário';
$labels['identities'] = 'Identidades';
-$labels['manageidentities'] = 'Gerenciar identidades desta conta';
-$labels['newidentity'] = 'Nova identidade';
-$labels['newitem'] = 'Novo item';
-$labels['edititem'] = 'Editar item';
$labels['preferhtml'] = 'Exibir em HTML';
$labels['defaultcharset'] = 'Conjunto padrão de caracteres';
$labels['htmlmessage'] = 'Mensagem HTML';
@@ -400,6 +404,7 @@ $labels['2231folding'] = 'RFC 2231 Integral (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'RFC 2047 Integral (outro)';
$labels['force7bit'] = 'Usar codificação MIME para caracteres 8-bit';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'Opções avançadas';
$labels['focusonnewmessage'] = 'Focar janela do navegador ao receber nova mensagem';
$labels['checkallfolders'] = 'Verificar se há novas mensagens em todas as pastas';
@@ -442,14 +447,14 @@ $labels['asattachment'] = 'como anexo';
$labels['replyallmode'] = 'Ação padrão do botão [Responder a todos]';
$labels['replyalldefault'] = 'responder a todos';
$labels['replyalllist'] = 'responder somente à lista de discussão (se identificada)';
-$labels['folder'] = 'Pasta';
-$labels['folders'] = 'Pastas';
-$labels['foldername'] = 'Nome da pasta';
-$labels['subscribed'] = 'Inscrito';
+$labels['folder'] = 'Pasta';
+$labels['folders'] = 'Pastas';
+$labels['foldername'] = 'Nome da pasta';
+$labels['subscribed'] = 'Inscrito';
$labels['messagecount'] = 'Mensagens';
-$labels['create'] = 'Criar';
-$labels['createfolder'] = 'Criar nova pasta';
-$labels['managefolders'] = 'Gerenciar pastas';
+$labels['create'] = 'Criar';
+$labels['createfolder'] = 'Criar nova pasta';
+$labels['managefolders'] = 'Gerenciar pastas';
$labels['specialfolders'] = 'Pastas de sistema';
$labels['properties'] = 'Propriedades';
$labels['folderproperties'] = 'Propriedades da pasta';
@@ -459,9 +464,9 @@ $labels['info'] = 'Informação';
$labels['getfoldersize'] = 'Exibir o tamanho da pasta';
$labels['changesubscription'] = 'Clique para ativar/desativar';
$labels['foldertype'] = 'Tipo de Pasta';
-$labels['personalfolder'] = 'Pasta Particular';
-$labels['otherfolder'] = 'Pasta de outro Usuário';
-$labels['sharedfolder'] = 'Pasta Pública';
+$labels['personalfolder'] = 'Pasta Particular';
+$labels['otherfolder'] = 'Pasta de outro Usuário';
+$labels['sharedfolder'] = 'Pasta Pública';
$labels['sortby'] = 'Ordenar por';
$labels['sortasc'] = 'Ascendente';
$labels['sortdesc'] = 'Descendente';
@@ -494,4 +499,7 @@ $labels['vietnamese'] = 'Vietnamita';
$labels['japanese'] = 'Japonês';
$labels['korean'] = 'Coreano';
$labels['chinese'] = 'Chinês';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/pt_BR/messages.inc b/program/localization/pt_BR/messages.inc
index 0fcb27ff7..e8240118d 100644
--- a/program/localization/pt_BR/messages.inc
+++ b/program/localization/pt_BR/messages.inc
@@ -17,12 +17,14 @@
*/
$messages['errortitle'] = 'Ocorreu um erro!';
$messages['loginfailed'] = 'Falha no login';
-$messages['cookiesdisabled'] = 'Seu navegador não aceita cookies';
+$messages['cookiesdisabled'] = 'Seu navegador não aceita cookies.';
$messages['sessionerror'] = 'A sessão do seu navegador é inválida ou expirou';
$messages['storageerror'] = 'Falha na conexão com o servidor. Verifique se informou os dados corretamente.';
$messages['servererror'] = 'Erro no Servidor!';
$messages['servererrormsg'] = 'Erro no Servidor: $msg';
+$messages['connerror'] = 'Erro de conexão (Falha na comunicação com o servidor!)';
$messages['dberror'] = 'Erro no banco de dados!';
+$messages['windowopenerror'] = 'A janela popup foi bloqueada!';
$messages['requesttimedout'] = 'Tempo da requisição esgotado';
$messages['errorreadonly'] = 'Não foi possível realizar a operação. Pasta somente leitura';
$messages['errornoperm'] = 'Não foi possível realizar a operação. Acesso negado';
@@ -92,6 +94,7 @@ $messages['contactsearchsuccessful'] = '$nr contatos encontrados.';
$messages['searchnomatch'] = 'A pesquisa não encontrou resultados';
$messages['searching'] = 'Pesquisando...';
$messages['checking'] = 'Verificando...';
+$messages['stillsearching'] = 'Ainda procurando...';
$messages['nospellerrors'] = 'Nenhum erro ortográfico encontrado';
$messages['folderdeleted'] = 'Pasta excluída com sucesso';
$messages['foldersubscribed'] = 'Pasta ativada com sucesso';
@@ -135,7 +138,7 @@ $messages['importmessagesuccess'] = 'Importação de $nr mensagens com sucesso';
$messages['importmessageerror'] = 'Falha na importação! O arquivo enviado não é uma mensagem ou caixa postal válida';
$messages['opnotpermitted'] = 'Operação não permitida!';
$messages['nofromaddress'] = 'Falta o e-mail na identidade selecionada.';
-$messages['editorwarning'] = 'Mudar para o editor de texto simples elimina toda a formatação de texto. Deseja continuar?';
+$messages['editorwarning'] = 'A mudança do tipo de editor pode causar perda de formatação do texto. Deseja continuar?';
$messages['httpreceivedencrypterror'] = 'Ocorreu um erro de configuração. Informe ao administrador do sistema imediatamente. <b>Sua mensagem não pode ser enviada.</b>';
$messages['smtpconnerror'] = 'Erro SMTP ($code): Conexão ao servidor falhou.';
$messages['smtpautherror'] = 'Erro SMTP ($code): Falha na autenticação.';
diff --git a/program/localization/pt_PT/labels.inc b/program/localization/pt_PT/labels.inc
index 457a308f2..19bf061cf 100644
--- a/program/localization/pt_PT/labels.inc
+++ b/program/localization/pt_PT/labels.inc
@@ -131,16 +131,24 @@ $labels['moreactions'] = 'Mais acções...';
$labels['more'] = 'Mais';
$labels['back'] = 'Voltar';
$labels['options'] = 'Opções';
+$labels['first'] = 'Primeiro';
+$labels['last'] = 'Último';
+$labels['previous'] = 'Anterior';
+$labels['next'] = 'Seguinte';
$labels['select'] = 'Seleccionar';
$labels['all'] = 'Todas';
$labels['none'] = 'Nenhum';
$labels['currpage'] = 'Página actual';
+$labels['isread'] = 'Ler';
$labels['unread'] = 'Não lidas';
$labels['flagged'] = 'Sinalizadas';
+$labels['unflagged'] = 'Não sinalizado';
$labels['unanswered'] = 'Não respondidas';
$labels['withattachment'] = 'Com anexo';
$labels['deleted'] = 'Eliminadas';
$labels['undeleted'] = 'Não eliminada';
+$labels['replied'] = 'Respondido';
+$labels['forwarded'] = 'Reencaminhado';
$labels['invert'] = 'Inverter selecção';
$labels['filter'] = 'Filtro';
$labels['list'] = 'Em lista';
@@ -171,6 +179,11 @@ $labels['importmessages'] = 'Importar mensagens';
$labels['quota'] = 'Espaço utilizado';
$labels['unknown'] = 'desconhecido';
$labels['unlimited'] = 'ilimitado';
+$labels['quotatype'] = 'Tipo de cota';
+$labels['quotatotal'] = 'Limite';
+$labels['quotaused'] = 'Usado';
+$labels['quotastorage'] = 'Espaço em disco';
+$labels['quotamessage'] = 'Numero de mensagens';
$labels['quicksearch'] = 'Pesquisa rápida';
$labels['resetsearch'] = 'Limpar pesquisa';
$labels['searchmod'] = 'Pesquisar em';
@@ -178,6 +191,10 @@ $labels['msgtext'] = 'Mensagem completa';
$labels['body'] = 'Corpo';
$labels['type'] = 'Tipo';
$labels['namex'] = 'Nome';
+$labels['searchscope'] = 'Âmbito';
+$labels['currentfolder'] = 'Pasta actual';
+$labels['subfolders'] = 'Esta pasta e subpastas';
+$labels['allfolders'] = 'Todas as pastas';
$labels['openinextwin'] = 'Abrir numa nova janela';
$labels['emlsave'] = 'Guardar como (.eml)';
$labels['changeformattext'] = 'Mostrar em formato de texto simples';
@@ -193,6 +210,10 @@ $labels['returnreceipt'] = 'Recibo de leitura';
$labels['dsn'] = 'Recibo de entrega';
$labels['mailreplyintro'] = 'Em $date, $sender escreveu:';
$labels['originalmessage'] = 'Mensagem Original';
+$labels['selectimage'] = 'Seleccionar imagem';
+$labels['addimage'] = 'Adicionar imagem';
+$labels['selectmedia'] = 'Seleccionar filme';
+$labels['addmedia'] = 'Adicionar filme';
$labels['editidents'] = 'Editar entidades';
$labels['spellcheck'] = 'Corrector Ortográfico';
$labels['checkspelling'] = 'Verificar ortografia';
@@ -203,9 +224,10 @@ $labels['restoremessage'] = 'Restaurar mensagem?';
$labels['responses'] = 'Respostas';
$labels['insertresponse'] = 'Insira uma resposta';
$labels['manageresponses'] = 'Gerir respostas';
-$labels['savenewresponse'] = 'Gravar nova resposta';
-$labels['editresponses'] = 'Editar respostas';
+$labels['newresponse'] = 'Criar nova resposta';
+$labels['addresponse'] = 'Adicionar resposta';
$labels['editresponse'] = 'Editar resposta';
+$labels['editresponses'] = 'Editar respostas';
$labels['responsename'] = 'Nome';
$labels['responsetext'] = 'Texto da resposta';
$labels['attach'] = 'Anexar';
@@ -214,6 +236,7 @@ $labels['upload'] = 'Carregar';
$labels['uploadprogress'] = '$percent ($current de $total)';
$labels['close'] = 'Fechar';
$labels['messageoptions'] = 'Opções de mensagens...';
+$labels['togglecomposeoptions'] = 'Alternar opções de composição';
$labels['low'] = 'Baixa';
$labels['lowest'] = 'Muito baixa';
$labels['normal'] = 'Normal';
@@ -270,6 +293,7 @@ $labels['assistant'] = 'Assistente';
$labels['spouse'] = 'Cônjuge';
$labels['allfields'] = 'Todos os campos';
$labels['search'] = 'Pesquisar';
+$labels['searchfor'] = 'Procurar por "$q"';
$labels['advsearch'] = 'Pesquisa avançada';
$labels['advanced'] = 'Pesquisa avançada';
$labels['other'] = 'Outro';
@@ -288,11 +312,13 @@ $labels['typehomepage'] = 'Página Inicial';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Perfil';
$labels['addfield'] = 'Adicionar campo...';
-$labels['addcontact'] = 'Criar novo contacto';
+$labels['addcontact'] = 'Adicionar contacto';
$labels['editcontact'] = 'Editar contacto';
$labels['contacts'] = 'Contactos';
$labels['contactproperties'] = 'Dados do contacto';
+$labels['contactnameandorg'] = 'Nome da Organização';
$labels['personalinfo'] = 'Informação pessoal';
+$labels['contactphoto'] = 'Foto do contacto';
$labels['edit'] = 'Editar';
$labels['cancel'] = 'Cancelar';
$labels['save'] = 'Guardar';
@@ -310,10 +336,11 @@ $labels['export'] = 'Exportar';
$labels['exportall'] = 'Exportar todos';
$labels['exportsel'] = 'Exportar selecionados';
$labels['exportvcards'] = 'Exportar contactos no formato vCard';
-$labels['newcontactgroup'] = 'Criar novo grupo de contactos';
+$labels['newgroup'] = 'Criar novo grupo';
$labels['grouprename'] = 'Renomear grupo';
$labels['groupdelete'] = 'Eliminar grupo';
$labels['groupremoveselected'] = 'Remover o(s) contacto(s) seleccionado(s) do grupo';
+$labels['uponelevel'] = 'Um nível acima';
$labels['previouspage'] = 'Página anterior';
$labels['firstpage'] = 'Primeira página';
$labels['nextpage'] = 'Página seguinte';
@@ -340,10 +367,10 @@ $labels['preferences'] = 'Preferências';
$labels['userpreferences'] = 'Preferências do utilizador';
$labels['editpreferences'] = 'Editar preferências do utilizador';
$labels['identities'] = 'Identidades';
-$labels['manageidentities'] = 'Gerir identidades para esta conta';
-$labels['newidentity'] = 'Nova identidade';
-$labels['newitem'] = 'Novo item';
-$labels['edititem'] = 'Editar item';
+$labels['manageidentities'] = 'Gerir identidades';
+$labels['newidentity'] = 'Criar nova identidade';
+$labels['addidentity'] = 'Adicionar identidade';
+$labels['editidentity'] = 'Editar identidade';
$labels['preferhtml'] = 'Mostrar mensagens em HTML';
$labels['defaultcharset'] = 'Conjunto de caracteres predefinido';
$labels['htmlmessage'] = 'Mensagem em HTML';
@@ -400,7 +427,9 @@ $labels['2231folding'] = 'Total RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Total RFC 2047 (outro)';
$labels['force7bit'] = 'Usar codificação MIME para caracteres de 8 bits';
+$labels['savelocalstorage'] = "Guardado no armazenamento local do navegador (temporariamente)";
$labels['advancedoptions'] = 'Opções avançadas';
+$labels['toggleadvancedoptions'] = 'Alternar opções de avançadas';
$labels['focusonnewmessage'] = 'Activar a janela do navegador na nova mensagem';
$labels['checkallfolders'] = 'Verificar por novas mensagens em todas as pastas';
$labels['displaynext'] = 'Depois de mover/eliminar uma mensagem, mostrar a próxima mensagem';
@@ -442,14 +471,14 @@ $labels['asattachment'] = 'como anexo';
$labels['replyallmode'] = 'Ação predefinida do botão [Responder a todos]';
$labels['replyalldefault'] = 'responder a todos';
$labels['replyalllist'] = 'responder só à lista de discussão (se identificada)';
-$labels['folder'] = 'Pasta';
-$labels['folders'] = 'Pastas';
-$labels['foldername'] = 'Nome da pasta';
-$labels['subscribed'] = 'Subscrita';
+$labels['folder'] = 'Pasta';
+$labels['folders'] = 'Pastas';
+$labels['foldername'] = 'Nome da pasta';
+$labels['subscribed'] = 'Subscrita';
$labels['messagecount'] = 'Mensagens';
-$labels['create'] = 'Criar';
-$labels['createfolder'] = 'Criar nova pasta';
-$labels['managefolders'] = 'Gerir pastas';
+$labels['create'] = 'Criar';
+$labels['createfolder'] = 'Criar nova pasta';
+$labels['managefolders'] = 'Gerir pastas';
$labels['specialfolders'] = 'Pastas especiais (predefinidas)';
$labels['properties'] = 'Propriedades';
$labels['folderproperties'] = 'Propriedades da pasta';
@@ -459,9 +488,13 @@ $labels['info'] = 'Informação';
$labels['getfoldersize'] = 'Clique para obter o tamanho da pasta';
$labels['changesubscription'] = 'Clique para alterar a subscrição';
$labels['foldertype'] = 'Tipo de pasta';
-$labels['personalfolder'] = 'Pasta privada';
-$labels['otherfolder'] = 'Outro tipo de pasta';
-$labels['sharedfolder'] = 'Pasta pública';
+$labels['personalfolder'] = 'Pasta privada';
+$labels['otherfolder'] = 'Outro tipo de pasta';
+$labels['sharedfolder'] = 'Pasta pública';
+$labels['findfolders'] = 'Localizar pastas';
+$labels['namespace.personal'] = 'Pessoal';
+$labels['namespace.other'] = 'Outros utilizadores';
+$labels['namespace.shared'] = 'Partilhado';
$labels['sortby'] = 'Ordenar por';
$labels['sortasc'] = 'Ordenação Ascendente';
$labels['sortdesc'] = 'Ordenação Descendente';
@@ -494,4 +527,53 @@ $labels['vietnamese'] = 'Vietnamita';
$labels['japanese'] = 'Japonês';
$labels['korean'] = 'Coreano';
$labels['chinese'] = 'Chinês';
+$labels['arialabeltopnav'] = 'Controlo de janela';
+$labels['arialabeltasknav'] = 'Tarefas da aplicação';
+$labels['arialabeltoolbar'] = 'Barra de ferramentas da aplicação';
+$labels['arialabelactivetask'] = 'Tarefa activa';
+$labels['arialabelmessagessearchfilter'] = 'Filtro da listagem de email';
+$labels['arialabelmailsearchform'] = 'Formulário de pesquisa email';
+$labels['arialabelcontactsearchform'] = 'Formulário de pesquisa de contactos';
+$labels['arialabelmailquicksearchbox'] = 'Entrada da pesquisa de email';
+$labels['arialabelquicksearchbox'] = 'Entrada da pesquisa';
+$labels['arialabelfoldersearchfilter'] = 'Lista de filtro de pasta';
+$labels['arialabelfoldersearchform'] = 'Formulário de pesquisa de pasta';
+$labels['arialabelfolderlist'] = 'Selecção de pasta de email';
+$labels['arialabelmessagelist'] = 'Listagem de mensagens de email';
+$labels['arialabelmailpreviewframe'] = 'Pré-visualizar mensagem';
+$labels['arialabelmailboxmenu'] = 'Menu de acções de pasta';
+$labels['arialabellistselectmenu'] = 'Menu de selecção de lista';
+$labels['arialabelthreadselectmenu'] = 'Menu de listagem de tópicos';
+$labels['arialabelmessagelistoptions'] = 'Visualização da lista de mensagens e opções de ordenação';
+$labels['arialabelmailimportdialog'] = 'Janela de importação de mensagens';
+$labels['arialabelmessagenav'] = 'Navegação nas mensagens';
+$labels['arialabelmessagebody'] = 'Corpo da mensagem';
+$labels['arialabelmessageactions'] = 'Acções de mensagem';
+$labels['arialabelcontactquicksearch'] = 'Formulário de pesquisa de contactos';
+$labels['arialabelcontactsearchbox'] = 'Entrada da pesquisa de contacto';
+$labels['arialabelmessageheaders'] = 'Cabeçalhos da mensagem';
+$labels['arialabelforwardingoptions'] = 'Opções de reencaminhamento';
+$labels['arialabelreplyalloptions'] = 'Opções de responder a todos';
+$labels['arialabelmoremessageactions'] = 'Mais acções de mensagens';
+$labels['arialabelmarkmessagesas'] = 'Marcar mensagens seleccionadas como...';
+$labels['arialabelcomposeoptions'] = 'Opções de composição';
+$labels['arialabelresponsesmenu'] = 'Menu de respostas tipo';
+$labels['arialabelattachmentuploadform'] = 'Formulário de envio de anexos';
+$labels['arialabelattachmentpreview'] = 'Pré-visualização de anexos';
+$labels['ariasummarycomposecontacts'] = 'Lista de contactos e grupos para seleccionar como destinatários';
+$labels['arialabelcontactexportoptions'] = 'Opções de exportação de contacto';
+$labels['arialabelabookgroupoptions'] = 'Opções do livro de endereços/grupos';
+$labels['arialabelpreferencesform'] = 'Formulário de preferências';
+$labels['arialabelidentityeditfrom'] = 'Formulário de edição de identidade';
+$labels['arialabelresonseeditfrom'] = 'Formulário de edição de resposta';
+$labels['arialabelsearchterms'] = 'Termos de pesquisa';
+$labels['helplistnavigation'] = 'Lista de teclas de navegação';
+$labels['helplistkeyboardnavigation'] = "Setas cima/baixo: Move linha de realce/selecção.
+Espaço: Selecciona linha realçada.
+Shift + cima/baixo: Selecciona linha adicional acima/abaixo.
+Ctrl + Espaço: Adiciona linha realçada à selecção/remove da selecção.";
+$labels['helplistkeyboardnavmessages'] = "Setas direita/esquerda: Expande/recolhe tópicos de mensagens (só no modo de tópicos).
+Enter: Abre a mensagem seleccionada/realçada.
+Delete: Move as mensagens seleccionadas para a Reciclagem.";
+$labels['helplistkeyboardnavcontacts'] = "Enter: Abre o contacto seleccionado/realçado. ";
?>
diff --git a/program/localization/pt_PT/messages.inc b/program/localization/pt_PT/messages.inc
index a6618d33e..553eadd2e 100644
--- a/program/localization/pt_PT/messages.inc
+++ b/program/localization/pt_PT/messages.inc
@@ -22,7 +22,9 @@ $messages['sessionerror'] = 'A sua sessão é inválida ou expirou.';
$messages['storageerror'] = 'A ligação ao servidor IMAP falhou';
$messages['servererror'] = 'Erro do Servidor!';
$messages['servererrormsg'] = 'Erro do Servidor: $msg';
+$messages['connerror'] = 'Erro de ligação (Não foi possível alcançar o servidor)!';
$messages['dberror'] = 'Erro na base de dados!';
+$messages['windowopenerror'] = 'A janela pop-up foi bloqueada!';
$messages['requesttimedout'] = 'A solicitação expirou';
$messages['errorreadonly'] = 'Não foi possível efectuar a operação. A pasta é só de leitura.';
$messages['errornoperm'] = 'Não tem permissões para efectuar esta operação.';
@@ -92,6 +94,7 @@ $messages['contactsearchsuccessful'] = '$nr contactos encontrados.';
$messages['searchnomatch'] = 'A pesquisa não devolveu resultados';
$messages['searching'] = 'A pesquisar...';
$messages['checking'] = 'A verificar...';
+$messages['stillsearching'] = 'Ainda a procurar...';
$messages['nospellerrors'] = 'Não foi encontrado nenhum erro ortográfico';
$messages['folderdeleted'] = 'Pasta eliminada com sucesso';
$messages['foldersubscribed'] = 'Subscrição da pasta concluída com sucesso';
@@ -135,7 +138,7 @@ $messages['importmessagesuccess'] = '$nr mensagens importadas com sucesso';
$messages['importmessageerror'] = 'A importação falhou! O ficheiro carregado não é um arquivo de caixa de correio ou ficheiro de mensagem válido.';
$messages['opnotpermitted'] = 'Operação não permitida';
$messages['nofromaddress'] = 'Falta o endereço de e-mail na identidade seleccionada';
-$messages['editorwarning'] = 'Ao mudar para o editor Plain Text vai perder toda a formação de texto. Deseja continuar?';
+$messages['editorwarning'] = 'Alterar o tipo de editor pode causar a perda da formatação do texto. Deseja continuar?';
$messages['httpreceivedencrypterror'] = 'Ocorreu um erro fatal de configuração. Contacte o seu Administrador imediatamente. <b>A sua mensagem não pôde ser enviada.</b>';
$messages['smtpconnerror'] = 'Erro SMTP ($code): A ligação ao servidor falhou.';
$messages['smtpautherror'] = 'Erro SMTP ($code): A autenticação falhou.';
diff --git a/program/localization/ro_RO/labels.inc b/program/localization/ro_RO/labels.inc
index af85c358c..866c2866c 100644
--- a/program/localization/ro_RO/labels.inc
+++ b/program/localization/ro_RO/labels.inc
@@ -203,9 +203,8 @@ $labels['restoremessage'] = 'Restaurezi mesajul?';
$labels['responses'] = 'Răspunsuri';
$labels['insertresponse'] = 'Adaugă un răspuns';
$labels['manageresponses'] = 'Administrează răspunsurile';
-$labels['savenewresponse'] = 'Salvează noul răspuns';
-$labels['editresponses'] = 'Modifică răspunsurile';
$labels['editresponse'] = 'Modifică răspunsul';
+$labels['editresponses'] = 'Modifică răspunsurile';
$labels['responsename'] = 'Nume';
$labels['responsetext'] = 'Textul răspunsului';
$labels['attach'] = 'Ataşează';
@@ -288,7 +287,6 @@ $labels['typehomepage'] = 'Pagină de pornire';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
$labels['addfield'] = 'Adaugă câmp...';
-$labels['addcontact'] = 'Adaugă contact nou';
$labels['editcontact'] = 'Modifică contact';
$labels['contacts'] = 'Contacte';
$labels['contactproperties'] = 'Proprietăţile contactului...';
@@ -301,7 +299,6 @@ $labels['rename'] = 'Redenumeşte';
$labels['addphoto'] = 'Adaugă';
$labels['replacephoto'] = 'Înlocuiește';
$labels['uploadphoto'] = 'Încarcă imagine';
-$labels['newcontact'] = 'Creează contact nou';
$labels['deletecontact'] = 'Şterge contactul selectat';
$labels['composeto'] = 'Compune e-mail pentru';
$labels['contactsfromto'] = 'Contacte de la $from până la $to din $count';
@@ -310,7 +307,6 @@ $labels['export'] = 'Exportă';
$labels['exportall'] = 'Exportă tot';
$labels['exportsel'] = 'Exportă partea selectată';
$labels['exportvcards'] = 'Exportă contactele în format vCard';
-$labels['newcontactgroup'] = 'Creează un nou grup de contacte';
$labels['grouprename'] = 'Redenumește grupul';
$labels['groupdelete'] = 'Șterge grupul';
$labels['groupremoveselected'] = 'Șterge contactele selectate din grup';
@@ -340,10 +336,6 @@ $labels['preferences'] = 'Preferinţe';
$labels['userpreferences'] = 'Preferinţe utilizator';
$labels['editpreferences'] = 'Modifică preferinţe utilizator';
$labels['identities'] = 'Identităţi';
-$labels['manageidentities'] = 'Administrează identităţi pentru acest cont';
-$labels['newidentity'] = 'Identitate nouă';
-$labels['newitem'] = 'Obiect nou';
-$labels['edititem'] = 'Editează obiect';
$labels['preferhtml'] = 'Format HTML';
$labels['defaultcharset'] = 'Set implicit de caractere';
$labels['htmlmessage'] = 'Mesaj HTML';
@@ -400,6 +392,7 @@ $labels['2231folding'] = 'RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'RFC 2047 (Altele)';
$labels['force7bit'] = 'Foloseşte encodarea MIME pentru caracterele cu 8 biţi';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'Opţiuni avansate';
$labels['focusonnewmessage'] = 'Focalizare pe fereastra browser-ului la mesaje noi';
$labels['checkallfolders'] = 'Verifică toate dosarele pentru mesaje noi';
@@ -442,14 +435,14 @@ $labels['asattachment'] = 'ca atașament';
$labels['replyallmode'] = 'Acțiunea implicită pentru butonul [Răspunde la toți]';
$labels['replyalldefault'] = 'răspunde la toți';
$labels['replyalllist'] = 'răspunde listei (dacă este găsită)';
-$labels['folder'] = 'Dosar';
-$labels['folders'] = 'Dosare';
-$labels['foldername'] = 'Nume dosar';
-$labels['subscribed'] = 'Înscris';
+$labels['folder'] = 'Dosar';
+$labels['folders'] = 'Dosare';
+$labels['foldername'] = 'Nume dosar';
+$labels['subscribed'] = 'Înscris';
$labels['messagecount'] = 'Mesaje';
-$labels['create'] = 'Creează';
-$labels['createfolder'] = 'Creează dosar nou';
-$labels['managefolders'] = 'Administrează dosare';
+$labels['create'] = 'Creează';
+$labels['createfolder'] = 'Creează dosar nou';
+$labels['managefolders'] = 'Administrează dosare';
$labels['specialfolders'] = 'Dosare speciale';
$labels['properties'] = 'Proprietăți';
$labels['folderproperties'] = 'Proprietăţile folder-ului';
@@ -459,9 +452,9 @@ $labels['info'] = 'Informații';
$labels['getfoldersize'] = 'Click pentru dimensiunea dosarului';
$labels['changesubscription'] = 'Click pentru a modifica abonarea';
$labels['foldertype'] = 'Tip dosar';
-$labels['personalfolder'] = 'Dosar privat';
-$labels['otherfolder'] = 'Dosarul altui utilizator';
-$labels['sharedfolder'] = 'Dosar public';
+$labels['personalfolder'] = 'Dosar privat';
+$labels['otherfolder'] = 'Dosarul altui utilizator';
+$labels['sharedfolder'] = 'Dosar public';
$labels['sortby'] = 'Sortează după';
$labels['sortasc'] = 'Sortează ascendent';
$labels['sortdesc'] = 'Sortează descendent';
@@ -494,4 +487,7 @@ $labels['vietnamese'] = 'Vietnamez';
$labels['japanese'] = 'Japonez';
$labels['korean'] = 'Coreean';
$labels['chinese'] = 'Chinezesc';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/ro_RO/messages.inc b/program/localization/ro_RO/messages.inc
index d17364d95..c28e67289 100644
--- a/program/localization/ro_RO/messages.inc
+++ b/program/localization/ro_RO/messages.inc
@@ -22,7 +22,9 @@ $messages['sessionerror'] = 'Sesiunea dumneavoastră este invalidă sau a expira
$messages['storageerror'] = 'Conectarea la serverul IMAP a eşuat';
$messages['servererror'] = 'Eroare de server!';
$messages['servererrormsg'] = 'Eroare Server: $msg';
+$messages['connerror'] = 'Eroare de conexiune (Serverul nu a fost găsit)!';
$messages['dberror'] = 'Eroare bază de date!';
+$messages['windowopenerror'] = 'Fereastra nouă a fost blocată!';
$messages['requesttimedout'] = 'Timpul alocat cererii a expirat';
$messages['errorreadonly'] = 'Nu se poate efectua operaţiunea. Dosarul este disponibil doar pentru citire.';
$messages['errornoperm'] = 'Nu se poate efectua operaţiunea. Acces interzis.';
@@ -92,6 +94,7 @@ $messages['contactsearchsuccessful'] = '$nr contact(e) găsit(e).';
$messages['searchnomatch'] = 'Căutarea nu a returnat niciun rezultat';
$messages['searching'] = 'Se caută...';
$messages['checking'] = 'Se verifică...';
+$messages['stillsearching'] = 'Se caută...';
$messages['nospellerrors'] = 'Nu s-a găsit nicio greşeală de ortografie';
$messages['folderdeleted'] = 'Dosarul a fost şters cu succes';
$messages['foldersubscribed'] = 'Dosarul a fost abonat cu succes.';
diff --git a/program/localization/ru_RU/labels.inc b/program/localization/ru_RU/labels.inc
index 6df06a56b..410d091ff 100644
--- a/program/localization/ru_RU/labels.inc
+++ b/program/localization/ru_RU/labels.inc
@@ -131,16 +131,23 @@ $labels['moreactions'] = 'Дополнительные действия...'
$labels['more'] = 'Еще';
$labels['back'] = 'Назад';
$labels['options'] = 'Параметры';
+$labels['first'] = 'Первое';
+$labels['last'] = 'Последнее';
+$labels['previous'] = 'Предыдущее';
+$labels['next'] = 'Следующее';
$labels['select'] = 'Выбрать';
$labels['all'] = 'Все';
$labels['none'] = 'Отсутствует';
$labels['currpage'] = 'Текущая страница';
+$labels['isread'] = 'Прочтенные';
$labels['unread'] = 'Непрочитанные';
$labels['flagged'] = 'Помеченные';
+$labels['unflagged'] = 'Не помеченные';
$labels['unanswered'] = 'Неотвеченные';
$labels['withattachment'] = 'С вложением';
$labels['deleted'] = 'Удаленные';
$labels['undeleted'] = 'Не удаленные';
+$labels['forwarded'] = 'Пересланные';
$labels['invert'] = 'Инвертировать';
$labels['filter'] = 'Фильтр';
$labels['list'] = 'Список';
@@ -178,6 +185,10 @@ $labels['msgtext'] = 'Всё сообщение';
$labels['body'] = 'Тело письма';
$labels['type'] = 'Тип';
$labels['namex'] = 'Имя';
+$labels['searchscope'] = 'Область';
+$labels['currentfolder'] = 'Текущая папка';
+$labels['subfolders'] = 'Эта и вложенные папки';
+$labels['allfolders'] = 'Все папки';
$labels['openinextwin'] = 'Открыть в новом окне';
$labels['emlsave'] = 'Сохранить (.eml)';
$labels['changeformattext'] = 'Показать в формате обычного текста';
@@ -193,6 +204,10 @@ $labels['returnreceipt'] = 'Запрос ответа';
$labels['dsn'] = 'Уведомление о состоянии доставки';
$labels['mailreplyintro'] = '$sender писал $date:';
$labels['originalmessage'] = 'Исходное сообщение';
+$labels['selectimage'] = 'Выбрать изображение';
+$labels['addimage'] = 'Добавить изображение';
+$labels['selectmedia'] = 'Выбрать видео';
+$labels['addmedia'] = 'Добавить видео';
$labels['editidents'] = 'Изменить данные';
$labels['spellcheck'] = 'Орфография';
$labels['checkspelling'] = 'Проверить орфографию';
@@ -203,9 +218,10 @@ $labels['restoremessage'] = 'Восстановить сообщение?';
$labels['responses'] = 'Ответы';
$labels['insertresponse'] = 'Вставить ответ';
$labels['manageresponses'] = 'Управление ответами';
-$labels['savenewresponse'] = 'Сохранить новый ответ';
-$labels['editresponses'] = 'Редактировать ответы';
+$labels['newresponse'] = 'Создать новый ответ';
+$labels['addresponse'] = 'Добавить ответ';
$labels['editresponse'] = 'Редактировать ответ';
+$labels['editresponses'] = 'Редактировать ответы';
$labels['responsename'] = 'Название';
$labels['responsetext'] = 'Текста ответа';
$labels['attach'] = 'Вложить';
@@ -270,6 +286,7 @@ $labels['assistant'] = 'Помощник';
$labels['spouse'] = 'Супруг';
$labels['allfields'] = 'Все поля';
$labels['search'] = 'Поиск';
+$labels['searchfor'] = 'Поиск "$q"';
$labels['advsearch'] = 'Расширенный поиск';
$labels['advanced'] = 'Дополнительно';
$labels['other'] = 'Другое';
@@ -288,11 +305,13 @@ $labels['typehomepage'] = 'Домашняя страница';
$labels['typeblog'] = 'Блог';
$labels['typeprofile'] = 'Профиль';
$labels['addfield'] = 'Добавить поле...';
-$labels['addcontact'] = 'Добавить новый контакт';
+$labels['addcontact'] = 'Добавить контакт';
$labels['editcontact'] = 'Редактировать контакт';
$labels['contacts'] = 'Контакты';
$labels['contactproperties'] = 'Свойства контакта';
+$labels['contactnameandorg'] = 'Имя и организация';
$labels['personalinfo'] = 'Личная информация';
+$labels['contactphoto'] = 'Фото контакта';
$labels['edit'] = 'Правка';
$labels['cancel'] = 'Отмена';
$labels['save'] = 'Сохранить';
@@ -310,10 +329,11 @@ $labels['export'] = 'Экспорт';
$labels['exportall'] = 'Экспортировать все';
$labels['exportsel'] = 'Экспортировать выделенные';
$labels['exportvcards'] = 'Экспортировать контакты в формате vCard';
-$labels['newcontactgroup'] = 'Создать группу контактов';
+$labels['newgroup'] = 'Создать новую группу';
$labels['grouprename'] = 'Переименовать группу';
$labels['groupdelete'] = 'Удалить группу';
$labels['groupremoveselected'] = 'Удалить выбранные контакты из группы';
+$labels['uponelevel'] = 'Вверх на уровень';
$labels['previouspage'] = 'Показать предыдущую страницу';
$labels['firstpage'] = 'Показать первую страницу';
$labels['nextpage'] = 'Показать следующую страницу';
@@ -341,9 +361,9 @@ $labels['userpreferences'] = 'Настройки пользователя';
$labels['editpreferences'] = 'Редактировать настройки пользователя';
$labels['identities'] = 'Профили';
$labels['manageidentities'] = 'Управление профилями';
-$labels['newidentity'] = 'Новый профиль';
-$labels['newitem'] = 'Новый';
-$labels['edititem'] = 'Правка';
+$labels['newidentity'] = 'Создать новый профиль';
+$labels['addidentity'] = 'Добавить профиль';
+$labels['editidentity'] = 'Изменить профиль';
$labels['preferhtml'] = 'Предпочитать HTML';
$labels['defaultcharset'] = 'Набор символов по-умолчанию';
$labels['htmlmessage'] = 'Сообщение HTML';
@@ -400,6 +420,7 @@ $labels['2231folding'] = 'RFC 2231 (только для новейших про
$labels['miscfolding'] = 'RFC 2047/2231 (наибольшая совместимость)';
$labels['2047folding'] = 'RFC 2047 (для старых программ)';
$labels['force7bit'] = 'Использовать MIME для 8-битных символов';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'Дополнительные настройки';
$labels['focusonnewmessage'] = 'Фокусировать окно браузера при новом сообщении';
$labels['checkallfolders'] = 'Проверять новые сообщения во всех папках';
@@ -442,14 +463,14 @@ $labels['asattachment'] = 'как вложение';
$labels['replyallmode'] = 'Действие по умолчанию кнопки [Ответить всем]';
$labels['replyalldefault'] = 'ответить всем';
$labels['replyalllist'] = 'ответить только в список рассылки (если найден)';
-$labels['folder'] = 'Папка';
-$labels['folders'] = 'Папки';
-$labels['foldername'] = 'Имя папки';
-$labels['subscribed'] = 'Подписан';
+$labels['folder'] = 'Папка';
+$labels['folders'] = 'Папки';
+$labels['foldername'] = 'Имя папки';
+$labels['subscribed'] = 'Подписан';
$labels['messagecount'] = 'Сообщения';
-$labels['create'] = 'Создать';
-$labels['createfolder'] = 'Создать новую папку';
-$labels['managefolders'] = 'Управление папками';
+$labels['create'] = 'Создать';
+$labels['createfolder'] = 'Создать новую папку';
+$labels['managefolders'] = 'Управление папками';
$labels['specialfolders'] = 'Особые папки';
$labels['properties'] = 'Свойства';
$labels['folderproperties'] = 'Свойства папки';
@@ -459,9 +480,9 @@ $labels['info'] = 'Информация';
$labels['getfoldersize'] = 'Показать размер папки';
$labels['changesubscription'] = 'Изменить подписку';
$labels['foldertype'] = 'Тип каталога';
-$labels['personalfolder'] = 'Приватный каталог';
-$labels['otherfolder'] = 'Каталог другого пользователя';
-$labels['sharedfolder'] = 'Совместный каталог';
+$labels['personalfolder'] = 'Приватный каталог';
+$labels['otherfolder'] = 'Каталог другого пользователя';
+$labels['sharedfolder'] = 'Совместный каталог';
$labels['sortby'] = 'Сортировать по';
$labels['sortasc'] = 'Возрастанию';
$labels['sortdesc'] = 'Убыванию';
@@ -494,4 +515,19 @@ $labels['vietnamese'] = 'Вьетнамский';
$labels['japanese'] = 'Японский';
$labels['korean'] = 'Корейский';
$labels['chinese'] = 'Китайский';
+$labels['arialabeltopnav'] = 'Управление окном';
+$labels['arialabelactivetask'] = 'Активная задача';
+$labels['arialabelcontactsearchform'] = 'Форма поиска контактов';
+$labels['arialabelmailpreviewframe'] = 'Предпросмотр сообщений';
+$labels['arialabelmailimportdialog'] = 'Диалог импорта сообщения';
+$labels['arialabelcontactquicksearch'] = 'Форма поиска контактов';
+$labels['arialabelmessageheaders'] = 'Заголовки сообщений';
+$labels['arialabelforwardingoptions'] = 'Опции пересылки';
+$labels['arialabelmoremessageactions'] = 'Дополнительные действия с сообщением';
+$labels['arialabelmarkmessagesas'] = 'Отметить выделенные сообщения как...';
+$labels['arialabelattachmentpreview'] = 'Предпросмотр вложений';
+$labels['arialabelcontactexportoptions'] = 'Параметры экспорта контактов';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/ru_RU/messages.inc b/program/localization/ru_RU/messages.inc
index 8dfbe3df8..c556f3d65 100644
--- a/program/localization/ru_RU/messages.inc
+++ b/program/localization/ru_RU/messages.inc
@@ -22,7 +22,9 @@ $messages['sessionerror'] = 'Ваша сессия устарела.';
$messages['storageerror'] = 'Неудачное соединение с IMAP сервером';
$messages['servererror'] = 'Ошибка сервера!';
$messages['servererrormsg'] = 'Ошибка сервера: $msg';
+$messages['connerror'] = 'Ошибка соединения (Сбой подключения к серверу)!';
$messages['dberror'] = 'Ошибка базы данных!';
+$messages['windowopenerror'] = 'Всплывающее окно было заблокировано!';
$messages['requesttimedout'] = 'Превышено время ожидания запроса';
$messages['errorreadonly'] = 'Невозможно выполнить операцию. Папка доступна только для чтения.';
$messages['errornoperm'] = 'Невозможно выполнить операцию. Доступ запрещён.';
@@ -92,6 +94,7 @@ $messages['contactsearchsuccessful'] = '$nr контактов найдено.';
$messages['searchnomatch'] = 'Ничего не найдено.';
$messages['searching'] = 'Поиск...';
$messages['checking'] = 'Проверка...';
+$messages['stillsearching'] = 'Поиск...';
$messages['nospellerrors'] = 'Орфографических ошибок не найдено.';
$messages['folderdeleted'] = 'Папка удалена.';
$messages['foldersubscribed'] = 'Папка подписана';
@@ -135,7 +138,7 @@ $messages['importmessagesuccess'] = '$nr сообщений успешно им
$messages['importmessageerror'] = 'Сбой импорта! Загруженный файл не является файлом сообщения или почтового ящика';
$messages['opnotpermitted'] = 'Действие запрещено!';
$messages['nofromaddress'] = 'В выбранном профиле не хватает адреса электронной почты.';
-$messages['editorwarning'] = 'При переключении в редактор простого текста все форматирование будет потеряно. Продолжить?';
+$messages['editorwarning'] = 'Переключение типа редактора может привести к потере форматирования текста. Продолжить?';
$messages['httpreceivedencrypterror'] = 'На сервере возникла неизбежная ошибка. Срочно свяжитесь с Вашим администратором. <b>Ваше сообщение не может быть отправлено.</b>';
$messages['smtpconnerror'] = 'SMTP ошибка ($code): Сбой соединения с сервером.';
$messages['smtpautherror'] = 'SMTP ошибка ($code): Ошибка авторизации.';
diff --git a/program/localization/si_LK/labels.inc b/program/localization/si_LK/labels.inc
index 9baa37028..51b15e60a 100644
--- a/program/localization/si_LK/labels.inc
+++ b/program/localization/si_LK/labels.inc
@@ -24,7 +24,7 @@ $labels['logout'] = 'පිටවීම';
$labels['mail'] = 'විද්‍යුත් තැපැල';
$labels['settings'] = 'සැකසුම්';
$labels['addressbook'] = 'ලිපින පොත';
-$labels['inbox'] = 'Inbox';
+$labels['inbox'] = 'එනලිපි';
$labels['drafts'] = 'කටු සටහන්';
$labels['sent'] = 'යැවූ';
$labels['trash'] = 'ඉවතලන බඳුන';
@@ -204,7 +204,6 @@ $labels['typevideo'] = 'වීඩියෝ';
$labels['typeassistant'] = 'සහායක';
$labels['typeblog'] = 'බ්ලොග්';
$labels['typeprofile'] = 'පැතිකඩ';
-$labels['addcontact'] = 'නව සබඳතාවය එක් කරන්න';
$labels['editcontact'] = 'ලිපිනය වෙනස් කිරීම';
$labels['contacts'] = 'සබඳතා';
$labels['personalinfo'] = 'පුද්ගලික තොරතුරු';
@@ -214,7 +213,6 @@ $labels['save'] = 'සුරකින්න';
$labels['delete'] = 'මකන්න';
$labels['rename'] = 'නම වෙනස් කරන්න';
$labels['addphoto'] = 'එක් කරන්න';
-$labels['newcontact'] = 'අඵත් ලිපින පතක් සෑදීම';
$labels['deletecontact'] = 'තෝරාගත් ලිපින මකාදමන්න';
$labels['composeto'] = 'පනිවුඩයක් සෑදීම';
$labels['contactsfromto'] = '$from ගෙන් $to ලිපින $count';
@@ -235,10 +233,6 @@ $labels['preferences'] = 'අභිමතය';
$labels['userpreferences'] = 'පරිශීලක අභිමතය';
$labels['editpreferences'] = 'පරිශීලක අභිමතය වෙනස් කිරීම්';
$labels['identities'] = 'අනන්‍යතාවන්';
-$labels['manageidentities'] = 'මෙම ගිණුමෙ අනන්නයතාව හැසිරවීම';
-$labels['newidentity'] = 'අඵත් අනන්නයතාව';
-$labels['newitem'] = 'අඵත් අයිතම';
-$labels['edititem'] = 'අයිතම වෙනස් කිරීම්';
$labels['preferhtml'] = 'HTML විදහා පෙන්වීම';
$labels['htmlmessage'] = 'HTML පණිවිඩය';
$labels['prettydate'] = 'සුරුබුහුටි දින';
@@ -261,6 +255,7 @@ $labels['immediately'] = 'හැකි ඉක්මනින්';
$labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (වෙනත්)';
+$labels['savelocalstorage'] = "";
$labels['section'] = 'අංශය';
$labels['maintenance'] = 'නඩත්තු කිරීම';
$labels['newmessage'] = 'අලුත් පණිවිඩයක්';
@@ -271,22 +266,22 @@ $labels['afternseconds'] = 'තත්පර $nකට පසු';
$labels['spellcheckignoresyms'] = 'සලකුණු සහිත වචන නොසලකා හරින්න';
$labels['spellcheckignorenums'] = 'අංක සහිත වචන නොසලකා හරින්න';
$labels['addtodict'] = 'ශබ්ද කෝෂයට එක් කරන්න';
-$labels['folder'] = 'බහාලුම';
-$labels['folders'] = 'බහාලුම්';
-$labels['foldername'] = 'බහාලුමේ නම';
-$labels['subscribed'] = 'සාමාජික';
+$labels['folder'] = 'බහාලුම';
+$labels['folders'] = 'බහාලුම්';
+$labels['foldername'] = 'බහාලුමේ නම';
+$labels['subscribed'] = 'සාමාජික';
$labels['messagecount'] = 'පණිවිඩ';
-$labels['create'] = 'තනන්න';
-$labels['createfolder'] = 'නව බහාලුමක් තනන්න';
-$labels['managefolders'] = 'බහාලුම් කළමනාකරණය කරන්න';
+$labels['create'] = 'තනන්න';
+$labels['createfolder'] = 'නව බහාලුමක් තනන්න';
+$labels['managefolders'] = 'බහාලුම් කළමනාකරණය කරන්න';
$labels['specialfolders'] = 'විශේෂ බහාලුම්';
$labels['properties'] = 'වත්කම්';
$labels['folderproperties'] = 'බහාලුමේ වත්කම්';
$labels['location'] = 'ස්ථානය';
$labels['info'] = 'තොරතුරු';
$labels['foldertype'] = 'බහාලුම් වර්ගය';
-$labels['personalfolder'] = 'පුද්ගලික බහාලුම';
-$labels['sharedfolder'] = 'පොදු බහාලුම';
+$labels['personalfolder'] = 'පුද්ගලික බහාලුම';
+$labels['sharedfolder'] = 'පොදු බහාලුම';
$labels['sortby'] = 'වර්ග කරන්න';
$labels['sortasc'] = 'ආරෝහණ වර්ග කිරීම';
$labels['sortdesc'] = 'අවරෝහණ වර්ග කිරීම';
@@ -314,4 +309,7 @@ $labels['vietnamese'] = 'වියට්නාම';
$labels['japanese'] = 'ජපන්';
$labels['korean'] = 'කොරියානු';
$labels['chinese'] = 'චීන';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/sk_SK/labels.inc b/program/localization/sk_SK/labels.inc
index 630869bea..3e63a9c29 100644
--- a/program/localization/sk_SK/labels.inc
+++ b/program/localization/sk_SK/labels.inc
@@ -131,16 +131,24 @@ $labels['moreactions'] = 'Viac akcií...';
$labels['more'] = 'Viac';
$labels['back'] = 'Dozadu';
$labels['options'] = 'Možnosti';
+$labels['first'] = 'Prvá/prvý';
+$labels['last'] = 'Posledná/-ý';
+$labels['previous'] = 'Predchádzajúca/-i';
+$labels['next'] = 'Ďalšia/-í';
$labels['select'] = 'Výber';
$labels['all'] = 'Všetko';
$labels['none'] = 'Nič';
$labels['currpage'] = 'Aktuálna stránka';
+$labels['isread'] = 'Prečítané';
$labels['unread'] = 'Neprečítané';
$labels['flagged'] = 'Označené značkou';
+$labels['unflagged'] = 'Neoznačené značkou';
$labels['unanswered'] = 'Bez odpovede';
$labels['withattachment'] = 'S prílohou';
$labels['deleted'] = 'Vymazané';
$labels['undeleted'] = 'Nevymazané';
+$labels['replied'] = 'Odpovedané';
+$labels['forwarded'] = 'Preposlané';
$labels['invert'] = 'Obrátiť';
$labels['filter'] = 'Filter';
$labels['list'] = 'Zoznam';
@@ -171,6 +179,11 @@ $labels['importmessages'] = 'Importovať správy';
$labels['quota'] = 'Úložné miesto';
$labels['unknown'] = 'neznáme';
$labels['unlimited'] = 'neobmedzené';
+$labels['quotatype'] = 'Typ kvóty';
+$labels['quotatotal'] = 'Limit';
+$labels['quotaused'] = 'Použité';
+$labels['quotastorage'] = 'Priestor na disku';
+$labels['quotamessage'] = 'Počet správ';
$labels['quicksearch'] = 'Rýchle vyhľadávanie';
$labels['resetsearch'] = 'Reset vyhľadávania';
$labels['searchmod'] = 'Zmeniť kritériá vyhľadávania';
@@ -178,6 +191,10 @@ $labels['msgtext'] = 'Celá správa';
$labels['body'] = 'Telo (obsah)';
$labels['type'] = 'Typ';
$labels['namex'] = 'Meno';
+$labels['searchscope'] = 'Rozsah';
+$labels['currentfolder'] = 'Aktuálny priečinok';
+$labels['subfolders'] = 'Tento a podpriečinky';
+$labels['allfolders'] = 'Všetky priečinky';
$labels['openinextwin'] = 'Otvoriť v novom okne';
$labels['emlsave'] = 'Stiahnuť (.eml)';
$labels['changeformattext'] = 'Zobraziť vo formáte čistého textu';
@@ -193,6 +210,10 @@ $labels['returnreceipt'] = 'Potvrdenie o doručení';
$labels['dsn'] = 'Oznámenie o stave doručenia';
$labels['mailreplyintro'] = 'Dňa $date $sender napísal(a):';
$labels['originalmessage'] = 'Pôvodná správa';
+$labels['selectimage'] = 'Vybrať obrázok';
+$labels['addimage'] = 'Pridať obrázok';
+$labels['selectmedia'] = 'Vybrať film';
+$labels['addmedia'] = 'Pridať film';
$labels['editidents'] = 'Upraviť identitu odosielateľa';
$labels['spellcheck'] = 'Pravopis';
$labels['checkspelling'] = 'Skontrolovať pravopis';
@@ -203,9 +224,10 @@ $labels['restoremessage'] = 'Obnoviť správu?';
$labels['responses'] = 'Odpovede';
$labels['insertresponse'] = 'Vložiť odpoveď';
$labels['manageresponses'] = 'Spravovať odpovede';
-$labels['savenewresponse'] = 'Uložiť novú odpoveď';
-$labels['editresponses'] = 'Upraviť odpovede';
+$labels['newresponse'] = 'Vytvoriť novú odpoveď';
+$labels['addresponse'] = 'Pridať odpoveď';
$labels['editresponse'] = 'Upraviť odpoveď';
+$labels['editresponses'] = 'Upraviť odpovede';
$labels['responsename'] = 'Meno';
$labels['responsetext'] = 'Text odpovede';
$labels['attach'] = 'Priložiť';
@@ -214,6 +236,7 @@ $labels['upload'] = 'Nahrať';
$labels['uploadprogress'] = '$percent ($current z $total)';
$labels['close'] = 'Zatvoriť';
$labels['messageoptions'] = 'Nastavenia správy...';
+$labels['togglecomposeoptions'] = 'Prepnúť možnosti kompozície';
$labels['low'] = 'Nízka';
$labels['lowest'] = 'Najnižšia';
$labels['normal'] = 'Normálna';
@@ -270,6 +293,7 @@ $labels['assistant'] = 'Asistent';
$labels['spouse'] = 'Partner/ka';
$labels['allfields'] = 'Všetky polia';
$labels['search'] = 'Hľadať';
+$labels['searchfor'] = 'Hľadať "$q"';
$labels['advsearch'] = 'Rozšírené vyhľadávanie';
$labels['advanced'] = 'Rozšírené';
$labels['other'] = 'Ostatné';
@@ -288,11 +312,13 @@ $labels['typehomepage'] = 'Domovská stránka';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
$labels['addfield'] = 'Pridať pole...';
-$labels['addcontact'] = 'Pridať nový kontakt';
+$labels['addcontact'] = 'Pridať kontakt';
$labels['editcontact'] = 'Upraviť kontakt';
$labels['contacts'] = 'Kontakty';
$labels['contactproperties'] = 'Vlastnosti kontaktu';
+$labels['contactnameandorg'] = 'Názov a organizácia';
$labels['personalinfo'] = 'Osobné informácie';
+$labels['contactphoto'] = 'Fotografia kontaktu';
$labels['edit'] = 'Upraviť';
$labels['cancel'] = 'Zrušiť';
$labels['save'] = 'Uložiť';
@@ -310,10 +336,11 @@ $labels['export'] = 'Exportovať';
$labels['exportall'] = 'Exportovať všetko';
$labels['exportsel'] = 'Exportovať vybrané';
$labels['exportvcards'] = 'Exportovať kontakty vo formáte vCard';
-$labels['newcontactgroup'] = 'Vytvoriť novú skupinu kontaktov';
+$labels['newgroup'] = 'Vytvoriť novú skupinu';
$labels['grouprename'] = 'Premenovať skupinu';
$labels['groupdelete'] = 'Vymazať skupinu';
$labels['groupremoveselected'] = 'Odstrániť vybrané kontakty zo skupiny';
+$labels['uponelevel'] = 'O jednu úroveň nahor';
$labels['previouspage'] = 'Zobraziť predchádzajúcu stranu';
$labels['firstpage'] = 'Zobraziť prvú stranu';
$labels['nextpage'] = 'Zobraziť nasledujúcu stranu';
@@ -340,10 +367,10 @@ $labels['preferences'] = 'Nastavenia';
$labels['userpreferences'] = 'Používateľské nastavenia';
$labels['editpreferences'] = 'Upraviť používateľské nastavenia';
$labels['identities'] = 'Identity';
-$labels['manageidentities'] = 'Spravovať identity pre tento účet';
-$labels['newidentity'] = 'Nová identita';
-$labels['newitem'] = 'Nová položka';
-$labels['edititem'] = 'Upraviť položku';
+$labels['manageidentities'] = 'Spravovať identity';
+$labels['newidentity'] = 'Vytvoriť novú identitu';
+$labels['addidentity'] = 'Pridať identitu';
+$labels['editidentity'] = 'Upraviť identitu';
$labels['preferhtml'] = 'Zobraziť HTML';
$labels['defaultcharset'] = 'Predvolené kódovanie';
$labels['htmlmessage'] = 'HTML správa';
@@ -400,7 +427,9 @@ $labels['2231folding'] = 'Úplné RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Úplné RFC 2047 (iné)';
$labels['force7bit'] = 'Použiť kódovanie MIME pre 8-bitové znaky';
+$labels['savelocalstorage'] = "Uložiť v lokálnom úložisku prehliadača (dočasne)";
$labels['advancedoptions'] = 'Rozšírené nastavenia';
+$labels['toggleadvancedoptions'] = 'Prepnúť pokročilé nastavenia';
$labels['focusonnewmessage'] = 'Aktivovať okno prehliadača pri novej správe';
$labels['checkallfolders'] = 'Kontrolovať nové správy vo všetkých priečinkoch';
$labels['displaynext'] = 'Zobraziť ďalšiu správu po vymazaní/presunutí správy';
@@ -442,14 +471,14 @@ $labels['asattachment'] = 'ako príloha';
$labels['replyallmode'] = 'Predvolená akcia pre tlačidlo [Odpovedať všetkým]';
$labels['replyalldefault'] = 'odpovedať všetkým';
$labels['replyalllist'] = 'odpovedať len do mailing-listu (ak bol nájdený)';
-$labels['folder'] = 'Priečinok';
-$labels['folders'] = 'Priečinky';
-$labels['foldername'] = 'Názov priečinka';
-$labels['subscribed'] = 'Odber aktívny';
+$labels['folder'] = 'Priečinok';
+$labels['folders'] = 'Priečinky';
+$labels['foldername'] = 'Názov priečinka';
+$labels['subscribed'] = 'Odber aktívny';
$labels['messagecount'] = 'Správy';
-$labels['create'] = 'Vytvoriť';
-$labels['createfolder'] = 'Vytvoriť nový priečinok';
-$labels['managefolders'] = 'Spravovať priečinky';
+$labels['create'] = 'Vytvoriť';
+$labels['createfolder'] = 'Vytvoriť nový priečinok';
+$labels['managefolders'] = 'Spravovať priečinky';
$labels['specialfolders'] = 'Špeciálne priečinky';
$labels['properties'] = 'Vlastnosti';
$labels['folderproperties'] = 'Vlastnosti priečinka';
@@ -459,9 +488,13 @@ $labels['info'] = 'Informácia';
$labels['getfoldersize'] = 'Na zistenie veľkosti priečinka kliknite sem';
$labels['changesubscription'] = 'Na zmenu odberu kliknite sem';
$labels['foldertype'] = 'Typ priečinka';
-$labels['personalfolder'] = 'Súkromný priečinok';
-$labels['otherfolder'] = 'Iné priečinky používateľa';
-$labels['sharedfolder'] = 'Verejný priečinok';
+$labels['personalfolder'] = 'Súkromný priečinok';
+$labels['otherfolder'] = 'Iné priečinky používateľa';
+$labels['sharedfolder'] = 'Verejný priečinok';
+$labels['findfolders'] = 'Hľadať priečinky';
+$labels['namespace.personal'] = 'Osobné';
+$labels['namespace.other'] = 'Iní používatelia';
+$labels['namespace.shared'] = 'Zdieľané';
$labels['sortby'] = 'Zoradiť podľa';
$labels['sortasc'] = 'Zoradiť vzostupne';
$labels['sortdesc'] = 'Zoradiť zostupne';
@@ -494,4 +527,53 @@ $labels['vietnamese'] = 'Vietnamčina';
$labels['japanese'] = 'Japonsky';
$labels['korean'] = 'Kórejsky';
$labels['chinese'] = 'Čínsky';
+$labels['arialabeltopnav'] = 'Ovládanie okna';
+$labels['arialabeltasknav'] = 'Úlohy aplikácie';
+$labels['arialabeltoolbar'] = 'Panel nástrojov aplikácie';
+$labels['arialabelactivetask'] = 'Aktívna úloha';
+$labels['arialabelmessagessearchfilter'] = 'Filter zoznamu e-mailov';
+$labels['arialabelmailsearchform'] = 'Formulár pre vyhľadanie e-mailu';
+$labels['arialabelcontactsearchform'] = 'Formulár pre vyhľadávanie kontaktov';
+$labels['arialabelmailquicksearchbox'] = 'Vstup pre vyhľadávanie e-mailu';
+$labels['arialabelquicksearchbox'] = 'Vstup pre vyhľadávanie';
+$labels['arialabelfoldersearchfilter'] = 'Filter pre zoznam priečinkov';
+$labels['arialabelfoldersearchform'] = 'Formulár pre vyhľadávanie priečinkov';
+$labels['arialabelfolderlist'] = 'Výber priečinka s e-mailovými správami';
+$labels['arialabelmessagelist'] = 'Zoznam e-mailových správ';
+$labels['arialabelmailpreviewframe'] = 'Náhľad správy';
+$labels['arialabelmailboxmenu'] = 'Menu akcií pre priečinok';
+$labels['arialabellistselectmenu'] = 'Menu pre výber zoznamu';
+$labels['arialabelthreadselectmenu'] = 'Menu pre zoznam vlákien';
+$labels['arialabelmessagelistoptions'] = 'Nastavenia zobrazenia a triedenia zoznamu správ';
+$labels['arialabelmailimportdialog'] = 'Dialóg pre import správy';
+$labels['arialabelmessagenav'] = 'Navigácia správy';
+$labels['arialabelmessagebody'] = 'Telo správy';
+$labels['arialabelmessageactions'] = 'Akcie správy';
+$labels['arialabelcontactquicksearch'] = 'Formulár pre vyhľadanie kontaktov';
+$labels['arialabelcontactsearchbox'] = 'Vstup pre vyhľadávanie kontaktov';
+$labels['arialabelmessageheaders'] = 'Hlavičky správ';
+$labels['arialabelforwardingoptions'] = 'Nastavenia preposielania';
+$labels['arialabelreplyalloptions'] = 'Nastavenia pre „Odpovedať všetkým“';
+$labels['arialabelmoremessageactions'] = 'Viac akcií so správou';
+$labels['arialabelmarkmessagesas'] = 'Označiť vybrané správy ako';
+$labels['arialabelcomposeoptions'] = 'Nastavenia kompozície';
+$labels['arialabelresponsesmenu'] = 'Menu pre preddefinované odpovede';
+$labels['arialabelattachmentuploadform'] = 'Formulár pre odoslanie prílohy';
+$labels['arialabelattachmentpreview'] = 'Náhľad prílohy';
+$labels['ariasummarycomposecontacts'] = 'Zoznam kontaktov a skupín pre výber príjemcov';
+$labels['arialabelcontactexportoptions'] = 'Nastavenia exportu kontaktov';
+$labels['arialabelabookgroupoptions'] = 'Nastavenia adresára/skupiny';
+$labels['arialabelpreferencesform'] = 'Formulár s nastaveniami';
+$labels['arialabelidentityeditfrom'] = 'Formulár pre úpravu identity';
+$labels['arialabelresonseeditfrom'] = 'Formulár pre úpravu odpovede';
+$labels['arialabelsearchterms'] = 'Vyhľadávanie položiek';
+$labels['helplistnavigation'] = 'Zoznam navigovania pomocou klávesnice';
+$labels['helplistkeyboardnavigation'] = "Šípky nahor/nadol: presunúť zvýraznenie/výber.
+Medzerník: vybrať zvýraznený riadok.
+Shift + nahor/nadol: vybrať ďalší riadok hore/dole.
+Ctrl + medzerník: pridať zvýraznený riadok do výberu/odstrániť ho z výberu.";
+$labels['helplistkeyboardnavmessages'] = "Šípky doprava/doľava: rozbaliť/zbaliť vlákno správy (len v režime pre vlákna).
+Enter: otvoriť vybranú/zvýraznenú správu.
+Delete: presunúť vybrané správy do koša.";
+$labels['helplistkeyboardnavcontacts'] = "Enter: Otvoriť vybraný/zvýraznený kontakt.";
?>
diff --git a/program/localization/sk_SK/messages.inc b/program/localization/sk_SK/messages.inc
index d5cf323db..5fd6d997b 100644
--- a/program/localization/sk_SK/messages.inc
+++ b/program/localization/sk_SK/messages.inc
@@ -22,7 +22,9 @@ $messages['sessionerror'] = 'Vaša relácia nie je platná alebo vypršala jej p
$messages['storageerror'] = 'Nepodarilo sa spojiť s úložným serverom.';
$messages['servererror'] = 'Chyba servera!';
$messages['servererrormsg'] = 'Chyba servera: $msg';
+$messages['connerror'] = 'Chyba pri pripájaní (nepodarilo sa spojiť so serverom)!';
$messages['dberror'] = 'Chyba databázy!';
+$messages['windowopenerror'] = 'Bolo zablokované vyskakovacie okno!';
$messages['requesttimedout'] = 'Čas na vykonanie požiadavky uplynul';
$messages['errorreadonly'] = 'Akciu nemožno vykonať. Priečinok je určený len na čítanie.';
$messages['errornoperm'] = 'Akciu nemožno vykonať. Prístup bol odmietnutý.';
@@ -92,6 +94,7 @@ $messages['contactsearchsuccessful'] = 'Nájdené kontakty: $nr.';
$messages['searchnomatch'] = 'Hľadaný výraz sa nenašiel.';
$messages['searching'] = 'Vyhľadáva sa...';
$messages['checking'] = 'Kontroluje sa...';
+$messages['stillsearching'] = 'Vyhľadávanie stále prebieha...';
$messages['nospellerrors'] = 'Pri kontrole pravopisu neboli nájdené chyby.';
$messages['folderdeleted'] = 'Priečinok bol úspešne vymazaný.';
$messages['foldersubscribed'] = 'Prihlásenie k priečinku bolo úspešné.';
@@ -135,7 +138,7 @@ $messages['importmessagesuccess'] = 'Počet úspešne naimportovaných správ: $
$messages['importmessageerror'] = 'Importovanie bolo neúspešné! Odoslaný súbor nie je platným súborom pre importovanie';
$messages['opnotpermitted'] = 'Táto operácia nie je povolená!';
$messages['nofromaddress'] = 'Pri vybranej identite chýba e-mailová adresa.';
-$messages['editorwarning'] = 'Prepnutie na editor čistého textu spôsobí stratu formátovania. Naozaj chcete pokračovať?';
+$messages['editorwarning'] = 'Prepnutie druhu editora môže spôsobiť stratu formátovania. Naozaj chcete pokračovať?';
$messages['httpreceivedencrypterror'] = 'Vyskytla sa vážna chyba v konfigurácii. Ihneď kontaktujte administrátora. <b>Vašu správu nemožno odoslať.</b>';
$messages['smtpconnerror'] = 'Chyba SMTP ($code): Neúspešné pripojenie k serveru.';
$messages['smtpautherror'] = 'Chyba SMTP ($code): Neúspešná autentifikácia.';
diff --git a/program/localization/sl_SI/labels.inc b/program/localization/sl_SI/labels.inc
index b8d9d98ee..672842d23 100644
--- a/program/localization/sl_SI/labels.inc
+++ b/program/localization/sl_SI/labels.inc
@@ -203,9 +203,8 @@ $labels['restoremessage'] = 'Obnovi sporočilo';
$labels['responses'] = 'Odgovori';
$labels['insertresponse'] = 'Vnesi odgovor';
$labels['manageresponses'] = 'Uredi odgovore';
-$labels['savenewresponse'] = 'Shrani nove odgovore';
-$labels['editresponses'] = 'Uredi odgovore';
$labels['editresponse'] = 'Uredi odgovor';
+$labels['editresponses'] = 'Uredi odgovore';
$labels['responsename'] = 'Ime';
$labels['responsetext'] = 'Tekst za odgovor';
$labels['attach'] = 'Pripni';
@@ -288,7 +287,6 @@ $labels['typehomepage'] = 'Domača stran';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
$labels['addfield'] = 'Dodaj polje...';
-$labels['addcontact'] = 'Dodaj izbrane stike v imenik';
$labels['editcontact'] = 'Uredi vizitko';
$labels['contacts'] = 'Stiki';
$labels['contactproperties'] = 'Lastnosti stika';
@@ -301,7 +299,6 @@ $labels['rename'] = 'Preimenuj';
$labels['addphoto'] = 'Dodaj';
$labels['replacephoto'] = 'Zamenjaj';
$labels['uploadphoto'] = 'Naloži sliko';
-$labels['newcontact'] = 'Dodaj vizitko';
$labels['deletecontact'] = 'Izbriši izbrane vizitke';
$labels['composeto'] = 'Sestavi sporočilo za';
$labels['contactsfromto'] = 'Vizitke $from od $to do $count';
@@ -310,7 +307,6 @@ $labels['export'] = 'Izvozi';
$labels['exportall'] = 'Izvozi vse';
$labels['exportsel'] = 'Izvozi označeno';
$labels['exportvcards'] = 'Izvozi stike v formatu vCard';
-$labels['newcontactgroup'] = 'Ustvari novo skupino stikov';
$labels['grouprename'] = 'Preimenuj skupino';
$labels['groupdelete'] = 'Izbriši skupino';
$labels['groupremoveselected'] = 'Odstrani izbrane stike iz skupine';
@@ -340,10 +336,6 @@ $labels['preferences'] = 'Nastavitve';
$labels['userpreferences'] = 'Uporabniške nastavitve';
$labels['editpreferences'] = 'Uredi uporabniške nastavitve';
$labels['identities'] = 'Identitete';
-$labels['manageidentities'] = 'Upravljaj identitete za ta račun';
-$labels['newidentity'] = 'Nova identiteta';
-$labels['newitem'] = 'Nov predmet';
-$labels['edititem'] = 'Uredi predmet';
$labels['preferhtml'] = 'Prednostno HTML';
$labels['defaultcharset'] = 'Privzeto kodiranje znakov';
$labels['htmlmessage'] = 'HTML sporočilo';
@@ -400,6 +392,7 @@ $labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (ostali)';
$labels['force7bit'] = 'Uporabi MIME kodiranje za 8-bitne znake';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'Dodatne možnosti';
$labels['focusonnewmessage'] = 'Usmeri okno brskalnika na novo sporočilo';
$labels['checkallfolders'] = 'Preglej nova sporočila za vse mape';
@@ -442,14 +435,14 @@ $labels['asattachment'] = 'Kot priponka';
$labels['replyallmode'] = 'Privzete možnosti gumba [Odgovori vsem]';
$labels['replyalldefault'] = 'odgovori vsem';
$labels['replyalllist'] = 'odgovori na dopisni seznam (v kolikor ta obstaja)';
-$labels['folder'] = 'Mapa';
-$labels['folders'] = 'Mape';
-$labels['foldername'] = 'Ime mape';
-$labels['subscribed'] = 'Vpisan';
+$labels['folder'] = 'Mapa';
+$labels['folders'] = 'Mape';
+$labels['foldername'] = 'Ime mape';
+$labels['subscribed'] = 'Vpisan';
$labels['messagecount'] = 'Sporočila';
-$labels['create'] = 'Ustvari';
-$labels['createfolder'] = 'Ustvari novo mapo';
-$labels['managefolders'] = 'Uredi mape';
+$labels['create'] = 'Ustvari';
+$labels['createfolder'] = 'Ustvari novo mapo';
+$labels['managefolders'] = 'Uredi mape';
$labels['specialfolders'] = 'Posebne mape';
$labels['properties'] = 'Lastnosti';
$labels['folderproperties'] = 'Lastnosti mape';
@@ -459,9 +452,9 @@ $labels['info'] = 'Podatki';
$labels['getfoldersize'] = 'Klikni za prikaz velikosti mape';
$labels['changesubscription'] = 'Klikni za spremembo prijave mape';
$labels['foldertype'] = 'Tip mape';
-$labels['personalfolder'] = 'Zasebna mapa';
-$labels['otherfolder'] = 'Mapa drugega uporabnika';
-$labels['sharedfolder'] = 'Javna mapa';
+$labels['personalfolder'] = 'Zasebna mapa';
+$labels['otherfolder'] = 'Mapa drugega uporabnika';
+$labels['sharedfolder'] = 'Javna mapa';
$labels['sortby'] = 'Uredi po';
$labels['sortasc'] = 'Uredi naraščajoče';
$labels['sortdesc'] = 'Uredi padajoče';
@@ -494,4 +487,7 @@ $labels['vietnamese'] = 'Vietnamsko';
$labels['japanese'] = 'Japonsko';
$labels['korean'] = 'Korejsko';
$labels['chinese'] = 'Kitajsko';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/sl_SI/messages.inc b/program/localization/sl_SI/messages.inc
index 9b4370922..a93d4c443 100644
--- a/program/localization/sl_SI/messages.inc
+++ b/program/localization/sl_SI/messages.inc
@@ -135,7 +135,6 @@ $messages['importmessagesuccess'] = 'Upešno ste uvozili $nr sporočil.';
$messages['importmessageerror'] = 'Uvoz je spodletel. Naložena datoteka ni veljavno sporočilo ali poštna datoteka';
$messages['opnotpermitted'] = 'Operacija ni dovoljena.';
$messages['nofromaddress'] = 'V izbrani identiteti manjka elektronski naslov.';
-$messages['editorwarning'] = 'Preklop v splošen urejevalnik onemogoča uporabo izbranih nastavitev oblikovanja. Želite nadaljevati?';
$messages['httpreceivedencrypterror'] = 'Prišlo je do večje napake v konfiguraciji.Obrnite se na skrbnika sistema. <b>Sporočila ni bilo mogoče poslati.</b>';
$messages['smtpconnerror'] = 'Napaka pri pošiljanju ($code): Povezava s strežnikom je spodletela';
$messages['smtpautherror'] = 'Napaka pri pošiljanju($code): Avtentikacija je spodletela';
diff --git a/program/localization/sq_AL/labels.inc b/program/localization/sq_AL/labels.inc
index fa822a728..53f99547c 100644
--- a/program/localization/sq_AL/labels.inc
+++ b/program/localization/sq_AL/labels.inc
@@ -125,13 +125,11 @@ $labels['name'] = 'Emri që thirret';
$labels['firstname'] = 'Emri';
$labels['surname'] = 'Mbiemri';
$labels['email'] = 'E-Mail';
-$labels['addcontact'] = 'Shto një kontakt të ri';
$labels['editcontact'] = 'Ndrysho kontaktin';
$labels['edit'] = 'Ndrysho';
$labels['cancel'] = 'Anullo';
$labels['save'] = 'Ruaj';
$labels['delete'] = 'Fshi';
-$labels['newcontact'] = 'Krijo nje kartë të re kontakti';
$labels['deletecontact'] = 'Fshi kontaktet e zgjedhura';
$labels['composeto'] = 'Shkruaj email për';
$labels['contactsfromto'] = 'Kontaktet $from në $to nga $count';
@@ -148,10 +146,6 @@ $labels['preferences'] = 'Preferencat';
$labels['userpreferences'] = 'Preferencat e përdoruesit';
$labels['editpreferences'] = 'Ndrysho preferencat e përdoruesit';
$labels['identities'] = 'Identitetet';
-$labels['manageidentities'] = 'Manaxho identitetet per këtë llogari';
-$labels['newidentity'] = 'Identitet i ri';
-$labels['newitem'] = 'Element i ri';
-$labels['edititem'] = 'Ndrysho element';
$labels['preferhtml'] = 'Shfaq HTML';
$labels['htmlmessage'] = 'Mesazh HTML';
$labels['prettydate'] = 'Data të këndshme';
@@ -166,15 +160,19 @@ $labels['htmlsignature'] = 'Nënshkrimi HTML';
$labels['previewpane'] = 'Shiko si duket';
$labels['autosavedraft'] = 'Ruaje automatikisht si draft';
$labels['never'] = 'kurrë';
-$labels['folder'] = 'Kutia';
-$labels['folders'] = 'Kutitë';
-$labels['foldername'] = 'Emër kutie';
-$labels['subscribed'] = 'Regjistruar';
+$labels['savelocalstorage'] = "";
+$labels['folder'] = 'Kutia';
+$labels['folders'] = 'Kutitë';
+$labels['foldername'] = 'Emër kutie';
+$labels['subscribed'] = 'Regjistruar';
$labels['messagecount'] = 'Mesazhe';
-$labels['create'] = 'Krijo';
-$labels['createfolder'] = 'Krijo kuti të re';
-$labels['managefolders'] = 'Sistemo kutitë';
+$labels['create'] = 'Krijo';
+$labels['createfolder'] = 'Krijo kuti të re';
+$labels['managefolders'] = 'Sistemo kutitë';
$labels['sortby'] = 'Rradhit sipas';
$labels['sortasc'] = 'Rradhitje rritëse';
$labels['sortdesc'] = 'Rradhitje zbritëse';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/sr_CS/labels.inc b/program/localization/sr_CS/labels.inc
index e2d40b1b6..4c564bb6f 100644
--- a/program/localization/sr_CS/labels.inc
+++ b/program/localization/sr_CS/labels.inc
@@ -250,7 +250,6 @@ $labels['typehomepage'] = 'Почетна страница';
$labels['typeblog'] = 'Блог';
$labels['typeprofile'] = 'Профил';
$labels['addfield'] = 'Додај поље';
-$labels['addcontact'] = 'Додај нови контакт';
$labels['editcontact'] = 'Измени контакт';
$labels['contacts'] = 'Конакти';
$labels['contactproperties'] = 'Својства контакта';
@@ -263,14 +262,12 @@ $labels['rename'] = 'Преименуј';
$labels['addphoto'] = 'Додај';
$labels['replacephoto'] = 'Измени';
$labels['uploadphoto'] = 'Постави фотографију';
-$labels['newcontact'] = 'Додај нови контакт';
$labels['deletecontact'] = 'Обриши одабране контакте';
$labels['composeto'] = 'Напиши поруку...';
$labels['contactsfromto'] = 'Контакти $from до $to од укупно $count';
$labels['print'] = 'Штампај';
$labels['export'] = 'Извези';
$labels['exportvcards'] = 'Извези конакте у vCard формату';
-$labels['newcontactgroup'] = 'Креирај нову контакт групу';
$labels['grouprename'] = 'Преименуј групу';
$labels['groupdelete'] = 'Обриши групу';
$labels['groupremoveselected'] = 'Избриши изабране контакте из групе';
@@ -294,10 +291,6 @@ $labels['preferences'] = 'Подешавања';
$labels['userpreferences'] = 'Општа подешавања';
$labels['editpreferences'] = 'Измена општих подешавања';
$labels['identities'] = 'Идентитети';
-$labels['manageidentities'] = 'Подеси идентитете за овај налог';
-$labels['newidentity'] = 'Додај идентитет';
-$labels['newitem'] = 'Нова ставка';
-$labels['edititem'] = 'Измена ставке';
$labels['preferhtml'] = 'Предност дај ХТМЛ формату';
$labels['htmlmessage'] = 'ХТМЛ формат поруке';
$labels['dateformat'] = 'Формат датума';
@@ -335,6 +328,7 @@ $labels['mimeparamfolding'] = 'имена прилога';
$labels['2231folding'] = 'Full RFC 2231 (тхундербирд )';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (други)';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'Напредне опције';
$labels['focusonnewmessage'] = 'Фокусирати прозор претраживача на новој поруци';
$labels['checkallfolders'] = 'Проверите све фасцикле за нове поруке';
@@ -365,14 +359,14 @@ $labels['spellcheckoptions'] = 'Опције Провере правописа
$labels['spellcheckignoresyms'] = 'игнориши речи са симболима';
$labels['spellcheckignorenums'] = 'игнориши речи са бројевима';
$labels['addtodict'] = 'Додај у речник';
-$labels['folder'] = 'Фасцикла';
-$labels['folders'] = 'Фасцикле';
-$labels['foldername'] = 'Име фасцикле';
-$labels['subscribed'] = 'Потписана';
+$labels['folder'] = 'Фасцикла';
+$labels['folders'] = 'Фасцикле';
+$labels['foldername'] = 'Име фасцикле';
+$labels['subscribed'] = 'Потписана';
$labels['messagecount'] = 'Поруке';
-$labels['create'] = 'Креирај';
-$labels['createfolder'] = 'Креирај нову фасциклу';
-$labels['managefolders'] = 'Подеси фасциклу';
+$labels['create'] = 'Креирај';
+$labels['createfolder'] = 'Креирај нову фасциклу';
+$labels['managefolders'] = 'Подеси фасциклу';
$labels['specialfolders'] = 'Посебне фасцикле';
$labels['properties'] = 'Својства';
$labels['folderproperties'] = 'Својства фасцикле';
@@ -382,9 +376,9 @@ $labels['info'] = 'Информација';
$labels['getfoldersize'] = 'Кликните за приказ величине фасцикле';
$labels['changesubscription'] = 'Кликните да бисте променили опис';
$labels['foldertype'] = 'типа фасцикле';
-$labels['personalfolder'] = 'Приватна фасцикла';
-$labels['otherfolder'] = 'Фасцикла Других Корисникa';
-$labels['sharedfolder'] = 'Јавна фасцикла';
+$labels['personalfolder'] = 'Приватна фасцикла';
+$labels['otherfolder'] = 'Фасцикла Других Корисникa';
+$labels['sharedfolder'] = 'Јавна фасцикла';
$labels['sortby'] = 'Сортирај по';
$labels['sortasc'] = 'Сортирај растуће';
$labels['sortdesc'] = 'Сортирај опадајуће';
@@ -416,4 +410,7 @@ $labels['vietnamese'] = 'Вијетнамски';
$labels['japanese'] = 'Јапански';
$labels['korean'] = 'Кореански';
$labels['chinese'] = 'Кинески';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/sr_CS/messages.inc b/program/localization/sr_CS/messages.inc
index 2d4efc408..cb25321e2 100644
--- a/program/localization/sr_CS/messages.inc
+++ b/program/localization/sr_CS/messages.inc
@@ -119,7 +119,6 @@ $messages['importconfirm'] = '<b>Успешно увезжени $inserted ко
$messages['importconfirmskipped'] = '<b>Прескочени $skipped постојећи уноси </b>';
$messages['opnotpermitted'] = 'Операција није дозвољена!';
$messages['nofromaddress'] = 'Недостаје имејл адреса у изабраном налогу';
-$messages['editorwarning'] = 'Пребацивање на обичан текст едитор ће изазвати губитак целог форматирања. Да ли желите да наставите?';
$messages['httpreceivedencrypterror'] = 'Фатална грешка у конфигурацији. Контактирајте одмах Вашег администратора. <b>Ваша порука не може бити послата.</b>';
$messages['smtpconnerror'] = 'SMTP Error ($code): Конекција на сервер није успела';
$messages['smtpautherror'] = 'SMTP Error ($code): Аутентификација неуспешна';
diff --git a/program/localization/sv_SE/labels.inc b/program/localization/sv_SE/labels.inc
index 6b7765269..f2d4c91d5 100644
--- a/program/localization/sv_SE/labels.inc
+++ b/program/localization/sv_SE/labels.inc
@@ -131,16 +131,24 @@ $labels['moreactions'] = 'Fler åtgärder...';
$labels['more'] = 'Fler';
$labels['back'] = 'Tillbaka';
$labels['options'] = 'Alternativ';
+$labels['first'] = 'Första';
+$labels['last'] = 'Sista';
+$labels['previous'] = 'Föregående';
+$labels['next'] = 'Nästa';
$labels['select'] = 'Välj';
$labels['all'] = 'Alla';
$labels['none'] = 'Ingen';
$labels['currpage'] = 'Sida';
+$labels['isread'] = 'Läst';
$labels['unread'] = 'Olästa';
$labels['flagged'] = 'Flaggade';
+$labels['unflagged'] = 'Inte flaggat';
$labels['unanswered'] = 'Obesvarade';
$labels['withattachment'] = 'Med bilaga';
$labels['deleted'] = 'Borttagna';
$labels['undeleted'] = 'Inte borttagna';
+$labels['replied'] = 'Besvarat';
+$labels['forwarded'] = 'Vidarebefordrat';
$labels['invert'] = 'Invertera';
$labels['filter'] = 'Filter';
$labels['list'] = 'Lista';
@@ -171,6 +179,11 @@ $labels['importmessages'] = 'Importera meddelanden';
$labels['quota'] = 'Diskutrymme';
$labels['unknown'] = 'okänt';
$labels['unlimited'] = 'obegränsat';
+$labels['quotatype'] = 'Typ av kvot';
+$labels['quotatotal'] = 'Gräns';
+$labels['quotaused'] = 'Utnyttjad';
+$labels['quotastorage'] = 'Storlek';
+$labels['quotamessage'] = 'Antal meddelanden';
$labels['quicksearch'] = 'Snabbsök';
$labels['resetsearch'] = 'Återställ sökning';
$labels['searchmod'] = 'Sökalternativ';
@@ -178,6 +191,10 @@ $labels['msgtext'] = 'Hela meddelandet';
$labels['body'] = 'Innehåll';
$labels['type'] = 'Typ';
$labels['namex'] = 'Namn';
+$labels['searchscope'] = 'Omfattning';
+$labels['currentfolder'] = 'Nuvarande katalog';
+$labels['subfolders'] = 'Denna och underkataloger';
+$labels['allfolders'] = 'Samtliga kataloger';
$labels['openinextwin'] = 'Öppna i nytt fönster';
$labels['emlsave'] = 'Spara (.eml)';
$labels['changeformattext'] = 'Visa i text-format';
@@ -193,6 +210,10 @@ $labels['returnreceipt'] = 'Mottagarkvitto';
$labels['dsn'] = 'Leveransstatusmeddelande';
$labels['mailreplyintro'] = '$date skrev $sender:';
$labels['originalmessage'] = 'Ursprungligt meddelande';
+$labels['selectimage'] = 'Välj bild';
+$labels['addimage'] = 'Lägg till bild';
+$labels['selectmedia'] = 'Välj film';
+$labels['addmedia'] = 'Lägg till film';
$labels['editidents'] = 'Ändra identiteter';
$labels['spellcheck'] = 'Rättstava';
$labels['checkspelling'] = 'Kontrollera stavning';
@@ -203,10 +224,11 @@ $labels['restoremessage'] = 'Återskapa meddelande?';
$labels['responses'] = 'Responser';
$labels['insertresponse'] = 'Infoga respons';
$labels['manageresponses'] = 'Hantera responser';
-$labels['savenewresponse'] = 'Spara ny respons';
-$labels['editresponses'] = 'Ändra responser';
+$labels['newresponse'] = 'Ny respons';
+$labels['addresponse'] = 'Lägg till respons';
$labels['editresponse'] = 'Ändra respons';
-$labels['responsename'] = 'Namn';
+$labels['editresponses'] = 'Ändra responser';
+$labels['responsename'] = 'Responsnamn';
$labels['responsetext'] = 'Responstext';
$labels['attach'] = 'Bifoga';
$labels['attachments'] = 'Bilagor';
@@ -214,6 +236,7 @@ $labels['upload'] = 'Bifoga';
$labels['uploadprogress'] = '$percent ($current av $total)';
$labels['close'] = 'Stäng';
$labels['messageoptions'] = 'Meddelandealternativ...';
+$labels['togglecomposeoptions'] = 'Växla skapandeinställningar';
$labels['low'] = 'Låg';
$labels['lowest'] = 'Lägst';
$labels['normal'] = 'Normal';
@@ -270,6 +293,7 @@ $labels['assistant'] = 'Assistent';
$labels['spouse'] = 'Make/Maka';
$labels['allfields'] = 'Alla fält';
$labels['search'] = 'Sök';
+$labels['searchfor'] = 'Sök efter "$q"';
$labels['advsearch'] = 'Avancerad sökning';
$labels['advanced'] = 'Avancerad';
$labels['other'] = 'Annat';
@@ -288,11 +312,13 @@ $labels['typehomepage'] = 'Webbsida';
$labels['typeblog'] = 'Blogg';
$labels['typeprofile'] = 'Profil';
$labels['addfield'] = 'Lägg till fält...';
-$labels['addcontact'] = 'Lägg till ny kontakt';
+$labels['addcontact'] = 'Lägg till kontakt';
$labels['editcontact'] = 'Ändra kontakt';
$labels['contacts'] = 'Kontakter';
$labels['contactproperties'] = 'Kontaktegenskaper';
+$labels['contactnameandorg'] = 'Namn och organisation';
$labels['personalinfo'] = 'Personlig information';
+$labels['contactphoto'] = 'Kontaktfoto';
$labels['edit'] = 'Redigera';
$labels['cancel'] = 'Avbryt';
$labels['save'] = 'Spara';
@@ -310,10 +336,11 @@ $labels['export'] = 'Exportera';
$labels['exportall'] = 'Exportera alla';
$labels['exportsel'] = 'Exportera markerade';
$labels['exportvcards'] = 'Exportera kontakter';
-$labels['newcontactgroup'] = 'Ny kontaktgrupp';
+$labels['newgroup'] = 'Ny grupp';
$labels['grouprename'] = 'Ändra gruppnamn';
$labels['groupdelete'] = 'Ta bort grupp';
$labels['groupremoveselected'] = 'Ta bort markerade kontakter från gruppen';
+$labels['uponelevel'] = 'Upp en nivå';
$labels['previouspage'] = 'Visa föregående sida';
$labels['firstpage'] = 'Visa första sidan';
$labels['nextpage'] = 'Visa nästa sida';
@@ -342,8 +369,8 @@ $labels['editpreferences'] = 'Ändra användarinställningar';
$labels['identities'] = 'Identiteter';
$labels['manageidentities'] = 'Hantera identiteter';
$labels['newidentity'] = 'Ny identitet';
-$labels['newitem'] = 'Ny information';
-$labels['edititem'] = 'Ändra information';
+$labels['addidentity'] = 'Lägg till identitet';
+$labels['editidentity'] = 'Ändra identitet';
$labels['preferhtml'] = 'Visa meddelanden i HTML-format';
$labels['defaultcharset'] = 'Förvald teckenkodning';
$labels['htmlmessage'] = 'HTML-meddelande';
@@ -400,7 +427,9 @@ $labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (övriga)';
$labels['force7bit'] = 'Använd MIME-kodning för tecken med 8-bitar';
+$labels['savelocalstorage'] = "Spara lokalt (tillfälligt)";
$labels['advancedoptions'] = 'Avancerade inställningar';
+$labels['toggleadvancedoptions'] = 'Växla avancerade inställningar';
$labels['focusonnewmessage'] = 'Fokusera webbläsarens fönster vid nytt meddelande';
$labels['checkallfolders'] = 'Genomsök samtliga kataloger efter nya meddelanden';
$labels['displaynext'] = 'Visa nästa meddelande efter borttagning/flyttning av meddelande';
@@ -442,14 +471,14 @@ $labels['asattachment'] = 'Bilaga';
$labels['replyallmode'] = 'Standardfunktion för knappen Svara alla';
$labels['replyalldefault'] = 'Svara alla';
$labels['replyalllist'] = 'Svara endast lista (i förekommande fall)';
-$labels['folder'] = 'Katalog';
-$labels['folders'] = 'Kataloger';
-$labels['foldername'] = 'Katalognamn';
-$labels['subscribed'] = 'Prenumererad';
+$labels['folder'] = 'Katalog';
+$labels['folders'] = 'Kataloger';
+$labels['foldername'] = 'Katalognamn';
+$labels['subscribed'] = 'Prenumererad';
$labels['messagecount'] = 'Meddelanden';
-$labels['create'] = 'Skapa';
-$labels['createfolder'] = 'Ny katalog';
-$labels['managefolders'] = 'Hantera kataloger';
+$labels['create'] = 'Skapa';
+$labels['createfolder'] = 'Ny katalog';
+$labels['managefolders'] = 'Hantera kataloger';
$labels['specialfolders'] = 'Speciella kataloger';
$labels['properties'] = 'Egenskaper';
$labels['folderproperties'] = 'Katalogegenskaper';
@@ -459,9 +488,13 @@ $labels['info'] = 'Information';
$labels['getfoldersize'] = 'Beräkna katalogstorlek';
$labels['changesubscription'] = 'Klicka för att ändra prenumeration';
$labels['foldertype'] = 'Katalogtyp';
-$labels['personalfolder'] = 'Privat katalog';
-$labels['otherfolder'] = 'Annan användares katalog';
-$labels['sharedfolder'] = 'Publik katalog';
+$labels['personalfolder'] = 'Privat katalog';
+$labels['otherfolder'] = 'Annan användares katalog';
+$labels['sharedfolder'] = 'Publik katalog';
+$labels['findfolders'] = 'Hitta kataloger';
+$labels['namespace.personal'] = 'Personliga';
+$labels['namespace.other'] = 'Andra användares';
+$labels['namespace.shared'] = 'Delade';
$labels['sortby'] = 'Sortera på';
$labels['sortasc'] = 'Sortera stigande';
$labels['sortdesc'] = 'Sortera fallande';
@@ -494,4 +527,53 @@ $labels['vietnamese'] = 'Vietnamesisk';
$labels['japanese'] = 'Japansk';
$labels['korean'] = 'Koreansk';
$labels['chinese'] = 'Kinesisk';
+$labels['arialabeltopnav'] = 'Fönsterkontroll';
+$labels['arialabeltasknav'] = 'Programuppgifter';
+$labels['arialabeltoolbar'] = 'Programmets verktygslist';
+$labels['arialabelactivetask'] = 'Aktiv uppgift';
+$labels['arialabelmessagessearchfilter'] = 'Meddelandelistningsfilter';
+$labels['arialabelmailsearchform'] = 'Sökformulär för meddelande';
+$labels['arialabelcontactsearchform'] = 'Sökformulär för kontakter';
+$labels['arialabelmailquicksearchbox'] = 'Meddelandesökfält';
+$labels['arialabelquicksearchbox'] = 'Sökfält';
+$labels['arialabelfoldersearchfilter'] = 'Kataloglistningsfilter';
+$labels['arialabelfoldersearchform'] = 'Sökformulär för kataloger';
+$labels['arialabelfolderlist'] = 'Markering av meddelandekatalog';
+$labels['arialabelmessagelist'] = 'Meddelandelistning';
+$labels['arialabelmailpreviewframe'] = 'Förhandsvisning av meddelande';
+$labels['arialabelmailboxmenu'] = 'Kataloghanteringsmeny';
+$labels['arialabellistselectmenu'] = 'Listmarkeringsmeny';
+$labels['arialabelthreadselectmenu'] = 'Trådlistningsmeny';
+$labels['arialabelmessagelistoptions'] = 'Alternativ för visning och sortering av meddelandelista';
+$labels['arialabelmailimportdialog'] = 'Dialog för import av meddelande';
+$labels['arialabelmessagenav'] = 'Meddelandenavigering';
+$labels['arialabelmessagebody'] = 'Meddelandeinnehåll';
+$labels['arialabelmessageactions'] = 'Meddelandehantering';
+$labels['arialabelcontactquicksearch'] = 'Sökformulär för kontakter';
+$labels['arialabelcontactsearchbox'] = 'Kontaktsökfält';
+$labels['arialabelmessageheaders'] = 'Meddelandehuvuden';
+$labels['arialabelforwardingoptions'] = 'Alternativ för vidarebefordran';
+$labels['arialabelreplyalloptions'] = 'Alternativ för svara alla';
+$labels['arialabelmoremessageactions'] = 'Ytterligare meddelandehantering';
+$labels['arialabelmarkmessagesas'] = 'Märk markerat meddelande som...';
+$labels['arialabelcomposeoptions'] = 'Skapandeinställningar';
+$labels['arialabelresponsesmenu'] = 'Responsmeny';
+$labels['arialabelattachmentuploadform'] = 'Uppladdningsformulär för bilaga';
+$labels['arialabelattachmentpreview'] = 'Förhandsvisning av bilaga';
+$labels['ariasummarycomposecontacts'] = 'Lista med kontakter och grupper att använda som mottagare';
+$labels['arialabelcontactexportoptions'] = 'Exportalternativ för kontakter';
+$labels['arialabelabookgroupoptions'] = 'Alternativ för adressbok/kontaktgrupp';
+$labels['arialabelpreferencesform'] = 'Inställningsformulär';
+$labels['arialabelidentityeditfrom'] = 'Ändringsformulär för identitet';
+$labels['arialabelresonseeditfrom'] = 'Ändringsformulär för respons';
+$labels['arialabelsearchterms'] = 'Sökord';
+$labels['helplistnavigation'] = 'Listnavigering';
+$labels['helplistkeyboardnavigation'] = "Piltangent upp/ner: Flytta radfokus/radmarkering.
+Mellanslag: Välj fokuserad rad.
+Shift + upp/ner: Välj ytterligare rad över/under.
+Ctrl + mellanslag: Lägg till/ta bort fokuserad rad i markering.";
+$labels['helplistkeyboardnavmessages'] = "Piltangent höger/vänster: visa/göm meddelandetråd (endast i trådvisningsläge).
+Retur: Öppna markerat/fokuserat meddelande.
+Backsteg: Flytta markerat meddelande till Papperskorg.";
+$labels['helplistkeyboardnavcontacts'] = "Retur: Öppna markerad/fokuserad kontakt.";
?>
diff --git a/program/localization/sv_SE/messages.inc b/program/localization/sv_SE/messages.inc
index 7efc08013..ae2b1e9ca 100644
--- a/program/localization/sv_SE/messages.inc
+++ b/program/localization/sv_SE/messages.inc
@@ -19,10 +19,12 @@ $messages['errortitle'] = 'Ett fel uppstod!';
$messages['loginfailed'] = 'Inloggningen misslyckades';
$messages['cookiesdisabled'] = 'Din webbläsare accepterar inte cookies';
$messages['sessionerror'] = 'Din inloggning är felaktig eller har gått ut';
-$messages['storageerror'] = 'Anslutning till IMAP-servern misslyckades';
+$messages['storageerror'] = 'Anslutning till lagringsservern misslyckades.';
$messages['servererror'] = 'Serverfel!';
$messages['servererrormsg'] = 'Serverfel: $msg';
+$messages['connerror'] = 'Anslutningsfel (misslyckades att kontakta servern)!';
$messages['dberror'] = 'Databasfel!';
+$messages['windowopenerror'] = 'Popup-fönstret blockerades!';
$messages['requesttimedout'] = 'Begäran tog för lång tid';
$messages['errorreadonly'] = 'Åtgärden kunde inte utföras. Katalogen är skrivskyddad.';
$messages['errornoperm'] = 'Åtgärden kunde inte utföras. Otillräcklig befogenhet.';
@@ -92,6 +94,7 @@ $messages['contactsearchsuccessful'] = '$nr kontakter hittades.';
$messages['searchnomatch'] = 'Sökningen gav inget resultat.';
$messages['searching'] = 'Söker...';
$messages['checking'] = 'Kontrollerar...';
+$messages['stillsearching'] = 'Söker fortfarande...';
$messages['nospellerrors'] = 'Inget stavfel hittades.';
$messages['folderdeleted'] = 'Katalogen togs bort.';
$messages['foldersubscribed'] = 'Prenumeration på katalog startad.';
@@ -135,7 +138,7 @@ $messages['importmessagesuccess'] = '$nr meddelanden har importerats';
$messages['importmessageerror'] = 'Importen misslyckades! Filen är inte ett giltigt meddelande eller en brevlåda';
$messages['opnotpermitted'] = 'Otillåten operation!';
$messages['nofromaddress'] = 'Adress saknas i den valda identiteten.';
-$messages['editorwarning'] = 'Genom att växla till text-läge går formateringen förlorad. Vill du fortsätta?';
+$messages['editorwarning'] = 'Genom att byta textredigerare kan formateringen av texten gå förlorad. Vill du fortsätta?';
$messages['httpreceivedencrypterror'] = 'Ett irreparabelt fel har uppstått. Kontakta administratören omgående. <b>Meddelandet kan inte skickas.</b>';
$messages['smtpconnerror'] = 'SMTP-fel ($code): Anslutning till servern misslyckades.';
$messages['smtpautherror'] = 'SMTP-fel ($code): Inloggningen misslyckades.';
diff --git a/program/localization/ta_IN/labels.inc b/program/localization/ta_IN/labels.inc
index dd8c134ba..5c4516d70 100644
--- a/program/localization/ta_IN/labels.inc
+++ b/program/localization/ta_IN/labels.inc
@@ -165,13 +165,11 @@ $labels['name'] = 'காட்சி பெயர்';
$labels['firstname'] = 'முதற் பெயர்';
$labels['surname'] = 'கடைசி பெயர்';
$labels['email'] = 'மின்னஞ்சல்';
-$labels['addcontact'] = 'புது தொடர்பை சேர்';
$labels['editcontact'] = 'தொடர்பை திருத்து';
$labels['edit'] = 'திருத்து';
$labels['cancel'] = 'ரத்து';
$labels['save'] = 'சேமி';
$labels['delete'] = 'நீக்கு';
-$labels['newcontact'] = 'புது தொடர்பு அட்டையை உருவாக்கு';
$labels['deletecontact'] = 'தேர்ந்தெடுத்த தொடர்புகளை நீக்கு';
$labels['composeto'] = 'இவர்-கு அஞ்சல் எழுது';
$labels['contactsfromto'] = 'தொடர்புகள் $countல் $from லிருந்து $to வரை';
@@ -194,10 +192,6 @@ $labels['preferences'] = 'விருப்பங்கள்';
$labels['userpreferences'] = 'பயனர் விருப்பங்கள்';
$labels['editpreferences'] = 'பயனர் விருப்பங்களை திருத்து';
$labels['identities'] = 'அடையாளங்கள்';
-$labels['manageidentities'] = 'இந்த கணக்கிற்கான அடையாளங்களை நிற்வாகிக்கவும்';
-$labels['newidentity'] = 'புது அடையாளம்';
-$labels['newitem'] = 'புது உருப்படி';
-$labels['edititem'] = 'உருப்படியை திருத்து';
$labels['preferhtml'] = 'HTML காட்டு';
$labels['htmlmessage'] = 'HTML செய்தி';
$labels['prettydate'] = 'நல்ல தேதி';
@@ -237,6 +231,7 @@ $labels['mimeparamfolding'] = 'இணைப்பு பெயர்கள்';
$labels['2231folding'] = 'முழு RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'முழு RFC 2047 (மற்ற)';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'மேம்பட்ட விருப்பங்கள்';
$labels['focusonnewmessage'] = 'உலாவி சாளரத்தை புது செய்திக்காக கவனி';
$labels['checkallfolders'] = 'புது செய்திகளுக்காக எல்லா அடைவுகளையும் சரிபார்';
@@ -254,14 +249,14 @@ $labels['autoaddsignature'] = 'தானாக கையொப்பத்த
$labels['newmessageonly'] = 'புது செய்தி மட்டும்';
$labels['replyandforwardonly'] = 'பதிலளிப்பு முன்அனுப்பு மட்டும்';
$labels['insertsignature'] = 'கையோப்பமிடு';
-$labels['folder'] = 'அடைவு';
-$labels['folders'] = 'அடைவுகள்';
-$labels['foldername'] = 'அடைவு பெயர்';
-$labels['subscribed'] = 'சந்தா';
+$labels['folder'] = 'அடைவு';
+$labels['folders'] = 'அடைவுகள்';
+$labels['foldername'] = 'அடைவு பெயர்';
+$labels['subscribed'] = 'சந்தா';
$labels['messagecount'] = 'செய்திகள்';
-$labels['create'] = 'உருவாக்கு';
-$labels['createfolder'] = 'புது அடைவு உருவாக்கு';
-$labels['managefolders'] = 'அடைவுகளை நிற்வகி';
+$labels['create'] = 'உருவாக்கு';
+$labels['createfolder'] = 'புது அடைவு உருவாக்கு';
+$labels['managefolders'] = 'அடைவுகளை நிற்வகி';
$labels['specialfolders'] = 'சிறப்பு அடைவுகள்';
$labels['sortby'] = 'வாரியாக அடுக்கு';
$labels['sortasc'] = 'ஏறு வரிசையாக அடுக்கு';
@@ -270,4 +265,7 @@ $labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/ta_IN/messages.inc b/program/localization/ta_IN/messages.inc
index 0da63d2af..3514e384c 100644
--- a/program/localization/ta_IN/messages.inc
+++ b/program/localization/ta_IN/messages.inc
@@ -15,14 +15,17 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
+$messages['errortitle'] = 'பிழை ஏற்பட்டது!';
$messages['loginfailed'] = 'நுழைவு தோல்வியடைந்தது';
$messages['cookiesdisabled'] = 'உங்கள் உலாவி நினைவிகளை அனுமதிப்பதில்லை';
$messages['sessionerror'] = 'உங்கள் அமர்வு செல்லாது அல்லது முடிவுற்றது';
$messages['storageerror'] = 'IMAP சேவையகத்திற்கான இணைப்பு தோல்வியடைந்தது';
$messages['servererror'] = 'சேவையக பிழை!';
+$messages['servererrormsg'] = 'சேவையக பிழை: $msg';
$messages['invalidrequest'] = 'செல்லாத வேண்டுகோள்! எந்த தரவும் சேமிக்கப்படவில்லை.';
$messages['nomessagesfound'] = 'இந்த தபால் பெட்டியில் எந்த தரவும் சேமிக்கப்படவில்லை';
$messages['loggedout'] = 'நீங்கள் அமர்வை வெற்றிகரமாக முடித்தீர்கள். வணக்கம்';
+$messages['mailboxempty'] = 'தபால் பெட்டி காலியாக உள்ளது';
$messages['loading'] = 'ஏற்றுகிறது...';
$messages['uploading'] = 'கோப்பை ஏற்றுகிறது...';
$messages['loadingdata'] = 'தரவை ஏற்றுகிறது...';
@@ -85,7 +88,6 @@ $messages['importwait'] = 'ஏற்றுகிறது, தயவு செ
$messages['importconfirm'] = '<b>வெற்றிகரமாக $inserted தொடர்புகள் ஏற்றப்பட்டது, ஏற்கனவே உள்ள $skipped தொடர்புகள் தவிர்க்கப்பட்டது</b>: <p><em>$names</em></p>';
$messages['opnotpermitted'] = 'பணி அனுமதிக்கப்படவில்லை!';
$messages['nofromaddress'] = 'நீங்கள் தேர்ந்தெடுத்த அடையாளத்தில் மின்னஞ்சல் இல்லை';
-$messages['editorwarning'] = 'எளிய உரை திருத்திக்கு மாறுவதன் மூலம் எல்லா உரை வடிவங்களும் தொலைந்து போகக் கூடும். தொடர விரும்புகிறீர்களா ?';
$messages['httpreceivedencrypterror'] = 'அமைப்பில் பெரிய பிழை ஏற்பட்டது. உங்கள் நிர்வாகியை உடனே தொடர்பு கொள்ளவும். <b>உங்கள் செய்தியை அனுப்ப முடியாது.</b>';
$messages['smtpconnerror'] = 'SMTP பிழை ($code): சேவையகத்தின் இணைப்பு தோல்வியடைந்தது';
$messages['smtpautherror'] = 'SMTP பிழை ($code): நம்பகத்தன்மை தோல்வியடைந்தது';
diff --git a/program/localization/th_TH/labels.inc b/program/localization/th_TH/labels.inc
index 9ee0858e2..1d333aa5b 100644
--- a/program/localization/th_TH/labels.inc
+++ b/program/localization/th_TH/labels.inc
@@ -213,7 +213,6 @@ $labels['typehomepage'] = 'โฮมเพจ';
$labels['typeblog'] = 'บล็อก';
$labels['typeprofile'] = 'โปรไฟล์';
$labels['addfield'] = 'เพิ่มช่องข้อมูล...';
-$labels['addcontact'] = 'เพิ่มรายชื่อ';
$labels['editcontact'] = 'แก้ไขรายชื่อ';
$labels['edit'] = 'แก้ไข';
$labels['cancel'] = 'ยกเลิก';
@@ -221,7 +220,6 @@ $labels['save'] = 'บันทึก';
$labels['delete'] = 'ลบ';
$labels['rename'] = 'เปลี่ยนชื่อ';
$labels['addphoto'] = 'เพิ่ม';
-$labels['newcontact'] = 'สร้างรายชื่อใหม่';
$labels['deletecontact'] = 'ลบรายชื่อที่เลือก';
$labels['composeto'] = 'เขียนจดหมายถึง';
$labels['contactsfromto'] = 'รายชื่อ $from ถึง $to จำนวน $count';
@@ -236,10 +234,6 @@ $labels['preferences'] = 'ปรับแต่ง';
$labels['userpreferences'] = 'ข้อมูลส่วนตัว';
$labels['editpreferences'] = 'แก้ไขข้อมูลส่วนตัว';
$labels['identities'] = 'ชื่อแสดงตัว';
-$labels['manageidentities'] = 'จัดการชื่อแสดงตัวสำหรับรายชื่อนี้';
-$labels['newidentity'] = 'ชื่อแสดงตัวใหม่';
-$labels['newitem'] = 'New item';
-$labels['edititem'] = 'Edit item';
$labels['preferhtml'] = 'อ่านแบบ HTML';
$labels['htmlmessage'] = 'จดหมาย HTML';
$labels['prettydate'] = 'แสดงวันที่แบบย่อ';
@@ -254,6 +248,7 @@ $labels['htmlsignature'] = 'ลายมือชื่อแบบ HTML';
$labels['previewpane'] = 'แสดงหน้าต่างตัวอย่างแสดงผล';
$labels['autosavedraft'] = 'บันทึกเป็นจดหมายร่างอัตโนมัติ';
$labels['never'] = 'ไม่ใช้';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'ตัวเลือกขั้นสูง';
$labels['newmessage'] = 'ข้อความใหม่';
$labels['signatureoptions'] = 'ตัวเลือกสำหรับลายเซ็็นต์';
@@ -263,22 +258,22 @@ $labels['newmessageonly'] = 'เฉพาะข้อความใหม่เ
$labels['replyandforwardonly'] = 'ตอบกลับและส่งต่อเท่านั้น';
$labels['insertsignature'] = 'แทรกลายเซ็นต์';
$labels['asattachment'] = 'เป็นไฟล์แนบ';
-$labels['folder'] = 'กล่องจดหมาย';
-$labels['folders'] = 'กล่องจดหมาย';
-$labels['foldername'] = 'ชื่อกล่องจดหมาย';
-$labels['subscribed'] = 'ลงชื่อ';
+$labels['folder'] = 'กล่องจดหมาย';
+$labels['folders'] = 'กล่องจดหมาย';
+$labels['foldername'] = 'ชื่อกล่องจดหมาย';
+$labels['subscribed'] = 'ลงชื่อ';
$labels['messagecount'] = 'ข้อความ';
-$labels['create'] = 'สร้าง';
-$labels['createfolder'] = 'สร้างกล่องจดหมาย';
-$labels['managefolders'] = 'จัดการกล่องจดหมาย';
+$labels['create'] = 'สร้าง';
+$labels['createfolder'] = 'สร้างกล่องจดหมาย';
+$labels['managefolders'] = 'จัดการกล่องจดหมาย';
$labels['specialfolders'] = 'โฟลเดอร์พิเศษ';
$labels['properties'] = 'คุณสมบัติ';
$labels['folderproperties'] = 'คุณสมบัติเกี่ยวกับโฟลเดอร์';
$labels['parentfolder'] = 'โฟลเดอร์แม่';
$labels['info'] = 'ข้อมูล';
$labels['foldertype'] = 'ประเภทโฟลเดอร์';
-$labels['personalfolder'] = 'โฟลเดอร์ส่วนตัว';
-$labels['sharedfolder'] = 'โฟลเดอร์สาธารณะ';
+$labels['personalfolder'] = 'โฟลเดอร์ส่วนตัว';
+$labels['sharedfolder'] = 'โฟลเดอร์สาธารณะ';
$labels['sortby'] = 'เรียงตาม';
$labels['sortasc'] = 'เรียงจากหน้าไปหลัง';
$labels['sortdesc'] = 'เรียงจากหลังไปหน้า';
@@ -292,4 +287,7 @@ $labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
$labels['unicode'] = 'Unicode';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/ti/labels.inc b/program/localization/ti/labels.inc
index 2919f47c0..da52037b3 100644
--- a/program/localization/ti/labels.inc
+++ b/program/localization/ti/labels.inc
@@ -59,4 +59,8 @@ $labels['wednesday'] = 'ረቡዕ';
$labels['thursday'] = 'ሓሙስ';
$labels['friday'] = 'ዓርቢ ';
$labels['saturday'] = 'ቀዳም';
+$labels['savelocalstorage'] = "";
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/tr_TR/labels.inc b/program/localization/tr_TR/labels.inc
index 99122ccad..a122ad4dd 100644
--- a/program/localization/tr_TR/labels.inc
+++ b/program/localization/tr_TR/labels.inc
@@ -131,16 +131,24 @@ $labels['moreactions'] = 'Diğer İşlemler';
$labels['more'] = 'Daha Fazla';
$labels['back'] = 'Geri';
$labels['options'] = 'Seçenekler';
+$labels['first'] = 'İlk';
+$labels['last'] = 'Son';
+$labels['previous'] = 'Önceki';
+$labels['next'] = 'Sonraki';
$labels['select'] = 'Seç';
$labels['all'] = 'Hepsini';
$labels['none'] = 'Yok';
$labels['currpage'] = 'Şimdiki sayfa';
+$labels['isread'] = 'Oku';
$labels['unread'] = 'Okunmamışları';
$labels['flagged'] = 'İşaretlenmişleri';
+$labels['unflagged'] = 'İşaretlenmedi';
$labels['unanswered'] = 'Yanıtlanmamışları';
$labels['withattachment'] = 'Eklenti ile';
$labels['deleted'] = 'Silinmişleri';
$labels['undeleted'] = 'Silinmemiş';
+$labels['replied'] = 'Cevaplandı';
+$labels['forwarded'] = 'Yönlendirildi';
$labels['invert'] = 'Seçimi Tersine Çevir';
$labels['filter'] = 'Göster';
$labels['list'] = 'Liste';
@@ -171,6 +179,11 @@ $labels['importmessages'] = 'Mesajları içe aktar';
$labels['quota'] = 'Disk kullanımı';
$labels['unknown'] = 'bilinmeyen';
$labels['unlimited'] = 'sınırsız';
+$labels['quotatype'] = 'Kota tipi';
+$labels['quotatotal'] = 'Limit';
+$labels['quotaused'] = 'Kullanılan';
+$labels['quotastorage'] = 'Disk boyutu';
+$labels['quotamessage'] = 'Mesaj Sayısı';
$labels['quicksearch'] = 'Hızlı arama';
$labels['resetsearch'] = 'Aramayı bitir';
$labels['searchmod'] = 'Arama detayları';
@@ -178,6 +191,10 @@ $labels['msgtext'] = 'Tüm posta gövdesi';
$labels['body'] = 'Gövde';
$labels['type'] = 'Tip';
$labels['namex'] = 'Ad';
+$labels['searchscope'] = 'Kapsam';
+$labels['currentfolder'] = 'Mevcut dizin';
+$labels['subfolders'] = 'Bu ve alt dizinler';
+$labels['allfolders'] = 'Tüm dizinler';
$labels['openinextwin'] = 'Yeni pencerede aç';
$labels['emlsave'] = 'İndir (.eml)';
$labels['changeformattext'] = 'Düz yazı formatında göster';
@@ -193,6 +210,10 @@ $labels['returnreceipt'] = 'Alındı onayı';
$labels['dsn'] = 'Teslimat durumu bildirisi';
$labels['mailreplyintro'] = '$date, $sender yazmış:';
$labels['originalmessage'] = 'Özgün ileti';
+$labels['selectimage'] = 'Resim seç';
+$labels['addimage'] = 'Resim ekle';
+$labels['selectmedia'] = 'Video seç';
+$labels['addmedia'] = 'Video ekle';
$labels['editidents'] = 'Kimlikleri düzenle';
$labels['spellcheck'] = 'Yazım denetimi';
$labels['checkspelling'] = 'Yazım denetimi yap';
@@ -203,9 +224,10 @@ $labels['restoremessage'] = 'Mesajı geri yükle?';
$labels['responses'] = 'Yanıtlar';
$labels['insertresponse'] = 'Yanıt ekle';
$labels['manageresponses'] = 'Yanıtları yönet';
-$labels['savenewresponse'] = 'Yeni yanıt kaydet';
-$labels['editresponses'] = 'Yanıtları düzenle';
+$labels['newresponse'] = 'Yeni cevaplama oluştur';
+$labels['addresponse'] = 'Cevaplama ekle';
$labels['editresponse'] = 'Yanıtı düzenle';
+$labels['editresponses'] = 'Yanıtları düzenle';
$labels['responsename'] = 'Ad';
$labels['responsetext'] = 'Yanıt metni';
$labels['attach'] = 'Ekle';
@@ -214,6 +236,7 @@ $labels['upload'] = 'Yükle';
$labels['uploadprogress'] = '$percent ($current / $total)';
$labels['close'] = 'Kapat';
$labels['messageoptions'] = 'İleti seçenekleri...';
+$labels['togglecomposeoptions'] = 'Kompozisyon seçeneklerini göster/gizle';
$labels['low'] = 'Düşük';
$labels['lowest'] = 'En Düşük';
$labels['normal'] = 'Normal';
@@ -270,6 +293,7 @@ $labels['assistant'] = 'Asistan';
$labels['spouse'] = 'Eş';
$labels['allfields'] = 'Tüm alanlar';
$labels['search'] = 'Ara';
+$labels['searchfor'] = '"$q" için arama';
$labels['advsearch'] = 'Gelişmiş ara';
$labels['advanced'] = 'Gelişmiş';
$labels['other'] = 'Diğer';
@@ -288,11 +312,13 @@ $labels['typehomepage'] = 'Ev sayfası';
$labels['typeblog'] = 'Günlük';
$labels['typeprofile'] = 'Profil';
$labels['addfield'] = 'Alan ekle...';
-$labels['addcontact'] = 'Adres defterine ekle';
+$labels['addcontact'] = 'Kişi ekle';
$labels['editcontact'] = 'Kişiyi düzenle';
$labels['contacts'] = 'Kişiler';
$labels['contactproperties'] = 'Kişi özellikleri';
+$labels['contactnameandorg'] = 'İsim ve Kuruluş';
$labels['personalinfo'] = 'Kişisel bilgiler';
+$labels['contactphoto'] = 'Kişi fotografı';
$labels['edit'] = 'Düzenle';
$labels['cancel'] = 'İptal';
$labels['save'] = 'Kaydet';
@@ -301,7 +327,7 @@ $labels['rename'] = 'Yeniden adlandır';
$labels['addphoto'] = 'Ekle';
$labels['replacephoto'] = 'Değiştir';
$labels['uploadphoto'] = 'Fotoğraf yükle';
-$labels['newcontact'] = 'Yeni adres kartı ekle';
+$labels['newcontact'] = 'Yeni kişi oluştur';
$labels['deletecontact'] = 'Seçili kişileri sil';
$labels['composeto'] = 'Seçili kişiye posta gönder';
$labels['contactsfromto'] = 'Kişiler: $from - $to , Toplam: $count';
@@ -310,10 +336,11 @@ $labels['export'] = 'Dışa aktar';
$labels['exportall'] = 'Hepsini dışa aktar';
$labels['exportsel'] = 'Seçileni dışa aktar';
$labels['exportvcards'] = 'vCard olarak dışa aktar';
-$labels['newcontactgroup'] = 'Yeni kişi grubu oluştur';
+$labels['newgroup'] = 'Yeni grup oluştur';
$labels['grouprename'] = 'Grubu yeniden adlandır';
$labels['groupdelete'] = 'Grubu sil';
$labels['groupremoveselected'] = 'Seçili kişileri gruptan sil';
+$labels['uponelevel'] = 'Bir seviye yukarı';
$labels['previouspage'] = 'Öncekileri göster';
$labels['firstpage'] = 'İlkini göster';
$labels['nextpage'] = 'Sonrakileri göster';
@@ -340,10 +367,10 @@ $labels['preferences'] = 'Tercihler';
$labels['userpreferences'] = 'Kullanıcı tercihleri';
$labels['editpreferences'] = 'Kullanıcı tercihlerini düzenle';
$labels['identities'] = 'Kimlikler';
-$labels['manageidentities'] = 'Bu hesap için kimlikleri düzenle';
-$labels['newidentity'] = 'Yeni kimlik';
-$labels['newitem'] = 'Yeni öğe';
-$labels['edititem'] = 'Öğe düzenle';
+$labels['manageidentities'] = 'Kimlikleri yönet';
+$labels['newidentity'] = 'Yeni kimlik oluştur';
+$labels['addidentity'] = 'Kimlik ekle';
+$labels['editidentity'] = 'Kimlik düzenle';
$labels['preferhtml'] = 'HTML görüntüle';
$labels['defaultcharset'] = 'Varsayılan Karakter Kümesi';
$labels['htmlmessage'] = 'HTML Posta';
@@ -400,7 +427,9 @@ $labels['2231folding'] = 'Tam RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Tam RFC 2047 (diğer)';
$labels['force7bit'] = '8 bitlik karakterler için MIME kodlaması kullan';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'Gelişmiş seçenekler';
+$labels['toggleadvancedoptions'] = 'İleri seviye seçeneklerini göster/gizle';
$labels['focusonnewmessage'] = 'Yeni posta geldiğinde web tarayıcı penceresine odaklan.';
$labels['checkallfolders'] = 'Tüm klasörlerdeki yeni postaları denetle';
$labels['displaynext'] = 'Posta silindikten/taşındıktan sonra sıradaki postayı göster';
@@ -442,14 +471,14 @@ $labels['asattachment'] = 'ek olarak';
$labels['replyallmode'] = '[Tümünü yanıtla] düğmesinin varsayılan eylemi';
$labels['replyalldefault'] = 'Hepsini yanıtla';
$labels['replyalllist'] = 'Sadece postalama listesindekileri yanıtla (eğer varsa)';
-$labels['folder'] = 'Klasör';
-$labels['folders'] = 'Klasörler';
-$labels['foldername'] = 'Klasör Adı';
-$labels['subscribed'] = 'Abonelik';
+$labels['folder'] = 'Klasör';
+$labels['folders'] = 'Klasörler';
+$labels['foldername'] = 'Klasör Adı';
+$labels['subscribed'] = 'Abonelik';
$labels['messagecount'] = 'Postalar';
-$labels['create'] = 'Oluştur';
-$labels['createfolder'] = 'Yeni Klasör Oluştur';
-$labels['managefolders'] = 'Klasörleri Düzenle';
+$labels['create'] = 'Oluştur';
+$labels['createfolder'] = 'Yeni Klasör Oluştur';
+$labels['managefolders'] = 'Klasörleri Düzenle';
$labels['specialfolders'] = 'Özel Klasörler';
$labels['properties'] = 'Özellikler';
$labels['folderproperties'] = 'Klasör Özellikleri';
@@ -459,9 +488,10 @@ $labels['info'] = 'Bilgi';
$labels['getfoldersize'] = 'Klasör büyüklüğünü öğrenmek için tıklayın';
$labels['changesubscription'] = 'Abonelik durumunu değiştirmek için tıklayın';
$labels['foldertype'] = 'Klasör Türü';
-$labels['personalfolder'] = 'Kişisel Klasör';
-$labels['otherfolder'] = 'Diğer Kullanıcıların Klasörü';
-$labels['sharedfolder'] = 'Genel Klasör';
+$labels['personalfolder'] = 'Kişisel Klasör';
+$labels['otherfolder'] = 'Diğer Kullanıcıların Klasörü';
+$labels['sharedfolder'] = 'Genel Klasör';
+$labels['namespace.personal'] = 'Kişisel';
$labels['sortby'] = 'Sırala';
$labels['sortasc'] = 'Artarak';
$labels['sortdesc'] = 'Azalarak';
@@ -494,4 +524,50 @@ $labels['vietnamese'] = 'Vietnamca';
$labels['japanese'] = 'Japonca';
$labels['korean'] = 'Korece';
$labels['chinese'] = 'Çince';
+$labels['arialabeltopnav'] = 'Pencere kontrolü';
+$labels['arialabeltasknav'] = 'Uygulama görevleri';
+$labels['arialabeltoolbar'] = 'Uygulama araç çubuğu';
+$labels['arialabelactivetask'] = 'Aktif görevler';
+$labels['arialabelmessagessearchfilter'] = 'E-posta listeleme filtresi';
+$labels['arialabelmailsearchform'] = 'E-posta mesaj arama formu';
+$labels['arialabelcontactsearchform'] = 'Kişiler arama formu';
+$labels['arialabelmailquicksearchbox'] = 'E-posta arama girdisi';
+$labels['arialabelquicksearchbox'] = 'Arama girdisi';
+$labels['arialabelfolderlist'] = 'E-posta klasör seçimi';
+$labels['arialabelmessagelist'] = 'E-posta mesajları listelemesi';
+$labels['arialabelmailpreviewframe'] = 'Mesaj önizleme';
+$labels['arialabelmailboxmenu'] = 'Klasör eylem menüsü';
+$labels['arialabellistselectmenu'] = 'Liste seçme menüsü';
+$labels['arialabelthreadselectmenu'] = 'Thread listeleme menüsü';
+$labels['arialabelmessagelistoptions'] = 'Mesaj liste gösterimi ve sıralama seçenekleri';
+$labels['arialabelmailimportdialog'] = 'Mesaj içe aktarım diyalogu';
+$labels['arialabelmessagenav'] = 'Mesaj gezinimi';
+$labels['arialabelmessagebody'] = 'Mesaj gövdesi';
+$labels['arialabelmessageactions'] = 'Mesaj eylemleri';
+$labels['arialabelcontactquicksearch'] = 'Kişiler arama formu';
+$labels['arialabelcontactsearchbox'] = 'Kişi arama girdisi';
+$labels['arialabelmessageheaders'] = 'Mesaj başlıkları';
+$labels['arialabelforwardingoptions'] = 'Yönlendirme seçenekleri';
+$labels['arialabelreplyalloptions'] = 'Hepsine-Yanıtla seçenekleri';
+$labels['arialabelmoremessageactions'] = 'Daha fazla mesaj aksiyonu';
+$labels['arialabelmarkmessagesas'] = 'Seçili mesajları şu şekilde işaretle ..';
+$labels['arialabelcomposeoptions'] = 'Kompozisyon seçenekleri';
+$labels['arialabelresponsesmenu'] = 'Hazır cevaplar menüsü';
+$labels['arialabelattachmentuploadform'] = 'Eklenti yükleme formu';
+$labels['arialabelattachmentpreview'] = 'Eklenti önizleme';
+$labels['ariasummarycomposecontacts'] = 'Kişileri ve grupları alıcı olarak seçmek için listeleme';
+$labels['arialabelcontactexportoptions'] = 'Kişi dışar aktarım seçenekleri';
+$labels['arialabelabookgroupoptions'] = 'Adres defteri/kişiler seçenekleri';
+$labels['arialabelpreferencesform'] = 'Tercihler formu';
+$labels['arialabelidentityeditfrom'] = 'Kimlik düzenleme formu';
+$labels['arialabelresonseeditfrom'] = 'Yanıt düzenleme formu';
+$labels['helplistnavigation'] = 'Klavye gezinimi listele';
+$labels['helplistkeyboardnavigation'] = "Yukarı / aşağı oklar: odak / seçim satırı taşımak.
+Boşluk: odaklanan satırı seç.
+Shift + yukarı/aşağı: Yukarı/aşağı ilave satır seçimi.
+Ctrl + Boşluk: Seçilen odaklı satırı seçme/silme koleksiyonuna ekle";
+$labels['helplistkeyboardnavmessages'] = "Sağ/Sol oklar: Mesaj gruplarını genişlet/topla(Sadece thread modu için)
+Enter: Seçilen/odaklanan mesajı aç
+Delete: Seçili mesajı çöp kutusuna taşı";
+$labels['helplistkeyboardnavcontacts'] = "Enter: Seçili/odaklı kişiyi aç";
?>
diff --git a/program/localization/tr_TR/messages.inc b/program/localization/tr_TR/messages.inc
index cf3607498..1206987c5 100644
--- a/program/localization/tr_TR/messages.inc
+++ b/program/localization/tr_TR/messages.inc
@@ -22,7 +22,9 @@ $messages['sessionerror'] = 'Oturumunuz sona ermiş veya hatalı';
$messages['storageerror'] = 'IMAP sunucusuna bağlanılamadı';
$messages['servererror'] = 'Sunucu Hatası!';
$messages['servererrormsg'] = 'Sunucu hatası: $msg';
+$messages['connerror'] = 'Bağlantı Hatası (Sunucuya erişim başarısız oldu)!';
$messages['dberror'] = 'Veritabanı Hatası!';
+$messages['windowopenerror'] = 'Açılır pencere engellendi!';
$messages['requesttimedout'] = 'İstek zaman aşımına uğradı';
$messages['errorreadonly'] = 'İşlem gerçekleştirilemedi. Dizin salt okunabilir';
$messages['errornoperm'] = 'İşlem gerçekleştirilemedi. İzin verilmedi.';
@@ -92,6 +94,7 @@ $messages['contactsearchsuccessful'] = '$nr kişi bulundu.';
$messages['searchnomatch'] = 'Aramanıza uygun hiçbir sonuç bulunamadı.';
$messages['searching'] = 'Aranıyor...';
$messages['checking'] = 'Denetleniyor...';
+$messages['stillsearching'] = 'Hala arıyor...';
$messages['nospellerrors'] = 'Yazım hatası bulunamadı.';
$messages['folderdeleted'] = 'Klasör başarıyla silindi.';
$messages['foldersubscribed'] = 'Klasöre başarıyla abone olundu.';
@@ -135,7 +138,7 @@ $messages['importmessagesuccess'] = '$nr adet mesaj başarıyla içe aktarıldı
$messages['importmessageerror'] = 'İçe aktarım başarısız. Yüklenen dosya geçerli bir içe aktarım dosyası değil.';
$messages['opnotpermitted'] = 'Bu işleme izin verilmedi!';
$messages['nofromaddress'] = 'Seçili kimlikte e-posta adresi yok';
-$messages['editorwarning'] = 'Düz metin düzenleyiciye geçmek, metin üzerindeki bütün biçimlendirmeleri kaldıracak. Devam etmek istiyor musunuz?';
+$messages['editorwarning'] = 'Editör tipini değiştirmek, metin biçimlendirmeyi kaybetmenize sebep olabilir. Devam etmek istiyor musunuz?';
$messages['httpreceivedencrypterror'] = 'Ayarlarda bir hata oluştu. Sistem yöneticinize haber verin. <b>Postanız gönderilemedi</b>';
$messages['smtpconnerror'] = 'SMTP Hatası ($code): Sunucuya bağlanılamadı';
$messages['smtpautherror'] = 'SMTP Hatası ($code): Kimlik doğrulama başarısız oldu';
diff --git a/program/localization/uk_UA/labels.inc b/program/localization/uk_UA/labels.inc
index 8603dd10c..6e5e19039 100644
--- a/program/localization/uk_UA/labels.inc
+++ b/program/localization/uk_UA/labels.inc
@@ -279,7 +279,6 @@ $labels['typehomepage'] = 'Домашня сторінка';
$labels['typeblog'] = 'Блог';
$labels['typeprofile'] = 'Профіль';
$labels['addfield'] = 'Додати поле...';
-$labels['addcontact'] = 'Додати вибрані контакти до списку контактів';
$labels['editcontact'] = 'Редагувати контакт';
$labels['contacts'] = 'Контакти';
$labels['contactproperties'] = 'Властивості контакта';
@@ -292,7 +291,6 @@ $labels['rename'] = 'Перейменувати';
$labels['addphoto'] = 'Додати';
$labels['replacephoto'] = 'Замінити';
$labels['uploadphoto'] = 'Завантажити фотографію';
-$labels['newcontact'] = 'Створити новий контакт';
$labels['deletecontact'] = 'Видалити вибрані контакти';
$labels['composeto'] = 'Створити листа для вибранних контактів';
$labels['contactsfromto'] = 'Контакти $from - $to / $count';
@@ -301,7 +299,6 @@ $labels['export'] = 'Експортувати';
$labels['exportall'] = 'Експортувати все';
$labels['exportsel'] = 'Експортувати виділені';
$labels['exportvcards'] = 'Експортувати контакти у формат vCard';
-$labels['newcontactgroup'] = 'Створити нову групу контактів';
$labels['grouprename'] = 'Перейменувати групу';
$labels['groupdelete'] = 'Видалити групу';
$labels['groupremoveselected'] = 'Видалити обрані контакти з групи';
@@ -328,10 +325,6 @@ $labels['preferences'] = 'Параметри';
$labels['userpreferences'] = 'Налаштування користувача';
$labels['editpreferences'] = 'Редагувати налаштування користувача';
$labels['identities'] = 'Профілі';
-$labels['manageidentities'] = 'Керування профілями';
-$labels['newidentity'] = 'Новий профіль';
-$labels['newitem'] = 'Новий';
-$labels['edititem'] = 'Редагувати';
$labels['preferhtml'] = 'Показувати в HTML';
$labels['defaultcharset'] = 'Кодування за замовчуваннням';
$labels['htmlmessage'] = 'Лист у HTML';
@@ -387,6 +380,7 @@ $labels['2231folding'] = 'Повний RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'RFC 2047 (інші поштові клієнти)';
$labels['force7bit'] = 'Використовувати MIME кодування для 8-бітних символів';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'Додаткові параметри';
$labels['focusonnewmessage'] = 'Фокусувати вікно браузера при новому листі';
$labels['checkallfolders'] = 'Перевіряти нові листи у всіх папках';
@@ -427,14 +421,14 @@ $labels['inline'] = 'у тексті';
$labels['asattachment'] = 'як вкладення';
$labels['replyallmode'] = 'Типова дія для кнопки [Відповісти всім]';
$labels['replyalldefault'] = 'відповісти усім';
-$labels['folder'] = 'Папка';
-$labels['folders'] = 'Папки';
-$labels['foldername'] = 'Назва папки';
-$labels['subscribed'] = 'Підписані';
+$labels['folder'] = 'Папка';
+$labels['folders'] = 'Папки';
+$labels['foldername'] = 'Назва папки';
+$labels['subscribed'] = 'Підписані';
$labels['messagecount'] = 'Листи';
-$labels['create'] = 'Створити';
-$labels['createfolder'] = 'Створити нову папку';
-$labels['managefolders'] = 'Керування папками';
+$labels['create'] = 'Створити';
+$labels['createfolder'] = 'Створити нову папку';
+$labels['managefolders'] = 'Керування папками';
$labels['specialfolders'] = 'Особливі папки';
$labels['properties'] = 'Властивості';
$labels['folderproperties'] = 'Властивості папки';
@@ -444,9 +438,9 @@ $labels['info'] = 'Інформація';
$labels['getfoldersize'] = 'Показати розмір папки';
$labels['changesubscription'] = 'Змінити підписку';
$labels['foldertype'] = 'Тип каталогу';
-$labels['personalfolder'] = 'Приватний каталог';
-$labels['otherfolder'] = 'Каталог іншого користувача';
-$labels['sharedfolder'] = 'Публічний каталог';
+$labels['personalfolder'] = 'Приватний каталог';
+$labels['otherfolder'] = 'Каталог іншого користувача';
+$labels['sharedfolder'] = 'Публічний каталог';
$labels['sortby'] = 'Відсортувати за';
$labels['sortasc'] = 'Сортувати за зростанням';
$labels['sortdesc'] = 'Сортувати за спаданням';
@@ -479,4 +473,7 @@ $labels['vietnamese'] = 'В\'єтнамське';
$labels['japanese'] = 'Японське';
$labels['korean'] = 'Корейське';
$labels['chinese'] = 'Китайське';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/uk_UA/messages.inc b/program/localization/uk_UA/messages.inc
index 5e4e6c631..863d12808 100644
--- a/program/localization/uk_UA/messages.inc
+++ b/program/localization/uk_UA/messages.inc
@@ -132,7 +132,6 @@ $messages['importmessagesuccess'] = 'Успішно імпортовано $nr
$messages['importmessageerror'] = 'Імпорт не вдався! Завантажений файл не є припустимим повідомлення або файлом поштової скриньки';
$messages['opnotpermitted'] = 'Дія заборонена!';
$messages['nofromaddress'] = 'В обраному профілі не вистачає адреси електронної пошти';
-$messages['editorwarning'] = 'Перемикання в режим звичайного тексту спричинить втрату всього форматування. Продовжити?';
$messages['httpreceivedencrypterror'] = 'Помилка конфігурації. Негайно зверніться до адміністратора. <b>Ваше повідомлення не буде відправлено.</b>';
$messages['smtpconnerror'] = 'Помилка SMTP-сервера ($code): Не вдалося з\'єднатися з сервером';
$messages['smtpautherror'] = 'Помилка SMTP-сервера ($code): Невдала спроба автентифікації';
diff --git a/program/localization/ur_PK/labels.inc b/program/localization/ur_PK/labels.inc
index 797c98f11..45a066f65 100644
--- a/program/localization/ur_PK/labels.inc
+++ b/program/localization/ur_PK/labels.inc
@@ -37,4 +37,8 @@ $labels['list'] = 'لِسٹ';
$labels['expand-all'] = 'تمام کھولیں';
$labels['attachment'] = 'مُنسلَک شُدہ';
$labels['nonesort'] = 'کوئی نہیں';
+$labels['savelocalstorage'] = "";
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/vi_VN/labels.inc b/program/localization/vi_VN/labels.inc
index d0a63ead2..2553e6b3c 100644
--- a/program/localization/vi_VN/labels.inc
+++ b/program/localization/vi_VN/labels.inc
@@ -178,6 +178,10 @@ $labels['msgtext'] = 'Toàn bộ thư';
$labels['body'] = 'Nội dung thư';
$labels['type'] = 'Định dạng';
$labels['namex'] = 'Họ tên';
+$labels['searchscope'] = 'Phạm vi';
+$labels['currentfolder'] = 'Thư mục hiện tại';
+$labels['subfolders'] = 'Thư mục hiện tại và các thư mục con';
+$labels['allfolders'] = 'Tất cả các thư mục';
$labels['openinextwin'] = 'Mở trong khung cửa mới';
$labels['emlsave'] = 'Tải về theo định dạng .eml';
$labels['changeformattext'] = 'Hiển thị ở chế độ text';
@@ -203,9 +207,8 @@ $labels['restoremessage'] = 'Khôi phục thư?';
$labels['responses'] = 'Các phản hồi';
$labels['insertresponse'] = 'Thêm một phản hồi';
$labels['manageresponses'] = 'Quản lý các phản hồi';
-$labels['savenewresponse'] = 'Lưu một phản hồi mới';
-$labels['editresponses'] = 'Sửa các phản hồi';
$labels['editresponse'] = 'Sửa phản hồi';
+$labels['editresponses'] = 'Sửa các phản hồi';
$labels['responsename'] = 'Tên';
$labels['responsetext'] = 'Thông tin phản hồi';
$labels['attach'] = 'Đính kèm';
@@ -270,6 +273,7 @@ $labels['assistant'] = 'Trợ lý';
$labels['spouse'] = 'Vợ/Chồng';
$labels['allfields'] = 'Tất cả các lĩnh vực';
$labels['search'] = 'Tìm kiếm';
+$labels['searchfor'] = 'Tìm kiếm theo "$q"';
$labels['advsearch'] = 'Tìm kiếm chi tiết';
$labels['advanced'] = 'Nâng cao';
$labels['other'] = 'Loại khác';
@@ -288,7 +292,6 @@ $labels['typehomepage'] = 'Trang nhà';
$labels['typeblog'] = 'Trang nhật ký';
$labels['typeprofile'] = 'Lý lịch';
$labels['addfield'] = 'Thêm lĩnh vực...';
-$labels['addcontact'] = 'Thêm một liên hệ mới';
$labels['editcontact'] = 'Sửa liên lạc';
$labels['contacts'] = 'Danh bạ';
$labels['contactproperties'] = 'Tính chất của liên hệ';
@@ -301,7 +304,6 @@ $labels['rename'] = 'Đổi tên';
$labels['addphoto'] = 'Thêm';
$labels['replacephoto'] = 'Thay thế';
$labels['uploadphoto'] = 'Tải ảnh lên';
-$labels['newcontact'] = 'Tạo danh bạ mới';
$labels['deletecontact'] = 'Xoá các liên lạc đã chọn';
$labels['composeto'] = 'Soạn thư cho';
$labels['contactsfromto'] = 'Liên hệ từ $from - $to / $count';
@@ -310,7 +312,6 @@ $labels['export'] = 'Trích xuất';
$labels['exportall'] = 'Xuất tất cả';
$labels['exportsel'] = 'Xuất mục chọn';
$labels['exportvcards'] = 'Tải dữ liệu máy theo định dạng vCard';
-$labels['newcontactgroup'] = 'Tạo nhóm liên lạc mới';
$labels['grouprename'] = 'Đổi tên nhóm';
$labels['groupdelete'] = 'Xóa nhóm';
$labels['groupremoveselected'] = 'Xóa bỏ các liên lạc được chọn từ nhóm';
@@ -340,10 +341,6 @@ $labels['preferences'] = 'Sở thích';
$labels['userpreferences'] = 'Sở thích người dùng';
$labels['editpreferences'] = 'Chỉnh sửa sở thích';
$labels['identities'] = 'Các nhận diện';
-$labels['manageidentities'] = 'Quản lý nhận diện cho trương mục này';
-$labels['newidentity'] = 'Nhận diện mới';
-$labels['newitem'] = 'Mục mới';
-$labels['edititem'] = 'Sửa đổi mục';
$labels['preferhtml'] = 'Hiển thị HTML';
$labels['defaultcharset'] = 'Bộ ký tự mặc định';
$labels['htmlmessage'] = 'Thư theo định dạng HTML';
@@ -400,6 +397,7 @@ $labels['2231folding'] = 'RFC 2231 đầy đủ (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'RFC 2047 đầy đủ (khác)';
$labels['force7bit'] = 'Sử dụng MIME mã hóa cho ký tự 8-bit';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = 'Tùy chọn tính năng cao hơn';
$labels['focusonnewmessage'] = 'Tập trung khung cửa trình duyệt vào thư mới';
$labels['checkallfolders'] = 'Kiểm tra thư mới trong tất cả thư mục';
@@ -442,14 +440,14 @@ $labels['asattachment'] = 'dạng gửi kèm';
$labels['replyallmode'] = 'Thao tác mặc định cho nút [Trả lời tất cả]';
$labels['replyalldefault'] = 'Trả lời tất cả';
$labels['replyalllist'] = 'Chỉ gửi trả lời đến danh sách thư (nếu có tồn tại)';
-$labels['folder'] = 'Thư mục';
-$labels['folders'] = 'Các thư mục';
-$labels['foldername'] = 'Tên thư mục';
-$labels['subscribed'] = 'Đã đăng ký';
+$labels['folder'] = 'Thư mục';
+$labels['folders'] = 'Các thư mục';
+$labels['foldername'] = 'Tên thư mục';
+$labels['subscribed'] = 'Đã đăng ký';
$labels['messagecount'] = 'Các tin nhắn';
-$labels['create'] = 'Tạo';
-$labels['createfolder'] = 'Tạo thư mục mới';
-$labels['managefolders'] = 'Quản lý các thư mục';
+$labels['create'] = 'Tạo';
+$labels['createfolder'] = 'Tạo thư mục mới';
+$labels['managefolders'] = 'Quản lý các thư mục';
$labels['specialfolders'] = 'Thư mục đặc biệt';
$labels['properties'] = 'Các thuộc tính';
$labels['folderproperties'] = 'Thuộc tính thư mục';
@@ -459,9 +457,9 @@ $labels['info'] = 'Thông tin';
$labels['getfoldersize'] = 'Nhấp chuột để xem kích thước thư mục';
$labels['changesubscription'] = 'Nhấp chuột để đổi cách đóng góp';
$labels['foldertype'] = 'Kiểu thư mục';
-$labels['personalfolder'] = 'Thư mục cá nhân';
-$labels['otherfolder'] = 'Thư mục khác của Người dùng';
-$labels['sharedfolder'] = 'Thư mục công khai';
+$labels['personalfolder'] = 'Thư mục cá nhân';
+$labels['otherfolder'] = 'Thư mục khác của Người dùng';
+$labels['sharedfolder'] = 'Thư mục công khai';
$labels['sortby'] = 'Soạn theo';
$labels['sortasc'] = 'Soạn tăng dần';
$labels['sortdesc'] = 'Soạn giảm dần';
@@ -494,4 +492,7 @@ $labels['vietnamese'] = 'Tiếng Việt';
$labels['japanese'] = 'Tiếng Nhật';
$labels['korean'] = 'Tiếng Hàn';
$labels['chinese'] = 'Tiếng Hoa';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/vi_VN/messages.inc b/program/localization/vi_VN/messages.inc
index 5c9983e33..069103f6c 100644
--- a/program/localization/vi_VN/messages.inc
+++ b/program/localization/vi_VN/messages.inc
@@ -19,9 +19,10 @@ $messages['errortitle'] = 'Có lỗi xảy ra.';
$messages['loginfailed'] = 'Không đăng nhập được';
$messages['cookiesdisabled'] = 'Trình duyệt không hỗ trợ cookies';
$messages['sessionerror'] = 'Phiên làm việc không hợp lệ hoặc đã hết hạn';
-$messages['storageerror'] = 'Không kết nối được với máy chủ IMAP';
+$messages['storageerror'] = 'Không kết nối được với máy chủ.';
$messages['servererror'] = 'Lỗi máy chủ';
-$messages['servererrormsg'] = 'Lỗi máy chủ';
+$messages['servererrormsg'] = 'Lỗi máy chủ: $msg';
+$messages['connerror'] = 'Lỗi kết nối (không kết nối được đến máy chủ)';
$messages['dberror'] = 'Lỗi cơ sở dữ liệu';
$messages['requesttimedout'] = 'Yêu cầu hết hạn';
$messages['errorreadonly'] = 'Không thể thực hiện thao tác. Thư mục chỉ cho phép đọc.';
@@ -29,13 +30,15 @@ $messages['errornoperm'] = 'Bạn không đủ quyền hạn để thực hiện
$messages['erroroverquota'] = 'Không thể thực hiện thao tác do không còn đủ chỗ trống trên ổ đĩa.';
$messages['erroroverquotadelete'] = 'Không còn dư chỗ trống trên ổ đĩa. Sử dụng tổ hợp phím SHIFT+DEL để xoá thư.';
$messages['invalidrequest'] = 'Yêu cầu không hợp lệ! Không có dữ liệu nào được lưu.';
-$messages['invalidhost'] = 'Sai thông tin máy chủ';
+$messages['invalidhost'] = 'Sai thông tin tên máy chủ';
$messages['nomessagesfound'] = 'Không thấy có thư nào trong hộp thư này.';
-$messages['loggedout'] = 'Phiên làm việc đã kết thúc thành công. Hẹn gặp lại!';
-$messages['refreshing'] = 'Đang tải xuống bản cập nhật mới...';
+$messages['loggedout'] = 'Phiên làm việc đã kết thúc thành công. Tạm biệt!';
+$messages['mailboxempty'] = 'Hộp thư rỗng';
+$messages['nomessages'] = 'Không có thư nào';
+$messages['refreshing'] = 'Nạp lại dữ liệu...';
$messages['loading'] = 'Đang tải...';
-$messages['uploading'] = 'Đang tải lên tập tin...';
-$messages['uploadingmany'] = 'Đang tải lên các tập tin';
+$messages['uploading'] = 'Đang tải tập tin lên...';
+$messages['uploadingmany'] = 'Đang tải các tập tin lên...';
$messages['loadingdata'] = 'Đang nạp dữ liệu...';
$messages['checkingmail'] = 'Kiểm tra thư mới...';
$messages['sendingmessage'] = 'Đang gửi thư...';
@@ -46,8 +49,8 @@ $messages['successfullysaved'] = 'Đã lưu thành công';
$messages['savingresponse'] = 'Đang lưu thông tin...';
$messages['deleteresponseconfirm'] = 'Bạn có thực sự muốn xoá thông tin này?';
$messages['addedsuccessfully'] = 'Liên hệ đã được thêm vào sổ địa chỉ thành công.';
-$messages['contactexists'] = 'Liên hệ trùng địa chỉ email đã tồn tại';
-$messages['contactnameexists'] = 'Liên hệ trùng tên đã tồn tại.';
+$messages['contactexists'] = 'Đã có một địa chỉ email này trong sổ địa chỉ.';
+$messages['contactnameexists'] = 'Đã có một liên hệ có tên như thế này.';
$messages['blockedimages'] = 'Để bảo vệ tính riêng tư, chức năng hiện ảnh từ xa bị cấm trong thư này.';
$messages['encryptedmessage'] = 'Thư này được mã hóa, không thể xem. Rất tiếc!';
$messages['nocontactsfound'] = 'Không tìm thấy liên hệ.';
@@ -90,6 +93,7 @@ $messages['contactsearchsuccessful'] = '$nr liên hệ đã tìm được.';
$messages['searchnomatch'] = 'Không tìm thấy sự trùng hợp nào.';
$messages['searching'] = 'Đang tìm kiếm...';
$messages['checking'] = 'Đang kiểm tra...';
+$messages['stillsearching'] = 'Đang tiếp tục tìm kiếm...';
$messages['nospellerrors'] = 'Không tìm thấy lỗi chính tả.';
$messages['folderdeleted'] = 'Giữ liệu đã được xóa thành công.';
$messages['foldersubscribed'] = 'Giữ liệu được nhập vào thành công.';
@@ -133,7 +137,6 @@ $messages['importmessagesuccess'] = 'Đã nhập thành công $nr thư.';
$messages['importmessageerror'] = 'Nhập dữ liệu bị lỗi. Tệp tin vừa tải lên không có định dạng chính xác của tệp cấu hình hòm thư hoặc một thư đơn lẻ.';
$messages['opnotpermitted'] = 'Thao tác không được cho phép!';
$messages['nofromaddress'] = 'Địa chỉ email mất ở trong nhận dạng đã chọn';
-$messages['editorwarning'] = 'Việc chuyển soạn thảo text gốc sẽ gây ra toàn bộ định dạng text đã có bị mất. Bạn có muốn tiếp tục không?';
$messages['httpreceivedencrypterror'] = 'Xuất hiện một lỗi cấu hình tai hại. Hãy liên hệ với người quản trị ngay. <b> Thư của bạn không thể gửi được </b>';
$messages['smtpconnerror'] = 'Lỗi SMTP ($code): Kết nỗi tới máy chủ bị lỗi.';
$messages['smtpautherror'] = 'Lỗi SMTP ($code): Xác thực thất bại.';
diff --git a/program/localization/zh_CN/labels.inc b/program/localization/zh_CN/labels.inc
index c3b14396c..b0f2dc15c 100644
--- a/program/localization/zh_CN/labels.inc
+++ b/program/localization/zh_CN/labels.inc
@@ -52,6 +52,7 @@ $labels['fromtoshort'] = '$from – $to 共计 $count 个';
$labels['copy'] = '复制';
$labels['move'] = '移动';
$labels['moveto'] = '移至...';
+$labels['copyto'] = '复制至';
$labels['download'] = '下载';
$labels['open'] = '打开';
$labels['showattachment'] = '显示';
@@ -130,16 +131,24 @@ $labels['moreactions'] = '更多操作...';
$labels['more'] = '更多';
$labels['back'] = '返回';
$labels['options'] = '个人选项';
+$labels['first'] = '首';
+$labels['last'] = '尾';
+$labels['previous'] = '前一';
+$labels['next'] = '后一';
$labels['select'] = '选择';
$labels['all'] = '全部';
$labels['none'] = '无';
$labels['currpage'] = '当前页';
+$labels['isread'] = '读';
$labels['unread'] = '未读邮件';
$labels['flagged'] = '已标记邮件';
+$labels['unflagged'] = '未标记';
$labels['unanswered'] = '未回复邮件';
$labels['withattachment'] = '包含附件';
$labels['deleted'] = '已删除邮件';
$labels['undeleted'] = '未删除邮件';
+$labels['replied'] = '已回复';
+$labels['forwarded'] = '已转发';
$labels['invert'] = '反选';
$labels['filter'] = '过滤';
$labels['list'] = '列表';
@@ -170,6 +179,11 @@ $labels['importmessages'] = '导入邮件';
$labels['quota'] = '邮箱容量';
$labels['unknown'] = '未知';
$labels['unlimited'] = '无限制';
+$labels['quotatype'] = '容量类型';
+$labels['quotatotal'] = '限额';
+$labels['quotaused'] = '已用';
+$labels['quotastorage'] = '存储空间';
+$labels['quotamessage'] = '邮件数统计';
$labels['quicksearch'] = '快速查找';
$labels['resetsearch'] = '清空';
$labels['searchmod'] = '修改搜索';
@@ -177,6 +191,10 @@ $labels['msgtext'] = '整封邮件';
$labels['body'] = '正文';
$labels['type'] = '类型:';
$labels['namex'] = '姓名';
+$labels['searchscope'] = '范围';
+$labels['currentfolder'] = '当前文件夹';
+$labels['subfolders'] = '当前文件夹及其子文件夹';
+$labels['allfolders'] = '所有文件夹';
$labels['openinextwin'] = '在新窗口中打开';
$labels['emlsave'] = '下载(.eml)';
$labels['changeformattext'] = '以文本格式显示';
@@ -192,6 +210,10 @@ $labels['returnreceipt'] = '需要已读回执';
$labels['dsn'] = '投递状态通知';
$labels['mailreplyintro'] = '在 $date,$sender 写道:';
$labels['originalmessage'] = '原始邮件';
+$labels['selectimage'] = '选择图片';
+$labels['addimage'] = '添加图片';
+$labels['selectmedia'] = '选择影片';
+$labels['addmedia'] = '添加影片';
$labels['editidents'] = '编辑身份';
$labels['spellcheck'] = '拼写';
$labels['checkspelling'] = '拼写检查';
@@ -202,9 +224,10 @@ $labels['restoremessage'] = '是否恢复信息?';
$labels['responses'] = '回复';
$labels['insertresponse'] = '插入回复';
$labels['manageresponses'] = '管理回复';
-$labels['savenewresponse'] = '保存新回复';
-$labels['editresponses'] = '编辑回复';
+$labels['newresponse'] = '创建新回复';
+$labels['addresponse'] = '添加回复';
$labels['editresponse'] = '编辑回复';
+$labels['editresponses'] = '编辑回复';
$labels['responsename'] = '姓名';
$labels['responsetext'] = '以文本形式回复';
$labels['attach'] = '附加';
@@ -213,6 +236,7 @@ $labels['upload'] = '上传';
$labels['uploadprogress'] = '$percent ($current / $total)';
$labels['close'] = '关闭';
$labels['messageoptions'] = '邮件选项...';
+$labels['togglecomposeoptions'] = '切换布局选项';
$labels['low'] = '低';
$labels['lowest'] = '最低';
$labels['normal'] = '普通';
@@ -269,6 +293,7 @@ $labels['assistant'] = '助理';
$labels['spouse'] = '配偶';
$labels['allfields'] = '所有栏目';
$labels['search'] = '查询';
+$labels['searchfor'] = '查找"$q"';
$labels['advsearch'] = '高级查询';
$labels['advanced'] = '高级选项';
$labels['other'] = '其他';
@@ -287,11 +312,13 @@ $labels['typehomepage'] = '主页';
$labels['typeblog'] = '博客';
$labels['typeprofile'] = '资料';
$labels['addfield'] = '新增条目...';
-$labels['addcontact'] = '新建联系人';
+$labels['addcontact'] = '添加联系人';
$labels['editcontact'] = '编辑联系人';
$labels['contacts'] = '联系人';
$labels['contactproperties'] = '联系人信息';
+$labels['contactnameandorg'] = '姓名和公司';
$labels['personalinfo'] = '个人信息';
+$labels['contactphoto'] = '联系人照片';
$labels['edit'] = '编辑';
$labels['cancel'] = '取消';
$labels['save'] = '保存';
@@ -309,10 +336,11 @@ $labels['export'] = '导出';
$labels['exportall'] = '导出全部';
$labels['exportsel'] = '导出选中';
$labels['exportvcards'] = '导出联系人为 vCard 格式';
-$labels['newcontactgroup'] = '创建新的联系人群组';
+$labels['newgroup'] = '创建新组';
$labels['grouprename'] = '重命名群组';
$labels['groupdelete'] = '删除群组';
$labels['groupremoveselected'] = '删除选中';
+$labels['uponelevel'] = '升一级';
$labels['previouspage'] = '上一页';
$labels['firstpage'] = '首页';
$labels['nextpage'] = '下一页';
@@ -339,10 +367,10 @@ $labels['preferences'] = '选项';
$labels['userpreferences'] = '个人选项';
$labels['editpreferences'] = '修改个人选项';
$labels['identities'] = '发件人身份';
-$labels['manageidentities'] = '管理此账号的身份';
-$labels['newidentity'] = '添加身份';
-$labels['newitem'] = '添加条目';
-$labels['edititem'] = '编辑条目';
+$labels['manageidentities'] = '管理身份';
+$labels['newidentity'] = '创建新身份';
+$labels['addidentity'] = '添加身份';
+$labels['editidentity'] = '编辑身份';
$labels['preferhtml'] = '以 HTML 格式显示';
$labels['defaultcharset'] = '默认字符集';
$labels['htmlmessage'] = 'HTML 邮件';
@@ -399,7 +427,9 @@ $labels['2231folding'] = '完整的 RFC 2231(Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2232(MS Outlook)';
$labels['2047folding'] = '完整的 RFC 2047(其它)';
$labels['force7bit'] = '对 8 位字符使用 MIME 编码';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = '高级选项';
+$labels['toggleadvancedoptions'] = '切换高级选项';
$labels['focusonnewmessage'] = '新邮件到达时将窗口提升为焦点窗口';
$labels['checkallfolders'] = '检查所有邮件夹里的新邮件';
$labels['displaynext'] = '当邮件删除/移动后显示下一封邮件';
@@ -441,14 +471,14 @@ $labels['asattachment'] = '作为附件';
$labels['replyallmode'] = '[回复所有]按钮的默认动作';
$labels['replyalldefault'] = '回复全部';
$labels['replyalllist'] = '只回复邮件列表中的联系人(找到的)';
-$labels['folder'] = '文件夹管理';
-$labels['folders'] = '文件夹管理';
-$labels['foldername'] = '邮件夹名称';
-$labels['subscribed'] = '已订阅';
+$labels['folder'] = '文件夹管理';
+$labels['folders'] = '文件夹管理';
+$labels['foldername'] = '邮件夹名称';
+$labels['subscribed'] = '已订阅';
$labels['messagecount'] = '邮件数量';
-$labels['create'] = '建立';
-$labels['createfolder'] = '建立新邮件夹';
-$labels['managefolders'] = '管理邮件夹';
+$labels['create'] = '建立';
+$labels['createfolder'] = '建立新邮件夹';
+$labels['managefolders'] = '管理邮件夹';
$labels['specialfolders'] = '自定义邮件夹';
$labels['properties'] = '属性';
$labels['folderproperties'] = '文件夹属性';
@@ -458,9 +488,9 @@ $labels['info'] = '信息';
$labels['getfoldersize'] = '获得文件夹容量';
$labels['changesubscription'] = '更改订阅';
$labels['foldertype'] = '文件夹类型';
-$labels['personalfolder'] = '私有文件夹';
-$labels['otherfolder'] = '他人文件夹';
-$labels['sharedfolder'] = '共享文件夹';
+$labels['personalfolder'] = '私有文件夹';
+$labels['otherfolder'] = '他人文件夹';
+$labels['sharedfolder'] = '共享文件夹';
$labels['sortby'] = '排序';
$labels['sortasc'] = '递增排序';
$labels['sortdesc'] = '递减排序';
@@ -493,4 +523,45 @@ $labels['vietnamese'] = '越南语';
$labels['japanese'] = '日文';
$labels['korean'] = '韩语';
$labels['chinese'] = '中文';
+$labels['arialabeltopnav'] = '窗口控制';
+$labels['arialabeltasknav'] = '应用事务';
+$labels['arialabeltoolbar'] = '应用工具栏';
+$labels['arialabelactivetask'] = '活动事务';
+$labels['arialabelmessagessearchfilter'] = '邮件列表过滤器';
+$labels['arialabelmailsearchform'] = '邮件信息查询表单';
+$labels['arialabelcontactsearchform'] = '联系人查询表单';
+$labels['arialabelmailquicksearchbox'] = '邮件查询条件';
+$labels['arialabelquicksearchbox'] = '查询条件';
+$labels['arialabelfolderlist'] = '邮件文件夹选择';
+$labels['arialabelmessagelist'] = '邮件信息列表';
+$labels['arialabelmailpreviewframe'] = '邮件预览';
+$labels['arialabelmailboxmenu'] = '文件夹操作菜单';
+$labels['arialabellistselectmenu'] = '列表选择菜单';
+$labels['arialabelthreadselectmenu'] = '线程列表菜单';
+$labels['arialabelmessagelistoptions'] = '邮件列表显示和排序选项';
+$labels['arialabelmailimportdialog'] = '邮件导入对话框';
+$labels['arialabelmessagenav'] = '邮件导航';
+$labels['arialabelmessagebody'] = '邮件正文';
+$labels['arialabelmessageactions'] = '邮件动作';
+$labels['arialabelcontactquicksearch'] = '联系人查询表单';
+$labels['arialabelcontactsearchbox'] = '联系人查询条件';
+$labels['arialabelmessageheaders'] = '邮件头';
+$labels['arialabelforwardingoptions'] = '转发选项';
+$labels['arialabelreplyalloptions'] = '回复全部选项';
+$labels['arialabelmoremessageactions'] = '更多邮件选项';
+$labels['arialabelmarkmessagesas'] = '标记选中邮件为...';
+$labels['arialabelcomposeoptions'] = '布局选项';
+$labels['arialabelresponsesmenu'] = '预设回复菜单';
+$labels['arialabelattachmentuploadform'] = '附件上传表单';
+$labels['arialabelattachmentpreview'] = '附件预览';
+$labels['ariasummarycomposecontacts'] = '选择联系人或组作为收件人';
+$labels['arialabelcontactexportoptions'] = '联系人导出选项';
+$labels['arialabelabookgroupoptions'] = '地址簿/组选项';
+$labels['arialabelpreferencesform'] = '偏好设置表单';
+$labels['arialabelidentityeditfrom'] = '标识编辑表单';
+$labels['arialabelresonseeditfrom'] = '回复编辑表单';
+$labels['helplistnavigation'] = '列表键盘导航';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "回车:打开选中的联系人";
?>
diff --git a/program/localization/zh_CN/messages.inc b/program/localization/zh_CN/messages.inc
index 4adebcc74..6e8cbf403 100644
--- a/program/localization/zh_CN/messages.inc
+++ b/program/localization/zh_CN/messages.inc
@@ -133,7 +133,6 @@ $messages['importmessagesuccess'] = '成功导入 $nr 条信息';
$messages['importmessageerror'] = '导入失败!文件无效';
$messages['opnotpermitted'] = '不允许的操作!';
$messages['nofromaddress'] = '选中的身份没有邮件地址。';
-$messages['editorwarning'] = '切换至纯文本编辑器将导致邮件正文中的所有文本格式失效,您确定要这样做吗?';
$messages['httpreceivedencrypterror'] = '<b>您的邮件无法发送</b>,因为发生了一个严重的配置错误,请立即联系管理员。';
$messages['smtpconnerror'] = 'SMTP 错误 ($code):连接服务器失败。';
$messages['smtpautherror'] = 'SMTP 错误 ($code): 认证失败。';
diff --git a/program/localization/zh_TW/labels.inc b/program/localization/zh_TW/labels.inc
index e913f7117..18c318864 100644
--- a/program/localization/zh_TW/labels.inc
+++ b/program/localization/zh_TW/labels.inc
@@ -171,6 +171,11 @@ $labels['importmessages'] = '匯入郵件';
$labels['quota'] = '磁碟使用量';
$labels['unknown'] = '未知';
$labels['unlimited'] = '無限制';
+$labels['quotatype'] = '配額類型';
+$labels['quotatotal'] = '上限';
+$labels['quotaused'] = '已使用';
+$labels['quotastorage'] = '儲存空間';
+$labels['quotamessage'] = '郵件數目';
$labels['quicksearch'] = '快速搜尋';
$labels['resetsearch'] = '重設搜尋';
$labels['searchmod'] = '修改搜尋';
@@ -178,6 +183,10 @@ $labels['msgtext'] = '整封郵件';
$labels['body'] = '內文';
$labels['type'] = '類型';
$labels['namex'] = '名稱';
+$labels['searchscope'] = '範圍';
+$labels['currentfolder'] = '目前的資料夾';
+$labels['subfolders'] = '目前的資料夾(含子資料夾)';
+$labels['allfolders'] = '所有資料夾';
$labels['openinextwin'] = '在新視窗開啟';
$labels['emlsave'] = '下載(.eml)';
$labels['changeformattext'] = '以純文字格式顯示';
@@ -203,9 +212,8 @@ $labels['restoremessage'] = '回復郵件?';
$labels['responses'] = '預設回應';
$labels['insertresponse'] = '插入預設回應';
$labels['manageresponses'] = '管理預設回應';
-$labels['savenewresponse'] = '新增預設回應';
-$labels['editresponses'] = '編輯預設回應';
$labels['editresponse'] = '預設回應';
+$labels['editresponses'] = '編輯預設回應';
$labels['responsename'] = '名稱';
$labels['responsetext'] = '預設回應內容';
$labels['attach'] = '附件';
@@ -270,6 +278,7 @@ $labels['assistant'] = '助理';
$labels['spouse'] = '配偶';
$labels['allfields'] = '所有欄位';
$labels['search'] = '搜尋';
+$labels['searchfor'] = '搜尋 "$q"';
$labels['advsearch'] = '進階搜尋';
$labels['advanced'] = '進階';
$labels['other'] = '其他';
@@ -288,7 +297,6 @@ $labels['typehomepage'] = '首頁';
$labels['typeblog'] = '部落格';
$labels['typeprofile'] = '設定檔';
$labels['addfield'] = '新增欄位...';
-$labels['addcontact'] = '新增聯絡人';
$labels['editcontact'] = '編輯聯絡人';
$labels['contacts'] = '聯絡人';
$labels['contactproperties'] = '聯絡人資訊';
@@ -301,7 +309,6 @@ $labels['rename'] = '重新命名';
$labels['addphoto'] = '新增';
$labels['replacephoto'] = '取代';
$labels['uploadphoto'] = '上傳相片';
-$labels['newcontact'] = '建立新聯絡人資料';
$labels['deletecontact'] = '刪除所選擇的聯絡人';
$labels['composeto'] = '寄信至所選擇的聯絡人';
$labels['contactsfromto'] = '聯絡人 $from 至 $to,共 $count 人';
@@ -310,7 +317,6 @@ $labels['export'] = '匯出通訊錄';
$labels['exportall'] = '匯出全部';
$labels['exportsel'] = '匯出選擇項目';
$labels['exportvcards'] = '匯出通訊錄為 vCard 格式';
-$labels['newcontactgroup'] = '新增聯絡人群組';
$labels['grouprename'] = '重新命名群組';
$labels['groupdelete'] = '刪除群組';
$labels['groupremoveselected'] = '從群組中刪除選擇的聯絡人';
@@ -340,10 +346,6 @@ $labels['preferences'] = '設定';
$labels['userpreferences'] = '個人設定';
$labels['editpreferences'] = '編輯個人設定';
$labels['identities'] = '身份資訊';
-$labels['manageidentities'] = '管理此帳號的身份資訊';
-$labels['newidentity'] = '新增身份資訊';
-$labels['newitem'] = '新增項目';
-$labels['edititem'] = '編輯項目';
$labels['preferhtml'] = '使用 HTML 顯示';
$labels['defaultcharset'] = '預設編碼';
$labels['htmlmessage'] = 'HTML 郵件';
@@ -400,6 +402,7 @@ $labels['2231folding'] = '完全 RFC 2231 模式(Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 混合模式(MS Outlook)';
$labels['2047folding'] = '完全 RFC 2047 模式(其他)';
$labels['force7bit'] = '對 8 位元字元使用 MIME 編碼';
+$labels['savelocalstorage'] = "";
$labels['advancedoptions'] = '進階選項';
$labels['focusonnewmessage'] = '收到新郵件時使瀏覽器獲得焦點';
$labels['checkallfolders'] = '檢查所有資料夾中的新郵件';
@@ -442,14 +445,14 @@ $labels['asattachment'] = '當成附件';
$labels['replyallmode'] = '「全部回覆」按鈕的預設動作';
$labels['replyalldefault'] = '全部回覆';
$labels['replyalllist'] = '只回覆郵件列表 (如有)';
-$labels['folder'] = '資料夾';
-$labels['folders'] = '資料夾';
-$labels['foldername'] = '資料夾名稱';
-$labels['subscribed'] = '顯示';
+$labels['folder'] = '資料夾';
+$labels['folders'] = '資料夾';
+$labels['foldername'] = '資料夾名稱';
+$labels['subscribed'] = '顯示';
$labels['messagecount'] = '郵件數目';
-$labels['create'] = '建立';
-$labels['createfolder'] = '建立新資料夾';
-$labels['managefolders'] = '管理資料夾';
+$labels['create'] = '建立';
+$labels['createfolder'] = '建立新資料夾';
+$labels['managefolders'] = '管理資料夾';
$labels['specialfolders'] = '特殊資料夾';
$labels['properties'] = '屬性';
$labels['folderproperties'] = '資料夾屬性';
@@ -459,9 +462,9 @@ $labels['info'] = '資訊';
$labels['getfoldersize'] = '點擊顯示資料夾大小';
$labels['changesubscription'] = '點擊以改變訂閱';
$labels['foldertype'] = '資料夾類型';
-$labels['personalfolder'] = '私人資料夾';
-$labels['otherfolder'] = '其他使用者資料夾';
-$labels['sharedfolder'] = '公用資料夾';
+$labels['personalfolder'] = '私人資料夾';
+$labels['otherfolder'] = '其他使用者資料夾';
+$labels['sharedfolder'] = '公用資料夾';
$labels['sortby'] = '排序';
$labels['sortasc'] = '遞增排序';
$labels['sortdesc'] = '遞減排序';
@@ -494,4 +497,7 @@ $labels['vietnamese'] = '越南';
$labels['japanese'] = '日本';
$labels['korean'] = '韓國';
$labels['chinese'] = '國語';
+$labels['helplistkeyboardnavigation'] = "";
+$labels['helplistkeyboardnavmessages'] = "";
+$labels['helplistkeyboardnavcontacts'] = "";
?>
diff --git a/program/localization/zh_TW/messages.inc b/program/localization/zh_TW/messages.inc
index 23c951a8b..e5d7df560 100644
--- a/program/localization/zh_TW/messages.inc
+++ b/program/localization/zh_TW/messages.inc
@@ -22,6 +22,7 @@ $messages['sessionerror'] = '你的工作階段已失效或過期';
$messages['storageerror'] = '連線到 IMAP 伺服器失敗';
$messages['servererror'] = '伺服器錯誤!';
$messages['servererrormsg'] = '伺服器錯誤:$msg';
+$messages['connerror'] = '連線錯誤 (無法連線到伺服器)!';
$messages['dberror'] = '資料庫錯誤!';
$messages['requesttimedout'] = '要求逾時';
$messages['errorreadonly'] = '動作無法完成。資料夾唯讀';
@@ -92,6 +93,7 @@ $messages['contactsearchsuccessful'] = '找到連絡人 $nr';
$messages['searchnomatch'] = '找不到任何符合的郵件';
$messages['searching'] = '搜尋中...';
$messages['checking'] = '檢查中...';
+$messages['stillsearching'] = '仍在搜尋中...';
$messages['nospellerrors'] = '沒有找到任何拼字錯誤';
$messages['folderdeleted'] = '資料夾已經成功地被刪除';
$messages['foldersubscribed'] = '資料夾成功訂閱';
@@ -135,7 +137,7 @@ $messages['importmessagesuccess'] = '成功匯入 $nr 封郵件';
$messages['importmessageerror'] = '匯入失敗!上載的檔案不是有效的郵件或資料夾檔案。';
$messages['opnotpermitted'] = '不允許的操作';
$messages['nofromaddress'] = '在選擇的身分中遺失了電子郵件位址';
-$messages['editorwarning'] = '切換到純文字編輯模式將會遺失所有設定的樣式。您確定要繼續嗎?';
+$messages['editorwarning'] = '切換編輯器模式將會遺失所有設定的樣式。您確定要繼續嗎?';
$messages['httpreceivedencrypterror'] = '發生嚴重錯誤。請立即聯絡管理者。<b>您的郵件無法送出。</b>';
$messages['smtpconnerror'] = 'SMTP 錯誤($code):與伺服器連線失敗';
$messages['smtpautherror'] = 'SMTP 錯誤($code):認證失敗';
diff --git a/program/steps/addressbook/delete.inc b/program/steps/addressbook/delete.inc
index 3d57d7074..f5b8e4eb5 100644
--- a/program/steps/addressbook/delete.inc
+++ b/program/steps/addressbook/delete.inc
@@ -77,6 +77,17 @@ foreach ($cids as $source => $cid) {
}
}
+if (!empty($_SESSION['contact_undo'])) {
+ $_SESSION['contact_undo']['ts'] = time();
+ $msg = html::span(null, $RCMAIL->gettext('contactdeleted'))
+ . ' ' . html::a(array('onclick' => rcmail_output::JS_OBJECT_NAME.".command('undo', '', this)"), $RCMAIL->gettext('undo'));
+
+ $OUTPUT->show_message($msg, 'confirmation', null, true, $undo_time);
+}
+else {
+ $OUTPUT->show_message('contactdeleted', 'confirmation');
+}
+
$page = isset($_SESSION['page']) ? $_SESSION['page'] : 1;
// update saved search after data changed
@@ -87,8 +98,13 @@ if (($records = rcmail_search_update(true)) !== false) {
$result = new rcube_result_set($count, $first);
$pages = ceil((count($records) + $delcnt) / $PAGE_SIZE);
+ // last page and it's empty, display previous one
+ if ($result->count && $result->count <= ($PAGE_SIZE * ($page - 1))) {
+ $OUTPUT->command('list_page', 'prev');
+ $rowcount = $RCMAIL->gettext('loading');
+ }
// get records from the next page to add to the list
- if ($_GET['_from'] != 'show' && $pages > 1 && $page < $pages) {
+ else if ($pages > 1 && $page < $pages) {
// sort the records
ksort($records, SORT_LOCALE_STRING);
@@ -110,10 +126,15 @@ if (($records = rcmail_search_update(true)) !== false) {
else {
// count contacts for this user
$result = $CONTACTS->count();
+ $pages = ceil(($result->count + $delcnt) / $PAGE_SIZE);
+ // last page and it's empty, display previous one
+ if ($result->count && $result->count <= ($PAGE_SIZE * ($page - 1))) {
+ $OUTPUT->command('list_page', 'prev');
+ $rowcount = $RCMAIL->gettext('loading');
+ }
// get records from the next page to add to the list
- $pages = ceil(($result->count + $delcnt) / $PAGE_SIZE);
- if ($_GET['_from'] != 'show' && $pages > 1 && $page < $pages) {
+ else if ($pages > 1 && $page < $pages) {
$CONTACTS->set_page($page);
$records = $CONTACTS->list_records(null, -$delcnt);
}
@@ -121,18 +142,7 @@ else {
// update message count display
$OUTPUT->set_env('pagecount', ceil($result->count / $PAGE_SIZE));
-$OUTPUT->command('set_rowcount', rcmail_get_rowcount_text($result));
-
-if (!empty($_SESSION['contact_undo'])) {
- $_SESSION['contact_undo']['ts'] = time();
- $msg = html::span(null, $RCMAIL->gettext('contactdeleted'))
- . ' ' . html::a(array('onclick' => rcmail_output::JS_OBJECT_NAME.".command('undo', '', this)"), $RCMAIL->gettext('undo'));
-
- $OUTPUT->show_message($msg, 'confirmation', null, true, $undo_time);
-}
-else {
- $OUTPUT->show_message('contactdeleted', 'confirmation');
-}
+$OUTPUT->command('set_rowcount', $rowcount ? $rowcount : rcmail_get_rowcount_text($result));
// add new rows from next page (if any)
if (!empty($records)) {
diff --git a/program/steps/addressbook/edit.inc b/program/steps/addressbook/edit.inc
index 3bbbfccdf..a7def586d 100644
--- a/program/steps/addressbook/edit.inc
+++ b/program/steps/addressbook/edit.inc
@@ -69,6 +69,8 @@ $OUTPUT->add_handlers(array(
'filedroparea' => 'rcmail_photo_drop_area',
));
+$OUTPUT->set_pagetitle($RCMAIL->gettext(($RCMAIL->action == 'add' ? 'addcontact' : 'editcontact')));
+
if ($RCMAIL->action == 'add' && $OUTPUT->template_exists('contactadd')) {
$OUTPUT->send('contactadd');
}
@@ -98,12 +100,15 @@ function rcmail_get_edit_record()
function rcmail_contact_edithead($attrib)
{
+ global $RCMAIL;
+
// check if we have a valid result
$record = rcmail_get_edit_record();
$i_size = !empty($attrib['size']) ? $attrib['size'] : 20;
$form = array(
'head' => array(
+ 'name' => $RCMAIL->gettext('contactnameandorg'),
'content' => array(
'prefix' => array('size' => $i_size),
'firstname' => array('size' => $i_size, 'visible' => true),
@@ -253,6 +258,7 @@ function get_form_tags($attrib)
if ($RCMAIL->action == 'edit')
$hiddenfields->add(array('name' => '_source', 'value' => $SOURCE_ID));
$hiddenfields->add(array('name' => '_gid', 'value' => $CONTACTS->group_id));
+ $hiddenfields->add(array('name' => '_search', 'value' => rcube_utils::get_input_value('_search', rcube_utils::INPUT_GPC)));
if (($result = $CONTACTS->get_result()) && ($record = $result->first()))
$hiddenfields->add(array('name' => '_cid', 'value' => $record['ID']));
diff --git a/program/steps/addressbook/export.inc b/program/steps/addressbook/export.inc
index 2b45e5cd1..a6d3af978 100644
--- a/program/steps/addressbook/export.inc
+++ b/program/steps/addressbook/export.inc
@@ -103,7 +103,9 @@ header('Content-Type: text/x-vcard; charset='.RCUBE_CHARSET);
header('Content-Disposition: attachment; filename="contacts.vcf"');
while ($result && ($row = $result->next())) {
- prepare_for_export($row, $CONTACTS);
+ if ($CONTACTS) {
+ prepare_for_export($row, $CONTACTS);
+ }
// fix folding and end-of-line chars
$row['vcard'] = preg_replace('/\r|\n\s+/', '', $row['vcard']);
diff --git a/program/steps/addressbook/func.inc b/program/steps/addressbook/func.inc
index be0dd2a33..2c22d5a47 100644
--- a/program/steps/addressbook/func.inc
+++ b/program/steps/addressbook/func.inc
@@ -81,7 +81,6 @@ if (!$RCMAIL->action && !$OUTPUT->ajax_call) {
$OUTPUT->set_env('search_mods', $search_mods);
$OUTPUT->set_env('address_sources', $js_list);
$OUTPUT->set_env('writable_source', $writeable);
- $OUTPUT->set_env('compose_extwin', $RCMAIL->config->get('compose_extwin',false));
$OUTPUT->set_pagetitle($RCMAIL->gettext('addressbook'));
$_SESSION['addressbooks_count'] = $count;
@@ -112,7 +111,7 @@ if ($undo = $_SESSION['contact_undo']) {
// register UI objects
$OUTPUT->add_handlers(array(
'directorylist' => 'rcmail_directory_list',
-// 'groupslist' => 'rcmail_contact_groups',
+ 'savedsearchlist' => 'rcmail_savedsearch_list',
'addresslist' => 'rcmail_contacts_list',
'addresslisttitle' => 'rcmail_contacts_list_title',
'addressframe' => 'rcmail_contact_frame',
@@ -251,6 +250,28 @@ function rcmail_directory_list($attrib)
$out .= '</li>';
}
+ $OUTPUT->set_env('contactgroups', $jsdata);
+ $OUTPUT->set_env('collapsed_abooks', (string)$RCMAIL->config->get('collapsed_abooks',''));
+ $OUTPUT->add_gui_object('folderlist', $attrib['id']);
+ $OUTPUT->include_script('treelist.js');
+
+ // add some labels to client
+ $OUTPUT->add_label('deletegroupconfirm', 'groupdeleting', 'addingmember', 'removingmember',
+ 'newgroup', 'grouprename', 'searchsave', 'namex', 'save'
+ );
+
+ return html::tag('ul', $attrib, $out, html::$common_attrib);
+}
+
+
+function rcmail_savedsearch_list($attrib)
+{
+ global $RCMAIL, $OUTPUT;
+
+ if (!$attrib['id'])
+ $attrib['id'] = 'rcmsavedsearchlist';
+
+ $out = '';
$line_templ = html::tag('li', array(
'id' => 'rcmli%s', 'class' => '%s'),
html::a(array('href' => '#', 'rel' => 'S%s',
@@ -263,26 +284,19 @@ function rcmail_directory_list($attrib)
$js_id = rcube::JQ($id);
// set class name(s)
- $class_name = 'contactsearch';
- if ($current === $id)
- $class_name .= ' selected';
- if ($source['class_name'])
- $class_name .= ' ' . $source['class_name'];
+ $classes = array('contactsearch');
+ if (!empty($source['class_name']))
+ $classes[] = $source['class_name'];
$out .= sprintf($line_templ,
rcube_utils::html_identifier('S'.$id, true),
- $class_name,
+ join(' ', $classes),
$id,
- $js_id, (!empty($source['name']) ? rcube::Q($source['name']) : rcube::Q($id)));
+ $js_id, (!empty($source['name']) ? rcube::Q($source['name']) : rcube::Q($id))
+ );
}
- $OUTPUT->set_env('contactgroups', $jsdata);
- $OUTPUT->set_env('collapsed_abooks', (string)$RCMAIL->config->get('collapsed_abooks',''));
- $OUTPUT->add_gui_object('folderlist', $attrib['id']);
- $OUTPUT->include_script('treelist.js');
-
- // add some labels to client
- $OUTPUT->add_label('deletegroupconfirm', 'groupdeleting', 'addingmember', 'removingmember');
+ $OUTPUT->add_gui_object('savedsearchlist', $attrib['id']);
return html::tag('ul', $attrib, $out, html::$common_attrib);
}
@@ -395,7 +409,7 @@ function rcmail_js_contacts_list($result, $prefix='')
), '&raquo;');
}
else
- $val = '&nbsp;';
+ $val = '';
break;
default:
@@ -422,7 +436,7 @@ function rcmail_contacts_list_title($attrib)
unset($attrib['name']);
$OUTPUT->add_gui_object('addresslist_title', $attrib['id']);
- $OUTPUT->add_label('contacts');
+ $OUTPUT->add_label('contacts','uponelevel');
return html::tag($attrib['tag'], $attrib, $RCMAIL->gettext($attrib['label']), html::$common_attrib);
}
@@ -518,7 +532,7 @@ function rcmail_contact_form($form, $record, $attrib = null)
foreach ($coltypes as $col => $prop) {
if ($prop['subtypes']) {
$subtype_names = array_map('rcmail_get_type_label', $prop['subtypes']);
- $select_subtype = new html_select(array('name' => '_subtype_'.$col.'[]', 'class' => 'contactselectsubtype'));
+ $select_subtype = new html_select(array('name' => '_subtype_'.$col.'[]', 'class' => 'contactselectsubtype', 'title' => $prop['label'] . ' ' . $RCMAIL->gettext('type')));
$select_subtype->add($subtype_names, $prop['subtypes']);
$coltypes[$col]['subtypes_select'] = $select_subtype->show();
}
@@ -607,7 +621,7 @@ function rcmail_contact_form($form, $record, $attrib = null)
// prepare subtype selector in edit mode
if ($edit_mode && is_array($colprop['subtypes'])) {
$subtype_names = array_map('rcmail_get_type_label', $colprop['subtypes']);
- $select_subtype = new html_select(array('name' => '_subtype_'.$col.'[]', 'class' => 'contactselectsubtype'));
+ $select_subtype = new html_select(array('name' => '_subtype_'.$col.'[]', 'class' => 'contactselectsubtype', 'title' => $colprop['label'] . ' ' . $RCMAIL->gettext('type')));
$select_subtype->add($subtype_names, $colprop['subtypes']);
}
else
@@ -649,6 +663,8 @@ function rcmail_contact_form($form, $record, $attrib = null)
if ($subtypes[$i])
$subtype = $subtypes[$i];
+ $colprop['id'] = 'ff_' . $col . intval($coltypes[$field]['count']);
+
// render composite field
if ($colprop['type'] == 'composite') {
$composite = array(); $j = 0;
@@ -714,7 +730,7 @@ function rcmail_contact_form($form, $record, $attrib = null)
// display row with label
if ($label) {
$rows .= html::div('row',
- html::div('contactfieldlabel label', $select_subtype ? $select_subtype->show($subtype) : rcube::Q($label)) .
+ html::div('contactfieldlabel label', $select_subtype ? $select_subtype->show($subtype) : html::label($colprop['id'], rcube::Q($label))) .
html::div('contactfieldcontent '.$colprop['type'], $val));
}
else // row without label
@@ -800,11 +816,15 @@ function rcmail_contact_photo($attrib)
}
$photo_img = $RCMAIL->url($url);
}
- else
+ else {
$ff_value = '-del-'; // will disable delete-photo action
+ }
- $img = html::img(array('src' => $photo_img, 'border' => 1, 'alt' => ''));
- $content = html::div($attrib, $img);
+ $content = html::div($attrib, html::img(array(
+ 'src' => $photo_img,
+ 'alt' => $RCMAIL->gettext('contactphoto'),
+ 'onerror' => 'this.src = rcmail.env.photo_placeholder',
+ )));
if ($CONTACT_COLTYPES['photo'] && ($RCMAIL->action == 'edit' || $RCMAIL->action == 'add')) {
$RCMAIL->output->add_gui_object('contactphoto', $attrib['id']);
diff --git a/program/steps/addressbook/move.inc b/program/steps/addressbook/move.inc
index 7a730af77..e83276523 100644
--- a/program/steps/addressbook/move.inc
+++ b/program/steps/addressbook/move.inc
@@ -142,10 +142,6 @@ foreach ($cids as $source => $source_cids) {
}
if (!$deleted || $deleted != $all) {
- // update saved search after data changed
- if ($deleted) {
- rcmail_search_update();
- }
$OUTPUT->command('list_contacts');
}
else {
@@ -157,8 +153,13 @@ else {
$result = new rcube_result_set($count, $first);
$pages = ceil((count($records) + $delcnt) / $PAGE_SIZE);
+ // last page and it's empty, display previous one
+ if ($result->count && $result->count <= ($PAGE_SIZE * ($page - 1))) {
+ $OUTPUT->command('list_page', 'prev');
+ $rowcount = $RCMAIL->gettext('loading');
+ }
// get records from the next page to add to the list
- if ($_GET['_from'] != 'show' && $pages > 1 && $page < $pages) {
+ else if ($pages > 1 && $page < $pages) {
// sort the records
ksort($records, SORT_LOCALE_STRING);
@@ -180,10 +181,15 @@ else {
else {
// count contacts for this user
$result = $CONTACTS->count();
- // get records from the next page to add to the list
- $pages = ceil(($result->count + $deleted) / $PAGE_SIZE);
+ $pages = ceil(($result->count + $deleted) / $PAGE_SIZE);
- if ($_GET['_from'] != 'show' && $pages > 1 && $page < $pages) {
+ // last page and it's empty, display previous one
+ if ($result->count && $result->count <= ($PAGE_SIZE * ($page - 1))) {
+ $OUTPUT->command('list_page', 'prev');
+ $rowcount = $RCMAIL->gettext('loading');
+ }
+ // get records from the next page to add to the list
+ else if ($pages > 1 && $page < $pages) {
$CONTACTS->set_page($page);
$records = $CONTACTS->list_records(null, -$deleted);
}
@@ -191,7 +197,7 @@ else {
// update message count display
$OUTPUT->set_env('pagecount', ceil($result->count / $PAGE_SIZE));
- $OUTPUT->command('set_rowcount', rcmail_get_rowcount_text($result));
+ $OUTPUT->command('set_rowcount', $rowcount ? $rowcount : rcmail_get_rowcount_text($result));
// add new rows from next page (if any)
if (!empty($records)) {
diff --git a/program/steps/addressbook/photo.inc b/program/steps/addressbook/photo.inc
index 482185735..30d09ffcc 100644
--- a/program/steps/addressbook/photo.inc
+++ b/program/steps/addressbook/photo.inc
@@ -72,8 +72,12 @@ $plugin = $RCMAIL->plugins->exec_hook('contact_photo',
if ($plugin['url']) {
$RCMAIL->output->redirect($plugin['url']);
}
-else {
- $data = $plugin['data'];
+
+$data = $plugin['data'];
+
+// detect if photo data is an URL
+if (strlen($data) < 1024 && filter_var($data, FILTER_VALIDATE_URL)) {
+ $RCMAIL->output->redirect($data);
}
// deliver alt image
diff --git a/program/steps/addressbook/save.inc b/program/steps/addressbook/save.inc
index 94556f96b..4f30fd4b7 100644
--- a/program/steps/addressbook/save.inc
+++ b/program/steps/addressbook/save.inc
@@ -148,6 +148,15 @@ if (!empty($cid)) {
$result = $plugin['result'];
if ($result) {
+ // show confirmation
+ $OUTPUT->show_message('successfullysaved', 'confirmation', null, false);
+
+ // in search mode, just reload the list (#1490015)
+ if ($_REQUEST['_search']) {
+ $OUTPUT->command('parent.command', 'list');
+ $OUTPUT->send('iframe');
+ }
+
// LDAP DN change
if (is_string($result) && strlen($result)>1) {
$newcid = $result;
@@ -165,11 +174,13 @@ if (!empty($cid)) {
$a_js_cols[] = rcube::Q((string)$record[$col]);
}
+ // performance: unset some big data items we don't need here
+ $record = array_intersect_key($record, array('ID' => 1,'email' => 1,'name' => 1));
+ $record['_type'] = 'person';
+
// update the changed col in list
$OUTPUT->command('parent.update_contact_row', $cid, $a_js_cols, $newcid, $source, $record);
- // show confirmation
- $OUTPUT->show_message('successfullysaved', 'confirmation', null, false);
$RCMAIL->overwrite_action('show');
}
else {
@@ -224,29 +235,13 @@ else {
$CONTACTS->add_to_group($plugin['group_id'], $plugin['ids']);
}
}
- else {
- $counts = $CONTACTS->count();
- }
-
- if ((string)$source === (string)$orig_source) {
- // add contact row or jump to the page where it should appear
- $CONTACTS->reset();
- $result = $CONTACTS->search($CONTACTS->primary_key, $insert_id);
-
- rcmail_js_contacts_list($result, 'parent.');
- $OUTPUT->command('parent.contact_list.select', rcube_utils::html_identifier($insert_id));
-
- // update record count display
- $CONTACTS->reset();
- $OUTPUT->command('parent.set_rowcount', rcmail_get_rowcount_text($counts));
- }
- else {
- // re-set iframe
- $OUTPUT->command('parent.show_contentframe');
- }
// show confirmation
$OUTPUT->show_message('successfullysaved', 'confirmation', null, false);
+
+ $OUTPUT->command('parent.set_rowcount', $RCMAIL->gettext('loading'));
+ $OUTPUT->command('parent.list_contacts');
+
$OUTPUT->send('iframe');
}
else {
diff --git a/program/steps/addressbook/show.inc b/program/steps/addressbook/show.inc
index f4224a3e2..5835ce7e5 100644
--- a/program/steps/addressbook/show.inc
+++ b/program/steps/addressbook/show.inc
@@ -32,7 +32,11 @@ $SOURCE_ID = $source;
if ($cid && ($record = $CONTACTS->get_record($cid, true))) {
$OUTPUT->set_env('readonly', $CONTACTS->readonly || $record['readonly']);
$OUTPUT->set_env('cid', $record['ID']);
- $OUTPUT->set_env('compose_extwin', $RCMAIL->config->get('compose_extwin',false));
+
+ // remember current search request ID (if in search mode)
+ if ($search = rcube_utils::get_input_value('_search', rcube_utils::INPUT_GET)) {
+ $OUTPUT->set_env('search_request', $search);
+ }
}
// get address book name (for display)
@@ -60,6 +64,7 @@ function rcmail_contact_head($attrib)
$form = array(
'head' => array( // section 'head' is magic!
+ 'name' => $RCMAIL->gettext('contactnameandorg'),
'content' => array(
'prefix' => array('type' => 'text'),
'firstname' => array('type' => 'text'),
diff --git a/program/steps/addressbook/undo.inc b/program/steps/addressbook/undo.inc
index ec3feb9c0..91547b765 100644
--- a/program/steps/addressbook/undo.inc
+++ b/program/steps/addressbook/undo.inc
@@ -45,9 +45,6 @@ foreach ((array)$undo['data'] as $source => $cid) {
}
}
-// update saved search after data changed
-rcmail_search_update();
-
$RCMAIL->session->remove('contact_undo');
$OUTPUT->show_message('contactrestored', 'confirmation');
diff --git a/program/steps/mail/attachments.inc b/program/steps/mail/attachments.inc
index 85bc36cac..5eaa655e3 100644
--- a/program/steps/mail/attachments.inc
+++ b/program/steps/mail/attachments.inc
@@ -38,7 +38,7 @@ if (!$COMPOSE) {
// remove an attachment
-if ($RCMAIL->action=='remove-attachment') {
+if ($RCMAIL->action == 'remove-attachment') {
$id = 'undefined';
if (preg_match('/^rcmfile(\w+)$/', $_POST['_file'], $regs)) {
@@ -60,32 +60,14 @@ if ($RCMAIL->action=='remove-attachment') {
exit;
}
-if ($RCMAIL->action=='display-attachment') {
+if ($RCMAIL->action == 'display-attachment') {
$id = 'undefined';
if (preg_match('/^rcmfile(\w+)$/', $_GET['_file'], $regs)) {
$id = $regs[1];
}
- if ($attachment = $COMPOSE['attachments'][$id]) {
- $attachment = $RCMAIL->plugins->exec_hook('attachment_display', $attachment);
- }
-
- if ($attachment['status']) {
- if (empty($attachment['size'])) {
- $attachment['size'] = $attachment['data'] ? strlen($attachment['data']) : @filesize($attachment['path']);
- }
-
- header('Content-Type: ' . $attachment['mimetype']);
- header('Content-Length: ' . $attachment['size']);
-
- if ($attachment['data']) {
- echo $attachment['data'];
- }
- else if ($attachment['path']) {
- readfile($attachment['path']);
- }
- }
+ $RCMAIL->display_uploaded_file($COMPOSE['attachments'][$id]);
exit;
}
@@ -139,6 +121,7 @@ if (is_array($_FILES['_attachments']['tmp_name'])) {
'onclick' => sprintf("return %s.command('remove-attachment','rcmfile%s', this)", rcmail_output::JS_OBJECT_NAME, $id),
'title' => $RCMAIL->gettext('delete'),
'class' => 'delete',
+ 'aria-label' => $RCMAIL->gettext('delete') . ' ' . $attachment['name'],
), $button);
$content .= rcube::Q($attachment['name']);
diff --git a/program/steps/mail/autocomplete.inc b/program/steps/mail/autocomplete.inc
index 71b337a53..30b8f2299 100644
--- a/program/steps/mail/autocomplete.inc
+++ b/program/steps/mail/autocomplete.inc
@@ -90,8 +90,14 @@ if (!empty($book_types) && strlen($search)) {
// skip duplicates
if (!in_array($contact, $contacts)) {
- $contacts[] = array('name' => $contact, 'type' => $sql_arr['_type']);
- $sort_keys[] = sprintf('%s %03d', $sql_arr['name'] , $idx++);
+ $contact = array('name' => $contact, 'type' => $sql_arr['_type']);
+
+ if (($display = rcube_addressbook::compose_search_name($sql_arr, $email, $name)) && $display != $contact['name']) {
+ $contact['display'] = $display;
+ }
+
+ $contacts[] = $contact;
+ $sort_keys[] = sprintf('%s %03d', $contact['display'] ?: $name, $idx++);
if (count($contacts) >= $MAXNUM) {
break 2;
@@ -118,7 +124,13 @@ if (!empty($book_types) && strlen($search)) {
if ($group_prop['email']) {
$idx = 0;
foreach ((array)$group_prop['email'] as $email) {
- $contacts[] = array('name' => format_email_recipient($email, $group['name']), 'type' => 'group');
+ $contacts[] = array(
+ 'name' => format_email_recipient($email, $group['name']),
+ 'email' => $email,
+ 'type' => 'group',
+ 'id' => $group['ID'],
+ 'source' => $id,
+ );
$sort_keys[] = sprintf('%s %03d', $group['name'] , $idx++);
if (count($contacts) >= $MAXNUM) {
diff --git a/program/steps/mail/check_recent.inc b/program/steps/mail/check_recent.inc
index cfdcda605..b95819415 100644
--- a/program/steps/mail/check_recent.inc
+++ b/program/steps/mail/check_recent.inc
@@ -77,15 +77,16 @@ foreach ($a_mailboxes as $mbox_name) {
if ($search_request && isset($_SESSION['search'])) {
unset($search_request); // only do this once
$_SESSION['search'] = $RCMAIL->storage->refresh_search();
- if ($_SESSION['search'][1]->multi)
+ if ($_SESSION['search'][1]->multi) {
$mbox_name = '';
+ }
}
if (!empty($_POST['_quota'])) {
- $OUTPUT->command('set_quota', $RCMAIL->quota_content());
+ $OUTPUT->command('set_quota', $RCMAIL->quota_content(null, $mbox_name));
}
- $OUTPUT->set_env('exists', $RCMAIL->storage->count($mbox_name, 'EXISTS'));
+ $OUTPUT->set_env('exists', $RCMAIL->storage->count($mbox_name, 'EXISTS', true));
// "No-list" mode, don't get messages
if (empty($_POST['_list'])) {
@@ -146,7 +147,7 @@ foreach ($a_mailboxes as $mbox_name) {
// set trash folder state
if ($mbox_name === $trash) {
- $OUTPUT->command('set_trash_count', $RCMAIL->storage->count($mbox_name, 'EXISTS'));
+ $OUTPUT->command('set_trash_count', $RCMAIL->storage->count($mbox_name, 'EXISTS', true));
}
}
diff --git a/program/steps/mail/compose.inc b/program/steps/mail/compose.inc
index 2b717d673..1770a1bcb 100644
--- a/program/steps/mail/compose.inc
+++ b/program/steps/mail/compose.inc
@@ -80,7 +80,7 @@ if (!is_array($COMPOSE)) {
$OUTPUT->add_label('nosubject', 'nosenderwarning', 'norecipientwarning', 'nosubjectwarning', 'cancel',
'nobodywarning', 'notsentwarning', 'notuploadedwarning', 'savingmessage', 'sendingmessage',
'messagesaved', 'converting', 'editorwarning', 'searching', 'uploading', 'uploadingmany',
- 'fileuploaderror', 'sendmessage', 'savenewresponse', 'responsename', 'responsetext', 'save',
+ 'fileuploaderror', 'sendmessage', 'newresponse', 'responsename', 'responsetext', 'save',
'savingresponse', 'restoresavedcomposedata', 'restoremessage', 'delete', 'restore', 'ignore',
'selectimportfile');
@@ -91,6 +91,7 @@ $OUTPUT->set_env('session_id', session_id());
$OUTPUT->set_env('mailbox', $RCMAIL->storage->get_folder());
$OUTPUT->set_env('top_posting', intval($RCMAIL->config->get('reply_mode')) > 0);
$OUTPUT->set_env('recipients_separator', trim($RCMAIL->config->get('recipients_separator', ',')));
+$OUTPUT->set_env('save_localstorage', (bool)$RCMAIL->config->get('compose_save_localstorage'));
$drafts_mbox = $RCMAIL->config->get('drafts_mbox');
$config_show_sig = $RCMAIL->config->get('show_sig', 1);
@@ -280,6 +281,7 @@ $from_email = @mb_strtolower($MESSAGE->compose['from_email']);
foreach ($parts as $header) {
$fvalue = '';
$decode_header = true;
+ $charset = $MESSAGE->headers->charset;
// we have a set of recipients stored is session
if ($header == 'to' && ($mailto_id = $COMPOSE['param']['mailto'])
@@ -287,16 +289,19 @@ foreach ($parts as $header) {
) {
$fvalue = urldecode($_SESSION['mailto'][$mailto_id]);
$decode_header = false;
+ $charset = $RCMAIL->output->charset;
// make session to not grow up too much
unset($_SESSION['mailto'][$mailto_id]);
$COMPOSE['param']['to'] = $fvalue;
}
else if (!empty($_POST['_'.$header])) {
- $fvalue = rcube_utils::get_input_value('_'.$header, rcube_utils::INPUT_POST, TRUE);
+ $fvalue = rcube_utils::get_input_value('_'.$header, rcube_utils::INPUT_POST, TRUE);
+ $charset = $RCMAIL->output->charset;
}
else if (!empty($COMPOSE['param'][$header])) {
- $fvalue = $COMPOSE['param'][$header];
+ $fvalue = $COMPOSE['param'][$header];
+ $charset = $RCMAIL->output->charset;
}
else if ($compose_mode == RCUBE_COMPOSE_REPLY) {
// get recipent address(es) out of the message headers
@@ -337,9 +342,9 @@ foreach ($parts as $header) {
// When To: and Reply-To: are the same we add From: address to the list (#1489037)
if ($v = $MESSAGE->headers->from) {
- $from = rcube_mime::decode_address_list($v, null, false, $MESSAGE->headers->charset, true);
- $to = rcube_mime::decode_address_list($MESSAGE->headers->to, null, false, $MESSAGE->headers->charset, true);
- $replyto = rcube_mime::decode_address_list($MESSAGE->headers->replyto, null, false, $MESSAGE->headers->charset, true);
+ $from = rcube_mime::decode_address_list($v, null, false, $charset, true);
+ $to = rcube_mime::decode_address_list($MESSAGE->headers->to, null, false, $charset, true);
+ $replyto = rcube_mime::decode_address_list($MESSAGE->headers->replyto, null, false, $charset, true);
if (count($replyto) && !count(array_diff($to, $replyto)) && count(array_diff($from, $to))) {
$fvalue .= (!empty($fvalue) ? $separator : '') . $v;
@@ -365,7 +370,7 @@ foreach ($parts as $header) {
// split recipients and put them back together in a unique way
if (!empty($fvalue) && in_array($header, array('to', 'cc', 'bcc'))) {
- $to_addresses = rcube_mime::decode_address_list($fvalue, null, $decode_header, $MESSAGE->headers->charset);
+ $to_addresses = rcube_mime::decode_address_list($fvalue, null, $decode_header, $charset);
$fvalue = array();
foreach ($to_addresses as $addr_part) {
@@ -611,7 +616,7 @@ function rcmail_compose_header_from($attrib)
$text = $html = $sql_arr['signature'];
if ($sql_arr['html_signature']) {
- $h2t = new rcube_html2text($sql_arr['signature'], false, false);
+ $h2t = new rcube_html2text($sql_arr['signature'], false, true);
$text = trim($h2t->get_text());
}
else {
@@ -624,7 +629,8 @@ function rcmail_compose_header_from($attrib)
}
if (!$sql_arr['html_signature']) {
- $html = "<pre>" . $html . "</pre>";
+ $t2h = new rcube_text2html($sql_arr['signature'], false);
+ $html = $t2h->get_html();
}
$a_signatures[$identity_id]['text'] = $text;
@@ -826,15 +832,8 @@ function rcmail_compose_part_body($part, $isHtml = false)
}
}
- if ($part->ctype_parameters['format'] == 'flowed') {
- $body = rcube_mime::unfold_flowed($body);
- }
-
// add HTML formatting
- $body = rcmail_plain_body($body);
- if ($body) {
- $body = '<pre>' . $body . '</pre>';
- }
+ $body = rcmail_plain_body($body, $part->ctype_parameters['format'] == 'flowed');
}
}
else {
@@ -957,8 +956,7 @@ function rcmail_compose_body($attrib)
"googie.setLanguages(%s);\n".
"googie.setCurrentLanguage('%s');\n".
"googie.setDecoration(false);\n".
- "googie.decorateTextarea('%s');\n".
- "%s.set_env('spellcheck', googie);",
+ "googie.decorateTextarea('%s');\n",
$RCMAIL->output->get_skin_path(),
$RCMAIL->url(array('_task' => 'utils', '_action' => 'spell', '_remote' => 1)),
!empty($dictionary) ? 'true' : 'false',
@@ -970,14 +968,13 @@ function rcmail_compose_body($attrib)
rcube::JQ(rcube::Q($RCMAIL->gettext('addtodict'))),
rcube_output::json_serialize($spellcheck_langs),
$lang,
- $attrib['id'],
- rcmail_output::JS_OBJECT_NAME), 'foot');
+ $attrib['id']), 'foot');
$OUTPUT->add_label('checking');
$OUTPUT->set_env('spellcheck_langs', join(',', $editor_lang_set));
}
- $out .= "\n".'<iframe name="savetarget" src="program/resources/blank.gif" style="width:0;height:0;border:none;visibility:hidden;"></iframe>';
+ $out .= "\n".'<iframe name="savetarget" src="program/resources/blank.gif" style="width:0;height:0;border:none;visibility:hidden;" aria-hidden="true"></iframe>';
return $out;
}
@@ -1463,6 +1460,9 @@ function rcmail_compose_subject($attrib)
$subject = $MESSAGE->subject;
else
$subject = 'Re: '.$MESSAGE->subject;
+
+ // replace (was: ...) (#1489375)
+ $subject = preg_replace('/\s*\([wW]as:[^\)]+\)\s*$/', '', $subject);
}
// create a forward-subject
else if ($compose_mode == RCUBE_COMPOSE_FORWARD) {
@@ -1525,7 +1525,9 @@ function rcmail_compose_attachment_list($attrib)
'href' => "#delete",
'title' => $RCMAIL->gettext('delete'),
'onclick' => sprintf("return %s.command('remove-attachment','rcmfile%s', this)", rcmail_output::JS_OBJECT_NAME, $id),
- 'class' => 'delete'
+ 'class' => 'delete',
+ 'tabindex' => $attrib['tabindex'] ?: '0',
+ 'aria-label' => $RCMAIL->gettext('delete') . ' ' . $a_prop['name'],
),
$button
) . rcube::Q($a_prop['name'])
@@ -1551,6 +1553,12 @@ function rcmail_compose_attachment_list($attrib)
$OUTPUT->set_env('attachments', $jslist);
$OUTPUT->add_gui_object('attachmentlist', $attrib['id']);
+ // put tabindex value into data-tabindex attribute
+ if (isset($attrib['tabindex'])) {
+ $attrib['data-tabindex'] = $attrib['tabindex'];
+ unset($attrib['tabindex']);
+ }
+
return html::tag('ul', $attrib, $out, html::$common_attrib);
}
@@ -1707,7 +1715,7 @@ function rcmail_editor_selector($attrib)
if (empty($attrib['name']))
$attrib['name'] = 'editorSelect';
- $attrib['onchange'] = "return rcmail_toggle_editor(this, '".$attrib['editorid']."', '_is_html')";
+ $attrib['onchange'] = "return rcmail.command('toggle-editor', {id: '".$attrib['editorid']."', html: this.value == 'html'}, '', event)";
$select = new html_select($attrib);
@@ -1864,9 +1872,10 @@ function rcmail_compose_responses_list($attrib)
foreach ($RCMAIL->get_compose_responses(true) as $response) {
$key = $response['key'];
$item = html::a(array(
- 'href '=> '#'.urlencode($response['name']),
+ 'href' => '#'.urlencode($response['name']),
'class' => rtrim('insertresponse ' . $attrib['itemclass']),
'unselectable' => 'on',
+ 'tabindex' => '0',
'rel' => $key,
), rcube::Q($response['name']));
diff --git a/program/steps/mail/copy.inc b/program/steps/mail/copy.inc
index 86586d34d..585310d47 100644
--- a/program/steps/mail/copy.inc
+++ b/program/steps/mail/copy.inc
@@ -24,15 +24,19 @@ if (!$OUTPUT->ajax_call) {
return;
}
-// move messages
+// copy messages
if (!empty($_POST['_uid']) && strlen($_POST['_target_mbox'])) {
- $target = rcube_utils::get_input_value('_target_mbox', rcube_utils::INPUT_POST, true);
+ $target = rcube_utils::get_input_value('_target_mbox', rcube_utils::INPUT_POST, true);
+ $sources = array();
- foreach (rcmail::get_uids() as $mbox => $uids) {
- if ($mbox === $target)
+ foreach (rcmail::get_uids(null, null, $multifolder) as $mbox => $uids) {
+ if ($mbox === $target) {
$copied++;
- else
+ }
+ else {
$copied += (int)$RCMAIL->storage->copy_message($uids, $target, $mbox);
+ $sources[] = $mbox;
+ }
}
if (!$copied) {
@@ -47,7 +51,7 @@ if (!empty($_POST['_uid']) && strlen($_POST['_target_mbox'])) {
rcmail_send_unread_count($target, true);
- $OUTPUT->command('set_quota', $RCMAIL->quota_content());
+ $OUTPUT->command('set_quota', $RCMAIL->quota_content(null, $multifolder ? $sources[0] : 'INBOX'));
}
// unknown action or missing query param
else {
diff --git a/program/steps/mail/folders.inc b/program/steps/mail/folders.inc
index 519a41fdd..49bf25377 100644
--- a/program/steps/mail/folders.inc
+++ b/program/steps/mail/folders.inc
@@ -35,7 +35,7 @@ if ($RCMAIL->action == 'expunge') {
$OUTPUT->show_message('folderexpunged', 'confirmation');
if (!empty($_REQUEST['_reload'])) {
- $OUTPUT->command('set_quota', $RCMAIL->quota_content());
+ $OUTPUT->command('set_quota', $RCMAIL->quota_content(null, $mbox));
$OUTPUT->command('message_list.clear');
$RCMAIL->action = 'list';
return;
@@ -69,7 +69,7 @@ else if ($RCMAIL->action == 'purge') {
$OUTPUT->command('message_list.clear');
$OUTPUT->command('set_rowcount', rcmail_get_messagecount_text(), $mbox);
$OUTPUT->command('set_unread_count', $mbox, 0);
- $OUTPUT->command('set_quota', $RCMAIL->quota_content());
+ $OUTPUT->command('set_quota', $RCMAIL->quota_content(null, $mbox));
rcmail_set_unseen_count($mbox, 0);
// set trash folder state
diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc
index 7270cf95a..a7c483bba 100644
--- a/program/steps/mail/func.inc
+++ b/program/steps/mail/func.inc
@@ -23,39 +23,8 @@
// always instantiate storage object (but not connect to server yet)
$RCMAIL->storage_init();
-// set imap properties and session vars
-if (!strlen($mbox = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_GPC, true))) {
- $mbox = strlen($_SESSION['mbox']) ? $_SESSION['mbox'] : 'INBOX';
-}
-if (!($page = intval($_GET['_page']))) {
- $page = $_SESSION['page'] ? $_SESSION['page'] : 1;
-}
-
-$RCMAIL->storage->set_folder($_SESSION['mbox'] = $mbox);
-$RCMAIL->storage->set_page($_SESSION['page'] = $page);
-
-$a_threading = $RCMAIL->config->get('message_threading', array());
-$message_sort_col = $RCMAIL->config->get('message_sort_col');
-$message_sort_order = $RCMAIL->config->get('message_sort_order');
-
-// set default sort col/order to session
-if (!isset($_SESSION['sort_col'])) {
- $_SESSION['sort_col'] = $message_sort_col ? $message_sort_col : '';
-}
-if (!isset($_SESSION['sort_order'])) {
- $_SESSION['sort_order'] = strtoupper($message_sort_order) == 'ASC' ? 'ASC' : 'DESC';
-}
-
-// set threads mode
-if (isset($_GET['_threads'])) {
- if ($_GET['_threads'])
- $a_threading[$_SESSION['mbox']] = true;
- else
- unset($a_threading[$_SESSION['mbox']]);
-
- $RCMAIL->user->save_prefs(array('message_threading' => $a_threading));
-}
-$RCMAIL->storage->set_threading($a_threading[$_SESSION['mbox']]);
+// init environment - set current folder, page, list mode
+rcmail_init_env();
// set message set for search result
if (!empty($_REQUEST['_search']) && isset($_SESSION['search'])
@@ -135,14 +104,20 @@ if (empty($RCMAIL->action) || $RCMAIL->action == 'list') {
}
}
+ if (!empty($_GET['_uid'])) {
+ $OUTPUT->set_env('list_uid', $_GET['_uid']);
+ }
+
// set configuration
$RCMAIL->set_env_config(array('delete_junk', 'flag_for_deletion', 'read_when_deleted',
- 'skip_deleted', 'display_next', 'message_extwin', 'compose_extwin', 'forward_attachment'));
+ 'skip_deleted', 'display_next', 'message_extwin', 'forward_attachment'));
if (!$OUTPUT->ajax_call) {
$OUTPUT->add_label('checkingmail', 'deletemessage', 'movemessagetotrash',
'movingmessage', 'copyingmessage', 'deletingmessage', 'markingmessage',
- 'copy', 'move', 'quota', 'replyall', 'replylist', 'stillsearching');
+ 'copy', 'move', 'quota', 'replyall', 'replylist', 'stillsearching',
+ 'flagged', 'unflagged', 'unread', 'deleted', 'replied', 'forwarded',
+ 'priority', 'withattachment', 'fileuploaderror');
}
$pagetitle = $RCMAIL->localize_foldername($mbox_name, true);
@@ -185,6 +160,64 @@ $RCMAIL->register_action_map(array(
/**
+ * Sets storage properties and session
+ */
+function rcmail_init_env()
+{
+ global $RCMAIL;
+
+ $default_threading = $RCMAIL->config->get('default_list_mode', 'list') == 'threads';
+ $a_threading = $RCMAIL->config->get('message_threading', array());
+ $message_sort_col = $RCMAIL->config->get('message_sort_col');
+ $message_sort_order = $RCMAIL->config->get('message_sort_order');
+
+ // set imap properties and session vars
+ if (!strlen($mbox = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_GPC, true))) {
+ $mbox = strlen($_SESSION['mbox']) ? $_SESSION['mbox'] : 'INBOX';
+ }
+ if (!($page = intval($_GET['_page']))) {
+ $page = $_SESSION['page'] ? $_SESSION['page'] : 1;
+ }
+
+ $RCMAIL->storage->set_folder($_SESSION['mbox'] = $mbox);
+ $RCMAIL->storage->set_page($_SESSION['page'] = $page);
+
+ // set default sort col/order to session
+ if (!isset($_SESSION['sort_col'])) {
+ $_SESSION['sort_col'] = $message_sort_col ? $message_sort_col : '';
+ }
+ if (!isset($_SESSION['sort_order'])) {
+ $_SESSION['sort_order'] = strtoupper($message_sort_order) == 'ASC' ? 'ASC' : 'DESC';
+ }
+
+ // set threads mode
+ if (isset($_GET['_threads'])) {
+ if ($_GET['_threads']) {
+ // re-set current page number when listing mode changes
+ if (!$a_threading[$_SESSION['mbox']]) {
+ $RCMAIL->storage->set_page($_SESSION['page'] = 1);
+ }
+
+ $a_threading[$_SESSION['mbox']] = true;
+ }
+ else {
+ // re-set current page number when listing mode changes
+ if ($a_threading[$_SESSION['mbox']]) {
+ $RCMAIL->storage->set_page($_SESSION['page'] = 1);
+ }
+
+ $a_threading[$_SESSION['mbox']] = false;
+ }
+
+ $RCMAIL->user->save_prefs(array('message_threading' => $a_threading));
+ }
+
+ $threading = isset($a_threading[$_SESSION['mbox']]) ? $a_threading[$_SESSION['mbox']] : $default_threading;
+
+ $RCMAIL->storage->set_threading($threading);
+}
+
+/**
* Returns default search mods
*/
function rcmail_search_mods()
@@ -351,13 +384,18 @@ function rcmail_js_message_list($a_headers, $insert_top=false, $a_show_cols=null
$head_replace = true;
}
- // add 'folder' column to list on multi-folder searches
- $search_set = $RCMAIL->storage->get_search_set();
+ $search_set = $RCMAIL->storage->get_search_set();
$multifolder = $search_set && $search_set[1]->multi;
+
+ // add/remove 'folder' column to the list on multi-folder searches
if ($multifolder && !in_array('folder', $a_show_cols)) {
$a_show_cols[] = 'folder';
$head_replace = true;
}
+ else if (!$multifolder && ($found = array_search('folder', $a_show_cols)) !== false) {
+ unset($a_show_cols[$found]);
+ $head_replace = true;
+ }
$mbox = $RCMAIL->storage->get_folder();
@@ -369,6 +407,7 @@ function rcmail_js_message_list($a_headers, $insert_top=false, $a_show_cols=null
// Make sure there are no duplicated columns (#1486999)
$a_show_cols = array_unique($a_show_cols);
+ $_SESSION['list_attrib']['columns'] = $a_show_cols;
// Plugins may set header's list_cols/list_flags and other rcube_message_header variables
// and list columns
@@ -507,14 +546,19 @@ function rcmail_message_list_head($attrib, $a_show_cols)
$a_sort_cols = array('subject', 'date', 'from', 'to', 'fromto', 'size', 'cc');
if (!empty($attrib['optionsmenuicon'])) {
- $onclick = 'return ' . rcmail_output::JS_OBJECT_NAME . ".command('menu-open', 'messagelistmenu')";
- if ($attrib['optionsmenuicon'] === true || $attrib['optionsmenuicon'] == 'true')
- $list_menu = html::div(array('onclick' => $onclick, 'class' => 'listmenu',
- 'id' => 'listmenulink', 'title' => $RCMAIL->gettext('listoptions')));
- else
- $list_menu = html::a(array('href' => '#', 'onclick' => $onclick),
- html::img(array('src' => $skin_path . $attrib['optionsmenuicon'],
- 'id' => 'listmenulink', 'title' => $RCMAIL->gettext('listoptions'))));
+ $onclick = 'return ' . rcmail_output::JS_OBJECT_NAME . ".command('menu-open', 'messagelistmenu', this, event)";
+ $inner = $RCMAIL->gettext('listoptions');
+ if (is_string($attrib['optionsmenuicon']) && $attrib['optionsmenuicon'] != 'true') {
+ $inner = html::img(array('src' => $skin_path . $attrib['optionsmenuicon'], 'alt' => $RCMAIL->gettext('listoptions')));
+ }
+ $list_menu = html::a(array(
+ 'href' => '#list-options',
+ 'onclick' => $onclick,
+ 'class' => 'listmenu',
+ 'id' => 'listmenulink',
+ 'title' => $RCMAIL->gettext('listoptions'),
+ 'tabindex' => '0',
+ ), $inner);
}
else {
$list_menu = '';
@@ -534,12 +578,14 @@ function rcmail_message_list_head($attrib, $a_show_cols)
// get column name
switch ($col) {
case 'flag':
- $col_name = html::span('flagged', '&nbsp;');
+ $col_name = html::span('flagged', $RCMAIL->gettext('flagged'));
break;
case 'attachment':
case 'priority':
+ $col_name = html::span($col, $RCMAIL->gettext($col));
+ break;
case 'status':
- $col_name = html::span($col, '&nbsp;');
+ $col_name = html::span($col, $RCMAIL->gettext('readstatus'));
break;
case 'threads':
$col_name = $list_menu;
@@ -854,95 +900,29 @@ function rcmail_print_body($part, $p = array())
// plaintext postprocessing
if ($part->ctype_secondary == 'plain') {
- if ($part->ctype_secondary == 'plain' && $part->ctype_parameters['format'] == 'flowed') {
- $body = rcube_mime::unfold_flowed($body);
- }
-
- $body = rcmail_plain_body($body);
+ $body = rcmail_plain_body($body, $part->ctype_parameters['format'] == 'flowed');
}
// allow post-processing of the message body
$data = $RCMAIL->plugins->exec_hook('message_part_after',
array('type' => $part->ctype_secondary, 'body' => $body, 'id' => $part->mime_id) + $data);
- return $data['type'] == 'html' ? $data['body'] : html::tag('pre', array(), $data['body']);
+ return $data['body'];
}
/**
* Handle links and citation marks in plain text message
*
* @param string Plain text string
+ * @param boolean Set to True if the source text is in format=flowed
*
* @return string Formatted HTML string
*/
-function rcmail_plain_body($body)
+function rcmail_plain_body($body, $flowed = false)
{
- global $RCMAIL;
-
- // make links and email-addresses clickable
- $attribs = array('link_attribs' => array('rel' => 'noreferrer', 'target' => '_blank'));
- $replacer = new rcmail_string_replacer($attribs);
-
- // search for patterns like links and e-mail addresses and replace with tokens
- $body = $replacer->replace($body);
-
- // split body into single lines
- $body = preg_split('/\r?\n/', $body);
- $quote_level = 0;
- $last = -1;
-
- // find/mark quoted lines...
- for ($n=0, $cnt=count($body); $n < $cnt; $n++) {
- if ($body[$n][0] == '>' && preg_match('/^(>+ {0,1})+/', $body[$n], $regs)) {
- $q = substr_count($regs[0], '>');
- $body[$n] = substr($body[$n], strlen($regs[0]));
-
- if ($q > $quote_level) {
- $body[$n] = $replacer->get_replacement($replacer->add(
- str_repeat('<blockquote>', $q - $quote_level))) . $body[$n];
- $last = $n;
- }
- else if ($q < $quote_level) {
- $body[$n] = $replacer->get_replacement($replacer->add(
- str_repeat('</blockquote>', $quote_level - $q))) . $body[$n];
- $last = $n;
- }
- }
- else {
- $q = 0;
- if ($quote_level > 0)
- $body[$n] = $replacer->get_replacement($replacer->add(
- str_repeat('</blockquote>', $quote_level))) . $body[$n];
- }
-
- $quote_level = $q;
- }
-
- $body = join("\n", $body);
-
- // quote plain text (don't use rcube::Q() here, to display entities "as is")
- $table = get_html_translation_table(HTML_SPECIALCHARS);
- unset($table['?']);
- $body = strtr($body, $table);
-
- // colorize signature (up to <sig_max_lines> lines)
- $len = strlen($body);
- $sig_max_lines = $RCMAIL->config->get('sig_max_lines', 15);
-
- while (($sp = strrpos($body, "-- \n", $sp ? -$len+$sp-1 : 0)) !== false) {
- if ($sp == 0 || $body[$sp-1] == "\n") {
- // do not touch blocks with more that X lines
- if (substr_count($body, "\n", $sp) < $sig_max_lines) {
- $body = substr($body, 0, max(0, $sp))
- . '<span class="sig">'.substr($body, $sp).'</span>';
- }
-
- break;
- }
- }
-
- // insert url/mailto links and citation tags
- $body = $replacer->resolve($body);
+ $options = array('flowed' => $flowed, 'wrap' => !$flowed, 'replacer' => 'rcmail_string_replacer');
+ $text2html = new rcube_text2html($body, false, $options);
+ $body = $text2html->get_html();
return $body;
}
@@ -1097,7 +1077,9 @@ function rcmail_message_headers($attrib, $headers=null)
$plugin = $RCMAIL->plugins->exec_hook('message_headers_output', array(
'output' => $output_headers,
'headers' => $headers_obj,
- 'exclude' => $exclude_headers
+ 'exclude' => $exclude_headers, // readonly
+ 'folder' => $MESSAGE->folder, // readonly
+ 'uid' => $MESSAGE->uid, // readonly
));
// single header value is requested
@@ -1272,8 +1254,8 @@ function rcmail_message_body($attrib)
$plugin = $RCMAIL->plugins->exec_hook('message_body_prefix',
array('part' => $MESSAGE, 'prefix' => ''));
- $out .= html::div('message-part', $plugin['prefix'] . html::tag('pre', array(),
- rcmail_plain_body(rcube::Q($MESSAGE->body, 'strict', false))));
+ $out .= html::div('message-part',
+ $plugin['prefix'] . rcmail_plain_body($MESSAGE->body));
}
}
@@ -1840,7 +1822,7 @@ function rcmail_send_mdn($message, &$smtp_error)
$body = $RCMAIL->gettext("yourmessage") . "\r\n\r\n" .
"\t" . $RCMAIL->gettext("to") . ': ' . rcube_mime::decode_mime_string($message->headers->to, $message->headers->charset) . "\r\n" .
"\t" . $RCMAIL->gettext("subject") . ': ' . $message->subject . "\r\n" .
- "\t" . $RCMAIL->gettext("sent") . ': ' . $RCMAIL->format_date($message->headers->date, $RCMAIL->config->get('date_long')) . "\r\n" .
+ "\t" . $RCMAIL->gettext("date") . ': ' . $RCMAIL->format_date($message->headers->date, $RCMAIL->config->get('date_long')) . "\r\n" .
"\r\n" . $RCMAIL->gettext("receiptnote");
$compose->headers($headers);
@@ -2099,6 +2081,7 @@ function rcmail_message_import_form($attrib = array())
));
$content = html::tag('input', array('type' => 'hidden', 'name' => '_unlock', 'value' => ''))
+ . html::tag('input', array('type' => 'hidden', 'name' => '_framed', 'value' => '1'))
. html::div(null, $fileinput->show())
. html::div('hint', $RCMAIL->gettext(array('name' => 'maxuploadsize', 'vars' => array('size' => $max_filesize))));
@@ -2136,11 +2119,10 @@ function rcmail_compose_contact_groups($abook, $source_id, $search = null, $sear
foreach ($abook->list_groups($search, $search_mode) as $group) {
$abook->reset();
$abook->set_group($group['ID']);
- $group_prop = $abook->get_group($group['ID']);
// group (distribution list) with email address(es)
- if ($group_prop['email']) {
- foreach ((array)$group_prop['email'] as $email) {
+ if ($group['email']) {
+ foreach ((array)$group['email'] as $email) {
$row_id = 'G'.$group['ID'];
$jsresult[$row_id] = format_email_recipient($email, $group['name']);
$OUTPUT->command('add_contact_row', $row_id, array(
@@ -2148,7 +2130,7 @@ function rcmail_compose_contact_groups($abook, $source_id, $search = null, $sear
}
}
// make virtual groups clickable to list their members
- else if ($group_prop['virtual']) {
+ else if ($group['virtual']) {
$row_id = 'G'.$group['ID'];
$OUTPUT->command('add_contact_row', $row_id, array(
'contactgroup' => html::a(array(
diff --git a/program/steps/mail/get.inc b/program/steps/mail/get.inc
index 02d57c7dc..b260d2c85 100644
--- a/program/steps/mail/get.inc
+++ b/program/steps/mail/get.inc
@@ -354,7 +354,7 @@ else if (strlen($part_id)) {
}
// send part as-it-is
else {
- if ($part->body) {
+ if ($part->body && empty($plugin['download'])) {
header("Content-Length: " . strlen($part->body));
echo $part->body;
$sent = true;
diff --git a/program/steps/mail/list.inc b/program/steps/mail/list.inc
index c4a6df57b..2dcc40d17 100644
--- a/program/steps/mail/list.inc
+++ b/program/steps/mail/list.inc
@@ -20,7 +20,7 @@
*/
if (!$OUTPUT->ajax_call) {
- return;
+ return;
}
$save_arr = array();
@@ -28,28 +28,28 @@ $dont_override = (array) $RCMAIL->config->get('dont_override');
// is there a sort type for this request?
if ($sort = rcube_utils::get_input_value('_sort', rcube_utils::INPUT_GET)) {
- // yes, so set the sort vars
- list($sort_col, $sort_order) = explode('_', $sort);
-
- // set session vars for sort (so next page and task switch know how to sort)
- if (!in_array('message_sort_col', $dont_override)) {
- $_SESSION['sort_col'] = $save_arr['message_sort_col'] = $sort_col;
- }
- if (!in_array('message_sort_order', $dont_override)) {
- $_SESSION['sort_order'] = $save_arr['message_sort_order'] = $sort_order;
- }
+ // yes, so set the sort vars
+ list($sort_col, $sort_order) = explode('_', $sort);
+
+ // set session vars for sort (so next page and task switch know how to sort)
+ if (!in_array('message_sort_col', $dont_override)) {
+ $_SESSION['sort_col'] = $save_arr['message_sort_col'] = $sort_col;
+ }
+ if (!in_array('message_sort_order', $dont_override)) {
+ $_SESSION['sort_order'] = $save_arr['message_sort_order'] = $sort_order;
+ }
}
// is there a set of columns for this request?
if ($cols = rcube_utils::get_input_value('_cols', rcube_utils::INPUT_GET)) {
- $_SESSION['list_attrib']['columns'] = explode(',', $cols);
- if (!in_array('list_cols', $dont_override)) {
- $save_arr['list_cols'] = explode(',', $cols);
- }
+ $_SESSION['list_attrib']['columns'] = explode(',', $cols);
+ if (!in_array('list_cols', $dont_override)) {
+ $save_arr['list_cols'] = explode(',', $cols);
+ }
}
if (!empty($save_arr)) {
- $RCMAIL->user->save_prefs($save_arr);
+ $RCMAIL->user->save_prefs($save_arr);
}
$mbox_name = $RCMAIL->storage->get_folder();
@@ -60,27 +60,32 @@ $RCMAIL->storage->folder_sync($mbox_name);
// initialize searching result if search_filter is used
if ($_SESSION['search_filter'] && $_SESSION['search_filter'] != 'ALL') {
- $search_request = md5($mbox_name.$_SESSION['search_scope'].$_SESSION['search_filter']);
- $RCMAIL->storage->search($mbox_name, $_SESSION['search_filter'], RCUBE_CHARSET, rcmail_sort_column());
- $_SESSION['search'] = $RCMAIL->storage->get_search_set();
- $_SESSION['search_request'] = $search_request;
- $OUTPUT->set_env('search_request', $search_request);
- $OUTPUT->set_env('search_filter', $_SESSION['search_filter']);
+ $search_request = md5($mbox_name.$_SESSION['search_scope'].$_SESSION['search_filter']);
+ $RCMAIL->storage->search($mbox_name, $_SESSION['search_filter'], RCUBE_CHARSET, rcmail_sort_column());
+
+ $_SESSION['search'] = $RCMAIL->storage->get_search_set();
+ $_SESSION['search_request'] = $search_request;
+
+ $OUTPUT->set_env('search_request', $search_request);
+ $OUTPUT->set_env('search_filter', $_SESSION['search_filter']);
+
+ $multifolder = is_a($_SESSION['search'][1], 'rcube_result_multifolder');
}
// fetch message headers
-if ($count = $RCMAIL->storage->count($mbox_name, $threading ? 'THREADS' : 'ALL', !empty($_REQUEST['_refresh'])))
- $a_headers = $RCMAIL->storage->list_messages($mbox_name, NULL, rcmail_sort_column(), rcmail_sort_order());
+if ($count = $RCMAIL->storage->count($mbox_name, $threading ? 'THREADS' : 'ALL', !empty($_REQUEST['_refresh']))) {
+ $a_headers = $RCMAIL->storage->list_messages($mbox_name, NULL, rcmail_sort_column(), rcmail_sort_order());
+}
// update search set (possible change of threading mode)
if (!empty($_REQUEST['_search']) && isset($_SESSION['search'])
&& $_SESSION['search_request'] == $_REQUEST['_search']
) {
- $_SESSION['search'] = $RCMAIL->storage->get_search_set();
+ $_SESSION['search'] = $RCMAIL->storage->get_search_set();
}
// remove old search data
else if (empty($_REQUEST['_search']) && isset($_SESSION['search'])) {
- $RCMAIL->session->remove('search');
+ $RCMAIL->session->remove('search');
}
// empty result? we'll skip UNSEEN counting in rcmail_send_unread_count()
@@ -93,44 +98,47 @@ rcmail_send_unread_count($mbox_name, !empty($_REQUEST['_refresh']), $unseen);
// update message count display
$pages = ceil($count/$RCMAIL->storage->get_pagesize());
-$exists = $RCMAIL->storage->count($mbox_name, 'EXISTS');
+$page = $count ? $RCMAIL->storage->get_page() : 1;
+$exists = $RCMAIL->storage->count($mbox_name, 'EXISTS', true);
$OUTPUT->set_env('messagecount', $count);
$OUTPUT->set_env('pagecount', $pages);
$OUTPUT->set_env('threading', $threading);
-$OUTPUT->set_env('current_page', $count ? $RCMAIL->storage->get_page() : 1);
+$OUTPUT->set_env('current_page', $page);
$OUTPUT->set_env('exists', $exists);
$OUTPUT->command('set_rowcount', rcmail_get_messagecount_text($count), $mbox_name);
// remove old message rows if commanded by the client
if (!empty($_REQUEST['_clear'])) {
- $OUTPUT->command('clear_message_list');
+ $OUTPUT->command('clear_message_list');
}
// add message rows
rcmail_js_message_list($a_headers, false, $cols);
if (isset($a_headers) && count($a_headers)) {
- if ($search_request) {
- $OUTPUT->show_message('searchsuccessful', 'confirmation', array('nr' => $count));
- }
-
- // remember last HIGHESTMODSEQ value (if supported)
- // we need it for flag updates in check-recent
- $data = $RCMAIL->storage->folder_data($mbox_name);
- if (!empty($data['HIGHESTMODSEQ'])) {
- $_SESSION['list_mod_seq'] = $data['HIGHESTMODSEQ'];
- }
+ if ($search_request) {
+ $OUTPUT->show_message('searchsuccessful', 'confirmation', array('nr' => $count));
+ }
+
+ // remember last HIGHESTMODSEQ value (if supported)
+ // we need it for flag updates in check-recent
+ $data = $RCMAIL->storage->folder_data($mbox_name);
+ if (!empty($data['HIGHESTMODSEQ'])) {
+ $_SESSION['list_mod_seq'] = $data['HIGHESTMODSEQ'];
+ }
}
else {
- // handle IMAP errors (e.g. #1486905)
- if ($err_code = $RCMAIL->storage->get_error_code()) {
- $RCMAIL->display_server_error();
- }
- else if ($search_request)
- $OUTPUT->show_message('searchnomatch', 'notice');
- else
- $OUTPUT->show_message('nomessagesfound', 'notice');
+ // handle IMAP errors (e.g. #1486905)
+ if ($err_code = $RCMAIL->storage->get_error_code()) {
+ $RCMAIL->display_server_error();
+ }
+ else if ($search_request) {
+ $OUTPUT->show_message('searchnomatch', 'notice');
+ }
+ else {
+ $OUTPUT->show_message('nomessagesfound', 'notice');
+ }
}
// set trash folder state
@@ -138,5 +146,9 @@ if ($mbox_name === $RCMAIL->config->get('trash_mbox')) {
$OUTPUT->command('set_trash_count', $exists);
}
+if ($page == 1) {
+ $OUTPUT->command('set_quota', $RCMAIL->quota_content(null, $multifolder ? 'INBOX' : $mbox_name));
+}
+
// send response
$OUTPUT->send();
diff --git a/program/steps/mail/list_contacts.inc b/program/steps/mail/list_contacts.inc
index 0ee81135b..4f17beffd 100644
--- a/program/steps/mail/list_contacts.inc
+++ b/program/steps/mail/list_contacts.inc
@@ -110,7 +110,7 @@ else if (!empty($result) && $result->count > 0) {
$keyname = $row['_type'] == 'group' ? 'contactgroup' : 'contact';
$OUTPUT->command('add_contact_row', $row_id, array(
- $keyname => html::span(array('title' => $email), rcube::Q($name ? $name : $email) .
+ $keyname => html::a(array('title' => $email), rcube::Q($name ? $name : $email) .
($name && count($emails) > 1 ? '&nbsp;' . html::span('email', rcube::Q($email)) : '')
)), $classname);
}
diff --git a/program/steps/mail/move_del.inc b/program/steps/mail/move_del.inc
index c29985875..4c57d6fa9 100644
--- a/program/steps/mail/move_del.inc
+++ b/program/steps/mail/move_del.inc
@@ -27,6 +27,7 @@ if (!$OUTPUT->ajax_call)
$threading = (bool) $RCMAIL->storage->get_threading();
$old_count = $RCMAIL->storage->count(NULL, $threading ? 'THREADS' : 'ALL');
$old_pages = ceil($old_count / $RCMAIL->storage->get_pagesize());
+$sources = array();
$trash = $RCMAIL->config->get('trash_mbox');
@@ -36,12 +37,13 @@ if ($RCMAIL->action == 'move' && !empty($_POST['_uid']) && strlen($_POST['_targe
$trash = $RCMAIL->config->get('trash_mbox');
$success = true;
- foreach (rcmail::get_uids() as $mbox => $uids) {
+ foreach (rcmail::get_uids(null, null, $multifolder) as $mbox => $uids) {
if ($mbox === $target) {
$count += count($uids);
}
else if ($RCMAIL->storage->move_message($uids, $target, $mbox)) {
$count += count($uids);
+ $sources[] = $mbox;
}
else {
$success = false;
@@ -69,10 +71,11 @@ if ($RCMAIL->action == 'move' && !empty($_POST['_uid']) && strlen($_POST['_targe
}
}
// delete messages
-else if ($RCMAIL->action=='delete' && !empty($_POST['_uid'])) {
- foreach (rcmail::get_uids() as $mbox => $uids) {
- $del += (int)$RCMAIL->storage->delete_message($uids, $mbox);
- $count += count($uids);
+else if ($RCMAIL->action == 'delete' && !empty($_POST['_uid'])) {
+ foreach (rcmail::get_uids(null, null, $multifolder) as $mbox => $uids) {
+ $del += (int)$RCMAIL->storage->delete_message($uids, $mbox);
+ $count += count($uids);
+ $sources[] = $mbox;
}
if (!$del) {
@@ -146,7 +149,7 @@ else {
rcmail_send_unread_count($target, true);
}
- $OUTPUT->command('set_quota', $RCMAIL->quota_content());
+ $OUTPUT->command('set_quota', $RCMAIL->quota_content(null, $multifolder ? $sources[0] : 'INBOX'));
$OUTPUT->command('set_rowcount', rcmail_get_messagecount_text($msg_count), $mbox);
if ($threading) {
@@ -166,7 +169,7 @@ else {
$OUTPUT->command('set_trash_count', $exists);
}
else if ($target !== null && $target === $trash) {
- $OUTPUT->command('set_trash_count', $RCMAIL->storage->count($trash, 'EXISTS'));
+ $OUTPUT->command('set_trash_count', $RCMAIL->storage->count($trash, 'EXISTS', true));
}
}
diff --git a/program/steps/mail/search.inc b/program/steps/mail/search.inc
index e610e9137..b50593480 100644
--- a/program/steps/mail/search.inc
+++ b/program/steps/mail/search.inc
@@ -127,8 +127,9 @@ if ($search_str) {
}
else if ($scope == 'sub') {
$mboxes = $RCMAIL->storage->list_folders_subscribed($mbox, '*', 'mail');
- if ($mbox != 'INBOX' && $mboxes[0] == 'INBOX')
+ if ($mbox != 'INBOX' && $mboxes[0] == 'INBOX') {
array_shift($mboxes);
+ }
}
$result = $RCMAIL->storage->search($mboxes, $search_str, $imap_charset, $sort_column);
@@ -144,7 +145,7 @@ if ($search_str) {
$_SESSION['last_text_search'] = $str;
}
$_SESSION['search_request'] = $search_request;
-$_SESSION['search_scope'] = $scope;
+$_SESSION['search_scope'] = $scope;
// Get the headers
@@ -162,9 +163,11 @@ if (!empty($result_h)) {
// remember last HIGHESTMODSEQ value (if supported)
// we need it for flag updates in check-recent
- $data = $RCMAIL->storage->folder_data($mbox_name);
- if (!empty($data['HIGHESTMODSEQ'])) {
- $_SESSION['list_mod_seq'] = $data['HIGHESTMODSEQ'];
+ if ($mbox !== null) {
+ $data = $RCMAIL->storage->folder_data($mbox);
+ if (!empty($data['HIGHESTMODSEQ'])) {
+ $_SESSION['list_mod_seq'] = $data['HIGHESTMODSEQ'];
+ }
}
}
// handle IMAP errors (e.g. #1486905)
@@ -179,17 +182,24 @@ else if ($result->incomplete) {
else {
$OUTPUT->show_message('searchnomatch', 'notice');
$OUTPUT->set_env('multifolder_listing', (bool)$result->multi);
- if ($result->multi && $scope == 'all')
+ if ($result->multi && $scope == 'all') {
$OUTPUT->command('select_folder', '');
+ }
}
+$OUTPUT->set_pagetitle($RCMAIL->gettext(array('name' => 'searchfor', 'vars' => array('q' => $str))));
+
// update message count display
$OUTPUT->set_env('search_request', $search_str ? $search_request : '');
$OUTPUT->set_env('search_filter', $_SESSION['search_filter']);
$OUTPUT->set_env('threading', $RCMAIL->storage->get_threading());
$OUTPUT->set_env('messagecount', $count);
$OUTPUT->set_env('pagecount', ceil($count/$RCMAIL->storage->get_pagesize()));
-$OUTPUT->set_env('exists', $RCMAIL->storage->count($mbox_name, 'EXISTS'));
+$OUTPUT->set_env('exists', $mbox === null ? 0 : $RCMAIL->storage->count($mbox, 'EXISTS'));
$OUTPUT->command('set_rowcount', rcmail_get_messagecount_text($count, 1), $mbox);
-$OUTPUT->set_pagetitle($RCMAIL->gettext(array('name' => 'searchfor', 'vars' => array('q' => $str))));
+
+if (!$result->incomplete) {
+ $OUTPUT->command('set_quota', $RCMAIL->quota_content(null, $result->multi ? 'INBOX' : $mbox));
+}
+
$OUTPUT->send();
diff --git a/program/steps/mail/search_contacts.inc b/program/steps/mail/search_contacts.inc
index d56581695..ccef32dd2 100644
--- a/program/steps/mail/search_contacts.inc
+++ b/program/steps/mail/search_contacts.inc
@@ -87,7 +87,7 @@ if (!empty($result) && $result->count > 0) {
$row_id = $row['ID'].'-'.$i;
$jsresult[$row_id] = format_email_recipient($email, $name);
$OUTPUT->command('add_contact_row', $row_id, array(
- 'contact' => html::span(array('title' => $email), rcube::Q($name ? $name : $email) .
+ 'contact' => html::a(array('title' => $email), rcube::Q($name ? $name : $email) .
($name && count($emails) > 1 ? '&nbsp;' . html::span('email', rcube::Q($email)) : '')
)), 'person');
}
diff --git a/program/steps/mail/sendmail.inc b/program/steps/mail/sendmail.inc
index 04ba94f5e..bac751298 100644
--- a/program/steps/mail/sendmail.inc
+++ b/program/steps/mail/sendmail.inc
@@ -77,7 +77,7 @@ $mailto = rcmail_email_input_format(rcube_utils::get_input_value('_to', rcube_u
$mailcc = rcmail_email_input_format(rcube_utils::get_input_value('_cc', rcube_utils::INPUT_POST, TRUE, $message_charset), true);
$mailbcc = rcmail_email_input_format(rcube_utils::get_input_value('_bcc', rcube_utils::INPUT_POST, TRUE, $message_charset), true);
-if ($EMAIL_FORMAT_ERROR) {
+if ($EMAIL_FORMAT_ERROR && !$savedraft) {
$OUTPUT->show_message('emailformaterror', 'error', array('email' => $EMAIL_FORMAT_ERROR));
$OUTPUT->send('iframe');
}
@@ -273,20 +273,31 @@ if ($isHtml) {
}
// append doctype and html/body wrappers
- $message_body = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">'
- . "\r\n<html><body" . (!empty($bstyle) ? " style='" . implode($bstyle, '; ') . "'" : '') . ">\r\n"
- . $message_body;
+ $bstyle = !empty($bstyle) ? (" style='" . implode($bstyle, '; ') . "'") : '';
+ $message_body = '<html><head>'
+ . '<meta http-equiv="Content-Type" content="text/html; charset=' . $message_charset . '" /></head>'
+ . "<body" . $bstyle . ">\r\n" . $message_body;
}
if (!$savedraft) {
if ($isHtml) {
- // remove signature's div ID
- $message_body = preg_replace('/\s*id="_rc_sig"/', '', $message_body);
-
- // add inline css for blockquotes
- $bstyle = 'padding-left:5px; border-left:#1010ff 2px solid; margin-left:5px';
- $message_body = preg_replace('/<blockquote>/',
- '<blockquote type="cite" style="'.$bstyle.'">', $message_body);
+ $b_style = 'padding: 0 0.4em; border-left: #1010ff 2px solid; margin: 0';
+ $pre_style = 'margin: 0; padding: 0; font-family: monospace';
+
+ $message_body = preg_replace(
+ array(
+ // remove signature's div ID
+ '/\s*id="_rc_sig"/',
+ // add inline css for blockquotes and container
+ '/<blockquote>/',
+ '/<div class="pre">/'
+ ),
+ array(
+ '',
+ '<blockquote type="cite" style="'.$b_style.'">',
+ '<div class="pre" style="'.$pre_style.'">'
+ ),
+ $message_body);
}
// Check spelling before send
@@ -300,10 +311,16 @@ if (!$savedraft) {
$COMPOSE['spell_checked'] = true;
if (!$spell_result) {
- $result = $isHtml ? $spellchecker->get_words() : $spellchecker->get_xml();
+ if ($isHtml) {
+ $result['words'] = $spellchecker->get();
+ $result['dictionary'] = (bool) $RCMAIL->config->get('spellcheck_dictionary');
+ }
+ else {
+ $result = $spellchecker->get_xml();
+ }
$OUTPUT->show_message('mispellingsfound', 'error');
- $OUTPUT->command('spellcheck_resume', $isHtml, $result);
+ $OUTPUT->command('spellcheck_resume', $result);
$OUTPUT->send('iframe');
}
}
@@ -411,7 +428,7 @@ if (is_array($COMPOSE['attachments'])) {
$attachment = $RCMAIL->plugins->exec_hook('attachment_get', $attachment);
if ($isHtml) {
- $dispurl = '/\ssrc\s*=\s*[\'"]*\S+display-attachment\S+file=rcmfile'
+ $dispurl = '/\s(poster|src)\s*=\s*[\'"]*\S+display-attachment\S+file=rcmfile'
. preg_quote($attachment['id']) . '[\s\'"]*/';
$message_body = $MAIL_MIME->getHTMLBody();
$is_inline = preg_match($dispurl, $message_body);
@@ -432,7 +449,7 @@ if (is_array($COMPOSE['attachments'])) {
$cid .= '@localhost';
}
- $message_body = preg_replace($dispurl, ' src="cid:' . $cid . '" ', $message_body);
+ $message_body = preg_replace($dispurl, ' \\1="cid:' . $cid . '" ', $message_body);
$MAIL_MIME->setHTMLBody($message_body);
@@ -467,15 +484,11 @@ if (preg_match('/[^\x00-\x7F]/', $MAIL_MIME->getTXTBody())) {
$transfer_encoding = $RCMAIL->config->get('force_7bit') ? 'quoted-printable' : '8bit';
}
else {
- $text_charset = '';
+ $text_charset = 'US-ASCII';
$transfer_encoding = '7bit';
}
if ($flowed) {
- if (!$text_charset) {
- $text_charset = 'US-ASCII';
- }
-
$text_charset .= ";\r\n format=flowed";
}
@@ -728,11 +741,11 @@ function rcmail_get_identity($id)
/**
* go from this:
- * <img src="http[s]://.../tiny_mce/plugins/emotions/images/smiley-cool.gif" border="0" alt="Cool" title="Cool" />
+ * <img src="http[s]://.../tinymce/plugins/emoticons/img/smiley-cool.gif" border="0" alt="Cool" title="Cool" />
*
* to this:
*
- * <img src="/path/on/server/.../tiny_mce/plugins/emotions/images/smiley-cool.gif" border="0" alt="Cool" title="Cool" />
+ * <img src="/path/on/server/.../tinymce/plugins/emoticons/img/smiley-cool.gif" border="0" alt="Cool" title="Cool" />
*/
function rcmail_fix_emoticon_paths($mime_message)
{
@@ -743,7 +756,7 @@ function rcmail_fix_emoticon_paths($mime_message)
// remove any null-byte characters before parsing
$body = preg_replace('/\x00/', '', $body);
- $searchstr = 'program/js/tiny_mce/plugins/emotions/img/';
+ $searchstr = 'program/js/tinymce/plugins/emoticons/img/';
$offset = 0;
// keep track of added images, so they're only added once
@@ -912,7 +925,8 @@ function rcmail_generic_message_footer($isHtml)
if (!preg_match('/\.(php|ini|conf)$/', $file) && strpos($file, '/etc/') === false) {
$footer = file_get_contents($file);
if ($isHtml && !$html_footer) {
- $footer = '<pre>' . $footer . '</pre>';
+ $t2h = new rcube_text2html($footer, false);
+ $footer = $t2h->get_html();
}
return $footer;
}
diff --git a/program/steps/mail/show.inc b/program/steps/mail/show.inc
index beb2cc6e9..d4121fdd8 100644
--- a/program/steps/mail/show.inc
+++ b/program/steps/mail/show.inc
@@ -80,7 +80,7 @@ if ($uid) {
// set configuration
$RCMAIL->set_env_config(array('delete_junk', 'flag_for_deletion', 'read_when_deleted',
- 'skip_deleted', 'display_next', 'compose_extwin', 'forward_attachment'));
+ 'skip_deleted', 'display_next', 'forward_attachment'));
// set special folders
foreach (array('drafts', 'trash', 'junk') as $mbox) {
@@ -148,11 +148,14 @@ if ($uid) {
if (empty($MESSAGE->headers->flags['SEEN'])
&& ($RCMAIL->action == 'show' || ($RCMAIL->action == 'preview' && intval($RCMAIL->config->get('preview_pane_mark_read')) == 0))
) {
+ $RCMAIL->output->command('set_unread_message', $MESSAGE->uid, $mbox_name);
$RCMAIL->plugins->exec_hook('message_read', array(
'uid' => $MESSAGE->uid,
'mailbox' => $mbox_name,
'message' => $MESSAGE,
));
+
+ $set_seen_flag = true;
}
}
@@ -174,9 +177,7 @@ else
// mark message as read
-if ($MESSAGE && $MESSAGE->headers && empty($MESSAGE->headers->flags['SEEN']) &&
- ($RCMAIL->action == 'show' || ($RCMAIL->action == 'preview' && intval($RCMAIL->config->get('preview_pane_mark_read')) == 0))
-) {
+if (!empty($set_seen_flag)) {
if ($RCMAIL->storage->set_flag($MESSAGE->uid, 'SEEN')) {
if ($count = rcmail_get_unseen_count($mbox_name)) {
rcmail_set_unseen_count($mbox_name, $count - 1);
@@ -198,6 +199,7 @@ function rcmail_message_attachments($attrib)
if (sizeof($MESSAGE->attachments)) {
foreach ($MESSAGE->attachments as $attach_prop) {
$filename = rcmail_attachment_name($attach_prop, true);
+ $size = '';
if ($PRINT_MODE) {
$size = $RCMAIL->message_part_size($attach_prop);
@@ -212,6 +214,10 @@ function rcmail_message_attachments($attrib)
$title = '';
}
+ if ($attach_prop->size) {
+ $size = ' ' . html::span('attachment-size', '(' . $RCMAIL->show_bytes($attach_prop->size) . ')');
+ }
+
$mimetype = rcmail_fix_mimetype($attach_prop->mimetype);
$class = rcube_utils::file2class($mimetype, $filename);
$id = 'attach' . $attach_prop->mime_id;
@@ -221,7 +227,7 @@ function rcmail_message_attachments($attrib)
rcmail_output::JS_OBJECT_NAME, $attach_prop->mime_id),
'onmouseover' => $title ? '' : 'rcube_webmail.long_subject_title_ex(this, 0)',
'title' => rcube::Q($title),
- ), rcube::Q($filename));
+ ), rcube::Q($filename) . $size);
$ol .= html::tag('li', array('class' => $class, 'id' => $id), $link);
@@ -343,12 +349,14 @@ function rcmail_message_contactphoto($attrib)
'_task' => 'addressbook',
'_action' => 'photo',
'_email' => $MESSAGE->sender['mailto'],
- '_alt' => $placeholder
+ '_alt' => $placeholder,
));
+
+ $attrib['onerror'] = "this.src = '" . ($placeholder ? $placeholder : 'program/resources/blank.gif') . "'";
}
else {
$photo_img = $placeholder ? $placeholder : 'program/resources/blank.gif';
}
- return html::img(array('src' => $photo_img) + $attrib);
+ return html::img(array('src' => $photo_img, 'alt' => $RCMAIL->gettext('contactphoto')) + $attrib);
}
diff --git a/program/steps/settings/about.inc b/program/steps/settings/about.inc
index 026bfc1a2..73d0b0f0d 100644
--- a/program/steps/settings/about.inc
+++ b/program/steps/settings/about.inc
@@ -50,7 +50,7 @@ function rcmail_plugins_list($attrib)
$attrib['id'] = 'rcmpluginlist';
}
- $plugins = array_filter((array) $RCMAIL->config->get('plugins'));
+ $plugins = array_filter($RCMAIL->plugins->active_plugins);
$plugin_info = array();
foreach ($plugins as $name) {
@@ -61,8 +61,8 @@ function rcmail_plugins_list($attrib)
// load info from required plugins, too
foreach ($plugin_info as $name => $info) {
- if (is_array($info['required']) && !empty($info['required'])) {
- foreach ($info['required'] as $req_name) {
+ if (is_array($info['require']) && !empty($info['require'])) {
+ foreach ($info['require'] as $req_name) {
if (!isset($plugin_info[$req_name]) && ($req_info = $RCMAIL->plugins->get_info($req_name))) {
$plugin_info[$req_name] = $req_info;
}
diff --git a/program/steps/settings/delete_identity.inc b/program/steps/settings/delete_identity.inc
deleted file mode 100644
index f77620438..000000000
--- a/program/steps/settings/delete_identity.inc
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-
-/*
- +-----------------------------------------------------------------------+
- | program/steps/settings/delete_identity.inc |
- | |
- | This file is part of the Roundcube Webmail client |
- | Copyright (C) 2005-2013, The Roundcube Dev Team |
- | |
- | Licensed under the GNU General Public License version 3 or |
- | any later version with exceptions for skins & plugins. |
- | See the README file for a full license statement. |
- | |
- | PURPOSE: |
- | Delete the submitted identities (IIDs) from the database |
- | |
- +-----------------------------------------------------------------------+
- | Author: Thomas Bruederli <roundcube@gmail.com> |
- +-----------------------------------------------------------------------+
-*/
-
-$iid = rcube_utils::get_input_value('_iid', rcube_utils::INPUT_GPC);
-
-// check request token
-if (!$OUTPUT->ajax_call && !$RCMAIL->check_request(rcube_utils::INPUT_GPC)) {
- $OUTPUT->show_message('invalidrequest', 'error');
- $RCMAIL->overwrite_action('identities');
- return;
-}
-
-if ($iid && preg_match('/^[0-9]+(,[0-9]+)*$/', $iid)) {
- $plugin = $RCMAIL->plugins->exec_hook('identity_delete', array('id' => $iid));
-
- $deleted = !$plugin['abort'] ? $RCMAIL->user->delete_identity($iid) : $plugin['result'];
-
- if ($deleted > 0 && $deleted !== false) {
- $OUTPUT->show_message('deletedsuccessfully', 'confirmation', null, false);
- }
- else {
- $msg = $plugin['message'] ? $plugin['message'] : ($deleted < 0 ? 'nodeletelastidentity' : 'errorsaving');
- $OUTPUT->show_message($msg, 'error', null, false);
- }
-
- // send response
- if ($OUTPUT->ajax_call) {
- $OUTPUT->send();
- }
-}
-
-if ($OUTPUT->ajax_call) {
- exit;
-}
-
-// go to identities page
-$RCMAIL->overwrite_action('identities');
diff --git a/program/steps/settings/edit_folder.inc b/program/steps/settings/edit_folder.inc
index 6b7bd08d2..202578676 100644
--- a/program/steps/settings/edit_folder.inc
+++ b/program/steps/settings/edit_folder.inc
@@ -38,22 +38,20 @@ function rcmail_folder_form($attrib)
$storage = $RCMAIL->get_storage();
// edited folder name (empty in create-folder mode)
- $mbox = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_GPC, true);
- $mbox_imap = rcube_charset::convert($mbox, RCUBE_CHARSET, 'UTF7-IMAP');
+ $mbox = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_GPC, true);
// predefined path for new folder
- $parent = rcube_utils::get_input_value('_path', rcube_utils::INPUT_GPC, true);
- $parent_imap = rcube_charset::convert($parent, RCUBE_CHARSET, 'UTF7-IMAP');
+ $parent = rcube_utils::get_input_value('_path', rcube_utils::INPUT_GPC, true);
$threading_supported = $storage->get_capability('THREAD');
$delimiter = $storage->get_hierarchy_delimiter();
// Get mailbox parameters
if (strlen($mbox)) {
- $options = rcmail_folder_options($mbox_imap);
+ $options = rcmail_folder_options($mbox);
$namespace = $storage->get_namespace();
- $path = explode($delimiter, $mbox_imap);
+ $path = explode($delimiter, $mbox);
$folder = array_pop($path);
$path = implode($delimiter, $path);
$folder = rcube_charset::convert($folder, 'UTF7-IMAP');
@@ -62,7 +60,7 @@ function rcmail_folder_form($attrib)
}
else {
$options = array();
- $path = $parent_imap;
+ $path = $parent;
// allow creating subfolders of INBOX folder
if ($path == 'INBOX') {
@@ -88,7 +86,7 @@ function rcmail_folder_form($attrib)
// Location (name)
if ($options['protected']) {
- $foldername = str_replace($delimiter, ' &raquo; ', rcube::Q($RCMAIL->localize_folderpath($mbox_imap)));
+ $foldername = str_replace($delimiter, ' &raquo; ', rcube::Q($RCMAIL->localize_folderpath($mbox)));
}
else if ($options['norename']) {
$foldername = rcube::Q($folder);
@@ -101,7 +99,7 @@ function rcmail_folder_form($attrib)
$foldername = $foldername->show($folder);
if ($options['special']) {
- $foldername .= '&nbsp;(' . rcube::Q($RCMAIL->localize_foldername($mbox_imap)) .')';
+ $foldername .= '&nbsp;(' . rcube::Q($RCMAIL->localize_foldername($mbox)) .')';
}
}
@@ -122,7 +120,7 @@ function rcmail_folder_form($attrib)
}
else {
$selected = isset($_POST['_parent']) ? $_POST['_parent'] : $path_id;
- $exceptions = array($mbox_imap);
+ $exceptions = array($mbox);
// Exclude 'prefix' namespace from parent folders list (#1488349)
// If INBOX. namespace exists, folders created as INBOX subfolders
@@ -132,9 +130,9 @@ function rcmail_folder_form($attrib)
}
$select = $RCMAIL->folder_selector(array(
+ 'id' => '_parent',
'name' => '_parent',
'noselection' => '---',
- 'realnames' => false,
'maxlength' => 150,
'unsubscribed' => true,
'skip_noinferiors' => true,
@@ -154,17 +152,19 @@ function rcmail_folder_form($attrib)
);
// Settings: threading
- if ($threading_supported && ($mbox_imap == 'INBOX' || (!$options['noselect'] && !$options['is_root']))) {
- $select = new html_select(array('name' => '_viewmode', 'id' => '_listmode'));
+ if ($threading_supported && ($mbox == 'INBOX' || (!$options['noselect'] && !$options['is_root']))) {
+ $select = new html_select(array('name' => '_viewmode', 'id' => '_viewmode'));
$select->add($RCMAIL->gettext('list'), 0);
$select->add($RCMAIL->gettext('threads'), 1);
if (isset($_POST['_viewmode'])) {
$value = (int) $_POST['_viewmode'];
}
- else if (strlen($mbox_imap)) {
- $a_threaded = $RCMAIL->config->get('message_threading', array());
- $value = (int) isset($a_threaded[$mbox_imap]);
+ else if (strlen($mbox)) {
+ $a_threaded = $RCMAIL->config->get('message_threading', array());
+ $default_mode = $RCMAIL->config->get('default_list_mode', 'list');
+
+ $value = (int) (isset($a_threaded[$mbox]) ? $a_threaded[$mbox] : $default_mode == 'threads');
}
$form['props']['fieldsets']['settings']['content']['viewmode'] = array(
@@ -211,14 +211,14 @@ function rcmail_folder_form($attrib)
'content' => array()
);
- if ((!$options['noselect'] && !$options['is_root']) || $mbox_imap == 'INBOX') {
- $msgcount = $storage->count($mbox_imap, 'ALL', true, false);
+ if ((!$options['noselect'] && !$options['is_root']) || $mbox == 'INBOX') {
+ $msgcount = $storage->count($mbox, 'ALL', true, false);
// Size
if ($msgcount) {
// create link with folder-size command
$onclick = sprintf("return %s.command('folder-size', '%s', this)",
- rcmail_output::JS_OBJECT_NAME, rcube::JQ($mbox_imap));
+ rcmail_output::JS_OBJECT_NAME, rcube::JQ($mbox));
$size = html::a(array('href' => '#', 'onclick' => $onclick,
'id' => 'folder-size'), $RCMAIL->gettext('getfoldersize'));
}
@@ -248,7 +248,7 @@ function rcmail_folder_form($attrib)
// Allow plugins to modify folder form content
$plugin = $RCMAIL->plugins->exec_hook('folder_form',
array('form' => $form, 'options' => $options,
- 'name' => $mbox_imap, 'parent_name' => $parent_imap));
+ 'name' => $mbox, 'parent_name' => $parent));
$form = $plugin['form'];
@@ -261,7 +261,7 @@ function rcmail_folder_form($attrib)
$out = "$form_start\n";
// Create form output
- foreach ($form as $tab) {
+ foreach ($form as $idx => $tab) {
if (!empty($tab['fieldsets']) && is_array($tab['fieldsets'])) {
$content = '';
foreach ($tab['fieldsets'] as $fieldset) {
@@ -276,7 +276,7 @@ function rcmail_folder_form($attrib)
$content = rcmail_get_form_part($tab, $attrib);
}
- if ($content && sizeof($form) > 1) {
+ if ($idx != 'props') {
$out .= html::tag('fieldset', null, html::tag('legend', null, rcube::Q($tab['name'])) . $content) ."\n";
}
else {
@@ -287,6 +287,11 @@ function rcmail_folder_form($attrib)
$out .= "\n$form_end";
$RCMAIL->output->set_env('messagecount', (int) $msgcount);
+ $RCMAIL->output->set_env('folder', $mbox);
+
+ if ($mbox !== null && empty($_POST)) {
+ $RCMAIL->output->command('parent.set_quota', $RCMAIL->quota_content(null, $mbox));
+ }
return $out;
}
diff --git a/program/steps/settings/edit_identity.inc b/program/steps/settings/edit_identity.inc
index 3f7b6a58a..cd7ba5fa6 100644
--- a/program/steps/settings/edit_identity.inc
+++ b/program/steps/settings/edit_identity.inc
@@ -52,9 +52,9 @@ else {
$OUTPUT->include_script('list.js');
$OUTPUT->add_handler('identityform', 'rcube_identity_form');
$OUTPUT->set_env('identities_level', IDENTITIES_LEVEL);
-$OUTPUT->add_label('deleteidentityconfirm');
+$OUTPUT->add_label('deleteidentityconfirm', 'uploading');
-$OUTPUT->set_pagetitle($RCMAIL->gettext(($RCMAIL->action == 'add-identity' ? 'newidentity' : 'edititem')));
+$OUTPUT->set_pagetitle($RCMAIL->gettext(($RCMAIL->action == 'add-identity' ? 'addidentity' : 'editidentity')));
if ($RCMAIL->action == 'add-identity' && $OUTPUT->template_exists('identityadd')) {
$OUTPUT->send('identityadd');
@@ -96,7 +96,7 @@ function rcube_identity_form($attrib)
'spellcheck' => true),
'html_signature' => array('type' => 'checkbox',
'label' => $RCMAIL->gettext('htmlsignature'),
- 'onclick' => 'return rcmail_toggle_editor(this, \'rcmfd_signature\');'),
+ 'onclick' => 'return rcmail.command(\'toggle-editor\', {id: \'rcmfd_signature\', html: this.checked}, \'\', event)'),
))
);
@@ -176,5 +176,15 @@ function rcube_identity_form($attrib)
$out .= $form_end;
+ // add image upload form
+ $max_filesize = $RCMAIL->upload_init($RCMAIL->config->get('identity_image_size', 64) * 1024);
+ $upload_form_id = 'identityImageUpload';
+
+ $out .= '<form id="' . $upload_form_id . '" style="display: none">'
+ . html::div('hint', $RCMAIL->gettext(array('name' => 'maxuploadsize', 'vars' => array('size' => $max_filesize))))
+ . '</form>';
+
+ $RCMAIL->output->add_gui_object('uploadform', $upload_form_id);
+
return $out;
}
diff --git a/program/steps/settings/edit_response.inc b/program/steps/settings/edit_response.inc
index 6d3c3dc41..10dec1096 100644
--- a/program/steps/settings/edit_response.inc
+++ b/program/steps/settings/edit_response.inc
@@ -72,7 +72,7 @@ if ($RCMAIL->action == 'save-response' && isset($_POST['_name']) && !$RESPONSE_R
$OUTPUT->set_env('readonly', !empty($RESPONSE_RECORD['static']));
$OUTPUT->add_handler('responseform', 'rcube_response_form');
-$OUTPUT->set_pagetitle($RCMAIL->gettext($RCMAIL->action == 'add-response' ? 'savenewresponse' : 'editresponse'));
+$OUTPUT->set_pagetitle($RCMAIL->gettext($RCMAIL->action == 'add-response' ? 'addresponse' : 'editresponse'));
$OUTPUT->send('responseedit');
diff --git a/program/steps/settings/folders.inc b/program/steps/settings/folders.inc
index 1bcfb4cfc..14e41d607 100644
--- a/program/steps/settings/folders.inc
+++ b/program/steps/settings/folders.inc
@@ -20,14 +20,12 @@
+-----------------------------------------------------------------------+
*/
-// WARNING: folder names in UI are encoded with RCUBE_CHARSET
-
// init IMAP connection
$STORAGE = $RCMAIL->get_storage();
// subscribe mailbox
if ($RCMAIL->action == 'subscribe') {
- $mbox = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_POST, true, 'UTF7-IMAP');
+ $mbox = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_POST, true);
if (strlen($mbox)) {
$result = $STORAGE->subscribe(array($mbox));
@@ -58,7 +56,8 @@ if ($RCMAIL->action == 'subscribe') {
}
// unsubscribe mailbox
else if ($RCMAIL->action == 'unsubscribe') {
- $mbox = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_POST, true, 'UTF7-IMAP');
+ $mbox = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_POST, true);
+
if (strlen($mbox)) {
$result = $STORAGE->unsubscribe(array($mbox));
if ($result)
@@ -69,8 +68,7 @@ else if ($RCMAIL->action == 'unsubscribe') {
}
// delete an existing mailbox
else if ($RCMAIL->action == 'delete-folder') {
- $mbox_utf8 = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_POST, true);
- $mbox = rcube_charset::convert($mbox_utf8, RCUBE_CHARSET, 'UTF7-IMAP');
+ $mbox = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_POST, true);
if (strlen($mbox)) {
$plugin = $RCMAIL->plugins->exec_hook('folder_delete', array('name' => $mbox));
@@ -90,7 +88,7 @@ else if ($RCMAIL->action == 'delete-folder') {
if ($OUTPUT->ajax_call && $deleted) {
// Remove folder and subfolders rows
- $OUTPUT->command('remove_folder_row', $mbox_utf8, true);
+ $OUTPUT->command('remove_folder_row', $mbox);
$OUTPUT->show_message('folderdeleted', 'confirmation');
// Clear content frame
$OUTPUT->command('subscription_select');
@@ -102,13 +100,10 @@ else if ($RCMAIL->action == 'delete-folder') {
}
// rename an existing mailbox
else if ($RCMAIL->action == 'rename-folder') {
- $name_utf8 = trim(rcube_utils::get_input_value('_folder_newname', rcube_utils::INPUT_POST, true));
- $oldname_utf8 = rcube_utils::get_input_value('_folder_oldname', rcube_utils::INPUT_POST, true);
-
- if (strlen($name_utf8) && strlen($oldname_utf8)) {
- $name = rcube_charset::convert($name_utf8, RCUBE_CHARSET, 'UTF7-IMAP');
- $oldname = rcube_charset::convert($oldname_utf8, RCUBE_CHARSET, 'UTF7-IMAP');
+ $name = trim(rcube_utils::get_input_value('_folder_newname', rcube_utils::INPUT_POST, true));
+ $oldname = rcube_utils::get_input_value('_folder_oldname', rcube_utils::INPUT_POST, true);
+ if (strlen($name) && strlen($oldname)) {
$rename = rcmail_rename_folder($oldname, $name);
}
@@ -121,8 +116,7 @@ else if ($RCMAIL->action == 'rename-folder') {
}
// clear mailbox
else if ($RCMAIL->action == 'purge') {
- $mbox_utf8 = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_POST, true);
- $mbox = rcube_charset::convert($mbox_utf8, RCUBE_CHARSET, 'UTF7-IMAP');
+ $mbox = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_POST, true);
$delimiter = $STORAGE->get_hierarchy_delimiter();
$trash_mbox = $RCMAIL->config->get('trash_mbox');
$trash_regexp = '/^' . preg_quote($trash . $delimiter, '/') . '/';
@@ -134,7 +128,7 @@ else if ($RCMAIL->action == 'purge') {
$success = $STORAGE->delete_message('*', $mbox);
$delete = true;
}
- // copy to Trash
+ // move to Trash
else {
$success = $STORAGE->move_message('1:*', $trash_mbox, $mbox);
$delete = false;
@@ -144,13 +138,13 @@ else if ($RCMAIL->action == 'purge') {
$OUTPUT->set_env('messagecount', 0);
if ($delete) {
$OUTPUT->show_message('folderpurged', 'confirmation');
- $OUTPUT->command('set_quota', $RCMAIL->quota_content());
+ $OUTPUT->command('set_quota', $RCMAIL->quota_content(null, $mbox));
}
else {
$OUTPUT->show_message('messagemoved', 'confirmation');
}
$_SESSION['unseen_count'][$mbox] = 0;
- $OUTPUT->command('show_folder', $mbox_utf8, null, true);
+ $OUTPUT->command('show_folder', $mbox, null, true);
}
else {
$RCMAIL->display_server_error('errorsaving');
@@ -177,11 +171,9 @@ if ($OUTPUT->ajax_call) {
}
$OUTPUT->set_pagetitle($RCMAIL->gettext('folders'));
-$OUTPUT->include_script('list.js');
$OUTPUT->set_env('prefix_ns', $STORAGE->get_namespace('prefix'));
-if ($STORAGE->get_capability('QUOTA')) {
- $OUTPUT->set_env('quota', true);
-}
+$OUTPUT->set_env('quota', (bool) $STORAGE->get_capability('QUOTA'));
+$OUTPUT->include_script('treelist.js');
// add some labels to client
$OUTPUT->add_label('deletefolderconfirm', 'purgefolderconfirm', 'folderdeleting',
@@ -189,8 +181,9 @@ $OUTPUT->add_label('deletefolderconfirm', 'purgefolderconfirm', 'folderdeleting'
// register UI objects
$OUTPUT->add_handlers(array(
- 'foldersubscription' => 'rcube_subscription_form',
+ 'foldersubscription' => 'rcmail_subscription_form',
'folderframe' => 'rcmail_folder_frame',
+ 'folderfilter' => 'rcmail_folder_filter',
'quotadisplay' => array($RCMAIL, 'quota_display'),
));
@@ -198,22 +191,15 @@ $OUTPUT->send('folders');
// build table with all folders listed by server
-function rcube_subscription_form($attrib)
+function rcmail_subscription_form($attrib)
{
global $RCMAIL, $OUTPUT;
list($form_start, $form_end) = get_form_tags($attrib, 'folders');
unset($attrib['form']);
- if (!$attrib['id'])
+ if (!$attrib['id']) {
$attrib['id'] = 'rcmSubscriptionlist';
-
- $table = new html_table();
-
- if ($attrib['noheader'] !== true && $attrib['noheader'] != "true") {
- // add table header
- $table->add_header('name', $RCMAIL->gettext('foldername'));
- $table->add_header('subscribed', '');
}
$STORAGE = $RCMAIL->get_storage();
@@ -227,7 +213,6 @@ function rcube_subscription_form($attrib)
$namespace = $STORAGE->get_namespace();
$special_folders = array_flip(array_merge(array('inbox' => 'INBOX'), $STORAGE->get_special_folders()));
$protect_default = $RCMAIL->config->get('protect_default_folders');
- $a_js_folders = array();
$seen = array();
$list_folders = array();
@@ -272,19 +257,16 @@ function rcube_subscription_form($attrib)
unset($seen);
- // add drop-target representing 'root'
- $table->add_row(array('id' => 'mailboxroot', 'class' => 'virtual root'));
- $table->add('name', '&nbsp;');
- $table->add(null, '&nbsp;');
-
- $a_js_folders['mailboxroot'] = array('', '', true);
-
$checkbox_subscribe = new html_checkbox(array(
'name' => '_subscribed[]',
'title' => $RCMAIL->gettext('changesubscription'),
'onclick' => rcmail_output::JS_OBJECT_NAME.".command(this.checked?'subscribe':'unsubscribe',this.value)",
));
+ $js_folders = array();
+ $folders = array();
+ $collapsed = $RCMAIL->config->get('collapsed_folders');
+
// create list of available folders
foreach ($list_folders as $i => $folder) {
$idx = $i + 1;
@@ -292,11 +274,10 @@ function rcube_subscription_form($attrib)
$subscribed = $sub_key !== false;
$protected = $protect_default && isset($special_folders[$folder['id']]);
$noselect = false;
- $classes = array($i%2 ? 'even' : 'odd');
+ $classes = array();
$folder_utf8 = rcube_charset::convert($folder['id'], 'UTF7-IMAP');
- $display_folder = str_repeat('&nbsp;&nbsp;&nbsp;&nbsp;', $folder['level'])
- . rcube::Q($protected ? $RCMAIL->localize_foldername($folder['id']) : $folder['name']);
+ $display_folder = rcube::Q($protected ? $RCMAIL->localize_foldername($folder['id']) : $folder['name']);
if ($folder['virtual']) {
$classes[] = 'virtual';
@@ -352,25 +333,85 @@ function rcube_subscription_form($attrib)
}
}
- $table->add_row(array('id' => 'rcmrow'.$idx, 'class' => join(' ', $classes),
- 'foldername' => $folder['id']));
+ $is_collapsed = strpos($collapsed, '&'.rawurlencode($folder['id']).'&') !== false;
+ $folder_id = rcube_utils::html_identifier($folder['id'], true);
- $table->add('name', $display_folder);
- $table->add('subscribed', $checkbox_subscribe->show(($subscribed ? $folder_utf8 : ''),
- array('value' => $folder_utf8, 'disabled' => $disabled ? 'disabled' : '')));
+ if ($folder_class = $RCMAIL->folder_classname($folder['id'])) {
+ $classes[] = $folder_class;
+ }
- $a_js_folders['rcmrow'.$idx] = array($folder_utf8,
- $display_folder, $protected || $folder['virtual']);
+ $folders[$folder['id']] = array(
+ 'idx' => $folder_id,
+ 'folder_imap' => $folder['id'],
+ 'folder' => $folder_utf8,
+ 'display' => $display_folder,
+ 'protected' => $protected || $folder['virtual'],
+ 'class' => join(' ', $classes),
+ 'subscribed' => $subscribed,
+ 'level' => $folder['level'],
+ 'collapsed' => $is_collapsed,
+ 'content' => html::a(array('href' => '#'), $display_folder)
+ . $checkbox_subscribe->show(($subscribed ? $folder['id'] : ''),
+ array('value' => $folder['id'], 'disabled' => $disabled ? 'disabled' : ''))
+ );
}
- $RCMAIL->plugins->exec_hook('folders_list', array('table' => $table));
+ $plugin = $RCMAIL->plugins->exec_hook('folders_list', array('list' => $folders));
+
+ // add drop-target representing 'root'
+ $root = array(
+ 'idx' => rcube_utils::html_identifier('*', true),
+ 'folder_imap' => '*',
+ 'folder' => '',
+ 'display' => '',
+ 'protected' => true,
+ 'class' => 'root',
+ 'content' => '<span>&nbsp;</span>',
+ );
+
+ $folders = array();
+ $plugin['list'] = array_values($plugin['list']);
+
+ array_unshift($plugin['list'], $root);
+
+ for ($i = 0, $length = count($plugin['list']); $i<$length; $i++) {
+ $folders[] = rcmail_folder_tree_element($plugin['list'], $i, $js_folders);
+ }
$OUTPUT->add_gui_object('subscriptionlist', $attrib['id']);
- $OUTPUT->set_env('subscriptionrows', $a_js_folders);
+ $OUTPUT->set_env('subscriptionrows', $js_folders);
$OUTPUT->set_env('defaultfolders', array_keys($special_folders));
+ $OUTPUT->set_env('collapsed_folders', $collapsed);
$OUTPUT->set_env('delimiter', $delimiter);
- return $form_start . $table->show($attrib) . $form_end;
+ return $form_start . html::tag('ul', $attrib, implode('', $folders), html::$common_attrib) . $form_end;
+}
+
+function rcmail_folder_tree_element($folders, &$key, &$js_folders)
+{
+ $data = $folders[$key];
+ $idx = 'rcmli' . $data['idx'];
+
+ $js_folders[$data['folder_imap']] = array($data['folder'], $data['display'], $data['protected']);
+ $content = $data['content'];
+ $attribs = array(
+ 'id' => $idx,
+ 'class' => trim($data['class'] . ' mailbox')
+ );
+
+ $children = array();
+ while ($folders[$key+1] && $folders[$key+1]['level'] > $data['level']) {
+ $key++;
+ $children[] = rcmail_folder_tree_element($folders, $key, $js_folders);
+ }
+
+ if (!empty($children)) {
+ $content .= html::div('treetoggle ' . ($data['collapsed'] ? 'collapsed' : 'expanded'), '&nbsp;')
+ . html::tag('ul', array('style' => ($data['collapsed'] ? "display:none" : null)),
+ implode("\n", $children));
+ }
+
+ return html::tag('li', $attribs, $content);
}
function rcmail_folder_frame($attrib)
@@ -384,6 +425,50 @@ function rcmail_folder_frame($attrib)
return $OUTPUT->frame($attrib, true);
}
+function rcmail_folder_filter($attrib)
+{
+ global $RCMAIL;
+
+ $storage = $RCMAIL->get_storage();
+ $namespace = $storage->get_namespace();
+
+ if (empty($namespace['personal']) && empty($namespace['shared']) && empty($namespace['other'])) {
+ return '';
+ }
+
+ if (!$attrib['id']) {
+ $attrib['id'] = 'rcmfolderfilter';
+ }
+
+ $attrib['onchange'] = rcmail_output::JS_OBJECT_NAME . '.folder_filter(this.value)';
+
+ $roots = array();
+ $select = new html_select($attrib);
+ $select->add($RCMAIL->gettext('all'), '---');
+
+ foreach (array_keys($namespace) as $type) {
+ foreach ((array)$namespace[$type] as $ns) {
+ $root = rtrim($ns[0], $ns[1]);
+ $label = $RCMAIL->gettext('namespace.' . $type);
+
+ if (count($namespace[$type]) > 1) {
+ $label .= ' (' . rcube_charset::convert($root, 'UTF7-IMAP', RCUBE_CHARSET) . ')';
+ }
+
+ $select->add($label, $root);
+
+ if (strlen($root)) {
+ $roots[] = $root;
+ }
+ }
+ }
+
+ $RCMAIL->output->add_gui_object('foldersfilter', $attrib['id']);
+ $RCMAIL->output->set_env('ns_roots', $roots);
+
+ return $select->show();
+}
+
function rcmail_rename_folder($oldname, $newname)
{
global $RCMAIL;
@@ -406,16 +491,17 @@ function rcmail_rename_folder($oldname, $newname)
$a_threaded = (array) $RCMAIL->config->get('message_threading', array());
$oldprefix = '/^' . preg_quote($oldname . $delimiter, '/') . '/';
- foreach (array_keys($a_threaded) as $key) {
+ foreach ($a_threaded as $key => $val) {
if ($key == $oldname) {
unset($a_threaded[$key]);
- $a_threaded[$newname] = true;
+ $a_threaded[$newname] = $val;
}
else if (preg_match($oldprefix, $key)) {
unset($a_threaded[$key]);
- $a_threaded[preg_replace($oldprefix, $newname.$delimiter, $key)] = true;
+ $a_threaded[preg_replace($oldprefix, $newname.$delimiter, $key)] = $val;
}
}
+
$RCMAIL->user->save_prefs(array('message_threading' => $a_threaded));
// #1488692: update session
diff --git a/program/steps/settings/func.inc b/program/steps/settings/func.inc
index 4b4575f10..0b2039a78 100644
--- a/program/steps/settings/func.inc
+++ b/program/steps/settings/func.inc
@@ -44,6 +44,8 @@ $RCMAIL->register_action_map(array(
'add-response' => 'edit_response.inc',
'save-response' => 'edit_response.inc',
'delete-response' => 'responses.inc',
+ 'delete-identity' => 'identities.inc',
+ 'upload-display' => 'upload.inc',
));
@@ -343,7 +345,7 @@ function rcmail_user_prefs($current = null)
if (is_array($meta) && $meta['name']) {
$skinname = $meta['name'];
$author_link = $meta['url'] ? html::a(array('href' => $meta['url'], 'target' => '_blank'), rcube::Q($meta['author'])) : rcube::Q($meta['author']);
- $license_link = $meta['license-url'] ? html::a(array('href' => $meta['license-url'], 'target' => '_blank'), rcube::Q($meta['license'])) : rcube::Q($meta['license']);
+ $license_link = $meta['license-url'] ? html::a(array('href' => $meta['license-url'], 'target' => '_blank', 'tabindex' => '-1'), rcube::Q($meta['license'])) : rcube::Q($meta['license']);
}
$skinnames[] = mb_strtolower($skinname);
@@ -916,6 +918,20 @@ function rcmail_user_prefs($current = null)
);
}
+ if (!isset($no_override['compose_save_localstorage'])) {
+ if (!$current) {
+ continue 2;
+ }
+
+ $field_id = 'rcmfd_compose_save_localstorage';
+ $input = new html_checkbox(array('name' => '_compose_save_localstorage', 'id' => $field_id, 'value' => 1));
+
+ $blocks['advanced']['options']['compose_save_localstorage'] = array(
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('savelocalstorage'))),
+ 'content' => $input->show($config['compose_save_localstorage']?1:0),
+ );
+ }
+
break;
// Addressbook config
@@ -1300,21 +1316,20 @@ function rcmail_update_folder_row($name, $oldname=null, $subscribe=false, $class
$protect_folders = $RCMAIL->config->get('protect_default_folders');
$storage = $RCMAIL->get_storage();
$delimiter = $storage->get_hierarchy_delimiter();
- $name_utf8 = rcube_charset::convert($name, 'UTF7-IMAP');
- $protected = $protect_folders && $storage->is_special_folder($name);
+ $name_utf8 = rcube_charset::convert($name, 'UTF7-IMAP');
+ $protected = $protect_folders && $storage->is_special_folder($name);
$foldersplit = explode($delimiter, $storage->mod_folder($name));
$level = count($foldersplit) - 1;
- $display_name = str_repeat('&nbsp;&nbsp;&nbsp;&nbsp;', $level)
- . rcube::Q($protected ? $RCMAIL->localize_foldername($name) : rcube_charset::convert($foldersplit[$level], 'UTF7-IMAP'));
+ $display_name = $protected ? $RCMAIL->localize_foldername($name) : rcube_charset::convert($foldersplit[$level], 'UTF7-IMAP');
+ $class_name = trim($class_name . ' mailbox');
if ($oldname === null) {
- $OUTPUT->command('add_folder_row', $name_utf8, $display_name, $protected, $subscribe,
- false, $class_name);
+ $OUTPUT->command('add_folder_row', $name, $name_utf8, $display_name, $protected, $subscribe,
+ $class_name);
}
else {
- $OUTPUT->command('replace_folder_row', rcube_charset::convert($oldname, 'UTF7-IMAP'),
- $name_utf8, $display_name, $protected, $class_name);
+ $OUTPUT->command('replace_folder_row', $oldname, $name, $name_utf8, $display_name, $protected, $class_name);
}
}
@@ -1332,7 +1347,7 @@ function rcmail_settings_tabs($attrib)
array('command' => 'preferences', 'type' => 'link', 'label' => 'preferences', 'title' => 'editpreferences'),
array('command' => 'folders', 'type' => 'link', 'label' => 'folders', 'title' => 'managefolders'),
array('command' => 'identities', 'type' => 'link', 'label' => 'identities', 'title' => 'manageidentities'),
- array('command' => 'responses', 'type' => 'link', 'label' => 'responses', 'title' => 'editresponses'),
+ array('command' => 'responses', 'type' => 'link', 'label' => 'responses', 'title' => 'manageresponses'),
);
// get all identites from DB and define list of cols to be displayed
diff --git a/program/steps/settings/identities.inc b/program/steps/settings/identities.inc
index e19c16c79..f43edc1f7 100644
--- a/program/steps/settings/identities.inc
+++ b/program/steps/settings/identities.inc
@@ -19,6 +19,28 @@
+-----------------------------------------------------------------------+
*/
+if ($RCMAIL->action == 'delete-identity' && $OUTPUT->ajax_call) {
+ $iid = rcube_utils::get_input_value('_iid', rcube_utils::INPUT_POST);
+
+ if ($iid && preg_match('/^[0-9]+(,[0-9]+)*$/', $iid)) {
+ $plugin = $RCMAIL->plugins->exec_hook('identity_delete', array('id' => $iid));
+
+ $deleted = !$plugin['abort'] ? $RCMAIL->user->delete_identity($iid) : $plugin['result'];
+
+ if ($deleted > 0 && $deleted !== false) {
+ $OUTPUT->show_message('deletedsuccessfully', 'confirmation', null, false);
+ $OUTPUT->command('remove_identity', $iid);
+ }
+ else {
+ $msg = $plugin['message'] ? $plugin['message'] : ($deleted < 0 ? 'nodeletelastidentity' : 'errorsaving');
+ $OUTPUT->show_message($msg, 'error', null, false);
+ }
+ }
+
+ $OUTPUT->send();
+}
+
+
define('IDENTITIES_LEVEL', intval($RCMAIL->config->get('identities_level', 0)));
$OUTPUT->set_pagetitle($RCMAIL->gettext('identities'));
diff --git a/program/steps/settings/responses.inc b/program/steps/settings/responses.inc
index 06093b3b8..117e17f97 100644
--- a/program/steps/settings/responses.inc
+++ b/program/steps/settings/responses.inc
@@ -51,8 +51,8 @@ if (!empty($_POST['_insert'])) {
$RCMAIL->output->send();
}
-if ($RCMAIL->action == 'delete-response') {
- if ($key = rcube_utils::get_input_value('_key', rcube_utils::INPUT_GPC)) {
+if ($RCMAIL->action == 'delete-response' && $RCMAIL->output->ajax_call) {
+ if ($key = rcube_utils::get_input_value('_key', rcube_utils::INPUT_POST)) {
$responses = $RCMAIL->get_compose_responses(false, true);
foreach ($responses as $i => $response) {
if (empty($response['key']))
@@ -70,9 +70,7 @@ if ($RCMAIL->action == 'delete-response') {
$RCMAIL->output->command('remove_response', $key);
}
- if ($RCMAIL->output->ajax_call) {
- $RCMAIL->output->send();
- }
+ $RCMAIL->output->send();
}
@@ -95,7 +93,7 @@ function rcmail_responses_list($attrib)
{
global $RCMAIL, $OUTPUT;
- $attrib += array('id' => 'rcmresponseslist', 'tagname' => 'table', 'cols' => 1);
+ $attrib += array('id' => 'rcmresponseslist', 'tagname' => 'table');
$plugin = $RCMAIL->plugins->exec_hook('responses_list', array(
'list' => $RCMAIL->get_compose_responses(true),
diff --git a/program/steps/settings/save_folder.inc b/program/steps/settings/save_folder.inc
index d1449bb38..b8fc49060 100644
--- a/program/steps/settings/save_folder.inc
+++ b/program/steps/settings/save_folder.inc
@@ -24,12 +24,10 @@
// init IMAP connection
$STORAGE = $RCMAIL->get_storage();
-$name = trim(rcube_utils::get_input_value('_name', rcube_utils::INPUT_POST, true));
-$old = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_POST, true);
-$path = rcube_utils::get_input_value('_parent', rcube_utils::INPUT_POST, true);
-
+$name = trim(rcube_utils::get_input_value('_name', rcube_utils::INPUT_POST, true));
+$path = rcube_utils::get_input_value('_parent', rcube_utils::INPUT_POST, true);
+$old_imap = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_POST, true);
$name_imap = rcube_charset::convert($name, RCUBE_CHARSET, 'UTF7-IMAP');
-$old_imap = rcube_charset::convert($old, RCUBE_CHARSET, 'UTF7-IMAP');
// $path is in UTF7-IMAP already
$delimiter = $STORAGE->get_hierarchy_delimiter();
@@ -96,7 +94,7 @@ else {
}
// create a new mailbox
-if (!$error && !strlen($old)) {
+if (!$error && !strlen($old_imap)) {
$folder['subscribe'] = true;
$plugin = $RCMAIL->plugins->exec_hook('folder_create', array('record' => $folder));
@@ -115,15 +113,13 @@ if (!$error && !strlen($old)) {
if (isset($_POST['_viewmode'])) {
$a_threaded = (array) $RCMAIL->config->get('message_threading', array());
- if ($_POST['_viewmode'])
- $a_threaded[$folder['name']] = true;
- else
- unset($a_threaded[$folder['name']]);
+ $a_threaded[$folder['name']] = (bool) $_POST['_viewmode'];
$RCMAIL->user->save_prefs(array('message_threading' => $a_threaded));
}
rcmail_update_folder_row($folder['name'], null, $folder['subscribe'], $folder['class']);
+
$OUTPUT->show_message('foldercreated', 'confirmation');
// reset folder preview frame
$OUTPUT->command('subscription_select');
@@ -167,19 +163,18 @@ else if (!$error) {
}
else if (preg_match($oldprefix, $key)) {
unset($a_threaded[$key]);
- $a_threaded[preg_replace($oldprefix, $folder['name'].$delimiter, $key)] = true;
+ $a_threaded[preg_replace($oldprefix, $folder['name'].$delimiter, $key)] = $val;
}
}
}
- if ($_POST['_viewmode'])
- $a_threaded[$folder['name']] = true;
- else
- unset($a_threaded[$folder['name']]);
+
+ $a_threaded[$folder['name']] = (bool) $_POST['_viewmode'];
$RCMAIL->user->save_prefs(array('message_threading' => $a_threaded));
}
$OUTPUT->show_message('folderupdated', 'confirmation');
+ $OUTPUT->set_env('folder', $folder['name']);
if ($rename) {
// #1488692: update session
diff --git a/program/steps/settings/save_identity.inc b/program/steps/settings/save_identity.inc
index 77245b988..de0c84c91 100644
--- a/program/steps/settings/save_identity.inc
+++ b/program/steps/settings/save_identity.inc
@@ -79,8 +79,11 @@ foreach ($email_checks as $email) {
}
}
-// XSS protection in HTML signature (#1489251)
if (!empty($save_data['signature']) && !empty($save_data['html_signature'])) {
+ // replace uploaded images with data URIs
+ $save_data['signature'] = rcmail_attach_images($save_data['signature']);
+
+ // XSS protection in HTML signature (#1489251)
$save_data['signature'] = rcmail_wash_html($save_data['signature']);
// clear POST data of signature, we want to use safe content
@@ -191,6 +194,35 @@ else {
/**
+ * Attach uploaded images into signature as data URIs
+ */
+function rcmail_attach_images($html)
+{
+ global $RCMAIL;
+
+ $offset = 0;
+ $regexp = '/\s(poster|src)\s*=\s*[\'"]*\S+upload-display\S+file=rcmfile([0-9]+)[\s\'"]*/';
+
+ while (preg_match($regexp, $html, $matches, 0, $offset)) {
+ $file_id = $matches[2];
+ $data_uri = ' ';
+
+ if ($file_id && ($file = $_SESSION['identity']['files'][$file_id])) {
+ $file = $RCMAIL->plugins->exec_hook('attachment_get', $file);
+
+ $data_uri .= 'src="data:' . $file['mimetype'] . ';base64,';
+ $data_uri .= base64_encode($file['data'] ? $file['data'] : file_get_contents($file['path']));
+ $data_uri .= '" ';
+ }
+
+ $html = str_replace($matches[0], $data_uri, $html);
+ $offset += strlen($data_uri) - strlen($matches[0]) + 1;
+ }
+
+ return $html;
+}
+
+/**
* Sanity checks/cleanups on HTML body of signature
*/
function rcmail_wash_html($html)
diff --git a/program/steps/settings/save_prefs.inc b/program/steps/settings/save_prefs.inc
index 7a17f21f4..f0ce9c9a3 100644
--- a/program/steps/settings/save_prefs.inc
+++ b/program/steps/settings/save_prefs.inc
@@ -90,6 +90,7 @@ case 'compose':
'default_font_size' => rcube_utils::get_input_value('_default_font_size', rcube_utils::INPUT_POST),
'reply_all_mode' => intval($_POST['_reply_all_mode']),
'forward_attachment' => !empty($_POST['_forward_attachment']),
+ 'compose_save_localstorage' => intval($_POST['_compose_save_localstorage']),
);
break;
diff --git a/program/steps/settings/upload.inc b/program/steps/settings/upload.inc
new file mode 100644
index 000000000..41e19f8fa
--- /dev/null
+++ b/program/steps/settings/upload.inc
@@ -0,0 +1,144 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | program/steps/settings/upload.inc |
+ | |
+ | This file is part of the Roundcube Webmail client |
+ | Copyright (C) 2005-2014, The Roundcube Dev Team |
+ | |
+ | Licensed under the GNU General Public License version 3 or |
+ | any later version with exceptions for skins & plugins. |
+ | See the README file for a full license statement. |
+ | |
+ | PURPOSE: |
+ | Handles image uploads |
+ | |
+ +-----------------------------------------------------------------------+
+ | Author: Aleksander Machniak <alec@alec.pl> |
+ +-----------------------------------------------------------------------+
+*/
+
+// Upload progress update
+if (!empty($_GET['_progress'])) {
+ $RCMAIL->upload_progress();
+}
+
+$from = rcube_utils::get_input_value('_from', rcube_utils::INPUT_GET);
+$type = str_replace('edit-', '', $from);
+
+if ($RCMAIL->action == 'upload-display') {
+ $id = 'undefined';
+
+ if (preg_match('/^rcmfile(\w+)$/', $_GET['_file'], $regs)) {
+ $id = $regs[1];
+ }
+
+ $RCMAIL->display_uploaded_file($_SESSION[$type]['files'][$id]);
+
+ exit;
+}
+
+
+// Supported image format types
+$IMAGE_TYPES = explode(',', 'jpeg,jpg,jp2,tiff,tif,bmp,eps,gif,png,png8,png24,png32,svg,ico');
+
+// clear all stored output properties (like scripts and env vars)
+$OUTPUT->reset();
+
+$max_size = $RCMAIL->config->get($type . '_image_size', 64) * 1024;
+$post_size = $RCMAIL->show_bytes(parse_bytes(ini_get('upload_max_filesize')));
+$uploadid = rcube_utils::get_input_value('_uploadid', rcube_utils::INPUT_GET);
+
+
+if (is_array($_FILES['_file']['tmp_name'])) {
+ $multiple = count($_FILES['_file']['tmp_name']) > 1;
+
+ foreach ($_FILES['_file']['tmp_name'] as $i => $filepath) {
+ // Process uploaded attachment if there is no error
+ $err = $_FILES['_file']['error'][$i];
+
+ if (!$err) {
+ if ($max_size < $_FILES['_file']['size'][$i]) {
+ $err = 'size_error';
+ }
+ // check image file type
+ else {
+ $image = new rcube_image($filepath);
+ $imageprop = $image->props();
+
+ if (!in_array(strtolower($imageprop['type']), $IMAGE_TYPES)) {
+ $err = 'type_error';
+ }
+ }
+ }
+
+ // save uploaded image in storage backend
+ if (!$err) {
+ $attachment = $RCMAIL->plugins->exec_hook('attachment_upload', array(
+ 'path' => $filepath,
+ 'size' => $_FILES['_file']['size'][$i],
+ 'name' => $_FILES['_file']['name'][$i],
+ 'mimetype' => 'image/' . $imageprop['type'],
+ 'group' => $type,
+ ));
+ }
+
+ if (!$err && $attachment['status'] && !$attachment['abort']) {
+ $id = $attachment['id'];
+
+ // store new file in session
+ unset($attachment['status'], $attachment['abort']);
+ $RCMAIL->session->append($type . '.files', $id, $attachment);
+
+ $content = rcube::Q($attachment['name']);
+
+ $OUTPUT->command('add2attachment_list', "rcmfile$id", array(
+ 'html' => $content,
+ 'name' => $attachment['name'],
+ 'mimetype' => $attachment['mimetype'],
+ 'classname' => rcube_utils::file2class($attachment['mimetype'], $attachment['name']),
+ 'complete' => true
+ ),
+ $uploadid
+ );
+ }
+ else {
+ if ($err == 'type_error') {
+ $msg = $RCMAIL->gettext('invalidimageformat');
+ }
+ else if ($err == 'size_error') {
+ $msg = $RCMAIL->gettext(array('name' => 'filesizeerror', 'vars' => array('size' => $max_size)));
+ }
+ else if ($err == UPLOAD_ERR_INI_SIZE || $err == UPLOAD_ERR_FORM_SIZE) {
+ $msg = $RCMAIL->gettext(array('name' => 'filesizeerror', 'vars' => array('size' => $post_size)));
+ }
+ else if ($attachment['error']) {
+ $msg = $attachment['error'];
+ }
+ else {
+ $msg = $RCMAIL->gettext('fileuploaderror');
+ }
+
+ $OUTPUT->command('display_message', $msg, 'error');
+ }
+ }
+}
+else if ($_SERVER['REQUEST_METHOD'] == 'POST') {
+ // if filesize exceeds post_max_size then $_FILES array is empty,
+ // show filesizeerror instead of fileuploaderror
+ if ($maxsize = ini_get('post_max_size')) {
+ $msg = $RCMAIL->gettext(array(
+ 'name' => 'filesizeerror',
+ 'vars' => array('size' => $RCMAIL->show_bytes(parse_bytes($maxsize)))
+ ));
+ }
+ else {
+ $msg = $RCMAIL->gettext('fileuploaderror');
+ }
+
+ $OUTPUT->command('display_message', $msg, 'error');
+ $OUTPUT->command('remove_from_attachment_list', $uploadid);
+}
+
+$OUTPUT->send('iframe');
diff --git a/program/steps/utils/html2text.inc b/program/steps/utils/html2text.inc
index 58df34bd0..f6e2bec4d 100644
--- a/program/steps/utils/html2text.inc
+++ b/program/steps/utils/html2text.inc
@@ -21,6 +21,11 @@
$html = stream_get_contents(fopen('php://input', 'r'));
+// strip slashes if magic_quotes enabled
+if (get_magic_quotes_gpc() || get_magic_quotes_runtime()) {
+ $html = stripslashes($html);
+}
+
// Replace emoticon images with its text representation
$html = $RCMAIL->replace_emoticons($html);
diff --git a/program/steps/utils/spell_html.inc b/program/steps/utils/spell_html.inc
index 5935dc13f..6722f8787 100644
--- a/program/steps/utils/spell_html.inc
+++ b/program/steps/utils/spell_html.inc
@@ -19,31 +19,28 @@
+-----------------------------------------------------------------------+
*/
-// read input data
-$data = file_get_contents('php://input');
-// Decode JSON input
-$request = json_decode($data, true);
+$method = rcube_utils::get_input_value('method', rcube_utils::INPUT_POST);
+$lang = rcube_utils::get_input_value('lang', rcube_utils::INPUT_POST);
$result = array();
-$lang = $request['params'][0];
-$data = $request['params'][1];
-$data = implode("\n", (array) $data);
-
-$result['id'] = $request['id'];
-
$spellchecker = new rcube_spellchecker($lang);
-if ($request['method'] == 'checkWords') {
- $result['result'] = empty($data) ? array() : $spellchecker->get_words($data);
-}
-else if ($request['method'] == 'getSuggestions') {
- $result['result'] = $spellchecker->get_suggestions($data);
-}
-else if ($request['method'] == 'learnWord') {
+if ($method == 'addToDictionary') {
+ $data = rcube_utils::get_input_value('word', rcube_utils::INPUT_POST);
+
$spellchecker->add_word($data);
$result['result'] = true;
}
+else {
+ $data = rcube_utils::get_input_value('text', rcube_utils::INPUT_POST, true);
+ $data = html_entity_decode($data, ENT_QUOTES, RCUBE_CHARSET);
+
+ if ($data && !$spellchecker->check($data)) {
+ $result['words'] = $spellchecker->get();
+ $result['dictionary'] = (bool) $RCMAIL->config->get('spellcheck_dictionary');
+ }
+}
if ($error = $spellchecker->error()) {
rcube::raise_error(array('code' => 500, 'type' => 'php',
@@ -51,12 +48,11 @@ if ($error = $spellchecker->error()) {
'message' => sprintf("Spell check engine error: " . $error)),
true, false);
- echo '{"error":{"errstr":"' . addslashes($error) . '","errfile":"","errline":null,"errcontext":"","level":"FATAL"}}';
+ echo json_encode(array('error' => $error));
exit;
}
// send output
-header("Content-Type: text/xml; charset=".RCUBE_CHARSET);
+header("Content-Type: application/json; charset=".RCUBE_CHARSET);
echo json_encode($result);
exit;
-
diff --git a/program/steps/utils/text2html.inc b/program/steps/utils/text2html.inc
new file mode 100644
index 000000000..56d15fa19
--- /dev/null
+++ b/program/steps/utils/text2html.inc
@@ -0,0 +1,33 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | program/steps/utils/text2html.inc |
+ | |
+ | This file is part of the Roundcube Webmail client |
+ | Copyright (C) 2005-2014, The Roundcube Dev Team |
+ | |
+ | Licensed under the GNU General Public License version 3 or |
+ | any later version with exceptions for skins & plugins. |
+ | See the README file for a full license statement. |
+ | |
+ | PURPOSE: |
+ | Convert plain text to HTML |
+ | |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas Bruederli <roundcube@gmail.com> |
+ +-----------------------------------------------------------------------+
+*/
+
+$text = stream_get_contents(fopen('php://input', 'r'));
+
+// strip slashes if magic_quotes enabled
+if (get_magic_quotes_gpc() || get_magic_quotes_runtime()) {
+ $html = stripslashes($html);
+}
+
+$converter = new rcube_text2html($text, false, array('wrap' => true));
+
+header('Content-Type: text/html; charset=' . RCUBE_CHARSET);
+print $converter->get_html();
+exit;
diff --git a/skins/classic/addressbook.css b/skins/classic/addressbook.css
index ebf9ab9d9..90438aa70 100644
--- a/skins/classic/addressbook.css
+++ b/skins/classic/addressbook.css
@@ -116,13 +116,6 @@
overflow: hidden;
}
-#directorylistbox input
-{
- margin: 0 0 0 20px;
- font-size: 11px;
- width: 90%;
-}
-
#addresslist
{
position: absolute;
@@ -144,7 +137,8 @@
width: 280px;
}
-#directorylist li a
+#directorylist li a,
+#savedsearchlist li a
{
cursor: default;
display: block;
@@ -159,17 +153,45 @@
background-repeat: no-repeat;
}
-#directorylist li ul li a
+#directorylist ul li a
{
padding-left: 45px;
+ background-position: 22px -108px;
+}
+
+#directorylist ul ul li a
+{
+ padding-left: 62px;
+ background-position: 39px -108px;
+}
+
+#directorylist ul ul ul li a
+{
+ padding-left: 79px;
+ background-position: 39px -108px;
}
#directorylist li.contactgroup a
{
+ background-position: 5px -143px;
+}
+
+#directorylist ul li.contactgroup a
+{
background-position: 22px -143px;
}
-#directorylist li.contactsearch a
+#directorylist ul ul li.contactgroup a
+{
+ background-position: 39px -143px;
+}
+
+#directorylist ul ul ul li.contactgroup a
+{
+ background-position: 56px -143px;
+}
+
+#savedsearchlist li.contactsearch a
{
background-position: 6px -162px;
}
@@ -279,6 +301,11 @@ body.iframe,
padding: 0;
}
+#contacthead > legend
+{
+ display: none;
+}
+
#contacthead .names span.namefield,
#contacthead .names input
{
diff --git a/skins/classic/common.css b/skins/classic/common.css
index 4367d26cb..b87286249 100644
--- a/skins/classic/common.css
+++ b/skins/classic/common.css
@@ -20,12 +20,16 @@ body.extwin
margin: 10px;
}
-select, input, textarea
+select, input, textarea, button
{
- font-size: 12px;
+ font-size: inherit;
font-family: inherit;
}
+html.mozilla select {
+ padding: 2px 1px;
+}
+
th
{
font-weight: normal;
@@ -284,6 +288,13 @@ body > #message div.loading,
border: 1px solid #CCCCCC;
}
+body > #message div.voice
+{
+ position: absolute;
+ top: -1000px;
+ clip: rect(0 0 0 0);
+}
+
body > #message a
{
cursor: pointer;
@@ -546,6 +557,7 @@ body.iframe .boxtitle
.popupmenu li a.active:visited
{
color: #333;
+ cursor: pointer;
}
.popupmenu li a.active:hover,
@@ -605,8 +617,13 @@ img.uploading
height: 16px;
}
+.popup label > input {
+ margin-left: 10px;
+}
+
/***** common table settings ******/
+table.records-table thead tr th,
table.records-table thead tr td
{
height: 20px;
@@ -617,6 +634,7 @@ table.records-table thead tr td
background: url(images/listheader.gif) top left repeat-x #CCC;
font-size: 11px;
font-weight: bold;
+ text-align: left;
}
table.records-table tbody tr td
@@ -627,7 +645,8 @@ table.records-table tbody tr td
white-space: nowrap;
border-bottom: 1px solid #EBEBEB;
overflow: hidden;
- text-align: left;
+ text-align: left;
+ outline: none;
}
table.records-table tr
@@ -659,18 +678,21 @@ ul.treelist li
ul.treelist li div.treetoggle
{
position: absolute;
- left: 8px !important;
- left: -16px;
- top: 1px;
+ left: 8px;
+ top: 2px;
width: 14px;
height: 16px;
cursor: pointer;
}
-ul.treelist li ul li div.treetoggle
+ul.treelist ul li div.treetoggle
+{
+ left: 25px;
+}
+
+ul.treelist ul ul li div.treetoggle
{
- left: 28px !important;
- left: 4px;
+ left: 42px;
}
ul.treelist li div.collapsed
@@ -683,7 +705,6 @@ ul.treelist li div.expanded
background: url(images/icons/expanded.png) bottom right no-repeat;
}
-
ul.treelist,
ul.treelist li ul
{
@@ -704,6 +725,7 @@ ul.treelist li
font-size: 11px;
border-bottom: 1px solid #EBEBEB;
white-space: nowrap;
+ overflow: hidden;
}
ul.treelist li a
@@ -714,6 +736,7 @@ ul.treelist li a
padding-top: 2px;
padding-bottom: 2px;
height: 16px;
+ line-height: 16px;
text-decoration: none;
white-space: nowrap;
}
@@ -733,7 +756,8 @@ ul.treelist li ul li:last-child
border-bottom: 0;
}
-ul.treelist li.selected > a
+ul.treelist li.selected > a,
+ul.treelist li.selected > div a
{
color: #FFF;
font-weight: bold;
@@ -745,21 +769,176 @@ ul.treelist li.droptarget
background-color: #FFFFA6;
}
+/***** folders list *****/
+
+.folderlist li ul li:last-child
+{
+ border-bottom: 0 none;
+}
+
+.folderlist li.inbox a
+{
+ background-position: 5px -18px;
+}
+
+.folderlist li.drafts a
+{
+ background-position: 5px -36px;
+}
+
+.folderlist li.sent a
+{
+ background-position: 5px -53px;
+}
+
+.folderlist li.junk a
+{
+ background-position: 5px -72px;
+}
+
+.folderlist li.trash a
+{
+ background-position: 5px -180px;
+}
+
+.folderlist li.trash.empty a
+{
+ background-position: 5px -90px;
+}
+
+.folderlist li a
+{
+ cursor: default;
+ display: block;
+ position: relative;
+ padding-left: 25px;
+ padding-top: 2px;
+ padding-bottom: 2px;
+ text-decoration: none;
+ height: 15px;
+ background: url(images/icons/folders.png) 5px 1px no-repeat;
+}
+
+.folderlist li.virtual > a
+{
+ color: #666;
+}
+
+.folderlist li.selected,
+.folderlist li.droptarget li.selected
+{
+ background-color: #929292;
+}
+
+.folderlist li.selected > a,
+.folderlist li.droptarget li.selected a
+{
+ color: #FFF;
+ font-weight: bold;
+}
+
+.folderlist li.droptarget
+{
+ background-color: #FFFFA6;
+}
+
+/* styles for nested folders */
+.folderlist ul {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+ border-top: 1px solid #EBEBEB;
+ background-color: #FFF;
+ font-weight: normal;
+}
+
+.folderlist li.mailbox ul li a {
+ padding-left: 40px; /* 24 + 1 x 16 */
+ background-position: 20px 1px; /* 4 + 1 x 16 */
+}
+.folderlist li.mailbox ul li div.treetoggle {
+ left: 23px !important;
+}
+
+.folderlist li.mailbox ul ul li.mailbox a {
+ padding-left: 56px; /* 2x */
+ background-position: 36px 1px;
+}
+.folderlist li.mailbox ul ul li div.treetoggle {
+ left: 39px !important;
+}
+
+.folderlist li.mailbox ul ul ul li.mailbox a {
+ padding-left: 72px; /* 3x */
+ background-position: 52px 1px;
+}
+.folderlist li.mailbox ul ul ul li div.treetoggle {
+ left: 55px !important;
+}
+
+.folderlist li.mailbox ul ul ul ul li.mailbox a {
+ padding-left: 88px; /* 4x */
+ background-position: 68px 1px;
+}
+.folderlist li.mailbox ul ul ul ul li div.treetoggle {
+ left: 71px !important;
+}
+
+/* indent folders on levels > 4 */
+.folderlist li.mailbox ul ul ul ul ul li {
+ padding-left: 16px;
+}
+.folderlist li.mailbox ul ul ul ul ul li div.treetoggle {
+ left: 87px !important;
+}
+
+.folderlist li.mailbox ul li.drafts a
+{
+ background-position: 21px -36px;
+}
+
+.folderlist li.mailbox ul li.sent a
+{
+ background-position: 21px -53px;
+}
+
+.folderlist li.mailbox ul li.junk a
+{
+ background-position: 21px -72px;
+}
+
+.folderlist li.mailbox ul li.trash a
+{
+ background-position: 21px -180px;
+}
+
+.folderlist li.mailbox ul li.trash.empty a
+{
+ background-position: 21px -90px;
+}
+
/***** mac-style quicksearch field *****/
+div.searchbox,
#quicksearchbar
{
- position: absolute;
- top: 55px;
- right: 10px;
+ position: relative;
width: 190px;
height: 20px;
text-align: right;
background: url(images/searchfield.gif) top left no-repeat;
}
-#searchreset
+#quicksearchbar
+{
+ position: absolute;
+ top: 55px;
+ right: 10px;
+}
+
+#searchreset,
+div.searchbox a.searchreset
{
position: absolute;
top: 3px;
@@ -767,19 +946,42 @@ ul.treelist li.droptarget
text-decoration: none;
}
-#searchmenulink
+#searchmenulink,
+div.searchbox a.searchmenu,
+div.searchbox a.searchicon
{
position: absolute;
top: 3px;
right: 168px;
}
+div.searchbox a.searchreset
+{
+ display: block;
+ width: 14px;
+ height: 14px;
+ overflow: hidden;
+ white-space: nowrap;
+ text-indent: 50000px;
+ background: url(images/icons/reset.gif) top left no-repeat;
+}
+
+div.searchbox a.searchicon
+{
+ display: inline-block;
+ width: 16px;
+ height: 16px;
+ overflow: hidden;
+ background: url(images/icons/glass.png) top left no-repeat;
+}
+
#quicksearchbar img
{
vertical-align: middle;
}
-#quicksearchbox
+#quicksearchbox,
+div.searchbox > input
{
position: absolute;
top: 2px;
@@ -809,6 +1011,25 @@ ul.treelist li.droptarget
width: 97%;
}
+.listsearchbox
+{
+ border-bottom: solid 1px #ddd;
+ padding: 2px 4px 1px;
+ display: none;
+ background-color: #f2f2f2;
+}
+
+.listsearchbox a.iconbutton.reset
+{
+ background: url(images/icons/reset.gif) no-repeat 0 0;
+ width: 13px;
+ height: 13px;
+ text-indent: 50000px;
+ position: absolute;
+ top: 3px;
+ left: 165px;
+ overflow: hidden;
+}
/***** roundcube webmail pre-defined classes *****/
@@ -1189,3 +1410,68 @@ fieldset.tabbed
.quota_text_high { color: white; }
.quota_text_mid { color: #666; }
.quota_text_low { color: #666; }
+
+table.quota-info {
+ border-spacing: 0;
+ border-collapse: collapse;
+ table-layout: fixed;
+ margin: 2px;
+}
+
+table.quota-info td,
+table.quota-info th {
+ border: 1px solid #999;
+ padding: 2px 3px;
+ text-align: center;
+ min-width: 80px;
+ color: #333;
+ font-size: 11px;
+}
+
+table.quota-info th {
+ font-weight: bold;
+ background-color: #ddd;
+}
+
+table.quota-info td.name {
+ text-align: left;
+}
+
+table.quota-info td.root {
+ font-style: italic;
+}
+
+/********** TinyMCE styles **********/
+.mce-btn-small button
+{
+ height: 22px;
+}
+
+.mce-btn-small i
+{
+ line-height: 16px !important;
+ vertical-align: text-top !important;
+}
+
+.mce-combobox button
+{
+ padding: 6px 8px !important;
+}
+
+.mce-tinymce,
+.mce-panel.mce-toolbar-grp
+{
+ border: 0 !important;
+}
+
+#image-selector-form.droptarget {
+ background: url(images/filedrop.png) center bottom no-repeat;
+}
+
+#image-selector-form.droptarget.hover
+{
+ background-color: #F0F0EE;
+ box-shadow: 0 0 5px 0 #999;
+ -moz-box-shadow: 0 0 5px 0 #999;
+ -o-box-shadow: 0 0 5px 0 #999;
+}
diff --git a/skins/classic/functions.js b/skins/classic/functions.js
index ae9898c68..2bf1538c4 100644
--- a/skins/classic/functions.js
+++ b/skins/classic/functions.js
@@ -106,12 +106,12 @@ function rcube_mail_ui()
searchmenu: {id:'searchmenu', editable:1},
messagemenu: {id:'messagemenu'},
attachmentmenu: {id:'attachmentmenu'},
- listmenu: {id:'listmenu', editable:1},
dragmenu: {id:'dragmenu', sticky:1},
groupmenu: {id:'groupoptionsmenu', above:1},
mailboxmenu: {id:'mailboxoptionsmenu', above:1},
composemenu: {id:'composeoptionsmenu', editable:1, overlap:1},
spellmenu: {id:'spellmenu'},
+ responsesmenu: {id:'responsesmenu'},
// toggle: #1486823, #1486930
uploadmenu: {id:'attachment-form', editable:1, above:1, toggle:!bw.ie&&!bw.linux },
uploadform: {id:'upload-form', editable:1, toggle:!bw.ie&&!bw.linux }
@@ -292,61 +292,62 @@ set_searchmod: function(elem)
rcmail.set_searchmods(m);
},
-listmenu: function(show)
+show_listmenu: function(p)
{
- var obj = this.popups.listmenu.obj,
- ref = rcube_find_object('listmenulink');
+ var self = this, buttons = {}, $dialog = $('#listmenu');
- if (typeof show == 'undefined')
- show = obj.is(':visible') ? false : true;
-
- if (show && ref) {
- var pos = $(ref).offset(),
- menuwidth = obj.width(),
- pagewidth = $(document).width();
-
- if (pagewidth - pos.left < menuwidth && pos.left > menuwidth)
- pos.left = pos.left - menuwidth;
-
- obj.css({ left:pos.left, top:(pos.top + ref.offsetHeight + 2)});
-
- // set form values
- $('input[name="sort_col"][value="'+rcmail.env.sort_col+'"]').prop('checked', true);
- $('input[name="sort_ord"][value="DESC"]').prop('checked', rcmail.env.sort_order == 'DESC');
- $('input[name="sort_ord"][value="ASC"]').prop('checked', rcmail.env.sort_order != 'DESC');
- $('input[name="view"][value="thread"]').prop('checked', rcmail.env.threading ? true : false);
- $('input[name="view"][value="list"]').prop('checked', rcmail.env.threading ? false : true);
-
- // set checkboxes
- $('input[name="list_col[]"]').each(function() {
- $(this).prop('checked', jQuery.inArray(this.value, rcmail.env.coltypes) != -1);
- });
+ // close the dialog
+ if ($dialog.is(':visible')) {
+ $dialog.dialog('close', p.originalEvent);
+ return;
}
- obj[show?'show':'hide']();
+ // set form values
+ $('input[name="sort_col"][value="'+rcmail.env.sort_col+'"]').prop('checked', true);
+ $('input[name="sort_ord"][value="DESC"]').prop('checked', rcmail.env.sort_order == 'DESC');
+ $('input[name="sort_ord"][value="ASC"]').prop('checked', rcmail.env.sort_order != 'DESC');
+ $('input[name="view"][value="thread"]').prop('checked', rcmail.env.threading ? true : false);
+ $('input[name="view"][value="list"]').prop('checked', rcmail.env.threading ? false : true);
- if (show) {
- var maxheight=0;
- $('#listmenu fieldset').each(function() {
- var height = $(this).height();
- if (height > maxheight) {
- maxheight = height;
- }
- });
- $('#listmenu fieldset').css("min-height", maxheight+"px")
- .height(maxheight);
+ // set checkboxes
+ $('input[name="list_col[]"]').each(function() {
+ $(this).prop('checked', $.inArray(this.value, rcmail.env.listcols) != -1);
+ });
+
+ buttons[rcmail.gettext('save')] = function(e) {
+ $dialog.dialog('close', e);
+ self.save_listmenu();
};
-},
-open_listmenu: function()
-{
- this.listmenu();
+ $dialog.dialog({
+ modal: true,
+ resizable: false,
+ closeOnEscape: true,
+ title: null,
+ open: function(e) {
+ var maxheight = 0;
+ $('#listmenu fieldset').each(function() {
+ var height = $(this).height();
+ if (height > maxheight) {
+ maxheight = height;
+ }
+ }).css("min-height", maxheight+"px").height(maxheight);
+
+ setTimeout(function() { $dialog.find('a, input:not(:disabled)').not('[aria-disabled=true]').first().focus(); }, 100);
+ },
+ close: function(e) {
+ $dialog.dialog('destroy').hide();
+ if (e.originalEvent && rcube_event.is_keyboard(e.originalEvent))
+ $('#listmenulink').focus();
+ },
+ buttons: buttons,
+ minWidth: 500,
+ width: $dialog.width()+20
+ }).show();
},
save_listmenu: function()
{
- this.listmenu();
-
var sort = $('input[name="sort_col"]:checked').val(),
ord = $('input[name="sort_ord"]:checked').val(),
thread = $('input[name="view"]:checked').val(),
@@ -393,7 +394,7 @@ spellmenu: function(show)
this.show_popupmenu('spellmenu', show);
},
-show_attachmentmenu: function(elem)
+show_attachmentmenu: function(elem, event)
{
var id = elem.parentNode.id.replace(/^attach/, '');
@@ -406,37 +407,30 @@ show_attachmentmenu: function(elem)
});
this.popups.attachmentmenu.link = elem;
- rcmail.command('menu-open', {menu: 'attachmentmenu', id: id});
+ rcmail.command('menu-open', {menu: 'attachmentmenu', id: id}, elem, event);
},
menu_open: function(p)
{
- if (p && p.props && p.props.menu == 'attachmentmenu')
- this.show_popup('attachmentmenu');
- else
- this.open_listmenu();
-},
-
-menu_save: function(prop)
-{
- this.save_listmenu();
+ if (p && p.name == 'messagelistmenu')
+ this.show_listmenu();
},
-body_mouseup: function(evt, p)
+body_mouseup: function(e)
{
- var i, target = rcube_event.get_target(evt);
-
- for (i in this.popups) {
- if (this.popups[i].obj.is(':visible') && target != rcube_find_object(i+'link')
- && !this.popups[i].toggle
- && target != this.popups[i].obj.get(0) // check if scroll bar was clicked (#1489832)
- && (!this.popups[i].editable || !this.target_overlaps(target, this.popups[i].id))
- && (!this.popups[i].sticky || !rcube_mouse_is_over(evt, rcube_find_object(this.popups[i].id)))
+ var target = e.target; ref = this;
+
+ $.each(this.popups, function(i, popup) {
+ if (popup.obj.is(':visible') && target != rcube_find_object(i + 'link')
+ && !popup.toggle
+ && target != popup.obj.get(0) // check if scroll bar was clicked (#1489832)
+ && (!popup.editable || !ref.target_overlaps(target, popup.id))
+ && (!popup.sticky || !rcube_mouse_is_over(e, rcube_find_object(popup.id)))
&& !$(target).is('.folder-selector-link') && !$(target).children('.folder-selector-link').length
) {
window.setTimeout('rcmail_ui.show_popup("'+i+'",false);', 50);
}
- }
+ });
},
target_overlaps: function (target, elementid)
@@ -450,9 +444,9 @@ target_overlaps: function (target, elementid)
return false;
},
-body_keydown: function(evt, p)
+body_keydown: function(e)
{
- if (rcube_event.get_keycode(evt) == 27) {
+ if (e.keyCode == 27) {
for (var k in this.popups) {
if (this.popups[k].obj.is(':visible'))
this.show_popup(k, false);
@@ -556,10 +550,9 @@ resize_compose_body: function()
w = div.width() - 2, h = div.height(),
x = bw.ie || bw.opera ? 4 : 0;
- $('#compose-body_tbl').width((w+3)+'px').height('');
- $('#compose-body_ifr').width((w+3)+'px').height((h-54)+'px');
- $('#compose-body').width((w-x)+'px').height(h+'px');
- $('#googie_edit_layer').height(h+'px');
+ $('#compose-body_ifr').width(w+3).height(h-2 - $('div.mce-toolbar').height());
+ $('#compose-body').width(w-x).height(h);
+ $('#googie_edit_layer').height(h);
},
resize_compose_body_ev: function()
@@ -643,6 +636,37 @@ enable_command: function(p)
var label = rcmail.gettext(p.status ? 'replylist' : 'replyall');
$('a.button.replyAll').attr('title', label);
}
+},
+
+folder_search_init: function(container)
+{
+ // animation to unfold list search box
+ $('.boxtitle a.search', container).click(function(e) {
+ var title = $('.boxtitle', container),
+ box = $('.listsearchbox', container),
+ dir = box.is(':visible') ? -1 : 1,
+ height = 24 + ($('select', box).length ? 24 : 0);
+
+ box.slideToggle({
+ duration: 160,
+ progress: function(animation, progress) {
+ if (dir < 0) progress = 1 - progress;
+ $('.boxlistcontent', container).css('top', (title.outerHeight() + height * progress) + 'px');
+ },
+ complete: function() {
+ box.toggleClass('expanded');
+ if (box.is(':visible')) {
+ box.find('input[type=text]').focus();
+ }
+ else {
+ $('a.reset', box).click();
+ }
+ // TODO: save state in cookie
+ }
+ });
+
+ return false;
+ });
}
};
@@ -758,6 +782,8 @@ function rcube_layer(id, attributes)
/**
* Scroller
+ *
+ * @deprecated Use treelist widget
*/
function rcmail_scroller(list, top, bottom)
{
@@ -800,7 +826,7 @@ function iframe_events()
// this==iframe
try {
var doc = this.contentDocument ? this.contentDocument : this.contentWindow ? this.contentWindow.document : null;
- rcube_event.add_listener({ element: doc, object:rcmail_ui, method:'body_mouseup', event:'mouseup' });
+ $(doc).mouseup(function(e) { rcmail_ui.body_mouseup(e); });
}
catch (e) {
// catch possible "Permission denied" error in IE
@@ -886,6 +912,18 @@ function fit_string_to_size(str, elem, len)
function update_quota(data)
{
percent_indicator(rcmail.gui_objects.quotadisplay, data);
+
+ if (data.table) {
+ var menu = $('#quotamenu');
+
+ if (!menu.length)
+ menu = $('<div id="quotamenu" class="popupmenu">').appendTo($('body'));
+
+ menu.html(data.table);
+ $('#quotaimg').css('cursor', 'pointer').off('click').on('click', function(e) {
+ return rcmail.command('menu-open', 'quotamenu', e.target, e);
+ });
+ }
};
// percent (quota) indicator
@@ -953,18 +991,16 @@ function percent_indicator(obj, data)
};
// Optional parameters used by TinyMCE
-var rcmail_editor_settings = {
- skin: "default", // "default", "o2k7"
- skin_variant: "" // "", "silver", "black"
-};
+var rcmail_editor_settings = {};
var rcmail_ui;
function rcube_init_mail_ui()
{
rcmail_ui = new rcube_mail_ui();
- rcube_event.add_listener({ object:rcmail_ui, method:'body_mouseup', event:'mouseup' });
- rcube_event.add_listener({ object:rcmail_ui, method:'body_keydown', event:'keydown' });
+
+ $(document.body).mouseup(function(e) { rcmail_ui.body_mouseup(e); })
+ .mousedown(function(e) { rcmail_ui.body_keydown(e); });
rcmail.addEventListener('init', function() {
if (rcmail.env.quota_content)
@@ -972,23 +1008,22 @@ function rcube_init_mail_ui()
rcmail.addEventListener('setquota', update_quota);
$('iframe').load(iframe_events)
- .contents().mouseup(function(e){rcmail_ui.body_mouseup(e)});
+ .contents().mouseup(function(e) { rcmail_ui.body_mouseup(e); });
if (rcmail.env.task == 'mail') {
- rcmail.addEventListener('enable-command', 'enable_command', rcmail_ui);
- rcmail.addEventListener('menu-open', 'menu_open', rcmail_ui);
- rcmail.addEventListener('menu-save', 'menu_save', rcmail_ui);
- rcmail.addEventListener('aftersend-attachment', 'uploadmenu', rcmail_ui);
- rcmail.addEventListener('aftertoggle-editor', 'resize_compose_body_ev', rcmail_ui);
- rcmail.gui_object('dragmenu', 'dragmenu');
+ rcmail.addEventListener('enable-command', 'enable_command', rcmail_ui)
+ .addEventListener('menu-open', 'menu_open', rcmail_ui)
+ .addEventListener('aftersend-attachment', 'uploadmenu', rcmail_ui)
+ .addEventListener('aftertoggle-editor', 'resize_compose_body_ev', rcmail_ui)
+ .gui_object('dragmenu', 'dragmenu');
if (rcmail.gui_objects.mailboxlist) {
rcmail.treelist.addEventListener('expand', rcube_render_mailboxlist);
- rcmail.addEventListener('responseaftermark', rcube_render_mailboxlist);
- rcmail.addEventListener('responseaftergetunread', rcube_render_mailboxlist);
- rcmail.addEventListener('responseaftercheck-recent', rcube_render_mailboxlist);
- rcmail.addEventListener('responseafterrefresh', rcube_render_mailboxlist);
- rcmail.addEventListener('afterimport-messages', function(){ rcmail_ui.show_popup('uploadform', false); });
+ rcmail.addEventListener('responseaftermark', rcube_render_mailboxlist)
+ .addEventListener('responseaftergetunread', rcube_render_mailboxlist)
+ .addEventListener('responseaftercheck-recent', rcube_render_mailboxlist)
+ .addEventListener('responseafterrefresh', rcube_render_mailboxlist)
+ .addEventListener('afterimport-messages', function(){ rcmail_ui.show_popup('uploadform', false); });
}
if (rcmail.env.action == 'compose')
@@ -996,17 +1031,22 @@ function rcube_init_mail_ui()
else if (rcmail.env.action == 'show' || rcmail.env.action == 'preview')
// add menu link for each attachment
$('#attachment-list > li[id^="attach"]').each(function() {
- $(this).append($('<a class="drop"></a>').click(function() { rcmail_ui.show_attachmentmenu(this); }));
+ $(this).append($('<a class="drop"></a>').bind('click keypress', function(e) {
+ if (e.type != 'keypress' || e.which == 13) {
+ rcmail_ui.show_attachmentmenu(this, e);
+ return false;
+ }
+ }));
});
}
else if (rcmail.env.task == 'addressbook') {
- rcmail.addEventListener('afterupload-photo', function(){ rcmail_ui.show_popup('uploadform', false); });
-
- rcmail.gui_object('dragmenu', 'dragmenu');
+ rcmail.addEventListener('afterupload-photo', function(){ rcmail_ui.show_popup('uploadform', false); })
+ .gui_object('dragmenu', 'dragmenu');
}
else if (rcmail.env.task == 'settings') {
- if (rcmail.gui_objects.subscriptionlist)
- new rcmail_scroller('#folderlist-content', '#folderlist-title', '#folderlist-footer');
+ if (rcmail.env.action == 'folders') {
+ rcmail_ui.folder_search_init($('#folder-manager'));
+ }
}
});
}
diff --git a/skins/classic/images/filedrop.png b/skins/classic/images/filedrop.png
new file mode 100644
index 000000000..d4d455bdf
--- /dev/null
+++ b/skins/classic/images/filedrop.png
Binary files differ
diff --git a/skins/classic/includes/links.html b/skins/classic/includes/links.html
index 2f6ef0119..8ff57c229 100644
--- a/skins/classic/includes/links.html
+++ b/skins/classic/includes/links.html
@@ -1,4 +1,3 @@
-<meta http-equiv="X-UA-Compatible" content="IE=EDGE" />
<link rel="index" href="$__comm_path" />
<link rel="shortcut icon" href="/images/favicon.ico"/>
<link rel="stylesheet" type="text/css" href="/common.css" />
diff --git a/skins/classic/includes/messagetoolbar.html b/skins/classic/includes/messagetoolbar.html
index b6b16d635..7cf7d477c 100644
--- a/skins/classic/includes/messagetoolbar.html
+++ b/skins/classic/includes/messagetoolbar.html
@@ -28,39 +28,39 @@
<div id="forwardmenu" class="popupmenu">
<ul>
- <li><roundcube:button command="forward-inline" label="forwardinline" prop="sub" classAct="forwardlink active" class="forwardlink" /></li>
- <li><roundcube:button command="forward-attachment" label="forwardattachment" prop="sub" classAct="forwardattachmentlink active" class="forwardattachmentlink" /></li>
+ <roundcube:button type="link-menuitem" command="forward-inline" label="forwardinline" prop="sub" classAct="forwardlink active" class="forwardlink" />
+ <roundcube:button type="link-menuitem" command="forward-attachment" label="forwardattachment" prop="sub" classAct="forwardattachmentlink active" class="forwardattachmentlink" />
<roundcube:container name="forwardmenu" id="forwardmenu" />
</ul>
</div>
<div id="replyallmenu" class="popupmenu">
<ul>
- <li><roundcube:button command="reply-all" label="replyall" prop="sub" classAct="replyalllink active" class="replyalllink" /></li>
- <li><roundcube:button command="reply-list" label="replylist" prop="sub" classAct="replylistlink active" class="replylistlink" /></li>
+ <roundcube:button type="link-menuitem" command="reply-all" label="replyall" prop="sub" classAct="replyalllink active" class="replyalllink" />
+ <roundcube:button type="link-menuitem" command="reply-list" label="replylist" prop="sub" classAct="replylistlink active" class="replylistlink" />
<roundcube:container name="replyallmenu" id="replyallmenu" />
</ul>
</div>
<div id="messagemenu" class="popupmenu">
<ul class="toolbarmenu">
- <li><roundcube:button class="printlink" command="print" label="printmessage" classAct="printlink active" /></li>
- <li><roundcube:button class="downloadlink" command="download" label="emlsave" classAct="downloadlink active" /></li>
- <li><roundcube:button class="editlink" command="edit" prop="new" label="editasnew" classAct="editlink active" /></li>
- <li><roundcube:button class="movelink" command="move" label="moveto" classAct="movelink active" innerclass="folder-selector-link" /></li>
- <li><roundcube:button class="copylink" command="copy" label="copyto" classAct="copylink active" innerclass="folder-selector-link" /></li>
- <li class="separator_below"><roundcube:button class="sourcelink" command="viewsource" label="viewsource" classAct="sourcelink active" /></li>
- <li><roundcube:button class="openlink" command="open" label="openinextwin" target="_blank" classAct="openlink active" /></li>
+ <roundcube:button type="link-menuitem" class="printlink" command="print" label="printmessage" classAct="printlink active" />
+ <roundcube:button type="link-menuitem" class="downloadlink" command="download" label="emlsave" classAct="downloadlink active" />
+ <roundcube:button type="link-menuitem" class="editlink" command="edit" prop="new" label="editasnew" classAct="editlink active" />
+ <roundcube:button type="link-menuitem" class="movelink" command="move" label="moveto" classAct="movelink active" innerclass="folder-selector-link" />
+ <roundcube:button type="link-menuitem" class="copylink" command="copy" label="copyto" classAct="copylink active" innerclass="folder-selector-link" />
+ <roundcube:button type="link-menuitem" class="sourcelink" command="viewsource" label="viewsource" classAct="sourcelink active" menuitem-class="separator_below" />
+ <roundcube:button type="link-menuitem" class="openlink" command="open" label="openinextwin" target="_blank" classAct="openlink active" />
<roundcube:container name="messagemenu" id="messagemenu" />
</ul>
</div>
<div id="markmessagemenu" class="popupmenu">
<ul class="toolbarmenu">
- <li><roundcube:button command="mark" prop="read" label="markread" classAct="readlink active" class="readlink" /></li>
- <li><roundcube:button command="mark" prop="unread" label="markunread" classAct="unreadlink active" class="unreadlink" /></li>
- <li><roundcube:button command="mark" prop="flagged" label="markflagged" classAct="flaggedlink active" class="flaggedlink" /></li>
- <li><roundcube:button command="mark" prop="unflagged" label="markunflagged" classAct="unflaggedlink active" class="unflaggedlink" /></li>
+ <roundcube:button type="link-menuitem" command="mark" prop="read" label="markread" classAct="readlink active" class="readlink" />
+ <roundcube:button type="link-menuitem" command="mark" prop="unread" label="markunread" classAct="unreadlink active" class="unreadlink" />
+ <roundcube:button type="link-menuitem" command="mark" prop="flagged" label="markflagged" classAct="flaggedlink active" class="flaggedlink" />
+ <roundcube:button type="link-menuitem" command="mark" prop="unflagged" label="markunflagged" classAct="unflaggedlink active" class="unflaggedlink" />
<roundcube:container name="markmenu" id="markmessagemenu" />
</ul>
</div>
diff --git a/skins/classic/mail.css b/skins/classic/mail.css
index fc066e023..1eeba491a 100644
--- a/skins/classic/mail.css
+++ b/skins/classic/mail.css
@@ -409,170 +409,16 @@
background-color: #FFF;
}
-#mailboxlist li
-{
- display: block;
- position: relative;
- font-size: 11px;
- border-bottom: 1px solid #EBEBEB;
-}
-
-#mailboxlist li ul li:last-child
-{
- border-bottom: 0 none;
-}
-
-#mailboxlist li.inbox a
-{
- background-position: 5px -18px;
-}
-
-#mailboxlist li.drafts a
-{
- background-position: 5px -37px;
-}
-
-#mailboxlist li.sent a
-{
- background-position: 5px -54px;
-}
-
-#mailboxlist li.junk a
-{
- background-position: 5px -73px;
-}
-
-#mailboxlist li.trash a
-{
- background-position: 5px -180px;
-}
-
-#mailboxlist li.trash.empty a
-{
- background-position: 5px -90px;
-}
-
-#mailboxlist li a
-{
- cursor: default;
- display: block;
- position: relative;
- padding-left: 25px;
- padding-top: 2px;
- padding-bottom: 2px;
- text-decoration: none;
- height: 15px;
- background: url(images/icons/folders.png) 5px 0 no-repeat;
-}
-
#mailboxlist li.unread
{
font-weight: bold;
}
-#mailboxlist li.virtual > a
-{
- color: #666;
-}
-
#mailboxlist li.recent > a
{
color: #0066FF;
}
-#mailboxlist li.selected,
-#mailboxlist li.droptarget li.selected
-{
- background-color: #929292;
-}
-
-#mailboxlist li.selected > a,
-#mailboxlist li.droptarget li.selected a
-{
- color: #FFF;
- font-weight: bold;
-}
-
-#mailboxlist li.droptarget
-{
- background-color: #FFFFA6;
-}
-
-/* styles for nested folders */
-#mailboxlist ul {
- list-style: none;
- padding: 0;
- margin: 0;
- border-top: 1px solid #EBEBEB;
- background-color: #FFF;
- font-weight: normal;
-}
-
-#mailboxlist li.mailbox ul li a {
- padding-left: 40px; /* 24 + 1 x 16 */
- background-position: 20px 0; /* 4 + 1 x 16 */
-}
-#mailboxlist li.mailbox ul li div.treetoggle {
- left: 23px !important;
-}
-
-#mailboxlist li.mailbox ul ul li.mailbox a {
- padding-left: 56px; /* 2x */
- background-position: 36px 0;
-}
-#mailboxlist li.mailbox ul ul li div.treetoggle {
- left: 39px !important;
-}
-
-#mailboxlist li.mailbox ul ul ul li.mailbox a {
- padding-left: 72px; /* 3x */
- background-position: 52px 0;
-}
-#mailboxlist li.mailbox ul ul ul li div.treetoggle {
- left: 55px !important;
-}
-
-#mailboxlist li.mailbox ul ul ul ul li.mailbox a {
- padding-left: 88px; /* 4x */
- background-position: 68px 0;
-}
-#mailboxlist li.mailbox ul ul ul ul li div.treetoggle {
- left: 71px !important;
-}
-
-/* indent folders on levels > 4 */
-#mailboxlist li.mailbox ul ul ul ul ul li {
- padding-left: 16px;
-}
-#mailboxlist li.mailbox ul ul ul ul ul li div.treetoggle {
- left: 87px !important;
-}
-
-#mailboxlist li.mailbox ul li.drafts a
-{
- background-position: 21px -37px;
-}
-
-#mailboxlist li.mailbox ul li.sent a
-{
- background-position: 21px -54px;
-}
-
-#mailboxlist li.mailbox ul li.junk a
-{
- background-position: 21px -73px;
-}
-
-#mailboxlist li.mailbox ul li.trash a
-{
- background-position: 21px -180px;
-}
-
-#mailboxlist li.mailbox ul li.trash.empty a
-{
- background-position: 21px -90px;
-}
-
#listcontrols
{
position: relative;
@@ -719,6 +565,7 @@ table.messagelist.fixedcopy
z-index: 2;
}
+.messagelist thead tr th,
.messagelist thead tr td
{
height: 20px;
@@ -729,25 +576,26 @@ table.messagelist.fixedcopy
background: url(images/listheader.gif) top left repeat-x #CCC;
font-size: 11px;
font-weight: bold;
+ text-align: left;
}
-.messagelist thead tr td.sortedASC,
-.messagelist thead tr td.sortedDESC
+.messagelist thead tr > .sortedASC,
+.messagelist thead tr > .sortedDESC
{
background-position: 0 -26px;
}
-.messagelist thead tr td.sortedASC a
+.messagelist thead tr > .sortedASC a
{
background: url(images/icons/sort.gif) right 0 no-repeat;
}
-.messagelist thead tr td.sortedDESC a
+.messagelist thead tr > .sortedDESC a
{
background: url(images/icons/sort.gif) right -14px no-repeat;
}
-.messagelist thead tr td a
+.messagelist thead tr a
{
display: block;
width: auto !important;
@@ -756,18 +604,19 @@ table.messagelist.fixedcopy
text-decoration: none;
}
-.messagelist thead tr td.size.sortedASC a,
-.messagelist thead tr td.size.sortedDESC a
+.messagelist thead tr > .size.sortedASC a,
+.messagelist thead tr > .size.sortedDESC a
{
padding-right: 18px;
}
-.messagelist thead tr td.subject
+.messagelist thead tr > .subject
{
padding-left: 18px;
width: 99%;
}
+.messagelist tbody tr th,
.messagelist tbody tr td
{
height: 20px;
@@ -780,6 +629,7 @@ table.messagelist.fixedcopy
-o-text-overflow: ellipsis;
border-bottom: 1px solid #EBEBEB;
cursor: default;
+ outline: none;
}
.messagelist tbody tr td a
@@ -803,40 +653,42 @@ table.messagelist.fixedcopy
cursor: pointer;
}
-.messagelist tr td.flag span,
-.messagelist tr td.status span,
-.messagelist tr td.attachment span,
-.messagelist tr td.priority span
+.messagelist tr > .flag span,
+.messagelist tr > .status span,
+.messagelist tr > .attachment span,
+.messagelist tr > .priority span
{
display: block;
width: 15px;
+ text-indent: -5000px;
+ overflow: hidden;
}
.messagelist tr td div.collapsed,
.messagelist tr td div.expanded,
-.messagelist tr td.threads div.listmenu,
-.messagelist tr td.attachment span.attachment,
-.messagelist tr td.attachment span.report,
-.messagelist tr td.priority span.priority,
-.messagelist tr td.priority span.prio1,
-.messagelist tr td.priority span.prio2,
-.messagelist tr td.priority span.prio3,
-.messagelist tr td.priority span.prio4,
-.messagelist tr td.priority span.prio5,
-.messagelist tr td.flag span.flagged,
-.messagelist tr td.flag span.unflagged,
-.messagelist tr td.flag span.unflagged:hover,
-.messagelist tr td.status span.status,
-.messagelist tr td.status span.msgicon,
-.messagelist tr td.status span.deleted,
-.messagelist tr td.status span.unread,
-.messagelist tr td.status span.unreadchildren,
-.messagelist tr td.subject span.msgicon,
-.messagelist tr td.subject span.deleted,
-.messagelist tr td.subject span.unread,
-.messagelist tr td.subject span.replied,
-.messagelist tr td.subject span.forwarded,
-.messagelist tr td.subject span.unreadchildren
+.messagelist tr > .threads .listmenu,
+.messagelist tr > .attachment span.attachment,
+.messagelist tr > .attachment span.report,
+.messagelist tr > .priority span.priority,
+.messagelist tr > .priority span.prio1,
+.messagelist tr > .priority span.prio2,
+.messagelist tr > .priority span.prio3,
+.messagelist tr > .priority span.prio4,
+.messagelist tr > .priority span.prio5,
+.messagelist tr > .flag span.flagged,
+.messagelist tr > .flag span.unflagged,
+.messagelist tr > .flag span.unflagged:hover,
+.messagelist tr > .status span.status,
+.messagelist tr > .status span.msgicon,
+.messagelist tr > .status span.deleted,
+.messagelist tr > .status span.unread,
+.messagelist tr > .status span.unreadchildren,
+.messagelist tr > .subject span.msgicon,
+.messagelist tr > .subject span.deleted,
+.messagelist tr > .subject span.unread,
+.messagelist tr > .subject span.replied,
+.messagelist tr > .subject span.forwarded,
+.messagelist tr > .subject span.unreadchildren
{
display: inline-block;
vertical-align: middle;
@@ -845,99 +697,99 @@ table.messagelist.fixedcopy
background: url(images/messageicons.png) center no-repeat;
}
-.messagelist tr td.attachment span.attachment
+.messagelist tr > .attachment span.attachment
{
background-position: 0 -170px;
}
-.messagelist tr td.attachment span.report
+.messagelist tr > .attachment span.report
{
background-position: 0 -255px;
}
-.messagelist tr td.priority span.priority
+.messagelist tr > .priority span.priority
{
background-position: 0 -309px;
}
-.messagelist tr td.priority span.prio5
+.messagelist tr > .priority span.prio5
{
background-position: 0 -358px;
}
-.messagelist tr td.priority span.prio4
+.messagelist tr > .priority span.prio4
{
background-position: 0 -340px;
}
-.messagelist tr td.priority span.prio3
+.messagelist tr > .priority span.prio3
{
background-position: 0 -324px;
}
-.messagelist tr td.priority span.prio2
+.messagelist tr > .priority span.prio2
{
background-position: 0 -309px;
}
-.messagelist tr td.priority span.prio1
+.messagelist tr > .priority span.prio1
{
background-position: 0 -290px;
}
-.messagelist tr td.flag span.flagged
+.messagelist tr > .flag span.flagged
{
background-position: 0 -153px;
}
-.messagelist tr td.flag span.unflagged:hover
+.messagelist tr > .flag span.unflagged:hover
{
background-position: 0 -136px;
}
-.messagelist tr td.subject span.msgicon,
-.messagelist tr td.subject span.unreadchildren
+.messagelist tr > .subject span.msgicon,
+.messagelist tr > .subject span.unreadchildren
{
background-position: 0 -51px;
margin: 0 2px;
}
-.messagelist tr td.subject span.replied
+.messagelist tr > .subject span.replied
{
background-position: 0 -85px;
}
-.messagelist tr td.subject span.forwarded
+.messagelist tr > .subject span.forwarded
{
background-position: 0 -68px;
}
-.messagelist tr td.subject span.replied.forwarded
+.messagelist tr > .subject span.replied.forwarded
{
background-position: 0 -102px;
}
-.messagelist tr td.status span.msgicon,
-.messagelist tr td.flag span.unflagged,
-.messagelist tr td.status span.unreadchildren
+.messagelist tr > .status span.msgicon,
+.messagelist tr > .flag span.unflagged,
+.messagelist tr > .status span.unreadchildren
{
background-position: 0 17px; /* no icon */
}
-.messagelist tr td.status span.msgicon:hover
+.messagelist tr > .status span.msgicon:hover
{
background-position: 0 -272px;
}
-.messagelist tr td.status span.deleted,
-.messagelist tr td.subject span.deleted
+.messagelist tr > .status span.deleted,
+.messagelist tr > .subject span.deleted
{
background-position: 0 -187px;
}
-.messagelist tr td.status span.status,
-.messagelist tr td.status span.unread,
-.messagelist tr td.subject span.unread
+.messagelist tr > .status span.status,
+.messagelist tr > .status span.unread,
+.messagelist tr > .subject span.unread
{
background-position: 0 -119px;
}
@@ -954,10 +806,13 @@ table.messagelist.fixedcopy
cursor: pointer;
}
-.messagelist tr td.threads div.listmenu
+.messagelist tr > .threads .listmenu
{
background-position: 0 -238px;
cursor: pointer;
+ overflow: hidden;
+ text-indent: -5000px;
+ display: block;
}
.messagelist tbody tr td.subject
@@ -977,45 +832,45 @@ table.messagelist.fixedcopy
text-decoration: underline;
}
-.messagelist tr td.attachment,
-.messagelist tr td.threads,
-.messagelist tr td.status,
-.messagelist tr td.flag,
-.messagelist tr td.priority
+.messagelist tr > .attachment,
+.messagelist tr > .threads,
+.messagelist tr > .status,
+.messagelist tr > .flag,
+.messagelist tr > .priority
{
width: 17px;
padding: 0 0 0 2px;
}
-.messagelist tr td.size
+.messagelist tr > .size
{
width: 60px;
text-align: right;
padding: 0 2px;
}
-.messagelist tr td.fromto,
-.messagelist tr td.from,
-.messagelist tr td.to,
-.messagelist tr td.cc,
-.messagelist tr td.replyto
+.messagelist tr > .fromto,
+.messagelist tr > .from,
+.messagelist tr > .to,
+.messagelist tr > .cc,
+.messagelist tr > .replyto
{
width: 180px;
padding: 0 2px;
}
-.messagelist tr td.date
+.messagelist tr > .date
{
width: 135px;
padding: 0 2px;
}
-.messagelist tr td.folder
+.messagelist tr > .folder
{
width: 135px;
}
-.messagelist tr td.hidden
+.messagelist tr > .hidden
{
display: none;
}
@@ -1038,6 +893,7 @@ table.messagelist.fixedcopy
}
/* This padding-left minus the focused padding left should be half of the focused border-left */
+.messagelist thead tr th:first-child,
.messagelist thead tr td:first-child,
.messagelist tbody tr td:first-child {
border-left: 0;
@@ -1058,21 +914,15 @@ table.messagelist.fixedcopy
.messagelist tr.selected td
{
color: #FFFFFF;
- background-color: #CC3333;
-}
-
-.messagelist tr.unfocused td
-{
- color: #FFFFFF;
background-color: #929292;
}
-.messagelist tr.selected td a
+.messagelist.focus tr.selected td
{
- color: #FFFFFF;
+ background-color: #CC3333;
}
-.messagelist tr.unfocused td a
+.messagelist tr.selected td a
{
color: #FFFFFF;
}
@@ -1306,17 +1156,12 @@ div.message-htmlpart a
color: #0000CC;
}
-div.message-part pre,
-div.message-htmlpart pre,
div.message-part div.pre
{
margin: 0px;
padding: 0px;
font-family: monospace;
font-size: 12px;
- white-space: -moz-pre-wrap !important;
- white-space: pre-wrap !important;
- white-space: pre;
}
div.message-part span.sig
@@ -1330,8 +1175,10 @@ div.message-part blockquote
border-left: 2px solid blue;
border-right: 2px solid blue;
background-color: #F6F6F6;
- margin: 2px 0px;
- padding: 1px 8px 1px 10px;
+ margin: 2px 0;
+ padding: 0 0.4em;
+ overflow: hidden;
+ text-overflow: ellipsis;
}
div.message-part blockquote blockquote
@@ -1348,16 +1195,6 @@ div.message-part blockquote blockquote blockquote
border-right: 2px solid #bb0000;
}
-body.iframe div.message-htmlpart
-{
- margin: 8px;
-}
-
-div.message-htmlpart div.rcmBody
-{
- margin: 8px;
-}
-
#messagebody span.part-notice
{
display: block;
@@ -1564,17 +1401,6 @@ div.hide-headers
outline: none;
}
-#compose-body_tbl,
-#compose-body_tbl td
-{
- border: none;
-}
-
-#compose-body_tbl tr.mceFirst td.mceToolbar
-{
- border-bottom: 1px solid #ccc;
-}
-
#compose-headers
{
width: 100%;
@@ -1863,7 +1689,7 @@ input.from_address
color: #999;
}
-#compose-contacts #quicksearchbar
+#compose-contacts .searchbox
{
top: 2px;
left: 7px;
diff --git a/skins/classic/print.css b/skins/classic/print.css
index d7e332dba..8eac41f53 100644
--- a/skins/classic/print.css
+++ b/skins/classic/print.css
@@ -100,17 +100,12 @@ div.message-part a
color: #0000CC;
}
-div.message-part pre,
-div.message-htmlpart pre,
div.message-part div.pre
{
margin: 0;
padding: 0;
font-family: monospace;
- white-space: -moz-pre-wrap !important;
- white-space: pre-wrap !important;
- white-space: pre;
- word-wrap: break-word; /* IE (and Safari) */
+ font-size: 12px;
}
div.message-part blockquote
@@ -119,8 +114,8 @@ div.message-part blockquote
border-left: 2px solid blue;
border-right: 2px solid blue;
background-color: #F6F6F6;
- margin: 2px 0px;
- padding: 1px 8px 1px 10px;
+ margin: 2px 0;
+ padding: 0 0.4em;
}
div.message-part blockquote blockquote
@@ -164,4 +159,3 @@ p.image-attachment .attachment-links
{
display: none;
}
-
diff --git a/skins/classic/settings.css b/skins/classic/settings.css
index acd0b9fd0..9dda7bb8d 100644
--- a/skins/classic/settings.css
+++ b/skins/classic/settings.css
@@ -11,27 +11,26 @@
background-color: #FFFFA6;
}
-#identities-table,
-#subscription-table,
-#sections-table
-{
- width: 100%;
- table-layout: fixed;
+#folderlist-title a.iconbutton.search {
+ background: url(images/icons/glass.png) no-repeat 0 0;
+ cursor: pointer;
+ position: absolute;
+ right: 4px;
+ top: 2px;
+ width: 16px;
+ text-indent: 50000px;
}
-#subscription-table input
-{
- font: inherit;
+.listsearchbox select {
+ width: 100%;
+ margin: 1px 0;
}
-#subscription-table tbody td,
-#identities-table tbody td,
-#sections-table tbody td
+#identities-table,
+#sections-table
{
- cursor: default;
- text-overflow: ellipsis;
- -o-text-overflow: ellipsis;
- height: 18px;
+ width: 100%;
+ table-layout: fixed;
}
#identities-table tbody tr.readonly td
@@ -39,37 +38,24 @@
font-style: italic;
}
-#subscription-table tr.virtual td
-{
- color: #666;
-}
-
-#subscription-table tr.root td
+#subscription-table li.root
{
- font-size: 10%;
+ font-size: 5%;
+ line-height: 5px;
height: 5px;
+ padding: 2px;
}
-#subscription-table tr.selected td
-{
- color: #FFFFFF;
- background-color: #CC3333;
-}
-
-#subscription-table tr.droptarget td
-{
- background-color: #FFFFA6;
-}
-
-#subscription-table td.name
-{
- width: auto;
+#subscription-table li input {
+ position: absolute;
+ right: 0;
+ top: 2px;
}
-#subscription-table td.subscribed
-{
- text-align: right;
- padding-right: 12px;
+#subscription-table li a {
+ padding-right: 20px;
+ overflow: hidden;
+ text-overflow: ellipsis;
}
#folder-box,
diff --git a/skins/classic/templates/about.html b/skins/classic/templates/about.html
index 429dfcf5f..36fb65739 100644
--- a/skins/classic/templates/about.html
+++ b/skins/classic/templates/about.html
@@ -20,7 +20,7 @@
<div id="license">
<roundcube:object name="aboutcontent" />
<h2 class="sysname">Roundcube Webmail <roundcube:object name="version" /></h2>
-<p class="copyright">Copyright &copy; 2005-2013, The Roundcube Dev Team</p>
+<p class="copyright">Copyright &copy; 2005-2014, The Roundcube Dev Team</p>
<p class="license">This program is free software; you can redistribute it and/or modify
it under the terms of the <a href="http://www.gnu.org/licenses/gpl.html" target="_blank">GNU General Public License</a>
as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.<br/>
diff --git a/skins/classic/templates/addressbook.html b/skins/classic/templates/addressbook.html
index 98658f28b..0af5e4317 100644
--- a/skins/classic/templates/addressbook.html
+++ b/skins/classic/templates/addressbook.html
@@ -61,9 +61,10 @@
<div id="directorylist-title" class="boxtitle"><roundcube:label name="groups" /></div>
<div id="directorylist-content" class="boxlistcontent">
<roundcube:object name="directorylist" id="directorylist" class="treelist" />
+ <roundcube:object name="savedsearchlist" id="savedsearchlist" class="treelist" />
</div>
<div id="directorylist-footer" class="boxfooter">
- <roundcube:button command="group-create" type="link" title="newcontactgroup" class="buttonPas addgroup" classAct="button addgroup" content=" " />
+ <roundcube:button command="group-create" type="link" title="newgroup" class="buttonPas addgroup" classAct="button addgroup" content=" " />
<roundcube:button name="groupmenulink" id="groupmenulink" type="link" title="moreactions" class="button groupactions" onclick="rcmail_ui.show_popup('groupmenu');return false" content=" " />
</div>
</div>
diff --git a/skins/classic/templates/compose.html b/skins/classic/templates/compose.html
index c43adbc27..1515eeb06 100644
--- a/skins/classic/templates/compose.html
+++ b/skins/classic/templates/compose.html
@@ -50,7 +50,7 @@
<div id="compose-contacts">
<div class="boxtitle"><roundcube:label name="contacts" /></div>
<div class="boxlistcontent">
- <div id="quicksearchbar">
+ <div class="searchbox">
<img id="searchmenulink" src="/images/icons/glass.png" width="16" height="16" />
<roundcube:object name="searchform" id="quicksearchbox" form="true" tabindex="13" />
<roundcube:button command="reset-search" id="searchreset" image="/images/icons/reset.gif" title="resetsearch" width="13" height="13" />
@@ -202,8 +202,8 @@
<li><label class="comment"><roundcube:label name="insertresponse" /></label></li>
<roundcube:object name="responseslist" id="responseslist" tagname="ul" itemclass="active" />
<li><label class="comment"><roundcube:label name="manageresponses" /></label></li>
- <li><roundcube:button command="save-response" type="link" label="savenewresponse" classAct="active" unselectable="on" /></li>
- <li><roundcube:button command="responses" type="link" label="editresponses" classAct="active" /></li>
+ <roundcube:button command="save-response" type="link-menuitem" label="newresponse" classAct="active" unselectable="on" />
+ <roundcube:button command="responses" type="link-menuitem" label="editresponses" classAct="active" />
</ul>
</div>
diff --git a/skins/classic/templates/folders.html b/skins/classic/templates/folders.html
index f00c23b22..4d709f8d2 100644
--- a/skins/classic/templates/folders.html
+++ b/skins/classic/templates/folders.html
@@ -19,10 +19,21 @@
<div id="mainscreen">
<div id="folder-manager">
-<div id="folderlist-title" class="boxtitle"><span class="rightalign"><roundcube:label name="subscribed" /></span><roundcube:label name="folders" /></div>
+<div id="folderlist-title" class="boxtitle">
+ <roundcube:label name="folders" />
+ <a href="#folders" class="iconbutton search" title="<roundcube:label name='findfolders' />" tabindex="0"><roundcube:label name='findfolders' /></a>
+</div>
+<div class="listsearchbox">
+ <roundcube:object name="folderfilter" id="folderlist-filter" />
+ <div class="searchbox" role="search">
+ <input type="text" name="q" id="foldersearch" placeholder="<roundcube:label name='findfolders' />" />
+ <a class="iconbutton searchicon"></a>
+ <roundcube:button command="reset-foldersearch" id="folderlistsearch-reset" class="iconbutton reset" title="resetsearch" width="13" height="13" />
+ </div>
+</div>
<div id="folderlist-content" class="boxlistcontent">
- <roundcube:object name="foldersubscription" form="subscriptionform" id="subscription-table" noheader="true"
- cellpadding="1" cellspacing="0" summary="Folder subscription table" class="records-table" />
+ <roundcube:object name="foldersubscription" form="subscriptionform" id="subscription-table"
+ summary="Folder subscription table" class="treelist folderlist" />
</div>
<div id="folderlist-footer" class="boxfooter">
<roundcube:button command="create-folder" type="link" title="createfolder" class="buttonPas addgroup" classAct="button addgroup" content=" " />
diff --git a/skins/classic/templates/mail.html b/skins/classic/templates/mail.html
index 7a169c8ab..7f1e1b8bd 100644
--- a/skins/classic/templates/mail.html
+++ b/skins/classic/templates/mail.html
@@ -24,7 +24,7 @@
<div id="mailboxlist-container">
<div id="mailboxlist-title" class="boxtitle"><roundcube:label name="mailboxlist" /></div>
<div id="mailboxlist-content" class="boxlistcontent">
-<roundcube:object name="mailboxlist" id="mailboxlist" class="treelist" folder_filter="mail" />
+ <roundcube:object name="mailboxlist" id="mailboxlist" class="treelist folderlist" folder_filter="mail" />
</div>
<div id="mailboxlist-footer" class="boxfooter">
<roundcube:button name="mailboxmenulink" id="mailboxmenulink" type="link" title="folderactions" class="button groupactions" onclick="rcmail_ui.show_popup('mailboxmenu');return false" content=" " />
@@ -148,7 +148,7 @@
</ul>
</div>
-<div id="listmenu" class="popupmenu">
+<div id="listmenu" style="display: none">
<roundcube:if condition="env:threads" />
<fieldset class="thinbordered"><legend><roundcube:label name="listmode" /></legend>
<ul class="toolbarmenu">
@@ -200,10 +200,6 @@
</ul>
</fieldset>
<roundcube:endif />
-<div>
- <roundcube:button command="menu-open" id="listmenucancel" type="input" class="button" label="cancel" />
- <roundcube:button command="menu-save" id="listmenusave" type="input" class="button mainaction" label="save" />
-</div>
</div>
<roundcube:object name="messageimportform" id="upload-form" attachmentFieldSize="40" class="popupmenu" />
diff --git a/skins/classic/templates/message.html b/skins/classic/templates/message.html
index 088b7018d..1181b4c16 100644
--- a/skins/classic/templates/message.html
+++ b/skins/classic/templates/message.html
@@ -28,7 +28,7 @@
<div id="mailboxlist-container">
<div id="mailboxlist-title" class="boxtitle"><roundcube:label name="mailboxlist" /></div>
<div class="boxlistcontent">
- <roundcube:object name="mailboxlist" id="mailboxlist" class="treelist" folder_filter="mail" />
+ <roundcube:object name="mailboxlist" id="mailboxlist" class="treelist folderlist" folder_filter="mail" />
</div>
<div class="boxfooter"></div>
</div>
diff --git a/skins/classic/templates/messagepreview.html b/skins/classic/templates/messagepreview.html
index 82414c420..869f03f65 100644
--- a/skins/classic/templates/messagepreview.html
+++ b/skins/classic/templates/messagepreview.html
@@ -28,8 +28,8 @@
<div id="attachmentmenu" class="popupmenu">
<ul class="toolbarmenu">
- <li><roundcube:button command="open-attachment" id="attachmenuopen" type="link" label="open" class="openlink" classAct="openlink active" innerclass="openlink" /></li>
- <li><roundcube:button command="download-attachment" id="attachmenudownload" type="link" label="download" class="downloadlink" classAct="downloadlink active" innerclass="downloadlink" /></li>
+ <roundcube:button command="open-attachment" id="attachmenuopen" type="link-menuitem" label="open" class="openlink" classAct="openlink active" innerclass="openlink" />
+ <roundcube:button command="download-attachment" id="attachmenudownload" type="link-menuitem" label="download" class="downloadlink" classAct="downloadlink active" innerclass="downloadlink" />
<roundcube:container name="attachmentmenu" id="attachmentmenu" />
</ul>
</div>
diff --git a/skins/larry/addressbook.css b/skins/larry/addressbook.css
index bfdd68127..f0ff357b3 100644
--- a/skins/larry/addressbook.css
+++ b/skins/larry/addressbook.css
@@ -14,7 +14,7 @@
position: absolute;
top: 0;
left: 0;
- width: 220px;
+ width: 200px;
bottom: 0;
z-index: 2;
}
@@ -22,7 +22,7 @@
#addressview-right {
position: absolute;
top: 0;
- left: 232px;
+ left: 212px;
right: 0;
bottom: 0;
z-index: 3;
@@ -49,14 +49,14 @@
position: absolute;
top: 0;
left: 0;
- width: 280px;
+ width: 260px;
bottom: 0;
}
#contacts-box {
position: absolute;
top: 0;
- left: 292px;
+ left: 272px;
right: 0;
bottom: 0;
}
@@ -66,6 +66,7 @@
}
#directorylist li a,
+.treelist li.contactsearch a,
#contacts-table .contact td.name {
background-image: url(images/listicons.png);
background-position: -100px 0;
@@ -78,42 +79,66 @@
background-position: 6px -766px;
}
+#directorylist ul li.addressbook a {
+ background-position: 32px -766px;
+}
+
+#directorylist ul ul li.addressbook a {
+ background-position: 58px -766px;
+}
+
#directorylist li.addressbook.selected > a {
+ background-color: transparent;
background-position: 6px -791px;
}
-#directorylist li.addressbook ul.groups li {
- width: 100%;
+#directorylist ul li.addressbook.selected > a {
+ background-position: 32px -791px;
+}
+
+#directorylist ul ul li.addressbook.selected > a {
+ background-position: 58px -791px;
}
#directorylist li.contactgroup a {
+ background-position: 6px -1555px;
+}
+
+#directorylist ul li.contactgroup a {
background-position: 32px -1555px;
}
+#directorylist ul ul li.contactgroup a {
+ background-position: 58px -1555px;
+}
+
+#directorylist ul ul ul li.contactgroup a {
+ background-position: 84px -1555px;
+}
+
#directorylist li.contactgroup.selected a {
background-position: 32px -1579px;
}
-#directorylist li.contactgroup input {
- margin-left: 36px;
+#directorylist ul ul li.contactgroup.selected a {
+ background-position: 58px -1579px;
}
-#directorylist li.contactsearch a {
- background-position: 6px -1651px;
+#directorylist ul ul ul li.contactgroup.selected a {
+ background-position: 84px -1579px;
}
-#directorylist li.contactsearch.selected a {
- background-position: 6px -1675px;
+.treelist li.contactsearch a {
+ background-position: 6px -1651px;
}
-#directorylist li.contactsearch input {
- margin-left: 8px;
+.treelist li.contactsearch.selected a {
+ background-position: 6px -1675px;
}
#directorylist li.addressbook div.collapsed,
#directorylist li.addressbook div.expanded {
top: 15px;
- left: 20px;
}
#contacts-table .contact.readonly td {
@@ -138,56 +163,25 @@
background: url(images/listicons.png) -2px -1180px no-repeat;
}
-/* This padding-left should be equal to the focused border-left + the focused padding-left */
-#contacts-table thead tr td:first-child,
-#contacts-table tbody tr td:first-child {
- border-left: 0;
- padding-left: 36px;
-}
-
-/* because of border-collapse, we make the left border twice what we want it to be - half will be hidden to the left */
-#contacts-table tbody tr.focused > td:first-child {
- border-left: 2px solid #b0ccd7;
- padding-left: 34px;
-}
-
-#contacts-table tbody tr.selected.focused > td:first-child {
- border-left-color: #9ec2d0;
-}
-
#contacts-table .contact td.name {
- background-position: 6px -1603px;
-}
-
-#contacts-table .contact.focused td.name {
background-position: 4px -1603px;
}
-#contacts-table .contact.selected td.name,
-#contacts-table .contact.unfocused td.name {
- background-position: 6px -1627px;
- font-weight: bold;
-}
-
-#contacts-table .contact.selected.focused td.name {
+#contacts-table .contact.selected td.name {
background-position: 4px -1627px;
+ font-weight: bold;
}
#contacts-table .group td.name {
- background-position: 6px -1555px;
-}
-
-#contacts-table .group.focused td.name {
background-position: 4px -1555px;
}
-#contacts-table .group.selected td.name,
-#contacts-table .group.unfocused td.name {
- background-position: 6px -1579px;
+#contacts-table .group.selected td.name {
+ background-position: 4px -1579px;
font-weight: bold;
}
-#contacts-table .group.selected.focused td.name {
+#contacts-table.focus .group.selected.focused td.name {
background-position: 4px -1579px;
}
@@ -232,6 +226,8 @@
float: left;
margin: 0 18px 20px 0;
width: 112px;
+ border: 0;
+ padding: 0;
}
#contactpic {
@@ -254,9 +250,7 @@
#contactpic.droptarget.hover {
background-color: #d9ecf4;
box-shadow: 0 0 5px 2px rgba(71,135,177, 0.9);
- -moz-box-shadow: 0 0 5px 2px rgba(71,135,177, 0.9);
-webkit-box-shadow: 0 0 5px 2px rgba(71,135,177, 0.9);
- -o-box-shadow: 0 0 5px 2px rgba(71,135,177, 0.9);
}
#contactpic.droptarget.active img {
@@ -267,6 +261,10 @@
opacity: 0.05;
}
+#contactphoto .formlinks a[aria-disabled='true'] {
+ visibility: hidden;
+}
+
#contacthead {
border: 0;
margin: 0 16em 1em 0;
@@ -275,6 +273,10 @@
font-size: 12px;
}
+#contacthead > legend {
+ display: none;
+}
+
form #contacthead {
margin-right: 0;
}
diff --git a/skins/larry/editor_content.css b/skins/larry/editor_content.css
deleted file mode 100644
index aabed07b5..000000000
--- a/skins/larry/editor_content.css
+++ /dev/null
@@ -1,31 +0,0 @@
-/* This file contains the CSS data for the editable area(iframe) of TinyMCE */
-
-body, td, pre {
- font-family: "Lucida Grande", Verdana, Arial, Helvetica, sans-serif;
- font-size: 12px;
-}
-
-body {
- background-color: #FFFFFF;
- margin-left: 4px;
- margin-right: 4px;
- margin-top: 2px;
-}
-
-pre
-{
- margin: 0;
- padding: 0;
- white-space: -moz-pre-wrap !important;
- white-space: pre-wrap !important;
- white-space: pre;
- word-wrap: break-word; /* IE (and Safari) */
-}
-
-blockquote
-{
- padding-left: 5px;
- border-left: #1010ff 2px solid;
- margin-left: 5px;
- width: 100%;
-}
diff --git a/skins/larry/images/buttons.png b/skins/larry/images/buttons.png
index df4b3afd5..21298ab59 100644
--- a/skins/larry/images/buttons.png
+++ b/skins/larry/images/buttons.png
Binary files differ
diff --git a/skins/larry/images/listicons.png b/skins/larry/images/listicons.png
index 551639876..6a5edfdb1 100644
--- a/skins/larry/images/listicons.png
+++ b/skins/larry/images/listicons.png
Binary files differ
diff --git a/skins/larry/includes/footer.html b/skins/larry/includes/footer.html
index f421ec5b0..6cd3e62d1 100644
--- a/skins/larry/includes/footer.html
+++ b/skins/larry/includes/footer.html
@@ -6,6 +6,7 @@
var UI = new rcube_mail_ui();
$(document).ready(function(){
UI.set('errortitle', '<roundcube:label name="errortitle" quoting="javascript" />');
+ UI.set('toggleoptions', '<roundcube:label name="toggleadvancedoptions" quoting="javascript" />');
UI.init();
});
diff --git a/skins/larry/includes/header.html b/skins/larry/includes/header.html
index 69e8b8aa6..179b86002 100644
--- a/skins/larry/includes/header.html
+++ b/skins/larry/includes/header.html
@@ -1,5 +1,6 @@
<div id="header">
-<div id="topline">
+<div id="topline" role="banner" aria-labelledby="aria-label-topnav">
+ <h2 id="aria-label-topnav" class="voice"><roundcube:label name="arialabeltopnav" /></h2>
<div class="topleft">
<roundcube:container name="topline-left" id="topline-left" />
<roundcube:button name="about" type="link" label="about" class="about-link" onclick="UI.show_about(this);return false" condition="!env:extwin" />
@@ -21,13 +22,14 @@
<roundcube:if condition="!env:extwin &amp;&amp; !env:framed" />
<div id="topnav">
- <div id="taskbar" class="topright">
- <roundcube:button command="mail" label="mail" class="button-mail" classSel="button-mail button-selected" innerClass="button-inner" />
- <roundcube:button command="addressbook" label="addressbook" class="button-addressbook" classSel="button-addressbook button-selected" innerClass="button-inner" />
- <roundcube:container name="taskbar" id="taskbar" />
- <roundcube:button command="settings" label="settings" class="button-settings" classSel="button-settings button-selected" innerClass="button-inner" />
- <roundcube:button command="logout" label="logout" class="button-logout" classSel="button-logout" innerClass="button-inner" />
- <span class="minmodetoggle"></span>
+ <h2 id="aria-label-tasknav" class="voice"><roundcube:label name="arialabeltasknav" /></h2>
+ <div id="taskbar" class="topright" role="navigation" aria-labelledby="aria-label-tasknav">
+ <roundcube:button command="mail" label="mail" class="button-mail" classSel="button-mail button-selected" innerClass="button-inner" />
+ <roundcube:button command="addressbook" label="addressbook" class="button-addressbook" classSel="button-addressbook button-selected" innerClass="button-inner" />
+ <roundcube:container name="taskbar" id="taskbar" />
+ <roundcube:button command="settings" label="settings" class="button-settings" classSel="button-settings button-selected" innerClass="button-inner" />
+ <roundcube:button command="logout" label="logout" class="button-logout" classSel="button-logout" innerClass="button-inner" />
+ <span class="minmodetoggle" role="presentation"></span>
</div>
<roundcube:object name="logo" src="/images/roundcube_logo.png" id="toplogo" alt="Logo" onclick="if(window.rcmail)rcmail.command('switch-task','mail')" />
</div>
diff --git a/skins/larry/includes/links.html b/skins/larry/includes/links.html
index ce9863a6c..a49e58826 100644
--- a/skins/larry/includes/links.html
+++ b/skins/larry/includes/links.html
@@ -1,4 +1,3 @@
-<meta http-equiv="X-UA-Compatible" content="IE=EDGE" />
<meta name="viewport" content="" id="viewport" />
<link rel="shortcut icon" href="/images/favicon.ico"/>
<link rel="stylesheet" type="text/css" href="/styles.css" />
diff --git a/skins/larry/includes/mailtoolbar.html b/skins/larry/includes/mailtoolbar.html
index ac08a3200..9d66763cd 100644
--- a/skins/larry/includes/mailtoolbar.html
+++ b/skins/larry/includes/mailtoolbar.html
@@ -3,11 +3,11 @@
<roundcube:button command="reply" type="link" class="button reply disabled" classAct="button reply" classSel="button reply pressed" label="reply" title="replytomessage" />
<span class="dropbutton">
<roundcube:button command="reply-all" type="link" class="button reply-all disabled" classAct="button reply-all" classSel="button reply-all pressed" label="replyall" title="replytoallmessage" />
- <span class="dropbuttontip" id="replyallmenulink" onclick="UI.show_popup('replyallmenu');return false"></span>
+ <a href="#reply-all" class="dropbuttontip" id="replyallmenulink" onclick="UI.toggle_popup('replyallmenu',event);return false" aria-haspopup="true" aria-expanded="false" aria-owns="replyallmenu-menu" tabindex="0">Reply-all options</a>
</span>
<span class="dropbutton">
<roundcube:button command="forward" type="link" class="button forward disabled" classAct="button forward" classSel="button forward pressed" label="forward" title="forwardmessage" />
- <span class="dropbuttontip" id="forwardmenulink" onclick="UI.show_popup('forwardmenu');return false"></span>
+ <a href="#forward" class="dropbuttontip" id="forwardmenulink" onclick="UI.toggle_popup('forwardmenu',event);return false" aria-haspopup="true" aria-expanded="false" aria-owns="forwardmenu-menu" tabindex="0">Forwarding options</a>
</span>
<roundcube:button command="delete" type="link" class="button delete disabled" classAct="button delete" classSel="button delete pressed" label="delete" title="deletemessage" />
<roundcube:if condition="template:name == 'message'" />
@@ -15,44 +15,48 @@
<roundcube:button command="print" type="link" class="button print disabled" classAct="button print" classSel="button print pressed" label="print" title="printmessage" />
<roundcube:endif />
<roundcube:container name="toolbar" id="mailtoolbar" />
-<roundcube:button name="markmenulink" id="markmessagemenulink" type="link" class="button markmessage" label="mark" title="markmessages" onclick="UI.show_popup('markmessagemenu');return false" />
-<roundcube:button name="messagemenulink" id="messagemenulink" type="link" class="button more" label="more" title="moreactions" onclick="UI.show_popup('messagemenu');return false" />
+<roundcube:button name="markmenulink" id="markmessagemenulink" type="link" class="button markmessage" label="mark" title="markmessages" onclick="UI.toggle_popup('markmessagemenu',event);return false" aria-haspopup="true" aria-expanded="false" aria-owns="markmessagemenu-menu" />
+<roundcube:button name="messagemenulink" id="messagemenulink" type="link" class="button more" label="more" title="moreactions" onclick="UI.toggle_popup('messagemenu',event);return false" aria-haspopup="true" aria-expanded="false" aria-owns="messagemenu-menu" />
-<div id="forwardmenu" class="popupmenu">
- <ul class="toolbarmenu">
- <li><roundcube:button command="forward-inline" label="forwardinline" prop="sub" classAct="forwardlink active" class="forwardlink" /></li>
- <li><roundcube:button command="forward-attachment" label="forwardattachment" prop="sub" classAct="forwardattachmentlink active" class="forwardattachmentlink" /></li>
+<div id="forwardmenu" class="popupmenu" aria-hidden="true">
+ <h3 id="aria-label-forwardmenu" class="voice"><roundcube:label name="arialabelforwardingoptions" /></h3>
+ <ul id="forwardmenu-menu" class="toolbarmenu" role="menu" aria-labelledby="aria-label-forwardmenu">
+ <roundcube:button type="link-menuitem" command="forward-inline" label="forwardinline" prop="sub" classAct="forwardlink active" class="forwardlink" />
+ <roundcube:button type="link-menuitem" command="forward-attachment" label="forwardattachment" prop="sub" classAct="forwardattachmentlink active" class="forwardattachmentlink" />
<roundcube:container name="forwardmenu" id="forwardmenu" />
</ul>
</div>
-<div id="replyallmenu" class="popupmenu">
- <ul class="toolbarmenu">
- <li><roundcube:button command="reply-all" label="replyall" prop="sub" class="replyalllink" classAct="replyalllink active" /></li>
- <li><roundcube:button command="reply-list" label="replylist" prop="sub" class="replylistlink" classAct="replylistlink active" /></li>
+<div id="replyallmenu" class="popupmenu" aria-hidden="true">
+ <h3 id="aria-label-replyallmenu" class="voice"><roundcube:label name="arialabelreplyalloptions" /></h3>
+ <ul id="replyallmenu-menu" class="toolbarmenu" role="menu" aria-labelledby="aria-label-replyallmenu">
+ <roundcube:button type="link-menuitem" command="reply-all" label="replyall" prop="sub" class="replyalllink" classAct="replyalllink active" />
+ <roundcube:button type="link-menuitem" command="reply-list" label="replylist" prop="sub" class="replylistlink" classAct="replylistlink active" />
<roundcube:container name="replyallmenu" id="replyallmenu" />
</ul>
</div>
-<div id="messagemenu" class="popupmenu">
- <ul class="toolbarmenu iconized">
- <li><roundcube:button command="print" label="printmessage" class="icon" classAct="icon active" innerclass="icon print" /></li>
- <li><roundcube:button command="download" label="emlsave" class="icon" classAct="icon active" innerclass="icon download" /></li>
- <li><roundcube:button command="edit" prop="new" label="editasnew" class="icon" classAct="icon active" innerclass="icon edit" /></li>
- <li><roundcube:button command="viewsource" label="viewsource" class="icon" classAct="icon active" innerclass="icon viewsource" /></li>
- <li><roundcube:button command="move" label="moveto" class="icon" classAct="icon active" innerclass="icon move folder-selector-link" /></li>
- <li><roundcube:button command="copy" label="copyto" class="icon" classAct="icon active" innerclass="icon copy folder-selector-link" /></li>
- <li><roundcube:button command="open" label="openinextwin" target="_blank" class="icon" classAct="icon active" innerclass="icon extwin" /></li>
+<div id="messagemenu" class="popupmenu" aria-hidden="true">
+ <h3 id="aria-label-messagemenu" class="voice"><roundcube:label name="arialabelmoremessageactions" /></h3>
+ <ul id="messagemenu-menu" class="toolbarmenu iconized" role="menu" aria-labelledby="aria-label-messagemenu">
+ <roundcube:button type="link-menuitem" command="print" label="printmessage" class="icon" classAct="icon active" innerclass="icon print" />
+ <roundcube:button type="link-menuitem" command="download" label="emlsave" class="icon" classAct="icon active" innerclass="icon download" />
+ <roundcube:button type="link-menuitem" command="edit" prop="new" label="editasnew" class="icon" classAct="icon active" innerclass="icon edit" />
+ <roundcube:button type="link-menuitem" command="viewsource" label="viewsource" class="icon" classAct="icon active" innerclass="icon viewsource" />
+ <roundcube:button type="link-menuitem" command="move" label="moveto" class="icon" classAct="icon active" innerclass="icon move folder-selector-link" />
+ <roundcube:button type="link-menuitem" command="copy" label="copyto" class="icon" classAct="icon active" innerclass="icon copy folder-selector-link" />
+ <roundcube:button type="link-menuitem" command="open" label="openinextwin" target="_blank" class="icon" classAct="icon active" innerclass="icon extwin" />
<roundcube:container name="messagemenu" id="messagemenu" />
</ul>
</div>
-<div id="markmessagemenu" class="popupmenu">
- <ul class="toolbarmenu iconized">
- <li><roundcube:button command="mark" prop="read" label="markread" classAct="icon active" class="icon" innerclass="icon read" /></li>
- <li><roundcube:button command="mark" prop="unread" label="markunread" classAct="icon active" class="icon" innerclass="icon unread" /></li>
- <li><roundcube:button command="mark" prop="flagged" label="markflagged" classAct="icon active" class="icon" innerclass="icon flagged" /></li>
- <li><roundcube:button command="mark" prop="unflagged" label="markunflagged" classAct="icon active" class="icon" innerclass="icon unflagged" /></li>
+<div id="markmessagemenu" class="popupmenu" aria-hidden="true">
+ <h3 id="aria-label-markmessagemenu" class="voice"><roundcube:label name="arialabelmarkmessagesas" /></h3>
+ <ul id="markmessagemenu-menu" class="toolbarmenu iconized" role="menu" aria-labelledby="aria-label-markmessagemenu">
+ <roundcube:button type="link-menuitem" command="mark" prop="read" label="markread" classAct="icon active" class="icon" innerclass="icon read" />
+ <roundcube:button type="link-menuitem" command="mark" prop="unread" label="markunread" classAct="icon active" class="icon" innerclass="icon unread" />
+ <roundcube:button type="link-menuitem" command="mark" prop="flagged" label="markflagged" classAct="icon active" class="icon" innerclass="icon flagged" />
+ <roundcube:button type="link-menuitem" command="mark" prop="unflagged" label="markunflagged" classAct="icon active" class="icon" innerclass="icon unflagged" />
<roundcube:container name="markmenu" id="markmessagemenu" />
</ul>
</div>
diff --git a/skins/larry/includes/settingstabs.html b/skins/larry/includes/settingstabs.html
index e62695848..d43e8f075 100644
--- a/skins/larry/includes/settingstabs.html
+++ b/skins/larry/includes/settingstabs.html
@@ -1,7 +1,9 @@
-<div id="settings-sections" class="uibox listbox">
-<h2 class="boxtitle"><roundcube:label name="settings" /></h2>
+<div id="settings-sections" class="uibox listbox" role="navigation" aria-labelledby="aria-label-settingstabs">
+<h2 class="boxtitle" id="aria-label-settingstabs"><roundcube:label name="settings" /></h2>
<div id="settings-tabs" class="scroller">
- <roundcube:object name="settingstabs" class="listitem" />
+ <ul class="listing iconized">
+ <roundcube:object name="settingstabs" class="listitem" tagname="li" />
+ </ul>
<roundcube:container name="tabs" id="settings-tabs" />
</div>
</div>
diff --git a/skins/larry/mail.css b/skins/larry/mail.css
index b9f24b8d0..7eb324254 100644
--- a/skins/larry/mail.css
+++ b/skins/larry/mail.css
@@ -14,7 +14,7 @@
position: absolute;
top: 0;
left: 0;
- width: 220px;
+ width: 200px;
bottom: 0;
z-index: 2;
}
@@ -22,7 +22,7 @@
#mailview-right {
position: absolute;
top: 0;
- left: 232px;
+ left: 212px;
right: 0;
bottom: 0;
z-index: 3;
@@ -38,6 +38,9 @@
left: 0;
right: 0;
bottom: 0px;
+}
+
+html.ie #mailview-top {
overflow: visible; /* fixes display issues of fixed list header in IE */
}
@@ -92,6 +95,7 @@ html>/**/body #messagelist {
background: -ms-linear-gradient(top, #ebebeb 0%, #c6c6c6 100%);
background: linear-gradient(top, #ebebeb 0%, #c6c6c6 100%);
border-radius: 0 0 4px 4px;
+ white-space: nowrap;
}
#messagelistfooter.rightalign {
@@ -133,227 +137,32 @@ a.iconbutton.threadmode.selected {
background-position: -26px -497px;
}
-#mailboxlist li.mailbox {
- position: relative;
- background-repeat: no-repeat;
- background-position: 6px 2px;
-}
-
#mailboxlist > li:first-child {
- border-radius: 4px 4px 0 0;
border-top: 0;
}
-#mailboxlist li.mailbox a {
- padding-left: 36px;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
- background-image: url(images/listicons.png);
- background-repeat: no-repeat;
- background-position: 6px 3px;
+html.mozilla #mailboxlist > li:first-child {
+ border-radius: 4px 4px 0 0;
}
#mailboxlist li.mailbox.unread > a {
padding-right: 36px;
}
-#mailboxlist li.mailbox.selected > a {
- background-position: 6px -21px;
-}
-
-#mailboxlist li.mailbox.inbox > a {
- background-position: 6px -189px;
-}
-
-#mailboxlist li.mailbox.inbox.selected > a {
- background-position: 6px -213px;
-}
-
-#mailboxlist li.mailbox.drafts > a {
- background-position: 6px -238px;
-}
-
-#mailboxlist li.mailbox.drafts.selected > a {
- background-position: 6px -262px;
-}
-
-#mailboxlist li.mailbox.sent > a {
- background-position: 6px -286px;
-}
-
-#mailboxlist li.mailbox.sent.selected > a {
- background-position: 6px -310px;
-}
-
-#mailboxlist li.mailbox.junk > a {
- background-position: 6px -334px;
-}
-
-#mailboxlist li.mailbox.junk.selected > a {
- background-position: 6px -358px;
-}
-
-#mailboxlist li.mailbox.trash > a {
- background-position: 6px -382px;
-}
-
-#mailboxlist li.mailbox.trash.selected > a {
- background-position: 6px -406px;
-}
-
-#mailboxlist li.mailbox.trash.empty > a {
- background-position: 6px -1924px;
-}
-
-#mailboxlist li.mailbox.trash.empty.selected > a {
- background-position: 6px -1948px;
-}
-
-#mailboxlist li.mailbox.archive > a {
- background-position: 6px -1699px;
-}
-
-#mailboxlist li.mailbox.archive.selected > a {
- background-position: 6px -1723px;
-}
-
-#mailboxlist li.mailbox ul li.drafts > a {
- background-position: 23px -238px;
-}
-
-#mailboxlist li.mailbox ul li.drafts.selected > a {
- background-position: 23px -262px;
-}
-
-#mailboxlist li.mailbox ul li.sent > a {
- background-position: 23px -286px;
-}
-
-#mailboxlist li.mailbox ul li.sent.selected > a {
- background-position: 23px -310px;
-}
-
-#mailboxlist li.mailbox ul li.junk > a {
- background-position: 23px -334px;
-}
-
-#mailboxlist li.mailbox ul li.junk.selected > a {
- background-position: 23px -358px;
-}
-
-#mailboxlist li.mailbox ul li.trash > a {
- background-position: 23px -382px;
-}
-
-#mailboxlist li.mailbox ul li.trash.selected > a {
- background-position: 23px -406px;
-}
-
-#mailboxlist li.mailbox ul li.trash.empty > a {
- background-position: 23px -1924px;
-}
-
-#mailboxlist li.mailbox ul li.trash.empty.selected > a {
- background-position: 23px -1948px;
-}
-
-#mailboxlist li.mailbox ul li.archive > a {
- background-position: 23px -1699px;
-}
-
-#mailboxlist li.mailbox ul li.archive.selected > a {
- background-position: 23px -1723px;
-}
-
#mailboxlist li.unread {
font-weight: bold;
}
-#mailboxlist li.virtual > a {
- color: #aaa;
-}
-
#mailboxlist li.recent > a {
color: #017cb4;
}
-#mailboxlist li.mailbox div.treetoggle {
- top: 13px;
- left: 19px;
-}
-
-#mailboxlist li.mailbox ul li:last-child {
- border-bottom: 0;
-}
-
-/* nested mailboxes */
-
-#mailboxlist li.mailbox ul {
- list-style: none;
- margin: 0;
- padding: 0;
- border-top: 1px solid #bbd3da;
-}
-
-#mailboxlist li.mailbox ul li a {
- padding-left: 52px; /* 36 + 1 x 16 */
- background-position: 22px -93px; /* 6 + 1 x 16 */
-}
-#mailboxlist li.mailbox ul li.selected > a {
- background-position: 22px -117px;
-}
-#mailboxlist li.mailbox ul li div.treetoggle {
- left: 33px;
- top: 14px;
-}
-
-#mailboxlist li.mailbox ul ul li.mailbox a {
- padding-left: 68px; /* 2x */
- background-position: 38px -93px;
-}
-#mailboxlist li.mailbox ul ul li.selected > a {
- background-position: 38px -117px;
-}
-#mailboxlist li.mailbox ul ul li div.treetoggle {
- left: 48px;
-}
-
-#mailboxlist li.mailbox ul ul ul li.mailbox a {
- padding-left: 84px; /* 3x */
- background-position: 54px -93px;
-}
-#mailboxlist li.mailbox ul ul ul li.selected > a {
- background-position: 54px -117px;
-}
-#mailboxlist li.mailbox ul ul ul li div.treetoggle {
- left: 64px;
-}
-
-#mailboxlist li.mailbox ul ul ul ul li.mailbox a {
- padding-left: 100px; /* 4x */
- background-position: 70px -93px;
-}
-#mailboxlist li.mailbox ul ul ul ul li.selected > a {
- background-position: 70px -117px;
-}
-#mailboxlist li.mailbox ul ul ul ul li div.treetoggle {
- left: 80px;
-}
-
-/* indent folders on levels > 4 */
-#mailboxlist li.mailbox ul ul ul ul ul li {
- padding-left: 16px;
-}
-#mailboxlist li.mailbox ul ul ul ul ul li div.treetoggle {
- left: 96px;
-}
-
#mailboxlist li.mailbox .unreadcount {
position: absolute;
top: 3px;
right: 6px;
min-width: 1.8em;
+ line-height: 15px;
padding: 2px 4px;
background: #82acb5;
background: -moz-linear-gradient(top, #82acb5 0%, #6a939f 100%);
@@ -362,9 +171,7 @@ a.iconbutton.threadmode.selected {
background: -ms-linear-gradient(top, #82acb5 0%, #6a939f 100%);
background: linear-gradient(top, #82acb5 0%, #6a939f 100%);
box-shadow: inset 0 1px 1px 0 #536d72;
- -o-box-shadow: inset 0 1px 1px 0 #536d72;
-webkit-box-shadow: inset 0 1px 1px 0 #536d72;
- -moz-box-shadow: inset 0 1px 1px 0 #536d72;
border-radius: 9px;
color: #fff;
text-align: center;
@@ -380,9 +187,7 @@ a.iconbutton.threadmode.selected {
background: -ms-linear-gradient(top, #005d76 0%, #004558 100%);
background: linear-gradient(top, #005d76 0%, #004558 100%);
box-shadow: inset 0 1px 1px 0 #003645;
- -o-box-shadow: inset 0 1px 1px 0 #003645;
-webkit-box-shadow: inset 0 1px 1px 0 #003645;
- -moz-box-shadow: inset 0 1px 1px 0 #003645;
}
#mailboxlist li.mailbox.recent > a .unreadcount {
@@ -393,9 +198,7 @@ a.iconbutton.threadmode.selected {
background: -ms-linear-gradient(top, #017cb4 0%, #006ca4 100%);
background: linear-gradient(top, #017cb4 0%, #006ca4 100%);
box-shadow: inset 0 1px 1px 0 #005080;
- -o-box-shadow: inset 0 1px 1px 0 #005080;
-webkit-box-shadow: inset 0 1px 1px 0 #005080;
- -moz-box-shadow: inset 0 1px 1px 0 #005080;
}
#searchfilter {
@@ -437,7 +240,7 @@ a.iconbutton.threadmode.selected {
#mailpreviewtoggle {
display: block;
position: absolute;
- top: 6px;
+ top: 7px;
right: 4px;
width: 20px;
height: 18px;
@@ -459,66 +262,54 @@ table.messagelist.fixedcopy {
z-index: 2;
}
-.messagelist thead td:first-child {
+.messagelist thead th:first-child {
border-radius: 4px 0 0 0; /* for Chrome */
}
-.messagelist tr td.attachment,
-.messagelist tr td.threads,
-.messagelist tr td.status,
-.messagelist tr td.flag,
-.messagelist tr td.priority {
+.messagelist tr > .attachment,
+.messagelist tr > .threads,
+.messagelist tr > .status,
+.messagelist tr > .flag,
+.messagelist tr > .priority {
width: 20px;
- padding: 2px 3px;
-}
-
-.webkit .messagelist tr td.attachment,
-.webkit .messagelist tr td.threads,
-.webkit .messagelist tr td.status,
-.webkit .messagelist tr td.flag,
-.webkit .messagelist tr td.priority {
- width: 26px;
+ padding: 2px 3px !important;
}
-.messagelist tr td.threads {
+.messagelist tr > .threads {
width: 26px;
}
-.webkit .messagelist tr td.threads {
- width: 30px;
-}
-
-.messagelist tr td.threads,
-.messagelist tr td.threads + td {
+.messagelist tr > .threads + td,
+.messagelist tr > .threads + th {
border-left: 0;
}
-.messagelist tr td.size {
+.messagelist tr > .size {
width: 60px;
text-align: right;
}
-.messagelist thead tr td.size {
+.messagelist thead tr th.size {
text-align: left;
}
-.messagelist tr td.fromto,
-.messagelist tr td.from,
-.messagelist tr td.to,
-.messagelist tr td.cc,
-.messagelist tr td.replyto {
+.messagelist tr > .fromto,
+.messagelist tr > .from,
+.messagelist tr > .to,
+.messagelist tr > .cc,
+.messagelist tr > .replyto {
width: 200px;
}
-.messagelist tr td.date {
+.messagelist tr > .date {
width: 155px;
}
-.messagelist tr td.folder {
+.messagelist tr > .folder {
width: 135px;
}
-.messagelist tr td.hidden {
+.messagelist tr > .hidden {
display: none;
}
@@ -535,19 +326,22 @@ table.messagelist.fixedcopy {
/* background-color: #fff; */
}
+.messagelist tr.flagged th,
.messagelist tr.flagged td,
.messagelist tr.flagged td a {
color: #f30;
}
-.messagelist thead tr td.sortedASC a,
-.messagelist thead tr td.sortedDESC a {
+.messagelist thead tr th.sortedASC a,
+.messagelist thead tr th.sortedDESC a {
color: #004458;
text-decoration: underline;
- background: url(images/listicons.png) right -912px no-repeat;
+ background-image: url(images/listicons.png);
+ background-repeat: no-repeat;
+ background-position: right -912px;
}
-.messagelist thead tr td.sortedASC a {
+.messagelist thead tr th.sortedASC a {
background-position: right -944px;
}
@@ -569,39 +363,41 @@ table.messagelist.fixedcopy {
cursor: pointer;
}
-.messagelist tr td.flag span,
-.messagelist tr td.status span,
-.messagelist tr td.attachment span,
-.messagelist tr td.priority span {
+.messagelist tr > .flag span,
+.messagelist tr > .status span,
+.messagelist tr > .attachment span,
+.messagelist tr > .priority span {
display: block;
width: 20px;
+ text-indent: -5000px;
+ overflow: hidden;
}
.messagelist tr td div.collapsed,
.messagelist tr td div.expanded,
-.messagelist tr td.threads div.listmenu,
-.messagelist tr td.attachment span.attachment,
-.messagelist tr td.attachment span.report,
-.messagelist tr td.priority span.priority,
-.messagelist tr td.priority span.prio1,
-.messagelist tr td.priority span.prio2,
-.messagelist tr td.priority span.prio3,
-.messagelist tr td.priority span.prio4,
-.messagelist tr td.priority span.prio5,
-.messagelist tr td.flag span.flagged,
-.messagelist tr td.flag span.unflagged,
-.messagelist tr td.flag span.unflagged:hover,
-.messagelist tr td.status span.status,
-.messagelist tr td.status span.msgicon,
-.messagelist tr td.status span.deleted,
-.messagelist tr td.status span.unread,
-.messagelist tr td.status span.unreadchildren,
-.messagelist tr td.subject span.msgicon,
-.messagelist tr td.subject span.deleted,
-.messagelist tr td.subject span.unread,
-.messagelist tr td.subject span.replied,
-.messagelist tr td.subject span.forwarded,
-.messagelist tr td.subject span.unreadchildren {
+.messagelist tr > .threads .listmenu,
+.messagelist tr > .attachment span.attachment,
+.messagelist tr > .attachment span.report,
+.messagelist tr > .priority span.priority,
+.messagelist tr > .priority span.prio1,
+.messagelist tr > .priority span.prio2,
+.messagelist tr > .priority span.prio3,
+.messagelist tr > .priority span.prio4,
+.messagelist tr > .priority span.prio5,
+.messagelist tr > .flag span.flagged,
+.messagelist tr > .flag span.unflagged,
+.messagelist tr > .flag span.unflagged:hover,
+.messagelist tr > .status span.status,
+.messagelist tr > .status span.msgicon,
+.messagelist tr > .status span.deleted,
+.messagelist tr > .status span.unread,
+.messagelist tr > .status span.unreadchildren,
+.messagelist tr > .subject span.msgicon,
+.messagelist tr > .subject span.deleted,
+.messagelist tr > .subject span.unread,
+.messagelist tr > .subject span.replied,
+.messagelist tr > .subject span.forwarded,
+.messagelist tr > .subject span.unreadchildren {
display: inline-block;
vertical-align: middle;
height: 18px;
@@ -614,16 +410,16 @@ table.messagelist.fixedcopy {
background-position: 0 -996px;
}
-.messagelist thead tr td.attachment span.attachment {
- background-position: -24px -997px;
+.messagelist thead tr th.attachment span.attachment {
+ background-position: -24px -996px;
}
.messagelist tbody tr td.attachment span.report {
background-position: -24px -1116px;
}
-.messagelist thead tr td.priority span.priority {
- background-position: -24px -1845px;
+.messagelist thead tr th.priority span.priority {
+ background-position: -25px -1845px;
}
.messagelist tr td.priority span.prio5 {
@@ -646,15 +442,15 @@ table.messagelist.fixedcopy {
background-position: 0 -1036px;
}
-.messagelist thead tr td.flag span.flagged {
- background-position: -22px -1036px;
+.messagelist thead tr th.flag span.flagged {
+ background-position: -22px -1037px;
}
-.messagelist tr td.status span.msgicon:hover {
- background-position: -23px -1056px;
+.messagelist tr:hover td.status span.msgicon {
+ background-position: -23px -1057px;
}
-.messagelist tr td.flag span.unflagged:hover {
+.messagelist tr:hover td.flag span.unflagged {
background-position: -23px -1076px;
}
@@ -688,19 +484,19 @@ table.messagelist.fixedcopy {
}
*/
.messagelist tr td.status span.deleted,
-.messagelist tr td.status span.deleted:hover,
+.messagelist tr:hover td.status span.deleted,
.messagelist tr td.subject span.deleted {
- background-position: -22px -1096px;
+ background-position: -21px -1096px;
}
.messagelist tr td.status span.status,
.messagelist tr td.status span.unread,
.messagelist tr td.subject span.unread,
.messagelist tr td.status span.unread:hover {
- background-position: 0 -1016px;
+ background-position: 0 -1017px;
}
-.messagelist thead tr td.status span.status {
+.messagelist thead tr th.status span.status {
background-position: -23px -1017px;
}
@@ -714,13 +510,23 @@ table.messagelist.fixedcopy {
cursor: pointer;
}
-.messagelist tr td.threads div.listmenu {
- background-position: 0 -976px;
+.messagelist tr th.threads .listmenu {
+ background-position: 4px -972px;
cursor: pointer;
- width: 26px;
+ width: 24px;
+ height: 21px;
+ overflow: hidden;
+ text-indent: -5000px;
+ margin: -3px -5px -2px -6px;
+ padding: 3px 5px 2px 6px;
}
-.messagelist thead tr td.subject,
+.messagelist tr th.threads .listmenu:focus {
+ background-color: rgba(73,180,210,0.7);
+ outline: none;
+}
+
+.messagelist thead tr th.subject,
.messagelist tbody tr td.subject {
width: 99%;
white-space: nowrap;
@@ -763,7 +569,7 @@ table.messagelist.fixedcopy {
#messagecontframe {
border: 0;
- border-radius: 4px 4px 0 0;
+ border-radius: 4px;
}
#messagecontent {
@@ -812,7 +618,7 @@ h2.subject {
h3.subject {
font-size: 14px;
- margin: 0 12em 0 0;
+ margin: 0 15em 0 0;
padding: 8px 8px 4px 8px;
white-space: nowrap;
overflow: hidden;
@@ -904,6 +710,16 @@ h3.subject {
border-radius: 3px 0 0 0; /* for Opera */
}
+.moreheaderstoggle:focus {
+ background: #f2f2f2;
+ background: -moz-linear-gradient(left, #66bcd9 0, #49b3d2 100%);
+ background: -webkit-gradient(linear, left top, right top, color-stop(0,#66bcd9), color-stop(100%,#49b3d2));
+ background: -o-linear-gradient(left, #66bcd9 0, #49b3d2 100%);
+ background: -ms-linear-gradient(left, #66bcd9 0, #49b3d2 100%);
+ background: linear-gradient(left, #66bcd9 0, #49b3d2 100%);
+ border-right-color: #149cc5;
+}
+
.moreheaderstoggle .iconlink {
display: inline-block;
position: absolute;
@@ -946,10 +762,8 @@ div.hide-headers {
border: 1px solid #ccc;
border-radius: 4px;
background: #fdfdfd;
- -moz-box-shadow: inset 0 0 1px 1px rgba(0,0,0, 0.1);
- -webkit-box-shadow: inset 0 0 1px 1px rgba(0,0,0, 0.1);
- -o-box-shadow: inset 0 0 1px 1px rgba(0,0,0, 0.1);
box-shadow: inset 0 0 1px 1px rgba(0,0,0, 0.1);
+ -webkit-box-shadow: inset 0 0 1px 1px rgba(0,0,0, 0.1);
}
#headers-source {
@@ -1036,7 +850,6 @@ div.hide-headers {
}
#messageheader .pagenav .countdisplay {
- min-width: 0;
padding-right: 0.5em;
white-space: nowrap;
}
@@ -1102,16 +915,11 @@ div.message-partheaders {
border-top: 0;
}
-div.message-part pre,
-div.message-htmlpart pre,
div.message-part div.pre {
margin: 0;
padding: 0;
font-family: monospace;
font-size: 12px;
- white-space: -moz-pre-wrap !important;
- white-space: pre-wrap !important;
- white-space: pre;
}
div.message-part span.sig {
@@ -1123,8 +931,10 @@ div.message-part blockquote {
border-left: 2px solid blue;
border-right: 2px solid blue;
background-color: #F6F6F6;
- margin: 2px 0 2px 0;
- padding: 1px 8px 1px 10px;
+ margin: 2px 0;
+ padding: 0 0.4em;
+ overflow: hidden;
+ text-overflow: ellipsis;
}
div.message-part blockquote blockquote {
@@ -1253,14 +1063,14 @@ div.message-partheaders .headers-table td.header {
position: absolute;
top: 0;
left: 0;
- width: 250px;
+ width: 200px;
bottom: 0;
}
#composeview-right {
position: absolute;
top: 0;
- left: 262px;
+ left: 212px;
right: 0;
bottom: 0;
}
@@ -1273,21 +1083,8 @@ div.message-partheaders .headers-table td.header {
bottom: 0;
}
-#composequicksearch {
- position: relative;
- padding: 4px;
- background: #c7e3ef;
-}
-
-#composequicksearch .searchbox input {
- width: 100%;
- height: 26px;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
-}
-
-#composequicksearch #searchmenulink {
- width: 15px;
+#compose-contacts .listsearchbox {
+ display: block;
}
#compose-contacts #directorylist {
@@ -1318,13 +1115,19 @@ div.message-partheaders .headers-table td.header {
margin-left: 0.5em;
}
-#compose-contacts li a, #contacts-table td {
- background: url(images/listicons.png) -100px 0 no-repeat;
+#compose-contacts li a,
+#contacts-table td {
+ background-image: url(images/listicons.png);
+ background-position: -100px 0;
+ background-repeat: no-repeat;
overflow: hidden;
- padding-left: 36px;
text-overflow: ellipsis;
}
+#compose-contacts li a {
+ padding-left: 36px;
+}
+
#contacts-table td.contactgroup a {
color: #376572;
text-decoration: none;
@@ -1346,6 +1149,7 @@ div.message-partheaders .headers-table td.header {
background-position: 6px -766px;
}
+#compose-contacts li.addressbook a:focus,
#compose-contacts li.addressbook.selected a {
background-position: 6px -791px;
}
@@ -1354,7 +1158,6 @@ div.message-partheaders .headers-table td.header {
background-position: 6px -1555px;
}
-#contacts-table tr.unfocused td.contactgroup,
#contacts-table tr.selected td.contactgroup {
background-position: 6px -1579px;
}
@@ -1363,7 +1166,6 @@ div.message-partheaders .headers-table td.header {
background-position: 6px -1603px;
}
-#contacts-table tr.unfocused td.contact,
#contacts-table tr.selected td.contact {
background-position: 6px -1627px;
}
@@ -1443,8 +1245,6 @@ div.message-partheaders .headers-table td.header {
.compose-headers td input {
width: 100%;
resize: none;
- font-family: "Lucida Grande", Verdana, Arial, Helvetica, sans-serif;
- font-size: 11px;
}
#compose-cc, #compose-bcc, #compose-replyto, #compose-followupto {
@@ -1457,9 +1257,7 @@ div.message-partheaders .headers-table td.header {
white-space: normal;
border-top: 1px solid #dfdfdf;
box-shadow: inset 0 1px 0 0 #fff;
- -o-box-shadow: inset 0 1px 0 0 #fff;
-webkit-box-shadow: inset 0 1px 0 0 #fff;
- -moz-box-shadow: inset 0 1px 0 0 #fff;
}
.composeoption {
@@ -1514,17 +1312,13 @@ div.message-partheaders .headers-table td.header {
font-size: 9pt;
outline: none;
box-shadow: inset 0 0 2px 1px rgba(0,0,0, 0.2);
- -moz-box-shadow: inset 0 0 2px 1px rgba(0,0,0, 0.2);
-webkit-box-shadow: inset 0 0 2px 1px rgba(0,0,0, 0.2);
- -o-box-shadow: inset 0 0 2px 1px rgba(0,0,0, 0.2);
}
#composebody:active,
#composebody:focus {
box-shadow: inset 0 0 3px 2px rgba(71,135,177, 0.9);
- -moz-box-shadow: inset 0 0 3px 2px rgba(71,135,177, 0.9);
-webkit-box-shadow: inset 0 0 3px 2px rgba(71,135,177, 0.9);
- -o-box-shadow: inset 0 0 3px 2px rgba(71,135,177, 0.9);
}
#compose-attachments {
@@ -1551,17 +1345,13 @@ div.message-partheaders .headers-table td.header {
#compose-attachments.droptarget.active {
border-color: #019bc6;
box-shadow: 0 0 3px 2px rgba(71,135,177, 0.5);
- -moz-box-shadow: 0 0 3px 2px rgba(71,135,177, 0.5);
-webkit-box-shadow: 0 0 3px 2px rgba(71,135,177, 0.5);
- -o-box-shadow: 0 0 3px 2px rgba(71,135,177, 0.5);
}
#compose-attachments.droptarget.hover {
background-color: #d9ecf4;
box-shadow: 0 0 5px 2px rgba(71,135,177, 0.9);
- -moz-box-shadow: 0 0 5px 2px rgba(71,135,177, 0.9);
-webkit-box-shadow: 0 0 5px 2px rgba(71,135,177, 0.9);
- -o-box-shadow: 0 0 5px 2px rgba(71,135,177, 0.9);
}
#composeview-bottom .formbuttons.floating {
@@ -1572,16 +1362,13 @@ div.message-partheaders .headers-table td.header {
padding-bottom: 8px;
}
-.defaultSkin table.mceLayout,
-.defaultSkin table.mceLayout tr.mceLast td {
- border: 0 !important;
-}
-
-.defaultSkin td.mceToolbar {
+#composebodycontainer .mce-tinymce {
border: 0 !important;
+ margin-top: 1px;
}
-.defaultSkin table.mceLayout tr.mceFirst td {
+#composebodycontainer .mce-panel {
+ border-color: #ccc !important;
background: #f0f0f0;
}
diff --git a/skins/larry/print.css b/skins/larry/print.css
index a56c9b938..22d6c5288 100644
--- a/skins/larry/print.css
+++ b/skins/larry/print.css
@@ -91,16 +91,11 @@ div.message-part a {
color: #00c;
}
-div.message-part pre,
-div.message-htmlpart pre,
div.message-part div.pre {
margin: 0;
padding: 0;
font-family: monospace;
- white-space: -moz-pre-wrap !important;
- white-space: pre-wrap !important;
- white-space: pre;
- word-wrap: break-word; /* IE (and Safari) */
+ font-size: 12px;
}
div.message-part blockquote {
@@ -108,8 +103,8 @@ div.message-part blockquote {
border-left: 2px solid blue;
border-right: 2px solid blue;
background-color: #F6F6F6;
- margin: 0.5em 0em 0.5em 0em;
- padding: 0.25em 1em 0.25em 1em;
+ margin: 2px 0;
+ padding: 0 0.4em;
}
div.message-part blockquote blockquote {
diff --git a/skins/larry/settings.css b/skins/larry/settings.css
index 675ef9973..51bf12f88 100644
--- a/skins/larry/settings.css
+++ b/skins/larry/settings.css
@@ -45,7 +45,7 @@
#preferences-frame {
border: 0;
- border-radius: 4px 4px 0 0;
+ border-radius: 4px;
}
#preferences-details fieldset.advanced legend {
@@ -70,7 +70,7 @@
width: 20px;
height: 18px;
background: url('images/listicons.png') 0 -1157px no-repeat;
- text-indent: 1000px;
+ text-indent: -5000px;
overflow: hidden;
}
@@ -78,9 +78,10 @@
background-position: -24px -1137px;
}
-#sections-table tbody td.section,
-#settings-sections span.listitem a,
-#settings-sections span.tablink a {
+#sections-table tbody td,
+#sections-table .listitem span,
+#settings-sections .listitem a,
+#settings-sections .tablink a {
padding-left: 36px;
background-image: url(images/listicons.png);
background-position: -100px 0;
@@ -88,120 +89,144 @@
}
/* note: support span.tablink because this is used by plugins */
-#settings-sections span.listitem a,
-#settings-sections span.tablink a {
+#settings-sections .listitem a,
+#settings-sections .tablink a {
background-position: 6px -862px;
}
-#settings-sections span.selected a,
-#settings-sections span.tablink.selected a {
+#settings-sections .selected a,
+#settings-sections .tablink.selected a {
background-position: 6px -887px;
}
-#settings-sections span.preferences a {
+#settings-sections .preferences a {
background-position: 6px -431px;
}
-#settings-sections span.preferences.selected a {
+#settings-sections .preferences.selected a {
background-position: 6px -455px;
}
-#settings-sections span.folders a,
-#sections-table #rcmrowfolders td.section {
+#settings-sections .folders a {
background-position: 6px 2px;
}
-#settings-sections span.folders.selected a,
-#sections-table #rcmrowfolders.selected td.section {
+#settings-sections .folders.selected a {
background-position: 6px -22px;
}
-#settings-sections span.identities a {
+#sections-table #rcmrowfolders .section {
+ background-position: 4px 2px;
+}
+
+#sections-table #rcmrowfolders.selected .section {
+ background-position: 4px -22px;
+}
+
+#settings-sections .identities a {
background-position: 6px -478px;
}
-#settings-sections span.identities.selected a {
+#settings-sections .identities.selected a {
background-position: 6px -502px;
}
-#settings-sections span.filter a {
+#settings-sections .filter a {
background-position: 6px -1746px;
}
-#settings-sections span.filter.selected a {
+#settings-sections .filter.selected a {
background-position: 6px -1770px;
}
-#settings-sections span.password a {
+#settings-sections .password a {
background-position: 6px -1795px;
}
-#settings-sections span.password.selected a {
+#settings-sections .password.selected a {
background-position: 6px -1819px;
}
-#settings-sections span.responses a {
+#settings-sections .responses a {
background-position: 6px -1972px;
}
-#settings-sections span.responses.selected a {
+#settings-sections .responses.selected a {
background-position: 6px -1996px;
}
-#sections-table #rcmrowgeneral td.section {
- background-position: 6px -573px;
+#sections-table #rcmrowgeneral .section {
+ background-position: 4px -573px;
+}
+
+#sections-table #rcmrowgeneral.selected .section {
+ background-position: 4px -598px;
+}
+
+#sections-table #rcmrowmailbox .section {
+ background-position: 4px -621px;
+}
+
+#sections-table #rcmrowmailbox.selected .section {
+ background-position: 4px -646px;
}
-#sections-table #rcmrowgeneral.selected td.section {
- background-position: 6px -598px;
+#sections-table #rcmrowcompose .section {
+ background-position: 4px -670px;
}
-#sections-table #rcmrowmailbox td.section {
- background-position: 6px -621px;
+#sections-table #rcmrowcompose.selected .section {
+ background-position: 4px -695px;
}
-#sections-table #rcmrowmailbox.selected td.section {
- background-position: 6px -646px;
+#sections-table #rcmrowmailview .section {
+ background-position: 4px -718px;
}
-#sections-table #rcmrowcompose td.section {
- background-position: 6px -670px;
+#sections-table #rcmrowmailview.selected .section {
+ background-position: 4px -742px;
}
-#sections-table #rcmrowcompose.selected td.section {
- background-position: 6px -695px;
+#sections-table #rcmrowaddressbook .section {
+ background-position: 4px -766px;
}
-#sections-table #rcmrowmailview td.section {
- background-position: 6px -718px;
+#sections-table #rcmrowaddressbook.selected .section {
+ background-position: 4px -791px;
}
-#sections-table #rcmrowmailview.selected td.section {
- background-position: 6px -742px;
+#sections-table #rcmrowserver .section {
+ background-position: 4px -814px;
}
-#sections-table #rcmrowaddressbook td.section {
- background-position: 6px -766px;
+#sections-table #rcmrowserver.selected .section {
+ background-position: 4px -838px;
}
-#sections-table #rcmrowaddressbook.selected td.section {
- background-position: 6px -791px;
+#sections-table #rcmrowcalendar .section {
+ background-position: 4px -526px;
}
-#sections-table #rcmrowserver td.section {
- background-position: 6px -814px;
+#sections-table #rcmrowcalendar.selected .section {
+ background-position: 4px -550px;
}
-#sections-table #rcmrowserver.selected td.section {
- background-position: 6px -838px;
+#folderslist .boxtitle a.iconbutton.search {
+ background-position: -2px -317px;
+ cursor: pointer;
+ position: absolute;
+ right: 8px;
+ top: 8px;
+ width: 16px;
}
-#sections-table #rcmrowcalendar td.section {
- background-position: 6px -526px;
+#folderslist .listsearchbox + .scroller {
+ top: 34px;
}
-#sections-table #rcmrowcalendar.selected td.section {
- background-position: 6px -550px;
+.listsearchbox select {
+ width: 100%;
+ margin: 0 0 4px 0;
}
#folderslist,
@@ -237,26 +262,22 @@
bottom: 0;
}
-#subscription-table {
- table-layout: fixed;
-}
-
-#subscription-table tr.root td {
+#subscription-table li.root {
font-size: 5%;
+ line-height: 5px;
height: 5px;
padding: 2px;
}
-#subscription-table td.name {
- width: 85%;
- overflow: hidden;
- text-overflow: ellipsis;
+#subscription-table li input {
+ position: absolute;
+ right: 8px;
+ top: 4px;
+ margin-right: 0;
}
-#subscription-table td.subscribed {
- min-width: 30px;
- padding: 3px 12px 3px 3px;
- text-align: right;
+#subscription-table li a {
+ padding-right: 28px;
}
.skinselection {
diff --git a/skins/larry/styles.css b/skins/larry/styles.css
index 111049f8b..1e4035070 100644
--- a/skins/larry/styles.css
+++ b/skins/larry/styles.css
@@ -35,6 +35,30 @@ img {
border: 0;
}
+.voice {
+ position: absolute;
+ border: 0;
+ clip: rect(0 0 0 0);
+ width: 1px;
+ height: 1px;
+ margin: -1px;
+ padding: 0;
+ overflow: hidden;
+}
+
+html.mozilla select {
+ padding: 2px 1px;
+}
+
+input,
+textarea,
+select,
+button {
+ font-family: inherit;
+ font-size: inherit;
+ vertical-align: middle;
+}
+
input[type="text"],
input[type="password"],
textarea {
@@ -43,25 +67,24 @@ textarea {
border: 1px solid #b2b2b2;
border-radius: 4px;
box-shadow: inset 0 0 2px 1px rgba(0,0,0, 0.1);
- -moz-box-shadow: inset 0 0 2px 1px rgba(0,0,0, 0.1);
-webkit-box-shadow: inset 0 0 2px 1px rgba(0,0,0, 0.1);
- -o-box-shadow: inset 0 0 2px 1px rgba(0,0,0, 0.1);
}
input[type="text"]:focus,
input[type="password"]:focus,
-input[type="text"]:required,
-input[type="password"]:required,
input.button:focus,
textarea:focus {
border-color: #4787b1;
box-shadow: 0 0 5px 2px rgba(71,135,177, 0.9);
- -moz-box-shadow: 0 0 5px 2px rgba(71,135,177, 0.9);
-webkit-box-shadow: 0 0 5px 2px rgba(71,135,177, 0.9);
- -o-box-shadow: 0 0 5px 2px rgba(71,135,177, 0.9);
outline: none;
}
+input[type="text"]:required,
+input[type="password"]:required {
+ border-color: #4787b1;
+}
+
input.placeholder,
textarea.placeholder {
color: #aaa;
@@ -72,8 +95,7 @@ textarea.placeholder {
}
/* fixes vertical alignment of checkboxes and labels */
-label input,
-label span {
+label input + span {
vertical-align: middle;
}
@@ -94,9 +116,7 @@ input.button {
background: -ms-linear-gradient(top, #f9f9f9 0%, #e6e6e6 100%);
background: linear-gradient(top, #f9f9f9 0%, #e6e6e6 100%);
box-shadow: 0 1px 1px 0 rgba(140, 140, 140, 0.3);
- -o-box-shadow: 0 1px 1px 0 rgba(140, 140, 140, 0.3);
-webkit-box-shadow: 0 1px 1px 0 rgba(140, 140, 140, 0.3);
- -moz-box-shadow: 0 1px 1px 0 rgba(140, 140, 140, 0.3);
text-decoration: none;
outline: none;
}
@@ -115,9 +135,7 @@ input.button {
background: -ms-linear-gradient(top, #7b7b7b 0%, #606060 100%); /* IE10+ */
background: linear-gradient(top, #7b7b7b 0%, #606060 100%); /* W3C */
box-shadow: 0 1px 1px 0 #ccc, inset 0 1px 0 0 #888;
- -o-box-shadow: 0 1px 1px 0 #ccc, inset 0 1px 0 0 #888;
-webkit-box-shadow: 0 1px 1px 0 #ccc, inset 0 1px 0 0 #888;
- -moz-box-shadow: 0 1px 1px 0 #ccc, inset 0 1px 0 0 #888;
}
.formbuttons input.button:hover,
@@ -127,9 +145,7 @@ input.button.mainaction:focus {
color: #f2f2f2;
border-color: #465864;
box-shadow: 0 0 5px 2px rgba(71,135,177, 0.6), inset 0 1px 0 0 #888;
- -moz-box-shadow: 0 0 5px 2px rgba(71,135,177, 0.6), inset 0 1px 0 0 #888;
-webkit-box-shadow: 0 0 5px 2px rgba(71,135,177, 0.6), inset 0 1px 0 0 #888;
- -o-box-shadow: 0 0 5px 2px rgba(71,135,177, 0.6), inset 0 1px 0 0 #888;
}
.formbuttons input.button:active {
@@ -152,9 +168,7 @@ input.button.mainaction {
background: -ms-linear-gradient(top, #505050 0%, #2a2e31 100%);
background: linear-gradient(top, #505050 0%, #2a2e31 100%);
box-shadow: inset 0 1px 0 0 #777;
- -moz-box-shadow: inset 0 1px 0 0 #777;
-webkit-box-shadow: inset 0 1px 0 0 #777;
- -o-box-shadow: inset 0 1px 0 0 #777;
}
input.button.mainaction:active {
@@ -195,9 +209,7 @@ a.button,
background: -ms-linear-gradient(top, #f9f9f9 0%, #e6e6e6 100%);
background: linear-gradient(top, #f9f9f9 0%, #e6e6e6 100%);
box-shadow: 0 1px 1px 0 rgba(140, 140, 140, 0.3);
- -o-box-shadow: 0 1px 1px 0 rgba(140, 140, 140, 0.3);
-webkit-box-shadow: 0 1px 1px 0 rgba(140, 140, 140, 0.3);
- -moz-box-shadow: 0 1px 1px 0 rgba(140, 140, 140, 0.3);
text-decoration: none;
}
@@ -210,9 +222,7 @@ a.button:focus,
input.button:focus {
border-color: #4fadd5;
box-shadow: 0 0 2px 1px rgba(71,135,177, 0.6);
- -moz-box-shadow: 0 0 2px 1px rgba(71,135,177, 0.6);
-webkit-box-shadow: 0 0 2px 1px rgba(71,135,177, 0.6);
- -o-box-shadow: 0 0 2px 1px rgba(71,135,177, 0.6);
outline: none;
}
@@ -229,14 +239,11 @@ input.button.disabled:hover,
input.button[disabled]:hover {
border-color: #c6c6c6;
box-shadow: 0 1px 1px 0 rgba(160, 160, 160, 0.4);
- -o-box-shadow: 0 1px 1px 0 rgba(160, 160, 160, 0.4);
-webkit-box-shadow: 0 1px 1px 0 rgba(160, 160, 160, 0.4);
- -moz-box-shadow: 0 1px 1px 0 rgba(160, 160, 160, 0.4);
}
a.button.disabled span.inner {
opacity: 0.4;
- filter: alpha(opacity=40);
}
.buttongroup a.button {
@@ -245,9 +252,7 @@ a.button.disabled span.inner {
border-radius: 0;
background: none;
box-shadow: none;
- -o-box-shadow: none;
-webkit-box-shadow: none;
- -moz-box-shadow: none;
}
.buttongroup a.button.first,
@@ -283,9 +288,7 @@ input.button:active {
background: -ms-linear-gradient(top, #d8d8d8 0%, #bababa 100%);
background: linear-gradient(top, #d8d8d8 0%, #bababa 100%);
box-shadow: 0 1px 1px 0 #999;
- -o-box-shadow: 0 1px 1px 0 #999;
-webkit-box-shadow: 0 1px 1px 0 #999;
- -moz-box-shadow: 0 1px 1px 0 #999;
}
.pagenav.dark a.button.pressed {
@@ -305,13 +308,22 @@ input.button:active {
background: -o-linear-gradient(top, #909090 0%, #858585 100%);
background: -ms-linear-gradient(top, #909090 0%, #858585 100%);
background: linear-gradient(top, #909090 0%, #858585 100%);
- -webkit-box-shadow: inset 0 1px 2px 0 #555;
- -moz-box-shadow: inset 0 1px 2px 0 #555;
box-shadow: inset 0 1px 2px 0 #555;
+ -webkit-box-shadow: inset 0 1px 2px 0 #555;
border-right-color: #555;
border-left-color: #555;
}
+.buttongroup a.button:focus,
+.buttongroup a.button.selected:focus {
+ background: #f2f2f2;
+ background: -moz-linear-gradient(top, #49b3d2 0, #66bcd9 100%);
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0,#49b3d2), color-stop(100%,#66bcd9));
+ background: -o-linear-gradient(top, #49b3d2 0, #66bcd9 100%);
+ background: -ms-linear-gradient(top, #49b3d2 0, #66bcd9 100%);
+ background: linear-gradient(top, #49b3d2 0, #66bcd9 100%);
+}
+
.pagenav a.button {
padding: 1px 3px;
height: 16px;
@@ -429,15 +441,19 @@ a.iconbutton {
a.iconbutton.disabled {
opacity: 0.4;
- filter: alpha(opacity=40);
cursor: default;
}
+a.iconbutton.searchicon,
a.iconbutton.searchoptions {
width: 24px;
background-position: -2px -317px;
}
+a.iconbutton.searchicon {
+ width: 15px;
+}
+
a.iconbutton.reset {
width: 24px;
background-position: -25px -317px;
@@ -615,10 +631,8 @@ a.iconlink.upload {
background: -ms-linear-gradient(top, rgba(64,64,64,0.85) 0%, rgba(48,48,48,0.85) 100%);
background: linear-gradient(to bottom, rgba(64,64,64,0.85) 0%, rgba(48,48,48,0.85) 100%);
- -moz-box-shadow: 0 1px 4px 0 rgba(50,50,50,0.8), inset 0px 1px 0 0px #888;
- -webkit-box-shadow: 0 1px 4px 0 rgba(50,50,50,0.8), inset 0px 1px 0 0px #888;
- -o-box-shadow: 0 1px 4px 0 rgba(50,50,50,0.8), inset 0px 1px 0 0px #888;
box-shadow: 0 1px 4px 0 rgba(50,50,50,0.8), inset 0px 1px 0 0px #888;
+ -webkit-box-shadow: 0 1px 4px 0 rgba(50,50,50,0.8), inset 0px 1px 0 0px #888;
}
#messagestack div:after {
@@ -666,6 +680,11 @@ a.iconlink.upload {
background: url(images/ajaxloader_dark.gif) 0 4px no-repeat;
}
+#messagestack div.voice {
+ position: absolute;
+ top: -1000px;
+}
+
#messagestack div a {
color: #94c0da;
}
@@ -822,7 +841,6 @@ a.iconlink.upload {
.minimal #topline:hover {
top: 0px;
opacity: 0.94;
- filter: alpha(opacity=94);
-webkit-transition: top 0.3s ease-in-out;
-moz-transition: top 0.3s ease-in-out;
-o-transition: top 0.3s ease-in-out;
@@ -894,9 +912,7 @@ a.iconlink.upload {
white-space: nowrap;
border: 1px solid #777;
box-shadow: 0 1px 5px 0 #333;
- -moz-box-shadow: 0 1px 5px 0 #333;
-webkit-box-shadow: 0 1px 5px 0 #333;
- -o-box-shadow: 0 1px 5px 0 #333;
z-index: 200;
white-space: nowrap;
text-shadow: 0px 1px 1px #000;
@@ -945,6 +961,13 @@ a.iconlink.upload {
background: url(images/buttons.png) -1000px 0 no-repeat;
}
+#taskbar a:focus {
+ color: #fff;
+ text-shadow: 0px 1px 1px #666;
+ background-color: rgba(73,180,210,0.7);
+ outline: none;
+}
+
#taskbar a.button-selected {
color: #3cf;
background-color: #2c2c2c;
@@ -1018,6 +1041,14 @@ a.iconlink.upload {
bottom: 0;
}
+#mainscreen.offset {
+ top: 132px;
+}
+
+#mainscreen .offset {
+ top: 42px;
+}
+
.minimal #mainscreen {
top: 62px;
}
@@ -1030,12 +1061,8 @@ a.iconlink.upload {
top: 40px;
}
-#mainscreen.offset {
- top: 132px;
-}
-
-#mainscreen .offset {
- top: 42px;
+.extwin #mainscreen.offset {
+ top: 86px;
}
.uibox {
@@ -1043,9 +1070,7 @@ a.iconlink.upload {
border-radius: 4px;
overflow: hidden;
box-shadow: 0 0 2px #999;
- -o-box-shadow: 0 0 2px #999;
-webkit-box-shadow: 0 0 2px #999;
- -moz-box-shadow: 0 0 2px #999;
background: #fff;
}
@@ -1110,23 +1135,26 @@ a.iconlink.upload {
}
.boxtitle,
+.uibox .listing thead th,
.uibox .listing thead td {
font-size: 12px;
font-weight: bold;
- padding: 10px 8px 3px 8px;
- height: 20px; /* doesn't affect table-cells in FF */
+ padding: 7px 8px 6px 8px;
+ line-height: 20px;
margin: 0;
text-shadow: 0px 1px 1px #fff;
border-bottom: 1px solid #bbd3da;
white-space: nowrap;
}
+.uibox .listing thead th,
.uibox .listing thead td {
padding-bottom: 8px;
height: auto;
}
.uibox .boxtitle,
+.uibox .listing thead th,
.uibox .listing thead td {
background: #b0ccd7;
color: #004458;
@@ -1145,6 +1173,7 @@ a.iconlink.upload {
}
.listbox .listitem a,
+.listbox .listitem span,
.listbox .tablink a,
.listing tbody td,
.listing li a {
@@ -1153,27 +1182,49 @@ a.iconlink.upload {
text-shadow: 0px 1px 1px #fff;
text-decoration: none;
cursor: default;
- padding: 6px 8px 2px 8px;
- height: 17px; /* doesn't affect table-cells in FF */
+ padding: 4px 8px;
+ line-height: 17px;
+ height: 17px;
white-space: nowrap;
}
.listing tbody td {
display: table-cell;
- padding-bottom: 5px;
- height: auto;
min-height: 14px;
+ outline: none;
+}
+
+.listing tbody td a {
+ color: #376572;
+ text-shadow: 0px 1px 1px #fff;
+ text-decoration: none;
}
.webkit .listing tbody td {
height: 14px;
}
+/* This padding-left minus the focused padding left should be half of the focused border-left */
+.listing thead tr td:first-child,
+.listing tbody tr td:first-child {
+ border-left: 2px solid transparent;
+ padding-left: 6px;
+}
+
+.listing.iconized thead tr td:first-child,
+.listing.iconized tbody tr td:first-child {
+ padding-left: 34px;
+}
+
+/* because of border-collapse, we make the left border twice what we want it to be - half will be hidden to the left */
+.listing.focus tbody tr.focused > td:first-child {
+ border-left: 2px solid #739da8;
+}
+
.listbox .listitem.selected,
.listbox .tablink.selected,
.listbox .listitem.selected > a,
.listbox .tablink.selected > a,
-.listing tbody tr.unfocused td,
.listing tbody tr.selected td,
.listing li.selected,
.listing li.selected > a {
@@ -1240,6 +1291,16 @@ ul.treelist li a {
text-overflow: ellipsis;
}
+ul.treelist li a:focus,
+ul.listing .listitem a:focus,
+ul.listing .listitem span:focus,
+ul.listing.focus .listitem.focused span {
+ color: #fff !important;
+ background-color: rgba(73,180,210,0.6);
+ text-shadow: 0px 1px 1px #666;
+ outline: none;
+}
+
ul.treelist ul li a {
padding-left: 38px;
}
@@ -1252,10 +1313,18 @@ ul.treelist.iconized li a {
padding-left: 36px;
}
-ul.treelist.iconized li ul li a {
+ul.treelist.iconized ul li a {
padding-left: 62px;
}
+ul.treelist.iconized ul ul li a {
+ padding-left: 88px;
+}
+
+ul.treelist.iconized ul ul ul li a {
+ padding-left: 114px;
+}
+
ul.treelist li div.treetoggle {
position: absolute;
top: 7px;
@@ -1275,8 +1344,12 @@ ul.treelist.iconized li div.treetoggle {
left: 19px;
}
-ul.treelist.iconized li ul li div.treetoggle {
- left: 35px;
+ul.treelist.iconized ul li div.treetoggle {
+ left: 45px;
+}
+
+ul.treelist.iconized ul ul li div.treetoggle {
+ left: 71px;
}
ul.treelist li div.treetoggle.expanded {
@@ -1299,9 +1372,8 @@ ul.treelist li.selected > div.expanded {
height: 42px;
border-top: 1px solid #ccdde4;
background: #d9ecf4;
- -webkit-box-shadow: inset 0 1px 0 0 #fff;
- -moz-box-shadow: inset 0 1px 0 0 #fff;
box-shadow: inset 0 1px 0 0 #fff;
+ -webkit-box-shadow: inset 0 1px 0 0 #fff;
white-space: nowrap;
overflow: hidden;
}
@@ -1320,6 +1392,13 @@ ul.treelist li.selected > div.expanded {
margin-top: 1px;
}
+.boxfooter a.listbutton:focus {
+ color: #fff;
+ background-color: rgba(73,180,210,0.6);
+ text-shadow: 0px 1px 1px #666;
+ outline: none;
+}
+
.uibox .boxfooter .listbutton:first-child {
border-radius: 0 0 0 4px;
}
@@ -1329,7 +1408,9 @@ ul.treelist li.selected > div.expanded {
width: 48px;
height: 35px;
text-indent: -5000px;
- background: url(images/buttons.png) -1000px 0 no-repeat;
+ background-image: url(images/buttons.png);
+ background-position: -1000px 0;
+ background-repeat: no-repeat;
}
.boxfooter .listbutton.add .inner {
@@ -1367,7 +1448,6 @@ ul.treelist li.selected > div.expanded {
.boxfooter .listbutton.disabled .inner {
opacity: 0.4;
- filter: alpha(opacity=40);
}
.boxfooter .countdisplay {
@@ -1410,7 +1490,6 @@ ul.treelist li.selected > div.expanded {
.boxpagenav a.icon.disabled {
opacity: 0.4;
- filter: alpha(opacity=40);
}
.centerbox {
@@ -1443,6 +1522,7 @@ table.records-table {
border: 0;
}
+.records-table thead th,
.records-table thead td {
color: #69939e;
font-size: 11px;
@@ -1457,13 +1537,17 @@ table.records-table {
padding: 8px 7px;
overflow: hidden;
text-overflow: ellipsis;
+ text-align: left;
}
+.records-table.sortheader thead th,
.records-table.sortheader thead td {
padding: 0;
}
+.records-table thead th a,
.records-table thead td a,
+.records-table thead th span,
.records-table thead td span {
display: block;
padding: 7px 7px;
@@ -1473,6 +1557,14 @@ table.records-table {
text-overflow: ellipsis;
}
+.records-table thead th a:focus,
+.records-table thead td a:focus {
+ color: #fff;
+ background-color: rgba(73,180,210,0.7);
+ text-shadow: 0px 1px 1px #666;
+ outline: none;
+}
+
.records-table tbody td {
padding: 2px 7px;
border-bottom: 1px solid #ddd;
@@ -1482,27 +1574,28 @@ table.records-table {
overflow: hidden;
text-overflow: ellipsis;
background-color: #fff;
+ outline: none;
}
/* This padding-left minus the focused padding left should be half of the focused border-left */
+.records-table thead tr th:first-child,
.records-table thead tr td:first-child,
.records-table tbody tr td:first-child {
- border-left: 0;
- padding-left: 6px;
-}
-
-/* because of border-collapse, we make the left border twice what we want it to be - half will be hidden to the left */
-.records-table tbody tr.focused > td:first-child {
- border-left: 2px solid #b0ccd7;
+ border-left: 2px solid transparent;
padding-left: 4px;
}
-.records-table tbody tr.selected.focused > td:first-child {
- border-left-color: #49b3d2;
+/* because of border-collapse, we make the left border twice what we want it to be - half will be hidden to the left */
+.records-table.focus tbody tr.focused > td:first-child {
+ border-left: 2px solid #49b3d2;
}
.records-table tr.selected td {
color: #fff !important;
+ background-color: #4db0d2 !important;
+}
+
+.records-table.focus tr.selected td {
background: #019bc6;
background: -moz-linear-gradient(top, #019bc6 0%, #017cb4 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#019bc6), color-stop(100%,#017cb4));
@@ -1516,16 +1609,6 @@ table.records-table {
color: #fff !important;
}
-.records-table tr.unfocused td {
- color: #fff !important;
- background-color: #4db0d2 !important;
-}
-
-.records-table tr.unfocused td a,
-.records-table tr.unfocused td span {
- color: #fff !important;
-}
-
.records-table tr.deleted td,
.records-table tr.deleted td a {
color: #ccc !important;
@@ -1731,9 +1814,7 @@ ul.proplist li {
border: 1px solid #333;
border-radius: 5px;
box-shadow: inset 0 0 1px #ccc;
- -o-box-shadow: inset 0 0 1px #ccc;
-webkit-box-shadow: inset 0 0 1px #ccc;
- -moz-box-shadow: inset 0 0 1px #ccc;
}
#login-form .box-bottom {
@@ -1772,17 +1853,13 @@ ul.proplist li {
background: -ms-linear-gradient(top, #f9f9f9 0%, #e2e2e2 100%);
background: linear-gradient(top, #f9f9f9 0%, #e2e2e2 100%);
box-shadow: inset 0 1px 0 0 #fff;
- -moz-box-shadow: inset 0 1px 0 0 #fff;
-webkit-box-shadow: inset 0 1px 0 0 #fff;
- -o-box-shadow: inset 0 1px 0 0 #fff;
}
#login-form input.button:hover,
#login-form input.button:focus {
box-shadow: 0 0 5px 2px rgba(71,135,177, 0.9), inset 0 1px 0 0 #fff;
- -moz-box-shadow: 0 0 5px 2px rgba(71,135,177, 0.9), inset 0 1px 0 0 #fff;
-webkit-box-shadow: 0 0 5px 2px rgba(71,135,177, 0.9), inset 0 1px 0 0 #fff;
- -o-box-shadow: 0 0 5px 2px rgba(71,135,177, 0.9), inset 0 1px 0 0 #fff;
}
#login-form input.button:active {
@@ -1863,6 +1940,7 @@ ul.proplist li {
font-size: 11px;
}
+.searchbox .searchicon,
.searchbox #searchmenulink,
#quicksearchbar #searchmenulink {
position: absolute;
@@ -1871,12 +1949,25 @@ ul.proplist li {
}
.searchbox #searchreset,
+.searchbox .iconbutton.reset,
#quicksearchbar #searchreset {
position: absolute;
top: 4px;
right: 1px;
}
+.listsearchbox {
+ padding: 4px;
+ background: #c7e3ef;
+ display: none;
+}
+
+.listsearchbox input {
+ width: 100%;
+ height: 26px;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
/*** toolbar ***/
@@ -1892,7 +1983,7 @@ ul.proplist li {
font-size: 10px;
color: #555;
min-width: 50px;
- max-width: 75px;
+ max-width: 70px;
height: 13px;
overflow: hidden;
text-overflow: ellipsis;
@@ -1900,17 +1991,22 @@ ul.proplist li {
padding: 28px 2px 0 2px;
text-shadow: 0px 1px 1px #eee;
box-shadow: none;
- -moz-box-shadow: none;
-webkit-box-shadow: none;
- -o-box-shadow: none;
background: url(images/buttons.png) -100px 0 no-repeat transparent;
border: 0;
border-radius: 0;
}
+.dropbutton .dropbuttontip:focus,
+.toolbar a.button:focus {
+ color: #fff;
+ text-shadow: 0px 1px 1px #666;
+ background-color: rgba(30,150,192, 0.5);
+ border-radius: 3px;
+}
+
.toolbar a.button.disabled {
opacity: 0.4;
- filter: alpha(opacity=40);
}
.dropbutton {
@@ -1923,19 +2019,22 @@ ul.proplist li {
position: absolute;
right: 0;
top: 0;
- height: 42px;
+ height: 41px;
width: 18px;
+ overflow: hidden;
+ text-indent: -5000px;
background: url(images/buttons.png) 0 -1255px no-repeat;
cursor: pointer;
+ outline: none;
}
+.dropbutton .dropbuttontip:focus,
.dropbutton .dropbuttontip:hover {
background-position: -26px -1255px;
}
.dropbutton a.button.disabled + .dropbuttontip {
opacity: 0.5;
- filter: alpha(opacity=50);
}
.dropbutton a.button.disabled + .dropbuttontip:hover {
@@ -1967,12 +2066,12 @@ ul.proplist li {
.toolbar a.button.reply-all {
min-width: 64px;
- background-position: left -610px;
+ background-position: 0 -610px;
}
.toolbar a.button.forward {
min-width: 64px;
- background-position: left -650px;
+ background-position: 0 -650px;
}
.toolbar a.button.delete {
@@ -2009,11 +2108,11 @@ ul.proplist li {
.toolbar a.button.spellcheck {
min-width: 64px;
- background-position: left -930px;
+ background-position: 0 -930px;
}
.toolbar a.button.spellcheck.selected {
- background-position: left -1620px;
+ background-position: 0 -1620px;
color: #1978a1;
}
@@ -2030,8 +2129,8 @@ ul.proplist li {
}
.toolbar a.button.export {
- min-width: 74px;
- background-position: center -1054px;
+ min-width: 64px;
+ background-position: 0 -1054px;
}
.toolbar a.button.send {
@@ -2096,7 +2195,6 @@ select.decorated {
opacity: 0;
height: 22px;
cursor: pointer;
- filter: alpha(opacity=0);
-khtml-appearance: none;
-webkit-appearance: none;
border: 0;
@@ -2119,6 +2217,17 @@ select.decorated option {
}
+a.menuselector:focus,
+a.menuselector.focus,
+a.iconbutton:focus,
+.pagenav a.button:focus {
+ border-color: #4fadd5;
+ box-shadow: 0 0 4px 2px rgba(71,135,177, 0.8);
+ -webkit-box-shadow: 0 0 4px 2px rgba(71,135,177, 0.8);
+ outline: none;
+}
+
+
/*** quota indicator ***/
#quotadisplay {
@@ -2131,6 +2240,30 @@ select.decorated option {
background: url(images/quota.png) -100px 0 no-repeat;
}
+table.quota-info {
+ border-spacing: 0;
+ border-collapse: collapse;
+ table-layout: fixed;
+ margin: 5px;
+}
+
+table.quota-info td,
+table.quota-info th {
+ color: white;
+ border: 1px solid lightgrey;
+ padding: 2px 3px;
+ text-align: center;
+ min-width: 80px;
+}
+
+table.quota-info td.name {
+ text-align: left;
+}
+
+table.quota-info td.root {
+ font-style: italic;
+}
+
/*** popup menus ***/
.popupmenu,
@@ -2148,9 +2281,7 @@ select.decorated option {
z-index: 240;
border-radius: 4px;
box-shadow: 0 2px 6px 0 #333;
- -moz-box-shadow: 0 2px 6px 0 #333;
-webkit-box-shadow: 0 2px 6px 0 #333;
- -o-box-shadow: 0 2px 6px 0 #333;
}
.popupmenu.dropdown {
@@ -2211,6 +2342,7 @@ ul.toolbarmenu li a.active {
.googie_list td.googie_list_onhover,
ul.toolbarmenu li a.active:hover,
+ul.toolbarmenu li a.active:focus,
#rcmKSearchpane ul li.selected,
select.decorated option:hover,
select.decorated option[selected='selected'] {
@@ -2220,6 +2352,7 @@ select.decorated option[selected='selected'] {
background: -o-linear-gradient(top, #00aad6 0%, #008fc9 100%);
background: -ms-linear-gradient(top, #00aad6 0%, #008fc9 100%);
background: linear-gradient(top, #00aad6 0%, #008fc9 100%);
+ outline: none;
}
ul.toolbarmenu.iconized li a,
@@ -2248,7 +2381,8 @@ ul.toolbarmenu li a.icon {
padding: 2px 6px;
}
-ul.toolbarmenu li span.icon {
+ul.toolbarmenu li span.icon,
+#rcmKSearchpane ul li i.icon {
display: block;
min-height: 14px;
padding: 4px 4px 1px 24px;
@@ -2257,12 +2391,10 @@ ul.toolbarmenu li span.icon {
background-position: -100px 0;
background-repeat: no-repeat;
opacity: 0.2;
- filter: alpha(opacity=20);
}
ul.toolbarmenu li a.active span.icon {
opacity: 0.99;
- filter: alpha(opacity=100);
}
ul.toolbarmenu li span.read {
@@ -2347,9 +2479,25 @@ ul.toolbarmenu li span.copy {
text-shadow: 0px 1px 1px #333;
text-decoration: none;
min-height: 14px;
- padding: 6px 10px 6px 10px;
+ padding: 6px 10px 6px 28px;
border: 0;
cursor: default;
+ position: relative;
+}
+
+#rcmKSearchpane ul li i.icon {
+ opacity: 0.99;
+ position: absolute;
+ top: 4px;
+ left: 5px;
+ width: 18px;
+ height: 18px;
+ padding: 0;
+ background-position: -1px -2223px;
+}
+
+#rcmKSearchpane ul li.group i.icon {
+ background-position: -1px -2247px;
}
.popupdialog {
@@ -2405,14 +2553,11 @@ ul.toolbarmenu li span.copy {
border: 1px solid #555;
border-radius: 4px;
box-shadow: 0 2px 6px 0 #333;
- -moz-box-shadow: 0 2px 6px 0 #333;
-webkit-box-shadow: 0 2px 6px 0 #333;
- -o-box-shadow: 0 2px 6px 0 #333;
z-index: 250;
color: #ccc;
white-space: nowrap;
opacity: 0.92;
- filter: alpha(opacity=92);
text-shadow: 0px 1px 1px #333;
}
@@ -2441,6 +2586,10 @@ ul.toolbarmenu li span.copy {
z-index: 255;
}
+.popup label > input {
+ margin-left: 10px;
+}
+
/*** folder selector ***/
#folder-selector {
@@ -2478,6 +2627,224 @@ ul.toolbarmenu li span.copy {
background-position: 4px -2100px;
}
+/*** folders list ***/
+
+.folderlist li.mailbox a {
+ padding-left: 36px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ background-image: url(images/listicons.png);
+ background-repeat: no-repeat;
+ background-position: 6px 3px;
+}
+
+.folderlist li.mailbox.unread > a {
+ padding-right: 36px;
+}
+
+.folderlist li.mailbox > a:focus,
+.folderlist li.mailbox.selected > a {
+ background-position: 6px -21px;
+}
+
+.folderlist li.mailbox.inbox > a {
+ background-position: 6px -189px;
+}
+
+.folderlist li.mailbox.inbox > a:focus,
+.folderlist li.mailbox.inbox.selected > a {
+ background-position: 6px -213px;
+}
+
+.folderlist li.mailbox.drafts > a {
+ background-position: 6px -238px;
+}
+
+.folderlist li.mailbox.drafts > a:focus,
+.folderlist li.mailbox.drafts.selected > a {
+ background-position: 6px -262px;
+}
+
+.folderlist li.mailbox.sent > a {
+ background-position: 6px -286px;
+}
+
+.folderlist li.mailbox.sent > a:focus,
+.folderlist li.mailbox.sent.selected > a {
+ background-position: 6px -310px;
+}
+
+.folderlist li.mailbox.junk > a {
+ background-position: 6px -334px;
+}
+
+.folderlist li.mailbox.junk > a:focus,
+.folderlist li.mailbox.junk.selected > a {
+ background-position: 6px -358px;
+}
+
+.folderlist li.mailbox.trash > a {
+ background-position: 6px -382px;
+}
+
+.folderlist li.mailbox.trash > a:focus,
+.folderlist li.mailbox.trash.selected > a {
+ background-position: 6px -406px;
+}
+
+.folderlist li.mailbox.trash.empty > a {
+ background-position: 6px -1924px;
+}
+
+.folderlist li.mailbox.trash.empty > a:focus,
+.folderlist li.mailbox.trash.empty.selected > a {
+ background-position: 6px -1948px;
+}
+
+.folderlist li.mailbox.archive > a {
+ background-position: 6px -1699px;
+}
+
+.folderlist li.mailbox.archive > a:focus,
+.folderlist li.mailbox.archive.selected > a {
+ background-position: 6px -1723px;
+}
+
+.folderlist li.mailbox ul li.drafts > a {
+ background-position: 23px -238px;
+}
+
+.folderlist li.mailbox ul li.drafts > a:focus,
+.folderlist li.mailbox ul li.drafts.selected > a {
+ background-position: 23px -262px;
+}
+
+.folderlist li.mailbox ul li.sent > a {
+ background-position: 23px -286px;
+}
+
+.folderlist li.mailbox ul li.sent > a:focus,
+.folderlist li.mailbox ul li.sent.selected > a {
+ background-position: 23px -310px;
+}
+
+.folderlist li.mailbox ul li.junk > a {
+ background-position: 23px -334px;
+}
+
+.folderlist li.mailbox ul li.junk > a:focus,
+.folderlist li.mailbox ul li.junk.selected > a {
+ background-position: 23px -358px;
+}
+
+.folderlist li.mailbox ul li.trash > a {
+ background-position: 23px -382px;
+}
+
+.folderlist li.mailbox ul li.trash > a:focus,
+.folderlist li.mailbox ul li.trash.selected > a {
+ background-position: 23px -406px;
+}
+
+.folderlist li.mailbox ul li.trash.empty > a {
+ background-position: 23px -1924px;
+}
+
+.folderlist li.mailbox ul li.trash.empty > a:focus,
+.folderlist li.mailbox ul li.trash.empty.selected > a {
+ background-position: 23px -1948px;
+}
+
+.folderlist li.mailbox ul li.archive > a {
+ background-position: 23px -1699px;
+}
+
+.folderlist li.mailbox ul li.archive > a:focus,
+.folderlist li.mailbox ul li.archive.selected > a {
+ background-position: 23px -1723px;
+}
+
+.folderlist li.virtual > a {
+ color: #aaa;
+}
+
+.folderlist li.mailbox div.treetoggle {
+ top: 13px;
+ left: 19px;
+}
+
+.folderlist li.mailbox ul li:last-child {
+ border-bottom: 0;
+}
+
+/* nested mailboxes */
+
+.folderlist li.mailbox ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ border-top: 1px solid #bbd3da;
+}
+
+.folderlist li.mailbox ul li a {
+ padding-left: 52px; /* 36 + 1 x 16 */
+ background-position: 22px -95px; /* 6 + 1 x 16 */
+}
+.folderlist li.mailbox ul li > a:focus,
+.folderlist li.mailbox ul li.selected > a {
+ background-position: 22px -119px;
+}
+.folderlist li.mailbox ul li div.treetoggle {
+ left: 33px;
+ top: 14px;
+}
+
+.folderlist li.mailbox ul ul li.mailbox a {
+ padding-left: 68px; /* 2x */
+ background-position: 38px -95px;
+}
+.folderlist li.mailbox ul ul li > a:focus,
+.folderlist li.mailbox ul ul li.selected > a {
+ background-position: 38px -119px;
+}
+.folderlist li.mailbox ul ul li div.treetoggle {
+ left: 48px;
+}
+
+.folderlist li.mailbox ul ul ul li.mailbox a {
+ padding-left: 84px; /* 3x */
+ background-position: 54px -95px;
+}
+.folderlist li.mailbox ul ul ul li > a:focus,
+.folderlist li.mailbox ul ul ul li.selected > a {
+ background-position: 54px -119px;
+}
+.folderlist li.mailbox ul ul ul li div.treetoggle {
+ left: 64px;
+}
+
+.folderlist li.mailbox ul ul ul ul li.mailbox a {
+ padding-left: 100px; /* 4x */
+ background-position: 70px -95px;
+}
+.folderlist li.mailbox ul ul ul ul li > a:focus,
+.folderlist li.mailbox ul ul ul ul li.selected > a {
+ background-position: 70px -119px;
+}
+.folderlist li.mailbox ul ul ul ul li div.treetoggle {
+ left: 80px;
+}
+
+/* indent folders on levels > 4 */
+.folderlist li.mailbox ul ul ul ul ul li {
+ padding-left: 16px;
+}
+.folderlist li.mailbox ul ul ul ul ul li div.treetoggle {
+ left: 96px;
+}
+
+
/*** attachment list ***/
.attachmentslist {
@@ -2495,6 +2862,11 @@ ul.toolbarmenu li span.copy {
margin-bottom: 1px;
}
+.attachmentslist li.txt,
+.attachmentslist li.text {
+ background-position: 0 -416px;
+}
+
.attachmentslist li.pdf {
background-position: 0 -26px;
}
@@ -2554,11 +2926,6 @@ ul.toolbarmenu li span.copy {
background-position: 0 -338px;
}
-.attachmentslist li.txt,
-.attachmentslist li.text {
- background-position: 0 -416px;
-}
-
.attachmentslist li.ics,
.attachmentslist li.calendar {
background-position: 0 -364px;
@@ -2607,6 +2974,7 @@ ul.toolbarmenu li span.copy {
overflow: hidden;
text-overflow: ellipsis;
line-height: 20px;
+ outline: none;
}
.attachmentslist li a.drop {
@@ -2618,6 +2986,15 @@ ul.toolbarmenu li span.copy {
right: 0;
top: 0;
padding: 0;
+ overflow: hidden;
+ text-indent: -5000px;
+ outline: none;
+}
+
+.attachmentslist li a:focus,
+.attachmentslist li a.drop:focus {
+ background-color: rgba(30,150,192, 0.5);
+ border-radius: 2px;
}
#compose-attachments ul li {
@@ -2642,36 +3019,37 @@ ul.toolbarmenu li span.copy {
padding: 0;
text-decoration: none;
text-indent: -5000px;
- background: url(images/buttons.png) -7px -337px no-repeat;
+ background-image: url(images/buttons.png);
+ background-position: -6px -338px;
+ background-repeat: no-repeat;
}
.attachmentslist li a.cancelupload {
- background-position: -7px -377px;
+ background-position: -6px -378px;
}
-
/*** fieldset tabs ***/
-.tabsbar {
- margin-bottom: 12px;
- padding-top: 15px;
- height: 27px;
- white-space: nowrap;
+.tabbed.ui-tabs {
+ padding: 0;
+ border: 0 !important;
+ background: none;
}
-.ui-dialog-content .tabsbar {
- margin-bottom: 0;
+.ui-dialog .tabbed.ui-tabs {
+ margin: -12px -8px 0 -8px;
}
-.tabsbar .tablink {
- padding: 15px 1px 15px 0;
- background: #f8f8f8;
- background: -moz-linear-gradient(top, #f8f8f8 0%, #d3d3d3 50%, #f8f8f8 100%);
- background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f8f8f8), color-stop(50%,#d3d3d3), color-stop(100%,#f8f8f8));
- background: -webkit-linear-gradient(top, #f8f8f8 0%, #d3d3d3 50%, #f8f8f8 100%);
- background: -o-linear-gradient(top, #f8f8f8 0%, #d3d3d3 50%, #f8f8f8 100%);
- background: -ms-linear-gradient(top, #f8f8f8 0%, #d3d3d3 50%, #f8f8f8 100%);
- background: linear-gradient(top, #f8f8f8 0%, #d3d3d3 50%, #f8f8f8 100%);
+.boxcontent.tabbed.ui-tabs {
+ padding: 10px;
+}
+
+.ui-tabs .tabsbar.ui-tabs-nav {
+ margin-bottom: 10px;
+}
+
+.ui-dialog-content .ui-tabs .tabsbar.ui-tabs-nav {
+ margin-bottom: 0;
}
.tabsbar .tablink:last-child {
@@ -2682,28 +3060,33 @@ ul.toolbarmenu li span.copy {
border-right: 0;
}
-.tabsbar .tablink a {
- padding: 15px;
- color: #999;
- font-size: 12px;
- font-weight: bold;
- text-decoration: none;
+.ui-tabs .ui-tabs-nav li.tablink a {
background: #fff;
- border-right: 1px solid #fafafa;
}
-.tabsbar .tablink.selected a {
- color: #004458;
- background: #f6f6f6;
- background: -moz-linear-gradient(top, #fff 40%, #efefef 100%);
- background: -webkit-gradient(linear, left top, left bottom, color-stop(40%,#fff), color-stop(100%,#efefef));
- background: -o-linear-gradient(top, #fff 40%, #efefef 100%);
- background: -ms-linear-gradient(top, #fff 40%, #efefef 100%);
- background: linear-gradient(top, #fff 40%, #efefef 100%);
-}
-
-fieldset.tab {
+.ui-tabs fieldset.ui-tabs-panel {
border: 0;
padding: 0;
margin-left: 0;
+ background: none;
+}
+
+.ui-dialog .propform .ui-tabs-panel {
+ display: block;
+ background: #efefef;
+ padding: 0.5em 1em;
+}
+
+#image-selector-form.droptarget {
+ background: url(images/filedrop.png) center bottom no-repeat;
+}
+
+/** Common TinyMCE fixes **/
+.mce-btn-small .mce-ico {
+ display: inline; /* for old Firefox */
+}
+
+.mce-btn-small i {
+ line-height: 16px !important;
+ vertical-align: text-top !important;
}
diff --git a/skins/larry/templates/about.html b/skins/larry/templates/about.html
index e2bd0b019..b0d36d177 100644
--- a/skins/larry/templates/about.html
+++ b/skins/larry/templates/about.html
@@ -14,7 +14,7 @@
<roundcube:object name="aboutcontent" />
<h2 class="sysname">Roundcube Webmail <roundcube:object name="version" /></h2>
-<p class="copyright">Copyright &copy; 2005-2013, The Roundcube Dev Team</p>
+<p class="copyright">Copyright &copy; 2005-2014, The Roundcube Dev Team</p>
<p class="license">This program is free software; you can redistribute it and/or modify
it under the terms of the <a href="http://www.gnu.org/licenses/gpl.html" target="_blank">GNU General Public License</a>
as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.<br/>
diff --git a/skins/larry/templates/addressbook.html b/skins/larry/templates/addressbook.html
index 97efdc6f3..62bca3c84 100644
--- a/skins/larry/templates/addressbook.html
+++ b/skins/larry/templates/addressbook.html
@@ -4,31 +4,56 @@
<title><roundcube:object name="pagetitle" /></title>
<roundcube:include file="/includes/links.html" />
</head>
-<body class="noscroll">
+<roundcube:if condition="env:extwin" /><body class="noscroll extwin"><roundcube:else /><body class="noscroll"><roundcube:endif />
<roundcube:include file="/includes/header.html" />
<div id="mainscreen">
+<h1 class="voice"><roundcube:label name="addressbook" /></h1>
+
<!-- toolbar -->
-<div id="addressbooktoolbar" class="toolbar">
+<h2 id="aria-label-toolbar" class="voice"><roundcube:label name="arialabeltoolbar" /></h2>
+<div id="addressbooktoolbar" class="toolbar" role="toolbar" aria-labelledby="aria-label-toolbar">
<roundcube:button command="import" type="link" class="button import disabled" classAct="button import" classSel="button import pressed" label="import" title="importcontacts" />
<span class="dropbutton">
<roundcube:button command="export" type="link" class="button export disabled" classAct="button export" classSel="button export pressed" label="export" title="exportvcards" />
- <span class="dropbuttontip" id="exportmenulink" onclick="UI.show_popup('exportmenu');return false"></span>
+ <a href="#export" class="dropbuttontip" id="exportmenulink" onclick="return UI.toggle_popup('exportmenu',event)" aria-haspopup="true" aria-expanded="false" aria-owns="exportmenu-menu" tabindex="0"><roundcube:label name="arialabelcontactexportoptions" /></a>
</span>
<span class="spacer"></span>
<roundcube:button command="compose" type="link" class="button compose disabled" classAct="button compose" classSel="button compose pressed" label="compose" title="writenewmessage" />
<roundcube:button command="advanced-search" type="link" class="button search disabled" classAct="button search" classSel="button search pressed" label="advanced" title="advsearch" />
<roundcube:container name="toolbar" id="addressbooktoolbar" />
+
+ <div id="exportmenu" class="popupmenu" aria-hidden="true">
+ <h3 id="aria-label-exportmenu" class="voice"><roundcube:label name="arialabelcontactexportoptions" /></h3>
+ <ul id="exportmenu-menu" class="toolbarmenu" role="menu" aria-labelledby="aria-label-exportmenu">
+ <roundcube:button type="link-menuitem" command="export" label="exportall" prop="sub" class="exportalllink" classAct="exportalllink active" />
+ <roundcube:button type="link-menuitem" command="export-selected" label="exportsel" prop="sub" class="exportsellink" classAct="exportsellink active" />
+ </ul>
+ </div>
+
</div>
<!-- search box -->
-<div id="quicksearchbar" class="searchbox">
+<div id="quicksearchbar" class="searchbox" role="search" aria-labelledby="aria-label-searchform">
+<h2 id="aria-label-searchform" class="voice"><roundcube:label name="arialabelcontactsearchform" /></h2>
+<label for="quicksearchbox" class="voice"><roundcube:label name="arialabelquicksearchbox" /></label>
+<roundcube:button command="menu-open" prop="searchmenu" id="searchmenulink" class="iconbutton searchoptions" title="searchmod" label="options" aria-haspopup="true" aria-expanded="false" aria-owns="searchmenu-menu" />
<roundcube:object name="searchform" id="quicksearchbox" />
-<roundcube:button name="searchmenulink" id="searchmenulink" class="iconbutton searchoptions" onclick="UI.show_popup('searchmenu');return false" title="searchmod" content=" " />
-<roundcube:button command="reset-search" id="searchreset" class="iconbutton reset" title="resetsearch" content=" " />
+<roundcube:button command="reset-search" id="searchreset" class="iconbutton reset" title="resetsearch" label="resetsearch" />
+
+<div id="searchmenu" class="popupmenu" data-editable="true">
+ <h3 id="aria-label-searchmenu" class="voice"><roundcube:label name="searchmod" /></h3>
+ <ul class="toolbarmenu" id="searchmenu-menu" role="menu" aria-labelledby="aria-label-searchmenu">
+ <li role="menuitem"><label><input type="checkbox" name="s_mods[]" value="name" id="s_mod_name" onclick="UI.set_searchmod(this)" /> <span><roundcube:label name="name" /></span></label></li>
+ <li role="menuitem"><label><input type="checkbox" name="s_mods[]" value="firstname" id="s_mod_firstname" onclick="UI.set_searchmod(this)" /> <span><roundcube:label name="firstname" /></span></label></li>
+ <li role="menuitem"><label><input type="checkbox" name="s_mods[]" value="surname" id="s_mod_surname" onclick="UI.set_searchmod(this)" /> <span><roundcube:label name="surname" /></span></label></li>
+ <li role="menuitem"><label><input type="checkbox" name="s_mods[]" value="email" id="s_mod_email" onclick="UI.set_searchmod(this)" /> <span><roundcube:label name="email" /></span></label></li>
+ <li role="menuitem"><label><input type="checkbox" name="s_mods[]" value="*" id="s_mod_all" onclick="UI.set_searchmod(this)" /> <span><roundcube:label name="allfields" /></span></label></li>
+ </ul>
+</div>
</div>
<div id="mainscreencontent">
@@ -36,42 +61,66 @@
<div id="addressview-left">
<!-- sources/groups list -->
-<div id="directorylistbox" class="uibox listbox">
+<div id="directorylistbox" class="uibox listbox" role="navigation" aria-labelledby="directorylist-header">
<h2 id="directorylist-header" class="boxtitle"><roundcube:label name="groups" /></h2>
<div id="directorylist-content" class="scroller withfooter">
<roundcube:object name="directorylist" id="directorylist" class="treelist listing iconized" />
+ <h3 class="boxtitle voice"><roundcube:label name="savedsearches" /></h3>
+ <roundcube:object name="savedsearchlist" id="savedsearchlist" class="treelist listing iconized" />
</div>
<div id="directorylist-footer" class="boxfooter">
- <roundcube:button command="group-create" type="link" title="newcontactgroup" class="listbutton add disabled" classAct="listbutton add" innerClass="inner" content="+" /><roundcube:button name="groupoptions" id="groupoptionslink" type="link" title="moreactions" class="listbutton groupactions" onclick="UI.show_popup('groupoptions');return false" innerClass="inner" content="&#9881;" />
+ <roundcube:button command="group-create" type="link" title="newgroup" class="listbutton add disabled" classAct="listbutton add" innerClass="inner" label="addgroup" /><roundcube:button name="groupoptions" id="groupoptionslink" type="link" title="moreactions" class="listbutton groupactions" onclick="return UI.toggle_popup('groupoptions',event)" innerClass="inner" label="arialabelabookgroupoptions" aria-haspopup="true" aria-expanded="false" aria-owns="groupoptionsmenu" />
</div>
</div>
+<div id="groupoptions" class="popupmenu" aria-hidden="true">
+ <h3 id="aria-label-groupoptions" class="voice"><roundcube:label name="arialabelabookgroupoptions" /></h3>
+ <ul id="groupoptionsmenu" class="toolbarmenu" role="menu" aria-labelledby="aria-label-groupoptions">
+ <roundcube:button type="link-menuitem" command="group-rename" label="grouprename" classAct="active" />
+ <roundcube:button type="link-menuitem" command="group-delete" label="groupdelete" classAct="active" />
+ <roundcube:button type="link-menuitem" command="search-create" label="searchsave" classAct="active" />
+ <roundcube:button type="link-menuitem" command="search-delete" label="searchdelete" classAct="active" />
+ <roundcube:container name="groupoptions" id="groupoptionsmenu" />
+ </ul>
+</div>
+
</div><!-- end addressview-left -->
-<div id="addressview-right">
+<div id="addressview-right" role="main" aria-labelledby="aria-label-contactslist">
<!-- contacts list -->
<div id="addresslist" class="uibox listbox">
-<roundcube:object name="addresslisttitle" label="contacts" tag="h2" class="boxtitle" />
+<roundcube:object name="addresslisttitle" label="contacts" tag="h2" class="boxtitle" id="aria-label-contactslist" />
<div class="scroller withfooter">
-<roundcube:object name="addresslist" id="contacts-table" class="listing" noheader="true" />
+<roundcube:object name="addresslist" id="contacts-table" class="listing iconized" noheader="true" role="listbox" />
+</div>
+<div class="boxpagenav">
+ <roundcube:button command="firstpage" type="link" class="icon firstpage disabled" classAct="icon firstpage" title="firstpage" label="first" />
+ <roundcube:button command="previouspage" type="link" class="icon prevpage disabled" classAct="icon prevpage" title="previouspage" label="previous" />
+ <roundcube:button command="nextpage" type="link" class="icon nextpage disabled" classAct="icon nextpage" title="nextpage" label="next" />
+ <roundcube:button command="lastpage" type="link" class="icon lastpage disabled" classAct="icon lastpage" title="lastpage" label="last" />
</div>
<div class="boxfooter">
- <roundcube:button command="add" type="link" title="newcontact" class="listbutton add disabled" classAct="listbutton add" innerClass="inner" content="+" /><roundcube:button command="delete" type="link" title="deletecontact" class="listbutton delete disabled" classAct="listbutton delete" innerClass="inner" content="x" /><roundcube:button command="group-remove-selected" type="link" title="groupremoveselected" class="listbutton removegroup disabled" classAct="listbutton removegroup" innerClass="inner" content="-" />
- <roundcube:object name="recordsCountDisplay" class="countdisplay" label="fromtoshort" />
+ <roundcube:button command="add" type="link" title="newcontact" class="listbutton add disabled" classAct="listbutton add" innerClass="inner" label="addcontact" /><roundcube:button command="delete" type="link" title="deletecontact" class="listbutton delete disabled" classAct="listbutton delete" innerClass="inner" label="deletecontact" /><roundcube:button command="group-remove-selected" type="link" title="groupremoveselected" class="listbutton removegroup disabled" classAct="listbutton removegroup" innerClass="inner" label="groupremoveselected" />
+ <span class="countdisplay" aria-live="polite" aria-relevant="text">
+ <span class="voice"><roundcube:label name="contacts" /></span>
+ <roundcube:object name="recordsCountDisplay" label="fromtoshort" />
+ </span>
</div>
-<div class="boxpagenav">
- <roundcube:button command="firstpage" type="link" class="icon firstpage disabled" classAct="icon firstpage" title="firstpage" content="|&amp;lt;" />
- <roundcube:button command="previouspage" type="link" class="icon prevpage disabled" classAct="icon prevpage" title="previouspage" content="&amp;lt;" />
- <roundcube:button command="nextpage" type="link" class="icon nextpage disabled" classAct="icon nextpage" title="nextpage" content="&amp;gt;" />
- <roundcube:button command="lastpage" type="link" class="icon lastpage disabled" classAct="icon lastpage" title="lastpage" content="&amp;gt;|" />
</div>
+
+<div class="voice" role="note">
+<h3><roundcube:label name="helplistnavigation" /></h3>
+<pre>
+<roundcube:label name="helplistkeyboardnavigation" />
+<roundcube:label name="helplistkeyboardnavcontacts" />
+</pre>
</div>
<div id="contacts-box" class="uibox">
<div class="iframebox">
- <roundcube:object name="addressframe" id="contact-frame" style="width:100%; height:100%" frameborder="0" src="/watermark.html" />
+ <roundcube:object name="addressframe" id="contact-frame" style="width:100%; height:100%" frameborder="0" src="/watermark.html" title="contactproperties" />
</div>
</div>
@@ -81,37 +130,10 @@
</div><!-- end mainscreen -->
-<div id="exportmenu" class="popupmenu">
- <ul class="toolbarmenu">
- <li><roundcube:button command="export" label="exportall" prop="sub" class="exportalllink" classAct="exportalllink active" /></li>
- <li><roundcube:button command="export-selected" label="exportsel" prop="sub" class="exportsellink" classAct="exportsellink active" /></li>
- </ul>
-</div>
-
-<div id="searchmenu" class="popupmenu">
- <ul class="toolbarmenu">
- <li><label><input type="checkbox" name="s_mods[]" value="name" id="s_mod_name" onclick="UI.set_searchmod(this)" /> <span><roundcube:label name="name" /></span></label></li>
- <li><label><input type="checkbox" name="s_mods[]" value="firstname" id="s_mod_firstname" onclick="UI.set_searchmod(this)" /> <span><roundcube:label name="firstname" /></span></label></li>
- <li><label><input type="checkbox" name="s_mods[]" value="surname" id="s_mod_surname" onclick="UI.set_searchmod(this)" /> <span><roundcube:label name="surname" /></span></label></li>
- <li><label><input type="checkbox" name="s_mods[]" value="email" id="s_mod_email" onclick="UI.set_searchmod(this)" /> <span><roundcube:label name="email" /></span></label></li>
- <li><label><input type="checkbox" name="s_mods[]" value="*" id="s_mod_all" onclick="UI.set_searchmod(this)" /> <span><roundcube:label name="allfields" /></span></label></li>
- </ul>
-</div>
-
-<div id="groupoptions" class="popupmenu">
- <ul id="groupoptionsmenu" class="toolbarmenu">
- <li><roundcube:button command="group-rename" label="grouprename" classAct="active" /></li>
- <li><roundcube:button command="group-delete" label="groupdelete" classAct="active" /></li>
- <li><roundcube:button command="search-create" label="searchsave" classAct="active" /></li>
- <li><roundcube:button command="search-delete" label="searchdelete" classAct="active" /></li>
- <roundcube:container name="groupoptions" id="groupoptionsmenu" />
- </ul>
-</div>
-
-<div id="dragcontactmenu" class="popupmenu">
- <ul class="toolbarmenu">
- <li><roundcube:button command="move" onclick="return rcmail.drag_menu_action('move')" label="move" classAct="active" /></li>
- <li><roundcube:button command="copy" onclick="return rcmail.drag_menu_action('copy')" label="copy" classAct="active" /></li>
+<div id="dragcontactmenu" class="popupmenu" aria-hidden="true">
+ <ul class="toolbarmenu" role="menu">
+ <roundcube:button type="link-menuitem" command="move" onclick="return rcmail.drag_menu_action('move')" label="move" classAct="active" />
+ <roundcube:button type="link-menuitem" command="copy" onclick="return rcmail.drag_menu_action('copy')" label="copy" classAct="active" />
</ul>
</div>
diff --git a/skins/larry/templates/compose.html b/skins/larry/templates/compose.html
index d0338292b..04a987f89 100644
--- a/skins/larry/templates/compose.html
+++ b/skins/larry/templates/compose.html
@@ -13,66 +13,71 @@
<div id="mainscreen">
+<h1 class="voice"><roundcube:object name="pagetitle" /></h1>
+
<!-- toolbar -->
-<div id="messagetoolbar" class="fullwidth">
-<div id="mailtoolbar" class="toolbar">
- <roundcube:button command="list" type="link" class="button back disabled" classAct="button back" classSel="button back pressed" label="cancel" condition="!env:extwin" />
- <roundcube:button command="close" type="link" class="button close disabled" classAct="button close" classSel="button close pressed" label="cancel" condition="env:extwin" />
+<h2 id="aria-label-toolbar" class="voice"><roundcube:label name="arialabeltoolbar" /></h2>
+<div id="messagetoolbar" class="toolbar fullwidth" role="toolbar" aria-labelledby="aria-label-toolbar">
+ <roundcube:button command="list" type="link" class="button back disabled" classAct="button back" label="cancel" condition="!env:extwin" tabindex="2" />
+ <roundcube:button command="close" type="link" class="button close disabled" classAct="button close" label="cancel" condition="env:extwin" tabindex="2" />
<span class="spacer"></span>
- <roundcube:button command="send" type="link" class="button send" classAct="button send" classSel="button send pressed" label="send" title="sendmessage" />
- <roundcube:button command="savedraft" type="link" class="button savedraft" classAct="button savedraft" classSel="button savedraft pressed" label="save" title="savemessage" />
+ <roundcube:button command="send" type="link" class="button send disabled" classAct="button send" label="send" title="sendmessage" tabindex="2" />
+ <roundcube:button command="savedraft" type="link" class="button savedraft disabled" classAct="button savedraft" label="save" title="savemessage" tabindex="2" />
<span class="spacer"></span>
<roundcube:if condition="config:enable_spellcheck" />
<span class="dropbutton">
- <roundcube:button command="spellcheck" type="link" class="button spellcheck disabled" classAct="button spellcheck" classSel="button spellcheck pressed" label="spellcheck" title="checkspelling" />
- <span class="dropbuttontip" id="spellmenulink" onclick="UI.show_popup('spellmenu');return false"></span>
+ <roundcube:button command="spellcheck" type="link" class="button spellcheck disabled" classAct="button spellcheck" classSel="button spellcheck pressed" label="spellcheck" title="checkspelling" tabindex="2" />
+ <a href="#languages" class="dropbuttontip" id="spellmenulink" onclick="UI.toggle_popup('spellmenu',event);return false" aria-haspopup="true" aria-expanded="false" tabindex="2">Select Spell Language</a>
</span>
<roundcube:endif />
- <roundcube:button name="addattachment" type="link" class="button attach" classAct="button attach" classSel="button attach pressed" label="attach" title="addattachment" onclick="UI.show_uploadform();return false" />
- <roundcube:button command="insert-sig" type="link" class="button insertsig disabled" classAct="button insertsig" classSel="button insertsig pressed" label="signature" title="insertsignature" />
- <a href="#responses" class="button responses" label="responses" title="<roundcube:label name='insertresponse' />" id="responsesmenulink" unselectable="on" onmousedown="return false" onclick="UI.show_popup('responsesmenu');return false"><roundcube:label name="responses" /></a>
+ <roundcube:button name="addattachment" type="link" class="button attach" label="attach" title="addattachment" onclick="UI.show_uploadform(event);return false" aria-haspopup="true" aria-expanded="false"tabindex="2" />
+ <roundcube:button command="insert-sig" type="link" class="button insertsig disabled" classAct="button insertsig" label="signature" title="insertsignature" tabindex="2" />
+ <a href="#responses" class="button responses" label="responses" title="<roundcube:label name='insertresponse' />" id="responsesmenulink" unselectable="on" onmousedown="return false" onclick="UI.toggle_popup('responsesmenu',event);return false" tabindex="2" aria-haspopup="true" aria-expanded="false" aria-owns="textresponsesmenu"><roundcube:label name="responses" /></a>
<roundcube:container name="toolbar" id="compose-toolbar" />
</div>
-</div>
<div id="mainscreencontent">
<div id="composeview-left">
<!-- inline address book -->
-<div id="compose-contacts" class="uibox listbox">
-<h2 class="boxtitle"><roundcube:label name="contacts" /></h2>
- <div id="composequicksearch">
+<div id="compose-contacts" class="uibox listbox" role="region" aria-labelledby="aria-label-composecontacts">
+<h2 id="aria-label-composecontacts" class="boxtitle"><roundcube:label name="contacts" /></h2>
+ <div class="listsearchbox" role="search" aria-labelledby="aria-label-composequicksearch">
+ <h3 id="aria-label-composequicksearch" class="voice"><roundcube:label name="arialabelcontactquicksearch" /></h3>
<div class="searchbox">
+ <label for="contactsearchbox" class="voice"><roundcube:label name="arialabelcontactsearchbox" /></label>
<roundcube:object name="searchform" id="contactsearchbox" />
- <a id="searchmenulink" class="iconbutton searchoptions"> </a>
- <roundcube:button command="reset-search" id="searchreset" class="iconbutton reset" title="resetsearch" content=" " />
+ <a id="searchmenulink" class="iconbutton searchicon"> </a>
+ <roundcube:button command="reset-search" class="iconbutton reset" title="resetsearch" content=" " />
</div>
</div>
- <roundcube:object name="addressbooks" id="directorylist" class="listing" />
- <div class="scroller withfooter">
- <roundcube:object name="addresslist" id="contacts-table" class="listing" noheader="true" />
+ <roundcube:object name="addressbooks" id="directorylist" class="treelist listing" summary="ariasummarycomposecontacts" />
+ <div class="scroller withfooter" tabindex="-1">
+ <roundcube:object name="addresslist" id="contacts-table" class="listing iconized" noheader="true" role="listbox" />
</div>
<div class="boxfooter">
<roundcube:button command="add-recipient" prop="to" type="link" title="to" class="listbutton addto disabled" classAct="listbutton addto" innerClass="inner" content="To+" /><roundcube:button command="add-recipient" prop="cc" type="link" title="cc" class="listbutton addcc disabled" classAct="listbutton addcc" innerClass="inner" content="Cc+" /><roundcube:button command="add-recipient" prop="bcc" type="link" title="bcc" class="listbutton addbcc disabled" classAct="listbutton addbcc" innerClass="inner" content="Bcc+" />
</div>
<div class="boxpagenav">
- <roundcube:button command="firstpage" type="link" class="icon firstpage disabled" classAct="icon firstpage" title="firstpage" content="|&amp;lt;" />
- <roundcube:button command="previouspage" type="link" class="icon prevpage disabled" classAct="icon prevpage" title="previouspage" content="&amp;lt;" />
- <roundcube:button command="nextpage" type="link" class="icon nextpage disabled" classAct="icon nextpage" title="nextpage" content="&amp;gt;" />
- <roundcube:button command="lastpage" type="link" class="icon lastpage disabled" classAct="icon lastpage" title="lastpage" content="&amp;gt;|" />
+ <roundcube:button command="firstpage" type="link" class="icon firstpage disabled" classAct="icon firstpage" title="firstpage" label="first" />
+ <roundcube:button command="previouspage" type="link" class="icon prevpage disabled" classAct="icon prevpage" title="previouspage" label="previous" />
+ <roundcube:button command="nextpage" type="link" class="icon nextpage disabled" classAct="icon nextpage" title="nextpage" label="next" />
+ <roundcube:button command="lastpage" type="link" class="icon lastpage disabled" classAct="icon lastpage" title="lastpage" label="last" />
</div>
</div>
</div>
-<div id="composeview-right">
+<div id="composeview-right" role="main">
<roundcube:form name="form" method="post" id="compose-content" class="uibox">
<!-- message headers -->
-<div id="composeheaders">
-<a href="#options" id="composeoptionstoggle" class="moreheaderstoggle"><span class="iconlink" title="<roundcube:label name='options' />"></span></a>
+<div id="composeheaders" role="region" aria-labelledby="aria-label-composeheaders">
+<h2 id="aria-label-composeheaders" class="voice"><roundcube:label name="arialabelmessageheaders" /></h2>
+
+<a href="#options" id="composeoptionstoggle" class="moreheaderstoggle" title="<roundcube:label name='togglecomposeoptions' />" aria-exapnded="false"><span class="iconlink"></span></a>
<table class="headers-table compose-headers">
<tbody>
@@ -80,77 +85,78 @@
<td class="title"><label for="_from"><roundcube:label name="from" /></label></td>
<td class="editfield">
<roundcube:object name="composeHeaders" part="from" form="form" id="_from" tabindex="1" />
- <a href="#identities" onclick="return rcmail.command('identities')" class="iconlink edit"><roundcube:label name="editidents" /></a>
+ <a href="#identities" onclick="return rcmail.command('identities')" class="iconlink edit" tabindex="0"><roundcube:label name="editidents" /></a>
</td>
</tr><tr>
<td class="title top"><label for="_to"><roundcube:label name="to" /></label></td>
- <td class="editfield"><roundcube:object name="composeHeaders" part="to" form="form" id="_to" cols="70" rows="1" tabindex="2" /></td>
+ <td class="editfield"><roundcube:object name="composeHeaders" part="to" form="form" id="_to" cols="70" rows="1" tabindex="1" aria-required="true" /></td>
</tr><tr id="compose-cc">
<td class="title top">
<label for="_cc"><roundcube:label name="cc" /></label>
- <a href="#cc" onclick="return UI.hide_header_row('cc');" class="iconbutton cancel" title="<roundcube:label name='delete' />">x</a>
+ <a href="#cc" onclick="return UI.hide_header_row('cc');" class="iconbutton cancel" title="<roundcube:label name='delete' />" tabindex="3"><roundcube:label name="delete" /> <roundcube:label name="cc" /></a>
</td>
- <td class="editfield"><roundcube:object name="composeHeaders" part="cc" form="form" id="_cc" cols="70" rows="1" tabindex="3" /></td>
+ <td class="editfield"><roundcube:object name="composeHeaders" part="cc" form="form" id="_cc" cols="70" rows="1" tabindex="1" /></td>
</tr><tr id="compose-bcc">
<td class="title top">
<label for="_bcc"><roundcube:label name="bcc" /></label>
- <a href="#bcc" onclick="return UI.hide_header_row('bcc');" class="iconbutton cancel" title="<roundcube:label name='delete' />">x</a>
+ <a href="#bcc" onclick="return UI.hide_header_row('bcc');" class="iconbutton cancel" title="<roundcube:label name='delete' />" tabindex="3"><roundcube:label name="delete" /> <roundcube:label name="bcc" /></a>
</td>
- <td class="editfield"><roundcube:object name="composeHeaders" part="bcc" form="form" id="_bcc" cols="70" rows="1" tabindex="4" /></td>
+ <td class="editfield"><roundcube:object name="composeHeaders" part="bcc" form="form" id="_bcc" cols="70" rows="1" tabindex="1" /></td>
</tr><tr id="compose-replyto">
<td class="title top">
<label for="_replyto"><roundcube:label name="replyto" /></label>
- <a href="#replyto" onclick="return UI.hide_header_row('replyto');" class="iconbutton cancel" title="<roundcube:label name='delete' />">x</a>
+ <a href="#replyto" onclick="return UI.hide_header_row('replyto');" class="iconbutton cancel" title="<roundcube:label name='delete' />" tabindex="3"><roundcube:label name="delete" /> <roundcube:label name="replyto" /></a>
</td>
- <td class="editfield"><roundcube:object name="composeHeaders" part="replyto" form="form" id="_replyto" size="70" tabindex="5" /></td>
+ <td class="editfield"><roundcube:object name="composeHeaders" part="replyto" form="form" id="_replyto" size="70" tabindex="1" /></td>
</tr><tr id="compose-followupto">
<td class="title top">
<label for="_followupto"><roundcube:label name="followupto" /></label>
- <a href="#followupto" onclick="return UI.hide_header_row('followupto');" class="iconbutton cancel" title="<roundcube:label name='delete' />">x</a>
+ <a href="#followupto" onclick="return UI.hide_header_row('followupto');" class="iconbutton cancel" title="<roundcube:label name='delete' />" tabindex="3"><roundcube:label name="delete" /> <roundcube:label name="followupto" /></a>
</td>
- <td class="editfield"><roundcube:object name="composeHeaders" part="followupto" form="form" id="_followupto" size="70" tabindex="7" /></td>
+ <td class="editfield"><roundcube:object name="composeHeaders" part="followupto" form="form" id="_followupto" size="70" tabindex="1" /></td>
</tr><tr>
<td></td>
<td class="formlinks">
- <a href="#cc" onclick="return UI.show_header_row('cc')" id="cc-link" class="iconlink add"><roundcube:label name="addcc" /></a>
- <a href="#bcc" onclick="return UI.show_header_row('bcc')" id="bcc-link" class="iconlink add"><roundcube:label name="addbcc" /></a>
- <a href="#reply-to" onclick="return UI.show_header_row('replyto')" id="replyto-link" class="iconlink add"><roundcube:label name="addreplyto" /></a>
- <a href="#followup-to" onclick="return UI.show_header_row('followupto')" id="followupto-link" class="iconlink add"><roundcube:label name="addfollowupto" /></a>
+ <a href="#cc" onclick="return UI.show_header_row('cc')" id="cc-link" class="iconlink add" tabindex="3"><roundcube:label name="addcc" /></a>
+ <a href="#bcc" onclick="return UI.show_header_row('bcc')" id="bcc-link" class="iconlink add" tabindex="3"><roundcube:label name="addbcc" /></a>
+ <a href="#reply-to" onclick="return UI.show_header_row('replyto')" id="replyto-link" class="iconlink add" tabindex="3"><roundcube:label name="addreplyto" /></a>
+ <a href="#followup-to" onclick="return UI.show_header_row('followupto')" id="followupto-link" class="iconlink add" tabindex="3"><roundcube:label name="addfollowupto" /></a>
</td>
</tr><tr>
<td class="title"><label for="compose-subject"><roundcube:label name="subject" /></label></td>
- <td class="editfield"><roundcube:object name="composeSubject" id="compose-subject" form="form" tabindex="8" /></td>
+ <td class="editfield"><roundcube:object name="composeSubject" id="compose-subject" form="form" tabindex="1" /></td>
</tr>
</tbody>
</table>
<div id="composebuttons" class="formbuttons">
- <roundcube:button command="extwin" type="link" class="button extwin" classSel="button extwin pressed" innerClass="icon" title="openinextwin" content="[]" condition="!env:extwin" />
+ <roundcube:button command="extwin" type="link" class="button extwin" classSel="button extwin pressed" innerClass="icon" title="openinextwin" label="openinextwin" condition="!env:extwin" />
</div>
<!-- (collapsable) message options -->
-<div id="composeoptions">
+<div id="composeoptions" role="region" aria-labelledby="aria-label-composeoptions">
+ <h2 id="aria-label-composeoptions" class="voice"><roundcube:label name="arialabelcomposeoptions" /></h2>
<roundcube:if condition="!in_array('htmleditor', (array)config:dont_override)" />
<span class="composeoption">
<label><roundcube:label name="editortype" />
- <roundcube:object name="editorSelector" editorid="composebody" tabindex="14" /></label>
+ <roundcube:object name="editorSelector" editorid="composebody" tabindex="4" /></label>
</span>
<roundcube:endif />
<span class="composeoption">
<label for="rcmcomposepriority"><roundcube:label name="priority" />
- <roundcube:object name="prioritySelector" form="form" id="rcmcomposepriority" /></label>
+ <roundcube:object name="prioritySelector" form="form" id="rcmcomposepriority" tabindex="4" /></label>
</span>
<span class="composeoption">
- <label><roundcube:object name="receiptCheckBox" form="form" id="rcmcomposereceipt" /> <roundcube:label name="returnreceipt" /></label>
+ <label><roundcube:object name="receiptCheckBox" form="form" id="rcmcomposereceipt" tabindex="4" /> <roundcube:label name="returnreceipt" /></label>
</span>
<roundcube:if condition="config:smtp_server != ''" />
<span class="composeoption">
- <label><roundcube:object name="dsnCheckBox" form="form" id="rcmcomposedsn" /> <roundcube:label name="dsn" /></label>
+ <label><roundcube:object name="dsnCheckBox" form="form" id="rcmcomposedsn" tabindex="4" /> <roundcube:label name="dsn" /></label>
</span>
<roundcube:endif />
<roundcube:if condition="!config:no_save_sent_messages" />
<span class="composeoption">
- <label><roundcube:label name="savesentmessagein" /> <roundcube:object name="storetarget" maxlength="30" style="max-width:12em" /></label>
+ <label><roundcube:label name="savesentmessagein" /> <roundcube:object name="storetarget" maxlength="30" style="max-width:12em" tabindex="4" /></label>
</span>
<roundcube:endif />
<roundcube:container name="composeoptions" id="composeoptions" />
@@ -161,13 +167,15 @@
<!-- message compose body -->
<div id="composeview-bottom">
<div id="composebodycontainer">
- <roundcube:object name="composeBody" id="composebody" form="form" cols="70" rows="20" tabindex="9" />
+ <label for="composebody" class="voice"><roundcube:label name="arialabelmessagebody" /></label>
+ <roundcube:object name="composeBody" id="composebody" form="form" cols="70" rows="20" tabindex="1" />
</div>
- <div id="compose-attachments" class="rightcol">
+ <div id="compose-attachments" class="rightcol" role="region" aria-labelledby="aria-label-composeattachments">
+ <h2 id="aria-label-composeattachments" class="voice"><roundcube:label name="attachments" /></h2>
<div style="text-align:center; margin-bottom:20px">
- <roundcube:button name="addattachment" type="input" class="button" classSel="button pressed" label="addattachment" onclick="UI.show_uploadform();return false" />
+ <roundcube:button name="addattachment" type="input" class="button" classSel="button pressed" label="addattachment" onclick="UI.show_uploadform(event);return false" tabindex="1" />
</div>
- <roundcube:object name="composeAttachmentList" id="attachment-list" class="attachmentslist" />
+ <roundcube:object name="composeAttachmentList" id="attachment-list" class="attachmentslist" tabindex="1" />
<roundcube:object name="fileDropArea" id="compose-attachments" />
</div>
<!--
@@ -187,7 +195,8 @@
</div><!-- end mainscreen -->
-<div id="upload-dialog" class="propform popupdialog" title="<roundcube:label name='addattachment' />">
+<div id="upload-dialog" class="propform popupdialog" title="<roundcube:label name='addattachment' />" aria-hidden="true">
+ <h2 id="aria-label-uploaddialog" class="voice"><roundcube:label name="arialabelattachmentuploadform" /></h2>
<roundcube:object name="composeAttachmentForm" id="uploadform" buttons="no" />
<div class="formbuttons">
<roundcube:button command="send-attachment" type="input" class="button mainaction" label="upload" />
@@ -195,15 +204,16 @@
</div>
</div>
-<div id="spellmenu" class="popupmenu"></div>
+<div id="spellmenu" class="popupmenu" aria-hidden="true"></div>
-<div id="responsesmenu" class="popupmenu">
- <ul class="toolbarmenu" id="textresponsesmenu">
- <li class="separator" id=""><label><roundcube:label name="insertresponse" /></label></li>
+<div id="responsesmenu" class="popupmenu" aria-hidden="true">
+ <h3 id="aria-label-responsesmenu" class="voice"><roundcube:label name="arialabelresponsesmenu" /></h3>
+ <ul class="toolbarmenu" id="textresponsesmenu" role="menu" aria-labelledby="aria-label-responsesmenu">
+ <li role="separator" class="separator" id=""><label><roundcube:label name="insertresponse" /></label></li>
<roundcube:object name="responseslist" id="responseslist" tagname="ul" itemclass="active" />
- <li class="separator"><label><roundcube:label name="manageresponses" /></label></li>
- <li><roundcube:button command="save-response" type="link" label="savenewresponse" classAct="active" unselectable="on" /></li>
- <li><roundcube:button command="responses" type="link" label="editresponses" classAct="active" /></li>
+ <li role="separator" class="separator"><label><roundcube:label name="manageresponses" /></label></li>
+ <roundcube:button command="save-response" type="link-menuitem" label="newresponse" classAct="active" unselectable="on" />
+ <roundcube:button command="responses" type="link-menuitem" label="editresponses" classAct="active" />
</ul>
</div>
diff --git a/skins/larry/templates/contactedit.html b/skins/larry/templates/contactedit.html
index 3467ebe8e..da7953eae 100644
--- a/skins/larry/templates/contactedit.html
+++ b/skins/larry/templates/contactedit.html
@@ -6,17 +6,15 @@
</head>
<body class="iframe">
-<h1 class="boxtitle">
- <roundcube:if condition="env:action=='add'" /><roundcube:label name="addcontact" />
- <roundcube:else /><roundcube:label name="editcontact" />
-<roundcube:endif /></h1>
+<h1 class="boxtitle"><roundcube:object name="steptitle" /></h1>
<roundcube:form name="editform" method="post" id="contact-details" class="boxcontent">
<roundcube:if condition="strlen(env:sourcename)" />
<div id="sourcename"><roundcube:label name="addressbook" />: <roundcube:var name="env:sourcename" condition="env:action!='add'" /><roundcube:object name="sourceselector" id="sourceselect" condition="env:action=='add'" /></div>
<roundcube:endif />
- <div id="contactphoto">
+ <fieldset id="contactphoto">
+ <legend class="voice"><roundcube:label name="contactphoto" /></legend>
<roundcube:object name="contactphoto" id="contactpic" placeholder="/images/contactpic.png" />
<roundcube:if condition="env:photocol" />
<roundcube:object name="fileDropArea" id="contactpic" />
@@ -25,7 +23,7 @@
<roundcube:button command="delete-photo" type="link" label="delete" class="iconlink delete disabled" classAct="iconlink delete active" condition="env:photocol" />
</div>
<roundcube:endif />
- </div>
+ </fieldset>
<roundcube:object name="contactedithead" id="contacthead" size="16" form="editform" />
<br style="clear:both" />
diff --git a/skins/larry/templates/folders.html b/skins/larry/templates/folders.html
index 56396bf1d..c707d3396 100644
--- a/skins/larry/templates/folders.html
+++ b/skins/larry/templates/folders.html
@@ -4,27 +4,53 @@
<title><roundcube:object name="pagetitle" /></title>
<roundcube:include file="/includes/links.html" />
</head>
-<body class="noscroll">
+<roundcube:if condition="env:extwin" /><body class="noscroll extwin"><roundcube:else /><body class="noscroll"><roundcube:endif />
<roundcube:include file="/includes/header.html" />
<div id="mainscreen" class="offset">
+<h1 class="voice"><roundcube:label name="settings" /> : <roundcube:label name="folders" /></h1>
+
<roundcube:include file="/includes/settingstabs.html" />
-<div id="settings-right">
+<div id="settings-right" role="main">
<div id="folderslist" class="uibox listbox">
-<h2 id="folderslist-header" class="boxtitle"><span style="float:right"><roundcube:label name="subscribed" /></span><roundcube:label name="folders" /></h2>
+<h2 id="folderslist-header" class="boxtitle">
+ <roundcube:label name="folders" />
+ <a href="#folders" class="iconbutton search" title="<roundcube:label name='findfolders' />" tabindex="0"><roundcube:label name='findfolders' /></a>
+</h2>
+<div class="listsearchbox">
+ <roundcube:object name="folderfilter" id="folderlist-filter" />
+ <div class="searchbox" role="search" aria-labelledby="aria-label-foldersearchform">
+ <h3 id="aria-label-foldersearchform" class="voice"><roundcube:label name="arialabelfoldersearchform" /></h3>
+ <label for="foldersearch" class="voice"><roundcube:label name="arialabelsearchterms" /></label>
+ <input type="text" name="q" id="foldersearch" placeholder="<roundcube:label name='findfolders' />" />
+ <a class="iconbutton searchicon"></a>
+ <roundcube:button command="reset-foldersearch" id="folderlistsearch-reset" class="iconbutton reset" title="resetsearch" label="resetsearch" />
+ </div>
+</div>
<div id="folderslist-content" class="scroller withfooter">
-<roundcube:object name="foldersubscription" form="subscriptionform" id="subscription-table" class="listing" noheader="true" />
+ <roundcube:object name="foldersubscription" form="subscriptionform" id="subscription-table" class="treelist listing folderlist" />
</div>
<div id="folderslist-footer" class="boxfooter">
- <roundcube:button command="create-folder" type="link" title="createfolder" class="listbutton add disabled" classAct="listbutton add" innerClass="inner" content="+" /><roundcube:button name="mailboxmenulink" id="mailboxmenulink" type="link" title="folderactions" class="listbutton groupactions" onclick="UI.show_popup('mailboxmenu');return false" innerClass="inner" content="&#9881;" />
+ <roundcube:button command="create-folder" type="link" title="createfolder" class="listbutton add disabled" classAct="listbutton add" innerClass="inner" label="createfolder" /><roundcube:button name="mailboxmenulink" id="mailboxmenulink" type="link" title="folderactions" class="listbutton groupactions" onclick="return UI.toggle_popup('mailboxmenu',event)" innerClass="inner" content="&#9881;" aria-haspopup="true" aria-expanded="false" aria-owns="mailboxoptionsmenu" />
<roundcube:if condition="env:quota" />
+ <span class="voice"><roundcube:label name="quota"></span>
<roundcube:object name="quotaDisplay" id="quotadisplay" class="countdisplay" display="text" />
<roundcube:endif />
</div>
+
+<div id="mailboxmenu" class="popupmenu" aria-hidden="true">
+ <h3 id="aria-label-mailboxmenu" class="voice"><roundcube:label name="arialabelmailboxmenu" /></h3>
+ <ul class="toolbarmenu" id="mailboxoptionsmenu" role="menu" aria-labelledby="aria-label-mailboxmenu">
+ <roundcube:button command="delete-folder" type="link-menuitem" label="delete" classAct="active" />
+ <roundcube:button command="purge" type="link-menuitem" label="empty" classAct="active" />
+ <roundcube:container name="mailboxoptions" id="mailboxoptionsmenu" />
+ </ul>
+</div>
+
</div>
<div id="folder-details" class="uibox contentbox">
@@ -37,14 +63,6 @@
</div>
-<div id="mailboxmenu" class="popupmenu">
- <ul class="toolbarmenu" id="mailboxoptionsmenu">
- <li><roundcube:button command="delete-folder" label="delete" classAct="active" /></li>
- <li><roundcube:button command="purge" type="link" label="empty" classAct="active" /></li>
- <roundcube:container name="mailboxoptions" id="mailboxoptionsmenu" />
- </ul>
-</div>
-
<roundcube:include file="/includes/footer.html" />
</body>
diff --git a/skins/larry/templates/identities.html b/skins/larry/templates/identities.html
index e3d2cc842..163469d16 100644
--- a/skins/larry/templates/identities.html
+++ b/skins/larry/templates/identities.html
@@ -4,29 +4,30 @@
<title><roundcube:object name="pagetitle" /></title>
<roundcube:include file="/includes/links.html" />
</head>
-<body class="noscroll">
+<roundcube:if condition="env:extwin" /><body class="noscroll extwin"><roundcube:else /><body class="noscroll"><roundcube:endif />
<roundcube:include file="/includes/header.html" />
<div id="mainscreen" class="offset">
+<h1 class="voice"><roundcube:label name="settings" /> : <roundcube:label name="identities" /></h1>
+
<roundcube:include file="/includes/settingstabs.html" />
-<div id="settings-right">
-
+<div id="settings-right" role="main" aria-labelledby="aria-label-identitieslist">
<div id="identitieslist" class="uibox listbox">
-<h2 class="boxtitle"><roundcube:label name="identities" /></h2>
+<h2 class="boxtitle" id="aria-label-identitieslist"><roundcube:label name="identities" /></h2>
<div class="scroller withfooter">
-<roundcube:object name="identitiesList" id="identities-table" class="listing" cellspacing="0" summary="Identities list" noheader="true" editIcon="" />
+<roundcube:object name="identitiesList" id="identities-table" class="listing" noheader="true" editIcon="" role="listbox" />
</div>
<div class="boxfooter">
-<roundcube:button command="add" type="link" title="newidentity" class="listbutton add disabled" classAct="listbutton add" innerClass="inner" content="+" condition="config:identities_level:0<2" /><roundcube:button command="delete" type="link" title="delete" class="listbutton delete disabled" classAct="listbutton delete" innerClass="inner" content="-" condition="config:identities_level:0<2" />
+<roundcube:button command="add" type="link" title="newidentity" class="listbutton add disabled" classAct="listbutton add" innerClass="inner" label="addidentity" condition="config:identities_level:0<2" /><roundcube:button command="delete" type="link" title="delete" class="listbutton delete disabled" classAct="listbutton delete" innerClass="inner" label="delete" condition="config:identities_level:0<2" />
</div>
</div>
<div id="identity-details" class="uibox contentbox">
<div class="iframebox">
- <roundcube:object name="identityframe" id="preferences-frame" style="width:100%; height:100%" frameborder="0" src="/watermark.html" />
+ <roundcube:object name="identityframe" id="preferences-frame" style="width:100%; height:100%" frameborder="0" src="/watermark.html" title="arialabelidentityeditfrom" />
</div>
</div>
diff --git a/skins/larry/templates/importcontacts.html b/skins/larry/templates/importcontacts.html
index a670d0354..f18338cc0 100644
--- a/skins/larry/templates/importcontacts.html
+++ b/skins/larry/templates/importcontacts.html
@@ -4,26 +4,29 @@
<title><roundcube:object name="pagetitle" /></title>
<roundcube:include file="/includes/links.html" />
</head>
-<body>
+<roundcube:if condition="env:extwin" /><body class="extwin"><roundcube:else /><body><roundcube:endif />
<roundcube:include file="/includes/header.html" />
<div id="mainscreen">
-<div id="addressbooktoolbar" class="toolbar">
+<h1 class="voice"><roundcube:label name="addressbook" /> : <roundcube:label name="importcontacts" /></h1>
+
+<h2 id="aria-label-toolbar" class="voice"><roundcube:label name="arialabeltoolbar" /></h2>
+<div id="addressbooktoolbar" class="toolbar" role="toolbar" aria-labelledby="aria-label-toolbar">
<roundcube:button command="list" type="link" class="button back disabled" classAct="button back" classSel="button back pressed" label="back" />
</div>
-<div id="pluginbody" class="offset uibox contentbox">
-<h2 class="boxtitle"><roundcube:label name="importcontacts" /></h2>
+<div id="mainscreencontent" class="uibox contentbox">
+ <h2 class="boxtitle"><roundcube:label name="importcontacts" /></h2>
-<div id="import-box" class="boxcontent">
-<roundcube:object name="importstep" class="propform" />
-<br/>
-<p class="formbuttons">
- <roundcube:object name="importnav" class="button" />
-</p>
-</div>
+ <div id="import-box" class="boxcontent">
+ <roundcube:object name="importstep" class="propform" />
+ <br/>
+ <p class="formbuttons">
+ <roundcube:object name="importnav" class="button" />
+ </p>
+ </div>
</div>
</div>
diff --git a/skins/larry/templates/login.html b/skins/larry/templates/login.html
index 64ff6be92..557b029ee 100644
--- a/skins/larry/templates/login.html
+++ b/skins/larry/templates/login.html
@@ -7,8 +7,10 @@
</head>
<body>
+<h1 class="voice"><roundcube:object name="productname" /> <roundcube:label name="login" /></h1>
+
<div id="login-form">
-<div class="box-inner">
+<div class="box-inner" role="main">
<roundcube:object name="logo" src="/images/roundcube_logo.png" id="logo" />
<roundcube:form name="form" method="post">
@@ -17,15 +19,15 @@
</div>
-<div class="box-bottom">
+<div class="box-bottom" role="complementary">
<roundcube:object name="message" id="message" />
<noscript>
<p class="noscriptwarning"><roundcube:label name="noscriptwarning" /></p>
</noscript>
</div>
-<div id="bottomline">
- <roundcube:var name="config:product_name"> <roundcube:object name="version" condition="config:display_version" />
+<div id="bottomline" role="contentinfo">
+ <roundcube:object name="productname" /> <roundcube:object name="version" condition="config:display_version" />
<roundcube:if condition="config:support_url" />
&nbsp;&#9679;&nbsp; <a href="<roundcube:var name='config:support_url' />" target="_blank" class="support-link"><roundcube:label name="support" /></a>
<roundcube:endif />
diff --git a/skins/larry/templates/mail.html b/skins/larry/templates/mail.html
index 1e4a3ce8c..2c4e0f2c5 100644
--- a/skins/larry/templates/mail.html
+++ b/skins/larry/templates/mail.html
@@ -17,8 +17,11 @@
<div id="mainscreen">
+<h1 class="voice"><roundcube:label name="mail" /></h1>
+
<!-- toolbar -->
-<div id="messagetoolbar" class="toolbar">
+<h2 id="aria-label-toolbar" class="voice"><roundcube:label name="arialabeltoolbar" /></h2>
+<div id="messagetoolbar" class="toolbar" role="toolbar" aria-labelledby="aria-label-toolbar">
<roundcube:button command="checkmail" type="link" class="button checkmail disabled" classAct="button checkmail" classSel="button checkmail pressed" label="refresh" title="checkmail" />
<roundcube:include file="/includes/mailtoolbar.html" />
</div>
@@ -27,14 +30,35 @@
<!-- search filter -->
<div id="searchfilter">
- <roundcube:object name="searchfilter" class="searchfilter decorated" />
+ <label for="messagessearchfilter" class="voice"><roundcube:label name="arialabelmessagessearchfilter" /></label>
+ <roundcube:object name="searchfilter" class="searchfilter decorated" id="messagessearchfilter" aria-controls="messagelist" />
</div>
<!-- search box -->
-<div id="quicksearchbar" class="searchbox">
+<div id="quicksearchbar" class="searchbox" role="search" aria-labelledby="aria-label-searchform">
+<h2 id="aria-label-searchform" class="voice"><roundcube:label name="arialabelmailsearchform" /></h2>
+<label for="quicksearchbox" class="voice"><roundcube:label name="arialabelmailquicksearchbox" /></label>
+<roundcube:button command="menu-open" prop="searchmenu" id="searchmenulink" class="iconbutton searchoptions" title="searchmod" label="options" aria-haspopup="true" aria-expanded="false" aria-owns="searchmenu-menu" />
<roundcube:object name="searchform" id="quicksearchbox" />
-<roundcube:button name="searchmenulink" id="searchmenulink" class="iconbutton searchoptions" onclick="UI.show_popup('searchmenu');return false" title="searchmod" content=" " />
-<roundcube:button command="reset-search" id="searchreset" class="iconbutton reset" title="resetsearch" content=" " />
+<roundcube:button command="reset-search" id="searchreset" class="iconbutton reset" title="resetsearch" label="resetsearch" />
+
+<div id="searchmenu" class="popupmenu" data-editable="true">
+ <h3 id="aria-label-searchmenu" class="voice"><roundcube:label name="searchmod" /></h3>
+ <ul class="toolbarmenu" id="searchmenu-menu" role="menu" aria-labelledby="aria-label-searchmenu">
+ <li role="menuitem"><label><input type="checkbox" name="s_mods[]" value="subject" id="s_mod_subject" onclick="UI.set_searchmod(this)" /> <span><roundcube:label name="subject" /></span></label></li>
+ <li role="menuitem"><label><input type="checkbox" name="s_mods[]" value="from" id="s_mod_from" onclick="UI.set_searchmod(this)" /> <span><roundcube:label name="from" /></span></label></li>
+ <li role="menuitem"><label><input type="checkbox" name="s_mods[]" value="to" id="s_mod_to" onclick="UI.set_searchmod(this)" /> <span><roundcube:label name="to" /></span></label></li>
+ <li role="menuitem"><label><input type="checkbox" name="s_mods[]" value="cc" id="s_mod_cc" onclick="UI.set_searchmod(this)" /> <span><roundcube:label name="cc" /></span></label></li>
+ <li role="menuitem"><label><input type="checkbox" name="s_mods[]" value="bcc" id="s_mod_bcc" onclick="UI.set_searchmod(this)" /> <span><roundcube:label name="bcc" /></span></label></li>
+ <li role="menuitem"><label><input type="checkbox" name="s_mods[]" value="body" id="s_mod_body" onclick="UI.set_searchmod(this)" /> <span><roundcube:label name="body" /></span></label></li>
+ <li role="menuitem"><label><input type="checkbox" name="s_mods[]" value="text" id="s_mod_text" onclick="UI.set_searchmod(this)" /> <span><roundcube:label name="msgtext" /></span></label></li>
+ <li role="separator" class="separator"><label><roundcube:label name="searchscope" /></label></li>
+ <li role="menuitem"><label><input type="radio" name="s_scope" value="base" id="s_scope_base" onclick="UI.set_searchscope(this)" /> <span><roundcube:label name="currentfolder" /></span></label></li>
+ <li role="menuitem"><label><input type="radio" name="s_scope" value="sub" id="s_scope_sub" onclick="UI.set_searchscope(this)" /> <span><roundcube:label name="subfolders" /></span></label></li>
+ <li role="menuitem"><label><input type="radio" name="s_scope" value="all" id="s_scope_all" onclick="UI.set_searchscope(this)" /> <span><roundcube:label name="allfolders" /></span></label></li>
+ </ul>
+</div>
+
</div>
</div>
@@ -43,13 +67,15 @@
<div id="mailview-left">
<!-- folders list -->
-<div id="mailboxcontainer" class="uibox listbox">
+<div id="mailboxcontainer" class="uibox listbox" role="navigation" aria-labelledby="aria-label-folderlist">
+<h2 id="aria-label-folderlist" class="voice"><roundcube:label name="arialabelfolderlist" /></h2>
<div id="folderlist-content" class="scroller withfooter">
-<roundcube:object name="mailboxlist" id="mailboxlist" class="treelist listing" folder_filter="mail" unreadwrap="%s" />
+ <roundcube:object name="mailboxlist" id="mailboxlist" class="treelist listing folderlist" folder_filter="mail" unreadwrap="%s" />
</div>
<div id="folderlist-footer" class="boxfooter">
- <roundcube:button name="mailboxmenulink" id="mailboxmenulink" type="link" title="folderactions" class="listbutton groupactions" onclick="UI.show_popup('mailboxmenu');return false" innerClass="inner" content="&#9881;" />
+ <roundcube:button name="mailboxmenulink" id="mailboxmenulink" type="link" title="folderactions" class="listbutton groupactions" onclick="UI.toggle_popup('mailboxmenu',event);return false" innerClass="inner" content="&#9881;" aria-haspopup="true" aria-expanded="false" aria-owns="mailboxoptionsmenu" />
<roundcube:if condition="env:quota" />
+ <span class="voice"><roundcube:label name="quota"></span>
<roundcube:object name="quotaDisplay" id="quotadisplay" class="countdisplay" display="text" />
<roundcube:endif />
</div>
@@ -57,7 +83,7 @@
</div>
-<div id="mailview-right">
+<div id="mailview-right" role="main">
<roundcube:if condition="config:preview_pane == true" />
<div id="mailview-top" class="uibox">
@@ -67,10 +93,20 @@
<!-- messagelist -->
<div id="messagelistcontainer" class="boxlistcontent">
+<h2 id="aria-label-messagelist" class="voice"><roundcube:label name="arialabelmessagelist" /></h2>
<roundcube:object name="messages"
id="messagelist"
class="records-table messagelist sortheader fixedheader"
- optionsmenuIcon="true" />
+ optionsmenuIcon="true"
+ aria-labelledby="aria-label-messagelist" />
+</div>
+
+<div class="voice" role="note">
+<h3><roundcube:label name="helplistnavigation" /></h3>
+<pre>
+<roundcube:label name="helplistkeyboardnavigation" />
+<roundcube:label name="helplistkeyboardnavmessages" />
+</pre>
</div>
<!-- list footer -->
@@ -81,33 +117,34 @@
</div>
<div id="listselectors">
- <a href="#select" id="listselectmenulink" class="menuselector" onclick="UI.show_popup('listselectmenu');return false"><span class="handle"><roundcube:label name="select" /></span></a>
+ <a href="#select" id="listselectmenulink" class="menuselector" onclick="UI.toggle_popup('listselectmenu', event);return false" aria-haspopup="true" aria-expanded="false" aria-owns="listselectmenu-menu"><span class="handle"><roundcube:label name="select" /></span></a>
<roundcube:if condition="env:threads" />
- &nbsp; <a href="#threads" id="threadselectmenulink" class="menuselector" onclick="UI.show_popup('threadselectmenu');return false"><span class="handle"><roundcube:label name="threads" /></span></a>
+ &nbsp; <a href="#threads" id="threadselectmenulink" class="menuselector" onclick="UI.toggle_popup('threadselectmenu', event);return false" aria-haspopup="true" aria-expanded="false" aria-owns="threadselectmenu-menu"><span class="handle"><roundcube:label name="threads" /></span></a>
<roundcube:endif />
</div>
<div id="countcontrols" class="pagenav dark">
- <roundcube:object name="messageCountDisplay" class="countdisplay" />
+ <roundcube:object name="messageCountDisplay" class="countdisplay" aria-live="polite" aria-relevant="text" />
<span class="pagenavbuttons">
- <roundcube:button command="firstpage" type="link" class="button firstpage disabled" classAct="button firstpage" classSel="button firstpage pressed" innerClass="inner" title="firstpage" content="|&amp;lt;" />
- <roundcube:button command="previouspage" type="link" class="button prevpage disabled" classAct="button prevpage" classSel="button prevpage pressed" innerClass="inner" title="previouspage" content="&amp;lt;" />
- <roundcube:button command="nextpage" type="link" class="button nextpage disabled" classAct="button nextpage" classSel="button nextpage pressed" innerClass="inner" title="nextpage" content="&amp;gt;" />
- <roundcube:button command="lastpage" type="link" class="button lastpage disabled" classAct="button lastpage" classSel="button lastpage pressed" innerClass="inner" title="lastpage" content="&amp;gt;|" />
+ <roundcube:button command="firstpage" type="link" class="button firstpage disabled" classAct="button firstpage" classSel="button firstpage pressed" innerClass="inner" title="firstpage" label="first" />
+ <roundcube:button command="previouspage" type="link" class="button prevpage disabled" classAct="button prevpage" classSel="button prevpage pressed" innerClass="inner" title="previouspage" label="previous" />
+ <roundcube:button command="nextpage" type="link" class="button nextpage disabled" classAct="button nextpage" classSel="button nextpage pressed" innerClass="inner" title="nextpage" label="next" />
+ <roundcube:button command="lastpage" type="link" class="button lastpage disabled" classAct="button lastpage" classSel="button lastpage pressed" innerClass="inner" title="lastpage" label="last" />
</span>
</div>
<roundcube:container name="listcontrols" id="listcontrols" />
- <a href="#preview" id="mailpreviewtoggle" title="<roundcube:label name='previewpane' />"></a>
+ <a href="#preview" id="mailpreviewtoggle" class="iconbutton" title="<roundcube:label name='previewpane' />" role="button" tabindex="0"><roundcube:label name="previewpane" /></a>
</div>
</div><!-- end mailview-top -->
<div id="mailview-bottom" class="uibox">
-<div id="mailpreviewframe" class="iframebox">
-<roundcube:object name="messagecontentframe" id="messagecontframe" style="width:100%; height:100%" frameborder="0" src="/watermark.html" />
+<div id="mailpreviewframe" class="iframebox" role="complementary" aria-labelledby="aria-label-mailpreviewframe">
+<h2 id="aria-label-mailpreviewframe" class="voice"><roundcube:label name="arialabelmailpreviewframe" /></h2>
+<roundcube:object name="messagecontentframe" id="messagecontframe" style="width:100%; height:100%" frameborder="0" src="/watermark.html" title="arialabelmailpreviewframe" />
</div>
</div><!-- end mailview-bottom -->
@@ -118,59 +155,47 @@
</div><!-- end mainscreen -->
-<div id="searchmenu" class="popupmenu">
- <ul class="toolbarmenu">
- <li><label><input type="checkbox" name="s_mods[]" value="subject" id="s_mod_subject" onclick="UI.set_searchmod(this)" /> <span><roundcube:label name="subject" /></span></label></li>
- <li><label><input type="checkbox" name="s_mods[]" value="from" id="s_mod_from" onclick="UI.set_searchmod(this)" /> <span><roundcube:label name="from" /></span></label></li>
- <li><label><input type="checkbox" name="s_mods[]" value="to" id="s_mod_to" onclick="UI.set_searchmod(this)" /> <span><roundcube:label name="to" /></span></label></li>
- <li><label><input type="checkbox" name="s_mods[]" value="cc" id="s_mod_cc" onclick="UI.set_searchmod(this)" /> <span><roundcube:label name="cc" /></span></label></li>
- <li><label><input type="checkbox" name="s_mods[]" value="bcc" id="s_mod_bcc" onclick="UI.set_searchmod(this)" /> <span><roundcube:label name="bcc" /></span></label></li>
- <li><label><input type="checkbox" name="s_mods[]" value="body" id="s_mod_body" onclick="UI.set_searchmod(this)" /> <span><roundcube:label name="body" /></span></label></li>
- <li><label><input type="checkbox" name="s_mods[]" value="text" id="s_mod_text" onclick="UI.set_searchmod(this)" /> <span><roundcube:label name="msgtext" /></span></label></li>
- <li class="separator"><label><roundcube:label name="searchscope" /></label></li>
- <li><label><input type="radio" name="s_scope" value="base" id="s_scope_base" onclick="UI.set_searchscope(this)" /> <span><roundcube:label name="currentfolder" /></span></label></li>
- <li><label><input type="radio" name="s_scope" value="sub" id="s_scope_sub" onclick="UI.set_searchscope(this)" /> <span><roundcube:label name="subfolders" /></span></label></li>
- <li><label><input type="radio" name="s_scope" value="all" id="s_scope_all" onclick="UI.set_searchscope(this)" /> <span><roundcube:label name="allfolders" /></span></label></li>
- </ul>
-</div>
-
-<div id="dragmessagemenu" class="popupmenu">
- <ul class="toolbarmenu">
- <li><roundcube:button command="move" onclick="return rcmail.drag_menu_action('move')" label="move" classAct="active" /></li>
- <li><roundcube:button command="copy" onclick="return rcmail.drag_menu_action('copy')" label="copy" classAct="active" /></li>
+<div id="dragmessagemenu" class="popupmenu" aria-hidden="true">
+ <ul class="toolbarmenu" role="menu">
+ <roundcube:button command="move" type="link-menuitem" onclick="return rcmail.drag_menu_action('move')" label="move" classAct="active" />
+ <roundcube:button command="copy" type="link-menuitem" onclick="return rcmail.drag_menu_action('copy')" label="copy" classAct="active" />
</ul>
</div>
-<div id="mailboxmenu" class="popupmenu">
- <ul class="toolbarmenu" id="mailboxoptionsmenu">
- <li><roundcube:button command="expunge" type="link" label="compact" classAct="active" /></li>
- <li><roundcube:button command="purge" type="link" label="empty" classAct="active" /></li>
- <li><roundcube:button command="import-messages" name="messageimport" type="link" classAct="active" label="importmessages" onclick="if(rcmail.command_enabled('import-messages'))UI.show_uploadform();return false" /></li>
- <li><roundcube:button command="folders" task="settings" type="link" label="managefolders" classAct="active" /></li>
+<div id="mailboxmenu" class="popupmenu" aria-hidden="true">
+ <h3 id="aria-label-mailboxmenu" class="voice"><roundcube:label name="arialabelmailboxmenu" /></h3>
+ <ul class="toolbarmenu" id="mailboxoptionsmenu" role="menu" aria-labelledby="aria-label-mailboxmenu">
+ <roundcube:button command="expunge" type="link-menuitem" label="compact" classAct="active" />
+ <roundcube:button command="purge" type="link-menuitem" label="empty" classAct="active" />
+ <roundcube:button command="import-messages" type="link-menuitem" name="messageimport" classAct="active" label="importmessages" onclick="if(rcmail.command_enabled('import-messages'))UI.show_uploadform();return false" />
+ <roundcube:button command="folders" task="settings" type="link-menuitem" label="managefolders" classAct="active" />
<roundcube:container name="mailboxoptions" id="mailboxoptionsmenu" />
</ul>
</div>
-<div id="listselectmenu" class="popupmenu dropdown">
- <ul class="toolbarmenu iconized">
- <li><roundcube:button command="select-all" type="link" label="all" class="icon" classAct="icon active" innerclass="icon mail" /></li>
- <li><roundcube:button command="select-all" type="link" prop="page" label="currpage" class="icon" classAct="icon active" innerclass="icon list" /></li>
- <li><roundcube:button command="select-all" type="link" prop="unread" label="unread" class="icon" classAct="icon active" innerclass="icon unread" /></li>
- <li><roundcube:button command="select-all" type="link" prop="flagged" label="flagged" class="icon" classAct="icon active" innerclass="icon flagged" /></li>
- <li><roundcube:button command="select-all" type="link" prop="invert" label="invert" class="icon" classAct="icon active" innerclass="icon invert" /></li>
- <li><roundcube:button command="select-none" type="link" label="none" class="icon" classAct="icon active" innerclass="icon cross" /></li>
+<div id="listselectmenu" class="popupmenu dropdown" aria-hidden="true">
+ <h3 id="aria-label-listselectmenu" class="voice"><roundcube:label name="arialabellistselectmenu" /></h3>
+ <ul id="listselectmenu-menu" class="toolbarmenu iconized" role="menu" aria-labelledby="aria-label-listselectmenu">
+ <roundcube:button command="select-all" type="link-menuitem" label="all" class="icon" classAct="icon active" innerclass="icon mail" />
+ <roundcube:button command="select-all" type="link-menuitem" prop="page" label="currpage" class="icon" classAct="icon active" innerclass="icon list" />
+ <roundcube:button command="select-all" type="link-menuitem" prop="unread" label="unread" class="icon" classAct="icon active" innerclass="icon unread" />
+ <roundcube:button command="select-all" type="link-menuitem" prop="flagged" label="flagged" class="icon" classAct="icon active" innerclass="icon flagged" />
+ <roundcube:button command="select-all" type="link-menuitem" prop="invert" label="invert" class="icon" classAct="icon active" innerclass="icon invert" />
+ <roundcube:button command="select-none" type="link-menuitem" label="none" class="icon" classAct="icon active" innerclass="icon cross" />
</ul>
</div>
-<div id="threadselectmenu" class="popupmenu dropdown">
- <ul class="toolbarmenu">
- <li><roundcube:button command="expand-all" type="link" label="expand-all" class="icon" classAct="icon active" innerclass="icon conversation" /></li>
- <li><roundcube:button command="expand-unread" type="link" label="expand-unread" class="icon" classAct="icon active" innerclass="icon conversation" /></li>
- <li><roundcube:button command="collapse-all" type="link" label="collapse-all" class="icon" classAct="icon active" innerclass="icon conversation" /></li>
+<div id="threadselectmenu" class="popupmenu dropdown" aria-hidden="true">
+ <h3 id="aria-label-threadselectmenu" class="voice"><roundcube:label name="arialabelthreadselectmenu" /></h3>
+ <ul id="threadselectmenu-menu" class="toolbarmenu" role="menu" aria-labelledby="aria-label-threadselectmenu">
+ <roundcube:button command="expand-all" type="link-menuitem" label="expand-all" class="icon" classAct="icon active" innerclass="icon conversation" />
+ <roundcube:button command="expand-unread" type="link-menuitem" label="expand-unread" class="icon" classAct="icon active" innerclass="icon conversation" />
+ <roundcube:button command="collapse-all" type="link-menuitem" label="collapse-all" class="icon" classAct="icon active" innerclass="icon conversation" />
</ul>
</div>
-<div id="listoptions" class="propform popupdialog">
+<div id="listoptions" class="propform popupdialog" role="dialog" aria-labelledby="aria-label-listoptions" aria-hidden="true">
+<h2 id="aria-label-listoptions" class="voice"><roundcube:label name="arialabelmessagelistoptions" /></h2>
<roundcube:if condition="!in_array('list_cols', (array)config:dont_override)" />
<fieldset class="floating">
<legend><roundcube:label name="listcolumns" /></legend>
@@ -219,11 +244,12 @@
<br style="clear:both" />
<div class="formbuttons">
<roundcube:button command="menu-save" id="listmenusave" type="input" class="button mainaction" label="save" />
- <roundcube:button command="menu-open" id="listmenucancel" type="input" class="button" label="cancel" />
+ <roundcube:button command="menu-close" prop="messagelistmenu" id="listmenucancel" type="input" class="button" label="cancel" />
</div>
</div>
-<div id="upload-dialog" class="propform popupdialog" title="<roundcube:label name='importmessages' />">
+<div id="upload-dialog" class="propform popupdialog" title="<roundcube:label name='importmessages' />" aria-hidden="true">
+ <h2 id="aria-label-uploaddialog" class="voice"><roundcube:label name="arialabelmailimportdialog" /></h2>
<roundcube:object name="messageimportform" id="uploadform" buttons="no" />
<div class="formbuttons">
<roundcube:button command="import-messages" type="input" class="button mainaction" label="upload" />
diff --git a/skins/larry/templates/message.html b/skins/larry/templates/message.html
index a661f5720..dde15acfb 100644
--- a/skins/larry/templates/message.html
+++ b/skins/larry/templates/message.html
@@ -10,8 +10,11 @@
<div id="mainscreen">
+<h1 class="voice"><roundcube:object name="messageHeaders" valueOf="subject" /></h1>
+
<!-- toolbar -->
-<div id="messagetoolbar" class="toolbar fullwidth">
+<h2 id="aria-label-toolbar" class="voice"><roundcube:label name="arialabeltoolbar" /></h2>
+<div id="messagetoolbar" class="toolbar fullwidth" role="toolbar" aria-labelledby="aria-label-toolbar">
<roundcube:if condition="!env:extwin" />
<roundcube:button command="list" type="link" class="button back disabled" classAct="button back" classSel="button back pressed" label="back" />
<roundcube:endif />
@@ -25,35 +28,31 @@
<div id="mailview-left">
<!-- folders list -->
-<div id="mailboxcontainer" class="uibox listbox">
+<div id="mailboxcontainer" class="uibox listbox" role="navigation" aria-labelledby="aria-label-folderlist">
+<h2 id="aria-label-folderlist" class="voice"><roundcube:label name="arialabelfolderlist" /></h2>
<div class="scroller">
-<roundcube:object name="mailboxlist" id="mailboxlist" class="treelist listing" folder_filter="mail" unreadwrap="%s" />
+<roundcube:object name="mailboxlist" id="mailboxlist" class="treelist listing folderlist" folder_filter="mail" unreadwrap="%s" />
</div>
</div>
</div>
-<div id="mailview-right" class="uibox">
+<div id="mailview-right" class="uibox" role="main">
<roundcube:else />
<roundcube:object name="mailboxlist" folder_filter="mail" type="js" />
-<div id="mailview-right" class="offset fullwidth uibox">
+<div id="mailview-right" class="offset fullwidth uibox" role="main">
<roundcube:endif />
<div id="messageheader">
<span class="moreheaderstoggle"></span>
-<h2 class="subject"><roundcube:object name="messageHeaders" valueOf="subject" /></h2>
-<div class="message-headers">
-<roundcube:object name="messageHeaders" class="headers-table" addicon="/images/addcontact.png" exclude="subject" max="20" />
-</div>
-<roundcube:object name="messageFullHeaders" id="full-headers" />
-
<!-- record navigation -->
-<div id="countcontrols" class="pagenav">
+<div id="countcontrols" class="pagenav" role="navigation" aria-labelledby="aria-label-countcontrols">
+ <h2 id="aria-label-countcontrols" class="voice"><roundcube:label name="arialabelmessagenav" /></h2>
<roundcube:object name="messageCountDisplay" class="countdisplay" />
- <roundcube:button command="previousmessage" type="link" class="button prevpage disabled" classAct="button prevpage" classSel="button prevpage pressed" innerClass="inner" title="previousmessage" content="&amp;lt;" />
- <roundcube:button command="nextmessage" type="link" class="button nextpage disabled" classAct="button nextpage" classSel="button nextpage pressed" innerClass="inner" title="nextmessage" content="&amp;gt;" />
+ <roundcube:button command="previousmessage" type="link" class="button prevpage disabled" classAct="button prevpage" classSel="button prevpage pressed" innerClass="inner" title="previousmessage" label="previous" />
+ <roundcube:button command="nextmessage" type="link" class="button nextpage disabled" classAct="button nextpage" classSel="button nextpage pressed" innerClass="inner" title="nextmessage" label="next" />
</div>
<roundcube:if condition="env:optional_format=='text'" />
@@ -70,15 +69,22 @@
</div>
<roundcube:endif />
+<h2 class="subject"><span class="voice"><roundcube:label name="subject" />: </span><roundcube:object name="messageHeaders" valueOf="subject" /></h2>
+<div class="message-headers">
+<roundcube:object name="messageHeaders" class="headers-table" addicon="/images/addcontact.png" exclude="subject" max="20" />
+</div>
+<roundcube:object name="messageFullHeaders" id="full-headers" />
<div id="contactphoto"><roundcube:object name="contactphoto" /></div>
</div>
<div id="messagecontent">
-<div class="rightcol">
+<div class="rightcol" role="region" aria-labelledby="aria-label-messageattachments">
+<h2 id="aria-label-messageattachments" class="voice"><roundcube:label name="attachments" /></h2>
<roundcube:object name="messageAttachments" id="attachment-list" class="attachmentslist" />
</div>
-<div class="leftcol">
+<div class="leftcol" role="region" aria-labelledby="aria-label-messagebody">
+<h2 id="aria-label-messagebody" class="voice"><roundcube:label name="arialabelmessagebody" /></h2>
<roundcube:object name="messageObjects" id="message-objects" />
<roundcube:object name="messageBody" id="messagebody" headertableclass="message-partheaders headers-table" />
</div>
@@ -92,11 +98,11 @@
</div><!-- end mainscreen -->
-<div id="attachmentmenu" class="popupmenu">
- <ul class="toolbarmenu">
- <li><roundcube:button command="open-attachment" id="attachmenuopen" type="link" label="open" class="icon" classAct="icon active" innerclass="icon extwin" /></li>
- <li><roundcube:button command="download-attachment" id="attachmenudownload" type="link" label="download" class="icon" classAct="icon active" innerclass="icon download" /></li>
- <roundcube:container name="attachmentmenu" id="attachmentmenu" />
+<div id="attachmentmenu" class="popupmenu" aria-hidden="true">
+ <ul class="toolbarmenu" id="attachmentoptionsmenu" role="menu">
+ <roundcube:button command="open-attachment" id="attachmenuopen" type="link-menuitem" label="open" class="icon" classAct="icon active" innerclass="icon extwin" />
+ <roundcube:button command="download-attachment" id="attachmenudownload" type="link-menuitem" label="download" class="icon" classAct="icon active" innerclass="icon download" />
+ <roundcube:container name="attachmentmenu" id="attachmentoptionsmenu" />
</ul>
</div>
diff --git a/skins/larry/templates/messageerror.html b/skins/larry/templates/messageerror.html
index d509ce804..c5c95214c 100644
--- a/skins/larry/templates/messageerror.html
+++ b/skins/larry/templates/messageerror.html
@@ -16,11 +16,12 @@
<div id="mainscreen">
+<h1 class="voice"><roundcube:label name="messageopenerror" /></h1>
+
<!-- toolbar -->
-<div id="messagetoolbar" class="fullwidth">
- <div id="mailtoolbar" class="toolbar">
- <roundcube:button command="list" type="link" class="button back disabled" classAct="button back" classSel="button back pressed" label="back" />
- </div>
+<h2 id="aria-label-toolbar" class="voice"><roundcube:label name="arialabeltoolbar" /></h2>
+<div id="messagetoolbar" class="toolbar fullwidth" role="toolbar" aria-labelledby="aria-label-toolbar">
+ <roundcube:button command="list" type="link" class="button back disabled" classAct="button back" classSel="button back pressed" label="back" />
</div>
<div id="mainscreencontent">
@@ -28,7 +29,8 @@
<div id="mailview-left">
<!-- folders list -->
-<div id="mailboxcontainer" class="uibox listbox">
+<div id="mailboxcontainer" class="uibox listbox" role="navigation" aria-labelledby="aria-label-folderlist">
+<h2 id="aria-label-folderlist" class="voice"><roundcube:label name="arialabelfolderlist" /></h2>
<div class="scroller">
<roundcube:object name="mailboxlist" id="mailboxlist" class="treelist listing" folder_filter="mail" unreadwrap="%s" />
</div>
@@ -36,7 +38,7 @@
</div>
-<div id="mailview-right" class="offset uibox">
+<div id="mailview-right" class="uibox">
<div id="messagecontent" class="watermark"></div>
diff --git a/skins/larry/templates/messagepart.html b/skins/larry/templates/messagepart.html
index 3b878c9d7..acc4d0ca8 100644
--- a/skins/larry/templates/messagepart.html
+++ b/skins/larry/templates/messagepart.html
@@ -10,24 +10,28 @@
<div id="mainscreen">
-<div id="messagetoolbar" class="toolbar fullwidth">
- <roundcube:button command="download" type="link" class="button download disabled" classAct="button download" classSel="button download pressed" label="download" />
- <roundcube:button command="print" type="link" class="button print disabled" classAct="button print" classSel="button print pressed" label="print" />
+<h1 class="voice"><roundcube:label name="attachment" />: <roundcube:var name="env:filename" /></h1>
+
+<h2 id="aria-label-toolbar" class="voice"><roundcube:label name="arialabeltoolbar" /></h2>
+<div id="messagetoolbar" class="toolbar fullwidth" role="toolbar" aria-labelledby="aria-label-toolbar">
+ <roundcube:button command="download" type="link" class="button download disabled" classAct="button download" classSel="button download pressed" label="download" title="download" />
+ <roundcube:button command="print" type="link" class="button print disabled" classAct="button print" classSel="button print pressed" label="print" title="print" />
<roundcube:container name="toolbar" id="messagetoolbar" />
</div>
<div id="mainscreencontent">
-<div id="messagepartheader" class="uibox listbox">
- <h2 class="boxtitle"><roundcube:label name="properties" /></h2>
+<div id="messagepartheader" class="uibox listbox" role="contentinfo" aria-labelledby="aria-label-contentinfo">
+ <h2 class="boxtitle" id="aria-label-contentinfo"><roundcube:label name="properties" /></h2>
<div class="scroller">
<roundcube:object name="messagePartControls" class="listing" />
</div>
</div>
-<div id="messagepartcontainer" class="uibox">
+<div id="messagepartcontainer" class="uibox" role="main" aria-labelledby="aria-label-messagepart">
+ <h2 id="aria-label-messagepart" class="voice"><roundcube:label name="arialabelattachmentpreview" /></h2>
<div class="iframebox">
- <roundcube:object name="messagePartFrame" id="messagepartframe" frameborder="0" />
+ <roundcube:object name="messagePartFrame" id="messagepartframe" frameborder="0" title="arialabelattachmentpreview" />
</div>
</div>
diff --git a/skins/larry/templates/messagepreview.html b/skins/larry/templates/messagepreview.html
index 4a6d76ead..2e3b5efd1 100644
--- a/skins/larry/templates/messagepreview.html
+++ b/skins/larry/templates/messagepreview.html
@@ -7,9 +7,33 @@
<body class="iframe fullheight">
<div id="messageheader" class="previewheader">
-<h3 class="subject"><roundcube:object name="messageHeaders" valueOf="subject" /></h3>
-<a href="#details" id="previewheaderstoggle" class="moreheaderstoggle"><span class="iconlink" title="<roundcube:label name='togglemoreheaders' />"></span></a>
+<!-- record navigation -->
+<div id="countcontrols" role="toolbar" aria-labelledby="aria-label-messagetoolbar">
+<h2 id="aria-label-messagetoolbar" class="voice"><roundcube:label name="arialabelmessageactions" /></h2>
+<roundcube:if condition="env:optional_format=='text'" />
+ <span class="buttongroup">
+ <roundcube:button command="change-format" prop="html" type="link" class="button first changeformat html selected" innerClass="icon" title="changeformathtml" content="HTML" /><roundcube:button command="change-format" prop="text" type="link" class="button last changeformat text" classSel="button changeformat text pressed" innerClass="icon" title="changeformattext" content="Text" />
+ </span>
+ &nbsp;
+<roundcube:elseif condition="env:optional_format=='html'" />
+ <span class="buttongroup">
+ <roundcube:button command="change-format" prop="html" type="link" class="button first changeformat html" classSel="button changeformat html pressed" innerClass="icon" title="changeformathtml" content="HTML" /><roundcube:button command="change-format" prop="text" type="link" class="button last changeformat text selected" innerClass="icon" title="changeformattext" content="Text" />
+ </span>
+ &nbsp;
+<roundcube:endif />
+<roundcube:if condition="env:mailbox != config:drafts_mbox">
+ <roundcube:button command="reply" type="link" class="button reply" classSel="button reply pressed" innerClass="icon" title="replytomessage" label="replytomessage" />
+ <roundcube:button command="reply-all" type="link" class="button replyall" classSel="button replyall pressed" innerClass="icon" title="replytoallmessage" label="replytoallmessage" />
+ <roundcube:button command="forward" type="link" class="button forward" classSel="button forward pressed" innerClass="icon" title="forwardmessage" label="forwardmessage" />
+ &nbsp;
+<roundcube:endif />
+ <roundcube:button command="extwin" type="link" class="button extwin" classSel="button extwin pressed" innerClass="icon" title="openinextwin" label="openinextwin" />
+</div>
+
+<h3 class="subject"><span class="voice"><roundcube:label name="subject" />: </span><roundcube:object name="messageHeaders" valueOf="subject" /></h3>
+
+<a href="#details" id="previewheaderstoggle" class="moreheaderstoggle" aria-expanded="false"><span class="iconlink" title="<roundcube:label name='togglemoreheaders' />"></span></a>
<div id="contactphoto"><roundcube:object name="contactphoto" /></div>
<table class="headers-table" id="preview-shortheaders"><tbody><tr>
@@ -28,45 +52,25 @@
<roundcube:object name="messageFullHeaders" id="full-headers" />
-<!-- record navigation -->
-<div id="countcontrols">
-<roundcube:if condition="env:optional_format=='text'" />
- <span class="buttongroup">
- <roundcube:button command="change-format" prop="html" type="link" class="button first changeformat html selected" innerClass="icon" title="changeformathtml" content="HTML" /><roundcube:button command="change-format" prop="text" type="link" class="button last changeformat text" classSel="button changeformat text pressed" innerClass="icon" title="changeformattext" content="Text" />
- </span>
- &nbsp;
-<roundcube:elseif condition="env:optional_format=='html'" />
- <span class="buttongroup">
- <roundcube:button command="change-format" prop="html" type="link" class="button first changeformat html" classSel="button changeformat html pressed" innerClass="icon" title="changeformathtml" content="HTML" /><roundcube:button command="change-format" prop="text" type="link" class="button last changeformat text selected" innerClass="icon" title="changeformattext" content="Text" />
- </span>
- &nbsp;
-<roundcube:endif />
-<roundcube:if condition="env:mailbox != config:drafts_mbox">
- <roundcube:button command="reply" type="link" class="button reply" classSel="button reply pressed" innerClass="icon" title="replytomessage" content="&lt;-" />
- <roundcube:button command="reply-all" type="link" class="button replyall" classSel="button replyall pressed" innerClass="icon" title="replytoallmessage" content="&lt;&lt;-" />
- <roundcube:button command="forward" type="link" class="button forward" classSel="button forward pressed" innerClass="icon" title="forwardmessage" content="-&gt;" />
- &nbsp;
-<roundcube:endif />
- <roundcube:button command="extwin" type="link" class="button extwin" classSel="button extwin pressed" innerClass="icon" title="openinextwin" content="[]" />
-</div>
-
</div>
-<div id="messagepreview">
-<div class="rightcol">
+<div id="messagepreview" role="main">
+<div class="rightcol" role="region" aria-labelledby="aria-label-messageattachments">
+<h2 id="aria-label-messageattachments" class="voice"><roundcube:label name="attachments" /></h2>
<roundcube:object name="messageAttachments" id="attachment-list" class="attachmentslist" />
</div>
-<div class="leftcol">
+<div class="leftcol" role="region" aria-labelledby="aria-label-messagebody">
+<h2 id="aria-label-messagebody" class="voice"><roundcube:label name="arialabelmessagebody" /></h2>
<roundcube:object name="messageObjects" id="message-objects" />
<roundcube:object name="messageBody" id="messagebody" headertableclass="message-partheaders headers-table" />
</div>
</div>
-<div id="attachmentmenu" class="popupmenu">
- <ul class="toolbarmenu">
- <li><roundcube:button command="open-attachment" id="attachmenuopen" type="link" label="open" class="icon" classAct="icon active" innerclass="icon extwin" /></li>
- <li><roundcube:button command="download-attachment" id="attachmenudownload" type="link" label="download" class="icon" classAct="icon active" innerclass="icon download" /></li>
- <roundcube:container name="attachmentmenu" id="attachmentmenu" />
+<div id="attachmentmenu" class="popupmenu" aria-hidden="true">
+ <ul class="toolbarmenu" id="attachmentoptionsmenu" role="menu">
+ <roundcube:button command="open-attachment" id="attachmenuopen" type="link-menuitem" label="open" class="icon" classAct="icon active" innerclass="icon extwin" />
+ <roundcube:button command="download-attachment" id="attachmenudownload" type="link-menuitem" label="download" class="icon" classAct="icon active" innerclass="icon download" />
+ <roundcube:container name="attachmentmenu" id="attachmentoptionsmenu" />
</ul>
</div>
diff --git a/skins/larry/templates/responses.html b/skins/larry/templates/responses.html
index 8e6884539..8f91a8f65 100644
--- a/skins/larry/templates/responses.html
+++ b/skins/larry/templates/responses.html
@@ -4,29 +4,31 @@
<title><roundcube:object name="pagetitle" /></title>
<roundcube:include file="/includes/links.html" />
</head>
-<body class="noscroll">
+<roundcube:if condition="env:extwin" /><body class="noscroll extwin"><roundcube:else /><body class="noscroll"><roundcube:endif />
<roundcube:include file="/includes/header.html" />
<div id="mainscreen" class="offset">
+<h1 class="voice"><roundcube:label name="settings" /> : <roundcube:label name="identities" /></h1>
+
<roundcube:include file="/includes/settingstabs.html" />
-<div id="settings-right">
+<div id="settings-right" role="main" aria-labelledby="aria-label-responseslist">
<div id="identitieslist" class="uibox listbox">
-<h2 class="boxtitle"><roundcube:label name="responses" /></h2>
+<h2 class="boxtitle" id="aria-label-responseslist"><roundcube:label name="responses" /></h2>
<div class="scroller withfooter">
-<roundcube:object name="responsesList" id="identities-table" class="listing" cellspacing="0" summary="Responses list" noheader="true" />
+<roundcube:object name="responsesList" id="identities-table" class="listing" cellspacing="0" noheader="true" role="listbox" />
</div>
<div class="boxfooter">
-<roundcube:button command="add" type="link" title="savenewresponse" class="listbutton add disabled" classAct="listbutton add" innerClass="inner" content="+" /><roundcube:button command="delete" type="link" title="delete" class="listbutton delete disabled" classAct="listbutton delete" innerClass="inner" content="-" />
+<roundcube:button command="add" type="link" title="newresponse" class="listbutton add disabled" classAct="listbutton add" innerClass="inner" label="addresponse" /><roundcube:button command="delete" type="link" title="delete" class="listbutton delete disabled" classAct="listbutton delete" innerClass="inner" label="delete" />
</div>
</div>
<div id="identity-details" class="uibox contentbox">
<div class="iframebox">
- <roundcube:object name="responseframe" id="preferences-frame" style="width:100%; height:100%" frameborder="0" src="/watermark.html" />
+ <roundcube:object name="responseframe" id="preferences-frame" style="width:100%; height:100%" frameborder="0" src="/watermark.html" title="arialabelresonseeditfrom" />
</div>
</div>
diff --git a/skins/larry/templates/settings.html b/skins/larry/templates/settings.html
index 08df7686e..34c3440cc 100644
--- a/skins/larry/templates/settings.html
+++ b/skins/larry/templates/settings.html
@@ -4,25 +4,28 @@
<title><roundcube:object name="pagetitle" /></title>
<roundcube:include file="/includes/links.html" />
</head>
-<body class="noscroll">
+<roundcube:if condition="env:extwin" /><body class="noscroll extwin"><roundcube:else /><body class="noscroll"><roundcube:endif />
<roundcube:include file="/includes/header.html" />
<div id="mainscreen" class="offset">
+<h1 class="voice"><roundcube:label name="settings" /> : <roundcube:label name="preferences" /></h1>
+
<roundcube:include file="/includes/settingstabs.html" />
<div id="settings-right">
-<div id="sectionslist" class="uibox listbox">
+<div id="sectionslist" class="uibox listbox" role="navigation" aria-labelledby="aria-label-pefsection">
+<h2 id="aria-label-pefsection" class="boxtitle"><roundcube:label name="section" /></h2>
<div class="scroller">
- <roundcube:object name="sectionslist" id="sections-table" class="listing" />
+ <roundcube:object name="sectionslist" id="sections-table" class="listing iconized" noheader="true" />
</div>
</div>
-<div id="preferences-box" class="uibox contentbox">
+<div id="preferences-box" class="uibox contentbox" role="main">
<div class="iframebox">
- <roundcube:object name="prefsframe" id="preferences-frame" style="width:100%; height:100%" frameborder="0" src="/watermark.html" />
+ <roundcube:object name="prefsframe" id="preferences-frame" style="width:100%; height:100%" frameborder="0" src="/watermark.html" title="arialabelpreferencesform" />
</div>
</div>
diff --git a/skins/larry/ui.js b/skins/larry/ui.js
index 0e8afc652..153abdc21 100644
--- a/skins/larry/ui.js
+++ b/skins/larry/ui.js
@@ -20,13 +20,10 @@ function rcube_mail_ui()
searchmenu: { editable:1, callback:searchmenu },
attachmentmenu: { },
listoptions: { editable:1 },
- dragmenu: { sticky:1 },
groupmenu: { above:1 },
mailboxmenu: { above:1 },
spellmenu: { callback: spellmenu },
- // toggle: #1486823, #1486930
- 'attachment-form': { editable:1, above:1, toggle:!bw.ie&&!bw.linux },
- 'upload-form': { editable:1, toggle:!bw.ie&&!bw.linux }
+ 'folder-selector': { iconized:1 }
};
var me = this;
@@ -40,6 +37,7 @@ function rcube_mail_ui()
this.init_tabs = init_tabs;
this.show_about = show_about;
this.show_popup = show_popup;
+ this.toggle_popup = toggle_popup;
this.add_popup = add_popup;
this.set_searchmod = set_searchmod;
this.set_searchscope = set_searchscope;
@@ -49,6 +47,7 @@ function rcube_mail_ui()
this.update_quota = update_quota;
this.get_pref = get_pref;
this.save_pref = save_pref;
+ this.folder_search_init = folder_search_init;
// set minimal mode on small screens (don't wait for document.ready)
@@ -78,7 +77,7 @@ function rcube_mail_ui()
function get_pref(key)
{
if (!prefs) {
- prefs = window.localStorage ? rcmail.local_storage_get_item('prefs.larry', {}) : {};
+ prefs = rcmail.local_storage_get_item('prefs.larry', {});
}
// fall-back to cookies
@@ -87,9 +86,8 @@ function rcube_mail_ui()
if (cookie != null) {
prefs[key] = cookie;
- // copy value to local storage and remove cookie
- if (window.localStorage) {
- rcmail.local_storage_set_item('prefs.larry', prefs);
+ // copy value to local storage and remove cookie (if localStorage is supported)
+ if (rcmail.local_storage_set_item('prefs.larry', prefs)) {
rcmail.set_cookie(key, cookie, new Date()); // expire cookie
}
}
@@ -105,11 +103,8 @@ function rcube_mail_ui()
{
prefs[key] = val;
- // write prefs to local storage
- if (window.localStorage) {
- rcmail.local_storage_set_item('prefs.larry', prefs);
- }
- else {
+ // write prefs to local storage (if supported)
+ if (!rcmail.local_storage_set_item('prefs.larry', prefs)) {
// store value in cookie
var exp = new Date();
exp.setYear(exp.getFullYear() + 1);
@@ -138,8 +133,9 @@ function rcube_mail_ui()
/*** mail task ***/
if (rcmail.env.task == 'mail') {
- rcmail.addEventListener('menu-open', menu_open)
- .addEventListener('menu-save', menu_save)
+ rcmail.addEventListener('menu-open', menu_toggle)
+ .addEventListener('menu-close', menu_toggle)
+ .addEventListener('menu-save', save_listoptions)
.addEventListener('responseafterlist', function(e){ switch_view_mode(rcmail.env.threading ? 'thread' : 'list', true) })
.addEventListener('responseaftersearch', function(e){ switch_view_mode(rcmail.env.threading ? 'thread' : 'list', true) });
@@ -157,7 +153,14 @@ function rcube_mail_ui()
// add menu link for each attachment
$('#attachment-list > li').each(function() {
- $(this).append($('<a class="drop"></a>').click(function() { attachmentmenu(this); }));
+ $(this).append($('<a class="drop" tabindex="0" aria-haspopup="true">Show options</a>')
+ .bind('click keypress', function(e) {
+ if (e.type != 'keypress' || rcube_event.get_keycode(e) == 13) {
+ attachmentmenu(this, e);
+ return false;
+ }
+ })
+ );
});
if (get_pref('previewheaders') == '1') {
@@ -184,11 +187,13 @@ function rcube_mail_ui()
}
}
- $('#composeoptionstoggle').click(function(){
- $('#composeoptionstoggle').toggleClass('remove');
- $('#composeoptions').toggle();
+ $('#composeoptionstoggle').click(function(e){
+ var expanded = $('#composeoptions').toggle().is(':visible');
+ $('#composeoptionstoggle').toggleClass('remove').attr('aria-expanded', expanded ? 'true' : 'false');
layout_composeview();
- save_pref('composeoptions', $('#composeoptions').is(':visible') ? '1' : '0');
+ save_pref('composeoptions', expanded ? '1' : '0');
+ if (!rcube_event.is_keyboard(e))
+ this.blur();
return false;
}).css('cursor', 'pointer');
@@ -206,13 +211,15 @@ function rcube_mail_ui()
$('#composeoptionstoggle').click();
new rcube_splitter({ id:'composesplitterv', p1:'#composeview-left', p2:'#composeview-right',
- orientation:'v', relative:true, start:248, min:170, size:12, render:layout_composeview }).init();
+ orientation:'v', relative:true, start:206, min:170, size:12, render:layout_composeview }).init();
}
else if (rcmail.env.action == 'list' || !rcmail.env.action) {
var previewframe = $('#mailpreviewframe').is(':visible');
- $('#mailpreviewtoggle').addClass(previewframe ? 'enabled' : 'closed').click(function(e){ toggle_preview_pane(e); return false });
- $('#maillistmode').addClass(rcmail.env.threading ? '' : 'selected').click(function(e){ switch_view_mode('list'); return false });
- $('#mailthreadmode').addClass(rcmail.env.threading ? 'selected' : '').click(function(e){ switch_view_mode('thread'); return false });
+
+ $('#mailpreviewtoggle').addClass(previewframe ? 'enabled' : 'closed').attr('aria-expanded', previewframe ? 'true' : 'false')
+ .click(function(e) { toggle_preview_pane(e); return false; });
+ $('#maillistmode').addClass(rcmail.env.threading ? '' : 'selected').click(function(e) { switch_view_mode('list'); return false; });
+ $('#mailthreadmode').addClass(rcmail.env.threading ? 'selected' : '').click(function(e) { switch_view_mode('thread'); return false; });
mailviewsplit = new rcube_splitter({ id:'mailviewsplitter', p1:'#mailview-top', p2:'#mailview-bottom',
orientation:'h', relative:true, start:310, min:150, size:12, offset:4 });
@@ -230,7 +237,7 @@ function rcube_mail_ui()
if ($('#mailview-left').length) {
new rcube_splitter({ id:'mailviewsplitterv', p1:'#mailview-left', p2:'#mailview-right',
- orientation:'v', relative:true, start:226, min:150, size:12, callback:render_mailboxlist, render:resize_leftcol }).init();
+ orientation:'v', relative:true, start:206, min:150, size:12, callback:render_mailboxlist, render:resize_leftcol }).init();
}
}
/*** settings task ***/
@@ -248,9 +255,9 @@ function rcube_mail_ui()
new rcube_splitter({ id:'folderviewsplitter', p1:'#folderslist', p2:'#folder-details',
orientation:'v', relative:true, start:266, min:180, size:12 }).init();
- new rcube_scroller('#folderslist-content', '#folderslist-header', '#folderslist-footer');
-
rcmail.addEventListener('setquota', update_quota);
+
+ folder_search_init($('#folderslist'));
}
else if (rcmail.env.action == 'identities') {
new rcube_splitter({ id:'identviewsplitter', p1:'#identitieslist', p2:'#identity-details',
@@ -265,7 +272,9 @@ function rcube_mail_ui()
orientation:'v', relative:true, start:266, min:180, size:12 }).init();
}
else if (rcmail.env.action == 'edit-prefs') {
- $('<a href="#toggle">&#9660;</a>')
+ $('<a href="#toggle"></a>')
+ .text(env.toggleoptions)
+ .attr('title', env.toggleoptions)
.addClass('advanced-toggle')
.appendTo('#preferences-details fieldset.advanced legend');
@@ -286,9 +295,9 @@ function rcube_mail_ui()
if (rcmail.env.action == '') {
new rcube_splitter({ id:'addressviewsplitterd', p1:'#addressview-left', p2:'#addressview-right',
- orientation:'v', relative:true, start:226, min:150, size:12, render:resize_leftcol }).init();
+ orientation:'v', relative:true, start:206, min:150, size:12, render:resize_leftcol }).init();
new rcube_splitter({ id:'addressviewsplitter', p1:'#addresslist', p2:'#contacts-box',
- orientation:'v', relative:true, start:286, min:270, size:12 }).init();
+ orientation:'v', relative:true, start:266, min:260, size:12 }).init();
}
var dragmenu = $('#dragcontactmenu');
@@ -317,7 +326,7 @@ function rcube_mail_ui()
if ($('option:selected', this).val() != '')
title = $('option:selected', this).text();
- var overlay = $('<a class="menuselector"><span class="handle">' + title + '</span></a>')
+ var overlay = $('<a class="menuselector" tabindex="-1"><span class="handle">' + title + '</span></a>')
.css('position', 'absolute')
.offset(select.position())
.insertAfter(select);
@@ -329,10 +338,14 @@ function rcube_mail_ui()
// re-set original select width to fix click action and options width in some browsers
select.width(overlay.width())
- .change(function() {
+ .on(bw.mz ? 'change keyup' : 'change', function() {
var val = $('option:selected', this).text();
$(this).next().children().text(val);
});
+
+ select
+ .on('focus', function(e){ overlay.addClass('focus'); })
+ .on('blur', function(e){ overlay.removeClass('focus'); });
});
// set min-width to show all toolbar buttons
@@ -341,63 +354,12 @@ function rcube_mail_ui()
screen.css('min-width', $('.toolbar').width() + $('#quicksearchbar').width() + $('#searchfilter').width() + 30);
}
- $(document.body)
- .bind('mouseup', body_mouseup)
- .bind('keyup', function(e){
- if (e.keyCode == 27) {
- for (var id in popups) {
- if (popups[id].is(':visible'))
- show_popup(id, false);
- }
- }
- });
-
- $('iframe').load(function(e){
- // this = iframe
- try {
- var doc = this.contentDocument ? this.contentDocument : this.contentWindow ? this.contentWindow.document : null;
- $(doc).mouseup(body_mouseup);
- }
- catch (e) {
- // catch possible "Permission denied" error in IE
- };
- })
- .contents().mouseup(body_mouseup);
-
// don't use $(window).resize() due to some unwanted side-effects
window.onresize = resize;
resize();
}
/**
- * Handler for mouse-up events on the document body.
- * This will close all open popup menus
- */
- function body_mouseup(e)
- {
- var config, obj, target = e.target;
-
- if (target.className == 'inner')
- target = e.target.parentNode;
-
- for (var id in popups) {
- obj = popups[id];
- config = popupconfig[id];
- if (obj.is(':visible')
- && target.id != id+'link'
- && target != obj.get(0) // check if scroll bar was clicked (#1489832)
- && !config.toggle
- && (!config.editable || !target_overlaps(target, obj.get(0)))
- && (!config.sticky || !rcube_mouse_is_over(e, obj.get(0)))
- && !$(target).is('.folder-selector-link')
- ) {
- var myid = id+'';
- window.setTimeout(function() { show_popupmenu(myid, false); }, 10);
- }
- }
- }
-
- /**
* Update UI on window resize
*/
function resize(e)
@@ -475,7 +437,10 @@ function rcube_mail_ui()
minHeight: 90
}).show();
- me.message_timer = window.setTimeout(dialog_close, p.timeout);
+ me.messagedialog.closest('div[role=dialog]').attr('role', 'alertdialog');
+
+ if (p.timeout > 0)
+ me.message_timer = window.setTimeout(dialog_close, p.timeout);
}
}
@@ -489,7 +454,7 @@ function rcube_mail_ui()
$('#message-objects div a').addClass('button');
if (!$('#attachment-list li').length) {
- $('div.rightcol').hide();
+ $('div.rightcol').hide().attr('aria-hidden', 'true');
$('div.leftcol').css('margin-right', '0');
}
}
@@ -525,19 +490,19 @@ function rcube_mail_ui()
w, h, bh, ovflw, btns = 0,
minheight = 300,
- bh = (form.height() - bottom.position().top);
+ bh = form.height() - bottom.position().top;
ovflw = minheight - bh;
btns = ovflw > -100 ? 0 : 40;
- bottom.css('height', Math.max(minheight, bh) + 'px');
+ bottom.height(Math.max(minheight, bh));
form.css('overflow', ovflw > 0 ? 'auto' : 'hidden');
w = body.parent().width() - 5;
- h = body.parent().height() - 16;
+ h = body.parent().height() - 8;
body.width(w).height(h);
- $('#composebody_tbl').width((w+8)+'px').height('').css('margin-top', '1px');
- $('#composebody_ifr').width((w+8)+'px').height((h-40)+'px');
- $('#googie_edit_layer').height(h+'px');
+ $('#composebodycontainer > div').width(w+8);
+ $('#composebody_ifr').height(h + 4 - $('div.mce-toolbar').height());
+ $('#googie_edit_layer').height(h - 8);
// $('#composebodycontainer')[(btns ? 'addClass' : 'removeClass')]('buttons');
// $('#composeformbuttons')[(btns ? 'show' : 'hide')]();
@@ -548,16 +513,59 @@ function rcube_mail_ui()
function update_quota(p)
{
- var step = 24, step_count = 20,
+ var element = $('#quotadisplay'), menu = $('#quotamenu'),
+ step = 24, step_count = 20,
y = p.total ? Math.ceil(p.percent / 100 * step_count) * step : 0;
// never show full-circle if quota is close to 100% but below.
if (p.total && y == step * step_count && p.percent < 100)
y -= step;
- $('#quotadisplay').css('background-position', '0 -'+y+'px');
+ element.css('background-position', '0 -' + y + 'px');
+
+ if (p.table) {
+ if (!menu.length)
+ menu = $('<div id="quotamenu" class="popupmenu">').appendTo($('body'));
+
+ menu.html(p.table);
+ element.css('cursor', 'pointer').off('click').on('click', function(e) {
+ return rcmail.command('menu-open', 'quotamenu', e.target, e);
+ });
+ }
}
+ function folder_search_init(container)
+ {
+ // animation to unfold list search box
+ $('.boxtitle a.search', container).click(function(e) {
+ var title = $('.boxtitle', container),
+ box = $('.listsearchbox', container),
+ dir = box.is(':visible') ? -1 : 1,
+ height = 34 + ($('select', box).length ? 22 : 0);
+
+ box.slideToggle({
+ duration: 160,
+ progress: function(animation, progress) {
+ if (dir < 0) progress = 1 - progress;
+ $('.scroller', container).css('top', (title.outerHeight() + height * progress) + 'px');
+ },
+ complete: function() {
+ box.toggleClass('expanded');
+ if (box.is(':visible')) {
+ box.find('input[type=text]').focus();
+ height = 34 + ($('select', box).length ? $('select', box).outerHeight() + 4 : 0);
+ $('.scroller', container).css('top', (title.outerHeight() + height) + 'px');
+ }
+ else {
+ $('a.reset', box).click();
+ }
+ // TODO: save state in localStorage
+ }
+ });
+
+ return false;
+ });
+ }
function enable_command(p)
{
@@ -586,75 +594,35 @@ function rcube_mail_ui()
/**
* Trigger for popup menus
*/
- function show_popup(popup, show, config)
+ function toggle_popup(popup, e, config)
{
// auto-register menu object
if (config || !popupconfig[popup])
add_popup(popup, config);
- var visible = show_popupmenu(popup, show),
- config = popupconfig[popup];
- if (typeof config.callback == 'function')
- config.callback(visible);
+ return rcmail.command('menu-open', popup, e.target, e);
}
/**
- * Show/hide a specific popup menu
+ * (Deprecated) trigger for popup menus
*/
- function show_popupmenu(popup, show)
+ function show_popup(popup, show, config)
{
- var obj = popups[popup],
- config = popupconfig[popup],
- ref = $(config.link ? config.link : '#'+popup+'link'),
- above = config.above;
-
- if (!obj) {
- obj = popups[popup] = $('#'+popup);
- obj.appendTo(document.body); // move them to top for proper absolute positioning
- }
-
- if (!obj || !obj.length)
- return false;
-
- if (typeof show == 'undefined')
- show = obj.is(':visible') ? false : true;
- else if (config.toggle && show && obj.is(':visible'))
- show = false;
-
- if (show && ref.length) {
- var parent = ref.parent(),
- win = $(window),
- pos;
-
- if (parent.hasClass('dropbutton'))
- ref = parent;
+ // auto-register menu object
+ if (config || !popupconfig[popup])
+ add_popup(popup, config);
+ config = popupconfig[popup] || {};
+ var ref = $(config.link ? config.link : '#'+popup+'link'),
pos = ref.offset();
- ref.offsetHeight = ref.outerHeight();
- if (!above && pos.top + ref.offsetHeight + obj.height() > win.height())
- above = true;
- if (pos.left + obj.width() > win.width())
- pos.left = win.width() - obj.width() - 12;
-
- obj.css({ left:pos.left, top:(pos.top + (above ? -obj.height() : ref.offsetHeight)) });
- }
-
- obj[show?'show':'hide']();
-
- return show;
- }
-
- /**
- *
- */
- function target_overlaps(target, elem)
- {
- while (target.parentNode) {
- if (target.parentNode == elem)
- return true;
- target = target.parentNode;
- }
- return false;
+ if (ref.has('.inner'))
+ ref = ref.children('.inner');
+
+ // fire command with simulated mouse click event
+ return rcmail.command('menu-open',
+ { menu:popup, show:show },
+ ref.get(0),
+ $.Event('click', { target:ref.get(0), pageX:pos.left, pageY:pos.top, clientX:pos.left, clientY:pos.top }));
}
@@ -670,7 +638,7 @@ function rcube_mail_ui()
topstyles, bottomstyles, uid;
frame.toggle();
- button.removeClass().addClass(visible ? 'enabled' : 'closed');
+ button.toggleClass('enabled closed').attr('aria-expanded', visible ? 'true' : 'false');
if (visible) {
$('#mailview-top').removeClass('fullheight').css({ bottom:'auto' });
@@ -720,9 +688,9 @@ function rcube_mail_ui()
// add toggle button to full headers table
if (full.is(':visible'))
- button.attr('href', '#hide').removeClass('add').addClass('remove')
+ button.attr('href', '#hide').removeClass('add').addClass('remove').attr('aria-expanded', 'true');
else
- button.attr('href', '#details').removeClass('remove').addClass('add')
+ button.attr('href', '#details').removeClass('remove').addClass('add').attr('aria-expanded', 'false');
save_pref('previewheaders', full.is(':visible') ? '1' : '0');
}
@@ -734,25 +702,57 @@ function rcube_mail_ui()
function switch_view_mode(mode, force)
{
if (force || !$('#mail'+mode+'mode').hasClass('disabled')) {
- $('#maillistmode, #mailthreadmode').removeClass('selected');
- $('#mail'+mode+'mode').addClass('selected');
+ $('#maillistmode, #mailthreadmode').removeClass('selected').attr('tabindex', '0').attr('aria-disabled', 'false');
+ $('#mail'+mode+'mode').addClass('selected').attr('tabindex', '-1').attr('aria-disabled', 'true');
}
}
- /**** popup callbacks ****/
+ /**** popup menu callbacks ****/
- function menu_open(p)
+ /**
+ * Handler for menu-open and menu-close events
+ */
+ function menu_toggle(p)
{
- if (p && p.props && p.props.menu == 'attachmentmenu')
- show_popupmenu('attachmentmenu');
- else
- show_listoptions();
- }
+ if (p && p.name == 'messagelistmenu') {
+ show_listoptions(p);
+ }
+ else if (p) {
+ // adjust menu position according to config
+ var config = popupconfig[p.name] || {},
+ ref = $(config.link || '#'+p.name+'link'),
+ visible = p.obj && p.obj.is(':visible'),
+ above = config.above;
+
+ // fix position according to config
+ if (p.obj && visible && ref.length) {
+ var parent = ref.parent(),
+ win = $(window), pos;
+
+ if (parent.hasClass('dropbutton'))
+ ref = parent;
+
+ if (config.above || ref.hasClass('dropbutton')) {
+ pos = ref.offset();
+ p.obj.css({ left:pos.left+'px', top:(pos.top + (config.above ? -p.obj.height() : ref.outerHeight()))+'px' });
+ }
+ }
- function menu_save(prop)
- {
- save_listoptions();
+ // add the right classes
+ if (p.obj && config.iconized) {
+ p.obj.children('ul').addClass('iconized');
+ }
+
+ // apply some data-attributes from menu config
+ if (p.obj && config.editable)
+ p.obj.attr('data-editable', 'true');
+
+ // trigger callback function
+ if (typeof config.callback == 'function') {
+ config.callback(visible, p);
+ }
+ }
}
function searchmenu(show)
@@ -789,7 +789,7 @@ function rcube_mail_ui()
}
}
- function attachmentmenu(elem)
+ function attachmentmenu(elem, event)
{
var id = elem.parentNode.id.replace(/^attach/, '');
@@ -802,41 +802,44 @@ function rcube_mail_ui()
});
popupconfig.attachmentmenu.link = elem;
- rcmail.command('menu-open', {menu: 'attachmentmenu', id: id});
+ rcmail.command('menu-open', {menu: 'attachmentmenu', id: id}, elem, event);
}
- function spellmenu(show)
+ function spellmenu(show, p)
{
- var link, li,
+ var k, link, li,
lang = rcmail.spellcheck_lang(),
- menu = popups.spellmenu,
- ul = $('ul', menu);
+ ul = $('ul', p.obj);
if (!ul.length) {
- ul = $('<ul class="toolbarmenu selectable">');
-
- for (i in rcmail.env.spell_langs) {
- li = $('<li>');
- link = $('<a href="#"></a>').text(rcmail.env.spell_langs[i])
- .addClass('active').data('lang', i)
- .click(function() {
- rcmail.spellcheck_lang_set($(this).data('lang'));
+ ul = $('<ul class="toolbarmenu selectable" role="menu">');
+
+ for (k in rcmail.env.spell_langs) {
+ li = $('<li role="menuitem">');
+ link = $('<a href="#'+k+'" tabindex="0"></a>').text(rcmail.env.spell_langs[k])
+ .addClass('active').data('lang', k)
+ .bind('click keypress', function(e) {
+ if (e.type != 'keypress' || rcube_event.get_keycode(e) == 13) {
+ rcmail.spellcheck_lang_set($(this).data('lang'));
+ rcmail.hide_menu('spellmenu', e);
+ return false;
+ }
});
link.appendTo(li);
li.appendTo(ul);
}
- ul.appendTo(menu);
+ ul.appendTo(p.obj);
}
// select current language
$('li', ul).each(function() {
var el = $('a', this);
if (el.data('lang') == lang)
- el.addClass('selected');
+ el.addClass('selected').attr('aria-selected', 'true');
else if (el.hasClass('selected'))
- el.removeClass('selected');
+ el.removeClass('selected').removeAttr('aria-selected');
});
}
@@ -844,13 +847,13 @@ function rcube_mail_ui()
/**
*
*/
- function show_listoptions()
+ function show_listoptions(p)
{
var $dialog = $('#listoptions');
// close the dialog
if ($dialog.is(':visible')) {
- $dialog.dialog('close');
+ $dialog.dialog('close', p.originalEvent);
return;
}
@@ -869,8 +872,13 @@ function rcube_mail_ui()
resizable: false,
closeOnEscape: true,
title: null,
- close: function() {
+ open: function(e) {
+ setTimeout(function(){ $dialog.find('a, input:not(:disabled)').not('[aria-disabled=true]').first().focus(); }, 100);
+ },
+ close: function(e) {
$dialog.dialog('destroy').hide();
+ if (e.originalEvent && rcube_event.is_keyboard(e.originalEvent))
+ $('#listmenulink').focus();
},
minWidth: 500,
width: $dialog.width()+25
@@ -881,10 +889,13 @@ function rcube_mail_ui()
/**
*
*/
- function save_listoptions()
+ function save_listoptions(p)
{
$('#listoptions').dialog('close');
+ if (rcube_event.is_keyboard(p.originalEvent))
+ $('#listmenulink').focus();
+
var sort = $('input[name="sort_col"]:checked').val(),
ord = $('input[name="sort_ord"]:checked').val(),
cols = $('input[name="list_col[]"]:checked')
@@ -982,7 +993,7 @@ function rcube_mail_ui()
});
}
- function show_uploadform()
+ function show_uploadform(e)
{
var $dialog = $('#upload-dialog');
@@ -1008,6 +1019,10 @@ function rcube_mail_ui()
resizable: false,
closeOnEscape: true,
title: $dialog.attr('title'),
+ open: function(e) {
+ if (!document.all)
+ $('input[type=file]', $dialog).first().click();
+ },
close: function() {
try { $('#upload-dialog form').get(0).reset(); }
catch(e){ } // ignore errors
@@ -1017,9 +1032,6 @@ function rcube_mail_ui()
},
width: 480
}).show();
-
- if (!document.all)
- $('input[type=file]', $dialog).first().click();
}
function add_uploadfile(e)
@@ -1048,7 +1060,10 @@ function rcube_mail_ui()
row.show();
$('#' + which + '-link').hide();
+
layout_composeview();
+ $('input,textarea', row).focus();
+
return false;
}
@@ -1086,47 +1101,35 @@ function rcube_mail_ui()
content.attr('id', id);
}
- // first hide not selected tabs
- current = current || 0;
- fs.each(function(idx) { if (idx != current) $(this).hide(); });
-
// create tabs container
- var tabs = $('<div>').addClass('tabsbar').prependTo(content);
+ var tabs = $('<ul>').addClass('tabsbar').prependTo(content);
// convert fildsets into tabs
fs.each(function(idx) {
- var tab, a, elm = $(this), legend = elm.children('legend');
+ var tab, a, elm = $(this),
+ legend = elm.children('legend'),
+ tid = id + '-t' + idx;
// create a tab
- a = $('<a>').text(legend.text()).attr('href', '#');
- tab = $('<span>').attr({'id': 'tab'+idx, 'class': 'tablink'})
- .click(function() { show_tab(id, idx); return false })
+ a = $('<a>').text(legend.text()).attr('href', '#' + tid);
+ tab = $('<li>').addClass('tablink');
// remove legend
legend.remove();
- // style fieldset
- elm.addClass('tab');
- // style selected tab
- if (idx == current)
- tab.addClass('selected');
+
+ // link fieldset with tab item
+ elm.attr('id', tid);
// add the tab to container
tab.append(a).appendTo(tabs);
});
- }
-
- function show_tab(id, index)
- {
- var fs = $('#'+id).children('fieldset');
- fs.each(function(idx) {
- // Show/hide fieldset (tab content)
- $(this)[index==idx ? 'show' : 'hide']();
- // Select/unselect tab
- $('#tab'+idx).toggleClass('selected', idx==index);
+ // use jquery UI tabs widget to do the interaction and styling
+ content.tabs({
+ active: current || 0,
+ heightStyle: 'content',
+ activate: function(e, ui) {resize(); }
});
-
- resize();
}
/**
@@ -1163,6 +1166,8 @@ function rcube_mail_ui()
/**
* Roundcube Scroller class
+ *
+ * @deprecated Use treelist widget
*/
function rcube_scroller(list, top, bottom)
{
@@ -1237,6 +1242,7 @@ function rcube_splitter(p)
this.handle = $('<div>')
.attr('id', this.id)
.attr('unselectable', 'on')
+ .attr('role', 'presentation')
.addClass('splitter ' + (this.horizontal ? 'splitter-h' : 'splitter-v'))
.appendTo(this.parent)
.bind('mousedown', onDragStart);
@@ -1454,4 +1460,4 @@ rcube_splitter.get_instance = function(id)
return rcube_splitter._instances[id];
};
-// @license-end \ No newline at end of file
+// @license-end
diff --git a/tests/Framework/Csv2vcard.php b/tests/Framework/Csv2vcard.php
index 5d52efc58..4f48dfaa2 100644
--- a/tests/Framework/Csv2vcard.php
+++ b/tests/Framework/Csv2vcard.php
@@ -55,4 +55,22 @@ class Framework_Csv2vcard extends PHPUnit_Framework_TestCase
$vcard = trim(str_replace("\r\n", "\n", $vcard));
$this->assertEquals($vcf_text, $vcard);
}
+
+ function test_import_gmail()
+ {
+ $csv_text = file_get_contents(TESTS_DIR . '/src/Csv2vcard/gmail.csv');
+ $vcf_text = file_get_contents(TESTS_DIR . '/src/Csv2vcard/gmail.vcf');
+
+ $csv = new rcube_csv2vcard;
+ $csv->import($csv_text);
+ $result = $csv->export();
+ $vcard = $result[0]->export(false);
+
+ $this->assertCount(1, $result);
+
+ $vcf_text = trim(str_replace("\r\n", "\n", $vcf_text));
+ $vcard = trim(str_replace("\r\n", "\n", $vcard));
+
+ $this->assertEquals($vcf_text, $vcard);
+ }
}
diff --git a/tests/Framework/Html.php b/tests/Framework/Html.php
index d9466e601..259d73e1a 100644
--- a/tests/Framework/Html.php
+++ b/tests/Framework/Html.php
@@ -54,15 +54,6 @@ class Framework_Html extends PHPUnit_Framework_TestCase
array(
array('data-test' => 'test'), null, ' data-test="test"',
),
- array(
- array('data-test' => 'test'), array('other'), '',
- ),
- array(
- array('data-test' => 'test'), array('data-test'), ' data-test="test"',
- ),
- array(
- array('data-test' => 'test'), array('data-*'), ' data-test="test"',
- ),
);
}
diff --git a/tests/Framework/Html2text.php b/tests/Framework/Html2text.php
index 2c7759f7d..76b1f16cd 100644
--- a/tests/Framework/Html2text.php
+++ b/tests/Framework/Html2text.php
@@ -41,6 +41,11 @@ class rc_html2text extends PHPUnit_Framework_TestCase
'in' => '<b><strong>&#347;</strong></b>',
'out' => 'Ś',
),
+ 6 => array(
+ 'title' => 'Don\'t remove non-printable chars',
+ 'in' => chr(0x002).chr(0x003),
+ 'out' => chr(0x002).chr(0x003),
+ ),
);
}
diff --git a/tests/Framework/Mime.php b/tests/Framework/Mime.php
index d47eba896..43773f1a5 100644
--- a/tests/Framework/Mime.php
+++ b/tests/Framework/Mime.php
@@ -44,6 +44,8 @@ class Framework_Mime extends PHPUnit_Framework_TestCase
23 => '=?UTF-8?B?IlRlc3QsVGVzdCI=?= <test@domain.tld>',
// invalid, but we do our best to parse correctly
24 => '"email@test.com" <>',
+ // valid with redundant quoting (#1490040)
+ 25 => '"user"@"domain.tld"',
);
$results = array(
@@ -73,6 +75,7 @@ class Framework_Mime extends PHPUnit_Framework_TestCase
22 => array(1, 'John Doe @ SomeBusinessName', 'MAILER-DAEMON'),
23 => array(1, 'Test,Test', 'test@domain.tld'),
24 => array(1, '', 'email@test.com'),
+ 25 => array(1, '', 'user@domain.tld'),
);
foreach ($headers as $idx => $header) {
diff --git a/tests/Framework/StringReplacer.php b/tests/Framework/StringReplacer.php
index 0fa7fae34..7d9600a78 100644
--- a/tests/Framework/StringReplacer.php
+++ b/tests/Framework/StringReplacer.php
@@ -42,6 +42,10 @@ class Framework_StringReplacer extends PHPUnit_Framework_TestCase
array('1@1.com www.domain.tld', '<a href="mailto:1@1.com">1@1.com</a> <a href="http://www.domain.tld">www.domain.tld</a>'),
array(' www.domain.tld ', ' <a href="http://www.domain.tld">www.domain.tld</a> '),
array(' www.domain.tld/#!download|856p1|2 ', ' <a href="http://www.domain.tld/#!download|856p1|2">www.domain.tld/#!download|856p1|2</a> '),
+ // #1489898: allow some unicode characters
+ array('https://www.google.com/maps/place/New+York,+État+de+New+York/@40.7056308,-73.9780035,11z/data=!3m1!4b1!4m2!3m1!1s0x89c24fa5d33f083b:0xc80b8f06e177fe62',
+ '<a href="https://www.google.com/maps/place/New+York,+État+de+New+York/@40.7056308,-73.9780035,11z/data=!3m1!4b1!4m2!3m1!1s0x89c24fa5d33f083b:0xc80b8f06e177fe62">https://www.google.com/maps/place/New+York,+État+de+New+York/@40.7056308,-73.9780035,11z/data=!3m1!4b1!4m2!3m1!1s0x89c24fa5d33f083b:0xc80b8f06e177fe62</a>'
+ ),
);
}
diff --git a/tests/Framework/Text2Html.php b/tests/Framework/Text2Html.php
new file mode 100644
index 000000000..8d1325dee
--- /dev/null
+++ b/tests/Framework/Text2Html.php
@@ -0,0 +1,94 @@
+<?php
+
+/**
+ * Test class to test rcube_text2html class
+ *
+ * @package Tests
+ */
+class Framework_Text2Html extends PHPUnit_Framework_TestCase
+{
+
+ /**
+ * Data for test_text2html()
+ */
+ function data_text2html()
+ {
+ $options = array(
+ 'begin' => '',
+ 'end' => '',
+ 'break' => '<br>',
+ 'links' => false,
+ 'flowed' => false,
+ 'wrap' => false,
+ 'space' => '_', // replace UTF-8 non-breaking space for simpler testing
+ );
+
+ $data[] = array(" aaaa", "_aaaa", $options);
+ $data[] = array("aaaa aaaa", "aaaa_aaaa", $options);
+ $data[] = array("aaaa aaaa", "aaaa__aaaa", $options);
+ $data[] = array("aaaa aaaa", "aaaa___aaaa", $options);
+ $data[] = array("aaaa\taaaa", "aaaa____aaaa", $options);
+ $data[] = array("aaaa\naaaa", "aaaa<br>aaaa", $options);
+ $data[] = array("aaaa\n aaaa", "aaaa<br>_aaaa", $options);
+ $data[] = array("aaaa\n aaaa", "aaaa<br>__aaaa", $options);
+ $data[] = array("aaaa\n aaaa", "aaaa<br>___aaaa", $options);
+ $data[] = array("\taaaa", "____aaaa", $options);
+ $data[] = array("\naaaa", "<br>aaaa", $options);
+ $data[] = array("\n aaaa", "<br>_aaaa", $options);
+ $data[] = array("\n aaaa", "<br>__aaaa", $options);
+ $data[] = array("\n aaaa", "<br>___aaaa", $options);
+ $data[] = array("aaaa\n\nbbbb", "aaaa<br><br>bbbb", $options);
+ $data[] = array(">aaaa \n>aaaa", "<blockquote>aaaa_<br>aaaa</blockquote>", $options);
+ $data[] = array(">aaaa\n>aaaa", "<blockquote>aaaa<br>aaaa</blockquote>", $options);
+ $data[] = array(">aaaa \n>bbbb\ncccc dddd", "<blockquote>aaaa_<br>bbbb</blockquote>cccc_dddd", $options);
+ $data[] = array("aaaa-bbbb/cccc", "aaaa-&#8288;bbbb/&#8288;cccc", $options);
+
+ $options['flowed'] = true;
+
+ $data[] = array(" aaaa", "aaaa", $options);
+ $data[] = array("aaaa aaaa", "aaaa_aaaa", $options);
+ $data[] = array("aaaa aaaa", "aaaa__aaaa", $options);
+ $data[] = array("aaaa aaaa", "aaaa___aaaa", $options);
+ $data[] = array("aaaa\taaaa", "aaaa____aaaa", $options);
+ $data[] = array("aaaa\naaaa", "aaaa<br>aaaa", $options);
+ $data[] = array("aaaa\n aaaa", "aaaa<br>aaaa", $options);
+ $data[] = array("aaaa\n aaaa", "aaaa<br>_aaaa", $options);
+ $data[] = array("aaaa\n aaaa", "aaaa<br>__aaaa", $options);
+ $data[] = array("\taaaa", "____aaaa", $options);
+ $data[] = array("\naaaa", "<br>aaaa", $options);
+ $data[] = array("\n aaaa", "<br>aaaa", $options);
+ $data[] = array("\n aaaa", "<br>_aaaa", $options);
+ $data[] = array("\n aaaa", "<br>__aaaa", $options);
+ $data[] = array("aaaa\n\nbbbb", "aaaa<br><br>bbbb", $options);
+ $data[] = array(">aaaa \n>aaaa", "<blockquote>aaaa aaaa</blockquote>", $options);
+ $data[] = array(">aaaa\n>aaaa", "<blockquote>aaaa<br>aaaa</blockquote>", $options);
+ $data[] = array(">aaaa \n>bbbb\ncccc dddd", "<blockquote>aaaa bbbb</blockquote>cccc_dddd", $options);
+ $data[] = array(chr(0x002).chr(0x003), chr(0x002).chr(0x003), $options);
+
+ $options['flowed'] = false;
+ $options['wrap'] = true;
+
+ $data[] = array(">>aaaa bbbb\n>>\n>>>\n>cccc\n\ndddd eeee",
+ "<blockquote><blockquote>aaaa bbbb<br><br><blockquote><br></blockquote></blockquote>cccc</blockquote><br>dddd eeee", $options);
+ $data[] = array("\n>>aaaa\n\ndddd",
+ "<br><blockquote><blockquote>aaaa</blockquote></blockquote><br>dddd", $options);
+ $data[] = array("aaaa\n>bbbb\n>cccc\n\ndddd\n>>test",
+ "aaaa<blockquote>bbbb<br>cccc</blockquote><br>dddd<blockquote><blockquote>test</blockquote></blockquote>", $options);
+
+ return $data;
+ }
+
+ /**
+ * Test text to html conversion
+ *
+ * @dataProvider data_text2html
+ */
+ function test_text2html($input, $output, $options)
+ {
+ $t2h = new rcube_text2html($input, false, $options);
+
+ $html = $t2h->get_html();
+
+ $this->assertEquals($output, $html);
+ }
+}
diff --git a/tests/Framework/Utils.php b/tests/Framework/Utils.php
index 082aaea3b..560a8bde7 100644
--- a/tests/Framework/Utils.php
+++ b/tests/Framework/Utils.php
@@ -325,8 +325,14 @@ class Framework_Utils extends PHPUnit_Framework_TestCase
function test_normalize_string()
{
$test = array(
- '' => '',
+ '' => '',
'abc def' => 'abc def',
+ 'ÇçäâàåæéêëèïîìÅÉöôòüûùÿøØáíóúñÑÁÂÀãÃÊËÈÍÎÏÓÔõÕÚÛÙýÝ' => 'ccaaaaaeeeeiiiaeooouuuyooaiounnaaaaaeeeiiioooouuuyy',
+ 'ąáâäćçčéęëěíîłľĺńňóôöŕřśšşťţůúűüźžżýĄŚŻŹĆ' => 'aaaaccceeeeiilllnnooorrsssttuuuuzzzyaszzc',
+ 'ß' => 'ss',
+ 'ae' => 'a',
+ 'oe' => 'o',
+ 'ue' => 'u',
);
foreach ($test as $input => $output) {
diff --git a/tests/Framework/VCard.php b/tests/Framework/VCard.php
index 3353b5b13..c23dba844 100644
--- a/tests/Framework/VCard.php
+++ b/tests/Framework/VCard.php
@@ -79,6 +79,25 @@ class Framework_VCard extends PHPUnit_Framework_TestCase
$this->assertEquals("http://domain.tld", $vcard['website:other'][0], "Decode dummy backslash character");
}
+ /**
+ * Some Apple vCard quirks (#1489993)
+ */
+ function test_parse_six()
+ {
+ $vcard = new rcube_vcard("BEGIN:VCARD\n"
+ . "VERSION:3.0\n"
+ . "N:;;;;\n"
+ . "FN:Apple Computer AG\n"
+ . "ITEM1.ADR;type=WORK;type=pref:;;Birgistrasse 4a;Wallisellen-Zürich;;8304;Switzerland\n"
+ . "PHOTO;ENCODING=B:aHR0cDovL3Rlc3QuY29t\n"
+ . "END:VCARD"
+ );
+
+ $result = $vcard->get_assoc();
+
+ $this->assertCount(1, $result['address:work'], "ITEM1.-prefixed entry");
+ }
+
function test_import()
{
$input = file_get_contents($this->_srcpath('apple.vcf'));
@@ -107,6 +126,22 @@ class Framework_VCard extends PHPUnit_Framework_TestCase
// ENCODING=b case (#1488683)
$this->assertEquals("/9j/4AAQSkZJRgABAQA", substr(base64_encode($vcard['photo']), 0, 19), "Photo decoding");
$this->assertEquals("Müller", $vcard['surname'], "Unicode characters");
+
+ $input = str_replace('ENCODING=b:', 'ENCODING=base64;jpeg:', $input);
+
+ $vcards = rcube_vcard::import($input);
+ $vcard = $vcards[0]->get_assoc();
+
+ // ENCODING=base64 case (#1489977)
+ $this->assertEquals("/9j/4AAQSkZJRgABAQA", substr(base64_encode($vcard['photo']), 0, 19), "Photo decoding");
+
+ $input = str_replace('PHOTO;ENCODING=base64;jpeg:', 'PHOTO:data:image/jpeg;base64,', $input);
+
+ $vcards = rcube_vcard::import($input);
+ $vcard = $vcards[0]->get_assoc();
+
+ // vcard4.0 "PHOTO:data:image/jpeg;base64," case (#1489977)
+ $this->assertEquals("/9j/4AAQSkZJRgABAQA", substr(base64_encode($vcard['photo']), 0, 19), "Photo decoding");
}
function test_encodings()
diff --git a/tests/Framework/Washtml.php b/tests/Framework/Washtml.php
index ab1ada05f..f041504d7 100644
--- a/tests/Framework/Washtml.php
+++ b/tests/Framework/Washtml.php
@@ -53,6 +53,16 @@ class Framework_Washtml extends PHPUnit_Framework_TestCase
$washed = $washer->wash($html);
$this->assertEquals('<!-- html ignored --><!-- body ignored --><p>test</p>', $washed, "HTML invalid comments (#1487759)");
+
+ $html = "<p>para1</p><!-- comment --><p>para2</p>";
+ $washed = $washer->wash($html);
+
+ $this->assertEquals('<!-- html ignored --><!-- body ignored --><p>para1</p><!-- node type 8 --><p>para2</p>', $washed, "HTML comments - simple comment");
+
+ $html = "<p>para1</p><!-- <hr> comment --><p>para2</p>";
+ $washed = $washer->wash($html);
+
+ $this->assertEquals('<!-- html ignored --><!-- body ignored --><p>para1</p><!-- node type 8 --><p>para2</p>', $washed, "HTML comments - tags inside (#1489904)");
}
/**
@@ -159,4 +169,18 @@ class Framework_Washtml extends PHPUnit_Framework_TestCase
$this->assertRegExp('|style="font-family: 新細明體; color: red"|', $washed, "Unicode chars in style attribute (#1489697)");
}
+
+ /**
+ * Test style item fixes
+ */
+ function test_style_wash()
+ {
+ $html = "<p style=\"line-height: 1; height: 10\">a</p>";
+
+ $washer = new rcube_washtml;
+ $washed = $washer->wash($html);
+
+ $this->assertRegExp('|line-height: 1;|', $washed, "Untouched line-height (#1489917)");
+ $this->assertRegExp('|; height: 10px|', $washed, "Fixed height units");
+ }
}
diff --git a/tests/MailFunc.php b/tests/MailFunc.php
index ab0074ef2..05f26324e 100644
--- a/tests/MailFunc.php
+++ b/tests/MailFunc.php
@@ -61,7 +61,7 @@ class MailFunc extends PHPUnit_Framework_TestCase
$this->assertRegExp('/<style [^>]+>/', $html2, "Allow styles in safe mode");
$this->assertRegExp('#src="http://evilsite.net/mailings/ex3.jpg"#', $html2, "Allow external images in HTML (safe mode)");
$this->assertRegExp("#url\('?http://evilsite.net/newsletter/image/bg/bg-64.jpg'?\)#", $html2, "Allow external images in CSS (safe mode)");
- $css = '<link rel="stylesheet" .+_u=tmp-[a-z0-9]+\.css.+_action=modcss';
+ $css = '<link rel="stylesheet" .+_action=modcss.+_u=tmp-[a-z0-9]+\.css';
$this->assertRegExp('#'.$css.'#Ui', $html2, "Filter (anonymized) external styleseehts with utils/modcss.inc");
}
diff --git a/tests/RcmailFunc.php b/tests/RcmailFunc.php
new file mode 100644
index 000000000..09b54b22c
--- /dev/null
+++ b/tests/RcmailFunc.php
@@ -0,0 +1,85 @@
+<?php
+
+/**
+ * Test class to test rcmail class
+ *
+ * @package Tests
+ */
+class RcmailFunc extends PHPUnit_Framework_TestCase
+{
+ function setUp()
+ {
+ // set some HTTP env vars
+ $_SERVER['HTTP_HOST'] = 'mail.example.org';
+ $_SERVER['SERVER_PORT'] = '443';
+ $_SERVER['SCRIPT_NAME'] = '/sub/index.php';
+ $_SERVER['HTTPS'] = true;
+
+ rcmail::get_instance()->filename = '';
+ }
+
+ /**
+ * Class constructor
+ */
+ function test_class()
+ {
+ $object = rcmail::get_instance();
+ $this->assertInstanceOf('rcmail', $object, "Class singleton");
+ }
+
+ /**
+ * Test rcmail::url()
+ */
+ function test_url()
+ {
+ $rcmail = rcmail::get_instance();
+ $this->assertEquals(
+ './?_task=cli&_action=test',
+ $rcmail->url('test'),
+ "Action only"
+ );
+ $this->assertEquals(
+ './?_task=cli&_action=test&_a=AA',
+ $rcmail->url(array('action' => 'test', 'a' => 'AA')),
+ "Unprefixed parameters"
+ );
+ $this->assertEquals(
+ './?_task=cli&_action=test&_b=BB',
+ $rcmail->url(array('_action' => 'test', '_b' => 'BB', '_c' => null)),
+ "Prefixed parameters (skip empty)"
+ );
+ $this->assertEquals(
+ '/sub/?_task=cli&_action=test&_mode=ABS',
+ $rcmail->url(array('_action' => 'test', '_mode' => 'ABS'), true),
+ "Absolute URL"
+ );
+
+ $this->assertEquals(
+ 'https://mail.example.org/sub/?_task=calendar&_action=test&_mode=FQ',
+ $rcmail->url(array('task' => 'calendar', '_action' => 'test', '_mode' => 'FQ'), true, true),
+ "Fully Qualified URL"
+ );
+
+ // with different SCRIPT_NAME values
+ $_SERVER['SCRIPT_NAME'] = 'index.php';
+ $this->assertEquals(
+ '/?_task=cli&_action=test&_mode=ABS',
+ $rcmail->url(array('_action' => 'test', '_mode' => 'ABS'), true),
+ "Absolute URL (root)"
+ );
+ $_SERVER['SCRIPT_NAME'] = '';
+ $this->assertEquals(
+ '/?_task=cli&_action=test&_mode=ABS',
+ $rcmail->url(array('_action' => 'test', '_mode' => 'ABS'), true),
+ "Absolute URL (root)"
+ );
+
+ $_SERVER['HTTPS'] = false;
+ $_SERVER['SERVER_PORT'] = '8080';
+ $this->assertEquals(
+ 'http://mail.example.org:8080/?_task=cli&_action=test&_mode=ABS',
+ $rcmail->url(array('_action' => 'test', '_mode' => 'ABS'), true, true),
+ "Full URL with port"
+ );
+ }
+}
diff --git a/tests/phpunit.xml b/tests/phpunit.xml
index cee3434c1..5c27d0e0d 100644
--- a/tests/phpunit.xml
+++ b/tests/phpunit.xml
@@ -40,11 +40,13 @@
<file>Framework/SpellcheckPspell.php</file>
<file>Framework/Spellchecker.php</file>
<file>Framework/StringReplacer.php</file>
+ <file>Framework/Text2Html.php</file>
<file>Framework/User.php</file>
<file>Framework/Utils.php</file>
<file>Framework/VCard.php</file>
<file>Framework/Washtml.php</file>
<file>MailFunc.php</file>
+ <file>RcmailFunc.php</file>
</testsuite>
<testsuite name="Plugins Tests">
<file>./../plugins/acl/tests/Acl.php</file>
@@ -66,6 +68,7 @@
<file>./../plugins/managesieve/tests/Managesieve.php</file>
<file>./../plugins/managesieve/tests/Parser.php</file>
<file>./../plugins/managesieve/tests/Tokenizer.php</file>
+ <file>./../plugins/managesieve/tests/Vacation.php</file>
<file>./../plugins/markasjunk/tests/Markasjunk.php</file>
<file>./../plugins/new_user_dialog/tests/NewUserDialog.php</file>
<file>./../plugins/new_user_identity/tests/NewUserIdentity.php</file>
diff --git a/tests/src/Csv2vcard/gmail.csv b/tests/src/Csv2vcard/gmail.csv
new file mode 100644
index 000000000..9f67fe9f5
--- /dev/null
+++ b/tests/src/Csv2vcard/gmail.csv
Binary files differ
diff --git a/tests/src/Csv2vcard/gmail.vcf b/tests/src/Csv2vcard/gmail.vcf
new file mode 100644
index 000000000..5337d7e63
--- /dev/null
+++ b/tests/src/Csv2vcard/gmail.vcf
@@ -0,0 +1,25 @@
+BEGIN:VCARD
+VERSION:3.0
+FN:Prefix Firstname Middle Lastname Suffix
+N:Lastname;Firstname;Middle;Prefix;Suffix
+NICKNAME:nick
+BDAY;VALUE=date:1975-12-12
+NOTE:note"note
+CATEGORIES:My Contacts
+EMAIL;TYPE=INTERNET;TYPE=HOME:home@aaa.pl
+EMAIL;TYPE=INTERNET;TYPE=WORK:work@email.pl
+TEL;TYPE=pager:pager
+TEL;TYPE=pref:mainphone
+TEL;TYPE=home:homephone
+TEL;TYPE=homefax:homefax
+TEL;TYPE=cell:mobile
+TEL;TYPE=work:workphone
+TEL;TYPE=workfax:workfax
+X-SPOUSE:spouse
+URL;TYPE=profile:test.com
+URL;TYPE=homepage:home.page.com
+ORG:company
+TITLE:jobtitle
+ADR;TYPE=home:;;home_street;home_city;home_state;home_zip;home_country
+ADR;TYPE=work:;;work_street;work_city;;work_zip;work_country
+END:VCARD